只依赖ajax的文件上传js工具
1、效果如下
1.1 对应上传成功的如果再次点击不会重复上传,
1.2 图示操作按钮为layui的字体图标,对于通用版则按钮为文字,可以自行进行修改,或自定义操作按钮
1.3 纯图片
1.4 文件加图片,图片会显示为图片,文件则以图示的第二、三的样子的默认图片显示
2、使用示例
2.1 声明上传对象
其中$("#files")为包裹元素
var fuhCommon = new FileUploadHelperCommon($("#files"));//
2.2 初始化渲染参数
//初始要显示的数据,例如查看和编辑时可能有已存在的数据
var filesDatas = [];
filesDatas.push({
"path":"xxx"
,"fullPath":"http://localhost:8080/base/static/images/111.jpg"
,"name":"123"
,"fileType":"1"
});
filesDatas.push({
"path":"xxx"
,"fullPath":"http://localhost:8080/base/static/js/FileUploadHelper.js"
,"name":"123"
,"fileType":"2"
});
//初始化配置信息
fuhCommon.init({
"datas":filesDatas
,showDeleteBtn:true
,showDownBtn:true
,showPreviewBtn:true
,fileType:0//默认 0 各种文件类型 1:图片类型(只能选择图片)
,fileNumber:100//可以选择的文件数量
,addFile:true
,buttons:{
"info":{//自定义回调按钮
"name":"",
"class":"layui-icon layui-icon-tips icon-white",
"callback":function(data){
alert(data);
console.log(data);
}
}
}
});
2.3 执行上传动作
fuhCommon.upload({
"url":"http://localhost:8080/base/a/sys/importFile/ajax"
,"data":{
}
,"dataHandle":function(params){//上传接口调用成功回调后需要将原始返回数据处理为内部可读数据
//上传接口请求完成返回原始数据
var data = params.data;
var code = data.code;
//返回的上传后文件数组信息
var fileInfos = data.data;
//这里需要对数据进行处理
for(var index=0; index
3、代码
/**
* 文件上传辅助工具
*
* 只依赖jquery版本
*
* $ele 包裹元素的jquery对象
*
* 改进版1.1
* 1、可以指定只上传图片
* 2、可以指定限定选择文件数量
*
* demo
*
* fuh = new FileUploadHelper($("#testFUH"));
fuh.init({
//初始显示文件数据列表
"datas":[{
path:"122323",
fullPath:"",
name:"测试文件",
fileType:"1" //文件类型 1图片
},{
path:"122323",
fullPath:"",
name:"测试文件",
fileType:"2" //文件类型 1图片
},{
path:"122323",
fullPath:"",
name:"测试文件",
fileType:"3" //文件类型 1图片
},{
path:"122323",
fullPath:"",
name:"测试文件",
fileType:"4" //文件类型 1图片
},{
path:"122323",
fullPath:"",
name:"测试文件",
fileType:"5" //文件类型 1图片
}]
,showDeleteBtn:true//是否显示删除按钮
,showDownBtn:true//是否显示下载按钮
,showPreviewBtn:true//是否显示预览按钮
,hideOptionButtons:true//加载是否隐藏操作按钮栏,如果是true,那么会隐藏操作栏,鼠标停留图片上时弹出。如果是false,则操作栏一直显示
,fileType:0//默认 0 各种文件类型 1:图片类型(只能选择图片)
,fileNumber:1//可以选择的文件数量
,addFile:true//是否可以继续添加文件,如果只是查看,那么这里设置为false,如果是编辑,则这里设置为true
,buttons:{//自定义按钮
"info":{
//1、这里可以定义字体图片的class,将name置为空则显示图标
//2、不使用字体图标,则名字不为空
"name":"",
"class":"layui-icon layui-icon-tips icon-white",
"callback":function(data){
alert(data);
}
}
}
});
*
* fuh.upload({
*
* "url":"https://ssss/ss/fileUpload"
* ,"data":{}
* ,"callback":function(data){//所有上传动作结束回调
*
* //是否所有文件均上传成功
* var allOk = data.allOk;
* //所有上传文件列表
* var datas = data.datas;
* //所有文件item页面元素
* var eles = data.eles;
* //所有页面索引对应数据
* var pathInfos = data.pathInfos;
* }
* ,"askError":function(msg){//上传接口调用失败回调
*
* //请求失败回调
*
* }
* ,"dataHandle":function(params){//上传接口请求成功回调
//上传接口请求完成返回原始数据
var data = params.data;
//返回的上传后文件数组信息
var fileInfos = xxx;
//这里需要对数据进行处理
for(var index=0; index选择文件
'
'
';
var _box = document.createElement("div");
_box.style.cssText = "width:100%;";
//上传成功返回数据
_this.pathInfos = {};
//当前最大索引值
_this.maxIndex = -1;
/**
config
{
datas:[{//初始化数据
name:文件名称
path:文件数据库存储地址
fullPath:完整文件路径,即下载文件路径
fileType://文件类型 1:图片
}],
,showDeleteBtn:true//是否显示删除按钮
,showDownBtn:true//是否显示下载按钮
,showPreviewBtn:true//是否显示预览按钮
,hideOptionButtons:true//加载是否隐藏操作按钮栏
,fileType:0//默认 0 各种文件类型 1:图片类型(只能选择图片)
,fileNumber:1//可以选择的文件数量
,addFile:true//是否可以继续添加文件
,buttons:{//自定义按钮
"info":{
//1、这里可以定义字体图片的class,将name置为空则显示图标
//2、不使用字体图标,则名字不为空
"name":"",
"class":"layui-icon layui-icon-tips icon-white",
"callback":function(data){
alert(data);
}
}
}
,imageHeight://如果是图片类型的话,图片的高度,默认170px
}
**/
this.init = function(config){
if(!config){
config = {};
}
var datas = config.datas;
if(!datas){
datas = [];
}
var buttons = config.buttons;
if(!buttons){
buttons = {};
}
var fileType = config.fileType;
var addFile = config.addFile;
var imageHeight = config.imageHeight;
var fileNumber = config.fileNumber;
_hideOptionButtons = config.hideOptionButtons;
if(fileNumber){
_fileNumber = fileNumber;
}
_buttons = buttons;
_fileType = fileType;
_$ele.append(_box);
for(var index in datas){
var data = datas[index];
var name = data.name;
var path = data.path;
var fullPath = data.fullPath;
var fileType = data.fileType;
//文件类型
if(fileType == undefined){
fileType = 0;
}
config.fileType = fileType;
//文件名称
config.name = data.name;
//页面元素索引
var pathIndex = updatePathIndex({
"optionType":0
});
config.pathIndex = pathIndex;
_this.pathInfos[pathIndex] = data;
config.buttons = buttons;
config.fullPath = fullPath;
config.filePath = path;
config.initDataIndex = index;
//添加页面元素
$(_box).append(getFileItem(config));
//初始化点击事件
initEvent(config.pathIndex);
}
//添加 添加文件按钮
if(!addFile){
return;
}
$(_box).append(_addItem);
addButtonHideJudge()
//声明添加按钮点击事件
$(_box).find("[jq_sign=addFile]").click(function(){
var preItem = $(this).prev();
if(preItem.attr("jq_chooseFile") == "chooseFile"){//如果前面的为选择文件元素,则直接调起选择文件事件
preItem.find("input").click();
}else{//前面的元素问已经选择过的文件元素,则添加新的选择元素
var pathIndex = updatePathIndex({
"optionType":0
});
$(this).before(getFileItem({"needUpload":true,"pathIndex":pathIndex,chooseFile:true,showDeleteBtn:true,hide:true}));
initEvent(pathIndex);
preItem = $(this).prev();
preItem.find("input").click();
preItem.find("input").change(function(){
fileChange($(this),function(name){
var originName = name;
if(name.length>=8){
var lastNameIndex = name.lastIndexOf(".");
var lastName = name.substr(lastNameIndex);
var dx = name.length - 8 - lastName.length;
name = name.substr(0,lastNameIndex-dx)+"..."+lastName;
}
preItem.find("[jq_sign=fileName]").text(name);
preItem.find("[jq_sign=fileName]").attr("jq_fuh_fileName",originName);
preItem.show().attr("jq_chooseFile","");
addButtonHideJudge();
})
});
}
});
}
/**
* 上传事件
* 参数
* {
* url str //请求上传url
* data json //请求上传参数
* callback function 上传完成回调事件
* error function 请求失败回调
* dataHandle function 请求结果数据处理方法
* }
*
* 例子
* fuh.upload({
*
* "url":"https://ssss/ss/fileUpload"
* ,"data":{}
* ,"callback":function(data){
*
* //是否所有文件均上传成功
* var allOk = data.allOk;
* //所有上传文件列表
* var datas = data.datas;
* //所有文件item页面元素
* var eles = data.eles;
* //所有页面索引对应数据
* var pathInfos = data.pathInfos;
* }
* ,"askError":function(msg){
*
* //请求失败回调
*
* }
* ,"dataHandle":function(params){
*
* //上传接口请求完成返回原始数据
* var data = params.data;
*
* //返回的上传后文件数组信息
* var fileInfos = xxx;
* var code = xx;
*
* //这里需要对数据进行处理
* for(var index=0; index
',type:1}); */
/*var json={
"data": [ //相册包含的图片,数组格式
{
"src": url, //原图地址
"thumb": url //缩略图地址
}
]
}*/
var ele = '
';
$("body").prepend(ele);
}
//更新元素索引
/**
*/
var updatePathIndex = function(params){
//optionType 0-添加 1-删除
var optionType = params.optionType;
//页面元素索引
var pathIndex = params.pathIndex;
var maxIndex = _this.maxIndex;
if(maxIndex == undefined){
maxIndex = -1;
}
if(optionType == 1){//删除
//移除
delete _this.pathInfos[pathIndex];
}else{//加入
maxIndex += 1;
}
_this.maxIndex = maxIndex;
return maxIndex;
}
//判断并对添加文件按钮进行显示和隐藏
var addButtonHideJudge = function(){
var addButtonObj = $(_box).find("[jq_sign=addFile]");
if(_this.currNumber >= _fileNumber){
if(addButtonObj){
addButtonObj.hide()
};
return true;
}else{
if(addButtonObj){
addButtonObj.show();
}
return false;
};
}
//初始化事件
var initEvent = function(pathIndex){
var box = $(_box).find("[jq_pathIndex="+pathIndex+"]");
var fullpath = box.attr("jq_fullPath");
var path = box.attr("jq_filePath");
var data = {
"fullpath":fullpath,
"path":path
}
//下载事件
box.find("[jq_sign=fileItem_event_download]").click();
//删除事件
box.find("[jq_sign=fileItem_event_delete]").click(function(){
box.remove();
updatePathIndex({
"optionType":1
,"pathIndex":pathIndex
});
addButtonHideJudge();
});
//预览事件
box.find("[jq_sign=fileItem_event_preview]").click(function(){
_this.showImage({
"url":fullpath
});
});
//操作按钮显示和隐藏
if(_hideOptionButtons){
box.mouseover(function(){
box.find("[jq_sign=fileItem_option_buttons]").show();
});
box.mouseout(function(){
var fun_failItem = box.find("[jq_sign=fun_failItem]");
if(fun_failItem.length > 0){
//该元素上传失败了,不进行隐藏
}else
box.find("[jq_sign=fileItem_option_buttons]").hide();
});
}
/*box.find("[jq_sign=fileItem_option_buttons]").mouseover(function(){
box.find("[jq_sign=fileItem_option_buttons]").show();
});
box.find("[jq_sign=fileItem_option_buttons]").mouseout(function(){
box.find("[jq_sign=fileItem_option_buttons]").hide();
});*/
//自定义事件
for(var key in _buttons){
var callback = _buttons[key].callback;
box.find("[jq_sign=fileItem_event_"+key+"]").click(function(){
callback(data);
});
}
}
//監聽reader文件讀取完成事件
_reader.onload = function(e) {
var fileObj = $(_box).find("input[type=file][jq_choose_image=true]");
var fileName = fileObj[0].files[0].name;
fileObj.parent().find("img").attr("src",e.target.result);
fileObj.attr("jq_choose_image","false");
_fileChangeCallback(fileName);
};
//文件改变
var fileChange = function(obj,callback){
var file = $(obj)[0].files[0];
var fileType = file.type.toLocaleLowerCase();
if(_fileType == 1){//只能上传图片类型文件
if(fileType !== 'image/jpeg' && fileType !== 'image/png' && fileType != 'image/gif'){
layer.msg("请选择图片");
return;
}
_reader.readAsDataURL($(obj)[0].files[0]);
$(obj).attr("jq_choose_image","true");
_fileChangeCallback = callback;
}else{
if(fileType == 'image/jpeg' || fileType == 'image/png' || fileType == 'image/gif'){
//文件是图片
_reader.readAsDataURL($(obj)[0].files[0]);
$(obj).attr("jq_choose_image","true");
_fileChangeCallback = callback;
return;
}
if(callback){
callback(file.name);
}
}
}
/**
* 获取元素item
* {
* name 文件名称
* fullPath 改文件的完整访问路径
* showDownBtn true/false是否显示下载按钮
* fileType://文件类型 1 图片
* showDeleteBtn true/false是否显示移除按钮
* buttons 自定义按钮
* needUpload 是否需要上传的元素
* chooseFile 该元素是否是还没有选择文件
* hide 该元素是否隐藏
* pathIndex 该元素的地址索引
* initDataIndex 如果是初始化数据,需要传入初始化数据的index
* }
*/
var getFileItem = function(config){
if(!config){
config = {};
}
var name = config.name;
var buttons = config.buttons;
var needUpload = "";
if(config.needUpload){
needUpload = 'jq_needUpload="ture"';
}
var chooseFile = "";
if(config.chooseFile){
chooseFile = 'jq_chooseFile="chooseFile"';
}
var hide = "";
if(config.hide){
hide = "display:none;";
}
var pathIndex = 0;
if(config.pathIndex){
pathIndex = config.pathIndex;
}
var fullPath = config.fullPath;
if(!fullPath){
fullPath = "";
}
var filePath = config.filePath;
if(!filePath){
filePath = "";
}
var imageHeight = config.imageHeight;
if(imageHeight){
_imageHeight = imageHeight;
}
var initDataIndex = config.initDataIndex;
if(initDataIndex == undefined || initDataIndex == ""){
initDataIndex = -1;
}
var fileType = config.fileType;
//操作按钮样式
var optionButtonStyle="color:white;cursor:pointer;float:left;margin-left: 10px;padding:0 6px 0 6px;text-align: center;vertical-align: middle;line-height: 20px;margin: 5px;"
var fileItem = '
'
//option
var fileItem_option_buttons_display_style = "";
if(_hideOptionButtons){
fileItem_option_buttons_display_style = "display:none;";
}
fileItem +='
';
fileItem +='
';
//删除
if(config.showDeleteBtn){
fileItem +='
'
+'删除
'
}
//下载
if(config.showDownBtn){
fileItem +='
'
+'下载 '
}
//预览
if(config.showPreviewBtn && fileType == 1){
//图片类型才可以这种预览
fileItem +='
'
+'预览
'
}
for(var key in buttons){
var buttonName = buttons[key].name;
var buttonClass = buttons[key].class;
fileItem +='
'
+buttonName+'
'
}
fileItem +='
';
//option结束
var imageSrc = fullPath;
//判断是否是图片
if(fileType != 1){
//如果不是图片则显示普通文件图片
imageSrc = nomalFileImage;
}
fileItem += '
'
+'
';
//文件名称
fileItem += '
'+name+'
';
if(config.needUpload){
fileItem += '
';
}
fileItem +='
';
return fileItem;
}
/**
* 最终返回的回调
*/
var callback = function(pCallback,upFileOk){
var allDatas = getAllDatas();
//是否全部文件上传成功
allDatas.allOk = upFileOk;
if(pCallback){
pCallback(allDatas);
}
}
/**
* 获取完整的上传的文件信息
*/
var getAllDatas = function(){
var items = {};
//返回的数据
var datas = [];
//页面元素
var eles = {};
var uploadIndex = 0;
var datasIndex = 0;
for(var pathIndex in _this.pathInfos){
var box = $(_box).find("[jq_pathIndex="+pathIndex+"]");
var initDataIndex = box.attr("jq_fuh_initDataIndex");
var data = _this.pathInfos[pathIndex];
//如果初始索引不为-1,表示这是初始的数据
if(initDataIndex != -1){
//初始的数据
data.beUploadData = false;
datas[datasIndex++] = data;
}else{
//上传的数据
data.beUploadData = true;
datas[datasIndex++] = data;
}
eles[pathIndex] = box;
}
items.datas = datas;
items.pathInfos = _this.pathInfos;
items.eles = eles;
return items;
}
/**
* 对上传失败文件处理
*/
var uploadedFailHandle = function(item){
item.find("[jq_sign=fileItem_option_buttons]").show();
item.find("[jq_sign=fileItem_option_buttons]").css({"background":"rgb(196 66 66 / 62%)"});
var fun_failItem = item.find("[jq_sign=fileItem_option_buttons]").find("[jq_sign=fun_failItem]");
if(fun_failItem == undefined || fun_failItem.length == 0){
item.find("[jq_sign=fileItem_option_buttons]").append('
上传失败
');
}
}
/**
* 对上传成功文件处理
*/
var uploadedSuccessHandle = function(item){
item.find("[jq_sign=fileItem_option_buttons]").show();
item.find("[jq_sign=fileItem_option_buttons]").css({"background":"rgb(164 255 188 / 62%)"});
var fun_failItem = item.find("[jq_sign=fileItem_option_buttons]").find("[jq_sign=fun_failItem]");
if(fun_failItem != undefined){
fun_failItem.remove();
}
}
var noPicImage = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAL4AAAEKCAIAAAAjOngdAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDozMjMzODg1Yy01ZmVlLTVkNDQtOTA4Ny00N2VkZGJhNjIyNGUiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MENDNjVCMENEMDQxMTFFOEI0NzBDRDZCQzg1MUM3NjMiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MENDNjVCMEJEMDQxMTFFOEI0NzBDRDZCQzg1MUM3NjMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKFdpbmRvd3MpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6YWEzYjcxY2ItMGZjMS1hMjRkLTg1ZjctZGY2MDAyZjE3NjRlIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjMyMzM4ODVjLTVmZWUtNWQ0NC05MDg3LTQ3ZWRkYmE2MjI0ZSIv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";
var nomalFileImage = "data:image/png;base64,/9j/4AAQSkZJRgABAgAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAKLAooDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3aiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKr3F/aWn+vuI4z6FufypNpasaTeiLFFYNx4ssYsiJJJj7DaP1/wrMn8X3T58iCKMerEsf6VhLFUo9TeOFqy6HY0Zx1rz6bX9Tm63TKPRAF/lVKS5nm5kmkf/eYmsJY+K2RvHAS6s9He8tYv9ZcxL9XAqu+taanW9i/A5/lXndFZPHy6I0WAj1Z3zeI9KX/l6z9Eb/CmHxNpef8AXN/37NcJRU/XqnZFfUafdnd/8JPpf/PZ/wDv2acPEulH/l4I+sbf4VwVFH16p5D+o0/M9BXX9Lb/AJe1H1BH9KnTVLCT7t5Af+BivN6KpY+fVIl4GHRs9QSSOQZR1YexzT68tDFTlSQfarUWp30H+ru5h7byRWkceusTN4B9JHpFFcND4o1KL77xyj/bT/DFaMHjBDxcWhHvG2f0NbRxlKXWxjLB1V0udRRWZb+INNucAXAjY9pBt/XpWkjq6hkYMp6EHIrojOMvhdznlCUfiVhaKKKokKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACisy/16xsMq0nmSj+CPk/iegrmr7xNfXWVhIt4z2T735/4Vz1MTTp6N3Z0U8NUqapWR191f2lkubidE9ieT+HWsK78XxrlbSAuf78nA/IVybMzsWZixPUk5JpK4amNnL4dDup4KEfi1NG61zUbvIe4ZVP8Mfyj9KziSTknJoorklKUtZM6oxjFWigoooqSgooooAKKKKACiiigAooooAKKKKACiiigAooooAKlgup7Zt0Ezxn/AGWxUVFNNrVCaT3N608V3sOFnVJ19T8rfmP8K3rPxJp91hXcwOe0nA/PpXB0V008XVh1uc88JTn0sepKwZQykFT0INLXm1pqN3Ytm3nZB/d6qfwro7HxajYS9i2H/npHyPxFdtPGwlpLQ4amDnHWOp01FRQXMN1GJIJVkQ91OalrrTvqjlaa0YUUUUxBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFQ3V3BZwmW4kVEHr3+nrXJan4nnud0VpmGLpu/jP+FY1a8KS97c2pUJ1XpsdFqOt2enAq775f+eacn8fSuT1DxBe3+UDeTCf4EPX6nvWUSSSSck96SvLq4qdTTZHp0sLCnruwooormOkKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAJbe6ntJRJBK0bjuprptO8WBsR36bT/z1QcfiP8K5SitadadN+6zKpRhU+JHqEU0c8ayROroehU5FPrzay1C50+TfbylfVTyp+orr9L8R219timxBOexPyt9D/SvTo4uFTR6M82thJw1WqNqiiius5AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiikd1jRndgqqMkk4AoAWsbVvEMGn5iixLcegPC/X/CsrWPErS7rewJVOjS92+npXNE55NefXxlvdp/eehQwd/eqfcT3d7cX0xluJC7dvQewHaoKKK81tt3Z6KSSsgooopDCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigDd0nxJPZ7YrnM0HTP8S/T1rsba5hu4RNBIHRu4rzGrVhqNxp0/mwPj+8p6MPeuyhi5Q92WqOOvhIz96OjPSaKztL1i31SP5DsmA+aMnke49RWjXqxkpK8Ty5RcXaQUUUVRIUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRUF5eQ2Nu0877UH5k+gpNpK7Gk27IdcXMVpA007hEXqTXD6xrk2puY0zHbA8J3b3NQapqs+qT7nO2JfuRg8D/AOvVCvJxGKdT3Y7Hq4fCqn70twooorjOwKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAHxSyQSrLE5R1OQQeRXaaL4gS/AguCEue3o/wBPf2riKUEqQQSCOQRW1GvKk7rYxrUI1VZ7nqVFc5oXiAXO21vGAm6JIf4/Y+9dHXs06kakeaJ49SnKnLlkFFFFaGYUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUVHPPHbQPNKwVEGSTQ3bVglfQZd3cNjbNPO21F/Mn0FcDqepzanc+ZIcIOEQdFH+NO1fVZdUudxysK8Rp6D1PvWfXj4nEuo+WOx6+Gw6prmluFFFFch1hRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB05Fdh4f177Rts7t/wB70jc/xex964+lBIOQcEVrRqypSujKrSjVjZnqVFYPh/XPtqC1uW/0hR8rH+Mf41vV7dOpGpHmieLUpypy5ZBRRRVkBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAISFUkkADkk9q4bXtZOoz+VESLaM8f7R9a0fE+sddPgb/rqw/9B/xrla8zGYi79nH5np4TD2XtJfIKKKK887wooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAHRyNFIsiMVdTkEdQa73RNWXU7X5sC4Th19fcVwFWLK8lsbpLiE4ZT07Edwa6MPXdKXkc+IoKrHzPS6Kr2N5Ff2iXER+VhyO4PcGrFe0mmro8Zpp2YUUUUxBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABWXrmqDTbP5CPPk4jHp6n8K0Zpo4IXlkbaiAsT7V51qV++o3rzvkA8Iv91ewrlxVf2cbLdnVhaPtJXeyKrMWYsxJJOST3pKKK8Y9gKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKANbQdVOnXmyQ/wCjynD/AOyexrvQQRkHINeWV2PhfVPtEH2KVv3kQyhPdfT8K9DBV7P2cvkefjKN17RfM6KiiivTPNCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKq6jepp9jLcNyVGFHqewpNqKuxpOTsjnvFWp7mFhE3C4aXHr2H9a5enyyPNK8shLO5LE+ppleFVqOpNyZ7lKmqcFFBRRRWRqFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRWtpek/agJ58iL+Ff73/1quEHN2iRUqRpx5pGWkbynEaM5/wBkZqb7Bd/8+0v/AHya6+OJIkCRoqKOwGKfXYsGurOF4530Rxv2C7/59Zf++TR9gu/+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nhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAISFBJOAOTXml7cG6vZpz/G5YfTtXe61cfZtHuZAcEptH1PH9a87rzcfLVRPSwEdHIKKKK849AKKKKACiiigAooooAKD0NFB6GgD1a24tYf8AcX+VTVDbf8esP+4P5VNX0S2PnnuFFFFMQUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBxnjb/j6s/8Acb+Yrlq6nxt/x9Wf+438xXLV4mK/jSPawv8ABiFFFFc50BRRRQAUUUUAFFFFABXX+ELnfaT25PMbBh9D/wDqrkK2vC9x5OsKhPEqFfx6/wBK6MLPlqo58TDmpM7miiivbPFCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA57xdNs0+GEH/WSZP0A/wDriuNrovF8u6+giz9yPP5n/wCtXO14uLlzVWezhI2pIKKKK5jpCiiigAooooAKKKKACg9DRQehoA9Wtv8Aj1h/3B/Kpqhtv+PWH/cH8qmr6JbHzz3CiiimIKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA4zxt/x9Wf8AuN/MVy1dT42/4+rP/cb+Yrlq8TFfxpHtYX+DEKKKK5zoCiiigAooooAKKKKACrFhN9nv7ebP3JFJ+mear0U07O4mrqx6nRVexl8+wt5f78ak/XFWK+hTurnz7VnYKKKKYgooooAKKKKACiiigAooooAKKKKACiiigAooooA4HxHL5muT+i7V/QVlVb1STzNVu39ZW/nVSvAqu82/M9+krQS8gooorMsKKKKACiiigAooooAKD0NFB6GgD1a2/wCPWH/cH8qmqG2/49Yf9wfyqavolsfPPcKKKKYgooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigDjPG3/H1Z/wC438xXLV1Pjb/j6s/9xv5iuWrxMV/Gke1hf4MQooornOgKKKKACiiigAooooAKKKKAO/8ADsvmaHB6rlfyJrUrA8JSbtLkT+7Kf1Arfr3qDvTi/I8KurVJLzCiiitTIKKKKACiiigAooooAKKKKACiiigAooooAKKKbIdsbn0BNAHmU7b7iRv7zE/rUdB5OaK+dZ9CgooopDCiiigAooooAKKKKACg9DRQehoA9Wtv+PWH/cH8qmqG2/49Yf8AcH8qmr6JbHzz3CiiimIKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA4zxt/x9Wf+438xXLV1Pjb/j6s/wDcb+Yrlq8TFfxpHtYX+DEKKKK5zoCiiigAooooAKKKKACiiigDrPBzZhu09GU/of8ACunrk/Bx/eXY9lP866yvawjvRR4uLX75hRRRXSc4UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAVHcf8e8v+4f5VJUdx/x7y/7h/lSew1ueYUUUV86fQhRRRQAUUUUAFFFFABRRRQAUHoaKD0NAHq1t/wAesP8AuD+VTVDbf8esP+4P5VNX0S2PnnuFFFFMQUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBxnjb/j6s/8Acb+Yrlq6nxt/x9Wf+438xXLV4mK/jSPawv8ABiFFFFc50BRRRQAUUUUAFFFFABRRRQB0vg7/AI+rr/cH8666uR8H/wDH1df7i/zrrq9nB/wUeNi/4rCiiiuo5gooooAKKKKACiiigAooooAKKKKACiiigApsg3ROPUEU6igDyw8HFFSTLsnkX0Yj9ajr51n0KCiiikMKKKKACiiigAooooAKD0NFB6GgD1a2/wCPWH/cH8qmqG2/49Yf9wfyqavolsfPPcKKKKYgooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigDjPG3/H1Z/wC438xXLV1Pjb/j6s/9xv5iuWrxMV/Gke1hf4MQooornOgKKKKACiiigAooooAKKKKAOn8HD97dn/ZUfzrrK5nwcv7m6f1ZR+h/xrpq9rCK1FHi4t/vmFFFFdJzhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQB5vqcfl6pdp6St/OqlaviOPy9cn9Gw36CsqvAqq02vM9+m7wT8gooorMsKKKKACiiigAooooAKD0NFB6GgD1a2/49Yf9wfyqaobb/j1h/3B/Kpq+iWx889wooopiCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAOM8bf8AH1Z/7jfzFctXU+Nv+Pqz/wBxv5iuWrxMV/Gke1hf4MQooornOgKKKKACiiigAooooAKKKKAO08JR7dLkf+9Kf0ArfrK8OReXokGerbm/MmtWveoK1KK8jwq7vUk/MKKKK1MgooooAKKKKACiiigAooooAKKKKACiiigAooooA47xfFtv4Jcffjx+IP8A9eudrsfF0O+whmA/1cmD9CP/AKwrjq8XFxtVZ7OElekgooormOkKKKKACiiigAooooAKD0NFB6GgD1a2/wCPWH/cH8qmqG2/49Yf9wfyqavolsfPPcKKKKYgooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigDjPG3/H1Z/wC438xXLV1Pjb/j6s/9xv5iuWrxMV/Gke1hf4MQooornOgKKKKACiiigAooooAKKKsWMP2i/ghx9+RQfpmmld2E3ZXPQ7CLyNPt4v7sag/XFWKKK+hSsrHz7d3cKKKKYgooooAKKKKACiiigAooooAKKKKACiiigAooooAoa3b/AGnR7lAMkJuH1HP9K87r1IgMpBGQRg15peQG1vJoD/yzcr+Febj46qR6WAno4kFFFFecegFFFFABRRRQAUUUUAFB6Gig9DQB6tbf8esP+4P5VNUNt/x6w/7g/lU1fRLY+ee4UUUUxBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAHGeNv8Aj6s/9xv5iuWrqfG3/H1Z/wC438xXLV4mK/jSPawv8GIUUUVznQFFFFABRRRQAUUUUAFbXhe387WFcjiJC349P61i11/hC222s9yRy7BR9B/+uujCw5qqOfEy5aTOkooor2zxQooooAKKKKACiiig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rzMZh7P2kdup6eExF17OXyMiiiivPO8KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAqeztJb26S3hGXY/gB6mokRpHVEUszHAA6k13mh6QumW25wDcSD5z6ewrow9F1ZeRhXrKlHzLlhZRafaJbxDherd2Pc1Zoor2kklZHittu7CiiimIKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACori3iurd4JlDI4wRUtFJpNWYJ21R53quly6XdbGy0bcxv6j/ABqhXpd7ZQ39s0E65U9D3B9RXAalps+mXJilGVPKOOjCvIxOGdN80dj18NiFUXLLcp0UUVyHWFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFABJwKK63w/oPlbby7T5+scZ/h9z71rSpSqysjKrVjSjdk3h7Q/siC7uV/fsPlU/wAA/wAa6Ciivbp04048sTxalSVSXNIKKKKsgKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKrXtlBf2xgnXIPQ91PqKs0Umk1ZjTad0edanpc+mXGyQbkP3JAOGH+NUa9NurWG8t2gnQOjdvT3FcPq+iTaZJvGZLcn5ZPT2NeTiMK6fvR2PVw+KVT3ZbmVRRRXGdgUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFABJwBkmnxxvNIscalnY4AA5Ndlonh9LHbcXID3HUDqE/wDr1tRoyquy2Ma1aNJXZBoPh7ydt3ep+86pGf4fc+9dLRRXs06UaceWJ49SpKpLmkFFFFaGYUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABTXjSWMpIoZGGCCMginUUAcfrHhp4C1xZAvF1aPqy/T1Fc5XqdYmreHYL7dNBiK46n+631/xrzq+Dv71P7j0KGMt7tT7zh6KmurSezmMVxGUcevf6etQ15zTTsz0U01dBRRRSGFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABVmysLjUJxFbpuPc9lHqTWjpPh2e+Kyz5hg65I+ZvoP612draQWUAhgjCIPTv7n1rsoYSU9ZaI46+LjDSOrKelaNBpceR885HzSEfoPQVpUUV6sYKCtE8uUnJ3kFFFFUSFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBBd2VvfQmK4jDr29R9D2rkNT8M3Fpultszw9cAfMv4d67aisatCFXfc2pV50ttjywjHBor0DUdCs9Ry7L5cx/5aJ1P1HeuS1DQb3T8sU82If8tE5/Mdq8urhZ09d0enSxUKmmzMyiiiuY6QooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKkgt5rmQRwRtI57KM10uneEzkSX7/9skP8z/hWtOjOo/dRlUrQpr3mc9Z2Nzfy+XbxFz3PYfU11+l+G7ezxLcYnmHPI+VfoO9bEEEVtEIoY1jQdAoxUlenRwkYay1Z5tbFynpHRBRRRXWcgUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBlX/AIesb7LBPJlP8cfGfqOlcze+G7+0yyL58Y7x9fyru6K56mFp1NbWZ0U8VUhpe6PLSCpIIII6g0lek3em2d8P9IgRm/vYw35isC78IA5azuMf7En+I/wrgqYKpH4dTup42nL4tDlaKv3WjX9nky2zlR/EnzD9KoVyyi4uzVjqjJSV0woooqSgooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKkht5rh9kMTyN6IuaaV9hN23I6K3LTwtfT4abZAv+0cn8hW7Z+GLC2w0gadx3fp+VdFPCVZ9LHPPFU4dbnHWtjdXr7beB39SBwPqeldFY+EgMPey5/wCmcf8AU106IsahUUKo6ADAFOrup4KEdZanFUxk5aR0Iba1gtI/Lt4ljX2HX6+tTUUV1pJaI5G23dhRRRTEFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFVbnTbK7/wBfbRuT3xg/mOatUUnFPRjUmtUc/ceErOTmGWWI+n3h/j+tZk/hK9TmGWKUe+VNdnRXPLCUpdDeOKqx63PPJtE1KH71nIQO6fN/KqTwyxHEkbof9pSK9QpCAwwQCPesZYCPRm8cfLqjy2ivS5NPs5fv2kLfWMVWfQtMfrZoPpkfyrJ4CfRmqx8OqPPaK7xvDWln/lgw+kjf400+F9M/uSf99mp+o1PIr67T8zhaK7n/AIRbTP7kn/fZpw8MaWOsTn6uaX1Gr5B9dpeZwlFd+vh3Sl/5dQfq7H+tTppGnR/dsofxXP8AOqWAn1aJeOh0TPOQCeAKsxafeT/6q1mb3CHFejRwQxcRxIn+6oFSVosAusjN499InBw+GdTl6xLEPV2H9K0oPB563F3+Ea/1P+FdVRW0cHSW+pjLGVXtoZNv4c023wTCZW9ZDn9OlaccaRLtjRUUdlGBT6K6YwjH4VY55TlL4ncKKKKokKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigD/9k=";
}