@brandbrigade/ott-bb-player 1.0.46 → 1.0.49
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -0
- package/dist/OTTPlayer.js +67 -230
- package/package.json +16 -14
- package/LICENCE +0 -29
package/dist/OTTPlayer.js
CHANGED
|
@@ -1,4 +1,36 @@
|
|
|
1
|
-
(function(bV,Dl){typeof exports=="object"&&typeof module<"u"?module.exports=Dl():typeof define=="function"&&define.amd?define(Dl):(bV=typeof globalThis<"u"?globalThis:bV||self,bV.OTTPlayer=Dl())})(this,function(){"use strict";var cx=Object.defineProperty;var ix=(bV,Dl,cW)=>Dl in bV?cx(bV,Dl,{enumerable:!0,configurable:!0,writable:!0,value:cW}):bV[Dl]=cW;var O=(bV,Dl,cW)=>ix(bV,typeof Dl!="symbol"?Dl+"":Dl,cW);const bV=`
|
|
1
|
+
(function(S,v){typeof exports=="object"&&typeof module<"u"?module.exports=v():typeof define=="function"&&define.amd?define(v):(S=typeof globalThis<"u"?globalThis:S||self,S.OTTPlayer=v())})(this,function(){"use strict";const S=s=>Math.abs(s%59.94)<.01?59.94:s,v=s=>Math.abs(s-59.94005994005994)<20?59.94:Math.abs(s-29.97002997002997)<10?29.97:Math.abs(s-14.985014985014985)<8?14.98:0,G=s=>s>30&&s<70?59.94005994005994:s>15?29.97002997002997:s>7?14.985014985014985:0;class A{constructor(t){this.frameDurations=[],this.frameDurationsCapacity=t,this.lastTimestamp=null}addFrameDuration(t){return this.frameDurations.push(t),this.frameDurations.length>this.frameDurationsCapacity&&this.frameDurations.shift(),this.calculateAverage()}addTimestamp(t){if(this.lastTimestamp===null)return this.lastTimestamp=t,null;const e=t-this.lastTimestamp;return this.lastTimestamp=t,this.addFrameDuration(e)}calculateAverage(){if(this.frameDurations.length===0)return 0;const e=this.frameDurations.reduce((a,o)=>a+o,0)/this.frameDurations.length,r=this.frameDurations.filter(a=>Math.abs(a-e)<=e*.2);return r.reduce((a,o)=>a+o,0)/r.length||e}getFPS(){const t=this.calculateAverage();if(t===0)return 0;const e=1/t;return G(e)}getPerciseFPS(){const t=this.calculateAverage();return t===0?0:1/t}}const y=(()=>{const s=()=>{const d=navigator.userAgent;return/windows/i.test(d)?"Windows":/android/i.test(d)?"Android":/iphone|ipad|ipod/i.test(d)?"iOS":/mac/i.test(d)?"Mac":/ipad/i.test(d)?"iPad":"Something else"},t=()=>s()==="Mac",e=()=>s()==="iPad",r=()=>s()==="iOS",i=()=>{const d=s();return d==="iOS"||d==="Mac"||d==="iPad"},n=()=>s()==="Windows",a=()=>s()==="Android",o=()=>{switch(s()){case"Windows":return"a Windows PC";case"Android":return"an Android phone";case"iOS":return"an iPhone";case"Mac":return"a Mac";case"iPad":return"an iPad";default:return"an Unknown device"}},h=()=>({header:[navigator.platform,navigator.userAgent,navigator.appVersion,navigator.vendor,window.opera],dataos:[{name:"Windows Phone",value:"Windows Phone",version:"OS"},{name:"Windows",value:"Win",version:"NT"},{name:"iPhone",value:"iPhone",version:"OS"},{name:"iPad",value:"iPad",version:"OS"},{name:"Kindle",value:"Silk",version:"Silk"},{name:"Android",value:"Android",version:"Android"},{name:"PlayBook",value:"PlayBook",version:"OS"},{name:"BlackBerry",value:"BlackBerry",version:"/"},{name:"Macintosh",value:"Mac",version:"OS X"},{name:"Linux",value:"Linux",version:"rv"},{name:"Palm",value:"Palm",version:"PalmOS"}],databrowser:[{name:"Chrome",value:"Chrome",version:"Chrome"},{name:"Firefox",value:"Firefox",version:"Firefox"},{name:"Safari",value:"Safari",version:"Version"},{name:"Internet Explorer",value:"MSIE",version:"MSIE"},{name:"Opera",value:"Opera",version:"Opera"},{name:"BlackBerry",value:"CLDC",version:"CLDC"},{name:"Mozilla",value:"Mozilla",version:"Mozilla"}],init(){const x=this.header.join(" ");return this.matchItem(x,this.dataos)},matchItem(x,w){for(let T=0;T<w.length;T+=1)if(new RegExp(w[T].value,"i").test(x))return w[T].name;return"unknown"}}).init(),l=()=>{const d=navigator.userAgent;return d.indexOf("Chrome")>-1&&d.indexOf("Edge")===-1?"Chrome":d.indexOf("Safari")>-1&&d.indexOf("Chrome")===-1?"Safari":d.indexOf("Firefox")>-1?"Firefox":d.indexOf("MSIE")>-1||d.indexOf("Trident")>-1?"Internet Explorer":d.indexOf("Edge")>-1?"Edge":"Unknown"};return{getCurrentPlatform:s,isMac:t,isiPad:e,isiPhone:r,isApple:i,isWindows:n,isAndroid:a,getDeviceDescription:o,getDeviceName:h,getBrowserName:l,isSafariMac:()=>t()&&l()==="Safari",isChromeMac:()=>t()&&l()==="Chrome",isChromeWin:()=>n()&&l()==="Chrome"}})(),f=class f{constructor(t,e,r,i,n){this.copy=()=>new f(this.h,this.m,this.s,this.f,this.field),this.print=()=>{const a=":";let o=("0"+this.h).slice(-2)+a+("0"+this.m).slice(-2)+a+("0"+this.s).slice(-2)+a+("0"+this.f).slice(-2);return o+="."+(this.field?"1":"2"),o},this.toZipTimeCodeString=()=>{const a=this.copy();return a.f=0,a.s=a.s%2===0?a.s:a.s-1,a.field=0,f.toStr(a)},this.toFrames=a=>{let o=60,h=0;Math.floor(a)==60?(o=60,h=0):Math.floor(a)==59?(o=60,h=4):Math.floor(a)==30?(o=30,h=0):Math.floor(a)==29&&(o=30,h=2);let l=this.h,p=this.m,u=this.s,_=this.f,g=this.field;const d=l*60+p,x=(d-Math.floor(d/10))*h;return l*(o*3600)+p*(o*60)+u*o+(_*2+g)-x},this.addSeconds=a=>{let o=this.copy();return o.s+=a,o.s>=60&&(o.s=0,o.m++,o.m>=60&&(o.m=0,o.h++)),o},this.addFrames=(a,o)=>{let h=this.toFrames(o);return h+=a,f.fromFrames(h,o)},this.subtractFrames=(a,o)=>this.addFrames(-a,o),this.h=t||0,this.m=e||0,this.s=r||0,this.f=i||0,this.field=n||0}static compare(t,e){return t.h!==e.h?t.h<e.h?-1:1:t.m!==e.m?t.m<e.m?-1:1:t.s!==e.s?t.s<e.s?-1:1:t.f!==e.f?t.f<e.f?-1:1:t.field!==e.field?t.field<e.field?-1:1:0}static generateTimecodeRange(t,e,r){const i=[];let n=t;for(;f.compare(n,e)<=0;)i.push(n),n=n.addSeconds(r);return i}totalSeconds(){return this.h*3600+this.m*60+this.s}totalMilliseconds(t){return this.toFrames(t)*1e3/t}};f.calculateCurrentTimeCode=t=>{var u;if(!t.video||!t.clocker||!t.gameParams)throw new Error("OTTPlayer is not initialized");const e=t.video,r=t.clocker,i=r.videoFPScalculator.getFPS(),o=(e.currentTime-r.syncPoint.playerTime)%(60*60*24)*i+r.syncPoint.frame;if(o===0||i===0)throw new Error("Current frame is 0 or fps is 0");const h=f.calculateCurrentOffset(o,(u=t.gameParams)==null?void 0:u.offsets);if(h===void 0)throw new Error("Offset is undefined");let l=Math.floor(o-h);return l<0&&(l+=5178816),l>=5178816&&(l-=5178816),f.fromFrames(l,i)},f.calculateCurrentOffset=(t,e)=>{for(let r=1;r<e.length;r++)if(t<e[r].frame)return e[r-1].offset;return e[e.length-1].offset},f.fromFrames=(t,e)=>{let r=60,i=0;Math.floor(e)==60?(r=60,i=0):Math.floor(e)==59?(r=60,i=4):Math.floor(e)==30?(r=30,i=0):Math.floor(e)==29&&(r=30,i=2);let n=Math.floor(e*60),a=Math.floor(e*60*10),o=a*6,h=t,l=Math.floor(h/o);h-=l*o;let p=Math.floor(h/a);h-=p*a,h>=r*60&&(h+=i*(Math.floor((h-r*60)/n)+1));let u=Math.floor(h/(r*60));h-=u*(r*60);let _=Math.floor(h/r);h-=_*r;let g=h;u+=p*10;let d=0;return d=g%2,g=Math.floor(g/2),new f(l,u,_,g,d)},f.toStr=t=>{const e="_";let r=("0"+t.h).slice(-2)+e+("0"+t.m).slice(-2)+e+("0"+t.s).slice(-2)+e+("0"+t.f).slice(-2);return t.field&&(r+="_1"),r},f.fromStr=t=>{const r=t.split("_").map(Number);if(r.length==4){const[i,n,a,o]=r;return new f(i,n,a,o,0)}else if(r.length==5){const[i,n,a,o,h]=r;return new f(i,n,a,o,h)}else throw new Error("Invalid timecode format: "+t)},f.fromMetadata=t=>{const e=/^(\d{2}):(\d{2}):(\d{2}):(\d{2})(?:\.(\d))?$/,r=t.timecode.match(e);if(!r)throw new Error("Invalid timecode format: "+t.timecode);const[,i,n,a,o,h]=r,l=Number(i),p=Number(n),u=Number(a),_=Number(o),g=h?Number(h):0;return new f(l,p,u,_,g)};let c=f,B=0,C=0;const P=s=>{if(s.metadata.messageData){s.metadata.messageData=D(s.metadata.messageData,s.metadata.presentationTime);return}if(s.metadata.frames&&s.metadata.frames.length&&s.metadata.frames[0].key&&s.metadata.frames[0].key.toLowerCase()==="priv"){const t=s.metadata.frames.filter(e=>e.info&&e.info.toLowerCase().includes("ntc"));if(t.length){const e=t[t.length-1],r=`${e.info}\0${String.fromCharCode(...e.data)}`;s.metadata.messageData=D(r,s.metadata.presentationTime)}}},R=()=>{const s=new Date(B-C);let t=Math.round(s.getUTCMilliseconds()*30*2/1001)/2;const e=t%1;let r=1;return e===.5&&(t=Math.floor(t),r=2),new c(s.getUTCHours(),s.getUTCMinutes(),s.getUTCSeconds(),Math.floor(t),r===1?0:1)},H=s=>{if((s&&s.metadata&&s.metadata.id==0||y.isSafariMac())&&(P(s),s.metadata.id==0||y.isSafariMac()&&C==0))return R()},V=s=>(P(s),R()),D=(s,t)=>{let e="";if(s&&s.includes("www.mediakind.com/NTC")){const r=s.replace(/.*NTC./,"");let i=0;for(;i+8<=r.length;){const n=r.substring(i,i+4),a=((r.charCodeAt(i+4)*256+r.charCodeAt(i+5))*256+r.charCodeAt(i+6))*256+r.charCodeAt(i+7);if(i+8+a>r.length)break;const o=r.substring(i+8,i+8+a);n==="utc_"&&new Date(parseInt(o)).getTime()/1e3,n==="tc__"&&(B=new Date(parseInt(o)).getTime()),n==="offs"&&(C=parseInt(o)/90),i+=8+a}}return e},Y=(s,t,e)=>{const r=e.toFrames(t),i=e.print();console.log("New segment ("+s.url+"): "+i+" ("+r+") playing at "+s.playbackTime);const n=s.playbackTime;return{frame:r,playerTime:n,stringTime:i}},j=(s,t,e)=>{const r=e.toFrames(t),i=e.print(),n=s.metadata.presentationTime;return{frame:r,playerTime:n,stringTime:i}},W=async s=>{let t;typeof document>"u"?t=new URL(self.location.href):t=new URL(document.location.href);const e=t.searchParams.get("config");if(e){const i=await(await fetch(e)).json();Object.assign(s,i)}},m=(s,t)=>!s.debug||!s.debug.on?!1:s.debug[`log${t}`];class ${constructor(t){this.last10=[],this.errorsInProgress=[],this.lastFrameTC=null,this.fps=t}setFPS(t){this.fps=t}timecodeRecieved(t){if(!t)return;const e=c.fromStr(t);if(this.last10.push(e),this.last10.length>10&&this.last10.shift(),this.lastFrameTC){const r=this.incrementInterlaced(this.lastFrameTC);c.compare(e,r)!==0&&(console.warn("Timecode sequence is invalid! Detected at:",t),this.errorsInProgress.push({preTCs:[...this.last10],postTCs:[],framesAfter:0,printed:!1}))}for(const r of this.errorsInProgress)r.printed||(r.postTCs.push(e),r.framesAfter++);for(const r of this.errorsInProgress)if(!r.printed&&r.framesAfter>=10){console.error("Full 20-frame sequence around error:");const i=[...r.preTCs,...r.postTCs];console.error(i.map(n=>c.toStr(n))),r.printed=!0}this.lastFrameTC=e}incrementInterlaced(t){const e=t.copy();return e.field===0?(e.field=1,e):(e.field=0,e.f++,e.f>=30&&(e.f=0,e.s++,e.s>=60&&(e.s=0,e.m++,e.m>=60&&(e.m=0,e.h++))),e)}}class X{constructor(t,e){this.click=async r=>{const i=this.video.getBoundingClientRect(),n=(r.clientX-i.left)/i.width,a=(r.clientY-i.top)/i.height,o={x:n,y:a};this.renderer.postMessage({type:"VIDEO_CLICK",clickData:o})},this.video=t,this.renderer=e,this.renderer.onmessage=r=>{if(r.data.type==="OPEN_URL"){const i=r.data.url;i&&window.open(i,"_blank")}}}}const k='(function(){"use strict";const d=(l,t)=>!l.debug||!l.debug.on?!1:l.debug[`log${t}`],E=l=>Math.abs(l%59.94)<.01?59.94:l;class M{constructor(t){this.fetchGameParams=async(s,e)=>{const n=`${s}/${e}.json`;this.options&&d(this.options,"Fetcher")&&console.log(`[Fetcher] Fetching GameParams from ${n}`);const a=await fetch(n);if(!a.ok)throw new Error(`HTTP error! Status: ${a.status}`);const o=await a.json();return o.hasOwnProperty("bucketName")&&o.hasOwnProperty("offsets")?o:(this.options&&d(this.options,"Errors")&&console.error(`[Fetcher] Game params for ${e} not found in JSON.`),a)},this.fetchMetadata=async(s,e,n,a)=>{const o=E(n),i=`${`${s}/${e}`}/manifests/${o}/${a}.zip`;this.options&&d(this.options,"Fetcher")&&console.log(`[Fetcher] Fetching metadata from ${i}`);const c=await fetch(i);if(!c.ok)throw new Error(`HTTP error! Status: ${c.status}`);return await c.arrayBuffer()},this.options=t}}const h=class h{constructor(t,s,e,n,a){this.copy=()=>new h(this.h,this.m,this.s,this.f,this.field),this.print=()=>{const o=":";let r=("0"+this.h).slice(-2)+o+("0"+this.m).slice(-2)+o+("0"+this.s).slice(-2)+o+("0"+this.f).slice(-2);return r+="."+(this.field?"1":"2"),r},this.toZipTimeCodeString=()=>{const o=this.copy();return o.f=0,o.s=o.s%2===0?o.s:o.s-1,o.field=0,h.toStr(o)},this.toFrames=o=>{let r=60,i=0;Math.floor(o)==60?(r=60,i=0):Math.floor(o)==59?(r=60,i=4):Math.floor(o)==30?(r=30,i=0):Math.floor(o)==29&&(r=30,i=2);let c=this.h,m=this.m,f=this.s,D=this.f,u=this.field;const b=c*60+m,R=(b-Math.floor(b/10))*i;return c*(r*3600)+m*(r*60)+f*r+(D*2+u)-R},this.addSeconds=o=>{let r=this.copy();return r.s+=o,r.s>=60&&(r.s=0,r.m++,r.m>=60&&(r.m=0,r.h++)),r},this.addFrames=(o,r)=>{let i=this.toFrames(r);return i+=o,h.fromFrames(i,r)},this.subtractFrames=(o,r)=>this.addFrames(-o,r),this.h=t||0,this.m=s||0,this.s=e||0,this.f=n||0,this.field=a||0}static compare(t,s){return t.h!==s.h?t.h<s.h?-1:1:t.m!==s.m?t.m<s.m?-1:1:t.s!==s.s?t.s<s.s?-1:1:t.f!==s.f?t.f<s.f?-1:1:t.field!==s.field?t.field<s.field?-1:1:0}static generateTimecodeRange(t,s,e){const n=[];let a=t;for(;h.compare(a,s)<=0;)n.push(a),a=a.addSeconds(e);return n}totalSeconds(){return this.h*3600+this.m*60+this.s}totalMilliseconds(t){return this.toFrames(t)*1e3/t}};h.calculateCurrentTimeCode=t=>{var f;if(!t.video||!t.clocker||!t.gameParams)throw new Error("OTTPlayer is not initialized");const s=t.video,e=t.clocker,n=e.videoFPScalculator.getFPS(),r=(s.currentTime-e.syncPoint.playerTime)%(60*60*24)*n+e.syncPoint.frame;if(r===0||n===0)throw new Error("Current frame is 0 or fps is 0");const i=h.calculateCurrentOffset(r,(f=t.gameParams)==null?void 0:f.offsets);if(i===void 0)throw new Error("Offset is undefined");let c=Math.floor(r-i);return c<0&&(c+=5178816),c>=5178816&&(c-=5178816),h.fromFrames(c,n)},h.calculateCurrentOffset=(t,s)=>{for(let e=1;e<s.length;e++)if(t<s[e].frame)return s[e-1].offset;return s[s.length-1].offset},h.fromFrames=(t,s)=>{let e=60,n=0;Math.floor(s)==60?(e=60,n=0):Math.floor(s)==59?(e=60,n=4):Math.floor(s)==30?(e=30,n=0):Math.floor(s)==29&&(e=30,n=2);let a=Math.floor(s*60),o=Math.floor(s*60*10),r=o*6,i=t,c=Math.floor(i/r);i-=c*r;let m=Math.floor(i/o);i-=m*o,i>=e*60&&(i+=n*(Math.floor((i-e*60)/a)+1));let f=Math.floor(i/(e*60));i-=f*(e*60);let D=Math.floor(i/e);i-=D*e;let u=i;f+=m*10;let b=0;return b=u%2,u=Math.floor(u/2),new h(c,f,D,u,b)},h.toStr=t=>{const s="_";let e=("0"+t.h).slice(-2)+s+("0"+t.m).slice(-2)+s+("0"+t.s).slice(-2)+s+("0"+t.f).slice(-2);return t.field&&(e+="_1"),e},h.fromStr=t=>{const e=t.split("_").map(Number);if(e.length==4){const[n,a,o,r]=e;return new h(n,a,o,r,0)}else if(e.length==5){const[n,a,o,r,i]=e;return new h(n,a,o,r,i)}else throw new Error("Invalid timecode format: "+t)},h.fromMetadata=t=>{const s=/^(\\d{2}):(\\d{2}):(\\d{2}):(\\d{2})(?:\\.(\\d))?$/,e=t.timecode.match(s);if(!e)throw new Error("Invalid timecode format: "+t.timecode);const[,n,a,o,r,i]=e,c=Number(n),m=Number(a),f=Number(o),D=Number(r),u=i?Number(i):0;return new h(c,m,f,D,u)};let p=h;const y=2,P=4,N=2;class T{constructor(t,s){this.jobsQueue=[],this.processedTimecodes=[],this.updateStreamData=e=>{this.streamData=e,this.initiateJobs(y,P,N),this.clearOldJobs(1)},this.initiateJobs=(e,n,a)=>{if(!this.streamData){this.options&&d(this.options,"Errors")&&console.error("[Downloader] Stream data is not available");return}const o=p.fromStr(this.streamData.timeCode),r=o.addSeconds(e),i=o.addSeconds(n),c=p.generateTimecodeRange(r,i,a);for(const m of c){const f=m.toZipTimeCodeString();this.processedTimecodes.includes(f)||(this.processedTimecodes.push(f),this.addJob(f))}},this.clearOldJobs=e=>{if(!this.streamData){this.options&&d(this.options,"Errors")&&console.error("[Downloader] Stream data is not available");return}const a=p.fromStr(this.streamData.timeCode).totalSeconds()-e;this.processedTimecodes=this.processedTimecodes.filter(o=>p.fromStr(o).totalSeconds()>a)},this.addJob=e=>{if(this.jobsQueue.some(n=>n===e)){this.options&&d(this.options,"Downloader")&&console.log(`[Downloader] Job already exists for timeCode=${e}`);return}this.jobsQueue.push(e),this.startNextJob()},this.startNextJob=()=>{!this.currentJob&&this.jobsQueue.length>0&&(this.currentJob=this.jobsQueue.shift(),this.options&&d(this.options,"Downloader")&&console.log(`[Downloader] Starting job timeCode=${this.currentJob}`),this.downloadZip(this.currentJob))},this.jobDone=()=>{this.currentJob=void 0,this.startNextJob()},this.downloadZip=async e=>{if(!this.streamData){this.options&&d(this.options,"Errors")&&console.error("[Downloader] Stream data is not available");return}const{fps:n,cloudFrontURL:a,bucketName:o}=this.streamData;try{this.options&&d(this.options,"Downloader")&&console.log(`[Downloader] Fetching zip for timeCode=${e}`);const r=await this.fetcher.fetchMetadata(a,o,n,e);this.postArrayBufferToDecoder(e,r)}catch(r){this.options&&d(this.options,"Errors")&&console.error("[Downloader] Error:",r)}this.jobDone()},this.postArrayBufferToDecoder=t,this.options=s,this.fetcher=new M(s)}}let g=null,S=null,F,w;self.onmessage=async l=>{const{data:t}=l;t.type==="SET_RENDERER_PORT"&&(g=t.port,g.onmessage=$),t.type==="SET_DECODER_PORT"&&(S=t.port,S.onmessage=O),t.type==="SET_OPTIONS"&&(w=t.options,F=new T(J,w))};async function $(l){const{data:t}=l;t.type==="DOWNLOADER_INPUT"&&F.updateStreamData(t.streamData)}function J(l,t){if(!S)return;w&&d(w,"Downloader")&&console.log(`[DownloaderWorker] Posting an ArrayBuffer to Decoder, timeCode=${l}`);const s={type:"DECODER_INPUT",timeCode:l,arrayBuffer:t};S==null||S.postMessage(s,{transfer:[t]})}function O(l){w&&d(w,"Downloader")&&console.log("[DownloaderWorker] Received message from Decoder:",l.data)}})();\n',I=typeof self<"u"&&self.Blob&&new Blob([k],{type:"text/javascript;charset=utf-8"});function q(s){let t;try{if(t=I&&(self.URL||self.webkitURL).createObjectURL(I),!t)throw"";const e=new Worker(t,{name:s==null?void 0:s.name});return e.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(t)}),e}catch{return new Worker("data:text/javascript;charset=utf-8,"+encodeURIComponent(k),{name:s==null?void 0:s.name})}finally{t&&(self.URL||self.webkitURL).revokeObjectURL(t)}}const L=`(function(){"use strict";const L=(C,f)=>!C.debug||!C.debug.on?!1:C.debug[\`log\${f}\`];function X(C){return C&&C.__esModule&&Object.prototype.hasOwnProperty.call(C,"default")?C.default:C}var K={},Q;function it(){return Q||(Q=1,function(C){var f=function(){var t=new Date,e=4,r=3,s=2,a=1,u=e,p={setLogLevel:function(_){_==this.debug?u=a:_==this.info?u=s:_==this.warn?u=r:(_==this.error,u=e)},debug:function(_,U){console.debug===void 0&&(console.debug=console.log),a>=u&&console.debug("["+f.getDurationString(new Date-t,1e3)+"]","["+_+"]",U)},log:function(_,U){this.debug(_.msg)},info:function(_,U){s>=u&&console.info("["+f.getDurationString(new Date-t,1e3)+"]","["+_+"]",U)},warn:function(_,U){r>=u&&console.warn("["+f.getDurationString(new Date-t,1e3)+"]","["+_+"]",U)},error:function(_,U){e>=u&&console.error("["+f.getDurationString(new Date-t,1e3)+"]","["+_+"]",U)}};return p}();f.getDurationString=function(t,e){var r;function s(S,b){for(var E=""+S,B=E.split(".");B[0].length<b;)B[0]="0"+B[0];return B.join(".")}t<0?(r=!0,t=-t):r=!1;var a=e||1,u=t/a,p=Math.floor(u/3600);u-=p*3600;var _=Math.floor(u/60);u-=_*60;var U=u*1e3;return u=Math.floor(u),U-=u*1e3,U=Math.floor(U),(r?"-":"")+p+":"+s(_,2)+":"+s(u,2)+"."+s(U,3)},f.printRanges=function(t){var e=t.length;if(e>0){for(var r="",s=0;s<e;s++)s>0&&(r+=","),r+="["+f.getDurationString(t.start(s))+","+f.getDurationString(t.end(s))+"]";return r}else return"(empty)"},C.Log=f;var h=function(t){if(t instanceof ArrayBuffer)this.buffer=t,this.dataview=new DataView(t);else throw"Needs an array buffer";this.position=0};h.prototype.getPosition=function(){return this.position},h.prototype.getEndPosition=function(){return this.buffer.byteLength},h.prototype.getLength=function(){return this.buffer.byteLength},h.prototype.seek=function(t){var e=Math.max(0,Math.min(this.buffer.byteLength,t));return this.position=isNaN(e)||!isFinite(e)?0:e,!0},h.prototype.isEos=function(){return this.getPosition()>=this.getEndPosition()},h.prototype.readAnyInt=function(t,e){var r=0;if(this.position+t<=this.buffer.byteLength){switch(t){case 1:e?r=this.dataview.getInt8(this.position):r=this.dataview.getUint8(this.position);break;case 2:e?r=this.dataview.getInt16(this.position):r=this.dataview.getUint16(this.position);break;case 3:if(e)throw"No method for reading signed 24 bits values";r=this.dataview.getUint8(this.position)<<16,r|=this.dataview.getUint8(this.position+1)<<8,r|=this.dataview.getUint8(this.position+2);break;case 4:e?r=this.dataview.getInt32(this.position):r=this.dataview.getUint32(this.position);break;case 8:if(e)throw"No method for reading signed 64 bits values";r=this.dataview.getUint32(this.position)<<32,r|=this.dataview.getUint32(this.position+4);break;default:throw"readInt method not implemented for size: "+t}return this.position+=t,r}else throw"Not enough bytes in buffer"},h.prototype.readUint8=function(){return this.readAnyInt(1,!1)},h.prototype.readUint16=function(){return this.readAnyInt(2,!1)},h.prototype.readUint24=function(){return this.readAnyInt(3,!1)},h.prototype.readUint32=function(){return this.readAnyInt(4,!1)},h.prototype.readUint64=function(){return this.readAnyInt(8,!1)},h.prototype.readString=function(t){if(this.position+t<=this.buffer.byteLength){for(var e="",r=0;r<t;r++)e+=String.fromCharCode(this.readUint8());return e}else throw"Not enough bytes in buffer"},h.prototype.readCString=function(){for(var t=[];;){var e=this.readUint8();if(e!==0)t.push(e);else break}return String.fromCharCode.apply(null,t)},h.prototype.readInt8=function(){return this.readAnyInt(1,!0)},h.prototype.readInt16=function(){return this.readAnyInt(2,!0)},h.prototype.readInt32=function(){return this.readAnyInt(4,!0)},h.prototype.readInt64=function(){return this.readAnyInt(8,!1)},h.prototype.readUint8Array=function(t){for(var e=new Uint8Array(t),r=0;r<t;r++)e[r]=this.readUint8();return e},h.prototype.readInt16Array=function(t){for(var e=new Int16Array(t),r=0;r<t;r++)e[r]=this.readInt16();return e},h.prototype.readUint16Array=function(t){for(var e=new Int16Array(t),r=0;r<t;r++)e[r]=this.readUint16();return e},h.prototype.readUint32Array=function(t){for(var e=new Uint32Array(t),r=0;r<t;r++)e[r]=this.readUint32();return e},h.prototype.readInt32Array=function(t){for(var e=new Int32Array(t),r=0;r<t;r++)e[r]=this.readInt32();return e},C.MP4BoxStream=h;var o=function(t,e,r){this._byteOffset=e||0,t instanceof ArrayBuffer?this.buffer=t:typeof t=="object"?(this.dataView=t,e&&(this._byteOffset+=e)):this.buffer=new ArrayBuffer(t||0),this.position=0,this.endianness=r??o.LITTLE_ENDIAN};o.prototype={},o.prototype.getPosition=function(){return this.position},o.prototype._realloc=function(t){if(this._dynamicSize){var e=this._byteOffset+this.position+t,r=this._buffer.byteLength;if(e<=r){e>this._byteLength&&(this._byteLength=e);return}for(r<1&&(r=1);e>r;)r*=2;var s=new ArrayBuffer(r),a=new Uint8Array(this._buffer),u=new Uint8Array(s,0,a.length);u.set(a),this.buffer=s,this._byteLength=e}},o.prototype._trimAlloc=function(){if(this._byteLength!=this._buffer.byteLength){var t=new ArrayBuffer(this._byteLength),e=new Uint8Array(t),r=new Uint8Array(this._buffer,0,e.length);e.set(r),this.buffer=t}},o.BIG_ENDIAN=!1,o.LITTLE_ENDIAN=!0,o.prototype._byteLength=0,Object.defineProperty(o.prototype,"byteLength",{get:function(){return this._byteLength-this._byteOffset}}),Object.defineProperty(o.prototype,"buffer",{get:function(){return this._trimAlloc(),this._buffer},set:function(t){this._buffer=t,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._buffer.byteLength}}),Object.defineProperty(o.prototype,"byteOffset",{get:function(){return this._byteOffset},set:function(t){this._byteOffset=t,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._buffer.byteLength}}),Object.defineProperty(o.prototype,"dataView",{get:function(){return this._dataView},set:function(t){this._byteOffset=t.byteOffset,this._buffer=t.buffer,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._byteOffset+t.byteLength}}),o.prototype.seek=function(t){var e=Math.max(0,Math.min(this.byteLength,t));this.position=isNaN(e)||!isFinite(e)?0:e},o.prototype.isEof=function(){return this.position>=this._byteLength},o.prototype.mapUint8Array=function(t){this._realloc(t*1);var e=new Uint8Array(this._buffer,this.byteOffset+this.position,t);return this.position+=t*1,e},o.prototype.readInt32Array=function(t,e){t=t??this.byteLength-this.position/4;var r=new Int32Array(t);return o.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,t*r.BYTES_PER_ELEMENT),o.arrayToNative(r,e??this.endianness),this.position+=r.byteLength,r},o.prototype.readInt16Array=function(t,e){t=t??this.byteLength-this.position/2;var r=new Int16Array(t);return o.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,t*r.BYTES_PER_ELEMENT),o.arrayToNative(r,e??this.endianness),this.position+=r.byteLength,r},o.prototype.readInt8Array=function(t){t=t??this.byteLength-this.position;var e=new Int8Array(t);return o.memcpy(e.buffer,0,this.buffer,this.byteOffset+this.position,t*e.BYTES_PER_ELEMENT),this.position+=e.byteLength,e},o.prototype.readUint32Array=function(t,e){t=t??this.byteLength-this.position/4;var r=new Uint32Array(t);return o.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,t*r.BYTES_PER_ELEMENT),o.arrayToNative(r,e??this.endianness),this.position+=r.byteLength,r},o.prototype.readUint16Array=function(t,e){t=t??this.byteLength-this.position/2;var r=new Uint16Array(t);return o.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,t*r.BYTES_PER_ELEMENT),o.arrayToNative(r,e??this.endianness),this.position+=r.byteLength,r},o.prototype.readUint8Array=function(t){t=t??this.byteLength-this.position;var e=new Uint8Array(t);return o.memcpy(e.buffer,0,this.buffer,this.byteOffset+this.position,t*e.BYTES_PER_ELEMENT),this.position+=e.byteLength,e},o.prototype.readFloat64Array=function(t,e){t=t??this.byteLength-this.position/8;var r=new Float64Array(t);return o.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,t*r.BYTES_PER_ELEMENT),o.arrayToNative(r,e??this.endianness),this.position+=r.byteLength,r},o.prototype.readFloat32Array=function(t,e){t=t??this.byteLength-this.position/4;var r=new Float32Array(t);return o.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,t*r.BYTES_PER_ELEMENT),o.arrayToNative(r,e??this.endianness),this.position+=r.byteLength,r},o.prototype.readInt32=function(t){var e=this._dataView.getInt32(this.position,t??this.endianness);return this.position+=4,e},o.prototype.readInt16=function(t){var e=this._dataView.getInt16(this.position,t??this.endianness);return this.position+=2,e},o.prototype.readInt8=function(){var t=this._dataView.getInt8(this.position);return this.position+=1,t},o.prototype.readUint32=function(t){var e=this._dataView.getUint32(this.position,t??this.endianness);return this.position+=4,e},o.prototype.readUint16=function(t){var e=this._dataView.getUint16(this.position,t??this.endianness);return this.position+=2,e},o.prototype.readUint8=function(){var t=this._dataView.getUint8(this.position);return this.position+=1,t},o.prototype.readFloat32=function(t){var e=this._dataView.getFloat32(this.position,t??this.endianness);return this.position+=4,e},o.prototype.readFloat64=function(t){var e=this._dataView.getFloat64(this.position,t??this.endianness);return this.position+=8,e},o.endianness=new Int8Array(new Int16Array([1]).buffer)[0]>0,o.memcpy=function(t,e,r,s,a){var u=new Uint8Array(t,e,a),p=new Uint8Array(r,s,a);u.set(p)},o.arrayToNative=function(t,e){return e==this.endianness?t:this.flipArrayEndianness(t)},o.nativeToEndian=function(t,e){return this.endianness==e?t:this.flipArrayEndianness(t)},o.flipArrayEndianness=function(t){for(var e=new Uint8Array(t.buffer,t.byteOffset,t.byteLength),r=0;r<t.byteLength;r+=t.BYTES_PER_ELEMENT)for(var s=r+t.BYTES_PER_ELEMENT-1,a=r;s>a;s--,a++){var u=e[a];e[a]=e[s],e[s]=u}return t},o.prototype.failurePosition=0,String.fromCharCodeUint8=function(t){for(var e=[],r=0;r<t.length;r++)e[r]=t[r];return String.fromCharCode.apply(null,e)},o.prototype.readString=function(t,e){return e==null||e=="ASCII"?String.fromCharCodeUint8.apply(null,[this.mapUint8Array(t??this.byteLength-this.position)]):new TextDecoder(e).decode(this.mapUint8Array(t))},o.prototype.readCString=function(t){var e=this.byteLength-this.position,r=new Uint8Array(this._buffer,this._byteOffset+this.position),s=e;t!=null&&(s=Math.min(t,e));for(var a=0;a<s&&r[a]!==0;a++);var u=String.fromCharCodeUint8.apply(null,[this.mapUint8Array(a)]);return t!=null?this.position+=s-a:a!=e&&(this.position+=1),u};var d=Math.pow(2,32);o.prototype.readInt64=function(){return this.readInt32()*d+this.readUint32()},o.prototype.readUint64=function(){return this.readUint32()*d+this.readUint32()},o.prototype.readInt64=function(){return this.readUint32()*d+this.readUint32()},o.prototype.readUint24=function(){return(this.readUint8()<<16)+(this.readUint8()<<8)+this.readUint8()},C.DataStream=o,o.prototype.save=function(t){var e=new Blob([this.buffer]);if(window.URL&&URL.createObjectURL){var r=window.URL.createObjectURL(e),s=document.createElement("a");document.body.appendChild(s),s.setAttribute("href",r),s.setAttribute("download",t),s.setAttribute("target","_self"),s.click(),window.URL.revokeObjectURL(r)}else throw"DataStream.save: Can't create object URL."},o.prototype._dynamicSize=!0,Object.defineProperty(o.prototype,"dynamicSize",{get:function(){return this._dynamicSize},set:function(t){t||this._trimAlloc(),this._dynamicSize=t}}),o.prototype.shift=function(t){var e=new ArrayBuffer(this._byteLength-t),r=new Uint8Array(e),s=new Uint8Array(this._buffer,t,r.length);r.set(s),this.buffer=e,this.position-=t},o.prototype.writeInt32Array=function(t,e){if(this._realloc(t.length*4),t instanceof Int32Array&&this.byteOffset+this.position%t.BYTES_PER_ELEMENT===0)o.memcpy(this._buffer,this.byteOffset+this.position,t.buffer,0,t.byteLength),this.mapInt32Array(t.length,e);else for(var r=0;r<t.length;r++)this.writeInt32(t[r],e)},o.prototype.writeInt16Array=function(t,e){if(this._realloc(t.length*2),t instanceof Int16Array&&this.byteOffset+this.position%t.BYTES_PER_ELEMENT===0)o.memcpy(this._buffer,this.byteOffset+this.position,t.buffer,0,t.byteLength),this.mapInt16Array(t.length,e);else for(var r=0;r<t.length;r++)this.writeInt16(t[r],e)},o.prototype.writeInt8Array=function(t){if(this._realloc(t.length*1),t instanceof Int8Array&&this.byteOffset+this.position%t.BYTES_PER_ELEMENT===0)o.memcpy(this._buffer,this.byteOffset+this.position,t.buffer,0,t.byteLength),this.mapInt8Array(t.length);else for(var e=0;e<t.length;e++)this.writeInt8(t[e])},o.prototype.writeUint32Array=function(t,e){if(this._realloc(t.length*4),t instanceof Uint32Array&&this.byteOffset+this.position%t.BYTES_PER_ELEMENT===0)o.memcpy(this._buffer,this.byteOffset+this.position,t.buffer,0,t.byteLength),this.mapUint32Array(t.length,e);else for(var r=0;r<t.length;r++)this.writeUint32(t[r],e)},o.prototype.writeUint16Array=function(t,e){if(this._realloc(t.length*2),t instanceof Uint16Array&&this.byteOffset+this.position%t.BYTES_PER_ELEMENT===0)o.memcpy(this._buffer,this.byteOffset+this.position,t.buffer,0,t.byteLength),this.mapUint16Array(t.length,e);else for(var r=0;r<t.length;r++)this.writeUint16(t[r],e)},o.prototype.writeUint8Array=function(t){if(this._realloc(t.length*1),t instanceof Uint8Array&&this.byteOffset+this.position%t.BYTES_PER_ELEMENT===0)o.memcpy(this._buffer,this.byteOffset+this.position,t.buffer,0,t.byteLength),this.mapUint8Array(t.length);else for(var e=0;e<t.length;e++)this.writeUint8(t[e])},o.prototype.writeFloat64Array=function(t,e){if(this._realloc(t.length*8),t instanceof Float64Array&&this.byteOffset+this.position%t.BYTES_PER_ELEMENT===0)o.memcpy(this._buffer,this.byteOffset+this.position,t.buffer,0,t.byteLength),this.mapFloat64Array(t.length,e);else for(var r=0;r<t.length;r++)this.writeFloat64(t[r],e)},o.prototype.writeFloat32Array=function(t,e){if(this._realloc(t.length*4),t instanceof Float32Array&&this.byteOffset+this.position%t.BYTES_PER_ELEMENT===0)o.memcpy(this._buffer,this.byteOffset+this.position,t.buffer,0,t.byteLength),this.mapFloat32Array(t.length,e);else for(var r=0;r<t.length;r++)this.writeFloat32(t[r],e)},o.prototype.writeInt32=function(t,e){this._realloc(4),this._dataView.setInt32(this.position,t,e??this.endianness),this.position+=4},o.prototype.writeInt16=function(t,e){this._realloc(2),this._dataView.setInt16(this.position,t,e??this.endianness),this.position+=2},o.prototype.writeInt8=function(t){this._realloc(1),this._dataView.setInt8(this.position,t),this.position+=1},o.prototype.writeUint32=function(t,e){this._realloc(4),this._dataView.setUint32(this.position,t,e??this.endianness),this.position+=4},o.prototype.writeUint16=function(t,e){this._realloc(2),this._dataView.setUint16(this.position,t,e??this.endianness),this.position+=2},o.prototype.writeUint8=function(t){this._realloc(1),this._dataView.setUint8(this.position,t),this.position+=1},o.prototype.writeFloat32=function(t,e){this._realloc(4),this._dataView.setFloat32(this.position,t,e??this.endianness),this.position+=4},o.prototype.writeFloat64=function(t,e){this._realloc(8),this._dataView.setFloat64(this.position,t,e??this.endianness),this.position+=8},o.prototype.writeUCS2String=function(t,e,r){r==null&&(r=t.length);for(var s=0;s<t.length&&s<r;s++)this.writeUint16(t.charCodeAt(s),e);for(;s<r;s++)this.writeUint16(0)},o.prototype.writeString=function(t,e,r){var s=0;if(e==null||e=="ASCII")if(r!=null){var a=Math.min(t.length,r);for(s=0;s<a;s++)this.writeUint8(t.charCodeAt(s));for(;s<r;s++)this.writeUint8(0)}else for(s=0;s<t.length;s++)this.writeUint8(t.charCodeAt(s));else this.writeUint8Array(new TextEncoder(e).encode(t.substring(0,r)))},o.prototype.writeCString=function(t,e){var r=0;if(e!=null){var s=Math.min(t.length,e);for(r=0;r<s;r++)this.writeUint8(t.charCodeAt(r));for(;r<e;r++)this.writeUint8(0)}else{for(r=0;r<t.length;r++)this.writeUint8(t.charCodeAt(r));this.writeUint8(0)}},o.prototype.writeStruct=function(t,e){for(var r=0;r<t.length;r+=2){var s=t[r+1];this.writeType(s,e[t[r]],e)}},o.prototype.writeType=function(t,e,r){var s;if(typeof t=="function")return t(this,e);if(typeof t=="object"&&!(t instanceof Array))return t.set(this,e,r);var a=null,u="ASCII",p=this.position;switch(typeof t=="string"&&/:/.test(t)&&(s=t.split(":"),t=s[0],a=parseInt(s[1])),typeof t=="string"&&/,/.test(t)&&(s=t.split(","),t=s[0],u=parseInt(s[1])),t){case"uint8":this.writeUint8(e);break;case"int8":this.writeInt8(e);break;case"uint16":this.writeUint16(e,this.endianness);break;case"int16":this.writeInt16(e,this.endianness);break;case"uint32":this.writeUint32(e,this.endianness);break;case"int32":this.writeInt32(e,this.endianness);break;case"float32":this.writeFloat32(e,this.endianness);break;case"float64":this.writeFloat64(e,this.endianness);break;case"uint16be":this.writeUint16(e,o.BIG_ENDIAN);break;case"int16be":this.writeInt16(e,o.BIG_ENDIAN);break;case"uint32be":this.writeUint32(e,o.BIG_ENDIAN);break;case"int32be":this.writeInt32(e,o.BIG_ENDIAN);break;case"float32be":this.writeFloat32(e,o.BIG_ENDIAN);break;case"float64be":this.writeFloat64(e,o.BIG_ENDIAN);break;case"uint16le":this.writeUint16(e,o.LITTLE_ENDIAN);break;case"int16le":this.writeInt16(e,o.LITTLE_ENDIAN);break;case"uint32le":this.writeUint32(e,o.LITTLE_ENDIAN);break;case"int32le":this.writeInt32(e,o.LITTLE_ENDIAN);break;case"float32le":this.writeFloat32(e,o.LITTLE_ENDIAN);break;case"float64le":this.writeFloat64(e,o.LITTLE_ENDIAN);break;case"cstring":this.writeCString(e,a);break;case"string":this.writeString(e,u,a);break;case"u16string":this.writeUCS2String(e,this.endianness,a);break;case"u16stringle":this.writeUCS2String(e,o.LITTLE_ENDIAN,a);break;case"u16stringbe":this.writeUCS2String(e,o.BIG_ENDIAN,a);break;default:if(t.length==3){for(var _=t[1],U=0;U<e.length;U++)this.writeType(_,e[U]);break}else{this.writeStruct(t,e);break}}a!=null&&(this.position=p,this._realloc(a),this.position=p+a)},o.prototype.writeUint64=function(t){var e=Math.floor(t/d);this.writeUint32(e),this.writeUint32(t&4294967295)},o.prototype.writeUint24=function(t){this.writeUint8((t&16711680)>>16),this.writeUint8((t&65280)>>8),this.writeUint8(t&255)},o.prototype.adjustUint32=function(t,e){var r=this.position;this.seek(t),this.writeUint32(e),this.seek(r)},o.prototype.mapInt32Array=function(t,e){this._realloc(t*4);var r=new Int32Array(this._buffer,this.byteOffset+this.position,t);return o.arrayToNative(r,e??this.endianness),this.position+=t*4,r},o.prototype.mapInt16Array=function(t,e){this._realloc(t*2);var r=new Int16Array(this._buffer,this.byteOffset+this.position,t);return o.arrayToNative(r,e??this.endianness),this.position+=t*2,r},o.prototype.mapInt8Array=function(t){this._realloc(t*1);var e=new Int8Array(this._buffer,this.byteOffset+this.position,t);return this.position+=t*1,e},o.prototype.mapUint32Array=function(t,e){this._realloc(t*4);var r=new Uint32Array(this._buffer,this.byteOffset+this.position,t);return o.arrayToNative(r,e??this.endianness),this.position+=t*4,r},o.prototype.mapUint16Array=function(t,e){this._realloc(t*2);var r=new Uint16Array(this._buffer,this.byteOffset+this.position,t);return o.arrayToNative(r,e??this.endianness),this.position+=t*2,r},o.prototype.mapFloat64Array=function(t,e){this._realloc(t*8);var r=new Float64Array(this._buffer,this.byteOffset+this.position,t);return o.arrayToNative(r,e??this.endianness),this.position+=t*8,r},o.prototype.mapFloat32Array=function(t,e){this._realloc(t*4);var r=new Float32Array(this._buffer,this.byteOffset+this.position,t);return o.arrayToNative(r,e??this.endianness),this.position+=t*4,r};var l=function(t){this.buffers=[],this.bufferIndex=-1,t&&(this.insertBuffer(t),this.bufferIndex=0)};l.prototype=new o(new ArrayBuffer,0,o.BIG_ENDIAN),l.prototype.initialized=function(){var t;return this.bufferIndex>-1?!0:this.buffers.length>0?(t=this.buffers[0],t.fileStart===0?(this.buffer=t,this.bufferIndex=0,f.debug("MultiBufferStream","Stream ready for parsing"),!0):(f.warn("MultiBufferStream","The first buffer should have a fileStart of 0"),this.logBufferLevel(),!1)):(f.warn("MultiBufferStream","No buffer to start parsing from"),this.logBufferLevel(),!1)},ArrayBuffer.concat=function(t,e){f.debug("ArrayBuffer","Trying to create a new buffer of size: "+(t.byteLength+e.byteLength));var r=new Uint8Array(t.byteLength+e.byteLength);return r.set(new Uint8Array(t),0),r.set(new Uint8Array(e),t.byteLength),r.buffer},l.prototype.reduceBuffer=function(t,e,r){var s;return s=new Uint8Array(r),s.set(new Uint8Array(t,e,r)),s.buffer.fileStart=t.fileStart+e,s.buffer.usedBytes=0,s.buffer},l.prototype.insertBuffer=function(t){for(var e=!0,r=0;r<this.buffers.length;r++){var s=this.buffers[r];if(t.fileStart<=s.fileStart){if(t.fileStart===s.fileStart)if(t.byteLength>s.byteLength){this.buffers.splice(r,1),r--;continue}else f.warn("MultiBufferStream","Buffer (fileStart: "+t.fileStart+" - Length: "+t.byteLength+") already appended, ignoring");else t.fileStart+t.byteLength<=s.fileStart||(t=this.reduceBuffer(t,0,s.fileStart-t.fileStart)),f.debug("MultiBufferStream","Appending new buffer (fileStart: "+t.fileStart+" - Length: "+t.byteLength+")"),this.buffers.splice(r,0,t),r===0&&(this.buffer=t);e=!1;break}else if(t.fileStart<s.fileStart+s.byteLength){var a=s.fileStart+s.byteLength-t.fileStart,u=t.byteLength-a;if(u>0)t=this.reduceBuffer(t,a,u);else{e=!1;break}}}e&&(f.debug("MultiBufferStream","Appending new buffer (fileStart: "+t.fileStart+" - Length: "+t.byteLength+")"),this.buffers.push(t),r===0&&(this.buffer=t))},l.prototype.logBufferLevel=function(t){var e,r,s,a,u=[],p,_="";for(s=0,a=0,e=0;e<this.buffers.length;e++)r=this.buffers[e],e===0?(p={},u.push(p),p.start=r.fileStart,p.end=r.fileStart+r.byteLength,_+="["+p.start+"-"):p.end===r.fileStart?p.end=r.fileStart+r.byteLength:(p={},p.start=r.fileStart,_+=u[u.length-1].end-1+"], ["+p.start+"-",p.end=r.fileStart+r.byteLength,u.push(p)),s+=r.usedBytes,a+=r.byteLength;u.length>0&&(_+=p.end-1+"]");var U=t?f.info:f.debug;this.buffers.length===0?U("MultiBufferStream","No more buffer in memory"):U("MultiBufferStream",""+this.buffers.length+" stored buffer(s) ("+s+"/"+a+" bytes), continuous ranges: "+_)},l.prototype.cleanBuffers=function(){var t,e;for(t=0;t<this.buffers.length;t++)e=this.buffers[t],e.usedBytes===e.byteLength&&(f.debug("MultiBufferStream","Removing buffer #"+t),this.buffers.splice(t,1),t--)},l.prototype.mergeNextBuffer=function(){var t;if(this.bufferIndex+1<this.buffers.length)if(t=this.buffers[this.bufferIndex+1],t.fileStart===this.buffer.fileStart+this.buffer.byteLength){var e=this.buffer.byteLength,r=this.buffer.usedBytes,s=this.buffer.fileStart;return this.buffers[this.bufferIndex]=ArrayBuffer.concat(this.buffer,t),this.buffer=this.buffers[this.bufferIndex],this.buffers.splice(this.bufferIndex+1,1),this.buffer.usedBytes=r,this.buffer.fileStart=s,f.debug("ISOFile","Concatenating buffer for box parsing (length: "+e+"->"+this.buffer.byteLength+")"),!0}else return!1;else return!1},l.prototype.findPosition=function(t,e,r){var s,a=null,u=-1;for(t===!0?s=0:s=this.bufferIndex;s<this.buffers.length&&(a=this.buffers[s],a.fileStart<=e);){u=s,r&&(a.fileStart+a.byteLength<=e?a.usedBytes=a.byteLength:a.usedBytes=e-a.fileStart,this.logBufferLevel());s++}return u!==-1?(a=this.buffers[u],a.fileStart+a.byteLength>=e?(f.debug("MultiBufferStream","Found position in existing buffer #"+u),u):-1):-1},l.prototype.findEndContiguousBuf=function(t){var e,r,s,a=t!==void 0?t:this.bufferIndex;if(r=this.buffers[a],this.buffers.length>a+1)for(e=a+1;e<this.buffers.length&&(s=this.buffers[e],s.fileStart===r.fileStart+r.byteLength);e++)r=s;return r.fileStart+r.byteLength},l.prototype.getEndFilePositionAfter=function(t){var e=this.findPosition(!0,t,!1);return e!==-1?this.findEndContiguousBuf(e):t},l.prototype.addUsedBytes=function(t){this.buffer.usedBytes+=t,this.logBufferLevel()},l.prototype.setAllUsedBytes=function(){this.buffer.usedBytes=this.buffer.byteLength,this.logBufferLevel()},l.prototype.seek=function(t,e,r){var s;return s=this.findPosition(e,t,r),s!==-1?(this.buffer=this.buffers[s],this.bufferIndex=s,this.position=t-this.buffer.fileStart,f.debug("MultiBufferStream","Repositioning parser at buffer position: "+this.position),!0):(f.debug("MultiBufferStream","Position "+t+" not found in buffered data"),!1)},l.prototype.getPosition=function(){if(this.bufferIndex===-1||this.buffers[this.bufferIndex]===null)throw"Error accessing position in the MultiBufferStream";return this.buffers[this.bufferIndex].fileStart+this.position},l.prototype.getLength=function(){return this.byteLength},l.prototype.getEndPosition=function(){if(this.bufferIndex===-1||this.buffers[this.bufferIndex]===null)throw"Error accessing position in the MultiBufferStream";return this.buffers[this.bufferIndex].fileStart+this.byteLength},C.MultiBufferStream=l;var c=function(){var t=3,e=4,r=5,s=6,a=[];a[t]="ES_Descriptor",a[e]="DecoderConfigDescriptor",a[r]="DecoderSpecificInfo",a[s]="SLConfigDescriptor",this.getDescriptorName=function(_){return a[_]};var u=this,p={};return this.parseOneDescriptor=function(_){var U=0,S,b,E;for(S=_.readUint8(),E=_.readUint8();E&128;)U=(U<<7)+(E&127),E=_.readUint8();return U=(U<<7)+(E&127),f.debug("MPEG4DescriptorParser","Found "+(a[S]||"Descriptor "+S)+", size "+U+" at position "+_.getPosition()),a[S]?b=new p[a[S]](U):b=new p.Descriptor(U),b.parse(_),b},p.Descriptor=function(_,U){this.tag=_,this.size=U,this.descs=[]},p.Descriptor.prototype.parse=function(_){this.data=_.readUint8Array(this.size)},p.Descriptor.prototype.findDescriptor=function(_){for(var U=0;U<this.descs.length;U++)if(this.descs[U].tag==_)return this.descs[U];return null},p.Descriptor.prototype.parseRemainingDescriptors=function(_){for(var U=_.position;_.position<U+this.size;){var S=u.parseOneDescriptor(_);this.descs.push(S)}},p.ES_Descriptor=function(_){p.Descriptor.call(this,t,_)},p.ES_Descriptor.prototype=new p.Descriptor,p.ES_Descriptor.prototype.parse=function(_){if(this.ES_ID=_.readUint16(),this.flags=_.readUint8(),this.size-=3,this.flags&128?(this.dependsOn_ES_ID=_.readUint16(),this.size-=2):this.dependsOn_ES_ID=0,this.flags&64){var U=_.readUint8();this.URL=_.readString(U),this.size-=U+1}else this.URL="";this.flags&32?(this.OCR_ES_ID=_.readUint16(),this.size-=2):this.OCR_ES_ID=0,this.parseRemainingDescriptors(_)},p.ES_Descriptor.prototype.getOTI=function(_){var U=this.findDescriptor(e);return U?U.oti:0},p.ES_Descriptor.prototype.getAudioConfig=function(_){var U=this.findDescriptor(e);if(!U)return null;var S=U.findDescriptor(r);if(S&&S.data){var b=(S.data[0]&248)>>3;return b===31&&S.data.length>=2&&(b=32+((S.data[0]&7)<<3)+((S.data[1]&224)>>5)),b}else return null},p.DecoderConfigDescriptor=function(_){p.Descriptor.call(this,e,_)},p.DecoderConfigDescriptor.prototype=new p.Descriptor,p.DecoderConfigDescriptor.prototype.parse=function(_){this.oti=_.readUint8(),this.streamType=_.readUint8(),this.upStream=(this.streamType>>1&1)!==0,this.streamType=this.streamType>>>2,this.bufferSize=_.readUint24(),this.maxBitrate=_.readUint32(),this.avgBitrate=_.readUint32(),this.size-=13,this.parseRemainingDescriptors(_)},p.DecoderSpecificInfo=function(_){p.Descriptor.call(this,r,_)},p.DecoderSpecificInfo.prototype=new p.Descriptor,p.SLConfigDescriptor=function(_){p.Descriptor.call(this,s,_)},p.SLConfigDescriptor.prototype=new p.Descriptor,this};C.MPEG4DescriptorParser=c;var n={ERR_INVALID_DATA:-1,ERR_NOT_ENOUGH_DATA:0,OK:1,BASIC_BOXES:["mdat","idat","free","skip","meco","strk"],FULL_BOXES:["hmhd","nmhd","iods","xml ","bxml","ipro","mere"],CONTAINER_BOXES:[["moov",["trak","pssh"]],["trak"],["edts"],["mdia"],["minf"],["dinf"],["stbl",["sgpd","sbgp"]],["mvex",["trex"]],["moof",["traf"]],["traf",["trun","sgpd","sbgp"]],["vttc"],["tref"],["iref"],["mfra",["tfra"]],["meco"],["hnti"],["hinf"],["strk"],["strd"],["sinf"],["rinf"],["schi"],["trgr"],["udta",["kind"]],["iprp",["ipma"]],["ipco"],["grpl"],["j2kH"],["etyp",["tyco"]]],boxCodes:[],fullBoxCodes:[],containerBoxCodes:[],sampleEntryCodes:{},sampleGroupEntryCodes:[],trackGroupTypes:[],UUIDBoxes:{},UUIDs:[],initialize:function(){n.FullBox.prototype=new n.Box,n.ContainerBox.prototype=new n.Box,n.SampleEntry.prototype=new n.Box,n.TrackGroupTypeBox.prototype=new n.FullBox,n.BASIC_BOXES.forEach(function(t){n.createBoxCtor(t)}),n.FULL_BOXES.forEach(function(t){n.createFullBoxCtor(t)}),n.CONTAINER_BOXES.forEach(function(t){n.createContainerBoxCtor(t[0],null,t[1])})},Box:function(t,e,r){this.type=t,this.size=e,this.uuid=r},FullBox:function(t,e,r){n.Box.call(this,t,e,r),this.flags=0,this.version=0},ContainerBox:function(t,e,r){n.Box.call(this,t,e,r),this.boxes=[]},SampleEntry:function(t,e,r,s){n.ContainerBox.call(this,t,e),this.hdr_size=r,this.start=s},SampleGroupEntry:function(t){this.grouping_type=t},TrackGroupTypeBox:function(t,e){n.FullBox.call(this,t,e)},createBoxCtor:function(t,e){n.boxCodes.push(t),n[t+"Box"]=function(r){n.Box.call(this,t,r)},n[t+"Box"].prototype=new n.Box,e&&(n[t+"Box"].prototype.parse=e)},createFullBoxCtor:function(t,e){n[t+"Box"]=function(r){n.FullBox.call(this,t,r)},n[t+"Box"].prototype=new n.FullBox,n[t+"Box"].prototype.parse=function(r){this.parseFullHeader(r),e&&e.call(this,r)}},addSubBoxArrays:function(t){if(t){this.subBoxNames=t;for(var e=t.length,r=0;r<e;r++)this[t[r]+"s"]=[]}},createContainerBoxCtor:function(t,e,r){n[t+"Box"]=function(s){n.ContainerBox.call(this,t,s),n.addSubBoxArrays.call(this,r)},n[t+"Box"].prototype=new n.ContainerBox,e&&(n[t+"Box"].prototype.parse=e)},createMediaSampleEntryCtor:function(t,e,r){n.sampleEntryCodes[t]=[],n[t+"SampleEntry"]=function(s,a){n.SampleEntry.call(this,s,a),n.addSubBoxArrays.call(this,r)},n[t+"SampleEntry"].prototype=new n.SampleEntry,e&&(n[t+"SampleEntry"].prototype.parse=e)},createSampleEntryCtor:function(t,e,r,s){n.sampleEntryCodes[t].push(e),n[e+"SampleEntry"]=function(a){n[t+"SampleEntry"].call(this,e,a),n.addSubBoxArrays.call(this,s)},n[e+"SampleEntry"].prototype=new n[t+"SampleEntry"],r&&(n[e+"SampleEntry"].prototype.parse=r)},createEncryptedSampleEntryCtor:function(t,e,r){n.createSampleEntryCtor.call(this,t,e,r,["sinf"])},createSampleGroupCtor:function(t,e){n[t+"SampleGroupEntry"]=function(r){n.SampleGroupEntry.call(this,t,r)},n[t+"SampleGroupEntry"].prototype=new n.SampleGroupEntry,e&&(n[t+"SampleGroupEntry"].prototype.parse=e)},createTrackGroupCtor:function(t,e){n[t+"TrackGroupTypeBox"]=function(r){n.TrackGroupTypeBox.call(this,t,r)},n[t+"TrackGroupTypeBox"].prototype=new n.TrackGroupTypeBox,e&&(n[t+"TrackGroupTypeBox"].prototype.parse=e)},createUUIDBox:function(t,e,r,s){n.UUIDs.push(t),n.UUIDBoxes[t]=function(a){e?n.FullBox.call(this,"uuid",a,t):r?n.ContainerBox.call(this,"uuid",a,t):n.Box.call(this,"uuid",a,t)},n.UUIDBoxes[t].prototype=e?new n.FullBox:r?new n.ContainerBox:new n.Box,s&&(e?n.UUIDBoxes[t].prototype.parse=function(a){this.parseFullHeader(a),s&&s.call(this,a)}:n.UUIDBoxes[t].prototype.parse=s)}};n.initialize(),n.TKHD_FLAG_ENABLED=1,n.TKHD_FLAG_IN_MOVIE=2,n.TKHD_FLAG_IN_PREVIEW=4,n.TFHD_FLAG_BASE_DATA_OFFSET=1,n.TFHD_FLAG_SAMPLE_DESC=2,n.TFHD_FLAG_SAMPLE_DUR=8,n.TFHD_FLAG_SAMPLE_SIZE=16,n.TFHD_FLAG_SAMPLE_FLAGS=32,n.TFHD_FLAG_DUR_EMPTY=65536,n.TFHD_FLAG_DEFAULT_BASE_IS_MOOF=131072,n.TRUN_FLAGS_DATA_OFFSET=1,n.TRUN_FLAGS_FIRST_FLAG=4,n.TRUN_FLAGS_DURATION=256,n.TRUN_FLAGS_SIZE=512,n.TRUN_FLAGS_FLAGS=1024,n.TRUN_FLAGS_CTS_OFFSET=2048,n.Box.prototype.add=function(t){return this.addBox(new n[t+"Box"])},n.Box.prototype.addBox=function(t){return this.boxes.push(t),this[t.type+"s"]?this[t.type+"s"].push(t):this[t.type]=t,t},n.Box.prototype.set=function(t,e){return this[t]=e,this},n.Box.prototype.addEntry=function(t,e){var r=e||"entries";return this[r]||(this[r]=[]),this[r].push(t),this},C.BoxParser=n,n.parseUUID=function(t){return n.parseHex16(t)},n.parseHex16=function(t){for(var e="",r=0;r<16;r++){var s=t.readUint8().toString(16);e+=s.length===1?"0"+s:s}return e},n.parseOneBox=function(t,e,r){var s,a=t.getPosition(),u=0,p,_;if(t.getEndPosition()-a<8)return f.debug("BoxParser","Not enough data in stream to parse the type and size of the box"),{code:n.ERR_NOT_ENOUGH_DATA};if(r&&r<8)return f.debug("BoxParser","Not enough bytes left in the parent box to parse a new box"),{code:n.ERR_NOT_ENOUGH_DATA};var U=t.readUint32(),S=t.readString(4),b=S;if(f.debug("BoxParser","Found box of type '"+S+"' and size "+U+" at position "+a),u=8,S=="uuid"){if(t.getEndPosition()-t.getPosition()<16||r-u<16)return t.seek(a),f.debug("BoxParser","Not enough bytes left in the parent box to parse a UUID box"),{code:n.ERR_NOT_ENOUGH_DATA};_=n.parseUUID(t),u+=16,b=_}if(U==1){if(t.getEndPosition()-t.getPosition()<8||r&&r-u<8)return t.seek(a),f.warn("BoxParser",'Not enough data in stream to parse the extended size of the "'+S+'" box'),{code:n.ERR_NOT_ENOUGH_DATA};U=t.readUint64(),u+=8}else if(U===0){if(r)U=r;else if(S!=="mdat")return f.error("BoxParser","Unlimited box size not supported for type: '"+S+"'"),s=new n.Box(S,U),{code:n.OK,box:s,size:s.size}}return U!==0&&U<u?(f.error("BoxParser","Box of type "+S+" has an invalid size "+U+" (too small to be a box)"),{code:n.ERR_NOT_ENOUGH_DATA,type:S,size:U,hdr_size:u,start:a}):U!==0&&r&&U>r?(f.error("BoxParser","Box of type '"+S+"' has a size "+U+" greater than its container size "+r),{code:n.ERR_NOT_ENOUGH_DATA,type:S,size:U,hdr_size:u,start:a}):U!==0&&a+U>t.getEndPosition()?(t.seek(a),f.info("BoxParser","Not enough data in stream to parse the entire '"+S+"' box"),{code:n.ERR_NOT_ENOUGH_DATA,type:S,size:U,hdr_size:u,start:a}):e?{code:n.OK,type:S,size:U,hdr_size:u,start:a}:(n[S+"Box"]?s=new n[S+"Box"](U):S!=="uuid"?(f.warn("BoxParser","Unknown box type: '"+S+"'"),s=new n.Box(S,U),s.has_unparsed_data=!0):n.UUIDBoxes[_]?s=new n.UUIDBoxes[_](U):(f.warn("BoxParser","Unknown uuid type: '"+_+"'"),s=new n.Box(S,U),s.uuid=_,s.has_unparsed_data=!0),s.hdr_size=u,s.start=a,s.write===n.Box.prototype.write&&s.type!=="mdat"&&(f.info("BoxParser","'"+b+"' box writing not yet implemented, keeping unparsed data in memory for later write"),s.parseDataAndRewind(t)),s.parse(t),p=t.getPosition()-(s.start+s.size),p<0?(f.warn("BoxParser","Parsing of box '"+b+"' did not read the entire indicated box data size (missing "+-p+" bytes), seeking forward"),t.seek(s.start+s.size)):p>0&&(f.error("BoxParser","Parsing of box '"+b+"' read "+p+" more bytes than the indicated box data size, seeking backwards"),s.size!==0&&t.seek(s.start+s.size)),{code:n.OK,box:s,size:s.size})},n.Box.prototype.parse=function(t){this.type!="mdat"?this.data=t.readUint8Array(this.size-this.hdr_size):this.size===0?t.seek(t.getEndPosition()):t.seek(this.start+this.size)},n.Box.prototype.parseDataAndRewind=function(t){this.data=t.readUint8Array(this.size-this.hdr_size),t.position-=this.size-this.hdr_size},n.FullBox.prototype.parseDataAndRewind=function(t){this.parseFullHeader(t),this.data=t.readUint8Array(this.size-this.hdr_size),this.hdr_size-=4,t.position-=this.size-this.hdr_size},n.FullBox.prototype.parseFullHeader=function(t){this.version=t.readUint8(),this.flags=t.readUint24(),this.hdr_size+=4},n.FullBox.prototype.parse=function(t){this.parseFullHeader(t),this.data=t.readUint8Array(this.size-this.hdr_size)},n.ContainerBox.prototype.parse=function(t){for(var e,r;t.getPosition()<this.start+this.size;)if(e=n.parseOneBox(t,!1,this.size-(t.getPosition()-this.start)),e.code===n.OK)if(r=e.box,this.boxes.push(r),this.subBoxNames&&this.subBoxNames.indexOf(r.type)!=-1)this[this.subBoxNames[this.subBoxNames.indexOf(r.type)]+"s"].push(r);else{var s=r.type!=="uuid"?r.type:r.uuid;this[s]?f.warn("Box of type "+s+" already stored in field of this type"):this[s]=r}else return},n.Box.prototype.parseLanguage=function(t){this.language=t.readUint16();var e=[];e[0]=this.language>>10&31,e[1]=this.language>>5&31,e[2]=this.language&31,this.languageString=String.fromCharCode(e[0]+96,e[1]+96,e[2]+96)},n.SAMPLE_ENTRY_TYPE_VISUAL="Visual",n.SAMPLE_ENTRY_TYPE_AUDIO="Audio",n.SAMPLE_ENTRY_TYPE_HINT="Hint",n.SAMPLE_ENTRY_TYPE_METADATA="Metadata",n.SAMPLE_ENTRY_TYPE_SUBTITLE="Subtitle",n.SAMPLE_ENTRY_TYPE_SYSTEM="System",n.SAMPLE_ENTRY_TYPE_TEXT="Text",n.SampleEntry.prototype.parseHeader=function(t){t.readUint8Array(6),this.data_reference_index=t.readUint16(),this.hdr_size+=8},n.SampleEntry.prototype.parse=function(t){this.parseHeader(t),this.data=t.readUint8Array(this.size-this.hdr_size)},n.SampleEntry.prototype.parseDataAndRewind=function(t){this.parseHeader(t),this.data=t.readUint8Array(this.size-this.hdr_size),this.hdr_size-=8,t.position-=this.size-this.hdr_size},n.SampleEntry.prototype.parseFooter=function(t){n.ContainerBox.prototype.parse.call(this,t)},n.createMediaSampleEntryCtor(n.SAMPLE_ENTRY_TYPE_HINT),n.createMediaSampleEntryCtor(n.SAMPLE_ENTRY_TYPE_METADATA),n.createMediaSampleEntryCtor(n.SAMPLE_ENTRY_TYPE_SUBTITLE),n.createMediaSampleEntryCtor(n.SAMPLE_ENTRY_TYPE_SYSTEM),n.createMediaSampleEntryCtor(n.SAMPLE_ENTRY_TYPE_TEXT),n.createMediaSampleEntryCtor(n.SAMPLE_ENTRY_TYPE_VISUAL,function(t){var e;this.parseHeader(t),t.readUint16(),t.readUint16(),t.readUint32Array(3),this.width=t.readUint16(),this.height=t.readUint16(),this.horizresolution=t.readUint32(),this.vertresolution=t.readUint32(),t.readUint32(),this.frame_count=t.readUint16(),e=Math.min(31,t.readUint8()),this.compressorname=t.readString(e),e<31&&t.readString(31-e),this.depth=t.readUint16(),t.readUint16(),this.parseFooter(t)}),n.createMediaSampleEntryCtor(n.SAMPLE_ENTRY_TYPE_AUDIO,function(t){this.parseHeader(t),t.readUint32Array(2),this.channel_count=t.readUint16(),this.samplesize=t.readUint16(),t.readUint16(),t.readUint16(),this.samplerate=t.readUint32()/65536,this.parseFooter(t)}),n.createSampleEntryCtor(n.SAMPLE_ENTRY_TYPE_VISUAL,"avc1"),n.createSampleEntryCtor(n.SAMPLE_ENTRY_TYPE_VISUAL,"avc2"),n.createSampleEntryCtor(n.SAMPLE_ENTRY_TYPE_VISUAL,"avc3"),n.createSampleEntryCtor(n.SAMPLE_ENTRY_TYPE_VISUAL,"avc4"),n.createSampleEntryCtor(n.SAMPLE_ENTRY_TYPE_VISUAL,"av01"),n.createSampleEntryCtor(n.SAMPLE_ENTRY_TYPE_VISUAL,"dav1"),n.createSampleEntryCtor(n.SAMPLE_ENTRY_TYPE_VISUAL,"hvc1"),n.createSampleEntryCtor(n.SAMPLE_ENTRY_TYPE_VISUAL,"hev1"),n.createSampleEntryCtor(n.SAMPLE_ENTRY_TYPE_VISUAL,"hvt1"),n.createSampleEntryCtor(n.SAMPLE_ENTRY_TYPE_VISUAL,"lhe1"),n.createSampleEntryCtor(n.SAMPLE_ENTRY_TYPE_VISUAL,"dvh1"),n.createSampleEntryCtor(n.SAMPLE_ENTRY_TYPE_VISUAL,"dvhe"),n.createSampleEntryCtor(n.SAMPLE_ENTRY_TYPE_VISUAL,"vvc1"),n.createSampleEntryCtor(n.SAMPLE_ENTRY_TYPE_VISUAL,"vvi1"),n.createSampleEntryCtor(n.SAMPLE_ENTRY_TYPE_VISUAL,"vvs1"),n.createSampleEntryCtor(n.SAMPLE_ENTRY_TYPE_VISUAL,"vvcN"),n.createSampleEntryCtor(n.SAMPLE_ENTRY_TYPE_VISUAL,"vp08"),n.createSampleEntryCtor(n.SAMPLE_ENTRY_TYPE_VISUAL,"vp09"),n.createSampleEntryCtor(n.SAMPLE_ENTRY_TYPE_VISUAL,"avs3"),n.createSampleEntryCtor(n.SAMPLE_ENTRY_TYPE_VISUAL,"j2ki"),n.createSampleEntryCtor(n.SAMPLE_ENTRY_TYPE_VISUAL,"mjp2"),n.createSampleEntryCtor(n.SAMPLE_ENTRY_TYPE_VISUAL,"mjpg"),n.createSampleEntryCtor(n.SAMPLE_ENTRY_TYPE_VISUAL,"uncv"),n.createSampleEntryCtor(n.SAMPLE_ENTRY_TYPE_AUDIO,"mp4a"),n.createSampleEntryCtor(n.SAMPLE_ENTRY_TYPE_AUDIO,"ac-3"),n.createSampleEntryCtor(n.SAMPLE_ENTRY_TYPE_AUDIO,"ac-4"),n.createSampleEntryCtor(n.SAMPLE_ENTRY_TYPE_AUDIO,"ec-3"),n.createSampleEntryCtor(n.SAMPLE_ENTRY_TYPE_AUDIO,"Opus"),n.createSampleEntryCtor(n.SAMPLE_ENTRY_TYPE_AUDIO,"mha1"),n.createSampleEntryCtor(n.SAMPLE_ENTRY_TYPE_AUDIO,"mha2"),n.createSampleEntryCtor(n.SAMPLE_ENTRY_TYPE_AUDIO,"mhm1"),n.createSampleEntryCtor(n.SAMPLE_ENTRY_TYPE_AUDIO,"mhm2"),n.createSampleEntryCtor(n.SAMPLE_ENTRY_TYPE_AUDIO,"fLaC"),n.createEncryptedSampleEntryCtor(n.SAMPLE_ENTRY_TYPE_VISUAL,"encv"),n.createEncryptedSampleEntryCtor(n.SAMPLE_ENTRY_TYPE_AUDIO,"enca"),n.createEncryptedSampleEntryCtor(n.SAMPLE_ENTRY_TYPE_SUBTITLE,"encu"),n.createEncryptedSampleEntryCtor(n.SAMPLE_ENTRY_TYPE_SYSTEM,"encs"),n.createEncryptedSampleEntryCtor(n.SAMPLE_ENTRY_TYPE_TEXT,"enct"),n.createEncryptedSampleEntryCtor(n.SAMPLE_ENTRY_TYPE_METADATA,"encm"),n.createBoxCtor("a1lx",function(t){var e=t.readUint8()&1,r=((e&1)+1)*16;this.layer_size=[];for(var s=0;s<3;s++)r==16?this.layer_size[s]=t.readUint16():this.layer_size[s]=t.readUint32()}),n.createBoxCtor("a1op",function(t){this.op_index=t.readUint8()}),n.createFullBoxCtor("auxC",function(t){this.aux_type=t.readCString();var e=this.size-this.hdr_size-(this.aux_type.length+1);this.aux_subtype=t.readUint8Array(e)}),n.createBoxCtor("av1C",function(t){var e=t.readUint8();if(e>>7&!1){f.error("av1C marker problem");return}if(this.version=e&127,this.version!==1){f.error("av1C version "+this.version+" not supported");return}if(e=t.readUint8(),this.seq_profile=e>>5&7,this.seq_level_idx_0=e&31,e=t.readUint8(),this.seq_tier_0=e>>7&1,this.high_bitdepth=e>>6&1,this.twelve_bit=e>>5&1,this.monochrome=e>>4&1,this.chroma_subsampling_x=e>>3&1,this.chroma_subsampling_y=e>>2&1,this.chroma_sample_position=e&3,e=t.readUint8(),this.reserved_1=e>>5&7,this.reserved_1!==0){f.error("av1C reserved_1 parsing problem");return}if(this.initial_presentation_delay_present=e>>4&1,this.initial_presentation_delay_present===1)this.initial_presentation_delay_minus_one=e&15;else if(this.reserved_2=e&15,this.reserved_2!==0){f.error("av1C reserved_2 parsing problem");return}var r=this.size-this.hdr_size-4;this.configOBUs=t.readUint8Array(r)}),n.createBoxCtor("avcC",function(t){var e,r;for(this.configurationVersion=t.readUint8(),this.AVCProfileIndication=t.readUint8(),this.profile_compatibility=t.readUint8(),this.AVCLevelIndication=t.readUint8(),this.lengthSizeMinusOne=t.readUint8()&3,this.nb_SPS_nalus=t.readUint8()&31,r=this.size-this.hdr_size-6,this.SPS=[],e=0;e<this.nb_SPS_nalus;e++)this.SPS[e]={},this.SPS[e].length=t.readUint16(),this.SPS[e].nalu=t.readUint8Array(this.SPS[e].length),r-=2+this.SPS[e].length;for(this.nb_PPS_nalus=t.readUint8(),r--,this.PPS=[],e=0;e<this.nb_PPS_nalus;e++)this.PPS[e]={},this.PPS[e].length=t.readUint16(),this.PPS[e].nalu=t.readUint8Array(this.PPS[e].length),r-=2+this.PPS[e].length;r>0&&(this.ext=t.readUint8Array(r))}),n.createBoxCtor("btrt",function(t){this.bufferSizeDB=t.readUint32(),this.maxBitrate=t.readUint32(),this.avgBitrate=t.readUint32()}),n.createFullBoxCtor("ccst",function(t){var e=t.readUint8();this.all_ref_pics_intra=(e&128)==128,this.intra_pred_used=(e&64)==64,this.max_ref_per_pic=(e&63)>>2,t.readUint24()}),n.createBoxCtor("cdef",function(t){var e;for(this.channel_count=t.readUint16(),this.channel_indexes=[],this.channel_types=[],this.channel_associations=[],e=0;e<this.channel_count;e++)this.channel_indexes.push(t.readUint16()),this.channel_types.push(t.readUint16()),this.channel_associations.push(t.readUint16())}),n.createBoxCtor("clap",function(t){this.cleanApertureWidthN=t.readUint32(),this.cleanApertureWidthD=t.readUint32(),this.cleanApertureHeightN=t.readUint32(),this.cleanApertureHeightD=t.readUint32(),this.horizOffN=t.readUint32(),this.horizOffD=t.readUint32(),this.vertOffN=t.readUint32(),this.vertOffD=t.readUint32()}),n.createBoxCtor("clli",function(t){this.max_content_light_level=t.readUint16(),this.max_pic_average_light_level=t.readUint16()}),n.createFullBoxCtor("cmex",function(t){this.flags&1&&(this.pos_x=t.readInt32()),this.flags&2&&(this.pos_y=t.readInt32()),this.flags&4&&(this.pos_z=t.readInt32()),this.flags&8&&(this.version==0?this.flags&16?(this.quat_x=t.readInt32(),this.quat_y=t.readInt32(),this.quat_z=t.readInt32()):(this.quat_x=t.readInt16(),this.quat_y=t.readInt16(),this.quat_z=t.readInt16()):this.version==1),this.flags&32&&(this.id=t.readUint32())}),n.createFullBoxCtor("cmin",function(t){this.focal_length_x=t.readInt32(),this.principal_point_x=t.readInt32(),this.principal_point_y=t.readInt32(),this.flags&1&&(this.focal_length_y=t.readInt32(),this.skew_factor=t.readInt32())}),n.createBoxCtor("cmpd",function(t){for(this.component_count=t.readUint32(),this.component_types=[],this.component_type_urls=[],i=0;i<this.component_count;i++){var e=t.readUint16();this.component_types.push(e),e>=32768&&this.component_type_urls.push(t.readCString())}}),n.createFullBoxCtor("co64",function(t){var e,r;if(e=t.readUint32(),this.chunk_offsets=[],this.version===0)for(r=0;r<e;r++)this.chunk_offsets.push(t.readUint64())}),n.createFullBoxCtor("CoLL",function(t){this.maxCLL=t.readUint16(),this.maxFALL=t.readUint16()}),n.createBoxCtor("colr",function(t){if(this.colour_type=t.readString(4),this.colour_type==="nclx"){this.colour_primaries=t.readUint16(),this.transfer_characteristics=t.readUint16(),this.matrix_coefficients=t.readUint16();var e=t.readUint8();this.full_range_flag=e>>7}else this.colour_type==="rICC"?this.ICC_profile=t.readUint8Array(this.size-4):this.colour_type==="prof"&&(this.ICC_profile=t.readUint8Array(this.size-4))}),n.createFullBoxCtor("cprt",function(t){this.parseLanguage(t),this.notice=t.readCString()}),n.createFullBoxCtor("cslg",function(t){this.version===0&&(this.compositionToDTSShift=t.readInt32(),this.leastDecodeToDisplayDelta=t.readInt32(),this.greatestDecodeToDisplayDelta=t.readInt32(),this.compositionStartTime=t.readInt32(),this.compositionEndTime=t.readInt32())}),n.createFullBoxCtor("ctts",function(t){var e,r;if(e=t.readUint32(),this.sample_counts=[],this.sample_offsets=[],this.version===0)for(r=0;r<e;r++){this.sample_counts.push(t.readUint32());var s=t.readInt32();s<0&&f.warn("BoxParser","ctts box uses negative values without using version 1"),this.sample_offsets.push(s)}else if(this.version==1)for(r=0;r<e;r++)this.sample_counts.push(t.readUint32()),this.sample_offsets.push(t.readInt32())}),n.createBoxCtor("dac3",function(t){var e=t.readUint8(),r=t.readUint8(),s=t.readUint8();this.fscod=e>>6,this.bsid=e>>1&31,this.bsmod=(e&1)<<2|r>>6&3,this.acmod=r>>3&7,this.lfeon=r>>2&1,this.bit_rate_code=r&3|s>>5&7}),n.createBoxCtor("dec3",function(t){var e=t.readUint16();this.data_rate=e>>3,this.num_ind_sub=e&7,this.ind_subs=[];for(var r=0;r<this.num_ind_sub+1;r++){var s={};this.ind_subs.push(s);var a=t.readUint8(),u=t.readUint8(),p=t.readUint8();s.fscod=a>>6,s.bsid=a>>1&31,s.bsmod=(a&1)<<4|u>>4&15,s.acmod=u>>1&7,s.lfeon=u&1,s.num_dep_sub=p>>1&15,s.num_dep_sub>0&&(s.chan_loc=(p&1)<<8|t.readUint8())}}),n.createFullBoxCtor("dfLa",function(t){var e=127,r=128,s=[],a=["STREAMINFO","PADDING","APPLICATION","SEEKTABLE","VORBIS_COMMENT","CUESHEET","PICTURE","RESERVED"];do{var u=t.readUint8(),p=Math.min(u&e,a.length-1);if(p?t.readUint8Array(t.readUint24()):(t.readUint8Array(13),this.samplerate=t.readUint32()>>12,t.readUint8Array(20)),s.push(a[p]),u&r)break}while(!0);this.numMetadataBlocks=s.length+" ("+s.join(", ")+")"}),n.createBoxCtor("dimm",function(t){this.bytessent=t.readUint64()}),n.createBoxCtor("dmax",function(t){this.time=t.readUint32()}),n.createBoxCtor("dmed",function(t){this.bytessent=t.readUint64()}),n.createBoxCtor("dOps",function(t){if(this.Version=t.readUint8(),this.OutputChannelCount=t.readUint8(),this.PreSkip=t.readUint16(),this.InputSampleRate=t.readUint32(),this.OutputGain=t.readInt16(),this.ChannelMappingFamily=t.readUint8(),this.ChannelMappingFamily!==0){this.StreamCount=t.readUint8(),this.CoupledCount=t.readUint8(),this.ChannelMapping=[];for(var e=0;e<this.OutputChannelCount;e++)this.ChannelMapping[e]=t.readUint8()}}),n.createFullBoxCtor("dref",function(t){var e,r;this.entries=[];for(var s=t.readUint32(),a=0;a<s;a++)if(e=n.parseOneBox(t,!1,this.size-(t.getPosition()-this.start)),e.code===n.OK)r=e.box,this.entries.push(r);else return}),n.createBoxCtor("drep",function(t){this.bytessent=t.readUint64()}),n.createFullBoxCtor("elng",function(t){this.extended_language=t.readString(this.size-this.hdr_size)}),n.createFullBoxCtor("elst",function(t){this.entries=[];for(var e=t.readUint32(),r=0;r<e;r++){var s={};this.entries.push(s),this.version===1?(s.segment_duration=t.readUint64(),s.media_time=t.readInt64()):(s.segment_duration=t.readUint32(),s.media_time=t.readInt32()),s.media_rate_integer=t.readInt16(),s.media_rate_fraction=t.readInt16()}}),n.createFullBoxCtor("emsg",function(t){this.version==1?(this.timescale=t.readUint32(),this.presentation_time=t.readUint64(),this.event_duration=t.readUint32(),this.id=t.readUint32(),this.scheme_id_uri=t.readCString(),this.value=t.readCString()):(this.scheme_id_uri=t.readCString(),this.value=t.readCString(),this.timescale=t.readUint32(),this.presentation_time_delta=t.readUint32(),this.event_duration=t.readUint32(),this.id=t.readUint32());var e=this.size-this.hdr_size-(4*4+(this.scheme_id_uri.length+1)+(this.value.length+1));this.version==1&&(e-=4),this.message_data=t.readUint8Array(e)}),n.createEntityToGroupCtor=function(t,e){n[t+"Box"]=function(r){n.FullBox.call(this,t,r)},n[t+"Box"].prototype=new n.FullBox,n[t+"Box"].prototype.parse=function(r){if(this.parseFullHeader(r),e)e.call(this,r);else for(this.group_id=r.readUint32(),this.num_entities_in_group=r.readUint32(),this.entity_ids=[],i=0;i<this.num_entities_in_group;i++){var s=r.readUint32();this.entity_ids.push(s)}}},n.createEntityToGroupCtor("aebr"),n.createEntityToGroupCtor("afbr"),n.createEntityToGroupCtor("albc"),n.createEntityToGroupCtor("altr"),n.createEntityToGroupCtor("brst"),n.createEntityToGroupCtor("dobr"),n.createEntityToGroupCtor("eqiv"),n.createEntityToGroupCtor("favc"),n.createEntityToGroupCtor("fobr"),n.createEntityToGroupCtor("iaug"),n.createEntityToGroupCtor("pano"),n.createEntityToGroupCtor("slid"),n.createEntityToGroupCtor("ster"),n.createEntityToGroupCtor("tsyn"),n.createEntityToGroupCtor("wbbr"),n.createEntityToGroupCtor("prgr"),n.createEntityToGroupCtor("pymd",function(t){this.group_id=t.readUint32(),this.num_entities_in_group=t.readUint32(),this.entity_ids=[];for(var e=0;e<this.num_entities_in_group;e++){var r=t.readUint32();this.entity_ids.push(r)}for(this.tile_size_x=t.readUint16(),this.tile_size_y=t.readUint16(),this.layer_binning=[],this.tiles_in_layer_column_minus1=[],this.tiles_in_layer_row_minus1=[],e=0;e<this.num_entities_in_group;e++)this.layer_binning[e]=t.readUint16(),this.tiles_in_layer_row_minus1[e]=t.readUint16(),this.tiles_in_layer_column_minus1[e]=t.readUint16()}),n.createFullBoxCtor("esds",function(t){var e=t.readUint8Array(this.size-this.hdr_size);if(typeof c<"u"){var r=new c;this.esd=r.parseOneDescriptor(new o(e.buffer,0,o.BIG_ENDIAN))}}),n.createBoxCtor("fiel",function(t){this.fieldCount=t.readUint8(),this.fieldOrdering=t.readUint8()}),n.createBoxCtor("frma",function(t){this.data_format=t.readString(4)}),n.createBoxCtor("ftyp",function(t){var e=this.size-this.hdr_size;this.major_brand=t.readString(4),this.minor_version=t.readUint32(),e-=8,this.compatible_brands=[];for(var r=0;e>=4;)this.compatible_brands[r]=t.readString(4),e-=4,r++}),n.createFullBoxCtor("hdlr",function(t){this.version===0&&(t.readUint32(),this.handler=t.readString(4),t.readUint32Array(3),this.name=t.readString(this.size-this.hdr_size-20),this.name[this.name.length-1]==="\\0"&&(this.name=this.name.slice(0,-1)))}),n.createBoxCtor("hvcC",function(t){var e,r,s,a;this.configurationVersion=t.readUint8(),a=t.readUint8(),this.general_profile_space=a>>6,this.general_tier_flag=(a&32)>>5,this.general_profile_idc=a&31,this.general_profile_compatibility=t.readUint32(),this.general_constraint_indicator=t.readUint8Array(6),this.general_level_idc=t.readUint8(),this.min_spatial_segmentation_idc=t.readUint16()&4095,this.parallelismType=t.readUint8()&3,this.chroma_format_idc=t.readUint8()&3,this.bit_depth_luma_minus8=t.readUint8()&7,this.bit_depth_chroma_minus8=t.readUint8()&7,this.avgFrameRate=t.readUint16(),a=t.readUint8(),this.constantFrameRate=a>>6,this.numTemporalLayers=(a&13)>>3,this.temporalIdNested=(a&4)>>2,this.lengthSizeMinusOne=a&3,this.nalu_arrays=[];var u=t.readUint8();for(e=0;e<u;e++){var p=[];this.nalu_arrays.push(p),a=t.readUint8(),p.completeness=(a&128)>>7,p.nalu_type=a&63;var _=t.readUint16();for(r=0;r<_;r++){var U={};p.push(U),s=t.readUint16(),U.data=t.readUint8Array(s)}}}),n.createFullBoxCtor("iinf",function(t){var e;this.version===0?this.entry_count=t.readUint16():this.entry_count=t.readUint32(),this.item_infos=[];for(var r=0;r<this.entry_count;r++)if(e=n.parseOneBox(t,!1,this.size-(t.getPosition()-this.start)),e.code===n.OK)e.box.type!=="infe"&&f.error("BoxParser","Expected 'infe' box, got "+e.box.type),this.item_infos[r]=e.box;else return}),n.createFullBoxCtor("iloc",function(t){var e;e=t.readUint8(),this.offset_size=e>>4&15,this.length_size=e&15,e=t.readUint8(),this.base_offset_size=e>>4&15,this.version===1||this.version===2?this.index_size=e&15:this.index_size=0,this.items=[];var r=0;if(this.version<2)r=t.readUint16();else if(this.version===2)r=t.readUint32();else throw"version of iloc box not supported";for(var s=0;s<r;s++){var a={};if(this.items.push(a),this.version<2)a.item_ID=t.readUint16();else if(this.version===2)a.item_ID=t.readUint32();else throw"version of iloc box not supported";switch(this.version===1||this.version===2?a.construction_method=t.readUint16()&15:a.construction_method=0,a.data_reference_index=t.readUint16(),this.base_offset_size){case 0:a.base_offset=0;break;case 4:a.base_offset=t.readUint32();break;case 8:a.base_offset=t.readUint64();break;default:throw"Error reading base offset size"}var u=t.readUint16();a.extents=[];for(var p=0;p<u;p++){var _={};if(a.extents.push(_),this.version===1||this.version===2)switch(this.index_size){case 0:_.extent_index=0;break;case 4:_.extent_index=t.readUint32();break;case 8:_.extent_index=t.readUint64();break;default:throw"Error reading extent index"}switch(this.offset_size){case 0:_.extent_offset=0;break;case 4:_.extent_offset=t.readUint32();break;case 8:_.extent_offset=t.readUint64();break;default:throw"Error reading extent index"}switch(this.length_size){case 0:_.extent_length=0;break;case 4:_.extent_length=t.readUint32();break;case 8:_.extent_length=t.readUint64();break;default:throw"Error reading extent index"}}}}),n.createBoxCtor("imir",function(t){var e=t.readUint8();this.reserved=e>>7,this.axis=e&1}),n.createFullBoxCtor("infe",function(t){if((this.version===0||this.version===1)&&(this.item_ID=t.readUint16(),this.item_protection_index=t.readUint16(),this.item_name=t.readCString(),this.content_type=t.readCString(),this.content_encoding=t.readCString()),this.version===1){this.extension_type=t.readString(4),f.warn("BoxParser","Cannot parse extension type"),t.seek(this.start+this.size);return}this.version>=2&&(this.version===2?this.item_ID=t.readUint16():this.version===3&&(this.item_ID=t.readUint32()),this.item_protection_index=t.readUint16(),this.item_type=t.readString(4),this.item_name=t.readCString(),this.item_type==="mime"?(this.content_type=t.readCString(),this.content_encoding=t.readCString()):this.item_type==="uri "&&(this.item_uri_type=t.readCString()))}),n.createFullBoxCtor("ipma",function(t){var e,r;for(entry_count=t.readUint32(),this.associations=[],e=0;e<entry_count;e++){var s={};this.associations.push(s),this.version<1?s.id=t.readUint16():s.id=t.readUint32();var a=t.readUint8();for(s.props=[],r=0;r<a;r++){var u=t.readUint8(),p={};s.props.push(p),p.essential=(u&128)>>7===1,this.flags&1?p.property_index=(u&127)<<8|t.readUint8():p.property_index=u&127}}}),n.createFullBoxCtor("iref",function(t){var e,r;for(this.references=[];t.getPosition()<this.start+this.size;)if(e=n.parseOneBox(t,!0,this.size-(t.getPosition()-this.start)),e.code===n.OK)this.version===0?r=new n.SingleItemTypeReferenceBox(e.type,e.size,e.hdr_size,e.start):r=new n.SingleItemTypeReferenceBoxLarge(e.type,e.size,e.hdr_size,e.start),r.write===n.Box.prototype.write&&r.type!=="mdat"&&(f.warn("BoxParser",r.type+" box writing not yet implemented, keeping unparsed data in memory for later write"),r.parseDataAndRewind(t)),r.parse(t),this.references.push(r);else return}),n.createBoxCtor("irot",function(t){this.angle=t.readUint8()&3}),n.createFullBoxCtor("ispe",function(t){this.image_width=t.readUint32(),this.image_height=t.readUint32()}),n.createFullBoxCtor("kind",function(t){this.schemeURI=t.readCString(),this.value=t.readCString()}),n.createFullBoxCtor("leva",function(t){var e=t.readUint8();this.levels=[];for(var r=0;r<e;r++){var s={};this.levels[r]=s,s.track_ID=t.readUint32();var a=t.readUint8();switch(s.padding_flag=a>>7,s.assignment_type=a&127,s.assignment_type){case 0:s.grouping_type=t.readString(4);break;case 1:s.grouping_type=t.readString(4),s.grouping_type_parameter=t.readUint32();break;case 2:break;case 3:break;case 4:s.sub_track_id=t.readUint32();break;default:f.warn("BoxParser","Unknown leva assignement type")}}}),n.createBoxCtor("lhvC",function(t){var e,r,s;this.configurationVersion=t.readUint8(),this.min_spatial_segmentation_idc=t.readUint16()&4095,this.parallelismType=t.readUint8()&3,s=t.readUint8(),this.numTemporalLayers=(s&13)>>3,this.temporalIdNested=(s&4)>>2,this.lengthSizeMinusOne=s&3,this.nalu_arrays=[];var a=t.readUint8();for(e=0;e<a;e++){var u=[];this.nalu_arrays.push(u),s=t.readUint8(),u.completeness=(s&128)>>7,u.nalu_type=s&63;var p=t.readUint16();for(r=0;r<p;r++){var _={};u.push(_);var U=t.readUint16();_.data=t.readUint8Array(U)}}}),n.createBoxCtor("lsel",function(t){this.layer_id=t.readUint16()}),n.createBoxCtor("maxr",function(t){this.period=t.readUint32(),this.bytes=t.readUint32()});function g(t,e){this.x=t,this.y=e}g.prototype.toString=function(){return"("+this.x+","+this.y+")"},n.createBoxCtor("mdcv",function(t){this.display_primaries=[],this.display_primaries[0]=new g(t.readUint16(),t.readUint16()),this.display_primaries[1]=new g(t.readUint16(),t.readUint16()),this.display_primaries[2]=new g(t.readUint16(),t.readUint16()),this.white_point=new g(t.readUint16(),t.readUint16()),this.max_display_mastering_luminance=t.readUint32(),this.min_display_mastering_luminance=t.readUint32()}),n.createFullBoxCtor("mdhd",function(t){this.version==1?(this.creation_time=t.readUint64(),this.modification_time=t.readUint64(),this.timescale=t.readUint32(),this.duration=t.readUint64()):(this.creation_time=t.readUint32(),this.modification_time=t.readUint32(),this.timescale=t.readUint32(),this.duration=t.readUint32()),this.parseLanguage(t),t.readUint16()}),n.createFullBoxCtor("mehd",function(t){this.flags&1&&(f.warn("BoxParser","mehd box incorrectly uses flags set to 1, converting version to 1"),this.version=1),this.version==1?this.fragment_duration=t.readUint64():this.fragment_duration=t.readUint32()}),n.createFullBoxCtor("meta",function(t){this.boxes=[],n.ContainerBox.prototype.parse.call(this,t)}),n.createFullBoxCtor("mfhd",function(t){this.sequence_number=t.readUint32()}),n.createFullBoxCtor("mfro",function(t){this._size=t.readUint32()}),n.createFullBoxCtor("mskC",function(t){this.bits_per_pixel=t.readUint8()}),n.createFullBoxCtor("mvhd",function(t){this.version==1?(this.creation_time=t.readUint64(),this.modification_time=t.readUint64(),this.timescale=t.readUint32(),this.duration=t.readUint64()):(this.creation_time=t.readUint32(),this.modification_time=t.readUint32(),this.timescale=t.readUint32(),this.duration=t.readUint32()),this.rate=t.readUint32(),this.volume=t.readUint16()>>8,t.readUint16(),t.readUint32Array(2),this.matrix=t.readUint32Array(9),t.readUint32Array(6),this.next_track_id=t.readUint32()}),n.createBoxCtor("npck",function(t){this.packetssent=t.readUint32()}),n.createBoxCtor("nump",function(t){this.packetssent=t.readUint64()}),n.createFullBoxCtor("padb",function(t){var e=t.readUint32();this.padbits=[];for(var r=0;r<Math.floor((e+1)/2);r++)this.padbits=t.readUint8()}),n.createBoxCtor("pasp",function(t){this.hSpacing=t.readUint32(),this.vSpacing=t.readUint32()}),n.createBoxCtor("payl",function(t){this.text=t.readString(this.size-this.hdr_size)}),n.createBoxCtor("payt",function(t){this.payloadID=t.readUint32();var e=t.readUint8();this.rtpmap_string=t.readString(e)}),n.createFullBoxCtor("pdin",function(t){var e=(this.size-this.hdr_size)/8;this.rate=[],this.initial_delay=[];for(var r=0;r<e;r++)this.rate[r]=t.readUint32(),this.initial_delay[r]=t.readUint32()}),n.createFullBoxCtor("pitm",function(t){this.version===0?this.item_id=t.readUint16():this.item_id=t.readUint32()}),n.createFullBoxCtor("pixi",function(t){var e;for(this.num_channels=t.readUint8(),this.bits_per_channels=[],e=0;e<this.num_channels;e++)this.bits_per_channels[e]=t.readUint8()}),n.createBoxCtor("pmax",function(t){this.bytes=t.readUint32()}),n.createFullBoxCtor("prdi",function(t){if(this.step_count=t.readUint16(),this.item_count=[],this.flags&2)for(var e=0;e<this.step_count;e++)this.item_count[e]=t.readUint16()}),n.createFullBoxCtor("prft",function(t){this.ref_track_id=t.readUint32(),this.ntp_timestamp=t.readUint64(),this.version===0?this.media_time=t.readUint32():this.media_time=t.readUint64()}),n.createFullBoxCtor("pssh",function(t){if(this.system_id=n.parseHex16(t),this.version>0){var e=t.readUint32();this.kid=[];for(var r=0;r<e;r++)this.kid[r]=n.parseHex16(t)}var s=t.readUint32();s>0&&(this.data=t.readUint8Array(s))}),n.createFullBoxCtor("clef",function(t){this.width=t.readUint32(),this.height=t.readUint32()}),n.createFullBoxCtor("enof",function(t){this.width=t.readUint32(),this.height=t.readUint32()}),n.createFullBoxCtor("prof",function(t){this.width=t.readUint32(),this.height=t.readUint32()}),n.createContainerBoxCtor("tapt",null,["clef","prof","enof"]),n.createBoxCtor("rtp ",function(t){this.descriptionformat=t.readString(4),this.sdptext=t.readString(this.size-this.hdr_size-4)}),n.createFullBoxCtor("saio",function(t){this.flags&1&&(this.aux_info_type=t.readString(4),this.aux_info_type_parameter=t.readUint32());var e=t.readUint32();this.offset=[];for(var r=0;r<e;r++)this.version===0?this.offset[r]=t.readUint32():this.offset[r]=t.readUint64()}),n.createFullBoxCtor("saiz",function(t){if(this.flags&1&&(this.aux_info_type=t.readString(4),this.aux_info_type_parameter=t.readUint32()),this.default_sample_info_size=t.readUint8(),this.sample_count=t.readUint32(),this.sample_info_size=[],this.default_sample_info_size===0)for(var e=0;e<this.sample_count;e++)this.sample_info_size[e]=t.readUint8()}),n.createSampleEntryCtor(n.SAMPLE_ENTRY_TYPE_METADATA,"mett",function(t){this.parseHeader(t),this.content_encoding=t.readCString(),this.mime_format=t.readCString(),this.parseFooter(t)}),n.createSampleEntryCtor(n.SAMPLE_ENTRY_TYPE_METADATA,"metx",function(t){this.parseHeader(t),this.content_encoding=t.readCString(),this.namespace=t.readCString(),this.schema_location=t.readCString(),this.parseFooter(t)}),n.createSampleEntryCtor(n.SAMPLE_ENTRY_TYPE_SUBTITLE,"sbtt",function(t){this.parseHeader(t),this.content_encoding=t.readCString(),this.mime_format=t.readCString(),this.parseFooter(t)}),n.createSampleEntryCtor(n.SAMPLE_ENTRY_TYPE_SUBTITLE,"stpp",function(t){this.parseHeader(t),this.namespace=t.readCString(),this.schema_location=t.readCString(),this.auxiliary_mime_types=t.readCString(),this.parseFooter(t)}),n.createSampleEntryCtor(n.SAMPLE_ENTRY_TYPE_SUBTITLE,"stxt",function(t){this.parseHeader(t),this.content_encoding=t.readCString(),this.mime_format=t.readCString(),this.parseFooter(t)}),n.createSampleEntryCtor(n.SAMPLE_ENTRY_TYPE_SUBTITLE,"tx3g",function(t){this.parseHeader(t),this.displayFlags=t.readUint32(),this.horizontal_justification=t.readInt8(),this.vertical_justification=t.readInt8(),this.bg_color_rgba=t.readUint8Array(4),this.box_record=t.readInt16Array(4),this.style_record=t.readUint8Array(12),this.parseFooter(t)}),n.createSampleEntryCtor(n.SAMPLE_ENTRY_TYPE_METADATA,"wvtt",function(t){this.parseHeader(t),this.parseFooter(t)}),n.createSampleGroupCtor("alst",function(t){var e,r=t.readUint16();for(this.first_output_sample=t.readUint16(),this.sample_offset=[],e=0;e<r;e++)this.sample_offset[e]=t.readUint32();var s=this.description_length-4-4*r;for(this.num_output_samples=[],this.num_total_samples=[],e=0;e<s/4;e++)this.num_output_samples[e]=t.readUint16(),this.num_total_samples[e]=t.readUint16()}),n.createSampleGroupCtor("avll",function(t){this.layerNumber=t.readUint8(),this.accurateStatisticsFlag=t.readUint8(),this.avgBitRate=t.readUint16(),this.avgFrameRate=t.readUint16()}),n.createSampleGroupCtor("avss",function(t){this.subSequenceIdentifier=t.readUint16(),this.layerNumber=t.readUint8();var e=t.readUint8();this.durationFlag=e>>7,this.avgRateFlag=e>>6&1,this.durationFlag&&(this.duration=t.readUint32()),this.avgRateFlag&&(this.accurateStatisticsFlag=t.readUint8(),this.avgBitRate=t.readUint16(),this.avgFrameRate=t.readUint16()),this.dependency=[];for(var r=t.readUint8(),s=0;s<r;s++){var a={};this.dependency.push(a),a.subSeqDirectionFlag=t.readUint8(),a.layerNumber=t.readUint8(),a.subSequenceIdentifier=t.readUint16()}}),n.createSampleGroupCtor("dtrt",function(t){f.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}),n.createSampleGroupCtor("mvif",function(t){f.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}),n.createSampleGroupCtor("prol",function(t){this.roll_distance=t.readInt16()}),n.createSampleGroupCtor("rap ",function(t){var e=t.readUint8();this.num_leading_samples_known=e>>7,this.num_leading_samples=e&127}),n.createSampleGroupCtor("rash",function(t){if(this.operation_point_count=t.readUint16(),this.description_length!==2+(this.operation_point_count===1?2:this.operation_point_count*6)+9)f.warn("BoxParser","Mismatch in "+this.grouping_type+" sample group length"),this.data=t.readUint8Array(this.description_length-2);else{if(this.operation_point_count===1)this.target_rate_share=t.readUint16();else{this.target_rate_share=[],this.available_bitrate=[];for(var e=0;e<this.operation_point_count;e++)this.available_bitrate[e]=t.readUint32(),this.target_rate_share[e]=t.readUint16()}this.maximum_bitrate=t.readUint32(),this.minimum_bitrate=t.readUint32(),this.discard_priority=t.readUint8()}}),n.createSampleGroupCtor("roll",function(t){this.roll_distance=t.readInt16()}),n.SampleGroupEntry.prototype.parse=function(t){f.warn("BoxParser","Unknown Sample Group type: "+this.grouping_type),this.data=t.readUint8Array(this.description_length)},n.createSampleGroupCtor("scif",function(t){f.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}),n.createSampleGroupCtor("scnm",function(t){f.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}),n.createSampleGroupCtor("seig",function(t){this.reserved=t.readUint8();var e=t.readUint8();this.crypt_byte_block=e>>4,this.skip_byte_block=e&15,this.isProtected=t.readUint8(),this.Per_Sample_IV_Size=t.readUint8(),this.KID=n.parseHex16(t),this.constant_IV_size=0,this.constant_IV=0,this.isProtected===1&&this.Per_Sample_IV_Size===0&&(this.constant_IV_size=t.readUint8(),this.constant_IV=t.readUint8Array(this.constant_IV_size))}),n.createSampleGroupCtor("stsa",function(t){f.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}),n.createSampleGroupCtor("sync",function(t){var e=t.readUint8();this.NAL_unit_type=e&63}),n.createSampleGroupCtor("tele",function(t){var e=t.readUint8();this.level_independently_decodable=e>>7}),n.createSampleGroupCtor("tsas",function(t){f.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}),n.createSampleGroupCtor("tscl",function(t){f.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}),n.createSampleGroupCtor("vipr",function(t){f.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}),n.createFullBoxCtor("sbgp",function(t){this.grouping_type=t.readString(4),this.version===1?this.grouping_type_parameter=t.readUint32():this.grouping_type_parameter=0,this.entries=[];for(var e=t.readUint32(),r=0;r<e;r++){var s={};this.entries.push(s),s.sample_count=t.readInt32(),s.group_description_index=t.readInt32()}});function v(t,e){this.bad_pixel_row=t,this.bad_pixel_column=e}v.prototype.toString=function(){return"[row: "+this.bad_pixel_row+", column: "+this.bad_pixel_column+"]"},n.createFullBoxCtor("sbpm",function(t){var e;for(this.component_count=t.readUint16(),this.component_index=[],e=0;e<this.component_count;e++)this.component_index.push(t.readUint16());var r=t.readUint8();for(this.correction_applied=(r&128)==128,this.num_bad_rows=t.readUint32(),this.num_bad_cols=t.readUint32(),this.num_bad_pixels=t.readUint32(),this.bad_rows=[],this.bad_columns=[],this.bad_pixels=[],e=0;e<this.num_bad_rows;e++)this.bad_rows.push(t.readUint32());for(e=0;e<this.num_bad_cols;e++)this.bad_columns.push(t.readUint32());for(e=0;e<this.num_bad_pixels;e++){var s=t.readUint32(),a=t.readUint32();this.bad_pixels.push(new v(s,a))}}),n.createFullBoxCtor("schm",function(t){this.scheme_type=t.readString(4),this.scheme_version=t.readUint32(),this.flags&1&&(this.scheme_uri=t.readString(this.size-this.hdr_size-8))}),n.createBoxCtor("sdp ",function(t){this.sdptext=t.readString(this.size-this.hdr_size)}),n.createFullBoxCtor("sdtp",function(t){var e,r=this.size-this.hdr_size;this.is_leading=[],this.sample_depends_on=[],this.sample_is_depended_on=[],this.sample_has_redundancy=[];for(var s=0;s<r;s++)e=t.readUint8(),this.is_leading[s]=e>>6,this.sample_depends_on[s]=e>>4&3,this.sample_is_depended_on[s]=e>>2&3,this.sample_has_redundancy[s]=e&3}),n.createFullBoxCtor("senc"),n.createFullBoxCtor("sgpd",function(t){this.grouping_type=t.readString(4),f.debug("BoxParser","Found Sample Groups of type "+this.grouping_type),this.version===1?this.default_length=t.readUint32():this.default_length=0,this.version>=2&&(this.default_group_description_index=t.readUint32()),this.entries=[];for(var e=t.readUint32(),r=0;r<e;r++){var s;n[this.grouping_type+"SampleGroupEntry"]?s=new n[this.grouping_type+"SampleGroupEntry"](this.grouping_type):s=new n.SampleGroupEntry(this.grouping_type),this.entries.push(s),this.version===1?this.default_length===0?s.description_length=t.readUint32():s.description_length=this.default_length:s.description_length=this.default_length,s.write===n.SampleGroupEntry.prototype.write&&(f.info("BoxParser","SampleGroup for type "+this.grouping_type+" writing not yet implemented, keeping unparsed data in memory for later write"),s.data=t.readUint8Array(s.description_length),t.position-=s.description_length),s.parse(t)}}),n.createFullBoxCtor("sidx",function(t){this.reference_ID=t.readUint32(),this.timescale=t.readUint32(),this.version===0?(this.earliest_presentation_time=t.readUint32(),this.first_offset=t.readUint32()):(this.earliest_presentation_time=t.readUint64(),this.first_offset=t.readUint64()),t.readUint16(),this.references=[];for(var e=t.readUint16(),r=0;r<e;r++){var s={};this.references.push(s);var a=t.readUint32();s.reference_type=a>>31&1,s.referenced_size=a&2147483647,s.subsegment_duration=t.readUint32(),a=t.readUint32(),s.starts_with_SAP=a>>31&1,s.SAP_type=a>>28&7,s.SAP_delta_time=a&268435455}}),n.SingleItemTypeReferenceBox=function(t,e,r,s){n.Box.call(this,t,e),this.hdr_size=r,this.start=s},n.SingleItemTypeReferenceBox.prototype=new n.Box,n.SingleItemTypeReferenceBox.prototype.parse=function(t){this.from_item_ID=t.readUint16();var e=t.readUint16();this.references=[];for(var r=0;r<e;r++)this.references[r]={},this.references[r].to_item_ID=t.readUint16()},n.SingleItemTypeReferenceBoxLarge=function(t,e,r,s){n.Box.call(this,t,e),this.hdr_size=r,this.start=s},n.SingleItemTypeReferenceBoxLarge.prototype=new n.Box,n.SingleItemTypeReferenceBoxLarge.prototype.parse=function(t){this.from_item_ID=t.readUint32();var e=t.readUint16();this.references=[];for(var r=0;r<e;r++)this.references[r]={},this.references[r].to_item_ID=t.readUint32()},n.createFullBoxCtor("SmDm",function(t){this.primaryRChromaticity_x=t.readUint16(),this.primaryRChromaticity_y=t.readUint16(),this.primaryGChromaticity_x=t.readUint16(),this.primaryGChromaticity_y=t.readUint16(),this.primaryBChromaticity_x=t.readUint16(),this.primaryBChromaticity_y=t.readUint16(),this.whitePointChromaticity_x=t.readUint16(),this.whitePointChromaticity_y=t.readUint16(),this.luminanceMax=t.readUint32(),this.luminanceMin=t.readUint32()}),n.createFullBoxCtor("smhd",function(t){this.balance=t.readUint16(),t.readUint16()}),n.createFullBoxCtor("ssix",function(t){this.subsegments=[];for(var e=t.readUint32(),r=0;r<e;r++){var s={};this.subsegments.push(s),s.ranges=[];for(var a=t.readUint32(),u=0;u<a;u++){var p={};s.ranges.push(p),p.level=t.readUint8(),p.range_size=t.readUint24()}}}),n.createFullBoxCtor("stco",function(t){var e;if(e=t.readUint32(),this.chunk_offsets=[],this.version===0)for(var r=0;r<e;r++)this.chunk_offsets.push(t.readUint32())}),n.createFullBoxCtor("stdp",function(t){var e=(this.size-this.hdr_size)/2;this.priority=[];for(var r=0;r<e;r++)this.priority[r]=t.readUint16()}),n.createFullBoxCtor("sthd"),n.createFullBoxCtor("stri",function(t){this.switch_group=t.readUint16(),this.alternate_group=t.readUint16(),this.sub_track_id=t.readUint32();var e=(this.size-this.hdr_size-8)/4;this.attribute_list=[];for(var r=0;r<e;r++)this.attribute_list[r]=t.readUint32()}),n.createFullBoxCtor("stsc",function(t){var e,r;if(e=t.readUint32(),this.first_chunk=[],this.samples_per_chunk=[],this.sample_description_index=[],this.version===0)for(r=0;r<e;r++)this.first_chunk.push(t.readUint32()),this.samples_per_chunk.push(t.readUint32()),this.sample_description_index.push(t.readUint32())}),n.createFullBoxCtor("stsd",function(t){var e,r,s,a;for(this.entries=[],s=t.readUint32(),e=1;e<=s;e++)if(r=n.parseOneBox(t,!0,this.size-(t.getPosition()-this.start)),r.code===n.OK)n[r.type+"SampleEntry"]?(a=new n[r.type+"SampleEntry"](r.size),a.hdr_size=r.hdr_size,a.start=r.start):(f.warn("BoxParser","Unknown sample entry type: "+r.type),a=new n.SampleEntry(r.type,r.size,r.hdr_size,r.start)),a.write===n.SampleEntry.prototype.write&&(f.info("BoxParser","SampleEntry "+a.type+" box writing not yet implemented, keeping unparsed data in memory for later write"),a.parseDataAndRewind(t)),a.parse(t),this.entries.push(a);else return}),n.createFullBoxCtor("stsg",function(t){this.grouping_type=t.readUint32();var e=t.readUint16();this.group_description_index=[];for(var r=0;r<e;r++)this.group_description_index[r]=t.readUint32()}),n.createFullBoxCtor("stsh",function(t){var e,r;if(e=t.readUint32(),this.shadowed_sample_numbers=[],this.sync_sample_numbers=[],this.version===0)for(r=0;r<e;r++)this.shadowed_sample_numbers.push(t.readUint32()),this.sync_sample_numbers.push(t.readUint32())}),n.createFullBoxCtor("stss",function(t){var e,r;if(r=t.readUint32(),this.version===0)for(this.sample_numbers=[],e=0;e<r;e++)this.sample_numbers.push(t.readUint32())}),n.createFullBoxCtor("stsz",function(t){var e;if(this.sample_sizes=[],this.version===0)for(this.sample_size=t.readUint32(),this.sample_count=t.readUint32(),e=0;e<this.sample_count;e++)this.sample_size===0?this.sample_sizes.push(t.readUint32()):this.sample_sizes[e]=this.sample_size}),n.createFullBoxCtor("stts",function(t){var e,r,s;if(e=t.readUint32(),this.sample_counts=[],this.sample_deltas=[],this.version===0)for(r=0;r<e;r++)this.sample_counts.push(t.readUint32()),s=t.readInt32(),s<0&&(f.warn("BoxParser","File uses negative stts sample delta, using value 1 instead, sync may be lost!"),s=1),this.sample_deltas.push(s)}),n.createFullBoxCtor("stvi",function(t){var e=t.readUint32();this.single_view_allowed=e&3,this.stereo_scheme=t.readUint32();var r=t.readUint32();this.stereo_indication_type=t.readString(r);var s,a;for(this.boxes=[];t.getPosition()<this.start+this.size;)if(s=n.parseOneBox(t,!1,this.size-(t.getPosition()-this.start)),s.code===n.OK)a=s.box,this.boxes.push(a),this[a.type]=a;else return}),n.createBoxCtor("styp",function(t){n.ftypBox.prototype.parse.call(this,t)}),n.createFullBoxCtor("stz2",function(t){var e,r;if(this.sample_sizes=[],this.version===0)if(this.reserved=t.readUint24(),this.field_size=t.readUint8(),r=t.readUint32(),this.field_size===4)for(e=0;e<r;e+=2){var s=t.readUint8();this.sample_sizes[e]=s>>4&15,this.sample_sizes[e+1]=s&15}else if(this.field_size===8)for(e=0;e<r;e++)this.sample_sizes[e]=t.readUint8();else if(this.field_size===16)for(e=0;e<r;e++)this.sample_sizes[e]=t.readUint16();else f.error("BoxParser","Error in length field in stz2 box")}),n.createFullBoxCtor("subs",function(t){var e,r,s,a;for(s=t.readUint32(),this.entries=[],e=0;e<s;e++){var u={};if(this.entries[e]=u,u.sample_delta=t.readUint32(),u.subsamples=[],a=t.readUint16(),a>0)for(r=0;r<a;r++){var p={};u.subsamples.push(p),this.version==1?p.size=t.readUint32():p.size=t.readUint16(),p.priority=t.readUint8(),p.discardable=t.readUint8(),p.codec_specific_parameters=t.readUint32()}}}),n.createFullBoxCtor("tenc",function(t){if(t.readUint8(),this.version===0)t.readUint8();else{var e=t.readUint8();this.default_crypt_byte_block=e>>4&15,this.default_skip_byte_block=e&15}this.default_isProtected=t.readUint8(),this.default_Per_Sample_IV_Size=t.readUint8(),this.default_KID=n.parseHex16(t),this.default_isProtected===1&&this.default_Per_Sample_IV_Size===0&&(this.default_constant_IV_size=t.readUint8(),this.default_constant_IV=t.readUint8Array(this.default_constant_IV_size))}),n.createFullBoxCtor("tfdt",function(t){this.version==1?this.baseMediaDecodeTime=t.readUint64():this.baseMediaDecodeTime=t.readUint32()}),n.createFullBoxCtor("tfhd",function(t){var e=0;this.track_id=t.readUint32(),this.size-this.hdr_size>e&&this.flags&n.TFHD_FLAG_BASE_DATA_OFFSET?(this.base_data_offset=t.readUint64(),e+=8):this.base_data_offset=0,this.size-this.hdr_size>e&&this.flags&n.TFHD_FLAG_SAMPLE_DESC?(this.default_sample_description_index=t.readUint32(),e+=4):this.default_sample_description_index=0,this.size-this.hdr_size>e&&this.flags&n.TFHD_FLAG_SAMPLE_DUR?(this.default_sample_duration=t.readUint32(),e+=4):this.default_sample_duration=0,this.size-this.hdr_size>e&&this.flags&n.TFHD_FLAG_SAMPLE_SIZE?(this.default_sample_size=t.readUint32(),e+=4):this.default_sample_size=0,this.size-this.hdr_size>e&&this.flags&n.TFHD_FLAG_SAMPLE_FLAGS?(this.default_sample_flags=t.readUint32(),e+=4):this.default_sample_flags=0}),n.createFullBoxCtor("tfra",function(t){this.track_ID=t.readUint32(),t.readUint24();var e=t.readUint8();this.length_size_of_traf_num=e>>4&3,this.length_size_of_trun_num=e>>2&3,this.length_size_of_sample_num=e&3,this.entries=[];for(var r=t.readUint32(),s=0;s<r;s++)this.version===1?(this.time=t.readUint64(),this.moof_offset=t.readUint64()):(this.time=t.readUint32(),this.moof_offset=t.readUint32()),this.traf_number=t["readUint"+8*(this.length_size_of_traf_num+1)](),this.trun_number=t["readUint"+8*(this.length_size_of_trun_num+1)](),this.sample_number=t["readUint"+8*(this.length_size_of_sample_num+1)]()}),n.createFullBoxCtor("tkhd",function(t){this.version==1?(this.creation_time=t.readUint64(),this.modification_time=t.readUint64(),this.track_id=t.readUint32(),t.readUint32(),this.duration=t.readUint64()):(this.creation_time=t.readUint32(),this.modification_time=t.readUint32(),this.track_id=t.readUint32(),t.readUint32(),this.duration=t.readUint32()),t.readUint32Array(2),this.layer=t.readInt16(),this.alternate_group=t.readInt16(),this.volume=t.readInt16()>>8,t.readUint16(),this.matrix=t.readInt32Array(9),this.width=t.readUint32(),this.height=t.readUint32()}),n.createBoxCtor("tmax",function(t){this.time=t.readUint32()}),n.createBoxCtor("tmin",function(t){this.time=t.readUint32()}),n.createBoxCtor("totl",function(t){this.bytessent=t.readUint32()}),n.createBoxCtor("tpay",function(t){this.bytessent=t.readUint32()}),n.createBoxCtor("tpyl",function(t){this.bytessent=t.readUint64()}),n.TrackGroupTypeBox.prototype.parse=function(t){this.parseFullHeader(t),this.track_group_id=t.readUint32()},n.createTrackGroupCtor("msrc"),n.TrackReferenceTypeBox=function(t,e,r,s){n.Box.call(this,t,e),this.hdr_size=r,this.start=s},n.TrackReferenceTypeBox.prototype=new n.Box,n.TrackReferenceTypeBox.prototype.parse=function(t){this.track_ids=t.readUint32Array((this.size-this.hdr_size)/4)},n.trefBox.prototype.parse=function(t){for(var e,r;t.getPosition()<this.start+this.size;)if(e=n.parseOneBox(t,!0,this.size-(t.getPosition()-this.start)),e.code===n.OK)r=new n.TrackReferenceTypeBox(e.type,e.size,e.hdr_size,e.start),r.write===n.Box.prototype.write&&r.type!=="mdat"&&(f.info("BoxParser","TrackReference "+r.type+" box writing not yet implemented, keeping unparsed data in memory for later write"),r.parseDataAndRewind(t)),r.parse(t),this.boxes.push(r);else return},n.createFullBoxCtor("trep",function(t){for(this.track_ID=t.readUint32(),this.boxes=[];t.getPosition()<this.start+this.size;)if(ret=n.parseOneBox(t,!1,this.size-(t.getPosition()-this.start)),ret.code===n.OK)box=ret.box,this.boxes.push(box);else return}),n.createFullBoxCtor("trex",function(t){this.track_id=t.readUint32(),this.default_sample_description_index=t.readUint32(),this.default_sample_duration=t.readUint32(),this.default_sample_size=t.readUint32(),this.default_sample_flags=t.readUint32()}),n.createBoxCtor("trpy",function(t){this.bytessent=t.readUint64()}),n.createFullBoxCtor("trun",function(t){var e=0;if(this.sample_count=t.readUint32(),e+=4,this.size-this.hdr_size>e&&this.flags&n.TRUN_FLAGS_DATA_OFFSET?(this.data_offset=t.readInt32(),e+=4):this.data_offset=0,this.size-this.hdr_size>e&&this.flags&n.TRUN_FLAGS_FIRST_FLAG?(this.first_sample_flags=t.readUint32(),e+=4):this.first_sample_flags=0,this.sample_duration=[],this.sample_size=[],this.sample_flags=[],this.sample_composition_time_offset=[],this.size-this.hdr_size>e)for(var r=0;r<this.sample_count;r++)this.flags&n.TRUN_FLAGS_DURATION&&(this.sample_duration[r]=t.readUint32()),this.flags&n.TRUN_FLAGS_SIZE&&(this.sample_size[r]=t.readUint32()),this.flags&n.TRUN_FLAGS_FLAGS&&(this.sample_flags[r]=t.readUint32()),this.flags&n.TRUN_FLAGS_CTS_OFFSET&&(this.version===0?this.sample_composition_time_offset[r]=t.readUint32():this.sample_composition_time_offset[r]=t.readInt32())}),n.createFullBoxCtor("tsel",function(t){this.switch_group=t.readUint32();var e=(this.size-this.hdr_size-4)/4;this.attribute_list=[];for(var r=0;r<e;r++)this.attribute_list[r]=t.readUint32()}),n.createFullBoxCtor("txtC",function(t){this.config=t.readCString()}),n.createBoxCtor("tyco",function(t){var e=(this.size-this.hdr_size)/4;this.compatible_brands=[];for(var r=0;r<e;r++)this.compatible_brands[r]=t.readString(4)}),n.createFullBoxCtor("udes",function(t){this.lang=t.readCString(),this.name=t.readCString(),this.description=t.readCString(),this.tags=t.readCString()}),n.createFullBoxCtor("uncC",function(t){var e;if(this.profile=t.readUint32(),this.version!=1){if(this.version==0){for(this.component_count=t.readUint32(),this.component_index=[],this.component_bit_depth_minus_one=[],this.component_format=[],this.component_align_size=[],e=0;e<this.component_count;e++)this.component_index.push(t.readUint16()),this.component_bit_depth_minus_one.push(t.readUint8()),this.component_format.push(t.readUint8()),this.component_align_size.push(t.readUint8());this.sampling_type=t.readUint8(),this.interleave_type=t.readUint8(),this.block_size=t.readUint8();var r=t.readUint8();this.component_little_endian=r>>7&1,this.block_pad_lsb=r>>6&1,this.block_little_endian=r>>5&1,this.block_reversed=r>>4&1,this.pad_unknown=r>>3&1,this.pixel_size=t.readUint32(),this.row_align_size=t.readUint32(),this.tile_align_size=t.readUint32(),this.num_tile_cols_minus_one=t.readUint32(),this.num_tile_rows_minus_one=t.readUint32()}}}),n.createFullBoxCtor("url ",function(t){this.flags!==1&&(this.location=t.readCString())}),n.createFullBoxCtor("urn ",function(t){this.name=t.readCString(),this.size-this.hdr_size-this.name.length-1>0&&(this.location=t.readCString())}),n.createUUIDBox("a5d40b30e81411ddba2f0800200c9a66",!0,!1,function(t){this.LiveServerManifest=t.readString(this.size-this.hdr_size).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}),n.createUUIDBox("d08a4f1810f34a82b6c832d8aba183d3",!0,!1,function(t){this.system_id=n.parseHex16(t);var e=t.readUint32();e>0&&(this.data=t.readUint8Array(e))}),n.createUUIDBox("a2394f525a9b4f14a2446c427c648df4",!0,!1),n.createUUIDBox("8974dbce7be74c5184f97148f9882554",!0,!1,function(t){this.default_AlgorithmID=t.readUint24(),this.default_IV_size=t.readUint8(),this.default_KID=n.parseHex16(t)}),n.createUUIDBox("d4807ef2ca3946958e5426cb9e46a79f",!0,!1,function(t){this.fragment_count=t.readUint8(),this.entries=[];for(var e=0;e<this.fragment_count;e++){var r={},s=0,a=0;this.version===1?(s=t.readUint64(),a=t.readUint64()):(s=t.readUint32(),a=t.readUint32()),r.absolute_time=s,r.absolute_duration=a,this.entries.push(r)}}),n.createUUIDBox("6d1d9b0542d544e680e2141daff757b2",!0,!1,function(t){this.version===1?(this.absolute_time=t.readUint64(),this.duration=t.readUint64()):(this.absolute_time=t.readUint32(),this.duration=t.readUint32())}),n.createFullBoxCtor("vmhd",function(t){this.graphicsmode=t.readUint16(),this.opcolor=t.readUint16Array(3)}),n.createFullBoxCtor("vpcC",function(t){var e;this.version===1?(this.profile=t.readUint8(),this.level=t.readUint8(),e=t.readUint8(),this.bitDepth=e>>4,this.chromaSubsampling=e>>1&7,this.videoFullRangeFlag=e&1,this.colourPrimaries=t.readUint8(),this.transferCharacteristics=t.readUint8(),this.matrixCoefficients=t.readUint8(),this.codecIntializationDataSize=t.readUint16(),this.codecIntializationData=t.readUint8Array(this.codecIntializationDataSize)):(this.profile=t.readUint8(),this.level=t.readUint8(),e=t.readUint8(),this.bitDepth=e>>4&15,this.colorSpace=e&15,e=t.readUint8(),this.chromaSubsampling=e>>4&15,this.transferFunction=e>>1&7,this.videoFullRangeFlag=e&1,this.codecIntializationDataSize=t.readUint16(),this.codecIntializationData=t.readUint8Array(this.codecIntializationDataSize))}),n.createBoxCtor("vttC",function(t){this.text=t.readString(this.size-this.hdr_size)}),n.createFullBoxCtor("vvcC",function(t){var e,r,s={held_bits:void 0,num_held_bits:0,stream_read_1_bytes:function(F){this.held_bits=F.readUint8(),this.num_held_bits=8},stream_read_2_bytes:function(F){this.held_bits=F.readUint16(),this.num_held_bits=16},extract_bits:function(F){var I=this.held_bits>>this.num_held_bits-F&(1<<F)-1;return this.num_held_bits-=F,I}};if(s.stream_read_1_bytes(t),s.extract_bits(5),this.lengthSizeMinusOne=s.extract_bits(2),this.ptl_present_flag=s.extract_bits(1),this.ptl_present_flag){s.stream_read_2_bytes(t),this.ols_idx=s.extract_bits(9),this.num_sublayers=s.extract_bits(3),this.constant_frame_rate=s.extract_bits(2),this.chroma_format_idc=s.extract_bits(2),s.stream_read_1_bytes(t),this.bit_depth_minus8=s.extract_bits(3),s.extract_bits(5);{if(s.stream_read_2_bytes(t),s.extract_bits(2),this.num_bytes_constraint_info=s.extract_bits(6),this.general_profile_idc=s.extract_bits(7),this.general_tier_flag=s.extract_bits(1),this.general_level_idc=t.readUint8(),s.stream_read_1_bytes(t),this.ptl_frame_only_constraint_flag=s.extract_bits(1),this.ptl_multilayer_enabled_flag=s.extract_bits(1),this.general_constraint_info=new Uint8Array(this.num_bytes_constraint_info),this.num_bytes_constraint_info){for(e=0;e<this.num_bytes_constraint_info-1;e++){var a=s.extract_bits(6);s.stream_read_1_bytes(t);var u=s.extract_bits(2);this.general_constraint_info[e]=a<<2|u}this.general_constraint_info[this.num_bytes_constraint_info-1]=s.extract_bits(6)}else s.extract_bits(6);if(this.num_sublayers>1){for(s.stream_read_1_bytes(t),this.ptl_sublayer_present_mask=0,r=this.num_sublayers-2;r>=0;--r){var p=s.extract_bits(1);this.ptl_sublayer_present_mask|=p<<r}for(r=this.num_sublayers;r<=8&&this.num_sublayers>1;++r)s.extract_bits(1);for(this.sublayer_level_idc=[],r=this.num_sublayers-2;r>=0;--r)this.ptl_sublayer_present_mask&1<<r&&(this.sublayer_level_idc[r]=t.readUint8())}if(this.ptl_num_sub_profiles=t.readUint8(),this.general_sub_profile_idc=[],this.ptl_num_sub_profiles)for(e=0;e<this.ptl_num_sub_profiles;e++)this.general_sub_profile_idc.push(t.readUint32())}this.max_picture_width=t.readUint16(),this.max_picture_height=t.readUint16(),this.avg_frame_rate=t.readUint16()}var _=12,U=13;this.nalu_arrays=[];var S=t.readUint8();for(e=0;e<S;e++){var b=[];this.nalu_arrays.push(b),s.stream_read_1_bytes(t),b.completeness=s.extract_bits(1),s.extract_bits(2),b.nalu_type=s.extract_bits(5);var E=1;for(b.nalu_type!=U&&b.nalu_type!=_&&(E=t.readUint16()),r=0;r<E;r++){var B=t.readUint16();b.push({data:t.readUint8Array(B),length:B})}}}),n.createFullBoxCtor("vvnC",function(t){var e=strm.readUint8();this.lengthSizeMinusOne=e&3}),n.SampleEntry.prototype.isVideo=function(){return!1},n.SampleEntry.prototype.isAudio=function(){return!1},n.SampleEntry.prototype.isSubtitle=function(){return!1},n.SampleEntry.prototype.isMetadata=function(){return!1},n.SampleEntry.prototype.isHint=function(){return!1},n.SampleEntry.prototype.getCodec=function(){return this.type.replace(".","")},n.SampleEntry.prototype.getWidth=function(){return""},n.SampleEntry.prototype.getHeight=function(){return""},n.SampleEntry.prototype.getChannelCount=function(){return""},n.SampleEntry.prototype.getSampleRate=function(){return""},n.SampleEntry.prototype.getSampleSize=function(){return""},n.VisualSampleEntry.prototype.isVideo=function(){return!0},n.VisualSampleEntry.prototype.getWidth=function(){return this.width},n.VisualSampleEntry.prototype.getHeight=function(){return this.height},n.AudioSampleEntry.prototype.isAudio=function(){return!0},n.AudioSampleEntry.prototype.getChannelCount=function(){return this.channel_count},n.AudioSampleEntry.prototype.getSampleRate=function(){return this.samplerate},n.AudioSampleEntry.prototype.getSampleSize=function(){return this.samplesize},n.SubtitleSampleEntry.prototype.isSubtitle=function(){return!0},n.MetadataSampleEntry.prototype.isMetadata=function(){return!0},n.decimalToHex=function(t,e){var r=Number(t).toString(16);for(e=typeof e>"u"||e===null?e=2:e;r.length<e;)r="0"+r;return r},n.avc1SampleEntry.prototype.getCodec=n.avc2SampleEntry.prototype.getCodec=n.avc3SampleEntry.prototype.getCodec=n.avc4SampleEntry.prototype.getCodec=function(){var t=n.SampleEntry.prototype.getCodec.call(this);return this.avcC?t+"."+n.decimalToHex(this.avcC.AVCProfileIndication)+n.decimalToHex(this.avcC.profile_compatibility)+n.decimalToHex(this.avcC.AVCLevelIndication):t},n.hev1SampleEntry.prototype.getCodec=n.hvc1SampleEntry.prototype.getCodec=function(){var t,e=n.SampleEntry.prototype.getCodec.call(this);if(this.hvcC){switch(e+=".",this.hvcC.general_profile_space){case 0:e+="";break;case 1:e+="A";break;case 2:e+="B";break;case 3:e+="C";break}e+=this.hvcC.general_profile_idc,e+=".";var r=this.hvcC.general_profile_compatibility,s=0;for(t=0;t<32&&(s|=r&1,t!=31);t++)s<<=1,r>>=1;e+=n.decimalToHex(s,0),e+=".",this.hvcC.general_tier_flag===0?e+="L":e+="H",e+=this.hvcC.general_level_idc;var a=!1,u="";for(t=5;t>=0;t--)(this.hvcC.general_constraint_indicator[t]||a)&&(u="."+n.decimalToHex(this.hvcC.general_constraint_indicator[t],0)+u,a=!0);e+=u}return e},n.vvc1SampleEntry.prototype.getCodec=n.vvi1SampleEntry.prototype.getCodec=function(){var t,e=n.SampleEntry.prototype.getCodec.call(this);if(this.vvcC){e+="."+this.vvcC.general_profile_idc,this.vvcC.general_tier_flag?e+=".H":e+=".L",e+=this.vvcC.general_level_idc;var r="";if(this.vvcC.general_constraint_info){var s=[],a=0;a|=this.vvcC.ptl_frame_only_constraint<<7,a|=this.vvcC.ptl_multilayer_enabled<<6;var u;for(t=0;t<this.vvcC.general_constraint_info.length;++t)a|=this.vvcC.general_constraint_info[t]>>2&63,s.push(a),a&&(u=t),a=this.vvcC.general_constraint_info[t]>>2&3;if(u===void 0)r=".CA";else{r=".C";var p="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",_=0,U=0;for(t=0;t<=u;++t)for(_=_<<8|s[t],U+=8;U>=5;){var S=_>>U-5&31;r+=p[S],U-=5,_&=(1<<U)-1}U&&(_<<=5-U,r+=p[_&31])}}e+=r}return e},n.mp4aSampleEntry.prototype.getCodec=function(){var t=n.SampleEntry.prototype.getCodec.call(this);if(this.esds&&this.esds.esd){var e=this.esds.esd.getOTI(),r=this.esds.esd.getAudioConfig();return t+"."+n.decimalToHex(e)+(r?"."+r:"")}else return t},n.stxtSampleEntry.prototype.getCodec=function(){var t=n.SampleEntry.prototype.getCodec.call(this);return this.mime_format?t+"."+this.mime_format:t},n.vp08SampleEntry.prototype.getCodec=n.vp09SampleEntry.prototype.getCodec=function(){var t=n.SampleEntry.prototype.getCodec.call(this),e=this.vpcC.level;e==0&&(e="00");var r=this.vpcC.bitDepth;return r==8&&(r="08"),t+".0"+this.vpcC.profile+"."+e+"."+r},n.av01SampleEntry.prototype.getCodec=function(){var t=n.SampleEntry.prototype.getCodec.call(this),e=this.av1C.seq_level_idx_0;e<10&&(e="0"+e);var r;return this.av1C.seq_profile===2&&this.av1C.high_bitdepth===1?r=this.av1C.twelve_bit===1?"12":"10":this.av1C.seq_profile<=2&&(r=this.av1C.high_bitdepth===1?"10":"08"),t+"."+this.av1C.seq_profile+"."+e+(this.av1C.seq_tier_0?"H":"M")+"."+r},n.Box.prototype.writeHeader=function(t,e){this.size+=8,this.size>d&&(this.size+=8),this.type==="uuid"&&(this.size+=16),f.debug("BoxWriter","Writing box "+this.type+" of size: "+this.size+" at position "+t.getPosition()+(e||"")),this.size>d?t.writeUint32(1):(this.sizePosition=t.getPosition(),t.writeUint32(this.size)),t.writeString(this.type,null,4),this.type==="uuid"&&t.writeUint8Array(this.uuid),this.size>d&&t.writeUint64(this.size)},n.FullBox.prototype.writeHeader=function(t){this.size+=4,n.Box.prototype.writeHeader.call(this,t," v="+this.version+" f="+this.flags),t.writeUint8(this.version),t.writeUint24(this.flags)},n.Box.prototype.write=function(t){this.type==="mdat"?this.data&&(this.size=this.data.length,this.writeHeader(t),t.writeUint8Array(this.data)):(this.size=this.data?this.data.length:0,this.writeHeader(t),this.data&&t.writeUint8Array(this.data))},n.ContainerBox.prototype.write=function(t){this.size=0,this.writeHeader(t);for(var e=0;e<this.boxes.length;e++)this.boxes[e]&&(this.boxes[e].write(t),this.size+=this.boxes[e].size);f.debug("BoxWriter","Adjusting box "+this.type+" with new size "+this.size),t.adjustUint32(this.sizePosition,this.size)},n.TrackReferenceTypeBox.prototype.write=function(t){this.size=this.track_ids.length*4,this.writeHeader(t),t.writeUint32Array(this.track_ids)},n.avcCBox.prototype.write=function(t){var e;for(this.size=7,e=0;e<this.SPS.length;e++)this.size+=2+this.SPS[e].length;for(e=0;e<this.PPS.length;e++)this.size+=2+this.PPS[e].length;for(this.ext&&(this.size+=this.ext.length),this.writeHeader(t),t.writeUint8(this.configurationVersion),t.writeUint8(this.AVCProfileIndication),t.writeUint8(this.profile_compatibility),t.writeUint8(this.AVCLevelIndication),t.writeUint8(this.lengthSizeMinusOne+252),t.writeUint8(this.SPS.length+224),e=0;e<this.SPS.length;e++)t.writeUint16(this.SPS[e].length),t.writeUint8Array(this.SPS[e].nalu);for(t.writeUint8(this.PPS.length),e=0;e<this.PPS.length;e++)t.writeUint16(this.PPS[e].length),t.writeUint8Array(this.PPS[e].nalu);this.ext&&t.writeUint8Array(this.ext)},n.co64Box.prototype.write=function(t){var e;for(this.version=0,this.flags=0,this.size=4+8*this.chunk_offsets.length,this.writeHeader(t),t.writeUint32(this.chunk_offsets.length),e=0;e<this.chunk_offsets.length;e++)t.writeUint64(this.chunk_offsets[e])},n.cslgBox.prototype.write=function(t){this.version=0,this.flags=0,this.size=4*5,this.writeHeader(t),t.writeInt32(this.compositionToDTSShift),t.writeInt32(this.leastDecodeToDisplayDelta),t.writeInt32(this.greatestDecodeToDisplayDelta),t.writeInt32(this.compositionStartTime),t.writeInt32(this.compositionEndTime)},n.cttsBox.prototype.write=function(t){var e;for(this.version=0,this.flags=0,this.size=4+8*this.sample_counts.length,this.writeHeader(t),t.writeUint32(this.sample_counts.length),e=0;e<this.sample_counts.length;e++)t.writeUint32(this.sample_counts[e]),this.version===1?t.writeInt32(this.sample_offsets[e]):t.writeUint32(this.sample_offsets[e])},n.drefBox.prototype.write=function(t){this.version=0,this.flags=0,this.size=4,this.writeHeader(t),t.writeUint32(this.entries.length);for(var e=0;e<this.entries.length;e++)this.entries[e].write(t),this.size+=this.entries[e].size;f.debug("BoxWriter","Adjusting box "+this.type+" with new size "+this.size),t.adjustUint32(this.sizePosition,this.size)},n.elngBox.prototype.write=function(t){this.version=0,this.flags=0,this.size=this.extended_language.length,this.writeHeader(t),t.writeString(this.extended_language)},n.elstBox.prototype.write=function(t){this.version=0,this.flags=0,this.size=4+12*this.entries.length,this.writeHeader(t),t.writeUint32(this.entries.length);for(var e=0;e<this.entries.length;e++){var r=this.entries[e];t.writeUint32(r.segment_duration),t.writeInt32(r.media_time),t.writeInt16(r.media_rate_integer),t.writeInt16(r.media_rate_fraction)}},n.emsgBox.prototype.write=function(t){this.version=0,this.flags=0,this.size=4*4+this.message_data.length+(this.scheme_id_uri.length+1)+(this.value.length+1),this.writeHeader(t),t.writeCString(this.scheme_id_uri),t.writeCString(this.value),t.writeUint32(this.timescale),t.writeUint32(this.presentation_time_delta),t.writeUint32(this.event_duration),t.writeUint32(this.id),t.writeUint8Array(this.message_data)},n.ftypBox.prototype.write=function(t){this.size=8+4*this.compatible_brands.length,this.writeHeader(t),t.writeString(this.major_brand,null,4),t.writeUint32(this.minor_version);for(var e=0;e<this.compatible_brands.length;e++)t.writeString(this.compatible_brands[e],null,4)},n.hdlrBox.prototype.write=function(t){this.size=5*4+this.name.length+1,this.version=0,this.flags=0,this.writeHeader(t),t.writeUint32(0),t.writeString(this.handler,null,4),t.writeUint32(0),t.writeUint32(0),t.writeUint32(0),t.writeCString(this.name)},n.hvcCBox.prototype.write=function(t){var e,r;for(this.size=23,e=0;e<this.nalu_arrays.length;e++)for(this.size+=3,r=0;r<this.nalu_arrays[e].length;r++)this.size+=2+this.nalu_arrays[e][r].data.length;for(this.writeHeader(t),t.writeUint8(this.configurationVersion),t.writeUint8((this.general_profile_space<<6)+(this.general_tier_flag<<5)+this.general_profile_idc),t.writeUint32(this.general_profile_compatibility),t.writeUint8Array(this.general_constraint_indicator),t.writeUint8(this.general_level_idc),t.writeUint16(this.min_spatial_segmentation_idc+(15<<24)),t.writeUint8(this.parallelismType+252),t.writeUint8(this.chroma_format_idc+252),t.writeUint8(this.bit_depth_luma_minus8+248),t.writeUint8(this.bit_depth_chroma_minus8+248),t.writeUint16(this.avgFrameRate),t.writeUint8((this.constantFrameRate<<6)+(this.numTemporalLayers<<3)+(this.temporalIdNested<<2)+this.lengthSizeMinusOne),t.writeUint8(this.nalu_arrays.length),e=0;e<this.nalu_arrays.length;e++)for(t.writeUint8((this.nalu_arrays[e].completeness<<7)+this.nalu_arrays[e].nalu_type),t.writeUint16(this.nalu_arrays[e].length),r=0;r<this.nalu_arrays[e].length;r++)t.writeUint16(this.nalu_arrays[e][r].data.length),t.writeUint8Array(this.nalu_arrays[e][r].data)},n.kindBox.prototype.write=function(t){this.version=0,this.flags=0,this.size=this.schemeURI.length+1+(this.value.length+1),this.writeHeader(t),t.writeCString(this.schemeURI),t.writeCString(this.value)},n.mdhdBox.prototype.write=function(t){this.size=4*4+2*2,this.flags=0,this.version=0,this.writeHeader(t),t.writeUint32(this.creation_time),t.writeUint32(this.modification_time),t.writeUint32(this.timescale),t.writeUint32(this.duration),t.writeUint16(this.language),t.writeUint16(0)},n.mehdBox.prototype.write=function(t){this.version=0,this.flags=0,this.size=4,this.writeHeader(t),t.writeUint32(this.fragment_duration)},n.mfhdBox.prototype.write=function(t){this.version=0,this.flags=0,this.size=4,this.writeHeader(t),t.writeUint32(this.sequence_number)},n.mvhdBox.prototype.write=function(t){this.version=0,this.flags=0,this.size=23*4+2*2,this.writeHeader(t),t.writeUint32(this.creation_time),t.writeUint32(this.modification_time),t.writeUint32(this.timescale),t.writeUint32(this.duration),t.writeUint32(this.rate),t.writeUint16(this.volume<<8),t.writeUint16(0),t.writeUint32(0),t.writeUint32(0),t.writeUint32Array(this.matrix),t.writeUint32(0),t.writeUint32(0),t.writeUint32(0),t.writeUint32(0),t.writeUint32(0),t.writeUint32(0),t.writeUint32(this.next_track_id)},n.SampleEntry.prototype.writeHeader=function(t){this.size=8,n.Box.prototype.writeHeader.call(this,t),t.writeUint8(0),t.writeUint8(0),t.writeUint8(0),t.writeUint8(0),t.writeUint8(0),t.writeUint8(0),t.writeUint16(this.data_reference_index)},n.SampleEntry.prototype.writeFooter=function(t){for(var e=0;e<this.boxes.length;e++)this.boxes[e].write(t),this.size+=this.boxes[e].size;f.debug("BoxWriter","Adjusting box "+this.type+" with new size "+this.size),t.adjustUint32(this.sizePosition,this.size)},n.SampleEntry.prototype.write=function(t){this.writeHeader(t),t.writeUint8Array(this.data),this.size+=this.data.length,f.debug("BoxWriter","Adjusting box "+this.type+" with new size "+this.size),t.adjustUint32(this.sizePosition,this.size)},n.VisualSampleEntry.prototype.write=function(t){this.writeHeader(t),this.size+=2*7+6*4+32,t.writeUint16(0),t.writeUint16(0),t.writeUint32(0),t.writeUint32(0),t.writeUint32(0),t.writeUint16(this.width),t.writeUint16(this.height),t.writeUint32(this.horizresolution),t.writeUint32(this.vertresolution),t.writeUint32(0),t.writeUint16(this.frame_count),t.writeUint8(Math.min(31,this.compressorname.length)),t.writeString(this.compressorname,null,31),t.writeUint16(this.depth),t.writeInt16(-1),this.writeFooter(t)},n.AudioSampleEntry.prototype.write=function(t){this.writeHeader(t),this.size+=2*4+3*4,t.writeUint32(0),t.writeUint32(0),t.writeUint16(this.channel_count),t.writeUint16(this.samplesize),t.writeUint16(0),t.writeUint16(0),t.writeUint32(this.samplerate<<16),this.writeFooter(t)},n.stppSampleEntry.prototype.write=function(t){this.writeHeader(t),this.size+=this.namespace.length+1+this.schema_location.length+1+this.auxiliary_mime_types.length+1,t.writeCString(this.namespace),t.writeCString(this.schema_location),t.writeCString(this.auxiliary_mime_types),this.writeFooter(t)},n.SampleGroupEntry.prototype.write=function(t){t.writeUint8Array(this.data)},n.sbgpBox.prototype.write=function(t){this.version=1,this.flags=0,this.size=12+8*this.entries.length,this.writeHeader(t),t.writeString(this.grouping_type,null,4),t.writeUint32(this.grouping_type_parameter),t.writeUint32(this.entries.length);for(var e=0;e<this.entries.length;e++){var r=this.entries[e];t.writeInt32(r.sample_count),t.writeInt32(r.group_description_index)}},n.sgpdBox.prototype.write=function(t){var e,r;for(this.flags=0,this.size=12,e=0;e<this.entries.length;e++)r=this.entries[e],this.version===1&&(this.default_length===0&&(this.size+=4),this.size+=r.data.length);for(this.writeHeader(t),t.writeString(this.grouping_type,null,4),this.version===1&&t.writeUint32(this.default_length),this.version>=2&&t.writeUint32(this.default_sample_description_index),t.writeUint32(this.entries.length),e=0;e<this.entries.length;e++)r=this.entries[e],this.version===1&&this.default_length===0&&t.writeUint32(r.description_length),r.write(t)},n.sidxBox.prototype.write=function(t){this.version=0,this.flags=0,this.size=4*4+2+2+12*this.references.length,this.writeHeader(t),t.writeUint32(this.reference_ID),t.writeUint32(this.timescale),t.writeUint32(this.earliest_presentation_time),t.writeUint32(this.first_offset),t.writeUint16(0),t.writeUint16(this.references.length);for(var e=0;e<this.references.length;e++){var r=this.references[e];t.writeUint32(r.reference_type<<31|r.referenced_size),t.writeUint32(r.subsegment_duration),t.writeUint32(r.starts_with_SAP<<31|r.SAP_type<<28|r.SAP_delta_time)}},n.smhdBox.prototype.write=function(t){this.version=0,this.flags=1,this.size=4,this.writeHeader(t),t.writeUint16(this.balance),t.writeUint16(0)},n.stcoBox.prototype.write=function(t){this.version=0,this.flags=0,this.size=4+4*this.chunk_offsets.length,this.writeHeader(t),t.writeUint32(this.chunk_offsets.length),t.writeUint32Array(this.chunk_offsets)},n.stscBox.prototype.write=function(t){var e;for(this.version=0,this.flags=0,this.size=4+12*this.first_chunk.length,this.writeHeader(t),t.writeUint32(this.first_chunk.length),e=0;e<this.first_chunk.length;e++)t.writeUint32(this.first_chunk[e]),t.writeUint32(this.samples_per_chunk[e]),t.writeUint32(this.sample_description_index[e])},n.stsdBox.prototype.write=function(t){var e;for(this.version=0,this.flags=0,this.size=0,this.writeHeader(t),t.writeUint32(this.entries.length),this.size+=4,e=0;e<this.entries.length;e++)this.entries[e].write(t),this.size+=this.entries[e].size;f.debug("BoxWriter","Adjusting box "+this.type+" with new size "+this.size),t.adjustUint32(this.sizePosition,this.size)},n.stshBox.prototype.write=function(t){var e;for(this.version=0,this.flags=0,this.size=4+8*this.shadowed_sample_numbers.length,this.writeHeader(t),t.writeUint32(this.shadowed_sample_numbers.length),e=0;e<this.shadowed_sample_numbers.length;e++)t.writeUint32(this.shadowed_sample_numbers[e]),t.writeUint32(this.sync_sample_numbers[e])},n.stssBox.prototype.write=function(t){this.version=0,this.flags=0,this.size=4+4*this.sample_numbers.length,this.writeHeader(t),t.writeUint32(this.sample_numbers.length),t.writeUint32Array(this.sample_numbers)},n.stszBox.prototype.write=function(t){var e,r=!0;if(this.version=0,this.flags=0,this.sample_sizes.length>0)for(e=0;e+1<this.sample_sizes.length;)if(this.sample_sizes[e+1]!==this.sample_sizes[0]){r=!1;break}else e++;else r=!1;this.size=8,r||(this.size+=4*this.sample_sizes.length),this.writeHeader(t),r?t.writeUint32(this.sample_sizes[0]):t.writeUint32(0),t.writeUint32(this.sample_sizes.length),r||t.writeUint32Array(this.sample_sizes)},n.sttsBox.prototype.write=function(t){var e;for(this.version=0,this.flags=0,this.size=4+8*this.sample_counts.length,this.writeHeader(t),t.writeUint32(this.sample_counts.length),e=0;e<this.sample_counts.length;e++)t.writeUint32(this.sample_counts[e]),t.writeUint32(this.sample_deltas[e])},n.tfdtBox.prototype.write=function(t){var e=Math.pow(2,32)-1;this.version=this.baseMediaDecodeTime>e?1:0,this.flags=0,this.size=4,this.version===1&&(this.size+=4),this.writeHeader(t),this.version===1?t.writeUint64(this.baseMediaDecodeTime):t.writeUint32(this.baseMediaDecodeTime)},n.tfhdBox.prototype.write=function(t){this.version=0,this.size=4,this.flags&n.TFHD_FLAG_BASE_DATA_OFFSET&&(this.size+=8),this.flags&n.TFHD_FLAG_SAMPLE_DESC&&(this.size+=4),this.flags&n.TFHD_FLAG_SAMPLE_DUR&&(this.size+=4),this.flags&n.TFHD_FLAG_SAMPLE_SIZE&&(this.size+=4),this.flags&n.TFHD_FLAG_SAMPLE_FLAGS&&(this.size+=4),this.writeHeader(t),t.writeUint32(this.track_id),this.flags&n.TFHD_FLAG_BASE_DATA_OFFSET&&t.writeUint64(this.base_data_offset),this.flags&n.TFHD_FLAG_SAMPLE_DESC&&t.writeUint32(this.default_sample_description_index),this.flags&n.TFHD_FLAG_SAMPLE_DUR&&t.writeUint32(this.default_sample_duration),this.flags&n.TFHD_FLAG_SAMPLE_SIZE&&t.writeUint32(this.default_sample_size),this.flags&n.TFHD_FLAG_SAMPLE_FLAGS&&t.writeUint32(this.default_sample_flags)},n.tkhdBox.prototype.write=function(t){this.version=0,this.size=4*18+2*4,this.writeHeader(t),t.writeUint32(this.creation_time),t.writeUint32(this.modification_time),t.writeUint32(this.track_id),t.writeUint32(0),t.writeUint32(this.duration),t.writeUint32(0),t.writeUint32(0),t.writeInt16(this.layer),t.writeInt16(this.alternate_group),t.writeInt16(this.volume<<8),t.writeUint16(0),t.writeInt32Array(this.matrix),t.writeUint32(this.width),t.writeUint32(this.height)},n.trexBox.prototype.write=function(t){this.version=0,this.flags=0,this.size=4*5,this.writeHeader(t),t.writeUint32(this.track_id),t.writeUint32(this.default_sample_description_index),t.writeUint32(this.default_sample_duration),t.writeUint32(this.default_sample_size),t.writeUint32(this.default_sample_flags)},n.trunBox.prototype.write=function(t){this.version=0,this.size=4,this.flags&n.TRUN_FLAGS_DATA_OFFSET&&(this.size+=4),this.flags&n.TRUN_FLAGS_FIRST_FLAG&&(this.size+=4),this.flags&n.TRUN_FLAGS_DURATION&&(this.size+=4*this.sample_duration.length),this.flags&n.TRUN_FLAGS_SIZE&&(this.size+=4*this.sample_size.length),this.flags&n.TRUN_FLAGS_FLAGS&&(this.size+=4*this.sample_flags.length),this.flags&n.TRUN_FLAGS_CTS_OFFSET&&(this.size+=4*this.sample_composition_time_offset.length),this.writeHeader(t),t.writeUint32(this.sample_count),this.flags&n.TRUN_FLAGS_DATA_OFFSET&&(this.data_offset_position=t.getPosition(),t.writeInt32(this.data_offset)),this.flags&n.TRUN_FLAGS_FIRST_FLAG&&t.writeUint32(this.first_sample_flags);for(var e=0;e<this.sample_count;e++)this.flags&n.TRUN_FLAGS_DURATION&&t.writeUint32(this.sample_duration[e]),this.flags&n.TRUN_FLAGS_SIZE&&t.writeUint32(this.sample_size[e]),this.flags&n.TRUN_FLAGS_FLAGS&&t.writeUint32(this.sample_flags[e]),this.flags&n.TRUN_FLAGS_CTS_OFFSET&&(this.version===0?t.writeUint32(this.sample_composition_time_offset[e]):t.writeInt32(this.sample_composition_time_offset[e]))},n["url Box"].prototype.write=function(t){this.version=0,this.location?(this.flags=0,this.size=this.location.length+1):(this.flags=1,this.size=0),this.writeHeader(t),this.location&&t.writeCString(this.location)},n["urn Box"].prototype.write=function(t){this.version=0,this.flags=0,this.size=this.name.length+1+(this.location?this.location.length+1:0),this.writeHeader(t),t.writeCString(this.name),this.location&&t.writeCString(this.location)},n.vmhdBox.prototype.write=function(t){this.version=0,this.flags=1,this.size=8,this.writeHeader(t),t.writeUint16(this.graphicsmode),t.writeUint16Array(this.opcolor)},n.cttsBox.prototype.unpack=function(t){var e,r,s;for(s=0,e=0;e<this.sample_counts.length;e++)for(r=0;r<this.sample_counts[e];r++)t[s].pts=t[s].dts+this.sample_offsets[e],s++},n.sttsBox.prototype.unpack=function(t){var e,r,s;for(s=0,e=0;e<this.sample_counts.length;e++)for(r=0;r<this.sample_counts[e];r++)s===0?t[s].dts=0:t[s].dts=t[s-1].dts+this.sample_deltas[e],s++},n.stcoBox.prototype.unpack=function(t){var e;for(e=0;e<this.chunk_offsets.length;e++)t[e].offset=this.chunk_offsets[e]},n.stscBox.prototype.unpack=function(t){var e,r,s,a,u;for(a=0,u=0,e=0;e<this.first_chunk.length;e++)for(r=0;r<(e+1<this.first_chunk.length?this.first_chunk[e+1]:1/0);r++)for(u++,s=0;s<this.samples_per_chunk[e];s++){if(t[a])t[a].description_index=this.sample_description_index[e],t[a].chunk_index=u;else return;a++}},n.stszBox.prototype.unpack=function(t){var e;for(e=0;e<this.sample_sizes.length;e++)t[e].size=this.sample_sizes[e]},n.DIFF_BOXES_PROP_NAMES=["boxes","entries","references","subsamples","items","item_infos","extents","associations","subsegments","ranges","seekLists","seekPoints","esd","levels"],n.DIFF_PRIMITIVE_ARRAY_PROP_NAMES=["compatible_brands","matrix","opcolor","sample_counts","sample_counts","sample_deltas","first_chunk","samples_per_chunk","sample_sizes","chunk_offsets","sample_offsets","sample_description_index","sample_duration"],n.boxEqualFields=function(t,e){if(t&&!e)return!1;var r;for(r in t)if(!(n.DIFF_BOXES_PROP_NAMES.indexOf(r)>-1)){if(t[r]instanceof n.Box||e[r]instanceof n.Box)continue;if(typeof t[r]>"u"||typeof e[r]>"u")continue;if(typeof t[r]=="function"||typeof e[r]=="function")continue;if(t.subBoxNames&&t.subBoxNames.indexOf(r.slice(0,4))>-1||e.subBoxNames&&e.subBoxNames.indexOf(r.slice(0,4))>-1)continue;if(r==="data"||r==="start"||r==="size"||r==="creation_time"||r==="modification_time")continue;if(n.DIFF_PRIMITIVE_ARRAY_PROP_NAMES.indexOf(r)>-1)continue;if(t[r]!==e[r])return!1}return!0},n.boxEqual=function(t,e){if(!n.boxEqualFields(t,e))return!1;for(var r=0;r<n.DIFF_BOXES_PROP_NAMES.length;r++){var s=n.DIFF_BOXES_PROP_NAMES[r];if(t[s]&&e[s]&&!n.boxEqual(t[s],e[s]))return!1}return!0};var x=function(){};x.prototype.parseSample=function(t){var e,r,s=new h(t.buffer);for(e=[];!s.isEos();)r=n.parseOneBox(s,!1),r.code===n.OK&&r.box.type==="vttc"&&e.push(r.box);return e},x.prototype.getText=function(t,e,r){function s(S,b,E){return E=E||"0",S=S+"",S.length>=b?S:new Array(b-S.length+1).join(E)+S}function a(S){var b=Math.floor(S/3600),E=Math.floor((S-b*3600)/60),B=Math.floor(S-b*3600-E*60),F=Math.floor((S-b*3600-E*60-B)*1e3);return""+s(b,2)+":"+s(E,2)+":"+s(B,2)+"."+s(F,3)}for(var u=this.parseSample(r),p="",_=0;_<u.length;_++){var U=u[_];p+=a(t)+" --> "+a(e)+\`\\r
|
|
2
|
+
\`,p+=U.payl.text}return p};var m=function(){};m.prototype.parseSample=function(t){var e={},r;e.resources=[];var s=new h(t.data.buffer);if(!t.subsamples||t.subsamples.length===0)e.documentString=s.readString(t.data.length);else if(e.documentString=s.readString(t.subsamples[0].size),t.subsamples.length>1)for(r=1;r<t.subsamples.length;r++)e.resources[r]=s.readUint8Array(t.subsamples[r].size);return typeof DOMParser<"u"&&(e.document=new DOMParser().parseFromString(e.documentString,"application/xml")),e};var w=function(){};w.prototype.parseSample=function(t){var e,r=new h(t.data.buffer);return e=r.readString(t.data.length),e},w.prototype.parseConfig=function(t){var e,r=new h(t.buffer);return r.readUint32(),e=r.readCString(),e},C.VTTin4Parser=x,C.XMLSubtitlein4Parser=m,C.Textin4Parser=w;var y=function(t){this.stream=t||new l,this.boxes=[],this.mdats=[],this.moofs=[],this.isProgressive=!1,this.moovStartFound=!1,this.onMoovStart=null,this.moovStartSent=!1,this.onReady=null,this.readySent=!1,this.onSegment=null,this.onSamples=null,this.onError=null,this.sampleListBuilt=!1,this.fragmentedTracks=[],this.extractedTracks=[],this.isFragmentationInitialized=!1,this.sampleProcessingStarted=!1,this.nextMoofNumber=0,this.itemListBuilt=!1,this.items=[],this.entity_groups=[],this.onSidx=null,this.sidxSent=!1};y.prototype.setSegmentOptions=function(t,e,r){var s=this.getTrackById(t);if(s){var a={};this.fragmentedTracks.push(a),a.id=t,a.user=e,a.trak=s,s.nextSample=0,a.segmentStream=null,a.nb_samples=1e3,a.rapAlignement=!0,r&&(r.nbSamples&&(a.nb_samples=r.nbSamples),r.rapAlignement&&(a.rapAlignement=r.rapAlignement))}},y.prototype.unsetSegmentOptions=function(t){for(var e=-1,r=0;r<this.fragmentedTracks.length;r++){var s=this.fragmentedTracks[r];s.id==t&&(e=r)}e>-1&&this.fragmentedTracks.splice(e,1)},y.prototype.setExtractionOptions=function(t,e,r){var s=this.getTrackById(t);if(s){var a={};this.extractedTracks.push(a),a.id=t,a.user=e,a.trak=s,s.nextSample=0,a.nb_samples=1e3,a.samples=[],r&&r.nbSamples&&(a.nb_samples=r.nbSamples)}},y.prototype.unsetExtractionOptions=function(t){for(var e=-1,r=0;r<this.extractedTracks.length;r++){var s=this.extractedTracks[r];s.id==t&&(e=r)}e>-1&&this.extractedTracks.splice(e,1)},y.prototype.parse=function(){var t,e,r=!1;if(!(this.restoreParsePosition&&!this.restoreParsePosition()))for(;;)if(this.hasIncompleteMdat&&this.hasIncompleteMdat()){if(this.processIncompleteMdat())continue;return}else if(this.saveParsePosition&&this.saveParsePosition(),t=n.parseOneBox(this.stream,r),t.code===n.ERR_NOT_ENOUGH_DATA)if(this.processIncompleteBox){if(this.processIncompleteBox(t))continue;return}else return;else{var s;switch(e=t.box,s=e.type!=="uuid"?e.type:e.uuid,this.boxes.push(e),s){case"mdat":this.mdats.push(e);break;case"moof":this.moofs.push(e);break;case"moov":this.moovStartFound=!0,this.mdats.length===0&&(this.isProgressive=!0);default:this[s]!==void 0&&f.warn("ISOFile","Duplicate Box of type: "+s+", overriding previous occurrence"),this[s]=e;break}this.updateUsedBytes&&this.updateUsedBytes(e,t)}},y.prototype.checkBuffer=function(t){if(t==null)throw"Buffer must be defined and non empty";if(t.fileStart===void 0)throw"Buffer must have a fileStart property";return t.byteLength===0?(f.warn("ISOFile","Ignoring empty buffer (fileStart: "+t.fileStart+")"),this.stream.logBufferLevel(),!1):(f.info("ISOFile","Processing buffer (fileStart: "+t.fileStart+")"),t.usedBytes=0,this.stream.insertBuffer(t),this.stream.logBufferLevel(),this.stream.initialized()?!0:(f.warn("ISOFile","Not ready to start parsing"),!1))},y.prototype.appendBuffer=function(t,e){var r;if(this.checkBuffer(t))return this.parse(),this.moovStartFound&&!this.moovStartSent&&(this.moovStartSent=!0,this.onMoovStart&&this.onMoovStart()),this.moov?(this.sampleListBuilt||(this.buildSampleLists(),this.sampleListBuilt=!0),this.updateSampleLists(),this.onReady&&!this.readySent&&(this.readySent=!0,this.onReady(this.getInfo())),this.processSamples(e),this.nextSeekPosition?(r=this.nextSeekPosition,this.nextSeekPosition=void 0):r=this.nextParsePosition,this.stream.getEndFilePositionAfter&&(r=this.stream.getEndFilePositionAfter(r))):this.nextParsePosition?r=this.nextParsePosition:r=0,this.sidx&&this.onSidx&&!this.sidxSent&&(this.onSidx(this.sidx),this.sidxSent=!0),this.meta&&(this.flattenItemInfo&&!this.itemListBuilt&&(this.flattenItemInfo(),this.itemListBuilt=!0),this.processItems&&this.processItems(this.onItem)),this.stream.cleanBuffers&&(f.info("ISOFile","Done processing buffer (fileStart: "+t.fileStart+") - next buffer to fetch should have a fileStart position of "+r),this.stream.logBufferLevel(),this.stream.cleanBuffers(),this.stream.logBufferLevel(!0),f.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize())),r},y.prototype.getInfo=function(){var t,e,r={},s,a,u,p,_=new Date("1904-01-01T00:00:00Z").getTime();if(this.moov)for(r.hasMoov=!0,r.duration=this.moov.mvhd.duration,r.timescale=this.moov.mvhd.timescale,r.isFragmented=this.moov.mvex!=null,r.isFragmented&&this.moov.mvex.mehd&&(r.fragment_duration=this.moov.mvex.mehd.fragment_duration),r.isProgressive=this.isProgressive,r.hasIOD=this.moov.iods!=null,r.brands=[],r.brands.push(this.ftyp.major_brand),r.brands=r.brands.concat(this.ftyp.compatible_brands),r.created=new Date(_+this.moov.mvhd.creation_time*1e3),r.modified=new Date(_+this.moov.mvhd.modification_time*1e3),r.tracks=[],r.audioTracks=[],r.videoTracks=[],r.subtitleTracks=[],r.metadataTracks=[],r.hintTracks=[],r.otherTracks=[],t=0;t<this.moov.traks.length;t++){if(s=this.moov.traks[t],p=s.mdia.minf.stbl.stsd.entries[0],a={},r.tracks.push(a),a.id=s.tkhd.track_id,a.name=s.mdia.hdlr.name,a.references=[],s.tref)for(e=0;e<s.tref.boxes.length;e++)u={},a.references.push(u),u.type=s.tref.boxes[e].type,u.track_ids=s.tref.boxes[e].track_ids;s.edts&&(a.edits=s.edts.elst.entries),a.created=new Date(_+s.tkhd.creation_time*1e3),a.modified=new Date(_+s.tkhd.modification_time*1e3),a.movie_duration=s.tkhd.duration,a.movie_timescale=r.timescale,a.layer=s.tkhd.layer,a.alternate_group=s.tkhd.alternate_group,a.volume=s.tkhd.volume,a.matrix=s.tkhd.matrix,a.track_width=s.tkhd.width/65536,a.track_height=s.tkhd.height/65536,a.timescale=s.mdia.mdhd.timescale,a.cts_shift=s.mdia.minf.stbl.cslg,a.duration=s.mdia.mdhd.duration,a.samples_duration=s.samples_duration,a.codec=p.getCodec(),a.kind=s.udta&&s.udta.kinds.length?s.udta.kinds[0]:{schemeURI:"",value:""},a.language=s.mdia.elng?s.mdia.elng.extended_language:s.mdia.mdhd.languageString,a.nb_samples=s.samples.length,a.size=s.samples_size,a.bitrate=a.size*8*a.timescale/a.samples_duration,p.isAudio()?(a.type="audio",r.audioTracks.push(a),a.audio={},a.audio.sample_rate=p.getSampleRate(),a.audio.channel_count=p.getChannelCount(),a.audio.sample_size=p.getSampleSize()):p.isVideo()?(a.type="video",r.videoTracks.push(a),a.video={},a.video.width=p.getWidth(),a.video.height=p.getHeight()):p.isSubtitle()?(a.type="subtitles",r.subtitleTracks.push(a)):p.isHint()?(a.type="metadata",r.hintTracks.push(a)):p.isMetadata()?(a.type="metadata",r.metadataTracks.push(a)):(a.type="metadata",r.otherTracks.push(a))}else r.hasMoov=!1;if(r.mime="",r.hasMoov&&r.tracks){for(r.videoTracks&&r.videoTracks.length>0?r.mime+='video/mp4; codecs="':r.audioTracks&&r.audioTracks.length>0?r.mime+='audio/mp4; codecs="':r.mime+='application/mp4; codecs="',t=0;t<r.tracks.length;t++)t!==0&&(r.mime+=","),r.mime+=r.tracks[t].codec;r.mime+='"; profiles="',r.mime+=this.ftyp.compatible_brands.join(),r.mime+='"'}return r},y.prototype.setNextSeekPositionFromSample=function(t){t&&(this.nextSeekPosition?this.nextSeekPosition=Math.min(t.offset+t.alreadyRead,this.nextSeekPosition):this.nextSeekPosition=t.offset+t.alreadyRead)},y.prototype.processSamples=function(t){var e,r;if(this.sampleProcessingStarted){if(this.isFragmentationInitialized&&this.onSegment!==null)for(e=0;e<this.fragmentedTracks.length;e++){var s=this.fragmentedTracks[e];for(r=s.trak;r.nextSample<r.samples.length&&this.sampleProcessingStarted;){f.debug("ISOFile","Creating media fragment on track #"+s.id+" for sample "+r.nextSample);var a=this.createFragment(s.id,r.nextSample,s.segmentStream);if(a)s.segmentStream=a,r.nextSample++;else break;if((r.nextSample%s.nb_samples===0||t||r.nextSample>=r.samples.length)&&(f.info("ISOFile","Sending fragmented data on track #"+s.id+" for samples ["+Math.max(0,r.nextSample-s.nb_samples)+","+(r.nextSample-1)+"]"),f.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize()),this.onSegment&&this.onSegment(s.id,s.user,s.segmentStream.buffer,r.nextSample,t||r.nextSample>=r.samples.length),s.segmentStream=null,s!==this.fragmentedTracks[e]))break}}if(this.onSamples!==null)for(e=0;e<this.extractedTracks.length;e++){var u=this.extractedTracks[e];for(r=u.trak;r.nextSample<r.samples.length&&this.sampleProcessingStarted;){f.debug("ISOFile","Exporting on track #"+u.id+" sample #"+r.nextSample);var p=this.getSample(r,r.nextSample);if(p)r.nextSample++,u.samples.push(p);else{this.setNextSeekPositionFromSample(r.samples[r.nextSample]);break}if((r.nextSample%u.nb_samples===0||r.nextSample>=r.samples.length)&&(f.debug("ISOFile","Sending samples on track #"+u.id+" for sample "+r.nextSample),this.onSamples&&this.onSamples(u.id,u.user,u.samples),u.samples=[],u!==this.extractedTracks[e]))break}}}},y.prototype.getBox=function(t){var e=this.getBoxes(t,!0);return e.length?e[0]:null},y.prototype.getBoxes=function(t,e){var r=[];return y._sweep.call(this,t,r,e),r},y._sweep=function(t,e,r){this.type&&this.type==t&&e.push(this);for(var s in this.boxes){if(e.length&&r)return;y._sweep.call(this.boxes[s],t,e,r)}},y.prototype.getTrackSamplesInfo=function(t){var e=this.getTrackById(t);if(e)return e.samples},y.prototype.getTrackSample=function(t,e){var r=this.getTrackById(t),s=this.getSample(r,e);return s},y.prototype.releaseUsedSamples=function(t,e){var r=0,s=this.getTrackById(t);s.lastValidSample||(s.lastValidSample=0);for(var a=s.lastValidSample;a<e;a++)r+=this.releaseSample(s,a);f.info("ISOFile","Track #"+t+" released samples up to "+e+" (released size: "+r+", remaining: "+this.samplesDataSize+")"),s.lastValidSample=e},y.prototype.start=function(){this.sampleProcessingStarted=!0,this.processSamples(!1)},y.prototype.stop=function(){this.sampleProcessingStarted=!1},y.prototype.flush=function(){f.info("ISOFile","Flushing remaining samples"),this.updateSampleLists(),this.processSamples(!0),this.stream.cleanBuffers(),this.stream.logBufferLevel(!0)},y.prototype.seekTrack=function(t,e,r){var s,a,u=1/0,p=0,_=0,U;if(r.samples.length===0)return f.info("ISOFile","No sample in track, cannot seek! Using time "+f.getDurationString(0,1)+" and offset: 0"),{offset:0,time:0};for(s=0;s<r.samples.length;s++){if(a=r.samples[s],s===0)_=0,U=a.timescale;else if(a.cts>t*a.timescale){_=s-1;break}e&&a.is_sync&&(p=s)}for(e&&(_=p),t=r.samples[_].cts,r.nextSample=_;r.samples[_].alreadyRead===r.samples[_].size&&r.samples[_+1];)_++;return u=r.samples[_].offset+r.samples[_].alreadyRead,f.info("ISOFile","Seeking to "+(e?"RAP":"")+" sample #"+r.nextSample+" on track "+r.tkhd.track_id+", time "+f.getDurationString(t,U)+" and offset: "+u),{offset:u,time:t/U}},y.prototype.getTrackDuration=function(t){var e;return t.samples?(e=t.samples[t.samples.length-1],(e.cts+e.duration)/e.timescale):1/0},y.prototype.seek=function(t,e){var r=this.moov,s,a,u,p={offset:1/0,time:1/0};if(this.moov){for(u=0;u<r.traks.length;u++)s=r.traks[u],!(t>this.getTrackDuration(s))&&(a=this.seekTrack(t,e,s),a.offset<p.offset&&(p.offset=a.offset),a.time<p.time&&(p.time=a.time));return f.info("ISOFile","Seeking at time "+f.getDurationString(p.time,1)+" needs a buffer with a fileStart position of "+p.offset),p.offset===1/0?p={offset:this.nextParsePosition,time:0}:p.offset=this.stream.getEndFilePositionAfter(p.offset),f.info("ISOFile","Adjusted seek position (after checking data already in buffer): "+p.offset),p}else throw"Cannot seek: moov not received!"},y.prototype.equal=function(t){for(var e=0;e<this.boxes.length&&e<t.boxes.length;){var r=this.boxes[e],s=t.boxes[e];if(!n.boxEqual(r,s))return!1;e++}return!0},C.ISOFile=y,y.prototype.lastBoxStartPosition=0,y.prototype.parsingMdat=null,y.prototype.nextParsePosition=0,y.prototype.discardMdatData=!1,y.prototype.processIncompleteBox=function(t){var e,r,s;return t.type==="mdat"?(e=new n[t.type+"Box"](t.size),this.parsingMdat=e,this.boxes.push(e),this.mdats.push(e),e.start=t.start,e.hdr_size=t.hdr_size,this.stream.addUsedBytes(e.hdr_size),this.lastBoxStartPosition=e.start+e.size,s=this.stream.seek(e.start+e.size,!1,this.discardMdatData),s?(this.parsingMdat=null,!0):(this.moovStartFound?this.nextParsePosition=this.stream.findEndContiguousBuf():this.nextParsePosition=e.start+e.size,!1)):(t.type==="moov"&&(this.moovStartFound=!0,this.mdats.length===0&&(this.isProgressive=!0)),r=this.stream.mergeNextBuffer?this.stream.mergeNextBuffer():!1,r?(this.nextParsePosition=this.stream.getEndPosition(),!0):(t.type?this.moovStartFound?this.nextParsePosition=this.stream.getEndPosition():this.nextParsePosition=this.stream.getPosition()+t.size:this.nextParsePosition=this.stream.getEndPosition(),!1))},y.prototype.hasIncompleteMdat=function(){return this.parsingMdat!==null},y.prototype.processIncompleteMdat=function(){var t,e;return t=this.parsingMdat,e=this.stream.seek(t.start+t.size,!1,this.discardMdatData),e?(f.debug("ISOFile","Found 'mdat' end in buffered data"),this.parsingMdat=null,!0):(this.nextParsePosition=this.stream.findEndContiguousBuf(),!1)},y.prototype.restoreParsePosition=function(){return this.stream.seek(this.lastBoxStartPosition,!0,this.discardMdatData)},y.prototype.saveParsePosition=function(){this.lastBoxStartPosition=this.stream.getPosition()},y.prototype.updateUsedBytes=function(t,e){this.stream.addUsedBytes&&(t.type==="mdat"?(this.stream.addUsedBytes(t.hdr_size),this.discardMdatData&&this.stream.addUsedBytes(t.size-t.hdr_size)):this.stream.addUsedBytes(t.size))},y.prototype.add=n.Box.prototype.add,y.prototype.addBox=n.Box.prototype.addBox,y.prototype.init=function(t){var e=t||{};this.add("ftyp").set("major_brand",e.brands&&e.brands[0]||"iso4").set("minor_version",0).set("compatible_brands",e.brands||["iso4"]);var r=this.add("moov");return r.add("mvhd").set("timescale",e.timescale||600).set("rate",e.rate||65536).set("creation_time",0).set("modification_time",0).set("duration",e.duration||0).set("volume",e.width?0:256).set("matrix",[65536,0,0,0,65536,0,0,0,1073741824]).set("next_track_id",1),r.add("mvex"),this},y.prototype.addTrack=function(t){this.moov||this.init(t);var e=t||{};e.width=e.width||320,e.height=e.height||320,e.id=e.id||this.moov.mvhd.next_track_id,e.type=e.type||"avc1";var r=this.moov.add("trak");this.moov.mvhd.next_track_id=e.id+1,r.add("tkhd").set("flags",n.TKHD_FLAG_ENABLED|n.TKHD_FLAG_IN_MOVIE|n.TKHD_FLAG_IN_PREVIEW).set("creation_time",0).set("modification_time",0).set("track_id",e.id).set("duration",e.duration||0).set("layer",e.layer||0).set("alternate_group",0).set("volume",1).set("matrix",[0,0,0,0,0,0,0,0,0]).set("width",e.width<<16).set("height",e.height<<16);var s=r.add("mdia");s.add("mdhd").set("creation_time",0).set("modification_time",0).set("timescale",e.timescale||1).set("duration",e.media_duration||0).set("language",e.language||"und"),s.add("hdlr").set("handler",e.hdlr||"vide").set("name",e.name||"Track created with MP4Box.js"),s.add("elng").set("extended_language",e.language||"fr-FR");var a=s.add("minf");if(n[e.type+"SampleEntry"]!==void 0){var u=new n[e.type+"SampleEntry"];u.data_reference_index=1;var p="";for(var _ in n.sampleEntryCodes)for(var U=n.sampleEntryCodes[_],S=0;S<U.length;S++)if(U.indexOf(e.type)>-1){p=_;break}switch(p){case"Visual":if(a.add("vmhd").set("graphicsmode",0).set("opcolor",[0,0,0]),u.set("width",e.width).set("height",e.height).set("horizresolution",72<<16).set("vertresolution",72<<16).set("frame_count",1).set("compressorname",e.type+" Compressor").set("depth",24),e.avcDecoderConfigRecord){var b=new n.avcCBox;b.parse(new h(e.avcDecoderConfigRecord)),u.addBox(b)}else if(e.hevcDecoderConfigRecord){var E=new n.hvcCBox;E.parse(new h(e.hevcDecoderConfigRecord)),u.addBox(E)}break;case"Audio":a.add("smhd").set("balance",e.balance||0),u.set("channel_count",e.channel_count||2).set("samplesize",e.samplesize||16).set("samplerate",e.samplerate||65536);break;case"Hint":a.add("hmhd");break;case"Subtitle":switch(a.add("sthd"),e.type){case"stpp":u.set("namespace",e.namespace||"nonamespace").set("schema_location",e.schema_location||"").set("auxiliary_mime_types",e.auxiliary_mime_types||"");break}break;case"Metadata":a.add("nmhd");break;case"System":a.add("nmhd");break;default:a.add("nmhd");break}e.description&&u.addBox(e.description),e.description_boxes&&e.description_boxes.forEach(function(F){u.addBox(F)}),a.add("dinf").add("dref").addEntry(new n["url Box"]().set("flags",1));var B=a.add("stbl");return B.add("stsd").addEntry(u),B.add("stts").set("sample_counts",[]).set("sample_deltas",[]),B.add("stsc").set("first_chunk",[]).set("samples_per_chunk",[]).set("sample_description_index",[]),B.add("stco").set("chunk_offsets",[]),B.add("stsz").set("sample_sizes",[]),this.moov.mvex.add("trex").set("track_id",e.id).set("default_sample_description_index",e.default_sample_description_index||1).set("default_sample_duration",e.default_sample_duration||0).set("default_sample_size",e.default_sample_size||0).set("default_sample_flags",e.default_sample_flags||0),this.buildTrakSampleLists(r),e.id}},n.Box.prototype.computeSize=function(t){var e=t||new o;e.endianness=o.BIG_ENDIAN,this.write(e)},y.prototype.addSample=function(t,e,r){var s=r||{},a={},u=this.getTrackById(t);if(u!==null){a.number=u.samples.length,a.track_id=u.tkhd.track_id,a.timescale=u.mdia.mdhd.timescale,a.description_index=s.sample_description_index?s.sample_description_index-1:0,a.description=u.mdia.minf.stbl.stsd.entries[a.description_index],a.data=e,a.size=e.byteLength,a.alreadyRead=a.size,a.duration=s.duration||1,a.cts=s.cts||0,a.dts=s.dts||0,a.is_sync=s.is_sync||!1,a.is_leading=s.is_leading||0,a.depends_on=s.depends_on||0,a.is_depended_on=s.is_depended_on||0,a.has_redundancy=s.has_redundancy||0,a.degradation_priority=s.degradation_priority||0,a.offset=0,a.subsamples=s.subsamples,u.samples.push(a),u.samples_size+=a.size,u.samples_duration+=a.duration,u.first_dts===void 0&&(u.first_dts=s.dts),this.processSamples();var p=this.createSingleSampleMoof(a);return this.addBox(p),p.computeSize(),p.trafs[0].truns[0].data_offset=p.size+8,this.add("mdat").data=new Uint8Array(e),a}},y.prototype.createSingleSampleMoof=function(t){var e=0;t.is_sync?e=1<<25:e=65536;var r=new n.moofBox;r.add("mfhd").set("sequence_number",this.nextMoofNumber),this.nextMoofNumber++;var s=r.add("traf"),a=this.getTrackById(t.track_id);return s.add("tfhd").set("track_id",t.track_id).set("flags",n.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),s.add("tfdt").set("baseMediaDecodeTime",t.dts-(a.first_dts||0)),s.add("trun").set("flags",n.TRUN_FLAGS_DATA_OFFSET|n.TRUN_FLAGS_DURATION|n.TRUN_FLAGS_SIZE|n.TRUN_FLAGS_FLAGS|n.TRUN_FLAGS_CTS_OFFSET).set("data_offset",0).set("first_sample_flags",0).set("sample_count",1).set("sample_duration",[t.duration]).set("sample_size",[t.size]).set("sample_flags",[e]).set("sample_composition_time_offset",[t.cts-t.dts]),r},y.prototype.lastMoofIndex=0,y.prototype.samplesDataSize=0,y.prototype.resetTables=function(){var t,e,r,s,a,u,p,_;for(this.initial_duration=this.moov.mvhd.duration,this.moov.mvhd.duration=0,t=0;t<this.moov.traks.length;t++){e=this.moov.traks[t],e.tkhd.duration=0,e.mdia.mdhd.duration=0,r=e.mdia.minf.stbl.stco||e.mdia.minf.stbl.co64,r.chunk_offsets=[],s=e.mdia.minf.stbl.stsc,s.first_chunk=[],s.samples_per_chunk=[],s.sample_description_index=[],a=e.mdia.minf.stbl.stsz||e.mdia.minf.stbl.stz2,a.sample_sizes=[],u=e.mdia.minf.stbl.stts,u.sample_counts=[],u.sample_deltas=[],p=e.mdia.minf.stbl.ctts,p&&(p.sample_counts=[],p.sample_offsets=[]),_=e.mdia.minf.stbl.stss;var U=e.mdia.minf.stbl.boxes.indexOf(_);U!=-1&&(e.mdia.minf.stbl.boxes[U]=null)}},y.initSampleGroups=function(t,e,r,s,a){var u,p,_,U;function S(b,E,B){this.grouping_type=b,this.grouping_type_parameter=E,this.sbgp=B,this.last_sample_in_run=-1,this.entry_index=-1}for(e&&(e.sample_groups_info=[]),t.sample_groups_info||(t.sample_groups_info=[]),p=0;p<r.length;p++){for(U=r[p].grouping_type+"/"+r[p].grouping_type_parameter,_=new S(r[p].grouping_type,r[p].grouping_type_parameter,r[p]),e&&(e.sample_groups_info[U]=_),t.sample_groups_info[U]||(t.sample_groups_info[U]=_),u=0;u<s.length;u++)s[u].grouping_type===r[p].grouping_type&&(_.description=s[u],_.description.used=!0);if(a)for(u=0;u<a.length;u++)a[u].grouping_type===r[p].grouping_type&&(_.fragment_description=a[u],_.fragment_description.used=!0,_.is_fragment=!0)}if(e){if(a)for(p=0;p<a.length;p++)!a[p].used&&a[p].version>=2&&(U=a[p].grouping_type+"/0",_=new S(a[p].grouping_type,0),_.is_fragment=!0,e.sample_groups_info[U]||(e.sample_groups_info[U]=_))}else for(p=0;p<s.length;p++)!s[p].used&&s[p].version>=2&&(U=s[p].grouping_type+"/0",_=new S(s[p].grouping_type,0),t.sample_groups_info[U]||(t.sample_groups_info[U]=_))},y.setSampleGroupProperties=function(t,e,r,s){var a,u;e.sample_groups=[];for(a in s)if(e.sample_groups[a]={},e.sample_groups[a].grouping_type=s[a].grouping_type,e.sample_groups[a].grouping_type_parameter=s[a].grouping_type_parameter,r>=s[a].last_sample_in_run&&(s[a].last_sample_in_run<0&&(s[a].last_sample_in_run=0),s[a].entry_index++,s[a].entry_index<=s[a].sbgp.entries.length-1&&(s[a].last_sample_in_run+=s[a].sbgp.entries[s[a].entry_index].sample_count)),s[a].entry_index<=s[a].sbgp.entries.length-1?e.sample_groups[a].group_description_index=s[a].sbgp.entries[s[a].entry_index].group_description_index:e.sample_groups[a].group_description_index=-1,e.sample_groups[a].group_description_index!==0){var p;s[a].fragment_description?p=s[a].fragment_description:p=s[a].description,e.sample_groups[a].group_description_index>0?(e.sample_groups[a].group_description_index>65535?u=(e.sample_groups[a].group_description_index>>16)-1:u=e.sample_groups[a].group_description_index-1,p&&u>=0&&(e.sample_groups[a].description=p.entries[u])):p&&p.version>=2&&p.default_group_description_index>0&&(e.sample_groups[a].description=p.entries[p.default_group_description_index-1])}},y.process_sdtp=function(t,e,r){e&&(t?(e.is_leading=t.is_leading[r],e.depends_on=t.sample_depends_on[r],e.is_depended_on=t.sample_is_depended_on[r],e.has_redundancy=t.sample_has_redundancy[r]):(e.is_leading=0,e.depends_on=0,e.is_depended_on=0,e.has_redundancy=0))},y.prototype.buildSampleLists=function(){var t,e;for(t=0;t<this.moov.traks.length;t++)e=this.moov.traks[t],this.buildTrakSampleLists(e)},y.prototype.buildTrakSampleLists=function(t){var e,r,s,a,u,p,_,U,S,b,E,B,F,I,z,M,G,k,P,N,Y,j,R,O;if(t.samples=[],t.samples_duration=0,t.samples_size=0,r=t.mdia.minf.stbl.stco||t.mdia.minf.stbl.co64,s=t.mdia.minf.stbl.stsc,a=t.mdia.minf.stbl.stsz||t.mdia.minf.stbl.stz2,u=t.mdia.minf.stbl.stts,p=t.mdia.minf.stbl.ctts,_=t.mdia.minf.stbl.stss,U=t.mdia.minf.stbl.stsd,S=t.mdia.minf.stbl.subs,B=t.mdia.minf.stbl.stdp,b=t.mdia.minf.stbl.sbgps,E=t.mdia.minf.stbl.sgpds,k=-1,P=-1,N=-1,Y=-1,j=0,R=0,O=0,y.initSampleGroups(t,null,b,E),!(typeof a>"u")){for(e=0;e<a.sample_sizes.length;e++){var T={};T.number=e,T.track_id=t.tkhd.track_id,T.timescale=t.mdia.mdhd.timescale,T.alreadyRead=0,t.samples[e]=T,T.size=a.sample_sizes[e],t.samples_size+=T.size,e===0?(I=1,F=0,T.chunk_index=I,T.chunk_run_index=F,G=s.samples_per_chunk[F],M=0,F+1<s.first_chunk.length?z=s.first_chunk[F+1]-1:z=1/0):e<G?(T.chunk_index=I,T.chunk_run_index=F):(I++,T.chunk_index=I,M=0,I<=z||(F++,F+1<s.first_chunk.length?z=s.first_chunk[F+1]-1:z=1/0),T.chunk_run_index=F,G+=s.samples_per_chunk[F]),T.description_index=s.sample_description_index[T.chunk_run_index]-1,T.description=U.entries[T.description_index],T.offset=r.chunk_offsets[T.chunk_index-1]+M,M+=T.size,e>k&&(P++,k<0&&(k=0),k+=u.sample_counts[P]),e>0?(t.samples[e-1].duration=u.sample_deltas[P],t.samples_duration+=t.samples[e-1].duration,T.dts=t.samples[e-1].dts+t.samples[e-1].duration):T.dts=0,p?(e>=N&&(Y++,N<0&&(N=0),N+=p.sample_counts[Y]),T.cts=t.samples[e].dts+p.sample_offsets[Y]):T.cts=T.dts,_?(e==_.sample_numbers[j]-1?(T.is_sync=!0,j++):(T.is_sync=!1,T.degradation_priority=0),S&&S.entries[R].sample_delta+O==e+1&&(T.subsamples=S.entries[R].subsamples,O+=S.entries[R].sample_delta,R++)):T.is_sync=!0,y.process_sdtp(t.mdia.minf.stbl.sdtp,T,T.number),B?T.degradation_priority=B.priority[e]:T.degradation_priority=0,S&&S.entries[R].sample_delta+O==e&&(T.subsamples=S.entries[R].subsamples,O+=S.entries[R].sample_delta),(b.length>0||E.length>0)&&y.setSampleGroupProperties(t,T,e,t.sample_groups_info)}e>0&&(t.samples[e-1].duration=Math.max(t.mdia.mdhd.duration-t.samples[e-1].dts,0),t.samples_duration+=t.samples[e-1].duration)}},y.prototype.updateSampleLists=function(){var t,e,r,s,a,u,p,_,U,S,b,E,B,F,I;if(this.moov!==void 0){for(;this.lastMoofIndex<this.moofs.length;)if(U=this.moofs[this.lastMoofIndex],this.lastMoofIndex++,U.type=="moof")for(S=U,t=0;t<S.trafs.length;t++){for(b=S.trafs[t],E=this.getTrackById(b.tfhd.track_id),B=this.getTrexById(b.tfhd.track_id),b.tfhd.flags&n.TFHD_FLAG_SAMPLE_DESC?s=b.tfhd.default_sample_description_index:s=B?B.default_sample_description_index:1,b.tfhd.flags&n.TFHD_FLAG_SAMPLE_DUR?a=b.tfhd.default_sample_duration:a=B?B.default_sample_duration:0,b.tfhd.flags&n.TFHD_FLAG_SAMPLE_SIZE?u=b.tfhd.default_sample_size:u=B?B.default_sample_size:0,b.tfhd.flags&n.TFHD_FLAG_SAMPLE_FLAGS?p=b.tfhd.default_sample_flags:p=B?B.default_sample_flags:0,b.sample_number=0,b.sbgps.length>0&&y.initSampleGroups(E,b,b.sbgps,E.mdia.minf.stbl.sgpds,b.sgpds),e=0;e<b.truns.length;e++){var z=b.truns[e];for(r=0;r<z.sample_count;r++){F={},F.moof_number=this.lastMoofIndex,F.number_in_traf=b.sample_number,b.sample_number++,F.number=E.samples.length,b.first_sample_index=E.samples.length,E.samples.push(F),F.track_id=E.tkhd.track_id,F.timescale=E.mdia.mdhd.timescale,F.description_index=s-1,F.description=E.mdia.minf.stbl.stsd.entries[F.description_index],F.size=u,z.flags&n.TRUN_FLAGS_SIZE&&(F.size=z.sample_size[r]),E.samples_size+=F.size,F.duration=a,z.flags&n.TRUN_FLAGS_DURATION&&(F.duration=z.sample_duration[r]),E.samples_duration+=F.duration,E.first_traf_merged||r>0?F.dts=E.samples[E.samples.length-2].dts+E.samples[E.samples.length-2].duration:(b.tfdt?F.dts=b.tfdt.baseMediaDecodeTime:F.dts=0,E.first_traf_merged=!0),F.cts=F.dts,z.flags&n.TRUN_FLAGS_CTS_OFFSET&&(F.cts=F.dts+z.sample_composition_time_offset[r]),I=p,z.flags&n.TRUN_FLAGS_FLAGS?I=z.sample_flags[r]:r===0&&z.flags&n.TRUN_FLAGS_FIRST_FLAG&&(I=z.first_sample_flags),F.is_sync=!(I>>16&1),F.is_leading=I>>26&3,F.depends_on=I>>24&3,F.is_depended_on=I>>22&3,F.has_redundancy=I>>20&3,F.degradation_priority=I&65535;var M=!!(b.tfhd.flags&n.TFHD_FLAG_BASE_DATA_OFFSET),G=!!(b.tfhd.flags&n.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),k=!!(z.flags&n.TRUN_FLAGS_DATA_OFFSET),P=0;M?P=b.tfhd.base_data_offset:G||e===0?P=S.start:P=_,e===0&&r===0?k?F.offset=P+z.data_offset:F.offset=P:F.offset=_,_=F.offset+F.size,(b.sbgps.length>0||b.sgpds.length>0||E.mdia.minf.stbl.sbgps.length>0||E.mdia.minf.stbl.sgpds.length>0)&&y.setSampleGroupProperties(E,F,F.number_in_traf,b.sample_groups_info)}}if(b.subs){E.has_fragment_subsamples=!0;var N=b.first_sample_index;for(e=0;e<b.subs.entries.length;e++)N+=b.subs.entries[e].sample_delta,F=E.samples[N-1],F.subsamples=b.subs.entries[e].subsamples}}}},y.prototype.getSample=function(t,e){var r,s=t.samples[e];if(!this.moov)return null;if(!s.data)s.data=new Uint8Array(s.size),s.alreadyRead=0,this.samplesDataSize+=s.size,f.debug("ISOFile","Allocating sample #"+e+" on track #"+t.tkhd.track_id+" of size "+s.size+" (total: "+this.samplesDataSize+")");else if(s.alreadyRead==s.size)return s;for(;;){var a=this.stream.findPosition(!0,s.offset+s.alreadyRead,!1);if(a>-1){r=this.stream.buffers[a];var u=r.byteLength-(s.offset+s.alreadyRead-r.fileStart);if(s.size-s.alreadyRead<=u)return f.debug("ISOFile","Getting sample #"+e+" data (alreadyRead: "+s.alreadyRead+" offset: "+(s.offset+s.alreadyRead-r.fileStart)+" read size: "+(s.size-s.alreadyRead)+" full size: "+s.size+")"),o.memcpy(s.data.buffer,s.alreadyRead,r,s.offset+s.alreadyRead-r.fileStart,s.size-s.alreadyRead),r.usedBytes+=s.size-s.alreadyRead,this.stream.logBufferLevel(),s.alreadyRead=s.size,s;if(u===0)return null;f.debug("ISOFile","Getting sample #"+e+" partial data (alreadyRead: "+s.alreadyRead+" offset: "+(s.offset+s.alreadyRead-r.fileStart)+" read size: "+u+" full size: "+s.size+")"),o.memcpy(s.data.buffer,s.alreadyRead,r,s.offset+s.alreadyRead-r.fileStart,u),s.alreadyRead+=u,r.usedBytes+=u,this.stream.logBufferLevel()}else return null}},y.prototype.releaseSample=function(t,e){var r=t.samples[e];return r.data?(this.samplesDataSize-=r.size,r.data=null,r.alreadyRead=0,r.size):0},y.prototype.getAllocatedSampleDataSize=function(){return this.samplesDataSize},y.prototype.getCodecs=function(){var t,e="";for(t=0;t<this.moov.traks.length;t++){var r=this.moov.traks[t];t>0&&(e+=","),e+=r.mdia.minf.stbl.stsd.entries[0].getCodec()}return e},y.prototype.getTrexById=function(t){var e;if(!this.moov||!this.moov.mvex)return null;for(e=0;e<this.moov.mvex.trexs.length;e++){var r=this.moov.mvex.trexs[e];if(r.track_id==t)return r}return null},y.prototype.getTrackById=function(t){if(this.moov===void 0)return null;for(var e=0;e<this.moov.traks.length;e++){var r=this.moov.traks[e];if(r.tkhd.track_id==t)return r}return null},y.prototype.itemsDataSize=0,y.prototype.flattenItemInfo=function(){var t=this.items,e=this.entity_groups,r,s,a,u=this.meta;if(u!=null&&u.hdlr!==void 0&&u.iinf!==void 0){for(r=0;r<u.iinf.item_infos.length;r++)a={},a.id=u.iinf.item_infos[r].item_ID,t[a.id]=a,a.ref_to=[],a.name=u.iinf.item_infos[r].item_name,u.iinf.item_infos[r].protection_index>0&&(a.protection=u.ipro.protections[u.iinf.item_infos[r].protection_index-1]),u.iinf.item_infos[r].item_type?a.type=u.iinf.item_infos[r].item_type:a.type="mime",a.content_type=u.iinf.item_infos[r].content_type,a.content_encoding=u.iinf.item_infos[r].content_encoding;if(u.grpl)for(r=0;r<u.grpl.boxes.length;r++)entity_group={},entity_group.id=u.grpl.boxes[r].group_id,entity_group.entity_ids=u.grpl.boxes[r].entity_ids,entity_group.type=u.grpl.boxes[r].type,e[entity_group.id]=entity_group;if(u.iloc)for(r=0;r<u.iloc.items.length;r++){var p=u.iloc.items[r];switch(a=t[p.item_ID],p.data_reference_index!==0&&(f.warn("Item storage with reference to other files: not supported"),a.source=u.dinf.boxes[p.data_reference_index-1]),p.construction_method){case 0:break;case 1:break;case 2:f.warn("Item storage with construction_method : not supported");break}for(a.extents=[],a.size=0,s=0;s<p.extents.length;s++)a.extents[s]={},a.extents[s].offset=p.extents[s].extent_offset+p.base_offset,p.construction_method==1&&(a.extents[s].offset+=u.idat.start+u.idat.hdr_size),a.extents[s].length=p.extents[s].extent_length,a.extents[s].alreadyRead=0,a.size+=a.extents[s].length}if(u.pitm&&(t[u.pitm.item_id].primary=!0),u.iref)for(r=0;r<u.iref.references.length;r++){var _=u.iref.references[r];for(s=0;s<_.references.length;s++)t[_.from_item_ID].ref_to.push({type:_.type,id:_.references[s]})}if(u.iprp)for(var U=0;U<u.iprp.ipmas.length;U++){var S=u.iprp.ipmas[U];for(r=0;r<S.associations.length;r++){var b=S.associations[r];if(a=t[b.id],a||(a=e[b.id]),a)for(a.properties===void 0&&(a.properties={},a.properties.boxes=[]),s=0;s<b.props.length;s++){var E=b.props[s];if(E.property_index>0&&E.property_index-1<u.iprp.ipco.boxes.length){var B=u.iprp.ipco.boxes[E.property_index-1];a.properties[B.type]=B,a.properties.boxes.push(B)}}}}}},y.prototype.getItem=function(t){var e,r;if(!this.meta)return null;if(r=this.items[t],!r.data&&r.size)r.data=new Uint8Array(r.size),r.alreadyRead=0,this.itemsDataSize+=r.size,f.debug("ISOFile","Allocating item #"+t+" of size "+r.size+" (total: "+this.itemsDataSize+")");else if(r.alreadyRead===r.size)return r;for(var s=0;s<r.extents.length;s++){var a=r.extents[s];if(a.alreadyRead!==a.length){var u=this.stream.findPosition(!0,a.offset+a.alreadyRead,!1);if(u>-1){e=this.stream.buffers[u];var p=e.byteLength-(a.offset+a.alreadyRead-e.fileStart);if(a.length-a.alreadyRead<=p)f.debug("ISOFile","Getting item #"+t+" extent #"+s+" data (alreadyRead: "+a.alreadyRead+" offset: "+(a.offset+a.alreadyRead-e.fileStart)+" read size: "+(a.length-a.alreadyRead)+" full extent size: "+a.length+" full item size: "+r.size+")"),o.memcpy(r.data.buffer,r.alreadyRead,e,a.offset+a.alreadyRead-e.fileStart,a.length-a.alreadyRead),e.usedBytes+=a.length-a.alreadyRead,this.stream.logBufferLevel(),r.alreadyRead+=a.length-a.alreadyRead,a.alreadyRead=a.length;else return f.debug("ISOFile","Getting item #"+t+" extent #"+s+" partial data (alreadyRead: "+a.alreadyRead+" offset: "+(a.offset+a.alreadyRead-e.fileStart)+" read size: "+p+" full extent size: "+a.length+" full item size: "+r.size+")"),o.memcpy(r.data.buffer,r.alreadyRead,e,a.offset+a.alreadyRead-e.fileStart,p),a.alreadyRead+=p,r.alreadyRead+=p,e.usedBytes+=p,this.stream.logBufferLevel(),null}else return null}}return r.alreadyRead===r.size?r:null},y.prototype.releaseItem=function(t){var e=this.items[t];if(e.data){this.itemsDataSize-=e.size,e.data=null,e.alreadyRead=0;for(var r=0;r<e.extents.length;r++){var s=e.extents[r];s.alreadyRead=0}return e.size}else return 0},y.prototype.processItems=function(t){for(var e in this.items){var r=this.items[e];this.getItem(r.id),t&&!r.sent&&(t(r),r.sent=!0,r.data=null)}},y.prototype.hasItem=function(t){for(var e in this.items){var r=this.items[e];if(r.name===t)return r.id}return-1},y.prototype.getMetaHandler=function(){return this.meta?this.meta.hdlr.handler:null},y.prototype.getPrimaryItem=function(){return!this.meta||!this.meta.pitm?null:this.getItem(this.meta.pitm.item_id)},y.prototype.itemToFragmentedTrackFile=function(t){var e=t||{},r=null;if(e.itemId?r=this.getItem(e.itemId):r=this.getPrimaryItem(),r==null)return null;var s=new y;s.discardMdatData=!1;var a={type:r.type,description_boxes:r.properties.boxes};r.properties.ispe&&(a.width=r.properties.ispe.image_width,a.height=r.properties.ispe.image_height);var u=s.addTrack(a);return u?(s.addSample(u,r.data),s):null},y.prototype.write=function(t){for(var e=0;e<this.boxes.length;e++)this.boxes[e].write(t)},y.prototype.createFragment=function(t,e,r){var s=this.getTrackById(t),a=this.getSample(s,e);if(a==null)return this.setNextSeekPositionFromSample(s.samples[e]),null;var u=r||new o;u.endianness=o.BIG_ENDIAN;var p=this.createSingleSampleMoof(a);p.write(u),p.trafs[0].truns[0].data_offset=p.size+8,f.debug("MP4Box","Adjusting data_offset with new value "+p.trafs[0].truns[0].data_offset),u.adjustUint32(p.trafs[0].truns[0].data_offset_position,p.trafs[0].truns[0].data_offset);var _=new n.mdatBox;return _.data=a.data,_.write(u),u},y.writeInitializationSegment=function(t,e,r,s){var a;f.debug("ISOFile","Generating initialization segment");var u=new o;u.endianness=o.BIG_ENDIAN,t.write(u);var p=e.add("mvex");for(r&&p.add("mehd").set("fragment_duration",r),a=0;a<e.traks.length;a++)p.add("trex").set("track_id",e.traks[a].tkhd.track_id).set("default_sample_description_index",1).set("default_sample_duration",s).set("default_sample_size",0).set("default_sample_flags",65536);return e.write(u),u.buffer},y.prototype.save=function(t){var e=new o;e.endianness=o.BIG_ENDIAN,this.write(e),e.save(t)},y.prototype.getBuffer=function(){var t=new o;return t.endianness=o.BIG_ENDIAN,this.write(t),t.buffer},y.prototype.initializeSegmentation=function(){var t,e,r,s;for(this.onSegment===null&&f.warn("MP4Box","No segmentation callback set!"),this.isFragmentationInitialized||(this.isFragmentationInitialized=!0,this.nextMoofNumber=0,this.resetTables()),e=[],t=0;t<this.fragmentedTracks.length;t++){var a=new n.moovBox;a.mvhd=this.moov.mvhd,a.boxes.push(a.mvhd),r=this.getTrackById(this.fragmentedTracks[t].id),a.boxes.push(r),a.traks.push(r),s={},s.id=r.tkhd.track_id,s.user=this.fragmentedTracks[t].user,s.buffer=y.writeInitializationSegment(this.ftyp,a,this.moov.mvex&&this.moov.mvex.mehd?this.moov.mvex.mehd.fragment_duration:void 0,this.moov.traks[t].samples.length>0?this.moov.traks[t].samples[0].duration:0),e.push(s)}return e},n.Box.prototype.printHeader=function(t){this.size+=8,this.size>d&&(this.size+=8),this.type==="uuid"&&(this.size+=16),t.log(t.indent+"size:"+this.size),t.log(t.indent+"type:"+this.type)},n.FullBox.prototype.printHeader=function(t){this.size+=4,n.Box.prototype.printHeader.call(this,t),t.log(t.indent+"version:"+this.version),t.log(t.indent+"flags:"+this.flags)},n.Box.prototype.print=function(t){this.printHeader(t)},n.ContainerBox.prototype.print=function(t){this.printHeader(t);for(var e=0;e<this.boxes.length;e++)if(this.boxes[e]){var r=t.indent;t.indent+=" ",this.boxes[e].print(t),t.indent=r}},y.prototype.print=function(t){t.indent="";for(var e=0;e<this.boxes.length;e++)this.boxes[e]&&this.boxes[e].print(t)},n.mvhdBox.prototype.print=function(t){n.FullBox.prototype.printHeader.call(this,t),t.log(t.indent+"creation_time: "+this.creation_time),t.log(t.indent+"modification_time: "+this.modification_time),t.log(t.indent+"timescale: "+this.timescale),t.log(t.indent+"duration: "+this.duration),t.log(t.indent+"rate: "+this.rate),t.log(t.indent+"volume: "+(this.volume>>8)),t.log(t.indent+"matrix: "+this.matrix.join(", ")),t.log(t.indent+"next_track_id: "+this.next_track_id)},n.tkhdBox.prototype.print=function(t){n.FullBox.prototype.printHeader.call(this,t),t.log(t.indent+"creation_time: "+this.creation_time),t.log(t.indent+"modification_time: "+this.modification_time),t.log(t.indent+"track_id: "+this.track_id),t.log(t.indent+"duration: "+this.duration),t.log(t.indent+"volume: "+(this.volume>>8)),t.log(t.indent+"matrix: "+this.matrix.join(", ")),t.log(t.indent+"layer: "+this.layer),t.log(t.indent+"alternate_group: "+this.alternate_group),t.log(t.indent+"width: "+this.width),t.log(t.indent+"height: "+this.height)};var A={};A.createFile=function(t,e){var r=t!==void 0?t:!0,s=new y(e);return s.discardMdatData=!r,s},C.createFile=A.createFile}(K)),K}var Z=it(),rt=X(Z),W={exports:{}},$;function nt(){return $||($=1,function(C){var f={};C.exports=f,f.parse=function(h,o){for(var d=f.bin.readUshort,l=f.bin.readUint,v=0,c={},n=new Uint8Array(h),g=n.length-4;l(n,g)!=101010256;)g--;var v=g;v+=4,v+=4;var x=d(n,v);v+=2,d(n,v),v+=2;var m=l(n,v);v+=4;var w=l(n,v);v+=4,v=w;for(var y=0;y<x;y++){l(n,v),v+=4,v+=4,v+=4,v+=4,l(n,v),v+=4;var m=l(n,v);v+=4;var A=l(n,v);v+=4;var t=d(n,v),e=d(n,v+2),r=d(n,v+4);v+=6,v+=8;var s=l(n,v);v+=4,v+=t+e+r,f._readLocal(n,s,c,m,A,o)}return c},f._readLocal=function(h,o,d,l,c,n){var g=f.bin.readUshort,v=f.bin.readUint;v(h,o),o+=4,g(h,o),o+=2,g(h,o),o+=2;var x=g(h,o);o+=2,v(h,o),o+=4,v(h,o),o+=4,o+=8;var m=g(h,o);o+=2;var w=g(h,o);o+=2;var y=f.bin.readUTF8(h,o,m);if(o+=m,o+=w,n){d[y]={size:c,csize:l};return}var A=new Uint8Array(h.buffer,o);if(x==0)d[y]=new Uint8Array(A.buffer.slice(o,o+l));else if(x==8){var t=new Uint8Array(c);f.inflateRaw(A,t),d[y]=t}else throw"unknown compression method: "+x},f.inflateRaw=function(h,o){return f.F.inflate(h,o)},f.inflate=function(h,o){return h[0],h[1],f.inflateRaw(new Uint8Array(h.buffer,h.byteOffset+2,h.length-6),o)},f.deflate=function(h,o){o==null&&(o={level:6});var d=0,l=new Uint8Array(50+Math.floor(h.length*1.1));l[d]=120,l[d+1]=156,d+=2,d=f.F.deflateRaw(h,l,d,o.level);var c=f.adler(h,0,h.length);return l[d+0]=c>>>24&255,l[d+1]=c>>>16&255,l[d+2]=c>>>8&255,l[d+3]=c>>>0&255,new Uint8Array(l.buffer,0,d+4)},f.deflateRaw=function(h,o){o==null&&(o={level:6});var d=new Uint8Array(50+Math.floor(h.length*1.1)),l=f.F.deflateRaw(h,d,l,o.level);return new Uint8Array(d.buffer,0,l)},f.encode=function(h,o){o==null&&(o=!1);var d=0,l=f.bin.writeUint,c=f.bin.writeUshort,n={};for(var g in h){var v=!f._noNeed(g)&&!o,x=h[g],m=f.crc.crc(x,0,x.length);n[g]={cpr:v,usize:x.length,crc:m,file:v?f.deflateRaw(x):x}}for(var g in n)d+=n[g].file.length+30+46+2*f.bin.sizeUTF8(g);d+=22;var w=new Uint8Array(d),y=0,A=[];for(var g in n){var t=n[g];A.push(y),y=f._writeHeader(w,y,g,t,0)}var e=0,r=y;for(var g in n){var t=n[g];A.push(y),y=f._writeHeader(w,y,g,t,1,A[e++])}var s=y-r;return l(w,y,101010256),y+=4,y+=4,c(w,y,e),y+=2,c(w,y,e),y+=2,l(w,y,s),y+=4,l(w,y,r),y+=4,y+=2,w.buffer},f._noNeed=function(h){var o=h.split(".").pop().toLowerCase();return"png,jpg,jpeg,zip".indexOf(o)!=-1},f._writeHeader=function(h,o,d,l,c,n){var g=f.bin.writeUint,v=f.bin.writeUshort,x=l.file;g(h,o,c==0?67324752:33639248),o+=4,c==1&&(o+=2),v(h,o,20),o+=2,v(h,o,0),o+=2,v(h,o,l.cpr?8:0),o+=2,g(h,o,0),o+=4,g(h,o,l.crc),o+=4,g(h,o,x.length),o+=4,g(h,o,l.usize),o+=4,v(h,o,f.bin.sizeUTF8(d)),o+=2,v(h,o,0),o+=2,c==1&&(o+=2,o+=2,o+=6,g(h,o,n),o+=4);var m=f.bin.writeUTF8(h,o,d);return o+=m,c==0&&(h.set(x,o),o+=x.length),o},f.crc={table:function(){for(var h=new Uint32Array(256),o=0;o<256;o++){for(var d=o,l=0;l<8;l++)d&1?d=3988292384^d>>>1:d=d>>>1;h[o]=d}return h}(),update:function(h,o,d,l){for(var c=0;c<l;c++)h=f.crc.table[(h^o[d+c])&255]^h>>>8;return h},crc:function(h,o,d){return f.crc.update(4294967295,h,o,d)^4294967295}},f.adler=function(h,o,d){for(var l=1,c=0,n=o,g=o+d;n<g;){for(var v=Math.min(n+5552,g);n<v;)l+=h[n++],c+=l;l=l%65521,c=c%65521}return c<<16|l},f.bin={readUshort:function(h,o){return h[o]|h[o+1]<<8},writeUshort:function(h,o,d){h[o]=d&255,h[o+1]=d>>8&255},readUint:function(h,o){return h[o+3]*(256*256*256)+(h[o+2]<<16|h[o+1]<<8|h[o])},writeUint:function(h,o,d){h[o]=d&255,h[o+1]=d>>8&255,h[o+2]=d>>16&255,h[o+3]=d>>24&255},readASCII:function(h,o,d){for(var l="",c=0;c<d;c++)l+=String.fromCharCode(h[o+c]);return l},writeASCII:function(h,o,d){for(var l=0;l<d.length;l++)h[o+l]=d.charCodeAt(l)},pad:function(h){return h.length<2?"0"+h:h},readUTF8:function(h,o,d){for(var l="",c,n=0;n<d;n++)l+="%"+f.bin.pad(h[o+n].toString(16));try{c=decodeURIComponent(l)}catch{return f.bin.readASCII(h,o,d)}return c},writeUTF8:function(h,o,d){for(var l=d.length,c=0,n=0;n<l;n++){var g=d.charCodeAt(n);if(!(g&4294967168))h[o+c]=g,c++;else if(!(g&4294965248))h[o+c]=192|g>>6,h[o+c+1]=128|g>>0&63,c+=2;else if(!(g&4294901760))h[o+c]=224|g>>12,h[o+c+1]=128|g>>6&63,h[o+c+2]=128|g>>0&63,c+=3;else if(!(g&4294967295-(1<<21)+1))h[o+c]=240|g>>18,h[o+c+1]=128|g>>12&63,h[o+c+2]=128|g>>6&63,h[o+c+3]=128|g>>0&63,c+=4;else throw"e"}return c},sizeUTF8:function(h){for(var o=h.length,d=0,l=0;l<o;l++){var c=h.charCodeAt(l);if(!(c&4294967168))d++;else if(!(c&4294965248))d+=2;else if(!(c&4294901760))d+=3;else if(!(c&4294967295-(1<<21)+1))d+=4;else throw"e"}return d}},f.F={},f.F.deflateRaw=function(h,o,d,l){var c=[[0,0,0,0,0],[4,4,8,4,0],[4,5,16,8,0],[4,6,16,16,0],[4,10,16,32,0],[8,16,32,32,0],[8,16,128,128,0],[8,32,128,256,0],[32,128,258,1024,1],[32,258,258,4096,1]],n=c[l],g=f.F.U,v=f.F._goodIndex;f.F._hash;var x=f.F._putsE,m=0,w=d<<3,y=0,A=h.length;if(l==0){for(;m<A;){var t=Math.min(65535,A-m);x(o,w,m+t==A?1:0),w=f.F._copyExact(h,m,t,o,w+8),m+=t}return w>>>3}var e=g.lits,r=g.strt,s=g.prev,a=0,u=0,p=0,_=0,U=0,S=0;for(A>2&&(S=f.F._hash(h,0),r[S]=0),m=0;m<A;m++){if(U=S,m+1<A-2){S=f.F._hash(h,m+1);var b=m+1&32767;s[b]=r[S],r[S]=b}if(y<=m){(a>14e3||u>26697)&&A-m>100&&(y<m&&(e[a]=m-y,a+=2,y=m),w=f.F._writeBlock(m==A-1||y==A?1:0,e,a,_,h,p,m-p,o,w),a=u=_=0,p=m);var E=0;m<A-2&&(E=f.F._bestMatch(h,m,s,U,Math.min(n[2],A-m),n[3]));var t=E>>>16,B=E&65535;if(E!=0){var t=E>>>16,B=E&65535,F=v(t,g.of0);g.lhst[257+F]++;var I=v(B,g.df0);g.dhst[I]++,_+=g.exb[F]+g.dxb[I],e[a]=t<<23|m-y,e[a+1]=B<<16|F<<8|I,a+=2,y=m+t}else g.lhst[h[m]]++;u++}}for((p!=m||h.length==0)&&(y<m&&(e[a]=m-y,a+=2,y=m),w=f.F._writeBlock(1,e,a,_,h,p,m-p,o,w),a=0,u=0,a=u=_=0,p=m);w&7;)w++;return w>>>3},f.F._bestMatch=function(h,o,d,l,c,n){var g=o&32767,v=d[g],x=g-v+32768&32767;if(v==g||l!=f.F._hash(h,o-x))return 0;for(var m=0,w=0,y=Math.min(32767,o);x<=y&&--n!=0&&v!=g;){if(m==0||h[o+m]==h[o+m-x]){var A=f.F._howLong(h,o,x);if(A>m){if(m=A,w=x,m>=c)break;x+2<A&&(A=x+2);for(var t=0,e=0;e<A-2;e++){var r=o-x+e+32768&32767,s=d[r],a=r-s+32768&32767;a>t&&(t=a,v=r)}}}g=v,v=d[g],x+=g-v+32768&32767}return m<<16|w},f.F._howLong=function(h,o,d){if(h[o]!=h[o-d]||h[o+1]!=h[o+1-d]||h[o+2]!=h[o+2-d])return 0;var l=o,c=Math.min(h.length,o+258);for(o+=3;o<c&&h[o]==h[o-d];)o++;return o-l},f.F._hash=function(h,o){return(h[o]<<8|h[o+1])+(h[o+2]<<4)&65535},f.saved=0,f.F._writeBlock=function(h,o,d,l,c,n,g,v,x){var m=f.F.U,w=f.F._putsF,y=f.F._putsE,A,t,e,r,s,a,u,p,_;m.lhst[256]++,A=f.F.getTrees(),t=A[0],e=A[1],r=A[2],s=A[3],a=A[4],u=A[5],p=A[6],_=A[7];var U=(x+3&7?8-(x+3&7):0)+32+(g<<3),S=l+f.F.contSize(m.fltree,m.lhst)+f.F.contSize(m.fdtree,m.dhst),b=l+f.F.contSize(m.ltree,m.lhst)+f.F.contSize(m.dtree,m.dhst);b+=14+3*u+f.F.contSize(m.itree,m.ihst)+(m.ihst[16]*2+m.ihst[17]*3+m.ihst[18]*7);for(var E=0;E<286;E++)m.lhst[E]=0;for(var E=0;E<30;E++)m.dhst[E]=0;for(var E=0;E<19;E++)m.ihst[E]=0;var B=U<S&&U<b?0:S<b?1:2;if(w(v,x,h),w(v,x+1,B),x+=3,B==0){for(;x&7;)x++;x=f.F._copyExact(c,n,g,v,x)}else{var F,I;if(B==1&&(F=m.fltree,I=m.fdtree),B==2){f.F.makeCodes(m.ltree,t),f.F.revCodes(m.ltree,t),f.F.makeCodes(m.dtree,e),f.F.revCodes(m.dtree,e),f.F.makeCodes(m.itree,r),f.F.revCodes(m.itree,r),F=m.ltree,I=m.dtree,y(v,x,s-257),x+=5,y(v,x,a-1),x+=5,y(v,x,u-4),x+=4;for(var z=0;z<u;z++)y(v,x+z*3,m.itree[(m.ordr[z]<<1)+1]);x+=3*u,x=f.F._codeTiny(p,m.itree,v,x),x=f.F._codeTiny(_,m.itree,v,x)}for(var M=n,G=0;G<d;G+=2){for(var k=o[G],P=k>>>23,N=M+(k&(1<<23)-1);M<N;)x=f.F._writeLit(c[M++],F,v,x);if(P!=0){var Y=o[G+1],j=Y>>16,R=Y>>8&255,O=Y&255;x=f.F._writeLit(257+R,F,v,x),y(v,x,P-m.of0[R]),x+=m.exb[R],x=f.F._writeLit(O,I,v,x),w(v,x,j-m.df0[O]),x+=m.dxb[O],M+=P}}x=f.F._writeLit(256,F,v,x)}return x},f.F._copyExact=function(h,o,d,l,c){var n=c>>>3;return l[n]=d,l[n+1]=d>>>8,l[n+2]=255-l[n],l[n+3]=255-l[n+1],n+=4,l.set(new Uint8Array(h.buffer,o,d),n),c+(d+4<<3)},f.F.getTrees=function(){for(var h=f.F.U,o=f.F._hufTree(h.lhst,h.ltree,15),d=f.F._hufTree(h.dhst,h.dtree,15),l=[],c=f.F._lenCodes(h.ltree,l),n=[],g=f.F._lenCodes(h.dtree,n),v=0;v<l.length;v+=2)h.ihst[l[v]]++;for(var v=0;v<n.length;v+=2)h.ihst[n[v]]++;for(var x=f.F._hufTree(h.ihst,h.itree,7),m=19;m>4&&h.itree[(h.ordr[m-1]<<1)+1]==0;)m--;return[o,d,x,c,g,m,l,n]},f.F.getSecond=function(h){for(var o=[],d=0;d<h.length;d+=2)o.push(h[d+1]);return o},f.F.nonZero=function(h){for(var o="",d=0;d<h.length;d+=2)h[d+1]!=0&&(o+=(d>>1)+",");return o},f.F.contSize=function(h,o){for(var d=0,l=0;l<o.length;l++)d+=o[l]*h[(l<<1)+1];return d},f.F._codeTiny=function(h,o,d,l){for(var c=0;c<h.length;c+=2){var n=h[c],g=h[c+1];l=f.F._writeLit(n,o,d,l);var v=n==16?2:n==17?3:7;n>15&&(f.F._putsE(d,l,g,v),l+=v)}return l},f.F._lenCodes=function(h,o){for(var d=h.length;d!=2&&h[d-1]==0;)d-=2;for(var l=0;l<d;l+=2){var c=h[l+1],n=l+3<d?h[l+3]:-1,g=l+5<d?h[l+5]:-1,v=l==0?-1:h[l-1];if(c==0&&n==c&&g==c){for(var x=l+5;x+2<d&&h[x+2]==c;)x+=2;var m=Math.min(x+1-l>>>1,138);m<11?o.push(17,m-3):o.push(18,m-11),l+=m*2-2}else if(c==v&&n==c&&g==c){for(var x=l+5;x+2<d&&h[x+2]==c;)x+=2;var m=Math.min(x+1-l>>>1,6);o.push(16,m-3),l+=m*2-2}else o.push(c,0)}return d>>>1},f.F._hufTree=function(h,o,d){var l=[],c=h.length,n=o.length,g=0;for(g=0;g<n;g+=2)o[g]=0,o[g+1]=0;for(g=0;g<c;g++)h[g]!=0&&l.push({lit:g,f:h[g]});var v=l.length,x=l.slice(0);if(v==0)return 0;if(v==1){var m=l[0].lit,x=m==0?1:0;return o[(m<<1)+1]=1,o[(x<<1)+1]=1,1}l.sort(function(s,a){return s.f-a.f});var w=l[0],y=l[1],A=0,t=1,e=2;for(l[0]={lit:-1,f:w.f+y.f,l:w,r:y,d:0};t!=v-1;)A!=t&&(e==v||l[A].f<l[e].f)?w=l[A++]:w=l[e++],A!=t&&(e==v||l[A].f<l[e].f)?y=l[A++]:y=l[e++],l[t++]={lit:-1,f:w.f+y.f,l:w,r:y};var r=f.F.setDepth(l[t-1],0);for(r>d&&(f.F.restrictDepth(x,d,r),r=d),g=0;g<v;g++)o[(x[g].lit<<1)+1]=x[g].d;return r},f.F.setDepth=function(h,o){return h.lit!=-1?(h.d=o,o):Math.max(f.F.setDepth(h.l,o+1),f.F.setDepth(h.r,o+1))},f.F.restrictDepth=function(h,o,d){var l=0,c=1<<d-o,n=0;for(h.sort(function(v,x){return x.d==v.d?v.f-x.f:x.d-v.d}),l=0;l<h.length&&h[l].d>o;l++){var g=h[l].d;h[l].d=o,n+=c-(1<<d-g)}for(n=n>>>d-o;n>0;){var g=h[l].d;g<o?(h[l].d++,n-=1<<o-g-1):l++}for(;l>=0;l--)h[l].d==o&&n<0&&(h[l].d--,n++);n!=0&&console.log("debt left")},f.F._goodIndex=function(h,o){var d=0;return o[d|16]<=h&&(d|=16),o[d|8]<=h&&(d|=8),o[d|4]<=h&&(d|=4),o[d|2]<=h&&(d|=2),o[d|1]<=h&&(d|=1),d},f.F._writeLit=function(h,o,d,l){return f.F._putsF(d,l,o[h<<1]),l+o[(h<<1)+1]},f.F.inflate=function(h,o){var d=Uint8Array;if(h[0]==3&&h[1]==0)return o||new d(0);var l=f.F,c=l._bitsF,n=l._bitsE,g=l._decodeTiny,v=l.makeCodes,x=l.codes2map,m=l._get17,w=l.U,y=o==null;y&&(o=new d(h.length>>>2<<3));for(var A=0,t=0,e=0,r=0,s=0,a=0,u=0,p=0,_=0,U,S;A==0;){if(A=c(h,_,1),t=c(h,_+1,2),_+=3,t==0){_&7&&(_+=8-(_&7));var b=(_>>>3)+4,E=h[b-4]|h[b-3]<<8;y&&(o=f.F._check(o,p+E)),o.set(new d(h.buffer,h.byteOffset+b,E),p),_=b+E<<3,p+=E;continue}if(y&&(o=f.F._check(o,p+(1<<17))),t==1&&(U=w.flmap,S=w.fdmap,a=511,u=31),t==2){e=n(h,_,5)+257,r=n(h,_+5,5)+1,s=n(h,_+10,4)+4,_+=14;for(var B=0;B<38;B+=2)w.itree[B]=0,w.itree[B+1]=0;for(var F=1,B=0;B<s;B++){var I=n(h,_+B*3,3);w.itree[(w.ordr[B]<<1)+1]=I,I>F&&(F=I)}_+=3*s,v(w.itree,F),x(w.itree,F,w.imap),U=w.lmap,S=w.dmap,_=g(w.imap,(1<<F)-1,e+r,h,_,w.ttree);var z=l._copyOut(w.ttree,0,e,w.ltree);a=(1<<z)-1;var M=l._copyOut(w.ttree,e,r,w.dtree);u=(1<<M)-1,v(w.ltree,z),x(w.ltree,z,U),v(w.dtree,M),x(w.dtree,M,S)}for(;;){var G=U[m(h,_)&a];_+=G&15;var k=G>>>4;if(!(k>>>8))o[p++]=k;else{if(k==256)break;var P=p+k-254;if(k>264){var N=w.ldef[k-257];P=p+(N>>>3)+n(h,_,N&7),_+=N&7}var Y=S[m(h,_)&u];_+=Y&15;var j=Y>>>4,R=w.ddef[j],O=(R>>>4)+c(h,_,R&15);for(_+=R&15,y&&(o=f.F._check(o,p+(1<<17)));p<P;)o[p]=o[p++-O],o[p]=o[p++-O],o[p]=o[p++-O],o[p]=o[p++-O];p=P}}}return o.length==p?o:o.slice(0,p)},f.F._check=function(h,o){var d=h.length;if(o<=d)return h;var l=new Uint8Array(Math.max(d<<1,o));return l.set(h,0),l},f.F._decodeTiny=function(h,o,d,l,c,n){for(var g=f.F._bitsE,v=f.F._get17,x=0;x<d;){var m=h[v(l,c)&o];c+=m&15;var w=m>>>4;if(w<=15)n[x]=w,x++;else{var y=0,A=0;w==16?(A=3+g(l,c,2),c+=2,y=n[x-1]):w==17?(A=3+g(l,c,3),c+=3):w==18&&(A=11+g(l,c,7),c+=7);for(var t=x+A;x<t;)n[x]=y,x++}}return c},f.F._copyOut=function(h,o,d,l){for(var c=0,n=0,g=l.length>>>1;n<d;){var v=h[n+o];l[n<<1]=0,l[(n<<1)+1]=v,v>c&&(c=v),n++}for(;n<g;)l[n<<1]=0,l[(n<<1)+1]=0,n++;return c},f.F.makeCodes=function(h,o){for(var d=f.F.U,l=h.length,c,n,g,v,x,m=d.bl_count,v=0;v<=o;v++)m[v]=0;for(v=1;v<l;v+=2)m[h[v]]++;var w=d.next_code;for(c=0,m[0]=0,n=1;n<=o;n++)c=c+m[n-1]<<1,w[n]=c;for(g=0;g<l;g+=2)x=h[g+1],x!=0&&(h[g]=w[x],w[x]++)},f.F.codes2map=function(h,o,d){for(var l=h.length,c=f.F.U,n=c.rev15,g=0;g<l;g+=2)if(h[g+1]!=0)for(var v=g>>1,x=h[g+1],m=v<<4|x,w=o-x,y=h[g]<<w,A=y+(1<<w);y!=A;){var t=n[y]>>>15-o;d[t]=m,y++}},f.F.revCodes=function(h,o){for(var d=f.F.U.rev15,l=15-o,c=0;c<h.length;c+=2){var n=h[c]<<o-h[c+1];h[c]=d[n]>>>l}},f.F._putsE=function(h,o,d){d=d<<(o&7);var l=o>>>3;h[l]|=d,h[l+1]|=d>>>8},f.F._putsF=function(h,o,d){d=d<<(o&7);var l=o>>>3;h[l]|=d,h[l+1]|=d>>>8,h[l+2]|=d>>>16},f.F._bitsE=function(h,o,d){return(h[o>>>3]|h[(o>>>3)+1]<<8)>>>(o&7)&(1<<d)-1},f.F._bitsF=function(h,o,d){return(h[o>>>3]|h[(o>>>3)+1]<<8|h[(o>>>3)+2]<<16)>>>(o&7)&(1<<d)-1},f.F._get17=function(h,o){return(h[o>>>3]|h[(o>>>3)+1]<<8|h[(o>>>3)+2]<<16)>>>(o&7)},f.F._get25=function(h,o){return(h[o>>>3]|h[(o>>>3)+1]<<8|h[(o>>>3)+2]<<16|h[(o>>>3)+3]<<24)>>>(o&7)},f.F.U=function(){var h=Uint16Array,o=Uint32Array;return{next_code:new h(16),bl_count:new h(16),ordr:[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],of0:[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,999,999,999],exb:[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0],ldef:new h(32),df0:[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,65535,65535],dxb:[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0],ddef:new o(32),flmap:new h(512),fltree:[],fdmap:new h(32),fdtree:[],lmap:new h(32768),ltree:[],ttree:[],dmap:new h(32768),dtree:[],imap:new h(512),itree:[],rev15:new h(32768),lhst:new o(286),dhst:new o(30),ihst:new o(19),lits:new o(15e3),strt:new h(65536),prev:new h(32768)}}(),function(){for(var h=f.F.U,o=32768,d=0;d<o;d++){var l=d;l=(l&2863311530)>>>1|(l&1431655765)<<1,l=(l&3435973836)>>>2|(l&858993459)<<2,l=(l&4042322160)>>>4|(l&252645135)<<4,l=(l&4278255360)>>>8|(l&16711935)<<8,h.rev15[d]=(l>>>16|l<<16)>>>17}function c(n,g,v){for(;g--!=0;)n.push(0,v)}for(var d=0;d<32;d++)h.ldef[d]=h.of0[d]<<3|h.exb[d],h.ddef[d]=h.df0[d]<<4|h.dxb[d];c(h.fltree,144,8),c(h.fltree,112,9),c(h.fltree,24,7),c(h.fltree,8,8),f.F.makeCodes(h.fltree,9),f.F.codes2map(h.fltree,9,h.flmap),f.F.revCodes(h.fltree,9),c(h.fdtree,32,5),f.F.makeCodes(h.fdtree,5),f.F.codes2map(h.fdtree,5,h.fdmap),f.F.revCodes(h.fdtree,5),c(h.itree,19,0),c(h.ltree,286,0),c(h.dtree,30,0),c(h.ttree,320,0)}()}(W)),W.exports}var st=nt(),ot=X(st);const D=class D{constructor(f,h,o,d,l){this.copy=()=>new D(this.h,this.m,this.s,this.f,this.field),this.print=()=>{const c=":";let n=("0"+this.h).slice(-2)+c+("0"+this.m).slice(-2)+c+("0"+this.s).slice(-2)+c+("0"+this.f).slice(-2);return n+="."+(this.field?"1":"2"),n},this.toZipTimeCodeString=()=>{const c=this.copy();return c.f=0,c.s=c.s%2===0?c.s:c.s-1,c.field=0,D.toStr(c)},this.toFrames=c=>{let n=60,g=0;Math.floor(c)==60?(n=60,g=0):Math.floor(c)==59?(n=60,g=4):Math.floor(c)==30?(n=30,g=0):Math.floor(c)==29&&(n=30,g=2);let v=this.h,x=this.m,m=this.s,w=this.f,y=this.field;const A=v*60+x,e=(A-Math.floor(A/10))*g;return v*(n*3600)+x*(n*60)+m*n+(w*2+y)-e},this.addSeconds=c=>{let n=this.copy();return n.s+=c,n.s>=60&&(n.s=0,n.m++,n.m>=60&&(n.m=0,n.h++)),n},this.addFrames=(c,n)=>{let g=this.toFrames(n);return g+=c,D.fromFrames(g,n)},this.subtractFrames=(c,n)=>this.addFrames(-c,n),this.h=f||0,this.m=h||0,this.s=o||0,this.f=d||0,this.field=l||0}static compare(f,h){return f.h!==h.h?f.h<h.h?-1:1:f.m!==h.m?f.m<h.m?-1:1:f.s!==h.s?f.s<h.s?-1:1:f.f!==h.f?f.f<h.f?-1:1:f.field!==h.field?f.field<h.field?-1:1:0}static generateTimecodeRange(f,h,o){const d=[];let l=f;for(;D.compare(l,h)<=0;)d.push(l),l=l.addSeconds(o);return d}totalSeconds(){return this.h*3600+this.m*60+this.s}totalMilliseconds(f){return this.toFrames(f)*1e3/f}};D.calculateCurrentTimeCode=f=>{var m;if(!f.video||!f.clocker||!f.gameParams)throw new Error("OTTPlayer is not initialized");const h=f.video,o=f.clocker,d=o.videoFPScalculator.getFPS(),n=(h.currentTime-o.syncPoint.playerTime)%(60*60*24)*d+o.syncPoint.frame;if(n===0||d===0)throw new Error("Current frame is 0 or fps is 0");const g=D.calculateCurrentOffset(n,(m=f.gameParams)==null?void 0:m.offsets);if(g===void 0)throw new Error("Offset is undefined");let v=Math.floor(n-g);return v<0&&(v+=5178816),v>=5178816&&(v-=5178816),D.fromFrames(v,d)},D.calculateCurrentOffset=(f,h)=>{for(let o=1;o<h.length;o++)if(f<h[o].frame)return h[o-1].offset;return h[h.length-1].offset},D.fromFrames=(f,h)=>{let o=60,d=0;Math.floor(h)==60?(o=60,d=0):Math.floor(h)==59?(o=60,d=4):Math.floor(h)==30?(o=30,d=0):Math.floor(h)==29&&(o=30,d=2);let l=Math.floor(h*60),c=Math.floor(h*60*10),n=c*6,g=f,v=Math.floor(g/n);g-=v*n;let x=Math.floor(g/c);g-=x*c,g>=o*60&&(g+=d*(Math.floor((g-o*60)/l)+1));let m=Math.floor(g/(o*60));g-=m*(o*60);let w=Math.floor(g/o);g-=w*o;let y=g;m+=x*10;let A=0;return A=y%2,y=Math.floor(y/2),new D(v,m,w,y,A)},D.toStr=f=>{const h="_";let o=("0"+f.h).slice(-2)+h+("0"+f.m).slice(-2)+h+("0"+f.s).slice(-2)+h+("0"+f.f).slice(-2);return f.field&&(o+="_1"),o},D.fromStr=f=>{const o=f.split("_").map(Number);if(o.length==4){const[d,l,c,n]=o;return new D(d,l,c,n,0)}else if(o.length==5){const[d,l,c,n,g]=o;return new D(d,l,c,n,g)}else throw new Error("Invalid timecode format: "+f)},D.fromMetadata=f=>{const h=/^(\\d{2}):(\\d{2}):(\\d{2}):(\\d{2})(?:\\.(\\d))?$/,o=f.timecode.match(h);if(!o)throw new Error("Invalid timecode format: "+f.timecode);const[,d,l,c,n,g]=o,v=Number(d),x=Number(l),m=Number(c),w=Number(n),y=g?Number(g):0;return new D(v,x,m,w,y)};let H=D;const tt=5,at=200;class ht{constructor(f,h){this.videoDecoder=null,this.reservedVideoDecoder=null,this.currentTimecode="",this.fps=0,this.unchunkedJobs=[],this.jobChunking=null,this.jobsQueue=[],this.chunksQueue=[],this.chunksForDecodingFrames=[],this.processedMetadata=[],this.videoDecoderConfigured=!1,this.reservedVideoDecoderConfigured=!1,this.addJob=(o,d)=>{const{alphaMp4:l,metadataList:c}=this.parseZipAndMetadata(d);if(!l){this.options&&L(this.options,"Decoder")&&console.log("[Decoder] No alpha.mp4 found, no decoding needed.");return}const n={timeCode:o,alphaMp4:l,metadata:c,chunks:[],totalFrameCount:c.length,framesProcessed:0,framesSentToDecoder:0,useReserveDecoder:c.length<3};this.jobChunking?this.unchunkedJobs.push(n):(this.jobChunking=n,this.chunkJob(n)),this.options&&L(this.options,"Decoder")&&console.log("[Decoder] Added job:",n)},this.clearOldJobsAndChunks=o=>{const l=H.fromStr(this.currentTimecode).totalMilliseconds(this.fps)-o;this.unchunkedJobs=this.unchunkedJobs.filter(c=>H.fromStr(c.timeCode).totalMilliseconds(this.fps)>l),this.jobsQueue=this.jobsQueue.filter(c=>H.fromStr(c.timeCode).totalMilliseconds(this.fps)>l),this.chunksQueue=this.chunksQueue.filter(c=>H.fromStr(c.timeCode).totalMilliseconds(this.fps)>l)},this.updateCurrentTimecode=(o,d)=>{this.currentTimecode=o,this.fps=d,this.clearOldJobsAndChunks(2100),this.decodeUpcomingChunks()},this.setupMP4Box=(o=!1)=>{const d=rt.createFile();return d.onError=l=>{this.options&&L(this.options,"Errors")&&console.error("[Decoder] MP4 parsing error:",l)},d.onReady=l=>{const c=l.tracks.find(n=>n.type==="video");if(c){if(!(o?this.reservedVideoDecoderConfigured:this.videoDecoderConfigured)){this.options&&L(this.options,"Decoder")&&console.error("[Decoder] Starting a new VideoDecoder");let g;o?(this.reservedVideoDecoder=new VideoDecoder({output:this.onFrameDecoded,error:this.onDecoderError}),g=this.reservedVideoDecoder):(this.videoDecoder=new VideoDecoder({output:this.onFrameDecoded,error:this.onDecoderError}),g=this.videoDecoder),g.configure({codec:c.codec,codedWidth:c.video.width,codedHeight:c.video.height,description:this.getDescription(d.getTrackById(c.id)),hardwareAcceleration:"prefer-hardware",optimizeForLatency:!0}),o?this.reservedVideoDecoderConfigured=!0:this.videoDecoderConfigured=!0}d.setExtractionOptions(c.id),d.start()}},d.onSamples=async(l,c,n)=>{const g=[];for(const v of n){const x=new EncodedVideoChunk({type:v.is_sync?"key":"delta",timestamp:v.cts,data:new Uint8Array(v.data)});g.push(x)}this.storeChunks(g)},d},this.chunkJob=async o=>{this.mp4boxfile=this.setupMP4Box(o.useReserveDecoder);const l=await new Blob([o.alphaMp4],{type:"video/mp4"}).arrayBuffer();l.fileStart=0,this.mp4boxfile.appendBuffer(l)},this.storeChunks=o=>{this.options&&L(this.options,"Decoder")&&console.log("[Decoder] Storing chunks:",o);const d=this.jobChunking;if(this.unchunkedJobs.length>0){const c=this.unchunkedJobs.shift();this.jobChunking=c,this.chunkJob(c)}else this.jobChunking=null;const l=d==null?void 0:d.metadata.map((c,n)=>({timeCode:c.timecode,chunk:o[n],metadata:c,job:d,cancelled:!1}));d.chunks=l,this.chunksQueue.push(...l),this.jobsQueue.push(d),this.options&&L(this.options,"Decoder")&&console.log("[Decoder] Jobs Queue:",this.jobsQueue),this.options&&L(this.options,"Decoder")&&console.log("[Decoder] Chunks Queue:",this.chunksQueue)},this.onFrameDecoded=o=>{this.options&&L(this.options,"Decoder")&&console.log("[Decoder] Frame decoded:",o);const d=this.chunksForDecodingFrames.shift();if(!d){this.options&&L(this.options,"Errors")&&console.error("[Decoder] No current chunk for a processed frame");return}if(d.cancelled){this.options&&L(this.options,"Decoder")&&console.log("[Decoder] Skipping cancelled chunk:",d.timeCode),o.close();return}const l=d.metadata;d.job.framesProcessed++,l.alphaMask=o,this.processedMetadata.push(l),(this.processedMetadata.length>=tt||d.job.framesProcessed>=d.job.totalFrameCount)&&(this.postBatchToRenderer(this.processedMetadata),this.processedMetadata.forEach(c=>c.alphaMask.close()),this.processedMetadata=[])},this.onDecoderError=o=>{this.options&&L(this.options,"Errors")&&console.error("[Decoder] VideoDecoder error:",o),this.videoDecoderConfigured=!1,this.reservedVideoDecoderConfigured=!1;const d=this.chunksForDecodingFrames.shift();if(!d){this.options&&L(this.options,"Errors")&&console.error("[Decoder] No broken chunk for an error");return}const l=d.job;l&&l.chunks.forEach(c=>c.cancelled=!0)},this.parseZipAndMetadata=o=>{const d=ot.parse(o),l=d["alpha.mp4"]||null,c=Object.keys(d).filter(n=>n.endsWith(".json")).sort(this.numericFileComparator).map(n=>{const g=JSON.parse(new TextDecoder().decode(d[n]));return g.timecode=H.toStr(H.fromMetadata(g)),g}).filter(n=>n.placeholders);return{alphaMp4:l,metadataList:c}},this.numericFileComparator=(o,d)=>{const l=/^(\\d{2})_(\\d{2})_(\\d{2})_(\\d{2})(?:\\.(\\d+))?\\.(.+)$/,c=o.match(l),n=d.match(l);if(!c||!n)return 0;const[,g,v,x,m,w="0",y]=c,[,A,t,e,r,s="0",a]=n;return parseInt(g,10)-parseInt(A,10)||parseInt(v,10)-parseInt(t,10)||parseInt(x,10)-parseInt(e,10)||parseInt(m,10)-parseInt(r,10)||parseInt(w,10)-parseInt(s,10)||y.localeCompare(a)},this.getDescription=o=>{for(const d of o.mdia.minf.stbl.stsd.entries){const l=d.avcC||d.hvcC||d.vpcC||d.av1C;if(l){const c=new Z.DataStream(void 0,0,Z.DataStream.BIG_ENDIAN);return l.write(c),new Uint8Array(c.buffer,8)}}return null},this.postBatchToRenderer=f,this.options=h,this.mp4boxfile=this.setupMP4Box()}decodeUpcomingChunks(){const f=H.fromStr(this.currentTimecode).totalMilliseconds(this.fps),h=f+at,o=this.chunksQueue.filter(l=>{const c=H.fromStr(l.timeCode).totalMilliseconds(this.fps);return c>=f&&c<=h&&!l.decoded});o.sort((l,c)=>{const n=H.fromStr(l.timeCode).totalMilliseconds(this.fps),g=H.fromStr(c.timeCode).totalMilliseconds(this.fps);return n-g});const d=o.slice(0,tt);for(const l of d){if(l.cancelled){this.options&&L(this.options,"Decoder")&&console.log("[Decoder] Skipping cancelled chunk:",l.timeCode);continue}const c=l.job.useReserveDecoder?this.reservedVideoDecoder:this.videoDecoder;if(!c||c.state==="closed"){this.options&&L(this.options,"Errors")&&console.error("[Decoder] No VideoDecoder available");continue}try{this.chunksForDecodingFrames.push(l),c.decode(l.chunk)}catch(n){this.options&&L(this.options,"Errors")&&console.error("[Decoder] Error decoding chunk:",n),this.videoDecoderConfigured=!1,this.reservedVideoDecoderConfigured=!1,c.flush(),l.job.chunks.forEach(v=>v.cancelled=!0)}finally{if(l.decoded=!0,l.job.framesSentToDecoder++,l.job.framesSentToDecoder>=l.job.totalFrameCount){c.flush(),l.job.useReserveDecoder&&(this.reservedVideoDecoderConfigured=!1);continue}}}}}let et=null,q=null,J,V;self.onmessage=async C=>{const{data:f}=C;f.type==="SET_DOWNLOADER_PORT"&&(et=f.port,et.onmessage=ft),f.type==="SET_RENDERER_PORT"&&(q=f.port,q.onmessage=lt),f.type==="SET_OPTIONS"&&(V=f.options,J=new ht(dt,V))};function ft(C){const{data:f}=C;if(f.type==="DECODER_INPUT"){const{timeCode:h,arrayBuffer:o}=f;V&&L(V,"Decoder")&&console.log("[DecoderWorker] Received ArrayBuffer from Downloader, timeCode =",h),J.addJob(f.timeCode,f.arrayBuffer)}}function lt(C){const{data:f}=C;if(f.type==="DECODER_REQUEST"){const{timeCode:h,fps:o}=f;V&&L(V,"Decoder")&&console.log("[DecoderWorker] Received TimeCode request from Renderer, timeCode =",h),J.updateCurrentTimecode(h,o)}}function dt(C){if(!q)return;V&&L(V,"Decoder")&&console.log(\`[DecoderWorker] Posting a batch of \${C.length} frames to Renderer\`);const f=C.map(h=>h.alphaMask).filter(h=>h!==void 0);try{const h=new Set(f);q.postMessage({type:"RENDERER_INPUT",batch:C},[...h]),f.forEach(o=>o.close())}catch(h){console.error("[DecoderWorker] Error posting batch to Renderer:",h),f.forEach(o=>o.close());return}}self.onunhandledrejection=C=>{console.error("[Worker] Unhandled rejection:",C.reason)}})();
|
|
3
|
+
`,M=typeof self<"u"&&self.Blob&&new Blob([L],{type:"text/javascript;charset=utf-8"});function K(s){let t;try{if(t=M&&(self.URL||self.webkitURL).createObjectURL(M),!t)throw"";const e=new Worker(t,{name:s==null?void 0:s.name});return e.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(t)}),e}catch{return new Worker("data:text/javascript;charset=utf-8,"+encodeURIComponent(L),{name:s==null?void 0:s.name})}finally{t&&(self.URL||self.webkitURL).revokeObjectURL(t)}}const z=`(function(){"use strict";const m=(h,o)=>!h.debug||!h.debug.on?!1:h.debug[\`log\${o}\`],f=class f{constructor(o,n,e,t,i){this.copy=()=>new f(this.h,this.m,this.s,this.f,this.field),this.print=()=>{const r=":";let s=("0"+this.h).slice(-2)+r+("0"+this.m).slice(-2)+r+("0"+this.s).slice(-2)+r+("0"+this.f).slice(-2);return s+="."+(this.field?"1":"2"),s},this.toZipTimeCodeString=()=>{const r=this.copy();return r.f=0,r.s=r.s%2===0?r.s:r.s-1,r.field=0,f.toStr(r)},this.toFrames=r=>{let s=60,a=0;Math.floor(r)==60?(s=60,a=0):Math.floor(r)==59?(s=60,a=4):Math.floor(r)==30?(s=30,a=0):Math.floor(r)==29&&(s=30,a=2);let l=this.h,c=this.m,d=this.s,R=this.f,u=this.field;const p=l*60+c,D=(p-Math.floor(p/10))*a;return l*(s*3600)+c*(s*60)+d*s+(R*2+u)-D},this.addSeconds=r=>{let s=this.copy();return s.s+=r,s.s>=60&&(s.s=0,s.m++,s.m>=60&&(s.m=0,s.h++)),s},this.addFrames=(r,s)=>{let a=this.toFrames(s);return a+=r,f.fromFrames(a,s)},this.subtractFrames=(r,s)=>this.addFrames(-r,s),this.h=o||0,this.m=n||0,this.s=e||0,this.f=t||0,this.field=i||0}static compare(o,n){return o.h!==n.h?o.h<n.h?-1:1:o.m!==n.m?o.m<n.m?-1:1:o.s!==n.s?o.s<n.s?-1:1:o.f!==n.f?o.f<n.f?-1:1:o.field!==n.field?o.field<n.field?-1:1:0}static generateTimecodeRange(o,n,e){const t=[];let i=o;for(;f.compare(i,n)<=0;)t.push(i),i=i.addSeconds(e);return t}totalSeconds(){return this.h*3600+this.m*60+this.s}totalMilliseconds(o){return this.toFrames(o)*1e3/o}};f.calculateCurrentTimeCode=o=>{var d;if(!o.video||!o.clocker||!o.gameParams)throw new Error("OTTPlayer is not initialized");const n=o.video,e=o.clocker,t=e.videoFPScalculator.getFPS(),s=(n.currentTime-e.syncPoint.playerTime)%(60*60*24)*t+e.syncPoint.frame;if(s===0||t===0)throw new Error("Current frame is 0 or fps is 0");const a=f.calculateCurrentOffset(s,(d=o.gameParams)==null?void 0:d.offsets);if(a===void 0)throw new Error("Offset is undefined");let l=Math.floor(s-a);return l<0&&(l+=5178816),l>=5178816&&(l-=5178816),f.fromFrames(l,t)},f.calculateCurrentOffset=(o,n)=>{for(let e=1;e<n.length;e++)if(o<n[e].frame)return n[e-1].offset;return n[n.length-1].offset},f.fromFrames=(o,n)=>{let e=60,t=0;Math.floor(n)==60?(e=60,t=0):Math.floor(n)==59?(e=60,t=4):Math.floor(n)==30?(e=30,t=0):Math.floor(n)==29&&(e=30,t=2);let i=Math.floor(n*60),r=Math.floor(n*60*10),s=r*6,a=o,l=Math.floor(a/s);a-=l*s;let c=Math.floor(a/r);a-=c*r,a>=e*60&&(a+=t*(Math.floor((a-e*60)/i)+1));let d=Math.floor(a/(e*60));a-=d*(e*60);let R=Math.floor(a/e);a-=R*e;let u=a;d+=c*10;let p=0;return p=u%2,u=Math.floor(u/2),new f(l,d,R,u,p)},f.toStr=o=>{const n="_";let e=("0"+o.h).slice(-2)+n+("0"+o.m).slice(-2)+n+("0"+o.s).slice(-2)+n+("0"+o.f).slice(-2);return o.field&&(e+="_1"),e},f.fromStr=o=>{const e=o.split("_").map(Number);if(e.length==4){const[t,i,r,s]=e;return new f(t,i,r,s,0)}else if(e.length==5){const[t,i,r,s,a]=e;return new f(t,i,r,s,a)}else throw new Error("Invalid timecode format: "+o)},f.fromMetadata=o=>{const n=/^(\\d{2}):(\\d{2}):(\\d{2}):(\\d{2})(?:\\.(\\d))?$/,e=o.timecode.match(n);if(!e)throw new Error("Invalid timecode format: "+o.timecode);const[,t,i,r,s,a]=e,l=Number(t),c=Number(i),d=Number(r),R=Number(s),u=a?Number(a):0;return new f(l,c,d,R,u)};let x=f;const y=\`
|
|
4
|
+
attribute vec2 a_position;
|
|
5
|
+
attribute vec2 a_uv;
|
|
6
|
+
|
|
7
|
+
uniform vec2 u_resolution;
|
|
8
|
+
|
|
9
|
+
varying vec2 v_uv;
|
|
10
|
+
|
|
11
|
+
void main() {
|
|
12
|
+
v_uv = a_uv;
|
|
13
|
+
|
|
14
|
+
vec2 clipSpace = 2.0 * (a_position / u_resolution) - 1.0;
|
|
15
|
+
gl_Position = vec4(clipSpace, 0.0, 1.0);
|
|
16
|
+
}
|
|
17
|
+
\`,I=\`
|
|
18
|
+
precision mediump float;
|
|
19
|
+
|
|
20
|
+
uniform sampler2D u_alphaMask;
|
|
21
|
+
varying vec2 v_uv;
|
|
22
|
+
|
|
23
|
+
void main() {
|
|
24
|
+
vec4 alphaColor = texture2D(u_alphaMask, v_uv);
|
|
25
|
+
|
|
26
|
+
// Where the alpha map is white, make it transparent
|
|
27
|
+
if (alphaColor.r > 0.5) {
|
|
28
|
+
discard;
|
|
29
|
+
} else {
|
|
30
|
+
gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
\`,N=\`
|
|
2
34
|
uniform vec2 u_resolution;
|
|
3
35
|
attribute vec2 a_position;
|
|
4
36
|
attribute vec2 a_uv;
|
|
@@ -13,7 +45,7 @@ void main() {
|
|
|
13
45
|
|
|
14
46
|
gl_Position = vec4(clipSpace, 0.0, 1.0);
|
|
15
47
|
}
|
|
16
|
-
|
|
48
|
+
\`,k=h=>\`
|
|
17
49
|
#ifdef GL_FRAGMENT_PRECISION_HIGH
|
|
18
50
|
precision highp float;
|
|
19
51
|
#else
|
|
@@ -22,17 +54,22 @@ precision mediump float;
|
|
|
22
54
|
|
|
23
55
|
|
|
24
56
|
uniform vec2 u_resolution;
|
|
25
|
-
uniform sampler2D
|
|
26
|
-
|
|
57
|
+
\${h.map((o,n)=>\`uniform sampler2D u_ad\${o};\`).join(\`
|
|
58
|
+
\`)}
|
|
27
59
|
uniform sampler2D u_alphaMask;
|
|
28
60
|
|
|
29
61
|
varying vec2 v_uv;
|
|
30
62
|
|
|
31
|
-
uniform int
|
|
32
|
-
|
|
63
|
+
\${h.map((o,n)=>\`uniform int u_hasLogo\${o};\`).join(\`
|
|
64
|
+
\`)}
|
|
65
|
+
\${h.map((o,n)=>\`uniform mat3 u_matrix\${o};\`).join(\`
|
|
66
|
+
\`)}
|
|
67
|
+
|
|
68
|
+
uniform int u_hasDigitTex;
|
|
69
|
+
uniform sampler2D u_digitTex;
|
|
70
|
+
uniform vec2 u_digitTopLeft;
|
|
71
|
+
uniform vec2 u_digitSize;
|
|
33
72
|
|
|
34
|
-
uniform int hasLogo1;
|
|
35
|
-
uniform mat3 u_matrix1;//the reverse homography
|
|
36
73
|
|
|
37
74
|
const float Directions = 16.0; // BLUR DIRECTIONS (Default 16.0 - More is better but slower)
|
|
38
75
|
const float QualityAd = 3.0; // BLUR QUALITY (Default 3.0 - More is better but slower)
|
|
@@ -56,10 +93,7 @@ vec4 BlurAd(sampler2D adTexture, vec2 adTexCoord) {
|
|
|
56
93
|
return res;
|
|
57
94
|
}
|
|
58
95
|
|
|
59
|
-
|
|
60
|
-
vec2 curCoord = gl_FragCoord.xy;
|
|
61
|
-
curCoord.y = u_resolution[1] - curCoord.y;
|
|
62
|
-
|
|
96
|
+
vec4 BlendLogo(vec2 curCoord, sampler2D ad, mat3 matrix) {
|
|
63
97
|
vec2 texCoord;
|
|
64
98
|
texCoord.x = (matrix[0][0]*curCoord.x + matrix[0][1]*curCoord.y + matrix[0][2]) / (matrix[2][0]*curCoord.x + matrix[2][1]*curCoord.y + 1.0);
|
|
65
99
|
texCoord.y = (matrix[1][0]*curCoord.x + matrix[1][1]*curCoord.y + matrix[1][2]) / (matrix[2][0]*curCoord.x + matrix[2][1]*curCoord.y + 1.0);
|
|
@@ -67,235 +101,38 @@ void BlendWithLogo(sampler2D ad, mat3 matrix) {
|
|
|
67
101
|
|
|
68
102
|
vec4 maskAlpha = texture2D(u_alphaMask, v_uv);
|
|
69
103
|
vec4 adColor = BlurAd(ad, texCoord);
|
|
70
|
-
float adAlpha = texture2D(
|
|
104
|
+
float adAlpha = texture2D(ad, texCoord).a;
|
|
71
105
|
|
|
72
106
|
float finalAlpha = maskAlpha.r;
|
|
73
107
|
if (finalAlpha < 0.3)
|
|
74
108
|
finalAlpha = 0.0;
|
|
75
109
|
finalAlpha *= adColor.a;
|
|
76
|
-
|
|
77
|
-
|
|
110
|
+
vec4 finalColor = vec4(adColor.rgb, finalAlpha);
|
|
111
|
+
finalColor.rgb *= finalAlpha;
|
|
112
|
+
return finalColor;
|
|
78
113
|
}
|
|
79
114
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
115
|
+
bool BlendDigit(vec2 curCoord) {
|
|
116
|
+
vec2 digitCoord = (curCoord - u_digitTopLeft)/u_digitSize;//get the coordinate on the digit size
|
|
117
|
+
if (digitCoord.x >= 0.0 && digitCoord.y >= 0.0 && digitCoord.x <= 1.0 && digitCoord.y <= 1.0) {
|
|
118
|
+
gl_FragColor = texture2D(u_digitTex, digitCoord);
|
|
119
|
+
return true;
|
|
120
|
+
}
|
|
121
|
+
return false;
|
|
87
122
|
}
|
|
88
|
-
`,cW=`
|
|
89
|
-
|
|
90
|
-
//High precision mode
|
|
91
|
-
precision highp float;
|
|
92
|
-
|
|
93
|
-
// an attribute is an input (in) to a vertex shader.
|
|
94
|
-
// It will receive vertex data from the buffer
|
|
95
|
-
attribute vec2 a_position;
|
|
96
|
-
attribute vec2 a_uv;
|
|
97
|
-
uniform vec2 u_resolution;
|
|
98
|
-
varying vec2 v_texCoord;
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
// Main vertex shader
|
|
102
|
-
void main() {
|
|
103
|
-
// convert the rectangle from pixels to 0.0 to 1.0
|
|
104
|
-
vec2 zeroToOne = a_position / u_resolution;
|
|
105
|
-
|
|
106
|
-
// convert from 0->1 to 0->2
|
|
107
|
-
vec2 zeroToTwo = zeroToOne * 2.0;
|
|
108
|
-
|
|
109
|
-
// convert from 0->2 to -1->+1 (clipspace)
|
|
110
|
-
vec2 clipSpace = zeroToTwo - 1.0;
|
|
111
|
-
|
|
112
|
-
gl_Position = vec4(clipSpace * vec2(1, -1), 0, 1);
|
|
113
|
-
|
|
114
|
-
// pass the texCoord to the fragment shader
|
|
115
|
-
// The GPU will interpolate this value between points.
|
|
116
|
-
v_texCoord = a_uv;
|
|
117
|
-
}
|
|
118
|
-
`,ym=`
|
|
119
|
-
|
|
120
|
-
//High precision mode
|
|
121
|
-
precision highp float;
|
|
122
|
-
|
|
123
|
-
//The textures
|
|
124
|
-
uniform sampler2D u_image;//video frame's texture2D
|
|
125
|
-
uniform sampler2D ad0;//the ad texture2D
|
|
126
|
-
uniform sampler2D ad1;//the ad texture2D
|
|
127
|
-
uniform sampler2D ad2;//the ad texture2D
|
|
128
|
-
uniform sampler2D ad3;//the ad texture2D
|
|
129
|
-
|
|
130
|
-
uniform vec2 u_resolution2;//resolution of the canvas
|
|
131
|
-
|
|
132
|
-
//v_texCoord from the vertex shader
|
|
133
|
-
varying vec2 v_texCoord;
|
|
134
|
-
|
|
135
|
-
//Logos' staff
|
|
136
|
-
uniform int hasLogo0;//has logo ?
|
|
137
|
-
uniform int adForLogo0;
|
|
138
|
-
uniform sampler2D alpha0;//the alpha's mate
|
|
139
|
-
uniform mat3 u_matrix0;//the reverse homography
|
|
140
|
-
uniform vec2 u_alpha0TopLeft;//the alpha mate's top-left
|
|
141
|
-
uniform vec2 u_alpha0Size;//the alpha mate's size
|
|
142
|
-
|
|
143
|
-
uniform int hasLogo1;//has logo ?
|
|
144
|
-
uniform int adForLogo1;
|
|
145
|
-
uniform sampler2D alpha1;//the alpha's mate
|
|
146
|
-
uniform mat3 u_matrix1;//the reverse homography
|
|
147
|
-
uniform vec2 u_alpha1TopLeft;//the alpha mate's top-left
|
|
148
|
-
uniform vec2 u_alpha1Size;//the alpha mate's size
|
|
149
|
-
|
|
150
|
-
uniform int hasLogo2;//has logo ?
|
|
151
|
-
uniform int adForLogo2;
|
|
152
|
-
uniform sampler2D alpha2;//the alpha's mate
|
|
153
|
-
uniform mat3 u_matrix2;//the reverse homography
|
|
154
|
-
uniform vec2 u_alpha2TopLeft;//the alpha mate's top-left
|
|
155
|
-
uniform vec2 u_alpha2Size;//the alpha mate's size
|
|
156
123
|
|
|
157
|
-
uniform int hasLogo3;//has logo ?
|
|
158
|
-
uniform int adForLogo3;
|
|
159
|
-
uniform sampler2D alpha3;//the alpha's mate
|
|
160
|
-
uniform mat3 u_matrix3;//the reverse homography
|
|
161
|
-
uniform vec2 u_alpha3TopLeft;//the alpha mate's top-left
|
|
162
|
-
uniform vec2 u_alpha3Size;//the alpha mate's size
|
|
163
124
|
|
|
164
|
-
|
|
165
|
-
const float QualityAd = 3.0; // BLUR QUALITY (Default 3.0 - More is better but slower)
|
|
166
|
-
const float QualityAlpha = 5.0; // BLUR QUALITY (Default 3.0 - More is better but slower)
|
|
167
|
-
const float BlurRadiusAd = 10.0;
|
|
168
|
-
const float BlurRadiusAlpha = 10.0;
|
|
169
|
-
const float Pi = 6.28318530718; // Pi*2
|
|
170
|
-
|
|
171
|
-
float BlurAlpha(sampler2D alphaTexture, vec2 alphaCoord) {
|
|
172
|
-
float res = texture2D(alphaTexture, alphaCoord).a;
|
|
173
|
-
vec2 Radius = BlurRadiusAlpha/u_resolution2.xy;
|
|
174
|
-
|
|
175
|
-
for( float d=0.0; d<Pi; d+=Pi/Directions) {
|
|
176
|
-
for(float i=1.0/QualityAlpha; i<=1.0; i+=1.0/QualityAlpha) {
|
|
177
|
-
res += texture2D(alphaTexture, alphaCoord+vec2(cos(d),sin(d))*Radius*i).a;
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
res /= QualityAlpha * Directions - 15.0;
|
|
182
|
-
|
|
183
|
-
return res;
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
vec4 BlurAd(sampler2D adTexture, vec2 adTexCoord) {
|
|
187
|
-
vec2 Radius = BlurRadiusAd/u_resolution2.xy;
|
|
188
|
-
vec4 res = texture2D(adTexture, adTexCoord);
|
|
189
|
-
|
|
190
|
-
for( float d=0.0; d<Pi; d+=Pi/Directions) {
|
|
191
|
-
for(float i=1.0/QualityAd; i<=1.0; i+=1.0/QualityAd) {
|
|
192
|
-
res += texture2D(adTexture, adTexCoord+vec2(cos(d),sin(d))*Radius*i);
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
res /= QualityAd * Directions - 5.0;
|
|
197
|
-
|
|
198
|
-
return res;
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
bool BlendWithLogo(int adUnit, sampler2D alphaTexture, mat3 matrix, vec2 curCoord, vec2 alphaTopLeft, vec2 alphaSize, vec4 videoImagePix) {
|
|
202
|
-
|
|
203
|
-
vec2 texCoord;
|
|
204
|
-
texCoord.x = (matrix[0][0]*curCoord.x + matrix[0][1]*curCoord.y + matrix[0][2]) / (matrix[2][0]*curCoord.x + matrix[2][1]*curCoord.y + 1.0);
|
|
205
|
-
texCoord.y = (matrix[1][0]*curCoord.x + matrix[1][1]*curCoord.y + matrix[1][2]) / (matrix[2][0]*curCoord.x + matrix[2][1]*curCoord.y + 1.0);
|
|
206
|
-
texCoord /= u_resolution2;
|
|
207
|
-
|
|
208
|
-
//if we're in the bounding rect of the logo
|
|
209
|
-
if (texCoord.x >= 0.0 && texCoord.y >= 0.0 && texCoord.x <= 1.0 && texCoord.y <= 1.0) {
|
|
210
|
-
float maskAlpha = 1.0;
|
|
211
|
-
vec2 alphaCoord = (curCoord - alphaTopLeft)/alphaSize;//get the coordinate on the alpha mate
|
|
212
|
-
if (alphaCoord.x >= 0.0 && alphaCoord.y >= 0.0 && alphaCoord.x <= 1.0 && alphaCoord.y <= 1.0) {
|
|
213
|
-
// maskAlpha = BlurAlpha(alphaTexture, alphaCoord);
|
|
214
|
-
maskAlpha = texture2D(alphaTexture, alphaCoord).a;
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
vec4 adColor =
|
|
218
|
-
adUnit == 0 ? BlurAd(ad0, texCoord) :
|
|
219
|
-
adUnit == 1 ? BlurAd(ad1, texCoord) :
|
|
220
|
-
adUnit == 2 ? BlurAd(ad2, texCoord) :
|
|
221
|
-
BlurAd(ad3, texCoord); //get the logo's texel
|
|
222
|
-
|
|
223
|
-
float adAlpha =
|
|
224
|
-
adUnit == 0 ? texture2D(ad0, texCoord).a :
|
|
225
|
-
adUnit == 1 ? texture2D(ad1, texCoord).a :
|
|
226
|
-
adUnit == 2 ? texture2D(ad2, texCoord).a :
|
|
227
|
-
texture2D(ad3, texCoord).a; //get the logo's texel
|
|
228
|
-
|
|
229
|
-
float finalAlpha = maskAlpha * adColor.a;
|
|
230
|
-
gl_FragColor = vec4(adColor.rgb, finalAlpha);
|
|
231
|
-
gl_FragColor.rgb *= finalAlpha;
|
|
232
|
-
return true;
|
|
233
|
-
} else {
|
|
234
|
-
return false;
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
|
-
void main()
|
|
238
|
-
{
|
|
239
|
-
//calculate cur-coord (with pixels units)
|
|
125
|
+
void main() {
|
|
240
126
|
vec2 curCoord = gl_FragCoord.xy;
|
|
241
|
-
curCoord.y =
|
|
242
|
-
|
|
243
|
-
vec4 videoImagePix = texture2D(u_image, v_texCoord);
|
|
127
|
+
curCoord.y = u_resolution[1] - curCoord.y;
|
|
244
128
|
|
|
245
|
-
if (
|
|
246
|
-
BlendWithLogo(adForLogo0,alpha0, u_matrix0, curCoord,u_alpha0TopLeft, u_alpha0Size, videoImagePix);
|
|
247
|
-
return;
|
|
248
|
-
} else if (hasLogo1 == 1) {
|
|
249
|
-
BlendWithLogo(adForLogo1, alpha1, u_matrix1, curCoord,u_alpha1TopLeft, u_alpha1Size, videoImagePix);
|
|
250
|
-
return;
|
|
251
|
-
} else if (hasLogo2 == 1) {
|
|
252
|
-
BlendWithLogo(adForLogo2, alpha2, u_matrix2, curCoord,u_alpha2TopLeft, u_alpha2Size, videoImagePix);
|
|
253
|
-
return;
|
|
254
|
-
} else if (hasLogo3 == 1) {
|
|
255
|
-
BlendWithLogo(adForLogo3, alpha3, u_matrix3, curCoord,u_alpha3TopLeft, u_alpha3Size, videoImagePix);
|
|
256
|
-
return;
|
|
257
|
-
}
|
|
258
|
-
}
|
|
259
|
-
`;/* @license twgl.js 5.5.4 Copyright (c) 2015, Gregg Tavares All Rights Reserved.
|
|
260
|
-
Available via the MIT license.
|
|
261
|
-
see: http://github.com/greggman/twgl.js for details */const bp={};{const l=bp;l[5120]=Int8Array,l[5121]=Uint8Array,l[5122]=Int16Array,l[5123]=Uint16Array,l[5124]=Int32Array,l[5125]=Uint32Array,l[5126]=Float32Array,l[32819]=Uint16Array,l[32820]=Uint16Array,l[33635]=Uint16Array,l[5131]=Uint16Array,l[33640]=Uint32Array,l[35899]=Uint32Array,l[35902]=Uint32Array,l[36269]=Uint32Array,l[34042]=Uint32Array}function ap(...l){console.error(...l)}const tp=function(){const l={},W={};function d(b){const t=b.constructor.name;if(!l[t]){for(const e in b)if(typeof b[e]=="number"){const n=W[b[e]];W[b[e]]=n?`${n} | ${e}`:e}l[t]=!0}}return function(t,e){return d(t),W[e]||(typeof e=="number"?`0x${e.toString(16)}`:e)}}(),mp=6406,Hm=6407,zm=6408,ep=6409,np=6410,cp=6402,ip=34041,Gp=33319,pp=33320,hp=6403,Rp=36244,Yp=36248,sp=36249,Xp={};{const l=Xp;l[mp]={numColorComponents:1},l[ep]={numColorComponents:1},l[np]={numColorComponents:2},l[Hm]={numColorComponents:3},l[zm]={numColorComponents:4},l[hp]={numColorComponents:1},l[Rp]={numColorComponents:1},l[Gp]={numColorComponents:2},l[pp]={numColorComponents:2},l[Hm]={numColorComponents:3},l[Yp]={numColorComponents:3},l[zm]={numColorComponents:4},l[sp]={numColorComponents:4},l[cp]={numColorComponents:1},l[ip]={numColorComponents:2}}const qb=ap;function op(l){return typeof document<"u"&&document.getElementById?document.getElementById(l):null}const up=35713,Np=35714,Fp=35632,Up=35633,Sp=35981,Mp=/ERROR:\s*\d+:(\d+)/gi;function Tp(l,W="",d=0){const b=[...W.matchAll(Mp)],t=new Map(b.map((e,n)=>{const i=parseInt(e[1]),h=b[n+1],G=h?h.index:W.length,p=W.substring(e.index,G);return[i-1,p]}));return l.split(`
|
|
262
|
-
`).map((e,n)=>{const i=t.get(n);return`${n+1+d}: ${e}${i?`
|
|
129
|
+
if (u_hasDigitTex == 1 && (BlendDigit(curCoord))) return;
|
|
263
130
|
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
`)}`}}function wm(l,W,d,b,t){return zp(l,W,d,b,t)}const LW=(()=>{const l=()=>{const o=navigator.userAgent;return/windows/i.test(o)?"Windows":/android/i.test(o)?"Android":/iphone|ipad|ipod/i.test(o)?"iOS":/mac/i.test(o)?"Mac":/ipad/i.test(o)?"iPad":"Something else"},W=()=>l()=="Mac",d=()=>l()=="iPad",b=()=>l()=="iOS",t=()=>{let o=l();return o=="iOS"||o=="Mac"||o=="iPad"},e=()=>l()=="Windows",n=()=>l()=="Android",i=()=>{let o=l();return o=="Windows"?"a Windows PC":o=="Android"?"an Android phone":o=="iOS"?"an iPhone":o=="Mac"?"a Mac":o=="iPad"?"an iPad":"an Unknown device"},h=()=>({options:[],header:[navigator.platform,navigator.userAgent,navigator.appVersion,navigator.vendor,window.opera],dataos:[{name:"Windows Phone",value:"Windows Phone",version:"OS"},{name:"Windows",value:"Win",version:"NT"},{name:"iPhone",value:"iPhone",version:"OS"},{name:"iPad",value:"iPad",version:"OS"},{name:"Kindle",value:"Silk",version:"Silk"},{name:"Android",value:"Android",version:"Android"},{name:"PlayBook",value:"PlayBook",version:"OS"},{name:"BlackBerry",value:"BlackBerry",version:"/"},{name:"Macintosh",value:"Mac",version:"OS X"},{name:"Linux",value:"Linux",version:"rv"},{name:"Palm",value:"Palm",version:"PalmOS"}],databrowser:[{name:"Chrome",value:"Chrome",version:"Chrome"},{name:"Firefox",value:"Firefox",version:"Firefox"},{name:"Safari",value:"Safari",version:"Version"},{name:"Internet Explorer",value:"MSIE",version:"MSIE"},{name:"Opera",value:"Opera",version:"Opera"},{name:"BlackBerry",value:"CLDC",version:"CLDC"},{name:"Mozilla",value:"Mozilla",version:"Mozilla"}],init:function(){let M=this.header.join(" "),L=this.matchItem(M,this.dataos),J=this.matchItem(M,this.databrowser);return{os:L,browser:J}},matchItem:function(M,L){let J=0,w=0,K,x,z,I,k;for(J=0;J<L.length;J+=1)if(K=new RegExp(L[J].value,"i"),z=K.test(M),z){if(x=new RegExp(L[J].version+"[- /:;]([\\d._]+)","i"),I=M.match(x),k="",I&&I[1]&&(I=I[1]),I)for(I=I.split(/[._]+/),w=0;w<I.length;w+=1)w===0?k+=I[w]+".":k+=I[w];else k="0";return{name:L[J].name,version:parseFloat(k)}}return{name:"unknown",version:0}}}).init().os.name,G=()=>{const o=navigator.userAgent;return o.indexOf("Chrome")>-1&&o.indexOf("Edge")===-1?"Chrome":o.indexOf("Safari")>-1&&o.indexOf("Chrome")===-1?"Safari":o.indexOf("Firefox")>-1?"Firefox":o.indexOf("MSIE")>-1||o.indexOf("Trident")>-1?"Internet Explorer":o.indexOf("Edge")>-1?"Edge":"Unknown"};return{getDeviceName:h,getCurrentPlatform:l,isApple:t,isWindows:e,isAndroid:n,isMac:W,isiPhone:b,isiPad:d,getDeviceDescription:i,getBrowserName:G,isSafariMac:()=>W()&&G()=="Safari",isChromeMac:()=>W()&&G()=="Chrome",isChromeWin:()=>e()&&G()=="Chrome"}})(),nZ=l=>l.toString().padStart(2,"0"),$b=":",Xl=(l,W,d)=>{let b="";return Array.isArray(l)?(b=[nZ(l[0]),nZ(l[1]),nZ(l[2]),nZ(l[3])].join(":"),d==!0?l[4]==1&&(W===void 0||W)?b+=".2":b+=".1":l[4]==1&&(W===void 0||W)&&(b+=".1")):(b=("0"+l.h).slice(-2)+$b+("0"+l.m).slice(-2)+$b+("0"+l.s).slice(-2)+$b+("0"+l.f).slice(-2),W&&(b+="."+(l.field?"1":"2"))),b},jm=(l,W,d)=>{let b=60,t=0;Math.floor(W)==60?(b=60,t=0):Math.floor(W)==59?(b=60,t=4):Math.floor(W)==30?(b=30,t=0):Math.floor(W)==29&&(b=30,t=2);let e=0,i=Math.floor(W*60*10)*6,h=l[0],G=l[1],p=l[2],s=l[3],X=l[4];return e+=h*i,e+=G*(b*60),e+=p*b,e+=s*2+X,e-=t*G,e+=t*Math.floor(G/10),e},hl=(l,W,d)=>{let b=60,t=0;Math.floor(W)==60?(b=60,t=0):Math.floor(W)==59?(b=60,t=4):Math.floor(W)==30?(b=30,t=0):Math.floor(W)==29&&(b=30,t=2);let e=Math.floor(W*60),n=Math.floor(W*60*10),i=n*6,h=l,G=Math.floor(h/i);h-=G*i;let p=Math.floor(h/n);h-=p*n,h>=b*60&&(h+=t*(Math.floor((h-b*60)/e)+1));let s=Math.floor(h/(b*60));h-=s*(b*60);let X=Math.floor(h/b);h-=X*b;let o=h;s+=p*10;let r=0;return d&&(r=o%2,o=Math.floor(o/2)),[G,s,X,o,r]},Bm=l=>({h:l[0],m:l[1],s:l[2],f:l[3],field:l[4]}),Km=(l,W)=>(vm(l,W),Xl(tcFromMessage,!0)),vm=(l,W)=>{let d="";LW.isApple()?d=l:d=l.toISOString();let t=d.split("T")[1].split(":"),e=parseInt(t[0]),n=parseInt(t[1]),i=t[2].split("."),h=parseInt(i[0]),G=parseInt(i[1].substring(0,3));if(W>59){let p=Math.round((G/1e3+h+n*60+e*60*60)*W);return hl(p,W,!0)}else{let p=Math.round((G/1e3+h+n*60+e*60*60)*W);return hl(p,W,!1)}},gm=l=>(l&l-1)==0;var Jl={log:"log",debug:"debug",info:"info",warn:"warn",error:"error"},SV=console,iW={};Object.keys(Jl).forEach(function(l){iW[l]=SV[l]});var ud="Datadog Browser SDK:",xl={debug:iW.debug.bind(SV,ud),log:iW.log.bind(SV,ud),info:iW.info.bind(SV,ud),warn:iW.warn.bind(SV,ud),error:iW.error.bind(SV,ud)},la="https://docs.datadoghq.com",fm="".concat(la,"/real_user_monitoring/browser/troubleshooting"),cZ="More details:";function Cm(l,W){return function(){for(var d=[],b=0;b<arguments.length;b++)d[b]=arguments[b];try{return l.apply(void 0,d)}catch(t){xl.error(W,t)}}}function iZ(l){return l!==0&&Math.random()*100<=l}function Lp(l){return wp(l)&&l>=0&&l<=100}function wp(l){return typeof l=="number"}var Nd=1e3,GW=60*Nd,jp=60*GW;function Fd(){return new Date().getTime()}function DV(){return Fd()}function GZ(){return performance.now()}function OV(){return{relative:GZ(),timeStamp:DV()}}function Bp(){return{relative:0,timeStamp:Qm()}}function Kp(l,W){return W-l}function vp(l,W){return l+W}function gp(l){return l-Qm()}var Va;function Qm(){return Va===void 0&&(Va=performance.timing.navigationStart),Va}var xV=1024,Dm=1024*xV,fp=/[^\u0000-\u007F]/;function Wa(l){return fp.test(l)?window.TextEncoder!==void 0?new TextEncoder().encode(l).length:new Blob([l]).size:l.length}function wW(l,W){return l.indexOf(W)!==-1}function da(l){if(Array.from)return Array.from(l);var W=[];if(l instanceof Set)l.forEach(function(b){return W.push(b)});else for(var d=0;d<l.length;d++)W.push(l[d]);return W}function Cp(l,W){for(var d=0;d<l.length;d+=1){var b=l[d];if(W(b,d))return b}}function jW(l){return Object.keys(l).map(function(W){return l[W]})}function Qp(l){return Object.keys(l).map(function(W){return[W,l[W]]})}function Za(l,W){return l.slice(0,W.length)===W}function Dp(l,W){return l.slice(-W.length)===W}function Ll(l){for(var W=[],d=1;d<arguments.length;d++)W[d-1]=arguments[d];return W.forEach(function(b){for(var t in b)Object.prototype.hasOwnProperty.call(b,t)&&(l[t]=b[t])}),l}function Op(l){return Ll({},l)}function Om(l,W){return Object.keys(l).some(function(d){return l[d]===W})}function ba(l){return Object.keys(l).length===0}function PV(){if(typeof globalThis=="object")return globalThis;Object.defineProperty(Object.prototype,"_dd_temp_",{get:function(){return this},configurable:!0});var l=_dd_temp_;return delete Object.prototype._dd_temp_,typeof l!="object"&&(typeof self=="object"?l=self:typeof window=="object"?l=window:l={}),l}function BW(l,W){var d=PV(),b;return d.Zone&&typeof d.Zone.__symbol__=="function"&&(b=l[d.Zone.__symbol__(W)]),b||(b=l[W]),b}var Pp=function(l,W,d){if(d||arguments.length===2)for(var b=0,t=W.length,e;b<t;b++)(e||!(b in W))&&(e||(e=Array.prototype.slice.call(W,0,b)),e[b]=W[b]);return l.concat(e||Array.prototype.slice.call(W))},pZ,Pm=!1;function Ap(l){pZ=l}function _p(l){Pm=l}function qp(l,W,d){var b=d.value;d.value=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n=pZ?cl(b):b;return n.apply(this,t)}}function cl(l){return function(){return Ud(l,this,arguments)}}function Ud(l,W,d){try{return l.apply(W,d)}catch(b){if(aa(b),pZ)try{pZ(b)}catch(t){aa(t)}}}function aa(){for(var l=[],W=0;W<arguments.length;W++)l[W]=arguments[W];Pm&&xl.error.apply(xl,Pp(["[MONITOR]"],l,!1))}function Sd(l,W){return BW(PV(),"setTimeout")(cl(l),W)}function Am(l){BW(PV(),"clearTimeout")(l)}function ta(l,W){return BW(PV(),"setInterval")(cl(l),W)}function _m(l){BW(PV(),"clearInterval")(l)}var Il=function(){function l(W){this.onFirstSubscribe=W,this.observers=[]}return l.prototype.subscribe=function(W){var d=this;return this.observers.push(W),this.observers.length===1&&this.onFirstSubscribe&&(this.onLastUnsubscribe=this.onFirstSubscribe(this)||void 0),{unsubscribe:function(){d.observers=d.observers.filter(function(b){return W!==b}),!d.observers.length&&d.onLastUnsubscribe&&d.onLastUnsubscribe()}}},l.prototype.notify=function(W){this.observers.forEach(function(d){return d(W)})},l}();function qm(){for(var l=[],W=0;W<arguments.length;W++)l[W]=arguments[W];return new Il(function(d){var b=l.map(function(t){return t.subscribe(function(e){return d.notify(e)})});return function(){return b.forEach(function(t){return t.unsubscribe()})}})}function $m(l,W,d){var b=!1,t,e;return{throttled:function(){for(var n=[],i=0;i<arguments.length;i++)n[i]=arguments[i];if(b){t=n;return}l.apply(void 0,n),b=!0,e=Sd(function(){t&&l.apply(void 0,t),b=!1,t=void 0},W)},cancel:function(){Am(e),b=!1,t=void 0}}}function AV(){}function pW(l){return l?(parseInt(l,10)^Math.random()*16>>parseInt(l,10)/4).toString(16):"".concat(1e7,"-").concat(1e3,"-").concat(4e3,"-").concat(8e3,"-").concat(1e11).replace(/[018]/g,pW)}var hZ=/([\w-]+)\s*=\s*([^;]+)/g;function $p(l,W){for(hZ.lastIndex=0;;){var d=hZ.exec(l);if(d){if(d[1]===W)return d[2]}else break}}function lh(l){var W=new Map;for(hZ.lastIndex=0;;){var d=hZ.exec(l);if(d)W.set(d[1],d[2]);else break}return W}function Vh(l,W,d){var b=l.charCodeAt(W-1),t=b>=55296&&b<=56319,e=t?W+1:W;return l.length<=e?l:"".concat(l.slice(0,e)).concat(d)}function Wh(){return dh()===1}var RZ;function dh(){return RZ??(RZ=Zh())}function Zh(l){var W;l===void 0&&(l=window);var d=l.navigator.userAgent;return l.chrome||/HeadlessChrome/.test(d)?1:((W=l.navigator.vendor)===null||W===void 0?void 0:W.indexOf("Apple"))===0||/safari/i.test(d)&&!/chrome|android/i.test(d)?2:l.document.documentMode?0:3}function Md(l,W,d,b){var t=new Date;t.setTime(t.getTime()+d);var e="expires=".concat(t.toUTCString()),n=b&&b.crossSite?"none":"strict",i=b&&b.domain?";domain=".concat(b.domain):"",h=b&&b.secure?";secure":"",G=b&&b.partitioned?";partitioned":"";document.cookie="".concat(l,"=").concat(W,";").concat(e,";path=/;samesite=").concat(n).concat(i).concat(h).concat(G)}function ma(l){return $p(document.cookie,l)}var ea;function hW(l){return ea||(ea=lh(document.cookie)),ea.get(l)}function le(l,W){Md(l,"",0,W)}function bh(l){if(document.cookie===void 0||document.cookie===null)return!1;try{var W="dd_cookie_test_".concat(pW()),d="test";Md(W,d,GW,l);var b=ma(W)===d;return le(W,l),b}catch(t){return xl.error(t),!1}}var na;function ah(){if(na===void 0){for(var l="dd_site_test_".concat(pW()),W="test",d=window.location.hostname.split("."),b=d.pop();d.length&&!ma(l);)b="".concat(d.pop(),".").concat(b),Md(l,W,Nd,{domain:b});le(l,{domain:b}),na=b}return na}var KW="_dd_s",ca=4*jp,Ve=15*GW,We=/^([a-zA-Z]+)=([a-z0-9-]+)$/,ia="&",th="1";function RW(){return{isExpired:th}}function YZ(l){return ba(l)}function de(l){return!YZ(l)}function sZ(l){return l.isExpired!==void 0||!mh(l)}function mh(l){return(l.created===void 0||Fd()-Number(l.created)<ca)&&(l.expire===void 0||Fd()<Number(l.expire))}function Ze(l){l.expire=String(Fd()+Ve)}function Ga(l){return Qp(l).map(function(W){var d=W[0],b=W[1];return"".concat(d,"=").concat(b)}).join(ia)}function be(l){var W={};return eh(l)&&l.split(ia).forEach(function(d){var b=We.exec(d);if(b!==null){var t=b[1],e=b[2];W[t]=e}}),W}function eh(l){return!!l&&(l.indexOf(ia)!==-1||We.test(l))}var nh="_dd",ch="_dd_r",ih="_dd_l",Gh="rum",ph="logs";function hh(l){var W=hW(KW);if(!W){var d=hW(nh),b=hW(ch),t=hW(ih),e={};d&&(e.id=d),t&&/^[01]$/.test(t)&&(e[ph]=t),b&&/^[012]$/.test(b)&&(e[Gh]=b),de(e)&&(Ze(e),l.persistSession(e))}}function Rh(l){var W=uh(l);return bh(W)?{type:"Cookie",cookieOptions:W}:void 0}function Yh(l){var W={isLockEnabled:Wh(),persistSession:sh(l),retrieveSession:oh,expireSession:function(){return Xh(l)}};return hh(W),W}function sh(l){return function(W){Md(KW,Ga(W),Ve,l)}}function Xh(l){Md(KW,Ga(RW()),ca,l)}function oh(){var l=ma(KW);return be(l)}function uh(l){var W={};return W.secure=!!l.useSecureSessionCookie||!!l.usePartitionedCrossSiteSessionCookie||!!l.useCrossSiteSessionCookie,W.crossSite=!!l.usePartitionedCrossSiteSessionCookie||!!l.useCrossSiteSessionCookie,W.partitioned=!!l.usePartitionedCrossSiteSessionCookie,l.trackSessionAcrossSubdomains&&(W.domain=ah()),W}var Nh="_dd_test_";function Fh(){try{var l=pW(),W="".concat(Nh).concat(l);localStorage.setItem(W,l);var d=localStorage.getItem(W);return localStorage.removeItem(W),l===d?{type:"LocalStorage"}:void 0}catch{return}}function Uh(){return{isLockEnabled:!1,persistSession:ae,retrieveSession:Sh,expireSession:Mh}}function ae(l){localStorage.setItem(KW,Ga(l))}function Sh(){var l=localStorage.getItem(KW);return be(l)}function Mh(){ae(RW())}var Th=10,rh=100,te=[],XZ;function YW(l,W,d){var b;d===void 0&&(d=0);var t=W.isLockEnabled,e=W.persistSession,n=W.expireSession,i=function(X){return e(Ll({},X,{lock:G}))},h=function(){var X=W.retrieveSession(),o=X.lock;return X.lock&&delete X.lock,{session:X,lock:o}};if(XZ||(XZ=l),l!==XZ){te.push(l);return}if(t&&d>=rh){me(W);return}var G,p=h();if(t){if(p.lock){oZ(l,W,d);return}if(G=pW(),i(p.session),p=h(),p.lock!==G){oZ(l,W,d);return}}var s=l.process(p.session);if(t&&(p=h(),p.lock!==G)){oZ(l,W,d);return}if(s&&(sZ(s)?n():(Ze(s),t?i(s):e(s))),t&&!(s&&sZ(s))){if(p=h(),p.lock!==G){oZ(l,W,d);return}e(p.session),s=p.session}(b=l.after)===null||b===void 0||b.call(l,s||p.session),me(W)}function oZ(l,W,d){Sd(function(){YW(l,W,d+1)},Th)}function me(l){XZ=void 0;var W=te.shift();W&&YW(W,l)}var ee=Nd;function Jh(l){var W=Rh(l);return!W&&l.allowFallbackToLocalStorage&&(W=Fh()),W}function kh(l,W,d){var b=new Il,t=new Il,e=new Il,n=l.type==="Cookie"?Yh(l.cookieOptions):Uh(),i=n.expireSession,h=ta(r,ee),G;L();var p=$m(function(){YW({process:function(k){if(!YZ(k)){var B=M(k);return J(B),B}},after:function(k){de(k)&&!w()&&z(k),G=k}},n)},ee),s=p.throttled,X=p.cancel;function o(){YW({process:function(k){return w()?M(k):void 0}},n)}function r(){YW({process:function(k){return sZ(k)?RW():void 0},after:M},n)}function M(k){return sZ(k)&&(k=RW()),w()&&(K(k)?x():(e.notify({previousState:G,newState:k}),G=k)),k}function L(){YW({process:function(k){if(YZ(k))return RW()},after:function(k){G=k}},n)}function J(k){if(YZ(k))return!1;var B=d(k[W]),C=B.trackingType,A=B.isTracked;k[W]=C,delete k.isExpired,A&&!k.id&&(k.id=pW(),k.created=String(Fd()))}function w(){return G[W]!==void 0}function K(k){return G.id!==k.id||G[W]!==k[W]}function x(){G=RW(),t.notify()}function z(k){G=k,b.notify()}function I(k){YW({process:function(B){return Ll({},B,k)},after:M},n)}return{expandOrRenewSession:s,expandSession:o,getSession:function(){return G},renewObservable:b,expireObservable:t,sessionStateUpdateObservable:e,restartSession:L,expire:function(){X(),i(),M(RW())},stop:function(){_m(h)},updateSessionState:I}}var pa={GRANTED:"granted",NOT_GRANTED:"not-granted"};function xh(l){var W=new Il;return{tryToInit:function(d){l||(l=d)},update:function(d){l=d,W.notify()},isGranted:function(){return l===pa.GRANTED},observable:W}}function sW(l,W,d){if(typeof l!="object"||l===null)return JSON.stringify(l);var b=vW(Object.prototype),t=vW(Array.prototype),e=vW(Object.getPrototypeOf(l)),n=vW(l);try{return JSON.stringify(l,W,d)}catch{return"<error: unable to serialize object>"}finally{b(),t(),e(),n()}}function vW(l){var W=l,d=W.toJSON;return d?(delete W.toJSON,function(){W.toJSON=d}):AV}function ha(l){return yh(l,location.href).href}function yh(l,W){var d=Hh();if(d)try{return W!==void 0?new d(l,W):new d(l)}catch(n){throw new Error("Failed to construct URL: ".concat(String(n)," ").concat(sW({url:l,base:W})))}if(W===void 0&&!/:/.test(l))throw new Error("Invalid URL: '".concat(l,"'"));var b=document,t=b.createElement("a");if(W!==void 0){b=document.implementation.createHTMLDocument("");var e=b.createElement("base");e.href=W,b.head.appendChild(e),b.body.appendChild(t)}return t.href=l,t}var ne=URL,uZ;function Hh(){if(uZ===void 0)try{var l=new ne("http://test/path");uZ=l.href==="http://test/path"}catch{uZ=!1}return uZ?ne:void 0}var zh="datad0g.com",Ih="dd0g-gov.com",XW="datadoghq.com",Eh="ddog-gov.com",ce="pci.browser-intake-datadoghq.com";function Td(l,W,d){var b=Lh(l,W);return{build:function(t,e){var n=jh(l,W,d,t,e);return b(n)},urlPrefix:b(""),trackType:W}}function Lh(l,W){var d="/api/v2/".concat(W),b=l.proxy;if(typeof b=="string"){var t=ha(b);return function(n){return"".concat(t,"?ddforward=").concat(encodeURIComponent("".concat(d,"?").concat(n)))}}if(typeof b=="function")return function(n){return b({path:d,parameters:n})};var e=wh(W,l);return function(n){return"https://".concat(e).concat(d,"?").concat(n)}}function wh(l,W){var d=W.site,b=d===void 0?XW:d,t=W.internalAnalyticsSubdomain;if(l==="logs"&&W.usePciIntake&&b===XW)return ce;if(t&&b===XW)return"".concat(t,".").concat(XW);if(b===Ih)return"http-intake.logs.".concat(b);var e=b.split("."),n=e.pop();return"browser-intake-".concat(e.join("-"),".").concat(n)}function jh(l,W,d,b,t){var e=l.clientToken,n=l.internalAnalyticsSubdomain,i=t.retry,h=t.encoding,G=["sdk_version:".concat("5.29.1"),"api:".concat(b)].concat(d);i&&G.push("retry_count:".concat(i.count),"retry_after:".concat(i.lastFailureStatus));var p=["ddsource=browser","ddtags=".concat(encodeURIComponent(G.join(","))),"dd-api-key=".concat(e),"dd-evp-origin-version=".concat(encodeURIComponent("5.29.1")),"dd-evp-origin=browser","dd-request-id=".concat(pW())];return h&&p.push("dd-evp-encoding=".concat(h)),W==="rum"&&p.push("batch_time=".concat(DV())),n&&p.reverse(),p.join("&")}var Bh=200;function Kh(l){var W=l.env,d=l.service,b=l.version,t=l.datacenter,e=[];return W&&e.push(NZ("env",W)),d&&e.push(NZ("service",d)),b&&e.push(NZ("version",b)),t&&e.push(NZ("datacenter",t)),e}function NZ(l,W){var d=Bh-l.length-1;(W.length>d||vh(W))&&xl.warn("".concat(l," value doesn't meet tag requirements and will be sanitized. ").concat(cZ," ").concat(la,"/getting_started/tagging/#defining-tags"));var b=W.replace(/,/g,"_");return"".concat(l,":").concat(b)}function vh(l){return gh()?new RegExp("[^\\p{Ll}\\p{Lo}0-9_:./-]","u").test(l):!1}function gh(){try{return new RegExp("[\\p{Ll}]","u"),!0}catch{return!1}}function fh(l){var W=l.site||XW,d=Kh(l),b=Ch(l,d),t=Dh(b,W),e=Qh(l,t,d);return Ll({isIntakeUrl:function(n){return t.some(function(i){return n.indexOf(i)===0})},replica:e,site:W},b)}function Ch(l,W){return{logsEndpointBuilder:Td(l,"logs",W),rumEndpointBuilder:Td(l,"rum",W),sessionReplayEndpointBuilder:Td(l,"replay",W)}}function Qh(l,W,d){if(l.replica){var b=Ll({},l,{site:XW,clientToken:l.replica.clientToken}),t={logsEndpointBuilder:Td(b,"logs",d),rumEndpointBuilder:Td(b,"rum",d)};return W.push.apply(W,jW(t).map(function(e){return e.urlPrefix})),Ll({applicationId:l.replica.applicationId},t)}}function Dh(l,W){var d=jW(l).map(function(b){return b.urlPrefix});return W===XW&&d.push("https://".concat(ce,"/")),d}function Ra(l,W){return l!=null&&typeof l!="string"?(xl.error("".concat(W," must be defined as a string")),!1):!0}function Oh(l){return l&&typeof l=="string"&&!/(datadog|ddog|datad0g|dd0g)/.test(l)?(xl.error("Site should be a valid Datadog site. ".concat(cZ," ").concat(la,"/getting_started/site/.")),!1):!0}function FZ(l,W){return l!==void 0&&!Lp(l)?(xl.error("".concat(W," Sample Rate should be a number between 0 and 100")),!1):!0}function Ph(l){var W,d,b,t,e;if(!l||!l.clientToken){xl.error("Client Token is not configured, we will not send any data.");return}if(!(!Oh(l.site)||!FZ(l.sessionSampleRate,"Session")||!FZ(l.telemetrySampleRate,"Telemetry")||!FZ(l.telemetryConfigurationSampleRate,"Telemetry Configuration")||!FZ(l.telemetryUsageSampleRate,"Telemetry Usage")||!Ra(l.version,"Version")||!Ra(l.env,"Env")||!Ra(l.service,"Service"))){if(l.trackingConsent!==void 0&&!Om(pa,l.trackingConsent)){xl.error('Tracking Consent should be either "granted" or "not-granted"');return}return Ll({beforeSend:l.beforeSend&&Cm(l.beforeSend,"beforeSend threw an error:"),sessionStoreStrategyType:Jh(l),sessionSampleRate:(W=l.sessionSampleRate)!==null&&W!==void 0?W:100,telemetrySampleRate:(d=l.telemetrySampleRate)!==null&&d!==void 0?d:20,telemetryConfigurationSampleRate:(b=l.telemetryConfigurationSampleRate)!==null&&b!==void 0?b:5,telemetryUsageSampleRate:(t=l.telemetryUsageSampleRate)!==null&&t!==void 0?t:5,service:l.service||void 0,silentMultipleInit:!!l.silentMultipleInit,allowUntrustedEvents:!!l.allowUntrustedEvents,trackingConsent:(e=l.trackingConsent)!==null&&e!==void 0?e:pa.GRANTED,storeContextsAcrossPages:!!l.storeContextsAcrossPages,batchBytesLimit:16*xV,eventRateLimiterThreshold:3e3,maxTelemetryEventsPerPage:15,flushTimeout:30*Nd,batchMessagesLimit:50,messageBytesLimit:256*xV},fh(l))}}function Ah(l){return{session_sample_rate:l.sessionSampleRate,telemetry_sample_rate:l.telemetrySampleRate,telemetry_configuration_sample_rate:l.telemetryConfigurationSampleRate,telemetry_usage_sample_rate:l.telemetryUsageSampleRate,use_before_send:!!l.beforeSend,use_cross_site_session_cookie:l.useCrossSiteSessionCookie,use_partitioned_cross_site_session_cookie:l.usePartitionedCrossSiteSessionCookie,use_secure_session_cookie:l.useSecureSessionCookie,use_proxy:!!l.proxy,silent_multiple_init:l.silentMultipleInit,track_session_across_subdomains:l.trackSessionAcrossSubdomains,allow_fallback_to_local_storage:!!l.allowFallbackToLocalStorage,store_contexts_across_pages:!!l.storeContextsAcrossPages,allow_untrusted_events:!!l.allowUntrustedEvents,tracking_consent:l.trackingConsent}}var Ya;(function(l){l.WRITABLE_RESOURCE_GRAPHQL="writable_resource_graphql",l.REMOTE_CONFIGURATION="remote_configuration",l.UPDATE_VIEW_NAME="update_view_name",l.LONG_ANIMATION_FRAME="long_animation_frame"})(Ya||(Ya={}));var ie=new Set;function _h(l){Array.isArray(l)&&qh(l.filter(function(W){return Om(Ya,W)}))}function qh(l){l.forEach(function(W){ie.add(W)})}function $h(){return ie}var rd="?";function yV(l){var W=[],d=sa(l,"stack"),b=String(l);return d&&Za(d,b)&&(d=d.slice(b.length)),d&&d.split(`
|
|
269
|
-
`).forEach(function(t){var e=W1(t)||Z1(t)||a1(t)||e1(t);e&&(!e.func&&e.line&&(e.func=rd),W.push(e))}),{message:sa(l,"message"),name:sa(l,"name"),stack:W}}var Ge="((?:file|https?|blob|chrome-extension|native|eval|webpack|snippet|<anonymous>|\\w+\\.|\\/).*?)",gW="(?::(\\d+))",l1=new RegExp("^\\s*at (.*?) ?\\(".concat(Ge).concat(gW,"?").concat(gW,"?\\)?\\s*$"),"i"),V1=new RegExp("\\((\\S*)".concat(gW).concat(gW,"\\)"));function W1(l){var W=l1.exec(l);if(W){var d=W[2]&&W[2].indexOf("native")===0,b=W[2]&&W[2].indexOf("eval")===0,t=V1.exec(W[2]);return b&&t&&(W[2]=t[1],W[3]=t[2],W[4]=t[3]),{args:d?[W[2]]:[],column:W[4]?+W[4]:void 0,func:W[1]||rd,line:W[3]?+W[3]:void 0,url:d?void 0:W[2]}}}var d1=new RegExp("^\\s*at ?".concat(Ge).concat(gW,"?").concat(gW,"??\\s*$"),"i");function Z1(l){var W=d1.exec(l);if(W)return{args:[],column:W[3]?+W[3]:void 0,func:rd,line:W[2]?+W[2]:void 0,url:W[1]}}var b1=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i;function a1(l){var W=b1.exec(l);if(W)return{args:[],column:W[4]?+W[4]:void 0,func:W[1]||rd,line:+W[3],url:W[2]}}var t1=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|capacitor|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,m1=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i;function e1(l){var W=t1.exec(l);if(W){var d=W[3]&&W[3].indexOf(" > eval")>-1,b=m1.exec(W[3]);return d&&b&&(W[3]=b[1],W[4]=b[2],W[5]=void 0),{args:W[2]?W[2].split(","):[],column:W[5]?+W[5]:void 0,func:W[1]||rd,line:W[4]?+W[4]:void 0,url:W[3]}}}function sa(l,W){if(!(typeof l!="object"||!l||!(W in l))){var d=l[W];return typeof d=="string"?d:void 0}}function n1(l,W,d,b){var t=[{url:W,column:b,line:d}],e=i1(l),n=e.name,i=e.message;return{name:n,message:i,stack:t}}var c1=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?([\s\S]*)$/;function i1(l){var W,d,b;return{}.toString.call(l)==="[object String]"&&(W=c1.exec(l),d=W[1],b=W[2]),{name:d,message:b}}function UZ(){var l=2,W=new Error,d;if(!W.stack)try{throw W}catch{}return Ud(function(){var b=yV(W);b.stack=b.stack.slice(l),d=oW(b)}),d}function oW(l){var W=pe(l);return l.stack.forEach(function(d){var b=d.func==="?"?"<anonymous>":d.func,t=d.args&&d.args.length>0?"(".concat(d.args.join(", "),")"):"",e=d.line?":".concat(d.line):"",n=d.line&&d.column?":".concat(d.column):"";W+=`
|
|
270
|
-
at `.concat(b).concat(t," @ ").concat(d.url).concat(e).concat(n)}),W}function pe(l){return"".concat(l.name||"Error",": ").concat(l.message)}function uW(l,W,d,b){var t=b===void 0?{}:b,e=t.computeHandlingStack,n=l[W];if(typeof n!="function")if(W in l&&Za(W,"on"))n=AV;else return{stop:AV};var i=!1,h=function(){if(i)return n.apply(this,arguments);var G=da(arguments),p;Ud(d,null,[{target:this,parameters:G,onPostCall:function(X){p=X},handlingStack:e?UZ():void 0}]);var s=n.apply(this,G);return p&&Ud(p,null,[s]),s};return l[W]=h,{stop:function(){i=!0,l[W]===h&&(l[W]=n)}}}var G1=220*xV,p1="$",h1=3;function HV(l,W){W===void 0&&(W=G1);var d=vW(Object.prototype),b=vW(Array.prototype),t=[],e=new WeakMap,n=Xa(l,p1,void 0,t,e),i=JSON.stringify(n),h=i?i.length:0;if(h>W){oa(W,"discarded",l);return}for(;t.length>0&&h<W;){var G=t.shift(),p=0;if(Array.isArray(G.source))for(var s=0;s<G.source.length;s++){var X=Xa(G.source[s],G.path,s,t,e);if(X!==void 0?h+=JSON.stringify(X).length:h+=4,h+=p,p=1,h>W){oa(W,"truncated",l);break}G.target[s]=X}else for(var s in G.source)if(Object.prototype.hasOwnProperty.call(G.source,s)){var X=Xa(G.source[s],G.path,s,t,e);if(X!==void 0&&(h+=JSON.stringify(X).length+p+s.length+h1,p=1),h>W){oa(W,"truncated",l);break}G.target[s]=X}}return d(),b(),n}function Xa(l,W,d,b,t){var e=s1(l);if(!e||typeof e!="object")return R1(e);var n=Y1(e);if(n!=="[Object]"&&n!=="[Array]"&&n!=="[Error]")return n;var i=l;if(t.has(i))return"[Reference seen at ".concat(t.get(i),"]");var h=d!==void 0?"".concat(W,".").concat(d):W,G=Array.isArray(e)?[]:{};return t.set(i,h),b.push({source:e,target:G,path:h}),G}function R1(l){return typeof l=="bigint"?"[BigInt] ".concat(l.toString()):typeof l=="function"?"[Function] ".concat(l.name||"unknown"):typeof l=="symbol"?"[Symbol] ".concat(l.description||l.toString()):l}function Y1(l){try{if(l instanceof Event)return{isTrusted:l.isTrusted};var W=Object.prototype.toString.call(l),d=W.match(/\[object (.*)\]/);if(d&&d[1])return"[".concat(d[1],"]")}catch{}return"[Unserializable]"}function s1(l){var W=l;if(W&&typeof W.toJSON=="function")try{return W.toJSON()}catch{}return l}function oa(l,W,d){xl.warn("The data provided has been ".concat(W," as it is over the limit of ").concat(l," characters:"),d)}var he="No stack, consider using an instance of Error";function Re(l){var W=l.stackTrace,d=l.originalError,b=l.handlingStack,t=l.startClocks,e=l.nonErrorPrefix,n=l.source,i=l.handling,h=d instanceof Error,G=X1(W,h,e,d),p=o1(h,W)?oW(W):he,s=h?se(d,n):void 0,X=W?W.name:void 0,o=Ye(d);return{startClocks:t,source:n,handling:i,handlingStack:b,originalError:d,type:X,message:G,stack:p,causes:s,fingerprint:o}}function X1(l,W,d,b){return l!=null&&l.message&&(l!=null&&l.name)?l.message:W?"Empty message":"".concat(d," ").concat(sW(HV(b)))}function o1(l,W){return W===void 0?!1:l?!0:W.stack.length>0&&(W.stack.length>1||W.stack[0].url!==void 0)}function Ye(l){return l instanceof Error&&"dd_fingerprint"in l?String(l.dd_fingerprint):void 0}function u1(l){var W;return(W=/@ (.+)/.exec(l))===null||W===void 0?void 0:W[1]}function se(l,W){for(var d=l,b=[];(d==null?void 0:d.cause)instanceof Error&&b.length<10;){var t=yV(d.cause);b.push({message:d.cause.message,source:W,type:t==null?void 0:t.name,stack:t&&oW(t)}),d=d.cause}return b.length?b:void 0}var ql={AGENT:"agent",CONSOLE:"console",CUSTOM:"custom",LOGGER:"logger",NETWORK:"network",SOURCE:"source",REPORT:"report"};function N1(l){var W=function(t,e){var n=Re({stackTrace:t,originalError:e,startClocks:OV(),nonErrorPrefix:"Uncaught",source:ql.SOURCE,handling:"unhandled"});l.notify(n)},d=F1(W).stop,b=U1(W).stop;return{stop:function(){d(),b()}}}function F1(l){return uW(window,"onerror",function(W){var d=W.parameters,b=d[0],t=d[1],e=d[2],n=d[3],i=d[4],h;i instanceof Error?h=yV(i):h=n1(b,t,e,n),l(h,i??b)})}function U1(l){return uW(window,"onunhandledrejection",function(W){var d=W.parameters[0],b=d.reason||"Empty reason",t=yV(b);l(t,b)})}function S1(l){var W=Ll({version:"5.29.1",onReady:function(d){d()}},l);return Object.defineProperty(W,"_setDebug",{get:function(){return _p},enumerable:!1}),W}function M1(l,W,d){var b=l[W];b&&!b.q&&b.version&&xl.warn("SDK is loaded more than once. This is unsupported and might have unexpected behavior."),l[W]=d,b&&b.q&&b.q.forEach(function(t){return Cm(t,"onReady callback threw an error:")()})}function Xe(l,W){W.silentMultipleInit||xl.error("".concat(l," is already initialized."))}function NW(l,W,d,b,t){return ua(l,W,[d],b,t)}function ua(l,W,d,b,t){var e=t===void 0?{}:t,n=e.once,i=e.capture,h=e.passive,G=cl(function(o){!o.isTrusted&&!o.__ddIsTrusted&&!l.allowUntrustedEvents||(n&&X(),b(o))}),p=h?{capture:i,passive:h}:i,s=BW(W,"addEventListener");d.forEach(function(o){return s.call(W,o,G,p)});function X(){var o=BW(W,"removeEventListener");d.forEach(function(r){return o.call(W,r,G,p)})}return{stop:X}}var SZ={intervention:"intervention",deprecation:"deprecation",cspViolation:"csp_violation"};function T1(l,W){var d=[];wW(W,SZ.cspViolation)&&d.push(J1(l));var b=W.filter(function(t){return t!==SZ.cspViolation});return b.length&&d.push(r1(b)),qm.apply(void 0,d)}function r1(l){return new Il(function(W){if(window.ReportingObserver){var d=cl(function(t,e){return t.forEach(function(n){return W.notify(k1(n))})}),b=new window.ReportingObserver(d,{types:l,buffered:!0});return b.observe(),function(){b.disconnect()}}})}function J1(l){return new Il(function(W){var d=NW(l,document,"securitypolicyviolation",function(b){W.notify(x1(b))}).stop;return d})}function k1(l){var W=l.type,d=l.body;return oe({type:d.id,message:"".concat(W,": ").concat(d.message),originalError:l,stack:ue(d.id,d.message,d.sourceFile,d.lineNumber,d.columnNumber)})}function x1(l){var W="'".concat(l.blockedURI,"' blocked by '").concat(l.effectiveDirective,"' directive");return oe({type:l.effectiveDirective,message:"".concat(SZ.cspViolation,": ").concat(W),originalError:l,csp:{disposition:l.disposition},stack:ue(l.effectiveDirective,l.originalPolicy?"".concat(W,' of the policy "').concat(Vh(l.originalPolicy,100,"..."),'"'):"no policy",l.sourceFile,l.lineNumber,l.columnNumber)})}function oe(l){return Ll({startClocks:OV(),source:ql.REPORT,handling:"unhandled"},l)}function ue(l,W,d,b,t){return d?oW({name:l,message:W,stack:[{func:"?",url:d,line:b??void 0,column:t??void 0}]}):void 0}function Ne(l,W){var d=window.__ddBrowserSdkExtensionCallback;d&&d({type:l,payload:W})}function Na(l){return l===null?"null":Array.isArray(l)?"array":typeof l}function MZ(l,W,d){if(d===void 0&&(d=y1()),W===void 0)return l;if(typeof W!="object"||W===null)return W;if(W instanceof Date)return new Date(W.getTime());if(W instanceof RegExp){var b=W.flags||[W.global?"g":"",W.ignoreCase?"i":"",W.multiline?"m":"",W.sticky?"y":"",W.unicode?"u":""].join("");return new RegExp(W.source,b)}if(!d.hasAlreadyBeenSeen(W)){if(Array.isArray(W)){for(var t=Array.isArray(l)?l:[],e=0;e<W.length;++e)t[e]=MZ(t[e],W[e],d);return t}var n=Na(l)==="object"?l:{};for(var i in W)Object.prototype.hasOwnProperty.call(W,i)&&(n[i]=MZ(n[i],W[i],d));return n}}function Fe(l){return MZ(void 0,l)}function fW(){for(var l=[],W=0;W<arguments.length;W++)l[W]=arguments[W];for(var d,b=0,t=l;b<t.length;b++){var e=t[b];e!=null&&(d=MZ(d,e))}return d}function y1(){if(typeof WeakSet<"u"){var l=new WeakSet;return{hasAlreadyBeenSeen:function(d){var b=l.has(d);return b||l.add(d),b}}}var W=[];return{hasAlreadyBeenSeen:function(d){var b=W.indexOf(d)>=0;return b||W.push(d),b}}}function H1(){var l,W=window.navigator;return{status:W.onLine?"connected":"not_connected",interfaces:W.connection&&W.connection.type?[W.connection.type]:void 0,effective_type:(l=W.connection)===null||l===void 0?void 0:l.effectiveType}}function z1(l){var W=new Set;return l.forEach(function(d){return W.add(d)}),da(W)}function Ue(l,W){var d=l.indexOf(W);d>=0&&l.splice(d,1)}var I1=500;function Se(){var l=[],W=function(t){var e=l.push(t);e>I1&&l.splice(0,1)},d=function(t){Ue(l,t)},b=function(t){l.forEach(function(e){return e(t)}),l.length=0};return{add:W,remove:d,drain:b}}var FW={log:"log",configuration:"configuration",usage:"usage"},E1=["https://www.datadoghq-browser-agent.com","https://www.datad0g-browser-agent.com","https://d3uc069fcn7uxw.cloudfront.net","https://d20xtzwzcl0ceb.cloudfront.net","http://localhost","<anonymous>"],L1=[Eh],Me=Se(),CW=function(l){Me.add(function(){return CW(l)})};function w1(l,W){var d,b,t=new Il,e=new Set,n=!wW(L1,W.site)&&iZ(W.telemetrySampleRate),i=(d={},d[FW.log]=n,d[FW.configuration]=n&&iZ(W.telemetryConfigurationSampleRate),d[FW.usage]=n&&iZ(W.telemetryUsageSampleRate),d),h=j1();CW=function(p){var s=sW(p);if(i[p.type]&&e.size<W.maxTelemetryEventsPerPage&&!e.has(s)){var X=G(l,p,h);t.notify(X),Ne("telemetry",X),e.add(s)}},Ap(re);function G(p,s,X){return fW({type:"telemetry",date:DV(),service:p,version:"5.29.1",source:"browser",_dd:{format_version:2},telemetry:fW(s,{runtime_env:X,connectivity:H1(),sdk_setup:"npm"}),experimental_features:da($h())},b!==void 0?b():{})}return{setContextProvider:function(p){b=p},observable:t,enabled:n}}function j1(){return{is_local_file:window.location.protocol==="file:",is_worker:"WorkerGlobalScope"in self}}function B1(){Me.drain()}function K1(l){return l.site===zh}function Te(l,W){aa(Jl.debug,l,W),CW(Ll({type:FW.log,message:l,status:"debug"},W))}function re(l,W){CW(Ll({type:FW.log,status:"error"},f1(l),W))}function v1(l){CW({type:FW.configuration,configuration:l})}function g1(l){CW({type:FW.usage,usage:l})}function f1(l){if(l instanceof Error){var W=yV(l);return{error:{kind:W.name,stack:oW(C1(W))},message:W.message}}return{error:{stack:he},message:"".concat("Uncaught"," ").concat(sW(l))}}function C1(l){return l.stack=l.stack.filter(function(W){return!W.url||E1.some(function(d){return Za(W.url,d)})}),l}var TZ=1/0,Q1=GW;function D1(l){var W=l.expireDelay,d=l.maxEntries,b=[],t=ta(function(){return e()},Q1);function e(){for(var X=GZ()-W;b.length>0&&b[b.length-1].endTime<X;)b.pop()}function n(X,o){var r={value:X,startTime:o,endTime:TZ,remove:function(){Ue(b,r)},close:function(M){r.endTime=M}};return d&&b.length>=d&&b.pop(),b.unshift(r),r}function i(X,o){X===void 0&&(X=TZ),o===void 0&&(o={returnInactive:!1});for(var r=0,M=b;r<M.length;r++){var L=M[r];if(L.startTime<=X){if(o.returnInactive||X<=L.endTime)return L.value;break}}}function h(X){var o=b[0];o&&o.endTime===TZ&&o.close(X)}function G(X,o){X===void 0&&(X=TZ),o===void 0&&(o=0);var r=vp(X,o);return b.filter(function(M){return M.startTime<=r&&X<=M.endTime}).map(function(M){return M.value})}function p(){b=[]}function s(){_m(t)}return{add:n,find:i,closeActive:h,findAll:G,reset:p,stop:s}}var O1=GW,P1=ca;function A1(l,W,d,b){var t=new Il,e=new Il,n=kh(l.sessionStoreStrategyType,W,d),i=D1({expireDelay:P1});n.renewObservable.subscribe(function(){i.add(h(),GZ()),t.notify()}),n.expireObservable.subscribe(function(){e.notify(),i.closeActive(GZ())}),n.expandOrRenewSession(),i.add(h(),Bp().relative),b.observable.subscribe(function(){b.isGranted()?n.expandOrRenewSession():n.expire()}),_1(l,function(){b.isGranted()&&n.expandOrRenewSession()}),q1(l,function(){return n.expandSession()}),$1(l,function(){return n.restartSession()});function h(){return{id:n.getSession().id,trackingType:n.getSession()[W],isReplayForced:!!n.getSession().forcedReplay}}return{findSession:function(G,p){return i.find(G,p)},renewObservable:t,expireObservable:e,sessionStateUpdateObservable:n.sessionStateUpdateObservable,expire:n.expire,updateSessionState:n.updateSessionState}}function _1(l,W){ua(l,window,["click","touchstart","keydown","scroll"],W,{capture:!0,passive:!0}).stop}function q1(l,W){var d=function(){document.visibilityState==="visible"&&W()};NW(l,document,"visibilitychange",d).stop,ta(d,O1)}function $1(l,W){NW(l,window,"resume",W,{capture:!0}).stop}function Je(l){return l>=500}function lR(l){try{return l.clone()}catch{return}}var VR=80*xV,WR=32,ke=3*Dm,dR=GW,xe=Nd;function ye(l,W,d,b,t){W.transportStatus===0&&W.queuedPayloads.size()===0&&W.bandwidthMonitor.canHandle(l)?ze(l,W,d,{onSuccess:function(){return Ie(0,W,d,b,t)},onFailure:function(){W.queuedPayloads.enqueue(l),He(W,d,b,t)}}):W.queuedPayloads.enqueue(l)}function He(l,W,d,b){l.transportStatus===2&&Sd(function(){var t=l.queuedPayloads.first();ze(t,l,W,{onSuccess:function(){l.queuedPayloads.dequeue(),l.currentBackoffTime=xe,Ie(1,l,W,d,b)},onFailure:function(){l.currentBackoffTime=Math.min(dR,l.currentBackoffTime*2),He(l,W,d,b)}})},l.currentBackoffTime)}function ze(l,W,d,b){var t=b.onSuccess,e=b.onFailure;W.bandwidthMonitor.add(l),d(l,function(n){W.bandwidthMonitor.remove(l),ZR(n)?(W.transportStatus=W.bandwidthMonitor.ongoingRequestCount>0?1:2,l.retry={count:l.retry?l.retry.count+1:1,lastFailureStatus:n.status},e()):(W.transportStatus=0,t())})}function Ie(l,W,d,b,t){l===0&&W.queuedPayloads.isFull()&&!W.queueFullReported&&(t({message:"Reached max ".concat(b," events size queued for upload: ").concat(ke/Dm,"MiB"),source:ql.AGENT,startClocks:OV()}),W.queueFullReported=!0);var e=W.queuedPayloads;for(W.queuedPayloads=Ee();e.size()>0;)ye(e.dequeue(),W,d,b,t)}function ZR(l){return l.type!=="opaque"&&(l.status===0&&!navigator.onLine||l.status===408||l.status===429||Je(l.status))}function bR(){return{transportStatus:0,currentBackoffTime:xe,bandwidthMonitor:aR(),queuedPayloads:Ee(),queueFullReported:!1}}function Ee(){var l=[];return{bytesCount:0,enqueue:function(W){this.isFull()||(l.push(W),this.bytesCount+=W.bytesCount)},first:function(){return l[0]},dequeue:function(){var W=l.shift();return W&&(this.bytesCount-=W.bytesCount),W},size:function(){return l.length},isFull:function(){return this.bytesCount>=ke}}}function aR(){return{ongoingRequestCount:0,ongoingByteCount:0,canHandle:function(l){return this.ongoingRequestCount===0||this.ongoingByteCount+l.bytesCount<=VR&&this.ongoingRequestCount<WR},add:function(l){this.ongoingRequestCount+=1,this.ongoingByteCount+=l.bytesCount},remove:function(l){this.ongoingRequestCount-=1,this.ongoingByteCount-=l.bytesCount}}}function tR(l,W,d,b){var t=bR(),e=function(n,i){return nR(l,W,d,n,i)};return{send:function(n){ye(n,t,e,W.trackType,b)},sendOnExit:function(n){mR(l,W,d,n)}}}function mR(l,W,d,b){var t=!!navigator.sendBeacon&&b.bytesCount<d;if(t)try{var e=W.build("beacon",b),n=navigator.sendBeacon(e,b.data);if(n)return}catch(h){eR(h)}var i=W.build("xhr",b);Fa(l,i,b.data)}var Le=!1;function eR(l){Le||(Le=!0,re(l))}function nR(l,W,d,b,t){var e=cR()&&b.bytesCount<d;if(e){var n=W.build("fetch",b);fetch(n,{method:"POST",body:b.data,keepalive:!0,mode:"cors"}).then(cl(function(h){return t==null?void 0:t({status:h.status,type:h.type})}),cl(function(){var h=W.build("xhr",b);Fa(l,h,b.data,t)}))}else{var i=W.build("xhr",b);Fa(l,i,b.data,t)}}function cR(){try{return window.Request&&"keepalive"in new Request("http://a")}catch{return!1}}function Fa(l,W,d,b){var t=new XMLHttpRequest;t.open("POST",W,!0),d instanceof Blob&&t.setRequestHeader("Content-Type",d.type),NW(l,t,"loadend",function(){b==null||b({status:t.status})},{once:!0}),t.send(d)}function Ua(){var l=iR();if(l)return{getCapabilities:function(){var W;return JSON.parse(((W=l.getCapabilities)===null||W===void 0?void 0:W.call(l))||"[]")},getPrivacyLevel:function(){var W;return(W=l.getPrivacyLevel)===null||W===void 0?void 0:W.call(l)},getAllowedWebViewHosts:function(){return JSON.parse(l.getAllowedWebViewHosts())},send:function(W,d,b){var t=b?{id:b}:void 0;l.send(JSON.stringify({eventType:W,event:d,view:t}))}}}function rZ(l){var W;l===void 0&&(l=(W=PV().location)===null||W===void 0?void 0:W.hostname);var d=Ua();return!!d&&d.getAllowedWebViewHosts().some(function(b){return l===b||Dp(l,".".concat(b))})}function iR(){return PV().DatadogEventBridge}var JZ={HIDDEN:"visibility_hidden",UNLOADING:"before_unload",PAGEHIDE:"page_hide",FROZEN:"page_frozen"};function GR(l){return new Il(function(W){var d=ua(l,window,["visibilitychange","freeze"],function(t){t.type==="visibilitychange"&&document.visibilityState==="hidden"?W.notify({reason:JZ.HIDDEN}):t.type==="freeze"&&W.notify({reason:JZ.FROZEN})},{capture:!0}).stop,b=NW(l,window,"beforeunload",function(){W.notify({reason:JZ.UNLOADING})}).stop;return function(){d(),b()}})}function pR(l){return wW(jW(JZ),l)}function hR(l){var W=l.encoder,d=l.request,b=l.flushController,t=l.messageBytesLimit,e={},n=b.flushObservable.subscribe(function(X){return s(X)});function i(X,o,r){b.notifyBeforeAddMessage(o),r!==void 0?(e[r]=X,b.notifyAfterAddMessage()):W.write(W.isEmpty?X:`
|
|
271
|
-
`.concat(X),function(M){b.notifyAfterAddMessage(M-o)})}function h(X){return X!==void 0&&e[X]!==void 0}function G(X){var o=e[X];delete e[X];var r=W.estimateEncodedBytesCount(o);b.notifyAfterRemoveMessage(r)}function p(X,o){var r=sW(X),M=W.estimateEncodedBytesCount(r);if(M>=t){xl.warn("Discarded a message whose size was bigger than the maximum allowed size ".concat(t,"KB. ").concat(cZ," ").concat(fm,"/#technical-limitations"));return}h(o)&&G(o),i(r,M,o)}function s(X){var o=jW(e).join(`
|
|
272
|
-
`);e={};var r=pR(X.reason),M=r?d.sendOnExit:d.send;if(r&&W.isAsync){var L=W.finishSync();L.outputBytesCount&&M(we(L));var J=[L.pendingData,o].filter(Boolean).join(`
|
|
273
|
-
`);J&&M({data:J,bytesCount:Wa(J)})}else o&&W.write(W.isEmpty?o:`
|
|
274
|
-
`.concat(o)),W.finish(function(w){M(we(w))})}return{flushController:b,add:p,upsert:p,stop:n.unsubscribe}}function we(l){var W;return typeof l.output=="string"?W=l.output:W=new Blob([l.output],{type:"text/plain"}),{data:W,bytesCount:l.outputBytesCount,encoding:l.encoding}}function RR(l){var W=l.messagesLimit,d=l.bytesLimit,b=l.durationLimit,t=l.pageExitObservable,e=l.sessionExpireObservable,n=t.subscribe(function(M){return s(M.reason)}),i=e.subscribe(function(){return s("session_expire")}),h=new Il(function(){return function(){n.unsubscribe(),i.unsubscribe()}}),G=0,p=0;function s(M){if(p!==0){var L=p,J=G;p=0,G=0,r(),h.notify({reason:M,messagesCount:L,bytesCount:J})}}var X;function o(){X===void 0&&(X=Sd(function(){s("duration_limit")},b))}function r(){Am(X),X=void 0}return{flushObservable:h,get messagesCount(){return p},notifyBeforeAddMessage:function(M){G+M>=d&&s("bytes_limit"),p+=1,G+=M,o()},notifyAfterAddMessage:function(M){M===void 0&&(M=0),G+=M,p>=W?s("messages_limit"):G>=d&&s("bytes_limit")},notifyAfterRemoveMessage:function(M){G-=M,p-=1,p===0&&r()}}}function je(l,W,d,b,t,e,n){n===void 0&&(n=hR);var i=G(l,W),h=d&&G(l,d);function G(p,s){var X=s.endpoint,o=s.encoder;return n({encoder:o,request:tR(p,X,p.batchBytesLimit,b),flushController:RR({messagesLimit:p.batchMessagesLimit,bytesLimit:p.batchBytesLimit,durationLimit:p.flushTimeout,pageExitObservable:t,sessionExpireObservable:e}),messageBytesLimit:p.messageBytesLimit})}return{flushObservable:i.flushController.flushObservable,add:function(p,s){s===void 0&&(s=!0),i.add(p),h&&s&&h.add(d.transformMessage?d.transformMessage(p):p)},upsert:function(p,s){i.upsert(p,s),h&&h.upsert(d.transformMessage?d.transformMessage(p):p,s)},stop:function(){i.stop(),h&&h.stop()}}}function kZ(){var l="",W=0;return{isAsync:!1,get isEmpty(){return!l},write:function(d,b){var t=Wa(d);W+=t,l+=d,b&&b(t)},finish:function(d){d(this.finishSync())},finishSync:function(){var d={output:l,outputBytesCount:W,rawBytesCount:W,pendingData:""};return l="",W=0,d},estimateEncodedBytesCount:function(d){return d.length}}}var YR=function(){function l(){this.callbacks={}}return l.prototype.notify=function(W,d){var b=this.callbacks[W];b&&b.forEach(function(t){return t(d)})},l.prototype.subscribe=function(W,d){var b=this;return this.callbacks[W]||(this.callbacks[W]=[]),this.callbacks[W].push(d),{unsubscribe:function(){b.callbacks[W]=b.callbacks[W].filter(function(t){return d!==t})}}},l}();function sR(l,W,d){var b=0,t=!1;return{isLimitReached:function(){if(b===0&&Sd(function(){b=0},GW),b+=1,b<=W||t)return t=!1,!1;if(b===W+1){t=!0;try{d({message:"Reached max number of ".concat(l,"s by minute: ").concat(W),source:ql.AGENT,startClocks:OV()})}finally{t=!1}}return!0}}}var Sa,Ma=new WeakMap;function XR(l){return Sa||(Sa=oR(l)),Sa}function oR(l){return new Il(function(W){var d=uW(XMLHttpRequest.prototype,"open",uR).stop,b=uW(XMLHttpRequest.prototype,"send",function(e){NR(e,l,W)},{computeHandlingStack:!0}).stop,t=uW(XMLHttpRequest.prototype,"abort",FR).stop;return function(){d(),b(),t()}})}function uR(l){var W=l.target,d=l.parameters,b=d[0],t=d[1];Ma.set(W,{state:"open",method:String(b).toUpperCase(),url:ha(String(t))})}function NR(l,W,d){var b=l.target,t=l.handlingStack,e=Ma.get(b);if(e){var n=e;n.state="start",n.startClocks=OV(),n.isAborted=!1,n.xhr=b,n.handlingStack=t;var i=!1,h=uW(b,"onreadystatechange",function(){b.readyState===XMLHttpRequest.DONE&&G()}).stop,G=function(){if(p(),h(),!i){i=!0;var s=e;s.state="complete",s.duration=Kp(n.startClocks.timeStamp,DV()),s.status=b.status,d.notify(Op(s))}},p=NW(W,b,"loadend",G).stop;d.notify(n)}}function FR(l){var W=l.target,d=Ma.get(W);d&&(d.isAborted=!0)}var Ta;function Be(){return Ta||(Ta=UR()),Ta}function UR(){return new Il(function(l){if(window.fetch){var W=uW(window,"fetch",function(d){return SR(d,l)},{computeHandlingStack:!0}).stop;return W}})}function SR(l,W){var d=l.parameters,b=l.onPostCall,t=l.handlingStack,e=d[0],n=d[1],i=n&&n.method;i===void 0&&e instanceof Request&&(i=e.method);var h=i!==void 0?String(i).toUpperCase():"GET",G=e instanceof Request?e.url:ha(String(e)),p=OV(),s={state:"start",init:n,input:e,method:h,startClocks:p,url:G,handlingStack:t};W.notify(s),d[0]=s.input,d[1]=s.init,b(function(X){return MR(W,X,s)})}function MR(l,W,d){var b=d;function t(e){b.state="resolve",Ll(b,e),l.notify(b)}W.then(cl(function(e){t({response:e,responseType:e.type,status:e.status,isAborted:!1})}),cl(function(e){var n,i;t({status:0,isAborted:((i=(n=b.init)===null||n===void 0?void 0:n.signal)===null||i===void 0?void 0:i.aborted)||e instanceof DOMException&&e.code===DOMException.ABORT_ERR,error:e})}))}var ra={};function TR(l){var W=l.map(function(d){return ra[d]||(ra[d]=rR(d)),ra[d]});return qm.apply(void 0,W)}function rR(l){return new Il(function(W){var d=SV[l];return SV[l]=function(){for(var b=[],t=0;t<arguments.length;t++)b[t]=arguments[t];d.apply(console,b);var e=UZ();Ud(function(){W.notify(JR(b,l,e))})},function(){SV[l]=d}})}function JR(l,W,d){var b=l.map(function(n){return kR(n)}).join(" "),t;if(W===Jl.error){var e=Cp(l,function(n){return n instanceof Error});t={stack:e?oW(yV(e)):void 0,fingerprint:Ye(e),causes:e?se(e,"console"):void 0,startClocks:OV(),message:b,source:ql.CONSOLE,handling:"handled",handlingStack:d}}return{api:W,message:b,error:t,handlingStack:d}}function kR(l){return typeof l=="string"?HV(l):l instanceof Error?pe(yV(l)):sW(HV(l),void 0,2)}function Ja(l){var W={},d=new Il,b={getContext:function(){return Fe(W)},setContext:function(t){Na(t)==="object"?(W=HV(t),l&&l.updateCustomerData(W)):b.clearContext(),d.notify()},setContextProperty:function(t,e){W[t]=HV(e),l&&l.updateCustomerData(W),d.notify()},removeContextProperty:function(t){delete W[t],l&&l.updateCustomerData(W),d.notify()},clearContext:function(){W={},l&&l.resetCustomerData(),d.notify()},changeObservable:d};return b}var xR="_dd_c",yR=[];function Ke(l,W,d,b){var t=HR(d,b);yR.push(NW(l,window,"storage",function(h){var G=h.key;t===G&&e()})),W.changeObservable.subscribe(n),W.setContext(fW(i(),W.getContext()));function e(){W.setContext(i())}function n(){localStorage.setItem(t,JSON.stringify(W.getContext()))}function i(){var h=localStorage.getItem(t);return h!==null?JSON.parse(h):{}}}function HR(l,W){return"".concat(xR,"_").concat(l,"_").concat(W)}var zR=3*xV,IR=16*xV,ER=200;function LR(l){l===void 0&&(l=2);var W=new Map,d=!1;function b(t){if(t===void 0&&(t=0),!(d||l===0)){var e=l===2?zR:IR,n=t;W.forEach(function(i){n+=i.getBytesCount()}),n>e&&(wR(e),d=!0)}}return{createDetachedTracker:function(){var t=ve(function(){return b(t.getBytesCount())});return t},getOrCreateTracker:function(t){return W.has(t)||W.set(t,ve(b)),W.get(t)},setCompressionStatus:function(t){l===0&&(l=t,b())},getCompressionStatus:function(){return l},stop:function(){W.forEach(function(t){return t.stop()}),W.clear()}}}function ve(l){var W=0,d=$m(function(n){W=Wa(sW(n)),l()},ER),b=d.throttled,t=d.cancel,e=function(){t(),W=0};return{updateCustomerData:function(n){ba(n)?e():b(n)},resetCustomerData:e,getBytesCount:function(){return W},stop:function(){t()}}}function wR(l){xl.warn("Customer data exceeds the recommended ".concat(l/xV,"KiB threshold. ").concat(cZ," ").concat(fm,"/#customer-data-exceeds-the-recommended-threshold-warning"))}function jR(l,W,d){var b=l.getReader(),t=[],e=0;n();function n(){b.read().then(cl(function(h){if(h.done){i();return}t.push(h.value),e+=h.value.length,e>d.bytesLimit?i():n()}),cl(function(h){return W(h)}))}function i(){b.cancel().catch(AV);var h,G;{var p;if(t.length===1)p=t[0];else{p=new Uint8Array(e);var s=0;t.forEach(function(X){p.set(X,s),s+=X.length})}h=p.slice(0,d.bytesLimit),G=p.length>d.bytesLimit}W(void 0,h,G)}}var BR="datadog-synthetics-public-id",KR="datadog-synthetics-result-id",vR="datadog-synthetics-injects-rum";function ge(){return!!(window._DATADOG_SYNTHETICS_INJECTS_RUM||hW(vR))}function gR(){var l=window._DATADOG_SYNTHETICS_PUBLIC_ID||hW(BR);return typeof l=="string"?l:void 0}function fR(){var l=window._DATADOG_SYNTHETICS_RESULT_ID||hW(KR);return typeof l=="string"?l:void 0}function fe(l){var W=Ll({},l),d=["id","name","email"];return d.forEach(function(b){b in W&&(W[b]=String(W[b]))}),W}function CR(l){var W=Na(l)==="object";return W||xl.error("Unsupported user:",l),W}var hV;function xZ(l,W,d){var b=d.getHandler(),t=Array.isArray(b)?b:[b];return Ce[l]>=Ce[d.getLevel()]&&wW(t,W)}var q={ok:"ok",debug:"debug",info:"info",notice:"notice",warn:"warn",error:"error",critical:"critical",alert:"alert",emerg:"emerg"},Ce=(hV={},hV[q.ok]=0,hV[q.debug]=1,hV[q.info]=2,hV[q.notice]=4,hV[q.warn]=5,hV[q.error]=6,hV[q.critical]=7,hV[q.alert]=8,hV[q.emerg]=9,hV);function yZ(l,W){var d=W===void 0?{}:W,b=d.includeMessage,t=b===void 0?!1:b;return{stack:l.stack,kind:l.type,message:t?l.message:void 0,causes:l.causes,fingerprint:l.fingerprint,handling:l.handling}}var QR=function(l,W,d,b){var t=arguments.length,e=t<3?W:b===null?b=Object.getOwnPropertyDescriptor(W,d):b,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")e=Reflect.decorate(l,W,d,b);else for(var i=l.length-1;i>=0;i--)(n=l[i])&&(e=(t<3?n(e):t>3?n(W,d,e):n(W,d))||e);return t>3&&e&&Object.defineProperty(W,d,e),e},Jd={console:"console",http:"http",silent:"silent"},DR=Object.keys(q),RV=function(){function l(W,d,b,t,e,n){t===void 0&&(t=Jd.http),e===void 0&&(e=q.debug),n===void 0&&(n={}),this.handleLogStrategy=W,this.handlerType=t,this.level=e,this.contextManager=Ja(d),this.contextManager.setContext(n),b&&this.contextManager.setContextProperty("logger",{name:b})}return l.prototype.logImplementation=function(W,d,b,t,e){b===void 0&&(b=q.info);var n=HV(d),i;if(t!=null){var h=Re({stackTrace:t instanceof Error?yV(t):void 0,originalError:t,nonErrorPrefix:"Provided",source:ql.LOGGER,handling:"handled",startClocks:OV()});i=fW({error:yZ(h,{includeMessage:!0})},n)}else i=n;this.handleLogStrategy({message:HV(W),context:i,status:b},this,e)},l.prototype.log=function(W,d,b,t){b===void 0&&(b=q.info);var e;xZ(b,Jd.http,this)&&(e=UZ()),this.logImplementation(W,d,b,t,e)},l.prototype.setContext=function(W){this.contextManager.setContext(W)},l.prototype.getContext=function(){return this.contextManager.getContext()},l.prototype.setContextProperty=function(W,d){this.contextManager.setContextProperty(W,d)},l.prototype.removeContextProperty=function(W){this.contextManager.removeContextProperty(W)},l.prototype.clearContext=function(){this.contextManager.clearContext()},l.prototype.setHandler=function(W){this.handlerType=W},l.prototype.getHandler=function(){return this.handlerType},l.prototype.setLevel=function(W){this.level=W},l.prototype.getLevel=function(){return this.level},QR([qp],l.prototype,"logImplementation",null),l}();RV.prototype.ok=zV(q.ok),RV.prototype.debug=zV(q.debug),RV.prototype.info=zV(q.info),RV.prototype.notice=zV(q.notice),RV.prototype.warn=zV(q.warn),RV.prototype.error=zV(q.error),RV.prototype.critical=zV(q.critical),RV.prototype.alert=zV(q.alert),RV.prototype.emerg=zV(q.emerg);function zV(l){return function(W,d,b){var t;xZ(l,Jd.http,this)&&(t=UZ()),this.logImplementation(W,d,l,b,t)}}function OR(l,W){return{view:{referrer:document.referrer,url:window.location.href},context:l.getContext(),user:W.getContext()}}var PR=32*xV;function AR(l){l.usePciIntake===!0&&l.site&&l.site!=="datadoghq.com"&&xl.warn("PCI compliance for Logs is only available for Datadog organizations in the US1 site. Default intake will be used.");var W=Ph(l),d=Qe(l.forwardConsoleLogs,jW(Jl),"Forward Console Logs"),b=Qe(l.forwardReports,jW(SZ),"Forward Reports");if(!(!W||!d||!b))return l.forwardErrorsToLogs&&!wW(d,Jl.error)&&d.push(Jl.error),Ll({forwardErrorsToLogs:l.forwardErrorsToLogs!==!1,forwardConsoleLogs:d,forwardReports:b,requestErrorResponseLengthLimit:PR,sendLogsAfterSessionExpiration:!!l.sendLogsAfterSessionExpiration},W)}function Qe(l,W,d){if(l===void 0)return[];if(!(l==="all"||Array.isArray(l)&&l.every(function(b){return wW(W,b)}))){xl.error("".concat(d,' should be "all" or an array with allowed values "').concat(W.join('", "'),'"'));return}return l==="all"?W:z1(l)}function _R(l){var W=Ah(l);return Ll({forward_errors_to_logs:l.forwardErrorsToLogs,forward_console_logs:l.forwardConsoleLogs,forward_reports:l.forwardReports,use_pci_intake:l.usePciIntake,send_logs_after_session_expiration:l.sendLogsAfterSessionExpiration},W)}function qR(l,W,d){var b=Se(),t,e,n=W.observable.subscribe(i);function i(){if(!(!e||!t||!W.isGranted())){n.unsubscribe();var h=d(t,e);b.drain(h)}}return{init:function(h){if(!h){xl.error("Missing configuration");return}if(_h(h.enableExperimentalFeatures),rZ()&&(h=$R(h)),t=h,e){Xe("DD_LOGS",h);return}var G=AR(h);G&&(e=G,Be().subscribe(AV),W.tryToInit(G.trackingConsent),i())},get initConfiguration(){return t},getInternalContext:AV,handleLog:function(h,G,p,s,X){s===void 0&&(s=l()),X===void 0&&(X=DV()),b.add(function(o){return o.handleLog(h,G,p,s,X)})}}}function $R(l){return Ll({},l,{clientToken:"empty"})}var De="logs";function lY(l){var W=LR(),d=Ja(W.getOrCreateTracker(2)),b=Ja(W.getOrCreateTracker(1)),t=xh();function e(){return OR(d,b)}var n=qR(e,t,function(G,p){G.storeContextsAcrossPages&&(Ke(p,d,De,2),Ke(p,b,De,1));var s=l(G,p,e,t);return n=VY(G,s),s}),i={},h=new RV(function(){for(var G=[],p=0;p<arguments.length;p++)G[p]=arguments[p];return n.handleLog.apply(n,G)},W.createDetachedTracker());return S1({logger:h,init:cl(function(G){return n.init(G)}),setTrackingConsent:cl(function(G){t.update(G),g1({feature:"set-tracking-consent",tracking_consent:G})}),getGlobalContext:cl(function(){return d.getContext()}),setGlobalContext:cl(function(G){return d.setContext(G)}),setGlobalContextProperty:cl(function(G,p){return d.setContextProperty(G,p)}),removeGlobalContextProperty:cl(function(G){return d.removeContextProperty(G)}),clearGlobalContext:cl(function(){return d.clearContext()}),createLogger:cl(function(G,p){return p===void 0&&(p={}),i[G]=new RV(function(){for(var s=[],X=0;X<arguments.length;X++)s[X]=arguments[X];return n.handleLog.apply(n,s)},W.createDetachedTracker(),HV(G),p.handler,p.level,HV(p.context)),i[G]}),getLogger:cl(function(G){return i[G]}),getInitConfiguration:cl(function(){return Fe(n.initConfiguration)}),getInternalContext:cl(function(G){return n.getInternalContext(G)}),setUser:cl(function(G){CR(G)&&b.setContext(fe(G))}),getUser:cl(function(){return b.getContext()}),setUserProperty:cl(function(G,p){var s,X=fe((s={},s[G]=p,s))[G];b.setContextProperty(G,X)}),removeUserProperty:cl(function(G){return b.removeContextProperty(G)}),clearUser:cl(function(){return b.clearContext()})})}function VY(l,W){return Ll({init:function(d){Xe("DD_LOGS",d)},initConfiguration:l},W)}var WY="logs";function dY(l,W){var d=A1(l,WY,function(b){return bY(l,b)},W);return{findTrackedSession:function(b,t){t===void 0&&(t={returnInactive:!1});var e=d.findSession(b,t);return e&&e.trackingType==="1"?{id:e.id}:void 0},expireObservable:d.expireObservable}}function ZY(l){var W=Oe(l)==="1",d=W?{}:void 0;return{findTrackedSession:function(){return d},expireObservable:new Il}}function Oe(l){return iZ(l.sessionSampleRate)?"1":"0"}function bY(l,W){var d=aY(W)?W:Oe(l);return{trackingType:d,isTracked:d==="1"}}function aY(l){return l==="0"||l==="1"}var Pe=!1;function HZ(l){var W=window;if(ge()){var d=b(W.DD_RUM_SYNTHETICS);return!d&&!Pe&&(Pe=!0,Te("Logs sent before RUM is injected by the synthetics worker",{testId:gR(),resultId:fR()})),d}return b(W.DD_RUM);function b(t){if(t&&t.getInternalContext)return t.getInternalContext(l)}}function tY(l,W,d,b,t){var e=DR.concat(["custom"]),n={};e.forEach(function(i){n[i]=sR(i,W.eventRateLimiterThreshold,t)}),d.subscribe(0,function(i){var h,G,p=i.rawLogsEvent,s=i.messageContext,X=s===void 0?void 0:s,o=i.savedCommonContext,r=o===void 0?void 0:o,M=i.domainContext,L=gp(p.date),J=l.findTrackedSession(L);if(!(!J&&(!W.sendLogsAfterSessionExpiration||!l.findTrackedSession(L,{returnInactive:!0})))){var w=r||b(),K=fW({service:W.service,session_id:J?J.id:void 0,usr:ba(w.user)?void 0:w.user,view:w.view},w.context,HZ(L),p,X);((h=W.beforeSend)===null||h===void 0?void 0:h.call(W,K,M))===!1||K.origin!==ql.AGENT&&((G=n[K.status])!==null&&G!==void 0?G:n.custom).isLimitReached()||d.notify(1,K)}})}var UW,mY=(UW={},UW[Jl.log]=q.info,UW[Jl.debug]=q.debug,UW[Jl.info]=q.info,UW[Jl.warn]=q.warn,UW[Jl.error]=q.error,UW);function eY(l,W){var d=TR(l.forwardConsoleLogs).subscribe(function(b){var t={rawLogsEvent:{date:DV(),message:b.message,origin:ql.CONSOLE,error:b.error&&yZ(b.error),status:mY[b.api]},domainContext:{handlingStack:b.handlingStack}};W.notify(0,t)});return{stop:function(){d.unsubscribe()}}}function nY(l,W){var d=T1(l,l.forwardReports).subscribe(function(b){var t=b.message,e,n=b.originalError.type==="deprecation"?q.warn:q.error;n===q.error?e=yZ(b):b.stack&&(t+=" Found in ".concat(u1(b.stack))),W.notify(0,{rawLogsEvent:{date:DV(),message:t,origin:ql.REPORT,error:e,status:n}})});return{stop:function(){d.unsubscribe()}}}function cY(l,W){if(!l.forwardErrorsToLogs)return{stop:AV};var d=XR(l).subscribe(function(e){e.state==="complete"&&t("xhr",e)}),b=Be().subscribe(function(e){e.state==="resolve"&&t("fetch",e)});function t(e,n){!l.isIntakeUrl(n.url)&&(hY(n)||Je(n.status))&&("xhr"in n?iY(n.xhr,l,i):n.response?pY(n.response,l,i):n.error&&GY(n.error,l,i));function i(h){var G={isAborted:n.isAborted,handlingStack:n.handlingStack};W.notify(0,{rawLogsEvent:{message:"".concat(RY(e)," error ").concat(n.method," ").concat(n.url),date:n.startClocks.timeStamp,error:{stack:h||"Failed to load",handling:void 0},http:{method:n.method,status_code:n.status,url:n.url},status:q.error,origin:ql.NETWORK},domainContext:G})}}return{stop:function(){d.unsubscribe(),b.unsubscribe()}}}function iY(l,W,d){typeof l.response=="string"?d(ka(l.response,W)):d(l.response)}function GY(l,W,d){d(ka(oW(yV(l)),W))}function pY(l,W,d){var b=lR(l);!b||!b.body?d():window.TextDecoder?YY(b.body,W.requestErrorResponseLengthLimit,function(t,e){d(t?"Unable to retrieve response: ".concat(t):e)}):b.text().then(cl(function(t){return d(ka(t,W))}),cl(function(t){return d("Unable to retrieve response: ".concat(t))}))}function hY(l){return l.status===0&&l.responseType!=="opaque"}function ka(l,W){return l.length>W.requestErrorResponseLengthLimit?"".concat(l.substring(0,W.requestErrorResponseLengthLimit),"..."):l}function RY(l){return l==="xhr"?"XHR":"Fetch"}function YY(l,W,d){jR(l,function(b,t,e){if(b)d(b);else{var n=new TextDecoder().decode(t);e&&(n+="..."),d(void 0,n)}},{bytesLimit:W,collectStreamBody:!0})}function sY(l,W){if(!l.forwardErrorsToLogs)return{stop:AV};var d=new Il,b=N1(d).stop,t=d.subscribe(function(e){W.notify(0,{rawLogsEvent:{message:e.message,date:e.startClocks.timeStamp,error:yZ(e),origin:ql.SOURCE,status:q.error}})});return{stop:function(){b(),t.unsubscribe()}}}var XY=YR,YV;function oY(l){function W(d,b,t,e,n){var i=fW(b.getContext(),d.context);if(xZ(d.status,Jd.console,b)&&NY(d,i),xZ(d.status,Jd.http,b)){var h={rawLogsEvent:{date:n||DV(),message:d.message,status:d.status,origin:ql.LOGGER},messageContext:i,savedCommonContext:e};t&&(h.domainContext={handlingStack:t}),l.notify(0,h)}}return{handleLog:W}}var uY=(YV={},YV[q.ok]=Jl.debug,YV[q.debug]=Jl.debug,YV[q.info]=Jl.info,YV[q.notice]=Jl.info,YV[q.warn]=Jl.warn,YV[q.error]=Jl.error,YV[q.critical]=Jl.error,YV[q.alert]=Jl.error,YV[q.emerg]=Jl.error,YV);function NY(l,W){var d=l.status,b=l.message;iW[uY[d]].call(SV,b,W)}function FY(l,W,d,b,t){var e=je(l,{endpoint:l.logsEndpointBuilder,encoder:kZ()},l.replica&&{endpoint:l.replica.logsEndpointBuilder,encoder:kZ()},d,b,t.expireObservable);return W.subscribe(1,function(n){e.add(n)}),e}function UY(l){var W=Ua();l.subscribe(1,function(d){W.send("log",d)})}function SY(l){return{get:function(W){var d=l.findTrackedSession(W);if(d)return{session_id:d.id}}}}function MY(l){return function(W){l.notify(0,{rawLogsEvent:{message:W.message,date:W.startClocks.timeStamp,origin:ql.AGENT,status:q.error}}),Te("Error reported to customer",{"error.message":W.message})}}function TY(l,W,d,b,t){var e=w1("browser-logs-sdk",W);e.setContextProvider(function(){var s,X,o,r,M,L;return{application:{id:(s=HZ())===null||s===void 0?void 0:s.application_id},session:{id:(X=t.findTrackedSession())===null||X===void 0?void 0:X.id},view:{id:(r=(o=HZ())===null||o===void 0?void 0:o.view)===null||r===void 0?void 0:r.id},action:{id:(L=(M=HZ())===null||M===void 0?void 0:M.user_action)===null||L===void 0?void 0:L.id}}});var n=[];if(rZ()){var i=Ua(),h=e.observable.subscribe(function(s){return i.send("internal_telemetry",s)});n.push(function(){return h.unsubscribe()})}else{var G=je(W,{endpoint:W.rumEndpointBuilder,encoder:kZ()},W.replica&&{endpoint:W.replica.rumEndpointBuilder,encoder:kZ()},d,b,t.expireObservable);n.push(function(){return G.stop()});var p=e.observable.subscribe(function(s){return G.add(s,K1(W))});n.push(function(){return p.unsubscribe()})}return B1(),v1(_R(l)),{telemetry:e,stop:function(){n.forEach(function(s){return s()})}}}function rY(l,W,d,b){var t=new XY,e=[];t.subscribe(1,function(o){return Ne("logs",o)});var n=MY(t),i=GR(W),h=W.sessionStoreStrategyType&&!rZ()&&!ge()?dY(W,b):ZY(W),G=TY(l,W,n,i,h).stop;e.push(function(){return G()}),cY(W,t),sY(W,t),eY(W,t),nY(W,t);var p=oY(t).handleLog;if(tY(h,W,t,d,n),rZ())UY(t);else{var s=FY(W,t,n,i,h).stop;e.push(function(){return s()})}var X=SY(h);return{handleLog:p,getInternalContext:X.get,stop:function(){e.forEach(function(o){return o()})}}}var kd=lY(rY);M1(PV(),"DD_LOGS",kd),kd.init({clientToken:"pub4844895ac30067ac2c4aaa025dbc39d7",site:"us3.datadoghq.com",forwardErrorsToLogs:!0,sessionSampleRate:100});const QW={Info:"info",Warn:"warn",Error:"error"},il=function(l,W){console.log("%cOTTPlayer: "+l,"color: #59acff"),xa()?postMessage({action:"log",payload:{status:QW.Info,message:"Web log: "+l,payload:W}}):kd.logger.info("Web log: "+l,W)},SW=function(l,W){console.log("%cOTTPlayer: "+l,"color: #b59400"),xa()?postMessage({action:"log",payload:{status:QW.Warn,message:l,payload:W}}):kd.logger.warn(l,W)},Ml=function(l,W){console.error("OTTPlayer: "+l),W&&console.error(W),xa()?postMessage({action:"log",payload:{status:QW.Error,message:l,payload:W}}):kd.logger.error(l,null,W)},Ae=l=>{const{message:W,payload:d,error:b}=l;switch(l.status){case QW.Info:il(W,d);break;case QW.Warn:SW(W,d);break;case QW.Error:Ml(W,b);break;default:SW("Unknown log type");break}},xa=()=>typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope;var IV=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function _e(l){return l&&l.__esModule&&Object.prototype.hasOwnProperty.call(l,"default")?l.default:l}function JY(l){if(l.__esModule)return l;var W=l.default;if(typeof W=="function"){var d=function b(){return this instanceof b?Reflect.construct(W,arguments,this.constructor):W.apply(this,arguments)};d.prototype=W.prototype}else d={};return Object.defineProperty(d,"__esModule",{value:!0}),Object.keys(l).forEach(function(b){var t=Object.getOwnPropertyDescriptor(l,b);Object.defineProperty(d,b,t.get?t:{enumerable:!0,get:function(){return l[b]}})}),d}var zZ={exports:{}};/**
|
|
275
|
-
* @license
|
|
276
|
-
* Lodash <https://lodash.com/>
|
|
277
|
-
* Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
|
|
278
|
-
* Released under MIT license <https://lodash.com/license>
|
|
279
|
-
* Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
|
|
280
|
-
* Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
|
|
281
|
-
*/zZ.exports,function(l,W){(function(){var d,b="4.17.21",t=200,e="Unsupported core-js use. Try https://npms.io/search?q=ponyfill.",n="Expected a function",i="Invalid `variable` option passed into `_.template`",h="__lodash_hash_undefined__",G=500,p="__lodash_placeholder__",s=1,X=2,o=4,r=1,M=2,L=1,J=2,w=4,K=8,x=16,z=32,I=64,k=128,B=256,C=512,A=30,Vl="...",dl=800,Fl=16,ul=1,Ul=2,EV=3,gl=1/0,VW=9007199254740991,NU=17976931348623157e292,bb=NaN,TV=4294967295,FU=TV-1,UU=TV>>>1,SU=[["ary",k],["bind",L],["bindKey",J],["curry",K],["curryRight",x],["flip",C],["partial",z],["partialRight",I],["rearg",B]],bd="[object Arguments]",ab="[object Array]",MU="[object AsyncFunction]",vd="[object Boolean]",gd="[object Date]",TU="[object DOMException]",tb="[object Error]",mb="[object Function]",rc="[object GeneratorFunction]",XV="[object Map]",fd="[object Number]",rU="[object Null]",LV="[object Object]",Jc="[object Promise]",JU="[object Proxy]",Cd="[object RegExp]",oV="[object Set]",Qd="[object String]",eb="[object Symbol]",kU="[object Undefined]",Dd="[object WeakMap]",xU="[object WeakSet]",Od="[object ArrayBuffer]",ad="[object DataView]",ct="[object Float32Array]",it="[object Float64Array]",Gt="[object Int8Array]",pt="[object Int16Array]",ht="[object Int32Array]",Rt="[object Uint8Array]",Yt="[object Uint8ClampedArray]",st="[object Uint16Array]",Xt="[object Uint32Array]",yU=/\b__p \+= '';/g,HU=/\b(__p \+=) '' \+/g,zU=/(__e\(.*?\)|\b__t\)) \+\n'';/g,kc=/&(?:amp|lt|gt|quot|#39);/g,xc=/[&<>"']/g,IU=RegExp(kc.source),EU=RegExp(xc.source),LU=/<%-([\s\S]+?)%>/g,wU=/<%([\s\S]+?)%>/g,yc=/<%=([\s\S]+?)%>/g,jU=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,BU=/^\w*$/,KU=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,ot=/[\\^$.*+?()[\]{}|]/g,vU=RegExp(ot.source),ut=/^\s+/,gU=/\s/,fU=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,CU=/\{\n\/\* \[wrapped with (.+)\] \*/,QU=/,? & /,DU=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,OU=/[()=,{}\[\]\/\s]/,PU=/\\(\\)?/g,AU=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,Hc=/\w*$/,_U=/^[-+]0x[0-9a-f]+$/i,qU=/^0b[01]+$/i,$U=/^\[object .+?Constructor\]$/,lS=/^0o[0-7]+$/i,VS=/^(?:0|[1-9]\d*)$/,WS=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,nb=/($^)/,dS=/['\n\r\u2028\u2029\\]/g,cb="\\ud800-\\udfff",ZS="\\u0300-\\u036f",bS="\\ufe20-\\ufe2f",aS="\\u20d0-\\u20ff",zc=ZS+bS+aS,Ic="\\u2700-\\u27bf",Ec="a-z\\xdf-\\xf6\\xf8-\\xff",tS="\\xac\\xb1\\xd7\\xf7",mS="\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf",eS="\\u2000-\\u206f",nS=" \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",Lc="A-Z\\xc0-\\xd6\\xd8-\\xde",wc="\\ufe0e\\ufe0f",jc=tS+mS+eS+nS,Nt="['’]",cS="["+cb+"]",Bc="["+jc+"]",ib="["+zc+"]",Kc="\\d+",iS="["+Ic+"]",vc="["+Ec+"]",gc="[^"+cb+jc+Kc+Ic+Ec+Lc+"]",Ft="\\ud83c[\\udffb-\\udfff]",GS="(?:"+ib+"|"+Ft+")",fc="[^"+cb+"]",Ut="(?:\\ud83c[\\udde6-\\uddff]){2}",St="[\\ud800-\\udbff][\\udc00-\\udfff]",td="["+Lc+"]",Cc="\\u200d",Qc="(?:"+vc+"|"+gc+")",pS="(?:"+td+"|"+gc+")",Dc="(?:"+Nt+"(?:d|ll|m|re|s|t|ve))?",Oc="(?:"+Nt+"(?:D|LL|M|RE|S|T|VE))?",Pc=GS+"?",Ac="["+wc+"]?",hS="(?:"+Cc+"(?:"+[fc,Ut,St].join("|")+")"+Ac+Pc+")*",RS="\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",YS="\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])",_c=Ac+Pc+hS,sS="(?:"+[iS,Ut,St].join("|")+")"+_c,XS="(?:"+[fc+ib+"?",ib,Ut,St,cS].join("|")+")",oS=RegExp(Nt,"g"),uS=RegExp(ib,"g"),Mt=RegExp(Ft+"(?="+Ft+")|"+XS+_c,"g"),NS=RegExp([td+"?"+vc+"+"+Dc+"(?="+[Bc,td,"$"].join("|")+")",pS+"+"+Oc+"(?="+[Bc,td+Qc,"$"].join("|")+")",td+"?"+Qc+"+"+Dc,td+"+"+Oc,YS,RS,Kc,sS].join("|"),"g"),FS=RegExp("["+Cc+cb+zc+wc+"]"),US=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,SS=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],MS=-1,sl={};sl[ct]=sl[it]=sl[Gt]=sl[pt]=sl[ht]=sl[Rt]=sl[Yt]=sl[st]=sl[Xt]=!0,sl[bd]=sl[ab]=sl[Od]=sl[vd]=sl[ad]=sl[gd]=sl[tb]=sl[mb]=sl[XV]=sl[fd]=sl[LV]=sl[Cd]=sl[oV]=sl[Qd]=sl[Dd]=!1;var Rl={};Rl[bd]=Rl[ab]=Rl[Od]=Rl[ad]=Rl[vd]=Rl[gd]=Rl[ct]=Rl[it]=Rl[Gt]=Rl[pt]=Rl[ht]=Rl[XV]=Rl[fd]=Rl[LV]=Rl[Cd]=Rl[oV]=Rl[Qd]=Rl[eb]=Rl[Rt]=Rl[Yt]=Rl[st]=Rl[Xt]=!0,Rl[tb]=Rl[mb]=Rl[Dd]=!1;var TS={À:"A",Á:"A",Â:"A",Ã:"A",Ä:"A",Å:"A",à:"a",á:"a",â:"a",ã:"a",ä:"a",å:"a",Ç:"C",ç:"c",Ð:"D",ð:"d",È:"E",É:"E",Ê:"E",Ë:"E",è:"e",é:"e",ê:"e",ë:"e",Ì:"I",Í:"I",Î:"I",Ï:"I",ì:"i",í:"i",î:"i",ï:"i",Ñ:"N",ñ:"n",Ò:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"O",Ø:"O",ò:"o",ó:"o",ô:"o",õ:"o",ö:"o",ø:"o",Ù:"U",Ú:"U",Û:"U",Ü:"U",ù:"u",ú:"u",û:"u",ü:"u",Ý:"Y",ý:"y",ÿ:"y",Æ:"Ae",æ:"ae",Þ:"Th",þ:"th",ß:"ss",Ā:"A",Ă:"A",Ą:"A",ā:"a",ă:"a",ą:"a",Ć:"C",Ĉ:"C",Ċ:"C",Č:"C",ć:"c",ĉ:"c",ċ:"c",č:"c",Ď:"D",Đ:"D",ď:"d",đ:"d",Ē:"E",Ĕ:"E",Ė:"E",Ę:"E",Ě:"E",ē:"e",ĕ:"e",ė:"e",ę:"e",ě:"e",Ĝ:"G",Ğ:"G",Ġ:"G",Ģ:"G",ĝ:"g",ğ:"g",ġ:"g",ģ:"g",Ĥ:"H",Ħ:"H",ĥ:"h",ħ:"h",Ĩ:"I",Ī:"I",Ĭ:"I",Į:"I",İ:"I",ĩ:"i",ī:"i",ĭ:"i",į:"i",ı:"i",Ĵ:"J",ĵ:"j",Ķ:"K",ķ:"k",ĸ:"k",Ĺ:"L",Ļ:"L",Ľ:"L",Ŀ:"L",Ł:"L",ĺ:"l",ļ:"l",ľ:"l",ŀ:"l",ł:"l",Ń:"N",Ņ:"N",Ň:"N",Ŋ:"N",ń:"n",ņ:"n",ň:"n",ŋ:"n",Ō:"O",Ŏ:"O",Ő:"O",ō:"o",ŏ:"o",ő:"o",Ŕ:"R",Ŗ:"R",Ř:"R",ŕ:"r",ŗ:"r",ř:"r",Ś:"S",Ŝ:"S",Ş:"S",Š:"S",ś:"s",ŝ:"s",ş:"s",š:"s",Ţ:"T",Ť:"T",Ŧ:"T",ţ:"t",ť:"t",ŧ:"t",Ũ:"U",Ū:"U",Ŭ:"U",Ů:"U",Ű:"U",Ų:"U",ũ:"u",ū:"u",ŭ:"u",ů:"u",ű:"u",ų:"u",Ŵ:"W",ŵ:"w",Ŷ:"Y",ŷ:"y",Ÿ:"Y",Ź:"Z",Ż:"Z",Ž:"Z",ź:"z",ż:"z",ž:"z",IJ:"IJ",ij:"ij",Œ:"Oe",œ:"oe",ʼn:"'n",ſ:"s"},rS={"&":"&","<":"<",">":">",'"':""","'":"'"},JS={"&":"&","<":"<",">":">",""":'"',"'":"'"},kS={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},xS=parseFloat,yS=parseInt,qc=typeof IV=="object"&&IV&&IV.Object===Object&&IV,HS=typeof self=="object"&&self&&self.Object===Object&&self,wl=qc||HS||Function("return this")(),Tt=W&&!W.nodeType&&W,rW=Tt&&!0&&l&&!l.nodeType&&l,$c=rW&&rW.exports===Tt,rt=$c&&qc.process,tV=function(){try{var F=rW&&rW.require&&rW.require("util").types;return F||rt&&rt.binding&&rt.binding("util")}catch{}}(),li=tV&&tV.isArrayBuffer,Vi=tV&&tV.isDate,Wi=tV&&tV.isMap,di=tV&&tV.isRegExp,Zi=tV&&tV.isSet,bi=tV&&tV.isTypedArray;function $l(F,T,S){switch(S.length){case 0:return F.call(T);case 1:return F.call(T,S[0]);case 2:return F.call(T,S[0],S[1]);case 3:return F.call(T,S[0],S[1],S[2])}return F.apply(T,S)}function zS(F,T,S,v){for(var P=-1,el=F==null?0:F.length;++P<el;){var Hl=F[P];T(v,Hl,S(Hl),F)}return v}function mV(F,T){for(var S=-1,v=F==null?0:F.length;++S<v&&T(F[S],S,F)!==!1;);return F}function IS(F,T){for(var S=F==null?0:F.length;S--&&T(F[S],S,F)!==!1;);return F}function ai(F,T){for(var S=-1,v=F==null?0:F.length;++S<v;)if(!T(F[S],S,F))return!1;return!0}function WW(F,T){for(var S=-1,v=F==null?0:F.length,P=0,el=[];++S<v;){var Hl=F[S];T(Hl,S,F)&&(el[P++]=Hl)}return el}function Gb(F,T){var S=F==null?0:F.length;return!!S&&md(F,T,0)>-1}function Jt(F,T,S){for(var v=-1,P=F==null?0:F.length;++v<P;)if(S(T,F[v]))return!0;return!1}function ol(F,T){for(var S=-1,v=F==null?0:F.length,P=Array(v);++S<v;)P[S]=T(F[S],S,F);return P}function dW(F,T){for(var S=-1,v=T.length,P=F.length;++S<v;)F[P+S]=T[S];return F}function kt(F,T,S,v){var P=-1,el=F==null?0:F.length;for(v&&el&&(S=F[++P]);++P<el;)S=T(S,F[P],P,F);return S}function ES(F,T,S,v){var P=F==null?0:F.length;for(v&&P&&(S=F[--P]);P--;)S=T(S,F[P],P,F);return S}function xt(F,T){for(var S=-1,v=F==null?0:F.length;++S<v;)if(T(F[S],S,F))return!0;return!1}var LS=yt("length");function wS(F){return F.split("")}function jS(F){return F.match(DU)||[]}function ti(F,T,S){var v;return S(F,function(P,el,Hl){if(T(P,el,Hl))return v=el,!1}),v}function pb(F,T,S,v){for(var P=F.length,el=S+(v?1:-1);v?el--:++el<P;)if(T(F[el],el,F))return el;return-1}function md(F,T,S){return T===T?_S(F,T,S):pb(F,mi,S)}function BS(F,T,S,v){for(var P=S-1,el=F.length;++P<el;)if(v(F[P],T))return P;return-1}function mi(F){return F!==F}function ei(F,T){var S=F==null?0:F.length;return S?zt(F,T)/S:bb}function yt(F){return function(T){return T==null?d:T[F]}}function Ht(F){return function(T){return F==null?d:F[T]}}function ni(F,T,S,v,P){return P(F,function(el,Hl,pl){S=v?(v=!1,el):T(S,el,Hl,pl)}),S}function KS(F,T){var S=F.length;for(F.sort(T);S--;)F[S]=F[S].value;return F}function zt(F,T){for(var S,v=-1,P=F.length;++v<P;){var el=T(F[v]);el!==d&&(S=S===d?el:S+el)}return S}function It(F,T){for(var S=-1,v=Array(F);++S<F;)v[S]=T(S);return v}function vS(F,T){return ol(T,function(S){return[S,F[S]]})}function ci(F){return F&&F.slice(0,hi(F)+1).replace(ut,"")}function lV(F){return function(T){return F(T)}}function Et(F,T){return ol(T,function(S){return F[S]})}function Pd(F,T){return F.has(T)}function ii(F,T){for(var S=-1,v=F.length;++S<v&&md(T,F[S],0)>-1;);return S}function Gi(F,T){for(var S=F.length;S--&&md(T,F[S],0)>-1;);return S}function gS(F,T){for(var S=F.length,v=0;S--;)F[S]===T&&++v;return v}var fS=Ht(TS),CS=Ht(rS);function QS(F){return"\\"+kS[F]}function DS(F,T){return F==null?d:F[T]}function ed(F){return FS.test(F)}function OS(F){return US.test(F)}function PS(F){for(var T,S=[];!(T=F.next()).done;)S.push(T.value);return S}function Lt(F){var T=-1,S=Array(F.size);return F.forEach(function(v,P){S[++T]=[P,v]}),S}function pi(F,T){return function(S){return F(T(S))}}function ZW(F,T){for(var S=-1,v=F.length,P=0,el=[];++S<v;){var Hl=F[S];(Hl===T||Hl===p)&&(F[S]=p,el[P++]=S)}return el}function hb(F){var T=-1,S=Array(F.size);return F.forEach(function(v){S[++T]=v}),S}function AS(F){var T=-1,S=Array(F.size);return F.forEach(function(v){S[++T]=[v,v]}),S}function _S(F,T,S){for(var v=S-1,P=F.length;++v<P;)if(F[v]===T)return v;return-1}function qS(F,T,S){for(var v=S+1;v--;)if(F[v]===T)return v;return v}function nd(F){return ed(F)?lM(F):LS(F)}function uV(F){return ed(F)?VM(F):wS(F)}function hi(F){for(var T=F.length;T--&&gU.test(F.charAt(T)););return T}var $S=Ht(JS);function lM(F){for(var T=Mt.lastIndex=0;Mt.test(F);)++T;return T}function VM(F){return F.match(Mt)||[]}function WM(F){return F.match(NS)||[]}var dM=function F(T){T=T==null?wl:cd.defaults(wl.Object(),T,cd.pick(wl,SS));var S=T.Array,v=T.Date,P=T.Error,el=T.Function,Hl=T.Math,pl=T.Object,wt=T.RegExp,ZM=T.String,eV=T.TypeError,Rb=S.prototype,bM=el.prototype,id=pl.prototype,Yb=T["__core-js_shared__"],sb=bM.toString,Gl=id.hasOwnProperty,aM=0,Ri=function(){var V=/[^.]+$/.exec(Yb&&Yb.keys&&Yb.keys.IE_PROTO||"");return V?"Symbol(src)_1."+V:""}(),Xb=id.toString,tM=sb.call(pl),mM=wl._,eM=wt("^"+sb.call(Gl).replace(ot,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),ob=$c?T.Buffer:d,bW=T.Symbol,ub=T.Uint8Array,Yi=ob?ob.allocUnsafe:d,Nb=pi(pl.getPrototypeOf,pl),si=pl.create,Xi=id.propertyIsEnumerable,Fb=Rb.splice,oi=bW?bW.isConcatSpreadable:d,Ad=bW?bW.iterator:d,JW=bW?bW.toStringTag:d,Ub=function(){try{var V=zW(pl,"defineProperty");return V({},"",{}),V}catch{}}(),nM=T.clearTimeout!==wl.clearTimeout&&T.clearTimeout,cM=v&&v.now!==wl.Date.now&&v.now,iM=T.setTimeout!==wl.setTimeout&&T.setTimeout,Sb=Hl.ceil,Mb=Hl.floor,jt=pl.getOwnPropertySymbols,GM=ob?ob.isBuffer:d,ui=T.isFinite,pM=Rb.join,hM=pi(pl.keys,pl),zl=Hl.max,Kl=Hl.min,RM=v.now,YM=T.parseInt,Ni=Hl.random,sM=Rb.reverse,Bt=zW(T,"DataView"),_d=zW(T,"Map"),Kt=zW(T,"Promise"),Gd=zW(T,"Set"),qd=zW(T,"WeakMap"),$d=zW(pl,"create"),Tb=qd&&new qd,pd={},XM=IW(Bt),oM=IW(_d),uM=IW(Kt),NM=IW(Gd),FM=IW(qd),rb=bW?bW.prototype:d,lZ=rb?rb.valueOf:d,Fi=rb?rb.toString:d;function R(V){if(Sl(V)&&!_(V)&&!(V instanceof bl)){if(V instanceof nV)return V;if(Gl.call(V,"__wrapped__"))return UG(V)}return new nV(V)}var hd=function(){function V(){}return function(Z){if(!Nl(Z))return{};if(si)return si(Z);V.prototype=Z;var a=new V;return V.prototype=d,a}}();function Jb(){}function nV(V,Z){this.__wrapped__=V,this.__actions__=[],this.__chain__=!!Z,this.__index__=0,this.__values__=d}R.templateSettings={escape:LU,evaluate:wU,interpolate:yc,variable:"",imports:{_:R}},R.prototype=Jb.prototype,R.prototype.constructor=R,nV.prototype=hd(Jb.prototype),nV.prototype.constructor=nV;function bl(V){this.__wrapped__=V,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=TV,this.__views__=[]}function UM(){var V=new bl(this.__wrapped__);return V.__actions__=Ol(this.__actions__),V.__dir__=this.__dir__,V.__filtered__=this.__filtered__,V.__iteratees__=Ol(this.__iteratees__),V.__takeCount__=this.__takeCount__,V.__views__=Ol(this.__views__),V}function SM(){if(this.__filtered__){var V=new bl(this);V.__dir__=-1,V.__filtered__=!0}else V=this.clone(),V.__dir__*=-1;return V}function MM(){var V=this.__wrapped__.value(),Z=this.__dir__,a=_(V),m=Z<0,c=a?V.length:0,Y=wT(0,c,this.__views__),u=Y.start,N=Y.end,U=N-u,y=m?N:u-1,H=this.__iteratees__,E=H.length,j=0,g=Kl(U,this.__takeCount__);if(!a||!m&&c==U&&g==U)return Di(V,this.__actions__);var Q=[];l:for(;U--&&j<g;){y+=Z;for(var ll=-1,D=V[y];++ll<E;){var Zl=H[ll],tl=Zl.iteratee,dV=Zl.type,Ql=tl(D);if(dV==Ul)D=Ql;else if(!Ql){if(dV==ul)continue l;break l}}Q[j++]=D}return Q}bl.prototype=hd(Jb.prototype),bl.prototype.constructor=bl;function kW(V){var Z=-1,a=V==null?0:V.length;for(this.clear();++Z<a;){var m=V[Z];this.set(m[0],m[1])}}function TM(){this.__data__=$d?$d(null):{},this.size=0}function rM(V){var Z=this.has(V)&&delete this.__data__[V];return this.size-=Z?1:0,Z}function JM(V){var Z=this.__data__;if($d){var a=Z[V];return a===h?d:a}return Gl.call(Z,V)?Z[V]:d}function kM(V){var Z=this.__data__;return $d?Z[V]!==d:Gl.call(Z,V)}function xM(V,Z){var a=this.__data__;return this.size+=this.has(V)?0:1,a[V]=$d&&Z===d?h:Z,this}kW.prototype.clear=TM,kW.prototype.delete=rM,kW.prototype.get=JM,kW.prototype.has=kM,kW.prototype.set=xM;function wV(V){var Z=-1,a=V==null?0:V.length;for(this.clear();++Z<a;){var m=V[Z];this.set(m[0],m[1])}}function yM(){this.__data__=[],this.size=0}function HM(V){var Z=this.__data__,a=kb(Z,V);if(a<0)return!1;var m=Z.length-1;return a==m?Z.pop():Fb.call(Z,a,1),--this.size,!0}function zM(V){var Z=this.__data__,a=kb(Z,V);return a<0?d:Z[a][1]}function IM(V){return kb(this.__data__,V)>-1}function EM(V,Z){var a=this.__data__,m=kb(a,V);return m<0?(++this.size,a.push([V,Z])):a[m][1]=Z,this}wV.prototype.clear=yM,wV.prototype.delete=HM,wV.prototype.get=zM,wV.prototype.has=IM,wV.prototype.set=EM;function jV(V){var Z=-1,a=V==null?0:V.length;for(this.clear();++Z<a;){var m=V[Z];this.set(m[0],m[1])}}function LM(){this.size=0,this.__data__={hash:new kW,map:new(_d||wV),string:new kW}}function wM(V){var Z=vb(this,V).delete(V);return this.size-=Z?1:0,Z}function jM(V){return vb(this,V).get(V)}function BM(V){return vb(this,V).has(V)}function KM(V,Z){var a=vb(this,V),m=a.size;return a.set(V,Z),this.size+=a.size==m?0:1,this}jV.prototype.clear=LM,jV.prototype.delete=wM,jV.prototype.get=jM,jV.prototype.has=BM,jV.prototype.set=KM;function xW(V){var Z=-1,a=V==null?0:V.length;for(this.__data__=new jV;++Z<a;)this.add(V[Z])}function vM(V){return this.__data__.set(V,h),this}function gM(V){return this.__data__.has(V)}xW.prototype.add=xW.prototype.push=vM,xW.prototype.has=gM;function NV(V){var Z=this.__data__=new wV(V);this.size=Z.size}function fM(){this.__data__=new wV,this.size=0}function CM(V){var Z=this.__data__,a=Z.delete(V);return this.size=Z.size,a}function QM(V){return this.__data__.get(V)}function DM(V){return this.__data__.has(V)}function OM(V,Z){var a=this.__data__;if(a instanceof wV){var m=a.__data__;if(!_d||m.length<t-1)return m.push([V,Z]),this.size=++a.size,this;a=this.__data__=new jV(m)}return a.set(V,Z),this.size=a.size,this}NV.prototype.clear=fM,NV.prototype.delete=CM,NV.prototype.get=QM,NV.prototype.has=DM,NV.prototype.set=OM;function Ui(V,Z){var a=_(V),m=!a&&EW(V),c=!a&&!m&&nW(V),Y=!a&&!m&&!c&&Xd(V),u=a||m||c||Y,N=u?It(V.length,ZM):[],U=N.length;for(var y in V)(Z||Gl.call(V,y))&&!(u&&(y=="length"||c&&(y=="offset"||y=="parent")||Y&&(y=="buffer"||y=="byteLength"||y=="byteOffset")||gV(y,U)))&&N.push(y);return N}function Si(V){var Z=V.length;return Z?V[qt(0,Z-1)]:d}function PM(V,Z){return gb(Ol(V),yW(Z,0,V.length))}function AM(V){return gb(Ol(V))}function vt(V,Z,a){(a!==d&&!FV(V[Z],a)||a===d&&!(Z in V))&&BV(V,Z,a)}function VZ(V,Z,a){var m=V[Z];(!(Gl.call(V,Z)&&FV(m,a))||a===d&&!(Z in V))&&BV(V,Z,a)}function kb(V,Z){for(var a=V.length;a--;)if(FV(V[a][0],Z))return a;return-1}function _M(V,Z,a,m){return aW(V,function(c,Y,u){Z(m,c,a(c),u)}),m}function Mi(V,Z){return V&&JV(Z,El(Z),V)}function qM(V,Z){return V&&JV(Z,Al(Z),V)}function BV(V,Z,a){Z=="__proto__"&&Ub?Ub(V,Z,{configurable:!0,enumerable:!0,value:a,writable:!0}):V[Z]=a}function gt(V,Z){for(var a=-1,m=Z.length,c=S(m),Y=V==null;++a<m;)c[a]=Y?d:Fm(V,Z[a]);return c}function yW(V,Z,a){return V===V&&(a!==d&&(V=V<=a?V:a),Z!==d&&(V=V>=Z?V:Z)),V}function cV(V,Z,a,m,c,Y){var u,N=Z&s,U=Z&X,y=Z&o;if(a&&(u=c?a(V,m,c,Y):a(V)),u!==d)return u;if(!Nl(V))return V;var H=_(V);if(H){if(u=BT(V),!N)return Ol(V,u)}else{var E=vl(V),j=E==mb||E==rc;if(nW(V))return Ai(V,N);if(E==LV||E==bd||j&&!c){if(u=U||j?{}:hG(V),!N)return U?JT(V,qM(u,V)):rT(V,Mi(u,V))}else{if(!Rl[E])return c?V:{};u=KT(V,E,N)}}Y||(Y=new NV);var g=Y.get(V);if(g)return g;Y.set(V,u),fG(V)?V.forEach(function(D){u.add(cV(D,Z,a,D,V,Y))}):vG(V)&&V.forEach(function(D,Zl){u.set(Zl,cV(D,Z,a,Zl,V,Y))});var Q=y?U?em:mm:U?Al:El,ll=H?d:Q(V);return mV(ll||V,function(D,Zl){ll&&(Zl=D,D=V[Zl]),VZ(u,Zl,cV(D,Z,a,Zl,V,Y))}),u}function $M(V){var Z=El(V);return function(a){return Ti(a,V,Z)}}function Ti(V,Z,a){var m=a.length;if(V==null)return!m;for(V=pl(V);m--;){var c=a[m],Y=Z[c],u=V[c];if(u===d&&!(c in V)||!Y(u))return!1}return!0}function ri(V,Z,a){if(typeof V!="function")throw new eV(n);return mZ(function(){V.apply(d,a)},Z)}function WZ(V,Z,a,m){var c=-1,Y=Gb,u=!0,N=V.length,U=[],y=Z.length;if(!N)return U;a&&(Z=ol(Z,lV(a))),m?(Y=Jt,u=!1):Z.length>=t&&(Y=Pd,u=!1,Z=new xW(Z));l:for(;++c<N;){var H=V[c],E=a==null?H:a(H);if(H=m||H!==0?H:0,u&&E===E){for(var j=y;j--;)if(Z[j]===E)continue l;U.push(H)}else Y(Z,E,m)||U.push(H)}return U}var aW=VG(rV),Ji=VG(Ct,!0);function lT(V,Z){var a=!0;return aW(V,function(m,c,Y){return a=!!Z(m,c,Y),a}),a}function xb(V,Z,a){for(var m=-1,c=V.length;++m<c;){var Y=V[m],u=Z(Y);if(u!=null&&(N===d?u===u&&!WV(u):a(u,N)))var N=u,U=Y}return U}function VT(V,Z,a,m){var c=V.length;for(a=$(a),a<0&&(a=-a>c?0:c+a),m=m===d||m>c?c:$(m),m<0&&(m+=c),m=a>m?0:QG(m);a<m;)V[a++]=Z;return V}function ki(V,Z){var a=[];return aW(V,function(m,c,Y){Z(m,c,Y)&&a.push(m)}),a}function jl(V,Z,a,m,c){var Y=-1,u=V.length;for(a||(a=gT),c||(c=[]);++Y<u;){var N=V[Y];Z>0&&a(N)?Z>1?jl(N,Z-1,a,m,c):dW(c,N):m||(c[c.length]=N)}return c}var ft=WG(),xi=WG(!0);function rV(V,Z){return V&&ft(V,Z,El)}function Ct(V,Z){return V&&xi(V,Z,El)}function yb(V,Z){return WW(Z,function(a){return fV(V[a])})}function HW(V,Z){Z=mW(Z,V);for(var a=0,m=Z.length;V!=null&&a<m;)V=V[kV(Z[a++])];return a&&a==m?V:d}function yi(V,Z,a){var m=Z(V);return _(V)?m:dW(m,a(V))}function fl(V){return V==null?V===d?kU:rU:JW&&JW in pl(V)?LT(V):AT(V)}function Qt(V,Z){return V>Z}function WT(V,Z){return V!=null&&Gl.call(V,Z)}function dT(V,Z){return V!=null&&Z in pl(V)}function ZT(V,Z,a){return V>=Kl(Z,a)&&V<zl(Z,a)}function Dt(V,Z,a){for(var m=a?Jt:Gb,c=V[0].length,Y=V.length,u=Y,N=S(Y),U=1/0,y=[];u--;){var H=V[u];u&&Z&&(H=ol(H,lV(Z))),U=Kl(H.length,U),N[u]=!a&&(Z||c>=120&&H.length>=120)?new xW(u&&H):d}H=V[0];var E=-1,j=N[0];l:for(;++E<c&&y.length<U;){var g=H[E],Q=Z?Z(g):g;if(g=a||g!==0?g:0,!(j?Pd(j,Q):m(y,Q,a))){for(u=Y;--u;){var ll=N[u];if(!(ll?Pd(ll,Q):m(V[u],Q,a)))continue l}j&&j.push(Q),y.push(g)}}return y}function bT(V,Z,a,m){return rV(V,function(c,Y,u){Z(m,a(c),Y,u)}),m}function dZ(V,Z,a){Z=mW(Z,V),V=XG(V,Z);var m=V==null?V:V[kV(GV(Z))];return m==null?d:$l(m,V,a)}function Hi(V){return Sl(V)&&fl(V)==bd}function aT(V){return Sl(V)&&fl(V)==Od}function tT(V){return Sl(V)&&fl(V)==gd}function ZZ(V,Z,a,m,c){return V===Z?!0:V==null||Z==null||!Sl(V)&&!Sl(Z)?V!==V&&Z!==Z:mT(V,Z,a,m,ZZ,c)}function mT(V,Z,a,m,c,Y){var u=_(V),N=_(Z),U=u?ab:vl(V),y=N?ab:vl(Z);U=U==bd?LV:U,y=y==bd?LV:y;var H=U==LV,E=y==LV,j=U==y;if(j&&nW(V)){if(!nW(Z))return!1;u=!0,H=!1}if(j&&!H)return Y||(Y=new NV),u||Xd(V)?iG(V,Z,a,m,c,Y):IT(V,Z,U,a,m,c,Y);if(!(a&r)){var g=H&&Gl.call(V,"__wrapped__"),Q=E&&Gl.call(Z,"__wrapped__");if(g||Q){var ll=g?V.value():V,D=Q?Z.value():Z;return Y||(Y=new NV),c(ll,D,a,m,Y)}}return j?(Y||(Y=new NV),ET(V,Z,a,m,c,Y)):!1}function eT(V){return Sl(V)&&vl(V)==XV}function Ot(V,Z,a,m){var c=a.length,Y=c,u=!m;if(V==null)return!Y;for(V=pl(V);c--;){var N=a[c];if(u&&N[2]?N[1]!==V[N[0]]:!(N[0]in V))return!1}for(;++c<Y;){N=a[c];var U=N[0],y=V[U],H=N[1];if(u&&N[2]){if(y===d&&!(U in V))return!1}else{var E=new NV;if(m)var j=m(y,H,U,V,Z,E);if(!(j===d?ZZ(H,y,r|M,m,E):j))return!1}}return!0}function zi(V){if(!Nl(V)||CT(V))return!1;var Z=fV(V)?eM:$U;return Z.test(IW(V))}function nT(V){return Sl(V)&&fl(V)==Cd}function cT(V){return Sl(V)&&vl(V)==oV}function iT(V){return Sl(V)&&Pb(V.length)&&!!sl[fl(V)]}function Ii(V){return typeof V=="function"?V:V==null?_l:typeof V=="object"?_(V)?wi(V[0],V[1]):Li(V):dp(V)}function Pt(V){if(!tZ(V))return hM(V);var Z=[];for(var a in pl(V))Gl.call(V,a)&&a!="constructor"&&Z.push(a);return Z}function GT(V){if(!Nl(V))return PT(V);var Z=tZ(V),a=[];for(var m in V)m=="constructor"&&(Z||!Gl.call(V,m))||a.push(m);return a}function At(V,Z){return V<Z}function Ei(V,Z){var a=-1,m=Pl(V)?S(V.length):[];return aW(V,function(c,Y,u){m[++a]=Z(c,Y,u)}),m}function Li(V){var Z=cm(V);return Z.length==1&&Z[0][2]?YG(Z[0][0],Z[0][1]):function(a){return a===V||Ot(a,V,Z)}}function wi(V,Z){return Gm(V)&&RG(Z)?YG(kV(V),Z):function(a){var m=Fm(a,V);return m===d&&m===Z?Um(a,V):ZZ(Z,m,r|M)}}function Hb(V,Z,a,m,c){V!==Z&&ft(Z,function(Y,u){if(c||(c=new NV),Nl(Y))pT(V,Z,u,a,Hb,m,c);else{var N=m?m(hm(V,u),Y,u+"",V,Z,c):d;N===d&&(N=Y),vt(V,u,N)}},Al)}function pT(V,Z,a,m,c,Y,u){var N=hm(V,a),U=hm(Z,a),y=u.get(U);if(y){vt(V,a,y);return}var H=Y?Y(N,U,a+"",V,Z,u):d,E=H===d;if(E){var j=_(U),g=!j&&nW(U),Q=!j&&!g&&Xd(U);H=U,j||g||Q?_(N)?H=N:Tl(N)?H=Ol(N):g?(E=!1,H=Ai(U,!0)):Q?(E=!1,H=_i(U,!0)):H=[]:eZ(U)||EW(U)?(H=N,EW(N)?H=DG(N):(!Nl(N)||fV(N))&&(H=hG(U))):E=!1}E&&(u.set(U,H),c(H,U,m,Y,u),u.delete(U)),vt(V,a,H)}function ji(V,Z){var a=V.length;if(a)return Z+=Z<0?a:0,gV(Z,a)?V[Z]:d}function Bi(V,Z,a){Z.length?Z=ol(Z,function(Y){return _(Y)?function(u){return HW(u,Y.length===1?Y[0]:Y)}:Y}):Z=[_l];var m=-1;Z=ol(Z,lV(f()));var c=Ei(V,function(Y,u,N){var U=ol(Z,function(y){return y(Y)});return{criteria:U,index:++m,value:Y}});return KS(c,function(Y,u){return TT(Y,u,a)})}function hT(V,Z){return Ki(V,Z,function(a,m){return Um(V,m)})}function Ki(V,Z,a){for(var m=-1,c=Z.length,Y={};++m<c;){var u=Z[m],N=HW(V,u);a(N,u)&&bZ(Y,mW(u,V),N)}return Y}function RT(V){return function(Z){return HW(Z,V)}}function _t(V,Z,a,m){var c=m?BS:md,Y=-1,u=Z.length,N=V;for(V===Z&&(Z=Ol(Z)),a&&(N=ol(V,lV(a)));++Y<u;)for(var U=0,y=Z[Y],H=a?a(y):y;(U=c(N,H,U,m))>-1;)N!==V&&Fb.call(N,U,1),Fb.call(V,U,1);return V}function vi(V,Z){for(var a=V?Z.length:0,m=a-1;a--;){var c=Z[a];if(a==m||c!==Y){var Y=c;gV(c)?Fb.call(V,c,1):Vm(V,c)}}return V}function qt(V,Z){return V+Mb(Ni()*(Z-V+1))}function YT(V,Z,a,m){for(var c=-1,Y=zl(Sb((Z-V)/(a||1)),0),u=S(Y);Y--;)u[m?Y:++c]=V,V+=a;return u}function $t(V,Z){var a="";if(!V||Z<1||Z>VW)return a;do Z%2&&(a+=V),Z=Mb(Z/2),Z&&(V+=V);while(Z);return a}function Wl(V,Z){return Rm(sG(V,Z,_l),V+"")}function sT(V){return Si(od(V))}function XT(V,Z){var a=od(V);return gb(a,yW(Z,0,a.length))}function bZ(V,Z,a,m){if(!Nl(V))return V;Z=mW(Z,V);for(var c=-1,Y=Z.length,u=Y-1,N=V;N!=null&&++c<Y;){var U=kV(Z[c]),y=a;if(U==="__proto__"||U==="constructor"||U==="prototype")return V;if(c!=u){var H=N[U];y=m?m(H,U,N):d,y===d&&(y=Nl(H)?H:gV(Z[c+1])?[]:{})}VZ(N,U,y),N=N[U]}return V}var gi=Tb?function(V,Z){return Tb.set(V,Z),V}:_l,oT=Ub?function(V,Z){return Ub(V,"toString",{configurable:!0,enumerable:!1,value:Mm(Z),writable:!0})}:_l;function uT(V){return gb(od(V))}function iV(V,Z,a){var m=-1,c=V.length;Z<0&&(Z=-Z>c?0:c+Z),a=a>c?c:a,a<0&&(a+=c),c=Z>a?0:a-Z>>>0,Z>>>=0;for(var Y=S(c);++m<c;)Y[m]=V[m+Z];return Y}function NT(V,Z){var a;return aW(V,function(m,c,Y){return a=Z(m,c,Y),!a}),!!a}function zb(V,Z,a){var m=0,c=V==null?m:V.length;if(typeof Z=="number"&&Z===Z&&c<=UU){for(;m<c;){var Y=m+c>>>1,u=V[Y];u!==null&&!WV(u)&&(a?u<=Z:u<Z)?m=Y+1:c=Y}return c}return lm(V,Z,_l,a)}function lm(V,Z,a,m){var c=0,Y=V==null?0:V.length;if(Y===0)return 0;Z=a(Z);for(var u=Z!==Z,N=Z===null,U=WV(Z),y=Z===d;c<Y;){var H=Mb((c+Y)/2),E=a(V[H]),j=E!==d,g=E===null,Q=E===E,ll=WV(E);if(u)var D=m||Q;else y?D=Q&&(m||j):N?D=Q&&j&&(m||!g):U?D=Q&&j&&!g&&(m||!ll):g||ll?D=!1:D=m?E<=Z:E<Z;D?c=H+1:Y=H}return Kl(Y,FU)}function fi(V,Z){for(var a=-1,m=V.length,c=0,Y=[];++a<m;){var u=V[a],N=Z?Z(u):u;if(!a||!FV(N,U)){var U=N;Y[c++]=u===0?0:u}}return Y}function Ci(V){return typeof V=="number"?V:WV(V)?bb:+V}function VV(V){if(typeof V=="string")return V;if(_(V))return ol(V,VV)+"";if(WV(V))return Fi?Fi.call(V):"";var Z=V+"";return Z=="0"&&1/V==-gl?"-0":Z}function tW(V,Z,a){var m=-1,c=Gb,Y=V.length,u=!0,N=[],U=N;if(a)u=!1,c=Jt;else if(Y>=t){var y=Z?null:HT(V);if(y)return hb(y);u=!1,c=Pd,U=new xW}else U=Z?[]:N;l:for(;++m<Y;){var H=V[m],E=Z?Z(H):H;if(H=a||H!==0?H:0,u&&E===E){for(var j=U.length;j--;)if(U[j]===E)continue l;Z&&U.push(E),N.push(H)}else c(U,E,a)||(U!==N&&U.push(E),N.push(H))}return N}function Vm(V,Z){return Z=mW(Z,V),V=XG(V,Z),V==null||delete V[kV(GV(Z))]}function Qi(V,Z,a,m){return bZ(V,Z,a(HW(V,Z)),m)}function Ib(V,Z,a,m){for(var c=V.length,Y=m?c:-1;(m?Y--:++Y<c)&&Z(V[Y],Y,V););return a?iV(V,m?0:Y,m?Y+1:c):iV(V,m?Y+1:0,m?c:Y)}function Di(V,Z){var a=V;return a instanceof bl&&(a=a.value()),kt(Z,function(m,c){return c.func.apply(c.thisArg,dW([m],c.args))},a)}function Wm(V,Z,a){var m=V.length;if(m<2)return m?tW(V[0]):[];for(var c=-1,Y=S(m);++c<m;)for(var u=V[c],N=-1;++N<m;)N!=c&&(Y[c]=WZ(Y[c]||u,V[N],Z,a));return tW(jl(Y,1),Z,a)}function Oi(V,Z,a){for(var m=-1,c=V.length,Y=Z.length,u={};++m<c;){var N=m<Y?Z[m]:d;a(u,V[m],N)}return u}function dm(V){return Tl(V)?V:[]}function Zm(V){return typeof V=="function"?V:_l}function mW(V,Z){return _(V)?V:Gm(V,Z)?[V]:FG(nl(V))}var FT=Wl;function eW(V,Z,a){var m=V.length;return a=a===d?m:a,!Z&&a>=m?V:iV(V,Z,a)}var Pi=nM||function(V){return wl.clearTimeout(V)};function Ai(V,Z){if(Z)return V.slice();var a=V.length,m=Yi?Yi(a):new V.constructor(a);return V.copy(m),m}function bm(V){var Z=new V.constructor(V.byteLength);return new ub(Z).set(new ub(V)),Z}function UT(V,Z){var a=Z?bm(V.buffer):V.buffer;return new V.constructor(a,V.byteOffset,V.byteLength)}function ST(V){var Z=new V.constructor(V.source,Hc.exec(V));return Z.lastIndex=V.lastIndex,Z}function MT(V){return lZ?pl(lZ.call(V)):{}}function _i(V,Z){var a=Z?bm(V.buffer):V.buffer;return new V.constructor(a,V.byteOffset,V.length)}function qi(V,Z){if(V!==Z){var a=V!==d,m=V===null,c=V===V,Y=WV(V),u=Z!==d,N=Z===null,U=Z===Z,y=WV(Z);if(!N&&!y&&!Y&&V>Z||Y&&u&&U&&!N&&!y||m&&u&&U||!a&&U||!c)return 1;if(!m&&!Y&&!y&&V<Z||y&&a&&c&&!m&&!Y||N&&a&&c||!u&&c||!U)return-1}return 0}function TT(V,Z,a){for(var m=-1,c=V.criteria,Y=Z.criteria,u=c.length,N=a.length;++m<u;){var U=qi(c[m],Y[m]);if(U){if(m>=N)return U;var y=a[m];return U*(y=="desc"?-1:1)}}return V.index-Z.index}function $i(V,Z,a,m){for(var c=-1,Y=V.length,u=a.length,N=-1,U=Z.length,y=zl(Y-u,0),H=S(U+y),E=!m;++N<U;)H[N]=Z[N];for(;++c<u;)(E||c<Y)&&(H[a[c]]=V[c]);for(;y--;)H[N++]=V[c++];return H}function lG(V,Z,a,m){for(var c=-1,Y=V.length,u=-1,N=a.length,U=-1,y=Z.length,H=zl(Y-N,0),E=S(H+y),j=!m;++c<H;)E[c]=V[c];for(var g=c;++U<y;)E[g+U]=Z[U];for(;++u<N;)(j||c<Y)&&(E[g+a[u]]=V[c++]);return E}function Ol(V,Z){var a=-1,m=V.length;for(Z||(Z=S(m));++a<m;)Z[a]=V[a];return Z}function JV(V,Z,a,m){var c=!a;a||(a={});for(var Y=-1,u=Z.length;++Y<u;){var N=Z[Y],U=m?m(a[N],V[N],N,a,V):d;U===d&&(U=V[N]),c?BV(a,N,U):VZ(a,N,U)}return a}function rT(V,Z){return JV(V,im(V),Z)}function JT(V,Z){return JV(V,GG(V),Z)}function Eb(V,Z){return function(a,m){var c=_(a)?zS:_M,Y=Z?Z():{};return c(a,V,f(m,2),Y)}}function Rd(V){return Wl(function(Z,a){var m=-1,c=a.length,Y=c>1?a[c-1]:d,u=c>2?a[2]:d;for(Y=V.length>3&&typeof Y=="function"?(c--,Y):d,u&&Cl(a[0],a[1],u)&&(Y=c<3?d:Y,c=1),Z=pl(Z);++m<c;){var N=a[m];N&&V(Z,N,m,Y)}return Z})}function VG(V,Z){return function(a,m){if(a==null)return a;if(!Pl(a))return V(a,m);for(var c=a.length,Y=Z?c:-1,u=pl(a);(Z?Y--:++Y<c)&&m(u[Y],Y,u)!==!1;);return a}}function WG(V){return function(Z,a,m){for(var c=-1,Y=pl(Z),u=m(Z),N=u.length;N--;){var U=u[V?N:++c];if(a(Y[U],U,Y)===!1)break}return Z}}function kT(V,Z,a){var m=Z&L,c=aZ(V);function Y(){var u=this&&this!==wl&&this instanceof Y?c:V;return u.apply(m?a:this,arguments)}return Y}function dG(V){return function(Z){Z=nl(Z);var a=ed(Z)?uV(Z):d,m=a?a[0]:Z.charAt(0),c=a?eW(a,1).join(""):Z.slice(1);return m[V]()+c}}function Yd(V){return function(Z){return kt(Vp(lp(Z).replace(oS,"")),V,"")}}function aZ(V){return function(){var Z=arguments;switch(Z.length){case 0:return new V;case 1:return new V(Z[0]);case 2:return new V(Z[0],Z[1]);case 3:return new V(Z[0],Z[1],Z[2]);case 4:return new V(Z[0],Z[1],Z[2],Z[3]);case 5:return new V(Z[0],Z[1],Z[2],Z[3],Z[4]);case 6:return new V(Z[0],Z[1],Z[2],Z[3],Z[4],Z[5]);case 7:return new V(Z[0],Z[1],Z[2],Z[3],Z[4],Z[5],Z[6])}var a=hd(V.prototype),m=V.apply(a,Z);return Nl(m)?m:a}}function xT(V,Z,a){var m=aZ(V);function c(){for(var Y=arguments.length,u=S(Y),N=Y,U=sd(c);N--;)u[N]=arguments[N];var y=Y<3&&u[0]!==U&&u[Y-1]!==U?[]:ZW(u,U);if(Y-=y.length,Y<a)return mG(V,Z,Lb,c.placeholder,d,u,y,d,d,a-Y);var H=this&&this!==wl&&this instanceof c?m:V;return $l(H,this,u)}return c}function ZG(V){return function(Z,a,m){var c=pl(Z);if(!Pl(Z)){var Y=f(a,3);Z=El(Z),a=function(N){return Y(c[N],N,c)}}var u=V(Z,a,m);return u>-1?c[Y?Z[u]:u]:d}}function bG(V){return vV(function(Z){var a=Z.length,m=a,c=nV.prototype.thru;for(V&&Z.reverse();m--;){var Y=Z[m];if(typeof Y!="function")throw new eV(n);if(c&&!u&&Kb(Y)=="wrapper")var u=new nV([],!0)}for(m=u?m:a;++m<a;){Y=Z[m];var N=Kb(Y),U=N=="wrapper"?nm(Y):d;U&&pm(U[0])&&U[1]==(k|K|z|B)&&!U[4].length&&U[9]==1?u=u[Kb(U[0])].apply(u,U[3]):u=Y.length==1&&pm(Y)?u[N]():u.thru(Y)}return function(){var y=arguments,H=y[0];if(u&&y.length==1&&_(H))return u.plant(H).value();for(var E=0,j=a?Z[E].apply(this,y):H;++E<a;)j=Z[E].call(this,j);return j}})}function Lb(V,Z,a,m,c,Y,u,N,U,y){var H=Z&k,E=Z&L,j=Z&J,g=Z&(K|x),Q=Z&C,ll=j?d:aZ(V);function D(){for(var Zl=arguments.length,tl=S(Zl),dV=Zl;dV--;)tl[dV]=arguments[dV];if(g)var Ql=sd(D),ZV=gS(tl,Ql);if(m&&(tl=$i(tl,m,c,g)),Y&&(tl=lG(tl,Y,u,g)),Zl-=ZV,g&&Zl<y){var rl=ZW(tl,Ql);return mG(V,Z,Lb,D.placeholder,a,tl,rl,N,U,y-Zl)}var UV=E?a:this,QV=j?UV[V]:V;return Zl=tl.length,N?tl=_T(tl,N):Q&&Zl>1&&tl.reverse(),H&&U<Zl&&(tl.length=U),this&&this!==wl&&this instanceof D&&(QV=ll||aZ(QV)),QV.apply(UV,tl)}return D}function aG(V,Z){return function(a,m){return bT(a,V,Z(m),{})}}function wb(V,Z){return function(a,m){var c;if(a===d&&m===d)return Z;if(a!==d&&(c=a),m!==d){if(c===d)return m;typeof a=="string"||typeof m=="string"?(a=VV(a),m=VV(m)):(a=Ci(a),m=Ci(m)),c=V(a,m)}return c}}function am(V){return vV(function(Z){return Z=ol(Z,lV(f())),Wl(function(a){var m=this;return V(Z,function(c){return $l(c,m,a)})})})}function jb(V,Z){Z=Z===d?" ":VV(Z);var a=Z.length;if(a<2)return a?$t(Z,V):Z;var m=$t(Z,Sb(V/nd(Z)));return ed(Z)?eW(uV(m),0,V).join(""):m.slice(0,V)}function yT(V,Z,a,m){var c=Z&L,Y=aZ(V);function u(){for(var N=-1,U=arguments.length,y=-1,H=m.length,E=S(H+U),j=this&&this!==wl&&this instanceof u?Y:V;++y<H;)E[y]=m[y];for(;U--;)E[y++]=arguments[++N];return $l(j,c?a:this,E)}return u}function tG(V){return function(Z,a,m){return m&&typeof m!="number"&&Cl(Z,a,m)&&(a=m=d),Z=CV(Z),a===d?(a=Z,Z=0):a=CV(a),m=m===d?Z<a?1:-1:CV(m),YT(Z,a,m,V)}}function Bb(V){return function(Z,a){return typeof Z=="string"&&typeof a=="string"||(Z=pV(Z),a=pV(a)),V(Z,a)}}function mG(V,Z,a,m,c,Y,u,N,U,y){var H=Z&K,E=H?u:d,j=H?d:u,g=H?Y:d,Q=H?d:Y;Z|=H?z:I,Z&=~(H?I:z),Z&w||(Z&=~(L|J));var ll=[V,Z,c,g,E,Q,j,N,U,y],D=a.apply(d,ll);return pm(V)&&oG(D,ll),D.placeholder=m,uG(D,V,Z)}function tm(V){var Z=Hl[V];return function(a,m){if(a=pV(a),m=m==null?0:Kl($(m),292),m&&ui(a)){var c=(nl(a)+"e").split("e"),Y=Z(c[0]+"e"+(+c[1]+m));return c=(nl(Y)+"e").split("e"),+(c[0]+"e"+(+c[1]-m))}return Z(a)}}var HT=Gd&&1/hb(new Gd([,-0]))[1]==gl?function(V){return new Gd(V)}:Jm;function eG(V){return function(Z){var a=vl(Z);return a==XV?Lt(Z):a==oV?AS(Z):vS(Z,V(Z))}}function KV(V,Z,a,m,c,Y,u,N){var U=Z&J;if(!U&&typeof V!="function")throw new eV(n);var y=m?m.length:0;if(y||(Z&=~(z|I),m=c=d),u=u===d?u:zl($(u),0),N=N===d?N:$(N),y-=c?c.length:0,Z&I){var H=m,E=c;m=c=d}var j=U?d:nm(V),g=[V,Z,a,m,c,H,E,Y,u,N];if(j&&OT(g,j),V=g[0],Z=g[1],a=g[2],m=g[3],c=g[4],N=g[9]=g[9]===d?U?0:V.length:zl(g[9]-y,0),!N&&Z&(K|x)&&(Z&=~(K|x)),!Z||Z==L)var Q=kT(V,Z,a);else Z==K||Z==x?Q=xT(V,Z,N):(Z==z||Z==(L|z))&&!c.length?Q=yT(V,Z,a,m):Q=Lb.apply(d,g);var ll=j?gi:oG;return uG(ll(Q,g),V,Z)}function nG(V,Z,a,m){return V===d||FV(V,id[a])&&!Gl.call(m,a)?Z:V}function cG(V,Z,a,m,c,Y){return Nl(V)&&Nl(Z)&&(Y.set(Z,V),Hb(V,Z,d,cG,Y),Y.delete(Z)),V}function zT(V){return eZ(V)?d:V}function iG(V,Z,a,m,c,Y){var u=a&r,N=V.length,U=Z.length;if(N!=U&&!(u&&U>N))return!1;var y=Y.get(V),H=Y.get(Z);if(y&&H)return y==Z&&H==V;var E=-1,j=!0,g=a&M?new xW:d;for(Y.set(V,Z),Y.set(Z,V);++E<N;){var Q=V[E],ll=Z[E];if(m)var D=u?m(ll,Q,E,Z,V,Y):m(Q,ll,E,V,Z,Y);if(D!==d){if(D)continue;j=!1;break}if(g){if(!xt(Z,function(Zl,tl){if(!Pd(g,tl)&&(Q===Zl||c(Q,Zl,a,m,Y)))return g.push(tl)})){j=!1;break}}else if(!(Q===ll||c(Q,ll,a,m,Y))){j=!1;break}}return Y.delete(V),Y.delete(Z),j}function IT(V,Z,a,m,c,Y,u){switch(a){case ad:if(V.byteLength!=Z.byteLength||V.byteOffset!=Z.byteOffset)return!1;V=V.buffer,Z=Z.buffer;case Od:return!(V.byteLength!=Z.byteLength||!Y(new ub(V),new ub(Z)));case vd:case gd:case fd:return FV(+V,+Z);case tb:return V.name==Z.name&&V.message==Z.message;case Cd:case Qd:return V==Z+"";case XV:var N=Lt;case oV:var U=m&r;if(N||(N=hb),V.size!=Z.size&&!U)return!1;var y=u.get(V);if(y)return y==Z;m|=M,u.set(V,Z);var H=iG(N(V),N(Z),m,c,Y,u);return u.delete(V),H;case eb:if(lZ)return lZ.call(V)==lZ.call(Z)}return!1}function ET(V,Z,a,m,c,Y){var u=a&r,N=mm(V),U=N.length,y=mm(Z),H=y.length;if(U!=H&&!u)return!1;for(var E=U;E--;){var j=N[E];if(!(u?j in Z:Gl.call(Z,j)))return!1}var g=Y.get(V),Q=Y.get(Z);if(g&&Q)return g==Z&&Q==V;var ll=!0;Y.set(V,Z),Y.set(Z,V);for(var D=u;++E<U;){j=N[E];var Zl=V[j],tl=Z[j];if(m)var dV=u?m(tl,Zl,j,Z,V,Y):m(Zl,tl,j,V,Z,Y);if(!(dV===d?Zl===tl||c(Zl,tl,a,m,Y):dV)){ll=!1;break}D||(D=j=="constructor")}if(ll&&!D){var Ql=V.constructor,ZV=Z.constructor;Ql!=ZV&&"constructor"in V&&"constructor"in Z&&!(typeof Ql=="function"&&Ql instanceof Ql&&typeof ZV=="function"&&ZV instanceof ZV)&&(ll=!1)}return Y.delete(V),Y.delete(Z),ll}function vV(V){return Rm(sG(V,d,TG),V+"")}function mm(V){return yi(V,El,im)}function em(V){return yi(V,Al,GG)}var nm=Tb?function(V){return Tb.get(V)}:Jm;function Kb(V){for(var Z=V.name+"",a=pd[Z],m=Gl.call(pd,Z)?a.length:0;m--;){var c=a[m],Y=c.func;if(Y==null||Y==V)return c.name}return Z}function sd(V){var Z=Gl.call(R,"placeholder")?R:V;return Z.placeholder}function f(){var V=R.iteratee||Tm;return V=V===Tm?Ii:V,arguments.length?V(arguments[0],arguments[1]):V}function vb(V,Z){var a=V.__data__;return fT(Z)?a[typeof Z=="string"?"string":"hash"]:a.map}function cm(V){for(var Z=El(V),a=Z.length;a--;){var m=Z[a],c=V[m];Z[a]=[m,c,RG(c)]}return Z}function zW(V,Z){var a=DS(V,Z);return zi(a)?a:d}function LT(V){var Z=Gl.call(V,JW),a=V[JW];try{V[JW]=d;var m=!0}catch{}var c=Xb.call(V);return m&&(Z?V[JW]=a:delete V[JW]),c}var im=jt?function(V){return V==null?[]:(V=pl(V),WW(jt(V),function(Z){return Xi.call(V,Z)}))}:km,GG=jt?function(V){for(var Z=[];V;)dW(Z,im(V)),V=Nb(V);return Z}:km,vl=fl;(Bt&&vl(new Bt(new ArrayBuffer(1)))!=ad||_d&&vl(new _d)!=XV||Kt&&vl(Kt.resolve())!=Jc||Gd&&vl(new Gd)!=oV||qd&&vl(new qd)!=Dd)&&(vl=function(V){var Z=fl(V),a=Z==LV?V.constructor:d,m=a?IW(a):"";if(m)switch(m){case XM:return ad;case oM:return XV;case uM:return Jc;case NM:return oV;case FM:return Dd}return Z});function wT(V,Z,a){for(var m=-1,c=a.length;++m<c;){var Y=a[m],u=Y.size;switch(Y.type){case"drop":V+=u;break;case"dropRight":Z-=u;break;case"take":Z=Kl(Z,V+u);break;case"takeRight":V=zl(V,Z-u);break}}return{start:V,end:Z}}function jT(V){var Z=V.match(CU);return Z?Z[1].split(QU):[]}function pG(V,Z,a){Z=mW(Z,V);for(var m=-1,c=Z.length,Y=!1;++m<c;){var u=kV(Z[m]);if(!(Y=V!=null&&a(V,u)))break;V=V[u]}return Y||++m!=c?Y:(c=V==null?0:V.length,!!c&&Pb(c)&&gV(u,c)&&(_(V)||EW(V)))}function BT(V){var Z=V.length,a=new V.constructor(Z);return Z&&typeof V[0]=="string"&&Gl.call(V,"index")&&(a.index=V.index,a.input=V.input),a}function hG(V){return typeof V.constructor=="function"&&!tZ(V)?hd(Nb(V)):{}}function KT(V,Z,a){var m=V.constructor;switch(Z){case Od:return bm(V);case vd:case gd:return new m(+V);case ad:return UT(V,a);case ct:case it:case Gt:case pt:case ht:case Rt:case Yt:case st:case Xt:return _i(V,a);case XV:return new m;case fd:case Qd:return new m(V);case Cd:return ST(V);case oV:return new m;case eb:return MT(V)}}function vT(V,Z){var a=Z.length;if(!a)return V;var m=a-1;return Z[m]=(a>1?"& ":"")+Z[m],Z=Z.join(a>2?", ":" "),V.replace(fU,`{
|
|
282
|
-
/* [wrapped with `+Z+`] */
|
|
283
|
-
`)}function gT(V){return _(V)||EW(V)||!!(oi&&V&&V[oi])}function gV(V,Z){var a=typeof V;return Z=Z??VW,!!Z&&(a=="number"||a!="symbol"&&VS.test(V))&&V>-1&&V%1==0&&V<Z}function Cl(V,Z,a){if(!Nl(a))return!1;var m=typeof Z;return(m=="number"?Pl(a)&&gV(Z,a.length):m=="string"&&Z in a)?FV(a[Z],V):!1}function Gm(V,Z){if(_(V))return!1;var a=typeof V;return a=="number"||a=="symbol"||a=="boolean"||V==null||WV(V)?!0:BU.test(V)||!jU.test(V)||Z!=null&&V in pl(Z)}function fT(V){var Z=typeof V;return Z=="string"||Z=="number"||Z=="symbol"||Z=="boolean"?V!=="__proto__":V===null}function pm(V){var Z=Kb(V),a=R[Z];if(typeof a!="function"||!(Z in bl.prototype))return!1;if(V===a)return!0;var m=nm(a);return!!m&&V===m[0]}function CT(V){return!!Ri&&Ri in V}var QT=Yb?fV:xm;function tZ(V){var Z=V&&V.constructor,a=typeof Z=="function"&&Z.prototype||id;return V===a}function RG(V){return V===V&&!Nl(V)}function YG(V,Z){return function(a){return a==null?!1:a[V]===Z&&(Z!==d||V in pl(a))}}function DT(V){var Z=Db(V,function(m){return a.size===G&&a.clear(),m}),a=Z.cache;return Z}function OT(V,Z){var a=V[1],m=Z[1],c=a|m,Y=c<(L|J|k),u=m==k&&a==K||m==k&&a==B&&V[7].length<=Z[8]||m==(k|B)&&Z[7].length<=Z[8]&&a==K;if(!(Y||u))return V;m&L&&(V[2]=Z[2],c|=a&L?0:w);var N=Z[3];if(N){var U=V[3];V[3]=U?$i(U,N,Z[4]):N,V[4]=U?ZW(V[3],p):Z[4]}return N=Z[5],N&&(U=V[5],V[5]=U?lG(U,N,Z[6]):N,V[6]=U?ZW(V[5],p):Z[6]),N=Z[7],N&&(V[7]=N),m&k&&(V[8]=V[8]==null?Z[8]:Kl(V[8],Z[8])),V[9]==null&&(V[9]=Z[9]),V[0]=Z[0],V[1]=c,V}function PT(V){var Z=[];if(V!=null)for(var a in pl(V))Z.push(a);return Z}function AT(V){return Xb.call(V)}function sG(V,Z,a){return Z=zl(Z===d?V.length-1:Z,0),function(){for(var m=arguments,c=-1,Y=zl(m.length-Z,0),u=S(Y);++c<Y;)u[c]=m[Z+c];c=-1;for(var N=S(Z+1);++c<Z;)N[c]=m[c];return N[Z]=a(u),$l(V,this,N)}}function XG(V,Z){return Z.length<2?V:HW(V,iV(Z,0,-1))}function _T(V,Z){for(var a=V.length,m=Kl(Z.length,a),c=Ol(V);m--;){var Y=Z[m];V[m]=gV(Y,a)?c[Y]:d}return V}function hm(V,Z){if(!(Z==="constructor"&&typeof V[Z]=="function")&&Z!="__proto__")return V[Z]}var oG=NG(gi),mZ=iM||function(V,Z){return wl.setTimeout(V,Z)},Rm=NG(oT);function uG(V,Z,a){var m=Z+"";return Rm(V,vT(m,qT(jT(m),a)))}function NG(V){var Z=0,a=0;return function(){var m=RM(),c=Fl-(m-a);if(a=m,c>0){if(++Z>=dl)return arguments[0]}else Z=0;return V.apply(d,arguments)}}function gb(V,Z){var a=-1,m=V.length,c=m-1;for(Z=Z===d?m:Z;++a<Z;){var Y=qt(a,c),u=V[Y];V[Y]=V[a],V[a]=u}return V.length=Z,V}var FG=DT(function(V){var Z=[];return V.charCodeAt(0)===46&&Z.push(""),V.replace(KU,function(a,m,c,Y){Z.push(c?Y.replace(PU,"$1"):m||a)}),Z});function kV(V){if(typeof V=="string"||WV(V))return V;var Z=V+"";return Z=="0"&&1/V==-gl?"-0":Z}function IW(V){if(V!=null){try{return sb.call(V)}catch{}try{return V+""}catch{}}return""}function qT(V,Z){return mV(SU,function(a){var m="_."+a[0];Z&a[1]&&!Gb(V,m)&&V.push(m)}),V.sort()}function UG(V){if(V instanceof bl)return V.clone();var Z=new nV(V.__wrapped__,V.__chain__);return Z.__actions__=Ol(V.__actions__),Z.__index__=V.__index__,Z.__values__=V.__values__,Z}function $T(V,Z,a){(a?Cl(V,Z,a):Z===d)?Z=1:Z=zl($(Z),0);var m=V==null?0:V.length;if(!m||Z<1)return[];for(var c=0,Y=0,u=S(Sb(m/Z));c<m;)u[Y++]=iV(V,c,c+=Z);return u}function l5(V){for(var Z=-1,a=V==null?0:V.length,m=0,c=[];++Z<a;){var Y=V[Z];Y&&(c[m++]=Y)}return c}function V5(){var V=arguments.length;if(!V)return[];for(var Z=S(V-1),a=arguments[0],m=V;m--;)Z[m-1]=arguments[m];return dW(_(a)?Ol(a):[a],jl(Z,1))}var W5=Wl(function(V,Z){return Tl(V)?WZ(V,jl(Z,1,Tl,!0)):[]}),d5=Wl(function(V,Z){var a=GV(Z);return Tl(a)&&(a=d),Tl(V)?WZ(V,jl(Z,1,Tl,!0),f(a,2)):[]}),Z5=Wl(function(V,Z){var a=GV(Z);return Tl(a)&&(a=d),Tl(V)?WZ(V,jl(Z,1,Tl,!0),d,a):[]});function b5(V,Z,a){var m=V==null?0:V.length;return m?(Z=a||Z===d?1:$(Z),iV(V,Z<0?0:Z,m)):[]}function a5(V,Z,a){var m=V==null?0:V.length;return m?(Z=a||Z===d?1:$(Z),Z=m-Z,iV(V,0,Z<0?0:Z)):[]}function t5(V,Z){return V&&V.length?Ib(V,f(Z,3),!0,!0):[]}function m5(V,Z){return V&&V.length?Ib(V,f(Z,3),!0):[]}function e5(V,Z,a,m){var c=V==null?0:V.length;return c?(a&&typeof a!="number"&&Cl(V,Z,a)&&(a=0,m=c),VT(V,Z,a,m)):[]}function SG(V,Z,a){var m=V==null?0:V.length;if(!m)return-1;var c=a==null?0:$(a);return c<0&&(c=zl(m+c,0)),pb(V,f(Z,3),c)}function MG(V,Z,a){var m=V==null?0:V.length;if(!m)return-1;var c=m-1;return a!==d&&(c=$(a),c=a<0?zl(m+c,0):Kl(c,m-1)),pb(V,f(Z,3),c,!0)}function TG(V){var Z=V==null?0:V.length;return Z?jl(V,1):[]}function n5(V){var Z=V==null?0:V.length;return Z?jl(V,gl):[]}function c5(V,Z){var a=V==null?0:V.length;return a?(Z=Z===d?1:$(Z),jl(V,Z)):[]}function i5(V){for(var Z=-1,a=V==null?0:V.length,m={};++Z<a;){var c=V[Z];m[c[0]]=c[1]}return m}function rG(V){return V&&V.length?V[0]:d}function G5(V,Z,a){var m=V==null?0:V.length;if(!m)return-1;var c=a==null?0:$(a);return c<0&&(c=zl(m+c,0)),md(V,Z,c)}function p5(V){var Z=V==null?0:V.length;return Z?iV(V,0,-1):[]}var h5=Wl(function(V){var Z=ol(V,dm);return Z.length&&Z[0]===V[0]?Dt(Z):[]}),R5=Wl(function(V){var Z=GV(V),a=ol(V,dm);return Z===GV(a)?Z=d:a.pop(),a.length&&a[0]===V[0]?Dt(a,f(Z,2)):[]}),Y5=Wl(function(V){var Z=GV(V),a=ol(V,dm);return Z=typeof Z=="function"?Z:d,Z&&a.pop(),a.length&&a[0]===V[0]?Dt(a,d,Z):[]});function s5(V,Z){return V==null?"":pM.call(V,Z)}function GV(V){var Z=V==null?0:V.length;return Z?V[Z-1]:d}function X5(V,Z,a){var m=V==null?0:V.length;if(!m)return-1;var c=m;return a!==d&&(c=$(a),c=c<0?zl(m+c,0):Kl(c,m-1)),Z===Z?qS(V,Z,c):pb(V,mi,c,!0)}function o5(V,Z){return V&&V.length?ji(V,$(Z)):d}var u5=Wl(JG);function JG(V,Z){return V&&V.length&&Z&&Z.length?_t(V,Z):V}function N5(V,Z,a){return V&&V.length&&Z&&Z.length?_t(V,Z,f(a,2)):V}function F5(V,Z,a){return V&&V.length&&Z&&Z.length?_t(V,Z,d,a):V}var U5=vV(function(V,Z){var a=V==null?0:V.length,m=gt(V,Z);return vi(V,ol(Z,function(c){return gV(c,a)?+c:c}).sort(qi)),m});function S5(V,Z){var a=[];if(!(V&&V.length))return a;var m=-1,c=[],Y=V.length;for(Z=f(Z,3);++m<Y;){var u=V[m];Z(u,m,V)&&(a.push(u),c.push(m))}return vi(V,c),a}function Ym(V){return V==null?V:sM.call(V)}function M5(V,Z,a){var m=V==null?0:V.length;return m?(a&&typeof a!="number"&&Cl(V,Z,a)?(Z=0,a=m):(Z=Z==null?0:$(Z),a=a===d?m:$(a)),iV(V,Z,a)):[]}function T5(V,Z){return zb(V,Z)}function r5(V,Z,a){return lm(V,Z,f(a,2))}function J5(V,Z){var a=V==null?0:V.length;if(a){var m=zb(V,Z);if(m<a&&FV(V[m],Z))return m}return-1}function k5(V,Z){return zb(V,Z,!0)}function x5(V,Z,a){return lm(V,Z,f(a,2),!0)}function y5(V,Z){var a=V==null?0:V.length;if(a){var m=zb(V,Z,!0)-1;if(FV(V[m],Z))return m}return-1}function H5(V){return V&&V.length?fi(V):[]}function z5(V,Z){return V&&V.length?fi(V,f(Z,2)):[]}function I5(V){var Z=V==null?0:V.length;return Z?iV(V,1,Z):[]}function E5(V,Z,a){return V&&V.length?(Z=a||Z===d?1:$(Z),iV(V,0,Z<0?0:Z)):[]}function L5(V,Z,a){var m=V==null?0:V.length;return m?(Z=a||Z===d?1:$(Z),Z=m-Z,iV(V,Z<0?0:Z,m)):[]}function w5(V,Z){return V&&V.length?Ib(V,f(Z,3),!1,!0):[]}function j5(V,Z){return V&&V.length?Ib(V,f(Z,3)):[]}var B5=Wl(function(V){return tW(jl(V,1,Tl,!0))}),K5=Wl(function(V){var Z=GV(V);return Tl(Z)&&(Z=d),tW(jl(V,1,Tl,!0),f(Z,2))}),v5=Wl(function(V){var Z=GV(V);return Z=typeof Z=="function"?Z:d,tW(jl(V,1,Tl,!0),d,Z)});function g5(V){return V&&V.length?tW(V):[]}function f5(V,Z){return V&&V.length?tW(V,f(Z,2)):[]}function C5(V,Z){return Z=typeof Z=="function"?Z:d,V&&V.length?tW(V,d,Z):[]}function sm(V){if(!(V&&V.length))return[];var Z=0;return V=WW(V,function(a){if(Tl(a))return Z=zl(a.length,Z),!0}),It(Z,function(a){return ol(V,yt(a))})}function kG(V,Z){if(!(V&&V.length))return[];var a=sm(V);return Z==null?a:ol(a,function(m){return $l(Z,d,m)})}var Q5=Wl(function(V,Z){return Tl(V)?WZ(V,Z):[]}),D5=Wl(function(V){return Wm(WW(V,Tl))}),O5=Wl(function(V){var Z=GV(V);return Tl(Z)&&(Z=d),Wm(WW(V,Tl),f(Z,2))}),P5=Wl(function(V){var Z=GV(V);return Z=typeof Z=="function"?Z:d,Wm(WW(V,Tl),d,Z)}),A5=Wl(sm);function _5(V,Z){return Oi(V||[],Z||[],VZ)}function q5(V,Z){return Oi(V||[],Z||[],bZ)}var $5=Wl(function(V){var Z=V.length,a=Z>1?V[Z-1]:d;return a=typeof a=="function"?(V.pop(),a):d,kG(V,a)});function xG(V){var Z=R(V);return Z.__chain__=!0,Z}function lr(V,Z){return Z(V),V}function fb(V,Z){return Z(V)}var Vr=vV(function(V){var Z=V.length,a=Z?V[0]:0,m=this.__wrapped__,c=function(Y){return gt(Y,V)};return Z>1||this.__actions__.length||!(m instanceof bl)||!gV(a)?this.thru(c):(m=m.slice(a,+a+(Z?1:0)),m.__actions__.push({func:fb,args:[c],thisArg:d}),new nV(m,this.__chain__).thru(function(Y){return Z&&!Y.length&&Y.push(d),Y}))});function Wr(){return xG(this)}function dr(){return new nV(this.value(),this.__chain__)}function Zr(){this.__values__===d&&(this.__values__=CG(this.value()));var V=this.__index__>=this.__values__.length,Z=V?d:this.__values__[this.__index__++];return{done:V,value:Z}}function br(){return this}function ar(V){for(var Z,a=this;a instanceof Jb;){var m=UG(a);m.__index__=0,m.__values__=d,Z?c.__wrapped__=m:Z=m;var c=m;a=a.__wrapped__}return c.__wrapped__=V,Z}function tr(){var V=this.__wrapped__;if(V instanceof bl){var Z=V;return this.__actions__.length&&(Z=new bl(this)),Z=Z.reverse(),Z.__actions__.push({func:fb,args:[Ym],thisArg:d}),new nV(Z,this.__chain__)}return this.thru(Ym)}function mr(){return Di(this.__wrapped__,this.__actions__)}var er=Eb(function(V,Z,a){Gl.call(V,a)?++V[a]:BV(V,a,1)});function nr(V,Z,a){var m=_(V)?ai:lT;return a&&Cl(V,Z,a)&&(Z=d),m(V,f(Z,3))}function cr(V,Z){var a=_(V)?WW:ki;return a(V,f(Z,3))}var ir=ZG(SG),Gr=ZG(MG);function pr(V,Z){return jl(Cb(V,Z),1)}function hr(V,Z){return jl(Cb(V,Z),gl)}function Rr(V,Z,a){return a=a===d?1:$(a),jl(Cb(V,Z),a)}function yG(V,Z){var a=_(V)?mV:aW;return a(V,f(Z,3))}function HG(V,Z){var a=_(V)?IS:Ji;return a(V,f(Z,3))}var Yr=Eb(function(V,Z,a){Gl.call(V,a)?V[a].push(Z):BV(V,a,[Z])});function sr(V,Z,a,m){V=Pl(V)?V:od(V),a=a&&!m?$(a):0;var c=V.length;return a<0&&(a=zl(c+a,0)),Ab(V)?a<=c&&V.indexOf(Z,a)>-1:!!c&&md(V,Z,a)>-1}var Xr=Wl(function(V,Z,a){var m=-1,c=typeof Z=="function",Y=Pl(V)?S(V.length):[];return aW(V,function(u){Y[++m]=c?$l(Z,u,a):dZ(u,Z,a)}),Y}),or=Eb(function(V,Z,a){BV(V,a,Z)});function Cb(V,Z){var a=_(V)?ol:Ei;return a(V,f(Z,3))}function ur(V,Z,a,m){return V==null?[]:(_(Z)||(Z=Z==null?[]:[Z]),a=m?d:a,_(a)||(a=a==null?[]:[a]),Bi(V,Z,a))}var Nr=Eb(function(V,Z,a){V[a?0:1].push(Z)},function(){return[[],[]]});function Fr(V,Z,a){var m=_(V)?kt:ni,c=arguments.length<3;return m(V,f(Z,4),a,c,aW)}function Ur(V,Z,a){var m=_(V)?ES:ni,c=arguments.length<3;return m(V,f(Z,4),a,c,Ji)}function Sr(V,Z){var a=_(V)?WW:ki;return a(V,Ob(f(Z,3)))}function Mr(V){var Z=_(V)?Si:sT;return Z(V)}function Tr(V,Z,a){(a?Cl(V,Z,a):Z===d)?Z=1:Z=$(Z);var m=_(V)?PM:XT;return m(V,Z)}function rr(V){var Z=_(V)?AM:uT;return Z(V)}function Jr(V){if(V==null)return 0;if(Pl(V))return Ab(V)?nd(V):V.length;var Z=vl(V);return Z==XV||Z==oV?V.size:Pt(V).length}function kr(V,Z,a){var m=_(V)?xt:NT;return a&&Cl(V,Z,a)&&(Z=d),m(V,f(Z,3))}var xr=Wl(function(V,Z){if(V==null)return[];var a=Z.length;return a>1&&Cl(V,Z[0],Z[1])?Z=[]:a>2&&Cl(Z[0],Z[1],Z[2])&&(Z=[Z[0]]),Bi(V,jl(Z,1),[])}),Qb=cM||function(){return wl.Date.now()};function yr(V,Z){if(typeof Z!="function")throw new eV(n);return V=$(V),function(){if(--V<1)return Z.apply(this,arguments)}}function zG(V,Z,a){return Z=a?d:Z,Z=V&&Z==null?V.length:Z,KV(V,k,d,d,d,d,Z)}function IG(V,Z){var a;if(typeof Z!="function")throw new eV(n);return V=$(V),function(){return--V>0&&(a=Z.apply(this,arguments)),V<=1&&(Z=d),a}}var Xm=Wl(function(V,Z,a){var m=L;if(a.length){var c=ZW(a,sd(Xm));m|=z}return KV(V,m,Z,a,c)}),EG=Wl(function(V,Z,a){var m=L|J;if(a.length){var c=ZW(a,sd(EG));m|=z}return KV(Z,m,V,a,c)});function LG(V,Z,a){Z=a?d:Z;var m=KV(V,K,d,d,d,d,d,Z);return m.placeholder=LG.placeholder,m}function wG(V,Z,a){Z=a?d:Z;var m=KV(V,x,d,d,d,d,d,Z);return m.placeholder=wG.placeholder,m}function jG(V,Z,a){var m,c,Y,u,N,U,y=0,H=!1,E=!1,j=!0;if(typeof V!="function")throw new eV(n);Z=pV(Z)||0,Nl(a)&&(H=!!a.leading,E="maxWait"in a,Y=E?zl(pV(a.maxWait)||0,Z):Y,j="trailing"in a?!!a.trailing:j);function g(rl){var UV=m,QV=c;return m=c=d,y=rl,u=V.apply(QV,UV),u}function Q(rl){return y=rl,N=mZ(Zl,Z),H?g(rl):u}function ll(rl){var UV=rl-U,QV=rl-y,Zp=Z-UV;return E?Kl(Zp,Y-QV):Zp}function D(rl){var UV=rl-U,QV=rl-y;return U===d||UV>=Z||UV<0||E&&QV>=Y}function Zl(){var rl=Qb();if(D(rl))return tl(rl);N=mZ(Zl,ll(rl))}function tl(rl){return N=d,j&&m?g(rl):(m=c=d,u)}function dV(){N!==d&&Pi(N),y=0,m=U=c=N=d}function Ql(){return N===d?u:tl(Qb())}function ZV(){var rl=Qb(),UV=D(rl);if(m=arguments,c=this,U=rl,UV){if(N===d)return Q(U);if(E)return Pi(N),N=mZ(Zl,Z),g(U)}return N===d&&(N=mZ(Zl,Z)),u}return ZV.cancel=dV,ZV.flush=Ql,ZV}var Hr=Wl(function(V,Z){return ri(V,1,Z)}),zr=Wl(function(V,Z,a){return ri(V,pV(Z)||0,a)});function Ir(V){return KV(V,C)}function Db(V,Z){if(typeof V!="function"||Z!=null&&typeof Z!="function")throw new eV(n);var a=function(){var m=arguments,c=Z?Z.apply(this,m):m[0],Y=a.cache;if(Y.has(c))return Y.get(c);var u=V.apply(this,m);return a.cache=Y.set(c,u)||Y,u};return a.cache=new(Db.Cache||jV),a}Db.Cache=jV;function Ob(V){if(typeof V!="function")throw new eV(n);return function(){var Z=arguments;switch(Z.length){case 0:return!V.call(this);case 1:return!V.call(this,Z[0]);case 2:return!V.call(this,Z[0],Z[1]);case 3:return!V.call(this,Z[0],Z[1],Z[2])}return!V.apply(this,Z)}}function Er(V){return IG(2,V)}var Lr=FT(function(V,Z){Z=Z.length==1&&_(Z[0])?ol(Z[0],lV(f())):ol(jl(Z,1),lV(f()));var a=Z.length;return Wl(function(m){for(var c=-1,Y=Kl(m.length,a);++c<Y;)m[c]=Z[c].call(this,m[c]);return $l(V,this,m)})}),om=Wl(function(V,Z){var a=ZW(Z,sd(om));return KV(V,z,d,Z,a)}),BG=Wl(function(V,Z){var a=ZW(Z,sd(BG));return KV(V,I,d,Z,a)}),wr=vV(function(V,Z){return KV(V,B,d,d,d,Z)});function jr(V,Z){if(typeof V!="function")throw new eV(n);return Z=Z===d?Z:$(Z),Wl(V,Z)}function Br(V,Z){if(typeof V!="function")throw new eV(n);return Z=Z==null?0:zl($(Z),0),Wl(function(a){var m=a[Z],c=eW(a,0,Z);return m&&dW(c,m),$l(V,this,c)})}function Kr(V,Z,a){var m=!0,c=!0;if(typeof V!="function")throw new eV(n);return Nl(a)&&(m="leading"in a?!!a.leading:m,c="trailing"in a?!!a.trailing:c),jG(V,Z,{leading:m,maxWait:Z,trailing:c})}function vr(V){return zG(V,1)}function gr(V,Z){return om(Zm(Z),V)}function fr(){if(!arguments.length)return[];var V=arguments[0];return _(V)?V:[V]}function Cr(V){return cV(V,o)}function Qr(V,Z){return Z=typeof Z=="function"?Z:d,cV(V,o,Z)}function Dr(V){return cV(V,s|o)}function Or(V,Z){return Z=typeof Z=="function"?Z:d,cV(V,s|o,Z)}function Pr(V,Z){return Z==null||Ti(V,Z,El(Z))}function FV(V,Z){return V===Z||V!==V&&Z!==Z}var Ar=Bb(Qt),_r=Bb(function(V,Z){return V>=Z}),EW=Hi(function(){return arguments}())?Hi:function(V){return Sl(V)&&Gl.call(V,"callee")&&!Xi.call(V,"callee")},_=S.isArray,qr=li?lV(li):aT;function Pl(V){return V!=null&&Pb(V.length)&&!fV(V)}function Tl(V){return Sl(V)&&Pl(V)}function $r(V){return V===!0||V===!1||Sl(V)&&fl(V)==vd}var nW=GM||xm,lJ=Vi?lV(Vi):tT;function VJ(V){return Sl(V)&&V.nodeType===1&&!eZ(V)}function WJ(V){if(V==null)return!0;if(Pl(V)&&(_(V)||typeof V=="string"||typeof V.splice=="function"||nW(V)||Xd(V)||EW(V)))return!V.length;var Z=vl(V);if(Z==XV||Z==oV)return!V.size;if(tZ(V))return!Pt(V).length;for(var a in V)if(Gl.call(V,a))return!1;return!0}function dJ(V,Z){return ZZ(V,Z)}function ZJ(V,Z,a){a=typeof a=="function"?a:d;var m=a?a(V,Z):d;return m===d?ZZ(V,Z,d,a):!!m}function um(V){if(!Sl(V))return!1;var Z=fl(V);return Z==tb||Z==TU||typeof V.message=="string"&&typeof V.name=="string"&&!eZ(V)}function bJ(V){return typeof V=="number"&&ui(V)}function fV(V){if(!Nl(V))return!1;var Z=fl(V);return Z==mb||Z==rc||Z==MU||Z==JU}function KG(V){return typeof V=="number"&&V==$(V)}function Pb(V){return typeof V=="number"&&V>-1&&V%1==0&&V<=VW}function Nl(V){var Z=typeof V;return V!=null&&(Z=="object"||Z=="function")}function Sl(V){return V!=null&&typeof V=="object"}var vG=Wi?lV(Wi):eT;function aJ(V,Z){return V===Z||Ot(V,Z,cm(Z))}function tJ(V,Z,a){return a=typeof a=="function"?a:d,Ot(V,Z,cm(Z),a)}function mJ(V){return gG(V)&&V!=+V}function eJ(V){if(QT(V))throw new P(e);return zi(V)}function nJ(V){return V===null}function cJ(V){return V==null}function gG(V){return typeof V=="number"||Sl(V)&&fl(V)==fd}function eZ(V){if(!Sl(V)||fl(V)!=LV)return!1;var Z=Nb(V);if(Z===null)return!0;var a=Gl.call(Z,"constructor")&&Z.constructor;return typeof a=="function"&&a instanceof a&&sb.call(a)==tM}var Nm=di?lV(di):nT;function iJ(V){return KG(V)&&V>=-VW&&V<=VW}var fG=Zi?lV(Zi):cT;function Ab(V){return typeof V=="string"||!_(V)&&Sl(V)&&fl(V)==Qd}function WV(V){return typeof V=="symbol"||Sl(V)&&fl(V)==eb}var Xd=bi?lV(bi):iT;function GJ(V){return V===d}function pJ(V){return Sl(V)&&vl(V)==Dd}function hJ(V){return Sl(V)&&fl(V)==xU}var RJ=Bb(At),YJ=Bb(function(V,Z){return V<=Z});function CG(V){if(!V)return[];if(Pl(V))return Ab(V)?uV(V):Ol(V);if(Ad&&V[Ad])return PS(V[Ad]());var Z=vl(V),a=Z==XV?Lt:Z==oV?hb:od;return a(V)}function CV(V){if(!V)return V===0?V:0;if(V=pV(V),V===gl||V===-gl){var Z=V<0?-1:1;return Z*NU}return V===V?V:0}function $(V){var Z=CV(V),a=Z%1;return Z===Z?a?Z-a:Z:0}function QG(V){return V?yW($(V),0,TV):0}function pV(V){if(typeof V=="number")return V;if(WV(V))return bb;if(Nl(V)){var Z=typeof V.valueOf=="function"?V.valueOf():V;V=Nl(Z)?Z+"":Z}if(typeof V!="string")return V===0?V:+V;V=ci(V);var a=qU.test(V);return a||lS.test(V)?yS(V.slice(2),a?2:8):_U.test(V)?bb:+V}function DG(V){return JV(V,Al(V))}function sJ(V){return V?yW($(V),-VW,VW):V===0?V:0}function nl(V){return V==null?"":VV(V)}var XJ=Rd(function(V,Z){if(tZ(Z)||Pl(Z)){JV(Z,El(Z),V);return}for(var a in Z)Gl.call(Z,a)&&VZ(V,a,Z[a])}),OG=Rd(function(V,Z){JV(Z,Al(Z),V)}),_b=Rd(function(V,Z,a,m){JV(Z,Al(Z),V,m)}),oJ=Rd(function(V,Z,a,m){JV(Z,El(Z),V,m)}),uJ=vV(gt);function NJ(V,Z){var a=hd(V);return Z==null?a:Mi(a,Z)}var FJ=Wl(function(V,Z){V=pl(V);var a=-1,m=Z.length,c=m>2?Z[2]:d;for(c&&Cl(Z[0],Z[1],c)&&(m=1);++a<m;)for(var Y=Z[a],u=Al(Y),N=-1,U=u.length;++N<U;){var y=u[N],H=V[y];(H===d||FV(H,id[y])&&!Gl.call(V,y))&&(V[y]=Y[y])}return V}),UJ=Wl(function(V){return V.push(d,cG),$l(PG,d,V)});function SJ(V,Z){return ti(V,f(Z,3),rV)}function MJ(V,Z){return ti(V,f(Z,3),Ct)}function TJ(V,Z){return V==null?V:ft(V,f(Z,3),Al)}function rJ(V,Z){return V==null?V:xi(V,f(Z,3),Al)}function JJ(V,Z){return V&&rV(V,f(Z,3))}function kJ(V,Z){return V&&Ct(V,f(Z,3))}function xJ(V){return V==null?[]:yb(V,El(V))}function yJ(V){return V==null?[]:yb(V,Al(V))}function Fm(V,Z,a){var m=V==null?d:HW(V,Z);return m===d?a:m}function HJ(V,Z){return V!=null&&pG(V,Z,WT)}function Um(V,Z){return V!=null&&pG(V,Z,dT)}var zJ=aG(function(V,Z,a){Z!=null&&typeof Z.toString!="function"&&(Z=Xb.call(Z)),V[Z]=a},Mm(_l)),IJ=aG(function(V,Z,a){Z!=null&&typeof Z.toString!="function"&&(Z=Xb.call(Z)),Gl.call(V,Z)?V[Z].push(a):V[Z]=[a]},f),EJ=Wl(dZ);function El(V){return Pl(V)?Ui(V):Pt(V)}function Al(V){return Pl(V)?Ui(V,!0):GT(V)}function LJ(V,Z){var a={};return Z=f(Z,3),rV(V,function(m,c,Y){BV(a,Z(m,c,Y),m)}),a}function wJ(V,Z){var a={};return Z=f(Z,3),rV(V,function(m,c,Y){BV(a,c,Z(m,c,Y))}),a}var jJ=Rd(function(V,Z,a){Hb(V,Z,a)}),PG=Rd(function(V,Z,a,m){Hb(V,Z,a,m)}),BJ=vV(function(V,Z){var a={};if(V==null)return a;var m=!1;Z=ol(Z,function(Y){return Y=mW(Y,V),m||(m=Y.length>1),Y}),JV(V,em(V),a),m&&(a=cV(a,s|X|o,zT));for(var c=Z.length;c--;)Vm(a,Z[c]);return a});function KJ(V,Z){return AG(V,Ob(f(Z)))}var vJ=vV(function(V,Z){return V==null?{}:hT(V,Z)});function AG(V,Z){if(V==null)return{};var a=ol(em(V),function(m){return[m]});return Z=f(Z),Ki(V,a,function(m,c){return Z(m,c[0])})}function gJ(V,Z,a){Z=mW(Z,V);var m=-1,c=Z.length;for(c||(c=1,V=d);++m<c;){var Y=V==null?d:V[kV(Z[m])];Y===d&&(m=c,Y=a),V=fV(Y)?Y.call(V):Y}return V}function fJ(V,Z,a){return V==null?V:bZ(V,Z,a)}function CJ(V,Z,a,m){return m=typeof m=="function"?m:d,V==null?V:bZ(V,Z,a,m)}var _G=eG(El),qG=eG(Al);function QJ(V,Z,a){var m=_(V),c=m||nW(V)||Xd(V);if(Z=f(Z,4),a==null){var Y=V&&V.constructor;c?a=m?new Y:[]:Nl(V)?a=fV(Y)?hd(Nb(V)):{}:a={}}return(c?mV:rV)(V,function(u,N,U){return Z(a,u,N,U)}),a}function DJ(V,Z){return V==null?!0:Vm(V,Z)}function OJ(V,Z,a){return V==null?V:Qi(V,Z,Zm(a))}function PJ(V,Z,a,m){return m=typeof m=="function"?m:d,V==null?V:Qi(V,Z,Zm(a),m)}function od(V){return V==null?[]:Et(V,El(V))}function AJ(V){return V==null?[]:Et(V,Al(V))}function _J(V,Z,a){return a===d&&(a=Z,Z=d),a!==d&&(a=pV(a),a=a===a?a:0),Z!==d&&(Z=pV(Z),Z=Z===Z?Z:0),yW(pV(V),Z,a)}function qJ(V,Z,a){return Z=CV(Z),a===d?(a=Z,Z=0):a=CV(a),V=pV(V),ZT(V,Z,a)}function $J(V,Z,a){if(a&&typeof a!="boolean"&&Cl(V,Z,a)&&(Z=a=d),a===d&&(typeof Z=="boolean"?(a=Z,Z=d):typeof V=="boolean"&&(a=V,V=d)),V===d&&Z===d?(V=0,Z=1):(V=CV(V),Z===d?(Z=V,V=0):Z=CV(Z)),V>Z){var m=V;V=Z,Z=m}if(a||V%1||Z%1){var c=Ni();return Kl(V+c*(Z-V+xS("1e-"+((c+"").length-1))),Z)}return qt(V,Z)}var lk=Yd(function(V,Z,a){return Z=Z.toLowerCase(),V+(a?$G(Z):Z)});function $G(V){return Sm(nl(V).toLowerCase())}function lp(V){return V=nl(V),V&&V.replace(WS,fS).replace(uS,"")}function Vk(V,Z,a){V=nl(V),Z=VV(Z);var m=V.length;a=a===d?m:yW($(a),0,m);var c=a;return a-=Z.length,a>=0&&V.slice(a,c)==Z}function Wk(V){return V=nl(V),V&&EU.test(V)?V.replace(xc,CS):V}function dk(V){return V=nl(V),V&&vU.test(V)?V.replace(ot,"\\$&"):V}var Zk=Yd(function(V,Z,a){return V+(a?"-":"")+Z.toLowerCase()}),bk=Yd(function(V,Z,a){return V+(a?" ":"")+Z.toLowerCase()}),ak=dG("toLowerCase");function tk(V,Z,a){V=nl(V),Z=$(Z);var m=Z?nd(V):0;if(!Z||m>=Z)return V;var c=(Z-m)/2;return jb(Mb(c),a)+V+jb(Sb(c),a)}function mk(V,Z,a){V=nl(V),Z=$(Z);var m=Z?nd(V):0;return Z&&m<Z?V+jb(Z-m,a):V}function ek(V,Z,a){V=nl(V),Z=$(Z);var m=Z?nd(V):0;return Z&&m<Z?jb(Z-m,a)+V:V}function nk(V,Z,a){return a||Z==null?Z=0:Z&&(Z=+Z),YM(nl(V).replace(ut,""),Z||0)}function ck(V,Z,a){return(a?Cl(V,Z,a):Z===d)?Z=1:Z=$(Z),$t(nl(V),Z)}function ik(){var V=arguments,Z=nl(V[0]);return V.length<3?Z:Z.replace(V[1],V[2])}var Gk=Yd(function(V,Z,a){return V+(a?"_":"")+Z.toLowerCase()});function pk(V,Z,a){return a&&typeof a!="number"&&Cl(V,Z,a)&&(Z=a=d),a=a===d?TV:a>>>0,a?(V=nl(V),V&&(typeof Z=="string"||Z!=null&&!Nm(Z))&&(Z=VV(Z),!Z&&ed(V))?eW(uV(V),0,a):V.split(Z,a)):[]}var hk=Yd(function(V,Z,a){return V+(a?" ":"")+Sm(Z)});function Rk(V,Z,a){return V=nl(V),a=a==null?0:yW($(a),0,V.length),Z=VV(Z),V.slice(a,a+Z.length)==Z}function Yk(V,Z,a){var m=R.templateSettings;a&&Cl(V,Z,a)&&(Z=d),V=nl(V),Z=_b({},Z,m,nG);var c=_b({},Z.imports,m.imports,nG),Y=El(c),u=Et(c,Y),N,U,y=0,H=Z.interpolate||nb,E="__p += '",j=wt((Z.escape||nb).source+"|"+H.source+"|"+(H===yc?AU:nb).source+"|"+(Z.evaluate||nb).source+"|$","g"),g="//# sourceURL="+(Gl.call(Z,"sourceURL")?(Z.sourceURL+"").replace(/\s/g," "):"lodash.templateSources["+ ++MS+"]")+`
|
|
284
|
-
`;V.replace(j,function(D,Zl,tl,dV,Ql,ZV){return tl||(tl=dV),E+=V.slice(y,ZV).replace(dS,QS),Zl&&(N=!0,E+=`' +
|
|
285
|
-
__e(`+Zl+`) +
|
|
286
|
-
'`),Ql&&(U=!0,E+=`';
|
|
287
|
-
`+Ql+`;
|
|
288
|
-
__p += '`),tl&&(E+=`' +
|
|
289
|
-
((__t = (`+tl+`)) == null ? '' : __t) +
|
|
290
|
-
'`),y=ZV+D.length,D}),E+=`';
|
|
291
|
-
`;var Q=Gl.call(Z,"variable")&&Z.variable;if(!Q)E=`with (obj) {
|
|
292
|
-
`+E+`
|
|
131
|
+
\${h.map((o,n)=>\`
|
|
132
|
+
if (u_hasLogo\${o} == 1) {
|
|
133
|
+
gl_FragColor += BlendLogo(curCoord, u_ad\${o}, u_matrix\${o});
|
|
134
|
+
}\`).join(\`
|
|
135
|
+
\`)}
|
|
293
136
|
}
|
|
294
|
-
`;else if(OU.test(Q))throw new P(i);E=(U?E.replace(yU,""):E).replace(HU,"$1").replace(zU,"$1;"),E="function("+(Q||"obj")+`) {
|
|
295
|
-
`+(Q?"":`obj || (obj = {});
|
|
296
|
-
`)+"var __t, __p = ''"+(N?", __e = _.escape":"")+(U?`, __j = Array.prototype.join;
|
|
297
|
-
function print() { __p += __j.call(arguments, '') }
|
|
298
|
-
`:`;
|
|
299
|
-
`)+E+`return __p
|
|
300
|
-
}`;var ll=Wp(function(){return el(Y,g+"return "+E).apply(d,u)});if(ll.source=E,um(ll))throw ll;return ll}function sk(V){return nl(V).toLowerCase()}function Xk(V){return nl(V).toUpperCase()}function ok(V,Z,a){if(V=nl(V),V&&(a||Z===d))return ci(V);if(!V||!(Z=VV(Z)))return V;var m=uV(V),c=uV(Z),Y=ii(m,c),u=Gi(m,c)+1;return eW(m,Y,u).join("")}function uk(V,Z,a){if(V=nl(V),V&&(a||Z===d))return V.slice(0,hi(V)+1);if(!V||!(Z=VV(Z)))return V;var m=uV(V),c=Gi(m,uV(Z))+1;return eW(m,0,c).join("")}function Nk(V,Z,a){if(V=nl(V),V&&(a||Z===d))return V.replace(ut,"");if(!V||!(Z=VV(Z)))return V;var m=uV(V),c=ii(m,uV(Z));return eW(m,c).join("")}function Fk(V,Z){var a=A,m=Vl;if(Nl(Z)){var c="separator"in Z?Z.separator:c;a="length"in Z?$(Z.length):a,m="omission"in Z?VV(Z.omission):m}V=nl(V);var Y=V.length;if(ed(V)){var u=uV(V);Y=u.length}if(a>=Y)return V;var N=a-nd(m);if(N<1)return m;var U=u?eW(u,0,N).join(""):V.slice(0,N);if(c===d)return U+m;if(u&&(N+=U.length-N),Nm(c)){if(V.slice(N).search(c)){var y,H=U;for(c.global||(c=wt(c.source,nl(Hc.exec(c))+"g")),c.lastIndex=0;y=c.exec(H);)var E=y.index;U=U.slice(0,E===d?N:E)}}else if(V.indexOf(VV(c),N)!=N){var j=U.lastIndexOf(c);j>-1&&(U=U.slice(0,j))}return U+m}function Uk(V){return V=nl(V),V&&IU.test(V)?V.replace(kc,$S):V}var Sk=Yd(function(V,Z,a){return V+(a?" ":"")+Z.toUpperCase()}),Sm=dG("toUpperCase");function Vp(V,Z,a){return V=nl(V),Z=a?d:Z,Z===d?OS(V)?WM(V):jS(V):V.match(Z)||[]}var Wp=Wl(function(V,Z){try{return $l(V,d,Z)}catch(a){return um(a)?a:new P(a)}}),Mk=vV(function(V,Z){return mV(Z,function(a){a=kV(a),BV(V,a,Xm(V[a],V))}),V});function Tk(V){var Z=V==null?0:V.length,a=f();return V=Z?ol(V,function(m){if(typeof m[1]!="function")throw new eV(n);return[a(m[0]),m[1]]}):[],Wl(function(m){for(var c=-1;++c<Z;){var Y=V[c];if($l(Y[0],this,m))return $l(Y[1],this,m)}})}function rk(V){return $M(cV(V,s))}function Mm(V){return function(){return V}}function Jk(V,Z){return V==null||V!==V?Z:V}var kk=bG(),xk=bG(!0);function _l(V){return V}function Tm(V){return Ii(typeof V=="function"?V:cV(V,s))}function yk(V){return Li(cV(V,s))}function Hk(V,Z){return wi(V,cV(Z,s))}var zk=Wl(function(V,Z){return function(a){return dZ(a,V,Z)}}),Ik=Wl(function(V,Z){return function(a){return dZ(V,a,Z)}});function rm(V,Z,a){var m=El(Z),c=yb(Z,m);a==null&&!(Nl(Z)&&(c.length||!m.length))&&(a=Z,Z=V,V=this,c=yb(Z,El(Z)));var Y=!(Nl(a)&&"chain"in a)||!!a.chain,u=fV(V);return mV(c,function(N){var U=Z[N];V[N]=U,u&&(V.prototype[N]=function(){var y=this.__chain__;if(Y||y){var H=V(this.__wrapped__),E=H.__actions__=Ol(this.__actions__);return E.push({func:U,args:arguments,thisArg:V}),H.__chain__=y,H}return U.apply(V,dW([this.value()],arguments))})}),V}function Ek(){return wl._===this&&(wl._=mM),this}function Jm(){}function Lk(V){return V=$(V),Wl(function(Z){return ji(Z,V)})}var wk=am(ol),jk=am(ai),Bk=am(xt);function dp(V){return Gm(V)?yt(kV(V)):RT(V)}function Kk(V){return function(Z){return V==null?d:HW(V,Z)}}var vk=tG(),gk=tG(!0);function km(){return[]}function xm(){return!1}function fk(){return{}}function Ck(){return""}function Qk(){return!0}function Dk(V,Z){if(V=$(V),V<1||V>VW)return[];var a=TV,m=Kl(V,TV);Z=f(Z),V-=TV;for(var c=It(m,Z);++a<V;)Z(a);return c}function Ok(V){return _(V)?ol(V,kV):WV(V)?[V]:Ol(FG(nl(V)))}function Pk(V){var Z=++aM;return nl(V)+Z}var Ak=wb(function(V,Z){return V+Z},0),_k=tm("ceil"),qk=wb(function(V,Z){return V/Z},1),$k=tm("floor");function lx(V){return V&&V.length?xb(V,_l,Qt):d}function Vx(V,Z){return V&&V.length?xb(V,f(Z,2),Qt):d}function Wx(V){return ei(V,_l)}function dx(V,Z){return ei(V,f(Z,2))}function Zx(V){return V&&V.length?xb(V,_l,At):d}function bx(V,Z){return V&&V.length?xb(V,f(Z,2),At):d}var ax=wb(function(V,Z){return V*Z},1),tx=tm("round"),mx=wb(function(V,Z){return V-Z},0);function ex(V){return V&&V.length?zt(V,_l):0}function nx(V,Z){return V&&V.length?zt(V,f(Z,2)):0}return R.after=yr,R.ary=zG,R.assign=XJ,R.assignIn=OG,R.assignInWith=_b,R.assignWith=oJ,R.at=uJ,R.before=IG,R.bind=Xm,R.bindAll=Mk,R.bindKey=EG,R.castArray=fr,R.chain=xG,R.chunk=$T,R.compact=l5,R.concat=V5,R.cond=Tk,R.conforms=rk,R.constant=Mm,R.countBy=er,R.create=NJ,R.curry=LG,R.curryRight=wG,R.debounce=jG,R.defaults=FJ,R.defaultsDeep=UJ,R.defer=Hr,R.delay=zr,R.difference=W5,R.differenceBy=d5,R.differenceWith=Z5,R.drop=b5,R.dropRight=a5,R.dropRightWhile=t5,R.dropWhile=m5,R.fill=e5,R.filter=cr,R.flatMap=pr,R.flatMapDeep=hr,R.flatMapDepth=Rr,R.flatten=TG,R.flattenDeep=n5,R.flattenDepth=c5,R.flip=Ir,R.flow=kk,R.flowRight=xk,R.fromPairs=i5,R.functions=xJ,R.functionsIn=yJ,R.groupBy=Yr,R.initial=p5,R.intersection=h5,R.intersectionBy=R5,R.intersectionWith=Y5,R.invert=zJ,R.invertBy=IJ,R.invokeMap=Xr,R.iteratee=Tm,R.keyBy=or,R.keys=El,R.keysIn=Al,R.map=Cb,R.mapKeys=LJ,R.mapValues=wJ,R.matches=yk,R.matchesProperty=Hk,R.memoize=Db,R.merge=jJ,R.mergeWith=PG,R.method=zk,R.methodOf=Ik,R.mixin=rm,R.negate=Ob,R.nthArg=Lk,R.omit=BJ,R.omitBy=KJ,R.once=Er,R.orderBy=ur,R.over=wk,R.overArgs=Lr,R.overEvery=jk,R.overSome=Bk,R.partial=om,R.partialRight=BG,R.partition=Nr,R.pick=vJ,R.pickBy=AG,R.property=dp,R.propertyOf=Kk,R.pull=u5,R.pullAll=JG,R.pullAllBy=N5,R.pullAllWith=F5,R.pullAt=U5,R.range=vk,R.rangeRight=gk,R.rearg=wr,R.reject=Sr,R.remove=S5,R.rest=jr,R.reverse=Ym,R.sampleSize=Tr,R.set=fJ,R.setWith=CJ,R.shuffle=rr,R.slice=M5,R.sortBy=xr,R.sortedUniq=H5,R.sortedUniqBy=z5,R.split=pk,R.spread=Br,R.tail=I5,R.take=E5,R.takeRight=L5,R.takeRightWhile=w5,R.takeWhile=j5,R.tap=lr,R.throttle=Kr,R.thru=fb,R.toArray=CG,R.toPairs=_G,R.toPairsIn=qG,R.toPath=Ok,R.toPlainObject=DG,R.transform=QJ,R.unary=vr,R.union=B5,R.unionBy=K5,R.unionWith=v5,R.uniq=g5,R.uniqBy=f5,R.uniqWith=C5,R.unset=DJ,R.unzip=sm,R.unzipWith=kG,R.update=OJ,R.updateWith=PJ,R.values=od,R.valuesIn=AJ,R.without=Q5,R.words=Vp,R.wrap=gr,R.xor=D5,R.xorBy=O5,R.xorWith=P5,R.zip=A5,R.zipObject=_5,R.zipObjectDeep=q5,R.zipWith=$5,R.entries=_G,R.entriesIn=qG,R.extend=OG,R.extendWith=_b,rm(R,R),R.add=Ak,R.attempt=Wp,R.camelCase=lk,R.capitalize=$G,R.ceil=_k,R.clamp=_J,R.clone=Cr,R.cloneDeep=Dr,R.cloneDeepWith=Or,R.cloneWith=Qr,R.conformsTo=Pr,R.deburr=lp,R.defaultTo=Jk,R.divide=qk,R.endsWith=Vk,R.eq=FV,R.escape=Wk,R.escapeRegExp=dk,R.every=nr,R.find=ir,R.findIndex=SG,R.findKey=SJ,R.findLast=Gr,R.findLastIndex=MG,R.findLastKey=MJ,R.floor=$k,R.forEach=yG,R.forEachRight=HG,R.forIn=TJ,R.forInRight=rJ,R.forOwn=JJ,R.forOwnRight=kJ,R.get=Fm,R.gt=Ar,R.gte=_r,R.has=HJ,R.hasIn=Um,R.head=rG,R.identity=_l,R.includes=sr,R.indexOf=G5,R.inRange=qJ,R.invoke=EJ,R.isArguments=EW,R.isArray=_,R.isArrayBuffer=qr,R.isArrayLike=Pl,R.isArrayLikeObject=Tl,R.isBoolean=$r,R.isBuffer=nW,R.isDate=lJ,R.isElement=VJ,R.isEmpty=WJ,R.isEqual=dJ,R.isEqualWith=ZJ,R.isError=um,R.isFinite=bJ,R.isFunction=fV,R.isInteger=KG,R.isLength=Pb,R.isMap=vG,R.isMatch=aJ,R.isMatchWith=tJ,R.isNaN=mJ,R.isNative=eJ,R.isNil=cJ,R.isNull=nJ,R.isNumber=gG,R.isObject=Nl,R.isObjectLike=Sl,R.isPlainObject=eZ,R.isRegExp=Nm,R.isSafeInteger=iJ,R.isSet=fG,R.isString=Ab,R.isSymbol=WV,R.isTypedArray=Xd,R.isUndefined=GJ,R.isWeakMap=pJ,R.isWeakSet=hJ,R.join=s5,R.kebabCase=Zk,R.last=GV,R.lastIndexOf=X5,R.lowerCase=bk,R.lowerFirst=ak,R.lt=RJ,R.lte=YJ,R.max=lx,R.maxBy=Vx,R.mean=Wx,R.meanBy=dx,R.min=Zx,R.minBy=bx,R.stubArray=km,R.stubFalse=xm,R.stubObject=fk,R.stubString=Ck,R.stubTrue=Qk,R.multiply=ax,R.nth=o5,R.noConflict=Ek,R.noop=Jm,R.now=Qb,R.pad=tk,R.padEnd=mk,R.padStart=ek,R.parseInt=nk,R.random=$J,R.reduce=Fr,R.reduceRight=Ur,R.repeat=ck,R.replace=ik,R.result=gJ,R.round=tx,R.runInContext=F,R.sample=Mr,R.size=Jr,R.snakeCase=Gk,R.some=kr,R.sortedIndex=T5,R.sortedIndexBy=r5,R.sortedIndexOf=J5,R.sortedLastIndex=k5,R.sortedLastIndexBy=x5,R.sortedLastIndexOf=y5,R.startCase=hk,R.startsWith=Rk,R.subtract=mx,R.sum=ex,R.sumBy=nx,R.template=Yk,R.times=Dk,R.toFinite=CV,R.toInteger=$,R.toLength=QG,R.toLower=sk,R.toNumber=pV,R.toSafeInteger=sJ,R.toString=nl,R.toUpper=Xk,R.trim=ok,R.trimEnd=uk,R.trimStart=Nk,R.truncate=Fk,R.unescape=Uk,R.uniqueId=Pk,R.upperCase=Sk,R.upperFirst=Sm,R.each=yG,R.eachRight=HG,R.first=rG,rm(R,function(){var V={};return rV(R,function(Z,a){Gl.call(R.prototype,a)||(V[a]=Z)}),V}(),{chain:!1}),R.VERSION=b,mV(["bind","bindKey","curry","curryRight","partial","partialRight"],function(V){R[V].placeholder=R}),mV(["drop","take"],function(V,Z){bl.prototype[V]=function(a){a=a===d?1:zl($(a),0);var m=this.__filtered__&&!Z?new bl(this):this.clone();return m.__filtered__?m.__takeCount__=Kl(a,m.__takeCount__):m.__views__.push({size:Kl(a,TV),type:V+(m.__dir__<0?"Right":"")}),m},bl.prototype[V+"Right"]=function(a){return this.reverse()[V](a).reverse()}}),mV(["filter","map","takeWhile"],function(V,Z){var a=Z+1,m=a==ul||a==EV;bl.prototype[V]=function(c){var Y=this.clone();return Y.__iteratees__.push({iteratee:f(c,3),type:a}),Y.__filtered__=Y.__filtered__||m,Y}}),mV(["head","last"],function(V,Z){var a="take"+(Z?"Right":"");bl.prototype[V]=function(){return this[a](1).value()[0]}}),mV(["initial","tail"],function(V,Z){var a="drop"+(Z?"":"Right");bl.prototype[V]=function(){return this.__filtered__?new bl(this):this[a](1)}}),bl.prototype.compact=function(){return this.filter(_l)},bl.prototype.find=function(V){return this.filter(V).head()},bl.prototype.findLast=function(V){return this.reverse().find(V)},bl.prototype.invokeMap=Wl(function(V,Z){return typeof V=="function"?new bl(this):this.map(function(a){return dZ(a,V,Z)})}),bl.prototype.reject=function(V){return this.filter(Ob(f(V)))},bl.prototype.slice=function(V,Z){V=$(V);var a=this;return a.__filtered__&&(V>0||Z<0)?new bl(a):(V<0?a=a.takeRight(-V):V&&(a=a.drop(V)),Z!==d&&(Z=$(Z),a=Z<0?a.dropRight(-Z):a.take(Z-V)),a)},bl.prototype.takeRightWhile=function(V){return this.reverse().takeWhile(V).reverse()},bl.prototype.toArray=function(){return this.take(TV)},rV(bl.prototype,function(V,Z){var a=/^(?:filter|find|map|reject)|While$/.test(Z),m=/^(?:head|last)$/.test(Z),c=R[m?"take"+(Z=="last"?"Right":""):Z],Y=m||/^find/.test(Z);c&&(R.prototype[Z]=function(){var u=this.__wrapped__,N=m?[1]:arguments,U=u instanceof bl,y=N[0],H=U||_(u),E=function(Zl){var tl=c.apply(R,dW([Zl],N));return m&&j?tl[0]:tl};H&&a&&typeof y=="function"&&y.length!=1&&(U=H=!1);var j=this.__chain__,g=!!this.__actions__.length,Q=Y&&!j,ll=U&&!g;if(!Y&&H){u=ll?u:new bl(this);var D=V.apply(u,N);return D.__actions__.push({func:fb,args:[E],thisArg:d}),new nV(D,j)}return Q&&ll?V.apply(this,N):(D=this.thru(E),Q?m?D.value()[0]:D.value():D)})}),mV(["pop","push","shift","sort","splice","unshift"],function(V){var Z=Rb[V],a=/^(?:push|sort|unshift)$/.test(V)?"tap":"thru",m=/^(?:pop|shift)$/.test(V);R.prototype[V]=function(){var c=arguments;if(m&&!this.__chain__){var Y=this.value();return Z.apply(_(Y)?Y:[],c)}return this[a](function(u){return Z.apply(_(u)?u:[],c)})}}),rV(bl.prototype,function(V,Z){var a=R[Z];if(a){var m=a.name+"";Gl.call(pd,m)||(pd[m]=[]),pd[m].push({name:Z,func:a})}}),pd[Lb(d,J).name]=[{name:"wrapper",func:d}],bl.prototype.clone=UM,bl.prototype.reverse=SM,bl.prototype.value=MM,R.prototype.at=Vr,R.prototype.chain=Wr,R.prototype.commit=dr,R.prototype.next=Zr,R.prototype.plant=ar,R.prototype.reverse=tr,R.prototype.toJSON=R.prototype.valueOf=R.prototype.value=mr,R.prototype.first=R.prototype.head,Ad&&(R.prototype[Ad]=br),R},cd=dM();rW?((rW.exports=cd)._=cd,Tt._=cd):wl._=cd}).call(IV)}(zZ,zZ.exports),zZ.exports;const qe="KGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIFZ0KG4pe3JldHVybiBuJiZuLl9fZXNNb2R1bGUmJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLCJkZWZhdWx0Iik/bi5kZWZhdWx0Om59dmFyIFBlPXt9OyhmdW5jdGlvbihuKXt2YXIgcj1mdW5jdGlvbigpe3ZhciBlPW5ldyBEYXRlLHQ9NCxpPTMsZj0yLHU9MSx2PXQseT17c2V0TG9nTGV2ZWw6ZnVuY3Rpb24obSl7bT09dGhpcy5kZWJ1Zz92PXU6bT09dGhpcy5pbmZvP3Y9ZjptPT10aGlzLndhcm4/dj1pOihtPT10aGlzLmVycm9yLHY9dCl9LGRlYnVnOmZ1bmN0aW9uKG0sYil7Y29uc29sZS5kZWJ1Zz09PXZvaWQgMCYmKGNvbnNvbGUuZGVidWc9Y29uc29sZS5sb2cpLHU+PXYmJmNvbnNvbGUuZGVidWcoIlsiK3IuZ2V0RHVyYXRpb25TdHJpbmcobmV3IERhdGUtZSwxZTMpKyJdIiwiWyIrbSsiXSIsYil9LGxvZzpmdW5jdGlvbihtLGIpe3RoaXMuZGVidWcobS5tc2cpfSxpbmZvOmZ1bmN0aW9uKG0sYil7Zj49diYmY29uc29sZS5pbmZvKCJbIityLmdldER1cmF0aW9uU3RyaW5nKG5ldyBEYXRlLWUsMWUzKSsiXSIsIlsiK20rIl0iLGIpfSx3YXJuOmZ1bmN0aW9uKG0sYil7aT49diYmY29uc29sZS53YXJuKCJbIityLmdldER1cmF0aW9uU3RyaW5nKG5ldyBEYXRlLWUsMWUzKSsiXSIsIlsiK20rIl0iLGIpfSxlcnJvcjpmdW5jdGlvbihtLGIpe3Q+PXYmJmNvbnNvbGUuZXJyb3IoIlsiK3IuZ2V0RHVyYXRpb25TdHJpbmcobmV3IERhdGUtZSwxZTMpKyJdIiwiWyIrbSsiXSIsYil9fTtyZXR1cm4geX0oKTtyLmdldER1cmF0aW9uU3RyaW5nPWZ1bmN0aW9uKGUsdCl7dmFyIGk7ZnVuY3Rpb24gZih4LFMpe2Zvcih2YXIgVT0iIit4LEU9VS5zcGxpdCgiLiIpO0VbMF0ubGVuZ3RoPFM7KUVbMF09IjAiK0VbMF07cmV0dXJuIEUuam9pbigiLiIpfWU8MD8oaT0hMCxlPS1lKTppPSExO3ZhciB1PXR8fDEsdj1lL3UseT1NYXRoLmZsb29yKHYvMzYwMCk7di09eSozNjAwO3ZhciBtPU1hdGguZmxvb3Iodi82MCk7di09bSo2MDt2YXIgYj12KjFlMztyZXR1cm4gdj1NYXRoLmZsb29yKHYpLGItPXYqMWUzLGI9TWF0aC5mbG9vcihiKSwoaT8iLSI6IiIpK3krIjoiK2YobSwyKSsiOiIrZih2LDIpKyIuIitmKGIsMyl9LHIucHJpbnRSYW5nZXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5sZW5ndGg7aWYodD4wKXtmb3IodmFyIGk9IiIsZj0wO2Y8dDtmKyspZj4wJiYoaSs9IiwiKSxpKz0iWyIrci5nZXREdXJhdGlvblN0cmluZyhlLnN0YXJ0KGYpKSsiLCIrci5nZXREdXJhdGlvblN0cmluZyhlLmVuZChmKSkrIl0iO3JldHVybiBpfWVsc2UgcmV0dXJuIihlbXB0eSkifSxuLkxvZz1yO3ZhciBhPWZ1bmN0aW9uKGUpe2lmKGUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcil0aGlzLmJ1ZmZlcj1lLHRoaXMuZGF0YXZpZXc9bmV3IERhdGFWaWV3KGUpO2Vsc2UgdGhyb3ciTmVlZHMgYW4gYXJyYXkgYnVmZmVyIjt0aGlzLnBvc2l0aW9uPTB9O2EucHJvdG90eXBlLmdldFBvc2l0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucG9zaXRpb259LGEucHJvdG90eXBlLmdldEVuZFBvc2l0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYnVmZmVyLmJ5dGVMZW5ndGh9LGEucHJvdG90eXBlLmdldExlbmd0aD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmJ1ZmZlci5ieXRlTGVuZ3RofSxhLnByb3RvdHlwZS5zZWVrPWZ1bmN0aW9uKGUpe3ZhciB0PU1hdGgubWF4KDAsTWF0aC5taW4odGhpcy5idWZmZXIuYnl0ZUxlbmd0aCxlKSk7cmV0dXJuIHRoaXMucG9zaXRpb249aXNOYU4odCl8fCFpc0Zpbml0ZSh0KT8wOnQsITB9LGEucHJvdG90eXBlLmlzRW9zPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0UG9zaXRpb24oKT49dGhpcy5nZXRFbmRQb3NpdGlvbigpfSxhLnByb3RvdHlwZS5yZWFkQW55SW50PWZ1bmN0aW9uKGUsdCl7dmFyIGk9MDtpZih0aGlzLnBvc2l0aW9uK2U8PXRoaXMuYnVmZmVyLmJ5dGVMZW5ndGgpe3N3aXRjaChlKXtjYXNlIDE6dD9pPXRoaXMuZGF0YXZpZXcuZ2V0SW50OCh0aGlzLnBvc2l0aW9uKTppPXRoaXMuZGF0YXZpZXcuZ2V0VWludDgodGhpcy5wb3NpdGlvbik7YnJlYWs7Y2FzZSAyOnQ/aT10aGlzLmRhdGF2aWV3LmdldEludDE2KHRoaXMucG9zaXRpb24pOmk9dGhpcy5kYXRhdmlldy5nZXRVaW50MTYodGhpcy5wb3NpdGlvbik7YnJlYWs7Y2FzZSAzOmlmKHQpdGhyb3ciTm8gbWV0aG9kIGZvciByZWFkaW5nIHNpZ25lZCAyNCBiaXRzIHZhbHVlcyI7aT10aGlzLmRhdGF2aWV3LmdldFVpbnQ4KHRoaXMucG9zaXRpb24pPDwxNixpfD10aGlzLmRhdGF2aWV3LmdldFVpbnQ4KHRoaXMucG9zaXRpb24rMSk8PDgsaXw9dGhpcy5kYXRhdmlldy5nZXRVaW50OCh0aGlzLnBvc2l0aW9uKzIpO2JyZWFrO2Nhc2UgNDp0P2k9dGhpcy5kYXRhdmlldy5nZXRJbnQzMih0aGlzLnBvc2l0aW9uKTppPXRoaXMuZGF0YXZpZXcuZ2V0VWludDMyKHRoaXMucG9zaXRpb24pO2JyZWFrO2Nhc2UgODppZih0KXRocm93Ik5vIG1ldGhvZCBmb3IgcmVhZGluZyBzaWduZWQgNjQgYml0cyB2YWx1ZXMiO2k9dGhpcy5kYXRhdmlldy5nZXRVaW50MzIodGhpcy5wb3NpdGlvbik8PDMyLGl8PXRoaXMuZGF0YXZpZXcuZ2V0VWludDMyKHRoaXMucG9zaXRpb24rNCk7YnJlYWs7ZGVmYXVsdDp0aHJvdyJyZWFkSW50IG1ldGhvZCBub3QgaW1wbGVtZW50ZWQgZm9yIHNpemU6ICIrZX1yZXR1cm4gdGhpcy5wb3NpdGlvbis9ZSxpfWVsc2UgdGhyb3ciTm90IGVub3VnaCBieXRlcyBpbiBidWZmZXIifSxhLnByb3RvdHlwZS5yZWFkVWludDg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZWFkQW55SW50KDEsITEpfSxhLnByb3RvdHlwZS5yZWFkVWludDE2PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVhZEFueUludCgyLCExKX0sYS5wcm90b3R5cGUucmVhZFVpbnQyND1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlYWRBbnlJbnQoMywhMSl9LGEucHJvdG90eXBlLnJlYWRVaW50MzI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZWFkQW55SW50KDQsITEpfSxhLnByb3RvdHlwZS5yZWFkVWludDY0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVhZEFueUludCg4LCExKX0sYS5wcm90b3R5cGUucmVhZFN0cmluZz1mdW5jdGlvbihlKXtpZih0aGlzLnBvc2l0aW9uK2U8PXRoaXMuYnVmZmVyLmJ5dGVMZW5ndGgpe2Zvcih2YXIgdD0iIixpPTA7aTxlO2krKyl0Kz1TdHJpbmcuZnJvbUNoYXJDb2RlKHRoaXMucmVhZFVpbnQ4KCkpO3JldHVybiB0fWVsc2UgdGhyb3ciTm90IGVub3VnaCBieXRlcyBpbiBidWZmZXIifSxhLnByb3RvdHlwZS5yZWFkQ1N0cmluZz1mdW5jdGlvbigpe2Zvcih2YXIgZT1bXTs7KXt2YXIgdD10aGlzLnJlYWRVaW50OCgpO2lmKHQhPT0wKWUucHVzaCh0KTtlbHNlIGJyZWFrfXJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsZSl9LGEucHJvdG90eXBlLnJlYWRJbnQ4PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVhZEFueUludCgxLCEwKX0sYS5wcm90b3R5cGUucmVhZEludDE2PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVhZEFueUludCgyLCEwKX0sYS5wcm90b3R5cGUucmVhZEludDMyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVhZEFueUludCg0LCEwKX0sYS5wcm90b3R5cGUucmVhZEludDY0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVhZEFueUludCg4LCExKX0sYS5wcm90b3R5cGUucmVhZFVpbnQ4QXJyYXk9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PW5ldyBVaW50OEFycmF5KGUpLGk9MDtpPGU7aSsrKXRbaV09dGhpcy5yZWFkVWludDgoKTtyZXR1cm4gdH0sYS5wcm90b3R5cGUucmVhZEludDE2QXJyYXk9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PW5ldyBJbnQxNkFycmF5KGUpLGk9MDtpPGU7aSsrKXRbaV09dGhpcy5yZWFkSW50MTYoKTtyZXR1cm4gdH0sYS5wcm90b3R5cGUucmVhZFVpbnQxNkFycmF5PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1uZXcgSW50MTZBcnJheShlKSxpPTA7aTxlO2krKyl0W2ldPXRoaXMucmVhZFVpbnQxNigpO3JldHVybiB0fSxhLnByb3RvdHlwZS5yZWFkVWludDMyQXJyYXk9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PW5ldyBVaW50MzJBcnJheShlKSxpPTA7aTxlO2krKyl0W2ldPXRoaXMucmVhZFVpbnQzMigpO3JldHVybiB0fSxhLnByb3RvdHlwZS5yZWFkSW50MzJBcnJheT1mdW5jdGlvbihlKXtmb3IodmFyIHQ9bmV3IEludDMyQXJyYXkoZSksaT0wO2k8ZTtpKyspdFtpXT10aGlzLnJlYWRJbnQzMigpO3JldHVybiB0fSxuLk1QNEJveFN0cmVhbT1hO3ZhciBzPWZ1bmN0aW9uKGUsdCxpKXt0aGlzLl9ieXRlT2Zmc2V0PXR8fDAsZSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyP3RoaXMuYnVmZmVyPWU6dHlwZW9mIGU9PSJvYmplY3QiPyh0aGlzLmRhdGFWaWV3PWUsdCYmKHRoaXMuX2J5dGVPZmZzZXQrPXQpKTp0aGlzLmJ1ZmZlcj1uZXcgQXJyYXlCdWZmZXIoZXx8MCksdGhpcy5wb3NpdGlvbj0wLHRoaXMuZW5kaWFubmVzcz1pPz9zLkxJVFRMRV9FTkRJQU59O3MucHJvdG90eXBlPXt9LHMucHJvdG90eXBlLmdldFBvc2l0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucG9zaXRpb259LHMucHJvdG90eXBlLl9yZWFsbG9jPWZ1bmN0aW9uKGUpe2lmKHRoaXMuX2R5bmFtaWNTaXplKXt2YXIgdD10aGlzLl9ieXRlT2Zmc2V0K3RoaXMucG9zaXRpb24rZSxpPXRoaXMuX2J1ZmZlci5ieXRlTGVuZ3RoO2lmKHQ8PWkpe3Q+dGhpcy5fYnl0ZUxlbmd0aCYmKHRoaXMuX2J5dGVMZW5ndGg9dCk7cmV0dXJufWZvcihpPDEmJihpPTEpO3Q+aTspaSo9Mjt2YXIgZj1uZXcgQXJyYXlCdWZmZXIoaSksdT1uZXcgVWludDhBcnJheSh0aGlzLl9idWZmZXIpLHY9bmV3IFVpbnQ4QXJyYXkoZiwwLHUubGVuZ3RoKTt2LnNldCh1KSx0aGlzLmJ1ZmZlcj1mLHRoaXMuX2J5dGVMZW5ndGg9dH19LHMucHJvdG90eXBlLl90cmltQWxsb2M9ZnVuY3Rpb24oKXtpZih0aGlzLl9ieXRlTGVuZ3RoIT10aGlzLl9idWZmZXIuYnl0ZUxlbmd0aCl7dmFyIGU9bmV3IEFycmF5QnVmZmVyKHRoaXMuX2J5dGVMZW5ndGgpLHQ9bmV3IFVpbnQ4QXJyYXkoZSksaT1uZXcgVWludDhBcnJheSh0aGlzLl9idWZmZXIsMCx0Lmxlbmd0aCk7dC5zZXQoaSksdGhpcy5idWZmZXI9ZX19LHMuQklHX0VORElBTj0hMSxzLkxJVFRMRV9FTkRJQU49ITAscy5wcm90b3R5cGUuX2J5dGVMZW5ndGg9MCxPYmplY3QuZGVmaW5lUHJvcGVydHkocy5wcm90b3R5cGUsImJ5dGVMZW5ndGgiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYnl0ZUxlbmd0aC10aGlzLl9ieXRlT2Zmc2V0fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzLnByb3RvdHlwZSwiYnVmZmVyIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3RyaW1BbGxvYygpLHRoaXMuX2J1ZmZlcn0sc2V0OmZ1bmN0aW9uKGUpe3RoaXMuX2J1ZmZlcj1lLHRoaXMuX2RhdGFWaWV3PW5ldyBEYXRhVmlldyh0aGlzLl9idWZmZXIsdGhpcy5fYnl0ZU9mZnNldCksdGhpcy5fYnl0ZUxlbmd0aD10aGlzLl9idWZmZXIuYnl0ZUxlbmd0aH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkocy5wcm90b3R5cGUsImJ5dGVPZmZzZXQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYnl0ZU9mZnNldH0sc2V0OmZ1bmN0aW9uKGUpe3RoaXMuX2J5dGVPZmZzZXQ9ZSx0aGlzLl9kYXRhVmlldz1uZXcgRGF0YVZpZXcodGhpcy5fYnVmZmVyLHRoaXMuX2J5dGVPZmZzZXQpLHRoaXMuX2J5dGVMZW5ndGg9dGhpcy5fYnVmZmVyLmJ5dGVMZW5ndGh9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHMucHJvdG90eXBlLCJkYXRhVmlldyIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kYXRhVmlld30sc2V0OmZ1bmN0aW9uKGUpe3RoaXMuX2J5dGVPZmZzZXQ9ZS5ieXRlT2Zmc2V0LHRoaXMuX2J1ZmZlcj1lLmJ1ZmZlcix0aGlzLl9kYXRhVmlldz1uZXcgRGF0YVZpZXcodGhpcy5fYnVmZmVyLHRoaXMuX2J5dGVPZmZzZXQpLHRoaXMuX2J5dGVMZW5ndGg9dGhpcy5fYnl0ZU9mZnNldCtlLmJ5dGVMZW5ndGh9fSkscy5wcm90b3R5cGUuc2Vlaz1mdW5jdGlvbihlKXt2YXIgdD1NYXRoLm1heCgwLE1hdGgubWluKHRoaXMuYnl0ZUxlbmd0aCxlKSk7dGhpcy5wb3NpdGlvbj1pc05hTih0KXx8IWlzRmluaXRlKHQpPzA6dH0scy5wcm90b3R5cGUuaXNFb2Y9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wb3NpdGlvbj49dGhpcy5fYnl0ZUxlbmd0aH0scy5wcm90b3R5cGUubWFwVWludDhBcnJheT1mdW5jdGlvbihlKXt0aGlzLl9yZWFsbG9jKGUqMSk7dmFyIHQ9bmV3IFVpbnQ4QXJyYXkodGhpcy5fYnVmZmVyLHRoaXMuYnl0ZU9mZnNldCt0aGlzLnBvc2l0aW9uLGUpO3JldHVybiB0aGlzLnBvc2l0aW9uKz1lKjEsdH0scy5wcm90b3R5cGUucmVhZEludDMyQXJyYXk9ZnVuY3Rpb24oZSx0KXtlPWU/P3RoaXMuYnl0ZUxlbmd0aC10aGlzLnBvc2l0aW9uLzQ7dmFyIGk9bmV3IEludDMyQXJyYXkoZSk7cmV0dXJuIHMubWVtY3B5KGkuYnVmZmVyLDAsdGhpcy5idWZmZXIsdGhpcy5ieXRlT2Zmc2V0K3RoaXMucG9zaXRpb24sZSppLkJZVEVTX1BFUl9FTEVNRU5UKSxzLmFycmF5VG9OYXRpdmUoaSx0Pz90aGlzLmVuZGlhbm5lc3MpLHRoaXMucG9zaXRpb24rPWkuYnl0ZUxlbmd0aCxpfSxzLnByb3RvdHlwZS5yZWFkSW50MTZBcnJheT1mdW5jdGlvbihlLHQpe2U9ZT8/dGhpcy5ieXRlTGVuZ3RoLXRoaXMucG9zaXRpb24vMjt2YXIgaT1uZXcgSW50MTZBcnJheShlKTtyZXR1cm4gcy5tZW1jcHkoaS5idWZmZXIsMCx0aGlzLmJ1ZmZlcix0aGlzLmJ5dGVPZmZzZXQrdGhpcy5wb3NpdGlvbixlKmkuQllURVNfUEVSX0VMRU1FTlQpLHMuYXJyYXlUb05hdGl2ZShpLHQ/P3RoaXMuZW5kaWFubmVzcyksdGhpcy5wb3NpdGlvbis9aS5ieXRlTGVuZ3RoLGl9LHMucHJvdG90eXBlLnJlYWRJbnQ4QXJyYXk9ZnVuY3Rpb24oZSl7ZT1lPz90aGlzLmJ5dGVMZW5ndGgtdGhpcy5wb3NpdGlvbjt2YXIgdD1uZXcgSW50OEFycmF5KGUpO3JldHVybiBzLm1lbWNweSh0LmJ1ZmZlciwwLHRoaXMuYnVmZmVyLHRoaXMuYnl0ZU9mZnNldCt0aGlzLnBvc2l0aW9uLGUqdC5CWVRFU19QRVJfRUxFTUVOVCksdGhpcy5wb3NpdGlvbis9dC5ieXRlTGVuZ3RoLHR9LHMucHJvdG90eXBlLnJlYWRVaW50MzJBcnJheT1mdW5jdGlvbihlLHQpe2U9ZT8/dGhpcy5ieXRlTGVuZ3RoLXRoaXMucG9zaXRpb24vNDt2YXIgaT1uZXcgVWludDMyQXJyYXkoZSk7cmV0dXJuIHMubWVtY3B5KGkuYnVmZmVyLDAsdGhpcy5idWZmZXIsdGhpcy5ieXRlT2Zmc2V0K3RoaXMucG9zaXRpb24sZSppLkJZVEVTX1BFUl9FTEVNRU5UKSxzLmFycmF5VG9OYXRpdmUoaSx0Pz90aGlzLmVuZGlhbm5lc3MpLHRoaXMucG9zaXRpb24rPWkuYnl0ZUxlbmd0aCxpfSxzLnByb3RvdHlwZS5yZWFkVWludDE2QXJyYXk9ZnVuY3Rpb24oZSx0KXtlPWU/P3RoaXMuYnl0ZUxlbmd0aC10aGlzLnBvc2l0aW9uLzI7dmFyIGk9bmV3IFVpbnQxNkFycmF5KGUpO3JldHVybiBzLm1lbWNweShpLmJ1ZmZlciwwLHRoaXMuYnVmZmVyLHRoaXMuYnl0ZU9mZnNldCt0aGlzLnBvc2l0aW9uLGUqaS5CWVRFU19QRVJfRUxFTUVOVCkscy5hcnJheVRvTmF0aXZlKGksdD8/dGhpcy5lbmRpYW5uZXNzKSx0aGlzLnBvc2l0aW9uKz1pLmJ5dGVMZW5ndGgsaX0scy5wcm90b3R5cGUucmVhZFVpbnQ4QXJyYXk9ZnVuY3Rpb24oZSl7ZT1lPz90aGlzLmJ5dGVMZW5ndGgtdGhpcy5wb3NpdGlvbjt2YXIgdD1uZXcgVWludDhBcnJheShlKTtyZXR1cm4gcy5tZW1jcHkodC5idWZmZXIsMCx0aGlzLmJ1ZmZlcix0aGlzLmJ5dGVPZmZzZXQrdGhpcy5wb3NpdGlvbixlKnQuQllURVNfUEVSX0VMRU1FTlQpLHRoaXMucG9zaXRpb24rPXQuYnl0ZUxlbmd0aCx0fSxzLnByb3RvdHlwZS5yZWFkRmxvYXQ2NEFycmF5PWZ1bmN0aW9uKGUsdCl7ZT1lPz90aGlzLmJ5dGVMZW5ndGgtdGhpcy5wb3NpdGlvbi84O3ZhciBpPW5ldyBGbG9hdDY0QXJyYXkoZSk7cmV0dXJuIHMubWVtY3B5KGkuYnVmZmVyLDAsdGhpcy5idWZmZXIsdGhpcy5ieXRlT2Zmc2V0K3RoaXMucG9zaXRpb24sZSppLkJZVEVTX1BFUl9FTEVNRU5UKSxzLmFycmF5VG9OYXRpdmUoaSx0Pz90aGlzLmVuZGlhbm5lc3MpLHRoaXMucG9zaXRpb24rPWkuYnl0ZUxlbmd0aCxpfSxzLnByb3RvdHlwZS5yZWFkRmxvYXQzMkFycmF5PWZ1bmN0aW9uKGUsdCl7ZT1lPz90aGlzLmJ5dGVMZW5ndGgtdGhpcy5wb3NpdGlvbi80O3ZhciBpPW5ldyBGbG9hdDMyQXJyYXkoZSk7cmV0dXJuIHMubWVtY3B5KGkuYnVmZmVyLDAsdGhpcy5idWZmZXIsdGhpcy5ieXRlT2Zmc2V0K3RoaXMucG9zaXRpb24sZSppLkJZVEVTX1BFUl9FTEVNRU5UKSxzLmFycmF5VG9OYXRpdmUoaSx0Pz90aGlzLmVuZGlhbm5lc3MpLHRoaXMucG9zaXRpb24rPWkuYnl0ZUxlbmd0aCxpfSxzLnByb3RvdHlwZS5yZWFkSW50MzI9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fZGF0YVZpZXcuZ2V0SW50MzIodGhpcy5wb3NpdGlvbixlPz90aGlzLmVuZGlhbm5lc3MpO3JldHVybiB0aGlzLnBvc2l0aW9uKz00LHR9LHMucHJvdG90eXBlLnJlYWRJbnQxNj1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9kYXRhVmlldy5nZXRJbnQxNih0aGlzLnBvc2l0aW9uLGU/P3RoaXMuZW5kaWFubmVzcyk7cmV0dXJuIHRoaXMucG9zaXRpb24rPTIsdH0scy5wcm90b3R5cGUucmVhZEludDg9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9kYXRhVmlldy5nZXRJbnQ4KHRoaXMucG9zaXRpb24pO3JldHVybiB0aGlzLnBvc2l0aW9uKz0xLGV9LHMucHJvdG90eXBlLnJlYWRVaW50MzI9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fZGF0YVZpZXcuZ2V0VWludDMyKHRoaXMucG9zaXRpb24sZT8/dGhpcy5lbmRpYW5uZXNzKTtyZXR1cm4gdGhpcy5wb3NpdGlvbis9NCx0fSxzLnByb3RvdHlwZS5yZWFkVWludDE2PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX2RhdGFWaWV3LmdldFVpbnQxNih0aGlzLnBvc2l0aW9uLGU/P3RoaXMuZW5kaWFubmVzcyk7cmV0dXJuIHRoaXMucG9zaXRpb24rPTIsdH0scy5wcm90b3R5cGUucmVhZFVpbnQ4PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fZGF0YVZpZXcuZ2V0VWludDgodGhpcy5wb3NpdGlvbik7cmV0dXJuIHRoaXMucG9zaXRpb24rPTEsZX0scy5wcm90b3R5cGUucmVhZEZsb2F0MzI9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fZGF0YVZpZXcuZ2V0RmxvYXQzMih0aGlzLnBvc2l0aW9uLGU/P3RoaXMuZW5kaWFubmVzcyk7cmV0dXJuIHRoaXMucG9zaXRpb24rPTQsdH0scy5wcm90b3R5cGUucmVhZEZsb2F0NjQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fZGF0YVZpZXcuZ2V0RmxvYXQ2NCh0aGlzLnBvc2l0aW9uLGU/P3RoaXMuZW5kaWFubmVzcyk7cmV0dXJuIHRoaXMucG9zaXRpb24rPTgsdH0scy5lbmRpYW5uZXNzPW5ldyBJbnQ4QXJyYXkobmV3IEludDE2QXJyYXkoWzFdKS5idWZmZXIpWzBdPjAscy5tZW1jcHk9ZnVuY3Rpb24oZSx0LGksZix1KXt2YXIgdj1uZXcgVWludDhBcnJheShlLHQsdSkseT1uZXcgVWludDhBcnJheShpLGYsdSk7di5zZXQoeSl9LHMuYXJyYXlUb05hdGl2ZT1mdW5jdGlvbihlLHQpe3JldHVybiB0PT10aGlzLmVuZGlhbm5lc3M/ZTp0aGlzLmZsaXBBcnJheUVuZGlhbm5lc3MoZSl9LHMubmF0aXZlVG9FbmRpYW49ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5lbmRpYW5uZXNzPT10P2U6dGhpcy5mbGlwQXJyYXlFbmRpYW5uZXNzKGUpfSxzLmZsaXBBcnJheUVuZGlhbm5lc3M9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PW5ldyBVaW50OEFycmF5KGUuYnVmZmVyLGUuYnl0ZU9mZnNldCxlLmJ5dGVMZW5ndGgpLGk9MDtpPGUuYnl0ZUxlbmd0aDtpKz1lLkJZVEVTX1BFUl9FTEVNRU5UKWZvcih2YXIgZj1pK2UuQllURVNfUEVSX0VMRU1FTlQtMSx1PWk7Zj51O2YtLSx1Kyspe3ZhciB2PXRbdV07dFt1XT10W2ZdLHRbZl09dn1yZXR1cm4gZX0scy5wcm90b3R5cGUuZmFpbHVyZVBvc2l0aW9uPTAsU3RyaW5nLmZyb21DaGFyQ29kZVVpbnQ4PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1bXSxpPTA7aTxlLmxlbmd0aDtpKyspdFtpXT1lW2ldO3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsdCl9LHMucHJvdG90eXBlLnJlYWRTdHJpbmc9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD09bnVsbHx8dD09IkFTQ0lJIj9TdHJpbmcuZnJvbUNoYXJDb2RlVWludDguYXBwbHkobnVsbCxbdGhpcy5tYXBVaW50OEFycmF5KGU/P3RoaXMuYnl0ZUxlbmd0aC10aGlzLnBvc2l0aW9uKV0pOm5ldyBUZXh0RGVjb2Rlcih0KS5kZWNvZGUodGhpcy5tYXBVaW50OEFycmF5KGUpKX0scy5wcm90b3R5cGUucmVhZENTdHJpbmc9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5ieXRlTGVuZ3RoLXRoaXMucG9zaXRpb24saT1uZXcgVWludDhBcnJheSh0aGlzLl9idWZmZXIsdGhpcy5fYnl0ZU9mZnNldCt0aGlzLnBvc2l0aW9uKSxmPXQ7ZSE9bnVsbCYmKGY9TWF0aC5taW4oZSx0KSk7Zm9yKHZhciB1PTA7dTxmJiZpW3VdIT09MDt1KyspO3ZhciB2PVN0cmluZy5mcm9tQ2hhckNvZGVVaW50OC5hcHBseShudWxsLFt0aGlzLm1hcFVpbnQ4QXJyYXkodSldKTtyZXR1cm4gZSE9bnVsbD90aGlzLnBvc2l0aW9uKz1mLXU6dSE9dCYmKHRoaXMucG9zaXRpb24rPTEpLHZ9O3ZhciBsPU1hdGgucG93KDIsMzIpO3MucHJvdG90eXBlLnJlYWRJbnQ2ND1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlYWRJbnQzMigpKmwrdGhpcy5yZWFkVWludDMyKCl9LHMucHJvdG90eXBlLnJlYWRVaW50NjQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZWFkVWludDMyKCkqbCt0aGlzLnJlYWRVaW50MzIoKX0scy5wcm90b3R5cGUucmVhZEludDY0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVhZFVpbnQzMigpKmwrdGhpcy5yZWFkVWludDMyKCl9LHMucHJvdG90eXBlLnJlYWRVaW50MjQ9ZnVuY3Rpb24oKXtyZXR1cm4odGhpcy5yZWFkVWludDgoKTw8MTYpKyh0aGlzLnJlYWRVaW50OCgpPDw4KSt0aGlzLnJlYWRVaW50OCgpfSxuLkRhdGFTdHJlYW09cyxzLnByb3RvdHlwZS5zYXZlPWZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBCbG9iKFt0aGlzLmJ1ZmZlcl0pO2lmKHdpbmRvdy5VUkwmJlVSTC5jcmVhdGVPYmplY3RVUkwpe3ZhciBpPXdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKHQpLGY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpO2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZiksZi5zZXRBdHRyaWJ1dGUoImhyZWYiLGkpLGYuc2V0QXR0cmlidXRlKCJkb3dubG9hZCIsZSksZi5zZXRBdHRyaWJ1dGUoInRhcmdldCIsIl9zZWxmIiksZi5jbGljaygpLHdpbmRvdy5VUkwucmV2b2tlT2JqZWN0VVJMKGkpfWVsc2UgdGhyb3ciRGF0YVN0cmVhbS5zYXZlOiBDYW4ndCBjcmVhdGUgb2JqZWN0IFVSTC4ifSxzLnByb3RvdHlwZS5fZHluYW1pY1NpemU9ITAsT2JqZWN0LmRlZmluZVByb3BlcnR5KHMucHJvdG90eXBlLCJkeW5hbWljU2l6ZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9keW5hbWljU2l6ZX0sc2V0OmZ1bmN0aW9uKGUpe2V8fHRoaXMuX3RyaW1BbGxvYygpLHRoaXMuX2R5bmFtaWNTaXplPWV9fSkscy5wcm90b3R5cGUuc2hpZnQ9ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IEFycmF5QnVmZmVyKHRoaXMuX2J5dGVMZW5ndGgtZSksaT1uZXcgVWludDhBcnJheSh0KSxmPW5ldyBVaW50OEFycmF5KHRoaXMuX2J1ZmZlcixlLGkubGVuZ3RoKTtpLnNldChmKSx0aGlzLmJ1ZmZlcj10LHRoaXMucG9zaXRpb24tPWV9LHMucHJvdG90eXBlLndyaXRlSW50MzJBcnJheT1mdW5jdGlvbihlLHQpe2lmKHRoaXMuX3JlYWxsb2MoZS5sZW5ndGgqNCksZSBpbnN0YW5jZW9mIEludDMyQXJyYXkmJnRoaXMuYnl0ZU9mZnNldCt0aGlzLnBvc2l0aW9uJWUuQllURVNfUEVSX0VMRU1FTlQ9PT0wKXMubWVtY3B5KHRoaXMuX2J1ZmZlcix0aGlzLmJ5dGVPZmZzZXQrdGhpcy5wb3NpdGlvbixlLmJ1ZmZlciwwLGUuYnl0ZUxlbmd0aCksdGhpcy5tYXBJbnQzMkFycmF5KGUubGVuZ3RoLHQpO2Vsc2UgZm9yKHZhciBpPTA7aTxlLmxlbmd0aDtpKyspdGhpcy53cml0ZUludDMyKGVbaV0sdCl9LHMucHJvdG90eXBlLndyaXRlSW50MTZBcnJheT1mdW5jdGlvbihlLHQpe2lmKHRoaXMuX3JlYWxsb2MoZS5sZW5ndGgqMiksZSBpbnN0YW5jZW9mIEludDE2QXJyYXkmJnRoaXMuYnl0ZU9mZnNldCt0aGlzLnBvc2l0aW9uJWUuQllURVNfUEVSX0VMRU1FTlQ9PT0wKXMubWVtY3B5KHRoaXMuX2J1ZmZlcix0aGlzLmJ5dGVPZmZzZXQrdGhpcy5wb3NpdGlvbixlLmJ1ZmZlciwwLGUuYnl0ZUxlbmd0aCksdGhpcy5tYXBJbnQxNkFycmF5KGUubGVuZ3RoLHQpO2Vsc2UgZm9yKHZhciBpPTA7aTxlLmxlbmd0aDtpKyspdGhpcy53cml0ZUludDE2KGVbaV0sdCl9LHMucHJvdG90eXBlLndyaXRlSW50OEFycmF5PWZ1bmN0aW9uKGUpe2lmKHRoaXMuX3JlYWxsb2MoZS5sZW5ndGgqMSksZSBpbnN0YW5jZW9mIEludDhBcnJheSYmdGhpcy5ieXRlT2Zmc2V0K3RoaXMucG9zaXRpb24lZS5CWVRFU19QRVJfRUxFTUVOVD09PTApcy5tZW1jcHkodGhpcy5fYnVmZmVyLHRoaXMuYnl0ZU9mZnNldCt0aGlzLnBvc2l0aW9uLGUuYnVmZmVyLDAsZS5ieXRlTGVuZ3RoKSx0aGlzLm1hcEludDhBcnJheShlLmxlbmd0aCk7ZWxzZSBmb3IodmFyIHQ9MDt0PGUubGVuZ3RoO3QrKyl0aGlzLndyaXRlSW50OChlW3RdKX0scy5wcm90b3R5cGUud3JpdGVVaW50MzJBcnJheT1mdW5jdGlvbihlLHQpe2lmKHRoaXMuX3JlYWxsb2MoZS5sZW5ndGgqNCksZSBpbnN0YW5jZW9mIFVpbnQzMkFycmF5JiZ0aGlzLmJ5dGVPZmZzZXQrdGhpcy5wb3NpdGlvbiVlLkJZVEVTX1BFUl9FTEVNRU5UPT09MClzLm1lbWNweSh0aGlzLl9idWZmZXIsdGhpcy5ieXRlT2Zmc2V0K3RoaXMucG9zaXRpb24sZS5idWZmZXIsMCxlLmJ5dGVMZW5ndGgpLHRoaXMubWFwVWludDMyQXJyYXkoZS5sZW5ndGgsdCk7ZWxzZSBmb3IodmFyIGk9MDtpPGUubGVuZ3RoO2krKyl0aGlzLndyaXRlVWludDMyKGVbaV0sdCl9LHMucHJvdG90eXBlLndyaXRlVWludDE2QXJyYXk9ZnVuY3Rpb24oZSx0KXtpZih0aGlzLl9yZWFsbG9jKGUubGVuZ3RoKjIpLGUgaW5zdGFuY2VvZiBVaW50MTZBcnJheSYmdGhpcy5ieXRlT2Zmc2V0K3RoaXMucG9zaXRpb24lZS5CWVRFU19QRVJfRUxFTUVOVD09PTApcy5tZW1jcHkodGhpcy5fYnVmZmVyLHRoaXMuYnl0ZU9mZnNldCt0aGlzLnBvc2l0aW9uLGUuYnVmZmVyLDAsZS5ieXRlTGVuZ3RoKSx0aGlzLm1hcFVpbnQxNkFycmF5KGUubGVuZ3RoLHQpO2Vsc2UgZm9yKHZhciBpPTA7aTxlLmxlbmd0aDtpKyspdGhpcy53cml0ZVVpbnQxNihlW2ldLHQpfSxzLnByb3RvdHlwZS53cml0ZVVpbnQ4QXJyYXk9ZnVuY3Rpb24oZSl7aWYodGhpcy5fcmVhbGxvYyhlLmxlbmd0aCoxKSxlIGluc3RhbmNlb2YgVWludDhBcnJheSYmdGhpcy5ieXRlT2Zmc2V0K3RoaXMucG9zaXRpb24lZS5CWVRFU19QRVJfRUxFTUVOVD09PTApcy5tZW1jcHkodGhpcy5fYnVmZmVyLHRoaXMuYnl0ZU9mZnNldCt0aGlzLnBvc2l0aW9uLGUuYnVmZmVyLDAsZS5ieXRlTGVuZ3RoKSx0aGlzLm1hcFVpbnQ4QXJyYXkoZS5sZW5ndGgpO2Vsc2UgZm9yKHZhciB0PTA7dDxlLmxlbmd0aDt0KyspdGhpcy53cml0ZVVpbnQ4KGVbdF0pfSxzLnByb3RvdHlwZS53cml0ZUZsb2F0NjRBcnJheT1mdW5jdGlvbihlLHQpe2lmKHRoaXMuX3JlYWxsb2MoZS5sZW5ndGgqOCksZSBpbnN0YW5jZW9mIEZsb2F0NjRBcnJheSYmdGhpcy5ieXRlT2Zmc2V0K3RoaXMucG9zaXRpb24lZS5CWVRFU19QRVJfRUxFTUVOVD09PTApcy5tZW1jcHkodGhpcy5fYnVmZmVyLHRoaXMuYnl0ZU9mZnNldCt0aGlzLnBvc2l0aW9uLGUuYnVmZmVyLDAsZS5ieXRlTGVuZ3RoKSx0aGlzLm1hcEZsb2F0NjRBcnJheShlLmxlbmd0aCx0KTtlbHNlIGZvcih2YXIgaT0wO2k8ZS5sZW5ndGg7aSsrKXRoaXMud3JpdGVGbG9hdDY0KGVbaV0sdCl9LHMucHJvdG90eXBlLndyaXRlRmxvYXQzMkFycmF5PWZ1bmN0aW9uKGUsdCl7aWYodGhpcy5fcmVhbGxvYyhlLmxlbmd0aCo0KSxlIGluc3RhbmNlb2YgRmxvYXQzMkFycmF5JiZ0aGlzLmJ5dGVPZmZzZXQrdGhpcy5wb3NpdGlvbiVlLkJZVEVTX1BFUl9FTEVNRU5UPT09MClzLm1lbWNweSh0aGlzLl9idWZmZXIsdGhpcy5ieXRlT2Zmc2V0K3RoaXMucG9zaXRpb24sZS5idWZmZXIsMCxlLmJ5dGVMZW5ndGgpLHRoaXMubWFwRmxvYXQzMkFycmF5KGUubGVuZ3RoLHQpO2Vsc2UgZm9yKHZhciBpPTA7aTxlLmxlbmd0aDtpKyspdGhpcy53cml0ZUZsb2F0MzIoZVtpXSx0KX0scy5wcm90b3R5cGUud3JpdGVJbnQzMj1mdW5jdGlvbihlLHQpe3RoaXMuX3JlYWxsb2MoNCksdGhpcy5fZGF0YVZpZXcuc2V0SW50MzIodGhpcy5wb3NpdGlvbixlLHQ/P3RoaXMuZW5kaWFubmVzcyksdGhpcy5wb3NpdGlvbis9NH0scy5wcm90b3R5cGUud3JpdGVJbnQxNj1mdW5jdGlvbihlLHQpe3RoaXMuX3JlYWxsb2MoMiksdGhpcy5fZGF0YVZpZXcuc2V0SW50MTYodGhpcy5wb3NpdGlvbixlLHQ/P3RoaXMuZW5kaWFubmVzcyksdGhpcy5wb3NpdGlvbis9Mn0scy5wcm90b3R5cGUud3JpdGVJbnQ4PWZ1bmN0aW9uKGUpe3RoaXMuX3JlYWxsb2MoMSksdGhpcy5fZGF0YVZpZXcuc2V0SW50OCh0aGlzLnBvc2l0aW9uLGUpLHRoaXMucG9zaXRpb24rPTF9LHMucHJvdG90eXBlLndyaXRlVWludDMyPWZ1bmN0aW9uKGUsdCl7dGhpcy5fcmVhbGxvYyg0KSx0aGlzLl9kYXRhVmlldy5zZXRVaW50MzIodGhpcy5wb3NpdGlvbixlLHQ/P3RoaXMuZW5kaWFubmVzcyksdGhpcy5wb3NpdGlvbis9NH0scy5wcm90b3R5cGUud3JpdGVVaW50MTY9ZnVuY3Rpb24oZSx0KXt0aGlzLl9yZWFsbG9jKDIpLHRoaXMuX2RhdGFWaWV3LnNldFVpbnQxNih0aGlzLnBvc2l0aW9uLGUsdD8/dGhpcy5lbmRpYW5uZXNzKSx0aGlzLnBvc2l0aW9uKz0yfSxzLnByb3RvdHlwZS53cml0ZVVpbnQ4PWZ1bmN0aW9uKGUpe3RoaXMuX3JlYWxsb2MoMSksdGhpcy5fZGF0YVZpZXcuc2V0VWludDgodGhpcy5wb3NpdGlvbixlKSx0aGlzLnBvc2l0aW9uKz0xfSxzLnByb3RvdHlwZS53cml0ZUZsb2F0MzI9ZnVuY3Rpb24oZSx0KXt0aGlzLl9yZWFsbG9jKDQpLHRoaXMuX2RhdGFWaWV3LnNldEZsb2F0MzIodGhpcy5wb3NpdGlvbixlLHQ/P3RoaXMuZW5kaWFubmVzcyksdGhpcy5wb3NpdGlvbis9NH0scy5wcm90b3R5cGUud3JpdGVGbG9hdDY0PWZ1bmN0aW9uKGUsdCl7dGhpcy5fcmVhbGxvYyg4KSx0aGlzLl9kYXRhVmlldy5zZXRGbG9hdDY0KHRoaXMucG9zaXRpb24sZSx0Pz90aGlzLmVuZGlhbm5lc3MpLHRoaXMucG9zaXRpb24rPTh9LHMucHJvdG90eXBlLndyaXRlVUNTMlN0cmluZz1mdW5jdGlvbihlLHQsaSl7aT09bnVsbCYmKGk9ZS5sZW5ndGgpO2Zvcih2YXIgZj0wO2Y8ZS5sZW5ndGgmJmY8aTtmKyspdGhpcy53cml0ZVVpbnQxNihlLmNoYXJDb2RlQXQoZiksdCk7Zm9yKDtmPGk7ZisrKXRoaXMud3JpdGVVaW50MTYoMCl9LHMucHJvdG90eXBlLndyaXRlU3RyaW5nPWZ1bmN0aW9uKGUsdCxpKXt2YXIgZj0wO2lmKHQ9PW51bGx8fHQ9PSJBU0NJSSIpaWYoaSE9bnVsbCl7dmFyIHU9TWF0aC5taW4oZS5sZW5ndGgsaSk7Zm9yKGY9MDtmPHU7ZisrKXRoaXMud3JpdGVVaW50OChlLmNoYXJDb2RlQXQoZikpO2Zvcig7ZjxpO2YrKyl0aGlzLndyaXRlVWludDgoMCl9ZWxzZSBmb3IoZj0wO2Y8ZS5sZW5ndGg7ZisrKXRoaXMud3JpdGVVaW50OChlLmNoYXJDb2RlQXQoZikpO2Vsc2UgdGhpcy53cml0ZVVpbnQ4QXJyYXkobmV3IFRleHRFbmNvZGVyKHQpLmVuY29kZShlLnN1YnN0cmluZygwLGkpKSl9LHMucHJvdG90eXBlLndyaXRlQ1N0cmluZz1mdW5jdGlvbihlLHQpe3ZhciBpPTA7aWYodCE9bnVsbCl7dmFyIGY9TWF0aC5taW4oZS5sZW5ndGgsdCk7Zm9yKGk9MDtpPGY7aSsrKXRoaXMud3JpdGVVaW50OChlLmNoYXJDb2RlQXQoaSkpO2Zvcig7aTx0O2krKyl0aGlzLndyaXRlVWludDgoMCl9ZWxzZXtmb3IoaT0wO2k8ZS5sZW5ndGg7aSsrKXRoaXMud3JpdGVVaW50OChlLmNoYXJDb2RlQXQoaSkpO3RoaXMud3JpdGVVaW50OCgwKX19LHMucHJvdG90eXBlLndyaXRlU3RydWN0PWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBpPTA7aTxlLmxlbmd0aDtpKz0yKXt2YXIgZj1lW2krMV07dGhpcy53cml0ZVR5cGUoZix0W2VbaV1dLHQpfX0scy5wcm90b3R5cGUud3JpdGVUeXBlPWZ1bmN0aW9uKGUsdCxpKXt2YXIgZjtpZih0eXBlb2YgZT09ImZ1bmN0aW9uIilyZXR1cm4gZSh0aGlzLHQpO2lmKHR5cGVvZiBlPT0ib2JqZWN0IiYmIShlIGluc3RhbmNlb2YgQXJyYXkpKXJldHVybiBlLnNldCh0aGlzLHQsaSk7dmFyIHU9bnVsbCx2PSJBU0NJSSIseT10aGlzLnBvc2l0aW9uO3N3aXRjaCh0eXBlb2YgZT09InN0cmluZyImJi86Ly50ZXN0KGUpJiYoZj1lLnNwbGl0KCI6IiksZT1mWzBdLHU9cGFyc2VJbnQoZlsxXSkpLHR5cGVvZiBlPT0ic3RyaW5nIiYmLywvLnRlc3QoZSkmJihmPWUuc3BsaXQoIiwiKSxlPWZbMF0sdj1wYXJzZUludChmWzFdKSksZSl7Y2FzZSJ1aW50OCI6dGhpcy53cml0ZVVpbnQ4KHQpO2JyZWFrO2Nhc2UiaW50OCI6dGhpcy53cml0ZUludDgodCk7YnJlYWs7Y2FzZSJ1aW50MTYiOnRoaXMud3JpdGVVaW50MTYodCx0aGlzLmVuZGlhbm5lc3MpO2JyZWFrO2Nhc2UiaW50MTYiOnRoaXMud3JpdGVJbnQxNih0LHRoaXMuZW5kaWFubmVzcyk7YnJlYWs7Y2FzZSJ1aW50MzIiOnRoaXMud3JpdGVVaW50MzIodCx0aGlzLmVuZGlhbm5lc3MpO2JyZWFrO2Nhc2UiaW50MzIiOnRoaXMud3JpdGVJbnQzMih0LHRoaXMuZW5kaWFubmVzcyk7YnJlYWs7Y2FzZSJmbG9hdDMyIjp0aGlzLndyaXRlRmxvYXQzMih0LHRoaXMuZW5kaWFubmVzcyk7YnJlYWs7Y2FzZSJmbG9hdDY0Ijp0aGlzLndyaXRlRmxvYXQ2NCh0LHRoaXMuZW5kaWFubmVzcyk7YnJlYWs7Y2FzZSJ1aW50MTZiZSI6dGhpcy53cml0ZVVpbnQxNih0LHMuQklHX0VORElBTik7YnJlYWs7Y2FzZSJpbnQxNmJlIjp0aGlzLndyaXRlSW50MTYodCxzLkJJR19FTkRJQU4pO2JyZWFrO2Nhc2UidWludDMyYmUiOnRoaXMud3JpdGVVaW50MzIodCxzLkJJR19FTkRJQU4pO2JyZWFrO2Nhc2UiaW50MzJiZSI6dGhpcy53cml0ZUludDMyKHQscy5CSUdfRU5ESUFOKTticmVhaztjYXNlImZsb2F0MzJiZSI6dGhpcy53cml0ZUZsb2F0MzIodCxzLkJJR19FTkRJQU4pO2JyZWFrO2Nhc2UiZmxvYXQ2NGJlIjp0aGlzLndyaXRlRmxvYXQ2NCh0LHMuQklHX0VORElBTik7YnJlYWs7Y2FzZSJ1aW50MTZsZSI6dGhpcy53cml0ZVVpbnQxNih0LHMuTElUVExFX0VORElBTik7YnJlYWs7Y2FzZSJpbnQxNmxlIjp0aGlzLndyaXRlSW50MTYodCxzLkxJVFRMRV9FTkRJQU4pO2JyZWFrO2Nhc2UidWludDMybGUiOnRoaXMud3JpdGVVaW50MzIodCxzLkxJVFRMRV9FTkRJQU4pO2JyZWFrO2Nhc2UiaW50MzJsZSI6dGhpcy53cml0ZUludDMyKHQscy5MSVRUTEVfRU5ESUFOKTticmVhaztjYXNlImZsb2F0MzJsZSI6dGhpcy53cml0ZUZsb2F0MzIodCxzLkxJVFRMRV9FTkRJQU4pO2JyZWFrO2Nhc2UiZmxvYXQ2NGxlIjp0aGlzLndyaXRlRmxvYXQ2NCh0LHMuTElUVExFX0VORElBTik7YnJlYWs7Y2FzZSJjc3RyaW5nIjp0aGlzLndyaXRlQ1N0cmluZyh0LHUpO2JyZWFrO2Nhc2Uic3RyaW5nIjp0aGlzLndyaXRlU3RyaW5nKHQsdix1KTticmVhaztjYXNlInUxNnN0cmluZyI6dGhpcy53cml0ZVVDUzJTdHJpbmcodCx0aGlzLmVuZGlhbm5lc3MsdSk7YnJlYWs7Y2FzZSJ1MTZzdHJpbmdsZSI6dGhpcy53cml0ZVVDUzJTdHJpbmcodCxzLkxJVFRMRV9FTkRJQU4sdSk7YnJlYWs7Y2FzZSJ1MTZzdHJpbmdiZSI6dGhpcy53cml0ZVVDUzJTdHJpbmcodCxzLkJJR19FTkRJQU4sdSk7YnJlYWs7ZGVmYXVsdDppZihlLmxlbmd0aD09Myl7Zm9yKHZhciBtPWVbMV0sYj0wO2I8dC5sZW5ndGg7YisrKXRoaXMud3JpdGVUeXBlKG0sdFtiXSk7YnJlYWt9ZWxzZXt0aGlzLndyaXRlU3RydWN0KGUsdCk7YnJlYWt9fXUhPW51bGwmJih0aGlzLnBvc2l0aW9uPXksdGhpcy5fcmVhbGxvYyh1KSx0aGlzLnBvc2l0aW9uPXkrdSl9LHMucHJvdG90eXBlLndyaXRlVWludDY0PWZ1bmN0aW9uKGUpe3ZhciB0PU1hdGguZmxvb3IoZS9sKTt0aGlzLndyaXRlVWludDMyKHQpLHRoaXMud3JpdGVVaW50MzIoZSY0Mjk0OTY3Mjk1KX0scy5wcm90b3R5cGUud3JpdGVVaW50MjQ9ZnVuY3Rpb24oZSl7dGhpcy53cml0ZVVpbnQ4KChlJjE2NzExNjgwKT4+MTYpLHRoaXMud3JpdGVVaW50OCgoZSY2NTI4MCk+PjgpLHRoaXMud3JpdGVVaW50OChlJjI1NSl9LHMucHJvdG90eXBlLmFkanVzdFVpbnQzMj1mdW5jdGlvbihlLHQpe3ZhciBpPXRoaXMucG9zaXRpb247dGhpcy5zZWVrKGUpLHRoaXMud3JpdGVVaW50MzIodCksdGhpcy5zZWVrKGkpfSxzLnByb3RvdHlwZS5tYXBJbnQzMkFycmF5PWZ1bmN0aW9uKGUsdCl7dGhpcy5fcmVhbGxvYyhlKjQpO3ZhciBpPW5ldyBJbnQzMkFycmF5KHRoaXMuX2J1ZmZlcix0aGlzLmJ5dGVPZmZzZXQrdGhpcy5wb3NpdGlvbixlKTtyZXR1cm4gcy5hcnJheVRvTmF0aXZlKGksdD8/dGhpcy5lbmRpYW5uZXNzKSx0aGlzLnBvc2l0aW9uKz1lKjQsaX0scy5wcm90b3R5cGUubWFwSW50MTZBcnJheT1mdW5jdGlvbihlLHQpe3RoaXMuX3JlYWxsb2MoZSoyKTt2YXIgaT1uZXcgSW50MTZBcnJheSh0aGlzLl9idWZmZXIsdGhpcy5ieXRlT2Zmc2V0K3RoaXMucG9zaXRpb24sZSk7cmV0dXJuIHMuYXJyYXlUb05hdGl2ZShpLHQ/P3RoaXMuZW5kaWFubmVzcyksdGhpcy5wb3NpdGlvbis9ZSoyLGl9LHMucHJvdG90eXBlLm1hcEludDhBcnJheT1mdW5jdGlvbihlKXt0aGlzLl9yZWFsbG9jKGUqMSk7dmFyIHQ9bmV3IEludDhBcnJheSh0aGlzLl9idWZmZXIsdGhpcy5ieXRlT2Zmc2V0K3RoaXMucG9zaXRpb24sZSk7cmV0dXJuIHRoaXMucG9zaXRpb24rPWUqMSx0fSxzLnByb3RvdHlwZS5tYXBVaW50MzJBcnJheT1mdW5jdGlvbihlLHQpe3RoaXMuX3JlYWxsb2MoZSo0KTt2YXIgaT1uZXcgVWludDMyQXJyYXkodGhpcy5fYnVmZmVyLHRoaXMuYnl0ZU9mZnNldCt0aGlzLnBvc2l0aW9uLGUpO3JldHVybiBzLmFycmF5VG9OYXRpdmUoaSx0Pz90aGlzLmVuZGlhbm5lc3MpLHRoaXMucG9zaXRpb24rPWUqNCxpfSxzLnByb3RvdHlwZS5tYXBVaW50MTZBcnJheT1mdW5jdGlvbihlLHQpe3RoaXMuX3JlYWxsb2MoZSoyKTt2YXIgaT1uZXcgVWludDE2QXJyYXkodGhpcy5fYnVmZmVyLHRoaXMuYnl0ZU9mZnNldCt0aGlzLnBvc2l0aW9uLGUpO3JldHVybiBzLmFycmF5VG9OYXRpdmUoaSx0Pz90aGlzLmVuZGlhbm5lc3MpLHRoaXMucG9zaXRpb24rPWUqMixpfSxzLnByb3RvdHlwZS5tYXBGbG9hdDY0QXJyYXk9ZnVuY3Rpb24oZSx0KXt0aGlzLl9yZWFsbG9jKGUqOCk7dmFyIGk9bmV3IEZsb2F0NjRBcnJheSh0aGlzLl9idWZmZXIsdGhpcy5ieXRlT2Zmc2V0K3RoaXMucG9zaXRpb24sZSk7cmV0dXJuIHMuYXJyYXlUb05hdGl2ZShpLHQ/P3RoaXMuZW5kaWFubmVzcyksdGhpcy5wb3NpdGlvbis9ZSo4LGl9LHMucHJvdG90eXBlLm1hcEZsb2F0MzJBcnJheT1mdW5jdGlvbihlLHQpe3RoaXMuX3JlYWxsb2MoZSo0KTt2YXIgaT1uZXcgRmxvYXQzMkFycmF5KHRoaXMuX2J1ZmZlcix0aGlzLmJ5dGVPZmZzZXQrdGhpcy5wb3NpdGlvbixlKTtyZXR1cm4gcy5hcnJheVRvTmF0aXZlKGksdD8/dGhpcy5lbmRpYW5uZXNzKSx0aGlzLnBvc2l0aW9uKz1lKjQsaX07dmFyIGQ9ZnVuY3Rpb24oZSl7dGhpcy5idWZmZXJzPVtdLHRoaXMuYnVmZmVySW5kZXg9LTEsZSYmKHRoaXMuaW5zZXJ0QnVmZmVyKGUpLHRoaXMuYnVmZmVySW5kZXg9MCl9O2QucHJvdG90eXBlPW5ldyBzKG5ldyBBcnJheUJ1ZmZlciwwLHMuQklHX0VORElBTiksZC5wcm90b3R5cGUuaW5pdGlhbGl6ZWQ9ZnVuY3Rpb24oKXt2YXIgZTtyZXR1cm4gdGhpcy5idWZmZXJJbmRleD4tMT8hMDp0aGlzLmJ1ZmZlcnMubGVuZ3RoPjA/KGU9dGhpcy5idWZmZXJzWzBdLGUuZmlsZVN0YXJ0PT09MD8odGhpcy5idWZmZXI9ZSx0aGlzLmJ1ZmZlckluZGV4PTAsci5kZWJ1ZygiTXVsdGlCdWZmZXJTdHJlYW0iLCJTdHJlYW0gcmVhZHkgZm9yIHBhcnNpbmciKSwhMCk6KHIud2FybigiTXVsdGlCdWZmZXJTdHJlYW0iLCJUaGUgZmlyc3QgYnVmZmVyIHNob3VsZCBoYXZlIGEgZmlsZVN0YXJ0IG9mIDAiKSx0aGlzLmxvZ0J1ZmZlckxldmVsKCksITEpKTooci53YXJuKCJNdWx0aUJ1ZmZlclN0cmVhbSIsIk5vIGJ1ZmZlciB0byBzdGFydCBwYXJzaW5nIGZyb20iKSx0aGlzLmxvZ0J1ZmZlckxldmVsKCksITEpfSxBcnJheUJ1ZmZlci5jb25jYXQ9ZnVuY3Rpb24oZSx0KXtyLmRlYnVnKCJBcnJheUJ1ZmZlciIsIlRyeWluZyB0byBjcmVhdGUgYSBuZXcgYnVmZmVyIG9mIHNpemU6ICIrKGUuYnl0ZUxlbmd0aCt0LmJ5dGVMZW5ndGgpKTt2YXIgaT1uZXcgVWludDhBcnJheShlLmJ5dGVMZW5ndGgrdC5ieXRlTGVuZ3RoKTtyZXR1cm4gaS5zZXQobmV3IFVpbnQ4QXJyYXkoZSksMCksaS5zZXQobmV3IFVpbnQ4QXJyYXkodCksZS5ieXRlTGVuZ3RoKSxpLmJ1ZmZlcn0sZC5wcm90b3R5cGUucmVkdWNlQnVmZmVyPWZ1bmN0aW9uKGUsdCxpKXt2YXIgZjtyZXR1cm4gZj1uZXcgVWludDhBcnJheShpKSxmLnNldChuZXcgVWludDhBcnJheShlLHQsaSkpLGYuYnVmZmVyLmZpbGVTdGFydD1lLmZpbGVTdGFydCt0LGYuYnVmZmVyLnVzZWRCeXRlcz0wLGYuYnVmZmVyfSxkLnByb3RvdHlwZS5pbnNlcnRCdWZmZXI9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PSEwLGk9MDtpPHRoaXMuYnVmZmVycy5sZW5ndGg7aSsrKXt2YXIgZj10aGlzLmJ1ZmZlcnNbaV07aWYoZS5maWxlU3RhcnQ8PWYuZmlsZVN0YXJ0KXtpZihlLmZpbGVTdGFydD09PWYuZmlsZVN0YXJ0KWlmKGUuYnl0ZUxlbmd0aD5mLmJ5dGVMZW5ndGgpe3RoaXMuYnVmZmVycy5zcGxpY2UoaSwxKSxpLS07Y29udGludWV9ZWxzZSByLndhcm4oIk11bHRpQnVmZmVyU3RyZWFtIiwiQnVmZmVyIChmaWxlU3RhcnQ6ICIrZS5maWxlU3RhcnQrIiAtIExlbmd0aDogIitlLmJ5dGVMZW5ndGgrIikgYWxyZWFkeSBhcHBlbmRlZCwgaWdub3JpbmciKTtlbHNlIGUuZmlsZVN0YXJ0K2UuYnl0ZUxlbmd0aDw9Zi5maWxlU3RhcnR8fChlPXRoaXMucmVkdWNlQnVmZmVyKGUsMCxmLmZpbGVTdGFydC1lLmZpbGVTdGFydCkpLHIuZGVidWcoIk11bHRpQnVmZmVyU3RyZWFtIiwiQXBwZW5kaW5nIG5ldyBidWZmZXIgKGZpbGVTdGFydDogIitlLmZpbGVTdGFydCsiIC0gTGVuZ3RoOiAiK2UuYnl0ZUxlbmd0aCsiKSIpLHRoaXMuYnVmZmVycy5zcGxpY2UoaSwwLGUpLGk9PT0wJiYodGhpcy5idWZmZXI9ZSk7dD0hMTticmVha31lbHNlIGlmKGUuZmlsZVN0YXJ0PGYuZmlsZVN0YXJ0K2YuYnl0ZUxlbmd0aCl7dmFyIHU9Zi5maWxlU3RhcnQrZi5ieXRlTGVuZ3RoLWUuZmlsZVN0YXJ0LHY9ZS5ieXRlTGVuZ3RoLXU7aWYodj4wKWU9dGhpcy5yZWR1Y2VCdWZmZXIoZSx1LHYpO2Vsc2V7dD0hMTticmVha319fXQmJihyLmRlYnVnKCJNdWx0aUJ1ZmZlclN0cmVhbSIsIkFwcGVuZGluZyBuZXcgYnVmZmVyIChmaWxlU3RhcnQ6ICIrZS5maWxlU3RhcnQrIiAtIExlbmd0aDogIitlLmJ5dGVMZW5ndGgrIikiKSx0aGlzLmJ1ZmZlcnMucHVzaChlKSxpPT09MCYmKHRoaXMuYnVmZmVyPWUpKX0sZC5wcm90b3R5cGUubG9nQnVmZmVyTGV2ZWw9ZnVuY3Rpb24oZSl7dmFyIHQsaSxmLHUsdj1bXSx5LG09IiI7Zm9yKGY9MCx1PTAsdD0wO3Q8dGhpcy5idWZmZXJzLmxlbmd0aDt0KyspaT10aGlzLmJ1ZmZlcnNbdF0sdD09PTA/KHk9e30sdi5wdXNoKHkpLHkuc3RhcnQ9aS5maWxlU3RhcnQseS5lbmQ9aS5maWxlU3RhcnQraS5ieXRlTGVuZ3RoLG0rPSJbIit5LnN0YXJ0KyItIik6eS5lbmQ9PT1pLmZpbGVTdGFydD95LmVuZD1pLmZpbGVTdGFydCtpLmJ5dGVMZW5ndGg6KHk9e30seS5zdGFydD1pLmZpbGVTdGFydCxtKz12W3YubGVuZ3RoLTFdLmVuZC0xKyJdLCBbIit5LnN0YXJ0KyItIix5LmVuZD1pLmZpbGVTdGFydCtpLmJ5dGVMZW5ndGgsdi5wdXNoKHkpKSxmKz1pLnVzZWRCeXRlcyx1Kz1pLmJ5dGVMZW5ndGg7di5sZW5ndGg+MCYmKG0rPXkuZW5kLTErIl0iKTt2YXIgYj1lP3IuaW5mbzpyLmRlYnVnO3RoaXMuYnVmZmVycy5sZW5ndGg9PT0wP2IoIk11bHRpQnVmZmVyU3RyZWFtIiwiTm8gbW9yZSBidWZmZXIgaW4gbWVtb3J5Iik6YigiTXVsdGlCdWZmZXJTdHJlYW0iLCIiK3RoaXMuYnVmZmVycy5sZW5ndGgrIiBzdG9yZWQgYnVmZmVyKHMpICgiK2YrIi8iK3UrIiBieXRlcyksIGNvbnRpbnVvdXMgcmFuZ2VzOiAiK20pfSxkLnByb3RvdHlwZS5jbGVhbkJ1ZmZlcnM9ZnVuY3Rpb24oKXt2YXIgZSx0O2ZvcihlPTA7ZTx0aGlzLmJ1ZmZlcnMubGVuZ3RoO2UrKyl0PXRoaXMuYnVmZmVyc1tlXSx0LnVzZWRCeXRlcz09PXQuYnl0ZUxlbmd0aCYmKHIuZGVidWcoIk11bHRpQnVmZmVyU3RyZWFtIiwiUmVtb3ZpbmcgYnVmZmVyICMiK2UpLHRoaXMuYnVmZmVycy5zcGxpY2UoZSwxKSxlLS0pfSxkLnByb3RvdHlwZS5tZXJnZU5leHRCdWZmZXI9ZnVuY3Rpb24oKXt2YXIgZTtpZih0aGlzLmJ1ZmZlckluZGV4KzE8dGhpcy5idWZmZXJzLmxlbmd0aClpZihlPXRoaXMuYnVmZmVyc1t0aGlzLmJ1ZmZlckluZGV4KzFdLGUuZmlsZVN0YXJ0PT09dGhpcy5idWZmZXIuZmlsZVN0YXJ0K3RoaXMuYnVmZmVyLmJ5dGVMZW5ndGgpe3ZhciB0PXRoaXMuYnVmZmVyLmJ5dGVMZW5ndGgsaT10aGlzLmJ1ZmZlci51c2VkQnl0ZXMsZj10aGlzLmJ1ZmZlci5maWxlU3RhcnQ7cmV0dXJuIHRoaXMuYnVmZmVyc1t0aGlzLmJ1ZmZlckluZGV4XT1BcnJheUJ1ZmZlci5jb25jYXQodGhpcy5idWZmZXIsZSksdGhpcy5idWZmZXI9dGhpcy5idWZmZXJzW3RoaXMuYnVmZmVySW5kZXhdLHRoaXMuYnVmZmVycy5zcGxpY2UodGhpcy5idWZmZXJJbmRleCsxLDEpLHRoaXMuYnVmZmVyLnVzZWRCeXRlcz1pLHRoaXMuYnVmZmVyLmZpbGVTdGFydD1mLHIuZGVidWcoIklTT0ZpbGUiLCJDb25jYXRlbmF0aW5nIGJ1ZmZlciBmb3IgYm94IHBhcnNpbmcgKGxlbmd0aDogIit0KyItPiIrdGhpcy5idWZmZXIuYnl0ZUxlbmd0aCsiKSIpLCEwfWVsc2UgcmV0dXJuITE7ZWxzZSByZXR1cm4hMX0sZC5wcm90b3R5cGUuZmluZFBvc2l0aW9uPWZ1bmN0aW9uKGUsdCxpKXt2YXIgZix1PW51bGwsdj0tMTtmb3IoZT09PSEwP2Y9MDpmPXRoaXMuYnVmZmVySW5kZXg7Zjx0aGlzLmJ1ZmZlcnMubGVuZ3RoJiYodT10aGlzLmJ1ZmZlcnNbZl0sdS5maWxlU3RhcnQ8PXQpOyl7dj1mLGkmJih1LmZpbGVTdGFydCt1LmJ5dGVMZW5ndGg8PXQ/dS51c2VkQnl0ZXM9dS5ieXRlTGVuZ3RoOnUudXNlZEJ5dGVzPXQtdS5maWxlU3RhcnQsdGhpcy5sb2dCdWZmZXJMZXZlbCgpKTtmKyt9cmV0dXJuIHYhPT0tMT8odT10aGlzLmJ1ZmZlcnNbdl0sdS5maWxlU3RhcnQrdS5ieXRlTGVuZ3RoPj10PyhyLmRlYnVnKCJNdWx0aUJ1ZmZlclN0cmVhbSIsIkZvdW5kIHBvc2l0aW9uIGluIGV4aXN0aW5nIGJ1ZmZlciAjIit2KSx2KTotMSk6LTF9LGQucHJvdG90eXBlLmZpbmRFbmRDb250aWd1b3VzQnVmPWZ1bmN0aW9uKGUpe3ZhciB0LGksZix1PWUhPT12b2lkIDA/ZTp0aGlzLmJ1ZmZlckluZGV4O2lmKGk9dGhpcy5idWZmZXJzW3VdLHRoaXMuYnVmZmVycy5sZW5ndGg+dSsxKWZvcih0PXUrMTt0PHRoaXMuYnVmZmVycy5sZW5ndGgmJihmPXRoaXMuYnVmZmVyc1t0XSxmLmZpbGVTdGFydD09PWkuZmlsZVN0YXJ0K2kuYnl0ZUxlbmd0aCk7dCsrKWk9ZjtyZXR1cm4gaS5maWxlU3RhcnQraS5ieXRlTGVuZ3RofSxkLnByb3RvdHlwZS5nZXRFbmRGaWxlUG9zaXRpb25BZnRlcj1mdW5jdGlvbihlKXt2YXIgdD10aGlzLmZpbmRQb3NpdGlvbighMCxlLCExKTtyZXR1cm4gdCE9PS0xP3RoaXMuZmluZEVuZENvbnRpZ3VvdXNCdWYodCk6ZX0sZC5wcm90b3R5cGUuYWRkVXNlZEJ5dGVzPWZ1bmN0aW9uKGUpe3RoaXMuYnVmZmVyLnVzZWRCeXRlcys9ZSx0aGlzLmxvZ0J1ZmZlckxldmVsKCl9LGQucHJvdG90eXBlLnNldEFsbFVzZWRCeXRlcz1mdW5jdGlvbigpe3RoaXMuYnVmZmVyLnVzZWRCeXRlcz10aGlzLmJ1ZmZlci5ieXRlTGVuZ3RoLHRoaXMubG9nQnVmZmVyTGV2ZWwoKX0sZC5wcm90b3R5cGUuc2Vlaz1mdW5jdGlvbihlLHQsaSl7dmFyIGY7cmV0dXJuIGY9dGhpcy5maW5kUG9zaXRpb24odCxlLGkpLGYhPT0tMT8odGhpcy5idWZmZXI9dGhpcy5idWZmZXJzW2ZdLHRoaXMuYnVmZmVySW5kZXg9Zix0aGlzLnBvc2l0aW9uPWUtdGhpcy5idWZmZXIuZmlsZVN0YXJ0LHIuZGVidWcoIk11bHRpQnVmZmVyU3RyZWFtIiwiUmVwb3NpdGlvbmluZyBwYXJzZXIgYXQgYnVmZmVyIHBvc2l0aW9uOiAiK3RoaXMucG9zaXRpb24pLCEwKTooci5kZWJ1ZygiTXVsdGlCdWZmZXJTdHJlYW0iLCJQb3NpdGlvbiAiK2UrIiBub3QgZm91bmQgaW4gYnVmZmVyZWQgZGF0YSIpLCExKX0sZC5wcm90b3R5cGUuZ2V0UG9zaXRpb249ZnVuY3Rpb24oKXtpZih0aGlzLmJ1ZmZlckluZGV4PT09LTF8fHRoaXMuYnVmZmVyc1t0aGlzLmJ1ZmZlckluZGV4XT09PW51bGwpdGhyb3ciRXJyb3IgYWNjZXNzaW5nIHBvc2l0aW9uIGluIHRoZSBNdWx0aUJ1ZmZlclN0cmVhbSI7cmV0dXJuIHRoaXMuYnVmZmVyc1t0aGlzLmJ1ZmZlckluZGV4XS5maWxlU3RhcnQrdGhpcy5wb3NpdGlvbn0sZC5wcm90b3R5cGUuZ2V0TGVuZ3RoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYnl0ZUxlbmd0aH0sZC5wcm90b3R5cGUuZ2V0RW5kUG9zaXRpb249ZnVuY3Rpb24oKXtpZih0aGlzLmJ1ZmZlckluZGV4PT09LTF8fHRoaXMuYnVmZmVyc1t0aGlzLmJ1ZmZlckluZGV4XT09PW51bGwpdGhyb3ciRXJyb3IgYWNjZXNzaW5nIHBvc2l0aW9uIGluIHRoZSBNdWx0aUJ1ZmZlclN0cmVhbSI7cmV0dXJuIHRoaXMuYnVmZmVyc1t0aGlzLmJ1ZmZlckluZGV4XS5maWxlU3RhcnQrdGhpcy5ieXRlTGVuZ3RofSxuLk11bHRpQnVmZmVyU3RyZWFtPWQ7dmFyIGg9ZnVuY3Rpb24oKXt2YXIgZT0zLHQ9NCxpPTUsZj02LHU9W107dVtlXT0iRVNfRGVzY3JpcHRvciIsdVt0XT0iRGVjb2RlckNvbmZpZ0Rlc2NyaXB0b3IiLHVbaV09IkRlY29kZXJTcGVjaWZpY0luZm8iLHVbZl09IlNMQ29uZmlnRGVzY3JpcHRvciIsdGhpcy5nZXREZXNjcmlwdG9yTmFtZT1mdW5jdGlvbihtKXtyZXR1cm4gdVttXX07dmFyIHY9dGhpcyx5PXt9O3JldHVybiB0aGlzLnBhcnNlT25lRGVzY3JpcHRvcj1mdW5jdGlvbihtKXt2YXIgYj0wLHgsUyxVO2Zvcih4PW0ucmVhZFVpbnQ4KCksVT1tLnJlYWRVaW50OCgpO1UmMTI4OyliPShVJjEyNyk8PDcsVT1tLnJlYWRVaW50OCgpO3JldHVybiBiKz1VJjEyNyxyLmRlYnVnKCJNUEVHNERlc2NyaXB0b3JQYXJzZXIiLCJGb3VuZCAiKyh1W3hdfHwiRGVzY3JpcHRvciAiK3gpKyIsIHNpemUgIitiKyIgYXQgcG9zaXRpb24gIittLmdldFBvc2l0aW9uKCkpLHVbeF0/Uz1uZXcgeVt1W3hdXShiKTpTPW5ldyB5LkRlc2NyaXB0b3IoYiksUy5wYXJzZShtKSxTfSx5LkRlc2NyaXB0b3I9ZnVuY3Rpb24obSxiKXt0aGlzLnRhZz1tLHRoaXMuc2l6ZT1iLHRoaXMuZGVzY3M9W119LHkuRGVzY3JpcHRvci5wcm90b3R5cGUucGFyc2U9ZnVuY3Rpb24obSl7dGhpcy5kYXRhPW0ucmVhZFVpbnQ4QXJyYXkodGhpcy5zaXplKX0seS5EZXNjcmlwdG9yLnByb3RvdHlwZS5maW5kRGVzY3JpcHRvcj1mdW5jdGlvbihtKXtmb3IodmFyIGI9MDtiPHRoaXMuZGVzY3MubGVuZ3RoO2IrKylpZih0aGlzLmRlc2NzW2JdLnRhZz09bSlyZXR1cm4gdGhpcy5kZXNjc1tiXTtyZXR1cm4gbnVsbH0seS5EZXNjcmlwdG9yLnByb3RvdHlwZS5wYXJzZVJlbWFpbmluZ0Rlc2NyaXB0b3JzPWZ1bmN0aW9uKG0pe2Zvcih2YXIgYj1tLnBvc2l0aW9uO20ucG9zaXRpb248Yit0aGlzLnNpemU7KXt2YXIgeD12LnBhcnNlT25lRGVzY3JpcHRvcihtKTt0aGlzLmRlc2NzLnB1c2goeCl9fSx5LkVTX0Rlc2NyaXB0b3I9ZnVuY3Rpb24obSl7eS5EZXNjcmlwdG9yLmNhbGwodGhpcyxlLG0pfSx5LkVTX0Rlc2NyaXB0b3IucHJvdG90eXBlPW5ldyB5LkRlc2NyaXB0b3IseS5FU19EZXNjcmlwdG9yLnByb3RvdHlwZS5wYXJzZT1mdW5jdGlvbihtKXtpZih0aGlzLkVTX0lEPW0ucmVhZFVpbnQxNigpLHRoaXMuZmxhZ3M9bS5yZWFkVWludDgoKSx0aGlzLnNpemUtPTMsdGhpcy5mbGFncyYxMjg/KHRoaXMuZGVwZW5kc09uX0VTX0lEPW0ucmVhZFVpbnQxNigpLHRoaXMuc2l6ZS09Mik6dGhpcy5kZXBlbmRzT25fRVNfSUQ9MCx0aGlzLmZsYWdzJjY0KXt2YXIgYj1tLnJlYWRVaW50OCgpO3RoaXMuVVJMPW0ucmVhZFN0cmluZyhiKSx0aGlzLnNpemUtPWIrMX1lbHNlIHRoaXMuVVJMPSIiO3RoaXMuZmxhZ3MmMzI/KHRoaXMuT0NSX0VTX0lEPW0ucmVhZFVpbnQxNigpLHRoaXMuc2l6ZS09Mik6dGhpcy5PQ1JfRVNfSUQ9MCx0aGlzLnBhcnNlUmVtYWluaW5nRGVzY3JpcHRvcnMobSl9LHkuRVNfRGVzY3JpcHRvci5wcm90b3R5cGUuZ2V0T1RJPWZ1bmN0aW9uKG0pe3ZhciBiPXRoaXMuZmluZERlc2NyaXB0b3IodCk7cmV0dXJuIGI/Yi5vdGk6MH0seS5FU19EZXNjcmlwdG9yLnByb3RvdHlwZS5nZXRBdWRpb0NvbmZpZz1mdW5jdGlvbihtKXt2YXIgYj10aGlzLmZpbmREZXNjcmlwdG9yKHQpO2lmKCFiKXJldHVybiBudWxsO3ZhciB4PWIuZmluZERlc2NyaXB0b3IoaSk7aWYoeCYmeC5kYXRhKXt2YXIgUz0oeC5kYXRhWzBdJjI0OCk+PjM7cmV0dXJuIFM9PT0zMSYmeC5kYXRhLmxlbmd0aD49MiYmKFM9MzIrKCh4LmRhdGFbMF0mNyk8PDMpKygoeC5kYXRhWzFdJjIyNCk+PjUpKSxTfWVsc2UgcmV0dXJuIG51bGx9LHkuRGVjb2RlckNvbmZpZ0Rlc2NyaXB0b3I9ZnVuY3Rpb24obSl7eS5EZXNjcmlwdG9yLmNhbGwodGhpcyx0LG0pfSx5LkRlY29kZXJDb25maWdEZXNjcmlwdG9yLnByb3RvdHlwZT1uZXcgeS5EZXNjcmlwdG9yLHkuRGVjb2RlckNvbmZpZ0Rlc2NyaXB0b3IucHJvdG90eXBlLnBhcnNlPWZ1bmN0aW9uKG0pe3RoaXMub3RpPW0ucmVhZFVpbnQ4KCksdGhpcy5zdHJlYW1UeXBlPW0ucmVhZFVpbnQ4KCksdGhpcy5idWZmZXJTaXplPW0ucmVhZFVpbnQyNCgpLHRoaXMubWF4Qml0cmF0ZT1tLnJlYWRVaW50MzIoKSx0aGlzLmF2Z0JpdHJhdGU9bS5yZWFkVWludDMyKCksdGhpcy5zaXplLT0xMyx0aGlzLnBhcnNlUmVtYWluaW5nRGVzY3JpcHRvcnMobSl9LHkuRGVjb2RlclNwZWNpZmljSW5mbz1mdW5jdGlvbihtKXt5LkRlc2NyaXB0b3IuY2FsbCh0aGlzLGksbSl9LHkuRGVjb2RlclNwZWNpZmljSW5mby5wcm90b3R5cGU9bmV3IHkuRGVzY3JpcHRvcix5LlNMQ29uZmlnRGVzY3JpcHRvcj1mdW5jdGlvbihtKXt5LkRlc2NyaXB0b3IuY2FsbCh0aGlzLGYsbSl9LHkuU0xDb25maWdEZXNjcmlwdG9yLnByb3RvdHlwZT1uZXcgeS5EZXNjcmlwdG9yLHRoaXN9O24uTVBFRzREZXNjcmlwdG9yUGFyc2VyPWg7dmFyIG89e0VSUl9JTlZBTElEX0RBVEE6LTEsRVJSX05PVF9FTk9VR0hfREFUQTowLE9LOjEsQkFTSUNfQk9YRVM6WyJtZGF0IiwiaWRhdCIsImZyZWUiLCJza2lwIiwibWVjbyIsInN0cmsiXSxGVUxMX0JPWEVTOlsiaG1oZCIsIm5taGQiLCJpb2RzIiwieG1sICIsImJ4bWwiLCJpcHJvIiwibWVyZSJdLENPTlRBSU5FUl9CT1hFUzpbWyJtb292IixbInRyYWsiLCJwc3NoIl1dLFsidHJhayJdLFsiZWR0cyJdLFsibWRpYSJdLFsibWluZiJdLFsiZGluZiJdLFsic3RibCIsWyJzZ3BkIiwic2JncCJdXSxbIm12ZXgiLFsidHJleCJdXSxbIm1vb2YiLFsidHJhZiJdXSxbInRyYWYiLFsidHJ1biIsInNncGQiLCJzYmdwIl1dLFsidnR0YyJdLFsidHJlZiJdLFsiaXJlZiJdLFsibWZyYSIsWyJ0ZnJhIl1dLFsibWVjbyJdLFsiaG50aSJdLFsiaGluZiJdLFsic3RyayJdLFsic3RyZCJdLFsic2luZiJdLFsicmluZiJdLFsic2NoaSJdLFsidHJnciJdLFsidWR0YSIsWyJraW5kIl1dLFsiaXBycCIsWyJpcG1hIl1dLFsiaXBjbyJdXSxib3hDb2RlczpbXSxmdWxsQm94Q29kZXM6W10sY29udGFpbmVyQm94Q29kZXM6W10sc2FtcGxlRW50cnlDb2Rlczp7fSxzYW1wbGVHcm91cEVudHJ5Q29kZXM6W10sdHJhY2tHcm91cFR5cGVzOltdLFVVSURCb3hlczp7fSxVVUlEczpbXSxpbml0aWFsaXplOmZ1bmN0aW9uKCl7by5GdWxsQm94LnByb3RvdHlwZT1uZXcgby5Cb3gsby5Db250YWluZXJCb3gucHJvdG90eXBlPW5ldyBvLkJveCxvLlNhbXBsZUVudHJ5LnByb3RvdHlwZT1uZXcgby5Cb3gsby5UcmFja0dyb3VwVHlwZUJveC5wcm90b3R5cGU9bmV3IG8uRnVsbEJveCxvLkJBU0lDX0JPWEVTLmZvckVhY2goZnVuY3Rpb24oZSl7by5jcmVhdGVCb3hDdG9yKGUpfSksby5GVUxMX0JPWEVTLmZvckVhY2goZnVuY3Rpb24oZSl7by5jcmVhdGVGdWxsQm94Q3RvcihlKX0pLG8uQ09OVEFJTkVSX0JPWEVTLmZvckVhY2goZnVuY3Rpb24oZSl7by5jcmVhdGVDb250YWluZXJCb3hDdG9yKGVbMF0sbnVsbCxlWzFdKX0pfSxCb3g6ZnVuY3Rpb24oZSx0LGkpe3RoaXMudHlwZT1lLHRoaXMuc2l6ZT10LHRoaXMudXVpZD1pfSxGdWxsQm94OmZ1bmN0aW9uKGUsdCxpKXtvLkJveC5jYWxsKHRoaXMsZSx0LGkpLHRoaXMuZmxhZ3M9MCx0aGlzLnZlcnNpb249MH0sQ29udGFpbmVyQm94OmZ1bmN0aW9uKGUsdCxpKXtvLkJveC5jYWxsKHRoaXMsZSx0LGkpLHRoaXMuYm94ZXM9W119LFNhbXBsZUVudHJ5OmZ1bmN0aW9uKGUsdCxpLGYpe28uQ29udGFpbmVyQm94LmNhbGwodGhpcyxlLHQpLHRoaXMuaGRyX3NpemU9aSx0aGlzLnN0YXJ0PWZ9LFNhbXBsZUdyb3VwRW50cnk6ZnVuY3Rpb24oZSl7dGhpcy5ncm91cGluZ190eXBlPWV9LFRyYWNrR3JvdXBUeXBlQm94OmZ1bmN0aW9uKGUsdCl7by5GdWxsQm94LmNhbGwodGhpcyxlLHQpfSxjcmVhdGVCb3hDdG9yOmZ1bmN0aW9uKGUsdCl7by5ib3hDb2Rlcy5wdXNoKGUpLG9bZSsiQm94Il09ZnVuY3Rpb24oaSl7by5Cb3guY2FsbCh0aGlzLGUsaSl9LG9bZSsiQm94Il0ucHJvdG90eXBlPW5ldyBvLkJveCx0JiYob1tlKyJCb3giXS5wcm90b3R5cGUucGFyc2U9dCl9LGNyZWF0ZUZ1bGxCb3hDdG9yOmZ1bmN0aW9uKGUsdCl7b1tlKyJCb3giXT1mdW5jdGlvbihpKXtvLkZ1bGxCb3guY2FsbCh0aGlzLGUsaSl9LG9bZSsiQm94Il0ucHJvdG90eXBlPW5ldyBvLkZ1bGxCb3gsb1tlKyJCb3giXS5wcm90b3R5cGUucGFyc2U9ZnVuY3Rpb24oaSl7dGhpcy5wYXJzZUZ1bGxIZWFkZXIoaSksdCYmdC5jYWxsKHRoaXMsaSl9fSxhZGRTdWJCb3hBcnJheXM6ZnVuY3Rpb24oZSl7aWYoZSl7dGhpcy5zdWJCb3hOYW1lcz1lO2Zvcih2YXIgdD1lLmxlbmd0aCxpPTA7aTx0O2krKyl0aGlzW2VbaV0rInMiXT1bXX19LGNyZWF0ZUNvbnRhaW5lckJveEN0b3I6ZnVuY3Rpb24oZSx0LGkpe29bZSsiQm94Il09ZnVuY3Rpb24oZil7by5Db250YWluZXJCb3guY2FsbCh0aGlzLGUsZiksby5hZGRTdWJCb3hBcnJheXMuY2FsbCh0aGlzLGkpfSxvW2UrIkJveCJdLnByb3RvdHlwZT1uZXcgby5Db250YWluZXJCb3gsdCYmKG9bZSsiQm94Il0ucHJvdG90eXBlLnBhcnNlPXQpfSxjcmVhdGVNZWRpYVNhbXBsZUVudHJ5Q3RvcjpmdW5jdGlvbihlLHQsaSl7by5zYW1wbGVFbnRyeUNvZGVzW2VdPVtdLG9bZSsiU2FtcGxlRW50cnkiXT1mdW5jdGlvbihmLHUpe28uU2FtcGxlRW50cnkuY2FsbCh0aGlzLGYsdSksby5hZGRTdWJCb3hBcnJheXMuY2FsbCh0aGlzLGkpfSxvW2UrIlNhbXBsZUVudHJ5Il0ucHJvdG90eXBlPW5ldyBvLlNhbXBsZUVudHJ5LHQmJihvW2UrIlNhbXBsZUVudHJ5Il0ucHJvdG90eXBlLnBhcnNlPXQpfSxjcmVhdGVTYW1wbGVFbnRyeUN0b3I6ZnVuY3Rpb24oZSx0LGksZil7by5zYW1wbGVFbnRyeUNvZGVzW2VdLnB1c2godCksb1t0KyJTYW1wbGVFbnRyeSJdPWZ1bmN0aW9uKHUpe29bZSsiU2FtcGxlRW50cnkiXS5jYWxsKHRoaXMsdCx1KSxvLmFkZFN1YkJveEFycmF5cy5jYWxsKHRoaXMsZil9LG9bdCsiU2FtcGxlRW50cnkiXS5wcm90b3R5cGU9bmV3IG9bZSsiU2FtcGxlRW50cnkiXSxpJiYob1t0KyJTYW1wbGVFbnRyeSJdLnByb3RvdHlwZS5wYXJzZT1pKX0sY3JlYXRlRW5jcnlwdGVkU2FtcGxlRW50cnlDdG9yOmZ1bmN0aW9uKGUsdCxpKXtvLmNyZWF0ZVNhbXBsZUVudHJ5Q3Rvci5jYWxsKHRoaXMsZSx0LGksWyJzaW5mIl0pfSxjcmVhdGVTYW1wbGVHcm91cEN0b3I6ZnVuY3Rpb24oZSx0KXtvW2UrIlNhbXBsZUdyb3VwRW50cnkiXT1mdW5jdGlvbihpKXtvLlNhbXBsZUdyb3VwRW50cnkuY2FsbCh0aGlzLGUsaSl9LG9bZSsiU2FtcGxlR3JvdXBFbnRyeSJdLnByb3RvdHlwZT1uZXcgby5TYW1wbGVHcm91cEVudHJ5LHQmJihvW2UrIlNhbXBsZUdyb3VwRW50cnkiXS5wcm90b3R5cGUucGFyc2U9dCl9LGNyZWF0ZVRyYWNrR3JvdXBDdG9yOmZ1bmN0aW9uKGUsdCl7b1tlKyJUcmFja0dyb3VwVHlwZUJveCJdPWZ1bmN0aW9uKGkpe28uVHJhY2tHcm91cFR5cGVCb3guY2FsbCh0aGlzLGUsaSl9LG9bZSsiVHJhY2tHcm91cFR5cGVCb3giXS5wcm90b3R5cGU9bmV3IG8uVHJhY2tHcm91cFR5cGVCb3gsdCYmKG9bZSsiVHJhY2tHcm91cFR5cGVCb3giXS5wcm90b3R5cGUucGFyc2U9dCl9LGNyZWF0ZVVVSURCb3g6ZnVuY3Rpb24oZSx0LGksZil7by5VVUlEcy5wdXNoKGUpLG8uVVVJREJveGVzW2VdPWZ1bmN0aW9uKHUpe3Q/by5GdWxsQm94LmNhbGwodGhpcywidXVpZCIsdSxlKTppP28uQ29udGFpbmVyQm94LmNhbGwodGhpcywidXVpZCIsdSxlKTpvLkJveC5jYWxsKHRoaXMsInV1aWQiLHUsZSl9LG8uVVVJREJveGVzW2VdLnByb3RvdHlwZT10P25ldyBvLkZ1bGxCb3g6aT9uZXcgby5Db250YWluZXJCb3g6bmV3IG8uQm94LGYmJih0P28uVVVJREJveGVzW2VdLnByb3RvdHlwZS5wYXJzZT1mdW5jdGlvbih1KXt0aGlzLnBhcnNlRnVsbEhlYWRlcih1KSxmJiZmLmNhbGwodGhpcyx1KX06by5VVUlEQm94ZXNbZV0ucHJvdG90eXBlLnBhcnNlPWYpfX07by5pbml0aWFsaXplKCksby5US0hEX0ZMQUdfRU5BQkxFRD0xLG8uVEtIRF9GTEFHX0lOX01PVklFPTIsby5US0hEX0ZMQUdfSU5fUFJFVklFVz00LG8uVEZIRF9GTEFHX0JBU0VfREFUQV9PRkZTRVQ9MSxvLlRGSERfRkxBR19TQU1QTEVfREVTQz0yLG8uVEZIRF9GTEFHX1NBTVBMRV9EVVI9OCxvLlRGSERfRkxBR19TQU1QTEVfU0laRT0xNixvLlRGSERfRkxBR19TQU1QTEVfRkxBR1M9MzIsby5URkhEX0ZMQUdfRFVSX0VNUFRZPTY1NTM2LG8uVEZIRF9GTEFHX0RFRkFVTFRfQkFTRV9JU19NT09GPTEzMTA3MixvLlRSVU5fRkxBR1NfREFUQV9PRkZTRVQ9MSxvLlRSVU5fRkxBR1NfRklSU1RfRkxBRz00LG8uVFJVTl9GTEFHU19EVVJBVElPTj0yNTYsby5UUlVOX0ZMQUdTX1NJWkU9NTEyLG8uVFJVTl9GTEFHU19GTEFHUz0xMDI0LG8uVFJVTl9GTEFHU19DVFNfT0ZGU0VUPTIwNDgsby5Cb3gucHJvdG90eXBlLmFkZD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5hZGRCb3gobmV3IG9bZSsiQm94Il0pfSxvLkJveC5wcm90b3R5cGUuYWRkQm94PWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmJveGVzLnB1c2goZSksdGhpc1tlLnR5cGUrInMiXT90aGlzW2UudHlwZSsicyJdLnB1c2goZSk6dGhpc1tlLnR5cGVdPWUsZX0sby5Cb3gucHJvdG90eXBlLnNldD1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzW2VdPXQsdGhpc30sby5Cb3gucHJvdG90eXBlLmFkZEVudHJ5PWZ1bmN0aW9uKGUsdCl7dmFyIGk9dHx8ImVudHJpZXMiO3JldHVybiB0aGlzW2ldfHwodGhpc1tpXT1bXSksdGhpc1tpXS5wdXNoKGUpLHRoaXN9LG4uQm94UGFyc2VyPW8sby5wYXJzZVVVSUQ9ZnVuY3Rpb24oZSl7cmV0dXJuIG8ucGFyc2VIZXgxNihlKX0sby5wYXJzZUhleDE2PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0iIixpPTA7aTwxNjtpKyspe3ZhciBmPWUucmVhZFVpbnQ4KCkudG9TdHJpbmcoMTYpO3QrPWYubGVuZ3RoPT09MT8iMCIrZjpmfXJldHVybiB0fSxvLnBhcnNlT25lQm94PWZ1bmN0aW9uKGUsdCxpKXt2YXIgZix1PWUuZ2V0UG9zaXRpb24oKSx2PTAseSxtO2lmKGUuZ2V0RW5kUG9zaXRpb24oKS11PDgpcmV0dXJuIHIuZGVidWcoIkJveFBhcnNlciIsIk5vdCBlbm91Z2ggZGF0YSBpbiBzdHJlYW0gdG8gcGFyc2UgdGhlIHR5cGUgYW5kIHNpemUgb2YgdGhlIGJveCIpLHtjb2RlOm8uRVJSX05PVF9FTk9VR0hfREFUQX07aWYoaSYmaTw4KXJldHVybiByLmRlYnVnKCJCb3hQYXJzZXIiLCJOb3QgZW5vdWdoIGJ5dGVzIGxlZnQgaW4gdGhlIHBhcmVudCBib3ggdG8gcGFyc2UgYSBuZXcgYm94Iikse2NvZGU6by5FUlJfTk9UX0VOT1VHSF9EQVRBfTt2YXIgYj1lLnJlYWRVaW50MzIoKSx4PWUucmVhZFN0cmluZyg0KSxTPXg7aWYoci5kZWJ1ZygiQm94UGFyc2VyIiwiRm91bmQgYm94IG9mIHR5cGUgJyIreCsiJyBhbmQgc2l6ZSAiK2IrIiBhdCBwb3NpdGlvbiAiK3UpLHY9OCx4PT0idXVpZCIpe2lmKGUuZ2V0RW5kUG9zaXRpb24oKS1lLmdldFBvc2l0aW9uKCk8MTZ8fGktdjwxNilyZXR1cm4gZS5zZWVrKHUpLHIuZGVidWcoIkJveFBhcnNlciIsIk5vdCBlbm91Z2ggYnl0ZXMgbGVmdCBpbiB0aGUgcGFyZW50IGJveCB0byBwYXJzZSBhIFVVSUQgYm94Iikse2NvZGU6by5FUlJfTk9UX0VOT1VHSF9EQVRBfTttPW8ucGFyc2VVVUlEKGUpLHYrPTE2LFM9bX1pZihiPT0xKXtpZihlLmdldEVuZFBvc2l0aW9uKCktZS5nZXRQb3NpdGlvbigpPDh8fGkmJmktdjw4KXJldHVybiBlLnNlZWsodSksci53YXJuKCJCb3hQYXJzZXIiLCdOb3QgZW5vdWdoIGRhdGEgaW4gc3RyZWFtIHRvIHBhcnNlIHRoZSBleHRlbmRlZCBzaXplIG9mIHRoZSAiJyt4KyciIGJveCcpLHtjb2RlOm8uRVJSX05PVF9FTk9VR0hfREFUQX07Yj1lLnJlYWRVaW50NjQoKSx2Kz04fWVsc2UgaWYoYj09PTApe2lmKGkpYj1pO2Vsc2UgaWYoeCE9PSJtZGF0IilyZXR1cm4gci5lcnJvcigiQm94UGFyc2VyIiwiVW5saW1pdGVkIGJveCBzaXplIG5vdCBzdXBwb3J0ZWQgZm9yIHR5cGU6ICciK3grIiciKSxmPW5ldyBvLkJveCh4LGIpLHtjb2RlOm8uT0ssYm94OmYsc2l6ZTpmLnNpemV9fXJldHVybiBiIT09MCYmYjx2PyhyLmVycm9yKCJCb3hQYXJzZXIiLCJCb3ggb2YgdHlwZSAiK3grIiBoYXMgYW4gaW52YWxpZCBzaXplICIrYisiICh0b28gc21hbGwgdG8gYmUgYSBib3gpIikse2NvZGU6by5FUlJfTk9UX0VOT1VHSF9EQVRBLHR5cGU6eCxzaXplOmIsaGRyX3NpemU6dixzdGFydDp1fSk6YiE9PTAmJmkmJmI+aT8oci5lcnJvcigiQm94UGFyc2VyIiwiQm94IG9mIHR5cGUgJyIreCsiJyBoYXMgYSBzaXplICIrYisiIGdyZWF0ZXIgdGhhbiBpdHMgY29udGFpbmVyIHNpemUgIitpKSx7Y29kZTpvLkVSUl9OT1RfRU5PVUdIX0RBVEEsdHlwZTp4LHNpemU6YixoZHJfc2l6ZTp2LHN0YXJ0OnV9KTpiIT09MCYmdStiPmUuZ2V0RW5kUG9zaXRpb24oKT8oZS5zZWVrKHUpLHIuaW5mbygiQm94UGFyc2VyIiwiTm90IGVub3VnaCBkYXRhIGluIHN0cmVhbSB0byBwYXJzZSB0aGUgZW50aXJlICciK3grIicgYm94Iikse2NvZGU6by5FUlJfTk9UX0VOT1VHSF9EQVRBLHR5cGU6eCxzaXplOmIsaGRyX3NpemU6dixzdGFydDp1fSk6dD97Y29kZTpvLk9LLHR5cGU6eCxzaXplOmIsaGRyX3NpemU6dixzdGFydDp1fToob1t4KyJCb3giXT9mPW5ldyBvW3grIkJveCJdKGIpOnghPT0idXVpZCI/KHIud2FybigiQm94UGFyc2VyIiwiVW5rbm93biBib3ggdHlwZTogJyIreCsiJyIpLGY9bmV3IG8uQm94KHgsYiksZi5oYXNfdW5wYXJzZWRfZGF0YT0hMCk6by5VVUlEQm94ZXNbbV0/Zj1uZXcgby5VVUlEQm94ZXNbbV0oYik6KHIud2FybigiQm94UGFyc2VyIiwiVW5rbm93biB1dWlkIHR5cGU6ICciK20rIiciKSxmPW5ldyBvLkJveCh4LGIpLGYudXVpZD1tLGYuaGFzX3VucGFyc2VkX2RhdGE9ITApLGYuaGRyX3NpemU9dixmLnN0YXJ0PXUsZi53cml0ZT09PW8uQm94LnByb3RvdHlwZS53cml0ZSYmZi50eXBlIT09Im1kYXQiJiYoci5pbmZvKCJCb3hQYXJzZXIiLCInIitTKyInIGJveCB3cml0aW5nIG5vdCB5ZXQgaW1wbGVtZW50ZWQsIGtlZXBpbmcgdW5wYXJzZWQgZGF0YSBpbiBtZW1vcnkgZm9yIGxhdGVyIHdyaXRlIiksZi5wYXJzZURhdGFBbmRSZXdpbmQoZSkpLGYucGFyc2UoZSkseT1lLmdldFBvc2l0aW9uKCktKGYuc3RhcnQrZi5zaXplKSx5PDA/KHIud2FybigiQm94UGFyc2VyIiwiUGFyc2luZyBvZiBib3ggJyIrUysiJyBkaWQgbm90IHJlYWQgdGhlIGVudGlyZSBpbmRpY2F0ZWQgYm94IGRhdGEgc2l6ZSAobWlzc2luZyAiKy15KyIgYnl0ZXMpLCBzZWVraW5nIGZvcndhcmQiKSxlLnNlZWsoZi5zdGFydCtmLnNpemUpKTp5PjAmJihyLmVycm9yKCJCb3hQYXJzZXIiLCJQYXJzaW5nIG9mIGJveCAnIitTKyInIHJlYWQgIit5KyIgbW9yZSBieXRlcyB0aGFuIHRoZSBpbmRpY2F0ZWQgYm94IGRhdGEgc2l6ZSwgc2Vla2luZyBiYWNrd2FyZHMiKSxmLnNpemUhPT0wJiZlLnNlZWsoZi5zdGFydCtmLnNpemUpKSx7Y29kZTpvLk9LLGJveDpmLHNpemU6Zi5zaXplfSl9LG8uQm94LnByb3RvdHlwZS5wYXJzZT1mdW5jdGlvbihlKXt0aGlzLnR5cGUhPSJtZGF0Ij90aGlzLmRhdGE9ZS5yZWFkVWludDhBcnJheSh0aGlzLnNpemUtdGhpcy5oZHJfc2l6ZSk6dGhpcy5zaXplPT09MD9lLnNlZWsoZS5nZXRFbmRQb3NpdGlvbigpKTplLnNlZWsodGhpcy5zdGFydCt0aGlzLnNpemUpfSxvLkJveC5wcm90b3R5cGUucGFyc2VEYXRhQW5kUmV3aW5kPWZ1bmN0aW9uKGUpe3RoaXMuZGF0YT1lLnJlYWRVaW50OEFycmF5KHRoaXMuc2l6ZS10aGlzLmhkcl9zaXplKSxlLnBvc2l0aW9uLT10aGlzLnNpemUtdGhpcy5oZHJfc2l6ZX0sby5GdWxsQm94LnByb3RvdHlwZS5wYXJzZURhdGFBbmRSZXdpbmQ9ZnVuY3Rpb24oZSl7dGhpcy5wYXJzZUZ1bGxIZWFkZXIoZSksdGhpcy5kYXRhPWUucmVhZFVpbnQ4QXJyYXkodGhpcy5zaXplLXRoaXMuaGRyX3NpemUpLHRoaXMuaGRyX3NpemUtPTQsZS5wb3NpdGlvbi09dGhpcy5zaXplLXRoaXMuaGRyX3NpemV9LG8uRnVsbEJveC5wcm90b3R5cGUucGFyc2VGdWxsSGVhZGVyPWZ1bmN0aW9uKGUpe3RoaXMudmVyc2lvbj1lLnJlYWRVaW50OCgpLHRoaXMuZmxhZ3M9ZS5yZWFkVWludDI0KCksdGhpcy5oZHJfc2l6ZSs9NH0sby5GdWxsQm94LnByb3RvdHlwZS5wYXJzZT1mdW5jdGlvbihlKXt0aGlzLnBhcnNlRnVsbEhlYWRlcihlKSx0aGlzLmRhdGE9ZS5yZWFkVWludDhBcnJheSh0aGlzLnNpemUtdGhpcy5oZHJfc2l6ZSl9LG8uQ29udGFpbmVyQm94LnByb3RvdHlwZS5wYXJzZT1mdW5jdGlvbihlKXtmb3IodmFyIHQsaTtlLmdldFBvc2l0aW9uKCk8dGhpcy5zdGFydCt0aGlzLnNpemU7KWlmKHQ9by5wYXJzZU9uZUJveChlLCExLHRoaXMuc2l6ZS0oZS5nZXRQb3NpdGlvbigpLXRoaXMuc3RhcnQpKSx0LmNvZGU9PT1vLk9LKWlmKGk9dC5ib3gsdGhpcy5ib3hlcy5wdXNoKGkpLHRoaXMuc3ViQm94TmFtZXMmJnRoaXMuc3ViQm94TmFtZXMuaW5kZXhPZihpLnR5cGUpIT0tMSl0aGlzW3RoaXMuc3ViQm94TmFtZXNbdGhpcy5zdWJCb3hOYW1lcy5pbmRleE9mKGkudHlwZSldKyJzIl0ucHVzaChpKTtlbHNle3ZhciBmPWkudHlwZSE9PSJ1dWlkIj9pLnR5cGU6aS51dWlkO3RoaXNbZl0/ci53YXJuKCJCb3ggb2YgdHlwZSAiK2YrIiBhbHJlYWR5IHN0b3JlZCBpbiBmaWVsZCBvZiB0aGlzIHR5cGUiKTp0aGlzW2ZdPWl9ZWxzZSByZXR1cm59LG8uQm94LnByb3RvdHlwZS5wYXJzZUxhbmd1YWdlPWZ1bmN0aW9uKGUpe3RoaXMubGFuZ3VhZ2U9ZS5yZWFkVWludDE2KCk7dmFyIHQ9W107dFswXT10aGlzLmxhbmd1YWdlPj4xMCYzMSx0WzFdPXRoaXMubGFuZ3VhZ2U+PjUmMzEsdFsyXT10aGlzLmxhbmd1YWdlJjMxLHRoaXMubGFuZ3VhZ2VTdHJpbmc9U3RyaW5nLmZyb21DaGFyQ29kZSh0WzBdKzk2LHRbMV0rOTYsdFsyXSs5Nil9LG8uU0FNUExFX0VOVFJZX1RZUEVfVklTVUFMPSJWaXN1YWwiLG8uU0FNUExFX0VOVFJZX1RZUEVfQVVESU89IkF1ZGlvIixvLlNBTVBMRV9FTlRSWV9UWVBFX0hJTlQ9IkhpbnQiLG8uU0FNUExFX0VOVFJZX1RZUEVfTUVUQURBVEE9Ik1ldGFkYXRhIixvLlNBTVBMRV9FTlRSWV9UWVBFX1NVQlRJVExFPSJTdWJ0aXRsZSIsby5TQU1QTEVfRU5UUllfVFlQRV9TWVNURU09IlN5c3RlbSIsby5TQU1QTEVfRU5UUllfVFlQRV9URVhUPSJUZXh0IixvLlNhbXBsZUVudHJ5LnByb3RvdHlwZS5wYXJzZUhlYWRlcj1mdW5jdGlvbihlKXtlLnJlYWRVaW50OEFycmF5KDYpLHRoaXMuZGF0YV9yZWZlcmVuY2VfaW5kZXg9ZS5yZWFkVWludDE2KCksdGhpcy5oZHJfc2l6ZSs9OH0sby5TYW1wbGVFbnRyeS5wcm90b3R5cGUucGFyc2U9ZnVuY3Rpb24oZSl7dGhpcy5wYXJzZUhlYWRlcihlKSx0aGlzLmRhdGE9ZS5yZWFkVWludDhBcnJheSh0aGlzLnNpemUtdGhpcy5oZHJfc2l6ZSl9LG8uU2FtcGxlRW50cnkucHJvdG90eXBlLnBhcnNlRGF0YUFuZFJld2luZD1mdW5jdGlvbihlKXt0aGlzLnBhcnNlSGVhZGVyKGUpLHRoaXMuZGF0YT1lLnJlYWRVaW50OEFycmF5KHRoaXMuc2l6ZS10aGlzLmhkcl9zaXplKSx0aGlzLmhkcl9zaXplLT04LGUucG9zaXRpb24tPXRoaXMuc2l6ZS10aGlzLmhkcl9zaXplfSxvLlNhbXBsZUVudHJ5LnByb3RvdHlwZS5wYXJzZUZvb3Rlcj1mdW5jdGlvbihlKXtvLkNvbnRhaW5lckJveC5wcm90b3R5cGUucGFyc2UuY2FsbCh0aGlzLGUpfSxvLmNyZWF0ZU1lZGlhU2FtcGxlRW50cnlDdG9yKG8uU0FNUExFX0VOVFJZX1RZUEVfSElOVCksby5jcmVhdGVNZWRpYVNhbXBsZUVudHJ5Q3RvcihvLlNBTVBMRV9FTlRSWV9UWVBFX01FVEFEQVRBKSxvLmNyZWF0ZU1lZGlhU2FtcGxlRW50cnlDdG9yKG8uU0FNUExFX0VOVFJZX1RZUEVfU1VCVElUTEUpLG8uY3JlYXRlTWVkaWFTYW1wbGVFbnRyeUN0b3Ioby5TQU1QTEVfRU5UUllfVFlQRV9TWVNURU0pLG8uY3JlYXRlTWVkaWFTYW1wbGVFbnRyeUN0b3Ioby5TQU1QTEVfRU5UUllfVFlQRV9URVhUKSxvLmNyZWF0ZU1lZGlhU2FtcGxlRW50cnlDdG9yKG8uU0FNUExFX0VOVFJZX1RZUEVfVklTVUFMLGZ1bmN0aW9uKGUpe3ZhciB0O3RoaXMucGFyc2VIZWFkZXIoZSksZS5yZWFkVWludDE2KCksZS5yZWFkVWludDE2KCksZS5yZWFkVWludDMyQXJyYXkoMyksdGhpcy53aWR0aD1lLnJlYWRVaW50MTYoKSx0aGlzLmhlaWdodD1lLnJlYWRVaW50MTYoKSx0aGlzLmhvcml6cmVzb2x1dGlvbj1lLnJlYWRVaW50MzIoKSx0aGlzLnZlcnRyZXNvbHV0aW9uPWUucmVhZFVpbnQzMigpLGUucmVhZFVpbnQzMigpLHRoaXMuZnJhbWVfY291bnQ9ZS5yZWFkVWludDE2KCksdD1NYXRoLm1pbigzMSxlLnJlYWRVaW50OCgpKSx0aGlzLmNvbXByZXNzb3JuYW1lPWUucmVhZFN0cmluZyh0KSx0PDMxJiZlLnJlYWRTdHJpbmcoMzEtdCksdGhpcy5kZXB0aD1lLnJlYWRVaW50MTYoKSxlLnJlYWRVaW50MTYoKSx0aGlzLnBhcnNlRm9vdGVyKGUpfSksby5jcmVhdGVNZWRpYVNhbXBsZUVudHJ5Q3RvcihvLlNBTVBMRV9FTlRSWV9UWVBFX0FVRElPLGZ1bmN0aW9uKGUpe3RoaXMucGFyc2VIZWFkZXIoZSksZS5yZWFkVWludDMyQXJyYXkoMiksdGhpcy5jaGFubmVsX2NvdW50PWUucmVhZFVpbnQxNigpLHRoaXMuc2FtcGxlc2l6ZT1lLnJlYWRVaW50MTYoKSxlLnJlYWRVaW50MTYoKSxlLnJlYWRVaW50MTYoKSx0aGlzLnNhbXBsZXJhdGU9ZS5yZWFkVWludDMyKCkvNjU1MzYsdGhpcy5wYXJzZUZvb3RlcihlKX0pLG8uY3JlYXRlU2FtcGxlRW50cnlDdG9yKG8uU0FNUExFX0VOVFJZX1RZUEVfVklTVUFMLCJhdmMxIiksby5jcmVhdGVTYW1wbGVFbnRyeUN0b3Ioby5TQU1QTEVfRU5UUllfVFlQRV9WSVNVQUwsImF2YzIiKSxvLmNyZWF0ZVNhbXBsZUVudHJ5Q3RvcihvLlNBTVBMRV9FTlRSWV9UWVBFX1ZJU1VBTCwiYXZjMyIpLG8uY3JlYXRlU2FtcGxlRW50cnlDdG9yKG8uU0FNUExFX0VOVFJZX1RZUEVfVklTVUFMLCJhdmM0Iiksby5jcmVhdGVTYW1wbGVFbnRyeUN0b3Ioby5TQU1QTEVfRU5UUllfVFlQRV9WSVNVQUwsImF2MDEiKSxvLmNyZWF0ZVNhbXBsZUVudHJ5Q3RvcihvLlNBTVBMRV9FTlRSWV9UWVBFX1ZJU1VBTCwiaHZjMSIpLG8uY3JlYXRlU2FtcGxlRW50cnlDdG9yKG8uU0FNUExFX0VOVFJZX1RZUEVfVklTVUFMLCJoZXYxIiksby5jcmVhdGVTYW1wbGVFbnRyeUN0b3Ioby5TQU1QTEVfRU5UUllfVFlQRV9WSVNVQUwsInZ2YzEiKSxvLmNyZWF0ZVNhbXBsZUVudHJ5Q3RvcihvLlNBTVBMRV9FTlRSWV9UWVBFX1ZJU1VBTCwidnZpMSIpLG8uY3JlYXRlU2FtcGxlRW50cnlDdG9yKG8uU0FNUExFX0VOVFJZX1RZUEVfVklTVUFMLCJ2dnMxIiksby5jcmVhdGVTYW1wbGVFbnRyeUN0b3Ioby5TQU1QTEVfRU5UUllfVFlQRV9WSVNVQUwsInZ2Y04iKSxvLmNyZWF0ZVNhbXBsZUVudHJ5Q3RvcihvLlNBTVBMRV9FTlRSWV9UWVBFX1ZJU1VBTCwidnAwOCIpLG8uY3JlYXRlU2FtcGxlRW50cnlDdG9yKG8uU0FNUExFX0VOVFJZX1RZUEVfVklTVUFMLCJ2cDA5Iiksby5jcmVhdGVTYW1wbGVFbnRyeUN0b3Ioby5TQU1QTEVfRU5UUllfVFlQRV9BVURJTywibXA0YSIpLG8uY3JlYXRlU2FtcGxlRW50cnlDdG9yKG8uU0FNUExFX0VOVFJZX1RZUEVfQVVESU8sImFjLTMiKSxvLmNyZWF0ZVNhbXBsZUVudHJ5Q3RvcihvLlNBTVBMRV9FTlRSWV9UWVBFX0FVRElPLCJlYy0zIiksby5jcmVhdGVTYW1wbGVFbnRyeUN0b3Ioby5TQU1QTEVfRU5UUllfVFlQRV9BVURJTywiT3B1cyIpLG8uY3JlYXRlRW5jcnlwdGVkU2FtcGxlRW50cnlDdG9yKG8uU0FNUExFX0VOVFJZX1RZUEVfVklTVUFMLCJlbmN2Iiksby5jcmVhdGVFbmNyeXB0ZWRTYW1wbGVFbnRyeUN0b3Ioby5TQU1QTEVfRU5UUllfVFlQRV9BVURJTywiZW5jYSIpLG8uY3JlYXRlRW5jcnlwdGVkU2FtcGxlRW50cnlDdG9yKG8uU0FNUExFX0VOVFJZX1RZUEVfU1VCVElUTEUsImVuY3UiKSxvLmNyZWF0ZUVuY3J5cHRlZFNhbXBsZUVudHJ5Q3RvcihvLlNBTVBMRV9FTlRSWV9UWVBFX1NZU1RFTSwiZW5jcyIpLG8uY3JlYXRlRW5jcnlwdGVkU2FtcGxlRW50cnlDdG9yKG8uU0FNUExFX0VOVFJZX1RZUEVfVEVYVCwiZW5jdCIpLG8uY3JlYXRlRW5jcnlwdGVkU2FtcGxlRW50cnlDdG9yKG8uU0FNUExFX0VOVFJZX1RZUEVfTUVUQURBVEEsImVuY20iKSxvLmNyZWF0ZUJveEN0b3IoImExbHgiLGZ1bmN0aW9uKGUpe3ZhciB0PWUucmVhZFVpbnQ4KCkmMSxpPSgodCYxKSsxKSoxNjt0aGlzLmxheWVyX3NpemU9W107Zm9yKHZhciBmPTA7ZjwzO2YrKylpPT0xNj90aGlzLmxheWVyX3NpemVbZl09ZS5yZWFkVWludDE2KCk6dGhpcy5sYXllcl9zaXplW2ZdPWUucmVhZFVpbnQzMigpfSksby5jcmVhdGVCb3hDdG9yKCJhMW9wIixmdW5jdGlvbihlKXt0aGlzLm9wX2luZGV4PWUucmVhZFVpbnQ4KCl9KSxvLmNyZWF0ZUZ1bGxCb3hDdG9yKCJhdXhDIixmdW5jdGlvbihlKXt0aGlzLmF1eF90eXBlPWUucmVhZENTdHJpbmcoKTt2YXIgdD10aGlzLnNpemUtdGhpcy5oZHJfc2l6ZS0odGhpcy5hdXhfdHlwZS5sZW5ndGgrMSk7dGhpcy5hdXhfc3VidHlwZT1lLnJlYWRVaW50OEFycmF5KHQpfSksby5jcmVhdGVCb3hDdG9yKCJhdjFDIixmdW5jdGlvbihlKXt2YXIgdD1lLnJlYWRVaW50OCgpO2lmKHQ+PjcmITEpe3IuZXJyb3IoImF2MUMgbWFya2VyIHByb2JsZW0iKTtyZXR1cm59aWYodGhpcy52ZXJzaW9uPXQmMTI3LHRoaXMudmVyc2lvbiE9PTEpe3IuZXJyb3IoImF2MUMgdmVyc2lvbiAiK3RoaXMudmVyc2lvbisiIG5vdCBzdXBwb3J0ZWQiKTtyZXR1cm59aWYodD1lLnJlYWRVaW50OCgpLHRoaXMuc2VxX3Byb2ZpbGU9dD4+NSY3LHRoaXMuc2VxX2xldmVsX2lkeF8wPXQmMzEsdD1lLnJlYWRVaW50OCgpLHRoaXMuc2VxX3RpZXJfMD10Pj43JjEsdGhpcy5oaWdoX2JpdGRlcHRoPXQ+PjYmMSx0aGlzLnR3ZWx2ZV9iaXQ9dD4+NSYxLHRoaXMubW9ub2Nocm9tZT10Pj40JjEsdGhpcy5jaHJvbWFfc3Vic2FtcGxpbmdfeD10Pj4zJjEsdGhpcy5jaHJvbWFfc3Vic2FtcGxpbmdfeT10Pj4yJjEsdGhpcy5jaHJvbWFfc2FtcGxlX3Bvc2l0aW9uPXQmMyx0PWUucmVhZFVpbnQ4KCksdGhpcy5yZXNlcnZlZF8xPXQ+PjUmNyx0aGlzLnJlc2VydmVkXzEhPT0wKXtyLmVycm9yKCJhdjFDIHJlc2VydmVkXzEgcGFyc2luZyBwcm9ibGVtIik7cmV0dXJufWlmKHRoaXMuaW5pdGlhbF9wcmVzZW50YXRpb25fZGVsYXlfcHJlc2VudD10Pj40JjEsdGhpcy5pbml0aWFsX3ByZXNlbnRhdGlvbl9kZWxheV9wcmVzZW50PT09MSl0aGlzLmluaXRpYWxfcHJlc2VudGF0aW9uX2RlbGF5X21pbnVzX29uZT10JjE1O2Vsc2UgaWYodGhpcy5yZXNlcnZlZF8yPXQmMTUsdGhpcy5yZXNlcnZlZF8yIT09MCl7ci5lcnJvcigiYXYxQyByZXNlcnZlZF8yIHBhcnNpbmcgcHJvYmxlbSIpO3JldHVybn12YXIgaT10aGlzLnNpemUtdGhpcy5oZHJfc2l6ZS00O3RoaXMuY29uZmlnT0JVcz1lLnJlYWRVaW50OEFycmF5KGkpfSksby5jcmVhdGVCb3hDdG9yKCJhdmNDIixmdW5jdGlvbihlKXt2YXIgdCxpO2Zvcih0aGlzLmNvbmZpZ3VyYXRpb25WZXJzaW9uPWUucmVhZFVpbnQ4KCksdGhpcy5BVkNQcm9maWxlSW5kaWNhdGlvbj1lLnJlYWRVaW50OCgpLHRoaXMucHJvZmlsZV9jb21wYXRpYmlsaXR5PWUucmVhZFVpbnQ4KCksdGhpcy5BVkNMZXZlbEluZGljYXRpb249ZS5yZWFkVWludDgoKSx0aGlzLmxlbmd0aFNpemVNaW51c09uZT1lLnJlYWRVaW50OCgpJjMsdGhpcy5uYl9TUFNfbmFsdXM9ZS5yZWFkVWludDgoKSYzMSxpPXRoaXMuc2l6ZS10aGlzLmhkcl9zaXplLTYsdGhpcy5TUFM9W10sdD0wO3Q8dGhpcy5uYl9TUFNfbmFsdXM7dCsrKXRoaXMuU1BTW3RdPXt9LHRoaXMuU1BTW3RdLmxlbmd0aD1lLnJlYWRVaW50MTYoKSx0aGlzLlNQU1t0XS5uYWx1PWUucmVhZFVpbnQ4QXJyYXkodGhpcy5TUFNbdF0ubGVuZ3RoKSxpLT0yK3RoaXMuU1BTW3RdLmxlbmd0aDtmb3IodGhpcy5uYl9QUFNfbmFsdXM9ZS5yZWFkVWludDgoKSxpLS0sdGhpcy5QUFM9W10sdD0wO3Q8dGhpcy5uYl9QUFNfbmFsdXM7dCsrKXRoaXMuUFBTW3RdPXt9LHRoaXMuUFBTW3RdLmxlbmd0aD1lLnJlYWRVaW50MTYoKSx0aGlzLlBQU1t0XS5uYWx1PWUucmVhZFVpbnQ4QXJyYXkodGhpcy5QUFNbdF0ubGVuZ3RoKSxpLT0yK3RoaXMuUFBTW3RdLmxlbmd0aDtpPjAmJih0aGlzLmV4dD1lLnJlYWRVaW50OEFycmF5KGkpKX0pLG8uY3JlYXRlQm94Q3RvcigiYnRydCIsZnVuY3Rpb24oZSl7dGhpcy5idWZmZXJTaXplREI9ZS5yZWFkVWludDMyKCksdGhpcy5tYXhCaXRyYXRlPWUucmVhZFVpbnQzMigpLHRoaXMuYXZnQml0cmF0ZT1lLnJlYWRVaW50MzIoKX0pLG8uY3JlYXRlQm94Q3RvcigiY2xhcCIsZnVuY3Rpb24oZSl7dGhpcy5jbGVhbkFwZXJ0dXJlV2lkdGhOPWUucmVhZFVpbnQzMigpLHRoaXMuY2xlYW5BcGVydHVyZVdpZHRoRD1lLnJlYWRVaW50MzIoKSx0aGlzLmNsZWFuQXBlcnR1cmVIZWlnaHROPWUucmVhZFVpbnQzMigpLHRoaXMuY2xlYW5BcGVydHVyZUhlaWdodEQ9ZS5yZWFkVWludDMyKCksdGhpcy5ob3Jpek9mZk49ZS5yZWFkVWludDMyKCksdGhpcy5ob3Jpek9mZkQ9ZS5yZWFkVWludDMyKCksdGhpcy52ZXJ0T2ZmTj1lLnJlYWRVaW50MzIoKSx0aGlzLnZlcnRPZmZEPWUucmVhZFVpbnQzMigpfSksby5jcmVhdGVCb3hDdG9yKCJjbGxpIixmdW5jdGlvbihlKXt0aGlzLm1heF9jb250ZW50X2xpZ2h0X2xldmVsPWUucmVhZFVpbnQxNigpLHRoaXMubWF4X3BpY19hdmVyYWdlX2xpZ2h0X2xldmVsPWUucmVhZFVpbnQxNigpfSksby5jcmVhdGVGdWxsQm94Q3RvcigiY282NCIsZnVuY3Rpb24oZSl7dmFyIHQsaTtpZih0PWUucmVhZFVpbnQzMigpLHRoaXMuY2h1bmtfb2Zmc2V0cz1bXSx0aGlzLnZlcnNpb249PT0wKWZvcihpPTA7aTx0O2krKyl0aGlzLmNodW5rX29mZnNldHMucHVzaChlLnJlYWRVaW50NjQoKSl9KSxvLmNyZWF0ZUZ1bGxCb3hDdG9yKCJDb0xMIixmdW5jdGlvbihlKXt0aGlzLm1heENMTD1lLnJlYWRVaW50MTYoKSx0aGlzLm1heEZBTEw9ZS5yZWFkVWludDE2KCl9KSxvLmNyZWF0ZUJveEN0b3IoImNvbHIiLGZ1bmN0aW9uKGUpe2lmKHRoaXMuY29sb3VyX3R5cGU9ZS5yZWFkU3RyaW5nKDQpLHRoaXMuY29sb3VyX3R5cGU9PT0ibmNseCIpe3RoaXMuY29sb3VyX3ByaW1hcmllcz1lLnJlYWRVaW50MTYoKSx0aGlzLnRyYW5zZmVyX2NoYXJhY3RlcmlzdGljcz1lLnJlYWRVaW50MTYoKSx0aGlzLm1hdHJpeF9jb2VmZmljaWVudHM9ZS5yZWFkVWludDE2KCk7dmFyIHQ9ZS5yZWFkVWludDgoKTt0aGlzLmZ1bGxfcmFuZ2VfZmxhZz10Pj43fWVsc2UgdGhpcy5jb2xvdXJfdHlwZT09PSJySUNDIj90aGlzLklDQ19wcm9maWxlPWUucmVhZFVpbnQ4QXJyYXkodGhpcy5zaXplLTQpOnRoaXMuY29sb3VyX3R5cGU9PT0icHJvZiImJih0aGlzLklDQ19wcm9maWxlPWUucmVhZFVpbnQ4QXJyYXkodGhpcy5zaXplLTQpKX0pLG8uY3JlYXRlRnVsbEJveEN0b3IoImNwcnQiLGZ1bmN0aW9uKGUpe3RoaXMucGFyc2VMYW5ndWFnZShlKSx0aGlzLm5vdGljZT1lLnJlYWRDU3RyaW5nKCl9KSxvLmNyZWF0ZUZ1bGxCb3hDdG9yKCJjc2xnIixmdW5jdGlvbihlKXt0aGlzLnZlcnNpb249PT0wJiYodGhpcy5jb21wb3NpdGlvblRvRFRTU2hpZnQ9ZS5yZWFkSW50MzIoKSx0aGlzLmxlYXN0RGVjb2RlVG9EaXNwbGF5RGVsdGE9ZS5yZWFkSW50MzIoKSx0aGlzLmdyZWF0ZXN0RGVjb2RlVG9EaXNwbGF5RGVsdGE9ZS5yZWFkSW50MzIoKSx0aGlzLmNvbXBvc2l0aW9uU3RhcnRUaW1lPWUucmVhZEludDMyKCksdGhpcy5jb21wb3NpdGlvbkVuZFRpbWU9ZS5yZWFkSW50MzIoKSl9KSxvLmNyZWF0ZUZ1bGxCb3hDdG9yKCJjdHRzIixmdW5jdGlvbihlKXt2YXIgdCxpO2lmKHQ9ZS5yZWFkVWludDMyKCksdGhpcy5zYW1wbGVfY291bnRzPVtdLHRoaXMuc2FtcGxlX29mZnNldHM9W10sdGhpcy52ZXJzaW9uPT09MClmb3IoaT0wO2k8dDtpKyspe3RoaXMuc2FtcGxlX2NvdW50cy5wdXNoKGUucmVhZFVpbnQzMigpKTt2YXIgZj1lLnJlYWRJbnQzMigpO2Y8MCYmci53YXJuKCJCb3hQYXJzZXIiLCJjdHRzIGJveCB1c2VzIG5lZ2F0aXZlIHZhbHVlcyB3aXRob3V0IHVzaW5nIHZlcnNpb24gMSIpLHRoaXMuc2FtcGxlX29mZnNldHMucHVzaChmKX1lbHNlIGlmKHRoaXMudmVyc2lvbj09MSlmb3IoaT0wO2k8dDtpKyspdGhpcy5zYW1wbGVfY291bnRzLnB1c2goZS5yZWFkVWludDMyKCkpLHRoaXMuc2FtcGxlX29mZnNldHMucHVzaChlLnJlYWRJbnQzMigpKX0pLG8uY3JlYXRlQm94Q3RvcigiZGFjMyIsZnVuY3Rpb24oZSl7dmFyIHQ9ZS5yZWFkVWludDgoKSxpPWUucmVhZFVpbnQ4KCksZj1lLnJlYWRVaW50OCgpO3RoaXMuZnNjb2Q9dD4+Nix0aGlzLmJzaWQ9dD4+MSYzMSx0aGlzLmJzbW9kPSh0JjEpPDwyfGk+PjYmMyx0aGlzLmFjbW9kPWk+PjMmNyx0aGlzLmxmZW9uPWk+PjImMSx0aGlzLmJpdF9yYXRlX2NvZGU9aSYzfGY+PjUmN30pLG8uY3JlYXRlQm94Q3RvcigiZGVjMyIsZnVuY3Rpb24oZSl7dmFyIHQ9ZS5yZWFkVWludDE2KCk7dGhpcy5kYXRhX3JhdGU9dD4+Myx0aGlzLm51bV9pbmRfc3ViPXQmNyx0aGlzLmluZF9zdWJzPVtdO2Zvcih2YXIgaT0wO2k8dGhpcy5udW1faW5kX3N1YisxO2krKyl7dmFyIGY9e307dGhpcy5pbmRfc3Vicy5wdXNoKGYpO3ZhciB1PWUucmVhZFVpbnQ4KCksdj1lLnJlYWRVaW50OCgpLHk9ZS5yZWFkVWludDgoKTtmLmZzY29kPXU+PjYsZi5ic2lkPXU+PjEmMzEsZi5ic21vZD0odSYxKTw8NHx2Pj40JjE1LGYuYWNtb2Q9dj4+MSY3LGYubGZlb249diYxLGYubnVtX2RlcF9zdWI9eT4+MSYxNSxmLm51bV9kZXBfc3ViPjAmJihmLmNoYW5fbG9jPSh5JjEpPDw4fGUucmVhZFVpbnQ4KCkpfX0pLG8uY3JlYXRlRnVsbEJveEN0b3IoImRmTGEiLGZ1bmN0aW9uKGUpe3ZhciB0PTEyNyxpPTEyOCxmPVtdLHU9WyJTVFJFQU1JTkZPIiwiUEFERElORyIsIkFQUExJQ0FUSU9OIiwiU0VFS1RBQkxFIiwiVk9SQklTX0NPTU1FTlQiLCJDVUVTSEVFVCIsIlBJQ1RVUkUiLCJSRVNFUlZFRCJdO3RoaXMucGFyc2VGdWxsSGVhZGVyKGUpO2Rve3ZhciB2PWUucmVhZFVpbnQ4KCkseT1NYXRoLm1pbih2JnQsdS5sZW5ndGgtMSk7aWYoeT9lLnJlYWRVaW50OEFycmF5KGUucmVhZFVpbnQyNCgpKTooZS5yZWFkVWludDhBcnJheSgxMyksdGhpcy5zYW1wbGVyYXRlPWUucmVhZFVpbnQzMigpPj4xMixlLnJlYWRVaW50OEFycmF5KDIwKSksZi5wdXNoKHVbeV0pLHYmaSlicmVha313aGlsZSghMCk7dGhpcy5udW1NZXRhZGF0YUJsb2Nrcz1mLmxlbmd0aCsiICgiK2Yuam9pbigiLCAiKSsiKSJ9KSxvLmNyZWF0ZUJveEN0b3IoImRpbW0iLGZ1bmN0aW9uKGUpe3RoaXMuYnl0ZXNzZW50PWUucmVhZFVpbnQ2NCgpfSksby5jcmVhdGVCb3hDdG9yKCJkbWF4IixmdW5jdGlvbihlKXt0aGlzLnRpbWU9ZS5yZWFkVWludDMyKCl9KSxvLmNyZWF0ZUJveEN0b3IoImRtZWQiLGZ1bmN0aW9uKGUpe3RoaXMuYnl0ZXNzZW50PWUucmVhZFVpbnQ2NCgpfSksby5jcmVhdGVCb3hDdG9yKCJkT3BzIixmdW5jdGlvbihlKXtpZih0aGlzLlZlcnNpb249ZS5yZWFkVWludDgoKSx0aGlzLk91dHB1dENoYW5uZWxDb3VudD1lLnJlYWRVaW50OCgpLHRoaXMuUHJlU2tpcD1lLnJlYWRVaW50MTYoKSx0aGlzLklucHV0U2FtcGxlUmF0ZT1lLnJlYWRVaW50MzIoKSx0aGlzLk91dHB1dEdhaW49ZS5yZWFkSW50MTYoKSx0aGlzLkNoYW5uZWxNYXBwaW5nRmFtaWx5PWUucmVhZFVpbnQ4KCksdGhpcy5DaGFubmVsTWFwcGluZ0ZhbWlseSE9PTApe3RoaXMuU3RyZWFtQ291bnQ9ZS5yZWFkVWludDgoKSx0aGlzLkNvdXBsZWRDb3VudD1lLnJlYWRVaW50OCgpLHRoaXMuQ2hhbm5lbE1hcHBpbmc9W107Zm9yKHZhciB0PTA7dDx0aGlzLk91dHB1dENoYW5uZWxDb3VudDt0KyspdGhpcy5DaGFubmVsTWFwcGluZ1t0XT1lLnJlYWRVaW50OCgpfX0pLG8uY3JlYXRlRnVsbEJveEN0b3IoImRyZWYiLGZ1bmN0aW9uKGUpe3ZhciB0LGk7dGhpcy5lbnRyaWVzPVtdO2Zvcih2YXIgZj1lLnJlYWRVaW50MzIoKSx1PTA7dTxmO3UrKylpZih0PW8ucGFyc2VPbmVCb3goZSwhMSx0aGlzLnNpemUtKGUuZ2V0UG9zaXRpb24oKS10aGlzLnN0YXJ0KSksdC5jb2RlPT09by5PSylpPXQuYm94LHRoaXMuZW50cmllcy5wdXNoKGkpO2Vsc2UgcmV0dXJufSksby5jcmVhdGVCb3hDdG9yKCJkcmVwIixmdW5jdGlvbihlKXt0aGlzLmJ5dGVzc2VudD1lLnJlYWRVaW50NjQoKX0pLG8uY3JlYXRlRnVsbEJveEN0b3IoImVsbmciLGZ1bmN0aW9uKGUpe3RoaXMuZXh0ZW5kZWRfbGFuZ3VhZ2U9ZS5yZWFkU3RyaW5nKHRoaXMuc2l6ZS10aGlzLmhkcl9zaXplKX0pLG8uY3JlYXRlRnVsbEJveEN0b3IoImVsc3QiLGZ1bmN0aW9uKGUpe3RoaXMuZW50cmllcz1bXTtmb3IodmFyIHQ9ZS5yZWFkVWludDMyKCksaT0wO2k8dDtpKyspe3ZhciBmPXt9O3RoaXMuZW50cmllcy5wdXNoKGYpLHRoaXMudmVyc2lvbj09PTE/KGYuc2VnbWVudF9kdXJhdGlvbj1lLnJlYWRVaW50NjQoKSxmLm1lZGlhX3RpbWU9ZS5yZWFkSW50NjQoKSk6KGYuc2VnbWVudF9kdXJhdGlvbj1lLnJlYWRVaW50MzIoKSxmLm1lZGlhX3RpbWU9ZS5yZWFkSW50MzIoKSksZi5tZWRpYV9yYXRlX2ludGVnZXI9ZS5yZWFkSW50MTYoKSxmLm1lZGlhX3JhdGVfZnJhY3Rpb249ZS5yZWFkSW50MTYoKX19KSxvLmNyZWF0ZUZ1bGxCb3hDdG9yKCJlbXNnIixmdW5jdGlvbihlKXt0aGlzLnZlcnNpb249PTE/KHRoaXMudGltZXNjYWxlPWUucmVhZFVpbnQzMigpLHRoaXMucHJlc2VudGF0aW9uX3RpbWU9ZS5yZWFkVWludDY0KCksdGhpcy5ldmVudF9kdXJhdGlvbj1lLnJlYWRVaW50MzIoKSx0aGlzLmlkPWUucmVhZFVpbnQzMigpLHRoaXMuc2NoZW1lX2lkX3VyaT1lLnJlYWRDU3RyaW5nKCksdGhpcy52YWx1ZT1lLnJlYWRDU3RyaW5nKCkpOih0aGlzLnNjaGVtZV9pZF91cmk9ZS5yZWFkQ1N0cmluZygpLHRoaXMudmFsdWU9ZS5yZWFkQ1N0cmluZygpLHRoaXMudGltZXNjYWxlPWUucmVhZFVpbnQzMigpLHRoaXMucHJlc2VudGF0aW9uX3RpbWVfZGVsdGE9ZS5yZWFkVWludDMyKCksdGhpcy5ldmVudF9kdXJhdGlvbj1lLnJlYWRVaW50MzIoKSx0aGlzLmlkPWUucmVhZFVpbnQzMigpKTt2YXIgdD10aGlzLnNpemUtdGhpcy5oZHJfc2l6ZS0oNCo0Kyh0aGlzLnNjaGVtZV9pZF91cmkubGVuZ3RoKzEpKyh0aGlzLnZhbHVlLmxlbmd0aCsxKSk7dGhpcy52ZXJzaW9uPT0xJiYodC09NCksdGhpcy5tZXNzYWdlX2RhdGE9ZS5yZWFkVWludDhBcnJheSh0KX0pLG8uY3JlYXRlRnVsbEJveEN0b3IoImVzZHMiLGZ1bmN0aW9uKGUpe3ZhciB0PWUucmVhZFVpbnQ4QXJyYXkodGhpcy5zaXplLXRoaXMuaGRyX3NpemUpO2lmKHR5cGVvZiBoPCJ1Iil7dmFyIGk9bmV3IGg7dGhpcy5lc2Q9aS5wYXJzZU9uZURlc2NyaXB0b3IobmV3IHModC5idWZmZXIsMCxzLkJJR19FTkRJQU4pKX19KSxvLmNyZWF0ZUJveEN0b3IoImZpZWwiLGZ1bmN0aW9uKGUpe3RoaXMuZmllbGRDb3VudD1lLnJlYWRVaW50OCgpLHRoaXMuZmllbGRPcmRlcmluZz1lLnJlYWRVaW50OCgpfSksby5jcmVhdGVCb3hDdG9yKCJmcm1hIixmdW5jdGlvbihlKXt0aGlzLmRhdGFfZm9ybWF0PWUucmVhZFN0cmluZyg0KX0pLG8uY3JlYXRlQm94Q3RvcigiZnR5cCIsZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5zaXplLXRoaXMuaGRyX3NpemU7dGhpcy5tYWpvcl9icmFuZD1lLnJlYWRTdHJpbmcoNCksdGhpcy5taW5vcl92ZXJzaW9uPWUucmVhZFVpbnQzMigpLHQtPTgsdGhpcy5jb21wYXRpYmxlX2JyYW5kcz1bXTtmb3IodmFyIGk9MDt0Pj00Oyl0aGlzLmNvbXBhdGlibGVfYnJhbmRzW2ldPWUucmVhZFN0cmluZyg0KSx0LT00LGkrK30pLG8uY3JlYXRlRnVsbEJveEN0b3IoImhkbHIiLGZ1bmN0aW9uKGUpe3RoaXMudmVyc2lvbj09PTAmJihlLnJlYWRVaW50MzIoKSx0aGlzLmhhbmRsZXI9ZS5yZWFkU3RyaW5nKDQpLGUucmVhZFVpbnQzMkFycmF5KDMpLHRoaXMubmFtZT1lLnJlYWRTdHJpbmcodGhpcy5zaXplLXRoaXMuaGRyX3NpemUtMjApLHRoaXMubmFtZVt0aGlzLm5hbWUubGVuZ3RoLTFdPT09IlwwIiYmKHRoaXMubmFtZT10aGlzLm5hbWUuc2xpY2UoMCwtMSkpKX0pLG8uY3JlYXRlQm94Q3RvcigiaHZjQyIsZnVuY3Rpb24oZSl7dmFyIHQsaSxmLHU7dGhpcy5jb25maWd1cmF0aW9uVmVyc2lvbj1lLnJlYWRVaW50OCgpLHU9ZS5yZWFkVWludDgoKSx0aGlzLmdlbmVyYWxfcHJvZmlsZV9zcGFjZT11Pj42LHRoaXMuZ2VuZXJhbF90aWVyX2ZsYWc9KHUmMzIpPj41LHRoaXMuZ2VuZXJhbF9wcm9maWxlX2lkYz11JjMxLHRoaXMuZ2VuZXJhbF9wcm9maWxlX2NvbXBhdGliaWxpdHk9ZS5yZWFkVWludDMyKCksdGhpcy5nZW5lcmFsX2NvbnN0cmFpbnRfaW5kaWNhdG9yPWUucmVhZFVpbnQ4QXJyYXkoNiksdGhpcy5nZW5lcmFsX2xldmVsX2lkYz1lLnJlYWRVaW50OCgpLHRoaXMubWluX3NwYXRpYWxfc2VnbWVudGF0aW9uX2lkYz1lLnJlYWRVaW50MTYoKSY0MDk1LHRoaXMucGFyYWxsZWxpc21UeXBlPWUucmVhZFVpbnQ4KCkmMyx0aGlzLmNocm9tYV9mb3JtYXRfaWRjPWUucmVhZFVpbnQ4KCkmMyx0aGlzLmJpdF9kZXB0aF9sdW1hX21pbnVzOD1lLnJlYWRVaW50OCgpJjcsdGhpcy5iaXRfZGVwdGhfY2hyb21hX21pbnVzOD1lLnJlYWRVaW50OCgpJjcsdGhpcy5hdmdGcmFtZVJhdGU9ZS5yZWFkVWludDE2KCksdT1lLnJlYWRVaW50OCgpLHRoaXMuY29uc3RhbnRGcmFtZVJhdGU9dT4+Nix0aGlzLm51bVRlbXBvcmFsTGF5ZXJzPSh1JjEzKT4+Myx0aGlzLnRlbXBvcmFsSWROZXN0ZWQ9KHUmNCk+PjIsdGhpcy5sZW5ndGhTaXplTWludXNPbmU9dSYzLHRoaXMubmFsdV9hcnJheXM9W107dmFyIHY9ZS5yZWFkVWludDgoKTtmb3IodD0wO3Q8djt0Kyspe3ZhciB5PVtdO3RoaXMubmFsdV9hcnJheXMucHVzaCh5KSx1PWUucmVhZFVpbnQ4KCkseS5jb21wbGV0ZW5lc3M9KHUmMTI4KT4+Nyx5Lm5hbHVfdHlwZT11JjYzO3ZhciBtPWUucmVhZFVpbnQxNigpO2ZvcihpPTA7aTxtO2krKyl7dmFyIGI9e307eS5wdXNoKGIpLGY9ZS5yZWFkVWludDE2KCksYi5kYXRhPWUucmVhZFVpbnQ4QXJyYXkoZil9fX0pLG8uY3JlYXRlRnVsbEJveEN0b3IoImlpbmYiLGZ1bmN0aW9uKGUpe3ZhciB0O3RoaXMudmVyc2lvbj09PTA/dGhpcy5lbnRyeV9jb3VudD1lLnJlYWRVaW50MTYoKTp0aGlzLmVudHJ5X2NvdW50PWUucmVhZFVpbnQzMigpLHRoaXMuaXRlbV9pbmZvcz1bXTtmb3IodmFyIGk9MDtpPHRoaXMuZW50cnlfY291bnQ7aSsrKWlmKHQ9by5wYXJzZU9uZUJveChlLCExLHRoaXMuc2l6ZS0oZS5nZXRQb3NpdGlvbigpLXRoaXMuc3RhcnQpKSx0LmNvZGU9PT1vLk9LKXQuYm94LnR5cGUhPT0iaW5mZSImJnIuZXJyb3IoIkJveFBhcnNlciIsIkV4cGVjdGVkICdpbmZlJyBib3gsIGdvdCAiK3QuYm94LnR5cGUpLHRoaXMuaXRlbV9pbmZvc1tpXT10LmJveDtlbHNlIHJldHVybn0pLG8uY3JlYXRlRnVsbEJveEN0b3IoImlsb2MiLGZ1bmN0aW9uKGUpe3ZhciB0O3Q9ZS5yZWFkVWludDgoKSx0aGlzLm9mZnNldF9zaXplPXQ+PjQmMTUsdGhpcy5sZW5ndGhfc2l6ZT10JjE1LHQ9ZS5yZWFkVWludDgoKSx0aGlzLmJhc2Vfb2Zmc2V0X3NpemU9dD4+NCYxNSx0aGlzLnZlcnNpb249PT0xfHx0aGlzLnZlcnNpb249PT0yP3RoaXMuaW5kZXhfc2l6ZT10JjE1OnRoaXMuaW5kZXhfc2l6ZT0wLHRoaXMuaXRlbXM9W107dmFyIGk9MDtpZih0aGlzLnZlcnNpb248MilpPWUucmVhZFVpbnQxNigpO2Vsc2UgaWYodGhpcy52ZXJzaW9uPT09MilpPWUucmVhZFVpbnQzMigpO2Vsc2UgdGhyb3cidmVyc2lvbiBvZiBpbG9jIGJveCBub3Qgc3VwcG9ydGVkIjtmb3IodmFyIGY9MDtmPGk7ZisrKXt2YXIgdT17fTtpZih0aGlzLml0ZW1zLnB1c2godSksdGhpcy52ZXJzaW9uPDIpdS5pdGVtX0lEPWUucmVhZFVpbnQxNigpO2Vsc2UgaWYodGhpcy52ZXJzaW9uPT09Mil1Lml0ZW1fSUQ9ZS5yZWFkVWludDE2KCk7ZWxzZSB0aHJvdyJ2ZXJzaW9uIG9mIGlsb2MgYm94IG5vdCBzdXBwb3J0ZWQiO3N3aXRjaCh0aGlzLnZlcnNpb249PT0xfHx0aGlzLnZlcnNpb249PT0yP3UuY29uc3RydWN0aW9uX21ldGhvZD1lLnJlYWRVaW50MTYoKSYxNTp1LmNvbnN0cnVjdGlvbl9tZXRob2Q9MCx1LmRhdGFfcmVmZXJlbmNlX2luZGV4PWUucmVhZFVpbnQxNigpLHRoaXMuYmFzZV9vZmZzZXRfc2l6ZSl7Y2FzZSAwOnUuYmFzZV9vZmZzZXQ9MDticmVhaztjYXNlIDQ6dS5iYXNlX29mZnNldD1lLnJlYWRVaW50MzIoKTticmVhaztjYXNlIDg6dS5iYXNlX29mZnNldD1lLnJlYWRVaW50NjQoKTticmVhaztkZWZhdWx0OnRocm93IkVycm9yIHJlYWRpbmcgYmFzZSBvZmZzZXQgc2l6ZSJ9dmFyIHY9ZS5yZWFkVWludDE2KCk7dS5leHRlbnRzPVtdO2Zvcih2YXIgeT0wO3k8djt5Kyspe3ZhciBtPXt9O2lmKHUuZXh0ZW50cy5wdXNoKG0pLHRoaXMudmVyc2lvbj09PTF8fHRoaXMudmVyc2lvbj09PTIpc3dpdGNoKHRoaXMuaW5kZXhfc2l6ZSl7Y2FzZSAwOm0uZXh0ZW50X2luZGV4PTA7YnJlYWs7Y2FzZSA0Om0uZXh0ZW50X2luZGV4PWUucmVhZFVpbnQzMigpO2JyZWFrO2Nhc2UgODptLmV4dGVudF9pbmRleD1lLnJlYWRVaW50NjQoKTticmVhaztkZWZhdWx0OnRocm93IkVycm9yIHJlYWRpbmcgZXh0ZW50IGluZGV4In1zd2l0Y2godGhpcy5vZmZzZXRfc2l6ZSl7Y2FzZSAwOm0uZXh0ZW50X29mZnNldD0wO2JyZWFrO2Nhc2UgNDptLmV4dGVudF9vZmZzZXQ9ZS5yZWFkVWludDMyKCk7YnJlYWs7Y2FzZSA4Om0uZXh0ZW50X29mZnNldD1lLnJlYWRVaW50NjQoKTticmVhaztkZWZhdWx0OnRocm93IkVycm9yIHJlYWRpbmcgZXh0ZW50IGluZGV4In1zd2l0Y2godGhpcy5sZW5ndGhfc2l6ZSl7Y2FzZSAwOm0uZXh0ZW50X2xlbmd0aD0wO2JyZWFrO2Nhc2UgNDptLmV4dGVudF9sZW5ndGg9ZS5yZWFkVWludDMyKCk7YnJlYWs7Y2FzZSA4Om0uZXh0ZW50X2xlbmd0aD1lLnJlYWRVaW50NjQoKTticmVhaztkZWZhdWx0OnRocm93IkVycm9yIHJlYWRpbmcgZXh0ZW50IGluZGV4In19fX0pLG8uY3JlYXRlQm94Q3RvcigiaW1pciIsZnVuY3Rpb24oZSl7dmFyIHQ9ZS5yZWFkVWludDgoKTt0aGlzLnJlc2VydmVkPXQ+PjcsdGhpcy5heGlzPXQmMX0pLG8uY3JlYXRlRnVsbEJveEN0b3IoImluZmUiLGZ1bmN0aW9uKGUpe2lmKCh0aGlzLnZlcnNpb249PT0wfHx0aGlzLnZlcnNpb249PT0xKSYmKHRoaXMuaXRlbV9JRD1lLnJlYWRVaW50MTYoKSx0aGlzLml0ZW1fcHJvdGVjdGlvbl9pbmRleD1lLnJlYWRVaW50MTYoKSx0aGlzLml0ZW1fbmFtZT1lLnJlYWRDU3RyaW5nKCksdGhpcy5jb250ZW50X3R5cGU9ZS5yZWFkQ1N0cmluZygpLHRoaXMuY29udGVudF9lbmNvZGluZz1lLnJlYWRDU3RyaW5nKCkpLHRoaXMudmVyc2lvbj09PTEpe3RoaXMuZXh0ZW5zaW9uX3R5cGU9ZS5yZWFkU3RyaW5nKDQpLHIud2FybigiQm94UGFyc2VyIiwiQ2Fubm90IHBhcnNlIGV4dGVuc2lvbiB0eXBlIiksZS5zZWVrKHRoaXMuc3RhcnQrdGhpcy5zaXplKTtyZXR1cm59dGhpcy52ZXJzaW9uPj0yJiYodGhpcy52ZXJzaW9uPT09Mj90aGlzLml0ZW1fSUQ9ZS5yZWFkVWludDE2KCk6dGhpcy52ZXJzaW9uPT09MyYmKHRoaXMuaXRlbV9JRD1lLnJlYWRVaW50MzIoKSksdGhpcy5pdGVtX3Byb3RlY3Rpb25faW5kZXg9ZS5yZWFkVWludDE2KCksdGhpcy5pdGVtX3R5cGU9ZS5yZWFkU3RyaW5nKDQpLHRoaXMuaXRlbV9uYW1lPWUucmVhZENTdHJpbmcoKSx0aGlzLml0ZW1fdHlwZT09PSJtaW1lIj8odGhpcy5jb250ZW50X3R5cGU9ZS5yZWFkQ1N0cmluZygpLHRoaXMuY29udGVudF9lbmNvZGluZz1lLnJlYWRDU3RyaW5nKCkpOnRoaXMuaXRlbV90eXBlPT09InVyaSAiJiYodGhpcy5pdGVtX3VyaV90eXBlPWUucmVhZENTdHJpbmcoKSkpfSksby5jcmVhdGVGdWxsQm94Q3RvcigiaXBtYSIsZnVuY3Rpb24oZSl7dmFyIHQsaTtmb3IoZW50cnlfY291bnQ9ZS5yZWFkVWludDMyKCksdGhpcy5hc3NvY2lhdGlvbnM9W10sdD0wO3Q8ZW50cnlfY291bnQ7dCsrKXt2YXIgZj17fTt0aGlzLmFzc29jaWF0aW9ucy5wdXNoKGYpLHRoaXMudmVyc2lvbjwxP2YuaWQ9ZS5yZWFkVWludDE2KCk6Zi5pZD1lLnJlYWRVaW50MzIoKTt2YXIgdT1lLnJlYWRVaW50OCgpO2ZvcihmLnByb3BzPVtdLGk9MDtpPHU7aSsrKXt2YXIgdj1lLnJlYWRVaW50OCgpLHk9e307Zi5wcm9wcy5wdXNoKHkpLHkuZXNzZW50aWFsPSh2JjEyOCk+Pjc9PT0xLHRoaXMuZmxhZ3MmMT95LnByb3BlcnR5X2luZGV4PSh2JjEyNyk8PDh8ZS5yZWFkVWludDgoKTp5LnByb3BlcnR5X2luZGV4PXYmMTI3fX19KSxvLmNyZWF0ZUZ1bGxCb3hDdG9yKCJpcmVmIixmdW5jdGlvbihlKXt2YXIgdCxpO2Zvcih0aGlzLnJlZmVyZW5jZXM9W107ZS5nZXRQb3NpdGlvbigpPHRoaXMuc3RhcnQrdGhpcy5zaXplOylpZih0PW8ucGFyc2VPbmVCb3goZSwhMCx0aGlzLnNpemUtKGUuZ2V0UG9zaXRpb24oKS10aGlzLnN0YXJ0KSksdC5jb2RlPT09by5PSyl0aGlzLnZlcnNpb249PT0wP2k9bmV3IG8uU2luZ2xlSXRlbVR5cGVSZWZlcmVuY2VCb3godC50eXBlLHQuc2l6ZSx0Lmhkcl9zaXplLHQuc3RhcnQpOmk9bmV3IG8uU2luZ2xlSXRlbVR5cGVSZWZlcmVuY2VCb3hMYXJnZSh0LnR5cGUsdC5zaXplLHQuaGRyX3NpemUsdC5zdGFydCksaS53cml0ZT09PW8uQm94LnByb3RvdHlwZS53cml0ZSYmaS50eXBlIT09Im1kYXQiJiYoci53YXJuKCJCb3hQYXJzZXIiLGkudHlwZSsiIGJveCB3cml0aW5nIG5vdCB5ZXQgaW1wbGVtZW50ZWQsIGtlZXBpbmcgdW5wYXJzZWQgZGF0YSBpbiBtZW1vcnkgZm9yIGxhdGVyIHdyaXRlIiksaS5wYXJzZURhdGFBbmRSZXdpbmQoZSkpLGkucGFyc2UoZSksdGhpcy5yZWZlcmVuY2VzLnB1c2goaSk7ZWxzZSByZXR1cm59KSxvLmNyZWF0ZUJveEN0b3IoImlyb3QiLGZ1bmN0aW9uKGUpe3RoaXMuYW5nbGU9ZS5yZWFkVWludDgoKSYzfSksby5jcmVhdGVGdWxsQm94Q3RvcigiaXNwZSIsZnVuY3Rpb24oZSl7dGhpcy5pbWFnZV93aWR0aD1lLnJlYWRVaW50MzIoKSx0aGlzLmltYWdlX2hlaWdodD1lLnJlYWRVaW50MzIoKX0pLG8uY3JlYXRlRnVsbEJveEN0b3IoImtpbmQiLGZ1bmN0aW9uKGUpe3RoaXMuc2NoZW1lVVJJPWUucmVhZENTdHJpbmcoKSx0aGlzLnZhbHVlPWUucmVhZENTdHJpbmcoKX0pLG8uY3JlYXRlRnVsbEJveEN0b3IoImxldmEiLGZ1bmN0aW9uKGUpe3ZhciB0PWUucmVhZFVpbnQ4KCk7dGhpcy5sZXZlbHM9W107Zm9yKHZhciBpPTA7aTx0O2krKyl7dmFyIGY9e307dGhpcy5sZXZlbHNbaV09ZixmLnRyYWNrX0lEPWUucmVhZFVpbnQzMigpO3ZhciB1PWUucmVhZFVpbnQ4KCk7c3dpdGNoKGYucGFkZGluZ19mbGFnPXU+PjcsZi5hc3NpZ25tZW50X3R5cGU9dSYxMjcsZi5hc3NpZ25tZW50X3R5cGUpe2Nhc2UgMDpmLmdyb3VwaW5nX3R5cGU9ZS5yZWFkU3RyaW5nKDQpO2JyZWFrO2Nhc2UgMTpmLmdyb3VwaW5nX3R5cGU9ZS5yZWFkU3RyaW5nKDQpLGYuZ3JvdXBpbmdfdHlwZV9wYXJhbWV0ZXI9ZS5yZWFkVWludDMyKCk7YnJlYWs7Y2FzZSAyOmJyZWFrO2Nhc2UgMzpicmVhaztjYXNlIDQ6Zi5zdWJfdHJhY2tfaWQ9ZS5yZWFkVWludDMyKCk7YnJlYWs7ZGVmYXVsdDpyLndhcm4oIkJveFBhcnNlciIsIlVua25vd24gbGV2YSBhc3NpZ25lbWVudCB0eXBlIil9fX0pLG8uY3JlYXRlQm94Q3RvcigibHNlbCIsZnVuY3Rpb24oZSl7dGhpcy5sYXllcl9pZD1lLnJlYWRVaW50MTYoKX0pLG8uY3JlYXRlQm94Q3RvcigibWF4ciIsZnVuY3Rpb24oZSl7dGhpcy5wZXJpb2Q9ZS5yZWFkVWludDMyKCksdGhpcy5ieXRlcz1lLnJlYWRVaW50MzIoKX0pLG8uY3JlYXRlQm94Q3RvcigibWRjdiIsZnVuY3Rpb24oZSl7dGhpcy5kaXNwbGF5X3ByaW1hcmllcz1bXSx0aGlzLmRpc3BsYXlfcHJpbWFyaWVzWzBdPXt9LHRoaXMuZGlzcGxheV9wcmltYXJpZXNbMF0ueD1lLnJlYWRVaW50MTYoKSx0aGlzLmRpc3BsYXlfcHJpbWFyaWVzWzBdLnk9ZS5yZWFkVWludDE2KCksdGhpcy5kaXNwbGF5X3ByaW1hcmllc1sxXT17fSx0aGlzLmRpc3BsYXlfcHJpbWFyaWVzWzFdLng9ZS5yZWFkVWludDE2KCksdGhpcy5kaXNwbGF5X3ByaW1hcmllc1sxXS55PWUucmVhZFVpbnQxNigpLHRoaXMuZGlzcGxheV9wcmltYXJpZXNbMl09e30sdGhpcy5kaXNwbGF5X3ByaW1hcmllc1syXS54PWUucmVhZFVpbnQxNigpLHRoaXMuZGlzcGxheV9wcmltYXJpZXNbMl0ueT1lLnJlYWRVaW50MTYoKSx0aGlzLndoaXRlX3BvaW50PXt9LHRoaXMud2hpdGVfcG9pbnQueD1lLnJlYWRVaW50MTYoKSx0aGlzLndoaXRlX3BvaW50Lnk9ZS5yZWFkVWludDE2KCksdGhpcy5tYXhfZGlzcGxheV9tYXN0ZXJpbmdfbHVtaW5hbmNlPWUucmVhZFVpbnQzMigpLHRoaXMubWluX2Rpc3BsYXlfbWFzdGVyaW5nX2x1bWluYW5jZT1lLnJlYWRVaW50MzIoKX0pLG8uY3JlYXRlRnVsbEJveEN0b3IoIm1kaGQiLGZ1bmN0aW9uKGUpe3RoaXMudmVyc2lvbj09MT8odGhpcy5jcmVhdGlvbl90aW1lPWUucmVhZFVpbnQ2NCgpLHRoaXMubW9kaWZpY2F0aW9uX3RpbWU9ZS5yZWFkVWludDY0KCksdGhpcy50aW1lc2NhbGU9ZS5yZWFkVWludDMyKCksdGhpcy5kdXJhdGlvbj1lLnJlYWRVaW50NjQoKSk6KHRoaXMuY3JlYXRpb25fdGltZT1lLnJlYWRVaW50MzIoKSx0aGlzLm1vZGlmaWNhdGlvbl90aW1lPWUucmVhZFVpbnQzMigpLHRoaXMudGltZXNjYWxlPWUucmVhZFVpbnQzMigpLHRoaXMuZHVyYXRpb249ZS5yZWFkVWludDMyKCkpLHRoaXMucGFyc2VMYW5ndWFnZShlKSxlLnJlYWRVaW50MTYoKX0pLG8uY3JlYXRlRnVsbEJveEN0b3IoIm1laGQiLGZ1bmN0aW9uKGUpe3RoaXMuZmxhZ3MmMSYmKHIud2FybigiQm94UGFyc2VyIiwibWVoZCBib3ggaW5jb3JyZWN0bHkgdXNlcyBmbGFncyBzZXQgdG8gMSwgY29udmVydGluZyB2ZXJzaW9uIHRvIDEiKSx0aGlzLnZlcnNpb249MSksdGhpcy52ZXJzaW9uPT0xP3RoaXMuZnJhZ21lbnRfZHVyYXRpb249ZS5yZWFkVWludDY0KCk6dGhpcy5mcmFnbWVudF9kdXJhdGlvbj1lLnJlYWRVaW50MzIoKX0pLG8uY3JlYXRlRnVsbEJveEN0b3IoIm1ldGEiLGZ1bmN0aW9uKGUpe3RoaXMuYm94ZXM9W10sby5Db250YWluZXJCb3gucHJvdG90eXBlLnBhcnNlLmNhbGwodGhpcyxlKX0pLG8uY3JlYXRlRnVsbEJveEN0b3IoIm1maGQiLGZ1bmN0aW9uKGUpe3RoaXMuc2VxdWVuY2VfbnVtYmVyPWUucmVhZFVpbnQzMigpfSksby5jcmVhdGVGdWxsQm94Q3RvcigibWZybyIsZnVuY3Rpb24oZSl7dGhpcy5fc2l6ZT1lLnJlYWRVaW50MzIoKX0pLG8uY3JlYXRlRnVsbEJveEN0b3IoIm12aGQiLGZ1bmN0aW9uKGUpe3RoaXMudmVyc2lvbj09MT8odGhpcy5jcmVhdGlvbl90aW1lPWUucmVhZFVpbnQ2NCgpLHRoaXMubW9kaWZpY2F0aW9uX3RpbWU9ZS5yZWFkVWludDY0KCksdGhpcy50aW1lc2NhbGU9ZS5yZWFkVWludDMyKCksdGhpcy5kdXJhdGlvbj1lLnJlYWRVaW50NjQoKSk6KHRoaXMuY3JlYXRpb25fdGltZT1lLnJlYWRVaW50MzIoKSx0aGlzLm1vZGlmaWNhdGlvbl90aW1lPWUucmVhZFVpbnQzMigpLHRoaXMudGltZXNjYWxlPWUucmVhZFVpbnQzMigpLHRoaXMuZHVyYXRpb249ZS5yZWFkVWludDMyKCkpLHRoaXMucmF0ZT1lLnJlYWRVaW50MzIoKSx0aGlzLnZvbHVtZT1lLnJlYWRVaW50MTYoKT4+OCxlLnJlYWRVaW50MTYoKSxlLnJlYWRVaW50MzJBcnJheSgyKSx0aGlzLm1hdHJpeD1lLnJlYWRVaW50MzJBcnJheSg5KSxlLnJlYWRVaW50MzJBcnJheSg2KSx0aGlzLm5leHRfdHJhY2tfaWQ9ZS5yZWFkVWludDMyKCl9KSxvLmNyZWF0ZUJveEN0b3IoIm5wY2siLGZ1bmN0aW9uKGUpe3RoaXMucGFja2V0c3NlbnQ9ZS5yZWFkVWludDMyKCl9KSxvLmNyZWF0ZUJveEN0b3IoIm51bXAiLGZ1bmN0aW9uKGUpe3RoaXMucGFja2V0c3NlbnQ9ZS5yZWFkVWludDY0KCl9KSxvLmNyZWF0ZUZ1bGxCb3hDdG9yKCJwYWRiIixmdW5jdGlvbihlKXt2YXIgdD1lLnJlYWRVaW50MzIoKTt0aGlzLnBhZGJpdHM9W107Zm9yKHZhciBpPTA7aTxNYXRoLmZsb29yKCh0KzEpLzIpO2krKyl0aGlzLnBhZGJpdHM9ZS5yZWFkVWludDgoKX0pLG8uY3JlYXRlQm94Q3RvcigicGFzcCIsZnVuY3Rpb24oZSl7dGhpcy5oU3BhY2luZz1lLnJlYWRVaW50MzIoKSx0aGlzLnZTcGFjaW5nPWUucmVhZFVpbnQzMigpfSksby5jcmVhdGVCb3hDdG9yKCJwYXlsIixmdW5jdGlvbihlKXt0aGlzLnRleHQ9ZS5yZWFkU3RyaW5nKHRoaXMuc2l6ZS10aGlzLmhkcl9zaXplKX0pLG8uY3JlYXRlQm94Q3RvcigicGF5dCIsZnVuY3Rpb24oZSl7dGhpcy5wYXlsb2FkSUQ9ZS5yZWFkVWludDMyKCk7dmFyIHQ9ZS5yZWFkVWludDgoKTt0aGlzLnJ0cG1hcF9zdHJpbmc9ZS5yZWFkU3RyaW5nKHQpfSksby5jcmVhdGVGdWxsQm94Q3RvcigicGRpbiIsZnVuY3Rpb24oZSl7dmFyIHQ9KHRoaXMuc2l6ZS10aGlzLmhkcl9zaXplKS84O3RoaXMucmF0ZT1bXSx0aGlzLmluaXRpYWxfZGVsYXk9W107Zm9yKHZhciBpPTA7aTx0O2krKyl0aGlzLnJhdGVbaV09ZS5yZWFkVWludDMyKCksdGhpcy5pbml0aWFsX2RlbGF5W2ldPWUucmVhZFVpbnQzMigpfSksby5jcmVhdGVGdWxsQm94Q3RvcigicGl0bSIsZnVuY3Rpb24oZSl7dGhpcy52ZXJzaW9uPT09MD90aGlzLml0ZW1faWQ9ZS5yZWFkVWludDE2KCk6dGhpcy5pdGVtX2lkPWUucmVhZFVpbnQzMigpfSksby5jcmVhdGVGdWxsQm94Q3RvcigicGl4aSIsZnVuY3Rpb24oZSl7dmFyIHQ7Zm9yKHRoaXMubnVtX2NoYW5uZWxzPWUucmVhZFVpbnQ4KCksdGhpcy5iaXRzX3Blcl9jaGFubmVscz1bXSx0PTA7dDx0aGlzLm51bV9jaGFubmVsczt0KyspdGhpcy5iaXRzX3Blcl9jaGFubmVsc1t0XT1lLnJlYWRVaW50OCgpfSksby5jcmVhdGVCb3hDdG9yKCJwbWF4IixmdW5jdGlvbihlKXt0aGlzLmJ5dGVzPWUucmVhZFVpbnQzMigpfSksby5jcmVhdGVGdWxsQm94Q3RvcigicHJmdCIsZnVuY3Rpb24oZSl7dGhpcy5yZWZfdHJhY2tfaWQ9ZS5yZWFkVWludDMyKCksdGhpcy5udHBfdGltZXN0YW1wPWUucmVhZFVpbnQ2NCgpLHRoaXMudmVyc2lvbj09PTA/dGhpcy5tZWRpYV90aW1lPWUucmVhZFVpbnQzMigpOnRoaXMubWVkaWFfdGltZT1lLnJlYWRVaW50NjQoKX0pLG8uY3JlYXRlRnVsbEJveEN0b3IoInBzc2giLGZ1bmN0aW9uKGUpe2lmKHRoaXMuc3lzdGVtX2lkPW8ucGFyc2VIZXgxNihlKSx0aGlzLnZlcnNpb24+MCl7dmFyIHQ9ZS5yZWFkVWludDMyKCk7dGhpcy5raWQ9W107Zm9yKHZhciBpPTA7aTx0O2krKyl0aGlzLmtpZFtpXT1vLnBhcnNlSGV4MTYoZSl9dmFyIGY9ZS5yZWFkVWludDMyKCk7Zj4wJiYodGhpcy5kYXRhPWUucmVhZFVpbnQ4QXJyYXkoZikpfSksby5jcmVhdGVGdWxsQm94Q3RvcigiY2xlZiIsZnVuY3Rpb24oZSl7dGhpcy53aWR0aD1lLnJlYWRVaW50MzIoKSx0aGlzLmhlaWdodD1lLnJlYWRVaW50MzIoKX0pLG8uY3JlYXRlRnVsbEJveEN0b3IoImVub2YiLGZ1bmN0aW9uKGUpe3RoaXMud2lkdGg9ZS5yZWFkVWludDMyKCksdGhpcy5oZWlnaHQ9ZS5yZWFkVWludDMyKCl9KSxvLmNyZWF0ZUZ1bGxCb3hDdG9yKCJwcm9mIixmdW5jdGlvbihlKXt0aGlzLndpZHRoPWUucmVhZFVpbnQzMigpLHRoaXMuaGVpZ2h0PWUucmVhZFVpbnQzMigpfSksby5jcmVhdGVDb250YWluZXJCb3hDdG9yKCJ0YXB0IixudWxsLFsiY2xlZiIsInByb2YiLCJlbm9mIl0pLG8uY3JlYXRlQm94Q3RvcigicnRwICIsZnVuY3Rpb24oZSl7dGhpcy5kZXNjcmlwdGlvbmZvcm1hdD1lLnJlYWRTdHJpbmcoNCksdGhpcy5zZHB0ZXh0PWUucmVhZFN0cmluZyh0aGlzLnNpemUtdGhpcy5oZHJfc2l6ZS00KX0pLG8uY3JlYXRlRnVsbEJveEN0b3IoInNhaW8iLGZ1bmN0aW9uKGUpe3RoaXMuZmxhZ3MmMSYmKHRoaXMuYXV4X2luZm9fdHlwZT1lLnJlYWRVaW50MzIoKSx0aGlzLmF1eF9pbmZvX3R5cGVfcGFyYW1ldGVyPWUucmVhZFVpbnQzMigpKTt2YXIgdD1lLnJlYWRVaW50MzIoKTt0aGlzLm9mZnNldD1bXTtmb3IodmFyIGk9MDtpPHQ7aSsrKXRoaXMudmVyc2lvbj09PTA/dGhpcy5vZmZzZXRbaV09ZS5yZWFkVWludDMyKCk6dGhpcy5vZmZzZXRbaV09ZS5yZWFkVWludDY0KCl9KSxvLmNyZWF0ZUZ1bGxCb3hDdG9yKCJzYWl6IixmdW5jdGlvbihlKXt0aGlzLmZsYWdzJjEmJih0aGlzLmF1eF9pbmZvX3R5cGU9ZS5yZWFkVWludDMyKCksdGhpcy5hdXhfaW5mb190eXBlX3BhcmFtZXRlcj1lLnJlYWRVaW50MzIoKSksdGhpcy5kZWZhdWx0X3NhbXBsZV9pbmZvX3NpemU9ZS5yZWFkVWludDgoKTt2YXIgdD1lLnJlYWRVaW50MzIoKTtpZih0aGlzLnNhbXBsZV9pbmZvX3NpemU9W10sdGhpcy5kZWZhdWx0X3NhbXBsZV9pbmZvX3NpemU9PT0wKWZvcih2YXIgaT0wO2k8dDtpKyspdGhpcy5zYW1wbGVfaW5mb19zaXplW2ldPWUucmVhZFVpbnQ4KCl9KSxvLmNyZWF0ZVNhbXBsZUVudHJ5Q3RvcihvLlNBTVBMRV9FTlRSWV9UWVBFX01FVEFEQVRBLCJtZXR0IixmdW5jdGlvbihlKXt0aGlzLnBhcnNlSGVhZGVyKGUpLHRoaXMuY29udGVudF9lbmNvZGluZz1lLnJlYWRDU3RyaW5nKCksdGhpcy5taW1lX2Zvcm1hdD1lLnJlYWRDU3RyaW5nKCksdGhpcy5wYXJzZUZvb3RlcihlKX0pLG8uY3JlYXRlU2FtcGxlRW50cnlDdG9yKG8uU0FNUExFX0VOVFJZX1RZUEVfTUVUQURBVEEsIm1ldHgiLGZ1bmN0aW9uKGUpe3RoaXMucGFyc2VIZWFkZXIoZSksdGhpcy5jb250ZW50X2VuY29kaW5nPWUucmVhZENTdHJpbmcoKSx0aGlzLm5hbWVzcGFjZT1lLnJlYWRDU3RyaW5nKCksdGhpcy5zY2hlbWFfbG9jYXRpb249ZS5yZWFkQ1N0cmluZygpLHRoaXMucGFyc2VGb290ZXIoZSl9KSxvLmNyZWF0ZVNhbXBsZUVudHJ5Q3RvcihvLlNBTVBMRV9FTlRSWV9UWVBFX1NVQlRJVExFLCJzYnR0IixmdW5jdGlvbihlKXt0aGlzLnBhcnNlSGVhZGVyKGUpLHRoaXMuY29udGVudF9lbmNvZGluZz1lLnJlYWRDU3RyaW5nKCksdGhpcy5taW1lX2Zvcm1hdD1lLnJlYWRDU3RyaW5nKCksdGhpcy5wYXJzZUZvb3RlcihlKX0pLG8uY3JlYXRlU2FtcGxlRW50cnlDdG9yKG8uU0FNUExFX0VOVFJZX1RZUEVfU1VCVElUTEUsInN0cHAiLGZ1bmN0aW9uKGUpe3RoaXMucGFyc2VIZWFkZXIoZSksdGhpcy5uYW1lc3BhY2U9ZS5yZWFkQ1N0cmluZygpLHRoaXMuc2NoZW1hX2xvY2F0aW9uPWUucmVhZENTdHJpbmcoKSx0aGlzLmF1eGlsaWFyeV9taW1lX3R5cGVzPWUucmVhZENTdHJpbmcoKSx0aGlzLnBhcnNlRm9vdGVyKGUpfSksby5jcmVhdGVTYW1wbGVFbnRyeUN0b3Ioby5TQU1QTEVfRU5UUllfVFlQRV9TVUJUSVRMRSwic3R4dCIsZnVuY3Rpb24oZSl7dGhpcy5wYXJzZUhlYWRlcihlKSx0aGlzLmNvbnRlbnRfZW5jb2Rpbmc9ZS5yZWFkQ1N0cmluZygpLHRoaXMubWltZV9mb3JtYXQ9ZS5yZWFkQ1N0cmluZygpLHRoaXMucGFyc2VGb290ZXIoZSl9KSxvLmNyZWF0ZVNhbXBsZUVudHJ5Q3RvcihvLlNBTVBMRV9FTlRSWV9UWVBFX1NVQlRJVExFLCJ0eDNnIixmdW5jdGlvbihlKXt0aGlzLnBhcnNlSGVhZGVyKGUpLHRoaXMuZGlzcGxheUZsYWdzPWUucmVhZFVpbnQzMigpLHRoaXMuaG9yaXpvbnRhbF9qdXN0aWZpY2F0aW9uPWUucmVhZEludDgoKSx0aGlzLnZlcnRpY2FsX2p1c3RpZmljYXRpb249ZS5yZWFkSW50OCgpLHRoaXMuYmdfY29sb3JfcmdiYT1lLnJlYWRVaW50OEFycmF5KDQpLHRoaXMuYm94X3JlY29yZD1lLnJlYWRJbnQxNkFycmF5KDQpLHRoaXMuc3R5bGVfcmVjb3JkPWUucmVhZFVpbnQ4QXJyYXkoMTIpLHRoaXMucGFyc2VGb290ZXIoZSl9KSxvLmNyZWF0ZVNhbXBsZUVudHJ5Q3RvcihvLlNBTVBMRV9FTlRSWV9UWVBFX01FVEFEQVRBLCJ3dnR0IixmdW5jdGlvbihlKXt0aGlzLnBhcnNlSGVhZGVyKGUpLHRoaXMucGFyc2VGb290ZXIoZSl9KSxvLmNyZWF0ZVNhbXBsZUdyb3VwQ3RvcigiYWxzdCIsZnVuY3Rpb24oZSl7dmFyIHQsaT1lLnJlYWRVaW50MTYoKTtmb3IodGhpcy5maXJzdF9vdXRwdXRfc2FtcGxlPWUucmVhZFVpbnQxNigpLHRoaXMuc2FtcGxlX29mZnNldD1bXSx0PTA7dDxpO3QrKyl0aGlzLnNhbXBsZV9vZmZzZXRbdF09ZS5yZWFkVWludDMyKCk7dmFyIGY9dGhpcy5kZXNjcmlwdGlvbl9sZW5ndGgtNC00Kmk7Zm9yKHRoaXMubnVtX291dHB1dF9zYW1wbGVzPVtdLHRoaXMubnVtX3RvdGFsX3NhbXBsZXM9W10sdD0wO3Q8Zi80O3QrKyl0aGlzLm51bV9vdXRwdXRfc2FtcGxlc1t0XT1lLnJlYWRVaW50MTYoKSx0aGlzLm51bV90b3RhbF9zYW1wbGVzW3RdPWUucmVhZFVpbnQxNigpfSksby5jcmVhdGVTYW1wbGVHcm91cEN0b3IoImF2bGwiLGZ1bmN0aW9uKGUpe3RoaXMubGF5ZXJOdW1iZXI9ZS5yZWFkVWludDgoKSx0aGlzLmFjY3VyYXRlU3RhdGlzdGljc0ZsYWc9ZS5yZWFkVWludDgoKSx0aGlzLmF2Z0JpdFJhdGU9ZS5yZWFkVWludDE2KCksdGhpcy5hdmdGcmFtZVJhdGU9ZS5yZWFkVWludDE2KCl9KSxvLmNyZWF0ZVNhbXBsZUdyb3VwQ3RvcigiYXZzcyIsZnVuY3Rpb24oZSl7dGhpcy5zdWJTZXF1ZW5jZUlkZW50aWZpZXI9ZS5yZWFkVWludDE2KCksdGhpcy5sYXllck51bWJlcj1lLnJlYWRVaW50OCgpO3ZhciB0PWUucmVhZFVpbnQ4KCk7dGhpcy5kdXJhdGlvbkZsYWc9dD4+Nyx0aGlzLmF2Z1JhdGVGbGFnPXQ+PjYmMSx0aGlzLmR1cmF0aW9uRmxhZyYmKHRoaXMuZHVyYXRpb249ZS5yZWFkVWludDMyKCkpLHRoaXMuYXZnUmF0ZUZsYWcmJih0aGlzLmFjY3VyYXRlU3RhdGlzdGljc0ZsYWc9ZS5yZWFkVWludDgoKSx0aGlzLmF2Z0JpdFJhdGU9ZS5yZWFkVWludDE2KCksdGhpcy5hdmdGcmFtZVJhdGU9ZS5yZWFkVWludDE2KCkpLHRoaXMuZGVwZW5kZW5jeT1bXTtmb3IodmFyIGk9ZS5yZWFkVWludDgoKSxmPTA7ZjxpO2YrKyl7dmFyIHU9e307dGhpcy5kZXBlbmRlbmN5LnB1c2godSksdS5zdWJTZXFEaXJlY3Rpb25GbGFnPWUucmVhZFVpbnQ4KCksdS5sYXllck51bWJlcj1lLnJlYWRVaW50OCgpLHUuc3ViU2VxdWVuY2VJZGVudGlmaWVyPWUucmVhZFVpbnQxNigpfX0pLG8uY3JlYXRlU2FtcGxlR3JvdXBDdG9yKCJkdHJ0IixmdW5jdGlvbihlKXtyLndhcm4oIkJveFBhcnNlciIsIlNhbXBsZSBHcm91cCB0eXBlOiAiK3RoaXMuZ3JvdXBpbmdfdHlwZSsiIG5vdCBmdWxseSBwYXJzZWQiKX0pLG8uY3JlYXRlU2FtcGxlR3JvdXBDdG9yKCJtdmlmIixmdW5jdGlvbihlKXtyLndhcm4oIkJveFBhcnNlciIsIlNhbXBsZSBHcm91cCB0eXBlOiAiK3RoaXMuZ3JvdXBpbmdfdHlwZSsiIG5vdCBmdWxseSBwYXJzZWQiKX0pLG8uY3JlYXRlU2FtcGxlR3JvdXBDdG9yKCJwcm9sIixmdW5jdGlvbihlKXt0aGlzLnJvbGxfZGlzdGFuY2U9ZS5yZWFkSW50MTYoKX0pLG8uY3JlYXRlU2FtcGxlR3JvdXBDdG9yKCJyYXAgIixmdW5jdGlvbihlKXt2YXIgdD1lLnJlYWRVaW50OCgpO3RoaXMubnVtX2xlYWRpbmdfc2FtcGxlc19rbm93bj10Pj43LHRoaXMubnVtX2xlYWRpbmdfc2FtcGxlcz10JjEyN30pLG8uY3JlYXRlU2FtcGxlR3JvdXBDdG9yKCJyYXNoIixmdW5jdGlvbihlKXtpZih0aGlzLm9wZXJhdGlvbl9wb2ludF9jb3VudD1lLnJlYWRVaW50MTYoKSx0aGlzLmRlc2NyaXB0aW9uX2xlbmd0aCE9PTIrKHRoaXMub3BlcmF0aW9uX3BvaW50X2NvdW50PT09MT8yOnRoaXMub3BlcmF0aW9uX3BvaW50X2NvdW50KjYpKzkpci53YXJuKCJCb3hQYXJzZXIiLCJNaXNtYXRjaCBpbiAiK3RoaXMuZ3JvdXBpbmdfdHlwZSsiIHNhbXBsZSBncm91cCBsZW5ndGgiKSx0aGlzLmRhdGE9ZS5yZWFkVWludDhBcnJheSh0aGlzLmRlc2NyaXB0aW9uX2xlbmd0aC0yKTtlbHNle2lmKHRoaXMub3BlcmF0aW9uX3BvaW50X2NvdW50PT09MSl0aGlzLnRhcmdldF9yYXRlX3NoYXJlPWUucmVhZFVpbnQxNigpO2Vsc2V7dGhpcy50YXJnZXRfcmF0ZV9zaGFyZT1bXSx0aGlzLmF2YWlsYWJsZV9iaXRyYXRlPVtdO2Zvcih2YXIgdD0wO3Q8dGhpcy5vcGVyYXRpb25fcG9pbnRfY291bnQ7dCsrKXRoaXMuYXZhaWxhYmxlX2JpdHJhdGVbdF09ZS5yZWFkVWludDMyKCksdGhpcy50YXJnZXRfcmF0ZV9zaGFyZVt0XT1lLnJlYWRVaW50MTYoKX10aGlzLm1heGltdW1fYml0cmF0ZT1lLnJlYWRVaW50MzIoKSx0aGlzLm1pbmltdW1fYml0cmF0ZT1lLnJlYWRVaW50MzIoKSx0aGlzLmRpc2NhcmRfcHJpb3JpdHk9ZS5yZWFkVWludDgoKX19KSxvLmNyZWF0ZVNhbXBsZUdyb3VwQ3Rvcigicm9sbCIsZnVuY3Rpb24oZSl7dGhpcy5yb2xsX2Rpc3RhbmNlPWUucmVhZEludDE2KCl9KSxvLlNhbXBsZUdyb3VwRW50cnkucHJvdG90eXBlLnBhcnNlPWZ1bmN0aW9uKGUpe3Iud2FybigiQm94UGFyc2VyIiwiVW5rbm93biBTYW1wbGUgR3JvdXAgdHlwZTogIit0aGlzLmdyb3VwaW5nX3R5cGUpLHRoaXMuZGF0YT1lLnJlYWRVaW50OEFycmF5KHRoaXMuZGVzY3JpcHRpb25fbGVuZ3RoKX0sby5jcmVhdGVTYW1wbGVHcm91cEN0b3IoInNjaWYiLGZ1bmN0aW9uKGUpe3Iud2FybigiQm94UGFyc2VyIiwiU2FtcGxlIEdyb3VwIHR5cGU6ICIrdGhpcy5ncm91cGluZ190eXBlKyIgbm90IGZ1bGx5IHBhcnNlZCIpfSksby5jcmVhdGVTYW1wbGVHcm91cEN0b3IoInNjbm0iLGZ1bmN0aW9uKGUpe3Iud2FybigiQm94UGFyc2VyIiwiU2FtcGxlIEdyb3VwIHR5cGU6ICIrdGhpcy5ncm91cGluZ190eXBlKyIgbm90IGZ1bGx5IHBhcnNlZCIpfSksby5jcmVhdGVTYW1wbGVHcm91cEN0b3IoInNlaWciLGZ1bmN0aW9uKGUpe3RoaXMucmVzZXJ2ZWQ9ZS5yZWFkVWludDgoKTt2YXIgdD1lLnJlYWRVaW50OCgpO3RoaXMuY3J5cHRfYnl0ZV9ibG9jaz10Pj40LHRoaXMuc2tpcF9ieXRlX2Jsb2NrPXQmMTUsdGhpcy5pc1Byb3RlY3RlZD1lLnJlYWRVaW50OCgpLHRoaXMuUGVyX1NhbXBsZV9JVl9TaXplPWUucmVhZFVpbnQ4KCksdGhpcy5LSUQ9by5wYXJzZUhleDE2KGUpLHRoaXMuY29uc3RhbnRfSVZfc2l6ZT0wLHRoaXMuY29uc3RhbnRfSVY9MCx0aGlzLmlzUHJvdGVjdGVkPT09MSYmdGhpcy5QZXJfU2FtcGxlX0lWX1NpemU9PT0wJiYodGhpcy5jb25zdGFudF9JVl9zaXplPWUucmVhZFVpbnQ4KCksdGhpcy5jb25zdGFudF9JVj1lLnJlYWRVaW50OEFycmF5KHRoaXMuY29uc3RhbnRfSVZfc2l6ZSkpfSksby5jcmVhdGVTYW1wbGVHcm91cEN0b3IoInN0c2EiLGZ1bmN0aW9uKGUpe3Iud2FybigiQm94UGFyc2VyIiwiU2FtcGxlIEdyb3VwIHR5cGU6ICIrdGhpcy5ncm91cGluZ190eXBlKyIgbm90IGZ1bGx5IHBhcnNlZCIpfSksby5jcmVhdGVTYW1wbGVHcm91cEN0b3IoInN5bmMiLGZ1bmN0aW9uKGUpe3ZhciB0PWUucmVhZFVpbnQ4KCk7dGhpcy5OQUxfdW5pdF90eXBlPXQmNjN9KSxvLmNyZWF0ZVNhbXBsZUdyb3VwQ3RvcigidGVsZSIsZnVuY3Rpb24oZSl7dmFyIHQ9ZS5yZWFkVWludDgoKTt0aGlzLmxldmVsX2luZGVwZW5kZW50bHlfZGVjb2RhYmxlPXQ+Pjd9KSxvLmNyZWF0ZVNhbXBsZUdyb3VwQ3RvcigidHNhcyIsZnVuY3Rpb24oZSl7ci53YXJuKCJCb3hQYXJzZXIiLCJTYW1wbGUgR3JvdXAgdHlwZTogIit0aGlzLmdyb3VwaW5nX3R5cGUrIiBub3QgZnVsbHkgcGFyc2VkIil9KSxvLmNyZWF0ZVNhbXBsZUdyb3VwQ3RvcigidHNjbCIsZnVuY3Rpb24oZSl7ci53YXJuKCJCb3hQYXJzZXIiLCJTYW1wbGUgR3JvdXAgdHlwZTogIit0aGlzLmdyb3VwaW5nX3R5cGUrIiBub3QgZnVsbHkgcGFyc2VkIil9KSxvLmNyZWF0ZVNhbXBsZUdyb3VwQ3RvcigidmlwciIsZnVuY3Rpb24oZSl7ci53YXJuKCJCb3hQYXJzZXIiLCJTYW1wbGUgR3JvdXAgdHlwZTogIit0aGlzLmdyb3VwaW5nX3R5cGUrIiBub3QgZnVsbHkgcGFyc2VkIil9KSxvLmNyZWF0ZUZ1bGxCb3hDdG9yKCJzYmdwIixmdW5jdGlvbihlKXt0aGlzLmdyb3VwaW5nX3R5cGU9ZS5yZWFkU3RyaW5nKDQpLHRoaXMudmVyc2lvbj09PTE/dGhpcy5ncm91cGluZ190eXBlX3BhcmFtZXRlcj1lLnJlYWRVaW50MzIoKTp0aGlzLmdyb3VwaW5nX3R5cGVfcGFyYW1ldGVyPTAsdGhpcy5lbnRyaWVzPVtdO2Zvcih2YXIgdD1lLnJlYWRVaW50MzIoKSxpPTA7aTx0O2krKyl7dmFyIGY9e307dGhpcy5lbnRyaWVzLnB1c2goZiksZi5zYW1wbGVfY291bnQ9ZS5yZWFkSW50MzIoKSxmLmdyb3VwX2Rlc2NyaXB0aW9uX2luZGV4PWUucmVhZEludDMyKCl9fSksby5jcmVhdGVGdWxsQm94Q3Rvcigic2NobSIsZnVuY3Rpb24oZSl7dGhpcy5zY2hlbWVfdHlwZT1lLnJlYWRTdHJpbmcoNCksdGhpcy5zY2hlbWVfdmVyc2lvbj1lLnJlYWRVaW50MzIoKSx0aGlzLmZsYWdzJjEmJih0aGlzLnNjaGVtZV91cmk9ZS5yZWFkU3RyaW5nKHRoaXMuc2l6ZS10aGlzLmhkcl9zaXplLTgpKX0pLG8uY3JlYXRlQm94Q3Rvcigic2RwICIsZnVuY3Rpb24oZSl7dGhpcy5zZHB0ZXh0PWUucmVhZFN0cmluZyh0aGlzLnNpemUtdGhpcy5oZHJfc2l6ZSl9KSxvLmNyZWF0ZUZ1bGxCb3hDdG9yKCJzZHRwIixmdW5jdGlvbihlKXt2YXIgdCxpPXRoaXMuc2l6ZS10aGlzLmhkcl9zaXplO3RoaXMuaXNfbGVhZGluZz1bXSx0aGlzLnNhbXBsZV9kZXBlbmRzX29uPVtdLHRoaXMuc2FtcGxlX2lzX2RlcGVuZGVkX29uPVtdLHRoaXMuc2FtcGxlX2hhc19yZWR1bmRhbmN5PVtdO2Zvcih2YXIgZj0wO2Y8aTtmKyspdD1lLnJlYWRVaW50OCgpLHRoaXMuaXNfbGVhZGluZ1tmXT10Pj42LHRoaXMuc2FtcGxlX2RlcGVuZHNfb25bZl09dD4+NCYzLHRoaXMuc2FtcGxlX2lzX2RlcGVuZGVkX29uW2ZdPXQ+PjImMyx0aGlzLnNhbXBsZV9oYXNfcmVkdW5kYW5jeVtmXT10JjN9KSxvLmNyZWF0ZUZ1bGxCb3hDdG9yKCJzZW5jIiksby5jcmVhdGVGdWxsQm94Q3Rvcigic2dwZCIsZnVuY3Rpb24oZSl7dGhpcy5ncm91cGluZ190eXBlPWUucmVhZFN0cmluZyg0KSxyLmRlYnVnKCJCb3hQYXJzZXIiLCJGb3VuZCBTYW1wbGUgR3JvdXBzIG9mIHR5cGUgIit0aGlzLmdyb3VwaW5nX3R5cGUpLHRoaXMudmVyc2lvbj09PTE/dGhpcy5kZWZhdWx0X2xlbmd0aD1lLnJlYWRVaW50MzIoKTp0aGlzLmRlZmF1bHRfbGVuZ3RoPTAsdGhpcy52ZXJzaW9uPj0yJiYodGhpcy5kZWZhdWx0X2dyb3VwX2Rlc2NyaXB0aW9uX2luZGV4PWUucmVhZFVpbnQzMigpKSx0aGlzLmVudHJpZXM9W107Zm9yKHZhciB0PWUucmVhZFVpbnQzMigpLGk9MDtpPHQ7aSsrKXt2YXIgZjtvW3RoaXMuZ3JvdXBpbmdfdHlwZSsiU2FtcGxlR3JvdXBFbnRyeSJdP2Y9bmV3IG9bdGhpcy5ncm91cGluZ190eXBlKyJTYW1wbGVHcm91cEVudHJ5Il0odGhpcy5ncm91cGluZ190eXBlKTpmPW5ldyBvLlNhbXBsZUdyb3VwRW50cnkodGhpcy5ncm91cGluZ190eXBlKSx0aGlzLmVudHJpZXMucHVzaChmKSx0aGlzLnZlcnNpb249PT0xP3RoaXMuZGVmYXVsdF9sZW5ndGg9PT0wP2YuZGVzY3JpcHRpb25fbGVuZ3RoPWUucmVhZFVpbnQzMigpOmYuZGVzY3JpcHRpb25fbGVuZ3RoPXRoaXMuZGVmYXVsdF9sZW5ndGg6Zi5kZXNjcmlwdGlvbl9sZW5ndGg9dGhpcy5kZWZhdWx0X2xlbmd0aCxmLndyaXRlPT09by5TYW1wbGVHcm91cEVudHJ5LnByb3RvdHlwZS53cml0ZSYmKHIuaW5mbygiQm94UGFyc2VyIiwiU2FtcGxlR3JvdXAgZm9yIHR5cGUgIit0aGlzLmdyb3VwaW5nX3R5cGUrIiB3cml0aW5nIG5vdCB5ZXQgaW1wbGVtZW50ZWQsIGtlZXBpbmcgdW5wYXJzZWQgZGF0YSBpbiBtZW1vcnkgZm9yIGxhdGVyIHdyaXRlIiksZi5kYXRhPWUucmVhZFVpbnQ4QXJyYXkoZi5kZXNjcmlwdGlvbl9sZW5ndGgpLGUucG9zaXRpb24tPWYuZGVzY3JpcHRpb25fbGVuZ3RoKSxmLnBhcnNlKGUpfX0pLG8uY3JlYXRlRnVsbEJveEN0b3IoInNpZHgiLGZ1bmN0aW9uKGUpe3RoaXMucmVmZXJlbmNlX0lEPWUucmVhZFVpbnQzMigpLHRoaXMudGltZXNjYWxlPWUucmVhZFVpbnQzMigpLHRoaXMudmVyc2lvbj09PTA/KHRoaXMuZWFybGllc3RfcHJlc2VudGF0aW9uX3RpbWU9ZS5yZWFkVWludDMyKCksdGhpcy5maXJzdF9vZmZzZXQ9ZS5yZWFkVWludDMyKCkpOih0aGlzLmVhcmxpZXN0X3ByZXNlbnRhdGlvbl90aW1lPWUucmVhZFVpbnQ2NCgpLHRoaXMuZmlyc3Rfb2Zmc2V0PWUucmVhZFVpbnQ2NCgpKSxlLnJlYWRVaW50MTYoKSx0aGlzLnJlZmVyZW5jZXM9W107Zm9yKHZhciB0PWUucmVhZFVpbnQxNigpLGk9MDtpPHQ7aSsrKXt2YXIgZj17fTt0aGlzLnJlZmVyZW5jZXMucHVzaChmKTt2YXIgdT1lLnJlYWRVaW50MzIoKTtmLnJlZmVyZW5jZV90eXBlPXU+PjMxJjEsZi5yZWZlcmVuY2VkX3NpemU9dSYyMTQ3NDgzNjQ3LGYuc3Vic2VnbWVudF9kdXJhdGlvbj1lLnJlYWRVaW50MzIoKSx1PWUucmVhZFVpbnQzMigpLGYuc3RhcnRzX3dpdGhfU0FQPXU+PjMxJjEsZi5TQVBfdHlwZT11Pj4yOCY3LGYuU0FQX2RlbHRhX3RpbWU9dSYyNjg0MzU0NTV9fSksby5TaW5nbGVJdGVtVHlwZVJlZmVyZW5jZUJveD1mdW5jdGlvbihlLHQsaSxmKXtvLkJveC5jYWxsKHRoaXMsZSx0KSx0aGlzLmhkcl9zaXplPWksdGhpcy5zdGFydD1mfSxvLlNpbmdsZUl0ZW1UeXBlUmVmZXJlbmNlQm94LnByb3RvdHlwZT1uZXcgby5Cb3gsby5TaW5nbGVJdGVtVHlwZVJlZmVyZW5jZUJveC5wcm90b3R5cGUucGFyc2U9ZnVuY3Rpb24oZSl7dGhpcy5mcm9tX2l0ZW1fSUQ9ZS5yZWFkVWludDE2KCk7dmFyIHQ9ZS5yZWFkVWludDE2KCk7dGhpcy5yZWZlcmVuY2VzPVtdO2Zvcih2YXIgaT0wO2k8dDtpKyspdGhpcy5yZWZlcmVuY2VzW2ldPWUucmVhZFVpbnQxNigpfSxvLlNpbmdsZUl0ZW1UeXBlUmVmZXJlbmNlQm94TGFyZ2U9ZnVuY3Rpb24oZSx0LGksZil7by5Cb3guY2FsbCh0aGlzLGUsdCksdGhpcy5oZHJfc2l6ZT1pLHRoaXMuc3RhcnQ9Zn0sby5TaW5nbGVJdGVtVHlwZVJlZmVyZW5jZUJveExhcmdlLnByb3RvdHlwZT1uZXcgby5Cb3gsby5TaW5nbGVJdGVtVHlwZVJlZmVyZW5jZUJveExhcmdlLnByb3RvdHlwZS5wYXJzZT1mdW5jdGlvbihlKXt0aGlzLmZyb21faXRlbV9JRD1lLnJlYWRVaW50MzIoKTt2YXIgdD1lLnJlYWRVaW50MTYoKTt0aGlzLnJlZmVyZW5jZXM9W107Zm9yKHZhciBpPTA7aTx0O2krKyl0aGlzLnJlZmVyZW5jZXNbaV09ZS5yZWFkVWludDMyKCl9LG8uY3JlYXRlRnVsbEJveEN0b3IoIlNtRG0iLGZ1bmN0aW9uKGUpe3RoaXMucHJpbWFyeVJDaHJvbWF0aWNpdHlfeD1lLnJlYWRVaW50MTYoKSx0aGlzLnByaW1hcnlSQ2hyb21hdGljaXR5X3k9ZS5yZWFkVWludDE2KCksdGhpcy5wcmltYXJ5R0Nocm9tYXRpY2l0eV94PWUucmVhZFVpbnQxNigpLHRoaXMucHJpbWFyeUdDaHJvbWF0aWNpdHlfeT1lLnJlYWRVaW50MTYoKSx0aGlzLnByaW1hcnlCQ2hyb21hdGljaXR5X3g9ZS5yZWFkVWludDE2KCksdGhpcy5wcmltYXJ5QkNocm9tYXRpY2l0eV95PWUucmVhZFVpbnQxNigpLHRoaXMud2hpdGVQb2ludENocm9tYXRpY2l0eV94PWUucmVhZFVpbnQxNigpLHRoaXMud2hpdGVQb2ludENocm9tYXRpY2l0eV95PWUucmVhZFVpbnQxNigpLHRoaXMubHVtaW5hbmNlTWF4PWUucmVhZFVpbnQzMigpLHRoaXMubHVtaW5hbmNlTWluPWUucmVhZFVpbnQzMigpfSksby5jcmVhdGVGdWxsQm94Q3Rvcigic21oZCIsZnVuY3Rpb24oZSl7dGhpcy5iYWxhbmNlPWUucmVhZFVpbnQxNigpLGUucmVhZFVpbnQxNigpfSksby5jcmVhdGVGdWxsQm94Q3Rvcigic3NpeCIsZnVuY3Rpb24oZSl7dGhpcy5zdWJzZWdtZW50cz1bXTtmb3IodmFyIHQ9ZS5yZWFkVWludDMyKCksaT0wO2k8dDtpKyspe3ZhciBmPXt9O3RoaXMuc3Vic2VnbWVudHMucHVzaChmKSxmLnJhbmdlcz1bXTtmb3IodmFyIHU9ZS5yZWFkVWludDMyKCksdj0wO3Y8dTt2Kyspe3ZhciB5PXt9O2YucmFuZ2VzLnB1c2goeSkseS5sZXZlbD1lLnJlYWRVaW50OCgpLHkucmFuZ2Vfc2l6ZT1lLnJlYWRVaW50MjQoKX19fSksby5jcmVhdGVGdWxsQm94Q3Rvcigic3RjbyIsZnVuY3Rpb24oZSl7dmFyIHQ7aWYodD1lLnJlYWRVaW50MzIoKSx0aGlzLmNodW5rX29mZnNldHM9W10sdGhpcy52ZXJzaW9uPT09MClmb3IodmFyIGk9MDtpPHQ7aSsrKXRoaXMuY2h1bmtfb2Zmc2V0cy5wdXNoKGUucmVhZFVpbnQzMigpKX0pLG8uY3JlYXRlRnVsbEJveEN0b3IoInN0ZHAiLGZ1bmN0aW9uKGUpe3ZhciB0PSh0aGlzLnNpemUtdGhpcy5oZHJfc2l6ZSkvMjt0aGlzLnByaW9yaXR5PVtdO2Zvcih2YXIgaT0wO2k8dDtpKyspdGhpcy5wcmlvcml0eVtpXT1lLnJlYWRVaW50MTYoKX0pLG8uY3JlYXRlRnVsbEJveEN0b3IoInN0aGQiKSxvLmNyZWF0ZUZ1bGxCb3hDdG9yKCJzdHJpIixmdW5jdGlvbihlKXt0aGlzLnN3aXRjaF9ncm91cD1lLnJlYWRVaW50MTYoKSx0aGlzLmFsdGVybmF0ZV9ncm91cD1lLnJlYWRVaW50MTYoKSx0aGlzLnN1Yl90cmFja19pZD1lLnJlYWRVaW50MzIoKTt2YXIgdD0odGhpcy5zaXplLXRoaXMuaGRyX3NpemUtOCkvNDt0aGlzLmF0dHJpYnV0ZV9saXN0PVtdO2Zvcih2YXIgaT0wO2k8dDtpKyspdGhpcy5hdHRyaWJ1dGVfbGlzdFtpXT1lLnJlYWRVaW50MzIoKX0pLG8uY3JlYXRlRnVsbEJveEN0b3IoInN0c2MiLGZ1bmN0aW9uKGUpe3ZhciB0LGk7aWYodD1lLnJlYWRVaW50MzIoKSx0aGlzLmZpcnN0X2NodW5rPVtdLHRoaXMuc2FtcGxlc19wZXJfY2h1bms9W10sdGhpcy5zYW1wbGVfZGVzY3JpcHRpb25faW5kZXg9W10sdGhpcy52ZXJzaW9uPT09MClmb3IoaT0wO2k8dDtpKyspdGhpcy5maXJzdF9jaHVuay5wdXNoKGUucmVhZFVpbnQzMigpKSx0aGlzLnNhbXBsZXNfcGVyX2NodW5rLnB1c2goZS5yZWFkVWludDMyKCkpLHRoaXMuc2FtcGxlX2Rlc2NyaXB0aW9uX2luZGV4LnB1c2goZS5yZWFkVWludDMyKCkpfSksby5jcmVhdGVGdWxsQm94Q3Rvcigic3RzZCIsZnVuY3Rpb24oZSl7dmFyIHQsaSxmLHU7Zm9yKHRoaXMuZW50cmllcz1bXSxmPWUucmVhZFVpbnQzMigpLHQ9MTt0PD1mO3QrKylpZihpPW8ucGFyc2VPbmVCb3goZSwhMCx0aGlzLnNpemUtKGUuZ2V0UG9zaXRpb24oKS10aGlzLnN0YXJ0KSksaS5jb2RlPT09by5PSylvW2kudHlwZSsiU2FtcGxlRW50cnkiXT8odT1uZXcgb1tpLnR5cGUrIlNhbXBsZUVudHJ5Il0oaS5zaXplKSx1Lmhkcl9zaXplPWkuaGRyX3NpemUsdS5zdGFydD1pLnN0YXJ0KTooci53YXJuKCJCb3hQYXJzZXIiLCJVbmtub3duIHNhbXBsZSBlbnRyeSB0eXBlOiAiK2kudHlwZSksdT1uZXcgby5TYW1wbGVFbnRyeShpLnR5cGUsaS5zaXplLGkuaGRyX3NpemUsaS5zdGFydCkpLHUud3JpdGU9PT1vLlNhbXBsZUVudHJ5LnByb3RvdHlwZS53cml0ZSYmKHIuaW5mbygiQm94UGFyc2VyIiwiU2FtcGxlRW50cnkgIit1LnR5cGUrIiBib3ggd3JpdGluZyBub3QgeWV0IGltcGxlbWVudGVkLCBrZWVwaW5nIHVucGFyc2VkIGRhdGEgaW4gbWVtb3J5IGZvciBsYXRlciB3cml0ZSIpLHUucGFyc2VEYXRhQW5kUmV3aW5kKGUpKSx1LnBhcnNlKGUpLHRoaXMuZW50cmllcy5wdXNoKHUpO2Vsc2UgcmV0dXJufSksby5jcmVhdGVGdWxsQm94Q3Rvcigic3RzZyIsZnVuY3Rpb24oZSl7dGhpcy5ncm91cGluZ190eXBlPWUucmVhZFVpbnQzMigpO3ZhciB0PWUucmVhZFVpbnQxNigpO3RoaXMuZ3JvdXBfZGVzY3JpcHRpb25faW5kZXg9W107Zm9yKHZhciBpPTA7aTx0O2krKyl0aGlzLmdyb3VwX2Rlc2NyaXB0aW9uX2luZGV4W2ldPWUucmVhZFVpbnQzMigpfSksby5jcmVhdGVGdWxsQm94Q3Rvcigic3RzaCIsZnVuY3Rpb24oZSl7dmFyIHQsaTtpZih0PWUucmVhZFVpbnQzMigpLHRoaXMuc2hhZG93ZWRfc2FtcGxlX251bWJlcnM9W10sdGhpcy5zeW5jX3NhbXBsZV9udW1iZXJzPVtdLHRoaXMudmVyc2lvbj09PTApZm9yKGk9MDtpPHQ7aSsrKXRoaXMuc2hhZG93ZWRfc2FtcGxlX251bWJlcnMucHVzaChlLnJlYWRVaW50MzIoKSksdGhpcy5zeW5jX3NhbXBsZV9udW1iZXJzLnB1c2goZS5yZWFkVWludDMyKCkpfSksby5jcmVhdGVGdWxsQm94Q3Rvcigic3RzcyIsZnVuY3Rpb24oZSl7dmFyIHQsaTtpZihpPWUucmVhZFVpbnQzMigpLHRoaXMudmVyc2lvbj09PTApZm9yKHRoaXMuc2FtcGxlX251bWJlcnM9W10sdD0wO3Q8aTt0KyspdGhpcy5zYW1wbGVfbnVtYmVycy5wdXNoKGUucmVhZFVpbnQzMigpKX0pLG8uY3JlYXRlRnVsbEJveEN0b3IoInN0c3oiLGZ1bmN0aW9uKGUpe3ZhciB0O2lmKHRoaXMuc2FtcGxlX3NpemVzPVtdLHRoaXMudmVyc2lvbj09PTApZm9yKHRoaXMuc2FtcGxlX3NpemU9ZS5yZWFkVWludDMyKCksdGhpcy5zYW1wbGVfY291bnQ9ZS5yZWFkVWludDMyKCksdD0wO3Q8dGhpcy5zYW1wbGVfY291bnQ7dCsrKXRoaXMuc2FtcGxlX3NpemU9PT0wP3RoaXMuc2FtcGxlX3NpemVzLnB1c2goZS5yZWFkVWludDMyKCkpOnRoaXMuc2FtcGxlX3NpemVzW3RdPXRoaXMuc2FtcGxlX3NpemV9KSxvLmNyZWF0ZUZ1bGxCb3hDdG9yKCJzdHRzIixmdW5jdGlvbihlKXt2YXIgdCxpLGY7aWYodD1lLnJlYWRVaW50MzIoKSx0aGlzLnNhbXBsZV9jb3VudHM9W10sdGhpcy5zYW1wbGVfZGVsdGFzPVtdLHRoaXMudmVyc2lvbj09PTApZm9yKGk9MDtpPHQ7aSsrKXRoaXMuc2FtcGxlX2NvdW50cy5wdXNoKGUucmVhZFVpbnQzMigpKSxmPWUucmVhZEludDMyKCksZjwwJiYoci53YXJuKCJCb3hQYXJzZXIiLCJGaWxlIHVzZXMgbmVnYXRpdmUgc3R0cyBzYW1wbGUgZGVsdGEsIHVzaW5nIHZhbHVlIDEgaW5zdGVhZCwgc3luYyBtYXkgYmUgbG9zdCEiKSxmPTEpLHRoaXMuc2FtcGxlX2RlbHRhcy5wdXNoKGYpfSksby5jcmVhdGVGdWxsQm94Q3Rvcigic3R2aSIsZnVuY3Rpb24oZSl7dmFyIHQ9ZS5yZWFkVWludDMyKCk7dGhpcy5zaW5nbGVfdmlld19hbGxvd2VkPXQmMyx0aGlzLnN0ZXJlb19zY2hlbWU9ZS5yZWFkVWludDMyKCk7dmFyIGk9ZS5yZWFkVWludDMyKCk7dGhpcy5zdGVyZW9faW5kaWNhdGlvbl90eXBlPWUucmVhZFN0cmluZyhpKTt2YXIgZix1O2Zvcih0aGlzLmJveGVzPVtdO2UuZ2V0UG9zaXRpb24oKTx0aGlzLnN0YXJ0K3RoaXMuc2l6ZTspaWYoZj1vLnBhcnNlT25lQm94KGUsITEsdGhpcy5zaXplLShlLmdldFBvc2l0aW9uKCktdGhpcy5zdGFydCkpLGYuY29kZT09PW8uT0spdT1mLmJveCx0aGlzLmJveGVzLnB1c2godSksdGhpc1t1LnR5cGVdPXU7ZWxzZSByZXR1cm59KSxvLmNyZWF0ZUJveEN0b3IoInN0eXAiLGZ1bmN0aW9uKGUpe28uZnR5cEJveC5wcm90b3R5cGUucGFyc2UuY2FsbCh0aGlzLGUpfSksby5jcmVhdGVGdWxsQm94Q3Rvcigic3R6MiIsZnVuY3Rpb24oZSl7dmFyIHQsaTtpZih0aGlzLnNhbXBsZV9zaXplcz1bXSx0aGlzLnZlcnNpb249PT0wKWlmKHRoaXMucmVzZXJ2ZWQ9ZS5yZWFkVWludDI0KCksdGhpcy5maWVsZF9zaXplPWUucmVhZFVpbnQ4KCksaT1lLnJlYWRVaW50MzIoKSx0aGlzLmZpZWxkX3NpemU9PT00KWZvcih0PTA7dDxpO3QrPTIpe3ZhciBmPWUucmVhZFVpbnQ4KCk7dGhpcy5zYW1wbGVfc2l6ZXNbdF09Zj4+NCYxNSx0aGlzLnNhbXBsZV9zaXplc1t0KzFdPWYmMTV9ZWxzZSBpZih0aGlzLmZpZWxkX3NpemU9PT04KWZvcih0PTA7dDxpO3QrKyl0aGlzLnNhbXBsZV9zaXplc1t0XT1lLnJlYWRVaW50OCgpO2Vsc2UgaWYodGhpcy5maWVsZF9zaXplPT09MTYpZm9yKHQ9MDt0PGk7dCsrKXRoaXMuc2FtcGxlX3NpemVzW3RdPWUucmVhZFVpbnQxNigpO2Vsc2Ugci5lcnJvcigiQm94UGFyc2VyIiwiRXJyb3IgaW4gbGVuZ3RoIGZpZWxkIGluIHN0ejIgYm94Iil9KSxvLmNyZWF0ZUZ1bGxCb3hDdG9yKCJzdWJzIixmdW5jdGlvbihlKXt2YXIgdCxpLGYsdTtmb3IoZj1lLnJlYWRVaW50MzIoKSx0aGlzLmVudHJpZXM9W10sdD0wO3Q8Zjt0Kyspe3ZhciB2PXt9O2lmKHRoaXMuZW50cmllc1t0XT12LHYuc2FtcGxlX2RlbHRhPWUucmVhZFVpbnQzMigpLHYuc3Vic2FtcGxlcz1bXSx1PWUucmVhZFVpbnQxNigpLHU+MClmb3IoaT0wO2k8dTtpKyspe3ZhciB5PXt9O3Yuc3Vic2FtcGxlcy5wdXNoKHkpLHRoaXMudmVyc2lvbj09MT95LnNpemU9ZS5yZWFkVWludDMyKCk6eS5zaXplPWUucmVhZFVpbnQxNigpLHkucHJpb3JpdHk9ZS5yZWFkVWludDgoKSx5LmRpc2NhcmRhYmxlPWUucmVhZFVpbnQ4KCkseS5jb2RlY19zcGVjaWZpY19wYXJhbWV0ZXJzPWUucmVhZFVpbnQzMigpfX19KSxvLmNyZWF0ZUZ1bGxCb3hDdG9yKCJ0ZW5jIixmdW5jdGlvbihlKXtpZihlLnJlYWRVaW50OCgpLHRoaXMudmVyc2lvbj09PTApZS5yZWFkVWludDgoKTtlbHNle3ZhciB0PWUucmVhZFVpbnQ4KCk7dGhpcy5kZWZhdWx0X2NyeXB0X2J5dGVfYmxvY2s9dD4+NCYxNSx0aGlzLmRlZmF1bHRfc2tpcF9ieXRlX2Jsb2NrPXQmMTV9dGhpcy5kZWZhdWx0X2lzUHJvdGVjdGVkPWUucmVhZFVpbnQ4KCksdGhpcy5kZWZhdWx0X1Blcl9TYW1wbGVfSVZfU2l6ZT1lLnJlYWRVaW50OCgpLHRoaXMuZGVmYXVsdF9LSUQ9by5wYXJzZUhleDE2KGUpLHRoaXMuZGVmYXVsdF9pc1Byb3RlY3RlZD09PTEmJnRoaXMuZGVmYXVsdF9QZXJfU2FtcGxlX0lWX1NpemU9PT0wJiYodGhpcy5kZWZhdWx0X2NvbnN0YW50X0lWX3NpemU9ZS5yZWFkVWludDgoKSx0aGlzLmRlZmF1bHRfY29uc3RhbnRfSVY9ZS5yZWFkVWludDhBcnJheSh0aGlzLmRlZmF1bHRfY29uc3RhbnRfSVZfc2l6ZSkpfSksby5jcmVhdGVGdWxsQm94Q3RvcigidGZkdCIsZnVuY3Rpb24oZSl7dGhpcy52ZXJzaW9uPT0xP3RoaXMuYmFzZU1lZGlhRGVjb2RlVGltZT1lLnJlYWRVaW50NjQoKTp0aGlzLmJhc2VNZWRpYURlY29kZVRpbWU9ZS5yZWFkVWludDMyKCl9KSxvLmNyZWF0ZUZ1bGxCb3hDdG9yKCJ0ZmhkIixmdW5jdGlvbihlKXt2YXIgdD0wO3RoaXMudHJhY2tfaWQ9ZS5yZWFkVWludDMyKCksdGhpcy5zaXplLXRoaXMuaGRyX3NpemU+dCYmdGhpcy5mbGFncyZvLlRGSERfRkxBR19CQVNFX0RBVEFfT0ZGU0VUPyh0aGlzLmJhc2VfZGF0YV9vZmZzZXQ9ZS5yZWFkVWludDY0KCksdCs9OCk6dGhpcy5iYXNlX2RhdGFfb2Zmc2V0PTAsdGhpcy5zaXplLXRoaXMuaGRyX3NpemU+dCYmdGhpcy5mbGFncyZvLlRGSERfRkxBR19TQU1QTEVfREVTQz8odGhpcy5kZWZhdWx0X3NhbXBsZV9kZXNjcmlwdGlvbl9pbmRleD1lLnJlYWRVaW50MzIoKSx0Kz00KTp0aGlzLmRlZmF1bHRfc2FtcGxlX2Rlc2NyaXB0aW9uX2luZGV4PTAsdGhpcy5zaXplLXRoaXMuaGRyX3NpemU+dCYmdGhpcy5mbGFncyZvLlRGSERfRkxBR19TQU1QTEVfRFVSPyh0aGlzLmRlZmF1bHRfc2FtcGxlX2R1cmF0aW9uPWUucmVhZFVpbnQzMigpLHQrPTQpOnRoaXMuZGVmYXVsdF9zYW1wbGVfZHVyYXRpb249MCx0aGlzLnNpemUtdGhpcy5oZHJfc2l6ZT50JiZ0aGlzLmZsYWdzJm8uVEZIRF9GTEFHX1NBTVBMRV9TSVpFPyh0aGlzLmRlZmF1bHRfc2FtcGxlX3NpemU9ZS5yZWFkVWludDMyKCksdCs9NCk6dGhpcy5kZWZhdWx0X3NhbXBsZV9zaXplPTAsdGhpcy5zaXplLXRoaXMuaGRyX3NpemU+dCYmdGhpcy5mbGFncyZvLlRGSERfRkxBR19TQU1QTEVfRkxBR1M/KHRoaXMuZGVmYXVsdF9zYW1wbGVfZmxhZ3M9ZS5yZWFkVWludDMyKCksdCs9NCk6dGhpcy5kZWZhdWx0X3NhbXBsZV9mbGFncz0wfSksby5jcmVhdGVGdWxsQm94Q3RvcigidGZyYSIsZnVuY3Rpb24oZSl7dGhpcy50cmFja19JRD1lLnJlYWRVaW50MzIoKSxlLnJlYWRVaW50MjQoKTt2YXIgdD1lLnJlYWRVaW50OCgpO3RoaXMubGVuZ3RoX3NpemVfb2ZfdHJhZl9udW09dD4+NCYzLHRoaXMubGVuZ3RoX3NpemVfb2ZfdHJ1bl9udW09dD4+MiYzLHRoaXMubGVuZ3RoX3NpemVfb2Zfc2FtcGxlX251bT10JjMsdGhpcy5lbnRyaWVzPVtdO2Zvcih2YXIgaT1lLnJlYWRVaW50MzIoKSxmPTA7ZjxpO2YrKyl0aGlzLnZlcnNpb249PT0xPyh0aGlzLnRpbWU9ZS5yZWFkVWludDY0KCksdGhpcy5tb29mX29mZnNldD1lLnJlYWRVaW50NjQoKSk6KHRoaXMudGltZT1lLnJlYWRVaW50MzIoKSx0aGlzLm1vb2Zfb2Zmc2V0PWUucmVhZFVpbnQzMigpKSx0aGlzLnRyYWZfbnVtYmVyPWVbInJlYWRVaW50Iis4Kih0aGlzLmxlbmd0aF9zaXplX29mX3RyYWZfbnVtKzEpXSgpLHRoaXMudHJ1bl9udW1iZXI9ZVsicmVhZFVpbnQiKzgqKHRoaXMubGVuZ3RoX3NpemVfb2ZfdHJ1bl9udW0rMSldKCksdGhpcy5zYW1wbGVfbnVtYmVyPWVbInJlYWRVaW50Iis4Kih0aGlzLmxlbmd0aF9zaXplX29mX3NhbXBsZV9udW0rMSldKCl9KSxvLmNyZWF0ZUZ1bGxCb3hDdG9yKCJ0a2hkIixmdW5jdGlvbihlKXt0aGlzLnZlcnNpb249PTE/KHRoaXMuY3JlYXRpb25fdGltZT1lLnJlYWRVaW50NjQoKSx0aGlzLm1vZGlmaWNhdGlvbl90aW1lPWUucmVhZFVpbnQ2NCgpLHRoaXMudHJhY2tfaWQ9ZS5yZWFkVWludDMyKCksZS5yZWFkVWludDMyKCksdGhpcy5kdXJhdGlvbj1lLnJlYWRVaW50NjQoKSk6KHRoaXMuY3JlYXRpb25fdGltZT1lLnJlYWRVaW50MzIoKSx0aGlzLm1vZGlmaWNhdGlvbl90aW1lPWUucmVhZFVpbnQzMigpLHRoaXMudHJhY2tfaWQ9ZS5yZWFkVWludDMyKCksZS5yZWFkVWludDMyKCksdGhpcy5kdXJhdGlvbj1lLnJlYWRVaW50MzIoKSksZS5yZWFkVWludDMyQXJyYXkoMiksdGhpcy5sYXllcj1lLnJlYWRJbnQxNigpLHRoaXMuYWx0ZXJuYXRlX2dyb3VwPWUucmVhZEludDE2KCksdGhpcy52b2x1bWU9ZS5yZWFkSW50MTYoKT4+OCxlLnJlYWRVaW50MTYoKSx0aGlzLm1hdHJpeD1lLnJlYWRJbnQzMkFycmF5KDkpLHRoaXMud2lkdGg9ZS5yZWFkVWludDMyKCksdGhpcy5oZWlnaHQ9ZS5yZWFkVWludDMyKCl9KSxvLmNyZWF0ZUJveEN0b3IoInRtYXgiLGZ1bmN0aW9uKGUpe3RoaXMudGltZT1lLnJlYWRVaW50MzIoKX0pLG8uY3JlYXRlQm94Q3RvcigidG1pbiIsZnVuY3Rpb24oZSl7dGhpcy50aW1lPWUucmVhZFVpbnQzMigpfSksby5jcmVhdGVCb3hDdG9yKCJ0b3RsIixmdW5jdGlvbihlKXt0aGlzLmJ5dGVzc2VudD1lLnJlYWRVaW50MzIoKX0pLG8uY3JlYXRlQm94Q3RvcigidHBheSIsZnVuY3Rpb24oZSl7dGhpcy5ieXRlc3NlbnQ9ZS5yZWFkVWludDMyKCl9KSxvLmNyZWF0ZUJveEN0b3IoInRweWwiLGZ1bmN0aW9uKGUpe3RoaXMuYnl0ZXNzZW50PWUucmVhZFVpbnQ2NCgpfSksby5UcmFja0dyb3VwVHlwZUJveC5wcm90b3R5cGUucGFyc2U9ZnVuY3Rpb24oZSl7dGhpcy5wYXJzZUZ1bGxIZWFkZXIoZSksdGhpcy50cmFja19ncm91cF9pZD1lLnJlYWRVaW50MzIoKX0sby5jcmVhdGVUcmFja0dyb3VwQ3RvcigibXNyYyIpLG8uVHJhY2tSZWZlcmVuY2VUeXBlQm94PWZ1bmN0aW9uKGUsdCxpLGYpe28uQm94LmNhbGwodGhpcyxlLHQpLHRoaXMuaGRyX3NpemU9aSx0aGlzLnN0YXJ0PWZ9LG8uVHJhY2tSZWZlcmVuY2VUeXBlQm94LnByb3RvdHlwZT1uZXcgby5Cb3gsby5UcmFja1JlZmVyZW5jZVR5cGVCb3gucHJvdG90eXBlLnBhcnNlPWZ1bmN0aW9uKGUpe3RoaXMudHJhY2tfaWRzPWUucmVhZFVpbnQzMkFycmF5KCh0aGlzLnNpemUtdGhpcy5oZHJfc2l6ZSkvNCl9LG8udHJlZkJveC5wcm90b3R5cGUucGFyc2U9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LGk7ZS5nZXRQb3NpdGlvbigpPHRoaXMuc3RhcnQrdGhpcy5zaXplOylpZih0PW8ucGFyc2VPbmVCb3goZSwhMCx0aGlzLnNpemUtKGUuZ2V0UG9zaXRpb24oKS10aGlzLnN0YXJ0KSksdC5jb2RlPT09by5PSylpPW5ldyBvLlRyYWNrUmVmZXJlbmNlVHlwZUJveCh0LnR5cGUsdC5zaXplLHQuaGRyX3NpemUsdC5zdGFydCksaS53cml0ZT09PW8uQm94LnByb3RvdHlwZS53cml0ZSYmaS50eXBlIT09Im1kYXQiJiYoci5pbmZvKCJCb3hQYXJzZXIiLCJUcmFja1JlZmVyZW5jZSAiK2kudHlwZSsiIGJveCB3cml0aW5nIG5vdCB5ZXQgaW1wbGVtZW50ZWQsIGtlZXBpbmcgdW5wYXJzZWQgZGF0YSBpbiBtZW1vcnkgZm9yIGxhdGVyIHdyaXRlIiksaS5wYXJzZURhdGFBbmRSZXdpbmQoZSkpLGkucGFyc2UoZSksdGhpcy5ib3hlcy5wdXNoKGkpO2Vsc2UgcmV0dXJufSxvLmNyZWF0ZUZ1bGxCb3hDdG9yKCJ0cmVwIixmdW5jdGlvbihlKXtmb3IodGhpcy50cmFja19JRD1lLnJlYWRVaW50MzIoKSx0aGlzLmJveGVzPVtdO2UuZ2V0UG9zaXRpb24oKTx0aGlzLnN0YXJ0K3RoaXMuc2l6ZTspaWYocmV0PW8ucGFyc2VPbmVCb3goZSwhMSx0aGlzLnNpemUtKGUuZ2V0UG9zaXRpb24oKS10aGlzLnN0YXJ0KSkscmV0LmNvZGU9PT1vLk9LKWJveD1yZXQuYm94LHRoaXMuYm94ZXMucHVzaChib3gpO2Vsc2UgcmV0dXJufSksby5jcmVhdGVGdWxsQm94Q3RvcigidHJleCIsZnVuY3Rpb24oZSl7dGhpcy50cmFja19pZD1lLnJlYWRVaW50MzIoKSx0aGlzLmRlZmF1bHRfc2FtcGxlX2Rlc2NyaXB0aW9uX2luZGV4PWUucmVhZFVpbnQzMigpLHRoaXMuZGVmYXVsdF9zYW1wbGVfZHVyYXRpb249ZS5yZWFkVWludDMyKCksdGhpcy5kZWZhdWx0X3NhbXBsZV9zaXplPWUucmVhZFVpbnQzMigpLHRoaXMuZGVmYXVsdF9zYW1wbGVfZmxhZ3M9ZS5yZWFkVWludDMyKCl9KSxvLmNyZWF0ZUJveEN0b3IoInRycHkiLGZ1bmN0aW9uKGUpe3RoaXMuYnl0ZXNzZW50PWUucmVhZFVpbnQ2NCgpfSksby5jcmVhdGVGdWxsQm94Q3RvcigidHJ1biIsZnVuY3Rpb24oZSl7dmFyIHQ9MDtpZih0aGlzLnNhbXBsZV9jb3VudD1lLnJlYWRVaW50MzIoKSx0Kz00LHRoaXMuc2l6ZS10aGlzLmhkcl9zaXplPnQmJnRoaXMuZmxhZ3Mmby5UUlVOX0ZMQUdTX0RBVEFfT0ZGU0VUPyh0aGlzLmRhdGFfb2Zmc2V0PWUucmVhZEludDMyKCksdCs9NCk6dGhpcy5kYXRhX29mZnNldD0wLHRoaXMuc2l6ZS10aGlzLmhkcl9zaXplPnQmJnRoaXMuZmxhZ3Mmby5UUlVOX0ZMQUdTX0ZJUlNUX0ZMQUc/KHRoaXMuZmlyc3Rfc2FtcGxlX2ZsYWdzPWUucmVhZFVpbnQzMigpLHQrPTQpOnRoaXMuZmlyc3Rfc2FtcGxlX2ZsYWdzPTAsdGhpcy5zYW1wbGVfZHVyYXRpb249W10sdGhpcy5zYW1wbGVfc2l6ZT1bXSx0aGlzLnNhbXBsZV9mbGFncz1bXSx0aGlzLnNhbXBsZV9jb21wb3NpdGlvbl90aW1lX29mZnNldD1bXSx0aGlzLnNpemUtdGhpcy5oZHJfc2l6ZT50KWZvcih2YXIgaT0wO2k8dGhpcy5zYW1wbGVfY291bnQ7aSsrKXRoaXMuZmxhZ3Mmby5UUlVOX0ZMQUdTX0RVUkFUSU9OJiYodGhpcy5zYW1wbGVfZHVyYXRpb25baV09ZS5yZWFkVWludDMyKCkpLHRoaXMuZmxhZ3Mmby5UUlVOX0ZMQUdTX1NJWkUmJih0aGlzLnNhbXBsZV9zaXplW2ldPWUucmVhZFVpbnQzMigpKSx0aGlzLmZsYWdzJm8uVFJVTl9GTEFHU19GTEFHUyYmKHRoaXMuc2FtcGxlX2ZsYWdzW2ldPWUucmVhZFVpbnQzMigpKSx0aGlzLmZsYWdzJm8uVFJVTl9GTEFHU19DVFNfT0ZGU0VUJiYodGhpcy52ZXJzaW9uPT09MD90aGlzLnNhbXBsZV9jb21wb3NpdGlvbl90aW1lX29mZnNldFtpXT1lLnJlYWRVaW50MzIoKTp0aGlzLnNhbXBsZV9jb21wb3NpdGlvbl90aW1lX29mZnNldFtpXT1lLnJlYWRJbnQzMigpKX0pLG8uY3JlYXRlRnVsbEJveEN0b3IoInRzZWwiLGZ1bmN0aW9uKGUpe3RoaXMuc3dpdGNoX2dyb3VwPWUucmVhZFVpbnQzMigpO3ZhciB0PSh0aGlzLnNpemUtdGhpcy5oZHJfc2l6ZS00KS80O3RoaXMuYXR0cmlidXRlX2xpc3Q9W107Zm9yKHZhciBpPTA7aTx0O2krKyl0aGlzLmF0dHJpYnV0ZV9saXN0W2ldPWUucmVhZFVpbnQzMigpfSksby5jcmVhdGVGdWxsQm94Q3RvcigidHh0QyIsZnVuY3Rpb24oZSl7dGhpcy5jb25maWc9ZS5yZWFkQ1N0cmluZygpfSksby5jcmVhdGVGdWxsQm94Q3RvcigidXJsICIsZnVuY3Rpb24oZSl7dGhpcy5mbGFncyE9PTEmJih0aGlzLmxvY2F0aW9uPWUucmVhZENTdHJpbmcoKSl9KSxvLmNyZWF0ZUZ1bGxCb3hDdG9yKCJ1cm4gIixmdW5jdGlvbihlKXt0aGlzLm5hbWU9ZS5yZWFkQ1N0cmluZygpLHRoaXMuc2l6ZS10aGlzLmhkcl9zaXplLXRoaXMubmFtZS5sZW5ndGgtMT4wJiYodGhpcy5sb2NhdGlvbj1lLnJlYWRDU3RyaW5nKCkpfSksby5jcmVhdGVVVUlEQm94KCJhNWQ0MGIzMGU4MTQxMWRkYmEyZjA4MDAyMDBjOWE2NiIsITAsITEsZnVuY3Rpb24oZSl7dGhpcy5MaXZlU2VydmVyTWFuaWZlc3Q9ZS5yZWFkU3RyaW5nKHRoaXMuc2l6ZS10aGlzLmhkcl9zaXplKS5yZXBsYWNlKC8mL2csIiZhbXA7IikucmVwbGFjZSgvPC9nLCImbHQ7IikucmVwbGFjZSgvPi9nLCImZ3Q7IikucmVwbGFjZSgvIi9nLCImcXVvdDsiKS5yZXBsYWNlKC8nL2csIiYjMDM5OyIpfSksby5jcmVhdGVVVUlEQm94KCJkMDhhNGYxODEwZjM0YTgyYjZjODMyZDhhYmExODNkMyIsITAsITEsZnVuY3Rpb24oZSl7dGhpcy5zeXN0ZW1faWQ9by5wYXJzZUhleDE2KGUpO3ZhciB0PWUucmVhZFVpbnQzMigpO3Q+MCYmKHRoaXMuZGF0YT1lLnJlYWRVaW50OEFycmF5KHQpKX0pLG8uY3JlYXRlVVVJREJveCgiYTIzOTRmNTI1YTliNGYxNGEyNDQ2YzQyN2M2NDhkZjQiLCEwLCExKSxvLmNyZWF0ZVVVSURCb3goIjg5NzRkYmNlN2JlNzRjNTE4NGY5NzE0OGY5ODgyNTU0IiwhMCwhMSxmdW5jdGlvbihlKXt0aGlzLmRlZmF1bHRfQWxnb3JpdGhtSUQ9ZS5yZWFkVWludDI0KCksdGhpcy5kZWZhdWx0X0lWX3NpemU9ZS5yZWFkVWludDgoKSx0aGlzLmRlZmF1bHRfS0lEPW8ucGFyc2VIZXgxNihlKX0pLG8uY3JlYXRlVVVJREJveCgiZDQ4MDdlZjJjYTM5NDY5NThlNTQyNmNiOWU0NmE3OWYiLCEwLCExLGZ1bmN0aW9uKGUpe3RoaXMuZnJhZ21lbnRfY291bnQ9ZS5yZWFkVWludDgoKSx0aGlzLmVudHJpZXM9W107Zm9yKHZhciB0PTA7dDx0aGlzLmZyYWdtZW50X2NvdW50O3QrKyl7dmFyIGk9e30sZj0wLHU9MDt0aGlzLnZlcnNpb249PT0xPyhmPWUucmVhZFVpbnQ2NCgpLHU9ZS5yZWFkVWludDY0KCkpOihmPWUucmVhZFVpbnQzMigpLHU9ZS5yZWFkVWludDMyKCkpLGkuYWJzb2x1dGVfdGltZT1mLGkuYWJzb2x1dGVfZHVyYXRpb249dSx0aGlzLmVudHJpZXMucHVzaChpKX19KSxvLmNyZWF0ZVVVSURCb3goIjZkMWQ5YjA1NDJkNTQ0ZTY4MGUyMTQxZGFmZjc1N2IyIiwhMCwhMSxmdW5jdGlvbihlKXt0aGlzLnZlcnNpb249PT0xPyh0aGlzLmFic29sdXRlX3RpbWU9ZS5yZWFkVWludDY0KCksdGhpcy5kdXJhdGlvbj1lLnJlYWRVaW50NjQoKSk6KHRoaXMuYWJzb2x1dGVfdGltZT1lLnJlYWRVaW50MzIoKSx0aGlzLmR1cmF0aW9uPWUucmVhZFVpbnQzMigpKX0pLG8uY3JlYXRlRnVsbEJveEN0b3IoInZtaGQiLGZ1bmN0aW9uKGUpe3RoaXMuZ3JhcGhpY3Ntb2RlPWUucmVhZFVpbnQxNigpLHRoaXMub3Bjb2xvcj1lLnJlYWRVaW50MTZBcnJheSgzKX0pLG8uY3JlYXRlRnVsbEJveEN0b3IoInZwY0MiLGZ1bmN0aW9uKGUpe3ZhciB0O3RoaXMudmVyc2lvbj09PTE/KHRoaXMucHJvZmlsZT1lLnJlYWRVaW50OCgpLHRoaXMubGV2ZWw9ZS5yZWFkVWludDgoKSx0PWUucmVhZFVpbnQ4KCksdGhpcy5iaXREZXB0aD10Pj40LHRoaXMuY2hyb21hU3Vic2FtcGxpbmc9dD4+MSY3LHRoaXMudmlkZW9GdWxsUmFuZ2VGbGFnPXQmMSx0aGlzLmNvbG91clByaW1hcmllcz1lLnJlYWRVaW50OCgpLHRoaXMudHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M9ZS5yZWFkVWludDgoKSx0aGlzLm1hdHJpeENvZWZmaWNpZW50cz1lLnJlYWRVaW50OCgpLHRoaXMuY29kZWNJbnRpYWxpemF0aW9uRGF0YVNpemU9ZS5yZWFkVWludDE2KCksdGhpcy5jb2RlY0ludGlhbGl6YXRpb25EYXRhPWUucmVhZFVpbnQ4QXJyYXkodGhpcy5jb2RlY0ludGlhbGl6YXRpb25EYXRhU2l6ZSkpOih0aGlzLnByb2ZpbGU9ZS5yZWFkVWludDgoKSx0aGlzLmxldmVsPWUucmVhZFVpbnQ4KCksdD1lLnJlYWRVaW50OCgpLHRoaXMuYml0RGVwdGg9dD4+NCYxNSx0aGlzLmNvbG9yU3BhY2U9dCYxNSx0PWUucmVhZFVpbnQ4KCksdGhpcy5jaHJvbWFTdWJzYW1wbGluZz10Pj40JjE1LHRoaXMudHJhbnNmZXJGdW5jdGlvbj10Pj4xJjcsdGhpcy52aWRlb0Z1bGxSYW5nZUZsYWc9dCYxLHRoaXMuY29kZWNJbnRpYWxpemF0aW9uRGF0YVNpemU9ZS5yZWFkVWludDE2KCksdGhpcy5jb2RlY0ludGlhbGl6YXRpb25EYXRhPWUucmVhZFVpbnQ4QXJyYXkodGhpcy5jb2RlY0ludGlhbGl6YXRpb25EYXRhU2l6ZSkpfSksby5jcmVhdGVCb3hDdG9yKCJ2dHRDIixmdW5jdGlvbihlKXt0aGlzLnRleHQ9ZS5yZWFkU3RyaW5nKHRoaXMuc2l6ZS10aGlzLmhkcl9zaXplKX0pLG8uY3JlYXRlRnVsbEJveEN0b3IoInZ2Y0MiLGZ1bmN0aW9uKGUpe3ZhciB0LGksZj17aGVsZF9iaXRzOnZvaWQgMCxudW1faGVsZF9iaXRzOjAsc3RyZWFtX3JlYWRfMV9ieXRlczpmdW5jdGlvbih3KXt0aGlzLmhlbGRfYml0cz13LnJlYWRVaW50OCgpLHRoaXMubnVtX2hlbGRfYml0cz04fSxzdHJlYW1fcmVhZF8yX2J5dGVzOmZ1bmN0aW9uKHcpe3RoaXMuaGVsZF9iaXRzPXcucmVhZFVpbnQxNigpLHRoaXMubnVtX2hlbGRfYml0cz0xNn0sZXh0cmFjdF9iaXRzOmZ1bmN0aW9uKHcpe3ZhciBBPXRoaXMuaGVsZF9iaXRzPj50aGlzLm51bV9oZWxkX2JpdHMtdyYoMTw8dyktMTtyZXR1cm4gdGhpcy5udW1faGVsZF9iaXRzLT13LEF9fTtpZihmLnN0cmVhbV9yZWFkXzFfYnl0ZXMoZSksZi5leHRyYWN0X2JpdHMoNSksdGhpcy5sZW5ndGhTaXplTWludXNPbmU9Zi5leHRyYWN0X2JpdHMoMiksdGhpcy5wdGxfcHJlc2VudF9mbGFnPWYuZXh0cmFjdF9iaXRzKDEpLHRoaXMucHRsX3ByZXNlbnRfZmxhZyl7Zi5zdHJlYW1fcmVhZF8yX2J5dGVzKGUpLHRoaXMub2xzX2lkeD1mLmV4dHJhY3RfYml0cyg5KSx0aGlzLm51bV9zdWJsYXllcnM9Zi5leHRyYWN0X2JpdHMoMyksdGhpcy5jb25zdGFudF9mcmFtZV9yYXRlPWYuZXh0cmFjdF9iaXRzKDIpLHRoaXMuY2hyb21hX2Zvcm1hdF9pZGM9Zi5leHRyYWN0X2JpdHMoMiksZi5zdHJlYW1fcmVhZF8xX2J5dGVzKGUpLHRoaXMuYml0X2RlcHRoX21pbnVzOD1mLmV4dHJhY3RfYml0cygzKSxmLmV4dHJhY3RfYml0cyg1KTt7aWYoZi5zdHJlYW1fcmVhZF8yX2J5dGVzKGUpLGYuZXh0cmFjdF9iaXRzKDIpLHRoaXMubnVtX2J5dGVzX2NvbnN0cmFpbnRfaW5mbz1mLmV4dHJhY3RfYml0cyg2KSx0aGlzLmdlbmVyYWxfcHJvZmlsZV9pZGM9Zi5leHRyYWN0X2JpdHMoNyksdGhpcy5nZW5lcmFsX3RpZXJfZmxhZz1mLmV4dHJhY3RfYml0cygxKSx0aGlzLmdlbmVyYWxfbGV2ZWxfaWRjPWUucmVhZFVpbnQ4KCksZi5zdHJlYW1fcmVhZF8xX2J5dGVzKGUpLHRoaXMucHRsX2ZyYW1lX29ubHlfY29uc3RyYWludF9mbGFnPWYuZXh0cmFjdF9iaXRzKDEpLHRoaXMucHRsX211bHRpbGF5ZXJfZW5hYmxlZF9mbGFnPWYuZXh0cmFjdF9iaXRzKDEpLHRoaXMuZ2VuZXJhbF9jb25zdHJhaW50X2luZm89bmV3IFVpbnQ4QXJyYXkodGhpcy5udW1fYnl0ZXNfY29uc3RyYWludF9pbmZvKSx0aGlzLm51bV9ieXRlc19jb25zdHJhaW50X2luZm8pe2Zvcih0PTA7dDx0aGlzLm51bV9ieXRlc19jb25zdHJhaW50X2luZm8tMTt0Kyspe3ZhciB1PWYuZXh0cmFjdF9iaXRzKDYpO2Yuc3RyZWFtX3JlYWRfMV9ieXRlcyhlKTt2YXIgdj1mLmV4dHJhY3RfYml0cygyKTt0aGlzLmdlbmVyYWxfY29uc3RyYWludF9pbmZvW3RdPXU8PDJ8dn10aGlzLmdlbmVyYWxfY29uc3RyYWludF9pbmZvW3RoaXMubnVtX2J5dGVzX2NvbnN0cmFpbnRfaW5mby0xXT1mLmV4dHJhY3RfYml0cyg2KX1lbHNlIGYuZXh0cmFjdF9iaXRzKDYpO2ZvcihmLnN0cmVhbV9yZWFkXzFfYnl0ZXMoZSksdGhpcy5wdGxfc3VibGF5ZXJfcHJlc2VudF9tYXNrPTAsaT10aGlzLm51bV9zdWJsYXllcnMtMjtpPj0wOy0taSl7dmFyIHk9Zi5leHRyYWN0X2JpdHMoMSk7dGhpcy5wdGxfc3VibGF5ZXJfcHJlc2VudF9tYXNrfD15PDxpfWZvcihpPXRoaXMubnVtX3N1YmxheWVycztpPD04JiZ0aGlzLm51bV9zdWJsYXllcnM+MTsrK2kpZi5leHRyYWN0X2JpdHMoMSk7Zm9yKGk9dGhpcy5udW1fc3VibGF5ZXJzLTI7aT49MDstLWkpdGhpcy5wdGxfc3VibGF5ZXJfcHJlc2VudF9tYXNrJjE8PGkmJih0aGlzLnN1YmxheWVyX2xldmVsX2lkY1tpXT1lLnJlYWRVaW50OCgpKTtpZih0aGlzLnB0bF9udW1fc3ViX3Byb2ZpbGVzPWUucmVhZFVpbnQ4KCksdGhpcy5nZW5lcmFsX3N1Yl9wcm9maWxlX2lkYz1bXSx0aGlzLnB0bF9udW1fc3ViX3Byb2ZpbGVzKWZvcih0PTA7dDx0aGlzLnB0bF9udW1fc3ViX3Byb2ZpbGVzO3QrKyl0aGlzLmdlbmVyYWxfc3ViX3Byb2ZpbGVfaWRjLnB1c2goZS5yZWFkVWludDMyKCkpfXRoaXMubWF4X3BpY3R1cmVfd2lkdGg9ZS5yZWFkVWludDE2KCksdGhpcy5tYXhfcGljdHVyZV9oZWlnaHQ9ZS5yZWFkVWludDE2KCksdGhpcy5hdmdfZnJhbWVfcmF0ZT1lLnJlYWRVaW50MTYoKX12YXIgbT0xMixiPTEzO3RoaXMubmFsdV9hcnJheXM9W107dmFyIHg9ZS5yZWFkVWludDgoKTtmb3IodD0wO3Q8eDt0Kyspe3ZhciBTPVtdO3RoaXMubmFsdV9hcnJheXMucHVzaChTKSxmLnN0cmVhbV9yZWFkXzFfYnl0ZXMoZSksUy5jb21wbGV0ZW5lc3M9Zi5leHRyYWN0X2JpdHMoMSksZi5leHRyYWN0X2JpdHMoMiksUy5uYWx1X3R5cGU9Zi5leHRyYWN0X2JpdHMoNSk7dmFyIFU9MTtmb3IoUy5uYWx1X3R5cGUhPWImJlMubmFsdV90eXBlIT1tJiYoVT1lLnJlYWRVaW50MTYoKSksaT0wO2k8VTtpKyspe3ZhciBFPWUucmVhZFVpbnQxNigpO1MucHVzaCh7ZGF0YTplLnJlYWRVaW50OEFycmF5KEUpLGxlbmd0aDpFfSl9fX0pLG8uY3JlYXRlRnVsbEJveEN0b3IoInZ2bkMiLGZ1bmN0aW9uKGUpe3ZhciB0PXN0cm0ucmVhZFVpbnQ4KCk7dGhpcy5sZW5ndGhTaXplTWludXNPbmU9dCYzfSksby5TYW1wbGVFbnRyeS5wcm90b3R5cGUuaXNWaWRlbz1mdW5jdGlvbigpe3JldHVybiExfSxvLlNhbXBsZUVudHJ5LnByb3RvdHlwZS5pc0F1ZGlvPWZ1bmN0aW9uKCl7cmV0dXJuITF9LG8uU2FtcGxlRW50cnkucHJvdG90eXBlLmlzU3VidGl0bGU9ZnVuY3Rpb24oKXtyZXR1cm4hMX0sby5TYW1wbGVFbnRyeS5wcm90b3R5cGUuaXNNZXRhZGF0YT1mdW5jdGlvbigpe3JldHVybiExfSxvLlNhbXBsZUVudHJ5LnByb3RvdHlwZS5pc0hpbnQ9ZnVuY3Rpb24oKXtyZXR1cm4hMX0sby5TYW1wbGVFbnRyeS5wcm90b3R5cGUuZ2V0Q29kZWM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50eXBlLnJlcGxhY2UoIi4iLCIiKX0sby5TYW1wbGVFbnRyeS5wcm90b3R5cGUuZ2V0V2lkdGg9ZnVuY3Rpb24oKXtyZXR1cm4iIn0sby5TYW1wbGVFbnRyeS5wcm90b3R5cGUuZ2V0SGVpZ2h0PWZ1bmN0aW9uKCl7cmV0dXJuIiJ9LG8uU2FtcGxlRW50cnkucHJvdG90eXBlLmdldENoYW5uZWxDb3VudD1mdW5jdGlvbigpe3JldHVybiIifSxvLlNhbXBsZUVudHJ5LnByb3RvdHlwZS5nZXRTYW1wbGVSYXRlPWZ1bmN0aW9uKCl7cmV0dXJuIiJ9LG8uU2FtcGxlRW50cnkucHJvdG90eXBlLmdldFNhbXBsZVNpemU9ZnVuY3Rpb24oKXtyZXR1cm4iIn0sby5WaXN1YWxTYW1wbGVFbnRyeS5wcm90b3R5cGUuaXNWaWRlbz1mdW5jdGlvbigpe3JldHVybiEwfSxvLlZpc3VhbFNhbXBsZUVudHJ5LnByb3RvdHlwZS5nZXRXaWR0aD1mdW5jdGlvbigpe3JldHVybiB0aGlzLndpZHRofSxvLlZpc3VhbFNhbXBsZUVudHJ5LnByb3RvdHlwZS5nZXRIZWlnaHQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5oZWlnaHR9LG8uQXVkaW9TYW1wbGVFbnRyeS5wcm90b3R5cGUuaXNBdWRpbz1mdW5jdGlvbigpe3JldHVybiEwfSxvLkF1ZGlvU2FtcGxlRW50cnkucHJvdG90eXBlLmdldENoYW5uZWxDb3VudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNoYW5uZWxfY291bnR9LG8uQXVkaW9TYW1wbGVFbnRyeS5wcm90b3R5cGUuZ2V0U2FtcGxlUmF0ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnNhbXBsZXJhdGV9LG8uQXVkaW9TYW1wbGVFbnRyeS5wcm90b3R5cGUuZ2V0U2FtcGxlU2l6ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnNhbXBsZXNpemV9LG8uU3VidGl0bGVTYW1wbGVFbnRyeS5wcm90b3R5cGUuaXNTdWJ0aXRsZT1mdW5jdGlvbigpe3JldHVybiEwfSxvLk1ldGFkYXRhU2FtcGxlRW50cnkucHJvdG90eXBlLmlzTWV0YWRhdGE9ZnVuY3Rpb24oKXtyZXR1cm4hMH0sby5kZWNpbWFsVG9IZXg9ZnVuY3Rpb24oZSx0KXt2YXIgaT1OdW1iZXIoZSkudG9TdHJpbmcoMTYpO2Zvcih0PXR5cGVvZiB0PiJ1Inx8dD09PW51bGw/dD0yOnQ7aS5sZW5ndGg8dDspaT0iMCIraTtyZXR1cm4gaX0sby5hdmMxU2FtcGxlRW50cnkucHJvdG90eXBlLmdldENvZGVjPW8uYXZjMlNhbXBsZUVudHJ5LnByb3RvdHlwZS5nZXRDb2RlYz1vLmF2YzNTYW1wbGVFbnRyeS5wcm90b3R5cGUuZ2V0Q29kZWM9by5hdmM0U2FtcGxlRW50cnkucHJvdG90eXBlLmdldENvZGVjPWZ1bmN0aW9uKCl7dmFyIGU9by5TYW1wbGVFbnRyeS5wcm90b3R5cGUuZ2V0Q29kZWMuY2FsbCh0aGlzKTtyZXR1cm4gdGhpcy5hdmNDP2UrIi4iK28uZGVjaW1hbFRvSGV4KHRoaXMuYXZjQy5BVkNQcm9maWxlSW5kaWNhdGlvbikrby5kZWNpbWFsVG9IZXgodGhpcy5hdmNDLnByb2ZpbGVfY29tcGF0aWJpbGl0eSkrby5kZWNpbWFsVG9IZXgodGhpcy5hdmNDLkFWQ0xldmVsSW5kaWNhdGlvbik6ZX0sby5oZXYxU2FtcGxlRW50cnkucHJvdG90eXBlLmdldENvZGVjPW8uaHZjMVNhbXBsZUVudHJ5LnByb3RvdHlwZS5nZXRDb2RlYz1mdW5jdGlvbigpe3ZhciBlLHQ9by5TYW1wbGVFbnRyeS5wcm90b3R5cGUuZ2V0Q29kZWMuY2FsbCh0aGlzKTtpZih0aGlzLmh2Y0Mpe3N3aXRjaCh0Kz0iLiIsdGhpcy5odmNDLmdlbmVyYWxfcHJvZmlsZV9zcGFjZSl7Y2FzZSAwOnQrPSIiO2JyZWFrO2Nhc2UgMTp0Kz0iQSI7YnJlYWs7Y2FzZSAyOnQrPSJCIjticmVhaztjYXNlIDM6dCs9IkMiO2JyZWFrfXQrPXRoaXMuaHZjQy5nZW5lcmFsX3Byb2ZpbGVfaWRjLHQrPSIuIjt2YXIgaT10aGlzLmh2Y0MuZ2VuZXJhbF9wcm9maWxlX2NvbXBhdGliaWxpdHksZj0wO2ZvcihlPTA7ZTwzMiYmKGZ8PWkmMSxlIT0zMSk7ZSsrKWY8PD0xLGk+Pj0xO3QrPW8uZGVjaW1hbFRvSGV4KGYsMCksdCs9Ii4iLHRoaXMuaHZjQy5nZW5lcmFsX3RpZXJfZmxhZz09PTA/dCs9IkwiOnQrPSJIIix0Kz10aGlzLmh2Y0MuZ2VuZXJhbF9sZXZlbF9pZGM7dmFyIHU9ITEsdj0iIjtmb3IoZT01O2U+PTA7ZS0tKSh0aGlzLmh2Y0MuZ2VuZXJhbF9jb25zdHJhaW50X2luZGljYXRvcltlXXx8dSkmJih2PSIuIitvLmRlY2ltYWxUb0hleCh0aGlzLmh2Y0MuZ2VuZXJhbF9jb25zdHJhaW50X2luZGljYXRvcltlXSwwKSt2LHU9ITApO3QrPXZ9cmV0dXJuIHR9LG8udnZjMVNhbXBsZUVudHJ5LnByb3RvdHlwZS5nZXRDb2RlYz1vLnZ2aTFTYW1wbGVFbnRyeS5wcm90b3R5cGUuZ2V0Q29kZWM9ZnVuY3Rpb24oKXt2YXIgZSx0PW8uU2FtcGxlRW50cnkucHJvdG90eXBlLmdldENvZGVjLmNhbGwodGhpcyk7aWYodGhpcy52dmNDKXt0Kz0iLiIrdGhpcy52dmNDLmdlbmVyYWxfcHJvZmlsZV9pZGMsdGhpcy52dmNDLmdlbmVyYWxfdGllcl9mbGFnP3QrPSIuSCI6dCs9Ii5MIix0Kz10aGlzLnZ2Y0MuZ2VuZXJhbF9sZXZlbF9pZGM7dmFyIGk9IiI7aWYodGhpcy52dmNDLmdlbmVyYWxfY29uc3RyYWludF9pbmZvKXt2YXIgZj1bXSx1PTA7dXw9dGhpcy52dmNDLnB0bF9mcmFtZV9vbmx5X2NvbnN0cmFpbnQ8PDcsdXw9dGhpcy52dmNDLnB0bF9tdWx0aWxheWVyX2VuYWJsZWQ8PDY7dmFyIHY7Zm9yKGU9MDtlPHRoaXMudnZjQy5nZW5lcmFsX2NvbnN0cmFpbnRfaW5mby5sZW5ndGg7KytlKXV8PXRoaXMudnZjQy5nZW5lcmFsX2NvbnN0cmFpbnRfaW5mb1tlXT4+MiY2MyxmLnB1c2godSksdSYmKHY9ZSksdT10aGlzLnZ2Y0MuZ2VuZXJhbF9jb25zdHJhaW50X2luZm9bZV0+PjImMztpZih2PT09dm9pZCAwKWk9Ii5DQSI7ZWxzZXtpPSIuQyI7dmFyIHk9IkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaMjM0NTY3IixtPTAsYj0wO2ZvcihlPTA7ZTw9djsrK2UpZm9yKG09bTw8OHxmW2VdLGIrPTg7Yj49NTspe3ZhciB4PW0+PmItNSYzMTtpKz15W3hdLGItPTUsbSY9KDE8PGIpLTF9YiYmKG08PD01LWIsaSs9eVttJjMxXSl9fXQrPWl9cmV0dXJuIHR9LG8ubXA0YVNhbXBsZUVudHJ5LnByb3RvdHlwZS5nZXRDb2RlYz1mdW5jdGlvbigpe3ZhciBlPW8uU2FtcGxlRW50cnkucHJvdG90eXBlLmdldENvZGVjLmNhbGwodGhpcyk7aWYodGhpcy5lc2RzJiZ0aGlzLmVzZHMuZXNkKXt2YXIgdD10aGlzLmVzZHMuZXNkLmdldE9USSgpLGk9dGhpcy5lc2RzLmVzZC5nZXRBdWRpb0NvbmZpZygpO3JldHVybiBlKyIuIitvLmRlY2ltYWxUb0hleCh0KSsoaT8iLiIraToiIil9ZWxzZSByZXR1cm4gZX0sby5zdHh0U2FtcGxlRW50cnkucHJvdG90eXBlLmdldENvZGVjPWZ1bmN0aW9uKCl7dmFyIGU9by5TYW1wbGVFbnRyeS5wcm90b3R5cGUuZ2V0Q29kZWMuY2FsbCh0aGlzKTtyZXR1cm4gdGhpcy5taW1lX2Zvcm1hdD9lKyIuIit0aGlzLm1pbWVfZm9ybWF0OmV9LG8udnAwOFNhbXBsZUVudHJ5LnByb3RvdHlwZS5nZXRDb2RlYz1vLnZwMDlTYW1wbGVFbnRyeS5wcm90b3R5cGUuZ2V0Q29kZWM9ZnVuY3Rpb24oKXt2YXIgZT1vLlNhbXBsZUVudHJ5LnByb3RvdHlwZS5nZXRDb2RlYy5jYWxsKHRoaXMpLHQ9dGhpcy52cGNDLmxldmVsO3Q9PTAmJih0PSIwMCIpO3ZhciBpPXRoaXMudnBjQy5iaXREZXB0aDtyZXR1cm4gaT09OCYmKGk9IjA4IiksZSsiLjAiK3RoaXMudnBjQy5wcm9maWxlKyIuIit0KyIuIitpfSxvLmF2MDFTYW1wbGVFbnRyeS5wcm90b3R5cGUuZ2V0Q29kZWM9ZnVuY3Rpb24oKXt2YXIgZT1vLlNhbXBsZUVudHJ5LnByb3RvdHlwZS5nZXRDb2RlYy5jYWxsKHRoaXMpLHQ9dGhpcy5hdjFDLnNlcV9sZXZlbF9pZHhfMDt0PDEwJiYodD0iMCIrdCk7dmFyIGk7cmV0dXJuIHRoaXMuYXYxQy5zZXFfcHJvZmlsZT09PTImJnRoaXMuYXYxQy5oaWdoX2JpdGRlcHRoPT09MT9pPXRoaXMuYXYxQy50d2VsdmVfYml0PT09MT8iMTIiOiIxMCI6dGhpcy5hdjFDLnNlcV9wcm9maWxlPD0yJiYoaT10aGlzLmF2MUMuaGlnaF9iaXRkZXB0aD09PTE/IjEwIjoiMDgiKSxlKyIuIit0aGlzLmF2MUMuc2VxX3Byb2ZpbGUrIi4iK3QrKHRoaXMuYXYxQy5zZXFfdGllcl8wPyJIIjoiTSIpKyIuIitpfSxvLkJveC5wcm90b3R5cGUud3JpdGVIZWFkZXI9ZnVuY3Rpb24oZSx0KXt0aGlzLnNpemUrPTgsdGhpcy5zaXplPmwmJih0aGlzLnNpemUrPTgpLHRoaXMudHlwZT09PSJ1dWlkIiYmKHRoaXMuc2l6ZSs9MTYpLHIuZGVidWcoIkJveFdyaXRlciIsIldyaXRpbmcgYm94ICIrdGhpcy50eXBlKyIgb2Ygc2l6ZTogIit0aGlzLnNpemUrIiBhdCBwb3NpdGlvbiAiK2UuZ2V0UG9zaXRpb24oKSsodHx8IiIpKSx0aGlzLnNpemU+bD9lLndyaXRlVWludDMyKDEpOih0aGlzLnNpemVQb3NpdGlvbj1lLmdldFBvc2l0aW9uKCksZS53cml0ZVVpbnQzMih0aGlzLnNpemUpKSxlLndyaXRlU3RyaW5nKHRoaXMudHlwZSxudWxsLDQpLHRoaXMudHlwZT09PSJ1dWlkIiYmZS53cml0ZVVpbnQ4QXJyYXkodGhpcy51dWlkKSx0aGlzLnNpemU+bCYmZS53cml0ZVVpbnQ2NCh0aGlzLnNpemUpfSxvLkZ1bGxCb3gucHJvdG90eXBlLndyaXRlSGVhZGVyPWZ1bmN0aW9uKGUpe3RoaXMuc2l6ZSs9NCxvLkJveC5wcm90b3R5cGUud3JpdGVIZWFkZXIuY2FsbCh0aGlzLGUsIiB2PSIrdGhpcy52ZXJzaW9uKyIgZj0iK3RoaXMuZmxhZ3MpLGUud3JpdGVVaW50OCh0aGlzLnZlcnNpb24pLGUud3JpdGVVaW50MjQodGhpcy5mbGFncyl9LG8uQm94LnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihlKXt0aGlzLnR5cGU9PT0ibWRhdCI/dGhpcy5kYXRhJiYodGhpcy5zaXplPXRoaXMuZGF0YS5sZW5ndGgsdGhpcy53cml0ZUhlYWRlcihlKSxlLndyaXRlVWludDhBcnJheSh0aGlzLmRhdGEpKToodGhpcy5zaXplPXRoaXMuZGF0YT90aGlzLmRhdGEubGVuZ3RoOjAsdGhpcy53cml0ZUhlYWRlcihlKSx0aGlzLmRhdGEmJmUud3JpdGVVaW50OEFycmF5KHRoaXMuZGF0YSkpfSxvLkNvbnRhaW5lckJveC5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oZSl7dGhpcy5zaXplPTAsdGhpcy53cml0ZUhlYWRlcihlKTtmb3IodmFyIHQ9MDt0PHRoaXMuYm94ZXMubGVuZ3RoO3QrKyl0aGlzLmJveGVzW3RdJiYodGhpcy5ib3hlc1t0XS53cml0ZShlKSx0aGlzLnNpemUrPXRoaXMuYm94ZXNbdF0uc2l6ZSk7ci5kZWJ1ZygiQm94V3JpdGVyIiwiQWRqdXN0aW5nIGJveCAiK3RoaXMudHlwZSsiIHdpdGggbmV3IHNpemUgIit0aGlzLnNpemUpLGUuYWRqdXN0VWludDMyKHRoaXMuc2l6ZVBvc2l0aW9uLHRoaXMuc2l6ZSl9LG8uVHJhY2tSZWZlcmVuY2VUeXBlQm94LnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihlKXt0aGlzLnNpemU9dGhpcy50cmFja19pZHMubGVuZ3RoKjQsdGhpcy53cml0ZUhlYWRlcihlKSxlLndyaXRlVWludDMyQXJyYXkodGhpcy50cmFja19pZHMpfSxvLmF2Y0NCb3gucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKGUpe3ZhciB0O2Zvcih0aGlzLnNpemU9Nyx0PTA7dDx0aGlzLlNQUy5sZW5ndGg7dCsrKXRoaXMuc2l6ZSs9Mit0aGlzLlNQU1t0XS5sZW5ndGg7Zm9yKHQ9MDt0PHRoaXMuUFBTLmxlbmd0aDt0KyspdGhpcy5zaXplKz0yK3RoaXMuUFBTW3RdLmxlbmd0aDtmb3IodGhpcy5leHQmJih0aGlzLnNpemUrPXRoaXMuZXh0Lmxlbmd0aCksdGhpcy53cml0ZUhlYWRlcihlKSxlLndyaXRlVWludDgodGhpcy5jb25maWd1cmF0aW9uVmVyc2lvbiksZS53cml0ZVVpbnQ4KHRoaXMuQVZDUHJvZmlsZUluZGljYXRpb24pLGUud3JpdGVVaW50OCh0aGlzLnByb2ZpbGVfY29tcGF0aWJpbGl0eSksZS53cml0ZVVpbnQ4KHRoaXMuQVZDTGV2ZWxJbmRpY2F0aW9uKSxlLndyaXRlVWludDgodGhpcy5sZW5ndGhTaXplTWludXNPbmUrMjUyKSxlLndyaXRlVWludDgodGhpcy5TUFMubGVuZ3RoKzIyNCksdD0wO3Q8dGhpcy5TUFMubGVuZ3RoO3QrKyllLndyaXRlVWludDE2KHRoaXMuU1BTW3RdLmxlbmd0aCksZS53cml0ZVVpbnQ4QXJyYXkodGhpcy5TUFNbdF0ubmFsdSk7Zm9yKGUud3JpdGVVaW50OCh0aGlzLlBQUy5sZW5ndGgpLHQ9MDt0PHRoaXMuUFBTLmxlbmd0aDt0KyspZS53cml0ZVVpbnQxNih0aGlzLlBQU1t0XS5sZW5ndGgpLGUud3JpdGVVaW50OEFycmF5KHRoaXMuUFBTW3RdLm5hbHUpO3RoaXMuZXh0JiZlLndyaXRlVWludDhBcnJheSh0aGlzLmV4dCl9LG8uY282NEJveC5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oZSl7dmFyIHQ7Zm9yKHRoaXMudmVyc2lvbj0wLHRoaXMuZmxhZ3M9MCx0aGlzLnNpemU9NCs4KnRoaXMuY2h1bmtfb2Zmc2V0cy5sZW5ndGgsdGhpcy53cml0ZUhlYWRlcihlKSxlLndyaXRlVWludDMyKHRoaXMuY2h1bmtfb2Zmc2V0cy5sZW5ndGgpLHQ9MDt0PHRoaXMuY2h1bmtfb2Zmc2V0cy5sZW5ndGg7dCsrKWUud3JpdGVVaW50NjQodGhpcy5jaHVua19vZmZzZXRzW3RdKX0sby5jc2xnQm94LnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihlKXt0aGlzLnZlcnNpb249MCx0aGlzLmZsYWdzPTAsdGhpcy5zaXplPTQqNSx0aGlzLndyaXRlSGVhZGVyKGUpLGUud3JpdGVJbnQzMih0aGlzLmNvbXBvc2l0aW9uVG9EVFNTaGlmdCksZS53cml0ZUludDMyKHRoaXMubGVhc3REZWNvZGVUb0Rpc3BsYXlEZWx0YSksZS53cml0ZUludDMyKHRoaXMuZ3JlYXRlc3REZWNvZGVUb0Rpc3BsYXlEZWx0YSksZS53cml0ZUludDMyKHRoaXMuY29tcG9zaXRpb25TdGFydFRpbWUpLGUud3JpdGVJbnQzMih0aGlzLmNvbXBvc2l0aW9uRW5kVGltZSl9LG8uY3R0c0JveC5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oZSl7dmFyIHQ7Zm9yKHRoaXMudmVyc2lvbj0wLHRoaXMuZmxhZ3M9MCx0aGlzLnNpemU9NCs4KnRoaXMuc2FtcGxlX2NvdW50cy5sZW5ndGgsdGhpcy53cml0ZUhlYWRlcihlKSxlLndyaXRlVWludDMyKHRoaXMuc2FtcGxlX2NvdW50cy5sZW5ndGgpLHQ9MDt0PHRoaXMuc2FtcGxlX2NvdW50cy5sZW5ndGg7dCsrKWUud3JpdGVVaW50MzIodGhpcy5zYW1wbGVfY291bnRzW3RdKSx0aGlzLnZlcnNpb249PT0xP2Uud3JpdGVJbnQzMih0aGlzLnNhbXBsZV9vZmZzZXRzW3RdKTplLndyaXRlVWludDMyKHRoaXMuc2FtcGxlX29mZnNldHNbdF0pfSxvLmRyZWZCb3gucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKGUpe3RoaXMudmVyc2lvbj0wLHRoaXMuZmxhZ3M9MCx0aGlzLnNpemU9NCx0aGlzLndyaXRlSGVhZGVyKGUpLGUud3JpdGVVaW50MzIodGhpcy5lbnRyaWVzLmxlbmd0aCk7Zm9yKHZhciB0PTA7dDx0aGlzLmVudHJpZXMubGVuZ3RoO3QrKyl0aGlzLmVudHJpZXNbdF0ud3JpdGUoZSksdGhpcy5zaXplKz10aGlzLmVudHJpZXNbdF0uc2l6ZTtyLmRlYnVnKCJCb3hXcml0ZXIiLCJBZGp1c3RpbmcgYm94ICIrdGhpcy50eXBlKyIgd2l0aCBuZXcgc2l6ZSAiK3RoaXMuc2l6ZSksZS5hZGp1c3RVaW50MzIodGhpcy5zaXplUG9zaXRpb24sdGhpcy5zaXplKX0sby5lbG5nQm94LnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihlKXt0aGlzLnZlcnNpb249MCx0aGlzLmZsYWdzPTAsdGhpcy5zaXplPXRoaXMuZXh0ZW5kZWRfbGFuZ3VhZ2UubGVuZ3RoLHRoaXMud3JpdGVIZWFkZXIoZSksZS53cml0ZVN0cmluZyh0aGlzLmV4dGVuZGVkX2xhbmd1YWdlKX0sby5lbHN0Qm94LnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihlKXt0aGlzLnZlcnNpb249MCx0aGlzLmZsYWdzPTAsdGhpcy5zaXplPTQrMTIqdGhpcy5lbnRyaWVzLmxlbmd0aCx0aGlzLndyaXRlSGVhZGVyKGUpLGUud3JpdGVVaW50MzIodGhpcy5lbnRyaWVzLmxlbmd0aCk7Zm9yKHZhciB0PTA7dDx0aGlzLmVudHJpZXMubGVuZ3RoO3QrKyl7dmFyIGk9dGhpcy5lbnRyaWVzW3RdO2Uud3JpdGVVaW50MzIoaS5zZWdtZW50X2R1cmF0aW9uKSxlLndyaXRlSW50MzIoaS5tZWRpYV90aW1lKSxlLndyaXRlSW50MTYoaS5tZWRpYV9yYXRlX2ludGVnZXIpLGUud3JpdGVJbnQxNihpLm1lZGlhX3JhdGVfZnJhY3Rpb24pfX0sby5lbXNnQm94LnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihlKXt0aGlzLnZlcnNpb249MCx0aGlzLmZsYWdzPTAsdGhpcy5zaXplPTQqNCt0aGlzLm1lc3NhZ2VfZGF0YS5sZW5ndGgrKHRoaXMuc2NoZW1lX2lkX3VyaS5sZW5ndGgrMSkrKHRoaXMudmFsdWUubGVuZ3RoKzEpLHRoaXMud3JpdGVIZWFkZXIoZSksZS53cml0ZUNTdHJpbmcodGhpcy5zY2hlbWVfaWRfdXJpKSxlLndyaXRlQ1N0cmluZyh0aGlzLnZhbHVlKSxlLndyaXRlVWludDMyKHRoaXMudGltZXNjYWxlKSxlLndyaXRlVWludDMyKHRoaXMucHJlc2VudGF0aW9uX3RpbWVfZGVsdGEpLGUud3JpdGVVaW50MzIodGhpcy5ldmVudF9kdXJhdGlvbiksZS53cml0ZVVpbnQzMih0aGlzLmlkKSxlLndyaXRlVWludDhBcnJheSh0aGlzLm1lc3NhZ2VfZGF0YSl9LG8uZnR5cEJveC5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oZSl7dGhpcy5zaXplPTgrNCp0aGlzLmNvbXBhdGlibGVfYnJhbmRzLmxlbmd0aCx0aGlzLndyaXRlSGVhZGVyKGUpLGUud3JpdGVTdHJpbmcodGhpcy5tYWpvcl9icmFuZCxudWxsLDQpLGUud3JpdGVVaW50MzIodGhpcy5taW5vcl92ZXJzaW9uKTtmb3IodmFyIHQ9MDt0PHRoaXMuY29tcGF0aWJsZV9icmFuZHMubGVuZ3RoO3QrKyllLndyaXRlU3RyaW5nKHRoaXMuY29tcGF0aWJsZV9icmFuZHNbdF0sbnVsbCw0KX0sby5oZGxyQm94LnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihlKXt0aGlzLnNpemU9NSo0K3RoaXMubmFtZS5sZW5ndGgrMSx0aGlzLnZlcnNpb249MCx0aGlzLmZsYWdzPTAsdGhpcy53cml0ZUhlYWRlcihlKSxlLndyaXRlVWludDMyKDApLGUud3JpdGVTdHJpbmcodGhpcy5oYW5kbGVyLG51bGwsNCksZS53cml0ZVVpbnQzMigwKSxlLndyaXRlVWludDMyKDApLGUud3JpdGVVaW50MzIoMCksZS53cml0ZUNTdHJpbmcodGhpcy5uYW1lKX0sby5raW5kQm94LnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihlKXt0aGlzLnZlcnNpb249MCx0aGlzLmZsYWdzPTAsdGhpcy5zaXplPXRoaXMuc2NoZW1lVVJJLmxlbmd0aCsxKyh0aGlzLnZhbHVlLmxlbmd0aCsxKSx0aGlzLndyaXRlSGVhZGVyKGUpLGUud3JpdGVDU3RyaW5nKHRoaXMuc2NoZW1lVVJJKSxlLndyaXRlQ1N0cmluZyh0aGlzLnZhbHVlKX0sby5tZGhkQm94LnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihlKXt0aGlzLnNpemU9NCo0KzIqMix0aGlzLmZsYWdzPTAsdGhpcy52ZXJzaW9uPTAsdGhpcy53cml0ZUhlYWRlcihlKSxlLndyaXRlVWludDMyKHRoaXMuY3JlYXRpb25fdGltZSksZS53cml0ZVVpbnQzMih0aGlzLm1vZGlmaWNhdGlvbl90aW1lKSxlLndyaXRlVWludDMyKHRoaXMudGltZXNjYWxlKSxlLndyaXRlVWludDMyKHRoaXMuZHVyYXRpb24pLGUud3JpdGVVaW50MTYodGhpcy5sYW5ndWFnZSksZS53cml0ZVVpbnQxNigwKX0sby5tZWhkQm94LnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihlKXt0aGlzLnZlcnNpb249MCx0aGlzLmZsYWdzPTAsdGhpcy5zaXplPTQsdGhpcy53cml0ZUhlYWRlcihlKSxlLndyaXRlVWludDMyKHRoaXMuZnJhZ21lbnRfZHVyYXRpb24pfSxvLm1maGRCb3gucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKGUpe3RoaXMudmVyc2lvbj0wLHRoaXMuZmxhZ3M9MCx0aGlzLnNpemU9NCx0aGlzLndyaXRlSGVhZGVyKGUpLGUud3JpdGVVaW50MzIodGhpcy5zZXF1ZW5jZV9udW1iZXIpfSxvLm12aGRCb3gucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKGUpe3RoaXMudmVyc2lvbj0wLHRoaXMuZmxhZ3M9MCx0aGlzLnNpemU9MjMqNCsyKjIsdGhpcy53cml0ZUhlYWRlcihlKSxlLndyaXRlVWludDMyKHRoaXMuY3JlYXRpb25fdGltZSksZS53cml0ZVVpbnQzMih0aGlzLm1vZGlmaWNhdGlvbl90aW1lKSxlLndyaXRlVWludDMyKHRoaXMudGltZXNjYWxlKSxlLndyaXRlVWludDMyKHRoaXMuZHVyYXRpb24pLGUud3JpdGVVaW50MzIodGhpcy5yYXRlKSxlLndyaXRlVWludDE2KHRoaXMudm9sdW1lPDw4KSxlLndyaXRlVWludDE2KDApLGUud3JpdGVVaW50MzIoMCksZS53cml0ZVVpbnQzMigwKSxlLndyaXRlVWludDMyQXJyYXkodGhpcy5tYXRyaXgpLGUud3JpdGVVaW50MzIoMCksZS53cml0ZVVpbnQzMigwKSxlLndyaXRlVWludDMyKDApLGUud3JpdGVVaW50MzIoMCksZS53cml0ZVVpbnQzMigwKSxlLndyaXRlVWludDMyKDApLGUud3JpdGVVaW50MzIodGhpcy5uZXh0X3RyYWNrX2lkKX0sby5TYW1wbGVFbnRyeS5wcm90b3R5cGUud3JpdGVIZWFkZXI9ZnVuY3Rpb24oZSl7dGhpcy5zaXplPTgsby5Cb3gucHJvdG90eXBlLndyaXRlSGVhZGVyLmNhbGwodGhpcyxlKSxlLndyaXRlVWludDgoMCksZS53cml0ZVVpbnQ4KDApLGUud3JpdGVVaW50OCgwKSxlLndyaXRlVWludDgoMCksZS53cml0ZVVpbnQ4KDApLGUud3JpdGVVaW50OCgwKSxlLndyaXRlVWludDE2KHRoaXMuZGF0YV9yZWZlcmVuY2VfaW5kZXgpfSxvLlNhbXBsZUVudHJ5LnByb3RvdHlwZS53cml0ZUZvb3Rlcj1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PHRoaXMuYm94ZXMubGVuZ3RoO3QrKyl0aGlzLmJveGVzW3RdLndyaXRlKGUpLHRoaXMuc2l6ZSs9dGhpcy5ib3hlc1t0XS5zaXplO3IuZGVidWcoIkJveFdyaXRlciIsIkFkanVzdGluZyBib3ggIit0aGlzLnR5cGUrIiB3aXRoIG5ldyBzaXplICIrdGhpcy5zaXplKSxlLmFkanVzdFVpbnQzMih0aGlzLnNpemVQb3NpdGlvbix0aGlzLnNpemUpfSxvLlNhbXBsZUVudHJ5LnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihlKXt0aGlzLndyaXRlSGVhZGVyKGUpLGUud3JpdGVVaW50OEFycmF5KHRoaXMuZGF0YSksdGhpcy5zaXplKz10aGlzLmRhdGEubGVuZ3RoLHIuZGVidWcoIkJveFdyaXRlciIsIkFkanVzdGluZyBib3ggIit0aGlzLnR5cGUrIiB3aXRoIG5ldyBzaXplICIrdGhpcy5zaXplKSxlLmFkanVzdFVpbnQzMih0aGlzLnNpemVQb3NpdGlvbix0aGlzLnNpemUpfSxvLlZpc3VhbFNhbXBsZUVudHJ5LnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihlKXt0aGlzLndyaXRlSGVhZGVyKGUpLHRoaXMuc2l6ZSs9Mio3KzYqNCszMixlLndyaXRlVWludDE2KDApLGUud3JpdGVVaW50MTYoMCksZS53cml0ZVVpbnQzMigwKSxlLndyaXRlVWludDMyKDApLGUud3JpdGVVaW50MzIoMCksZS53cml0ZVVpbnQxNih0aGlzLndpZHRoKSxlLndyaXRlVWludDE2KHRoaXMuaGVpZ2h0KSxlLndyaXRlVWludDMyKHRoaXMuaG9yaXpyZXNvbHV0aW9uKSxlLndyaXRlVWludDMyKHRoaXMudmVydHJlc29sdXRpb24pLGUud3JpdGVVaW50MzIoMCksZS53cml0ZVVpbnQxNih0aGlzLmZyYW1lX2NvdW50KSxlLndyaXRlVWludDgoTWF0aC5taW4oMzEsdGhpcy5jb21wcmVzc29ybmFtZS5sZW5ndGgpKSxlLndyaXRlU3RyaW5nKHRoaXMuY29tcHJlc3Nvcm5hbWUsbnVsbCwzMSksZS53cml0ZVVpbnQxNih0aGlzLmRlcHRoKSxlLndyaXRlSW50MTYoLTEpLHRoaXMud3JpdGVGb290ZXIoZSl9LG8uQXVkaW9TYW1wbGVFbnRyeS5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oZSl7dGhpcy53cml0ZUhlYWRlcihlKSx0aGlzLnNpemUrPTIqNCszKjQsZS53cml0ZVVpbnQzMigwKSxlLndyaXRlVWludDMyKDApLGUud3JpdGVVaW50MTYodGhpcy5jaGFubmVsX2NvdW50KSxlLndyaXRlVWludDE2KHRoaXMuc2FtcGxlc2l6ZSksZS53cml0ZVVpbnQxNigwKSxlLndyaXRlVWludDE2KDApLGUud3JpdGVVaW50MzIodGhpcy5zYW1wbGVyYXRlPDwxNiksdGhpcy53cml0ZUZvb3RlcihlKX0sby5zdHBwU2FtcGxlRW50cnkucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKGUpe3RoaXMud3JpdGVIZWFkZXIoZSksdGhpcy5zaXplKz10aGlzLm5hbWVzcGFjZS5sZW5ndGgrMSt0aGlzLnNjaGVtYV9sb2NhdGlvbi5sZW5ndGgrMSt0aGlzLmF1eGlsaWFyeV9taW1lX3R5cGVzLmxlbmd0aCsxLGUud3JpdGVDU3RyaW5nKHRoaXMubmFtZXNwYWNlKSxlLndyaXRlQ1N0cmluZyh0aGlzLnNjaGVtYV9sb2NhdGlvbiksZS53cml0ZUNTdHJpbmcodGhpcy5hdXhpbGlhcnlfbWltZV90eXBlcyksdGhpcy53cml0ZUZvb3RlcihlKX0sby5TYW1wbGVHcm91cEVudHJ5LnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihlKXtlLndyaXRlVWludDhBcnJheSh0aGlzLmRhdGEpfSxvLnNiZ3BCb3gucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKGUpe3RoaXMudmVyc2lvbj0xLHRoaXMuZmxhZ3M9MCx0aGlzLnNpemU9MTIrOCp0aGlzLmVudHJpZXMubGVuZ3RoLHRoaXMud3JpdGVIZWFkZXIoZSksZS53cml0ZVN0cmluZyh0aGlzLmdyb3VwaW5nX3R5cGUsbnVsbCw0KSxlLndyaXRlVWludDMyKHRoaXMuZ3JvdXBpbmdfdHlwZV9wYXJhbWV0ZXIpLGUud3JpdGVVaW50MzIodGhpcy5lbnRyaWVzLmxlbmd0aCk7Zm9yKHZhciB0PTA7dDx0aGlzLmVudHJpZXMubGVuZ3RoO3QrKyl7dmFyIGk9dGhpcy5lbnRyaWVzW3RdO2Uud3JpdGVJbnQzMihpLnNhbXBsZV9jb3VudCksZS53cml0ZUludDMyKGkuZ3JvdXBfZGVzY3JpcHRpb25faW5kZXgpfX0sby5zZ3BkQm94LnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihlKXt2YXIgdCxpO2Zvcih0aGlzLmZsYWdzPTAsdGhpcy5zaXplPTEyLHQ9MDt0PHRoaXMuZW50cmllcy5sZW5ndGg7dCsrKWk9dGhpcy5lbnRyaWVzW3RdLHRoaXMudmVyc2lvbj09PTEmJih0aGlzLmRlZmF1bHRfbGVuZ3RoPT09MCYmKHRoaXMuc2l6ZSs9NCksdGhpcy5zaXplKz1pLmRhdGEubGVuZ3RoKTtmb3IodGhpcy53cml0ZUhlYWRlcihlKSxlLndyaXRlU3RyaW5nKHRoaXMuZ3JvdXBpbmdfdHlwZSxudWxsLDQpLHRoaXMudmVyc2lvbj09PTEmJmUud3JpdGVVaW50MzIodGhpcy5kZWZhdWx0X2xlbmd0aCksdGhpcy52ZXJzaW9uPj0yJiZlLndyaXRlVWludDMyKHRoaXMuZGVmYXVsdF9zYW1wbGVfZGVzY3JpcHRpb25faW5kZXgpLGUud3JpdGVVaW50MzIodGhpcy5lbnRyaWVzLmxlbmd0aCksdD0wO3Q8dGhpcy5lbnRyaWVzLmxlbmd0aDt0KyspaT10aGlzLmVudHJpZXNbdF0sdGhpcy52ZXJzaW9uPT09MSYmdGhpcy5kZWZhdWx0X2xlbmd0aD09PTAmJmUud3JpdGVVaW50MzIoaS5kZXNjcmlwdGlvbl9sZW5ndGgpLGkud3JpdGUoZSl9LG8uc2lkeEJveC5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oZSl7dGhpcy52ZXJzaW9uPTAsdGhpcy5mbGFncz0wLHRoaXMuc2l6ZT00KjQrMisyKzEyKnRoaXMucmVmZXJlbmNlcy5sZW5ndGgsdGhpcy53cml0ZUhlYWRlcihlKSxlLndyaXRlVWludDMyKHRoaXMucmVmZXJlbmNlX0lEKSxlLndyaXRlVWludDMyKHRoaXMudGltZXNjYWxlKSxlLndyaXRlVWludDMyKHRoaXMuZWFybGllc3RfcHJlc2VudGF0aW9uX3RpbWUpLGUud3JpdGVVaW50MzIodGhpcy5maXJzdF9vZmZzZXQpLGUud3JpdGVVaW50MTYoMCksZS53cml0ZVVpbnQxNih0aGlzLnJlZmVyZW5jZXMubGVuZ3RoKTtmb3IodmFyIHQ9MDt0PHRoaXMucmVmZXJlbmNlcy5sZW5ndGg7dCsrKXt2YXIgaT10aGlzLnJlZmVyZW5jZXNbdF07ZS53cml0ZVVpbnQzMihpLnJlZmVyZW5jZV90eXBlPDwzMXxpLnJlZmVyZW5jZWRfc2l6ZSksZS53cml0ZVVpbnQzMihpLnN1YnNlZ21lbnRfZHVyYXRpb24pLGUud3JpdGVVaW50MzIoaS5zdGFydHNfd2l0aF9TQVA8PDMxfGkuU0FQX3R5cGU8PDI4fGkuU0FQX2RlbHRhX3RpbWUpfX0sby5zbWhkQm94LnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihlKXt0aGlzLnZlcnNpb249MCx0aGlzLmZsYWdzPTEsdGhpcy5zaXplPTQsdGhpcy53cml0ZUhlYWRlcihlKSxlLndyaXRlVWludDE2KHRoaXMuYmFsYW5jZSksZS53cml0ZVVpbnQxNigwKX0sby5zdGNvQm94LnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihlKXt0aGlzLnZlcnNpb249MCx0aGlzLmZsYWdzPTAsdGhpcy5zaXplPTQrNCp0aGlzLmNodW5rX29mZnNldHMubGVuZ3RoLHRoaXMud3JpdGVIZWFkZXIoZSksZS53cml0ZVVpbnQzMih0aGlzLmNodW5rX29mZnNldHMubGVuZ3RoKSxlLndyaXRlVWludDMyQXJyYXkodGhpcy5jaHVua19vZmZzZXRzKX0sby5zdHNjQm94LnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihlKXt2YXIgdDtmb3IodGhpcy52ZXJzaW9uPTAsdGhpcy5mbGFncz0wLHRoaXMuc2l6ZT00KzEyKnRoaXMuZmlyc3RfY2h1bmsubGVuZ3RoLHRoaXMud3JpdGVIZWFkZXIoZSksZS53cml0ZVVpbnQzMih0aGlzLmZpcnN0X2NodW5rLmxlbmd0aCksdD0wO3Q8dGhpcy5maXJzdF9jaHVuay5sZW5ndGg7dCsrKWUud3JpdGVVaW50MzIodGhpcy5maXJzdF9jaHVua1t0XSksZS53cml0ZVVpbnQzMih0aGlzLnNhbXBsZXNfcGVyX2NodW5rW3RdKSxlLndyaXRlVWludDMyKHRoaXMuc2FtcGxlX2Rlc2NyaXB0aW9uX2luZGV4W3RdKX0sby5zdHNkQm94LnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihlKXt2YXIgdDtmb3IodGhpcy52ZXJzaW9uPTAsdGhpcy5mbGFncz0wLHRoaXMuc2l6ZT0wLHRoaXMud3JpdGVIZWFkZXIoZSksZS53cml0ZVVpbnQzMih0aGlzLmVudHJpZXMubGVuZ3RoKSx0aGlzLnNpemUrPTQsdD0wO3Q8dGhpcy5lbnRyaWVzLmxlbmd0aDt0KyspdGhpcy5lbnRyaWVzW3RdLndyaXRlKGUpLHRoaXMuc2l6ZSs9dGhpcy5lbnRyaWVzW3RdLnNpemU7ci5kZWJ1ZygiQm94V3JpdGVyIiwiQWRqdXN0aW5nIGJveCAiK3RoaXMudHlwZSsiIHdpdGggbmV3IHNpemUgIit0aGlzLnNpemUpLGUuYWRqdXN0VWludDMyKHRoaXMuc2l6ZVBvc2l0aW9uLHRoaXMuc2l6ZSl9LG8uc3RzaEJveC5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oZSl7dmFyIHQ7Zm9yKHRoaXMudmVyc2lvbj0wLHRoaXMuZmxhZ3M9MCx0aGlzLnNpemU9NCs4KnRoaXMuc2hhZG93ZWRfc2FtcGxlX251bWJlcnMubGVuZ3RoLHRoaXMud3JpdGVIZWFkZXIoZSksZS53cml0ZVVpbnQzMih0aGlzLnNoYWRvd2VkX3NhbXBsZV9udW1iZXJzLmxlbmd0aCksdD0wO3Q8dGhpcy5zaGFkb3dlZF9zYW1wbGVfbnVtYmVycy5sZW5ndGg7dCsrKWUud3JpdGVVaW50MzIodGhpcy5zaGFkb3dlZF9zYW1wbGVfbnVtYmVyc1t0XSksZS53cml0ZVVpbnQzMih0aGlzLnN5bmNfc2FtcGxlX251bWJlcnNbdF0pfSxvLnN0c3NCb3gucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKGUpe3RoaXMudmVyc2lvbj0wLHRoaXMuZmxhZ3M9MCx0aGlzLnNpemU9NCs0KnRoaXMuc2FtcGxlX251bWJlcnMubGVuZ3RoLHRoaXMud3JpdGVIZWFkZXIoZSksZS53cml0ZVVpbnQzMih0aGlzLnNhbXBsZV9udW1iZXJzLmxlbmd0aCksZS53cml0ZVVpbnQzMkFycmF5KHRoaXMuc2FtcGxlX251bWJlcnMpfSxvLnN0c3pCb3gucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKGUpe3ZhciB0LGk9ITA7aWYodGhpcy52ZXJzaW9uPTAsdGhpcy5mbGFncz0wLHRoaXMuc2FtcGxlX3NpemVzLmxlbmd0aD4wKWZvcih0PTA7dCsxPHRoaXMuc2FtcGxlX3NpemVzLmxlbmd0aDspaWYodGhpcy5zYW1wbGVfc2l6ZXNbdCsxXSE9PXRoaXMuc2FtcGxlX3NpemVzWzBdKXtpPSExO2JyZWFrfWVsc2UgdCsrO2Vsc2UgaT0hMTt0aGlzLnNpemU9OCxpfHwodGhpcy5zaXplKz00KnRoaXMuc2FtcGxlX3NpemVzLmxlbmd0aCksdGhpcy53cml0ZUhlYWRlcihlKSxpP2Uud3JpdGVVaW50MzIodGhpcy5zYW1wbGVfc2l6ZXNbMF0pOmUud3JpdGVVaW50MzIoMCksZS53cml0ZVVpbnQzMih0aGlzLnNhbXBsZV9zaXplcy5sZW5ndGgpLGl8fGUud3JpdGVVaW50MzJBcnJheSh0aGlzLnNhbXBsZV9zaXplcyl9LG8uc3R0c0JveC5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oZSl7dmFyIHQ7Zm9yKHRoaXMudmVyc2lvbj0wLHRoaXMuZmxhZ3M9MCx0aGlzLnNpemU9NCs4KnRoaXMuc2FtcGxlX2NvdW50cy5sZW5ndGgsdGhpcy53cml0ZUhlYWRlcihlKSxlLndyaXRlVWludDMyKHRoaXMuc2FtcGxlX2NvdW50cy5sZW5ndGgpLHQ9MDt0PHRoaXMuc2FtcGxlX2NvdW50cy5sZW5ndGg7dCsrKWUud3JpdGVVaW50MzIodGhpcy5zYW1wbGVfY291bnRzW3RdKSxlLndyaXRlVWludDMyKHRoaXMuc2FtcGxlX2RlbHRhc1t0XSl9LG8udGZkdEJveC5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oZSl7dmFyIHQ9TWF0aC5wb3coMiwzMiktMTt0aGlzLnZlcnNpb249dGhpcy5iYXNlTWVkaWFEZWNvZGVUaW1lPnQ/MTowLHRoaXMuZmxhZ3M9MCx0aGlzLnNpemU9NCx0aGlzLnZlcnNpb249PT0xJiYodGhpcy5zaXplKz00KSx0aGlzLndyaXRlSGVhZGVyKGUpLHRoaXMudmVyc2lvbj09PTE/ZS53cml0ZVVpbnQ2NCh0aGlzLmJhc2VNZWRpYURlY29kZVRpbWUpOmUud3JpdGVVaW50MzIodGhpcy5iYXNlTWVkaWFEZWNvZGVUaW1lKX0sby50ZmhkQm94LnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihlKXt0aGlzLnZlcnNpb249MCx0aGlzLnNpemU9NCx0aGlzLmZsYWdzJm8uVEZIRF9GTEFHX0JBU0VfREFUQV9PRkZTRVQmJih0aGlzLnNpemUrPTgpLHRoaXMuZmxhZ3Mmby5URkhEX0ZMQUdfU0FNUExFX0RFU0MmJih0aGlzLnNpemUrPTQpLHRoaXMuZmxhZ3Mmby5URkhEX0ZMQUdfU0FNUExFX0RVUiYmKHRoaXMuc2l6ZSs9NCksdGhpcy5mbGFncyZvLlRGSERfRkxBR19TQU1QTEVfU0laRSYmKHRoaXMuc2l6ZSs9NCksdGhpcy5mbGFncyZvLlRGSERfRkxBR19TQU1QTEVfRkxBR1MmJih0aGlzLnNpemUrPTQpLHRoaXMud3JpdGVIZWFkZXIoZSksZS53cml0ZVVpbnQzMih0aGlzLnRyYWNrX2lkKSx0aGlzLmZsYWdzJm8uVEZIRF9GTEFHX0JBU0VfREFUQV9PRkZTRVQmJmUud3JpdGVVaW50NjQodGhpcy5iYXNlX2RhdGFfb2Zmc2V0KSx0aGlzLmZsYWdzJm8uVEZIRF9GTEFHX1NBTVBMRV9ERVNDJiZlLndyaXRlVWludDMyKHRoaXMuZGVmYXVsdF9zYW1wbGVfZGVzY3JpcHRpb25faW5kZXgpLHRoaXMuZmxhZ3Mmby5URkhEX0ZMQUdfU0FNUExFX0RVUiYmZS53cml0ZVVpbnQzMih0aGlzLmRlZmF1bHRfc2FtcGxlX2R1cmF0aW9uKSx0aGlzLmZsYWdzJm8uVEZIRF9GTEFHX1NBTVBMRV9TSVpFJiZlLndyaXRlVWludDMyKHRoaXMuZGVmYXVsdF9zYW1wbGVfc2l6ZSksdGhpcy5mbGFncyZvLlRGSERfRkxBR19TQU1QTEVfRkxBR1MmJmUud3JpdGVVaW50MzIodGhpcy5kZWZhdWx0X3NhbXBsZV9mbGFncyl9LG8udGtoZEJveC5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oZSl7dGhpcy52ZXJzaW9uPTAsdGhpcy5zaXplPTQqMTgrMio0LHRoaXMud3JpdGVIZWFkZXIoZSksZS53cml0ZVVpbnQzMih0aGlzLmNyZWF0aW9uX3RpbWUpLGUud3JpdGVVaW50MzIodGhpcy5tb2RpZmljYXRpb25fdGltZSksZS53cml0ZVVpbnQzMih0aGlzLnRyYWNrX2lkKSxlLndyaXRlVWludDMyKDApLGUud3JpdGVVaW50MzIodGhpcy5kdXJhdGlvbiksZS53cml0ZVVpbnQzMigwKSxlLndyaXRlVWludDMyKDApLGUud3JpdGVJbnQxNih0aGlzLmxheWVyKSxlLndyaXRlSW50MTYodGhpcy5hbHRlcm5hdGVfZ3JvdXApLGUud3JpdGVJbnQxNih0aGlzLnZvbHVtZTw8OCksZS53cml0ZVVpbnQxNigwKSxlLndyaXRlSW50MzJBcnJheSh0aGlzLm1hdHJpeCksZS53cml0ZVVpbnQzMih0aGlzLndpZHRoKSxlLndyaXRlVWludDMyKHRoaXMuaGVpZ2h0KX0sby50cmV4Qm94LnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihlKXt0aGlzLnZlcnNpb249MCx0aGlzLmZsYWdzPTAsdGhpcy5zaXplPTQqNSx0aGlzLndyaXRlSGVhZGVyKGUpLGUud3JpdGVVaW50MzIodGhpcy50cmFja19pZCksZS53cml0ZVVpbnQzMih0aGlzLmRlZmF1bHRfc2FtcGxlX2Rlc2NyaXB0aW9uX2luZGV4KSxlLndyaXRlVWludDMyKHRoaXMuZGVmYXVsdF9zYW1wbGVfZHVyYXRpb24pLGUud3JpdGVVaW50MzIodGhpcy5kZWZhdWx0X3NhbXBsZV9zaXplKSxlLndyaXRlVWludDMyKHRoaXMuZGVmYXVsdF9zYW1wbGVfZmxhZ3MpfSxvLnRydW5Cb3gucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKGUpe3RoaXMudmVyc2lvbj0wLHRoaXMuc2l6ZT00LHRoaXMuZmxhZ3Mmby5UUlVOX0ZMQUdTX0RBVEFfT0ZGU0VUJiYodGhpcy5zaXplKz00KSx0aGlzLmZsYWdzJm8uVFJVTl9GTEFHU19GSVJTVF9GTEFHJiYodGhpcy5zaXplKz00KSx0aGlzLmZsYWdzJm8uVFJVTl9GTEFHU19EVVJBVElPTiYmKHRoaXMuc2l6ZSs9NCp0aGlzLnNhbXBsZV9kdXJhdGlvbi5sZW5ndGgpLHRoaXMuZmxhZ3Mmby5UUlVOX0ZMQUdTX1NJWkUmJih0aGlzLnNpemUrPTQqdGhpcy5zYW1wbGVfc2l6ZS5sZW5ndGgpLHRoaXMuZmxhZ3Mmby5UUlVOX0ZMQUdTX0ZMQUdTJiYodGhpcy5zaXplKz00KnRoaXMuc2FtcGxlX2ZsYWdzLmxlbmd0aCksdGhpcy5mbGFncyZvLlRSVU5fRkxBR1NfQ1RTX09GRlNFVCYmKHRoaXMuc2l6ZSs9NCp0aGlzLnNhbXBsZV9jb21wb3NpdGlvbl90aW1lX29mZnNldC5sZW5ndGgpLHRoaXMud3JpdGVIZWFkZXIoZSksZS53cml0ZVVpbnQzMih0aGlzLnNhbXBsZV9jb3VudCksdGhpcy5mbGFncyZvLlRSVU5fRkxBR1NfREFUQV9PRkZTRVQmJih0aGlzLmRhdGFfb2Zmc2V0X3Bvc2l0aW9uPWUuZ2V0UG9zaXRpb24oKSxlLndyaXRlSW50MzIodGhpcy5kYXRhX29mZnNldCkpLHRoaXMuZmxhZ3Mmby5UUlVOX0ZMQUdTX0ZJUlNUX0ZMQUcmJmUud3JpdGVVaW50MzIodGhpcy5maXJzdF9zYW1wbGVfZmxhZ3MpO2Zvcih2YXIgdD0wO3Q8dGhpcy5zYW1wbGVfY291bnQ7dCsrKXRoaXMuZmxhZ3Mmby5UUlVOX0ZMQUdTX0RVUkFUSU9OJiZlLndyaXRlVWludDMyKHRoaXMuc2FtcGxlX2R1cmF0aW9uW3RdKSx0aGlzLmZsYWdzJm8uVFJVTl9GTEFHU19TSVpFJiZlLndyaXRlVWludDMyKHRoaXMuc2FtcGxlX3NpemVbdF0pLHRoaXMuZmxhZ3Mmby5UUlVOX0ZMQUdTX0ZMQUdTJiZlLndyaXRlVWludDMyKHRoaXMuc2FtcGxlX2ZsYWdzW3RdKSx0aGlzLmZsYWdzJm8uVFJVTl9GTEFHU19DVFNfT0ZGU0VUJiYodGhpcy52ZXJzaW9uPT09MD9lLndyaXRlVWludDMyKHRoaXMuc2FtcGxlX2NvbXBvc2l0aW9uX3RpbWVfb2Zmc2V0W3RdKTplLndyaXRlSW50MzIodGhpcy5zYW1wbGVfY29tcG9zaXRpb25fdGltZV9vZmZzZXRbdF0pKX0sb1sidXJsIEJveCJdLnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihlKXt0aGlzLnZlcnNpb249MCx0aGlzLmxvY2F0aW9uPyh0aGlzLmZsYWdzPTAsdGhpcy5zaXplPXRoaXMubG9jYXRpb24ubGVuZ3RoKzEpOih0aGlzLmZsYWdzPTEsdGhpcy5zaXplPTApLHRoaXMud3JpdGVIZWFkZXIoZSksdGhpcy5sb2NhdGlvbiYmZS53cml0ZUNTdHJpbmcodGhpcy5sb2NhdGlvbil9LG9bInVybiBCb3giXS5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oZSl7dGhpcy52ZXJzaW9uPTAsdGhpcy5mbGFncz0wLHRoaXMuc2l6ZT10aGlzLm5hbWUubGVuZ3RoKzErKHRoaXMubG9jYXRpb24/dGhpcy5sb2NhdGlvbi5sZW5ndGgrMTowKSx0aGlzLndyaXRlSGVhZGVyKGUpLGUud3JpdGVDU3RyaW5nKHRoaXMubmFtZSksdGhpcy5sb2NhdGlvbiYmZS53cml0ZUNTdHJpbmcodGhpcy5sb2NhdGlvbil9LG8udm1oZEJveC5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oZSl7dGhpcy52ZXJzaW9uPTAsdGhpcy5mbGFncz0xLHRoaXMuc2l6ZT04LHRoaXMud3JpdGVIZWFkZXIoZSksZS53cml0ZVVpbnQxNih0aGlzLmdyYXBoaWNzbW9kZSksZS53cml0ZVVpbnQxNkFycmF5KHRoaXMub3Bjb2xvcil9LG8uY3R0c0JveC5wcm90b3R5cGUudW5wYWNrPWZ1bmN0aW9uKGUpe3ZhciB0LGksZjtmb3IoZj0wLHQ9MDt0PHRoaXMuc2FtcGxlX2NvdW50cy5sZW5ndGg7dCsrKWZvcihpPTA7aTx0aGlzLnNhbXBsZV9jb3VudHNbdF07aSsrKWVbZl0ucHRzPWVbZl0uZHRzK3RoaXMuc2FtcGxlX29mZnNldHNbdF0sZisrfSxvLnN0dHNCb3gucHJvdG90eXBlLnVucGFjaz1mdW5jdGlvbihlKXt2YXIgdCxpLGY7Zm9yKGY9MCx0PTA7dDx0aGlzLnNhbXBsZV9jb3VudHMubGVuZ3RoO3QrKylmb3IoaT0wO2k8dGhpcy5zYW1wbGVfY291bnRzW3RdO2krKylmPT09MD9lW2ZdLmR0cz0wOmVbZl0uZHRzPWVbZi0xXS5kdHMrdGhpcy5zYW1wbGVfZGVsdGFzW3RdLGYrK30sby5zdGNvQm94LnByb3RvdHlwZS51bnBhY2s9ZnVuY3Rpb24oZSl7dmFyIHQ7Zm9yKHQ9MDt0PHRoaXMuY2h1bmtfb2Zmc2V0cy5sZW5ndGg7dCsrKWVbdF0ub2Zmc2V0PXRoaXMuY2h1bmtfb2Zmc2V0c1t0XX0sby5zdHNjQm94LnByb3RvdHlwZS51bnBhY2s9ZnVuY3Rpb24oZSl7dmFyIHQsaSxmLHUsdjtmb3IodT0wLHY9MCx0PTA7dDx0aGlzLmZpcnN0X2NodW5rLmxlbmd0aDt0KyspZm9yKGk9MDtpPCh0KzE8dGhpcy5maXJzdF9jaHVuay5sZW5ndGg/dGhpcy5maXJzdF9jaHVua1t0KzFdOjEvMCk7aSsrKWZvcih2KyssZj0wO2Y8dGhpcy5zYW1wbGVzX3Blcl9jaHVua1t0XTtmKyspe2lmKGVbdV0pZVt1XS5kZXNjcmlwdGlvbl9pbmRleD10aGlzLnNhbXBsZV9kZXNjcmlwdGlvbl9pbmRleFt0XSxlW3VdLmNodW5rX2luZGV4PXY7ZWxzZSByZXR1cm47dSsrfX0sby5zdHN6Qm94LnByb3RvdHlwZS51bnBhY2s9ZnVuY3Rpb24oZSl7dmFyIHQ7Zm9yKHQ9MDt0PHRoaXMuc2FtcGxlX3NpemVzLmxlbmd0aDt0KyspZVt0XS5zaXplPXRoaXMuc2FtcGxlX3NpemVzW3RdfSxvLkRJRkZfQk9YRVNfUFJPUF9OQU1FUz1bImJveGVzIiwiZW50cmllcyIsInJlZmVyZW5jZXMiLCJzdWJzYW1wbGVzIiwiaXRlbXMiLCJpdGVtX2luZm9zIiwiZXh0ZW50cyIsImFzc29jaWF0aW9ucyIsInN1YnNlZ21lbnRzIiwicmFuZ2VzIiwic2Vla0xpc3RzIiwic2Vla1BvaW50cyIsImVzZCIsImxldmVscyJdLG8uRElGRl9QUklNSVRJVkVfQVJSQVlfUFJPUF9OQU1FUz1bImNvbXBhdGlibGVfYnJhbmRzIiwibWF0cml4Iiwib3Bjb2xvciIsInNhbXBsZV9jb3VudHMiLCJzYW1wbGVfY291bnRzIiwic2FtcGxlX2RlbHRhcyIsImZpcnN0X2NodW5rIiwic2FtcGxlc19wZXJfY2h1bmsiLCJzYW1wbGVfc2l6ZXMiLCJjaHVua19vZmZzZXRzIiwic2FtcGxlX29mZnNldHMiLCJzYW1wbGVfZGVzY3JpcHRpb25faW5kZXgiLCJzYW1wbGVfZHVyYXRpb24iXSxvLmJveEVxdWFsRmllbGRzPWZ1bmN0aW9uKGUsdCl7aWYoZSYmIXQpcmV0dXJuITE7dmFyIGk7Zm9yKGkgaW4gZSlpZighKG8uRElGRl9CT1hFU19QUk9QX05BTUVTLmluZGV4T2YoaSk+LTEpKXtpZihlW2ldaW5zdGFuY2VvZiBvLkJveHx8dFtpXWluc3RhbmNlb2Ygby5Cb3gpY29udGludWU7aWYodHlwZW9mIGVbaV0+InUifHx0eXBlb2YgdFtpXT4idSIpY29udGludWU7aWYodHlwZW9mIGVbaV09PSJmdW5jdGlvbiJ8fHR5cGVvZiB0W2ldPT0iZnVuY3Rpb24iKWNvbnRpbnVlO2lmKGUuc3ViQm94TmFtZXMmJmUuc3ViQm94TmFtZXMuaW5kZXhPZihpLnNsaWNlKDAsNCkpPi0xfHx0LnN1YkJveE5hbWVzJiZ0LnN1YkJveE5hbWVzLmluZGV4T2YoaS5zbGljZSgwLDQpKT4tMSljb250aW51ZTtpZihpPT09ImRhdGEifHxpPT09InN0YXJ0Inx8aT09PSJzaXplInx8aT09PSJjcmVhdGlvbl90aW1lInx8aT09PSJtb2RpZmljYXRpb25fdGltZSIpY29udGludWU7aWYoby5ESUZGX1BSSU1JVElWRV9BUlJBWV9QUk9QX05BTUVTLmluZGV4T2YoaSk+LTEpY29udGludWU7aWYoZVtpXSE9PXRbaV0pcmV0dXJuITF9cmV0dXJuITB9LG8uYm94RXF1YWw9ZnVuY3Rpb24oZSx0KXtpZighby5ib3hFcXVhbEZpZWxkcyhlLHQpKXJldHVybiExO2Zvcih2YXIgaT0wO2k8by5ESUZGX0JPWEVTX1BST1BfTkFNRVMubGVuZ3RoO2krKyl7dmFyIGY9by5ESUZGX0JPWEVTX1BST1BfTkFNRVNbaV07aWYoZVtmXSYmdFtmXSYmIW8uYm94RXF1YWwoZVtmXSx0W2ZdKSlyZXR1cm4hMX1yZXR1cm4hMH07dmFyIF89ZnVuY3Rpb24oKXt9O18ucHJvdG90eXBlLnBhcnNlU2FtcGxlPWZ1bmN0aW9uKGUpe3ZhciB0PXt9LGk7dC5yZXNvdXJjZXM9W107dmFyIGY9bmV3IGEoZS5kYXRhLmJ1ZmZlcik7aWYoIWUuc3Vic2FtcGxlc3x8ZS5zdWJzYW1wbGVzLmxlbmd0aD09PTApdC5kb2N1bWVudFN0cmluZz1mLnJlYWRTdHJpbmcoZS5kYXRhLmxlbmd0aCk7ZWxzZSBpZih0LmRvY3VtZW50U3RyaW5nPWYucmVhZFN0cmluZyhlLnN1YnNhbXBsZXNbMF0uc2l6ZSksZS5zdWJzYW1wbGVzLmxlbmd0aD4xKWZvcihpPTE7aTxlLnN1YnNhbXBsZXMubGVuZ3RoO2krKyl0LnJlc291cmNlc1tpXT1mLnJlYWRVaW50OEFycmF5KGUuc3Vic2FtcGxlc1tpXS5zaXplKTtyZXR1cm4gdHlwZW9mIERPTVBhcnNlcjwidSImJih0LmRvY3VtZW50PW5ldyBET01QYXJzZXIoKS5wYXJzZUZyb21TdHJpbmcodC5kb2N1bWVudFN0cmluZywiYXBwbGljYXRpb24veG1sIikpLHR9O3ZhciBwPWZ1bmN0aW9uKCl7fTtwLnByb3RvdHlwZS5wYXJzZVNhbXBsZT1mdW5jdGlvbihlKXt2YXIgdCxpPW5ldyBhKGUuZGF0YS5idWZmZXIpO3JldHVybiB0PWkucmVhZFN0cmluZyhlLmRhdGEubGVuZ3RoKSx0fSxwLnByb3RvdHlwZS5wYXJzZUNvbmZpZz1mdW5jdGlvbihlKXt2YXIgdCxpPW5ldyBhKGUuYnVmZmVyKTtyZXR1cm4gaS5yZWFkVWludDMyKCksdD1pLnJlYWRDU3RyaW5nKCksdH0sbi5YTUxTdWJ0aXRsZWluNFBhcnNlcj1fLG4uVGV4dGluNFBhcnNlcj1wO3ZhciBjPWZ1bmN0aW9uKGUpe3RoaXMuc3RyZWFtPWV8fG5ldyBkLHRoaXMuYm94ZXM9W10sdGhpcy5tZGF0cz1bXSx0aGlzLm1vb2ZzPVtdLHRoaXMuaXNQcm9ncmVzc2l2ZT0hMSx0aGlzLm1vb3ZTdGFydEZvdW5kPSExLHRoaXMub25Nb292U3RhcnQ9bnVsbCx0aGlzLm1vb3ZTdGFydFNlbnQ9ITEsdGhpcy5vblJlYWR5PW51bGwsdGhpcy5yZWFkeVNlbnQ9ITEsdGhpcy5vblNlZ21lbnQ9bnVsbCx0aGlzLm9uU2FtcGxlcz1udWxsLHRoaXMub25FcnJvcj1udWxsLHRoaXMuc2FtcGxlTGlzdEJ1aWx0PSExLHRoaXMuZnJhZ21lbnRlZFRyYWNrcz1bXSx0aGlzLmV4dHJhY3RlZFRyYWNrcz1bXSx0aGlzLmlzRnJhZ21lbnRhdGlvbkluaXRpYWxpemVkPSExLHRoaXMuc2FtcGxlUHJvY2Vzc2luZ1N0YXJ0ZWQ9ITEsdGhpcy5uZXh0TW9vZk51bWJlcj0wLHRoaXMuaXRlbUxpc3RCdWlsdD0hMSx0aGlzLm9uU2lkeD1udWxsLHRoaXMuc2lkeFNlbnQ9ITF9O2MucHJvdG90eXBlLnNldFNlZ21lbnRPcHRpb25zPWZ1bmN0aW9uKGUsdCxpKXt2YXIgZj10aGlzLmdldFRyYWNrQnlJZChlKTtpZihmKXt2YXIgdT17fTt0aGlzLmZyYWdtZW50ZWRUcmFja3MucHVzaCh1KSx1LmlkPWUsdS51c2VyPXQsdS50cmFrPWYsZi5uZXh0U2FtcGxlPTAsdS5zZWdtZW50U3RyZWFtPW51bGwsdS5uYl9zYW1wbGVzPTFlMyx1LnJhcEFsaWduZW1lbnQ9ITAsaSYmKGkubmJTYW1wbGVzJiYodS5uYl9zYW1wbGVzPWkubmJTYW1wbGVzKSxpLnJhcEFsaWduZW1lbnQmJih1LnJhcEFsaWduZW1lbnQ9aS5yYXBBbGlnbmVtZW50KSl9fSxjLnByb3RvdHlwZS51bnNldFNlZ21lbnRPcHRpb25zPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0tMSxpPTA7aTx0aGlzLmZyYWdtZW50ZWRUcmFja3MubGVuZ3RoO2krKyl7dmFyIGY9dGhpcy5mcmFnbWVudGVkVHJhY2tzW2ldO2YuaWQ9PWUmJih0PWkpfXQ+LTEmJnRoaXMuZnJhZ21lbnRlZFRyYWNrcy5zcGxpY2UodCwxKX0sYy5wcm90b3R5cGUuc2V0RXh0cmFjdGlvbk9wdGlvbnM9ZnVuY3Rpb24oZSx0LGkpe3ZhciBmPXRoaXMuZ2V0VHJhY2tCeUlkKGUpO2lmKGYpe3ZhciB1PXt9O3RoaXMuZXh0cmFjdGVkVHJhY2tzLnB1c2godSksdS5pZD1lLHUudXNlcj10LHUudHJhaz1mLGYubmV4dFNhbXBsZT0wLHUubmJfc2FtcGxlcz0xZTMsdS5zYW1wbGVzPVtdLGkmJmkubmJTYW1wbGVzJiYodS5uYl9zYW1wbGVzPWkubmJTYW1wbGVzKX19LGMucHJvdG90eXBlLnVuc2V0RXh0cmFjdGlvbk9wdGlvbnM9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PS0xLGk9MDtpPHRoaXMuZXh0cmFjdGVkVHJhY2tzLmxlbmd0aDtpKyspe3ZhciBmPXRoaXMuZXh0cmFjdGVkVHJhY2tzW2ldO2YuaWQ9PWUmJih0PWkpfXQ+LTEmJnRoaXMuZXh0cmFjdGVkVHJhY2tzLnNwbGljZSh0LDEpfSxjLnByb3RvdHlwZS5wYXJzZT1mdW5jdGlvbigpe3ZhciBlLHQsaT0hMTtpZighKHRoaXMucmVzdG9yZVBhcnNlUG9zaXRpb24mJiF0aGlzLnJlc3RvcmVQYXJzZVBvc2l0aW9uKCkpKWZvcig7OylpZih0aGlzLmhhc0luY29tcGxldGVNZGF0JiZ0aGlzLmhhc0luY29tcGxldGVNZGF0KCkpe2lmKHRoaXMucHJvY2Vzc0luY29tcGxldGVNZGF0KCkpY29udGludWU7cmV0dXJufWVsc2UgaWYodGhpcy5zYXZlUGFyc2VQb3NpdGlvbiYmdGhpcy5zYXZlUGFyc2VQb3NpdGlvbigpLGU9by5wYXJzZU9uZUJveCh0aGlzLnN0cmVhbSxpKSxlLmNvZGU9PT1vLkVSUl9OT1RfRU5PVUdIX0RBVEEpaWYodGhpcy5wcm9jZXNzSW5jb21wbGV0ZUJveCl7aWYodGhpcy5wcm9jZXNzSW5jb21wbGV0ZUJveChlKSljb250aW51ZTtyZXR1cm59ZWxzZSByZXR1cm47ZWxzZXt2YXIgZjtzd2l0Y2godD1lLmJveCxmPXQudHlwZSE9PSJ1dWlkIj90LnR5cGU6dC51dWlkLHRoaXMuYm94ZXMucHVzaCh0KSxmKXtjYXNlIm1kYXQiOnRoaXMubWRhdHMucHVzaCh0KTticmVhaztjYXNlIm1vb2YiOnRoaXMubW9vZnMucHVzaCh0KTticmVhaztjYXNlIm1vb3YiOnRoaXMubW9vdlN0YXJ0Rm91bmQ9ITAsdGhpcy5tZGF0cy5sZW5ndGg9PT0wJiYodGhpcy5pc1Byb2dyZXNzaXZlPSEwKTtkZWZhdWx0OnRoaXNbZl0hPT12b2lkIDAmJnIud2FybigiSVNPRmlsZSIsIkR1cGxpY2F0ZSBCb3ggb2YgdHlwZTogIitmKyIsIG92ZXJyaWRpbmcgcHJldmlvdXMgb2NjdXJyZW5jZSIpLHRoaXNbZl09dDticmVha310aGlzLnVwZGF0ZVVzZWRCeXRlcyYmdGhpcy51cGRhdGVVc2VkQnl0ZXModCxlKX19LGMucHJvdG90eXBlLmNoZWNrQnVmZmVyPWZ1bmN0aW9uKGUpe2lmKGU9PW51bGwpdGhyb3ciQnVmZmVyIG11c3QgYmUgZGVmaW5lZCBhbmQgbm9uIGVtcHR5IjtpZihlLmZpbGVTdGFydD09PXZvaWQgMCl0aHJvdyJCdWZmZXIgbXVzdCBoYXZlIGEgZmlsZVN0YXJ0IHByb3BlcnR5IjtyZXR1cm4gZS5ieXRlTGVuZ3RoPT09MD8oci53YXJuKCJJU09GaWxlIiwiSWdub3JpbmcgZW1wdHkgYnVmZmVyIChmaWxlU3RhcnQ6ICIrZS5maWxlU3RhcnQrIikiKSx0aGlzLnN0cmVhbS5sb2dCdWZmZXJMZXZlbCgpLCExKTooci5pbmZvKCJJU09GaWxlIiwiUHJvY2Vzc2luZyBidWZmZXIgKGZpbGVTdGFydDogIitlLmZpbGVTdGFydCsiKSIpLGUudXNlZEJ5dGVzPTAsdGhpcy5zdHJlYW0uaW5zZXJ0QnVmZmVyKGUpLHRoaXMuc3RyZWFtLmxvZ0J1ZmZlckxldmVsKCksdGhpcy5zdHJlYW0uaW5pdGlhbGl6ZWQoKT8hMDooci53YXJuKCJJU09GaWxlIiwiTm90IHJlYWR5IHRvIHN0YXJ0IHBhcnNpbmciKSwhMSkpfSxjLnByb3RvdHlwZS5hcHBlbmRCdWZmZXI9ZnVuY3Rpb24oZSx0KXt2YXIgaTtpZih0aGlzLmNoZWNrQnVmZmVyKGUpKXJldHVybiB0aGlzLnBhcnNlKCksdGhpcy5tb292U3RhcnRGb3VuZCYmIXRoaXMubW9vdlN0YXJ0U2VudCYmKHRoaXMubW9vdlN0YXJ0U2VudD0hMCx0aGlzLm9uTW9vdlN0YXJ0JiZ0aGlzLm9uTW9vdlN0YXJ0KCkpLHRoaXMubW9vdj8odGhpcy5zYW1wbGVMaXN0QnVpbHR8fCh0aGlzLmJ1aWxkU2FtcGxlTGlzdHMoKSx0aGlzLnNhbXBsZUxpc3RCdWlsdD0hMCksdGhpcy51cGRhdGVTYW1wbGVMaXN0cygpLHRoaXMub25SZWFkeSYmIXRoaXMucmVhZHlTZW50JiYodGhpcy5yZWFkeVNlbnQ9ITAsdGhpcy5vblJlYWR5KHRoaXMuZ2V0SW5mbygpKSksdGhpcy5wcm9jZXNzU2FtcGxlcyh0KSx0aGlzLm5leHRTZWVrUG9zaXRpb24/KGk9dGhpcy5uZXh0U2Vla1Bvc2l0aW9uLHRoaXMubmV4dFNlZWtQb3NpdGlvbj12b2lkIDApOmk9dGhpcy5uZXh0UGFyc2VQb3NpdGlvbix0aGlzLnN0cmVhbS5nZXRFbmRGaWxlUG9zaXRpb25BZnRlciYmKGk9dGhpcy5zdHJlYW0uZ2V0RW5kRmlsZVBvc2l0aW9uQWZ0ZXIoaSkpKTp0aGlzLm5leHRQYXJzZVBvc2l0aW9uP2k9dGhpcy5uZXh0UGFyc2VQb3NpdGlvbjppPTAsdGhpcy5zaWR4JiZ0aGlzLm9uU2lkeCYmIXRoaXMuc2lkeFNlbnQmJih0aGlzLm9uU2lkeCh0aGlzLnNpZHgpLHRoaXMuc2lkeFNlbnQ9ITApLHRoaXMubWV0YSYmKHRoaXMuZmxhdHRlbkl0ZW1JbmZvJiYhdGhpcy5pdGVtTGlzdEJ1aWx0JiYodGhpcy5mbGF0dGVuSXRlbUluZm8oKSx0aGlzLml0ZW1MaXN0QnVpbHQ9ITApLHRoaXMucHJvY2Vzc0l0ZW1zJiZ0aGlzLnByb2Nlc3NJdGVtcyh0aGlzLm9uSXRlbSkpLHRoaXMuc3RyZWFtLmNsZWFuQnVmZmVycyYmKHIuaW5mbygiSVNPRmlsZSIsIkRvbmUgcHJvY2Vzc2luZyBidWZmZXIgKGZpbGVTdGFydDogIitlLmZpbGVTdGFydCsiKSAtIG5leHQgYnVmZmVyIHRvIGZldGNoIHNob3VsZCBoYXZlIGEgZmlsZVN0YXJ0IHBvc2l0aW9uIG9mICIraSksdGhpcy5zdHJlYW0ubG9nQnVmZmVyTGV2ZWwoKSx0aGlzLnN0cmVhbS5jbGVhbkJ1ZmZlcnMoKSx0aGlzLnN0cmVhbS5sb2dCdWZmZXJMZXZlbCghMCksci5pbmZvKCJJU09GaWxlIiwiU2FtcGxlIGRhdGEgc2l6ZSBpbiBtZW1vcnk6ICIrdGhpcy5nZXRBbGxvY2F0ZWRTYW1wbGVEYXRhU2l6ZSgpKSksaX0sYy5wcm90b3R5cGUuZ2V0SW5mbz1mdW5jdGlvbigpe3ZhciBlLHQsaT17fSxmLHUsdix5LG09bmV3IERhdGUoIjE5MDQtMDEtMDFUMDA6MDA6MDBaIikuZ2V0VGltZSgpO2lmKHRoaXMubW9vdilmb3IoaS5oYXNNb292PSEwLGkuZHVyYXRpb249dGhpcy5tb292Lm12aGQuZHVyYXRpb24saS50aW1lc2NhbGU9dGhpcy5tb292Lm12aGQudGltZXNjYWxlLGkuaXNGcmFnbWVudGVkPXRoaXMubW9vdi5tdmV4IT1udWxsLGkuaXNGcmFnbWVudGVkJiZ0aGlzLm1vb3YubXZleC5tZWhkJiYoaS5mcmFnbWVudF9kdXJhdGlvbj10aGlzLm1vb3YubXZleC5tZWhkLmZyYWdtZW50X2R1cmF0aW9uKSxpLmlzUHJvZ3Jlc3NpdmU9dGhpcy5pc1Byb2dyZXNzaXZlLGkuaGFzSU9EPXRoaXMubW9vdi5pb2RzIT1udWxsLGkuYnJhbmRzPVtdLGkuYnJhbmRzLnB1c2godGhpcy5mdHlwLm1ham9yX2JyYW5kKSxpLmJyYW5kcz1pLmJyYW5kcy5jb25jYXQodGhpcy5mdHlwLmNvbXBhdGlibGVfYnJhbmRzKSxpLmNyZWF0ZWQ9bmV3IERhdGUobSt0aGlzLm1vb3YubXZoZC5jcmVhdGlvbl90aW1lKjFlMyksaS5tb2RpZmllZD1uZXcgRGF0ZShtK3RoaXMubW9vdi5tdmhkLm1vZGlmaWNhdGlvbl90aW1lKjFlMyksaS50cmFja3M9W10saS5hdWRpb1RyYWNrcz1bXSxpLnZpZGVvVHJhY2tzPVtdLGkuc3VidGl0bGVUcmFja3M9W10saS5tZXRhZGF0YVRyYWNrcz1bXSxpLmhpbnRUcmFja3M9W10saS5vdGhlclRyYWNrcz1bXSxlPTA7ZTx0aGlzLm1vb3YudHJha3MubGVuZ3RoO2UrKyl7aWYoZj10aGlzLm1vb3YudHJha3NbZV0seT1mLm1kaWEubWluZi5zdGJsLnN0c2QuZW50cmllc1swXSx1PXt9LGkudHJhY2tzLnB1c2godSksdS5pZD1mLnRraGQudHJhY2tfaWQsdS5uYW1lPWYubWRpYS5oZGxyLm5hbWUsdS5yZWZlcmVuY2VzPVtdLGYudHJlZilmb3IodD0wO3Q8Zi50cmVmLmJveGVzLmxlbmd0aDt0Kyspdj17fSx1LnJlZmVyZW5jZXMucHVzaCh2KSx2LnR5cGU9Zi50cmVmLmJveGVzW3RdLnR5cGUsdi50cmFja19pZHM9Zi50cmVmLmJveGVzW3RdLnRyYWNrX2lkcztmLmVkdHMmJih1LmVkaXRzPWYuZWR0cy5lbHN0LmVudHJpZXMpLHUuY3JlYXRlZD1uZXcgRGF0ZShtK2YudGtoZC5jcmVhdGlvbl90aW1lKjFlMyksdS5tb2RpZmllZD1uZXcgRGF0ZShtK2YudGtoZC5tb2RpZmljYXRpb25fdGltZSoxZTMpLHUubW92aWVfZHVyYXRpb249Zi50a2hkLmR1cmF0aW9uLHUubW92aWVfdGltZXNjYWxlPWkudGltZXNjYWxlLHUubGF5ZXI9Zi50a2hkLmxheWVyLHUuYWx0ZXJuYXRlX2dyb3VwPWYudGtoZC5hbHRlcm5hdGVfZ3JvdXAsdS52b2x1bWU9Zi50a2hkLnZvbHVtZSx1Lm1hdHJpeD1mLnRraGQubWF0cml4LHUudHJhY2tfd2lkdGg9Zi50a2hkLndpZHRoLzY1NTM2LHUudHJhY2tfaGVpZ2h0PWYudGtoZC5oZWlnaHQvNjU1MzYsdS50aW1lc2NhbGU9Zi5tZGlhLm1kaGQudGltZXNjYWxlLHUuY3RzX3NoaWZ0PWYubWRpYS5taW5mLnN0YmwuY3NsZyx1LmR1cmF0aW9uPWYubWRpYS5tZGhkLmR1cmF0aW9uLHUuc2FtcGxlc19kdXJhdGlvbj1mLnNhbXBsZXNfZHVyYXRpb24sdS5jb2RlYz15LmdldENvZGVjKCksdS5raW5kPWYudWR0YSYmZi51ZHRhLmtpbmRzLmxlbmd0aD9mLnVkdGEua2luZHNbMF06e3NjaGVtZVVSSToiIix2YWx1ZToiIn0sdS5sYW5ndWFnZT1mLm1kaWEuZWxuZz9mLm1kaWEuZWxuZy5leHRlbmRlZF9sYW5ndWFnZTpmLm1kaWEubWRoZC5sYW5ndWFnZVN0cmluZyx1Lm5iX3NhbXBsZXM9Zi5zYW1wbGVzLmxlbmd0aCx1LnNpemU9Zi5zYW1wbGVzX3NpemUsdS5iaXRyYXRlPXUuc2l6ZSo4KnUudGltZXNjYWxlL3Uuc2FtcGxlc19kdXJhdGlvbix5LmlzQXVkaW8oKT8odS50eXBlPSJhdWRpbyIsaS5hdWRpb1RyYWNrcy5wdXNoKHUpLHUuYXVkaW89e30sdS5hdWRpby5zYW1wbGVfcmF0ZT15LmdldFNhbXBsZVJhdGUoKSx1LmF1ZGlvLmNoYW5uZWxfY291bnQ9eS5nZXRDaGFubmVsQ291bnQoKSx1LmF1ZGlvLnNhbXBsZV9zaXplPXkuZ2V0U2FtcGxlU2l6ZSgpKTp5LmlzVmlkZW8oKT8odS50eXBlPSJ2aWRlbyIsaS52aWRlb1RyYWNrcy5wdXNoKHUpLHUudmlkZW89e30sdS52aWRlby53aWR0aD15LmdldFdpZHRoKCksdS52aWRlby5oZWlnaHQ9eS5nZXRIZWlnaHQoKSk6eS5pc1N1YnRpdGxlKCk/KHUudHlwZT0ic3VidGl0bGVzIixpLnN1YnRpdGxlVHJhY2tzLnB1c2godSkpOnkuaXNIaW50KCk/KHUudHlwZT0ibWV0YWRhdGEiLGkuaGludFRyYWNrcy5wdXNoKHUpKTp5LmlzTWV0YWRhdGEoKT8odS50eXBlPSJtZXRhZGF0YSIsaS5tZXRhZGF0YVRyYWNrcy5wdXNoKHUpKToodS50eXBlPSJtZXRhZGF0YSIsaS5vdGhlclRyYWNrcy5wdXNoKHUpKX1lbHNlIGkuaGFzTW9vdj0hMTtpZihpLm1pbWU9IiIsaS5oYXNNb292JiZpLnRyYWNrcyl7Zm9yKGkudmlkZW9UcmFja3MmJmkudmlkZW9UcmFja3MubGVuZ3RoPjA/aS5taW1lKz0ndmlkZW8vbXA0OyBjb2RlY3M9Iic6aS5hdWRpb1RyYWNrcyYmaS5hdWRpb1RyYWNrcy5sZW5ndGg+MD9pLm1pbWUrPSdhdWRpby9tcDQ7IGNvZGVjcz0iJzppLm1pbWUrPSdhcHBsaWNhdGlvbi9tcDQ7IGNvZGVjcz0iJyxlPTA7ZTxpLnRyYWNrcy5sZW5ndGg7ZSsrKWUhPT0wJiYoaS5taW1lKz0iLCIpLGkubWltZSs9aS50cmFja3NbZV0uY29kZWM7aS5taW1lKz0nIjsgcHJvZmlsZXM9IicsaS5taW1lKz10aGlzLmZ0eXAuY29tcGF0aWJsZV9icmFuZHMuam9pbigpLGkubWltZSs9JyInfXJldHVybiBpfSxjLnByb3RvdHlwZS5wcm9jZXNzU2FtcGxlcz1mdW5jdGlvbihlKXt2YXIgdCxpO2lmKHRoaXMuc2FtcGxlUHJvY2Vzc2luZ1N0YXJ0ZWQpe2lmKHRoaXMuaXNGcmFnbWVudGF0aW9uSW5pdGlhbGl6ZWQmJnRoaXMub25TZWdtZW50IT09bnVsbClmb3IodD0wO3Q8dGhpcy5mcmFnbWVudGVkVHJhY2tzLmxlbmd0aDt0Kyspe3ZhciBmPXRoaXMuZnJhZ21lbnRlZFRyYWNrc1t0XTtmb3IoaT1mLnRyYWs7aS5uZXh0U2FtcGxlPGkuc2FtcGxlcy5sZW5ndGgmJnRoaXMuc2FtcGxlUHJvY2Vzc2luZ1N0YXJ0ZWQ7KXtyLmRlYnVnKCJJU09GaWxlIiwiQ3JlYXRpbmcgbWVkaWEgZnJhZ21lbnQgb24gdHJhY2sgIyIrZi5pZCsiIGZvciBzYW1wbGUgIitpLm5leHRTYW1wbGUpO3ZhciB1PXRoaXMuY3JlYXRlRnJhZ21lbnQoZi5pZCxpLm5leHRTYW1wbGUsZi5zZWdtZW50U3RyZWFtKTtpZih1KWYuc2VnbWVudFN0cmVhbT11LGkubmV4dFNhbXBsZSsrO2Vsc2UgYnJlYWs7aWYoKGkubmV4dFNhbXBsZSVmLm5iX3NhbXBsZXM9PT0wfHxlfHxpLm5leHRTYW1wbGU+PWkuc2FtcGxlcy5sZW5ndGgpJiYoci5pbmZvKCJJU09GaWxlIiwiU2VuZGluZyBmcmFnbWVudGVkIGRhdGEgb24gdHJhY2sgIyIrZi5pZCsiIGZvciBzYW1wbGVzIFsiK01hdGgubWF4KDAsaS5uZXh0U2FtcGxlLWYubmJfc2FtcGxlcykrIiwiKyhpLm5leHRTYW1wbGUtMSkrIl0iKSxyLmluZm8oIklTT0ZpbGUiLCJTYW1wbGUgZGF0YSBzaXplIGluIG1lbW9yeTogIit0aGlzLmdldEFsbG9jYXRlZFNhbXBsZURhdGFTaXplKCkpLHRoaXMub25TZWdtZW50JiZ0aGlzLm9uU2VnbWVudChmLmlkLGYudXNlcixmLnNlZ21lbnRTdHJlYW0uYnVmZmVyLGkubmV4dFNhbXBsZSxlfHxpLm5leHRTYW1wbGU+PWkuc2FtcGxlcy5sZW5ndGgpLGYuc2VnbWVudFN0cmVhbT1udWxsLGYhPT10aGlzLmZyYWdtZW50ZWRUcmFja3NbdF0pKWJyZWFrfX1pZih0aGlzLm9uU2FtcGxlcyE9PW51bGwpZm9yKHQ9MDt0PHRoaXMuZXh0cmFjdGVkVHJhY2tzLmxlbmd0aDt0Kyspe3ZhciB2PXRoaXMuZXh0cmFjdGVkVHJhY2tzW3RdO2ZvcihpPXYudHJhaztpLm5leHRTYW1wbGU8aS5zYW1wbGVzLmxlbmd0aCYmdGhpcy5zYW1wbGVQcm9jZXNzaW5nU3RhcnRlZDspe3IuZGVidWcoIklTT0ZpbGUiLCJFeHBvcnRpbmcgb24gdHJhY2sgIyIrdi5pZCsiIHNhbXBsZSAjIitpLm5leHRTYW1wbGUpO3ZhciB5PXRoaXMuZ2V0U2FtcGxlKGksaS5uZXh0U2FtcGxlKTtpZih5KWkubmV4dFNhbXBsZSsrLHYuc2FtcGxlcy5wdXNoKHkpO2Vsc2UgYnJlYWs7aWYoKGkubmV4dFNhbXBsZSV2Lm5iX3NhbXBsZXM9PT0wfHxpLm5leHRTYW1wbGU+PWkuc2FtcGxlcy5sZW5ndGgpJiYoci5kZWJ1ZygiSVNPRmlsZSIsIlNlbmRpbmcgc2FtcGxlcyBvbiB0cmFjayAjIit2LmlkKyIgZm9yIHNhbXBsZSAiK2kubmV4dFNhbXBsZSksdGhpcy5vblNhbXBsZXMmJnRoaXMub25TYW1wbGVzKHYuaWQsdi51c2VyLHYuc2FtcGxlcyksdi5zYW1wbGVzPVtdLHYhPT10aGlzLmV4dHJhY3RlZFRyYWNrc1t0XSkpYnJlYWt9fX19LGMucHJvdG90eXBlLmdldEJveD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLmdldEJveGVzKGUsITApO3JldHVybiB0Lmxlbmd0aD90WzBdOm51bGx9LGMucHJvdG90eXBlLmdldEJveGVzPWZ1bmN0aW9uKGUsdCl7dmFyIGk9W107cmV0dXJuIGMuX3N3ZWVwLmNhbGwodGhpcyxlLGksdCksaX0sYy5fc3dlZXA9ZnVuY3Rpb24oZSx0LGkpe3RoaXMudHlwZSYmdGhpcy50eXBlPT1lJiZ0LnB1c2godGhpcyk7Zm9yKHZhciBmIGluIHRoaXMuYm94ZXMpe2lmKHQubGVuZ3RoJiZpKXJldHVybjtjLl9zd2VlcC5jYWxsKHRoaXMuYm94ZXNbZl0sZSx0LGkpfX0sYy5wcm90b3R5cGUuZ2V0VHJhY2tTYW1wbGVzSW5mbz1mdW5jdGlvbihlKXt2YXIgdD10aGlzLmdldFRyYWNrQnlJZChlKTtpZih0KXJldHVybiB0LnNhbXBsZXN9LGMucHJvdG90eXBlLmdldFRyYWNrU2FtcGxlPWZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpcy5nZXRUcmFja0J5SWQoZSksZj10aGlzLmdldFNhbXBsZShpLHQpO3JldHVybiBmfSxjLnByb3RvdHlwZS5yZWxlYXNlVXNlZFNhbXBsZXM9ZnVuY3Rpb24oZSx0KXt2YXIgaT0wLGY9dGhpcy5nZXRUcmFja0J5SWQoZSk7Zi5sYXN0VmFsaWRTYW1wbGV8fChmLmxhc3RWYWxpZFNhbXBsZT0wKTtmb3IodmFyIHU9Zi5sYXN0VmFsaWRTYW1wbGU7dTx0O3UrKylpKz10aGlzLnJlbGVhc2VTYW1wbGUoZix1KTtyLmluZm8oIklTT0ZpbGUiLCJUcmFjayAjIitlKyIgcmVsZWFzZWQgc2FtcGxlcyB1cCB0byAiK3QrIiAocmVsZWFzZWQgc2l6ZTogIitpKyIsIHJlbWFpbmluZzogIit0aGlzLnNhbXBsZXNEYXRhU2l6ZSsiKSIpLGYubGFzdFZhbGlkU2FtcGxlPXR9LGMucHJvdG90eXBlLnN0YXJ0PWZ1bmN0aW9uKCl7dGhpcy5zYW1wbGVQcm9jZXNzaW5nU3RhcnRlZD0hMCx0aGlzLnByb2Nlc3NTYW1wbGVzKCExKX0sYy5wcm90b3R5cGUuc3RvcD1mdW5jdGlvbigpe3RoaXMuc2FtcGxlUHJvY2Vzc2luZ1N0YXJ0ZWQ9ITF9LGMucHJvdG90eXBlLmZsdXNoPWZ1bmN0aW9uKCl7ci5pbmZvKCJJU09GaWxlIiwiRmx1c2hpbmcgcmVtYWluaW5nIHNhbXBsZXMiKSx0aGlzLnVwZGF0ZVNhbXBsZUxpc3RzKCksdGhpcy5wcm9jZXNzU2FtcGxlcyghMCksdGhpcy5zdHJlYW0uY2xlYW5CdWZmZXJzKCksdGhpcy5zdHJlYW0ubG9nQnVmZmVyTGV2ZWwoITApfSxjLnByb3RvdHlwZS5zZWVrVHJhY2s9ZnVuY3Rpb24oZSx0LGkpe3ZhciBmLHUsdj0xLzAseT0wLG09MCxiO2lmKGkuc2FtcGxlcy5sZW5ndGg9PT0wKXJldHVybiByLmluZm8oIklTT0ZpbGUiLCJObyBzYW1wbGUgaW4gdHJhY2ssIGNhbm5vdCBzZWVrISBVc2luZyB0aW1lICIrci5nZXREdXJhdGlvblN0cmluZygwLDEpKyIgYW5kIG9mZnNldDogMCIpLHtvZmZzZXQ6MCx0aW1lOjB9O2ZvcihmPTA7ZjxpLnNhbXBsZXMubGVuZ3RoO2YrKyl7aWYodT1pLnNhbXBsZXNbZl0sZj09PTApbT0wLGI9dS50aW1lc2NhbGU7ZWxzZSBpZih1LmN0cz5lKnUudGltZXNjYWxlKXttPWYtMTticmVha310JiZ1LmlzX3N5bmMmJih5PWYpfWZvcih0JiYobT15KSxlPWkuc2FtcGxlc1ttXS5jdHMsaS5uZXh0U2FtcGxlPW07aS5zYW1wbGVzW21dLmFscmVhZHlSZWFkPT09aS5zYW1wbGVzW21dLnNpemUmJmkuc2FtcGxlc1ttKzFdOyltKys7cmV0dXJuIHY9aS5zYW1wbGVzW21dLm9mZnNldCtpLnNhbXBsZXNbbV0uYWxyZWFkeVJlYWQsci5pbmZvKCJJU09GaWxlIiwiU2Vla2luZyB0byAiKyh0PyJSQVAiOiIiKSsiIHNhbXBsZSAjIitpLm5leHRTYW1wbGUrIiBvbiB0cmFjayAiK2kudGtoZC50cmFja19pZCsiLCB0aW1lICIrci5nZXREdXJhdGlvblN0cmluZyhlLGIpKyIgYW5kIG9mZnNldDogIit2KSx7b2Zmc2V0OnYsdGltZTplL2J9fSxjLnByb3RvdHlwZS5zZWVrPWZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpcy5tb292LGYsdSx2LHk9e29mZnNldDoxLzAsdGltZToxLzB9O2lmKHRoaXMubW9vdil7Zm9yKHY9MDt2PGkudHJha3MubGVuZ3RoO3YrKylmPWkudHJha3Nbdl0sdT10aGlzLnNlZWtUcmFjayhlLHQsZiksdS5vZmZzZXQ8eS5vZmZzZXQmJih5Lm9mZnNldD11Lm9mZnNldCksdS50aW1lPHkudGltZSYmKHkudGltZT11LnRpbWUpO3JldHVybiByLmluZm8oIklTT0ZpbGUiLCJTZWVraW5nIGF0IHRpbWUgIityLmdldER1cmF0aW9uU3RyaW5nKHkudGltZSwxKSsiIG5lZWRzIGEgYnVmZmVyIHdpdGggYSBmaWxlU3RhcnQgcG9zaXRpb24gb2YgIit5Lm9mZnNldCkseS5vZmZzZXQ9PT0xLzA/eT17b2Zmc2V0OnRoaXMubmV4dFBhcnNlUG9zaXRpb24sdGltZTowfTp5Lm9mZnNldD10aGlzLnN0cmVhbS5nZXRFbmRGaWxlUG9zaXRpb25BZnRlcih5Lm9mZnNldCksci5pbmZvKCJJU09GaWxlIiwiQWRqdXN0ZWQgc2VlayBwb3NpdGlvbiAoYWZ0ZXIgY2hlY2tpbmcgZGF0YSBhbHJlYWR5IGluIGJ1ZmZlcik6ICIreS5vZmZzZXQpLHl9ZWxzZSB0aHJvdyJDYW5ub3Qgc2VlazogbW9vdiBub3QgcmVjZWl2ZWQhIn0sYy5wcm90b3R5cGUuZXF1YWw9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTA7dDx0aGlzLmJveGVzLmxlbmd0aCYmdDxlLmJveGVzLmxlbmd0aDspe3ZhciBpPXRoaXMuYm94ZXNbdF0sZj1lLmJveGVzW3RdO2lmKCFvLmJveEVxdWFsKGksZikpcmV0dXJuITE7dCsrfXJldHVybiEwfSxuLklTT0ZpbGU9YyxjLnByb3RvdHlwZS5sYXN0Qm94U3RhcnRQb3NpdGlvbj0wLGMucHJvdG90eXBlLnBhcnNpbmdNZGF0PW51bGwsYy5wcm90b3R5cGUubmV4dFBhcnNlUG9zaXRpb249MCxjLnByb3RvdHlwZS5kaXNjYXJkTWRhdERhdGE9ITEsYy5wcm90b3R5cGUucHJvY2Vzc0luY29tcGxldGVCb3g9ZnVuY3Rpb24oZSl7dmFyIHQsaSxmO3JldHVybiBlLnR5cGU9PT0ibWRhdCI/KHQ9bmV3IG9bZS50eXBlKyJCb3giXShlLnNpemUpLHRoaXMucGFyc2luZ01kYXQ9dCx0aGlzLmJveGVzLnB1c2godCksdGhpcy5tZGF0cy5wdXNoKHQpLHQuc3RhcnQ9ZS5zdGFydCx0Lmhkcl9zaXplPWUuaGRyX3NpemUsdGhpcy5zdHJlYW0uYWRkVXNlZEJ5dGVzKHQuaGRyX3NpemUpLHRoaXMubGFzdEJveFN0YXJ0UG9zaXRpb249dC5zdGFydCt0LnNpemUsZj10aGlzLnN0cmVhbS5zZWVrKHQuc3RhcnQrdC5zaXplLCExLHRoaXMuZGlzY2FyZE1kYXREYXRhKSxmPyh0aGlzLnBhcnNpbmdNZGF0PW51bGwsITApOih0aGlzLm1vb3ZTdGFydEZvdW5kP3RoaXMubmV4dFBhcnNlUG9zaXRpb249dGhpcy5zdHJlYW0uZmluZEVuZENvbnRpZ3VvdXNCdWYoKTp0aGlzLm5leHRQYXJzZVBvc2l0aW9uPXQuc3RhcnQrdC5zaXplLCExKSk6KGUudHlwZT09PSJtb292IiYmKHRoaXMubW9vdlN0YXJ0Rm91bmQ9ITAsdGhpcy5tZGF0cy5sZW5ndGg9PT0wJiYodGhpcy5pc1Byb2dyZXNzaXZlPSEwKSksaT10aGlzLnN0cmVhbS5tZXJnZU5leHRCdWZmZXI/dGhpcy5zdHJlYW0ubWVyZ2VOZXh0QnVmZmVyKCk6ITEsaT8odGhpcy5uZXh0UGFyc2VQb3NpdGlvbj10aGlzLnN0cmVhbS5nZXRFbmRQb3NpdGlvbigpLCEwKTooZS50eXBlP3RoaXMubW9vdlN0YXJ0Rm91bmQ/dGhpcy5uZXh0UGFyc2VQb3NpdGlvbj10aGlzLnN0cmVhbS5nZXRFbmRQb3NpdGlvbigpOnRoaXMubmV4dFBhcnNlUG9zaXRpb249dGhpcy5zdHJlYW0uZ2V0UG9zaXRpb24oKStlLnNpemU6dGhpcy5uZXh0UGFyc2VQb3NpdGlvbj10aGlzLnN0cmVhbS5nZXRFbmRQb3NpdGlvbigpLCExKSl9LGMucHJvdG90eXBlLmhhc0luY29tcGxldGVNZGF0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucGFyc2luZ01kYXQhPT1udWxsfSxjLnByb3RvdHlwZS5wcm9jZXNzSW5jb21wbGV0ZU1kYXQ9ZnVuY3Rpb24oKXt2YXIgZSx0O3JldHVybiBlPXRoaXMucGFyc2luZ01kYXQsdD10aGlzLnN0cmVhbS5zZWVrKGUuc3RhcnQrZS5zaXplLCExLHRoaXMuZGlzY2FyZE1kYXREYXRhKSx0PyhyLmRlYnVnKCJJU09GaWxlIiwiRm91bmQgJ21kYXQnIGVuZCBpbiBidWZmZXJlZCBkYXRhIiksdGhpcy5wYXJzaW5nTWRhdD1udWxsLCEwKToodGhpcy5uZXh0UGFyc2VQb3NpdGlvbj10aGlzLnN0cmVhbS5maW5kRW5kQ29udGlndW91c0J1ZigpLCExKX0sYy5wcm90b3R5cGUucmVzdG9yZVBhcnNlUG9zaXRpb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdHJlYW0uc2Vlayh0aGlzLmxhc3RCb3hTdGFydFBvc2l0aW9uLCEwLHRoaXMuZGlzY2FyZE1kYXREYXRhKX0sYy5wcm90b3R5cGUuc2F2ZVBhcnNlUG9zaXRpb249ZnVuY3Rpb24oKXt0aGlzLmxhc3RCb3hTdGFydFBvc2l0aW9uPXRoaXMuc3RyZWFtLmdldFBvc2l0aW9uKCl9LGMucHJvdG90eXBlLnVwZGF0ZVVzZWRCeXRlcz1mdW5jdGlvbihlLHQpe3RoaXMuc3RyZWFtLmFkZFVzZWRCeXRlcyYmKGUudHlwZT09PSJtZGF0Ij8odGhpcy5zdHJlYW0uYWRkVXNlZEJ5dGVzKGUuaGRyX3NpemUpLHRoaXMuZGlzY2FyZE1kYXREYXRhJiZ0aGlzLnN0cmVhbS5hZGRVc2VkQnl0ZXMoZS5zaXplLWUuaGRyX3NpemUpKTp0aGlzLnN0cmVhbS5hZGRVc2VkQnl0ZXMoZS5zaXplKSl9LGMucHJvdG90eXBlLmFkZD1vLkJveC5wcm90b3R5cGUuYWRkLGMucHJvdG90eXBlLmFkZEJveD1vLkJveC5wcm90b3R5cGUuYWRkQm94LGMucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZXx8e307dGhpcy5hZGQoImZ0eXAiKS5zZXQoIm1ham9yX2JyYW5kIix0LmJyYW5kcyYmdC5icmFuZHNbMF18fCJpc280Iikuc2V0KCJtaW5vcl92ZXJzaW9uIiwwKS5zZXQoImNvbXBhdGlibGVfYnJhbmRzIix0LmJyYW5kc3x8WyJpc280Il0pO3ZhciBpPXRoaXMuYWRkKCJtb292Iik7cmV0dXJuIGkuYWRkKCJtdmhkIikuc2V0KCJ0aW1lc2NhbGUiLHQudGltZXNjYWxlfHw2MDApLnNldCgicmF0ZSIsdC5yYXRlfHw2NTUzNikuc2V0KCJjcmVhdGlvbl90aW1lIiwwKS5zZXQoIm1vZGlmaWNhdGlvbl90aW1lIiwwKS5zZXQoImR1cmF0aW9uIix0LmR1cmF0aW9ufHwwKS5zZXQoInZvbHVtZSIsdC53aWR0aD8wOjI1Nikuc2V0KCJtYXRyaXgiLFs2NTUzNiwwLDAsMCw2NTUzNiwwLDAsMCwxMDczNzQxODI0XSkuc2V0KCJuZXh0X3RyYWNrX2lkIiwxKSxpLmFkZCgibXZleCIpLHRoaXN9LGMucHJvdG90eXBlLmFkZFRyYWNrPWZ1bmN0aW9uKGUpe3RoaXMubW9vdnx8dGhpcy5pbml0KGUpO3ZhciB0PWV8fHt9O3Qud2lkdGg9dC53aWR0aHx8MzIwLHQuaGVpZ2h0PXQuaGVpZ2h0fHwzMjAsdC5pZD10LmlkfHx0aGlzLm1vb3YubXZoZC5uZXh0X3RyYWNrX2lkLHQudHlwZT10LnR5cGV8fCJhdmMxIjt2YXIgaT10aGlzLm1vb3YuYWRkKCJ0cmFrIik7dGhpcy5tb292Lm12aGQubmV4dF90cmFja19pZD10LmlkKzEsaS5hZGQoInRraGQiKS5zZXQoImZsYWdzIixvLlRLSERfRkxBR19FTkFCTEVEfG8uVEtIRF9GTEFHX0lOX01PVklFfG8uVEtIRF9GTEFHX0lOX1BSRVZJRVcpLnNldCgiY3JlYXRpb25fdGltZSIsMCkuc2V0KCJtb2RpZmljYXRpb25fdGltZSIsMCkuc2V0KCJ0cmFja19pZCIsdC5pZCkuc2V0KCJkdXJhdGlvbiIsdC5kdXJhdGlvbnx8MCkuc2V0KCJsYXllciIsdC5sYXllcnx8MCkuc2V0KCJhbHRlcm5hdGVfZ3JvdXAiLDApLnNldCgidm9sdW1lIiwxKS5zZXQoIm1hdHJpeCIsWzAsMCwwLDAsMCwwLDAsMCwwXSkuc2V0KCJ3aWR0aCIsdC53aWR0aDw8MTYpLnNldCgiaGVpZ2h0Iix0LmhlaWdodDw8MTYpO3ZhciBmPWkuYWRkKCJtZGlhIik7Zi5hZGQoIm1kaGQiKS5zZXQoImNyZWF0aW9uX3RpbWUiLDApLnNldCgibW9kaWZpY2F0aW9uX3RpbWUiLDApLnNldCgidGltZXNjYWxlIix0LnRpbWVzY2FsZXx8MSkuc2V0KCJkdXJhdGlvbiIsdC5tZWRpYV9kdXJhdGlvbnx8MCkuc2V0KCJsYW5ndWFnZSIsdC5sYW5ndWFnZXx8InVuZCIpLGYuYWRkKCJoZGxyIikuc2V0KCJoYW5kbGVyIix0LmhkbHJ8fCJ2aWRlIikuc2V0KCJuYW1lIix0Lm5hbWV8fCJUcmFjayBjcmVhdGVkIHdpdGggTVA0Qm94LmpzIiksZi5hZGQoImVsbmciKS5zZXQoImV4dGVuZGVkX2xhbmd1YWdlIix0Lmxhbmd1YWdlfHwiZnItRlIiKTt2YXIgdT1mLmFkZCgibWluZiIpO2lmKG9bdC50eXBlKyJTYW1wbGVFbnRyeSJdIT09dm9pZCAwKXt2YXIgdj1uZXcgb1t0LnR5cGUrIlNhbXBsZUVudHJ5Il07di5kYXRhX3JlZmVyZW5jZV9pbmRleD0xO3ZhciB5PSIiO2Zvcih2YXIgbSBpbiBvLnNhbXBsZUVudHJ5Q29kZXMpZm9yKHZhciBiPW8uc2FtcGxlRW50cnlDb2Rlc1ttXSx4PTA7eDxiLmxlbmd0aDt4KyspaWYoYi5pbmRleE9mKHQudHlwZSk+LTEpe3k9bTticmVha31zd2l0Y2goeSl7Y2FzZSJWaXN1YWwiOmlmKHUuYWRkKCJ2bWhkIikuc2V0KCJncmFwaGljc21vZGUiLDApLnNldCgib3Bjb2xvciIsWzAsMCwwXSksdi5zZXQoIndpZHRoIix0LndpZHRoKS5zZXQoImhlaWdodCIsdC5oZWlnaHQpLnNldCgiaG9yaXpyZXNvbHV0aW9uIiw3Mjw8MTYpLnNldCgidmVydHJlc29sdXRpb24iLDcyPDwxNikuc2V0KCJmcmFtZV9jb3VudCIsMSkuc2V0KCJjb21wcmVzc29ybmFtZSIsdC50eXBlKyIgQ29tcHJlc3NvciIpLnNldCgiZGVwdGgiLDI0KSx0LmF2Y0RlY29kZXJDb25maWdSZWNvcmQpe3ZhciBTPW5ldyBvLmF2Y0NCb3gsVT1uZXcgYSh0LmF2Y0RlY29kZXJDb25maWdSZWNvcmQpO1MucGFyc2UoVSksdi5hZGRCb3goUyl9YnJlYWs7Y2FzZSJBdWRpbyI6dS5hZGQoInNtaGQiKS5zZXQoImJhbGFuY2UiLHQuYmFsYW5jZXx8MCksdi5zZXQoImNoYW5uZWxfY291bnQiLHQuY2hhbm5lbF9jb3VudHx8Mikuc2V0KCJzYW1wbGVzaXplIix0LnNhbXBsZXNpemV8fDE2KS5zZXQoInNhbXBsZXJhdGUiLHQuc2FtcGxlcmF0ZXx8NjU1MzYpO2JyZWFrO2Nhc2UiSGludCI6dS5hZGQoImhtaGQiKTticmVhaztjYXNlIlN1YnRpdGxlIjpzd2l0Y2godS5hZGQoInN0aGQiKSx0LnR5cGUpe2Nhc2Uic3RwcCI6di5zZXQoIm5hbWVzcGFjZSIsdC5uYW1lc3BhY2V8fCJub25hbWVzcGFjZSIpLnNldCgic2NoZW1hX2xvY2F0aW9uIix0LnNjaGVtYV9sb2NhdGlvbnx8IiIpLnNldCgiYXV4aWxpYXJ5X21pbWVfdHlwZXMiLHQuYXV4aWxpYXJ5X21pbWVfdHlwZXN8fCIiKTticmVha31icmVhaztjYXNlIk1ldGFkYXRhIjp1LmFkZCgibm1oZCIpO2JyZWFrO2Nhc2UiU3lzdGVtIjp1LmFkZCgibm1oZCIpO2JyZWFrO2RlZmF1bHQ6dS5hZGQoIm5taGQiKTticmVha310LmRlc2NyaXB0aW9uJiZ2LmFkZEJveCh0LmRlc2NyaXB0aW9uKSx0LmRlc2NyaXB0aW9uX2JveGVzJiZ0LmRlc2NyaXB0aW9uX2JveGVzLmZvckVhY2goZnVuY3Rpb24odyl7di5hZGRCb3godyl9KSx1LmFkZCgiZGluZiIpLmFkZCgiZHJlZiIpLmFkZEVudHJ5KG5ldyBvWyJ1cmwgQm94Il0oKS5zZXQoImZsYWdzIiwxKSk7dmFyIEU9dS5hZGQoInN0YmwiKTtyZXR1cm4gRS5hZGQoInN0c2QiKS5hZGRFbnRyeSh2KSxFLmFkZCgic3R0cyIpLnNldCgic2FtcGxlX2NvdW50cyIsW10pLnNldCgic2FtcGxlX2RlbHRhcyIsW10pLEUuYWRkKCJzdHNjIikuc2V0KCJmaXJzdF9jaHVuayIsW10pLnNldCgic2FtcGxlc19wZXJfY2h1bmsiLFtdKS5zZXQoInNhbXBsZV9kZXNjcmlwdGlvbl9pbmRleCIsW10pLEUuYWRkKCJzdGNvIikuc2V0KCJjaHVua19vZmZzZXRzIixbXSksRS5hZGQoInN0c3oiKS5zZXQoInNhbXBsZV9zaXplcyIsW10pLHRoaXMubW9vdi5tdmV4LmFkZCgidHJleCIpLnNldCgidHJhY2tfaWQiLHQuaWQpLnNldCgiZGVmYXVsdF9zYW1wbGVfZGVzY3JpcHRpb25faW5kZXgiLHQuZGVmYXVsdF9zYW1wbGVfZGVzY3JpcHRpb25faW5kZXh8fDEpLnNldCgiZGVmYXVsdF9zYW1wbGVfZHVyYXRpb24iLHQuZGVmYXVsdF9zYW1wbGVfZHVyYXRpb258fDApLnNldCgiZGVmYXVsdF9zYW1wbGVfc2l6ZSIsdC5kZWZhdWx0X3NhbXBsZV9zaXplfHwwKS5zZXQoImRlZmF1bHRfc2FtcGxlX2ZsYWdzIix0LmRlZmF1bHRfc2FtcGxlX2ZsYWdzfHwwKSx0aGlzLmJ1aWxkVHJha1NhbXBsZUxpc3RzKGkpLHQuaWR9fSxvLkJveC5wcm90b3R5cGUuY29tcHV0ZVNpemU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZXx8bmV3IHM7dC5lbmRpYW5uZXNzPXMuQklHX0VORElBTix0aGlzLndyaXRlKHQpfSxjLnByb3RvdHlwZS5hZGRTYW1wbGU9ZnVuY3Rpb24oZSx0LGkpe3ZhciBmPWl8fHt9LHU9e30sdj10aGlzLmdldFRyYWNrQnlJZChlKTtpZih2IT09bnVsbCl7dS5udW1iZXI9di5zYW1wbGVzLmxlbmd0aCx1LnRyYWNrX2lkPXYudGtoZC50cmFja19pZCx1LnRpbWVzY2FsZT12Lm1kaWEubWRoZC50aW1lc2NhbGUsdS5kZXNjcmlwdGlvbl9pbmRleD1mLnNhbXBsZV9kZXNjcmlwdGlvbl9pbmRleD9mLnNhbXBsZV9kZXNjcmlwdGlvbl9pbmRleC0xOjAsdS5kZXNjcmlwdGlvbj12Lm1kaWEubWluZi5zdGJsLnN0c2QuZW50cmllc1t1LmRlc2NyaXB0aW9uX2luZGV4XSx1LmRhdGE9dCx1LnNpemU9dC5ieXRlTGVuZ3RoLHUuYWxyZWFkeVJlYWQ9dS5zaXplLHUuZHVyYXRpb249Zi5kdXJhdGlvbnx8MSx1LmN0cz1mLmN0c3x8MCx1LmR0cz1mLmR0c3x8MCx1LmlzX3N5bmM9Zi5pc19zeW5jfHwhMSx1LmlzX2xlYWRpbmc9Zi5pc19sZWFkaW5nfHwwLHUuZGVwZW5kc19vbj1mLmRlcGVuZHNfb258fDAsdS5pc19kZXBlbmRlZF9vbj1mLmlzX2RlcGVuZGVkX29ufHwwLHUuaGFzX3JlZHVuZGFuY3k9Zi5oYXNfcmVkdW5kYW5jeXx8MCx1LmRlZ3JhZGF0aW9uX3ByaW9yaXR5PWYuZGVncmFkYXRpb25fcHJpb3JpdHl8fDAsdS5vZmZzZXQ9MCx1LnN1YnNhbXBsZXM9Zi5zdWJzYW1wbGVzLHYuc2FtcGxlcy5wdXNoKHUpLHYuc2FtcGxlc19zaXplKz11LnNpemUsdi5zYW1wbGVzX2R1cmF0aW9uKz11LmR1cmF0aW9uLHYuZmlyc3RfZHRzfHwodi5maXJzdF9kdHM9Zi5kdHMpLHRoaXMucHJvY2Vzc1NhbXBsZXMoKTt2YXIgeT10aGlzLmNyZWF0ZVNpbmdsZVNhbXBsZU1vb2YodSk7cmV0dXJuIHRoaXMuYWRkQm94KHkpLHkuY29tcHV0ZVNpemUoKSx5LnRyYWZzWzBdLnRydW5zWzBdLmRhdGFfb2Zmc2V0PXkuc2l6ZSs4LHRoaXMuYWRkKCJtZGF0IikuZGF0YT1uZXcgVWludDhBcnJheSh0KSx1fX0sYy5wcm90b3R5cGUuY3JlYXRlU2luZ2xlU2FtcGxlTW9vZj1mdW5jdGlvbihlKXt2YXIgdD0wO2UuaXNfc3luYz90PTE8PDI1OnQ9NjU1MzY7dmFyIGk9bmV3IG8ubW9vZkJveDtpLmFkZCgibWZoZCIpLnNldCgic2VxdWVuY2VfbnVtYmVyIix0aGlzLm5leHRNb29mTnVtYmVyKSx0aGlzLm5leHRNb29mTnVtYmVyKys7dmFyIGY9aS5hZGQoInRyYWYiKSx1PXRoaXMuZ2V0VHJhY2tCeUlkKGUudHJhY2tfaWQpO3JldHVybiBmLmFkZCgidGZoZCIpLnNldCgidHJhY2tfaWQiLGUudHJhY2tfaWQpLnNldCgiZmxhZ3MiLG8uVEZIRF9GTEFHX0RFRkFVTFRfQkFTRV9JU19NT09GKSxmLmFkZCgidGZkdCIpLnNldCgiYmFzZU1lZGlhRGVjb2RlVGltZSIsZS5kdHMtKHUuZmlyc3RfZHRzfHwwKSksZi5hZGQoInRydW4iKS5zZXQoImZsYWdzIixvLlRSVU5fRkxBR1NfREFUQV9PRkZTRVR8by5UUlVOX0ZMQUdTX0RVUkFUSU9OfG8uVFJVTl9GTEFHU19TSVpFfG8uVFJVTl9GTEFHU19GTEFHU3xvLlRSVU5fRkxBR1NfQ1RTX09GRlNFVCkuc2V0KCJkYXRhX29mZnNldCIsMCkuc2V0KCJmaXJzdF9zYW1wbGVfZmxhZ3MiLDApLnNldCgic2FtcGxlX2NvdW50IiwxKS5zZXQoInNhbXBsZV9kdXJhdGlvbiIsW2UuZHVyYXRpb25dKS5zZXQoInNhbXBsZV9zaXplIixbZS5zaXplXSkuc2V0KCJzYW1wbGVfZmxhZ3MiLFt0XSkuc2V0KCJzYW1wbGVfY29tcG9zaXRpb25fdGltZV9vZmZzZXQiLFtlLmN0cy1lLmR0c10pLGl9LGMucHJvdG90eXBlLmxhc3RNb29mSW5kZXg9MCxjLnByb3RvdHlwZS5zYW1wbGVzRGF0YVNpemU9MCxjLnByb3RvdHlwZS5yZXNldFRhYmxlcz1mdW5jdGlvbigpe3ZhciBlLHQsaSxmLHUsdix5LG07Zm9yKHRoaXMuaW5pdGlhbF9kdXJhdGlvbj10aGlzLm1vb3YubXZoZC5kdXJhdGlvbix0aGlzLm1vb3YubXZoZC5kdXJhdGlvbj0wLGU9MDtlPHRoaXMubW9vdi50cmFrcy5sZW5ndGg7ZSsrKXt0PXRoaXMubW9vdi50cmFrc1tlXSx0LnRraGQuZHVyYXRpb249MCx0Lm1kaWEubWRoZC5kdXJhdGlvbj0wLGk9dC5tZGlhLm1pbmYuc3RibC5zdGNvfHx0Lm1kaWEubWluZi5zdGJsLmNvNjQsaS5jaHVua19vZmZzZXRzPVtdLGY9dC5tZGlhLm1pbmYuc3RibC5zdHNjLGYuZmlyc3RfY2h1bms9W10sZi5zYW1wbGVzX3Blcl9jaHVuaz1bXSxmLnNhbXBsZV9kZXNjcmlwdGlvbl9pbmRleD1bXSx1PXQubWRpYS5taW5mLnN0Ymwuc3Rzenx8dC5tZGlhLm1pbmYuc3RibC5zdHoyLHUuc2FtcGxlX3NpemVzPVtdLHY9dC5tZGlhLm1pbmYuc3RibC5zdHRzLHYuc2FtcGxlX2NvdW50cz1bXSx2LnNhbXBsZV9kZWx0YXM9W10seT10Lm1kaWEubWluZi5zdGJsLmN0dHMseSYmKHkuc2FtcGxlX2NvdW50cz1bXSx5LnNhbXBsZV9vZmZzZXRzPVtdKSxtPXQubWRpYS5taW5mLnN0Ymwuc3Rzczt2YXIgYj10Lm1kaWEubWluZi5zdGJsLmJveGVzLmluZGV4T2YobSk7YiE9LTEmJih0Lm1kaWEubWluZi5zdGJsLmJveGVzW2JdPW51bGwpfX0sYy5pbml0U2FtcGxlR3JvdXBzPWZ1bmN0aW9uKGUsdCxpLGYsdSl7dmFyIHYseSxtLGI7ZnVuY3Rpb24geChTLFUsRSl7dGhpcy5ncm91cGluZ190eXBlPVMsdGhpcy5ncm91cGluZ190eXBlX3BhcmFtZXRlcj1VLHRoaXMuc2JncD1FLHRoaXMubGFzdF9zYW1wbGVfaW5fcnVuPS0xLHRoaXMuZW50cnlfaW5kZXg9LTF9Zm9yKHQmJih0LnNhbXBsZV9ncm91cHNfaW5mbz1bXSksZS5zYW1wbGVfZ3JvdXBzX2luZm98fChlLnNhbXBsZV9ncm91cHNfaW5mbz1bXSkseT0wO3k8aS5sZW5ndGg7eSsrKXtmb3IoYj1pW3ldLmdyb3VwaW5nX3R5cGUrIi8iK2lbeV0uZ3JvdXBpbmdfdHlwZV9wYXJhbWV0ZXIsbT1uZXcgeChpW3ldLmdyb3VwaW5nX3R5cGUsaVt5XS5ncm91cGluZ190eXBlX3BhcmFtZXRlcixpW3ldKSx0JiYodC5zYW1wbGVfZ3JvdXBzX2luZm9bYl09bSksZS5zYW1wbGVfZ3JvdXBzX2luZm9bYl18fChlLnNhbXBsZV9ncm91cHNfaW5mb1tiXT1tKSx2PTA7djxmLmxlbmd0aDt2KyspZlt2XS5ncm91cGluZ190eXBlPT09aVt5XS5ncm91cGluZ190eXBlJiYobS5kZXNjcmlwdGlvbj1mW3ZdLG0uZGVzY3JpcHRpb24udXNlZD0hMCk7aWYodSlmb3Iodj0wO3Y8dS5sZW5ndGg7disrKXVbdl0uZ3JvdXBpbmdfdHlwZT09PWlbeV0uZ3JvdXBpbmdfdHlwZSYmKG0uZnJhZ21lbnRfZGVzY3JpcHRpb249dVt2XSxtLmZyYWdtZW50X2Rlc2NyaXB0aW9uLnVzZWQ9ITAsbS5pc19mcmFnbWVudD0hMCl9aWYodCl7aWYodSlmb3IoeT0wO3k8dS5sZW5ndGg7eSsrKSF1W3ldLnVzZWQmJnVbeV0udmVyc2lvbj49MiYmKGI9dVt5XS5ncm91cGluZ190eXBlKyIvMCIsbT1uZXcgeCh1W3ldLmdyb3VwaW5nX3R5cGUsMCksbS5pc19mcmFnbWVudD0hMCx0LnNhbXBsZV9ncm91cHNfaW5mb1tiXXx8KHQuc2FtcGxlX2dyb3Vwc19pbmZvW2JdPW0pKX1lbHNlIGZvcih5PTA7eTxmLmxlbmd0aDt5KyspIWZbeV0udXNlZCYmZlt5XS52ZXJzaW9uPj0yJiYoYj1mW3ldLmdyb3VwaW5nX3R5cGUrIi8wIixtPW5ldyB4KGZbeV0uZ3JvdXBpbmdfdHlwZSwwKSxlLnNhbXBsZV9ncm91cHNfaW5mb1tiXXx8KGUuc2FtcGxlX2dyb3Vwc19pbmZvW2JdPW0pKX0sYy5zZXRTYW1wbGVHcm91cFByb3BlcnRpZXM9ZnVuY3Rpb24oZSx0LGksZil7dmFyIHUsdjt0LnNhbXBsZV9ncm91cHM9W107Zm9yKHUgaW4gZilpZih0LnNhbXBsZV9ncm91cHNbdV09e30sdC5zYW1wbGVfZ3JvdXBzW3VdLmdyb3VwaW5nX3R5cGU9Zlt1XS5ncm91cGluZ190eXBlLHQuc2FtcGxlX2dyb3Vwc1t1XS5ncm91cGluZ190eXBlX3BhcmFtZXRlcj1mW3VdLmdyb3VwaW5nX3R5cGVfcGFyYW1ldGVyLGk+PWZbdV0ubGFzdF9zYW1wbGVfaW5fcnVuJiYoZlt1XS5sYXN0X3NhbXBsZV9pbl9ydW48MCYmKGZbdV0ubGFzdF9zYW1wbGVfaW5fcnVuPTApLGZbdV0uZW50cnlfaW5kZXgrKyxmW3VdLmVudHJ5X2luZGV4PD1mW3VdLnNiZ3AuZW50cmllcy5sZW5ndGgtMSYmKGZbdV0ubGFzdF9zYW1wbGVfaW5fcnVuKz1mW3VdLnNiZ3AuZW50cmllc1tmW3VdLmVudHJ5X2luZGV4XS5zYW1wbGVfY291bnQpKSxmW3VdLmVudHJ5X2luZGV4PD1mW3VdLnNiZ3AuZW50cmllcy5sZW5ndGgtMT90LnNhbXBsZV9ncm91cHNbdV0uZ3JvdXBfZGVzY3JpcHRpb25faW5kZXg9Zlt1XS5zYmdwLmVudHJpZXNbZlt1XS5lbnRyeV9pbmRleF0uZ3JvdXBfZGVzY3JpcHRpb25faW5kZXg6dC5zYW1wbGVfZ3JvdXBzW3VdLmdyb3VwX2Rlc2NyaXB0aW9uX2luZGV4PS0xLHQuc2FtcGxlX2dyb3Vwc1t1XS5ncm91cF9kZXNjcmlwdGlvbl9pbmRleCE9PTApe3ZhciB5O2ZbdV0uZnJhZ21lbnRfZGVzY3JpcHRpb24/eT1mW3VdLmZyYWdtZW50X2Rlc2NyaXB0aW9uOnk9Zlt1XS5kZXNjcmlwdGlvbix0LnNhbXBsZV9ncm91cHNbdV0uZ3JvdXBfZGVzY3JpcHRpb25faW5kZXg+MD8odC5zYW1wbGVfZ3JvdXBzW3VdLmdyb3VwX2Rlc2NyaXB0aW9uX2luZGV4PjY1NTM1P3Y9KHQuc2FtcGxlX2dyb3Vwc1t1XS5ncm91cF9kZXNjcmlwdGlvbl9pbmRleD4+MTYpLTE6dj10LnNhbXBsZV9ncm91cHNbdV0uZ3JvdXBfZGVzY3JpcHRpb25faW5kZXgtMSx5JiZ2Pj0wJiYodC5zYW1wbGVfZ3JvdXBzW3VdLmRlc2NyaXB0aW9uPXkuZW50cmllc1t2XSkpOnkmJnkudmVyc2lvbj49MiYmeS5kZWZhdWx0X2dyb3VwX2Rlc2NyaXB0aW9uX2luZGV4PjAmJih0LnNhbXBsZV9ncm91cHNbdV0uZGVzY3JpcHRpb249eS5lbnRyaWVzW3kuZGVmYXVsdF9ncm91cF9kZXNjcmlwdGlvbl9pbmRleC0xXSl9fSxjLnByb2Nlc3Nfc2R0cD1mdW5jdGlvbihlLHQsaSl7dCYmKGU/KHQuaXNfbGVhZGluZz1lLmlzX2xlYWRpbmdbaV0sdC5kZXBlbmRzX29uPWUuc2FtcGxlX2RlcGVuZHNfb25baV0sdC5pc19kZXBlbmRlZF9vbj1lLnNhbXBsZV9pc19kZXBlbmRlZF9vbltpXSx0Lmhhc19yZWR1bmRhbmN5PWUuc2FtcGxlX2hhc19yZWR1bmRhbmN5W2ldKToodC5pc19sZWFkaW5nPTAsdC5kZXBlbmRzX29uPTAsdC5pc19kZXBlbmRlZF9vbj0wLHQuaGFzX3JlZHVuZGFuY3k9MCkpfSxjLnByb3RvdHlwZS5idWlsZFNhbXBsZUxpc3RzPWZ1bmN0aW9uKCl7dmFyIGUsdDtmb3IoZT0wO2U8dGhpcy5tb292LnRyYWtzLmxlbmd0aDtlKyspdD10aGlzLm1vb3YudHJha3NbZV0sdGhpcy5idWlsZFRyYWtTYW1wbGVMaXN0cyh0KX0sYy5wcm90b3R5cGUuYnVpbGRUcmFrU2FtcGxlTGlzdHM9ZnVuY3Rpb24oZSl7dmFyIHQsaSxmLHUsdix5LG0sYix4LFMsVSxFLHcsQSxJLEYsUCxELGssTixNLHEsRyxZO2lmKGUuc2FtcGxlcz1bXSxlLnNhbXBsZXNfZHVyYXRpb249MCxlLnNhbXBsZXNfc2l6ZT0wLGk9ZS5tZGlhLm1pbmYuc3RibC5zdGNvfHxlLm1kaWEubWluZi5zdGJsLmNvNjQsZj1lLm1kaWEubWluZi5zdGJsLnN0c2MsdT1lLm1kaWEubWluZi5zdGJsLnN0c3p8fGUubWRpYS5taW5mLnN0Ymwuc3R6Mix2PWUubWRpYS5taW5mLnN0Ymwuc3R0cyx5PWUubWRpYS5taW5mLnN0YmwuY3R0cyxtPWUubWRpYS5taW5mLnN0Ymwuc3RzcyxiPWUubWRpYS5taW5mLnN0Ymwuc3RzZCx4PWUubWRpYS5taW5mLnN0Ymwuc3VicyxFPWUubWRpYS5taW5mLnN0Ymwuc3RkcCxTPWUubWRpYS5taW5mLnN0Ymwuc2JncHMsVT1lLm1kaWEubWluZi5zdGJsLnNncGRzLEQ9LTEsaz0tMSxOPS0xLE09LTEscT0wLEc9MCxZPTAsYy5pbml0U2FtcGxlR3JvdXBzKGUsbnVsbCxTLFUpLCEodHlwZW9mIHU+InUiKSl7Zm9yKHQ9MDt0PHUuc2FtcGxlX3NpemVzLmxlbmd0aDt0Kyspe3ZhciBUPXt9O1QubnVtYmVyPXQsVC50cmFja19pZD1lLnRraGQudHJhY2tfaWQsVC50aW1lc2NhbGU9ZS5tZGlhLm1kaGQudGltZXNjYWxlLFQuYWxyZWFkeVJlYWQ9MCxlLnNhbXBsZXNbdF09VCxULnNpemU9dS5zYW1wbGVfc2l6ZXNbdF0sZS5zYW1wbGVzX3NpemUrPVQuc2l6ZSx0PT09MD8oQT0xLHc9MCxULmNodW5rX2luZGV4PUEsVC5jaHVua19ydW5faW5kZXg9dyxQPWYuc2FtcGxlc19wZXJfY2h1bmtbd10sRj0wLHcrMTxmLmZpcnN0X2NodW5rLmxlbmd0aD9JPWYuZmlyc3RfY2h1bmtbdysxXS0xOkk9MS8wKTp0PFA/KFQuY2h1bmtfaW5kZXg9QSxULmNodW5rX3J1bl9pbmRleD13KTooQSsrLFQuY2h1bmtfaW5kZXg9QSxGPTAsQTw9SXx8KHcrKyx3KzE8Zi5maXJzdF9jaHVuay5sZW5ndGg/ST1mLmZpcnN0X2NodW5rW3crMV0tMTpJPTEvMCksVC5jaHVua19ydW5faW5kZXg9dyxQKz1mLnNhbXBsZXNfcGVyX2NodW5rW3ddKSxULmRlc2NyaXB0aW9uX2luZGV4PWYuc2FtcGxlX2Rlc2NyaXB0aW9uX2luZGV4W1QuY2h1bmtfcnVuX2luZGV4XS0xLFQuZGVzY3JpcHRpb249Yi5lbnRyaWVzW1QuZGVzY3JpcHRpb25faW5kZXhdLFQub2Zmc2V0PWkuY2h1bmtfb2Zmc2V0c1tULmNodW5rX2luZGV4LTFdK0YsRis9VC5zaXplLHQ+RCYmKGsrKyxEPDAmJihEPTApLEQrPXYuc2FtcGxlX2NvdW50c1trXSksdD4wPyhlLnNhbXBsZXNbdC0xXS5kdXJhdGlvbj12LnNhbXBsZV9kZWx0YXNba10sZS5zYW1wbGVzX2R1cmF0aW9uKz1lLnNhbXBsZXNbdC0xXS5kdXJhdGlvbixULmR0cz1lLnNhbXBsZXNbdC0xXS5kdHMrZS5zYW1wbGVzW3QtMV0uZHVyYXRpb24pOlQuZHRzPTAseT8odD49TiYmKE0rKyxOPDAmJihOPTApLE4rPXkuc2FtcGxlX2NvdW50c1tNXSksVC5jdHM9ZS5zYW1wbGVzW3RdLmR0cyt5LnNhbXBsZV9vZmZzZXRzW01dKTpULmN0cz1ULmR0cyxtPyh0PT1tLnNhbXBsZV9udW1iZXJzW3FdLTE/KFQuaXNfc3luYz0hMCxxKyspOihULmlzX3N5bmM9ITEsVC5kZWdyYWRhdGlvbl9wcmlvcml0eT0wKSx4JiZ4LmVudHJpZXNbR10uc2FtcGxlX2RlbHRhK1k9PXQrMSYmKFQuc3Vic2FtcGxlcz14LmVudHJpZXNbR10uc3Vic2FtcGxlcyxZKz14LmVudHJpZXNbR10uc2FtcGxlX2RlbHRhLEcrKykpOlQuaXNfc3luYz0hMCxjLnByb2Nlc3Nfc2R0cChlLm1kaWEubWluZi5zdGJsLnNkdHAsVCxULm51bWJlciksRT9ULmRlZ3JhZGF0aW9uX3ByaW9yaXR5PUUucHJpb3JpdHlbdF06VC5kZWdyYWRhdGlvbl9wcmlvcml0eT0wLHgmJnguZW50cmllc1tHXS5zYW1wbGVfZGVsdGErWT09dCYmKFQuc3Vic2FtcGxlcz14LmVudHJpZXNbR10uc3Vic2FtcGxlcyxZKz14LmVudHJpZXNbR10uc2FtcGxlX2RlbHRhKSwoUy5sZW5ndGg+MHx8VS5sZW5ndGg+MCkmJmMuc2V0U2FtcGxlR3JvdXBQcm9wZXJ0aWVzKGUsVCx0LGUuc2FtcGxlX2dyb3Vwc19pbmZvKX10PjAmJihlLnNhbXBsZXNbdC0xXS5kdXJhdGlvbj1NYXRoLm1heChlLm1kaWEubWRoZC5kdXJhdGlvbi1lLnNhbXBsZXNbdC0xXS5kdHMsMCksZS5zYW1wbGVzX2R1cmF0aW9uKz1lLnNhbXBsZXNbdC0xXS5kdXJhdGlvbil9fSxjLnByb3RvdHlwZS51cGRhdGVTYW1wbGVMaXN0cz1mdW5jdGlvbigpe3ZhciBlLHQsaSxmLHUsdix5LG0sYix4LFMsVSxFLHcsQTtpZih0aGlzLm1vb3YhPT12b2lkIDApe2Zvcig7dGhpcy5sYXN0TW9vZkluZGV4PHRoaXMubW9vZnMubGVuZ3RoOylpZihiPXRoaXMubW9vZnNbdGhpcy5sYXN0TW9vZkluZGV4XSx0aGlzLmxhc3RNb29mSW5kZXgrKyxiLnR5cGU9PSJtb29mIilmb3IoeD1iLGU9MDtlPHgudHJhZnMubGVuZ3RoO2UrKyl7Zm9yKFM9eC50cmFmc1tlXSxVPXRoaXMuZ2V0VHJhY2tCeUlkKFMudGZoZC50cmFja19pZCksRT10aGlzLmdldFRyZXhCeUlkKFMudGZoZC50cmFja19pZCksUy50ZmhkLmZsYWdzJm8uVEZIRF9GTEFHX1NBTVBMRV9ERVNDP2Y9Uy50ZmhkLmRlZmF1bHRfc2FtcGxlX2Rlc2NyaXB0aW9uX2luZGV4OmY9RT9FLmRlZmF1bHRfc2FtcGxlX2Rlc2NyaXB0aW9uX2luZGV4OjEsUy50ZmhkLmZsYWdzJm8uVEZIRF9GTEFHX1NBTVBMRV9EVVI/dT1TLnRmaGQuZGVmYXVsdF9zYW1wbGVfZHVyYXRpb246dT1FP0UuZGVmYXVsdF9zYW1wbGVfZHVyYXRpb246MCxTLnRmaGQuZmxhZ3Mmby5URkhEX0ZMQUdfU0FNUExFX1NJWkU/dj1TLnRmaGQuZGVmYXVsdF9zYW1wbGVfc2l6ZTp2PUU/RS5kZWZhdWx0X3NhbXBsZV9zaXplOjAsUy50ZmhkLmZsYWdzJm8uVEZIRF9GTEFHX1NBTVBMRV9GTEFHUz95PVMudGZoZC5kZWZhdWx0X3NhbXBsZV9mbGFnczp5PUU/RS5kZWZhdWx0X3NhbXBsZV9mbGFnczowLFMuc2FtcGxlX251bWJlcj0wLFMuc2JncHMubGVuZ3RoPjAmJmMuaW5pdFNhbXBsZUdyb3VwcyhVLFMsUy5zYmdwcyxVLm1kaWEubWluZi5zdGJsLnNncGRzLFMuc2dwZHMpLHQ9MDt0PFMudHJ1bnMubGVuZ3RoO3QrKyl7dmFyIEk9Uy50cnVuc1t0XTtmb3IoaT0wO2k8SS5zYW1wbGVfY291bnQ7aSsrKXt3PXt9LHcubW9vZl9udW1iZXI9dGhpcy5sYXN0TW9vZkluZGV4LHcubnVtYmVyX2luX3RyYWY9Uy5zYW1wbGVfbnVtYmVyLFMuc2FtcGxlX251bWJlcisrLHcubnVtYmVyPVUuc2FtcGxlcy5sZW5ndGgsUy5maXJzdF9zYW1wbGVfaW5kZXg9VS5zYW1wbGVzLmxlbmd0aCxVLnNhbXBsZXMucHVzaCh3KSx3LnRyYWNrX2lkPVUudGtoZC50cmFja19pZCx3LnRpbWVzY2FsZT1VLm1kaWEubWRoZC50aW1lc2NhbGUsdy5kZXNjcmlwdGlvbl9pbmRleD1mLTEsdy5kZXNjcmlwdGlvbj1VLm1kaWEubWluZi5zdGJsLnN0c2QuZW50cmllc1t3LmRlc2NyaXB0aW9uX2luZGV4XSx3LnNpemU9dixJLmZsYWdzJm8uVFJVTl9GTEFHU19TSVpFJiYody5zaXplPUkuc2FtcGxlX3NpemVbaV0pLFUuc2FtcGxlc19zaXplKz13LnNpemUsdy5kdXJhdGlvbj11LEkuZmxhZ3Mmby5UUlVOX0ZMQUdTX0RVUkFUSU9OJiYody5kdXJhdGlvbj1JLnNhbXBsZV9kdXJhdGlvbltpXSksVS5zYW1wbGVzX2R1cmF0aW9uKz13LmR1cmF0aW9uLFUuZmlyc3RfdHJhZl9tZXJnZWR8fGk+MD93LmR0cz1VLnNhbXBsZXNbVS5zYW1wbGVzLmxlbmd0aC0yXS5kdHMrVS5zYW1wbGVzW1Uuc2FtcGxlcy5sZW5ndGgtMl0uZHVyYXRpb246KFMudGZkdD93LmR0cz1TLnRmZHQuYmFzZU1lZGlhRGVjb2RlVGltZTp3LmR0cz0wLFUuZmlyc3RfdHJhZl9tZXJnZWQ9ITApLHcuY3RzPXcuZHRzLEkuZmxhZ3Mmby5UUlVOX0ZMQUdTX0NUU19PRkZTRVQmJih3LmN0cz13LmR0cytJLnNhbXBsZV9jb21wb3NpdGlvbl90aW1lX29mZnNldFtpXSksQT15LEkuZmxhZ3Mmby5UUlVOX0ZMQUdTX0ZMQUdTP0E9SS5zYW1wbGVfZmxhZ3NbaV06aT09PTAmJkkuZmxhZ3Mmby5UUlVOX0ZMQUdTX0ZJUlNUX0ZMQUcmJihBPUkuZmlyc3Rfc2FtcGxlX2ZsYWdzKSx3LmlzX3N5bmM9IShBPj4xNiYxKSx3LmlzX2xlYWRpbmc9QT4+MjYmMyx3LmRlcGVuZHNfb249QT4+MjQmMyx3LmlzX2RlcGVuZGVkX29uPUE+PjIyJjMsdy5oYXNfcmVkdW5kYW5jeT1BPj4yMCYzLHcuZGVncmFkYXRpb25fcHJpb3JpdHk9QSY2NTUzNTt2YXIgRj0hIShTLnRmaGQuZmxhZ3Mmby5URkhEX0ZMQUdfQkFTRV9EQVRBX09GRlNFVCksUD0hIShTLnRmaGQuZmxhZ3Mmby5URkhEX0ZMQUdfREVGQVVMVF9CQVNFX0lTX01PT0YpLEQ9ISEoSS5mbGFncyZvLlRSVU5fRkxBR1NfREFUQV9PRkZTRVQpLGs9MDtGP2s9Uy50ZmhkLmJhc2VfZGF0YV9vZmZzZXQ6UHx8dD09PTA/az14LnN0YXJ0Oms9bSx0PT09MCYmaT09PTA/RD93Lm9mZnNldD1rK0kuZGF0YV9vZmZzZXQ6dy5vZmZzZXQ9azp3Lm9mZnNldD1tLG09dy5vZmZzZXQrdy5zaXplLChTLnNiZ3BzLmxlbmd0aD4wfHxTLnNncGRzLmxlbmd0aD4wfHxVLm1kaWEubWluZi5zdGJsLnNiZ3BzLmxlbmd0aD4wfHxVLm1kaWEubWluZi5zdGJsLnNncGRzLmxlbmd0aD4wKSYmYy5zZXRTYW1wbGVHcm91cFByb3BlcnRpZXMoVSx3LHcubnVtYmVyX2luX3RyYWYsUy5zYW1wbGVfZ3JvdXBzX2luZm8pfX1pZihTLnN1YnMpe1UuaGFzX2ZyYWdtZW50X3N1YnNhbXBsZXM9ITA7dmFyIE49Uy5maXJzdF9zYW1wbGVfaW5kZXg7Zm9yKHQ9MDt0PFMuc3Vicy5lbnRyaWVzLmxlbmd0aDt0KyspTis9Uy5zdWJzLmVudHJpZXNbdF0uc2FtcGxlX2RlbHRhLHc9VS5zYW1wbGVzW04tMV0sdy5zdWJzYW1wbGVzPVMuc3Vicy5lbnRyaWVzW3RdLnN1YnNhbXBsZXN9fX19LGMucHJvdG90eXBlLmdldFNhbXBsZT1mdW5jdGlvbihlLHQpe3ZhciBpLGY9ZS5zYW1wbGVzW3RdO2lmKCF0aGlzLm1vb3YpcmV0dXJuIG51bGw7aWYoIWYuZGF0YSlmLmRhdGE9bmV3IFVpbnQ4QXJyYXkoZi5zaXplKSxmLmFscmVhZHlSZWFkPTAsdGhpcy5zYW1wbGVzRGF0YVNpemUrPWYuc2l6ZSxyLmRlYnVnKCJJU09GaWxlIiwiQWxsb2NhdGluZyBzYW1wbGUgIyIrdCsiIG9uIHRyYWNrICMiK2UudGtoZC50cmFja19pZCsiIG9mIHNpemUgIitmLnNpemUrIiAodG90YWw6ICIrdGhpcy5zYW1wbGVzRGF0YVNpemUrIikiKTtlbHNlIGlmKGYuYWxyZWFkeVJlYWQ9PWYuc2l6ZSlyZXR1cm4gZjtmb3IoOzspe3ZhciB1PXRoaXMuc3RyZWFtLmZpbmRQb3NpdGlvbighMCxmLm9mZnNldCtmLmFscmVhZHlSZWFkLCExKTtpZih1Pi0xKXtpPXRoaXMuc3RyZWFtLmJ1ZmZlcnNbdV07dmFyIHY9aS5ieXRlTGVuZ3RoLShmLm9mZnNldCtmLmFscmVhZHlSZWFkLWkuZmlsZVN0YXJ0KTtpZihmLnNpemUtZi5hbHJlYWR5UmVhZDw9dilyZXR1cm4gci5kZWJ1ZygiSVNPRmlsZSIsIkdldHRpbmcgc2FtcGxlICMiK3QrIiBkYXRhIChhbHJlYWR5UmVhZDogIitmLmFscmVhZHlSZWFkKyIgb2Zmc2V0OiAiKyhmLm9mZnNldCtmLmFscmVhZHlSZWFkLWkuZmlsZVN0YXJ0KSsiIHJlYWQgc2l6ZTogIisoZi5zaXplLWYuYWxyZWFkeVJlYWQpKyIgZnVsbCBzaXplOiAiK2Yuc2l6ZSsiKSIpLHMubWVtY3B5KGYuZGF0YS5idWZmZXIsZi5hbHJlYWR5UmVhZCxpLGYub2Zmc2V0K2YuYWxyZWFkeVJlYWQtaS5maWxlU3RhcnQsZi5zaXplLWYuYWxyZWFkeVJlYWQpLGkudXNlZEJ5dGVzKz1mLnNpemUtZi5hbHJlYWR5UmVhZCx0aGlzLnN0cmVhbS5sb2dCdWZmZXJMZXZlbCgpLGYuYWxyZWFkeVJlYWQ9Zi5zaXplLGY7aWYodj09PTApcmV0dXJuIG51bGw7ci5kZWJ1ZygiSVNPRmlsZSIsIkdldHRpbmcgc2FtcGxlICMiK3QrIiBwYXJ0aWFsIGRhdGEgKGFscmVhZHlSZWFkOiAiK2YuYWxyZWFkeVJlYWQrIiBvZmZzZXQ6ICIrKGYub2Zmc2V0K2YuYWxyZWFkeVJlYWQtaS5maWxlU3RhcnQpKyIgcmVhZCBzaXplOiAiK3YrIiBmdWxsIHNpemU6ICIrZi5zaXplKyIpIikscy5tZW1jcHkoZi5kYXRhLmJ1ZmZlcixmLmFscmVhZHlSZWFkLGksZi5vZmZzZXQrZi5hbHJlYWR5UmVhZC1pLmZpbGVTdGFydCx2KSxmLmFscmVhZHlSZWFkKz12LGkudXNlZEJ5dGVzKz12LHRoaXMuc3RyZWFtLmxvZ0J1ZmZlckxldmVsKCl9ZWxzZSByZXR1cm4gbnVsbH19LGMucHJvdG90eXBlLnJlbGVhc2VTYW1wbGU9ZnVuY3Rpb24oZSx0KXt2YXIgaT1lLnNhbXBsZXNbdF07cmV0dXJuIGkuZGF0YT8odGhpcy5zYW1wbGVzRGF0YVNpemUtPWkuc2l6ZSxpLmRhdGE9bnVsbCxpLmFscmVhZHlSZWFkPTAsaS5zaXplKTowfSxjLnByb3RvdHlwZS5nZXRBbGxvY2F0ZWRTYW1wbGVEYXRhU2l6ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnNhbXBsZXNEYXRhU2l6ZX0sYy5wcm90b3R5cGUuZ2V0Q29kZWNzPWZ1bmN0aW9uKCl7dmFyIGUsdD0iIjtmb3IoZT0wO2U8dGhpcy5tb292LnRyYWtzLmxlbmd0aDtlKyspe3ZhciBpPXRoaXMubW9vdi50cmFrc1tlXTtlPjAmJih0Kz0iLCIpLHQrPWkubWRpYS5taW5mLnN0Ymwuc3RzZC5lbnRyaWVzWzBdLmdldENvZGVjKCl9cmV0dXJuIHR9LGMucHJvdG90eXBlLmdldFRyZXhCeUlkPWZ1bmN0aW9uKGUpe3ZhciB0O2lmKCF0aGlzLm1vb3Z8fCF0aGlzLm1vb3YubXZleClyZXR1cm4gbnVsbDtmb3IodD0wO3Q8dGhpcy5tb292Lm12ZXgudHJleHMubGVuZ3RoO3QrKyl7dmFyIGk9dGhpcy5tb292Lm12ZXgudHJleHNbdF07aWYoaS50cmFja19pZD09ZSlyZXR1cm4gaX1yZXR1cm4gbnVsbH0sYy5wcm90b3R5cGUuZ2V0VHJhY2tCeUlkPWZ1bmN0aW9uKGUpe2lmKHRoaXMubW9vdj09PXZvaWQgMClyZXR1cm4gbnVsbDtmb3IodmFyIHQ9MDt0PHRoaXMubW9vdi50cmFrcy5sZW5ndGg7dCsrKXt2YXIgaT10aGlzLm1vb3YudHJha3NbdF07aWYoaS50a2hkLnRyYWNrX2lkPT1lKXJldHVybiBpfXJldHVybiBudWxsfSxjLnByb3RvdHlwZS5pdGVtcz1bXSxjLnByb3RvdHlwZS5pdGVtc0RhdGFTaXplPTAsYy5wcm90b3R5cGUuZmxhdHRlbkl0ZW1JbmZvPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5pdGVtcyx0LGksZix1PXRoaXMubWV0YTtpZih1IT1udWxsJiZ1LmhkbHIhPT12b2lkIDAmJnUuaWluZiE9PXZvaWQgMCl7Zm9yKHQ9MDt0PHUuaWluZi5pdGVtX2luZm9zLmxlbmd0aDt0KyspZj17fSxmLmlkPXUuaWluZi5pdGVtX2luZm9zW3RdLml0ZW1fSUQsZVtmLmlkXT1mLGYucmVmX3RvPVtdLGYubmFtZT11LmlpbmYuaXRlbV9pbmZvc1t0XS5pdGVtX25hbWUsdS5paW5mLml0ZW1faW5mb3NbdF0ucHJvdGVjdGlvbl9pbmRleD4wJiYoZi5wcm90ZWN0aW9uPXUuaXByby5wcm90ZWN0aW9uc1t1LmlpbmYuaXRlbV9pbmZvc1t0XS5wcm90ZWN0aW9uX2luZGV4LTFdKSx1LmlpbmYuaXRlbV9pbmZvc1t0XS5pdGVtX3R5cGU/Zi50eXBlPXUuaWluZi5pdGVtX2luZm9zW3RdLml0ZW1fdHlwZTpmLnR5cGU9Im1pbWUiLGYuY29udGVudF90eXBlPXUuaWluZi5pdGVtX2luZm9zW3RdLmNvbnRlbnRfdHlwZSxmLmNvbnRlbnRfZW5jb2Rpbmc9dS5paW5mLml0ZW1faW5mb3NbdF0uY29udGVudF9lbmNvZGluZztpZih1Lmlsb2MpZm9yKHQ9MDt0PHUuaWxvYy5pdGVtcy5sZW5ndGg7dCsrKXt2YXIgdj11Lmlsb2MuaXRlbXNbdF07c3dpdGNoKGY9ZVt2Lml0ZW1fSURdLHYuZGF0YV9yZWZlcmVuY2VfaW5kZXghPT0wJiYoci53YXJuKCJJdGVtIHN0b3JhZ2Ugd2l0aCByZWZlcmVuY2UgdG8gb3RoZXIgZmlsZXM6IG5vdCBzdXBwb3J0ZWQiKSxmLnNvdXJjZT11LmRpbmYuYm94ZXNbdi5kYXRhX3JlZmVyZW5jZV9pbmRleC0xXSksdi5jb25zdHJ1Y3Rpb25fbWV0aG9kKXtjYXNlIDA6YnJlYWs7Y2FzZSAxOnIud2FybigiSXRlbSBzdG9yYWdlIHdpdGggY29uc3RydWN0aW9uX21ldGhvZCA6IG5vdCBzdXBwb3J0ZWQiKTticmVhaztjYXNlIDI6ci53YXJuKCJJdGVtIHN0b3JhZ2Ugd2l0aCBjb25zdHJ1Y3Rpb25fbWV0aG9kIDogbm90IHN1cHBvcnRlZCIpO2JyZWFrfWZvcihmLmV4dGVudHM9W10sZi5zaXplPTAsaT0wO2k8di5leHRlbnRzLmxlbmd0aDtpKyspZi5leHRlbnRzW2ldPXt9LGYuZXh0ZW50c1tpXS5vZmZzZXQ9di5leHRlbnRzW2ldLmV4dGVudF9vZmZzZXQrdi5iYXNlX29mZnNldCxmLmV4dGVudHNbaV0ubGVuZ3RoPXYuZXh0ZW50c1tpXS5leHRlbnRfbGVuZ3RoLGYuZXh0ZW50c1tpXS5hbHJlYWR5UmVhZD0wLGYuc2l6ZSs9Zi5leHRlbnRzW2ldLmxlbmd0aH1pZih1LnBpdG0mJihlW3UucGl0bS5pdGVtX2lkXS5wcmltYXJ5PSEwKSx1LmlyZWYpZm9yKHQ9MDt0PHUuaXJlZi5yZWZlcmVuY2VzLmxlbmd0aDt0Kyspe3ZhciB5PXUuaXJlZi5yZWZlcmVuY2VzW3RdO2ZvcihpPTA7aTx5LnJlZmVyZW5jZXMubGVuZ3RoO2krKyllW3kuZnJvbV9pdGVtX0lEXS5yZWZfdG8ucHVzaCh7dHlwZTp5LnR5cGUsaWQ6eS5yZWZlcmVuY2VzW2ldfSl9aWYodS5pcHJwKWZvcih2YXIgbT0wO208dS5pcHJwLmlwbWFzLmxlbmd0aDttKyspe3ZhciBiPXUuaXBycC5pcG1hc1ttXTtmb3IodD0wO3Q8Yi5hc3NvY2lhdGlvbnMubGVuZ3RoO3QrKyl7dmFyIHg9Yi5hc3NvY2lhdGlvbnNbdF07Zm9yKGY9ZVt4LmlkXSxmLnByb3BlcnRpZXM9PT12b2lkIDAmJihmLnByb3BlcnRpZXM9e30sZi5wcm9wZXJ0aWVzLmJveGVzPVtdKSxpPTA7aTx4LnByb3BzLmxlbmd0aDtpKyspe3ZhciBTPXgucHJvcHNbaV07aWYoUy5wcm9wZXJ0eV9pbmRleD4wJiZTLnByb3BlcnR5X2luZGV4LTE8dS5pcHJwLmlwY28uYm94ZXMubGVuZ3RoKXt2YXIgVT11LmlwcnAuaXBjby5ib3hlc1tTLnByb3BlcnR5X2luZGV4LTFdO2YucHJvcGVydGllc1tVLnR5cGVdPVUsZi5wcm9wZXJ0aWVzLmJveGVzLnB1c2goVSl9fX19fX0sYy5wcm90b3R5cGUuZ2V0SXRlbT1mdW5jdGlvbihlKXt2YXIgdCxpO2lmKCF0aGlzLm1ldGEpcmV0dXJuIG51bGw7aWYoaT10aGlzLml0ZW1zW2VdLCFpLmRhdGEmJmkuc2l6ZSlpLmRhdGE9bmV3IFVpbnQ4QXJyYXkoaS5zaXplKSxpLmFscmVhZHlSZWFkPTAsdGhpcy5pdGVtc0RhdGFTaXplKz1pLnNpemUsci5kZWJ1ZygiSVNPRmlsZSIsIkFsbG9jYXRpbmcgaXRlbSAjIitlKyIgb2Ygc2l6ZSAiK2kuc2l6ZSsiICh0b3RhbDogIit0aGlzLml0ZW1zRGF0YVNpemUrIikiKTtlbHNlIGlmKGkuYWxyZWFkeVJlYWQ9PT1pLnNpemUpcmV0dXJuIGk7Zm9yKHZhciBmPTA7ZjxpLmV4dGVudHMubGVuZ3RoO2YrKyl7dmFyIHU9aS5leHRlbnRzW2ZdO2lmKHUuYWxyZWFkeVJlYWQhPT11Lmxlbmd0aCl7dmFyIHY9dGhpcy5zdHJlYW0uZmluZFBvc2l0aW9uKCEwLHUub2Zmc2V0K3UuYWxyZWFkeVJlYWQsITEpO2lmKHY+LTEpe3Q9dGhpcy5zdHJlYW0uYnVmZmVyc1t2XTt2YXIgeT10LmJ5dGVMZW5ndGgtKHUub2Zmc2V0K3UuYWxyZWFkeVJlYWQtdC5maWxlU3RhcnQpO2lmKHUubGVuZ3RoLXUuYWxyZWFkeVJlYWQ8PXkpci5kZWJ1ZygiSVNPRmlsZSIsIkdldHRpbmcgaXRlbSAjIitlKyIgZXh0ZW50ICMiK2YrIiBkYXRhIChhbHJlYWR5UmVhZDogIit1LmFscmVhZHlSZWFkKyIgb2Zmc2V0OiAiKyh1Lm9mZnNldCt1LmFscmVhZHlSZWFkLXQuZmlsZVN0YXJ0KSsiIHJlYWQgc2l6ZTogIisodS5sZW5ndGgtdS5hbHJlYWR5UmVhZCkrIiBmdWxsIGV4dGVudCBzaXplOiAiK3UubGVuZ3RoKyIgZnVsbCBpdGVtIHNpemU6ICIraS5zaXplKyIpIikscy5tZW1jcHkoaS5kYXRhLmJ1ZmZlcixpLmFscmVhZHlSZWFkLHQsdS5vZmZzZXQrdS5hbHJlYWR5UmVhZC10LmZpbGVTdGFydCx1Lmxlbmd0aC11LmFscmVhZHlSZWFkKSx0LnVzZWRCeXRlcys9dS5sZW5ndGgtdS5hbHJlYWR5UmVhZCx0aGlzLnN0cmVhbS5sb2dCdWZmZXJMZXZlbCgpLGkuYWxyZWFkeVJlYWQrPXUubGVuZ3RoLXUuYWxyZWFkeVJlYWQsdS5hbHJlYWR5UmVhZD11Lmxlbmd0aDtlbHNlIHJldHVybiByLmRlYnVnKCJJU09GaWxlIiwiR2V0dGluZyBpdGVtICMiK2UrIiBleHRlbnQgIyIrZisiIHBhcnRpYWwgZGF0YSAoYWxyZWFkeVJlYWQ6ICIrdS5hbHJlYWR5UmVhZCsiIG9mZnNldDogIisodS5vZmZzZXQrdS5hbHJlYWR5UmVhZC10LmZpbGVTdGFydCkrIiByZWFkIHNpemU6ICIreSsiIGZ1bGwgZXh0ZW50IHNpemU6ICIrdS5sZW5ndGgrIiBmdWxsIGl0ZW0gc2l6ZTogIitpLnNpemUrIikiKSxzLm1lbWNweShpLmRhdGEuYnVmZmVyLGkuYWxyZWFkeVJlYWQsdCx1Lm9mZnNldCt1LmFscmVhZHlSZWFkLXQuZmlsZVN0YXJ0LHkpLHUuYWxyZWFkeVJlYWQrPXksaS5hbHJlYWR5UmVhZCs9eSx0LnVzZWRCeXRlcys9eSx0aGlzLnN0cmVhbS5sb2dCdWZmZXJMZXZlbCgpLG51bGx9ZWxzZSByZXR1cm4gbnVsbH19cmV0dXJuIGkuYWxyZWFkeVJlYWQ9PT1pLnNpemU/aTpudWxsfSxjLnByb3RvdHlwZS5yZWxlYXNlSXRlbT1mdW5jdGlvbihlKXt2YXIgdD10aGlzLml0ZW1zW2VdO2lmKHQuZGF0YSl7dGhpcy5pdGVtc0RhdGFTaXplLT10LnNpemUsdC5kYXRhPW51bGwsdC5hbHJlYWR5UmVhZD0wO2Zvcih2YXIgaT0wO2k8dC5leHRlbnRzLmxlbmd0aDtpKyspe3ZhciBmPXQuZXh0ZW50c1tpXTtmLmFscmVhZHlSZWFkPTB9cmV0dXJuIHQuc2l6ZX1lbHNlIHJldHVybiAwfSxjLnByb3RvdHlwZS5wcm9jZXNzSXRlbXM9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0IGluIHRoaXMuaXRlbXMpe3ZhciBpPXRoaXMuaXRlbXNbdF07dGhpcy5nZXRJdGVtKGkuaWQpLGUmJiFpLnNlbnQmJihlKGkpLGkuc2VudD0hMCxpLmRhdGE9bnVsbCl9fSxjLnByb3RvdHlwZS5oYXNJdGVtPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdCBpbiB0aGlzLml0ZW1zKXt2YXIgaT10aGlzLml0ZW1zW3RdO2lmKGkubmFtZT09PWUpcmV0dXJuIGkuaWR9cmV0dXJuLTF9LGMucHJvdG90eXBlLmdldE1ldGFIYW5kbGVyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWV0YT90aGlzLm1ldGEuaGRsci5oYW5kbGVyOm51bGx9LGMucHJvdG90eXBlLmdldFByaW1hcnlJdGVtPWZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMubWV0YXx8IXRoaXMubWV0YS5waXRtP251bGw6dGhpcy5nZXRJdGVtKHRoaXMubWV0YS5waXRtLml0ZW1faWQpfSxjLnByb3RvdHlwZS5pdGVtVG9GcmFnbWVudGVkVHJhY2tGaWxlPWZ1bmN0aW9uKGUpe3ZhciB0PWV8fHt9LGk9bnVsbDtpZih0Lml0ZW1JZD9pPXRoaXMuZ2V0SXRlbSh0Lml0ZW1JZCk6aT10aGlzLmdldFByaW1hcnlJdGVtKCksaT09bnVsbClyZXR1cm4gbnVsbDt2YXIgZj1uZXcgYztmLmRpc2NhcmRNZGF0RGF0YT0hMTt2YXIgdT17dHlwZTppLnR5cGUsZGVzY3JpcHRpb25fYm94ZXM6aS5wcm9wZXJ0aWVzLmJveGVzfTtpLnByb3BlcnRpZXMuaXNwZSYmKHUud2lkdGg9aS5wcm9wZXJ0aWVzLmlzcGUuaW1hZ2Vfd2lkdGgsdS5oZWlnaHQ9aS5wcm9wZXJ0aWVzLmlzcGUuaW1hZ2VfaGVpZ2h0KTt2YXIgdj1mLmFkZFRyYWNrKHUpO3JldHVybiB2PyhmLmFkZFNhbXBsZSh2LGkuZGF0YSksZik6bnVsbH0sYy5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTA7dDx0aGlzLmJveGVzLmxlbmd0aDt0KyspdGhpcy5ib3hlc1t0XS53cml0ZShlKX0sYy5wcm90b3R5cGUuY3JlYXRlRnJhZ21lbnQ9ZnVuY3Rpb24oZSx0LGkpe3ZhciBmPXRoaXMuZ2V0VHJhY2tCeUlkKGUpLHU9dGhpcy5nZXRTYW1wbGUoZix0KTtpZih1PT1udWxsKXJldHVybiB1PWYuc2FtcGxlc1t0XSx0aGlzLm5leHRTZWVrUG9zaXRpb24/dGhpcy5uZXh0U2Vla1Bvc2l0aW9uPU1hdGgubWluKHUub2Zmc2V0K3UuYWxyZWFkeVJlYWQsdGhpcy5uZXh0U2Vla1Bvc2l0aW9uKTp0aGlzLm5leHRTZWVrUG9zaXRpb249Zi5zYW1wbGVzW3RdLm9mZnNldCt1LmFscmVhZHlSZWFkLG51bGw7dmFyIHY9aXx8bmV3IHM7di5lbmRpYW5uZXNzPXMuQklHX0VORElBTjt2YXIgeT10aGlzLmNyZWF0ZVNpbmdsZVNhbXBsZU1vb2YodSk7eS53cml0ZSh2KSx5LnRyYWZzWzBdLnRydW5zWzBdLmRhdGFfb2Zmc2V0PXkuc2l6ZSs4LHIuZGVidWcoIk1QNEJveCIsIkFkanVzdGluZyBkYXRhX29mZnNldCB3aXRoIG5ldyB2YWx1ZSAiK3kudHJhZnNbMF0udHJ1bnNbMF0uZGF0YV9vZmZzZXQpLHYuYWRqdXN0VWludDMyKHkudHJhZnNbMF0udHJ1bnNbMF0uZGF0YV9vZmZzZXRfcG9zaXRpb24seS50cmFmc1swXS50cnVuc1swXS5kYXRhX29mZnNldCk7dmFyIG09bmV3IG8ubWRhdEJveDtyZXR1cm4gbS5kYXRhPXUuZGF0YSxtLndyaXRlKHYpLHZ9LGMud3JpdGVJbml0aWFsaXphdGlvblNlZ21lbnQ9ZnVuY3Rpb24oZSx0LGksZil7dmFyIHU7ci5kZWJ1ZygiSVNPRmlsZSIsIkdlbmVyYXRpbmcgaW5pdGlhbGl6YXRpb24gc2VnbWVudCIpO3ZhciB2PW5ldyBzO3YuZW5kaWFubmVzcz1zLkJJR19FTkRJQU4sZS53cml0ZSh2KTt2YXIgeT10LmFkZCgibXZleCIpO2ZvcihpJiZ5LmFkZCgibWVoZCIpLnNldCgiZnJhZ21lbnRfZHVyYXRpb24iLGkpLHU9MDt1PHQudHJha3MubGVuZ3RoO3UrKyl5LmFkZCgidHJleCIpLnNldCgidHJhY2tfaWQiLHQudHJha3NbdV0udGtoZC50cmFja19pZCkuc2V0KCJkZWZhdWx0X3NhbXBsZV9kZXNjcmlwdGlvbl9pbmRleCIsMSkuc2V0KCJkZWZhdWx0X3NhbXBsZV9kdXJhdGlvbiIsZikuc2V0KCJkZWZhdWx0X3NhbXBsZV9zaXplIiwwKS5zZXQoImRlZmF1bHRfc2FtcGxlX2ZsYWdzIiw2NTUzNik7cmV0dXJuIHQud3JpdGUodiksdi5idWZmZXJ9LGMucHJvdG90eXBlLnNhdmU9ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IHM7dC5lbmRpYW5uZXNzPXMuQklHX0VORElBTix0aGlzLndyaXRlKHQpLHQuc2F2ZShlKX0sYy5wcm90b3R5cGUuZ2V0QnVmZmVyPWZ1bmN0aW9uKCl7dmFyIGU9bmV3IHM7cmV0dXJuIGUuZW5kaWFubmVzcz1zLkJJR19FTkRJQU4sdGhpcy53cml0ZShlKSxlLmJ1ZmZlcn0sYy5wcm90b3R5cGUuaW5pdGlhbGl6ZVNlZ21lbnRhdGlvbj1mdW5jdGlvbigpe3ZhciBlLHQsaSxmO2Zvcih0aGlzLm9uU2VnbWVudD09PW51bGwmJnIud2FybigiTVA0Qm94IiwiTm8gc2VnbWVudGF0aW9uIGNhbGxiYWNrIHNldCEiKSx0aGlzLmlzRnJhZ21lbnRhdGlvbkluaXRpYWxpemVkfHwodGhpcy5pc0ZyYWdtZW50YXRpb25Jbml0aWFsaXplZD0hMCx0aGlzLm5leHRNb29mTnVtYmVyPTAsdGhpcy5yZXNldFRhYmxlcygpKSx0PVtdLGU9MDtlPHRoaXMuZnJhZ21lbnRlZFRyYWNrcy5sZW5ndGg7ZSsrKXt2YXIgdT1uZXcgby5tb292Qm94O3UubXZoZD10aGlzLm1vb3YubXZoZCx1LmJveGVzLnB1c2godS5tdmhkKSxpPXRoaXMuZ2V0VHJhY2tCeUlkKHRoaXMuZnJhZ21lbnRlZFRyYWNrc1tlXS5pZCksdS5ib3hlcy5wdXNoKGkpLHUudHJha3MucHVzaChpKSxmPXt9LGYuaWQ9aS50a2hkLnRyYWNrX2lkLGYudXNlcj10aGlzLmZyYWdtZW50ZWRUcmFja3NbZV0udXNlcixmLmJ1ZmZlcj1jLndyaXRlSW5pdGlhbGl6YXRpb25TZWdtZW50KHRoaXMuZnR5cCx1LHRoaXMubW9vdi5tdmV4JiZ0aGlzLm1vb3YubXZleC5tZWhkP3RoaXMubW9vdi5tdmV4Lm1laGQuZnJhZ21lbnRfZHVyYXRpb246dm9pZCAwLHRoaXMubW9vdi50cmFrc1tlXS5zYW1wbGVzLmxlbmd0aD4wP3RoaXMubW9vdi50cmFrc1tlXS5zYW1wbGVzWzBdLmR1cmF0aW9uOjApLHQucHVzaChmKX1yZXR1cm4gdH0sby5Cb3gucHJvdG90eXBlLnByaW50SGVhZGVyPWZ1bmN0aW9uKGUpe3RoaXMuc2l6ZSs9OCx0aGlzLnNpemU+bCYmKHRoaXMuc2l6ZSs9OCksdGhpcy50eXBlPT09InV1aWQiJiYodGhpcy5zaXplKz0xNiksZS5sb2coZS5pbmRlbnQrInNpemU6Iit0aGlzLnNpemUpLGUubG9nKGUuaW5kZW50KyJ0eXBlOiIrdGhpcy50eXBlKX0sby5GdWxsQm94LnByb3RvdHlwZS5wcmludEhlYWRlcj1mdW5jdGlvbihlKXt0aGlzLnNpemUrPTQsby5Cb3gucHJvdG90eXBlLnByaW50SGVhZGVyLmNhbGwodGhpcyxlKSxlLmxvZyhlLmluZGVudCsidmVyc2lvbjoiK3RoaXMudmVyc2lvbiksZS5sb2coZS5pbmRlbnQrImZsYWdzOiIrdGhpcy5mbGFncyl9LG8uQm94LnByb3RvdHlwZS5wcmludD1mdW5jdGlvbihlKXt0aGlzLnByaW50SGVhZGVyKGUpfSxvLkNvbnRhaW5lckJveC5wcm90b3R5cGUucHJpbnQ9ZnVuY3Rpb24oZSl7dGhpcy5wcmludEhlYWRlcihlKTtmb3IodmFyIHQ9MDt0PHRoaXMuYm94ZXMubGVuZ3RoO3QrKylpZih0aGlzLmJveGVzW3RdKXt2YXIgaT1lLmluZGVudDtlLmluZGVudCs9IiAiLHRoaXMuYm94ZXNbdF0ucHJpbnQoZSksZS5pbmRlbnQ9aX19LGMucHJvdG90eXBlLnByaW50PWZ1bmN0aW9uKGUpe2UuaW5kZW50PSIiO2Zvcih2YXIgdD0wO3Q8dGhpcy5ib3hlcy5sZW5ndGg7dCsrKXRoaXMuYm94ZXNbdF0mJnRoaXMuYm94ZXNbdF0ucHJpbnQoZSl9LG8ubXZoZEJveC5wcm90b3R5cGUucHJpbnQ9ZnVuY3Rpb24oZSl7by5GdWxsQm94LnByb3RvdHlwZS5wcmludEhlYWRlci5jYWxsKHRoaXMsZSksZS5sb2coZS5pbmRlbnQrImNyZWF0aW9uX3RpbWU6ICIrdGhpcy5jcmVhdGlvbl90aW1lKSxlLmxvZyhlLmluZGVudCsibW9kaWZpY2F0aW9uX3RpbWU6ICIrdGhpcy5tb2RpZmljYXRpb25fdGltZSksZS5sb2coZS5pbmRlbnQrInRpbWVzY2FsZTogIit0aGlzLnRpbWVzY2FsZSksZS5sb2coZS5pbmRlbnQrImR1cmF0aW9uOiAiK3RoaXMuZHVyYXRpb24pLGUubG9nKGUuaW5kZW50KyJyYXRlOiAiK3RoaXMucmF0ZSksZS5sb2coZS5pbmRlbnQrInZvbHVtZTogIisodGhpcy52b2x1bWU+PjgpKSxlLmxvZyhlLmluZGVudCsibWF0cml4OiAiK3RoaXMubWF0cml4LmpvaW4oIiwgIikpLGUubG9nKGUuaW5kZW50KyJuZXh0X3RyYWNrX2lkOiAiK3RoaXMubmV4dF90cmFja19pZCl9LG8udGtoZEJveC5wcm90b3R5cGUucHJpbnQ9ZnVuY3Rpb24oZSl7by5GdWxsQm94LnByb3RvdHlwZS5wcmludEhlYWRlci5jYWxsKHRoaXMsZSksZS5sb2coZS5pbmRlbnQrImNyZWF0aW9uX3RpbWU6ICIrdGhpcy5jcmVhdGlvbl90aW1lKSxlLmxvZyhlLmluZGVudCsibW9kaWZpY2F0aW9uX3RpbWU6ICIrdGhpcy5tb2RpZmljYXRpb25fdGltZSksZS5sb2coZS5pbmRlbnQrInRyYWNrX2lkOiAiK3RoaXMudHJhY2tfaWQpLGUubG9nKGUuaW5kZW50KyJkdXJhdGlvbjogIit0aGlzLmR1cmF0aW9uKSxlLmxvZyhlLmluZGVudCsidm9sdW1lOiAiKyh0aGlzLnZvbHVtZT4+OCkpLGUubG9nKGUuaW5kZW50KyJtYXRyaXg6ICIrdGhpcy5tYXRyaXguam9pbigiLCAiKSksZS5sb2coZS5pbmRlbnQrImxheWVyOiAiK3RoaXMubGF5ZXIpLGUubG9nKGUuaW5kZW50KyJhbHRlcm5hdGVfZ3JvdXA6ICIrdGhpcy5hbHRlcm5hdGVfZ3JvdXApLGUubG9nKGUuaW5kZW50KyJ3aWR0aDogIit0aGlzLndpZHRoKSxlLmxvZyhlLmluZGVudCsiaGVpZ2h0OiAiK3RoaXMuaGVpZ2h0KX07dmFyIGc9e307Zy5jcmVhdGVGaWxlPWZ1bmN0aW9uKGUsdCl7dmFyIGk9ZSE9PXZvaWQgMD9lOiEwLGY9bmV3IGModCk7cmV0dXJuIGYuZGlzY2FyZE1kYXREYXRhPSFpLGZ9LG4uY3JlYXRlRmlsZT1nLmNyZWF0ZUZpbGV9KShQZSk7dmFyIHRyPVZ0KFBlKSxqdD17ZXhwb3J0czp7fX07KGZ1bmN0aW9uKG4pe3ZhciByPXt9O24uZXhwb3J0cz1yLHIucGFyc2U9ZnVuY3Rpb24oYSxzKXtmb3IodmFyIGw9ci5iaW4ucmVhZFVzaG9ydCxkPXIuYmluLnJlYWRVaW50LHA9MCxoPXt9LG89bmV3IFVpbnQ4QXJyYXkoYSksXz1vLmxlbmd0aC00O2QobyxfKSE9MTAxMDEwMjU2OylfLS07dmFyIHA9XztwKz00LHArPTQ7dmFyIGM9bChvLHApO3ArPTIsbChvLHApLHArPTI7dmFyIGc9ZChvLHApO3ArPTQ7dmFyIGU9ZChvLHApO3ArPTQscD1lO2Zvcih2YXIgdD0wO3Q8Yzt0Kyspe2QobyxwKSxwKz00LHArPTQscCs9NCxwKz00LGQobyxwKSxwKz00O3ZhciBnPWQobyxwKTtwKz00O3ZhciBpPWQobyxwKTtwKz00O3ZhciBmPWwobyxwKSx1PWwobyxwKzIpLHY9bChvLHArNCk7cCs9NixwKz04O3ZhciB5PWQobyxwKTtwKz00LHArPWYrdSt2LHIuX3JlYWRMb2NhbChvLHksaCxnLGkscyl9cmV0dXJuIGh9LHIuX3JlYWRMb2NhbD1mdW5jdGlvbihhLHMsbCxkLGgsbyl7dmFyIF89ci5iaW4ucmVhZFVzaG9ydCxwPXIuYmluLnJlYWRVaW50O3AoYSxzKSxzKz00LF8oYSxzKSxzKz0yLF8oYSxzKSxzKz0yO3ZhciBjPV8oYSxzKTtzKz0yLHAoYSxzKSxzKz00LHAoYSxzKSxzKz00LHMrPTg7dmFyIGc9XyhhLHMpO3MrPTI7dmFyIGU9XyhhLHMpO3MrPTI7dmFyIHQ9ci5iaW4ucmVhZFVURjgoYSxzLGcpO2lmKHMrPWcscys9ZSxvKXtsW3RdPXtzaXplOmgsY3NpemU6ZH07cmV0dXJufXZhciBpPW5ldyBVaW50OEFycmF5KGEuYnVmZmVyLHMpO2lmKGM9PTApbFt0XT1uZXcgVWludDhBcnJheShpLmJ1ZmZlci5zbGljZShzLHMrZCkpO2Vsc2UgaWYoYz09OCl7dmFyIGY9bmV3IFVpbnQ4QXJyYXkoaCk7ci5pbmZsYXRlUmF3KGksZiksbFt0XT1mfWVsc2UgdGhyb3cidW5rbm93biBjb21wcmVzc2lvbiBtZXRob2Q6ICIrY30sci5pbmZsYXRlUmF3PWZ1bmN0aW9uKGEscyl7cmV0dXJuIHIuRi5pbmZsYXRlKGEscyl9LHIuaW5mbGF0ZT1mdW5jdGlvbihhLHMpe3JldHVybiBhWzBdLGFbMV0sci5pbmZsYXRlUmF3KG5ldyBVaW50OEFycmF5KGEuYnVmZmVyLGEuYnl0ZU9mZnNldCsyLGEubGVuZ3RoLTYpLHMpfSxyLmRlZmxhdGU9ZnVuY3Rpb24oYSxzKXtzPT1udWxsJiYocz17bGV2ZWw6Nn0pO3ZhciBsPTAsZD1uZXcgVWludDhBcnJheSg1MCtNYXRoLmZsb29yKGEubGVuZ3RoKjEuMSkpO2RbbF09MTIwLGRbbCsxXT0xNTYsbCs9MixsPXIuRi5kZWZsYXRlUmF3KGEsZCxsLHMubGV2ZWwpO3ZhciBoPXIuYWRsZXIoYSwwLGEubGVuZ3RoKTtyZXR1cm4gZFtsKzBdPWg+Pj4yNCYyNTUsZFtsKzFdPWg+Pj4xNiYyNTUsZFtsKzJdPWg+Pj44JjI1NSxkW2wrM109aD4+PjAmMjU1LG5ldyBVaW50OEFycmF5KGQuYnVmZmVyLDAsbCs0KX0sci5kZWZsYXRlUmF3PWZ1bmN0aW9uKGEscyl7cz09bnVsbCYmKHM9e2xldmVsOjZ9KTt2YXIgbD1uZXcgVWludDhBcnJheSg1MCtNYXRoLmZsb29yKGEubGVuZ3RoKjEuMSkpLGQ9ci5GLmRlZmxhdGVSYXcoYSxsLGQscy5sZXZlbCk7cmV0dXJuIG5ldyBVaW50OEFycmF5KGwuYnVmZmVyLDAsZCl9LHIuZW5jb2RlPWZ1bmN0aW9uKGEscyl7cz09bnVsbCYmKHM9ITEpO3ZhciBsPTAsZD1yLmJpbi53cml0ZVVpbnQsaD1yLmJpbi53cml0ZVVzaG9ydCxvPXt9O2Zvcih2YXIgXyBpbiBhKXt2YXIgcD0hci5fbm9OZWVkKF8pJiYhcyxjPWFbX10sZz1yLmNyYy5jcmMoYywwLGMubGVuZ3RoKTtvW19dPXtjcHI6cCx1c2l6ZTpjLmxlbmd0aCxjcmM6ZyxmaWxlOnA/ci5kZWZsYXRlUmF3KGMpOmN9fWZvcih2YXIgXyBpbiBvKWwrPW9bX10uZmlsZS5sZW5ndGgrMzArNDYrMipyLmJpbi5zaXplVVRGOChfKTtsKz0yMjt2YXIgZT1uZXcgVWludDhBcnJheShsKSx0PTAsaT1bXTtmb3IodmFyIF8gaW4gbyl7dmFyIGY9b1tfXTtpLnB1c2godCksdD1yLl93cml0ZUhlYWRlcihlLHQsXyxmLDApfXZhciB1PTAsdj10O2Zvcih2YXIgXyBpbiBvKXt2YXIgZj1vW19dO2kucHVzaCh0KSx0PXIuX3dyaXRlSGVhZGVyKGUsdCxfLGYsMSxpW3UrK10pfXZhciB5PXQtdjtyZXR1cm4gZChlLHQsMTAxMDEwMjU2KSx0Kz00LHQrPTQsaChlLHQsdSksdCs9MixoKGUsdCx1KSx0Kz0yLGQoZSx0LHkpLHQrPTQsZChlLHQsdiksdCs9NCx0Kz0yLGUuYnVmZmVyfSxyLl9ub05lZWQ9ZnVuY3Rpb24oYSl7dmFyIHM9YS5zcGxpdCgiLiIpLnBvcCgpLnRvTG93ZXJDYXNlKCk7cmV0dXJuInBuZyxqcGcsanBlZyx6aXAiLmluZGV4T2YocykhPS0xfSxyLl93cml0ZUhlYWRlcj1mdW5jdGlvbihhLHMsbCxkLGgsbyl7dmFyIF89ci5iaW4ud3JpdGVVaW50LHA9ci5iaW4ud3JpdGVVc2hvcnQsYz1kLmZpbGU7XyhhLHMsaD09MD82NzMyNDc1MjozMzYzOTI0OCkscys9NCxoPT0xJiYocys9MikscChhLHMsMjApLHMrPTIscChhLHMsMCkscys9MixwKGEscyxkLmNwcj84OjApLHMrPTIsXyhhLHMsMCkscys9NCxfKGEscyxkLmNyYykscys9NCxfKGEscyxjLmxlbmd0aCkscys9NCxfKGEscyxkLnVzaXplKSxzKz00LHAoYSxzLHIuYmluLnNpemVVVEY4KGwpKSxzKz0yLHAoYSxzLDApLHMrPTIsaD09MSYmKHMrPTIscys9MixzKz02LF8oYSxzLG8pLHMrPTQpO3ZhciBnPXIuYmluLndyaXRlVVRGOChhLHMsbCk7cmV0dXJuIHMrPWcsaD09MCYmKGEuc2V0KGMscykscys9Yy5sZW5ndGgpLHN9LHIuY3JjPXt0YWJsZTpmdW5jdGlvbigpe2Zvcih2YXIgYT1uZXcgVWludDMyQXJyYXkoMjU2KSxzPTA7czwyNTY7cysrKXtmb3IodmFyIGw9cyxkPTA7ZDw4O2QrKylsJjE/bD0zOTg4MjkyMzg0Xmw+Pj4xOmw9bD4+PjE7YVtzXT1sfXJldHVybiBhfSgpLHVwZGF0ZTpmdW5jdGlvbihhLHMsbCxkKXtmb3IodmFyIGg9MDtoPGQ7aCsrKWE9ci5jcmMudGFibGVbKGFec1tsK2hdKSYyNTVdXmE+Pj44O3JldHVybiBhfSxjcmM6ZnVuY3Rpb24oYSxzLGwpe3JldHVybiByLmNyYy51cGRhdGUoNDI5NDk2NzI5NSxhLHMsbCleNDI5NDk2NzI5NX19LHIuYWRsZXI9ZnVuY3Rpb24oYSxzLGwpe2Zvcih2YXIgZD0xLGg9MCxvPXMsXz1zK2w7bzxfOyl7Zm9yKHZhciBwPU1hdGgubWluKG8rNTU1MixfKTtvPHA7KWQrPWFbbysrXSxoKz1kO2Q9ZCU2NTUyMSxoPWglNjU1MjF9cmV0dXJuIGg8PDE2fGR9LHIuYmluPXtyZWFkVXNob3J0OmZ1bmN0aW9uKGEscyl7cmV0dXJuIGFbc118YVtzKzFdPDw4fSx3cml0ZVVzaG9ydDpmdW5jdGlvbihhLHMsbCl7YVtzXT1sJjI1NSxhW3MrMV09bD4+OCYyNTV9LHJlYWRVaW50OmZ1bmN0aW9uKGEscyl7cmV0dXJuIGFbcyszXSooMjU2KjI1NioyNTYpKyhhW3MrMl08PDE2fGFbcysxXTw8OHxhW3NdKX0sd3JpdGVVaW50OmZ1bmN0aW9uKGEscyxsKXthW3NdPWwmMjU1LGFbcysxXT1sPj44JjI1NSxhW3MrMl09bD4+MTYmMjU1LGFbcyszXT1sPj4yNCYyNTV9LHJlYWRBU0NJSTpmdW5jdGlvbihhLHMsbCl7Zm9yKHZhciBkPSIiLGg9MDtoPGw7aCsrKWQrPVN0cmluZy5mcm9tQ2hhckNvZGUoYVtzK2hdKTtyZXR1cm4gZH0sd3JpdGVBU0NJSTpmdW5jdGlvbihhLHMsbCl7Zm9yKHZhciBkPTA7ZDxsLmxlbmd0aDtkKyspYVtzK2RdPWwuY2hhckNvZGVBdChkKX0scGFkOmZ1bmN0aW9uKGEpe3JldHVybiBhLmxlbmd0aDwyPyIwIithOmF9LHJlYWRVVEY4OmZ1bmN0aW9uKGEscyxsKXtmb3IodmFyIGQ9IiIsaCxvPTA7bzxsO28rKylkKz0iJSIrci5iaW4ucGFkKGFbcytvXS50b1N0cmluZygxNikpO3RyeXtoPWRlY29kZVVSSUNvbXBvbmVudChkKX1jYXRjaHtyZXR1cm4gci5iaW4ucmVhZEFTQ0lJKGEscyxsKX1yZXR1cm4gaH0sd3JpdGVVVEY4OmZ1bmN0aW9uKGEscyxsKXtmb3IodmFyIGQ9bC5sZW5ndGgsaD0wLG89MDtvPGQ7bysrKXt2YXIgXz1sLmNoYXJDb2RlQXQobyk7aWYoIShfJjQyOTQ5NjcxNjgpKWFbcytoXT1fLGgrKztlbHNlIGlmKCEoXyY0Mjk0OTY1MjQ4KSlhW3MraF09MTkyfF8+PjYsYVtzK2grMV09MTI4fF8+PjAmNjMsaCs9MjtlbHNlIGlmKCEoXyY0Mjk0OTAxNzYwKSlhW3MraF09MjI0fF8+PjEyLGFbcytoKzFdPTEyOHxfPj42JjYzLGFbcytoKzJdPTEyOHxfPj4wJjYzLGgrPTM7ZWxzZSBpZighKF8mNDI5NDk2NzI5NS0oMTw8MjEpKzEpKWFbcytoXT0yNDB8Xz4+MTgsYVtzK2grMV09MTI4fF8+PjEyJjYzLGFbcytoKzJdPTEyOHxfPj42JjYzLGFbcytoKzNdPTEyOHxfPj4wJjYzLGgrPTQ7ZWxzZSB0aHJvdyJlIn1yZXR1cm4gaH0sc2l6ZVVURjg6ZnVuY3Rpb24oYSl7Zm9yKHZhciBzPWEubGVuZ3RoLGw9MCxkPTA7ZDxzO2QrKyl7dmFyIGg9YS5jaGFyQ29kZUF0KGQpO2lmKCEoaCY0Mjk0OTY3MTY4KSlsKys7ZWxzZSBpZighKGgmNDI5NDk2NTI0OCkpbCs9MjtlbHNlIGlmKCEoaCY0Mjk0OTAxNzYwKSlsKz0zO2Vsc2UgaWYoIShoJjQyOTQ5NjcyOTUtKDE8PDIxKSsxKSlsKz00O2Vsc2UgdGhyb3ciZSJ9cmV0dXJuIGx9fSxyLkY9e30sci5GLmRlZmxhdGVSYXc9ZnVuY3Rpb24oYSxzLGwsZCl7dmFyIGg9W1swLDAsMCwwLDBdLFs0LDQsOCw0LDBdLFs0LDUsMTYsOCwwXSxbNCw2LDE2LDE2LDBdLFs0LDEwLDE2LDMyLDBdLFs4LDE2LDMyLDMyLDBdLFs4LDE2LDEyOCwxMjgsMF0sWzgsMzIsMTI4LDI1NiwwXSxbMzIsMTI4LDI1OCwxMDI0LDFdLFszMiwyNTgsMjU4LDQwOTYsMV1dLG89aFtkXSxfPXIuRi5VLHA9ci5GLl9nb29kSW5kZXg7ci5GLl9oYXNoO3ZhciBjPXIuRi5fcHV0c0UsZz0wLGU9bDw8Myx0PTAsaT1hLmxlbmd0aDtpZihkPT0wKXtmb3IoO2c8aTspe3ZhciBmPU1hdGgubWluKDY1NTM1LGktZyk7YyhzLGUsZytmPT1pPzE6MCksZT1yLkYuX2NvcHlFeGFjdChhLGcsZixzLGUrOCksZys9Zn1yZXR1cm4gZT4+PjN9dmFyIHU9Xy5saXRzLHY9Xy5zdHJ0LHk9Xy5wcmV2LG09MCxiPTAseD0wLFM9MCxVPTAsRT0wO2ZvcihpPjImJihFPXIuRi5faGFzaChhLDApLHZbRV09MCksZz0wO2c8aTtnKyspe2lmKFU9RSxnKzE8aS0yKXtFPXIuRi5faGFzaChhLGcrMSk7dmFyIHc9ZysxJjMyNzY3O3lbd109dltFXSx2W0VdPXd9aWYodDw9Zyl7KG0+MTRlM3x8Yj4yNjY5NykmJmktZz4xMDAmJih0PGcmJih1W21dPWctdCxtKz0yLHQ9ZyksZT1yLkYuX3dyaXRlQmxvY2soZz09aS0xfHx0PT1pPzE6MCx1LG0sUyxhLHgsZy14LHMsZSksbT1iPVM9MCx4PWcpO3ZhciBBPTA7ZzxpLTImJihBPXIuRi5fYmVzdE1hdGNoKGEsZyx5LFUsTWF0aC5taW4ob1syXSxpLWcpLG9bM10pKTt2YXIgZj1BPj4+MTYsST1BJjY1NTM1O2lmKEEhPTApe3ZhciBmPUE+Pj4xNixJPUEmNjU1MzUsRj1wKGYsXy5vZjApO18ubGhzdFsyNTcrRl0rKzt2YXIgUD1wKEksXy5kZjApO18uZGhzdFtQXSsrLFMrPV8uZXhiW0ZdK18uZHhiW1BdLHVbbV09Zjw8MjN8Zy10LHVbbSsxXT1JPDwxNnxGPDw4fFAsbSs9Mix0PWcrZn1lbHNlIF8ubGhzdFthW2ddXSsrO2IrK319Zm9yKCh4IT1nfHxhLmxlbmd0aD09MCkmJih0PGcmJih1W21dPWctdCxtKz0yLHQ9ZyksZT1yLkYuX3dyaXRlQmxvY2soMSx1LG0sUyxhLHgsZy14LHMsZSksbT0wLGI9MCxtPWI9Uz0wLHg9Zyk7ZSY3OyllKys7cmV0dXJuIGU+Pj4zfSxyLkYuX2Jlc3RNYXRjaD1mdW5jdGlvbihhLHMsbCxkLGgsbyl7dmFyIF89cyYzMjc2NyxwPWxbX10sYz1fLXArMzI3NjgmMzI3Njc7aWYocD09X3x8ZCE9ci5GLl9oYXNoKGEscy1jKSlyZXR1cm4gMDtmb3IodmFyIGc9MCxlPTAsdD1NYXRoLm1pbigzMjc2NyxzKTtjPD10JiYtLW8hPTAmJnAhPV87KXtpZihnPT0wfHxhW3MrZ109PWFbcytnLWNdKXt2YXIgaT1yLkYuX2hvd0xvbmcoYSxzLGMpO2lmKGk+Zyl7aWYoZz1pLGU9YyxnPj1oKWJyZWFrO2MrMjxpJiYoaT1jKzIpO2Zvcih2YXIgZj0wLHU9MDt1PGktMjt1Kyspe3ZhciB2PXMtYyt1KzMyNzY4JjMyNzY3LHk9bFt2XSxtPXYteSszMjc2OCYzMjc2NzttPmYmJihmPW0scD12KX19fV89cCxwPWxbX10sYys9Xy1wKzMyNzY4JjMyNzY3fXJldHVybiBnPDwxNnxlfSxyLkYuX2hvd0xvbmc9ZnVuY3Rpb24oYSxzLGwpe2lmKGFbc10hPWFbcy1sXXx8YVtzKzFdIT1hW3MrMS1sXXx8YVtzKzJdIT1hW3MrMi1sXSlyZXR1cm4gMDt2YXIgZD1zLGg9TWF0aC5taW4oYS5sZW5ndGgscysyNTgpO2ZvcihzKz0zO3M8aCYmYVtzXT09YVtzLWxdOylzKys7cmV0dXJuIHMtZH0sci5GLl9oYXNoPWZ1bmN0aW9uKGEscyl7cmV0dXJuKGFbc108PDh8YVtzKzFdKSsoYVtzKzJdPDw0KSY2NTUzNX0sci5zYXZlZD0wLHIuRi5fd3JpdGVCbG9jaz1mdW5jdGlvbihhLHMsbCxkLGgsbyxfLHAsYyl7dmFyIGc9ci5GLlUsZT1yLkYuX3B1dHNGLHQ9ci5GLl9wdXRzRSxpLGYsdSx2LHksbSxiLHgsUztnLmxoc3RbMjU2XSsrLGk9ci5GLmdldFRyZWVzKCksZj1pWzBdLHU9aVsxXSx2PWlbMl0seT1pWzNdLG09aVs0XSxiPWlbNV0seD1pWzZdLFM9aVs3XTt2YXIgVT0oYyszJjc/OC0oYyszJjcpOjApKzMyKyhfPDwzKSxFPWQrci5GLmNvbnRTaXplKGcuZmx0cmVlLGcubGhzdCkrci5GLmNvbnRTaXplKGcuZmR0cmVlLGcuZGhzdCksdz1kK3IuRi5jb250U2l6ZShnLmx0cmVlLGcubGhzdCkrci5GLmNvbnRTaXplKGcuZHRyZWUsZy5kaHN0KTt3Kz0xNCszKmIrci5GLmNvbnRTaXplKGcuaXRyZWUsZy5paHN0KSsoZy5paHN0WzE2XSoyK2cuaWhzdFsxN10qMytnLmloc3RbMThdKjcpO2Zvcih2YXIgQT0wO0E8Mjg2O0ErKylnLmxoc3RbQV09MDtmb3IodmFyIEE9MDtBPDMwO0ErKylnLmRoc3RbQV09MDtmb3IodmFyIEE9MDtBPDE5O0ErKylnLmloc3RbQV09MDt2YXIgST1VPEUmJlU8dz8wOkU8dz8xOjI7aWYoZShwLGMsYSksZShwLGMrMSxJKSxjKz0zLEk9PTApe2Zvcig7YyY3OyljKys7Yz1yLkYuX2NvcHlFeGFjdChoLG8sXyxwLGMpfWVsc2V7dmFyIEYsUDtpZihJPT0xJiYoRj1nLmZsdHJlZSxQPWcuZmR0cmVlKSxJPT0yKXtyLkYubWFrZUNvZGVzKGcubHRyZWUsZiksci5GLnJldkNvZGVzKGcubHRyZWUsZiksci5GLm1ha2VDb2RlcyhnLmR0cmVlLHUpLHIuRi5yZXZDb2RlcyhnLmR0cmVlLHUpLHIuRi5tYWtlQ29kZXMoZy5pdHJlZSx2KSxyLkYucmV2Q29kZXMoZy5pdHJlZSx2KSxGPWcubHRyZWUsUD1nLmR0cmVlLHQocCxjLHktMjU3KSxjKz01LHQocCxjLG0tMSksYys9NSx0KHAsYyxiLTQpLGMrPTQ7Zm9yKHZhciBEPTA7RDxiO0QrKyl0KHAsYytEKjMsZy5pdHJlZVsoZy5vcmRyW0RdPDwxKSsxXSk7Yys9MypiLGM9ci5GLl9jb2RlVGlueSh4LGcuaXRyZWUscCxjKSxjPXIuRi5fY29kZVRpbnkoUyxnLml0cmVlLHAsYyl9Zm9yKHZhciBrPW8sTj0wO048bDtOKz0yKXtmb3IodmFyIE09c1tOXSxxPU0+Pj4yMyxHPWsrKE0mKDE8PDIzKS0xKTtrPEc7KWM9ci5GLl93cml0ZUxpdChoW2srK10sRixwLGMpO2lmKHEhPTApe3ZhciBZPXNbTisxXSxUPVk+PjE2LGdlPVk+PjgmMjU1LHJlPVkmMjU1O2M9ci5GLl93cml0ZUxpdCgyNTcrZ2UsRixwLGMpLHQocCxjLHEtZy5vZjBbZ2VdKSxjKz1nLmV4YltnZV0sYz1yLkYuX3dyaXRlTGl0KHJlLFAscCxjKSxlKHAsYyxULWcuZGYwW3JlXSksYys9Zy5keGJbcmVdLGsrPXF9fWM9ci5GLl93cml0ZUxpdCgyNTYsRixwLGMpfXJldHVybiBjfSxyLkYuX2NvcHlFeGFjdD1mdW5jdGlvbihhLHMsbCxkLGgpe3ZhciBvPWg+Pj4zO3JldHVybiBkW29dPWwsZFtvKzFdPWw+Pj44LGRbbysyXT0yNTUtZFtvXSxkW28rM109MjU1LWRbbysxXSxvKz00LGQuc2V0KG5ldyBVaW50OEFycmF5KGEuYnVmZmVyLHMsbCksbyksaCsobCs0PDwzKX0sci5GLmdldFRyZWVzPWZ1bmN0aW9uKCl7Zm9yKHZhciBhPXIuRi5VLHM9ci5GLl9odWZUcmVlKGEubGhzdCxhLmx0cmVlLDE1KSxsPXIuRi5faHVmVHJlZShhLmRoc3QsYS5kdHJlZSwxNSksZD1bXSxoPXIuRi5fbGVuQ29kZXMoYS5sdHJlZSxkKSxvPVtdLF89ci5GLl9sZW5Db2RlcyhhLmR0cmVlLG8pLHA9MDtwPGQubGVuZ3RoO3ArPTIpYS5paHN0W2RbcF1dKys7Zm9yKHZhciBwPTA7cDxvLmxlbmd0aDtwKz0yKWEuaWhzdFtvW3BdXSsrO2Zvcih2YXIgYz1yLkYuX2h1ZlRyZWUoYS5paHN0LGEuaXRyZWUsNyksZz0xOTtnPjQmJmEuaXRyZWVbKGEub3JkcltnLTFdPDwxKSsxXT09MDspZy0tO3JldHVybltzLGwsYyxoLF8sZyxkLG9dfSxyLkYuZ2V0U2Vjb25kPWZ1bmN0aW9uKGEpe2Zvcih2YXIgcz1bXSxsPTA7bDxhLmxlbmd0aDtsKz0yKXMucHVzaChhW2wrMV0pO3JldHVybiBzfSxyLkYubm9uWmVybz1mdW5jdGlvbihhKXtmb3IodmFyIHM9IiIsbD0wO2w8YS5sZW5ndGg7bCs9MilhW2wrMV0hPTAmJihzKz0obD4+MSkrIiwiKTtyZXR1cm4gc30sci5GLmNvbnRTaXplPWZ1bmN0aW9uKGEscyl7Zm9yKHZhciBsPTAsZD0wO2Q8cy5sZW5ndGg7ZCsrKWwrPXNbZF0qYVsoZDw8MSkrMV07cmV0dXJuIGx9LHIuRi5fY29kZVRpbnk9ZnVuY3Rpb24oYSxzLGwsZCl7Zm9yKHZhciBoPTA7aDxhLmxlbmd0aDtoKz0yKXt2YXIgbz1hW2hdLF89YVtoKzFdO2Q9ci5GLl93cml0ZUxpdChvLHMsbCxkKTt2YXIgcD1vPT0xNj8yOm89PTE3PzM6NztvPjE1JiYoci5GLl9wdXRzRShsLGQsXyxwKSxkKz1wKX1yZXR1cm4gZH0sci5GLl9sZW5Db2Rlcz1mdW5jdGlvbihhLHMpe2Zvcih2YXIgbD1hLmxlbmd0aDtsIT0yJiZhW2wtMV09PTA7KWwtPTI7Zm9yKHZhciBkPTA7ZDxsO2QrPTIpe3ZhciBoPWFbZCsxXSxvPWQrMzxsP2FbZCszXTotMSxfPWQrNTxsP2FbZCs1XTotMSxwPWQ9PTA/LTE6YVtkLTFdO2lmKGg9PTAmJm89PWgmJl89PWgpe2Zvcih2YXIgYz1kKzU7YysyPGwmJmFbYysyXT09aDspYys9Mjt2YXIgZz1NYXRoLm1pbihjKzEtZD4+PjEsMTM4KTtnPDExP3MucHVzaCgxNyxnLTMpOnMucHVzaCgxOCxnLTExKSxkKz1nKjItMn1lbHNlIGlmKGg9PXAmJm89PWgmJl89PWgpe2Zvcih2YXIgYz1kKzU7YysyPGwmJmFbYysyXT09aDspYys9Mjt2YXIgZz1NYXRoLm1pbihjKzEtZD4+PjEsNik7cy5wdXNoKDE2LGctMyksZCs9ZyoyLTJ9ZWxzZSBzLnB1c2goaCwwKX1yZXR1cm4gbD4+PjF9LHIuRi5faHVmVHJlZT1mdW5jdGlvbihhLHMsbCl7dmFyIGQ9W10saD1hLmxlbmd0aCxvPXMubGVuZ3RoLF89MDtmb3IoXz0wO188bztfKz0yKXNbX109MCxzW18rMV09MDtmb3IoXz0wO188aDtfKyspYVtfXSE9MCYmZC5wdXNoKHtsaXQ6XyxmOmFbX119KTt2YXIgcD1kLmxlbmd0aCxjPWQuc2xpY2UoMCk7aWYocD09MClyZXR1cm4gMDtpZihwPT0xKXt2YXIgZz1kWzBdLmxpdCxjPWc9PTA/MTowO3JldHVybiBzWyhnPDwxKSsxXT0xLHNbKGM8PDEpKzFdPTEsMX1kLnNvcnQoZnVuY3Rpb24oeSxtKXtyZXR1cm4geS5mLW0uZn0pO3ZhciBlPWRbMF0sdD1kWzFdLGk9MCxmPTEsdT0yO2ZvcihkWzBdPXtsaXQ6LTEsZjplLmYrdC5mLGw6ZSxyOnQsZDowfTtmIT1wLTE7KWkhPWYmJih1PT1wfHxkW2ldLmY8ZFt1XS5mKT9lPWRbaSsrXTplPWRbdSsrXSxpIT1mJiYodT09cHx8ZFtpXS5mPGRbdV0uZik/dD1kW2krK106dD1kW3UrK10sZFtmKytdPXtsaXQ6LTEsZjplLmYrdC5mLGw6ZSxyOnR9O3ZhciB2PXIuRi5zZXREZXB0aChkW2YtMV0sMCk7Zm9yKHY+bCYmKHIuRi5yZXN0cmljdERlcHRoKGMsbCx2KSx2PWwpLF89MDtfPHA7XysrKXNbKGNbX10ubGl0PDwxKSsxXT1jW19dLmQ7cmV0dXJuIHZ9LHIuRi5zZXREZXB0aD1mdW5jdGlvbihhLHMpe3JldHVybiBhLmxpdCE9LTE/KGEuZD1zLHMpOk1hdGgubWF4KHIuRi5zZXREZXB0aChhLmwscysxKSxyLkYuc2V0RGVwdGgoYS5yLHMrMSkpfSxyLkYucmVzdHJpY3REZXB0aD1mdW5jdGlvbihhLHMsbCl7dmFyIGQ9MCxoPTE8PGwtcyxvPTA7Zm9yKGEuc29ydChmdW5jdGlvbihwLGMpe3JldHVybiBjLmQ9PXAuZD9wLmYtYy5mOmMuZC1wLmR9KSxkPTA7ZDxhLmxlbmd0aCYmYVtkXS5kPnM7ZCsrKXt2YXIgXz1hW2RdLmQ7YVtkXS5kPXMsbys9aC0oMTw8bC1fKX1mb3Iobz1vPj4+bC1zO28+MDspe3ZhciBfPWFbZF0uZDtfPHM/KGFbZF0uZCsrLG8tPTE8PHMtXy0xKTpkKyt9Zm9yKDtkPj0wO2QtLSlhW2RdLmQ9PXMmJm88MCYmKGFbZF0uZC0tLG8rKyk7byE9MCYmY29uc29sZS5sb2coImRlYnQgbGVmdCIpfSxyLkYuX2dvb2RJbmRleD1mdW5jdGlvbihhLHMpe3ZhciBsPTA7cmV0dXJuIHNbbHwxNl08PWEmJihsfD0xNiksc1tsfDhdPD1hJiYobHw9OCksc1tsfDRdPD1hJiYobHw9NCksc1tsfDJdPD1hJiYobHw9Miksc1tsfDFdPD1hJiYobHw9MSksbH0sci5GLl93cml0ZUxpdD1mdW5jdGlvbihhLHMsbCxkKXtyZXR1cm4gci5GLl9wdXRzRihsLGQsc1thPDwxXSksZCtzWyhhPDwxKSsxXX0sci5GLmluZmxhdGU9ZnVuY3Rpb24oYSxzKXt2YXIgbD1VaW50OEFycmF5O2lmKGFbMF09PTMmJmFbMV09PTApcmV0dXJuIHN8fG5ldyBsKDApO3ZhciBkPXIuRixoPWQuX2JpdHNGLG89ZC5fYml0c0UsXz1kLl9kZWNvZGVUaW55LHA9ZC5tYWtlQ29kZXMsYz1kLmNvZGVzMm1hcCxnPWQuX2dldDE3LGU9ZC5VLHQ9cz09bnVsbDt0JiYocz1uZXcgbChhLmxlbmd0aD4+PjI8PDMpKTtmb3IodmFyIGk9MCxmPTAsdT0wLHY9MCx5PTAsbT0wLGI9MCx4PTAsUz0wLFUsRTtpPT0wOyl7aWYoaT1oKGEsUywxKSxmPWgoYSxTKzEsMiksUys9MyxmPT0wKXtTJjcmJihTKz04LShTJjcpKTt2YXIgdz0oUz4+PjMpKzQsQT1hW3ctNF18YVt3LTNdPDw4O3QmJihzPXIuRi5fY2hlY2socyx4K0EpKSxzLnNldChuZXcgbChhLmJ1ZmZlcixhLmJ5dGVPZmZzZXQrdyxBKSx4KSxTPXcrQTw8Myx4Kz1BO2NvbnRpbnVlfWlmKHQmJihzPXIuRi5fY2hlY2socyx4KygxPDwxNykpKSxmPT0xJiYoVT1lLmZsbWFwLEU9ZS5mZG1hcCxtPTUxMSxiPTMxKSxmPT0yKXt1PW8oYSxTLDUpKzI1Nyx2PW8oYSxTKzUsNSkrMSx5PW8oYSxTKzEwLDQpKzQsUys9MTQ7Zm9yKHZhciBJPTA7STwzODtJKz0yKWUuaXRyZWVbSV09MCxlLml0cmVlW0krMV09MDtmb3IodmFyIEY9MSxJPTA7STx5O0krKyl7dmFyIFA9byhhLFMrSSozLDMpO2UuaXRyZWVbKGUub3JkcltJXTw8MSkrMV09UCxQPkYmJihGPVApfVMrPTMqeSxwKGUuaXRyZWUsRiksYyhlLml0cmVlLEYsZS5pbWFwKSxVPWUubG1hcCxFPWUuZG1hcCxTPV8oZS5pbWFwLCgxPDxGKS0xLHUrdixhLFMsZS50dHJlZSk7dmFyIEQ9ZC5fY29weU91dChlLnR0cmVlLDAsdSxlLmx0cmVlKTttPSgxPDxEKS0xO3ZhciBrPWQuX2NvcHlPdXQoZS50dHJlZSx1LHYsZS5kdHJlZSk7Yj0oMTw8ayktMSxwKGUubHRyZWUsRCksYyhlLmx0cmVlLEQsVSkscChlLmR0cmVlLGspLGMoZS5kdHJlZSxrLEUpfWZvcig7Oyl7dmFyIE49VVtnKGEsUykmbV07Uys9TiYxNTt2YXIgTT1OPj4+NDtpZighKE0+Pj44KSlzW3grK109TTtlbHNle2lmKE09PTI1NilicmVhazt2YXIgcT14K00tMjU0O2lmKE0+MjY0KXt2YXIgRz1lLmxkZWZbTS0yNTddO3E9eCsoRz4+PjMpK28oYSxTLEcmNyksUys9RyY3fXZhciBZPUVbZyhhLFMpJmJdO1MrPVkmMTU7dmFyIFQ9WT4+PjQsZ2U9ZS5kZGVmW1RdLHJlPShnZT4+PjQpK2goYSxTLGdlJjE1KTtmb3IoUys9Z2UmMTUsdCYmKHM9ci5GLl9jaGVjayhzLHgrKDE8PDE3KSkpO3g8cTspc1t4XT1zW3grKy1yZV0sc1t4XT1zW3grKy1yZV0sc1t4XT1zW3grKy1yZV0sc1t4XT1zW3grKy1yZV07eD1xfX19cmV0dXJuIHMubGVuZ3RoPT14P3M6cy5zbGljZSgwLHgpfSxyLkYuX2NoZWNrPWZ1bmN0aW9uKGEscyl7dmFyIGw9YS5sZW5ndGg7aWYoczw9bClyZXR1cm4gYTt2YXIgZD1uZXcgVWludDhBcnJheShNYXRoLm1heChsPDwxLHMpKTtyZXR1cm4gZC5zZXQoYSwwKSxkfSxyLkYuX2RlY29kZVRpbnk9ZnVuY3Rpb24oYSxzLGwsZCxoLG8pe2Zvcih2YXIgXz1yLkYuX2JpdHNFLHA9ci5GLl9nZXQxNyxjPTA7YzxsOyl7dmFyIGc9YVtwKGQsaCkmc107aCs9ZyYxNTt2YXIgZT1nPj4+NDtpZihlPD0xNSlvW2NdPWUsYysrO2Vsc2V7dmFyIHQ9MCxpPTA7ZT09MTY/KGk9MytfKGQsaCwyKSxoKz0yLHQ9b1tjLTFdKTplPT0xNz8oaT0zK18oZCxoLDMpLGgrPTMpOmU9PTE4JiYoaT0xMStfKGQsaCw3KSxoKz03KTtmb3IodmFyIGY9YytpO2M8Zjspb1tjXT10LGMrK319cmV0dXJuIGh9LHIuRi5fY29weU91dD1mdW5jdGlvbihhLHMsbCxkKXtmb3IodmFyIGg9MCxvPTAsXz1kLmxlbmd0aD4+PjE7bzxsOyl7dmFyIHA9YVtvK3NdO2Rbbzw8MV09MCxkWyhvPDwxKSsxXT1wLHA+aCYmKGg9cCksbysrfWZvcig7bzxfOylkW288PDFdPTAsZFsobzw8MSkrMV09MCxvKys7cmV0dXJuIGh9LHIuRi5tYWtlQ29kZXM9ZnVuY3Rpb24oYSxzKXtmb3IodmFyIGw9ci5GLlUsZD1hLmxlbmd0aCxoLG8sXyxwLGMsZz1sLmJsX2NvdW50LHA9MDtwPD1zO3ArKylnW3BdPTA7Zm9yKHA9MTtwPGQ7cCs9MilnW2FbcF1dKys7dmFyIGU9bC5uZXh0X2NvZGU7Zm9yKGg9MCxnWzBdPTAsbz0xO288PXM7bysrKWg9aCtnW28tMV08PDEsZVtvXT1oO2ZvcihfPTA7XzxkO18rPTIpYz1hW18rMV0sYyE9MCYmKGFbX109ZVtjXSxlW2NdKyspfSxyLkYuY29kZXMybWFwPWZ1bmN0aW9uKGEscyxsKXtmb3IodmFyIGQ9YS5sZW5ndGgsaD1yLkYuVSxvPWgucmV2MTUsXz0wO188ZDtfKz0yKWlmKGFbXysxXSE9MClmb3IodmFyIHA9Xz4+MSxjPWFbXysxXSxnPXA8PDR8YyxlPXMtYyx0PWFbX108PGUsaT10KygxPDxlKTt0IT1pOyl7dmFyIGY9b1t0XT4+PjE1LXM7bFtmXT1nLHQrK319LHIuRi5yZXZDb2Rlcz1mdW5jdGlvbihhLHMpe2Zvcih2YXIgbD1yLkYuVS5yZXYxNSxkPTE1LXMsaD0wO2g8YS5sZW5ndGg7aCs9Mil7dmFyIG89YVtoXTw8cy1hW2grMV07YVtoXT1sW29dPj4+ZH19LHIuRi5fcHV0c0U9ZnVuY3Rpb24oYSxzLGwpe2w9bDw8KHMmNyk7dmFyIGQ9cz4+PjM7YVtkXXw9bCxhW2QrMV18PWw+Pj44fSxyLkYuX3B1dHNGPWZ1bmN0aW9uKGEscyxsKXtsPWw8PChzJjcpO3ZhciBkPXM+Pj4zO2FbZF18PWwsYVtkKzFdfD1sPj4+OCxhW2QrMl18PWw+Pj4xNn0sci5GLl9iaXRzRT1mdW5jdGlvbihhLHMsbCl7cmV0dXJuKGFbcz4+PjNdfGFbKHM+Pj4zKSsxXTw8OCk+Pj4ocyY3KSYoMTw8bCktMX0sci5GLl9iaXRzRj1mdW5jdGlvbihhLHMsbCl7cmV0dXJuKGFbcz4+PjNdfGFbKHM+Pj4zKSsxXTw8OHxhWyhzPj4+MykrMl08PDE2KT4+PihzJjcpJigxPDxsKS0xfSxyLkYuX2dldDE3PWZ1bmN0aW9uKGEscyl7cmV0dXJuKGFbcz4+PjNdfGFbKHM+Pj4zKSsxXTw8OHxhWyhzPj4+MykrMl08PDE2KT4+PihzJjcpfSxyLkYuX2dldDI1PWZ1bmN0aW9uKGEscyl7cmV0dXJuKGFbcz4+PjNdfGFbKHM+Pj4zKSsxXTw8OHxhWyhzPj4+MykrMl08PDE2fGFbKHM+Pj4zKSszXTw8MjQpPj4+KHMmNyl9LHIuRi5VPWZ1bmN0aW9uKCl7dmFyIGE9VWludDE2QXJyYXkscz1VaW50MzJBcnJheTtyZXR1cm57bmV4dF9jb2RlOm5ldyBhKDE2KSxibF9jb3VudDpuZXcgYSgxNiksb3JkcjpbMTYsMTcsMTgsMCw4LDcsOSw2LDEwLDUsMTEsNCwxMiwzLDEzLDIsMTQsMSwxNV0sb2YwOlszLDQsNSw2LDcsOCw5LDEwLDExLDEzLDE1LDE3LDE5LDIzLDI3LDMxLDM1LDQzLDUxLDU5LDY3LDgzLDk5LDExNSwxMzEsMTYzLDE5NSwyMjcsMjU4LDk5OSw5OTksOTk5XSxleGI6WzAsMCwwLDAsMCwwLDAsMCwxLDEsMSwxLDIsMiwyLDIsMywzLDMsMyw0LDQsNCw0LDUsNSw1LDUsMCwwLDAsMF0sbGRlZjpuZXcgYSgzMiksZGYwOlsxLDIsMyw0LDUsNyw5LDEzLDE3LDI1LDMzLDQ5LDY1LDk3LDEyOSwxOTMsMjU3LDM4NSw1MTMsNzY5LDEwMjUsMTUzNywyMDQ5LDMwNzMsNDA5Nyw2MTQ1LDgxOTMsMTIyODksMTYzODUsMjQ1NzcsNjU1MzUsNjU1MzVdLGR4YjpbMCwwLDAsMCwxLDEsMiwyLDMsMyw0LDQsNSw1LDYsNiw3LDcsOCw4LDksOSwxMCwxMCwxMSwxMSwxMiwxMiwxMywxMywwLDBdLGRkZWY6bmV3IHMoMzIpLGZsbWFwOm5ldyBhKDUxMiksZmx0cmVlOltdLGZkbWFwOm5ldyBhKDMyKSxmZHRyZWU6W10sbG1hcDpuZXcgYSgzMjc2OCksbHRyZWU6W10sdHRyZWU6W10sZG1hcDpuZXcgYSgzMjc2OCksZHRyZWU6W10saW1hcDpuZXcgYSg1MTIpLGl0cmVlOltdLHJldjE1Om5ldyBhKDMyNzY4KSxsaHN0Om5ldyBzKDI4NiksZGhzdDpuZXcgcygzMCksaWhzdDpuZXcgcygxOSksbGl0czpuZXcgcygxNWUzKSxzdHJ0Om5ldyBhKDY1NTM2KSxwcmV2Om5ldyBhKDMyNzY4KX19KCksZnVuY3Rpb24oKXtmb3IodmFyIGE9ci5GLlUscz0zMjc2OCxsPTA7bDxzO2wrKyl7dmFyIGQ9bDtkPShkJjI4NjMzMTE1MzApPj4+MXwoZCYxNDMxNjU1NzY1KTw8MSxkPShkJjM0MzU5NzM4MzYpPj4+MnwoZCY4NTg5OTM0NTkpPDwyLGQ9KGQmNDA0MjMyMjE2MCk+Pj40fChkJjI1MjY0NTEzNSk8PDQsZD0oZCY0Mjc4MjU1MzYwKT4+Pjh8KGQmMTY3MTE5MzUpPDw4LGEucmV2MTVbbF09KGQ+Pj4xNnxkPDwxNik+Pj4xN31mdW5jdGlvbiBoKG8sXyxwKXtmb3IoO18tLSE9MDspby5wdXNoKDAscCl9Zm9yKHZhciBsPTA7bDwzMjtsKyspYS5sZGVmW2xdPWEub2YwW2xdPDwzfGEuZXhiW2xdLGEuZGRlZltsXT1hLmRmMFtsXTw8NHxhLmR4YltsXTtoKGEuZmx0cmVlLDE0NCw4KSxoKGEuZmx0cmVlLDExMiw5KSxoKGEuZmx0cmVlLDI0LDcpLGgoYS5mbHRyZWUsOCw4KSxyLkYubWFrZUNvZGVzKGEuZmx0cmVlLDkpLHIuRi5jb2RlczJtYXAoYS5mbHRyZWUsOSxhLmZsbWFwKSxyLkYucmV2Q29kZXMoYS5mbHRyZWUsOSksaChhLmZkdHJlZSwzMiw1KSxyLkYubWFrZUNvZGVzKGEuZmR0cmVlLDUpLHIuRi5jb2RlczJtYXAoYS5mZHRyZWUsNSxhLmZkbWFwKSxyLkYucmV2Q29kZXMoYS5mZHRyZWUsNSksaChhLml0cmVlLDE5LDApLGgoYS5sdHJlZSwyODYsMCksaChhLmR0cmVlLDMwLDApLGgoYS50dHJlZSwzMjAsMCl9KCl9KShqdCk7dmFyIGlyPWp0LmV4cG9ydHMscnI9VnQoaXIpLEw9e2xvZzoibG9nIixkZWJ1ZzoiZGVidWciLGluZm86ImluZm8iLHdhcm46Indhcm4iLGVycm9yOiJlcnJvciJ9LFc9Y29uc29sZSxuZT17fTtPYmplY3Qua2V5cyhMKS5mb3JFYWNoKGZ1bmN0aW9uKG4pe25lW25dPVdbbl19KTt2YXIgQ2U9IkRhdGFkb2cgQnJvd3NlciBTREs6Iix6PXtkZWJ1ZzpuZS5kZWJ1Zy5iaW5kKFcsQ2UpLGxvZzpuZS5sb2cuYmluZChXLENlKSxpbmZvOm5lLmluZm8uYmluZChXLENlKSx3YXJuOm5lLndhcm4uYmluZChXLENlKSxlcnJvcjpuZS5lcnJvci5iaW5kKFcsQ2UpfSxkdD0iaHR0cHM6Ly9kb2NzLmRhdGFkb2docS5jb20iLEt0PSIiLmNvbmNhdChkdCwiL3JlYWxfdXNlcl9tb25pdG9yaW5nL2Jyb3dzZXIvdHJvdWJsZXNob290aW5nIiksRGU9Ik1vcmUgZGV0YWlsczoiO2Z1bmN0aW9uIHF0KG4scil7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciBhPVtdLHM9MDtzPGFyZ3VtZW50cy5sZW5ndGg7cysrKWFbc109YXJndW1lbnRzW3NdO3RyeXtyZXR1cm4gbi5hcHBseSh2b2lkIDAsYSl9Y2F0Y2gobCl7ei5lcnJvcihyLGwpfX19ZnVuY3Rpb24gTmUobil7cmV0dXJuIG4hPT0wJiZNYXRoLnJhbmRvbSgpKjEwMDw9bn1mdW5jdGlvbiBucihuKXtyZXR1cm4gc3IobikmJm4+PTAmJm48PTEwMH1mdW5jdGlvbiBzcihuKXtyZXR1cm4gdHlwZW9mIG49PSJudW1iZXIifXZhciBUZT0xZTMsc2U9NjAqVGUsb3I9NjAqc2U7ZnVuY3Rpb24gSWUoKXtyZXR1cm4gbmV3IERhdGUoKS5nZXRUaW1lKCl9ZnVuY3Rpb24gUSgpe3JldHVybiBJZSgpfWZ1bmN0aW9uIE1lKCl7cmV0dXJuIHBlcmZvcm1hbmNlLm5vdygpfWZ1bmN0aW9uIGVlKCl7cmV0dXJue3JlbGF0aXZlOk1lKCksdGltZVN0YW1wOlEoKX19ZnVuY3Rpb24gYXIoKXtyZXR1cm57cmVsYXRpdmU6MCx0aW1lU3RhbXA6V3QoKX19ZnVuY3Rpb24gZnIobixyKXtyZXR1cm4gci1ufWZ1bmN0aW9uIGxyKG4scil7cmV0dXJuIG4rcn1mdW5jdGlvbiB1cihuKXtyZXR1cm4gbi1XdCgpfXZhciBodDtmdW5jdGlvbiBXdCgpe3JldHVybiBodD09PXZvaWQgMCYmKGh0PXBlcmZvcm1hbmNlLnRpbWluZy5uYXZpZ2F0aW9uU3RhcnQpLGh0fXZhciBYPTEwMjQsWHQ9MTAyNCpYLGRyPS9bXlx1MDAwMC1cdTAwN0ZdLztmdW5jdGlvbiBjdChuKXtyZXR1cm4gZHIudGVzdChuKT93aW5kb3cuVGV4dEVuY29kZXIhPT12b2lkIDA/bmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKG4pLmxlbmd0aDpuZXcgQmxvYihbbl0pLnNpemU6bi5sZW5ndGh9ZnVuY3Rpb24geWUobixyKXtyZXR1cm4gbi5pbmRleE9mKHIpIT09LTF9ZnVuY3Rpb24gcHQobil7aWYoQXJyYXkuZnJvbSlyZXR1cm4gQXJyYXkuZnJvbShuKTt2YXIgcj1bXTtpZihuIGluc3RhbmNlb2YgU2V0KW4uZm9yRWFjaChmdW5jdGlvbihzKXtyZXR1cm4gci5wdXNoKHMpfSk7ZWxzZSBmb3IodmFyIGE9MDthPG4ubGVuZ3RoO2ErKylyLnB1c2goblthXSk7cmV0dXJuIHJ9ZnVuY3Rpb24gaHIobixyKXtmb3IodmFyIGE9MDthPG4ubGVuZ3RoO2ErPTEpe3ZhciBzPW5bYV07aWYocihzLGEpKXJldHVybiBzfX1mdW5jdGlvbiBtZShuKXtyZXR1cm4gT2JqZWN0LmtleXMobikubWFwKGZ1bmN0aW9uKHIpe3JldHVybiBuW3JdfSl9ZnVuY3Rpb24gY3Iobil7cmV0dXJuIE9iamVjdC5rZXlzKG4pLm1hcChmdW5jdGlvbihyKXtyZXR1cm5bcixuW3JdXX0pfWZ1bmN0aW9uIF90KG4scil7cmV0dXJuIG4uc2xpY2UoMCxyLmxlbmd0aCk9PT1yfWZ1bmN0aW9uIHByKG4scil7cmV0dXJuIG4uc2xpY2UoLXIubGVuZ3RoKT09PXJ9ZnVuY3Rpb24gTyhuKXtmb3IodmFyIHI9W10sYT0xO2E8YXJndW1lbnRzLmxlbmd0aDthKyspclthLTFdPWFyZ3VtZW50c1thXTtyZXR1cm4gci5mb3JFYWNoKGZ1bmN0aW9uKHMpe2Zvcih2YXIgbCBpbiBzKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLGwpJiYobltsXT1zW2xdKX0pLG59ZnVuY3Rpb24gX3Iobil7cmV0dXJuIE8oe30sbil9ZnVuY3Rpb24gSnQobixyKXtyZXR1cm4gT2JqZWN0LmtleXMobikuc29tZShmdW5jdGlvbihhKXtyZXR1cm4gblthXT09PXJ9KX1mdW5jdGlvbiB2dChuKXtyZXR1cm4gT2JqZWN0LmtleXMobikubGVuZ3RoPT09MH1mdW5jdGlvbiB0ZSgpe2lmKHR5cGVvZiBnbG9iYWxUaGlzPT0ib2JqZWN0IilyZXR1cm4gZ2xvYmFsVGhpcztPYmplY3QuZGVmaW5lUHJvcGVydHkoT2JqZWN0LnByb3RvdHlwZSwiX2RkX3RlbXBfIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LGNvbmZpZ3VyYWJsZTohMH0pO3ZhciBuPV9kZF90ZW1wXztyZXR1cm4gZGVsZXRlIE9iamVjdC5wcm90b3R5cGUuX2RkX3RlbXBfLHR5cGVvZiBuIT0ib2JqZWN0IiYmKHR5cGVvZiBzZWxmPT0ib2JqZWN0Ij9uPXNlbGY6dHlwZW9mIHdpbmRvdz09Im9iamVjdCI/bj13aW5kb3c6bj17fSksbn1mdW5jdGlvbiBiZShuLHIpe3ZhciBhPXRlKCkscztyZXR1cm4gYS5ab25lJiZ0eXBlb2YgYS5ab25lLl9fc3ltYm9sX189PSJmdW5jdGlvbiImJihzPW5bYS5ab25lLl9fc3ltYm9sX18ocildKSxzfHwocz1uW3JdKSxzfXZhciB2cj1mdW5jdGlvbihuLHIsYSl7aWYoYXx8YXJndW1lbnRzLmxlbmd0aD09PTIpZm9yKHZhciBzPTAsbD1yLmxlbmd0aCxkO3M8bDtzKyspKGR8fCEocyBpbiByKSkmJihkfHwoZD1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChyLDAscykpLGRbc109cltzXSk7cmV0dXJuIG4uY29uY2F0KGR8fEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHIpKX0sR2UsJHQ9ITE7ZnVuY3Rpb24gZ3Iobil7R2U9bn1mdW5jdGlvbiB5cihuKXskdD1ufWZ1bmN0aW9uIG1yKG4scixhKXt2YXIgcz1hLnZhbHVlO2EudmFsdWU9ZnVuY3Rpb24oKXtmb3IodmFyIGw9W10sZD0wO2Q8YXJndW1lbnRzLmxlbmd0aDtkKyspbFtkXT1hcmd1bWVudHNbZF07dmFyIGg9R2U/QihzKTpzO3JldHVybiBoLmFwcGx5KHRoaXMsbCl9fWZ1bmN0aW9uIEIobil7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIEJlKG4sdGhpcyxhcmd1bWVudHMpfX1mdW5jdGlvbiBCZShuLHIsYSl7dHJ5e3JldHVybiBuLmFwcGx5KHIsYSl9Y2F0Y2gocyl7aWYoZ3QocyksR2UpdHJ5e0dlKHMpfWNhdGNoKGwpe2d0KGwpfX19ZnVuY3Rpb24gZ3QoKXtmb3IodmFyIG49W10scj0wO3I8YXJndW1lbnRzLmxlbmd0aDtyKyspbltyXT1hcmd1bWVudHNbcl07JHQmJnouZXJyb3IuYXBwbHkoeix2cihbIltNT05JVE9SXSJdLG4sITEpKX1mdW5jdGlvbiBGZShuLHIpe3JldHVybiBiZSh0ZSgpLCJzZXRUaW1lb3V0IikoQihuKSxyKX1mdW5jdGlvbiBadChuKXtiZSh0ZSgpLCJjbGVhclRpbWVvdXQiKShuKX1mdW5jdGlvbiB5dChuLHIpe3JldHVybiBiZSh0ZSgpLCJzZXRJbnRlcnZhbCIpKEIobikscil9ZnVuY3Rpb24gUXQobil7YmUodGUoKSwiY2xlYXJJbnRlcnZhbCIpKG4pfXZhciBSPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbihyKXt0aGlzLm9uRmlyc3RTdWJzY3JpYmU9cix0aGlzLm9ic2VydmVycz1bXX1yZXR1cm4gbi5wcm90b3R5cGUuc3Vic2NyaWJlPWZ1bmN0aW9uKHIpe3ZhciBhPXRoaXM7cmV0dXJuIHRoaXMub2JzZXJ2ZXJzLnB1c2gociksdGhpcy5vYnNlcnZlcnMubGVuZ3RoPT09MSYmdGhpcy5vbkZpcnN0U3Vic2NyaWJlJiYodGhpcy5vbkxhc3RVbnN1YnNjcmliZT10aGlzLm9uRmlyc3RTdWJzY3JpYmUodGhpcyl8fHZvaWQgMCkse3Vuc3Vic2NyaWJlOmZ1bmN0aW9uKCl7YS5vYnNlcnZlcnM9YS5vYnNlcnZlcnMuZmlsdGVyKGZ1bmN0aW9uKHMpe3JldHVybiByIT09c30pLCFhLm9ic2VydmVycy5sZW5ndGgmJmEub25MYXN0VW5zdWJzY3JpYmUmJmEub25MYXN0VW5zdWJzY3JpYmUoKX19fSxuLnByb3RvdHlwZS5ub3RpZnk9ZnVuY3Rpb24ocil7dGhpcy5vYnNlcnZlcnMuZm9yRWFjaChmdW5jdGlvbihhKXtyZXR1cm4gYShyKX0pfSxufSgpO2Z1bmN0aW9uIGVpKCl7Zm9yKHZhciBuPVtdLHI9MDtyPGFyZ3VtZW50cy5sZW5ndGg7cisrKW5bcl09YXJndW1lbnRzW3JdO3JldHVybiBuZXcgUihmdW5jdGlvbihhKXt2YXIgcz1uLm1hcChmdW5jdGlvbihsKXtyZXR1cm4gbC5zdWJzY3JpYmUoZnVuY3Rpb24oZCl7cmV0dXJuIGEubm90aWZ5KGQpfSl9KTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gcy5mb3JFYWNoKGZ1bmN0aW9uKGwpe3JldHVybiBsLnVuc3Vic2NyaWJlKCl9KX19KX1mdW5jdGlvbiB0aShuLHIsYSl7dmFyIHM9ITEsbCxkO3JldHVybnt0aHJvdHRsZWQ6ZnVuY3Rpb24oKXtmb3IodmFyIGg9W10sbz0wO288YXJndW1lbnRzLmxlbmd0aDtvKyspaFtvXT1hcmd1bWVudHNbb107aWYocyl7bD1oO3JldHVybn1uLmFwcGx5KHZvaWQgMCxoKSxzPSEwLGQ9RmUoZnVuY3Rpb24oKXtsJiZuLmFwcGx5KHZvaWQgMCxsKSxzPSExLGw9dm9pZCAwfSxyKX0sY2FuY2VsOmZ1bmN0aW9uKCl7WnQoZCkscz0hMSxsPXZvaWQgMH19fWZ1bmN0aW9uIGllKCl7fWZ1bmN0aW9uIG9lKG4pe3JldHVybiBuPyhwYXJzZUludChuLDEwKV5NYXRoLnJhbmRvbSgpKjE2Pj5wYXJzZUludChuLDEwKS80KS50b1N0cmluZygxNik6IiIuY29uY2F0KDFlNywiLSIpLmNvbmNhdCgxZTMsIi0iKS5jb25jYXQoNGUzLCItIikuY29uY2F0KDhlMywiLSIpLmNvbmNhdCgxZTExKS5yZXBsYWNlKC9bMDE4XS9nLG9lKX12YXIgSGU9LyhbXHctXSspXHMqPVxzKihbXjtdKykvZztmdW5jdGlvbiBicihuLHIpe2ZvcihIZS5sYXN0SW5kZXg9MDs7KXt2YXIgYT1IZS5leGVjKG4pO2lmKGEpe2lmKGFbMV09PT1yKXJldHVybiBhWzJdfWVsc2UgYnJlYWt9fWZ1bmN0aW9uIFNyKG4pe3ZhciByPW5ldyBNYXA7Zm9yKEhlLmxhc3RJbmRleD0wOzspe3ZhciBhPUhlLmV4ZWMobik7aWYoYSlyLnNldChhWzFdLGFbMl0pO2Vsc2UgYnJlYWt9cmV0dXJuIHJ9ZnVuY3Rpb24geHIobixyLGEpe3ZhciBzPW4uY2hhckNvZGVBdChyLTEpLGw9cz49NTUyOTYmJnM8PTU2MzE5LGQ9bD9yKzE6cjtyZXR1cm4gbi5sZW5ndGg8PWQ/bjoiIi5jb25jYXQobi5zbGljZSgwLGQpKS5jb25jYXQoYSl9ZnVuY3Rpb24gVXIoKXtyZXR1cm4gd3IoKT09PTF9dmFyIFllO2Z1bmN0aW9uIHdyKCl7cmV0dXJuIFllPz8oWWU9RXIoKSl9ZnVuY3Rpb24gRXIobil7dmFyIHI7bj09PXZvaWQgMCYmKG49d2luZG93KTt2YXIgYT1uLm5hdmlnYXRvci51c2VyQWdlbnQ7cmV0dXJuIG4uY2hyb21lfHwvSGVhZGxlc3NDaHJvbWUvLnRlc3QoYSk/MTooKHI9bi5uYXZpZ2F0b3IudmVuZG9yKT09PW51bGx8fHI9PT12b2lkIDA/dm9pZCAwOnIuaW5kZXhPZigiQXBwbGUiKSk9PT0wfHwvc2FmYXJpL2kudGVzdChhKSYmIS9jaHJvbWV8YW5kcm9pZC9pLnRlc3QoYSk/MjpuLmRvY3VtZW50LmRvY3VtZW50TW9kZT8wOjN9ZnVuY3Rpb24gTGUobixyLGEscyl7dmFyIGw9bmV3IERhdGU7bC5zZXRUaW1lKGwuZ2V0VGltZSgpK2EpO3ZhciBkPSJleHBpcmVzPSIuY29uY2F0KGwudG9VVENTdHJpbmcoKSksaD1zJiZzLmNyb3NzU2l0ZT8ibm9uZSI6InN0cmljdCIsbz1zJiZzLmRvbWFpbj8iO2RvbWFpbj0iLmNvbmNhdChzLmRvbWFpbik6IiIsXz1zJiZzLnNlY3VyZT8iO3NlY3VyZSI6IiIscD1zJiZzLnBhcnRpdGlvbmVkPyI7cGFydGl0aW9uZWQiOiIiO2RvY3VtZW50LmNvb2tpZT0iIi5jb25jYXQobiwiPSIpLmNvbmNhdChyLCI7IikuY29uY2F0KGQsIjtwYXRoPS87c2FtZXNpdGU9IikuY29uY2F0KGgpLmNvbmNhdChvKS5jb25jYXQoXykuY29uY2F0KHApfWZ1bmN0aW9uIG10KG4pe3JldHVybiBicihkb2N1bWVudC5jb29raWUsbil9dmFyIGJ0O2Z1bmN0aW9uIGFlKG4pe3JldHVybiBidHx8KGJ0PVNyKGRvY3VtZW50LmNvb2tpZSkpLGJ0LmdldChuKX1mdW5jdGlvbiBpaShuLHIpe0xlKG4sIiIsMCxyKX1mdW5jdGlvbiBBcihuKXtpZihkb2N1bWVudC5jb29raWU9PT12b2lkIDB8fGRvY3VtZW50LmNvb2tpZT09PW51bGwpcmV0dXJuITE7dHJ5e3ZhciByPSJkZF9jb29raWVfdGVzdF8iLmNvbmNhdChvZSgpKSxhPSJ0ZXN0IjtMZShyLGEsc2Usbik7dmFyIHM9bXQocik9PT1hO3JldHVybiBpaShyLG4pLHN9Y2F0Y2gobCl7cmV0dXJuIHouZXJyb3IobCksITF9fXZhciBTdDtmdW5jdGlvbiBDcigpe2lmKFN0PT09dm9pZCAwKXtmb3IodmFyIG49ImRkX3NpdGVfdGVzdF8iLmNvbmNhdChvZSgpKSxyPSJ0ZXN0IixhPXdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZS5zcGxpdCgiLiIpLHM9YS5wb3AoKTthLmxlbmd0aCYmIW10KG4pOylzPSIiLmNvbmNhdChhLnBvcCgpLCIuIikuY29uY2F0KHMpLExlKG4scixUZSx7ZG9tYWluOnN9KTtpaShuLHtkb21haW46c30pLFN0PXN9cmV0dXJuIFN0fXZhciBTZT0iX2RkX3MiLHh0PTQqb3Iscmk9MTUqc2Usbmk9L14oW2EtekEtWl0rKT0oW2EtejAtOS1dKykkLyxVdD0iJiIsVHI9IjEiO2Z1bmN0aW9uIGZlKCl7cmV0dXJue2lzRXhwaXJlZDpUcn19ZnVuY3Rpb24gVmUobil7cmV0dXJuIHZ0KG4pfWZ1bmN0aW9uIHNpKG4pe3JldHVybiFWZShuKX1mdW5jdGlvbiBqZShuKXtyZXR1cm4gbi5pc0V4cGlyZWQhPT12b2lkIDB8fCFJcihuKX1mdW5jdGlvbiBJcihuKXtyZXR1cm4obi5jcmVhdGVkPT09dm9pZCAwfHxJZSgpLU51bWJlcihuLmNyZWF0ZWQpPHh0KSYmKG4uZXhwaXJlPT09dm9pZCAwfHxJZSgpPE51bWJlcihuLmV4cGlyZSkpfWZ1bmN0aW9uIG9pKG4pe24uZXhwaXJlPVN0cmluZyhJZSgpK3JpKX1mdW5jdGlvbiB3dChuKXtyZXR1cm4gY3IobikubWFwKGZ1bmN0aW9uKHIpe3ZhciBhPXJbMF0scz1yWzFdO3JldHVybiIiLmNvbmNhdChhLCI9IikuY29uY2F0KHMpfSkuam9pbihVdCl9ZnVuY3Rpb24gYWkobil7dmFyIHI9e307cmV0dXJuIEJyKG4pJiZuLnNwbGl0KFV0KS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBzPW5pLmV4ZWMoYSk7aWYocyE9PW51bGwpe3ZhciBsPXNbMV0sZD1zWzJdO3JbbF09ZH19KSxyfWZ1bmN0aW9uIEJyKG4pe3JldHVybiEhbiYmKG4uaW5kZXhPZihVdCkhPT0tMXx8bmkudGVzdChuKSl9dmFyIEZyPSJfZGQiLExyPSJfZGRfciIsa3I9Il9kZF9sIix6cj0icnVtIixScj0ibG9ncyI7ZnVuY3Rpb24gT3Iobil7dmFyIHI9YWUoU2UpO2lmKCFyKXt2YXIgYT1hZShGcikscz1hZShMciksbD1hZShrciksZD17fTthJiYoZC5pZD1hKSxsJiYvXlswMV0kLy50ZXN0KGwpJiYoZFtScl09bCkscyYmL15bMDEyXSQvLnRlc3QocykmJihkW3pyXT1zKSxzaShkKSYmKG9pKGQpLG4ucGVyc2lzdFNlc3Npb24oZCkpfX1mdW5jdGlvbiBQcihuKXt2YXIgcj1IcihuKTtyZXR1cm4gQXIocik/e3R5cGU6IkNvb2tpZSIsY29va2llT3B0aW9uczpyfTp2b2lkIDB9ZnVuY3Rpb24gRHIobil7dmFyIHI9e2lzTG9ja0VuYWJsZWQ6VXIoKSxwZXJzaXN0U2Vzc2lvbjpOcihuKSxyZXRyaWV2ZVNlc3Npb246R3IsZXhwaXJlU2Vzc2lvbjpmdW5jdGlvbigpe3JldHVybiBNcihuKX19O3JldHVybiBPcihyKSxyfWZ1bmN0aW9uIE5yKG4pe3JldHVybiBmdW5jdGlvbihyKXtMZShTZSx3dChyKSxyaSxuKX19ZnVuY3Rpb24gTXIobil7TGUoU2Usd3QoZmUoKSkseHQsbil9ZnVuY3Rpb24gR3IoKXt2YXIgbj1tdChTZSk7cmV0dXJuIGFpKG4pfWZ1bmN0aW9uIEhyKG4pe3ZhciByPXt9O3JldHVybiByLnNlY3VyZT0hIW4udXNlU2VjdXJlU2Vzc2lvbkNvb2tpZXx8ISFuLnVzZVBhcnRpdGlvbmVkQ3Jvc3NTaXRlU2Vzc2lvbkNvb2tpZXx8ISFuLnVzZUNyb3NzU2l0ZVNlc3Npb25Db29raWUsci5jcm9zc1NpdGU9ISFuLnVzZVBhcnRpdGlvbmVkQ3Jvc3NTaXRlU2Vzc2lvbkNvb2tpZXx8ISFuLnVzZUNyb3NzU2l0ZVNlc3Npb25Db29raWUsci5wYXJ0aXRpb25lZD0hIW4udXNlUGFydGl0aW9uZWRDcm9zc1NpdGVTZXNzaW9uQ29va2llLG4udHJhY2tTZXNzaW9uQWNyb3NzU3ViZG9tYWlucyYmKHIuZG9tYWluPUNyKCkpLHJ9dmFyIFlyPSJfZGRfdGVzdF8iO2Z1bmN0aW9uIFZyKCl7dHJ5e3ZhciBuPW9lKCkscj0iIi5jb25jYXQoWXIpLmNvbmNhdChuKTtsb2NhbFN0b3JhZ2Uuc2V0SXRlbShyLG4pO3ZhciBhPWxvY2FsU3RvcmFnZS5nZXRJdGVtKHIpO3JldHVybiBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShyKSxuPT09YT97dHlwZToiTG9jYWxTdG9yYWdlIn06dm9pZCAwfWNhdGNoe3JldHVybn19ZnVuY3Rpb24ganIoKXtyZXR1cm57aXNMb2NrRW5hYmxlZDohMSxwZXJzaXN0U2Vzc2lvbjpmaSxyZXRyaWV2ZVNlc3Npb246S3IsZXhwaXJlU2Vzc2lvbjpxcn19ZnVuY3Rpb24gZmkobil7bG9jYWxTdG9yYWdlLnNldEl0ZW0oU2Usd3QobikpfWZ1bmN0aW9uIEtyKCl7dmFyIG49bG9jYWxTdG9yYWdlLmdldEl0ZW0oU2UpO3JldHVybiBhaShuKX1mdW5jdGlvbiBxcigpe2ZpKGZlKCkpfXZhciBXcj0xMCxYcj0xMDAsbGk9W10sS2U7ZnVuY3Rpb24gbGUobixyLGEpe3ZhciBzO2E9PT12b2lkIDAmJihhPTApO3ZhciBsPXIuaXNMb2NrRW5hYmxlZCxkPXIucGVyc2lzdFNlc3Npb24saD1yLmV4cGlyZVNlc3Npb24sbz1mdW5jdGlvbihlKXtyZXR1cm4gZChPKHt9LGUse2xvY2s6cH0pKX0sXz1mdW5jdGlvbigpe3ZhciBlPXIucmV0cmlldmVTZXNzaW9uKCksdD1lLmxvY2s7cmV0dXJuIGUubG9jayYmZGVsZXRlIGUubG9jayx7c2Vzc2lvbjplLGxvY2s6dH19O2lmKEtlfHwoS2U9biksbiE9PUtlKXtsaS5wdXNoKG4pO3JldHVybn1pZihsJiZhPj1Ycil7dWkocik7cmV0dXJufXZhciBwLGM9XygpO2lmKGwpe2lmKGMubG9jayl7cWUobixyLGEpO3JldHVybn1pZihwPW9lKCksbyhjLnNlc3Npb24pLGM9XygpLGMubG9jayE9PXApe3FlKG4scixhKTtyZXR1cm59fXZhciBnPW4ucHJvY2VzcyhjLnNlc3Npb24pO2lmKGwmJihjPV8oKSxjLmxvY2shPT1wKSl7cWUobixyLGEpO3JldHVybn1pZihnJiYoamUoZyk/aCgpOihvaShnKSxsP28oZyk6ZChnKSkpLGwmJiEoZyYmamUoZykpKXtpZihjPV8oKSxjLmxvY2shPT1wKXtxZShuLHIsYSk7cmV0dXJufWQoYy5zZXNzaW9uKSxnPWMuc2Vzc2lvbn0ocz1uLmFmdGVyKT09PW51bGx8fHM9PT12b2lkIDB8fHMuY2FsbChuLGd8fGMuc2Vzc2lvbiksdWkocil9ZnVuY3Rpb24gcWUobixyLGEpe0ZlKGZ1bmN0aW9uKCl7bGUobixyLGErMSl9LFdyKX1mdW5jdGlvbiB1aShuKXtLZT12b2lkIDA7dmFyIHI9bGkuc2hpZnQoKTtyJiZsZShyLG4pfXZhciBkaT1UZTtmdW5jdGlvbiBKcihuKXt2YXIgcj1QcihuKTtyZXR1cm4hciYmbi5hbGxvd0ZhbGxiYWNrVG9Mb2NhbFN0b3JhZ2UmJihyPVZyKCkpLHJ9ZnVuY3Rpb24gJHIobixyLGEpe3ZhciBzPW5ldyBSLGw9bmV3IFIsZD1uZXcgUixoPW4udHlwZT09PSJDb29raWUiP0RyKG4uY29va2llT3B0aW9ucyk6anIoKSxvPWguZXhwaXJlU2Vzc2lvbixfPXl0KGksZGkpLHA7dSgpO3ZhciBjPXRpKGZ1bmN0aW9uKCl7bGUoe3Byb2Nlc3M6ZnVuY3Rpb24oVSl7aWYoIVZlKFUpKXt2YXIgRT1mKFUpO3JldHVybiB2KEUpLEV9fSxhZnRlcjpmdW5jdGlvbihVKXtzaShVKSYmIXkoKSYmeChVKSxwPVV9fSxoKX0sZGkpLGc9Yy50aHJvdHRsZWQsZT1jLmNhbmNlbDtmdW5jdGlvbiB0KCl7bGUoe3Byb2Nlc3M6ZnVuY3Rpb24oVSl7cmV0dXJuIHkoKT9mKFUpOnZvaWQgMH19LGgpfWZ1bmN0aW9uIGkoKXtsZSh7cHJvY2VzczpmdW5jdGlvbihVKXtyZXR1cm4gamUoVSk/ZmUoKTp2b2lkIDB9LGFmdGVyOmZ9LGgpfWZ1bmN0aW9uIGYoVSl7cmV0dXJuIGplKFUpJiYoVT1mZSgpKSx5KCkmJihtKFUpP2IoKTooZC5ub3RpZnkoe3ByZXZpb3VzU3RhdGU6cCxuZXdTdGF0ZTpVfSkscD1VKSksVX1mdW5jdGlvbiB1KCl7bGUoe3Byb2Nlc3M6ZnVuY3Rpb24oVSl7aWYoVmUoVSkpcmV0dXJuIGZlKCl9LGFmdGVyOmZ1bmN0aW9uKFUpe3A9VX19LGgpfWZ1bmN0aW9uIHYoVSl7aWYoVmUoVSkpcmV0dXJuITE7dmFyIEU9YShVW3JdKSx3PUUudHJhY2tpbmdUeXBlLEE9RS5pc1RyYWNrZWQ7VVtyXT13LGRlbGV0ZSBVLmlzRXhwaXJlZCxBJiYhVS5pZCYmKFUuaWQ9b2UoKSxVLmNyZWF0ZWQ9U3RyaW5nKEllKCkpKX1mdW5jdGlvbiB5KCl7cmV0dXJuIHBbcl0hPT12b2lkIDB9ZnVuY3Rpb24gbShVKXtyZXR1cm4gcC5pZCE9PVUuaWR8fHBbcl0hPT1VW3JdfWZ1bmN0aW9uIGIoKXtwPWZlKCksbC5ub3RpZnkoKX1mdW5jdGlvbiB4KFUpe3A9VSxzLm5vdGlmeSgpfWZ1bmN0aW9uIFMoVSl7bGUoe3Byb2Nlc3M6ZnVuY3Rpb24oRSl7cmV0dXJuIE8oe30sRSxVKX0sYWZ0ZXI6Zn0saCl9cmV0dXJue2V4cGFuZE9yUmVuZXdTZXNzaW9uOmcsZXhwYW5kU2Vzc2lvbjp0LGdldFNlc3Npb246ZnVuY3Rpb24oKXtyZXR1cm4gcH0scmVuZXdPYnNlcnZhYmxlOnMsZXhwaXJlT2JzZXJ2YWJsZTpsLHNlc3Npb25TdGF0ZVVwZGF0ZU9ic2VydmFibGU6ZCxyZXN0YXJ0U2Vzc2lvbjp1LGV4cGlyZTpmdW5jdGlvbigpe2UoKSxvKCksZihmZSgpKX0sc3RvcDpmdW5jdGlvbigpe1F0KF8pfSx1cGRhdGVTZXNzaW9uU3RhdGU6U319dmFyIEV0PXtHUkFOVEVEOiJncmFudGVkIixOT1RfR1JBTlRFRDoibm90LWdyYW50ZWQifTtmdW5jdGlvbiBacihuKXt2YXIgcj1uZXcgUjtyZXR1cm57dHJ5VG9Jbml0OmZ1bmN0aW9uKGEpe258fChuPWEpfSx1cGRhdGU6ZnVuY3Rpb24oYSl7bj1hLHIubm90aWZ5KCl9LGlzR3JhbnRlZDpmdW5jdGlvbigpe3JldHVybiBuPT09RXQuR1JBTlRFRH0sb2JzZXJ2YWJsZTpyfX1mdW5jdGlvbiB1ZShuLHIsYSl7aWYodHlwZW9mIG4hPSJvYmplY3QifHxuPT09bnVsbClyZXR1cm4gSlNPTi5zdHJpbmdpZnkobik7dmFyIHM9eGUoT2JqZWN0LnByb3RvdHlwZSksbD14ZShBcnJheS5wcm90b3R5cGUpLGQ9eGUoT2JqZWN0LmdldFByb3RvdHlwZU9mKG4pKSxoPXhlKG4pO3RyeXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkobixyLGEpfWNhdGNoe3JldHVybiI8ZXJyb3I6IHVuYWJsZSB0byBzZXJpYWxpemUgb2JqZWN0PiJ9ZmluYWxseXtzKCksbCgpLGQoKSxoKCl9fWZ1bmN0aW9uIHhlKG4pe3ZhciByPW4sYT1yLnRvSlNPTjtyZXR1cm4gYT8oZGVsZXRlIHIudG9KU09OLGZ1bmN0aW9uKCl7ci50b0pTT049YX0pOmllfWZ1bmN0aW9uIEF0KG4pe3JldHVybiBRcihuLGxvY2F0aW9uLmhyZWYpLmhyZWZ9ZnVuY3Rpb24gUXIobixyKXt2YXIgYT1lbigpO2lmKGEpdHJ5e3JldHVybiByIT09dm9pZCAwP25ldyBhKG4scik6bmV3IGEobil9Y2F0Y2goaCl7dGhyb3cgbmV3IEVycm9yKCJGYWlsZWQgdG8gY29uc3RydWN0IFVSTDogIi5jb25jYXQoU3RyaW5nKGgpLCIgIikuY29uY2F0KHVlKHt1cmw6bixiYXNlOnJ9KSkpfWlmKHI9PT12b2lkIDAmJiEvOi8udGVzdChuKSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgVVJMOiAnIi5jb25jYXQobiwiJyIpKTt2YXIgcz1kb2N1bWVudCxsPXMuY3JlYXRlRWxlbWVudCgiYSIpO2lmKHIhPT12b2lkIDApe3M9ZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCIiKTt2YXIgZD1zLmNyZWF0ZUVsZW1lbnQoImJhc2UiKTtkLmhyZWY9cixzLmhlYWQuYXBwZW5kQ2hpbGQoZCkscy5ib2R5LmFwcGVuZENoaWxkKGwpfXJldHVybiBsLmhyZWY9bixsfXZhciBoaT1VUkwsV2U7ZnVuY3Rpb24gZW4oKXtpZihXZT09PXZvaWQgMCl0cnl7dmFyIG49bmV3IGhpKCJodHRwOi8vdGVzdC9wYXRoIik7V2U9bi5ocmVmPT09Imh0dHA6Ly90ZXN0L3BhdGgifWNhdGNoe1dlPSExfXJldHVybiBXZT9oaTp2b2lkIDB9dmFyIHRuPSJkYXRhZDBnLmNvbSIscm49ImRkMGctZ292LmNvbSIsZGU9ImRhdGFkb2docS5jb20iLG5uPSJkZG9nLWdvdi5jb20iLGNpPSJwY2kuYnJvd3Nlci1pbnRha2UtZGF0YWRvZ2hxLmNvbSI7ZnVuY3Rpb24ga2UobixyLGEpe3ZhciBzPXNuKG4scik7cmV0dXJue2J1aWxkOmZ1bmN0aW9uKGwsZCl7dmFyIGg9YW4obixyLGEsbCxkKTtyZXR1cm4gcyhoKX0sdXJsUHJlZml4OnMoIiIpLHRyYWNrVHlwZTpyfX1mdW5jdGlvbiBzbihuLHIpe3ZhciBhPSIvYXBpL3YyLyIuY29uY2F0KHIpLHM9bi5wcm94eTtpZih0eXBlb2Ygcz09InN0cmluZyIpe3ZhciBsPUF0KHMpO3JldHVybiBmdW5jdGlvbihoKXtyZXR1cm4iIi5jb25jYXQobCwiP2RkZm9yd2FyZD0iKS5jb25jYXQoZW5jb2RlVVJJQ29tcG9uZW50KCIiLmNvbmNhdChhLCI/IikuY29uY2F0KGgpKSl9fWlmKHR5cGVvZiBzPT0iZnVuY3Rpb24iKXJldHVybiBmdW5jdGlvbihoKXtyZXR1cm4gcyh7cGF0aDphLHBhcmFtZXRlcnM6aH0pfTt2YXIgZD1vbihyLG4pO3JldHVybiBmdW5jdGlvbihoKXtyZXR1cm4iaHR0cHM6Ly8iLmNvbmNhdChkKS5jb25jYXQoYSwiPyIpLmNvbmNhdChoKX19ZnVuY3Rpb24gb24obixyKXt2YXIgYT1yLnNpdGUscz1hPT09dm9pZCAwP2RlOmEsbD1yLmludGVybmFsQW5hbHl0aWNzU3ViZG9tYWluO2lmKG49PT0ibG9ncyImJnIudXNlUGNpSW50YWtlJiZzPT09ZGUpcmV0dXJuIGNpO2lmKGwmJnM9PT1kZSlyZXR1cm4iIi5jb25jYXQobCwiLiIpLmNvbmNhdChkZSk7aWYocz09PXJuKXJldHVybiJodHRwLWludGFrZS5sb2dzLiIuY29uY2F0KHMpO3ZhciBkPXMuc3BsaXQoIi4iKSxoPWQucG9wKCk7cmV0dXJuImJyb3dzZXItaW50YWtlLSIuY29uY2F0KGQuam9pbigiLSIpLCIuIikuY29uY2F0KGgpfWZ1bmN0aW9uIGFuKG4scixhLHMsbCl7dmFyIGQ9bi5jbGllbnRUb2tlbixoPW4uaW50ZXJuYWxBbmFseXRpY3NTdWJkb21haW4sbz1sLnJldHJ5LF89bC5lbmNvZGluZyxwPVsic2RrX3ZlcnNpb246Ii5jb25jYXQoIjUuMjkuMSIpLCJhcGk6Ii5jb25jYXQocyldLmNvbmNhdChhKTtvJiZwLnB1c2goInJldHJ5X2NvdW50OiIuY29uY2F0KG8uY291bnQpLCJyZXRyeV9hZnRlcjoiLmNvbmNhdChvLmxhc3RGYWlsdXJlU3RhdHVzKSk7dmFyIGM9WyJkZHNvdXJjZT1icm93c2VyIiwiZGR0YWdzPSIuY29uY2F0KGVuY29kZVVSSUNvbXBvbmVudChwLmpvaW4oIiwiKSkpLCJkZC1hcGkta2V5PSIuY29uY2F0KGQpLCJkZC1ldnAtb3JpZ2luLXZlcnNpb249Ii5jb25jYXQoZW5jb2RlVVJJQ29tcG9uZW50KCI1LjI5LjEiKSksImRkLWV2cC1vcmlnaW49YnJvd3NlciIsImRkLXJlcXVlc3QtaWQ9Ii5jb25jYXQob2UoKSldO3JldHVybiBfJiZjLnB1c2goImRkLWV2cC1lbmNvZGluZz0iLmNvbmNhdChfKSkscj09PSJydW0iJiZjLnB1c2goImJhdGNoX3RpbWU9Ii5jb25jYXQoUSgpKSksaCYmYy5yZXZlcnNlKCksYy5qb2luKCImIil9dmFyIGZuPTIwMDtmdW5jdGlvbiBsbihuKXt2YXIgcj1uLmVudixhPW4uc2VydmljZSxzPW4udmVyc2lvbixsPW4uZGF0YWNlbnRlcixkPVtdO3JldHVybiByJiZkLnB1c2goWGUoImVudiIscikpLGEmJmQucHVzaChYZSgic2VydmljZSIsYSkpLHMmJmQucHVzaChYZSgidmVyc2lvbiIscykpLGwmJmQucHVzaChYZSgiZGF0YWNlbnRlciIsbCkpLGR9ZnVuY3Rpb24gWGUobixyKXt2YXIgYT1mbi1uLmxlbmd0aC0xOyhyLmxlbmd0aD5hfHx1bihyKSkmJnoud2FybigiIi5jb25jYXQobiwiIHZhbHVlIGRvZXNuJ3QgbWVldCB0YWcgcmVxdWlyZW1lbnRzIGFuZCB3aWxsIGJlIHNhbml0aXplZC4gIikuY29uY2F0KERlLCIgIikuY29uY2F0KGR0LCIvZ2V0dGluZ19zdGFydGVkL3RhZ2dpbmcvI2RlZmluaW5nLXRhZ3MiKSk7dmFyIHM9ci5yZXBsYWNlKC8sL2csIl8iKTtyZXR1cm4iIi5jb25jYXQobiwiOiIpLmNvbmNhdChzKX1mdW5jdGlvbiB1bihuKXtyZXR1cm4gZG4oKT9uZXcgUmVnRXhwKCJbXlxccHtMbH1cXHB7TG99MC05XzouLy1dIiwidSIpLnRlc3Qobik6ITF9ZnVuY3Rpb24gZG4oKXt0cnl7cmV0dXJuIG5ldyBSZWdFeHAoIltcXHB7TGx9XSIsInUiKSwhMH1jYXRjaHtyZXR1cm4hMX19ZnVuY3Rpb24gaG4obil7dmFyIHI9bi5zaXRlfHxkZSxhPWxuKG4pLHM9Y24obixhKSxsPV9uKHMsciksZD1wbihuLGwsYSk7cmV0dXJuIE8oe2lzSW50YWtlVXJsOmZ1bmN0aW9uKGgpe3JldHVybiBsLnNvbWUoZnVuY3Rpb24obyl7cmV0dXJuIGguaW5kZXhPZihvKT09PTB9KX0scmVwbGljYTpkLHNpdGU6cn0scyl9ZnVuY3Rpb24gY24obixyKXtyZXR1cm57bG9nc0VuZHBvaW50QnVpbGRlcjprZShuLCJsb2dzIixyKSxydW1FbmRwb2ludEJ1aWxkZXI6a2UobiwicnVtIixyKSxzZXNzaW9uUmVwbGF5RW5kcG9pbnRCdWlsZGVyOmtlKG4sInJlcGxheSIscil9fWZ1bmN0aW9uIHBuKG4scixhKXtpZihuLnJlcGxpY2Epe3ZhciBzPU8oe30sbix7c2l0ZTpkZSxjbGllbnRUb2tlbjpuLnJlcGxpY2EuY2xpZW50VG9rZW59KSxsPXtsb2dzRW5kcG9pbnRCdWlsZGVyOmtlKHMsImxvZ3MiLGEpLHJ1bUVuZHBvaW50QnVpbGRlcjprZShzLCJydW0iLGEpfTtyZXR1cm4gci5wdXNoLmFwcGx5KHIsbWUobCkubWFwKGZ1bmN0aW9uKGQpe3JldHVybiBkLnVybFByZWZpeH0pKSxPKHthcHBsaWNhdGlvbklkOm4ucmVwbGljYS5hcHBsaWNhdGlvbklkfSxsKX19ZnVuY3Rpb24gX24obixyKXt2YXIgYT1tZShuKS5tYXAoZnVuY3Rpb24ocyl7cmV0dXJuIHMudXJsUHJlZml4fSk7cmV0dXJuIHI9PT1kZSYmYS5wdXNoKCJodHRwczovLyIuY29uY2F0KGNpLCIvIikpLGF9ZnVuY3Rpb24gQ3QobixyKXtyZXR1cm4gbiE9bnVsbCYmdHlwZW9mIG4hPSJzdHJpbmciPyh6LmVycm9yKCIiLmNvbmNhdChyLCIgbXVzdCBiZSBkZWZpbmVkIGFzIGEgc3RyaW5nIikpLCExKTohMH1mdW5jdGlvbiB2bihuKXtyZXR1cm4gbiYmdHlwZW9mIG49PSJzdHJpbmciJiYhLyhkYXRhZG9nfGRkb2d8ZGF0YWQwZ3xkZDBnKS8udGVzdChuKT8oei5lcnJvcigiU2l0ZSBzaG91bGQgYmUgYSB2YWxpZCBEYXRhZG9nIHNpdGUuICIuY29uY2F0KERlLCIgIikuY29uY2F0KGR0LCIvZ2V0dGluZ19zdGFydGVkL3NpdGUvLiIpKSwhMSk6ITB9ZnVuY3Rpb24gSmUobixyKXtyZXR1cm4gbiE9PXZvaWQgMCYmIW5yKG4pPyh6LmVycm9yKCIiLmNvbmNhdChyLCIgU2FtcGxlIFJhdGUgc2hvdWxkIGJlIGEgbnVtYmVyIGJldHdlZW4gMCBhbmQgMTAwIikpLCExKTohMH1mdW5jdGlvbiBnbihuKXt2YXIgcixhLHMsbCxkO2lmKCFufHwhbi5jbGllbnRUb2tlbil7ei5lcnJvcigiQ2xpZW50IFRva2VuIGlzIG5vdCBjb25maWd1cmVkLCB3ZSB3aWxsIG5vdCBzZW5kIGFueSBkYXRhLiIpO3JldHVybn1pZighKCF2bihuLnNpdGUpfHwhSmUobi5zZXNzaW9uU2FtcGxlUmF0ZSwiU2Vzc2lvbiIpfHwhSmUobi50ZWxlbWV0cnlTYW1wbGVSYXRlLCJUZWxlbWV0cnkiKXx8IUplKG4udGVsZW1ldHJ5Q29uZmlndXJhdGlvblNhbXBsZVJhdGUsIlRlbGVtZXRyeSBDb25maWd1cmF0aW9uIil8fCFKZShuLnRlbGVtZXRyeVVzYWdlU2FtcGxlUmF0ZSwiVGVsZW1ldHJ5IFVzYWdlIil8fCFDdChuLnZlcnNpb24sIlZlcnNpb24iKXx8IUN0KG4uZW52LCJFbnYiKXx8IUN0KG4uc2VydmljZSwiU2VydmljZSIpKSl7aWYobi50cmFja2luZ0NvbnNlbnQhPT12b2lkIDAmJiFKdChFdCxuLnRyYWNraW5nQ29uc2VudCkpe3ouZXJyb3IoJ1RyYWNraW5nIENvbnNlbnQgc2hvdWxkIGJlIGVpdGhlciAiZ3JhbnRlZCIgb3IgIm5vdC1ncmFudGVkIicpO3JldHVybn1yZXR1cm4gTyh7YmVmb3JlU2VuZDpuLmJlZm9yZVNlbmQmJnF0KG4uYmVmb3JlU2VuZCwiYmVmb3JlU2VuZCB0aHJldyBhbiBlcnJvcjoiKSxzZXNzaW9uU3RvcmVTdHJhdGVneVR5cGU6SnIobiksc2Vzc2lvblNhbXBsZVJhdGU6KHI9bi5zZXNzaW9uU2FtcGxlUmF0ZSkhPT1udWxsJiZyIT09dm9pZCAwP3I6MTAwLHRlbGVtZXRyeVNhbXBsZVJhdGU6KGE9bi50ZWxlbWV0cnlTYW1wbGVSYXRlKSE9PW51bGwmJmEhPT12b2lkIDA/YToyMCx0ZWxlbWV0cnlDb25maWd1cmF0aW9uU2FtcGxlUmF0ZToocz1uLnRlbGVtZXRyeUNvbmZpZ3VyYXRpb25TYW1wbGVSYXRlKSE9PW51bGwmJnMhPT12b2lkIDA/czo1LHRlbGVtZXRyeVVzYWdlU2FtcGxlUmF0ZToobD1uLnRlbGVtZXRyeVVzYWdlU2FtcGxlUmF0ZSkhPT1udWxsJiZsIT09dm9pZCAwP2w6NSxzZXJ2aWNlOm4uc2VydmljZXx8dm9pZCAwLHNpbGVudE11bHRpcGxlSW5pdDohIW4uc2lsZW50TXVsdGlwbGVJbml0LGFsbG93VW50cnVzdGVkRXZlbnRzOiEhbi5hbGxvd1VudHJ1c3RlZEV2ZW50cyx0cmFja2luZ0NvbnNlbnQ6KGQ9bi50cmFja2luZ0NvbnNlbnQpIT09bnVsbCYmZCE9PXZvaWQgMD9kOkV0LkdSQU5URUQsc3RvcmVDb250ZXh0c0Fjcm9zc1BhZ2VzOiEhbi5zdG9yZUNvbnRleHRzQWNyb3NzUGFnZXMsYmF0Y2hCeXRlc0xpbWl0OjE2KlgsZXZlbnRSYXRlTGltaXRlclRocmVzaG9sZDozZTMsbWF4VGVsZW1ldHJ5RXZlbnRzUGVyUGFnZToxNSxmbHVzaFRpbWVvdXQ6MzAqVGUsYmF0Y2hNZXNzYWdlc0xpbWl0OjUwLG1lc3NhZ2VCeXRlc0xpbWl0OjI1NipYfSxobihuKSl9fWZ1bmN0aW9uIHluKG4pe3JldHVybntzZXNzaW9uX3NhbXBsZV9yYXRlOm4uc2Vzc2lvblNhbXBsZVJhdGUsdGVsZW1ldHJ5X3NhbXBsZV9yYXRlOm4udGVsZW1ldHJ5U2FtcGxlUmF0ZSx0ZWxlbWV0cnlfY29uZmlndXJhdGlvbl9zYW1wbGVfcmF0ZTpuLnRlbGVtZXRyeUNvbmZpZ3VyYXRpb25TYW1wbGVSYXRlLHRlbGVtZXRyeV91c2FnZV9zYW1wbGVfcmF0ZTpuLnRlbGVtZXRyeVVzYWdlU2FtcGxlUmF0ZSx1c2VfYmVmb3JlX3NlbmQ6ISFuLmJlZm9yZVNlbmQsdXNlX2Nyb3NzX3NpdGVfc2Vzc2lvbl9jb29raWU6bi51c2VDcm9zc1NpdGVTZXNzaW9uQ29va2llLHVzZV9wYXJ0aXRpb25lZF9jcm9zc19zaXRlX3Nlc3Npb25fY29va2llOm4udXNlUGFydGl0aW9uZWRDcm9zc1NpdGVTZXNzaW9uQ29va2llLHVzZV9zZWN1cmVfc2Vzc2lvbl9jb29raWU6bi51c2VTZWN1cmVTZXNzaW9uQ29va2llLHVzZV9wcm94eTohIW4ucHJveHksc2lsZW50X211bHRpcGxlX2luaXQ6bi5zaWxlbnRNdWx0aXBsZUluaXQsdHJhY2tfc2Vzc2lvbl9hY3Jvc3Nfc3ViZG9tYWluczpuLnRyYWNrU2Vzc2lvbkFjcm9zc1N1YmRvbWFpbnMsYWxsb3dfZmFsbGJhY2tfdG9fbG9jYWxfc3RvcmFnZTohIW4uYWxsb3dGYWxsYmFja1RvTG9jYWxTdG9yYWdlLHN0b3JlX2NvbnRleHRzX2Fjcm9zc19wYWdlczohIW4uc3RvcmVDb250ZXh0c0Fjcm9zc1BhZ2VzLGFsbG93X3VudHJ1c3RlZF9ldmVudHM6ISFuLmFsbG93VW50cnVzdGVkRXZlbnRzLHRyYWNraW5nX2NvbnNlbnQ6bi50cmFja2luZ0NvbnNlbnR9fXZhciBUdDsoZnVuY3Rpb24obil7bi5XUklUQUJMRV9SRVNPVVJDRV9HUkFQSFFMPSJ3cml0YWJsZV9yZXNvdXJjZV9ncmFwaHFsIixuLlJFTU9URV9DT05GSUdVUkFUSU9OPSJyZW1vdGVfY29uZmlndXJhdGlvbiIsbi5VUERBVEVfVklFV19OQU1FPSJ1cGRhdGVfdmlld19uYW1lIixuLkxPTkdfQU5JTUFUSU9OX0ZSQU1FPSJsb25nX2FuaW1hdGlvbl9mcmFtZSJ9KShUdHx8KFR0PXt9KSk7dmFyIHBpPW5ldyBTZXQ7ZnVuY3Rpb24gbW4obil7QXJyYXkuaXNBcnJheShuKSYmYm4obi5maWx0ZXIoZnVuY3Rpb24ocil7cmV0dXJuIEp0KFR0LHIpfSkpfWZ1bmN0aW9uIGJuKG4pe24uZm9yRWFjaChmdW5jdGlvbihyKXtwaS5hZGQocil9KX1mdW5jdGlvbiBTbigpe3JldHVybiBwaX12YXIgemU9Ij8iO2Z1bmN0aW9uIEoobil7dmFyIHI9W10sYT1JdChuLCJzdGFjayIpLHM9U3RyaW5nKG4pO3JldHVybiBhJiZfdChhLHMpJiYoYT1hLnNsaWNlKHMubGVuZ3RoKSksYSYmYS5zcGxpdChgCmApLmZvckVhY2goZnVuY3Rpb24obCl7dmFyIGQ9d24obCl8fEFuKGwpfHxUbihsKXx8Rm4obCk7ZCYmKCFkLmZ1bmMmJmQubGluZSYmKGQuZnVuYz16ZSksci5wdXNoKGQpKX0pLHttZXNzYWdlOkl0KG4sIm1lc3NhZ2UiKSxuYW1lOkl0KG4sIm5hbWUiKSxzdGFjazpyfX12YXIgX2k9IigoPzpmaWxlfGh0dHBzP3xibG9ifGNocm9tZS1leHRlbnNpb258bmF0aXZlfGV2YWx8d2VicGFja3xzbmlwcGV0fDxhbm9ueW1vdXM+fFxcdytcXC58XFwvKS4qPykiLFVlPSIoPzo6KFxcZCspKSIseG49bmV3IFJlZ0V4cCgiXlxccyphdCAoLio/KSA/XFwoIi5jb25jYXQoX2kpLmNvbmNhdChVZSwiPyIpLmNvbmNhdChVZSwiP1xcKT9cXHMqJCIpLCJpIiksVW49bmV3IFJlZ0V4cCgiXFwoKFxcUyopIi5jb25jYXQoVWUpLmNvbmNhdChVZSwiXFwpIikpO2Z1bmN0aW9uIHduKG4pe3ZhciByPXhuLmV4ZWMobik7aWYocil7dmFyIGE9clsyXSYmclsyXS5pbmRleE9mKCJuYXRpdmUiKT09PTAscz1yWzJdJiZyWzJdLmluZGV4T2YoImV2YWwiKT09PTAsbD1Vbi5leGVjKHJbMl0pO3JldHVybiBzJiZsJiYoclsyXT1sWzFdLHJbM109bFsyXSxyWzRdPWxbM10pLHthcmdzOmE/W3JbMl1dOltdLGNvbHVtbjpyWzRdPytyWzRdOnZvaWQgMCxmdW5jOnJbMV18fHplLGxpbmU6clszXT8rclszXTp2b2lkIDAsdXJsOmE/dm9pZCAwOnJbMl19fX12YXIgRW49bmV3IFJlZ0V4cCgiXlxccyphdCA/Ii5jb25jYXQoX2kpLmNvbmNhdChVZSwiPyIpLmNvbmNhdChVZSwiPz9cXHMqJCIpLCJpIik7ZnVuY3Rpb24gQW4obil7dmFyIHI9RW4uZXhlYyhuKTtpZihyKXJldHVybnthcmdzOltdLGNvbHVtbjpyWzNdPytyWzNdOnZvaWQgMCxmdW5jOnplLGxpbmU6clsyXT8rclsyXTp2b2lkIDAsdXJsOnJbMV19fXZhciBDbj0vXlxzKmF0ICg/OigoPzpcW29iamVjdCBvYmplY3RcXSk/LispICk/XCg/KCg/OmZpbGV8bXMtYXBweHxodHRwcz98d2VicGFja3xibG9iKTouKj8pOihcZCspKD86OihcZCspKT9cKT9ccyokL2k7ZnVuY3Rpb24gVG4obil7dmFyIHI9Q24uZXhlYyhuKTtpZihyKXJldHVybnthcmdzOltdLGNvbHVtbjpyWzRdPytyWzRdOnZvaWQgMCxmdW5jOnJbMV18fHplLGxpbmU6K3JbM10sdXJsOnJbMl19fXZhciBJbj0vXlxzKiguKj8pKD86XCgoLio/KVwpKT8oPzpefEApKCg/OmZpbGV8aHR0cHM/fGJsb2J8Y2hyb21lfHdlYnBhY2t8cmVzb3VyY2V8Y2FwYWNpdG9yfFxbbmF0aXZlKS4qP3xbXkBdKmJ1bmRsZSkoPzo6KFxkKykpPyg/OjooXGQrKSk/XHMqJC9pLEJuPS8oXFMrKSBsaW5lIChcZCspKD86ID4gZXZhbCBsaW5lIFxkKykqID4gZXZhbC9pO2Z1bmN0aW9uIEZuKG4pe3ZhciByPUluLmV4ZWMobik7aWYocil7dmFyIGE9clszXSYmclszXS5pbmRleE9mKCIgPiBldmFsIik+LTEscz1Cbi5leGVjKHJbM10pO3JldHVybiBhJiZzJiYoclszXT1zWzFdLHJbNF09c1syXSxyWzVdPXZvaWQgMCkse2FyZ3M6clsyXT9yWzJdLnNwbGl0KCIsIik6W10sY29sdW1uOnJbNV0/K3JbNV06dm9pZCAwLGZ1bmM6clsxXXx8emUsbGluZTpyWzRdPytyWzRdOnZvaWQgMCx1cmw6clszXX19fWZ1bmN0aW9uIEl0KG4scil7aWYoISh0eXBlb2YgbiE9Im9iamVjdCJ8fCFufHwhKHIgaW4gbikpKXt2YXIgYT1uW3JdO3JldHVybiB0eXBlb2YgYT09InN0cmluZyI/YTp2b2lkIDB9fWZ1bmN0aW9uIExuKG4scixhLHMpe3ZhciBsPVt7dXJsOnIsY29sdW1uOnMsbGluZTphfV0sZD16bihuKSxoPWQubmFtZSxvPWQubWVzc2FnZTtyZXR1cm57bmFtZTpoLG1lc3NhZ2U6byxzdGFjazpsfX12YXIga249L14oPzpbVXVdbmNhdWdodCAoPzpleGNlcHRpb246ICk/KT8oPzooKD86RXZhbHxJbnRlcm5hbHxSYW5nZXxSZWZlcmVuY2V8U3ludGF4fFR5cGV8VVJJfClFcnJvcik6ICk/KFtcc1xTXSopJC87ZnVuY3Rpb24gem4obil7dmFyIHIsYSxzO3JldHVybnt9LnRvU3RyaW5nLmNhbGwobik9PT0iW29iamVjdCBTdHJpbmddIiYmKHI9a24uZXhlYyhuKSxhPXJbMV0scz1yWzJdKSx7bmFtZTphLG1lc3NhZ2U6c319ZnVuY3Rpb24gJGUoKXt2YXIgbj0yLHI9bmV3IEVycm9yLGE7aWYoIXIuc3RhY2spdHJ5e3Rocm93IHJ9Y2F0Y2h7fXJldHVybiBCZShmdW5jdGlvbigpe3ZhciBzPUoocik7cy5zdGFjaz1zLnN0YWNrLnNsaWNlKG4pLGE9aGUocyl9KSxhfWZ1bmN0aW9uIGhlKG4pe3ZhciByPXZpKG4pO3JldHVybiBuLnN0YWNrLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIHM9YS5mdW5jPT09Ij8iPyI8YW5vbnltb3VzPiI6YS5mdW5jLGw9YS5hcmdzJiZhLmFyZ3MubGVuZ3RoPjA/IigiLmNvbmNhdChhLmFyZ3Muam9pbigiLCAiKSwiKSIpOiIiLGQ9YS5saW5lPyI6Ii5jb25jYXQoYS5saW5lKToiIixoPWEubGluZSYmYS5jb2x1bW4/IjoiLmNvbmNhdChhLmNvbHVtbik6IiI7cis9YAogIGF0IGAuY29uY2F0KHMpLmNvbmNhdChsLCIgQCAiKS5jb25jYXQoYS51cmwpLmNvbmNhdChkKS5jb25jYXQoaCl9KSxyfWZ1bmN0aW9uIHZpKG4pe3JldHVybiIiLmNvbmNhdChuLm5hbWV8fCJFcnJvciIsIjogIikuY29uY2F0KG4ubWVzc2FnZSl9ZnVuY3Rpb24gY2UobixyLGEscyl7dmFyIGw9cz09PXZvaWQgMD97fTpzLGQ9bC5jb21wdXRlSGFuZGxpbmdTdGFjayxoPW5bcl07aWYodHlwZW9mIGghPSJmdW5jdGlvbiIpaWYociBpbiBuJiZfdChyLCJvbiIpKWg9aWU7ZWxzZSByZXR1cm57c3RvcDppZX07dmFyIG89ITEsXz1mdW5jdGlvbigpe2lmKG8pcmV0dXJuIGguYXBwbHkodGhpcyxhcmd1bWVudHMpO3ZhciBwPXB0KGFyZ3VtZW50cyksYztCZShhLG51bGwsW3t0YXJnZXQ6dGhpcyxwYXJhbWV0ZXJzOnAsb25Qb3N0Q2FsbDpmdW5jdGlvbihlKXtjPWV9LGhhbmRsaW5nU3RhY2s6ZD8kZSgpOnZvaWQgMH1dKTt2YXIgZz1oLmFwcGx5KHRoaXMscCk7cmV0dXJuIGMmJkJlKGMsbnVsbCxbZ10pLGd9O3JldHVybiBuW3JdPV8se3N0b3A6ZnVuY3Rpb24oKXtvPSEwLG5bcl09PT1fJiYobltyXT1oKX19fXZhciBSbj0yMjAqWCxPbj0iJCIsUG49MztmdW5jdGlvbiAkKG4scil7cj09PXZvaWQgMCYmKHI9Um4pO3ZhciBhPXhlKE9iamVjdC5wcm90b3R5cGUpLHM9eGUoQXJyYXkucHJvdG90eXBlKSxsPVtdLGQ9bmV3IFdlYWtNYXAsaD1CdChuLE9uLHZvaWQgMCxsLGQpLG89SlNPTi5zdHJpbmdpZnkoaCksXz1vP28ubGVuZ3RoOjA7aWYoXz5yKXtGdChyLCJkaXNjYXJkZWQiLG4pO3JldHVybn1mb3IoO2wubGVuZ3RoPjAmJl88cjspe3ZhciBwPWwuc2hpZnQoKSxjPTA7aWYoQXJyYXkuaXNBcnJheShwLnNvdXJjZSkpZm9yKHZhciBnPTA7ZzxwLnNvdXJjZS5sZW5ndGg7ZysrKXt2YXIgZT1CdChwLnNvdXJjZVtnXSxwLnBhdGgsZyxsLGQpO2lmKGUhPT12b2lkIDA/Xys9SlNPTi5zdHJpbmdpZnkoZSkubGVuZ3RoOl8rPTQsXys9YyxjPTEsXz5yKXtGdChyLCJ0cnVuY2F0ZWQiLG4pO2JyZWFrfXAudGFyZ2V0W2ddPWV9ZWxzZSBmb3IodmFyIGcgaW4gcC5zb3VyY2UpaWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHAuc291cmNlLGcpKXt2YXIgZT1CdChwLnNvdXJjZVtnXSxwLnBhdGgsZyxsLGQpO2lmKGUhPT12b2lkIDAmJihfKz1KU09OLnN0cmluZ2lmeShlKS5sZW5ndGgrYytnLmxlbmd0aCtQbixjPTEpLF8+cil7RnQociwidHJ1bmNhdGVkIixuKTticmVha31wLnRhcmdldFtnXT1lfX1yZXR1cm4gYSgpLHMoKSxofWZ1bmN0aW9uIEJ0KG4scixhLHMsbCl7dmFyIGQ9TW4obik7aWYoIWR8fHR5cGVvZiBkIT0ib2JqZWN0IilyZXR1cm4gRG4oZCk7dmFyIGg9Tm4oZCk7aWYoaCE9PSJbT2JqZWN0XSImJmghPT0iW0FycmF5XSImJmghPT0iW0Vycm9yXSIpcmV0dXJuIGg7dmFyIG89bjtpZihsLmhhcyhvKSlyZXR1cm4iW1JlZmVyZW5jZSBzZWVuIGF0ICIuY29uY2F0KGwuZ2V0KG8pLCJdIik7dmFyIF89YSE9PXZvaWQgMD8iIi5jb25jYXQociwiLiIpLmNvbmNhdChhKTpyLHA9QXJyYXkuaXNBcnJheShkKT9bXTp7fTtyZXR1cm4gbC5zZXQobyxfKSxzLnB1c2goe3NvdXJjZTpkLHRhcmdldDpwLHBhdGg6X30pLHB9ZnVuY3Rpb24gRG4obil7cmV0dXJuIHR5cGVvZiBuPT0iYmlnaW50Ij8iW0JpZ0ludF0gIi5jb25jYXQobi50b1N0cmluZygpKTp0eXBlb2Ygbj09ImZ1bmN0aW9uIj8iW0Z1bmN0aW9uXSAiLmNvbmNhdChuLm5hbWV8fCJ1bmtub3duIik6dHlwZW9mIG49PSJzeW1ib2wiPyJbU3ltYm9sXSAiLmNvbmNhdChuLmRlc2NyaXB0aW9ufHxuLnRvU3RyaW5nKCkpOm59ZnVuY3Rpb24gTm4obil7dHJ5e2lmKG4gaW5zdGFuY2VvZiBFdmVudClyZXR1cm57aXNUcnVzdGVkOm4uaXNUcnVzdGVkfTt2YXIgcj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobiksYT1yLm1hdGNoKC9cW29iamVjdCAoLiopXF0vKTtpZihhJiZhWzFdKXJldHVybiJbIi5jb25jYXQoYVsxXSwiXSIpfWNhdGNoe31yZXR1cm4iW1Vuc2VyaWFsaXphYmxlXSJ9ZnVuY3Rpb24gTW4obil7dmFyIHI9bjtpZihyJiZ0eXBlb2Ygci50b0pTT049PSJmdW5jdGlvbiIpdHJ5e3JldHVybiByLnRvSlNPTigpfWNhdGNoe31yZXR1cm4gbn1mdW5jdGlvbiBGdChuLHIsYSl7ei53YXJuKCJUaGUgZGF0YSBwcm92aWRlZCBoYXMgYmVlbiAiLmNvbmNhdChyLCIgYXMgaXQgaXMgb3ZlciB0aGUgbGltaXQgb2YgIikuY29uY2F0KG4sIiBjaGFyYWN0ZXJzOiIpLGEpfXZhciBnaT0iTm8gc3RhY2ssIGNvbnNpZGVyIHVzaW5nIGFuIGluc3RhbmNlIG9mIEVycm9yIjtmdW5jdGlvbiB5aShuKXt2YXIgcj1uLnN0YWNrVHJhY2UsYT1uLm9yaWdpbmFsRXJyb3Iscz1uLmhhbmRsaW5nU3RhY2ssbD1uLnN0YXJ0Q2xvY2tzLGQ9bi5ub25FcnJvclByZWZpeCxoPW4uc291cmNlLG89bi5oYW5kbGluZyxfPWEgaW5zdGFuY2VvZiBFcnJvcixwPUduKHIsXyxkLGEpLGM9SG4oXyxyKT9oZShyKTpnaSxnPV8/YmkoYSxoKTp2b2lkIDAsZT1yP3IubmFtZTp2b2lkIDAsdD1taShhKTtyZXR1cm57c3RhcnRDbG9ja3M6bCxzb3VyY2U6aCxoYW5kbGluZzpvLGhhbmRsaW5nU3RhY2s6cyxvcmlnaW5hbEVycm9yOmEsdHlwZTplLG1lc3NhZ2U6cCxzdGFjazpjLGNhdXNlczpnLGZpbmdlcnByaW50OnR9fWZ1bmN0aW9uIEduKG4scixhLHMpe3JldHVybiBuIT1udWxsJiZuLm1lc3NhZ2UmJihuIT1udWxsJiZuLm5hbWUpP24ubWVzc2FnZTpyPyJFbXB0eSBtZXNzYWdlIjoiIi5jb25jYXQoYSwiICIpLmNvbmNhdCh1ZSgkKHMpKSl9ZnVuY3Rpb24gSG4obixyKXtyZXR1cm4gcj09PXZvaWQgMD8hMTpuPyEwOnIuc3RhY2subGVuZ3RoPjAmJihyLnN0YWNrLmxlbmd0aD4xfHxyLnN0YWNrWzBdLnVybCE9PXZvaWQgMCl9ZnVuY3Rpb24gbWkobil7cmV0dXJuIG4gaW5zdGFuY2VvZiBFcnJvciYmImRkX2ZpbmdlcnByaW50ImluIG4/U3RyaW5nKG4uZGRfZmluZ2VycHJpbnQpOnZvaWQgMH1mdW5jdGlvbiBZbihuKXt2YXIgcjtyZXR1cm4ocj0vQCAoLispLy5leGVjKG4pKT09PW51bGx8fHI9PT12b2lkIDA/dm9pZCAwOnJbMV19ZnVuY3Rpb24gYmkobixyKXtmb3IodmFyIGE9bixzPVtdOyhhPT1udWxsP3ZvaWQgMDphLmNhdXNlKWluc3RhbmNlb2YgRXJyb3ImJnMubGVuZ3RoPDEwOyl7dmFyIGw9SihhLmNhdXNlKTtzLnB1c2goe21lc3NhZ2U6YS5jYXVzZS5tZXNzYWdlLHNvdXJjZTpyLHR5cGU6bD09bnVsbD92b2lkIDA6bC5uYW1lLHN0YWNrOmwmJmhlKGwpfSksYT1hLmNhdXNlfXJldHVybiBzLmxlbmd0aD9zOnZvaWQgMH12YXIgSD17QUdFTlQ6ImFnZW50IixDT05TT0xFOiJjb25zb2xlIixDVVNUT006ImN1c3RvbSIsTE9HR0VSOiJsb2dnZXIiLE5FVFdPUks6Im5ldHdvcmsiLFNPVVJDRToic291cmNlIixSRVBPUlQ6InJlcG9ydCJ9O2Z1bmN0aW9uIFZuKG4pe3ZhciByPWZ1bmN0aW9uKGwsZCl7dmFyIGg9eWkoe3N0YWNrVHJhY2U6bCxvcmlnaW5hbEVycm9yOmQsc3RhcnRDbG9ja3M6ZWUoKSxub25FcnJvclByZWZpeDoiVW5jYXVnaHQiLHNvdXJjZTpILlNPVVJDRSxoYW5kbGluZzoidW5oYW5kbGVkIn0pO24ubm90aWZ5KGgpfSxhPWpuKHIpLnN0b3Ascz1LbihyKS5zdG9wO3JldHVybntzdG9wOmZ1bmN0aW9uKCl7YSgpLHMoKX19fWZ1bmN0aW9uIGpuKG4pe3JldHVybiBjZSh3aW5kb3csIm9uZXJyb3IiLGZ1bmN0aW9uKHIpe3ZhciBhPXIucGFyYW1ldGVycyxzPWFbMF0sbD1hWzFdLGQ9YVsyXSxoPWFbM10sbz1hWzRdLF87byBpbnN0YW5jZW9mIEVycm9yP189SihvKTpfPUxuKHMsbCxkLGgpLG4oXyxvPz9zKX0pfWZ1bmN0aW9uIEtuKG4pe3JldHVybiBjZSh3aW5kb3csIm9udW5oYW5kbGVkcmVqZWN0aW9uIixmdW5jdGlvbihyKXt2YXIgYT1yLnBhcmFtZXRlcnNbMF0scz1hLnJlYXNvbnx8IkVtcHR5IHJlYXNvbiIsbD1KKHMpO24obCxzKX0pfWZ1bmN0aW9uIHFuKG4pe3ZhciByPU8oe3ZlcnNpb246IjUuMjkuMSIsb25SZWFkeTpmdW5jdGlvbihhKXthKCl9fSxuKTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHIsIl9zZXREZWJ1ZyIse2dldDpmdW5jdGlvbigpe3JldHVybiB5cn0sZW51bWVyYWJsZTohMX0pLHJ9ZnVuY3Rpb24gV24obixyLGEpe3ZhciBzPW5bcl07cyYmIXMucSYmcy52ZXJzaW9uJiZ6Lndhcm4oIlNESyBpcyBsb2FkZWQgbW9yZSB0aGFuIG9uY2UuIFRoaXMgaXMgdW5zdXBwb3J0ZWQgYW5kIG1pZ2h0IGhhdmUgdW5leHBlY3RlZCBiZWhhdmlvci4iKSxuW3JdPWEscyYmcy5xJiZzLnEuZm9yRWFjaChmdW5jdGlvbihsKXtyZXR1cm4gcXQobCwib25SZWFkeSBjYWxsYmFjayB0aHJldyBhbiBlcnJvcjoiKSgpfSl9ZnVuY3Rpb24gU2kobixyKXtyLnNpbGVudE11bHRpcGxlSW5pdHx8ei5lcnJvcigiIi5jb25jYXQobiwiIGlzIGFscmVhZHkgaW5pdGlhbGl6ZWQuIikpfWZ1bmN0aW9uIHBlKG4scixhLHMsbCl7cmV0dXJuIEx0KG4scixbYV0scyxsKX1mdW5jdGlvbiBMdChuLHIsYSxzLGwpe3ZhciBkPWw9PT12b2lkIDA/e306bCxoPWQub25jZSxvPWQuY2FwdHVyZSxfPWQucGFzc2l2ZSxwPUIoZnVuY3Rpb24odCl7IXQuaXNUcnVzdGVkJiYhdC5fX2RkSXNUcnVzdGVkJiYhbi5hbGxvd1VudHJ1c3RlZEV2ZW50c3x8KGgmJmUoKSxzKHQpKX0pLGM9Xz97Y2FwdHVyZTpvLHBhc3NpdmU6X306byxnPWJlKHIsImFkZEV2ZW50TGlzdGVuZXIiKTthLmZvckVhY2goZnVuY3Rpb24odCl7cmV0dXJuIGcuY2FsbChyLHQscCxjKX0pO2Z1bmN0aW9uIGUoKXt2YXIgdD1iZShyLCJyZW1vdmVFdmVudExpc3RlbmVyIik7YS5mb3JFYWNoKGZ1bmN0aW9uKGkpe3JldHVybiB0LmNhbGwocixpLHAsYyl9KX1yZXR1cm57c3RvcDplfX12YXIgWmU9e2ludGVydmVudGlvbjoiaW50ZXJ2ZW50aW9uIixkZXByZWNhdGlvbjoiZGVwcmVjYXRpb24iLGNzcFZpb2xhdGlvbjoiY3NwX3Zpb2xhdGlvbiJ9O2Z1bmN0aW9uIFhuKG4scil7dmFyIGE9W107eWUocixaZS5jc3BWaW9sYXRpb24pJiZhLnB1c2goJG4obikpO3ZhciBzPXIuZmlsdGVyKGZ1bmN0aW9uKGwpe3JldHVybiBsIT09WmUuY3NwVmlvbGF0aW9ufSk7cmV0dXJuIHMubGVuZ3RoJiZhLnB1c2goSm4ocykpLGVpLmFwcGx5KHZvaWQgMCxhKX1mdW5jdGlvbiBKbihuKXtyZXR1cm4gbmV3IFIoZnVuY3Rpb24ocil7aWYod2luZG93LlJlcG9ydGluZ09ic2VydmVyKXt2YXIgYT1CKGZ1bmN0aW9uKGwsZCl7cmV0dXJuIGwuZm9yRWFjaChmdW5jdGlvbihoKXtyZXR1cm4gci5ub3RpZnkoWm4oaCkpfSl9KSxzPW5ldyB3aW5kb3cuUmVwb3J0aW5nT2JzZXJ2ZXIoYSx7dHlwZXM6bixidWZmZXJlZDohMH0pO3JldHVybiBzLm9ic2VydmUoKSxmdW5jdGlvbigpe3MuZGlzY29ubmVjdCgpfX19KX1mdW5jdGlvbiAkbihuKXtyZXR1cm4gbmV3IFIoZnVuY3Rpb24ocil7dmFyIGE9cGUobixkb2N1bWVudCwic2VjdXJpdHlwb2xpY3l2aW9sYXRpb24iLGZ1bmN0aW9uKHMpe3Iubm90aWZ5KFFuKHMpKX0pLnN0b3A7cmV0dXJuIGF9KX1mdW5jdGlvbiBabihuKXt2YXIgcj1uLnR5cGUsYT1uLmJvZHk7cmV0dXJuIHhpKHt0eXBlOmEuaWQsbWVzc2FnZToiIi5jb25jYXQociwiOiAiKS5jb25jYXQoYS5tZXNzYWdlKSxvcmlnaW5hbEVycm9yOm4sc3RhY2s6VWkoYS5pZCxhLm1lc3NhZ2UsYS5zb3VyY2VGaWxlLGEubGluZU51bWJlcixhLmNvbHVtbk51bWJlcil9KX1mdW5jdGlvbiBRbihuKXt2YXIgcj0iJyIuY29uY2F0KG4uYmxvY2tlZFVSSSwiJyBibG9ja2VkIGJ5ICciKS5jb25jYXQobi5lZmZlY3RpdmVEaXJlY3RpdmUsIicgZGlyZWN0aXZlIik7cmV0dXJuIHhpKHt0eXBlOm4uZWZmZWN0aXZlRGlyZWN0aXZlLG1lc3NhZ2U6IiIuY29uY2F0KFplLmNzcFZpb2xhdGlvbiwiOiAiKS5jb25jYXQociksb3JpZ2luYWxFcnJvcjpuLGNzcDp7ZGlzcG9zaXRpb246bi5kaXNwb3NpdGlvbn0sc3RhY2s6VWkobi5lZmZlY3RpdmVEaXJlY3RpdmUsbi5vcmlnaW5hbFBvbGljeT8iIi5jb25jYXQociwnIG9mIHRoZSBwb2xpY3kgIicpLmNvbmNhdCh4cihuLm9yaWdpbmFsUG9saWN5LDEwMCwiLi4uIiksJyInKToibm8gcG9saWN5IixuLnNvdXJjZUZpbGUsbi5saW5lTnVtYmVyLG4uY29sdW1uTnVtYmVyKX0pfWZ1bmN0aW9uIHhpKG4pe3JldHVybiBPKHtzdGFydENsb2NrczplZSgpLHNvdXJjZTpILlJFUE9SVCxoYW5kbGluZzoidW5oYW5kbGVkIn0sbil9ZnVuY3Rpb24gVWkobixyLGEscyxsKXtyZXR1cm4gYT9oZSh7bmFtZTpuLG1lc3NhZ2U6cixzdGFjazpbe2Z1bmM6Ij8iLHVybDphLGxpbmU6cz8/dm9pZCAwLGNvbHVtbjpsPz92b2lkIDB9XX0pOnZvaWQgMH1mdW5jdGlvbiB3aShuLHIpe3ZhciBhPXdpbmRvdy5fX2RkQnJvd3NlclNka0V4dGVuc2lvbkNhbGxiYWNrO2EmJmEoe3R5cGU6bixwYXlsb2FkOnJ9KX1mdW5jdGlvbiBrdChuKXtyZXR1cm4gbj09PW51bGw/Im51bGwiOkFycmF5LmlzQXJyYXkobik/ImFycmF5Ijp0eXBlb2Ygbn1mdW5jdGlvbiBRZShuLHIsYSl7aWYoYT09PXZvaWQgMCYmKGE9ZXMoKSkscj09PXZvaWQgMClyZXR1cm4gbjtpZih0eXBlb2YgciE9Im9iamVjdCJ8fHI9PT1udWxsKXJldHVybiByO2lmKHIgaW5zdGFuY2VvZiBEYXRlKXJldHVybiBuZXcgRGF0ZShyLmdldFRpbWUoKSk7aWYociBpbnN0YW5jZW9mIFJlZ0V4cCl7dmFyIHM9ci5mbGFnc3x8W3IuZ2xvYmFsPyJnIjoiIixyLmlnbm9yZUNhc2U/ImkiOiIiLHIubXVsdGlsaW5lPyJtIjoiIixyLnN0aWNreT8ieSI6IiIsci51bmljb2RlPyJ1IjoiIl0uam9pbigiIik7cmV0dXJuIG5ldyBSZWdFeHAoci5zb3VyY2Uscyl9aWYoIWEuaGFzQWxyZWFkeUJlZW5TZWVuKHIpKXtpZihBcnJheS5pc0FycmF5KHIpKXtmb3IodmFyIGw9QXJyYXkuaXNBcnJheShuKT9uOltdLGQ9MDtkPHIubGVuZ3RoOysrZClsW2RdPVFlKGxbZF0scltkXSxhKTtyZXR1cm4gbH12YXIgaD1rdChuKT09PSJvYmplY3QiP246e307Zm9yKHZhciBvIGluIHIpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHIsbykmJihoW29dPVFlKGhbb10scltvXSxhKSk7cmV0dXJuIGh9fWZ1bmN0aW9uIEVpKG4pe3JldHVybiBRZSh2b2lkIDAsbil9ZnVuY3Rpb24gd2UoKXtmb3IodmFyIG49W10scj0wO3I8YXJndW1lbnRzLmxlbmd0aDtyKyspbltyXT1hcmd1bWVudHNbcl07Zm9yKHZhciBhLHM9MCxsPW47czxsLmxlbmd0aDtzKyspe3ZhciBkPWxbc107ZCE9bnVsbCYmKGE9UWUoYSxkKSl9cmV0dXJuIGF9ZnVuY3Rpb24gZXMoKXtpZih0eXBlb2YgV2Vha1NldDwidSIpe3ZhciBuPW5ldyBXZWFrU2V0O3JldHVybntoYXNBbHJlYWR5QmVlblNlZW46ZnVuY3Rpb24oYSl7dmFyIHM9bi5oYXMoYSk7cmV0dXJuIHN8fG4uYWRkKGEpLHN9fX12YXIgcj1bXTtyZXR1cm57aGFzQWxyZWFkeUJlZW5TZWVuOmZ1bmN0aW9uKGEpe3ZhciBzPXIuaW5kZXhPZihhKT49MDtyZXR1cm4gc3x8ci5wdXNoKGEpLHN9fX1mdW5jdGlvbiB0cygpe3ZhciBuLHI9d2luZG93Lm5hdmlnYXRvcjtyZXR1cm57c3RhdHVzOnIub25MaW5lPyJjb25uZWN0ZWQiOiJub3RfY29ubmVjdGVkIixpbnRlcmZhY2VzOnIuY29ubmVjdGlvbiYmci5jb25uZWN0aW9uLnR5cGU/W3IuY29ubmVjdGlvbi50eXBlXTp2b2lkIDAsZWZmZWN0aXZlX3R5cGU6KG49ci5jb25uZWN0aW9uKT09PW51bGx8fG49PT12b2lkIDA/dm9pZCAwOm4uZWZmZWN0aXZlVHlwZX19ZnVuY3Rpb24gaXMobil7dmFyIHI9bmV3IFNldDtyZXR1cm4gbi5mb3JFYWNoKGZ1bmN0aW9uKGEpe3JldHVybiByLmFkZChhKX0pLHB0KHIpfWZ1bmN0aW9uIEFpKG4scil7dmFyIGE9bi5pbmRleE9mKHIpO2E+PTAmJm4uc3BsaWNlKGEsMSl9dmFyIHJzPTUwMDtmdW5jdGlvbiBDaSgpe3ZhciBuPVtdLHI9ZnVuY3Rpb24obCl7dmFyIGQ9bi5wdXNoKGwpO2Q+cnMmJm4uc3BsaWNlKDAsMSl9LGE9ZnVuY3Rpb24obCl7QWkobixsKX0scz1mdW5jdGlvbihsKXtuLmZvckVhY2goZnVuY3Rpb24oZCl7cmV0dXJuIGQobCl9KSxuLmxlbmd0aD0wfTtyZXR1cm57YWRkOnIscmVtb3ZlOmEsZHJhaW46c319dmFyIF9lPXtsb2c6ImxvZyIsY29uZmlndXJhdGlvbjoiY29uZmlndXJhdGlvbiIsdXNhZ2U6InVzYWdlIn0sbnM9WyJodHRwczovL3d3dy5kYXRhZG9naHEtYnJvd3Nlci1hZ2VudC5jb20iLCJodHRwczovL3d3dy5kYXRhZDBnLWJyb3dzZXItYWdlbnQuY29tIiwiaHR0cHM6Ly9kM3VjMDY5ZmNuN3V4dy5jbG91ZGZyb250Lm5ldCIsImh0dHBzOi8vZDIweHR6d3pjbDBjZWIuY2xvdWRmcm9udC5uZXQiLCJodHRwOi8vbG9jYWxob3N0IiwiPGFub255bW91cz4iXSxzcz1bbm5dLFRpPUNpKCksRWU9ZnVuY3Rpb24obil7VGkuYWRkKGZ1bmN0aW9uKCl7cmV0dXJuIEVlKG4pfSl9O2Z1bmN0aW9uIG9zKG4scil7dmFyIGEscyxsPW5ldyBSLGQ9bmV3IFNldCxoPSF5ZShzcyxyLnNpdGUpJiZOZShyLnRlbGVtZXRyeVNhbXBsZVJhdGUpLG89KGE9e30sYVtfZS5sb2ddPWgsYVtfZS5jb25maWd1cmF0aW9uXT1oJiZOZShyLnRlbGVtZXRyeUNvbmZpZ3VyYXRpb25TYW1wbGVSYXRlKSxhW19lLnVzYWdlXT1oJiZOZShyLnRlbGVtZXRyeVVzYWdlU2FtcGxlUmF0ZSksYSksXz1hcygpO0VlPWZ1bmN0aW9uKGMpe3ZhciBnPXVlKGMpO2lmKG9bYy50eXBlXSYmZC5zaXplPHIubWF4VGVsZW1ldHJ5RXZlbnRzUGVyUGFnZSYmIWQuaGFzKGcpKXt2YXIgZT1wKG4sYyxfKTtsLm5vdGlmeShlKSx3aSgidGVsZW1ldHJ5IixlKSxkLmFkZChnKX19LGdyKEJpKTtmdW5jdGlvbiBwKGMsZyxlKXtyZXR1cm4gd2Uoe3R5cGU6InRlbGVtZXRyeSIsZGF0ZTpRKCksc2VydmljZTpjLHZlcnNpb246IjUuMjkuMSIsc291cmNlOiJicm93c2VyIixfZGQ6e2Zvcm1hdF92ZXJzaW9uOjJ9LHRlbGVtZXRyeTp3ZShnLHtydW50aW1lX2VudjplLGNvbm5lY3Rpdml0eTp0cygpLHNka19zZXR1cDoibnBtIn0pLGV4cGVyaW1lbnRhbF9mZWF0dXJlczpwdChTbigpKX0scyE9PXZvaWQgMD9zKCk6e30pfXJldHVybntzZXRDb250ZXh0UHJvdmlkZXI6ZnVuY3Rpb24oYyl7cz1jfSxvYnNlcnZhYmxlOmwsZW5hYmxlZDpofX1mdW5jdGlvbiBhcygpe3JldHVybntpc19sb2NhbF9maWxlOndpbmRvdy5sb2NhdGlvbi5wcm90b2NvbD09PSJmaWxlOiIsaXNfd29ya2VyOiJXb3JrZXJHbG9iYWxTY29wZSJpbiBzZWxmfX1mdW5jdGlvbiBmcygpe1RpLmRyYWluKCl9ZnVuY3Rpb24gbHMobil7cmV0dXJuIG4uc2l0ZT09PXRufWZ1bmN0aW9uIElpKG4scil7Z3QoTC5kZWJ1ZyxuLHIpLEVlKE8oe3R5cGU6X2UubG9nLG1lc3NhZ2U6bixzdGF0dXM6ImRlYnVnIn0scikpfWZ1bmN0aW9uIEJpKG4scil7RWUoTyh7dHlwZTpfZS5sb2csc3RhdHVzOiJlcnJvciJ9LGhzKG4pLHIpKX1mdW5jdGlvbiB1cyhuKXtFZSh7dHlwZTpfZS5jb25maWd1cmF0aW9uLGNvbmZpZ3VyYXRpb246bn0pfWZ1bmN0aW9uIGRzKG4pe0VlKHt0eXBlOl9lLnVzYWdlLHVzYWdlOm59KX1mdW5jdGlvbiBocyhuKXtpZihuIGluc3RhbmNlb2YgRXJyb3Ipe3ZhciByPUoobik7cmV0dXJue2Vycm9yOntraW5kOnIubmFtZSxzdGFjazpoZShjcyhyKSl9LG1lc3NhZ2U6ci5tZXNzYWdlfX1yZXR1cm57ZXJyb3I6e3N0YWNrOmdpfSxtZXNzYWdlOiIiLmNvbmNhdCgiVW5jYXVnaHQiLCIgIikuY29uY2F0KHVlKG4pKX19ZnVuY3Rpb24gY3Mobil7cmV0dXJuIG4uc3RhY2s9bi5zdGFjay5maWx0ZXIoZnVuY3Rpb24ocil7cmV0dXJuIXIudXJsfHxucy5zb21lKGZ1bmN0aW9uKGEpe3JldHVybiBfdChyLnVybCxhKX0pfSksbn12YXIgZXQ9MS8wLHBzPXNlO2Z1bmN0aW9uIF9zKG4pe3ZhciByPW4uZXhwaXJlRGVsYXksYT1uLm1heEVudHJpZXMscz1bXSxsPXl0KGZ1bmN0aW9uKCl7cmV0dXJuIGQoKX0scHMpO2Z1bmN0aW9uIGQoKXtmb3IodmFyIGU9TWUoKS1yO3MubGVuZ3RoPjAmJnNbcy5sZW5ndGgtMV0uZW5kVGltZTxlOylzLnBvcCgpfWZ1bmN0aW9uIGgoZSx0KXt2YXIgaT17dmFsdWU6ZSxzdGFydFRpbWU6dCxlbmRUaW1lOmV0LHJlbW92ZTpmdW5jdGlvbigpe0FpKHMsaSl9LGNsb3NlOmZ1bmN0aW9uKGYpe2kuZW5kVGltZT1mfX07cmV0dXJuIGEmJnMubGVuZ3RoPj1hJiZzLnBvcCgpLHMudW5zaGlmdChpKSxpfWZ1bmN0aW9uIG8oZSx0KXtlPT09dm9pZCAwJiYoZT1ldCksdD09PXZvaWQgMCYmKHQ9e3JldHVybkluYWN0aXZlOiExfSk7Zm9yKHZhciBpPTAsZj1zO2k8Zi5sZW5ndGg7aSsrKXt2YXIgdT1mW2ldO2lmKHUuc3RhcnRUaW1lPD1lKXtpZih0LnJldHVybkluYWN0aXZlfHxlPD11LmVuZFRpbWUpcmV0dXJuIHUudmFsdWU7YnJlYWt9fX1mdW5jdGlvbiBfKGUpe3ZhciB0PXNbMF07dCYmdC5lbmRUaW1lPT09ZXQmJnQuY2xvc2UoZSl9ZnVuY3Rpb24gcChlLHQpe2U9PT12b2lkIDAmJihlPWV0KSx0PT09dm9pZCAwJiYodD0wKTt2YXIgaT1scihlLHQpO3JldHVybiBzLmZpbHRlcihmdW5jdGlvbihmKXtyZXR1cm4gZi5zdGFydFRpbWU8PWkmJmU8PWYuZW5kVGltZX0pLm1hcChmdW5jdGlvbihmKXtyZXR1cm4gZi52YWx1ZX0pfWZ1bmN0aW9uIGMoKXtzPVtdfWZ1bmN0aW9uIGcoKXtRdChsKX1yZXR1cm57YWRkOmgsZmluZDpvLGNsb3NlQWN0aXZlOl8sZmluZEFsbDpwLHJlc2V0OmMsc3RvcDpnfX12YXIgdnM9c2UsZ3M9eHQ7ZnVuY3Rpb24geXMobixyLGEscyl7dmFyIGw9bmV3IFIsZD1uZXcgUixoPSRyKG4uc2Vzc2lvblN0b3JlU3RyYXRlZ3lUeXBlLHIsYSksbz1fcyh7ZXhwaXJlRGVsYXk6Z3N9KTtoLnJlbmV3T2JzZXJ2YWJsZS5zdWJzY3JpYmUoZnVuY3Rpb24oKXtvLmFkZChfKCksTWUoKSksbC5ub3RpZnkoKX0pLGguZXhwaXJlT2JzZXJ2YWJsZS5zdWJzY3JpYmUoZnVuY3Rpb24oKXtkLm5vdGlmeSgpLG8uY2xvc2VBY3RpdmUoTWUoKSl9KSxoLmV4cGFuZE9yUmVuZXdTZXNzaW9uKCksby5hZGQoXygpLGFyKCkucmVsYXRpdmUpLHMub2JzZXJ2YWJsZS5zdWJzY3JpYmUoZnVuY3Rpb24oKXtzLmlzR3JhbnRlZCgpP2guZXhwYW5kT3JSZW5ld1Nlc3Npb24oKTpoLmV4cGlyZSgpfSksbXMobixmdW5jdGlvbigpe3MuaXNHcmFudGVkKCkmJmguZXhwYW5kT3JSZW5ld1Nlc3Npb24oKX0pLGJzKG4sZnVuY3Rpb24oKXtyZXR1cm4gaC5leHBhbmRTZXNzaW9uKCl9KSxTcyhuLGZ1bmN0aW9uKCl7cmV0dXJuIGgucmVzdGFydFNlc3Npb24oKX0pO2Z1bmN0aW9uIF8oKXtyZXR1cm57aWQ6aC5nZXRTZXNzaW9uKCkuaWQsdHJhY2tpbmdUeXBlOmguZ2V0U2Vzc2lvbigpW3JdLGlzUmVwbGF5Rm9yY2VkOiEhaC5nZXRTZXNzaW9uKCkuZm9yY2VkUmVwbGF5fX1yZXR1cm57ZmluZFNlc3Npb246ZnVuY3Rpb24ocCxjKXtyZXR1cm4gby5maW5kKHAsYyl9LHJlbmV3T2JzZXJ2YWJsZTpsLGV4cGlyZU9ic2VydmFibGU6ZCxzZXNzaW9uU3RhdGVVcGRhdGVPYnNlcnZhYmxlOmguc2Vzc2lvblN0YXRlVXBkYXRlT2JzZXJ2YWJsZSxleHBpcmU6aC5leHBpcmUsdXBkYXRlU2Vzc2lvblN0YXRlOmgudXBkYXRlU2Vzc2lvblN0YXRlfX1mdW5jdGlvbiBtcyhuLHIpe0x0KG4sd2luZG93LFsiY2xpY2siLCJ0b3VjaHN0YXJ0Iiwia2V5ZG93biIsInNjcm9sbCJdLHIse2NhcHR1cmU6ITAscGFzc2l2ZTohMH0pLnN0b3B9ZnVuY3Rpb24gYnMobixyKXt2YXIgYT1mdW5jdGlvbigpe2RvY3VtZW50LnZpc2liaWxpdHlTdGF0ZT09PSJ2aXNpYmxlIiYmcigpfTtwZShuLGRvY3VtZW50LCJ2aXNpYmlsaXR5Y2hhbmdlIixhKS5zdG9wLHl0KGEsdnMpfWZ1bmN0aW9uIFNzKG4scil7cGUobix3aW5kb3csInJlc3VtZSIscix7Y2FwdHVyZTohMH0pLnN0b3B9ZnVuY3Rpb24gRmkobil7cmV0dXJuIG4+PTUwMH1mdW5jdGlvbiB4cyhuKXt0cnl7cmV0dXJuIG4uY2xvbmUoKX1jYXRjaHtyZXR1cm59fXZhciBVcz04MCpYLHdzPTMyLExpPTMqWHQsRXM9c2Usa2k9VGU7ZnVuY3Rpb24gemkobixyLGEscyxsKXtyLnRyYW5zcG9ydFN0YXR1cz09PTAmJnIucXVldWVkUGF5bG9hZHMuc2l6ZSgpPT09MCYmci5iYW5kd2lkdGhNb25pdG9yLmNhbkhhbmRsZShuKT9PaShuLHIsYSx7b25TdWNjZXNzOmZ1bmN0aW9uKCl7cmV0dXJuIFBpKDAscixhLHMsbCl9LG9uRmFpbHVyZTpmdW5jdGlvbigpe3IucXVldWVkUGF5bG9hZHMuZW5xdWV1ZShuKSxSaShyLGEscyxsKX19KTpyLnF1ZXVlZFBheWxvYWRzLmVucXVldWUobil9ZnVuY3Rpb24gUmkobixyLGEscyl7bi50cmFuc3BvcnRTdGF0dXM9PT0yJiZGZShmdW5jdGlvbigpe3ZhciBsPW4ucXVldWVkUGF5bG9hZHMuZmlyc3QoKTtPaShsLG4scix7b25TdWNjZXNzOmZ1bmN0aW9uKCl7bi5xdWV1ZWRQYXlsb2Fkcy5kZXF1ZXVlKCksbi5jdXJyZW50QmFja29mZlRpbWU9a2ksUGkoMSxuLHIsYSxzKX0sb25GYWlsdXJlOmZ1bmN0aW9uKCl7bi5jdXJyZW50QmFja29mZlRpbWU9TWF0aC5taW4oRXMsbi5jdXJyZW50QmFja29mZlRpbWUqMiksUmkobixyLGEscyl9fSl9LG4uY3VycmVudEJhY2tvZmZUaW1lKX1mdW5jdGlvbiBPaShuLHIsYSxzKXt2YXIgbD1zLm9uU3VjY2VzcyxkPXMub25GYWlsdXJlO3IuYmFuZHdpZHRoTW9uaXRvci5hZGQobiksYShuLGZ1bmN0aW9uKGgpe3IuYmFuZHdpZHRoTW9uaXRvci5yZW1vdmUobiksQXMoaCk/KHIudHJhbnNwb3J0U3RhdHVzPXIuYmFuZHdpZHRoTW9uaXRvci5vbmdvaW5nUmVxdWVzdENvdW50PjA/MToyLG4ucmV0cnk9e2NvdW50Om4ucmV0cnk/bi5yZXRyeS5jb3VudCsxOjEsbGFzdEZhaWx1cmVTdGF0dXM6aC5zdGF0dXN9LGQoKSk6KHIudHJhbnNwb3J0U3RhdHVzPTAsbCgpKX0pfWZ1bmN0aW9uIFBpKG4scixhLHMsbCl7bj09PTAmJnIucXVldWVkUGF5bG9hZHMuaXNGdWxsKCkmJiFyLnF1ZXVlRnVsbFJlcG9ydGVkJiYobCh7bWVzc2FnZToiUmVhY2hlZCBtYXggIi5jb25jYXQocywiIGV2ZW50cyBzaXplIHF1ZXVlZCBmb3IgdXBsb2FkOiAiKS5jb25jYXQoTGkvWHQsIk1pQiIpLHNvdXJjZTpILkFHRU5ULHN0YXJ0Q2xvY2tzOmVlKCl9KSxyLnF1ZXVlRnVsbFJlcG9ydGVkPSEwKTt2YXIgZD1yLnF1ZXVlZFBheWxvYWRzO2ZvcihyLnF1ZXVlZFBheWxvYWRzPURpKCk7ZC5zaXplKCk+MDspemkoZC5kZXF1ZXVlKCkscixhLHMsbCl9ZnVuY3Rpb24gQXMobil7cmV0dXJuIG4udHlwZSE9PSJvcGFxdWUiJiYobi5zdGF0dXM9PT0wJiYhbmF2aWdhdG9yLm9uTGluZXx8bi5zdGF0dXM9PT00MDh8fG4uc3RhdHVzPT09NDI5fHxGaShuLnN0YXR1cykpfWZ1bmN0aW9uIENzKCl7cmV0dXJue3RyYW5zcG9ydFN0YXR1czowLGN1cnJlbnRCYWNrb2ZmVGltZTpraSxiYW5kd2lkdGhNb25pdG9yOlRzKCkscXVldWVkUGF5bG9hZHM6RGkoKSxxdWV1ZUZ1bGxSZXBvcnRlZDohMX19ZnVuY3Rpb24gRGkoKXt2YXIgbj1bXTtyZXR1cm57Ynl0ZXNDb3VudDowLGVucXVldWU6ZnVuY3Rpb24ocil7dGhpcy5pc0Z1bGwoKXx8KG4ucHVzaChyKSx0aGlzLmJ5dGVzQ291bnQrPXIuYnl0ZXNDb3VudCl9LGZpcnN0OmZ1bmN0aW9uKCl7cmV0dXJuIG5bMF19LGRlcXVldWU6ZnVuY3Rpb24oKXt2YXIgcj1uLnNoaWZ0KCk7cmV0dXJuIHImJih0aGlzLmJ5dGVzQ291bnQtPXIuYnl0ZXNDb3VudCkscn0sc2l6ZTpmdW5jdGlvbigpe3JldHVybiBuLmxlbmd0aH0saXNGdWxsOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYnl0ZXNDb3VudD49TGl9fX1mdW5jdGlvbiBUcygpe3JldHVybntvbmdvaW5nUmVxdWVzdENvdW50OjAsb25nb2luZ0J5dGVDb3VudDowLGNhbkhhbmRsZTpmdW5jdGlvbihuKXtyZXR1cm4gdGhpcy5vbmdvaW5nUmVxdWVzdENvdW50PT09MHx8dGhpcy5vbmdvaW5nQnl0ZUNvdW50K24uYnl0ZXNDb3VudDw9VXMmJnRoaXMub25nb2luZ1JlcXVlc3RDb3VudDx3c30sYWRkOmZ1bmN0aW9uKG4pe3RoaXMub25nb2luZ1JlcXVlc3RDb3VudCs9MSx0aGlzLm9uZ29pbmdCeXRlQ291bnQrPW4uYnl0ZXNDb3VudH0scmVtb3ZlOmZ1bmN0aW9uKG4pe3RoaXMub25nb2luZ1JlcXVlc3RDb3VudC09MSx0aGlzLm9uZ29pbmdCeXRlQ291bnQtPW4uYnl0ZXNDb3VudH19fWZ1bmN0aW9uIElzKG4scixhLHMpe3ZhciBsPUNzKCksZD1mdW5jdGlvbihoLG8pe3JldHVybiBMcyhuLHIsYSxoLG8pfTtyZXR1cm57c2VuZDpmdW5jdGlvbihoKXt6aShoLGwsZCxyLnRyYWNrVHlwZSxzKX0sc2VuZE9uRXhpdDpmdW5jdGlvbihoKXtCcyhuLHIsYSxoKX19fWZ1bmN0aW9uIEJzKG4scixhLHMpe3ZhciBsPSEhbmF2aWdhdG9yLnNlbmRCZWFjb24mJnMuYnl0ZXNDb3VudDxhO2lmKGwpdHJ5e3ZhciBkPXIuYnVpbGQoImJlYWNvbiIscyksaD1uYXZpZ2F0b3Iuc2VuZEJlYWNvbihkLHMuZGF0YSk7aWYoaClyZXR1cm59Y2F0Y2goXyl7RnMoXyl9dmFyIG89ci5idWlsZCgieGhyIixzKTt6dChuLG8scy5kYXRhKX12YXIgTmk9ITE7ZnVuY3Rpb24gRnMobil7Tml8fChOaT0hMCxCaShuKSl9ZnVuY3Rpb24gTHMobixyLGEscyxsKXt2YXIgZD1rcygpJiZzLmJ5dGVzQ291bnQ8YTtpZihkKXt2YXIgaD1yLmJ1aWxkKCJmZXRjaCIscyk7ZmV0Y2goaCx7bWV0aG9kOiJQT1NUIixib2R5OnMuZGF0YSxrZWVwYWxpdmU6ITAsbW9kZToiY29ycyJ9KS50aGVuKEIoZnVuY3Rpb24oXyl7cmV0dXJuIGw9PW51bGw/dm9pZCAwOmwoe3N0YXR1czpfLnN0YXR1cyx0eXBlOl8udHlwZX0pfSksQihmdW5jdGlvbigpe3ZhciBfPXIuYnVpbGQoInhociIscyk7enQobixfLHMuZGF0YSxsKX0pKX1lbHNle3ZhciBvPXIuYnVpbGQoInhociIscyk7enQobixvLHMuZGF0YSxsKX19ZnVuY3Rpb24ga3MoKXt0cnl7cmV0dXJuIHdpbmRvdy5SZXF1ZXN0JiYia2VlcGFsaXZlImluIG5ldyBSZXF1ZXN0KCJodHRwOi8vYSIpfWNhdGNoe3JldHVybiExfX1mdW5jdGlvbiB6dChuLHIsYSxzKXt2YXIgbD1uZXcgWE1MSHR0cFJlcXVlc3Q7bC5vcGVuKCJQT1NUIixyLCEwKSxhIGluc3RhbmNlb2YgQmxvYiYmbC5zZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LVR5cGUiLGEudHlwZSkscGUobixsLCJsb2FkZW5kIixmdW5jdGlvbigpe3M9PW51bGx8fHMoe3N0YXR1czpsLnN0YXR1c30pfSx7b25jZTohMH0pLGwuc2VuZChhKX1mdW5jdGlvbiBSdCgpe3ZhciBuPXpzKCk7aWYobilyZXR1cm57Z2V0Q2FwYWJpbGl0aWVzOmZ1bmN0aW9uKCl7dmFyIHI7cmV0dXJuIEpTT04ucGFyc2UoKChyPW4uZ2V0Q2FwYWJpbGl0aWVzKT09PW51bGx8fHI9PT12b2lkIDA/dm9pZCAwOnIuY2FsbChuKSl8fCJbXSIpfSxnZXRQcml2YWN5TGV2ZWw6ZnVuY3Rpb24oKXt2YXIgcjtyZXR1cm4ocj1uLmdldFByaXZhY3lMZXZlbCk9PT1udWxsfHxyPT09dm9pZCAwP3ZvaWQgMDpyLmNhbGwobil9LGdldEFsbG93ZWRXZWJWaWV3SG9zdHM6ZnVuY3Rpb24oKXtyZXR1cm4gSlNPTi5wYXJzZShuLmdldEFsbG93ZWRXZWJWaWV3SG9zdHMoKSl9LHNlbmQ6ZnVuY3Rpb24ocixhLHMpe3ZhciBsPXM/e2lkOnN9OnZvaWQgMDtuLnNlbmQoSlNPTi5zdHJpbmdpZnkoe2V2ZW50VHlwZTpyLGV2ZW50OmEsdmlldzpsfSkpfX19ZnVuY3Rpb24gdHQobil7dmFyIHI7bj09PXZvaWQgMCYmKG49KHI9dGUoKS5sb2NhdGlvbik9PT1udWxsfHxyPT09dm9pZCAwP3ZvaWQgMDpyLmhvc3RuYW1lKTt2YXIgYT1SdCgpO3JldHVybiEhYSYmYS5nZXRBbGxvd2VkV2ViVmlld0hvc3RzKCkuc29tZShmdW5jdGlvbihzKXtyZXR1cm4gbj09PXN8fHByKG4sIi4iLmNvbmNhdChzKSl9KX1mdW5jdGlvbiB6cygpe3JldHVybiB0ZSgpLkRhdGFkb2dFdmVudEJyaWRnZX12YXIgaXQ9e0hJRERFTjoidmlzaWJpbGl0eV9oaWRkZW4iLFVOTE9BRElORzoiYmVmb3JlX3VubG9hZCIsUEFHRUhJREU6InBhZ2VfaGlkZSIsRlJPWkVOOiJwYWdlX2Zyb3plbiJ9O2Z1bmN0aW9uIFJzKG4pe3JldHVybiBuZXcgUihmdW5jdGlvbihyKXt2YXIgYT1MdChuLHdpbmRvdyxbInZpc2liaWxpdHljaGFuZ2UiLCJmcmVlemUiXSxmdW5jdGlvbihsKXtsLnR5cGU9PT0idmlzaWJpbGl0eWNoYW5nZSImJmRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZT09PSJoaWRkZW4iP3Iubm90aWZ5KHtyZWFzb246aXQuSElEREVOfSk6bC50eXBlPT09ImZyZWV6ZSImJnIubm90aWZ5KHtyZWFzb246aXQuRlJPWkVOfSl9LHtjYXB0dXJlOiEwfSkuc3RvcCxzPXBlKG4sd2luZG93LCJiZWZvcmV1bmxvYWQiLGZ1bmN0aW9uKCl7ci5ub3RpZnkoe3JlYXNvbjppdC5VTkxPQURJTkd9KX0pLnN0b3A7cmV0dXJuIGZ1bmN0aW9uKCl7YSgpLHMoKX19KX1mdW5jdGlvbiBPcyhuKXtyZXR1cm4geWUobWUoaXQpLG4pfWZ1bmN0aW9uIFBzKG4pe3ZhciByPW4uZW5jb2RlcixhPW4ucmVxdWVzdCxzPW4uZmx1c2hDb250cm9sbGVyLGw9bi5tZXNzYWdlQnl0ZXNMaW1pdCxkPXt9LGg9cy5mbHVzaE9ic2VydmFibGUuc3Vic2NyaWJlKGZ1bmN0aW9uKGUpe3JldHVybiBnKGUpfSk7ZnVuY3Rpb24gbyhlLHQsaSl7cy5ub3RpZnlCZWZvcmVBZGRNZXNzYWdlKHQpLGkhPT12b2lkIDA/KGRbaV09ZSxzLm5vdGlmeUFmdGVyQWRkTWVzc2FnZSgpKTpyLndyaXRlKHIuaXNFbXB0eT9lOmAKYC5jb25jYXQoZSksZnVuY3Rpb24oZil7cy5ub3RpZnlBZnRlckFkZE1lc3NhZ2UoZi10KX0pfWZ1bmN0aW9uIF8oZSl7cmV0dXJuIGUhPT12b2lkIDAmJmRbZV0hPT12b2lkIDB9ZnVuY3Rpb24gcChlKXt2YXIgdD1kW2VdO2RlbGV0ZSBkW2VdO3ZhciBpPXIuZXN0aW1hdGVFbmNvZGVkQnl0ZXNDb3VudCh0KTtzLm5vdGlmeUFmdGVyUmVtb3ZlTWVzc2FnZShpKX1mdW5jdGlvbiBjKGUsdCl7dmFyIGk9dWUoZSksZj1yLmVzdGltYXRlRW5jb2RlZEJ5dGVzQ291bnQoaSk7aWYoZj49bCl7ei53YXJuKCJEaXNjYXJkZWQgYSBtZXNzYWdlIHdob3NlIHNpemUgd2FzIGJpZ2dlciB0aGFuIHRoZSBtYXhpbXVtIGFsbG93ZWQgc2l6ZSAiLmNvbmNhdChsLCJLQi4gIikuY29uY2F0KERlLCIgIikuY29uY2F0KEt0LCIvI3RlY2huaWNhbC1saW1pdGF0aW9ucyIpKTtyZXR1cm59Xyh0KSYmcCh0KSxvKGksZix0KX1mdW5jdGlvbiBnKGUpe3ZhciB0PW1lKGQpLmpvaW4oYApgKTtkPXt9O3ZhciBpPU9zKGUucmVhc29uKSxmPWk/YS5zZW5kT25FeGl0OmEuc2VuZDtpZihpJiZyLmlzQXN5bmMpe3ZhciB1PXIuZmluaXNoU3luYygpO3Uub3V0cHV0Qnl0ZXNDb3VudCYmZihNaSh1KSk7dmFyIHY9W3UucGVuZGluZ0RhdGEsdF0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oYApgKTt2JiZmKHtkYXRhOnYsYnl0ZXNDb3VudDpjdCh2KX0pfWVsc2UgdCYmci53cml0ZShyLmlzRW1wdHk/dDpgCmAuY29uY2F0KHQpKSxyLmZpbmlzaChmdW5jdGlvbih5KXtmKE1pKHkpKX0pfXJldHVybntmbHVzaENvbnRyb2xsZXI6cyxhZGQ6Yyx1cHNlcnQ6YyxzdG9wOmgudW5zdWJzY3JpYmV9fWZ1bmN0aW9uIE1pKG4pe3ZhciByO3JldHVybiB0eXBlb2Ygbi5vdXRwdXQ9PSJzdHJpbmciP3I9bi5vdXRwdXQ6cj1uZXcgQmxvYihbbi5vdXRwdXRdLHt0eXBlOiJ0ZXh0L3BsYWluIn0pLHtkYXRhOnIsYnl0ZXNDb3VudDpuLm91dHB1dEJ5dGVzQ291bnQsZW5jb2Rpbmc6bi5lbmNvZGluZ319ZnVuY3Rpb24gRHMobil7dmFyIHI9bi5tZXNzYWdlc0xpbWl0LGE9bi5ieXRlc0xpbWl0LHM9bi5kdXJhdGlvbkxpbWl0LGw9bi5wYWdlRXhpdE9ic2VydmFibGUsZD1uLnNlc3Npb25FeHBpcmVPYnNlcnZhYmxlLGg9bC5zdWJzY3JpYmUoZnVuY3Rpb24oZil7cmV0dXJuIGcoZi5yZWFzb24pfSksbz1kLnN1YnNjcmliZShmdW5jdGlvbigpe3JldHVybiBnKCJzZXNzaW9uX2V4cGlyZSIpfSksXz1uZXcgUihmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe2gudW5zdWJzY3JpYmUoKSxvLnVuc3Vic2NyaWJlKCl9fSkscD0wLGM9MDtmdW5jdGlvbiBnKGYpe2lmKGMhPT0wKXt2YXIgdT1jLHY9cDtjPTAscD0wLGkoKSxfLm5vdGlmeSh7cmVhc29uOmYsbWVzc2FnZXNDb3VudDp1LGJ5dGVzQ291bnQ6dn0pfX12YXIgZTtmdW5jdGlvbiB0KCl7ZT09PXZvaWQgMCYmKGU9RmUoZnVuY3Rpb24oKXtnKCJkdXJhdGlvbl9saW1pdCIpfSxzKSl9ZnVuY3Rpb24gaSgpe1p0KGUpLGU9dm9pZCAwfXJldHVybntmbHVzaE9ic2VydmFibGU6XyxnZXQgbWVzc2FnZXNDb3VudCgpe3JldHVybiBjfSxub3RpZnlCZWZvcmVBZGRNZXNzYWdlOmZ1bmN0aW9uKGYpe3ArZj49YSYmZygiYnl0ZXNfbGltaXQiKSxjKz0xLHArPWYsdCgpfSxub3RpZnlBZnRlckFkZE1lc3NhZ2U6ZnVuY3Rpb24oZil7Zj09PXZvaWQgMCYmKGY9MCkscCs9ZixjPj1yP2coIm1lc3NhZ2VzX2xpbWl0Iik6cD49YSYmZygiYnl0ZXNfbGltaXQiKX0sbm90aWZ5QWZ0ZXJSZW1vdmVNZXNzYWdlOmZ1bmN0aW9uKGYpe3AtPWYsYy09MSxjPT09MCYmaSgpfX19ZnVuY3Rpb24gR2kobixyLGEscyxsLGQsaCl7aD09PXZvaWQgMCYmKGg9UHMpO3ZhciBvPXAobixyKSxfPWEmJnAobixhKTtmdW5jdGlvbiBwKGMsZyl7dmFyIGU9Zy5lbmRwb2ludCx0PWcuZW5jb2RlcjtyZXR1cm4gaCh7ZW5jb2Rlcjp0LHJlcXVlc3Q6SXMoYyxlLGMuYmF0Y2hCeXRlc0xpbWl0LHMpLGZsdXNoQ29udHJvbGxlcjpEcyh7bWVzc2FnZXNMaW1pdDpjLmJhdGNoTWVzc2FnZXNMaW1pdCxieXRlc0xpbWl0OmMuYmF0Y2hCeXRlc0xpbWl0LGR1cmF0aW9uTGltaXQ6Yy5mbHVzaFRpbWVvdXQscGFnZUV4aXRPYnNlcnZhYmxlOmwsc2Vzc2lvbkV4cGlyZU9ic2VydmFibGU6ZH0pLG1lc3NhZ2VCeXRlc0xpbWl0OmMubWVzc2FnZUJ5dGVzTGltaXR9KX1yZXR1cm57Zmx1c2hPYnNlcnZhYmxlOm8uZmx1c2hDb250cm9sbGVyLmZsdXNoT2JzZXJ2YWJsZSxhZGQ6ZnVuY3Rpb24oYyxnKXtnPT09dm9pZCAwJiYoZz0hMCksby5hZGQoYyksXyYmZyYmXy5hZGQoYS50cmFuc2Zvcm1NZXNzYWdlP2EudHJhbnNmb3JtTWVzc2FnZShjKTpjKX0sdXBzZXJ0OmZ1bmN0aW9uKGMsZyl7by51cHNlcnQoYyxnKSxfJiZfLnVwc2VydChhLnRyYW5zZm9ybU1lc3NhZ2U/YS50cmFuc2Zvcm1NZXNzYWdlKGMpOmMsZyl9LHN0b3A6ZnVuY3Rpb24oKXtvLnN0b3AoKSxfJiZfLnN0b3AoKX19fWZ1bmN0aW9uIHJ0KCl7dmFyIG49IiIscj0wO3JldHVybntpc0FzeW5jOiExLGdldCBpc0VtcHR5KCl7cmV0dXJuIW59LHdyaXRlOmZ1bmN0aW9uKGEscyl7dmFyIGw9Y3QoYSk7cis9bCxuKz1hLHMmJnMobCl9LGZpbmlzaDpmdW5jdGlvbihhKXthKHRoaXMuZmluaXNoU3luYygpKX0sZmluaXNoU3luYzpmdW5jdGlvbigpe3ZhciBhPXtvdXRwdXQ6bixvdXRwdXRCeXRlc0NvdW50OnIscmF3Qnl0ZXNDb3VudDpyLHBlbmRpbmdEYXRhOiIifTtyZXR1cm4gbj0iIixyPTAsYX0sZXN0aW1hdGVFbmNvZGVkQnl0ZXNDb3VudDpmdW5jdGlvbihhKXtyZXR1cm4gYS5sZW5ndGh9fX12YXIgTnM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKCl7dGhpcy5jYWxsYmFja3M9e319cmV0dXJuIG4ucHJvdG90eXBlLm5vdGlmeT1mdW5jdGlvbihyLGEpe3ZhciBzPXRoaXMuY2FsbGJhY2tzW3JdO3MmJnMuZm9yRWFjaChmdW5jdGlvbihsKXtyZXR1cm4gbChhKX0pfSxuLnByb3RvdHlwZS5zdWJzY3JpYmU9ZnVuY3Rpb24ocixhKXt2YXIgcz10aGlzO3JldHVybiB0aGlzLmNhbGxiYWNrc1tyXXx8KHRoaXMuY2FsbGJhY2tzW3JdPVtdKSx0aGlzLmNhbGxiYWNrc1tyXS5wdXNoKGEpLHt1bnN1YnNjcmliZTpmdW5jdGlvbigpe3MuY2FsbGJhY2tzW3JdPXMuY2FsbGJhY2tzW3JdLmZpbHRlcihmdW5jdGlvbihsKXtyZXR1cm4gYSE9PWx9KX19fSxufSgpO2Z1bmN0aW9uIE1zKG4scixhKXt2YXIgcz0wLGw9ITE7cmV0dXJue2lzTGltaXRSZWFjaGVkOmZ1bmN0aW9uKCl7aWYocz09PTAmJkZlKGZ1bmN0aW9uKCl7cz0wfSxzZSkscys9MSxzPD1yfHxsKXJldHVybiBsPSExLCExO2lmKHM9PT1yKzEpe2w9ITA7dHJ5e2Eoe21lc3NhZ2U6IlJlYWNoZWQgbWF4IG51bWJlciBvZiAiLmNvbmNhdChuLCJzIGJ5IG1pbnV0ZTogIikuY29uY2F0KHIpLHNvdXJjZTpILkFHRU5ULHN0YXJ0Q2xvY2tzOmVlKCl9KX1maW5hbGx5e2w9ITF9fXJldHVybiEwfX19dmFyIE90LFB0PW5ldyBXZWFrTWFwO2Z1bmN0aW9uIEdzKG4pe3JldHVybiBPdHx8KE90PUhzKG4pKSxPdH1mdW5jdGlvbiBIcyhuKXtyZXR1cm4gbmV3IFIoZnVuY3Rpb24ocil7dmFyIGE9Y2UoWE1MSHR0cFJlcXVlc3QucHJvdG90eXBlLCJvcGVuIixZcykuc3RvcCxzPWNlKFhNTEh0dHBSZXF1ZXN0LnByb3RvdHlwZSwic2VuZCIsZnVuY3Rpb24oZCl7VnMoZCxuLHIpfSx7Y29tcHV0ZUhhbmRsaW5nU3RhY2s6ITB9KS5zdG9wLGw9Y2UoWE1MSHR0cFJlcXVlc3QucHJvdG90eXBlLCJhYm9ydCIsanMpLnN0b3A7cmV0dXJuIGZ1bmN0aW9uKCl7YSgpLHMoKSxsKCl9fSl9ZnVuY3Rpb24gWXMobil7dmFyIHI9bi50YXJnZXQsYT1uLnBhcmFtZXRlcnMscz1hWzBdLGw9YVsxXTtQdC5zZXQocix7c3RhdGU6Im9wZW4iLG1ldGhvZDpTdHJpbmcocykudG9VcHBlckNhc2UoKSx1cmw6QXQoU3RyaW5nKGwpKX0pfWZ1bmN0aW9uIFZzKG4scixhKXt2YXIgcz1uLnRhcmdldCxsPW4uaGFuZGxpbmdTdGFjayxkPVB0LmdldChzKTtpZihkKXt2YXIgaD1kO2guc3RhdGU9InN0YXJ0IixoLnN0YXJ0Q2xvY2tzPWVlKCksaC5pc0Fib3J0ZWQ9ITEsaC54aHI9cyxoLmhhbmRsaW5nU3RhY2s9bDt2YXIgbz0hMSxfPWNlKHMsIm9ucmVhZHlzdGF0ZWNoYW5nZSIsZnVuY3Rpb24oKXtzLnJlYWR5U3RhdGU9PT1YTUxIdHRwUmVxdWVzdC5ET05FJiZwKCl9KS5zdG9wLHA9ZnVuY3Rpb24oKXtpZihjKCksXygpLCFvKXtvPSEwO3ZhciBnPWQ7Zy5zdGF0ZT0iY29tcGxldGUiLGcuZHVyYXRpb249ZnIoaC5zdGFydENsb2Nrcy50aW1lU3RhbXAsUSgpKSxnLnN0YXR1cz1zLnN0YXR1cyxhLm5vdGlmeShfcihnKSl9fSxjPXBlKHIscywibG9hZGVuZCIscCkuc3RvcDthLm5vdGlmeShoKX19ZnVuY3Rpb24ganMobil7dmFyIHI9bi50YXJnZXQsYT1QdC5nZXQocik7YSYmKGEuaXNBYm9ydGVkPSEwKX12YXIgRHQ7ZnVuY3Rpb24gSGkoKXtyZXR1cm4gRHR8fChEdD1LcygpKSxEdH1mdW5jdGlvbiBLcygpe3JldHVybiBuZXcgUihmdW5jdGlvbihuKXtpZih3aW5kb3cuZmV0Y2gpe3ZhciByPWNlKHdpbmRvdywiZmV0Y2giLGZ1bmN0aW9uKGEpe3JldHVybiBxcyhhLG4pfSx7Y29tcHV0ZUhhbmRsaW5nU3RhY2s6ITB9KS5zdG9wO3JldHVybiByfX0pfWZ1bmN0aW9uIHFzKG4scil7dmFyIGE9bi5wYXJhbWV0ZXJzLHM9bi5vblBvc3RDYWxsLGw9bi5oYW5kbGluZ1N0YWNrLGQ9YVswXSxoPWFbMV0sbz1oJiZoLm1ldGhvZDtvPT09dm9pZCAwJiZkIGluc3RhbmNlb2YgUmVxdWVzdCYmKG89ZC5tZXRob2QpO3ZhciBfPW8hPT12b2lkIDA/U3RyaW5nKG8pLnRvVXBwZXJDYXNlKCk6IkdFVCIscD1kIGluc3RhbmNlb2YgUmVxdWVzdD9kLnVybDpBdChTdHJpbmcoZCkpLGM9ZWUoKSxnPXtzdGF0ZToic3RhcnQiLGluaXQ6aCxpbnB1dDpkLG1ldGhvZDpfLHN0YXJ0Q2xvY2tzOmMsdXJsOnAsaGFuZGxpbmdTdGFjazpsfTtyLm5vdGlmeShnKSxhWzBdPWcuaW5wdXQsYVsxXT1nLmluaXQscyhmdW5jdGlvbihlKXtyZXR1cm4gV3MocixlLGcpfSl9ZnVuY3Rpb24gV3MobixyLGEpe3ZhciBzPWE7ZnVuY3Rpb24gbChkKXtzLnN0YXRlPSJyZXNvbHZlIixPKHMsZCksbi5ub3RpZnkocyl9ci50aGVuKEIoZnVuY3Rpb24oZCl7bCh7cmVzcG9uc2U6ZCxyZXNwb25zZVR5cGU6ZC50eXBlLHN0YXR1czpkLnN0YXR1cyxpc0Fib3J0ZWQ6ITF9KX0pLEIoZnVuY3Rpb24oZCl7dmFyIGgsbztsKHtzdGF0dXM6MCxpc0Fib3J0ZWQ6KChvPShoPXMuaW5pdCk9PT1udWxsfHxoPT09dm9pZCAwP3ZvaWQgMDpoLnNpZ25hbCk9PT1udWxsfHxvPT09dm9pZCAwP3ZvaWQgMDpvLmFib3J0ZWQpfHxkIGluc3RhbmNlb2YgRE9NRXhjZXB0aW9uJiZkLmNvZGU9PT1ET01FeGNlcHRpb24uQUJPUlRfRVJSLGVycm9yOmR9KX0pKX12YXIgTnQ9e307ZnVuY3Rpb24gWHMobil7dmFyIHI9bi5tYXAoZnVuY3Rpb24oYSl7cmV0dXJuIE50W2FdfHwoTnRbYV09SnMoYSkpLE50W2FdfSk7cmV0dXJuIGVpLmFwcGx5KHZvaWQgMCxyKX1mdW5jdGlvbiBKcyhuKXtyZXR1cm4gbmV3IFIoZnVuY3Rpb24ocil7dmFyIGE9V1tuXTtyZXR1cm4gV1tuXT1mdW5jdGlvbigpe2Zvcih2YXIgcz1bXSxsPTA7bDxhcmd1bWVudHMubGVuZ3RoO2wrKylzW2xdPWFyZ3VtZW50c1tsXTthLmFwcGx5KGNvbnNvbGUscyk7dmFyIGQ9JGUoKTtCZShmdW5jdGlvbigpe3Iubm90aWZ5KCRzKHMsbixkKSl9KX0sZnVuY3Rpb24oKXtXW25dPWF9fSl9ZnVuY3Rpb24gJHMobixyLGEpe3ZhciBzPW4ubWFwKGZ1bmN0aW9uKGgpe3JldHVybiBacyhoKX0pLmpvaW4oIiAiKSxsO2lmKHI9PT1MLmVycm9yKXt2YXIgZD1ocihuLGZ1bmN0aW9uKGgpe3JldHVybiBoIGluc3RhbmNlb2YgRXJyb3J9KTtsPXtzdGFjazpkP2hlKEooZCkpOnZvaWQgMCxmaW5nZXJwcmludDptaShkKSxjYXVzZXM6ZD9iaShkLCJjb25zb2xlIik6dm9pZCAwLHN0YXJ0Q2xvY2tzOmVlKCksbWVzc2FnZTpzLHNvdXJjZTpILkNPTlNPTEUsaGFuZGxpbmc6ImhhbmRsZWQiLGhhbmRsaW5nU3RhY2s6YX19cmV0dXJue2FwaTpyLG1lc3NhZ2U6cyxlcnJvcjpsLGhhbmRsaW5nU3RhY2s6YX19ZnVuY3Rpb24gWnMobil7cmV0dXJuIHR5cGVvZiBuPT0ic3RyaW5nIj8kKG4pOm4gaW5zdGFuY2VvZiBFcnJvcj92aShKKG4pKTp1ZSgkKG4pLHZvaWQgMCwyKX1mdW5jdGlvbiBNdChuKXt2YXIgcj17fSxhPW5ldyBSLHM9e2dldENvbnRleHQ6ZnVuY3Rpb24oKXtyZXR1cm4gRWkocil9LHNldENvbnRleHQ6ZnVuY3Rpb24obCl7a3QobCk9PT0ib2JqZWN0Ij8ocj0kKGwpLG4mJm4udXBkYXRlQ3VzdG9tZXJEYXRhKHIpKTpzLmNsZWFyQ29udGV4dCgpLGEubm90aWZ5KCl9LHNldENvbnRleHRQcm9wZXJ0eTpmdW5jdGlvbihsLGQpe3JbbF09JChkKSxuJiZuLnVwZGF0ZUN1c3RvbWVyRGF0YShyKSxhLm5vdGlmeSgpfSxyZW1vdmVDb250ZXh0UHJvcGVydHk6ZnVuY3Rpb24obCl7ZGVsZXRlIHJbbF0sbiYmbi51cGRhdGVDdXN0b21lckRhdGEociksYS5ub3RpZnkoKX0sY2xlYXJDb250ZXh0OmZ1bmN0aW9uKCl7cj17fSxuJiZuLnJlc2V0Q3VzdG9tZXJEYXRhKCksYS5ub3RpZnkoKX0sY2hhbmdlT2JzZXJ2YWJsZTphfTtyZXR1cm4gc312YXIgUXM9Il9kZF9jIixlbz1bXTtmdW5jdGlvbiBZaShuLHIsYSxzKXt2YXIgbD10byhhLHMpO2VvLnB1c2gocGUobix3aW5kb3csInN0b3JhZ2UiLGZ1bmN0aW9uKF8pe3ZhciBwPV8ua2V5O2w9PT1wJiZkKCl9KSksci5jaGFuZ2VPYnNlcnZhYmxlLnN1YnNjcmliZShoKSxyLnNldENvbnRleHQod2UobygpLHIuZ2V0Q29udGV4dCgpKSk7ZnVuY3Rpb24gZCgpe3Iuc2V0Q29udGV4dChvKCkpfWZ1bmN0aW9uIGgoKXtsb2NhbFN0b3JhZ2Uuc2V0SXRlbShsLEpTT04uc3RyaW5naWZ5KHIuZ2V0Q29udGV4dCgpKSl9ZnVuY3Rpb24gbygpe3ZhciBfPWxvY2FsU3RvcmFnZS5nZXRJdGVtKGwpO3JldHVybiBfIT09bnVsbD9KU09OLnBhcnNlKF8pOnt9fX1mdW5jdGlvbiB0byhuLHIpe3JldHVybiIiLmNvbmNhdChRcywiXyIpLmNvbmNhdChuLCJfIikuY29uY2F0KHIpfXZhciBpbz0zKlgscm89MTYqWCxubz0yMDA7ZnVuY3Rpb24gc28obil7bj09PXZvaWQgMCYmKG49Mik7dmFyIHI9bmV3IE1hcCxhPSExO2Z1bmN0aW9uIHMobCl7aWYobD09PXZvaWQgMCYmKGw9MCksIShhfHxuPT09MCkpe3ZhciBkPW49PT0yP2lvOnJvLGg9bDtyLmZvckVhY2goZnVuY3Rpb24obyl7aCs9by5nZXRCeXRlc0NvdW50KCl9KSxoPmQmJihvbyhkKSxhPSEwKX19cmV0dXJue2NyZWF0ZURldGFjaGVkVHJhY2tlcjpmdW5jdGlvbigpe3ZhciBsPVZpKGZ1bmN0aW9uKCl7cmV0dXJuIHMobC5nZXRCeXRlc0NvdW50KCkpfSk7cmV0dXJuIGx9LGdldE9yQ3JlYXRlVHJhY2tlcjpmdW5jdGlvbihsKXtyZXR1cm4gci5oYXMobCl8fHIuc2V0KGwsVmkocykpLHIuZ2V0KGwpfSxzZXRDb21wcmVzc2lvblN0YXR1czpmdW5jdGlvbihsKXtuPT09MCYmKG49bCxzKCkpfSxnZXRDb21wcmVzc2lvblN0YXR1czpmdW5jdGlvbigpe3JldHVybiBufSxzdG9wOmZ1bmN0aW9uKCl7ci5mb3JFYWNoKGZ1bmN0aW9uKGwpe3JldHVybiBsLnN0b3AoKX0pLHIuY2xlYXIoKX19fWZ1bmN0aW9uIFZpKG4pe3ZhciByPTAsYT10aShmdW5jdGlvbihoKXtyPWN0KHVlKGgpKSxuKCl9LG5vKSxzPWEudGhyb3R0bGVkLGw9YS5jYW5jZWwsZD1mdW5jdGlvbigpe2woKSxyPTB9O3JldHVybnt1cGRhdGVDdXN0b21lckRhdGE6ZnVuY3Rpb24oaCl7dnQoaCk/ZCgpOnMoaCl9LHJlc2V0Q3VzdG9tZXJEYXRhOmQsZ2V0Qnl0ZXNDb3VudDpmdW5jdGlvbigpe3JldHVybiByfSxzdG9wOmZ1bmN0aW9uKCl7bCgpfX19ZnVuY3Rpb24gb28obil7ei53YXJuKCJDdXN0b21lciBkYXRhIGV4Y2VlZHMgdGhlIHJlY29tbWVuZGVkICIuY29uY2F0KG4vWCwiS2lCIHRocmVzaG9sZC4gIikuY29uY2F0KERlLCIgIikuY29uY2F0KEt0LCIvI2N1c3RvbWVyLWRhdGEtZXhjZWVkcy10aGUtcmVjb21tZW5kZWQtdGhyZXNob2xkLXdhcm5pbmciKSl9ZnVuY3Rpb24gYW8obixyLGEpe3ZhciBzPW4uZ2V0UmVhZGVyKCksbD1bXSxkPTA7aCgpO2Z1bmN0aW9uIGgoKXtzLnJlYWQoKS50aGVuKEIoZnVuY3Rpb24oXyl7aWYoXy5kb25lKXtvKCk7cmV0dXJufWwucHVzaChfLnZhbHVlKSxkKz1fLnZhbHVlLmxlbmd0aCxkPmEuYnl0ZXNMaW1pdD9vKCk6aCgpfSksQihmdW5jdGlvbihfKXtyZXR1cm4gcihfKX0pKX1mdW5jdGlvbiBvKCl7cy5jYW5jZWwoKS5jYXRjaChpZSk7dmFyIF8scDt7dmFyIGM7aWYobC5sZW5ndGg9PT0xKWM9bFswXTtlbHNle2M9bmV3IFVpbnQ4QXJyYXkoZCk7dmFyIGc9MDtsLmZvckVhY2goZnVuY3Rpb24oZSl7Yy5zZXQoZSxnKSxnKz1lLmxlbmd0aH0pfV89Yy5zbGljZSgwLGEuYnl0ZXNMaW1pdCkscD1jLmxlbmd0aD5hLmJ5dGVzTGltaXR9cih2b2lkIDAsXyxwKX19dmFyIGZvPSJkYXRhZG9nLXN5bnRoZXRpY3MtcHVibGljLWlkIixsbz0iZGF0YWRvZy1zeW50aGV0aWNzLXJlc3VsdC1pZCIsdW89ImRhdGFkb2ctc3ludGhldGljcy1pbmplY3RzLXJ1bSI7ZnVuY3Rpb24gamkoKXtyZXR1cm4hISh3aW5kb3cuX0RBVEFET0dfU1lOVEhFVElDU19JTkpFQ1RTX1JVTXx8YWUodW8pKX1mdW5jdGlvbiBobygpe3ZhciBuPXdpbmRvdy5fREFUQURPR19TWU5USEVUSUNTX1BVQkxJQ19JRHx8YWUoZm8pO3JldHVybiB0eXBlb2Ygbj09InN0cmluZyI/bjp2b2lkIDB9ZnVuY3Rpb24gY28oKXt2YXIgbj13aW5kb3cuX0RBVEFET0dfU1lOVEhFVElDU19SRVNVTFRfSUR8fGFlKGxvKTtyZXR1cm4gdHlwZW9mIG49PSJzdHJpbmciP246dm9pZCAwfWZ1bmN0aW9uIEtpKG4pe3ZhciByPU8oe30sbiksYT1bImlkIiwibmFtZSIsImVtYWlsIl07cmV0dXJuIGEuZm9yRWFjaChmdW5jdGlvbihzKXtzIGluIHImJihyW3NdPVN0cmluZyhyW3NdKSl9KSxyfWZ1bmN0aW9uIHBvKG4pe3ZhciByPWt0KG4pPT09Im9iamVjdCI7cmV0dXJuIHJ8fHouZXJyb3IoIlVuc3VwcG9ydGVkIHVzZXI6IixuKSxyfXZhciBWO2Z1bmN0aW9uIG50KG4scixhKXt2YXIgcz1hLmdldEhhbmRsZXIoKSxsPUFycmF5LmlzQXJyYXkocyk/czpbc107cmV0dXJuIHFpW25dPj1xaVthLmdldExldmVsKCldJiZ5ZShsLHIpfXZhciBDPXtvazoib2siLGRlYnVnOiJkZWJ1ZyIsaW5mbzoiaW5mbyIsbm90aWNlOiJub3RpY2UiLHdhcm46Indhcm4iLGVycm9yOiJlcnJvciIsY3JpdGljYWw6ImNyaXRpY2FsIixhbGVydDoiYWxlcnQiLGVtZXJnOiJlbWVyZyJ9LHFpPShWPXt9LFZbQy5va109MCxWW0MuZGVidWddPTEsVltDLmluZm9dPTIsVltDLm5vdGljZV09NCxWW0Mud2Fybl09NSxWW0MuZXJyb3JdPTYsVltDLmNyaXRpY2FsXT03LFZbQy5hbGVydF09OCxWW0MuZW1lcmddPTksVik7ZnVuY3Rpb24gc3QobixyKXt2YXIgYT1yPT09dm9pZCAwP3t9OnIscz1hLmluY2x1ZGVNZXNzYWdlLGw9cz09PXZvaWQgMD8hMTpzO3JldHVybntzdGFjazpuLnN0YWNrLGtpbmQ6bi50eXBlLG1lc3NhZ2U6bD9uLm1lc3NhZ2U6dm9pZCAwLGNhdXNlczpuLmNhdXNlcyxmaW5nZXJwcmludDpuLmZpbmdlcnByaW50LGhhbmRsaW5nOm4uaGFuZGxpbmd9fXZhciBfbz1mdW5jdGlvbihuLHIsYSxzKXt2YXIgbD1hcmd1bWVudHMubGVuZ3RoLGQ9bDwzP3I6cz09PW51bGw/cz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHIsYSk6cyxoO2lmKHR5cGVvZiBSZWZsZWN0PT0ib2JqZWN0IiYmdHlwZW9mIFJlZmxlY3QuZGVjb3JhdGU9PSJmdW5jdGlvbiIpZD1SZWZsZWN0LmRlY29yYXRlKG4scixhLHMpO2Vsc2UgZm9yKHZhciBvPW4ubGVuZ3RoLTE7bz49MDtvLS0pKGg9bltvXSkmJihkPShsPDM/aChkKTpsPjM/aChyLGEsZCk6aChyLGEpKXx8ZCk7cmV0dXJuIGw+MyYmZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KHIsYSxkKSxkfSxSZT17Y29uc29sZToiY29uc29sZSIsaHR0cDoiaHR0cCIsc2lsZW50OiJzaWxlbnQifSx2bz1PYmplY3Qua2V5cyhDKSxqPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbihyLGEscyxsLGQsaCl7bD09PXZvaWQgMCYmKGw9UmUuaHR0cCksZD09PXZvaWQgMCYmKGQ9Qy5kZWJ1ZyksaD09PXZvaWQgMCYmKGg9e30pLHRoaXMuaGFuZGxlTG9nU3RyYXRlZ3k9cix0aGlzLmhhbmRsZXJUeXBlPWwsdGhpcy5sZXZlbD1kLHRoaXMuY29udGV4dE1hbmFnZXI9TXQoYSksdGhpcy5jb250ZXh0TWFuYWdlci5zZXRDb250ZXh0KGgpLHMmJnRoaXMuY29udGV4dE1hbmFnZXIuc2V0Q29udGV4dFByb3BlcnR5KCJsb2dnZXIiLHtuYW1lOnN9KX1yZXR1cm4gbi5wcm90b3R5cGUubG9nSW1wbGVtZW50YXRpb249ZnVuY3Rpb24ocixhLHMsbCxkKXtzPT09dm9pZCAwJiYocz1DLmluZm8pO3ZhciBoPSQoYSksbztpZihsIT1udWxsKXt2YXIgXz15aSh7c3RhY2tUcmFjZTpsIGluc3RhbmNlb2YgRXJyb3I/SihsKTp2b2lkIDAsb3JpZ2luYWxFcnJvcjpsLG5vbkVycm9yUHJlZml4OiJQcm92aWRlZCIsc291cmNlOkguTE9HR0VSLGhhbmRsaW5nOiJoYW5kbGVkIixzdGFydENsb2NrczplZSgpfSk7bz13ZSh7ZXJyb3I6c3QoXyx7aW5jbHVkZU1lc3NhZ2U6ITB9KX0saCl9ZWxzZSBvPWg7dGhpcy5oYW5kbGVMb2dTdHJhdGVneSh7bWVzc2FnZTokKHIpLGNvbnRleHQ6byxzdGF0dXM6c30sdGhpcyxkKX0sbi5wcm90b3R5cGUubG9nPWZ1bmN0aW9uKHIsYSxzLGwpe3M9PT12b2lkIDAmJihzPUMuaW5mbyk7dmFyIGQ7bnQocyxSZS5odHRwLHRoaXMpJiYoZD0kZSgpKSx0aGlzLmxvZ0ltcGxlbWVudGF0aW9uKHIsYSxzLGwsZCl9LG4ucHJvdG90eXBlLnNldENvbnRleHQ9ZnVuY3Rpb24ocil7dGhpcy5jb250ZXh0TWFuYWdlci5zZXRDb250ZXh0KHIpfSxuLnByb3RvdHlwZS5nZXRDb250ZXh0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29udGV4dE1hbmFnZXIuZ2V0Q29udGV4dCgpfSxuLnByb3RvdHlwZS5zZXRDb250ZXh0UHJvcGVydHk9ZnVuY3Rpb24ocixhKXt0aGlzLmNvbnRleHRNYW5hZ2VyLnNldENvbnRleHRQcm9wZXJ0eShyLGEpfSxuLnByb3RvdHlwZS5yZW1vdmVDb250ZXh0UHJvcGVydHk9ZnVuY3Rpb24ocil7dGhpcy5jb250ZXh0TWFuYWdlci5yZW1vdmVDb250ZXh0UHJvcGVydHkocil9LG4ucHJvdG90eXBlLmNsZWFyQ29udGV4dD1mdW5jdGlvbigpe3RoaXMuY29udGV4dE1hbmFnZXIuY2xlYXJDb250ZXh0KCl9LG4ucHJvdG90eXBlLnNldEhhbmRsZXI9ZnVuY3Rpb24ocil7dGhpcy5oYW5kbGVyVHlwZT1yfSxuLnByb3RvdHlwZS5nZXRIYW5kbGVyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaGFuZGxlclR5cGV9LG4ucHJvdG90eXBlLnNldExldmVsPWZ1bmN0aW9uKHIpe3RoaXMubGV2ZWw9cn0sbi5wcm90b3R5cGUuZ2V0TGV2ZWw9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sZXZlbH0sX28oW21yXSxuLnByb3RvdHlwZSwibG9nSW1wbGVtZW50YXRpb24iLG51bGwpLG59KCk7ai5wcm90b3R5cGUub2s9WihDLm9rKSxqLnByb3RvdHlwZS5kZWJ1Zz1aKEMuZGVidWcpLGoucHJvdG90eXBlLmluZm89WihDLmluZm8pLGoucHJvdG90eXBlLm5vdGljZT1aKEMubm90aWNlKSxqLnByb3RvdHlwZS53YXJuPVooQy53YXJuKSxqLnByb3RvdHlwZS5lcnJvcj1aKEMuZXJyb3IpLGoucHJvdG90eXBlLmNyaXRpY2FsPVooQy5jcml0aWNhbCksai5wcm90b3R5cGUuYWxlcnQ9WihDLmFsZXJ0KSxqLnByb3RvdHlwZS5lbWVyZz1aKEMuZW1lcmcpO2Z1bmN0aW9uIFoobil7cmV0dXJuIGZ1bmN0aW9uKHIsYSxzKXt2YXIgbDtudChuLFJlLmh0dHAsdGhpcykmJihsPSRlKCkpLHRoaXMubG9nSW1wbGVtZW50YXRpb24ocixhLG4scyxsKX19ZnVuY3Rpb24gZ28obixyKXtyZXR1cm57dmlldzp7cmVmZXJyZXI6ZG9jdW1lbnQucmVmZXJyZXIsdXJsOndpbmRvdy5sb2NhdGlvbi5ocmVmfSxjb250ZXh0Om4uZ2V0Q29udGV4dCgpLHVzZXI6ci5nZXRDb250ZXh0KCl9fXZhciB5bz0zMipYO2Z1bmN0aW9uIG1vKG4pe24udXNlUGNpSW50YWtlPT09ITAmJm4uc2l0ZSYmbi5zaXRlIT09ImRhdGFkb2docS5jb20iJiZ6Lndhcm4oIlBDSSBjb21wbGlhbmNlIGZvciBMb2dzIGlzIG9ubHkgYXZhaWxhYmxlIGZvciBEYXRhZG9nIG9yZ2FuaXphdGlvbnMgaW4gdGhlIFVTMSBzaXRlLiBEZWZhdWx0IGludGFrZSB3aWxsIGJlIHVzZWQuIik7dmFyIHI9Z24obiksYT1XaShuLmZvcndhcmRDb25zb2xlTG9ncyxtZShMKSwiRm9yd2FyZCBDb25zb2xlIExvZ3MiKSxzPVdpKG4uZm9yd2FyZFJlcG9ydHMsbWUoWmUpLCJGb3J3YXJkIFJlcG9ydHMiKTtpZighKCFyfHwhYXx8IXMpKXJldHVybiBuLmZvcndhcmRFcnJvcnNUb0xvZ3MmJiF5ZShhLEwuZXJyb3IpJiZhLnB1c2goTC5lcnJvciksTyh7Zm9yd2FyZEVycm9yc1RvTG9nczpuLmZvcndhcmRFcnJvcnNUb0xvZ3MhPT0hMSxmb3J3YXJkQ29uc29sZUxvZ3M6YSxmb3J3YXJkUmVwb3J0czpzLHJlcXVlc3RFcnJvclJlc3BvbnNlTGVuZ3RoTGltaXQ6eW8sc2VuZExvZ3NBZnRlclNlc3Npb25FeHBpcmF0aW9uOiEhbi5zZW5kTG9nc0FmdGVyU2Vzc2lvbkV4cGlyYXRpb259LHIpfWZ1bmN0aW9uIFdpKG4scixhKXtpZihuPT09dm9pZCAwKXJldHVybltdO2lmKCEobj09PSJhbGwifHxBcnJheS5pc0FycmF5KG4pJiZuLmV2ZXJ5KGZ1bmN0aW9uKHMpe3JldHVybiB5ZShyLHMpfSkpKXt6LmVycm9yKCIiLmNvbmNhdChhLCcgc2hvdWxkIGJlICJhbGwiIG9yIGFuIGFycmF5IHdpdGggYWxsb3dlZCB2YWx1ZXMgIicpLmNvbmNhdChyLmpvaW4oJyIsICInKSwnIicpKTtyZXR1cm59cmV0dXJuIG49PT0iYWxsIj9yOmlzKG4pfWZ1bmN0aW9uIGJvKG4pe3ZhciByPXluKG4pO3JldHVybiBPKHtmb3J3YXJkX2Vycm9yc190b19sb2dzOm4uZm9yd2FyZEVycm9yc1RvTG9ncyxmb3J3YXJkX2NvbnNvbGVfbG9nczpuLmZvcndhcmRDb25zb2xlTG9ncyxmb3J3YXJkX3JlcG9ydHM6bi5mb3J3YXJkUmVwb3J0cyx1c2VfcGNpX2ludGFrZTpuLnVzZVBjaUludGFrZSxzZW5kX2xvZ3NfYWZ0ZXJfc2Vzc2lvbl9leHBpcmF0aW9uOm4uc2VuZExvZ3NBZnRlclNlc3Npb25FeHBpcmF0aW9ufSxyKX1mdW5jdGlvbiBTbyhuLHIsYSl7dmFyIHM9Q2koKSxsLGQsaD1yLm9ic2VydmFibGUuc3Vic2NyaWJlKG8pO2Z1bmN0aW9uIG8oKXtpZighKCFkfHwhbHx8IXIuaXNHcmFudGVkKCkpKXtoLnVuc3Vic2NyaWJlKCk7dmFyIF89YShsLGQpO3MuZHJhaW4oXyl9fXJldHVybntpbml0OmZ1bmN0aW9uKF8pe2lmKCFfKXt6LmVycm9yKCJNaXNzaW5nIGNvbmZpZ3VyYXRpb24iKTtyZXR1cm59aWYobW4oXy5lbmFibGVFeHBlcmltZW50YWxGZWF0dXJlcyksdHQoKSYmKF89eG8oXykpLGw9XyxkKXtTaSgiRERfTE9HUyIsXyk7cmV0dXJufXZhciBwPW1vKF8pO3AmJihkPXAsSGkoKS5zdWJzY3JpYmUoaWUpLHIudHJ5VG9Jbml0KHAudHJhY2tpbmdDb25zZW50KSxvKCkpfSxnZXQgaW5pdENvbmZpZ3VyYXRpb24oKXtyZXR1cm4gbH0sZ2V0SW50ZXJuYWxDb250ZXh0OmllLGhhbmRsZUxvZzpmdW5jdGlvbihfLHAsYyxnLGUpe2c9PT12b2lkIDAmJihnPW4oKSksZT09PXZvaWQgMCYmKGU9USgpKSxzLmFkZChmdW5jdGlvbih0KXtyZXR1cm4gdC5oYW5kbGVMb2coXyxwLGMsZyxlKX0pfX19ZnVuY3Rpb24geG8obil7cmV0dXJuIE8oe30sbix7Y2xpZW50VG9rZW46ImVtcHR5In0pfXZhciBYaT0ibG9ncyI7ZnVuY3Rpb24gVW8obil7dmFyIHI9c28oKSxhPU10KHIuZ2V0T3JDcmVhdGVUcmFja2VyKDIpKSxzPU10KHIuZ2V0T3JDcmVhdGVUcmFja2VyKDEpKSxsPVpyKCk7ZnVuY3Rpb24gZCgpe3JldHVybiBnbyhhLHMpfXZhciBoPVNvKGQsbCxmdW5jdGlvbihwLGMpe3Auc3RvcmVDb250ZXh0c0Fjcm9zc1BhZ2VzJiYoWWkoYyxhLFhpLDIpLFlpKGMscyxYaSwxKSk7dmFyIGc9bihwLGMsZCxsKTtyZXR1cm4gaD13byhwLGcpLGd9KSxvPXt9LF89bmV3IGooZnVuY3Rpb24oKXtmb3IodmFyIHA9W10sYz0wO2M8YXJndW1lbnRzLmxlbmd0aDtjKyspcFtjXT1hcmd1bWVudHNbY107cmV0dXJuIGguaGFuZGxlTG9nLmFwcGx5KGgscCl9LHIuY3JlYXRlRGV0YWNoZWRUcmFja2VyKCkpO3JldHVybiBxbih7bG9nZ2VyOl8saW5pdDpCKGZ1bmN0aW9uKHApe3JldHVybiBoLmluaXQocCl9KSxzZXRUcmFja2luZ0NvbnNlbnQ6QihmdW5jdGlvbihwKXtsLnVwZGF0ZShwKSxkcyh7ZmVhdHVyZToic2V0LXRyYWNraW5nLWNvbnNlbnQiLHRyYWNraW5nX2NvbnNlbnQ6cH0pfSksZ2V0R2xvYmFsQ29udGV4dDpCKGZ1bmN0aW9uKCl7cmV0dXJuIGEuZ2V0Q29udGV4dCgpfSksc2V0R2xvYmFsQ29udGV4dDpCKGZ1bmN0aW9uKHApe3JldHVybiBhLnNldENvbnRleHQocCl9KSxzZXRHbG9iYWxDb250ZXh0UHJvcGVydHk6QihmdW5jdGlvbihwLGMpe3JldHVybiBhLnNldENvbnRleHRQcm9wZXJ0eShwLGMpfSkscmVtb3ZlR2xvYmFsQ29udGV4dFByb3BlcnR5OkIoZnVuY3Rpb24ocCl7cmV0dXJuIGEucmVtb3ZlQ29udGV4dFByb3BlcnR5KHApfSksY2xlYXJHbG9iYWxDb250ZXh0OkIoZnVuY3Rpb24oKXtyZXR1cm4gYS5jbGVhckNvbnRleHQoKX0pLGNyZWF0ZUxvZ2dlcjpCKGZ1bmN0aW9uKHAsYyl7cmV0dXJuIGM9PT12b2lkIDAmJihjPXt9KSxvW3BdPW5ldyBqKGZ1bmN0aW9uKCl7Zm9yKHZhciBnPVtdLGU9MDtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKWdbZV09YXJndW1lbnRzW2VdO3JldHVybiBoLmhhbmRsZUxvZy5hcHBseShoLGcpfSxyLmNyZWF0ZURldGFjaGVkVHJhY2tlcigpLCQocCksYy5oYW5kbGVyLGMubGV2ZWwsJChjLmNvbnRleHQpKSxvW3BdfSksZ2V0TG9nZ2VyOkIoZnVuY3Rpb24ocCl7cmV0dXJuIG9bcF19KSxnZXRJbml0Q29uZmlndXJhdGlvbjpCKGZ1bmN0aW9uKCl7cmV0dXJuIEVpKGguaW5pdENvbmZpZ3VyYXRpb24pfSksZ2V0SW50ZXJuYWxDb250ZXh0OkIoZnVuY3Rpb24ocCl7cmV0dXJuIGguZ2V0SW50ZXJuYWxDb250ZXh0KHApfSksc2V0VXNlcjpCKGZ1bmN0aW9uKHApe3BvKHApJiZzLnNldENvbnRleHQoS2kocCkpfSksZ2V0VXNlcjpCKGZ1bmN0aW9uKCl7cmV0dXJuIHMuZ2V0Q29udGV4dCgpfSksc2V0VXNlclByb3BlcnR5OkIoZnVuY3Rpb24ocCxjKXt2YXIgZyxlPUtpKChnPXt9LGdbcF09YyxnKSlbcF07cy5zZXRDb250ZXh0UHJvcGVydHkocCxlKX0pLHJlbW92ZVVzZXJQcm9wZXJ0eTpCKGZ1bmN0aW9uKHApe3JldHVybiBzLnJlbW92ZUNvbnRleHRQcm9wZXJ0eShwKX0pLGNsZWFyVXNlcjpCKGZ1bmN0aW9uKCl7cmV0dXJuIHMuY2xlYXJDb250ZXh0KCl9KX0pfWZ1bmN0aW9uIHdvKG4scil7cmV0dXJuIE8oe2luaXQ6ZnVuY3Rpb24oYSl7U2koIkREX0xPR1MiLGEpfSxpbml0Q29uZmlndXJhdGlvbjpufSxyKX12YXIgRW89ImxvZ3MiO2Z1bmN0aW9uIEFvKG4scil7dmFyIGE9eXMobixFbyxmdW5jdGlvbihzKXtyZXR1cm4gVG8obixzKX0scik7cmV0dXJue2ZpbmRUcmFja2VkU2Vzc2lvbjpmdW5jdGlvbihzLGwpe2w9PT12b2lkIDAmJihsPXtyZXR1cm5JbmFjdGl2ZTohMX0pO3ZhciBkPWEuZmluZFNlc3Npb24ocyxsKTtyZXR1cm4gZCYmZC50cmFja2luZ1R5cGU9PT0iMSI/e2lkOmQuaWR9OnZvaWQgMH0sZXhwaXJlT2JzZXJ2YWJsZTphLmV4cGlyZU9ic2VydmFibGV9fWZ1bmN0aW9uIENvKG4pe3ZhciByPUppKG4pPT09IjEiLGE9cj97fTp2b2lkIDA7cmV0dXJue2ZpbmRUcmFja2VkU2Vzc2lvbjpmdW5jdGlvbigpe3JldHVybiBhfSxleHBpcmVPYnNlcnZhYmxlOm5ldyBSfX1mdW5jdGlvbiBKaShuKXtyZXR1cm4gTmUobi5zZXNzaW9uU2FtcGxlUmF0ZSk/IjEiOiIwIn1mdW5jdGlvbiBUbyhuLHIpe3ZhciBhPUlvKHIpP3I6Smkobik7cmV0dXJue3RyYWNraW5nVHlwZTphLGlzVHJhY2tlZDphPT09IjEifX1mdW5jdGlvbiBJbyhuKXtyZXR1cm4gbj09PSIwInx8bj09PSIxIn12YXIgJGk9ITE7ZnVuY3Rpb24gb3Qobil7dmFyIHI9d2luZG93O2lmKGppKCkpe3ZhciBhPXMoci5ERF9SVU1fU1lOVEhFVElDUyk7cmV0dXJuIWEmJiEkaSYmKCRpPSEwLElpKCJMb2dzIHNlbnQgYmVmb3JlIFJVTSBpcyBpbmplY3RlZCBieSB0aGUgc3ludGhldGljcyB3b3JrZXIiLHt0ZXN0SWQ6aG8oKSxyZXN1bHRJZDpjbygpfSkpLGF9cmV0dXJuIHMoci5ERF9SVU0pO2Z1bmN0aW9uIHMobCl7aWYobCYmbC5nZXRJbnRlcm5hbENvbnRleHQpcmV0dXJuIGwuZ2V0SW50ZXJuYWxDb250ZXh0KG4pfX1mdW5jdGlvbiBCbyhuLHIsYSxzLGwpe3ZhciBkPXZvLmNvbmNhdChbImN1c3RvbSJdKSxoPXt9O2QuZm9yRWFjaChmdW5jdGlvbihvKXtoW29dPU1zKG8sci5ldmVudFJhdGVMaW1pdGVyVGhyZXNob2xkLGwpfSksYS5zdWJzY3JpYmUoMCxmdW5jdGlvbihvKXt2YXIgXyxwLGM9by5yYXdMb2dzRXZlbnQsZz1vLm1lc3NhZ2VDb250ZXh0LGU9Zz09PXZvaWQgMD92b2lkIDA6Zyx0PW8uc2F2ZWRDb21tb25Db250ZXh0LGk9dD09PXZvaWQgMD92b2lkIDA6dCxmPW8uZG9tYWluQ29udGV4dCx1PXVyKGMuZGF0ZSksdj1uLmZpbmRUcmFja2VkU2Vzc2lvbih1KTtpZighKCF2JiYoIXIuc2VuZExvZ3NBZnRlclNlc3Npb25FeHBpcmF0aW9ufHwhbi5maW5kVHJhY2tlZFNlc3Npb24odSx7cmV0dXJuSW5hY3RpdmU6ITB9KSkpKXt2YXIgeT1pfHxzKCksbT13ZSh7c2VydmljZTpyLnNlcnZpY2Usc2Vzc2lvbl9pZDp2P3YuaWQ6dm9pZCAwLHVzcjp2dCh5LnVzZXIpP3ZvaWQgMDp5LnVzZXIsdmlldzp5LnZpZXd9LHkuY29udGV4dCxvdCh1KSxjLGUpOygoXz1yLmJlZm9yZVNlbmQpPT09bnVsbHx8Xz09PXZvaWQgMD92b2lkIDA6Xy5jYWxsKHIsbSxmKSk9PT0hMXx8bS5vcmlnaW4hPT1ILkFHRU5UJiYoKHA9aFttLnN0YXR1c10pIT09bnVsbCYmcCE9PXZvaWQgMD9wOmguY3VzdG9tKS5pc0xpbWl0UmVhY2hlZCgpfHxhLm5vdGlmeSgxLG0pfX0pfXZhciB2ZSxGbz0odmU9e30sdmVbTC5sb2ddPUMuaW5mbyx2ZVtMLmRlYnVnXT1DLmRlYnVnLHZlW0wuaW5mb109Qy5pbmZvLHZlW0wud2Fybl09Qy53YXJuLHZlW0wuZXJyb3JdPUMuZXJyb3IsdmUpO2Z1bmN0aW9uIExvKG4scil7dmFyIGE9WHMobi5mb3J3YXJkQ29uc29sZUxvZ3MpLnN1YnNjcmliZShmdW5jdGlvbihzKXt2YXIgbD17cmF3TG9nc0V2ZW50OntkYXRlOlEoKSxtZXNzYWdlOnMubWVzc2FnZSxvcmlnaW46SC5DT05TT0xFLGVycm9yOnMuZXJyb3ImJnN0KHMuZXJyb3IpLHN0YXR1czpGb1tzLmFwaV19LGRvbWFpbkNvbnRleHQ6e2hhbmRsaW5nU3RhY2s6cy5oYW5kbGluZ1N0YWNrfX07ci5ub3RpZnkoMCxsKX0pO3JldHVybntzdG9wOmZ1bmN0aW9uKCl7YS51bnN1YnNjcmliZSgpfX19ZnVuY3Rpb24ga28obixyKXt2YXIgYT1YbihuLG4uZm9yd2FyZFJlcG9ydHMpLnN1YnNjcmliZShmdW5jdGlvbihzKXt2YXIgbD1zLm1lc3NhZ2UsZCxoPXMub3JpZ2luYWxFcnJvci50eXBlPT09ImRlcHJlY2F0aW9uIj9DLndhcm46Qy5lcnJvcjtoPT09Qy5lcnJvcj9kPXN0KHMpOnMuc3RhY2smJihsKz0iIEZvdW5kIGluICIuY29uY2F0KFluKHMuc3RhY2spKSksci5ub3RpZnkoMCx7cmF3TG9nc0V2ZW50OntkYXRlOlEoKSxtZXNzYWdlOmwsb3JpZ2luOkguUkVQT1JULGVycm9yOmQsc3RhdHVzOmh9fSl9KTtyZXR1cm57c3RvcDpmdW5jdGlvbigpe2EudW5zdWJzY3JpYmUoKX19fWZ1bmN0aW9uIHpvKG4scil7aWYoIW4uZm9yd2FyZEVycm9yc1RvTG9ncylyZXR1cm57c3RvcDppZX07dmFyIGE9R3Mobikuc3Vic2NyaWJlKGZ1bmN0aW9uKGQpe2Quc3RhdGU9PT0iY29tcGxldGUiJiZsKCJ4aHIiLGQpfSkscz1IaSgpLnN1YnNjcmliZShmdW5jdGlvbihkKXtkLnN0YXRlPT09InJlc29sdmUiJiZsKCJmZXRjaCIsZCl9KTtmdW5jdGlvbiBsKGQsaCl7IW4uaXNJbnRha2VVcmwoaC51cmwpJiYoRG8oaCl8fEZpKGguc3RhdHVzKSkmJigieGhyImluIGg/Um8oaC54aHIsbixvKTpoLnJlc3BvbnNlP1BvKGgucmVzcG9uc2UsbixvKTpoLmVycm9yJiZPbyhoLmVycm9yLG4sbykpO2Z1bmN0aW9uIG8oXyl7dmFyIHA9e2lzQWJvcnRlZDpoLmlzQWJvcnRlZCxoYW5kbGluZ1N0YWNrOmguaGFuZGxpbmdTdGFja307ci5ub3RpZnkoMCx7cmF3TG9nc0V2ZW50OnttZXNzYWdlOiIiLmNvbmNhdChObyhkKSwiIGVycm9yICIpLmNvbmNhdChoLm1ldGhvZCwiICIpLmNvbmNhdChoLnVybCksZGF0ZTpoLnN0YXJ0Q2xvY2tzLnRpbWVTdGFtcCxlcnJvcjp7c3RhY2s6X3x8IkZhaWxlZCB0byBsb2FkIixoYW5kbGluZzp2b2lkIDB9LGh0dHA6e21ldGhvZDpoLm1ldGhvZCxzdGF0dXNfY29kZTpoLnN0YXR1cyx1cmw6aC51cmx9LHN0YXR1czpDLmVycm9yLG9yaWdpbjpILk5FVFdPUkt9LGRvbWFpbkNvbnRleHQ6cH0pfX1yZXR1cm57c3RvcDpmdW5jdGlvbigpe2EudW5zdWJzY3JpYmUoKSxzLnVuc3Vic2NyaWJlKCl9fX1mdW5jdGlvbiBSbyhuLHIsYSl7dHlwZW9mIG4ucmVzcG9uc2U9PSJzdHJpbmciP2EoR3Qobi5yZXNwb25zZSxyKSk6YShuLnJlc3BvbnNlKX1mdW5jdGlvbiBPbyhuLHIsYSl7YShHdChoZShKKG4pKSxyKSl9ZnVuY3Rpb24gUG8obixyLGEpe3ZhciBzPXhzKG4pOyFzfHwhcy5ib2R5P2EoKTp3aW5kb3cuVGV4dERlY29kZXI/TW8ocy5ib2R5LHIucmVxdWVzdEVycm9yUmVzcG9uc2VMZW5ndGhMaW1pdCxmdW5jdGlvbihsLGQpe2EobD8iVW5hYmxlIHRvIHJldHJpZXZlIHJlc3BvbnNlOiAiLmNvbmNhdChsKTpkKX0pOnMudGV4dCgpLnRoZW4oQihmdW5jdGlvbihsKXtyZXR1cm4gYShHdChsLHIpKX0pLEIoZnVuY3Rpb24obCl7cmV0dXJuIGEoIlVuYWJsZSB0byByZXRyaWV2ZSByZXNwb25zZTogIi5jb25jYXQobCkpfSkpfWZ1bmN0aW9uIERvKG4pe3JldHVybiBuLnN0YXR1cz09PTAmJm4ucmVzcG9uc2VUeXBlIT09Im9wYXF1ZSJ9ZnVuY3Rpb24gR3QobixyKXtyZXR1cm4gbi5sZW5ndGg+ci5yZXF1ZXN0RXJyb3JSZXNwb25zZUxlbmd0aExpbWl0PyIiLmNvbmNhdChuLnN1YnN0cmluZygwLHIucmVxdWVzdEVycm9yUmVzcG9uc2VMZW5ndGhMaW1pdCksIi4uLiIpOm59ZnVuY3Rpb24gTm8obil7cmV0dXJuIG49PT0ieGhyIj8iWEhSIjoiRmV0Y2gifWZ1bmN0aW9uIE1vKG4scixhKXthbyhuLGZ1bmN0aW9uKHMsbCxkKXtpZihzKWEocyk7ZWxzZXt2YXIgaD1uZXcgVGV4dERlY29kZXIoKS5kZWNvZGUobCk7ZCYmKGgrPSIuLi4iKSxhKHZvaWQgMCxoKX19LHtieXRlc0xpbWl0OnIsY29sbGVjdFN0cmVhbUJvZHk6ITB9KX1mdW5jdGlvbiBHbyhuLHIpe2lmKCFuLmZvcndhcmRFcnJvcnNUb0xvZ3MpcmV0dXJue3N0b3A6aWV9O3ZhciBhPW5ldyBSLHM9Vm4oYSkuc3RvcCxsPWEuc3Vic2NyaWJlKGZ1bmN0aW9uKGQpe3Iubm90aWZ5KDAse3Jhd0xvZ3NFdmVudDp7bWVzc2FnZTpkLm1lc3NhZ2UsZGF0ZTpkLnN0YXJ0Q2xvY2tzLnRpbWVTdGFtcCxlcnJvcjpzdChkKSxvcmlnaW46SC5TT1VSQ0Usc3RhdHVzOkMuZXJyb3J9fSl9KTtyZXR1cm57c3RvcDpmdW5jdGlvbigpe3MoKSxsLnVuc3Vic2NyaWJlKCl9fX12YXIgSG89TnMsSztmdW5jdGlvbiBZbyhuKXtmdW5jdGlvbiByKGEscyxsLGQsaCl7dmFyIG89d2Uocy5nZXRDb250ZXh0KCksYS5jb250ZXh0KTtpZihudChhLnN0YXR1cyxSZS5jb25zb2xlLHMpJiZqbyhhLG8pLG50KGEuc3RhdHVzLFJlLmh0dHAscykpe3ZhciBfPXtyYXdMb2dzRXZlbnQ6e2RhdGU6aHx8USgpLG1lc3NhZ2U6YS5tZXNzYWdlLHN0YXR1czphLnN0YXR1cyxvcmlnaW46SC5MT0dHRVJ9LG1lc3NhZ2VDb250ZXh0Om8sc2F2ZWRDb21tb25Db250ZXh0OmR9O2wmJihfLmRvbWFpbkNvbnRleHQ9e2hhbmRsaW5nU3RhY2s6bH0pLG4ubm90aWZ5KDAsXyl9fXJldHVybntoYW5kbGVMb2c6cn19dmFyIFZvPShLPXt9LEtbQy5va109TC5kZWJ1ZyxLW0MuZGVidWddPUwuZGVidWcsS1tDLmluZm9dPUwuaW5mbyxLW0Mubm90aWNlXT1MLmluZm8sS1tDLndhcm5dPUwud2FybixLW0MuZXJyb3JdPUwuZXJyb3IsS1tDLmNyaXRpY2FsXT1MLmVycm9yLEtbQy5hbGVydF09TC5lcnJvcixLW0MuZW1lcmddPUwuZXJyb3IsSyk7ZnVuY3Rpb24gam8obixyKXt2YXIgYT1uLnN0YXR1cyxzPW4ubWVzc2FnZTtuZVtWb1thXV0uY2FsbChXLHMscil9ZnVuY3Rpb24gS28obixyLGEscyxsKXt2YXIgZD1HaShuLHtlbmRwb2ludDpuLmxvZ3NFbmRwb2ludEJ1aWxkZXIsZW5jb2RlcjpydCgpfSxuLnJlcGxpY2EmJntlbmRwb2ludDpuLnJlcGxpY2EubG9nc0VuZHBvaW50QnVpbGRlcixlbmNvZGVyOnJ0KCl9LGEscyxsLmV4cGlyZU9ic2VydmFibGUpO3JldHVybiByLnN1YnNjcmliZSgxLGZ1bmN0aW9uKGgpe2QuYWRkKGgpfSksZH1mdW5jdGlvbiBxbyhuKXt2YXIgcj1SdCgpO24uc3Vic2NyaWJlKDEsZnVuY3Rpb24oYSl7ci5zZW5kKCJsb2ciLGEpfSl9ZnVuY3Rpb24gV28obil7cmV0dXJue2dldDpmdW5jdGlvbihyKXt2YXIgYT1uLmZpbmRUcmFja2VkU2Vzc2lvbihyKTtpZihhKXJldHVybntzZXNzaW9uX2lkOmEuaWR9fX19ZnVuY3Rpb24gWG8obil7cmV0dXJuIGZ1bmN0aW9uKHIpe24ubm90aWZ5KDAse3Jhd0xvZ3NFdmVudDp7bWVzc2FnZTpyLm1lc3NhZ2UsZGF0ZTpyLnN0YXJ0Q2xvY2tzLnRpbWVTdGFtcCxvcmlnaW46SC5BR0VOVCxzdGF0dXM6Qy5lcnJvcn19KSxJaSgiRXJyb3IgcmVwb3J0ZWQgdG8gY3VzdG9tZXIiLHsiZXJyb3IubWVzc2FnZSI6ci5tZXNzYWdlfSl9fWZ1bmN0aW9uIEpvKG4scixhLHMsbCl7dmFyIGQ9b3MoImJyb3dzZXItbG9ncy1zZGsiLHIpO2Quc2V0Q29udGV4dFByb3ZpZGVyKGZ1bmN0aW9uKCl7dmFyIGcsZSx0LGksZix1O3JldHVybnthcHBsaWNhdGlvbjp7aWQ6KGc9b3QoKSk9PT1udWxsfHxnPT09dm9pZCAwP3ZvaWQgMDpnLmFwcGxpY2F0aW9uX2lkfSxzZXNzaW9uOntpZDooZT1sLmZpbmRUcmFja2VkU2Vzc2lvbigpKT09PW51bGx8fGU9PT12b2lkIDA/dm9pZCAwOmUuaWR9LHZpZXc6e2lkOihpPSh0PW90KCkpPT09bnVsbHx8dD09PXZvaWQgMD92b2lkIDA6dC52aWV3KT09PW51bGx8fGk9PT12b2lkIDA/dm9pZCAwOmkuaWR9LGFjdGlvbjp7aWQ6KHU9KGY9b3QoKSk9PT1udWxsfHxmPT09dm9pZCAwP3ZvaWQgMDpmLnVzZXJfYWN0aW9uKT09PW51bGx8fHU9PT12b2lkIDA/dm9pZCAwOnUuaWR9fX0pO3ZhciBoPVtdO2lmKHR0KCkpe3ZhciBvPVJ0KCksXz1kLm9ic2VydmFibGUuc3Vic2NyaWJlKGZ1bmN0aW9uKGcpe3JldHVybiBvLnNlbmQoImludGVybmFsX3RlbGVtZXRyeSIsZyl9KTtoLnB1c2goZnVuY3Rpb24oKXtyZXR1cm4gXy51bnN1YnNjcmliZSgpfSl9ZWxzZXt2YXIgcD1HaShyLHtlbmRwb2ludDpyLnJ1bUVuZHBvaW50QnVpbGRlcixlbmNvZGVyOnJ0KCl9LHIucmVwbGljYSYme2VuZHBvaW50OnIucmVwbGljYS5ydW1FbmRwb2ludEJ1aWxkZXIsZW5jb2RlcjpydCgpfSxhLHMsbC5leHBpcmVPYnNlcnZhYmxlKTtoLnB1c2goZnVuY3Rpb24oKXtyZXR1cm4gcC5zdG9wKCl9KTt2YXIgYz1kLm9ic2VydmFibGUuc3Vic2NyaWJlKGZ1bmN0aW9uKGcpe3JldHVybiBwLmFkZChnLGxzKHIpKX0pO2gucHVzaChmdW5jdGlvbigpe3JldHVybiBjLnVuc3Vic2NyaWJlKCl9KX1yZXR1cm4gZnMoKSx1cyhibyhuKSkse3RlbGVtZXRyeTpkLHN0b3A6ZnVuY3Rpb24oKXtoLmZvckVhY2goZnVuY3Rpb24oZyl7cmV0dXJuIGcoKX0pfX19ZnVuY3Rpb24gJG8obixyLGEscyl7dmFyIGw9bmV3IEhvLGQ9W107bC5zdWJzY3JpYmUoMSxmdW5jdGlvbih0KXtyZXR1cm4gd2koImxvZ3MiLHQpfSk7dmFyIGg9WG8obCksbz1ScyhyKSxfPXIuc2Vzc2lvblN0b3JlU3RyYXRlZ3lUeXBlJiYhdHQoKSYmIWppKCk/QW8ocixzKTpDbyhyKSxwPUpvKG4scixoLG8sXykuc3RvcDtkLnB1c2goZnVuY3Rpb24oKXtyZXR1cm4gcCgpfSksem8ocixsKSxHbyhyLGwpLExvKHIsbCksa28ocixsKTt2YXIgYz1ZbyhsKS5oYW5kbGVMb2c7aWYoQm8oXyxyLGwsYSxoKSx0dCgpKXFvKGwpO2Vsc2V7dmFyIGc9S28ocixsLGgsbyxfKS5zdG9wO2QucHVzaChmdW5jdGlvbigpe3JldHVybiBnKCl9KX12YXIgZT1XbyhfKTtyZXR1cm57aGFuZGxlTG9nOmMsZ2V0SW50ZXJuYWxDb250ZXh0OmUuZ2V0LHN0b3A6ZnVuY3Rpb24oKXtkLmZvckVhY2goZnVuY3Rpb24odCl7cmV0dXJuIHQoKX0pfX19dmFyIGF0PVVvKCRvKTtXbih0ZSgpLCJERF9MT0dTIixhdCksYXQuaW5pdCh7Y2xpZW50VG9rZW46InB1YjQ4NDQ4OTVhYzMwMDY3YWMyYzRhYWEwMjVkYmMzOWQ3IixzaXRlOiJ1czMuZGF0YWRvZ2hxLmNvbSIsZm9yd2FyZEVycm9yc1RvTG9nczohMCxzZXNzaW9uU2FtcGxlUmF0ZToxMDB9KTtjb25zdCBaaT17SW5mbzoiaW5mbyIsV2Fybjoid2FybiIsRXJyb3I6ImVycm9yIn0sT2U9ZnVuY3Rpb24obixyKXtjb25zb2xlLmxvZygiJWNPVFRQbGF5ZXI6ICIrbiwiY29sb3I6ICM1OWFjZmYiKSxRaSgpP3Bvc3RNZXNzYWdlKHthY3Rpb246ImxvZyIscGF5bG9hZDp7c3RhdHVzOlppLkluZm8sbWVzc2FnZToiV2ViIGxvZzogIituLHBheWxvYWQ6cn19KTphdC5sb2dnZXIuaW5mbygiV2ViIGxvZzogIituLHIpfSxBZT1mdW5jdGlvbihuLHIpe2NvbnNvbGUuZXJyb3IoIk9UVFBsYXllcjogIituKSxyJiZjb25zb2xlLmVycm9yKHIpLFFpKCk/cG9zdE1lc3NhZ2Uoe2FjdGlvbjoibG9nIixwYXlsb2FkOntzdGF0dXM6WmkuRXJyb3IsbWVzc2FnZTpuLHBheWxvYWQ6cn19KTphdC5sb2dnZXIuZXJyb3IobixudWxsLHIpfSxRaT0oKT0+dHlwZW9mIFdvcmtlckdsb2JhbFNjb3BlPCJ1IiYmc2VsZiBpbnN0YW5jZW9mIFdvcmtlckdsb2JhbFNjb3BlO2NsYXNzIFpve2FzeW5jIGhhbmRsZURhdGEocixhKXtjb25zdCBzPXJyLnBhcnNlKHIpO2lmKHNbImFscGhhLm1wNCJdfHxzWyJhbHBoYS53ZWJtIl0pe2F3YWl0IHRoaXMuZGVjb2RlQWxwaGFNYXNrVmlkZW8ocyxhKTtyZXR1cm59bGV0IGw9T2JqZWN0LmtleXMocykuc29ydCgpO2Zvcihjb25zdCBkIG9mIGwpaWYoZC5lbmRzV2l0aCgiLmpzb24iKSl7bGV0IGg9W107Y29uc3Qgbz1KU09OLnBhcnNlKG5ldyBUZXh0RGVjb2RlcigpLmRlY29kZShzW2RdKSksXz1vLnRpbWVjb2RlLnJlcGxhY2UoLzovZywiXyIpO2lmKG8ucGxhY2Vob2xkZXJzJiYiaXNMaXZlImluIG8mJm8uaXNMaXZlPT09ITApZm9yKGNvbnN0IHAgaW4gby5wbGFjZWhvbGRlcnMpe2xldCBjPWAke199XyR7cH0uYWxwaGFgO3NbY10mJihvLnBsYWNlaG9sZGVyc1twXS5hbHBoYUFzVWludDhBcnJheT1zW2NdLGgucHVzaChzW2NdLmJ1ZmZlcikpfXBvc3RNZXNzYWdlKHthY3Rpb246Im1ldGFkYXRhIixwYXlsb2FkOm99LGgpfX1nZXREZXNjcmlwdGlvbihyKXtmb3IoY29uc3QgYSBvZiByLm1kaWEubWluZi5zdGJsLnN0c2QuZW50cmllcyl7Y29uc3Qgcz1hLmF2Y0N8fGEuaHZjQ3x8YS52cGNDfHxhLmF2MUM7aWYocyl7Y29uc3QgbD1uZXcgUGUuRGF0YVN0cmVhbSh2b2lkIDAsMCxQZS5EYXRhU3RyZWFtLkJJR19FTkRJQU4pO3JldHVybiBzLndyaXRlKGwpLG5ldyBVaW50OEFycmF5KGwuYnVmZmVyLDgpfX1yZXR1cm4gQWUoImF2Y0MsIGh2Y0MsIHZwY0MsIG9yIGF2MUMgYm94IG5vdCBmb3VuZCBvbiAiLHIpLG51bGx9bnVtZXJpY0ZpbGVDb21wYXJhdG9yKHIsYSl7Y29uc3Qgcz0vXihcZHsyfSlfKFxkezJ9KV8oXGR7Mn0pXyhcZHsyfSkoPzpcLihcZCspKT9cLiguKykkLyxsPXIubWF0Y2gocyksZD1hLm1hdGNoKHMpO2lmKCFsfHwhZClyZXR1cm4gMDtjb25zdFssaCxvLF8scCxjPSIwIixnXT1sLFssZSx0LGksZix1PSIwIix2XT1kO3JldHVybiBwYXJzZUludChoLDEwKS1wYXJzZUludChlLDEwKXx8cGFyc2VJbnQobywxMCktcGFyc2VJbnQodCwxMCl8fHBhcnNlSW50KF8sMTApLXBhcnNlSW50KGksMTApfHxwYXJzZUludChwLDEwKS1wYXJzZUludChmLDEwKXx8cGFyc2VJbnQoYywxMCktcGFyc2VJbnQodSwxMCl8fGcubG9jYWxlQ29tcGFyZSh2KX1hc3luYyBkZWNvZGVBbHBoYU1hc2tWaWRlbyhyLGEpe2xldCBzPU9iamVjdC5rZXlzKHIpLmZpbHRlcihnPT5nLmVuZHNXaXRoKCIuanNvbiIpKS5zb3J0KHRoaXMubnVtZXJpY0ZpbGVDb21wYXJhdG9yKS5tYXAoZz0+SlNPTi5wYXJzZShuZXcgVGV4dERlY29kZXIoKS5kZWNvZGUocltnXSkpKS5maWx0ZXIoZz0+Zy5wbGFjZWhvbGRlcnMpO2NvbnN0IGw9cGVyZm9ybWFuY2Uubm93KCksZD1zLmxlbmd0aDtPZShgV2UgbmVlZCB0byBkZWNvZGUgJHtkfSBmcmFtZXNgKTtjb25zdCBvPWF3YWl0IG5ldyBCbG9iKFtyWyJhbHBoYS5tcDQiXXx8clsiYWxwaGEud2VibSJdXSx7dHlwZTpyWyJhbHBoYS5tcDQiXT8idmlkZW8vbXA0IjoidmlkZW8vd2VibSJ9KS5hcnJheUJ1ZmZlcigpO28uZmlsZVN0YXJ0PTA7bGV0IF89MDtjb25zdCBwPW5ldyBWaWRlb0RlY29kZXIoe291dHB1dDpnPT57c1tfXS5hbHBoYU1hc2s9Zyxwb3N0TWVzc2FnZSh7YWN0aW9uOiJtZXRhZGF0YSIscGF5bG9hZDpzW19dfSxbZ10pLGcuY2xvc2UoKSxfKyssXz49ZCYmT2UoYCR7YX0gRGVjb2RlZCAke199IGZyYW1lcyBpbiAke3BlcmZvcm1hbmNlLm5vdygpLWx9IG1pbGxpc2Vjb25kcy5gKX0sZXJyb3I6Zz0+QWUoIkFscGhhIG1hc2sgbXA0IGRlY29kZXIgZXJyb3I6IixnKX0pLGM9dHIuY3JlYXRlRmlsZSgpO2Mub25FcnJvcj1nPT5CQmVycm9yKCJNUDQgcGFyc2luZyBlcnJvcjoiLGcpLGMub25SZWFkeT1nPT57Y29uc3QgZT1nLnRyYWNrcy5maW5kKHQ9PnQudHlwZT09PSJ2aWRlbyIpO2UmJihwLmNvbmZpZ3VyZSh7Y29kZWM6ZS5jb2RlYyx3aWR0aDplLnZpZGVvLndpZHRoLGhlaWdodDplLnZpZGVvLmhlaWdodCxkZXNjcmlwdGlvbjp0aGlzLmdldERlc2NyaXB0aW9uKGMuZ2V0VHJhY2tCeUlkKGUuaWQpKX0pLGMuc2V0RXh0cmFjdGlvbk9wdGlvbnMoZS5pZCksYy5zdGFydCgpKX0sYy5vblNhbXBsZXM9KGcsZSx0KT0+e3QuZm9yRWFjaChpPT57Y29uc3QgZj1uZXcgRW5jb2RlZFZpZGVvQ2h1bmsoe3R5cGU6aS5pc19zeW5jPyJrZXkiOiJkZWx0YSIsdGltZXN0YW1wOmkuY3RzLGRhdGE6bmV3IFVpbnQ4QXJyYXkoaS5kYXRhKX0pO3AuZGVjb2RlKGYpfSl9LGMuYXBwZW5kQnVmZmVyKG8pfX1jb25zdCBIdD0iOiIsZnQ9KG4scik9Pntjb25zdCBhPW4uc3BsaXQocik7cmV0dXJue2g6cGFyc2VJbnQoYVswXSksbTpwYXJzZUludChhWzFdKSxzOnBhcnNlSW50KGFbMl0pLGY6cGFyc2VJbnQoYVszXSl9fSxsdD1uPT4oIjAiK24uaCkuc2xpY2UoLTIpK0h0KygiMCIrbi5tKS5zbGljZSgtMikrSHQrKCIwIituLnMpLnNsaWNlKC0yKStIdCsoIjAiK24uZikuc2xpY2UoLTIpLHV0PShuLHIpPT57bGV0IGE9ey4uLm59O3JldHVybiBhLnMrPXIsYS5zPj02MCYmKGEucz0wLGEubSsrLGEubT49NjAmJihhLm09MCxhLmgrKykpLGF9LGVyPShuLHI9MCk9PntsZXQgYT1mdChuLCI6Iik7cmV0dXJuIHImJihhPXV0KGEscikpLGF9LFFvPShuLHI9MCk9PntsZXQgYT1lcihuLHIpO3JldHVybiBsdChhKX0sWXQ9KG4scik9Pm4uaD5yLmg/ITA6bi5oPHIuaD8hMTpuLm0+ci5tPyEwOm4ubTxyLm0/ITE6bi5zPnIucz8hMDpuLnM8ci5zPyExOm4uZj5yLmY7dHJ5e2xldCBuPSExLHI9IiIsYT0iIixzPXt9LGw9bnVsbCxkPVtdLGg9e30sbz0hMCxfPSExO2NvbnN0IHA9bmV3IFpvO2xldCBjO2NvbnN0IGc9aT0+e28mJihpPjAmJll0KGVyKHMudGMsaSksaCk/c2V0VGltZW91dCgoKT0+e2coaSl9LDEwMCk6c2V0VGltZW91dCgoKT0+e3MudGM9UW8ocy50YyxpKSx0KCl9LDApKX0sZT1pPT57Y29uc3QgZj1pLnRjLnJlcGxhY2VBbGwoIjoiLCJfIik7cmV0dXJuIGM/YCR7aS5wYXRofS9tYW5pZmVzdHMvNTkuOTQvJHtmfS56aXBgOmAke2kucGF0aH0vJHtmfS56aXBgfSx0PWFzeW5jKCk9PntfPSEwO2NvbnN0IGk9cyxmPWUoaSk7dHJ5e2NvbnN0IHU9YXdhaXQgZmV0Y2goZik7aWYodS5zdGF0dXM+PTQwMCl7bGV0IFU9KHBlcmZvcm1hbmNlLm5vdygpLWwpLzFlMztVPjQ/KEFlKCJEaWRuJ3QgZmluZCB0aW1lY29kZSAiK2kudGMrIiwgbm93IGZvciAiK1UudG9GaXhlZCgyKSsiIHNlY29uZHMgLSBnaXZlIHVwICEiKSxnKDIpKTooQWUoIkRpZG4ndCBmaW5kIHRpbWVjb2RlICIraS50YysiLCBub3cgZm9yICIrVS50b0ZpeGVkKDIpKyIgc2Vjb25kcyIpLGcoMCkpLF89ITE7cmV0dXJufWxldCB2PXBlcmZvcm1hbmNlLm5vdygpLHk9MDtpZihsKWZvcih5PXYtbCxkLnB1c2goeSk7ZC5sZW5ndGg+MWUzOylkLnNoaWZ0KCk7bD12O2NvbnN0IG09YXdhaXQgdS5hcnJheUJ1ZmZlcigpO2F3YWl0IHAuaGFuZGxlRGF0YShtLGkudGMpO2NvbnN0IGI9cGVyZm9ybWFuY2Uubm93KCl9Y2F0Y2godSl7QWUoYEVycm9yIG9uIHVybCAke2Z9YCx1KX1fPSExLGcoMil9O2FkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLGk9PntpZighbiYmaS5kYXRhLmNsb3VkRnJvbnRVUkwpe249ITAsYz1pLmRhdGEubWFza01QND8/ITEscj1pLmRhdGEuY2xvdWRGcm9udFVSTCxhPWkuZGF0YS5mb2xkZXJOYW1lO2xldCBmPWZ0KGkuZGF0YS50YywiOiIpO2g9dXQoZiw0KSxmLmY9MCxmLnM9Zi5zJTI9PT0wP2YuczpmLnMtMSxzPXt0YzpsdChmKSxwYXRoOmAke3J9LyR7YX1gfSxPZShgTWV0YS1kYXRhIHdvcmtlciBzdGFydGluZyBmcm9tIHRoaXMgdGltZS1jb2RlOiAke3MudGN9YCksdCgpfWVsc2V7bGV0IGY9ZnQoaS5kYXRhLnRjLCI6Iik7Zi5mPTAsZi5zPWYucyUyPT09MD9mLnM6Zi5zLTEsWXQoZixoKSYmKHMudGM9bHQoZiksT2UoYE1ldGEtZGF0YSB3b3JrZXIganVtcHMgZm9yd2FyZCB0byB0aGlzIHRpbWUtY29kZTogJHtzLnRjfWApKSxZdChmdChzLnRjLCI6IiksdXQoZiw0KSkmJihzLnRjPWx0KGYpLE9lKGBNZXRhLWRhdGEgd29ya2VyIGp1bXBzIGJhY2sgdG8gdGhpcyB0aW1lLWNvZGU6ICR7cy50Y31gKSksaD11dChmLDQpLCFvJiZpLmRhdGEuZW5hYmxlZD8obz0hMCxffHx0KCkpOm89aS5kYXRhLmVuYWJsZWR9fSl9Y2F0Y2gobil7QWUobil9fSkoKTsK",kY=l=>Uint8Array.from(atob(l),W=>W.charCodeAt(0)),$e=typeof self<"u"&&self.Blob&&new Blob([kY(qe)],{type:"text/javascript;charset=utf-8"});function xY(l){let W;try{if(W=$e&&(self.URL||self.webkitURL).createObjectURL($e),!W)throw"";const d=new Worker(W,{name:l==null?void 0:l.name});return d.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(W)}),d}catch{return new Worker("data:text/javascript;base64,"+qe,{name:l==null?void 0:l.name})}finally{W&&(self.URL||self.webkitURL).revokeObjectURL(W)}}class yY{constructor(W,d){this.options=W,this.composer=d,this.sourceFPS=6e4/1001,this.lastFrames,this.metadataWorker=null,this.setMetaDataFolderName(W.gameId)}setMetaDataFolderName(W){this.folderName=W,this.lastFrames&&this.loadMetaData(this.lastFrames)}setLastFrame(W){this.lastFrames=W,this.folderName&&this.loadMetaData(this.lastFrames)}loadMetaData(W){if(this.metadataWorker){let d=Bm(hl(this.lastFrames,this.sourceFPS,!0));this.metadataWorker.postMessage({tc:Xl(d,!1),enabled:this.options.enabled})}else{const d=new xY;this.metadataWorker=d,d.onerror=function(t){Ml("Error from worker:",t)},d.addEventListener("message",t=>{switch(t.data.action){case"metadata":this.composer.onMetaData(t.data.payload);break;case"log":Ae(t.data.payload);break;default:SW("unknown action from meta worker")}});let b=Bm(hl(W,this.sourceFPS,!0));d.postMessage({cloudFrontURL:this.options.cloudFrontURL,folderName:this.folderName,tc:Xl(b,!1),maskMP4:this.options.maskMP4})}}}class HY{constructor(W){O(this,"adTexture",null);O(this,"place2AdTexture",{});O(this,"place2ad",{});O(this,"ad2place",{});O(this,"currentAds2BoundingRect",[]);O(this,"lastTimeReportedIncomingTC",0);O(this,"autoAddIndex",null);O(this,"digitImg",{});O(this,"sourceFPS",6e4/1001);O(this,"metadataArr",[]);O(this,"metadataMap",{});O(this,"videoStarted",!1);O(this,"advertisementMap",{});O(this,"ad2Url",{});O(this,"videoCopier",null);O(this,"autoAddIndex",null);if(W.renderTimecodes)for(let d=0;d<10;++d){let b=d+".1",t=d+".2";this.digitImg[b]=this.createDigitImg(b),this.digitImg[t]=this.createDigitImg(t)}this.options=Object.assign({adLoopTime:5e3,isAdLoop:!1},W||{}),this.metaDataFetcher=new yY(this.options,this)}setLastFrame(W){this.metaDataFetcher.setLastFrame(W)}onUserClickOnCanvas(W){console.log("fix me")}texUnitForGenericAd(){return 0}texUnitForAdInPlace(W){let d=Object.keys(this.place2ad);for(let b=0;b<d.length;++b)if(W==d[b])return b+1;return 0}texUnitForPlaceHolder(W){let d=Object.keys(this.place2ad);for(let b=0;b<d.length;++b){let t=d[b];if(W.name.indexOf(t)>=0)return b}return 0}adNameForPlaceHolder(W){let d=Object.keys(this.place2ad);for(let b=0;b<d.length;++b){let t=d[b];if(W.name.indexOf(t)>=0&&this.place2AdTexture&&this.place2AdTexture[t]&&this.place2AdTexture[t].name)return this.place2AdTexture[t].name}return this.lastAdName}texUnitBaseForAlpha(){return 1+Object.keys(this.place2ad).length}initGL(){const W=this.options.maskMP4?[bV,Dl]:[cW,ym];this.program=wm(this.ctx,W),this.ctx.useProgram(this.program),this.counter=0,this.cleanGL()}cleanGL(){this.ctx.clearColor(0,0,0,0),this.ctx.clear(this.ctx.COLOR_BUFFER_BIT)}generateTexture(W,d,b,t,e,n,i,h=!1,G=!1){i?this.ctx.pixelStorei(this.ctx.UNPACK_ALIGNMENT,1):this.ctx.pixelStorei(this.ctx.UNPACK_ALIGNMENT,4),this.ctx.pixelStorei(this.ctx.UNPACK_FLIP_Y_WEBGL,h);const p=this.ctx.createTexture();this.ctx.activeTexture(this.ctx.TEXTURE0+d),this.ctx.bindTexture(this.ctx.TEXTURE_2D,p);try{e&&n?this.ctx.texImage2D(this.ctx.TEXTURE_2D,0,t??this.ctx.RGBA,e,n,0,t??this.ctx.RGBA,this.ctx.UNSIGNED_BYTE,W):this.ctx.texImage2D(this.ctx.TEXTURE_2D,0,t??this.ctx.RGBA,this.ctx.RGBA,this.ctx.UNSIGNED_BYTE,W)}catch(X){return Ml(X),null}if(G){let X=e||W.width,o=n||W.height;X&&gm(X)&&o&&gm(o)?this.ctx.generateMipmap(this.ctx.TEXTURE_2D):(this.ctx.texParameteri(this.ctx.TEXTURE_2D,this.ctx.TEXTURE_WRAP_S,this.ctx.CLAMP_TO_EDGE),this.ctx.texParameteri(this.ctx.TEXTURE_2D,this.ctx.TEXTURE_WRAP_T,this.ctx.CLAMP_TO_EDGE),this.ctx.texParameteri(this.ctx.TEXTURE_2D,this.ctx.TEXTURE_MIN_FILTER,this.ctx.LINEAR))}else this.ctx.texParameteri(this.ctx.TEXTURE_2D,this.ctx.TEXTURE_WRAP_S,this.ctx.CLAMP_TO_EDGE),this.ctx.texParameteri(this.ctx.TEXTURE_2D,this.ctx.TEXTURE_WRAP_T,this.ctx.CLAMP_TO_EDGE),this.ctx.texParameteri(this.ctx.TEXTURE_2D,this.ctx.TEXTURE_MIN_FILTER,this.ctx.LINEAR),this.ctx.texParameteri(this.ctx.TEXTURE_2D,this.ctx.TEXTURE_MAG_FILTER,this.ctx.LINEAR);let s=this.ctx.getUniformLocation(this.program,b);return s&&this.ctx.uniform1i(s,d),p}_nextAdvertisement(){this.autoAddIndex=setTimeout(()=>{const W=Object.keys(this.advertisementMap);W.length&&(this.selectAd(W[Math.floor(Math.random()*W.length)]),this._nextAdvertisement())},this.options.adLoopTime)}makeSureAdPerPlace(){if(this.place2ad){let W=Object.keys(this.place2ad);for(let d=0;d<W.length;++d){let b=W[d];!this.place2AdTexture[b]&&this.place2ad[b].length>0&&(il("MakeSureAdPerPlace: Set default image "+this.place2ad[b][0]+" for place "+b),this.selectAd("#"+this.place2ad[b][0]))}}}selectAd(W){il(`composer::SelectAd: selected ad is ${W}`,{media_url:W});let d=this.advertisementMap[W];if(!d)Ml("SelectAd: Failed to find image '"+W+"'");else if(this.ad2place&&this.ad2place[W]){let b=this.ad2place[W];il("composer::SelectAd: The selected ad should be in place "+b);let t=this.texUnitForAdInPlace(b),e="ad"+(t-1);this.place2AdTexture[b]&&this.ctx.deleteTexture(this.place2AdTexture[b].tex);const n=this.generateTexture(d,t,e,null,null,null,!1,!1,!0);this.place2AdTexture[b]={tex:n,texUnitId:t,texName:e,name:W}}else this.adTexture&&this.ctx.deleteTexture(this.adTexture),this.adTexture=this.generateTexture(d,this.texUnitForGenericAd(),"ad0",null,null,null,!1,!1,!0),this.lastAd=d,this.lastAdName=W}onMetaData(W){this.metadataMap[W.timecode]=W,this.metadataArr.push(W.timecode)}renderFrame(){let W=this.ctx.getAttribLocation(this.program,"a_position"),d=this.ctx.getAttribLocation(this.program,"a_uv"),b=this.ctx.getUniformLocation(this.program,"u_resolution");this.ctx.uniform2f(b,this.ctx.canvas.width,this.ctx.canvas.height),b=this.ctx.getUniformLocation(this.program,"u_resolution2"),this.ctx.uniform2f(b,this.ctx.canvas.width,this.ctx.canvas.height);let t=this.ctx.createBuffer();this.ctx.enableVertexAttribArray(W),this.ctx.bindBuffer(this.ctx.ARRAY_BUFFER,t);let e=2,n=this.ctx.FLOAT,i=!1,h=0,G=0;this.ctx.vertexAttribPointer(W,e,n,i,h,G);let p=this.ctx.createBuffer();this.ctx.bindBuffer(this.ctx.ARRAY_BUFFER,p),this.ctx.bufferData(this.ctx.ARRAY_BUFFER,new Float32Array([0,0,1,0,0,1,0,1,1,0,1,1]),this.ctx.STATIC_DRAW),this.ctx.enableVertexAttribArray(d),e=2,n=this.ctx.FLOAT,i=!1,h=0,G=0,this.ctx.vertexAttribPointer(d,e,n,i,h,G),this.ctx.viewport(0,0,this.ctx.canvas.width,this.ctx.canvas.height),this.ctx.clearColor(0,0,0,0),this.ctx.clear(this.ctx.COLOR_BUFFER_BIT|this.ctx.DEPTH_BUFFER_BIT),this.ctx.bindBuffer(this.ctx.ARRAY_BUFFER,t),this.setRectangle(0,0,this.canvas.width,this.canvas.height);let s=this.ctx.TRIANGLES;this.ctx.drawArrays(s,G,6)}setRectangle(W,d,b,t){let e=W,n=W+b,i=d,h=d+t;this.ctx.bufferData(this.ctx.ARRAY_BUFFER,new Float32Array([e,i,n,i,e,h,e,h,n,i,n,h]),this.ctx.STATIC_DRAW)}renderAugmentation(W){this.canvas.width=1280,this.canvas.height=720,this.options.maskMP4?this.renderAugmentationMP4(W):this.renderAugmentationOld(W)}renderAugmentationMP4(W){this.videoStarted=!0;let d=null;if(this.metadataMap[W]){d=this.metadataMap[W];const n=this.metadataArr.indexOf(W);n>-5&&this.metadataArr.splice(0,n-4).forEach(i=>{delete this.metadataMap[i]})}else this.counter++,this.counter>60&&(this.counter=0,Ml("Missing meta data at time code "+W));let b=[],t=0;if(this.currentAds2BoundingRect=[],d!=null&&d.alphaMask){let n=this.texUnitBaseForAlpha();const i=this.generateTexture(d.alphaMask,n,"u_alphaMask",this.ctx.RGBA,null,null,!1,!0);b.push(i);for(const h in d.placeholders){const G=d.placeholders[h];let p="hasLogo"+t,s=this.ctx.getUniformLocation(this.program,p);this.ctx.uniform1i(s,1);let X="adForLogo"+t,o=this.ctx.getUniformLocation(this.program,X);this.ctx.uniform1i(o,this.texUnitForPlaceHolder(G));let r="u_matrix"+t,M=this.ctx.getUniformLocation(this.program,r);this.ctx.uniformMatrix3fv(M,!1,G.tranform);let L={l:-1,t:-1,r:-1,b:-1};for(let J of G.corners)(J.x<L.l||L.l==-1)&&(L.l=J.x),(J.x>L.r||L.r==-1)&&(L.r=J.x),(J.y<L.t||L.t==-1)&&(L.t=J.y),(J.y>L.b||L.b==-1)&&(L.b=J.y);L.l/=d.canvasSize.width,L.r/=d.canvasSize.width,L.t/=d.canvasSize.height,L.b/=d.canvasSize.height,this.currentAds2BoundingRect.push({name:this.adNameForPlaceHolder(G),rect:L}),t++}}const e=4;for(;t<e;++t){let n="hasLogo"+t,i=this.ctx.getUniformLocation(this.program,n);this.ctx.uniform1i(i,0)}this.renderTimecodes(W),this.renderFrame();for(const n of b)this.ctx.deleteTexture(n)}renderAugmentationOld(W){this.videoStarted=!0;let d=null;if(this.metadataMap[W]){d=this.metadataMap[W];const n=this.metadataArr.indexOf(W);n>-5&&this.metadataArr.splice(0,n-4).forEach(i=>{delete this.metadataMap[i]})}else this.counter++,this.counter>60&&(this.counter=0,Ml("Missing meta data at time code "+W));let b=[],t=0;this.currentAds2BoundingRect=[];for(const n in d==null?void 0:d.placeholders){const i=d.placeholders[n];if(!i.alphaAsUint8Array)continue;let h="alpha"+t,G=this.texUnitBaseForAlpha()+t;if(i.alphaTex=this.generateTexture(i.alphaAsUint8Array,G,h,this.ctx.ALPHA,i.width,i.height,!0),i.alphaAsUint8Array=null,!i.alphaTex){Ml("Failed to create alpha texture");continue}b.push(i.alphaTex);let p="hasLogo"+t,s=this.ctx.getUniformLocation(this.program,p);this.ctx.uniform1i(s,1);let X="adForLogo"+t,o=this.ctx.getUniformLocation(this.program,X),r=!1;i.name.indexOf("blur")>=0?(this.ctx.uniform1i(o,99),r=!0):this.ctx.uniform1i(o,this.texUnitForPlaceHolder(i));let M="u_alpha"+t+"TopLeft",L=this.ctx.getUniformLocation(this.program,M);this.ctx.uniform2fv(L,[i.maskX,i.maskY]);let J="u_alpha"+t+"Size",w=this.ctx.getUniformLocation(this.program,J);this.ctx.uniform2fv(w,[i.width,i.height]);let K="u_matrix"+t,x=this.ctx.getUniformLocation(this.program,K);if(this.ctx.uniformMatrix3fv(x,!1,i.tranform),!r){let z={l:-1,t:-1,r:-1,b:-1};for(let I of i.corners)(I.x<z.l||z.l==-1)&&(z.l=I.x),(I.x>z.r||z.r==-1)&&(z.r=I.x),(I.y<z.t||z.t==-1)&&(z.t=I.y),(I.y>z.b||z.b==-1)&&(z.b=I.y);z.l/=d.canvasSize.width,z.r/=d.canvasSize.width,z.t/=d.canvasSize.height,z.b/=d.canvasSize.height,this.currentAds2BoundingRect.push({name:this.adNameForPlaceHolder(i),rect:z})}t++}const e=4;for(;t<e;++t){let n="hasLogo"+t,i=this.ctx.getUniformLocation(this.program,n);this.ctx.uniform1i(i,0)}this.renderTimecodes(W),this.renderFrame();for(const n of b)this.ctx.deleteTexture(n)}renderTimecodes(W){if(this.options.renderTimecodes){let d=W.split(":")[3],b=d.indexOf(".")>=0?2:1,e=parseInt(d.split(".")[0])%10+"."+b,n=this.texUnitBaseForAlpha()+5,i=this.generateTexture(this.digitImg[e],n,"digitTex");texturesForThisFrame.push(i);let G=this.ctx.getUniformLocation(this.program,"hasDigit");this.ctx.uniform1i(G,1);let s=this.ctx.getUniformLocation(this.program,"u_digitTopLeft");this.ctx.uniform2fv(s,[0,0]);let o=this.ctx.getUniformLocation(this.program,"u_digitSize");this.ctx.uniform2fv(o,[200,200])}else{let b=this.ctx.getUniformLocation(this.program,"hasDigit");this.ctx.uniform1i(b,0)}}toggleFullscreen(){(this.requestFullscreen||this.webkitRequestFullscreen).call(this).catch(W=>{Ml(W)})}}class zY extends HY{constructor(W,d){super(W),this.canvas=document.createElement("canvas"),this.ctx=this.canvas.getContext("webgl",{premultipliedAlpha:!1,antialias:!1});let b=d.getElementsByTagName("video")[0];this.canvas.style.top=0,this.canvas.style.left=0,this.canvas.style.width="100%",this.canvas.style.zIndex=1e5,this.canvas.width=d.clientWidth,this.canvas.height=d.clientHeight,this.canvas.style.position="absolute",this.canvas.width=1280,this.canvas.height=720,this.elementToForceRender=document.createElement("span"),this.elementToForceRender.id="elementToForceRender",this.canvas.appendChild(this.elementToForceRender);let t=b.nextSibling;t?d.insertBefore(this.canvas,t):d.appendChild(this.canvas),this.canvas.style["pointer-events"]="none",b.addEventListener("click",e=>{this.onUserClickOnCanvas(e)}),this.canvas.addEventListener("dblclick",this.ToggleFullscreen),this.initGL()}initGL(){const W=this.options.maskMP4?[bV,Dl]:[cW,ym];this.program=wm(this.ctx,W),this.ctx.useProgram(this.program),this.counter=0,this.cleanGL()}createDigitImg(W){let d=document.createElement("canvas");d.width=50,d.height=50;let b=d.getContext("2d");b.fillStyle="black",b.fillRect(0,0,d.width,d.height),b.font="30px Arial",b.fillStyle="white",b.fillText(W,10,35);let t=d.toDataURL(),e=document.createElement("img");return e.src=t,e}cleanGL(){super.cleanGL()}getCanvas(){return this.canvas}addAdvertisement(W,d,b=null){if(W.indexOf(".json")>-1){fetch(d).then(async e=>{this.place2ad=await e.json(),this.ad2place={};let n=Object.keys(this.place2ad);for(let i=0;i<n.length;++i){let h=n[i];if(h=="urls"){this.ad2Url=this.place2ad[h],delete this.place2ad[h];continue}let G=this.place2ad[h];for(let p=0;p<G.length;++p){let s=G[p];this.ad2place["#"+s]=h}}Object.keys(this.place2ad).length>0&&(il(`composer::AddAdvertisement: place-to-ads mapping: ${this.place2ad}`),il(`composer::AddAdvertisement: ads-to-place mapping: ${this.ad2place}`),setTimeout(()=>{this.makeSureAdPerPlace()},3e3))}),b&&b();return}const t=new Image;return t.crossOrigin="Anonymous",t.onload=()=>{let e=Object.keys(this.advertisementMap).length===0;this.advertisementMap[W]=t,il("composer::AddAdvertisement",W),e&&(this.selectAd(W),this.options.isAdLoop&&(clearTimeout(this.autoAddIndex),this._nextAdvertisement())),b&&b()},t.onerror=()=>{alert(`( Security ) We cant reach ${d} .`)},t.src=d,t}}const ln="dmFyIHVSPU9iamVjdC5kZWZpbmVQcm9wZXJ0eTt2YXIgaVI9KFRuLGFuLGFjKT0+YW4gaW4gVG4/dVIoVG4sYW4se2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmFjfSk6VG5bYW5dPWFjO3ZhciB5bD0oVG4sYW4sYWMpPT5pUihUbix0eXBlb2YgYW4hPSJzeW1ib2wiP2FuKyIiOmFuLGFjKTsoZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7Y29uc3QgVG49YAp1bmlmb3JtIHZlYzIgdV9yZXNvbHV0aW9uOwphdHRyaWJ1dGUgdmVjMiBhX3Bvc2l0aW9uOwphdHRyaWJ1dGUgdmVjMiBhX3V2OwoKdmFyeWluZyB2ZWMyIHZfdXY7Cgp2b2lkIG1haW4oKSB7CiAgdl91diA9IGFfdXY7CgogIC8vIGNvbnZlcnQgdGhlIHJlY3RhbmdsZSBmcm9tIHBpeGVscyB0byAwLjAgdG8gMS4wCiAgdmVjMiBjbGlwU3BhY2UgPSAyLjAgKiAoYV9wb3NpdGlvbiAvIHVfcmVzb2x1dGlvbikgLSAxLjA7CgogIGdsX1Bvc2l0aW9uID0gdmVjNChjbGlwU3BhY2UsIDAuMCwgMS4wKTsKfQpgLGFuPWAKI2lmZGVmIEdMX0ZSQUdNRU5UX1BSRUNJU0lPTl9ISUdICnByZWNpc2lvbiBoaWdocCBmbG9hdDsKI2Vsc2UKcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CiNlbmRpZgoKCnVuaWZvcm0gdmVjMiB1X3Jlc29sdXRpb247CnVuaWZvcm0gc2FtcGxlcjJEIGFkMDsKdW5pZm9ybSBzYW1wbGVyMkQgYWQxOwp1bmlmb3JtIHNhbXBsZXIyRCB1X2FscGhhTWFzazsKCnZhcnlpbmcgdmVjMiB2X3V2OwoKdW5pZm9ybSBpbnQgaGFzTG9nbzA7CnVuaWZvcm0gbWF0MyB1X21hdHJpeDA7Cgp1bmlmb3JtIGludCBoYXNMb2dvMTsKdW5pZm9ybSBtYXQzIHVfbWF0cml4MTsvL3RoZSByZXZlcnNlIGhvbW9ncmFwaHkKCmNvbnN0IGZsb2F0IERpcmVjdGlvbnMgPSAxNi4wOyAvLyBCTFVSIERJUkVDVElPTlMgKERlZmF1bHQgMTYuMCAtIE1vcmUgaXMgYmV0dGVyIGJ1dCBzbG93ZXIpCmNvbnN0IGZsb2F0IFF1YWxpdHlBZCA9IDMuMDsgLy8gQkxVUiBRVUFMSVRZIChEZWZhdWx0IDMuMCAtIE1vcmUgaXMgYmV0dGVyIGJ1dCBzbG93ZXIpCmNvbnN0IGZsb2F0IFF1YWxpdHlBbHBoYSA9IDUuMDsgLy8gQkxVUiBRVUFMSVRZIChEZWZhdWx0IDMuMCAtIE1vcmUgaXMgYmV0dGVyIGJ1dCBzbG93ZXIpCmNvbnN0IGZsb2F0IEJsdXJSYWRpdXNBZCA9IDEwLjA7CmNvbnN0IGZsb2F0IEJsdXJSYWRpdXNBbHBoYSA9IDEwLjA7CmNvbnN0IGZsb2F0IFBpID0gNi4yODMxODUzMDcxODsgLy8gUGkqMgoKdmVjNCBCbHVyQWQoc2FtcGxlcjJEIGFkVGV4dHVyZSwgdmVjMiBhZFRleENvb3JkKSB7CiAgdmVjMiBSYWRpdXMgPSBCbHVyUmFkaXVzQWQvdV9yZXNvbHV0aW9uLnh5OwogIHZlYzQgcmVzID0gdGV4dHVyZTJEKGFkVGV4dHVyZSwgYWRUZXhDb29yZCk7CiAgIAogIGZvciggZmxvYXQgZD0wLjA7IGQ8UGk7IGQrPVBpL0RpcmVjdGlvbnMpIHsKCQlmb3IoZmxvYXQgaT0xLjAvUXVhbGl0eUFkOyBpPD0xLjA7IGkrPTEuMC9RdWFsaXR5QWQpIHsKCQkJcmVzICs9IHRleHR1cmUyRChhZFRleHR1cmUsIGFkVGV4Q29vcmQrdmVjMihjb3MoZCksc2luKGQpKSpSYWRpdXMqaSk7CiAgICB9CiAgfQoKICByZXMgLz0gUXVhbGl0eUFkICogRGlyZWN0aW9ucyAtIDUuMDsKCiAgcmV0dXJuIHJlczsKfQoKdm9pZCBCbGVuZFdpdGhMb2dvKHNhbXBsZXIyRCBhZCwgbWF0MyBtYXRyaXgpIHsKICB2ZWMyIGN1ckNvb3JkID0gZ2xfRnJhZ0Nvb3JkLnh5OwogIGN1ckNvb3JkLnkgPSB1X3Jlc29sdXRpb25bMV0gLSBjdXJDb29yZC55OwoKICB2ZWMyIHRleENvb3JkOwogIHRleENvb3JkLnggPSAobWF0cml4WzBdWzBdKmN1ckNvb3JkLnggKyBtYXRyaXhbMF1bMV0qY3VyQ29vcmQueSArIG1hdHJpeFswXVsyXSkgLyAobWF0cml4WzJdWzBdKmN1ckNvb3JkLnggKyBtYXRyaXhbMl1bMV0qY3VyQ29vcmQueSArIDEuMCk7CiAgdGV4Q29vcmQueSA9IChtYXRyaXhbMV1bMF0qY3VyQ29vcmQueCArIG1hdHJpeFsxXVsxXSpjdXJDb29yZC55ICsgbWF0cml4WzFdWzJdKSAvIChtYXRyaXhbMl1bMF0qY3VyQ29vcmQueCArIG1hdHJpeFsyXVsxXSpjdXJDb29yZC55ICsgMS4wKTsKICB0ZXhDb29yZCAvPSB1X3Jlc29sdXRpb247CgogIHZlYzQgbWFza0FscGhhID0gdGV4dHVyZTJEKHVfYWxwaGFNYXNrLCB2X3V2KTsKICB2ZWM0IGFkQ29sb3IgPSBCbHVyQWQoYWQsIHRleENvb3JkKTsKICBmbG9hdCBhZEFscGhhID0gdGV4dHVyZTJEKGFkMCwgdGV4Q29vcmQpLmE7CgogIGZsb2F0IGZpbmFsQWxwaGEgPSBtYXNrQWxwaGEucjsKICBpZiAoZmluYWxBbHBoYSA8IDAuMykgCiAgICBmaW5hbEFscGhhID0gMC4wOwogIGZpbmFsQWxwaGEgKj0gYWRDb2xvci5hOwogIGdsX0ZyYWdDb2xvciA9IHZlYzQoYWRDb2xvci5yZ2IsIGZpbmFsQWxwaGEpOwogIGdsX0ZyYWdDb2xvci5yZ2IgKj0gZmluYWxBbHBoYTsKfQoKdm9pZCBtYWluKCkgeyAKICBpZiAoaGFzTG9nbzAgPT0gMSkgewogICAgQmxlbmRXaXRoTG9nbyhhZDAsIHVfbWF0cml4MCk7CiAgfSAKICBpZiAoaGFzTG9nbzEgPT0gMSkgewogICAgQmxlbmRXaXRoTG9nbyhhZDEsICB1X21hdHJpeDEpOwogIH0gCn0KYCxhYz1gCgovL0hpZ2ggcHJlY2lzaW9uIG1vZGUKcHJlY2lzaW9uIGhpZ2hwIGZsb2F0OwoKLy8gYW4gYXR0cmlidXRlIGlzIGFuIGlucHV0IChpbikgdG8gYSB2ZXJ0ZXggc2hhZGVyLgovLyBJdCB3aWxsIHJlY2VpdmUgdmVydGV4IGRhdGEgZnJvbSB0aGUgYnVmZmVyCmF0dHJpYnV0ZSB2ZWMyIGFfcG9zaXRpb247CmF0dHJpYnV0ZSB2ZWMyIGFfdXY7CnVuaWZvcm0gdmVjMiB1X3Jlc29sdXRpb247CnZhcnlpbmcgdmVjMiB2X3RleENvb3JkOwoKCi8vIE1haW4gdmVydGV4IHNoYWRlcgp2b2lkIG1haW4oKSB7CiAgLy8gY29udmVydCB0aGUgcmVjdGFuZ2xlIGZyb20gcGl4ZWxzIHRvIDAuMCB0byAxLjAKICAgdmVjMiB6ZXJvVG9PbmUgPSBhX3Bvc2l0aW9uIC8gdV9yZXNvbHV0aW9uOwoKICAgLy8gY29udmVydCBmcm9tIDAtPjEgdG8gMC0+MgogICB2ZWMyIHplcm9Ub1R3byA9IHplcm9Ub09uZSAqIDIuMDsKCiAgIC8vIGNvbnZlcnQgZnJvbSAwLT4yIHRvIC0xLT4rMSAoY2xpcHNwYWNlKQogICB2ZWMyIGNsaXBTcGFjZSA9IHplcm9Ub1R3byAtIDEuMDsKCiAgIGdsX1Bvc2l0aW9uID0gdmVjNChjbGlwU3BhY2UgKiB2ZWMyKDEsIC0xKSwgMCwgMSk7CgogICAvLyBwYXNzIHRoZSB0ZXhDb29yZCB0byB0aGUgZnJhZ21lbnQgc2hhZGVyCiAgIC8vIFRoZSBHUFUgd2lsbCBpbnRlcnBvbGF0ZSB0aGlzIHZhbHVlIGJldHdlZW4gcG9pbnRzLgogICB2X3RleENvb3JkID0gYV91djsKfQpgLHphPWAKCi8vSGlnaCBwcmVjaXNpb24gbW9kZQpwcmVjaXNpb24gaGlnaHAgZmxvYXQ7CgovL1RoZSB0ZXh0dXJlcwp1bmlmb3JtIHNhbXBsZXIyRCB1X2ltYWdlOy8vdmlkZW8gZnJhbWUncyB0ZXh0dXJlMkQKdW5pZm9ybSBzYW1wbGVyMkQgYWQwOy8vdGhlIGFkIHRleHR1cmUyRAp1bmlmb3JtIHNhbXBsZXIyRCBhZDE7Ly90aGUgYWQgdGV4dHVyZTJECnVuaWZvcm0gc2FtcGxlcjJEIGFkMjsvL3RoZSBhZCB0ZXh0dXJlMkQKdW5pZm9ybSBzYW1wbGVyMkQgYWQzOy8vdGhlIGFkIHRleHR1cmUyRAoKdW5pZm9ybSB2ZWMyIHVfcmVzb2x1dGlvbjI7Ly9yZXNvbHV0aW9uIG9mIHRoZSBjYW52YXMKCi8vdl90ZXhDb29yZCBmcm9tIHRoZSB2ZXJ0ZXggc2hhZGVyCnZhcnlpbmcgdmVjMiB2X3RleENvb3JkOwoKLy9Mb2dvcycgc3RhZmYKdW5pZm9ybSBpbnQgaGFzTG9nbzA7Ly9oYXMgbG9nbyA/CnVuaWZvcm0gaW50IGFkRm9yTG9nbzA7CnVuaWZvcm0gc2FtcGxlcjJEIGFscGhhMDsvL3RoZSBhbHBoYSdzIG1hdGUKdW5pZm9ybSBtYXQzIHVfbWF0cml4MDsvL3RoZSByZXZlcnNlIGhvbW9ncmFwaHkKdW5pZm9ybSB2ZWMyIHVfYWxwaGEwVG9wTGVmdDsvL3RoZSBhbHBoYSBtYXRlJ3MgdG9wLWxlZnQKdW5pZm9ybSB2ZWMyIHVfYWxwaGEwU2l6ZTsvL3RoZSBhbHBoYSBtYXRlJ3Mgc2l6ZQoKdW5pZm9ybSBpbnQgaGFzTG9nbzE7Ly9oYXMgbG9nbyA/CnVuaWZvcm0gaW50IGFkRm9yTG9nbzE7CnVuaWZvcm0gc2FtcGxlcjJEIGFscGhhMTsvL3RoZSBhbHBoYSdzIG1hdGUKdW5pZm9ybSBtYXQzIHVfbWF0cml4MTsvL3RoZSByZXZlcnNlIGhvbW9ncmFwaHkKdW5pZm9ybSB2ZWMyIHVfYWxwaGExVG9wTGVmdDsvL3RoZSBhbHBoYSBtYXRlJ3MgdG9wLWxlZnQKdW5pZm9ybSB2ZWMyIHVfYWxwaGExU2l6ZTsvL3RoZSBhbHBoYSBtYXRlJ3Mgc2l6ZQoKdW5pZm9ybSBpbnQgaGFzTG9nbzI7Ly9oYXMgbG9nbyA/CnVuaWZvcm0gaW50IGFkRm9yTG9nbzI7CnVuaWZvcm0gc2FtcGxlcjJEIGFscGhhMjsvL3RoZSBhbHBoYSdzIG1hdGUKdW5pZm9ybSBtYXQzIHVfbWF0cml4MjsvL3RoZSByZXZlcnNlIGhvbW9ncmFwaHkKdW5pZm9ybSB2ZWMyIHVfYWxwaGEyVG9wTGVmdDsvL3RoZSBhbHBoYSBtYXRlJ3MgdG9wLWxlZnQKdW5pZm9ybSB2ZWMyIHVfYWxwaGEyU2l6ZTsvL3RoZSBhbHBoYSBtYXRlJ3Mgc2l6ZQoKdW5pZm9ybSBpbnQgaGFzTG9nbzM7Ly9oYXMgbG9nbyA/CnVuaWZvcm0gaW50IGFkRm9yTG9nbzM7CnVuaWZvcm0gc2FtcGxlcjJEIGFscGhhMzsvL3RoZSBhbHBoYSdzIG1hdGUKdW5pZm9ybSBtYXQzIHVfbWF0cml4MzsvL3RoZSByZXZlcnNlIGhvbW9ncmFwaHkKdW5pZm9ybSB2ZWMyIHVfYWxwaGEzVG9wTGVmdDsvL3RoZSBhbHBoYSBtYXRlJ3MgdG9wLWxlZnQKdW5pZm9ybSB2ZWMyIHVfYWxwaGEzU2l6ZTsvL3RoZSBhbHBoYSBtYXRlJ3Mgc2l6ZQoKY29uc3QgZmxvYXQgRGlyZWN0aW9ucyA9IDE2LjA7IC8vIEJMVVIgRElSRUNUSU9OUyAoRGVmYXVsdCAxNi4wIC0gTW9yZSBpcyBiZXR0ZXIgYnV0IHNsb3dlcikKY29uc3QgZmxvYXQgUXVhbGl0eUFkID0gMy4wOyAvLyBCTFVSIFFVQUxJVFkgKERlZmF1bHQgMy4wIC0gTW9yZSBpcyBiZXR0ZXIgYnV0IHNsb3dlcikKY29uc3QgZmxvYXQgUXVhbGl0eUFscGhhID0gNS4wOyAvLyBCTFVSIFFVQUxJVFkgKERlZmF1bHQgMy4wIC0gTW9yZSBpcyBiZXR0ZXIgYnV0IHNsb3dlcikKY29uc3QgZmxvYXQgQmx1clJhZGl1c0FkID0gMTAuMDsKY29uc3QgZmxvYXQgQmx1clJhZGl1c0FscGhhID0gMTAuMDsKY29uc3QgZmxvYXQgUGkgPSA2LjI4MzE4NTMwNzE4OyAvLyBQaSoyCgpmbG9hdCBCbHVyQWxwaGEoc2FtcGxlcjJEIGFscGhhVGV4dHVyZSwgdmVjMiBhbHBoYUNvb3JkKSB7CglmbG9hdCByZXMgPSB0ZXh0dXJlMkQoYWxwaGFUZXh0dXJlLCBhbHBoYUNvb3JkKS5hOwogIHZlYzIgUmFkaXVzID0gQmx1clJhZGl1c0FscGhhL3VfcmVzb2x1dGlvbjIueHk7CiAgIAogIGZvciggZmxvYXQgZD0wLjA7IGQ8UGk7IGQrPVBpL0RpcmVjdGlvbnMpIHsKCQlmb3IoZmxvYXQgaT0xLjAvUXVhbGl0eUFscGhhOyBpPD0xLjA7IGkrPTEuMC9RdWFsaXR5QWxwaGEpIHsKCQkJcmVzICs9IHRleHR1cmUyRChhbHBoYVRleHR1cmUsIGFscGhhQ29vcmQrdmVjMihjb3MoZCksc2luKGQpKSpSYWRpdXMqaSkuYTsKICAgIH0KICB9CgogIHJlcyAvPSBRdWFsaXR5QWxwaGEgKiBEaXJlY3Rpb25zIC0gMTUuMDsKCiAgcmV0dXJuIHJlczsKfQoKdmVjNCBCbHVyQWQoc2FtcGxlcjJEIGFkVGV4dHVyZSwgdmVjMiBhZFRleENvb3JkKSB7CiAgdmVjMiBSYWRpdXMgPSBCbHVyUmFkaXVzQWQvdV9yZXNvbHV0aW9uMi54eTsKICB2ZWM0IHJlcyA9IHRleHR1cmUyRChhZFRleHR1cmUsIGFkVGV4Q29vcmQpOwogICAKICBmb3IoIGZsb2F0IGQ9MC4wOyBkPFBpOyBkKz1QaS9EaXJlY3Rpb25zKSB7CgkJZm9yKGZsb2F0IGk9MS4wL1F1YWxpdHlBZDsgaTw9MS4wOyBpKz0xLjAvUXVhbGl0eUFkKSB7CgkJCXJlcyArPSB0ZXh0dXJlMkQoYWRUZXh0dXJlLCBhZFRleENvb3JkK3ZlYzIoY29zKGQpLHNpbihkKSkqUmFkaXVzKmkpOwogICAgfQogIH0KCiAgcmVzIC89IFF1YWxpdHlBZCAqIERpcmVjdGlvbnMgLSA1LjA7CgogIHJldHVybiByZXM7Cn0KCmJvb2wgQmxlbmRXaXRoTG9nbyhpbnQgYWRVbml0LCBzYW1wbGVyMkQgYWxwaGFUZXh0dXJlLCBtYXQzIG1hdHJpeCwgdmVjMiBjdXJDb29yZCwgdmVjMiBhbHBoYVRvcExlZnQsIHZlYzIgYWxwaGFTaXplLCB2ZWM0IHZpZGVvSW1hZ2VQaXgpIHsKCiAgdmVjMiB0ZXhDb29yZDsKICB0ZXhDb29yZC54ID0gKG1hdHJpeFswXVswXSpjdXJDb29yZC54ICsgbWF0cml4WzBdWzFdKmN1ckNvb3JkLnkgKyBtYXRyaXhbMF1bMl0pIC8gKG1hdHJpeFsyXVswXSpjdXJDb29yZC54ICsgbWF0cml4WzJdWzFdKmN1ckNvb3JkLnkgKyAxLjApOwogIHRleENvb3JkLnkgPSAobWF0cml4WzFdWzBdKmN1ckNvb3JkLnggKyBtYXRyaXhbMV1bMV0qY3VyQ29vcmQueSArIG1hdHJpeFsxXVsyXSkgLyAobWF0cml4WzJdWzBdKmN1ckNvb3JkLnggKyBtYXRyaXhbMl1bMV0qY3VyQ29vcmQueSArIDEuMCk7CiAgdGV4Q29vcmQgLz0gdV9yZXNvbHV0aW9uMjsKCiAgLy9pZiB3ZSdyZSBpbiB0aGUgYm91bmRpbmcgcmVjdCBvZiB0aGUgbG9nbwogIGlmICh0ZXhDb29yZC54ID49IDAuMCAmJiB0ZXhDb29yZC55ID49IDAuMCAmJiB0ZXhDb29yZC54IDw9IDEuMCAmJiB0ZXhDb29yZC55IDw9IDEuMCkgewoJCWZsb2F0IG1hc2tBbHBoYSA9IDEuMDsKICAgIHZlYzIgYWxwaGFDb29yZCA9IChjdXJDb29yZCAtIGFscGhhVG9wTGVmdCkvYWxwaGFTaXplOy8vZ2V0IHRoZSBjb29yZGluYXRlIG9uIHRoZSBhbHBoYSBtYXRlCiAgICBpZiAoYWxwaGFDb29yZC54ID49IDAuMCAmJiBhbHBoYUNvb3JkLnkgPj0gMC4wICYmIGFscGhhQ29vcmQueCA8PSAxLjAgJiYgYWxwaGFDb29yZC55IDw9IDEuMCkgewogICAgICAvLyBtYXNrQWxwaGEgPSBCbHVyQWxwaGEoYWxwaGFUZXh0dXJlLCBhbHBoYUNvb3JkKTsKICAgICAgbWFza0FscGhhID0gdGV4dHVyZTJEKGFscGhhVGV4dHVyZSwgYWxwaGFDb29yZCkuYTsKICAgIH0KCiAgICB2ZWM0IGFkQ29sb3IgPSAKICAgICAgYWRVbml0ID09IDAgPyBCbHVyQWQoYWQwLCB0ZXhDb29yZCkgOgogICAgICBhZFVuaXQgPT0gMSA/IEJsdXJBZChhZDEsIHRleENvb3JkKSA6CiAgICAgIGFkVW5pdCA9PSAyID8gQmx1ckFkKGFkMiwgdGV4Q29vcmQpIDoKCQkJCQkgICAgICAgICAgQmx1ckFkKGFkMywgdGV4Q29vcmQpOyAvL2dldCB0aGUgbG9nbydzIHRleGVsCgogICAgZmxvYXQgYWRBbHBoYSA9IAogICAgICBhZFVuaXQgPT0gMCA/IHRleHR1cmUyRChhZDAsIHRleENvb3JkKS5hIDoKICAgICAgYWRVbml0ID09IDEgPyB0ZXh0dXJlMkQoYWQxLCB0ZXhDb29yZCkuYSA6CiAgICAgIGFkVW5pdCA9PSAyID8gdGV4dHVyZTJEKGFkMiwgdGV4Q29vcmQpLmEgOgogICAgICAgICAgICAgICAgICAgIHRleHR1cmUyRChhZDMsIHRleENvb3JkKS5hOyAvL2dldCB0aGUgbG9nbydzIHRleGVsICAgICAgICAgICAgIAoKICAgIGZsb2F0IGZpbmFsQWxwaGEgPSBtYXNrQWxwaGEgKiBhZENvbG9yLmE7CiAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGFkQ29sb3IucmdiLCBmaW5hbEFscGhhKTsKICAgIGdsX0ZyYWdDb2xvci5yZ2IgKj0gZmluYWxBbHBoYTsKICAgIHJldHVybiB0cnVlOwogIH0gZWxzZSB7CiAgICByZXR1cm4gZmFsc2U7CiAgfQp9CnZvaWQgbWFpbigpCnsKICAvL2NhbGN1bGF0ZSBjdXItY29vcmQgKHdpdGggcGl4ZWxzIHVuaXRzKQogIHZlYzIgY3VyQ29vcmQgPSBnbF9GcmFnQ29vcmQueHk7CiAgY3VyQ29vcmQueSA9IHVfcmVzb2x1dGlvbjJbMV0gLSBjdXJDb29yZC55OwoKICB2ZWM0IHZpZGVvSW1hZ2VQaXggPSB0ZXh0dXJlMkQodV9pbWFnZSwgdl90ZXhDb29yZCk7CgogIGlmIChoYXNMb2dvMCA9PSAxKSB7CiAgICBCbGVuZFdpdGhMb2dvKGFkRm9yTG9nbzAsYWxwaGEwLCB1X21hdHJpeDAsIGN1ckNvb3JkLHVfYWxwaGEwVG9wTGVmdCwgdV9hbHBoYTBTaXplLCB2aWRlb0ltYWdlUGl4KTsKICAgIHJldHVybjsKICB9IGVsc2UgaWYgKGhhc0xvZ28xID09IDEpIHsKICAgIEJsZW5kV2l0aExvZ28oYWRGb3JMb2dvMSwgYWxwaGExLCB1X21hdHJpeDEsIGN1ckNvb3JkLHVfYWxwaGExVG9wTGVmdCwgdV9hbHBoYTFTaXplLCB2aWRlb0ltYWdlUGl4KTsKICAgIHJldHVybjsKICB9IGVsc2UgaWYgKGhhc0xvZ28yID09IDEpIHsKICAgIEJsZW5kV2l0aExvZ28oYWRGb3JMb2dvMiwgYWxwaGEyLCB1X21hdHJpeDIsIGN1ckNvb3JkLHVfYWxwaGEyVG9wTGVmdCwgdV9hbHBoYTJTaXplLCB2aWRlb0ltYWdlUGl4KTsKICAgIHJldHVybjsKICB9IGVsc2UgaWYgKGhhc0xvZ28zID09IDEpIHsKICAgIEJsZW5kV2l0aExvZ28oYWRGb3JMb2dvMywgYWxwaGEzLCB1X21hdHJpeDMsIGN1ckNvb3JkLHVfYWxwaGEzVG9wTGVmdCwgdV9hbHBoYTNTaXplLCB2aWRlb0ltYWdlUGl4KTsKICAgIHJldHVybjsKICB9Cn0KYDsvKiBAbGljZW5zZSB0d2dsLmpzIDUuNS40IENvcHlyaWdodCAoYykgMjAxNSwgR3JlZ2cgVGF2YXJlcyBBbGwgUmlnaHRzIFJlc2VydmVkLgpBdmFpbGFibGUgdmlhIHRoZSBNSVQgbGljZW5zZS4Kc2VlOiBodHRwOi8vZ2l0aHViLmNvbS9ncmVnZ21hbi90d2dsLmpzIGZvciBkZXRhaWxzICovY29uc3QgdmE9e307e2NvbnN0IGM9dmE7Y1s1MTIwXT1JbnQ4QXJyYXksY1s1MTIxXT1VaW50OEFycmF5LGNbNTEyMl09SW50MTZBcnJheSxjWzUxMjNdPVVpbnQxNkFycmF5LGNbNTEyNF09SW50MzJBcnJheSxjWzUxMjVdPVVpbnQzMkFycmF5LGNbNTEyNl09RmxvYXQzMkFycmF5LGNbMzI4MTldPVVpbnQxNkFycmF5LGNbMzI4MjBdPVVpbnQxNkFycmF5LGNbMzM2MzVdPVVpbnQxNkFycmF5LGNbNTEzMV09VWludDE2QXJyYXksY1szMzY0MF09VWludDMyQXJyYXksY1szNTg5OV09VWludDMyQXJyYXksY1szNTkwMl09VWludDMyQXJyYXksY1szNjI2OV09VWludDMyQXJyYXksY1szNDA0Ml09VWludDMyQXJyYXl9ZnVuY3Rpb24gSGEoLi4uYyl7Y29uc29sZS5lcnJvciguLi5jKX1jb25zdCBrYT1mdW5jdGlvbigpe2NvbnN0IGM9e30sWj17fTtmdW5jdGlvbiB0KGkpe2NvbnN0IGU9aS5jb25zdHJ1Y3Rvci5uYW1lO2lmKCFjW2VdKXtmb3IoY29uc3QgRyBpbiBpKWlmKHR5cGVvZiBpW0ddPT0ibnVtYmVyIil7Y29uc3Qgbz1aW2lbR11dO1pbaVtHXV09bz9gJHtvfSB8ICR7R31gOkd9Y1tlXT0hMH19cmV0dXJuIGZ1bmN0aW9uKGUsRyl7cmV0dXJuIHQoZSksWltHXXx8KHR5cGVvZiBHPT0ibnVtYmVyIj9gMHgke0cudG9TdHJpbmcoMTYpfWA6Ryl9fSgpLGdhPTY0MDYsVXU9NjQwNyxNdT02NDA4LFVhPTY0MDksTWE9NjQxMCxUYT02NDAyLENhPTM0MDQxLHdhPTMzMzE5LFBhPTMzMzIwLEJhPTY0MDMsUWE9MzYyNDQsRWE9MzYyNDgsamE9MzYyNDksRGE9e307e2NvbnN0IGM9RGE7Y1tnYV09e251bUNvbG9yQ29tcG9uZW50czoxfSxjW1VhXT17bnVtQ29sb3JDb21wb25lbnRzOjF9LGNbTWFdPXtudW1Db2xvckNvbXBvbmVudHM6Mn0sY1tVdV09e251bUNvbG9yQ29tcG9uZW50czozfSxjW011XT17bnVtQ29sb3JDb21wb25lbnRzOjR9LGNbQmFdPXtudW1Db2xvckNvbXBvbmVudHM6MX0sY1tRYV09e251bUNvbG9yQ29tcG9uZW50czoxfSxjW3dhXT17bnVtQ29sb3JDb21wb25lbnRzOjJ9LGNbUGFdPXtudW1Db2xvckNvbXBvbmVudHM6Mn0sY1tVdV09e251bUNvbG9yQ29tcG9uZW50czozfSxjW0VhXT17bnVtQ29sb3JDb21wb25lbnRzOjN9LGNbTXVdPXtudW1Db2xvckNvbXBvbmVudHM6NH0sY1tqYV09e251bUNvbG9yQ29tcG9uZW50czo0fSxjW1RhXT17bnVtQ29sb3JDb21wb25lbnRzOjF9LGNbQ2FdPXtudW1Db2xvckNvbXBvbmVudHM6Mn19Y29uc3QgSFo9SGE7ZnVuY3Rpb24gT2EoYyl7cmV0dXJuIHR5cGVvZiBkb2N1bWVudDwidSImJmRvY3VtZW50LmdldEVsZW1lbnRCeUlkP2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKGMpOm51bGx9Y29uc3QgQWE9MzU3MTMsX2E9MzU3MTQscWE9MzU2MzIsJGE9MzU2MzMsbGI9MzU5ODEsbmI9L0VSUk9SOlxzKlxkKzooXGQrKS9naTtmdW5jdGlvbiBjYihjLFo9IiIsdD0wKXtjb25zdCBpPVsuLi5aLm1hdGNoQWxsKG5iKV0sZT1uZXcgTWFwKGkubWFwKChHLG8pPT57Y29uc3Qgcz1wYXJzZUludChHWzFdKSxWPWlbbysxXSxoPVY/Vi5pbmRleDpaLmxlbmd0aCx5PVouc3Vic3RyaW5nKEcuaW5kZXgsaCk7cmV0dXJuW3MtMSx5XX0pKTtyZXR1cm4gYy5zcGxpdChgCmApLm1hcCgoRyxvKT0+e2NvbnN0IHM9ZS5nZXQobyk7cmV0dXJuYCR7bysxK3R9OiAke0d9JHtzP2AKCl5eXiAke3N9YDoiIn1gfSkuam9pbihgCmApfWNvbnN0IFR1PS9eWyBcdF0qXG4vO2Z1bmN0aW9uIEN1KGMpe2xldCBaPTA7cmV0dXJuIFR1LnRlc3QoYykmJihaPTEsYz1jLnJlcGxhY2UoVHUsIiIpKSx7bGluZU9mZnNldDpaLHNoYWRlclNvdXJjZTpjfX1mdW5jdGlvbiBkYihjLFosdCxpKXtpZihpPWl8fEhaLCFjLmdldFNoYWRlclBhcmFtZXRlcih0LEFhKSl7Y29uc3QgRz1jLmdldFNoYWRlckluZm9Mb2codCkse2xpbmVPZmZzZXQ6byxzaGFkZXJTb3VyY2U6c309Q3UoYy5nZXRTaGFkZXJTb3VyY2UodCkpLFY9YCR7Y2IocyxHLG8pfQpFcnJvciBjb21waWxpbmcgJHtrYShjLFopfTogJHtHfWA7cmV0dXJuIGkoViksVn1yZXR1cm4iIn1mdW5jdGlvbiB3dShjLFosdCl7bGV0IGksZSxHO2lmKHR5cGVvZiBaPT0iZnVuY3Rpb24iJiYodD1aLFo9dm9pZCAwKSx0eXBlb2YgYz09ImZ1bmN0aW9uIil0PWMsYz12b2lkIDA7ZWxzZSBpZihjJiYhQXJyYXkuaXNBcnJheShjKSl7Y29uc3QgaD1jO3Q9aC5lcnJvckNhbGxiYWNrLGM9aC5hdHRyaWJMb2NhdGlvbnMsaT1oLnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MsZT1oLnRyYW5zZm9ybUZlZWRiYWNrTW9kZSxHPWguY2FsbGJhY2t9Y29uc3Qgbz10fHxIWixzPVtdLFY9e2Vycm9yQ2FsbGJhY2soaCwuLi55KXtzLnB1c2goaCksbyhoLC4uLnkpfSx0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzOmksdHJhbnNmb3JtRmVlZGJhY2tNb2RlOmUsY2FsbGJhY2s6RyxlcnJvcnM6c307e2xldCBoPXt9O0FycmF5LmlzQXJyYXkoYyk/Yy5mb3JFYWNoKGZ1bmN0aW9uKHksTCl7aFt5XT1aP1pbTF06TH0pOmg9Y3x8e30sVi5hdHRyaWJMb2NhdGlvbnM9aH1yZXR1cm4gVn1jb25zdCBaYj1bIlZFUlRFWF9TSEFERVIiLCJGUkFHTUVOVF9TSEFERVIiXTtmdW5jdGlvbiB0YihjLFope2lmKFouaW5kZXhPZigiZnJhZyIpPj0wKXJldHVybiBxYTtpZihaLmluZGV4T2YoInZlcnQiKT49MClyZXR1cm4gJGF9ZnVuY3Rpb24gdWIoYyxaLHQpe2NvbnN0IGk9Yy5nZXRBdHRhY2hlZFNoYWRlcnMoWik7Zm9yKGNvbnN0IGUgb2YgaSl0LmhhcyhlKSYmYy5kZWxldGVTaGFkZXIoZSk7Yy5kZWxldGVQcm9ncmFtKFopfWNvbnN0IGliPShjPTApPT5uZXcgUHJvbWlzZShaPT5zZXRUaW1lb3V0KFosYykpO2Z1bmN0aW9uIGViKGMsWix0KXtjb25zdCBpPWMuY3JlYXRlUHJvZ3JhbSgpLHthdHRyaWJMb2NhdGlvbnM6ZSx0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzOkcsdHJhbnNmb3JtRmVlZGJhY2tNb2RlOm99PXd1KHQpO2ZvcihsZXQgcz0wO3M8Wi5sZW5ndGg7KytzKXtsZXQgVj1aW3NdO2lmKHR5cGVvZiBWPT0ic3RyaW5nIil7Y29uc3QgaD1PYShWKSx5PWg/aC50ZXh0OlY7bGV0IEw9Y1taYltzXV07aCYmaC50eXBlJiYoTD10YihjLGgudHlwZSl8fEwpLFY9Yy5jcmVhdGVTaGFkZXIoTCksYy5zaGFkZXJTb3VyY2UoVixDdSh5KS5zaGFkZXJTb3VyY2UpLGMuY29tcGlsZVNoYWRlcihWKSxjLmF0dGFjaFNoYWRlcihpLFYpfX1PYmplY3QuZW50cmllcyhlKS5mb3JFYWNoKChbcyxWXSk9PmMuYmluZEF0dHJpYkxvY2F0aW9uKGksVixzKSk7e2xldCBzPUc7cyYmKHMuYXR0cmlicyYmKHM9cy5hdHRyaWJzKSxBcnJheS5pc0FycmF5KHMpfHwocz1PYmplY3Qua2V5cyhzKSksYy50cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKGkscyxvfHxsYikpfXJldHVybiBjLmxpbmtQcm9ncmFtKGkpLGl9ZnVuY3Rpb24gbWIoYyxaLHQsaSxlKXtjb25zdCBHPXd1KHQsaSxlKSxvPW5ldyBTZXQoWikscz1lYihjLFosRyk7ZnVuY3Rpb24gVihoLHkpe2NvbnN0IEw9YmIoaCx5LEcuZXJyb3JDYWxsYmFjayk7cmV0dXJuIEwmJnViKGgseSxvKSxMfWlmKEcuY2FsbGJhY2spe2FiKGMscykudGhlbigoKT0+e2NvbnN0IGg9VihjLHMpO0cuY2FsbGJhY2soaCxoP3ZvaWQgMDpzKX0pO3JldHVybn1yZXR1cm4gVihjLHMpP3ZvaWQgMDpzfWFzeW5jIGZ1bmN0aW9uIGFiKGMsWil7Y29uc3QgdD1jLmdldEV4dGVuc2lvbigiS0hSX3BhcmFsbGVsX3NoYWRlcl9jb21waWxlIiksaT10PyhHLG8pPT5HLmdldFByb2dyYW1QYXJhbWV0ZXIobyx0LkNPTVBMRVRJT05fU1RBVFVTX0tIUik6KCk9PiEwO2xldCBlPTA7ZG8gYXdhaXQgaWIoZSksZT0xZTMvNjA7d2hpbGUoIWkoYyxaKSl9ZnVuY3Rpb24gYmIoYyxaLHQpe2lmKHQ9dHx8SFosIWMuZ2V0UHJvZ3JhbVBhcmFtZXRlcihaLF9hKSl7Y29uc3QgZT1jLmdldFByb2dyYW1JbmZvTG9nKFopO3QoYEVycm9yIGluIHByb2dyYW0gbGlua2luZzogJHtlfWApO2NvbnN0IG89Yy5nZXRBdHRhY2hlZFNoYWRlcnMoWikubWFwKHM9PmRiKGMsYy5nZXRTaGFkZXJQYXJhbWV0ZXIocyxjLlNIQURFUl9UWVBFKSxzLHQpKTtyZXR1cm5gJHtlfQoke28uZmlsdGVyKHM9PnMpLmpvaW4oYApgKX1gfX1mdW5jdGlvbiBHYihjLFosdCxpLGUpe3JldHVybiBtYihjLFosdCxpLGUpfWNvbnN0IHBkPWM9PmMudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIiksa1o9IjoiLFB1PShjLFosdCk9PntsZXQgaT0iIjtyZXR1cm4gQXJyYXkuaXNBcnJheShjKT8oaT1bcGQoY1swXSkscGQoY1sxXSkscGQoY1syXSkscGQoY1szXSldLmpvaW4oIjoiKSxjWzRdPT0xJiZaJiYoaSs9Ii4xIikpOmk9KCIwIitjLmgpLnNsaWNlKC0yKStrWisoIjAiK2MubSkuc2xpY2UoLTIpK2taKygiMCIrYy5zKS5zbGljZSgtMikra1orKCIwIitjLmYpLnNsaWNlKC0yKSxpfSxCdT0oYyxaLHQpPT57bGV0IGk9NjAsZT0wO01hdGguZmxvb3IoWik9PTYwPyhpPTYwLGU9MCk6TWF0aC5mbG9vcihaKT09NTk/KGk9NjAsZT00KTpNYXRoLmZsb29yKFopPT0zMD8oaT0zMCxlPTApOk1hdGguZmxvb3IoWik9PTI5JiYoaT0zMCxlPTIpO2xldCBHPU1hdGguZmxvb3IoWio2MCksbz1NYXRoLmZsb29yKFoqNjAqMTApLHM9byo2LFY9YyxoPU1hdGguZmxvb3IoVi9zKTtWLT1oKnM7bGV0IHk9TWF0aC5mbG9vcihWL28pO1YtPXkqbyxWPj1pKjYwJiYoVis9ZSooTWF0aC5mbG9vcigoVi1pKjYwKS9HKSsxKSk7bGV0IEw9TWF0aC5mbG9vcihWLyhpKjYwKSk7Vi09TCooaSo2MCk7bGV0IHg9TWF0aC5mbG9vcihWL2kpO1YtPXgqaTtsZXQgST1WO0wrPXkqMTA7bGV0IHY9MDtyZXR1cm4gdj1JJTIsST1NYXRoLmZsb29yKEkvMiksW2gsTCx4LEksdl19LFF1PWM9Pih7aDpjWzBdLG06Y1sxXSxzOmNbMl0sZjpjWzNdLGZpZWxkOmNbNF19KSxFdT1jPT4oYyZjLTEpPT0wO3ZhciBtbD17bG9nOiJsb2ciLGRlYnVnOiJkZWJ1ZyIsaW5mbzoiaW5mbyIsd2Fybjoid2FybiIsZXJyb3I6ImVycm9yIn0sZG49Y29uc29sZSxDbj17fTtPYmplY3Qua2V5cyhtbCkuZm9yRWFjaChmdW5jdGlvbihjKXtDbltjXT1kbltjXX0pO3ZhciBrYz0iRGF0YWRvZyBCcm93c2VyIFNESzoiLGJsPXtkZWJ1ZzpDbi5kZWJ1Zy5iaW5kKGRuLGtjKSxsb2c6Q24ubG9nLmJpbmQoZG4sa2MpLGluZm86Q24uaW5mby5iaW5kKGRuLGtjKSx3YXJuOkNuLndhcm4uYmluZChkbixrYyksZXJyb3I6Q24uZXJyb3IuYmluZChkbixrYyl9LGdaPSJodHRwczovL2RvY3MuZGF0YWRvZ2hxLmNvbSIsanU9IiIuY29uY2F0KGdaLCIvcmVhbF91c2VyX21vbml0b3JpbmcvYnJvd3Nlci90cm91Ymxlc2hvb3RpbmciKSxXZD0iTW9yZSBkZXRhaWxzOiI7ZnVuY3Rpb24gRHUoYyxaKXtyZXR1cm4gZnVuY3Rpb24oKXtmb3IodmFyIHQ9W10saT0wO2k8YXJndW1lbnRzLmxlbmd0aDtpKyspdFtpXT1hcmd1bWVudHNbaV07dHJ5e3JldHVybiBjLmFwcGx5KHZvaWQgMCx0KX1jYXRjaChlKXtibC5lcnJvcihaLGUpfX19ZnVuY3Rpb24gcmQoYyl7cmV0dXJuIGMhPT0wJiZNYXRoLnJhbmRvbSgpKjEwMDw9Y31mdW5jdGlvbiBvYihjKXtyZXR1cm4gWGIoYykmJmM+PTAmJmM8PTEwMH1mdW5jdGlvbiBYYihjKXtyZXR1cm4gdHlwZW9mIGM9PSJudW1iZXIifXZhciBnYz0xZTMsd249NjAqZ2Msc2I9NjAqd247ZnVuY3Rpb24gVWMoKXtyZXR1cm4gbmV3IERhdGUoKS5nZXRUaW1lKCl9ZnVuY3Rpb24geG4oKXtyZXR1cm4gVWMoKX1mdW5jdGlvbiBoZCgpe3JldHVybiBwZXJmb3JtYW5jZS5ub3coKX1mdW5jdGlvbiBmbigpe3JldHVybntyZWxhdGl2ZTpoZCgpLHRpbWVTdGFtcDp4bigpfX1mdW5jdGlvbiBwYigpe3JldHVybntyZWxhdGl2ZTowLHRpbWVTdGFtcDpPdSgpfX1mdW5jdGlvbiBXYihjLFope3JldHVybiBaLWN9ZnVuY3Rpb24gcmIoYyxaKXtyZXR1cm4gYytafWZ1bmN0aW9uIGhiKGMpe3JldHVybiBjLU91KCl9dmFyIFVaO2Z1bmN0aW9uIE91KCl7cmV0dXJuIFVaPT09dm9pZCAwJiYoVVo9cGVyZm9ybWFuY2UudGltaW5nLm5hdmlnYXRpb25TdGFydCksVVp9dmFyIGJuPTEwMjQsQXU9MTAyNCpibixWYj0vW15cdTAwMDAtXHUwMDdGXS87ZnVuY3Rpb24gTVooYyl7cmV0dXJuIFZiLnRlc3QoYyk/d2luZG93LlRleHRFbmNvZGVyIT09dm9pZCAwP25ldyBUZXh0RW5jb2RlcigpLmVuY29kZShjKS5sZW5ndGg6bmV3IEJsb2IoW2NdKS5zaXplOmMubGVuZ3RofWZ1bmN0aW9uIGJjKGMsWil7cmV0dXJuIGMuaW5kZXhPZihaKSE9PS0xfWZ1bmN0aW9uIFRaKGMpe2lmKEFycmF5LmZyb20pcmV0dXJuIEFycmF5LmZyb20oYyk7dmFyIFo9W107aWYoYyBpbnN0YW5jZW9mIFNldCljLmZvckVhY2goZnVuY3Rpb24oaSl7cmV0dXJuIFoucHVzaChpKX0pO2Vsc2UgZm9yKHZhciB0PTA7dDxjLmxlbmd0aDt0KyspWi5wdXNoKGNbdF0pO3JldHVybiBafWZ1bmN0aW9uIHliKGMsWil7Zm9yKHZhciB0PTA7dDxjLmxlbmd0aDt0Kz0xKXt2YXIgaT1jW3RdO2lmKFooaSx0KSlyZXR1cm4gaX19ZnVuY3Rpb24gR2MoYyl7cmV0dXJuIE9iamVjdC5rZXlzKGMpLm1hcChmdW5jdGlvbihaKXtyZXR1cm4gY1taXX0pfWZ1bmN0aW9uIFJiKGMpe3JldHVybiBPYmplY3Qua2V5cyhjKS5tYXAoZnVuY3Rpb24oWil7cmV0dXJuW1osY1taXV19KX1mdW5jdGlvbiBDWihjLFope3JldHVybiBjLnNsaWNlKDAsWi5sZW5ndGgpPT09Wn1mdW5jdGlvbiBMYihjLFope3JldHVybiBjLnNsaWNlKC1aLmxlbmd0aCk9PT1afWZ1bmN0aW9uIFdsKGMpe2Zvcih2YXIgWj1bXSx0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKylaW3QtMV09YXJndW1lbnRzW3RdO3JldHVybiBaLmZvckVhY2goZnVuY3Rpb24oaSl7Zm9yKHZhciBlIGluIGkpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGksZSkmJihjW2VdPWlbZV0pfSksY31mdW5jdGlvbiBZYihjKXtyZXR1cm4gV2woe30sYyl9ZnVuY3Rpb24gX3UoYyxaKXtyZXR1cm4gT2JqZWN0LmtleXMoYykuc29tZShmdW5jdGlvbih0KXtyZXR1cm4gY1t0XT09PVp9KX1mdW5jdGlvbiB3WihjKXtyZXR1cm4gT2JqZWN0LmtleXMoYykubGVuZ3RoPT09MH1mdW5jdGlvbiBKbigpe2lmKHR5cGVvZiBnbG9iYWxUaGlzPT0ib2JqZWN0IilyZXR1cm4gZ2xvYmFsVGhpcztPYmplY3QuZGVmaW5lUHJvcGVydHkoT2JqZWN0LnByb3RvdHlwZSwiX2RkX3RlbXBfIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LGNvbmZpZ3VyYWJsZTohMH0pO3ZhciBjPV9kZF90ZW1wXztyZXR1cm4gZGVsZXRlIE9iamVjdC5wcm90b3R5cGUuX2RkX3RlbXBfLHR5cGVvZiBjIT0ib2JqZWN0IiYmKHR5cGVvZiBzZWxmPT0ib2JqZWN0Ij9jPXNlbGY6dHlwZW9mIHdpbmRvdz09Im9iamVjdCI/Yz13aW5kb3c6Yz17fSksY31mdW5jdGlvbiBvYyhjLFope3ZhciB0PUpuKCksaTtyZXR1cm4gdC5ab25lJiZ0eXBlb2YgdC5ab25lLl9fc3ltYm9sX189PSJmdW5jdGlvbiImJihpPWNbdC5ab25lLl9fc3ltYm9sX18oWildKSxpfHwoaT1jW1pdKSxpfXZhciBTYj1mdW5jdGlvbihjLFosdCl7aWYodHx8YXJndW1lbnRzLmxlbmd0aD09PTIpZm9yKHZhciBpPTAsZT1aLmxlbmd0aCxHO2k8ZTtpKyspKEd8fCEoaSBpbiBaKSkmJihHfHwoRz1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChaLDAsaSkpLEdbaV09WltpXSk7cmV0dXJuIGMuY29uY2F0KEd8fEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKFopKX0sVmQscXU9ITE7ZnVuY3Rpb24geGIoYyl7VmQ9Y31mdW5jdGlvbiBmYihjKXtxdT1jfWZ1bmN0aW9uIEpiKGMsWix0KXt2YXIgaT10LnZhbHVlO3QudmFsdWU9ZnVuY3Rpb24oKXtmb3IodmFyIGU9W10sRz0wO0c8YXJndW1lbnRzLmxlbmd0aDtHKyspZVtHXT1hcmd1bWVudHNbR107dmFyIG89VmQ/JChpKTppO3JldHVybiBvLmFwcGx5KHRoaXMsZSl9fWZ1bmN0aW9uICQoYyl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIE1jKGMsdGhpcyxhcmd1bWVudHMpfX1mdW5jdGlvbiBNYyhjLFosdCl7dHJ5e3JldHVybiBjLmFwcGx5KFosdCl9Y2F0Y2goaSl7aWYoUFooaSksVmQpdHJ5e1ZkKGkpfWNhdGNoKGUpe1BaKGUpfX19ZnVuY3Rpb24gUFooKXtmb3IodmFyIGM9W10sWj0wO1o8YXJndW1lbnRzLmxlbmd0aDtaKyspY1taXT1hcmd1bWVudHNbWl07cXUmJmJsLmVycm9yLmFwcGx5KGJsLFNiKFsiW01PTklUT1JdIl0sYywhMSkpfWZ1bmN0aW9uIFRjKGMsWil7cmV0dXJuIG9jKEpuKCksInNldFRpbWVvdXQiKSgkKGMpLFopfWZ1bmN0aW9uICR1KGMpe29jKEpuKCksImNsZWFyVGltZW91dCIpKGMpfWZ1bmN0aW9uIEJaKGMsWil7cmV0dXJuIG9jKEpuKCksInNldEludGVydmFsIikoJChjKSxaKX1mdW5jdGlvbiBsaShjKXtvYyhKbigpLCJjbGVhckludGVydmFsIikoYyl9dmFyIHNsPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYyhaKXt0aGlzLm9uRmlyc3RTdWJzY3JpYmU9Wix0aGlzLm9ic2VydmVycz1bXX1yZXR1cm4gYy5wcm90b3R5cGUuc3Vic2NyaWJlPWZ1bmN0aW9uKFope3ZhciB0PXRoaXM7cmV0dXJuIHRoaXMub2JzZXJ2ZXJzLnB1c2goWiksdGhpcy5vYnNlcnZlcnMubGVuZ3RoPT09MSYmdGhpcy5vbkZpcnN0U3Vic2NyaWJlJiYodGhpcy5vbkxhc3RVbnN1YnNjcmliZT10aGlzLm9uRmlyc3RTdWJzY3JpYmUodGhpcyl8fHZvaWQgMCkse3Vuc3Vic2NyaWJlOmZ1bmN0aW9uKCl7dC5vYnNlcnZlcnM9dC5vYnNlcnZlcnMuZmlsdGVyKGZ1bmN0aW9uKGkpe3JldHVybiBaIT09aX0pLCF0Lm9ic2VydmVycy5sZW5ndGgmJnQub25MYXN0VW5zdWJzY3JpYmUmJnQub25MYXN0VW5zdWJzY3JpYmUoKX19fSxjLnByb3RvdHlwZS5ub3RpZnk9ZnVuY3Rpb24oWil7dGhpcy5vYnNlcnZlcnMuZm9yRWFjaChmdW5jdGlvbih0KXtyZXR1cm4gdChaKX0pfSxjfSgpO2Z1bmN0aW9uIG5pKCl7Zm9yKHZhciBjPVtdLFo9MDtaPGFyZ3VtZW50cy5sZW5ndGg7WisrKWNbWl09YXJndW1lbnRzW1pdO3JldHVybiBuZXcgc2woZnVuY3Rpb24odCl7dmFyIGk9Yy5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUuc3Vic2NyaWJlKGZ1bmN0aW9uKEcpe3JldHVybiB0Lm5vdGlmeShHKX0pfSk7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGkuZm9yRWFjaChmdW5jdGlvbihlKXtyZXR1cm4gZS51bnN1YnNjcmliZSgpfSl9fSl9ZnVuY3Rpb24gY2koYyxaLHQpe3ZhciBpPSExLGUsRztyZXR1cm57dGhyb3R0bGVkOmZ1bmN0aW9uKCl7Zm9yKHZhciBvPVtdLHM9MDtzPGFyZ3VtZW50cy5sZW5ndGg7cysrKW9bc109YXJndW1lbnRzW3NdO2lmKGkpe2U9bztyZXR1cm59Yy5hcHBseSh2b2lkIDAsbyksaT0hMCxHPVRjKGZ1bmN0aW9uKCl7ZSYmYy5hcHBseSh2b2lkIDAsZSksaT0hMSxlPXZvaWQgMH0sWil9LGNhbmNlbDpmdW5jdGlvbigpeyR1KEcpLGk9ITEsZT12b2lkIDB9fX1mdW5jdGlvbiBJbigpe31mdW5jdGlvbiBQbihjKXtyZXR1cm4gYz8ocGFyc2VJbnQoYywxMCleTWF0aC5yYW5kb20oKSoxNj4+cGFyc2VJbnQoYywxMCkvNCkudG9TdHJpbmcoMTYpOiIiLmNvbmNhdCgxZTcsIi0iKS5jb25jYXQoMWUzLCItIikuY29uY2F0KDRlMywiLSIpLmNvbmNhdCg4ZTMsIi0iKS5jb25jYXQoMWUxMSkucmVwbGFjZSgvWzAxOF0vZyxQbil9dmFyIHlkPS8oW1x3LV0rKVxzKj1ccyooW147XSspL2c7ZnVuY3Rpb24gSWIoYyxaKXtmb3IoeWQubGFzdEluZGV4PTA7Oyl7dmFyIHQ9eWQuZXhlYyhjKTtpZih0KXtpZih0WzFdPT09WilyZXR1cm4gdFsyXX1lbHNlIGJyZWFrfX1mdW5jdGlvbiBLYihjKXt2YXIgWj1uZXcgTWFwO2Zvcih5ZC5sYXN0SW5kZXg9MDs7KXt2YXIgdD15ZC5leGVjKGMpO2lmKHQpWi5zZXQodFsxXSx0WzJdKTtlbHNlIGJyZWFrfXJldHVybiBafWZ1bmN0aW9uIEZiKGMsWix0KXt2YXIgaT1jLmNoYXJDb2RlQXQoWi0xKSxlPWk+PTU1Mjk2JiZpPD01NjMxOSxHPWU/WisxOlo7cmV0dXJuIGMubGVuZ3RoPD1HP2M6IiIuY29uY2F0KGMuc2xpY2UoMCxHKSkuY29uY2F0KHQpfWZ1bmN0aW9uIE5iKCl7cmV0dXJuIHpiKCk9PT0xfXZhciBSZDtmdW5jdGlvbiB6Yigpe3JldHVybiBSZD8/KFJkPXZiKCkpfWZ1bmN0aW9uIHZiKGMpe3ZhciBaO2M9PT12b2lkIDAmJihjPXdpbmRvdyk7dmFyIHQ9Yy5uYXZpZ2F0b3IudXNlckFnZW50O3JldHVybiBjLmNocm9tZXx8L0hlYWRsZXNzQ2hyb21lLy50ZXN0KHQpPzE6KChaPWMubmF2aWdhdG9yLnZlbmRvcik9PT1udWxsfHxaPT09dm9pZCAwP3ZvaWQgMDpaLmluZGV4T2YoIkFwcGxlIikpPT09MHx8L3NhZmFyaS9pLnRlc3QodCkmJiEvY2hyb21lfGFuZHJvaWQvaS50ZXN0KHQpPzI6Yy5kb2N1bWVudC5kb2N1bWVudE1vZGU/MDozfWZ1bmN0aW9uIENjKGMsWix0LGkpe3ZhciBlPW5ldyBEYXRlO2Uuc2V0VGltZShlLmdldFRpbWUoKSt0KTt2YXIgRz0iZXhwaXJlcz0iLmNvbmNhdChlLnRvVVRDU3RyaW5nKCkpLG89aSYmaS5jcm9zc1NpdGU/Im5vbmUiOiJzdHJpY3QiLHM9aSYmaS5kb21haW4/Ijtkb21haW49Ii5jb25jYXQoaS5kb21haW4pOiIiLFY9aSYmaS5zZWN1cmU/IjtzZWN1cmUiOiIiLGg9aSYmaS5wYXJ0aXRpb25lZD8iO3BhcnRpdGlvbmVkIjoiIjtkb2N1bWVudC5jb29raWU9IiIuY29uY2F0KGMsIj0iKS5jb25jYXQoWiwiOyIpLmNvbmNhdChHLCI7cGF0aD0vO3NhbWVzaXRlPSIpLmNvbmNhdChvKS5jb25jYXQocykuY29uY2F0KFYpLmNvbmNhdChoKX1mdW5jdGlvbiBRWihjKXtyZXR1cm4gSWIoZG9jdW1lbnQuY29va2llLGMpfXZhciBFWjtmdW5jdGlvbiBCbihjKXtyZXR1cm4gRVp8fChFWj1LYihkb2N1bWVudC5jb29raWUpKSxFWi5nZXQoYyl9ZnVuY3Rpb24gZGkoYyxaKXtDYyhjLCIiLDAsWil9ZnVuY3Rpb24gSGIoYyl7aWYoZG9jdW1lbnQuY29va2llPT09dm9pZCAwfHxkb2N1bWVudC5jb29raWU9PT1udWxsKXJldHVybiExO3RyeXt2YXIgWj0iZGRfY29va2llX3Rlc3RfIi5jb25jYXQoUG4oKSksdD0idGVzdCI7Q2MoWix0LHduLGMpO3ZhciBpPVFaKFopPT09dDtyZXR1cm4gZGkoWixjKSxpfWNhdGNoKGUpe3JldHVybiBibC5lcnJvcihlKSwhMX19dmFyIGpaO2Z1bmN0aW9uIGtiKCl7aWYoalo9PT12b2lkIDApe2Zvcih2YXIgYz0iZGRfc2l0ZV90ZXN0XyIuY29uY2F0KFBuKCkpLFo9InRlc3QiLHQ9d2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLnNwbGl0KCIuIiksaT10LnBvcCgpO3QubGVuZ3RoJiYhUVooYyk7KWk9IiIuY29uY2F0KHQucG9wKCksIi4iKS5jb25jYXQoaSksQ2MoYyxaLGdjLHtkb21haW46aX0pO2RpKGMse2RvbWFpbjppfSksalo9aX1yZXR1cm4galp9dmFyIFhjPSJfZGRfcyIsRFo9NCpzYixaaT0xNSp3bix0aT0vXihbYS16QS1aXSspPShbYS16MC05LV0rKSQvLE9aPSImIixnYj0iMSI7ZnVuY3Rpb24gUW4oKXtyZXR1cm57aXNFeHBpcmVkOmdifX1mdW5jdGlvbiBMZChjKXtyZXR1cm4gd1ooYyl9ZnVuY3Rpb24gdWkoYyl7cmV0dXJuIUxkKGMpfWZ1bmN0aW9uIFlkKGMpe3JldHVybiBjLmlzRXhwaXJlZCE9PXZvaWQgMHx8IVViKGMpfWZ1bmN0aW9uIFViKGMpe3JldHVybihjLmNyZWF0ZWQ9PT12b2lkIDB8fFVjKCktTnVtYmVyKGMuY3JlYXRlZCk8RFopJiYoYy5leHBpcmU9PT12b2lkIDB8fFVjKCk8TnVtYmVyKGMuZXhwaXJlKSl9ZnVuY3Rpb24gaWkoYyl7Yy5leHBpcmU9U3RyaW5nKFVjKCkrWmkpfWZ1bmN0aW9uIEFaKGMpe3JldHVybiBSYihjKS5tYXAoZnVuY3Rpb24oWil7dmFyIHQ9WlswXSxpPVpbMV07cmV0dXJuIiIuY29uY2F0KHQsIj0iKS5jb25jYXQoaSl9KS5qb2luKE9aKX1mdW5jdGlvbiBlaShjKXt2YXIgWj17fTtyZXR1cm4gTWIoYykmJmMuc3BsaXQoT1opLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIGk9dGkuZXhlYyh0KTtpZihpIT09bnVsbCl7dmFyIGU9aVsxXSxHPWlbMl07WltlXT1HfX0pLFp9ZnVuY3Rpb24gTWIoYyl7cmV0dXJuISFjJiYoYy5pbmRleE9mKE9aKSE9PS0xfHx0aS50ZXN0KGMpKX12YXIgVGI9Il9kZCIsQ2I9Il9kZF9yIix3Yj0iX2RkX2wiLFBiPSJydW0iLEJiPSJsb2dzIjtmdW5jdGlvbiBRYihjKXt2YXIgWj1CbihYYyk7aWYoIVope3ZhciB0PUJuKFRiKSxpPUJuKENiKSxlPUJuKHdiKSxHPXt9O3QmJihHLmlkPXQpLGUmJi9eWzAxXSQvLnRlc3QoZSkmJihHW0JiXT1lKSxpJiYvXlswMTJdJC8udGVzdChpKSYmKEdbUGJdPWkpLHVpKEcpJiYoaWkoRyksYy5wZXJzaXN0U2Vzc2lvbihHKSl9fWZ1bmN0aW9uIEViKGMpe3ZhciBaPV9iKGMpO3JldHVybiBIYihaKT97dHlwZToiQ29va2llIixjb29raWVPcHRpb25zOlp9OnZvaWQgMH1mdW5jdGlvbiBqYihjKXt2YXIgWj17aXNMb2NrRW5hYmxlZDpOYigpLHBlcnNpc3RTZXNzaW9uOkRiKGMpLHJldHJpZXZlU2Vzc2lvbjpBYixleHBpcmVTZXNzaW9uOmZ1bmN0aW9uKCl7cmV0dXJuIE9iKGMpfX07cmV0dXJuIFFiKFopLFp9ZnVuY3Rpb24gRGIoYyl7cmV0dXJuIGZ1bmN0aW9uKFope0NjKFhjLEFaKFopLFppLGMpfX1mdW5jdGlvbiBPYihjKXtDYyhYYyxBWihRbigpKSxEWixjKX1mdW5jdGlvbiBBYigpe3ZhciBjPVFaKFhjKTtyZXR1cm4gZWkoYyl9ZnVuY3Rpb24gX2IoYyl7dmFyIFo9e307cmV0dXJuIFouc2VjdXJlPSEhYy51c2VTZWN1cmVTZXNzaW9uQ29va2llfHwhIWMudXNlUGFydGl0aW9uZWRDcm9zc1NpdGVTZXNzaW9uQ29va2llfHwhIWMudXNlQ3Jvc3NTaXRlU2Vzc2lvbkNvb2tpZSxaLmNyb3NzU2l0ZT0hIWMudXNlUGFydGl0aW9uZWRDcm9zc1NpdGVTZXNzaW9uQ29va2llfHwhIWMudXNlQ3Jvc3NTaXRlU2Vzc2lvbkNvb2tpZSxaLnBhcnRpdGlvbmVkPSEhYy51c2VQYXJ0aXRpb25lZENyb3NzU2l0ZVNlc3Npb25Db29raWUsYy50cmFja1Nlc3Npb25BY3Jvc3NTdWJkb21haW5zJiYoWi5kb21haW49a2IoKSksWn12YXIgcWI9Il9kZF90ZXN0XyI7ZnVuY3Rpb24gJGIoKXt0cnl7dmFyIGM9UG4oKSxaPSIiLmNvbmNhdChxYikuY29uY2F0KGMpO2xvY2FsU3RvcmFnZS5zZXRJdGVtKFosYyk7dmFyIHQ9bG9jYWxTdG9yYWdlLmdldEl0ZW0oWik7cmV0dXJuIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKFopLGM9PT10P3t0eXBlOiJMb2NhbFN0b3JhZ2UifTp2b2lkIDB9Y2F0Y2h7cmV0dXJufX1mdW5jdGlvbiBsRygpe3JldHVybntpc0xvY2tFbmFibGVkOiExLHBlcnNpc3RTZXNzaW9uOm1pLHJldHJpZXZlU2Vzc2lvbjpuRyxleHBpcmVTZXNzaW9uOmNHfX1mdW5jdGlvbiBtaShjKXtsb2NhbFN0b3JhZ2Uuc2V0SXRlbShYYyxBWihjKSl9ZnVuY3Rpb24gbkcoKXt2YXIgYz1sb2NhbFN0b3JhZ2UuZ2V0SXRlbShYYyk7cmV0dXJuIGVpKGMpfWZ1bmN0aW9uIGNHKCl7bWkoUW4oKSl9dmFyIGRHPTEwLFpHPTEwMCxhaT1bXSxTZDtmdW5jdGlvbiBFbihjLFosdCl7dmFyIGk7dD09PXZvaWQgMCYmKHQ9MCk7dmFyIGU9Wi5pc0xvY2tFbmFibGVkLEc9Wi5wZXJzaXN0U2Vzc2lvbixvPVouZXhwaXJlU2Vzc2lvbixzPWZ1bmN0aW9uKHgpe3JldHVybiBHKFdsKHt9LHgse2xvY2s6aH0pKX0sVj1mdW5jdGlvbigpe3ZhciB4PVoucmV0cmlldmVTZXNzaW9uKCksST14LmxvY2s7cmV0dXJuIHgubG9jayYmZGVsZXRlIHgubG9jayx7c2Vzc2lvbjp4LGxvY2s6SX19O2lmKFNkfHwoU2Q9YyksYyE9PVNkKXthaS5wdXNoKGMpO3JldHVybn1pZihlJiZ0Pj1aRyl7YmkoWik7cmV0dXJufXZhciBoLHk9VigpO2lmKGUpe2lmKHkubG9jayl7eGQoYyxaLHQpO3JldHVybn1pZihoPVBuKCkscyh5LnNlc3Npb24pLHk9VigpLHkubG9jayE9PWgpe3hkKGMsWix0KTtyZXR1cm59fXZhciBMPWMucHJvY2Vzcyh5LnNlc3Npb24pO2lmKGUmJih5PVYoKSx5LmxvY2shPT1oKSl7eGQoYyxaLHQpO3JldHVybn1pZihMJiYoWWQoTCk/bygpOihpaShMKSxlP3MoTCk6RyhMKSkpLGUmJiEoTCYmWWQoTCkpKXtpZih5PVYoKSx5LmxvY2shPT1oKXt4ZChjLFosdCk7cmV0dXJufUcoeS5zZXNzaW9uKSxMPXkuc2Vzc2lvbn0oaT1jLmFmdGVyKT09PW51bGx8fGk9PT12b2lkIDB8fGkuY2FsbChjLEx8fHkuc2Vzc2lvbiksYmkoWil9ZnVuY3Rpb24geGQoYyxaLHQpe1RjKGZ1bmN0aW9uKCl7RW4oYyxaLHQrMSl9LGRHKX1mdW5jdGlvbiBiaShjKXtTZD12b2lkIDA7dmFyIFo9YWkuc2hpZnQoKTtaJiZFbihaLGMpfXZhciBHaT1nYztmdW5jdGlvbiB0RyhjKXt2YXIgWj1FYihjKTtyZXR1cm4hWiYmYy5hbGxvd0ZhbGxiYWNrVG9Mb2NhbFN0b3JhZ2UmJihaPSRiKCkpLFp9ZnVuY3Rpb24gdUcoYyxaLHQpe3ZhciBpPW5ldyBzbCxlPW5ldyBzbCxHPW5ldyBzbCxvPWMudHlwZT09PSJDb29raWUiP2piKGMuY29va2llT3B0aW9ucyk6bEcoKSxzPW8uZXhwaXJlU2Vzc2lvbixWPUJaKHYsR2kpLGg7SCgpO3ZhciB5PWNpKGZ1bmN0aW9uKCl7RW4oe3Byb2Nlc3M6ZnVuY3Rpb24oTSl7aWYoIUxkKE0pKXt2YXIgemw9eihNKTtyZXR1cm4gQSh6bCksemx9fSxhZnRlcjpmdW5jdGlvbihNKXt1aShNKSYmIVlsKCkmJl8oTSksaD1NfX0sbyl9LEdpKSxMPXkudGhyb3R0bGVkLHg9eS5jYW5jZWw7ZnVuY3Rpb24gSSgpe0VuKHtwcm9jZXNzOmZ1bmN0aW9uKE0pe3JldHVybiBZbCgpP3ooTSk6dm9pZCAwfX0sbyl9ZnVuY3Rpb24gdigpe0VuKHtwcm9jZXNzOmZ1bmN0aW9uKE0pe3JldHVybiBZZChNKT9RbigpOnZvaWQgMH0sYWZ0ZXI6en0sbyl9ZnVuY3Rpb24geihNKXtyZXR1cm4gWWQoTSkmJihNPVFuKCkpLFlsKCkmJihHbChNKT9abigpOihHLm5vdGlmeSh7cHJldmlvdXNTdGF0ZTpoLG5ld1N0YXRlOk19KSxoPU0pKSxNfWZ1bmN0aW9uIEgoKXtFbih7cHJvY2VzczpmdW5jdGlvbihNKXtpZihMZChNKSlyZXR1cm4gUW4oKX0sYWZ0ZXI6ZnVuY3Rpb24oTSl7aD1NfX0sbyl9ZnVuY3Rpb24gQShNKXtpZihMZChNKSlyZXR1cm4hMTt2YXIgemw9dChNW1pdKSxqYz16bC50cmFja2luZ1R5cGUscHQ9emwuaXNUcmFja2VkO01bWl09amMsZGVsZXRlIE0uaXNFeHBpcmVkLHB0JiYhTS5pZCYmKE0uaWQ9UG4oKSxNLmNyZWF0ZWQ9U3RyaW5nKFVjKCkpKX1mdW5jdGlvbiBZbCgpe3JldHVybiBoW1pdIT09dm9pZCAwfWZ1bmN0aW9uIEdsKE0pe3JldHVybiBoLmlkIT09TS5pZHx8aFtaXSE9PU1bWl19ZnVuY3Rpb24gWm4oKXtoPVFuKCksZS5ub3RpZnkoKX1mdW5jdGlvbiBfKE0pe2g9TSxpLm5vdGlmeSgpfWZ1bmN0aW9uIHJsKE0pe0VuKHtwcm9jZXNzOmZ1bmN0aW9uKHpsKXtyZXR1cm4gV2woe30semwsTSl9LGFmdGVyOnp9LG8pfXJldHVybntleHBhbmRPclJlbmV3U2Vzc2lvbjpMLGV4cGFuZFNlc3Npb246SSxnZXRTZXNzaW9uOmZ1bmN0aW9uKCl7cmV0dXJuIGh9LHJlbmV3T2JzZXJ2YWJsZTppLGV4cGlyZU9ic2VydmFibGU6ZSxzZXNzaW9uU3RhdGVVcGRhdGVPYnNlcnZhYmxlOkcscmVzdGFydFNlc3Npb246SCxleHBpcmU6ZnVuY3Rpb24oKXt4KCkscygpLHooUW4oKSl9LHN0b3A6ZnVuY3Rpb24oKXtsaShWKX0sdXBkYXRlU2Vzc2lvblN0YXRlOnJsfX12YXIgX1o9e0dSQU5URUQ6ImdyYW50ZWQiLE5PVF9HUkFOVEVEOiJub3QtZ3JhbnRlZCJ9O2Z1bmN0aW9uIGlHKGMpe3ZhciBaPW5ldyBzbDtyZXR1cm57dHJ5VG9Jbml0OmZ1bmN0aW9uKHQpe2N8fChjPXQpfSx1cGRhdGU6ZnVuY3Rpb24odCl7Yz10LFoubm90aWZ5KCl9LGlzR3JhbnRlZDpmdW5jdGlvbigpe3JldHVybiBjPT09X1ouR1JBTlRFRH0sb2JzZXJ2YWJsZTpafX1mdW5jdGlvbiBqbihjLFosdCl7aWYodHlwZW9mIGMhPSJvYmplY3QifHxjPT09bnVsbClyZXR1cm4gSlNPTi5zdHJpbmdpZnkoYyk7dmFyIGk9c2MoT2JqZWN0LnByb3RvdHlwZSksZT1zYyhBcnJheS5wcm90b3R5cGUpLEc9c2MoT2JqZWN0LmdldFByb3RvdHlwZU9mKGMpKSxvPXNjKGMpO3RyeXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkoYyxaLHQpfWNhdGNoe3JldHVybiI8ZXJyb3I6IHVuYWJsZSB0byBzZXJpYWxpemUgb2JqZWN0PiJ9ZmluYWxseXtpKCksZSgpLEcoKSxvKCl9fWZ1bmN0aW9uIHNjKGMpe3ZhciBaPWMsdD1aLnRvSlNPTjtyZXR1cm4gdD8oZGVsZXRlIFoudG9KU09OLGZ1bmN0aW9uKCl7Wi50b0pTT049dH0pOklufWZ1bmN0aW9uIHFaKGMpe3JldHVybiBlRyhjLGxvY2F0aW9uLmhyZWYpLmhyZWZ9ZnVuY3Rpb24gZUcoYyxaKXt2YXIgdD1tRygpO2lmKHQpdHJ5e3JldHVybiBaIT09dm9pZCAwP25ldyB0KGMsWik6bmV3IHQoYyl9Y2F0Y2gobyl7dGhyb3cgbmV3IEVycm9yKCJGYWlsZWQgdG8gY29uc3RydWN0IFVSTDogIi5jb25jYXQoU3RyaW5nKG8pLCIgIikuY29uY2F0KGpuKHt1cmw6YyxiYXNlOlp9KSkpfWlmKFo9PT12b2lkIDAmJiEvOi8udGVzdChjKSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgVVJMOiAnIi5jb25jYXQoYywiJyIpKTt2YXIgaT1kb2N1bWVudCxlPWkuY3JlYXRlRWxlbWVudCgiYSIpO2lmKFohPT12b2lkIDApe2k9ZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCIiKTt2YXIgRz1pLmNyZWF0ZUVsZW1lbnQoImJhc2UiKTtHLmhyZWY9WixpLmhlYWQuYXBwZW5kQ2hpbGQoRyksaS5ib2R5LmFwcGVuZENoaWxkKGUpfXJldHVybiBlLmhyZWY9YyxlfXZhciBvaT1VUkwsZmQ7ZnVuY3Rpb24gbUcoKXtpZihmZD09PXZvaWQgMCl0cnl7dmFyIGM9bmV3IG9pKCJodHRwOi8vdGVzdC9wYXRoIik7ZmQ9Yy5ocmVmPT09Imh0dHA6Ly90ZXN0L3BhdGgifWNhdGNoe2ZkPSExfXJldHVybiBmZD9vaTp2b2lkIDB9dmFyIGFHPSJkYXRhZDBnLmNvbSIsYkc9ImRkMGctZ292LmNvbSIsRG49ImRhdGFkb2docS5jb20iLEdHPSJkZG9nLWdvdi5jb20iLFhpPSJwY2kuYnJvd3Nlci1pbnRha2UtZGF0YWRvZ2hxLmNvbSI7ZnVuY3Rpb24gd2MoYyxaLHQpe3ZhciBpPW9HKGMsWik7cmV0dXJue2J1aWxkOmZ1bmN0aW9uKGUsRyl7dmFyIG89c0coYyxaLHQsZSxHKTtyZXR1cm4gaShvKX0sdXJsUHJlZml4OmkoIiIpLHRyYWNrVHlwZTpafX1mdW5jdGlvbiBvRyhjLFope3ZhciB0PSIvYXBpL3YyLyIuY29uY2F0KFopLGk9Yy5wcm94eTtpZih0eXBlb2YgaT09InN0cmluZyIpe3ZhciBlPXFaKGkpO3JldHVybiBmdW5jdGlvbihvKXtyZXR1cm4iIi5jb25jYXQoZSwiP2RkZm9yd2FyZD0iKS5jb25jYXQoZW5jb2RlVVJJQ29tcG9uZW50KCIiLmNvbmNhdCh0LCI/IikuY29uY2F0KG8pKSl9fWlmKHR5cGVvZiBpPT0iZnVuY3Rpb24iKXJldHVybiBmdW5jdGlvbihvKXtyZXR1cm4gaSh7cGF0aDp0LHBhcmFtZXRlcnM6b30pfTt2YXIgRz1YRyhaLGMpO3JldHVybiBmdW5jdGlvbihvKXtyZXR1cm4iaHR0cHM6Ly8iLmNvbmNhdChHKS5jb25jYXQodCwiPyIpLmNvbmNhdChvKX19ZnVuY3Rpb24gWEcoYyxaKXt2YXIgdD1aLnNpdGUsaT10PT09dm9pZCAwP0RuOnQsZT1aLmludGVybmFsQW5hbHl0aWNzU3ViZG9tYWluO2lmKGM9PT0ibG9ncyImJloudXNlUGNpSW50YWtlJiZpPT09RG4pcmV0dXJuIFhpO2lmKGUmJmk9PT1EbilyZXR1cm4iIi5jb25jYXQoZSwiLiIpLmNvbmNhdChEbik7aWYoaT09PWJHKXJldHVybiJodHRwLWludGFrZS5sb2dzLiIuY29uY2F0KGkpO3ZhciBHPWkuc3BsaXQoIi4iKSxvPUcucG9wKCk7cmV0dXJuImJyb3dzZXItaW50YWtlLSIuY29uY2F0KEcuam9pbigiLSIpLCIuIikuY29uY2F0KG8pfWZ1bmN0aW9uIHNHKGMsWix0LGksZSl7dmFyIEc9Yy5jbGllbnRUb2tlbixvPWMuaW50ZXJuYWxBbmFseXRpY3NTdWJkb21haW4scz1lLnJldHJ5LFY9ZS5lbmNvZGluZyxoPVsic2RrX3ZlcnNpb246Ii5jb25jYXQoIjUuMjkuMSIpLCJhcGk6Ii5jb25jYXQoaSldLmNvbmNhdCh0KTtzJiZoLnB1c2goInJldHJ5X2NvdW50OiIuY29uY2F0KHMuY291bnQpLCJyZXRyeV9hZnRlcjoiLmNvbmNhdChzLmxhc3RGYWlsdXJlU3RhdHVzKSk7dmFyIHk9WyJkZHNvdXJjZT1icm93c2VyIiwiZGR0YWdzPSIuY29uY2F0KGVuY29kZVVSSUNvbXBvbmVudChoLmpvaW4oIiwiKSkpLCJkZC1hcGkta2V5PSIuY29uY2F0KEcpLCJkZC1ldnAtb3JpZ2luLXZlcnNpb249Ii5jb25jYXQoZW5jb2RlVVJJQ29tcG9uZW50KCI1LjI5LjEiKSksImRkLWV2cC1vcmlnaW49YnJvd3NlciIsImRkLXJlcXVlc3QtaWQ9Ii5jb25jYXQoUG4oKSldO3JldHVybiBWJiZ5LnB1c2goImRkLWV2cC1lbmNvZGluZz0iLmNvbmNhdChWKSksWj09PSJydW0iJiZ5LnB1c2goImJhdGNoX3RpbWU9Ii5jb25jYXQoeG4oKSkpLG8mJnkucmV2ZXJzZSgpLHkuam9pbigiJiIpfXZhciBwRz0yMDA7ZnVuY3Rpb24gV0coYyl7dmFyIFo9Yy5lbnYsdD1jLnNlcnZpY2UsaT1jLnZlcnNpb24sZT1jLmRhdGFjZW50ZXIsRz1bXTtyZXR1cm4gWiYmRy5wdXNoKEpkKCJlbnYiLFopKSx0JiZHLnB1c2goSmQoInNlcnZpY2UiLHQpKSxpJiZHLnB1c2goSmQoInZlcnNpb24iLGkpKSxlJiZHLnB1c2goSmQoImRhdGFjZW50ZXIiLGUpKSxHfWZ1bmN0aW9uIEpkKGMsWil7dmFyIHQ9cEctYy5sZW5ndGgtMTsoWi5sZW5ndGg+dHx8ckcoWikpJiZibC53YXJuKCIiLmNvbmNhdChjLCIgdmFsdWUgZG9lc24ndCBtZWV0IHRhZyByZXF1aXJlbWVudHMgYW5kIHdpbGwgYmUgc2FuaXRpemVkLiAiKS5jb25jYXQoV2QsIiAiKS5jb25jYXQoZ1osIi9nZXR0aW5nX3N0YXJ0ZWQvdGFnZ2luZy8jZGVmaW5pbmctdGFncyIpKTt2YXIgaT1aLnJlcGxhY2UoLywvZywiXyIpO3JldHVybiIiLmNvbmNhdChjLCI6IikuY29uY2F0KGkpfWZ1bmN0aW9uIHJHKGMpe3JldHVybiBoRygpP25ldyBSZWdFeHAoIlteXFxwe0xsfVxccHtMb30wLTlfOi4vLV0iLCJ1IikudGVzdChjKTohMX1mdW5jdGlvbiBoRygpe3RyeXtyZXR1cm4gbmV3IFJlZ0V4cCgiW1xccHtMbH1dIiwidSIpLCEwfWNhdGNoe3JldHVybiExfX1mdW5jdGlvbiBWRyhjKXt2YXIgWj1jLnNpdGV8fERuLHQ9V0coYyksaT15RyhjLHQpLGU9TEcoaSxaKSxHPVJHKGMsZSx0KTtyZXR1cm4gV2woe2lzSW50YWtlVXJsOmZ1bmN0aW9uKG8pe3JldHVybiBlLnNvbWUoZnVuY3Rpb24ocyl7cmV0dXJuIG8uaW5kZXhPZihzKT09PTB9KX0scmVwbGljYTpHLHNpdGU6Wn0saSl9ZnVuY3Rpb24geUcoYyxaKXtyZXR1cm57bG9nc0VuZHBvaW50QnVpbGRlcjp3YyhjLCJsb2dzIixaKSxydW1FbmRwb2ludEJ1aWxkZXI6d2MoYywicnVtIixaKSxzZXNzaW9uUmVwbGF5RW5kcG9pbnRCdWlsZGVyOndjKGMsInJlcGxheSIsWil9fWZ1bmN0aW9uIFJHKGMsWix0KXtpZihjLnJlcGxpY2Epe3ZhciBpPVdsKHt9LGMse3NpdGU6RG4sY2xpZW50VG9rZW46Yy5yZXBsaWNhLmNsaWVudFRva2VufSksZT17bG9nc0VuZHBvaW50QnVpbGRlcjp3YyhpLCJsb2dzIix0KSxydW1FbmRwb2ludEJ1aWxkZXI6d2MoaSwicnVtIix0KX07cmV0dXJuIFoucHVzaC5hcHBseShaLEdjKGUpLm1hcChmdW5jdGlvbihHKXtyZXR1cm4gRy51cmxQcmVmaXh9KSksV2woe2FwcGxpY2F0aW9uSWQ6Yy5yZXBsaWNhLmFwcGxpY2F0aW9uSWR9LGUpfX1mdW5jdGlvbiBMRyhjLFope3ZhciB0PUdjKGMpLm1hcChmdW5jdGlvbihpKXtyZXR1cm4gaS51cmxQcmVmaXh9KTtyZXR1cm4gWj09PURuJiZ0LnB1c2goImh0dHBzOi8vIi5jb25jYXQoWGksIi8iKSksdH1mdW5jdGlvbiAkWihjLFope3JldHVybiBjIT1udWxsJiZ0eXBlb2YgYyE9InN0cmluZyI/KGJsLmVycm9yKCIiLmNvbmNhdChaLCIgbXVzdCBiZSBkZWZpbmVkIGFzIGEgc3RyaW5nIikpLCExKTohMH1mdW5jdGlvbiBZRyhjKXtyZXR1cm4gYyYmdHlwZW9mIGM9PSJzdHJpbmciJiYhLyhkYXRhZG9nfGRkb2d8ZGF0YWQwZ3xkZDBnKS8udGVzdChjKT8oYmwuZXJyb3IoIlNpdGUgc2hvdWxkIGJlIGEgdmFsaWQgRGF0YWRvZyBzaXRlLiAiLmNvbmNhdChXZCwiICIpLmNvbmNhdChnWiwiL2dldHRpbmdfc3RhcnRlZC9zaXRlLy4iKSksITEpOiEwfWZ1bmN0aW9uIElkKGMsWil7cmV0dXJuIGMhPT12b2lkIDAmJiFvYihjKT8oYmwuZXJyb3IoIiIuY29uY2F0KFosIiBTYW1wbGUgUmF0ZSBzaG91bGQgYmUgYSBudW1iZXIgYmV0d2VlbiAwIGFuZCAxMDAiKSksITEpOiEwfWZ1bmN0aW9uIFNHKGMpe3ZhciBaLHQsaSxlLEc7aWYoIWN8fCFjLmNsaWVudFRva2VuKXtibC5lcnJvcigiQ2xpZW50IFRva2VuIGlzIG5vdCBjb25maWd1cmVkLCB3ZSB3aWxsIG5vdCBzZW5kIGFueSBkYXRhLiIpO3JldHVybn1pZighKCFZRyhjLnNpdGUpfHwhSWQoYy5zZXNzaW9uU2FtcGxlUmF0ZSwiU2Vzc2lvbiIpfHwhSWQoYy50ZWxlbWV0cnlTYW1wbGVSYXRlLCJUZWxlbWV0cnkiKXx8IUlkKGMudGVsZW1ldHJ5Q29uZmlndXJhdGlvblNhbXBsZVJhdGUsIlRlbGVtZXRyeSBDb25maWd1cmF0aW9uIil8fCFJZChjLnRlbGVtZXRyeVVzYWdlU2FtcGxlUmF0ZSwiVGVsZW1ldHJ5IFVzYWdlIil8fCEkWihjLnZlcnNpb24sIlZlcnNpb24iKXx8ISRaKGMuZW52LCJFbnYiKXx8ISRaKGMuc2VydmljZSwiU2VydmljZSIpKSl7aWYoYy50cmFja2luZ0NvbnNlbnQhPT12b2lkIDAmJiFfdShfWixjLnRyYWNraW5nQ29uc2VudCkpe2JsLmVycm9yKCdUcmFja2luZyBDb25zZW50IHNob3VsZCBiZSBlaXRoZXIgImdyYW50ZWQiIG9yICJub3QtZ3JhbnRlZCInKTtyZXR1cm59cmV0dXJuIFdsKHtiZWZvcmVTZW5kOmMuYmVmb3JlU2VuZCYmRHUoYy5iZWZvcmVTZW5kLCJiZWZvcmVTZW5kIHRocmV3IGFuIGVycm9yOiIpLHNlc3Npb25TdG9yZVN0cmF0ZWd5VHlwZTp0RyhjKSxzZXNzaW9uU2FtcGxlUmF0ZTooWj1jLnNlc3Npb25TYW1wbGVSYXRlKSE9PW51bGwmJlohPT12b2lkIDA/WjoxMDAsdGVsZW1ldHJ5U2FtcGxlUmF0ZToodD1jLnRlbGVtZXRyeVNhbXBsZVJhdGUpIT09bnVsbCYmdCE9PXZvaWQgMD90OjIwLHRlbGVtZXRyeUNvbmZpZ3VyYXRpb25TYW1wbGVSYXRlOihpPWMudGVsZW1ldHJ5Q29uZmlndXJhdGlvblNhbXBsZVJhdGUpIT09bnVsbCYmaSE9PXZvaWQgMD9pOjUsdGVsZW1ldHJ5VXNhZ2VTYW1wbGVSYXRlOihlPWMudGVsZW1ldHJ5VXNhZ2VTYW1wbGVSYXRlKSE9PW51bGwmJmUhPT12b2lkIDA/ZTo1LHNlcnZpY2U6Yy5zZXJ2aWNlfHx2b2lkIDAsc2lsZW50TXVsdGlwbGVJbml0OiEhYy5zaWxlbnRNdWx0aXBsZUluaXQsYWxsb3dVbnRydXN0ZWRFdmVudHM6ISFjLmFsbG93VW50cnVzdGVkRXZlbnRzLHRyYWNraW5nQ29uc2VudDooRz1jLnRyYWNraW5nQ29uc2VudCkhPT1udWxsJiZHIT09dm9pZCAwP0c6X1ouR1JBTlRFRCxzdG9yZUNvbnRleHRzQWNyb3NzUGFnZXM6ISFjLnN0b3JlQ29udGV4dHNBY3Jvc3NQYWdlcyxiYXRjaEJ5dGVzTGltaXQ6MTYqYm4sZXZlbnRSYXRlTGltaXRlclRocmVzaG9sZDozZTMsbWF4VGVsZW1ldHJ5RXZlbnRzUGVyUGFnZToxNSxmbHVzaFRpbWVvdXQ6MzAqZ2MsYmF0Y2hNZXNzYWdlc0xpbWl0OjUwLG1lc3NhZ2VCeXRlc0xpbWl0OjI1Nipibn0sVkcoYykpfX1mdW5jdGlvbiB4RyhjKXtyZXR1cm57c2Vzc2lvbl9zYW1wbGVfcmF0ZTpjLnNlc3Npb25TYW1wbGVSYXRlLHRlbGVtZXRyeV9zYW1wbGVfcmF0ZTpjLnRlbGVtZXRyeVNhbXBsZVJhdGUsdGVsZW1ldHJ5X2NvbmZpZ3VyYXRpb25fc2FtcGxlX3JhdGU6Yy50ZWxlbWV0cnlDb25maWd1cmF0aW9uU2FtcGxlUmF0ZSx0ZWxlbWV0cnlfdXNhZ2Vfc2FtcGxlX3JhdGU6Yy50ZWxlbWV0cnlVc2FnZVNhbXBsZVJhdGUsdXNlX2JlZm9yZV9zZW5kOiEhYy5iZWZvcmVTZW5kLHVzZV9jcm9zc19zaXRlX3Nlc3Npb25fY29va2llOmMudXNlQ3Jvc3NTaXRlU2Vzc2lvbkNvb2tpZSx1c2VfcGFydGl0aW9uZWRfY3Jvc3Nfc2l0ZV9zZXNzaW9uX2Nvb2tpZTpjLnVzZVBhcnRpdGlvbmVkQ3Jvc3NTaXRlU2Vzc2lvbkNvb2tpZSx1c2Vfc2VjdXJlX3Nlc3Npb25fY29va2llOmMudXNlU2VjdXJlU2Vzc2lvbkNvb2tpZSx1c2VfcHJveHk6ISFjLnByb3h5LHNpbGVudF9tdWx0aXBsZV9pbml0OmMuc2lsZW50TXVsdGlwbGVJbml0LHRyYWNrX3Nlc3Npb25fYWNyb3NzX3N1YmRvbWFpbnM6Yy50cmFja1Nlc3Npb25BY3Jvc3NTdWJkb21haW5zLGFsbG93X2ZhbGxiYWNrX3RvX2xvY2FsX3N0b3JhZ2U6ISFjLmFsbG93RmFsbGJhY2tUb0xvY2FsU3RvcmFnZSxzdG9yZV9jb250ZXh0c19hY3Jvc3NfcGFnZXM6ISFjLnN0b3JlQ29udGV4dHNBY3Jvc3NQYWdlcyxhbGxvd191bnRydXN0ZWRfZXZlbnRzOiEhYy5hbGxvd1VudHJ1c3RlZEV2ZW50cyx0cmFja2luZ19jb25zZW50OmMudHJhY2tpbmdDb25zZW50fX12YXIgbHQ7KGZ1bmN0aW9uKGMpe2MuV1JJVEFCTEVfUkVTT1VSQ0VfR1JBUEhRTD0id3JpdGFibGVfcmVzb3VyY2VfZ3JhcGhxbCIsYy5SRU1PVEVfQ09ORklHVVJBVElPTj0icmVtb3RlX2NvbmZpZ3VyYXRpb24iLGMuVVBEQVRFX1ZJRVdfTkFNRT0idXBkYXRlX3ZpZXdfbmFtZSIsYy5MT05HX0FOSU1BVElPTl9GUkFNRT0ibG9uZ19hbmltYXRpb25fZnJhbWUifSkobHR8fChsdD17fSkpO3ZhciBzaT1uZXcgU2V0O2Z1bmN0aW9uIGZHKGMpe0FycmF5LmlzQXJyYXkoYykmJkpHKGMuZmlsdGVyKGZ1bmN0aW9uKFope3JldHVybiBfdShsdCxaKX0pKX1mdW5jdGlvbiBKRyhjKXtjLmZvckVhY2goZnVuY3Rpb24oWil7c2kuYWRkKFopfSl9ZnVuY3Rpb24gSUcoKXtyZXR1cm4gc2l9dmFyIFBjPSI/IjtmdW5jdGlvbiBHbihjKXt2YXIgWj1bXSx0PW50KGMsInN0YWNrIiksaT1TdHJpbmcoYyk7cmV0dXJuIHQmJkNaKHQsaSkmJih0PXQuc2xpY2UoaS5sZW5ndGgpKSx0JiZ0LnNwbGl0KGAKYCkuZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgRz1ORyhlKXx8dkcoZSl8fGtHKGUpfHxNRyhlKTtHJiYoIUcuZnVuYyYmRy5saW5lJiYoRy5mdW5jPVBjKSxaLnB1c2goRykpfSkse21lc3NhZ2U6bnQoYywibWVzc2FnZSIpLG5hbWU6bnQoYywibmFtZSIpLHN0YWNrOlp9fXZhciBwaT0iKCg/OmZpbGV8aHR0cHM/fGJsb2J8Y2hyb21lLWV4dGVuc2lvbnxuYXRpdmV8ZXZhbHx3ZWJwYWNrfHNuaXBwZXR8PGFub255bW91cz58XFx3K1xcLnxcXC8pLio/KSIscGM9Iig/OjooXFxkKykpIixLRz1uZXcgUmVnRXhwKCJeXFxzKmF0ICguKj8pID9cXCgiLmNvbmNhdChwaSkuY29uY2F0KHBjLCI/IikuY29uY2F0KHBjLCI/XFwpP1xccyokIiksImkiKSxGRz1uZXcgUmVnRXhwKCJcXCgoXFxTKikiLmNvbmNhdChwYykuY29uY2F0KHBjLCJcXCkiKSk7ZnVuY3Rpb24gTkcoYyl7dmFyIFo9S0cuZXhlYyhjKTtpZihaKXt2YXIgdD1aWzJdJiZaWzJdLmluZGV4T2YoIm5hdGl2ZSIpPT09MCxpPVpbMl0mJlpbMl0uaW5kZXhPZigiZXZhbCIpPT09MCxlPUZHLmV4ZWMoWlsyXSk7cmV0dXJuIGkmJmUmJihaWzJdPWVbMV0sWlszXT1lWzJdLFpbNF09ZVszXSkse2FyZ3M6dD9bWlsyXV06W10sY29sdW1uOlpbNF0/K1pbNF06dm9pZCAwLGZ1bmM6WlsxXXx8UGMsbGluZTpaWzNdPytaWzNdOnZvaWQgMCx1cmw6dD92b2lkIDA6WlsyXX19fXZhciB6Rz1uZXcgUmVnRXhwKCJeXFxzKmF0ID8iLmNvbmNhdChwaSkuY29uY2F0KHBjLCI/IikuY29uY2F0KHBjLCI/P1xccyokIiksImkiKTtmdW5jdGlvbiB2RyhjKXt2YXIgWj16Ry5leGVjKGMpO2lmKFopcmV0dXJue2FyZ3M6W10sY29sdW1uOlpbM10/K1pbM106dm9pZCAwLGZ1bmM6UGMsbGluZTpaWzJdPytaWzJdOnZvaWQgMCx1cmw6WlsxXX19dmFyIEhHPS9eXHMqYXQgKD86KCg/Olxbb2JqZWN0IG9iamVjdFxdKT8uKykgKT9cKD8oKD86ZmlsZXxtcy1hcHB4fGh0dHBzP3x3ZWJwYWNrfGJsb2IpOi4qPyk6KFxkKykoPzo6KFxkKykpP1wpP1xzKiQvaTtmdW5jdGlvbiBrRyhjKXt2YXIgWj1IRy5leGVjKGMpO2lmKFopcmV0dXJue2FyZ3M6W10sY29sdW1uOlpbNF0/K1pbNF06dm9pZCAwLGZ1bmM6WlsxXXx8UGMsbGluZTorWlszXSx1cmw6WlsyXX19dmFyIGdHPS9eXHMqKC4qPykoPzpcKCguKj8pXCkpPyg/Ol58QCkoKD86ZmlsZXxodHRwcz98YmxvYnxjaHJvbWV8d2VicGFja3xyZXNvdXJjZXxjYXBhY2l0b3J8XFtuYXRpdmUpLio/fFteQF0qYnVuZGxlKSg/OjooXGQrKSk/KD86OihcZCspKT9ccyokL2ksVUc9LyhcUyspIGxpbmUgKFxkKykoPzogPiBldmFsIGxpbmUgXGQrKSogPiBldmFsL2k7ZnVuY3Rpb24gTUcoYyl7dmFyIFo9Z0cuZXhlYyhjKTtpZihaKXt2YXIgdD1aWzNdJiZaWzNdLmluZGV4T2YoIiA+IGV2YWwiKT4tMSxpPVVHLmV4ZWMoWlszXSk7cmV0dXJuIHQmJmkmJihaWzNdPWlbMV0sWls0XT1pWzJdLFpbNV09dm9pZCAwKSx7YXJnczpaWzJdP1pbMl0uc3BsaXQoIiwiKTpbXSxjb2x1bW46Wls1XT8rWls1XTp2b2lkIDAsZnVuYzpaWzFdfHxQYyxsaW5lOlpbNF0/K1pbNF06dm9pZCAwLHVybDpaWzNdfX19ZnVuY3Rpb24gbnQoYyxaKXtpZighKHR5cGVvZiBjIT0ib2JqZWN0Inx8IWN8fCEoWiBpbiBjKSkpe3ZhciB0PWNbWl07cmV0dXJuIHR5cGVvZiB0PT0ic3RyaW5nIj90OnZvaWQgMH19ZnVuY3Rpb24gVEcoYyxaLHQsaSl7dmFyIGU9W3t1cmw6Wixjb2x1bW46aSxsaW5lOnR9XSxHPXdHKGMpLG89Ry5uYW1lLHM9Ry5tZXNzYWdlO3JldHVybntuYW1lOm8sbWVzc2FnZTpzLHN0YWNrOmV9fXZhciBDRz0vXig/OltVdV1uY2F1Z2h0ICg/OmV4Y2VwdGlvbjogKT8pPyg/OigoPzpFdmFsfEludGVybmFsfFJhbmdlfFJlZmVyZW5jZXxTeW50YXh8VHlwZXxVUkl8KUVycm9yKTogKT8oW1xzXFNdKikkLztmdW5jdGlvbiB3RyhjKXt2YXIgWix0LGk7cmV0dXJue30udG9TdHJpbmcuY2FsbChjKT09PSJbb2JqZWN0IFN0cmluZ10iJiYoWj1DRy5leGVjKGMpLHQ9WlsxXSxpPVpbMl0pLHtuYW1lOnQsbWVzc2FnZTppfX1mdW5jdGlvbiBLZCgpe3ZhciBjPTIsWj1uZXcgRXJyb3IsdDtpZighWi5zdGFjayl0cnl7dGhyb3cgWn1jYXRjaHt9cmV0dXJuIE1jKGZ1bmN0aW9uKCl7dmFyIGk9R24oWik7aS5zdGFjaz1pLnN0YWNrLnNsaWNlKGMpLHQ9T24oaSl9KSx0fWZ1bmN0aW9uIE9uKGMpe3ZhciBaPVdpKGMpO3JldHVybiBjLnN0YWNrLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIGk9dC5mdW5jPT09Ij8iPyI8YW5vbnltb3VzPiI6dC5mdW5jLGU9dC5hcmdzJiZ0LmFyZ3MubGVuZ3RoPjA/IigiLmNvbmNhdCh0LmFyZ3Muam9pbigiLCAiKSwiKSIpOiIiLEc9dC5saW5lPyI6Ii5jb25jYXQodC5saW5lKToiIixvPXQubGluZSYmdC5jb2x1bW4/IjoiLmNvbmNhdCh0LmNvbHVtbik6IiI7Wis9YAogIGF0IGAuY29uY2F0KGkpLmNvbmNhdChlLCIgQCAiKS5jb25jYXQodC51cmwpLmNvbmNhdChHKS5jb25jYXQobyl9KSxafWZ1bmN0aW9uIFdpKGMpe3JldHVybiIiLmNvbmNhdChjLm5hbWV8fCJFcnJvciIsIjogIikuY29uY2F0KGMubWVzc2FnZSl9ZnVuY3Rpb24gQW4oYyxaLHQsaSl7dmFyIGU9aT09PXZvaWQgMD97fTppLEc9ZS5jb21wdXRlSGFuZGxpbmdTdGFjayxvPWNbWl07aWYodHlwZW9mIG8hPSJmdW5jdGlvbiIpaWYoWiBpbiBjJiZDWihaLCJvbiIpKW89SW47ZWxzZSByZXR1cm57c3RvcDpJbn07dmFyIHM9ITEsVj1mdW5jdGlvbigpe2lmKHMpcmV0dXJuIG8uYXBwbHkodGhpcyxhcmd1bWVudHMpO3ZhciBoPVRaKGFyZ3VtZW50cykseTtNYyh0LG51bGwsW3t0YXJnZXQ6dGhpcyxwYXJhbWV0ZXJzOmgsb25Qb3N0Q2FsbDpmdW5jdGlvbih4KXt5PXh9LGhhbmRsaW5nU3RhY2s6Rz9LZCgpOnZvaWQgMH1dKTt2YXIgTD1vLmFwcGx5KHRoaXMsaCk7cmV0dXJuIHkmJk1jKHksbnVsbCxbTF0pLEx9O3JldHVybiBjW1pdPVYse3N0b3A6ZnVuY3Rpb24oKXtzPSEwLGNbWl09PT1WJiYoY1taXT1vKX19fXZhciBQRz0yMjAqYm4sQkc9IiQiLFFHPTM7ZnVuY3Rpb24gb24oYyxaKXtaPT09dm9pZCAwJiYoWj1QRyk7dmFyIHQ9c2MoT2JqZWN0LnByb3RvdHlwZSksaT1zYyhBcnJheS5wcm90b3R5cGUpLGU9W10sRz1uZXcgV2Vha01hcCxvPWN0KGMsQkcsdm9pZCAwLGUsRykscz1KU09OLnN0cmluZ2lmeShvKSxWPXM/cy5sZW5ndGg6MDtpZihWPlope2R0KFosImRpc2NhcmRlZCIsYyk7cmV0dXJufWZvcig7ZS5sZW5ndGg+MCYmVjxaOyl7dmFyIGg9ZS5zaGlmdCgpLHk9MDtpZihBcnJheS5pc0FycmF5KGguc291cmNlKSlmb3IodmFyIEw9MDtMPGguc291cmNlLmxlbmd0aDtMKyspe3ZhciB4PWN0KGguc291cmNlW0xdLGgucGF0aCxMLGUsRyk7aWYoeCE9PXZvaWQgMD9WKz1KU09OLnN0cmluZ2lmeSh4KS5sZW5ndGg6Vis9NCxWKz15LHk9MSxWPlope2R0KFosInRydW5jYXRlZCIsYyk7YnJlYWt9aC50YXJnZXRbTF09eH1lbHNlIGZvcih2YXIgTCBpbiBoLnNvdXJjZSlpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoaC5zb3VyY2UsTCkpe3ZhciB4PWN0KGguc291cmNlW0xdLGgucGF0aCxMLGUsRyk7aWYoeCE9PXZvaWQgMCYmKFYrPUpTT04uc3RyaW5naWZ5KHgpLmxlbmd0aCt5K0wubGVuZ3RoK1FHLHk9MSksVj5aKXtkdChaLCJ0cnVuY2F0ZWQiLGMpO2JyZWFrfWgudGFyZ2V0W0xdPXh9fXJldHVybiB0KCksaSgpLG99ZnVuY3Rpb24gY3QoYyxaLHQsaSxlKXt2YXIgRz1ERyhjKTtpZighR3x8dHlwZW9mIEchPSJvYmplY3QiKXJldHVybiBFRyhHKTt2YXIgbz1qRyhHKTtpZihvIT09IltPYmplY3RdIiYmbyE9PSJbQXJyYXldIiYmbyE9PSJbRXJyb3JdIilyZXR1cm4gbzt2YXIgcz1jO2lmKGUuaGFzKHMpKXJldHVybiJbUmVmZXJlbmNlIHNlZW4gYXQgIi5jb25jYXQoZS5nZXQocyksIl0iKTt2YXIgVj10IT09dm9pZCAwPyIiLmNvbmNhdChaLCIuIikuY29uY2F0KHQpOlosaD1BcnJheS5pc0FycmF5KEcpP1tdOnt9O3JldHVybiBlLnNldChzLFYpLGkucHVzaCh7c291cmNlOkcsdGFyZ2V0OmgscGF0aDpWfSksaH1mdW5jdGlvbiBFRyhjKXtyZXR1cm4gdHlwZW9mIGM9PSJiaWdpbnQiPyJbQmlnSW50XSAiLmNvbmNhdChjLnRvU3RyaW5nKCkpOnR5cGVvZiBjPT0iZnVuY3Rpb24iPyJbRnVuY3Rpb25dICIuY29uY2F0KGMubmFtZXx8InVua25vd24iKTp0eXBlb2YgYz09InN5bWJvbCI/IltTeW1ib2xdICIuY29uY2F0KGMuZGVzY3JpcHRpb258fGMudG9TdHJpbmcoKSk6Y31mdW5jdGlvbiBqRyhjKXt0cnl7aWYoYyBpbnN0YW5jZW9mIEV2ZW50KXJldHVybntpc1RydXN0ZWQ6Yy5pc1RydXN0ZWR9O3ZhciBaPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChjKSx0PVoubWF0Y2goL1xbb2JqZWN0ICguKilcXS8pO2lmKHQmJnRbMV0pcmV0dXJuIlsiLmNvbmNhdCh0WzFdLCJdIil9Y2F0Y2h7fXJldHVybiJbVW5zZXJpYWxpemFibGVdIn1mdW5jdGlvbiBERyhjKXt2YXIgWj1jO2lmKFomJnR5cGVvZiBaLnRvSlNPTj09ImZ1bmN0aW9uIil0cnl7cmV0dXJuIFoudG9KU09OKCl9Y2F0Y2h7fXJldHVybiBjfWZ1bmN0aW9uIGR0KGMsWix0KXtibC53YXJuKCJUaGUgZGF0YSBwcm92aWRlZCBoYXMgYmVlbiAiLmNvbmNhdChaLCIgYXMgaXQgaXMgb3ZlciB0aGUgbGltaXQgb2YgIikuY29uY2F0KGMsIiBjaGFyYWN0ZXJzOiIpLHQpfXZhciByaT0iTm8gc3RhY2ssIGNvbnNpZGVyIHVzaW5nIGFuIGluc3RhbmNlIG9mIEVycm9yIjtmdW5jdGlvbiBoaShjKXt2YXIgWj1jLnN0YWNrVHJhY2UsdD1jLm9yaWdpbmFsRXJyb3IsaT1jLmhhbmRsaW5nU3RhY2ssZT1jLnN0YXJ0Q2xvY2tzLEc9Yy5ub25FcnJvclByZWZpeCxvPWMuc291cmNlLHM9Yy5oYW5kbGluZyxWPXQgaW5zdGFuY2VvZiBFcnJvcixoPU9HKFosVixHLHQpLHk9QUcoVixaKT9PbihaKTpyaSxMPVY/eWkodCxvKTp2b2lkIDAseD1aP1oubmFtZTp2b2lkIDAsST1WaSh0KTtyZXR1cm57c3RhcnRDbG9ja3M6ZSxzb3VyY2U6byxoYW5kbGluZzpzLGhhbmRsaW5nU3RhY2s6aSxvcmlnaW5hbEVycm9yOnQsdHlwZTp4LG1lc3NhZ2U6aCxzdGFjazp5LGNhdXNlczpMLGZpbmdlcnByaW50Okl9fWZ1bmN0aW9uIE9HKGMsWix0LGkpe3JldHVybiBjIT1udWxsJiZjLm1lc3NhZ2UmJihjIT1udWxsJiZjLm5hbWUpP2MubWVzc2FnZTpaPyJFbXB0eSBtZXNzYWdlIjoiIi5jb25jYXQodCwiICIpLmNvbmNhdChqbihvbihpKSkpfWZ1bmN0aW9uIEFHKGMsWil7cmV0dXJuIFo9PT12b2lkIDA/ITE6Yz8hMDpaLnN0YWNrLmxlbmd0aD4wJiYoWi5zdGFjay5sZW5ndGg+MXx8Wi5zdGFja1swXS51cmwhPT12b2lkIDApfWZ1bmN0aW9uIFZpKGMpe3JldHVybiBjIGluc3RhbmNlb2YgRXJyb3ImJiJkZF9maW5nZXJwcmludCJpbiBjP1N0cmluZyhjLmRkX2ZpbmdlcnByaW50KTp2b2lkIDB9ZnVuY3Rpb24gX0coYyl7dmFyIFo7cmV0dXJuKFo9L0AgKC4rKS8uZXhlYyhjKSk9PT1udWxsfHxaPT09dm9pZCAwP3ZvaWQgMDpaWzFdfWZ1bmN0aW9uIHlpKGMsWil7Zm9yKHZhciB0PWMsaT1bXTsodD09bnVsbD92b2lkIDA6dC5jYXVzZSlpbnN0YW5jZW9mIEVycm9yJiZpLmxlbmd0aDwxMDspe3ZhciBlPUduKHQuY2F1c2UpO2kucHVzaCh7bWVzc2FnZTp0LmNhdXNlLm1lc3NhZ2Usc291cmNlOlosdHlwZTplPT1udWxsP3ZvaWQgMDplLm5hbWUsc3RhY2s6ZSYmT24oZSl9KSx0PXQuY2F1c2V9cmV0dXJuIGkubGVuZ3RoP2k6dm9pZCAwfXZhciBObD17QUdFTlQ6ImFnZW50IixDT05TT0xFOiJjb25zb2xlIixDVVNUT006ImN1c3RvbSIsTE9HR0VSOiJsb2dnZXIiLE5FVFdPUks6Im5ldHdvcmsiLFNPVVJDRToic291cmNlIixSRVBPUlQ6InJlcG9ydCJ9O2Z1bmN0aW9uIHFHKGMpe3ZhciBaPWZ1bmN0aW9uKGUsRyl7dmFyIG89aGkoe3N0YWNrVHJhY2U6ZSxvcmlnaW5hbEVycm9yOkcsc3RhcnRDbG9ja3M6Zm4oKSxub25FcnJvclByZWZpeDoiVW5jYXVnaHQiLHNvdXJjZTpObC5TT1VSQ0UsaGFuZGxpbmc6InVuaGFuZGxlZCJ9KTtjLm5vdGlmeShvKX0sdD0kRyhaKS5zdG9wLGk9bDAoWikuc3RvcDtyZXR1cm57c3RvcDpmdW5jdGlvbigpe3QoKSxpKCl9fX1mdW5jdGlvbiAkRyhjKXtyZXR1cm4gQW4od2luZG93LCJvbmVycm9yIixmdW5jdGlvbihaKXt2YXIgdD1aLnBhcmFtZXRlcnMsaT10WzBdLGU9dFsxXSxHPXRbMl0sbz10WzNdLHM9dFs0XSxWO3MgaW5zdGFuY2VvZiBFcnJvcj9WPUduKHMpOlY9VEcoaSxlLEcsbyksYyhWLHM/P2kpfSl9ZnVuY3Rpb24gbDAoYyl7cmV0dXJuIEFuKHdpbmRvdywib251bmhhbmRsZWRyZWplY3Rpb24iLGZ1bmN0aW9uKFope3ZhciB0PVoucGFyYW1ldGVyc1swXSxpPXQucmVhc29ufHwiRW1wdHkgcmVhc29uIixlPUduKGkpO2MoZSxpKX0pfWZ1bmN0aW9uIG4wKGMpe3ZhciBaPVdsKHt2ZXJzaW9uOiI1LjI5LjEiLG9uUmVhZHk6ZnVuY3Rpb24odCl7dCgpfX0sYyk7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShaLCJfc2V0RGVidWciLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZmJ9LGVudW1lcmFibGU6ITF9KSxafWZ1bmN0aW9uIGMwKGMsWix0KXt2YXIgaT1jW1pdO2kmJiFpLnEmJmkudmVyc2lvbiYmYmwud2FybigiU0RLIGlzIGxvYWRlZCBtb3JlIHRoYW4gb25jZS4gVGhpcyBpcyB1bnN1cHBvcnRlZCBhbmQgbWlnaHQgaGF2ZSB1bmV4cGVjdGVkIGJlaGF2aW9yLiIpLGNbWl09dCxpJiZpLnEmJmkucS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3JldHVybiBEdShlLCJvblJlYWR5IGNhbGxiYWNrIHRocmV3IGFuIGVycm9yOiIpKCl9KX1mdW5jdGlvbiBSaShjLFope1ouc2lsZW50TXVsdGlwbGVJbml0fHxibC5lcnJvcigiIi5jb25jYXQoYywiIGlzIGFscmVhZHkgaW5pdGlhbGl6ZWQuIikpfWZ1bmN0aW9uIF9uKGMsWix0LGksZSl7cmV0dXJuIFp0KGMsWixbdF0saSxlKX1mdW5jdGlvbiBadChjLFosdCxpLGUpe3ZhciBHPWU9PT12b2lkIDA/e306ZSxvPUcub25jZSxzPUcuY2FwdHVyZSxWPUcucGFzc2l2ZSxoPSQoZnVuY3Rpb24oSSl7IUkuaXNUcnVzdGVkJiYhSS5fX2RkSXNUcnVzdGVkJiYhYy5hbGxvd1VudHJ1c3RlZEV2ZW50c3x8KG8mJngoKSxpKEkpKX0pLHk9Vj97Y2FwdHVyZTpzLHBhc3NpdmU6Vn06cyxMPW9jKFosImFkZEV2ZW50TGlzdGVuZXIiKTt0LmZvckVhY2goZnVuY3Rpb24oSSl7cmV0dXJuIEwuY2FsbChaLEksaCx5KX0pO2Z1bmN0aW9uIHgoKXt2YXIgST1vYyhaLCJyZW1vdmVFdmVudExpc3RlbmVyIik7dC5mb3JFYWNoKGZ1bmN0aW9uKHYpe3JldHVybiBJLmNhbGwoWix2LGgseSl9KX1yZXR1cm57c3RvcDp4fX12YXIgRmQ9e2ludGVydmVudGlvbjoiaW50ZXJ2ZW50aW9uIixkZXByZWNhdGlvbjoiZGVwcmVjYXRpb24iLGNzcFZpb2xhdGlvbjoiY3NwX3Zpb2xhdGlvbiJ9O2Z1bmN0aW9uIGQwKGMsWil7dmFyIHQ9W107YmMoWixGZC5jc3BWaW9sYXRpb24pJiZ0LnB1c2godDAoYykpO3ZhciBpPVouZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlIT09RmQuY3NwVmlvbGF0aW9ufSk7cmV0dXJuIGkubGVuZ3RoJiZ0LnB1c2goWjAoaSkpLG5pLmFwcGx5KHZvaWQgMCx0KX1mdW5jdGlvbiBaMChjKXtyZXR1cm4gbmV3IHNsKGZ1bmN0aW9uKFope2lmKHdpbmRvdy5SZXBvcnRpbmdPYnNlcnZlcil7dmFyIHQ9JChmdW5jdGlvbihlLEcpe3JldHVybiBlLmZvckVhY2goZnVuY3Rpb24obyl7cmV0dXJuIFoubm90aWZ5KHUwKG8pKX0pfSksaT1uZXcgd2luZG93LlJlcG9ydGluZ09ic2VydmVyKHQse3R5cGVzOmMsYnVmZmVyZWQ6ITB9KTtyZXR1cm4gaS5vYnNlcnZlKCksZnVuY3Rpb24oKXtpLmRpc2Nvbm5lY3QoKX19fSl9ZnVuY3Rpb24gdDAoYyl7cmV0dXJuIG5ldyBzbChmdW5jdGlvbihaKXt2YXIgdD1fbihjLGRvY3VtZW50LCJzZWN1cml0eXBvbGljeXZpb2xhdGlvbiIsZnVuY3Rpb24oaSl7Wi5ub3RpZnkoaTAoaSkpfSkuc3RvcDtyZXR1cm4gdH0pfWZ1bmN0aW9uIHUwKGMpe3ZhciBaPWMudHlwZSx0PWMuYm9keTtyZXR1cm4gTGkoe3R5cGU6dC5pZCxtZXNzYWdlOiIiLmNvbmNhdChaLCI6ICIpLmNvbmNhdCh0Lm1lc3NhZ2UpLG9yaWdpbmFsRXJyb3I6YyxzdGFjazpZaSh0LmlkLHQubWVzc2FnZSx0LnNvdXJjZUZpbGUsdC5saW5lTnVtYmVyLHQuY29sdW1uTnVtYmVyKX0pfWZ1bmN0aW9uIGkwKGMpe3ZhciBaPSInIi5jb25jYXQoYy5ibG9ja2VkVVJJLCInIGJsb2NrZWQgYnkgJyIpLmNvbmNhdChjLmVmZmVjdGl2ZURpcmVjdGl2ZSwiJyBkaXJlY3RpdmUiKTtyZXR1cm4gTGkoe3R5cGU6Yy5lZmZlY3RpdmVEaXJlY3RpdmUsbWVzc2FnZToiIi5jb25jYXQoRmQuY3NwVmlvbGF0aW9uLCI6ICIpLmNvbmNhdChaKSxvcmlnaW5hbEVycm9yOmMsY3NwOntkaXNwb3NpdGlvbjpjLmRpc3Bvc2l0aW9ufSxzdGFjazpZaShjLmVmZmVjdGl2ZURpcmVjdGl2ZSxjLm9yaWdpbmFsUG9saWN5PyIiLmNvbmNhdChaLCcgb2YgdGhlIHBvbGljeSAiJykuY29uY2F0KEZiKGMub3JpZ2luYWxQb2xpY3ksMTAwLCIuLi4iKSwnIicpOiJubyBwb2xpY3kiLGMuc291cmNlRmlsZSxjLmxpbmVOdW1iZXIsYy5jb2x1bW5OdW1iZXIpfSl9ZnVuY3Rpb24gTGkoYyl7cmV0dXJuIFdsKHtzdGFydENsb2NrczpmbigpLHNvdXJjZTpObC5SRVBPUlQsaGFuZGxpbmc6InVuaGFuZGxlZCJ9LGMpfWZ1bmN0aW9uIFlpKGMsWix0LGksZSl7cmV0dXJuIHQ/T24oe25hbWU6YyxtZXNzYWdlOlosc3RhY2s6W3tmdW5jOiI/Iix1cmw6dCxsaW5lOmk/P3ZvaWQgMCxjb2x1bW46ZT8/dm9pZCAwfV19KTp2b2lkIDB9ZnVuY3Rpb24gU2koYyxaKXt2YXIgdD13aW5kb3cuX19kZEJyb3dzZXJTZGtFeHRlbnNpb25DYWxsYmFjazt0JiZ0KHt0eXBlOmMscGF5bG9hZDpafSl9ZnVuY3Rpb24gdHQoYyl7cmV0dXJuIGM9PT1udWxsPyJudWxsIjpBcnJheS5pc0FycmF5KGMpPyJhcnJheSI6dHlwZW9mIGN9ZnVuY3Rpb24gTmQoYyxaLHQpe2lmKHQ9PT12b2lkIDAmJih0PWUwKCkpLFo9PT12b2lkIDApcmV0dXJuIGM7aWYodHlwZW9mIFohPSJvYmplY3QifHxaPT09bnVsbClyZXR1cm4gWjtpZihaIGluc3RhbmNlb2YgRGF0ZSlyZXR1cm4gbmV3IERhdGUoWi5nZXRUaW1lKCkpO2lmKFogaW5zdGFuY2VvZiBSZWdFeHApe3ZhciBpPVouZmxhZ3N8fFtaLmdsb2JhbD8iZyI6IiIsWi5pZ25vcmVDYXNlPyJpIjoiIixaLm11bHRpbGluZT8ibSI6IiIsWi5zdGlja3k/InkiOiIiLFoudW5pY29kZT8idSI6IiJdLmpvaW4oIiIpO3JldHVybiBuZXcgUmVnRXhwKFouc291cmNlLGkpfWlmKCF0Lmhhc0FscmVhZHlCZWVuU2VlbihaKSl7aWYoQXJyYXkuaXNBcnJheShaKSl7Zm9yKHZhciBlPUFycmF5LmlzQXJyYXkoYyk/YzpbXSxHPTA7RzxaLmxlbmd0aDsrK0cpZVtHXT1OZChlW0ddLFpbR10sdCk7cmV0dXJuIGV9dmFyIG89dHQoYyk9PT0ib2JqZWN0Ij9jOnt9O2Zvcih2YXIgcyBpbiBaKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChaLHMpJiYob1tzXT1OZChvW3NdLFpbc10sdCkpO3JldHVybiBvfX1mdW5jdGlvbiB4aShjKXtyZXR1cm4gTmQodm9pZCAwLGMpfWZ1bmN0aW9uIFdjKCl7Zm9yKHZhciBjPVtdLFo9MDtaPGFyZ3VtZW50cy5sZW5ndGg7WisrKWNbWl09YXJndW1lbnRzW1pdO2Zvcih2YXIgdCxpPTAsZT1jO2k8ZS5sZW5ndGg7aSsrKXt2YXIgRz1lW2ldO0chPW51bGwmJih0PU5kKHQsRykpfXJldHVybiB0fWZ1bmN0aW9uIGUwKCl7aWYodHlwZW9mIFdlYWtTZXQ8InUiKXt2YXIgYz1uZXcgV2Vha1NldDtyZXR1cm57aGFzQWxyZWFkeUJlZW5TZWVuOmZ1bmN0aW9uKHQpe3ZhciBpPWMuaGFzKHQpO3JldHVybiBpfHxjLmFkZCh0KSxpfX19dmFyIFo9W107cmV0dXJue2hhc0FscmVhZHlCZWVuU2VlbjpmdW5jdGlvbih0KXt2YXIgaT1aLmluZGV4T2YodCk+PTA7cmV0dXJuIGl8fFoucHVzaCh0KSxpfX19ZnVuY3Rpb24gbTAoKXt2YXIgYyxaPXdpbmRvdy5uYXZpZ2F0b3I7cmV0dXJue3N0YXR1czpaLm9uTGluZT8iY29ubmVjdGVkIjoibm90X2Nvbm5lY3RlZCIsaW50ZXJmYWNlczpaLmNvbm5lY3Rpb24mJlouY29ubmVjdGlvbi50eXBlP1taLmNvbm5lY3Rpb24udHlwZV06dm9pZCAwLGVmZmVjdGl2ZV90eXBlOihjPVouY29ubmVjdGlvbik9PT1udWxsfHxjPT09dm9pZCAwP3ZvaWQgMDpjLmVmZmVjdGl2ZVR5cGV9fWZ1bmN0aW9uIGEwKGMpe3ZhciBaPW5ldyBTZXQ7cmV0dXJuIGMuZm9yRWFjaChmdW5jdGlvbih0KXtyZXR1cm4gWi5hZGQodCl9KSxUWihaKX1mdW5jdGlvbiBmaShjLFope3ZhciB0PWMuaW5kZXhPZihaKTt0Pj0wJiZjLnNwbGljZSh0LDEpfXZhciBiMD01MDA7ZnVuY3Rpb24gSmkoKXt2YXIgYz1bXSxaPWZ1bmN0aW9uKGUpe3ZhciBHPWMucHVzaChlKTtHPmIwJiZjLnNwbGljZSgwLDEpfSx0PWZ1bmN0aW9uKGUpe2ZpKGMsZSl9LGk9ZnVuY3Rpb24oZSl7Yy5mb3JFYWNoKGZ1bmN0aW9uKEcpe3JldHVybiBHKGUpfSksYy5sZW5ndGg9MH07cmV0dXJue2FkZDpaLHJlbW92ZTp0LGRyYWluOml9fXZhciBxbj17bG9nOiJsb2ciLGNvbmZpZ3VyYXRpb246ImNvbmZpZ3VyYXRpb24iLHVzYWdlOiJ1c2FnZSJ9LEcwPVsiaHR0cHM6Ly93d3cuZGF0YWRvZ2hxLWJyb3dzZXItYWdlbnQuY29tIiwiaHR0cHM6Ly93d3cuZGF0YWQwZy1icm93c2VyLWFnZW50LmNvbSIsImh0dHBzOi8vZDN1YzA2OWZjbjd1eHcuY2xvdWRmcm9udC5uZXQiLCJodHRwczovL2QyMHh0end6Y2wwY2ViLmNsb3VkZnJvbnQubmV0IiwiaHR0cDovL2xvY2FsaG9zdCIsIjxhbm9ueW1vdXM+Il0sbzA9W0dHXSxJaT1KaSgpLHJjPWZ1bmN0aW9uKGMpe0lpLmFkZChmdW5jdGlvbigpe3JldHVybiByYyhjKX0pfTtmdW5jdGlvbiBYMChjLFope3ZhciB0LGksZT1uZXcgc2wsRz1uZXcgU2V0LG89IWJjKG8wLFouc2l0ZSkmJnJkKFoudGVsZW1ldHJ5U2FtcGxlUmF0ZSkscz0odD17fSx0W3FuLmxvZ109byx0W3FuLmNvbmZpZ3VyYXRpb25dPW8mJnJkKFoudGVsZW1ldHJ5Q29uZmlndXJhdGlvblNhbXBsZVJhdGUpLHRbcW4udXNhZ2VdPW8mJnJkKFoudGVsZW1ldHJ5VXNhZ2VTYW1wbGVSYXRlKSx0KSxWPXMwKCk7cmM9ZnVuY3Rpb24oeSl7dmFyIEw9am4oeSk7aWYoc1t5LnR5cGVdJiZHLnNpemU8Wi5tYXhUZWxlbWV0cnlFdmVudHNQZXJQYWdlJiYhRy5oYXMoTCkpe3ZhciB4PWgoYyx5LFYpO2Uubm90aWZ5KHgpLFNpKCJ0ZWxlbWV0cnkiLHgpLEcuYWRkKEwpfX0seGIoRmkpO2Z1bmN0aW9uIGgoeSxMLHgpe3JldHVybiBXYyh7dHlwZToidGVsZW1ldHJ5IixkYXRlOnhuKCksc2VydmljZTp5LHZlcnNpb246IjUuMjkuMSIsc291cmNlOiJicm93c2VyIixfZGQ6e2Zvcm1hdF92ZXJzaW9uOjJ9LHRlbGVtZXRyeTpXYyhMLHtydW50aW1lX2Vudjp4LGNvbm5lY3Rpdml0eTptMCgpLHNka19zZXR1cDoibnBtIn0pLGV4cGVyaW1lbnRhbF9mZWF0dXJlczpUWihJRygpKX0saSE9PXZvaWQgMD9pKCk6e30pfXJldHVybntzZXRDb250ZXh0UHJvdmlkZXI6ZnVuY3Rpb24oeSl7aT15fSxvYnNlcnZhYmxlOmUsZW5hYmxlZDpvfX1mdW5jdGlvbiBzMCgpe3JldHVybntpc19sb2NhbF9maWxlOndpbmRvdy5sb2NhdGlvbi5wcm90b2NvbD09PSJmaWxlOiIsaXNfd29ya2VyOiJXb3JrZXJHbG9iYWxTY29wZSJpbiBzZWxmfX1mdW5jdGlvbiBwMCgpe0lpLmRyYWluKCl9ZnVuY3Rpb24gVzAoYyl7cmV0dXJuIGMuc2l0ZT09PWFHfWZ1bmN0aW9uIEtpKGMsWil7UFoobWwuZGVidWcsYyxaKSxyYyhXbCh7dHlwZTpxbi5sb2csbWVzc2FnZTpjLHN0YXR1czoiZGVidWcifSxaKSl9ZnVuY3Rpb24gRmkoYyxaKXtyYyhXbCh7dHlwZTpxbi5sb2csc3RhdHVzOiJlcnJvciJ9LFYwKGMpLFopKX1mdW5jdGlvbiByMChjKXtyYyh7dHlwZTpxbi5jb25maWd1cmF0aW9uLGNvbmZpZ3VyYXRpb246Y30pfWZ1bmN0aW9uIGgwKGMpe3JjKHt0eXBlOnFuLnVzYWdlLHVzYWdlOmN9KX1mdW5jdGlvbiBWMChjKXtpZihjIGluc3RhbmNlb2YgRXJyb3Ipe3ZhciBaPUduKGMpO3JldHVybntlcnJvcjp7a2luZDpaLm5hbWUsc3RhY2s6T24oeTAoWikpfSxtZXNzYWdlOloubWVzc2FnZX19cmV0dXJue2Vycm9yOntzdGFjazpyaX0sbWVzc2FnZToiIi5jb25jYXQoIlVuY2F1Z2h0IiwiICIpLmNvbmNhdChqbihjKSl9fWZ1bmN0aW9uIHkwKGMpe3JldHVybiBjLnN0YWNrPWMuc3RhY2suZmlsdGVyKGZ1bmN0aW9uKFope3JldHVybiFaLnVybHx8RzAuc29tZShmdW5jdGlvbih0KXtyZXR1cm4gQ1ooWi51cmwsdCl9KX0pLGN9dmFyIHpkPTEvMCxSMD13bjtmdW5jdGlvbiBMMChjKXt2YXIgWj1jLmV4cGlyZURlbGF5LHQ9Yy5tYXhFbnRyaWVzLGk9W10sZT1CWihmdW5jdGlvbigpe3JldHVybiBHKCl9LFIwKTtmdW5jdGlvbiBHKCl7Zm9yKHZhciB4PWhkKCktWjtpLmxlbmd0aD4wJiZpW2kubGVuZ3RoLTFdLmVuZFRpbWU8eDspaS5wb3AoKX1mdW5jdGlvbiBvKHgsSSl7dmFyIHY9e3ZhbHVlOngsc3RhcnRUaW1lOkksZW5kVGltZTp6ZCxyZW1vdmU6ZnVuY3Rpb24oKXtmaShpLHYpfSxjbG9zZTpmdW5jdGlvbih6KXt2LmVuZFRpbWU9en19O3JldHVybiB0JiZpLmxlbmd0aD49dCYmaS5wb3AoKSxpLnVuc2hpZnQodiksdn1mdW5jdGlvbiBzKHgsSSl7eD09PXZvaWQgMCYmKHg9emQpLEk9PT12b2lkIDAmJihJPXtyZXR1cm5JbmFjdGl2ZTohMX0pO2Zvcih2YXIgdj0wLHo9aTt2PHoubGVuZ3RoO3YrKyl7dmFyIEg9elt2XTtpZihILnN0YXJ0VGltZTw9eCl7aWYoSS5yZXR1cm5JbmFjdGl2ZXx8eDw9SC5lbmRUaW1lKXJldHVybiBILnZhbHVlO2JyZWFrfX19ZnVuY3Rpb24gVih4KXt2YXIgST1pWzBdO0kmJkkuZW5kVGltZT09PXpkJiZJLmNsb3NlKHgpfWZ1bmN0aW9uIGgoeCxJKXt4PT09dm9pZCAwJiYoeD16ZCksST09PXZvaWQgMCYmKEk9MCk7dmFyIHY9cmIoeCxJKTtyZXR1cm4gaS5maWx0ZXIoZnVuY3Rpb24oeil7cmV0dXJuIHouc3RhcnRUaW1lPD12JiZ4PD16LmVuZFRpbWV9KS5tYXAoZnVuY3Rpb24oeil7cmV0dXJuIHoudmFsdWV9KX1mdW5jdGlvbiB5KCl7aT1bXX1mdW5jdGlvbiBMKCl7bGkoZSl9cmV0dXJue2FkZDpvLGZpbmQ6cyxjbG9zZUFjdGl2ZTpWLGZpbmRBbGw6aCxyZXNldDp5LHN0b3A6TH19dmFyIFkwPXduLFMwPURaO2Z1bmN0aW9uIHgwKGMsWix0LGkpe3ZhciBlPW5ldyBzbCxHPW5ldyBzbCxvPXVHKGMuc2Vzc2lvblN0b3JlU3RyYXRlZ3lUeXBlLFosdCkscz1MMCh7ZXhwaXJlRGVsYXk6UzB9KTtvLnJlbmV3T2JzZXJ2YWJsZS5zdWJzY3JpYmUoZnVuY3Rpb24oKXtzLmFkZChWKCksaGQoKSksZS5ub3RpZnkoKX0pLG8uZXhwaXJlT2JzZXJ2YWJsZS5zdWJzY3JpYmUoZnVuY3Rpb24oKXtHLm5vdGlmeSgpLHMuY2xvc2VBY3RpdmUoaGQoKSl9KSxvLmV4cGFuZE9yUmVuZXdTZXNzaW9uKCkscy5hZGQoVigpLHBiKCkucmVsYXRpdmUpLGkub2JzZXJ2YWJsZS5zdWJzY3JpYmUoZnVuY3Rpb24oKXtpLmlzR3JhbnRlZCgpP28uZXhwYW5kT3JSZW5ld1Nlc3Npb24oKTpvLmV4cGlyZSgpfSksZjAoYyxmdW5jdGlvbigpe2kuaXNHcmFudGVkKCkmJm8uZXhwYW5kT3JSZW5ld1Nlc3Npb24oKX0pLEowKGMsZnVuY3Rpb24oKXtyZXR1cm4gby5leHBhbmRTZXNzaW9uKCl9KSxJMChjLGZ1bmN0aW9uKCl7cmV0dXJuIG8ucmVzdGFydFNlc3Npb24oKX0pO2Z1bmN0aW9uIFYoKXtyZXR1cm57aWQ6by5nZXRTZXNzaW9uKCkuaWQsdHJhY2tpbmdUeXBlOm8uZ2V0U2Vzc2lvbigpW1pdLGlzUmVwbGF5Rm9yY2VkOiEhby5nZXRTZXNzaW9uKCkuZm9yY2VkUmVwbGF5fX1yZXR1cm57ZmluZFNlc3Npb246ZnVuY3Rpb24oaCx5KXtyZXR1cm4gcy5maW5kKGgseSl9LHJlbmV3T2JzZXJ2YWJsZTplLGV4cGlyZU9ic2VydmFibGU6RyxzZXNzaW9uU3RhdGVVcGRhdGVPYnNlcnZhYmxlOm8uc2Vzc2lvblN0YXRlVXBkYXRlT2JzZXJ2YWJsZSxleHBpcmU6by5leHBpcmUsdXBkYXRlU2Vzc2lvblN0YXRlOm8udXBkYXRlU2Vzc2lvblN0YXRlfX1mdW5jdGlvbiBmMChjLFope1p0KGMsd2luZG93LFsiY2xpY2siLCJ0b3VjaHN0YXJ0Iiwia2V5ZG93biIsInNjcm9sbCJdLFose2NhcHR1cmU6ITAscGFzc2l2ZTohMH0pLnN0b3B9ZnVuY3Rpb24gSjAoYyxaKXt2YXIgdD1mdW5jdGlvbigpe2RvY3VtZW50LnZpc2liaWxpdHlTdGF0ZT09PSJ2aXNpYmxlIiYmWigpfTtfbihjLGRvY3VtZW50LCJ2aXNpYmlsaXR5Y2hhbmdlIix0KS5zdG9wLEJaKHQsWTApfWZ1bmN0aW9uIEkwKGMsWil7X24oYyx3aW5kb3csInJlc3VtZSIsWix7Y2FwdHVyZTohMH0pLnN0b3B9ZnVuY3Rpb24gTmkoYyl7cmV0dXJuIGM+PTUwMH1mdW5jdGlvbiBLMChjKXt0cnl7cmV0dXJuIGMuY2xvbmUoKX1jYXRjaHtyZXR1cm59fXZhciBGMD04MCpibixOMD0zMix6aT0zKkF1LHowPXduLHZpPWdjO2Z1bmN0aW9uIEhpKGMsWix0LGksZSl7Wi50cmFuc3BvcnRTdGF0dXM9PT0wJiZaLnF1ZXVlZFBheWxvYWRzLnNpemUoKT09PTAmJlouYmFuZHdpZHRoTW9uaXRvci5jYW5IYW5kbGUoYyk/Z2koYyxaLHQse29uU3VjY2VzczpmdW5jdGlvbigpe3JldHVybiBVaSgwLFosdCxpLGUpfSxvbkZhaWx1cmU6ZnVuY3Rpb24oKXtaLnF1ZXVlZFBheWxvYWRzLmVucXVldWUoYyksa2koWix0LGksZSl9fSk6Wi5xdWV1ZWRQYXlsb2Fkcy5lbnF1ZXVlKGMpfWZ1bmN0aW9uIGtpKGMsWix0LGkpe2MudHJhbnNwb3J0U3RhdHVzPT09MiYmVGMoZnVuY3Rpb24oKXt2YXIgZT1jLnF1ZXVlZFBheWxvYWRzLmZpcnN0KCk7Z2koZSxjLFose29uU3VjY2VzczpmdW5jdGlvbigpe2MucXVldWVkUGF5bG9hZHMuZGVxdWV1ZSgpLGMuY3VycmVudEJhY2tvZmZUaW1lPXZpLFVpKDEsYyxaLHQsaSl9LG9uRmFpbHVyZTpmdW5jdGlvbigpe2MuY3VycmVudEJhY2tvZmZUaW1lPU1hdGgubWluKHowLGMuY3VycmVudEJhY2tvZmZUaW1lKjIpLGtpKGMsWix0LGkpfX0pfSxjLmN1cnJlbnRCYWNrb2ZmVGltZSl9ZnVuY3Rpb24gZ2koYyxaLHQsaSl7dmFyIGU9aS5vblN1Y2Nlc3MsRz1pLm9uRmFpbHVyZTtaLmJhbmR3aWR0aE1vbml0b3IuYWRkKGMpLHQoYyxmdW5jdGlvbihvKXtaLmJhbmR3aWR0aE1vbml0b3IucmVtb3ZlKGMpLHYwKG8pPyhaLnRyYW5zcG9ydFN0YXR1cz1aLmJhbmR3aWR0aE1vbml0b3Iub25nb2luZ1JlcXVlc3RDb3VudD4wPzE6MixjLnJldHJ5PXtjb3VudDpjLnJldHJ5P2MucmV0cnkuY291bnQrMToxLGxhc3RGYWlsdXJlU3RhdHVzOm8uc3RhdHVzfSxHKCkpOihaLnRyYW5zcG9ydFN0YXR1cz0wLGUoKSl9KX1mdW5jdGlvbiBVaShjLFosdCxpLGUpe2M9PT0wJiZaLnF1ZXVlZFBheWxvYWRzLmlzRnVsbCgpJiYhWi5xdWV1ZUZ1bGxSZXBvcnRlZCYmKGUoe21lc3NhZ2U6IlJlYWNoZWQgbWF4ICIuY29uY2F0KGksIiBldmVudHMgc2l6ZSBxdWV1ZWQgZm9yIHVwbG9hZDogIikuY29uY2F0KHppL0F1LCJNaUIiKSxzb3VyY2U6TmwuQUdFTlQsc3RhcnRDbG9ja3M6Zm4oKX0pLFoucXVldWVGdWxsUmVwb3J0ZWQ9ITApO3ZhciBHPVoucXVldWVkUGF5bG9hZHM7Zm9yKFoucXVldWVkUGF5bG9hZHM9TWkoKTtHLnNpemUoKT4wOylIaShHLmRlcXVldWUoKSxaLHQsaSxlKX1mdW5jdGlvbiB2MChjKXtyZXR1cm4gYy50eXBlIT09Im9wYXF1ZSImJihjLnN0YXR1cz09PTAmJiFuYXZpZ2F0b3Iub25MaW5lfHxjLnN0YXR1cz09PTQwOHx8Yy5zdGF0dXM9PT00Mjl8fE5pKGMuc3RhdHVzKSl9ZnVuY3Rpb24gSDAoKXtyZXR1cm57dHJhbnNwb3J0U3RhdHVzOjAsY3VycmVudEJhY2tvZmZUaW1lOnZpLGJhbmR3aWR0aE1vbml0b3I6azAoKSxxdWV1ZWRQYXlsb2FkczpNaSgpLHF1ZXVlRnVsbFJlcG9ydGVkOiExfX1mdW5jdGlvbiBNaSgpe3ZhciBjPVtdO3JldHVybntieXRlc0NvdW50OjAsZW5xdWV1ZTpmdW5jdGlvbihaKXt0aGlzLmlzRnVsbCgpfHwoYy5wdXNoKFopLHRoaXMuYnl0ZXNDb3VudCs9Wi5ieXRlc0NvdW50KX0sZmlyc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gY1swXX0sZGVxdWV1ZTpmdW5jdGlvbigpe3ZhciBaPWMuc2hpZnQoKTtyZXR1cm4gWiYmKHRoaXMuYnl0ZXNDb3VudC09Wi5ieXRlc0NvdW50KSxafSxzaXplOmZ1bmN0aW9uKCl7cmV0dXJuIGMubGVuZ3RofSxpc0Z1bGw6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ieXRlc0NvdW50Pj16aX19fWZ1bmN0aW9uIGswKCl7cmV0dXJue29uZ29pbmdSZXF1ZXN0Q291bnQ6MCxvbmdvaW5nQnl0ZUNvdW50OjAsY2FuSGFuZGxlOmZ1bmN0aW9uKGMpe3JldHVybiB0aGlzLm9uZ29pbmdSZXF1ZXN0Q291bnQ9PT0wfHx0aGlzLm9uZ29pbmdCeXRlQ291bnQrYy5ieXRlc0NvdW50PD1GMCYmdGhpcy5vbmdvaW5nUmVxdWVzdENvdW50PE4wfSxhZGQ6ZnVuY3Rpb24oYyl7dGhpcy5vbmdvaW5nUmVxdWVzdENvdW50Kz0xLHRoaXMub25nb2luZ0J5dGVDb3VudCs9Yy5ieXRlc0NvdW50fSxyZW1vdmU6ZnVuY3Rpb24oYyl7dGhpcy5vbmdvaW5nUmVxdWVzdENvdW50LT0xLHRoaXMub25nb2luZ0J5dGVDb3VudC09Yy5ieXRlc0NvdW50fX19ZnVuY3Rpb24gZzAoYyxaLHQsaSl7dmFyIGU9SDAoKSxHPWZ1bmN0aW9uKG8scyl7cmV0dXJuIFQwKGMsWix0LG8scyl9O3JldHVybntzZW5kOmZ1bmN0aW9uKG8pe0hpKG8sZSxHLFoudHJhY2tUeXBlLGkpfSxzZW5kT25FeGl0OmZ1bmN0aW9uKG8pe1UwKGMsWix0LG8pfX19ZnVuY3Rpb24gVTAoYyxaLHQsaSl7dmFyIGU9ISFuYXZpZ2F0b3Iuc2VuZEJlYWNvbiYmaS5ieXRlc0NvdW50PHQ7aWYoZSl0cnl7dmFyIEc9Wi5idWlsZCgiYmVhY29uIixpKSxvPW5hdmlnYXRvci5zZW5kQmVhY29uKEcsaS5kYXRhKTtpZihvKXJldHVybn1jYXRjaChWKXtNMChWKX12YXIgcz1aLmJ1aWxkKCJ4aHIiLGkpO3V0KGMscyxpLmRhdGEpfXZhciBUaT0hMTtmdW5jdGlvbiBNMChjKXtUaXx8KFRpPSEwLEZpKGMpKX1mdW5jdGlvbiBUMChjLFosdCxpLGUpe3ZhciBHPUMwKCkmJmkuYnl0ZXNDb3VudDx0O2lmKEcpe3ZhciBvPVouYnVpbGQoImZldGNoIixpKTtmZXRjaChvLHttZXRob2Q6IlBPU1QiLGJvZHk6aS5kYXRhLGtlZXBhbGl2ZTohMCxtb2RlOiJjb3JzIn0pLnRoZW4oJChmdW5jdGlvbihWKXtyZXR1cm4gZT09bnVsbD92b2lkIDA6ZSh7c3RhdHVzOlYuc3RhdHVzLHR5cGU6Vi50eXBlfSl9KSwkKGZ1bmN0aW9uKCl7dmFyIFY9Wi5idWlsZCgieGhyIixpKTt1dChjLFYsaS5kYXRhLGUpfSkpfWVsc2V7dmFyIHM9Wi5idWlsZCgieGhyIixpKTt1dChjLHMsaS5kYXRhLGUpfX1mdW5jdGlvbiBDMCgpe3RyeXtyZXR1cm4gd2luZG93LlJlcXVlc3QmJiJrZWVwYWxpdmUiaW4gbmV3IFJlcXVlc3QoImh0dHA6Ly9hIil9Y2F0Y2h7cmV0dXJuITF9fWZ1bmN0aW9uIHV0KGMsWix0LGkpe3ZhciBlPW5ldyBYTUxIdHRwUmVxdWVzdDtlLm9wZW4oIlBPU1QiLFosITApLHQgaW5zdGFuY2VvZiBCbG9iJiZlLnNldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtVHlwZSIsdC50eXBlKSxfbihjLGUsImxvYWRlbmQiLGZ1bmN0aW9uKCl7aT09bnVsbHx8aSh7c3RhdHVzOmUuc3RhdHVzfSl9LHtvbmNlOiEwfSksZS5zZW5kKHQpfWZ1bmN0aW9uIGl0KCl7dmFyIGM9dzAoKTtpZihjKXJldHVybntnZXRDYXBhYmlsaXRpZXM6ZnVuY3Rpb24oKXt2YXIgWjtyZXR1cm4gSlNPTi5wYXJzZSgoKFo9Yy5nZXRDYXBhYmlsaXRpZXMpPT09bnVsbHx8Wj09PXZvaWQgMD92b2lkIDA6Wi5jYWxsKGMpKXx8IltdIil9LGdldFByaXZhY3lMZXZlbDpmdW5jdGlvbigpe3ZhciBaO3JldHVybihaPWMuZ2V0UHJpdmFjeUxldmVsKT09PW51bGx8fFo9PT12b2lkIDA/dm9pZCAwOlouY2FsbChjKX0sZ2V0QWxsb3dlZFdlYlZpZXdIb3N0czpmdW5jdGlvbigpe3JldHVybiBKU09OLnBhcnNlKGMuZ2V0QWxsb3dlZFdlYlZpZXdIb3N0cygpKX0sc2VuZDpmdW5jdGlvbihaLHQsaSl7dmFyIGU9aT97aWQ6aX06dm9pZCAwO2Muc2VuZChKU09OLnN0cmluZ2lmeSh7ZXZlbnRUeXBlOlosZXZlbnQ6dCx2aWV3OmV9KSl9fX1mdW5jdGlvbiB2ZChjKXt2YXIgWjtjPT09dm9pZCAwJiYoYz0oWj1KbigpLmxvY2F0aW9uKT09PW51bGx8fFo9PT12b2lkIDA/dm9pZCAwOlouaG9zdG5hbWUpO3ZhciB0PWl0KCk7cmV0dXJuISF0JiZ0LmdldEFsbG93ZWRXZWJWaWV3SG9zdHMoKS5zb21lKGZ1bmN0aW9uKGkpe3JldHVybiBjPT09aXx8TGIoYywiLiIuY29uY2F0KGkpKX0pfWZ1bmN0aW9uIHcwKCl7cmV0dXJuIEpuKCkuRGF0YWRvZ0V2ZW50QnJpZGdlfXZhciBIZD17SElEREVOOiJ2aXNpYmlsaXR5X2hpZGRlbiIsVU5MT0FESU5HOiJiZWZvcmVfdW5sb2FkIixQQUdFSElERToicGFnZV9oaWRlIixGUk9aRU46InBhZ2VfZnJvemVuIn07ZnVuY3Rpb24gUDAoYyl7cmV0dXJuIG5ldyBzbChmdW5jdGlvbihaKXt2YXIgdD1adChjLHdpbmRvdyxbInZpc2liaWxpdHljaGFuZ2UiLCJmcmVlemUiXSxmdW5jdGlvbihlKXtlLnR5cGU9PT0idmlzaWJpbGl0eWNoYW5nZSImJmRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZT09PSJoaWRkZW4iP1oubm90aWZ5KHtyZWFzb246SGQuSElEREVOfSk6ZS50eXBlPT09ImZyZWV6ZSImJloubm90aWZ5KHtyZWFzb246SGQuRlJPWkVOfSl9LHtjYXB0dXJlOiEwfSkuc3RvcCxpPV9uKGMsd2luZG93LCJiZWZvcmV1bmxvYWQiLGZ1bmN0aW9uKCl7Wi5ub3RpZnkoe3JlYXNvbjpIZC5VTkxPQURJTkd9KX0pLnN0b3A7cmV0dXJuIGZ1bmN0aW9uKCl7dCgpLGkoKX19KX1mdW5jdGlvbiBCMChjKXtyZXR1cm4gYmMoR2MoSGQpLGMpfWZ1bmN0aW9uIFEwKGMpe3ZhciBaPWMuZW5jb2Rlcix0PWMucmVxdWVzdCxpPWMuZmx1c2hDb250cm9sbGVyLGU9Yy5tZXNzYWdlQnl0ZXNMaW1pdCxHPXt9LG89aS5mbHVzaE9ic2VydmFibGUuc3Vic2NyaWJlKGZ1bmN0aW9uKHgpe3JldHVybiBMKHgpfSk7ZnVuY3Rpb24gcyh4LEksdil7aS5ub3RpZnlCZWZvcmVBZGRNZXNzYWdlKEkpLHYhPT12b2lkIDA/KEdbdl09eCxpLm5vdGlmeUFmdGVyQWRkTWVzc2FnZSgpKTpaLndyaXRlKFouaXNFbXB0eT94OmAKYC5jb25jYXQoeCksZnVuY3Rpb24oeil7aS5ub3RpZnlBZnRlckFkZE1lc3NhZ2Uoei1JKX0pfWZ1bmN0aW9uIFYoeCl7cmV0dXJuIHghPT12b2lkIDAmJkdbeF0hPT12b2lkIDB9ZnVuY3Rpb24gaCh4KXt2YXIgST1HW3hdO2RlbGV0ZSBHW3hdO3ZhciB2PVouZXN0aW1hdGVFbmNvZGVkQnl0ZXNDb3VudChJKTtpLm5vdGlmeUFmdGVyUmVtb3ZlTWVzc2FnZSh2KX1mdW5jdGlvbiB5KHgsSSl7dmFyIHY9am4oeCksej1aLmVzdGltYXRlRW5jb2RlZEJ5dGVzQ291bnQodik7aWYoej49ZSl7Ymwud2FybigiRGlzY2FyZGVkIGEgbWVzc2FnZSB3aG9zZSBzaXplIHdhcyBiaWdnZXIgdGhhbiB0aGUgbWF4aW11bSBhbGxvd2VkIHNpemUgIi5jb25jYXQoZSwiS0IuICIpLmNvbmNhdChXZCwiICIpLmNvbmNhdChqdSwiLyN0ZWNobmljYWwtbGltaXRhdGlvbnMiKSk7cmV0dXJufVYoSSkmJmgoSSkscyh2LHosSSl9ZnVuY3Rpb24gTCh4KXt2YXIgST1HYyhHKS5qb2luKGAKYCk7Rz17fTt2YXIgdj1CMCh4LnJlYXNvbiksej12P3Quc2VuZE9uRXhpdDp0LnNlbmQ7aWYodiYmWi5pc0FzeW5jKXt2YXIgSD1aLmZpbmlzaFN5bmMoKTtILm91dHB1dEJ5dGVzQ291bnQmJnooQ2koSCkpO3ZhciBBPVtILnBlbmRpbmdEYXRhLEldLmZpbHRlcihCb29sZWFuKS5qb2luKGAKYCk7QSYmeih7ZGF0YTpBLGJ5dGVzQ291bnQ6TVooQSl9KX1lbHNlIEkmJloud3JpdGUoWi5pc0VtcHR5P0k6YApgLmNvbmNhdChJKSksWi5maW5pc2goZnVuY3Rpb24oWWwpe3ooQ2koWWwpKX0pfXJldHVybntmbHVzaENvbnRyb2xsZXI6aSxhZGQ6eSx1cHNlcnQ6eSxzdG9wOm8udW5zdWJzY3JpYmV9fWZ1bmN0aW9uIENpKGMpe3ZhciBaO3JldHVybiB0eXBlb2YgYy5vdXRwdXQ9PSJzdHJpbmciP1o9Yy5vdXRwdXQ6Wj1uZXcgQmxvYihbYy5vdXRwdXRdLHt0eXBlOiJ0ZXh0L3BsYWluIn0pLHtkYXRhOlosYnl0ZXNDb3VudDpjLm91dHB1dEJ5dGVzQ291bnQsZW5jb2Rpbmc6Yy5lbmNvZGluZ319ZnVuY3Rpb24gRTAoYyl7dmFyIFo9Yy5tZXNzYWdlc0xpbWl0LHQ9Yy5ieXRlc0xpbWl0LGk9Yy5kdXJhdGlvbkxpbWl0LGU9Yy5wYWdlRXhpdE9ic2VydmFibGUsRz1jLnNlc3Npb25FeHBpcmVPYnNlcnZhYmxlLG89ZS5zdWJzY3JpYmUoZnVuY3Rpb24oeil7cmV0dXJuIEwoei5yZWFzb24pfSkscz1HLnN1YnNjcmliZShmdW5jdGlvbigpe3JldHVybiBMKCJzZXNzaW9uX2V4cGlyZSIpfSksVj1uZXcgc2woZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oKXtvLnVuc3Vic2NyaWJlKCkscy51bnN1YnNjcmliZSgpfX0pLGg9MCx5PTA7ZnVuY3Rpb24gTCh6KXtpZih5IT09MCl7dmFyIEg9eSxBPWg7eT0wLGg9MCx2KCksVi5ub3RpZnkoe3JlYXNvbjp6LG1lc3NhZ2VzQ291bnQ6SCxieXRlc0NvdW50OkF9KX19dmFyIHg7ZnVuY3Rpb24gSSgpe3g9PT12b2lkIDAmJih4PVRjKGZ1bmN0aW9uKCl7TCgiZHVyYXRpb25fbGltaXQiKX0saSkpfWZ1bmN0aW9uIHYoKXskdSh4KSx4PXZvaWQgMH1yZXR1cm57Zmx1c2hPYnNlcnZhYmxlOlYsZ2V0IG1lc3NhZ2VzQ291bnQoKXtyZXR1cm4geX0sbm90aWZ5QmVmb3JlQWRkTWVzc2FnZTpmdW5jdGlvbih6KXtoK3o+PXQmJkwoImJ5dGVzX2xpbWl0IikseSs9MSxoKz16LEkoKX0sbm90aWZ5QWZ0ZXJBZGRNZXNzYWdlOmZ1bmN0aW9uKHope3o9PT12b2lkIDAmJih6PTApLGgrPXoseT49Wj9MKCJtZXNzYWdlc19saW1pdCIpOmg+PXQmJkwoImJ5dGVzX2xpbWl0Iil9LG5vdGlmeUFmdGVyUmVtb3ZlTWVzc2FnZTpmdW5jdGlvbih6KXtoLT16LHktPTEseT09PTAmJnYoKX19fWZ1bmN0aW9uIHdpKGMsWix0LGksZSxHLG8pe289PT12b2lkIDAmJihvPVEwKTt2YXIgcz1oKGMsWiksVj10JiZoKGMsdCk7ZnVuY3Rpb24gaCh5LEwpe3ZhciB4PUwuZW5kcG9pbnQsST1MLmVuY29kZXI7cmV0dXJuIG8oe2VuY29kZXI6SSxyZXF1ZXN0OmcwKHkseCx5LmJhdGNoQnl0ZXNMaW1pdCxpKSxmbHVzaENvbnRyb2xsZXI6RTAoe21lc3NhZ2VzTGltaXQ6eS5iYXRjaE1lc3NhZ2VzTGltaXQsYnl0ZXNMaW1pdDp5LmJhdGNoQnl0ZXNMaW1pdCxkdXJhdGlvbkxpbWl0OnkuZmx1c2hUaW1lb3V0LHBhZ2VFeGl0T2JzZXJ2YWJsZTplLHNlc3Npb25FeHBpcmVPYnNlcnZhYmxlOkd9KSxtZXNzYWdlQnl0ZXNMaW1pdDp5Lm1lc3NhZ2VCeXRlc0xpbWl0fSl9cmV0dXJue2ZsdXNoT2JzZXJ2YWJsZTpzLmZsdXNoQ29udHJvbGxlci5mbHVzaE9ic2VydmFibGUsYWRkOmZ1bmN0aW9uKHksTCl7TD09PXZvaWQgMCYmKEw9ITApLHMuYWRkKHkpLFYmJkwmJlYuYWRkKHQudHJhbnNmb3JtTWVzc2FnZT90LnRyYW5zZm9ybU1lc3NhZ2UoeSk6eSl9LHVwc2VydDpmdW5jdGlvbih5LEwpe3MudXBzZXJ0KHksTCksViYmVi51cHNlcnQodC50cmFuc2Zvcm1NZXNzYWdlP3QudHJhbnNmb3JtTWVzc2FnZSh5KTp5LEwpfSxzdG9wOmZ1bmN0aW9uKCl7cy5zdG9wKCksViYmVi5zdG9wKCl9fX1mdW5jdGlvbiBrZCgpe3ZhciBjPSIiLFo9MDtyZXR1cm57aXNBc3luYzohMSxnZXQgaXNFbXB0eSgpe3JldHVybiFjfSx3cml0ZTpmdW5jdGlvbih0LGkpe3ZhciBlPU1aKHQpO1orPWUsYys9dCxpJiZpKGUpfSxmaW5pc2g6ZnVuY3Rpb24odCl7dCh0aGlzLmZpbmlzaFN5bmMoKSl9LGZpbmlzaFN5bmM6ZnVuY3Rpb24oKXt2YXIgdD17b3V0cHV0OmMsb3V0cHV0Qnl0ZXNDb3VudDpaLHJhd0J5dGVzQ291bnQ6WixwZW5kaW5nRGF0YToiIn07cmV0dXJuIGM9IiIsWj0wLHR9LGVzdGltYXRlRW5jb2RlZEJ5dGVzQ291bnQ6ZnVuY3Rpb24odCl7cmV0dXJuIHQubGVuZ3RofX19dmFyIGowPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYygpe3RoaXMuY2FsbGJhY2tzPXt9fXJldHVybiBjLnByb3RvdHlwZS5ub3RpZnk9ZnVuY3Rpb24oWix0KXt2YXIgaT10aGlzLmNhbGxiYWNrc1taXTtpJiZpLmZvckVhY2goZnVuY3Rpb24oZSl7cmV0dXJuIGUodCl9KX0sYy5wcm90b3R5cGUuc3Vic2NyaWJlPWZ1bmN0aW9uKFosdCl7dmFyIGk9dGhpcztyZXR1cm4gdGhpcy5jYWxsYmFja3NbWl18fCh0aGlzLmNhbGxiYWNrc1taXT1bXSksdGhpcy5jYWxsYmFja3NbWl0ucHVzaCh0KSx7dW5zdWJzY3JpYmU6ZnVuY3Rpb24oKXtpLmNhbGxiYWNrc1taXT1pLmNhbGxiYWNrc1taXS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIHQhPT1lfSl9fX0sY30oKTtmdW5jdGlvbiBEMChjLFosdCl7dmFyIGk9MCxlPSExO3JldHVybntpc0xpbWl0UmVhY2hlZDpmdW5jdGlvbigpe2lmKGk9PT0wJiZUYyhmdW5jdGlvbigpe2k9MH0sd24pLGkrPTEsaTw9Wnx8ZSlyZXR1cm4gZT0hMSwhMTtpZihpPT09WisxKXtlPSEwO3RyeXt0KHttZXNzYWdlOiJSZWFjaGVkIG1heCBudW1iZXIgb2YgIi5jb25jYXQoYywicyBieSBtaW51dGU6ICIpLmNvbmNhdChaKSxzb3VyY2U6TmwuQUdFTlQsc3RhcnRDbG9ja3M6Zm4oKX0pfWZpbmFsbHl7ZT0hMX19cmV0dXJuITB9fX12YXIgZXQsbXQ9bmV3IFdlYWtNYXA7ZnVuY3Rpb24gTzAoYyl7cmV0dXJuIGV0fHwoZXQ9QTAoYykpLGV0fWZ1bmN0aW9uIEEwKGMpe3JldHVybiBuZXcgc2woZnVuY3Rpb24oWil7dmFyIHQ9QW4oWE1MSHR0cFJlcXVlc3QucHJvdG90eXBlLCJvcGVuIixfMCkuc3RvcCxpPUFuKFhNTEh0dHBSZXF1ZXN0LnByb3RvdHlwZSwic2VuZCIsZnVuY3Rpb24oRyl7cTAoRyxjLFopfSx7Y29tcHV0ZUhhbmRsaW5nU3RhY2s6ITB9KS5zdG9wLGU9QW4oWE1MSHR0cFJlcXVlc3QucHJvdG90eXBlLCJhYm9ydCIsJDApLnN0b3A7cmV0dXJuIGZ1bmN0aW9uKCl7dCgpLGkoKSxlKCl9fSl9ZnVuY3Rpb24gXzAoYyl7dmFyIFo9Yy50YXJnZXQsdD1jLnBhcmFtZXRlcnMsaT10WzBdLGU9dFsxXTttdC5zZXQoWix7c3RhdGU6Im9wZW4iLG1ldGhvZDpTdHJpbmcoaSkudG9VcHBlckNhc2UoKSx1cmw6cVooU3RyaW5nKGUpKX0pfWZ1bmN0aW9uIHEwKGMsWix0KXt2YXIgaT1jLnRhcmdldCxlPWMuaGFuZGxpbmdTdGFjayxHPW10LmdldChpKTtpZihHKXt2YXIgbz1HO28uc3RhdGU9InN0YXJ0IixvLnN0YXJ0Q2xvY2tzPWZuKCksby5pc0Fib3J0ZWQ9ITEsby54aHI9aSxvLmhhbmRsaW5nU3RhY2s9ZTt2YXIgcz0hMSxWPUFuKGksIm9ucmVhZHlzdGF0ZWNoYW5nZSIsZnVuY3Rpb24oKXtpLnJlYWR5U3RhdGU9PT1YTUxIdHRwUmVxdWVzdC5ET05FJiZoKCl9KS5zdG9wLGg9ZnVuY3Rpb24oKXtpZih5KCksVigpLCFzKXtzPSEwO3ZhciBMPUc7TC5zdGF0ZT0iY29tcGxldGUiLEwuZHVyYXRpb249V2Ioby5zdGFydENsb2Nrcy50aW1lU3RhbXAseG4oKSksTC5zdGF0dXM9aS5zdGF0dXMsdC5ub3RpZnkoWWIoTCkpfX0seT1fbihaLGksImxvYWRlbmQiLGgpLnN0b3A7dC5ub3RpZnkobyl9fWZ1bmN0aW9uICQwKGMpe3ZhciBaPWMudGFyZ2V0LHQ9bXQuZ2V0KFopO3QmJih0LmlzQWJvcnRlZD0hMCl9dmFyIGF0O2Z1bmN0aW9uIFBpKCl7cmV0dXJuIGF0fHwoYXQ9bG8oKSksYXR9ZnVuY3Rpb24gbG8oKXtyZXR1cm4gbmV3IHNsKGZ1bmN0aW9uKGMpe2lmKHdpbmRvdy5mZXRjaCl7dmFyIFo9QW4od2luZG93LCJmZXRjaCIsZnVuY3Rpb24odCl7cmV0dXJuIG5vKHQsYyl9LHtjb21wdXRlSGFuZGxpbmdTdGFjazohMH0pLnN0b3A7cmV0dXJuIFp9fSl9ZnVuY3Rpb24gbm8oYyxaKXt2YXIgdD1jLnBhcmFtZXRlcnMsaT1jLm9uUG9zdENhbGwsZT1jLmhhbmRsaW5nU3RhY2ssRz10WzBdLG89dFsxXSxzPW8mJm8ubWV0aG9kO3M9PT12b2lkIDAmJkcgaW5zdGFuY2VvZiBSZXF1ZXN0JiYocz1HLm1ldGhvZCk7dmFyIFY9cyE9PXZvaWQgMD9TdHJpbmcocykudG9VcHBlckNhc2UoKToiR0VUIixoPUcgaW5zdGFuY2VvZiBSZXF1ZXN0P0cudXJsOnFaKFN0cmluZyhHKSkseT1mbigpLEw9e3N0YXRlOiJzdGFydCIsaW5pdDpvLGlucHV0OkcsbWV0aG9kOlYsc3RhcnRDbG9ja3M6eSx1cmw6aCxoYW5kbGluZ1N0YWNrOmV9O1oubm90aWZ5KEwpLHRbMF09TC5pbnB1dCx0WzFdPUwuaW5pdCxpKGZ1bmN0aW9uKHgpe3JldHVybiBjbyhaLHgsTCl9KX1mdW5jdGlvbiBjbyhjLFosdCl7dmFyIGk9dDtmdW5jdGlvbiBlKEcpe2kuc3RhdGU9InJlc29sdmUiLFdsKGksRyksYy5ub3RpZnkoaSl9Wi50aGVuKCQoZnVuY3Rpb24oRyl7ZSh7cmVzcG9uc2U6RyxyZXNwb25zZVR5cGU6Ry50eXBlLHN0YXR1czpHLnN0YXR1cyxpc0Fib3J0ZWQ6ITF9KX0pLCQoZnVuY3Rpb24oRyl7dmFyIG8scztlKHtzdGF0dXM6MCxpc0Fib3J0ZWQ6KChzPShvPWkuaW5pdCk9PT1udWxsfHxvPT09dm9pZCAwP3ZvaWQgMDpvLnNpZ25hbCk9PT1udWxsfHxzPT09dm9pZCAwP3ZvaWQgMDpzLmFib3J0ZWQpfHxHIGluc3RhbmNlb2YgRE9NRXhjZXB0aW9uJiZHLmNvZGU9PT1ET01FeGNlcHRpb24uQUJPUlRfRVJSLGVycm9yOkd9KX0pKX12YXIgYnQ9e307ZnVuY3Rpb24gWm8oYyl7dmFyIFo9Yy5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIGJ0W3RdfHwoYnRbdF09dG8odCkpLGJ0W3RdfSk7cmV0dXJuIG5pLmFwcGx5KHZvaWQgMCxaKX1mdW5jdGlvbiB0byhjKXtyZXR1cm4gbmV3IHNsKGZ1bmN0aW9uKFope3ZhciB0PWRuW2NdO3JldHVybiBkbltjXT1mdW5jdGlvbigpe2Zvcih2YXIgaT1bXSxlPTA7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKylpW2VdPWFyZ3VtZW50c1tlXTt0LmFwcGx5KGNvbnNvbGUsaSk7dmFyIEc9S2QoKTtNYyhmdW5jdGlvbigpe1oubm90aWZ5KHVvKGksYyxHKSl9KX0sZnVuY3Rpb24oKXtkbltjXT10fX0pfWZ1bmN0aW9uIHVvKGMsWix0KXt2YXIgaT1jLm1hcChmdW5jdGlvbihvKXtyZXR1cm4gaW8obyl9KS5qb2luKCIgIiksZTtpZihaPT09bWwuZXJyb3Ipe3ZhciBHPXliKGMsZnVuY3Rpb24obyl7cmV0dXJuIG8gaW5zdGFuY2VvZiBFcnJvcn0pO2U9e3N0YWNrOkc/T24oR24oRykpOnZvaWQgMCxmaW5nZXJwcmludDpWaShHKSxjYXVzZXM6Rz95aShHLCJjb25zb2xlIik6dm9pZCAwLHN0YXJ0Q2xvY2tzOmZuKCksbWVzc2FnZTppLHNvdXJjZTpObC5DT05TT0xFLGhhbmRsaW5nOiJoYW5kbGVkIixoYW5kbGluZ1N0YWNrOnR9fXJldHVybnthcGk6WixtZXNzYWdlOmksZXJyb3I6ZSxoYW5kbGluZ1N0YWNrOnR9fWZ1bmN0aW9uIGlvKGMpe3JldHVybiB0eXBlb2YgYz09InN0cmluZyI/b24oYyk6YyBpbnN0YW5jZW9mIEVycm9yP1dpKEduKGMpKTpqbihvbihjKSx2b2lkIDAsMil9ZnVuY3Rpb24gR3QoYyl7dmFyIFo9e30sdD1uZXcgc2wsaT17Z2V0Q29udGV4dDpmdW5jdGlvbigpe3JldHVybiB4aShaKX0sc2V0Q29udGV4dDpmdW5jdGlvbihlKXt0dChlKT09PSJvYmplY3QiPyhaPW9uKGUpLGMmJmMudXBkYXRlQ3VzdG9tZXJEYXRhKFopKTppLmNsZWFyQ29udGV4dCgpLHQubm90aWZ5KCl9LHNldENvbnRleHRQcm9wZXJ0eTpmdW5jdGlvbihlLEcpe1pbZV09b24oRyksYyYmYy51cGRhdGVDdXN0b21lckRhdGEoWiksdC5ub3RpZnkoKX0scmVtb3ZlQ29udGV4dFByb3BlcnR5OmZ1bmN0aW9uKGUpe2RlbGV0ZSBaW2VdLGMmJmMudXBkYXRlQ3VzdG9tZXJEYXRhKFopLHQubm90aWZ5KCl9LGNsZWFyQ29udGV4dDpmdW5jdGlvbigpe1o9e30sYyYmYy5yZXNldEN1c3RvbWVyRGF0YSgpLHQubm90aWZ5KCl9LGNoYW5nZU9ic2VydmFibGU6dH07cmV0dXJuIGl9dmFyIGVvPSJfZGRfYyIsbW89W107ZnVuY3Rpb24gQmkoYyxaLHQsaSl7dmFyIGU9YW8odCxpKTttby5wdXNoKF9uKGMsd2luZG93LCJzdG9yYWdlIixmdW5jdGlvbihWKXt2YXIgaD1WLmtleTtlPT09aCYmRygpfSkpLFouY2hhbmdlT2JzZXJ2YWJsZS5zdWJzY3JpYmUobyksWi5zZXRDb250ZXh0KFdjKHMoKSxaLmdldENvbnRleHQoKSkpO2Z1bmN0aW9uIEcoKXtaLnNldENvbnRleHQocygpKX1mdW5jdGlvbiBvKCl7bG9jYWxTdG9yYWdlLnNldEl0ZW0oZSxKU09OLnN0cmluZ2lmeShaLmdldENvbnRleHQoKSkpfWZ1bmN0aW9uIHMoKXt2YXIgVj1sb2NhbFN0b3JhZ2UuZ2V0SXRlbShlKTtyZXR1cm4gViE9PW51bGw/SlNPTi5wYXJzZShWKTp7fX19ZnVuY3Rpb24gYW8oYyxaKXtyZXR1cm4iIi5jb25jYXQoZW8sIl8iKS5jb25jYXQoYywiXyIpLmNvbmNhdChaKX12YXIgYm89MypibixHbz0xNipibixvbz0yMDA7ZnVuY3Rpb24gWG8oYyl7Yz09PXZvaWQgMCYmKGM9Mik7dmFyIFo9bmV3IE1hcCx0PSExO2Z1bmN0aW9uIGkoZSl7aWYoZT09PXZvaWQgMCYmKGU9MCksISh0fHxjPT09MCkpe3ZhciBHPWM9PT0yP2JvOkdvLG89ZTtaLmZvckVhY2goZnVuY3Rpb24ocyl7bys9cy5nZXRCeXRlc0NvdW50KCl9KSxvPkcmJihzbyhHKSx0PSEwKX19cmV0dXJue2NyZWF0ZURldGFjaGVkVHJhY2tlcjpmdW5jdGlvbigpe3ZhciBlPVFpKGZ1bmN0aW9uKCl7cmV0dXJuIGkoZS5nZXRCeXRlc0NvdW50KCkpfSk7cmV0dXJuIGV9LGdldE9yQ3JlYXRlVHJhY2tlcjpmdW5jdGlvbihlKXtyZXR1cm4gWi5oYXMoZSl8fFouc2V0KGUsUWkoaSkpLFouZ2V0KGUpfSxzZXRDb21wcmVzc2lvblN0YXR1czpmdW5jdGlvbihlKXtjPT09MCYmKGM9ZSxpKCkpfSxnZXRDb21wcmVzc2lvblN0YXR1czpmdW5jdGlvbigpe3JldHVybiBjfSxzdG9wOmZ1bmN0aW9uKCl7Wi5mb3JFYWNoKGZ1bmN0aW9uKGUpe3JldHVybiBlLnN0b3AoKX0pLFouY2xlYXIoKX19fWZ1bmN0aW9uIFFpKGMpe3ZhciBaPTAsdD1jaShmdW5jdGlvbihvKXtaPU1aKGpuKG8pKSxjKCl9LG9vKSxpPXQudGhyb3R0bGVkLGU9dC5jYW5jZWwsRz1mdW5jdGlvbigpe2UoKSxaPTB9O3JldHVybnt1cGRhdGVDdXN0b21lckRhdGE6ZnVuY3Rpb24obyl7d1oobyk/RygpOmkobyl9LHJlc2V0Q3VzdG9tZXJEYXRhOkcsZ2V0Qnl0ZXNDb3VudDpmdW5jdGlvbigpe3JldHVybiBafSxzdG9wOmZ1bmN0aW9uKCl7ZSgpfX19ZnVuY3Rpb24gc28oYyl7Ymwud2FybigiQ3VzdG9tZXIgZGF0YSBleGNlZWRzIHRoZSByZWNvbW1lbmRlZCAiLmNvbmNhdChjL2JuLCJLaUIgdGhyZXNob2xkLiAiKS5jb25jYXQoV2QsIiAiKS5jb25jYXQoanUsIi8jY3VzdG9tZXItZGF0YS1leGNlZWRzLXRoZS1yZWNvbW1lbmRlZC10aHJlc2hvbGQtd2FybmluZyIpKX1mdW5jdGlvbiBwbyhjLFosdCl7dmFyIGk9Yy5nZXRSZWFkZXIoKSxlPVtdLEc9MDtvKCk7ZnVuY3Rpb24gbygpe2kucmVhZCgpLnRoZW4oJChmdW5jdGlvbihWKXtpZihWLmRvbmUpe3MoKTtyZXR1cm59ZS5wdXNoKFYudmFsdWUpLEcrPVYudmFsdWUubGVuZ3RoLEc+dC5ieXRlc0xpbWl0P3MoKTpvKCl9KSwkKGZ1bmN0aW9uKFYpe3JldHVybiBaKFYpfSkpfWZ1bmN0aW9uIHMoKXtpLmNhbmNlbCgpLmNhdGNoKEluKTt2YXIgVixoO3t2YXIgeTtpZihlLmxlbmd0aD09PTEpeT1lWzBdO2Vsc2V7eT1uZXcgVWludDhBcnJheShHKTt2YXIgTD0wO2UuZm9yRWFjaChmdW5jdGlvbih4KXt5LnNldCh4LEwpLEwrPXgubGVuZ3RofSl9Vj15LnNsaWNlKDAsdC5ieXRlc0xpbWl0KSxoPXkubGVuZ3RoPnQuYnl0ZXNMaW1pdH1aKHZvaWQgMCxWLGgpfX12YXIgV289ImRhdGFkb2ctc3ludGhldGljcy1wdWJsaWMtaWQiLHJvPSJkYXRhZG9nLXN5bnRoZXRpY3MtcmVzdWx0LWlkIixobz0iZGF0YWRvZy1zeW50aGV0aWNzLWluamVjdHMtcnVtIjtmdW5jdGlvbiBFaSgpe3JldHVybiEhKHdpbmRvdy5fREFUQURPR19TWU5USEVUSUNTX0lOSkVDVFNfUlVNfHxCbihobykpfWZ1bmN0aW9uIFZvKCl7dmFyIGM9d2luZG93Ll9EQVRBRE9HX1NZTlRIRVRJQ1NfUFVCTElDX0lEfHxCbihXbyk7cmV0dXJuIHR5cGVvZiBjPT0ic3RyaW5nIj9jOnZvaWQgMH1mdW5jdGlvbiB5bygpe3ZhciBjPXdpbmRvdy5fREFUQURPR19TWU5USEVUSUNTX1JFU1VMVF9JRHx8Qm4ocm8pO3JldHVybiB0eXBlb2YgYz09InN0cmluZyI/Yzp2b2lkIDB9ZnVuY3Rpb24gamkoYyl7dmFyIFo9V2woe30sYyksdD1bImlkIiwibmFtZSIsImVtYWlsIl07cmV0dXJuIHQuZm9yRWFjaChmdW5jdGlvbihpKXtpIGluIFomJihaW2ldPVN0cmluZyhaW2ldKSl9KSxafWZ1bmN0aW9uIFJvKGMpe3ZhciBaPXR0KGMpPT09Im9iamVjdCI7cmV0dXJuIFp8fGJsLmVycm9yKCJVbnN1cHBvcnRlZCB1c2VyOiIsYyksWn12YXIgRGw7ZnVuY3Rpb24gZ2QoYyxaLHQpe3ZhciBpPXQuZ2V0SGFuZGxlcigpLGU9QXJyYXkuaXNBcnJheShpKT9pOltpXTtyZXR1cm4gRGlbY10+PURpW3QuZ2V0TGV2ZWwoKV0mJmJjKGUsWil9dmFyIHc9e29rOiJvayIsZGVidWc6ImRlYnVnIixpbmZvOiJpbmZvIixub3RpY2U6Im5vdGljZSIsd2Fybjoid2FybiIsZXJyb3I6ImVycm9yIixjcml0aWNhbDoiY3JpdGljYWwiLGFsZXJ0OiJhbGVydCIsZW1lcmc6ImVtZXJnIn0sRGk9KERsPXt9LERsW3cub2tdPTAsRGxbdy5kZWJ1Z109MSxEbFt3LmluZm9dPTIsRGxbdy5ub3RpY2VdPTQsRGxbdy53YXJuXT01LERsW3cuZXJyb3JdPTYsRGxbdy5jcml0aWNhbF09NyxEbFt3LmFsZXJ0XT04LERsW3cuZW1lcmddPTksRGwpO2Z1bmN0aW9uIFVkKGMsWil7dmFyIHQ9Wj09PXZvaWQgMD97fTpaLGk9dC5pbmNsdWRlTWVzc2FnZSxlPWk9PT12b2lkIDA/ITE6aTtyZXR1cm57c3RhY2s6Yy5zdGFjayxraW5kOmMudHlwZSxtZXNzYWdlOmU/Yy5tZXNzYWdlOnZvaWQgMCxjYXVzZXM6Yy5jYXVzZXMsZmluZ2VycHJpbnQ6Yy5maW5nZXJwcmludCxoYW5kbGluZzpjLmhhbmRsaW5nfX12YXIgTG89ZnVuY3Rpb24oYyxaLHQsaSl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aCxHPWU8Mz9aOmk9PT1udWxsP2k9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihaLHQpOmksbztpZih0eXBlb2YgUmVmbGVjdD09Im9iamVjdCImJnR5cGVvZiBSZWZsZWN0LmRlY29yYXRlPT0iZnVuY3Rpb24iKUc9UmVmbGVjdC5kZWNvcmF0ZShjLFosdCxpKTtlbHNlIGZvcih2YXIgcz1jLmxlbmd0aC0xO3M+PTA7cy0tKShvPWNbc10pJiYoRz0oZTwzP28oRyk6ZT4zP28oWix0LEcpOm8oWix0KSl8fEcpO3JldHVybiBlPjMmJkcmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShaLHQsRyksR30sQmM9e2NvbnNvbGU6ImNvbnNvbGUiLGh0dHA6Imh0dHAiLHNpbGVudDoic2lsZW50In0sWW89T2JqZWN0LmtleXModyksT2w9ZnVuY3Rpb24oKXtmdW5jdGlvbiBjKFosdCxpLGUsRyxvKXtlPT09dm9pZCAwJiYoZT1CYy5odHRwKSxHPT09dm9pZCAwJiYoRz13LmRlYnVnKSxvPT09dm9pZCAwJiYobz17fSksdGhpcy5oYW5kbGVMb2dTdHJhdGVneT1aLHRoaXMuaGFuZGxlclR5cGU9ZSx0aGlzLmxldmVsPUcsdGhpcy5jb250ZXh0TWFuYWdlcj1HdCh0KSx0aGlzLmNvbnRleHRNYW5hZ2VyLnNldENvbnRleHQobyksaSYmdGhpcy5jb250ZXh0TWFuYWdlci5zZXRDb250ZXh0UHJvcGVydHkoImxvZ2dlciIse25hbWU6aX0pfXJldHVybiBjLnByb3RvdHlwZS5sb2dJbXBsZW1lbnRhdGlvbj1mdW5jdGlvbihaLHQsaSxlLEcpe2k9PT12b2lkIDAmJihpPXcuaW5mbyk7dmFyIG89b24odCkscztpZihlIT1udWxsKXt2YXIgVj1oaSh7c3RhY2tUcmFjZTplIGluc3RhbmNlb2YgRXJyb3I/R24oZSk6dm9pZCAwLG9yaWdpbmFsRXJyb3I6ZSxub25FcnJvclByZWZpeDoiUHJvdmlkZWQiLHNvdXJjZTpObC5MT0dHRVIsaGFuZGxpbmc6ImhhbmRsZWQiLHN0YXJ0Q2xvY2tzOmZuKCl9KTtzPVdjKHtlcnJvcjpVZChWLHtpbmNsdWRlTWVzc2FnZTohMH0pfSxvKX1lbHNlIHM9bzt0aGlzLmhhbmRsZUxvZ1N0cmF0ZWd5KHttZXNzYWdlOm9uKFopLGNvbnRleHQ6cyxzdGF0dXM6aX0sdGhpcyxHKX0sYy5wcm90b3R5cGUubG9nPWZ1bmN0aW9uKFosdCxpLGUpe2k9PT12b2lkIDAmJihpPXcuaW5mbyk7dmFyIEc7Z2QoaSxCYy5odHRwLHRoaXMpJiYoRz1LZCgpKSx0aGlzLmxvZ0ltcGxlbWVudGF0aW9uKFosdCxpLGUsRyl9LGMucHJvdG90eXBlLnNldENvbnRleHQ9ZnVuY3Rpb24oWil7dGhpcy5jb250ZXh0TWFuYWdlci5zZXRDb250ZXh0KFopfSxjLnByb3RvdHlwZS5nZXRDb250ZXh0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29udGV4dE1hbmFnZXIuZ2V0Q29udGV4dCgpfSxjLnByb3RvdHlwZS5zZXRDb250ZXh0UHJvcGVydHk9ZnVuY3Rpb24oWix0KXt0aGlzLmNvbnRleHRNYW5hZ2VyLnNldENvbnRleHRQcm9wZXJ0eShaLHQpfSxjLnByb3RvdHlwZS5yZW1vdmVDb250ZXh0UHJvcGVydHk9ZnVuY3Rpb24oWil7dGhpcy5jb250ZXh0TWFuYWdlci5yZW1vdmVDb250ZXh0UHJvcGVydHkoWil9LGMucHJvdG90eXBlLmNsZWFyQ29udGV4dD1mdW5jdGlvbigpe3RoaXMuY29udGV4dE1hbmFnZXIuY2xlYXJDb250ZXh0KCl9LGMucHJvdG90eXBlLnNldEhhbmRsZXI9ZnVuY3Rpb24oWil7dGhpcy5oYW5kbGVyVHlwZT1afSxjLnByb3RvdHlwZS5nZXRIYW5kbGVyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaGFuZGxlclR5cGV9LGMucHJvdG90eXBlLnNldExldmVsPWZ1bmN0aW9uKFope3RoaXMubGV2ZWw9Wn0sYy5wcm90b3R5cGUuZ2V0TGV2ZWw9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sZXZlbH0sTG8oW0piXSxjLnByb3RvdHlwZSwibG9nSW1wbGVtZW50YXRpb24iLG51bGwpLGN9KCk7T2wucHJvdG90eXBlLm9rPVhuKHcub2spLE9sLnByb3RvdHlwZS5kZWJ1Zz1Ybih3LmRlYnVnKSxPbC5wcm90b3R5cGUuaW5mbz1Ybih3LmluZm8pLE9sLnByb3RvdHlwZS5ub3RpY2U9WG4ody5ub3RpY2UpLE9sLnByb3RvdHlwZS53YXJuPVhuKHcud2FybiksT2wucHJvdG90eXBlLmVycm9yPVhuKHcuZXJyb3IpLE9sLnByb3RvdHlwZS5jcml0aWNhbD1Ybih3LmNyaXRpY2FsKSxPbC5wcm90b3R5cGUuYWxlcnQ9WG4ody5hbGVydCksT2wucHJvdG90eXBlLmVtZXJnPVhuKHcuZW1lcmcpO2Z1bmN0aW9uIFhuKGMpe3JldHVybiBmdW5jdGlvbihaLHQsaSl7dmFyIGU7Z2QoYyxCYy5odHRwLHRoaXMpJiYoZT1LZCgpKSx0aGlzLmxvZ0ltcGxlbWVudGF0aW9uKFosdCxjLGksZSl9fWZ1bmN0aW9uIFNvKGMsWil7cmV0dXJue3ZpZXc6e3JlZmVycmVyOmRvY3VtZW50LnJlZmVycmVyLHVybDp3aW5kb3cubG9jYXRpb24uaHJlZn0sY29udGV4dDpjLmdldENvbnRleHQoKSx1c2VyOlouZ2V0Q29udGV4dCgpfX12YXIgeG89MzIqYm47ZnVuY3Rpb24gZm8oYyl7Yy51c2VQY2lJbnRha2U9PT0hMCYmYy5zaXRlJiZjLnNpdGUhPT0iZGF0YWRvZ2hxLmNvbSImJmJsLndhcm4oIlBDSSBjb21wbGlhbmNlIGZvciBMb2dzIGlzIG9ubHkgYXZhaWxhYmxlIGZvciBEYXRhZG9nIG9yZ2FuaXphdGlvbnMgaW4gdGhlIFVTMSBzaXRlLiBEZWZhdWx0IGludGFrZSB3aWxsIGJlIHVzZWQuIik7dmFyIFo9U0coYyksdD1PaShjLmZvcndhcmRDb25zb2xlTG9ncyxHYyhtbCksIkZvcndhcmQgQ29uc29sZSBMb2dzIiksaT1PaShjLmZvcndhcmRSZXBvcnRzLEdjKEZkKSwiRm9yd2FyZCBSZXBvcnRzIik7aWYoISghWnx8IXR8fCFpKSlyZXR1cm4gYy5mb3J3YXJkRXJyb3JzVG9Mb2dzJiYhYmModCxtbC5lcnJvcikmJnQucHVzaChtbC5lcnJvciksV2woe2ZvcndhcmRFcnJvcnNUb0xvZ3M6Yy5mb3J3YXJkRXJyb3JzVG9Mb2dzIT09ITEsZm9yd2FyZENvbnNvbGVMb2dzOnQsZm9yd2FyZFJlcG9ydHM6aSxyZXF1ZXN0RXJyb3JSZXNwb25zZUxlbmd0aExpbWl0OnhvLHNlbmRMb2dzQWZ0ZXJTZXNzaW9uRXhwaXJhdGlvbjohIWMuc2VuZExvZ3NBZnRlclNlc3Npb25FeHBpcmF0aW9ufSxaKX1mdW5jdGlvbiBPaShjLFosdCl7aWYoYz09PXZvaWQgMClyZXR1cm5bXTtpZighKGM9PT0iYWxsInx8QXJyYXkuaXNBcnJheShjKSYmYy5ldmVyeShmdW5jdGlvbihpKXtyZXR1cm4gYmMoWixpKX0pKSl7YmwuZXJyb3IoIiIuY29uY2F0KHQsJyBzaG91bGQgYmUgImFsbCIgb3IgYW4gYXJyYXkgd2l0aCBhbGxvd2VkIHZhbHVlcyAiJykuY29uY2F0KFouam9pbignIiwgIicpLCciJykpO3JldHVybn1yZXR1cm4gYz09PSJhbGwiP1o6YTAoYyl9ZnVuY3Rpb24gSm8oYyl7dmFyIFo9eEcoYyk7cmV0dXJuIFdsKHtmb3J3YXJkX2Vycm9yc190b19sb2dzOmMuZm9yd2FyZEVycm9yc1RvTG9ncyxmb3J3YXJkX2NvbnNvbGVfbG9nczpjLmZvcndhcmRDb25zb2xlTG9ncyxmb3J3YXJkX3JlcG9ydHM6Yy5mb3J3YXJkUmVwb3J0cyx1c2VfcGNpX2ludGFrZTpjLnVzZVBjaUludGFrZSxzZW5kX2xvZ3NfYWZ0ZXJfc2Vzc2lvbl9leHBpcmF0aW9uOmMuc2VuZExvZ3NBZnRlclNlc3Npb25FeHBpcmF0aW9ufSxaKX1mdW5jdGlvbiBJbyhjLFosdCl7dmFyIGk9SmkoKSxlLEcsbz1aLm9ic2VydmFibGUuc3Vic2NyaWJlKHMpO2Z1bmN0aW9uIHMoKXtpZighKCFHfHwhZXx8IVouaXNHcmFudGVkKCkpKXtvLnVuc3Vic2NyaWJlKCk7dmFyIFY9dChlLEcpO2kuZHJhaW4oVil9fXJldHVybntpbml0OmZ1bmN0aW9uKFYpe2lmKCFWKXtibC5lcnJvcigiTWlzc2luZyBjb25maWd1cmF0aW9uIik7cmV0dXJufWlmKGZHKFYuZW5hYmxlRXhwZXJpbWVudGFsRmVhdHVyZXMpLHZkKCkmJihWPUtvKFYpKSxlPVYsRyl7UmkoIkREX0xPR1MiLFYpO3JldHVybn12YXIgaD1mbyhWKTtoJiYoRz1oLFBpKCkuc3Vic2NyaWJlKEluKSxaLnRyeVRvSW5pdChoLnRyYWNraW5nQ29uc2VudCkscygpKX0sZ2V0IGluaXRDb25maWd1cmF0aW9uKCl7cmV0dXJuIGV9LGdldEludGVybmFsQ29udGV4dDpJbixoYW5kbGVMb2c6ZnVuY3Rpb24oVixoLHksTCx4KXtMPT09dm9pZCAwJiYoTD1jKCkpLHg9PT12b2lkIDAmJih4PXhuKCkpLGkuYWRkKGZ1bmN0aW9uKEkpe3JldHVybiBJLmhhbmRsZUxvZyhWLGgseSxMLHgpfSl9fX1mdW5jdGlvbiBLbyhjKXtyZXR1cm4gV2woe30sYyx7Y2xpZW50VG9rZW46ImVtcHR5In0pfXZhciBBaT0ibG9ncyI7ZnVuY3Rpb24gRm8oYyl7dmFyIFo9WG8oKSx0PUd0KFouZ2V0T3JDcmVhdGVUcmFja2VyKDIpKSxpPUd0KFouZ2V0T3JDcmVhdGVUcmFja2VyKDEpKSxlPWlHKCk7ZnVuY3Rpb24gRygpe3JldHVybiBTbyh0LGkpfXZhciBvPUlvKEcsZSxmdW5jdGlvbihoLHkpe2guc3RvcmVDb250ZXh0c0Fjcm9zc1BhZ2VzJiYoQmkoeSx0LEFpLDIpLEJpKHksaSxBaSwxKSk7dmFyIEw9YyhoLHksRyxlKTtyZXR1cm4gbz1ObyhoLEwpLEx9KSxzPXt9LFY9bmV3IE9sKGZ1bmN0aW9uKCl7Zm9yKHZhciBoPVtdLHk9MDt5PGFyZ3VtZW50cy5sZW5ndGg7eSsrKWhbeV09YXJndW1lbnRzW3ldO3JldHVybiBvLmhhbmRsZUxvZy5hcHBseShvLGgpfSxaLmNyZWF0ZURldGFjaGVkVHJhY2tlcigpKTtyZXR1cm4gbjAoe2xvZ2dlcjpWLGluaXQ6JChmdW5jdGlvbihoKXtyZXR1cm4gby5pbml0KGgpfSksc2V0VHJhY2tpbmdDb25zZW50OiQoZnVuY3Rpb24oaCl7ZS51cGRhdGUoaCksaDAoe2ZlYXR1cmU6InNldC10cmFja2luZy1jb25zZW50Iix0cmFja2luZ19jb25zZW50Omh9KX0pLGdldEdsb2JhbENvbnRleHQ6JChmdW5jdGlvbigpe3JldHVybiB0LmdldENvbnRleHQoKX0pLHNldEdsb2JhbENvbnRleHQ6JChmdW5jdGlvbihoKXtyZXR1cm4gdC5zZXRDb250ZXh0KGgpfSksc2V0R2xvYmFsQ29udGV4dFByb3BlcnR5OiQoZnVuY3Rpb24oaCx5KXtyZXR1cm4gdC5zZXRDb250ZXh0UHJvcGVydHkoaCx5KX0pLHJlbW92ZUdsb2JhbENvbnRleHRQcm9wZXJ0eTokKGZ1bmN0aW9uKGgpe3JldHVybiB0LnJlbW92ZUNvbnRleHRQcm9wZXJ0eShoKX0pLGNsZWFyR2xvYmFsQ29udGV4dDokKGZ1bmN0aW9uKCl7cmV0dXJuIHQuY2xlYXJDb250ZXh0KCl9KSxjcmVhdGVMb2dnZXI6JChmdW5jdGlvbihoLHkpe3JldHVybiB5PT09dm9pZCAwJiYoeT17fSksc1toXT1uZXcgT2woZnVuY3Rpb24oKXtmb3IodmFyIEw9W10seD0wO3g8YXJndW1lbnRzLmxlbmd0aDt4KyspTFt4XT1hcmd1bWVudHNbeF07cmV0dXJuIG8uaGFuZGxlTG9nLmFwcGx5KG8sTCl9LFouY3JlYXRlRGV0YWNoZWRUcmFja2VyKCksb24oaCkseS5oYW5kbGVyLHkubGV2ZWwsb24oeS5jb250ZXh0KSksc1toXX0pLGdldExvZ2dlcjokKGZ1bmN0aW9uKGgpe3JldHVybiBzW2hdfSksZ2V0SW5pdENvbmZpZ3VyYXRpb246JChmdW5jdGlvbigpe3JldHVybiB4aShvLmluaXRDb25maWd1cmF0aW9uKX0pLGdldEludGVybmFsQ29udGV4dDokKGZ1bmN0aW9uKGgpe3JldHVybiBvLmdldEludGVybmFsQ29udGV4dChoKX0pLHNldFVzZXI6JChmdW5jdGlvbihoKXtSbyhoKSYmaS5zZXRDb250ZXh0KGppKGgpKX0pLGdldFVzZXI6JChmdW5jdGlvbigpe3JldHVybiBpLmdldENvbnRleHQoKX0pLHNldFVzZXJQcm9wZXJ0eTokKGZ1bmN0aW9uKGgseSl7dmFyIEwseD1qaSgoTD17fSxMW2hdPXksTCkpW2hdO2kuc2V0Q29udGV4dFByb3BlcnR5KGgseCl9KSxyZW1vdmVVc2VyUHJvcGVydHk6JChmdW5jdGlvbihoKXtyZXR1cm4gaS5yZW1vdmVDb250ZXh0UHJvcGVydHkoaCl9KSxjbGVhclVzZXI6JChmdW5jdGlvbigpe3JldHVybiBpLmNsZWFyQ29udGV4dCgpfSl9KX1mdW5jdGlvbiBObyhjLFope3JldHVybiBXbCh7aW5pdDpmdW5jdGlvbih0KXtSaSgiRERfTE9HUyIsdCl9LGluaXRDb25maWd1cmF0aW9uOmN9LFopfXZhciB6bz0ibG9ncyI7ZnVuY3Rpb24gdm8oYyxaKXt2YXIgdD14MChjLHpvLGZ1bmN0aW9uKGkpe3JldHVybiBrbyhjLGkpfSxaKTtyZXR1cm57ZmluZFRyYWNrZWRTZXNzaW9uOmZ1bmN0aW9uKGksZSl7ZT09PXZvaWQgMCYmKGU9e3JldHVybkluYWN0aXZlOiExfSk7dmFyIEc9dC5maW5kU2Vzc2lvbihpLGUpO3JldHVybiBHJiZHLnRyYWNraW5nVHlwZT09PSIxIj97aWQ6Ry5pZH06dm9pZCAwfSxleHBpcmVPYnNlcnZhYmxlOnQuZXhwaXJlT2JzZXJ2YWJsZX19ZnVuY3Rpb24gSG8oYyl7dmFyIFo9X2koYyk9PT0iMSIsdD1aP3t9OnZvaWQgMDtyZXR1cm57ZmluZFRyYWNrZWRTZXNzaW9uOmZ1bmN0aW9uKCl7cmV0dXJuIHR9LGV4cGlyZU9ic2VydmFibGU6bmV3IHNsfX1mdW5jdGlvbiBfaShjKXtyZXR1cm4gcmQoYy5zZXNzaW9uU2FtcGxlUmF0ZSk/IjEiOiIwIn1mdW5jdGlvbiBrbyhjLFope3ZhciB0PWdvKFopP1o6X2koYyk7cmV0dXJue3RyYWNraW5nVHlwZTp0LGlzVHJhY2tlZDp0PT09IjEifX1mdW5jdGlvbiBnbyhjKXtyZXR1cm4gYz09PSIwInx8Yz09PSIxIn12YXIgcWk9ITE7ZnVuY3Rpb24gTWQoYyl7dmFyIFo9d2luZG93O2lmKEVpKCkpe3ZhciB0PWkoWi5ERF9SVU1fU1lOVEhFVElDUyk7cmV0dXJuIXQmJiFxaSYmKHFpPSEwLEtpKCJMb2dzIHNlbnQgYmVmb3JlIFJVTSBpcyBpbmplY3RlZCBieSB0aGUgc3ludGhldGljcyB3b3JrZXIiLHt0ZXN0SWQ6Vm8oKSxyZXN1bHRJZDp5bygpfSkpLHR9cmV0dXJuIGkoWi5ERF9SVU0pO2Z1bmN0aW9uIGkoZSl7aWYoZSYmZS5nZXRJbnRlcm5hbENvbnRleHQpcmV0dXJuIGUuZ2V0SW50ZXJuYWxDb250ZXh0KGMpfX1mdW5jdGlvbiBVbyhjLFosdCxpLGUpe3ZhciBHPVlvLmNvbmNhdChbImN1c3RvbSJdKSxvPXt9O0cuZm9yRWFjaChmdW5jdGlvbihzKXtvW3NdPUQwKHMsWi5ldmVudFJhdGVMaW1pdGVyVGhyZXNob2xkLGUpfSksdC5zdWJzY3JpYmUoMCxmdW5jdGlvbihzKXt2YXIgVixoLHk9cy5yYXdMb2dzRXZlbnQsTD1zLm1lc3NhZ2VDb250ZXh0LHg9TD09PXZvaWQgMD92b2lkIDA6TCxJPXMuc2F2ZWRDb21tb25Db250ZXh0LHY9ST09PXZvaWQgMD92b2lkIDA6SSx6PXMuZG9tYWluQ29udGV4dCxIPWhiKHkuZGF0ZSksQT1jLmZpbmRUcmFja2VkU2Vzc2lvbihIKTtpZighKCFBJiYoIVouc2VuZExvZ3NBZnRlclNlc3Npb25FeHBpcmF0aW9ufHwhYy5maW5kVHJhY2tlZFNlc3Npb24oSCx7cmV0dXJuSW5hY3RpdmU6ITB9KSkpKXt2YXIgWWw9dnx8aSgpLEdsPVdjKHtzZXJ2aWNlOlouc2VydmljZSxzZXNzaW9uX2lkOkE/QS5pZDp2b2lkIDAsdXNyOndaKFlsLnVzZXIpP3ZvaWQgMDpZbC51c2VyLHZpZXc6WWwudmlld30sWWwuY29udGV4dCxNZChIKSx5LHgpOygoVj1aLmJlZm9yZVNlbmQpPT09bnVsbHx8Vj09PXZvaWQgMD92b2lkIDA6Vi5jYWxsKFosR2wseikpPT09ITF8fEdsLm9yaWdpbiE9PU5sLkFHRU5UJiYoKGg9b1tHbC5zdGF0dXNdKSE9PW51bGwmJmghPT12b2lkIDA/aDpvLmN1c3RvbSkuaXNMaW1pdFJlYWNoZWQoKXx8dC5ub3RpZnkoMSxHbCl9fSl9dmFyICRuLE1vPSgkbj17fSwkblttbC5sb2ddPXcuaW5mbywkblttbC5kZWJ1Z109dy5kZWJ1ZywkblttbC5pbmZvXT13LmluZm8sJG5bbWwud2Fybl09dy53YXJuLCRuW21sLmVycm9yXT13LmVycm9yLCRuKTtmdW5jdGlvbiBUbyhjLFope3ZhciB0PVpvKGMuZm9yd2FyZENvbnNvbGVMb2dzKS5zdWJzY3JpYmUoZnVuY3Rpb24oaSl7dmFyIGU9e3Jhd0xvZ3NFdmVudDp7ZGF0ZTp4bigpLG1lc3NhZ2U6aS5tZXNzYWdlLG9yaWdpbjpObC5DT05TT0xFLGVycm9yOmkuZXJyb3ImJlVkKGkuZXJyb3IpLHN0YXR1czpNb1tpLmFwaV19LGRvbWFpbkNvbnRleHQ6e2hhbmRsaW5nU3RhY2s6aS5oYW5kbGluZ1N0YWNrfX07Wi5ub3RpZnkoMCxlKX0pO3JldHVybntzdG9wOmZ1bmN0aW9uKCl7dC51bnN1YnNjcmliZSgpfX19ZnVuY3Rpb24gQ28oYyxaKXt2YXIgdD1kMChjLGMuZm9yd2FyZFJlcG9ydHMpLnN1YnNjcmliZShmdW5jdGlvbihpKXt2YXIgZT1pLm1lc3NhZ2UsRyxvPWkub3JpZ2luYWxFcnJvci50eXBlPT09ImRlcHJlY2F0aW9uIj93Lndhcm46dy5lcnJvcjtvPT09dy5lcnJvcj9HPVVkKGkpOmkuc3RhY2smJihlKz0iIEZvdW5kIGluICIuY29uY2F0KF9HKGkuc3RhY2spKSksWi5ub3RpZnkoMCx7cmF3TG9nc0V2ZW50OntkYXRlOnhuKCksbWVzc2FnZTplLG9yaWdpbjpObC5SRVBPUlQsZXJyb3I6RyxzdGF0dXM6b319KX0pO3JldHVybntzdG9wOmZ1bmN0aW9uKCl7dC51bnN1YnNjcmliZSgpfX19ZnVuY3Rpb24gd28oYyxaKXtpZighYy5mb3J3YXJkRXJyb3JzVG9Mb2dzKXJldHVybntzdG9wOklufTt2YXIgdD1PMChjKS5zdWJzY3JpYmUoZnVuY3Rpb24oRyl7Ry5zdGF0ZT09PSJjb21wbGV0ZSImJmUoInhociIsRyl9KSxpPVBpKCkuc3Vic2NyaWJlKGZ1bmN0aW9uKEcpe0cuc3RhdGU9PT0icmVzb2x2ZSImJmUoImZldGNoIixHKX0pO2Z1bmN0aW9uIGUoRyxvKXshYy5pc0ludGFrZVVybChvLnVybCkmJihFbyhvKXx8Tmkoby5zdGF0dXMpKSYmKCJ4aHIiaW4gbz9QbyhvLnhocixjLHMpOm8ucmVzcG9uc2U/UW8oby5yZXNwb25zZSxjLHMpOm8uZXJyb3ImJkJvKG8uZXJyb3IsYyxzKSk7ZnVuY3Rpb24gcyhWKXt2YXIgaD17aXNBYm9ydGVkOm8uaXNBYm9ydGVkLGhhbmRsaW5nU3RhY2s6by5oYW5kbGluZ1N0YWNrfTtaLm5vdGlmeSgwLHtyYXdMb2dzRXZlbnQ6e21lc3NhZ2U6IiIuY29uY2F0KGpvKEcpLCIgZXJyb3IgIikuY29uY2F0KG8ubWV0aG9kLCIgIikuY29uY2F0KG8udXJsKSxkYXRlOm8uc3RhcnRDbG9ja3MudGltZVN0YW1wLGVycm9yOntzdGFjazpWfHwiRmFpbGVkIHRvIGxvYWQiLGhhbmRsaW5nOnZvaWQgMH0saHR0cDp7bWV0aG9kOm8ubWV0aG9kLHN0YXR1c19jb2RlOm8uc3RhdHVzLHVybDpvLnVybH0sc3RhdHVzOncuZXJyb3Isb3JpZ2luOk5sLk5FVFdPUkt9LGRvbWFpbkNvbnRleHQ6aH0pfX1yZXR1cm57c3RvcDpmdW5jdGlvbigpe3QudW5zdWJzY3JpYmUoKSxpLnVuc3Vic2NyaWJlKCl9fX1mdW5jdGlvbiBQbyhjLFosdCl7dHlwZW9mIGMucmVzcG9uc2U9PSJzdHJpbmciP3Qob3QoYy5yZXNwb25zZSxaKSk6dChjLnJlc3BvbnNlKX1mdW5jdGlvbiBCbyhjLFosdCl7dChvdChPbihHbihjKSksWikpfWZ1bmN0aW9uIFFvKGMsWix0KXt2YXIgaT1LMChjKTshaXx8IWkuYm9keT90KCk6d2luZG93LlRleHREZWNvZGVyP0RvKGkuYm9keSxaLnJlcXVlc3RFcnJvclJlc3BvbnNlTGVuZ3RoTGltaXQsZnVuY3Rpb24oZSxHKXt0KGU/IlVuYWJsZSB0byByZXRyaWV2ZSByZXNwb25zZTogIi5jb25jYXQoZSk6Ryl9KTppLnRleHQoKS50aGVuKCQoZnVuY3Rpb24oZSl7cmV0dXJuIHQob3QoZSxaKSl9KSwkKGZ1bmN0aW9uKGUpe3JldHVybiB0KCJVbmFibGUgdG8gcmV0cmlldmUgcmVzcG9uc2U6ICIuY29uY2F0KGUpKX0pKX1mdW5jdGlvbiBFbyhjKXtyZXR1cm4gYy5zdGF0dXM9PT0wJiZjLnJlc3BvbnNlVHlwZSE9PSJvcGFxdWUifWZ1bmN0aW9uIG90KGMsWil7cmV0dXJuIGMubGVuZ3RoPloucmVxdWVzdEVycm9yUmVzcG9uc2VMZW5ndGhMaW1pdD8iIi5jb25jYXQoYy5zdWJzdHJpbmcoMCxaLnJlcXVlc3RFcnJvclJlc3BvbnNlTGVuZ3RoTGltaXQpLCIuLi4iKTpjfWZ1bmN0aW9uIGpvKGMpe3JldHVybiBjPT09InhociI/IlhIUiI6IkZldGNoIn1mdW5jdGlvbiBEbyhjLFosdCl7cG8oYyxmdW5jdGlvbihpLGUsRyl7aWYoaSl0KGkpO2Vsc2V7dmFyIG89bmV3IFRleHREZWNvZGVyKCkuZGVjb2RlKGUpO0cmJihvKz0iLi4uIiksdCh2b2lkIDAsbyl9fSx7Ynl0ZXNMaW1pdDpaLGNvbGxlY3RTdHJlYW1Cb2R5OiEwfSl9ZnVuY3Rpb24gT28oYyxaKXtpZighYy5mb3J3YXJkRXJyb3JzVG9Mb2dzKXJldHVybntzdG9wOklufTt2YXIgdD1uZXcgc2wsaT1xRyh0KS5zdG9wLGU9dC5zdWJzY3JpYmUoZnVuY3Rpb24oRyl7Wi5ub3RpZnkoMCx7cmF3TG9nc0V2ZW50OnttZXNzYWdlOkcubWVzc2FnZSxkYXRlOkcuc3RhcnRDbG9ja3MudGltZVN0YW1wLGVycm9yOlVkKEcpLG9yaWdpbjpObC5TT1VSQ0Usc3RhdHVzOncuZXJyb3J9fSl9KTtyZXR1cm57c3RvcDpmdW5jdGlvbigpe2koKSxlLnVuc3Vic2NyaWJlKCl9fX12YXIgQW89ajAsQWw7ZnVuY3Rpb24gX28oYyl7ZnVuY3Rpb24gWih0LGksZSxHLG8pe3ZhciBzPVdjKGkuZ2V0Q29udGV4dCgpLHQuY29udGV4dCk7aWYoZ2QodC5zdGF0dXMsQmMuY29uc29sZSxpKSYmJG8odCxzKSxnZCh0LnN0YXR1cyxCYy5odHRwLGkpKXt2YXIgVj17cmF3TG9nc0V2ZW50OntkYXRlOm98fHhuKCksbWVzc2FnZTp0Lm1lc3NhZ2Usc3RhdHVzOnQuc3RhdHVzLG9yaWdpbjpObC5MT0dHRVJ9LG1lc3NhZ2VDb250ZXh0OnMsc2F2ZWRDb21tb25Db250ZXh0Okd9O2UmJihWLmRvbWFpbkNvbnRleHQ9e2hhbmRsaW5nU3RhY2s6ZX0pLGMubm90aWZ5KDAsVil9fXJldHVybntoYW5kbGVMb2c6Wn19dmFyIHFvPShBbD17fSxBbFt3Lm9rXT1tbC5kZWJ1ZyxBbFt3LmRlYnVnXT1tbC5kZWJ1ZyxBbFt3LmluZm9dPW1sLmluZm8sQWxbdy5ub3RpY2VdPW1sLmluZm8sQWxbdy53YXJuXT1tbC53YXJuLEFsW3cuZXJyb3JdPW1sLmVycm9yLEFsW3cuY3JpdGljYWxdPW1sLmVycm9yLEFsW3cuYWxlcnRdPW1sLmVycm9yLEFsW3cuZW1lcmddPW1sLmVycm9yLEFsKTtmdW5jdGlvbiAkbyhjLFope3ZhciB0PWMuc3RhdHVzLGk9Yy5tZXNzYWdlO0NuW3FvW3RdXS5jYWxsKGRuLGksWil9ZnVuY3Rpb24gbFgoYyxaLHQsaSxlKXt2YXIgRz13aShjLHtlbmRwb2ludDpjLmxvZ3NFbmRwb2ludEJ1aWxkZXIsZW5jb2RlcjprZCgpfSxjLnJlcGxpY2EmJntlbmRwb2ludDpjLnJlcGxpY2EubG9nc0VuZHBvaW50QnVpbGRlcixlbmNvZGVyOmtkKCl9LHQsaSxlLmV4cGlyZU9ic2VydmFibGUpO3JldHVybiBaLnN1YnNjcmliZSgxLGZ1bmN0aW9uKG8pe0cuYWRkKG8pfSksR31mdW5jdGlvbiBuWChjKXt2YXIgWj1pdCgpO2Muc3Vic2NyaWJlKDEsZnVuY3Rpb24odCl7Wi5zZW5kKCJsb2ciLHQpfSl9ZnVuY3Rpb24gY1goYyl7cmV0dXJue2dldDpmdW5jdGlvbihaKXt2YXIgdD1jLmZpbmRUcmFja2VkU2Vzc2lvbihaKTtpZih0KXJldHVybntzZXNzaW9uX2lkOnQuaWR9fX19ZnVuY3Rpb24gZFgoYyl7cmV0dXJuIGZ1bmN0aW9uKFope2Mubm90aWZ5KDAse3Jhd0xvZ3NFdmVudDp7bWVzc2FnZTpaLm1lc3NhZ2UsZGF0ZTpaLnN0YXJ0Q2xvY2tzLnRpbWVTdGFtcCxvcmlnaW46TmwuQUdFTlQsc3RhdHVzOncuZXJyb3J9fSksS2koIkVycm9yIHJlcG9ydGVkIHRvIGN1c3RvbWVyIix7ImVycm9yLm1lc3NhZ2UiOloubWVzc2FnZX0pfX1mdW5jdGlvbiBaWChjLFosdCxpLGUpe3ZhciBHPVgwKCJicm93c2VyLWxvZ3Mtc2RrIixaKTtHLnNldENvbnRleHRQcm92aWRlcihmdW5jdGlvbigpe3ZhciBMLHgsSSx2LHosSDtyZXR1cm57YXBwbGljYXRpb246e2lkOihMPU1kKCkpPT09bnVsbHx8TD09PXZvaWQgMD92b2lkIDA6TC5hcHBsaWNhdGlvbl9pZH0sc2Vzc2lvbjp7aWQ6KHg9ZS5maW5kVHJhY2tlZFNlc3Npb24oKSk9PT1udWxsfHx4PT09dm9pZCAwP3ZvaWQgMDp4LmlkfSx2aWV3OntpZDoodj0oST1NZCgpKT09PW51bGx8fEk9PT12b2lkIDA/dm9pZCAwOkkudmlldyk9PT1udWxsfHx2PT09dm9pZCAwP3ZvaWQgMDp2LmlkfSxhY3Rpb246e2lkOihIPSh6PU1kKCkpPT09bnVsbHx8ej09PXZvaWQgMD92b2lkIDA6ei51c2VyX2FjdGlvbik9PT1udWxsfHxIPT09dm9pZCAwP3ZvaWQgMDpILmlkfX19KTt2YXIgbz1bXTtpZih2ZCgpKXt2YXIgcz1pdCgpLFY9Ry5vYnNlcnZhYmxlLnN1YnNjcmliZShmdW5jdGlvbihMKXtyZXR1cm4gcy5zZW5kKCJpbnRlcm5hbF90ZWxlbWV0cnkiLEwpfSk7by5wdXNoKGZ1bmN0aW9uKCl7cmV0dXJuIFYudW5zdWJzY3JpYmUoKX0pfWVsc2V7dmFyIGg9d2koWix7ZW5kcG9pbnQ6Wi5ydW1FbmRwb2ludEJ1aWxkZXIsZW5jb2RlcjprZCgpfSxaLnJlcGxpY2EmJntlbmRwb2ludDpaLnJlcGxpY2EucnVtRW5kcG9pbnRCdWlsZGVyLGVuY29kZXI6a2QoKX0sdCxpLGUuZXhwaXJlT2JzZXJ2YWJsZSk7by5wdXNoKGZ1bmN0aW9uKCl7cmV0dXJuIGguc3RvcCgpfSk7dmFyIHk9Ry5vYnNlcnZhYmxlLnN1YnNjcmliZShmdW5jdGlvbihMKXtyZXR1cm4gaC5hZGQoTCxXMChaKSl9KTtvLnB1c2goZnVuY3Rpb24oKXtyZXR1cm4geS51bnN1YnNjcmliZSgpfSl9cmV0dXJuIHAwKCkscjAoSm8oYykpLHt0ZWxlbWV0cnk6RyxzdG9wOmZ1bmN0aW9uKCl7by5mb3JFYWNoKGZ1bmN0aW9uKEwpe3JldHVybiBMKCl9KX19fWZ1bmN0aW9uIHRYKGMsWix0LGkpe3ZhciBlPW5ldyBBbyxHPVtdO2Uuc3Vic2NyaWJlKDEsZnVuY3Rpb24oSSl7cmV0dXJuIFNpKCJsb2dzIixJKX0pO3ZhciBvPWRYKGUpLHM9UDAoWiksVj1aLnNlc3Npb25TdG9yZVN0cmF0ZWd5VHlwZSYmIXZkKCkmJiFFaSgpP3ZvKFosaSk6SG8oWiksaD1aWChjLFosbyxzLFYpLnN0b3A7Ry5wdXNoKGZ1bmN0aW9uKCl7cmV0dXJuIGgoKX0pLHdvKFosZSksT28oWixlKSxUbyhaLGUpLENvKFosZSk7dmFyIHk9X28oZSkuaGFuZGxlTG9nO2lmKFVvKFYsWixlLHQsbyksdmQoKSluWChlKTtlbHNle3ZhciBMPWxYKFosZSxvLHMsVikuc3RvcDtHLnB1c2goZnVuY3Rpb24oKXtyZXR1cm4gTCgpfSl9dmFyIHg9Y1goVik7cmV0dXJue2hhbmRsZUxvZzp5LGdldEludGVybmFsQ29udGV4dDp4LmdldCxzdG9wOmZ1bmN0aW9uKCl7Ry5mb3JFYWNoKGZ1bmN0aW9uKEkpe3JldHVybiBJKCl9KX19fXZhciBRYz1Gbyh0WCk7YzAoSm4oKSwiRERfTE9HUyIsUWMpLFFjLmluaXQoe2NsaWVudFRva2VuOiJwdWI0ODQ0ODk1YWMzMDA2N2FjMmM0YWFhMDI1ZGJjMzlkNyIsc2l0ZToidXMzLmRhdGFkb2docS5jb20iLGZvcndhcmRFcnJvcnNUb0xvZ3M6ITAsc2Vzc2lvblNhbXBsZVJhdGU6MTAwfSk7Y29uc3QgaGM9e0luZm86ImluZm8iLFdhcm46Indhcm4iLEVycm9yOiJlcnJvciJ9LFRkPWZ1bmN0aW9uKGMsWil7Y29uc29sZS5sb2coIiVjT1RUUGxheWVyOiAiK2MsImNvbG9yOiAjNTlhY2ZmIiksc3QoKT9wb3N0TWVzc2FnZSh7YWN0aW9uOiJsb2ciLHBheWxvYWQ6e3N0YXR1czpoYy5JbmZvLG1lc3NhZ2U6IldlYiBsb2c6ICIrYyxwYXlsb2FkOlp9fSk6UWMubG9nZ2VyLmluZm8oIldlYiBsb2c6ICIrYyxaKX0sWHQ9ZnVuY3Rpb24oYyxaKXtjb25zb2xlLmxvZygiJWNPVFRQbGF5ZXI6ICIrYywiY29sb3I6ICNiNTk0MDAiKSxzdCgpP3Bvc3RNZXNzYWdlKHthY3Rpb246ImxvZyIscGF5bG9hZDp7c3RhdHVzOmhjLldhcm4sbWVzc2FnZTpjLHBheWxvYWQ6Wn19KTpRYy5sb2dnZXIud2FybihjLFopfSxzbj1mdW5jdGlvbihjLFope2NvbnNvbGUuZXJyb3IoIk9UVFBsYXllcjogIitjKSxaJiZjb25zb2xlLmVycm9yKFopLHN0KCk/cG9zdE1lc3NhZ2Uoe2FjdGlvbjoibG9nIixwYXlsb2FkOntzdGF0dXM6aGMuRXJyb3IsbWVzc2FnZTpjLHBheWxvYWQ6Wn19KTpRYy5sb2dnZXIuZXJyb3IoYyxudWxsLFopfSx1WD1jPT57Y29uc3R7bWVzc2FnZTpaLHBheWxvYWQ6dCxlcnJvcjppfT1jO3N3aXRjaChjLnN0YXR1cyl7Y2FzZSBoYy5JbmZvOlRkKFosdCk7YnJlYWs7Y2FzZSBoYy5XYXJuOlh0KFosdCk7YnJlYWs7Y2FzZSBoYy5FcnJvcjpzbihaLGkpO2JyZWFrO2RlZmF1bHQ6WHQoIlVua25vd24gbG9nIHR5cGUiKTticmVha319LHN0PSgpPT50eXBlb2YgV29ya2VyR2xvYmFsU2NvcGU8InUiJiZzZWxmIGluc3RhbmNlb2YgV29ya2VyR2xvYmFsU2NvcGU7dmFyIEVjPXR5cGVvZiBnbG9iYWxUaGlzPCJ1Ij9nbG9iYWxUaGlzOnR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp0eXBlb2YgZ2xvYmFsPCJ1Ij9nbG9iYWw6dHlwZW9mIHNlbGY8InUiP3NlbGY6e30sQ2Q9e2V4cG9ydHM6e319Oy8qKgogKiBAbGljZW5zZQogKiBMb2Rhc2ggPGh0dHBzOi8vbG9kYXNoLmNvbS8+CiAqIENvcHlyaWdodCBPcGVuSlMgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzIDxodHRwczovL29wZW5qc2Yub3JnLz4KICogUmVsZWFzZWQgdW5kZXIgTUlUIGxpY2Vuc2UgPGh0dHBzOi8vbG9kYXNoLmNvbS9saWNlbnNlPgogKiBCYXNlZCBvbiBVbmRlcnNjb3JlLmpzIDEuOC4zIDxodHRwOi8vdW5kZXJzY29yZWpzLm9yZy9MSUNFTlNFPgogKiBDb3B5cmlnaHQgSmVyZW15IEFzaGtlbmFzLCBEb2N1bWVudENsb3VkIGFuZCBJbnZlc3RpZ2F0aXZlIFJlcG9ydGVycyAmIEVkaXRvcnMKICovQ2QuZXhwb3J0cyxmdW5jdGlvbihjLFopeyhmdW5jdGlvbigpe3ZhciB0LGk9IjQuMTcuMjEiLGU9MjAwLEc9IlVuc3VwcG9ydGVkIGNvcmUtanMgdXNlLiBUcnkgaHR0cHM6Ly9ucG1zLmlvL3NlYXJjaD9xPXBvbnlmaWxsLiIsbz0iRXhwZWN0ZWQgYSBmdW5jdGlvbiIscz0iSW52YWxpZCBgdmFyaWFibGVgIG9wdGlvbiBwYXNzZWQgaW50byBgXy50ZW1wbGF0ZWAiLFY9Il9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iLGg9NTAwLHk9Il9fbG9kYXNoX3BsYWNlaG9sZGVyX18iLEw9MSx4PTIsST00LHY9MSx6PTIsSD0xLEE9MixZbD00LEdsPTgsWm49MTYsXz0zMixybD02NCxNPTEyOCx6bD0yNTYsamM9NTEyLHB0PTMwLEdYPSIuLi4iLG9YPTgwMCxYWD0xNixuZT0xLHNYPTIscFg9MyxsYz0xLzAsS249OTAwNzE5OTI1NDc0MDk5MSxXWD0xNzk3NjkzMTM0ODYyMzE1N2UyOTIsd2Q9TmFOLHRuPTQyOTQ5NjcyOTUsclg9dG4tMSxoWD10bj4+PjEsVlg9W1siYXJ5IixNXSxbImJpbmQiLEhdLFsiYmluZEtleSIsQV0sWyJjdXJyeSIsR2xdLFsiY3VycnlSaWdodCIsWm5dLFsiZmxpcCIsamNdLFsicGFydGlhbCIsX10sWyJwYXJ0aWFsUmlnaHQiLHJsXSxbInJlYXJnIix6bF1dLFZjPSJbb2JqZWN0IEFyZ3VtZW50c10iLFBkPSJbb2JqZWN0IEFycmF5XSIseVg9IltvYmplY3QgQXN5bmNGdW5jdGlvbl0iLERjPSJbb2JqZWN0IEJvb2xlYW5dIixPYz0iW29iamVjdCBEYXRlXSIsUlg9IltvYmplY3QgRE9NRXhjZXB0aW9uXSIsQmQ9IltvYmplY3QgRXJyb3JdIixRZD0iW29iamVjdCBGdW5jdGlvbl0iLGNlPSJbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXSIsX2w9IltvYmplY3QgTWFwXSIsQWM9IltvYmplY3QgTnVtYmVyXSIsTFg9IltvYmplY3QgTnVsbF0iLHBuPSJbb2JqZWN0IE9iamVjdF0iLGRlPSJbb2JqZWN0IFByb21pc2VdIixZWD0iW29iamVjdCBQcm94eV0iLF9jPSJbb2JqZWN0IFJlZ0V4cF0iLHFsPSJbb2JqZWN0IFNldF0iLHFjPSJbb2JqZWN0IFN0cmluZ10iLEVkPSJbb2JqZWN0IFN5bWJvbF0iLFNYPSJbb2JqZWN0IFVuZGVmaW5lZF0iLCRjPSJbb2JqZWN0IFdlYWtNYXBdIix4WD0iW29iamVjdCBXZWFrU2V0XSIsbGQ9IltvYmplY3QgQXJyYXlCdWZmZXJdIix5Yz0iW29iamVjdCBEYXRhVmlld10iLFd0PSJbb2JqZWN0IEZsb2F0MzJBcnJheV0iLHJ0PSJbb2JqZWN0IEZsb2F0NjRBcnJheV0iLGh0PSJbb2JqZWN0IEludDhBcnJheV0iLFZ0PSJbb2JqZWN0IEludDE2QXJyYXldIix5dD0iW29iamVjdCBJbnQzMkFycmF5XSIsUnQ9IltvYmplY3QgVWludDhBcnJheV0iLEx0PSJbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XSIsWXQ9IltvYmplY3QgVWludDE2QXJyYXldIixTdD0iW29iamVjdCBVaW50MzJBcnJheV0iLGZYPS9cYl9fcCBcKz0gJyc7L2csSlg9L1xiKF9fcCBcKz0pICcnIFwrL2csSVg9LyhfX2VcKC4qP1wpfFxiX190XCkpIFwrXG4nJzsvZyxaZT0vJig/OmFtcHxsdHxndHxxdW90fCMzOSk7L2csdGU9L1smPD4iJ10vZyxLWD1SZWdFeHAoWmUuc291cmNlKSxGWD1SZWdFeHAodGUuc291cmNlKSxOWD0vPCUtKFtcc1xTXSs/KSU+L2cselg9LzwlKFtcc1xTXSs/KSU+L2csdWU9LzwlPShbXHNcU10rPyklPi9nLHZYPS9cLnxcWyg/OlteW1xdXSp8KFsiJ10pKD86KD8hXDEpW15cXF18XFwuKSo/XDEpXF0vLEhYPS9eXHcqJC8sa1g9L1teLltcXV0rfFxbKD86KC0/XGQrKD86XC5cZCspPyl8KFsiJ10pKCg/Oig/IVwyKVteXFxdfFxcLikqPylcMilcXXwoPz0oPzpcLnxcW1xdKSg/OlwufFxbXF18JCkpL2cseHQ9L1tcXF4kLiorPygpW1xde318XS9nLGdYPVJlZ0V4cCh4dC5zb3VyY2UpLGZ0PS9eXHMrLyxVWD0vXHMvLE1YPS9ceyg/OlxuXC9cKiBcW3dyYXBwZWQgd2l0aCAuK1xdIFwqXC8pP1xuPy8sVFg9L1x7XG5cL1wqIFxbd3JhcHBlZCB3aXRoICguKylcXSBcKi8sQ1g9Lyw/ICYgLyx3WD0vW15ceDAwLVx4MmZceDNhLVx4NDBceDViLVx4NjBceDdiLVx4N2ZdKy9nLFBYPS9bKCk9LHt9XFtcXVwvXHNdLyxCWD0vXFwoXFwpPy9nLFFYPS9cJFx7KFteXFx9XSooPzpcXC5bXlxcfV0qKSopXH0vZyxpZT0vXHcqJC8sRVg9L15bLStdMHhbMC05YS1mXSskL2ksalg9L14wYlswMV0rJC9pLERYPS9eXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXSQvLE9YPS9eMG9bMC03XSskL2ksQVg9L14oPzowfFsxLTldXGQqKSQvLF9YPS9bXHhjMC1ceGQ2XHhkOC1ceGY2XHhmOC1ceGZmXHUwMTAwLVx1MDE3Zl0vZyxqZD0vKCReKS8scVg9L1snXG5cclx1MjAyOFx1MjAyOVxcXS9nLERkPSJcXHVkODAwLVxcdWRmZmYiLCRYPSJcXHUwMzAwLVxcdTAzNmYiLGxzPSJcXHVmZTIwLVxcdWZlMmYiLG5zPSJcXHUyMGQwLVxcdTIwZmYiLGVlPSRYK2xzK25zLG1lPSJcXHUyNzAwLVxcdTI3YmYiLGFlPSJhLXpcXHhkZi1cXHhmNlxceGY4LVxceGZmIixjcz0iXFx4YWNcXHhiMVxceGQ3XFx4ZjciLGRzPSJcXHgwMC1cXHgyZlxceDNhLVxceDQwXFx4NWItXFx4NjBcXHg3Yi1cXHhiZiIsWnM9IlxcdTIwMDAtXFx1MjA2ZiIsdHM9IiBcXHRcXHgwYlxcZlxceGEwXFx1ZmVmZlxcblxcclxcdTIwMjhcXHUyMDI5XFx1MTY4MFxcdTE4MGVcXHUyMDAwXFx1MjAwMVxcdTIwMDJcXHUyMDAzXFx1MjAwNFxcdTIwMDVcXHUyMDA2XFx1MjAwN1xcdTIwMDhcXHUyMDA5XFx1MjAwYVxcdTIwMmZcXHUyMDVmXFx1MzAwMCIsYmU9IkEtWlxceGMwLVxceGQ2XFx4ZDgtXFx4ZGUiLEdlPSJcXHVmZTBlXFx1ZmUwZiIsb2U9Y3MrZHMrWnMrdHMsSnQ9Ilsn4oCZXSIsdXM9IlsiK0RkKyJdIixYZT0iWyIrb2UrIl0iLE9kPSJbIitlZSsiXSIsc2U9IlxcZCsiLGlzPSJbIittZSsiXSIscGU9IlsiK2FlKyJdIixXZT0iW14iK0RkK29lK3NlK21lK2FlK2JlKyJdIixJdD0iXFx1ZDgzY1tcXHVkZmZiLVxcdWRmZmZdIixlcz0iKD86IitPZCsifCIrSXQrIikiLHJlPSJbXiIrRGQrIl0iLEt0PSIoPzpcXHVkODNjW1xcdWRkZTYtXFx1ZGRmZl0pezJ9IixGdD0iW1xcdWQ4MDAtXFx1ZGJmZl1bXFx1ZGMwMC1cXHVkZmZmXSIsUmM9IlsiK2JlKyJdIixoZT0iXFx1MjAwZCIsVmU9Iig/OiIrcGUrInwiK1dlKyIpIixtcz0iKD86IitSYysifCIrV2UrIikiLHllPSIoPzoiK0p0KyIoPzpkfGxsfG18cmV8c3x0fHZlKSk/IixSZT0iKD86IitKdCsiKD86RHxMTHxNfFJFfFN8VHxWRSkpPyIsTGU9ZXMrIj8iLFllPSJbIitHZSsiXT8iLGFzPSIoPzoiK2hlKyIoPzoiK1tyZSxLdCxGdF0uam9pbigifCIpKyIpIitZZStMZSsiKSoiLGJzPSJcXGQqKD86MXN0fDJuZHwzcmR8KD8hWzEyM10pXFxkdGgpKD89XFxifFtBLVpfXSkiLEdzPSJcXGQqKD86MVNUfDJORHwzUkR8KD8hWzEyM10pXFxkVEgpKD89XFxifFthLXpfXSkiLFNlPVllK0xlK2FzLG9zPSIoPzoiK1tpcyxLdCxGdF0uam9pbigifCIpKyIpIitTZSxYcz0iKD86IitbcmUrT2QrIj8iLE9kLEt0LEZ0LHVzXS5qb2luKCJ8IikrIikiLHNzPVJlZ0V4cChKdCwiZyIpLHBzPVJlZ0V4cChPZCwiZyIpLE50PVJlZ0V4cChJdCsiKD89IitJdCsiKXwiK1hzK1NlLCJnIiksV3M9UmVnRXhwKFtSYysiPyIrcGUrIisiK3llKyIoPz0iK1tYZSxSYywiJCJdLmpvaW4oInwiKSsiKSIsbXMrIisiK1JlKyIoPz0iK1tYZSxSYytWZSwiJCJdLmpvaW4oInwiKSsiKSIsUmMrIj8iK1ZlKyIrIit5ZSxSYysiKyIrUmUsR3MsYnMsc2Usb3NdLmpvaW4oInwiKSwiZyIpLHJzPVJlZ0V4cCgiWyIraGUrRGQrZWUrR2UrIl0iKSxocz0vW2Etel1bQS1aXXxbQS1aXXsyfVthLXpdfFswLTldW2EtekEtWl18W2EtekEtWl1bMC05XXxbXmEtekEtWjAtOSBdLyxWcz1bIkFycmF5IiwiQnVmZmVyIiwiRGF0YVZpZXciLCJEYXRlIiwiRXJyb3IiLCJGbG9hdDMyQXJyYXkiLCJGbG9hdDY0QXJyYXkiLCJGdW5jdGlvbiIsIkludDhBcnJheSIsIkludDE2QXJyYXkiLCJJbnQzMkFycmF5IiwiTWFwIiwiTWF0aCIsIk9iamVjdCIsIlByb21pc2UiLCJSZWdFeHAiLCJTZXQiLCJTdHJpbmciLCJTeW1ib2wiLCJUeXBlRXJyb3IiLCJVaW50OEFycmF5IiwiVWludDhDbGFtcGVkQXJyYXkiLCJVaW50MTZBcnJheSIsIlVpbnQzMkFycmF5IiwiV2Vha01hcCIsIl8iLCJjbGVhclRpbWVvdXQiLCJpc0Zpbml0ZSIsInBhcnNlSW50Iiwic2V0VGltZW91dCJdLHlzPS0xLGRsPXt9O2RsW1d0XT1kbFtydF09ZGxbaHRdPWRsW1Z0XT1kbFt5dF09ZGxbUnRdPWRsW0x0XT1kbFtZdF09ZGxbU3RdPSEwLGRsW1ZjXT1kbFtQZF09ZGxbbGRdPWRsW0RjXT1kbFt5Y109ZGxbT2NdPWRsW0JkXT1kbFtRZF09ZGxbX2xdPWRsW0FjXT1kbFtwbl09ZGxbX2NdPWRsW3FsXT1kbFtxY109ZGxbJGNdPSExO3ZhciBjbD17fTtjbFtWY109Y2xbUGRdPWNsW2xkXT1jbFt5Y109Y2xbRGNdPWNsW09jXT1jbFtXdF09Y2xbcnRdPWNsW2h0XT1jbFtWdF09Y2xbeXRdPWNsW19sXT1jbFtBY109Y2xbcG5dPWNsW19jXT1jbFtxbF09Y2xbcWNdPWNsW0VkXT1jbFtSdF09Y2xbTHRdPWNsW1l0XT1jbFtTdF09ITAsY2xbQmRdPWNsW1FkXT1jbFskY109ITE7dmFyIFJzPXvDgDoiQSIsw4E6IkEiLMOCOiJBIizDgzoiQSIsw4Q6IkEiLMOFOiJBIizDoDoiYSIsw6E6ImEiLMOiOiJhIizDozoiYSIsw6Q6ImEiLMOlOiJhIizDhzoiQyIsw6c6ImMiLMOQOiJEIizDsDoiZCIsw4g6IkUiLMOJOiJFIizDijoiRSIsw4s6IkUiLMOoOiJlIizDqToiZSIsw6o6ImUiLMOrOiJlIizDjDoiSSIsw406IkkiLMOOOiJJIizDjzoiSSIsw6w6ImkiLMOtOiJpIizDrjoiaSIsw686ImkiLMOROiJOIizDsToibiIsw5I6Ik8iLMOTOiJPIizDlDoiTyIsw5U6Ik8iLMOWOiJPIizDmDoiTyIsw7I6Im8iLMOzOiJvIizDtDoibyIsw7U6Im8iLMO2OiJvIizDuDoibyIsw5k6IlUiLMOaOiJVIizDmzoiVSIsw5w6IlUiLMO5OiJ1IizDujoidSIsw7s6InUiLMO8OiJ1IizDnToiWSIsw706InkiLMO/OiJ5IizDhjoiQWUiLMOmOiJhZSIsw546IlRoIizDvjoidGgiLMOfOiJzcyIsxIA6IkEiLMSCOiJBIizEhDoiQSIsxIE6ImEiLMSDOiJhIizEhToiYSIsxIY6IkMiLMSIOiJDIizEijoiQyIsxIw6IkMiLMSHOiJjIizEiToiYyIsxIs6ImMiLMSNOiJjIizEjjoiRCIsxJA6IkQiLMSPOiJkIizEkToiZCIsxJI6IkUiLMSUOiJFIizEljoiRSIsxJg6IkUiLMSaOiJFIizEkzoiZSIsxJU6ImUiLMSXOiJlIizEmToiZSIsxJs6ImUiLMScOiJHIizEnjoiRyIsxKA6IkciLMSiOiJHIizEnToiZyIsxJ86ImciLMShOiJnIizEozoiZyIsxKQ6IkgiLMSmOiJIIizEpToiaCIsxKc6ImgiLMSoOiJJIizEqjoiSSIsxKw6IkkiLMSuOiJJIizEsDoiSSIsxKk6ImkiLMSrOiJpIizErToiaSIsxK86ImkiLMSxOiJpIizEtDoiSiIsxLU6ImoiLMS2OiJLIizEtzoiayIsxLg6ImsiLMS5OiJMIizEuzoiTCIsxL06IkwiLMS/OiJMIizFgToiTCIsxLo6ImwiLMS8OiJsIizEvjoibCIsxYA6ImwiLMWCOiJsIizFgzoiTiIsxYU6Ik4iLMWHOiJOIizFijoiTiIsxYQ6Im4iLMWGOiJuIizFiDoibiIsxYs6Im4iLMWMOiJPIizFjjoiTyIsxZA6Ik8iLMWNOiJvIizFjzoibyIsxZE6Im8iLMWUOiJSIizFljoiUiIsxZg6IlIiLMWVOiJyIizFlzoiciIsxZk6InIiLMWaOiJTIizFnDoiUyIsxZ46IlMiLMWgOiJTIizFmzoicyIsxZ06InMiLMWfOiJzIizFoToicyIsxaI6IlQiLMWkOiJUIizFpjoiVCIsxaM6InQiLMWlOiJ0IizFpzoidCIsxag6IlUiLMWqOiJVIizFrDoiVSIsxa46IlUiLMWwOiJVIizFsjoiVSIsxak6InUiLMWrOiJ1IizFrToidSIsxa86InUiLMWxOiJ1IizFszoidSIsxbQ6IlciLMW1OiJ3IizFtjoiWSIsxbc6InkiLMW4OiJZIizFuToiWiIsxbs6IloiLMW9OiJaIizFujoieiIsxbw6InoiLMW+OiJ6IizEsjoiSUoiLMSzOiJpaiIsxZI6Ik9lIizFkzoib2UiLMWJOiInbiIsxb86InMifSxMcz17IiYiOiImYW1wOyIsIjwiOiImbHQ7IiwiPiI6IiZndDsiLCciJzoiJnF1b3Q7IiwiJyI6IiYjMzk7In0sWXM9eyImYW1wOyI6IiYiLCImbHQ7IjoiPCIsIiZndDsiOiI+IiwiJnF1b3Q7IjonIicsIiYjMzk7IjoiJyJ9LFNzPXsiXFwiOiJcXCIsIiciOiInIiwiXG4iOiJuIiwiXHIiOiJyIiwiXHUyMDI4IjoidTIwMjgiLCJcdTIwMjkiOiJ1MjAyOSJ9LHhzPXBhcnNlRmxvYXQsZnM9cGFyc2VJbnQseGU9dHlwZW9mIEVjPT0ib2JqZWN0IiYmRWMmJkVjLk9iamVjdD09PU9iamVjdCYmRWMsSnM9dHlwZW9mIHNlbGY9PSJvYmplY3QiJiZzZWxmJiZzZWxmLk9iamVjdD09PU9iamVjdCYmc2VsZixobD14ZXx8SnN8fEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCksenQ9WiYmIVoubm9kZVR5cGUmJlosbmM9enQmJiEwJiZjJiYhYy5ub2RlVHlwZSYmYyxmZT1uYyYmbmMuZXhwb3J0cz09PXp0LHZ0PWZlJiZ4ZS5wcm9jZXNzLFRsPWZ1bmN0aW9uKCl7dHJ5e3ZhciBXPW5jJiZuYy5yZXF1aXJlJiZuYy5yZXF1aXJlKCJ1dGlsIikudHlwZXM7cmV0dXJuIFd8fHZ0JiZ2dC5iaW5kaW5nJiZ2dC5iaW5kaW5nKCJ1dGlsIil9Y2F0Y2h7fX0oKSxKZT1UbCYmVGwuaXNBcnJheUJ1ZmZlcixJZT1UbCYmVGwuaXNEYXRlLEtlPVRsJiZUbC5pc01hcCxGZT1UbCYmVGwuaXNSZWdFeHAsTmU9VGwmJlRsLmlzU2V0LHplPVRsJiZUbC5pc1R5cGVkQXJyYXk7ZnVuY3Rpb24gdmwoVyxZLFIpe3N3aXRjaChSLmxlbmd0aCl7Y2FzZSAwOnJldHVybiBXLmNhbGwoWSk7Y2FzZSAxOnJldHVybiBXLmNhbGwoWSxSWzBdKTtjYXNlIDI6cmV0dXJuIFcuY2FsbChZLFJbMF0sUlsxXSk7Y2FzZSAzOnJldHVybiBXLmNhbGwoWSxSWzBdLFJbMV0sUlsyXSl9cmV0dXJuIFcuYXBwbHkoWSxSKX1mdW5jdGlvbiBJcyhXLFksUixGKXtmb3IodmFyIFQ9LTEsTz1XPT1udWxsPzA6Vy5sZW5ndGg7KytUPE87KXt2YXIgb2w9V1tUXTtZKEYsb2wsUihvbCksVyl9cmV0dXJuIEZ9ZnVuY3Rpb24gQ2woVyxZKXtmb3IodmFyIFI9LTEsRj1XPT1udWxsPzA6Vy5sZW5ndGg7KytSPEYmJlkoV1tSXSxSLFcpIT09ITE7KTtyZXR1cm4gV31mdW5jdGlvbiBLcyhXLFkpe2Zvcih2YXIgUj1XPT1udWxsPzA6Vy5sZW5ndGg7Ui0tJiZZKFdbUl0sUixXKSE9PSExOyk7cmV0dXJuIFd9ZnVuY3Rpb24gdmUoVyxZKXtmb3IodmFyIFI9LTEsRj1XPT1udWxsPzA6Vy5sZW5ndGg7KytSPEY7KWlmKCFZKFdbUl0sUixXKSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiBGbihXLFkpe2Zvcih2YXIgUj0tMSxGPVc9PW51bGw/MDpXLmxlbmd0aCxUPTAsTz1bXTsrK1I8Rjspe3ZhciBvbD1XW1JdO1kob2wsUixXKSYmKE9bVCsrXT1vbCl9cmV0dXJuIE99ZnVuY3Rpb24gQWQoVyxZKXt2YXIgUj1XPT1udWxsPzA6Vy5sZW5ndGg7cmV0dXJuISFSJiZMYyhXLFksMCk+LTF9ZnVuY3Rpb24gSHQoVyxZLFIpe2Zvcih2YXIgRj0tMSxUPVc9PW51bGw/MDpXLmxlbmd0aDsrK0Y8VDspaWYoUihZLFdbRl0pKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIFpsKFcsWSl7Zm9yKHZhciBSPS0xLEY9Vz09bnVsbD8wOlcubGVuZ3RoLFQ9QXJyYXkoRik7KytSPEY7KVRbUl09WShXW1JdLFIsVyk7cmV0dXJuIFR9ZnVuY3Rpb24gTm4oVyxZKXtmb3IodmFyIFI9LTEsRj1ZLmxlbmd0aCxUPVcubGVuZ3RoOysrUjxGOylXW1QrUl09WVtSXTtyZXR1cm4gV31mdW5jdGlvbiBrdChXLFksUixGKXt2YXIgVD0tMSxPPVc9PW51bGw/MDpXLmxlbmd0aDtmb3IoRiYmTyYmKFI9V1srK1RdKTsrK1Q8TzspUj1ZKFIsV1tUXSxULFcpO3JldHVybiBSfWZ1bmN0aW9uIEZzKFcsWSxSLEYpe3ZhciBUPVc9PW51bGw/MDpXLmxlbmd0aDtmb3IoRiYmVCYmKFI9V1stLVRdKTtULS07KVI9WShSLFdbVF0sVCxXKTtyZXR1cm4gUn1mdW5jdGlvbiBndChXLFkpe2Zvcih2YXIgUj0tMSxGPVc9PW51bGw/MDpXLmxlbmd0aDsrK1I8RjspaWYoWShXW1JdLFIsVykpcmV0dXJuITA7cmV0dXJuITF9dmFyIE5zPVV0KCJsZW5ndGgiKTtmdW5jdGlvbiB6cyhXKXtyZXR1cm4gVy5zcGxpdCgiIil9ZnVuY3Rpb24gdnMoVyl7cmV0dXJuIFcubWF0Y2god1gpfHxbXX1mdW5jdGlvbiBIZShXLFksUil7dmFyIEY7cmV0dXJuIFIoVyxmdW5jdGlvbihULE8sb2wpe2lmKFkoVCxPLG9sKSlyZXR1cm4gRj1PLCExfSksRn1mdW5jdGlvbiBfZChXLFksUixGKXtmb3IodmFyIFQ9Vy5sZW5ndGgsTz1SKyhGPzE6LTEpO0Y/Ty0tOisrTzxUOylpZihZKFdbT10sTyxXKSlyZXR1cm4gTztyZXR1cm4tMX1mdW5jdGlvbiBMYyhXLFksUil7cmV0dXJuIFk9PT1ZP0VzKFcsWSxSKTpfZChXLGtlLFIpfWZ1bmN0aW9uIEhzKFcsWSxSLEYpe2Zvcih2YXIgVD1SLTEsTz1XLmxlbmd0aDsrK1Q8TzspaWYoRihXW1RdLFkpKXJldHVybiBUO3JldHVybi0xfWZ1bmN0aW9uIGtlKFcpe3JldHVybiBXIT09V31mdW5jdGlvbiBnZShXLFkpe3ZhciBSPVc9PW51bGw/MDpXLmxlbmd0aDtyZXR1cm4gUj9UdChXLFkpL1I6d2R9ZnVuY3Rpb24gVXQoVyl7cmV0dXJuIGZ1bmN0aW9uKFkpe3JldHVybiBZPT1udWxsP3Q6WVtXXX19ZnVuY3Rpb24gTXQoVyl7cmV0dXJuIGZ1bmN0aW9uKFkpe3JldHVybiBXPT1udWxsP3Q6V1tZXX19ZnVuY3Rpb24gVWUoVyxZLFIsRixUKXtyZXR1cm4gVChXLGZ1bmN0aW9uKE8sb2wsbmwpe1I9Rj8oRj0hMSxPKTpZKFIsTyxvbCxubCl9KSxSfWZ1bmN0aW9uIGtzKFcsWSl7dmFyIFI9Vy5sZW5ndGg7Zm9yKFcuc29ydChZKTtSLS07KVdbUl09V1tSXS52YWx1ZTtyZXR1cm4gV31mdW5jdGlvbiBUdChXLFkpe2Zvcih2YXIgUixGPS0xLFQ9Vy5sZW5ndGg7KytGPFQ7KXt2YXIgTz1ZKFdbRl0pO08hPT10JiYoUj1SPT09dD9POlIrTyl9cmV0dXJuIFJ9ZnVuY3Rpb24gQ3QoVyxZKXtmb3IodmFyIFI9LTEsRj1BcnJheShXKTsrK1I8VzspRltSXT1ZKFIpO3JldHVybiBGfWZ1bmN0aW9uIGdzKFcsWSl7cmV0dXJuIFpsKFksZnVuY3Rpb24oUil7cmV0dXJuW1IsV1tSXV19KX1mdW5jdGlvbiBNZShXKXtyZXR1cm4gVyYmVy5zbGljZSgwLFBlKFcpKzEpLnJlcGxhY2UoZnQsIiIpfWZ1bmN0aW9uIEhsKFcpe3JldHVybiBmdW5jdGlvbihZKXtyZXR1cm4gVyhZKX19ZnVuY3Rpb24gd3QoVyxZKXtyZXR1cm4gWmwoWSxmdW5jdGlvbihSKXtyZXR1cm4gV1tSXX0pfWZ1bmN0aW9uIG5kKFcsWSl7cmV0dXJuIFcuaGFzKFkpfWZ1bmN0aW9uIFRlKFcsWSl7Zm9yKHZhciBSPS0xLEY9Vy5sZW5ndGg7KytSPEYmJkxjKFksV1tSXSwwKT4tMTspO3JldHVybiBSfWZ1bmN0aW9uIENlKFcsWSl7Zm9yKHZhciBSPVcubGVuZ3RoO1ItLSYmTGMoWSxXW1JdLDApPi0xOyk7cmV0dXJuIFJ9ZnVuY3Rpb24gVXMoVyxZKXtmb3IodmFyIFI9Vy5sZW5ndGgsRj0wO1ItLTspV1tSXT09PVkmJisrRjtyZXR1cm4gRn12YXIgTXM9TXQoUnMpLFRzPU10KExzKTtmdW5jdGlvbiBDcyhXKXtyZXR1cm4iXFwiK1NzW1ddfWZ1bmN0aW9uIHdzKFcsWSl7cmV0dXJuIFc9PW51bGw/dDpXW1ldfWZ1bmN0aW9uIFljKFcpe3JldHVybiBycy50ZXN0KFcpfWZ1bmN0aW9uIFBzKFcpe3JldHVybiBocy50ZXN0KFcpfWZ1bmN0aW9uIEJzKFcpe2Zvcih2YXIgWSxSPVtdOyEoWT1XLm5leHQoKSkuZG9uZTspUi5wdXNoKFkudmFsdWUpO3JldHVybiBSfWZ1bmN0aW9uIFB0KFcpe3ZhciBZPS0xLFI9QXJyYXkoVy5zaXplKTtyZXR1cm4gVy5mb3JFYWNoKGZ1bmN0aW9uKEYsVCl7UlsrK1ldPVtULEZdfSksUn1mdW5jdGlvbiB3ZShXLFkpe3JldHVybiBmdW5jdGlvbihSKXtyZXR1cm4gVyhZKFIpKX19ZnVuY3Rpb24gem4oVyxZKXtmb3IodmFyIFI9LTEsRj1XLmxlbmd0aCxUPTAsTz1bXTsrK1I8Rjspe3ZhciBvbD1XW1JdOyhvbD09PVl8fG9sPT09eSkmJihXW1JdPXksT1tUKytdPVIpfXJldHVybiBPfWZ1bmN0aW9uIHFkKFcpe3ZhciBZPS0xLFI9QXJyYXkoVy5zaXplKTtyZXR1cm4gVy5mb3JFYWNoKGZ1bmN0aW9uKEYpe1JbKytZXT1GfSksUn1mdW5jdGlvbiBRcyhXKXt2YXIgWT0tMSxSPUFycmF5KFcuc2l6ZSk7cmV0dXJuIFcuZm9yRWFjaChmdW5jdGlvbihGKXtSWysrWV09W0YsRl19KSxSfWZ1bmN0aW9uIEVzKFcsWSxSKXtmb3IodmFyIEY9Ui0xLFQ9Vy5sZW5ndGg7KytGPFQ7KWlmKFdbRl09PT1ZKXJldHVybiBGO3JldHVybi0xfWZ1bmN0aW9uIGpzKFcsWSxSKXtmb3IodmFyIEY9UisxO0YtLTspaWYoV1tGXT09PVkpcmV0dXJuIEY7cmV0dXJuIEZ9ZnVuY3Rpb24gU2MoVyl7cmV0dXJuIFljKFcpP09zKFcpOk5zKFcpfWZ1bmN0aW9uICRsKFcpe3JldHVybiBZYyhXKT9BcyhXKTp6cyhXKX1mdW5jdGlvbiBQZShXKXtmb3IodmFyIFk9Vy5sZW5ndGg7WS0tJiZVWC50ZXN0KFcuY2hhckF0KFkpKTspO3JldHVybiBZfXZhciBEcz1NdChZcyk7ZnVuY3Rpb24gT3MoVyl7Zm9yKHZhciBZPU50Lmxhc3RJbmRleD0wO050LnRlc3QoVyk7KSsrWTtyZXR1cm4gWX1mdW5jdGlvbiBBcyhXKXtyZXR1cm4gVy5tYXRjaChOdCl8fFtdfWZ1bmN0aW9uIF9zKFcpe3JldHVybiBXLm1hdGNoKFdzKXx8W119dmFyIHFzPWZ1bmN0aW9uIFcoWSl7WT1ZPT1udWxsP2hsOnhjLmRlZmF1bHRzKGhsLk9iamVjdCgpLFkseGMucGljayhobCxWcykpO3ZhciBSPVkuQXJyYXksRj1ZLkRhdGUsVD1ZLkVycm9yLE89WS5GdW5jdGlvbixvbD1ZLk1hdGgsbmw9WS5PYmplY3QsQnQ9WS5SZWdFeHAsJHM9WS5TdHJpbmcsd2w9WS5UeXBlRXJyb3IsJGQ9Ui5wcm90b3R5cGUsbHA9Ty5wcm90b3R5cGUsZmM9bmwucHJvdG90eXBlLGxaPVlbIl9fY29yZS1qc19zaGFyZWRfXyJdLG5aPWxwLnRvU3RyaW5nLGxsPWZjLmhhc093blByb3BlcnR5LG5wPTAsQmU9ZnVuY3Rpb24oKXt2YXIgbD0vW14uXSskLy5leGVjKGxaJiZsWi5rZXlzJiZsWi5rZXlzLklFX1BST1RPfHwiIik7cmV0dXJuIGw/IlN5bWJvbChzcmMpXzEuIitsOiIifSgpLGNaPWZjLnRvU3RyaW5nLGNwPW5aLmNhbGwobmwpLGRwPWhsLl8sWnA9QnQoIl4iK25aLmNhbGwobGwpLnJlcGxhY2UoeHQsIlxcJCYiKS5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcKCl8IGZvciAuKz8oPz1cXFxdKS9nLCIkMS4qPyIpKyIkIiksZFo9ZmU/WS5CdWZmZXI6dCx2bj1ZLlN5bWJvbCxaWj1ZLlVpbnQ4QXJyYXksUWU9ZFo/ZFouYWxsb2NVbnNhZmU6dCx0Wj13ZShubC5nZXRQcm90b3R5cGVPZixubCksRWU9bmwuY3JlYXRlLGplPWZjLnByb3BlcnR5SXNFbnVtZXJhYmxlLHVaPSRkLnNwbGljZSxEZT12bj92bi5pc0NvbmNhdFNwcmVhZGFibGU6dCxjZD12bj92bi5pdGVyYXRvcjp0LGNjPXZuP3ZuLnRvU3RyaW5nVGFnOnQsaVo9ZnVuY3Rpb24oKXt0cnl7dmFyIGw9aWMobmwsImRlZmluZVByb3BlcnR5Iik7cmV0dXJuIGwoe30sIiIse30pLGx9Y2F0Y2h7fX0oKSx0cD1ZLmNsZWFyVGltZW91dCE9PWhsLmNsZWFyVGltZW91dCYmWS5jbGVhclRpbWVvdXQsdXA9RiYmRi5ub3chPT1obC5EYXRlLm5vdyYmRi5ub3csaXA9WS5zZXRUaW1lb3V0IT09aGwuc2V0VGltZW91dCYmWS5zZXRUaW1lb3V0LGVaPW9sLmNlaWwsbVo9b2wuZmxvb3IsUXQ9bmwuZ2V0T3duUHJvcGVydHlTeW1ib2xzLGVwPWRaP2RaLmlzQnVmZmVyOnQsT2U9WS5pc0Zpbml0ZSxtcD0kZC5qb2luLGFwPXdlKG5sLmtleXMsbmwpLFhsPW9sLm1heCxSbD1vbC5taW4sYnA9Ri5ub3csR3A9WS5wYXJzZUludCxBZT1vbC5yYW5kb20sb3A9JGQucmV2ZXJzZSxFdD1pYyhZLCJEYXRhVmlldyIpLGRkPWljKFksIk1hcCIpLGp0PWljKFksIlByb21pc2UiKSxKYz1pYyhZLCJTZXQiKSxaZD1pYyhZLCJXZWFrTWFwIiksdGQ9aWMobmwsImNyZWF0ZSIpLGFaPVpkJiZuZXcgWmQsSWM9e30sWHA9ZWMoRXQpLHNwPWVjKGRkKSxwcD1lYyhqdCksV3A9ZWMoSmMpLHJwPWVjKFpkKSxiWj12bj92bi5wcm90b3R5cGU6dCx1ZD1iWj9iWi52YWx1ZU9mOnQsX2U9Ylo/YloudG9TdHJpbmc6dDtmdW5jdGlvbiBhKGwpe2lmKHVsKGwpJiYhQyhsKSYmIShsIGluc3RhbmNlb2Ygaikpe2lmKGwgaW5zdGFuY2VvZiBQbClyZXR1cm4gbDtpZihsbC5jYWxsKGwsIl9fd3JhcHBlZF9fIikpcmV0dXJuIHFtKGwpfXJldHVybiBuZXcgUGwobCl9dmFyIEtjPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbCgpe31yZXR1cm4gZnVuY3Rpb24obil7aWYoIXRsKG4pKXJldHVybnt9O2lmKEVlKXJldHVybiBFZShuKTtsLnByb3RvdHlwZT1uO3ZhciBkPW5ldyBsO3JldHVybiBsLnByb3RvdHlwZT10LGR9fSgpO2Z1bmN0aW9uIEdaKCl7fWZ1bmN0aW9uIFBsKGwsbil7dGhpcy5fX3dyYXBwZWRfXz1sLHRoaXMuX19hY3Rpb25zX189W10sdGhpcy5fX2NoYWluX189ISFuLHRoaXMuX19pbmRleF9fPTAsdGhpcy5fX3ZhbHVlc19fPXR9YS50ZW1wbGF0ZVNldHRpbmdzPXtlc2NhcGU6TlgsZXZhbHVhdGU6elgsaW50ZXJwb2xhdGU6dWUsdmFyaWFibGU6IiIsaW1wb3J0czp7XzphfX0sYS5wcm90b3R5cGU9R1oucHJvdG90eXBlLGEucHJvdG90eXBlLmNvbnN0cnVjdG9yPWEsUGwucHJvdG90eXBlPUtjKEdaLnByb3RvdHlwZSksUGwucHJvdG90eXBlLmNvbnN0cnVjdG9yPVBsO2Z1bmN0aW9uIGoobCl7dGhpcy5fX3dyYXBwZWRfXz1sLHRoaXMuX19hY3Rpb25zX189W10sdGhpcy5fX2Rpcl9fPTEsdGhpcy5fX2ZpbHRlcmVkX189ITEsdGhpcy5fX2l0ZXJhdGVlc19fPVtdLHRoaXMuX190YWtlQ291bnRfXz10bix0aGlzLl9fdmlld3NfXz1bXX1mdW5jdGlvbiBocCgpe3ZhciBsPW5ldyBqKHRoaXMuX193cmFwcGVkX18pO3JldHVybiBsLl9fYWN0aW9uc19fPUpsKHRoaXMuX19hY3Rpb25zX18pLGwuX19kaXJfXz10aGlzLl9fZGlyX18sbC5fX2ZpbHRlcmVkX189dGhpcy5fX2ZpbHRlcmVkX18sbC5fX2l0ZXJhdGVlc19fPUpsKHRoaXMuX19pdGVyYXRlZXNfXyksbC5fX3Rha2VDb3VudF9fPXRoaXMuX190YWtlQ291bnRfXyxsLl9fdmlld3NfXz1KbCh0aGlzLl9fdmlld3NfXyksbH1mdW5jdGlvbiBWcCgpe2lmKHRoaXMuX19maWx0ZXJlZF9fKXt2YXIgbD1uZXcgaih0aGlzKTtsLl9fZGlyX189LTEsbC5fX2ZpbHRlcmVkX189ITB9ZWxzZSBsPXRoaXMuY2xvbmUoKSxsLl9fZGlyX18qPS0xO3JldHVybiBsfWZ1bmN0aW9uIHlwKCl7dmFyIGw9dGhpcy5fX3dyYXBwZWRfXy52YWx1ZSgpLG49dGhpcy5fX2Rpcl9fLGQ9QyhsKSx1PW48MCxtPWQ/bC5sZW5ndGg6MCxiPXpXKDAsbSx0aGlzLl9fdmlld3NfXyksWD1iLnN0YXJ0LHA9Yi5lbmQscj1wLVgsUz11P3A6WC0xLGY9dGhpcy5fX2l0ZXJhdGVlc19fLEo9Zi5sZW5ndGgsSz0wLE49Umwocix0aGlzLl9fdGFrZUNvdW50X18pO2lmKCFkfHwhdSYmbT09ciYmTj09cilyZXR1cm4geW0obCx0aGlzLl9fYWN0aW9uc19fKTt2YXIgZz1bXTtsOmZvcig7ci0tJiZLPE47KXtTKz1uO2Zvcih2YXIgQj0tMSxVPWxbU107KytCPEo7KXt2YXIgRT1mW0JdLEQ9RS5pdGVyYXRlZSxVbD1FLnR5cGUsZmw9RChVKTtpZihVbD09c1gpVT1mbDtlbHNlIGlmKCFmbCl7aWYoVWw9PW5lKWNvbnRpbnVlIGw7YnJlYWsgbH19Z1tLKytdPVV9cmV0dXJuIGd9ai5wcm90b3R5cGU9S2MoR1oucHJvdG90eXBlKSxqLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1qO2Z1bmN0aW9uIGRjKGwpe3ZhciBuPS0xLGQ9bD09bnVsbD8wOmwubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytuPGQ7KXt2YXIgdT1sW25dO3RoaXMuc2V0KHVbMF0sdVsxXSl9fWZ1bmN0aW9uIFJwKCl7dGhpcy5fX2RhdGFfXz10ZD90ZChudWxsKTp7fSx0aGlzLnNpemU9MH1mdW5jdGlvbiBMcChsKXt2YXIgbj10aGlzLmhhcyhsKSYmZGVsZXRlIHRoaXMuX19kYXRhX19bbF07cmV0dXJuIHRoaXMuc2l6ZS09bj8xOjAsbn1mdW5jdGlvbiBZcChsKXt2YXIgbj10aGlzLl9fZGF0YV9fO2lmKHRkKXt2YXIgZD1uW2xdO3JldHVybiBkPT09Vj90OmR9cmV0dXJuIGxsLmNhbGwobixsKT9uW2xdOnR9ZnVuY3Rpb24gU3AobCl7dmFyIG49dGhpcy5fX2RhdGFfXztyZXR1cm4gdGQ/bltsXSE9PXQ6bGwuY2FsbChuLGwpfWZ1bmN0aW9uIHhwKGwsbil7dmFyIGQ9dGhpcy5fX2RhdGFfXztyZXR1cm4gdGhpcy5zaXplKz10aGlzLmhhcyhsKT8wOjEsZFtsXT10ZCYmbj09PXQ/VjpuLHRoaXN9ZGMucHJvdG90eXBlLmNsZWFyPVJwLGRjLnByb3RvdHlwZS5kZWxldGU9THAsZGMucHJvdG90eXBlLmdldD1ZcCxkYy5wcm90b3R5cGUuaGFzPVNwLGRjLnByb3RvdHlwZS5zZXQ9eHA7ZnVuY3Rpb24gV24obCl7dmFyIG49LTEsZD1sPT1udWxsPzA6bC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK248ZDspe3ZhciB1PWxbbl07dGhpcy5zZXQodVswXSx1WzFdKX19ZnVuY3Rpb24gZnAoKXt0aGlzLl9fZGF0YV9fPVtdLHRoaXMuc2l6ZT0wfWZ1bmN0aW9uIEpwKGwpe3ZhciBuPXRoaXMuX19kYXRhX18sZD1vWihuLGwpO2lmKGQ8MClyZXR1cm4hMTt2YXIgdT1uLmxlbmd0aC0xO3JldHVybiBkPT11P24ucG9wKCk6dVouY2FsbChuLGQsMSksLS10aGlzLnNpemUsITB9ZnVuY3Rpb24gSXAobCl7dmFyIG49dGhpcy5fX2RhdGFfXyxkPW9aKG4sbCk7cmV0dXJuIGQ8MD90Om5bZF1bMV19ZnVuY3Rpb24gS3AobCl7cmV0dXJuIG9aKHRoaXMuX19kYXRhX18sbCk+LTF9ZnVuY3Rpb24gRnAobCxuKXt2YXIgZD10aGlzLl9fZGF0YV9fLHU9b1ooZCxsKTtyZXR1cm4gdTwwPygrK3RoaXMuc2l6ZSxkLnB1c2goW2wsbl0pKTpkW3VdWzFdPW4sdGhpc31Xbi5wcm90b3R5cGUuY2xlYXI9ZnAsV24ucHJvdG90eXBlLmRlbGV0ZT1KcCxXbi5wcm90b3R5cGUuZ2V0PUlwLFduLnByb3RvdHlwZS5oYXM9S3AsV24ucHJvdG90eXBlLnNldD1GcDtmdW5jdGlvbiBybihsKXt2YXIgbj0tMSxkPWw9PW51bGw/MDpsLmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrbjxkOyl7dmFyIHU9bFtuXTt0aGlzLnNldCh1WzBdLHVbMV0pfX1mdW5jdGlvbiBOcCgpe3RoaXMuc2l6ZT0wLHRoaXMuX19kYXRhX189e2hhc2g6bmV3IGRjLG1hcDpuZXcoZGR8fFduKSxzdHJpbmc6bmV3IGRjfX1mdW5jdGlvbiB6cChsKXt2YXIgbj1TWih0aGlzLGwpLmRlbGV0ZShsKTtyZXR1cm4gdGhpcy5zaXplLT1uPzE6MCxufWZ1bmN0aW9uIHZwKGwpe3JldHVybiBTWih0aGlzLGwpLmdldChsKX1mdW5jdGlvbiBIcChsKXtyZXR1cm4gU1oodGhpcyxsKS5oYXMobCl9ZnVuY3Rpb24ga3AobCxuKXt2YXIgZD1TWih0aGlzLGwpLHU9ZC5zaXplO3JldHVybiBkLnNldChsLG4pLHRoaXMuc2l6ZSs9ZC5zaXplPT11PzA6MSx0aGlzfXJuLnByb3RvdHlwZS5jbGVhcj1OcCxybi5wcm90b3R5cGUuZGVsZXRlPXpwLHJuLnByb3RvdHlwZS5nZXQ9dnAscm4ucHJvdG90eXBlLmhhcz1IcCxybi5wcm90b3R5cGUuc2V0PWtwO2Z1bmN0aW9uIFpjKGwpe3ZhciBuPS0xLGQ9bD09bnVsbD8wOmwubGVuZ3RoO2Zvcih0aGlzLl9fZGF0YV9fPW5ldyBybjsrK248ZDspdGhpcy5hZGQobFtuXSl9ZnVuY3Rpb24gZ3AobCl7cmV0dXJuIHRoaXMuX19kYXRhX18uc2V0KGwsViksdGhpc31mdW5jdGlvbiBVcChsKXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5oYXMobCl9WmMucHJvdG90eXBlLmFkZD1aYy5wcm90b3R5cGUucHVzaD1ncCxaYy5wcm90b3R5cGUuaGFzPVVwO2Z1bmN0aW9uIGxuKGwpe3ZhciBuPXRoaXMuX19kYXRhX189bmV3IFduKGwpO3RoaXMuc2l6ZT1uLnNpemV9ZnVuY3Rpb24gTXAoKXt0aGlzLl9fZGF0YV9fPW5ldyBXbix0aGlzLnNpemU9MH1mdW5jdGlvbiBUcChsKXt2YXIgbj10aGlzLl9fZGF0YV9fLGQ9bi5kZWxldGUobCk7cmV0dXJuIHRoaXMuc2l6ZT1uLnNpemUsZH1mdW5jdGlvbiBDcChsKXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5nZXQobCl9ZnVuY3Rpb24gd3AobCl7cmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKGwpfWZ1bmN0aW9uIFBwKGwsbil7dmFyIGQ9dGhpcy5fX2RhdGFfXztpZihkIGluc3RhbmNlb2YgV24pe3ZhciB1PWQuX19kYXRhX187aWYoIWRkfHx1Lmxlbmd0aDxlLTEpcmV0dXJuIHUucHVzaChbbCxuXSksdGhpcy5zaXplPSsrZC5zaXplLHRoaXM7ZD10aGlzLl9fZGF0YV9fPW5ldyBybih1KX1yZXR1cm4gZC5zZXQobCxuKSx0aGlzLnNpemU9ZC5zaXplLHRoaXN9bG4ucHJvdG90eXBlLmNsZWFyPU1wLGxuLnByb3RvdHlwZS5kZWxldGU9VHAsbG4ucHJvdG90eXBlLmdldD1DcCxsbi5wcm90b3R5cGUuaGFzPXdwLGxuLnByb3RvdHlwZS5zZXQ9UHA7ZnVuY3Rpb24gcWUobCxuKXt2YXIgZD1DKGwpLHU9IWQmJm1jKGwpLG09IWQmJiF1JiZNbihsKSxiPSFkJiYhdSYmIW0mJnZjKGwpLFg9ZHx8dXx8bXx8YixwPVg/Q3QobC5sZW5ndGgsJHMpOltdLHI9cC5sZW5ndGg7Zm9yKHZhciBTIGluIGwpKG58fGxsLmNhbGwobCxTKSkmJiEoWCYmKFM9PSJsZW5ndGgifHxtJiYoUz09Im9mZnNldCJ8fFM9PSJwYXJlbnQiKXx8YiYmKFM9PSJidWZmZXIifHxTPT0iYnl0ZUxlbmd0aCJ8fFM9PSJieXRlT2Zmc2V0Iil8fFJuKFMscikpKSYmcC5wdXNoKFMpO3JldHVybiBwfWZ1bmN0aW9uICRlKGwpe3ZhciBuPWwubGVuZ3RoO3JldHVybiBuP2xbWnUoMCxuLTEpXTp0fWZ1bmN0aW9uIEJwKGwsbil7cmV0dXJuIHhaKEpsKGwpLHRjKG4sMCxsLmxlbmd0aCkpfWZ1bmN0aW9uIFFwKGwpe3JldHVybiB4WihKbChsKSl9ZnVuY3Rpb24gRHQobCxuLGQpeyhkIT09dCYmIW5uKGxbbl0sZCl8fGQ9PT10JiYhKG4gaW4gbCkpJiZobihsLG4sZCl9ZnVuY3Rpb24gaWQobCxuLGQpe3ZhciB1PWxbbl07KCEobGwuY2FsbChsLG4pJiZubih1LGQpKXx8ZD09PXQmJiEobiBpbiBsKSkmJmhuKGwsbixkKX1mdW5jdGlvbiBvWihsLG4pe2Zvcih2YXIgZD1sLmxlbmd0aDtkLS07KWlmKG5uKGxbZF1bMF0sbikpcmV0dXJuIGQ7cmV0dXJuLTF9ZnVuY3Rpb24gRXAobCxuLGQsdSl7cmV0dXJuIEhuKGwsZnVuY3Rpb24obSxiLFgpe24odSxtLGQobSksWCl9KSx1fWZ1bmN0aW9uIGxtKGwsbil7cmV0dXJuIGwmJmVuKG4scGwobiksbCl9ZnVuY3Rpb24ganAobCxuKXtyZXR1cm4gbCYmZW4obixLbChuKSxsKX1mdW5jdGlvbiBobihsLG4sZCl7bj09Il9fcHJvdG9fXyImJmlaP2laKGwsbix7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsdmFsdWU6ZCx3cml0YWJsZTohMH0pOmxbbl09ZH1mdW5jdGlvbiBPdChsLG4pe2Zvcih2YXIgZD0tMSx1PW4ubGVuZ3RoLG09Uih1KSxiPWw9PW51bGw7KytkPHU7KW1bZF09Yj90Okl1KGwsbltkXSk7cmV0dXJuIG19ZnVuY3Rpb24gdGMobCxuLGQpe3JldHVybiBsPT09bCYmKGQhPT10JiYobD1sPD1kP2w6ZCksbiE9PXQmJihsPWw+PW4/bDpuKSksbH1mdW5jdGlvbiBCbChsLG4sZCx1LG0sYil7dmFyIFgscD1uJkwscj1uJngsUz1uJkk7aWYoZCYmKFg9bT9kKGwsdSxtLGIpOmQobCkpLFghPT10KXJldHVybiBYO2lmKCF0bChsKSlyZXR1cm4gbDt2YXIgZj1DKGwpO2lmKGYpe2lmKFg9SFcobCksIXApcmV0dXJuIEpsKGwsWCl9ZWxzZXt2YXIgSj1MbChsKSxLPUo9PVFkfHxKPT1jZTtpZihNbihsKSlyZXR1cm4gWW0obCxwKTtpZihKPT1wbnx8Sj09VmN8fEsmJiFtKXtpZihYPXJ8fEs/e306UG0obCksIXApcmV0dXJuIHI/WVcobCxqcChYLGwpKTpMVyhsLGxtKFgsbCkpfWVsc2V7aWYoIWNsW0pdKXJldHVybiBtP2w6e307WD1rVyhsLEoscCl9fWJ8fChiPW5ldyBsbik7dmFyIE49Yi5nZXQobCk7aWYoTilyZXR1cm4gTjtiLnNldChsLFgpLHJhKGwpP2wuZm9yRWFjaChmdW5jdGlvbihVKXtYLmFkZChCbChVLG4sZCxVLGwsYikpfSk6cGEobCkmJmwuZm9yRWFjaChmdW5jdGlvbihVLEUpe1guc2V0KEUsQmwoVSxuLGQsRSxsLGIpKX0pO3ZhciBnPVM/cj9zdTpYdTpyP0tsOnBsLEI9Zj90OmcobCk7cmV0dXJuIENsKEJ8fGwsZnVuY3Rpb24oVSxFKXtCJiYoRT1VLFU9bFtFXSksaWQoWCxFLEJsKFUsbixkLEUsbCxiKSl9KSxYfWZ1bmN0aW9uIERwKGwpe3ZhciBuPXBsKGwpO3JldHVybiBmdW5jdGlvbihkKXtyZXR1cm4gbm0oZCxsLG4pfX1mdW5jdGlvbiBubShsLG4sZCl7dmFyIHU9ZC5sZW5ndGg7aWYobD09bnVsbClyZXR1cm4hdTtmb3IobD1ubChsKTt1LS07KXt2YXIgbT1kW3VdLGI9blttXSxYPWxbbV07aWYoWD09PXQmJiEobSBpbiBsKXx8IWIoWCkpcmV0dXJuITF9cmV0dXJuITB9ZnVuY3Rpb24gY20obCxuLGQpe2lmKHR5cGVvZiBsIT0iZnVuY3Rpb24iKXRocm93IG5ldyB3bChvKTtyZXR1cm4gWGQoZnVuY3Rpb24oKXtsLmFwcGx5KHQsZCl9LG4pfWZ1bmN0aW9uIGVkKGwsbixkLHUpe3ZhciBtPS0xLGI9QWQsWD0hMCxwPWwubGVuZ3RoLHI9W10sUz1uLmxlbmd0aDtpZighcClyZXR1cm4gcjtkJiYobj1abChuLEhsKGQpKSksdT8oYj1IdCxYPSExKTpuLmxlbmd0aD49ZSYmKGI9bmQsWD0hMSxuPW5ldyBaYyhuKSk7bDpmb3IoOysrbTxwOyl7dmFyIGY9bFttXSxKPWQ9PW51bGw/ZjpkKGYpO2lmKGY9dXx8ZiE9PTA/ZjowLFgmJko9PT1KKXtmb3IodmFyIEs9UztLLS07KWlmKG5bS109PT1KKWNvbnRpbnVlIGw7ci5wdXNoKGYpfWVsc2UgYihuLEosdSl8fHIucHVzaChmKX1yZXR1cm4gcn12YXIgSG49SW0odW4pLGRtPUltKF90LCEwKTtmdW5jdGlvbiBPcChsLG4pe3ZhciBkPSEwO3JldHVybiBIbihsLGZ1bmN0aW9uKHUsbSxiKXtyZXR1cm4gZD0hIW4odSxtLGIpLGR9KSxkfWZ1bmN0aW9uIFhaKGwsbixkKXtmb3IodmFyIHU9LTEsbT1sLmxlbmd0aDsrK3U8bTspe3ZhciBiPWxbdV0sWD1uKGIpO2lmKFghPW51bGwmJihwPT09dD9YPT09WCYmIWdsKFgpOmQoWCxwKSkpdmFyIHA9WCxyPWJ9cmV0dXJuIHJ9ZnVuY3Rpb24gQXAobCxuLGQsdSl7dmFyIG09bC5sZW5ndGg7Zm9yKGQ9UChkKSxkPDAmJihkPS1kPm0/MDptK2QpLHU9dT09PXR8fHU+bT9tOlAodSksdTwwJiYodSs9bSksdT1kPnU/MDpWYSh1KTtkPHU7KWxbZCsrXT1uO3JldHVybiBsfWZ1bmN0aW9uIFptKGwsbil7dmFyIGQ9W107cmV0dXJuIEhuKGwsZnVuY3Rpb24odSxtLGIpe24odSxtLGIpJiZkLnB1c2godSl9KSxkfWZ1bmN0aW9uIFZsKGwsbixkLHUsbSl7dmFyIGI9LTEsWD1sLmxlbmd0aDtmb3IoZHx8KGQ9VVcpLG18fChtPVtdKTsrK2I8WDspe3ZhciBwPWxbYl07bj4wJiZkKHApP24+MT9WbChwLG4tMSxkLHUsbSk6Tm4obSxwKTp1fHwobVttLmxlbmd0aF09cCl9cmV0dXJuIG19dmFyIEF0PUttKCksdG09S20oITApO2Z1bmN0aW9uIHVuKGwsbil7cmV0dXJuIGwmJkF0KGwsbixwbCl9ZnVuY3Rpb24gX3QobCxuKXtyZXR1cm4gbCYmdG0obCxuLHBsKX1mdW5jdGlvbiBzWihsLG4pe3JldHVybiBGbihuLGZ1bmN0aW9uKGQpe3JldHVybiBMbihsW2RdKX0pfWZ1bmN0aW9uIHVjKGwsbil7bj1nbihuLGwpO2Zvcih2YXIgZD0wLHU9bi5sZW5ndGg7bCE9bnVsbCYmZDx1OylsPWxbbW4obltkKytdKV07cmV0dXJuIGQmJmQ9PXU/bDp0fWZ1bmN0aW9uIHVtKGwsbixkKXt2YXIgdT1uKGwpO3JldHVybiBDKGwpP3U6Tm4odSxkKGwpKX1mdW5jdGlvbiBTbChsKXtyZXR1cm4gbD09bnVsbD9sPT09dD9TWDpMWDpjYyYmY2MgaW4gbmwobCk/TlcobCk6UVcobCl9ZnVuY3Rpb24gcXQobCxuKXtyZXR1cm4gbD5ufWZ1bmN0aW9uIF9wKGwsbil7cmV0dXJuIGwhPW51bGwmJmxsLmNhbGwobCxuKX1mdW5jdGlvbiBxcChsLG4pe3JldHVybiBsIT1udWxsJiZuIGluIG5sKGwpfWZ1bmN0aW9uICRwKGwsbixkKXtyZXR1cm4gbD49UmwobixkKSYmbDxYbChuLGQpfWZ1bmN0aW9uICR0KGwsbixkKXtmb3IodmFyIHU9ZD9IdDpBZCxtPWxbMF0ubGVuZ3RoLGI9bC5sZW5ndGgsWD1iLHA9UihiKSxyPTEvMCxTPVtdO1gtLTspe3ZhciBmPWxbWF07WCYmbiYmKGY9WmwoZixIbChuKSkpLHI9UmwoZi5sZW5ndGgscikscFtYXT0hZCYmKG58fG0+PTEyMCYmZi5sZW5ndGg+PTEyMCk/bmV3IFpjKFgmJmYpOnR9Zj1sWzBdO3ZhciBKPS0xLEs9cFswXTtsOmZvcig7KytKPG0mJlMubGVuZ3RoPHI7KXt2YXIgTj1mW0pdLGc9bj9uKE4pOk47aWYoTj1kfHxOIT09MD9OOjAsIShLP25kKEssZyk6dShTLGcsZCkpKXtmb3IoWD1iOy0tWDspe3ZhciBCPXBbWF07aWYoIShCP25kKEIsZyk6dShsW1hdLGcsZCkpKWNvbnRpbnVlIGx9SyYmSy5wdXNoKGcpLFMucHVzaChOKX19cmV0dXJuIFN9ZnVuY3Rpb24gbFcobCxuLGQsdSl7cmV0dXJuIHVuKGwsZnVuY3Rpb24obSxiLFgpe24odSxkKG0pLGIsWCl9KSx1fWZ1bmN0aW9uIG1kKGwsbixkKXtuPWduKG4sbCksbD1qbShsLG4pO3ZhciB1PWw9PW51bGw/bDpsW21uKEVsKG4pKV07cmV0dXJuIHU9PW51bGw/dDp2bCh1LGwsZCl9ZnVuY3Rpb24gaW0obCl7cmV0dXJuIHVsKGwpJiZTbChsKT09VmN9ZnVuY3Rpb24gblcobCl7cmV0dXJuIHVsKGwpJiZTbChsKT09bGR9ZnVuY3Rpb24gY1cobCl7cmV0dXJuIHVsKGwpJiZTbChsKT09T2N9ZnVuY3Rpb24gYWQobCxuLGQsdSxtKXtyZXR1cm4gbD09PW4/ITA6bD09bnVsbHx8bj09bnVsbHx8IXVsKGwpJiYhdWwobik/bCE9PWwmJm4hPT1uOmRXKGwsbixkLHUsYWQsbSl9ZnVuY3Rpb24gZFcobCxuLGQsdSxtLGIpe3ZhciBYPUMobCkscD1DKG4pLHI9WD9QZDpMbChsKSxTPXA/UGQ6TGwobik7cj1yPT1WYz9wbjpyLFM9Uz09VmM/cG46Uzt2YXIgZj1yPT1wbixKPVM9PXBuLEs9cj09UztpZihLJiZNbihsKSl7aWYoIU1uKG4pKXJldHVybiExO1g9ITAsZj0hMX1pZihLJiYhZilyZXR1cm4gYnx8KGI9bmV3IGxuKSxYfHx2YyhsKT9UbShsLG4sZCx1LG0sYik6S1cobCxuLHIsZCx1LG0sYik7aWYoIShkJnYpKXt2YXIgTj1mJiZsbC5jYWxsKGwsIl9fd3JhcHBlZF9fIiksZz1KJiZsbC5jYWxsKG4sIl9fd3JhcHBlZF9fIik7aWYoTnx8Zyl7dmFyIEI9Tj9sLnZhbHVlKCk6bCxVPWc/bi52YWx1ZSgpOm47cmV0dXJuIGJ8fChiPW5ldyBsbiksbShCLFUsZCx1LGIpfX1yZXR1cm4gSz8oYnx8KGI9bmV3IGxuKSxGVyhsLG4sZCx1LG0sYikpOiExfWZ1bmN0aW9uIFpXKGwpe3JldHVybiB1bChsKSYmTGwobCk9PV9sfWZ1bmN0aW9uIGx1KGwsbixkLHUpe3ZhciBtPWQubGVuZ3RoLGI9bSxYPSF1O2lmKGw9PW51bGwpcmV0dXJuIWI7Zm9yKGw9bmwobCk7bS0tOyl7dmFyIHA9ZFttXTtpZihYJiZwWzJdP3BbMV0hPT1sW3BbMF1dOiEocFswXWluIGwpKXJldHVybiExfWZvcig7KyttPGI7KXtwPWRbbV07dmFyIHI9cFswXSxTPWxbcl0sZj1wWzFdO2lmKFgmJnBbMl0pe2lmKFM9PT10JiYhKHIgaW4gbCkpcmV0dXJuITF9ZWxzZXt2YXIgSj1uZXcgbG47aWYodSl2YXIgSz11KFMsZixyLGwsbixKKTtpZighKEs9PT10P2FkKGYsUyx2fHosdSxKKTpLKSlyZXR1cm4hMX19cmV0dXJuITB9ZnVuY3Rpb24gZW0obCl7aWYoIXRsKGwpfHxUVyhsKSlyZXR1cm4hMTt2YXIgbj1MbihsKT9acDpEWDtyZXR1cm4gbi50ZXN0KGVjKGwpKX1mdW5jdGlvbiB0VyhsKXtyZXR1cm4gdWwobCkmJlNsKGwpPT1fY31mdW5jdGlvbiB1VyhsKXtyZXR1cm4gdWwobCkmJkxsKGwpPT1xbH1mdW5jdGlvbiBpVyhsKXtyZXR1cm4gdWwobCkmJk5aKGwubGVuZ3RoKSYmISFkbFtTbChsKV19ZnVuY3Rpb24gbW0obCl7cmV0dXJuIHR5cGVvZiBsPT0iZnVuY3Rpb24iP2w6bD09bnVsbD9GbDp0eXBlb2YgbD09Im9iamVjdCI/QyhsKT9HbShsWzBdLGxbMV0pOmJtKGwpOkZhKGwpfWZ1bmN0aW9uIG51KGwpe2lmKCFvZChsKSlyZXR1cm4gYXAobCk7dmFyIG49W107Zm9yKHZhciBkIGluIG5sKGwpKWxsLmNhbGwobCxkKSYmZCE9ImNvbnN0cnVjdG9yIiYmbi5wdXNoKGQpO3JldHVybiBufWZ1bmN0aW9uIGVXKGwpe2lmKCF0bChsKSlyZXR1cm4gQlcobCk7dmFyIG49b2QobCksZD1bXTtmb3IodmFyIHUgaW4gbCl1PT0iY29uc3RydWN0b3IiJiYobnx8IWxsLmNhbGwobCx1KSl8fGQucHVzaCh1KTtyZXR1cm4gZH1mdW5jdGlvbiBjdShsLG4pe3JldHVybiBsPG59ZnVuY3Rpb24gYW0obCxuKXt2YXIgZD0tMSx1PUlsKGwpP1IobC5sZW5ndGgpOltdO3JldHVybiBIbihsLGZ1bmN0aW9uKG0sYixYKXt1WysrZF09bihtLGIsWCl9KSx1fWZ1bmN0aW9uIGJtKGwpe3ZhciBuPVd1KGwpO3JldHVybiBuLmxlbmd0aD09MSYmblswXVsyXT9RbShuWzBdWzBdLG5bMF1bMV0pOmZ1bmN0aW9uKGQpe3JldHVybiBkPT09bHx8bHUoZCxsLG4pfX1mdW5jdGlvbiBHbShsLG4pe3JldHVybiBodShsKSYmQm0obik/UW0obW4obCksbik6ZnVuY3Rpb24oZCl7dmFyIHU9SXUoZCxsKTtyZXR1cm4gdT09PXQmJnU9PT1uP0t1KGQsbCk6YWQobix1LHZ8eil9fWZ1bmN0aW9uIHBaKGwsbixkLHUsbSl7bCE9PW4mJkF0KG4sZnVuY3Rpb24oYixYKXtpZihtfHwobT1uZXcgbG4pLHRsKGIpKW1XKGwsbixYLGQscFosdSxtKTtlbHNle3ZhciBwPXU/dSh5dShsLFgpLGIsWCsiIixsLG4sbSk6dDtwPT09dCYmKHA9YiksRHQobCxYLHApfX0sS2wpfWZ1bmN0aW9uIG1XKGwsbixkLHUsbSxiLFgpe3ZhciBwPXl1KGwsZCkscj15dShuLGQpLFM9WC5nZXQocik7aWYoUyl7RHQobCxkLFMpO3JldHVybn12YXIgZj1iP2IocCxyLGQrIiIsbCxuLFgpOnQsSj1mPT09dDtpZihKKXt2YXIgSz1DKHIpLE49IUsmJk1uKHIpLGc9IUsmJiFOJiZ2YyhyKTtmPXIsS3x8Tnx8Zz9DKHApP2Y9cDppbChwKT9mPUpsKHApOk4/KEo9ITEsZj1ZbShyLCEwKSk6Zz8oSj0hMSxmPVNtKHIsITApKTpmPVtdOnNkKHIpfHxtYyhyKT8oZj1wLG1jKHApP2Y9eWEocCk6KCF0bChwKXx8TG4ocCkpJiYoZj1QbShyKSkpOko9ITF9SiYmKFguc2V0KHIsZiksbShmLHIsdSxiLFgpLFguZGVsZXRlKHIpKSxEdChsLGQsZil9ZnVuY3Rpb24gb20obCxuKXt2YXIgZD1sLmxlbmd0aDtpZihkKXJldHVybiBuKz1uPDA/ZDowLFJuKG4sZCk/bFtuXTp0fWZ1bmN0aW9uIFhtKGwsbixkKXtuLmxlbmd0aD9uPVpsKG4sZnVuY3Rpb24oYil7cmV0dXJuIEMoYik/ZnVuY3Rpb24oWCl7cmV0dXJuIHVjKFgsYi5sZW5ndGg9PT0xP2JbMF06Yil9OmJ9KTpuPVtGbF07dmFyIHU9LTE7bj1abChuLEhsKGsoKSkpO3ZhciBtPWFtKGwsZnVuY3Rpb24oYixYLHApe3ZhciByPVpsKG4sZnVuY3Rpb24oUyl7cmV0dXJuIFMoYil9KTtyZXR1cm57Y3JpdGVyaWE6cixpbmRleDorK3UsdmFsdWU6Yn19KTtyZXR1cm4ga3MobSxmdW5jdGlvbihiLFgpe3JldHVybiBSVyhiLFgsZCl9KX1mdW5jdGlvbiBhVyhsLG4pe3JldHVybiBzbShsLG4sZnVuY3Rpb24oZCx1KXtyZXR1cm4gS3UobCx1KX0pfWZ1bmN0aW9uIHNtKGwsbixkKXtmb3IodmFyIHU9LTEsbT1uLmxlbmd0aCxiPXt9OysrdTxtOyl7dmFyIFg9blt1XSxwPXVjKGwsWCk7ZChwLFgpJiZiZChiLGduKFgsbCkscCl9cmV0dXJuIGJ9ZnVuY3Rpb24gYlcobCl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiB1YyhuLGwpfX1mdW5jdGlvbiBkdShsLG4sZCx1KXt2YXIgbT11P0hzOkxjLGI9LTEsWD1uLmxlbmd0aCxwPWw7Zm9yKGw9PT1uJiYobj1KbChuKSksZCYmKHA9WmwobCxIbChkKSkpOysrYjxYOylmb3IodmFyIHI9MCxTPW5bYl0sZj1kP2QoUyk6Uzsocj1tKHAsZixyLHUpKT4tMTspcCE9PWwmJnVaLmNhbGwocCxyLDEpLHVaLmNhbGwobCxyLDEpO3JldHVybiBsfWZ1bmN0aW9uIHBtKGwsbil7Zm9yKHZhciBkPWw/bi5sZW5ndGg6MCx1PWQtMTtkLS07KXt2YXIgbT1uW2RdO2lmKGQ9PXV8fG0hPT1iKXt2YXIgYj1tO1JuKG0pP3VaLmNhbGwobCxtLDEpOml1KGwsbSl9fXJldHVybiBsfWZ1bmN0aW9uIFp1KGwsbil7cmV0dXJuIGwrbVooQWUoKSoobi1sKzEpKX1mdW5jdGlvbiBHVyhsLG4sZCx1KXtmb3IodmFyIG09LTEsYj1YbChlWigobi1sKS8oZHx8MSkpLDApLFg9UihiKTtiLS07KVhbdT9iOisrbV09bCxsKz1kO3JldHVybiBYfWZ1bmN0aW9uIHR1KGwsbil7dmFyIGQ9IiI7aWYoIWx8fG48MXx8bj5LbilyZXR1cm4gZDtkbyBuJTImJihkKz1sKSxuPW1aKG4vMiksbiYmKGwrPWwpO3doaWxlKG4pO3JldHVybiBkfWZ1bmN0aW9uIFEobCxuKXtyZXR1cm4gUnUoRW0obCxuLEZsKSxsKyIiKX1mdW5jdGlvbiBvVyhsKXtyZXR1cm4gJGUoSGMobCkpfWZ1bmN0aW9uIFhXKGwsbil7dmFyIGQ9SGMobCk7cmV0dXJuIHhaKGQsdGMobiwwLGQubGVuZ3RoKSl9ZnVuY3Rpb24gYmQobCxuLGQsdSl7aWYoIXRsKGwpKXJldHVybiBsO249Z24obixsKTtmb3IodmFyIG09LTEsYj1uLmxlbmd0aCxYPWItMSxwPWw7cCE9bnVsbCYmKyttPGI7KXt2YXIgcj1tbihuW21dKSxTPWQ7aWYocj09PSJfX3Byb3RvX18ifHxyPT09ImNvbnN0cnVjdG9yInx8cj09PSJwcm90b3R5cGUiKXJldHVybiBsO2lmKG0hPVgpe3ZhciBmPXBbcl07Uz11P3UoZixyLHApOnQsUz09PXQmJihTPXRsKGYpP2Y6Um4oblttKzFdKT9bXTp7fSl9aWQocCxyLFMpLHA9cFtyXX1yZXR1cm4gbH12YXIgV209YVo/ZnVuY3Rpb24obCxuKXtyZXR1cm4gYVouc2V0KGwsbiksbH06Rmwsc1c9aVo/ZnVuY3Rpb24obCxuKXtyZXR1cm4gaVoobCwidG9TdHJpbmciLHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMSx2YWx1ZTpOdShuKSx3cml0YWJsZTohMH0pfTpGbDtmdW5jdGlvbiBwVyhsKXtyZXR1cm4geFooSGMobCkpfWZ1bmN0aW9uIFFsKGwsbixkKXt2YXIgdT0tMSxtPWwubGVuZ3RoO248MCYmKG49LW4+bT8wOm0rbiksZD1kPm0/bTpkLGQ8MCYmKGQrPW0pLG09bj5kPzA6ZC1uPj4+MCxuPj4+PTA7Zm9yKHZhciBiPVIobSk7Kyt1PG07KWJbdV09bFt1K25dO3JldHVybiBifWZ1bmN0aW9uIFdXKGwsbil7dmFyIGQ7cmV0dXJuIEhuKGwsZnVuY3Rpb24odSxtLGIpe3JldHVybiBkPW4odSxtLGIpLCFkfSksISFkfWZ1bmN0aW9uIFdaKGwsbixkKXt2YXIgdT0wLG09bD09bnVsbD91OmwubGVuZ3RoO2lmKHR5cGVvZiBuPT0ibnVtYmVyIiYmbj09PW4mJm08PWhYKXtmb3IoO3U8bTspe3ZhciBiPXUrbT4+PjEsWD1sW2JdO1ghPT1udWxsJiYhZ2woWCkmJihkP1g8PW46WDxuKT91PWIrMTptPWJ9cmV0dXJuIG19cmV0dXJuIHV1KGwsbixGbCxkKX1mdW5jdGlvbiB1dShsLG4sZCx1KXt2YXIgbT0wLGI9bD09bnVsbD8wOmwubGVuZ3RoO2lmKGI9PT0wKXJldHVybiAwO249ZChuKTtmb3IodmFyIFg9biE9PW4scD1uPT09bnVsbCxyPWdsKG4pLFM9bj09PXQ7bTxiOyl7dmFyIGY9bVooKG0rYikvMiksSj1kKGxbZl0pLEs9SiE9PXQsTj1KPT09bnVsbCxnPUo9PT1KLEI9Z2woSik7aWYoWCl2YXIgVT11fHxnO2Vsc2UgUz9VPWcmJih1fHxLKTpwP1U9ZyYmSyYmKHV8fCFOKTpyP1U9ZyYmSyYmIU4mJih1fHwhQik6Tnx8Qj9VPSExOlU9dT9KPD1uOko8bjtVP209ZisxOmI9Zn1yZXR1cm4gUmwoYixyWCl9ZnVuY3Rpb24gcm0obCxuKXtmb3IodmFyIGQ9LTEsdT1sLmxlbmd0aCxtPTAsYj1bXTsrK2Q8dTspe3ZhciBYPWxbZF0scD1uP24oWCk6WDtpZighZHx8IW5uKHAscikpe3ZhciByPXA7YlttKytdPVg9PT0wPzA6WH19cmV0dXJuIGJ9ZnVuY3Rpb24gaG0obCl7cmV0dXJuIHR5cGVvZiBsPT0ibnVtYmVyIj9sOmdsKGwpP3dkOitsfWZ1bmN0aW9uIGtsKGwpe2lmKHR5cGVvZiBsPT0ic3RyaW5nIilyZXR1cm4gbDtpZihDKGwpKXJldHVybiBabChsLGtsKSsiIjtpZihnbChsKSlyZXR1cm4gX2U/X2UuY2FsbChsKToiIjt2YXIgbj1sKyIiO3JldHVybiBuPT0iMCImJjEvbD09LWxjPyItMCI6bn1mdW5jdGlvbiBrbihsLG4sZCl7dmFyIHU9LTEsbT1BZCxiPWwubGVuZ3RoLFg9ITAscD1bXSxyPXA7aWYoZClYPSExLG09SHQ7ZWxzZSBpZihiPj1lKXt2YXIgUz1uP251bGw6SlcobCk7aWYoUylyZXR1cm4gcWQoUyk7WD0hMSxtPW5kLHI9bmV3IFpjfWVsc2Ugcj1uP1tdOnA7bDpmb3IoOysrdTxiOyl7dmFyIGY9bFt1XSxKPW4/bihmKTpmO2lmKGY9ZHx8ZiE9PTA/ZjowLFgmJko9PT1KKXtmb3IodmFyIEs9ci5sZW5ndGg7Sy0tOylpZihyW0tdPT09Siljb250aW51ZSBsO24mJnIucHVzaChKKSxwLnB1c2goZil9ZWxzZSBtKHIsSixkKXx8KHIhPT1wJiZyLnB1c2goSikscC5wdXNoKGYpKX1yZXR1cm4gcH1mdW5jdGlvbiBpdShsLG4pe3JldHVybiBuPWduKG4sbCksbD1qbShsLG4pLGw9PW51bGx8fGRlbGV0ZSBsW21uKEVsKG4pKV19ZnVuY3Rpb24gVm0obCxuLGQsdSl7cmV0dXJuIGJkKGwsbixkKHVjKGwsbikpLHUpfWZ1bmN0aW9uIHJaKGwsbixkLHUpe2Zvcih2YXIgbT1sLmxlbmd0aCxiPXU/bTotMTsodT9iLS06KytiPG0pJiZuKGxbYl0sYixsKTspO3JldHVybiBkP1FsKGwsdT8wOmIsdT9iKzE6bSk6UWwobCx1P2IrMTowLHU/bTpiKX1mdW5jdGlvbiB5bShsLG4pe3ZhciBkPWw7cmV0dXJuIGQgaW5zdGFuY2VvZiBqJiYoZD1kLnZhbHVlKCkpLGt0KG4sZnVuY3Rpb24odSxtKXtyZXR1cm4gbS5mdW5jLmFwcGx5KG0udGhpc0FyZyxObihbdV0sbS5hcmdzKSl9LGQpfWZ1bmN0aW9uIGV1KGwsbixkKXt2YXIgdT1sLmxlbmd0aDtpZih1PDIpcmV0dXJuIHU/a24obFswXSk6W107Zm9yKHZhciBtPS0xLGI9Uih1KTsrK208dTspZm9yKHZhciBYPWxbbV0scD0tMTsrK3A8dTspcCE9bSYmKGJbbV09ZWQoYlttXXx8WCxsW3BdLG4sZCkpO3JldHVybiBrbihWbChiLDEpLG4sZCl9ZnVuY3Rpb24gUm0obCxuLGQpe2Zvcih2YXIgdT0tMSxtPWwubGVuZ3RoLGI9bi5sZW5ndGgsWD17fTsrK3U8bTspe3ZhciBwPXU8Yj9uW3VdOnQ7ZChYLGxbdV0scCl9cmV0dXJuIFh9ZnVuY3Rpb24gbXUobCl7cmV0dXJuIGlsKGwpP2w6W119ZnVuY3Rpb24gYXUobCl7cmV0dXJuIHR5cGVvZiBsPT0iZnVuY3Rpb24iP2w6Rmx9ZnVuY3Rpb24gZ24obCxuKXtyZXR1cm4gQyhsKT9sOmh1KGwsbik/W2xdOl9tKHEobCkpfXZhciByVz1RO2Z1bmN0aW9uIFVuKGwsbixkKXt2YXIgdT1sLmxlbmd0aDtyZXR1cm4gZD1kPT09dD91OmQsIW4mJmQ+PXU/bDpRbChsLG4sZCl9dmFyIExtPXRwfHxmdW5jdGlvbihsKXtyZXR1cm4gaGwuY2xlYXJUaW1lb3V0KGwpfTtmdW5jdGlvbiBZbShsLG4pe2lmKG4pcmV0dXJuIGwuc2xpY2UoKTt2YXIgZD1sLmxlbmd0aCx1PVFlP1FlKGQpOm5ldyBsLmNvbnN0cnVjdG9yKGQpO3JldHVybiBsLmNvcHkodSksdX1mdW5jdGlvbiBidShsKXt2YXIgbj1uZXcgbC5jb25zdHJ1Y3RvcihsLmJ5dGVMZW5ndGgpO3JldHVybiBuZXcgWloobikuc2V0KG5ldyBaWihsKSksbn1mdW5jdGlvbiBoVyhsLG4pe3ZhciBkPW4/YnUobC5idWZmZXIpOmwuYnVmZmVyO3JldHVybiBuZXcgbC5jb25zdHJ1Y3RvcihkLGwuYnl0ZU9mZnNldCxsLmJ5dGVMZW5ndGgpfWZ1bmN0aW9uIFZXKGwpe3ZhciBuPW5ldyBsLmNvbnN0cnVjdG9yKGwuc291cmNlLGllLmV4ZWMobCkpO3JldHVybiBuLmxhc3RJbmRleD1sLmxhc3RJbmRleCxufWZ1bmN0aW9uIHlXKGwpe3JldHVybiB1ZD9ubCh1ZC5jYWxsKGwpKTp7fX1mdW5jdGlvbiBTbShsLG4pe3ZhciBkPW4/YnUobC5idWZmZXIpOmwuYnVmZmVyO3JldHVybiBuZXcgbC5jb25zdHJ1Y3RvcihkLGwuYnl0ZU9mZnNldCxsLmxlbmd0aCl9ZnVuY3Rpb24geG0obCxuKXtpZihsIT09bil7dmFyIGQ9bCE9PXQsdT1sPT09bnVsbCxtPWw9PT1sLGI9Z2wobCksWD1uIT09dCxwPW49PT1udWxsLHI9bj09PW4sUz1nbChuKTtpZighcCYmIVMmJiFiJiZsPm58fGImJlgmJnImJiFwJiYhU3x8dSYmWCYmcnx8IWQmJnJ8fCFtKXJldHVybiAxO2lmKCF1JiYhYiYmIVMmJmw8bnx8UyYmZCYmbSYmIXUmJiFifHxwJiZkJiZtfHwhWCYmbXx8IXIpcmV0dXJuLTF9cmV0dXJuIDB9ZnVuY3Rpb24gUlcobCxuLGQpe2Zvcih2YXIgdT0tMSxtPWwuY3JpdGVyaWEsYj1uLmNyaXRlcmlhLFg9bS5sZW5ndGgscD1kLmxlbmd0aDsrK3U8WDspe3ZhciByPXhtKG1bdV0sYlt1XSk7aWYocil7aWYodT49cClyZXR1cm4gcjt2YXIgUz1kW3VdO3JldHVybiByKihTPT0iZGVzYyI/LTE6MSl9fXJldHVybiBsLmluZGV4LW4uaW5kZXh9ZnVuY3Rpb24gZm0obCxuLGQsdSl7Zm9yKHZhciBtPS0xLGI9bC5sZW5ndGgsWD1kLmxlbmd0aCxwPS0xLHI9bi5sZW5ndGgsUz1YbChiLVgsMCksZj1SKHIrUyksSj0hdTsrK3A8cjspZltwXT1uW3BdO2Zvcig7KyttPFg7KShKfHxtPGIpJiYoZltkW21dXT1sW21dKTtmb3IoO1MtLTspZltwKytdPWxbbSsrXTtyZXR1cm4gZn1mdW5jdGlvbiBKbShsLG4sZCx1KXtmb3IodmFyIG09LTEsYj1sLmxlbmd0aCxYPS0xLHA9ZC5sZW5ndGgscj0tMSxTPW4ubGVuZ3RoLGY9WGwoYi1wLDApLEo9UihmK1MpLEs9IXU7KyttPGY7KUpbbV09bFttXTtmb3IodmFyIE49bTsrK3I8UzspSltOK3JdPW5bcl07Zm9yKDsrK1g8cDspKEt8fG08YikmJihKW04rZFtYXV09bFttKytdKTtyZXR1cm4gSn1mdW5jdGlvbiBKbChsLG4pe3ZhciBkPS0xLHU9bC5sZW5ndGg7Zm9yKG58fChuPVIodSkpOysrZDx1OyluW2RdPWxbZF07cmV0dXJuIG59ZnVuY3Rpb24gZW4obCxuLGQsdSl7dmFyIG09IWQ7ZHx8KGQ9e30pO2Zvcih2YXIgYj0tMSxYPW4ubGVuZ3RoOysrYjxYOyl7dmFyIHA9bltiXSxyPXU/dShkW3BdLGxbcF0scCxkLGwpOnQ7cj09PXQmJihyPWxbcF0pLG0/aG4oZCxwLHIpOmlkKGQscCxyKX1yZXR1cm4gZH1mdW5jdGlvbiBMVyhsLG4pe3JldHVybiBlbihsLHJ1KGwpLG4pfWZ1bmN0aW9uIFlXKGwsbil7cmV0dXJuIGVuKGwsQ20obCksbil9ZnVuY3Rpb24gaFoobCxuKXtyZXR1cm4gZnVuY3Rpb24oZCx1KXt2YXIgbT1DKGQpP0lzOkVwLGI9bj9uKCk6e307cmV0dXJuIG0oZCxsLGsodSwyKSxiKX19ZnVuY3Rpb24gRmMobCl7cmV0dXJuIFEoZnVuY3Rpb24obixkKXt2YXIgdT0tMSxtPWQubGVuZ3RoLGI9bT4xP2RbbS0xXTp0LFg9bT4yP2RbMl06dDtmb3IoYj1sLmxlbmd0aD4zJiZ0eXBlb2YgYj09ImZ1bmN0aW9uIj8obS0tLGIpOnQsWCYmeGwoZFswXSxkWzFdLFgpJiYoYj1tPDM/dDpiLG09MSksbj1ubChuKTsrK3U8bTspe3ZhciBwPWRbdV07cCYmbChuLHAsdSxiKX1yZXR1cm4gbn0pfWZ1bmN0aW9uIEltKGwsbil7cmV0dXJuIGZ1bmN0aW9uKGQsdSl7aWYoZD09bnVsbClyZXR1cm4gZDtpZighSWwoZCkpcmV0dXJuIGwoZCx1KTtmb3IodmFyIG09ZC5sZW5ndGgsYj1uP206LTEsWD1ubChkKTsobj9iLS06KytiPG0pJiZ1KFhbYl0sYixYKSE9PSExOyk7cmV0dXJuIGR9fWZ1bmN0aW9uIEttKGwpe3JldHVybiBmdW5jdGlvbihuLGQsdSl7Zm9yKHZhciBtPS0xLGI9bmwobiksWD11KG4pLHA9WC5sZW5ndGg7cC0tOyl7dmFyIHI9WFtsP3A6KyttXTtpZihkKGJbcl0scixiKT09PSExKWJyZWFrfXJldHVybiBufX1mdW5jdGlvbiBTVyhsLG4sZCl7dmFyIHU9biZILG09R2QobCk7ZnVuY3Rpb24gYigpe3ZhciBYPXRoaXMmJnRoaXMhPT1obCYmdGhpcyBpbnN0YW5jZW9mIGI/bTpsO3JldHVybiBYLmFwcGx5KHU/ZDp0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIGJ9ZnVuY3Rpb24gRm0obCl7cmV0dXJuIGZ1bmN0aW9uKG4pe249cShuKTt2YXIgZD1ZYyhuKT8kbChuKTp0LHU9ZD9kWzBdOm4uY2hhckF0KDApLG09ZD9VbihkLDEpLmpvaW4oIiIpOm4uc2xpY2UoMSk7cmV0dXJuIHVbbF0oKSttfX1mdW5jdGlvbiBOYyhsKXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIGt0KElhKEphKG4pLnJlcGxhY2Uoc3MsIiIpKSxsLCIiKX19ZnVuY3Rpb24gR2QobCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49YXJndW1lbnRzO3N3aXRjaChuLmxlbmd0aCl7Y2FzZSAwOnJldHVybiBuZXcgbDtjYXNlIDE6cmV0dXJuIG5ldyBsKG5bMF0pO2Nhc2UgMjpyZXR1cm4gbmV3IGwoblswXSxuWzFdKTtjYXNlIDM6cmV0dXJuIG5ldyBsKG5bMF0sblsxXSxuWzJdKTtjYXNlIDQ6cmV0dXJuIG5ldyBsKG5bMF0sblsxXSxuWzJdLG5bM10pO2Nhc2UgNTpyZXR1cm4gbmV3IGwoblswXSxuWzFdLG5bMl0sblszXSxuWzRdKTtjYXNlIDY6cmV0dXJuIG5ldyBsKG5bMF0sblsxXSxuWzJdLG5bM10sbls0XSxuWzVdKTtjYXNlIDc6cmV0dXJuIG5ldyBsKG5bMF0sblsxXSxuWzJdLG5bM10sbls0XSxuWzVdLG5bNl0pfXZhciBkPUtjKGwucHJvdG90eXBlKSx1PWwuYXBwbHkoZCxuKTtyZXR1cm4gdGwodSk/dTpkfX1mdW5jdGlvbiB4VyhsLG4sZCl7dmFyIHU9R2QobCk7ZnVuY3Rpb24gbSgpe2Zvcih2YXIgYj1hcmd1bWVudHMubGVuZ3RoLFg9UihiKSxwPWIscj16YyhtKTtwLS07KVhbcF09YXJndW1lbnRzW3BdO3ZhciBTPWI8MyYmWFswXSE9PXImJlhbYi0xXSE9PXI/W106em4oWCxyKTtpZihiLT1TLmxlbmd0aCxiPGQpcmV0dXJuIGttKGwsbixWWixtLnBsYWNlaG9sZGVyLHQsWCxTLHQsdCxkLWIpO3ZhciBmPXRoaXMmJnRoaXMhPT1obCYmdGhpcyBpbnN0YW5jZW9mIG0/dTpsO3JldHVybiB2bChmLHRoaXMsWCl9cmV0dXJuIG19ZnVuY3Rpb24gTm0obCl7cmV0dXJuIGZ1bmN0aW9uKG4sZCx1KXt2YXIgbT1ubChuKTtpZighSWwobikpe3ZhciBiPWsoZCwzKTtuPXBsKG4pLGQ9ZnVuY3Rpb24ocCl7cmV0dXJuIGIobVtwXSxwLG0pfX12YXIgWD1sKG4sZCx1KTtyZXR1cm4gWD4tMT9tW2I/bltYXTpYXTp0fX1mdW5jdGlvbiB6bShsKXtyZXR1cm4geW4oZnVuY3Rpb24obil7dmFyIGQ9bi5sZW5ndGgsdT1kLG09UGwucHJvdG90eXBlLnRocnU7Zm9yKGwmJm4ucmV2ZXJzZSgpO3UtLTspe3ZhciBiPW5bdV07aWYodHlwZW9mIGIhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IHdsKG8pO2lmKG0mJiFYJiZZWihiKT09IndyYXBwZXIiKXZhciBYPW5ldyBQbChbXSwhMCl9Zm9yKHU9WD91OmQ7Kyt1PGQ7KXtiPW5bdV07dmFyIHA9WVooYikscj1wPT0id3JhcHBlciI/cHUoYik6dDtyJiZWdShyWzBdKSYmclsxXT09KE18R2x8X3x6bCkmJiFyWzRdLmxlbmd0aCYmcls5XT09MT9YPVhbWVooclswXSldLmFwcGx5KFgsclszXSk6WD1iLmxlbmd0aD09MSYmVnUoYik/WFtwXSgpOlgudGhydShiKX1yZXR1cm4gZnVuY3Rpb24oKXt2YXIgUz1hcmd1bWVudHMsZj1TWzBdO2lmKFgmJlMubGVuZ3RoPT0xJiZDKGYpKXJldHVybiBYLnBsYW50KGYpLnZhbHVlKCk7Zm9yKHZhciBKPTAsSz1kP25bSl0uYXBwbHkodGhpcyxTKTpmOysrSjxkOylLPW5bSl0uY2FsbCh0aGlzLEspO3JldHVybiBLfX0pfWZ1bmN0aW9uIFZaKGwsbixkLHUsbSxiLFgscCxyLFMpe3ZhciBmPW4mTSxKPW4mSCxLPW4mQSxOPW4mKEdsfFpuKSxnPW4mamMsQj1LP3Q6R2QobCk7ZnVuY3Rpb24gVSgpe2Zvcih2YXIgRT1hcmd1bWVudHMubGVuZ3RoLEQ9UihFKSxVbD1FO1VsLS07KURbVWxdPWFyZ3VtZW50c1tVbF07aWYoTil2YXIgZmw9emMoVSksTWw9VXMoRCxmbCk7aWYodSYmKEQ9Zm0oRCx1LG0sTikpLGImJihEPUptKEQsYixYLE4pKSxFLT1NbCxOJiZFPFMpe3ZhciBlbD16bihELGZsKTtyZXR1cm4ga20obCxuLFZaLFUucGxhY2Vob2xkZXIsZCxELGVsLHAscixTLUUpfXZhciBjbj1KP2Q6dGhpcyxTbj1LP2NuW2xdOmw7cmV0dXJuIEU9RC5sZW5ndGgscD9EPUVXKEQscCk6ZyYmRT4xJiZELnJldmVyc2UoKSxmJiZyPEUmJihELmxlbmd0aD1yKSx0aGlzJiZ0aGlzIT09aGwmJnRoaXMgaW5zdGFuY2VvZiBVJiYoU249Qnx8R2QoU24pKSxTbi5hcHBseShjbixEKX1yZXR1cm4gVX1mdW5jdGlvbiB2bShsLG4pe3JldHVybiBmdW5jdGlvbihkLHUpe3JldHVybiBsVyhkLGwsbih1KSx7fSl9fWZ1bmN0aW9uIHlaKGwsbil7cmV0dXJuIGZ1bmN0aW9uKGQsdSl7dmFyIG07aWYoZD09PXQmJnU9PT10KXJldHVybiBuO2lmKGQhPT10JiYobT1kKSx1IT09dCl7aWYobT09PXQpcmV0dXJuIHU7dHlwZW9mIGQ9PSJzdHJpbmcifHx0eXBlb2YgdT09InN0cmluZyI/KGQ9a2woZCksdT1rbCh1KSk6KGQ9aG0oZCksdT1obSh1KSksbT1sKGQsdSl9cmV0dXJuIG19fWZ1bmN0aW9uIEd1KGwpe3JldHVybiB5bihmdW5jdGlvbihuKXtyZXR1cm4gbj1abChuLEhsKGsoKSkpLFEoZnVuY3Rpb24oZCl7dmFyIHU9dGhpcztyZXR1cm4gbChuLGZ1bmN0aW9uKG0pe3JldHVybiB2bChtLHUsZCl9KX0pfSl9ZnVuY3Rpb24gUloobCxuKXtuPW49PT10PyIgIjprbChuKTt2YXIgZD1uLmxlbmd0aDtpZihkPDIpcmV0dXJuIGQ/dHUobixsKTpuO3ZhciB1PXR1KG4sZVoobC9TYyhuKSkpO3JldHVybiBZYyhuKT9VbigkbCh1KSwwLGwpLmpvaW4oIiIpOnUuc2xpY2UoMCxsKX1mdW5jdGlvbiBmVyhsLG4sZCx1KXt2YXIgbT1uJkgsYj1HZChsKTtmdW5jdGlvbiBYKCl7Zm9yKHZhciBwPS0xLHI9YXJndW1lbnRzLmxlbmd0aCxTPS0xLGY9dS5sZW5ndGgsSj1SKGYrciksSz10aGlzJiZ0aGlzIT09aGwmJnRoaXMgaW5zdGFuY2VvZiBYP2I6bDsrK1M8ZjspSltTXT11W1NdO2Zvcig7ci0tOylKW1MrK109YXJndW1lbnRzWysrcF07cmV0dXJuIHZsKEssbT9kOnRoaXMsSil9cmV0dXJuIFh9ZnVuY3Rpb24gSG0obCl7cmV0dXJuIGZ1bmN0aW9uKG4sZCx1KXtyZXR1cm4gdSYmdHlwZW9mIHUhPSJudW1iZXIiJiZ4bChuLGQsdSkmJihkPXU9dCksbj1ZbihuKSxkPT09dD8oZD1uLG49MCk6ZD1ZbihkKSx1PXU9PT10P248ZD8xOi0xOlluKHUpLEdXKG4sZCx1LGwpfX1mdW5jdGlvbiBMWihsKXtyZXR1cm4gZnVuY3Rpb24obixkKXtyZXR1cm4gdHlwZW9mIG49PSJzdHJpbmciJiZ0eXBlb2YgZD09InN0cmluZyJ8fChuPWpsKG4pLGQ9amwoZCkpLGwobixkKX19ZnVuY3Rpb24ga20obCxuLGQsdSxtLGIsWCxwLHIsUyl7dmFyIGY9biZHbCxKPWY/WDp0LEs9Zj90OlgsTj1mP2I6dCxnPWY/dDpiO258PWY/XzpybCxuJj1+KGY/cmw6XyksbiZZbHx8KG4mPX4oSHxBKSk7dmFyIEI9W2wsbixtLE4sSixnLEsscCxyLFNdLFU9ZC5hcHBseSh0LEIpO3JldHVybiBWdShsKSYmRG0oVSxCKSxVLnBsYWNlaG9sZGVyPXUsT20oVSxsLG4pfWZ1bmN0aW9uIG91KGwpe3ZhciBuPW9sW2xdO3JldHVybiBmdW5jdGlvbihkLHUpe2lmKGQ9amwoZCksdT11PT1udWxsPzA6UmwoUCh1KSwyOTIpLHUmJk9lKGQpKXt2YXIgbT0ocShkKSsiZSIpLnNwbGl0KCJlIiksYj1uKG1bMF0rImUiKygrbVsxXSt1KSk7cmV0dXJuIG09KHEoYikrImUiKS5zcGxpdCgiZSIpLCsobVswXSsiZSIrKCttWzFdLXUpKX1yZXR1cm4gbihkKX19dmFyIEpXPUpjJiYxL3FkKG5ldyBKYyhbLC0wXSkpWzFdPT1sYz9mdW5jdGlvbihsKXtyZXR1cm4gbmV3IEpjKGwpfTpIdTtmdW5jdGlvbiBnbShsKXtyZXR1cm4gZnVuY3Rpb24obil7dmFyIGQ9TGwobik7cmV0dXJuIGQ9PV9sP1B0KG4pOmQ9PXFsP1FzKG4pOmdzKG4sbChuKSl9fWZ1bmN0aW9uIFZuKGwsbixkLHUsbSxiLFgscCl7dmFyIHI9biZBO2lmKCFyJiZ0eXBlb2YgbCE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgd2wobyk7dmFyIFM9dT91Lmxlbmd0aDowO2lmKFN8fChuJj1+KF98cmwpLHU9bT10KSxYPVg9PT10P1g6WGwoUChYKSwwKSxwPXA9PT10P3A6UChwKSxTLT1tP20ubGVuZ3RoOjAsbiZybCl7dmFyIGY9dSxKPW07dT1tPXR9dmFyIEs9cj90OnB1KGwpLE49W2wsbixkLHUsbSxmLEosYixYLHBdO2lmKEsmJlBXKE4sSyksbD1OWzBdLG49TlsxXSxkPU5bMl0sdT1OWzNdLG09Tls0XSxwPU5bOV09Tls5XT09PXQ/cj8wOmwubGVuZ3RoOlhsKE5bOV0tUywwKSwhcCYmbiYoR2x8Wm4pJiYobiY9fihHbHxabikpLCFufHxuPT1IKXZhciBnPVNXKGwsbixkKTtlbHNlIG49PUdsfHxuPT1abj9nPXhXKGwsbixwKToobj09X3x8bj09KEh8XykpJiYhbS5sZW5ndGg/Zz1mVyhsLG4sZCx1KTpnPVZaLmFwcGx5KHQsTik7dmFyIEI9Sz9XbTpEbTtyZXR1cm4gT20oQihnLE4pLGwsbil9ZnVuY3Rpb24gVW0obCxuLGQsdSl7cmV0dXJuIGw9PT10fHxubihsLGZjW2RdKSYmIWxsLmNhbGwodSxkKT9uOmx9ZnVuY3Rpb24gTW0obCxuLGQsdSxtLGIpe3JldHVybiB0bChsKSYmdGwobikmJihiLnNldChuLGwpLHBaKGwsbix0LE1tLGIpLGIuZGVsZXRlKG4pKSxsfWZ1bmN0aW9uIElXKGwpe3JldHVybiBzZChsKT90Omx9ZnVuY3Rpb24gVG0obCxuLGQsdSxtLGIpe3ZhciBYPWQmdixwPWwubGVuZ3RoLHI9bi5sZW5ndGg7aWYocCE9ciYmIShYJiZyPnApKXJldHVybiExO3ZhciBTPWIuZ2V0KGwpLGY9Yi5nZXQobik7aWYoUyYmZilyZXR1cm4gUz09biYmZj09bDt2YXIgSj0tMSxLPSEwLE49ZCZ6P25ldyBaYzp0O2ZvcihiLnNldChsLG4pLGIuc2V0KG4sbCk7KytKPHA7KXt2YXIgZz1sW0pdLEI9bltKXTtpZih1KXZhciBVPVg/dShCLGcsSixuLGwsYik6dShnLEIsSixsLG4sYik7aWYoVSE9PXQpe2lmKFUpY29udGludWU7Sz0hMTticmVha31pZihOKXtpZighZ3QobixmdW5jdGlvbihFLEQpe2lmKCFuZChOLEQpJiYoZz09PUV8fG0oZyxFLGQsdSxiKSkpcmV0dXJuIE4ucHVzaChEKX0pKXtLPSExO2JyZWFrfX1lbHNlIGlmKCEoZz09PUJ8fG0oZyxCLGQsdSxiKSkpe0s9ITE7YnJlYWt9fXJldHVybiBiLmRlbGV0ZShsKSxiLmRlbGV0ZShuKSxLfWZ1bmN0aW9uIEtXKGwsbixkLHUsbSxiLFgpe3N3aXRjaChkKXtjYXNlIHljOmlmKGwuYnl0ZUxlbmd0aCE9bi5ieXRlTGVuZ3RofHxsLmJ5dGVPZmZzZXQhPW4uYnl0ZU9mZnNldClyZXR1cm4hMTtsPWwuYnVmZmVyLG49bi5idWZmZXI7Y2FzZSBsZDpyZXR1cm4hKGwuYnl0ZUxlbmd0aCE9bi5ieXRlTGVuZ3RofHwhYihuZXcgWloobCksbmV3IFpaKG4pKSk7Y2FzZSBEYzpjYXNlIE9jOmNhc2UgQWM6cmV0dXJuIG5uKCtsLCtuKTtjYXNlIEJkOnJldHVybiBsLm5hbWU9PW4ubmFtZSYmbC5tZXNzYWdlPT1uLm1lc3NhZ2U7Y2FzZSBfYzpjYXNlIHFjOnJldHVybiBsPT1uKyIiO2Nhc2UgX2w6dmFyIHA9UHQ7Y2FzZSBxbDp2YXIgcj11JnY7aWYocHx8KHA9cWQpLGwuc2l6ZSE9bi5zaXplJiYhcilyZXR1cm4hMTt2YXIgUz1YLmdldChsKTtpZihTKXJldHVybiBTPT1uO3V8PXosWC5zZXQobCxuKTt2YXIgZj1UbShwKGwpLHAobiksdSxtLGIsWCk7cmV0dXJuIFguZGVsZXRlKGwpLGY7Y2FzZSBFZDppZih1ZClyZXR1cm4gdWQuY2FsbChsKT09dWQuY2FsbChuKX1yZXR1cm4hMX1mdW5jdGlvbiBGVyhsLG4sZCx1LG0sYil7dmFyIFg9ZCZ2LHA9WHUobCkscj1wLmxlbmd0aCxTPVh1KG4pLGY9Uy5sZW5ndGg7aWYociE9ZiYmIVgpcmV0dXJuITE7Zm9yKHZhciBKPXI7Si0tOyl7dmFyIEs9cFtKXTtpZighKFg/SyBpbiBuOmxsLmNhbGwobixLKSkpcmV0dXJuITF9dmFyIE49Yi5nZXQobCksZz1iLmdldChuKTtpZihOJiZnKXJldHVybiBOPT1uJiZnPT1sO3ZhciBCPSEwO2Iuc2V0KGwsbiksYi5zZXQobixsKTtmb3IodmFyIFU9WDsrK0o8cjspe0s9cFtKXTt2YXIgRT1sW0tdLEQ9bltLXTtpZih1KXZhciBVbD1YP3UoRCxFLEssbixsLGIpOnUoRSxELEssbCxuLGIpO2lmKCEoVWw9PT10P0U9PT1EfHxtKEUsRCxkLHUsYik6VWwpKXtCPSExO2JyZWFrfVV8fChVPUs9PSJjb25zdHJ1Y3RvciIpfWlmKEImJiFVKXt2YXIgZmw9bC5jb25zdHJ1Y3RvcixNbD1uLmNvbnN0cnVjdG9yO2ZsIT1NbCYmImNvbnN0cnVjdG9yImluIGwmJiJjb25zdHJ1Y3RvciJpbiBuJiYhKHR5cGVvZiBmbD09ImZ1bmN0aW9uIiYmZmwgaW5zdGFuY2VvZiBmbCYmdHlwZW9mIE1sPT0iZnVuY3Rpb24iJiZNbCBpbnN0YW5jZW9mIE1sKSYmKEI9ITEpfXJldHVybiBiLmRlbGV0ZShsKSxiLmRlbGV0ZShuKSxCfWZ1bmN0aW9uIHluKGwpe3JldHVybiBSdShFbShsLHQsbmEpLGwrIiIpfWZ1bmN0aW9uIFh1KGwpe3JldHVybiB1bShsLHBsLHJ1KX1mdW5jdGlvbiBzdShsKXtyZXR1cm4gdW0obCxLbCxDbSl9dmFyIHB1PWFaP2Z1bmN0aW9uKGwpe3JldHVybiBhWi5nZXQobCl9Okh1O2Z1bmN0aW9uIFlaKGwpe2Zvcih2YXIgbj1sLm5hbWUrIiIsZD1JY1tuXSx1PWxsLmNhbGwoSWMsbik/ZC5sZW5ndGg6MDt1LS07KXt2YXIgbT1kW3VdLGI9bS5mdW5jO2lmKGI9PW51bGx8fGI9PWwpcmV0dXJuIG0ubmFtZX1yZXR1cm4gbn1mdW5jdGlvbiB6YyhsKXt2YXIgbj1sbC5jYWxsKGEsInBsYWNlaG9sZGVyIik/YTpsO3JldHVybiBuLnBsYWNlaG9sZGVyfWZ1bmN0aW9uIGsoKXt2YXIgbD1hLml0ZXJhdGVlfHx6dTtyZXR1cm4gbD1sPT09enU/bW06bCxhcmd1bWVudHMubGVuZ3RoP2woYXJndW1lbnRzWzBdLGFyZ3VtZW50c1sxXSk6bH1mdW5jdGlvbiBTWihsLG4pe3ZhciBkPWwuX19kYXRhX187cmV0dXJuIE1XKG4pP2RbdHlwZW9mIG49PSJzdHJpbmciPyJzdHJpbmciOiJoYXNoIl06ZC5tYXB9ZnVuY3Rpb24gV3UobCl7Zm9yKHZhciBuPXBsKGwpLGQ9bi5sZW5ndGg7ZC0tOyl7dmFyIHU9bltkXSxtPWxbdV07bltkXT1bdSxtLEJtKG0pXX1yZXR1cm4gbn1mdW5jdGlvbiBpYyhsLG4pe3ZhciBkPXdzKGwsbik7cmV0dXJuIGVtKGQpP2Q6dH1mdW5jdGlvbiBOVyhsKXt2YXIgbj1sbC5jYWxsKGwsY2MpLGQ9bFtjY107dHJ5e2xbY2NdPXQ7dmFyIHU9ITB9Y2F0Y2h7fXZhciBtPWNaLmNhbGwobCk7cmV0dXJuIHUmJihuP2xbY2NdPWQ6ZGVsZXRlIGxbY2NdKSxtfXZhciBydT1RdD9mdW5jdGlvbihsKXtyZXR1cm4gbD09bnVsbD9bXToobD1ubChsKSxGbihRdChsKSxmdW5jdGlvbihuKXtyZXR1cm4gamUuY2FsbChsLG4pfSkpfTprdSxDbT1RdD9mdW5jdGlvbihsKXtmb3IodmFyIG49W107bDspTm4obixydShsKSksbD10WihsKTtyZXR1cm4gbn06a3UsTGw9U2w7KEV0JiZMbChuZXcgRXQobmV3IEFycmF5QnVmZmVyKDEpKSkhPXljfHxkZCYmTGwobmV3IGRkKSE9X2x8fGp0JiZMbChqdC5yZXNvbHZlKCkpIT1kZXx8SmMmJkxsKG5ldyBKYykhPXFsfHxaZCYmTGwobmV3IFpkKSE9JGMpJiYoTGw9ZnVuY3Rpb24obCl7dmFyIG49U2wobCksZD1uPT1wbj9sLmNvbnN0cnVjdG9yOnQsdT1kP2VjKGQpOiIiO2lmKHUpc3dpdGNoKHUpe2Nhc2UgWHA6cmV0dXJuIHljO2Nhc2Ugc3A6cmV0dXJuIF9sO2Nhc2UgcHA6cmV0dXJuIGRlO2Nhc2UgV3A6cmV0dXJuIHFsO2Nhc2UgcnA6cmV0dXJuICRjfXJldHVybiBufSk7ZnVuY3Rpb24gelcobCxuLGQpe2Zvcih2YXIgdT0tMSxtPWQubGVuZ3RoOysrdTxtOyl7dmFyIGI9ZFt1XSxYPWIuc2l6ZTtzd2l0Y2goYi50eXBlKXtjYXNlImRyb3AiOmwrPVg7YnJlYWs7Y2FzZSJkcm9wUmlnaHQiOm4tPVg7YnJlYWs7Y2FzZSJ0YWtlIjpuPVJsKG4sbCtYKTticmVhaztjYXNlInRha2VSaWdodCI6bD1YbChsLG4tWCk7YnJlYWt9fXJldHVybntzdGFydDpsLGVuZDpufX1mdW5jdGlvbiB2VyhsKXt2YXIgbj1sLm1hdGNoKFRYKTtyZXR1cm4gbj9uWzFdLnNwbGl0KENYKTpbXX1mdW5jdGlvbiB3bShsLG4sZCl7bj1nbihuLGwpO2Zvcih2YXIgdT0tMSxtPW4ubGVuZ3RoLGI9ITE7Kyt1PG07KXt2YXIgWD1tbihuW3VdKTtpZighKGI9bCE9bnVsbCYmZChsLFgpKSlicmVhaztsPWxbWF19cmV0dXJuIGJ8fCsrdSE9bT9iOihtPWw9PW51bGw/MDpsLmxlbmd0aCwhIW0mJk5aKG0pJiZSbihYLG0pJiYoQyhsKXx8bWMobCkpKX1mdW5jdGlvbiBIVyhsKXt2YXIgbj1sLmxlbmd0aCxkPW5ldyBsLmNvbnN0cnVjdG9yKG4pO3JldHVybiBuJiZ0eXBlb2YgbFswXT09InN0cmluZyImJmxsLmNhbGwobCwiaW5kZXgiKSYmKGQuaW5kZXg9bC5pbmRleCxkLmlucHV0PWwuaW5wdXQpLGR9ZnVuY3Rpb24gUG0obCl7cmV0dXJuIHR5cGVvZiBsLmNvbnN0cnVjdG9yPT0iZnVuY3Rpb24iJiYhb2QobCk/S2ModFoobCkpOnt9fWZ1bmN0aW9uIGtXKGwsbixkKXt2YXIgdT1sLmNvbnN0cnVjdG9yO3N3aXRjaChuKXtjYXNlIGxkOnJldHVybiBidShsKTtjYXNlIERjOmNhc2UgT2M6cmV0dXJuIG5ldyB1KCtsKTtjYXNlIHljOnJldHVybiBoVyhsLGQpO2Nhc2UgV3Q6Y2FzZSBydDpjYXNlIGh0OmNhc2UgVnQ6Y2FzZSB5dDpjYXNlIFJ0OmNhc2UgTHQ6Y2FzZSBZdDpjYXNlIFN0OnJldHVybiBTbShsLGQpO2Nhc2UgX2w6cmV0dXJuIG5ldyB1O2Nhc2UgQWM6Y2FzZSBxYzpyZXR1cm4gbmV3IHUobCk7Y2FzZSBfYzpyZXR1cm4gVlcobCk7Y2FzZSBxbDpyZXR1cm4gbmV3IHU7Y2FzZSBFZDpyZXR1cm4geVcobCl9fWZ1bmN0aW9uIGdXKGwsbil7dmFyIGQ9bi5sZW5ndGg7aWYoIWQpcmV0dXJuIGw7dmFyIHU9ZC0xO3JldHVybiBuW3VdPShkPjE/IiYgIjoiIikrblt1XSxuPW4uam9pbihkPjI/IiwgIjoiICIpLGwucmVwbGFjZShNWCxgewovKiBbd3JhcHBlZCB3aXRoIGArbitgXSAqLwpgKX1mdW5jdGlvbiBVVyhsKXtyZXR1cm4gQyhsKXx8bWMobCl8fCEhKERlJiZsJiZsW0RlXSl9ZnVuY3Rpb24gUm4obCxuKXt2YXIgZD10eXBlb2YgbDtyZXR1cm4gbj1uPz9LbiwhIW4mJihkPT0ibnVtYmVyInx8ZCE9InN5bWJvbCImJkFYLnRlc3QobCkpJiZsPi0xJiZsJTE9PTAmJmw8bn1mdW5jdGlvbiB4bChsLG4sZCl7aWYoIXRsKGQpKXJldHVybiExO3ZhciB1PXR5cGVvZiBuO3JldHVybih1PT0ibnVtYmVyIj9JbChkKSYmUm4obixkLmxlbmd0aCk6dT09InN0cmluZyImJm4gaW4gZCk/bm4oZFtuXSxsKTohMX1mdW5jdGlvbiBodShsLG4pe2lmKEMobCkpcmV0dXJuITE7dmFyIGQ9dHlwZW9mIGw7cmV0dXJuIGQ9PSJudW1iZXIifHxkPT0ic3ltYm9sInx8ZD09ImJvb2xlYW4ifHxsPT1udWxsfHxnbChsKT8hMDpIWC50ZXN0KGwpfHwhdlgudGVzdChsKXx8biE9bnVsbCYmbCBpbiBubChuKX1mdW5jdGlvbiBNVyhsKXt2YXIgbj10eXBlb2YgbDtyZXR1cm4gbj09InN0cmluZyJ8fG49PSJudW1iZXIifHxuPT0ic3ltYm9sInx8bj09ImJvb2xlYW4iP2whPT0iX19wcm90b19fIjpsPT09bnVsbH1mdW5jdGlvbiBWdShsKXt2YXIgbj1ZWihsKSxkPWFbbl07aWYodHlwZW9mIGQhPSJmdW5jdGlvbiJ8fCEobiBpbiBqLnByb3RvdHlwZSkpcmV0dXJuITE7aWYobD09PWQpcmV0dXJuITA7dmFyIHU9cHUoZCk7cmV0dXJuISF1JiZsPT09dVswXX1mdW5jdGlvbiBUVyhsKXtyZXR1cm4hIUJlJiZCZSBpbiBsfXZhciBDVz1sWj9MbjpndTtmdW5jdGlvbiBvZChsKXt2YXIgbj1sJiZsLmNvbnN0cnVjdG9yLGQ9dHlwZW9mIG49PSJmdW5jdGlvbiImJm4ucHJvdG90eXBlfHxmYztyZXR1cm4gbD09PWR9ZnVuY3Rpb24gQm0obCl7cmV0dXJuIGw9PT1sJiYhdGwobCl9ZnVuY3Rpb24gUW0obCxuKXtyZXR1cm4gZnVuY3Rpb24oZCl7cmV0dXJuIGQ9PW51bGw/ITE6ZFtsXT09PW4mJihuIT09dHx8bCBpbiBubChkKSl9fWZ1bmN0aW9uIHdXKGwpe3ZhciBuPUtaKGwsZnVuY3Rpb24odSl7cmV0dXJuIGQuc2l6ZT09PWgmJmQuY2xlYXIoKSx1fSksZD1uLmNhY2hlO3JldHVybiBufWZ1bmN0aW9uIFBXKGwsbil7dmFyIGQ9bFsxXSx1PW5bMV0sbT1kfHUsYj1tPChIfEF8TSksWD11PT1NJiZkPT1HbHx8dT09TSYmZD09emwmJmxbN10ubGVuZ3RoPD1uWzhdfHx1PT0oTXx6bCkmJm5bN10ubGVuZ3RoPD1uWzhdJiZkPT1HbDtpZighKGJ8fFgpKXJldHVybiBsO3UmSCYmKGxbMl09blsyXSxtfD1kJkg/MDpZbCk7dmFyIHA9blszXTtpZihwKXt2YXIgcj1sWzNdO2xbM109cj9mbShyLHAsbls0XSk6cCxsWzRdPXI/em4obFszXSx5KTpuWzRdfXJldHVybiBwPW5bNV0scCYmKHI9bFs1XSxsWzVdPXI/Sm0ocixwLG5bNl0pOnAsbFs2XT1yP3puKGxbNV0seSk6bls2XSkscD1uWzddLHAmJihsWzddPXApLHUmTSYmKGxbOF09bFs4XT09bnVsbD9uWzhdOlJsKGxbOF0sbls4XSkpLGxbOV09PW51bGwmJihsWzldPW5bOV0pLGxbMF09blswXSxsWzFdPW0sbH1mdW5jdGlvbiBCVyhsKXt2YXIgbj1bXTtpZihsIT1udWxsKWZvcih2YXIgZCBpbiBubChsKSluLnB1c2goZCk7cmV0dXJuIG59ZnVuY3Rpb24gUVcobCl7cmV0dXJuIGNaLmNhbGwobCl9ZnVuY3Rpb24gRW0obCxuLGQpe3JldHVybiBuPVhsKG49PT10P2wubGVuZ3RoLTE6biwwKSxmdW5jdGlvbigpe2Zvcih2YXIgdT1hcmd1bWVudHMsbT0tMSxiPVhsKHUubGVuZ3RoLW4sMCksWD1SKGIpOysrbTxiOylYW21dPXVbbittXTttPS0xO2Zvcih2YXIgcD1SKG4rMSk7KyttPG47KXBbbV09dVttXTtyZXR1cm4gcFtuXT1kKFgpLHZsKGwsdGhpcyxwKX19ZnVuY3Rpb24gam0obCxuKXtyZXR1cm4gbi5sZW5ndGg8Mj9sOnVjKGwsUWwobiwwLC0xKSl9ZnVuY3Rpb24gRVcobCxuKXtmb3IodmFyIGQ9bC5sZW5ndGgsdT1SbChuLmxlbmd0aCxkKSxtPUpsKGwpO3UtLTspe3ZhciBiPW5bdV07bFt1XT1SbihiLGQpP21bYl06dH1yZXR1cm4gbH1mdW5jdGlvbiB5dShsLG4pe2lmKCEobj09PSJjb25zdHJ1Y3RvciImJnR5cGVvZiBsW25dPT0iZnVuY3Rpb24iKSYmbiE9Il9fcHJvdG9fXyIpcmV0dXJuIGxbbl19dmFyIERtPUFtKFdtKSxYZD1pcHx8ZnVuY3Rpb24obCxuKXtyZXR1cm4gaGwuc2V0VGltZW91dChsLG4pfSxSdT1BbShzVyk7ZnVuY3Rpb24gT20obCxuLGQpe3ZhciB1PW4rIiI7cmV0dXJuIFJ1KGwsZ1codSxqVyh2Vyh1KSxkKSkpfWZ1bmN0aW9uIEFtKGwpe3ZhciBuPTAsZD0wO3JldHVybiBmdW5jdGlvbigpe3ZhciB1PWJwKCksbT1YWC0odS1kKTtpZihkPXUsbT4wKXtpZigrK24+PW9YKXJldHVybiBhcmd1bWVudHNbMF19ZWxzZSBuPTA7cmV0dXJuIGwuYXBwbHkodCxhcmd1bWVudHMpfX1mdW5jdGlvbiB4WihsLG4pe3ZhciBkPS0xLHU9bC5sZW5ndGgsbT11LTE7Zm9yKG49bj09PXQ/dTpuOysrZDxuOyl7dmFyIGI9WnUoZCxtKSxYPWxbYl07bFtiXT1sW2RdLGxbZF09WH1yZXR1cm4gbC5sZW5ndGg9bixsfXZhciBfbT13VyhmdW5jdGlvbihsKXt2YXIgbj1bXTtyZXR1cm4gbC5jaGFyQ29kZUF0KDApPT09NDYmJm4ucHVzaCgiIiksbC5yZXBsYWNlKGtYLGZ1bmN0aW9uKGQsdSxtLGIpe24ucHVzaChtP2IucmVwbGFjZShCWCwiJDEiKTp1fHxkKX0pLG59KTtmdW5jdGlvbiBtbihsKXtpZih0eXBlb2YgbD09InN0cmluZyJ8fGdsKGwpKXJldHVybiBsO3ZhciBuPWwrIiI7cmV0dXJuIG49PSIwIiYmMS9sPT0tbGM/Ii0wIjpufWZ1bmN0aW9uIGVjKGwpe2lmKGwhPW51bGwpe3RyeXtyZXR1cm4gblouY2FsbChsKX1jYXRjaHt9dHJ5e3JldHVybiBsKyIifWNhdGNoe319cmV0dXJuIiJ9ZnVuY3Rpb24galcobCxuKXtyZXR1cm4gQ2woVlgsZnVuY3Rpb24oZCl7dmFyIHU9Il8uIitkWzBdO24mZFsxXSYmIUFkKGwsdSkmJmwucHVzaCh1KX0pLGwuc29ydCgpfWZ1bmN0aW9uIHFtKGwpe2lmKGwgaW5zdGFuY2VvZiBqKXJldHVybiBsLmNsb25lKCk7dmFyIG49bmV3IFBsKGwuX193cmFwcGVkX18sbC5fX2NoYWluX18pO3JldHVybiBuLl9fYWN0aW9uc19fPUpsKGwuX19hY3Rpb25zX18pLG4uX19pbmRleF9fPWwuX19pbmRleF9fLG4uX192YWx1ZXNfXz1sLl9fdmFsdWVzX18sbn1mdW5jdGlvbiBEVyhsLG4sZCl7KGQ/eGwobCxuLGQpOm49PT10KT9uPTE6bj1YbChQKG4pLDApO3ZhciB1PWw9PW51bGw/MDpsLmxlbmd0aDtpZighdXx8bjwxKXJldHVybltdO2Zvcih2YXIgbT0wLGI9MCxYPVIoZVoodS9uKSk7bTx1OylYW2IrK109UWwobCxtLG0rPW4pO3JldHVybiBYfWZ1bmN0aW9uIE9XKGwpe2Zvcih2YXIgbj0tMSxkPWw9PW51bGw/MDpsLmxlbmd0aCx1PTAsbT1bXTsrK248ZDspe3ZhciBiPWxbbl07YiYmKG1bdSsrXT1iKX1yZXR1cm4gbX1mdW5jdGlvbiBBVygpe3ZhciBsPWFyZ3VtZW50cy5sZW5ndGg7aWYoIWwpcmV0dXJuW107Zm9yKHZhciBuPVIobC0xKSxkPWFyZ3VtZW50c1swXSx1PWw7dS0tOyluW3UtMV09YXJndW1lbnRzW3VdO3JldHVybiBObihDKGQpP0psKGQpOltkXSxWbChuLDEpKX12YXIgX1c9UShmdW5jdGlvbihsLG4pe3JldHVybiBpbChsKT9lZChsLFZsKG4sMSxpbCwhMCkpOltdfSkscVc9UShmdW5jdGlvbihsLG4pe3ZhciBkPUVsKG4pO3JldHVybiBpbChkKSYmKGQ9dCksaWwobCk/ZWQobCxWbChuLDEsaWwsITApLGsoZCwyKSk6W119KSwkVz1RKGZ1bmN0aW9uKGwsbil7dmFyIGQ9RWwobik7cmV0dXJuIGlsKGQpJiYoZD10KSxpbChsKT9lZChsLFZsKG4sMSxpbCwhMCksdCxkKTpbXX0pO2Z1bmN0aW9uIGxyKGwsbixkKXt2YXIgdT1sPT1udWxsPzA6bC5sZW5ndGg7cmV0dXJuIHU/KG49ZHx8bj09PXQ/MTpQKG4pLFFsKGwsbjwwPzA6bix1KSk6W119ZnVuY3Rpb24gbnIobCxuLGQpe3ZhciB1PWw9PW51bGw/MDpsLmxlbmd0aDtyZXR1cm4gdT8obj1kfHxuPT09dD8xOlAobiksbj11LW4sUWwobCwwLG48MD8wOm4pKTpbXX1mdW5jdGlvbiBjcihsLG4pe3JldHVybiBsJiZsLmxlbmd0aD9yWihsLGsobiwzKSwhMCwhMCk6W119ZnVuY3Rpb24gZHIobCxuKXtyZXR1cm4gbCYmbC5sZW5ndGg/cloobCxrKG4sMyksITApOltdfWZ1bmN0aW9uIFpyKGwsbixkLHUpe3ZhciBtPWw9PW51bGw/MDpsLmxlbmd0aDtyZXR1cm4gbT8oZCYmdHlwZW9mIGQhPSJudW1iZXIiJiZ4bChsLG4sZCkmJihkPTAsdT1tKSxBcChsLG4sZCx1KSk6W119ZnVuY3Rpb24gJG0obCxuLGQpe3ZhciB1PWw9PW51bGw/MDpsLmxlbmd0aDtpZighdSlyZXR1cm4tMTt2YXIgbT1kPT1udWxsPzA6UChkKTtyZXR1cm4gbTwwJiYobT1YbCh1K20sMCkpLF9kKGwsayhuLDMpLG0pfWZ1bmN0aW9uIGxhKGwsbixkKXt2YXIgdT1sPT1udWxsPzA6bC5sZW5ndGg7aWYoIXUpcmV0dXJuLTE7dmFyIG09dS0xO3JldHVybiBkIT09dCYmKG09UChkKSxtPWQ8MD9YbCh1K20sMCk6UmwobSx1LTEpKSxfZChsLGsobiwzKSxtLCEwKX1mdW5jdGlvbiBuYShsKXt2YXIgbj1sPT1udWxsPzA6bC5sZW5ndGg7cmV0dXJuIG4/VmwobCwxKTpbXX1mdW5jdGlvbiB0cihsKXt2YXIgbj1sPT1udWxsPzA6bC5sZW5ndGg7cmV0dXJuIG4/VmwobCxsYyk6W119ZnVuY3Rpb24gdXIobCxuKXt2YXIgZD1sPT1udWxsPzA6bC5sZW5ndGg7cmV0dXJuIGQ/KG49bj09PXQ/MTpQKG4pLFZsKGwsbikpOltdfWZ1bmN0aW9uIGlyKGwpe2Zvcih2YXIgbj0tMSxkPWw9PW51bGw/MDpsLmxlbmd0aCx1PXt9OysrbjxkOyl7dmFyIG09bFtuXTt1W21bMF1dPW1bMV19cmV0dXJuIHV9ZnVuY3Rpb24gY2EobCl7cmV0dXJuIGwmJmwubGVuZ3RoP2xbMF06dH1mdW5jdGlvbiBlcihsLG4sZCl7dmFyIHU9bD09bnVsbD8wOmwubGVuZ3RoO2lmKCF1KXJldHVybi0xO3ZhciBtPWQ9PW51bGw/MDpQKGQpO3JldHVybiBtPDAmJihtPVhsKHUrbSwwKSksTGMobCxuLG0pfWZ1bmN0aW9uIG1yKGwpe3ZhciBuPWw9PW51bGw/MDpsLmxlbmd0aDtyZXR1cm4gbj9RbChsLDAsLTEpOltdfXZhciBhcj1RKGZ1bmN0aW9uKGwpe3ZhciBuPVpsKGwsbXUpO3JldHVybiBuLmxlbmd0aCYmblswXT09PWxbMF0/JHQobik6W119KSxicj1RKGZ1bmN0aW9uKGwpe3ZhciBuPUVsKGwpLGQ9WmwobCxtdSk7cmV0dXJuIG49PT1FbChkKT9uPXQ6ZC5wb3AoKSxkLmxlbmd0aCYmZFswXT09PWxbMF0/JHQoZCxrKG4sMikpOltdfSksR3I9UShmdW5jdGlvbihsKXt2YXIgbj1FbChsKSxkPVpsKGwsbXUpO3JldHVybiBuPXR5cGVvZiBuPT0iZnVuY3Rpb24iP246dCxuJiZkLnBvcCgpLGQubGVuZ3RoJiZkWzBdPT09bFswXT8kdChkLHQsbik6W119KTtmdW5jdGlvbiBvcihsLG4pe3JldHVybiBsPT1udWxsPyIiOm1wLmNhbGwobCxuKX1mdW5jdGlvbiBFbChsKXt2YXIgbj1sPT1udWxsPzA6bC5sZW5ndGg7cmV0dXJuIG4/bFtuLTFdOnR9ZnVuY3Rpb24gWHIobCxuLGQpe3ZhciB1PWw9PW51bGw/MDpsLmxlbmd0aDtpZighdSlyZXR1cm4tMTt2YXIgbT11O3JldHVybiBkIT09dCYmKG09UChkKSxtPW08MD9YbCh1K20sMCk6UmwobSx1LTEpKSxuPT09bj9qcyhsLG4sbSk6X2QobCxrZSxtLCEwKX1mdW5jdGlvbiBzcihsLG4pe3JldHVybiBsJiZsLmxlbmd0aD9vbShsLFAobikpOnR9dmFyIHByPVEoZGEpO2Z1bmN0aW9uIGRhKGwsbil7cmV0dXJuIGwmJmwubGVuZ3RoJiZuJiZuLmxlbmd0aD9kdShsLG4pOmx9ZnVuY3Rpb24gV3IobCxuLGQpe3JldHVybiBsJiZsLmxlbmd0aCYmbiYmbi5sZW5ndGg/ZHUobCxuLGsoZCwyKSk6bH1mdW5jdGlvbiBycihsLG4sZCl7cmV0dXJuIGwmJmwubGVuZ3RoJiZuJiZuLmxlbmd0aD9kdShsLG4sdCxkKTpsfXZhciBocj15bihmdW5jdGlvbihsLG4pe3ZhciBkPWw9PW51bGw/MDpsLmxlbmd0aCx1PU90KGwsbik7cmV0dXJuIHBtKGwsWmwobixmdW5jdGlvbihtKXtyZXR1cm4gUm4obSxkKT8rbTptfSkuc29ydCh4bSkpLHV9KTtmdW5jdGlvbiBWcihsLG4pe3ZhciBkPVtdO2lmKCEobCYmbC5sZW5ndGgpKXJldHVybiBkO3ZhciB1PS0xLG09W10sYj1sLmxlbmd0aDtmb3Iobj1rKG4sMyk7Kyt1PGI7KXt2YXIgWD1sW3VdO24oWCx1LGwpJiYoZC5wdXNoKFgpLG0ucHVzaCh1KSl9cmV0dXJuIHBtKGwsbSksZH1mdW5jdGlvbiBMdShsKXtyZXR1cm4gbD09bnVsbD9sOm9wLmNhbGwobCl9ZnVuY3Rpb24geXIobCxuLGQpe3ZhciB1PWw9PW51bGw/MDpsLmxlbmd0aDtyZXR1cm4gdT8oZCYmdHlwZW9mIGQhPSJudW1iZXIiJiZ4bChsLG4sZCk/KG49MCxkPXUpOihuPW49PW51bGw/MDpQKG4pLGQ9ZD09PXQ/dTpQKGQpKSxRbChsLG4sZCkpOltdfWZ1bmN0aW9uIFJyKGwsbil7cmV0dXJuIFdaKGwsbil9ZnVuY3Rpb24gTHIobCxuLGQpe3JldHVybiB1dShsLG4sayhkLDIpKX1mdW5jdGlvbiBZcihsLG4pe3ZhciBkPWw9PW51bGw/MDpsLmxlbmd0aDtpZihkKXt2YXIgdT1XWihsLG4pO2lmKHU8ZCYmbm4obFt1XSxuKSlyZXR1cm4gdX1yZXR1cm4tMX1mdW5jdGlvbiBTcihsLG4pe3JldHVybiBXWihsLG4sITApfWZ1bmN0aW9uIHhyKGwsbixkKXtyZXR1cm4gdXUobCxuLGsoZCwyKSwhMCl9ZnVuY3Rpb24gZnIobCxuKXt2YXIgZD1sPT1udWxsPzA6bC5sZW5ndGg7aWYoZCl7dmFyIHU9V1oobCxuLCEwKS0xO2lmKG5uKGxbdV0sbikpcmV0dXJuIHV9cmV0dXJuLTF9ZnVuY3Rpb24gSnIobCl7cmV0dXJuIGwmJmwubGVuZ3RoP3JtKGwpOltdfWZ1bmN0aW9uIElyKGwsbil7cmV0dXJuIGwmJmwubGVuZ3RoP3JtKGwsayhuLDIpKTpbXX1mdW5jdGlvbiBLcihsKXt2YXIgbj1sPT1udWxsPzA6bC5sZW5ndGg7cmV0dXJuIG4/UWwobCwxLG4pOltdfWZ1bmN0aW9uIEZyKGwsbixkKXtyZXR1cm4gbCYmbC5sZW5ndGg/KG49ZHx8bj09PXQ/MTpQKG4pLFFsKGwsMCxuPDA/MDpuKSk6W119ZnVuY3Rpb24gTnIobCxuLGQpe3ZhciB1PWw9PW51bGw/MDpsLmxlbmd0aDtyZXR1cm4gdT8obj1kfHxuPT09dD8xOlAobiksbj11LW4sUWwobCxuPDA/MDpuLHUpKTpbXX1mdW5jdGlvbiB6cihsLG4pe3JldHVybiBsJiZsLmxlbmd0aD9yWihsLGsobiwzKSwhMSwhMCk6W119ZnVuY3Rpb24gdnIobCxuKXtyZXR1cm4gbCYmbC5sZW5ndGg/cloobCxrKG4sMykpOltdfXZhciBIcj1RKGZ1bmN0aW9uKGwpe3JldHVybiBrbihWbChsLDEsaWwsITApKX0pLGtyPVEoZnVuY3Rpb24obCl7dmFyIG49RWwobCk7cmV0dXJuIGlsKG4pJiYobj10KSxrbihWbChsLDEsaWwsITApLGsobiwyKSl9KSxncj1RKGZ1bmN0aW9uKGwpe3ZhciBuPUVsKGwpO3JldHVybiBuPXR5cGVvZiBuPT0iZnVuY3Rpb24iP246dCxrbihWbChsLDEsaWwsITApLHQsbil9KTtmdW5jdGlvbiBVcihsKXtyZXR1cm4gbCYmbC5sZW5ndGg/a24obCk6W119ZnVuY3Rpb24gTXIobCxuKXtyZXR1cm4gbCYmbC5sZW5ndGg/a24obCxrKG4sMikpOltdfWZ1bmN0aW9uIFRyKGwsbil7cmV0dXJuIG49dHlwZW9mIG49PSJmdW5jdGlvbiI/bjp0LGwmJmwubGVuZ3RoP2tuKGwsdCxuKTpbXX1mdW5jdGlvbiBZdShsKXtpZighKGwmJmwubGVuZ3RoKSlyZXR1cm5bXTt2YXIgbj0wO3JldHVybiBsPUZuKGwsZnVuY3Rpb24oZCl7aWYoaWwoZCkpcmV0dXJuIG49WGwoZC5sZW5ndGgsbiksITB9KSxDdChuLGZ1bmN0aW9uKGQpe3JldHVybiBabChsLFV0KGQpKX0pfWZ1bmN0aW9uIFphKGwsbil7aWYoIShsJiZsLmxlbmd0aCkpcmV0dXJuW107dmFyIGQ9WXUobCk7cmV0dXJuIG49PW51bGw/ZDpabChkLGZ1bmN0aW9uKHUpe3JldHVybiB2bChuLHQsdSl9KX12YXIgQ3I9UShmdW5jdGlvbihsLG4pe3JldHVybiBpbChsKT9lZChsLG4pOltdfSksd3I9UShmdW5jdGlvbihsKXtyZXR1cm4gZXUoRm4obCxpbCkpfSksUHI9UShmdW5jdGlvbihsKXt2YXIgbj1FbChsKTtyZXR1cm4gaWwobikmJihuPXQpLGV1KEZuKGwsaWwpLGsobiwyKSl9KSxCcj1RKGZ1bmN0aW9uKGwpe3ZhciBuPUVsKGwpO3JldHVybiBuPXR5cGVvZiBuPT0iZnVuY3Rpb24iP246dCxldShGbihsLGlsKSx0LG4pfSksUXI9UShZdSk7ZnVuY3Rpb24gRXIobCxuKXtyZXR1cm4gUm0obHx8W10sbnx8W10saWQpfWZ1bmN0aW9uIGpyKGwsbil7cmV0dXJuIFJtKGx8fFtdLG58fFtdLGJkKX12YXIgRHI9UShmdW5jdGlvbihsKXt2YXIgbj1sLmxlbmd0aCxkPW4+MT9sW24tMV06dDtyZXR1cm4gZD10eXBlb2YgZD09ImZ1bmN0aW9uIj8obC5wb3AoKSxkKTp0LFphKGwsZCl9KTtmdW5jdGlvbiB0YShsKXt2YXIgbj1hKGwpO3JldHVybiBuLl9fY2hhaW5fXz0hMCxufWZ1bmN0aW9uIE9yKGwsbil7cmV0dXJuIG4obCksbH1mdW5jdGlvbiBmWihsLG4pe3JldHVybiBuKGwpfXZhciBBcj15bihmdW5jdGlvbihsKXt2YXIgbj1sLmxlbmd0aCxkPW4/bFswXTowLHU9dGhpcy5fX3dyYXBwZWRfXyxtPWZ1bmN0aW9uKGIpe3JldHVybiBPdChiLGwpfTtyZXR1cm4gbj4xfHx0aGlzLl9fYWN0aW9uc19fLmxlbmd0aHx8ISh1IGluc3RhbmNlb2Ygail8fCFSbihkKT90aGlzLnRocnUobSk6KHU9dS5zbGljZShkLCtkKyhuPzE6MCkpLHUuX19hY3Rpb25zX18ucHVzaCh7ZnVuYzpmWixhcmdzOlttXSx0aGlzQXJnOnR9KSxuZXcgUGwodSx0aGlzLl9fY2hhaW5fXykudGhydShmdW5jdGlvbihiKXtyZXR1cm4gbiYmIWIubGVuZ3RoJiZiLnB1c2godCksYn0pKX0pO2Z1bmN0aW9uIF9yKCl7cmV0dXJuIHRhKHRoaXMpfWZ1bmN0aW9uIHFyKCl7cmV0dXJuIG5ldyBQbCh0aGlzLnZhbHVlKCksdGhpcy5fX2NoYWluX18pfWZ1bmN0aW9uICRyKCl7dGhpcy5fX3ZhbHVlc19fPT09dCYmKHRoaXMuX192YWx1ZXNfXz1oYSh0aGlzLnZhbHVlKCkpKTt2YXIgbD10aGlzLl9faW5kZXhfXz49dGhpcy5fX3ZhbHVlc19fLmxlbmd0aCxuPWw/dDp0aGlzLl9fdmFsdWVzX19bdGhpcy5fX2luZGV4X18rK107cmV0dXJue2RvbmU6bCx2YWx1ZTpufX1mdW5jdGlvbiBsaCgpe3JldHVybiB0aGlzfWZ1bmN0aW9uIG5oKGwpe2Zvcih2YXIgbixkPXRoaXM7ZCBpbnN0YW5jZW9mIEdaOyl7dmFyIHU9cW0oZCk7dS5fX2luZGV4X189MCx1Ll9fdmFsdWVzX189dCxuP20uX193cmFwcGVkX189dTpuPXU7dmFyIG09dTtkPWQuX193cmFwcGVkX199cmV0dXJuIG0uX193cmFwcGVkX189bCxufWZ1bmN0aW9uIGNoKCl7dmFyIGw9dGhpcy5fX3dyYXBwZWRfXztpZihsIGluc3RhbmNlb2Ygail7dmFyIG49bDtyZXR1cm4gdGhpcy5fX2FjdGlvbnNfXy5sZW5ndGgmJihuPW5ldyBqKHRoaXMpKSxuPW4ucmV2ZXJzZSgpLG4uX19hY3Rpb25zX18ucHVzaCh7ZnVuYzpmWixhcmdzOltMdV0sdGhpc0FyZzp0fSksbmV3IFBsKG4sdGhpcy5fX2NoYWluX18pfXJldHVybiB0aGlzLnRocnUoTHUpfWZ1bmN0aW9uIGRoKCl7cmV0dXJuIHltKHRoaXMuX193cmFwcGVkX18sdGhpcy5fX2FjdGlvbnNfXyl9dmFyIFpoPWhaKGZ1bmN0aW9uKGwsbixkKXtsbC5jYWxsKGwsZCk/KytsW2RdOmhuKGwsZCwxKX0pO2Z1bmN0aW9uIHRoKGwsbixkKXt2YXIgdT1DKGwpP3ZlOk9wO3JldHVybiBkJiZ4bChsLG4sZCkmJihuPXQpLHUobCxrKG4sMykpfWZ1bmN0aW9uIHVoKGwsbil7dmFyIGQ9QyhsKT9GbjpabTtyZXR1cm4gZChsLGsobiwzKSl9dmFyIGloPU5tKCRtKSxlaD1ObShsYSk7ZnVuY3Rpb24gbWgobCxuKXtyZXR1cm4gVmwoSloobCxuKSwxKX1mdW5jdGlvbiBhaChsLG4pe3JldHVybiBWbChKWihsLG4pLGxjKX1mdW5jdGlvbiBiaChsLG4sZCl7cmV0dXJuIGQ9ZD09PXQ/MTpQKGQpLFZsKEpaKGwsbiksZCl9ZnVuY3Rpb24gdWEobCxuKXt2YXIgZD1DKGwpP0NsOkhuO3JldHVybiBkKGwsayhuLDMpKX1mdW5jdGlvbiBpYShsLG4pe3ZhciBkPUMobCk/S3M6ZG07cmV0dXJuIGQobCxrKG4sMykpfXZhciBHaD1oWihmdW5jdGlvbihsLG4sZCl7bGwuY2FsbChsLGQpP2xbZF0ucHVzaChuKTpobihsLGQsW25dKX0pO2Z1bmN0aW9uIG9oKGwsbixkLHUpe2w9SWwobCk/bDpIYyhsKSxkPWQmJiF1P1AoZCk6MDt2YXIgbT1sLmxlbmd0aDtyZXR1cm4gZDwwJiYoZD1YbChtK2QsMCkpLHpaKGwpP2Q8PW0mJmwuaW5kZXhPZihuLGQpPi0xOiEhbSYmTGMobCxuLGQpPi0xfXZhciBYaD1RKGZ1bmN0aW9uKGwsbixkKXt2YXIgdT0tMSxtPXR5cGVvZiBuPT0iZnVuY3Rpb24iLGI9SWwobCk/UihsLmxlbmd0aCk6W107cmV0dXJuIEhuKGwsZnVuY3Rpb24oWCl7YlsrK3VdPW0/dmwobixYLGQpOm1kKFgsbixkKX0pLGJ9KSxzaD1oWihmdW5jdGlvbihsLG4sZCl7aG4obCxkLG4pfSk7ZnVuY3Rpb24gSloobCxuKXt2YXIgZD1DKGwpP1psOmFtO3JldHVybiBkKGwsayhuLDMpKX1mdW5jdGlvbiBwaChsLG4sZCx1KXtyZXR1cm4gbD09bnVsbD9bXTooQyhuKXx8KG49bj09bnVsbD9bXTpbbl0pLGQ9dT90OmQsQyhkKXx8KGQ9ZD09bnVsbD9bXTpbZF0pLFhtKGwsbixkKSl9dmFyIFdoPWhaKGZ1bmN0aW9uKGwsbixkKXtsW2Q/MDoxXS5wdXNoKG4pfSxmdW5jdGlvbigpe3JldHVybltbXSxbXV19KTtmdW5jdGlvbiByaChsLG4sZCl7dmFyIHU9QyhsKT9rdDpVZSxtPWFyZ3VtZW50cy5sZW5ndGg8MztyZXR1cm4gdShsLGsobiw0KSxkLG0sSG4pfWZ1bmN0aW9uIGhoKGwsbixkKXt2YXIgdT1DKGwpP0ZzOlVlLG09YXJndW1lbnRzLmxlbmd0aDwzO3JldHVybiB1KGwsayhuLDQpLGQsbSxkbSl9ZnVuY3Rpb24gVmgobCxuKXt2YXIgZD1DKGwpP0ZuOlptO3JldHVybiBkKGwsRlooayhuLDMpKSl9ZnVuY3Rpb24geWgobCl7dmFyIG49QyhsKT8kZTpvVztyZXR1cm4gbihsKX1mdW5jdGlvbiBSaChsLG4sZCl7KGQ/eGwobCxuLGQpOm49PT10KT9uPTE6bj1QKG4pO3ZhciB1PUMobCk/QnA6WFc7cmV0dXJuIHUobCxuKX1mdW5jdGlvbiBMaChsKXt2YXIgbj1DKGwpP1FwOnBXO3JldHVybiBuKGwpfWZ1bmN0aW9uIFloKGwpe2lmKGw9PW51bGwpcmV0dXJuIDA7aWYoSWwobCkpcmV0dXJuIHpaKGwpP1NjKGwpOmwubGVuZ3RoO3ZhciBuPUxsKGwpO3JldHVybiBuPT1fbHx8bj09cWw/bC5zaXplOm51KGwpLmxlbmd0aH1mdW5jdGlvbiBTaChsLG4sZCl7dmFyIHU9QyhsKT9ndDpXVztyZXR1cm4gZCYmeGwobCxuLGQpJiYobj10KSx1KGwsayhuLDMpKX12YXIgeGg9UShmdW5jdGlvbihsLG4pe2lmKGw9PW51bGwpcmV0dXJuW107dmFyIGQ9bi5sZW5ndGg7cmV0dXJuIGQ+MSYmeGwobCxuWzBdLG5bMV0pP249W106ZD4yJiZ4bChuWzBdLG5bMV0sblsyXSkmJihuPVtuWzBdXSksWG0obCxWbChuLDEpLFtdKX0pLElaPXVwfHxmdW5jdGlvbigpe3JldHVybiBobC5EYXRlLm5vdygpfTtmdW5jdGlvbiBmaChsLG4pe2lmKHR5cGVvZiBuIT0iZnVuY3Rpb24iKXRocm93IG5ldyB3bChvKTtyZXR1cm4gbD1QKGwpLGZ1bmN0aW9uKCl7aWYoLS1sPDEpcmV0dXJuIG4uYXBwbHkodGhpcyxhcmd1bWVudHMpfX1mdW5jdGlvbiBlYShsLG4sZCl7cmV0dXJuIG49ZD90Om4sbj1sJiZuPT1udWxsP2wubGVuZ3RoOm4sVm4obCxNLHQsdCx0LHQsbil9ZnVuY3Rpb24gbWEobCxuKXt2YXIgZDtpZih0eXBlb2YgbiE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgd2wobyk7cmV0dXJuIGw9UChsKSxmdW5jdGlvbigpe3JldHVybi0tbD4wJiYoZD1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKSksbDw9MSYmKG49dCksZH19dmFyIFN1PVEoZnVuY3Rpb24obCxuLGQpe3ZhciB1PUg7aWYoZC5sZW5ndGgpe3ZhciBtPXpuKGQsemMoU3UpKTt1fD1ffXJldHVybiBWbihsLHUsbixkLG0pfSksYWE9UShmdW5jdGlvbihsLG4sZCl7dmFyIHU9SHxBO2lmKGQubGVuZ3RoKXt2YXIgbT16bihkLHpjKGFhKSk7dXw9X31yZXR1cm4gVm4obix1LGwsZCxtKX0pO2Z1bmN0aW9uIGJhKGwsbixkKXtuPWQ/dDpuO3ZhciB1PVZuKGwsR2wsdCx0LHQsdCx0LG4pO3JldHVybiB1LnBsYWNlaG9sZGVyPWJhLnBsYWNlaG9sZGVyLHV9ZnVuY3Rpb24gR2EobCxuLGQpe249ZD90Om47dmFyIHU9Vm4obCxabix0LHQsdCx0LHQsbik7cmV0dXJuIHUucGxhY2Vob2xkZXI9R2EucGxhY2Vob2xkZXIsdX1mdW5jdGlvbiBvYShsLG4sZCl7dmFyIHUsbSxiLFgscCxyLFM9MCxmPSExLEo9ITEsSz0hMDtpZih0eXBlb2YgbCE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgd2wobyk7bj1qbChuKXx8MCx0bChkKSYmKGY9ISFkLmxlYWRpbmcsSj0ibWF4V2FpdCJpbiBkLGI9Sj9YbChqbChkLm1heFdhaXQpfHwwLG4pOmIsSz0idHJhaWxpbmciaW4gZD8hIWQudHJhaWxpbmc6Syk7ZnVuY3Rpb24gTihlbCl7dmFyIGNuPXUsU249bTtyZXR1cm4gdT1tPXQsUz1lbCxYPWwuYXBwbHkoU24sY24pLFh9ZnVuY3Rpb24gZyhlbCl7cmV0dXJuIFM9ZWwscD1YZChFLG4pLGY/TihlbCk6WH1mdW5jdGlvbiBCKGVsKXt2YXIgY249ZWwtcixTbj1lbC1TLE5hPW4tY247cmV0dXJuIEo/UmwoTmEsYi1Tbik6TmF9ZnVuY3Rpb24gVShlbCl7dmFyIGNuPWVsLXIsU249ZWwtUztyZXR1cm4gcj09PXR8fGNuPj1ufHxjbjwwfHxKJiZTbj49Yn1mdW5jdGlvbiBFKCl7dmFyIGVsPUlaKCk7aWYoVShlbCkpcmV0dXJuIEQoZWwpO3A9WGQoRSxCKGVsKSl9ZnVuY3Rpb24gRChlbCl7cmV0dXJuIHA9dCxLJiZ1P04oZWwpOih1PW09dCxYKX1mdW5jdGlvbiBVbCgpe3AhPT10JiZMbShwKSxTPTAsdT1yPW09cD10fWZ1bmN0aW9uIGZsKCl7cmV0dXJuIHA9PT10P1g6RChJWigpKX1mdW5jdGlvbiBNbCgpe3ZhciBlbD1JWigpLGNuPVUoZWwpO2lmKHU9YXJndW1lbnRzLG09dGhpcyxyPWVsLGNuKXtpZihwPT09dClyZXR1cm4gZyhyKTtpZihKKXJldHVybiBMbShwKSxwPVhkKEUsbiksTihyKX1yZXR1cm4gcD09PXQmJihwPVhkKEUsbikpLFh9cmV0dXJuIE1sLmNhbmNlbD1VbCxNbC5mbHVzaD1mbCxNbH12YXIgSmg9UShmdW5jdGlvbihsLG4pe3JldHVybiBjbShsLDEsbil9KSxJaD1RKGZ1bmN0aW9uKGwsbixkKXtyZXR1cm4gY20obCxqbChuKXx8MCxkKX0pO2Z1bmN0aW9uIEtoKGwpe3JldHVybiBWbihsLGpjKX1mdW5jdGlvbiBLWihsLG4pe2lmKHR5cGVvZiBsIT0iZnVuY3Rpb24ifHxuIT1udWxsJiZ0eXBlb2YgbiE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgd2wobyk7dmFyIGQ9ZnVuY3Rpb24oKXt2YXIgdT1hcmd1bWVudHMsbT1uP24uYXBwbHkodGhpcyx1KTp1WzBdLGI9ZC5jYWNoZTtpZihiLmhhcyhtKSlyZXR1cm4gYi5nZXQobSk7dmFyIFg9bC5hcHBseSh0aGlzLHUpO3JldHVybiBkLmNhY2hlPWIuc2V0KG0sWCl8fGIsWH07cmV0dXJuIGQuY2FjaGU9bmV3KEtaLkNhY2hlfHxybiksZH1LWi5DYWNoZT1ybjtmdW5jdGlvbiBGWihsKXtpZih0eXBlb2YgbCE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgd2wobyk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49YXJndW1lbnRzO3N3aXRjaChuLmxlbmd0aCl7Y2FzZSAwOnJldHVybiFsLmNhbGwodGhpcyk7Y2FzZSAxOnJldHVybiFsLmNhbGwodGhpcyxuWzBdKTtjYXNlIDI6cmV0dXJuIWwuY2FsbCh0aGlzLG5bMF0sblsxXSk7Y2FzZSAzOnJldHVybiFsLmNhbGwodGhpcyxuWzBdLG5bMV0sblsyXSl9cmV0dXJuIWwuYXBwbHkodGhpcyxuKX19ZnVuY3Rpb24gRmgobCl7cmV0dXJuIG1hKDIsbCl9dmFyIE5oPXJXKGZ1bmN0aW9uKGwsbil7bj1uLmxlbmd0aD09MSYmQyhuWzBdKT9abChuWzBdLEhsKGsoKSkpOlpsKFZsKG4sMSksSGwoaygpKSk7dmFyIGQ9bi5sZW5ndGg7cmV0dXJuIFEoZnVuY3Rpb24odSl7Zm9yKHZhciBtPS0xLGI9UmwodS5sZW5ndGgsZCk7KyttPGI7KXVbbV09blttXS5jYWxsKHRoaXMsdVttXSk7cmV0dXJuIHZsKGwsdGhpcyx1KX0pfSkseHU9UShmdW5jdGlvbihsLG4pe3ZhciBkPXpuKG4semMoeHUpKTtyZXR1cm4gVm4obCxfLHQsbixkKX0pLFhhPVEoZnVuY3Rpb24obCxuKXt2YXIgZD16bihuLHpjKFhhKSk7cmV0dXJuIFZuKGwscmwsdCxuLGQpfSksemg9eW4oZnVuY3Rpb24obCxuKXtyZXR1cm4gVm4obCx6bCx0LHQsdCxuKX0pO2Z1bmN0aW9uIHZoKGwsbil7aWYodHlwZW9mIGwhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IHdsKG8pO3JldHVybiBuPW49PT10P246UChuKSxRKGwsbil9ZnVuY3Rpb24gSGgobCxuKXtpZih0eXBlb2YgbCE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgd2wobyk7cmV0dXJuIG49bj09bnVsbD8wOlhsKFAobiksMCksUShmdW5jdGlvbihkKXt2YXIgdT1kW25dLG09VW4oZCwwLG4pO3JldHVybiB1JiZObihtLHUpLHZsKGwsdGhpcyxtKX0pfWZ1bmN0aW9uIGtoKGwsbixkKXt2YXIgdT0hMCxtPSEwO2lmKHR5cGVvZiBsIT0iZnVuY3Rpb24iKXRocm93IG5ldyB3bChvKTtyZXR1cm4gdGwoZCkmJih1PSJsZWFkaW5nImluIGQ/ISFkLmxlYWRpbmc6dSxtPSJ0cmFpbGluZyJpbiBkPyEhZC50cmFpbGluZzptKSxvYShsLG4se2xlYWRpbmc6dSxtYXhXYWl0Om4sdHJhaWxpbmc6bX0pfWZ1bmN0aW9uIGdoKGwpe3JldHVybiBlYShsLDEpfWZ1bmN0aW9uIFVoKGwsbil7cmV0dXJuIHh1KGF1KG4pLGwpfWZ1bmN0aW9uIE1oKCl7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuW107dmFyIGw9YXJndW1lbnRzWzBdO3JldHVybiBDKGwpP2w6W2xdfWZ1bmN0aW9uIFRoKGwpe3JldHVybiBCbChsLEkpfWZ1bmN0aW9uIENoKGwsbil7cmV0dXJuIG49dHlwZW9mIG49PSJmdW5jdGlvbiI/bjp0LEJsKGwsSSxuKX1mdW5jdGlvbiB3aChsKXtyZXR1cm4gQmwobCxMfEkpfWZ1bmN0aW9uIFBoKGwsbil7cmV0dXJuIG49dHlwZW9mIG49PSJmdW5jdGlvbiI/bjp0LEJsKGwsTHxJLG4pfWZ1bmN0aW9uIEJoKGwsbil7cmV0dXJuIG49PW51bGx8fG5tKGwsbixwbChuKSl9ZnVuY3Rpb24gbm4obCxuKXtyZXR1cm4gbD09PW58fGwhPT1sJiZuIT09bn12YXIgUWg9TFoocXQpLEVoPUxaKGZ1bmN0aW9uKGwsbil7cmV0dXJuIGw+PW59KSxtYz1pbShmdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHN9KCkpP2ltOmZ1bmN0aW9uKGwpe3JldHVybiB1bChsKSYmbGwuY2FsbChsLCJjYWxsZWUiKSYmIWplLmNhbGwobCwiY2FsbGVlIil9LEM9Ui5pc0FycmF5LGpoPUplP0hsKEplKTpuVztmdW5jdGlvbiBJbChsKXtyZXR1cm4gbCE9bnVsbCYmTloobC5sZW5ndGgpJiYhTG4obCl9ZnVuY3Rpb24gaWwobCl7cmV0dXJuIHVsKGwpJiZJbChsKX1mdW5jdGlvbiBEaChsKXtyZXR1cm4gbD09PSEwfHxsPT09ITF8fHVsKGwpJiZTbChsKT09RGN9dmFyIE1uPWVwfHxndSxPaD1JZT9IbChJZSk6Y1c7ZnVuY3Rpb24gQWgobCl7cmV0dXJuIHVsKGwpJiZsLm5vZGVUeXBlPT09MSYmIXNkKGwpfWZ1bmN0aW9uIF9oKGwpe2lmKGw9PW51bGwpcmV0dXJuITA7aWYoSWwobCkmJihDKGwpfHx0eXBlb2YgbD09InN0cmluZyJ8fHR5cGVvZiBsLnNwbGljZT09ImZ1bmN0aW9uInx8TW4obCl8fHZjKGwpfHxtYyhsKSkpcmV0dXJuIWwubGVuZ3RoO3ZhciBuPUxsKGwpO2lmKG49PV9sfHxuPT1xbClyZXR1cm4hbC5zaXplO2lmKG9kKGwpKXJldHVybiFudShsKS5sZW5ndGg7Zm9yKHZhciBkIGluIGwpaWYobGwuY2FsbChsLGQpKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIHFoKGwsbil7cmV0dXJuIGFkKGwsbil9ZnVuY3Rpb24gJGgobCxuLGQpe2Q9dHlwZW9mIGQ9PSJmdW5jdGlvbiI/ZDp0O3ZhciB1PWQ/ZChsLG4pOnQ7cmV0dXJuIHU9PT10P2FkKGwsbix0LGQpOiEhdX1mdW5jdGlvbiBmdShsKXtpZighdWwobCkpcmV0dXJuITE7dmFyIG49U2wobCk7cmV0dXJuIG49PUJkfHxuPT1SWHx8dHlwZW9mIGwubWVzc2FnZT09InN0cmluZyImJnR5cGVvZiBsLm5hbWU9PSJzdHJpbmciJiYhc2QobCl9ZnVuY3Rpb24gbFYobCl7cmV0dXJuIHR5cGVvZiBsPT0ibnVtYmVyIiYmT2UobCl9ZnVuY3Rpb24gTG4obCl7aWYoIXRsKGwpKXJldHVybiExO3ZhciBuPVNsKGwpO3JldHVybiBuPT1RZHx8bj09Y2V8fG49PXlYfHxuPT1ZWH1mdW5jdGlvbiBzYShsKXtyZXR1cm4gdHlwZW9mIGw9PSJudW1iZXIiJiZsPT1QKGwpfWZ1bmN0aW9uIE5aKGwpe3JldHVybiB0eXBlb2YgbD09Im51bWJlciImJmw+LTEmJmwlMT09MCYmbDw9S259ZnVuY3Rpb24gdGwobCl7dmFyIG49dHlwZW9mIGw7cmV0dXJuIGwhPW51bGwmJihuPT0ib2JqZWN0Inx8bj09ImZ1bmN0aW9uIil9ZnVuY3Rpb24gdWwobCl7cmV0dXJuIGwhPW51bGwmJnR5cGVvZiBsPT0ib2JqZWN0In12YXIgcGE9S2U/SGwoS2UpOlpXO2Z1bmN0aW9uIG5WKGwsbil7cmV0dXJuIGw9PT1ufHxsdShsLG4sV3UobikpfWZ1bmN0aW9uIGNWKGwsbixkKXtyZXR1cm4gZD10eXBlb2YgZD09ImZ1bmN0aW9uIj9kOnQsbHUobCxuLFd1KG4pLGQpfWZ1bmN0aW9uIGRWKGwpe3JldHVybiBXYShsKSYmbCE9K2x9ZnVuY3Rpb24gWlYobCl7aWYoQ1cobCkpdGhyb3cgbmV3IFQoRyk7cmV0dXJuIGVtKGwpfWZ1bmN0aW9uIHRWKGwpe3JldHVybiBsPT09bnVsbH1mdW5jdGlvbiB1VihsKXtyZXR1cm4gbD09bnVsbH1mdW5jdGlvbiBXYShsKXtyZXR1cm4gdHlwZW9mIGw9PSJudW1iZXIifHx1bChsKSYmU2wobCk9PUFjfWZ1bmN0aW9uIHNkKGwpe2lmKCF1bChsKXx8U2wobCkhPXBuKXJldHVybiExO3ZhciBuPXRaKGwpO2lmKG49PT1udWxsKXJldHVybiEwO3ZhciBkPWxsLmNhbGwobiwiY29uc3RydWN0b3IiKSYmbi5jb25zdHJ1Y3RvcjtyZXR1cm4gdHlwZW9mIGQ9PSJmdW5jdGlvbiImJmQgaW5zdGFuY2VvZiBkJiZuWi5jYWxsKGQpPT1jcH12YXIgSnU9RmU/SGwoRmUpOnRXO2Z1bmN0aW9uIGlWKGwpe3JldHVybiBzYShsKSYmbD49LUtuJiZsPD1Lbn12YXIgcmE9TmU/SGwoTmUpOnVXO2Z1bmN0aW9uIHpaKGwpe3JldHVybiB0eXBlb2YgbD09InN0cmluZyJ8fCFDKGwpJiZ1bChsKSYmU2wobCk9PXFjfWZ1bmN0aW9uIGdsKGwpe3JldHVybiB0eXBlb2YgbD09InN5bWJvbCJ8fHVsKGwpJiZTbChsKT09RWR9dmFyIHZjPXplP0hsKHplKTppVztmdW5jdGlvbiBlVihsKXtyZXR1cm4gbD09PXR9ZnVuY3Rpb24gbVYobCl7cmV0dXJuIHVsKGwpJiZMbChsKT09JGN9ZnVuY3Rpb24gYVYobCl7cmV0dXJuIHVsKGwpJiZTbChsKT09eFh9dmFyIGJWPUxaKGN1KSxHVj1MWihmdW5jdGlvbihsLG4pe3JldHVybiBsPD1ufSk7ZnVuY3Rpb24gaGEobCl7aWYoIWwpcmV0dXJuW107aWYoSWwobCkpcmV0dXJuIHpaKGwpPyRsKGwpOkpsKGwpO2lmKGNkJiZsW2NkXSlyZXR1cm4gQnMobFtjZF0oKSk7dmFyIG49TGwobCksZD1uPT1fbD9QdDpuPT1xbD9xZDpIYztyZXR1cm4gZChsKX1mdW5jdGlvbiBZbihsKXtpZighbClyZXR1cm4gbD09PTA/bDowO2lmKGw9amwobCksbD09PWxjfHxsPT09LWxjKXt2YXIgbj1sPDA/LTE6MTtyZXR1cm4gbipXWH1yZXR1cm4gbD09PWw/bDowfWZ1bmN0aW9uIFAobCl7dmFyIG49WW4obCksZD1uJTE7cmV0dXJuIG49PT1uP2Q/bi1kOm46MH1mdW5jdGlvbiBWYShsKXtyZXR1cm4gbD90YyhQKGwpLDAsdG4pOjB9ZnVuY3Rpb24gamwobCl7aWYodHlwZW9mIGw9PSJudW1iZXIiKXJldHVybiBsO2lmKGdsKGwpKXJldHVybiB3ZDtpZih0bChsKSl7dmFyIG49dHlwZW9mIGwudmFsdWVPZj09ImZ1bmN0aW9uIj9sLnZhbHVlT2YoKTpsO2w9dGwobik/bisiIjpufWlmKHR5cGVvZiBsIT0ic3RyaW5nIilyZXR1cm4gbD09PTA/bDorbDtsPU1lKGwpO3ZhciBkPWpYLnRlc3QobCk7cmV0dXJuIGR8fE9YLnRlc3QobCk/ZnMobC5zbGljZSgyKSxkPzI6OCk6RVgudGVzdChsKT93ZDorbH1mdW5jdGlvbiB5YShsKXtyZXR1cm4gZW4obCxLbChsKSl9ZnVuY3Rpb24gb1YobCl7cmV0dXJuIGw/dGMoUChsKSwtS24sS24pOmw9PT0wP2w6MH1mdW5jdGlvbiBxKGwpe3JldHVybiBsPT1udWxsPyIiOmtsKGwpfXZhciBYVj1GYyhmdW5jdGlvbihsLG4pe2lmKG9kKG4pfHxJbChuKSl7ZW4obixwbChuKSxsKTtyZXR1cm59Zm9yKHZhciBkIGluIG4pbGwuY2FsbChuLGQpJiZpZChsLGQsbltkXSl9KSxSYT1GYyhmdW5jdGlvbihsLG4pe2VuKG4sS2wobiksbCl9KSx2Wj1GYyhmdW5jdGlvbihsLG4sZCx1KXtlbihuLEtsKG4pLGwsdSl9KSxzVj1GYyhmdW5jdGlvbihsLG4sZCx1KXtlbihuLHBsKG4pLGwsdSl9KSxwVj15bihPdCk7ZnVuY3Rpb24gV1YobCxuKXt2YXIgZD1LYyhsKTtyZXR1cm4gbj09bnVsbD9kOmxtKGQsbil9dmFyIHJWPVEoZnVuY3Rpb24obCxuKXtsPW5sKGwpO3ZhciBkPS0xLHU9bi5sZW5ndGgsbT11PjI/blsyXTp0O2ZvcihtJiZ4bChuWzBdLG5bMV0sbSkmJih1PTEpOysrZDx1Oylmb3IodmFyIGI9bltkXSxYPUtsKGIpLHA9LTEscj1YLmxlbmd0aDsrK3A8cjspe3ZhciBTPVhbcF0sZj1sW1NdOyhmPT09dHx8bm4oZixmY1tTXSkmJiFsbC5jYWxsKGwsUykpJiYobFtTXT1iW1NdKX1yZXR1cm4gbH0pLGhWPVEoZnVuY3Rpb24obCl7cmV0dXJuIGwucHVzaCh0LE1tKSx2bChMYSx0LGwpfSk7ZnVuY3Rpb24gVlYobCxuKXtyZXR1cm4gSGUobCxrKG4sMyksdW4pfWZ1bmN0aW9uIHlWKGwsbil7cmV0dXJuIEhlKGwsayhuLDMpLF90KX1mdW5jdGlvbiBSVihsLG4pe3JldHVybiBsPT1udWxsP2w6QXQobCxrKG4sMyksS2wpfWZ1bmN0aW9uIExWKGwsbil7cmV0dXJuIGw9PW51bGw/bDp0bShsLGsobiwzKSxLbCl9ZnVuY3Rpb24gWVYobCxuKXtyZXR1cm4gbCYmdW4obCxrKG4sMykpfWZ1bmN0aW9uIFNWKGwsbil7cmV0dXJuIGwmJl90KGwsayhuLDMpKX1mdW5jdGlvbiB4VihsKXtyZXR1cm4gbD09bnVsbD9bXTpzWihsLHBsKGwpKX1mdW5jdGlvbiBmVihsKXtyZXR1cm4gbD09bnVsbD9bXTpzWihsLEtsKGwpKX1mdW5jdGlvbiBJdShsLG4sZCl7dmFyIHU9bD09bnVsbD90OnVjKGwsbik7cmV0dXJuIHU9PT10P2Q6dX1mdW5jdGlvbiBKVihsLG4pe3JldHVybiBsIT1udWxsJiZ3bShsLG4sX3ApfWZ1bmN0aW9uIEt1KGwsbil7cmV0dXJuIGwhPW51bGwmJndtKGwsbixxcCl9dmFyIElWPXZtKGZ1bmN0aW9uKGwsbixkKXtuIT1udWxsJiZ0eXBlb2Ygbi50b1N0cmluZyE9ImZ1bmN0aW9uIiYmKG49Y1ouY2FsbChuKSksbFtuXT1kfSxOdShGbCkpLEtWPXZtKGZ1bmN0aW9uKGwsbixkKXtuIT1udWxsJiZ0eXBlb2Ygbi50b1N0cmluZyE9ImZ1bmN0aW9uIiYmKG49Y1ouY2FsbChuKSksbGwuY2FsbChsLG4pP2xbbl0ucHVzaChkKTpsW25dPVtkXX0sayksRlY9UShtZCk7ZnVuY3Rpb24gcGwobCl7cmV0dXJuIElsKGwpP3FlKGwpOm51KGwpfWZ1bmN0aW9uIEtsKGwpe3JldHVybiBJbChsKT9xZShsLCEwKTplVyhsKX1mdW5jdGlvbiBOVihsLG4pe3ZhciBkPXt9O3JldHVybiBuPWsobiwzKSx1bihsLGZ1bmN0aW9uKHUsbSxiKXtobihkLG4odSxtLGIpLHUpfSksZH1mdW5jdGlvbiB6VihsLG4pe3ZhciBkPXt9O3JldHVybiBuPWsobiwzKSx1bihsLGZ1bmN0aW9uKHUsbSxiKXtobihkLG0sbih1LG0sYikpfSksZH12YXIgdlY9RmMoZnVuY3Rpb24obCxuLGQpe3BaKGwsbixkKX0pLExhPUZjKGZ1bmN0aW9uKGwsbixkLHUpe3BaKGwsbixkLHUpfSksSFY9eW4oZnVuY3Rpb24obCxuKXt2YXIgZD17fTtpZihsPT1udWxsKXJldHVybiBkO3ZhciB1PSExO249WmwobixmdW5jdGlvbihiKXtyZXR1cm4gYj1nbihiLGwpLHV8fCh1PWIubGVuZ3RoPjEpLGJ9KSxlbihsLHN1KGwpLGQpLHUmJihkPUJsKGQsTHx4fEksSVcpKTtmb3IodmFyIG09bi5sZW5ndGg7bS0tOylpdShkLG5bbV0pO3JldHVybiBkfSk7ZnVuY3Rpb24ga1YobCxuKXtyZXR1cm4gWWEobCxGWihrKG4pKSl9dmFyIGdWPXluKGZ1bmN0aW9uKGwsbil7cmV0dXJuIGw9PW51bGw/e306YVcobCxuKX0pO2Z1bmN0aW9uIFlhKGwsbil7aWYobD09bnVsbClyZXR1cm57fTt2YXIgZD1abChzdShsKSxmdW5jdGlvbih1KXtyZXR1cm5bdV19KTtyZXR1cm4gbj1rKG4pLHNtKGwsZCxmdW5jdGlvbih1LG0pe3JldHVybiBuKHUsbVswXSl9KX1mdW5jdGlvbiBVVihsLG4sZCl7bj1nbihuLGwpO3ZhciB1PS0xLG09bi5sZW5ndGg7Zm9yKG18fChtPTEsbD10KTsrK3U8bTspe3ZhciBiPWw9PW51bGw/dDpsW21uKG5bdV0pXTtiPT09dCYmKHU9bSxiPWQpLGw9TG4oYik/Yi5jYWxsKGwpOmJ9cmV0dXJuIGx9ZnVuY3Rpb24gTVYobCxuLGQpe3JldHVybiBsPT1udWxsP2w6YmQobCxuLGQpfWZ1bmN0aW9uIFRWKGwsbixkLHUpe3JldHVybiB1PXR5cGVvZiB1PT0iZnVuY3Rpb24iP3U6dCxsPT1udWxsP2w6YmQobCxuLGQsdSl9dmFyIFNhPWdtKHBsKSx4YT1nbShLbCk7ZnVuY3Rpb24gQ1YobCxuLGQpe3ZhciB1PUMobCksbT11fHxNbihsKXx8dmMobCk7aWYobj1rKG4sNCksZD09bnVsbCl7dmFyIGI9bCYmbC5jb25zdHJ1Y3RvcjttP2Q9dT9uZXcgYjpbXTp0bChsKT9kPUxuKGIpP0tjKHRaKGwpKTp7fTpkPXt9fXJldHVybihtP0NsOnVuKShsLGZ1bmN0aW9uKFgscCxyKXtyZXR1cm4gbihkLFgscCxyKX0pLGR9ZnVuY3Rpb24gd1YobCxuKXtyZXR1cm4gbD09bnVsbD8hMDppdShsLG4pfWZ1bmN0aW9uIFBWKGwsbixkKXtyZXR1cm4gbD09bnVsbD9sOlZtKGwsbixhdShkKSl9ZnVuY3Rpb24gQlYobCxuLGQsdSl7cmV0dXJuIHU9dHlwZW9mIHU9PSJmdW5jdGlvbiI/dTp0LGw9PW51bGw/bDpWbShsLG4sYXUoZCksdSl9ZnVuY3Rpb24gSGMobCl7cmV0dXJuIGw9PW51bGw/W106d3QobCxwbChsKSl9ZnVuY3Rpb24gUVYobCl7cmV0dXJuIGw9PW51bGw/W106d3QobCxLbChsKSl9ZnVuY3Rpb24gRVYobCxuLGQpe3JldHVybiBkPT09dCYmKGQ9bixuPXQpLGQhPT10JiYoZD1qbChkKSxkPWQ9PT1kP2Q6MCksbiE9PXQmJihuPWpsKG4pLG49bj09PW4/bjowKSx0YyhqbChsKSxuLGQpfWZ1bmN0aW9uIGpWKGwsbixkKXtyZXR1cm4gbj1ZbihuKSxkPT09dD8oZD1uLG49MCk6ZD1ZbihkKSxsPWpsKGwpLCRwKGwsbixkKX1mdW5jdGlvbiBEVihsLG4sZCl7aWYoZCYmdHlwZW9mIGQhPSJib29sZWFuIiYmeGwobCxuLGQpJiYobj1kPXQpLGQ9PT10JiYodHlwZW9mIG49PSJib29sZWFuIj8oZD1uLG49dCk6dHlwZW9mIGw9PSJib29sZWFuIiYmKGQ9bCxsPXQpKSxsPT09dCYmbj09PXQ/KGw9MCxuPTEpOihsPVluKGwpLG49PT10PyhuPWwsbD0wKTpuPVluKG4pKSxsPm4pe3ZhciB1PWw7bD1uLG49dX1pZihkfHxsJTF8fG4lMSl7dmFyIG09QWUoKTtyZXR1cm4gUmwobCttKihuLWwreHMoIjFlLSIrKChtKyIiKS5sZW5ndGgtMSkpKSxuKX1yZXR1cm4gWnUobCxuKX12YXIgT1Y9TmMoZnVuY3Rpb24obCxuLGQpe3JldHVybiBuPW4udG9Mb3dlckNhc2UoKSxsKyhkP2ZhKG4pOm4pfSk7ZnVuY3Rpb24gZmEobCl7cmV0dXJuIEZ1KHEobCkudG9Mb3dlckNhc2UoKSl9ZnVuY3Rpb24gSmEobCl7cmV0dXJuIGw9cShsKSxsJiZsLnJlcGxhY2UoX1gsTXMpLnJlcGxhY2UocHMsIiIpfWZ1bmN0aW9uIEFWKGwsbixkKXtsPXEobCksbj1rbChuKTt2YXIgdT1sLmxlbmd0aDtkPWQ9PT10P3U6dGMoUChkKSwwLHUpO3ZhciBtPWQ7cmV0dXJuIGQtPW4ubGVuZ3RoLGQ+PTAmJmwuc2xpY2UoZCxtKT09bn1mdW5jdGlvbiBfVihsKXtyZXR1cm4gbD1xKGwpLGwmJkZYLnRlc3QobCk/bC5yZXBsYWNlKHRlLFRzKTpsfWZ1bmN0aW9uIHFWKGwpe3JldHVybiBsPXEobCksbCYmZ1gudGVzdChsKT9sLnJlcGxhY2UoeHQsIlxcJCYiKTpsfXZhciAkVj1OYyhmdW5jdGlvbihsLG4sZCl7cmV0dXJuIGwrKGQ/Ii0iOiIiKStuLnRvTG93ZXJDYXNlKCl9KSxseT1OYyhmdW5jdGlvbihsLG4sZCl7cmV0dXJuIGwrKGQ/IiAiOiIiKStuLnRvTG93ZXJDYXNlKCl9KSxueT1GbSgidG9Mb3dlckNhc2UiKTtmdW5jdGlvbiBjeShsLG4sZCl7bD1xKGwpLG49UChuKTt2YXIgdT1uP1NjKGwpOjA7aWYoIW58fHU+PW4pcmV0dXJuIGw7dmFyIG09KG4tdSkvMjtyZXR1cm4gUloobVoobSksZCkrbCtSWihlWihtKSxkKX1mdW5jdGlvbiBkeShsLG4sZCl7bD1xKGwpLG49UChuKTt2YXIgdT1uP1NjKGwpOjA7cmV0dXJuIG4mJnU8bj9sK1JaKG4tdSxkKTpsfWZ1bmN0aW9uIFp5KGwsbixkKXtsPXEobCksbj1QKG4pO3ZhciB1PW4/U2MobCk6MDtyZXR1cm4gbiYmdTxuP1JaKG4tdSxkKStsOmx9ZnVuY3Rpb24gdHkobCxuLGQpe3JldHVybiBkfHxuPT1udWxsP249MDpuJiYobj0rbiksR3AocShsKS5yZXBsYWNlKGZ0LCIiKSxufHwwKX1mdW5jdGlvbiB1eShsLG4sZCl7cmV0dXJuKGQ/eGwobCxuLGQpOm49PT10KT9uPTE6bj1QKG4pLHR1KHEobCksbil9ZnVuY3Rpb24gaXkoKXt2YXIgbD1hcmd1bWVudHMsbj1xKGxbMF0pO3JldHVybiBsLmxlbmd0aDwzP246bi5yZXBsYWNlKGxbMV0sbFsyXSl9dmFyIGV5PU5jKGZ1bmN0aW9uKGwsbixkKXtyZXR1cm4gbCsoZD8iXyI6IiIpK24udG9Mb3dlckNhc2UoKX0pO2Z1bmN0aW9uIG15KGwsbixkKXtyZXR1cm4gZCYmdHlwZW9mIGQhPSJudW1iZXIiJiZ4bChsLG4sZCkmJihuPWQ9dCksZD1kPT09dD90bjpkPj4+MCxkPyhsPXEobCksbCYmKHR5cGVvZiBuPT0ic3RyaW5nInx8biE9bnVsbCYmIUp1KG4pKSYmKG49a2wobiksIW4mJlljKGwpKT9VbigkbChsKSwwLGQpOmwuc3BsaXQobixkKSk6W119dmFyIGF5PU5jKGZ1bmN0aW9uKGwsbixkKXtyZXR1cm4gbCsoZD8iICI6IiIpK0Z1KG4pfSk7ZnVuY3Rpb24gYnkobCxuLGQpe3JldHVybiBsPXEobCksZD1kPT1udWxsPzA6dGMoUChkKSwwLGwubGVuZ3RoKSxuPWtsKG4pLGwuc2xpY2UoZCxkK24ubGVuZ3RoKT09bn1mdW5jdGlvbiBHeShsLG4sZCl7dmFyIHU9YS50ZW1wbGF0ZVNldHRpbmdzO2QmJnhsKGwsbixkKSYmKG49dCksbD1xKGwpLG49dlooe30sbix1LFVtKTt2YXIgbT12Wih7fSxuLmltcG9ydHMsdS5pbXBvcnRzLFVtKSxiPXBsKG0pLFg9d3QobSxiKSxwLHIsUz0wLGY9bi5pbnRlcnBvbGF0ZXx8amQsSj0iX19wICs9ICciLEs9QnQoKG4uZXNjYXBlfHxqZCkuc291cmNlKyJ8IitmLnNvdXJjZSsifCIrKGY9PT11ZT9RWDpqZCkuc291cmNlKyJ8Iisobi5ldmFsdWF0ZXx8amQpLnNvdXJjZSsifCQiLCJnIiksTj0iLy8jIHNvdXJjZVVSTD0iKyhsbC5jYWxsKG4sInNvdXJjZVVSTCIpPyhuLnNvdXJjZVVSTCsiIikucmVwbGFjZSgvXHMvZywiICIpOiJsb2Rhc2gudGVtcGxhdGVTb3VyY2VzWyIrICsreXMrIl0iKStgCmA7bC5yZXBsYWNlKEssZnVuY3Rpb24oVSxFLEQsVWwsZmwsTWwpe3JldHVybiBEfHwoRD1VbCksSis9bC5zbGljZShTLE1sKS5yZXBsYWNlKHFYLENzKSxFJiYocD0hMCxKKz1gJyArCl9fZShgK0UrYCkgKwonYCksZmwmJihyPSEwLEorPWAnOwpgK2ZsK2A7Cl9fcCArPSAnYCksRCYmKEorPWAnICsKKChfX3QgPSAoYCtEK2ApKSA9PSBudWxsID8gJycgOiBfX3QpICsKJ2ApLFM9TWwrVS5sZW5ndGgsVX0pLEorPWAnOwpgO3ZhciBnPWxsLmNhbGwobiwidmFyaWFibGUiKSYmbi52YXJpYWJsZTtpZighZylKPWB3aXRoIChvYmopIHsKYCtKK2AKfQpgO2Vsc2UgaWYoUFgudGVzdChnKSl0aHJvdyBuZXcgVChzKTtKPShyP0oucmVwbGFjZShmWCwiIik6SikucmVwbGFjZShKWCwiJDEiKS5yZXBsYWNlKElYLCIkMTsiKSxKPSJmdW5jdGlvbigiKyhnfHwib2JqIikrYCkgewpgKyhnPyIiOmBvYmogfHwgKG9iaiA9IHt9KTsKYCkrInZhciBfX3QsIF9fcCA9ICcnIisocD8iLCBfX2UgPSBfLmVzY2FwZSI6IiIpKyhyP2AsIF9faiA9IEFycmF5LnByb3RvdHlwZS5qb2luOwpmdW5jdGlvbiBwcmludCgpIHsgX19wICs9IF9fai5jYWxsKGFyZ3VtZW50cywgJycpIH0KYDpgOwpgKStKK2ByZXR1cm4gX19wCn1gO3ZhciBCPUthKGZ1bmN0aW9uKCl7cmV0dXJuIE8oYixOKyJyZXR1cm4gIitKKS5hcHBseSh0LFgpfSk7aWYoQi5zb3VyY2U9SixmdShCKSl0aHJvdyBCO3JldHVybiBCfWZ1bmN0aW9uIG95KGwpe3JldHVybiBxKGwpLnRvTG93ZXJDYXNlKCl9ZnVuY3Rpb24gWHkobCl7cmV0dXJuIHEobCkudG9VcHBlckNhc2UoKX1mdW5jdGlvbiBzeShsLG4sZCl7aWYobD1xKGwpLGwmJihkfHxuPT09dCkpcmV0dXJuIE1lKGwpO2lmKCFsfHwhKG49a2wobikpKXJldHVybiBsO3ZhciB1PSRsKGwpLG09JGwobiksYj1UZSh1LG0pLFg9Q2UodSxtKSsxO3JldHVybiBVbih1LGIsWCkuam9pbigiIil9ZnVuY3Rpb24gcHkobCxuLGQpe2lmKGw9cShsKSxsJiYoZHx8bj09PXQpKXJldHVybiBsLnNsaWNlKDAsUGUobCkrMSk7aWYoIWx8fCEobj1rbChuKSkpcmV0dXJuIGw7dmFyIHU9JGwobCksbT1DZSh1LCRsKG4pKSsxO3JldHVybiBVbih1LDAsbSkuam9pbigiIil9ZnVuY3Rpb24gV3kobCxuLGQpe2lmKGw9cShsKSxsJiYoZHx8bj09PXQpKXJldHVybiBsLnJlcGxhY2UoZnQsIiIpO2lmKCFsfHwhKG49a2wobikpKXJldHVybiBsO3ZhciB1PSRsKGwpLG09VGUodSwkbChuKSk7cmV0dXJuIFVuKHUsbSkuam9pbigiIil9ZnVuY3Rpb24gcnkobCxuKXt2YXIgZD1wdCx1PUdYO2lmKHRsKG4pKXt2YXIgbT0ic2VwYXJhdG9yImluIG4/bi5zZXBhcmF0b3I6bTtkPSJsZW5ndGgiaW4gbj9QKG4ubGVuZ3RoKTpkLHU9Im9taXNzaW9uImluIG4/a2wobi5vbWlzc2lvbik6dX1sPXEobCk7dmFyIGI9bC5sZW5ndGg7aWYoWWMobCkpe3ZhciBYPSRsKGwpO2I9WC5sZW5ndGh9aWYoZD49YilyZXR1cm4gbDt2YXIgcD1kLVNjKHUpO2lmKHA8MSlyZXR1cm4gdTt2YXIgcj1YP1VuKFgsMCxwKS5qb2luKCIiKTpsLnNsaWNlKDAscCk7aWYobT09PXQpcmV0dXJuIHIrdTtpZihYJiYocCs9ci5sZW5ndGgtcCksSnUobSkpe2lmKGwuc2xpY2UocCkuc2VhcmNoKG0pKXt2YXIgUyxmPXI7Zm9yKG0uZ2xvYmFsfHwobT1CdChtLnNvdXJjZSxxKGllLmV4ZWMobSkpKyJnIikpLG0ubGFzdEluZGV4PTA7Uz1tLmV4ZWMoZik7KXZhciBKPVMuaW5kZXg7cj1yLnNsaWNlKDAsSj09PXQ/cDpKKX19ZWxzZSBpZihsLmluZGV4T2Yoa2wobSkscCkhPXApe3ZhciBLPXIubGFzdEluZGV4T2YobSk7Sz4tMSYmKHI9ci5zbGljZSgwLEspKX1yZXR1cm4gcit1fWZ1bmN0aW9uIGh5KGwpe3JldHVybiBsPXEobCksbCYmS1gudGVzdChsKT9sLnJlcGxhY2UoWmUsRHMpOmx9dmFyIFZ5PU5jKGZ1bmN0aW9uKGwsbixkKXtyZXR1cm4gbCsoZD8iICI6IiIpK24udG9VcHBlckNhc2UoKX0pLEZ1PUZtKCJ0b1VwcGVyQ2FzZSIpO2Z1bmN0aW9uIElhKGwsbixkKXtyZXR1cm4gbD1xKGwpLG49ZD90Om4sbj09PXQ/UHMobCk/X3MobCk6dnMobCk6bC5tYXRjaChuKXx8W119dmFyIEthPVEoZnVuY3Rpb24obCxuKXt0cnl7cmV0dXJuIHZsKGwsdCxuKX1jYXRjaChkKXtyZXR1cm4gZnUoZCk/ZDpuZXcgVChkKX19KSx5eT15bihmdW5jdGlvbihsLG4pe3JldHVybiBDbChuLGZ1bmN0aW9uKGQpe2Q9bW4oZCksaG4obCxkLFN1KGxbZF0sbCkpfSksbH0pO2Z1bmN0aW9uIFJ5KGwpe3ZhciBuPWw9PW51bGw/MDpsLmxlbmd0aCxkPWsoKTtyZXR1cm4gbD1uP1psKGwsZnVuY3Rpb24odSl7aWYodHlwZW9mIHVbMV0hPSJmdW5jdGlvbiIpdGhyb3cgbmV3IHdsKG8pO3JldHVybltkKHVbMF0pLHVbMV1dfSk6W10sUShmdW5jdGlvbih1KXtmb3IodmFyIG09LTE7KyttPG47KXt2YXIgYj1sW21dO2lmKHZsKGJbMF0sdGhpcyx1KSlyZXR1cm4gdmwoYlsxXSx0aGlzLHUpfX0pfWZ1bmN0aW9uIEx5KGwpe3JldHVybiBEcChCbChsLEwpKX1mdW5jdGlvbiBOdShsKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbH19ZnVuY3Rpb24gWXkobCxuKXtyZXR1cm4gbD09bnVsbHx8bCE9PWw/bjpsfXZhciBTeT16bSgpLHh5PXptKCEwKTtmdW5jdGlvbiBGbChsKXtyZXR1cm4gbH1mdW5jdGlvbiB6dShsKXtyZXR1cm4gbW0odHlwZW9mIGw9PSJmdW5jdGlvbiI/bDpCbChsLEwpKX1mdW5jdGlvbiBmeShsKXtyZXR1cm4gYm0oQmwobCxMKSl9ZnVuY3Rpb24gSnkobCxuKXtyZXR1cm4gR20obCxCbChuLEwpKX12YXIgSXk9UShmdW5jdGlvbihsLG4pe3JldHVybiBmdW5jdGlvbihkKXtyZXR1cm4gbWQoZCxsLG4pfX0pLEt5PVEoZnVuY3Rpb24obCxuKXtyZXR1cm4gZnVuY3Rpb24oZCl7cmV0dXJuIG1kKGwsZCxuKX19KTtmdW5jdGlvbiB2dShsLG4sZCl7dmFyIHU9cGwobiksbT1zWihuLHUpO2Q9PW51bGwmJiEodGwobikmJihtLmxlbmd0aHx8IXUubGVuZ3RoKSkmJihkPW4sbj1sLGw9dGhpcyxtPXNaKG4scGwobikpKTt2YXIgYj0hKHRsKGQpJiYiY2hhaW4iaW4gZCl8fCEhZC5jaGFpbixYPUxuKGwpO3JldHVybiBDbChtLGZ1bmN0aW9uKHApe3ZhciByPW5bcF07bFtwXT1yLFgmJihsLnByb3RvdHlwZVtwXT1mdW5jdGlvbigpe3ZhciBTPXRoaXMuX19jaGFpbl9fO2lmKGJ8fFMpe3ZhciBmPWwodGhpcy5fX3dyYXBwZWRfXyksSj1mLl9fYWN0aW9uc19fPUpsKHRoaXMuX19hY3Rpb25zX18pO3JldHVybiBKLnB1c2goe2Z1bmM6cixhcmdzOmFyZ3VtZW50cyx0aGlzQXJnOmx9KSxmLl9fY2hhaW5fXz1TLGZ9cmV0dXJuIHIuYXBwbHkobCxObihbdGhpcy52YWx1ZSgpXSxhcmd1bWVudHMpKX0pfSksbH1mdW5jdGlvbiBGeSgpe3JldHVybiBobC5fPT09dGhpcyYmKGhsLl89ZHApLHRoaXN9ZnVuY3Rpb24gSHUoKXt9ZnVuY3Rpb24gTnkobCl7cmV0dXJuIGw9UChsKSxRKGZ1bmN0aW9uKG4pe3JldHVybiBvbShuLGwpfSl9dmFyIHp5PUd1KFpsKSx2eT1HdSh2ZSksSHk9R3UoZ3QpO2Z1bmN0aW9uIEZhKGwpe3JldHVybiBodShsKT9VdChtbihsKSk6YlcobCl9ZnVuY3Rpb24ga3kobCl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiBsPT1udWxsP3Q6dWMobCxuKX19dmFyIGd5PUhtKCksVXk9SG0oITApO2Z1bmN0aW9uIGt1KCl7cmV0dXJuW119ZnVuY3Rpb24gZ3UoKXtyZXR1cm4hMX1mdW5jdGlvbiBNeSgpe3JldHVybnt9fWZ1bmN0aW9uIFR5KCl7cmV0dXJuIiJ9ZnVuY3Rpb24gQ3koKXtyZXR1cm4hMH1mdW5jdGlvbiB3eShsLG4pe2lmKGw9UChsKSxsPDF8fGw+S24pcmV0dXJuW107dmFyIGQ9dG4sdT1SbChsLHRuKTtuPWsobiksbC09dG47Zm9yKHZhciBtPUN0KHUsbik7KytkPGw7KW4oZCk7cmV0dXJuIG19ZnVuY3Rpb24gUHkobCl7cmV0dXJuIEMobCk/WmwobCxtbik6Z2wobCk/W2xdOkpsKF9tKHEobCkpKX1mdW5jdGlvbiBCeShsKXt2YXIgbj0rK25wO3JldHVybiBxKGwpK259dmFyIFF5PXlaKGZ1bmN0aW9uKGwsbil7cmV0dXJuIGwrbn0sMCksRXk9b3UoImNlaWwiKSxqeT15WihmdW5jdGlvbihsLG4pe3JldHVybiBsL259LDEpLER5PW91KCJmbG9vciIpO2Z1bmN0aW9uIE95KGwpe3JldHVybiBsJiZsLmxlbmd0aD9YWihsLEZsLHF0KTp0fWZ1bmN0aW9uIEF5KGwsbil7cmV0dXJuIGwmJmwubGVuZ3RoP1haKGwsayhuLDIpLHF0KTp0fWZ1bmN0aW9uIF95KGwpe3JldHVybiBnZShsLEZsKX1mdW5jdGlvbiBxeShsLG4pe3JldHVybiBnZShsLGsobiwyKSl9ZnVuY3Rpb24gJHkobCl7cmV0dXJuIGwmJmwubGVuZ3RoP1haKGwsRmwsY3UpOnR9ZnVuY3Rpb24gbFIobCxuKXtyZXR1cm4gbCYmbC5sZW5ndGg/WFoobCxrKG4sMiksY3UpOnR9dmFyIG5SPXlaKGZ1bmN0aW9uKGwsbil7cmV0dXJuIGwqbn0sMSksY1I9b3UoInJvdW5kIiksZFI9eVooZnVuY3Rpb24obCxuKXtyZXR1cm4gbC1ufSwwKTtmdW5jdGlvbiBaUihsKXtyZXR1cm4gbCYmbC5sZW5ndGg/VHQobCxGbCk6MH1mdW5jdGlvbiB0UihsLG4pe3JldHVybiBsJiZsLmxlbmd0aD9UdChsLGsobiwyKSk6MH1yZXR1cm4gYS5hZnRlcj1maCxhLmFyeT1lYSxhLmFzc2lnbj1YVixhLmFzc2lnbkluPVJhLGEuYXNzaWduSW5XaXRoPXZaLGEuYXNzaWduV2l0aD1zVixhLmF0PXBWLGEuYmVmb3JlPW1hLGEuYmluZD1TdSxhLmJpbmRBbGw9eXksYS5iaW5kS2V5PWFhLGEuY2FzdEFycmF5PU1oLGEuY2hhaW49dGEsYS5jaHVuaz1EVyxhLmNvbXBhY3Q9T1csYS5jb25jYXQ9QVcsYS5jb25kPVJ5LGEuY29uZm9ybXM9THksYS5jb25zdGFudD1OdSxhLmNvdW50Qnk9WmgsYS5jcmVhdGU9V1YsYS5jdXJyeT1iYSxhLmN1cnJ5UmlnaHQ9R2EsYS5kZWJvdW5jZT1vYSxhLmRlZmF1bHRzPXJWLGEuZGVmYXVsdHNEZWVwPWhWLGEuZGVmZXI9SmgsYS5kZWxheT1JaCxhLmRpZmZlcmVuY2U9X1csYS5kaWZmZXJlbmNlQnk9cVcsYS5kaWZmZXJlbmNlV2l0aD0kVyxhLmRyb3A9bHIsYS5kcm9wUmlnaHQ9bnIsYS5kcm9wUmlnaHRXaGlsZT1jcixhLmRyb3BXaGlsZT1kcixhLmZpbGw9WnIsYS5maWx0ZXI9dWgsYS5mbGF0TWFwPW1oLGEuZmxhdE1hcERlZXA9YWgsYS5mbGF0TWFwRGVwdGg9YmgsYS5mbGF0dGVuPW5hLGEuZmxhdHRlbkRlZXA9dHIsYS5mbGF0dGVuRGVwdGg9dXIsYS5mbGlwPUtoLGEuZmxvdz1TeSxhLmZsb3dSaWdodD14eSxhLmZyb21QYWlycz1pcixhLmZ1bmN0aW9ucz14VixhLmZ1bmN0aW9uc0luPWZWLGEuZ3JvdXBCeT1HaCxhLmluaXRpYWw9bXIsYS5pbnRlcnNlY3Rpb249YXIsYS5pbnRlcnNlY3Rpb25CeT1icixhLmludGVyc2VjdGlvbldpdGg9R3IsYS5pbnZlcnQ9SVYsYS5pbnZlcnRCeT1LVixhLmludm9rZU1hcD1YaCxhLml0ZXJhdGVlPXp1LGEua2V5Qnk9c2gsYS5rZXlzPXBsLGEua2V5c0luPUtsLGEubWFwPUpaLGEubWFwS2V5cz1OVixhLm1hcFZhbHVlcz16VixhLm1hdGNoZXM9ZnksYS5tYXRjaGVzUHJvcGVydHk9SnksYS5tZW1vaXplPUtaLGEubWVyZ2U9dlYsYS5tZXJnZVdpdGg9TGEsYS5tZXRob2Q9SXksYS5tZXRob2RPZj1LeSxhLm1peGluPXZ1LGEubmVnYXRlPUZaLGEubnRoQXJnPU55LGEub21pdD1IVixhLm9taXRCeT1rVixhLm9uY2U9RmgsYS5vcmRlckJ5PXBoLGEub3Zlcj16eSxhLm92ZXJBcmdzPU5oLGEub3ZlckV2ZXJ5PXZ5LGEub3ZlclNvbWU9SHksYS5wYXJ0aWFsPXh1LGEucGFydGlhbFJpZ2h0PVhhLGEucGFydGl0aW9uPVdoLGEucGljaz1nVixhLnBpY2tCeT1ZYSxhLnByb3BlcnR5PUZhLGEucHJvcGVydHlPZj1reSxhLnB1bGw9cHIsYS5wdWxsQWxsPWRhLGEucHVsbEFsbEJ5PVdyLGEucHVsbEFsbFdpdGg9cnIsYS5wdWxsQXQ9aHIsYS5yYW5nZT1neSxhLnJhbmdlUmlnaHQ9VXksYS5yZWFyZz16aCxhLnJlamVjdD1WaCxhLnJlbW92ZT1WcixhLnJlc3Q9dmgsYS5yZXZlcnNlPUx1LGEuc2FtcGxlU2l6ZT1SaCxhLnNldD1NVixhLnNldFdpdGg9VFYsYS5zaHVmZmxlPUxoLGEuc2xpY2U9eXIsYS5zb3J0Qnk9eGgsYS5zb3J0ZWRVbmlxPUpyLGEuc29ydGVkVW5pcUJ5PUlyLGEuc3BsaXQ9bXksYS5zcHJlYWQ9SGgsYS50YWlsPUtyLGEudGFrZT1GcixhLnRha2VSaWdodD1OcixhLnRha2VSaWdodFdoaWxlPXpyLGEudGFrZVdoaWxlPXZyLGEudGFwPU9yLGEudGhyb3R0bGU9a2gsYS50aHJ1PWZaLGEudG9BcnJheT1oYSxhLnRvUGFpcnM9U2EsYS50b1BhaXJzSW49eGEsYS50b1BhdGg9UHksYS50b1BsYWluT2JqZWN0PXlhLGEudHJhbnNmb3JtPUNWLGEudW5hcnk9Z2gsYS51bmlvbj1IcixhLnVuaW9uQnk9a3IsYS51bmlvbldpdGg9Z3IsYS51bmlxPVVyLGEudW5pcUJ5PU1yLGEudW5pcVdpdGg9VHIsYS51bnNldD13VixhLnVuemlwPVl1LGEudW56aXBXaXRoPVphLGEudXBkYXRlPVBWLGEudXBkYXRlV2l0aD1CVixhLnZhbHVlcz1IYyxhLnZhbHVlc0luPVFWLGEud2l0aG91dD1DcixhLndvcmRzPUlhLGEud3JhcD1VaCxhLnhvcj13cixhLnhvckJ5PVByLGEueG9yV2l0aD1CcixhLnppcD1RcixhLnppcE9iamVjdD1FcixhLnppcE9iamVjdERlZXA9anIsYS56aXBXaXRoPURyLGEuZW50cmllcz1TYSxhLmVudHJpZXNJbj14YSxhLmV4dGVuZD1SYSxhLmV4dGVuZFdpdGg9dlosdnUoYSxhKSxhLmFkZD1ReSxhLmF0dGVtcHQ9S2EsYS5jYW1lbENhc2U9T1YsYS5jYXBpdGFsaXplPWZhLGEuY2VpbD1FeSxhLmNsYW1wPUVWLGEuY2xvbmU9VGgsYS5jbG9uZURlZXA9d2gsYS5jbG9uZURlZXBXaXRoPVBoLGEuY2xvbmVXaXRoPUNoLGEuY29uZm9ybXNUbz1CaCxhLmRlYnVycj1KYSxhLmRlZmF1bHRUbz1ZeSxhLmRpdmlkZT1qeSxhLmVuZHNXaXRoPUFWLGEuZXE9bm4sYS5lc2NhcGU9X1YsYS5lc2NhcGVSZWdFeHA9cVYsYS5ldmVyeT10aCxhLmZpbmQ9aWgsYS5maW5kSW5kZXg9JG0sYS5maW5kS2V5PVZWLGEuZmluZExhc3Q9ZWgsYS5maW5kTGFzdEluZGV4PWxhLGEuZmluZExhc3RLZXk9eVYsYS5mbG9vcj1EeSxhLmZvckVhY2g9dWEsYS5mb3JFYWNoUmlnaHQ9aWEsYS5mb3JJbj1SVixhLmZvckluUmlnaHQ9TFYsYS5mb3JPd249WVYsYS5mb3JPd25SaWdodD1TVixhLmdldD1JdSxhLmd0PVFoLGEuZ3RlPUVoLGEuaGFzPUpWLGEuaGFzSW49S3UsYS5oZWFkPWNhLGEuaWRlbnRpdHk9RmwsYS5pbmNsdWRlcz1vaCxhLmluZGV4T2Y9ZXIsYS5pblJhbmdlPWpWLGEuaW52b2tlPUZWLGEuaXNBcmd1bWVudHM9bWMsYS5pc0FycmF5PUMsYS5pc0FycmF5QnVmZmVyPWpoLGEuaXNBcnJheUxpa2U9SWwsYS5pc0FycmF5TGlrZU9iamVjdD1pbCxhLmlzQm9vbGVhbj1EaCxhLmlzQnVmZmVyPU1uLGEuaXNEYXRlPU9oLGEuaXNFbGVtZW50PUFoLGEuaXNFbXB0eT1faCxhLmlzRXF1YWw9cWgsYS5pc0VxdWFsV2l0aD0kaCxhLmlzRXJyb3I9ZnUsYS5pc0Zpbml0ZT1sVixhLmlzRnVuY3Rpb249TG4sYS5pc0ludGVnZXI9c2EsYS5pc0xlbmd0aD1OWixhLmlzTWFwPXBhLGEuaXNNYXRjaD1uVixhLmlzTWF0Y2hXaXRoPWNWLGEuaXNOYU49ZFYsYS5pc05hdGl2ZT1aVixhLmlzTmlsPXVWLGEuaXNOdWxsPXRWLGEuaXNOdW1iZXI9V2EsYS5pc09iamVjdD10bCxhLmlzT2JqZWN0TGlrZT11bCxhLmlzUGxhaW5PYmplY3Q9c2QsYS5pc1JlZ0V4cD1KdSxhLmlzU2FmZUludGVnZXI9aVYsYS5pc1NldD1yYSxhLmlzU3RyaW5nPXpaLGEuaXNTeW1ib2w9Z2wsYS5pc1R5cGVkQXJyYXk9dmMsYS5pc1VuZGVmaW5lZD1lVixhLmlzV2Vha01hcD1tVixhLmlzV2Vha1NldD1hVixhLmpvaW49b3IsYS5rZWJhYkNhc2U9JFYsYS5sYXN0PUVsLGEubGFzdEluZGV4T2Y9WHIsYS5sb3dlckNhc2U9bHksYS5sb3dlckZpcnN0PW55LGEubHQ9YlYsYS5sdGU9R1YsYS5tYXg9T3ksYS5tYXhCeT1BeSxhLm1lYW49X3ksYS5tZWFuQnk9cXksYS5taW49JHksYS5taW5CeT1sUixhLnN0dWJBcnJheT1rdSxhLnN0dWJGYWxzZT1ndSxhLnN0dWJPYmplY3Q9TXksYS5zdHViU3RyaW5nPVR5LGEuc3R1YlRydWU9Q3ksYS5tdWx0aXBseT1uUixhLm50aD1zcixhLm5vQ29uZmxpY3Q9RnksYS5ub29wPUh1LGEubm93PUlaLGEucGFkPWN5LGEucGFkRW5kPWR5LGEucGFkU3RhcnQ9WnksYS5wYXJzZUludD10eSxhLnJhbmRvbT1EVixhLnJlZHVjZT1yaCxhLnJlZHVjZVJpZ2h0PWhoLGEucmVwZWF0PXV5LGEucmVwbGFjZT1peSxhLnJlc3VsdD1VVixhLnJvdW5kPWNSLGEucnVuSW5Db250ZXh0PVcsYS5zYW1wbGU9eWgsYS5zaXplPVloLGEuc25ha2VDYXNlPWV5LGEuc29tZT1TaCxhLnNvcnRlZEluZGV4PVJyLGEuc29ydGVkSW5kZXhCeT1McixhLnNvcnRlZEluZGV4T2Y9WXIsYS5zb3J0ZWRMYXN0SW5kZXg9U3IsYS5zb3J0ZWRMYXN0SW5kZXhCeT14cixhLnNvcnRlZExhc3RJbmRleE9mPWZyLGEuc3RhcnRDYXNlPWF5LGEuc3RhcnRzV2l0aD1ieSxhLnN1YnRyYWN0PWRSLGEuc3VtPVpSLGEuc3VtQnk9dFIsYS50ZW1wbGF0ZT1HeSxhLnRpbWVzPXd5LGEudG9GaW5pdGU9WW4sYS50b0ludGVnZXI9UCxhLnRvTGVuZ3RoPVZhLGEudG9Mb3dlcj1veSxhLnRvTnVtYmVyPWpsLGEudG9TYWZlSW50ZWdlcj1vVixhLnRvU3RyaW5nPXEsYS50b1VwcGVyPVh5LGEudHJpbT1zeSxhLnRyaW1FbmQ9cHksYS50cmltU3RhcnQ9V3ksYS50cnVuY2F0ZT1yeSxhLnVuZXNjYXBlPWh5LGEudW5pcXVlSWQ9QnksYS51cHBlckNhc2U9VnksYS51cHBlckZpcnN0PUZ1LGEuZWFjaD11YSxhLmVhY2hSaWdodD1pYSxhLmZpcnN0PWNhLHZ1KGEsZnVuY3Rpb24oKXt2YXIgbD17fTtyZXR1cm4gdW4oYSxmdW5jdGlvbihuLGQpe2xsLmNhbGwoYS5wcm90b3R5cGUsZCl8fChsW2RdPW4pfSksbH0oKSx7Y2hhaW46ITF9KSxhLlZFUlNJT049aSxDbChbImJpbmQiLCJiaW5kS2V5IiwiY3VycnkiLCJjdXJyeVJpZ2h0IiwicGFydGlhbCIsInBhcnRpYWxSaWdodCJdLGZ1bmN0aW9uKGwpe2FbbF0ucGxhY2Vob2xkZXI9YX0pLENsKFsiZHJvcCIsInRha2UiXSxmdW5jdGlvbihsLG4pe2oucHJvdG90eXBlW2xdPWZ1bmN0aW9uKGQpe2Q9ZD09PXQ/MTpYbChQKGQpLDApO3ZhciB1PXRoaXMuX19maWx0ZXJlZF9fJiYhbj9uZXcgaih0aGlzKTp0aGlzLmNsb25lKCk7cmV0dXJuIHUuX19maWx0ZXJlZF9fP3UuX190YWtlQ291bnRfXz1SbChkLHUuX190YWtlQ291bnRfXyk6dS5fX3ZpZXdzX18ucHVzaCh7c2l6ZTpSbChkLHRuKSx0eXBlOmwrKHUuX19kaXJfXzwwPyJSaWdodCI6IiIpfSksdX0sai5wcm90b3R5cGVbbCsiUmlnaHQiXT1mdW5jdGlvbihkKXtyZXR1cm4gdGhpcy5yZXZlcnNlKClbbF0oZCkucmV2ZXJzZSgpfX0pLENsKFsiZmlsdGVyIiwibWFwIiwidGFrZVdoaWxlIl0sZnVuY3Rpb24obCxuKXt2YXIgZD1uKzEsdT1kPT1uZXx8ZD09cFg7ai5wcm90b3R5cGVbbF09ZnVuY3Rpb24obSl7dmFyIGI9dGhpcy5jbG9uZSgpO3JldHVybiBiLl9faXRlcmF0ZWVzX18ucHVzaCh7aXRlcmF0ZWU6ayhtLDMpLHR5cGU6ZH0pLGIuX19maWx0ZXJlZF9fPWIuX19maWx0ZXJlZF9ffHx1LGJ9fSksQ2woWyJoZWFkIiwibGFzdCJdLGZ1bmN0aW9uKGwsbil7dmFyIGQ9InRha2UiKyhuPyJSaWdodCI6IiIpO2oucHJvdG90eXBlW2xdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXNbZF0oMSkudmFsdWUoKVswXX19KSxDbChbImluaXRpYWwiLCJ0YWlsIl0sZnVuY3Rpb24obCxuKXt2YXIgZD0iZHJvcCIrKG4/IiI6IlJpZ2h0Iik7ai5wcm90b3R5cGVbbF09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fX2ZpbHRlcmVkX18/bmV3IGoodGhpcyk6dGhpc1tkXSgxKX19KSxqLnByb3RvdHlwZS5jb21wYWN0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmlsdGVyKEZsKX0sai5wcm90b3R5cGUuZmluZD1mdW5jdGlvbihsKXtyZXR1cm4gdGhpcy5maWx0ZXIobCkuaGVhZCgpfSxqLnByb3RvdHlwZS5maW5kTGFzdD1mdW5jdGlvbihsKXtyZXR1cm4gdGhpcy5yZXZlcnNlKCkuZmluZChsKX0sai5wcm90b3R5cGUuaW52b2tlTWFwPVEoZnVuY3Rpb24obCxuKXtyZXR1cm4gdHlwZW9mIGw9PSJmdW5jdGlvbiI/bmV3IGoodGhpcyk6dGhpcy5tYXAoZnVuY3Rpb24oZCl7cmV0dXJuIG1kKGQsbCxuKX0pfSksai5wcm90b3R5cGUucmVqZWN0PWZ1bmN0aW9uKGwpe3JldHVybiB0aGlzLmZpbHRlcihGWihrKGwpKSl9LGoucHJvdG90eXBlLnNsaWNlPWZ1bmN0aW9uKGwsbil7bD1QKGwpO3ZhciBkPXRoaXM7cmV0dXJuIGQuX19maWx0ZXJlZF9fJiYobD4wfHxuPDApP25ldyBqKGQpOihsPDA/ZD1kLnRha2VSaWdodCgtbCk6bCYmKGQ9ZC5kcm9wKGwpKSxuIT09dCYmKG49UChuKSxkPW48MD9kLmRyb3BSaWdodCgtbik6ZC50YWtlKG4tbCkpLGQpfSxqLnByb3RvdHlwZS50YWtlUmlnaHRXaGlsZT1mdW5jdGlvbihsKXtyZXR1cm4gdGhpcy5yZXZlcnNlKCkudGFrZVdoaWxlKGwpLnJldmVyc2UoKX0sai5wcm90b3R5cGUudG9BcnJheT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRha2UodG4pfSx1bihqLnByb3RvdHlwZSxmdW5jdGlvbihsLG4pe3ZhciBkPS9eKD86ZmlsdGVyfGZpbmR8bWFwfHJlamVjdCl8V2hpbGUkLy50ZXN0KG4pLHU9L14oPzpoZWFkfGxhc3QpJC8udGVzdChuKSxtPWFbdT8idGFrZSIrKG49PSJsYXN0Ij8iUmlnaHQiOiIiKTpuXSxiPXV8fC9eZmluZC8udGVzdChuKTttJiYoYS5wcm90b3R5cGVbbl09ZnVuY3Rpb24oKXt2YXIgWD10aGlzLl9fd3JhcHBlZF9fLHA9dT9bMV06YXJndW1lbnRzLHI9WCBpbnN0YW5jZW9mIGosUz1wWzBdLGY9cnx8QyhYKSxKPWZ1bmN0aW9uKEUpe3ZhciBEPW0uYXBwbHkoYSxObihbRV0scCkpO3JldHVybiB1JiZLP0RbMF06RH07ZiYmZCYmdHlwZW9mIFM9PSJmdW5jdGlvbiImJlMubGVuZ3RoIT0xJiYocj1mPSExKTt2YXIgSz10aGlzLl9fY2hhaW5fXyxOPSEhdGhpcy5fX2FjdGlvbnNfXy5sZW5ndGgsZz1iJiYhSyxCPXImJiFOO2lmKCFiJiZmKXtYPUI/WDpuZXcgaih0aGlzKTt2YXIgVT1sLmFwcGx5KFgscCk7cmV0dXJuIFUuX19hY3Rpb25zX18ucHVzaCh7ZnVuYzpmWixhcmdzOltKXSx0aGlzQXJnOnR9KSxuZXcgUGwoVSxLKX1yZXR1cm4gZyYmQj9sLmFwcGx5KHRoaXMscCk6KFU9dGhpcy50aHJ1KEopLGc/dT9VLnZhbHVlKClbMF06VS52YWx1ZSgpOlUpfSl9KSxDbChbInBvcCIsInB1c2giLCJzaGlmdCIsInNvcnQiLCJzcGxpY2UiLCJ1bnNoaWZ0Il0sZnVuY3Rpb24obCl7dmFyIG49JGRbbF0sZD0vXig/OnB1c2h8c29ydHx1bnNoaWZ0KSQvLnRlc3QobCk/InRhcCI6InRocnUiLHU9L14oPzpwb3B8c2hpZnQpJC8udGVzdChsKTthLnByb3RvdHlwZVtsXT1mdW5jdGlvbigpe3ZhciBtPWFyZ3VtZW50cztpZih1JiYhdGhpcy5fX2NoYWluX18pe3ZhciBiPXRoaXMudmFsdWUoKTtyZXR1cm4gbi5hcHBseShDKGIpP2I6W10sbSl9cmV0dXJuIHRoaXNbZF0oZnVuY3Rpb24oWCl7cmV0dXJuIG4uYXBwbHkoQyhYKT9YOltdLG0pfSl9fSksdW4oai5wcm90b3R5cGUsZnVuY3Rpb24obCxuKXt2YXIgZD1hW25dO2lmKGQpe3ZhciB1PWQubmFtZSsiIjtsbC5jYWxsKEljLHUpfHwoSWNbdV09W10pLEljW3VdLnB1c2goe25hbWU6bixmdW5jOmR9KX19KSxJY1tWWih0LEEpLm5hbWVdPVt7bmFtZToid3JhcHBlciIsZnVuYzp0fV0sai5wcm90b3R5cGUuY2xvbmU9aHAsai5wcm90b3R5cGUucmV2ZXJzZT1WcCxqLnByb3RvdHlwZS52YWx1ZT15cCxhLnByb3RvdHlwZS5hdD1BcixhLnByb3RvdHlwZS5jaGFpbj1fcixhLnByb3RvdHlwZS5jb21taXQ9cXIsYS5wcm90b3R5cGUubmV4dD0kcixhLnByb3RvdHlwZS5wbGFudD1uaCxhLnByb3RvdHlwZS5yZXZlcnNlPWNoLGEucHJvdG90eXBlLnRvSlNPTj1hLnByb3RvdHlwZS52YWx1ZU9mPWEucHJvdG90eXBlLnZhbHVlPWRoLGEucHJvdG90eXBlLmZpcnN0PWEucHJvdG90eXBlLmhlYWQsY2QmJihhLnByb3RvdHlwZVtjZF09bGgpLGF9LHhjPXFzKCk7bmM/KChuYy5leHBvcnRzPXhjKS5fPXhjLHp0Ll89eGMpOmhsLl89eGN9KS5jYWxsKEVjKX0oQ2QsQ2QuZXhwb3J0cyksQ2QuZXhwb3J0cztjb25zdCAkaT0iS0daMWJtTjBhVzl1S0NsN0luVnpaU0J6ZEhKcFkzUWlPMloxYm1OMGFXOXVJRlowS0c0cGUzSmxkSFZ5YmlCdUppWnVMbDlmWlhOTmIyUjFiR1VtSms5aWFtVmpkQzV3Y205MGIzUjVjR1V1YUdGelQzZHVVSEp2Y0dWeWRIa3VZMkZzYkNodUxDSmtaV1poZFd4MElpay9iaTVrWldaaGRXeDBPbTU5ZG1GeUlGQmxQWHQ5T3lobWRXNWpkR2x2YmlodUtYdDJZWElnY2oxbWRXNWpkR2x2YmlncGUzWmhjaUJsUFc1bGR5QkVZWFJsTEhROU5DeHBQVE1zWmoweUxIVTlNU3gyUFhRc2VUMTdjMlYwVEc5blRHVjJaV3c2Wm5WdVkzUnBiMjRvYlNsN2JUMDlkR2hwY3k1a1pXSjFaejkyUFhVNmJUMDlkR2hwY3k1cGJtWnZQM1k5WmpwdFBUMTBhR2x6TG5kaGNtNC9kajFwT2lodFBUMTBhR2x6TG1WeWNtOXlMSFk5ZENsOUxHUmxZblZuT21aMWJtTjBhVzl1S0cwc1lpbDdZMjl1YzI5c1pTNWtaV0oxWnowOVBYWnZhV1FnTUNZbUtHTnZibk52YkdVdVpHVmlkV2M5WTI5dWMyOXNaUzVzYjJjcExIVStQWFltSm1OdmJuTnZiR1V1WkdWaWRXY29JbHNpSzNJdVoyVjBSSFZ5WVhScGIyNVRkSEpwYm1jb2JtVjNJRVJoZEdVdFpTd3haVE1wS3lKZElpd2lXeUlyYlNzaVhTSXNZaWw5TEd4dlp6cG1kVzVqZEdsdmJpaHRMR0lwZTNSb2FYTXVaR1ZpZFdjb2JTNXRjMmNwZlN4cGJtWnZPbVoxYm1OMGFXOXVLRzBzWWlsN1pqNDlkaVltWTI5dWMyOXNaUzVwYm1adktDSmJJaXR5TG1kbGRFUjFjbUYwYVc5dVUzUnlhVzVuS0c1bGR5QkVZWFJsTFdVc01XVXpLU3NpWFNJc0lsc2lLMjBySWwwaUxHSXBmU3gzWVhKdU9tWjFibU4wYVc5dUtHMHNZaWw3YVQ0OWRpWW1ZMjl1YzI5c1pTNTNZWEp1S0NKYklpdHlMbWRsZEVSMWNtRjBhVzl1VTNSeWFXNW5LRzVsZHlCRVlYUmxMV1VzTVdVektTc2lYU0lzSWxzaUsyMHJJbDBpTEdJcGZTeGxjbkp2Y2pwbWRXNWpkR2x2YmlodExHSXBlM1ErUFhZbUptTnZibk52YkdVdVpYSnliM0lvSWxzaUszSXVaMlYwUkhWeVlYUnBiMjVUZEhKcGJtY29ibVYzSUVSaGRHVXRaU3d4WlRNcEt5SmRJaXdpV3lJcmJTc2lYU0lzWWlsOWZUdHlaWFIxY200Z2VYMG9LVHR5TG1kbGRFUjFjbUYwYVc5dVUzUnlhVzVuUFdaMWJtTjBhVzl1S0dVc2RDbDdkbUZ5SUdrN1puVnVZM1JwYjI0Z1ppaDRMRk1wZTJadmNpaDJZWElnVlQwaUlpdDRMRVU5VlM1emNHeHBkQ2dpTGlJcE8wVmJNRjB1YkdWdVozUm9QRk03S1VWYk1GMDlJakFpSzBWYk1GMDdjbVYwZFhKdUlFVXVhbTlwYmlnaUxpSXBmV1U4TUQ4b2FUMGhNQ3hsUFMxbEtUcHBQU0V4TzNaaGNpQjFQWFI4ZkRFc2RqMWxMM1VzZVQxTllYUm9MbVpzYjI5eUtIWXZNell3TUNrN2RpMDllU296TmpBd08zWmhjaUJ0UFUxaGRHZ3VabXh2YjNJb2RpODJNQ2s3ZGkwOWJTbzJNRHQyWVhJZ1lqMTJLakZsTXp0eVpYUjFjbTRnZGoxTllYUm9MbVpzYjI5eUtIWXBMR0l0UFhZcU1XVXpMR0k5VFdGMGFDNW1iRzl2Y2loaUtTd29hVDhpTFNJNklpSXBLM2tySWpvaUsyWW9iU3d5S1NzaU9pSXJaaWgyTERJcEt5SXVJaXRtS0dJc015bDlMSEl1Y0hKcGJuUlNZVzVuWlhNOVpuVnVZM1JwYjI0b1pTbDdkbUZ5SUhROVpTNXNaVzVuZEdnN2FXWW9kRDR3S1h0bWIzSW9kbUZ5SUdrOUlpSXNaajB3TzJZOGREdG1LeXNwWmo0d0ppWW9hU3M5SWl3aUtTeHBLejBpV3lJcmNpNW5aWFJFZFhKaGRHbHZibE4wY21sdVp5aGxMbk4wWVhKMEtHWXBLU3NpTENJcmNpNW5aWFJFZFhKaGRHbHZibE4wY21sdVp5aGxMbVZ1WkNobUtTa3JJbDBpTzNKbGRIVnliaUJwZldWc2MyVWdjbVYwZFhKdUlpaGxiWEIwZVNraWZTeHVMa3h2WnoxeU8zWmhjaUJoUFdaMWJtTjBhVzl1S0dVcGUybG1LR1VnYVc1emRHRnVZMlZ2WmlCQmNuSmhlVUoxWm1abGNpbDBhR2x6TG1KMVptWmxjajFsTEhSb2FYTXVaR0YwWVhacFpYYzlibVYzSUVSaGRHRldhV1YzS0dVcE8yVnNjMlVnZEdoeWIzY2lUbVZsWkhNZ1lXNGdZWEp5WVhrZ1luVm1abVZ5SWp0MGFHbHpMbkJ2YzJsMGFXOXVQVEI5TzJFdWNISnZkRzkwZVhCbExtZGxkRkJ2YzJsMGFXOXVQV1oxYm1OMGFXOXVLQ2w3Y21WMGRYSnVJSFJvYVhNdWNHOXphWFJwYjI1OUxHRXVjSEp2ZEc5MGVYQmxMbWRsZEVWdVpGQnZjMmwwYVc5dVBXWjFibU4wYVc5dUtDbDdjbVYwZFhKdUlIUm9hWE11WW5WbVptVnlMbUo1ZEdWTVpXNW5kR2g5TEdFdWNISnZkRzkwZVhCbExtZGxkRXhsYm1kMGFEMW1kVzVqZEdsdmJpZ3BlM0psZEhWeWJpQjBhR2x6TG1KMVptWmxjaTVpZVhSbFRHVnVaM1JvZlN4aExuQnliM1J2ZEhsd1pTNXpaV1ZyUFdaMWJtTjBhVzl1S0dVcGUzWmhjaUIwUFUxaGRHZ3ViV0Y0S0RBc1RXRjBhQzV0YVc0b2RHaHBjeTVpZFdabVpYSXVZbmwwWlV4bGJtZDBhQ3hsS1NrN2NtVjBkWEp1SUhSb2FYTXVjRzl6YVhScGIyNDlhWE5PWVU0b2RDbDhmQ0ZwYzBacGJtbDBaU2gwS1Q4d09uUXNJVEI5TEdFdWNISnZkRzkwZVhCbExtbHpSVzl6UFdaMWJtTjBhVzl1S0NsN2NtVjBkWEp1SUhSb2FYTXVaMlYwVUc5emFYUnBiMjRvS1Q0OWRHaHBjeTVuWlhSRmJtUlFiM05wZEdsdmJpZ3BmU3hoTG5CeWIzUnZkSGx3WlM1eVpXRmtRVzU1U1c1MFBXWjFibU4wYVc5dUtHVXNkQ2w3ZG1GeUlHazlNRHRwWmloMGFHbHpMbkJ2YzJsMGFXOXVLMlU4UFhSb2FYTXVZblZtWm1WeUxtSjVkR1ZNWlc1bmRHZ3BlM04zYVhSamFDaGxLWHRqWVhObElERTZkRDlwUFhSb2FYTXVaR0YwWVhacFpYY3VaMlYwU1c1ME9DaDBhR2x6TG5CdmMybDBhVzl1S1RwcFBYUm9hWE11WkdGMFlYWnBaWGN1WjJWMFZXbHVkRGdvZEdocGN5NXdiM05wZEdsdmJpazdZbkpsWVdzN1kyRnpaU0F5T25RL2FUMTBhR2x6TG1SaGRHRjJhV1YzTG1kbGRFbHVkREUyS0hSb2FYTXVjRzl6YVhScGIyNHBPbWs5ZEdocGN5NWtZWFJoZG1sbGR5NW5aWFJWYVc1ME1UWW9kR2hwY3k1d2IzTnBkR2x2YmlrN1luSmxZV3M3WTJGelpTQXpPbWxtS0hRcGRHaHliM2NpVG04Z2JXVjBhRzlrSUdadmNpQnlaV0ZrYVc1bklITnBaMjVsWkNBeU5DQmlhWFJ6SUhaaGJIVmxjeUk3YVQxMGFHbHpMbVJoZEdGMmFXVjNMbWRsZEZWcGJuUTRLSFJvYVhNdWNHOXphWFJwYjI0cFBEd3hOaXhwZkQxMGFHbHpMbVJoZEdGMmFXVjNMbWRsZEZWcGJuUTRLSFJvYVhNdWNHOXphWFJwYjI0ck1TazhQRGdzYVh3OWRHaHBjeTVrWVhSaGRtbGxkeTVuWlhSVmFXNTBPQ2gwYUdsekxuQnZjMmwwYVc5dUt6SXBPMkp5WldGck8yTmhjMlVnTkRwMFAyazlkR2hwY3k1a1lYUmhkbWxsZHk1blpYUkpiblF6TWloMGFHbHpMbkJ2YzJsMGFXOXVLVHBwUFhSb2FYTXVaR0YwWVhacFpYY3VaMlYwVldsdWRETXlLSFJvYVhNdWNHOXphWFJwYjI0cE8ySnlaV0ZyTzJOaGMyVWdPRHBwWmloMEtYUm9jbTkzSWs1dklHMWxkR2h2WkNCbWIzSWdjbVZoWkdsdVp5QnphV2R1WldRZ05qUWdZbWwwY3lCMllXeDFaWE1pTzJrOWRHaHBjeTVrWVhSaGRtbGxkeTVuWlhSVmFXNTBNeklvZEdocGN5NXdiM05wZEdsdmJpazhQRE15TEdsOFBYUm9hWE11WkdGMFlYWnBaWGN1WjJWMFZXbHVkRE15S0hSb2FYTXVjRzl6YVhScGIyNHJOQ2s3WW5KbFlXczdaR1ZtWVhWc2REcDBhSEp2ZHlKeVpXRmtTVzUwSUcxbGRHaHZaQ0J1YjNRZ2FXMXdiR1Z0Wlc1MFpXUWdabTl5SUhOcGVtVTZJQ0lyWlgxeVpYUjFjbTRnZEdocGN5NXdiM05wZEdsdmJpczlaU3hwZldWc2MyVWdkR2h5YjNjaVRtOTBJR1Z1YjNWbmFDQmllWFJsY3lCcGJpQmlkV1ptWlhJaWZTeGhMbkJ5YjNSdmRIbHdaUzV5WldGa1ZXbHVkRGc5Wm5WdVkzUnBiMjRvS1h0eVpYUjFjbTRnZEdocGN5NXlaV0ZrUVc1NVNXNTBLREVzSVRFcGZTeGhMbkJ5YjNSdmRIbHdaUzV5WldGa1ZXbHVkREUyUFdaMWJtTjBhVzl1S0NsN2NtVjBkWEp1SUhSb2FYTXVjbVZoWkVGdWVVbHVkQ2d5TENFeEtYMHNZUzV3Y205MGIzUjVjR1V1Y21WaFpGVnBiblF5TkQxbWRXNWpkR2x2YmlncGUzSmxkSFZ5YmlCMGFHbHpMbkpsWVdSQmJubEpiblFvTXl3aE1TbDlMR0V1Y0hKdmRHOTBlWEJsTG5KbFlXUlZhVzUwTXpJOVpuVnVZM1JwYjI0b0tYdHlaWFIxY200Z2RHaHBjeTV5WldGa1FXNTVTVzUwS0RRc0lURXBmU3hoTG5CeWIzUnZkSGx3WlM1eVpXRmtWV2x1ZERZMFBXWjFibU4wYVc5dUtDbDdjbVYwZFhKdUlIUm9hWE11Y21WaFpFRnVlVWx1ZENnNExDRXhLWDBzWVM1d2NtOTBiM1I1Y0dVdWNtVmhaRk4wY21sdVp6MW1kVzVqZEdsdmJpaGxLWHRwWmloMGFHbHpMbkJ2YzJsMGFXOXVLMlU4UFhSb2FYTXVZblZtWm1WeUxtSjVkR1ZNWlc1bmRHZ3BlMlp2Y2loMllYSWdkRDBpSWl4cFBUQTdhVHhsTzJrckt5bDBLejFUZEhKcGJtY3Vabkp2YlVOb1lYSkRiMlJsS0hSb2FYTXVjbVZoWkZWcGJuUTRLQ2twTzNKbGRIVnliaUIwZldWc2MyVWdkR2h5YjNjaVRtOTBJR1Z1YjNWbmFDQmllWFJsY3lCcGJpQmlkV1ptWlhJaWZTeGhMbkJ5YjNSdmRIbHdaUzV5WldGa1ExTjBjbWx1WnoxbWRXNWpkR2x2YmlncGUyWnZjaWgyWVhJZ1pUMWJYVHM3S1h0MllYSWdkRDEwYUdsekxuSmxZV1JWYVc1ME9DZ3BPMmxtS0hRaFBUMHdLV1V1Y0hWemFDaDBLVHRsYkhObElHSnlaV0ZyZlhKbGRIVnliaUJUZEhKcGJtY3Vabkp2YlVOb1lYSkRiMlJsTG1Gd2NHeDVLRzUxYkd3c1pTbDlMR0V1Y0hKdmRHOTBlWEJsTG5KbFlXUkpiblE0UFdaMWJtTjBhVzl1S0NsN2NtVjBkWEp1SUhSb2FYTXVjbVZoWkVGdWVVbHVkQ2d4TENFd0tYMHNZUzV3Y205MGIzUjVjR1V1Y21WaFpFbHVkREUyUFdaMWJtTjBhVzl1S0NsN2NtVjBkWEp1SUhSb2FYTXVjbVZoWkVGdWVVbHVkQ2d5TENFd0tYMHNZUzV3Y205MGIzUjVjR1V1Y21WaFpFbHVkRE15UFdaMWJtTjBhVzl1S0NsN2NtVjBkWEp1SUhSb2FYTXVjbVZoWkVGdWVVbHVkQ2cwTENFd0tYMHNZUzV3Y205MGIzUjVjR1V1Y21WaFpFbHVkRFkwUFdaMWJtTjBhVzl1S0NsN2NtVjBkWEp1SUhSb2FYTXVjbVZoWkVGdWVVbHVkQ2c0TENFeEtYMHNZUzV3Y205MGIzUjVjR1V1Y21WaFpGVnBiblE0UVhKeVlYazlablZ1WTNScGIyNG9aU2w3Wm05eUtIWmhjaUIwUFc1bGR5QlZhVzUwT0VGeWNtRjVLR1VwTEdrOU1EdHBQR1U3YVNzcktYUmJhVjA5ZEdocGN5NXlaV0ZrVldsdWREZ29LVHR5WlhSMWNtNGdkSDBzWVM1d2NtOTBiM1I1Y0dVdWNtVmhaRWx1ZERFMlFYSnlZWGs5Wm5WdVkzUnBiMjRvWlNsN1ptOXlLSFpoY2lCMFBXNWxkeUJKYm5ReE5rRnljbUY1S0dVcExHazlNRHRwUEdVN2FTc3JLWFJiYVYwOWRHaHBjeTV5WldGa1NXNTBNVFlvS1R0eVpYUjFjbTRnZEgwc1lTNXdjbTkwYjNSNWNHVXVjbVZoWkZWcGJuUXhOa0Z5Y21GNVBXWjFibU4wYVc5dUtHVXBlMlp2Y2loMllYSWdkRDF1WlhjZ1NXNTBNVFpCY25KaGVTaGxLU3hwUFRBN2FUeGxPMmtyS3lsMFcybGRQWFJvYVhNdWNtVmhaRlZwYm5ReE5pZ3BPM0psZEhWeWJpQjBmU3hoTG5CeWIzUnZkSGx3WlM1eVpXRmtWV2x1ZERNeVFYSnlZWGs5Wm5WdVkzUnBiMjRvWlNsN1ptOXlLSFpoY2lCMFBXNWxkeUJWYVc1ME16SkJjbkpoZVNobEtTeHBQVEE3YVR4bE8ya3JLeWwwVzJsZFBYUm9hWE11Y21WaFpGVnBiblF6TWlncE8zSmxkSFZ5YmlCMGZTeGhMbkJ5YjNSdmRIbHdaUzV5WldGa1NXNTBNekpCY25KaGVUMW1kVzVqZEdsdmJpaGxLWHRtYjNJb2RtRnlJSFE5Ym1WM0lFbHVkRE15UVhKeVlYa29aU2tzYVQwd08yazhaVHRwS3lzcGRGdHBYVDEwYUdsekxuSmxZV1JKYm5Rek1pZ3BPM0psZEhWeWJpQjBmU3h1TGsxUU5FSnZlRk4wY21WaGJUMWhPM1poY2lCelBXWjFibU4wYVc5dUtHVXNkQ3hwS1h0MGFHbHpMbDlpZVhSbFQyWm1jMlYwUFhSOGZEQXNaU0JwYm5OMFlXNWpaVzltSUVGeWNtRjVRblZtWm1WeVAzUm9hWE11WW5WbVptVnlQV1U2ZEhsd1pXOW1JR1U5UFNKdlltcGxZM1FpUHloMGFHbHpMbVJoZEdGV2FXVjNQV1VzZENZbUtIUm9hWE11WDJKNWRHVlBabVp6WlhRclBYUXBLVHAwYUdsekxtSjFabVpsY2oxdVpYY2dRWEp5WVhsQ2RXWm1aWElvWlh4OE1Da3NkR2hwY3k1d2IzTnBkR2x2Ymowd0xIUm9hWE11Wlc1a2FXRnVibVZ6Y3oxcFB6OXpMa3hKVkZSTVJWOUZUa1JKUVU1OU8zTXVjSEp2ZEc5MGVYQmxQWHQ5TEhNdWNISnZkRzkwZVhCbExtZGxkRkJ2YzJsMGFXOXVQV1oxYm1OMGFXOXVLQ2w3Y21WMGRYSnVJSFJvYVhNdWNHOXphWFJwYjI1OUxITXVjSEp2ZEc5MGVYQmxMbDl5WldGc2JHOWpQV1oxYm1OMGFXOXVLR1VwZTJsbUtIUm9hWE11WDJSNWJtRnRhV05UYVhwbEtYdDJZWElnZEQxMGFHbHpMbDlpZVhSbFQyWm1jMlYwSzNSb2FYTXVjRzl6YVhScGIyNHJaU3hwUFhSb2FYTXVYMkoxWm1abGNpNWllWFJsVEdWdVozUm9PMmxtS0hROFBXa3BlM1ErZEdocGN5NWZZbmwwWlV4bGJtZDBhQ1ltS0hSb2FYTXVYMko1ZEdWTVpXNW5kR2c5ZENrN2NtVjBkWEp1ZldadmNpaHBQREVtSmlocFBURXBPM1ErYVRzcGFTbzlNanQyWVhJZ1pqMXVaWGNnUVhKeVlYbENkV1ptWlhJb2FTa3NkVDF1WlhjZ1ZXbHVkRGhCY25KaGVTaDBhR2x6TGw5aWRXWm1aWElwTEhZOWJtVjNJRlZwYm5RNFFYSnlZWGtvWml3d0xIVXViR1Z1WjNSb0tUdDJMbk5sZENoMUtTeDBhR2x6TG1KMVptWmxjajFtTEhSb2FYTXVYMko1ZEdWTVpXNW5kR2c5ZEgxOUxITXVjSEp2ZEc5MGVYQmxMbDkwY21sdFFXeHNiMk05Wm5WdVkzUnBiMjRvS1h0cFppaDBhR2x6TGw5aWVYUmxUR1Z1WjNSb0lUMTBhR2x6TGw5aWRXWm1aWEl1WW5sMFpVeGxibWQwYUNsN2RtRnlJR1U5Ym1WM0lFRnljbUY1UW5WbVptVnlLSFJvYVhNdVgySjVkR1ZNWlc1bmRHZ3BMSFE5Ym1WM0lGVnBiblE0UVhKeVlYa29aU2tzYVQxdVpYY2dWV2x1ZERoQmNuSmhlU2gwYUdsekxsOWlkV1ptWlhJc01DeDBMbXhsYm1kMGFDazdkQzV6WlhRb2FTa3NkR2hwY3k1aWRXWm1aWEk5WlgxOUxITXVRa2xIWDBWT1JFbEJUajBoTVN4ekxreEpWRlJNUlY5RlRrUkpRVTQ5SVRBc2N5NXdjbTkwYjNSNWNHVXVYMko1ZEdWTVpXNW5kR2c5TUN4UFltcGxZM1F1WkdWbWFXNWxVSEp2Y0dWeWRIa29jeTV3Y205MGIzUjVjR1VzSW1KNWRHVk1aVzVuZEdnaUxIdG5aWFE2Wm5WdVkzUnBiMjRvS1h0eVpYUjFjbTRnZEdocGN5NWZZbmwwWlV4bGJtZDBhQzEwYUdsekxsOWllWFJsVDJabWMyVjBmWDBwTEU5aWFtVmpkQzVrWldacGJtVlFjbTl3WlhKMGVTaHpMbkJ5YjNSdmRIbHdaU3dpWW5WbVptVnlJaXg3WjJWME9tWjFibU4wYVc5dUtDbDdjbVYwZFhKdUlIUm9hWE11WDNSeWFXMUJiR3h2WXlncExIUm9hWE11WDJKMVptWmxjbjBzYzJWME9tWjFibU4wYVc5dUtHVXBlM1JvYVhNdVgySjFabVpsY2oxbExIUm9hWE11WDJSaGRHRldhV1YzUFc1bGR5QkVZWFJoVm1sbGR5aDBhR2x6TGw5aWRXWm1aWElzZEdocGN5NWZZbmwwWlU5bVpuTmxkQ2tzZEdocGN5NWZZbmwwWlV4bGJtZDBhRDEwYUdsekxsOWlkV1ptWlhJdVlubDBaVXhsYm1kMGFIMTlLU3hQWW1wbFkzUXVaR1ZtYVc1bFVISnZjR1Z5ZEhrb2N5NXdjbTkwYjNSNWNHVXNJbUo1ZEdWUFptWnpaWFFpTEh0blpYUTZablZ1WTNScGIyNG9LWHR5WlhSMWNtNGdkR2hwY3k1ZllubDBaVTltWm5ObGRIMHNjMlYwT21aMWJtTjBhVzl1S0dVcGUzUm9hWE11WDJKNWRHVlBabVp6WlhROVpTeDBhR2x6TGw5a1lYUmhWbWxsZHoxdVpYY2dSR0YwWVZacFpYY29kR2hwY3k1ZlluVm1abVZ5TEhSb2FYTXVYMko1ZEdWUFptWnpaWFFwTEhSb2FYTXVYMko1ZEdWTVpXNW5kR2c5ZEdocGN5NWZZblZtWm1WeUxtSjVkR1ZNWlc1bmRHaDlmU2tzVDJKcVpXTjBMbVJsWm1sdVpWQnliM0JsY25SNUtITXVjSEp2ZEc5MGVYQmxMQ0prWVhSaFZtbGxkeUlzZTJkbGREcG1kVzVqZEdsdmJpZ3BlM0psZEhWeWJpQjBhR2x6TGw5a1lYUmhWbWxsZDMwc2MyVjBPbVoxYm1OMGFXOXVLR1VwZTNSb2FYTXVYMko1ZEdWUFptWnpaWFE5WlM1aWVYUmxUMlptYzJWMExIUm9hWE11WDJKMVptWmxjajFsTG1KMVptWmxjaXgwYUdsekxsOWtZWFJoVm1sbGR6MXVaWGNnUkdGMFlWWnBaWGNvZEdocGN5NWZZblZtWm1WeUxIUm9hWE11WDJKNWRHVlBabVp6WlhRcExIUm9hWE11WDJKNWRHVk1aVzVuZEdnOWRHaHBjeTVmWW5sMFpVOW1abk5sZEN0bExtSjVkR1ZNWlc1bmRHaDlmU2tzY3k1d2NtOTBiM1I1Y0dVdWMyVmxhejFtZFc1amRHbHZiaWhsS1h0MllYSWdkRDFOWVhSb0xtMWhlQ2d3TEUxaGRHZ3ViV2x1S0hSb2FYTXVZbmwwWlV4bGJtZDBhQ3hsS1NrN2RHaHBjeTV3YjNOcGRHbHZiajFwYzA1aFRpaDBLWHg4SVdselJtbHVhWFJsS0hRcFB6QTZkSDBzY3k1d2NtOTBiM1I1Y0dVdWFYTkZiMlk5Wm5WdVkzUnBiMjRvS1h0eVpYUjFjbTRnZEdocGN5NXdiM05wZEdsdmJqNDlkR2hwY3k1ZllubDBaVXhsYm1kMGFIMHNjeTV3Y205MGIzUjVjR1V1YldGd1ZXbHVkRGhCY25KaGVUMW1kVzVqZEdsdmJpaGxLWHQwYUdsekxsOXlaV0ZzYkc5aktHVXFNU2s3ZG1GeUlIUTlibVYzSUZWcGJuUTRRWEp5WVhrb2RHaHBjeTVmWW5WbVptVnlMSFJvYVhNdVlubDBaVTltWm5ObGRDdDBhR2x6TG5CdmMybDBhVzl1TEdVcE8zSmxkSFZ5YmlCMGFHbHpMbkJ2YzJsMGFXOXVLejFsS2pFc2RIMHNjeTV3Y205MGIzUjVjR1V1Y21WaFpFbHVkRE15UVhKeVlYazlablZ1WTNScGIyNG9aU3gwS1h0bFBXVS9QM1JvYVhNdVlubDBaVXhsYm1kMGFDMTBhR2x6TG5CdmMybDBhVzl1THpRN2RtRnlJR2s5Ym1WM0lFbHVkRE15UVhKeVlYa29aU2s3Y21WMGRYSnVJSE11YldWdFkzQjVLR2t1WW5WbVptVnlMREFzZEdocGN5NWlkV1ptWlhJc2RHaHBjeTVpZVhSbFQyWm1jMlYwSzNSb2FYTXVjRzl6YVhScGIyNHNaU3BwTGtKWlZFVlRYMUJGVWw5RlRFVk5SVTVVS1N4ekxtRnljbUY1Vkc5T1lYUnBkbVVvYVN4MFB6OTBhR2x6TG1WdVpHbGhibTVsYzNNcExIUm9hWE11Y0c5emFYUnBiMjRyUFdrdVlubDBaVXhsYm1kMGFDeHBmU3h6TG5CeWIzUnZkSGx3WlM1eVpXRmtTVzUwTVRaQmNuSmhlVDFtZFc1amRHbHZiaWhsTEhRcGUyVTlaVDgvZEdocGN5NWllWFJsVEdWdVozUm9MWFJvYVhNdWNHOXphWFJwYjI0dk1qdDJZWElnYVQxdVpYY2dTVzUwTVRaQmNuSmhlU2hsS1R0eVpYUjFjbTRnY3k1dFpXMWpjSGtvYVM1aWRXWm1aWElzTUN4MGFHbHpMbUoxWm1abGNpeDBhR2x6TG1KNWRHVlBabVp6WlhRcmRHaHBjeTV3YjNOcGRHbHZiaXhsS21rdVFsbFVSVk5mVUVWU1gwVk1SVTFGVGxRcExITXVZWEp5WVhsVWIwNWhkR2wyWlNocExIUS9QM1JvYVhNdVpXNWthV0Z1Ym1WemN5a3NkR2hwY3k1d2IzTnBkR2x2YmlzOWFTNWllWFJsVEdWdVozUm9MR2w5TEhNdWNISnZkRzkwZVhCbExuSmxZV1JKYm5RNFFYSnlZWGs5Wm5WdVkzUnBiMjRvWlNsN1pUMWxQejkwYUdsekxtSjVkR1ZNWlc1bmRHZ3RkR2hwY3k1d2IzTnBkR2x2Ymp0MllYSWdkRDF1WlhjZ1NXNTBPRUZ5Y21GNUtHVXBPM0psZEhWeWJpQnpMbTFsYldOd2VTaDBMbUoxWm1abGNpd3dMSFJvYVhNdVluVm1abVZ5TEhSb2FYTXVZbmwwWlU5bVpuTmxkQ3QwYUdsekxuQnZjMmwwYVc5dUxHVXFkQzVDV1ZSRlUxOVFSVkpmUlV4RlRVVk9WQ2tzZEdocGN5NXdiM05wZEdsdmJpczlkQzVpZVhSbFRHVnVaM1JvTEhSOUxITXVjSEp2ZEc5MGVYQmxMbkpsWVdSVmFXNTBNekpCY25KaGVUMW1kVzVqZEdsdmJpaGxMSFFwZTJVOVpUOC9kR2hwY3k1aWVYUmxUR1Z1WjNSb0xYUm9hWE11Y0c5emFYUnBiMjR2TkR0MllYSWdhVDF1WlhjZ1ZXbHVkRE15UVhKeVlYa29aU2s3Y21WMGRYSnVJSE11YldWdFkzQjVLR2t1WW5WbVptVnlMREFzZEdocGN5NWlkV1ptWlhJc2RHaHBjeTVpZVhSbFQyWm1jMlYwSzNSb2FYTXVjRzl6YVhScGIyNHNaU3BwTGtKWlZFVlRYMUJGVWw5RlRFVk5SVTVVS1N4ekxtRnljbUY1Vkc5T1lYUnBkbVVvYVN4MFB6OTBhR2x6TG1WdVpHbGhibTVsYzNNcExIUm9hWE11Y0c5emFYUnBiMjRyUFdrdVlubDBaVXhsYm1kMGFDeHBmU3h6TG5CeWIzUnZkSGx3WlM1eVpXRmtWV2x1ZERFMlFYSnlZWGs5Wm5WdVkzUnBiMjRvWlN4MEtYdGxQV1UvUDNSb2FYTXVZbmwwWlV4bGJtZDBhQzEwYUdsekxuQnZjMmwwYVc5dUx6STdkbUZ5SUdrOWJtVjNJRlZwYm5ReE5rRnljbUY1S0dVcE8zSmxkSFZ5YmlCekxtMWxiV053ZVNocExtSjFabVpsY2l3d0xIUm9hWE11WW5WbVptVnlMSFJvYVhNdVlubDBaVTltWm5ObGRDdDBhR2x6TG5CdmMybDBhVzl1TEdVcWFTNUNXVlJGVTE5UVJWSmZSVXhGVFVWT1ZDa3NjeTVoY25KaGVWUnZUbUYwYVhabEtHa3NkRDgvZEdocGN5NWxibVJwWVc1dVpYTnpLU3gwYUdsekxuQnZjMmwwYVc5dUt6MXBMbUo1ZEdWTVpXNW5kR2dzYVgwc2N5NXdjbTkwYjNSNWNHVXVjbVZoWkZWcGJuUTRRWEp5WVhrOVpuVnVZM1JwYjI0b1pTbDdaVDFsUHo5MGFHbHpMbUo1ZEdWTVpXNW5kR2d0ZEdocGN5NXdiM05wZEdsdmJqdDJZWElnZEQxdVpYY2dWV2x1ZERoQmNuSmhlU2hsS1R0eVpYUjFjbTRnY3k1dFpXMWpjSGtvZEM1aWRXWm1aWElzTUN4MGFHbHpMbUoxWm1abGNpeDBhR2x6TG1KNWRHVlBabVp6WlhRcmRHaHBjeTV3YjNOcGRHbHZiaXhsS25RdVFsbFVSVk5mVUVWU1gwVk1SVTFGVGxRcExIUm9hWE11Y0c5emFYUnBiMjRyUFhRdVlubDBaVXhsYm1kMGFDeDBmU3h6TG5CeWIzUnZkSGx3WlM1eVpXRmtSbXh2WVhRMk5FRnljbUY1UFdaMWJtTjBhVzl1S0dVc2RDbDdaVDFsUHo5MGFHbHpMbUo1ZEdWTVpXNW5kR2d0ZEdocGN5NXdiM05wZEdsdmJpODRPM1poY2lCcFBXNWxkeUJHYkc5aGREWTBRWEp5WVhrb1pTazdjbVYwZFhKdUlITXViV1Z0WTNCNUtHa3VZblZtWm1WeUxEQXNkR2hwY3k1aWRXWm1aWElzZEdocGN5NWllWFJsVDJabWMyVjBLM1JvYVhNdWNHOXphWFJwYjI0c1pTcHBMa0paVkVWVFgxQkZVbDlGVEVWTlJVNVVLU3h6TG1GeWNtRjVWRzlPWVhScGRtVW9hU3gwUHo5MGFHbHpMbVZ1WkdsaGJtNWxjM01wTEhSb2FYTXVjRzl6YVhScGIyNHJQV2t1WW5sMFpVeGxibWQwYUN4cGZTeHpMbkJ5YjNSdmRIbHdaUzV5WldGa1JteHZZWFF6TWtGeWNtRjVQV1oxYm1OMGFXOXVLR1VzZENsN1pUMWxQejkwYUdsekxtSjVkR1ZNWlc1bmRHZ3RkR2hwY3k1d2IzTnBkR2x2Ymk4ME8zWmhjaUJwUFc1bGR5QkdiRzloZERNeVFYSnlZWGtvWlNrN2NtVjBkWEp1SUhNdWJXVnRZM0I1S0drdVluVm1abVZ5TERBc2RHaHBjeTVpZFdabVpYSXNkR2hwY3k1aWVYUmxUMlptYzJWMEszUm9hWE11Y0c5emFYUnBiMjRzWlNwcExrSlpWRVZUWDFCRlVsOUZURVZOUlU1VUtTeHpMbUZ5Y21GNVZHOU9ZWFJwZG1Vb2FTeDBQejkwYUdsekxtVnVaR2xoYm01bGMzTXBMSFJvYVhNdWNHOXphWFJwYjI0clBXa3VZbmwwWlV4bGJtZDBhQ3hwZlN4ekxuQnliM1J2ZEhsd1pTNXlaV0ZrU1c1ME16STlablZ1WTNScGIyNG9aU2w3ZG1GeUlIUTlkR2hwY3k1ZlpHRjBZVlpwWlhjdVoyVjBTVzUwTXpJb2RHaHBjeTV3YjNOcGRHbHZiaXhsUHo5MGFHbHpMbVZ1WkdsaGJtNWxjM01wTzNKbGRIVnliaUIwYUdsekxuQnZjMmwwYVc5dUt6MDBMSFI5TEhNdWNISnZkRzkwZVhCbExuSmxZV1JKYm5ReE5qMW1kVzVqZEdsdmJpaGxLWHQyWVhJZ2REMTBhR2x6TGw5a1lYUmhWbWxsZHk1blpYUkpiblF4TmloMGFHbHpMbkJ2YzJsMGFXOXVMR1UvUDNSb2FYTXVaVzVrYVdGdWJtVnpjeWs3Y21WMGRYSnVJSFJvYVhNdWNHOXphWFJwYjI0clBUSXNkSDBzY3k1d2NtOTBiM1I1Y0dVdWNtVmhaRWx1ZERnOVpuVnVZM1JwYjI0b0tYdDJZWElnWlQxMGFHbHpMbDlrWVhSaFZtbGxkeTVuWlhSSmJuUTRLSFJvYVhNdWNHOXphWFJwYjI0cE8zSmxkSFZ5YmlCMGFHbHpMbkJ2YzJsMGFXOXVLejB4TEdWOUxITXVjSEp2ZEc5MGVYQmxMbkpsWVdSVmFXNTBNekk5Wm5WdVkzUnBiMjRvWlNsN2RtRnlJSFE5ZEdocGN5NWZaR0YwWVZacFpYY3VaMlYwVldsdWRETXlLSFJvYVhNdWNHOXphWFJwYjI0c1pUOC9kR2hwY3k1bGJtUnBZVzV1WlhOektUdHlaWFIxY200Z2RHaHBjeTV3YjNOcGRHbHZiaXM5TkN4MGZTeHpMbkJ5YjNSdmRIbHdaUzV5WldGa1ZXbHVkREUyUFdaMWJtTjBhVzl1S0dVcGUzWmhjaUIwUFhSb2FYTXVYMlJoZEdGV2FXVjNMbWRsZEZWcGJuUXhOaWgwYUdsekxuQnZjMmwwYVc5dUxHVS9QM1JvYVhNdVpXNWthV0Z1Ym1WemN5azdjbVYwZFhKdUlIUm9hWE11Y0c5emFYUnBiMjRyUFRJc2RIMHNjeTV3Y205MGIzUjVjR1V1Y21WaFpGVnBiblE0UFdaMWJtTjBhVzl1S0NsN2RtRnlJR1U5ZEdocGN5NWZaR0YwWVZacFpYY3VaMlYwVldsdWREZ29kR2hwY3k1d2IzTnBkR2x2YmlrN2NtVjBkWEp1SUhSb2FYTXVjRzl6YVhScGIyNHJQVEVzWlgwc2N5NXdjbTkwYjNSNWNHVXVjbVZoWkVac2IyRjBNekk5Wm5WdVkzUnBiMjRvWlNsN2RtRnlJSFE5ZEdocGN5NWZaR0YwWVZacFpYY3VaMlYwUm14dllYUXpNaWgwYUdsekxuQnZjMmwwYVc5dUxHVS9QM1JvYVhNdVpXNWthV0Z1Ym1WemN5azdjbVYwZFhKdUlIUm9hWE11Y0c5emFYUnBiMjRyUFRRc2RIMHNjeTV3Y205MGIzUjVjR1V1Y21WaFpFWnNiMkYwTmpROVpuVnVZM1JwYjI0b1pTbDdkbUZ5SUhROWRHaHBjeTVmWkdGMFlWWnBaWGN1WjJWMFJteHZZWFEyTkNoMGFHbHpMbkJ2YzJsMGFXOXVMR1UvUDNSb2FYTXVaVzVrYVdGdWJtVnpjeWs3Y21WMGRYSnVJSFJvYVhNdWNHOXphWFJwYjI0clBUZ3NkSDBzY3k1bGJtUnBZVzV1WlhOelBXNWxkeUJKYm5RNFFYSnlZWGtvYm1WM0lFbHVkREUyUVhKeVlYa29XekZkS1M1aWRXWm1aWElwV3pCZFBqQXNjeTV0WlcxamNIazlablZ1WTNScGIyNG9aU3gwTEdrc1ppeDFLWHQyWVhJZ2RqMXVaWGNnVldsdWREaEJjbkpoZVNobExIUXNkU2tzZVQxdVpYY2dWV2x1ZERoQmNuSmhlU2hwTEdZc2RTazdkaTV6WlhRb2VTbDlMSE11WVhKeVlYbFViMDVoZEdsMlpUMW1kVzVqZEdsdmJpaGxMSFFwZTNKbGRIVnliaUIwUFQxMGFHbHpMbVZ1WkdsaGJtNWxjM00vWlRwMGFHbHpMbVpzYVhCQmNuSmhlVVZ1WkdsaGJtNWxjM01vWlNsOUxITXVibUYwYVhabFZHOUZibVJwWVc0OVpuVnVZM1JwYjI0b1pTeDBLWHR5WlhSMWNtNGdkR2hwY3k1bGJtUnBZVzV1WlhOelBUMTBQMlU2ZEdocGN5NW1iR2x3UVhKeVlYbEZibVJwWVc1dVpYTnpLR1VwZlN4ekxtWnNhWEJCY25KaGVVVnVaR2xoYm01bGMzTTlablZ1WTNScGIyNG9aU2w3Wm05eUtIWmhjaUIwUFc1bGR5QlZhVzUwT0VGeWNtRjVLR1V1WW5WbVptVnlMR1V1WW5sMFpVOW1abk5sZEN4bExtSjVkR1ZNWlc1bmRHZ3BMR2s5TUR0cFBHVXVZbmwwWlV4bGJtZDBhRHRwS3oxbExrSlpWRVZUWDFCRlVsOUZURVZOUlU1VUtXWnZjaWgyWVhJZ1pqMXBLMlV1UWxsVVJWTmZVRVZTWDBWTVJVMUZUbFF0TVN4MVBXazdaajUxTzJZdExTeDFLeXNwZTNaaGNpQjJQWFJiZFYwN2RGdDFYVDEwVzJaZExIUmJabDA5ZG4xeVpYUjFjbTRnWlgwc2N5NXdjbTkwYjNSNWNHVXVabUZwYkhWeVpWQnZjMmwwYVc5dVBUQXNVM1J5YVc1bkxtWnliMjFEYUdGeVEyOWtaVlZwYm5RNFBXWjFibU4wYVc5dUtHVXBlMlp2Y2loMllYSWdkRDFiWFN4cFBUQTdhVHhsTG14bGJtZDBhRHRwS3lzcGRGdHBYVDFsVzJsZE8zSmxkSFZ5YmlCVGRISnBibWN1Wm5KdmJVTm9ZWEpEYjJSbExtRndjR3g1S0c1MWJHd3NkQ2w5TEhNdWNISnZkRzkwZVhCbExuSmxZV1JUZEhKcGJtYzlablZ1WTNScGIyNG9aU3gwS1h0eVpYUjFjbTRnZEQwOWJuVnNiSHg4ZEQwOUlrRlRRMGxKSWo5VGRISnBibWN1Wm5KdmJVTm9ZWEpEYjJSbFZXbHVkRGd1WVhCd2JIa29iblZzYkN4YmRHaHBjeTV0WVhCVmFXNTBPRUZ5Y21GNUtHVS9QM1JvYVhNdVlubDBaVXhsYm1kMGFDMTBhR2x6TG5CdmMybDBhVzl1S1YwcE9tNWxkeUJVWlhoMFJHVmpiMlJsY2loMEtTNWtaV052WkdVb2RHaHBjeTV0WVhCVmFXNTBPRUZ5Y21GNUtHVXBLWDBzY3k1d2NtOTBiM1I1Y0dVdWNtVmhaRU5UZEhKcGJtYzlablZ1WTNScGIyNG9aU2w3ZG1GeUlIUTlkR2hwY3k1aWVYUmxUR1Z1WjNSb0xYUm9hWE11Y0c5emFYUnBiMjRzYVQxdVpYY2dWV2x1ZERoQmNuSmhlU2gwYUdsekxsOWlkV1ptWlhJc2RHaHBjeTVmWW5sMFpVOW1abk5sZEN0MGFHbHpMbkJ2YzJsMGFXOXVLU3htUFhRN1pTRTliblZzYkNZbUtHWTlUV0YwYUM1dGFXNG9aU3gwS1NrN1ptOXlLSFpoY2lCMVBUQTdkVHhtSmlacFczVmRJVDA5TUR0MUt5c3BPM1poY2lCMlBWTjBjbWx1Wnk1bWNtOXRRMmhoY2tOdlpHVlZhVzUwT0M1aGNIQnNlU2h1ZFd4c0xGdDBhR2x6TG0xaGNGVnBiblE0UVhKeVlYa29kU2xkS1R0eVpYUjFjbTRnWlNFOWJuVnNiRDkwYUdsekxuQnZjMmwwYVc5dUt6MW1MWFU2ZFNFOWRDWW1LSFJvYVhNdWNHOXphWFJwYjI0clBURXBMSFo5TzNaaGNpQnNQVTFoZEdndWNHOTNLRElzTXpJcE8zTXVjSEp2ZEc5MGVYQmxMbkpsWVdSSmJuUTJORDFtZFc1amRHbHZiaWdwZTNKbGRIVnliaUIwYUdsekxuSmxZV1JKYm5Rek1pZ3BLbXdyZEdocGN5NXlaV0ZrVldsdWRETXlLQ2w5TEhNdWNISnZkRzkwZVhCbExuSmxZV1JWYVc1ME5qUTlablZ1WTNScGIyNG9LWHR5WlhSMWNtNGdkR2hwY3k1eVpXRmtWV2x1ZERNeUtDa3FiQ3QwYUdsekxuSmxZV1JWYVc1ME16SW9LWDBzY3k1d2NtOTBiM1I1Y0dVdWNtVmhaRWx1ZERZMFBXWjFibU4wYVc5dUtDbDdjbVYwZFhKdUlIUm9hWE11Y21WaFpGVnBiblF6TWlncEttd3JkR2hwY3k1eVpXRmtWV2x1ZERNeUtDbDlMSE11Y0hKdmRHOTBlWEJsTG5KbFlXUlZhVzUwTWpROVpuVnVZM1JwYjI0b0tYdHlaWFIxY200b2RHaHBjeTV5WldGa1ZXbHVkRGdvS1R3OE1UWXBLeWgwYUdsekxuSmxZV1JWYVc1ME9DZ3BQRHc0S1N0MGFHbHpMbkpsWVdSVmFXNTBPQ2dwZlN4dUxrUmhkR0ZUZEhKbFlXMDljeXh6TG5CeWIzUnZkSGx3WlM1ellYWmxQV1oxYm1OMGFXOXVLR1VwZTNaaGNpQjBQVzVsZHlCQ2JHOWlLRnQwYUdsekxtSjFabVpsY2wwcE8ybG1LSGRwYm1SdmR5NVZVa3dtSmxWU1RDNWpjbVZoZEdWUFltcGxZM1JWVWt3cGUzWmhjaUJwUFhkcGJtUnZkeTVWVWt3dVkzSmxZWFJsVDJKcVpXTjBWVkpNS0hRcExHWTlaRzlqZFcxbGJuUXVZM0psWVhSbFJXeGxiV1Z1ZENnaVlTSXBPMlJ2WTNWdFpXNTBMbUp2WkhrdVlYQndaVzVrUTJocGJHUW9aaWtzWmk1elpYUkJkSFJ5YVdKMWRHVW9JbWh5WldZaUxHa3BMR1l1YzJWMFFYUjBjbWxpZFhSbEtDSmtiM2R1Ykc5aFpDSXNaU2tzWmk1elpYUkJkSFJ5YVdKMWRHVW9JblJoY21kbGRDSXNJbDl6Wld4bUlpa3NaaTVqYkdsamF5Z3BMSGRwYm1SdmR5NVZVa3d1Y21WMmIydGxUMkpxWldOMFZWSk1LR2twZldWc2MyVWdkR2h5YjNjaVJHRjBZVk4wY21WaGJTNXpZWFpsT2lCRFlXNG5kQ0JqY21WaGRHVWdiMkpxWldOMElGVlNUQzRpZlN4ekxuQnliM1J2ZEhsd1pTNWZaSGx1WVcxcFkxTnBlbVU5SVRBc1QySnFaV04wTG1SbFptbHVaVkJ5YjNCbGNuUjVLSE11Y0hKdmRHOTBlWEJsTENKa2VXNWhiV2xqVTJsNlpTSXNlMmRsZERwbWRXNWpkR2x2YmlncGUzSmxkSFZ5YmlCMGFHbHpMbDlrZVc1aGJXbGpVMmw2Wlgwc2MyVjBPbVoxYm1OMGFXOXVLR1VwZTJWOGZIUm9hWE11WDNSeWFXMUJiR3h2WXlncExIUm9hWE11WDJSNWJtRnRhV05UYVhwbFBXVjlmU2tzY3k1d2NtOTBiM1I1Y0dVdWMyaHBablE5Wm5WdVkzUnBiMjRvWlNsN2RtRnlJSFE5Ym1WM0lFRnljbUY1UW5WbVptVnlLSFJvYVhNdVgySjVkR1ZNWlc1bmRHZ3RaU2tzYVQxdVpYY2dWV2x1ZERoQmNuSmhlU2gwS1N4bVBXNWxkeUJWYVc1ME9FRnljbUY1S0hSb2FYTXVYMkoxWm1abGNpeGxMR2t1YkdWdVozUm9LVHRwTG5ObGRDaG1LU3gwYUdsekxtSjFabVpsY2oxMExIUm9hWE11Y0c5emFYUnBiMjR0UFdWOUxITXVjSEp2ZEc5MGVYQmxMbmR5YVhSbFNXNTBNekpCY25KaGVUMW1kVzVqZEdsdmJpaGxMSFFwZTJsbUtIUm9hWE11WDNKbFlXeHNiMk1vWlM1c1pXNW5kR2dxTkNrc1pTQnBibk4wWVc1alpXOW1JRWx1ZERNeVFYSnlZWGttSm5Sb2FYTXVZbmwwWlU5bVpuTmxkQ3QwYUdsekxuQnZjMmwwYVc5dUpXVXVRbGxVUlZOZlVFVlNYMFZNUlUxRlRsUTlQVDB3S1hNdWJXVnRZM0I1S0hSb2FYTXVYMkoxWm1abGNpeDBhR2x6TG1KNWRHVlBabVp6WlhRcmRHaHBjeTV3YjNOcGRHbHZiaXhsTG1KMVptWmxjaXd3TEdVdVlubDBaVXhsYm1kMGFDa3NkR2hwY3k1dFlYQkpiblF6TWtGeWNtRjVLR1V1YkdWdVozUm9MSFFwTzJWc2MyVWdabTl5S0haaGNpQnBQVEE3YVR4bExteGxibWQwYUR0cEt5c3BkR2hwY3k1M2NtbDBaVWx1ZERNeUtHVmJhVjBzZENsOUxITXVjSEp2ZEc5MGVYQmxMbmR5YVhSbFNXNTBNVFpCY25KaGVUMW1kVzVqZEdsdmJpaGxMSFFwZTJsbUtIUm9hWE11WDNKbFlXeHNiMk1vWlM1c1pXNW5kR2dxTWlrc1pTQnBibk4wWVc1alpXOW1JRWx1ZERFMlFYSnlZWGttSm5Sb2FYTXVZbmwwWlU5bVpuTmxkQ3QwYUdsekxuQnZjMmwwYVc5dUpXVXVRbGxVUlZOZlVFVlNYMFZNUlUxRlRsUTlQVDB3S1hNdWJXVnRZM0I1S0hSb2FYTXVYMkoxWm1abGNpeDBhR2x6TG1KNWRHVlBabVp6WlhRcmRHaHBjeTV3YjNOcGRHbHZiaXhsTG1KMVptWmxjaXd3TEdVdVlubDBaVXhsYm1kMGFDa3NkR2hwY3k1dFlYQkpiblF4TmtGeWNtRjVLR1V1YkdWdVozUm9MSFFwTzJWc2MyVWdabTl5S0haaGNpQnBQVEE3YVR4bExteGxibWQwYUR0cEt5c3BkR2hwY3k1M2NtbDBaVWx1ZERFMktHVmJhVjBzZENsOUxITXVjSEp2ZEc5MGVYQmxMbmR5YVhSbFNXNTBPRUZ5Y21GNVBXWjFibU4wYVc5dUtHVXBlMmxtS0hSb2FYTXVYM0psWVd4c2IyTW9aUzVzWlc1bmRHZ3FNU2tzWlNCcGJuTjBZVzVqWlc5bUlFbHVkRGhCY25KaGVTWW1kR2hwY3k1aWVYUmxUMlptYzJWMEszUm9hWE11Y0c5emFYUnBiMjRsWlM1Q1dWUkZVMTlRUlZKZlJVeEZUVVZPVkQwOVBUQXBjeTV0WlcxamNIa29kR2hwY3k1ZlluVm1abVZ5TEhSb2FYTXVZbmwwWlU5bVpuTmxkQ3QwYUdsekxuQnZjMmwwYVc5dUxHVXVZblZtWm1WeUxEQXNaUzVpZVhSbFRHVnVaM1JvS1N4MGFHbHpMbTFoY0VsdWREaEJjbkpoZVNobExteGxibWQwYUNrN1pXeHpaU0JtYjNJb2RtRnlJSFE5TUR0MFBHVXViR1Z1WjNSb08zUXJLeWwwYUdsekxuZHlhWFJsU1c1ME9DaGxXM1JkS1gwc2N5NXdjbTkwYjNSNWNHVXVkM0pwZEdWVmFXNTBNekpCY25KaGVUMW1kVzVqZEdsdmJpaGxMSFFwZTJsbUtIUm9hWE11WDNKbFlXeHNiMk1vWlM1c1pXNW5kR2dxTkNrc1pTQnBibk4wWVc1alpXOW1JRlZwYm5Rek1rRnljbUY1SmlaMGFHbHpMbUo1ZEdWUFptWnpaWFFyZEdocGN5NXdiM05wZEdsdmJpVmxMa0paVkVWVFgxQkZVbDlGVEVWTlJVNVVQVDA5TUNsekxtMWxiV053ZVNoMGFHbHpMbDlpZFdabVpYSXNkR2hwY3k1aWVYUmxUMlptYzJWMEszUm9hWE11Y0c5emFYUnBiMjRzWlM1aWRXWm1aWElzTUN4bExtSjVkR1ZNWlc1bmRHZ3BMSFJvYVhNdWJXRndWV2x1ZERNeVFYSnlZWGtvWlM1c1pXNW5kR2dzZENrN1pXeHpaU0JtYjNJb2RtRnlJR2s5TUR0cFBHVXViR1Z1WjNSb08ya3JLeWwwYUdsekxuZHlhWFJsVldsdWRETXlLR1ZiYVYwc2RDbDlMSE11Y0hKdmRHOTBlWEJsTG5keWFYUmxWV2x1ZERFMlFYSnlZWGs5Wm5WdVkzUnBiMjRvWlN4MEtYdHBaaWgwYUdsekxsOXlaV0ZzYkc5aktHVXViR1Z1WjNSb0tqSXBMR1VnYVc1emRHRnVZMlZ2WmlCVmFXNTBNVFpCY25KaGVTWW1kR2hwY3k1aWVYUmxUMlptYzJWMEszUm9hWE11Y0c5emFYUnBiMjRsWlM1Q1dWUkZVMTlRUlZKZlJVeEZUVVZPVkQwOVBUQXBjeTV0WlcxamNIa29kR2hwY3k1ZlluVm1abVZ5TEhSb2FYTXVZbmwwWlU5bVpuTmxkQ3QwYUdsekxuQnZjMmwwYVc5dUxHVXVZblZtWm1WeUxEQXNaUzVpZVhSbFRHVnVaM1JvS1N4MGFHbHpMbTFoY0ZWcGJuUXhOa0Z5Y21GNUtHVXViR1Z1WjNSb0xIUXBPMlZzYzJVZ1ptOXlLSFpoY2lCcFBUQTdhVHhsTG14bGJtZDBhRHRwS3lzcGRHaHBjeTUzY21sMFpWVnBiblF4TmlobFcybGRMSFFwZlN4ekxuQnliM1J2ZEhsd1pTNTNjbWwwWlZWcGJuUTRRWEp5WVhrOVpuVnVZM1JwYjI0b1pTbDdhV1lvZEdocGN5NWZjbVZoYkd4dll5aGxMbXhsYm1kMGFDb3hLU3hsSUdsdWMzUmhibU5sYjJZZ1ZXbHVkRGhCY25KaGVTWW1kR2hwY3k1aWVYUmxUMlptYzJWMEszUm9hWE11Y0c5emFYUnBiMjRsWlM1Q1dWUkZVMTlRUlZKZlJVeEZUVVZPVkQwOVBUQXBjeTV0WlcxamNIa29kR2hwY3k1ZlluVm1abVZ5TEhSb2FYTXVZbmwwWlU5bVpuTmxkQ3QwYUdsekxuQnZjMmwwYVc5dUxHVXVZblZtWm1WeUxEQXNaUzVpZVhSbFRHVnVaM1JvS1N4MGFHbHpMbTFoY0ZWcGJuUTRRWEp5WVhrb1pTNXNaVzVuZEdncE8yVnNjMlVnWm05eUtIWmhjaUIwUFRBN2REeGxMbXhsYm1kMGFEdDBLeXNwZEdocGN5NTNjbWwwWlZWcGJuUTRLR1ZiZEYwcGZTeHpMbkJ5YjNSdmRIbHdaUzUzY21sMFpVWnNiMkYwTmpSQmNuSmhlVDFtZFc1amRHbHZiaWhsTEhRcGUybG1LSFJvYVhNdVgzSmxZV3hzYjJNb1pTNXNaVzVuZEdncU9Da3NaU0JwYm5OMFlXNWpaVzltSUVac2IyRjBOalJCY25KaGVTWW1kR2hwY3k1aWVYUmxUMlptYzJWMEszUm9hWE11Y0c5emFYUnBiMjRsWlM1Q1dWUkZVMTlRUlZKZlJVeEZUVVZPVkQwOVBUQXBjeTV0WlcxamNIa29kR2hwY3k1ZlluVm1abVZ5TEhSb2FYTXVZbmwwWlU5bVpuTmxkQ3QwYUdsekxuQnZjMmwwYVc5dUxHVXVZblZtWm1WeUxEQXNaUzVpZVhSbFRHVnVaM1JvS1N4MGFHbHpMbTFoY0Vac2IyRjBOalJCY25KaGVTaGxMbXhsYm1kMGFDeDBLVHRsYkhObElHWnZjaWgyWVhJZ2FUMHdPMms4WlM1c1pXNW5kR2c3YVNzcktYUm9hWE11ZDNKcGRHVkdiRzloZERZMEtHVmJhVjBzZENsOUxITXVjSEp2ZEc5MGVYQmxMbmR5YVhSbFJteHZZWFF6TWtGeWNtRjVQV1oxYm1OMGFXOXVLR1VzZENsN2FXWW9kR2hwY3k1ZmNtVmhiR3h2WXlobExteGxibWQwYUNvMEtTeGxJR2x1YzNSaGJtTmxiMllnUm14dllYUXpNa0Z5Y21GNUppWjBhR2x6TG1KNWRHVlBabVp6WlhRcmRHaHBjeTV3YjNOcGRHbHZiaVZsTGtKWlZFVlRYMUJGVWw5RlRFVk5SVTVVUFQwOU1DbHpMbTFsYldOd2VTaDBhR2x6TGw5aWRXWm1aWElzZEdocGN5NWllWFJsVDJabWMyVjBLM1JvYVhNdWNHOXphWFJwYjI0c1pTNWlkV1ptWlhJc01DeGxMbUo1ZEdWTVpXNW5kR2dwTEhSb2FYTXViV0Z3Um14dllYUXpNa0Z5Y21GNUtHVXViR1Z1WjNSb0xIUXBPMlZzYzJVZ1ptOXlLSFpoY2lCcFBUQTdhVHhsTG14bGJtZDBhRHRwS3lzcGRHaHBjeTUzY21sMFpVWnNiMkYwTXpJb1pWdHBYU3gwS1gwc2N5NXdjbTkwYjNSNWNHVXVkM0pwZEdWSmJuUXpNajFtZFc1amRHbHZiaWhsTEhRcGUzUm9hWE11WDNKbFlXeHNiMk1vTkNrc2RHaHBjeTVmWkdGMFlWWnBaWGN1YzJWMFNXNTBNeklvZEdocGN5NXdiM05wZEdsdmJpeGxMSFEvUDNSb2FYTXVaVzVrYVdGdWJtVnpjeWtzZEdocGN5NXdiM05wZEdsdmJpczlOSDBzY3k1d2NtOTBiM1I1Y0dVdWQzSnBkR1ZKYm5ReE5qMW1kVzVqZEdsdmJpaGxMSFFwZTNSb2FYTXVYM0psWVd4c2IyTW9NaWtzZEdocGN5NWZaR0YwWVZacFpYY3VjMlYwU1c1ME1UWW9kR2hwY3k1d2IzTnBkR2x2Yml4bExIUS9QM1JvYVhNdVpXNWthV0Z1Ym1WemN5a3NkR2hwY3k1d2IzTnBkR2x2YmlzOU1uMHNjeTV3Y205MGIzUjVjR1V1ZDNKcGRHVkpiblE0UFdaMWJtTjBhVzl1S0dVcGUzUm9hWE11WDNKbFlXeHNiMk1vTVNrc2RHaHBjeTVmWkdGMFlWWnBaWGN1YzJWMFNXNTBPQ2gwYUdsekxuQnZjMmwwYVc5dUxHVXBMSFJvYVhNdWNHOXphWFJwYjI0clBURjlMSE11Y0hKdmRHOTBlWEJsTG5keWFYUmxWV2x1ZERNeVBXWjFibU4wYVc5dUtHVXNkQ2w3ZEdocGN5NWZjbVZoYkd4dll5ZzBLU3gwYUdsekxsOWtZWFJoVm1sbGR5NXpaWFJWYVc1ME16SW9kR2hwY3k1d2IzTnBkR2x2Yml4bExIUS9QM1JvYVhNdVpXNWthV0Z1Ym1WemN5a3NkR2hwY3k1d2IzTnBkR2x2YmlzOU5IMHNjeTV3Y205MGIzUjVjR1V1ZDNKcGRHVlZhVzUwTVRZOVpuVnVZM1JwYjI0b1pTeDBLWHQwYUdsekxsOXlaV0ZzYkc5aktESXBMSFJvYVhNdVgyUmhkR0ZXYVdWM0xuTmxkRlZwYm5ReE5paDBhR2x6TG5CdmMybDBhVzl1TEdVc2REOC9kR2hwY3k1bGJtUnBZVzV1WlhOektTeDBhR2x6TG5CdmMybDBhVzl1S3oweWZTeHpMbkJ5YjNSdmRIbHdaUzUzY21sMFpWVnBiblE0UFdaMWJtTjBhVzl1S0dVcGUzUm9hWE11WDNKbFlXeHNiMk1vTVNrc2RHaHBjeTVmWkdGMFlWWnBaWGN1YzJWMFZXbHVkRGdvZEdocGN5NXdiM05wZEdsdmJpeGxLU3gwYUdsekxuQnZjMmwwYVc5dUt6MHhmU3h6TG5CeWIzUnZkSGx3WlM1M2NtbDBaVVpzYjJGME16STlablZ1WTNScGIyNG9aU3gwS1h0MGFHbHpMbDl5WldGc2JHOWpLRFFwTEhSb2FYTXVYMlJoZEdGV2FXVjNMbk5sZEVac2IyRjBNeklvZEdocGN5NXdiM05wZEdsdmJpeGxMSFEvUDNSb2FYTXVaVzVrYVdGdWJtVnpjeWtzZEdocGN5NXdiM05wZEdsdmJpczlOSDBzY3k1d2NtOTBiM1I1Y0dVdWQzSnBkR1ZHYkc5aGREWTBQV1oxYm1OMGFXOXVLR1VzZENsN2RHaHBjeTVmY21WaGJHeHZZeWc0S1N4MGFHbHpMbDlrWVhSaFZtbGxkeTV6WlhSR2JHOWhkRFkwS0hSb2FYTXVjRzl6YVhScGIyNHNaU3gwUHo5MGFHbHpMbVZ1WkdsaGJtNWxjM01wTEhSb2FYTXVjRzl6YVhScGIyNHJQVGg5TEhNdWNISnZkRzkwZVhCbExuZHlhWFJsVlVOVE1sTjBjbWx1WnoxbWRXNWpkR2x2YmlobExIUXNhU2w3YVQwOWJuVnNiQ1ltS0drOVpTNXNaVzVuZEdncE8yWnZjaWgyWVhJZ1pqMHdPMlk4WlM1c1pXNW5kR2dtSm1ZOGFUdG1LeXNwZEdocGN5NTNjbWwwWlZWcGJuUXhOaWhsTG1Ob1lYSkRiMlJsUVhRb1ppa3NkQ2s3Wm05eUtEdG1QR2s3WmlzcktYUm9hWE11ZDNKcGRHVlZhVzUwTVRZb01DbDlMSE11Y0hKdmRHOTBlWEJsTG5keWFYUmxVM1J5YVc1blBXWjFibU4wYVc5dUtHVXNkQ3hwS1h0MllYSWdaajB3TzJsbUtIUTlQVzUxYkd4OGZIUTlQU0pCVTBOSlNTSXBhV1lvYVNFOWJuVnNiQ2w3ZG1GeUlIVTlUV0YwYUM1dGFXNG9aUzVzWlc1bmRHZ3NhU2s3Wm05eUtHWTlNRHRtUEhVN1ppc3JLWFJvYVhNdWQzSnBkR1ZWYVc1ME9DaGxMbU5vWVhKRGIyUmxRWFFvWmlrcE8yWnZjaWc3Wmp4cE8yWXJLeWwwYUdsekxuZHlhWFJsVldsdWREZ29NQ2w5Wld4elpTQm1iM0lvWmowd08yWThaUzVzWlc1bmRHZzdaaXNyS1hSb2FYTXVkM0pwZEdWVmFXNTBPQ2hsTG1Ob1lYSkRiMlJsUVhRb1ppa3BPMlZzYzJVZ2RHaHBjeTUzY21sMFpWVnBiblE0UVhKeVlYa29ibVYzSUZSbGVIUkZibU52WkdWeUtIUXBMbVZ1WTI5a1pTaGxMbk4xWW5OMGNtbHVaeWd3TEdrcEtTbDlMSE11Y0hKdmRHOTBlWEJsTG5keWFYUmxRMU4wY21sdVp6MW1kVzVqZEdsdmJpaGxMSFFwZTNaaGNpQnBQVEE3YVdZb2RDRTliblZzYkNsN2RtRnlJR1k5VFdGMGFDNXRhVzRvWlM1c1pXNW5kR2dzZENrN1ptOXlLR2s5TUR0cFBHWTdhU3NyS1hSb2FYTXVkM0pwZEdWVmFXNTBPQ2hsTG1Ob1lYSkRiMlJsUVhRb2FTa3BPMlp2Y2lnN2FUeDBPMmtyS3lsMGFHbHpMbmR5YVhSbFZXbHVkRGdvTUNsOVpXeHpaWHRtYjNJb2FUMHdPMms4WlM1c1pXNW5kR2c3YVNzcktYUm9hWE11ZDNKcGRHVlZhVzUwT0NobExtTm9ZWEpEYjJSbFFYUW9hU2twTzNSb2FYTXVkM0pwZEdWVmFXNTBPQ2d3S1gxOUxITXVjSEp2ZEc5MGVYQmxMbmR5YVhSbFUzUnlkV04wUFdaMWJtTjBhVzl1S0dVc2RDbDdabTl5S0haaGNpQnBQVEE3YVR4bExteGxibWQwYUR0cEt6MHlLWHQyWVhJZ1pqMWxXMmtyTVYwN2RHaHBjeTUzY21sMFpWUjVjR1VvWml4MFcyVmJhVjFkTEhRcGZYMHNjeTV3Y205MGIzUjVjR1V1ZDNKcGRHVlVlWEJsUFdaMWJtTjBhVzl1S0dVc2RDeHBLWHQyWVhJZ1pqdHBaaWgwZVhCbGIyWWdaVDA5SW1aMWJtTjBhVzl1SWlseVpYUjFjbTRnWlNoMGFHbHpMSFFwTzJsbUtIUjVjR1Z2WmlCbFBUMGliMkpxWldOMElpWW1JU2hsSUdsdWMzUmhibU5sYjJZZ1FYSnlZWGtwS1hKbGRIVnliaUJsTG5ObGRDaDBhR2x6TEhRc2FTazdkbUZ5SUhVOWJuVnNiQ3gyUFNKQlUwTkpTU0lzZVQxMGFHbHpMbkJ2YzJsMGFXOXVPM04zYVhSamFDaDBlWEJsYjJZZ1pUMDlJbk4wY21sdVp5SW1KaTg2THk1MFpYTjBLR1VwSmlZb1pqMWxMbk53YkdsMEtDSTZJaWtzWlQxbVd6QmRMSFU5Y0dGeWMyVkpiblFvWmxzeFhTa3BMSFI1Y0dWdlppQmxQVDBpYzNSeWFXNW5JaVltTHl3dkxuUmxjM1FvWlNrbUppaG1QV1V1YzNCc2FYUW9JaXdpS1N4bFBXWmJNRjBzZGoxd1lYSnpaVWx1ZENobVd6RmRLU2tzWlNsN1kyRnpaU0oxYVc1ME9DSTZkR2hwY3k1M2NtbDBaVlZwYm5RNEtIUXBPMkp5WldGck8yTmhjMlVpYVc1ME9DSTZkR2hwY3k1M2NtbDBaVWx1ZERnb2RDazdZbkpsWVdzN1kyRnpaU0oxYVc1ME1UWWlPblJvYVhNdWQzSnBkR1ZWYVc1ME1UWW9kQ3gwYUdsekxtVnVaR2xoYm01bGMzTXBPMkp5WldGck8yTmhjMlVpYVc1ME1UWWlPblJvYVhNdWQzSnBkR1ZKYm5ReE5paDBMSFJvYVhNdVpXNWthV0Z1Ym1WemN5azdZbkpsWVdzN1kyRnpaU0oxYVc1ME16SWlPblJvYVhNdWQzSnBkR1ZWYVc1ME16SW9kQ3gwYUdsekxtVnVaR2xoYm01bGMzTXBPMkp5WldGck8yTmhjMlVpYVc1ME16SWlPblJvYVhNdWQzSnBkR1ZKYm5Rek1paDBMSFJvYVhNdVpXNWthV0Z1Ym1WemN5azdZbkpsWVdzN1kyRnpaU0ptYkc5aGRETXlJanAwYUdsekxuZHlhWFJsUm14dllYUXpNaWgwTEhSb2FYTXVaVzVrYVdGdWJtVnpjeWs3WW5KbFlXczdZMkZ6WlNKbWJHOWhkRFkwSWpwMGFHbHpMbmR5YVhSbFJteHZZWFEyTkNoMExIUm9hWE11Wlc1a2FXRnVibVZ6Y3lrN1luSmxZV3M3WTJGelpTSjFhVzUwTVRaaVpTSTZkR2hwY3k1M2NtbDBaVlZwYm5ReE5paDBMSE11UWtsSFgwVk9SRWxCVGlrN1luSmxZV3M3WTJGelpTSnBiblF4Tm1KbElqcDBhR2x6TG5keWFYUmxTVzUwTVRZb2RDeHpMa0pKUjE5RlRrUkpRVTRwTzJKeVpXRnJPMk5oYzJVaWRXbHVkRE15WW1VaU9uUm9hWE11ZDNKcGRHVlZhVzUwTXpJb2RDeHpMa0pKUjE5RlRrUkpRVTRwTzJKeVpXRnJPMk5oYzJVaWFXNTBNekppWlNJNmRHaHBjeTUzY21sMFpVbHVkRE15S0hRc2N5NUNTVWRmUlU1RVNVRk9LVHRpY21WaGF6dGpZWE5sSW1ac2IyRjBNekppWlNJNmRHaHBjeTUzY21sMFpVWnNiMkYwTXpJb2RDeHpMa0pKUjE5RlRrUkpRVTRwTzJKeVpXRnJPMk5oYzJVaVpteHZZWFEyTkdKbElqcDBhR2x6TG5keWFYUmxSbXh2WVhRMk5DaDBMSE11UWtsSFgwVk9SRWxCVGlrN1luSmxZV3M3WTJGelpTSjFhVzUwTVRac1pTSTZkR2hwY3k1M2NtbDBaVlZwYm5ReE5paDBMSE11VEVsVVZFeEZYMFZPUkVsQlRpazdZbkpsWVdzN1kyRnpaU0pwYm5ReE5teGxJanAwYUdsekxuZHlhWFJsU1c1ME1UWW9kQ3h6TGt4SlZGUk1SVjlGVGtSSlFVNHBPMkp5WldGck8yTmhjMlVpZFdsdWRETXliR1VpT25Sb2FYTXVkM0pwZEdWVmFXNTBNeklvZEN4ekxreEpWRlJNUlY5RlRrUkpRVTRwTzJKeVpXRnJPMk5oYzJVaWFXNTBNekpzWlNJNmRHaHBjeTUzY21sMFpVbHVkRE15S0hRc2N5NU1TVlJVVEVWZlJVNUVTVUZPS1R0aWNtVmhhenRqWVhObEltWnNiMkYwTXpKc1pTSTZkR2hwY3k1M2NtbDBaVVpzYjJGME16SW9kQ3h6TGt4SlZGUk1SVjlGVGtSSlFVNHBPMkp5WldGck8yTmhjMlVpWm14dllYUTJOR3hsSWpwMGFHbHpMbmR5YVhSbFJteHZZWFEyTkNoMExITXVURWxVVkV4RlgwVk9SRWxCVGlrN1luSmxZV3M3WTJGelpTSmpjM1J5YVc1bklqcDBhR2x6TG5keWFYUmxRMU4wY21sdVp5aDBMSFVwTzJKeVpXRnJPMk5oYzJVaWMzUnlhVzVuSWpwMGFHbHpMbmR5YVhSbFUzUnlhVzVuS0hRc2RpeDFLVHRpY21WaGF6dGpZWE5sSW5VeE5uTjBjbWx1WnlJNmRHaHBjeTUzY21sMFpWVkRVekpUZEhKcGJtY29kQ3gwYUdsekxtVnVaR2xoYm01bGMzTXNkU2s3WW5KbFlXczdZMkZ6WlNKMU1UWnpkSEpwYm1kc1pTSTZkR2hwY3k1M2NtbDBaVlZEVXpKVGRISnBibWNvZEN4ekxreEpWRlJNUlY5RlRrUkpRVTRzZFNrN1luSmxZV3M3WTJGelpTSjFNVFp6ZEhKcGJtZGlaU0k2ZEdocGN5NTNjbWwwWlZWRFV6SlRkSEpwYm1jb2RDeHpMa0pKUjE5RlRrUkpRVTRzZFNrN1luSmxZV3M3WkdWbVlYVnNkRHBwWmlobExteGxibWQwYUQwOU15bDdabTl5S0haaGNpQnRQV1ZiTVYwc1lqMHdPMkk4ZEM1c1pXNW5kR2c3WWlzcktYUm9hWE11ZDNKcGRHVlVlWEJsS0cwc2RGdGlYU2s3WW5KbFlXdDlaV3h6Wlh0MGFHbHpMbmR5YVhSbFUzUnlkV04wS0dVc2RDazdZbkpsWVd0OWZYVWhQVzUxYkd3bUppaDBhR2x6TG5CdmMybDBhVzl1UFhrc2RHaHBjeTVmY21WaGJHeHZZeWgxS1N4MGFHbHpMbkJ2YzJsMGFXOXVQWGtyZFNsOUxITXVjSEp2ZEc5MGVYQmxMbmR5YVhSbFZXbHVkRFkwUFdaMWJtTjBhVzl1S0dVcGUzWmhjaUIwUFUxaGRHZ3VabXh2YjNJb1pTOXNLVHQwYUdsekxuZHlhWFJsVldsdWRETXlLSFFwTEhSb2FYTXVkM0pwZEdWVmFXNTBNeklvWlNZME1qazBPVFkzTWprMUtYMHNjeTV3Y205MGIzUjVjR1V1ZDNKcGRHVlZhVzUwTWpROVpuVnVZM1JwYjI0b1pTbDdkR2hwY3k1M2NtbDBaVlZwYm5RNEtDaGxKakUyTnpFeE5qZ3dLVDQrTVRZcExIUm9hWE11ZDNKcGRHVlZhVzUwT0Nnb1pTWTJOVEk0TUNrK1BqZ3BMSFJvYVhNdWQzSnBkR1ZWYVc1ME9DaGxKakkxTlNsOUxITXVjSEp2ZEc5MGVYQmxMbUZrYW5WemRGVnBiblF6TWoxbWRXNWpkR2x2YmlobExIUXBlM1poY2lCcFBYUm9hWE11Y0c5emFYUnBiMjQ3ZEdocGN5NXpaV1ZyS0dVcExIUm9hWE11ZDNKcGRHVlZhVzUwTXpJb2RDa3NkR2hwY3k1elpXVnJLR2twZlN4ekxuQnliM1J2ZEhsd1pTNXRZWEJKYm5Rek1rRnljbUY1UFdaMWJtTjBhVzl1S0dVc2RDbDdkR2hwY3k1ZmNtVmhiR3h2WXlobEtqUXBPM1poY2lCcFBXNWxkeUJKYm5Rek1rRnljbUY1S0hSb2FYTXVYMkoxWm1abGNpeDBhR2x6TG1KNWRHVlBabVp6WlhRcmRHaHBjeTV3YjNOcGRHbHZiaXhsS1R0eVpYUjFjbTRnY3k1aGNuSmhlVlJ2VG1GMGFYWmxLR2tzZEQ4L2RHaHBjeTVsYm1ScFlXNXVaWE56S1N4MGFHbHpMbkJ2YzJsMGFXOXVLejFsS2pRc2FYMHNjeTV3Y205MGIzUjVjR1V1YldGd1NXNTBNVFpCY25KaGVUMW1kVzVqZEdsdmJpaGxMSFFwZTNSb2FYTXVYM0psWVd4c2IyTW9aU295S1R0MllYSWdhVDF1WlhjZ1NXNTBNVFpCY25KaGVTaDBhR2x6TGw5aWRXWm1aWElzZEdocGN5NWllWFJsVDJabWMyVjBLM1JvYVhNdWNHOXphWFJwYjI0c1pTazdjbVYwZFhKdUlITXVZWEp5WVhsVWIwNWhkR2wyWlNocExIUS9QM1JvYVhNdVpXNWthV0Z1Ym1WemN5a3NkR2hwY3k1d2IzTnBkR2x2YmlzOVpTb3lMR2w5TEhNdWNISnZkRzkwZVhCbExtMWhjRWx1ZERoQmNuSmhlVDFtZFc1amRHbHZiaWhsS1h0MGFHbHpMbDl5WldGc2JHOWpLR1VxTVNrN2RtRnlJSFE5Ym1WM0lFbHVkRGhCY25KaGVTaDBhR2x6TGw5aWRXWm1aWElzZEdocGN5NWllWFJsVDJabWMyVjBLM1JvYVhNdWNHOXphWFJwYjI0c1pTazdjbVYwZFhKdUlIUm9hWE11Y0c5emFYUnBiMjRyUFdVcU1TeDBmU3h6TG5CeWIzUnZkSGx3WlM1dFlYQlZhVzUwTXpKQmNuSmhlVDFtZFc1amRHbHZiaWhsTEhRcGUzUm9hWE11WDNKbFlXeHNiMk1vWlNvMEtUdDJZWElnYVQxdVpYY2dWV2x1ZERNeVFYSnlZWGtvZEdocGN5NWZZblZtWm1WeUxIUm9hWE11WW5sMFpVOW1abk5sZEN0MGFHbHpMbkJ2YzJsMGFXOXVMR1VwTzNKbGRIVnliaUJ6TG1GeWNtRjVWRzlPWVhScGRtVW9hU3gwUHo5MGFHbHpMbVZ1WkdsaGJtNWxjM01wTEhSb2FYTXVjRzl6YVhScGIyNHJQV1VxTkN4cGZTeHpMbkJ5YjNSdmRIbHdaUzV0WVhCVmFXNTBNVFpCY25KaGVUMW1kVzVqZEdsdmJpaGxMSFFwZTNSb2FYTXVYM0psWVd4c2IyTW9aU295S1R0MllYSWdhVDF1WlhjZ1ZXbHVkREUyUVhKeVlYa29kR2hwY3k1ZlluVm1abVZ5TEhSb2FYTXVZbmwwWlU5bVpuTmxkQ3QwYUdsekxuQnZjMmwwYVc5dUxHVXBPM0psZEhWeWJpQnpMbUZ5Y21GNVZHOU9ZWFJwZG1Vb2FTeDBQejkwYUdsekxtVnVaR2xoYm01bGMzTXBMSFJvYVhNdWNHOXphWFJwYjI0clBXVXFNaXhwZlN4ekxuQnliM1J2ZEhsd1pTNXRZWEJHYkc5aGREWTBRWEp5WVhrOVpuVnVZM1JwYjI0b1pTeDBLWHQwYUdsekxsOXlaV0ZzYkc5aktHVXFPQ2s3ZG1GeUlHazlibVYzSUVac2IyRjBOalJCY25KaGVTaDBhR2x6TGw5aWRXWm1aWElzZEdocGN5NWllWFJsVDJabWMyVjBLM1JvYVhNdWNHOXphWFJwYjI0c1pTazdjbVYwZFhKdUlITXVZWEp5WVhsVWIwNWhkR2wyWlNocExIUS9QM1JvYVhNdVpXNWthV0Z1Ym1WemN5a3NkR2hwY3k1d2IzTnBkR2x2YmlzOVpTbzRMR2w5TEhNdWNISnZkRzkwZVhCbExtMWhjRVpzYjJGME16SkJjbkpoZVQxbWRXNWpkR2x2YmlobExIUXBlM1JvYVhNdVgzSmxZV3hzYjJNb1pTbzBLVHQyWVhJZ2FUMXVaWGNnUm14dllYUXpNa0Z5Y21GNUtIUm9hWE11WDJKMVptWmxjaXgwYUdsekxtSjVkR1ZQWm1aelpYUXJkR2hwY3k1d2IzTnBkR2x2Yml4bEtUdHlaWFIxY200Z2N5NWhjbkpoZVZSdlRtRjBhWFpsS0drc2REOC9kR2hwY3k1bGJtUnBZVzV1WlhOektTeDBhR2x6TG5CdmMybDBhVzl1S3oxbEtqUXNhWDA3ZG1GeUlHUTlablZ1WTNScGIyNG9aU2w3ZEdocGN5NWlkV1ptWlhKelBWdGRMSFJvYVhNdVluVm1abVZ5U1c1a1pYZzlMVEVzWlNZbUtIUm9hWE11YVc1elpYSjBRblZtWm1WeUtHVXBMSFJvYVhNdVluVm1abVZ5U1c1a1pYZzlNQ2w5TzJRdWNISnZkRzkwZVhCbFBXNWxkeUJ6S0c1bGR5QkJjbkpoZVVKMVptWmxjaXd3TEhNdVFrbEhYMFZPUkVsQlRpa3NaQzV3Y205MGIzUjVjR1V1YVc1cGRHbGhiR2w2WldROVpuVnVZM1JwYjI0b0tYdDJZWElnWlR0eVpYUjFjbTRnZEdocGN5NWlkV1ptWlhKSmJtUmxlRDR0TVQ4aE1EcDBhR2x6TG1KMVptWmxjbk11YkdWdVozUm9QakEvS0dVOWRHaHBjeTVpZFdabVpYSnpXekJkTEdVdVptbHNaVk4wWVhKMFBUMDlNRDhvZEdocGN5NWlkV1ptWlhJOVpTeDBhR2x6TG1KMVptWmxja2x1WkdWNFBUQXNjaTVrWldKMVp5Z2lUWFZzZEdsQ2RXWm1aWEpUZEhKbFlXMGlMQ0pUZEhKbFlXMGdjbVZoWkhrZ1ptOXlJSEJoY25OcGJtY2lLU3doTUNrNktISXVkMkZ5YmlnaVRYVnNkR2xDZFdabVpYSlRkSEpsWVcwaUxDSlVhR1VnWm1seWMzUWdZblZtWm1WeUlITm9iM1ZzWkNCb1lYWmxJR0VnWm1sc1pWTjBZWEowSUc5bUlEQWlLU3gwYUdsekxteHZaMEoxWm1abGNreGxkbVZzS0Nrc0lURXBLVG9vY2k1M1lYSnVLQ0pOZFd4MGFVSjFabVpsY2xOMGNtVmhiU0lzSWs1dklHSjFabVpsY2lCMGJ5QnpkR0Z5ZENCd1lYSnphVzVuSUdaeWIyMGlLU3gwYUdsekxteHZaMEoxWm1abGNreGxkbVZzS0Nrc0lURXBmU3hCY25KaGVVSjFabVpsY2k1amIyNWpZWFE5Wm5WdVkzUnBiMjRvWlN4MEtYdHlMbVJsWW5WbktDSkJjbkpoZVVKMVptWmxjaUlzSWxSeWVXbHVaeUIwYnlCamNtVmhkR1VnWVNCdVpYY2dZblZtWm1WeUlHOW1JSE5wZW1VNklDSXJLR1V1WW5sMFpVeGxibWQwYUN0MExtSjVkR1ZNWlc1bmRHZ3BLVHQyWVhJZ2FUMXVaWGNnVldsdWREaEJjbkpoZVNobExtSjVkR1ZNWlc1bmRHZ3JkQzVpZVhSbFRHVnVaM1JvS1R0eVpYUjFjbTRnYVM1elpYUW9ibVYzSUZWcGJuUTRRWEp5WVhrb1pTa3NNQ2tzYVM1elpYUW9ibVYzSUZWcGJuUTRRWEp5WVhrb2RDa3NaUzVpZVhSbFRHVnVaM1JvS1N4cExtSjFabVpsY24wc1pDNXdjbTkwYjNSNWNHVXVjbVZrZFdObFFuVm1abVZ5UFdaMWJtTjBhVzl1S0dVc2RDeHBLWHQyWVhJZ1pqdHlaWFIxY200Z1pqMXVaWGNnVldsdWREaEJjbkpoZVNocEtTeG1Mbk5sZENodVpYY2dWV2x1ZERoQmNuSmhlU2hsTEhRc2FTa3BMR1l1WW5WbVptVnlMbVpwYkdWVGRHRnlkRDFsTG1acGJHVlRkR0Z5ZEN0MExHWXVZblZtWm1WeUxuVnpaV1JDZVhSbGN6MHdMR1l1WW5WbVptVnlmU3hrTG5CeWIzUnZkSGx3WlM1cGJuTmxjblJDZFdabVpYSTlablZ1WTNScGIyNG9aU2w3Wm05eUtIWmhjaUIwUFNFd0xHazlNRHRwUEhSb2FYTXVZblZtWm1WeWN5NXNaVzVuZEdnN2FTc3JLWHQyWVhJZ1pqMTBhR2x6TG1KMVptWmxjbk5iYVYwN2FXWW9aUzVtYVd4bFUzUmhjblE4UFdZdVptbHNaVk4wWVhKMEtYdHBaaWhsTG1acGJHVlRkR0Z5ZEQwOVBXWXVabWxzWlZOMFlYSjBLV2xtS0dVdVlubDBaVXhsYm1kMGFENW1MbUo1ZEdWTVpXNW5kR2dwZTNSb2FYTXVZblZtWm1WeWN5NXpjR3hwWTJVb2FTd3hLU3hwTFMwN1kyOXVkR2x1ZFdWOVpXeHpaU0J5TG5kaGNtNG9JazExYkhScFFuVm1abVZ5VTNSeVpXRnRJaXdpUW5WbVptVnlJQ2htYVd4bFUzUmhjblE2SUNJclpTNW1hV3hsVTNSaGNuUXJJaUF0SUV4bGJtZDBhRG9nSWl0bExtSjVkR1ZNWlc1bmRHZ3JJaWtnWVd4eVpXRmtlU0JoY0hCbGJtUmxaQ3dnYVdkdWIzSnBibWNpS1R0bGJITmxJR1V1Wm1sc1pWTjBZWEowSzJVdVlubDBaVXhsYm1kMGFEdzlaaTVtYVd4bFUzUmhjblI4ZkNobFBYUm9hWE11Y21Wa2RXTmxRblZtWm1WeUtHVXNNQ3htTG1acGJHVlRkR0Z5ZEMxbExtWnBiR1ZUZEdGeWRDa3BMSEl1WkdWaWRXY29JazExYkhScFFuVm1abVZ5VTNSeVpXRnRJaXdpUVhCd1pXNWthVzVuSUc1bGR5QmlkV1ptWlhJZ0tHWnBiR1ZUZEdGeWREb2dJaXRsTG1acGJHVlRkR0Z5ZENzaUlDMGdUR1Z1WjNSb09pQWlLMlV1WW5sMFpVeGxibWQwYUNzaUtTSXBMSFJvYVhNdVluVm1abVZ5Y3k1emNHeHBZMlVvYVN3d0xHVXBMR2s5UFQwd0ppWW9kR2hwY3k1aWRXWm1aWEk5WlNrN2REMGhNVHRpY21WaGEzMWxiSE5sSUdsbUtHVXVabWxzWlZOMFlYSjBQR1l1Wm1sc1pWTjBZWEowSzJZdVlubDBaVXhsYm1kMGFDbDdkbUZ5SUhVOVppNW1hV3hsVTNSaGNuUXJaaTVpZVhSbFRHVnVaM1JvTFdVdVptbHNaVk4wWVhKMExIWTlaUzVpZVhSbFRHVnVaM1JvTFhVN2FXWW9kajR3S1dVOWRHaHBjeTV5WldSMVkyVkNkV1ptWlhJb1pTeDFMSFlwTzJWc2MyVjdkRDBoTVR0aWNtVmhhMzE5ZlhRbUppaHlMbVJsWW5WbktDSk5kV3gwYVVKMVptWmxjbE4wY21WaGJTSXNJa0Z3Y0dWdVpHbHVaeUJ1WlhjZ1luVm1abVZ5SUNobWFXeGxVM1JoY25RNklDSXJaUzVtYVd4bFUzUmhjblFySWlBdElFeGxibWQwYURvZ0lpdGxMbUo1ZEdWTVpXNW5kR2dySWlraUtTeDBhR2x6TG1KMVptWmxjbk11Y0hWemFDaGxLU3hwUFQwOU1DWW1LSFJvYVhNdVluVm1abVZ5UFdVcEtYMHNaQzV3Y205MGIzUjVjR1V1Ykc5blFuVm1abVZ5VEdWMlpXdzlablZ1WTNScGIyNG9aU2w3ZG1GeUlIUXNhU3htTEhVc2RqMWJYU3g1TEcwOUlpSTdabTl5S0dZOU1DeDFQVEFzZEQwd08zUThkR2hwY3k1aWRXWm1aWEp6TG14bGJtZDBhRHQwS3lzcGFUMTBhR2x6TG1KMVptWmxjbk5iZEYwc2REMDlQVEEvS0hrOWUzMHNkaTV3ZFhOb0tIa3BMSGt1YzNSaGNuUTlhUzVtYVd4bFUzUmhjblFzZVM1bGJtUTlhUzVtYVd4bFUzUmhjblFyYVM1aWVYUmxUR1Z1WjNSb0xHMHJQU0piSWl0NUxuTjBZWEowS3lJdElpazZlUzVsYm1ROVBUMXBMbVpwYkdWVGRHRnlkRDk1TG1WdVpEMXBMbVpwYkdWVGRHRnlkQ3RwTG1KNWRHVk1aVzVuZEdnNktIazllMzBzZVM1emRHRnlkRDFwTG1acGJHVlRkR0Z5ZEN4dEt6MTJXM1l1YkdWdVozUm9MVEZkTG1WdVpDMHhLeUpkTENCYklpdDVMbk4wWVhKMEt5SXRJaXg1TG1WdVpEMXBMbVpwYkdWVGRHRnlkQ3RwTG1KNWRHVk1aVzVuZEdnc2RpNXdkWE5vS0hrcEtTeG1LejFwTG5WelpXUkNlWFJsY3l4MUt6MXBMbUo1ZEdWTVpXNW5kR2c3ZGk1c1pXNW5kR2crTUNZbUtHMHJQWGt1Wlc1a0xURXJJbDBpS1R0MllYSWdZajFsUDNJdWFXNW1ienB5TG1SbFluVm5PM1JvYVhNdVluVm1abVZ5Y3k1c1pXNW5kR2c5UFQwd1AySW9JazExYkhScFFuVm1abVZ5VTNSeVpXRnRJaXdpVG04Z2JXOXlaU0JpZFdabVpYSWdhVzRnYldWdGIzSjVJaWs2WWlnaVRYVnNkR2xDZFdabVpYSlRkSEpsWVcwaUxDSWlLM1JvYVhNdVluVm1abVZ5Y3k1c1pXNW5kR2dySWlCemRHOXlaV1FnWW5WbVptVnlLSE1wSUNnaUsyWXJJaThpSzNVcklpQmllWFJsY3lrc0lHTnZiblJwYm5WdmRYTWdjbUZ1WjJWek9pQWlLMjBwZlN4a0xuQnliM1J2ZEhsd1pTNWpiR1ZoYmtKMVptWmxjbk05Wm5WdVkzUnBiMjRvS1h0MllYSWdaU3gwTzJadmNpaGxQVEE3WlR4MGFHbHpMbUoxWm1abGNuTXViR1Z1WjNSb08yVXJLeWwwUFhSb2FYTXVZblZtWm1WeWMxdGxYU3gwTG5WelpXUkNlWFJsY3owOVBYUXVZbmwwWlV4bGJtZDBhQ1ltS0hJdVpHVmlkV2NvSWsxMWJIUnBRblZtWm1WeVUzUnlaV0Z0SWl3aVVtVnRiM1pwYm1jZ1luVm1abVZ5SUNNaUsyVXBMSFJvYVhNdVluVm1abVZ5Y3k1emNHeHBZMlVvWlN3eEtTeGxMUzBwZlN4a0xuQnliM1J2ZEhsd1pTNXRaWEpuWlU1bGVIUkNkV1ptWlhJOVpuVnVZM1JwYjI0b0tYdDJZWElnWlR0cFppaDBhR2x6TG1KMVptWmxja2x1WkdWNEt6RThkR2hwY3k1aWRXWm1aWEp6TG14bGJtZDBhQ2xwWmlobFBYUm9hWE11WW5WbVptVnljMXQwYUdsekxtSjFabVpsY2tsdVpHVjRLekZkTEdVdVptbHNaVk4wWVhKMFBUMDlkR2hwY3k1aWRXWm1aWEl1Wm1sc1pWTjBZWEowSzNSb2FYTXVZblZtWm1WeUxtSjVkR1ZNWlc1bmRHZ3BlM1poY2lCMFBYUm9hWE11WW5WbVptVnlMbUo1ZEdWTVpXNW5kR2dzYVQxMGFHbHpMbUoxWm1abGNpNTFjMlZrUW5sMFpYTXNaajEwYUdsekxtSjFabVpsY2k1bWFXeGxVM1JoY25RN2NtVjBkWEp1SUhSb2FYTXVZblZtWm1WeWMxdDBhR2x6TG1KMVptWmxja2x1WkdWNFhUMUJjbkpoZVVKMVptWmxjaTVqYjI1allYUW9kR2hwY3k1aWRXWm1aWElzWlNrc2RHaHBjeTVpZFdabVpYSTlkR2hwY3k1aWRXWm1aWEp6VzNSb2FYTXVZblZtWm1WeVNXNWtaWGhkTEhSb2FYTXVZblZtWm1WeWN5NXpjR3hwWTJVb2RHaHBjeTVpZFdabVpYSkpibVJsZUNzeExERXBMSFJvYVhNdVluVm1abVZ5TG5WelpXUkNlWFJsY3oxcExIUm9hWE11WW5WbVptVnlMbVpwYkdWVGRHRnlkRDFtTEhJdVpHVmlkV2NvSWtsVFQwWnBiR1VpTENKRGIyNWpZWFJsYm1GMGFXNW5JR0oxWm1abGNpQm1iM0lnWW05NElIQmhjbk5wYm1jZ0tHeGxibWQwYURvZ0lpdDBLeUl0UGlJcmRHaHBjeTVpZFdabVpYSXVZbmwwWlV4bGJtZDBhQ3NpS1NJcExDRXdmV1ZzYzJVZ2NtVjBkWEp1SVRFN1pXeHpaU0J5WlhSMWNtNGhNWDBzWkM1d2NtOTBiM1I1Y0dVdVptbHVaRkJ2YzJsMGFXOXVQV1oxYm1OMGFXOXVLR1VzZEN4cEtYdDJZWElnWml4MVBXNTFiR3dzZGowdE1UdG1iM0lvWlQwOVBTRXdQMlk5TURwbVBYUm9hWE11WW5WbVptVnlTVzVrWlhnN1pqeDBhR2x6TG1KMVptWmxjbk11YkdWdVozUm9KaVlvZFQxMGFHbHpMbUoxWm1abGNuTmJabDBzZFM1bWFXeGxVM1JoY25ROFBYUXBPeWw3ZGoxbUxHa21KaWgxTG1acGJHVlRkR0Z5ZEN0MUxtSjVkR1ZNWlc1bmRHZzhQWFEvZFM1MWMyVmtRbmwwWlhNOWRTNWllWFJsVEdWdVozUm9PblV1ZFhObFpFSjVkR1Z6UFhRdGRTNW1hV3hsVTNSaGNuUXNkR2hwY3k1c2IyZENkV1ptWlhKTVpYWmxiQ2dwS1R0bUt5dDljbVYwZFhKdUlIWWhQVDB0TVQ4b2RUMTBhR2x6TG1KMVptWmxjbk5iZGwwc2RTNW1hV3hsVTNSaGNuUXJkUzVpZVhSbFRHVnVaM1JvUGoxMFB5aHlMbVJsWW5WbktDSk5kV3gwYVVKMVptWmxjbE4wY21WaGJTSXNJa1p2ZFc1a0lIQnZjMmwwYVc5dUlHbHVJR1Y0YVhOMGFXNW5JR0oxWm1abGNpQWpJaXQyS1N4MktUb3RNU2s2TFRGOUxHUXVjSEp2ZEc5MGVYQmxMbVpwYm1SRmJtUkRiMjUwYVdkMWIzVnpRblZtUFdaMWJtTjBhVzl1S0dVcGUzWmhjaUIwTEdrc1ppeDFQV1VoUFQxMmIybGtJREEvWlRwMGFHbHpMbUoxWm1abGNrbHVaR1Y0TzJsbUtHazlkR2hwY3k1aWRXWm1aWEp6VzNWZExIUm9hWE11WW5WbVptVnljeTVzWlc1bmRHZytkU3N4S1dadmNpaDBQWFVyTVR0MFBIUm9hWE11WW5WbVptVnljeTVzWlc1bmRHZ21KaWhtUFhSb2FYTXVZblZtWm1WeWMxdDBYU3htTG1acGJHVlRkR0Z5ZEQwOVBXa3VabWxzWlZOMFlYSjBLMmt1WW5sMFpVeGxibWQwYUNrN2RDc3JLV2s5Wmp0eVpYUjFjbTRnYVM1bWFXeGxVM1JoY25RcmFTNWllWFJsVEdWdVozUm9mU3hrTG5CeWIzUnZkSGx3WlM1blpYUkZibVJHYVd4bFVHOXphWFJwYjI1QlpuUmxjajFtZFc1amRHbHZiaWhsS1h0MllYSWdkRDEwYUdsekxtWnBibVJRYjNOcGRHbHZiaWdoTUN4bExDRXhLVHR5WlhSMWNtNGdkQ0U5UFMweFAzUm9hWE11Wm1sdVpFVnVaRU52Ym5ScFozVnZkWE5DZFdZb2RDazZaWDBzWkM1d2NtOTBiM1I1Y0dVdVlXUmtWWE5sWkVKNWRHVnpQV1oxYm1OMGFXOXVLR1VwZTNSb2FYTXVZblZtWm1WeUxuVnpaV1JDZVhSbGN5czlaU3gwYUdsekxteHZaMEoxWm1abGNreGxkbVZzS0NsOUxHUXVjSEp2ZEc5MGVYQmxMbk5sZEVGc2JGVnpaV1JDZVhSbGN6MW1kVzVqZEdsdmJpZ3BlM1JvYVhNdVluVm1abVZ5TG5WelpXUkNlWFJsY3oxMGFHbHpMbUoxWm1abGNpNWllWFJsVEdWdVozUm9MSFJvYVhNdWJHOW5RblZtWm1WeVRHVjJaV3dvS1gwc1pDNXdjbTkwYjNSNWNHVXVjMlZsYXoxbWRXNWpkR2x2YmlobExIUXNhU2w3ZG1GeUlHWTdjbVYwZFhKdUlHWTlkR2hwY3k1bWFXNWtVRzl6YVhScGIyNG9kQ3hsTEdrcExHWWhQVDB0TVQ4b2RHaHBjeTVpZFdabVpYSTlkR2hwY3k1aWRXWm1aWEp6VzJaZExIUm9hWE11WW5WbVptVnlTVzVrWlhnOVppeDBhR2x6TG5CdmMybDBhVzl1UFdVdGRHaHBjeTVpZFdabVpYSXVabWxzWlZOMFlYSjBMSEl1WkdWaWRXY29JazExYkhScFFuVm1abVZ5VTNSeVpXRnRJaXdpVW1Wd2IzTnBkR2x2Ym1sdVp5QndZWEp6WlhJZ1lYUWdZblZtWm1WeUlIQnZjMmwwYVc5dU9pQWlLM1JvYVhNdWNHOXphWFJwYjI0cExDRXdLVG9vY2k1a1pXSjFaeWdpVFhWc2RHbENkV1ptWlhKVGRISmxZVzBpTENKUWIzTnBkR2x2YmlBaUsyVXJJaUJ1YjNRZ1ptOTFibVFnYVc0Z1luVm1abVZ5WldRZ1pHRjBZU0lwTENFeEtYMHNaQzV3Y205MGIzUjVjR1V1WjJWMFVHOXphWFJwYjI0OVpuVnVZM1JwYjI0b0tYdHBaaWgwYUdsekxtSjFabVpsY2tsdVpHVjRQVDA5TFRGOGZIUm9hWE11WW5WbVptVnljMXQwYUdsekxtSjFabVpsY2tsdVpHVjRYVDA5UFc1MWJHd3BkR2h5YjNjaVJYSnliM0lnWVdOalpYTnphVzVuSUhCdmMybDBhVzl1SUdsdUlIUm9aU0JOZFd4MGFVSjFabVpsY2xOMGNtVmhiU0k3Y21WMGRYSnVJSFJvYVhNdVluVm1abVZ5YzF0MGFHbHpMbUoxWm1abGNrbHVaR1Y0WFM1bWFXeGxVM1JoY25RcmRHaHBjeTV3YjNOcGRHbHZibjBzWkM1d2NtOTBiM1I1Y0dVdVoyVjBUR1Z1WjNSb1BXWjFibU4wYVc5dUtDbDdjbVYwZFhKdUlIUm9hWE11WW5sMFpVeGxibWQwYUgwc1pDNXdjbTkwYjNSNWNHVXVaMlYwUlc1a1VHOXphWFJwYjI0OVpuVnVZM1JwYjI0b0tYdHBaaWgwYUdsekxtSjFabVpsY2tsdVpHVjRQVDA5TFRGOGZIUm9hWE11WW5WbVptVnljMXQwYUdsekxtSjFabVpsY2tsdVpHVjRYVDA5UFc1MWJHd3BkR2h5YjNjaVJYSnliM0lnWVdOalpYTnphVzVuSUhCdmMybDBhVzl1SUdsdUlIUm9aU0JOZFd4MGFVSjFabVpsY2xOMGNtVmhiU0k3Y21WMGRYSnVJSFJvYVhNdVluVm1abVZ5YzF0MGFHbHpMbUoxWm1abGNrbHVaR1Y0WFM1bWFXeGxVM1JoY25RcmRHaHBjeTVpZVhSbFRHVnVaM1JvZlN4dUxrMTFiSFJwUW5WbVptVnlVM1J5WldGdFBXUTdkbUZ5SUdnOVpuVnVZM1JwYjI0b0tYdDJZWElnWlQwekxIUTlOQ3hwUFRVc1pqMDJMSFU5VzEwN2RWdGxYVDBpUlZOZlJHVnpZM0pwY0hSdmNpSXNkVnQwWFQwaVJHVmpiMlJsY2tOdmJtWnBaMFJsYzJOeWFYQjBiM0lpTEhWYmFWMDlJa1JsWTI5a1pYSlRjR1ZqYVdacFkwbHVabThpTEhWYlpsMDlJbE5NUTI5dVptbG5SR1Z6WTNKcGNIUnZjaUlzZEdocGN5NW5aWFJFWlhOamNtbHdkRzl5VG1GdFpUMW1kVzVqZEdsdmJpaHRLWHR5WlhSMWNtNGdkVnR0WFgwN2RtRnlJSFk5ZEdocGN5eDVQWHQ5TzNKbGRIVnliaUIwYUdsekxuQmhjbk5sVDI1bFJHVnpZM0pwY0hSdmNqMW1kVzVqZEdsdmJpaHRLWHQyWVhJZ1lqMHdMSGdzVXl4Vk8yWnZjaWg0UFcwdWNtVmhaRlZwYm5RNEtDa3NWVDF0TG5KbFlXUlZhVzUwT0NncE8xVW1NVEk0T3lsaVBTaFZKakV5TnlrOFBEY3NWVDF0TG5KbFlXUlZhVzUwT0NncE8zSmxkSFZ5YmlCaUt6MVZKakV5Tnl4eUxtUmxZblZuS0NKTlVFVkhORVJsYzJOeWFYQjBiM0pRWVhKelpYSWlMQ0pHYjNWdVpDQWlLeWgxVzNoZGZId2lSR1Z6WTNKcGNIUnZjaUFpSzNncEt5SXNJSE5wZW1VZ0lpdGlLeUlnWVhRZ2NHOXphWFJwYjI0Z0lpdHRMbWRsZEZCdmMybDBhVzl1S0NrcExIVmJlRjAvVXoxdVpYY2dlVnQxVzNoZFhTaGlLVHBUUFc1bGR5QjVMa1JsYzJOeWFYQjBiM0lvWWlrc1V5NXdZWEp6WlNodEtTeFRmU3g1TGtSbGMyTnlhWEIwYjNJOVpuVnVZM1JwYjI0b2JTeGlLWHQwYUdsekxuUmhaejF0TEhSb2FYTXVjMmw2WlQxaUxIUm9hWE11WkdWelkzTTlXMTE5TEhrdVJHVnpZM0pwY0hSdmNpNXdjbTkwYjNSNWNHVXVjR0Z5YzJVOVpuVnVZM1JwYjI0b2JTbDdkR2hwY3k1a1lYUmhQVzB1Y21WaFpGVnBiblE0UVhKeVlYa29kR2hwY3k1emFYcGxLWDBzZVM1RVpYTmpjbWx3ZEc5eUxuQnliM1J2ZEhsd1pTNW1hVzVrUkdWelkzSnBjSFJ2Y2oxbWRXNWpkR2x2YmlodEtYdG1iM0lvZG1GeUlHSTlNRHRpUEhSb2FYTXVaR1Z6WTNNdWJHVnVaM1JvTzJJckt5bHBaaWgwYUdsekxtUmxjMk56VzJKZExuUmhaejA5YlNseVpYUjFjbTRnZEdocGN5NWtaWE5qYzF0aVhUdHlaWFIxY200Z2JuVnNiSDBzZVM1RVpYTmpjbWx3ZEc5eUxuQnliM1J2ZEhsd1pTNXdZWEp6WlZKbGJXRnBibWx1WjBSbGMyTnlhWEIwYjNKelBXWjFibU4wYVc5dUtHMHBlMlp2Y2loMllYSWdZajF0TG5CdmMybDBhVzl1TzIwdWNHOXphWFJwYjI0OFlpdDBhR2x6TG5OcGVtVTdLWHQyWVhJZ2VEMTJMbkJoY25ObFQyNWxSR1Z6WTNKcGNIUnZjaWh0S1R0MGFHbHpMbVJsYzJOekxuQjFjMmdvZUNsOWZTeDVMa1ZUWDBSbGMyTnlhWEIwYjNJOVpuVnVZM1JwYjI0b2JTbDdlUzVFWlhOamNtbHdkRzl5TG1OaGJHd29kR2hwY3l4bExHMHBmU3g1TGtWVFgwUmxjMk55YVhCMGIzSXVjSEp2ZEc5MGVYQmxQVzVsZHlCNUxrUmxjMk55YVhCMGIzSXNlUzVGVTE5RVpYTmpjbWx3ZEc5eUxuQnliM1J2ZEhsd1pTNXdZWEp6WlQxbWRXNWpkR2x2YmlodEtYdHBaaWgwYUdsekxrVlRYMGxFUFcwdWNtVmhaRlZwYm5ReE5pZ3BMSFJvYVhNdVpteGhaM005YlM1eVpXRmtWV2x1ZERnb0tTeDBhR2x6TG5OcGVtVXRQVE1zZEdocGN5NW1iR0ZuY3lZeE1qZy9LSFJvYVhNdVpHVndaVzVrYzA5dVgwVlRYMGxFUFcwdWNtVmhaRlZwYm5ReE5pZ3BMSFJvYVhNdWMybDZaUzA5TWlrNmRHaHBjeTVrWlhCbGJtUnpUMjVmUlZOZlNVUTlNQ3gwYUdsekxtWnNZV2R6SmpZMEtYdDJZWElnWWoxdExuSmxZV1JWYVc1ME9DZ3BPM1JvYVhNdVZWSk1QVzB1Y21WaFpGTjBjbWx1WnloaUtTeDBhR2x6TG5OcGVtVXRQV0lyTVgxbGJITmxJSFJvYVhNdVZWSk1QU0lpTzNSb2FYTXVabXhoWjNNbU16SS9LSFJvYVhNdVQwTlNYMFZUWDBsRVBXMHVjbVZoWkZWcGJuUXhOaWdwTEhSb2FYTXVjMmw2WlMwOU1pazZkR2hwY3k1UFExSmZSVk5mU1VROU1DeDBhR2x6TG5CaGNuTmxVbVZ0WVdsdWFXNW5SR1Z6WTNKcGNIUnZjbk1vYlNsOUxIa3VSVk5mUkdWelkzSnBjSFJ2Y2k1d2NtOTBiM1I1Y0dVdVoyVjBUMVJKUFdaMWJtTjBhVzl1S0cwcGUzWmhjaUJpUFhSb2FYTXVabWx1WkVSbGMyTnlhWEIwYjNJb2RDazdjbVYwZFhKdUlHSS9ZaTV2ZEdrNk1IMHNlUzVGVTE5RVpYTmpjbWx3ZEc5eUxuQnliM1J2ZEhsd1pTNW5aWFJCZFdScGIwTnZibVpwWnoxbWRXNWpkR2x2YmlodEtYdDJZWElnWWoxMGFHbHpMbVpwYm1SRVpYTmpjbWx3ZEc5eUtIUXBPMmxtS0NGaUtYSmxkSFZ5YmlCdWRXeHNPM1poY2lCNFBXSXVabWx1WkVSbGMyTnlhWEIwYjNJb2FTazdhV1lvZUNZbWVDNWtZWFJoS1h0MllYSWdVejBvZUM1a1lYUmhXekJkSmpJME9DaytQak03Y21WMGRYSnVJRk05UFQwek1TWW1lQzVrWVhSaExteGxibWQwYUQ0OU1pWW1LRk05TXpJcktDaDRMbVJoZEdGYk1GMG1OeWs4UERNcEt5Z29lQzVrWVhSaFd6RmRKakl5TkNrK1BqVXBLU3hUZldWc2MyVWdjbVYwZFhKdUlHNTFiR3g5TEhrdVJHVmpiMlJsY2tOdmJtWnBaMFJsYzJOeWFYQjBiM0k5Wm5WdVkzUnBiMjRvYlNsN2VTNUVaWE5qY21sd2RHOXlMbU5oYkd3b2RHaHBjeXgwTEcwcGZTeDVMa1JsWTI5a1pYSkRiMjVtYVdkRVpYTmpjbWx3ZEc5eUxuQnliM1J2ZEhsd1pUMXVaWGNnZVM1RVpYTmpjbWx3ZEc5eUxIa3VSR1ZqYjJSbGNrTnZibVpwWjBSbGMyTnlhWEIwYjNJdWNISnZkRzkwZVhCbExuQmhjbk5sUFdaMWJtTjBhVzl1S0cwcGUzUm9hWE11YjNScFBXMHVjbVZoWkZWcGJuUTRLQ2tzZEdocGN5NXpkSEpsWVcxVWVYQmxQVzB1Y21WaFpGVnBiblE0S0Nrc2RHaHBjeTVpZFdabVpYSlRhWHBsUFcwdWNtVmhaRlZwYm5ReU5DZ3BMSFJvYVhNdWJXRjRRbWwwY21GMFpUMXRMbkpsWVdSVmFXNTBNeklvS1N4MGFHbHpMbUYyWjBKcGRISmhkR1U5YlM1eVpXRmtWV2x1ZERNeUtDa3NkR2hwY3k1emFYcGxMVDB4TXl4MGFHbHpMbkJoY25ObFVtVnRZV2x1YVc1blJHVnpZM0pwY0hSdmNuTW9iU2w5TEhrdVJHVmpiMlJsY2xOd1pXTnBabWxqU1c1bWJ6MW1kVzVqZEdsdmJpaHRLWHQ1TGtSbGMyTnlhWEIwYjNJdVkyRnNiQ2gwYUdsekxHa3NiU2w5TEhrdVJHVmpiMlJsY2xOd1pXTnBabWxqU1c1bWJ5NXdjbTkwYjNSNWNHVTlibVYzSUhrdVJHVnpZM0pwY0hSdmNpeDVMbE5NUTI5dVptbG5SR1Z6WTNKcGNIUnZjajFtZFc1amRHbHZiaWh0S1h0NUxrUmxjMk55YVhCMGIzSXVZMkZzYkNoMGFHbHpMR1lzYlNsOUxIa3VVMHhEYjI1bWFXZEVaWE5qY21sd2RHOXlMbkJ5YjNSdmRIbHdaVDF1WlhjZ2VTNUVaWE5qY21sd2RHOXlMSFJvYVhOOU8yNHVUVkJGUnpSRVpYTmpjbWx3ZEc5eVVHRnljMlZ5UFdnN2RtRnlJRzg5ZTBWU1VsOUpUbFpCVEVsRVgwUkJWRUU2TFRFc1JWSlNYMDVQVkY5RlRrOVZSMGhmUkVGVVFUb3dMRTlMT2pFc1FrRlRTVU5mUWs5WVJWTTZXeUp0WkdGMElpd2lhV1JoZENJc0ltWnlaV1VpTENKemEybHdJaXdpYldWamJ5SXNJbk4wY21zaVhTeEdWVXhNWDBKUFdFVlRPbHNpYUcxb1pDSXNJbTV0YUdRaUxDSnBiMlJ6SWl3aWVHMXNJQ0lzSW1KNGJXd2lMQ0pwY0hKdklpd2liV1Z5WlNKZExFTlBUbFJCU1U1RlVsOUNUMWhGVXpwYld5SnRiMjkySWl4YkluUnlZV3NpTENKd2MzTm9JbDFkTEZzaWRISmhheUpkTEZzaVpXUjBjeUpkTEZzaWJXUnBZU0pkTEZzaWJXbHVaaUpkTEZzaVpHbHVaaUpkTEZzaWMzUmliQ0lzV3lKelozQmtJaXdpYzJKbmNDSmRYU3hiSW0xMlpYZ2lMRnNpZEhKbGVDSmRYU3hiSW0xdmIyWWlMRnNpZEhKaFppSmRYU3hiSW5SeVlXWWlMRnNpZEhKMWJpSXNJbk5uY0dRaUxDSnpZbWR3SWwxZExGc2lkblIwWXlKZExGc2lkSEpsWmlKZExGc2lhWEpsWmlKZExGc2liV1p5WVNJc1d5SjBabkpoSWwxZExGc2liV1ZqYnlKZExGc2lhRzUwYVNKZExGc2lhR2x1WmlKZExGc2ljM1J5YXlKZExGc2ljM1J5WkNKZExGc2ljMmx1WmlKZExGc2ljbWx1WmlKZExGc2ljMk5vYVNKZExGc2lkSEpuY2lKZExGc2lkV1IwWVNJc1d5SnJhVzVrSWwxZExGc2lhWEJ5Y0NJc1d5SnBjRzFoSWwxZExGc2lhWEJqYnlKZFhTeGliM2hEYjJSbGN6cGJYU3htZFd4c1FtOTRRMjlrWlhNNlcxMHNZMjl1ZEdGcGJtVnlRbTk0UTI5a1pYTTZXMTBzYzJGdGNHeGxSVzUwY25sRGIyUmxjenA3ZlN4ellXMXdiR1ZIY205MWNFVnVkSEo1UTI5a1pYTTZXMTBzZEhKaFkydEhjbTkxY0ZSNWNHVnpPbHRkTEZWVlNVUkNiM2hsY3pwN2ZTeFZWVWxFY3pwYlhTeHBibWwwYVdGc2FYcGxPbVoxYm1OMGFXOXVLQ2w3Ynk1R2RXeHNRbTk0TG5CeWIzUnZkSGx3WlQxdVpYY2dieTVDYjNnc2J5NURiMjUwWVdsdVpYSkNiM2d1Y0hKdmRHOTBlWEJsUFc1bGR5QnZMa0p2ZUN4dkxsTmhiWEJzWlVWdWRISjVMbkJ5YjNSdmRIbHdaVDF1WlhjZ2J5NUNiM2dzYnk1VWNtRmphMGR5YjNWd1ZIbHdaVUp2ZUM1d2NtOTBiM1I1Y0dVOWJtVjNJRzh1Um5Wc2JFSnZlQ3h2TGtKQlUwbERYMEpQV0VWVExtWnZja1ZoWTJnb1puVnVZM1JwYjI0b1pTbDdieTVqY21WaGRHVkNiM2hEZEc5eUtHVXBmU2tzYnk1R1ZVeE1YMEpQV0VWVExtWnZja1ZoWTJnb1puVnVZM1JwYjI0b1pTbDdieTVqY21WaGRHVkdkV3hzUW05NFEzUnZjaWhsS1gwcExHOHVRMDlPVkVGSlRrVlNYMEpQV0VWVExtWnZja1ZoWTJnb1puVnVZM1JwYjI0b1pTbDdieTVqY21WaGRHVkRiMjUwWVdsdVpYSkNiM2hEZEc5eUtHVmJNRjBzYm5Wc2JDeGxXekZkS1gwcGZTeENiM2c2Wm5WdVkzUnBiMjRvWlN4MExHa3BlM1JvYVhNdWRIbHdaVDFsTEhSb2FYTXVjMmw2WlQxMExIUm9hWE11ZFhWcFpEMXBmU3hHZFd4c1FtOTRPbVoxYm1OMGFXOXVLR1VzZEN4cEtYdHZMa0p2ZUM1allXeHNLSFJvYVhNc1pTeDBMR2twTEhSb2FYTXVabXhoWjNNOU1DeDBhR2x6TG5abGNuTnBiMjQ5TUgwc1EyOXVkR0ZwYm1WeVFtOTRPbVoxYm1OMGFXOXVLR1VzZEN4cEtYdHZMa0p2ZUM1allXeHNLSFJvYVhNc1pTeDBMR2twTEhSb2FYTXVZbTk0WlhNOVcxMTlMRk5oYlhCc1pVVnVkSEo1T21aMWJtTjBhVzl1S0dVc2RDeHBMR1lwZTI4dVEyOXVkR0ZwYm1WeVFtOTRMbU5oYkd3b2RHaHBjeXhsTEhRcExIUm9hWE11YUdSeVgzTnBlbVU5YVN4MGFHbHpMbk4wWVhKMFBXWjlMRk5oYlhCc1pVZHliM1Z3Ulc1MGNuazZablZ1WTNScGIyNG9aU2w3ZEdocGN5NW5jbTkxY0dsdVoxOTBlWEJsUFdWOUxGUnlZV05yUjNKdmRYQlVlWEJsUW05NE9tWjFibU4wYVc5dUtHVXNkQ2w3Ynk1R2RXeHNRbTk0TG1OaGJHd29kR2hwY3l4bExIUXBmU3hqY21WaGRHVkNiM2hEZEc5eU9tWjFibU4wYVc5dUtHVXNkQ2w3Ynk1aWIzaERiMlJsY3k1d2RYTm9LR1VwTEc5YlpTc2lRbTk0SWwwOVpuVnVZM1JwYjI0b2FTbDdieTVDYjNndVkyRnNiQ2gwYUdsekxHVXNhU2w5TEc5YlpTc2lRbTk0SWwwdWNISnZkRzkwZVhCbFBXNWxkeUJ2TGtKdmVDeDBKaVlvYjF0bEt5SkNiM2dpWFM1d2NtOTBiM1I1Y0dVdWNHRnljMlU5ZENsOUxHTnlaV0YwWlVaMWJHeENiM2hEZEc5eU9tWjFibU4wYVc5dUtHVXNkQ2w3YjF0bEt5SkNiM2dpWFQxbWRXNWpkR2x2YmlocEtYdHZMa1oxYkd4Q2IzZ3VZMkZzYkNoMGFHbHpMR1VzYVNsOUxHOWJaU3NpUW05NElsMHVjSEp2ZEc5MGVYQmxQVzVsZHlCdkxrWjFiR3hDYjNnc2IxdGxLeUpDYjNnaVhTNXdjbTkwYjNSNWNHVXVjR0Z5YzJVOVpuVnVZM1JwYjI0b2FTbDdkR2hwY3k1d1lYSnpaVVoxYkd4SVpXRmtaWElvYVNrc2RDWW1kQzVqWVd4c0tIUm9hWE1zYVNsOWZTeGhaR1JUZFdKQ2IzaEJjbkpoZVhNNlpuVnVZM1JwYjI0b1pTbDdhV1lvWlNsN2RHaHBjeTV6ZFdKQ2IzaE9ZVzFsY3oxbE8yWnZjaWgyWVhJZ2REMWxMbXhsYm1kMGFDeHBQVEE3YVR4ME8ya3JLeWwwYUdselcyVmJhVjBySW5NaVhUMWJYWDE5TEdOeVpXRjBaVU52Ym5SaGFXNWxja0p2ZUVOMGIzSTZablZ1WTNScGIyNG9aU3gwTEdrcGUyOWJaU3NpUW05NElsMDlablZ1WTNScGIyNG9aaWw3Ynk1RGIyNTBZV2x1WlhKQ2IzZ3VZMkZzYkNoMGFHbHpMR1VzWmlrc2J5NWhaR1JUZFdKQ2IzaEJjbkpoZVhNdVkyRnNiQ2gwYUdsekxHa3BmU3h2VzJVcklrSnZlQ0pkTG5CeWIzUnZkSGx3WlQxdVpYY2dieTVEYjI1MFlXbHVaWEpDYjNnc2RDWW1LRzliWlNzaVFtOTRJbDB1Y0hKdmRHOTBlWEJsTG5CaGNuTmxQWFFwZlN4amNtVmhkR1ZOWldScFlWTmhiWEJzWlVWdWRISjVRM1J2Y2pwbWRXNWpkR2x2YmlobExIUXNhU2w3Ynk1ellXMXdiR1ZGYm5SeWVVTnZaR1Z6VzJWZFBWdGRMRzliWlNzaVUyRnRjR3hsUlc1MGNua2lYVDFtZFc1amRHbHZiaWhtTEhVcGUyOHVVMkZ0Y0d4bFJXNTBjbmt1WTJGc2JDaDBhR2x6TEdZc2RTa3NieTVoWkdSVGRXSkNiM2hCY25KaGVYTXVZMkZzYkNoMGFHbHpMR2twZlN4dlcyVXJJbE5oYlhCc1pVVnVkSEo1SWwwdWNISnZkRzkwZVhCbFBXNWxkeUJ2TGxOaGJYQnNaVVZ1ZEhKNUxIUW1KaWh2VzJVcklsTmhiWEJzWlVWdWRISjVJbDB1Y0hKdmRHOTBlWEJsTG5CaGNuTmxQWFFwZlN4amNtVmhkR1ZUWVcxd2JHVkZiblJ5ZVVOMGIzSTZablZ1WTNScGIyNG9aU3gwTEdrc1ppbDdieTV6WVcxd2JHVkZiblJ5ZVVOdlpHVnpXMlZkTG5CMWMyZ29kQ2tzYjF0MEt5SlRZVzF3YkdWRmJuUnllU0pkUFdaMWJtTjBhVzl1S0hVcGUyOWJaU3NpVTJGdGNHeGxSVzUwY25raVhTNWpZV3hzS0hSb2FYTXNkQ3gxS1N4dkxtRmtaRk4xWWtKdmVFRnljbUY1Y3k1allXeHNLSFJvYVhNc1ppbDlMRzliZENzaVUyRnRjR3hsUlc1MGNua2lYUzV3Y205MGIzUjVjR1U5Ym1WM0lHOWJaU3NpVTJGdGNHeGxSVzUwY25raVhTeHBKaVlvYjF0MEt5SlRZVzF3YkdWRmJuUnllU0pkTG5CeWIzUnZkSGx3WlM1d1lYSnpaVDFwS1gwc1kzSmxZWFJsUlc1amNubHdkR1ZrVTJGdGNHeGxSVzUwY25sRGRHOXlPbVoxYm1OMGFXOXVLR1VzZEN4cEtYdHZMbU55WldGMFpWTmhiWEJzWlVWdWRISjVRM1J2Y2k1allXeHNLSFJvYVhNc1pTeDBMR2tzV3lKemFXNW1JbDBwZlN4amNtVmhkR1ZUWVcxd2JHVkhjbTkxY0VOMGIzSTZablZ1WTNScGIyNG9aU3gwS1h0dlcyVXJJbE5oYlhCc1pVZHliM1Z3Ulc1MGNua2lYVDFtZFc1amRHbHZiaWhwS1h0dkxsTmhiWEJzWlVkeWIzVndSVzUwY25rdVkyRnNiQ2gwYUdsekxHVXNhU2w5TEc5YlpTc2lVMkZ0Y0d4bFIzSnZkWEJGYm5SeWVTSmRMbkJ5YjNSdmRIbHdaVDF1WlhjZ2J5NVRZVzF3YkdWSGNtOTFjRVZ1ZEhKNUxIUW1KaWh2VzJVcklsTmhiWEJzWlVkeWIzVndSVzUwY25raVhTNXdjbTkwYjNSNWNHVXVjR0Z5YzJVOWRDbDlMR055WldGMFpWUnlZV05yUjNKdmRYQkRkRzl5T21aMWJtTjBhVzl1S0dVc2RDbDdiMXRsS3lKVWNtRmphMGR5YjNWd1ZIbHdaVUp2ZUNKZFBXWjFibU4wYVc5dUtHa3BlMjh1VkhKaFkydEhjbTkxY0ZSNWNHVkNiM2d1WTJGc2JDaDBhR2x6TEdVc2FTbDlMRzliWlNzaVZISmhZMnRIY205MWNGUjVjR1ZDYjNnaVhTNXdjbTkwYjNSNWNHVTlibVYzSUc4dVZISmhZMnRIY205MWNGUjVjR1ZDYjNnc2RDWW1LRzliWlNzaVZISmhZMnRIY205MWNGUjVjR1ZDYjNnaVhTNXdjbTkwYjNSNWNHVXVjR0Z5YzJVOWRDbDlMR055WldGMFpWVlZTVVJDYjNnNlpuVnVZM1JwYjI0b1pTeDBMR2tzWmlsN2J5NVZWVWxFY3k1d2RYTm9LR1VwTEc4dVZWVkpSRUp2ZUdWelcyVmRQV1oxYm1OMGFXOXVLSFVwZTNRL2J5NUdkV3hzUW05NExtTmhiR3dvZEdocGN5d2lkWFZwWkNJc2RTeGxLVHBwUDI4dVEyOXVkR0ZwYm1WeVFtOTRMbU5oYkd3b2RHaHBjeXdpZFhWcFpDSXNkU3hsS1RwdkxrSnZlQzVqWVd4c0tIUm9hWE1zSW5WMWFXUWlMSFVzWlNsOUxHOHVWVlZKUkVKdmVHVnpXMlZkTG5CeWIzUnZkSGx3WlQxMFAyNWxkeUJ2TGtaMWJHeENiM2c2YVQ5dVpYY2dieTVEYjI1MFlXbHVaWEpDYjNnNmJtVjNJRzh1UW05NExHWW1KaWgwUDI4dVZWVkpSRUp2ZUdWelcyVmRMbkJ5YjNSdmRIbHdaUzV3WVhKelpUMW1kVzVqZEdsdmJpaDFLWHQwYUdsekxuQmhjbk5sUm5Wc2JFaGxZV1JsY2loMUtTeG1KaVptTG1OaGJHd29kR2hwY3l4MUtYMDZieTVWVlVsRVFtOTRaWE5iWlYwdWNISnZkRzkwZVhCbExuQmhjbk5sUFdZcGZYMDdieTVwYm1sMGFXRnNhWHBsS0Nrc2J5NVVTMGhFWDBaTVFVZGZSVTVCUWt4RlJEMHhMRzh1VkV0SVJGOUdURUZIWDBsT1gwMVBWa2xGUFRJc2J5NVVTMGhFWDBaTVFVZGZTVTVmVUZKRlZrbEZWejAwTEc4dVZFWklSRjlHVEVGSFgwSkJVMFZmUkVGVVFWOVBSa1pUUlZROU1TeHZMbFJHU0VSZlJreEJSMTlUUVUxUVRFVmZSRVZUUXoweUxHOHVWRVpJUkY5R1RFRkhYMU5CVFZCTVJWOUVWVkk5T0N4dkxsUkdTRVJmUmt4QlIxOVRRVTFRVEVWZlUwbGFSVDB4Tml4dkxsUkdTRVJmUmt4QlIxOVRRVTFRVEVWZlJreEJSMU05TXpJc2J5NVVSa2hFWDBaTVFVZGZSRlZTWDBWTlVGUlpQVFkxTlRNMkxHOHVWRVpJUkY5R1RFRkhYMFJGUmtGVlRGUmZRa0ZUUlY5SlUxOU5UMDlHUFRFek1UQTNNaXh2TGxSU1ZVNWZSa3hCUjFOZlJFRlVRVjlQUmtaVFJWUTlNU3h2TGxSU1ZVNWZSa3hCUjFOZlJrbFNVMVJmUmt4QlJ6MDBMRzh1VkZKVlRsOUdURUZIVTE5RVZWSkJWRWxQVGoweU5UWXNieTVVVWxWT1gwWk1RVWRUWDFOSldrVTlOVEV5TEc4dVZGSlZUbDlHVEVGSFUxOUdURUZIVXoweE1ESTBMRzh1VkZKVlRsOUdURUZIVTE5RFZGTmZUMFpHVTBWVVBUSXdORGdzYnk1Q2IzZ3VjSEp2ZEc5MGVYQmxMbUZrWkQxbWRXNWpkR2x2YmlobEtYdHlaWFIxY200Z2RHaHBjeTVoWkdSQ2IzZ29ibVYzSUc5YlpTc2lRbTk0SWwwcGZTeHZMa0p2ZUM1d2NtOTBiM1I1Y0dVdVlXUmtRbTk0UFdaMWJtTjBhVzl1S0dVcGUzSmxkSFZ5YmlCMGFHbHpMbUp2ZUdWekxuQjFjMmdvWlNrc2RHaHBjMXRsTG5SNWNHVXJJbk1pWFQ5MGFHbHpXMlV1ZEhsd1pTc2ljeUpkTG5CMWMyZ29aU2s2ZEdocGMxdGxMblI1Y0dWZFBXVXNaWDBzYnk1Q2IzZ3VjSEp2ZEc5MGVYQmxMbk5sZEQxbWRXNWpkR2x2YmlobExIUXBlM0psZEhWeWJpQjBhR2x6VzJWZFBYUXNkR2hwYzMwc2J5NUNiM2d1Y0hKdmRHOTBlWEJsTG1Ga1pFVnVkSEo1UFdaMWJtTjBhVzl1S0dVc2RDbDdkbUZ5SUdrOWRIeDhJbVZ1ZEhKcFpYTWlPM0psZEhWeWJpQjBhR2x6VzJsZGZId29kR2hwYzF0cFhUMWJYU2tzZEdocGMxdHBYUzV3ZFhOb0tHVXBMSFJvYVhOOUxHNHVRbTk0VUdGeWMyVnlQVzhzYnk1d1lYSnpaVlZWU1VROVpuVnVZM1JwYjI0b1pTbDdjbVYwZFhKdUlHOHVjR0Z5YzJWSVpYZ3hOaWhsS1gwc2J5NXdZWEp6WlVobGVERTJQV1oxYm1OMGFXOXVLR1VwZTJadmNpaDJZWElnZEQwaUlpeHBQVEE3YVR3eE5qdHBLeXNwZTNaaGNpQm1QV1V1Y21WaFpGVnBiblE0S0NrdWRHOVRkSEpwYm1jb01UWXBPM1FyUFdZdWJHVnVaM1JvUFQwOU1UOGlNQ0lyWmpwbWZYSmxkSFZ5YmlCMGZTeHZMbkJoY25ObFQyNWxRbTk0UFdaMWJtTjBhVzl1S0dVc2RDeHBLWHQyWVhJZ1ppeDFQV1V1WjJWMFVHOXphWFJwYjI0b0tTeDJQVEFzZVN4dE8ybG1LR1V1WjJWMFJXNWtVRzl6YVhScGIyNG9LUzExUERncGNtVjBkWEp1SUhJdVpHVmlkV2NvSWtKdmVGQmhjbk5sY2lJc0lrNXZkQ0JsYm05MVoyZ2daR0YwWVNCcGJpQnpkSEpsWVcwZ2RHOGdjR0Z5YzJVZ2RHaGxJSFI1Y0dVZ1lXNWtJSE5wZW1VZ2IyWWdkR2hsSUdKdmVDSXBMSHRqYjJSbE9tOHVSVkpTWDA1UFZGOUZUazlWUjBoZlJFRlVRWDA3YVdZb2FTWW1hVHc0S1hKbGRIVnliaUJ5TG1SbFluVm5LQ0pDYjNoUVlYSnpaWElpTENKT2IzUWdaVzV2ZFdkb0lHSjVkR1Z6SUd4bFpuUWdhVzRnZEdobElIQmhjbVZ1ZENCaWIzZ2dkRzhnY0dGeWMyVWdZU0J1WlhjZ1ltOTRJaWtzZTJOdlpHVTZieTVGVWxKZlRrOVVYMFZPVDFWSFNGOUVRVlJCZlR0MllYSWdZajFsTG5KbFlXUlZhVzUwTXpJb0tTeDRQV1V1Y21WaFpGTjBjbWx1WnlnMEtTeFRQWGc3YVdZb2NpNWtaV0oxWnlnaVFtOTRVR0Z5YzJWeUlpd2lSbTkxYm1RZ1ltOTRJRzltSUhSNWNHVWdKeUlyZUNzaUp5QmhibVFnYzJsNlpTQWlLMklySWlCaGRDQndiM05wZEdsdmJpQWlLM1VwTEhZOU9DeDRQVDBpZFhWcFpDSXBlMmxtS0dVdVoyVjBSVzVrVUc5emFYUnBiMjRvS1MxbExtZGxkRkJ2YzJsMGFXOXVLQ2s4TVRaOGZHa3Rkand4TmlseVpYUjFjbTRnWlM1elpXVnJLSFVwTEhJdVpHVmlkV2NvSWtKdmVGQmhjbk5sY2lJc0lrNXZkQ0JsYm05MVoyZ2dZbmwwWlhNZ2JHVm1kQ0JwYmlCMGFHVWdjR0Z5Wlc1MElHSnZlQ0IwYnlCd1lYSnpaU0JoSUZWVlNVUWdZbTk0SWlrc2UyTnZaR1U2Ynk1RlVsSmZUazlVWDBWT1QxVkhTRjlFUVZSQmZUdHRQVzh1Y0dGeWMyVlZWVWxFS0dVcExIWXJQVEUyTEZNOWJYMXBaaWhpUFQweEtYdHBaaWhsTG1kbGRFVnVaRkJ2YzJsMGFXOXVLQ2t0WlM1blpYUlFiM05wZEdsdmJpZ3BQRGg4ZkdrbUpta3Rkanc0S1hKbGRIVnliaUJsTG5ObFpXc29kU2tzY2k1M1lYSnVLQ0pDYjNoUVlYSnpaWElpTENkT2IzUWdaVzV2ZFdkb0lHUmhkR0VnYVc0Z2MzUnlaV0Z0SUhSdklIQmhjbk5sSUhSb1pTQmxlSFJsYm1SbFpDQnphWHBsSUc5bUlIUm9aU0FpSnl0NEt5Y2lJR0p2ZUNjcExIdGpiMlJsT204dVJWSlNYMDVQVkY5RlRrOVZSMGhmUkVGVVFYMDdZajFsTG5KbFlXUlZhVzUwTmpRb0tTeDJLejA0ZldWc2MyVWdhV1lvWWowOVBUQXBlMmxtS0drcFlqMXBPMlZzYzJVZ2FXWW9lQ0U5UFNKdFpHRjBJaWx5WlhSMWNtNGdjaTVsY25KdmNpZ2lRbTk0VUdGeWMyVnlJaXdpVlc1c2FXMXBkR1ZrSUdKdmVDQnphWHBsSUc1dmRDQnpkWEJ3YjNKMFpXUWdabTl5SUhSNWNHVTZJQ2NpSzNncklpY2lLU3htUFc1bGR5QnZMa0p2ZUNoNExHSXBMSHRqYjJSbE9tOHVUMHNzWW05NE9tWXNjMmw2WlRwbUxuTnBlbVY5ZlhKbGRIVnliaUJpSVQwOU1DWW1ZangyUHloeUxtVnljbTl5S0NKQ2IzaFFZWEp6WlhJaUxDSkNiM2dnYjJZZ2RIbHdaU0FpSzNncklpQm9ZWE1nWVc0Z2FXNTJZV3hwWkNCemFYcGxJQ0lyWWlzaUlDaDBiMjhnYzIxaGJHd2dkRzhnWW1VZ1lTQmliM2dwSWlrc2UyTnZaR1U2Ynk1RlVsSmZUazlVWDBWT1QxVkhTRjlFUVZSQkxIUjVjR1U2ZUN4emFYcGxPbUlzYUdSeVgzTnBlbVU2ZGl4emRHRnlkRHAxZlNrNllpRTlQVEFtSm1rbUptSSthVDhvY2k1bGNuSnZjaWdpUW05NFVHRnljMlZ5SWl3aVFtOTRJRzltSUhSNWNHVWdKeUlyZUNzaUp5Qm9ZWE1nWVNCemFYcGxJQ0lyWWlzaUlHZHlaV0YwWlhJZ2RHaGhiaUJwZEhNZ1kyOXVkR0ZwYm1WeUlITnBlbVVnSWl0cEtTeDdZMjlrWlRwdkxrVlNVbDlPVDFSZlJVNVBWVWRJWDBSQlZFRXNkSGx3WlRwNExITnBlbVU2WWl4b1pISmZjMmw2WlRwMkxITjBZWEowT25WOUtUcGlJVDA5TUNZbWRTdGlQbVV1WjJWMFJXNWtVRzl6YVhScGIyNG9LVDhvWlM1elpXVnJLSFVwTEhJdWFXNW1ieWdpUW05NFVHRnljMlZ5SWl3aVRtOTBJR1Z1YjNWbmFDQmtZWFJoSUdsdUlITjBjbVZoYlNCMGJ5QndZWEp6WlNCMGFHVWdaVzUwYVhKbElDY2lLM2dySWljZ1ltOTRJaWtzZTJOdlpHVTZieTVGVWxKZlRrOVVYMFZPVDFWSFNGOUVRVlJCTEhSNWNHVTZlQ3h6YVhwbE9tSXNhR1J5WDNOcGVtVTZkaXh6ZEdGeWREcDFmU2s2ZEQ5N1kyOWtaVHB2TGs5TExIUjVjR1U2ZUN4emFYcGxPbUlzYUdSeVgzTnBlbVU2ZGl4emRHRnlkRHAxZlRvb2IxdDRLeUpDYjNnaVhUOW1QVzVsZHlCdlczZ3JJa0p2ZUNKZEtHSXBPbmdoUFQwaWRYVnBaQ0kvS0hJdWQyRnliaWdpUW05NFVHRnljMlZ5SWl3aVZXNXJibTkzYmlCaWIzZ2dkSGx3WlRvZ0p5SXJlQ3NpSnlJcExHWTlibVYzSUc4dVFtOTRLSGdzWWlrc1ppNW9ZWE5mZFc1d1lYSnpaV1JmWkdGMFlUMGhNQ2s2Ynk1VlZVbEVRbTk0WlhOYmJWMC9aajF1WlhjZ2J5NVZWVWxFUW05NFpYTmJiVjBvWWlrNktISXVkMkZ5YmlnaVFtOTRVR0Z5YzJWeUlpd2lWVzVyYm05M2JpQjFkV2xrSUhSNWNHVTZJQ2NpSzIwcklpY2lLU3htUFc1bGR5QnZMa0p2ZUNoNExHSXBMR1l1ZFhWcFpEMXRMR1l1YUdGelgzVnVjR0Z5YzJWa1gyUmhkR0U5SVRBcExHWXVhR1J5WDNOcGVtVTlkaXhtTG5OMFlYSjBQWFVzWmk1M2NtbDBaVDA5UFc4dVFtOTRMbkJ5YjNSdmRIbHdaUzUzY21sMFpTWW1aaTUwZVhCbElUMDlJbTFrWVhRaUppWW9jaTVwYm1adktDSkNiM2hRWVhKelpYSWlMQ0luSWl0VEt5SW5JR0p2ZUNCM2NtbDBhVzVuSUc1dmRDQjVaWFFnYVcxd2JHVnRaVzUwWldRc0lHdGxaWEJwYm1jZ2RXNXdZWEp6WldRZ1pHRjBZU0JwYmlCdFpXMXZjbmtnWm05eUlHeGhkR1Z5SUhkeWFYUmxJaWtzWmk1d1lYSnpaVVJoZEdGQmJtUlNaWGRwYm1Rb1pTa3BMR1l1Y0dGeWMyVW9aU2tzZVQxbExtZGxkRkJ2YzJsMGFXOXVLQ2t0S0dZdWMzUmhjblFyWmk1emFYcGxLU3g1UERBL0tISXVkMkZ5YmlnaVFtOTRVR0Z5YzJWeUlpd2lVR0Z5YzJsdVp5QnZaaUJpYjNnZ0p5SXJVeXNpSnlCa2FXUWdibTkwSUhKbFlXUWdkR2hsSUdWdWRHbHlaU0JwYm1ScFkyRjBaV1FnWW05NElHUmhkR0VnYzJsNlpTQW9iV2x6YzJsdVp5QWlLeTE1S3lJZ1lubDBaWE1wTENCelpXVnJhVzVuSUdadmNuZGhjbVFpS1N4bExuTmxaV3NvWmk1emRHRnlkQ3RtTG5OcGVtVXBLVHA1UGpBbUppaHlMbVZ5Y205eUtDSkNiM2hRWVhKelpYSWlMQ0pRWVhKemFXNW5JRzltSUdKdmVDQW5JaXRUS3lJbklISmxZV1FnSWl0NUt5SWdiVzl5WlNCaWVYUmxjeUIwYUdGdUlIUm9aU0JwYm1ScFkyRjBaV1FnWW05NElHUmhkR0VnYzJsNlpTd2djMlZsYTJsdVp5QmlZV05yZDJGeVpITWlLU3htTG5OcGVtVWhQVDB3SmlabExuTmxaV3NvWmk1emRHRnlkQ3RtTG5OcGVtVXBLU3g3WTI5a1pUcHZMazlMTEdKdmVEcG1MSE5wZW1VNlppNXphWHBsZlNsOUxHOHVRbTk0TG5CeWIzUnZkSGx3WlM1d1lYSnpaVDFtZFc1amRHbHZiaWhsS1h0MGFHbHpMblI1Y0dVaFBTSnRaR0YwSWo5MGFHbHpMbVJoZEdFOVpTNXlaV0ZrVldsdWREaEJjbkpoZVNoMGFHbHpMbk5wZW1VdGRHaHBjeTVvWkhKZmMybDZaU2s2ZEdocGN5NXphWHBsUFQwOU1EOWxMbk5sWldzb1pTNW5aWFJGYm1SUWIzTnBkR2x2YmlncEtUcGxMbk5sWldzb2RHaHBjeTV6ZEdGeWRDdDBhR2x6TG5OcGVtVXBmU3h2TGtKdmVDNXdjbTkwYjNSNWNHVXVjR0Z5YzJWRVlYUmhRVzVrVW1WM2FXNWtQV1oxYm1OMGFXOXVLR1VwZTNSb2FYTXVaR0YwWVQxbExuSmxZV1JWYVc1ME9FRnljbUY1S0hSb2FYTXVjMmw2WlMxMGFHbHpMbWhrY2w5emFYcGxLU3hsTG5CdmMybDBhVzl1TFQxMGFHbHpMbk5wZW1VdGRHaHBjeTVvWkhKZmMybDZaWDBzYnk1R2RXeHNRbTk0TG5CeWIzUnZkSGx3WlM1d1lYSnpaVVJoZEdGQmJtUlNaWGRwYm1ROVpuVnVZM1JwYjI0b1pTbDdkR2hwY3k1d1lYSnpaVVoxYkd4SVpXRmtaWElvWlNrc2RHaHBjeTVrWVhSaFBXVXVjbVZoWkZWcGJuUTRRWEp5WVhrb2RHaHBjeTV6YVhwbExYUm9hWE11YUdSeVgzTnBlbVVwTEhSb2FYTXVhR1J5WDNOcGVtVXRQVFFzWlM1d2IzTnBkR2x2YmkwOWRHaHBjeTV6YVhwbExYUm9hWE11YUdSeVgzTnBlbVY5TEc4dVJuVnNiRUp2ZUM1d2NtOTBiM1I1Y0dVdWNHRnljMlZHZFd4c1NHVmhaR1Z5UFdaMWJtTjBhVzl1S0dVcGUzUm9hWE11ZG1WeWMybHZiajFsTG5KbFlXUlZhVzUwT0NncExIUm9hWE11Wm14aFozTTlaUzV5WldGa1ZXbHVkREkwS0Nrc2RHaHBjeTVvWkhKZmMybDZaU3M5Tkgwc2J5NUdkV3hzUW05NExuQnliM1J2ZEhsd1pTNXdZWEp6WlQxbWRXNWpkR2x2YmlobEtYdDBhR2x6TG5CaGNuTmxSblZzYkVobFlXUmxjaWhsS1N4MGFHbHpMbVJoZEdFOVpTNXlaV0ZrVldsdWREaEJjbkpoZVNoMGFHbHpMbk5wZW1VdGRHaHBjeTVvWkhKZmMybDZaU2w5TEc4dVEyOXVkR0ZwYm1WeVFtOTRMbkJ5YjNSdmRIbHdaUzV3WVhKelpUMW1kVzVqZEdsdmJpaGxLWHRtYjNJb2RtRnlJSFFzYVR0bExtZGxkRkJ2YzJsMGFXOXVLQ2s4ZEdocGN5NXpkR0Z5ZEN0MGFHbHpMbk5wZW1VN0tXbG1LSFE5Ynk1d1lYSnpaVTl1WlVKdmVDaGxMQ0V4TEhSb2FYTXVjMmw2WlMwb1pTNW5aWFJRYjNOcGRHbHZiaWdwTFhSb2FYTXVjM1JoY25RcEtTeDBMbU52WkdVOVBUMXZMazlMS1dsbUtHazlkQzVpYjNnc2RHaHBjeTVpYjNobGN5NXdkWE5vS0drcExIUm9hWE11YzNWaVFtOTRUbUZ0WlhNbUpuUm9hWE11YzNWaVFtOTRUbUZ0WlhNdWFXNWtaWGhQWmlocExuUjVjR1VwSVQwdE1TbDBhR2x6VzNSb2FYTXVjM1ZpUW05NFRtRnRaWE5iZEdocGN5NXpkV0pDYjNoT1lXMWxjeTVwYm1SbGVFOW1LR2t1ZEhsd1pTbGRLeUp6SWwwdWNIVnphQ2hwS1R0bGJITmxlM1poY2lCbVBXa3VkSGx3WlNFOVBTSjFkV2xrSWo5cExuUjVjR1U2YVM1MWRXbGtPM1JvYVhOYlpsMC9jaTUzWVhKdUtDSkNiM2dnYjJZZ2RIbHdaU0FpSzJZcklpQmhiSEpsWVdSNUlITjBiM0psWkNCcGJpQm1hV1ZzWkNCdlppQjBhR2x6SUhSNWNHVWlLVHAwYUdselcyWmRQV2w5Wld4elpTQnlaWFIxY201OUxHOHVRbTk0TG5CeWIzUnZkSGx3WlM1d1lYSnpaVXhoYm1kMVlXZGxQV1oxYm1OMGFXOXVLR1VwZTNSb2FYTXViR0Z1WjNWaFoyVTlaUzV5WldGa1ZXbHVkREUyS0NrN2RtRnlJSFE5VzEwN2RGc3dYVDEwYUdsekxteGhibWQxWVdkbFBqNHhNQ1l6TVN4MFd6RmRQWFJvYVhNdWJHRnVaM1ZoWjJVK1BqVW1NekVzZEZzeVhUMTBhR2x6TG14aGJtZDFZV2RsSmpNeExIUm9hWE11YkdGdVozVmhaMlZUZEhKcGJtYzlVM1J5YVc1bkxtWnliMjFEYUdGeVEyOWtaU2gwV3pCZEt6azJMSFJiTVYwck9UWXNkRnN5WFNzNU5pbDlMRzh1VTBGTlVFeEZYMFZPVkZKWlgxUlpVRVZmVmtsVFZVRk1QU0pXYVhOMVlXd2lMRzh1VTBGTlVFeEZYMFZPVkZKWlgxUlpVRVZmUVZWRVNVODlJa0YxWkdsdklpeHZMbE5CVFZCTVJWOUZUbFJTV1Y5VVdWQkZYMGhKVGxROUlraHBiblFpTEc4dVUwRk5VRXhGWDBWT1ZGSlpYMVJaVUVWZlRVVlVRVVJCVkVFOUlrMWxkR0ZrWVhSaElpeHZMbE5CVFZCTVJWOUZUbFJTV1Y5VVdWQkZYMU5WUWxSSlZFeEZQU0pUZFdKMGFYUnNaU0lzYnk1VFFVMVFURVZmUlU1VVVsbGZWRmxRUlY5VFdWTlVSVTA5SWxONWMzUmxiU0lzYnk1VFFVMVFURVZmUlU1VVVsbGZWRmxRUlY5VVJWaFVQU0pVWlhoMElpeHZMbE5oYlhCc1pVVnVkSEo1TG5CeWIzUnZkSGx3WlM1d1lYSnpaVWhsWVdSbGNqMW1kVzVqZEdsdmJpaGxLWHRsTG5KbFlXUlZhVzUwT0VGeWNtRjVLRFlwTEhSb2FYTXVaR0YwWVY5eVpXWmxjbVZ1WTJWZmFXNWtaWGc5WlM1eVpXRmtWV2x1ZERFMktDa3NkR2hwY3k1b1pISmZjMmw2WlNzOU9IMHNieTVUWVcxd2JHVkZiblJ5ZVM1d2NtOTBiM1I1Y0dVdWNHRnljMlU5Wm5WdVkzUnBiMjRvWlNsN2RHaHBjeTV3WVhKelpVaGxZV1JsY2lobEtTeDBhR2x6TG1SaGRHRTlaUzV5WldGa1ZXbHVkRGhCY25KaGVTaDBhR2x6TG5OcGVtVXRkR2hwY3k1b1pISmZjMmw2WlNsOUxHOHVVMkZ0Y0d4bFJXNTBjbmt1Y0hKdmRHOTBlWEJsTG5CaGNuTmxSR0YwWVVGdVpGSmxkMmx1WkQxbWRXNWpkR2x2YmlobEtYdDBhR2x6TG5CaGNuTmxTR1ZoWkdWeUtHVXBMSFJvYVhNdVpHRjBZVDFsTG5KbFlXUlZhVzUwT0VGeWNtRjVLSFJvYVhNdWMybDZaUzEwYUdsekxtaGtjbDl6YVhwbEtTeDBhR2x6TG1oa2NsOXphWHBsTFQwNExHVXVjRzl6YVhScGIyNHRQWFJvYVhNdWMybDZaUzEwYUdsekxtaGtjbDl6YVhwbGZTeHZMbE5oYlhCc1pVVnVkSEo1TG5CeWIzUnZkSGx3WlM1d1lYSnpaVVp2YjNSbGNqMW1kVzVqZEdsdmJpaGxLWHR2TGtOdmJuUmhhVzVsY2tKdmVDNXdjbTkwYjNSNWNHVXVjR0Z5YzJVdVkyRnNiQ2gwYUdsekxHVXBmU3h2TG1OeVpXRjBaVTFsWkdsaFUyRnRjR3hsUlc1MGNubERkRzl5S0c4dVUwRk5VRXhGWDBWT1ZGSlpYMVJaVUVWZlNFbE9WQ2tzYnk1amNtVmhkR1ZOWldScFlWTmhiWEJzWlVWdWRISjVRM1J2Y2lodkxsTkJUVkJNUlY5RlRsUlNXVjlVV1ZCRlgwMUZWRUZFUVZSQktTeHZMbU55WldGMFpVMWxaR2xoVTJGdGNHeGxSVzUwY25sRGRHOXlLRzh1VTBGTlVFeEZYMFZPVkZKWlgxUlpVRVZmVTFWQ1ZFbFVURVVwTEc4dVkzSmxZWFJsVFdWa2FXRlRZVzF3YkdWRmJuUnllVU4wYjNJb2J5NVRRVTFRVEVWZlJVNVVVbGxmVkZsUVJWOVRXVk5VUlUwcExHOHVZM0psWVhSbFRXVmthV0ZUWVcxd2JHVkZiblJ5ZVVOMGIzSW9ieTVUUVUxUVRFVmZSVTVVVWxsZlZGbFFSVjlVUlZoVUtTeHZMbU55WldGMFpVMWxaR2xoVTJGdGNHeGxSVzUwY25sRGRHOXlLRzh1VTBGTlVFeEZYMFZPVkZKWlgxUlpVRVZmVmtsVFZVRk1MR1oxYm1OMGFXOXVLR1VwZTNaaGNpQjBPM1JvYVhNdWNHRnljMlZJWldGa1pYSW9aU2tzWlM1eVpXRmtWV2x1ZERFMktDa3NaUzV5WldGa1ZXbHVkREUyS0Nrc1pTNXlaV0ZrVldsdWRETXlRWEp5WVhrb015a3NkR2hwY3k1M2FXUjBhRDFsTG5KbFlXUlZhVzUwTVRZb0tTeDBhR2x6TG1obGFXZG9kRDFsTG5KbFlXUlZhVzUwTVRZb0tTeDBhR2x6TG1odmNtbDZjbVZ6YjJ4MWRHbHZiajFsTG5KbFlXUlZhVzUwTXpJb0tTeDBhR2x6TG5abGNuUnlaWE52YkhWMGFXOXVQV1V1Y21WaFpGVnBiblF6TWlncExHVXVjbVZoWkZWcGJuUXpNaWdwTEhSb2FYTXVabkpoYldWZlkyOTFiblE5WlM1eVpXRmtWV2x1ZERFMktDa3NkRDFOWVhSb0xtMXBiaWd6TVN4bExuSmxZV1JWYVc1ME9DZ3BLU3gwYUdsekxtTnZiWEJ5WlhOemIzSnVZVzFsUFdVdWNtVmhaRk4wY21sdVp5aDBLU3gwUERNeEppWmxMbkpsWVdSVGRISnBibWNvTXpFdGRDa3NkR2hwY3k1a1pYQjBhRDFsTG5KbFlXUlZhVzUwTVRZb0tTeGxMbkpsWVdSVmFXNTBNVFlvS1N4MGFHbHpMbkJoY25ObFJtOXZkR1Z5S0dVcGZTa3NieTVqY21WaGRHVk5aV1JwWVZOaGJYQnNaVVZ1ZEhKNVEzUnZjaWh2TGxOQlRWQk1SVjlGVGxSU1dWOVVXVkJGWDBGVlJFbFBMR1oxYm1OMGFXOXVLR1VwZTNSb2FYTXVjR0Z5YzJWSVpXRmtaWElvWlNrc1pTNXlaV0ZrVldsdWRETXlRWEp5WVhrb01pa3NkR2hwY3k1amFHRnVibVZzWDJOdmRXNTBQV1V1Y21WaFpGVnBiblF4TmlncExIUm9hWE11YzJGdGNHeGxjMmw2WlQxbExuSmxZV1JWYVc1ME1UWW9LU3hsTG5KbFlXUlZhVzUwTVRZb0tTeGxMbkpsWVdSVmFXNTBNVFlvS1N4MGFHbHpMbk5oYlhCc1pYSmhkR1U5WlM1eVpXRmtWV2x1ZERNeUtDa3ZOalUxTXpZc2RHaHBjeTV3WVhKelpVWnZiM1JsY2lobEtYMHBMRzh1WTNKbFlYUmxVMkZ0Y0d4bFJXNTBjbmxEZEc5eUtHOHVVMEZOVUV4RlgwVk9WRkpaWDFSWlVFVmZWa2xUVlVGTUxDSmhkbU14SWlrc2J5NWpjbVZoZEdWVFlXMXdiR1ZGYm5SeWVVTjBiM0lvYnk1VFFVMVFURVZmUlU1VVVsbGZWRmxRUlY5V1NWTlZRVXdzSW1GMll6SWlLU3h2TG1OeVpXRjBaVk5oYlhCc1pVVnVkSEo1UTNSdmNpaHZMbE5CVFZCTVJWOUZUbFJTV1Y5VVdWQkZYMVpKVTFWQlRDd2lZWFpqTXlJcExHOHVZM0psWVhSbFUyRnRjR3hsUlc1MGNubERkRzl5S0c4dVUwRk5VRXhGWDBWT1ZGSlpYMVJaVUVWZlZrbFRWVUZNTENKaGRtTTBJaWtzYnk1amNtVmhkR1ZUWVcxd2JHVkZiblJ5ZVVOMGIzSW9ieTVUUVUxUVRFVmZSVTVVVWxsZlZGbFFSVjlXU1ZOVlFVd3NJbUYyTURFaUtTeHZMbU55WldGMFpWTmhiWEJzWlVWdWRISjVRM1J2Y2lodkxsTkJUVkJNUlY5RlRsUlNXVjlVV1ZCRlgxWkpVMVZCVEN3aWFIWmpNU0lwTEc4dVkzSmxZWFJsVTJGdGNHeGxSVzUwY25sRGRHOXlLRzh1VTBGTlVFeEZYMFZPVkZKWlgxUlpVRVZmVmtsVFZVRk1MQ0pvWlhZeElpa3NieTVqY21WaGRHVlRZVzF3YkdWRmJuUnllVU4wYjNJb2J5NVRRVTFRVEVWZlJVNVVVbGxmVkZsUVJWOVdTVk5WUVV3c0luWjJZekVpS1N4dkxtTnlaV0YwWlZOaGJYQnNaVVZ1ZEhKNVEzUnZjaWh2TGxOQlRWQk1SVjlGVGxSU1dWOVVXVkJGWDFaSlUxVkJUQ3dpZG5acE1TSXBMRzh1WTNKbFlYUmxVMkZ0Y0d4bFJXNTBjbmxEZEc5eUtHOHVVMEZOVUV4RlgwVk9WRkpaWDFSWlVFVmZWa2xUVlVGTUxDSjJkbk14SWlrc2J5NWpjbVZoZEdWVFlXMXdiR1ZGYm5SeWVVTjBiM0lvYnk1VFFVMVFURVZmUlU1VVVsbGZWRmxRUlY5V1NWTlZRVXdzSW5aMlkwNGlLU3h2TG1OeVpXRjBaVk5oYlhCc1pVVnVkSEo1UTNSdmNpaHZMbE5CVFZCTVJWOUZUbFJTV1Y5VVdWQkZYMVpKVTFWQlRDd2lkbkF3T0NJcExHOHVZM0psWVhSbFUyRnRjR3hsUlc1MGNubERkRzl5S0c4dVUwRk5VRXhGWDBWT1ZGSlpYMVJaVUVWZlZrbFRWVUZNTENKMmNEQTVJaWtzYnk1amNtVmhkR1ZUWVcxd2JHVkZiblJ5ZVVOMGIzSW9ieTVUUVUxUVRFVmZSVTVVVWxsZlZGbFFSVjlCVlVSSlR5d2liWEEwWVNJcExHOHVZM0psWVhSbFUyRnRjR3hsUlc1MGNubERkRzl5S0c4dVUwRk5VRXhGWDBWT1ZGSlpYMVJaVUVWZlFWVkVTVThzSW1GakxUTWlLU3h2TG1OeVpXRjBaVk5oYlhCc1pVVnVkSEo1UTNSdmNpaHZMbE5CVFZCTVJWOUZUbFJTV1Y5VVdWQkZYMEZWUkVsUExDSmxZeTB6SWlrc2J5NWpjbVZoZEdWVFlXMXdiR1ZGYm5SeWVVTjBiM0lvYnk1VFFVMVFURVZmUlU1VVVsbGZWRmxRUlY5QlZVUkpUeXdpVDNCMWN5SXBMRzh1WTNKbFlYUmxSVzVqY25sd2RHVmtVMkZ0Y0d4bFJXNTBjbmxEZEc5eUtHOHVVMEZOVUV4RlgwVk9WRkpaWDFSWlVFVmZWa2xUVlVGTUxDSmxibU4ySWlrc2J5NWpjbVZoZEdWRmJtTnllWEIwWldSVFlXMXdiR1ZGYm5SeWVVTjBiM0lvYnk1VFFVMVFURVZmUlU1VVVsbGZWRmxRUlY5QlZVUkpUeXdpWlc1allTSXBMRzh1WTNKbFlYUmxSVzVqY25sd2RHVmtVMkZ0Y0d4bFJXNTBjbmxEZEc5eUtHOHVVMEZOVUV4RlgwVk9WRkpaWDFSWlVFVmZVMVZDVkVsVVRFVXNJbVZ1WTNVaUtTeHZMbU55WldGMFpVVnVZM0o1Y0hSbFpGTmhiWEJzWlVWdWRISjVRM1J2Y2lodkxsTkJUVkJNUlY5RlRsUlNXVjlVV1ZCRlgxTlpVMVJGVFN3aVpXNWpjeUlwTEc4dVkzSmxZWFJsUlc1amNubHdkR1ZrVTJGdGNHeGxSVzUwY25sRGRHOXlLRzh1VTBGTlVFeEZYMFZPVkZKWlgxUlpVRVZmVkVWWVZDd2laVzVqZENJcExHOHVZM0psWVhSbFJXNWpjbmx3ZEdWa1UyRnRjR3hsUlc1MGNubERkRzl5S0c4dVUwRk5VRXhGWDBWT1ZGSlpYMVJaVUVWZlRVVlVRVVJCVkVFc0ltVnVZMjBpS1N4dkxtTnlaV0YwWlVKdmVFTjBiM0lvSW1FeGJIZ2lMR1oxYm1OMGFXOXVLR1VwZTNaaGNpQjBQV1V1Y21WaFpGVnBiblE0S0NrbU1TeHBQU2dvZENZeEtTc3hLU294Tmp0MGFHbHpMbXhoZVdWeVgzTnBlbVU5VzEwN1ptOXlLSFpoY2lCbVBUQTdaand6TzJZckt5bHBQVDB4Tmo5MGFHbHpMbXhoZVdWeVgzTnBlbVZiWmwwOVpTNXlaV0ZrVldsdWRERTJLQ2s2ZEdocGN5NXNZWGxsY2w5emFYcGxXMlpkUFdVdWNtVmhaRlZwYm5Rek1pZ3BmU2tzYnk1amNtVmhkR1ZDYjNoRGRHOXlLQ0poTVc5d0lpeG1kVzVqZEdsdmJpaGxLWHQwYUdsekxtOXdYMmx1WkdWNFBXVXVjbVZoWkZWcGJuUTRLQ2w5S1N4dkxtTnlaV0YwWlVaMWJHeENiM2hEZEc5eUtDSmhkWGhESWl4bWRXNWpkR2x2YmlobEtYdDBhR2x6TG1GMWVGOTBlWEJsUFdVdWNtVmhaRU5UZEhKcGJtY29LVHQyWVhJZ2REMTBhR2x6TG5OcGVtVXRkR2hwY3k1b1pISmZjMmw2WlMwb2RHaHBjeTVoZFhoZmRIbHdaUzVzWlc1bmRHZ3JNU2s3ZEdocGN5NWhkWGhmYzNWaWRIbHdaVDFsTG5KbFlXUlZhVzUwT0VGeWNtRjVLSFFwZlNrc2J5NWpjbVZoZEdWQ2IzaERkRzl5S0NKaGRqRkRJaXhtZFc1amRHbHZiaWhsS1h0MllYSWdkRDFsTG5KbFlXUlZhVzUwT0NncE8ybG1LSFErUGpjbUlURXBlM0l1WlhKeWIzSW9JbUYyTVVNZ2JXRnlhMlZ5SUhCeWIySnNaVzBpS1R0eVpYUjFjbTU5YVdZb2RHaHBjeTUyWlhKemFXOXVQWFFtTVRJM0xIUm9hWE11ZG1WeWMybHZiaUU5UFRFcGUzSXVaWEp5YjNJb0ltRjJNVU1nZG1WeWMybHZiaUFpSzNSb2FYTXVkbVZ5YzJsdmJpc2lJRzV2ZENCemRYQndiM0owWldRaUtUdHlaWFIxY201OWFXWW9kRDFsTG5KbFlXUlZhVzUwT0NncExIUm9hWE11YzJWeFgzQnliMlpwYkdVOWRENCtOU1kzTEhSb2FYTXVjMlZ4WDJ4bGRtVnNYMmxrZUY4d1BYUW1NekVzZEQxbExuSmxZV1JWYVc1ME9DZ3BMSFJvYVhNdWMyVnhYM1JwWlhKZk1EMTBQajQzSmpFc2RHaHBjeTVvYVdkb1gySnBkR1JsY0hSb1BYUStQalltTVN4MGFHbHpMblIzWld4MlpWOWlhWFE5ZEQ0K05TWXhMSFJvYVhNdWJXOXViMk5vY205dFpUMTBQajQwSmpFc2RHaHBjeTVqYUhKdmJXRmZjM1ZpYzJGdGNHeHBibWRmZUQxMFBqNHpKakVzZEdocGN5NWphSEp2YldGZmMzVmljMkZ0Y0d4cGJtZGZlVDEwUGo0eUpqRXNkR2hwY3k1amFISnZiV0ZmYzJGdGNHeGxYM0J2YzJsMGFXOXVQWFFtTXl4MFBXVXVjbVZoWkZWcGJuUTRLQ2tzZEdocGN5NXlaWE5sY25abFpGOHhQWFErUGpVbU55eDBhR2x6TG5KbGMyVnlkbVZrWHpFaFBUMHdLWHR5TG1WeWNtOXlLQ0poZGpGRElISmxjMlZ5ZG1Wa1h6RWdjR0Z5YzJsdVp5QndjbTlpYkdWdElpazdjbVYwZFhKdWZXbG1LSFJvYVhNdWFXNXBkR2xoYkY5d2NtVnpaVzUwWVhScGIyNWZaR1ZzWVhsZmNISmxjMlZ1ZEQxMFBqNDBKakVzZEdocGN5NXBibWwwYVdGc1gzQnlaWE5sYm5SaGRHbHZibDlrWld4aGVWOXdjbVZ6Wlc1MFBUMDlNU2wwYUdsekxtbHVhWFJwWVd4ZmNISmxjMlZ1ZEdGMGFXOXVYMlJsYkdGNVgyMXBiblZ6WDI5dVpUMTBKakUxTzJWc2MyVWdhV1lvZEdocGN5NXlaWE5sY25abFpGOHlQWFFtTVRVc2RHaHBjeTV5WlhObGNuWmxaRjh5SVQwOU1DbDdjaTVsY25KdmNpZ2lZWFl4UXlCeVpYTmxjblpsWkY4eUlIQmhjbk5wYm1jZ2NISnZZbXhsYlNJcE8zSmxkSFZ5Ym4xMllYSWdhVDEwYUdsekxuTnBlbVV0ZEdocGN5NW9aSEpmYzJsNlpTMDBPM1JvYVhNdVkyOXVabWxuVDBKVmN6MWxMbkpsWVdSVmFXNTBPRUZ5Y21GNUtHa3BmU2tzYnk1amNtVmhkR1ZDYjNoRGRHOXlLQ0poZG1ORElpeG1kVzVqZEdsdmJpaGxLWHQyWVhJZ2RDeHBPMlp2Y2loMGFHbHpMbU52Ym1acFozVnlZWFJwYjI1V1pYSnphVzl1UFdVdWNtVmhaRlZwYm5RNEtDa3NkR2hwY3k1QlZrTlFjbTltYVd4bFNXNWthV05oZEdsdmJqMWxMbkpsWVdSVmFXNTBPQ2dwTEhSb2FYTXVjSEp2Wm1sc1pWOWpiMjF3WVhScFltbHNhWFI1UFdVdWNtVmhaRlZwYm5RNEtDa3NkR2hwY3k1QlZrTk1aWFpsYkVsdVpHbGpZWFJwYjI0OVpTNXlaV0ZrVldsdWREZ29LU3gwYUdsekxteGxibWQwYUZOcGVtVk5hVzUxYzA5dVpUMWxMbkpsWVdSVmFXNTBPQ2dwSmpNc2RHaHBjeTV1WWw5VFVGTmZibUZzZFhNOVpTNXlaV0ZrVldsdWREZ29LU1l6TVN4cFBYUm9hWE11YzJsNlpTMTBhR2x6TG1oa2NsOXphWHBsTFRZc2RHaHBjeTVUVUZNOVcxMHNkRDB3TzNROGRHaHBjeTV1WWw5VFVGTmZibUZzZFhNN2RDc3JLWFJvYVhNdVUxQlRXM1JkUFh0OUxIUm9hWE11VTFCVFczUmRMbXhsYm1kMGFEMWxMbkpsWVdSVmFXNTBNVFlvS1N4MGFHbHpMbE5RVTF0MFhTNXVZV3gxUFdVdWNtVmhaRlZwYm5RNFFYSnlZWGtvZEdocGN5NVRVRk5iZEYwdWJHVnVaM1JvS1N4cExUMHlLM1JvYVhNdVUxQlRXM1JkTG14bGJtZDBhRHRtYjNJb2RHaHBjeTV1WWw5UVVGTmZibUZzZFhNOVpTNXlaV0ZrVldsdWREZ29LU3hwTFMwc2RHaHBjeTVRVUZNOVcxMHNkRDB3TzNROGRHaHBjeTV1WWw5UVVGTmZibUZzZFhNN2RDc3JLWFJvYVhNdVVGQlRXM1JkUFh0OUxIUm9hWE11VUZCVFczUmRMbXhsYm1kMGFEMWxMbkpsWVdSVmFXNTBNVFlvS1N4MGFHbHpMbEJRVTF0MFhTNXVZV3gxUFdVdWNtVmhaRlZwYm5RNFFYSnlZWGtvZEdocGN5NVFVRk5iZEYwdWJHVnVaM1JvS1N4cExUMHlLM1JvYVhNdVVGQlRXM1JkTG14bGJtZDBhRHRwUGpBbUppaDBhR2x6TG1WNGREMWxMbkpsWVdSVmFXNTBPRUZ5Y21GNUtHa3BLWDBwTEc4dVkzSmxZWFJsUW05NFEzUnZjaWdpWW5SeWRDSXNablZ1WTNScGIyNG9aU2w3ZEdocGN5NWlkV1ptWlhKVGFYcGxSRUk5WlM1eVpXRmtWV2x1ZERNeUtDa3NkR2hwY3k1dFlYaENhWFJ5WVhSbFBXVXVjbVZoWkZWcGJuUXpNaWdwTEhSb2FYTXVZWFpuUW1sMGNtRjBaVDFsTG5KbFlXUlZhVzUwTXpJb0tYMHBMRzh1WTNKbFlYUmxRbTk0UTNSdmNpZ2lZMnhoY0NJc1puVnVZM1JwYjI0b1pTbDdkR2hwY3k1amJHVmhia0Z3WlhKMGRYSmxWMmxrZEdoT1BXVXVjbVZoWkZWcGJuUXpNaWdwTEhSb2FYTXVZMnhsWVc1QmNHVnlkSFZ5WlZkcFpIUm9SRDFsTG5KbFlXUlZhVzUwTXpJb0tTeDBhR2x6TG1Oc1pXRnVRWEJsY25SMWNtVklaV2xuYUhST1BXVXVjbVZoWkZWcGJuUXpNaWdwTEhSb2FYTXVZMnhsWVc1QmNHVnlkSFZ5WlVobGFXZG9kRVE5WlM1eVpXRmtWV2x1ZERNeUtDa3NkR2hwY3k1b2IzSnBlazltWms0OVpTNXlaV0ZrVldsdWRETXlLQ2tzZEdocGN5NW9iM0pwZWs5bVprUTlaUzV5WldGa1ZXbHVkRE15S0Nrc2RHaHBjeTUyWlhKMFQyWm1UajFsTG5KbFlXUlZhVzUwTXpJb0tTeDBhR2x6TG5abGNuUlBabVpFUFdVdWNtVmhaRlZwYm5Rek1pZ3BmU2tzYnk1amNtVmhkR1ZDYjNoRGRHOXlLQ0pqYkd4cElpeG1kVzVqZEdsdmJpaGxLWHQwYUdsekxtMWhlRjlqYjI1MFpXNTBYMnhwWjJoMFgyeGxkbVZzUFdVdWNtVmhaRlZwYm5ReE5pZ3BMSFJvYVhNdWJXRjRYM0JwWTE5aGRtVnlZV2RsWDJ4cFoyaDBYMnhsZG1Wc1BXVXVjbVZoWkZWcGJuUXhOaWdwZlNrc2J5NWpjbVZoZEdWR2RXeHNRbTk0UTNSdmNpZ2lZMjgyTkNJc1puVnVZM1JwYjI0b1pTbDdkbUZ5SUhRc2FUdHBaaWgwUFdVdWNtVmhaRlZwYm5Rek1pZ3BMSFJvYVhNdVkyaDFibXRmYjJabWMyVjBjejFiWFN4MGFHbHpMblpsY25OcGIyNDlQVDB3S1dadmNpaHBQVEE3YVR4ME8ya3JLeWwwYUdsekxtTm9kVzVyWDI5bVpuTmxkSE11Y0hWemFDaGxMbkpsWVdSVmFXNTBOalFvS1NsOUtTeHZMbU55WldGMFpVWjFiR3hDYjNoRGRHOXlLQ0pEYjB4TUlpeG1kVzVqZEdsdmJpaGxLWHQwYUdsekxtMWhlRU5NVEQxbExuSmxZV1JWYVc1ME1UWW9LU3gwYUdsekxtMWhlRVpCVEV3OVpTNXlaV0ZrVldsdWRERTJLQ2w5S1N4dkxtTnlaV0YwWlVKdmVFTjBiM0lvSW1OdmJISWlMR1oxYm1OMGFXOXVLR1VwZTJsbUtIUm9hWE11WTI5c2IzVnlYM1I1Y0dVOVpTNXlaV0ZrVTNSeWFXNW5LRFFwTEhSb2FYTXVZMjlzYjNWeVgzUjVjR1U5UFQwaWJtTnNlQ0lwZTNSb2FYTXVZMjlzYjNWeVgzQnlhVzFoY21sbGN6MWxMbkpsWVdSVmFXNTBNVFlvS1N4MGFHbHpMblJ5WVc1elptVnlYMk5vWVhKaFkzUmxjbWx6ZEdsamN6MWxMbkpsWVdSVmFXNTBNVFlvS1N4MGFHbHpMbTFoZEhKcGVGOWpiMlZtWm1samFXVnVkSE05WlM1eVpXRmtWV2x1ZERFMktDazdkbUZ5SUhROVpTNXlaV0ZrVldsdWREZ29LVHQwYUdsekxtWjFiR3hmY21GdVoyVmZabXhoWnoxMFBqNDNmV1ZzYzJVZ2RHaHBjeTVqYjJ4dmRYSmZkSGx3WlQwOVBTSnlTVU5ESWo5MGFHbHpMa2xEUTE5d2NtOW1hV3hsUFdVdWNtVmhaRlZwYm5RNFFYSnlZWGtvZEdocGN5NXphWHBsTFRRcE9uUm9hWE11WTI5c2IzVnlYM1I1Y0dVOVBUMGljSEp2WmlJbUppaDBhR2x6TGtsRFExOXdjbTltYVd4bFBXVXVjbVZoWkZWcGJuUTRRWEp5WVhrb2RHaHBjeTV6YVhwbExUUXBLWDBwTEc4dVkzSmxZWFJsUm5Wc2JFSnZlRU4wYjNJb0ltTndjblFpTEdaMWJtTjBhVzl1S0dVcGUzUm9hWE11Y0dGeWMyVk1ZVzVuZFdGblpTaGxLU3gwYUdsekxtNXZkR2xqWlQxbExuSmxZV1JEVTNSeWFXNW5LQ2w5S1N4dkxtTnlaV0YwWlVaMWJHeENiM2hEZEc5eUtDSmpjMnhuSWl4bWRXNWpkR2x2YmlobEtYdDBhR2x6TG5abGNuTnBiMjQ5UFQwd0ppWW9kR2hwY3k1amIyMXdiM05wZEdsdmJsUnZSRlJUVTJocFpuUTlaUzV5WldGa1NXNTBNeklvS1N4MGFHbHpMbXhsWVhOMFJHVmpiMlJsVkc5RWFYTndiR0Y1UkdWc2RHRTlaUzV5WldGa1NXNTBNeklvS1N4MGFHbHpMbWR5WldGMFpYTjBSR1ZqYjJSbFZHOUVhWE53YkdGNVJHVnNkR0U5WlM1eVpXRmtTVzUwTXpJb0tTeDBhR2x6TG1OdmJYQnZjMmwwYVc5dVUzUmhjblJVYVcxbFBXVXVjbVZoWkVsdWRETXlLQ2tzZEdocGN5NWpiMjF3YjNOcGRHbHZia1Z1WkZScGJXVTlaUzV5WldGa1NXNTBNeklvS1NsOUtTeHZMbU55WldGMFpVWjFiR3hDYjNoRGRHOXlLQ0pqZEhSeklpeG1kVzVqZEdsdmJpaGxLWHQyWVhJZ2RDeHBPMmxtS0hROVpTNXlaV0ZrVldsdWRETXlLQ2tzZEdocGN5NXpZVzF3YkdWZlkyOTFiblJ6UFZ0ZExIUm9hWE11YzJGdGNHeGxYMjltWm5ObGRITTlXMTBzZEdocGN5NTJaWEp6YVc5dVBUMDlNQ2xtYjNJb2FUMHdPMms4ZER0cEt5c3BlM1JvYVhNdWMyRnRjR3hsWDJOdmRXNTBjeTV3ZFhOb0tHVXVjbVZoWkZWcGJuUXpNaWdwS1R0MllYSWdaajFsTG5KbFlXUkpiblF6TWlncE8yWThNQ1ltY2k1M1lYSnVLQ0pDYjNoUVlYSnpaWElpTENKamRIUnpJR0p2ZUNCMWMyVnpJRzVsWjJGMGFYWmxJSFpoYkhWbGN5QjNhWFJvYjNWMElIVnphVzVuSUhabGNuTnBiMjRnTVNJcExIUm9hWE11YzJGdGNHeGxYMjltWm5ObGRITXVjSFZ6YUNobUtYMWxiSE5sSUdsbUtIUm9hWE11ZG1WeWMybHZiajA5TVNsbWIzSW9hVDB3TzJrOGREdHBLeXNwZEdocGN5NXpZVzF3YkdWZlkyOTFiblJ6TG5CMWMyZ29aUzV5WldGa1ZXbHVkRE15S0NrcExIUm9hWE11YzJGdGNHeGxYMjltWm5ObGRITXVjSFZ6YUNobExuSmxZV1JKYm5Rek1pZ3BLWDBwTEc4dVkzSmxZWFJsUW05NFEzUnZjaWdpWkdGak15SXNablZ1WTNScGIyNG9aU2w3ZG1GeUlIUTlaUzV5WldGa1ZXbHVkRGdvS1N4cFBXVXVjbVZoWkZWcGJuUTRLQ2tzWmoxbExuSmxZV1JWYVc1ME9DZ3BPM1JvYVhNdVpuTmpiMlE5ZEQ0K05peDBhR2x6TG1KemFXUTlkRDQrTVNZek1TeDBhR2x6TG1KemJXOWtQU2gwSmpFcFBEd3lmR2srUGpZbU15eDBhR2x6TG1GamJXOWtQV2srUGpNbU55eDBhR2x6TG14bVpXOXVQV2srUGpJbU1TeDBhR2x6TG1KcGRGOXlZWFJsWDJOdlpHVTlhU1l6ZkdZK1BqVW1OMzBwTEc4dVkzSmxZWFJsUW05NFEzUnZjaWdpWkdWak15SXNablZ1WTNScGIyNG9aU2w3ZG1GeUlIUTlaUzV5WldGa1ZXbHVkREUyS0NrN2RHaHBjeTVrWVhSaFgzSmhkR1U5ZEQ0K015eDBhR2x6TG01MWJWOXBibVJmYzNWaVBYUW1OeXgwYUdsekxtbHVaRjl6ZFdKelBWdGRPMlp2Y2loMllYSWdhVDB3TzJrOGRHaHBjeTV1ZFcxZmFXNWtYM04xWWlzeE8ya3JLeWw3ZG1GeUlHWTllMzA3ZEdocGN5NXBibVJmYzNWaWN5NXdkWE5vS0dZcE8zWmhjaUIxUFdVdWNtVmhaRlZwYm5RNEtDa3NkajFsTG5KbFlXUlZhVzUwT0NncExIazlaUzV5WldGa1ZXbHVkRGdvS1R0bUxtWnpZMjlrUFhVK1BqWXNaaTVpYzJsa1BYVStQakVtTXpFc1ppNWljMjF2WkQwb2RTWXhLVHc4Tkh4MlBqNDBKakUxTEdZdVlXTnRiMlE5ZGo0K01TWTNMR1l1YkdabGIyNDlkaVl4TEdZdWJuVnRYMlJsY0Y5emRXSTllVDQrTVNZeE5TeG1MbTUxYlY5a1pYQmZjM1ZpUGpBbUppaG1MbU5vWVc1ZmJHOWpQU2g1SmpFcFBEdzRmR1V1Y21WaFpGVnBiblE0S0NrcGZYMHBMRzh1WTNKbFlYUmxSblZzYkVKdmVFTjBiM0lvSW1SbVRHRWlMR1oxYm1OMGFXOXVLR1VwZTNaaGNpQjBQVEV5Tnl4cFBURXlPQ3htUFZ0ZExIVTlXeUpUVkZKRlFVMUpUa1pQSWl3aVVFRkVSRWxPUnlJc0lrRlFVRXhKUTBGVVNVOU9JaXdpVTBWRlMxUkJRa3hGSWl3aVZrOVNRa2xUWDBOUFRVMUZUbFFpTENKRFZVVlRTRVZGVkNJc0lsQkpRMVJWVWtVaUxDSlNSVk5GVWxaRlJDSmRPM1JvYVhNdWNHRnljMlZHZFd4c1NHVmhaR1Z5S0dVcE8yUnZlM1poY2lCMlBXVXVjbVZoWkZWcGJuUTRLQ2tzZVQxTllYUm9MbTFwYmloMkpuUXNkUzVzWlc1bmRHZ3RNU2s3YVdZb2VUOWxMbkpsWVdSVmFXNTBPRUZ5Y21GNUtHVXVjbVZoWkZWcGJuUXlOQ2dwS1Rvb1pTNXlaV0ZrVldsdWREaEJjbkpoZVNneE15a3NkR2hwY3k1ellXMXdiR1Z5WVhSbFBXVXVjbVZoWkZWcGJuUXpNaWdwUGo0eE1peGxMbkpsWVdSVmFXNTBPRUZ5Y21GNUtESXdLU2tzWmk1d2RYTm9LSFZiZVYwcExIWW1hU2xpY21WaGEzMTNhR2xzWlNnaE1DazdkR2hwY3k1dWRXMU5aWFJoWkdGMFlVSnNiMk5yY3oxbUxteGxibWQwYUNzaUlDZ2lLMll1YW05cGJpZ2lMQ0FpS1NzaUtTSjlLU3h2TG1OeVpXRjBaVUp2ZUVOMGIzSW9JbVJwYlcwaUxHWjFibU4wYVc5dUtHVXBlM1JvYVhNdVlubDBaWE56Wlc1MFBXVXVjbVZoWkZWcGJuUTJOQ2dwZlNrc2J5NWpjbVZoZEdWQ2IzaERkRzl5S0NKa2JXRjRJaXhtZFc1amRHbHZiaWhsS1h0MGFHbHpMblJwYldVOVpTNXlaV0ZrVldsdWRETXlLQ2w5S1N4dkxtTnlaV0YwWlVKdmVFTjBiM0lvSW1SdFpXUWlMR1oxYm1OMGFXOXVLR1VwZTNSb2FYTXVZbmwwWlhOelpXNTBQV1V1Y21WaFpGVnBiblEyTkNncGZTa3NieTVqY21WaGRHVkNiM2hEZEc5eUtDSmtUM0J6SWl4bWRXNWpkR2x2YmlobEtYdHBaaWgwYUdsekxsWmxjbk5wYjI0OVpTNXlaV0ZrVldsdWREZ29LU3gwYUdsekxrOTFkSEIxZEVOb1lXNXVaV3hEYjNWdWREMWxMbkpsWVdSVmFXNTBPQ2dwTEhSb2FYTXVVSEpsVTJ0cGNEMWxMbkpsWVdSVmFXNTBNVFlvS1N4MGFHbHpMa2x1Y0hWMFUyRnRjR3hsVW1GMFpUMWxMbkpsWVdSVmFXNTBNeklvS1N4MGFHbHpMazkxZEhCMWRFZGhhVzQ5WlM1eVpXRmtTVzUwTVRZb0tTeDBhR2x6TGtOb1lXNXVaV3hOWVhCd2FXNW5SbUZ0YVd4NVBXVXVjbVZoWkZWcGJuUTRLQ2tzZEdocGN5NURhR0Z1Ym1Wc1RXRndjR2x1WjBaaGJXbHNlU0U5UFRBcGUzUm9hWE11VTNSeVpXRnRRMjkxYm5ROVpTNXlaV0ZrVldsdWREZ29LU3gwYUdsekxrTnZkWEJzWldSRGIzVnVkRDFsTG5KbFlXUlZhVzUwT0NncExIUm9hWE11UTJoaGJtNWxiRTFoY0hCcGJtYzlXMTA3Wm05eUtIWmhjaUIwUFRBN2REeDBhR2x6TGs5MWRIQjFkRU5vWVc1dVpXeERiM1Z1ZER0MEt5c3BkR2hwY3k1RGFHRnVibVZzVFdGd2NHbHVaMXQwWFQxbExuSmxZV1JWYVc1ME9DZ3BmWDBwTEc4dVkzSmxZWFJsUm5Wc2JFSnZlRU4wYjNJb0ltUnlaV1lpTEdaMWJtTjBhVzl1S0dVcGUzWmhjaUIwTEdrN2RHaHBjeTVsYm5SeWFXVnpQVnRkTzJadmNpaDJZWElnWmoxbExuSmxZV1JWYVc1ME16SW9LU3gxUFRBN2RUeG1PM1VyS3lscFppaDBQVzh1Y0dGeWMyVlBibVZDYjNnb1pTd2hNU3gwYUdsekxuTnBlbVV0S0dVdVoyVjBVRzl6YVhScGIyNG9LUzEwYUdsekxuTjBZWEowS1Nrc2RDNWpiMlJsUFQwOWJ5NVBTeWxwUFhRdVltOTRMSFJvYVhNdVpXNTBjbWxsY3k1d2RYTm9LR2twTzJWc2MyVWdjbVYwZFhKdWZTa3NieTVqY21WaGRHVkNiM2hEZEc5eUtDSmtjbVZ3SWl4bWRXNWpkR2x2YmlobEtYdDBhR2x6TG1KNWRHVnpjMlZ1ZEQxbExuSmxZV1JWYVc1ME5qUW9LWDBwTEc4dVkzSmxZWFJsUm5Wc2JFSnZlRU4wYjNJb0ltVnNibWNpTEdaMWJtTjBhVzl1S0dVcGUzUm9hWE11WlhoMFpXNWtaV1JmYkdGdVozVmhaMlU5WlM1eVpXRmtVM1J5YVc1bktIUm9hWE11YzJsNlpTMTBhR2x6TG1oa2NsOXphWHBsS1gwcExHOHVZM0psWVhSbFJuVnNiRUp2ZUVOMGIzSW9JbVZzYzNRaUxHWjFibU4wYVc5dUtHVXBlM1JvYVhNdVpXNTBjbWxsY3oxYlhUdG1iM0lvZG1GeUlIUTlaUzV5WldGa1ZXbHVkRE15S0Nrc2FUMHdPMms4ZER0cEt5c3BlM1poY2lCbVBYdDlPM1JvYVhNdVpXNTBjbWxsY3k1d2RYTm9LR1lwTEhSb2FYTXVkbVZ5YzJsdmJqMDlQVEUvS0dZdWMyVm5iV1Z1ZEY5a2RYSmhkR2x2YmoxbExuSmxZV1JWYVc1ME5qUW9LU3htTG0xbFpHbGhYM1JwYldVOVpTNXlaV0ZrU1c1ME5qUW9LU2s2S0dZdWMyVm5iV1Z1ZEY5a2RYSmhkR2x2YmoxbExuSmxZV1JWYVc1ME16SW9LU3htTG0xbFpHbGhYM1JwYldVOVpTNXlaV0ZrU1c1ME16SW9LU2tzWmk1dFpXUnBZVjl5WVhSbFgybHVkR1ZuWlhJOVpTNXlaV0ZrU1c1ME1UWW9LU3htTG0xbFpHbGhYM0poZEdWZlpuSmhZM1JwYjI0OVpTNXlaV0ZrU1c1ME1UWW9LWDE5S1N4dkxtTnlaV0YwWlVaMWJHeENiM2hEZEc5eUtDSmxiWE5uSWl4bWRXNWpkR2x2YmlobEtYdDBhR2x6TG5abGNuTnBiMjQ5UFRFL0tIUm9hWE11ZEdsdFpYTmpZV3hsUFdVdWNtVmhaRlZwYm5Rek1pZ3BMSFJvYVhNdWNISmxjMlZ1ZEdGMGFXOXVYM1JwYldVOVpTNXlaV0ZrVldsdWREWTBLQ2tzZEdocGN5NWxkbVZ1ZEY5a2RYSmhkR2x2YmoxbExuSmxZV1JWYVc1ME16SW9LU3gwYUdsekxtbGtQV1V1Y21WaFpGVnBiblF6TWlncExIUm9hWE11YzJOb1pXMWxYMmxrWDNWeWFUMWxMbkpsWVdSRFUzUnlhVzVuS0Nrc2RHaHBjeTUyWVd4MVpUMWxMbkpsWVdSRFUzUnlhVzVuS0NrcE9paDBhR2x6TG5OamFHVnRaVjlwWkY5MWNtazlaUzV5WldGa1ExTjBjbWx1WnlncExIUm9hWE11ZG1Gc2RXVTlaUzV5WldGa1ExTjBjbWx1WnlncExIUm9hWE11ZEdsdFpYTmpZV3hsUFdVdWNtVmhaRlZwYm5Rek1pZ3BMSFJvYVhNdWNISmxjMlZ1ZEdGMGFXOXVYM1JwYldWZlpHVnNkR0U5WlM1eVpXRmtWV2x1ZERNeUtDa3NkR2hwY3k1bGRtVnVkRjlrZFhKaGRHbHZiajFsTG5KbFlXUlZhVzUwTXpJb0tTeDBhR2x6TG1sa1BXVXVjbVZoWkZWcGJuUXpNaWdwS1R0MllYSWdkRDEwYUdsekxuTnBlbVV0ZEdocGN5NW9aSEpmYzJsNlpTMG9OQ28wS3loMGFHbHpMbk5qYUdWdFpWOXBaRjkxY21rdWJHVnVaM1JvS3pFcEt5aDBhR2x6TG5aaGJIVmxMbXhsYm1kMGFDc3hLU2s3ZEdocGN5NTJaWEp6YVc5dVBUMHhKaVlvZEMwOU5Da3NkR2hwY3k1dFpYTnpZV2RsWDJSaGRHRTlaUzV5WldGa1ZXbHVkRGhCY25KaGVTaDBLWDBwTEc4dVkzSmxZWFJsUm5Wc2JFSnZlRU4wYjNJb0ltVnpaSE1pTEdaMWJtTjBhVzl1S0dVcGUzWmhjaUIwUFdVdWNtVmhaRlZwYm5RNFFYSnlZWGtvZEdocGN5NXphWHBsTFhSb2FYTXVhR1J5WDNOcGVtVXBPMmxtS0hSNWNHVnZaaUJvUENKMUlpbDdkbUZ5SUdrOWJtVjNJR2c3ZEdocGN5NWxjMlE5YVM1d1lYSnpaVTl1WlVSbGMyTnlhWEIwYjNJb2JtVjNJSE1vZEM1aWRXWm1aWElzTUN4ekxrSkpSMTlGVGtSSlFVNHBLWDE5S1N4dkxtTnlaV0YwWlVKdmVFTjBiM0lvSW1acFpXd2lMR1oxYm1OMGFXOXVLR1VwZTNSb2FYTXVabWxsYkdSRGIzVnVkRDFsTG5KbFlXUlZhVzUwT0NncExIUm9hWE11Wm1sbGJHUlBjbVJsY21sdVp6MWxMbkpsWVdSVmFXNTBPQ2dwZlNrc2J5NWpjbVZoZEdWQ2IzaERkRzl5S0NKbWNtMWhJaXhtZFc1amRHbHZiaWhsS1h0MGFHbHpMbVJoZEdGZlptOXliV0YwUFdVdWNtVmhaRk4wY21sdVp5ZzBLWDBwTEc4dVkzSmxZWFJsUW05NFEzUnZjaWdpWm5SNWNDSXNablZ1WTNScGIyNG9aU2w3ZG1GeUlIUTlkR2hwY3k1emFYcGxMWFJvYVhNdWFHUnlYM05wZW1VN2RHaHBjeTV0WVdwdmNsOWljbUZ1WkQxbExuSmxZV1JUZEhKcGJtY29OQ2tzZEdocGN5NXRhVzV2Y2w5MlpYSnphVzl1UFdVdWNtVmhaRlZwYm5Rek1pZ3BMSFF0UFRnc2RHaHBjeTVqYjIxd1lYUnBZbXhsWDJKeVlXNWtjejFiWFR0bWIzSW9kbUZ5SUdrOU1EdDBQajAwT3lsMGFHbHpMbU52YlhCaGRHbGliR1ZmWW5KaGJtUnpXMmxkUFdVdWNtVmhaRk4wY21sdVp5ZzBLU3gwTFQwMExHa3JLMzBwTEc4dVkzSmxZWFJsUm5Wc2JFSnZlRU4wYjNJb0ltaGtiSElpTEdaMWJtTjBhVzl1S0dVcGUzUm9hWE11ZG1WeWMybHZiajA5UFRBbUppaGxMbkpsWVdSVmFXNTBNeklvS1N4MGFHbHpMbWhoYm1Sc1pYSTlaUzV5WldGa1UzUnlhVzVuS0RRcExHVXVjbVZoWkZWcGJuUXpNa0Z5Y21GNUtETXBMSFJvYVhNdWJtRnRaVDFsTG5KbFlXUlRkSEpwYm1jb2RHaHBjeTV6YVhwbExYUm9hWE11YUdSeVgzTnBlbVV0TWpBcExIUm9hWE11Ym1GdFpWdDBhR2x6TG01aGJXVXViR1Z1WjNSb0xURmRQVDA5SWx3d0lpWW1LSFJvYVhNdWJtRnRaVDEwYUdsekxtNWhiV1V1YzJ4cFkyVW9NQ3d0TVNrcEtYMHBMRzh1WTNKbFlYUmxRbTk0UTNSdmNpZ2lhSFpqUXlJc1puVnVZM1JwYjI0b1pTbDdkbUZ5SUhRc2FTeG1MSFU3ZEdocGN5NWpiMjVtYVdkMWNtRjBhVzl1Vm1WeWMybHZiajFsTG5KbFlXUlZhVzUwT0NncExIVTlaUzV5WldGa1ZXbHVkRGdvS1N4MGFHbHpMbWRsYm1WeVlXeGZjSEp2Wm1sc1pWOXpjR0ZqWlQxMVBqNDJMSFJvYVhNdVoyVnVaWEpoYkY5MGFXVnlYMlpzWVdjOUtIVW1NeklwUGo0MUxIUm9hWE11WjJWdVpYSmhiRjl3Y205bWFXeGxYMmxrWXoxMUpqTXhMSFJvYVhNdVoyVnVaWEpoYkY5d2NtOW1hV3hsWDJOdmJYQmhkR2xpYVd4cGRIazlaUzV5WldGa1ZXbHVkRE15S0Nrc2RHaHBjeTVuWlc1bGNtRnNYMk52Ym5OMGNtRnBiblJmYVc1a2FXTmhkRzl5UFdVdWNtVmhaRlZwYm5RNFFYSnlZWGtvTmlrc2RHaHBjeTVuWlc1bGNtRnNYMnhsZG1Wc1gybGtZejFsTG5KbFlXUlZhVzUwT0NncExIUm9hWE11YldsdVgzTndZWFJwWVd4ZmMyVm5iV1Z1ZEdGMGFXOXVYMmxrWXoxbExuSmxZV1JWYVc1ME1UWW9LU1kwTURrMUxIUm9hWE11Y0dGeVlXeHNaV3hwYzIxVWVYQmxQV1V1Y21WaFpGVnBiblE0S0NrbU15eDBhR2x6TG1Ob2NtOXRZVjltYjNKdFlYUmZhV1JqUFdVdWNtVmhaRlZwYm5RNEtDa21NeXgwYUdsekxtSnBkRjlrWlhCMGFGOXNkVzFoWDIxcGJuVnpPRDFsTG5KbFlXUlZhVzUwT0NncEpqY3NkR2hwY3k1aWFYUmZaR1Z3ZEdoZlkyaHliMjFoWDIxcGJuVnpPRDFsTG5KbFlXUlZhVzUwT0NncEpqY3NkR2hwY3k1aGRtZEdjbUZ0WlZKaGRHVTlaUzV5WldGa1ZXbHVkREUyS0Nrc2RUMWxMbkpsWVdSVmFXNTBPQ2dwTEhSb2FYTXVZMjl1YzNSaGJuUkdjbUZ0WlZKaGRHVTlkVDQrTml4MGFHbHpMbTUxYlZSbGJYQnZjbUZzVEdGNVpYSnpQU2gxSmpFektUNCtNeXgwYUdsekxuUmxiWEJ2Y21Gc1NXUk9aWE4wWldROUtIVW1OQ2srUGpJc2RHaHBjeTVzWlc1bmRHaFRhWHBsVFdsdWRYTlBibVU5ZFNZekxIUm9hWE11Ym1Gc2RWOWhjbkpoZVhNOVcxMDdkbUZ5SUhZOVpTNXlaV0ZrVldsdWREZ29LVHRtYjNJb2REMHdPM1E4ZGp0MEt5c3BlM1poY2lCNVBWdGRPM1JvYVhNdWJtRnNkVjloY25KaGVYTXVjSFZ6YUNoNUtTeDFQV1V1Y21WaFpGVnBiblE0S0Nrc2VTNWpiMjF3YkdWMFpXNWxjM005S0hVbU1USTRLVDQrTnl4NUxtNWhiSFZmZEhsd1pUMTFKall6TzNaaGNpQnRQV1V1Y21WaFpGVnBiblF4TmlncE8yWnZjaWhwUFRBN2FUeHRPMmtyS3lsN2RtRnlJR0k5ZTMwN2VTNXdkWE5vS0dJcExHWTlaUzV5WldGa1ZXbHVkREUyS0Nrc1lpNWtZWFJoUFdVdWNtVmhaRlZwYm5RNFFYSnlZWGtvWmlsOWZYMHBMRzh1WTNKbFlYUmxSblZzYkVKdmVFTjBiM0lvSW1scGJtWWlMR1oxYm1OMGFXOXVLR1VwZTNaaGNpQjBPM1JvYVhNdWRtVnljMmx2YmowOVBUQS9kR2hwY3k1bGJuUnllVjlqYjNWdWREMWxMbkpsWVdSVmFXNTBNVFlvS1RwMGFHbHpMbVZ1ZEhKNVgyTnZkVzUwUFdVdWNtVmhaRlZwYm5Rek1pZ3BMSFJvYVhNdWFYUmxiVjlwYm1admN6MWJYVHRtYjNJb2RtRnlJR2s5TUR0cFBIUm9hWE11Wlc1MGNubGZZMjkxYm5RN2FTc3JLV2xtS0hROWJ5NXdZWEp6WlU5dVpVSnZlQ2hsTENFeExIUm9hWE11YzJsNlpTMG9aUzVuWlhSUWIzTnBkR2x2YmlncExYUm9hWE11YzNSaGNuUXBLU3gwTG1OdlpHVTlQVDF2TGs5TEtYUXVZbTk0TG5SNWNHVWhQVDBpYVc1bVpTSW1Kbkl1WlhKeWIzSW9Ja0p2ZUZCaGNuTmxjaUlzSWtWNGNHVmpkR1ZrSUNkcGJtWmxKeUJpYjNnc0lHZHZkQ0FpSzNRdVltOTRMblI1Y0dVcExIUm9hWE11YVhSbGJWOXBibVp2YzF0cFhUMTBMbUp2ZUR0bGJITmxJSEpsZEhWeWJuMHBMRzh1WTNKbFlYUmxSblZzYkVKdmVFTjBiM0lvSW1sc2IyTWlMR1oxYm1OMGFXOXVLR1VwZTNaaGNpQjBPM1E5WlM1eVpXRmtWV2x1ZERnb0tTeDBhR2x6TG05bVpuTmxkRjl6YVhwbFBYUStQalFtTVRVc2RHaHBjeTVzWlc1bmRHaGZjMmw2WlQxMEpqRTFMSFE5WlM1eVpXRmtWV2x1ZERnb0tTeDBhR2x6TG1KaGMyVmZiMlptYzJWMFgzTnBlbVU5ZEQ0K05DWXhOU3gwYUdsekxuWmxjbk5wYjI0OVBUMHhmSHgwYUdsekxuWmxjbk5wYjI0OVBUMHlQM1JvYVhNdWFXNWtaWGhmYzJsNlpUMTBKakUxT25Sb2FYTXVhVzVrWlhoZmMybDZaVDB3TEhSb2FYTXVhWFJsYlhNOVcxMDdkbUZ5SUdrOU1EdHBaaWgwYUdsekxuWmxjbk5wYjI0OE1pbHBQV1V1Y21WaFpGVnBiblF4TmlncE8yVnNjMlVnYVdZb2RHaHBjeTUyWlhKemFXOXVQVDA5TWlscFBXVXVjbVZoWkZWcGJuUXpNaWdwTzJWc2MyVWdkR2h5YjNjaWRtVnljMmx2YmlCdlppQnBiRzlqSUdKdmVDQnViM1FnYzNWd2NHOXlkR1ZrSWp0bWIzSW9kbUZ5SUdZOU1EdG1QR2s3WmlzcktYdDJZWElnZFQxN2ZUdHBaaWgwYUdsekxtbDBaVzF6TG5CMWMyZ29kU2tzZEdocGN5NTJaWEp6YVc5dVBESXBkUzVwZEdWdFgwbEVQV1V1Y21WaFpGVnBiblF4TmlncE8yVnNjMlVnYVdZb2RHaHBjeTUyWlhKemFXOXVQVDA5TWlsMUxtbDBaVzFmU1VROVpTNXlaV0ZrVldsdWRERTJLQ2s3Wld4elpTQjBhSEp2ZHlKMlpYSnphVzl1SUc5bUlHbHNiMk1nWW05NElHNXZkQ0J6ZFhCd2IzSjBaV1FpTzNOM2FYUmphQ2gwYUdsekxuWmxjbk5wYjI0OVBUMHhmSHgwYUdsekxuWmxjbk5wYjI0OVBUMHlQM1V1WTI5dWMzUnlkV04wYVc5dVgyMWxkR2h2WkQxbExuSmxZV1JWYVc1ME1UWW9LU1l4TlRwMUxtTnZibk4wY25WamRHbHZibDl0WlhSb2IyUTlNQ3gxTG1SaGRHRmZjbVZtWlhKbGJtTmxYMmx1WkdWNFBXVXVjbVZoWkZWcGJuUXhOaWdwTEhSb2FYTXVZbUZ6WlY5dlptWnpaWFJmYzJsNlpTbDdZMkZ6WlNBd09uVXVZbUZ6WlY5dlptWnpaWFE5TUR0aWNtVmhhenRqWVhObElEUTZkUzVpWVhObFgyOW1abk5sZEQxbExuSmxZV1JWYVc1ME16SW9LVHRpY21WaGF6dGpZWE5sSURnNmRTNWlZWE5sWDI5bVpuTmxkRDFsTG5KbFlXUlZhVzUwTmpRb0tUdGljbVZoYXp0a1pXWmhkV3gwT25Sb2NtOTNJa1Z5Y205eUlISmxZV1JwYm1jZ1ltRnpaU0J2Wm1aelpYUWdjMmw2WlNKOWRtRnlJSFk5WlM1eVpXRmtWV2x1ZERFMktDazdkUzVsZUhSbGJuUnpQVnRkTzJadmNpaDJZWElnZVQwd08zazhkanQ1S3lzcGUzWmhjaUJ0UFh0OU8ybG1LSFV1WlhoMFpXNTBjeTV3ZFhOb0tHMHBMSFJvYVhNdWRtVnljMmx2YmowOVBURjhmSFJvYVhNdWRtVnljMmx2YmowOVBUSXBjM2RwZEdOb0tIUm9hWE11YVc1a1pYaGZjMmw2WlNsN1kyRnpaU0F3T20wdVpYaDBaVzUwWDJsdVpHVjRQVEE3WW5KbFlXczdZMkZ6WlNBME9tMHVaWGgwWlc1MFgybHVaR1Y0UFdVdWNtVmhaRlZwYm5Rek1pZ3BPMkp5WldGck8yTmhjMlVnT0RwdExtVjRkR1Z1ZEY5cGJtUmxlRDFsTG5KbFlXUlZhVzUwTmpRb0tUdGljbVZoYXp0a1pXWmhkV3gwT25Sb2NtOTNJa1Z5Y205eUlISmxZV1JwYm1jZ1pYaDBaVzUwSUdsdVpHVjRJbjF6ZDJsMFkyZ29kR2hwY3k1dlptWnpaWFJmYzJsNlpTbDdZMkZ6WlNBd09tMHVaWGgwWlc1MFgyOW1abk5sZEQwd08ySnlaV0ZyTzJOaGMyVWdORHB0TG1WNGRHVnVkRjl2Wm1aelpYUTlaUzV5WldGa1ZXbHVkRE15S0NrN1luSmxZV3M3WTJGelpTQTRPbTB1WlhoMFpXNTBYMjltWm5ObGREMWxMbkpsWVdSVmFXNTBOalFvS1R0aWNtVmhhenRrWldaaGRXeDBPblJvY205M0lrVnljbTl5SUhKbFlXUnBibWNnWlhoMFpXNTBJR2x1WkdWNEluMXpkMmwwWTJnb2RHaHBjeTVzWlc1bmRHaGZjMmw2WlNsN1kyRnpaU0F3T20wdVpYaDBaVzUwWDJ4bGJtZDBhRDB3TzJKeVpXRnJPMk5oYzJVZ05EcHRMbVY0ZEdWdWRGOXNaVzVuZEdnOVpTNXlaV0ZrVldsdWRETXlLQ2s3WW5KbFlXczdZMkZ6WlNBNE9tMHVaWGgwWlc1MFgyeGxibWQwYUQxbExuSmxZV1JWYVc1ME5qUW9LVHRpY21WaGF6dGtaV1poZFd4ME9uUm9jbTkzSWtWeWNtOXlJSEpsWVdScGJtY2daWGgwWlc1MElHbHVaR1Y0SW4xOWZYMHBMRzh1WTNKbFlYUmxRbTk0UTNSdmNpZ2lhVzFwY2lJc1puVnVZM1JwYjI0b1pTbDdkbUZ5SUhROVpTNXlaV0ZrVldsdWREZ29LVHQwYUdsekxuSmxjMlZ5ZG1Wa1BYUStQamNzZEdocGN5NWhlR2x6UFhRbU1YMHBMRzh1WTNKbFlYUmxSblZzYkVKdmVFTjBiM0lvSW1sdVptVWlMR1oxYm1OMGFXOXVLR1VwZTJsbUtDaDBhR2x6TG5abGNuTnBiMjQ5UFQwd2ZIeDBhR2x6TG5abGNuTnBiMjQ5UFQweEtTWW1LSFJvYVhNdWFYUmxiVjlKUkQxbExuSmxZV1JWYVc1ME1UWW9LU3gwYUdsekxtbDBaVzFmY0hKdmRHVmpkR2x2Ymw5cGJtUmxlRDFsTG5KbFlXUlZhVzUwTVRZb0tTeDBhR2x6TG1sMFpXMWZibUZ0WlQxbExuSmxZV1JEVTNSeWFXNW5LQ2tzZEdocGN5NWpiMjUwWlc1MFgzUjVjR1U5WlM1eVpXRmtRMU4wY21sdVp5Z3BMSFJvYVhNdVkyOXVkR1Z1ZEY5bGJtTnZaR2x1WnoxbExuSmxZV1JEVTNSeWFXNW5LQ2twTEhSb2FYTXVkbVZ5YzJsdmJqMDlQVEVwZTNSb2FYTXVaWGgwWlc1emFXOXVYM1I1Y0dVOVpTNXlaV0ZrVTNSeWFXNW5LRFFwTEhJdWQyRnliaWdpUW05NFVHRnljMlZ5SWl3aVEyRnVibTkwSUhCaGNuTmxJR1Y0ZEdWdWMybHZiaUIwZVhCbElpa3NaUzV6WldWcktIUm9hWE11YzNSaGNuUXJkR2hwY3k1emFYcGxLVHR5WlhSMWNtNTlkR2hwY3k1MlpYSnphVzl1UGoweUppWW9kR2hwY3k1MlpYSnphVzl1UFQwOU1qOTBhR2x6TG1sMFpXMWZTVVE5WlM1eVpXRmtWV2x1ZERFMktDazZkR2hwY3k1MlpYSnphVzl1UFQwOU15WW1LSFJvYVhNdWFYUmxiVjlKUkQxbExuSmxZV1JWYVc1ME16SW9LU2tzZEdocGN5NXBkR1Z0WDNCeWIzUmxZM1JwYjI1ZmFXNWtaWGc5WlM1eVpXRmtWV2x1ZERFMktDa3NkR2hwY3k1cGRHVnRYM1I1Y0dVOVpTNXlaV0ZrVTNSeWFXNW5LRFFwTEhSb2FYTXVhWFJsYlY5dVlXMWxQV1V1Y21WaFpFTlRkSEpwYm1jb0tTeDBhR2x6TG1sMFpXMWZkSGx3WlQwOVBTSnRhVzFsSWo4b2RHaHBjeTVqYjI1MFpXNTBYM1I1Y0dVOVpTNXlaV0ZrUTFOMGNtbHVaeWdwTEhSb2FYTXVZMjl1ZEdWdWRGOWxibU52WkdsdVp6MWxMbkpsWVdSRFUzUnlhVzVuS0NrcE9uUm9hWE11YVhSbGJWOTBlWEJsUFQwOUluVnlhU0FpSmlZb2RHaHBjeTVwZEdWdFgzVnlhVjkwZVhCbFBXVXVjbVZoWkVOVGRISnBibWNvS1NrcGZTa3NieTVqY21WaGRHVkdkV3hzUW05NFEzUnZjaWdpYVhCdFlTSXNablZ1WTNScGIyNG9aU2w3ZG1GeUlIUXNhVHRtYjNJb1pXNTBjbmxmWTI5MWJuUTlaUzV5WldGa1ZXbHVkRE15S0Nrc2RHaHBjeTVoYzNOdlkybGhkR2x2Ym5NOVcxMHNkRDB3TzNROFpXNTBjbmxmWTI5MWJuUTdkQ3NyS1h0MllYSWdaajE3ZlR0MGFHbHpMbUZ6YzI5amFXRjBhVzl1Y3k1d2RYTm9LR1lwTEhSb2FYTXVkbVZ5YzJsdmJqd3hQMll1YVdROVpTNXlaV0ZrVldsdWRERTJLQ2s2Wmk1cFpEMWxMbkpsWVdSVmFXNTBNeklvS1R0MllYSWdkVDFsTG5KbFlXUlZhVzUwT0NncE8yWnZjaWhtTG5CeWIzQnpQVnRkTEdrOU1EdHBQSFU3YVNzcktYdDJZWElnZGoxbExuSmxZV1JWYVc1ME9DZ3BMSGs5ZTMwN1ppNXdjbTl3Y3k1d2RYTm9LSGtwTEhrdVpYTnpaVzUwYVdGc1BTaDJKakV5T0NrK1BqYzlQVDB4TEhSb2FYTXVabXhoWjNNbU1UOTVMbkJ5YjNCbGNuUjVYMmx1WkdWNFBTaDJKakV5TnlrOFBEaDhaUzV5WldGa1ZXbHVkRGdvS1RwNUxuQnliM0JsY25SNVgybHVaR1Y0UFhZbU1USTNmWDE5S1N4dkxtTnlaV0YwWlVaMWJHeENiM2hEZEc5eUtDSnBjbVZtSWl4bWRXNWpkR2x2YmlobEtYdDJZWElnZEN4cE8yWnZjaWgwYUdsekxuSmxabVZ5Wlc1alpYTTlXMTA3WlM1blpYUlFiM05wZEdsdmJpZ3BQSFJvYVhNdWMzUmhjblFyZEdocGN5NXphWHBsT3lscFppaDBQVzh1Y0dGeWMyVlBibVZDYjNnb1pTd2hNQ3gwYUdsekxuTnBlbVV0S0dVdVoyVjBVRzl6YVhScGIyNG9LUzEwYUdsekxuTjBZWEowS1Nrc2RDNWpiMlJsUFQwOWJ5NVBTeWwwYUdsekxuWmxjbk5wYjI0OVBUMHdQMms5Ym1WM0lHOHVVMmx1WjJ4bFNYUmxiVlI1Y0dWU1pXWmxjbVZ1WTJWQ2IzZ29kQzUwZVhCbExIUXVjMmw2WlN4MExtaGtjbDl6YVhwbExIUXVjM1JoY25RcE9tazlibVYzSUc4dVUybHVaMnhsU1hSbGJWUjVjR1ZTWldabGNtVnVZMlZDYjNoTVlYSm5aU2gwTG5SNWNHVXNkQzV6YVhwbExIUXVhR1J5WDNOcGVtVXNkQzV6ZEdGeWRDa3NhUzUzY21sMFpUMDlQVzh1UW05NExuQnliM1J2ZEhsd1pTNTNjbWwwWlNZbWFTNTBlWEJsSVQwOUltMWtZWFFpSmlZb2NpNTNZWEp1S0NKQ2IzaFFZWEp6WlhJaUxHa3VkSGx3WlNzaUlHSnZlQ0IzY21sMGFXNW5JRzV2ZENCNVpYUWdhVzF3YkdWdFpXNTBaV1FzSUd0bFpYQnBibWNnZFc1d1lYSnpaV1FnWkdGMFlTQnBiaUJ0WlcxdmNua2dabTl5SUd4aGRHVnlJSGR5YVhSbElpa3NhUzV3WVhKelpVUmhkR0ZCYm1SU1pYZHBibVFvWlNrcExHa3VjR0Z5YzJVb1pTa3NkR2hwY3k1eVpXWmxjbVZ1WTJWekxuQjFjMmdvYVNrN1pXeHpaU0J5WlhSMWNtNTlLU3h2TG1OeVpXRjBaVUp2ZUVOMGIzSW9JbWx5YjNRaUxHWjFibU4wYVc5dUtHVXBlM1JvYVhNdVlXNW5iR1U5WlM1eVpXRmtWV2x1ZERnb0tTWXpmU2tzYnk1amNtVmhkR1ZHZFd4c1FtOTRRM1J2Y2lnaWFYTndaU0lzWm5WdVkzUnBiMjRvWlNsN2RHaHBjeTVwYldGblpWOTNhV1IwYUQxbExuSmxZV1JWYVc1ME16SW9LU3gwYUdsekxtbHRZV2RsWDJobGFXZG9kRDFsTG5KbFlXUlZhVzUwTXpJb0tYMHBMRzh1WTNKbFlYUmxSblZzYkVKdmVFTjBiM0lvSW10cGJtUWlMR1oxYm1OMGFXOXVLR1VwZTNSb2FYTXVjMk5vWlcxbFZWSkpQV1V1Y21WaFpFTlRkSEpwYm1jb0tTeDBhR2x6TG5aaGJIVmxQV1V1Y21WaFpFTlRkSEpwYm1jb0tYMHBMRzh1WTNKbFlYUmxSblZzYkVKdmVFTjBiM0lvSW14bGRtRWlMR1oxYm1OMGFXOXVLR1VwZTNaaGNpQjBQV1V1Y21WaFpGVnBiblE0S0NrN2RHaHBjeTVzWlhabGJITTlXMTA3Wm05eUtIWmhjaUJwUFRBN2FUeDBPMmtyS3lsN2RtRnlJR1k5ZTMwN2RHaHBjeTVzWlhabGJITmJhVjA5Wml4bUxuUnlZV05yWDBsRVBXVXVjbVZoWkZWcGJuUXpNaWdwTzNaaGNpQjFQV1V1Y21WaFpGVnBiblE0S0NrN2MzZHBkR05vS0dZdWNHRmtaR2x1WjE5bWJHRm5QWFUrUGpjc1ppNWhjM05wWjI1dFpXNTBYM1I1Y0dVOWRTWXhNamNzWmk1aGMzTnBaMjV0Wlc1MFgzUjVjR1VwZTJOaGMyVWdNRHBtTG1keWIzVndhVzVuWDNSNWNHVTlaUzV5WldGa1UzUnlhVzVuS0RRcE8ySnlaV0ZyTzJOaGMyVWdNVHBtTG1keWIzVndhVzVuWDNSNWNHVTlaUzV5WldGa1UzUnlhVzVuS0RRcExHWXVaM0p2ZFhCcGJtZGZkSGx3WlY5d1lYSmhiV1YwWlhJOVpTNXlaV0ZrVldsdWRETXlLQ2s3WW5KbFlXczdZMkZ6WlNBeU9tSnlaV0ZyTzJOaGMyVWdNenBpY21WaGF6dGpZWE5sSURRNlppNXpkV0pmZEhKaFkydGZhV1E5WlM1eVpXRmtWV2x1ZERNeUtDazdZbkpsWVdzN1pHVm1ZWFZzZERweUxuZGhjbTRvSWtKdmVGQmhjbk5sY2lJc0lsVnVhMjV2ZDI0Z2JHVjJZU0JoYzNOcFoyNWxiV1Z1ZENCMGVYQmxJaWw5ZlgwcExHOHVZM0psWVhSbFFtOTRRM1J2Y2lnaWJITmxiQ0lzWm5WdVkzUnBiMjRvWlNsN2RHaHBjeTVzWVhsbGNsOXBaRDFsTG5KbFlXUlZhVzUwTVRZb0tYMHBMRzh1WTNKbFlYUmxRbTk0UTNSdmNpZ2liV0Y0Y2lJc1puVnVZM1JwYjI0b1pTbDdkR2hwY3k1d1pYSnBiMlE5WlM1eVpXRmtWV2x1ZERNeUtDa3NkR2hwY3k1aWVYUmxjejFsTG5KbFlXUlZhVzUwTXpJb0tYMHBMRzh1WTNKbFlYUmxRbTk0UTNSdmNpZ2liV1JqZGlJc1puVnVZM1JwYjI0b1pTbDdkR2hwY3k1a2FYTndiR0Y1WDNCeWFXMWhjbWxsY3oxYlhTeDBhR2x6TG1ScGMzQnNZWGxmY0hKcGJXRnlhV1Z6V3pCZFBYdDlMSFJvYVhNdVpHbHpjR3hoZVY5d2NtbHRZWEpwWlhOYk1GMHVlRDFsTG5KbFlXUlZhVzUwTVRZb0tTeDBhR2x6TG1ScGMzQnNZWGxmY0hKcGJXRnlhV1Z6V3pCZExuazlaUzV5WldGa1ZXbHVkREUyS0Nrc2RHaHBjeTVrYVhOd2JHRjVYM0J5YVcxaGNtbGxjMXN4WFQxN2ZTeDBhR2x6TG1ScGMzQnNZWGxmY0hKcGJXRnlhV1Z6V3pGZExuZzlaUzV5WldGa1ZXbHVkREUyS0Nrc2RHaHBjeTVrYVhOd2JHRjVYM0J5YVcxaGNtbGxjMXN4WFM1NVBXVXVjbVZoWkZWcGJuUXhOaWdwTEhSb2FYTXVaR2x6Y0d4aGVWOXdjbWx0WVhKcFpYTmJNbDA5ZTMwc2RHaHBjeTVrYVhOd2JHRjVYM0J5YVcxaGNtbGxjMXN5WFM1NFBXVXVjbVZoWkZWcGJuUXhOaWdwTEhSb2FYTXVaR2x6Y0d4aGVWOXdjbWx0WVhKcFpYTmJNbDB1ZVQxbExuSmxZV1JWYVc1ME1UWW9LU3gwYUdsekxuZG9hWFJsWDNCdmFXNTBQWHQ5TEhSb2FYTXVkMmhwZEdWZmNHOXBiblF1ZUQxbExuSmxZV1JWYVc1ME1UWW9LU3gwYUdsekxuZG9hWFJsWDNCdmFXNTBMbms5WlM1eVpXRmtWV2x1ZERFMktDa3NkR2hwY3k1dFlYaGZaR2x6Y0d4aGVWOXRZWE4wWlhKcGJtZGZiSFZ0YVc1aGJtTmxQV1V1Y21WaFpGVnBiblF6TWlncExIUm9hWE11YldsdVgyUnBjM0JzWVhsZmJXRnpkR1Z5YVc1blgyeDFiV2x1WVc1alpUMWxMbkpsWVdSVmFXNTBNeklvS1gwcExHOHVZM0psWVhSbFJuVnNiRUp2ZUVOMGIzSW9JbTFrYUdRaUxHWjFibU4wYVc5dUtHVXBlM1JvYVhNdWRtVnljMmx2YmowOU1UOG9kR2hwY3k1amNtVmhkR2x2Ymw5MGFXMWxQV1V1Y21WaFpGVnBiblEyTkNncExIUm9hWE11Ylc5a2FXWnBZMkYwYVc5dVgzUnBiV1U5WlM1eVpXRmtWV2x1ZERZMEtDa3NkR2hwY3k1MGFXMWxjMk5oYkdVOVpTNXlaV0ZrVldsdWRETXlLQ2tzZEdocGN5NWtkWEpoZEdsdmJqMWxMbkpsWVdSVmFXNTBOalFvS1NrNktIUm9hWE11WTNKbFlYUnBiMjVmZEdsdFpUMWxMbkpsWVdSVmFXNTBNeklvS1N4MGFHbHpMbTF2WkdsbWFXTmhkR2x2Ymw5MGFXMWxQV1V1Y21WaFpGVnBiblF6TWlncExIUm9hWE11ZEdsdFpYTmpZV3hsUFdVdWNtVmhaRlZwYm5Rek1pZ3BMSFJvYVhNdVpIVnlZWFJwYjI0OVpTNXlaV0ZrVldsdWRETXlLQ2twTEhSb2FYTXVjR0Z5YzJWTVlXNW5kV0ZuWlNobEtTeGxMbkpsWVdSVmFXNTBNVFlvS1gwcExHOHVZM0psWVhSbFJuVnNiRUp2ZUVOMGIzSW9JbTFsYUdRaUxHWjFibU4wYVc5dUtHVXBlM1JvYVhNdVpteGhaM01tTVNZbUtISXVkMkZ5YmlnaVFtOTRVR0Z5YzJWeUlpd2liV1ZvWkNCaWIzZ2dhVzVqYjNKeVpXTjBiSGtnZFhObGN5Qm1iR0ZuY3lCelpYUWdkRzhnTVN3Z1kyOXVkbVZ5ZEdsdVp5QjJaWEp6YVc5dUlIUnZJREVpS1N4MGFHbHpMblpsY25OcGIyNDlNU2tzZEdocGN5NTJaWEp6YVc5dVBUMHhQM1JvYVhNdVpuSmhaMjFsYm5SZlpIVnlZWFJwYjI0OVpTNXlaV0ZrVldsdWREWTBLQ2s2ZEdocGN5NW1jbUZuYldWdWRGOWtkWEpoZEdsdmJqMWxMbkpsWVdSVmFXNTBNeklvS1gwcExHOHVZM0psWVhSbFJuVnNiRUp2ZUVOMGIzSW9JbTFsZEdFaUxHWjFibU4wYVc5dUtHVXBlM1JvYVhNdVltOTRaWE05VzEwc2J5NURiMjUwWVdsdVpYSkNiM2d1Y0hKdmRHOTBlWEJsTG5CaGNuTmxMbU5oYkd3b2RHaHBjeXhsS1gwcExHOHVZM0psWVhSbFJuVnNiRUp2ZUVOMGIzSW9JbTFtYUdRaUxHWjFibU4wYVc5dUtHVXBlM1JvYVhNdWMyVnhkV1Z1WTJWZmJuVnRZbVZ5UFdVdWNtVmhaRlZwYm5Rek1pZ3BmU2tzYnk1amNtVmhkR1ZHZFd4c1FtOTRRM1J2Y2lnaWJXWnlieUlzWm5WdVkzUnBiMjRvWlNsN2RHaHBjeTVmYzJsNlpUMWxMbkpsWVdSVmFXNTBNeklvS1gwcExHOHVZM0psWVhSbFJuVnNiRUp2ZUVOMGIzSW9JbTEyYUdRaUxHWjFibU4wYVc5dUtHVXBlM1JvYVhNdWRtVnljMmx2YmowOU1UOG9kR2hwY3k1amNtVmhkR2x2Ymw5MGFXMWxQV1V1Y21WaFpGVnBiblEyTkNncExIUm9hWE11Ylc5a2FXWnBZMkYwYVc5dVgzUnBiV1U5WlM1eVpXRmtWV2x1ZERZMEtDa3NkR2hwY3k1MGFXMWxjMk5oYkdVOVpTNXlaV0ZrVldsdWRETXlLQ2tzZEdocGN5NWtkWEpoZEdsdmJqMWxMbkpsWVdSVmFXNTBOalFvS1NrNktIUm9hWE11WTNKbFlYUnBiMjVmZEdsdFpUMWxMbkpsWVdSVmFXNTBNeklvS1N4MGFHbHpMbTF2WkdsbWFXTmhkR2x2Ymw5MGFXMWxQV1V1Y21WaFpGVnBiblF6TWlncExIUm9hWE11ZEdsdFpYTmpZV3hsUFdVdWNtVmhaRlZwYm5Rek1pZ3BMSFJvYVhNdVpIVnlZWFJwYjI0OVpTNXlaV0ZrVldsdWRETXlLQ2twTEhSb2FYTXVjbUYwWlQxbExuSmxZV1JWYVc1ME16SW9LU3gwYUdsekxuWnZiSFZ0WlQxbExuSmxZV1JWYVc1ME1UWW9LVDQrT0N4bExuSmxZV1JWYVc1ME1UWW9LU3hsTG5KbFlXUlZhVzUwTXpKQmNuSmhlU2d5S1N4MGFHbHpMbTFoZEhKcGVEMWxMbkpsWVdSVmFXNTBNekpCY25KaGVTZzVLU3hsTG5KbFlXUlZhVzUwTXpKQmNuSmhlU2cyS1N4MGFHbHpMbTVsZUhSZmRISmhZMnRmYVdROVpTNXlaV0ZrVldsdWRETXlLQ2w5S1N4dkxtTnlaV0YwWlVKdmVFTjBiM0lvSW01d1kyc2lMR1oxYm1OMGFXOXVLR1VwZTNSb2FYTXVjR0ZqYTJWMGMzTmxiblE5WlM1eVpXRmtWV2x1ZERNeUtDbDlLU3h2TG1OeVpXRjBaVUp2ZUVOMGIzSW9JbTUxYlhBaUxHWjFibU4wYVc5dUtHVXBlM1JvYVhNdWNHRmphMlYwYzNObGJuUTlaUzV5WldGa1ZXbHVkRFkwS0NsOUtTeHZMbU55WldGMFpVWjFiR3hDYjNoRGRHOXlLQ0p3WVdSaUlpeG1kVzVqZEdsdmJpaGxLWHQyWVhJZ2REMWxMbkpsWVdSVmFXNTBNeklvS1R0MGFHbHpMbkJoWkdKcGRITTlXMTA3Wm05eUtIWmhjaUJwUFRBN2FUeE5ZWFJvTG1ac2IyOXlLQ2gwS3pFcEx6SXBPMmtyS3lsMGFHbHpMbkJoWkdKcGRITTlaUzV5WldGa1ZXbHVkRGdvS1gwcExHOHVZM0psWVhSbFFtOTRRM1J2Y2lnaWNHRnpjQ0lzWm5WdVkzUnBiMjRvWlNsN2RHaHBjeTVvVTNCaFkybHVaejFsTG5KbFlXUlZhVzUwTXpJb0tTeDBhR2x6TG5aVGNHRmphVzVuUFdVdWNtVmhaRlZwYm5Rek1pZ3BmU2tzYnk1amNtVmhkR1ZDYjNoRGRHOXlLQ0p3WVhsc0lpeG1kVzVqZEdsdmJpaGxLWHQwYUdsekxuUmxlSFE5WlM1eVpXRmtVM1J5YVc1bktIUm9hWE11YzJsNlpTMTBhR2x6TG1oa2NsOXphWHBsS1gwcExHOHVZM0psWVhSbFFtOTRRM1J2Y2lnaWNHRjVkQ0lzWm5WdVkzUnBiMjRvWlNsN2RHaHBjeTV3WVhsc2IyRmtTVVE5WlM1eVpXRmtWV2x1ZERNeUtDazdkbUZ5SUhROVpTNXlaV0ZrVldsdWREZ29LVHQwYUdsekxuSjBjRzFoY0Y5emRISnBibWM5WlM1eVpXRmtVM1J5YVc1bktIUXBmU2tzYnk1amNtVmhkR1ZHZFd4c1FtOTRRM1J2Y2lnaWNHUnBiaUlzWm5WdVkzUnBiMjRvWlNsN2RtRnlJSFE5S0hSb2FYTXVjMmw2WlMxMGFHbHpMbWhrY2w5emFYcGxLUzg0TzNSb2FYTXVjbUYwWlQxYlhTeDBhR2x6TG1sdWFYUnBZV3hmWkdWc1lYazlXMTA3Wm05eUtIWmhjaUJwUFRBN2FUeDBPMmtyS3lsMGFHbHpMbkpoZEdWYmFWMDlaUzV5WldGa1ZXbHVkRE15S0Nrc2RHaHBjeTVwYm1sMGFXRnNYMlJsYkdGNVcybGRQV1V1Y21WaFpGVnBiblF6TWlncGZTa3NieTVqY21WaGRHVkdkV3hzUW05NFEzUnZjaWdpY0dsMGJTSXNablZ1WTNScGIyNG9aU2w3ZEdocGN5NTJaWEp6YVc5dVBUMDlNRDkwYUdsekxtbDBaVzFmYVdROVpTNXlaV0ZrVldsdWRERTJLQ2s2ZEdocGN5NXBkR1Z0WDJsa1BXVXVjbVZoWkZWcGJuUXpNaWdwZlNrc2J5NWpjbVZoZEdWR2RXeHNRbTk0UTNSdmNpZ2ljR2w0YVNJc1puVnVZM1JwYjI0b1pTbDdkbUZ5SUhRN1ptOXlLSFJvYVhNdWJuVnRYMk5vWVc1dVpXeHpQV1V1Y21WaFpGVnBiblE0S0Nrc2RHaHBjeTVpYVhSelgzQmxjbDlqYUdGdWJtVnNjejFiWFN4MFBUQTdkRHgwYUdsekxtNTFiVjlqYUdGdWJtVnNjenQwS3lzcGRHaHBjeTVpYVhSelgzQmxjbDlqYUdGdWJtVnNjMXQwWFQxbExuSmxZV1JWYVc1ME9DZ3BmU2tzYnk1amNtVmhkR1ZDYjNoRGRHOXlLQ0p3YldGNElpeG1kVzVqZEdsdmJpaGxLWHQwYUdsekxtSjVkR1Z6UFdVdWNtVmhaRlZwYm5Rek1pZ3BmU2tzYnk1amNtVmhkR1ZHZFd4c1FtOTRRM1J2Y2lnaWNISm1kQ0lzWm5WdVkzUnBiMjRvWlNsN2RHaHBjeTV5WldaZmRISmhZMnRmYVdROVpTNXlaV0ZrVldsdWRETXlLQ2tzZEdocGN5NXVkSEJmZEdsdFpYTjBZVzF3UFdVdWNtVmhaRlZwYm5RMk5DZ3BMSFJvYVhNdWRtVnljMmx2YmowOVBUQS9kR2hwY3k1dFpXUnBZVjkwYVcxbFBXVXVjbVZoWkZWcGJuUXpNaWdwT25Sb2FYTXViV1ZrYVdGZmRHbHRaVDFsTG5KbFlXUlZhVzUwTmpRb0tYMHBMRzh1WTNKbFlYUmxSblZzYkVKdmVFTjBiM0lvSW5CemMyZ2lMR1oxYm1OMGFXOXVLR1VwZTJsbUtIUm9hWE11YzNsemRHVnRYMmxrUFc4dWNHRnljMlZJWlhneE5paGxLU3gwYUdsekxuWmxjbk5wYjI0K01DbDdkbUZ5SUhROVpTNXlaV0ZrVldsdWRETXlLQ2s3ZEdocGN5NXJhV1E5VzEwN1ptOXlLSFpoY2lCcFBUQTdhVHgwTzJrckt5bDBhR2x6TG10cFpGdHBYVDF2TG5CaGNuTmxTR1Y0TVRZb1pTbDlkbUZ5SUdZOVpTNXlaV0ZrVldsdWRETXlLQ2s3Wmo0d0ppWW9kR2hwY3k1a1lYUmhQV1V1Y21WaFpGVnBiblE0UVhKeVlYa29aaWtwZlNrc2J5NWpjbVZoZEdWR2RXeHNRbTk0UTNSdmNpZ2lZMnhsWmlJc1puVnVZM1JwYjI0b1pTbDdkR2hwY3k1M2FXUjBhRDFsTG5KbFlXUlZhVzUwTXpJb0tTeDBhR2x6TG1obGFXZG9kRDFsTG5KbFlXUlZhVzUwTXpJb0tYMHBMRzh1WTNKbFlYUmxSblZzYkVKdmVFTjBiM0lvSW1WdWIyWWlMR1oxYm1OMGFXOXVLR1VwZTNSb2FYTXVkMmxrZEdnOVpTNXlaV0ZrVldsdWRETXlLQ2tzZEdocGN5NW9aV2xuYUhROVpTNXlaV0ZrVldsdWRETXlLQ2w5S1N4dkxtTnlaV0YwWlVaMWJHeENiM2hEZEc5eUtDSndjbTltSWl4bWRXNWpkR2x2YmlobEtYdDBhR2x6TG5kcFpIUm9QV1V1Y21WaFpGVnBiblF6TWlncExIUm9hWE11YUdWcFoyaDBQV1V1Y21WaFpGVnBiblF6TWlncGZTa3NieTVqY21WaGRHVkRiMjUwWVdsdVpYSkNiM2hEZEc5eUtDSjBZWEIwSWl4dWRXeHNMRnNpWTJ4bFppSXNJbkJ5YjJZaUxDSmxibTltSWwwcExHOHVZM0psWVhSbFFtOTRRM1J2Y2lnaWNuUndJQ0lzWm5WdVkzUnBiMjRvWlNsN2RHaHBjeTVrWlhOamNtbHdkR2x2Ym1admNtMWhkRDFsTG5KbFlXUlRkSEpwYm1jb05Da3NkR2hwY3k1elpIQjBaWGgwUFdVdWNtVmhaRk4wY21sdVp5aDBhR2x6TG5OcGVtVXRkR2hwY3k1b1pISmZjMmw2WlMwMEtYMHBMRzh1WTNKbFlYUmxSblZzYkVKdmVFTjBiM0lvSW5OaGFXOGlMR1oxYm1OMGFXOXVLR1VwZTNSb2FYTXVabXhoWjNNbU1TWW1LSFJvYVhNdVlYVjRYMmx1Wm05ZmRIbHdaVDFsTG5KbFlXUlZhVzUwTXpJb0tTeDBhR2x6TG1GMWVGOXBibVp2WDNSNWNHVmZjR0Z5WVcxbGRHVnlQV1V1Y21WaFpGVnBiblF6TWlncEtUdDJZWElnZEQxbExuSmxZV1JWYVc1ME16SW9LVHQwYUdsekxtOW1abk5sZEQxYlhUdG1iM0lvZG1GeUlHazlNRHRwUEhRN2FTc3JLWFJvYVhNdWRtVnljMmx2YmowOVBUQS9kR2hwY3k1dlptWnpaWFJiYVYwOVpTNXlaV0ZrVldsdWRETXlLQ2s2ZEdocGN5NXZabVp6WlhSYmFWMDlaUzV5WldGa1ZXbHVkRFkwS0NsOUtTeHZMbU55WldGMFpVWjFiR3hDYjNoRGRHOXlLQ0p6WVdsNklpeG1kVzVqZEdsdmJpaGxLWHQwYUdsekxtWnNZV2R6SmpFbUppaDBhR2x6TG1GMWVGOXBibVp2WDNSNWNHVTlaUzV5WldGa1ZXbHVkRE15S0Nrc2RHaHBjeTVoZFhoZmFXNW1iMTkwZVhCbFgzQmhjbUZ0WlhSbGNqMWxMbkpsWVdSVmFXNTBNeklvS1Nrc2RHaHBjeTVrWldaaGRXeDBYM05oYlhCc1pWOXBibVp2WDNOcGVtVTlaUzV5WldGa1ZXbHVkRGdvS1R0MllYSWdkRDFsTG5KbFlXUlZhVzUwTXpJb0tUdHBaaWgwYUdsekxuTmhiWEJzWlY5cGJtWnZYM05wZW1VOVcxMHNkR2hwY3k1a1pXWmhkV3gwWDNOaGJYQnNaVjlwYm1adlgzTnBlbVU5UFQwd0tXWnZjaWgyWVhJZ2FUMHdPMms4ZER0cEt5c3BkR2hwY3k1ellXMXdiR1ZmYVc1bWIxOXphWHBsVzJsZFBXVXVjbVZoWkZWcGJuUTRLQ2w5S1N4dkxtTnlaV0YwWlZOaGJYQnNaVVZ1ZEhKNVEzUnZjaWh2TGxOQlRWQk1SVjlGVGxSU1dWOVVXVkJGWDAxRlZFRkVRVlJCTENKdFpYUjBJaXhtZFc1amRHbHZiaWhsS1h0MGFHbHpMbkJoY25ObFNHVmhaR1Z5S0dVcExIUm9hWE11WTI5dWRHVnVkRjlsYm1OdlpHbHVaejFsTG5KbFlXUkRVM1J5YVc1bktDa3NkR2hwY3k1dGFXMWxYMlp2Y20xaGREMWxMbkpsWVdSRFUzUnlhVzVuS0Nrc2RHaHBjeTV3WVhKelpVWnZiM1JsY2lobEtYMHBMRzh1WTNKbFlYUmxVMkZ0Y0d4bFJXNTBjbmxEZEc5eUtHOHVVMEZOVUV4RlgwVk9WRkpaWDFSWlVFVmZUVVZVUVVSQlZFRXNJbTFsZEhnaUxHWjFibU4wYVc5dUtHVXBlM1JvYVhNdWNHRnljMlZJWldGa1pYSW9aU2tzZEdocGN5NWpiMjUwWlc1MFgyVnVZMjlrYVc1blBXVXVjbVZoWkVOVGRISnBibWNvS1N4MGFHbHpMbTVoYldWemNHRmpaVDFsTG5KbFlXUkRVM1J5YVc1bktDa3NkR2hwY3k1elkyaGxiV0ZmYkc5allYUnBiMjQ5WlM1eVpXRmtRMU4wY21sdVp5Z3BMSFJvYVhNdWNHRnljMlZHYjI5MFpYSW9aU2w5S1N4dkxtTnlaV0YwWlZOaGJYQnNaVVZ1ZEhKNVEzUnZjaWh2TGxOQlRWQk1SVjlGVGxSU1dWOVVXVkJGWDFOVlFsUkpWRXhGTENKelluUjBJaXhtZFc1amRHbHZiaWhsS1h0MGFHbHpMbkJoY25ObFNHVmhaR1Z5S0dVcExIUm9hWE11WTI5dWRHVnVkRjlsYm1OdlpHbHVaejFsTG5KbFlXUkRVM1J5YVc1bktDa3NkR2hwY3k1dGFXMWxYMlp2Y20xaGREMWxMbkpsWVdSRFUzUnlhVzVuS0Nrc2RHaHBjeTV3WVhKelpVWnZiM1JsY2lobEtYMHBMRzh1WTNKbFlYUmxVMkZ0Y0d4bFJXNTBjbmxEZEc5eUtHOHVVMEZOVUV4RlgwVk9WRkpaWDFSWlVFVmZVMVZDVkVsVVRFVXNJbk4wY0hBaUxHWjFibU4wYVc5dUtHVXBlM1JvYVhNdWNHRnljMlZJWldGa1pYSW9aU2tzZEdocGN5NXVZVzFsYzNCaFkyVTlaUzV5WldGa1ExTjBjbWx1WnlncExIUm9hWE11YzJOb1pXMWhYMnh2WTJGMGFXOXVQV1V1Y21WaFpFTlRkSEpwYm1jb0tTeDBhR2x6TG1GMWVHbHNhV0Z5ZVY5dGFXMWxYM1I1Y0dWelBXVXVjbVZoWkVOVGRISnBibWNvS1N4MGFHbHpMbkJoY25ObFJtOXZkR1Z5S0dVcGZTa3NieTVqY21WaGRHVlRZVzF3YkdWRmJuUnllVU4wYjNJb2J5NVRRVTFRVEVWZlJVNVVVbGxmVkZsUVJWOVRWVUpVU1ZSTVJTd2ljM1I0ZENJc1puVnVZM1JwYjI0b1pTbDdkR2hwY3k1d1lYSnpaVWhsWVdSbGNpaGxLU3gwYUdsekxtTnZiblJsYm5SZlpXNWpiMlJwYm1jOVpTNXlaV0ZrUTFOMGNtbHVaeWdwTEhSb2FYTXViV2x0WlY5bWIzSnRZWFE5WlM1eVpXRmtRMU4wY21sdVp5Z3BMSFJvYVhNdWNHRnljMlZHYjI5MFpYSW9aU2w5S1N4dkxtTnlaV0YwWlZOaGJYQnNaVVZ1ZEhKNVEzUnZjaWh2TGxOQlRWQk1SVjlGVGxSU1dWOVVXVkJGWDFOVlFsUkpWRXhGTENKMGVETm5JaXhtZFc1amRHbHZiaWhsS1h0MGFHbHpMbkJoY25ObFNHVmhaR1Z5S0dVcExIUm9hWE11WkdsemNHeGhlVVpzWVdkelBXVXVjbVZoWkZWcGJuUXpNaWdwTEhSb2FYTXVhRzl5YVhwdmJuUmhiRjlxZFhOMGFXWnBZMkYwYVc5dVBXVXVjbVZoWkVsdWREZ29LU3gwYUdsekxuWmxjblJwWTJGc1gycDFjM1JwWm1sallYUnBiMjQ5WlM1eVpXRmtTVzUwT0NncExIUm9hWE11WW1kZlkyOXNiM0pmY21kaVlUMWxMbkpsWVdSVmFXNTBPRUZ5Y21GNUtEUXBMSFJvYVhNdVltOTRYM0psWTI5eVpEMWxMbkpsWVdSSmJuUXhOa0Z5Y21GNUtEUXBMSFJvYVhNdWMzUjViR1ZmY21WamIzSmtQV1V1Y21WaFpGVnBiblE0UVhKeVlYa29NVElwTEhSb2FYTXVjR0Z5YzJWR2IyOTBaWElvWlNsOUtTeHZMbU55WldGMFpWTmhiWEJzWlVWdWRISjVRM1J2Y2lodkxsTkJUVkJNUlY5RlRsUlNXVjlVV1ZCRlgwMUZWRUZFUVZSQkxDSjNkblIwSWl4bWRXNWpkR2x2YmlobEtYdDBhR2x6TG5CaGNuTmxTR1ZoWkdWeUtHVXBMSFJvYVhNdWNHRnljMlZHYjI5MFpYSW9aU2w5S1N4dkxtTnlaV0YwWlZOaGJYQnNaVWR5YjNWd1EzUnZjaWdpWVd4emRDSXNablZ1WTNScGIyNG9aU2w3ZG1GeUlIUXNhVDFsTG5KbFlXUlZhVzUwTVRZb0tUdG1iM0lvZEdocGN5NW1hWEp6ZEY5dmRYUndkWFJmYzJGdGNHeGxQV1V1Y21WaFpGVnBiblF4TmlncExIUm9hWE11YzJGdGNHeGxYMjltWm5ObGREMWJYU3gwUFRBN2REeHBPM1FyS3lsMGFHbHpMbk5oYlhCc1pWOXZabVp6WlhSYmRGMDlaUzV5WldGa1ZXbHVkRE15S0NrN2RtRnlJR1k5ZEdocGN5NWtaWE5qY21sd2RHbHZibDlzWlc1bmRHZ3ROQzAwS21rN1ptOXlLSFJvYVhNdWJuVnRYMjkxZEhCMWRGOXpZVzF3YkdWelBWdGRMSFJvYVhNdWJuVnRYM1J2ZEdGc1gzTmhiWEJzWlhNOVcxMHNkRDB3TzNROFppODBPM1FyS3lsMGFHbHpMbTUxYlY5dmRYUndkWFJmYzJGdGNHeGxjMXQwWFQxbExuSmxZV1JWYVc1ME1UWW9LU3gwYUdsekxtNTFiVjkwYjNSaGJGOXpZVzF3YkdWelczUmRQV1V1Y21WaFpGVnBiblF4TmlncGZTa3NieTVqY21WaGRHVlRZVzF3YkdWSGNtOTFjRU4wYjNJb0ltRjJiR3dpTEdaMWJtTjBhVzl1S0dVcGUzUm9hWE11YkdGNVpYSk9kVzFpWlhJOVpTNXlaV0ZrVldsdWREZ29LU3gwYUdsekxtRmpZM1Z5WVhSbFUzUmhkR2x6ZEdsamMwWnNZV2M5WlM1eVpXRmtWV2x1ZERnb0tTeDBhR2x6TG1GMlowSnBkRkpoZEdVOVpTNXlaV0ZrVldsdWRERTJLQ2tzZEdocGN5NWhkbWRHY21GdFpWSmhkR1U5WlM1eVpXRmtWV2x1ZERFMktDbDlLU3h2TG1OeVpXRjBaVk5oYlhCc1pVZHliM1Z3UTNSdmNpZ2lZWFp6Y3lJc1puVnVZM1JwYjI0b1pTbDdkR2hwY3k1emRXSlRaWEYxWlc1alpVbGtaVzUwYVdacFpYSTlaUzV5WldGa1ZXbHVkREUyS0Nrc2RHaHBjeTVzWVhsbGNrNTFiV0psY2oxbExuSmxZV1JWYVc1ME9DZ3BPM1poY2lCMFBXVXVjbVZoWkZWcGJuUTRLQ2s3ZEdocGN5NWtkWEpoZEdsdmJrWnNZV2M5ZEQ0K055eDBhR2x6TG1GMloxSmhkR1ZHYkdGblBYUStQalltTVN4MGFHbHpMbVIxY21GMGFXOXVSbXhoWnlZbUtIUm9hWE11WkhWeVlYUnBiMjQ5WlM1eVpXRmtWV2x1ZERNeUtDa3BMSFJvYVhNdVlYWm5VbUYwWlVac1lXY21KaWgwYUdsekxtRmpZM1Z5WVhSbFUzUmhkR2x6ZEdsamMwWnNZV2M5WlM1eVpXRmtWV2x1ZERnb0tTeDBhR2x6TG1GMlowSnBkRkpoZEdVOVpTNXlaV0ZrVldsdWRERTJLQ2tzZEdocGN5NWhkbWRHY21GdFpWSmhkR1U5WlM1eVpXRmtWV2x1ZERFMktDa3BMSFJvYVhNdVpHVndaVzVrWlc1amVUMWJYVHRtYjNJb2RtRnlJR2s5WlM1eVpXRmtWV2x1ZERnb0tTeG1QVEE3Wmp4cE8yWXJLeWw3ZG1GeUlIVTllMzA3ZEdocGN5NWtaWEJsYm1SbGJtTjVMbkIxYzJnb2RTa3NkUzV6ZFdKVFpYRkVhWEpsWTNScGIyNUdiR0ZuUFdVdWNtVmhaRlZwYm5RNEtDa3NkUzVzWVhsbGNrNTFiV0psY2oxbExuSmxZV1JWYVc1ME9DZ3BMSFV1YzNWaVUyVnhkV1Z1WTJWSlpHVnVkR2xtYVdWeVBXVXVjbVZoWkZWcGJuUXhOaWdwZlgwcExHOHVZM0psWVhSbFUyRnRjR3hsUjNKdmRYQkRkRzl5S0NKa2RISjBJaXhtZFc1amRHbHZiaWhsS1h0eUxuZGhjbTRvSWtKdmVGQmhjbk5sY2lJc0lsTmhiWEJzWlNCSGNtOTFjQ0IwZVhCbE9pQWlLM1JvYVhNdVozSnZkWEJwYm1kZmRIbHdaU3NpSUc1dmRDQm1kV3hzZVNCd1lYSnpaV1FpS1gwcExHOHVZM0psWVhSbFUyRnRjR3hsUjNKdmRYQkRkRzl5S0NKdGRtbG1JaXhtZFc1amRHbHZiaWhsS1h0eUxuZGhjbTRvSWtKdmVGQmhjbk5sY2lJc0lsTmhiWEJzWlNCSGNtOTFjQ0IwZVhCbE9pQWlLM1JvYVhNdVozSnZkWEJwYm1kZmRIbHdaU3NpSUc1dmRDQm1kV3hzZVNCd1lYSnpaV1FpS1gwcExHOHVZM0psWVhSbFUyRnRjR3hsUjNKdmRYQkRkRzl5S0NKd2NtOXNJaXhtZFc1amRHbHZiaWhsS1h0MGFHbHpMbkp2Ykd4ZlpHbHpkR0Z1WTJVOVpTNXlaV0ZrU1c1ME1UWW9LWDBwTEc4dVkzSmxZWFJsVTJGdGNHeGxSM0p2ZFhCRGRHOXlLQ0p5WVhBZ0lpeG1kVzVqZEdsdmJpaGxLWHQyWVhJZ2REMWxMbkpsWVdSVmFXNTBPQ2dwTzNSb2FYTXViblZ0WDJ4bFlXUnBibWRmYzJGdGNHeGxjMTlyYm05M2JqMTBQajQzTEhSb2FYTXViblZ0WDJ4bFlXUnBibWRmYzJGdGNHeGxjejEwSmpFeU4zMHBMRzh1WTNKbFlYUmxVMkZ0Y0d4bFIzSnZkWEJEZEc5eUtDSnlZWE5vSWl4bWRXNWpkR2x2YmlobEtYdHBaaWgwYUdsekxtOXdaWEpoZEdsdmJsOXdiMmx1ZEY5amIzVnVkRDFsTG5KbFlXUlZhVzUwTVRZb0tTeDBhR2x6TG1SbGMyTnlhWEIwYVc5dVgyeGxibWQwYUNFOVBUSXJLSFJvYVhNdWIzQmxjbUYwYVc5dVgzQnZhVzUwWDJOdmRXNTBQVDA5TVQ4eU9uUm9hWE11YjNCbGNtRjBhVzl1WDNCdmFXNTBYMk52ZFc1MEtqWXBLemtwY2k1M1lYSnVLQ0pDYjNoUVlYSnpaWElpTENKTmFYTnRZWFJqYUNCcGJpQWlLM1JvYVhNdVozSnZkWEJwYm1kZmRIbHdaU3NpSUhOaGJYQnNaU0JuY205MWNDQnNaVzVuZEdnaUtTeDBhR2x6TG1SaGRHRTlaUzV5WldGa1ZXbHVkRGhCY25KaGVTaDBhR2x6TG1SbGMyTnlhWEIwYVc5dVgyeGxibWQwYUMweUtUdGxiSE5sZTJsbUtIUm9hWE11YjNCbGNtRjBhVzl1WDNCdmFXNTBYMk52ZFc1MFBUMDlNU2wwYUdsekxuUmhjbWRsZEY5eVlYUmxYM05vWVhKbFBXVXVjbVZoWkZWcGJuUXhOaWdwTzJWc2MyVjdkR2hwY3k1MFlYSm5aWFJmY21GMFpWOXphR0Z5WlQxYlhTeDBhR2x6TG1GMllXbHNZV0pzWlY5aWFYUnlZWFJsUFZ0ZE8yWnZjaWgyWVhJZ2REMHdPM1E4ZEdocGN5NXZjR1Z5WVhScGIyNWZjRzlwYm5SZlkyOTFiblE3ZENzcktYUm9hWE11WVhaaGFXeGhZbXhsWDJKcGRISmhkR1ZiZEYwOVpTNXlaV0ZrVldsdWRETXlLQ2tzZEdocGN5NTBZWEpuWlhSZmNtRjBaVjl6YUdGeVpWdDBYVDFsTG5KbFlXUlZhVzUwTVRZb0tYMTBhR2x6TG0xaGVHbHRkVzFmWW1sMGNtRjBaVDFsTG5KbFlXUlZhVzUwTXpJb0tTeDBhR2x6TG0xcGJtbHRkVzFmWW1sMGNtRjBaVDFsTG5KbFlXUlZhVzUwTXpJb0tTeDBhR2x6TG1ScGMyTmhjbVJmY0hKcGIzSnBkSGs5WlM1eVpXRmtWV2x1ZERnb0tYMTlLU3h2TG1OeVpXRjBaVk5oYlhCc1pVZHliM1Z3UTNSdmNpZ2ljbTlzYkNJc1puVnVZM1JwYjI0b1pTbDdkR2hwY3k1eWIyeHNYMlJwYzNSaGJtTmxQV1V1Y21WaFpFbHVkREUyS0NsOUtTeHZMbE5oYlhCc1pVZHliM1Z3Ulc1MGNua3VjSEp2ZEc5MGVYQmxMbkJoY25ObFBXWjFibU4wYVc5dUtHVXBlM0l1ZDJGeWJpZ2lRbTk0VUdGeWMyVnlJaXdpVlc1cmJtOTNiaUJUWVcxd2JHVWdSM0p2ZFhBZ2RIbHdaVG9nSWl0MGFHbHpMbWR5YjNWd2FXNW5YM1I1Y0dVcExIUm9hWE11WkdGMFlUMWxMbkpsWVdSVmFXNTBPRUZ5Y21GNUtIUm9hWE11WkdWelkzSnBjSFJwYjI1ZmJHVnVaM1JvS1gwc2J5NWpjbVZoZEdWVFlXMXdiR1ZIY205MWNFTjBiM0lvSW5OamFXWWlMR1oxYm1OMGFXOXVLR1VwZTNJdWQyRnliaWdpUW05NFVHRnljMlZ5SWl3aVUyRnRjR3hsSUVkeWIzVndJSFI1Y0dVNklDSXJkR2hwY3k1bmNtOTFjR2x1WjE5MGVYQmxLeUlnYm05MElHWjFiR3g1SUhCaGNuTmxaQ0lwZlNrc2J5NWpjbVZoZEdWVFlXMXdiR1ZIY205MWNFTjBiM0lvSW5OamJtMGlMR1oxYm1OMGFXOXVLR1VwZTNJdWQyRnliaWdpUW05NFVHRnljMlZ5SWl3aVUyRnRjR3hsSUVkeWIzVndJSFI1Y0dVNklDSXJkR2hwY3k1bmNtOTFjR2x1WjE5MGVYQmxLeUlnYm05MElHWjFiR3g1SUhCaGNuTmxaQ0lwZlNrc2J5NWpjbVZoZEdWVFlXMXdiR1ZIY205MWNFTjBiM0lvSW5ObGFXY2lMR1oxYm1OMGFXOXVLR1VwZTNSb2FYTXVjbVZ6WlhKMlpXUTlaUzV5WldGa1ZXbHVkRGdvS1R0MllYSWdkRDFsTG5KbFlXUlZhVzUwT0NncE8zUm9hWE11WTNKNWNIUmZZbmwwWlY5aWJHOWphejEwUGo0MExIUm9hWE11YzJ0cGNGOWllWFJsWDJKc2IyTnJQWFFtTVRVc2RHaHBjeTVwYzFCeWIzUmxZM1JsWkQxbExuSmxZV1JWYVc1ME9DZ3BMSFJvYVhNdVVHVnlYMU5oYlhCc1pWOUpWbDlUYVhwbFBXVXVjbVZoWkZWcGJuUTRLQ2tzZEdocGN5NUxTVVE5Ynk1d1lYSnpaVWhsZURFMktHVXBMSFJvYVhNdVkyOXVjM1JoYm5SZlNWWmZjMmw2WlQwd0xIUm9hWE11WTI5dWMzUmhiblJmU1ZZOU1DeDBhR2x6TG1selVISnZkR1ZqZEdWa1BUMDlNU1ltZEdocGN5NVFaWEpmVTJGdGNHeGxYMGxXWDFOcGVtVTlQVDB3SmlZb2RHaHBjeTVqYjI1emRHRnVkRjlKVmw5emFYcGxQV1V1Y21WaFpGVnBiblE0S0Nrc2RHaHBjeTVqYjI1emRHRnVkRjlKVmoxbExuSmxZV1JWYVc1ME9FRnljbUY1S0hSb2FYTXVZMjl1YzNSaGJuUmZTVlpmYzJsNlpTa3BmU2tzYnk1amNtVmhkR1ZUWVcxd2JHVkhjbTkxY0VOMGIzSW9Jbk4wYzJFaUxHWjFibU4wYVc5dUtHVXBlM0l1ZDJGeWJpZ2lRbTk0VUdGeWMyVnlJaXdpVTJGdGNHeGxJRWR5YjNWd0lIUjVjR1U2SUNJcmRHaHBjeTVuY205MWNHbHVaMTkwZVhCbEt5SWdibTkwSUdaMWJHeDVJSEJoY25ObFpDSXBmU2tzYnk1amNtVmhkR1ZUWVcxd2JHVkhjbTkxY0VOMGIzSW9Jbk41Ym1NaUxHWjFibU4wYVc5dUtHVXBlM1poY2lCMFBXVXVjbVZoWkZWcGJuUTRLQ2s3ZEdocGN5NU9RVXhmZFc1cGRGOTBlWEJsUFhRbU5qTjlLU3h2TG1OeVpXRjBaVk5oYlhCc1pVZHliM1Z3UTNSdmNpZ2lkR1ZzWlNJc1puVnVZM1JwYjI0b1pTbDdkbUZ5SUhROVpTNXlaV0ZrVldsdWREZ29LVHQwYUdsekxteGxkbVZzWDJsdVpHVndaVzVrWlc1MGJIbGZaR1ZqYjJSaFlteGxQWFErUGpkOUtTeHZMbU55WldGMFpWTmhiWEJzWlVkeWIzVndRM1J2Y2lnaWRITmhjeUlzWm5WdVkzUnBiMjRvWlNsN2NpNTNZWEp1S0NKQ2IzaFFZWEp6WlhJaUxDSlRZVzF3YkdVZ1IzSnZkWEFnZEhsd1pUb2dJaXQwYUdsekxtZHliM1Z3YVc1blgzUjVjR1VySWlCdWIzUWdablZzYkhrZ2NHRnljMlZrSWlsOUtTeHZMbU55WldGMFpWTmhiWEJzWlVkeWIzVndRM1J2Y2lnaWRITmpiQ0lzWm5WdVkzUnBiMjRvWlNsN2NpNTNZWEp1S0NKQ2IzaFFZWEp6WlhJaUxDSlRZVzF3YkdVZ1IzSnZkWEFnZEhsd1pUb2dJaXQwYUdsekxtZHliM1Z3YVc1blgzUjVjR1VySWlCdWIzUWdablZzYkhrZ2NHRnljMlZrSWlsOUtTeHZMbU55WldGMFpWTmhiWEJzWlVkeWIzVndRM1J2Y2lnaWRtbHdjaUlzWm5WdVkzUnBiMjRvWlNsN2NpNTNZWEp1S0NKQ2IzaFFZWEp6WlhJaUxDSlRZVzF3YkdVZ1IzSnZkWEFnZEhsd1pUb2dJaXQwYUdsekxtZHliM1Z3YVc1blgzUjVjR1VySWlCdWIzUWdablZzYkhrZ2NHRnljMlZrSWlsOUtTeHZMbU55WldGMFpVWjFiR3hDYjNoRGRHOXlLQ0p6WW1kd0lpeG1kVzVqZEdsdmJpaGxLWHQwYUdsekxtZHliM1Z3YVc1blgzUjVjR1U5WlM1eVpXRmtVM1J5YVc1bktEUXBMSFJvYVhNdWRtVnljMmx2YmowOVBURS9kR2hwY3k1bmNtOTFjR2x1WjE5MGVYQmxYM0JoY21GdFpYUmxjajFsTG5KbFlXUlZhVzUwTXpJb0tUcDBhR2x6TG1keWIzVndhVzVuWDNSNWNHVmZjR0Z5WVcxbGRHVnlQVEFzZEdocGN5NWxiblJ5YVdWelBWdGRPMlp2Y2loMllYSWdkRDFsTG5KbFlXUlZhVzUwTXpJb0tTeHBQVEE3YVR4ME8ya3JLeWw3ZG1GeUlHWTllMzA3ZEdocGN5NWxiblJ5YVdWekxuQjFjMmdvWmlrc1ppNXpZVzF3YkdWZlkyOTFiblE5WlM1eVpXRmtTVzUwTXpJb0tTeG1MbWR5YjNWd1gyUmxjMk55YVhCMGFXOXVYMmx1WkdWNFBXVXVjbVZoWkVsdWRETXlLQ2w5ZlNrc2J5NWpjbVZoZEdWR2RXeHNRbTk0UTNSdmNpZ2ljMk5vYlNJc1puVnVZM1JwYjI0b1pTbDdkR2hwY3k1elkyaGxiV1ZmZEhsd1pUMWxMbkpsWVdSVGRISnBibWNvTkNrc2RHaHBjeTV6WTJobGJXVmZkbVZ5YzJsdmJqMWxMbkpsWVdSVmFXNTBNeklvS1N4MGFHbHpMbVpzWVdkekpqRW1KaWgwYUdsekxuTmphR1Z0WlY5MWNtazlaUzV5WldGa1UzUnlhVzVuS0hSb2FYTXVjMmw2WlMxMGFHbHpMbWhrY2w5emFYcGxMVGdwS1gwcExHOHVZM0psWVhSbFFtOTRRM1J2Y2lnaWMyUndJQ0lzWm5WdVkzUnBiMjRvWlNsN2RHaHBjeTV6WkhCMFpYaDBQV1V1Y21WaFpGTjBjbWx1WnloMGFHbHpMbk5wZW1VdGRHaHBjeTVvWkhKZmMybDZaU2w5S1N4dkxtTnlaV0YwWlVaMWJHeENiM2hEZEc5eUtDSnpaSFJ3SWl4bWRXNWpkR2x2YmlobEtYdDJZWElnZEN4cFBYUm9hWE11YzJsNlpTMTBhR2x6TG1oa2NsOXphWHBsTzNSb2FYTXVhWE5mYkdWaFpHbHVaejFiWFN4MGFHbHpMbk5oYlhCc1pWOWtaWEJsYm1SelgyOXVQVnRkTEhSb2FYTXVjMkZ0Y0d4bFgybHpYMlJsY0dWdVpHVmtYMjl1UFZ0ZExIUm9hWE11YzJGdGNHeGxYMmhoYzE5eVpXUjFibVJoYm1ONVBWdGRPMlp2Y2loMllYSWdaajB3TzJZOGFUdG1LeXNwZEQxbExuSmxZV1JWYVc1ME9DZ3BMSFJvYVhNdWFYTmZiR1ZoWkdsdVoxdG1YVDEwUGo0MkxIUm9hWE11YzJGdGNHeGxYMlJsY0dWdVpITmZiMjViWmwwOWRENCtOQ1l6TEhSb2FYTXVjMkZ0Y0d4bFgybHpYMlJsY0dWdVpHVmtYMjl1VzJaZFBYUStQakltTXl4MGFHbHpMbk5oYlhCc1pWOW9ZWE5mY21Wa2RXNWtZVzVqZVZ0bVhUMTBKak45S1N4dkxtTnlaV0YwWlVaMWJHeENiM2hEZEc5eUtDSnpaVzVqSWlrc2J5NWpjbVZoZEdWR2RXeHNRbTk0UTNSdmNpZ2ljMmR3WkNJc1puVnVZM1JwYjI0b1pTbDdkR2hwY3k1bmNtOTFjR2x1WjE5MGVYQmxQV1V1Y21WaFpGTjBjbWx1WnlnMEtTeHlMbVJsWW5WbktDSkNiM2hRWVhKelpYSWlMQ0pHYjNWdVpDQlRZVzF3YkdVZ1IzSnZkWEJ6SUc5bUlIUjVjR1VnSWl0MGFHbHpMbWR5YjNWd2FXNW5YM1I1Y0dVcExIUm9hWE11ZG1WeWMybHZiajA5UFRFL2RHaHBjeTVrWldaaGRXeDBYMnhsYm1kMGFEMWxMbkpsWVdSVmFXNTBNeklvS1RwMGFHbHpMbVJsWm1GMWJIUmZiR1Z1WjNSb1BUQXNkR2hwY3k1MlpYSnphVzl1UGoweUppWW9kR2hwY3k1a1pXWmhkV3gwWDJkeWIzVndYMlJsYzJOeWFYQjBhVzl1WDJsdVpHVjRQV1V1Y21WaFpGVnBiblF6TWlncEtTeDBhR2x6TG1WdWRISnBaWE05VzEwN1ptOXlLSFpoY2lCMFBXVXVjbVZoWkZWcGJuUXpNaWdwTEdrOU1EdHBQSFE3YVNzcktYdDJZWElnWmp0dlczUm9hWE11WjNKdmRYQnBibWRmZEhsd1pTc2lVMkZ0Y0d4bFIzSnZkWEJGYm5SeWVTSmRQMlk5Ym1WM0lHOWJkR2hwY3k1bmNtOTFjR2x1WjE5MGVYQmxLeUpUWVcxd2JHVkhjbTkxY0VWdWRISjVJbDBvZEdocGN5NW5jbTkxY0dsdVoxOTBlWEJsS1RwbVBXNWxkeUJ2TGxOaGJYQnNaVWR5YjNWd1JXNTBjbmtvZEdocGN5NW5jbTkxY0dsdVoxOTBlWEJsS1N4MGFHbHpMbVZ1ZEhKcFpYTXVjSFZ6YUNobUtTeDBhR2x6TG5abGNuTnBiMjQ5UFQweFAzUm9hWE11WkdWbVlYVnNkRjlzWlc1bmRHZzlQVDB3UDJZdVpHVnpZM0pwY0hScGIyNWZiR1Z1WjNSb1BXVXVjbVZoWkZWcGJuUXpNaWdwT21ZdVpHVnpZM0pwY0hScGIyNWZiR1Z1WjNSb1BYUm9hWE11WkdWbVlYVnNkRjlzWlc1bmRHZzZaaTVrWlhOamNtbHdkR2x2Ymw5c1pXNW5kR2c5ZEdocGN5NWtaV1poZFd4MFgyeGxibWQwYUN4bUxuZHlhWFJsUFQwOWJ5NVRZVzF3YkdWSGNtOTFjRVZ1ZEhKNUxuQnliM1J2ZEhsd1pTNTNjbWwwWlNZbUtISXVhVzVtYnlnaVFtOTRVR0Z5YzJWeUlpd2lVMkZ0Y0d4bFIzSnZkWEFnWm05eUlIUjVjR1VnSWl0MGFHbHpMbWR5YjNWd2FXNW5YM1I1Y0dVcklpQjNjbWwwYVc1bklHNXZkQ0I1WlhRZ2FXMXdiR1Z0Wlc1MFpXUXNJR3RsWlhCcGJtY2dkVzV3WVhKelpXUWdaR0YwWVNCcGJpQnRaVzF2Y25rZ1ptOXlJR3hoZEdWeUlIZHlhWFJsSWlrc1ppNWtZWFJoUFdVdWNtVmhaRlZwYm5RNFFYSnlZWGtvWmk1a1pYTmpjbWx3ZEdsdmJsOXNaVzVuZEdncExHVXVjRzl6YVhScGIyNHRQV1l1WkdWelkzSnBjSFJwYjI1ZmJHVnVaM1JvS1N4bUxuQmhjbk5sS0dVcGZYMHBMRzh1WTNKbFlYUmxSblZzYkVKdmVFTjBiM0lvSW5OcFpIZ2lMR1oxYm1OMGFXOXVLR1VwZTNSb2FYTXVjbVZtWlhKbGJtTmxYMGxFUFdVdWNtVmhaRlZwYm5Rek1pZ3BMSFJvYVhNdWRHbHRaWE5qWVd4bFBXVXVjbVZoWkZWcGJuUXpNaWdwTEhSb2FYTXVkbVZ5YzJsdmJqMDlQVEEvS0hSb2FYTXVaV0Z5YkdsbGMzUmZjSEpsYzJWdWRHRjBhVzl1WDNScGJXVTlaUzV5WldGa1ZXbHVkRE15S0Nrc2RHaHBjeTVtYVhKemRGOXZabVp6WlhROVpTNXlaV0ZrVldsdWRETXlLQ2twT2loMGFHbHpMbVZoY214cFpYTjBYM0J5WlhObGJuUmhkR2x2Ymw5MGFXMWxQV1V1Y21WaFpGVnBiblEyTkNncExIUm9hWE11Wm1seWMzUmZiMlptYzJWMFBXVXVjbVZoWkZWcGJuUTJOQ2dwS1N4bExuSmxZV1JWYVc1ME1UWW9LU3gwYUdsekxuSmxabVZ5Wlc1alpYTTlXMTA3Wm05eUtIWmhjaUIwUFdVdWNtVmhaRlZwYm5ReE5pZ3BMR2s5TUR0cFBIUTdhU3NyS1h0MllYSWdaajE3ZlR0MGFHbHpMbkpsWm1WeVpXNWpaWE11Y0hWemFDaG1LVHQyWVhJZ2RUMWxMbkpsWVdSVmFXNTBNeklvS1R0bUxuSmxabVZ5Wlc1alpWOTBlWEJsUFhVK1BqTXhKakVzWmk1eVpXWmxjbVZ1WTJWa1gzTnBlbVU5ZFNZeU1UUTNORGd6TmpRM0xHWXVjM1ZpYzJWbmJXVnVkRjlrZFhKaGRHbHZiajFsTG5KbFlXUlZhVzUwTXpJb0tTeDFQV1V1Y21WaFpGVnBiblF6TWlncExHWXVjM1JoY25SelgzZHBkR2hmVTBGUVBYVStQak14SmpFc1ppNVRRVkJmZEhsd1pUMTFQajR5T0NZM0xHWXVVMEZRWDJSbGJIUmhYM1JwYldVOWRTWXlOamcwTXpVME5UVjlmU2tzYnk1VGFXNW5iR1ZKZEdWdFZIbHdaVkpsWm1WeVpXNWpaVUp2ZUQxbWRXNWpkR2x2YmlobExIUXNhU3htS1h0dkxrSnZlQzVqWVd4c0tIUm9hWE1zWlN4MEtTeDBhR2x6TG1oa2NsOXphWHBsUFdrc2RHaHBjeTV6ZEdGeWREMW1mU3h2TGxOcGJtZHNaVWwwWlcxVWVYQmxVbVZtWlhKbGJtTmxRbTk0TG5CeWIzUnZkSGx3WlQxdVpYY2dieTVDYjNnc2J5NVRhVzVuYkdWSmRHVnRWSGx3WlZKbFptVnlaVzVqWlVKdmVDNXdjbTkwYjNSNWNHVXVjR0Z5YzJVOVpuVnVZM1JwYjI0b1pTbDdkR2hwY3k1bWNtOXRYMmwwWlcxZlNVUTlaUzV5WldGa1ZXbHVkREUyS0NrN2RtRnlJSFE5WlM1eVpXRmtWV2x1ZERFMktDazdkR2hwY3k1eVpXWmxjbVZ1WTJWelBWdGRPMlp2Y2loMllYSWdhVDB3TzJrOGREdHBLeXNwZEdocGN5NXlaV1psY21WdVkyVnpXMmxkUFdVdWNtVmhaRlZwYm5ReE5pZ3BmU3h2TGxOcGJtZHNaVWwwWlcxVWVYQmxVbVZtWlhKbGJtTmxRbTk0VEdGeVoyVTlablZ1WTNScGIyNG9aU3gwTEdrc1ppbDdieTVDYjNndVkyRnNiQ2gwYUdsekxHVXNkQ2tzZEdocGN5NW9aSEpmYzJsNlpUMXBMSFJvYVhNdWMzUmhjblE5Wm4wc2J5NVRhVzVuYkdWSmRHVnRWSGx3WlZKbFptVnlaVzVqWlVKdmVFeGhjbWRsTG5CeWIzUnZkSGx3WlQxdVpYY2dieTVDYjNnc2J5NVRhVzVuYkdWSmRHVnRWSGx3WlZKbFptVnlaVzVqWlVKdmVFeGhjbWRsTG5CeWIzUnZkSGx3WlM1d1lYSnpaVDFtZFc1amRHbHZiaWhsS1h0MGFHbHpMbVp5YjIxZmFYUmxiVjlKUkQxbExuSmxZV1JWYVc1ME16SW9LVHQyWVhJZ2REMWxMbkpsWVdSVmFXNTBNVFlvS1R0MGFHbHpMbkpsWm1WeVpXNWpaWE05VzEwN1ptOXlLSFpoY2lCcFBUQTdhVHgwTzJrckt5bDBhR2x6TG5KbFptVnlaVzVqWlhOYmFWMDlaUzV5WldGa1ZXbHVkRE15S0NsOUxHOHVZM0psWVhSbFJuVnNiRUp2ZUVOMGIzSW9JbE50UkcwaUxHWjFibU4wYVc5dUtHVXBlM1JvYVhNdWNISnBiV0Z5ZVZKRGFISnZiV0YwYVdOcGRIbGZlRDFsTG5KbFlXUlZhVzUwTVRZb0tTeDBhR2x6TG5CeWFXMWhjbmxTUTJoeWIyMWhkR2xqYVhSNVgzazlaUzV5WldGa1ZXbHVkREUyS0Nrc2RHaHBjeTV3Y21sdFlYSjVSME5vY205dFlYUnBZMmwwZVY5NFBXVXVjbVZoWkZWcGJuUXhOaWdwTEhSb2FYTXVjSEpwYldGeWVVZERhSEp2YldGMGFXTnBkSGxmZVQxbExuSmxZV1JWYVc1ME1UWW9LU3gwYUdsekxuQnlhVzFoY25sQ1EyaHliMjFoZEdsamFYUjVYM2c5WlM1eVpXRmtWV2x1ZERFMktDa3NkR2hwY3k1d2NtbHRZWEo1UWtOb2NtOXRZWFJwWTJsMGVWOTVQV1V1Y21WaFpGVnBiblF4TmlncExIUm9hWE11ZDJocGRHVlFiMmx1ZEVOb2NtOXRZWFJwWTJsMGVWOTRQV1V1Y21WaFpGVnBiblF4TmlncExIUm9hWE11ZDJocGRHVlFiMmx1ZEVOb2NtOXRZWFJwWTJsMGVWOTVQV1V1Y21WaFpGVnBiblF4TmlncExIUm9hWE11YkhWdGFXNWhibU5sVFdGNFBXVXVjbVZoWkZWcGJuUXpNaWdwTEhSb2FYTXViSFZ0YVc1aGJtTmxUV2x1UFdVdWNtVmhaRlZwYm5Rek1pZ3BmU2tzYnk1amNtVmhkR1ZHZFd4c1FtOTRRM1J2Y2lnaWMyMW9aQ0lzWm5WdVkzUnBiMjRvWlNsN2RHaHBjeTVpWVd4aGJtTmxQV1V1Y21WaFpGVnBiblF4TmlncExHVXVjbVZoWkZWcGJuUXhOaWdwZlNrc2J5NWpjbVZoZEdWR2RXeHNRbTk0UTNSdmNpZ2ljM05wZUNJc1puVnVZM1JwYjI0b1pTbDdkR2hwY3k1emRXSnpaV2R0Wlc1MGN6MWJYVHRtYjNJb2RtRnlJSFE5WlM1eVpXRmtWV2x1ZERNeUtDa3NhVDB3TzJrOGREdHBLeXNwZTNaaGNpQm1QWHQ5TzNSb2FYTXVjM1ZpYzJWbmJXVnVkSE11Y0hWemFDaG1LU3htTG5KaGJtZGxjejFiWFR0bWIzSW9kbUZ5SUhVOVpTNXlaV0ZrVldsdWRETXlLQ2tzZGowd08zWThkVHQyS3lzcGUzWmhjaUI1UFh0OU8yWXVjbUZ1WjJWekxuQjFjMmdvZVNrc2VTNXNaWFpsYkQxbExuSmxZV1JWYVc1ME9DZ3BMSGt1Y21GdVoyVmZjMmw2WlQxbExuSmxZV1JWYVc1ME1qUW9LWDE5ZlNrc2J5NWpjbVZoZEdWR2RXeHNRbTk0UTNSdmNpZ2ljM1JqYnlJc1puVnVZM1JwYjI0b1pTbDdkbUZ5SUhRN2FXWW9kRDFsTG5KbFlXUlZhVzUwTXpJb0tTeDBhR2x6TG1Ob2RXNXJYMjltWm5ObGRITTlXMTBzZEdocGN5NTJaWEp6YVc5dVBUMDlNQ2xtYjNJb2RtRnlJR2s5TUR0cFBIUTdhU3NyS1hSb2FYTXVZMmgxYm10ZmIyWm1jMlYwY3k1d2RYTm9LR1V1Y21WaFpGVnBiblF6TWlncEtYMHBMRzh1WTNKbFlYUmxSblZzYkVKdmVFTjBiM0lvSW5OMFpIQWlMR1oxYm1OMGFXOXVLR1VwZTNaaGNpQjBQU2gwYUdsekxuTnBlbVV0ZEdocGN5NW9aSEpmYzJsNlpTa3ZNanQwYUdsekxuQnlhVzl5YVhSNVBWdGRPMlp2Y2loMllYSWdhVDB3TzJrOGREdHBLeXNwZEdocGN5NXdjbWx2Y21sMGVWdHBYVDFsTG5KbFlXUlZhVzUwTVRZb0tYMHBMRzh1WTNKbFlYUmxSblZzYkVKdmVFTjBiM0lvSW5OMGFHUWlLU3h2TG1OeVpXRjBaVVoxYkd4Q2IzaERkRzl5S0NKemRISnBJaXhtZFc1amRHbHZiaWhsS1h0MGFHbHpMbk4zYVhSamFGOW5jbTkxY0QxbExuSmxZV1JWYVc1ME1UWW9LU3gwYUdsekxtRnNkR1Z5Ym1GMFpWOW5jbTkxY0QxbExuSmxZV1JWYVc1ME1UWW9LU3gwYUdsekxuTjFZbDkwY21GamExOXBaRDFsTG5KbFlXUlZhVzUwTXpJb0tUdDJZWElnZEQwb2RHaHBjeTV6YVhwbExYUm9hWE11YUdSeVgzTnBlbVV0T0Nrdk5EdDBhR2x6TG1GMGRISnBZblYwWlY5c2FYTjBQVnRkTzJadmNpaDJZWElnYVQwd08yazhkRHRwS3lzcGRHaHBjeTVoZEhSeWFXSjFkR1ZmYkdsemRGdHBYVDFsTG5KbFlXUlZhVzUwTXpJb0tYMHBMRzh1WTNKbFlYUmxSblZzYkVKdmVFTjBiM0lvSW5OMGMyTWlMR1oxYm1OMGFXOXVLR1VwZTNaaGNpQjBMR2s3YVdZb2REMWxMbkpsWVdSVmFXNTBNeklvS1N4MGFHbHpMbVpwY25OMFgyTm9kVzVyUFZ0ZExIUm9hWE11YzJGdGNHeGxjMTl3WlhKZlkyaDFibXM5VzEwc2RHaHBjeTV6WVcxd2JHVmZaR1Z6WTNKcGNIUnBiMjVmYVc1a1pYZzlXMTBzZEdocGN5NTJaWEp6YVc5dVBUMDlNQ2xtYjNJb2FUMHdPMms4ZER0cEt5c3BkR2hwY3k1bWFYSnpkRjlqYUhWdWF5NXdkWE5vS0dVdWNtVmhaRlZwYm5Rek1pZ3BLU3gwYUdsekxuTmhiWEJzWlhOZmNHVnlYMk5vZFc1ckxuQjFjMmdvWlM1eVpXRmtWV2x1ZERNeUtDa3BMSFJvYVhNdWMyRnRjR3hsWDJSbGMyTnlhWEIwYVc5dVgybHVaR1Y0TG5CMWMyZ29aUzV5WldGa1ZXbHVkRE15S0NrcGZTa3NieTVqY21WaGRHVkdkV3hzUW05NFEzUnZjaWdpYzNSelpDSXNablZ1WTNScGIyNG9aU2w3ZG1GeUlIUXNhU3htTEhVN1ptOXlLSFJvYVhNdVpXNTBjbWxsY3oxYlhTeG1QV1V1Y21WaFpGVnBiblF6TWlncExIUTlNVHQwUEQxbU8zUXJLeWxwWmlocFBXOHVjR0Z5YzJWUGJtVkNiM2dvWlN3aE1DeDBhR2x6TG5OcGVtVXRLR1V1WjJWMFVHOXphWFJwYjI0b0tTMTBhR2x6TG5OMFlYSjBLU2tzYVM1amIyUmxQVDA5Ynk1UFN5bHZXMmt1ZEhsd1pTc2lVMkZ0Y0d4bFJXNTBjbmtpWFQ4b2RUMXVaWGNnYjF0cExuUjVjR1VySWxOaGJYQnNaVVZ1ZEhKNUlsMG9hUzV6YVhwbEtTeDFMbWhrY2w5emFYcGxQV2t1YUdSeVgzTnBlbVVzZFM1emRHRnlkRDFwTG5OMFlYSjBLVG9vY2k1M1lYSnVLQ0pDYjNoUVlYSnpaWElpTENKVmJtdHViM2R1SUhOaGJYQnNaU0JsYm5SeWVTQjBlWEJsT2lBaUsya3VkSGx3WlNrc2RUMXVaWGNnYnk1VFlXMXdiR1ZGYm5SeWVTaHBMblI1Y0dVc2FTNXphWHBsTEdrdWFHUnlYM05wZW1Vc2FTNXpkR0Z5ZENrcExIVXVkM0pwZEdVOVBUMXZMbE5oYlhCc1pVVnVkSEo1TG5CeWIzUnZkSGx3WlM1M2NtbDBaU1ltS0hJdWFXNW1ieWdpUW05NFVHRnljMlZ5SWl3aVUyRnRjR3hsUlc1MGNua2dJaXQxTG5SNWNHVXJJaUJpYjNnZ2QzSnBkR2x1WnlCdWIzUWdlV1YwSUdsdGNHeGxiV1Z1ZEdWa0xDQnJaV1Z3YVc1bklIVnVjR0Z5YzJWa0lHUmhkR0VnYVc0Z2JXVnRiM0o1SUdadmNpQnNZWFJsY2lCM2NtbDBaU0lwTEhVdWNHRnljMlZFWVhSaFFXNWtVbVYzYVc1a0tHVXBLU3gxTG5CaGNuTmxLR1VwTEhSb2FYTXVaVzUwY21sbGN5NXdkWE5vS0hVcE8yVnNjMlVnY21WMGRYSnVmU2tzYnk1amNtVmhkR1ZHZFd4c1FtOTRRM1J2Y2lnaWMzUnpaeUlzWm5WdVkzUnBiMjRvWlNsN2RHaHBjeTVuY205MWNHbHVaMTkwZVhCbFBXVXVjbVZoWkZWcGJuUXpNaWdwTzNaaGNpQjBQV1V1Y21WaFpGVnBiblF4TmlncE8zUm9hWE11WjNKdmRYQmZaR1Z6WTNKcGNIUnBiMjVmYVc1a1pYZzlXMTA3Wm05eUtIWmhjaUJwUFRBN2FUeDBPMmtyS3lsMGFHbHpMbWR5YjNWd1gyUmxjMk55YVhCMGFXOXVYMmx1WkdWNFcybGRQV1V1Y21WaFpGVnBiblF6TWlncGZTa3NieTVqY21WaGRHVkdkV3hzUW05NFEzUnZjaWdpYzNSemFDSXNablZ1WTNScGIyNG9aU2w3ZG1GeUlIUXNhVHRwWmloMFBXVXVjbVZoWkZWcGJuUXpNaWdwTEhSb2FYTXVjMmhoWkc5M1pXUmZjMkZ0Y0d4bFgyNTFiV0psY25NOVcxMHNkR2hwY3k1emVXNWpYM05oYlhCc1pWOXVkVzFpWlhKelBWdGRMSFJvYVhNdWRtVnljMmx2YmowOVBUQXBabTl5S0drOU1EdHBQSFE3YVNzcktYUm9hWE11YzJoaFpHOTNaV1JmYzJGdGNHeGxYMjUxYldKbGNuTXVjSFZ6YUNobExuSmxZV1JWYVc1ME16SW9LU2tzZEdocGN5NXplVzVqWDNOaGJYQnNaVjl1ZFcxaVpYSnpMbkIxYzJnb1pTNXlaV0ZrVldsdWRETXlLQ2twZlNrc2J5NWpjbVZoZEdWR2RXeHNRbTk0UTNSdmNpZ2ljM1J6Y3lJc1puVnVZM1JwYjI0b1pTbDdkbUZ5SUhRc2FUdHBaaWhwUFdVdWNtVmhaRlZwYm5Rek1pZ3BMSFJvYVhNdWRtVnljMmx2YmowOVBUQXBabTl5S0hSb2FYTXVjMkZ0Y0d4bFgyNTFiV0psY25NOVcxMHNkRDB3TzNROGFUdDBLeXNwZEdocGN5NXpZVzF3YkdWZmJuVnRZbVZ5Y3k1d2RYTm9LR1V1Y21WaFpGVnBiblF6TWlncEtYMHBMRzh1WTNKbFlYUmxSblZzYkVKdmVFTjBiM0lvSW5OMGMzb2lMR1oxYm1OMGFXOXVLR1VwZTNaaGNpQjBPMmxtS0hSb2FYTXVjMkZ0Y0d4bFgzTnBlbVZ6UFZ0ZExIUm9hWE11ZG1WeWMybHZiajA5UFRBcFptOXlLSFJvYVhNdWMyRnRjR3hsWDNOcGVtVTlaUzV5WldGa1ZXbHVkRE15S0Nrc2RHaHBjeTV6WVcxd2JHVmZZMjkxYm5ROVpTNXlaV0ZrVldsdWRETXlLQ2tzZEQwd08zUThkR2hwY3k1ellXMXdiR1ZmWTI5MWJuUTdkQ3NyS1hSb2FYTXVjMkZ0Y0d4bFgzTnBlbVU5UFQwd1AzUm9hWE11YzJGdGNHeGxYM05wZW1WekxuQjFjMmdvWlM1eVpXRmtWV2x1ZERNeUtDa3BPblJvYVhNdWMyRnRjR3hsWDNOcGVtVnpXM1JkUFhSb2FYTXVjMkZ0Y0d4bFgzTnBlbVY5S1N4dkxtTnlaV0YwWlVaMWJHeENiM2hEZEc5eUtDSnpkSFJ6SWl4bWRXNWpkR2x2YmlobEtYdDJZWElnZEN4cExHWTdhV1lvZEQxbExuSmxZV1JWYVc1ME16SW9LU3gwYUdsekxuTmhiWEJzWlY5amIzVnVkSE05VzEwc2RHaHBjeTV6WVcxd2JHVmZaR1ZzZEdGelBWdGRMSFJvYVhNdWRtVnljMmx2YmowOVBUQXBabTl5S0drOU1EdHBQSFE3YVNzcktYUm9hWE11YzJGdGNHeGxYMk52ZFc1MGN5NXdkWE5vS0dVdWNtVmhaRlZwYm5Rek1pZ3BLU3htUFdVdWNtVmhaRWx1ZERNeUtDa3Naand3SmlZb2NpNTNZWEp1S0NKQ2IzaFFZWEp6WlhJaUxDSkdhV3hsSUhWelpYTWdibVZuWVhScGRtVWdjM1IwY3lCellXMXdiR1VnWkdWc2RHRXNJSFZ6YVc1bklIWmhiSFZsSURFZ2FXNXpkR1ZoWkN3Z2MzbHVZeUJ0WVhrZ1ltVWdiRzl6ZENFaUtTeG1QVEVwTEhSb2FYTXVjMkZ0Y0d4bFgyUmxiSFJoY3k1d2RYTm9LR1lwZlNrc2J5NWpjbVZoZEdWR2RXeHNRbTk0UTNSdmNpZ2ljM1IyYVNJc1puVnVZM1JwYjI0b1pTbDdkbUZ5SUhROVpTNXlaV0ZrVldsdWRETXlLQ2s3ZEdocGN5NXphVzVuYkdWZmRtbGxkMTloYkd4dmQyVmtQWFFtTXl4MGFHbHpMbk4wWlhKbGIxOXpZMmhsYldVOVpTNXlaV0ZrVldsdWRETXlLQ2s3ZG1GeUlHazlaUzV5WldGa1ZXbHVkRE15S0NrN2RHaHBjeTV6ZEdWeVpXOWZhVzVrYVdOaGRHbHZibDkwZVhCbFBXVXVjbVZoWkZOMGNtbHVaeWhwS1R0MllYSWdaaXgxTzJadmNpaDBhR2x6TG1KdmVHVnpQVnRkTzJVdVoyVjBVRzl6YVhScGIyNG9LVHgwYUdsekxuTjBZWEowSzNSb2FYTXVjMmw2WlRzcGFXWW9aajF2TG5CaGNuTmxUMjVsUW05NEtHVXNJVEVzZEdocGN5NXphWHBsTFNobExtZGxkRkJ2YzJsMGFXOXVLQ2t0ZEdocGN5NXpkR0Z5ZENrcExHWXVZMjlrWlQwOVBXOHVUMHNwZFQxbUxtSnZlQ3gwYUdsekxtSnZlR1Z6TG5CMWMyZ29kU2tzZEdocGMxdDFMblI1Y0dWZFBYVTdaV3h6WlNCeVpYUjFjbTU5S1N4dkxtTnlaV0YwWlVKdmVFTjBiM0lvSW5OMGVYQWlMR1oxYm1OMGFXOXVLR1VwZTI4dVpuUjVjRUp2ZUM1d2NtOTBiM1I1Y0dVdWNHRnljMlV1WTJGc2JDaDBhR2x6TEdVcGZTa3NieTVqY21WaGRHVkdkV3hzUW05NFEzUnZjaWdpYzNSNk1pSXNablZ1WTNScGIyNG9aU2w3ZG1GeUlIUXNhVHRwWmloMGFHbHpMbk5oYlhCc1pWOXphWHBsY3oxYlhTeDBhR2x6TG5abGNuTnBiMjQ5UFQwd0tXbG1LSFJvYVhNdWNtVnpaWEoyWldROVpTNXlaV0ZrVldsdWRESTBLQ2tzZEdocGN5NW1hV1ZzWkY5emFYcGxQV1V1Y21WaFpGVnBiblE0S0Nrc2FUMWxMbkpsWVdSVmFXNTBNeklvS1N4MGFHbHpMbVpwWld4a1gzTnBlbVU5UFQwMEtXWnZjaWgwUFRBN2REeHBPM1FyUFRJcGUzWmhjaUJtUFdVdWNtVmhaRlZwYm5RNEtDazdkR2hwY3k1ellXMXdiR1ZmYzJsNlpYTmJkRjA5Wmo0K05DWXhOU3gwYUdsekxuTmhiWEJzWlY5emFYcGxjMXQwS3pGZFBXWW1NVFY5Wld4elpTQnBaaWgwYUdsekxtWnBaV3hrWDNOcGVtVTlQVDA0S1dadmNpaDBQVEE3ZER4cE8zUXJLeWwwYUdsekxuTmhiWEJzWlY5emFYcGxjMXQwWFQxbExuSmxZV1JWYVc1ME9DZ3BPMlZzYzJVZ2FXWW9kR2hwY3k1bWFXVnNaRjl6YVhwbFBUMDlNVFlwWm05eUtIUTlNRHQwUEdrN2RDc3JLWFJvYVhNdWMyRnRjR3hsWDNOcGVtVnpXM1JkUFdVdWNtVmhaRlZwYm5ReE5pZ3BPMlZzYzJVZ2NpNWxjbkp2Y2lnaVFtOTRVR0Z5YzJWeUlpd2lSWEp5YjNJZ2FXNGdiR1Z1WjNSb0lHWnBaV3hrSUdsdUlITjBlaklnWW05NElpbDlLU3h2TG1OeVpXRjBaVVoxYkd4Q2IzaERkRzl5S0NKemRXSnpJaXhtZFc1amRHbHZiaWhsS1h0MllYSWdkQ3hwTEdZc2RUdG1iM0lvWmoxbExuSmxZV1JWYVc1ME16SW9LU3gwYUdsekxtVnVkSEpwWlhNOVcxMHNkRDB3TzNROFpqdDBLeXNwZTNaaGNpQjJQWHQ5TzJsbUtIUm9hWE11Wlc1MGNtbGxjMXQwWFQxMkxIWXVjMkZ0Y0d4bFgyUmxiSFJoUFdVdWNtVmhaRlZwYm5Rek1pZ3BMSFl1YzNWaWMyRnRjR3hsY3oxYlhTeDFQV1V1Y21WaFpGVnBiblF4TmlncExIVStNQ2xtYjNJb2FUMHdPMms4ZFR0cEt5c3BlM1poY2lCNVBYdDlPM1l1YzNWaWMyRnRjR3hsY3k1d2RYTm9LSGtwTEhSb2FYTXVkbVZ5YzJsdmJqMDlNVDk1TG5OcGVtVTlaUzV5WldGa1ZXbHVkRE15S0NrNmVTNXphWHBsUFdVdWNtVmhaRlZwYm5ReE5pZ3BMSGt1Y0hKcGIzSnBkSGs5WlM1eVpXRmtWV2x1ZERnb0tTeDVMbVJwYzJOaGNtUmhZbXhsUFdVdWNtVmhaRlZwYm5RNEtDa3NlUzVqYjJSbFkxOXpjR1ZqYVdacFkxOXdZWEpoYldWMFpYSnpQV1V1Y21WaFpGVnBiblF6TWlncGZYMTlLU3h2TG1OeVpXRjBaVVoxYkd4Q2IzaERkRzl5S0NKMFpXNWpJaXhtZFc1amRHbHZiaWhsS1h0cFppaGxMbkpsWVdSVmFXNTBPQ2dwTEhSb2FYTXVkbVZ5YzJsdmJqMDlQVEFwWlM1eVpXRmtWV2x1ZERnb0tUdGxiSE5sZTNaaGNpQjBQV1V1Y21WaFpGVnBiblE0S0NrN2RHaHBjeTVrWldaaGRXeDBYMk55ZVhCMFgySjVkR1ZmWW14dlkyczlkRDQrTkNZeE5TeDBhR2x6TG1SbFptRjFiSFJmYzJ0cGNGOWllWFJsWDJKc2IyTnJQWFFtTVRWOWRHaHBjeTVrWldaaGRXeDBYMmx6VUhKdmRHVmpkR1ZrUFdVdWNtVmhaRlZwYm5RNEtDa3NkR2hwY3k1a1pXWmhkV3gwWDFCbGNsOVRZVzF3YkdWZlNWWmZVMmw2WlQxbExuSmxZV1JWYVc1ME9DZ3BMSFJvYVhNdVpHVm1ZWFZzZEY5TFNVUTlieTV3WVhKelpVaGxlREUyS0dVcExIUm9hWE11WkdWbVlYVnNkRjlwYzFCeWIzUmxZM1JsWkQwOVBURW1KblJvYVhNdVpHVm1ZWFZzZEY5UVpYSmZVMkZ0Y0d4bFgwbFdYMU5wZW1VOVBUMHdKaVlvZEdocGN5NWtaV1poZFd4MFgyTnZibk4wWVc1MFgwbFdYM05wZW1VOVpTNXlaV0ZrVldsdWREZ29LU3gwYUdsekxtUmxabUYxYkhSZlkyOXVjM1JoYm5SZlNWWTlaUzV5WldGa1ZXbHVkRGhCY25KaGVTaDBhR2x6TG1SbFptRjFiSFJmWTI5dWMzUmhiblJmU1ZaZmMybDZaU2twZlNrc2J5NWpjbVZoZEdWR2RXeHNRbTk0UTNSdmNpZ2lkR1prZENJc1puVnVZM1JwYjI0b1pTbDdkR2hwY3k1MlpYSnphVzl1UFQweFAzUm9hWE11WW1GelpVMWxaR2xoUkdWamIyUmxWR2x0WlQxbExuSmxZV1JWYVc1ME5qUW9LVHAwYUdsekxtSmhjMlZOWldScFlVUmxZMjlrWlZScGJXVTlaUzV5WldGa1ZXbHVkRE15S0NsOUtTeHZMbU55WldGMFpVWjFiR3hDYjNoRGRHOXlLQ0owWm1oa0lpeG1kVzVqZEdsdmJpaGxLWHQyWVhJZ2REMHdPM1JvYVhNdWRISmhZMnRmYVdROVpTNXlaV0ZrVldsdWRETXlLQ2tzZEdocGN5NXphWHBsTFhSb2FYTXVhR1J5WDNOcGVtVStkQ1ltZEdocGN5NW1iR0ZuY3ladkxsUkdTRVJmUmt4QlIxOUNRVk5GWDBSQlZFRmZUMFpHVTBWVVB5aDBhR2x6TG1KaGMyVmZaR0YwWVY5dlptWnpaWFE5WlM1eVpXRmtWV2x1ZERZMEtDa3NkQ3M5T0NrNmRHaHBjeTVpWVhObFgyUmhkR0ZmYjJabWMyVjBQVEFzZEdocGN5NXphWHBsTFhSb2FYTXVhR1J5WDNOcGVtVStkQ1ltZEdocGN5NW1iR0ZuY3ladkxsUkdTRVJmUmt4QlIxOVRRVTFRVEVWZlJFVlRRejhvZEdocGN5NWtaV1poZFd4MFgzTmhiWEJzWlY5a1pYTmpjbWx3ZEdsdmJsOXBibVJsZUQxbExuSmxZV1JWYVc1ME16SW9LU3gwS3owMEtUcDBhR2x6TG1SbFptRjFiSFJmYzJGdGNHeGxYMlJsYzJOeWFYQjBhVzl1WDJsdVpHVjRQVEFzZEdocGN5NXphWHBsTFhSb2FYTXVhR1J5WDNOcGVtVStkQ1ltZEdocGN5NW1iR0ZuY3ladkxsUkdTRVJmUmt4QlIxOVRRVTFRVEVWZlJGVlNQeWgwYUdsekxtUmxabUYxYkhSZmMyRnRjR3hsWDJSMWNtRjBhVzl1UFdVdWNtVmhaRlZwYm5Rek1pZ3BMSFFyUFRRcE9uUm9hWE11WkdWbVlYVnNkRjl6WVcxd2JHVmZaSFZ5WVhScGIyNDlNQ3gwYUdsekxuTnBlbVV0ZEdocGN5NW9aSEpmYzJsNlpUNTBKaVowYUdsekxtWnNZV2R6Sm04dVZFWklSRjlHVEVGSFgxTkJUVkJNUlY5VFNWcEZQeWgwYUdsekxtUmxabUYxYkhSZmMyRnRjR3hsWDNOcGVtVTlaUzV5WldGa1ZXbHVkRE15S0Nrc2RDczlOQ2s2ZEdocGN5NWtaV1poZFd4MFgzTmhiWEJzWlY5emFYcGxQVEFzZEdocGN5NXphWHBsTFhSb2FYTXVhR1J5WDNOcGVtVStkQ1ltZEdocGN5NW1iR0ZuY3ladkxsUkdTRVJmUmt4QlIxOVRRVTFRVEVWZlJreEJSMU0vS0hSb2FYTXVaR1ZtWVhWc2RGOXpZVzF3YkdWZlpteGhaM005WlM1eVpXRmtWV2x1ZERNeUtDa3NkQ3M5TkNrNmRHaHBjeTVrWldaaGRXeDBYM05oYlhCc1pWOW1iR0ZuY3owd2ZTa3NieTVqY21WaGRHVkdkV3hzUW05NFEzUnZjaWdpZEdaeVlTSXNablZ1WTNScGIyNG9aU2w3ZEdocGN5NTBjbUZqYTE5SlJEMWxMbkpsWVdSVmFXNTBNeklvS1N4bExuSmxZV1JWYVc1ME1qUW9LVHQyWVhJZ2REMWxMbkpsWVdSVmFXNTBPQ2dwTzNSb2FYTXViR1Z1WjNSb1gzTnBlbVZmYjJaZmRISmhabDl1ZFcwOWRENCtOQ1l6TEhSb2FYTXViR1Z1WjNSb1gzTnBlbVZmYjJaZmRISjFibDl1ZFcwOWRENCtNaVl6TEhSb2FYTXViR1Z1WjNSb1gzTnBlbVZmYjJaZmMyRnRjR3hsWDI1MWJUMTBKak1zZEdocGN5NWxiblJ5YVdWelBWdGRPMlp2Y2loMllYSWdhVDFsTG5KbFlXUlZhVzUwTXpJb0tTeG1QVEE3Wmp4cE8yWXJLeWwwYUdsekxuWmxjbk5wYjI0OVBUMHhQeWgwYUdsekxuUnBiV1U5WlM1eVpXRmtWV2x1ZERZMEtDa3NkR2hwY3k1dGIyOW1YMjltWm5ObGREMWxMbkpsWVdSVmFXNTBOalFvS1NrNktIUm9hWE11ZEdsdFpUMWxMbkpsWVdSVmFXNTBNeklvS1N4MGFHbHpMbTF2YjJaZmIyWm1jMlYwUFdVdWNtVmhaRlZwYm5Rek1pZ3BLU3gwYUdsekxuUnlZV1pmYm5WdFltVnlQV1ZiSW5KbFlXUlZhVzUwSWlzNEtpaDBhR2x6TG14bGJtZDBhRjl6YVhwbFgyOW1YM1J5WVdaZmJuVnRLekVwWFNncExIUm9hWE11ZEhKMWJsOXVkVzFpWlhJOVpWc2ljbVZoWkZWcGJuUWlLemdxS0hSb2FYTXViR1Z1WjNSb1gzTnBlbVZmYjJaZmRISjFibDl1ZFcwck1TbGRLQ2tzZEdocGN5NXpZVzF3YkdWZmJuVnRZbVZ5UFdWYkluSmxZV1JWYVc1MElpczRLaWgwYUdsekxteGxibWQwYUY5emFYcGxYMjltWDNOaGJYQnNaVjl1ZFcwck1TbGRLQ2w5S1N4dkxtTnlaV0YwWlVaMWJHeENiM2hEZEc5eUtDSjBhMmhrSWl4bWRXNWpkR2x2YmlobEtYdDBhR2x6TG5abGNuTnBiMjQ5UFRFL0tIUm9hWE11WTNKbFlYUnBiMjVmZEdsdFpUMWxMbkpsWVdSVmFXNTBOalFvS1N4MGFHbHpMbTF2WkdsbWFXTmhkR2x2Ymw5MGFXMWxQV1V1Y21WaFpGVnBiblEyTkNncExIUm9hWE11ZEhKaFkydGZhV1E5WlM1eVpXRmtWV2x1ZERNeUtDa3NaUzV5WldGa1ZXbHVkRE15S0Nrc2RHaHBjeTVrZFhKaGRHbHZiajFsTG5KbFlXUlZhVzUwTmpRb0tTazZLSFJvYVhNdVkzSmxZWFJwYjI1ZmRHbHRaVDFsTG5KbFlXUlZhVzUwTXpJb0tTeDBhR2x6TG0xdlpHbG1hV05oZEdsdmJsOTBhVzFsUFdVdWNtVmhaRlZwYm5Rek1pZ3BMSFJvYVhNdWRISmhZMnRmYVdROVpTNXlaV0ZrVldsdWRETXlLQ2tzWlM1eVpXRmtWV2x1ZERNeUtDa3NkR2hwY3k1a2RYSmhkR2x2YmoxbExuSmxZV1JWYVc1ME16SW9LU2tzWlM1eVpXRmtWV2x1ZERNeVFYSnlZWGtvTWlrc2RHaHBjeTVzWVhsbGNqMWxMbkpsWVdSSmJuUXhOaWdwTEhSb2FYTXVZV3gwWlhKdVlYUmxYMmR5YjNWd1BXVXVjbVZoWkVsdWRERTJLQ2tzZEdocGN5NTJiMngxYldVOVpTNXlaV0ZrU1c1ME1UWW9LVDQrT0N4bExuSmxZV1JWYVc1ME1UWW9LU3gwYUdsekxtMWhkSEpwZUQxbExuSmxZV1JKYm5Rek1rRnljbUY1S0RrcExIUm9hWE11ZDJsa2RHZzlaUzV5WldGa1ZXbHVkRE15S0Nrc2RHaHBjeTVvWldsbmFIUTlaUzV5WldGa1ZXbHVkRE15S0NsOUtTeHZMbU55WldGMFpVSnZlRU4wYjNJb0luUnRZWGdpTEdaMWJtTjBhVzl1S0dVcGUzUm9hWE11ZEdsdFpUMWxMbkpsWVdSVmFXNTBNeklvS1gwcExHOHVZM0psWVhSbFFtOTRRM1J2Y2lnaWRHMXBiaUlzWm5WdVkzUnBiMjRvWlNsN2RHaHBjeTUwYVcxbFBXVXVjbVZoWkZWcGJuUXpNaWdwZlNrc2J5NWpjbVZoZEdWQ2IzaERkRzl5S0NKMGIzUnNJaXhtZFc1amRHbHZiaWhsS1h0MGFHbHpMbUo1ZEdWemMyVnVkRDFsTG5KbFlXUlZhVzUwTXpJb0tYMHBMRzh1WTNKbFlYUmxRbTk0UTNSdmNpZ2lkSEJoZVNJc1puVnVZM1JwYjI0b1pTbDdkR2hwY3k1aWVYUmxjM05sYm5ROVpTNXlaV0ZrVldsdWRETXlLQ2w5S1N4dkxtTnlaV0YwWlVKdmVFTjBiM0lvSW5Sd2VXd2lMR1oxYm1OMGFXOXVLR1VwZTNSb2FYTXVZbmwwWlhOelpXNTBQV1V1Y21WaFpGVnBiblEyTkNncGZTa3NieTVVY21GamEwZHliM1Z3Vkhsd1pVSnZlQzV3Y205MGIzUjVjR1V1Y0dGeWMyVTlablZ1WTNScGIyNG9aU2w3ZEdocGN5NXdZWEp6WlVaMWJHeElaV0ZrWlhJb1pTa3NkR2hwY3k1MGNtRmphMTluY205MWNGOXBaRDFsTG5KbFlXUlZhVzUwTXpJb0tYMHNieTVqY21WaGRHVlVjbUZqYTBkeWIzVndRM1J2Y2lnaWJYTnlZeUlwTEc4dVZISmhZMnRTWldabGNtVnVZMlZVZVhCbFFtOTRQV1oxYm1OMGFXOXVLR1VzZEN4cExHWXBlMjh1UW05NExtTmhiR3dvZEdocGN5eGxMSFFwTEhSb2FYTXVhR1J5WDNOcGVtVTlhU3gwYUdsekxuTjBZWEowUFdaOUxHOHVWSEpoWTJ0U1pXWmxjbVZ1WTJWVWVYQmxRbTk0TG5CeWIzUnZkSGx3WlQxdVpYY2dieTVDYjNnc2J5NVVjbUZqYTFKbFptVnlaVzVqWlZSNWNHVkNiM2d1Y0hKdmRHOTBlWEJsTG5CaGNuTmxQV1oxYm1OMGFXOXVLR1VwZTNSb2FYTXVkSEpoWTJ0ZmFXUnpQV1V1Y21WaFpGVnBiblF6TWtGeWNtRjVLQ2gwYUdsekxuTnBlbVV0ZEdocGN5NW9aSEpmYzJsNlpTa3ZOQ2w5TEc4dWRISmxaa0p2ZUM1d2NtOTBiM1I1Y0dVdWNHRnljMlU5Wm5WdVkzUnBiMjRvWlNsN1ptOXlLSFpoY2lCMExHazdaUzVuWlhSUWIzTnBkR2x2YmlncFBIUm9hWE11YzNSaGNuUXJkR2hwY3k1emFYcGxPeWxwWmloMFBXOHVjR0Z5YzJWUGJtVkNiM2dvWlN3aE1DeDBhR2x6TG5OcGVtVXRLR1V1WjJWMFVHOXphWFJwYjI0b0tTMTBhR2x6TG5OMFlYSjBLU2tzZEM1amIyUmxQVDA5Ynk1UFN5bHBQVzVsZHlCdkxsUnlZV05yVW1WbVpYSmxibU5sVkhsd1pVSnZlQ2gwTG5SNWNHVXNkQzV6YVhwbExIUXVhR1J5WDNOcGVtVXNkQzV6ZEdGeWRDa3NhUzUzY21sMFpUMDlQVzh1UW05NExuQnliM1J2ZEhsd1pTNTNjbWwwWlNZbWFTNTBlWEJsSVQwOUltMWtZWFFpSmlZb2NpNXBibVp2S0NKQ2IzaFFZWEp6WlhJaUxDSlVjbUZqYTFKbFptVnlaVzVqWlNBaUsya3VkSGx3WlNzaUlHSnZlQ0IzY21sMGFXNW5JRzV2ZENCNVpYUWdhVzF3YkdWdFpXNTBaV1FzSUd0bFpYQnBibWNnZFc1d1lYSnpaV1FnWkdGMFlTQnBiaUJ0WlcxdmNua2dabTl5SUd4aGRHVnlJSGR5YVhSbElpa3NhUzV3WVhKelpVUmhkR0ZCYm1SU1pYZHBibVFvWlNrcExHa3VjR0Z5YzJVb1pTa3NkR2hwY3k1aWIzaGxjeTV3ZFhOb0tHa3BPMlZzYzJVZ2NtVjBkWEp1ZlN4dkxtTnlaV0YwWlVaMWJHeENiM2hEZEc5eUtDSjBjbVZ3SWl4bWRXNWpkR2x2YmlobEtYdG1iM0lvZEdocGN5NTBjbUZqYTE5SlJEMWxMbkpsWVdSVmFXNTBNeklvS1N4MGFHbHpMbUp2ZUdWelBWdGRPMlV1WjJWMFVHOXphWFJwYjI0b0tUeDBhR2x6TG5OMFlYSjBLM1JvYVhNdWMybDZaVHNwYVdZb2NtVjBQVzh1Y0dGeWMyVlBibVZDYjNnb1pTd2hNU3gwYUdsekxuTnBlbVV0S0dVdVoyVjBVRzl6YVhScGIyNG9LUzEwYUdsekxuTjBZWEowS1Nrc2NtVjBMbU52WkdVOVBUMXZMazlMS1dKdmVEMXlaWFF1WW05NExIUm9hWE11WW05NFpYTXVjSFZ6YUNoaWIzZ3BPMlZzYzJVZ2NtVjBkWEp1ZlNrc2J5NWpjbVZoZEdWR2RXeHNRbTk0UTNSdmNpZ2lkSEpsZUNJc1puVnVZM1JwYjI0b1pTbDdkR2hwY3k1MGNtRmphMTlwWkQxbExuSmxZV1JWYVc1ME16SW9LU3gwYUdsekxtUmxabUYxYkhSZmMyRnRjR3hsWDJSbGMyTnlhWEIwYVc5dVgybHVaR1Y0UFdVdWNtVmhaRlZwYm5Rek1pZ3BMSFJvYVhNdVpHVm1ZWFZzZEY5ellXMXdiR1ZmWkhWeVlYUnBiMjQ5WlM1eVpXRmtWV2x1ZERNeUtDa3NkR2hwY3k1a1pXWmhkV3gwWDNOaGJYQnNaVjl6YVhwbFBXVXVjbVZoWkZWcGJuUXpNaWdwTEhSb2FYTXVaR1ZtWVhWc2RGOXpZVzF3YkdWZlpteGhaM005WlM1eVpXRmtWV2x1ZERNeUtDbDlLU3h2TG1OeVpXRjBaVUp2ZUVOMGIzSW9JblJ5Y0hraUxHWjFibU4wYVc5dUtHVXBlM1JvYVhNdVlubDBaWE56Wlc1MFBXVXVjbVZoWkZWcGJuUTJOQ2dwZlNrc2J5NWpjbVZoZEdWR2RXeHNRbTk0UTNSdmNpZ2lkSEoxYmlJc1puVnVZM1JwYjI0b1pTbDdkbUZ5SUhROU1EdHBaaWgwYUdsekxuTmhiWEJzWlY5amIzVnVkRDFsTG5KbFlXUlZhVzUwTXpJb0tTeDBLejAwTEhSb2FYTXVjMmw2WlMxMGFHbHpMbWhrY2w5emFYcGxQblFtSm5Sb2FYTXVabXhoWjNNbWJ5NVVVbFZPWDBaTVFVZFRYMFJCVkVGZlQwWkdVMFZVUHloMGFHbHpMbVJoZEdGZmIyWm1jMlYwUFdVdWNtVmhaRWx1ZERNeUtDa3NkQ3M5TkNrNmRHaHBjeTVrWVhSaFgyOW1abk5sZEQwd0xIUm9hWE11YzJsNlpTMTBhR2x6TG1oa2NsOXphWHBsUG5RbUpuUm9hWE11Wm14aFozTW1ieTVVVWxWT1gwWk1RVWRUWDBaSlVsTlVYMFpNUVVjL0tIUm9hWE11Wm1seWMzUmZjMkZ0Y0d4bFgyWnNZV2R6UFdVdWNtVmhaRlZwYm5Rek1pZ3BMSFFyUFRRcE9uUm9hWE11Wm1seWMzUmZjMkZ0Y0d4bFgyWnNZV2R6UFRBc2RHaHBjeTV6WVcxd2JHVmZaSFZ5WVhScGIyNDlXMTBzZEdocGN5NXpZVzF3YkdWZmMybDZaVDFiWFN4MGFHbHpMbk5oYlhCc1pWOW1iR0ZuY3oxYlhTeDBhR2x6TG5OaGJYQnNaVjlqYjIxd2IzTnBkR2x2Ymw5MGFXMWxYMjltWm5ObGREMWJYU3gwYUdsekxuTnBlbVV0ZEdocGN5NW9aSEpmYzJsNlpUNTBLV1p2Y2loMllYSWdhVDB3TzJrOGRHaHBjeTV6WVcxd2JHVmZZMjkxYm5RN2FTc3JLWFJvYVhNdVpteGhaM01tYnk1VVVsVk9YMFpNUVVkVFgwUlZVa0ZVU1U5T0ppWW9kR2hwY3k1ellXMXdiR1ZmWkhWeVlYUnBiMjViYVYwOVpTNXlaV0ZrVldsdWRETXlLQ2twTEhSb2FYTXVabXhoWjNNbWJ5NVVVbFZPWDBaTVFVZFRYMU5KV2tVbUppaDBhR2x6TG5OaGJYQnNaVjl6YVhwbFcybGRQV1V1Y21WaFpGVnBiblF6TWlncEtTeDBhR2x6TG1ac1lXZHpKbTh1VkZKVlRsOUdURUZIVTE5R1RFRkhVeVltS0hSb2FYTXVjMkZ0Y0d4bFgyWnNZV2R6VzJsZFBXVXVjbVZoWkZWcGJuUXpNaWdwS1N4MGFHbHpMbVpzWVdkekptOHVWRkpWVGw5R1RFRkhVMTlEVkZOZlQwWkdVMFZVSmlZb2RHaHBjeTUyWlhKemFXOXVQVDA5TUQ5MGFHbHpMbk5oYlhCc1pWOWpiMjF3YjNOcGRHbHZibDkwYVcxbFgyOW1abk5sZEZ0cFhUMWxMbkpsWVdSVmFXNTBNeklvS1RwMGFHbHpMbk5oYlhCc1pWOWpiMjF3YjNOcGRHbHZibDkwYVcxbFgyOW1abk5sZEZ0cFhUMWxMbkpsWVdSSmJuUXpNaWdwS1gwcExHOHVZM0psWVhSbFJuVnNiRUp2ZUVOMGIzSW9JblJ6Wld3aUxHWjFibU4wYVc5dUtHVXBlM1JvYVhNdWMzZHBkR05vWDJkeWIzVndQV1V1Y21WaFpGVnBiblF6TWlncE8zWmhjaUIwUFNoMGFHbHpMbk5wZW1VdGRHaHBjeTVvWkhKZmMybDZaUzAwS1M4ME8zUm9hWE11WVhSMGNtbGlkWFJsWDJ4cGMzUTlXMTA3Wm05eUtIWmhjaUJwUFRBN2FUeDBPMmtyS3lsMGFHbHpMbUYwZEhKcFluVjBaVjlzYVhOMFcybGRQV1V1Y21WaFpGVnBiblF6TWlncGZTa3NieTVqY21WaGRHVkdkV3hzUW05NFEzUnZjaWdpZEhoMFF5SXNablZ1WTNScGIyNG9aU2w3ZEdocGN5NWpiMjVtYVdjOVpTNXlaV0ZrUTFOMGNtbHVaeWdwZlNrc2J5NWpjbVZoZEdWR2RXeHNRbTk0UTNSdmNpZ2lkWEpzSUNJc1puVnVZM1JwYjI0b1pTbDdkR2hwY3k1bWJHRm5jeUU5UFRFbUppaDBhR2x6TG14dlkyRjBhVzl1UFdVdWNtVmhaRU5UZEhKcGJtY29LU2w5S1N4dkxtTnlaV0YwWlVaMWJHeENiM2hEZEc5eUtDSjFjbTRnSWl4bWRXNWpkR2x2YmlobEtYdDBhR2x6TG01aGJXVTlaUzV5WldGa1ExTjBjbWx1WnlncExIUm9hWE11YzJsNlpTMTBhR2x6TG1oa2NsOXphWHBsTFhSb2FYTXVibUZ0WlM1c1pXNW5kR2d0TVQ0d0ppWW9kR2hwY3k1c2IyTmhkR2x2YmoxbExuSmxZV1JEVTNSeWFXNW5LQ2twZlNrc2J5NWpjbVZoZEdWVlZVbEVRbTk0S0NKaE5XUTBNR0l6TUdVNE1UUXhNV1JrWW1FeVpqQTRNREF5TURCak9XRTJOaUlzSVRBc0lURXNablZ1WTNScGIyNG9aU2w3ZEdocGN5NU1hWFpsVTJWeWRtVnlUV0Z1YVdabGMzUTlaUzV5WldGa1UzUnlhVzVuS0hSb2FYTXVjMmw2WlMxMGFHbHpMbWhrY2w5emFYcGxLUzV5WlhCc1lXTmxLQzhtTDJjc0lpWmhiWEE3SWlrdWNtVndiR0ZqWlNndlBDOW5MQ0ltYkhRN0lpa3VjbVZ3YkdGalpTZ3ZQaTluTENJbVozUTdJaWt1Y21Wd2JHRmpaU2d2SWk5bkxDSW1jWFZ2ZERzaUtTNXlaWEJzWVdObEtDOG5MMmNzSWlZak1ETTVPeUlwZlNrc2J5NWpjbVZoZEdWVlZVbEVRbTk0S0NKa01EaGhOR1l4T0RFd1pqTTBZVGd5WWpaak9ETXlaRGhoWW1FeE9ETmtNeUlzSVRBc0lURXNablZ1WTNScGIyNG9aU2w3ZEdocGN5NXplWE4wWlcxZmFXUTlieTV3WVhKelpVaGxlREUyS0dVcE8zWmhjaUIwUFdVdWNtVmhaRlZwYm5Rek1pZ3BPM1ErTUNZbUtIUm9hWE11WkdGMFlUMWxMbkpsWVdSVmFXNTBPRUZ5Y21GNUtIUXBLWDBwTEc4dVkzSmxZWFJsVlZWSlJFSnZlQ2dpWVRJek9UUm1OVEkxWVRsaU5HWXhOR0V5TkRRMll6UXlOMk0yTkRoa1pqUWlMQ0V3TENFeEtTeHZMbU55WldGMFpWVlZTVVJDYjNnb0lqZzVOelJrWW1ObE4ySmxOelJqTlRFNE5HWTVOekUwT0dZNU9EZ3lOVFUwSWl3aE1Dd2hNU3htZFc1amRHbHZiaWhsS1h0MGFHbHpMbVJsWm1GMWJIUmZRV3huYjNKcGRHaHRTVVE5WlM1eVpXRmtWV2x1ZERJMEtDa3NkR2hwY3k1a1pXWmhkV3gwWDBsV1gzTnBlbVU5WlM1eVpXRmtWV2x1ZERnb0tTeDBhR2x6TG1SbFptRjFiSFJmUzBsRVBXOHVjR0Z5YzJWSVpYZ3hOaWhsS1gwcExHOHVZM0psWVhSbFZWVkpSRUp2ZUNnaVpEUTRNRGRsWmpKallUTTVORFk1TlRobE5UUXlObU5pT1dVME5tRTNPV1lpTENFd0xDRXhMR1oxYm1OMGFXOXVLR1VwZTNSb2FYTXVabkpoWjIxbGJuUmZZMjkxYm5ROVpTNXlaV0ZrVldsdWREZ29LU3gwYUdsekxtVnVkSEpwWlhNOVcxMDdabTl5S0haaGNpQjBQVEE3ZER4MGFHbHpMbVp5WVdkdFpXNTBYMk52ZFc1ME8zUXJLeWw3ZG1GeUlHazllMzBzWmowd0xIVTlNRHQwYUdsekxuWmxjbk5wYjI0OVBUMHhQeWhtUFdVdWNtVmhaRlZwYm5RMk5DZ3BMSFU5WlM1eVpXRmtWV2x1ZERZMEtDa3BPaWhtUFdVdWNtVmhaRlZwYm5Rek1pZ3BMSFU5WlM1eVpXRmtWV2x1ZERNeUtDa3BMR2t1WVdKemIyeDFkR1ZmZEdsdFpUMW1MR2t1WVdKemIyeDFkR1ZmWkhWeVlYUnBiMjQ5ZFN4MGFHbHpMbVZ1ZEhKcFpYTXVjSFZ6YUNocEtYMTlLU3h2TG1OeVpXRjBaVlZWU1VSQ2IzZ29JalprTVdRNVlqQTFOREprTlRRMFpUWTRNR1V5TVRReFpHRm1aamMxTjJJeUlpd2hNQ3doTVN4bWRXNWpkR2x2YmlobEtYdDBhR2x6TG5abGNuTnBiMjQ5UFQweFB5aDBhR2x6TG1GaWMyOXNkWFJsWDNScGJXVTlaUzV5WldGa1ZXbHVkRFkwS0Nrc2RHaHBjeTVrZFhKaGRHbHZiajFsTG5KbFlXUlZhVzUwTmpRb0tTazZLSFJvYVhNdVlXSnpiMngxZEdWZmRHbHRaVDFsTG5KbFlXUlZhVzUwTXpJb0tTeDBhR2x6TG1SMWNtRjBhVzl1UFdVdWNtVmhaRlZwYm5Rek1pZ3BLWDBwTEc4dVkzSmxZWFJsUm5Wc2JFSnZlRU4wYjNJb0luWnRhR1FpTEdaMWJtTjBhVzl1S0dVcGUzUm9hWE11WjNKaGNHaHBZM050YjJSbFBXVXVjbVZoWkZWcGJuUXhOaWdwTEhSb2FYTXViM0JqYjJ4dmNqMWxMbkpsWVdSVmFXNTBNVFpCY25KaGVTZ3pLWDBwTEc4dVkzSmxZWFJsUm5Wc2JFSnZlRU4wYjNJb0luWndZME1pTEdaMWJtTjBhVzl1S0dVcGUzWmhjaUIwTzNSb2FYTXVkbVZ5YzJsdmJqMDlQVEUvS0hSb2FYTXVjSEp2Wm1sc1pUMWxMbkpsWVdSVmFXNTBPQ2dwTEhSb2FYTXViR1YyWld3OVpTNXlaV0ZrVldsdWREZ29LU3gwUFdVdWNtVmhaRlZwYm5RNEtDa3NkR2hwY3k1aWFYUkVaWEIwYUQxMFBqNDBMSFJvYVhNdVkyaHliMjFoVTNWaWMyRnRjR3hwYm1jOWRENCtNU1kzTEhSb2FYTXVkbWxrWlc5R2RXeHNVbUZ1WjJWR2JHRm5QWFFtTVN4MGFHbHpMbU52Ykc5MWNsQnlhVzFoY21sbGN6MWxMbkpsWVdSVmFXNTBPQ2dwTEhSb2FYTXVkSEpoYm5ObVpYSkRhR0Z5WVdOMFpYSnBjM1JwWTNNOVpTNXlaV0ZrVldsdWREZ29LU3gwYUdsekxtMWhkSEpwZUVOdlpXWm1hV05wWlc1MGN6MWxMbkpsWVdSVmFXNTBPQ2dwTEhSb2FYTXVZMjlrWldOSmJuUnBZV3hwZW1GMGFXOXVSR0YwWVZOcGVtVTlaUzV5WldGa1ZXbHVkREUyS0Nrc2RHaHBjeTVqYjJSbFkwbHVkR2xoYkdsNllYUnBiMjVFWVhSaFBXVXVjbVZoWkZWcGJuUTRRWEp5WVhrb2RHaHBjeTVqYjJSbFkwbHVkR2xoYkdsNllYUnBiMjVFWVhSaFUybDZaU2twT2loMGFHbHpMbkJ5YjJacGJHVTlaUzV5WldGa1ZXbHVkRGdvS1N4MGFHbHpMbXhsZG1Wc1BXVXVjbVZoWkZWcGJuUTRLQ2tzZEQxbExuSmxZV1JWYVc1ME9DZ3BMSFJvYVhNdVltbDBSR1Z3ZEdnOWRENCtOQ1l4TlN4MGFHbHpMbU52Ykc5eVUzQmhZMlU5ZENZeE5TeDBQV1V1Y21WaFpGVnBiblE0S0Nrc2RHaHBjeTVqYUhKdmJXRlRkV0p6WVcxd2JHbHVaejEwUGo0MEpqRTFMSFJvYVhNdWRISmhibk5tWlhKR2RXNWpkR2x2YmoxMFBqNHhKamNzZEdocGN5NTJhV1JsYjBaMWJHeFNZVzVuWlVac1lXYzlkQ1l4TEhSb2FYTXVZMjlrWldOSmJuUnBZV3hwZW1GMGFXOXVSR0YwWVZOcGVtVTlaUzV5WldGa1ZXbHVkREUyS0Nrc2RHaHBjeTVqYjJSbFkwbHVkR2xoYkdsNllYUnBiMjVFWVhSaFBXVXVjbVZoWkZWcGJuUTRRWEp5WVhrb2RHaHBjeTVqYjJSbFkwbHVkR2xoYkdsNllYUnBiMjVFWVhSaFUybDZaU2twZlNrc2J5NWpjbVZoZEdWQ2IzaERkRzl5S0NKMmRIUkRJaXhtZFc1amRHbHZiaWhsS1h0MGFHbHpMblJsZUhROVpTNXlaV0ZrVTNSeWFXNW5LSFJvYVhNdWMybDZaUzEwYUdsekxtaGtjbDl6YVhwbEtYMHBMRzh1WTNKbFlYUmxSblZzYkVKdmVFTjBiM0lvSW5aMlkwTWlMR1oxYm1OMGFXOXVLR1VwZTNaaGNpQjBMR2tzWmoxN2FHVnNaRjlpYVhSek9uWnZhV1FnTUN4dWRXMWZhR1ZzWkY5aWFYUnpPakFzYzNSeVpXRnRYM0psWVdSZk1WOWllWFJsY3pwbWRXNWpkR2x2YmloM0tYdDBhR2x6TG1obGJHUmZZbWwwY3oxM0xuSmxZV1JWYVc1ME9DZ3BMSFJvYVhNdWJuVnRYMmhsYkdSZlltbDBjejA0ZlN4emRISmxZVzFmY21WaFpGOHlYMko1ZEdWek9tWjFibU4wYVc5dUtIY3BlM1JvYVhNdWFHVnNaRjlpYVhSelBYY3VjbVZoWkZWcGJuUXhOaWdwTEhSb2FYTXViblZ0WDJobGJHUmZZbWwwY3oweE5uMHNaWGgwY21GamRGOWlhWFJ6T21aMWJtTjBhVzl1S0hjcGUzWmhjaUJCUFhSb2FYTXVhR1ZzWkY5aWFYUnpQajUwYUdsekxtNTFiVjlvWld4a1gySnBkSE10ZHlZb01UdzhkeWt0TVR0eVpYUjFjbTRnZEdocGN5NXVkVzFmYUdWc1pGOWlhWFJ6TFQxM0xFRjlmVHRwWmlobUxuTjBjbVZoYlY5eVpXRmtYekZmWW5sMFpYTW9aU2tzWmk1bGVIUnlZV04wWDJKcGRITW9OU2tzZEdocGN5NXNaVzVuZEdoVGFYcGxUV2x1ZFhOUGJtVTlaaTVsZUhSeVlXTjBYMkpwZEhNb01pa3NkR2hwY3k1d2RHeGZjSEpsYzJWdWRGOW1iR0ZuUFdZdVpYaDBjbUZqZEY5aWFYUnpLREVwTEhSb2FYTXVjSFJzWDNCeVpYTmxiblJmWm14aFp5bDdaaTV6ZEhKbFlXMWZjbVZoWkY4eVgySjVkR1Z6S0dVcExIUm9hWE11YjJ4elgybGtlRDFtTG1WNGRISmhZM1JmWW1sMGN5ZzVLU3gwYUdsekxtNTFiVjl6ZFdKc1lYbGxjbk05Wmk1bGVIUnlZV04wWDJKcGRITW9NeWtzZEdocGN5NWpiMjV6ZEdGdWRGOW1jbUZ0WlY5eVlYUmxQV1l1WlhoMGNtRmpkRjlpYVhSektESXBMSFJvYVhNdVkyaHliMjFoWDJadmNtMWhkRjlwWkdNOVppNWxlSFJ5WVdOMFgySnBkSE1vTWlrc1ppNXpkSEpsWVcxZmNtVmhaRjh4WDJKNWRHVnpLR1VwTEhSb2FYTXVZbWwwWDJSbGNIUm9YMjFwYm5Wek9EMW1MbVY0ZEhKaFkzUmZZbWwwY3lnektTeG1MbVY0ZEhKaFkzUmZZbWwwY3lnMUtUdDdhV1lvWmk1emRISmxZVzFmY21WaFpGOHlYMko1ZEdWektHVXBMR1l1WlhoMGNtRmpkRjlpYVhSektESXBMSFJvYVhNdWJuVnRYMko1ZEdWelgyTnZibk4wY21GcGJuUmZhVzVtYnoxbUxtVjRkSEpoWTNSZlltbDBjeWcyS1N4MGFHbHpMbWRsYm1WeVlXeGZjSEp2Wm1sc1pWOXBaR005Wmk1bGVIUnlZV04wWDJKcGRITW9OeWtzZEdocGN5NW5aVzVsY21Gc1gzUnBaWEpmWm14aFp6MW1MbVY0ZEhKaFkzUmZZbWwwY3lneEtTeDBhR2x6TG1kbGJtVnlZV3hmYkdWMlpXeGZhV1JqUFdVdWNtVmhaRlZwYm5RNEtDa3NaaTV6ZEhKbFlXMWZjbVZoWkY4eFgySjVkR1Z6S0dVcExIUm9hWE11Y0hSc1gyWnlZVzFsWDI5dWJIbGZZMjl1YzNSeVlXbHVkRjltYkdGblBXWXVaWGgwY21GamRGOWlhWFJ6S0RFcExIUm9hWE11Y0hSc1gyMTFiSFJwYkdGNVpYSmZaVzVoWW14bFpGOW1iR0ZuUFdZdVpYaDBjbUZqZEY5aWFYUnpLREVwTEhSb2FYTXVaMlZ1WlhKaGJGOWpiMjV6ZEhKaGFXNTBYMmx1Wm04OWJtVjNJRlZwYm5RNFFYSnlZWGtvZEdocGN5NXVkVzFmWW5sMFpYTmZZMjl1YzNSeVlXbHVkRjlwYm1adktTeDBhR2x6TG01MWJWOWllWFJsYzE5amIyNXpkSEpoYVc1MFgybHVabThwZTJadmNpaDBQVEE3ZER4MGFHbHpMbTUxYlY5aWVYUmxjMTlqYjI1emRISmhhVzUwWDJsdVptOHRNVHQwS3lzcGUzWmhjaUIxUFdZdVpYaDBjbUZqZEY5aWFYUnpLRFlwTzJZdWMzUnlaV0Z0WDNKbFlXUmZNVjlpZVhSbGN5aGxLVHQyWVhJZ2RqMW1MbVY0ZEhKaFkzUmZZbWwwY3lneUtUdDBhR2x6TG1kbGJtVnlZV3hmWTI5dWMzUnlZV2x1ZEY5cGJtWnZXM1JkUFhVOFBESjhkbjEwYUdsekxtZGxibVZ5WVd4ZlkyOXVjM1J5WVdsdWRGOXBibVp2VzNSb2FYTXViblZ0WDJKNWRHVnpYMk52Ym5OMGNtRnBiblJmYVc1bWJ5MHhYVDFtTG1WNGRISmhZM1JmWW1sMGN5ZzJLWDFsYkhObElHWXVaWGgwY21GamRGOWlhWFJ6S0RZcE8yWnZjaWhtTG5OMGNtVmhiVjl5WldGa1h6RmZZbmwwWlhNb1pTa3NkR2hwY3k1d2RHeGZjM1ZpYkdGNVpYSmZjSEpsYzJWdWRGOXRZWE5yUFRBc2FUMTBhR2x6TG01MWJWOXpkV0pzWVhsbGNuTXRNanRwUGowd095MHRhU2w3ZG1GeUlIazlaaTVsZUhSeVlXTjBYMkpwZEhNb01TazdkR2hwY3k1d2RHeGZjM1ZpYkdGNVpYSmZjSEpsYzJWdWRGOXRZWE5yZkQxNVBEeHBmV1p2Y2locFBYUm9hWE11Ym5WdFgzTjFZbXhoZVdWeWN6dHBQRDA0SmlaMGFHbHpMbTUxYlY5emRXSnNZWGxsY25NK01Uc3JLMmtwWmk1bGVIUnlZV04wWDJKcGRITW9NU2s3Wm05eUtHazlkR2hwY3k1dWRXMWZjM1ZpYkdGNVpYSnpMVEk3YVQ0OU1Ec3RMV2twZEdocGN5NXdkR3hmYzNWaWJHRjVaWEpmY0hKbGMyVnVkRjl0WVhOckpqRThQR2ttSmloMGFHbHpMbk4xWW14aGVXVnlYMnhsZG1Wc1gybGtZMXRwWFQxbExuSmxZV1JWYVc1ME9DZ3BLVHRwWmloMGFHbHpMbkIwYkY5dWRXMWZjM1ZpWDNCeWIyWnBiR1Z6UFdVdWNtVmhaRlZwYm5RNEtDa3NkR2hwY3k1blpXNWxjbUZzWDNOMVlsOXdjbTltYVd4bFgybGtZejFiWFN4MGFHbHpMbkIwYkY5dWRXMWZjM1ZpWDNCeWIyWnBiR1Z6S1dadmNpaDBQVEE3ZER4MGFHbHpMbkIwYkY5dWRXMWZjM1ZpWDNCeWIyWnBiR1Z6TzNRckt5bDBhR2x6TG1kbGJtVnlZV3hmYzNWaVgzQnliMlpwYkdWZmFXUmpMbkIxYzJnb1pTNXlaV0ZrVldsdWRETXlLQ2twZlhSb2FYTXViV0Y0WDNCcFkzUjFjbVZmZDJsa2RHZzlaUzV5WldGa1ZXbHVkREUyS0Nrc2RHaHBjeTV0WVhoZmNHbGpkSFZ5WlY5b1pXbG5hSFE5WlM1eVpXRmtWV2x1ZERFMktDa3NkR2hwY3k1aGRtZGZabkpoYldWZmNtRjBaVDFsTG5KbFlXUlZhVzUwTVRZb0tYMTJZWElnYlQweE1peGlQVEV6TzNSb2FYTXVibUZzZFY5aGNuSmhlWE05VzEwN2RtRnlJSGc5WlM1eVpXRmtWV2x1ZERnb0tUdG1iM0lvZEQwd08zUThlRHQwS3lzcGUzWmhjaUJUUFZ0ZE8zUm9hWE11Ym1Gc2RWOWhjbkpoZVhNdWNIVnphQ2hUS1N4bUxuTjBjbVZoYlY5eVpXRmtYekZmWW5sMFpYTW9aU2tzVXk1amIyMXdiR1YwWlc1bGMzTTlaaTVsZUhSeVlXTjBYMkpwZEhNb01Ta3NaaTVsZUhSeVlXTjBYMkpwZEhNb01pa3NVeTV1WVd4MVgzUjVjR1U5Wmk1bGVIUnlZV04wWDJKcGRITW9OU2s3ZG1GeUlGVTlNVHRtYjNJb1V5NXVZV3gxWDNSNWNHVWhQV0ltSmxNdWJtRnNkVjkwZVhCbElUMXRKaVlvVlQxbExuSmxZV1JWYVc1ME1UWW9LU2tzYVQwd08yazhWVHRwS3lzcGUzWmhjaUJGUFdVdWNtVmhaRlZwYm5ReE5pZ3BPMU11Y0hWemFDaDdaR0YwWVRwbExuSmxZV1JWYVc1ME9FRnljbUY1S0VVcExHeGxibWQwYURwRmZTbDlmWDBwTEc4dVkzSmxZWFJsUm5Wc2JFSnZlRU4wYjNJb0luWjJia01pTEdaMWJtTjBhVzl1S0dVcGUzWmhjaUIwUFhOMGNtMHVjbVZoWkZWcGJuUTRLQ2s3ZEdocGN5NXNaVzVuZEdoVGFYcGxUV2x1ZFhOUGJtVTlkQ1l6ZlNrc2J5NVRZVzF3YkdWRmJuUnllUzV3Y205MGIzUjVjR1V1YVhOV2FXUmxiejFtZFc1amRHbHZiaWdwZTNKbGRIVnliaUV4ZlN4dkxsTmhiWEJzWlVWdWRISjVMbkJ5YjNSdmRIbHdaUzVwYzBGMVpHbHZQV1oxYm1OMGFXOXVLQ2w3Y21WMGRYSnVJVEY5TEc4dVUyRnRjR3hsUlc1MGNua3VjSEp2ZEc5MGVYQmxMbWx6VTNWaWRHbDBiR1U5Wm5WdVkzUnBiMjRvS1h0eVpYUjFjbTRoTVgwc2J5NVRZVzF3YkdWRmJuUnllUzV3Y205MGIzUjVjR1V1YVhOTlpYUmhaR0YwWVQxbWRXNWpkR2x2YmlncGUzSmxkSFZ5YmlFeGZTeHZMbE5oYlhCc1pVVnVkSEo1TG5CeWIzUnZkSGx3WlM1cGMwaHBiblE5Wm5WdVkzUnBiMjRvS1h0eVpYUjFjbTRoTVgwc2J5NVRZVzF3YkdWRmJuUnllUzV3Y205MGIzUjVjR1V1WjJWMFEyOWtaV005Wm5WdVkzUnBiMjRvS1h0eVpYUjFjbTRnZEdocGN5NTBlWEJsTG5KbGNHeGhZMlVvSWk0aUxDSWlLWDBzYnk1VFlXMXdiR1ZGYm5SeWVTNXdjbTkwYjNSNWNHVXVaMlYwVjJsa2RHZzlablZ1WTNScGIyNG9LWHR5WlhSMWNtNGlJbjBzYnk1VFlXMXdiR1ZGYm5SeWVTNXdjbTkwYjNSNWNHVXVaMlYwU0dWcFoyaDBQV1oxYm1OMGFXOXVLQ2w3Y21WMGRYSnVJaUo5TEc4dVUyRnRjR3hsUlc1MGNua3VjSEp2ZEc5MGVYQmxMbWRsZEVOb1lXNXVaV3hEYjNWdWREMW1kVzVqZEdsdmJpZ3BlM0psZEhWeWJpSWlmU3h2TGxOaGJYQnNaVVZ1ZEhKNUxuQnliM1J2ZEhsd1pTNW5aWFJUWVcxd2JHVlNZWFJsUFdaMWJtTjBhVzl1S0NsN2NtVjBkWEp1SWlKOUxHOHVVMkZ0Y0d4bFJXNTBjbmt1Y0hKdmRHOTBlWEJsTG1kbGRGTmhiWEJzWlZOcGVtVTlablZ1WTNScGIyNG9LWHR5WlhSMWNtNGlJbjBzYnk1V2FYTjFZV3hUWVcxd2JHVkZiblJ5ZVM1d2NtOTBiM1I1Y0dVdWFYTldhV1JsYnoxbWRXNWpkR2x2YmlncGUzSmxkSFZ5YmlFd2ZTeHZMbFpwYzNWaGJGTmhiWEJzWlVWdWRISjVMbkJ5YjNSdmRIbHdaUzVuWlhSWGFXUjBhRDFtZFc1amRHbHZiaWdwZTNKbGRIVnliaUIwYUdsekxuZHBaSFJvZlN4dkxsWnBjM1ZoYkZOaGJYQnNaVVZ1ZEhKNUxuQnliM1J2ZEhsd1pTNW5aWFJJWldsbmFIUTlablZ1WTNScGIyNG9LWHR5WlhSMWNtNGdkR2hwY3k1b1pXbG5hSFI5TEc4dVFYVmthVzlUWVcxd2JHVkZiblJ5ZVM1d2NtOTBiM1I1Y0dVdWFYTkJkV1JwYnoxbWRXNWpkR2x2YmlncGUzSmxkSFZ5YmlFd2ZTeHZMa0YxWkdsdlUyRnRjR3hsUlc1MGNua3VjSEp2ZEc5MGVYQmxMbWRsZEVOb1lXNXVaV3hEYjNWdWREMW1kVzVqZEdsdmJpZ3BlM0psZEhWeWJpQjBhR2x6TG1Ob1lXNXVaV3hmWTI5MWJuUjlMRzh1UVhWa2FXOVRZVzF3YkdWRmJuUnllUzV3Y205MGIzUjVjR1V1WjJWMFUyRnRjR3hsVW1GMFpUMW1kVzVqZEdsdmJpZ3BlM0psZEhWeWJpQjBhR2x6TG5OaGJYQnNaWEpoZEdWOUxHOHVRWFZrYVc5VFlXMXdiR1ZGYm5SeWVTNXdjbTkwYjNSNWNHVXVaMlYwVTJGdGNHeGxVMmw2WlQxbWRXNWpkR2x2YmlncGUzSmxkSFZ5YmlCMGFHbHpMbk5oYlhCc1pYTnBlbVY5TEc4dVUzVmlkR2wwYkdWVFlXMXdiR1ZGYm5SeWVTNXdjbTkwYjNSNWNHVXVhWE5UZFdKMGFYUnNaVDFtZFc1amRHbHZiaWdwZTNKbGRIVnliaUV3ZlN4dkxrMWxkR0ZrWVhSaFUyRnRjR3hsUlc1MGNua3VjSEp2ZEc5MGVYQmxMbWx6VFdWMFlXUmhkR0U5Wm5WdVkzUnBiMjRvS1h0eVpYUjFjbTRoTUgwc2J5NWtaV05wYldGc1ZHOUlaWGc5Wm5WdVkzUnBiMjRvWlN4MEtYdDJZWElnYVQxT2RXMWlaWElvWlNrdWRHOVRkSEpwYm1jb01UWXBPMlp2Y2loMFBYUjVjR1Z2WmlCMFBpSjFJbng4ZEQwOVBXNTFiR3cvZEQweU9uUTdhUzVzWlc1bmRHZzhkRHNwYVQwaU1DSXJhVHR5WlhSMWNtNGdhWDBzYnk1aGRtTXhVMkZ0Y0d4bFJXNTBjbmt1Y0hKdmRHOTBlWEJsTG1kbGRFTnZaR1ZqUFc4dVlYWmpNbE5oYlhCc1pVVnVkSEo1TG5CeWIzUnZkSGx3WlM1blpYUkRiMlJsWXoxdkxtRjJZek5UWVcxd2JHVkZiblJ5ZVM1d2NtOTBiM1I1Y0dVdVoyVjBRMjlrWldNOWJ5NWhkbU0wVTJGdGNHeGxSVzUwY25rdWNISnZkRzkwZVhCbExtZGxkRU52WkdWalBXWjFibU4wYVc5dUtDbDdkbUZ5SUdVOWJ5NVRZVzF3YkdWRmJuUnllUzV3Y205MGIzUjVjR1V1WjJWMFEyOWtaV011WTJGc2JDaDBhR2x6S1R0eVpYUjFjbTRnZEdocGN5NWhkbU5EUDJVcklpNGlLMjh1WkdWamFXMWhiRlJ2U0dWNEtIUm9hWE11WVhaalF5NUJWa05RY205bWFXeGxTVzVrYVdOaGRHbHZiaWtyYnk1a1pXTnBiV0ZzVkc5SVpYZ29kR2hwY3k1aGRtTkRMbkJ5YjJacGJHVmZZMjl0Y0dGMGFXSnBiR2wwZVNrcmJ5NWtaV05wYldGc1ZHOUlaWGdvZEdocGN5NWhkbU5ETGtGV1EweGxkbVZzU1c1a2FXTmhkR2x2YmlrNlpYMHNieTVvWlhZeFUyRnRjR3hsUlc1MGNua3VjSEp2ZEc5MGVYQmxMbWRsZEVOdlpHVmpQVzh1YUhaak1WTmhiWEJzWlVWdWRISjVMbkJ5YjNSdmRIbHdaUzVuWlhSRGIyUmxZejFtZFc1amRHbHZiaWdwZTNaaGNpQmxMSFE5Ynk1VFlXMXdiR1ZGYm5SeWVTNXdjbTkwYjNSNWNHVXVaMlYwUTI5a1pXTXVZMkZzYkNoMGFHbHpLVHRwWmloMGFHbHpMbWgyWTBNcGUzTjNhWFJqYUNoMEt6MGlMaUlzZEdocGN5NW9kbU5ETG1kbGJtVnlZV3hmY0hKdlptbHNaVjl6Y0dGalpTbDdZMkZ6WlNBd09uUXJQU0lpTzJKeVpXRnJPMk5oYzJVZ01UcDBLejBpUVNJN1luSmxZV3M3WTJGelpTQXlPblFyUFNKQ0lqdGljbVZoYXp0allYTmxJRE02ZENzOUlrTWlPMkp5WldGcmZYUXJQWFJvYVhNdWFIWmpReTVuWlc1bGNtRnNYM0J5YjJacGJHVmZhV1JqTEhRclBTSXVJanQyWVhJZ2FUMTBhR2x6TG1oMlkwTXVaMlZ1WlhKaGJGOXdjbTltYVd4bFgyTnZiWEJoZEdsaWFXeHBkSGtzWmowd08yWnZjaWhsUFRBN1pUd3pNaVltS0daOFBXa21NU3hsSVQwek1TazdaU3NyS1dZOFBEMHhMR2srUGoweE8zUXJQVzh1WkdWamFXMWhiRlJ2U0dWNEtHWXNNQ2tzZENzOUlpNGlMSFJvYVhNdWFIWmpReTVuWlc1bGNtRnNYM1JwWlhKZlpteGhaejA5UFRBL2RDczlJa3dpT25RclBTSklJaXgwS3oxMGFHbHpMbWgyWTBNdVoyVnVaWEpoYkY5c1pYWmxiRjlwWkdNN2RtRnlJSFU5SVRFc2RqMGlJanRtYjNJb1pUMDFPMlUrUFRBN1pTMHRLU2gwYUdsekxtaDJZME11WjJWdVpYSmhiRjlqYjI1emRISmhhVzUwWDJsdVpHbGpZWFJ2Y2x0bFhYeDhkU2ttSmloMlBTSXVJaXR2TG1SbFkybHRZV3hVYjBobGVDaDBhR2x6TG1oMlkwTXVaMlZ1WlhKaGJGOWpiMjV6ZEhKaGFXNTBYMmx1WkdsallYUnZjbHRsWFN3d0tTdDJMSFU5SVRBcE8zUXJQWFo5Y21WMGRYSnVJSFI5TEc4dWRuWmpNVk5oYlhCc1pVVnVkSEo1TG5CeWIzUnZkSGx3WlM1blpYUkRiMlJsWXoxdkxuWjJhVEZUWVcxd2JHVkZiblJ5ZVM1d2NtOTBiM1I1Y0dVdVoyVjBRMjlrWldNOVpuVnVZM1JwYjI0b0tYdDJZWElnWlN4MFBXOHVVMkZ0Y0d4bFJXNTBjbmt1Y0hKdmRHOTBlWEJsTG1kbGRFTnZaR1ZqTG1OaGJHd29kR2hwY3lrN2FXWW9kR2hwY3k1MmRtTkRLWHQwS3owaUxpSXJkR2hwY3k1MmRtTkRMbWRsYm1WeVlXeGZjSEp2Wm1sc1pWOXBaR01zZEdocGN5NTJkbU5ETG1kbGJtVnlZV3hmZEdsbGNsOW1iR0ZuUDNRclBTSXVTQ0k2ZENzOUlpNU1JaXgwS3oxMGFHbHpMbloyWTBNdVoyVnVaWEpoYkY5c1pYWmxiRjlwWkdNN2RtRnlJR2s5SWlJN2FXWW9kR2hwY3k1MmRtTkRMbWRsYm1WeVlXeGZZMjl1YzNSeVlXbHVkRjlwYm1adktYdDJZWElnWmoxYlhTeDFQVEE3ZFh3OWRHaHBjeTUyZG1ORExuQjBiRjltY21GdFpWOXZibXg1WDJOdmJuTjBjbUZwYm5ROFBEY3NkWHc5ZEdocGN5NTJkbU5ETG5CMGJGOXRkV3gwYVd4aGVXVnlYMlZ1WVdKc1pXUThQRFk3ZG1GeUlIWTdabTl5S0dVOU1EdGxQSFJvYVhNdWRuWmpReTVuWlc1bGNtRnNYMk52Ym5OMGNtRnBiblJmYVc1bWJ5NXNaVzVuZEdnN0t5dGxLWFY4UFhSb2FYTXVkblpqUXk1blpXNWxjbUZzWDJOdmJuTjBjbUZwYm5SZmFXNW1iMXRsWFQ0K01pWTJNeXhtTG5CMWMyZ29kU2tzZFNZbUtIWTlaU2tzZFQxMGFHbHpMbloyWTBNdVoyVnVaWEpoYkY5amIyNXpkSEpoYVc1MFgybHVabTliWlYwK1BqSW1NenRwWmloMlBUMDlkbTlwWkNBd0tXazlJaTVEUVNJN1pXeHpaWHRwUFNJdVF5STdkbUZ5SUhrOUlrRkNRMFJGUmtkSVNVcExURTFPVDFCUlVsTlVWVlpYV0ZsYU1qTTBOVFkzSWl4dFBUQXNZajB3TzJadmNpaGxQVEE3WlR3OWRqc3JLMlVwWm05eUtHMDliVHc4T0h4bVcyVmRMR0lyUFRnN1lqNDlOVHNwZTNaaGNpQjRQVzArUG1JdE5TWXpNVHRwS3oxNVczaGRMR0l0UFRVc2JTWTlLREU4UEdJcExURjlZaVltS0cwOFBEMDFMV0lzYVNzOWVWdHRKak14WFNsOWZYUXJQV2w5Y21WMGRYSnVJSFI5TEc4dWJYQTBZVk5oYlhCc1pVVnVkSEo1TG5CeWIzUnZkSGx3WlM1blpYUkRiMlJsWXoxbWRXNWpkR2x2YmlncGUzWmhjaUJsUFc4dVUyRnRjR3hsUlc1MGNua3VjSEp2ZEc5MGVYQmxMbWRsZEVOdlpHVmpMbU5oYkd3b2RHaHBjeWs3YVdZb2RHaHBjeTVsYzJSekppWjBhR2x6TG1WelpITXVaWE5rS1h0MllYSWdkRDEwYUdsekxtVnpaSE11WlhOa0xtZGxkRTlVU1NncExHazlkR2hwY3k1bGMyUnpMbVZ6WkM1blpYUkJkV1JwYjBOdmJtWnBaeWdwTzNKbGRIVnliaUJsS3lJdUlpdHZMbVJsWTJsdFlXeFViMGhsZUNoMEtTc29hVDhpTGlJcmFUb2lJaWw5Wld4elpTQnlaWFIxY200Z1pYMHNieTV6ZEhoMFUyRnRjR3hsUlc1MGNua3VjSEp2ZEc5MGVYQmxMbWRsZEVOdlpHVmpQV1oxYm1OMGFXOXVLQ2w3ZG1GeUlHVTlieTVUWVcxd2JHVkZiblJ5ZVM1d2NtOTBiM1I1Y0dVdVoyVjBRMjlrWldNdVkyRnNiQ2gwYUdsektUdHlaWFIxY200Z2RHaHBjeTV0YVcxbFgyWnZjbTFoZEQ5bEt5SXVJaXQwYUdsekxtMXBiV1ZmWm05eWJXRjBPbVY5TEc4dWRuQXdPRk5oYlhCc1pVVnVkSEo1TG5CeWIzUnZkSGx3WlM1blpYUkRiMlJsWXoxdkxuWndNRGxUWVcxd2JHVkZiblJ5ZVM1d2NtOTBiM1I1Y0dVdVoyVjBRMjlrWldNOVpuVnVZM1JwYjI0b0tYdDJZWElnWlQxdkxsTmhiWEJzWlVWdWRISjVMbkJ5YjNSdmRIbHdaUzVuWlhSRGIyUmxZeTVqWVd4c0tIUm9hWE1wTEhROWRHaHBjeTUyY0dORExteGxkbVZzTzNROVBUQW1KaWgwUFNJd01DSXBPM1poY2lCcFBYUm9hWE11ZG5CalF5NWlhWFJFWlhCMGFEdHlaWFIxY200Z2FUMDlPQ1ltS0drOUlqQTRJaWtzWlNzaUxqQWlLM1JvYVhNdWRuQmpReTV3Y205bWFXeGxLeUl1SWl0MEt5SXVJaXRwZlN4dkxtRjJNREZUWVcxd2JHVkZiblJ5ZVM1d2NtOTBiM1I1Y0dVdVoyVjBRMjlrWldNOVpuVnVZM1JwYjI0b0tYdDJZWElnWlQxdkxsTmhiWEJzWlVWdWRISjVMbkJ5YjNSdmRIbHdaUzVuWlhSRGIyUmxZeTVqWVd4c0tIUm9hWE1wTEhROWRHaHBjeTVoZGpGRExuTmxjVjlzWlhabGJGOXBaSGhmTUR0MFBERXdKaVlvZEQwaU1DSXJkQ2s3ZG1GeUlHazdjbVYwZFhKdUlIUm9hWE11WVhZeFF5NXpaWEZmY0hKdlptbHNaVDA5UFRJbUpuUm9hWE11WVhZeFF5NW9hV2RvWDJKcGRHUmxjSFJvUFQwOU1UOXBQWFJvYVhNdVlYWXhReTUwZDJWc2RtVmZZbWwwUFQwOU1UOGlNVElpT2lJeE1DSTZkR2hwY3k1aGRqRkRMbk5sY1Y5d2NtOW1hV3hsUEQweUppWW9hVDEwYUdsekxtRjJNVU11YUdsbmFGOWlhWFJrWlhCMGFEMDlQVEUvSWpFd0lqb2lNRGdpS1N4bEt5SXVJaXQwYUdsekxtRjJNVU11YzJWeFgzQnliMlpwYkdVcklpNGlLM1FyS0hSb2FYTXVZWFl4UXk1elpYRmZkR2xsY2w4d1B5SklJam9pVFNJcEt5SXVJaXRwZlN4dkxrSnZlQzV3Y205MGIzUjVjR1V1ZDNKcGRHVklaV0ZrWlhJOVpuVnVZM1JwYjI0b1pTeDBLWHQwYUdsekxuTnBlbVVyUFRnc2RHaHBjeTV6YVhwbFBtd21KaWgwYUdsekxuTnBlbVVyUFRncExIUm9hWE11ZEhsd1pUMDlQU0oxZFdsa0lpWW1LSFJvYVhNdWMybDZaU3M5TVRZcExISXVaR1ZpZFdjb0lrSnZlRmR5YVhSbGNpSXNJbGR5YVhScGJtY2dZbTk0SUNJcmRHaHBjeTUwZVhCbEt5SWdiMllnYzJsNlpUb2dJaXQwYUdsekxuTnBlbVVySWlCaGRDQndiM05wZEdsdmJpQWlLMlV1WjJWMFVHOXphWFJwYjI0b0tTc29kSHg4SWlJcEtTeDBhR2x6TG5OcGVtVStiRDlsTG5keWFYUmxWV2x1ZERNeUtERXBPaWgwYUdsekxuTnBlbVZRYjNOcGRHbHZiajFsTG1kbGRGQnZjMmwwYVc5dUtDa3NaUzUzY21sMFpWVnBiblF6TWloMGFHbHpMbk5wZW1VcEtTeGxMbmR5YVhSbFUzUnlhVzVuS0hSb2FYTXVkSGx3WlN4dWRXeHNMRFFwTEhSb2FYTXVkSGx3WlQwOVBTSjFkV2xrSWlZbVpTNTNjbWwwWlZWcGJuUTRRWEp5WVhrb2RHaHBjeTUxZFdsa0tTeDBhR2x6TG5OcGVtVStiQ1ltWlM1M2NtbDBaVlZwYm5RMk5DaDBhR2x6TG5OcGVtVXBmU3h2TGtaMWJHeENiM2d1Y0hKdmRHOTBlWEJsTG5keWFYUmxTR1ZoWkdWeVBXWjFibU4wYVc5dUtHVXBlM1JvYVhNdWMybDZaU3M5TkN4dkxrSnZlQzV3Y205MGIzUjVjR1V1ZDNKcGRHVklaV0ZrWlhJdVkyRnNiQ2gwYUdsekxHVXNJaUIyUFNJcmRHaHBjeTUyWlhKemFXOXVLeUlnWmowaUszUm9hWE11Wm14aFozTXBMR1V1ZDNKcGRHVlZhVzUwT0NoMGFHbHpMblpsY25OcGIyNHBMR1V1ZDNKcGRHVlZhVzUwTWpRb2RHaHBjeTVtYkdGbmN5bDlMRzh1UW05NExuQnliM1J2ZEhsd1pTNTNjbWwwWlQxbWRXNWpkR2x2YmlobEtYdDBhR2x6TG5SNWNHVTlQVDBpYldSaGRDSS9kR2hwY3k1a1lYUmhKaVlvZEdocGN5NXphWHBsUFhSb2FYTXVaR0YwWVM1c1pXNW5kR2dzZEdocGN5NTNjbWwwWlVobFlXUmxjaWhsS1N4bExuZHlhWFJsVldsdWREaEJjbkpoZVNoMGFHbHpMbVJoZEdFcEtUb29kR2hwY3k1emFYcGxQWFJvYVhNdVpHRjBZVDkwYUdsekxtUmhkR0V1YkdWdVozUm9PakFzZEdocGN5NTNjbWwwWlVobFlXUmxjaWhsS1N4MGFHbHpMbVJoZEdFbUptVXVkM0pwZEdWVmFXNTBPRUZ5Y21GNUtIUm9hWE11WkdGMFlTa3BmU3h2TGtOdmJuUmhhVzVsY2tKdmVDNXdjbTkwYjNSNWNHVXVkM0pwZEdVOVpuVnVZM1JwYjI0b1pTbDdkR2hwY3k1emFYcGxQVEFzZEdocGN5NTNjbWwwWlVobFlXUmxjaWhsS1R0bWIzSW9kbUZ5SUhROU1EdDBQSFJvYVhNdVltOTRaWE11YkdWdVozUm9PM1FyS3lsMGFHbHpMbUp2ZUdWelczUmRKaVlvZEdocGN5NWliM2hsYzF0MFhTNTNjbWwwWlNobEtTeDBhR2x6TG5OcGVtVXJQWFJvYVhNdVltOTRaWE5iZEYwdWMybDZaU2s3Y2k1a1pXSjFaeWdpUW05NFYzSnBkR1Z5SWl3aVFXUnFkWE4wYVc1bklHSnZlQ0FpSzNSb2FYTXVkSGx3WlNzaUlIZHBkR2dnYm1WM0lITnBlbVVnSWl0MGFHbHpMbk5wZW1VcExHVXVZV1JxZFhOMFZXbHVkRE15S0hSb2FYTXVjMmw2WlZCdmMybDBhVzl1TEhSb2FYTXVjMmw2WlNsOUxHOHVWSEpoWTJ0U1pXWmxjbVZ1WTJWVWVYQmxRbTk0TG5CeWIzUnZkSGx3WlM1M2NtbDBaVDFtZFc1amRHbHZiaWhsS1h0MGFHbHpMbk5wZW1VOWRHaHBjeTUwY21GamExOXBaSE11YkdWdVozUm9LalFzZEdocGN5NTNjbWwwWlVobFlXUmxjaWhsS1N4bExuZHlhWFJsVldsdWRETXlRWEp5WVhrb2RHaHBjeTUwY21GamExOXBaSE1wZlN4dkxtRjJZME5DYjNndWNISnZkRzkwZVhCbExuZHlhWFJsUFdaMWJtTjBhVzl1S0dVcGUzWmhjaUIwTzJadmNpaDBhR2x6TG5OcGVtVTlOeXgwUFRBN2REeDBhR2x6TGxOUVV5NXNaVzVuZEdnN2RDc3JLWFJvYVhNdWMybDZaU3M5TWl0MGFHbHpMbE5RVTF0MFhTNXNaVzVuZEdnN1ptOXlLSFE5TUR0MFBIUm9hWE11VUZCVExteGxibWQwYUR0MEt5c3BkR2hwY3k1emFYcGxLejB5SzNSb2FYTXVVRkJUVzNSZExteGxibWQwYUR0bWIzSW9kR2hwY3k1bGVIUW1KaWgwYUdsekxuTnBlbVVyUFhSb2FYTXVaWGgwTG14bGJtZDBhQ2tzZEdocGN5NTNjbWwwWlVobFlXUmxjaWhsS1N4bExuZHlhWFJsVldsdWREZ29kR2hwY3k1amIyNW1hV2QxY21GMGFXOXVWbVZ5YzJsdmJpa3NaUzUzY21sMFpWVnBiblE0S0hSb2FYTXVRVlpEVUhKdlptbHNaVWx1WkdsallYUnBiMjRwTEdVdWQzSnBkR1ZWYVc1ME9DaDBhR2x6TG5CeWIyWnBiR1ZmWTI5dGNHRjBhV0pwYkdsMGVTa3NaUzUzY21sMFpWVnBiblE0S0hSb2FYTXVRVlpEVEdWMlpXeEpibVJwWTJGMGFXOXVLU3hsTG5keWFYUmxWV2x1ZERnb2RHaHBjeTVzWlc1bmRHaFRhWHBsVFdsdWRYTlBibVVyTWpVeUtTeGxMbmR5YVhSbFZXbHVkRGdvZEdocGN5NVRVRk11YkdWdVozUm9Lekl5TkNrc2REMHdPM1E4ZEdocGN5NVRVRk11YkdWdVozUm9PM1FyS3lsbExuZHlhWFJsVldsdWRERTJLSFJvYVhNdVUxQlRXM1JkTG14bGJtZDBhQ2tzWlM1M2NtbDBaVlZwYm5RNFFYSnlZWGtvZEdocGN5NVRVRk5iZEYwdWJtRnNkU2s3Wm05eUtHVXVkM0pwZEdWVmFXNTBPQ2gwYUdsekxsQlFVeTVzWlc1bmRHZ3BMSFE5TUR0MFBIUm9hWE11VUZCVExteGxibWQwYUR0MEt5c3BaUzUzY21sMFpWVnBiblF4TmloMGFHbHpMbEJRVTF0MFhTNXNaVzVuZEdncExHVXVkM0pwZEdWVmFXNTBPRUZ5Y21GNUtIUm9hWE11VUZCVFczUmRMbTVoYkhVcE8zUm9hWE11WlhoMEppWmxMbmR5YVhSbFZXbHVkRGhCY25KaGVTaDBhR2x6TG1WNGRDbDlMRzh1WTI4Mk5FSnZlQzV3Y205MGIzUjVjR1V1ZDNKcGRHVTlablZ1WTNScGIyNG9aU2w3ZG1GeUlIUTdabTl5S0hSb2FYTXVkbVZ5YzJsdmJqMHdMSFJvYVhNdVpteGhaM005TUN4MGFHbHpMbk5wZW1VOU5DczRLblJvYVhNdVkyaDFibXRmYjJabWMyVjBjeTVzWlc1bmRHZ3NkR2hwY3k1M2NtbDBaVWhsWVdSbGNpaGxLU3hsTG5keWFYUmxWV2x1ZERNeUtIUm9hWE11WTJoMWJtdGZiMlptYzJWMGN5NXNaVzVuZEdncExIUTlNRHQwUEhSb2FYTXVZMmgxYm10ZmIyWm1jMlYwY3k1c1pXNW5kR2c3ZENzcktXVXVkM0pwZEdWVmFXNTBOalFvZEdocGN5NWphSFZ1YTE5dlptWnpaWFJ6VzNSZEtYMHNieTVqYzJ4blFtOTRMbkJ5YjNSdmRIbHdaUzUzY21sMFpUMW1kVzVqZEdsdmJpaGxLWHQwYUdsekxuWmxjbk5wYjI0OU1DeDBhR2x6TG1ac1lXZHpQVEFzZEdocGN5NXphWHBsUFRRcU5TeDBhR2x6TG5keWFYUmxTR1ZoWkdWeUtHVXBMR1V1ZDNKcGRHVkpiblF6TWloMGFHbHpMbU52YlhCdmMybDBhVzl1Vkc5RVZGTlRhR2xtZENrc1pTNTNjbWwwWlVsdWRETXlLSFJvYVhNdWJHVmhjM1JFWldOdlpHVlViMFJwYzNCc1lYbEVaV3gwWVNrc1pTNTNjbWwwWlVsdWRETXlLSFJvYVhNdVozSmxZWFJsYzNSRVpXTnZaR1ZVYjBScGMzQnNZWGxFWld4MFlTa3NaUzUzY21sMFpVbHVkRE15S0hSb2FYTXVZMjl0Y0c5emFYUnBiMjVUZEdGeWRGUnBiV1VwTEdVdWQzSnBkR1ZKYm5Rek1paDBhR2x6TG1OdmJYQnZjMmwwYVc5dVJXNWtWR2x0WlNsOUxHOHVZM1IwYzBKdmVDNXdjbTkwYjNSNWNHVXVkM0pwZEdVOVpuVnVZM1JwYjI0b1pTbDdkbUZ5SUhRN1ptOXlLSFJvYVhNdWRtVnljMmx2Ymowd0xIUm9hWE11Wm14aFozTTlNQ3gwYUdsekxuTnBlbVU5TkNzNEtuUm9hWE11YzJGdGNHeGxYMk52ZFc1MGN5NXNaVzVuZEdnc2RHaHBjeTUzY21sMFpVaGxZV1JsY2lobEtTeGxMbmR5YVhSbFZXbHVkRE15S0hSb2FYTXVjMkZ0Y0d4bFgyTnZkVzUwY3k1c1pXNW5kR2dwTEhROU1EdDBQSFJvYVhNdWMyRnRjR3hsWDJOdmRXNTBjeTVzWlc1bmRHZzdkQ3NyS1dVdWQzSnBkR1ZWYVc1ME16SW9kR2hwY3k1ellXMXdiR1ZmWTI5MWJuUnpXM1JkS1N4MGFHbHpMblpsY25OcGIyNDlQVDB4UDJVdWQzSnBkR1ZKYm5Rek1paDBhR2x6TG5OaGJYQnNaVjl2Wm1aelpYUnpXM1JkS1RwbExuZHlhWFJsVldsdWRETXlLSFJvYVhNdWMyRnRjR3hsWDI5bVpuTmxkSE5iZEYwcGZTeHZMbVJ5WldaQ2IzZ3VjSEp2ZEc5MGVYQmxMbmR5YVhSbFBXWjFibU4wYVc5dUtHVXBlM1JvYVhNdWRtVnljMmx2Ymowd0xIUm9hWE11Wm14aFozTTlNQ3gwYUdsekxuTnBlbVU5TkN4MGFHbHpMbmR5YVhSbFNHVmhaR1Z5S0dVcExHVXVkM0pwZEdWVmFXNTBNeklvZEdocGN5NWxiblJ5YVdWekxteGxibWQwYUNrN1ptOXlLSFpoY2lCMFBUQTdkRHgwYUdsekxtVnVkSEpwWlhNdWJHVnVaM1JvTzNRckt5bDBhR2x6TG1WdWRISnBaWE5iZEYwdWQzSnBkR1VvWlNrc2RHaHBjeTV6YVhwbEt6MTBhR2x6TG1WdWRISnBaWE5iZEYwdWMybDZaVHR5TG1SbFluVm5LQ0pDYjNoWGNtbDBaWElpTENKQlpHcDFjM1JwYm1jZ1ltOTRJQ0lyZEdocGN5NTBlWEJsS3lJZ2QybDBhQ0J1WlhjZ2MybDZaU0FpSzNSb2FYTXVjMmw2WlNrc1pTNWhaR3AxYzNSVmFXNTBNeklvZEdocGN5NXphWHBsVUc5emFYUnBiMjRzZEdocGN5NXphWHBsS1gwc2J5NWxiRzVuUW05NExuQnliM1J2ZEhsd1pTNTNjbWwwWlQxbWRXNWpkR2x2YmlobEtYdDBhR2x6TG5abGNuTnBiMjQ5TUN4MGFHbHpMbVpzWVdkelBUQXNkR2hwY3k1emFYcGxQWFJvYVhNdVpYaDBaVzVrWldSZmJHRnVaM1ZoWjJVdWJHVnVaM1JvTEhSb2FYTXVkM0pwZEdWSVpXRmtaWElvWlNrc1pTNTNjbWwwWlZOMGNtbHVaeWgwYUdsekxtVjRkR1Z1WkdWa1gyeGhibWQxWVdkbEtYMHNieTVsYkhOMFFtOTRMbkJ5YjNSdmRIbHdaUzUzY21sMFpUMW1kVzVqZEdsdmJpaGxLWHQwYUdsekxuWmxjbk5wYjI0OU1DeDBhR2x6TG1ac1lXZHpQVEFzZEdocGN5NXphWHBsUFRRck1USXFkR2hwY3k1bGJuUnlhV1Z6TG14bGJtZDBhQ3gwYUdsekxuZHlhWFJsU0dWaFpHVnlLR1VwTEdVdWQzSnBkR1ZWYVc1ME16SW9kR2hwY3k1bGJuUnlhV1Z6TG14bGJtZDBhQ2s3Wm05eUtIWmhjaUIwUFRBN2REeDBhR2x6TG1WdWRISnBaWE11YkdWdVozUm9PM1FyS3lsN2RtRnlJR2s5ZEdocGN5NWxiblJ5YVdWelczUmRPMlV1ZDNKcGRHVlZhVzUwTXpJb2FTNXpaV2R0Wlc1MFgyUjFjbUYwYVc5dUtTeGxMbmR5YVhSbFNXNTBNeklvYVM1dFpXUnBZVjkwYVcxbEtTeGxMbmR5YVhSbFNXNTBNVFlvYVM1dFpXUnBZVjl5WVhSbFgybHVkR1ZuWlhJcExHVXVkM0pwZEdWSmJuUXhOaWhwTG0xbFpHbGhYM0poZEdWZlpuSmhZM1JwYjI0cGZYMHNieTVsYlhOblFtOTRMbkJ5YjNSdmRIbHdaUzUzY21sMFpUMW1kVzVqZEdsdmJpaGxLWHQwYUdsekxuWmxjbk5wYjI0OU1DeDBhR2x6TG1ac1lXZHpQVEFzZEdocGN5NXphWHBsUFRRcU5DdDBhR2x6TG0xbGMzTmhaMlZmWkdGMFlTNXNaVzVuZEdncktIUm9hWE11YzJOb1pXMWxYMmxrWDNWeWFTNXNaVzVuZEdnck1Ta3JLSFJvYVhNdWRtRnNkV1V1YkdWdVozUm9LekVwTEhSb2FYTXVkM0pwZEdWSVpXRmtaWElvWlNrc1pTNTNjbWwwWlVOVGRISnBibWNvZEdocGN5NXpZMmhsYldWZmFXUmZkWEpwS1N4bExuZHlhWFJsUTFOMGNtbHVaeWgwYUdsekxuWmhiSFZsS1N4bExuZHlhWFJsVldsdWRETXlLSFJvYVhNdWRHbHRaWE5qWVd4bEtTeGxMbmR5YVhSbFZXbHVkRE15S0hSb2FYTXVjSEpsYzJWdWRHRjBhVzl1WDNScGJXVmZaR1ZzZEdFcExHVXVkM0pwZEdWVmFXNTBNeklvZEdocGN5NWxkbVZ1ZEY5a2RYSmhkR2x2Ymlrc1pTNTNjbWwwWlZWcGJuUXpNaWgwYUdsekxtbGtLU3hsTG5keWFYUmxWV2x1ZERoQmNuSmhlU2gwYUdsekxtMWxjM05oWjJWZlpHRjBZU2w5TEc4dVpuUjVjRUp2ZUM1d2NtOTBiM1I1Y0dVdWQzSnBkR1U5Wm5WdVkzUnBiMjRvWlNsN2RHaHBjeTV6YVhwbFBUZ3JOQ3AwYUdsekxtTnZiWEJoZEdsaWJHVmZZbkpoYm1SekxteGxibWQwYUN4MGFHbHpMbmR5YVhSbFNHVmhaR1Z5S0dVcExHVXVkM0pwZEdWVGRISnBibWNvZEdocGN5NXRZV3B2Y2w5aWNtRnVaQ3h1ZFd4c0xEUXBMR1V1ZDNKcGRHVlZhVzUwTXpJb2RHaHBjeTV0YVc1dmNsOTJaWEp6YVc5dUtUdG1iM0lvZG1GeUlIUTlNRHQwUEhSb2FYTXVZMjl0Y0dGMGFXSnNaVjlpY21GdVpITXViR1Z1WjNSb08zUXJLeWxsTG5keWFYUmxVM1J5YVc1bktIUm9hWE11WTI5dGNHRjBhV0pzWlY5aWNtRnVaSE5iZEYwc2JuVnNiQ3cwS1gwc2J5NW9aR3h5UW05NExuQnliM1J2ZEhsd1pTNTNjbWwwWlQxbWRXNWpkR2x2YmlobEtYdDBhR2x6TG5OcGVtVTlOU28wSzNSb2FYTXVibUZ0WlM1c1pXNW5kR2dyTVN4MGFHbHpMblpsY25OcGIyNDlNQ3gwYUdsekxtWnNZV2R6UFRBc2RHaHBjeTUzY21sMFpVaGxZV1JsY2lobEtTeGxMbmR5YVhSbFZXbHVkRE15S0RBcExHVXVkM0pwZEdWVGRISnBibWNvZEdocGN5NW9ZVzVrYkdWeUxHNTFiR3dzTkNrc1pTNTNjbWwwWlZWcGJuUXpNaWd3S1N4bExuZHlhWFJsVldsdWRETXlLREFwTEdVdWQzSnBkR1ZWYVc1ME16SW9NQ2tzWlM1M2NtbDBaVU5UZEhKcGJtY29kR2hwY3k1dVlXMWxLWDBzYnk1cmFXNWtRbTk0TG5CeWIzUnZkSGx3WlM1M2NtbDBaVDFtZFc1amRHbHZiaWhsS1h0MGFHbHpMblpsY25OcGIyNDlNQ3gwYUdsekxtWnNZV2R6UFRBc2RHaHBjeTV6YVhwbFBYUm9hWE11YzJOb1pXMWxWVkpKTG14bGJtZDBhQ3N4S3loMGFHbHpMblpoYkhWbExteGxibWQwYUNzeEtTeDBhR2x6TG5keWFYUmxTR1ZoWkdWeUtHVXBMR1V1ZDNKcGRHVkRVM1J5YVc1bktIUm9hWE11YzJOb1pXMWxWVkpKS1N4bExuZHlhWFJsUTFOMGNtbHVaeWgwYUdsekxuWmhiSFZsS1gwc2J5NXRaR2hrUW05NExuQnliM1J2ZEhsd1pTNTNjbWwwWlQxbWRXNWpkR2x2YmlobEtYdDBhR2x6TG5OcGVtVTlOQ28wS3pJcU1peDBhR2x6TG1ac1lXZHpQVEFzZEdocGN5NTJaWEp6YVc5dVBUQXNkR2hwY3k1M2NtbDBaVWhsWVdSbGNpaGxLU3hsTG5keWFYUmxWV2x1ZERNeUtIUm9hWE11WTNKbFlYUnBiMjVmZEdsdFpTa3NaUzUzY21sMFpWVnBiblF6TWloMGFHbHpMbTF2WkdsbWFXTmhkR2x2Ymw5MGFXMWxLU3hsTG5keWFYUmxWV2x1ZERNeUtIUm9hWE11ZEdsdFpYTmpZV3hsS1N4bExuZHlhWFJsVldsdWRETXlLSFJvYVhNdVpIVnlZWFJwYjI0cExHVXVkM0pwZEdWVmFXNTBNVFlvZEdocGN5NXNZVzVuZFdGblpTa3NaUzUzY21sMFpWVnBiblF4Tmlnd0tYMHNieTV0Wldoa1FtOTRMbkJ5YjNSdmRIbHdaUzUzY21sMFpUMW1kVzVqZEdsdmJpaGxLWHQwYUdsekxuWmxjbk5wYjI0OU1DeDBhR2x6TG1ac1lXZHpQVEFzZEdocGN5NXphWHBsUFRRc2RHaHBjeTUzY21sMFpVaGxZV1JsY2lobEtTeGxMbmR5YVhSbFZXbHVkRE15S0hSb2FYTXVabkpoWjIxbGJuUmZaSFZ5WVhScGIyNHBmU3h2TG0xbWFHUkNiM2d1Y0hKdmRHOTBlWEJsTG5keWFYUmxQV1oxYm1OMGFXOXVLR1VwZTNSb2FYTXVkbVZ5YzJsdmJqMHdMSFJvYVhNdVpteGhaM005TUN4MGFHbHpMbk5wZW1VOU5DeDBhR2x6TG5keWFYUmxTR1ZoWkdWeUtHVXBMR1V1ZDNKcGRHVlZhVzUwTXpJb2RHaHBjeTV6WlhGMVpXNWpaVjl1ZFcxaVpYSXBmU3h2TG0xMmFHUkNiM2d1Y0hKdmRHOTBlWEJsTG5keWFYUmxQV1oxYm1OMGFXOXVLR1VwZTNSb2FYTXVkbVZ5YzJsdmJqMHdMSFJvYVhNdVpteGhaM005TUN4MGFHbHpMbk5wZW1VOU1qTXFOQ3N5S2pJc2RHaHBjeTUzY21sMFpVaGxZV1JsY2lobEtTeGxMbmR5YVhSbFZXbHVkRE15S0hSb2FYTXVZM0psWVhScGIyNWZkR2x0WlNrc1pTNTNjbWwwWlZWcGJuUXpNaWgwYUdsekxtMXZaR2xtYVdOaGRHbHZibDkwYVcxbEtTeGxMbmR5YVhSbFZXbHVkRE15S0hSb2FYTXVkR2x0WlhOallXeGxLU3hsTG5keWFYUmxWV2x1ZERNeUtIUm9hWE11WkhWeVlYUnBiMjRwTEdVdWQzSnBkR1ZWYVc1ME16SW9kR2hwY3k1eVlYUmxLU3hsTG5keWFYUmxWV2x1ZERFMktIUm9hWE11ZG05c2RXMWxQRHc0S1N4bExuZHlhWFJsVldsdWRERTJLREFwTEdVdWQzSnBkR1ZWYVc1ME16SW9NQ2tzWlM1M2NtbDBaVlZwYm5Rek1pZ3dLU3hsTG5keWFYUmxWV2x1ZERNeVFYSnlZWGtvZEdocGN5NXRZWFJ5YVhncExHVXVkM0pwZEdWVmFXNTBNeklvTUNrc1pTNTNjbWwwWlZWcGJuUXpNaWd3S1N4bExuZHlhWFJsVldsdWRETXlLREFwTEdVdWQzSnBkR1ZWYVc1ME16SW9NQ2tzWlM1M2NtbDBaVlZwYm5Rek1pZ3dLU3hsTG5keWFYUmxWV2x1ZERNeUtEQXBMR1V1ZDNKcGRHVlZhVzUwTXpJb2RHaHBjeTV1WlhoMFgzUnlZV05yWDJsa0tYMHNieTVUWVcxd2JHVkZiblJ5ZVM1d2NtOTBiM1I1Y0dVdWQzSnBkR1ZJWldGa1pYSTlablZ1WTNScGIyNG9aU2w3ZEdocGN5NXphWHBsUFRnc2J5NUNiM2d1Y0hKdmRHOTBlWEJsTG5keWFYUmxTR1ZoWkdWeUxtTmhiR3dvZEdocGN5eGxLU3hsTG5keWFYUmxWV2x1ZERnb01Da3NaUzUzY21sMFpWVnBiblE0S0RBcExHVXVkM0pwZEdWVmFXNTBPQ2d3S1N4bExuZHlhWFJsVldsdWREZ29NQ2tzWlM1M2NtbDBaVlZwYm5RNEtEQXBMR1V1ZDNKcGRHVlZhVzUwT0Nnd0tTeGxMbmR5YVhSbFZXbHVkREUyS0hSb2FYTXVaR0YwWVY5eVpXWmxjbVZ1WTJWZmFXNWtaWGdwZlN4dkxsTmhiWEJzWlVWdWRISjVMbkJ5YjNSdmRIbHdaUzUzY21sMFpVWnZiM1JsY2oxbWRXNWpkR2x2YmlobEtYdG1iM0lvZG1GeUlIUTlNRHQwUEhSb2FYTXVZbTk0WlhNdWJHVnVaM1JvTzNRckt5bDBhR2x6TG1KdmVHVnpXM1JkTG5keWFYUmxLR1VwTEhSb2FYTXVjMmw2WlNzOWRHaHBjeTVpYjNobGMxdDBYUzV6YVhwbE8zSXVaR1ZpZFdjb0lrSnZlRmR5YVhSbGNpSXNJa0ZrYW5WemRHbHVaeUJpYjNnZ0lpdDBhR2x6TG5SNWNHVXJJaUIzYVhSb0lHNWxkeUJ6YVhwbElDSXJkR2hwY3k1emFYcGxLU3hsTG1Ga2FuVnpkRlZwYm5Rek1paDBhR2x6TG5OcGVtVlFiM05wZEdsdmJpeDBhR2x6TG5OcGVtVXBmU3h2TGxOaGJYQnNaVVZ1ZEhKNUxuQnliM1J2ZEhsd1pTNTNjbWwwWlQxbWRXNWpkR2x2YmlobEtYdDBhR2x6TG5keWFYUmxTR1ZoWkdWeUtHVXBMR1V1ZDNKcGRHVlZhVzUwT0VGeWNtRjVLSFJvYVhNdVpHRjBZU2tzZEdocGN5NXphWHBsS3oxMGFHbHpMbVJoZEdFdWJHVnVaM1JvTEhJdVpHVmlkV2NvSWtKdmVGZHlhWFJsY2lJc0lrRmthblZ6ZEdsdVp5QmliM2dnSWl0MGFHbHpMblI1Y0dVcklpQjNhWFJvSUc1bGR5QnphWHBsSUNJcmRHaHBjeTV6YVhwbEtTeGxMbUZrYW5WemRGVnBiblF6TWloMGFHbHpMbk5wZW1WUWIzTnBkR2x2Yml4MGFHbHpMbk5wZW1VcGZTeHZMbFpwYzNWaGJGTmhiWEJzWlVWdWRISjVMbkJ5YjNSdmRIbHdaUzUzY21sMFpUMW1kVzVqZEdsdmJpaGxLWHQwYUdsekxuZHlhWFJsU0dWaFpHVnlLR1VwTEhSb2FYTXVjMmw2WlNzOU1pbzNLellxTkNzek1peGxMbmR5YVhSbFZXbHVkREUyS0RBcExHVXVkM0pwZEdWVmFXNTBNVFlvTUNrc1pTNTNjbWwwWlZWcGJuUXpNaWd3S1N4bExuZHlhWFJsVldsdWRETXlLREFwTEdVdWQzSnBkR1ZWYVc1ME16SW9NQ2tzWlM1M2NtbDBaVlZwYm5ReE5paDBhR2x6TG5kcFpIUm9LU3hsTG5keWFYUmxWV2x1ZERFMktIUm9hWE11YUdWcFoyaDBLU3hsTG5keWFYUmxWV2x1ZERNeUtIUm9hWE11YUc5eWFYcHlaWE52YkhWMGFXOXVLU3hsTG5keWFYUmxWV2x1ZERNeUtIUm9hWE11ZG1WeWRISmxjMjlzZFhScGIyNHBMR1V1ZDNKcGRHVlZhVzUwTXpJb01Da3NaUzUzY21sMFpWVnBiblF4TmloMGFHbHpMbVp5WVcxbFgyTnZkVzUwS1N4bExuZHlhWFJsVldsdWREZ29UV0YwYUM1dGFXNG9NekVzZEdocGN5NWpiMjF3Y21WemMyOXlibUZ0WlM1c1pXNW5kR2dwS1N4bExuZHlhWFJsVTNSeWFXNW5LSFJvYVhNdVkyOXRjSEpsYzNOdmNtNWhiV1VzYm5Wc2JDd3pNU2tzWlM1M2NtbDBaVlZwYm5ReE5paDBhR2x6TG1SbGNIUm9LU3hsTG5keWFYUmxTVzUwTVRZb0xURXBMSFJvYVhNdWQzSnBkR1ZHYjI5MFpYSW9aU2w5TEc4dVFYVmthVzlUWVcxd2JHVkZiblJ5ZVM1d2NtOTBiM1I1Y0dVdWQzSnBkR1U5Wm5WdVkzUnBiMjRvWlNsN2RHaHBjeTUzY21sMFpVaGxZV1JsY2lobEtTeDBhR2x6TG5OcGVtVXJQVElxTkNzektqUXNaUzUzY21sMFpWVnBiblF6TWlnd0tTeGxMbmR5YVhSbFZXbHVkRE15S0RBcExHVXVkM0pwZEdWVmFXNTBNVFlvZEdocGN5NWphR0Z1Ym1Wc1gyTnZkVzUwS1N4bExuZHlhWFJsVldsdWRERTJLSFJvYVhNdWMyRnRjR3hsYzJsNlpTa3NaUzUzY21sMFpWVnBiblF4Tmlnd0tTeGxMbmR5YVhSbFZXbHVkREUyS0RBcExHVXVkM0pwZEdWVmFXNTBNeklvZEdocGN5NXpZVzF3YkdWeVlYUmxQRHd4Tmlrc2RHaHBjeTUzY21sMFpVWnZiM1JsY2lobEtYMHNieTV6ZEhCd1UyRnRjR3hsUlc1MGNua3VjSEp2ZEc5MGVYQmxMbmR5YVhSbFBXWjFibU4wYVc5dUtHVXBlM1JvYVhNdWQzSnBkR1ZJWldGa1pYSW9aU2tzZEdocGN5NXphWHBsS3oxMGFHbHpMbTVoYldWemNHRmpaUzVzWlc1bmRHZ3JNU3QwYUdsekxuTmphR1Z0WVY5c2IyTmhkR2x2Ymk1c1pXNW5kR2dyTVN0MGFHbHpMbUYxZUdsc2FXRnllVjl0YVcxbFgzUjVjR1Z6TG14bGJtZDBhQ3N4TEdVdWQzSnBkR1ZEVTNSeWFXNW5LSFJvYVhNdWJtRnRaWE53WVdObEtTeGxMbmR5YVhSbFExTjBjbWx1WnloMGFHbHpMbk5qYUdWdFlWOXNiMk5oZEdsdmJpa3NaUzUzY21sMFpVTlRkSEpwYm1jb2RHaHBjeTVoZFhocGJHbGhjbmxmYldsdFpWOTBlWEJsY3lrc2RHaHBjeTUzY21sMFpVWnZiM1JsY2lobEtYMHNieTVUWVcxd2JHVkhjbTkxY0VWdWRISjVMbkJ5YjNSdmRIbHdaUzUzY21sMFpUMW1kVzVqZEdsdmJpaGxLWHRsTG5keWFYUmxWV2x1ZERoQmNuSmhlU2gwYUdsekxtUmhkR0VwZlN4dkxuTmlaM0JDYjNndWNISnZkRzkwZVhCbExuZHlhWFJsUFdaMWJtTjBhVzl1S0dVcGUzUm9hWE11ZG1WeWMybHZiajB4TEhSb2FYTXVabXhoWjNNOU1DeDBhR2x6TG5OcGVtVTlNVElyT0NwMGFHbHpMbVZ1ZEhKcFpYTXViR1Z1WjNSb0xIUm9hWE11ZDNKcGRHVklaV0ZrWlhJb1pTa3NaUzUzY21sMFpWTjBjbWx1WnloMGFHbHpMbWR5YjNWd2FXNW5YM1I1Y0dVc2JuVnNiQ3cwS1N4bExuZHlhWFJsVldsdWRETXlLSFJvYVhNdVozSnZkWEJwYm1kZmRIbHdaVjl3WVhKaGJXVjBaWElwTEdVdWQzSnBkR1ZWYVc1ME16SW9kR2hwY3k1bGJuUnlhV1Z6TG14bGJtZDBhQ2s3Wm05eUtIWmhjaUIwUFRBN2REeDBhR2x6TG1WdWRISnBaWE11YkdWdVozUm9PM1FyS3lsN2RtRnlJR2s5ZEdocGN5NWxiblJ5YVdWelczUmRPMlV1ZDNKcGRHVkpiblF6TWlocExuTmhiWEJzWlY5amIzVnVkQ2tzWlM1M2NtbDBaVWx1ZERNeUtHa3VaM0p2ZFhCZlpHVnpZM0pwY0hScGIyNWZhVzVrWlhncGZYMHNieTV6WjNCa1FtOTRMbkJ5YjNSdmRIbHdaUzUzY21sMFpUMW1kVzVqZEdsdmJpaGxLWHQyWVhJZ2RDeHBPMlp2Y2loMGFHbHpMbVpzWVdkelBUQXNkR2hwY3k1emFYcGxQVEV5TEhROU1EdDBQSFJvYVhNdVpXNTBjbWxsY3k1c1pXNW5kR2c3ZENzcktXazlkR2hwY3k1bGJuUnlhV1Z6VzNSZExIUm9hWE11ZG1WeWMybHZiajA5UFRFbUppaDBhR2x6TG1SbFptRjFiSFJmYkdWdVozUm9QVDA5TUNZbUtIUm9hWE11YzJsNlpTczlOQ2tzZEdocGN5NXphWHBsS3oxcExtUmhkR0V1YkdWdVozUm9LVHRtYjNJb2RHaHBjeTUzY21sMFpVaGxZV1JsY2lobEtTeGxMbmR5YVhSbFUzUnlhVzVuS0hSb2FYTXVaM0p2ZFhCcGJtZGZkSGx3WlN4dWRXeHNMRFFwTEhSb2FYTXVkbVZ5YzJsdmJqMDlQVEVtSm1VdWQzSnBkR1ZWYVc1ME16SW9kR2hwY3k1a1pXWmhkV3gwWDJ4bGJtZDBhQ2tzZEdocGN5NTJaWEp6YVc5dVBqMHlKaVpsTG5keWFYUmxWV2x1ZERNeUtIUm9hWE11WkdWbVlYVnNkRjl6WVcxd2JHVmZaR1Z6WTNKcGNIUnBiMjVmYVc1a1pYZ3BMR1V1ZDNKcGRHVlZhVzUwTXpJb2RHaHBjeTVsYm5SeWFXVnpMbXhsYm1kMGFDa3NkRDB3TzNROGRHaHBjeTVsYm5SeWFXVnpMbXhsYm1kMGFEdDBLeXNwYVQxMGFHbHpMbVZ1ZEhKcFpYTmJkRjBzZEdocGN5NTJaWEp6YVc5dVBUMDlNU1ltZEdocGN5NWtaV1poZFd4MFgyeGxibWQwYUQwOVBUQW1KbVV1ZDNKcGRHVlZhVzUwTXpJb2FTNWtaWE5qY21sd2RHbHZibDlzWlc1bmRHZ3BMR2t1ZDNKcGRHVW9aU2w5TEc4dWMybGtlRUp2ZUM1d2NtOTBiM1I1Y0dVdWQzSnBkR1U5Wm5WdVkzUnBiMjRvWlNsN2RHaHBjeTUyWlhKemFXOXVQVEFzZEdocGN5NW1iR0ZuY3owd0xIUm9hWE11YzJsNlpUMDBLalFyTWlzeUt6RXlLblJvYVhNdWNtVm1aWEpsYm1ObGN5NXNaVzVuZEdnc2RHaHBjeTUzY21sMFpVaGxZV1JsY2lobEtTeGxMbmR5YVhSbFZXbHVkRE15S0hSb2FYTXVjbVZtWlhKbGJtTmxYMGxFS1N4bExuZHlhWFJsVldsdWRETXlLSFJvYVhNdWRHbHRaWE5qWVd4bEtTeGxMbmR5YVhSbFZXbHVkRE15S0hSb2FYTXVaV0Z5YkdsbGMzUmZjSEpsYzJWdWRHRjBhVzl1WDNScGJXVXBMR1V1ZDNKcGRHVlZhVzUwTXpJb2RHaHBjeTVtYVhKemRGOXZabVp6WlhRcExHVXVkM0pwZEdWVmFXNTBNVFlvTUNrc1pTNTNjbWwwWlZWcGJuUXhOaWgwYUdsekxuSmxabVZ5Wlc1alpYTXViR1Z1WjNSb0tUdG1iM0lvZG1GeUlIUTlNRHQwUEhSb2FYTXVjbVZtWlhKbGJtTmxjeTVzWlc1bmRHZzdkQ3NyS1h0MllYSWdhVDEwYUdsekxuSmxabVZ5Wlc1alpYTmJkRjA3WlM1M2NtbDBaVlZwYm5Rek1paHBMbkpsWm1WeVpXNWpaVjkwZVhCbFBEd3pNWHhwTG5KbFptVnlaVzVqWldSZmMybDZaU2tzWlM1M2NtbDBaVlZwYm5Rek1paHBMbk4xWW5ObFoyMWxiblJmWkhWeVlYUnBiMjRwTEdVdWQzSnBkR1ZWYVc1ME16SW9hUzV6ZEdGeWRITmZkMmwwYUY5VFFWQThQRE14ZkdrdVUwRlFYM1I1Y0dVOFBESTRmR2t1VTBGUVgyUmxiSFJoWDNScGJXVXBmWDBzYnk1emJXaGtRbTk0TG5CeWIzUnZkSGx3WlM1M2NtbDBaVDFtZFc1amRHbHZiaWhsS1h0MGFHbHpMblpsY25OcGIyNDlNQ3gwYUdsekxtWnNZV2R6UFRFc2RHaHBjeTV6YVhwbFBUUXNkR2hwY3k1M2NtbDBaVWhsWVdSbGNpaGxLU3hsTG5keWFYUmxWV2x1ZERFMktIUm9hWE11WW1Gc1lXNWpaU2tzWlM1M2NtbDBaVlZwYm5ReE5pZ3dLWDBzYnk1emRHTnZRbTk0TG5CeWIzUnZkSGx3WlM1M2NtbDBaVDFtZFc1amRHbHZiaWhsS1h0MGFHbHpMblpsY25OcGIyNDlNQ3gwYUdsekxtWnNZV2R6UFRBc2RHaHBjeTV6YVhwbFBUUXJOQ3AwYUdsekxtTm9kVzVyWDI5bVpuTmxkSE11YkdWdVozUm9MSFJvYVhNdWQzSnBkR1ZJWldGa1pYSW9aU2tzWlM1M2NtbDBaVlZwYm5Rek1paDBhR2x6TG1Ob2RXNXJYMjltWm5ObGRITXViR1Z1WjNSb0tTeGxMbmR5YVhSbFZXbHVkRE15UVhKeVlYa29kR2hwY3k1amFIVnVhMTl2Wm1aelpYUnpLWDBzYnk1emRITmpRbTk0TG5CeWIzUnZkSGx3WlM1M2NtbDBaVDFtZFc1amRHbHZiaWhsS1h0MllYSWdkRHRtYjNJb2RHaHBjeTUyWlhKemFXOXVQVEFzZEdocGN5NW1iR0ZuY3owd0xIUm9hWE11YzJsNlpUMDBLekV5S25Sb2FYTXVabWx5YzNSZlkyaDFibXN1YkdWdVozUm9MSFJvYVhNdWQzSnBkR1ZJWldGa1pYSW9aU2tzWlM1M2NtbDBaVlZwYm5Rek1paDBhR2x6TG1acGNuTjBYMk5vZFc1ckxteGxibWQwYUNrc2REMHdPM1E4ZEdocGN5NW1hWEp6ZEY5amFIVnVheTVzWlc1bmRHZzdkQ3NyS1dVdWQzSnBkR1ZWYVc1ME16SW9kR2hwY3k1bWFYSnpkRjlqYUhWdWExdDBYU2tzWlM1M2NtbDBaVlZwYm5Rek1paDBhR2x6TG5OaGJYQnNaWE5mY0dWeVgyTm9kVzVyVzNSZEtTeGxMbmR5YVhSbFZXbHVkRE15S0hSb2FYTXVjMkZ0Y0d4bFgyUmxjMk55YVhCMGFXOXVYMmx1WkdWNFczUmRLWDBzYnk1emRITmtRbTk0TG5CeWIzUnZkSGx3WlM1M2NtbDBaVDFtZFc1amRHbHZiaWhsS1h0MllYSWdkRHRtYjNJb2RHaHBjeTUyWlhKemFXOXVQVEFzZEdocGN5NW1iR0ZuY3owd0xIUm9hWE11YzJsNlpUMHdMSFJvYVhNdWQzSnBkR1ZJWldGa1pYSW9aU2tzWlM1M2NtbDBaVlZwYm5Rek1paDBhR2x6TG1WdWRISnBaWE11YkdWdVozUm9LU3gwYUdsekxuTnBlbVVyUFRRc2REMHdPM1E4ZEdocGN5NWxiblJ5YVdWekxteGxibWQwYUR0MEt5c3BkR2hwY3k1bGJuUnlhV1Z6VzNSZExuZHlhWFJsS0dVcExIUm9hWE11YzJsNlpTczlkR2hwY3k1bGJuUnlhV1Z6VzNSZExuTnBlbVU3Y2k1a1pXSjFaeWdpUW05NFYzSnBkR1Z5SWl3aVFXUnFkWE4wYVc1bklHSnZlQ0FpSzNSb2FYTXVkSGx3WlNzaUlIZHBkR2dnYm1WM0lITnBlbVVnSWl0MGFHbHpMbk5wZW1VcExHVXVZV1JxZFhOMFZXbHVkRE15S0hSb2FYTXVjMmw2WlZCdmMybDBhVzl1TEhSb2FYTXVjMmw2WlNsOUxHOHVjM1J6YUVKdmVDNXdjbTkwYjNSNWNHVXVkM0pwZEdVOVpuVnVZM1JwYjI0b1pTbDdkbUZ5SUhRN1ptOXlLSFJvYVhNdWRtVnljMmx2Ymowd0xIUm9hWE11Wm14aFozTTlNQ3gwYUdsekxuTnBlbVU5TkNzNEtuUm9hWE11YzJoaFpHOTNaV1JmYzJGdGNHeGxYMjUxYldKbGNuTXViR1Z1WjNSb0xIUm9hWE11ZDNKcGRHVklaV0ZrWlhJb1pTa3NaUzUzY21sMFpWVnBiblF6TWloMGFHbHpMbk5vWVdSdmQyVmtYM05oYlhCc1pWOXVkVzFpWlhKekxteGxibWQwYUNrc2REMHdPM1E4ZEdocGN5NXphR0ZrYjNkbFpGOXpZVzF3YkdWZmJuVnRZbVZ5Y3k1c1pXNW5kR2c3ZENzcktXVXVkM0pwZEdWVmFXNTBNeklvZEdocGN5NXphR0ZrYjNkbFpGOXpZVzF3YkdWZmJuVnRZbVZ5YzF0MFhTa3NaUzUzY21sMFpWVnBiblF6TWloMGFHbHpMbk41Ym1OZmMyRnRjR3hsWDI1MWJXSmxjbk5iZEYwcGZTeHZMbk4wYzNOQ2IzZ3VjSEp2ZEc5MGVYQmxMbmR5YVhSbFBXWjFibU4wYVc5dUtHVXBlM1JvYVhNdWRtVnljMmx2Ymowd0xIUm9hWE11Wm14aFozTTlNQ3gwYUdsekxuTnBlbVU5TkNzMEtuUm9hWE11YzJGdGNHeGxYMjUxYldKbGNuTXViR1Z1WjNSb0xIUm9hWE11ZDNKcGRHVklaV0ZrWlhJb1pTa3NaUzUzY21sMFpWVnBiblF6TWloMGFHbHpMbk5oYlhCc1pWOXVkVzFpWlhKekxteGxibWQwYUNrc1pTNTNjbWwwWlZWcGJuUXpNa0Z5Y21GNUtIUm9hWE11YzJGdGNHeGxYMjUxYldKbGNuTXBmU3h2TG5OMGMzcENiM2d1Y0hKdmRHOTBlWEJsTG5keWFYUmxQV1oxYm1OMGFXOXVLR1VwZTNaaGNpQjBMR2s5SVRBN2FXWW9kR2hwY3k1MlpYSnphVzl1UFRBc2RHaHBjeTVtYkdGbmN6MHdMSFJvYVhNdWMyRnRjR3hsWDNOcGVtVnpMbXhsYm1kMGFENHdLV1p2Y2loMFBUQTdkQ3N4UEhSb2FYTXVjMkZ0Y0d4bFgzTnBlbVZ6TG14bGJtZDBhRHNwYVdZb2RHaHBjeTV6WVcxd2JHVmZjMmw2WlhOYmRDc3hYU0U5UFhSb2FYTXVjMkZ0Y0d4bFgzTnBlbVZ6V3pCZEtYdHBQU0V4TzJKeVpXRnJmV1ZzYzJVZ2RDc3JPMlZzYzJVZ2FUMGhNVHQwYUdsekxuTnBlbVU5T0N4cGZId29kR2hwY3k1emFYcGxLejAwS25Sb2FYTXVjMkZ0Y0d4bFgzTnBlbVZ6TG14bGJtZDBhQ2tzZEdocGN5NTNjbWwwWlVobFlXUmxjaWhsS1N4cFAyVXVkM0pwZEdWVmFXNTBNeklvZEdocGN5NXpZVzF3YkdWZmMybDZaWE5iTUYwcE9tVXVkM0pwZEdWVmFXNTBNeklvTUNrc1pTNTNjbWwwWlZWcGJuUXpNaWgwYUdsekxuTmhiWEJzWlY5emFYcGxjeTVzWlc1bmRHZ3BMR2w4ZkdVdWQzSnBkR1ZWYVc1ME16SkJjbkpoZVNoMGFHbHpMbk5oYlhCc1pWOXphWHBsY3lsOUxHOHVjM1IwYzBKdmVDNXdjbTkwYjNSNWNHVXVkM0pwZEdVOVpuVnVZM1JwYjI0b1pTbDdkbUZ5SUhRN1ptOXlLSFJvYVhNdWRtVnljMmx2Ymowd0xIUm9hWE11Wm14aFozTTlNQ3gwYUdsekxuTnBlbVU5TkNzNEtuUm9hWE11YzJGdGNHeGxYMk52ZFc1MGN5NXNaVzVuZEdnc2RHaHBjeTUzY21sMFpVaGxZV1JsY2lobEtTeGxMbmR5YVhSbFZXbHVkRE15S0hSb2FYTXVjMkZ0Y0d4bFgyTnZkVzUwY3k1c1pXNW5kR2dwTEhROU1EdDBQSFJvYVhNdWMyRnRjR3hsWDJOdmRXNTBjeTVzWlc1bmRHZzdkQ3NyS1dVdWQzSnBkR1ZWYVc1ME16SW9kR2hwY3k1ellXMXdiR1ZmWTI5MWJuUnpXM1JkS1N4bExuZHlhWFJsVldsdWRETXlLSFJvYVhNdWMyRnRjR3hsWDJSbGJIUmhjMXQwWFNsOUxHOHVkR1prZEVKdmVDNXdjbTkwYjNSNWNHVXVkM0pwZEdVOVpuVnVZM1JwYjI0b1pTbDdkbUZ5SUhROVRXRjBhQzV3YjNjb01pd3pNaWt0TVR0MGFHbHpMblpsY25OcGIyNDlkR2hwY3k1aVlYTmxUV1ZrYVdGRVpXTnZaR1ZVYVcxbFBuUS9NVG93TEhSb2FYTXVabXhoWjNNOU1DeDBhR2x6TG5OcGVtVTlOQ3gwYUdsekxuWmxjbk5wYjI0OVBUMHhKaVlvZEdocGN5NXphWHBsS3owMEtTeDBhR2x6TG5keWFYUmxTR1ZoWkdWeUtHVXBMSFJvYVhNdWRtVnljMmx2YmowOVBURS9aUzUzY21sMFpWVnBiblEyTkNoMGFHbHpMbUpoYzJWTlpXUnBZVVJsWTI5a1pWUnBiV1VwT21VdWQzSnBkR1ZWYVc1ME16SW9kR2hwY3k1aVlYTmxUV1ZrYVdGRVpXTnZaR1ZVYVcxbEtYMHNieTUwWm1oa1FtOTRMbkJ5YjNSdmRIbHdaUzUzY21sMFpUMW1kVzVqZEdsdmJpaGxLWHQwYUdsekxuWmxjbk5wYjI0OU1DeDBhR2x6TG5OcGVtVTlOQ3gwYUdsekxtWnNZV2R6Sm04dVZFWklSRjlHVEVGSFgwSkJVMFZmUkVGVVFWOVBSa1pUUlZRbUppaDBhR2x6TG5OcGVtVXJQVGdwTEhSb2FYTXVabXhoWjNNbWJ5NVVSa2hFWDBaTVFVZGZVMEZOVUV4RlgwUkZVME1tSmloMGFHbHpMbk5wZW1VclBUUXBMSFJvYVhNdVpteGhaM01tYnk1VVJraEVYMFpNUVVkZlUwRk5VRXhGWDBSVlVpWW1LSFJvYVhNdWMybDZaU3M5TkNrc2RHaHBjeTVtYkdGbmN5WnZMbFJHU0VSZlJreEJSMTlUUVUxUVRFVmZVMGxhUlNZbUtIUm9hWE11YzJsNlpTczlOQ2tzZEdocGN5NW1iR0ZuY3ladkxsUkdTRVJmUmt4QlIxOVRRVTFRVEVWZlJreEJSMU1tSmloMGFHbHpMbk5wZW1VclBUUXBMSFJvYVhNdWQzSnBkR1ZJWldGa1pYSW9aU2tzWlM1M2NtbDBaVlZwYm5Rek1paDBhR2x6TG5SeVlXTnJYMmxrS1N4MGFHbHpMbVpzWVdkekptOHVWRVpJUkY5R1RFRkhYMEpCVTBWZlJFRlVRVjlQUmtaVFJWUW1KbVV1ZDNKcGRHVlZhVzUwTmpRb2RHaHBjeTVpWVhObFgyUmhkR0ZmYjJabWMyVjBLU3gwYUdsekxtWnNZV2R6Sm04dVZFWklSRjlHVEVGSFgxTkJUVkJNUlY5RVJWTkRKaVpsTG5keWFYUmxWV2x1ZERNeUtIUm9hWE11WkdWbVlYVnNkRjl6WVcxd2JHVmZaR1Z6WTNKcGNIUnBiMjVmYVc1a1pYZ3BMSFJvYVhNdVpteGhaM01tYnk1VVJraEVYMFpNUVVkZlUwRk5VRXhGWDBSVlVpWW1aUzUzY21sMFpWVnBiblF6TWloMGFHbHpMbVJsWm1GMWJIUmZjMkZ0Y0d4bFgyUjFjbUYwYVc5dUtTeDBhR2x6TG1ac1lXZHpKbTh1VkVaSVJGOUdURUZIWDFOQlRWQk1SVjlUU1ZwRkppWmxMbmR5YVhSbFZXbHVkRE15S0hSb2FYTXVaR1ZtWVhWc2RGOXpZVzF3YkdWZmMybDZaU2tzZEdocGN5NW1iR0ZuY3ladkxsUkdTRVJmUmt4QlIxOVRRVTFRVEVWZlJreEJSMU1tSm1VdWQzSnBkR1ZWYVc1ME16SW9kR2hwY3k1a1pXWmhkV3gwWDNOaGJYQnNaVjltYkdGbmN5bDlMRzh1ZEd0b1pFSnZlQzV3Y205MGIzUjVjR1V1ZDNKcGRHVTlablZ1WTNScGIyNG9aU2w3ZEdocGN5NTJaWEp6YVc5dVBUQXNkR2hwY3k1emFYcGxQVFFxTVRnck1pbzBMSFJvYVhNdWQzSnBkR1ZJWldGa1pYSW9aU2tzWlM1M2NtbDBaVlZwYm5Rek1paDBhR2x6TG1OeVpXRjBhVzl1WDNScGJXVXBMR1V1ZDNKcGRHVlZhVzUwTXpJb2RHaHBjeTV0YjJScFptbGpZWFJwYjI1ZmRHbHRaU2tzWlM1M2NtbDBaVlZwYm5Rek1paDBhR2x6TG5SeVlXTnJYMmxrS1N4bExuZHlhWFJsVldsdWRETXlLREFwTEdVdWQzSnBkR1ZWYVc1ME16SW9kR2hwY3k1a2RYSmhkR2x2Ymlrc1pTNTNjbWwwWlZWcGJuUXpNaWd3S1N4bExuZHlhWFJsVldsdWRETXlLREFwTEdVdWQzSnBkR1ZKYm5ReE5paDBhR2x6TG14aGVXVnlLU3hsTG5keWFYUmxTVzUwTVRZb2RHaHBjeTVoYkhSbGNtNWhkR1ZmWjNKdmRYQXBMR1V1ZDNKcGRHVkpiblF4TmloMGFHbHpMblp2YkhWdFpUdzhPQ2tzWlM1M2NtbDBaVlZwYm5ReE5pZ3dLU3hsTG5keWFYUmxTVzUwTXpKQmNuSmhlU2gwYUdsekxtMWhkSEpwZUNrc1pTNTNjbWwwWlZWcGJuUXpNaWgwYUdsekxuZHBaSFJvS1N4bExuZHlhWFJsVldsdWRETXlLSFJvYVhNdWFHVnBaMmgwS1gwc2J5NTBjbVY0UW05NExuQnliM1J2ZEhsd1pTNTNjbWwwWlQxbWRXNWpkR2x2YmlobEtYdDBhR2x6TG5abGNuTnBiMjQ5TUN4MGFHbHpMbVpzWVdkelBUQXNkR2hwY3k1emFYcGxQVFFxTlN4MGFHbHpMbmR5YVhSbFNHVmhaR1Z5S0dVcExHVXVkM0pwZEdWVmFXNTBNeklvZEdocGN5NTBjbUZqYTE5cFpDa3NaUzUzY21sMFpWVnBiblF6TWloMGFHbHpMbVJsWm1GMWJIUmZjMkZ0Y0d4bFgyUmxjMk55YVhCMGFXOXVYMmx1WkdWNEtTeGxMbmR5YVhSbFZXbHVkRE15S0hSb2FYTXVaR1ZtWVhWc2RGOXpZVzF3YkdWZlpIVnlZWFJwYjI0cExHVXVkM0pwZEdWVmFXNTBNeklvZEdocGN5NWtaV1poZFd4MFgzTmhiWEJzWlY5emFYcGxLU3hsTG5keWFYUmxWV2x1ZERNeUtIUm9hWE11WkdWbVlYVnNkRjl6WVcxd2JHVmZabXhoWjNNcGZTeHZMblJ5ZFc1Q2IzZ3VjSEp2ZEc5MGVYQmxMbmR5YVhSbFBXWjFibU4wYVc5dUtHVXBlM1JvYVhNdWRtVnljMmx2Ymowd0xIUm9hWE11YzJsNlpUMDBMSFJvYVhNdVpteGhaM01tYnk1VVVsVk9YMFpNUVVkVFgwUkJWRUZmVDBaR1UwVlVKaVlvZEdocGN5NXphWHBsS3owMEtTeDBhR2x6TG1ac1lXZHpKbTh1VkZKVlRsOUdURUZIVTE5R1NWSlRWRjlHVEVGSEppWW9kR2hwY3k1emFYcGxLejAwS1N4MGFHbHpMbVpzWVdkekptOHVWRkpWVGw5R1RFRkhVMTlFVlZKQlZFbFBUaVltS0hSb2FYTXVjMmw2WlNzOU5DcDBhR2x6TG5OaGJYQnNaVjlrZFhKaGRHbHZiaTVzWlc1bmRHZ3BMSFJvYVhNdVpteGhaM01tYnk1VVVsVk9YMFpNUVVkVFgxTkpXa1VtSmloMGFHbHpMbk5wZW1VclBUUXFkR2hwY3k1ellXMXdiR1ZmYzJsNlpTNXNaVzVuZEdncExIUm9hWE11Wm14aFozTW1ieTVVVWxWT1gwWk1RVWRUWDBaTVFVZFRKaVlvZEdocGN5NXphWHBsS3owMEtuUm9hWE11YzJGdGNHeGxYMlpzWVdkekxteGxibWQwYUNrc2RHaHBjeTVtYkdGbmN5WnZMbFJTVlU1ZlJreEJSMU5mUTFSVFgwOUdSbE5GVkNZbUtIUm9hWE11YzJsNlpTczlOQ3AwYUdsekxuTmhiWEJzWlY5amIyMXdiM05wZEdsdmJsOTBhVzFsWDI5bVpuTmxkQzVzWlc1bmRHZ3BMSFJvYVhNdWQzSnBkR1ZJWldGa1pYSW9aU2tzWlM1M2NtbDBaVlZwYm5Rek1paDBhR2x6TG5OaGJYQnNaVjlqYjNWdWRDa3NkR2hwY3k1bWJHRm5jeVp2TGxSU1ZVNWZSa3hCUjFOZlJFRlVRVjlQUmtaVFJWUW1KaWgwYUdsekxtUmhkR0ZmYjJabWMyVjBYM0J2YzJsMGFXOXVQV1V1WjJWMFVHOXphWFJwYjI0b0tTeGxMbmR5YVhSbFNXNTBNeklvZEdocGN5NWtZWFJoWDI5bVpuTmxkQ2twTEhSb2FYTXVabXhoWjNNbWJ5NVVVbFZPWDBaTVFVZFRYMFpKVWxOVVgwWk1RVWNtSm1VdWQzSnBkR1ZWYVc1ME16SW9kR2hwY3k1bWFYSnpkRjl6WVcxd2JHVmZabXhoWjNNcE8yWnZjaWgyWVhJZ2REMHdPM1E4ZEdocGN5NXpZVzF3YkdWZlkyOTFiblE3ZENzcktYUm9hWE11Wm14aFozTW1ieTVVVWxWT1gwWk1RVWRUWDBSVlVrRlVTVTlPSmlabExuZHlhWFJsVldsdWRETXlLSFJvYVhNdWMyRnRjR3hsWDJSMWNtRjBhVzl1VzNSZEtTeDBhR2x6TG1ac1lXZHpKbTh1VkZKVlRsOUdURUZIVTE5VFNWcEZKaVpsTG5keWFYUmxWV2x1ZERNeUtIUm9hWE11YzJGdGNHeGxYM05wZW1WYmRGMHBMSFJvYVhNdVpteGhaM01tYnk1VVVsVk9YMFpNUVVkVFgwWk1RVWRUSmlabExuZHlhWFJsVldsdWRETXlLSFJvYVhNdWMyRnRjR3hsWDJac1lXZHpXM1JkS1N4MGFHbHpMbVpzWVdkekptOHVWRkpWVGw5R1RFRkhVMTlEVkZOZlQwWkdVMFZVSmlZb2RHaHBjeTUyWlhKemFXOXVQVDA5TUQ5bExuZHlhWFJsVldsdWRETXlLSFJvYVhNdWMyRnRjR3hsWDJOdmJYQnZjMmwwYVc5dVgzUnBiV1ZmYjJabWMyVjBXM1JkS1RwbExuZHlhWFJsU1c1ME16SW9kR2hwY3k1ellXMXdiR1ZmWTI5dGNHOXphWFJwYjI1ZmRHbHRaVjl2Wm1aelpYUmJkRjBwS1gwc2Ixc2lkWEpzSUVKdmVDSmRMbkJ5YjNSdmRIbHdaUzUzY21sMFpUMW1kVzVqZEdsdmJpaGxLWHQwYUdsekxuWmxjbk5wYjI0OU1DeDBhR2x6TG14dlkyRjBhVzl1UHloMGFHbHpMbVpzWVdkelBUQXNkR2hwY3k1emFYcGxQWFJvYVhNdWJHOWpZWFJwYjI0dWJHVnVaM1JvS3pFcE9paDBhR2x6TG1ac1lXZHpQVEVzZEdocGN5NXphWHBsUFRBcExIUm9hWE11ZDNKcGRHVklaV0ZrWlhJb1pTa3NkR2hwY3k1c2IyTmhkR2x2YmlZbVpTNTNjbWwwWlVOVGRISnBibWNvZEdocGN5NXNiMk5oZEdsdmJpbDlMRzliSW5WeWJpQkNiM2dpWFM1d2NtOTBiM1I1Y0dVdWQzSnBkR1U5Wm5WdVkzUnBiMjRvWlNsN2RHaHBjeTUyWlhKemFXOXVQVEFzZEdocGN5NW1iR0ZuY3owd0xIUm9hWE11YzJsNlpUMTBhR2x6TG01aGJXVXViR1Z1WjNSb0t6RXJLSFJvYVhNdWJHOWpZWFJwYjI0L2RHaHBjeTVzYjJOaGRHbHZiaTVzWlc1bmRHZ3JNVG93S1N4MGFHbHpMbmR5YVhSbFNHVmhaR1Z5S0dVcExHVXVkM0pwZEdWRFUzUnlhVzVuS0hSb2FYTXVibUZ0WlNrc2RHaHBjeTVzYjJOaGRHbHZiaVltWlM1M2NtbDBaVU5UZEhKcGJtY29kR2hwY3k1c2IyTmhkR2x2YmlsOUxHOHVkbTFvWkVKdmVDNXdjbTkwYjNSNWNHVXVkM0pwZEdVOVpuVnVZM1JwYjI0b1pTbDdkR2hwY3k1MlpYSnphVzl1UFRBc2RHaHBjeTVtYkdGbmN6MHhMSFJvYVhNdWMybDZaVDA0TEhSb2FYTXVkM0pwZEdWSVpXRmtaWElvWlNrc1pTNTNjbWwwWlZWcGJuUXhOaWgwYUdsekxtZHlZWEJvYVdOemJXOWtaU2tzWlM1M2NtbDBaVlZwYm5ReE5rRnljbUY1S0hSb2FYTXViM0JqYjJ4dmNpbDlMRzh1WTNSMGMwSnZlQzV3Y205MGIzUjVjR1V1ZFc1d1lXTnJQV1oxYm1OMGFXOXVLR1VwZTNaaGNpQjBMR2tzWmp0bWIzSW9aajB3TEhROU1EdDBQSFJvYVhNdWMyRnRjR3hsWDJOdmRXNTBjeTVzWlc1bmRHZzdkQ3NyS1dadmNpaHBQVEE3YVR4MGFHbHpMbk5oYlhCc1pWOWpiM1Z1ZEhOYmRGMDdhU3NyS1dWYlpsMHVjSFJ6UFdWYlpsMHVaSFJ6SzNSb2FYTXVjMkZ0Y0d4bFgyOW1abk5sZEhOYmRGMHNaaXNyZlN4dkxuTjBkSE5DYjNndWNISnZkRzkwZVhCbExuVnVjR0ZqYXoxbWRXNWpkR2x2YmlobEtYdDJZWElnZEN4cExHWTdabTl5S0dZOU1DeDBQVEE3ZER4MGFHbHpMbk5oYlhCc1pWOWpiM1Z1ZEhNdWJHVnVaM1JvTzNRckt5bG1iM0lvYVQwd08yazhkR2hwY3k1ellXMXdiR1ZmWTI5MWJuUnpXM1JkTzJrckt5bG1QVDA5TUQ5bFcyWmRMbVIwY3owd09tVmJabDB1WkhSelBXVmJaaTB4WFM1a2RITXJkR2hwY3k1ellXMXdiR1ZmWkdWc2RHRnpXM1JkTEdZckszMHNieTV6ZEdOdlFtOTRMbkJ5YjNSdmRIbHdaUzUxYm5CaFkyczlablZ1WTNScGIyNG9aU2w3ZG1GeUlIUTdabTl5S0hROU1EdDBQSFJvYVhNdVkyaDFibXRmYjJabWMyVjBjeTVzWlc1bmRHZzdkQ3NyS1dWYmRGMHViMlptYzJWMFBYUm9hWE11WTJoMWJtdGZiMlptYzJWMGMxdDBYWDBzYnk1emRITmpRbTk0TG5CeWIzUnZkSGx3WlM1MWJuQmhZMnM5Wm5WdVkzUnBiMjRvWlNsN2RtRnlJSFFzYVN4bUxIVXNkanRtYjNJb2RUMHdMSFk5TUN4MFBUQTdkRHgwYUdsekxtWnBjbk4wWDJOb2RXNXJMbXhsYm1kMGFEdDBLeXNwWm05eUtHazlNRHRwUENoMEt6RThkR2hwY3k1bWFYSnpkRjlqYUhWdWF5NXNaVzVuZEdnL2RHaHBjeTVtYVhKemRGOWphSFZ1YTF0MEt6RmRPakV2TUNrN2FTc3JLV1p2Y2loMkt5c3NaajB3TzJZOGRHaHBjeTV6WVcxd2JHVnpYM0JsY2w5amFIVnVhMXQwWFR0bUt5c3BlMmxtS0dWYmRWMHBaVnQxWFM1a1pYTmpjbWx3ZEdsdmJsOXBibVJsZUQxMGFHbHpMbk5oYlhCc1pWOWtaWE5qY21sd2RHbHZibDlwYm1SbGVGdDBYU3hsVzNWZExtTm9kVzVyWDJsdVpHVjRQWFk3Wld4elpTQnlaWFIxY200N2RTc3JmWDBzYnk1emRITjZRbTk0TG5CeWIzUnZkSGx3WlM1MWJuQmhZMnM5Wm5WdVkzUnBiMjRvWlNsN2RtRnlJSFE3Wm05eUtIUTlNRHQwUEhSb2FYTXVjMkZ0Y0d4bFgzTnBlbVZ6TG14bGJtZDBhRHQwS3lzcFpWdDBYUzV6YVhwbFBYUm9hWE11YzJGdGNHeGxYM05wZW1WelczUmRmU3h2TGtSSlJrWmZRazlZUlZOZlVGSlBVRjlPUVUxRlV6MWJJbUp2ZUdWeklpd2laVzUwY21sbGN5SXNJbkpsWm1WeVpXNWpaWE1pTENKemRXSnpZVzF3YkdWeklpd2lhWFJsYlhNaUxDSnBkR1Z0WDJsdVptOXpJaXdpWlhoMFpXNTBjeUlzSW1GemMyOWphV0YwYVc5dWN5SXNJbk4xWW5ObFoyMWxiblJ6SWl3aWNtRnVaMlZ6SWl3aWMyVmxhMHhwYzNSeklpd2ljMlZsYTFCdmFXNTBjeUlzSW1WelpDSXNJbXhsZG1Wc2N5SmRMRzh1UkVsR1JsOVFVa2xOU1ZSSlZrVmZRVkpTUVZsZlVGSlBVRjlPUVUxRlV6MWJJbU52YlhCaGRHbGliR1ZmWW5KaGJtUnpJaXdpYldGMGNtbDRJaXdpYjNCamIyeHZjaUlzSW5OaGJYQnNaVjlqYjNWdWRITWlMQ0p6WVcxd2JHVmZZMjkxYm5Seklpd2ljMkZ0Y0d4bFgyUmxiSFJoY3lJc0ltWnBjbk4wWDJOb2RXNXJJaXdpYzJGdGNHeGxjMTl3WlhKZlkyaDFibXNpTENKellXMXdiR1ZmYzJsNlpYTWlMQ0pqYUhWdWExOXZabVp6WlhSeklpd2ljMkZ0Y0d4bFgyOW1abk5sZEhNaUxDSnpZVzF3YkdWZlpHVnpZM0pwY0hScGIyNWZhVzVrWlhnaUxDSnpZVzF3YkdWZlpIVnlZWFJwYjI0aVhTeHZMbUp2ZUVWeGRXRnNSbWxsYkdSelBXWjFibU4wYVc5dUtHVXNkQ2w3YVdZb1pTWW1JWFFwY21WMGRYSnVJVEU3ZG1GeUlHazdabTl5S0drZ2FXNGdaU2xwWmlnaEtHOHVSRWxHUmw5Q1QxaEZVMTlRVWs5UVgwNUJUVVZUTG1sdVpHVjRUMllvYVNrK0xURXBLWHRwWmlobFcybGRhVzV6ZEdGdVkyVnZaaUJ2TGtKdmVIeDhkRnRwWFdsdWMzUmhibU5sYjJZZ2J5NUNiM2dwWTI5dWRHbHVkV1U3YVdZb2RIbHdaVzltSUdWYmFWMCtJblVpZkh4MGVYQmxiMllnZEZ0cFhUNGlkU0lwWTI5dWRHbHVkV1U3YVdZb2RIbHdaVzltSUdWYmFWMDlQU0ptZFc1amRHbHZiaUo4ZkhSNWNHVnZaaUIwVzJsZFBUMGlablZ1WTNScGIyNGlLV052Ym5ScGJuVmxPMmxtS0dVdWMzVmlRbTk0VG1GdFpYTW1KbVV1YzNWaVFtOTRUbUZ0WlhNdWFXNWtaWGhQWmlocExuTnNhV05sS0RBc05Da3BQaTB4Zkh4MExuTjFZa0p2ZUU1aGJXVnpKaVowTG5OMVlrSnZlRTVoYldWekxtbHVaR1Y0VDJZb2FTNXpiR2xqWlNnd0xEUXBLVDR0TVNsamIyNTBhVzUxWlR0cFppaHBQVDA5SW1SaGRHRWlmSHhwUFQwOUluTjBZWEowSW54OGFUMDlQU0p6YVhwbElueDhhVDA5UFNKamNtVmhkR2x2Ymw5MGFXMWxJbng4YVQwOVBTSnRiMlJwWm1sallYUnBiMjVmZEdsdFpTSXBZMjl1ZEdsdWRXVTdhV1lvYnk1RVNVWkdYMUJTU1UxSlZFbFdSVjlCVWxKQldWOVFVazlRWDA1QlRVVlRMbWx1WkdWNFQyWW9hU2srTFRFcFkyOXVkR2x1ZFdVN2FXWW9aVnRwWFNFOVBYUmJhVjBwY21WMGRYSnVJVEY5Y21WMGRYSnVJVEI5TEc4dVltOTRSWEYxWVd3OVpuVnVZM1JwYjI0b1pTeDBLWHRwWmlnaGJ5NWliM2hGY1hWaGJFWnBaV3hrY3lobExIUXBLWEpsZEhWeWJpRXhPMlp2Y2loMllYSWdhVDB3TzJrOGJ5NUVTVVpHWDBKUFdFVlRYMUJTVDFCZlRrRk5SVk11YkdWdVozUm9PMmtyS3lsN2RtRnlJR1k5Ynk1RVNVWkdYMEpQV0VWVFgxQlNUMUJmVGtGTlJWTmJhVjA3YVdZb1pWdG1YU1ltZEZ0bVhTWW1JVzh1WW05NFJYRjFZV3dvWlZ0bVhTeDBXMlpkS1NseVpYUjFjbTRoTVgxeVpYUjFjbTRoTUgwN2RtRnlJRjg5Wm5WdVkzUnBiMjRvS1h0OU8xOHVjSEp2ZEc5MGVYQmxMbkJoY25ObFUyRnRjR3hsUFdaMWJtTjBhVzl1S0dVcGUzWmhjaUIwUFh0OUxHazdkQzV5WlhOdmRYSmpaWE05VzEwN2RtRnlJR1k5Ym1WM0lHRW9aUzVrWVhSaExtSjFabVpsY2lrN2FXWW9JV1V1YzNWaWMyRnRjR3hsYzN4OFpTNXpkV0p6WVcxd2JHVnpMbXhsYm1kMGFEMDlQVEFwZEM1a2IyTjFiV1Z1ZEZOMGNtbHVaejFtTG5KbFlXUlRkSEpwYm1jb1pTNWtZWFJoTG14bGJtZDBhQ2s3Wld4elpTQnBaaWgwTG1SdlkzVnRaVzUwVTNSeWFXNW5QV1l1Y21WaFpGTjBjbWx1WnlobExuTjFZbk5oYlhCc1pYTmJNRjB1YzJsNlpTa3NaUzV6ZFdKellXMXdiR1Z6TG14bGJtZDBhRDR4S1dadmNpaHBQVEU3YVR4bExuTjFZbk5oYlhCc1pYTXViR1Z1WjNSb08ya3JLeWwwTG5KbGMyOTFjbU5sYzF0cFhUMW1MbkpsWVdSVmFXNTBPRUZ5Y21GNUtHVXVjM1ZpYzJGdGNHeGxjMXRwWFM1emFYcGxLVHR5WlhSMWNtNGdkSGx3Wlc5bUlFUlBUVkJoY25ObGNqd2lkU0ltSmloMExtUnZZM1Z0Wlc1MFBXNWxkeUJFVDAxUVlYSnpaWElvS1M1d1lYSnpaVVp5YjIxVGRISnBibWNvZEM1a2IyTjFiV1Z1ZEZOMGNtbHVaeXdpWVhCd2JHbGpZWFJwYjI0dmVHMXNJaWtwTEhSOU8zWmhjaUJ3UFdaMWJtTjBhVzl1S0NsN2ZUdHdMbkJ5YjNSdmRIbHdaUzV3WVhKelpWTmhiWEJzWlQxbWRXNWpkR2x2YmlobEtYdDJZWElnZEN4cFBXNWxkeUJoS0dVdVpHRjBZUzVpZFdabVpYSXBPM0psZEhWeWJpQjBQV2t1Y21WaFpGTjBjbWx1WnlobExtUmhkR0V1YkdWdVozUm9LU3gwZlN4d0xuQnliM1J2ZEhsd1pTNXdZWEp6WlVOdmJtWnBaejFtZFc1amRHbHZiaWhsS1h0MllYSWdkQ3hwUFc1bGR5QmhLR1V1WW5WbVptVnlLVHR5WlhSMWNtNGdhUzV5WldGa1ZXbHVkRE15S0Nrc2REMXBMbkpsWVdSRFUzUnlhVzVuS0Nrc2RIMHNiaTVZVFV4VGRXSjBhWFJzWldsdU5GQmhjbk5sY2oxZkxHNHVWR1Y0ZEdsdU5GQmhjbk5sY2oxd08zWmhjaUJqUFdaMWJtTjBhVzl1S0dVcGUzUm9hWE11YzNSeVpXRnRQV1Y4Zkc1bGR5QmtMSFJvYVhNdVltOTRaWE05VzEwc2RHaHBjeTV0WkdGMGN6MWJYU3gwYUdsekxtMXZiMlp6UFZ0ZExIUm9hWE11YVhOUWNtOW5jbVZ6YzJsMlpUMGhNU3gwYUdsekxtMXZiM1pUZEdGeWRFWnZkVzVrUFNFeExIUm9hWE11YjI1TmIyOTJVM1JoY25ROWJuVnNiQ3gwYUdsekxtMXZiM1pUZEdGeWRGTmxiblE5SVRFc2RHaHBjeTV2YmxKbFlXUjVQVzUxYkd3c2RHaHBjeTV5WldGa2VWTmxiblE5SVRFc2RHaHBjeTV2YmxObFoyMWxiblE5Ym5Wc2JDeDBhR2x6TG05dVUyRnRjR3hsY3oxdWRXeHNMSFJvYVhNdWIyNUZjbkp2Y2oxdWRXeHNMSFJvYVhNdWMyRnRjR3hsVEdsemRFSjFhV3gwUFNFeExIUm9hWE11Wm5KaFoyMWxiblJsWkZSeVlXTnJjejFiWFN4MGFHbHpMbVY0ZEhKaFkzUmxaRlJ5WVdOcmN6MWJYU3gwYUdsekxtbHpSbkpoWjIxbGJuUmhkR2x2YmtsdWFYUnBZV3hwZW1Wa1BTRXhMSFJvYVhNdWMyRnRjR3hsVUhKdlkyVnpjMmx1WjFOMFlYSjBaV1E5SVRFc2RHaHBjeTV1WlhoMFRXOXZaazUxYldKbGNqMHdMSFJvYVhNdWFYUmxiVXhwYzNSQ2RXbHNkRDBoTVN4MGFHbHpMbTl1VTJsa2VEMXVkV3hzTEhSb2FYTXVjMmxrZUZObGJuUTlJVEY5TzJNdWNISnZkRzkwZVhCbExuTmxkRk5sWjIxbGJuUlBjSFJwYjI1elBXWjFibU4wYVc5dUtHVXNkQ3hwS1h0MllYSWdaajEwYUdsekxtZGxkRlJ5WVdOclFubEpaQ2hsS1R0cFppaG1LWHQyWVhJZ2RUMTdmVHQwYUdsekxtWnlZV2R0Wlc1MFpXUlVjbUZqYTNNdWNIVnphQ2gxS1N4MUxtbGtQV1VzZFM1MWMyVnlQWFFzZFM1MGNtRnJQV1lzWmk1dVpYaDBVMkZ0Y0d4bFBUQXNkUzV6WldkdFpXNTBVM1J5WldGdFBXNTFiR3dzZFM1dVlsOXpZVzF3YkdWelBURmxNeXgxTG5KaGNFRnNhV2R1WlcxbGJuUTlJVEFzYVNZbUtHa3VibUpUWVcxd2JHVnpKaVlvZFM1dVlsOXpZVzF3YkdWelBXa3VibUpUWVcxd2JHVnpLU3hwTG5KaGNFRnNhV2R1WlcxbGJuUW1KaWgxTG5KaGNFRnNhV2R1WlcxbGJuUTlhUzV5WVhCQmJHbG5ibVZ0Wlc1MEtTbDlmU3hqTG5CeWIzUnZkSGx3WlM1MWJuTmxkRk5sWjIxbGJuUlBjSFJwYjI1elBXWjFibU4wYVc5dUtHVXBlMlp2Y2loMllYSWdkRDB0TVN4cFBUQTdhVHgwYUdsekxtWnlZV2R0Wlc1MFpXUlVjbUZqYTNNdWJHVnVaM1JvTzJrckt5bDdkbUZ5SUdZOWRHaHBjeTVtY21GbmJXVnVkR1ZrVkhKaFkydHpXMmxkTzJZdWFXUTlQV1VtSmloMFBXa3BmWFErTFRFbUpuUm9hWE11Wm5KaFoyMWxiblJsWkZSeVlXTnJjeTV6Y0d4cFkyVW9kQ3d4S1gwc1l5NXdjbTkwYjNSNWNHVXVjMlYwUlhoMGNtRmpkR2x2Yms5d2RHbHZibk05Wm5WdVkzUnBiMjRvWlN4MExHa3BlM1poY2lCbVBYUm9hWE11WjJWMFZISmhZMnRDZVVsa0tHVXBPMmxtS0dZcGUzWmhjaUIxUFh0OU8zUm9hWE11WlhoMGNtRmpkR1ZrVkhKaFkydHpMbkIxYzJnb2RTa3NkUzVwWkQxbExIVXVkWE5sY2oxMExIVXVkSEpoYXoxbUxHWXVibVY0ZEZOaGJYQnNaVDB3TEhVdWJtSmZjMkZ0Y0d4bGN6MHhaVE1zZFM1ellXMXdiR1Z6UFZ0ZExHa21KbWt1Ym1KVFlXMXdiR1Z6SmlZb2RTNXVZbDl6WVcxd2JHVnpQV2t1Ym1KVFlXMXdiR1Z6S1gxOUxHTXVjSEp2ZEc5MGVYQmxMblZ1YzJWMFJYaDBjbUZqZEdsdmJrOXdkR2x2Ym5NOVpuVnVZM1JwYjI0b1pTbDdabTl5S0haaGNpQjBQUzB4TEdrOU1EdHBQSFJvYVhNdVpYaDBjbUZqZEdWa1ZISmhZMnR6TG14bGJtZDBhRHRwS3lzcGUzWmhjaUJtUFhSb2FYTXVaWGgwY21GamRHVmtWSEpoWTJ0elcybGRPMll1YVdROVBXVW1KaWgwUFdrcGZYUStMVEVtSm5Sb2FYTXVaWGgwY21GamRHVmtWSEpoWTJ0ekxuTndiR2xqWlNoMExERXBmU3hqTG5CeWIzUnZkSGx3WlM1d1lYSnpaVDFtZFc1amRHbHZiaWdwZTNaaGNpQmxMSFFzYVQwaE1UdHBaaWdoS0hSb2FYTXVjbVZ6ZEc5eVpWQmhjbk5sVUc5emFYUnBiMjRtSmlGMGFHbHpMbkpsYzNSdmNtVlFZWEp6WlZCdmMybDBhVzl1S0NrcEtXWnZjaWc3T3lscFppaDBhR2x6TG1oaGMwbHVZMjl0Y0d4bGRHVk5aR0YwSmlaMGFHbHpMbWhoYzBsdVkyOXRjR3hsZEdWTlpHRjBLQ2twZTJsbUtIUm9hWE11Y0hKdlkyVnpjMGx1WTI5dGNHeGxkR1ZOWkdGMEtDa3BZMjl1ZEdsdWRXVTdjbVYwZFhKdWZXVnNjMlVnYVdZb2RHaHBjeTV6WVhabFVHRnljMlZRYjNOcGRHbHZiaVltZEdocGN5NXpZWFpsVUdGeWMyVlFiM05wZEdsdmJpZ3BMR1U5Ynk1d1lYSnpaVTl1WlVKdmVDaDBhR2x6TG5OMGNtVmhiU3hwS1N4bExtTnZaR1U5UFQxdkxrVlNVbDlPVDFSZlJVNVBWVWRJWDBSQlZFRXBhV1lvZEdocGN5NXdjbTlqWlhOelNXNWpiMjF3YkdWMFpVSnZlQ2w3YVdZb2RHaHBjeTV3Y205alpYTnpTVzVqYjIxd2JHVjBaVUp2ZUNobEtTbGpiMjUwYVc1MVpUdHlaWFIxY201OVpXeHpaU0J5WlhSMWNtNDdaV3h6Wlh0MllYSWdaanR6ZDJsMFkyZ29kRDFsTG1KdmVDeG1QWFF1ZEhsd1pTRTlQU0oxZFdsa0lqOTBMblI1Y0dVNmRDNTFkV2xrTEhSb2FYTXVZbTk0WlhNdWNIVnphQ2gwS1N4bUtYdGpZWE5sSW0xa1lYUWlPblJvYVhNdWJXUmhkSE11Y0hWemFDaDBLVHRpY21WaGF6dGpZWE5sSW0xdmIyWWlPblJvYVhNdWJXOXZabk11Y0hWemFDaDBLVHRpY21WaGF6dGpZWE5sSW0xdmIzWWlPblJvYVhNdWJXOXZkbE4wWVhKMFJtOTFibVE5SVRBc2RHaHBjeTV0WkdGMGN5NXNaVzVuZEdnOVBUMHdKaVlvZEdocGN5NXBjMUJ5YjJkeVpYTnphWFpsUFNFd0tUdGtaV1poZFd4ME9uUm9hWE5iWmwwaFBUMTJiMmxrSURBbUpuSXVkMkZ5YmlnaVNWTlBSbWxzWlNJc0lrUjFjR3hwWTJGMFpTQkNiM2dnYjJZZ2RIbHdaVG9nSWl0bUt5SXNJRzkyWlhKeWFXUnBibWNnY0hKbGRtbHZkWE1nYjJOamRYSnlaVzVqWlNJcExIUm9hWE5iWmwwOWREdGljbVZoYTMxMGFHbHpMblZ3WkdGMFpWVnpaV1JDZVhSbGN5WW1kR2hwY3k1MWNHUmhkR1ZWYzJWa1FubDBaWE1vZEN4bEtYMTlMR011Y0hKdmRHOTBlWEJsTG1Ob1pXTnJRblZtWm1WeVBXWjFibU4wYVc5dUtHVXBlMmxtS0dVOVBXNTFiR3dwZEdoeWIzY2lRblZtWm1WeUlHMTFjM1FnWW1VZ1pHVm1hVzVsWkNCaGJtUWdibTl1SUdWdGNIUjVJanRwWmlobExtWnBiR1ZUZEdGeWREMDlQWFp2YVdRZ01DbDBhSEp2ZHlKQ2RXWm1aWElnYlhWemRDQm9ZWFpsSUdFZ1ptbHNaVk4wWVhKMElIQnliM0JsY25SNUlqdHlaWFIxY200Z1pTNWllWFJsVEdWdVozUm9QVDA5TUQ4b2NpNTNZWEp1S0NKSlUwOUdhV3hsSWl3aVNXZHViM0pwYm1jZ1pXMXdkSGtnWW5WbVptVnlJQ2htYVd4bFUzUmhjblE2SUNJclpTNW1hV3hsVTNSaGNuUXJJaWtpS1N4MGFHbHpMbk4wY21WaGJTNXNiMmRDZFdabVpYSk1aWFpsYkNncExDRXhLVG9vY2k1cGJtWnZLQ0pKVTA5R2FXeGxJaXdpVUhKdlkyVnpjMmx1WnlCaWRXWm1aWElnS0dacGJHVlRkR0Z5ZERvZ0lpdGxMbVpwYkdWVGRHRnlkQ3NpS1NJcExHVXVkWE5sWkVKNWRHVnpQVEFzZEdocGN5NXpkSEpsWVcwdWFXNXpaWEowUW5WbVptVnlLR1VwTEhSb2FYTXVjM1J5WldGdExteHZaMEoxWm1abGNreGxkbVZzS0Nrc2RHaHBjeTV6ZEhKbFlXMHVhVzVwZEdsaGJHbDZaV1FvS1Q4aE1Eb29jaTUzWVhKdUtDSkpVMDlHYVd4bElpd2lUbTkwSUhKbFlXUjVJSFJ2SUhOMFlYSjBJSEJoY25OcGJtY2lLU3doTVNrcGZTeGpMbkJ5YjNSdmRIbHdaUzVoY0hCbGJtUkNkV1ptWlhJOVpuVnVZM1JwYjI0b1pTeDBLWHQyWVhJZ2FUdHBaaWgwYUdsekxtTm9aV05yUW5WbVptVnlLR1VwS1hKbGRIVnliaUIwYUdsekxuQmhjbk5sS0Nrc2RHaHBjeTV0YjI5MlUzUmhjblJHYjNWdVpDWW1JWFJvYVhNdWJXOXZkbE4wWVhKMFUyVnVkQ1ltS0hSb2FYTXViVzl2ZGxOMFlYSjBVMlZ1ZEQwaE1DeDBhR2x6TG05dVRXOXZkbE4wWVhKMEppWjBhR2x6TG05dVRXOXZkbE4wWVhKMEtDa3BMSFJvYVhNdWJXOXZkajhvZEdocGN5NXpZVzF3YkdWTWFYTjBRblZwYkhSOGZDaDBhR2x6TG1KMWFXeGtVMkZ0Y0d4bFRHbHpkSE1vS1N4MGFHbHpMbk5oYlhCc1pVeHBjM1JDZFdsc2REMGhNQ2tzZEdocGN5NTFjR1JoZEdWVFlXMXdiR1ZNYVhOMGN5Z3BMSFJvYVhNdWIyNVNaV0ZrZVNZbUlYUm9hWE11Y21WaFpIbFRaVzUwSmlZb2RHaHBjeTV5WldGa2VWTmxiblE5SVRBc2RHaHBjeTV2YmxKbFlXUjVLSFJvYVhNdVoyVjBTVzVtYnlncEtTa3NkR2hwY3k1d2NtOWpaWE56VTJGdGNHeGxjeWgwS1N4MGFHbHpMbTVsZUhSVFpXVnJVRzl6YVhScGIyNC9LR2s5ZEdocGN5NXVaWGgwVTJWbGExQnZjMmwwYVc5dUxIUm9hWE11Ym1WNGRGTmxaV3RRYjNOcGRHbHZiajEyYjJsa0lEQXBPbWs5ZEdocGN5NXVaWGgwVUdGeWMyVlFiM05wZEdsdmJpeDBhR2x6TG5OMGNtVmhiUzVuWlhSRmJtUkdhV3hsVUc5emFYUnBiMjVCWm5SbGNpWW1LR2s5ZEdocGN5NXpkSEpsWVcwdVoyVjBSVzVrUm1sc1pWQnZjMmwwYVc5dVFXWjBaWElvYVNrcEtUcDBhR2x6TG01bGVIUlFZWEp6WlZCdmMybDBhVzl1UDJrOWRHaHBjeTV1WlhoMFVHRnljMlZRYjNOcGRHbHZianBwUFRBc2RHaHBjeTV6YVdSNEppWjBhR2x6TG05dVUybGtlQ1ltSVhSb2FYTXVjMmxrZUZObGJuUW1KaWgwYUdsekxtOXVVMmxrZUNoMGFHbHpMbk5wWkhncExIUm9hWE11YzJsa2VGTmxiblE5SVRBcExIUm9hWE11YldWMFlTWW1LSFJvYVhNdVpteGhkSFJsYmtsMFpXMUpibVp2SmlZaGRHaHBjeTVwZEdWdFRHbHpkRUoxYVd4MEppWW9kR2hwY3k1bWJHRjBkR1Z1U1hSbGJVbHVabThvS1N4MGFHbHpMbWwwWlcxTWFYTjBRblZwYkhROUlUQXBMSFJvYVhNdWNISnZZMlZ6YzBsMFpXMXpKaVowYUdsekxuQnliMk5sYzNOSmRHVnRjeWgwYUdsekxtOXVTWFJsYlNrcExIUm9hWE11YzNSeVpXRnRMbU5zWldGdVFuVm1abVZ5Y3lZbUtISXVhVzVtYnlnaVNWTlBSbWxzWlNJc0lrUnZibVVnY0hKdlkyVnpjMmx1WnlCaWRXWm1aWElnS0dacGJHVlRkR0Z5ZERvZ0lpdGxMbVpwYkdWVGRHRnlkQ3NpS1NBdElHNWxlSFFnWW5WbVptVnlJSFJ2SUdabGRHTm9JSE5vYjNWc1pDQm9ZWFpsSUdFZ1ptbHNaVk4wWVhKMElIQnZjMmwwYVc5dUlHOW1JQ0lyYVNrc2RHaHBjeTV6ZEhKbFlXMHViRzluUW5WbVptVnlUR1YyWld3b0tTeDBhR2x6TG5OMGNtVmhiUzVqYkdWaGJrSjFabVpsY25Nb0tTeDBhR2x6TG5OMGNtVmhiUzVzYjJkQ2RXWm1aWEpNWlhabGJDZ2hNQ2tzY2k1cGJtWnZLQ0pKVTA5R2FXeGxJaXdpVTJGdGNHeGxJR1JoZEdFZ2MybDZaU0JwYmlCdFpXMXZjbms2SUNJcmRHaHBjeTVuWlhSQmJHeHZZMkYwWldSVFlXMXdiR1ZFWVhSaFUybDZaU2dwS1Nrc2FYMHNZeTV3Y205MGIzUjVjR1V1WjJWMFNXNW1iejFtZFc1amRHbHZiaWdwZTNaaGNpQmxMSFFzYVQxN2ZTeG1MSFVzZGl4NUxHMDlibVYzSUVSaGRHVW9JakU1TURRdE1ERXRNREZVTURBNk1EQTZNREJhSWlrdVoyVjBWR2x0WlNncE8ybG1LSFJvYVhNdWJXOXZkaWxtYjNJb2FTNW9ZWE5OYjI5MlBTRXdMR2t1WkhWeVlYUnBiMjQ5ZEdocGN5NXRiMjkyTG0xMmFHUXVaSFZ5WVhScGIyNHNhUzUwYVcxbGMyTmhiR1U5ZEdocGN5NXRiMjkyTG0xMmFHUXVkR2x0WlhOallXeGxMR2t1YVhOR2NtRm5iV1Z1ZEdWa1BYUm9hWE11Ylc5dmRpNXRkbVY0SVQxdWRXeHNMR2t1YVhOR2NtRm5iV1Z1ZEdWa0ppWjBhR2x6TG0xdmIzWXViWFpsZUM1dFpXaGtKaVlvYVM1bWNtRm5iV1Z1ZEY5a2RYSmhkR2x2YmoxMGFHbHpMbTF2YjNZdWJYWmxlQzV0Wldoa0xtWnlZV2R0Wlc1MFgyUjFjbUYwYVc5dUtTeHBMbWx6VUhKdlozSmxjM05wZG1VOWRHaHBjeTVwYzFCeWIyZHlaWE56YVhabExHa3VhR0Z6U1U5RVBYUm9hWE11Ylc5dmRpNXBiMlJ6SVQxdWRXeHNMR2t1WW5KaGJtUnpQVnRkTEdrdVluSmhibVJ6TG5CMWMyZ29kR2hwY3k1bWRIbHdMbTFoYW05eVgySnlZVzVrS1N4cExtSnlZVzVrY3oxcExtSnlZVzVrY3k1amIyNWpZWFFvZEdocGN5NW1kSGx3TG1OdmJYQmhkR2xpYkdWZlluSmhibVJ6S1N4cExtTnlaV0YwWldROWJtVjNJRVJoZEdVb2JTdDBhR2x6TG0xdmIzWXViWFpvWkM1amNtVmhkR2x2Ymw5MGFXMWxLakZsTXlrc2FTNXRiMlJwWm1sbFpEMXVaWGNnUkdGMFpTaHRLM1JvYVhNdWJXOXZkaTV0ZG1oa0xtMXZaR2xtYVdOaGRHbHZibDkwYVcxbEtqRmxNeWtzYVM1MGNtRmphM005VzEwc2FTNWhkV1JwYjFSeVlXTnJjejFiWFN4cExuWnBaR1Z2VkhKaFkydHpQVnRkTEdrdWMzVmlkR2wwYkdWVWNtRmphM005VzEwc2FTNXRaWFJoWkdGMFlWUnlZV05yY3oxYlhTeHBMbWhwYm5SVWNtRmphM005VzEwc2FTNXZkR2hsY2xSeVlXTnJjejFiWFN4bFBUQTdaVHgwYUdsekxtMXZiM1l1ZEhKaGEzTXViR1Z1WjNSb08yVXJLeWw3YVdZb1pqMTBhR2x6TG0xdmIzWXVkSEpoYTNOYlpWMHNlVDFtTG0xa2FXRXViV2x1Wmk1emRHSnNMbk4wYzJRdVpXNTBjbWxsYzFzd1hTeDFQWHQ5TEdrdWRISmhZMnR6TG5CMWMyZ29kU2tzZFM1cFpEMW1MblJyYUdRdWRISmhZMnRmYVdRc2RTNXVZVzFsUFdZdWJXUnBZUzVvWkd4eUxtNWhiV1VzZFM1eVpXWmxjbVZ1WTJWelBWdGRMR1l1ZEhKbFppbG1iM0lvZEQwd08zUThaaTUwY21WbUxtSnZlR1Z6TG14bGJtZDBhRHQwS3lzcGRqMTdmU3gxTG5KbFptVnlaVzVqWlhNdWNIVnphQ2gyS1N4MkxuUjVjR1U5Wmk1MGNtVm1MbUp2ZUdWelczUmRMblI1Y0dVc2RpNTBjbUZqYTE5cFpITTlaaTUwY21WbUxtSnZlR1Z6VzNSZExuUnlZV05yWDJsa2N6dG1MbVZrZEhNbUppaDFMbVZrYVhSelBXWXVaV1IwY3k1bGJITjBMbVZ1ZEhKcFpYTXBMSFV1WTNKbFlYUmxaRDF1WlhjZ1JHRjBaU2h0SzJZdWRHdG9aQzVqY21WaGRHbHZibDkwYVcxbEtqRmxNeWtzZFM1dGIyUnBabWxsWkQxdVpYY2dSR0YwWlNodEsyWXVkR3RvWkM1dGIyUnBabWxqWVhScGIyNWZkR2x0WlNveFpUTXBMSFV1Ylc5MmFXVmZaSFZ5WVhScGIyNDlaaTUwYTJoa0xtUjFjbUYwYVc5dUxIVXViVzkyYVdWZmRHbHRaWE5qWVd4bFBXa3VkR2x0WlhOallXeGxMSFV1YkdGNVpYSTlaaTUwYTJoa0xteGhlV1Z5TEhVdVlXeDBaWEp1WVhSbFgyZHliM1Z3UFdZdWRHdG9aQzVoYkhSbGNtNWhkR1ZmWjNKdmRYQXNkUzUyYjJ4MWJXVTlaaTUwYTJoa0xuWnZiSFZ0WlN4MUxtMWhkSEpwZUQxbUxuUnJhR1F1YldGMGNtbDRMSFV1ZEhKaFkydGZkMmxrZEdnOVppNTBhMmhrTG5kcFpIUm9MelkxTlRNMkxIVXVkSEpoWTJ0ZmFHVnBaMmgwUFdZdWRHdG9aQzVvWldsbmFIUXZOalUxTXpZc2RTNTBhVzFsYzJOaGJHVTlaaTV0WkdsaExtMWthR1F1ZEdsdFpYTmpZV3hsTEhVdVkzUnpYM05vYVdaMFBXWXViV1JwWVM1dGFXNW1Mbk4wWW13dVkzTnNaeXgxTG1SMWNtRjBhVzl1UFdZdWJXUnBZUzV0Wkdoa0xtUjFjbUYwYVc5dUxIVXVjMkZ0Y0d4bGMxOWtkWEpoZEdsdmJqMW1Mbk5oYlhCc1pYTmZaSFZ5WVhScGIyNHNkUzVqYjJSbFl6MTVMbWRsZEVOdlpHVmpLQ2tzZFM1cmFXNWtQV1l1ZFdSMFlTWW1aaTUxWkhSaExtdHBibVJ6TG14bGJtZDBhRDltTG5Wa2RHRXVhMmx1WkhOYk1GMDZlM05qYUdWdFpWVlNTVG9pSWl4MllXeDFaVG9pSW4wc2RTNXNZVzVuZFdGblpUMW1MbTFrYVdFdVpXeHVaejltTG0xa2FXRXVaV3h1Wnk1bGVIUmxibVJsWkY5c1lXNW5kV0ZuWlRwbUxtMWthV0V1YldSb1pDNXNZVzVuZFdGblpWTjBjbWx1Wnl4MUxtNWlYM05oYlhCc1pYTTlaaTV6WVcxd2JHVnpMbXhsYm1kMGFDeDFMbk5wZW1VOVppNXpZVzF3YkdWelgzTnBlbVVzZFM1aWFYUnlZWFJsUFhVdWMybDZaU280S25VdWRHbHRaWE5qWVd4bEwzVXVjMkZ0Y0d4bGMxOWtkWEpoZEdsdmJpeDVMbWx6UVhWa2FXOG9LVDhvZFM1MGVYQmxQU0poZFdScGJ5SXNhUzVoZFdScGIxUnlZV05yY3k1d2RYTm9LSFVwTEhVdVlYVmthVzg5ZTMwc2RTNWhkV1JwYnk1ellXMXdiR1ZmY21GMFpUMTVMbWRsZEZOaGJYQnNaVkpoZEdVb0tTeDFMbUYxWkdsdkxtTm9ZVzV1Wld4ZlkyOTFiblE5ZVM1blpYUkRhR0Z1Ym1Wc1EyOTFiblFvS1N4MUxtRjFaR2x2TG5OaGJYQnNaVjl6YVhwbFBYa3VaMlYwVTJGdGNHeGxVMmw2WlNncEtUcDVMbWx6Vm1sa1pXOG9LVDhvZFM1MGVYQmxQU0oyYVdSbGJ5SXNhUzUyYVdSbGIxUnlZV05yY3k1d2RYTm9LSFVwTEhVdWRtbGtaVzg5ZTMwc2RTNTJhV1JsYnk1M2FXUjBhRDE1TG1kbGRGZHBaSFJvS0Nrc2RTNTJhV1JsYnk1b1pXbG5hSFE5ZVM1blpYUklaV2xuYUhRb0tTazZlUzVwYzFOMVluUnBkR3hsS0NrL0tIVXVkSGx3WlQwaWMzVmlkR2wwYkdWeklpeHBMbk4xWW5ScGRHeGxWSEpoWTJ0ekxuQjFjMmdvZFNrcE9ua3VhWE5JYVc1MEtDay9LSFV1ZEhsd1pUMGliV1YwWVdSaGRHRWlMR2t1YUdsdWRGUnlZV05yY3k1d2RYTm9LSFVwS1RwNUxtbHpUV1YwWVdSaGRHRW9LVDhvZFM1MGVYQmxQU0p0WlhSaFpHRjBZU0lzYVM1dFpYUmhaR0YwWVZSeVlXTnJjeTV3ZFhOb0tIVXBLVG9vZFM1MGVYQmxQU0p0WlhSaFpHRjBZU0lzYVM1dmRHaGxjbFJ5WVdOcmN5NXdkWE5vS0hVcEtYMWxiSE5sSUdrdWFHRnpUVzl2ZGowaE1UdHBaaWhwTG0xcGJXVTlJaUlzYVM1b1lYTk5iMjkySmlacExuUnlZV05yY3lsN1ptOXlLR2t1ZG1sa1pXOVVjbUZqYTNNbUpta3VkbWxrWlc5VWNtRmphM011YkdWdVozUm9QakEvYVM1dGFXMWxLejBuZG1sa1pXOHZiWEEwT3lCamIyUmxZM005SWljNmFTNWhkV1JwYjFSeVlXTnJjeVltYVM1aGRXUnBiMVJ5WVdOcmN5NXNaVzVuZEdnK01EOXBMbTFwYldVclBTZGhkV1JwYnk5dGNEUTdJR052WkdWamN6MGlKenBwTG0xcGJXVXJQU2RoY0hCc2FXTmhkR2x2Ymk5dGNEUTdJR052WkdWamN6MGlKeXhsUFRBN1pUeHBMblJ5WVdOcmN5NXNaVzVuZEdnN1pTc3JLV1VoUFQwd0ppWW9hUzV0YVcxbEt6MGlMQ0lwTEdrdWJXbHRaU3M5YVM1MGNtRmphM05iWlYwdVkyOWtaV003YVM1dGFXMWxLejBuSWpzZ2NISnZabWxzWlhNOUlpY3NhUzV0YVcxbEt6MTBhR2x6TG1aMGVYQXVZMjl0Y0dGMGFXSnNaVjlpY21GdVpITXVhbTlwYmlncExHa3ViV2x0WlNzOUp5SW5mWEpsZEhWeWJpQnBmU3hqTG5CeWIzUnZkSGx3WlM1d2NtOWpaWE56VTJGdGNHeGxjejFtZFc1amRHbHZiaWhsS1h0MllYSWdkQ3hwTzJsbUtIUm9hWE11YzJGdGNHeGxVSEp2WTJWemMybHVaMU4wWVhKMFpXUXBlMmxtS0hSb2FYTXVhWE5HY21GbmJXVnVkR0YwYVc5dVNXNXBkR2xoYkdsNlpXUW1KblJvYVhNdWIyNVRaV2R0Wlc1MElUMDliblZzYkNsbWIzSW9kRDB3TzNROGRHaHBjeTVtY21GbmJXVnVkR1ZrVkhKaFkydHpMbXhsYm1kMGFEdDBLeXNwZTNaaGNpQm1QWFJvYVhNdVpuSmhaMjFsYm5SbFpGUnlZV05yYzF0MFhUdG1iM0lvYVQxbUxuUnlZV3M3YVM1dVpYaDBVMkZ0Y0d4bFBHa3VjMkZ0Y0d4bGN5NXNaVzVuZEdnbUpuUm9hWE11YzJGdGNHeGxVSEp2WTJWemMybHVaMU4wWVhKMFpXUTdLWHR5TG1SbFluVm5LQ0pKVTA5R2FXeGxJaXdpUTNKbFlYUnBibWNnYldWa2FXRWdabkpoWjIxbGJuUWdiMjRnZEhKaFkyc2dJeUlyWmk1cFpDc2lJR1p2Y2lCellXMXdiR1VnSWl0cExtNWxlSFJUWVcxd2JHVXBPM1poY2lCMVBYUm9hWE11WTNKbFlYUmxSbkpoWjIxbGJuUW9aaTVwWkN4cExtNWxlSFJUWVcxd2JHVXNaaTV6WldkdFpXNTBVM1J5WldGdEtUdHBaaWgxS1dZdWMyVm5iV1Z1ZEZOMGNtVmhiVDExTEdrdWJtVjRkRk5oYlhCc1pTc3JPMlZzYzJVZ1luSmxZV3M3YVdZb0tHa3VibVY0ZEZOaGJYQnNaU1ZtTG01aVgzTmhiWEJzWlhNOVBUMHdmSHhsZkh4cExtNWxlSFJUWVcxd2JHVStQV2t1YzJGdGNHeGxjeTVzWlc1bmRHZ3BKaVlvY2k1cGJtWnZLQ0pKVTA5R2FXeGxJaXdpVTJWdVpHbHVaeUJtY21GbmJXVnVkR1ZrSUdSaGRHRWdiMjRnZEhKaFkyc2dJeUlyWmk1cFpDc2lJR1p2Y2lCellXMXdiR1Z6SUZzaUswMWhkR2d1YldGNEtEQXNhUzV1WlhoMFUyRnRjR3hsTFdZdWJtSmZjMkZ0Y0d4bGN5a3JJaXdpS3locExtNWxlSFJUWVcxd2JHVXRNU2tySWwwaUtTeHlMbWx1Wm04b0lrbFRUMFpwYkdVaUxDSlRZVzF3YkdVZ1pHRjBZU0J6YVhwbElHbHVJRzFsYlc5eWVUb2dJaXQwYUdsekxtZGxkRUZzYkc5allYUmxaRk5oYlhCc1pVUmhkR0ZUYVhwbEtDa3BMSFJvYVhNdWIyNVRaV2R0Wlc1MEppWjBhR2x6TG05dVUyVm5iV1Z1ZENobUxtbGtMR1l1ZFhObGNpeG1Mbk5sWjIxbGJuUlRkSEpsWVcwdVluVm1abVZ5TEdrdWJtVjRkRk5oYlhCc1pTeGxmSHhwTG01bGVIUlRZVzF3YkdVK1BXa3VjMkZ0Y0d4bGN5NXNaVzVuZEdncExHWXVjMlZuYldWdWRGTjBjbVZoYlQxdWRXeHNMR1loUFQxMGFHbHpMbVp5WVdkdFpXNTBaV1JVY21GamEzTmJkRjBwS1dKeVpXRnJmWDFwWmloMGFHbHpMbTl1VTJGdGNHeGxjeUU5UFc1MWJHd3BabTl5S0hROU1EdDBQSFJvYVhNdVpYaDBjbUZqZEdWa1ZISmhZMnR6TG14bGJtZDBhRHQwS3lzcGUzWmhjaUIyUFhSb2FYTXVaWGgwY21GamRHVmtWSEpoWTJ0elczUmRPMlp2Y2locFBYWXVkSEpoYXp0cExtNWxlSFJUWVcxd2JHVThhUzV6WVcxd2JHVnpMbXhsYm1kMGFDWW1kR2hwY3k1ellXMXdiR1ZRY205alpYTnphVzVuVTNSaGNuUmxaRHNwZTNJdVpHVmlkV2NvSWtsVFQwWnBiR1VpTENKRmVIQnZjblJwYm1jZ2IyNGdkSEpoWTJzZ0l5SXJkaTVwWkNzaUlITmhiWEJzWlNBaklpdHBMbTVsZUhSVFlXMXdiR1VwTzNaaGNpQjVQWFJvYVhNdVoyVjBVMkZ0Y0d4bEtHa3NhUzV1WlhoMFUyRnRjR3hsS1R0cFppaDVLV2t1Ym1WNGRGTmhiWEJzWlNzckxIWXVjMkZ0Y0d4bGN5NXdkWE5vS0hrcE8yVnNjMlVnWW5KbFlXczdhV1lvS0drdWJtVjRkRk5oYlhCc1pTVjJMbTVpWDNOaGJYQnNaWE05UFQwd2ZIeHBMbTVsZUhSVFlXMXdiR1UrUFdrdWMyRnRjR3hsY3k1c1pXNW5kR2dwSmlZb2NpNWtaV0oxWnlnaVNWTlBSbWxzWlNJc0lsTmxibVJwYm1jZ2MyRnRjR3hsY3lCdmJpQjBjbUZqYXlBaklpdDJMbWxrS3lJZ1ptOXlJSE5oYlhCc1pTQWlLMmt1Ym1WNGRGTmhiWEJzWlNrc2RHaHBjeTV2YmxOaGJYQnNaWE1tSm5Sb2FYTXViMjVUWVcxd2JHVnpLSFl1YVdRc2RpNTFjMlZ5TEhZdWMyRnRjR3hsY3lrc2RpNXpZVzF3YkdWelBWdGRMSFloUFQxMGFHbHpMbVY0ZEhKaFkzUmxaRlJ5WVdOcmMxdDBYU2twWW5KbFlXdDlmWDE5TEdNdWNISnZkRzkwZVhCbExtZGxkRUp2ZUQxbWRXNWpkR2x2YmlobEtYdDJZWElnZEQxMGFHbHpMbWRsZEVKdmVHVnpLR1VzSVRBcE8zSmxkSFZ5YmlCMExteGxibWQwYUQ5MFd6QmRPbTUxYkd4OUxHTXVjSEp2ZEc5MGVYQmxMbWRsZEVKdmVHVnpQV1oxYm1OMGFXOXVLR1VzZENsN2RtRnlJR2s5VzEwN2NtVjBkWEp1SUdNdVgzTjNaV1Z3TG1OaGJHd29kR2hwY3l4bExHa3NkQ2tzYVgwc1l5NWZjM2RsWlhBOVpuVnVZM1JwYjI0b1pTeDBMR2twZTNSb2FYTXVkSGx3WlNZbWRHaHBjeTUwZVhCbFBUMWxKaVowTG5CMWMyZ29kR2hwY3lrN1ptOXlLSFpoY2lCbUlHbHVJSFJvYVhNdVltOTRaWE1wZTJsbUtIUXViR1Z1WjNSb0ppWnBLWEpsZEhWeWJqdGpMbDl6ZDJWbGNDNWpZV3hzS0hSb2FYTXVZbTk0WlhOYlpsMHNaU3gwTEdrcGZYMHNZeTV3Y205MGIzUjVjR1V1WjJWMFZISmhZMnRUWVcxd2JHVnpTVzVtYnoxbWRXNWpkR2x2YmlobEtYdDJZWElnZEQxMGFHbHpMbWRsZEZSeVlXTnJRbmxKWkNobEtUdHBaaWgwS1hKbGRIVnliaUIwTG5OaGJYQnNaWE45TEdNdWNISnZkRzkwZVhCbExtZGxkRlJ5WVdOclUyRnRjR3hsUFdaMWJtTjBhVzl1S0dVc2RDbDdkbUZ5SUdrOWRHaHBjeTVuWlhSVWNtRmphMEo1U1dRb1pTa3NaajEwYUdsekxtZGxkRk5oYlhCc1pTaHBMSFFwTzNKbGRIVnliaUJtZlN4akxuQnliM1J2ZEhsd1pTNXlaV3hsWVhObFZYTmxaRk5oYlhCc1pYTTlablZ1WTNScGIyNG9aU3gwS1h0MllYSWdhVDB3TEdZOWRHaHBjeTVuWlhSVWNtRmphMEo1U1dRb1pTazdaaTVzWVhOMFZtRnNhV1JUWVcxd2JHVjhmQ2htTG14aGMzUldZV3hwWkZOaGJYQnNaVDB3S1R0bWIzSW9kbUZ5SUhVOVppNXNZWE4wVm1Gc2FXUlRZVzF3YkdVN2RUeDBPM1VyS3lscEt6MTBhR2x6TG5KbGJHVmhjMlZUWVcxd2JHVW9aaXgxS1R0eUxtbHVabThvSWtsVFQwWnBiR1VpTENKVWNtRmpheUFqSWl0bEt5SWdjbVZzWldGelpXUWdjMkZ0Y0d4bGN5QjFjQ0IwYnlBaUszUXJJaUFvY21Wc1pXRnpaV1FnYzJsNlpUb2dJaXRwS3lJc0lISmxiV0ZwYm1sdVp6b2dJaXQwYUdsekxuTmhiWEJzWlhORVlYUmhVMmw2WlNzaUtTSXBMR1l1YkdGemRGWmhiR2xrVTJGdGNHeGxQWFI5TEdNdWNISnZkRzkwZVhCbExuTjBZWEowUFdaMWJtTjBhVzl1S0NsN2RHaHBjeTV6WVcxd2JHVlFjbTlqWlhOemFXNW5VM1JoY25SbFpEMGhNQ3gwYUdsekxuQnliMk5sYzNOVFlXMXdiR1Z6S0NFeEtYMHNZeTV3Y205MGIzUjVjR1V1YzNSdmNEMW1kVzVqZEdsdmJpZ3BlM1JvYVhNdWMyRnRjR3hsVUhKdlkyVnpjMmx1WjFOMFlYSjBaV1E5SVRGOUxHTXVjSEp2ZEc5MGVYQmxMbVpzZFhOb1BXWjFibU4wYVc5dUtDbDdjaTVwYm1adktDSkpVMDlHYVd4bElpd2lSbXgxYzJocGJtY2djbVZ0WVdsdWFXNW5JSE5oYlhCc1pYTWlLU3gwYUdsekxuVndaR0YwWlZOaGJYQnNaVXhwYzNSektDa3NkR2hwY3k1d2NtOWpaWE56VTJGdGNHeGxjeWdoTUNrc2RHaHBjeTV6ZEhKbFlXMHVZMnhsWVc1Q2RXWm1aWEp6S0Nrc2RHaHBjeTV6ZEhKbFlXMHViRzluUW5WbVptVnlUR1YyWld3b0lUQXBmU3hqTG5CeWIzUnZkSGx3WlM1elpXVnJWSEpoWTJzOVpuVnVZM1JwYjI0b1pTeDBMR2twZTNaaGNpQm1MSFVzZGoweEx6QXNlVDB3TEcwOU1DeGlPMmxtS0drdWMyRnRjR3hsY3k1c1pXNW5kR2c5UFQwd0tYSmxkSFZ5YmlCeUxtbHVabThvSWtsVFQwWnBiR1VpTENKT2J5QnpZVzF3YkdVZ2FXNGdkSEpoWTJzc0lHTmhibTV2ZENCelpXVnJJU0JWYzJsdVp5QjBhVzFsSUNJcmNpNW5aWFJFZFhKaGRHbHZibE4wY21sdVp5Z3dMREVwS3lJZ1lXNWtJRzltWm5ObGREb2dNQ0lwTEh0dlptWnpaWFE2TUN4MGFXMWxPakI5TzJadmNpaG1QVEE3Wmp4cExuTmhiWEJzWlhNdWJHVnVaM1JvTzJZckt5bDdhV1lvZFQxcExuTmhiWEJzWlhOYlpsMHNaajA5UFRBcGJUMHdMR0k5ZFM1MGFXMWxjMk5oYkdVN1pXeHpaU0JwWmloMUxtTjBjejVsS25VdWRHbHRaWE5qWVd4bEtYdHRQV1l0TVR0aWNtVmhhMzEwSmlaMUxtbHpYM041Ym1NbUppaDVQV1lwZldadmNpaDBKaVlvYlQxNUtTeGxQV2t1YzJGdGNHeGxjMXR0WFM1amRITXNhUzV1WlhoMFUyRnRjR3hsUFcwN2FTNXpZVzF3YkdWelcyMWRMbUZzY21WaFpIbFNaV0ZrUFQwOWFTNXpZVzF3YkdWelcyMWRMbk5wZW1VbUpta3VjMkZ0Y0d4bGMxdHRLekZkT3lsdEt5czdjbVYwZFhKdUlIWTlhUzV6WVcxd2JHVnpXMjFkTG05bVpuTmxkQ3RwTG5OaGJYQnNaWE5iYlYwdVlXeHlaV0ZrZVZKbFlXUXNjaTVwYm1adktDSkpVMDlHYVd4bElpd2lVMlZsYTJsdVp5QjBieUFpS3loMFB5SlNRVkFpT2lJaUtTc2lJSE5oYlhCc1pTQWpJaXRwTG01bGVIUlRZVzF3YkdVcklpQnZiaUIwY21GamF5QWlLMmt1ZEd0b1pDNTBjbUZqYTE5cFpDc2lMQ0IwYVcxbElDSXJjaTVuWlhSRWRYSmhkR2x2YmxOMGNtbHVaeWhsTEdJcEt5SWdZVzVrSUc5bVpuTmxkRG9nSWl0MktTeDdiMlptYzJWME9uWXNkR2x0WlRwbEwySjlmU3hqTG5CeWIzUnZkSGx3WlM1elpXVnJQV1oxYm1OMGFXOXVLR1VzZENsN2RtRnlJR2s5ZEdocGN5NXRiMjkyTEdZc2RTeDJMSGs5ZTI5bVpuTmxkRG94THpBc2RHbHRaVG94THpCOU8ybG1LSFJvYVhNdWJXOXZkaWw3Wm05eUtIWTlNRHQyUEdrdWRISmhhM011YkdWdVozUm9PM1lyS3lsbVBXa3VkSEpoYTNOYmRsMHNkVDEwYUdsekxuTmxaV3RVY21GamF5aGxMSFFzWmlrc2RTNXZabVp6WlhROGVTNXZabVp6WlhRbUppaDVMbTltWm5ObGREMTFMbTltWm5ObGRDa3NkUzUwYVcxbFBIa3VkR2x0WlNZbUtIa3VkR2x0WlQxMUxuUnBiV1VwTzNKbGRIVnliaUJ5TG1sdVptOG9Ja2xUVDBacGJHVWlMQ0pUWldWcmFXNW5JR0YwSUhScGJXVWdJaXR5TG1kbGRFUjFjbUYwYVc5dVUzUnlhVzVuS0hrdWRHbHRaU3d4S1NzaUlHNWxaV1J6SUdFZ1luVm1abVZ5SUhkcGRHZ2dZU0JtYVd4bFUzUmhjblFnY0c5emFYUnBiMjRnYjJZZ0lpdDVMbTltWm5ObGRDa3NlUzV2Wm1aelpYUTlQVDB4THpBL2VUMTdiMlptYzJWME9uUm9hWE11Ym1WNGRGQmhjbk5sVUc5emFYUnBiMjRzZEdsdFpUb3dmVHA1TG05bVpuTmxkRDEwYUdsekxuTjBjbVZoYlM1blpYUkZibVJHYVd4bFVHOXphWFJwYjI1QlpuUmxjaWg1TG05bVpuTmxkQ2tzY2k1cGJtWnZLQ0pKVTA5R2FXeGxJaXdpUVdScWRYTjBaV1FnYzJWbGF5QndiM05wZEdsdmJpQW9ZV1owWlhJZ1kyaGxZMnRwYm1jZ1pHRjBZU0JoYkhKbFlXUjVJR2x1SUdKMVptWmxjaWs2SUNJcmVTNXZabVp6WlhRcExIbDlaV3h6WlNCMGFISnZkeUpEWVc1dWIzUWdjMlZsYXpvZ2JXOXZkaUJ1YjNRZ2NtVmpaV2wyWldRaEluMHNZeTV3Y205MGIzUjVjR1V1WlhGMVlXdzlablZ1WTNScGIyNG9aU2w3Wm05eUtIWmhjaUIwUFRBN2REeDBhR2x6TG1KdmVHVnpMbXhsYm1kMGFDWW1kRHhsTG1KdmVHVnpMbXhsYm1kMGFEc3BlM1poY2lCcFBYUm9hWE11WW05NFpYTmJkRjBzWmoxbExtSnZlR1Z6VzNSZE8ybG1LQ0Z2TG1KdmVFVnhkV0ZzS0drc1ppa3BjbVYwZFhKdUlURTdkQ3NyZlhKbGRIVnliaUV3ZlN4dUxrbFRUMFpwYkdVOVl5eGpMbkJ5YjNSdmRIbHdaUzVzWVhOMFFtOTRVM1JoY25SUWIzTnBkR2x2Ymowd0xHTXVjSEp2ZEc5MGVYQmxMbkJoY25OcGJtZE5aR0YwUFc1MWJHd3NZeTV3Y205MGIzUjVjR1V1Ym1WNGRGQmhjbk5sVUc5emFYUnBiMjQ5TUN4akxuQnliM1J2ZEhsd1pTNWthWE5qWVhKa1RXUmhkRVJoZEdFOUlURXNZeTV3Y205MGIzUjVjR1V1Y0hKdlkyVnpjMGx1WTI5dGNHeGxkR1ZDYjNnOVpuVnVZM1JwYjI0b1pTbDdkbUZ5SUhRc2FTeG1PM0psZEhWeWJpQmxMblI1Y0dVOVBUMGliV1JoZENJL0tIUTlibVYzSUc5YlpTNTBlWEJsS3lKQ2IzZ2lYU2hsTG5OcGVtVXBMSFJvYVhNdWNHRnljMmx1WjAxa1lYUTlkQ3gwYUdsekxtSnZlR1Z6TG5CMWMyZ29kQ2tzZEdocGN5NXRaR0YwY3k1d2RYTm9LSFFwTEhRdWMzUmhjblE5WlM1emRHRnlkQ3gwTG1oa2NsOXphWHBsUFdVdWFHUnlYM05wZW1Vc2RHaHBjeTV6ZEhKbFlXMHVZV1JrVlhObFpFSjVkR1Z6S0hRdWFHUnlYM05wZW1VcExIUm9hWE11YkdGemRFSnZlRk4wWVhKMFVHOXphWFJwYjI0OWRDNXpkR0Z5ZEN0MExuTnBlbVVzWmoxMGFHbHpMbk4wY21WaGJTNXpaV1ZyS0hRdWMzUmhjblFyZEM1emFYcGxMQ0V4TEhSb2FYTXVaR2x6WTJGeVpFMWtZWFJFWVhSaEtTeG1QeWgwYUdsekxuQmhjbk5wYm1kTlpHRjBQVzUxYkd3c0lUQXBPaWgwYUdsekxtMXZiM1pUZEdGeWRFWnZkVzVrUDNSb2FYTXVibVY0ZEZCaGNuTmxVRzl6YVhScGIyNDlkR2hwY3k1emRISmxZVzB1Wm1sdVpFVnVaRU52Ym5ScFozVnZkWE5DZFdZb0tUcDBhR2x6TG01bGVIUlFZWEp6WlZCdmMybDBhVzl1UFhRdWMzUmhjblFyZEM1emFYcGxMQ0V4S1NrNktHVXVkSGx3WlQwOVBTSnRiMjkySWlZbUtIUm9hWE11Ylc5dmRsTjBZWEowUm05MWJtUTlJVEFzZEdocGN5NXRaR0YwY3k1c1pXNW5kR2c5UFQwd0ppWW9kR2hwY3k1cGMxQnliMmR5WlhOemFYWmxQU0V3S1Nrc2FUMTBhR2x6TG5OMGNtVmhiUzV0WlhKblpVNWxlSFJDZFdabVpYSS9kR2hwY3k1emRISmxZVzB1YldWeVoyVk9aWGgwUW5WbVptVnlLQ2s2SVRFc2FUOG9kR2hwY3k1dVpYaDBVR0Z5YzJWUWIzTnBkR2x2YmoxMGFHbHpMbk4wY21WaGJTNW5aWFJGYm1SUWIzTnBkR2x2YmlncExDRXdLVG9vWlM1MGVYQmxQM1JvYVhNdWJXOXZkbE4wWVhKMFJtOTFibVEvZEdocGN5NXVaWGgwVUdGeWMyVlFiM05wZEdsdmJqMTBhR2x6TG5OMGNtVmhiUzVuWlhSRmJtUlFiM05wZEdsdmJpZ3BPblJvYVhNdWJtVjRkRkJoY25ObFVHOXphWFJwYjI0OWRHaHBjeTV6ZEhKbFlXMHVaMlYwVUc5emFYUnBiMjRvS1N0bExuTnBlbVU2ZEdocGN5NXVaWGgwVUdGeWMyVlFiM05wZEdsdmJqMTBhR2x6TG5OMGNtVmhiUzVuWlhSRmJtUlFiM05wZEdsdmJpZ3BMQ0V4S1NsOUxHTXVjSEp2ZEc5MGVYQmxMbWhoYzBsdVkyOXRjR3hsZEdWTlpHRjBQV1oxYm1OMGFXOXVLQ2w3Y21WMGRYSnVJSFJvYVhNdWNHRnljMmx1WjAxa1lYUWhQVDF1ZFd4c2ZTeGpMbkJ5YjNSdmRIbHdaUzV3Y205alpYTnpTVzVqYjIxd2JHVjBaVTFrWVhROVpuVnVZM1JwYjI0b0tYdDJZWElnWlN4ME8zSmxkSFZ5YmlCbFBYUm9hWE11Y0dGeWMybHVaMDFrWVhRc2REMTBhR2x6TG5OMGNtVmhiUzV6WldWcktHVXVjM1JoY25RclpTNXphWHBsTENFeExIUm9hWE11WkdselkyRnlaRTFrWVhSRVlYUmhLU3gwUHloeUxtUmxZblZuS0NKSlUwOUdhV3hsSWl3aVJtOTFibVFnSjIxa1lYUW5JR1Z1WkNCcGJpQmlkV1ptWlhKbFpDQmtZWFJoSWlrc2RHaHBjeTV3WVhKemFXNW5UV1JoZEQxdWRXeHNMQ0V3S1Rvb2RHaHBjeTV1WlhoMFVHRnljMlZRYjNOcGRHbHZiajEwYUdsekxuTjBjbVZoYlM1bWFXNWtSVzVrUTI5dWRHbG5kVzkxYzBKMVppZ3BMQ0V4S1gwc1l5NXdjbTkwYjNSNWNHVXVjbVZ6ZEc5eVpWQmhjbk5sVUc5emFYUnBiMjQ5Wm5WdVkzUnBiMjRvS1h0eVpYUjFjbTRnZEdocGN5NXpkSEpsWVcwdWMyVmxheWgwYUdsekxteGhjM1JDYjNoVGRHRnlkRkJ2YzJsMGFXOXVMQ0V3TEhSb2FYTXVaR2x6WTJGeVpFMWtZWFJFWVhSaEtYMHNZeTV3Y205MGIzUjVjR1V1YzJGMlpWQmhjbk5sVUc5emFYUnBiMjQ5Wm5WdVkzUnBiMjRvS1h0MGFHbHpMbXhoYzNSQ2IzaFRkR0Z5ZEZCdmMybDBhVzl1UFhSb2FYTXVjM1J5WldGdExtZGxkRkJ2YzJsMGFXOXVLQ2w5TEdNdWNISnZkRzkwZVhCbExuVndaR0YwWlZWelpXUkNlWFJsY3oxbWRXNWpkR2x2YmlobExIUXBlM1JvYVhNdWMzUnlaV0Z0TG1Ga1pGVnpaV1JDZVhSbGN5WW1LR1V1ZEhsd1pUMDlQU0p0WkdGMElqOG9kR2hwY3k1emRISmxZVzB1WVdSa1ZYTmxaRUo1ZEdWektHVXVhR1J5WDNOcGVtVXBMSFJvYVhNdVpHbHpZMkZ5WkUxa1lYUkVZWFJoSmlaMGFHbHpMbk4wY21WaGJTNWhaR1JWYzJWa1FubDBaWE1vWlM1emFYcGxMV1V1YUdSeVgzTnBlbVVwS1RwMGFHbHpMbk4wY21WaGJTNWhaR1JWYzJWa1FubDBaWE1vWlM1emFYcGxLU2w5TEdNdWNISnZkRzkwZVhCbExtRmtaRDF2TGtKdmVDNXdjbTkwYjNSNWNHVXVZV1JrTEdNdWNISnZkRzkwZVhCbExtRmtaRUp2ZUQxdkxrSnZlQzV3Y205MGIzUjVjR1V1WVdSa1FtOTRMR011Y0hKdmRHOTBlWEJsTG1sdWFYUTlablZ1WTNScGIyNG9aU2w3ZG1GeUlIUTlaWHg4ZTMwN2RHaHBjeTVoWkdRb0ltWjBlWEFpS1M1elpYUW9JbTFoYW05eVgySnlZVzVrSWl4MExtSnlZVzVrY3lZbWRDNWljbUZ1WkhOYk1GMThmQ0pwYzI4MElpa3VjMlYwS0NKdGFXNXZjbDkyWlhKemFXOXVJaXd3S1M1elpYUW9JbU52YlhCaGRHbGliR1ZmWW5KaGJtUnpJaXgwTG1KeVlXNWtjM3g4V3lKcGMyODBJbDBwTzNaaGNpQnBQWFJvYVhNdVlXUmtLQ0p0YjI5MklpazdjbVYwZFhKdUlHa3VZV1JrS0NKdGRtaGtJaWt1YzJWMEtDSjBhVzFsYzJOaGJHVWlMSFF1ZEdsdFpYTmpZV3hsZkh3Mk1EQXBMbk5sZENnaWNtRjBaU0lzZEM1eVlYUmxmSHcyTlRVek5pa3VjMlYwS0NKamNtVmhkR2x2Ymw5MGFXMWxJaXd3S1M1elpYUW9JbTF2WkdsbWFXTmhkR2x2Ymw5MGFXMWxJaXd3S1M1elpYUW9JbVIxY21GMGFXOXVJaXgwTG1SMWNtRjBhVzl1Zkh3d0tTNXpaWFFvSW5admJIVnRaU0lzZEM1M2FXUjBhRDh3T2pJMU5pa3VjMlYwS0NKdFlYUnlhWGdpTEZzMk5UVXpOaXd3TERBc01DdzJOVFV6Tml3d0xEQXNNQ3d4TURjek56UXhPREkwWFNrdWMyVjBLQ0p1WlhoMFgzUnlZV05yWDJsa0lpd3hLU3hwTG1Ga1pDZ2liWFpsZUNJcExIUm9hWE45TEdNdWNISnZkRzkwZVhCbExtRmtaRlJ5WVdOclBXWjFibU4wYVc5dUtHVXBlM1JvYVhNdWJXOXZkbng4ZEdocGN5NXBibWwwS0dVcE8zWmhjaUIwUFdWOGZIdDlPM1F1ZDJsa2RHZzlkQzUzYVdSMGFIeDhNekl3TEhRdWFHVnBaMmgwUFhRdWFHVnBaMmgwZkh3ek1qQXNkQzVwWkQxMExtbGtmSHgwYUdsekxtMXZiM1l1Ylhab1pDNXVaWGgwWDNSeVlXTnJYMmxrTEhRdWRIbHdaVDEwTG5SNWNHVjhmQ0poZG1NeElqdDJZWElnYVQxMGFHbHpMbTF2YjNZdVlXUmtLQ0owY21GcklpazdkR2hwY3k1dGIyOTJMbTEyYUdRdWJtVjRkRjkwY21GamExOXBaRDEwTG1sa0t6RXNhUzVoWkdRb0luUnJhR1FpS1M1elpYUW9JbVpzWVdkeklpeHZMbFJMU0VSZlJreEJSMTlGVGtGQ1RFVkVmRzh1VkV0SVJGOUdURUZIWDBsT1gwMVBWa2xGZkc4dVZFdElSRjlHVEVGSFgwbE9YMUJTUlZaSlJWY3BMbk5sZENnaVkzSmxZWFJwYjI1ZmRHbHRaU0lzTUNrdWMyVjBLQ0p0YjJScFptbGpZWFJwYjI1ZmRHbHRaU0lzTUNrdWMyVjBLQ0owY21GamExOXBaQ0lzZEM1cFpDa3VjMlYwS0NKa2RYSmhkR2x2YmlJc2RDNWtkWEpoZEdsdmJueDhNQ2t1YzJWMEtDSnNZWGxsY2lJc2RDNXNZWGxsY254OE1Da3VjMlYwS0NKaGJIUmxjbTVoZEdWZlozSnZkWEFpTERBcExuTmxkQ2dpZG05c2RXMWxJaXd4S1M1elpYUW9JbTFoZEhKcGVDSXNXekFzTUN3d0xEQXNNQ3d3TERBc01Dd3dYU2t1YzJWMEtDSjNhV1IwYUNJc2RDNTNhV1IwYUR3OE1UWXBMbk5sZENnaWFHVnBaMmgwSWl4MExtaGxhV2RvZER3OE1UWXBPM1poY2lCbVBXa3VZV1JrS0NKdFpHbGhJaWs3Wmk1aFpHUW9JbTFrYUdRaUtTNXpaWFFvSW1OeVpXRjBhVzl1WDNScGJXVWlMREFwTG5ObGRDZ2liVzlrYVdacFkyRjBhVzl1WDNScGJXVWlMREFwTG5ObGRDZ2lkR2x0WlhOallXeGxJaXgwTG5ScGJXVnpZMkZzWlh4OE1Ta3VjMlYwS0NKa2RYSmhkR2x2YmlJc2RDNXRaV1JwWVY5a2RYSmhkR2x2Ym54OE1Da3VjMlYwS0NKc1lXNW5kV0ZuWlNJc2RDNXNZVzVuZFdGblpYeDhJblZ1WkNJcExHWXVZV1JrS0NKb1pHeHlJaWt1YzJWMEtDSm9ZVzVrYkdWeUlpeDBMbWhrYkhKOGZDSjJhV1JsSWlrdWMyVjBLQ0p1WVcxbElpeDBMbTVoYldWOGZDSlVjbUZqYXlCamNtVmhkR1ZrSUhkcGRHZ2dUVkEwUW05NExtcHpJaWtzWmk1aFpHUW9JbVZzYm1jaUtTNXpaWFFvSW1WNGRHVnVaR1ZrWDJ4aGJtZDFZV2RsSWl4MExteGhibWQxWVdkbGZId2labkl0UmxJaUtUdDJZWElnZFQxbUxtRmtaQ2dpYldsdVppSXBPMmxtS0c5YmRDNTBlWEJsS3lKVFlXMXdiR1ZGYm5SeWVTSmRJVDA5ZG05cFpDQXdLWHQyWVhJZ2RqMXVaWGNnYjF0MExuUjVjR1VySWxOaGJYQnNaVVZ1ZEhKNUlsMDdkaTVrWVhSaFgzSmxabVZ5Wlc1alpWOXBibVJsZUQweE8zWmhjaUI1UFNJaU8yWnZjaWgyWVhJZ2JTQnBiaUJ2TG5OaGJYQnNaVVZ1ZEhKNVEyOWtaWE1wWm05eUtIWmhjaUJpUFc4dWMyRnRjR3hsUlc1MGNubERiMlJsYzF0dFhTeDRQVEE3ZUR4aUxteGxibWQwYUR0NEt5c3BhV1lvWWk1cGJtUmxlRTltS0hRdWRIbHdaU2srTFRFcGUzazliVHRpY21WaGEzMXpkMmwwWTJnb2VTbDdZMkZ6WlNKV2FYTjFZV3dpT21sbUtIVXVZV1JrS0NKMmJXaGtJaWt1YzJWMEtDSm5jbUZ3YUdsamMyMXZaR1VpTERBcExuTmxkQ2dpYjNCamIyeHZjaUlzV3pBc01Dd3dYU2tzZGk1elpYUW9JbmRwWkhSb0lpeDBMbmRwWkhSb0tTNXpaWFFvSW1obGFXZG9kQ0lzZEM1b1pXbG5hSFFwTG5ObGRDZ2lhRzl5YVhweVpYTnZiSFYwYVc5dUlpdzNNanc4TVRZcExuTmxkQ2dpZG1WeWRISmxjMjlzZFhScGIyNGlMRGN5UER3eE5pa3VjMlYwS0NKbWNtRnRaVjlqYjNWdWRDSXNNU2t1YzJWMEtDSmpiMjF3Y21WemMyOXlibUZ0WlNJc2RDNTBlWEJsS3lJZ1EyOXRjSEpsYzNOdmNpSXBMbk5sZENnaVpHVndkR2dpTERJMEtTeDBMbUYyWTBSbFkyOWtaWEpEYjI1bWFXZFNaV052Y21RcGUzWmhjaUJUUFc1bGR5QnZMbUYyWTBOQ2IzZ3NWVDF1WlhjZ1lTaDBMbUYyWTBSbFkyOWtaWEpEYjI1bWFXZFNaV052Y21RcE8xTXVjR0Z5YzJVb1ZTa3NkaTVoWkdSQ2IzZ29VeWw5WW5KbFlXczdZMkZ6WlNKQmRXUnBieUk2ZFM1aFpHUW9Jbk50YUdRaUtTNXpaWFFvSW1KaGJHRnVZMlVpTEhRdVltRnNZVzVqWlh4OE1Da3NkaTV6WlhRb0ltTm9ZVzV1Wld4ZlkyOTFiblFpTEhRdVkyaGhibTVsYkY5amIzVnVkSHg4TWlrdWMyVjBLQ0p6WVcxd2JHVnphWHBsSWl4MExuTmhiWEJzWlhOcGVtVjhmREUyS1M1elpYUW9Jbk5oYlhCc1pYSmhkR1VpTEhRdWMyRnRjR3hsY21GMFpYeDhOalUxTXpZcE8ySnlaV0ZyTzJOaGMyVWlTR2x1ZENJNmRTNWhaR1FvSW1odGFHUWlLVHRpY21WaGF6dGpZWE5sSWxOMVluUnBkR3hsSWpwemQybDBZMmdvZFM1aFpHUW9Jbk4wYUdRaUtTeDBMblI1Y0dVcGUyTmhjMlVpYzNSd2NDSTZkaTV6WlhRb0ltNWhiV1Z6Y0dGalpTSXNkQzV1WVcxbGMzQmhZMlY4ZkNKdWIyNWhiV1Z6Y0dGalpTSXBMbk5sZENnaWMyTm9aVzFoWDJ4dlkyRjBhVzl1SWl4MExuTmphR1Z0WVY5c2IyTmhkR2x2Ym54OElpSXBMbk5sZENnaVlYVjRhV3hwWVhKNVgyMXBiV1ZmZEhsd1pYTWlMSFF1WVhWNGFXeHBZWEo1WDIxcGJXVmZkSGx3WlhOOGZDSWlLVHRpY21WaGEzMWljbVZoYXp0allYTmxJazFsZEdGa1lYUmhJanAxTG1Ga1pDZ2libTFvWkNJcE8ySnlaV0ZyTzJOaGMyVWlVM2x6ZEdWdElqcDFMbUZrWkNnaWJtMW9aQ0lwTzJKeVpXRnJPMlJsWm1GMWJIUTZkUzVoWkdRb0ltNXRhR1FpS1R0aWNtVmhhMzEwTG1SbGMyTnlhWEIwYVc5dUppWjJMbUZrWkVKdmVDaDBMbVJsYzJOeWFYQjBhVzl1S1N4MExtUmxjMk55YVhCMGFXOXVYMkp2ZUdWekppWjBMbVJsYzJOeWFYQjBhVzl1WDJKdmVHVnpMbVp2Y2tWaFkyZ29ablZ1WTNScGIyNG9keWw3ZGk1aFpHUkNiM2dvZHlsOUtTeDFMbUZrWkNnaVpHbHVaaUlwTG1Ga1pDZ2laSEpsWmlJcExtRmtaRVZ1ZEhKNUtHNWxkeUJ2V3lKMWNtd2dRbTk0SWwwb0tTNXpaWFFvSW1ac1lXZHpJaXd4S1NrN2RtRnlJRVU5ZFM1aFpHUW9Jbk4wWW13aUtUdHlaWFIxY200Z1JTNWhaR1FvSW5OMGMyUWlLUzVoWkdSRmJuUnllU2gyS1N4RkxtRmtaQ2dpYzNSMGN5SXBMbk5sZENnaWMyRnRjR3hsWDJOdmRXNTBjeUlzVzEwcExuTmxkQ2dpYzJGdGNHeGxYMlJsYkhSaGN5SXNXMTBwTEVVdVlXUmtLQ0p6ZEhOaklpa3VjMlYwS0NKbWFYSnpkRjlqYUhWdWF5SXNXMTBwTG5ObGRDZ2ljMkZ0Y0d4bGMxOXdaWEpmWTJoMWJtc2lMRnRkS1M1elpYUW9Jbk5oYlhCc1pWOWtaWE5qY21sd2RHbHZibDlwYm1SbGVDSXNXMTBwTEVVdVlXUmtLQ0p6ZEdOdklpa3VjMlYwS0NKamFIVnVhMTl2Wm1aelpYUnpJaXhiWFNrc1JTNWhaR1FvSW5OMGMzb2lLUzV6WlhRb0luTmhiWEJzWlY5emFYcGxjeUlzVzEwcExIUm9hWE11Ylc5dmRpNXRkbVY0TG1Ga1pDZ2lkSEpsZUNJcExuTmxkQ2dpZEhKaFkydGZhV1FpTEhRdWFXUXBMbk5sZENnaVpHVm1ZWFZzZEY5ellXMXdiR1ZmWkdWelkzSnBjSFJwYjI1ZmFXNWtaWGdpTEhRdVpHVm1ZWFZzZEY5ellXMXdiR1ZmWkdWelkzSnBjSFJwYjI1ZmFXNWtaWGg4ZkRFcExuTmxkQ2dpWkdWbVlYVnNkRjl6WVcxd2JHVmZaSFZ5WVhScGIyNGlMSFF1WkdWbVlYVnNkRjl6WVcxd2JHVmZaSFZ5WVhScGIyNThmREFwTG5ObGRDZ2laR1ZtWVhWc2RGOXpZVzF3YkdWZmMybDZaU0lzZEM1a1pXWmhkV3gwWDNOaGJYQnNaVjl6YVhwbGZId3dLUzV6WlhRb0ltUmxabUYxYkhSZmMyRnRjR3hsWDJac1lXZHpJaXgwTG1SbFptRjFiSFJmYzJGdGNHeGxYMlpzWVdkemZId3dLU3gwYUdsekxtSjFhV3hrVkhKaGExTmhiWEJzWlV4cGMzUnpLR2twTEhRdWFXUjlmU3h2TGtKdmVDNXdjbTkwYjNSNWNHVXVZMjl0Y0hWMFpWTnBlbVU5Wm5WdVkzUnBiMjRvWlNsN2RtRnlJSFE5Wlh4OGJtVjNJSE03ZEM1bGJtUnBZVzV1WlhOelBYTXVRa2xIWDBWT1JFbEJUaXgwYUdsekxuZHlhWFJsS0hRcGZTeGpMbkJ5YjNSdmRIbHdaUzVoWkdSVFlXMXdiR1U5Wm5WdVkzUnBiMjRvWlN4MExHa3BlM1poY2lCbVBXbDhmSHQ5TEhVOWUzMHNkajEwYUdsekxtZGxkRlJ5WVdOclFubEpaQ2hsS1R0cFppaDJJVDA5Ym5Wc2JDbDdkUzV1ZFcxaVpYSTlkaTV6WVcxd2JHVnpMbXhsYm1kMGFDeDFMblJ5WVdOclgybGtQWFl1ZEd0b1pDNTBjbUZqYTE5cFpDeDFMblJwYldWelkyRnNaVDEyTG0xa2FXRXViV1JvWkM1MGFXMWxjMk5oYkdVc2RTNWtaWE5qY21sd2RHbHZibDlwYm1SbGVEMW1Mbk5oYlhCc1pWOWtaWE5qY21sd2RHbHZibDlwYm1SbGVEOW1Mbk5oYlhCc1pWOWtaWE5qY21sd2RHbHZibDlwYm1SbGVDMHhPakFzZFM1a1pYTmpjbWx3ZEdsdmJqMTJMbTFrYVdFdWJXbHVaaTV6ZEdKc0xuTjBjMlF1Wlc1MGNtbGxjMXQxTG1SbGMyTnlhWEIwYVc5dVgybHVaR1Y0WFN4MUxtUmhkR0U5ZEN4MUxuTnBlbVU5ZEM1aWVYUmxUR1Z1WjNSb0xIVXVZV3h5WldGa2VWSmxZV1E5ZFM1emFYcGxMSFV1WkhWeVlYUnBiMjQ5Wmk1a2RYSmhkR2x2Ym54OE1TeDFMbU4wY3oxbUxtTjBjM3g4TUN4MUxtUjBjejFtTG1SMGMzeDhNQ3gxTG1selgzTjVibU05Wmk1cGMxOXplVzVqZkh3aE1TeDFMbWx6WDJ4bFlXUnBibWM5Wmk1cGMxOXNaV0ZrYVc1bmZId3dMSFV1WkdWd1pXNWtjMTl2YmoxbUxtUmxjR1Z1WkhOZmIyNThmREFzZFM1cGMxOWtaWEJsYm1SbFpGOXZiajFtTG1selgyUmxjR1Z1WkdWa1gyOXVmSHd3TEhVdWFHRnpYM0psWkhWdVpHRnVZM2s5Wmk1b1lYTmZjbVZrZFc1a1lXNWplWHg4TUN4MUxtUmxaM0poWkdGMGFXOXVYM0J5YVc5eWFYUjVQV1l1WkdWbmNtRmtZWFJwYjI1ZmNISnBiM0pwZEhsOGZEQXNkUzV2Wm1aelpYUTlNQ3gxTG5OMVluTmhiWEJzWlhNOVppNXpkV0p6WVcxd2JHVnpMSFl1YzJGdGNHeGxjeTV3ZFhOb0tIVXBMSFl1YzJGdGNHeGxjMTl6YVhwbEt6MTFMbk5wZW1Vc2RpNXpZVzF3YkdWelgyUjFjbUYwYVc5dUt6MTFMbVIxY21GMGFXOXVMSFl1Wm1seWMzUmZaSFJ6Zkh3b2RpNW1hWEp6ZEY5a2RITTlaaTVrZEhNcExIUm9hWE11Y0hKdlkyVnpjMU5oYlhCc1pYTW9LVHQyWVhJZ2VUMTBhR2x6TG1OeVpXRjBaVk5wYm1kc1pWTmhiWEJzWlUxdmIyWW9kU2s3Y21WMGRYSnVJSFJvYVhNdVlXUmtRbTk0S0hrcExIa3VZMjl0Y0hWMFpWTnBlbVVvS1N4NUxuUnlZV1p6V3pCZExuUnlkVzV6V3pCZExtUmhkR0ZmYjJabWMyVjBQWGt1YzJsNlpTczRMSFJvYVhNdVlXUmtLQ0p0WkdGMElpa3VaR0YwWVQxdVpYY2dWV2x1ZERoQmNuSmhlU2gwS1N4MWZYMHNZeTV3Y205MGIzUjVjR1V1WTNKbFlYUmxVMmx1WjJ4bFUyRnRjR3hsVFc5dlpqMW1kVzVqZEdsdmJpaGxLWHQyWVhJZ2REMHdPMlV1YVhOZmMzbHVZejkwUFRFOFBESTFPblE5TmpVMU16WTdkbUZ5SUdrOWJtVjNJRzh1Ylc5dlprSnZlRHRwTG1Ga1pDZ2liV1pvWkNJcExuTmxkQ2dpYzJWeGRXVnVZMlZmYm5WdFltVnlJaXgwYUdsekxtNWxlSFJOYjI5bVRuVnRZbVZ5S1N4MGFHbHpMbTVsZUhSTmIyOW1UblZ0WW1WeUt5czdkbUZ5SUdZOWFTNWhaR1FvSW5SeVlXWWlLU3gxUFhSb2FYTXVaMlYwVkhKaFkydENlVWxrS0dVdWRISmhZMnRmYVdRcE8zSmxkSFZ5YmlCbUxtRmtaQ2dpZEdab1pDSXBMbk5sZENnaWRISmhZMnRmYVdRaUxHVXVkSEpoWTJ0ZmFXUXBMbk5sZENnaVpteGhaM01pTEc4dVZFWklSRjlHVEVGSFgwUkZSa0ZWVEZSZlFrRlRSVjlKVTE5TlQwOUdLU3htTG1Ga1pDZ2lkR1prZENJcExuTmxkQ2dpWW1GelpVMWxaR2xoUkdWamIyUmxWR2x0WlNJc1pTNWtkSE10S0hVdVptbHljM1JmWkhSemZId3dLU2tzWmk1aFpHUW9JblJ5ZFc0aUtTNXpaWFFvSW1ac1lXZHpJaXh2TGxSU1ZVNWZSa3hCUjFOZlJFRlVRVjlQUmtaVFJWUjhieTVVVWxWT1gwWk1RVWRUWDBSVlVrRlVTVTlPZkc4dVZGSlZUbDlHVEVGSFUxOVRTVnBGZkc4dVZGSlZUbDlHVEVGSFUxOUdURUZIVTN4dkxsUlNWVTVmUmt4QlIxTmZRMVJUWDA5R1JsTkZWQ2t1YzJWMEtDSmtZWFJoWDI5bVpuTmxkQ0lzTUNrdWMyVjBLQ0ptYVhKemRGOXpZVzF3YkdWZlpteGhaM01pTERBcExuTmxkQ2dpYzJGdGNHeGxYMk52ZFc1MElpd3hLUzV6WlhRb0luTmhiWEJzWlY5a2RYSmhkR2x2YmlJc1cyVXVaSFZ5WVhScGIyNWRLUzV6WlhRb0luTmhiWEJzWlY5emFYcGxJaXhiWlM1emFYcGxYU2t1YzJWMEtDSnpZVzF3YkdWZlpteGhaM01pTEZ0MFhTa3VjMlYwS0NKellXMXdiR1ZmWTI5dGNHOXphWFJwYjI1ZmRHbHRaVjl2Wm1aelpYUWlMRnRsTG1OMGN5MWxMbVIwYzEwcExHbDlMR011Y0hKdmRHOTBlWEJsTG14aGMzUk5iMjltU1c1a1pYZzlNQ3hqTG5CeWIzUnZkSGx3WlM1ellXMXdiR1Z6UkdGMFlWTnBlbVU5TUN4akxuQnliM1J2ZEhsd1pTNXlaWE5sZEZSaFlteGxjejFtZFc1amRHbHZiaWdwZTNaaGNpQmxMSFFzYVN4bUxIVXNkaXg1TEcwN1ptOXlLSFJvYVhNdWFXNXBkR2xoYkY5a2RYSmhkR2x2YmoxMGFHbHpMbTF2YjNZdWJYWm9aQzVrZFhKaGRHbHZiaXgwYUdsekxtMXZiM1l1Ylhab1pDNWtkWEpoZEdsdmJqMHdMR1U5TUR0bFBIUm9hWE11Ylc5dmRpNTBjbUZyY3k1c1pXNW5kR2c3WlNzcktYdDBQWFJvYVhNdWJXOXZkaTUwY21GcmMxdGxYU3gwTG5ScmFHUXVaSFZ5WVhScGIyNDlNQ3gwTG0xa2FXRXViV1JvWkM1a2RYSmhkR2x2Ymowd0xHazlkQzV0WkdsaExtMXBibVl1YzNSaWJDNXpkR052Zkh4MExtMWthV0V1YldsdVppNXpkR0pzTG1Odk5qUXNhUzVqYUhWdWExOXZabVp6WlhSelBWdGRMR1k5ZEM1dFpHbGhMbTFwYm1ZdWMzUmliQzV6ZEhOakxHWXVabWx5YzNSZlkyaDFibXM5VzEwc1ppNXpZVzF3YkdWelgzQmxjbDlqYUhWdWF6MWJYU3htTG5OaGJYQnNaVjlrWlhOamNtbHdkR2x2Ymw5cGJtUmxlRDFiWFN4MVBYUXViV1JwWVM1dGFXNW1Mbk4wWW13dWMzUnplbng4ZEM1dFpHbGhMbTFwYm1ZdWMzUmliQzV6ZEhveUxIVXVjMkZ0Y0d4bFgzTnBlbVZ6UFZ0ZExIWTlkQzV0WkdsaExtMXBibVl1YzNSaWJDNXpkSFJ6TEhZdWMyRnRjR3hsWDJOdmRXNTBjejFiWFN4MkxuTmhiWEJzWlY5a1pXeDBZWE05VzEwc2VUMTBMbTFrYVdFdWJXbHVaaTV6ZEdKc0xtTjBkSE1zZVNZbUtIa3VjMkZ0Y0d4bFgyTnZkVzUwY3oxYlhTeDVMbk5oYlhCc1pWOXZabVp6WlhSelBWdGRLU3h0UFhRdWJXUnBZUzV0YVc1bUxuTjBZbXd1YzNSemN6dDJZWElnWWoxMExtMWthV0V1YldsdVppNXpkR0pzTG1KdmVHVnpMbWx1WkdWNFQyWW9iU2s3WWlFOUxURW1KaWgwTG0xa2FXRXViV2x1Wmk1emRHSnNMbUp2ZUdWelcySmRQVzUxYkd3cGZYMHNZeTVwYm1sMFUyRnRjR3hsUjNKdmRYQnpQV1oxYm1OMGFXOXVLR1VzZEN4cExHWXNkU2w3ZG1GeUlIWXNlU3h0TEdJN1puVnVZM1JwYjI0Z2VDaFRMRlVzUlNsN2RHaHBjeTVuY205MWNHbHVaMTkwZVhCbFBWTXNkR2hwY3k1bmNtOTFjR2x1WjE5MGVYQmxYM0JoY21GdFpYUmxjajFWTEhSb2FYTXVjMkpuY0QxRkxIUm9hWE11YkdGemRGOXpZVzF3YkdWZmFXNWZjblZ1UFMweExIUm9hWE11Wlc1MGNubGZhVzVrWlhnOUxURjlabTl5S0hRbUppaDBMbk5oYlhCc1pWOW5jbTkxY0hOZmFXNW1iejFiWFNrc1pTNXpZVzF3YkdWZlozSnZkWEJ6WDJsdVptOThmQ2hsTG5OaGJYQnNaVjluY205MWNITmZhVzVtYnoxYlhTa3NlVDB3TzNrOGFTNXNaVzVuZEdnN2VTc3JLWHRtYjNJb1lqMXBXM2xkTG1keWIzVndhVzVuWDNSNWNHVXJJaThpSzJsYmVWMHVaM0p2ZFhCcGJtZGZkSGx3WlY5d1lYSmhiV1YwWlhJc2JUMXVaWGNnZUNocFczbGRMbWR5YjNWd2FXNW5YM1I1Y0dVc2FWdDVYUzVuY205MWNHbHVaMTkwZVhCbFgzQmhjbUZ0WlhSbGNpeHBXM2xkS1N4MEppWW9kQzV6WVcxd2JHVmZaM0p2ZFhCelgybHVabTliWWwwOWJTa3NaUzV6WVcxd2JHVmZaM0p2ZFhCelgybHVabTliWWwxOGZDaGxMbk5oYlhCc1pWOW5jbTkxY0hOZmFXNW1iMXRpWFQxdEtTeDJQVEE3ZGp4bUxteGxibWQwYUR0Mkt5c3BabHQyWFM1bmNtOTFjR2x1WjE5MGVYQmxQVDA5YVZ0NVhTNW5jbTkxY0dsdVoxOTBlWEJsSmlZb2JTNWtaWE5qY21sd2RHbHZiajFtVzNaZExHMHVaR1Z6WTNKcGNIUnBiMjR1ZFhObFpEMGhNQ2s3YVdZb2RTbG1iM0lvZGowd08zWThkUzVzWlc1bmRHZzdkaXNyS1hWYmRsMHVaM0p2ZFhCcGJtZGZkSGx3WlQwOVBXbGJlVjB1WjNKdmRYQnBibWRmZEhsd1pTWW1LRzB1Wm5KaFoyMWxiblJmWkdWelkzSnBjSFJwYjI0OWRWdDJYU3h0TG1aeVlXZHRaVzUwWDJSbGMyTnlhWEIwYVc5dUxuVnpaV1E5SVRBc2JTNXBjMTltY21GbmJXVnVkRDBoTUNsOWFXWW9kQ2w3YVdZb2RTbG1iM0lvZVQwd08zazhkUzVzWlc1bmRHZzdlU3NyS1NGMVczbGRMblZ6WldRbUpuVmJlVjB1ZG1WeWMybHZiajQ5TWlZbUtHSTlkVnQ1WFM1bmNtOTFjR2x1WjE5MGVYQmxLeUl2TUNJc2JUMXVaWGNnZUNoMVczbGRMbWR5YjNWd2FXNW5YM1I1Y0dVc01Da3NiUzVwYzE5bWNtRm5iV1Z1ZEQwaE1DeDBMbk5oYlhCc1pWOW5jbTkxY0hOZmFXNW1iMXRpWFh4OEtIUXVjMkZ0Y0d4bFgyZHliM1Z3YzE5cGJtWnZXMkpkUFcwcEtYMWxiSE5sSUdadmNpaDVQVEE3ZVR4bUxteGxibWQwYUR0NUt5c3BJV1piZVYwdWRYTmxaQ1ltWmx0NVhTNTJaWEp6YVc5dVBqMHlKaVlvWWoxbVczbGRMbWR5YjNWd2FXNW5YM1I1Y0dVcklpOHdJaXh0UFc1bGR5QjRLR1piZVYwdVozSnZkWEJwYm1kZmRIbHdaU3d3S1N4bExuTmhiWEJzWlY5bmNtOTFjSE5mYVc1bWIxdGlYWHg4S0dVdWMyRnRjR3hsWDJkeWIzVndjMTlwYm1adlcySmRQVzBwS1gwc1l5NXpaWFJUWVcxd2JHVkhjbTkxY0ZCeWIzQmxjblJwWlhNOVpuVnVZM1JwYjI0b1pTeDBMR2tzWmlsN2RtRnlJSFVzZGp0MExuTmhiWEJzWlY5bmNtOTFjSE05VzEwN1ptOXlLSFVnYVc0Z1ppbHBaaWgwTG5OaGJYQnNaVjluY205MWNITmJkVjA5ZTMwc2RDNXpZVzF3YkdWZlozSnZkWEJ6VzNWZExtZHliM1Z3YVc1blgzUjVjR1U5Wmx0MVhTNW5jbTkxY0dsdVoxOTBlWEJsTEhRdWMyRnRjR3hsWDJkeWIzVndjMXQxWFM1bmNtOTFjR2x1WjE5MGVYQmxYM0JoY21GdFpYUmxjajFtVzNWZExtZHliM1Z3YVc1blgzUjVjR1ZmY0dGeVlXMWxkR1Z5TEdrK1BXWmJkVjB1YkdGemRGOXpZVzF3YkdWZmFXNWZjblZ1SmlZb1psdDFYUzVzWVhOMFgzTmhiWEJzWlY5cGJsOXlkVzQ4TUNZbUtHWmJkVjB1YkdGemRGOXpZVzF3YkdWZmFXNWZjblZ1UFRBcExHWmJkVjB1Wlc1MGNubGZhVzVrWlhnckt5eG1XM1ZkTG1WdWRISjVYMmx1WkdWNFBEMW1XM1ZkTG5OaVozQXVaVzUwY21sbGN5NXNaVzVuZEdndE1TWW1LR1piZFYwdWJHRnpkRjl6WVcxd2JHVmZhVzVmY25WdUt6MW1XM1ZkTG5OaVozQXVaVzUwY21sbGMxdG1XM1ZkTG1WdWRISjVYMmx1WkdWNFhTNXpZVzF3YkdWZlkyOTFiblFwS1N4bVczVmRMbVZ1ZEhKNVgybHVaR1Y0UEQxbVczVmRMbk5pWjNBdVpXNTBjbWxsY3k1c1pXNW5kR2d0TVQ5MExuTmhiWEJzWlY5bmNtOTFjSE5iZFYwdVozSnZkWEJmWkdWelkzSnBjSFJwYjI1ZmFXNWtaWGc5Wmx0MVhTNXpZbWR3TG1WdWRISnBaWE5iWmx0MVhTNWxiblJ5ZVY5cGJtUmxlRjB1WjNKdmRYQmZaR1Z6WTNKcGNIUnBiMjVmYVc1a1pYZzZkQzV6WVcxd2JHVmZaM0p2ZFhCelczVmRMbWR5YjNWd1gyUmxjMk55YVhCMGFXOXVYMmx1WkdWNFBTMHhMSFF1YzJGdGNHeGxYMmR5YjNWd2MxdDFYUzVuY205MWNGOWtaWE5qY21sd2RHbHZibDlwYm1SbGVDRTlQVEFwZTNaaGNpQjVPMlpiZFYwdVpuSmhaMjFsYm5SZlpHVnpZM0pwY0hScGIyNC9lVDFtVzNWZExtWnlZV2R0Wlc1MFgyUmxjMk55YVhCMGFXOXVPbms5Wmx0MVhTNWtaWE5qY21sd2RHbHZiaXgwTG5OaGJYQnNaVjluY205MWNITmJkVjB1WjNKdmRYQmZaR1Z6WTNKcGNIUnBiMjVmYVc1a1pYZytNRDhvZEM1ellXMXdiR1ZmWjNKdmRYQnpXM1ZkTG1keWIzVndYMlJsYzJOeWFYQjBhVzl1WDJsdVpHVjRQalkxTlRNMVAzWTlLSFF1YzJGdGNHeGxYMmR5YjNWd2MxdDFYUzVuY205MWNGOWtaWE5qY21sd2RHbHZibDlwYm1SbGVENCtNVFlwTFRFNmRqMTBMbk5oYlhCc1pWOW5jbTkxY0hOYmRWMHVaM0p2ZFhCZlpHVnpZM0pwY0hScGIyNWZhVzVrWlhndE1TeDVKaVoyUGowd0ppWW9kQzV6WVcxd2JHVmZaM0p2ZFhCelczVmRMbVJsYzJOeWFYQjBhVzl1UFhrdVpXNTBjbWxsYzF0MlhTa3BPbmttSm5rdWRtVnljMmx2Ymo0OU1pWW1lUzVrWldaaGRXeDBYMmR5YjNWd1gyUmxjMk55YVhCMGFXOXVYMmx1WkdWNFBqQW1KaWgwTG5OaGJYQnNaVjluY205MWNITmJkVjB1WkdWelkzSnBjSFJwYjI0OWVTNWxiblJ5YVdWelcza3VaR1ZtWVhWc2RGOW5jbTkxY0Y5a1pYTmpjbWx3ZEdsdmJsOXBibVJsZUMweFhTbDlmU3hqTG5CeWIyTmxjM05mYzJSMGNEMW1kVzVqZEdsdmJpaGxMSFFzYVNsN2RDWW1LR1UvS0hRdWFYTmZiR1ZoWkdsdVp6MWxMbWx6WDJ4bFlXUnBibWRiYVYwc2RDNWtaWEJsYm1SelgyOXVQV1V1YzJGdGNHeGxYMlJsY0dWdVpITmZiMjViYVYwc2RDNXBjMTlrWlhCbGJtUmxaRjl2YmoxbExuTmhiWEJzWlY5cGMxOWtaWEJsYm1SbFpGOXZibHRwWFN4MExtaGhjMTl5WldSMWJtUmhibU41UFdVdWMyRnRjR3hsWDJoaGMxOXlaV1IxYm1SaGJtTjVXMmxkS1Rvb2RDNXBjMTlzWldGa2FXNW5QVEFzZEM1a1pYQmxibVJ6WDI5dVBUQXNkQzVwYzE5a1pYQmxibVJsWkY5dmJqMHdMSFF1YUdGelgzSmxaSFZ1WkdGdVkzazlNQ2twZlN4akxuQnliM1J2ZEhsd1pTNWlkV2xzWkZOaGJYQnNaVXhwYzNSelBXWjFibU4wYVc5dUtDbDdkbUZ5SUdVc2REdG1iM0lvWlQwd08yVThkR2hwY3k1dGIyOTJMblJ5WVd0ekxteGxibWQwYUR0bEt5c3BkRDEwYUdsekxtMXZiM1l1ZEhKaGEzTmJaVjBzZEdocGN5NWlkV2xzWkZSeVlXdFRZVzF3YkdWTWFYTjBjeWgwS1gwc1l5NXdjbTkwYjNSNWNHVXVZblZwYkdSVWNtRnJVMkZ0Y0d4bFRHbHpkSE05Wm5WdVkzUnBiMjRvWlNsN2RtRnlJSFFzYVN4bUxIVXNkaXg1TEcwc1lpeDRMRk1zVlN4RkxIY3NRU3hKTEVZc1VDeEVMR3NzVGl4TkxIRXNSeXhaTzJsbUtHVXVjMkZ0Y0d4bGN6MWJYU3hsTG5OaGJYQnNaWE5mWkhWeVlYUnBiMjQ5TUN4bExuTmhiWEJzWlhOZmMybDZaVDB3TEdrOVpTNXRaR2xoTG0xcGJtWXVjM1JpYkM1emRHTnZmSHhsTG0xa2FXRXViV2x1Wmk1emRHSnNMbU52TmpRc1pqMWxMbTFrYVdFdWJXbHVaaTV6ZEdKc0xuTjBjMk1zZFQxbExtMWthV0V1YldsdVppNXpkR0pzTG5OMGMzcDhmR1V1YldScFlTNXRhVzVtTG5OMFltd3VjM1I2TWl4MlBXVXViV1JwWVM1dGFXNW1Mbk4wWW13dWMzUjBjeXg1UFdVdWJXUnBZUzV0YVc1bUxuTjBZbXd1WTNSMGN5eHRQV1V1YldScFlTNXRhVzVtTG5OMFltd3VjM1J6Y3l4aVBXVXViV1JwWVM1dGFXNW1Mbk4wWW13dWMzUnpaQ3g0UFdVdWJXUnBZUzV0YVc1bUxuTjBZbXd1YzNWaWN5eEZQV1V1YldScFlTNXRhVzVtTG5OMFltd3VjM1JrY0N4VFBXVXViV1JwWVM1dGFXNW1Mbk4wWW13dWMySm5jSE1zVlQxbExtMWthV0V1YldsdVppNXpkR0pzTG5ObmNHUnpMRVE5TFRFc2F6MHRNU3hPUFMweExFMDlMVEVzY1Qwd0xFYzlNQ3haUFRBc1l5NXBibWwwVTJGdGNHeGxSM0p2ZFhCektHVXNiblZzYkN4VExGVXBMQ0VvZEhsd1pXOW1JSFUrSW5VaUtTbDdabTl5S0hROU1EdDBQSFV1YzJGdGNHeGxYM05wZW1WekxteGxibWQwYUR0MEt5c3BlM1poY2lCVVBYdDlPMVF1Ym5WdFltVnlQWFFzVkM1MGNtRmphMTlwWkQxbExuUnJhR1F1ZEhKaFkydGZhV1FzVkM1MGFXMWxjMk5oYkdVOVpTNXRaR2xoTG0xa2FHUXVkR2x0WlhOallXeGxMRlF1WVd4eVpXRmtlVkpsWVdROU1DeGxMbk5oYlhCc1pYTmJkRjA5VkN4VUxuTnBlbVU5ZFM1ellXMXdiR1ZmYzJsNlpYTmJkRjBzWlM1ellXMXdiR1Z6WDNOcGVtVXJQVlF1YzJsNlpTeDBQVDA5TUQ4b1FUMHhMSGM5TUN4VUxtTm9kVzVyWDJsdVpHVjRQVUVzVkM1amFIVnVhMTl5ZFc1ZmFXNWtaWGc5ZHl4UVBXWXVjMkZ0Y0d4bGMxOXdaWEpmWTJoMWJtdGJkMTBzUmowd0xIY3JNVHhtTG1acGNuTjBYMk5vZFc1ckxteGxibWQwYUQ5SlBXWXVabWx5YzNSZlkyaDFibXRiZHlzeFhTMHhPa2s5TVM4d0tUcDBQRkEvS0ZRdVkyaDFibXRmYVc1a1pYZzlRU3hVTG1Ob2RXNXJYM0oxYmw5cGJtUmxlRDEzS1Rvb1FTc3JMRlF1WTJoMWJtdGZhVzVrWlhnOVFTeEdQVEFzUVR3OVNYeDhLSGNyS3l4M0t6RThaaTVtYVhKemRGOWphSFZ1YXk1c1pXNW5kR2cvU1QxbUxtWnBjbk4wWDJOb2RXNXJXM2NyTVYwdE1UcEpQVEV2TUNrc1ZDNWphSFZ1YTE5eWRXNWZhVzVrWlhnOWR5eFFLejFtTG5OaGJYQnNaWE5mY0dWeVgyTm9kVzVyVzNkZEtTeFVMbVJsYzJOeWFYQjBhVzl1WDJsdVpHVjRQV1l1YzJGdGNHeGxYMlJsYzJOeWFYQjBhVzl1WDJsdVpHVjRXMVF1WTJoMWJtdGZjblZ1WDJsdVpHVjRYUzB4TEZRdVpHVnpZM0pwY0hScGIyNDlZaTVsYm5SeWFXVnpXMVF1WkdWelkzSnBjSFJwYjI1ZmFXNWtaWGhkTEZRdWIyWm1jMlYwUFdrdVkyaDFibXRmYjJabWMyVjBjMXRVTG1Ob2RXNXJYMmx1WkdWNExURmRLMFlzUmlzOVZDNXphWHBsTEhRK1JDWW1LR3NyS3l4RVBEQW1KaWhFUFRBcExFUXJQWFl1YzJGdGNHeGxYMk52ZFc1MGMxdHJYU2tzZEQ0d1B5aGxMbk5oYlhCc1pYTmJkQzB4WFM1a2RYSmhkR2x2YmoxMkxuTmhiWEJzWlY5a1pXeDBZWE5iYTEwc1pTNXpZVzF3YkdWelgyUjFjbUYwYVc5dUt6MWxMbk5oYlhCc1pYTmJkQzB4WFM1a2RYSmhkR2x2Yml4VUxtUjBjejFsTG5OaGJYQnNaWE5iZEMweFhTNWtkSE1yWlM1ellXMXdiR1Z6VzNRdE1WMHVaSFZ5WVhScGIyNHBPbFF1WkhSelBUQXNlVDhvZEQ0OVRpWW1LRTByS3l4T1BEQW1KaWhPUFRBcExFNHJQWGt1YzJGdGNHeGxYMk52ZFc1MGMxdE5YU2tzVkM1amRITTlaUzV6WVcxd2JHVnpXM1JkTG1SMGN5dDVMbk5oYlhCc1pWOXZabVp6WlhSelcwMWRLVHBVTG1OMGN6MVVMbVIwY3l4dFB5aDBQVDF0TG5OaGJYQnNaVjl1ZFcxaVpYSnpXM0ZkTFRFL0tGUXVhWE5mYzNsdVl6MGhNQ3h4S3lzcE9paFVMbWx6WDNONWJtTTlJVEVzVkM1a1pXZHlZV1JoZEdsdmJsOXdjbWx2Y21sMGVUMHdLU3g0SmlaNExtVnVkSEpwWlhOYlIxMHVjMkZ0Y0d4bFgyUmxiSFJoSzFrOVBYUXJNU1ltS0ZRdWMzVmljMkZ0Y0d4bGN6MTRMbVZ1ZEhKcFpYTmJSMTB1YzNWaWMyRnRjR3hsY3l4Wkt6MTRMbVZ1ZEhKcFpYTmJSMTB1YzJGdGNHeGxYMlJsYkhSaExFY3JLeWtwT2xRdWFYTmZjM2x1WXowaE1DeGpMbkJ5YjJObGMzTmZjMlIwY0NobExtMWthV0V1YldsdVppNXpkR0pzTG5Oa2RIQXNWQ3hVTG01MWJXSmxjaWtzUlQ5VUxtUmxaM0poWkdGMGFXOXVYM0J5YVc5eWFYUjVQVVV1Y0hKcGIzSnBkSGxiZEYwNlZDNWtaV2R5WVdSaGRHbHZibDl3Y21sdmNtbDBlVDB3TEhnbUpuZ3VaVzUwY21sbGMxdEhYUzV6WVcxd2JHVmZaR1ZzZEdFcldUMDlkQ1ltS0ZRdWMzVmljMkZ0Y0d4bGN6MTRMbVZ1ZEhKcFpYTmJSMTB1YzNWaWMyRnRjR3hsY3l4Wkt6MTRMbVZ1ZEhKcFpYTmJSMTB1YzJGdGNHeGxYMlJsYkhSaEtTd29VeTVzWlc1bmRHZytNSHg4VlM1c1pXNW5kR2crTUNrbUptTXVjMlYwVTJGdGNHeGxSM0p2ZFhCUWNtOXdaWEowYVdWektHVXNWQ3gwTEdVdWMyRnRjR3hsWDJkeWIzVndjMTlwYm1adktYMTBQakFtSmlobExuTmhiWEJzWlhOYmRDMHhYUzVrZFhKaGRHbHZiajFOWVhSb0xtMWhlQ2hsTG0xa2FXRXViV1JvWkM1a2RYSmhkR2x2YmkxbExuTmhiWEJzWlhOYmRDMHhYUzVrZEhNc01Da3NaUzV6WVcxd2JHVnpYMlIxY21GMGFXOXVLejFsTG5OaGJYQnNaWE5iZEMweFhTNWtkWEpoZEdsdmJpbDlmU3hqTG5CeWIzUnZkSGx3WlM1MWNHUmhkR1ZUWVcxd2JHVk1hWE4wY3oxbWRXNWpkR2x2YmlncGUzWmhjaUJsTEhRc2FTeG1MSFVzZGl4NUxHMHNZaXg0TEZNc1ZTeEZMSGNzUVR0cFppaDBhR2x6TG0xdmIzWWhQVDEyYjJsa0lEQXBlMlp2Y2lnN2RHaHBjeTVzWVhOMFRXOXZaa2x1WkdWNFBIUm9hWE11Ylc5dlpuTXViR1Z1WjNSb095bHBaaWhpUFhSb2FYTXViVzl2Wm5OYmRHaHBjeTVzWVhOMFRXOXZaa2x1WkdWNFhTeDBhR2x6TG14aGMzUk5iMjltU1c1a1pYZ3JLeXhpTG5SNWNHVTlQU0p0YjI5bUlpbG1iM0lvZUQxaUxHVTlNRHRsUEhndWRISmhabk11YkdWdVozUm9PMlVyS3lsN1ptOXlLRk05ZUM1MGNtRm1jMXRsWFN4VlBYUm9hWE11WjJWMFZISmhZMnRDZVVsa0tGTXVkR1pvWkM1MGNtRmphMTlwWkNrc1JUMTBhR2x6TG1kbGRGUnlaWGhDZVVsa0tGTXVkR1pvWkM1MGNtRmphMTlwWkNrc1V5NTBabWhrTG1ac1lXZHpKbTh1VkVaSVJGOUdURUZIWDFOQlRWQk1SVjlFUlZORFAyWTlVeTUwWm1oa0xtUmxabUYxYkhSZmMyRnRjR3hsWDJSbGMyTnlhWEIwYVc5dVgybHVaR1Y0T21ZOVJUOUZMbVJsWm1GMWJIUmZjMkZ0Y0d4bFgyUmxjMk55YVhCMGFXOXVYMmx1WkdWNE9qRXNVeTUwWm1oa0xtWnNZV2R6Sm04dVZFWklSRjlHVEVGSFgxTkJUVkJNUlY5RVZWSS9kVDFUTG5SbWFHUXVaR1ZtWVhWc2RGOXpZVzF3YkdWZlpIVnlZWFJwYjI0NmRUMUZQMFV1WkdWbVlYVnNkRjl6WVcxd2JHVmZaSFZ5WVhScGIyNDZNQ3hUTG5SbWFHUXVabXhoWjNNbWJ5NVVSa2hFWDBaTVFVZGZVMEZOVUV4RlgxTkpXa1UvZGoxVExuUm1hR1F1WkdWbVlYVnNkRjl6WVcxd2JHVmZjMmw2WlRwMlBVVS9SUzVrWldaaGRXeDBYM05oYlhCc1pWOXphWHBsT2pBc1V5NTBabWhrTG1ac1lXZHpKbTh1VkVaSVJGOUdURUZIWDFOQlRWQk1SVjlHVEVGSFV6OTVQVk11ZEdab1pDNWtaV1poZFd4MFgzTmhiWEJzWlY5bWJHRm5jenA1UFVVL1JTNWtaV1poZFd4MFgzTmhiWEJzWlY5bWJHRm5jem93TEZNdWMyRnRjR3hsWDI1MWJXSmxjajB3TEZNdWMySm5jSE11YkdWdVozUm9QakFtSm1NdWFXNXBkRk5oYlhCc1pVZHliM1Z3Y3loVkxGTXNVeTV6WW1kd2N5eFZMbTFrYVdFdWJXbHVaaTV6ZEdKc0xuTm5jR1J6TEZNdWMyZHdaSE1wTEhROU1EdDBQRk11ZEhKMWJuTXViR1Z1WjNSb08zUXJLeWw3ZG1GeUlFazlVeTUwY25WdWMxdDBYVHRtYjNJb2FUMHdPMms4U1M1ellXMXdiR1ZmWTI5MWJuUTdhU3NyS1h0M1BYdDlMSGN1Ylc5dlpsOXVkVzFpWlhJOWRHaHBjeTVzWVhOMFRXOXZaa2x1WkdWNExIY3ViblZ0WW1WeVgybHVYM1J5WVdZOVV5NXpZVzF3YkdWZmJuVnRZbVZ5TEZNdWMyRnRjR3hsWDI1MWJXSmxjaXNyTEhjdWJuVnRZbVZ5UFZVdWMyRnRjR3hsY3k1c1pXNW5kR2dzVXk1bWFYSnpkRjl6WVcxd2JHVmZhVzVrWlhnOVZTNXpZVzF3YkdWekxteGxibWQwYUN4VkxuTmhiWEJzWlhNdWNIVnphQ2gzS1N4M0xuUnlZV05yWDJsa1BWVXVkR3RvWkM1MGNtRmphMTlwWkN4M0xuUnBiV1Z6WTJGc1pUMVZMbTFrYVdFdWJXUm9aQzUwYVcxbGMyTmhiR1VzZHk1a1pYTmpjbWx3ZEdsdmJsOXBibVJsZUQxbUxURXNkeTVrWlhOamNtbHdkR2x2YmoxVkxtMWthV0V1YldsdVppNXpkR0pzTG5OMGMyUXVaVzUwY21sbGMxdDNMbVJsYzJOeWFYQjBhVzl1WDJsdVpHVjRYU3gzTG5OcGVtVTlkaXhKTG1ac1lXZHpKbTh1VkZKVlRsOUdURUZIVTE5VFNWcEZKaVlvZHk1emFYcGxQVWt1YzJGdGNHeGxYM05wZW1WYmFWMHBMRlV1YzJGdGNHeGxjMTl6YVhwbEt6MTNMbk5wZW1Vc2R5NWtkWEpoZEdsdmJqMTFMRWt1Wm14aFozTW1ieTVVVWxWT1gwWk1RVWRUWDBSVlVrRlVTVTlPSmlZb2R5NWtkWEpoZEdsdmJqMUpMbk5oYlhCc1pWOWtkWEpoZEdsdmJsdHBYU2tzVlM1ellXMXdiR1Z6WDJSMWNtRjBhVzl1S3oxM0xtUjFjbUYwYVc5dUxGVXVabWx5YzNSZmRISmhabDl0WlhKblpXUjhmR2srTUQ5M0xtUjBjejFWTG5OaGJYQnNaWE5iVlM1ellXMXdiR1Z6TG14bGJtZDBhQzB5WFM1a2RITXJWUzV6WVcxd2JHVnpXMVV1YzJGdGNHeGxjeTVzWlc1bmRHZ3RNbDB1WkhWeVlYUnBiMjQ2S0ZNdWRHWmtkRDkzTG1SMGN6MVRMblJtWkhRdVltRnpaVTFsWkdsaFJHVmpiMlJsVkdsdFpUcDNMbVIwY3owd0xGVXVabWx5YzNSZmRISmhabDl0WlhKblpXUTlJVEFwTEhjdVkzUnpQWGN1WkhSekxFa3VabXhoWjNNbWJ5NVVVbFZPWDBaTVFVZFRYME5VVTE5UFJrWlRSVlFtSmloM0xtTjBjejEzTG1SMGN5dEpMbk5oYlhCc1pWOWpiMjF3YjNOcGRHbHZibDkwYVcxbFgyOW1abk5sZEZ0cFhTa3NRVDE1TEVrdVpteGhaM01tYnk1VVVsVk9YMFpNUVVkVFgwWk1RVWRUUDBFOVNTNXpZVzF3YkdWZlpteGhaM05iYVYwNmFUMDlQVEFtSmtrdVpteGhaM01tYnk1VVVsVk9YMFpNUVVkVFgwWkpVbE5VWDBaTVFVY21KaWhCUFVrdVptbHljM1JmYzJGdGNHeGxYMlpzWVdkektTeDNMbWx6WDNONWJtTTlJU2hCUGo0eE5pWXhLU3gzTG1selgyeGxZV1JwYm1jOVFUNCtNalltTXl4M0xtUmxjR1Z1WkhOZmIyNDlRVDQrTWpRbU15eDNMbWx6WDJSbGNHVnVaR1ZrWDI5dVBVRStQakl5SmpNc2R5NW9ZWE5mY21Wa2RXNWtZVzVqZVQxQlBqNHlNQ1l6TEhjdVpHVm5jbUZrWVhScGIyNWZjSEpwYjNKcGRIazlRU1kyTlRVek5UdDJZWElnUmowaElTaFRMblJtYUdRdVpteGhaM01tYnk1VVJraEVYMFpNUVVkZlFrRlRSVjlFUVZSQlgwOUdSbE5GVkNrc1VEMGhJU2hUTG5SbWFHUXVabXhoWjNNbWJ5NVVSa2hFWDBaTVFVZGZSRVZHUVZWTVZGOUNRVk5GWDBsVFgwMVBUMFlwTEVROUlTRW9TUzVtYkdGbmN5WnZMbFJTVlU1ZlJreEJSMU5mUkVGVVFWOVBSa1pUUlZRcExHczlNRHRHUDJzOVV5NTBabWhrTG1KaGMyVmZaR0YwWVY5dlptWnpaWFE2VUh4OGREMDlQVEEvYXoxNExuTjBZWEowT21zOWJTeDBQVDA5TUNZbWFUMDlQVEEvUkQ5M0xtOW1abk5sZEQxckswa3VaR0YwWVY5dlptWnpaWFE2ZHk1dlptWnpaWFE5YXpwM0xtOW1abk5sZEQxdExHMDlkeTV2Wm1aelpYUXJkeTV6YVhwbExDaFRMbk5pWjNCekxteGxibWQwYUQ0d2ZIeFRMbk5uY0dSekxteGxibWQwYUQ0d2ZIeFZMbTFrYVdFdWJXbHVaaTV6ZEdKc0xuTmlaM0J6TG14bGJtZDBhRDR3Zkh4VkxtMWthV0V1YldsdVppNXpkR0pzTG5ObmNHUnpMbXhsYm1kMGFENHdLU1ltWXk1elpYUlRZVzF3YkdWSGNtOTFjRkJ5YjNCbGNuUnBaWE1vVlN4M0xIY3ViblZ0WW1WeVgybHVYM1J5WVdZc1V5NXpZVzF3YkdWZlozSnZkWEJ6WDJsdVptOHBmWDFwWmloVExuTjFZbk1wZTFVdWFHRnpYMlp5WVdkdFpXNTBYM04xWW5OaGJYQnNaWE05SVRBN2RtRnlJRTQ5VXk1bWFYSnpkRjl6WVcxd2JHVmZhVzVrWlhnN1ptOXlLSFE5TUR0MFBGTXVjM1ZpY3k1bGJuUnlhV1Z6TG14bGJtZDBhRHQwS3lzcFRpczlVeTV6ZFdKekxtVnVkSEpwWlhOYmRGMHVjMkZ0Y0d4bFgyUmxiSFJoTEhjOVZTNXpZVzF3YkdWelcwNHRNVjBzZHk1emRXSnpZVzF3YkdWelBWTXVjM1ZpY3k1bGJuUnlhV1Z6VzNSZExuTjFZbk5oYlhCc1pYTjlmWDE5TEdNdWNISnZkRzkwZVhCbExtZGxkRk5oYlhCc1pUMW1kVzVqZEdsdmJpaGxMSFFwZTNaaGNpQnBMR1k5WlM1ellXMXdiR1Z6VzNSZE8ybG1LQ0YwYUdsekxtMXZiM1lwY21WMGRYSnVJRzUxYkd3N2FXWW9JV1l1WkdGMFlTbG1MbVJoZEdFOWJtVjNJRlZwYm5RNFFYSnlZWGtvWmk1emFYcGxLU3htTG1Gc2NtVmhaSGxTWldGa1BUQXNkR2hwY3k1ellXMXdiR1Z6UkdGMFlWTnBlbVVyUFdZdWMybDZaU3h5TG1SbFluVm5LQ0pKVTA5R2FXeGxJaXdpUVd4c2IyTmhkR2x1WnlCellXMXdiR1VnSXlJcmRDc2lJRzl1SUhSeVlXTnJJQ01pSzJVdWRHdG9aQzUwY21GamExOXBaQ3NpSUc5bUlITnBlbVVnSWl0bUxuTnBlbVVySWlBb2RHOTBZV3c2SUNJcmRHaHBjeTV6WVcxd2JHVnpSR0YwWVZOcGVtVXJJaWtpS1R0bGJITmxJR2xtS0dZdVlXeHlaV0ZrZVZKbFlXUTlQV1l1YzJsNlpTbHlaWFIxY200Z1pqdG1iM0lvT3pzcGUzWmhjaUIxUFhSb2FYTXVjM1J5WldGdExtWnBibVJRYjNOcGRHbHZiaWdoTUN4bUxtOW1abk5sZEN0bUxtRnNjbVZoWkhsU1pXRmtMQ0V4S1R0cFppaDFQaTB4S1h0cFBYUm9hWE11YzNSeVpXRnRMbUoxWm1abGNuTmJkVjA3ZG1GeUlIWTlhUzVpZVhSbFRHVnVaM1JvTFNobUxtOW1abk5sZEN0bUxtRnNjbVZoWkhsU1pXRmtMV2t1Wm1sc1pWTjBZWEowS1R0cFppaG1Mbk5wZW1VdFppNWhiSEpsWVdSNVVtVmhaRHc5ZGlseVpYUjFjbTRnY2k1a1pXSjFaeWdpU1ZOUFJtbHNaU0lzSWtkbGRIUnBibWNnYzJGdGNHeGxJQ01pSzNRcklpQmtZWFJoSUNoaGJISmxZV1I1VW1WaFpEb2dJaXRtTG1Gc2NtVmhaSGxTWldGa0t5SWdiMlptYzJWME9pQWlLeWhtTG05bVpuTmxkQ3RtTG1Gc2NtVmhaSGxTWldGa0xXa3VabWxzWlZOMFlYSjBLU3NpSUhKbFlXUWdjMmw2WlRvZ0lpc29aaTV6YVhwbExXWXVZV3h5WldGa2VWSmxZV1FwS3lJZ1puVnNiQ0J6YVhwbE9pQWlLMll1YzJsNlpTc2lLU0lwTEhNdWJXVnRZM0I1S0dZdVpHRjBZUzVpZFdabVpYSXNaaTVoYkhKbFlXUjVVbVZoWkN4cExHWXViMlptYzJWMEsyWXVZV3h5WldGa2VWSmxZV1F0YVM1bWFXeGxVM1JoY25Rc1ppNXphWHBsTFdZdVlXeHlaV0ZrZVZKbFlXUXBMR2t1ZFhObFpFSjVkR1Z6S3oxbUxuTnBlbVV0Wmk1aGJISmxZV1I1VW1WaFpDeDBhR2x6TG5OMGNtVmhiUzVzYjJkQ2RXWm1aWEpNWlhabGJDZ3BMR1l1WVd4eVpXRmtlVkpsWVdROVppNXphWHBsTEdZN2FXWW9kajA5UFRBcGNtVjBkWEp1SUc1MWJHdzdjaTVrWldKMVp5Z2lTVk5QUm1sc1pTSXNJa2RsZEhScGJtY2djMkZ0Y0d4bElDTWlLM1FySWlCd1lYSjBhV0ZzSUdSaGRHRWdLR0ZzY21WaFpIbFNaV0ZrT2lBaUsyWXVZV3h5WldGa2VWSmxZV1FySWlCdlptWnpaWFE2SUNJcktHWXViMlptYzJWMEsyWXVZV3h5WldGa2VWSmxZV1F0YVM1bWFXeGxVM1JoY25RcEt5SWdjbVZoWkNCemFYcGxPaUFpSzNZcklpQm1kV3hzSUhOcGVtVTZJQ0lyWmk1emFYcGxLeUlwSWlrc2N5NXRaVzFqY0hrb1ppNWtZWFJoTG1KMVptWmxjaXhtTG1Gc2NtVmhaSGxTWldGa0xHa3NaaTV2Wm1aelpYUXJaaTVoYkhKbFlXUjVVbVZoWkMxcExtWnBiR1ZUZEdGeWRDeDJLU3htTG1Gc2NtVmhaSGxTWldGa0t6MTJMR2t1ZFhObFpFSjVkR1Z6S3oxMkxIUm9hWE11YzNSeVpXRnRMbXh2WjBKMVptWmxja3hsZG1Wc0tDbDlaV3h6WlNCeVpYUjFjbTRnYm5Wc2JIMTlMR011Y0hKdmRHOTBlWEJsTG5KbGJHVmhjMlZUWVcxd2JHVTlablZ1WTNScGIyNG9aU3gwS1h0MllYSWdhVDFsTG5OaGJYQnNaWE5iZEYwN2NtVjBkWEp1SUdrdVpHRjBZVDhvZEdocGN5NXpZVzF3YkdWelJHRjBZVk5wZW1VdFBXa3VjMmw2WlN4cExtUmhkR0U5Ym5Wc2JDeHBMbUZzY21WaFpIbFNaV0ZrUFRBc2FTNXphWHBsS1Rvd2ZTeGpMbkJ5YjNSdmRIbHdaUzVuWlhSQmJHeHZZMkYwWldSVFlXMXdiR1ZFWVhSaFUybDZaVDFtZFc1amRHbHZiaWdwZTNKbGRIVnliaUIwYUdsekxuTmhiWEJzWlhORVlYUmhVMmw2Wlgwc1l5NXdjbTkwYjNSNWNHVXVaMlYwUTI5a1pXTnpQV1oxYm1OMGFXOXVLQ2w3ZG1GeUlHVXNkRDBpSWp0bWIzSW9aVDB3TzJVOGRHaHBjeTV0YjI5MkxuUnlZV3R6TG14bGJtZDBhRHRsS3lzcGUzWmhjaUJwUFhSb2FYTXViVzl2ZGk1MGNtRnJjMXRsWFR0bFBqQW1KaWgwS3owaUxDSXBMSFFyUFdrdWJXUnBZUzV0YVc1bUxuTjBZbXd1YzNSelpDNWxiblJ5YVdWeld6QmRMbWRsZEVOdlpHVmpLQ2w5Y21WMGRYSnVJSFI5TEdNdWNISnZkRzkwZVhCbExtZGxkRlJ5WlhoQ2VVbGtQV1oxYm1OMGFXOXVLR1VwZTNaaGNpQjBPMmxtS0NGMGFHbHpMbTF2YjNaOGZDRjBhR2x6TG0xdmIzWXViWFpsZUNseVpYUjFjbTRnYm5Wc2JEdG1iM0lvZEQwd08zUThkR2hwY3k1dGIyOTJMbTEyWlhndWRISmxlSE11YkdWdVozUm9PM1FyS3lsN2RtRnlJR2s5ZEdocGN5NXRiMjkyTG0xMlpYZ3VkSEpsZUhOYmRGMDdhV1lvYVM1MGNtRmphMTlwWkQwOVpTbHlaWFIxY200Z2FYMXlaWFIxY200Z2JuVnNiSDBzWXk1d2NtOTBiM1I1Y0dVdVoyVjBWSEpoWTJ0Q2VVbGtQV1oxYm1OMGFXOXVLR1VwZTJsbUtIUm9hWE11Ylc5dmRqMDlQWFp2YVdRZ01DbHlaWFIxY200Z2JuVnNiRHRtYjNJb2RtRnlJSFE5TUR0MFBIUm9hWE11Ylc5dmRpNTBjbUZyY3k1c1pXNW5kR2c3ZENzcktYdDJZWElnYVQxMGFHbHpMbTF2YjNZdWRISmhhM05iZEYwN2FXWW9hUzUwYTJoa0xuUnlZV05yWDJsa1BUMWxLWEpsZEhWeWJpQnBmWEpsZEhWeWJpQnVkV3hzZlN4akxuQnliM1J2ZEhsd1pTNXBkR1Z0Y3oxYlhTeGpMbkJ5YjNSdmRIbHdaUzVwZEdWdGMwUmhkR0ZUYVhwbFBUQXNZeTV3Y205MGIzUjVjR1V1Wm14aGRIUmxia2wwWlcxSmJtWnZQV1oxYm1OMGFXOXVLQ2w3ZG1GeUlHVTlkR2hwY3k1cGRHVnRjeXgwTEdrc1ppeDFQWFJvYVhNdWJXVjBZVHRwWmloMUlUMXVkV3hzSmlaMUxtaGtiSEloUFQxMmIybGtJREFtSm5VdWFXbHVaaUU5UFhadmFXUWdNQ2w3Wm05eUtIUTlNRHQwUEhVdWFXbHVaaTVwZEdWdFgybHVabTl6TG14bGJtZDBhRHQwS3lzcFpqMTdmU3htTG1sa1BYVXVhV2x1Wmk1cGRHVnRYMmx1Wm05elczUmRMbWwwWlcxZlNVUXNaVnRtTG1sa1hUMW1MR1l1Y21WbVgzUnZQVnRkTEdZdWJtRnRaVDExTG1scGJtWXVhWFJsYlY5cGJtWnZjMXQwWFM1cGRHVnRYMjVoYldVc2RTNXBhVzVtTG1sMFpXMWZhVzVtYjNOYmRGMHVjSEp2ZEdWamRHbHZibDlwYm1SbGVENHdKaVlvWmk1d2NtOTBaV04wYVc5dVBYVXVhWEJ5Ynk1d2NtOTBaV04wYVc5dWMxdDFMbWxwYm1ZdWFYUmxiVjlwYm1admMxdDBYUzV3Y205MFpXTjBhVzl1WDJsdVpHVjRMVEZkS1N4MUxtbHBibVl1YVhSbGJWOXBibVp2YzF0MFhTNXBkR1Z0WDNSNWNHVS9aaTUwZVhCbFBYVXVhV2x1Wmk1cGRHVnRYMmx1Wm05elczUmRMbWwwWlcxZmRIbHdaVHBtTG5SNWNHVTlJbTFwYldVaUxHWXVZMjl1ZEdWdWRGOTBlWEJsUFhVdWFXbHVaaTVwZEdWdFgybHVabTl6VzNSZExtTnZiblJsYm5SZmRIbHdaU3htTG1OdmJuUmxiblJmWlc1amIyUnBibWM5ZFM1cGFXNW1MbWwwWlcxZmFXNW1iM05iZEYwdVkyOXVkR1Z1ZEY5bGJtTnZaR2x1Wnp0cFppaDFMbWxzYjJNcFptOXlLSFE5TUR0MFBIVXVhV3h2WXk1cGRHVnRjeTVzWlc1bmRHZzdkQ3NyS1h0MllYSWdkajExTG1sc2IyTXVhWFJsYlhOYmRGMDdjM2RwZEdOb0tHWTlaVnQyTG1sMFpXMWZTVVJkTEhZdVpHRjBZVjl5WldabGNtVnVZMlZmYVc1a1pYZ2hQVDB3SmlZb2NpNTNZWEp1S0NKSmRHVnRJSE4wYjNKaFoyVWdkMmwwYUNCeVpXWmxjbVZ1WTJVZ2RHOGdiM1JvWlhJZ1ptbHNaWE02SUc1dmRDQnpkWEJ3YjNKMFpXUWlLU3htTG5OdmRYSmpaVDExTG1ScGJtWXVZbTk0WlhOYmRpNWtZWFJoWDNKbFptVnlaVzVqWlY5cGJtUmxlQzB4WFNrc2RpNWpiMjV6ZEhKMVkzUnBiMjVmYldWMGFHOWtLWHRqWVhObElEQTZZbkpsWVdzN1kyRnpaU0F4T25JdWQyRnliaWdpU1hSbGJTQnpkRzl5WVdkbElIZHBkR2dnWTI5dWMzUnlkV04wYVc5dVgyMWxkR2h2WkNBNklHNXZkQ0J6ZFhCd2IzSjBaV1FpS1R0aWNtVmhhenRqWVhObElESTZjaTUzWVhKdUtDSkpkR1Z0SUhOMGIzSmhaMlVnZDJsMGFDQmpiMjV6ZEhKMVkzUnBiMjVmYldWMGFHOWtJRG9nYm05MElITjFjSEJ2Y25SbFpDSXBPMkp5WldGcmZXWnZjaWhtTG1WNGRHVnVkSE05VzEwc1ppNXphWHBsUFRBc2FUMHdPMms4ZGk1bGVIUmxiblJ6TG14bGJtZDBhRHRwS3lzcFppNWxlSFJsYm5SelcybGRQWHQ5TEdZdVpYaDBaVzUwYzF0cFhTNXZabVp6WlhROWRpNWxlSFJsYm5SelcybGRMbVY0ZEdWdWRGOXZabVp6WlhRcmRpNWlZWE5sWDI5bVpuTmxkQ3htTG1WNGRHVnVkSE5iYVYwdWJHVnVaM1JvUFhZdVpYaDBaVzUwYzF0cFhTNWxlSFJsYm5SZmJHVnVaM1JvTEdZdVpYaDBaVzUwYzF0cFhTNWhiSEpsWVdSNVVtVmhaRDB3TEdZdWMybDZaU3M5Wmk1bGVIUmxiblJ6VzJsZExteGxibWQwYUgxcFppaDFMbkJwZEcwbUppaGxXM1V1Y0dsMGJTNXBkR1Z0WDJsa1hTNXdjbWx0WVhKNVBTRXdLU3gxTG1seVpXWXBabTl5S0hROU1EdDBQSFV1YVhKbFppNXlaV1psY21WdVkyVnpMbXhsYm1kMGFEdDBLeXNwZTNaaGNpQjVQWFV1YVhKbFppNXlaV1psY21WdVkyVnpXM1JkTzJadmNpaHBQVEE3YVR4NUxuSmxabVZ5Wlc1alpYTXViR1Z1WjNSb08ya3JLeWxsVzNrdVpuSnZiVjlwZEdWdFgwbEVYUzV5WldaZmRHOHVjSFZ6YUNoN2RIbHdaVHA1TG5SNWNHVXNhV1E2ZVM1eVpXWmxjbVZ1WTJWelcybGRmU2w5YVdZb2RTNXBjSEp3S1dadmNpaDJZWElnYlQwd08yMDhkUzVwY0hKd0xtbHdiV0Z6TG14bGJtZDBhRHR0S3lzcGUzWmhjaUJpUFhVdWFYQnljQzVwY0cxaGMxdHRYVHRtYjNJb2REMHdPM1E4WWk1aGMzTnZZMmxoZEdsdmJuTXViR1Z1WjNSb08zUXJLeWw3ZG1GeUlIZzlZaTVoYzNOdlkybGhkR2x2Ym5OYmRGMDdabTl5S0dZOVpWdDRMbWxrWFN4bUxuQnliM0JsY25ScFpYTTlQVDEyYjJsa0lEQW1KaWhtTG5CeWIzQmxjblJwWlhNOWUzMHNaaTV3Y205d1pYSjBhV1Z6TG1KdmVHVnpQVnRkS1N4cFBUQTdhVHg0TG5CeWIzQnpMbXhsYm1kMGFEdHBLeXNwZTNaaGNpQlRQWGd1Y0hKdmNITmJhVjA3YVdZb1V5NXdjbTl3WlhKMGVWOXBibVJsZUQ0d0ppWlRMbkJ5YjNCbGNuUjVYMmx1WkdWNExURThkUzVwY0hKd0xtbHdZMjh1WW05NFpYTXViR1Z1WjNSb0tYdDJZWElnVlQxMUxtbHdjbkF1YVhCamJ5NWliM2hsYzF0VExuQnliM0JsY25SNVgybHVaR1Y0TFRGZE8yWXVjSEp2Y0dWeWRHbGxjMXRWTG5SNWNHVmRQVlVzWmk1d2NtOXdaWEowYVdWekxtSnZlR1Z6TG5CMWMyZ29WU2w5ZlgxOWZYMHNZeTV3Y205MGIzUjVjR1V1WjJWMFNYUmxiVDFtZFc1amRHbHZiaWhsS1h0MllYSWdkQ3hwTzJsbUtDRjBhR2x6TG0xbGRHRXBjbVYwZFhKdUlHNTFiR3c3YVdZb2FUMTBhR2x6TG1sMFpXMXpXMlZkTENGcExtUmhkR0VtSm1rdWMybDZaU2xwTG1SaGRHRTlibVYzSUZWcGJuUTRRWEp5WVhrb2FTNXphWHBsS1N4cExtRnNjbVZoWkhsU1pXRmtQVEFzZEdocGN5NXBkR1Z0YzBSaGRHRlRhWHBsS3oxcExuTnBlbVVzY2k1a1pXSjFaeWdpU1ZOUFJtbHNaU0lzSWtGc2JHOWpZWFJwYm1jZ2FYUmxiU0FqSWl0bEt5SWdiMllnYzJsNlpTQWlLMmt1YzJsNlpTc2lJQ2gwYjNSaGJEb2dJaXQwYUdsekxtbDBaVzF6UkdGMFlWTnBlbVVySWlraUtUdGxiSE5sSUdsbUtHa3VZV3h5WldGa2VWSmxZV1E5UFQxcExuTnBlbVVwY21WMGRYSnVJR2s3Wm05eUtIWmhjaUJtUFRBN1pqeHBMbVY0ZEdWdWRITXViR1Z1WjNSb08yWXJLeWw3ZG1GeUlIVTlhUzVsZUhSbGJuUnpXMlpkTzJsbUtIVXVZV3h5WldGa2VWSmxZV1FoUFQxMUxteGxibWQwYUNsN2RtRnlJSFk5ZEdocGN5NXpkSEpsWVcwdVptbHVaRkJ2YzJsMGFXOXVLQ0V3TEhVdWIyWm1jMlYwSzNVdVlXeHlaV0ZrZVZKbFlXUXNJVEVwTzJsbUtIWStMVEVwZTNROWRHaHBjeTV6ZEhKbFlXMHVZblZtWm1WeWMxdDJYVHQyWVhJZ2VUMTBMbUo1ZEdWTVpXNW5kR2d0S0hVdWIyWm1jMlYwSzNVdVlXeHlaV0ZrZVZKbFlXUXRkQzVtYVd4bFUzUmhjblFwTzJsbUtIVXViR1Z1WjNSb0xYVXVZV3h5WldGa2VWSmxZV1E4UFhrcGNpNWtaV0oxWnlnaVNWTlBSbWxzWlNJc0lrZGxkSFJwYm1jZ2FYUmxiU0FqSWl0bEt5SWdaWGgwWlc1MElDTWlLMllySWlCa1lYUmhJQ2hoYkhKbFlXUjVVbVZoWkRvZ0lpdDFMbUZzY21WaFpIbFNaV0ZrS3lJZ2IyWm1jMlYwT2lBaUt5aDFMbTltWm5ObGRDdDFMbUZzY21WaFpIbFNaV0ZrTFhRdVptbHNaVk4wWVhKMEtTc2lJSEpsWVdRZ2MybDZaVG9nSWlzb2RTNXNaVzVuZEdndGRTNWhiSEpsWVdSNVVtVmhaQ2tySWlCbWRXeHNJR1Y0ZEdWdWRDQnphWHBsT2lBaUszVXViR1Z1WjNSb0t5SWdablZzYkNCcGRHVnRJSE5wZW1VNklDSXJhUzV6YVhwbEt5SXBJaWtzY3k1dFpXMWpjSGtvYVM1a1lYUmhMbUoxWm1abGNpeHBMbUZzY21WaFpIbFNaV0ZrTEhRc2RTNXZabVp6WlhRcmRTNWhiSEpsWVdSNVVtVmhaQzEwTG1acGJHVlRkR0Z5ZEN4MUxteGxibWQwYUMxMUxtRnNjbVZoWkhsU1pXRmtLU3gwTG5WelpXUkNlWFJsY3lzOWRTNXNaVzVuZEdndGRTNWhiSEpsWVdSNVVtVmhaQ3gwYUdsekxuTjBjbVZoYlM1c2IyZENkV1ptWlhKTVpYWmxiQ2dwTEdrdVlXeHlaV0ZrZVZKbFlXUXJQWFV1YkdWdVozUm9MWFV1WVd4eVpXRmtlVkpsWVdRc2RTNWhiSEpsWVdSNVVtVmhaRDExTG14bGJtZDBhRHRsYkhObElISmxkSFZ5YmlCeUxtUmxZblZuS0NKSlUwOUdhV3hsSWl3aVIyVjBkR2x1WnlCcGRHVnRJQ01pSzJVcklpQmxlSFJsYm5RZ0l5SXJaaXNpSUhCaGNuUnBZV3dnWkdGMFlTQW9ZV3h5WldGa2VWSmxZV1E2SUNJcmRTNWhiSEpsWVdSNVVtVmhaQ3NpSUc5bVpuTmxkRG9nSWlzb2RTNXZabVp6WlhRcmRTNWhiSEpsWVdSNVVtVmhaQzEwTG1acGJHVlRkR0Z5ZENrcklpQnlaV0ZrSUhOcGVtVTZJQ0lyZVNzaUlHWjFiR3dnWlhoMFpXNTBJSE5wZW1VNklDSXJkUzVzWlc1bmRHZ3JJaUJtZFd4c0lHbDBaVzBnYzJsNlpUb2dJaXRwTG5OcGVtVXJJaWtpS1N4ekxtMWxiV053ZVNocExtUmhkR0V1WW5WbVptVnlMR2t1WVd4eVpXRmtlVkpsWVdRc2RDeDFMbTltWm5ObGRDdDFMbUZzY21WaFpIbFNaV0ZrTFhRdVptbHNaVk4wWVhKMExIa3BMSFV1WVd4eVpXRmtlVkpsWVdRclBYa3NhUzVoYkhKbFlXUjVVbVZoWkNzOWVTeDBMblZ6WldSQ2VYUmxjeXM5ZVN4MGFHbHpMbk4wY21WaGJTNXNiMmRDZFdabVpYSk1aWFpsYkNncExHNTFiR3g5Wld4elpTQnlaWFIxY200Z2JuVnNiSDE5Y21WMGRYSnVJR2t1WVd4eVpXRmtlVkpsWVdROVBUMXBMbk5wZW1VL2FUcHVkV3hzZlN4akxuQnliM1J2ZEhsd1pTNXlaV3hsWVhObFNYUmxiVDFtZFc1amRHbHZiaWhsS1h0MllYSWdkRDEwYUdsekxtbDBaVzF6VzJWZE8ybG1LSFF1WkdGMFlTbDdkR2hwY3k1cGRHVnRjMFJoZEdGVGFYcGxMVDEwTG5OcGVtVXNkQzVrWVhSaFBXNTFiR3dzZEM1aGJISmxZV1I1VW1WaFpEMHdPMlp2Y2loMllYSWdhVDB3TzJrOGRDNWxlSFJsYm5SekxteGxibWQwYUR0cEt5c3BlM1poY2lCbVBYUXVaWGgwWlc1MGMxdHBYVHRtTG1Gc2NtVmhaSGxTWldGa1BUQjljbVYwZFhKdUlIUXVjMmw2WlgxbGJITmxJSEpsZEhWeWJpQXdmU3hqTG5CeWIzUnZkSGx3WlM1d2NtOWpaWE56U1hSbGJYTTlablZ1WTNScGIyNG9aU2w3Wm05eUtIWmhjaUIwSUdsdUlIUm9hWE11YVhSbGJYTXBlM1poY2lCcFBYUm9hWE11YVhSbGJYTmJkRjA3ZEdocGN5NW5aWFJKZEdWdEtHa3VhV1FwTEdVbUppRnBMbk5sYm5RbUppaGxLR2twTEdrdWMyVnVkRDBoTUN4cExtUmhkR0U5Ym5Wc2JDbDlmU3hqTG5CeWIzUnZkSGx3WlM1b1lYTkpkR1Z0UFdaMWJtTjBhVzl1S0dVcGUyWnZjaWgyWVhJZ2RDQnBiaUIwYUdsekxtbDBaVzF6S1h0MllYSWdhVDEwYUdsekxtbDBaVzF6VzNSZE8ybG1LR2t1Ym1GdFpUMDlQV1VwY21WMGRYSnVJR2t1YVdSOWNtVjBkWEp1TFRGOUxHTXVjSEp2ZEc5MGVYQmxMbWRsZEUxbGRHRklZVzVrYkdWeVBXWjFibU4wYVc5dUtDbDdjbVYwZFhKdUlIUm9hWE11YldWMFlUOTBhR2x6TG0xbGRHRXVhR1JzY2k1b1lXNWtiR1Z5T201MWJHeDlMR011Y0hKdmRHOTBlWEJsTG1kbGRGQnlhVzFoY25sSmRHVnRQV1oxYm1OMGFXOXVLQ2w3Y21WMGRYSnVJWFJvYVhNdWJXVjBZWHg4SVhSb2FYTXViV1YwWVM1d2FYUnRQMjUxYkd3NmRHaHBjeTVuWlhSSmRHVnRLSFJvYVhNdWJXVjBZUzV3YVhSdExtbDBaVzFmYVdRcGZTeGpMbkJ5YjNSdmRIbHdaUzVwZEdWdFZHOUdjbUZuYldWdWRHVmtWSEpoWTJ0R2FXeGxQV1oxYm1OMGFXOXVLR1VwZTNaaGNpQjBQV1Y4Zkh0OUxHazliblZzYkR0cFppaDBMbWwwWlcxSlpEOXBQWFJvYVhNdVoyVjBTWFJsYlNoMExtbDBaVzFKWkNrNmFUMTBhR2x6TG1kbGRGQnlhVzFoY25sSmRHVnRLQ2tzYVQwOWJuVnNiQ2x5WlhSMWNtNGdiblZzYkR0MllYSWdaajF1WlhjZ1l6dG1MbVJwYzJOaGNtUk5aR0YwUkdGMFlUMGhNVHQyWVhJZ2RUMTdkSGx3WlRwcExuUjVjR1VzWkdWelkzSnBjSFJwYjI1ZlltOTRaWE02YVM1d2NtOXdaWEowYVdWekxtSnZlR1Z6ZlR0cExuQnliM0JsY25ScFpYTXVhWE53WlNZbUtIVXVkMmxrZEdnOWFTNXdjbTl3WlhKMGFXVnpMbWx6Y0dVdWFXMWhaMlZmZDJsa2RHZ3NkUzVvWldsbmFIUTlhUzV3Y205d1pYSjBhV1Z6TG1semNHVXVhVzFoWjJWZmFHVnBaMmgwS1R0MllYSWdkajFtTG1Ga1pGUnlZV05yS0hVcE8zSmxkSFZ5YmlCMlB5aG1MbUZrWkZOaGJYQnNaU2gyTEdrdVpHRjBZU2tzWmlrNmJuVnNiSDBzWXk1d2NtOTBiM1I1Y0dVdWQzSnBkR1U5Wm5WdVkzUnBiMjRvWlNsN1ptOXlLSFpoY2lCMFBUQTdkRHgwYUdsekxtSnZlR1Z6TG14bGJtZDBhRHQwS3lzcGRHaHBjeTVpYjNobGMxdDBYUzUzY21sMFpTaGxLWDBzWXk1d2NtOTBiM1I1Y0dVdVkzSmxZWFJsUm5KaFoyMWxiblE5Wm5WdVkzUnBiMjRvWlN4MExHa3BlM1poY2lCbVBYUm9hWE11WjJWMFZISmhZMnRDZVVsa0tHVXBMSFU5ZEdocGN5NW5aWFJUWVcxd2JHVW9aaXgwS1R0cFppaDFQVDF1ZFd4c0tYSmxkSFZ5YmlCMVBXWXVjMkZ0Y0d4bGMxdDBYU3gwYUdsekxtNWxlSFJUWldWclVHOXphWFJwYjI0L2RHaHBjeTV1WlhoMFUyVmxhMUJ2YzJsMGFXOXVQVTFoZEdndWJXbHVLSFV1YjJabWMyVjBLM1V1WVd4eVpXRmtlVkpsWVdRc2RHaHBjeTV1WlhoMFUyVmxhMUJ2YzJsMGFXOXVLVHAwYUdsekxtNWxlSFJUWldWclVHOXphWFJwYjI0OVppNXpZVzF3YkdWelczUmRMbTltWm5ObGRDdDFMbUZzY21WaFpIbFNaV0ZrTEc1MWJHdzdkbUZ5SUhZOWFYeDhibVYzSUhNN2RpNWxibVJwWVc1dVpYTnpQWE11UWtsSFgwVk9SRWxCVGp0MllYSWdlVDEwYUdsekxtTnlaV0YwWlZOcGJtZHNaVk5oYlhCc1pVMXZiMllvZFNrN2VTNTNjbWwwWlNoMktTeDVMblJ5WVdaeld6QmRMblJ5ZFc1eld6QmRMbVJoZEdGZmIyWm1jMlYwUFhrdWMybDZaU3M0TEhJdVpHVmlkV2NvSWsxUU5FSnZlQ0lzSWtGa2FuVnpkR2x1WnlCa1lYUmhYMjltWm5ObGRDQjNhWFJvSUc1bGR5QjJZV3gxWlNBaUsza3VkSEpoWm5OYk1GMHVkSEoxYm5OYk1GMHVaR0YwWVY5dlptWnpaWFFwTEhZdVlXUnFkWE4wVldsdWRETXlLSGt1ZEhKaFpuTmJNRjB1ZEhKMWJuTmJNRjB1WkdGMFlWOXZabVp6WlhSZmNHOXphWFJwYjI0c2VTNTBjbUZtYzFzd1hTNTBjblZ1YzFzd1hTNWtZWFJoWDI5bVpuTmxkQ2s3ZG1GeUlHMDlibVYzSUc4dWJXUmhkRUp2ZUR0eVpYUjFjbTRnYlM1a1lYUmhQWFV1WkdGMFlTeHRMbmR5YVhSbEtIWXBMSFo5TEdNdWQzSnBkR1ZKYm1sMGFXRnNhWHBoZEdsdmJsTmxaMjFsYm5ROVpuVnVZM1JwYjI0b1pTeDBMR2tzWmlsN2RtRnlJSFU3Y2k1a1pXSjFaeWdpU1ZOUFJtbHNaU0lzSWtkbGJtVnlZWFJwYm1jZ2FXNXBkR2xoYkdsNllYUnBiMjRnYzJWbmJXVnVkQ0lwTzNaaGNpQjJQVzVsZHlCek8zWXVaVzVrYVdGdWJtVnpjejF6TGtKSlIxOUZUa1JKUVU0c1pTNTNjbWwwWlNoMktUdDJZWElnZVQxMExtRmtaQ2dpYlhabGVDSXBPMlp2Y2locEppWjVMbUZrWkNnaWJXVm9aQ0lwTG5ObGRDZ2labkpoWjIxbGJuUmZaSFZ5WVhScGIyNGlMR2twTEhVOU1EdDFQSFF1ZEhKaGEzTXViR1Z1WjNSb08zVXJLeWw1TG1Ga1pDZ2lkSEpsZUNJcExuTmxkQ2dpZEhKaFkydGZhV1FpTEhRdWRISmhhM05iZFYwdWRHdG9aQzUwY21GamExOXBaQ2t1YzJWMEtDSmtaV1poZFd4MFgzTmhiWEJzWlY5a1pYTmpjbWx3ZEdsdmJsOXBibVJsZUNJc01Ta3VjMlYwS0NKa1pXWmhkV3gwWDNOaGJYQnNaVjlrZFhKaGRHbHZiaUlzWmlrdWMyVjBLQ0prWldaaGRXeDBYM05oYlhCc1pWOXphWHBsSWl3d0tTNXpaWFFvSW1SbFptRjFiSFJmYzJGdGNHeGxYMlpzWVdkeklpdzJOVFV6TmlrN2NtVjBkWEp1SUhRdWQzSnBkR1VvZGlrc2RpNWlkV1ptWlhKOUxHTXVjSEp2ZEc5MGVYQmxMbk5oZG1VOVpuVnVZM1JwYjI0b1pTbDdkbUZ5SUhROWJtVjNJSE03ZEM1bGJtUnBZVzV1WlhOelBYTXVRa2xIWDBWT1JFbEJUaXgwYUdsekxuZHlhWFJsS0hRcExIUXVjMkYyWlNobEtYMHNZeTV3Y205MGIzUjVjR1V1WjJWMFFuVm1abVZ5UFdaMWJtTjBhVzl1S0NsN2RtRnlJR1U5Ym1WM0lITTdjbVYwZFhKdUlHVXVaVzVrYVdGdWJtVnpjejF6TGtKSlIxOUZUa1JKUVU0c2RHaHBjeTUzY21sMFpTaGxLU3hsTG1KMVptWmxjbjBzWXk1d2NtOTBiM1I1Y0dVdWFXNXBkR2xoYkdsNlpWTmxaMjFsYm5SaGRHbHZiajFtZFc1amRHbHZiaWdwZTNaaGNpQmxMSFFzYVN4bU8yWnZjaWgwYUdsekxtOXVVMlZuYldWdWREMDlQVzUxYkd3bUpuSXVkMkZ5YmlnaVRWQTBRbTk0SWl3aVRtOGdjMlZuYldWdWRHRjBhVzl1SUdOaGJHeGlZV05ySUhObGRDRWlLU3gwYUdsekxtbHpSbkpoWjIxbGJuUmhkR2x2YmtsdWFYUnBZV3hwZW1Wa2ZId29kR2hwY3k1cGMwWnlZV2R0Wlc1MFlYUnBiMjVKYm1sMGFXRnNhWHBsWkQwaE1DeDBhR2x6TG01bGVIUk5iMjltVG5WdFltVnlQVEFzZEdocGN5NXlaWE5sZEZSaFlteGxjeWdwS1N4MFBWdGRMR1U5TUR0bFBIUm9hWE11Wm5KaFoyMWxiblJsWkZSeVlXTnJjeTVzWlc1bmRHZzdaU3NyS1h0MllYSWdkVDF1WlhjZ2J5NXRiMjkyUW05NE8zVXViWFpvWkQxMGFHbHpMbTF2YjNZdWJYWm9aQ3gxTG1KdmVHVnpMbkIxYzJnb2RTNXRkbWhrS1N4cFBYUm9hWE11WjJWMFZISmhZMnRDZVVsa0tIUm9hWE11Wm5KaFoyMWxiblJsWkZSeVlXTnJjMXRsWFM1cFpDa3NkUzVpYjNobGN5NXdkWE5vS0drcExIVXVkSEpoYTNNdWNIVnphQ2hwS1N4bVBYdDlMR1l1YVdROWFTNTBhMmhrTG5SeVlXTnJYMmxrTEdZdWRYTmxjajEwYUdsekxtWnlZV2R0Wlc1MFpXUlVjbUZqYTNOYlpWMHVkWE5sY2l4bUxtSjFabVpsY2oxakxuZHlhWFJsU1c1cGRHbGhiR2w2WVhScGIyNVRaV2R0Wlc1MEtIUm9hWE11Wm5SNWNDeDFMSFJvYVhNdWJXOXZkaTV0ZG1WNEppWjBhR2x6TG0xdmIzWXViWFpsZUM1dFpXaGtQM1JvYVhNdWJXOXZkaTV0ZG1WNExtMWxhR1F1Wm5KaFoyMWxiblJmWkhWeVlYUnBiMjQ2ZG05cFpDQXdMSFJvYVhNdWJXOXZkaTUwY21GcmMxdGxYUzV6WVcxd2JHVnpMbXhsYm1kMGFENHdQM1JvYVhNdWJXOXZkaTUwY21GcmMxdGxYUzV6WVcxd2JHVnpXekJkTG1SMWNtRjBhVzl1T2pBcExIUXVjSFZ6YUNobUtYMXlaWFIxY200Z2RIMHNieTVDYjNndWNISnZkRzkwZVhCbExuQnlhVzUwU0dWaFpHVnlQV1oxYm1OMGFXOXVLR1VwZTNSb2FYTXVjMmw2WlNzOU9DeDBhR2x6TG5OcGVtVStiQ1ltS0hSb2FYTXVjMmw2WlNzOU9Da3NkR2hwY3k1MGVYQmxQVDA5SW5WMWFXUWlKaVlvZEdocGN5NXphWHBsS3oweE5pa3NaUzVzYjJjb1pTNXBibVJsYm5RckluTnBlbVU2SWl0MGFHbHpMbk5wZW1VcExHVXViRzluS0dVdWFXNWtaVzUwS3lKMGVYQmxPaUlyZEdocGN5NTBlWEJsS1gwc2J5NUdkV3hzUW05NExuQnliM1J2ZEhsd1pTNXdjbWx1ZEVobFlXUmxjajFtZFc1amRHbHZiaWhsS1h0MGFHbHpMbk5wZW1VclBUUXNieTVDYjNndWNISnZkRzkwZVhCbExuQnlhVzUwU0dWaFpHVnlMbU5oYkd3b2RHaHBjeXhsS1N4bExteHZaeWhsTG1sdVpHVnVkQ3NpZG1WeWMybHZiam9pSzNSb2FYTXVkbVZ5YzJsdmJpa3NaUzVzYjJjb1pTNXBibVJsYm5RckltWnNZV2R6T2lJcmRHaHBjeTVtYkdGbmN5bDlMRzh1UW05NExuQnliM1J2ZEhsd1pTNXdjbWx1ZEQxbWRXNWpkR2x2YmlobEtYdDBhR2x6TG5CeWFXNTBTR1ZoWkdWeUtHVXBmU3h2TGtOdmJuUmhhVzVsY2tKdmVDNXdjbTkwYjNSNWNHVXVjSEpwYm5ROVpuVnVZM1JwYjI0b1pTbDdkR2hwY3k1d2NtbHVkRWhsWVdSbGNpaGxLVHRtYjNJb2RtRnlJSFE5TUR0MFBIUm9hWE11WW05NFpYTXViR1Z1WjNSb08zUXJLeWxwWmloMGFHbHpMbUp2ZUdWelczUmRLWHQyWVhJZ2FUMWxMbWx1WkdWdWREdGxMbWx1WkdWdWRDczlJaUFpTEhSb2FYTXVZbTk0WlhOYmRGMHVjSEpwYm5Rb1pTa3NaUzVwYm1SbGJuUTlhWDE5TEdNdWNISnZkRzkwZVhCbExuQnlhVzUwUFdaMWJtTjBhVzl1S0dVcGUyVXVhVzVrWlc1MFBTSWlPMlp2Y2loMllYSWdkRDB3TzNROGRHaHBjeTVpYjNobGN5NXNaVzVuZEdnN2RDc3JLWFJvYVhNdVltOTRaWE5iZEYwbUpuUm9hWE11WW05NFpYTmJkRjB1Y0hKcGJuUW9aU2w5TEc4dWJYWm9aRUp2ZUM1d2NtOTBiM1I1Y0dVdWNISnBiblE5Wm5WdVkzUnBiMjRvWlNsN2J5NUdkV3hzUW05NExuQnliM1J2ZEhsd1pTNXdjbWx1ZEVobFlXUmxjaTVqWVd4c0tIUm9hWE1zWlNrc1pTNXNiMmNvWlM1cGJtUmxiblFySW1OeVpXRjBhVzl1WDNScGJXVTZJQ0lyZEdocGN5NWpjbVZoZEdsdmJsOTBhVzFsS1N4bExteHZaeWhsTG1sdVpHVnVkQ3NpYlc5a2FXWnBZMkYwYVc5dVgzUnBiV1U2SUNJcmRHaHBjeTV0YjJScFptbGpZWFJwYjI1ZmRHbHRaU2tzWlM1c2IyY29aUzVwYm1SbGJuUXJJblJwYldWelkyRnNaVG9nSWl0MGFHbHpMblJwYldWelkyRnNaU2tzWlM1c2IyY29aUzVwYm1SbGJuUXJJbVIxY21GMGFXOXVPaUFpSzNSb2FYTXVaSFZ5WVhScGIyNHBMR1V1Ykc5bktHVXVhVzVrWlc1MEt5SnlZWFJsT2lBaUszUm9hWE11Y21GMFpTa3NaUzVzYjJjb1pTNXBibVJsYm5RckluWnZiSFZ0WlRvZ0lpc29kR2hwY3k1MmIyeDFiV1UrUGpncEtTeGxMbXh2WnlobExtbHVaR1Z1ZENzaWJXRjBjbWw0T2lBaUszUm9hWE11YldGMGNtbDRMbXB2YVc0b0lpd2dJaWtwTEdVdWJHOW5LR1V1YVc1a1pXNTBLeUp1WlhoMFgzUnlZV05yWDJsa09pQWlLM1JvYVhNdWJtVjRkRjkwY21GamExOXBaQ2w5TEc4dWRHdG9aRUp2ZUM1d2NtOTBiM1I1Y0dVdWNISnBiblE5Wm5WdVkzUnBiMjRvWlNsN2J5NUdkV3hzUW05NExuQnliM1J2ZEhsd1pTNXdjbWx1ZEVobFlXUmxjaTVqWVd4c0tIUm9hWE1zWlNrc1pTNXNiMmNvWlM1cGJtUmxiblFySW1OeVpXRjBhVzl1WDNScGJXVTZJQ0lyZEdocGN5NWpjbVZoZEdsdmJsOTBhVzFsS1N4bExteHZaeWhsTG1sdVpHVnVkQ3NpYlc5a2FXWnBZMkYwYVc5dVgzUnBiV1U2SUNJcmRHaHBjeTV0YjJScFptbGpZWFJwYjI1ZmRHbHRaU2tzWlM1c2IyY29aUzVwYm1SbGJuUXJJblJ5WVdOclgybGtPaUFpSzNSb2FYTXVkSEpoWTJ0ZmFXUXBMR1V1Ykc5bktHVXVhVzVrWlc1MEt5SmtkWEpoZEdsdmJqb2dJaXQwYUdsekxtUjFjbUYwYVc5dUtTeGxMbXh2WnlobExtbHVaR1Z1ZENzaWRtOXNkVzFsT2lBaUt5aDBhR2x6TG5admJIVnRaVDQrT0NrcExHVXViRzluS0dVdWFXNWtaVzUwS3lKdFlYUnlhWGc2SUNJcmRHaHBjeTV0WVhSeWFYZ3VhbTlwYmlnaUxDQWlLU2tzWlM1c2IyY29aUzVwYm1SbGJuUXJJbXhoZVdWeU9pQWlLM1JvYVhNdWJHRjVaWElwTEdVdWJHOW5LR1V1YVc1a1pXNTBLeUpoYkhSbGNtNWhkR1ZmWjNKdmRYQTZJQ0lyZEdocGN5NWhiSFJsY201aGRHVmZaM0p2ZFhBcExHVXViRzluS0dVdWFXNWtaVzUwS3lKM2FXUjBhRG9nSWl0MGFHbHpMbmRwWkhSb0tTeGxMbXh2WnlobExtbHVaR1Z1ZENzaWFHVnBaMmgwT2lBaUszUm9hWE11YUdWcFoyaDBLWDA3ZG1GeUlHYzllMzA3Wnk1amNtVmhkR1ZHYVd4bFBXWjFibU4wYVc5dUtHVXNkQ2w3ZG1GeUlHazlaU0U5UFhadmFXUWdNRDlsT2lFd0xHWTlibVYzSUdNb2RDazdjbVYwZFhKdUlHWXVaR2x6WTJGeVpFMWtZWFJFWVhSaFBTRnBMR1o5TEc0dVkzSmxZWFJsUm1sc1pUMW5MbU55WldGMFpVWnBiR1Y5S1NoUVpTazdkbUZ5SUhSeVBWWjBLRkJsS1N4cWREMTdaWGh3YjNKMGN6cDdmWDA3S0daMWJtTjBhVzl1S0c0cGUzWmhjaUJ5UFh0OU8yNHVaWGh3YjNKMGN6MXlMSEl1Y0dGeWMyVTlablZ1WTNScGIyNG9ZU3h6S1h0bWIzSW9kbUZ5SUd3OWNpNWlhVzR1Y21WaFpGVnphRzl5ZEN4a1BYSXVZbWx1TG5KbFlXUlZhVzUwTEhBOU1DeG9QWHQ5TEc4OWJtVjNJRlZwYm5RNFFYSnlZWGtvWVNrc1h6MXZMbXhsYm1kMGFDMDBPMlFvYnl4ZktTRTlNVEF4TURFd01qVTJPeWxmTFMwN2RtRnlJSEE5WHp0d0t6MDBMSEFyUFRRN2RtRnlJR005YkNodkxIQXBPM0FyUFRJc2JDaHZMSEFwTEhBclBUSTdkbUZ5SUdjOVpDaHZMSEFwTzNBclBUUTdkbUZ5SUdVOVpDaHZMSEFwTzNBclBUUXNjRDFsTzJadmNpaDJZWElnZEQwd08zUThZenQwS3lzcGUyUW9ieXh3S1N4d0t6MDBMSEFyUFRRc2NDczlOQ3h3S3owMExHUW9ieXh3S1N4d0t6MDBPM1poY2lCblBXUW9ieXh3S1R0d0t6MDBPM1poY2lCcFBXUW9ieXh3S1R0d0t6MDBPM1poY2lCbVBXd29ieXh3S1N4MVBXd29ieXh3S3pJcExIWTliQ2h2TEhBck5DazdjQ3M5Tml4d0t6MDRPM1poY2lCNVBXUW9ieXh3S1R0d0t6MDBMSEFyUFdZcmRTdDJMSEl1WDNKbFlXUk1iMk5oYkNodkxIa3NhQ3huTEdrc2N5bDljbVYwZFhKdUlHaDlMSEl1WDNKbFlXUk1iMk5oYkQxbWRXNWpkR2x2YmloaExITXNiQ3hrTEdnc2J5bDdkbUZ5SUY4OWNpNWlhVzR1Y21WaFpGVnphRzl5ZEN4d1BYSXVZbWx1TG5KbFlXUlZhVzUwTzNBb1lTeHpLU3h6S3owMExGOG9ZU3h6S1N4ekt6MHlMRjhvWVN4ektTeHpLejB5TzNaaGNpQmpQVjhvWVN4ektUdHpLejB5TEhBb1lTeHpLU3h6S3owMExIQW9ZU3h6S1N4ekt6MDBMSE1yUFRnN2RtRnlJR2M5WHloaExITXBPM01yUFRJN2RtRnlJR1U5WHloaExITXBPM01yUFRJN2RtRnlJSFE5Y2k1aWFXNHVjbVZoWkZWVVJqZ29ZU3h6TEdjcE8ybG1LSE1yUFdjc2N5czlaU3h2S1h0c1czUmRQWHR6YVhwbE9tZ3NZM05wZW1VNlpIMDdjbVYwZFhKdWZYWmhjaUJwUFc1bGR5QlZhVzUwT0VGeWNtRjVLR0V1WW5WbVptVnlMSE1wTzJsbUtHTTlQVEFwYkZ0MFhUMXVaWGNnVldsdWREaEJjbkpoZVNocExtSjFabVpsY2k1emJHbGpaU2h6TEhNclpDa3BPMlZzYzJVZ2FXWW9ZejA5T0NsN2RtRnlJR1k5Ym1WM0lGVnBiblE0UVhKeVlYa29hQ2s3Y2k1cGJtWnNZWFJsVW1GM0tHa3NaaWtzYkZ0MFhUMW1mV1ZzYzJVZ2RHaHliM2NpZFc1cmJtOTNiaUJqYjIxd2NtVnpjMmx2YmlCdFpYUm9iMlE2SUNJclkzMHNjaTVwYm1ac1lYUmxVbUYzUFdaMWJtTjBhVzl1S0dFc2N5bDdjbVYwZFhKdUlISXVSaTVwYm1ac1lYUmxLR0VzY3lsOUxISXVhVzVtYkdGMFpUMW1kVzVqZEdsdmJpaGhMSE1wZTNKbGRIVnliaUJoV3pCZExHRmJNVjBzY2k1cGJtWnNZWFJsVW1GM0tHNWxkeUJWYVc1ME9FRnljbUY1S0dFdVluVm1abVZ5TEdFdVlubDBaVTltWm5ObGRDc3lMR0V1YkdWdVozUm9MVFlwTEhNcGZTeHlMbVJsWm14aGRHVTlablZ1WTNScGIyNG9ZU3h6S1h0elBUMXVkV3hzSmlZb2N6MTdiR1YyWld3Nk5uMHBPM1poY2lCc1BUQXNaRDF1WlhjZ1ZXbHVkRGhCY25KaGVTZzFNQ3ROWVhSb0xtWnNiMjl5S0dFdWJHVnVaM1JvS2pFdU1Ta3BPMlJiYkYwOU1USXdMR1JiYkNzeFhUMHhOVFlzYkNzOU1peHNQWEl1Umk1a1pXWnNZWFJsVW1GM0tHRXNaQ3hzTEhNdWJHVjJaV3dwTzNaaGNpQm9QWEl1WVdSc1pYSW9ZU3d3TEdFdWJHVnVaM1JvS1R0eVpYUjFjbTRnWkZ0c0t6QmRQV2crUGo0eU5DWXlOVFVzWkZ0c0t6RmRQV2crUGo0eE5pWXlOVFVzWkZ0c0t6SmRQV2crUGo0NEpqSTFOU3hrVzJ3ck0xMDlhRDQrUGpBbU1qVTFMRzVsZHlCVmFXNTBPRUZ5Y21GNUtHUXVZblZtWm1WeUxEQXNiQ3MwS1gwc2NpNWtaV1pzWVhSbFVtRjNQV1oxYm1OMGFXOXVLR0VzY3lsN2N6MDliblZzYkNZbUtITTllMnhsZG1Wc09qWjlLVHQyWVhJZ2JEMXVaWGNnVldsdWREaEJjbkpoZVNnMU1DdE5ZWFJvTG1ac2IyOXlLR0V1YkdWdVozUm9LakV1TVNrcExHUTljaTVHTG1SbFpteGhkR1ZTWVhjb1lTeHNMR1FzY3k1c1pYWmxiQ2s3Y21WMGRYSnVJRzVsZHlCVmFXNTBPRUZ5Y21GNUtHd3VZblZtWm1WeUxEQXNaQ2w5TEhJdVpXNWpiMlJsUFdaMWJtTjBhVzl1S0dFc2N5bDdjejA5Ym5Wc2JDWW1LSE05SVRFcE8zWmhjaUJzUFRBc1pEMXlMbUpwYmk1M2NtbDBaVlZwYm5Rc2FEMXlMbUpwYmk1M2NtbDBaVlZ6YUc5eWRDeHZQWHQ5TzJadmNpaDJZWElnWHlCcGJpQmhLWHQyWVhJZ2NEMGhjaTVmYm05T1pXVmtLRjhwSmlZaGN5eGpQV0ZiWDEwc1p6MXlMbU55WXk1amNtTW9ZeXd3TEdNdWJHVnVaM1JvS1R0dlcxOWRQWHRqY0hJNmNDeDFjMmw2WlRwakxteGxibWQwYUN4amNtTTZaeXhtYVd4bE9uQS9jaTVrWldac1lYUmxVbUYzS0dNcE9tTjlmV1p2Y2loMllYSWdYeUJwYmlCdktXd3JQVzliWDEwdVptbHNaUzVzWlc1bmRHZ3JNekFyTkRZck1pcHlMbUpwYmk1emFYcGxWVlJHT0NoZktUdHNLejB5TWp0MllYSWdaVDF1WlhjZ1ZXbHVkRGhCY25KaGVTaHNLU3gwUFRBc2FUMWJYVHRtYjNJb2RtRnlJRjhnYVc0Z2J5bDdkbUZ5SUdZOWIxdGZYVHRwTG5CMWMyZ29kQ2tzZEQxeUxsOTNjbWwwWlVobFlXUmxjaWhsTEhRc1h5eG1MREFwZlhaaGNpQjFQVEFzZGoxME8yWnZjaWgyWVhJZ1h5QnBiaUJ2S1h0MllYSWdaajF2VzE5ZE8ya3VjSFZ6YUNoMEtTeDBQWEl1WDNkeWFYUmxTR1ZoWkdWeUtHVXNkQ3hmTEdZc01TeHBXM1VySzEwcGZYWmhjaUI1UFhRdGRqdHlaWFIxY200Z1pDaGxMSFFzTVRBeE1ERXdNalUyS1N4MEt6MDBMSFFyUFRRc2FDaGxMSFFzZFNrc2RDczlNaXhvS0dVc2RDeDFLU3gwS3oweUxHUW9aU3gwTEhrcExIUXJQVFFzWkNobExIUXNkaWtzZENzOU5DeDBLejB5TEdVdVluVm1abVZ5ZlN4eUxsOXViMDVsWldROVpuVnVZM1JwYjI0b1lTbDdkbUZ5SUhNOVlTNXpjR3hwZENnaUxpSXBMbkJ2Y0NncExuUnZURzkzWlhKRFlYTmxLQ2s3Y21WMGRYSnVJbkJ1Wnl4cWNHY3NhbkJsWnl4NmFYQWlMbWx1WkdWNFQyWW9jeWtoUFMweGZTeHlMbDkzY21sMFpVaGxZV1JsY2oxbWRXNWpkR2x2YmloaExITXNiQ3hrTEdnc2J5bDdkbUZ5SUY4OWNpNWlhVzR1ZDNKcGRHVlZhVzUwTEhBOWNpNWlhVzR1ZDNKcGRHVlZjMmh2Y25Rc1l6MWtMbVpwYkdVN1h5aGhMSE1zYUQwOU1EODJOek15TkRjMU1qb3pNell6T1RJME9Da3NjeXM5TkN4b1BUMHhKaVlvY3lzOU1pa3NjQ2hoTEhNc01qQXBMSE1yUFRJc2NDaGhMSE1zTUNrc2N5czlNaXh3S0dFc2N5eGtMbU53Y2o4NE9qQXBMSE1yUFRJc1h5aGhMSE1zTUNrc2N5czlOQ3hmS0dFc2N5eGtMbU55WXlrc2N5czlOQ3hmS0dFc2N5eGpMbXhsYm1kMGFDa3NjeXM5TkN4ZktHRXNjeXhrTG5WemFYcGxLU3h6S3owMExIQW9ZU3h6TEhJdVltbHVMbk5wZW1WVlZFWTRLR3dwS1N4ekt6MHlMSEFvWVN4ekxEQXBMSE1yUFRJc2FEMDlNU1ltS0hNclBUSXNjeXM5TWl4ekt6MDJMRjhvWVN4ekxHOHBMSE1yUFRRcE8zWmhjaUJuUFhJdVltbHVMbmR5YVhSbFZWUkdPQ2hoTEhNc2JDazdjbVYwZFhKdUlITXJQV2NzYUQwOU1DWW1LR0V1YzJWMEtHTXNjeWtzY3lzOVl5NXNaVzVuZEdncExITjlMSEl1WTNKalBYdDBZV0pzWlRwbWRXNWpkR2x2YmlncGUyWnZjaWgyWVhJZ1lUMXVaWGNnVldsdWRETXlRWEp5WVhrb01qVTJLU3h6UFRBN2N6d3lOVFk3Y3lzcktYdG1iM0lvZG1GeUlHdzljeXhrUFRBN1pEdzRPMlFyS3lsc0pqRS9iRDB6T1RnNE1qa3lNemcwWG13K1BqNHhPbXc5YkQ0K1BqRTdZVnR6WFQxc2ZYSmxkSFZ5YmlCaGZTZ3BMSFZ3WkdGMFpUcG1kVzVqZEdsdmJpaGhMSE1zYkN4a0tYdG1iM0lvZG1GeUlHZzlNRHRvUEdRN2FDc3JLV0U5Y2k1amNtTXVkR0ZpYkdWYktHRmVjMXRzSzJoZEtTWXlOVFZkWG1FK1BqNDRPM0psZEhWeWJpQmhmU3hqY21NNlpuVnVZM1JwYjI0b1lTeHpMR3dwZTNKbGRIVnliaUJ5TG1OeVl5NTFjR1JoZEdVb05ESTVORGsyTnpJNU5TeGhMSE1zYkNsZU5ESTVORGsyTnpJNU5YMTlMSEl1WVdSc1pYSTlablZ1WTNScGIyNG9ZU3h6TEd3cGUyWnZjaWgyWVhJZ1pEMHhMR2c5TUN4dlBYTXNYejF6SzJ3N2J6eGZPeWw3Wm05eUtIWmhjaUJ3UFUxaGRHZ3ViV2x1S0c4ck5UVTFNaXhmS1R0dlBIQTdLV1FyUFdGYmJ5c3JYU3hvS3oxa08yUTlaQ1UyTlRVeU1TeG9QV2dsTmpVMU1qRjljbVYwZFhKdUlHZzhQREUyZkdSOUxISXVZbWx1UFh0eVpXRmtWWE5vYjNKME9tWjFibU4wYVc5dUtHRXNjeWw3Y21WMGRYSnVJR0ZiYzExOFlWdHpLekZkUER3NGZTeDNjbWwwWlZWemFHOXlkRHBtZFc1amRHbHZiaWhoTEhNc2JDbDdZVnR6WFQxc0pqSTFOU3hoVzNNck1WMDliRDQrT0NZeU5UVjlMSEpsWVdSVmFXNTBPbVoxYm1OMGFXOXVLR0VzY3lsN2NtVjBkWEp1SUdGYmN5c3pYU29vTWpVMktqSTFOaW95TlRZcEt5aGhXM01yTWwwOFBERTJmR0ZiY3lzeFhUdzhPSHhoVzNOZEtYMHNkM0pwZEdWVmFXNTBPbVoxYm1OMGFXOXVLR0VzY3l4c0tYdGhXM05kUFd3bU1qVTFMR0ZiY3lzeFhUMXNQajQ0SmpJMU5TeGhXM01yTWwwOWJENCtNVFltTWpVMUxHRmJjeXN6WFQxc1BqNHlOQ1l5TlRWOUxISmxZV1JCVTBOSlNUcG1kVzVqZEdsdmJpaGhMSE1zYkNsN1ptOXlLSFpoY2lCa1BTSWlMR2c5TUR0b1BHdzdhQ3NyS1dRclBWTjBjbWx1Wnk1bWNtOXRRMmhoY2tOdlpHVW9ZVnR6SzJoZEtUdHlaWFIxY200Z1pIMHNkM0pwZEdWQlUwTkpTVHBtZFc1amRHbHZiaWhoTEhNc2JDbDdabTl5S0haaGNpQmtQVEE3WkR4c0xteGxibWQwYUR0a0t5c3BZVnR6SzJSZFBXd3VZMmhoY2tOdlpHVkJkQ2hrS1gwc2NHRmtPbVoxYm1OMGFXOXVLR0VwZTNKbGRIVnliaUJoTG14bGJtZDBhRHd5UHlJd0lpdGhPbUY5TEhKbFlXUlZWRVk0T21aMWJtTjBhVzl1S0dFc2N5eHNLWHRtYjNJb2RtRnlJR1E5SWlJc2FDeHZQVEE3Ynp4c08yOHJLeWxrS3owaUpTSXJjaTVpYVc0dWNHRmtLR0ZiY3l0dlhTNTBiMU4wY21sdVp5Z3hOaWtwTzNSeWVYdG9QV1JsWTI5a1pWVlNTVU52YlhCdmJtVnVkQ2hrS1gxallYUmphSHR5WlhSMWNtNGdjaTVpYVc0dWNtVmhaRUZUUTBsSktHRXNjeXhzS1gxeVpYUjFjbTRnYUgwc2QzSnBkR1ZWVkVZNE9tWjFibU4wYVc5dUtHRXNjeXhzS1h0bWIzSW9kbUZ5SUdROWJDNXNaVzVuZEdnc2FEMHdMRzg5TUR0dlBHUTdieXNyS1h0MllYSWdYejFzTG1Ob1lYSkRiMlJsUVhRb2J5azdhV1lvSVNoZkpqUXlPVFE1TmpjeE5qZ3BLV0ZiY3l0b1hUMWZMR2dyS3p0bGJITmxJR2xtS0NFb1h5WTBNamswT1RZMU1qUTRLU2xoVzNNcmFGMDlNVGt5ZkY4K1BqWXNZVnR6SzJnck1WMDlNVEk0ZkY4K1BqQW1Oak1zYUNzOU1qdGxiSE5sSUdsbUtDRW9YeVkwTWprME9UQXhOell3S1NsaFczTXJhRjA5TWpJMGZGOCtQakV5TEdGYmN5dG9LekZkUFRFeU9IeGZQajQySmpZekxHRmJjeXRvS3pKZFBURXlPSHhmUGo0d0pqWXpMR2dyUFRNN1pXeHpaU0JwWmlnaEtGOG1OREk1TkRrMk56STVOUzBvTVR3OE1qRXBLekVwS1dGYmN5dG9YVDB5TkRCOFh6NCtNVGdzWVZ0eksyZ3JNVjA5TVRJNGZGOCtQakV5SmpZekxHRmJjeXRvS3pKZFBURXlPSHhmUGo0MkpqWXpMR0ZiY3l0b0t6TmRQVEV5T0h4ZlBqNHdKall6TEdnclBUUTdaV3h6WlNCMGFISnZkeUpsSW4xeVpYUjFjbTRnYUgwc2MybDZaVlZVUmpnNlpuVnVZM1JwYjI0b1lTbDdabTl5S0haaGNpQnpQV0V1YkdWdVozUm9MR3c5TUN4a1BUQTdaRHh6TzJRckt5bDdkbUZ5SUdnOVlTNWphR0Z5UTI5a1pVRjBLR1FwTzJsbUtDRW9hQ1kwTWprME9UWTNNVFk0S1Nsc0t5czdaV3h6WlNCcFppZ2hLR2dtTkRJNU5EazJOVEkwT0NrcGJDczlNanRsYkhObElHbG1LQ0VvYUNZME1qazBPVEF4TnpZd0tTbHNLejB6TzJWc2MyVWdhV1lvSVNob0pqUXlPVFE1TmpjeU9UVXRLREU4UERJeEtTc3hLU2xzS3owME8yVnNjMlVnZEdoeWIzY2laU0o5Y21WMGRYSnVJR3g5ZlN4eUxrWTllMzBzY2k1R0xtUmxabXhoZEdWU1lYYzlablZ1WTNScGIyNG9ZU3h6TEd3c1pDbDdkbUZ5SUdnOVcxc3dMREFzTUN3d0xEQmRMRnMwTERRc09DdzBMREJkTEZzMExEVXNNVFlzT0N3d1hTeGJOQ3cyTERFMkxERTJMREJkTEZzMExERXdMREUyTERNeUxEQmRMRnM0TERFMkxETXlMRE15TERCZExGczRMREUyTERFeU9Dd3hNamdzTUYwc1d6Z3NNeklzTVRJNExESTFOaXd3WFN4Yk16SXNNVEk0TERJMU9Dd3hNREkwTERGZExGc3pNaXd5TlRnc01qVTRMRFF3T1RZc01WMWRMRzg5YUZ0a1hTeGZQWEl1Umk1VkxIQTljaTVHTGw5bmIyOWtTVzVrWlhnN2NpNUdMbDlvWVhOb08zWmhjaUJqUFhJdVJpNWZjSFYwYzBVc1p6MHdMR1U5YkR3OE15eDBQVEFzYVQxaExteGxibWQwYUR0cFppaGtQVDB3S1h0bWIzSW9PMmM4YVRzcGUzWmhjaUJtUFUxaGRHZ3ViV2x1S0RZMU5UTTFMR2t0WnlrN1l5aHpMR1VzWnl0bVBUMXBQekU2TUNrc1pUMXlMa1l1WDJOdmNIbEZlR0ZqZENoaExHY3NaaXh6TEdVck9Da3NaeXM5Wm4xeVpYUjFjbTRnWlQ0K1BqTjlkbUZ5SUhVOVh5NXNhWFJ6TEhZOVh5NXpkSEowTEhrOVh5NXdjbVYyTEcwOU1DeGlQVEFzZUQwd0xGTTlNQ3hWUFRBc1JUMHdPMlp2Y2locFBqSW1KaWhGUFhJdVJpNWZhR0Z6YUNoaExEQXBMSFpiUlYwOU1Da3NaejB3TzJjOGFUdG5LeXNwZTJsbUtGVTlSU3huS3pFOGFTMHlLWHRGUFhJdVJpNWZhR0Z6YUNoaExHY3JNU2s3ZG1GeUlIYzlaeXN4SmpNeU56WTNPM2xiZDEwOWRsdEZYU3gyVzBWZFBYZDlhV1lvZER3OVp5bDdLRzArTVRSbE0zeDhZajR5TmpZNU55a21KbWt0Wno0eE1EQW1KaWgwUEdjbUppaDFXMjFkUFdjdGRDeHRLejB5TEhROVp5a3NaVDF5TGtZdVgzZHlhWFJsUW14dlkyc29aejA5YVMweGZIeDBQVDFwUHpFNk1DeDFMRzBzVXl4aExIZ3NaeTE0TEhNc1pTa3NiVDFpUFZNOU1DeDRQV2NwTzNaaGNpQkJQVEE3Wnp4cExUSW1KaWhCUFhJdVJpNWZZbVZ6ZEUxaGRHTm9LR0VzWnl4NUxGVXNUV0YwYUM1dGFXNG9iMXN5WFN4cExXY3BMRzliTTEwcEtUdDJZWElnWmoxQlBqNCtNVFlzU1QxQkpqWTFOVE0xTzJsbUtFRWhQVEFwZTNaaGNpQm1QVUUrUGo0eE5peEpQVUVtTmpVMU16VXNSajF3S0dZc1h5NXZaakFwTzE4dWJHaHpkRnN5TlRjclJsMHJLenQyWVhJZ1VEMXdLRWtzWHk1a1pqQXBPMTh1WkdoemRGdFFYU3NyTEZNclBWOHVaWGhpVzBaZEsxOHVaSGhpVzFCZExIVmJiVjA5Wmp3OE1qTjhaeTEwTEhWYmJTc3hYVDFKUER3eE5ueEdQRHc0ZkZBc2JTczlNaXgwUFdjclpuMWxiSE5sSUY4dWJHaHpkRnRoVzJkZFhTc3JPMklySzMxOVptOXlLQ2g0SVQxbmZIeGhMbXhsYm1kMGFEMDlNQ2ttSmloMFBHY21KaWgxVzIxZFBXY3RkQ3h0S3oweUxIUTlaeWtzWlQxeUxrWXVYM2R5YVhSbFFteHZZMnNvTVN4MUxHMHNVeXhoTEhnc1p5MTRMSE1zWlNrc2JUMHdMR0k5TUN4dFBXSTlVejB3TEhnOVp5azdaU1kzT3lsbEt5czdjbVYwZFhKdUlHVStQajR6ZlN4eUxrWXVYMkpsYzNSTllYUmphRDFtZFc1amRHbHZiaWhoTEhNc2JDeGtMR2dzYnlsN2RtRnlJRjg5Y3lZek1qYzJOeXh3UFd4YlgxMHNZejFmTFhBck16STNOamdtTXpJM05qYzdhV1lvY0QwOVgzeDhaQ0U5Y2k1R0xsOW9ZWE5vS0dFc2N5MWpLU2x5WlhSMWNtNGdNRHRtYjNJb2RtRnlJR2M5TUN4bFBUQXNkRDFOWVhSb0xtMXBiaWd6TWpjMk55eHpLVHRqUEQxMEppWXRMVzhoUFRBbUpuQWhQVjg3S1h0cFppaG5QVDB3Zkh4aFczTXJaMTA5UFdGYmN5dG5MV05kS1h0MllYSWdhVDF5TGtZdVgyaHZkMHh2Ym1jb1lTeHpMR01wTzJsbUtHaytaeWw3YVdZb1p6MXBMR1U5WXl4blBqMW9LV0p5WldGck8yTXJNanhwSmlZb2FUMWpLeklwTzJadmNpaDJZWElnWmowd0xIVTlNRHQxUEdrdE1qdDFLeXNwZTNaaGNpQjJQWE10WXl0MUt6TXlOelk0SmpNeU56WTNMSGs5YkZ0MlhTeHRQWFl0ZVNzek1qYzJPQ1l6TWpjMk56dHRQbVltSmlobVBXMHNjRDEyS1gxOWZWODljQ3h3UFd4YlgxMHNZeXM5WHkxd0t6TXlOelk0SmpNeU56WTNmWEpsZEhWeWJpQm5QRHd4Tm54bGZTeHlMa1l1WDJodmQweHZibWM5Wm5WdVkzUnBiMjRvWVN4ekxHd3BlMmxtS0dGYmMxMGhQV0ZiY3kxc1hYeDhZVnR6S3pGZElUMWhXM01yTVMxc1hYeDhZVnR6S3pKZElUMWhXM01yTWkxc1hTbHlaWFIxY200Z01EdDJZWElnWkQxekxHZzlUV0YwYUM1dGFXNG9ZUzVzWlc1bmRHZ3NjeXN5TlRncE8yWnZjaWh6S3owek8zTThhQ1ltWVZ0elhUMDlZVnR6TFd4ZE95bHpLeXM3Y21WMGRYSnVJSE10Wkgwc2NpNUdMbDlvWVhOb1BXWjFibU4wYVc5dUtHRXNjeWw3Y21WMGRYSnVLR0ZiYzEwOFBEaDhZVnR6S3pGZEtTc29ZVnR6S3pKZFBEdzBLU1kyTlRVek5YMHNjaTV6WVhabFpEMHdMSEl1Umk1ZmQzSnBkR1ZDYkc5amF6MW1kVzVqZEdsdmJpaGhMSE1zYkN4a0xHZ3NieXhmTEhBc1l5bDdkbUZ5SUdjOWNpNUdMbFVzWlQxeUxrWXVYM0IxZEhOR0xIUTljaTVHTGw5d2RYUnpSU3hwTEdZc2RTeDJMSGtzYlN4aUxIZ3NVenRuTG14b2MzUmJNalUyWFNzckxHazljaTVHTG1kbGRGUnlaV1Z6S0Nrc1pqMXBXekJkTEhVOWFWc3hYU3gyUFdsYk1sMHNlVDFwV3pOZExHMDlhVnMwWFN4aVBXbGJOVjBzZUQxcFd6WmRMRk05YVZzM1hUdDJZWElnVlQwb1l5c3pKamMvT0Mwb1l5c3pKamNwT2pBcEt6TXlLeWhmUER3ektTeEZQV1FyY2k1R0xtTnZiblJUYVhwbEtHY3VabXgwY21WbExHY3ViR2h6ZENrcmNpNUdMbU52Ym5SVGFYcGxLR2N1Wm1SMGNtVmxMR2N1WkdoemRDa3NkejFrSzNJdVJpNWpiMjUwVTJsNlpTaG5MbXgwY21WbExHY3ViR2h6ZENrcmNpNUdMbU52Ym5SVGFYcGxLR2N1WkhSeVpXVXNaeTVrYUhOMEtUdDNLejB4TkNzekttSXJjaTVHTG1OdmJuUlRhWHBsS0djdWFYUnlaV1VzWnk1cGFITjBLU3NvWnk1cGFITjBXekUyWFNveUsyY3VhV2h6ZEZzeE4xMHFNeXRuTG1sb2MzUmJNVGhkS2pjcE8yWnZjaWgyWVhJZ1FUMHdPMEU4TWpnMk8wRXJLeWxuTG14b2MzUmJRVjA5TUR0bWIzSW9kbUZ5SUVFOU1EdEJQRE13TzBFckt5bG5MbVJvYzNSYlFWMDlNRHRtYjNJb2RtRnlJRUU5TUR0QlBERTVPMEVyS3lsbkxtbG9jM1JiUVYwOU1EdDJZWElnU1QxVlBFVW1KbFU4ZHo4d09rVThkejh4T2pJN2FXWW9aU2h3TEdNc1lTa3NaU2h3TEdNck1TeEpLU3hqS3owekxFazlQVEFwZTJadmNpZzdZeVkzT3lsakt5czdZejF5TGtZdVgyTnZjSGxGZUdGamRDaG9MRzhzWHl4d0xHTXBmV1ZzYzJWN2RtRnlJRVlzVUR0cFppaEpQVDB4SmlZb1JqMW5MbVpzZEhKbFpTeFFQV2N1Wm1SMGNtVmxLU3hKUFQweUtYdHlMa1l1YldGclpVTnZaR1Z6S0djdWJIUnlaV1VzWmlrc2NpNUdMbkpsZGtOdlpHVnpLR2N1YkhSeVpXVXNaaWtzY2k1R0xtMWhhMlZEYjJSbGN5aG5MbVIwY21WbExIVXBMSEl1Umk1eVpYWkRiMlJsY3lobkxtUjBjbVZsTEhVcExISXVSaTV0WVd0bFEyOWtaWE1vWnk1cGRISmxaU3gyS1N4eUxrWXVjbVYyUTI5a1pYTW9aeTVwZEhKbFpTeDJLU3hHUFdjdWJIUnlaV1VzVUQxbkxtUjBjbVZsTEhRb2NDeGpMSGt0TWpVM0tTeGpLejAxTEhRb2NDeGpMRzB0TVNrc1l5czlOU3gwS0hBc1l5eGlMVFFwTEdNclBUUTdabTl5S0haaGNpQkVQVEE3UkR4aU8wUXJLeWwwS0hBc1l5dEVLak1zWnk1cGRISmxaVnNvWnk1dmNtUnlXMFJkUER3eEtTc3hYU2s3WXlzOU15cGlMR005Y2k1R0xsOWpiMlJsVkdsdWVTaDRMR2N1YVhSeVpXVXNjQ3hqS1N4alBYSXVSaTVmWTI5a1pWUnBibmtvVXl4bkxtbDBjbVZsTEhBc1l5bDlabTl5S0haaGNpQnJQVzhzVGowd08wNDhiRHRPS3oweUtYdG1iM0lvZG1GeUlFMDljMXRPWFN4eFBVMCtQajR5TXl4SFBXc3JLRTBtS0RFOFBESXpLUzB4S1R0clBFYzdLV005Y2k1R0xsOTNjbWwwWlV4cGRDaG9XMnNySzEwc1JpeHdMR01wTzJsbUtIRWhQVEFwZTNaaGNpQlpQWE5iVGlzeFhTeFVQVmsrUGpFMkxHZGxQVmsrUGpnbU1qVTFMSEpsUFZrbU1qVTFPMk05Y2k1R0xsOTNjbWwwWlV4cGRDZ3lOVGNyWjJVc1JpeHdMR01wTEhRb2NDeGpMSEV0Wnk1dlpqQmJaMlZkS1N4akt6MW5MbVY0WWx0blpWMHNZejF5TGtZdVgzZHlhWFJsVEdsMEtISmxMRkFzY0N4aktTeGxLSEFzWXl4VUxXY3VaR1l3VzNKbFhTa3NZeXM5Wnk1a2VHSmJjbVZkTEdzclBYRjlmV005Y2k1R0xsOTNjbWwwWlV4cGRDZ3lOVFlzUml4d0xHTXBmWEpsZEhWeWJpQmpmU3h5TGtZdVgyTnZjSGxGZUdGamREMW1kVzVqZEdsdmJpaGhMSE1zYkN4a0xHZ3BlM1poY2lCdlBXZytQajR6TzNKbGRIVnliaUJrVzI5ZFBXd3NaRnR2S3pGZFBXdytQajQ0TEdSYmJ5c3lYVDB5TlRVdFpGdHZYU3hrVzI4ck0xMDlNalUxTFdSYmJ5c3hYU3h2S3owMExHUXVjMlYwS0c1bGR5QlZhVzUwT0VGeWNtRjVLR0V1WW5WbVptVnlMSE1zYkNrc2J5a3NhQ3NvYkNzMFBEd3pLWDBzY2k1R0xtZGxkRlJ5WldWelBXWjFibU4wYVc5dUtDbDdabTl5S0haaGNpQmhQWEl1Umk1VkxITTljaTVHTGw5b2RXWlVjbVZsS0dFdWJHaHpkQ3hoTG14MGNtVmxMREUxS1N4c1BYSXVSaTVmYUhWbVZISmxaU2hoTG1Sb2MzUXNZUzVrZEhKbFpTd3hOU2tzWkQxYlhTeG9QWEl1Umk1ZmJHVnVRMjlrWlhNb1lTNXNkSEpsWlN4a0tTeHZQVnRkTEY4OWNpNUdMbDlzWlc1RGIyUmxjeWhoTG1SMGNtVmxMRzhwTEhBOU1EdHdQR1F1YkdWdVozUm9PM0FyUFRJcFlTNXBhSE4wVzJSYmNGMWRLeXM3Wm05eUtIWmhjaUJ3UFRBN2NEeHZMbXhsYm1kMGFEdHdLejB5S1dFdWFXaHpkRnR2VzNCZFhTc3JPMlp2Y2loMllYSWdZejF5TGtZdVgyaDFabFJ5WldVb1lTNXBhSE4wTEdFdWFYUnlaV1VzTnlrc1p6MHhPVHRuUGpRbUptRXVhWFJ5WldWYktHRXViM0prY2x0bkxURmRQRHd4S1NzeFhUMDlNRHNwWnkwdE8zSmxkSFZ5Ymx0ekxHd3NZeXhvTEY4c1p5eGtMRzlkZlN4eUxrWXVaMlYwVTJWamIyNWtQV1oxYm1OMGFXOXVLR0VwZTJadmNpaDJZWElnY3oxYlhTeHNQVEE3YkR4aExteGxibWQwYUR0c0t6MHlLWE11Y0hWemFDaGhXMndyTVYwcE8zSmxkSFZ5YmlCemZTeHlMa1l1Ym05dVdtVnliejFtZFc1amRHbHZiaWhoS1h0bWIzSW9kbUZ5SUhNOUlpSXNiRDB3TzJ3OFlTNXNaVzVuZEdnN2JDczlNaWxoVzJ3ck1WMGhQVEFtSmloekt6MG9iRDQrTVNrcklpd2lLVHR5WlhSMWNtNGdjMzBzY2k1R0xtTnZiblJUYVhwbFBXWjFibU4wYVc5dUtHRXNjeWw3Wm05eUtIWmhjaUJzUFRBc1pEMHdPMlE4Y3k1c1pXNW5kR2c3WkNzcktXd3JQWE5iWkYwcVlWc29aRHc4TVNrck1WMDdjbVYwZFhKdUlHeDlMSEl1Umk1ZlkyOWtaVlJwYm5rOVpuVnVZM1JwYjI0b1lTeHpMR3dzWkNsN1ptOXlLSFpoY2lCb1BUQTdhRHhoTG14bGJtZDBhRHRvS3oweUtYdDJZWElnYnoxaFcyaGRMRjg5WVZ0b0t6RmRPMlE5Y2k1R0xsOTNjbWwwWlV4cGRDaHZMSE1zYkN4a0tUdDJZWElnY0QxdlBUMHhOajh5T204OVBURTNQek02Tnp0dlBqRTFKaVlvY2k1R0xsOXdkWFJ6UlNoc0xHUXNYeXh3S1N4a0t6MXdLWDF5WlhSMWNtNGdaSDBzY2k1R0xsOXNaVzVEYjJSbGN6MW1kVzVqZEdsdmJpaGhMSE1wZTJadmNpaDJZWElnYkQxaExteGxibWQwYUR0c0lUMHlKaVpoVzJ3dE1WMDlQVEE3S1d3dFBUSTdabTl5S0haaGNpQmtQVEE3WkR4c08yUXJQVElwZTNaaGNpQm9QV0ZiWkNzeFhTeHZQV1FyTXp4c1AyRmJaQ3N6WFRvdE1TeGZQV1FyTlR4c1AyRmJaQ3MxWFRvdE1TeHdQV1E5UFRBL0xURTZZVnRrTFRGZE8ybG1LR2c5UFRBbUptODlQV2dtSmw4OVBXZ3BlMlp2Y2loMllYSWdZejFrS3pVN1l5c3lQR3dtSm1GYll5c3lYVDA5YURzcFl5czlNanQyWVhJZ1p6MU5ZWFJvTG0xcGJpaGpLekV0WkQ0K1BqRXNNVE00S1R0blBERXhQM011Y0hWemFDZ3hOeXhuTFRNcE9uTXVjSFZ6YUNneE9DeG5MVEV4S1N4a0t6MW5Lakl0TW4xbGJITmxJR2xtS0dnOVBYQW1KbTg5UFdnbUpsODlQV2dwZTJadmNpaDJZWElnWXoxa0t6VTdZeXN5UEd3bUptRmJZeXN5WFQwOWFEc3BZeXM5TWp0MllYSWdaejFOWVhSb0xtMXBiaWhqS3pFdFpENCtQakVzTmlrN2N5NXdkWE5vS0RFMkxHY3RNeWtzWkNzOVp5b3lMVEo5Wld4elpTQnpMbkIxYzJnb2FDd3dLWDF5WlhSMWNtNGdiRDQrUGpGOUxISXVSaTVmYUhWbVZISmxaVDFtZFc1amRHbHZiaWhoTEhNc2JDbDdkbUZ5SUdROVcxMHNhRDFoTG14bGJtZDBhQ3h2UFhNdWJHVnVaM1JvTEY4OU1EdG1iM0lvWHowd08xODhienRmS3oweUtYTmJYMTA5TUN4elcxOHJNVjA5TUR0bWIzSW9YejB3TzE4OGFEdGZLeXNwWVZ0ZlhTRTlNQ1ltWkM1d2RYTm9LSHRzYVhRNlh5eG1PbUZiWDExOUtUdDJZWElnY0Qxa0xteGxibWQwYUN4alBXUXVjMnhwWTJVb01DazdhV1lvY0QwOU1DbHlaWFIxY200Z01EdHBaaWh3UFQweEtYdDJZWElnWnoxa1d6QmRMbXhwZEN4alBXYzlQVEEvTVRvd08zSmxkSFZ5YmlCeld5aG5QRHd4S1NzeFhUMHhMSE5iS0dNOFBERXBLekZkUFRFc01YMWtMbk52Y25Rb1puVnVZM1JwYjI0b2VTeHRLWHR5WlhSMWNtNGdlUzVtTFcwdVpuMHBPM1poY2lCbFBXUmJNRjBzZEQxa1d6RmRMR2s5TUN4bVBURXNkVDB5TzJadmNpaGtXekJkUFh0c2FYUTZMVEVzWmpwbExtWXJkQzVtTEd3NlpTeHlPblFzWkRvd2ZUdG1JVDF3TFRFN0tXa2hQV1ltSmloMVBUMXdmSHhrVzJsZExtWThaRnQxWFM1bUtUOWxQV1JiYVNzclhUcGxQV1JiZFNzclhTeHBJVDFtSmlZb2RUMDljSHg4WkZ0cFhTNW1QR1JiZFYwdVppay9kRDFrVzJrcksxMDZkRDFrVzNVcksxMHNaRnRtS3l0ZFBYdHNhWFE2TFRFc1pqcGxMbVlyZEM1bUxHdzZaU3h5T25SOU8zWmhjaUIyUFhJdVJpNXpaWFJFWlhCMGFDaGtXMll0TVYwc01DazdabTl5S0hZK2JDWW1LSEl1Umk1eVpYTjBjbWxqZEVSbGNIUm9LR01zYkN4MktTeDJQV3dwTEY4OU1EdGZQSEE3WHlzcktYTmJLR05iWDEwdWJHbDBQRHd4S1NzeFhUMWpXMTlkTG1RN2NtVjBkWEp1SUhaOUxISXVSaTV6WlhSRVpYQjBhRDFtZFc1amRHbHZiaWhoTEhNcGUzSmxkSFZ5YmlCaExteHBkQ0U5TFRFL0tHRXVaRDF6TEhNcE9rMWhkR2d1YldGNEtISXVSaTV6WlhSRVpYQjBhQ2hoTG13c2N5c3hLU3h5TGtZdWMyVjBSR1Z3ZEdnb1lTNXlMSE1yTVNrcGZTeHlMa1l1Y21WemRISnBZM1JFWlhCMGFEMW1kVzVqZEdsdmJpaGhMSE1zYkNsN2RtRnlJR1E5TUN4b1BURThQR3d0Y3l4dlBUQTdabTl5S0dFdWMyOXlkQ2htZFc1amRHbHZiaWh3TEdNcGUzSmxkSFZ5YmlCakxtUTlQWEF1WkQ5d0xtWXRZeTVtT21NdVpDMXdMbVI5S1N4a1BUQTdaRHhoTG14bGJtZDBhQ1ltWVZ0a1hTNWtQbk03WkNzcktYdDJZWElnWHoxaFcyUmRMbVE3WVZ0a1hTNWtQWE1zYnlzOWFDMG9NVHc4YkMxZktYMW1iM0lvYnoxdlBqNCtiQzF6TzI4K01Ec3BlM1poY2lCZlBXRmJaRjB1WkR0ZlBITS9LR0ZiWkYwdVpDc3JMRzh0UFRFOFBITXRYeTB4S1Rwa0t5dDlabTl5S0R0a1BqMHdPMlF0TFNsaFcyUmRMbVE5UFhNbUptODhNQ1ltS0dGYlpGMHVaQzB0TEc4ckt5azdieUU5TUNZbVkyOXVjMjlzWlM1c2IyY29JbVJsWW5RZ2JHVm1kQ0lwZlN4eUxrWXVYMmR2YjJSSmJtUmxlRDFtZFc1amRHbHZiaWhoTEhNcGUzWmhjaUJzUFRBN2NtVjBkWEp1SUhOYmJId3hObDA4UFdFbUppaHNmRDB4Tmlrc2MxdHNmRGhkUEQxaEppWW9iSHc5T0Nrc2MxdHNmRFJkUEQxaEppWW9iSHc5TkNrc2MxdHNmREpkUEQxaEppWW9iSHc5TWlrc2MxdHNmREZkUEQxaEppWW9iSHc5TVNrc2JIMHNjaTVHTGw5M2NtbDBaVXhwZEQxbWRXNWpkR2x2YmloaExITXNiQ3hrS1h0eVpYUjFjbTRnY2k1R0xsOXdkWFJ6Umloc0xHUXNjMXRoUER3eFhTa3NaQ3R6V3loaFBEd3hLU3N4WFgwc2NpNUdMbWx1Wm14aGRHVTlablZ1WTNScGIyNG9ZU3h6S1h0MllYSWdiRDFWYVc1ME9FRnljbUY1TzJsbUtHRmJNRjA5UFRNbUptRmJNVjA5UFRBcGNtVjBkWEp1SUhOOGZHNWxkeUJzS0RBcE8zWmhjaUJrUFhJdVJpeG9QV1F1WDJKcGRITkdMRzg5WkM1ZlltbDBjMFVzWHoxa0xsOWtaV052WkdWVWFXNTVMSEE5WkM1dFlXdGxRMjlrWlhNc1l6MWtMbU52WkdWek1tMWhjQ3huUFdRdVgyZGxkREUzTEdVOVpDNVZMSFE5Y3owOWJuVnNiRHQwSmlZb2N6MXVaWGNnYkNoaExteGxibWQwYUQ0K1BqSThQRE1wS1R0bWIzSW9kbUZ5SUdrOU1DeG1QVEFzZFQwd0xIWTlNQ3g1UFRBc2JUMHdMR0k5TUN4NFBUQXNVejB3TEZVc1JUdHBQVDB3T3lsN2FXWW9hVDFvS0dFc1V5d3hLU3htUFdnb1lTeFRLekVzTWlrc1V5czlNeXhtUFQwd0tYdFRKamNtSmloVEt6MDRMU2hUSmpjcEtUdDJZWElnZHowb1V6NCtQak1wS3pRc1FUMWhXM2N0TkYxOFlWdDNMVE5kUER3NE8zUW1KaWh6UFhJdVJpNWZZMmhsWTJzb2N5eDRLMEVwS1N4ekxuTmxkQ2h1WlhjZ2JDaGhMbUoxWm1abGNpeGhMbUo1ZEdWUFptWnpaWFFyZHl4QktTeDRLU3hUUFhjclFUdzhNeXg0S3oxQk8yTnZiblJwYm5WbGZXbG1LSFFtSmloelBYSXVSaTVmWTJobFkyc29jeXg0S3lneFBEd3hOeWtwS1N4bVBUMHhKaVlvVlQxbExtWnNiV0Z3TEVVOVpTNW1aRzFoY0N4dFBUVXhNU3hpUFRNeEtTeG1QVDB5S1h0MVBXOG9ZU3hUTERVcEt6STFOeXgyUFc4b1lTeFRLelVzTlNrck1TeDVQVzhvWVN4VEt6RXdMRFFwS3pRc1V5czlNVFE3Wm05eUtIWmhjaUJKUFRBN1NUd3pPRHRKS3oweUtXVXVhWFJ5WldWYlNWMDlNQ3hsTG1sMGNtVmxXMGtyTVYwOU1EdG1iM0lvZG1GeUlFWTlNU3hKUFRBN1NUeDVPMGtyS3lsN2RtRnlJRkE5YnloaExGTXJTU296TERNcE8yVXVhWFJ5WldWYktHVXViM0prY2x0SlhUdzhNU2tyTVYwOVVDeFFQa1ltSmloR1BWQXBmVk1yUFRNcWVTeHdLR1V1YVhSeVpXVXNSaWtzWXlobExtbDBjbVZsTEVZc1pTNXBiV0Z3S1N4VlBXVXViRzFoY0N4RlBXVXVaRzFoY0N4VFBWOG9aUzVwYldGd0xDZ3hQRHhHS1MweExIVXJkaXhoTEZNc1pTNTBkSEpsWlNrN2RtRnlJRVE5WkM1ZlkyOXdlVTkxZENobExuUjBjbVZsTERBc2RTeGxMbXgwY21WbEtUdHRQU2d4UER4RUtTMHhPM1poY2lCclBXUXVYMk52Y0hsUGRYUW9aUzUwZEhKbFpTeDFMSFlzWlM1a2RISmxaU2s3WWowb01UdzhheWt0TVN4d0tHVXViSFJ5WldVc1JDa3NZeWhsTG14MGNtVmxMRVFzVlNrc2NDaGxMbVIwY21WbExHc3BMR01vWlM1a2RISmxaU3hyTEVVcGZXWnZjaWc3T3lsN2RtRnlJRTQ5VlZ0bktHRXNVeWttYlYwN1V5czlUaVl4TlR0MllYSWdUVDFPUGo0K05EdHBaaWdoS0UwK1BqNDRLU2x6VzNncksxMDlUVHRsYkhObGUybG1LRTA5UFRJMU5pbGljbVZoYXp0MllYSWdjVDE0SzAwdE1qVTBPMmxtS0UwK01qWTBLWHQyWVhJZ1J6MWxMbXhrWldaYlRTMHlOVGRkTzNFOWVDc29SejQrUGpNcEsyOG9ZU3hUTEVjbU55a3NVeXM5UnlZM2ZYWmhjaUJaUFVWYlp5aGhMRk1wSm1KZE8xTXJQVmttTVRVN2RtRnlJRlE5V1Q0K1BqUXNaMlU5WlM1a1pHVm1XMVJkTEhKbFBTaG5aVDQrUGpRcEsyZ29ZU3hUTEdkbEpqRTFLVHRtYjNJb1V5czlaMlVtTVRVc2RDWW1LSE05Y2k1R0xsOWphR1ZqYXloekxIZ3JLREU4UERFM0tTa3BPM2c4Y1RzcGMxdDRYVDF6VzNnckt5MXlaVjBzYzF0NFhUMXpXM2dyS3kxeVpWMHNjMXQ0WFQxelczZ3JLeTF5WlYwc2MxdDRYVDF6VzNnckt5MXlaVjA3ZUQxeGZYMTljbVYwZFhKdUlITXViR1Z1WjNSb1BUMTRQM002Y3k1emJHbGpaU2d3TEhncGZTeHlMa1l1WDJOb1pXTnJQV1oxYm1OMGFXOXVLR0VzY3lsN2RtRnlJR3c5WVM1c1pXNW5kR2c3YVdZb2N6dzliQ2x5WlhSMWNtNGdZVHQyWVhJZ1pEMXVaWGNnVldsdWREaEJjbkpoZVNoTllYUm9MbTFoZUNoc1BEd3hMSE1wS1R0eVpYUjFjbTRnWkM1elpYUW9ZU3d3S1N4a2ZTeHlMa1l1WDJSbFkyOWtaVlJwYm5rOVpuVnVZM1JwYjI0b1lTeHpMR3dzWkN4b0xHOHBlMlp2Y2loMllYSWdYejF5TGtZdVgySnBkSE5GTEhBOWNpNUdMbDluWlhReE55eGpQVEE3WXp4c095bDdkbUZ5SUdjOVlWdHdLR1FzYUNrbWMxMDdhQ3M5WnlZeE5UdDJZWElnWlQxblBqNCtORHRwWmlobFBEMHhOU2x2VzJOZFBXVXNZeXNyTzJWc2MyVjdkbUZ5SUhROU1DeHBQVEE3WlQwOU1UWS9LR2s5TXl0ZktHUXNhQ3d5S1N4b0t6MHlMSFE5YjF0akxURmRLVHBsUFQweE56OG9hVDB6SzE4b1pDeG9MRE1wTEdnclBUTXBPbVU5UFRFNEppWW9hVDB4TVN0ZktHUXNhQ3czS1N4b0t6MDNLVHRtYjNJb2RtRnlJR1k5WXl0cE8yTThaanNwYjF0alhUMTBMR01ySzMxOWNtVjBkWEp1SUdoOUxISXVSaTVmWTI5d2VVOTFkRDFtZFc1amRHbHZiaWhoTEhNc2JDeGtLWHRtYjNJb2RtRnlJR2c5TUN4dlBUQXNYejFrTG14bGJtZDBhRDQrUGpFN2J6eHNPeWw3ZG1GeUlIQTlZVnR2SzNOZE8yUmJienc4TVYwOU1DeGtXeWh2UER3eEtTc3hYVDF3TEhBK2FDWW1LR2c5Y0Nrc2J5c3JmV1p2Y2lnN2J6eGZPeWxrVzI4OFBERmRQVEFzWkZzb2J6dzhNU2tyTVYwOU1DeHZLeXM3Y21WMGRYSnVJR2g5TEhJdVJpNXRZV3RsUTI5a1pYTTlablZ1WTNScGIyNG9ZU3h6S1h0bWIzSW9kbUZ5SUd3OWNpNUdMbFVzWkQxaExteGxibWQwYUN4b0xHOHNYeXh3TEdNc1p6MXNMbUpzWDJOdmRXNTBMSEE5TUR0d1BEMXpPM0FyS3lsblczQmRQVEE3Wm05eUtIQTlNVHR3UEdRN2NDczlNaWxuVzJGYmNGMWRLeXM3ZG1GeUlHVTliQzV1WlhoMFgyTnZaR1U3Wm05eUtHZzlNQ3huV3pCZFBUQXNiejB4TzI4OFBYTTdieXNyS1dnOWFDdG5XMjh0TVYwOFBERXNaVnR2WFQxb08yWnZjaWhmUFRBN1h6eGtPMThyUFRJcFl6MWhXMThyTVYwc1l5RTlNQ1ltS0dGYlgxMDlaVnRqWFN4bFcyTmRLeXNwZlN4eUxrWXVZMjlrWlhNeWJXRndQV1oxYm1OMGFXOXVLR0VzY3l4c0tYdG1iM0lvZG1GeUlHUTlZUzVzWlc1bmRHZ3NhRDF5TGtZdVZTeHZQV2d1Y21WMk1UVXNYejB3TzE4OFpEdGZLejB5S1dsbUtHRmJYeXN4WFNFOU1DbG1iM0lvZG1GeUlIQTlYejQrTVN4alBXRmJYeXN4WFN4blBYQThQRFI4WXl4bFBYTXRZeXgwUFdGYlgxMDhQR1VzYVQxMEt5Z3hQRHhsS1R0MElUMXBPeWw3ZG1GeUlHWTliMXQwWFQ0K1BqRTFMWE03YkZ0bVhUMW5MSFFySzMxOUxISXVSaTV5WlhaRGIyUmxjejFtZFc1amRHbHZiaWhoTEhNcGUyWnZjaWgyWVhJZ2JEMXlMa1l1VlM1eVpYWXhOU3hrUFRFMUxYTXNhRDB3TzJnOFlTNXNaVzVuZEdnN2FDczlNaWw3ZG1GeUlHODlZVnRvWFR3OGN5MWhXMmdyTVYwN1lWdG9YVDFzVzI5ZFBqNCtaSDE5TEhJdVJpNWZjSFYwYzBVOVpuVnVZM1JwYjI0b1lTeHpMR3dwZTJ3OWJEdzhLSE1tTnlrN2RtRnlJR1E5Y3o0K1BqTTdZVnRrWFh3OWJDeGhXMlFyTVYxOFBXdytQajQ0ZlN4eUxrWXVYM0IxZEhOR1BXWjFibU4wYVc5dUtHRXNjeXhzS1h0c1BXdzhQQ2h6SmpjcE8zWmhjaUJrUFhNK1BqNHpPMkZiWkYxOFBXd3NZVnRrS3pGZGZEMXNQajQrT0N4aFcyUXJNbDE4UFd3K1BqNHhObjBzY2k1R0xsOWlhWFJ6UlQxbWRXNWpkR2x2YmloaExITXNiQ2w3Y21WMGRYSnVLR0ZiY3o0K1BqTmRmR0ZiS0hNK1BqNHpLU3N4WFR3OE9DaytQajRvY3lZM0tTWW9NVHc4YkNrdE1YMHNjaTVHTGw5aWFYUnpSajFtZFc1amRHbHZiaWhoTEhNc2JDbDdjbVYwZFhKdUtHRmJjejQrUGpOZGZHRmJLSE0rUGo0ektTc3hYVHc4T0h4aFd5aHpQajQrTXlrck1sMDhQREUyS1Q0K1BpaHpKamNwSmlneFBEeHNLUzB4ZlN4eUxrWXVYMmRsZERFM1BXWjFibU4wYVc5dUtHRXNjeWw3Y21WMGRYSnVLR0ZiY3o0K1BqTmRmR0ZiS0hNK1BqNHpLU3N4WFR3OE9IeGhXeWh6UGo0K015a3JNbDA4UERFMktUNCtQaWh6SmpjcGZTeHlMa1l1WDJkbGRESTFQV1oxYm1OMGFXOXVLR0VzY3lsN2NtVjBkWEp1S0dGYmN6NCtQak5kZkdGYktITStQajR6S1NzeFhUdzhPSHhoV3loelBqNCtNeWtyTWwwOFBERTJmR0ZiS0hNK1BqNHpLU3N6WFR3OE1qUXBQajQrS0hNbU55bDlMSEl1Umk1VlBXWjFibU4wYVc5dUtDbDdkbUZ5SUdFOVZXbHVkREUyUVhKeVlYa3NjejFWYVc1ME16SkJjbkpoZVR0eVpYUjFjbTU3Ym1WNGRGOWpiMlJsT201bGR5QmhLREUyS1N4aWJGOWpiM1Z1ZERwdVpYY2dZU2d4Tmlrc2IzSmtjanBiTVRZc01UY3NNVGdzTUN3NExEY3NPU3cyTERFd0xEVXNNVEVzTkN3eE1pd3pMREV6TERJc01UUXNNU3d4TlYwc2IyWXdPbHN6TERRc05TdzJMRGNzT0N3NUxERXdMREV4TERFekxERTFMREUzTERFNUxESXpMREkzTERNeExETTFMRFF6TERVeExEVTVMRFkzTERnekxEazVMREV4TlN3eE16RXNNVFl6TERFNU5Td3lNamNzTWpVNExEazVPU3c1T1Rrc09UazVYU3hsZUdJNld6QXNNQ3d3TERBc01Dd3dMREFzTUN3eExERXNNU3d4TERJc01pd3lMRElzTXl3ekxETXNNeXcwTERRc05DdzBMRFVzTlN3MUxEVXNNQ3d3TERBc01GMHNiR1JsWmpwdVpYY2dZU2d6TWlrc1pHWXdPbHN4TERJc015dzBMRFVzTnl3NUxERXpMREUzTERJMUxETXpMRFE1TERZMUxEazNMREV5T1N3eE9UTXNNalUzTERNNE5TdzFNVE1zTnpZNUxERXdNalVzTVRVek55d3lNRFE1TERNd056TXNOREE1Tnl3Mk1UUTFMRGd4T1RNc01USXlPRGtzTVRZek9EVXNNalExTnpjc05qVTFNelVzTmpVMU16VmRMR1I0WWpwYk1Dd3dMREFzTUN3eExERXNNaXd5TERNc015dzBMRFFzTlN3MUxEWXNOaXczTERjc09DdzRMRGtzT1N3eE1Dd3hNQ3d4TVN3eE1Td3hNaXd4TWl3eE15d3hNeXd3TERCZExHUmtaV1k2Ym1WM0lITW9NeklwTEdac2JXRndPbTVsZHlCaEtEVXhNaWtzWm14MGNtVmxPbHRkTEdaa2JXRndPbTVsZHlCaEtETXlLU3htWkhSeVpXVTZXMTBzYkcxaGNEcHVaWGNnWVNnek1qYzJPQ2tzYkhSeVpXVTZXMTBzZEhSeVpXVTZXMTBzWkcxaGNEcHVaWGNnWVNnek1qYzJPQ2tzWkhSeVpXVTZXMTBzYVcxaGNEcHVaWGNnWVNnMU1USXBMR2wwY21WbE9sdGRMSEpsZGpFMU9tNWxkeUJoS0RNeU56WTRLU3hzYUhOME9tNWxkeUJ6S0RJNE5pa3NaR2h6ZERwdVpYY2djeWd6TUNrc2FXaHpkRHB1WlhjZ2N5Z3hPU2tzYkdsMGN6cHVaWGNnY3lneE5XVXpLU3h6ZEhKME9tNWxkeUJoS0RZMU5UTTJLU3h3Y21WMk9tNWxkeUJoS0RNeU56WTRLWDE5S0Nrc1puVnVZM1JwYjI0b0tYdG1iM0lvZG1GeUlHRTljaTVHTGxVc2N6MHpNamMyT0N4c1BUQTdiRHh6TzJ3ckt5bDdkbUZ5SUdROWJEdGtQU2hrSmpJNE5qTXpNVEUxTXpBcFBqNCtNWHdvWkNZeE5ETXhOalUxTnpZMUtUdzhNU3hrUFNoa0pqTTBNelU1TnpNNE16WXBQajQrTW53b1pDWTROVGc1T1RNME5Ua3BQRHd5TEdROUtHUW1OREEwTWpNeU1qRTJNQ2srUGo0MGZDaGtKakkxTWpZME5URXpOU2s4UERRc1pEMG9aQ1kwTWpjNE1qVTFNell3S1Q0K1BqaDhLR1FtTVRZM01URTVNelVwUER3NExHRXVjbVYyTVRWYmJGMDlLR1ErUGo0eE5ueGtQRHd4TmlrK1BqNHhOMzFtZFc1amRHbHZiaUJvS0c4c1h5eHdLWHRtYjNJb08xOHRMU0U5TURzcGJ5NXdkWE5vS0RBc2NDbDlabTl5S0haaGNpQnNQVEE3YkR3ek1qdHNLeXNwWVM1c1pHVm1XMnhkUFdFdWIyWXdXMnhkUER3emZHRXVaWGhpVzJ4ZExHRXVaR1JsWmx0c1hUMWhMbVJtTUZ0c1hUdzhOSHhoTG1SNFlsdHNYVHRvS0dFdVpteDBjbVZsTERFME5DdzRLU3hvS0dFdVpteDBjbVZsTERFeE1pdzVLU3hvS0dFdVpteDBjbVZsTERJMExEY3BMR2dvWVM1bWJIUnlaV1VzT0N3NEtTeHlMa1l1YldGclpVTnZaR1Z6S0dFdVpteDBjbVZsTERrcExISXVSaTVqYjJSbGN6SnRZWEFvWVM1bWJIUnlaV1VzT1N4aExtWnNiV0Z3S1N4eUxrWXVjbVYyUTI5a1pYTW9ZUzVtYkhSeVpXVXNPU2tzYUNoaExtWmtkSEpsWlN3ek1pdzFLU3h5TGtZdWJXRnJaVU52WkdWektHRXVabVIwY21WbExEVXBMSEl1Umk1amIyUmxjekp0WVhBb1lTNW1aSFJ5WldVc05TeGhMbVprYldGd0tTeHlMa1l1Y21WMlEyOWtaWE1vWVM1bVpIUnlaV1VzTlNrc2FDaGhMbWwwY21WbExERTVMREFwTEdnb1lTNXNkSEpsWlN3eU9EWXNNQ2tzYUNoaExtUjBjbVZsTERNd0xEQXBMR2dvWVM1MGRISmxaU3d6TWpBc01DbDlLQ2w5S1NocWRDazdkbUZ5SUdseVBXcDBMbVY0Y0c5eWRITXNjbkk5Vm5Rb2FYSXBMRXc5ZTJ4dlp6b2liRzluSWl4a1pXSjFaem9pWkdWaWRXY2lMR2x1Wm04NkltbHVabThpTEhkaGNtNDZJbmRoY200aUxHVnljbTl5T2lKbGNuSnZjaUo5TEZjOVkyOXVjMjlzWlN4dVpUMTdmVHRQWW1wbFkzUXVhMlY1Y3loTUtTNW1iM0pGWVdOb0tHWjFibU4wYVc5dUtHNHBlMjVsVzI1ZFBWZGJibDE5S1R0MllYSWdRMlU5SWtSaGRHRmtiMmNnUW5KdmQzTmxjaUJUUkVzNklpeDZQWHRrWldKMVp6cHVaUzVrWldKMVp5NWlhVzVrS0Zjc1EyVXBMR3h2WnpwdVpTNXNiMmN1WW1sdVpDaFhMRU5sS1N4cGJtWnZPbTVsTG1sdVptOHVZbWx1WkNoWExFTmxLU3gzWVhKdU9tNWxMbmRoY200dVltbHVaQ2hYTEVObEtTeGxjbkp2Y2pwdVpTNWxjbkp2Y2k1aWFXNWtLRmNzUTJVcGZTeGtkRDBpYUhSMGNITTZMeTlrYjJOekxtUmhkR0ZrYjJkb2NTNWpiMjBpTEV0MFBTSWlMbU52Ym1OaGRDaGtkQ3dpTDNKbFlXeGZkWE5sY2w5dGIyNXBkRzl5YVc1bkwySnliM2R6WlhJdmRISnZkV0pzWlhOb2IyOTBhVzVuSWlrc1JHVTlJazF2Y21VZ1pHVjBZV2xzY3pvaU8yWjFibU4wYVc5dUlIRjBLRzRzY2lsN2NtVjBkWEp1SUdaMWJtTjBhVzl1S0NsN1ptOXlLSFpoY2lCaFBWdGRMSE05TUR0elBHRnlaM1Z0Wlc1MGN5NXNaVzVuZEdnN2N5c3JLV0ZiYzEwOVlYSm5kVzFsYm5SelczTmRPM1J5ZVh0eVpYUjFjbTRnYmk1aGNIQnNlU2gyYjJsa0lEQXNZU2w5WTJGMFkyZ29iQ2w3ZWk1bGNuSnZjaWh5TEd3cGZYMTlablZ1WTNScGIyNGdUbVVvYmlsN2NtVjBkWEp1SUc0aFBUMHdKaVpOWVhSb0xuSmhibVJ2YlNncEtqRXdNRHc5Ym4xbWRXNWpkR2x2YmlCdWNpaHVLWHR5WlhSMWNtNGdjM0lvYmlrbUptNCtQVEFtSm00OFBURXdNSDFtZFc1amRHbHZiaUJ6Y2lodUtYdHlaWFIxY200Z2RIbHdaVzltSUc0OVBTSnVkVzFpWlhJaWZYWmhjaUJVWlQweFpUTXNjMlU5TmpBcVZHVXNiM0k5TmpBcWMyVTdablZ1WTNScGIyNGdTV1VvS1h0eVpYUjFjbTRnYm1WM0lFUmhkR1VvS1M1blpYUlVhVzFsS0NsOVpuVnVZM1JwYjI0Z1VTZ3BlM0psZEhWeWJpQkpaU2dwZldaMWJtTjBhVzl1SUUxbEtDbDdjbVYwZFhKdUlIQmxjbVp2Y20xaGJtTmxMbTV2ZHlncGZXWjFibU4wYVc5dUlHVmxLQ2w3Y21WMGRYSnVlM0psYkdGMGFYWmxPazFsS0Nrc2RHbHRaVk4wWVcxd09sRW9LWDE5Wm5WdVkzUnBiMjRnWVhJb0tYdHlaWFIxY201N2NtVnNZWFJwZG1VNk1DeDBhVzFsVTNSaGJYQTZWM1FvS1gxOVpuVnVZM1JwYjI0Z1puSW9iaXh5S1h0eVpYUjFjbTRnY2kxdWZXWjFibU4wYVc5dUlHeHlLRzRzY2lsN2NtVjBkWEp1SUc0cmNuMW1kVzVqZEdsdmJpQjFjaWh1S1h0eVpYUjFjbTRnYmkxWGRDZ3BmWFpoY2lCb2REdG1kVzVqZEdsdmJpQlhkQ2dwZTNKbGRIVnliaUJvZEQwOVBYWnZhV1FnTUNZbUtHaDBQWEJsY21admNtMWhibU5sTG5ScGJXbHVaeTV1WVhacFoyRjBhVzl1VTNSaGNuUXBMR2gwZlhaaGNpQllQVEV3TWpRc1dIUTlNVEF5TkNwWUxHUnlQUzliWGx4MU1EQXdNQzFjZFRBd04wWmRMenRtZFc1amRHbHZiaUJqZENodUtYdHlaWFIxY200Z1pISXVkR1Z6ZENodUtUOTNhVzVrYjNjdVZHVjRkRVZ1WTI5a1pYSWhQVDEyYjJsa0lEQS9ibVYzSUZSbGVIUkZibU52WkdWeUtDa3VaVzVqYjJSbEtHNHBMbXhsYm1kMGFEcHVaWGNnUW14dllpaGJibDBwTG5OcGVtVTZiaTVzWlc1bmRHaDlablZ1WTNScGIyNGdlV1VvYml4eUtYdHlaWFIxY200Z2JpNXBibVJsZUU5bUtISXBJVDA5TFRGOVpuVnVZM1JwYjI0Z2NIUW9iaWw3YVdZb1FYSnlZWGt1Wm5KdmJTbHlaWFIxY200Z1FYSnlZWGt1Wm5KdmJTaHVLVHQyWVhJZ2NqMWJYVHRwWmlodUlHbHVjM1JoYm1ObGIyWWdVMlYwS1c0dVptOXlSV0ZqYUNobWRXNWpkR2x2YmloektYdHlaWFIxY200Z2NpNXdkWE5vS0hNcGZTazdaV3h6WlNCbWIzSW9kbUZ5SUdFOU1EdGhQRzR1YkdWdVozUm9PMkVyS3lseUxuQjFjMmdvYmx0aFhTazdjbVYwZFhKdUlISjlablZ1WTNScGIyNGdhSElvYml4eUtYdG1iM0lvZG1GeUlHRTlNRHRoUEc0dWJHVnVaM1JvTzJFclBURXBlM1poY2lCelBXNWJZVjA3YVdZb2NpaHpMR0VwS1hKbGRIVnliaUJ6ZlgxbWRXNWpkR2x2YmlCdFpTaHVLWHR5WlhSMWNtNGdUMkpxWldOMExtdGxlWE1vYmlrdWJXRndLR1oxYm1OMGFXOXVLSElwZTNKbGRIVnliaUJ1VzNKZGZTbDlablZ1WTNScGIyNGdZM0lvYmlsN2NtVjBkWEp1SUU5aWFtVmpkQzVyWlhsektHNHBMbTFoY0NobWRXNWpkR2x2YmloeUtYdHlaWFIxY201YmNpeHVXM0pkWFgwcGZXWjFibU4wYVc5dUlGOTBLRzRzY2lsN2NtVjBkWEp1SUc0dWMyeHBZMlVvTUN4eUxteGxibWQwYUNrOVBUMXlmV1oxYm1OMGFXOXVJSEJ5S0c0c2NpbDdjbVYwZFhKdUlHNHVjMnhwWTJVb0xYSXViR1Z1WjNSb0tUMDlQWEo5Wm5WdVkzUnBiMjRnVHlodUtYdG1iM0lvZG1GeUlISTlXMTBzWVQweE8yRThZWEpuZFcxbGJuUnpMbXhsYm1kMGFEdGhLeXNwY2x0aExURmRQV0Z5WjNWdFpXNTBjMXRoWFR0eVpYUjFjbTRnY2k1bWIzSkZZV05vS0daMWJtTjBhVzl1S0hNcGUyWnZjaWgyWVhJZ2JDQnBiaUJ6S1U5aWFtVmpkQzV3Y205MGIzUjVjR1V1YUdGelQzZHVVSEp2Y0dWeWRIa3VZMkZzYkNoekxHd3BKaVlvYmx0c1hUMXpXMnhkS1gwcExHNTlablZ1WTNScGIyNGdYM0lvYmlsN2NtVjBkWEp1SUU4b2UzMHNiaWw5Wm5WdVkzUnBiMjRnU25Rb2JpeHlLWHR5WlhSMWNtNGdUMkpxWldOMExtdGxlWE1vYmlrdWMyOXRaU2htZFc1amRHbHZiaWhoS1h0eVpYUjFjbTRnYmx0aFhUMDlQWEo5S1gxbWRXNWpkR2x2YmlCMmRDaHVLWHR5WlhSMWNtNGdUMkpxWldOMExtdGxlWE1vYmlrdWJHVnVaM1JvUFQwOU1IMW1kVzVqZEdsdmJpQjBaU2dwZTJsbUtIUjVjR1Z2WmlCbmJHOWlZV3hVYUdselBUMGliMkpxWldOMElpbHlaWFIxY200Z1oyeHZZbUZzVkdocGN6dFBZbXBsWTNRdVpHVm1hVzVsVUhKdmNHVnlkSGtvVDJKcVpXTjBMbkJ5YjNSdmRIbHdaU3dpWDJSa1gzUmxiWEJmSWl4N1oyVjBPbVoxYm1OMGFXOXVLQ2w3Y21WMGRYSnVJSFJvYVhOOUxHTnZibVpwWjNWeVlXSnNaVG9oTUgwcE8zWmhjaUJ1UFY5a1pGOTBaVzF3WHp0eVpYUjFjbTRnWkdWc1pYUmxJRTlpYW1WamRDNXdjbTkwYjNSNWNHVXVYMlJrWDNSbGJYQmZMSFI1Y0dWdlppQnVJVDBpYjJKcVpXTjBJaVltS0hSNWNHVnZaaUJ6Wld4bVBUMGliMkpxWldOMElqOXVQWE5sYkdZNmRIbHdaVzltSUhkcGJtUnZkejA5SW05aWFtVmpkQ0kvYmoxM2FXNWtiM2M2YmoxN2ZTa3NibjFtZFc1amRHbHZiaUJpWlNodUxISXBlM1poY2lCaFBYUmxLQ2tzY3p0eVpYUjFjbTRnWVM1YWIyNWxKaVowZVhCbGIyWWdZUzVhYjI1bExsOWZjM2x0WW05c1gxODlQU0ptZFc1amRHbHZiaUltSmloelBXNWJZUzVhYjI1bExsOWZjM2x0WW05c1gxOG9jaWxkS1N4emZId29jejF1VzNKZEtTeHpmWFpoY2lCMmNqMW1kVzVqZEdsdmJpaHVMSElzWVNsN2FXWW9ZWHg4WVhKbmRXMWxiblJ6TG14bGJtZDBhRDA5UFRJcFptOXlLSFpoY2lCelBUQXNiRDF5TG14bGJtZDBhQ3hrTzNNOGJEdHpLeXNwS0dSOGZDRW9jeUJwYmlCeUtTa21KaWhrZkh3b1pEMUJjbkpoZVM1d2NtOTBiM1I1Y0dVdWMyeHBZMlV1WTJGc2JDaHlMREFzY3lrcExHUmJjMTA5Y2x0elhTazdjbVYwZFhKdUlHNHVZMjl1WTJGMEtHUjhmRUZ5Y21GNUxuQnliM1J2ZEhsd1pTNXpiR2xqWlM1allXeHNLSElwS1gwc1IyVXNKSFE5SVRFN1puVnVZM1JwYjI0Z1ozSW9iaWw3UjJVOWJuMW1kVzVqZEdsdmJpQjVjaWh1S1hza2REMXVmV1oxYm1OMGFXOXVJRzF5S0c0c2NpeGhLWHQyWVhJZ2N6MWhMblpoYkhWbE8yRXVkbUZzZFdVOVpuVnVZM1JwYjI0b0tYdG1iM0lvZG1GeUlHdzlXMTBzWkQwd08yUThZWEpuZFcxbGJuUnpMbXhsYm1kMGFEdGtLeXNwYkZ0a1hUMWhjbWQxYldWdWRITmJaRjA3ZG1GeUlHZzlSMlUvUWloektUcHpPM0psZEhWeWJpQm9MbUZ3Y0d4NUtIUm9hWE1zYkNsOWZXWjFibU4wYVc5dUlFSW9iaWw3Y21WMGRYSnVJR1oxYm1OMGFXOXVLQ2w3Y21WMGRYSnVJRUpsS0c0c2RHaHBjeXhoY21kMWJXVnVkSE1wZlgxbWRXNWpkR2x2YmlCQ1pTaHVMSElzWVNsN2RISjVlM0psZEhWeWJpQnVMbUZ3Y0d4NUtISXNZU2w5WTJGMFkyZ29jeWw3YVdZb1ozUW9jeWtzUjJVcGRISjVlMGRsS0hNcGZXTmhkR05vS0d3cGUyZDBLR3dwZlgxOVpuVnVZM1JwYjI0Z1ozUW9LWHRtYjNJb2RtRnlJRzQ5VzEwc2NqMHdPM0k4WVhKbmRXMWxiblJ6TG14bGJtZDBhRHR5S3lzcGJsdHlYVDFoY21kMWJXVnVkSE5iY2wwN0pIUW1Kbm91WlhKeWIzSXVZWEJ3Ykhrb2VpeDJjaWhiSWx0TlQwNUpWRTlTWFNKZExHNHNJVEVwS1gxbWRXNWpkR2x2YmlCR1pTaHVMSElwZTNKbGRIVnliaUJpWlNoMFpTZ3BMQ0p6WlhSVWFXMWxiM1YwSWlrb1FpaHVLU3h5S1gxbWRXNWpkR2x2YmlCYWRDaHVLWHRpWlNoMFpTZ3BMQ0pqYkdWaGNsUnBiV1Z2ZFhRaUtTaHVLWDFtZFc1amRHbHZiaUI1ZENodUxISXBlM0psZEhWeWJpQmlaU2gwWlNncExDSnpaWFJKYm5SbGNuWmhiQ0lwS0VJb2Jpa3NjaWw5Wm5WdVkzUnBiMjRnVVhRb2JpbDdZbVVvZEdVb0tTd2lZMnhsWVhKSmJuUmxjblpoYkNJcEtHNHBmWFpoY2lCU1BXWjFibU4wYVc5dUtDbDdablZ1WTNScGIyNGdiaWh5S1h0MGFHbHpMbTl1Um1seWMzUlRkV0p6WTNKcFltVTljaXgwYUdsekxtOWljMlZ5ZG1WeWN6MWJYWDF5WlhSMWNtNGdiaTV3Y205MGIzUjVjR1V1YzNWaWMyTnlhV0psUFdaMWJtTjBhVzl1S0hJcGUzWmhjaUJoUFhSb2FYTTdjbVYwZFhKdUlIUm9hWE11YjJKelpYSjJaWEp6TG5CMWMyZ29jaWtzZEdocGN5NXZZbk5sY25abGNuTXViR1Z1WjNSb1BUMDlNU1ltZEdocGN5NXZia1pwY25OMFUzVmljMk55YVdKbEppWW9kR2hwY3k1dmJreGhjM1JWYm5OMVluTmpjbWxpWlQxMGFHbHpMbTl1Um1seWMzUlRkV0p6WTNKcFltVW9kR2hwY3lsOGZIWnZhV1FnTUNrc2UzVnVjM1ZpYzJOeWFXSmxPbVoxYm1OMGFXOXVLQ2w3WVM1dlluTmxjblpsY25NOVlTNXZZbk5sY25abGNuTXVabWxzZEdWeUtHWjFibU4wYVc5dUtITXBlM0psZEhWeWJpQnlJVDA5YzMwcExDRmhMbTlpYzJWeWRtVnljeTVzWlc1bmRHZ21KbUV1YjI1TVlYTjBWVzV6ZFdKelkzSnBZbVVtSm1FdWIyNU1ZWE4wVlc1emRXSnpZM0pwWW1Vb0tYMTlmU3h1TG5CeWIzUnZkSGx3WlM1dWIzUnBabms5Wm5WdVkzUnBiMjRvY2lsN2RHaHBjeTV2WW5ObGNuWmxjbk11Wm05eVJXRmphQ2htZFc1amRHbHZiaWhoS1h0eVpYUjFjbTRnWVNoeUtYMHBmU3h1ZlNncE8yWjFibU4wYVc5dUlHVnBLQ2w3Wm05eUtIWmhjaUJ1UFZ0ZExISTlNRHR5UEdGeVozVnRaVzUwY3k1c1pXNW5kR2c3Y2lzcktXNWJjbDA5WVhKbmRXMWxiblJ6VzNKZE8zSmxkSFZ5YmlCdVpYY2dVaWhtZFc1amRHbHZiaWhoS1h0MllYSWdjejF1TG0xaGNDaG1kVzVqZEdsdmJpaHNLWHR5WlhSMWNtNGdiQzV6ZFdKelkzSnBZbVVvWm5WdVkzUnBiMjRvWkNsN2NtVjBkWEp1SUdFdWJtOTBhV1o1S0dRcGZTbDlLVHR5WlhSMWNtNGdablZ1WTNScGIyNG9LWHR5WlhSMWNtNGdjeTVtYjNKRllXTm9LR1oxYm1OMGFXOXVLR3dwZTNKbGRIVnliaUJzTG5WdWMzVmljMk55YVdKbEtDbDlLWDE5S1gxbWRXNWpkR2x2YmlCMGFTaHVMSElzWVNsN2RtRnlJSE05SVRFc2JDeGtPM0psZEhWeWJudDBhSEp2ZEhSc1pXUTZablZ1WTNScGIyNG9LWHRtYjNJb2RtRnlJR2c5VzEwc2J6MHdPMjg4WVhKbmRXMWxiblJ6TG14bGJtZDBhRHR2S3lzcGFGdHZYVDFoY21kMWJXVnVkSE5iYjEwN2FXWW9jeWw3YkQxb08zSmxkSFZ5Ym4xdUxtRndjR3g1S0hadmFXUWdNQ3hvS1N4elBTRXdMR1E5Um1Vb1puVnVZM1JwYjI0b0tYdHNKaVp1TG1Gd2NHeDVLSFp2YVdRZ01DeHNLU3h6UFNFeExHdzlkbTlwWkNBd2ZTeHlLWDBzWTJGdVkyVnNPbVoxYm1OMGFXOXVLQ2w3V25Rb1pDa3NjejBoTVN4c1BYWnZhV1FnTUgxOWZXWjFibU4wYVc5dUlHbGxLQ2w3ZldaMWJtTjBhVzl1SUc5bEtHNHBlM0psZEhWeWJpQnVQeWh3WVhKelpVbHVkQ2h1TERFd0tWNU5ZWFJvTG5KaGJtUnZiU2dwS2pFMlBqNXdZWEp6WlVsdWRDaHVMREV3S1M4MEtTNTBiMU4wY21sdVp5Z3hOaWs2SWlJdVkyOXVZMkYwS0RGbE55d2lMU0lwTG1OdmJtTmhkQ2d4WlRNc0lpMGlLUzVqYjI1allYUW9OR1V6TENJdElpa3VZMjl1WTJGMEtEaGxNeXdpTFNJcExtTnZibU5oZENneFpURXhLUzV5WlhCc1lXTmxLQzliTURFNFhTOW5MRzlsS1gxMllYSWdTR1U5THloYlhIY3RYU3NwWEhNcVBWeHpLaWhiWGp0ZEt5a3ZaenRtZFc1amRHbHZiaUJpY2lodUxISXBlMlp2Y2loSVpTNXNZWE4wU1c1a1pYZzlNRHM3S1h0MllYSWdZVDFJWlM1bGVHVmpLRzRwTzJsbUtHRXBlMmxtS0dGYk1WMDlQVDF5S1hKbGRIVnliaUJoV3pKZGZXVnNjMlVnWW5KbFlXdDlmV1oxYm1OMGFXOXVJRk55S0c0cGUzWmhjaUJ5UFc1bGR5Qk5ZWEE3Wm05eUtFaGxMbXhoYzNSSmJtUmxlRDB3T3pzcGUzWmhjaUJoUFVobExtVjRaV01vYmlrN2FXWW9ZU2x5TG5ObGRDaGhXekZkTEdGYk1sMHBPMlZzYzJVZ1luSmxZV3Q5Y21WMGRYSnVJSEo5Wm5WdVkzUnBiMjRnZUhJb2JpeHlMR0VwZTNaaGNpQnpQVzR1WTJoaGNrTnZaR1ZCZENoeUxURXBMR3c5Y3o0OU5UVXlPVFltSm5NOFBUVTJNekU1TEdROWJEOXlLekU2Y2p0eVpYUjFjbTRnYmk1c1pXNW5kR2c4UFdRL2Jqb2lJaTVqYjI1allYUW9iaTV6YkdsalpTZ3dMR1FwS1M1amIyNWpZWFFvWVNsOVpuVnVZM1JwYjI0Z1ZYSW9LWHR5WlhSMWNtNGdkM0lvS1QwOVBURjlkbUZ5SUZsbE8yWjFibU4wYVc5dUlIZHlLQ2w3Y21WMGRYSnVJRmxsUHo4b1dXVTlSWElvS1NsOVpuVnVZM1JwYjI0Z1JYSW9iaWw3ZG1GeUlISTdiajA5UFhadmFXUWdNQ1ltS0c0OWQybHVaRzkzS1R0MllYSWdZVDF1TG01aGRtbG5ZWFJ2Y2k1MWMyVnlRV2RsYm5RN2NtVjBkWEp1SUc0dVkyaHliMjFsZkh3dlNHVmhaR3hsYzNORGFISnZiV1V2TG5SbGMzUW9ZU2svTVRvb0tISTliaTV1WVhacFoyRjBiM0l1ZG1WdVpHOXlLVDA5UFc1MWJHeDhmSEk5UFQxMmIybGtJREEvZG05cFpDQXdPbkl1YVc1a1pYaFBaaWdpUVhCd2JHVWlLU2s5UFQwd2ZId3ZjMkZtWVhKcEwya3VkR1Z6ZENoaEtTWW1JUzlqYUhKdmJXVjhZVzVrY205cFpDOXBMblJsYzNRb1lTay9NanB1TG1SdlkzVnRaVzUwTG1SdlkzVnRaVzUwVFc5a1pUOHdPak45Wm5WdVkzUnBiMjRnVEdVb2JpeHlMR0VzY3lsN2RtRnlJR3c5Ym1WM0lFUmhkR1U3YkM1elpYUlVhVzFsS0d3dVoyVjBWR2x0WlNncEsyRXBPM1poY2lCa1BTSmxlSEJwY21WelBTSXVZMjl1WTJGMEtHd3VkRzlWVkVOVGRISnBibWNvS1Nrc2FEMXpKaVp6TG1OeWIzTnpVMmwwWlQ4aWJtOXVaU0k2SW5OMGNtbGpkQ0lzYnoxekppWnpMbVJ2YldGcGJqOGlPMlJ2YldGcGJqMGlMbU52Ym1OaGRDaHpMbVJ2YldGcGJpazZJaUlzWHoxekppWnpMbk5sWTNWeVpUOGlPM05sWTNWeVpTSTZJaUlzY0QxekppWnpMbkJoY25ScGRHbHZibVZrUHlJN2NHRnlkR2wwYVc5dVpXUWlPaUlpTzJSdlkzVnRaVzUwTG1OdmIydHBaVDBpSWk1amIyNWpZWFFvYml3aVBTSXBMbU52Ym1OaGRDaHlMQ0k3SWlrdVkyOXVZMkYwS0dRc0lqdHdZWFJvUFM4N2MyRnRaWE5wZEdVOUlpa3VZMjl1WTJGMEtHZ3BMbU52Ym1OaGRDaHZLUzVqYjI1allYUW9YeWt1WTI5dVkyRjBLSEFwZldaMWJtTjBhVzl1SUcxMEtHNHBlM0psZEhWeWJpQmljaWhrYjJOMWJXVnVkQzVqYjI5cmFXVXNiaWw5ZG1GeUlHSjBPMloxYm1OMGFXOXVJR0ZsS0c0cGUzSmxkSFZ5YmlCaWRIeDhLR0owUFZOeUtHUnZZM1Z0Wlc1MExtTnZiMnRwWlNrcExHSjBMbWRsZENodUtYMW1kVzVqZEdsdmJpQnBhU2h1TEhJcGUweGxLRzRzSWlJc01DeHlLWDFtZFc1amRHbHZiaUJCY2lodUtYdHBaaWhrYjJOMWJXVnVkQzVqYjI5cmFXVTlQVDEyYjJsa0lEQjhmR1J2WTNWdFpXNTBMbU52YjJ0cFpUMDlQVzUxYkd3cGNtVjBkWEp1SVRFN2RISjVlM1poY2lCeVBTSmtaRjlqYjI5cmFXVmZkR1Z6ZEY4aUxtTnZibU5oZENodlpTZ3BLU3hoUFNKMFpYTjBJanRNWlNoeUxHRXNjMlVzYmlrN2RtRnlJSE05YlhRb2NpazlQVDFoTzNKbGRIVnliaUJwYVNoeUxHNHBMSE45WTJGMFkyZ29iQ2w3Y21WMGRYSnVJSG91WlhKeWIzSW9iQ2tzSVRGOWZYWmhjaUJUZER0bWRXNWpkR2x2YmlCRGNpZ3BlMmxtS0ZOMFBUMDlkbTlwWkNBd0tYdG1iM0lvZG1GeUlHNDlJbVJrWDNOcGRHVmZkR1Z6ZEY4aUxtTnZibU5oZENodlpTZ3BLU3h5UFNKMFpYTjBJaXhoUFhkcGJtUnZkeTVzYjJOaGRHbHZiaTVvYjNOMGJtRnRaUzV6Y0d4cGRDZ2lMaUlwTEhNOVlTNXdiM0FvS1R0aExteGxibWQwYUNZbUlXMTBLRzRwT3lselBTSWlMbU52Ym1OaGRDaGhMbkJ2Y0NncExDSXVJaWt1WTI5dVkyRjBLSE1wTEV4bEtHNHNjaXhVWlN4N1pHOXRZV2x1T25OOUtUdHBhU2h1TEh0a2IyMWhhVzQ2YzMwcExGTjBQWE45Y21WMGRYSnVJRk4wZlhaaGNpQlRaVDBpWDJSa1gzTWlMSGgwUFRRcWIzSXNjbWs5TVRVcWMyVXNibWs5TDE0b1cyRXRla0V0V2wwcktUMG9XMkV0ZWpBdE9TMWRLeWtrTHl4VmREMGlKaUlzVkhJOUlqRWlPMloxYm1OMGFXOXVJR1psS0NsN2NtVjBkWEp1ZTJselJYaHdhWEpsWkRwVWNuMTlablZ1WTNScGIyNGdWbVVvYmlsN2NtVjBkWEp1SUhaMEtHNHBmV1oxYm1OMGFXOXVJSE5wS0c0cGUzSmxkSFZ5YmlGV1pTaHVLWDFtZFc1amRHbHZiaUJxWlNodUtYdHlaWFIxY200Z2JpNXBjMFY0Y0dseVpXUWhQVDEyYjJsa0lEQjhmQ0ZKY2lodUtYMW1kVzVqZEdsdmJpQkpjaWh1S1h0eVpYUjFjbTRvYmk1amNtVmhkR1ZrUFQwOWRtOXBaQ0F3Zkh4SlpTZ3BMVTUxYldKbGNpaHVMbU55WldGMFpXUXBQSGgwS1NZbUtHNHVaWGh3YVhKbFBUMDlkbTlwWkNBd2ZIeEpaU2dwUEU1MWJXSmxjaWh1TG1WNGNHbHlaU2twZldaMWJtTjBhVzl1SUc5cEtHNHBlMjR1Wlhod2FYSmxQVk4wY21sdVp5aEpaU2dwSzNKcEtYMW1kVzVqZEdsdmJpQjNkQ2h1S1h0eVpYUjFjbTRnWTNJb2Jpa3ViV0Z3S0daMWJtTjBhVzl1S0hJcGUzWmhjaUJoUFhKYk1GMHNjejF5V3pGZE8zSmxkSFZ5YmlJaUxtTnZibU5oZENoaExDSTlJaWt1WTI5dVkyRjBLSE1wZlNrdWFtOXBiaWhWZENsOVpuVnVZM1JwYjI0Z1lXa29iaWw3ZG1GeUlISTllMzA3Y21WMGRYSnVJRUp5S0c0cEppWnVMbk53YkdsMEtGVjBLUzVtYjNKRllXTm9LR1oxYm1OMGFXOXVLR0VwZTNaaGNpQnpQVzVwTG1WNFpXTW9ZU2s3YVdZb2N5RTlQVzUxYkd3cGUzWmhjaUJzUFhOYk1WMHNaRDF6V3pKZE8zSmJiRjA5WkgxOUtTeHlmV1oxYm1OMGFXOXVJRUp5S0c0cGUzSmxkSFZ5YmlFaGJpWW1LRzR1YVc1a1pYaFBaaWhWZENraFBUMHRNWHg4Ym1rdWRHVnpkQ2h1S1NsOWRtRnlJRVp5UFNKZlpHUWlMRXh5UFNKZlpHUmZjaUlzYTNJOUlsOWtaRjlzSWl4NmNqMGljblZ0SWl4U2NqMGliRzluY3lJN1puVnVZM1JwYjI0Z1QzSW9iaWw3ZG1GeUlISTlZV1VvVTJVcE8ybG1LQ0Z5S1h0MllYSWdZVDFoWlNoR2Npa3NjejFoWlNoTWNpa3NiRDFoWlNocmNpa3NaRDE3ZlR0aEppWW9aQzVwWkQxaEtTeHNKaVl2WGxzd01WMGtMeTUwWlhOMEtHd3BKaVlvWkZ0U2NsMDliQ2tzY3lZbUwxNWJNREV5WFNRdkxuUmxjM1FvY3lrbUppaGtXM3B5WFQxektTeHphU2hrS1NZbUtHOXBLR1FwTEc0dWNHVnljMmx6ZEZObGMzTnBiMjRvWkNrcGZYMW1kVzVqZEdsdmJpQlFjaWh1S1h0MllYSWdjajFJY2lodUtUdHlaWFIxY200Z1FYSW9jaWsvZTNSNWNHVTZJa052YjJ0cFpTSXNZMjl2YTJsbFQzQjBhVzl1Y3pweWZUcDJiMmxrSURCOVpuVnVZM1JwYjI0Z1JISW9iaWw3ZG1GeUlISTllMmx6VEc5amEwVnVZV0pzWldRNlZYSW9LU3h3WlhKemFYTjBVMlZ6YzJsdmJqcE9jaWh1S1N4eVpYUnlhV1YyWlZObGMzTnBiMjQ2UjNJc1pYaHdhWEpsVTJWemMybHZianBtZFc1amRHbHZiaWdwZTNKbGRIVnliaUJOY2lodUtYMTlPM0psZEhWeWJpQlBjaWh5S1N4eWZXWjFibU4wYVc5dUlFNXlLRzRwZTNKbGRIVnliaUJtZFc1amRHbHZiaWh5S1h0TVpTaFRaU3gzZENoeUtTeHlhU3h1S1gxOVpuVnVZM1JwYjI0Z1RYSW9iaWw3VEdVb1UyVXNkM1FvWm1Vb0tTa3NlSFFzYmlsOVpuVnVZM1JwYjI0Z1IzSW9LWHQyWVhJZ2JqMXRkQ2hUWlNrN2NtVjBkWEp1SUdGcEtHNHBmV1oxYm1OMGFXOXVJRWh5S0c0cGUzWmhjaUJ5UFh0OU8zSmxkSFZ5YmlCeUxuTmxZM1Z5WlQwaElXNHVkWE5sVTJWamRYSmxVMlZ6YzJsdmJrTnZiMnRwWlh4OElTRnVMblZ6WlZCaGNuUnBkR2x2Ym1Wa1EzSnZjM05UYVhSbFUyVnpjMmx2YmtOdmIydHBaWHg4SVNGdUxuVnpaVU55YjNOelUybDBaVk5sYzNOcGIyNURiMjlyYVdVc2NpNWpjbTl6YzFOcGRHVTlJU0Z1TG5WelpWQmhjblJwZEdsdmJtVmtRM0p2YzNOVGFYUmxVMlZ6YzJsdmJrTnZiMnRwWlh4OElTRnVMblZ6WlVOeWIzTnpVMmwwWlZObGMzTnBiMjVEYjI5cmFXVXNjaTV3WVhKMGFYUnBiMjVsWkQwaElXNHVkWE5sVUdGeWRHbDBhVzl1WldSRGNtOXpjMU5wZEdWVFpYTnphVzl1UTI5dmEybGxMRzR1ZEhKaFkydFRaWE56YVc5dVFXTnliM056VTNWaVpHOXRZV2x1Y3lZbUtISXVaRzl0WVdsdVBVTnlLQ2twTEhKOWRtRnlJRmx5UFNKZlpHUmZkR1Z6ZEY4aU8yWjFibU4wYVc5dUlGWnlLQ2w3ZEhKNWUzWmhjaUJ1UFc5bEtDa3NjajBpSWk1amIyNWpZWFFvV1hJcExtTnZibU5oZENodUtUdHNiMk5oYkZOMGIzSmhaMlV1YzJWMFNYUmxiU2h5TEc0cE8zWmhjaUJoUFd4dlkyRnNVM1J2Y21GblpTNW5aWFJKZEdWdEtISXBPM0psZEhWeWJpQnNiMk5oYkZOMGIzSmhaMlV1Y21WdGIzWmxTWFJsYlNoeUtTeHVQVDA5WVQ5N2RIbHdaVG9pVEc5allXeFRkRzl5WVdkbEluMDZkbTlwWkNBd2ZXTmhkR05vZTNKbGRIVnlibjE5Wm5WdVkzUnBiMjRnYW5Jb0tYdHlaWFIxY201N2FYTk1iMk5yUlc1aFlteGxaRG9oTVN4d1pYSnphWE4wVTJWemMybHZianBtYVN4eVpYUnlhV1YyWlZObGMzTnBiMjQ2UzNJc1pYaHdhWEpsVTJWemMybHZianB4Y24xOVpuVnVZM1JwYjI0Z1pta29iaWw3Ykc5allXeFRkRzl5WVdkbExuTmxkRWwwWlcwb1UyVXNkM1FvYmlrcGZXWjFibU4wYVc5dUlFdHlLQ2w3ZG1GeUlHNDliRzlqWVd4VGRHOXlZV2RsTG1kbGRFbDBaVzBvVTJVcE8zSmxkSFZ5YmlCaGFTaHVLWDFtZFc1amRHbHZiaUJ4Y2lncGUyWnBLR1psS0NrcGZYWmhjaUJYY2oweE1DeFljajB4TURBc2JHazlXMTBzUzJVN1puVnVZM1JwYjI0Z2JHVW9iaXh5TEdFcGUzWmhjaUJ6TzJFOVBUMTJiMmxrSURBbUppaGhQVEFwTzNaaGNpQnNQWEl1YVhOTWIyTnJSVzVoWW14bFpDeGtQWEl1Y0dWeWMybHpkRk5sYzNOcGIyNHNhRDF5TG1WNGNHbHlaVk5sYzNOcGIyNHNiejFtZFc1amRHbHZiaWhsS1h0eVpYUjFjbTRnWkNoUEtIdDlMR1VzZTJ4dlkyczZjSDBwS1gwc1h6MW1kVzVqZEdsdmJpZ3BlM1poY2lCbFBYSXVjbVYwY21sbGRtVlRaWE56YVc5dUtDa3NkRDFsTG14dlkyczdjbVYwZFhKdUlHVXViRzlqYXlZbVpHVnNaWFJsSUdVdWJHOWpheXg3YzJWemMybHZianBsTEd4dlkyczZkSDE5TzJsbUtFdGxmSHdvUzJVOWJpa3NiaUU5UFV0bEtYdHNhUzV3ZFhOb0tHNHBPM0psZEhWeWJuMXBaaWhzSmlaaFBqMVljaWw3ZFdrb2NpazdjbVYwZFhKdWZYWmhjaUJ3TEdNOVh5Z3BPMmxtS0d3cGUybG1LR011Ykc5amF5bDdjV1VvYml4eUxHRXBPM0psZEhWeWJuMXBaaWh3UFc5bEtDa3NieWhqTG5ObGMzTnBiMjRwTEdNOVh5Z3BMR011Ykc5amF5RTlQWEFwZTNGbEtHNHNjaXhoS1R0eVpYUjFjbTU5ZlhaaGNpQm5QVzR1Y0hKdlkyVnpjeWhqTG5ObGMzTnBiMjRwTzJsbUtHd21KaWhqUFY4b0tTeGpMbXh2WTJzaFBUMXdLU2w3Y1dVb2JpeHlMR0VwTzNKbGRIVnlibjFwWmlobkppWW9hbVVvWnlrL2FDZ3BPaWh2YVNobktTeHNQMjhvWnlrNlpDaG5LU2twTEd3bUppRW9aeVltYW1Vb1p5a3BLWHRwWmloalBWOG9LU3hqTG14dlkyc2hQVDF3S1h0eFpTaHVMSElzWVNrN2NtVjBkWEp1ZldRb1l5NXpaWE56YVc5dUtTeG5QV011YzJWemMybHZibjBvY3oxdUxtRm1kR1Z5S1QwOVBXNTFiR3g4ZkhNOVBUMTJiMmxrSURCOGZITXVZMkZzYkNodUxHZDhmR011YzJWemMybHZiaWtzZFdrb2NpbDlablZ1WTNScGIyNGdjV1VvYml4eUxHRXBlMFpsS0daMWJtTjBhVzl1S0NsN2JHVW9iaXh5TEdFck1TbDlMRmR5S1gxbWRXNWpkR2x2YmlCMWFTaHVLWHRMWlQxMmIybGtJREE3ZG1GeUlISTliR2t1YzJocFpuUW9LVHR5Smlac1pTaHlMRzRwZlhaaGNpQmthVDFVWlR0bWRXNWpkR2x2YmlCS2NpaHVLWHQyWVhJZ2NqMVFjaWh1S1R0eVpYUjFjbTRoY2lZbWJpNWhiR3h2ZDBaaGJHeGlZV05yVkc5TWIyTmhiRk4wYjNKaFoyVW1KaWh5UFZaeUtDa3BMSEo5Wm5WdVkzUnBiMjRnSkhJb2JpeHlMR0VwZTNaaGNpQnpQVzVsZHlCU0xHdzlibVYzSUZJc1pEMXVaWGNnVWl4b1BXNHVkSGx3WlQwOVBTSkRiMjlyYVdVaVAwUnlLRzR1WTI5dmEybGxUM0IwYVc5dWN5azZhbklvS1N4dlBXZ3VaWGh3YVhKbFUyVnpjMmx2Yml4ZlBYbDBLR2tzWkdrcExIQTdkU2dwTzNaaGNpQmpQWFJwS0daMWJtTjBhVzl1S0NsN2JHVW9lM0J5YjJObGMzTTZablZ1WTNScGIyNG9WU2w3YVdZb0lWWmxLRlVwS1h0MllYSWdSVDFtS0ZVcE8zSmxkSFZ5YmlCMktFVXBMRVY5ZlN4aFpuUmxjanBtZFc1amRHbHZiaWhWS1h0emFTaFZLU1ltSVhrb0tTWW1lQ2hWS1N4d1BWVjlmU3hvS1gwc1pHa3BMR2M5WXk1MGFISnZkSFJzWldRc1pUMWpMbU5oYm1ObGJEdG1kVzVqZEdsdmJpQjBLQ2w3YkdVb2UzQnliMk5sYzNNNlpuVnVZM1JwYjI0b1ZTbDdjbVYwZFhKdUlIa29LVDltS0ZVcE9uWnZhV1FnTUgxOUxHZ3BmV1oxYm1OMGFXOXVJR2tvS1h0c1pTaDdjSEp2WTJWemN6cG1kVzVqZEdsdmJpaFZLWHR5WlhSMWNtNGdhbVVvVlNrL1ptVW9LVHAyYjJsa0lEQjlMR0ZtZEdWeU9tWjlMR2dwZldaMWJtTjBhVzl1SUdZb1ZTbDdjbVYwZFhKdUlHcGxLRlVwSmlZb1ZUMW1aU2dwS1N4NUtDa21KaWh0S0ZVcFAySW9LVG9vWkM1dWIzUnBabmtvZTNCeVpYWnBiM1Z6VTNSaGRHVTZjQ3h1WlhkVGRHRjBaVHBWZlNrc2NEMVZLU2tzVlgxbWRXNWpkR2x2YmlCMUtDbDdiR1VvZTNCeWIyTmxjM002Wm5WdVkzUnBiMjRvVlNsN2FXWW9WbVVvVlNrcGNtVjBkWEp1SUdabEtDbDlMR0ZtZEdWeU9tWjFibU4wYVc5dUtGVXBlM0E5VlgxOUxHZ3BmV1oxYm1OMGFXOXVJSFlvVlNsN2FXWW9WbVVvVlNrcGNtVjBkWEp1SVRFN2RtRnlJRVU5WVNoVlczSmRLU3gzUFVVdWRISmhZMnRwYm1kVWVYQmxMRUU5UlM1cGMxUnlZV05yWldRN1ZWdHlYVDEzTEdSbGJHVjBaU0JWTG1selJYaHdhWEpsWkN4QkppWWhWUzVwWkNZbUtGVXVhV1E5YjJVb0tTeFZMbU55WldGMFpXUTlVM1J5YVc1bktFbGxLQ2twS1gxbWRXNWpkR2x2YmlCNUtDbDdjbVYwZFhKdUlIQmJjbDBoUFQxMmIybGtJREI5Wm5WdVkzUnBiMjRnYlNoVktYdHlaWFIxY200Z2NDNXBaQ0U5UFZVdWFXUjhmSEJiY2wwaFBUMVZXM0pkZldaMWJtTjBhVzl1SUdJb0tYdHdQV1psS0Nrc2JDNXViM1JwWm5rb0tYMW1kVzVqZEdsdmJpQjRLRlVwZTNBOVZTeHpMbTV2ZEdsbWVTZ3BmV1oxYm1OMGFXOXVJRk1vVlNsN2JHVW9lM0J5YjJObGMzTTZablZ1WTNScGIyNG9SU2w3Y21WMGRYSnVJRThvZTMwc1JTeFZLWDBzWVdaMFpYSTZabjBzYUNsOWNtVjBkWEp1ZTJWNGNHRnVaRTl5VW1WdVpYZFRaWE56YVc5dU9tY3NaWGh3WVc1a1UyVnpjMmx2YmpwMExHZGxkRk5sYzNOcGIyNDZablZ1WTNScGIyNG9LWHR5WlhSMWNtNGdjSDBzY21WdVpYZFBZbk5sY25aaFlteGxPbk1zWlhod2FYSmxUMkp6WlhKMllXSnNaVHBzTEhObGMzTnBiMjVUZEdGMFpWVndaR0YwWlU5aWMyVnlkbUZpYkdVNlpDeHlaWE4wWVhKMFUyVnpjMmx2YmpwMUxHVjRjR2x5WlRwbWRXNWpkR2x2YmlncGUyVW9LU3h2S0Nrc1ppaG1aU2dwS1gwc2MzUnZjRHBtZFc1amRHbHZiaWdwZTFGMEtGOHBmU3gxY0dSaGRHVlRaWE56YVc5dVUzUmhkR1U2VTMxOWRtRnlJRVYwUFh0SFVrRk9WRVZFT2lKbmNtRnVkR1ZrSWl4T1QxUmZSMUpCVGxSRlJEb2libTkwTFdkeVlXNTBaV1FpZlR0bWRXNWpkR2x2YmlCYWNpaHVLWHQyWVhJZ2NqMXVaWGNnVWp0eVpYUjFjbTU3ZEhKNVZHOUpibWwwT21aMWJtTjBhVzl1S0dFcGUyNThmQ2h1UFdFcGZTeDFjR1JoZEdVNlpuVnVZM1JwYjI0b1lTbDdiajFoTEhJdWJtOTBhV1o1S0NsOUxHbHpSM0poYm5SbFpEcG1kVzVqZEdsdmJpZ3BlM0psZEhWeWJpQnVQVDA5UlhRdVIxSkJUbFJGUkgwc2IySnpaWEoyWVdKc1pUcHlmWDFtZFc1amRHbHZiaUIxWlNodUxISXNZU2w3YVdZb2RIbHdaVzltSUc0aFBTSnZZbXBsWTNRaWZIeHVQVDA5Ym5Wc2JDbHlaWFIxY200Z1NsTlBUaTV6ZEhKcGJtZHBabmtvYmlrN2RtRnlJSE05ZUdVb1QySnFaV04wTG5CeWIzUnZkSGx3WlNrc2JEMTRaU2hCY25KaGVTNXdjbTkwYjNSNWNHVXBMR1E5ZUdVb1QySnFaV04wTG1kbGRGQnliM1J2ZEhsd1pVOW1LRzRwS1N4b1BYaGxLRzRwTzNSeWVYdHlaWFIxY200Z1NsTlBUaTV6ZEhKcGJtZHBabmtvYml4eUxHRXBmV05oZEdOb2UzSmxkSFZ5YmlJOFpYSnliM0k2SUhWdVlXSnNaU0IwYnlCelpYSnBZV3hwZW1VZ2IySnFaV04wUGlKOVptbHVZV3hzZVh0ektDa3NiQ2dwTEdRb0tTeG9LQ2w5ZldaMWJtTjBhVzl1SUhobEtHNHBlM1poY2lCeVBXNHNZVDF5TG5SdlNsTlBUanR5WlhSMWNtNGdZVDhvWkdWc1pYUmxJSEl1ZEc5S1UwOU9MR1oxYm1OMGFXOXVLQ2w3Y2k1MGIwcFRUMDQ5WVgwcE9tbGxmV1oxYm1OMGFXOXVJRUYwS0c0cGUzSmxkSFZ5YmlCUmNpaHVMR3h2WTJGMGFXOXVMbWh5WldZcExtaHlaV1o5Wm5WdVkzUnBiMjRnVVhJb2JpeHlLWHQyWVhJZ1lUMWxiaWdwTzJsbUtHRXBkSEo1ZTNKbGRIVnliaUJ5SVQwOWRtOXBaQ0F3UDI1bGR5QmhLRzRzY2lrNmJtVjNJR0VvYmlsOVkyRjBZMmdvYUNsN2RHaHliM2NnYm1WM0lFVnljbTl5S0NKR1lXbHNaV1FnZEc4Z1kyOXVjM1J5ZFdOMElGVlNURG9nSWk1amIyNWpZWFFvVTNSeWFXNW5LR2dwTENJZ0lpa3VZMjl1WTJGMEtIVmxLSHQxY213NmJpeGlZWE5sT25KOUtTa3BmV2xtS0hJOVBUMTJiMmxrSURBbUppRXZPaTh1ZEdWemRDaHVLU2wwYUhKdmR5QnVaWGNnUlhKeWIzSW9Ja2x1ZG1Gc2FXUWdWVkpNT2lBbklpNWpiMjVqWVhRb2Jpd2lKeUlwS1R0MllYSWdjejFrYjJOMWJXVnVkQ3hzUFhNdVkzSmxZWFJsUld4bGJXVnVkQ2dpWVNJcE8ybG1LSEloUFQxMmIybGtJREFwZTNNOVpHOWpkVzFsYm5RdWFXMXdiR1Z0Wlc1MFlYUnBiMjR1WTNKbFlYUmxTRlJOVEVSdlkzVnRaVzUwS0NJaUtUdDJZWElnWkQxekxtTnlaV0YwWlVWc1pXMWxiblFvSW1KaGMyVWlLVHRrTG1oeVpXWTljaXh6TG1obFlXUXVZWEJ3Wlc1a1EyaHBiR1FvWkNrc2N5NWliMlI1TG1Gd2NHVnVaRU5vYVd4a0tHd3BmWEpsZEhWeWJpQnNMbWh5WldZOWJpeHNmWFpoY2lCb2FUMVZVa3dzVjJVN1puVnVZM1JwYjI0Z1pXNG9LWHRwWmloWFpUMDlQWFp2YVdRZ01DbDBjbmw3ZG1GeUlHNDlibVYzSUdocEtDSm9kSFJ3T2k4dmRHVnpkQzl3WVhSb0lpazdWMlU5Ymk1b2NtVm1QVDA5SW1oMGRIQTZMeTkwWlhOMEwzQmhkR2dpZldOaGRHTm9lMWRsUFNFeGZYSmxkSFZ5YmlCWFpUOW9hVHAyYjJsa0lEQjlkbUZ5SUhSdVBTSmtZWFJoWkRCbkxtTnZiU0lzY200OUltUmtNR2N0WjI5MkxtTnZiU0lzWkdVOUltUmhkR0ZrYjJkb2NTNWpiMjBpTEc1dVBTSmtaRzluTFdkdmRpNWpiMjBpTEdOcFBTSndZMmt1WW5KdmQzTmxjaTFwYm5SaGEyVXRaR0YwWVdSdloyaHhMbU52YlNJN1puVnVZM1JwYjI0Z2EyVW9iaXh5TEdFcGUzWmhjaUJ6UFhOdUtHNHNjaWs3Y21WMGRYSnVlMkoxYVd4a09tWjFibU4wYVc5dUtHd3NaQ2w3ZG1GeUlHZzlZVzRvYml4eUxHRXNiQ3hrS1R0eVpYUjFjbTRnY3lob0tYMHNkWEpzVUhKbFptbDRPbk1vSWlJcExIUnlZV05yVkhsd1pUcHlmWDFtZFc1amRHbHZiaUJ6YmlodUxISXBlM1poY2lCaFBTSXZZWEJwTDNZeUx5SXVZMjl1WTJGMEtISXBMSE05Ymk1d2NtOTRlVHRwWmloMGVYQmxiMllnY3owOUluTjBjbWx1WnlJcGUzWmhjaUJzUFVGMEtITXBPM0psZEhWeWJpQm1kVzVqZEdsdmJpaG9LWHR5WlhSMWNtNGlJaTVqYjI1allYUW9iQ3dpUDJSa1ptOXlkMkZ5WkQwaUtTNWpiMjVqWVhRb1pXNWpiMlJsVlZKSlEyOXRjRzl1Wlc1MEtDSWlMbU52Ym1OaGRDaGhMQ0kvSWlrdVkyOXVZMkYwS0dncEtTbDlmV2xtS0hSNWNHVnZaaUJ6UFQwaVpuVnVZM1JwYjI0aUtYSmxkSFZ5YmlCbWRXNWpkR2x2Ymlob0tYdHlaWFIxY200Z2N5aDdjR0YwYURwaExIQmhjbUZ0WlhSbGNuTTZhSDBwZlR0MllYSWdaRDF2YmloeUxHNHBPM0psZEhWeWJpQm1kVzVqZEdsdmJpaG9LWHR5WlhSMWNtNGlhSFIwY0hNNkx5OGlMbU52Ym1OaGRDaGtLUzVqYjI1allYUW9ZU3dpUHlJcExtTnZibU5oZENob0tYMTlablZ1WTNScGIyNGdiMjRvYml4eUtYdDJZWElnWVQxeUxuTnBkR1VzY3oxaFBUMDlkbTlwWkNBd1AyUmxPbUVzYkQxeUxtbHVkR1Z5Ym1Gc1FXNWhiSGwwYVdOelUzVmlaRzl0WVdsdU8ybG1LRzQ5UFQwaWJHOW5jeUltSm5JdWRYTmxVR05wU1c1MFlXdGxKaVp6UFQwOVpHVXBjbVYwZFhKdUlHTnBPMmxtS0d3bUpuTTlQVDFrWlNseVpYUjFjbTRpSWk1amIyNWpZWFFvYkN3aUxpSXBMbU52Ym1OaGRDaGtaU2s3YVdZb2N6MDlQWEp1S1hKbGRIVnliaUpvZEhSd0xXbHVkR0ZyWlM1c2IyZHpMaUl1WTI5dVkyRjBLSE1wTzNaaGNpQmtQWE11YzNCc2FYUW9JaTRpS1N4b1BXUXVjRzl3S0NrN2NtVjBkWEp1SW1KeWIzZHpaWEl0YVc1MFlXdGxMU0l1WTI5dVkyRjBLR1F1YW05cGJpZ2lMU0lwTENJdUlpa3VZMjl1WTJGMEtHZ3BmV1oxYm1OMGFXOXVJR0Z1S0c0c2NpeGhMSE1zYkNsN2RtRnlJR1E5Ymk1amJHbGxiblJVYjJ0bGJpeG9QVzR1YVc1MFpYSnVZV3hCYm1Gc2VYUnBZM05UZFdKa2IyMWhhVzRzYnoxc0xuSmxkSEo1TEY4OWJDNWxibU52WkdsdVp5eHdQVnNpYzJSclgzWmxjbk5wYjI0NklpNWpiMjVqWVhRb0lqVXVNamt1TVNJcExDSmhjR2s2SWk1amIyNWpZWFFvY3lsZExtTnZibU5oZENoaEtUdHZKaVp3TG5CMWMyZ29JbkpsZEhKNVgyTnZkVzUwT2lJdVkyOXVZMkYwS0c4dVkyOTFiblFwTENKeVpYUnllVjloWm5SbGNqb2lMbU52Ym1OaGRDaHZMbXhoYzNSR1lXbHNkWEpsVTNSaGRIVnpLU2s3ZG1GeUlHTTlXeUprWkhOdmRYSmpaVDFpY205M2MyVnlJaXdpWkdSMFlXZHpQU0l1WTI5dVkyRjBLR1Z1WTI5a1pWVlNTVU52YlhCdmJtVnVkQ2h3TG1wdmFXNG9JaXdpS1NrcExDSmtaQzFoY0drdGEyVjVQU0l1WTI5dVkyRjBLR1FwTENKa1pDMWxkbkF0YjNKcFoybHVMWFpsY25OcGIyNDlJaTVqYjI1allYUW9aVzVqYjJSbFZWSkpRMjl0Y0c5dVpXNTBLQ0kxTGpJNUxqRWlLU2tzSW1Sa0xXVjJjQzF2Y21sbmFXNDlZbkp2ZDNObGNpSXNJbVJrTFhKbGNYVmxjM1F0YVdROUlpNWpiMjVqWVhRb2IyVW9LU2xkTzNKbGRIVnliaUJmSmlaakxuQjFjMmdvSW1Sa0xXVjJjQzFsYm1OdlpHbHVaejBpTG1OdmJtTmhkQ2hmS1Nrc2NqMDlQU0p5ZFcwaUppWmpMbkIxYzJnb0ltSmhkR05vWDNScGJXVTlJaTVqYjI1allYUW9VU2dwS1Nrc2FDWW1ZeTV5WlhabGNuTmxLQ2tzWXk1cWIybHVLQ0ltSWlsOWRtRnlJR1p1UFRJd01EdG1kVzVqZEdsdmJpQnNiaWh1S1h0MllYSWdjajF1TG1WdWRpeGhQVzR1YzJWeWRtbGpaU3h6UFc0dWRtVnljMmx2Yml4c1BXNHVaR0YwWVdObGJuUmxjaXhrUFZ0ZE8zSmxkSFZ5YmlCeUppWmtMbkIxYzJnb1dHVW9JbVZ1ZGlJc2Npa3BMR0VtSm1RdWNIVnphQ2hZWlNnaWMyVnlkbWxqWlNJc1lTa3BMSE1tSm1RdWNIVnphQ2hZWlNnaWRtVnljMmx2YmlJc2N5a3BMR3dtSm1RdWNIVnphQ2hZWlNnaVpHRjBZV05sYm5SbGNpSXNiQ2twTEdSOVpuVnVZM1JwYjI0Z1dHVW9iaXh5S1h0MllYSWdZVDFtYmkxdUxteGxibWQwYUMweE95aHlMbXhsYm1kMGFENWhmSHgxYmloeUtTa21Kbm91ZDJGeWJpZ2lJaTVqYjI1allYUW9iaXdpSUhaaGJIVmxJR1J2WlhOdUozUWdiV1ZsZENCMFlXY2djbVZ4ZFdseVpXMWxiblJ6SUdGdVpDQjNhV3hzSUdKbElITmhibWwwYVhwbFpDNGdJaWt1WTI5dVkyRjBLRVJsTENJZ0lpa3VZMjl1WTJGMEtHUjBMQ0l2WjJWMGRHbHVaMTl6ZEdGeWRHVmtMM1JoWjJkcGJtY3ZJMlJsWm1sdWFXNW5MWFJoWjNNaUtTazdkbUZ5SUhNOWNpNXlaWEJzWVdObEtDOHNMMmNzSWw4aUtUdHlaWFIxY200aUlpNWpiMjVqWVhRb2Jpd2lPaUlwTG1OdmJtTmhkQ2h6S1gxbWRXNWpkR2x2YmlCMWJpaHVLWHR5WlhSMWNtNGdaRzRvS1Q5dVpYY2dVbVZuUlhod0tDSmJYbHhjY0h0TWJIMWNYSEI3VEc5OU1DMDVYem91THkxZElpd2lkU0lwTG5SbGMzUW9iaWs2SVRGOVpuVnVZM1JwYjI0Z1pHNG9LWHQwY25sN2NtVjBkWEp1SUc1bGR5QlNaV2RGZUhBb0lsdGNYSEI3VEd4OVhTSXNJblVpS1N3aE1IMWpZWFJqYUh0eVpYUjFjbTRoTVgxOVpuVnVZM1JwYjI0Z2FHNG9iaWw3ZG1GeUlISTliaTV6YVhSbGZIeGtaU3hoUFd4dUtHNHBMSE05WTI0b2JpeGhLU3hzUFY5dUtITXNjaWtzWkQxd2JpaHVMR3dzWVNrN2NtVjBkWEp1SUU4b2UybHpTVzUwWVd0bFZYSnNPbVoxYm1OMGFXOXVLR2dwZTNKbGRIVnliaUJzTG5OdmJXVW9ablZ1WTNScGIyNG9ieWw3Y21WMGRYSnVJR2d1YVc1a1pYaFBaaWh2S1QwOVBUQjlLWDBzY21Wd2JHbGpZVHBrTEhOcGRHVTZjbjBzY3lsOVpuVnVZM1JwYjI0Z1kyNG9iaXh5S1h0eVpYUjFjbTU3Ykc5bmMwVnVaSEJ2YVc1MFFuVnBiR1JsY2pwclpTaHVMQ0pzYjJkeklpeHlLU3h5ZFcxRmJtUndiMmx1ZEVKMWFXeGtaWEk2YTJVb2Jpd2ljblZ0SWl4eUtTeHpaWE56YVc5dVVtVndiR0Y1Ulc1a2NHOXBiblJDZFdsc1pHVnlPbXRsS0c0c0luSmxjR3hoZVNJc2NpbDlmV1oxYm1OMGFXOXVJSEJ1S0c0c2NpeGhLWHRwWmlodUxuSmxjR3hwWTJFcGUzWmhjaUJ6UFU4b2UzMHNiaXg3YzJsMFpUcGtaU3hqYkdsbGJuUlViMnRsYmpwdUxuSmxjR3hwWTJFdVkyeHBaVzUwVkc5clpXNTlLU3hzUFh0c2IyZHpSVzVrY0c5cGJuUkNkV2xzWkdWeU9tdGxLSE1zSW14dlozTWlMR0VwTEhKMWJVVnVaSEJ2YVc1MFFuVnBiR1JsY2pwclpTaHpMQ0p5ZFcwaUxHRXBmVHR5WlhSMWNtNGdjaTV3ZFhOb0xtRndjR3g1S0hJc2JXVW9iQ2t1YldGd0tHWjFibU4wYVc5dUtHUXBlM0psZEhWeWJpQmtMblZ5YkZCeVpXWnBlSDBwS1N4UEtIdGhjSEJzYVdOaGRHbHZia2xrT200dWNtVndiR2xqWVM1aGNIQnNhV05oZEdsdmJrbGtmU3hzS1gxOVpuVnVZM1JwYjI0Z1gyNG9iaXh5S1h0MllYSWdZVDF0WlNodUtTNXRZWEFvWm5WdVkzUnBiMjRvY3lsN2NtVjBkWEp1SUhNdWRYSnNVSEpsWm1sNGZTazdjbVYwZFhKdUlISTlQVDFrWlNZbVlTNXdkWE5vS0NKb2RIUndjem92THlJdVkyOXVZMkYwS0dOcExDSXZJaWtwTEdGOVpuVnVZM1JwYjI0Z1EzUW9iaXh5S1h0eVpYUjFjbTRnYmlFOWJuVnNiQ1ltZEhsd1pXOW1JRzRoUFNKemRISnBibWNpUHloNkxtVnljbTl5S0NJaUxtTnZibU5oZENoeUxDSWdiWFZ6ZENCaVpTQmtaV1pwYm1Wa0lHRnpJR0VnYzNSeWFXNW5JaWtwTENFeEtUb2hNSDFtZFc1amRHbHZiaUIyYmlodUtYdHlaWFIxY200Z2JpWW1kSGx3Wlc5bUlHNDlQU0p6ZEhKcGJtY2lKaVloTHloa1lYUmhaRzluZkdSa2IyZDhaR0YwWVdRd1ozeGtaREJuS1M4dWRHVnpkQ2h1S1Q4b2VpNWxjbkp2Y2lnaVUybDBaU0J6YUc5MWJHUWdZbVVnWVNCMllXeHBaQ0JFWVhSaFpHOW5JSE5wZEdVdUlDSXVZMjl1WTJGMEtFUmxMQ0lnSWlrdVkyOXVZMkYwS0dSMExDSXZaMlYwZEdsdVoxOXpkR0Z5ZEdWa0wzTnBkR1V2TGlJcEtTd2hNU2s2SVRCOVpuVnVZM1JwYjI0Z1NtVW9iaXh5S1h0eVpYUjFjbTRnYmlFOVBYWnZhV1FnTUNZbUlXNXlLRzRwUHloNkxtVnljbTl5S0NJaUxtTnZibU5oZENoeUxDSWdVMkZ0Y0d4bElGSmhkR1VnYzJodmRXeGtJR0psSUdFZ2JuVnRZbVZ5SUdKbGRIZGxaVzRnTUNCaGJtUWdNVEF3SWlrcExDRXhLVG9oTUgxbWRXNWpkR2x2YmlCbmJpaHVLWHQyWVhJZ2NpeGhMSE1zYkN4a08ybG1LQ0Z1Zkh3aGJpNWpiR2xsYm5SVWIydGxiaWw3ZWk1bGNuSnZjaWdpUTJ4cFpXNTBJRlJ2YTJWdUlHbHpJRzV2ZENCamIyNW1hV2QxY21Wa0xDQjNaU0IzYVd4c0lHNXZkQ0J6Wlc1a0lHRnVlU0JrWVhSaExpSXBPM0psZEhWeWJuMXBaaWdoS0NGMmJpaHVMbk5wZEdVcGZId2hTbVVvYmk1elpYTnphVzl1VTJGdGNHeGxVbUYwWlN3aVUyVnpjMmx2YmlJcGZId2hTbVVvYmk1MFpXeGxiV1YwY25sVFlXMXdiR1ZTWVhSbExDSlVaV3hsYldWMGNua2lLWHg4SVVwbEtHNHVkR1ZzWlcxbGRISjVRMjl1Wm1sbmRYSmhkR2x2YmxOaGJYQnNaVkpoZEdVc0lsUmxiR1Z0WlhSeWVTQkRiMjVtYVdkMWNtRjBhVzl1SWlsOGZDRktaU2h1TG5SbGJHVnRaWFJ5ZVZWellXZGxVMkZ0Y0d4bFVtRjBaU3dpVkdWc1pXMWxkSEo1SUZWellXZGxJaWw4ZkNGRGRDaHVMblpsY25OcGIyNHNJbFpsY25OcGIyNGlLWHg4SVVOMEtHNHVaVzUyTENKRmJuWWlLWHg4SVVOMEtHNHVjMlZ5ZG1salpTd2lVMlZ5ZG1salpTSXBLU2w3YVdZb2JpNTBjbUZqYTJsdVowTnZibk5sYm5RaFBUMTJiMmxrSURBbUppRktkQ2hGZEN4dUxuUnlZV05yYVc1blEyOXVjMlZ1ZENrcGUzb3VaWEp5YjNJb0oxUnlZV05yYVc1bklFTnZibk5sYm5RZ2MyaHZkV3hrSUdKbElHVnBkR2hsY2lBaVozSmhiblJsWkNJZ2IzSWdJbTV2ZEMxbmNtRnVkR1ZrSWljcE8zSmxkSFZ5Ym4xeVpYUjFjbTRnVHloN1ltVm1iM0psVTJWdVpEcHVMbUpsWm05eVpWTmxibVFtSm5GMEtHNHVZbVZtYjNKbFUyVnVaQ3dpWW1WbWIzSmxVMlZ1WkNCMGFISmxkeUJoYmlCbGNuSnZjam9pS1N4elpYTnphVzl1VTNSdmNtVlRkSEpoZEdWbmVWUjVjR1U2U25Jb2Jpa3NjMlZ6YzJsdmJsTmhiWEJzWlZKaGRHVTZLSEk5Ymk1elpYTnphVzl1VTJGdGNHeGxVbUYwWlNraFBUMXVkV3hzSmlaeUlUMDlkbTlwWkNBd1AzSTZNVEF3TEhSbGJHVnRaWFJ5ZVZOaGJYQnNaVkpoZEdVNktHRTliaTUwWld4bGJXVjBjbmxUWVcxd2JHVlNZWFJsS1NFOVBXNTFiR3dtSm1FaFBUMTJiMmxrSURBL1lUb3lNQ3gwWld4bGJXVjBjbmxEYjI1bWFXZDFjbUYwYVc5dVUyRnRjR3hsVW1GMFpUb29jejF1TG5SbGJHVnRaWFJ5ZVVOdmJtWnBaM1Z5WVhScGIyNVRZVzF3YkdWU1lYUmxLU0U5UFc1MWJHd21Kbk1oUFQxMmIybGtJREEvY3pvMUxIUmxiR1Z0WlhSeWVWVnpZV2RsVTJGdGNHeGxVbUYwWlRvb2JEMXVMblJsYkdWdFpYUnllVlZ6WVdkbFUyRnRjR3hsVW1GMFpTa2hQVDF1ZFd4c0ppWnNJVDA5ZG05cFpDQXdQMnc2TlN4elpYSjJhV05sT200dWMyVnlkbWxqWlh4OGRtOXBaQ0F3TEhOcGJHVnVkRTExYkhScGNHeGxTVzVwZERvaElXNHVjMmxzWlc1MFRYVnNkR2x3YkdWSmJtbDBMR0ZzYkc5M1ZXNTBjblZ6ZEdWa1JYWmxiblJ6T2lFaGJpNWhiR3h2ZDFWdWRISjFjM1JsWkVWMlpXNTBjeXgwY21GamEybHVaME52Ym5ObGJuUTZLR1E5Ymk1MGNtRmphMmx1WjBOdmJuTmxiblFwSVQwOWJuVnNiQ1ltWkNFOVBYWnZhV1FnTUQ5a09rVjBMa2RTUVU1VVJVUXNjM1J2Y21WRGIyNTBaWGgwYzBGamNtOXpjMUJoWjJWek9pRWhiaTV6ZEc5eVpVTnZiblJsZUhSelFXTnliM056VUdGblpYTXNZbUYwWTJoQ2VYUmxjMHhwYldsME9qRTJLbGdzWlhabGJuUlNZWFJsVEdsdGFYUmxjbFJvY21WemFHOXNaRG96WlRNc2JXRjRWR1ZzWlcxbGRISjVSWFpsYm5SelVHVnlVR0ZuWlRveE5TeG1iSFZ6YUZScGJXVnZkWFE2TXpBcVZHVXNZbUYwWTJoTlpYTnpZV2RsYzB4cGJXbDBPalV3TEcxbGMzTmhaMlZDZVhSbGMweHBiV2wwT2pJMU5pcFlmU3hvYmlodUtTbDlmV1oxYm1OMGFXOXVJSGx1S0c0cGUzSmxkSFZ5Ym50elpYTnphVzl1WDNOaGJYQnNaVjl5WVhSbE9tNHVjMlZ6YzJsdmJsTmhiWEJzWlZKaGRHVXNkR1ZzWlcxbGRISjVYM05oYlhCc1pWOXlZWFJsT200dWRHVnNaVzFsZEhKNVUyRnRjR3hsVW1GMFpTeDBaV3hsYldWMGNubGZZMjl1Wm1sbmRYSmhkR2x2Ymw5ellXMXdiR1ZmY21GMFpUcHVMblJsYkdWdFpYUnllVU52Ym1acFozVnlZWFJwYjI1VFlXMXdiR1ZTWVhSbExIUmxiR1Z0WlhSeWVWOTFjMkZuWlY5ellXMXdiR1ZmY21GMFpUcHVMblJsYkdWdFpYUnllVlZ6WVdkbFUyRnRjR3hsVW1GMFpTeDFjMlZmWW1WbWIzSmxYM05sYm1RNklTRnVMbUpsWm05eVpWTmxibVFzZFhObFgyTnliM056WDNOcGRHVmZjMlZ6YzJsdmJsOWpiMjlyYVdVNmJpNTFjMlZEY205emMxTnBkR1ZUWlhOemFXOXVRMjl2YTJsbExIVnpaVjl3WVhKMGFYUnBiMjVsWkY5amNtOXpjMTl6YVhSbFgzTmxjM05wYjI1ZlkyOXZhMmxsT200dWRYTmxVR0Z5ZEdsMGFXOXVaV1JEY205emMxTnBkR1ZUWlhOemFXOXVRMjl2YTJsbExIVnpaVjl6WldOMWNtVmZjMlZ6YzJsdmJsOWpiMjlyYVdVNmJpNTFjMlZUWldOMWNtVlRaWE56YVc5dVEyOXZhMmxsTEhWelpWOXdjbTk0ZVRvaElXNHVjSEp2ZUhrc2MybHNaVzUwWDIxMWJIUnBjR3hsWDJsdWFYUTZiaTV6YVd4bGJuUk5kV3gwYVhCc1pVbHVhWFFzZEhKaFkydGZjMlZ6YzJsdmJsOWhZM0p2YzNOZmMzVmlaRzl0WVdsdWN6cHVMblJ5WVdOclUyVnpjMmx2YmtGamNtOXpjMU4xWW1SdmJXRnBibk1zWVd4c2IzZGZabUZzYkdKaFkydGZkRzlmYkc5allXeGZjM1J2Y21GblpUb2hJVzR1WVd4c2IzZEdZV3hzWW1GamExUnZURzlqWVd4VGRHOXlZV2RsTEhOMGIzSmxYMk52Ym5SbGVIUnpYMkZqY205emMxOXdZV2RsY3pvaElXNHVjM1J2Y21WRGIyNTBaWGgwYzBGamNtOXpjMUJoWjJWekxHRnNiRzkzWDNWdWRISjFjM1JsWkY5bGRtVnVkSE02SVNGdUxtRnNiRzkzVlc1MGNuVnpkR1ZrUlhabGJuUnpMSFJ5WVdOcmFXNW5YMk52Ym5ObGJuUTZiaTUwY21GamEybHVaME52Ym5ObGJuUjlmWFpoY2lCVWREc29ablZ1WTNScGIyNG9iaWw3Ymk1WFVrbFVRVUpNUlY5U1JWTlBWVkpEUlY5SFVrRlFTRkZNUFNKM2NtbDBZV0pzWlY5eVpYTnZkWEpqWlY5bmNtRndhSEZzSWl4dUxsSkZUVTlVUlY5RFQwNUdTVWRWVWtGVVNVOU9QU0p5WlcxdmRHVmZZMjl1Wm1sbmRYSmhkR2x2YmlJc2JpNVZVRVJCVkVWZlZrbEZWMTlPUVUxRlBTSjFjR1JoZEdWZmRtbGxkMTl1WVcxbElpeHVMa3hQVGtkZlFVNUpUVUZVU1U5T1gwWlNRVTFGUFNKc2IyNW5YMkZ1YVcxaGRHbHZibDltY21GdFpTSjlLU2hVZEh4OEtGUjBQWHQ5S1NrN2RtRnlJSEJwUFc1bGR5QlRaWFE3Wm5WdVkzUnBiMjRnYlc0b2JpbDdRWEp5WVhrdWFYTkJjbkpoZVNodUtTWW1ZbTRvYmk1bWFXeDBaWElvWm5WdVkzUnBiMjRvY2lsN2NtVjBkWEp1SUVwMEtGUjBMSElwZlNrcGZXWjFibU4wYVc5dUlHSnVLRzRwZTI0dVptOXlSV0ZqYUNobWRXNWpkR2x2YmloeUtYdHdhUzVoWkdRb2NpbDlLWDFtZFc1amRHbHZiaUJUYmlncGUzSmxkSFZ5YmlCd2FYMTJZWElnZW1VOUlqOGlPMloxYm1OMGFXOXVJRW9vYmlsN2RtRnlJSEk5VzEwc1lUMUpkQ2h1TENKemRHRmpheUlwTEhNOVUzUnlhVzVuS0c0cE8zSmxkSFZ5YmlCaEppWmZkQ2hoTEhNcEppWW9ZVDFoTG5Oc2FXTmxLSE11YkdWdVozUm9LU2tzWVNZbVlTNXpjR3hwZENoZ0NtQXBMbVp2Y2tWaFkyZ29ablZ1WTNScGIyNG9iQ2w3ZG1GeUlHUTlkMjRvYkNsOGZFRnVLR3dwZkh4VWJpaHNLWHg4Um00b2JDazdaQ1ltS0NGa0xtWjFibU1tSm1RdWJHbHVaU1ltS0dRdVpuVnVZejE2WlNrc2NpNXdkWE5vS0dRcEtYMHBMSHR0WlhOellXZGxPa2wwS0c0c0ltMWxjM05oWjJVaUtTeHVZVzFsT2tsMEtHNHNJbTVoYldVaUtTeHpkR0ZqYXpweWZYMTJZWElnWDJrOUlpZ29QenBtYVd4bGZHaDBkSEJ6UDN4aWJHOWlmR05vY205dFpTMWxlSFJsYm5OcGIyNThibUYwYVhabGZHVjJZV3g4ZDJWaWNHRmphM3h6Ym1sd2NHVjBmRHhoYm05dWVXMXZkWE0rZkZ4Y2R5dGNYQzU4WEZ3dktTNHFQeWtpTEZWbFBTSW9Qem82S0Z4Y1pDc3BLU0lzZUc0OWJtVjNJRkpsWjBWNGNDZ2lYbHhjY3lwaGRDQW9MaW8vS1NBL1hGd29JaTVqYjI1allYUW9YMmtwTG1OdmJtTmhkQ2hWWlN3aVB5SXBMbU52Ym1OaGRDaFZaU3dpUDF4Y0tUOWNYSE1xSkNJcExDSnBJaWtzVlc0OWJtVjNJRkpsWjBWNGNDZ2lYRndvS0Z4Y1V5b3BJaTVqYjI1allYUW9WV1VwTG1OdmJtTmhkQ2hWWlN3aVhGd3BJaWtwTzJaMWJtTjBhVzl1SUhkdUtHNHBlM1poY2lCeVBYaHVMbVY0WldNb2JpazdhV1lvY2lsN2RtRnlJR0U5Y2xzeVhTWW1jbHN5WFM1cGJtUmxlRTltS0NKdVlYUnBkbVVpS1QwOVBUQXNjejF5V3pKZEppWnlXekpkTG1sdVpHVjRUMllvSW1WMllXd2lLVDA5UFRBc2JEMVZiaTVsZUdWaktISmJNbDBwTzNKbGRIVnliaUJ6Smlac0ppWW9jbHN5WFQxc1d6RmRMSEpiTTEwOWJGc3lYU3h5V3pSZFBXeGJNMTBwTEh0aGNtZHpPbUUvVzNKYk1sMWRPbHRkTEdOdmJIVnRianB5V3pSZFB5dHlXelJkT25admFXUWdNQ3htZFc1ak9uSmJNVjE4ZkhwbExHeHBibVU2Y2xzelhUOHJjbHN6WFRwMmIybGtJREFzZFhKc09tRS9kbTlwWkNBd09uSmJNbDE5ZlgxMllYSWdSVzQ5Ym1WM0lGSmxaMFY0Y0NnaVhseGNjeXBoZENBL0lpNWpiMjVqWVhRb1gya3BMbU52Ym1OaGRDaFZaU3dpUHlJcExtTnZibU5oZENoVlpTd2lQejljWEhNcUpDSXBMQ0pwSWlrN1puVnVZM1JwYjI0Z1FXNG9iaWw3ZG1GeUlISTlSVzR1WlhobFl5aHVLVHRwWmloeUtYSmxkSFZ5Ym50aGNtZHpPbHRkTEdOdmJIVnRianB5V3pOZFB5dHlXek5kT25admFXUWdNQ3htZFc1ak9ucGxMR3hwYm1VNmNsc3lYVDhyY2xzeVhUcDJiMmxrSURBc2RYSnNPbkpiTVYxOWZYWmhjaUJEYmowdlhseHpLbUYwSUNnL09pZ29QenBjVzI5aWFtVmpkQ0J2WW1wbFkzUmNYU2svTGlzcElDay9YQ2cvS0NnL09tWnBiR1Y4YlhNdFlYQndlSHhvZEhSd2N6OThkMlZpY0dGamEzeGliRzlpS1RvdUtqOHBPaWhjWkNzcEtEODZPaWhjWkNzcEtUOWNLVDljY3lva0wyazdablZ1WTNScGIyNGdWRzRvYmlsN2RtRnlJSEk5UTI0dVpYaGxZeWh1S1R0cFppaHlLWEpsZEhWeWJudGhjbWR6T2x0ZExHTnZiSFZ0YmpweVd6UmRQeXR5V3pSZE9uWnZhV1FnTUN4bWRXNWpPbkpiTVYxOGZIcGxMR3hwYm1VNkszSmJNMTBzZFhKc09uSmJNbDE5ZlhaaGNpQkpiajB2WGx4ektpZ3VLajhwS0Q4NlhDZ29MaW8vS1Z3cEtUOG9QenBlZkVBcEtDZy9PbVpwYkdWOGFIUjBjSE0vZkdKc2IySjhZMmh5YjIxbGZIZGxZbkJoWTJ0OGNtVnpiM1Z5WTJWOFkyRndZV05wZEc5eWZGeGJibUYwYVhabEtTNHFQM3hiWGtCZEttSjFibVJzWlNrb1B6bzZLRnhrS3lrcFB5Zy9Pam9vWEdRcktTay9YSE1xSkM5cExFSnVQUzhvWEZNcktTQnNhVzVsSUNoY1pDc3BLRDg2SUQ0Z1pYWmhiQ0JzYVc1bElGeGtLeWtxSUQ0Z1pYWmhiQzlwTzJaMWJtTjBhVzl1SUVadUtHNHBlM1poY2lCeVBVbHVMbVY0WldNb2JpazdhV1lvY2lsN2RtRnlJR0U5Y2xzelhTWW1jbHN6WFM1cGJtUmxlRTltS0NJZ1BpQmxkbUZzSWlrK0xURXNjejFDYmk1bGVHVmpLSEpiTTEwcE8zSmxkSFZ5YmlCaEppWnpKaVlvY2xzelhUMXpXekZkTEhKYk5GMDljMXN5WFN4eVd6VmRQWFp2YVdRZ01Da3NlMkZ5WjNNNmNsc3lYVDl5V3pKZExuTndiR2wwS0NJc0lpazZXMTBzWTI5c2RXMXVPbkpiTlYwL0szSmJOVjA2ZG05cFpDQXdMR1oxYm1NNmNsc3hYWHg4ZW1Vc2JHbHVaVHB5V3pSZFB5dHlXelJkT25admFXUWdNQ3gxY213NmNsc3pYWDE5ZldaMWJtTjBhVzl1SUVsMEtHNHNjaWw3YVdZb0lTaDBlWEJsYjJZZ2JpRTlJbTlpYW1WamRDSjhmQ0Z1Zkh3aEtISWdhVzRnYmlrcEtYdDJZWElnWVQxdVczSmRPM0psZEhWeWJpQjBlWEJsYjJZZ1lUMDlJbk4wY21sdVp5SS9ZVHAyYjJsa0lEQjlmV1oxYm1OMGFXOXVJRXh1S0c0c2NpeGhMSE1wZTNaaGNpQnNQVnQ3ZFhKc09uSXNZMjlzZFcxdU9uTXNiR2x1WlRwaGZWMHNaRDE2YmlodUtTeG9QV1F1Ym1GdFpTeHZQV1F1YldWemMyRm5aVHR5WlhSMWNtNTdibUZ0WlRwb0xHMWxjM05oWjJVNmJ5eHpkR0ZqYXpwc2ZYMTJZWElnYTI0OUwxNG9QenBiVlhWZGJtTmhkV2RvZENBb1B6cGxlR05sY0hScGIyNDZJQ2svS1Q4b1B6b29LRDg2UlhaaGJIeEpiblJsY201aGJIeFNZVzVuWlh4U1pXWmxjbVZ1WTJWOFUzbHVkR0Y0ZkZSNWNHVjhWVkpKZkNsRmNuSnZjaWs2SUNrL0tGdGNjMXhUWFNvcEpDODdablZ1WTNScGIyNGdlbTRvYmlsN2RtRnlJSElzWVN4ek8zSmxkSFZ5Ym50OUxuUnZVM1J5YVc1bkxtTmhiR3dvYmlrOVBUMGlXMjlpYW1WamRDQlRkSEpwYm1kZElpWW1LSEk5YTI0dVpYaGxZeWh1S1N4aFBYSmJNVjBzY3oxeVd6SmRLU3g3Ym1GdFpUcGhMRzFsYzNOaFoyVTZjMzE5Wm5WdVkzUnBiMjRnSkdVb0tYdDJZWElnYmoweUxISTlibVYzSUVWeWNtOXlMR0U3YVdZb0lYSXVjM1JoWTJzcGRISjVlM1JvY205M0lISjlZMkYwWTJoN2ZYSmxkSFZ5YmlCQ1pTaG1kVzVqZEdsdmJpZ3BlM1poY2lCelBVb29jaWs3Y3k1emRHRmphejF6TG5OMFlXTnJMbk5zYVdObEtHNHBMR0U5YUdVb2N5bDlLU3hoZldaMWJtTjBhVzl1SUdobEtHNHBlM1poY2lCeVBYWnBLRzRwTzNKbGRIVnliaUJ1TG5OMFlXTnJMbVp2Y2tWaFkyZ29ablZ1WTNScGIyNG9ZU2w3ZG1GeUlITTlZUzVtZFc1alBUMDlJajhpUHlJOFlXNXZibmx0YjNWelBpSTZZUzVtZFc1akxHdzlZUzVoY21kekppWmhMbUZ5WjNNdWJHVnVaM1JvUGpBL0lpZ2lMbU52Ym1OaGRDaGhMbUZ5WjNNdWFtOXBiaWdpTENBaUtTd2lLU0lwT2lJaUxHUTlZUzVzYVc1bFB5STZJaTVqYjI1allYUW9ZUzVzYVc1bEtUb2lJaXhvUFdFdWJHbHVaU1ltWVM1amIyeDFiVzQvSWpvaUxtTnZibU5oZENoaExtTnZiSFZ0YmlrNklpSTdjaXM5WUFvZ0lHRjBJR0F1WTI5dVkyRjBLSE1wTG1OdmJtTmhkQ2hzTENJZ1FDQWlLUzVqYjI1allYUW9ZUzUxY213cExtTnZibU5oZENoa0tTNWpiMjVqWVhRb2FDbDlLU3h5ZldaMWJtTjBhVzl1SUhacEtHNHBlM0psZEhWeWJpSWlMbU52Ym1OaGRDaHVMbTVoYldWOGZDSkZjbkp2Y2lJc0lqb2dJaWt1WTI5dVkyRjBLRzR1YldWemMyRm5aU2w5Wm5WdVkzUnBiMjRnWTJVb2JpeHlMR0VzY3lsN2RtRnlJR3c5Y3owOVBYWnZhV1FnTUQ5N2ZUcHpMR1E5YkM1amIyMXdkWFJsU0dGdVpHeHBibWRUZEdGamF5eG9QVzViY2wwN2FXWW9kSGx3Wlc5bUlHZ2hQU0ptZFc1amRHbHZiaUlwYVdZb2NpQnBiaUJ1SmlaZmRDaHlMQ0p2YmlJcEtXZzlhV1U3Wld4elpTQnlaWFIxY201N2MzUnZjRHBwWlgwN2RtRnlJRzg5SVRFc1h6MW1kVzVqZEdsdmJpZ3BlMmxtS0c4cGNtVjBkWEp1SUdndVlYQndiSGtvZEdocGN5eGhjbWQxYldWdWRITXBPM1poY2lCd1BYQjBLR0Z5WjNWdFpXNTBjeWtzWXp0Q1pTaGhMRzUxYkd3c1czdDBZWEpuWlhRNmRHaHBjeXh3WVhKaGJXVjBaWEp6T25Bc2IyNVFiM04wUTJGc2JEcG1kVzVqZEdsdmJpaGxLWHRqUFdWOUxHaGhibVJzYVc1blUzUmhZMnM2WkQ4a1pTZ3BPblp2YVdRZ01IMWRLVHQyWVhJZ1p6MW9MbUZ3Y0d4NUtIUm9hWE1zY0NrN2NtVjBkWEp1SUdNbUprSmxLR01zYm5Wc2JDeGJaMTBwTEdkOU8zSmxkSFZ5YmlCdVczSmRQVjhzZTNOMGIzQTZablZ1WTNScGIyNG9LWHR2UFNFd0xHNWJjbDA5UFQxZkppWW9ibHR5WFQxb0tYMTlmWFpoY2lCU2JqMHlNakFxV0N4UGJqMGlKQ0lzVUc0OU16dG1kVzVqZEdsdmJpQWtLRzRzY2lsN2NqMDlQWFp2YVdRZ01DWW1LSEk5VW00cE8zWmhjaUJoUFhobEtFOWlhbVZqZEM1d2NtOTBiM1I1Y0dVcExITTllR1VvUVhKeVlYa3VjSEp2ZEc5MGVYQmxLU3hzUFZ0ZExHUTlibVYzSUZkbFlXdE5ZWEFzYUQxQ2RDaHVMRTl1TEhadmFXUWdNQ3hzTEdRcExHODlTbE5QVGk1emRISnBibWRwWm5rb2FDa3NYejF2UDI4dWJHVnVaM1JvT2pBN2FXWW9YejV5S1h0R2RDaHlMQ0prYVhOallYSmtaV1FpTEc0cE8zSmxkSFZ5Ym4xbWIzSW9PMnd1YkdWdVozUm9QakFtSmw4OGNqc3BlM1poY2lCd1BXd3VjMmhwWm5Rb0tTeGpQVEE3YVdZb1FYSnlZWGt1YVhOQmNuSmhlU2h3TG5OdmRYSmpaU2twWm05eUtIWmhjaUJuUFRBN1p6eHdMbk52ZFhKalpTNXNaVzVuZEdnN1p5c3JLWHQyWVhJZ1pUMUNkQ2h3TG5OdmRYSmpaVnRuWFN4d0xuQmhkR2dzWnl4c0xHUXBPMmxtS0dVaFBUMTJiMmxrSURBL1h5czlTbE5QVGk1emRISnBibWRwWm5rb1pTa3ViR1Z1WjNSb09sOHJQVFFzWHlzOVl5eGpQVEVzWHo1eUtYdEdkQ2h5TENKMGNuVnVZMkYwWldRaUxHNHBPMkp5WldGcmZYQXVkR0Z5WjJWMFcyZGRQV1Y5Wld4elpTQm1iM0lvZG1GeUlHY2dhVzRnY0M1emIzVnlZMlVwYVdZb1QySnFaV04wTG5CeWIzUnZkSGx3WlM1b1lYTlBkMjVRY205d1pYSjBlUzVqWVd4c0tIQXVjMjkxY21ObExHY3BLWHQyWVhJZ1pUMUNkQ2h3TG5OdmRYSmpaVnRuWFN4d0xuQmhkR2dzWnl4c0xHUXBPMmxtS0dVaFBUMTJiMmxrSURBbUppaGZLejFLVTA5T0xuTjBjbWx1WjJsbWVTaGxLUzVzWlc1bmRHZ3JZeXRuTG14bGJtZDBhQ3RRYml4alBURXBMRjgrY2lsN1JuUW9jaXdpZEhKMWJtTmhkR1ZrSWl4dUtUdGljbVZoYTMxd0xuUmhjbWRsZEZ0blhUMWxmWDF5WlhSMWNtNGdZU2dwTEhNb0tTeG9mV1oxYm1OMGFXOXVJRUowS0c0c2NpeGhMSE1zYkNsN2RtRnlJR1E5VFc0b2JpazdhV1lvSVdSOGZIUjVjR1Z2WmlCa0lUMGliMkpxWldOMElpbHlaWFIxY200Z1JHNG9aQ2s3ZG1GeUlHZzlUbTRvWkNrN2FXWW9hQ0U5UFNKYlQySnFaV04wWFNJbUptZ2hQVDBpVzBGeWNtRjVYU0ltSm1naFBUMGlXMFZ5Y205eVhTSXBjbVYwZFhKdUlHZzdkbUZ5SUc4OWJqdHBaaWhzTG1oaGN5aHZLU2x5WlhSMWNtNGlXMUpsWm1WeVpXNWpaU0J6WldWdUlHRjBJQ0l1WTI5dVkyRjBLR3d1WjJWMEtHOHBMQ0pkSWlrN2RtRnlJRjg5WVNFOVBYWnZhV1FnTUQ4aUlpNWpiMjVqWVhRb2Npd2lMaUlwTG1OdmJtTmhkQ2hoS1RweUxIQTlRWEp5WVhrdWFYTkJjbkpoZVNoa0tUOWJYVHA3ZlR0eVpYUjFjbTRnYkM1elpYUW9ieXhmS1N4ekxuQjFjMmdvZTNOdmRYSmpaVHBrTEhSaGNtZGxkRHB3TEhCaGRHZzZYMzBwTEhCOVpuVnVZM1JwYjI0Z1JHNG9iaWw3Y21WMGRYSnVJSFI1Y0dWdlppQnVQVDBpWW1sbmFXNTBJajhpVzBKcFowbHVkRjBnSWk1amIyNWpZWFFvYmk1MGIxTjBjbWx1WnlncEtUcDBlWEJsYjJZZ2JqMDlJbVoxYm1OMGFXOXVJajhpVzBaMWJtTjBhVzl1WFNBaUxtTnZibU5oZENodUxtNWhiV1Y4ZkNKMWJtdHViM2R1SWlrNmRIbHdaVzltSUc0OVBTSnplVzFpYjJ3aVB5SmJVM2x0WW05c1hTQWlMbU52Ym1OaGRDaHVMbVJsYzJOeWFYQjBhVzl1Zkh4dUxuUnZVM1J5YVc1bktDa3BPbTU5Wm5WdVkzUnBiMjRnVG00b2JpbDdkSEo1ZTJsbUtHNGdhVzV6ZEdGdVkyVnZaaUJGZG1WdWRDbHlaWFIxY201N2FYTlVjblZ6ZEdWa09tNHVhWE5VY25WemRHVmtmVHQyWVhJZ2NqMVBZbXBsWTNRdWNISnZkRzkwZVhCbExuUnZVM1J5YVc1bkxtTmhiR3dvYmlrc1lUMXlMbTFoZEdOb0tDOWNXMjlpYW1WamRDQW9MaW9wWEYwdktUdHBaaWhoSmlaaFd6RmRLWEpsZEhWeWJpSmJJaTVqYjI1allYUW9ZVnN4WFN3aVhTSXBmV05oZEdOb2UzMXlaWFIxY200aVcxVnVjMlZ5YVdGc2FYcGhZbXhsWFNKOVpuVnVZM1JwYjI0Z1RXNG9iaWw3ZG1GeUlISTlianRwWmloeUppWjBlWEJsYjJZZ2NpNTBiMHBUVDA0OVBTSm1kVzVqZEdsdmJpSXBkSEo1ZTNKbGRIVnliaUJ5TG5SdlNsTlBUaWdwZldOaGRHTm9lMzF5WlhSMWNtNGdibjFtZFc1amRHbHZiaUJHZENodUxISXNZU2w3ZWk1M1lYSnVLQ0pVYUdVZ1pHRjBZU0J3Y205MmFXUmxaQ0JvWVhNZ1ltVmxiaUFpTG1OdmJtTmhkQ2h5TENJZ1lYTWdhWFFnYVhNZ2IzWmxjaUIwYUdVZ2JHbHRhWFFnYjJZZ0lpa3VZMjl1WTJGMEtHNHNJaUJqYUdGeVlXTjBaWEp6T2lJcExHRXBmWFpoY2lCbmFUMGlUbThnYzNSaFkyc3NJR052Ym5OcFpHVnlJSFZ6YVc1bklHRnVJR2x1YzNSaGJtTmxJRzltSUVWeWNtOXlJanRtZFc1amRHbHZiaUI1YVNodUtYdDJZWElnY2oxdUxuTjBZV05yVkhKaFkyVXNZVDF1TG05eWFXZHBibUZzUlhKeWIzSXNjejF1TG1oaGJtUnNhVzVuVTNSaFkyc3NiRDF1TG5OMFlYSjBRMnh2WTJ0ekxHUTliaTV1YjI1RmNuSnZjbEJ5WldacGVDeG9QVzR1YzI5MWNtTmxMRzg5Ymk1b1lXNWtiR2x1Wnl4ZlBXRWdhVzV6ZEdGdVkyVnZaaUJGY25KdmNpeHdQVWR1S0hJc1h5eGtMR0VwTEdNOVNHNG9YeXh5S1Q5b1pTaHlLVHBuYVN4blBWOC9ZbWtvWVN4b0tUcDJiMmxrSURBc1pUMXlQM0l1Ym1GdFpUcDJiMmxrSURBc2REMXRhU2hoS1R0eVpYUjFjbTU3YzNSaGNuUkRiRzlqYTNNNmJDeHpiM1Z5WTJVNmFDeG9ZVzVrYkdsdVp6cHZMR2hoYm1Sc2FXNW5VM1JoWTJzNmN5eHZjbWxuYVc1aGJFVnljbTl5T21Fc2RIbHdaVHBsTEcxbGMzTmhaMlU2Y0N4emRHRmphenBqTEdOaGRYTmxjenBuTEdacGJtZGxjbkJ5YVc1ME9uUjlmV1oxYm1OMGFXOXVJRWR1S0c0c2NpeGhMSE1wZTNKbGRIVnliaUJ1SVQxdWRXeHNKaVp1TG0xbGMzTmhaMlVtSmlodUlUMXVkV3hzSmladUxtNWhiV1VwUDI0dWJXVnpjMkZuWlRweVB5SkZiWEIwZVNCdFpYTnpZV2RsSWpvaUlpNWpiMjVqWVhRb1lTd2lJQ0lwTG1OdmJtTmhkQ2gxWlNna0tITXBLU2w5Wm5WdVkzUnBiMjRnU0c0b2JpeHlLWHR5WlhSMWNtNGdjajA5UFhadmFXUWdNRDhoTVRwdVB5RXdPbkl1YzNSaFkyc3ViR1Z1WjNSb1BqQW1KaWh5TG5OMFlXTnJMbXhsYm1kMGFENHhmSHh5TG5OMFlXTnJXekJkTG5WeWJDRTlQWFp2YVdRZ01DbDlablZ1WTNScGIyNGdiV2tvYmlsN2NtVjBkWEp1SUc0Z2FXNXpkR0Z1WTJWdlppQkZjbkp2Y2lZbUltUmtYMlpwYm1kbGNuQnlhVzUwSW1sdUlHNC9VM1J5YVc1bktHNHVaR1JmWm1sdVoyVnljSEpwYm5RcE9uWnZhV1FnTUgxbWRXNWpkR2x2YmlCWmJpaHVLWHQyWVhJZ2NqdHlaWFIxY200b2NqMHZRQ0FvTGlzcEx5NWxlR1ZqS0c0cEtUMDlQVzUxYkd4OGZISTlQVDEyYjJsa0lEQS9kbTlwWkNBd09uSmJNVjE5Wm5WdVkzUnBiMjRnWW1rb2JpeHlLWHRtYjNJb2RtRnlJR0U5Yml4elBWdGRPeWhoUFQxdWRXeHNQM1p2YVdRZ01EcGhMbU5oZFhObEtXbHVjM1JoYm1ObGIyWWdSWEp5YjNJbUpuTXViR1Z1WjNSb1BERXdPeWw3ZG1GeUlHdzlTaWhoTG1OaGRYTmxLVHR6TG5CMWMyZ29lMjFsYzNOaFoyVTZZUzVqWVhWelpTNXRaWE56WVdkbExITnZkWEpqWlRweUxIUjVjR1U2YkQwOWJuVnNiRDkyYjJsa0lEQTZiQzV1WVcxbExITjBZV05yT213bUptaGxLR3dwZlNrc1lUMWhMbU5oZFhObGZYSmxkSFZ5YmlCekxteGxibWQwYUQ5ek9uWnZhV1FnTUgxMllYSWdTRDE3UVVkRlRsUTZJbUZuWlc1MElpeERUMDVUVDB4Rk9pSmpiMjV6YjJ4bElpeERWVk5VVDAwNkltTjFjM1J2YlNJc1RFOUhSMFZTT2lKc2IyZG5aWElpTEU1RlZGZFBVa3M2SW01bGRIZHZjbXNpTEZOUFZWSkRSVG9pYzI5MWNtTmxJaXhTUlZCUFVsUTZJbkpsY0c5eWRDSjlPMloxYm1OMGFXOXVJRlp1S0c0cGUzWmhjaUJ5UFdaMWJtTjBhVzl1S0d3c1pDbDdkbUZ5SUdnOWVXa29lM04wWVdOclZISmhZMlU2YkN4dmNtbG5hVzVoYkVWeWNtOXlPbVFzYzNSaGNuUkRiRzlqYTNNNlpXVW9LU3h1YjI1RmNuSnZjbEJ5WldacGVEb2lWVzVqWVhWbmFIUWlMSE52ZFhKalpUcElMbE5QVlZKRFJTeG9ZVzVrYkdsdVp6b2lkVzVvWVc1a2JHVmtJbjBwTzI0dWJtOTBhV1o1S0dncGZTeGhQV3B1S0hJcExuTjBiM0FzY3oxTGJpaHlLUzV6ZEc5d08zSmxkSFZ5Ym50emRHOXdPbVoxYm1OMGFXOXVLQ2w3WVNncExITW9LWDE5ZldaMWJtTjBhVzl1SUdwdUtHNHBlM0psZEhWeWJpQmpaU2gzYVc1a2IzY3NJbTl1WlhKeWIzSWlMR1oxYm1OMGFXOXVLSElwZTNaaGNpQmhQWEl1Y0dGeVlXMWxkR1Z5Y3l4elBXRmJNRjBzYkQxaFd6RmRMR1E5WVZzeVhTeG9QV0ZiTTEwc2J6MWhXelJkTEY4N2J5QnBibk4wWVc1alpXOW1JRVZ5Y205eVAxODlTaWh2S1RwZlBVeHVLSE1zYkN4a0xHZ3BMRzRvWHl4dlB6OXpLWDBwZldaMWJtTjBhVzl1SUV0dUtHNHBlM0psZEhWeWJpQmpaU2gzYVc1a2IzY3NJbTl1ZFc1b1lXNWtiR1ZrY21WcVpXTjBhVzl1SWl4bWRXNWpkR2x2YmloeUtYdDJZWElnWVQxeUxuQmhjbUZ0WlhSbGNuTmJNRjBzY3oxaExuSmxZWE52Ym54OElrVnRjSFI1SUhKbFlYTnZiaUlzYkQxS0tITXBPMjRvYkN4ektYMHBmV1oxYm1OMGFXOXVJSEZ1S0c0cGUzWmhjaUJ5UFU4b2UzWmxjbk5wYjI0NklqVXVNamt1TVNJc2IyNVNaV0ZrZVRwbWRXNWpkR2x2YmloaEtYdGhLQ2w5ZlN4dUtUdHlaWFIxY200Z1QySnFaV04wTG1SbFptbHVaVkJ5YjNCbGNuUjVLSElzSWw5elpYUkVaV0oxWnlJc2UyZGxkRHBtZFc1amRHbHZiaWdwZTNKbGRIVnliaUI1Y24wc1pXNTFiV1Z5WVdKc1pUb2hNWDBwTEhKOVpuVnVZM1JwYjI0Z1YyNG9iaXh5TEdFcGUzWmhjaUJ6UFc1YmNsMDdjeVltSVhNdWNTWW1jeTUyWlhKemFXOXVKaVo2TG5kaGNtNG9JbE5FU3lCcGN5QnNiMkZrWldRZ2JXOXlaU0IwYUdGdUlHOXVZMlV1SUZSb2FYTWdhWE1nZFc1emRYQndiM0owWldRZ1lXNWtJRzFwWjJoMElHaGhkbVVnZFc1bGVIQmxZM1JsWkNCaVpXaGhkbWx2Y2k0aUtTeHVXM0pkUFdFc2N5WW1jeTV4SmlaekxuRXVabTl5UldGamFDaG1kVzVqZEdsdmJpaHNLWHR5WlhSMWNtNGdjWFFvYkN3aWIyNVNaV0ZrZVNCallXeHNZbUZqYXlCMGFISmxkeUJoYmlCbGNuSnZjam9pS1NncGZTbDlablZ1WTNScGIyNGdVMmtvYml4eUtYdHlMbk5wYkdWdWRFMTFiSFJwY0d4bFNXNXBkSHg4ZWk1bGNuSnZjaWdpSWk1amIyNWpZWFFvYml3aUlHbHpJR0ZzY21WaFpIa2dhVzVwZEdsaGJHbDZaV1F1SWlrcGZXWjFibU4wYVc5dUlIQmxLRzRzY2l4aExITXNiQ2w3Y21WMGRYSnVJRXgwS0c0c2NpeGJZVjBzY3l4c0tYMW1kVzVqZEdsdmJpQk1kQ2h1TEhJc1lTeHpMR3dwZTNaaGNpQmtQV3c5UFQxMmIybGtJREEvZTMwNmJDeG9QV1F1YjI1alpTeHZQV1F1WTJGd2RIVnlaU3hmUFdRdWNHRnpjMmwyWlN4d1BVSW9ablZ1WTNScGIyNG9kQ2w3SVhRdWFYTlVjblZ6ZEdWa0ppWWhkQzVmWDJSa1NYTlVjblZ6ZEdWa0ppWWhiaTVoYkd4dmQxVnVkSEoxYzNSbFpFVjJaVzUwYzN4OEtHZ21KbVVvS1N4ektIUXBLWDBwTEdNOVh6OTdZMkZ3ZEhWeVpUcHZMSEJoYzNOcGRtVTZYMzA2Ynl4blBXSmxLSElzSW1Ga1pFVjJaVzUwVEdsemRHVnVaWElpS1R0aExtWnZja1ZoWTJnb1puVnVZM1JwYjI0b2RDbDdjbVYwZFhKdUlHY3VZMkZzYkNoeUxIUXNjQ3hqS1gwcE8yWjFibU4wYVc5dUlHVW9LWHQyWVhJZ2REMWlaU2h5TENKeVpXMXZkbVZGZG1WdWRFeHBjM1JsYm1WeUlpazdZUzVtYjNKRllXTm9LR1oxYm1OMGFXOXVLR2twZTNKbGRIVnliaUIwTG1OaGJHd29jaXhwTEhBc1l5bDlLWDF5WlhSMWNtNTdjM1J2Y0RwbGZYMTJZWElnV21VOWUybHVkR1Z5ZG1WdWRHbHZiam9pYVc1MFpYSjJaVzUwYVc5dUlpeGtaWEJ5WldOaGRHbHZiam9pWkdWd2NtVmpZWFJwYjI0aUxHTnpjRlpwYjJ4aGRHbHZiam9pWTNOd1gzWnBiMnhoZEdsdmJpSjlPMloxYm1OMGFXOXVJRmh1S0c0c2NpbDdkbUZ5SUdFOVcxMDdlV1VvY2l4YVpTNWpjM0JXYVc5c1lYUnBiMjRwSmlaaExuQjFjMmdvSkc0b2Jpa3BPM1poY2lCelBYSXVabWxzZEdWeUtHWjFibU4wYVc5dUtHd3BlM0psZEhWeWJpQnNJVDA5V21VdVkzTndWbWx2YkdGMGFXOXVmU2s3Y21WMGRYSnVJSE11YkdWdVozUm9KaVpoTG5CMWMyZ29TbTRvY3lrcExHVnBMbUZ3Y0d4NUtIWnZhV1FnTUN4aEtYMW1kVzVqZEdsdmJpQktiaWh1S1h0eVpYUjFjbTRnYm1WM0lGSW9ablZ1WTNScGIyNG9jaWw3YVdZb2QybHVaRzkzTGxKbGNHOXlkR2x1WjA5aWMyVnlkbVZ5S1h0MllYSWdZVDFDS0daMWJtTjBhVzl1S0d3c1pDbDdjbVYwZFhKdUlHd3VabTl5UldGamFDaG1kVzVqZEdsdmJpaG9LWHR5WlhSMWNtNGdjaTV1YjNScFpua29XbTRvYUNrcGZTbDlLU3h6UFc1bGR5QjNhVzVrYjNjdVVtVndiM0owYVc1blQySnpaWEoyWlhJb1lTeDdkSGx3WlhNNmJpeGlkV1ptWlhKbFpEb2hNSDBwTzNKbGRIVnliaUJ6TG05aWMyVnlkbVVvS1N4bWRXNWpkR2x2YmlncGUzTXVaR2x6WTI5dWJtVmpkQ2dwZlgxOUtYMW1kVzVqZEdsdmJpQWtiaWh1S1h0eVpYUjFjbTRnYm1WM0lGSW9ablZ1WTNScGIyNG9jaWw3ZG1GeUlHRTljR1VvYml4a2IyTjFiV1Z1ZEN3aWMyVmpkWEpwZEhsd2IyeHBZM2wyYVc5c1lYUnBiMjRpTEdaMWJtTjBhVzl1S0hNcGUzSXVibTkwYVdaNUtGRnVLSE1wS1gwcExuTjBiM0E3Y21WMGRYSnVJR0Y5S1gxbWRXNWpkR2x2YmlCYWJpaHVLWHQyWVhJZ2NqMXVMblI1Y0dVc1lUMXVMbUp2WkhrN2NtVjBkWEp1SUhocEtIdDBlWEJsT21FdWFXUXNiV1Z6YzJGblpUb2lJaTVqYjI1allYUW9jaXdpT2lBaUtTNWpiMjVqWVhRb1lTNXRaWE56WVdkbEtTeHZjbWxuYVc1aGJFVnljbTl5T200c2MzUmhZMnM2Vldrb1lTNXBaQ3hoTG0xbGMzTmhaMlVzWVM1emIzVnlZMlZHYVd4bExHRXViR2x1WlU1MWJXSmxjaXhoTG1OdmJIVnRiazUxYldKbGNpbDlLWDFtZFc1amRHbHZiaUJSYmlodUtYdDJZWElnY2owaUp5SXVZMjl1WTJGMEtHNHVZbXh2WTJ0bFpGVlNTU3dpSnlCaWJHOWphMlZrSUdKNUlDY2lLUzVqYjI1allYUW9iaTVsWm1abFkzUnBkbVZFYVhKbFkzUnBkbVVzSWljZ1pHbHlaV04wYVhabElpazdjbVYwZFhKdUlIaHBLSHQwZVhCbE9tNHVaV1ptWldOMGFYWmxSR2x5WldOMGFYWmxMRzFsYzNOaFoyVTZJaUl1WTI5dVkyRjBLRnBsTG1OemNGWnBiMnhoZEdsdmJpd2lPaUFpS1M1amIyNWpZWFFvY2lrc2IzSnBaMmx1WVd4RmNuSnZjanB1TEdOemNEcDdaR2x6Y0c5emFYUnBiMjQ2Ymk1a2FYTndiM05wZEdsdmJuMHNjM1JoWTJzNlZXa29iaTVsWm1abFkzUnBkbVZFYVhKbFkzUnBkbVVzYmk1dmNtbG5hVzVoYkZCdmJHbGplVDhpSWk1amIyNWpZWFFvY2l3bklHOW1JSFJvWlNCd2IyeHBZM2tnSWljcExtTnZibU5oZENoNGNpaHVMbTl5YVdkcGJtRnNVRzlzYVdONUxERXdNQ3dpTGk0dUlpa3NKeUluS1RvaWJtOGdjRzlzYVdONUlpeHVMbk52ZFhKalpVWnBiR1VzYmk1c2FXNWxUblZ0WW1WeUxHNHVZMjlzZFcxdVRuVnRZbVZ5S1gwcGZXWjFibU4wYVc5dUlIaHBLRzRwZTNKbGRIVnliaUJQS0h0emRHRnlkRU5zYjJOcmN6cGxaU2dwTEhOdmRYSmpaVHBJTGxKRlVFOVNWQ3hvWVc1a2JHbHVaem9pZFc1b1lXNWtiR1ZrSW4wc2JpbDlablZ1WTNScGIyNGdWV2tvYml4eUxHRXNjeXhzS1h0eVpYUjFjbTRnWVQ5b1pTaDdibUZ0WlRwdUxHMWxjM05oWjJVNmNpeHpkR0ZqYXpwYmUyWjFibU02SWo4aUxIVnliRHBoTEd4cGJtVTZjejgvZG05cFpDQXdMR052YkhWdGJqcHNQejkyYjJsa0lEQjlYWDBwT25admFXUWdNSDFtZFc1amRHbHZiaUIzYVNodUxISXBlM1poY2lCaFBYZHBibVJ2ZHk1ZlgyUmtRbkp2ZDNObGNsTmthMFY0ZEdWdWMybHZia05oYkd4aVlXTnJPMkVtSm1Fb2UzUjVjR1U2Yml4d1lYbHNiMkZrT25KOUtYMW1kVzVqZEdsdmJpQnJkQ2h1S1h0eVpYUjFjbTRnYmowOVBXNTFiR3cvSW01MWJHd2lPa0Z5Y21GNUxtbHpRWEp5WVhrb2Jpay9JbUZ5Y21GNUlqcDBlWEJsYjJZZ2JuMW1kVzVqZEdsdmJpQlJaU2h1TEhJc1lTbDdhV1lvWVQwOVBYWnZhV1FnTUNZbUtHRTlaWE1vS1Nrc2NqMDlQWFp2YVdRZ01DbHlaWFIxY200Z2JqdHBaaWgwZVhCbGIyWWdjaUU5SW05aWFtVmpkQ0o4ZkhJOVBUMXVkV3hzS1hKbGRIVnliaUJ5TzJsbUtISWdhVzV6ZEdGdVkyVnZaaUJFWVhSbEtYSmxkSFZ5YmlCdVpYY2dSR0YwWlNoeUxtZGxkRlJwYldVb0tTazdhV1lvY2lCcGJuTjBZVzVqWlc5bUlGSmxaMFY0Y0NsN2RtRnlJSE05Y2k1bWJHRm5jM3g4VzNJdVoyeHZZbUZzUHlKbklqb2lJaXh5TG1sbmJtOXlaVU5oYzJVL0lta2lPaUlpTEhJdWJYVnNkR2xzYVc1bFB5SnRJam9pSWl4eUxuTjBhV05yZVQ4aWVTSTZJaUlzY2k1MWJtbGpiMlJsUHlKMUlqb2lJbDB1YW05cGJpZ2lJaWs3Y21WMGRYSnVJRzVsZHlCU1pXZEZlSEFvY2k1emIzVnlZMlVzY3lsOWFXWW9JV0V1YUdGelFXeHlaV0ZrZVVKbFpXNVRaV1Z1S0hJcEtYdHBaaWhCY25KaGVTNXBjMEZ5Y21GNUtISXBLWHRtYjNJb2RtRnlJR3c5UVhKeVlYa3VhWE5CY25KaGVTaHVLVDl1T2x0ZExHUTlNRHRrUEhJdWJHVnVaM1JvT3lzclpDbHNXMlJkUFZGbEtHeGJaRjBzY2x0a1hTeGhLVHR5WlhSMWNtNGdiSDEyWVhJZ2FEMXJkQ2h1S1QwOVBTSnZZbXBsWTNRaVAyNDZlMzA3Wm05eUtIWmhjaUJ2SUdsdUlISXBUMkpxWldOMExuQnliM1J2ZEhsd1pTNW9ZWE5QZDI1UWNtOXdaWEowZVM1allXeHNLSElzYnlrbUppaG9XMjlkUFZGbEtHaGJiMTBzY2x0dlhTeGhLU2s3Y21WMGRYSnVJR2g5ZldaMWJtTjBhVzl1SUVWcEtHNHBlM0psZEhWeWJpQlJaU2gyYjJsa0lEQXNiaWw5Wm5WdVkzUnBiMjRnZDJVb0tYdG1iM0lvZG1GeUlHNDlXMTBzY2owd08zSThZWEpuZFcxbGJuUnpMbXhsYm1kMGFEdHlLeXNwYmx0eVhUMWhjbWQxYldWdWRITmJjbDA3Wm05eUtIWmhjaUJoTEhNOU1DeHNQVzQ3Y3p4c0xteGxibWQwYUR0ekt5c3BlM1poY2lCa1BXeGJjMTA3WkNFOWJuVnNiQ1ltS0dFOVVXVW9ZU3hrS1NsOWNtVjBkWEp1SUdGOVpuVnVZM1JwYjI0Z1pYTW9LWHRwWmloMGVYQmxiMllnVjJWaGExTmxkRHdpZFNJcGUzWmhjaUJ1UFc1bGR5QlhaV0ZyVTJWME8zSmxkSFZ5Ym50b1lYTkJiSEpsWVdSNVFtVmxibE5sWlc0NlpuVnVZM1JwYjI0b1lTbDdkbUZ5SUhNOWJpNW9ZWE1vWVNrN2NtVjBkWEp1SUhOOGZHNHVZV1JrS0dFcExITjlmWDEyWVhJZ2NqMWJYVHR5WlhSMWNtNTdhR0Z6UVd4eVpXRmtlVUpsWlc1VFpXVnVPbVoxYm1OMGFXOXVLR0VwZTNaaGNpQnpQWEl1YVc1a1pYaFBaaWhoS1Q0OU1EdHlaWFIxY200Z2MzeDhjaTV3ZFhOb0tHRXBMSE45ZlgxbWRXNWpkR2x2YmlCMGN5Z3BlM1poY2lCdUxISTlkMmx1Wkc5M0xtNWhkbWxuWVhSdmNqdHlaWFIxY201N2MzUmhkSFZ6T25JdWIyNU1hVzVsUHlKamIyNXVaV04wWldRaU9pSnViM1JmWTI5dWJtVmpkR1ZrSWl4cGJuUmxjbVpoWTJWek9uSXVZMjl1Ym1WamRHbHZiaVltY2k1amIyNXVaV04wYVc5dUxuUjVjR1UvVzNJdVkyOXVibVZqZEdsdmJpNTBlWEJsWFRwMmIybGtJREFzWldabVpXTjBhWFpsWDNSNWNHVTZLRzQ5Y2k1amIyNXVaV04wYVc5dUtUMDlQVzUxYkd4OGZHNDlQVDEyYjJsa0lEQS9kbTlwWkNBd09tNHVaV1ptWldOMGFYWmxWSGx3WlgxOVpuVnVZM1JwYjI0Z2FYTW9iaWw3ZG1GeUlISTlibVYzSUZObGREdHlaWFIxY200Z2JpNW1iM0pGWVdOb0tHWjFibU4wYVc5dUtHRXBlM0psZEhWeWJpQnlMbUZrWkNoaEtYMHBMSEIwS0hJcGZXWjFibU4wYVc5dUlFRnBLRzRzY2lsN2RtRnlJR0U5Ymk1cGJtUmxlRTltS0hJcE8yRStQVEFtSm00dWMzQnNhV05sS0dFc01TbDlkbUZ5SUhKelBUVXdNRHRtZFc1amRHbHZiaUJEYVNncGUzWmhjaUJ1UFZ0ZExISTlablZ1WTNScGIyNG9iQ2w3ZG1GeUlHUTliaTV3ZFhOb0tHd3BPMlErY25NbUptNHVjM0JzYVdObEtEQXNNU2w5TEdFOVpuVnVZM1JwYjI0b2JDbDdRV2tvYml4c0tYMHNjejFtZFc1amRHbHZiaWhzS1h0dUxtWnZja1ZoWTJnb1puVnVZM1JwYjI0b1pDbDdjbVYwZFhKdUlHUW9iQ2w5S1N4dUxteGxibWQwYUQwd2ZUdHlaWFIxY201N1lXUmtPbklzY21WdGIzWmxPbUVzWkhKaGFXNDZjMzE5ZG1GeUlGOWxQWHRzYjJjNklteHZaeUlzWTI5dVptbG5kWEpoZEdsdmJqb2lZMjl1Wm1sbmRYSmhkR2x2YmlJc2RYTmhaMlU2SW5WellXZGxJbjBzYm5NOVd5Sm9kSFJ3Y3pvdkwzZDNkeTVrWVhSaFpHOW5hSEV0WW5KdmQzTmxjaTFoWjJWdWRDNWpiMjBpTENKb2RIUndjem92TDNkM2R5NWtZWFJoWkRCbkxXSnliM2R6WlhJdFlXZGxiblF1WTI5dElpd2lhSFIwY0hNNkx5OWtNM1ZqTURZNVptTnVOM1Y0ZHk1amJHOTFaR1p5YjI1MExtNWxkQ0lzSW1oMGRIQnpPaTh2WkRJd2VIUjZkM3BqYkRCalpXSXVZMnh2ZFdSbWNtOXVkQzV1WlhRaUxDSm9kSFJ3T2k4dmJHOWpZV3hvYjNOMElpd2lQR0Z1YjI1NWJXOTFjejRpWFN4emN6MWJibTVkTEZScFBVTnBLQ2tzUldVOVpuVnVZM1JwYjI0b2JpbDdWR2t1WVdSa0tHWjFibU4wYVc5dUtDbDdjbVYwZFhKdUlFVmxLRzRwZlNsOU8yWjFibU4wYVc5dUlHOXpLRzRzY2lsN2RtRnlJR0VzY3l4c1BXNWxkeUJTTEdROWJtVjNJRk5sZEN4b1BTRjVaU2h6Y3l4eUxuTnBkR1VwSmlaT1pTaHlMblJsYkdWdFpYUnllVk5oYlhCc1pWSmhkR1VwTEc4OUtHRTllMzBzWVZ0ZlpTNXNiMmRkUFdnc1lWdGZaUzVqYjI1bWFXZDFjbUYwYVc5dVhUMW9KaVpPWlNoeUxuUmxiR1Z0WlhSeWVVTnZibVpwWjNWeVlYUnBiMjVUWVcxd2JHVlNZWFJsS1N4aFcxOWxMblZ6WVdkbFhUMW9KaVpPWlNoeUxuUmxiR1Z0WlhSeWVWVnpZV2RsVTJGdGNHeGxVbUYwWlNrc1lTa3NYejFoY3lncE8wVmxQV1oxYm1OMGFXOXVLR01wZTNaaGNpQm5QWFZsS0dNcE8ybG1LRzliWXk1MGVYQmxYU1ltWkM1emFYcGxQSEl1YldGNFZHVnNaVzFsZEhKNVJYWmxiblJ6VUdWeVVHRm5aU1ltSVdRdWFHRnpLR2NwS1h0MllYSWdaVDF3S0c0c1l5eGZLVHRzTG01dmRHbG1lU2hsS1N4M2FTZ2lkR1ZzWlcxbGRISjVJaXhsS1N4a0xtRmtaQ2huS1gxOUxHZHlLRUpwS1R0bWRXNWpkR2x2YmlCd0tHTXNaeXhsS1h0eVpYUjFjbTRnZDJVb2UzUjVjR1U2SW5SbGJHVnRaWFJ5ZVNJc1pHRjBaVHBSS0Nrc2MyVnlkbWxqWlRwakxIWmxjbk5wYjI0NklqVXVNamt1TVNJc2MyOTFjbU5sT2lKaWNtOTNjMlZ5SWl4ZlpHUTZlMlp2Y20xaGRGOTJaWEp6YVc5dU9qSjlMSFJsYkdWdFpYUnllVHAzWlNobkxIdHlkVzUwYVcxbFgyVnVkanBsTEdOdmJtNWxZM1JwZG1sMGVUcDBjeWdwTEhOa2ExOXpaWFIxY0RvaWJuQnRJbjBwTEdWNGNHVnlhVzFsYm5SaGJGOW1aV0YwZFhKbGN6cHdkQ2hUYmlncEtYMHNjeUU5UFhadmFXUWdNRDl6S0NrNmUzMHBmWEpsZEhWeWJudHpaWFJEYjI1MFpYaDBVSEp2ZG1sa1pYSTZablZ1WTNScGIyNG9ZeWw3Y3oxamZTeHZZbk5sY25aaFlteGxPbXdzWlc1aFlteGxaRHBvZlgxbWRXNWpkR2x2YmlCaGN5Z3BlM0psZEhWeWJudHBjMTlzYjJOaGJGOW1hV3hsT25kcGJtUnZkeTVzYjJOaGRHbHZiaTV3Y205MGIyTnZiRDA5UFNKbWFXeGxPaUlzYVhOZmQyOXlhMlZ5T2lKWGIzSnJaWEpIYkc5aVlXeFRZMjl3WlNKcGJpQnpaV3htZlgxbWRXNWpkR2x2YmlCbWN5Z3BlMVJwTG1SeVlXbHVLQ2w5Wm5WdVkzUnBiMjRnYkhNb2JpbDdjbVYwZFhKdUlHNHVjMmwwWlQwOVBYUnVmV1oxYm1OMGFXOXVJRWxwS0c0c2NpbDdaM1FvVEM1a1pXSjFaeXh1TEhJcExFVmxLRThvZTNSNWNHVTZYMlV1Ykc5bkxHMWxjM05oWjJVNmJpeHpkR0YwZFhNNkltUmxZblZuSW4wc2Npa3BmV1oxYm1OMGFXOXVJRUpwS0c0c2NpbDdSV1VvVHloN2RIbHdaVHBmWlM1c2IyY3NjM1JoZEhWek9pSmxjbkp2Y2lKOUxHaHpLRzRwTEhJcEtYMW1kVzVqZEdsdmJpQjFjeWh1S1h0RlpTaDdkSGx3WlRwZlpTNWpiMjVtYVdkMWNtRjBhVzl1TEdOdmJtWnBaM1Z5WVhScGIyNDZibjBwZldaMWJtTjBhVzl1SUdSektHNHBlMFZsS0h0MGVYQmxPbDlsTG5WellXZGxMSFZ6WVdkbE9tNTlLWDFtZFc1amRHbHZiaUJvY3lodUtYdHBaaWh1SUdsdWMzUmhibU5sYjJZZ1JYSnliM0lwZTNaaGNpQnlQVW9vYmlrN2NtVjBkWEp1ZTJWeWNtOXlPbnRyYVc1a09uSXVibUZ0WlN4emRHRmphenBvWlNoamN5aHlLU2w5TEcxbGMzTmhaMlU2Y2k1dFpYTnpZV2RsZlgxeVpYUjFjbTU3WlhKeWIzSTZlM04wWVdOck9tZHBmU3h0WlhOellXZGxPaUlpTG1OdmJtTmhkQ2dpVlc1allYVm5hSFFpTENJZ0lpa3VZMjl1WTJGMEtIVmxLRzRwS1gxOVpuVnVZM1JwYjI0Z1kzTW9iaWw3Y21WMGRYSnVJRzR1YzNSaFkyczliaTV6ZEdGamF5NW1hV3gwWlhJb1puVnVZM1JwYjI0b2NpbDdjbVYwZFhKdUlYSXVkWEpzZkh4dWN5NXpiMjFsS0daMWJtTjBhVzl1S0dFcGUzSmxkSFZ5YmlCZmRDaHlMblZ5YkN4aEtYMHBmU2tzYm4xMllYSWdaWFE5TVM4d0xIQnpQWE5sTzJaMWJtTjBhVzl1SUY5ektHNHBlM1poY2lCeVBXNHVaWGh3YVhKbFJHVnNZWGtzWVQxdUxtMWhlRVZ1ZEhKcFpYTXNjejFiWFN4c1BYbDBLR1oxYm1OMGFXOXVLQ2w3Y21WMGRYSnVJR1FvS1gwc2NITXBPMloxYm1OMGFXOXVJR1FvS1h0bWIzSW9kbUZ5SUdVOVRXVW9LUzF5TzNNdWJHVnVaM1JvUGpBbUpuTmJjeTVzWlc1bmRHZ3RNVjB1Wlc1a1ZHbHRaVHhsT3lsekxuQnZjQ2dwZldaMWJtTjBhVzl1SUdnb1pTeDBLWHQyWVhJZ2FUMTdkbUZzZFdVNlpTeHpkR0Z5ZEZScGJXVTZkQ3hsYm1SVWFXMWxPbVYwTEhKbGJXOTJaVHBtZFc1amRHbHZiaWdwZTBGcEtITXNhU2w5TEdOc2IzTmxPbVoxYm1OMGFXOXVLR1lwZTJrdVpXNWtWR2x0WlQxbWZYMDdjbVYwZFhKdUlHRW1Kbk11YkdWdVozUm9QajFoSmlaekxuQnZjQ2dwTEhNdWRXNXphR2xtZENocEtTeHBmV1oxYm1OMGFXOXVJRzhvWlN4MEtYdGxQVDA5ZG05cFpDQXdKaVlvWlQxbGRDa3NkRDA5UFhadmFXUWdNQ1ltS0hROWUzSmxkSFZ5YmtsdVlXTjBhWFpsT2lFeGZTazdabTl5S0haaGNpQnBQVEFzWmoxek8yazhaaTVzWlc1bmRHZzdhU3NyS1h0MllYSWdkVDFtVzJsZE8ybG1LSFV1YzNSaGNuUlVhVzFsUEQxbEtYdHBaaWgwTG5KbGRIVnlia2x1WVdOMGFYWmxmSHhsUEQxMUxtVnVaRlJwYldVcGNtVjBkWEp1SUhVdWRtRnNkV1U3WW5KbFlXdDlmWDFtZFc1amRHbHZiaUJmS0dVcGUzWmhjaUIwUFhOYk1GMDdkQ1ltZEM1bGJtUlVhVzFsUFQwOVpYUW1KblF1WTJ4dmMyVW9aU2w5Wm5WdVkzUnBiMjRnY0NobExIUXBlMlU5UFQxMmIybGtJREFtSmlobFBXVjBLU3gwUFQwOWRtOXBaQ0F3SmlZb2REMHdLVHQyWVhJZ2FUMXNjaWhsTEhRcE8zSmxkSFZ5YmlCekxtWnBiSFJsY2lobWRXNWpkR2x2YmlobUtYdHlaWFIxY200Z1ppNXpkR0Z5ZEZScGJXVThQV2ttSm1VOFBXWXVaVzVrVkdsdFpYMHBMbTFoY0NobWRXNWpkR2x2YmlobUtYdHlaWFIxY200Z1ppNTJZV3gxWlgwcGZXWjFibU4wYVc5dUlHTW9LWHR6UFZ0ZGZXWjFibU4wYVc5dUlHY29LWHRSZENoc0tYMXlaWFIxY201N1lXUmtPbWdzWm1sdVpEcHZMR05zYjNObFFXTjBhWFpsT2w4c1ptbHVaRUZzYkRwd0xISmxjMlYwT21Nc2MzUnZjRHBuZlgxMllYSWdkbk05YzJVc1ozTTllSFE3Wm5WdVkzUnBiMjRnZVhNb2JpeHlMR0VzY3lsN2RtRnlJR3c5Ym1WM0lGSXNaRDF1WlhjZ1VpeG9QU1J5S0c0dWMyVnpjMmx2YmxOMGIzSmxVM1J5WVhSbFozbFVlWEJsTEhJc1lTa3NiejFmY3loN1pYaHdhWEpsUkdWc1lYazZaM045S1R0b0xuSmxibVYzVDJKelpYSjJZV0pzWlM1emRXSnpZM0pwWW1Vb1puVnVZM1JwYjI0b0tYdHZMbUZrWkNoZktDa3NUV1VvS1Nrc2JDNXViM1JwWm5rb0tYMHBMR2d1Wlhod2FYSmxUMkp6WlhKMllXSnNaUzV6ZFdKelkzSnBZbVVvWm5WdVkzUnBiMjRvS1h0a0xtNXZkR2xtZVNncExHOHVZMnh2YzJWQlkzUnBkbVVvVFdVb0tTbDlLU3hvTG1WNGNHRnVaRTl5VW1WdVpYZFRaWE56YVc5dUtDa3NieTVoWkdRb1h5Z3BMR0Z5S0NrdWNtVnNZWFJwZG1VcExITXViMkp6WlhKMllXSnNaUzV6ZFdKelkzSnBZbVVvWm5WdVkzUnBiMjRvS1h0ekxtbHpSM0poYm5SbFpDZ3BQMmd1Wlhod1lXNWtUM0pTWlc1bGQxTmxjM05wYjI0b0tUcG9MbVY0Y0dseVpTZ3BmU2tzYlhNb2JpeG1kVzVqZEdsdmJpZ3BlM011YVhOSGNtRnVkR1ZrS0NrbUptZ3VaWGh3WVc1a1QzSlNaVzVsZDFObGMzTnBiMjRvS1gwcExHSnpLRzRzWm5WdVkzUnBiMjRvS1h0eVpYUjFjbTRnYUM1bGVIQmhibVJUWlhOemFXOXVLQ2w5S1N4VGN5aHVMR1oxYm1OMGFXOXVLQ2w3Y21WMGRYSnVJR2d1Y21WemRHRnlkRk5sYzNOcGIyNG9LWDBwTzJaMWJtTjBhVzl1SUY4b0tYdHlaWFIxY201N2FXUTZhQzVuWlhSVFpYTnphVzl1S0NrdWFXUXNkSEpoWTJ0cGJtZFVlWEJsT21ndVoyVjBVMlZ6YzJsdmJpZ3BXM0pkTEdselVtVndiR0Y1Um05eVkyVmtPaUVoYUM1blpYUlRaWE56YVc5dUtDa3VabTl5WTJWa1VtVndiR0Y1ZlgxeVpYUjFjbTU3Wm1sdVpGTmxjM05wYjI0NlpuVnVZM1JwYjI0b2NDeGpLWHR5WlhSMWNtNGdieTVtYVc1a0tIQXNZeWw5TEhKbGJtVjNUMkp6WlhKMllXSnNaVHBzTEdWNGNHbHlaVTlpYzJWeWRtRmliR1U2WkN4elpYTnphVzl1VTNSaGRHVlZjR1JoZEdWUFluTmxjblpoWW14bE9tZ3VjMlZ6YzJsdmJsTjBZWFJsVlhCa1lYUmxUMkp6WlhKMllXSnNaU3hsZUhCcGNtVTZhQzVsZUhCcGNtVXNkWEJrWVhSbFUyVnpjMmx2YmxOMFlYUmxPbWd1ZFhCa1lYUmxVMlZ6YzJsdmJsTjBZWFJsZlgxbWRXNWpkR2x2YmlCdGN5aHVMSElwZTB4MEtHNHNkMmx1Wkc5M0xGc2lZMnhwWTJzaUxDSjBiM1ZqYUhOMFlYSjBJaXdpYTJWNVpHOTNiaUlzSW5OamNtOXNiQ0pkTEhJc2UyTmhjSFIxY21VNklUQXNjR0Z6YzJsMlpUb2hNSDBwTG5OMGIzQjlablZ1WTNScGIyNGdZbk1vYml4eUtYdDJZWElnWVQxbWRXNWpkR2x2YmlncGUyUnZZM1Z0Wlc1MExuWnBjMmxpYVd4cGRIbFRkR0YwWlQwOVBTSjJhWE5wWW14bElpWW1jaWdwZlR0d1pTaHVMR1J2WTNWdFpXNTBMQ0oyYVhOcFltbHNhWFI1WTJoaGJtZGxJaXhoS1M1emRHOXdMSGwwS0dFc2RuTXBmV1oxYm1OMGFXOXVJRk56S0c0c2NpbDdjR1VvYml4M2FXNWtiM2NzSW5KbGMzVnRaU0lzY2l4N1kyRndkSFZ5WlRvaE1IMHBMbk4wYjNCOVpuVnVZM1JwYjI0Z1Jta29iaWw3Y21WMGRYSnVJRzQrUFRVd01IMW1kVzVqZEdsdmJpQjRjeWh1S1h0MGNubDdjbVYwZFhKdUlHNHVZMnh2Ym1Vb0tYMWpZWFJqYUh0eVpYUjFjbTU5ZlhaaGNpQlZjejA0TUNwWUxIZHpQVE15TEV4cFBUTXFXSFFzUlhNOWMyVXNhMms5VkdVN1puVnVZM1JwYjI0Z2Vta29iaXh5TEdFc2N5eHNLWHR5TG5SeVlXNXpjRzl5ZEZOMFlYUjFjejA5UFRBbUpuSXVjWFZsZFdWa1VHRjViRzloWkhNdWMybDZaU2dwUFQwOU1DWW1jaTVpWVc1a2QybGtkR2hOYjI1cGRHOXlMbU5oYmtoaGJtUnNaU2h1S1Q5UGFTaHVMSElzWVN4N2IyNVRkV05qWlhOek9tWjFibU4wYVc5dUtDbDdjbVYwZFhKdUlGQnBLREFzY2l4aExITXNiQ2w5TEc5dVJtRnBiSFZ5WlRwbWRXNWpkR2x2YmlncGUzSXVjWFZsZFdWa1VHRjViRzloWkhNdVpXNXhkV1YxWlNodUtTeFNhU2h5TEdFc2N5eHNLWDE5S1RweUxuRjFaWFZsWkZCaGVXeHZZV1J6TG1WdWNYVmxkV1VvYmlsOVpuVnVZM1JwYjI0Z1Vta29iaXh5TEdFc2N5bDdiaTUwY21GdWMzQnZjblJUZEdGMGRYTTlQVDB5SmlaR1pTaG1kVzVqZEdsdmJpZ3BlM1poY2lCc1BXNHVjWFZsZFdWa1VHRjViRzloWkhNdVptbHljM1FvS1R0UGFTaHNMRzRzY2l4N2IyNVRkV05qWlhOek9tWjFibU4wYVc5dUtDbDdiaTV4ZFdWMVpXUlFZWGxzYjJGa2N5NWtaWEYxWlhWbEtDa3NiaTVqZFhKeVpXNTBRbUZqYTI5bVpsUnBiV1U5YTJrc1VHa29NU3h1TEhJc1lTeHpLWDBzYjI1R1lXbHNkWEpsT21aMWJtTjBhVzl1S0NsN2JpNWpkWEp5Wlc1MFFtRmphMjltWmxScGJXVTlUV0YwYUM1dGFXNG9SWE1zYmk1amRYSnlaVzUwUW1GamEyOW1abFJwYldVcU1pa3NVbWtvYml4eUxHRXNjeWw5ZlNsOUxHNHVZM1Z5Y21WdWRFSmhZMnR2Wm1aVWFXMWxLWDFtZFc1amRHbHZiaUJQYVNodUxISXNZU3h6S1h0MllYSWdiRDF6TG05dVUzVmpZMlZ6Y3l4a1BYTXViMjVHWVdsc2RYSmxPM0l1WW1GdVpIZHBaSFJvVFc5dWFYUnZjaTVoWkdRb2Jpa3NZU2h1TEdaMWJtTjBhVzl1S0dncGUzSXVZbUZ1WkhkcFpIUm9UVzl1YVhSdmNpNXlaVzF2ZG1Vb2Jpa3NRWE1vYUNrL0tISXVkSEpoYm5Od2IzSjBVM1JoZEhWelBYSXVZbUZ1WkhkcFpIUm9UVzl1YVhSdmNpNXZibWR2YVc1blVtVnhkV1Z6ZEVOdmRXNTBQakEvTVRveUxHNHVjbVYwY25rOWUyTnZkVzUwT200dWNtVjBjbmsvYmk1eVpYUnllUzVqYjNWdWRDc3hPakVzYkdGemRFWmhhV3gxY21WVGRHRjBkWE02YUM1emRHRjBkWE45TEdRb0tTazZLSEl1ZEhKaGJuTndiM0owVTNSaGRIVnpQVEFzYkNncEtYMHBmV1oxYm1OMGFXOXVJRkJwS0c0c2NpeGhMSE1zYkNsN2JqMDlQVEFtSm5JdWNYVmxkV1ZrVUdGNWJHOWhaSE11YVhOR2RXeHNLQ2ttSmlGeUxuRjFaWFZsUm5Wc2JGSmxjRzl5ZEdWa0ppWW9iQ2g3YldWemMyRm5aVG9pVW1WaFkyaGxaQ0J0WVhnZ0lpNWpiMjVqWVhRb2N5d2lJR1YyWlc1MGN5QnphWHBsSUhGMVpYVmxaQ0JtYjNJZ2RYQnNiMkZrT2lBaUtTNWpiMjVqWVhRb1RHa3ZXSFFzSWsxcFFpSXBMSE52ZFhKalpUcElMa0ZIUlU1VUxITjBZWEowUTJ4dlkydHpPbVZsS0NsOUtTeHlMbkYxWlhWbFJuVnNiRkpsY0c5eWRHVmtQU0V3S1R0MllYSWdaRDF5TG5GMVpYVmxaRkJoZVd4dllXUnpPMlp2Y2loeUxuRjFaWFZsWkZCaGVXeHZZV1J6UFVScEtDazdaQzV6YVhwbEtDaytNRHNwZW1rb1pDNWtaWEYxWlhWbEtDa3NjaXhoTEhNc2JDbDlablZ1WTNScGIyNGdRWE1vYmlsN2NtVjBkWEp1SUc0dWRIbHdaU0U5UFNKdmNHRnhkV1VpSmlZb2JpNXpkR0YwZFhNOVBUMHdKaVloYm1GMmFXZGhkRzl5TG05dVRHbHVaWHg4Ymk1emRHRjBkWE05UFQwME1EaDhmRzR1YzNSaGRIVnpQVDA5TkRJNWZIeEdhU2h1TG5OMFlYUjFjeWtwZldaMWJtTjBhVzl1SUVOektDbDdjbVYwZFhKdWUzUnlZVzV6Y0c5eWRGTjBZWFIxY3pvd0xHTjFjbkpsYm5SQ1lXTnJiMlptVkdsdFpUcHJhU3hpWVc1a2QybGtkR2hOYjI1cGRHOXlPbFJ6S0Nrc2NYVmxkV1ZrVUdGNWJHOWhaSE02Ukdrb0tTeHhkV1YxWlVaMWJHeFNaWEJ2Y25SbFpEb2hNWDE5Wm5WdVkzUnBiMjRnUkdrb0tYdDJZWElnYmoxYlhUdHlaWFIxY201N1lubDBaWE5EYjNWdWREb3dMR1Z1Y1hWbGRXVTZablZ1WTNScGIyNG9jaWw3ZEdocGN5NXBjMFoxYkd3b0tYeDhLRzR1Y0hWemFDaHlLU3gwYUdsekxtSjVkR1Z6UTI5MWJuUXJQWEl1WW5sMFpYTkRiM1Z1ZENsOUxHWnBjbk4wT21aMWJtTjBhVzl1S0NsN2NtVjBkWEp1SUc1Yk1GMTlMR1JsY1hWbGRXVTZablZ1WTNScGIyNG9LWHQyWVhJZ2NqMXVMbk5vYVdaMEtDazdjbVYwZFhKdUlISW1KaWgwYUdsekxtSjVkR1Z6UTI5MWJuUXRQWEl1WW5sMFpYTkRiM1Z1ZENrc2NuMHNjMmw2WlRwbWRXNWpkR2x2YmlncGUzSmxkSFZ5YmlCdUxteGxibWQwYUgwc2FYTkdkV3hzT21aMWJtTjBhVzl1S0NsN2NtVjBkWEp1SUhSb2FYTXVZbmwwWlhORGIzVnVkRDQ5VEdsOWZYMW1kVzVqZEdsdmJpQlVjeWdwZTNKbGRIVnlibnR2Ym1kdmFXNW5VbVZ4ZFdWemRFTnZkVzUwT2pBc2IyNW5iMmx1WjBKNWRHVkRiM1Z1ZERvd0xHTmhia2hoYm1Sc1pUcG1kVzVqZEdsdmJpaHVLWHR5WlhSMWNtNGdkR2hwY3k1dmJtZHZhVzVuVW1WeGRXVnpkRU52ZFc1MFBUMDlNSHg4ZEdocGN5NXZibWR2YVc1blFubDBaVU52ZFc1MEsyNHVZbmwwWlhORGIzVnVkRHc5VlhNbUpuUm9hWE11YjI1bmIybHVaMUpsY1hWbGMzUkRiM1Z1ZER4M2MzMHNZV1JrT21aMWJtTjBhVzl1S0c0cGUzUm9hWE11YjI1bmIybHVaMUpsY1hWbGMzUkRiM1Z1ZENzOU1TeDBhR2x6TG05dVoyOXBibWRDZVhSbFEyOTFiblFyUFc0dVlubDBaWE5EYjNWdWRIMHNjbVZ0YjNabE9tWjFibU4wYVc5dUtHNHBlM1JvYVhNdWIyNW5iMmx1WjFKbGNYVmxjM1JEYjNWdWRDMDlNU3gwYUdsekxtOXVaMjlwYm1kQ2VYUmxRMjkxYm5RdFBXNHVZbmwwWlhORGIzVnVkSDE5ZldaMWJtTjBhVzl1SUVsektHNHNjaXhoTEhNcGUzWmhjaUJzUFVOektDa3NaRDFtZFc1amRHbHZiaWhvTEc4cGUzSmxkSFZ5YmlCTWN5aHVMSElzWVN4b0xHOHBmVHR5WlhSMWNtNTdjMlZ1WkRwbWRXNWpkR2x2Ymlob0tYdDZhU2hvTEd3c1pDeHlMblJ5WVdOclZIbHdaU3h6S1gwc2MyVnVaRTl1UlhocGREcG1kVzVqZEdsdmJpaG9LWHRDY3lodUxISXNZU3hvS1gxOWZXWjFibU4wYVc5dUlFSnpLRzRzY2l4aExITXBlM1poY2lCc1BTRWhibUYyYVdkaGRHOXlMbk5sYm1SQ1pXRmpiMjRtSm5NdVlubDBaWE5EYjNWdWREeGhPMmxtS0d3cGRISjVlM1poY2lCa1BYSXVZblZwYkdRb0ltSmxZV052YmlJc2N5a3NhRDF1WVhacFoyRjBiM0l1YzJWdVpFSmxZV052Ymloa0xITXVaR0YwWVNrN2FXWW9hQ2x5WlhSMWNtNTlZMkYwWTJnb1h5bDdSbk1vWHlsOWRtRnlJRzg5Y2k1aWRXbHNaQ2dpZUdoeUlpeHpLVHQ2ZENodUxHOHNjeTVrWVhSaEtYMTJZWElnVG1rOUlURTdablZ1WTNScGIyNGdSbk1vYmlsN1RtbDhmQ2hPYVQwaE1DeENhU2h1S1NsOVpuVnVZM1JwYjI0Z1RITW9iaXh5TEdFc2N5eHNLWHQyWVhJZ1pEMXJjeWdwSmlaekxtSjVkR1Z6UTI5MWJuUThZVHRwWmloa0tYdDJZWElnYUQxeUxtSjFhV3hrS0NKbVpYUmphQ0lzY3lrN1ptVjBZMmdvYUN4N2JXVjBhRzlrT2lKUVQxTlVJaXhpYjJSNU9uTXVaR0YwWVN4clpXVndZV3hwZG1VNklUQXNiVzlrWlRvaVkyOXljeUo5S1M1MGFHVnVLRUlvWm5WdVkzUnBiMjRvWHlsN2NtVjBkWEp1SUd3OVBXNTFiR3cvZG05cFpDQXdPbXdvZTNOMFlYUjFjenBmTG5OMFlYUjFjeXgwZVhCbE9sOHVkSGx3WlgwcGZTa3NRaWhtZFc1amRHbHZiaWdwZTNaaGNpQmZQWEl1WW5WcGJHUW9JbmhvY2lJc2N5azdlblFvYml4ZkxITXVaR0YwWVN4c0tYMHBLWDFsYkhObGUzWmhjaUJ2UFhJdVluVnBiR1FvSW5ob2NpSXNjeWs3ZW5Rb2JpeHZMSE11WkdGMFlTeHNLWDE5Wm5WdVkzUnBiMjRnYTNNb0tYdDBjbmw3Y21WMGRYSnVJSGRwYm1SdmR5NVNaWEYxWlhOMEppWWlhMlZsY0dGc2FYWmxJbWx1SUc1bGR5QlNaWEYxWlhOMEtDSm9kSFJ3T2k4dllTSXBmV05oZEdOb2UzSmxkSFZ5YmlFeGZYMW1kVzVqZEdsdmJpQjZkQ2h1TEhJc1lTeHpLWHQyWVhJZ2JEMXVaWGNnV0UxTVNIUjBjRkpsY1hWbGMzUTdiQzV2Y0dWdUtDSlFUMU5VSWl4eUxDRXdLU3hoSUdsdWMzUmhibU5sYjJZZ1FteHZZaVltYkM1elpYUlNaWEYxWlhOMFNHVmhaR1Z5S0NKRGIyNTBaVzUwTFZSNWNHVWlMR0V1ZEhsd1pTa3NjR1VvYml4c0xDSnNiMkZrWlc1a0lpeG1kVzVqZEdsdmJpZ3BlM005UFc1MWJHeDhmSE1vZTNOMFlYUjFjenBzTG5OMFlYUjFjMzBwZlN4N2IyNWpaVG9oTUgwcExHd3VjMlZ1WkNoaEtYMW1kVzVqZEdsdmJpQlNkQ2dwZTNaaGNpQnVQWHB6S0NrN2FXWW9iaWx5WlhSMWNtNTdaMlYwUTJGd1lXSnBiR2wwYVdWek9tWjFibU4wYVc5dUtDbDdkbUZ5SUhJN2NtVjBkWEp1SUVwVFQwNHVjR0Z5YzJVb0tDaHlQVzR1WjJWMFEyRndZV0pwYkdsMGFXVnpLVDA5UFc1MWJHeDhmSEk5UFQxMmIybGtJREEvZG05cFpDQXdPbkl1WTJGc2JDaHVLU2w4ZkNKYlhTSXBmU3huWlhSUWNtbDJZV041VEdWMlpXdzZablZ1WTNScGIyNG9LWHQyWVhJZ2NqdHlaWFIxY200b2NqMXVMbWRsZEZCeWFYWmhZM2xNWlhabGJDazlQVDF1ZFd4c2ZIeHlQVDA5ZG05cFpDQXdQM1p2YVdRZ01EcHlMbU5oYkd3b2JpbDlMR2RsZEVGc2JHOTNaV1JYWldKV2FXVjNTRzl6ZEhNNlpuVnVZM1JwYjI0b0tYdHlaWFIxY200Z1NsTlBUaTV3WVhKelpTaHVMbWRsZEVGc2JHOTNaV1JYWldKV2FXVjNTRzl6ZEhNb0tTbDlMSE5sYm1RNlpuVnVZM1JwYjI0b2NpeGhMSE1wZTNaaGNpQnNQWE0vZTJsa09uTjlPblp2YVdRZ01EdHVMbk5sYm1Rb1NsTlBUaTV6ZEhKcGJtZHBabmtvZTJWMlpXNTBWSGx3WlRweUxHVjJaVzUwT21Fc2RtbGxkenBzZlNrcGZYMTlablZ1WTNScGIyNGdkSFFvYmlsN2RtRnlJSEk3YmowOVBYWnZhV1FnTUNZbUtHNDlLSEk5ZEdVb0tTNXNiMk5oZEdsdmJpazlQVDF1ZFd4c2ZIeHlQVDA5ZG05cFpDQXdQM1p2YVdRZ01EcHlMbWh2YzNSdVlXMWxLVHQyWVhJZ1lUMVNkQ2dwTzNKbGRIVnliaUVoWVNZbVlTNW5aWFJCYkd4dmQyVmtWMlZpVm1sbGQwaHZjM1J6S0NrdWMyOXRaU2htZFc1amRHbHZiaWh6S1h0eVpYUjFjbTRnYmowOVBYTjhmSEJ5S0c0c0lpNGlMbU52Ym1OaGRDaHpLU2w5S1gxbWRXNWpkR2x2YmlCNmN5Z3BlM0psZEhWeWJpQjBaU2dwTGtSaGRHRmtiMmRGZG1WdWRFSnlhV1JuWlgxMllYSWdhWFE5ZTBoSlJFUkZUam9pZG1semFXSnBiR2wwZVY5b2FXUmtaVzRpTEZWT1RFOUJSRWxPUnpvaVltVm1iM0psWDNWdWJHOWhaQ0lzVUVGSFJVaEpSRVU2SW5CaFoyVmZhR2xrWlNJc1JsSlBXa1ZPT2lKd1lXZGxYMlp5YjNwbGJpSjlPMloxYm1OMGFXOXVJRkp6S0c0cGUzSmxkSFZ5YmlCdVpYY2dVaWhtZFc1amRHbHZiaWh5S1h0MllYSWdZVDFNZENodUxIZHBibVJ2ZHl4YkluWnBjMmxpYVd4cGRIbGphR0Z1WjJVaUxDSm1jbVZsZW1VaVhTeG1kVzVqZEdsdmJpaHNLWHRzTG5SNWNHVTlQVDBpZG1semFXSnBiR2wwZVdOb1lXNW5aU0ltSm1SdlkzVnRaVzUwTG5acGMybGlhV3hwZEhsVGRHRjBaVDA5UFNKb2FXUmtaVzRpUDNJdWJtOTBhV1o1S0h0eVpXRnpiMjQ2YVhRdVNFbEVSRVZPZlNrNmJDNTBlWEJsUFQwOUltWnlaV1Y2WlNJbUpuSXVibTkwYVdaNUtIdHlaV0Z6YjI0NmFYUXVSbEpQV2tWT2ZTbDlMSHRqWVhCMGRYSmxPaUV3ZlNrdWMzUnZjQ3h6UFhCbEtHNHNkMmx1Wkc5M0xDSmlaV1p2Y21WMWJteHZZV1FpTEdaMWJtTjBhVzl1S0NsN2NpNXViM1JwWm5rb2UzSmxZWE52YmpwcGRDNVZUa3hQUVVSSlRrZDlLWDBwTG5OMGIzQTdjbVYwZFhKdUlHWjFibU4wYVc5dUtDbDdZU2dwTEhNb0tYMTlLWDFtZFc1amRHbHZiaUJQY3lodUtYdHlaWFIxY200Z2VXVW9iV1VvYVhRcExHNHBmV1oxYm1OMGFXOXVJRkJ6S0c0cGUzWmhjaUJ5UFc0dVpXNWpiMlJsY2l4aFBXNHVjbVZ4ZFdWemRDeHpQVzR1Wm14MWMyaERiMjUwY205c2JHVnlMR3c5Ymk1dFpYTnpZV2RsUW5sMFpYTk1hVzFwZEN4a1BYdDlMR2c5Y3k1bWJIVnphRTlpYzJWeWRtRmliR1V1YzNWaWMyTnlhV0psS0daMWJtTjBhVzl1S0dVcGUzSmxkSFZ5YmlCbktHVXBmU2s3Wm5WdVkzUnBiMjRnYnlobExIUXNhU2w3Y3k1dWIzUnBabmxDWldadmNtVkJaR1JOWlhOellXZGxLSFFwTEdraFBUMTJiMmxrSURBL0tHUmJhVjA5WlN4ekxtNXZkR2xtZVVGbWRHVnlRV1JrVFdWemMyRm5aU2dwS1RweUxuZHlhWFJsS0hJdWFYTkZiWEIwZVQ5bE9tQUtZQzVqYjI1allYUW9aU2tzWm5WdVkzUnBiMjRvWmlsN2N5NXViM1JwWm5sQlpuUmxja0ZrWkUxbGMzTmhaMlVvWmkxMEtYMHBmV1oxYm1OMGFXOXVJRjhvWlNsN2NtVjBkWEp1SUdVaFBUMTJiMmxrSURBbUptUmJaVjBoUFQxMmIybGtJREI5Wm5WdVkzUnBiMjRnY0NobEtYdDJZWElnZEQxa1cyVmRPMlJsYkdWMFpTQmtXMlZkTzNaaGNpQnBQWEl1WlhOMGFXMWhkR1ZGYm1OdlpHVmtRbmwwWlhORGIzVnVkQ2gwS1R0ekxtNXZkR2xtZVVGbWRHVnlVbVZ0YjNabFRXVnpjMkZuWlNocEtYMW1kVzVqZEdsdmJpQmpLR1VzZENsN2RtRnlJR2s5ZFdVb1pTa3NaajF5TG1WemRHbHRZWFJsUlc1amIyUmxaRUo1ZEdWelEyOTFiblFvYVNrN2FXWW9aajQ5YkNsN2VpNTNZWEp1S0NKRWFYTmpZWEprWldRZ1lTQnRaWE56WVdkbElIZG9iM05sSUhOcGVtVWdkMkZ6SUdKcFoyZGxjaUIwYUdGdUlIUm9aU0J0WVhocGJYVnRJR0ZzYkc5M1pXUWdjMmw2WlNBaUxtTnZibU5oZENoc0xDSkxRaTRnSWlrdVkyOXVZMkYwS0VSbExDSWdJaWt1WTI5dVkyRjBLRXQwTENJdkkzUmxZMmh1YVdOaGJDMXNhVzFwZEdGMGFXOXVjeUlwS1R0eVpYUjFjbTU5WHloMEtTWW1jQ2gwS1N4dktHa3NaaXgwS1gxbWRXNWpkR2x2YmlCbktHVXBlM1poY2lCMFBXMWxLR1FwTG1wdmFXNG9ZQXBnS1R0a1BYdDlPM1poY2lCcFBVOXpLR1V1Y21WaGMyOXVLU3htUFdrL1lTNXpaVzVrVDI1RmVHbDBPbUV1YzJWdVpEdHBaaWhwSmlaeUxtbHpRWE41Ym1NcGUzWmhjaUIxUFhJdVptbHVhWE5vVTNsdVl5Z3BPM1V1YjNWMGNIVjBRbmwwWlhORGIzVnVkQ1ltWmloTmFTaDFLU2s3ZG1GeUlIWTlXM1V1Y0dWdVpHbHVaMFJoZEdFc2RGMHVabWxzZEdWeUtFSnZiMnhsWVc0cExtcHZhVzRvWUFwZ0tUdDJKaVptS0h0a1lYUmhPbllzWW5sMFpYTkRiM1Z1ZERwamRDaDJLWDBwZldWc2MyVWdkQ1ltY2k1M2NtbDBaU2h5TG1selJXMXdkSGsvZERwZ0NtQXVZMjl1WTJGMEtIUXBLU3h5TG1acGJtbHphQ2htZFc1amRHbHZiaWg1S1h0bUtFMXBLSGtwS1gwcGZYSmxkSFZ5Ym50bWJIVnphRU52Ym5SeWIyeHNaWEk2Y3l4aFpHUTZZeXgxY0hObGNuUTZZeXh6ZEc5d09tZ3VkVzV6ZFdKelkzSnBZbVY5ZldaMWJtTjBhVzl1SUUxcEtHNHBlM1poY2lCeU8zSmxkSFZ5YmlCMGVYQmxiMllnYmk1dmRYUndkWFE5UFNKemRISnBibWNpUDNJOWJpNXZkWFJ3ZFhRNmNqMXVaWGNnUW14dllpaGJiaTV2ZFhSd2RYUmRMSHQwZVhCbE9pSjBaWGgwTDNCc1lXbHVJbjBwTEh0a1lYUmhPbklzWW5sMFpYTkRiM1Z1ZERwdUxtOTFkSEIxZEVKNWRHVnpRMjkxYm5Rc1pXNWpiMlJwYm1jNmJpNWxibU52WkdsdVozMTlablZ1WTNScGIyNGdSSE1vYmlsN2RtRnlJSEk5Ymk1dFpYTnpZV2RsYzB4cGJXbDBMR0U5Ymk1aWVYUmxjMHhwYldsMExITTliaTVrZFhKaGRHbHZia3hwYldsMExHdzliaTV3WVdkbFJYaHBkRTlpYzJWeWRtRmliR1VzWkQxdUxuTmxjM05wYjI1RmVIQnBjbVZQWW5ObGNuWmhZbXhsTEdnOWJDNXpkV0p6WTNKcFltVW9ablZ1WTNScGIyNG9aaWw3Y21WMGRYSnVJR2NvWmk1eVpXRnpiMjRwZlNrc2J6MWtMbk4xWW5OamNtbGlaU2htZFc1amRHbHZiaWdwZTNKbGRIVnliaUJuS0NKelpYTnphVzl1WDJWNGNHbHlaU0lwZlNrc1h6MXVaWGNnVWlobWRXNWpkR2x2YmlncGUzSmxkSFZ5YmlCbWRXNWpkR2x2YmlncGUyZ3VkVzV6ZFdKelkzSnBZbVVvS1N4dkxuVnVjM1ZpYzJOeWFXSmxLQ2w5ZlNrc2NEMHdMR005TUR0bWRXNWpkR2x2YmlCbktHWXBlMmxtS0dNaFBUMHdLWHQyWVhJZ2RUMWpMSFk5Y0R0alBUQXNjRDB3TEdrb0tTeGZMbTV2ZEdsbWVTaDdjbVZoYzI5dU9tWXNiV1Z6YzJGblpYTkRiM1Z1ZERwMUxHSjVkR1Z6UTI5MWJuUTZkbjBwZlgxMllYSWdaVHRtZFc1amRHbHZiaUIwS0NsN1pUMDlQWFp2YVdRZ01DWW1LR1U5Um1Vb1puVnVZM1JwYjI0b0tYdG5LQ0prZFhKaGRHbHZibDlzYVcxcGRDSXBmU3h6S1NsOVpuVnVZM1JwYjI0Z2FTZ3BlMXAwS0dVcExHVTlkbTlwWkNBd2ZYSmxkSFZ5Ym50bWJIVnphRTlpYzJWeWRtRmliR1U2WHl4blpYUWdiV1Z6YzJGblpYTkRiM1Z1ZENncGUzSmxkSFZ5YmlCamZTeHViM1JwWm5sQ1pXWnZjbVZCWkdSTlpYTnpZV2RsT21aMWJtTjBhVzl1S0dZcGUzQXJaajQ5WVNZbVp5Z2lZbmwwWlhOZmJHbHRhWFFpS1N4akt6MHhMSEFyUFdZc2RDZ3BmU3h1YjNScFpubEJablJsY2tGa1pFMWxjM05oWjJVNlpuVnVZM1JwYjI0b1ppbDdaajA5UFhadmFXUWdNQ1ltS0dZOU1Da3NjQ3M5Wml4alBqMXlQMmNvSW0xbGMzTmhaMlZ6WDJ4cGJXbDBJaWs2Y0Q0OVlTWW1aeWdpWW5sMFpYTmZiR2x0YVhRaUtYMHNibTkwYVdaNVFXWjBaWEpTWlcxdmRtVk5aWE56WVdkbE9tWjFibU4wYVc5dUtHWXBlM0F0UFdZc1l5MDlNU3hqUFQwOU1DWW1hU2dwZlgxOVpuVnVZM1JwYjI0Z1Iya29iaXh5TEdFc2N5eHNMR1FzYUNsN2FEMDlQWFp2YVdRZ01DWW1LR2c5VUhNcE8zWmhjaUJ2UFhBb2JpeHlLU3hmUFdFbUpuQW9iaXhoS1R0bWRXNWpkR2x2YmlCd0tHTXNaeWw3ZG1GeUlHVTlaeTVsYm1Sd2IybHVkQ3gwUFdjdVpXNWpiMlJsY2p0eVpYUjFjbTRnYUNoN1pXNWpiMlJsY2pwMExISmxjWFZsYzNRNlNYTW9ZeXhsTEdNdVltRjBZMmhDZVhSbGMweHBiV2wwTEhNcExHWnNkWE5vUTI5dWRISnZiR3hsY2pwRWN5aDdiV1Z6YzJGblpYTk1hVzFwZERwakxtSmhkR05vVFdWemMyRm5aWE5NYVcxcGRDeGllWFJsYzB4cGJXbDBPbU11WW1GMFkyaENlWFJsYzB4cGJXbDBMR1IxY21GMGFXOXVUR2x0YVhRNll5NW1iSFZ6YUZScGJXVnZkWFFzY0dGblpVVjRhWFJQWW5ObGNuWmhZbXhsT213c2MyVnpjMmx2YmtWNGNHbHlaVTlpYzJWeWRtRmliR1U2WkgwcExHMWxjM05oWjJWQ2VYUmxjMHhwYldsME9tTXViV1Z6YzJGblpVSjVkR1Z6VEdsdGFYUjlLWDF5WlhSMWNtNTdabXgxYzJoUFluTmxjblpoWW14bE9tOHVabXgxYzJoRGIyNTBjbTlzYkdWeUxtWnNkWE5vVDJKelpYSjJZV0pzWlN4aFpHUTZablZ1WTNScGIyNG9ZeXhuS1h0blBUMDlkbTlwWkNBd0ppWW9aejBoTUNrc2J5NWhaR1FvWXlrc1h5WW1aeVltWHk1aFpHUW9ZUzUwY21GdWMyWnZjbTFOWlhOellXZGxQMkV1ZEhKaGJuTm1iM0p0VFdWemMyRm5aU2hqS1RwaktYMHNkWEJ6WlhKME9tWjFibU4wYVc5dUtHTXNaeWw3Ynk1MWNITmxjblFvWXl4bktTeGZKaVpmTG5Wd2MyVnlkQ2hoTG5SeVlXNXpabTl5YlUxbGMzTmhaMlUvWVM1MGNtRnVjMlp2Y20xTlpYTnpZV2RsS0dNcE9tTXNaeWw5TEhOMGIzQTZablZ1WTNScGIyNG9LWHR2TG5OMGIzQW9LU3hmSmlaZkxuTjBiM0FvS1gxOWZXWjFibU4wYVc5dUlISjBLQ2w3ZG1GeUlHNDlJaUlzY2owd08zSmxkSFZ5Ym50cGMwRnplVzVqT2lFeExHZGxkQ0JwYzBWdGNIUjVLQ2w3Y21WMGRYSnVJVzU5TEhkeWFYUmxPbVoxYm1OMGFXOXVLR0VzY3lsN2RtRnlJR3c5WTNRb1lTazdjaXM5YkN4dUt6MWhMSE1tSm5Nb2JDbDlMR1pwYm1semFEcG1kVzVqZEdsdmJpaGhLWHRoS0hSb2FYTXVabWx1YVhOb1UzbHVZeWdwS1gwc1ptbHVhWE5vVTNsdVl6cG1kVzVqZEdsdmJpZ3BlM1poY2lCaFBYdHZkWFJ3ZFhRNmJpeHZkWFJ3ZFhSQ2VYUmxjME52ZFc1ME9uSXNjbUYzUW5sMFpYTkRiM1Z1ZERweUxIQmxibVJwYm1kRVlYUmhPaUlpZlR0eVpYUjFjbTRnYmowaUlpeHlQVEFzWVgwc1pYTjBhVzFoZEdWRmJtTnZaR1ZrUW5sMFpYTkRiM1Z1ZERwbWRXNWpkR2x2YmloaEtYdHlaWFIxY200Z1lTNXNaVzVuZEdoOWZYMTJZWElnVG5NOVpuVnVZM1JwYjI0b0tYdG1kVzVqZEdsdmJpQnVLQ2w3ZEdocGN5NWpZV3hzWW1GamEzTTllMzE5Y21WMGRYSnVJRzR1Y0hKdmRHOTBlWEJsTG01dmRHbG1lVDFtZFc1amRHbHZiaWh5TEdFcGUzWmhjaUJ6UFhSb2FYTXVZMkZzYkdKaFkydHpXM0pkTzNNbUpuTXVabTl5UldGamFDaG1kVzVqZEdsdmJpaHNLWHR5WlhSMWNtNGdiQ2hoS1gwcGZTeHVMbkJ5YjNSdmRIbHdaUzV6ZFdKelkzSnBZbVU5Wm5WdVkzUnBiMjRvY2l4aEtYdDJZWElnY3oxMGFHbHpPM0psZEhWeWJpQjBhR2x6TG1OaGJHeGlZV05yYzF0eVhYeDhLSFJvYVhNdVkyRnNiR0poWTJ0elczSmRQVnRkS1N4MGFHbHpMbU5oYkd4aVlXTnJjMXR5WFM1d2RYTm9LR0VwTEh0MWJuTjFZbk5qY21saVpUcG1kVzVqZEdsdmJpZ3BlM011WTJGc2JHSmhZMnR6VzNKZFBYTXVZMkZzYkdKaFkydHpXM0pkTG1acGJIUmxjaWhtZFc1amRHbHZiaWhzS1h0eVpYUjFjbTRnWVNFOVBXeDlLWDE5ZlN4dWZTZ3BPMloxYm1OMGFXOXVJRTF6S0c0c2NpeGhLWHQyWVhJZ2N6MHdMR3c5SVRFN2NtVjBkWEp1ZTJselRHbHRhWFJTWldGamFHVmtPbVoxYm1OMGFXOXVLQ2w3YVdZb2N6MDlQVEFtSmtabEtHWjFibU4wYVc5dUtDbDdjejB3ZlN4elpTa3NjeXM5TVN4elBEMXlmSHhzS1hKbGRIVnliaUJzUFNFeExDRXhPMmxtS0hNOVBUMXlLekVwZTJ3OUlUQTdkSEo1ZTJFb2UyMWxjM05oWjJVNklsSmxZV05vWldRZ2JXRjRJRzUxYldKbGNpQnZaaUFpTG1OdmJtTmhkQ2h1TENKeklHSjVJRzFwYm5WMFpUb2dJaWt1WTI5dVkyRjBLSElwTEhOdmRYSmpaVHBJTGtGSFJVNVVMSE4wWVhKMFEyeHZZMnR6T21WbEtDbDlLWDFtYVc1aGJHeDVlMnc5SVRGOWZYSmxkSFZ5YmlFd2ZYMTlkbUZ5SUU5MExGQjBQVzVsZHlCWFpXRnJUV0Z3TzJaMWJtTjBhVzl1SUVkektHNHBlM0psZEhWeWJpQlBkSHg4S0U5MFBVaHpLRzRwS1N4UGRIMW1kVzVqZEdsdmJpQkljeWh1S1h0eVpYUjFjbTRnYm1WM0lGSW9ablZ1WTNScGIyNG9jaWw3ZG1GeUlHRTlZMlVvV0UxTVNIUjBjRkpsY1hWbGMzUXVjSEp2ZEc5MGVYQmxMQ0p2Y0dWdUlpeFpjeWt1YzNSdmNDeHpQV05sS0ZoTlRFaDBkSEJTWlhGMVpYTjBMbkJ5YjNSdmRIbHdaU3dpYzJWdVpDSXNablZ1WTNScGIyNG9aQ2w3Vm5Nb1pDeHVMSElwZlN4N1kyOXRjSFYwWlVoaGJtUnNhVzVuVTNSaFkyczZJVEI5S1M1emRHOXdMR3c5WTJVb1dFMU1TSFIwY0ZKbGNYVmxjM1F1Y0hKdmRHOTBlWEJsTENKaFltOXlkQ0lzYW5NcExuTjBiM0E3Y21WMGRYSnVJR1oxYm1OMGFXOXVLQ2w3WVNncExITW9LU3hzS0NsOWZTbDlablZ1WTNScGIyNGdXWE1vYmlsN2RtRnlJSEk5Ymk1MFlYSm5aWFFzWVQxdUxuQmhjbUZ0WlhSbGNuTXNjejFoV3pCZExHdzlZVnN4WFR0UWRDNXpaWFFvY2l4N2MzUmhkR1U2SW05d1pXNGlMRzFsZEdodlpEcFRkSEpwYm1jb2N5a3VkRzlWY0hCbGNrTmhjMlVvS1N4MWNtdzZRWFFvVTNSeWFXNW5LR3dwS1gwcGZXWjFibU4wYVc5dUlGWnpLRzRzY2l4aEtYdDJZWElnY3oxdUxuUmhjbWRsZEN4c1BXNHVhR0Z1Wkd4cGJtZFRkR0ZqYXl4a1BWQjBMbWRsZENoektUdHBaaWhrS1h0MllYSWdhRDFrTzJndWMzUmhkR1U5SW5OMFlYSjBJaXhvTG5OMFlYSjBRMnh2WTJ0elBXVmxLQ2tzYUM1cGMwRmliM0owWldROUlURXNhQzU0YUhJOWN5eG9MbWhoYm1Sc2FXNW5VM1JoWTJzOWJEdDJZWElnYnowaE1TeGZQV05sS0hNc0ltOXVjbVZoWkhsemRHRjBaV05vWVc1blpTSXNablZ1WTNScGIyNG9LWHR6TG5KbFlXUjVVM1JoZEdVOVBUMVlUVXhJZEhSd1VtVnhkV1Z6ZEM1RVQwNUZKaVp3S0NsOUtTNXpkRzl3TEhBOVpuVnVZM1JwYjI0b0tYdHBaaWhqS0Nrc1h5Z3BMQ0Z2S1h0dlBTRXdPM1poY2lCblBXUTdaeTV6ZEdGMFpUMGlZMjl0Y0d4bGRHVWlMR2N1WkhWeVlYUnBiMjQ5Wm5Jb2FDNXpkR0Z5ZEVOc2IyTnJjeTUwYVcxbFUzUmhiWEFzVVNncEtTeG5Mbk4wWVhSMWN6MXpMbk4wWVhSMWN5eGhMbTV2ZEdsbWVTaGZjaWhuS1NsOWZTeGpQWEJsS0hJc2N5d2liRzloWkdWdVpDSXNjQ2t1YzNSdmNEdGhMbTV2ZEdsbWVTaG9LWDE5Wm5WdVkzUnBiMjRnYW5Nb2JpbDdkbUZ5SUhJOWJpNTBZWEpuWlhRc1lUMVFkQzVuWlhRb2NpazdZU1ltS0dFdWFYTkJZbTl5ZEdWa1BTRXdLWDEyWVhJZ1JIUTdablZ1WTNScGIyNGdTR2tvS1h0eVpYUjFjbTRnUkhSOGZDaEVkRDFMY3lncEtTeEVkSDFtZFc1amRHbHZiaUJMY3lncGUzSmxkSFZ5YmlCdVpYY2dVaWhtZFc1amRHbHZiaWh1S1h0cFppaDNhVzVrYjNjdVptVjBZMmdwZTNaaGNpQnlQV05sS0hkcGJtUnZkeXdpWm1WMFkyZ2lMR1oxYm1OMGFXOXVLR0VwZTNKbGRIVnliaUJ4Y3loaExHNHBmU3g3WTI5dGNIVjBaVWhoYm1Sc2FXNW5VM1JoWTJzNklUQjlLUzV6ZEc5d08zSmxkSFZ5YmlCeWZYMHBmV1oxYm1OMGFXOXVJSEZ6S0c0c2NpbDdkbUZ5SUdFOWJpNXdZWEpoYldWMFpYSnpMSE05Ymk1dmJsQnZjM1JEWVd4c0xHdzliaTVvWVc1a2JHbHVaMU4wWVdOckxHUTlZVnN3WFN4b1BXRmJNVjBzYnoxb0ppWm9MbTFsZEdodlpEdHZQVDA5ZG05cFpDQXdKaVprSUdsdWMzUmhibU5sYjJZZ1VtVnhkV1Z6ZENZbUtHODlaQzV0WlhSb2IyUXBPM1poY2lCZlBXOGhQVDEyYjJsa0lEQS9VM1J5YVc1bktHOHBMblJ2VlhCd1pYSkRZWE5sS0NrNklrZEZWQ0lzY0Qxa0lHbHVjM1JoYm1ObGIyWWdVbVZ4ZFdWemREOWtMblZ5YkRwQmRDaFRkSEpwYm1jb1pDa3BMR005WldVb0tTeG5QWHR6ZEdGMFpUb2ljM1JoY25RaUxHbHVhWFE2YUN4cGJuQjFkRHBrTEcxbGRHaHZaRHBmTEhOMFlYSjBRMnh2WTJ0ek9tTXNkWEpzT25Bc2FHRnVaR3hwYm1kVGRHRmphenBzZlR0eUxtNXZkR2xtZVNobktTeGhXekJkUFdjdWFXNXdkWFFzWVZzeFhUMW5MbWx1YVhRc2N5aG1kVzVqZEdsdmJpaGxLWHR5WlhSMWNtNGdWM01vY2l4bExHY3BmU2w5Wm5WdVkzUnBiMjRnVjNNb2JpeHlMR0VwZTNaaGNpQnpQV0U3Wm5WdVkzUnBiMjRnYkNoa0tYdHpMbk4wWVhSbFBTSnlaWE52YkhabElpeFBLSE1zWkNrc2JpNXViM1JwWm5rb2N5bDljaTUwYUdWdUtFSW9ablZ1WTNScGIyNG9aQ2w3YkNoN2NtVnpjRzl1YzJVNlpDeHlaWE53YjI1elpWUjVjR1U2WkM1MGVYQmxMSE4wWVhSMWN6cGtMbk4wWVhSMWN5eHBjMEZpYjNKMFpXUTZJVEY5S1gwcExFSW9ablZ1WTNScGIyNG9aQ2w3ZG1GeUlHZ3NienRzS0h0emRHRjBkWE02TUN4cGMwRmliM0owWldRNktDaHZQU2hvUFhNdWFXNXBkQ2s5UFQxdWRXeHNmSHhvUFQwOWRtOXBaQ0F3UDNadmFXUWdNRHBvTG5OcFoyNWhiQ2s5UFQxdWRXeHNmSHh2UFQwOWRtOXBaQ0F3UDNadmFXUWdNRHB2TG1GaWIzSjBaV1FwZkh4a0lHbHVjM1JoYm1ObGIyWWdSRTlOUlhoalpYQjBhVzl1Smlaa0xtTnZaR1U5UFQxRVQwMUZlR05sY0hScGIyNHVRVUpQVWxSZlJWSlNMR1Z5Y205eU9tUjlLWDBwS1gxMllYSWdUblE5ZTMwN1puVnVZM1JwYjI0Z1dITW9iaWw3ZG1GeUlISTliaTV0WVhBb1puVnVZM1JwYjI0b1lTbDdjbVYwZFhKdUlFNTBXMkZkZkh3b1RuUmJZVjA5U25Nb1lTa3BMRTUwVzJGZGZTazdjbVYwZFhKdUlHVnBMbUZ3Y0d4NUtIWnZhV1FnTUN4eUtYMW1kVzVqZEdsdmJpQktjeWh1S1h0eVpYUjFjbTRnYm1WM0lGSW9ablZ1WTNScGIyNG9jaWw3ZG1GeUlHRTlWMXR1WFR0eVpYUjFjbTRnVjF0dVhUMW1kVzVqZEdsdmJpZ3BlMlp2Y2loMllYSWdjejFiWFN4c1BUQTdiRHhoY21kMWJXVnVkSE11YkdWdVozUm9PMndyS3lselcyeGRQV0Z5WjNWdFpXNTBjMXRzWFR0aExtRndjR3g1S0dOdmJuTnZiR1VzY3lrN2RtRnlJR1E5SkdVb0tUdENaU2htZFc1amRHbHZiaWdwZTNJdWJtOTBhV1o1S0NSektITXNiaXhrS1NsOUtYMHNablZ1WTNScGIyNG9LWHRYVzI1ZFBXRjlmU2w5Wm5WdVkzUnBiMjRnSkhNb2JpeHlMR0VwZTNaaGNpQnpQVzR1YldGd0tHWjFibU4wYVc5dUtHZ3BlM0psZEhWeWJpQmFjeWhvS1gwcExtcHZhVzRvSWlBaUtTeHNPMmxtS0hJOVBUMU1MbVZ5Y205eUtYdDJZWElnWkQxb2NpaHVMR1oxYm1OMGFXOXVLR2dwZTNKbGRIVnliaUJvSUdsdWMzUmhibU5sYjJZZ1JYSnliM0o5S1R0c1BYdHpkR0ZqYXpwa1AyaGxLRW9vWkNrcE9uWnZhV1FnTUN4bWFXNW5aWEp3Y21sdWREcHRhU2hrS1N4allYVnpaWE02WkQ5aWFTaGtMQ0pqYjI1emIyeGxJaWs2ZG05cFpDQXdMSE4wWVhKMFEyeHZZMnR6T21WbEtDa3NiV1Z6YzJGblpUcHpMSE52ZFhKalpUcElMa05QVGxOUFRFVXNhR0Z1Wkd4cGJtYzZJbWhoYm1Sc1pXUWlMR2hoYm1Sc2FXNW5VM1JoWTJzNllYMTljbVYwZFhKdWUyRndhVHB5TEcxbGMzTmhaMlU2Y3l4bGNuSnZjanBzTEdoaGJtUnNhVzVuVTNSaFkyczZZWDE5Wm5WdVkzUnBiMjRnV25Nb2JpbDdjbVYwZFhKdUlIUjVjR1Z2WmlCdVBUMGljM1J5YVc1bklqOGtLRzRwT200Z2FXNXpkR0Z1WTJWdlppQkZjbkp2Y2o5MmFTaEtLRzRwS1RwMVpTZ2tLRzRwTEhadmFXUWdNQ3d5S1gxbWRXNWpkR2x2YmlCTmRDaHVLWHQyWVhJZ2NqMTdmU3hoUFc1bGR5QlNMSE05ZTJkbGRFTnZiblJsZUhRNlpuVnVZM1JwYjI0b0tYdHlaWFIxY200Z1JXa29jaWw5TEhObGRFTnZiblJsZUhRNlpuVnVZM1JwYjI0b2JDbDdhM1FvYkNrOVBUMGliMkpxWldOMElqOG9jajBrS0d3cExHNG1KbTR1ZFhCa1lYUmxRM1Z6ZEc5dFpYSkVZWFJoS0hJcEtUcHpMbU5zWldGeVEyOXVkR1Y0ZENncExHRXVibTkwYVdaNUtDbDlMSE5sZEVOdmJuUmxlSFJRY205d1pYSjBlVHBtZFc1amRHbHZiaWhzTEdRcGUzSmJiRjA5SkNoa0tTeHVKaVp1TG5Wd1pHRjBaVU4xYzNSdmJXVnlSR0YwWVNoeUtTeGhMbTV2ZEdsbWVTZ3BmU3h5WlcxdmRtVkRiMjUwWlhoMFVISnZjR1Z5ZEhrNlpuVnVZM1JwYjI0b2JDbDdaR1ZzWlhSbElISmJiRjBzYmlZbWJpNTFjR1JoZEdWRGRYTjBiMjFsY2tSaGRHRW9jaWtzWVM1dWIzUnBabmtvS1gwc1kyeGxZWEpEYjI1MFpYaDBPbVoxYm1OMGFXOXVLQ2w3Y2oxN2ZTeHVKaVp1TG5KbGMyVjBRM1Z6ZEc5dFpYSkVZWFJoS0Nrc1lTNXViM1JwWm5rb0tYMHNZMmhoYm1kbFQySnpaWEoyWVdKc1pUcGhmVHR5WlhSMWNtNGdjMzEyWVhJZ1VYTTlJbDlrWkY5aklpeGxiejFiWFR0bWRXNWpkR2x2YmlCWmFTaHVMSElzWVN4ektYdDJZWElnYkQxMGJ5aGhMSE1wTzJWdkxuQjFjMmdvY0dVb2JpeDNhVzVrYjNjc0luTjBiM0poWjJVaUxHWjFibU4wYVc5dUtGOHBlM1poY2lCd1BWOHVhMlY1TzJ3OVBUMXdKaVprS0NsOUtTa3NjaTVqYUdGdVoyVlBZbk5sY25aaFlteGxMbk4xWW5OamNtbGlaU2hvS1N4eUxuTmxkRU52Ym5SbGVIUW9kMlVvYnlncExISXVaMlYwUTI5dWRHVjRkQ2dwS1NrN1puVnVZM1JwYjI0Z1pDZ3BlM0l1YzJWMFEyOXVkR1Y0ZENodktDa3BmV1oxYm1OMGFXOXVJR2dvS1h0c2IyTmhiRk4wYjNKaFoyVXVjMlYwU1hSbGJTaHNMRXBUVDA0dWMzUnlhVzVuYVdaNUtISXVaMlYwUTI5dWRHVjRkQ2dwS1NsOVpuVnVZM1JwYjI0Z2J5Z3BlM1poY2lCZlBXeHZZMkZzVTNSdmNtRm5aUzVuWlhSSmRHVnRLR3dwTzNKbGRIVnliaUJmSVQwOWJuVnNiRDlLVTA5T0xuQmhjbk5sS0Y4cE9udDlmWDFtZFc1amRHbHZiaUIwYnlodUxISXBlM0psZEhWeWJpSWlMbU52Ym1OaGRDaFJjeXdpWHlJcExtTnZibU5oZENodUxDSmZJaWt1WTI5dVkyRjBLSElwZlhaaGNpQnBiejB6S2xnc2NtODlNVFlxV0N4dWJ6MHlNREE3Wm5WdVkzUnBiMjRnYzI4b2JpbDdiajA5UFhadmFXUWdNQ1ltS0c0OU1pazdkbUZ5SUhJOWJtVjNJRTFoY0N4aFBTRXhPMloxYm1OMGFXOXVJSE1vYkNsN2FXWW9iRDA5UFhadmFXUWdNQ1ltS0d3OU1Da3NJU2hoZkh4dVBUMDlNQ2twZTNaaGNpQmtQVzQ5UFQweVAybHZPbkp2TEdnOWJEdHlMbVp2Y2tWaFkyZ29ablZ1WTNScGIyNG9ieWw3YUNzOWJ5NW5aWFJDZVhSbGMwTnZkVzUwS0NsOUtTeG9QbVFtSmlodmJ5aGtLU3hoUFNFd0tYMTljbVYwZFhKdWUyTnlaV0YwWlVSbGRHRmphR1ZrVkhKaFkydGxjanBtZFc1amRHbHZiaWdwZTNaaGNpQnNQVlpwS0daMWJtTjBhVzl1S0NsN2NtVjBkWEp1SUhNb2JDNW5aWFJDZVhSbGMwTnZkVzUwS0NrcGZTazdjbVYwZFhKdUlHeDlMR2RsZEU5eVEzSmxZWFJsVkhKaFkydGxjanBtZFc1amRHbHZiaWhzS1h0eVpYUjFjbTRnY2k1b1lYTW9iQ2w4ZkhJdWMyVjBLR3dzVm1rb2N5a3BMSEl1WjJWMEtHd3BmU3h6WlhSRGIyMXdjbVZ6YzJsdmJsTjBZWFIxY3pwbWRXNWpkR2x2Ymloc0tYdHVQVDA5TUNZbUtHNDliQ3h6S0NrcGZTeG5aWFJEYjIxd2NtVnpjMmx2YmxOMFlYUjFjenBtZFc1amRHbHZiaWdwZTNKbGRIVnliaUJ1ZlN4emRHOXdPbVoxYm1OMGFXOXVLQ2w3Y2k1bWIzSkZZV05vS0daMWJtTjBhVzl1S0d3cGUzSmxkSFZ5YmlCc0xuTjBiM0FvS1gwcExISXVZMnhsWVhJb0tYMTlmV1oxYm1OMGFXOXVJRlpwS0c0cGUzWmhjaUJ5UFRBc1lUMTBhU2htZFc1amRHbHZiaWhvS1h0eVBXTjBLSFZsS0dncEtTeHVLQ2w5TEc1dktTeHpQV0V1ZEdoeWIzUjBiR1ZrTEd3OVlTNWpZVzVqWld3c1pEMW1kVzVqZEdsdmJpZ3BlMndvS1N4eVBUQjlPM0psZEhWeWJudDFjR1JoZEdWRGRYTjBiMjFsY2tSaGRHRTZablZ1WTNScGIyNG9hQ2w3ZG5Rb2FDay9aQ2dwT25Nb2FDbDlMSEpsYzJWMFEzVnpkRzl0WlhKRVlYUmhPbVFzWjJWMFFubDBaWE5EYjNWdWREcG1kVzVqZEdsdmJpZ3BlM0psZEhWeWJpQnlmU3h6ZEc5d09tWjFibU4wYVc5dUtDbDdiQ2dwZlgxOVpuVnVZM1JwYjI0Z2IyOG9iaWw3ZWk1M1lYSnVLQ0pEZFhOMGIyMWxjaUJrWVhSaElHVjRZMlZsWkhNZ2RHaGxJSEpsWTI5dGJXVnVaR1ZrSUNJdVkyOXVZMkYwS0c0dldDd2lTMmxDSUhSb2NtVnphRzlzWkM0Z0lpa3VZMjl1WTJGMEtFUmxMQ0lnSWlrdVkyOXVZMkYwS0V0MExDSXZJMk4xYzNSdmJXVnlMV1JoZEdFdFpYaGpaV1ZrY3kxMGFHVXRjbVZqYjIxdFpXNWtaV1F0ZEdoeVpYTm9iMnhrTFhkaGNtNXBibWNpS1NsOVpuVnVZM1JwYjI0Z1lXOG9iaXh5TEdFcGUzWmhjaUJ6UFc0dVoyVjBVbVZoWkdWeUtDa3NiRDFiWFN4a1BUQTdhQ2dwTzJaMWJtTjBhVzl1SUdnb0tYdHpMbkpsWVdRb0tTNTBhR1Z1S0VJb1puVnVZM1JwYjI0b1h5bDdhV1lvWHk1a2IyNWxLWHR2S0NrN2NtVjBkWEp1Zld3dWNIVnphQ2hmTG5aaGJIVmxLU3hrS3oxZkxuWmhiSFZsTG14bGJtZDBhQ3hrUG1FdVlubDBaWE5NYVcxcGREOXZLQ2s2YUNncGZTa3NRaWhtZFc1amRHbHZiaWhmS1h0eVpYUjFjbTRnY2loZktYMHBLWDFtZFc1amRHbHZiaUJ2S0NsN2N5NWpZVzVqWld3b0tTNWpZWFJqYUNocFpTazdkbUZ5SUY4c2NEdDdkbUZ5SUdNN2FXWW9iQzVzWlc1bmRHZzlQVDB4S1dNOWJGc3dYVHRsYkhObGUyTTlibVYzSUZWcGJuUTRRWEp5WVhrb1pDazdkbUZ5SUdjOU1EdHNMbVp2Y2tWaFkyZ29ablZ1WTNScGIyNG9aU2w3WXk1elpYUW9aU3huS1N4bkt6MWxMbXhsYm1kMGFIMHBmVjg5WXk1emJHbGpaU2d3TEdFdVlubDBaWE5NYVcxcGRDa3NjRDFqTG14bGJtZDBhRDVoTG1KNWRHVnpUR2x0YVhSOWNpaDJiMmxrSURBc1h5eHdLWDE5ZG1GeUlHWnZQU0prWVhSaFpHOW5MWE41Ym5Sb1pYUnBZM010Y0hWaWJHbGpMV2xrSWl4c2J6MGlaR0YwWVdSdlp5MXplVzUwYUdWMGFXTnpMWEpsYzNWc2RDMXBaQ0lzZFc4OUltUmhkR0ZrYjJjdGMzbHVkR2hsZEdsamN5MXBibXBsWTNSekxYSjFiU0k3Wm5WdVkzUnBiMjRnYW1rb0tYdHlaWFIxY200aElTaDNhVzVrYjNjdVgwUkJWRUZFVDBkZlUxbE9WRWhGVkVsRFUxOUpUa3BGUTFSVFgxSlZUWHg4WVdVb2RXOHBLWDFtZFc1amRHbHZiaUJvYnlncGUzWmhjaUJ1UFhkcGJtUnZkeTVmUkVGVVFVUlBSMTlUV1U1VVNFVlVTVU5UWDFCVlFreEpRMTlKUkh4OFlXVW9abThwTzNKbGRIVnliaUIwZVhCbGIyWWdiajA5SW5OMGNtbHVaeUkvYmpwMmIybGtJREI5Wm5WdVkzUnBiMjRnWTI4b0tYdDJZWElnYmoxM2FXNWtiM2N1WDBSQlZFRkVUMGRmVTFsT1ZFaEZWRWxEVTE5U1JWTlZURlJmU1VSOGZHRmxLR3h2S1R0eVpYUjFjbTRnZEhsd1pXOW1JRzQ5UFNKemRISnBibWNpUDI0NmRtOXBaQ0F3ZldaMWJtTjBhVzl1SUV0cEtHNHBlM1poY2lCeVBVOG9lMzBzYmlrc1lUMWJJbWxrSWl3aWJtRnRaU0lzSW1WdFlXbHNJbDA3Y21WMGRYSnVJR0V1Wm05eVJXRmphQ2htZFc1amRHbHZiaWh6S1h0eklHbHVJSEltSmloeVczTmRQVk4wY21sdVp5aHlXM05kS1NsOUtTeHlmV1oxYm1OMGFXOXVJSEJ2S0c0cGUzWmhjaUJ5UFd0MEtHNHBQVDA5SW05aWFtVmpkQ0k3Y21WMGRYSnVJSEo4ZkhvdVpYSnliM0lvSWxWdWMzVndjRzl5ZEdWa0lIVnpaWEk2SWl4dUtTeHlmWFpoY2lCV08yWjFibU4wYVc5dUlHNTBLRzRzY2l4aEtYdDJZWElnY3oxaExtZGxkRWhoYm1Sc1pYSW9LU3hzUFVGeWNtRjVMbWx6UVhKeVlYa29jeWsvY3pwYmMxMDdjbVYwZFhKdUlIRnBXMjVkUGoxeGFWdGhMbWRsZEV4bGRtVnNLQ2xkSmlaNVpTaHNMSElwZlhaaGNpQkRQWHR2YXpvaWIyc2lMR1JsWW5Wbk9pSmtaV0oxWnlJc2FXNW1iem9pYVc1bWJ5SXNibTkwYVdObE9pSnViM1JwWTJVaUxIZGhjbTQ2SW5kaGNtNGlMR1Z5Y205eU9pSmxjbkp2Y2lJc1kzSnBkR2xqWVd3NkltTnlhWFJwWTJGc0lpeGhiR1Z5ZERvaVlXeGxjblFpTEdWdFpYSm5PaUpsYldWeVp5SjlMSEZwUFNoV1BYdDlMRlpiUXk1dmExMDlNQ3hXVzBNdVpHVmlkV2RkUFRFc1ZsdERMbWx1Wm05ZFBUSXNWbHRETG01dmRHbGpaVjA5TkN4V1cwTXVkMkZ5YmwwOU5TeFdXME11WlhKeWIzSmRQVFlzVmx0RExtTnlhWFJwWTJGc1hUMDNMRlpiUXk1aGJHVnlkRjA5T0N4V1cwTXVaVzFsY21kZFBUa3NWaWs3Wm5WdVkzUnBiMjRnYzNRb2JpeHlLWHQyWVhJZ1lUMXlQVDA5ZG05cFpDQXdQM3Q5T25Jc2N6MWhMbWx1WTJ4MVpHVk5aWE56WVdkbExHdzljejA5UFhadmFXUWdNRDhoTVRwek8zSmxkSFZ5Ym50emRHRmphenB1TG5OMFlXTnJMR3RwYm1RNmJpNTBlWEJsTEcxbGMzTmhaMlU2YkQ5dUxtMWxjM05oWjJVNmRtOXBaQ0F3TEdOaGRYTmxjenB1TG1OaGRYTmxjeXhtYVc1blpYSndjbWx1ZERwdUxtWnBibWRsY25CeWFXNTBMR2hoYm1Sc2FXNW5PbTR1YUdGdVpHeHBibWQ5ZlhaaGNpQmZiejFtZFc1amRHbHZiaWh1TEhJc1lTeHpLWHQyWVhJZ2JEMWhjbWQxYldWdWRITXViR1Z1WjNSb0xHUTliRHd6UDNJNmN6MDlQVzUxYkd3L2N6MVBZbXBsWTNRdVoyVjBUM2R1VUhKdmNHVnlkSGxFWlhOamNtbHdkRzl5S0hJc1lTazZjeXhvTzJsbUtIUjVjR1Z2WmlCU1pXWnNaV04wUFQwaWIySnFaV04wSWlZbWRIbHdaVzltSUZKbFpteGxZM1F1WkdWamIzSmhkR1U5UFNKbWRXNWpkR2x2YmlJcFpEMVNaV1pzWldOMExtUmxZMjl5WVhSbEtHNHNjaXhoTEhNcE8yVnNjMlVnWm05eUtIWmhjaUJ2UFc0dWJHVnVaM1JvTFRFN2J6NDlNRHR2TFMwcEtHZzlibHR2WFNrbUppaGtQU2hzUERNL2FDaGtLVHBzUGpNL2FDaHlMR0VzWkNrNmFDaHlMR0VwS1h4OFpDazdjbVYwZFhKdUlHdytNeVltWkNZbVQySnFaV04wTG1SbFptbHVaVkJ5YjNCbGNuUjVLSElzWVN4a0tTeGtmU3hTWlQxN1kyOXVjMjlzWlRvaVkyOXVjMjlzWlNJc2FIUjBjRG9pYUhSMGNDSXNjMmxzWlc1ME9pSnphV3hsYm5RaWZTeDJiejFQWW1wbFkzUXVhMlY1Y3loREtTeHFQV1oxYm1OMGFXOXVLQ2w3Wm5WdVkzUnBiMjRnYmloeUxHRXNjeXhzTEdRc2FDbDdiRDA5UFhadmFXUWdNQ1ltS0d3OVVtVXVhSFIwY0Nrc1pEMDlQWFp2YVdRZ01DWW1LR1E5UXk1a1pXSjFaeWtzYUQwOVBYWnZhV1FnTUNZbUtHZzllMzBwTEhSb2FYTXVhR0Z1Wkd4bFRHOW5VM1J5WVhSbFozazljaXgwYUdsekxtaGhibVJzWlhKVWVYQmxQV3dzZEdocGN5NXNaWFpsYkQxa0xIUm9hWE11WTI5dWRHVjRkRTFoYm1GblpYSTlUWFFvWVNrc2RHaHBjeTVqYjI1MFpYaDBUV0Z1WVdkbGNpNXpaWFJEYjI1MFpYaDBLR2dwTEhNbUpuUm9hWE11WTI5dWRHVjRkRTFoYm1GblpYSXVjMlYwUTI5dWRHVjRkRkJ5YjNCbGNuUjVLQ0pzYjJkblpYSWlMSHR1WVcxbE9uTjlLWDF5WlhSMWNtNGdiaTV3Y205MGIzUjVjR1V1Ykc5blNXMXdiR1Z0Wlc1MFlYUnBiMjQ5Wm5WdVkzUnBiMjRvY2l4aExITXNiQ3hrS1h0elBUMDlkbTlwWkNBd0ppWW9jejFETG1sdVptOHBPM1poY2lCb1BTUW9ZU2tzYnp0cFppaHNJVDF1ZFd4c0tYdDJZWElnWHoxNWFTaDdjM1JoWTJ0VWNtRmpaVHBzSUdsdWMzUmhibU5sYjJZZ1JYSnliM0kvU2loc0tUcDJiMmxrSURBc2IzSnBaMmx1WVd4RmNuSnZjanBzTEc1dmJrVnljbTl5VUhKbFptbDRPaUpRY205MmFXUmxaQ0lzYzI5MWNtTmxPa2d1VEU5SFIwVlNMR2hoYm1Sc2FXNW5PaUpvWVc1a2JHVmtJaXh6ZEdGeWRFTnNiMk5yY3pwbFpTZ3BmU2s3YnoxM1pTaDdaWEp5YjNJNmMzUW9YeXg3YVc1amJIVmtaVTFsYzNOaFoyVTZJVEI5S1gwc2FDbDlaV3h6WlNCdlBXZzdkR2hwY3k1b1lXNWtiR1ZNYjJkVGRISmhkR1ZuZVNoN2JXVnpjMkZuWlRva0tISXBMR052Ym5SbGVIUTZieXh6ZEdGMGRYTTZjMzBzZEdocGN5eGtLWDBzYmk1d2NtOTBiM1I1Y0dVdWJHOW5QV1oxYm1OMGFXOXVLSElzWVN4ekxHd3BlM005UFQxMmIybGtJREFtSmloelBVTXVhVzVtYnlrN2RtRnlJR1E3Ym5Rb2N5eFNaUzVvZEhSd0xIUm9hWE1wSmlZb1pEMGtaU2dwS1N4MGFHbHpMbXh2WjBsdGNHeGxiV1Z1ZEdGMGFXOXVLSElzWVN4ekxHd3NaQ2w5TEc0dWNISnZkRzkwZVhCbExuTmxkRU52Ym5SbGVIUTlablZ1WTNScGIyNG9jaWw3ZEdocGN5NWpiMjUwWlhoMFRXRnVZV2RsY2k1elpYUkRiMjUwWlhoMEtISXBmU3h1TG5CeWIzUnZkSGx3WlM1blpYUkRiMjUwWlhoMFBXWjFibU4wYVc5dUtDbDdjbVYwZFhKdUlIUm9hWE11WTI5dWRHVjRkRTFoYm1GblpYSXVaMlYwUTI5dWRHVjRkQ2dwZlN4dUxuQnliM1J2ZEhsd1pTNXpaWFJEYjI1MFpYaDBVSEp2Y0dWeWRIazlablZ1WTNScGIyNG9jaXhoS1h0MGFHbHpMbU52Ym5SbGVIUk5ZVzVoWjJWeUxuTmxkRU52Ym5SbGVIUlFjbTl3WlhKMGVTaHlMR0VwZlN4dUxuQnliM1J2ZEhsd1pTNXlaVzF2ZG1WRGIyNTBaWGgwVUhKdmNHVnlkSGs5Wm5WdVkzUnBiMjRvY2lsN2RHaHBjeTVqYjI1MFpYaDBUV0Z1WVdkbGNpNXlaVzF2ZG1WRGIyNTBaWGgwVUhKdmNHVnlkSGtvY2lsOUxHNHVjSEp2ZEc5MGVYQmxMbU5zWldGeVEyOXVkR1Y0ZEQxbWRXNWpkR2x2YmlncGUzUm9hWE11WTI5dWRHVjRkRTFoYm1GblpYSXVZMnhsWVhKRGIyNTBaWGgwS0NsOUxHNHVjSEp2ZEc5MGVYQmxMbk5sZEVoaGJtUnNaWEk5Wm5WdVkzUnBiMjRvY2lsN2RHaHBjeTVvWVc1a2JHVnlWSGx3WlQxeWZTeHVMbkJ5YjNSdmRIbHdaUzVuWlhSSVlXNWtiR1Z5UFdaMWJtTjBhVzl1S0NsN2NtVjBkWEp1SUhSb2FYTXVhR0Z1Wkd4bGNsUjVjR1Y5TEc0dWNISnZkRzkwZVhCbExuTmxkRXhsZG1Wc1BXWjFibU4wYVc5dUtISXBlM1JvYVhNdWJHVjJaV3c5Y24wc2JpNXdjbTkwYjNSNWNHVXVaMlYwVEdWMlpXdzlablZ1WTNScGIyNG9LWHR5WlhSMWNtNGdkR2hwY3k1c1pYWmxiSDBzWDI4b1cyMXlYU3h1TG5CeWIzUnZkSGx3WlN3aWJHOW5TVzF3YkdWdFpXNTBZWFJwYjI0aUxHNTFiR3dwTEc1OUtDazdhaTV3Y205MGIzUjVjR1V1YjJzOVdpaERMbTlyS1N4cUxuQnliM1J2ZEhsd1pTNWtaV0oxWnoxYUtFTXVaR1ZpZFdjcExHb3VjSEp2ZEc5MGVYQmxMbWx1Wm04OVdpaERMbWx1Wm04cExHb3VjSEp2ZEc5MGVYQmxMbTV2ZEdsalpUMWFLRU11Ym05MGFXTmxLU3hxTG5CeWIzUnZkSGx3WlM1M1lYSnVQVm9vUXk1M1lYSnVLU3hxTG5CeWIzUnZkSGx3WlM1bGNuSnZjajFhS0VNdVpYSnliM0lwTEdvdWNISnZkRzkwZVhCbExtTnlhWFJwWTJGc1BWb29ReTVqY21sMGFXTmhiQ2tzYWk1d2NtOTBiM1I1Y0dVdVlXeGxjblE5V2loRExtRnNaWEowS1N4cUxuQnliM1J2ZEhsd1pTNWxiV1Z5WnoxYUtFTXVaVzFsY21jcE8yWjFibU4wYVc5dUlGb29iaWw3Y21WMGRYSnVJR1oxYm1OMGFXOXVLSElzWVN4ektYdDJZWElnYkR0dWRDaHVMRkpsTG1oMGRIQXNkR2hwY3lrbUppaHNQU1JsS0NrcExIUm9hWE11Ykc5blNXMXdiR1Z0Wlc1MFlYUnBiMjRvY2l4aExHNHNjeXhzS1gxOVpuVnVZM1JwYjI0Z1oyOG9iaXh5S1h0eVpYUjFjbTU3ZG1sbGR6cDdjbVZtWlhKeVpYSTZaRzlqZFcxbGJuUXVjbVZtWlhKeVpYSXNkWEpzT25kcGJtUnZkeTVzYjJOaGRHbHZiaTVvY21WbWZTeGpiMjUwWlhoME9tNHVaMlYwUTI5dWRHVjRkQ2dwTEhWelpYSTZjaTVuWlhSRGIyNTBaWGgwS0NsOWZYWmhjaUI1Ynowek1pcFlPMloxYm1OMGFXOXVJRzF2S0c0cGUyNHVkWE5sVUdOcFNXNTBZV3RsUFQwOUlUQW1KbTR1YzJsMFpTWW1iaTV6YVhSbElUMDlJbVJoZEdGa2IyZG9jUzVqYjIwaUppWjZMbmRoY200b0lsQkRTU0JqYjIxd2JHbGhibU5sSUdadmNpQk1iMmR6SUdseklHOXViSGtnWVhaaGFXeGhZbXhsSUdadmNpQkVZWFJoWkc5bklHOXlaMkZ1YVhwaGRHbHZibk1nYVc0Z2RHaGxJRlZUTVNCemFYUmxMaUJFWldaaGRXeDBJR2x1ZEdGclpTQjNhV3hzSUdKbElIVnpaV1F1SWlrN2RtRnlJSEk5WjI0b2Jpa3NZVDFYYVNodUxtWnZjbmRoY21SRGIyNXpiMnhsVEc5bmN5eHRaU2hNS1N3aVJtOXlkMkZ5WkNCRGIyNXpiMnhsSUV4dlozTWlLU3h6UFZkcEtHNHVabTl5ZDJGeVpGSmxjRzl5ZEhNc2JXVW9XbVVwTENKR2IzSjNZWEprSUZKbGNHOXlkSE1pS1R0cFppZ2hLQ0Z5Zkh3aFlYeDhJWE1wS1hKbGRIVnliaUJ1TG1admNuZGhjbVJGY25KdmNuTlViMHh2WjNNbUppRjVaU2hoTEV3dVpYSnliM0lwSmlaaExuQjFjMmdvVEM1bGNuSnZjaWtzVHloN1ptOXlkMkZ5WkVWeWNtOXljMVJ2VEc5bmN6cHVMbVp2Y25kaGNtUkZjbkp2Y25OVWIweHZaM01oUFQwaE1TeG1iM0ozWVhKa1EyOXVjMjlzWlV4dlozTTZZU3htYjNKM1lYSmtVbVZ3YjNKMGN6cHpMSEpsY1hWbGMzUkZjbkp2Y2xKbGMzQnZibk5sVEdWdVozUm9UR2x0YVhRNmVXOHNjMlZ1WkV4dlozTkJablJsY2xObGMzTnBiMjVGZUhCcGNtRjBhVzl1T2lFaGJpNXpaVzVrVEc5bmMwRm1kR1Z5VTJWemMybHZia1Y0Y0dseVlYUnBiMjU5TEhJcGZXWjFibU4wYVc5dUlGZHBLRzRzY2l4aEtYdHBaaWh1UFQwOWRtOXBaQ0F3S1hKbGRIVnlibHRkTzJsbUtDRW9iajA5UFNKaGJHd2lmSHhCY25KaGVTNXBjMEZ5Y21GNUtHNHBKaVp1TG1WMlpYSjVLR1oxYm1OMGFXOXVLSE1wZTNKbGRIVnliaUI1WlNoeUxITXBmU2twS1h0NkxtVnljbTl5S0NJaUxtTnZibU5oZENoaExDY2djMmh2ZFd4a0lHSmxJQ0poYkd3aUlHOXlJR0Z1SUdGeWNtRjVJSGRwZEdnZ1lXeHNiM2RsWkNCMllXeDFaWE1nSWljcExtTnZibU5oZENoeUxtcHZhVzRvSnlJc0lDSW5LU3duSWljcEtUdHlaWFIxY201OWNtVjBkWEp1SUc0OVBUMGlZV3hzSWo5eU9tbHpLRzRwZldaMWJtTjBhVzl1SUdKdktHNHBlM1poY2lCeVBYbHVLRzRwTzNKbGRIVnliaUJQS0h0bWIzSjNZWEprWDJWeWNtOXljMTkwYjE5c2IyZHpPbTR1Wm05eWQyRnlaRVZ5Y205eWMxUnZURzluY3l4bWIzSjNZWEprWDJOdmJuTnZiR1ZmYkc5bmN6cHVMbVp2Y25kaGNtUkRiMjV6YjJ4bFRHOW5jeXhtYjNKM1lYSmtYM0psY0c5eWRITTZiaTVtYjNKM1lYSmtVbVZ3YjNKMGN5eDFjMlZmY0dOcFgybHVkR0ZyWlRwdUxuVnpaVkJqYVVsdWRHRnJaU3h6Wlc1a1gyeHZaM05mWVdaMFpYSmZjMlZ6YzJsdmJsOWxlSEJwY21GMGFXOXVPbTR1YzJWdVpFeHZaM05CWm5SbGNsTmxjM05wYjI1RmVIQnBjbUYwYVc5dWZTeHlLWDFtZFc1amRHbHZiaUJUYnlodUxISXNZU2w3ZG1GeUlITTlRMmtvS1N4c0xHUXNhRDF5TG05aWMyVnlkbUZpYkdVdWMzVmljMk55YVdKbEtHOHBPMloxYm1OMGFXOXVJRzhvS1h0cFppZ2hLQ0ZrZkh3aGJIeDhJWEl1YVhOSGNtRnVkR1ZrS0NrcEtYdG9MblZ1YzNWaWMyTnlhV0psS0NrN2RtRnlJRjg5WVNoc0xHUXBPM011WkhKaGFXNG9YeWw5ZlhKbGRIVnlibnRwYm1sME9tWjFibU4wYVc5dUtGOHBlMmxtS0NGZktYdDZMbVZ5Y205eUtDSk5hWE56YVc1bklHTnZibVpwWjNWeVlYUnBiMjRpS1R0eVpYUjFjbTU5YVdZb2JXNG9YeTVsYm1GaWJHVkZlSEJsY21sdFpXNTBZV3hHWldGMGRYSmxjeWtzZEhRb0tTWW1LRjg5ZUc4b1h5a3BMR3c5WHl4a0tYdFRhU2dpUkVSZlRFOUhVeUlzWHlrN2NtVjBkWEp1ZlhaaGNpQndQVzF2S0Y4cE8zQW1KaWhrUFhBc1NHa29LUzV6ZFdKelkzSnBZbVVvYVdVcExISXVkSEo1Vkc5SmJtbDBLSEF1ZEhKaFkydHBibWREYjI1elpXNTBLU3h2S0NrcGZTeG5aWFFnYVc1cGRFTnZibVpwWjNWeVlYUnBiMjRvS1h0eVpYUjFjbTRnYkgwc1oyVjBTVzUwWlhKdVlXeERiMjUwWlhoME9tbGxMR2hoYm1Sc1pVeHZaenBtZFc1amRHbHZiaWhmTEhBc1l5eG5MR1VwZTJjOVBUMTJiMmxrSURBbUppaG5QVzRvS1Nrc1pUMDlQWFp2YVdRZ01DWW1LR1U5VVNncEtTeHpMbUZrWkNobWRXNWpkR2x2YmloMEtYdHlaWFIxY200Z2RDNW9ZVzVrYkdWTWIyY29YeXh3TEdNc1p5eGxLWDBwZlgxOVpuVnVZM1JwYjI0Z2VHOG9iaWw3Y21WMGRYSnVJRThvZTMwc2JpeDdZMnhwWlc1MFZHOXJaVzQ2SW1WdGNIUjVJbjBwZlhaaGNpQllhVDBpYkc5bmN5STdablZ1WTNScGIyNGdWVzhvYmlsN2RtRnlJSEk5YzI4b0tTeGhQVTEwS0hJdVoyVjBUM0pEY21WaGRHVlVjbUZqYTJWeUtESXBLU3h6UFUxMEtISXVaMlYwVDNKRGNtVmhkR1ZVY21GamEyVnlLREVwS1N4c1BWcHlLQ2s3Wm5WdVkzUnBiMjRnWkNncGUzSmxkSFZ5YmlCbmJ5aGhMSE1wZlhaaGNpQm9QVk52S0dRc2JDeG1kVzVqZEdsdmJpaHdMR01wZTNBdWMzUnZjbVZEYjI1MFpYaDBjMEZqY205emMxQmhaMlZ6SmlZb1dXa29ZeXhoTEZocExESXBMRmxwS0dNc2N5eFlhU3d4S1NrN2RtRnlJR2M5Ymlod0xHTXNaQ3hzS1R0eVpYUjFjbTRnYUQxM2J5aHdMR2NwTEdkOUtTeHZQWHQ5TEY4OWJtVjNJR29vWm5WdVkzUnBiMjRvS1h0bWIzSW9kbUZ5SUhBOVcxMHNZejB3TzJNOFlYSm5kVzFsYm5SekxteGxibWQwYUR0akt5c3BjRnRqWFQxaGNtZDFiV1Z1ZEhOYlkxMDdjbVYwZFhKdUlHZ3VhR0Z1Wkd4bFRHOW5MbUZ3Y0d4NUtHZ3NjQ2w5TEhJdVkzSmxZWFJsUkdWMFlXTm9aV1JVY21GamEyVnlLQ2twTzNKbGRIVnliaUJ4YmloN2JHOW5aMlZ5T2w4c2FXNXBkRHBDS0daMWJtTjBhVzl1S0hBcGUzSmxkSFZ5YmlCb0xtbHVhWFFvY0NsOUtTeHpaWFJVY21GamEybHVaME52Ym5ObGJuUTZRaWhtZFc1amRHbHZiaWh3S1h0c0xuVndaR0YwWlNod0tTeGtjeWg3Wm1WaGRIVnlaVG9pYzJWMExYUnlZV05yYVc1bkxXTnZibk5sYm5RaUxIUnlZV05yYVc1blgyTnZibk5sYm5RNmNIMHBmU2tzWjJWMFIyeHZZbUZzUTI5dWRHVjRkRHBDS0daMWJtTjBhVzl1S0NsN2NtVjBkWEp1SUdFdVoyVjBRMjl1ZEdWNGRDZ3BmU2tzYzJWMFIyeHZZbUZzUTI5dWRHVjRkRHBDS0daMWJtTjBhVzl1S0hBcGUzSmxkSFZ5YmlCaExuTmxkRU52Ym5SbGVIUW9jQ2w5S1N4elpYUkhiRzlpWVd4RGIyNTBaWGgwVUhKdmNHVnlkSGs2UWlobWRXNWpkR2x2Ymlod0xHTXBlM0psZEhWeWJpQmhMbk5sZEVOdmJuUmxlSFJRY205d1pYSjBlU2h3TEdNcGZTa3NjbVZ0YjNabFIyeHZZbUZzUTI5dWRHVjRkRkJ5YjNCbGNuUjVPa0lvWm5WdVkzUnBiMjRvY0NsN2NtVjBkWEp1SUdFdWNtVnRiM1psUTI5dWRHVjRkRkJ5YjNCbGNuUjVLSEFwZlNrc1kyeGxZWEpIYkc5aVlXeERiMjUwWlhoME9rSW9ablZ1WTNScGIyNG9LWHR5WlhSMWNtNGdZUzVqYkdWaGNrTnZiblJsZUhRb0tYMHBMR055WldGMFpVeHZaMmRsY2pwQ0tHWjFibU4wYVc5dUtIQXNZeWw3Y21WMGRYSnVJR005UFQxMmIybGtJREFtSmloalBYdDlLU3h2VzNCZFBXNWxkeUJxS0daMWJtTjBhVzl1S0NsN1ptOXlLSFpoY2lCblBWdGRMR1U5TUR0bFBHRnlaM1Z0Wlc1MGN5NXNaVzVuZEdnN1pTc3JLV2RiWlYwOVlYSm5kVzFsYm5SelcyVmRPM0psZEhWeWJpQm9MbWhoYm1Sc1pVeHZaeTVoY0hCc2VTaG9MR2NwZlN4eUxtTnlaV0YwWlVSbGRHRmphR1ZrVkhKaFkydGxjaWdwTENRb2NDa3NZeTVvWVc1a2JHVnlMR011YkdWMlpXd3NKQ2hqTG1OdmJuUmxlSFFwS1N4dlczQmRmU2tzWjJWMFRHOW5aMlZ5T2tJb1puVnVZM1JwYjI0b2NDbDdjbVYwZFhKdUlHOWJjRjE5S1N4blpYUkpibWwwUTI5dVptbG5kWEpoZEdsdmJqcENLR1oxYm1OMGFXOXVLQ2w3Y21WMGRYSnVJRVZwS0dndWFXNXBkRU52Ym1acFozVnlZWFJwYjI0cGZTa3NaMlYwU1c1MFpYSnVZV3hEYjI1MFpYaDBPa0lvWm5WdVkzUnBiMjRvY0NsN2NtVjBkWEp1SUdndVoyVjBTVzUwWlhKdVlXeERiMjUwWlhoMEtIQXBmU2tzYzJWMFZYTmxjanBDS0daMWJtTjBhVzl1S0hBcGUzQnZLSEFwSmlaekxuTmxkRU52Ym5SbGVIUW9TMmtvY0NrcGZTa3NaMlYwVlhObGNqcENLR1oxYm1OMGFXOXVLQ2w3Y21WMGRYSnVJSE11WjJWMFEyOXVkR1Y0ZENncGZTa3NjMlYwVlhObGNsQnliM0JsY25SNU9rSW9ablZ1WTNScGIyNG9jQ3hqS1h0MllYSWdaeXhsUFV0cEtDaG5QWHQ5TEdkYmNGMDlZeXhuS1NsYmNGMDdjeTV6WlhSRGIyNTBaWGgwVUhKdmNHVnlkSGtvY0N4bEtYMHBMSEpsYlc5MlpWVnpaWEpRY205d1pYSjBlVHBDS0daMWJtTjBhVzl1S0hBcGUzSmxkSFZ5YmlCekxuSmxiVzkyWlVOdmJuUmxlSFJRY205d1pYSjBlU2h3S1gwcExHTnNaV0Z5VlhObGNqcENLR1oxYm1OMGFXOXVLQ2w3Y21WMGRYSnVJSE11WTJ4bFlYSkRiMjUwWlhoMEtDbDlLWDBwZldaMWJtTjBhVzl1SUhkdktHNHNjaWw3Y21WMGRYSnVJRThvZTJsdWFYUTZablZ1WTNScGIyNG9ZU2w3VTJrb0lrUkVYMHhQUjFNaUxHRXBmU3hwYm1sMFEyOXVabWxuZFhKaGRHbHZianB1ZlN4eUtYMTJZWElnUlc4OUlteHZaM01pTzJaMWJtTjBhVzl1SUVGdktHNHNjaWw3ZG1GeUlHRTllWE1vYml4RmJ5eG1kVzVqZEdsdmJpaHpLWHR5WlhSMWNtNGdWRzhvYml4ektYMHNjaWs3Y21WMGRYSnVlMlpwYm1SVWNtRmphMlZrVTJWemMybHZianBtZFc1amRHbHZiaWh6TEd3cGUydzlQVDEyYjJsa0lEQW1KaWhzUFh0eVpYUjFjbTVKYm1GamRHbDJaVG9oTVgwcE8zWmhjaUJrUFdFdVptbHVaRk5sYzNOcGIyNG9jeXhzS1R0eVpYUjFjbTRnWkNZbVpDNTBjbUZqYTJsdVoxUjVjR1U5UFQwaU1TSS9lMmxrT21RdWFXUjlPblp2YVdRZ01IMHNaWGh3YVhKbFQySnpaWEoyWVdKc1pUcGhMbVY0Y0dseVpVOWljMlZ5ZG1GaWJHVjlmV1oxYm1OMGFXOXVJRU52S0c0cGUzWmhjaUJ5UFVwcEtHNHBQVDA5SWpFaUxHRTljajk3ZlRwMmIybGtJREE3Y21WMGRYSnVlMlpwYm1SVWNtRmphMlZrVTJWemMybHZianBtZFc1amRHbHZiaWdwZTNKbGRIVnliaUJoZlN4bGVIQnBjbVZQWW5ObGNuWmhZbXhsT201bGR5QlNmWDFtZFc1amRHbHZiaUJLYVNodUtYdHlaWFIxY200Z1RtVW9iaTV6WlhOemFXOXVVMkZ0Y0d4bFVtRjBaU2svSWpFaU9pSXdJbjFtZFc1amRHbHZiaUJVYnlodUxISXBlM1poY2lCaFBVbHZLSElwUDNJNlNta29iaWs3Y21WMGRYSnVlM1J5WVdOcmFXNW5WSGx3WlRwaExHbHpWSEpoWTJ0bFpEcGhQVDA5SWpFaWZYMW1kVzVqZEdsdmJpQkpieWh1S1h0eVpYUjFjbTRnYmowOVBTSXdJbng4YmowOVBTSXhJbjEyWVhJZ0pHazlJVEU3Wm5WdVkzUnBiMjRnYjNRb2JpbDdkbUZ5SUhJOWQybHVaRzkzTzJsbUtHcHBLQ2twZTNaaGNpQmhQWE1vY2k1RVJGOVNWVTFmVTFsT1ZFaEZWRWxEVXlrN2NtVjBkWEp1SVdFbUppRWthU1ltS0NScFBTRXdMRWxwS0NKTWIyZHpJSE5sYm5RZ1ltVm1iM0psSUZKVlRTQnBjeUJwYm1wbFkzUmxaQ0JpZVNCMGFHVWdjM2x1ZEdobGRHbGpjeUIzYjNKclpYSWlMSHQwWlhOMFNXUTZhRzhvS1N4eVpYTjFiSFJKWkRwamJ5Z3BmU2twTEdGOWNtVjBkWEp1SUhNb2NpNUVSRjlTVlUwcE8yWjFibU4wYVc5dUlITW9iQ2w3YVdZb2JDWW1iQzVuWlhSSmJuUmxjbTVoYkVOdmJuUmxlSFFwY21WMGRYSnVJR3d1WjJWMFNXNTBaWEp1WVd4RGIyNTBaWGgwS0c0cGZYMW1kVzVqZEdsdmJpQkNieWh1TEhJc1lTeHpMR3dwZTNaaGNpQmtQWFp2TG1OdmJtTmhkQ2hiSW1OMWMzUnZiU0pkS1N4b1BYdDlPMlF1Wm05eVJXRmphQ2htZFc1amRHbHZiaWh2S1h0b1cyOWRQVTF6S0c4c2NpNWxkbVZ1ZEZKaGRHVk1hVzFwZEdWeVZHaHlaWE5vYjJ4a0xHd3BmU2tzWVM1emRXSnpZM0pwWW1Vb01DeG1kVzVqZEdsdmJpaHZLWHQyWVhJZ1h5eHdMR005Ynk1eVlYZE1iMmR6UlhabGJuUXNaejF2TG0xbGMzTmhaMlZEYjI1MFpYaDBMR1U5WnowOVBYWnZhV1FnTUQ5MmIybGtJREE2Wnl4MFBXOHVjMkYyWldSRGIyMXRiMjVEYjI1MFpYaDBMR2s5ZEQwOVBYWnZhV1FnTUQ5MmIybGtJREE2ZEN4bVBXOHVaRzl0WVdsdVEyOXVkR1Y0ZEN4MVBYVnlLR011WkdGMFpTa3NkajF1TG1acGJtUlVjbUZqYTJWa1UyVnpjMmx2YmloMUtUdHBaaWdoS0NGMkppWW9JWEl1YzJWdVpFeHZaM05CWm5SbGNsTmxjM05wYjI1RmVIQnBjbUYwYVc5dWZId2hiaTVtYVc1a1ZISmhZMnRsWkZObGMzTnBiMjRvZFN4N2NtVjBkWEp1U1c1aFkzUnBkbVU2SVRCOUtTa3BLWHQyWVhJZ2VUMXBmSHh6S0Nrc2JUMTNaU2g3YzJWeWRtbGpaVHB5TG5ObGNuWnBZMlVzYzJWemMybHZibDlwWkRwMlAzWXVhV1E2ZG05cFpDQXdMSFZ6Y2pwMmRDaDVMblZ6WlhJcFAzWnZhV1FnTURwNUxuVnpaWElzZG1sbGR6cDVMblpwWlhkOUxIa3VZMjl1ZEdWNGRDeHZkQ2gxS1N4akxHVXBPeWdvWHoxeUxtSmxabTl5WlZObGJtUXBQVDA5Ym5Wc2JIeDhYejA5UFhadmFXUWdNRDkyYjJsa0lEQTZYeTVqWVd4c0tISXNiU3htS1NrOVBUMGhNWHg4YlM1dmNtbG5hVzRoUFQxSUxrRkhSVTVVSmlZb0tIQTlhRnR0TG5OMFlYUjFjMTBwSVQwOWJuVnNiQ1ltY0NFOVBYWnZhV1FnTUQ5d09tZ3VZM1Z6ZEc5dEtTNXBjMHhwYldsMFVtVmhZMmhsWkNncGZIeGhMbTV2ZEdsbWVTZ3hMRzBwZlgwcGZYWmhjaUIyWlN4R2J6MG9kbVU5ZTMwc2RtVmJUQzVzYjJkZFBVTXVhVzVtYnl4MlpWdE1MbVJsWW5WblhUMURMbVJsWW5WbkxIWmxXMHd1YVc1bWIxMDlReTVwYm1adkxIWmxXMHd1ZDJGeWJsMDlReTUzWVhKdUxIWmxXMHd1WlhKeWIzSmRQVU11WlhKeWIzSXNkbVVwTzJaMWJtTjBhVzl1SUV4dktHNHNjaWw3ZG1GeUlHRTlXSE1vYmk1bWIzSjNZWEprUTI5dWMyOXNaVXh2WjNNcExuTjFZbk5qY21saVpTaG1kVzVqZEdsdmJpaHpLWHQyWVhJZ2JEMTdjbUYzVEc5bmMwVjJaVzUwT250a1lYUmxPbEVvS1N4dFpYTnpZV2RsT25NdWJXVnpjMkZuWlN4dmNtbG5hVzQ2U0M1RFQwNVRUMHhGTEdWeWNtOXlPbk11WlhKeWIzSW1Kbk4wS0hNdVpYSnliM0lwTEhOMFlYUjFjenBHYjF0ekxtRndhVjE5TEdSdmJXRnBia052Ym5SbGVIUTZlMmhoYm1Sc2FXNW5VM1JoWTJzNmN5NW9ZVzVrYkdsdVoxTjBZV05yZlgwN2NpNXViM1JwWm5rb01DeHNLWDBwTzNKbGRIVnlibnR6ZEc5d09tWjFibU4wYVc5dUtDbDdZUzUxYm5OMVluTmpjbWxpWlNncGZYMTlablZ1WTNScGIyNGdhMjhvYml4eUtYdDJZWElnWVQxWWJpaHVMRzR1Wm05eWQyRnlaRkpsY0c5eWRITXBMbk4xWW5OamNtbGlaU2htZFc1amRHbHZiaWh6S1h0MllYSWdiRDF6TG0xbGMzTmhaMlVzWkN4b1BYTXViM0pwWjJsdVlXeEZjbkp2Y2k1MGVYQmxQVDA5SW1SbGNISmxZMkYwYVc5dUlqOURMbmRoY200NlF5NWxjbkp2Y2p0b1BUMDlReTVsY25KdmNqOWtQWE4wS0hNcE9uTXVjM1JoWTJzbUppaHNLejBpSUVadmRXNWtJR2x1SUNJdVkyOXVZMkYwS0ZsdUtITXVjM1JoWTJzcEtTa3NjaTV1YjNScFpua29NQ3g3Y21GM1RHOW5jMFYyWlc1ME9udGtZWFJsT2xFb0tTeHRaWE56WVdkbE9td3NiM0pwWjJsdU9rZ3VVa1ZRVDFKVUxHVnljbTl5T21Rc2MzUmhkSFZ6T21oOWZTbDlLVHR5WlhSMWNtNTdjM1J2Y0RwbWRXNWpkR2x2YmlncGUyRXVkVzV6ZFdKelkzSnBZbVVvS1gxOWZXWjFibU4wYVc5dUlIcHZLRzRzY2lsN2FXWW9JVzR1Wm05eWQyRnlaRVZ5Y205eWMxUnZURzluY3lseVpYUjFjbTU3YzNSdmNEcHBaWDA3ZG1GeUlHRTlSM01vYmlrdWMzVmljMk55YVdKbEtHWjFibU4wYVc5dUtHUXBlMlF1YzNSaGRHVTlQVDBpWTI5dGNHeGxkR1VpSmlac0tDSjRhSElpTEdRcGZTa3NjejFJYVNncExuTjFZbk5qY21saVpTaG1kVzVqZEdsdmJpaGtLWHRrTG5OMFlYUmxQVDA5SW5KbGMyOXNkbVVpSmlac0tDSm1aWFJqYUNJc1pDbDlLVHRtZFc1amRHbHZiaUJzS0dRc2FDbDdJVzR1YVhOSmJuUmhhMlZWY213b2FDNTFjbXdwSmlZb1JHOG9hQ2w4ZkVacEtHZ3VjM1JoZEhWektTa21KaWdpZUdoeUltbHVJR2cvVW04b2FDNTRhSElzYml4dktUcG9MbkpsYzNCdmJuTmxQMUJ2S0dndWNtVnpjRzl1YzJVc2JpeHZLVHBvTG1WeWNtOXlKaVpQYnlob0xtVnljbTl5TEc0c2J5a3BPMloxYm1OMGFXOXVJRzhvWHlsN2RtRnlJSEE5ZTJselFXSnZjblJsWkRwb0xtbHpRV0p2Y25SbFpDeG9ZVzVrYkdsdVoxTjBZV05yT21ndWFHRnVaR3hwYm1kVGRHRmphMzA3Y2k1dWIzUnBabmtvTUN4N2NtRjNURzluYzBWMlpXNTBPbnR0WlhOellXZGxPaUlpTG1OdmJtTmhkQ2hPYnloa0tTd2lJR1Z5Y205eUlDSXBMbU52Ym1OaGRDaG9MbTFsZEdodlpDd2lJQ0lwTG1OdmJtTmhkQ2hvTG5WeWJDa3NaR0YwWlRwb0xuTjBZWEowUTJ4dlkydHpMblJwYldWVGRHRnRjQ3hsY25KdmNqcDdjM1JoWTJzNlgzeDhJa1poYVd4bFpDQjBieUJzYjJGa0lpeG9ZVzVrYkdsdVp6cDJiMmxrSURCOUxHaDBkSEE2ZTIxbGRHaHZaRHBvTG0xbGRHaHZaQ3h6ZEdGMGRYTmZZMjlrWlRwb0xuTjBZWFIxY3l4MWNtdzZhQzUxY214OUxITjBZWFIxY3pwRExtVnljbTl5TEc5eWFXZHBianBJTGs1RlZGZFBVa3Q5TEdSdmJXRnBia052Ym5SbGVIUTZjSDBwZlgxeVpYUjFjbTU3YzNSdmNEcG1kVzVqZEdsdmJpZ3BlMkV1ZFc1emRXSnpZM0pwWW1Vb0tTeHpMblZ1YzNWaWMyTnlhV0psS0NsOWZYMW1kVzVqZEdsdmJpQlNieWh1TEhJc1lTbDdkSGx3Wlc5bUlHNHVjbVZ6Y0c5dWMyVTlQU0p6ZEhKcGJtY2lQMkVvUjNRb2JpNXlaWE53YjI1elpTeHlLU2s2WVNodUxuSmxjM0J2Ym5ObEtYMW1kVzVqZEdsdmJpQlBieWh1TEhJc1lTbDdZU2hIZENob1pTaEtLRzRwS1N4eUtTbDlablZ1WTNScGIyNGdVRzhvYml4eUxHRXBlM1poY2lCelBYaHpLRzRwT3lGemZId2hjeTVpYjJSNVAyRW9LVHAzYVc1a2IzY3VWR1Y0ZEVSbFkyOWtaWEkvVFc4b2N5NWliMlI1TEhJdWNtVnhkV1Z6ZEVWeWNtOXlVbVZ6Y0c5dWMyVk1aVzVuZEdoTWFXMXBkQ3htZFc1amRHbHZiaWhzTEdRcGUyRW9iRDhpVlc1aFlteGxJSFJ2SUhKbGRISnBaWFpsSUhKbGMzQnZibk5sT2lBaUxtTnZibU5oZENoc0tUcGtLWDBwT25NdWRHVjRkQ2dwTG5Sb1pXNG9RaWhtZFc1amRHbHZiaWhzS1h0eVpYUjFjbTRnWVNoSGRDaHNMSElwS1gwcExFSW9ablZ1WTNScGIyNG9iQ2w3Y21WMGRYSnVJR0VvSWxWdVlXSnNaU0IwYnlCeVpYUnlhV1YyWlNCeVpYTndiMjV6WlRvZ0lpNWpiMjVqWVhRb2JDa3BmU2twZldaMWJtTjBhVzl1SUVSdktHNHBlM0psZEhWeWJpQnVMbk4wWVhSMWN6MDlQVEFtSm00dWNtVnpjRzl1YzJWVWVYQmxJVDA5SW05d1lYRjFaU0o5Wm5WdVkzUnBiMjRnUjNRb2JpeHlLWHR5WlhSMWNtNGdiaTVzWlc1bmRHZytjaTV5WlhGMVpYTjBSWEp5YjNKU1pYTndiMjV6WlV4bGJtZDBhRXhwYldsMFB5SWlMbU52Ym1OaGRDaHVMbk4xWW5OMGNtbHVaeWd3TEhJdWNtVnhkV1Z6ZEVWeWNtOXlVbVZ6Y0c5dWMyVk1aVzVuZEdoTWFXMXBkQ2tzSWk0dUxpSXBPbTU5Wm5WdVkzUnBiMjRnVG04b2JpbDdjbVYwZFhKdUlHNDlQVDBpZUdoeUlqOGlXRWhTSWpvaVJtVjBZMmdpZldaMWJtTjBhVzl1SUUxdktHNHNjaXhoS1h0aGJ5aHVMR1oxYm1OMGFXOXVLSE1zYkN4a0tYdHBaaWh6S1dFb2N5azdaV3h6Wlh0MllYSWdhRDF1WlhjZ1ZHVjRkRVJsWTI5a1pYSW9LUzVrWldOdlpHVW9iQ2s3WkNZbUtHZ3JQU0l1TGk0aUtTeGhLSFp2YVdRZ01DeG9LWDE5TEh0aWVYUmxjMHhwYldsME9uSXNZMjlzYkdWamRGTjBjbVZoYlVKdlpIazZJVEI5S1gxbWRXNWpkR2x2YmlCSGJ5aHVMSElwZTJsbUtDRnVMbVp2Y25kaGNtUkZjbkp2Y25OVWIweHZaM01wY21WMGRYSnVlM04wYjNBNmFXVjlPM1poY2lCaFBXNWxkeUJTTEhNOVZtNG9ZU2t1YzNSdmNDeHNQV0V1YzNWaWMyTnlhV0psS0daMWJtTjBhVzl1S0dRcGUzSXVibTkwYVdaNUtEQXNlM0poZDB4dlozTkZkbVZ1ZERwN2JXVnpjMkZuWlRwa0xtMWxjM05oWjJVc1pHRjBaVHBrTG5OMFlYSjBRMnh2WTJ0ekxuUnBiV1ZUZEdGdGNDeGxjbkp2Y2pwemRDaGtLU3h2Y21sbmFXNDZTQzVUVDFWU1EwVXNjM1JoZEhWek9rTXVaWEp5YjNKOWZTbDlLVHR5WlhSMWNtNTdjM1J2Y0RwbWRXNWpkR2x2YmlncGUzTW9LU3hzTG5WdWMzVmljMk55YVdKbEtDbDlmWDEyWVhJZ1NHODlUbk1zU3p0bWRXNWpkR2x2YmlCWmJ5aHVLWHRtZFc1amRHbHZiaUJ5S0dFc2N5eHNMR1FzYUNsN2RtRnlJRzg5ZDJVb2N5NW5aWFJEYjI1MFpYaDBLQ2tzWVM1amIyNTBaWGgwS1R0cFppaHVkQ2hoTG5OMFlYUjFjeXhTWlM1amIyNXpiMnhsTEhNcEppWnFieWhoTEc4cExHNTBLR0V1YzNSaGRIVnpMRkpsTG1oMGRIQXNjeWtwZTNaaGNpQmZQWHR5WVhkTWIyZHpSWFpsYm5RNmUyUmhkR1U2YUh4OFVTZ3BMRzFsYzNOaFoyVTZZUzV0WlhOellXZGxMSE4wWVhSMWN6cGhMbk4wWVhSMWN5eHZjbWxuYVc0NlNDNU1UMGRIUlZKOUxHMWxjM05oWjJWRGIyNTBaWGgwT204c2MyRjJaV1JEYjIxdGIyNURiMjUwWlhoME9tUjlPMndtSmloZkxtUnZiV0ZwYmtOdmJuUmxlSFE5ZTJoaGJtUnNhVzVuVTNSaFkyczZiSDBwTEc0dWJtOTBhV1o1S0RBc1h5bDlmWEpsZEhWeWJudG9ZVzVrYkdWTWIyYzZjbjE5ZG1GeUlGWnZQU2hMUFh0OUxFdGJReTV2YTEwOVRDNWtaV0oxWnl4TFcwTXVaR1ZpZFdkZFBVd3VaR1ZpZFdjc1MxdERMbWx1Wm05ZFBVd3VhVzVtYnl4TFcwTXVibTkwYVdObFhUMU1MbWx1Wm04c1MxdERMbmRoY201ZFBVd3VkMkZ5Yml4TFcwTXVaWEp5YjNKZFBVd3VaWEp5YjNJc1MxdERMbU55YVhScFkyRnNYVDFNTG1WeWNtOXlMRXRiUXk1aGJHVnlkRjA5VEM1bGNuSnZjaXhMVzBNdVpXMWxjbWRkUFV3dVpYSnliM0lzU3lrN1puVnVZM1JwYjI0Z2FtOG9iaXh5S1h0MllYSWdZVDF1TG5OMFlYUjFjeXh6UFc0dWJXVnpjMkZuWlR0dVpWdFdiMXRoWFYwdVkyRnNiQ2hYTEhNc2NpbDlablZ1WTNScGIyNGdTMjhvYml4eUxHRXNjeXhzS1h0MllYSWdaRDFIYVNodUxIdGxibVJ3YjJsdWREcHVMbXh2WjNORmJtUndiMmx1ZEVKMWFXeGtaWElzWlc1amIyUmxjanB5ZENncGZTeHVMbkpsY0d4cFkyRW1KbnRsYm1Sd2IybHVkRHB1TG5KbGNHeHBZMkV1Ykc5bmMwVnVaSEJ2YVc1MFFuVnBiR1JsY2l4bGJtTnZaR1Z5T25KMEtDbDlMR0VzY3l4c0xtVjRjR2x5WlU5aWMyVnlkbUZpYkdVcE8zSmxkSFZ5YmlCeUxuTjFZbk5qY21saVpTZ3hMR1oxYm1OMGFXOXVLR2dwZTJRdVlXUmtLR2dwZlNrc1pIMW1kVzVqZEdsdmJpQnhieWh1S1h0MllYSWdjajFTZENncE8yNHVjM1ZpYzJOeWFXSmxLREVzWm5WdVkzUnBiMjRvWVNsN2NpNXpaVzVrS0NKc2IyY2lMR0VwZlNsOVpuVnVZM1JwYjI0Z1YyOG9iaWw3Y21WMGRYSnVlMmRsZERwbWRXNWpkR2x2YmloeUtYdDJZWElnWVQxdUxtWnBibVJVY21GamEyVmtVMlZ6YzJsdmJpaHlLVHRwWmloaEtYSmxkSFZ5Ym50elpYTnphVzl1WDJsa09tRXVhV1I5ZlgxOVpuVnVZM1JwYjI0Z1dHOG9iaWw3Y21WMGRYSnVJR1oxYm1OMGFXOXVLSElwZTI0dWJtOTBhV1o1S0RBc2UzSmhkMHh2WjNORmRtVnVkRHA3YldWemMyRm5aVHB5TG0xbGMzTmhaMlVzWkdGMFpUcHlMbk4wWVhKMFEyeHZZMnR6TG5ScGJXVlRkR0Z0Y0N4dmNtbG5hVzQ2U0M1QlIwVk9WQ3h6ZEdGMGRYTTZReTVsY25KdmNuMTlLU3hKYVNnaVJYSnliM0lnY21Wd2IzSjBaV1FnZEc4Z1kzVnpkRzl0WlhJaUxIc2laWEp5YjNJdWJXVnpjMkZuWlNJNmNpNXRaWE56WVdkbGZTbDlmV1oxYm1OMGFXOXVJRXB2S0c0c2NpeGhMSE1zYkNsN2RtRnlJR1E5YjNNb0ltSnliM2R6WlhJdGJHOW5jeTF6WkdzaUxISXBPMlF1YzJWMFEyOXVkR1Y0ZEZCeWIzWnBaR1Z5S0daMWJtTjBhVzl1S0NsN2RtRnlJR2NzWlN4MExHa3NaaXgxTzNKbGRIVnlibnRoY0hCc2FXTmhkR2x2YmpwN2FXUTZLR2M5YjNRb0tTazlQVDF1ZFd4c2ZIeG5QVDA5ZG05cFpDQXdQM1p2YVdRZ01EcG5MbUZ3Y0d4cFkyRjBhVzl1WDJsa2ZTeHpaWE56YVc5dU9udHBaRG9vWlQxc0xtWnBibVJVY21GamEyVmtVMlZ6YzJsdmJpZ3BLVDA5UFc1MWJHeDhmR1U5UFQxMmIybGtJREEvZG05cFpDQXdPbVV1YVdSOUxIWnBaWGM2ZTJsa09paHBQU2gwUFc5MEtDa3BQVDA5Ym5Wc2JIeDhkRDA5UFhadmFXUWdNRDkyYjJsa0lEQTZkQzUyYVdWM0tUMDlQVzUxYkd4OGZHazlQVDEyYjJsa0lEQS9kbTlwWkNBd09ta3VhV1I5TEdGamRHbHZianA3YVdRNktIVTlLR1k5YjNRb0tTazlQVDF1ZFd4c2ZIeG1QVDA5ZG05cFpDQXdQM1p2YVdRZ01EcG1MblZ6WlhKZllXTjBhVzl1S1QwOVBXNTFiR3g4ZkhVOVBUMTJiMmxrSURBL2RtOXBaQ0F3T25VdWFXUjlmWDBwTzNaaGNpQm9QVnRkTzJsbUtIUjBLQ2twZTNaaGNpQnZQVkowS0Nrc1h6MWtMbTlpYzJWeWRtRmliR1V1YzNWaWMyTnlhV0psS0daMWJtTjBhVzl1S0djcGUzSmxkSFZ5YmlCdkxuTmxibVFvSW1sdWRHVnlibUZzWDNSbGJHVnRaWFJ5ZVNJc1p5bDlLVHRvTG5CMWMyZ29ablZ1WTNScGIyNG9LWHR5WlhSMWNtNGdYeTUxYm5OMVluTmpjbWxpWlNncGZTbDlaV3h6Wlh0MllYSWdjRDFIYVNoeUxIdGxibVJ3YjJsdWREcHlMbkoxYlVWdVpIQnZhVzUwUW5WcGJHUmxjaXhsYm1OdlpHVnlPbkowS0NsOUxISXVjbVZ3YkdsallTWW1lMlZ1WkhCdmFXNTBPbkl1Y21Wd2JHbGpZUzV5ZFcxRmJtUndiMmx1ZEVKMWFXeGtaWElzWlc1amIyUmxjanB5ZENncGZTeGhMSE1zYkM1bGVIQnBjbVZQWW5ObGNuWmhZbXhsS1R0b0xuQjFjMmdvWm5WdVkzUnBiMjRvS1h0eVpYUjFjbTRnY0M1emRHOXdLQ2w5S1R0MllYSWdZejFrTG05aWMyVnlkbUZpYkdVdWMzVmljMk55YVdKbEtHWjFibU4wYVc5dUtHY3BlM0psZEhWeWJpQndMbUZrWkNobkxHeHpLSElwS1gwcE8yZ3VjSFZ6YUNobWRXNWpkR2x2YmlncGUzSmxkSFZ5YmlCakxuVnVjM1ZpYzJOeWFXSmxLQ2w5S1gxeVpYUjFjbTRnWm5Nb0tTeDFjeWhpYnlodUtTa3NlM1JsYkdWdFpYUnllVHBrTEhOMGIzQTZablZ1WTNScGIyNG9LWHRvTG1admNrVmhZMmdvWm5WdVkzUnBiMjRvWnlsN2NtVjBkWEp1SUdjb0tYMHBmWDE5Wm5WdVkzUnBiMjRnSkc4b2JpeHlMR0VzY3lsN2RtRnlJR3c5Ym1WM0lFaHZMR1E5VzEwN2JDNXpkV0p6WTNKcFltVW9NU3htZFc1amRHbHZiaWgwS1h0eVpYUjFjbTRnZDJrb0lteHZaM01pTEhRcGZTazdkbUZ5SUdnOVdHOG9iQ2tzYnoxU2N5aHlLU3hmUFhJdWMyVnpjMmx2YmxOMGIzSmxVM1J5WVhSbFozbFVlWEJsSmlZaGRIUW9LU1ltSVdwcEtDay9RVzhvY2l4ektUcERieWh5S1N4d1BVcHZLRzRzY2l4b0xHOHNYeWt1YzNSdmNEdGtMbkIxYzJnb1puVnVZM1JwYjI0b0tYdHlaWFIxY200Z2NDZ3BmU2tzZW04b2NpeHNLU3hIYnloeUxHd3BMRXh2S0hJc2JDa3NhMjhvY2l4c0tUdDJZWElnWXoxWmJ5aHNLUzVvWVc1a2JHVk1iMmM3YVdZb1FtOG9YeXh5TEd3c1lTeG9LU3gwZENncEtYRnZLR3dwTzJWc2MyVjdkbUZ5SUdjOVMyOG9jaXhzTEdnc2J5eGZLUzV6ZEc5d08yUXVjSFZ6YUNobWRXNWpkR2x2YmlncGUzSmxkSFZ5YmlCbktDbDlLWDEyWVhJZ1pUMVhieWhmS1R0eVpYUjFjbTU3YUdGdVpHeGxURzluT21Nc1oyVjBTVzUwWlhKdVlXeERiMjUwWlhoME9tVXVaMlYwTEhOMGIzQTZablZ1WTNScGIyNG9LWHRrTG1admNrVmhZMmdvWm5WdVkzUnBiMjRvZENsN2NtVjBkWEp1SUhRb0tYMHBmWDE5ZG1GeUlHRjBQVlZ2S0NSdktUdFhiaWgwWlNncExDSkVSRjlNVDBkVElpeGhkQ2tzWVhRdWFXNXBkQ2g3WTJ4cFpXNTBWRzlyWlc0NkluQjFZalE0TkRRNE9UVmhZek13TURZM1lXTXlZelJoWVdFd01qVmtZbU16T1dRM0lpeHphWFJsT2lKMWN6TXVaR0YwWVdSdloyaHhMbU52YlNJc1ptOXlkMkZ5WkVWeWNtOXljMVJ2VEc5bmN6b2hNQ3h6WlhOemFXOXVVMkZ0Y0d4bFVtRjBaVG94TURCOUtUdGpiMjV6ZENCYWFUMTdTVzVtYnpvaWFXNW1ieUlzVjJGeWJqb2lkMkZ5YmlJc1JYSnliM0k2SW1WeWNtOXlJbjBzVDJVOVpuVnVZM1JwYjI0b2JpeHlLWHRqYjI1emIyeGxMbXh2WnlnaUpXTlBWRlJRYkdGNVpYSTZJQ0lyYml3aVkyOXNiM0k2SUNNMU9XRmpabVlpS1N4UmFTZ3BQM0J2YzNSTlpYTnpZV2RsS0h0aFkzUnBiMjQ2SW14dlp5SXNjR0Y1Ykc5aFpEcDdjM1JoZEhWek9scHBMa2x1Wm04c2JXVnpjMkZuWlRvaVYyVmlJR3h2WnpvZ0lpdHVMSEJoZVd4dllXUTZjbjE5S1RwaGRDNXNiMmRuWlhJdWFXNW1ieWdpVjJWaUlHeHZaem9nSWl0dUxISXBmU3hCWlQxbWRXNWpkR2x2YmlodUxISXBlMk52Ym5OdmJHVXVaWEp5YjNJb0lrOVVWRkJzWVhsbGNqb2dJaXR1S1N4eUppWmpiMjV6YjJ4bExtVnljbTl5S0hJcExGRnBLQ2svY0c5emRFMWxjM05oWjJVb2UyRmpkR2x2YmpvaWJHOW5JaXh3WVhsc2IyRmtPbnR6ZEdGMGRYTTZXbWt1UlhKeWIzSXNiV1Z6YzJGblpUcHVMSEJoZVd4dllXUTZjbjE5S1RwaGRDNXNiMmRuWlhJdVpYSnliM0lvYml4dWRXeHNMSElwZlN4UmFUMG9LVDArZEhsd1pXOW1JRmR2Y210bGNrZHNiMkpoYkZOamIzQmxQQ0oxSWlZbWMyVnNaaUJwYm5OMFlXNWpaVzltSUZkdmNtdGxja2RzYjJKaGJGTmpiM0JsTzJOc1lYTnpJRnB2ZTJGemVXNWpJR2hoYm1Sc1pVUmhkR0VvY2l4aEtYdGpiMjV6ZENCelBYSnlMbkJoY25ObEtISXBPMmxtS0hOYkltRnNjR2hoTG0xd05DSmRmSHh6V3lKaGJIQm9ZUzUzWldKdElsMHBlMkYzWVdsMElIUm9hWE11WkdWamIyUmxRV3h3YUdGTllYTnJWbWxrWlc4b2N5eGhLVHR5WlhSMWNtNTliR1YwSUd3OVQySnFaV04wTG10bGVYTW9jeWt1YzI5eWRDZ3BPMlp2Y2loamIyNXpkQ0JrSUc5bUlHd3BhV1lvWkM1bGJtUnpWMmwwYUNnaUxtcHpiMjRpS1NsN2JHVjBJR2c5VzEwN1kyOXVjM1FnYnoxS1UwOU9MbkJoY25ObEtHNWxkeUJVWlhoMFJHVmpiMlJsY2lncExtUmxZMjlrWlNoelcyUmRLU2tzWHoxdkxuUnBiV1ZqYjJSbExuSmxjR3hoWTJVb0x6b3ZaeXdpWHlJcE8ybG1LRzh1Y0d4aFkyVm9iMnhrWlhKekppWWlhWE5NYVhabEltbHVJRzhtSm04dWFYTk1hWFpsUFQwOUlUQXBabTl5S0dOdmJuTjBJSEFnYVc0Z2J5NXdiR0ZqWldodmJHUmxjbk1wZTJ4bGRDQmpQV0FrZTE5OVh5UjdjSDB1WVd4d2FHRmdPM05iWTEwbUppaHZMbkJzWVdObGFHOXNaR1Z5YzF0d1hTNWhiSEJvWVVGelZXbHVkRGhCY25KaGVUMXpXMk5kTEdndWNIVnphQ2h6VzJOZExtSjFabVpsY2lrcGZYQnZjM1JOWlhOellXZGxLSHRoWTNScGIyNDZJbTFsZEdGa1lYUmhJaXh3WVhsc2IyRmtPbTk5TEdncGZYMW5aWFJFWlhOamNtbHdkR2x2YmloeUtYdG1iM0lvWTI5dWMzUWdZU0J2WmlCeUxtMWthV0V1YldsdVppNXpkR0pzTG5OMGMyUXVaVzUwY21sbGN5bDdZMjl1YzNRZ2N6MWhMbUYyWTBOOGZHRXVhSFpqUTN4OFlTNTJjR05EZkh4aExtRjJNVU03YVdZb2N5bDdZMjl1YzNRZ2JEMXVaWGNnVUdVdVJHRjBZVk4wY21WaGJTaDJiMmxrSURBc01DeFFaUzVFWVhSaFUzUnlaV0Z0TGtKSlIxOUZUa1JKUVU0cE8zSmxkSFZ5YmlCekxuZHlhWFJsS0d3cExHNWxkeUJWYVc1ME9FRnljbUY1S0d3dVluVm1abVZ5TERncGZYMXlaWFIxY200Z1FXVW9JbUYyWTBNc0lHaDJZME1zSUhad1kwTXNJRzl5SUdGMk1VTWdZbTk0SUc1dmRDQm1iM1Z1WkNCdmJpQWlMSElwTEc1MWJHeDliblZ0WlhKcFkwWnBiR1ZEYjIxd1lYSmhkRzl5S0hJc1lTbDdZMjl1YzNRZ2N6MHZYaWhjWkhzeWZTbGZLRnhrZXpKOUtWOG9YR1I3TW4wcFh5aGNaSHN5ZlNrb1B6cGNMaWhjWkNzcEtUOWNMaWd1S3lra0x5eHNQWEl1YldGMFkyZ29jeWtzWkQxaExtMWhkR05vS0hNcE8ybG1LQ0ZzZkh3aFpDbHlaWFIxY200Z01EdGpiMjV6ZEZzc2FDeHZMRjhzY0N4alBTSXdJaXhuWFQxc0xGc3NaU3gwTEdrc1ppeDFQU0l3SWl4MlhUMWtPM0psZEhWeWJpQndZWEp6WlVsdWRDaG9MREV3S1Mxd1lYSnpaVWx1ZENobExERXdLWHg4Y0dGeWMyVkpiblFvYnl3eE1Da3RjR0Z5YzJWSmJuUW9kQ3d4TUNsOGZIQmhjbk5sU1c1MEtGOHNNVEFwTFhCaGNuTmxTVzUwS0drc01UQXBmSHh3WVhKelpVbHVkQ2h3TERFd0tTMXdZWEp6WlVsdWRDaG1MREV3S1h4OGNHRnljMlZKYm5Rb1l5d3hNQ2t0Y0dGeWMyVkpiblFvZFN3eE1DbDhmR2N1Ykc5allXeGxRMjl0Y0dGeVpTaDJLWDFoYzNsdVl5QmtaV052WkdWQmJIQm9ZVTFoYzJ0V2FXUmxieWh5TEdFcGUyeGxkQ0J6UFU5aWFtVmpkQzVyWlhsektISXBMbVpwYkhSbGNpaG5QVDVuTG1WdVpITlhhWFJvS0NJdWFuTnZiaUlwS1M1emIzSjBLSFJvYVhNdWJuVnRaWEpwWTBacGJHVkRiMjF3WVhKaGRHOXlLUzV0WVhBb1p6MCtTbE5QVGk1d1lYSnpaU2h1WlhjZ1ZHVjRkRVJsWTI5a1pYSW9LUzVrWldOdlpHVW9jbHRuWFNrcEtTNW1hV3gwWlhJb1p6MCtaeTV3YkdGalpXaHZiR1JsY25NcE8yTnZibk4wSUd3OWNHVnlabTl5YldGdVkyVXVibTkzS0Nrc1pEMXpMbXhsYm1kMGFEdFBaU2hnVjJVZ2JtVmxaQ0IwYnlCa1pXTnZaR1VnSkh0a2ZTQm1jbUZ0WlhOZ0tUdGpiMjV6ZENCdlBXRjNZV2wwSUc1bGR5QkNiRzlpS0Z0eVd5SmhiSEJvWVM1dGNEUWlYWHg4Y2xzaVlXeHdhR0V1ZDJWaWJTSmRYU3g3ZEhsd1pUcHlXeUpoYkhCb1lTNXRjRFFpWFQ4aWRtbGtaVzh2YlhBMElqb2lkbWxrWlc4dmQyVmliU0o5S1M1aGNuSmhlVUoxWm1abGNpZ3BPMjh1Wm1sc1pWTjBZWEowUFRBN2JHVjBJRjg5TUR0amIyNXpkQ0J3UFc1bGR5QldhV1JsYjBSbFkyOWtaWElvZTI5MWRIQjFkRHBuUFQ1N2MxdGZYUzVoYkhCb1lVMWhjMnM5Wnl4d2IzTjBUV1Z6YzJGblpTaDdZV04wYVc5dU9pSnRaWFJoWkdGMFlTSXNjR0Y1Ykc5aFpEcHpXMTlkZlN4YloxMHBMR2N1WTJ4dmMyVW9LU3hmS3lzc1h6NDlaQ1ltVDJVb1lDUjdZWDBnUkdWamIyUmxaQ0FrZTE5OUlHWnlZVzFsY3lCcGJpQWtlM0JsY21admNtMWhibU5sTG01dmR5Z3BMV3g5SUcxcGJHeHBjMlZqYjI1a2N5NWdLWDBzWlhKeWIzSTZaejArUVdVb0lrRnNjR2hoSUcxaGMyc2diWEEwSUdSbFkyOWtaWElnWlhKeWIzSTZJaXhuS1gwcExHTTlkSEl1WTNKbFlYUmxSbWxzWlNncE8yTXViMjVGY25KdmNqMW5QVDVDUW1WeWNtOXlLQ0pOVURRZ2NHRnljMmx1WnlCbGNuSnZjam9pTEdjcExHTXViMjVTWldGa2VUMW5QVDU3WTI5dWMzUWdaVDFuTG5SeVlXTnJjeTVtYVc1a0tIUTlQblF1ZEhsd1pUMDlQU0oyYVdSbGJ5SXBPMlVtSmlod0xtTnZibVpwWjNWeVpTaDdZMjlrWldNNlpTNWpiMlJsWXl4M2FXUjBhRHBsTG5acFpHVnZMbmRwWkhSb0xHaGxhV2RvZERwbExuWnBaR1Z2TG1obGFXZG9kQ3hrWlhOamNtbHdkR2x2YmpwMGFHbHpMbWRsZEVSbGMyTnlhWEIwYVc5dUtHTXVaMlYwVkhKaFkydENlVWxrS0dVdWFXUXBLWDBwTEdNdWMyVjBSWGgwY21GamRHbHZiazl3ZEdsdmJuTW9aUzVwWkNrc1l5NXpkR0Z5ZENncEtYMHNZeTV2YmxOaGJYQnNaWE05S0djc1pTeDBLVDArZTNRdVptOXlSV0ZqYUNocFBUNTdZMjl1YzNRZ1pqMXVaWGNnUlc1amIyUmxaRlpwWkdWdlEyaDFibXNvZTNSNWNHVTZhUzVwYzE5emVXNWpQeUpyWlhraU9pSmtaV3gwWVNJc2RHbHRaWE4wWVcxd09ta3VZM1J6TEdSaGRHRTZibVYzSUZWcGJuUTRRWEp5WVhrb2FTNWtZWFJoS1gwcE8zQXVaR1ZqYjJSbEtHWXBmU2w5TEdNdVlYQndaVzVrUW5WbVptVnlLRzhwZlgxamIyNXpkQ0JJZEQwaU9pSXNablE5S0c0c2NpazlQbnRqYjI1emRDQmhQVzR1YzNCc2FYUW9jaWs3Y21WMGRYSnVlMmc2Y0dGeWMyVkpiblFvWVZzd1hTa3NiVHB3WVhKelpVbHVkQ2hoV3pGZEtTeHpPbkJoY25ObFNXNTBLR0ZiTWwwcExHWTZjR0Z5YzJWSmJuUW9ZVnN6WFNsOWZTeHNkRDF1UFQ0b0lqQWlLMjR1YUNrdWMyeHBZMlVvTFRJcEswaDBLeWdpTUNJcmJpNXRLUzV6YkdsalpTZ3RNaWtyU0hRcktDSXdJaXR1TG5NcExuTnNhV05sS0MweUtTdElkQ3NvSWpBaUsyNHVaaWt1YzJ4cFkyVW9MVElwTEhWMFBTaHVMSElwUFQ1N2JHVjBJR0U5ZXk0dUxtNTlPM0psZEhWeWJpQmhMbk1yUFhJc1lTNXpQajAyTUNZbUtHRXVjejB3TEdFdWJTc3JMR0V1YlQ0OU5qQW1KaWhoTG0wOU1DeGhMbWdyS3lrcExHRjlMR1Z5UFNodUxISTlNQ2s5UG50c1pYUWdZVDFtZENodUxDSTZJaWs3Y21WMGRYSnVJSEltSmloaFBYVjBLR0VzY2lrcExHRjlMRkZ2UFNodUxISTlNQ2s5UG50c1pYUWdZVDFsY2lodUxISXBPM0psZEhWeWJpQnNkQ2hoS1gwc1dYUTlLRzRzY2lrOVBtNHVhRDV5TG1nL0lUQTZiaTVvUEhJdWFEOGhNVHB1TG0wK2NpNXRQeUV3T200dWJUeHlMbTAvSVRFNmJpNXpQbkl1Y3o4aE1EcHVMbk04Y2k1elB5RXhPbTR1Wmo1eUxtWTdkSEo1ZTJ4bGRDQnVQU0V4TEhJOUlpSXNZVDBpSWl4elBYdDlMR3c5Ym5Wc2JDeGtQVnRkTEdnOWUzMHNiejBoTUN4ZlBTRXhPMk52Ym5OMElIQTlibVYzSUZwdk8yeGxkQ0JqTzJOdmJuTjBJR2M5YVQwK2UyOG1KaWhwUGpBbUpsbDBLR1Z5S0hNdWRHTXNhU2tzYUNrL2MyVjBWR2x0Wlc5MWRDZ29LVDArZTJjb2FTbDlMREV3TUNrNmMyVjBWR2x0Wlc5MWRDZ29LVDArZTNNdWRHTTlVVzhvY3k1MFl5eHBLU3gwS0NsOUxEQXBLWDBzWlQxcFBUNTdZMjl1YzNRZ1pqMXBMblJqTG5KbGNHeGhZMlZCYkd3b0lqb2lMQ0pmSWlrN2NtVjBkWEp1SUdNL1lDUjdhUzV3WVhSb2ZTOXRZVzVwWm1WemRITXZOVGt1T1RRdkpIdG1mUzU2YVhCZ09tQWtlMmt1Y0dGMGFIMHZKSHRtZlM1NmFYQmdmU3gwUFdGemVXNWpLQ2s5UG50ZlBTRXdPMk52Ym5OMElHazljeXhtUFdVb2FTazdkSEo1ZTJOdmJuTjBJSFU5WVhkaGFYUWdabVYwWTJnb1ppazdhV1lvZFM1emRHRjBkWE0rUFRRd01DbDdiR1YwSUZVOUtIQmxjbVp2Y20xaGJtTmxMbTV2ZHlncExXd3BMekZsTXp0VlBqUS9LRUZsS0NKRWFXUnVKM1FnWm1sdVpDQjBhVzFsWTI5a1pTQWlLMmt1ZEdNcklpd2dibTkzSUdadmNpQWlLMVV1ZEc5R2FYaGxaQ2d5S1NzaUlITmxZMjl1WkhNZ0xTQm5hWFpsSUhWd0lDRWlLU3huS0RJcEtUb29RV1VvSWtScFpHNG5kQ0JtYVc1a0lIUnBiV1ZqYjJSbElDSXJhUzUwWXlzaUxDQnViM2NnWm05eUlDSXJWUzUwYjBacGVHVmtLRElwS3lJZ2MyVmpiMjVrY3lJcExHY29NQ2twTEY4OUlURTdjbVYwZFhKdWZXeGxkQ0IyUFhCbGNtWnZjbTFoYm1ObExtNXZkeWdwTEhrOU1EdHBaaWhzS1dadmNpaDVQWFl0YkN4a0xuQjFjMmdvZVNrN1pDNXNaVzVuZEdnK01XVXpPeWxrTG5Ob2FXWjBLQ2s3YkQxMk8yTnZibk4wSUcwOVlYZGhhWFFnZFM1aGNuSmhlVUoxWm1abGNpZ3BPMkYzWVdsMElIQXVhR0Z1Wkd4bFJHRjBZU2h0TEdrdWRHTXBPMk52Ym5OMElHSTljR1Z5Wm05eWJXRnVZMlV1Ym05M0tDbDlZMkYwWTJnb2RTbDdRV1VvWUVWeWNtOXlJRzl1SUhWeWJDQWtlMlo5WUN4MUtYMWZQU0V4TEdjb01pbDlPMkZrWkVWMlpXNTBUR2x6ZEdWdVpYSW9JbTFsYzNOaFoyVWlMR2s5UG50cFppZ2hiaVltYVM1a1lYUmhMbU5zYjNWa1JuSnZiblJWVWt3cGUyNDlJVEFzWXoxcExtUmhkR0V1YldGemEwMVFORDgvSVRFc2NqMXBMbVJoZEdFdVkyeHZkV1JHY205dWRGVlNUQ3hoUFdrdVpHRjBZUzVtYjJ4a1pYSk9ZVzFsTzJ4bGRDQm1QV1owS0drdVpHRjBZUzUwWXl3aU9pSXBPMmc5ZFhRb1ppdzBLU3htTG1ZOU1DeG1Mbk05Wmk1ekpUSTlQVDB3UDJZdWN6cG1Mbk10TVN4elBYdDBZenBzZENobUtTeHdZWFJvT21Ba2UzSjlMeVI3WVgxZ2ZTeFBaU2hnVFdWMFlTMWtZWFJoSUhkdmNtdGxjaUJ6ZEdGeWRHbHVaeUJtY205dElIUm9hWE1nZEdsdFpTMWpiMlJsT2lBa2UzTXVkR045WUNrc2RDZ3BmV1ZzYzJWN2JHVjBJR1k5Wm5Rb2FTNWtZWFJoTG5SakxDSTZJaWs3Wmk1bVBUQXNaaTV6UFdZdWN5VXlQVDA5TUQ5bUxuTTZaaTV6TFRFc1dYUW9aaXhvS1NZbUtITXVkR005YkhRb1ppa3NUMlVvWUUxbGRHRXRaR0YwWVNCM2IzSnJaWElnYW5WdGNITWdabTl5ZDJGeVpDQjBieUIwYUdseklIUnBiV1V0WTI5a1pUb2dKSHR6TG5SamZXQXBLU3haZENobWRDaHpMblJqTENJNklpa3NkWFFvWml3MEtTa21KaWh6TG5SalBXeDBLR1lwTEU5bEtHQk5aWFJoTFdSaGRHRWdkMjl5YTJWeUlHcDFiWEJ6SUdKaFkyc2dkRzhnZEdocGN5QjBhVzFsTFdOdlpHVTZJQ1I3Y3k1MFkzMWdLU2tzYUQxMWRDaG1MRFFwTENGdkppWnBMbVJoZEdFdVpXNWhZbXhsWkQ4b2J6MGhNQ3hmZkh4MEtDa3BPbTg5YVM1a1lYUmhMbVZ1WVdKc1pXUjlmU2w5WTJGMFkyZ29iaWw3UVdVb2JpbDlmU2tvS1RzSyIsaVg9Yz0+VWludDhBcnJheS5mcm9tKGF0b2IoYyksWj0+Wi5jaGFyQ29kZUF0KDApKSxsZT10eXBlb2Ygc2VsZjwidSImJnNlbGYuQmxvYiYmbmV3IEJsb2IoW2lYKCRpKV0se3R5cGU6InRleHQvamF2YXNjcmlwdDtjaGFyc2V0PXV0Zi04In0pO2Z1bmN0aW9uIGVYKGMpe2xldCBaO3RyeXtpZihaPWxlJiYoc2VsZi5VUkx8fHNlbGYud2Via2l0VVJMKS5jcmVhdGVPYmplY3RVUkwobGUpLCFaKXRocm93IiI7Y29uc3QgdD1uZXcgV29ya2VyKFose25hbWU6Yz09bnVsbD92b2lkIDA6Yy5uYW1lfSk7cmV0dXJuIHQuYWRkRXZlbnRMaXN0ZW5lcigiZXJyb3IiLCgpPT57KHNlbGYuVVJMfHxzZWxmLndlYmtpdFVSTCkucmV2b2tlT2JqZWN0VVJMKFopfSksdH1jYXRjaHtyZXR1cm4gbmV3IFdvcmtlcigiZGF0YTp0ZXh0L2phdmFzY3JpcHQ7YmFzZTY0LCIrJGkse25hbWU6Yz09bnVsbD92b2lkIDA6Yy5uYW1lfSl9ZmluYWxseXtaJiYoc2VsZi5VUkx8fHNlbGYud2Via2l0VVJMKS5yZXZva2VPYmplY3RVUkwoWil9fWNsYXNzIG1Ye2NvbnN0cnVjdG9yKFosdCl7dGhpcy5vcHRpb25zPVosdGhpcy5jb21wb3Nlcj10LHRoaXMuc291cmNlRlBTPTZlNC8xMDAxLHRoaXMubGFzdEZyYW1lcyx0aGlzLm1ldGFkYXRhV29ya2VyPW51bGwsdGhpcy5zZXRNZXRhRGF0YUZvbGRlck5hbWUoWi5nYW1lSWQpfXNldE1ldGFEYXRhRm9sZGVyTmFtZShaKXt0aGlzLmZvbGRlck5hbWU9Wix0aGlzLmxhc3RGcmFtZXMmJnRoaXMubG9hZE1ldGFEYXRhKHRoaXMubGFzdEZyYW1lcyl9c2V0TGFzdEZyYW1lKFope3RoaXMubGFzdEZyYW1lcz1aLHRoaXMuZm9sZGVyTmFtZSYmdGhpcy5sb2FkTWV0YURhdGEodGhpcy5sYXN0RnJhbWVzKX1sb2FkTWV0YURhdGEoWil7aWYodGhpcy5tZXRhZGF0YVdvcmtlcil7bGV0IHQ9UXUoQnUodGhpcy5sYXN0RnJhbWVzLHRoaXMuc291cmNlRlBTKSk7dGhpcy5tZXRhZGF0YVdvcmtlci5wb3N0TWVzc2FnZSh7dGM6UHUodCwhMSksZW5hYmxlZDp0aGlzLm9wdGlvbnMuZW5hYmxlZH0pfWVsc2V7Y29uc3QgdD1uZXcgZVg7dGhpcy5tZXRhZGF0YVdvcmtlcj10LHQub25lcnJvcj1mdW5jdGlvbihlKXtzbigiRXJyb3IgZnJvbSB3b3JrZXI6IixlKX0sdC5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIixlPT57c3dpdGNoKGUuZGF0YS5hY3Rpb24pe2Nhc2UibWV0YWRhdGEiOnRoaXMuY29tcG9zZXIub25NZXRhRGF0YShlLmRhdGEucGF5bG9hZCk7YnJlYWs7Y2FzZSJsb2ciOnVYKGUuZGF0YS5wYXlsb2FkKTticmVhaztkZWZhdWx0Olh0KCJ1bmtub3duIGFjdGlvbiBmcm9tIG1ldGEgd29ya2VyIil9fSk7bGV0IGk9UXUoQnUoWix0aGlzLnNvdXJjZUZQUykpO3QucG9zdE1lc3NhZ2Uoe2Nsb3VkRnJvbnRVUkw6dGhpcy5vcHRpb25zLmNsb3VkRnJvbnRVUkwsZm9sZGVyTmFtZTp0aGlzLmZvbGRlck5hbWUsdGM6UHUoaSwhMSksbWFza01QNDp0aGlzLm9wdGlvbnMubWFza01QNH0pfX19Y2xhc3MgYVh7Y29uc3RydWN0b3IoWil7eWwodGhpcywiYWRUZXh0dXJlIixudWxsKTt5bCh0aGlzLCJwbGFjZTJBZFRleHR1cmUiLHt9KTt5bCh0aGlzLCJwbGFjZTJhZCIse30pO3lsKHRoaXMsImFkMnBsYWNlIix7fSk7eWwodGhpcywiY3VycmVudEFkczJCb3VuZGluZ1JlY3QiLFtdKTt5bCh0aGlzLCJsYXN0VGltZVJlcG9ydGVkSW5jb21pbmdUQyIsMCk7eWwodGhpcywiYXV0b0FkZEluZGV4IixudWxsKTt5bCh0aGlzLCJkaWdpdEltZyIse30pO3lsKHRoaXMsInNvdXJjZUZQUyIsNmU0LzEwMDEpO3lsKHRoaXMsIm1ldGFkYXRhQXJyIixbXSk7eWwodGhpcywibWV0YWRhdGFNYXAiLHt9KTt5bCh0aGlzLCJ2aWRlb1N0YXJ0ZWQiLCExKTt5bCh0aGlzLCJhZHZlcnRpc2VtZW50TWFwIix7fSk7eWwodGhpcywiYWQyVXJsIix7fSk7eWwodGhpcywidmlkZW9Db3BpZXIiLG51bGwpO3lsKHRoaXMsImF1dG9BZGRJbmRleCIsbnVsbCk7aWYoWi5yZW5kZXJUaW1lY29kZXMpZm9yKGxldCB0PTA7dDwxMDsrK3Qpe2xldCBpPXQrIi4xIixlPXQrIi4yIjt0aGlzLmRpZ2l0SW1nW2ldPXRoaXMuY3JlYXRlRGlnaXRJbWcoaSksdGhpcy5kaWdpdEltZ1tlXT10aGlzLmNyZWF0ZURpZ2l0SW1nKGUpfXRoaXMub3B0aW9ucz1PYmplY3QuYXNzaWduKHthZExvb3BUaW1lOjVlMyxpc0FkTG9vcDohMX0sWnx8e30pLHRoaXMubWV0YURhdGFGZXRjaGVyPW5ldyBtWCh0aGlzLm9wdGlvbnMsdGhpcyl9c2V0TGFzdEZyYW1lKFope3RoaXMubWV0YURhdGFGZXRjaGVyLnNldExhc3RGcmFtZShaKX1vblVzZXJDbGlja09uQ2FudmFzKFope2NvbnNvbGUubG9nKCJmaXggbWUiKX10ZXhVbml0Rm9yR2VuZXJpY0FkKCl7cmV0dXJuIDB9dGV4VW5pdEZvckFkSW5QbGFjZShaKXtsZXQgdD1PYmplY3Qua2V5cyh0aGlzLnBsYWNlMmFkKTtmb3IobGV0IGk9MDtpPHQubGVuZ3RoOysraSlpZihaPT10W2ldKXJldHVybiBpKzE7cmV0dXJuIDB9dGV4VW5pdEZvclBsYWNlSG9sZGVyKFope2xldCB0PU9iamVjdC5rZXlzKHRoaXMucGxhY2UyYWQpO2ZvcihsZXQgaT0wO2k8dC5sZW5ndGg7KytpKXtsZXQgZT10W2ldO2lmKFoubmFtZS5pbmRleE9mKGUpPj0wKXJldHVybiBpfXJldHVybiAwfWFkTmFtZUZvclBsYWNlSG9sZGVyKFope2xldCB0PU9iamVjdC5rZXlzKHRoaXMucGxhY2UyYWQpO2ZvcihsZXQgaT0wO2k8dC5sZW5ndGg7KytpKXtsZXQgZT10W2ldO2lmKFoubmFtZS5pbmRleE9mKGUpPj0wJiZ0aGlzLnBsYWNlMkFkVGV4dHVyZSYmdGhpcy5wbGFjZTJBZFRleHR1cmVbZV0mJnRoaXMucGxhY2UyQWRUZXh0dXJlW2VdLm5hbWUpcmV0dXJuIHRoaXMucGxhY2UyQWRUZXh0dXJlW2VdLm5hbWV9cmV0dXJuIHRoaXMubGFzdEFkTmFtZX10ZXhVbml0QmFzZUZvckFscGhhKCl7cmV0dXJuIDErT2JqZWN0LmtleXModGhpcy5wbGFjZTJhZCkubGVuZ3RofWluaXRHTCgpe2NvbnN0IFo9dGhpcy5vcHRpb25zLm1hc2tNUDQ/W1RuLGFuXTpbYWMsemFdO3RoaXMucHJvZ3JhbT1HYih0aGlzLmN0eCxaKSx0aGlzLmN0eC51c2VQcm9ncmFtKHRoaXMucHJvZ3JhbSksdGhpcy5jb3VudGVyPTAsdGhpcy5jbGVhbkdMKCl9Y2xlYW5HTCgpe3RoaXMuY3R4LmNsZWFyQ29sb3IoMCwwLDAsMCksdGhpcy5jdHguY2xlYXIodGhpcy5jdHguQ09MT1JfQlVGRkVSX0JJVCl9Z2VuZXJhdGVUZXh0dXJlKFosdCxpLGUsRyxvLHMsVj0hMSxoPSExKXtzP3RoaXMuY3R4LnBpeGVsU3RvcmVpKHRoaXMuY3R4LlVOUEFDS19BTElHTk1FTlQsMSk6dGhpcy5jdHgucGl4ZWxTdG9yZWkodGhpcy5jdHguVU5QQUNLX0FMSUdOTUVOVCw0KSx0aGlzLmN0eC5waXhlbFN0b3JlaSh0aGlzLmN0eC5VTlBBQ0tfRkxJUF9ZX1dFQkdMLFYpO2NvbnN0IHk9dGhpcy5jdHguY3JlYXRlVGV4dHVyZSgpO3RoaXMuY3R4LmFjdGl2ZVRleHR1cmUodGhpcy5jdHguVEVYVFVSRTArdCksdGhpcy5jdHguYmluZFRleHR1cmUodGhpcy5jdHguVEVYVFVSRV8yRCx5KTt0cnl7RyYmbz90aGlzLmN0eC50ZXhJbWFnZTJEKHRoaXMuY3R4LlRFWFRVUkVfMkQsMCxlPz90aGlzLmN0eC5SR0JBLEcsbywwLGU/P3RoaXMuY3R4LlJHQkEsdGhpcy5jdHguVU5TSUdORURfQllURSxaKTp0aGlzLmN0eC50ZXhJbWFnZTJEKHRoaXMuY3R4LlRFWFRVUkVfMkQsMCxlPz90aGlzLmN0eC5SR0JBLHRoaXMuY3R4LlJHQkEsdGhpcy5jdHguVU5TSUdORURfQllURSxaKX1jYXRjaCh4KXtyZXR1cm4gc24oeCksbnVsbH1pZihoKXtsZXQgeD1HfHxaLndpZHRoLEk9b3x8Wi5oZWlnaHQ7eCYmRXUoeCkmJkkmJkV1KEkpP3RoaXMuY3R4LmdlbmVyYXRlTWlwbWFwKHRoaXMuY3R4LlRFWFRVUkVfMkQpOih0aGlzLmN0eC50ZXhQYXJhbWV0ZXJpKHRoaXMuY3R4LlRFWFRVUkVfMkQsdGhpcy5jdHguVEVYVFVSRV9XUkFQX1MsdGhpcy5jdHguQ0xBTVBfVE9fRURHRSksdGhpcy5jdHgudGV4UGFyYW1ldGVyaSh0aGlzLmN0eC5URVhUVVJFXzJELHRoaXMuY3R4LlRFWFRVUkVfV1JBUF9ULHRoaXMuY3R4LkNMQU1QX1RPX0VER0UpLHRoaXMuY3R4LnRleFBhcmFtZXRlcmkodGhpcy5jdHguVEVYVFVSRV8yRCx0aGlzLmN0eC5URVhUVVJFX01JTl9GSUxURVIsdGhpcy5jdHguTElORUFSKSl9ZWxzZSB0aGlzLmN0eC50ZXhQYXJhbWV0ZXJpKHRoaXMuY3R4LlRFWFRVUkVfMkQsdGhpcy5jdHguVEVYVFVSRV9XUkFQX1MsdGhpcy5jdHguQ0xBTVBfVE9fRURHRSksdGhpcy5jdHgudGV4UGFyYW1ldGVyaSh0aGlzLmN0eC5URVhUVVJFXzJELHRoaXMuY3R4LlRFWFRVUkVfV1JBUF9ULHRoaXMuY3R4LkNMQU1QX1RPX0VER0UpLHRoaXMuY3R4LnRleFBhcmFtZXRlcmkodGhpcy5jdHguVEVYVFVSRV8yRCx0aGlzLmN0eC5URVhUVVJFX01JTl9GSUxURVIsdGhpcy5jdHguTElORUFSKSx0aGlzLmN0eC50ZXhQYXJhbWV0ZXJpKHRoaXMuY3R4LlRFWFRVUkVfMkQsdGhpcy5jdHguVEVYVFVSRV9NQUdfRklMVEVSLHRoaXMuY3R4LkxJTkVBUik7bGV0IEw9dGhpcy5jdHguZ2V0VW5pZm9ybUxvY2F0aW9uKHRoaXMucHJvZ3JhbSxpKTtyZXR1cm4gTCYmdGhpcy5jdHgudW5pZm9ybTFpKEwsdCkseX1fbmV4dEFkdmVydGlzZW1lbnQoKXt0aGlzLmF1dG9BZGRJbmRleD1zZXRUaW1lb3V0KCgpPT57Y29uc3QgWj1PYmplY3Qua2V5cyh0aGlzLmFkdmVydGlzZW1lbnRNYXApO1oubGVuZ3RoJiYodGhpcy5zZWxlY3RBZChaW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpaLmxlbmd0aCldKSx0aGlzLl9uZXh0QWR2ZXJ0aXNlbWVudCgpKX0sdGhpcy5vcHRpb25zLmFkTG9vcFRpbWUpfW1ha2VTdXJlQWRQZXJQbGFjZSgpe2lmKHRoaXMucGxhY2UyYWQpe2xldCBaPU9iamVjdC5rZXlzKHRoaXMucGxhY2UyYWQpO2ZvcihsZXQgdD0wO3Q8Wi5sZW5ndGg7Kyt0KXtsZXQgaT1aW3RdOyF0aGlzLnBsYWNlMkFkVGV4dHVyZVtpXSYmdGhpcy5wbGFjZTJhZFtpXS5sZW5ndGg+MCYmKFRkKCJNYWtlU3VyZUFkUGVyUGxhY2U6IFNldCBkZWZhdWx0IGltYWdlICIrdGhpcy5wbGFjZTJhZFtpXVswXSsiIGZvciBwbGFjZSAiK2kpLHRoaXMuc2VsZWN0QWQoIiMiK3RoaXMucGxhY2UyYWRbaV1bMF0pKX19fXNlbGVjdEFkKFope1RkKGBjb21wb3Nlcjo6U2VsZWN0QWQ6IHNlbGVjdGVkIGFkIGlzICR7Wn1gLHttZWRpYV91cmw6Wn0pO2xldCB0PXRoaXMuYWR2ZXJ0aXNlbWVudE1hcFtaXTtpZighdClzbigiU2VsZWN0QWQ6IEZhaWxlZCB0byBmaW5kIGltYWdlICciK1orIiciKTtlbHNlIGlmKHRoaXMuYWQycGxhY2UmJnRoaXMuYWQycGxhY2VbWl0pe2xldCBpPXRoaXMuYWQycGxhY2VbWl07VGQoImNvbXBvc2VyOjpTZWxlY3RBZDogVGhlIHNlbGVjdGVkIGFkIHNob3VsZCBiZSBpbiBwbGFjZSAiK2kpO2xldCBlPXRoaXMudGV4VW5pdEZvckFkSW5QbGFjZShpKSxHPSJhZCIrKGUtMSk7dGhpcy5wbGFjZTJBZFRleHR1cmVbaV0mJnRoaXMuY3R4LmRlbGV0ZVRleHR1cmUodGhpcy5wbGFjZTJBZFRleHR1cmVbaV0udGV4KTtjb25zdCBvPXRoaXMuZ2VuZXJhdGVUZXh0dXJlKHQsZSxHLG51bGwsbnVsbCxudWxsLCExLCExLCEwKTt0aGlzLnBsYWNlMkFkVGV4dHVyZVtpXT17dGV4Om8sdGV4VW5pdElkOmUsdGV4TmFtZTpHLG5hbWU6Wn19ZWxzZSB0aGlzLmFkVGV4dHVyZSYmdGhpcy5jdHguZGVsZXRlVGV4dHVyZSh0aGlzLmFkVGV4dHVyZSksdGhpcy5hZFRleHR1cmU9dGhpcy5nZW5lcmF0ZVRleHR1cmUodCx0aGlzLnRleFVuaXRGb3JHZW5lcmljQWQoKSwiYWQwIixudWxsLG51bGwsbnVsbCwhMSwhMSwhMCksdGhpcy5sYXN0QWQ9dCx0aGlzLmxhc3RBZE5hbWU9Wn1vbk1ldGFEYXRhKFope3RoaXMubWV0YWRhdGFNYXBbWi50aW1lY29kZV09Wix0aGlzLm1ldGFkYXRhQXJyLnB1c2goWi50aW1lY29kZSl9cmVuZGVyRnJhbWUoKXtsZXQgWj10aGlzLmN0eC5nZXRBdHRyaWJMb2NhdGlvbih0aGlzLnByb2dyYW0sImFfcG9zaXRpb24iKSx0PXRoaXMuY3R4LmdldEF0dHJpYkxvY2F0aW9uKHRoaXMucHJvZ3JhbSwiYV91diIpLGk9dGhpcy5jdHguZ2V0VW5pZm9ybUxvY2F0aW9uKHRoaXMucHJvZ3JhbSwidV9yZXNvbHV0aW9uIik7dGhpcy5jdHgudW5pZm9ybTJmKGksdGhpcy5jdHguY2FudmFzLndpZHRoLHRoaXMuY3R4LmNhbnZhcy5oZWlnaHQpLGk9dGhpcy5jdHguZ2V0VW5pZm9ybUxvY2F0aW9uKHRoaXMucHJvZ3JhbSwidV9yZXNvbHV0aW9uMiIpLHRoaXMuY3R4LnVuaWZvcm0yZihpLHRoaXMuY3R4LmNhbnZhcy53aWR0aCx0aGlzLmN0eC5jYW52YXMuaGVpZ2h0KTtsZXQgZT10aGlzLmN0eC5jcmVhdGVCdWZmZXIoKTt0aGlzLmN0eC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShaKSx0aGlzLmN0eC5iaW5kQnVmZmVyKHRoaXMuY3R4LkFSUkFZX0JVRkZFUixlKTtsZXQgRz0yLG89dGhpcy5jdHguRkxPQVQscz0hMSxWPTAsaD0wO3RoaXMuY3R4LnZlcnRleEF0dHJpYlBvaW50ZXIoWixHLG8scyxWLGgpO2xldCB5PXRoaXMuY3R4LmNyZWF0ZUJ1ZmZlcigpO3RoaXMuY3R4LmJpbmRCdWZmZXIodGhpcy5jdHguQVJSQVlfQlVGRkVSLHkpLHRoaXMuY3R4LmJ1ZmZlckRhdGEodGhpcy5jdHguQVJSQVlfQlVGRkVSLG5ldyBGbG9hdDMyQXJyYXkoWzAsMCwxLDAsMCwxLDAsMSwxLDAsMSwxXSksdGhpcy5jdHguU1RBVElDX0RSQVcpLHRoaXMuY3R4LmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHQpLEc9MixvPXRoaXMuY3R4LkZMT0FULHM9ITEsVj0wLGg9MCx0aGlzLmN0eC52ZXJ0ZXhBdHRyaWJQb2ludGVyKHQsRyxvLHMsVixoKSx0aGlzLmN0eC52aWV3cG9ydCgwLDAsdGhpcy5jdHguY2FudmFzLndpZHRoLHRoaXMuY3R4LmNhbnZhcy5oZWlnaHQpLHRoaXMuY3R4LmNsZWFyQ29sb3IoMCwwLDAsMCksdGhpcy5jdHguY2xlYXIodGhpcy5jdHguQ09MT1JfQlVGRkVSX0JJVHx0aGlzLmN0eC5ERVBUSF9CVUZGRVJfQklUKSx0aGlzLmN0eC5iaW5kQnVmZmVyKHRoaXMuY3R4LkFSUkFZX0JVRkZFUixlKSx0aGlzLnNldFJlY3RhbmdsZSgwLDAsdGhpcy5jYW52YXMud2lkdGgsdGhpcy5jYW52YXMuaGVpZ2h0KTtsZXQgTD10aGlzLmN0eC5UUklBTkdMRVM7dGhpcy5jdHguZHJhd0FycmF5cyhMLGgsNil9c2V0UmVjdGFuZ2xlKFosdCxpLGUpe2xldCBHPVosbz1aK2kscz10LFY9dCtlO3RoaXMuY3R4LmJ1ZmZlckRhdGEodGhpcy5jdHguQVJSQVlfQlVGRkVSLG5ldyBGbG9hdDMyQXJyYXkoW0cscyxvLHMsRyxWLEcsVixvLHMsbyxWXSksdGhpcy5jdHguU1RBVElDX0RSQVcpfXJlbmRlckF1Z21lbnRhdGlvbihaKXt0aGlzLmNhbnZhcy53aWR0aD0xMjgwLHRoaXMuY2FudmFzLmhlaWdodD03MjAsdGhpcy5vcHRpb25zLm1hc2tNUDQ/dGhpcy5yZW5kZXJBdWdtZW50YXRpb25NUDQoWik6dGhpcy5yZW5kZXJBdWdtZW50YXRpb25PbGQoWil9cmVuZGVyQXVnbWVudGF0aW9uTVA0KFope3RoaXMudmlkZW9TdGFydGVkPSEwO2xldCB0PW51bGw7aWYodGhpcy5tZXRhZGF0YU1hcFtaXSl7dD10aGlzLm1ldGFkYXRhTWFwW1pdO2NvbnN0IG89dGhpcy5tZXRhZGF0YUFyci5pbmRleE9mKFopO28+LTUmJnRoaXMubWV0YWRhdGFBcnIuc3BsaWNlKDAsby00KS5mb3JFYWNoKHM9PntkZWxldGUgdGhpcy5tZXRhZGF0YU1hcFtzXX0pfWVsc2UgdGhpcy5jb3VudGVyKyssdGhpcy5jb3VudGVyPjYwJiYodGhpcy5jb3VudGVyPTAsc24oIk1pc3NpbmcgbWV0YSBkYXRhIGF0IHRpbWUgY29kZSAiK1opKTtsZXQgaT1bXSxlPTA7aWYodGhpcy5jdXJyZW50QWRzMkJvdW5kaW5nUmVjdD1bXSx0IT1udWxsJiZ0LmFscGhhTWFzayl7bGV0IG89dGhpcy50ZXhVbml0QmFzZUZvckFscGhhKCk7Y29uc3Qgcz10aGlzLmdlbmVyYXRlVGV4dHVyZSh0LmFscGhhTWFzayxvLCJ1X2FscGhhTWFzayIsdGhpcy5jdHguUkdCQSxudWxsLG51bGwsITEsITApO2kucHVzaChzKTtmb3IoY29uc3QgViBpbiB0LnBsYWNlaG9sZGVycyl7Y29uc3QgaD10LnBsYWNlaG9sZGVyc1tWXTtsZXQgeT0iaGFzTG9nbyIrZSxMPXRoaXMuY3R4LmdldFVuaWZvcm1Mb2NhdGlvbih0aGlzLnByb2dyYW0seSk7dGhpcy5jdHgudW5pZm9ybTFpKEwsMSk7bGV0IHg9ImFkRm9yTG9nbyIrZSxJPXRoaXMuY3R4LmdldFVuaWZvcm1Mb2NhdGlvbih0aGlzLnByb2dyYW0seCk7dGhpcy5jdHgudW5pZm9ybTFpKEksdGhpcy50ZXhVbml0Rm9yUGxhY2VIb2xkZXIoaCkpO2xldCB2PSJ1X21hdHJpeCIrZSx6PXRoaXMuY3R4LmdldFVuaWZvcm1Mb2NhdGlvbih0aGlzLnByb2dyYW0sdik7dGhpcy5jdHgudW5pZm9ybU1hdHJpeDNmdih6LCExLGgudHJhbmZvcm0pO2xldCBIPXtsOi0xLHQ6LTEscjotMSxiOi0xfTtmb3IobGV0IEEgb2YgaC5jb3JuZXJzKShBLng8SC5sfHxILmw9PS0xKSYmKEgubD1BLngpLChBLng+SC5yfHxILnI9PS0xKSYmKEgucj1BLngpLChBLnk8SC50fHxILnQ9PS0xKSYmKEgudD1BLnkpLChBLnk+SC5ifHxILmI9PS0xKSYmKEguYj1BLnkpO0gubC89dC5jYW52YXNTaXplLndpZHRoLEguci89dC5jYW52YXNTaXplLndpZHRoLEgudC89dC5jYW52YXNTaXplLmhlaWdodCxILmIvPXQuY2FudmFzU2l6ZS5oZWlnaHQsdGhpcy5jdXJyZW50QWRzMkJvdW5kaW5nUmVjdC5wdXNoKHtuYW1lOnRoaXMuYWROYW1lRm9yUGxhY2VIb2xkZXIoaCkscmVjdDpIfSksZSsrfX1jb25zdCBHPTQ7Zm9yKDtlPEc7KytlKXtsZXQgbz0iaGFzTG9nbyIrZSxzPXRoaXMuY3R4LmdldFVuaWZvcm1Mb2NhdGlvbih0aGlzLnByb2dyYW0sbyk7dGhpcy5jdHgudW5pZm9ybTFpKHMsMCl9dGhpcy5yZW5kZXJUaW1lY29kZXMoWiksdGhpcy5yZW5kZXJGcmFtZSgpO2Zvcihjb25zdCBvIG9mIGkpdGhpcy5jdHguZGVsZXRlVGV4dHVyZShvKX1yZW5kZXJBdWdtZW50YXRpb25PbGQoWil7dGhpcy52aWRlb1N0YXJ0ZWQ9ITA7bGV0IHQ9bnVsbDtpZih0aGlzLm1ldGFkYXRhTWFwW1pdKXt0PXRoaXMubWV0YWRhdGFNYXBbWl07Y29uc3Qgbz10aGlzLm1ldGFkYXRhQXJyLmluZGV4T2YoWik7bz4tNSYmdGhpcy5tZXRhZGF0YUFyci5zcGxpY2UoMCxvLTQpLmZvckVhY2gocz0+e2RlbGV0ZSB0aGlzLm1ldGFkYXRhTWFwW3NdfSl9ZWxzZSB0aGlzLmNvdW50ZXIrKyx0aGlzLmNvdW50ZXI+NjAmJih0aGlzLmNvdW50ZXI9MCxzbigiTWlzc2luZyBtZXRhIGRhdGEgYXQgdGltZSBjb2RlICIrWikpO2xldCBpPVtdLGU9MDt0aGlzLmN1cnJlbnRBZHMyQm91bmRpbmdSZWN0PVtdO2Zvcihjb25zdCBvIGluIHQ9PW51bGw/dm9pZCAwOnQucGxhY2Vob2xkZXJzKXtjb25zdCBzPXQucGxhY2Vob2xkZXJzW29dO2lmKCFzLmFscGhhQXNVaW50OEFycmF5KWNvbnRpbnVlO2xldCBWPSJhbHBoYSIrZSxoPXRoaXMudGV4VW5pdEJhc2VGb3JBbHBoYSgpK2U7aWYocy5hbHBoYVRleD10aGlzLmdlbmVyYXRlVGV4dHVyZShzLmFscGhhQXNVaW50OEFycmF5LGgsVix0aGlzLmN0eC5BTFBIQSxzLndpZHRoLHMuaGVpZ2h0LCEwKSxzLmFscGhhQXNVaW50OEFycmF5PW51bGwsIXMuYWxwaGFUZXgpe3NuKCJGYWlsZWQgdG8gY3JlYXRlIGFscGhhIHRleHR1cmUiKTtjb250aW51ZX1pLnB1c2gocy5hbHBoYVRleCk7bGV0IHk9Imhhc0xvZ28iK2UsTD10aGlzLmN0eC5nZXRVbmlmb3JtTG9jYXRpb24odGhpcy5wcm9ncmFtLHkpO3RoaXMuY3R4LnVuaWZvcm0xaShMLDEpO2xldCB4PSJhZEZvckxvZ28iK2UsST10aGlzLmN0eC5nZXRVbmlmb3JtTG9jYXRpb24odGhpcy5wcm9ncmFtLHgpLHY9ITE7cy5uYW1lLmluZGV4T2YoImJsdXIiKT49MD8odGhpcy5jdHgudW5pZm9ybTFpKEksOTkpLHY9ITApOnRoaXMuY3R4LnVuaWZvcm0xaShJLHRoaXMudGV4VW5pdEZvclBsYWNlSG9sZGVyKHMpKTtsZXQgej0idV9hbHBoYSIrZSsiVG9wTGVmdCIsSD10aGlzLmN0eC5nZXRVbmlmb3JtTG9jYXRpb24odGhpcy5wcm9ncmFtLHopO3RoaXMuY3R4LnVuaWZvcm0yZnYoSCxbcy5tYXNrWCxzLm1hc2tZXSk7bGV0IEE9InVfYWxwaGEiK2UrIlNpemUiLFlsPXRoaXMuY3R4LmdldFVuaWZvcm1Mb2NhdGlvbih0aGlzLnByb2dyYW0sQSk7dGhpcy5jdHgudW5pZm9ybTJmdihZbCxbcy53aWR0aCxzLmhlaWdodF0pO2xldCBHbD0idV9tYXRyaXgiK2UsWm49dGhpcy5jdHguZ2V0VW5pZm9ybUxvY2F0aW9uKHRoaXMucHJvZ3JhbSxHbCk7aWYodGhpcy5jdHgudW5pZm9ybU1hdHJpeDNmdihabiwhMSxzLnRyYW5mb3JtKSwhdil7bGV0IF89e2w6LTEsdDotMSxyOi0xLGI6LTF9O2ZvcihsZXQgcmwgb2Ygcy5jb3JuZXJzKShybC54PF8ubHx8Xy5sPT0tMSkmJihfLmw9cmwueCksKHJsLng+Xy5yfHxfLnI9PS0xKSYmKF8ucj1ybC54KSwocmwueTxfLnR8fF8udD09LTEpJiYoXy50PXJsLnkpLChybC55Pl8uYnx8Xy5iPT0tMSkmJihfLmI9cmwueSk7Xy5sLz10LmNhbnZhc1NpemUud2lkdGgsXy5yLz10LmNhbnZhc1NpemUud2lkdGgsXy50Lz10LmNhbnZhc1NpemUuaGVpZ2h0LF8uYi89dC5jYW52YXNTaXplLmhlaWdodCx0aGlzLmN1cnJlbnRBZHMyQm91bmRpbmdSZWN0LnB1c2goe25hbWU6dGhpcy5hZE5hbWVGb3JQbGFjZUhvbGRlcihzKSxyZWN0Ol99KX1lKyt9Y29uc3QgRz00O2Zvcig7ZTxHOysrZSl7bGV0IG89Imhhc0xvZ28iK2Uscz10aGlzLmN0eC5nZXRVbmlmb3JtTG9jYXRpb24odGhpcy5wcm9ncmFtLG8pO3RoaXMuY3R4LnVuaWZvcm0xaShzLDApfXRoaXMucmVuZGVyVGltZWNvZGVzKFopLHRoaXMucmVuZGVyRnJhbWUoKTtmb3IoY29uc3QgbyBvZiBpKXRoaXMuY3R4LmRlbGV0ZVRleHR1cmUobyl9cmVuZGVyVGltZWNvZGVzKFope2lmKHRoaXMub3B0aW9ucy5yZW5kZXJUaW1lY29kZXMpe2xldCB0PVouc3BsaXQoIjoiKVszXSxpPXQuaW5kZXhPZigiLiIpPj0wPzI6MSxHPXBhcnNlSW50KHQuc3BsaXQoIi4iKVswXSklMTArIi4iK2ksbz10aGlzLnRleFVuaXRCYXNlRm9yQWxwaGEoKSs1LHM9dGhpcy5nZW5lcmF0ZVRleHR1cmUodGhpcy5kaWdpdEltZ1tHXSxvLCJkaWdpdFRleCIpO3RleHR1cmVzRm9yVGhpc0ZyYW1lLnB1c2gocyk7bGV0IGg9dGhpcy5jdHguZ2V0VW5pZm9ybUxvY2F0aW9uKHRoaXMucHJvZ3JhbSwiaGFzRGlnaXQiKTt0aGlzLmN0eC51bmlmb3JtMWkoaCwxKTtsZXQgTD10aGlzLmN0eC5nZXRVbmlmb3JtTG9jYXRpb24odGhpcy5wcm9ncmFtLCJ1X2RpZ2l0VG9wTGVmdCIpO3RoaXMuY3R4LnVuaWZvcm0yZnYoTCxbMCwwXSk7bGV0IEk9dGhpcy5jdHguZ2V0VW5pZm9ybUxvY2F0aW9uKHRoaXMucHJvZ3JhbSwidV9kaWdpdFNpemUiKTt0aGlzLmN0eC51bmlmb3JtMmZ2KEksWzIwMCwyMDBdKX1lbHNle2xldCBpPXRoaXMuY3R4LmdldFVuaWZvcm1Mb2NhdGlvbih0aGlzLnByb2dyYW0sImhhc0RpZ2l0Iik7dGhpcy5jdHgudW5pZm9ybTFpKGksMCl9fXRvZ2dsZUZ1bGxzY3JlZW4oKXsodGhpcy5yZXF1ZXN0RnVsbHNjcmVlbnx8dGhpcy53ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbikuY2FsbCh0aGlzKS5jYXRjaChaPT57c24oWil9KX19Y2xhc3MgYlggZXh0ZW5kcyBhWHtjb25zdHJ1Y3RvcihaKXtzdXBlcihaLm9wdGlvbnMpLHRoaXMuY2FudmFzPVouY2FudmFzLHRoaXMuY3R4PXRoaXMuY2FudmFzLmdldENvbnRleHQoIndlYmdsIix7cHJlbXVsdGlwbGllZEFscGhhOiExLGFudGlhbGlhczohMX0pLHRoaXMuaW5pdEdMKCl9YXN5bmMgY3JlYXRlRGlnaXRJbWcoWil7bGV0IHQ9bmV3IE9mZnNjcmVlbkNhbnZhcyg1MCw1MCksaT10LmdldENvbnRleHQoIjJkIik7cmV0dXJuIGkuZmlsbFN0eWxlPSJibGFjayIsaS5maWxsUmVjdCgwLDAsdC53aWR0aCx0LmhlaWdodCksaS5mb250PSIzMHB4IEFyaWFsIixpLmZpbGxTdHlsZT0id2hpdGUiLGkuZmlsbFRleHQoWiwxMCwzNSksYXdhaXQgdC50cmFuc2ZlclRvSW1hZ2VCaXRtYXAoKX1hc3luYyBhZGRBZHZlcnRpc2VtZW50KFope2xldHtuYW1lOnQscGF0aDppLGlzU2VsZWN0ZWQ6ZX09WjtpZih0LmluZGV4T2YoIi5qc29uIik+LTEpe2ZldGNoKGkpLnRoZW4oYXN5bmMgaD0+e3RoaXMucGxhY2UyYWQ9YXdhaXQgaC5qc29uKCksdGhpcy5hZDJwbGFjZT17fTtsZXQgeT1PYmplY3Qua2V5cyh0aGlzLnBsYWNlMmFkKTtmb3IobGV0IEw9MDtMPHkubGVuZ3RoOysrTCl7bGV0IHg9eVtMXTtpZih4PT0idXJscyIpe3RoaXMuYWQyVXJsPXRoaXMucGxhY2UyYWRbeF0sZGVsZXRlIHRoaXMucGxhY2UyYWRbeF07Y29udGludWV9bGV0IEk9dGhpcy5wbGFjZTJhZFt4XTtmb3IobGV0IHY9MDt2PEkubGVuZ3RoOysrdil7bGV0IHo9SVt2XTt0aGlzLmFkMnBsYWNlWyIjIit6XT14fX1PYmplY3Qua2V5cyh0aGlzLnBsYWNlMmFkKS5sZW5ndGg+MCYmKEJCTG9nKGBjb21wb3Nlcjo6QWRkQWR2ZXJ0aXNlbWVudDogcGxhY2UtdG8tYWRzIG1hcHBpbmc6ICR7dGhpcy5wbGFjZTJhZH1gKSxCQkxvZyhgY29tcG9zZXI6OkFkZEFkdmVydGlzZW1lbnQ6IGFkcy10by1wbGFjZSBtYXBwaW5nOiAke3RoaXMuYWQycGxhY2V9YCksc2V0VGltZW91dCgoKT0+e3RoaXMubWFrZVN1cmVBZFBlclBsYWNlKCl9LDNlMykpLGUmJnRoaXMuc2VsZWN0QWQodCl9KTtyZXR1cm59Y29uc3Qgbz1hd2FpdChhd2FpdCBmZXRjaChpKSkuYmxvYigpLHM9YXdhaXQgY3JlYXRlSW1hZ2VCaXRtYXAobyk7bGV0IFY9T2JqZWN0LmtleXModGhpcy5hZHZlcnRpc2VtZW50TWFwKS5sZW5ndGg9PT0wO3RoaXMuYWR2ZXJ0aXNlbWVudE1hcFt0XT1zLFYmJih0aGlzLnNlbGVjdEFkKHQpLHRoaXMub3B0aW9ucy5pc0FkTG9vcCYmKGNsZWFyVGltZW91dCh0aGlzLmF1dG9BZGRJbmRleCksdGhpcy5fbmV4dEFkdmVydGlzZW1lbnQoKSkpfX1sZXQgYWw9bnVsbDtvbm1lc3NhZ2U9Yz0+e3N3aXRjaChjLmRhdGEuYWN0aW9uKXtjYXNlIm9uVXNlckNsaWNrT25DYW52YXMiOmFsPT1udWxsfHxhbC5vblVzZXJDbGlja09uQ2FudmFzKGMuZGF0YS5wYXlsb2FkKTticmVhaztjYXNlImNsZWFuR0wiOmFsPT1udWxsfHxhbC5jbGVhbkdMKCk7YnJlYWs7Y2FzZSJhZGRBZHZlcnRpc2VtZW50IjphbD09bnVsbHx8YWwuYWRkQWR2ZXJ0aXNlbWVudChjLmRhdGEucGF5bG9hZCk7YnJlYWs7Y2FzZSJzZWxlY3RBZCI6YWw9PW51bGx8fGFsLnNlbGVjdEFkKGMuZGF0YS5wYXlsb2FkKTticmVhaztjYXNlIm9uTWV0YURhdGEiOmFsPT1udWxsfHxhbC5vbk1ldGFEYXRhKGMuZGF0YS5wYXlsb2FkKTticmVhaztjYXNlInJlbmRlckF1Z21lbnRhdGlvbiI6YWw9PW51bGx8fGFsLnJlbmRlckF1Z21lbnRhdGlvbihjLmRhdGEucGF5bG9hZCk7YnJlYWs7Y2FzZSJzZXRMYXN0RnJhbWUiOmFsLnNldExhc3RGcmFtZShjLmRhdGEucGF5bG9hZCk7YnJlYWs7Y2FzZSJjb25zdHJ1Y3RvciI6YWw9bmV3IGJYKGMuZGF0YS5wYXlsb2FkKTticmVhaztkZWZhdWx0OnNuKCJXcm9uZyBUaHJlYWQgTWVzc2FnZSIpfX19KSgpOwo=",IY=l=>Uint8Array.from(atob(l),W=>W.charCodeAt(0)),Vn=typeof self<"u"&&self.Blob&&new Blob([IY(ln)],{type:"text/javascript;charset=utf-8"});function EY(l){let W;try{if(W=Vn&&(self.URL||self.webkitURL).createObjectURL(Vn),!W)throw"";const d=new Worker(W,{name:l==null?void 0:l.name});return d.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(W)}),d}catch{return new Worker("data:text/javascript;base64,"+ln,{name:l==null?void 0:l.name})}finally{W&&(self.URL||self.webkitURL).revokeObjectURL(W)}}class LY{constructor(W,d){this.canvas=W,this.worker=new EY,this.worker.onmessage=e=>{const{action:n,payload:i}=e;n=="log"&&Ae(i)};const b=W.transferControlToOffscreen();let t=6e4/1001;d={...d,sourceFPS:t},this.worker.postMessage({action:"constructor",payload:{canvas:b,options:{sourceFPS:t,renderTimecodes:d.renderTimecodes,maskMP4:d.maskMP4,gameId:d.gameId,cloudFrontURL:d.cloudFrontURL,enabled:d.enabled}}},[b])}onUserClickOnCanvas(W,d,b){this.worker.postMessage({action:"onUserClickOnCanvas",payload:{clientX:W,clientY:d,rect:b}})}cleanGL(){this.worker.postMessage({action:"cleanGL"})}renderAugmentation(W){this.worker.postMessage({action:"renderAugmentation",payload:W})}addAdvertisement(W){this.worker.postMessage({action:"addAdvertisement",payload:W})}getCanvas(){return this.canvas}selectAd(W){this.worker.postMessage({action:"selectAd",payload:W})}onMetaData(W){this.worker.postMessage({action:"onMetaData",payload:W})}setLastFrame(W){this.worker.postMessage({action:"setLastFrame",payload:W})}}const DW={RenderDigits:Symbol("RenderDigits"),RenderTimecode:Symbol("RenderTimecode"),Augment:Symbol("Augment")};var ya={exports:{}},wY=/^(?:(?![^:@]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,jY=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],BY=function(W){var d=W,b=W.indexOf("["),t=W.indexOf("]");b!=-1&&t!=-1&&(W=W.substring(0,b)+W.substring(b,t).replace(/:/g,";")+W.substring(t,W.length));for(var e=wY.exec(W||""),n={},i=14;i--;)n[jY[i]]=e[i]||"";return b!=-1&&t!=-1&&(n.source=d,n.host=n.host.substring(1,n.host.length-1).replace(/;/g,":"),n.authority=n.authority.replace("[","").replace("]","").replace(/;/g,":"),n.ipv6uri=!0),n},Ha={exports:{}},za,Wn;function KY(){if(Wn)return za;Wn=1;var l=1e3,W=l*60,d=W*60,b=d*24,t=b*7,e=b*365.25;za=function(p,s){s=s||{};var X=typeof p;if(X==="string"&&p.length>0)return n(p);if(X==="number"&&isFinite(p))return s.long?h(p):i(p);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(p))};function n(p){if(p=String(p),!(p.length>100)){var s=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(p);if(s){var X=parseFloat(s[1]),o=(s[2]||"ms").toLowerCase();switch(o){case"years":case"year":case"yrs":case"yr":case"y":return X*e;case"weeks":case"week":case"w":return X*t;case"days":case"day":case"d":return X*b;case"hours":case"hour":case"hrs":case"hr":case"h":return X*d;case"minutes":case"minute":case"mins":case"min":case"m":return X*W;case"seconds":case"second":case"secs":case"sec":case"s":return X*l;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return X;default:return}}}}function i(p){var s=Math.abs(p);return s>=b?Math.round(p/b)+"d":s>=d?Math.round(p/d)+"h":s>=W?Math.round(p/W)+"m":s>=l?Math.round(p/l)+"s":p+"ms"}function h(p){var s=Math.abs(p);return s>=b?G(p,s,b,"day"):s>=d?G(p,s,d,"hour"):s>=W?G(p,s,W,"minute"):s>=l?G(p,s,l,"second"):p+" ms"}function G(p,s,X,o){var r=s>=X*1.5;return Math.round(p/X)+" "+o+(r?"s":"")}return za}function vY(l){d.debug=d,d.default=d,d.coerce=G,d.disable=n,d.enable=e,d.enabled=i,d.humanize=KY(),Object.keys(l).forEach(p=>{d[p]=l[p]}),d.instances=[],d.names=[],d.skips=[],d.formatters={};function W(p){let s=0;for(let X=0;X<p.length;X++)s=(s<<5)-s+p.charCodeAt(X),s|=0;return d.colors[Math.abs(s)%d.colors.length]}d.selectColor=W;function d(p){let s;function X(...o){if(!X.enabled)return;const r=X,M=Number(new Date),L=M-(s||M);r.diff=L,r.prev=s,r.curr=M,s=M,o[0]=d.coerce(o[0]),typeof o[0]!="string"&&o.unshift("%O");let J=0;o[0]=o[0].replace(/%([a-zA-Z%])/g,(K,x)=>{if(K==="%%")return K;J++;const z=d.formatters[x];if(typeof z=="function"){const I=o[J];K=z.call(r,I),o.splice(J,1),J--}return K}),d.formatArgs.call(r,o),(r.log||d.log).apply(r,o)}return X.namespace=p,X.enabled=d.enabled(p),X.useColors=d.useColors(),X.color=W(p),X.destroy=b,X.extend=t,typeof d.init=="function"&&d.init(X),d.instances.push(X),X}function b(){const p=d.instances.indexOf(this);return p!==-1?(d.instances.splice(p,1),!0):!1}function t(p,s){const X=d(this.namespace+(typeof s>"u"?":":s)+p);return X.log=this.log,X}function e(p){d.save(p),d.names=[],d.skips=[];let s;const X=(typeof p=="string"?p:"").split(/[\s,]+/),o=X.length;for(s=0;s<o;s++)X[s]&&(p=X[s].replace(/\*/g,".*?"),p[0]==="-"?d.skips.push(new RegExp("^"+p.substr(1)+"$")):d.names.push(new RegExp("^"+p+"$")));for(s=0;s<d.instances.length;s++){const r=d.instances[s];r.enabled=d.enabled(r.namespace)}}function n(){const p=[...d.names.map(h),...d.skips.map(h).map(s=>"-"+s)].join(",");return d.enable(""),p}function i(p){if(p[p.length-1]==="*")return!0;let s,X;for(s=0,X=d.skips.length;s<X;s++)if(d.skips[s].test(p))return!1;for(s=0,X=d.names.length;s<X;s++)if(d.names[s].test(p))return!0;return!1}function h(p){return p.toString().substring(2,p.toString().length-2).replace(/\.\*\?$/,"*")}function G(p){return p instanceof Error?p.stack||p.message:p}return d.enable(d.load()),d}var gY=vY;(function(l,W){W.log=t,W.formatArgs=b,W.save=e,W.load=n,W.useColors=d,W.storage=i(),W.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function d(){return typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs)?!0:typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)?!1:typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function b(G){if(G[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+G[0]+(this.useColors?"%c ":" ")+"+"+l.exports.humanize(this.diff),!this.useColors)return;const p="color: "+this.color;G.splice(1,0,p,"color: inherit");let s=0,X=0;G[0].replace(/%[a-zA-Z%]/g,o=>{o!=="%%"&&(s++,o==="%c"&&(X=s))}),G.splice(X,0,p)}function t(...G){return typeof console=="object"&&console.log&&console.log(...G)}function e(G){try{G?W.storage.setItem("debug",G):W.storage.removeItem("debug")}catch{}}function n(){let G;try{G=W.storage.getItem("debug")}catch{}return!G&&typeof process<"u"&&"env"in process&&(G=process.env.DEBUG),G}function i(){try{return localStorage}catch{}}l.exports=gY(W);const{formatters:h}=l.exports;h.j=function(G){try{return JSON.stringify(G)}catch(p){return"[UnexpectedJSONParseError]: "+p.message}}})(Ha,Ha.exports);var IZ=Ha.exports,fY=BY,dn=IZ("socket.io-client:url"),CY=QY;function QY(l,W){var d=l;W=W||typeof location<"u"&&location,l==null&&(l=W.protocol+"//"+W.host),typeof l=="string"&&(l.charAt(0)==="/"&&(l.charAt(1)==="/"?l=W.protocol+l:l=W.host+l),/^(https?|wss?):\/\//.test(l)||(dn("protocol-less url %s",l),typeof W<"u"?l=W.protocol+"//"+l:l="https://"+l),dn("parse %s",l),d=fY(l)),d.port||(/^(http|ws)$/.test(d.protocol)?d.port="80":/^(http|ws)s$/.test(d.protocol)&&(d.port="443")),d.path=d.path||"/";var b=d.host.indexOf(":")!==-1,t=b?"["+d.host+"]":d.host;return d.id=d.protocol+"://"+t+":"+d.port,d.href=d.protocol+"://"+t+(W&&W.port===d.port?"":":"+d.port),d}var EZ={},Ia={exports:{}},Ea={exports:{}},xd=1e3,yd=xd*60,Hd=yd*60,zd=Hd*24,DY=zd*365.25,OY=function(l,W){W=W||{};var d=typeof l;if(d==="string"&&l.length>0)return PY(l);if(d==="number"&&isNaN(l)===!1)return W.long?_Y(l):AY(l);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(l))};function PY(l){if(l=String(l),!(l.length>100)){var W=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(l);if(W){var d=parseFloat(W[1]),b=(W[2]||"ms").toLowerCase();switch(b){case"years":case"year":case"yrs":case"yr":case"y":return d*DY;case"days":case"day":case"d":return d*zd;case"hours":case"hour":case"hrs":case"hr":case"h":return d*Hd;case"minutes":case"minute":case"mins":case"min":case"m":return d*yd;case"seconds":case"second":case"secs":case"sec":case"s":return d*xd;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return d;default:return}}}}function AY(l){return l>=zd?Math.round(l/zd)+"d":l>=Hd?Math.round(l/Hd)+"h":l>=yd?Math.round(l/yd)+"m":l>=xd?Math.round(l/xd)+"s":l+"ms"}function _Y(l){return LZ(l,zd,"day")||LZ(l,Hd,"hour")||LZ(l,yd,"minute")||LZ(l,xd,"second")||l+" ms"}function LZ(l,W,d){if(!(l<W))return l<W*1.5?Math.floor(l/W)+" "+d:Math.ceil(l/W)+" "+d+"s"}(function(l,W){W=l.exports=b.debug=b.default=b,W.coerce=h,W.disable=n,W.enable=e,W.enabled=i,W.humanize=OY,W.instances=[],W.names=[],W.skips=[],W.formatters={};function d(G){var p=0,s;for(s in G)p=(p<<5)-p+G.charCodeAt(s),p|=0;return W.colors[Math.abs(p)%W.colors.length]}function b(G){var p;function s(){if(s.enabled){var X=s,o=+new Date,r=o-(p||o);X.diff=r,X.prev=p,X.curr=o,p=o;for(var M=new Array(arguments.length),L=0;L<M.length;L++)M[L]=arguments[L];M[0]=W.coerce(M[0]),typeof M[0]!="string"&&M.unshift("%O");var J=0;M[0]=M[0].replace(/%([a-zA-Z%])/g,function(K,x){if(K==="%%")return K;J++;var z=W.formatters[x];if(typeof z=="function"){var I=M[J];K=z.call(X,I),M.splice(J,1),J--}return K}),W.formatArgs.call(X,M);var w=s.log||W.log||console.log.bind(console);w.apply(X,M)}}return s.namespace=G,s.enabled=W.enabled(G),s.useColors=W.useColors(),s.color=d(G),s.destroy=t,typeof W.init=="function"&&W.init(s),W.instances.push(s),s}function t(){var G=W.instances.indexOf(this);return G!==-1?(W.instances.splice(G,1),!0):!1}function e(G){W.save(G),W.names=[],W.skips=[];var p,s=(typeof G=="string"?G:"").split(/[\s,]+/),X=s.length;for(p=0;p<X;p++)s[p]&&(G=s[p].replace(/\*/g,".*?"),G[0]==="-"?W.skips.push(new RegExp("^"+G.substr(1)+"$")):W.names.push(new RegExp("^"+G+"$")));for(p=0;p<W.instances.length;p++){var o=W.instances[p];o.enabled=W.enabled(o.namespace)}}function n(){W.enable("")}function i(G){if(G[G.length-1]==="*")return!0;var p,s;for(p=0,s=W.skips.length;p<s;p++)if(W.skips[p].test(G))return!1;for(p=0,s=W.names.length;p<s;p++)if(W.names[p].test(G))return!0;return!1}function h(G){return G instanceof Error?G.stack||G.message:G}})(Ea,Ea.exports);var qY=Ea.exports;(function(l,W){W=l.exports=qY,W.log=t,W.formatArgs=b,W.save=e,W.load=n,W.useColors=d,W.storage=typeof chrome<"u"&&typeof chrome.storage<"u"?chrome.storage.local:i(),W.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function d(){return typeof window<"u"&&window.process&&window.process.type==="renderer"?!0:typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)?!1:typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}W.formatters.j=function(h){try{return JSON.stringify(h)}catch(G){return"[UnexpectedJSONParseError]: "+G.message}};function b(h){var G=this.useColors;if(h[0]=(G?"%c":"")+this.namespace+(G?" %c":" ")+h[0]+(G?"%c ":" ")+"+"+W.humanize(this.diff),!!G){var p="color: "+this.color;h.splice(1,0,p,"color: inherit");var s=0,X=0;h[0].replace(/%[a-zA-Z%]/g,function(o){o!=="%%"&&(s++,o==="%c"&&(X=s))}),h.splice(X,0,p)}}function t(){return typeof console=="object"&&console.log&&Function.prototype.apply.call(console.log,console,arguments)}function e(h){try{h==null?W.storage.removeItem("debug"):W.storage.debug=h}catch{}}function n(){var h;try{h=W.storage.debug}catch{}return!h&&typeof process<"u"&&"env"in process&&(h=process.env.DEBUG),h}W.enable(n());function i(){try{return window.localStorage}catch{}}})(Ia,Ia.exports);var $Y=Ia.exports,Zn={exports:{}};(function(l){l.exports=W;function W(b){if(b)return d(b)}function d(b){for(var t in W.prototype)b[t]=W.prototype[t];return b}W.prototype.on=W.prototype.addEventListener=function(b,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+b]=this._callbacks["$"+b]||[]).push(t),this},W.prototype.once=function(b,t){function e(){this.off(b,e),t.apply(this,arguments)}return e.fn=t,this.on(b,e),this},W.prototype.off=W.prototype.removeListener=W.prototype.removeAllListeners=W.prototype.removeEventListener=function(b,t){if(this._callbacks=this._callbacks||{},arguments.length==0)return this._callbacks={},this;var e=this._callbacks["$"+b];if(!e)return this;if(arguments.length==1)return delete this._callbacks["$"+b],this;for(var n,i=0;i<e.length;i++)if(n=e[i],n===t||n.fn===t){e.splice(i,1);break}return e.length===0&&delete this._callbacks["$"+b],this},W.prototype.emit=function(b){this._callbacks=this._callbacks||{};for(var t=new Array(arguments.length-1),e=this._callbacks["$"+b],n=1;n<arguments.length;n++)t[n-1]=arguments[n];if(e){e=e.slice(0);for(var n=0,i=e.length;n<i;++n)e[n].apply(this,t)}return this},W.prototype.listeners=function(b){return this._callbacks=this._callbacks||{},this._callbacks["$"+b]||[]},W.prototype.hasListeners=function(b){return!!this.listeners(b).length}})(Zn);var ls=Zn.exports,wZ={},Vs={}.toString,La=Array.isArray||function(l){return Vs.call(l)=="[object Array]"},bn=bs,Ws=typeof Buffer=="function"&&typeof Buffer.isBuffer=="function",ds=typeof ArrayBuffer=="function",Zs=function(l){return typeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(l):l.buffer instanceof ArrayBuffer};function bs(l){return Ws&&Buffer.isBuffer(l)||ds&&(l instanceof ArrayBuffer||Zs(l))}var wa=La,an=bn,tn=Object.prototype.toString,as=typeof Blob=="function"||typeof Blob<"u"&&tn.call(Blob)==="[object BlobConstructor]",ts=typeof File=="function"||typeof File<"u"&&tn.call(File)==="[object FileConstructor]";wZ.deconstructPacket=function(l){var W=[],d=l.data,b=l;return b.data=ja(d,W),b.attachments=W.length,{packet:b,buffers:W}};function ja(l,W){if(!l)return l;if(an(l)){var d={_placeholder:!0,num:W.length};return W.push(l),d}else if(wa(l)){for(var b=new Array(l.length),t=0;t<l.length;t++)b[t]=ja(l[t],W);return b}else if(typeof l=="object"&&!(l instanceof Date)){var b={};for(var e in l)b[e]=ja(l[e],W);return b}return l}wZ.reconstructPacket=function(l,W){return l.data=Ba(l.data,W),l.attachments=void 0,l};function Ba(l,W){if(!l)return l;if(l&&l._placeholder===!0){var d=typeof l.num=="number"&&l.num>=0&&l.num<W.length;if(d)return W[l.num];throw new Error("illegal attachments")}else if(wa(l))for(var b=0;b<l.length;b++)l[b]=Ba(l[b],W);else if(typeof l=="object")for(var t in l)l[t]=Ba(l[t],W);return l}wZ.removeBlobs=function(l,W){function d(e,n,i){if(!e)return e;if(as&&e instanceof Blob||ts&&e instanceof File){b++;var h=new FileReader;h.onload=function(){i?i[n]=this.result:t=this.result,--b||W(t)},h.readAsArrayBuffer(e)}else if(wa(e))for(var G=0;G<e.length;G++)d(e[G],G,e);else if(typeof e=="object"&&!an(e))for(var p in e)d(e[p],p,e)}var b=0,t=l;d(t),b||W(t)},function(l){var W=$Y("socket.io-parser"),d=ls,b=wZ,t=La,e=bn;l.protocol=4,l.types=["CONNECT","DISCONNECT","EVENT","ACK","ERROR","BINARY_EVENT","BINARY_ACK"],l.CONNECT=0,l.DISCONNECT=1,l.EVENT=2,l.ACK=3,l.ERROR=4,l.BINARY_EVENT=5,l.BINARY_ACK=6,l.Encoder=n,l.Decoder=s;function n(){}var i=l.ERROR+'"encode error"';n.prototype.encode=function(J,w){if(W("encoding packet %j",J),l.BINARY_EVENT===J.type||l.BINARY_ACK===J.type)p(J,w);else{var K=h(J);w([K])}};function h(J){var w=""+J.type;if((l.BINARY_EVENT===J.type||l.BINARY_ACK===J.type)&&(w+=J.attachments+"-"),J.nsp&&J.nsp!=="/"&&(w+=J.nsp+","),J.id!=null&&(w+=J.id),J.data!=null){var K=G(J.data);if(K!==!1)w+=K;else return i}return W("encoded %j as %s",J,w),w}function G(J){try{return JSON.stringify(J)}catch{return!1}}function p(J,w){function K(x){var z=b.deconstructPacket(x),I=h(z.packet),k=z.buffers;k.unshift(I),w(k)}b.removeBlobs(J,K)}function s(){this.reconstructor=null}d(s.prototype),s.prototype.add=function(J){var w;if(typeof J=="string"){if(this.reconstructor)throw new Error("got plaintext data when reconstructing a packet");w=o(J),l.BINARY_EVENT===w.type||l.BINARY_ACK===w.type?(this.reconstructor=new M(w),this.reconstructor.reconPack.attachments===0&&this.emit("decoded",w)):this.emit("decoded",w)}else if(e(J)||J.base64)if(this.reconstructor)w=this.reconstructor.takeBinaryData(J),w&&(this.reconstructor=null,this.emit("decoded",w));else throw new Error("got binary data when not reconstructing a packet");else throw new Error("Unknown type: "+J)};function X(J,w){switch(J){case 0:return typeof w=="object";case 1:return w===void 0;case 4:return typeof w=="string"||typeof w=="object";case 2:case 5:return t(w)&&(typeof w[0]=="string"||typeof w[0]=="number");case 3:case 6:return t(w)}}function o(J){var w=0,K={type:Number(J.charAt(0))};if(l.types[K.type]==null)return L("unknown packet type "+K.type);if(l.BINARY_EVENT===K.type||l.BINARY_ACK===K.type){for(var x=w+1;J.charAt(++w)!=="-"&&w!=J.length;);var z=J.substring(x,w);if(z!=Number(z)||J.charAt(w)!=="-")throw new Error("Illegal attachments");K.attachments=Number(z)}if(J.charAt(w+1)==="/"){for(var x=w+1;++w;){var I=J.charAt(w);if(I===","||w===J.length)break}K.nsp=J.substring(x,w)}else K.nsp="/";var k=J.charAt(w+1);if(k!==""&&Number(k)==k){for(var x=w+1;++w;){var I=J.charAt(w);if(I==null||Number(I)!=I){--w;break}if(w===J.length)break}K.id=Number(J.substring(x,w+1))}if(J.charAt(++w)){var B=r(J.substr(w));if(X(K.type,B))K.data=B;else throw new Error("invalid payload")}return W("decoded %s as %j",J,K),K}function r(J){try{return JSON.parse(J)}catch{return!1}}s.prototype.destroy=function(){this.reconstructor&&this.reconstructor.finishedReconstruction()};function M(J){this.reconPack=J,this.buffers=[]}M.prototype.takeBinaryData=function(J){if(this.buffers.push(J),this.buffers.length===this.reconPack.attachments){var w=b.reconstructPacket(this.reconPack,this.buffers);return this.finishedReconstruction(),w}return null},M.prototype.finishedReconstruction=function(){this.reconPack=null,this.buffers=[]};function L(J){return{type:l.ERROR,data:"parser error: "+J}}}(EZ);var Ka={exports:{}},jZ={},va={exports:{}};try{va.exports=typeof XMLHttpRequest<"u"&&"withCredentials"in new XMLHttpRequest}catch{va.exports=!1}var ms=va.exports,ga=function(){return typeof self<"u"?self:typeof window<"u"?window:Function("return this")()}(),es=ms,ns=ga,fa=function(l){var W=l.xdomain,d=l.xscheme,b=l.enablesXDR;try{if(typeof XMLHttpRequest<"u"&&(!W||es))return new XMLHttpRequest}catch{}try{if(typeof XDomainRequest<"u"&&!d&&b)return new XDomainRequest}catch{}if(!W)try{return new ns[["Active"].concat("Object").join("X")]("Microsoft.XMLHTTP")}catch{}},Ca={exports:{}},MW={},cs=Object.keys||function(W){var d=[],b=Object.prototype.hasOwnProperty;for(var t in W)b.call(W,t)&&d.push(t);return d},is=La,mn=Object.prototype.toString,Gs=typeof Blob=="function"||typeof Blob<"u"&&mn.call(Blob)==="[object BlobConstructor]",ps=typeof File=="function"||typeof File<"u"&&mn.call(File)==="[object FileConstructor]",en=BZ;function BZ(l){if(!l||typeof l!="object")return!1;if(is(l)){for(var W=0,d=l.length;W<d;W++)if(BZ(l[W]))return!0;return!1}if(typeof Buffer=="function"&&Buffer.isBuffer&&Buffer.isBuffer(l)||typeof ArrayBuffer=="function"&&l instanceof ArrayBuffer||Gs&&l instanceof Blob||ps&&l instanceof File)return!0;if(l.toJSON&&typeof l.toJSON=="function"&&arguments.length===1)return BZ(l.toJSON(),!0);for(var b in l)if(Object.prototype.hasOwnProperty.call(l,b)&&BZ(l[b]))return!0;return!1}var hs=function(l,W,d){var b=l.byteLength;if(W=W||0,d=d||b,l.slice)return l.slice(W,d);if(W<0&&(W+=b),d<0&&(d+=b),d>b&&(d=b),W>=b||W>=d||b===0)return new ArrayBuffer(0);for(var t=new Uint8Array(l),e=new Uint8Array(d-W),n=W,i=0;n<d;n++,i++)e[i]=t[n];return e.buffer},Rs=Ys;function Ys(l,W,d){var b=!1;return d=d||ss,t.count=l,l===0?W():t;function t(e,n){if(t.count<=0)throw new Error("after called too many times");--t.count,e?(b=!0,W(e),W=d):t.count===0&&!b&&W(null,n)}}function ss(){}/*! https://mths.be/utf8js v2.1.2 by @mathias */var _V=String.fromCharCode;function nn(l){for(var W=[],d=0,b=l.length,t,e;d<b;)t=l.charCodeAt(d++),t>=55296&&t<=56319&&d<b?(e=l.charCodeAt(d++),(e&64512)==56320?W.push(((t&1023)<<10)+(e&1023)+65536):(W.push(t),d--)):W.push(t);return W}function Xs(l){for(var W=l.length,d=-1,b,t="";++d<W;)b=l[d],b>65535&&(b-=65536,t+=_V(b>>>10&1023|55296),b=56320|b&1023),t+=_V(b);return t}function cn(l,W){if(l>=55296&&l<=57343){if(W)throw Error("Lone surrogate U+"+l.toString(16).toUpperCase()+" is not a scalar value");return!1}return!0}function Qa(l,W){return _V(l>>W&63|128)}function os(l,W){if(!(l&4294967168))return _V(l);var d="";return l&4294965248?l&4294901760?l&4292870144||(d=_V(l>>18&7|240),d+=Qa(l,12),d+=Qa(l,6)):(cn(l,W)||(l=65533),d=_V(l>>12&15|224),d+=Qa(l,6)):d=_V(l>>6&31|192),d+=_V(l&63|128),d}function us(l,W){W=W||{};for(var d=W.strict!==!1,b=nn(l),t=b.length,e=-1,n,i="";++e<t;)n=b[e],i+=os(n,d);return i}function OW(){if(qV>=vZ)throw Error("Invalid byte index");var l=KZ[qV]&255;if(qV++,(l&192)==128)return l&63;throw Error("Invalid continuation byte")}function Ns(l){var W,d,b,t,e;if(qV>vZ)throw Error("Invalid byte index");if(qV==vZ)return!1;if(W=KZ[qV]&255,qV++,!(W&128))return W;if((W&224)==192){if(d=OW(),e=(W&31)<<6|d,e>=128)return e;throw Error("Invalid continuation byte")}if((W&240)==224){if(d=OW(),b=OW(),e=(W&15)<<12|d<<6|b,e>=2048)return cn(e,l)?e:65533;throw Error("Invalid continuation byte")}if((W&248)==240&&(d=OW(),b=OW(),t=OW(),e=(W&7)<<18|d<<12|b<<6|t,e>=65536&&e<=1114111))return e;throw Error("Invalid UTF-8 detected")}var KZ,vZ,qV;function Fs(l,W){W=W||{};var d=W.strict!==!1;KZ=nn(l),vZ=KZ.length,qV=0;for(var b=[],t;(t=Ns(d))!==!1;)b.push(t);return Xs(b)}var Us={version:"2.1.2",encode:us,decode:Fs},gZ={},Gn;function Ss(){return Gn||(Gn=1,function(l){gZ.encode=function(W){var d=new Uint8Array(W),b,t=d.length,e="";for(b=0;b<t;b+=3)e+=l[d[b]>>2],e+=l[(d[b]&3)<<4|d[b+1]>>4],e+=l[(d[b+1]&15)<<2|d[b+2]>>6],e+=l[d[b+2]&63];return t%3===2?e=e.substring(0,e.length-1)+"=":t%3===1&&(e=e.substring(0,e.length-2)+"=="),e},gZ.decode=function(W){var d=W.length*.75,b=W.length,t,e=0,n,i,h,G;W[W.length-1]==="="&&(d--,W[W.length-2]==="="&&d--);var p=new ArrayBuffer(d),s=new Uint8Array(p);for(t=0;t<b;t+=4)n=l.indexOf(W[t]),i=l.indexOf(W[t+1]),h=l.indexOf(W[t+2]),G=l.indexOf(W[t+3]),s[e++]=n<<2|i>>4,s[e++]=(i&15)<<4|h>>2,s[e++]=(h&3)<<6|G&63;return p}}("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/")),gZ}var Da,pn;function Ms(){if(pn)return Da;pn=1;var l=typeof l<"u"?l:typeof WebKitBlobBuilder<"u"?WebKitBlobBuilder:typeof MSBlobBuilder<"u"?MSBlobBuilder:typeof MozBlobBuilder<"u"?MozBlobBuilder:!1,W=function(){try{var i=new Blob(["hi"]);return i.size===2}catch{return!1}}(),d=W&&function(){try{var i=new Blob([new Uint8Array([1,2])]);return i.size===2}catch{return!1}}(),b=l&&l.prototype.append&&l.prototype.getBlob;function t(i){return i.map(function(h){if(h.buffer instanceof ArrayBuffer){var G=h.buffer;if(h.byteLength!==G.byteLength){var p=new Uint8Array(h.byteLength);p.set(new Uint8Array(G,h.byteOffset,h.byteLength)),G=p.buffer}return G}return h})}function e(i,h){h=h||{};var G=new l;return t(i).forEach(function(p){G.append(p)}),h.type?G.getBlob(h.type):G.getBlob()}function n(i,h){return new Blob(t(i),h||{})}return typeof Blob<"u"&&(e.prototype=Blob.prototype,n.prototype=Blob.prototype),Da=function(){return W?d?Blob:n:b?e:void 0}(),Da}(function(l){var W=cs,d=en,b=hs,t=Rs,e=Us,n;typeof ArrayBuffer<"u"&&(n=Ss());var i=typeof navigator<"u"&&/Android/i.test(navigator.userAgent),h=typeof navigator<"u"&&/PhantomJS/i.test(navigator.userAgent),G=i||h;l.protocol=3;var p=l.packets={open:0,close:1,ping:2,pong:3,message:4,upgrade:5,noop:6},s=W(p),X={type:"error",data:"parser error"},o=Ms();l.encodePacket=function(x,z,I,k){typeof z=="function"&&(k=z,z=!1),typeof I=="function"&&(k=I,I=null);var B=x.data===void 0?void 0:x.data.buffer||x.data;if(typeof ArrayBuffer<"u"&&B instanceof ArrayBuffer)return M(x,z,k);if(typeof o<"u"&&B instanceof o)return J(x,z,k);if(B&&B.base64)return r(x,k);var C=p[x.type];return x.data!==void 0&&(C+=I?e.encode(String(x.data),{strict:!1}):String(x.data)),k(""+C)};function r(x,z){var I="b"+l.packets[x.type]+x.data.data;return z(I)}function M(x,z,I){if(!z)return l.encodeBase64Packet(x,I);var k=x.data,B=new Uint8Array(k),C=new Uint8Array(1+k.byteLength);C[0]=p[x.type];for(var A=0;A<B.length;A++)C[A+1]=B[A];return I(C.buffer)}function L(x,z,I){if(!z)return l.encodeBase64Packet(x,I);var k=new FileReader;return k.onload=function(){l.encodePacket({type:x.type,data:k.result},z,!0,I)},k.readAsArrayBuffer(x.data)}function J(x,z,I){if(!z)return l.encodeBase64Packet(x,I);if(G)return L(x,z,I);var k=new Uint8Array(1);k[0]=p[x.type];var B=new o([k.buffer,x.data]);return I(B)}l.encodeBase64Packet=function(x,z){var I="b"+l.packets[x.type];if(typeof o<"u"&&x.data instanceof o){var k=new FileReader;return k.onload=function(){var dl=k.result.split(",")[1];z(I+dl)},k.readAsDataURL(x.data)}var B;try{B=String.fromCharCode.apply(null,new Uint8Array(x.data))}catch{for(var C=new Uint8Array(x.data),A=new Array(C.length),Vl=0;Vl<C.length;Vl++)A[Vl]=C[Vl];B=String.fromCharCode.apply(null,A)}return I+=btoa(B),z(I)},l.decodePacket=function(x,z,I){if(x===void 0)return X;if(typeof x=="string"){if(x.charAt(0)==="b")return l.decodeBase64Packet(x.substr(1),z);if(I&&(x=w(x),x===!1))return X;var B=x.charAt(0);return Number(B)!=B||!s[B]?X:x.length>1?{type:s[B],data:x.substring(1)}:{type:s[B]}}var k=new Uint8Array(x),B=k[0],C=b(x,1);return o&&z==="blob"&&(C=new o([C])),{type:s[B],data:C}};function w(x){try{x=e.decode(x,{strict:!1})}catch{return!1}return x}l.decodeBase64Packet=function(x,z){var I=s[x.charAt(0)];if(!n)return{type:I,data:{base64:!0,data:x.substr(1)}};var k=n.decode(x.substr(1));return z==="blob"&&o&&(k=new o([k])),{type:I,data:k}},l.encodePayload=function(x,z,I){typeof z=="function"&&(I=z,z=null);var k=d(x);if(z&&k)return o&&!G?l.encodePayloadAsBlob(x,I):l.encodePayloadAsArrayBuffer(x,I);if(!x.length)return I("0:");function B(A){return A.length+":"+A}function C(A,Vl){l.encodePacket(A,k?z:!1,!1,function(dl){Vl(null,B(dl))})}K(x,C,function(A,Vl){return I(Vl.join(""))})};function K(x,z,I){for(var k=new Array(x.length),B=t(x.length,I),C=function(Vl,dl,Fl){z(dl,function(ul,Ul){k[Vl]=Ul,Fl(ul,k)})},A=0;A<x.length;A++)C(A,x[A],B)}l.decodePayload=function(x,z,I){if(typeof x!="string")return l.decodePayloadAsBinary(x,z,I);typeof z=="function"&&(I=z,z=null);var k;if(x==="")return I(X,0,1);for(var B="",C,A,Vl=0,dl=x.length;Vl<dl;Vl++){var Fl=x.charAt(Vl);if(Fl!==":"){B+=Fl;continue}if(B===""||B!=(C=Number(B))||(A=x.substr(Vl+1,C),B!=A.length))return I(X,0,1);if(A.length){if(k=l.decodePacket(A,z,!1),X.type===k.type&&X.data===k.data)return I(X,0,1);var ul=I(k,Vl+C,dl);if(ul===!1)return}Vl+=C,B=""}if(B!=="")return I(X,0,1)},l.encodePayloadAsArrayBuffer=function(x,z){if(!x.length)return z(new ArrayBuffer(0));function I(k,B){l.encodePacket(k,!0,!0,function(C){return B(null,C)})}K(x,I,function(k,B){var C=B.reduce(function(dl,Fl){var ul;return typeof Fl=="string"?ul=Fl.length:ul=Fl.byteLength,dl+ul.toString().length+ul+2},0),A=new Uint8Array(C),Vl=0;return B.forEach(function(dl){var Fl=typeof dl=="string",ul=dl;if(Fl){for(var gl=new Uint8Array(dl.length),Ul=0;Ul<dl.length;Ul++)gl[Ul]=dl.charCodeAt(Ul);ul=gl.buffer}Fl?A[Vl++]=0:A[Vl++]=1;for(var EV=ul.byteLength.toString(),Ul=0;Ul<EV.length;Ul++)A[Vl++]=parseInt(EV[Ul]);A[Vl++]=255;for(var gl=new Uint8Array(ul),Ul=0;Ul<gl.length;Ul++)A[Vl++]=gl[Ul]}),z(A.buffer)})},l.encodePayloadAsBlob=function(x,z){function I(k,B){l.encodePacket(k,!0,!0,function(C){var A=new Uint8Array(1);if(A[0]=1,typeof C=="string"){for(var Vl=new Uint8Array(C.length),dl=0;dl<C.length;dl++)Vl[dl]=C.charCodeAt(dl);C=Vl.buffer,A[0]=0}for(var Fl=C instanceof ArrayBuffer?C.byteLength:C.size,ul=Fl.toString(),Ul=new Uint8Array(ul.length+1),dl=0;dl<ul.length;dl++)Ul[dl]=parseInt(ul[dl]);if(Ul[ul.length]=255,o){var EV=new o([A.buffer,Ul.buffer,C]);B(null,EV)}})}K(x,I,function(k,B){return z(new o(B))})},l.decodePayloadAsBinary=function(x,z,I){typeof z=="function"&&(I=z,z=null);for(var k=x,B=[];k.byteLength>0;){for(var C=new Uint8Array(k),A=C[0]===0,Vl="",dl=1;C[dl]!==255;dl++){if(Vl.length>310)return I(X,0,1);Vl+=C[dl]}k=b(k,2+Vl.length),Vl=parseInt(Vl);var Fl=b(k,0,Vl);if(A)try{Fl=String.fromCharCode.apply(null,new Uint8Array(Fl))}catch{var ul=new Uint8Array(Fl);Fl="";for(var dl=0;dl<ul.length;dl++)Fl+=String.fromCharCode(ul[dl])}B.push(Fl),k=b(k,Vl)}var Ul=B.length;B.forEach(function(EV,gl){I(l.decodePacket(EV,z,!0),gl,Ul)})}})(MW);var hn={exports:{}};(function(l){l.exports=W;function W(b){if(b)return d(b)}function d(b){for(var t in W.prototype)b[t]=W.prototype[t];return b}W.prototype.on=W.prototype.addEventListener=function(b,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+b]=this._callbacks["$"+b]||[]).push(t),this},W.prototype.once=function(b,t){function e(){this.off(b,e),t.apply(this,arguments)}return e.fn=t,this.on(b,e),this},W.prototype.off=W.prototype.removeListener=W.prototype.removeAllListeners=W.prototype.removeEventListener=function(b,t){if(this._callbacks=this._callbacks||{},arguments.length==0)return this._callbacks={},this;var e=this._callbacks["$"+b];if(!e)return this;if(arguments.length==1)return delete this._callbacks["$"+b],this;for(var n,i=0;i<e.length;i++)if(n=e[i],n===t||n.fn===t){e.splice(i,1);break}return e.length===0&&delete this._callbacks["$"+b],this},W.prototype.emit=function(b){this._callbacks=this._callbacks||{};for(var t=new Array(arguments.length-1),e=this._callbacks["$"+b],n=1;n<arguments.length;n++)t[n-1]=arguments[n];if(e){e=e.slice(0);for(var n=0,i=e.length;n<i;++n)e[n].apply(this,t)}return this},W.prototype.listeners=function(b){return this._callbacks=this._callbacks||{},this._callbacks["$"+b]||[]},W.prototype.hasListeners=function(b){return!!this.listeners(b).length}})(hn);var Oa=hn.exports,Pa,Rn;function Aa(){if(Rn)return Pa;Rn=1;var l=MW,W=Oa;Pa=d;function d(b){this.path=b.path,this.hostname=b.hostname,this.port=b.port,this.secure=b.secure,this.query=b.query,this.timestampParam=b.timestampParam,this.timestampRequests=b.timestampRequests,this.readyState="",this.agent=b.agent||!1,this.socket=b.socket,this.enablesXDR=b.enablesXDR,this.withCredentials=b.withCredentials,this.pfx=b.pfx,this.key=b.key,this.passphrase=b.passphrase,this.cert=b.cert,this.ca=b.ca,this.ciphers=b.ciphers,this.rejectUnauthorized=b.rejectUnauthorized,this.forceNode=b.forceNode,this.isReactNative=b.isReactNative,this.extraHeaders=b.extraHeaders,this.localAddress=b.localAddress}return W(d.prototype),d.prototype.onError=function(b,t){var e=new Error(b);return e.type="TransportError",e.description=t,this.emit("error",e),this},d.prototype.open=function(){return(this.readyState==="closed"||this.readyState==="")&&(this.readyState="opening",this.doOpen()),this},d.prototype.close=function(){return(this.readyState==="opening"||this.readyState==="open")&&(this.doClose(),this.onClose()),this},d.prototype.send=function(b){if(this.readyState==="open")this.write(b);else throw new Error("Transport not open")},d.prototype.onOpen=function(){this.readyState="open",this.writable=!0,this.emit("open")},d.prototype.onData=function(b){var t=l.decodePacket(b,this.socket.binaryType);this.onPacket(t)},d.prototype.onPacket=function(b){this.emit("packet",b)},d.prototype.onClose=function(){this.readyState="closed",this.emit("close")},Pa}var Id={};Id.encode=function(l){var W="";for(var d in l)l.hasOwnProperty(d)&&(W.length&&(W+="&"),W+=encodeURIComponent(d)+"="+encodeURIComponent(l[d]));return W},Id.decode=function(l){for(var W={},d=l.split("&"),b=0,t=d.length;b<t;b++){var e=d[b].split("=");W[decodeURIComponent(e[0])]=decodeURIComponent(e[1])}return W};var fZ=function(l,W){var d=function(){};d.prototype=W.prototype,l.prototype=new d,l.prototype.constructor=l},Yn="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""),CZ=64,sn={},Xn=0,$V=0,on;function _a(l){var W="";do W=Yn[l%CZ]+W,l=Math.floor(l/CZ);while(l>0);return W}function Ts(l){var W=0;for($V=0;$V<l.length;$V++)W=W*CZ+sn[l.charAt($V)];return W}function qa(){var l=_a(+new Date);return l!==on?(Xn=0,on=l):l+"."+_a(Xn++)}for(;$V<CZ;$V++)sn[Yn[$V]]=$V;qa.encode=_a,qa.decode=Ts;var un=qa,$a={exports:{}},lt={exports:{}},Ed=1e3,Ld=Ed*60,wd=Ld*60,jd=wd*24,rs=jd*365.25,Js=function(l,W){W=W||{};var d=typeof l;if(d==="string"&&l.length>0)return ks(l);if(d==="number"&&isNaN(l)===!1)return W.long?ys(l):xs(l);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(l))};function ks(l){if(l=String(l),!(l.length>100)){var W=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(l);if(W){var d=parseFloat(W[1]),b=(W[2]||"ms").toLowerCase();switch(b){case"years":case"year":case"yrs":case"yr":case"y":return d*rs;case"days":case"day":case"d":return d*jd;case"hours":case"hour":case"hrs":case"hr":case"h":return d*wd;case"minutes":case"minute":case"mins":case"min":case"m":return d*Ld;case"seconds":case"second":case"secs":case"sec":case"s":return d*Ed;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return d;default:return}}}}function xs(l){return l>=jd?Math.round(l/jd)+"d":l>=wd?Math.round(l/wd)+"h":l>=Ld?Math.round(l/Ld)+"m":l>=Ed?Math.round(l/Ed)+"s":l+"ms"}function ys(l){return QZ(l,jd,"day")||QZ(l,wd,"hour")||QZ(l,Ld,"minute")||QZ(l,Ed,"second")||l+" ms"}function QZ(l,W,d){if(!(l<W))return l<W*1.5?Math.floor(l/W)+" "+d:Math.ceil(l/W)+" "+d+"s"}(function(l,W){W=l.exports=b.debug=b.default=b,W.coerce=h,W.disable=n,W.enable=e,W.enabled=i,W.humanize=Js,W.instances=[],W.names=[],W.skips=[],W.formatters={};function d(G){var p=0,s;for(s in G)p=(p<<5)-p+G.charCodeAt(s),p|=0;return W.colors[Math.abs(p)%W.colors.length]}function b(G){var p;function s(){if(s.enabled){var X=s,o=+new Date,r=o-(p||o);X.diff=r,X.prev=p,X.curr=o,p=o;for(var M=new Array(arguments.length),L=0;L<M.length;L++)M[L]=arguments[L];M[0]=W.coerce(M[0]),typeof M[0]!="string"&&M.unshift("%O");var J=0;M[0]=M[0].replace(/%([a-zA-Z%])/g,function(K,x){if(K==="%%")return K;J++;var z=W.formatters[x];if(typeof z=="function"){var I=M[J];K=z.call(X,I),M.splice(J,1),J--}return K}),W.formatArgs.call(X,M);var w=s.log||W.log||console.log.bind(console);w.apply(X,M)}}return s.namespace=G,s.enabled=W.enabled(G),s.useColors=W.useColors(),s.color=d(G),s.destroy=t,typeof W.init=="function"&&W.init(s),W.instances.push(s),s}function t(){var G=W.instances.indexOf(this);return G!==-1?(W.instances.splice(G,1),!0):!1}function e(G){W.save(G),W.names=[],W.skips=[];var p,s=(typeof G=="string"?G:"").split(/[\s,]+/),X=s.length;for(p=0;p<X;p++)s[p]&&(G=s[p].replace(/\*/g,".*?"),G[0]==="-"?W.skips.push(new RegExp("^"+G.substr(1)+"$")):W.names.push(new RegExp("^"+G+"$")));for(p=0;p<W.instances.length;p++){var o=W.instances[p];o.enabled=W.enabled(o.namespace)}}function n(){W.enable("")}function i(G){if(G[G.length-1]==="*")return!0;var p,s;for(p=0,s=W.skips.length;p<s;p++)if(W.skips[p].test(G))return!1;for(p=0,s=W.names.length;p<s;p++)if(W.names[p].test(G))return!0;return!1}function h(G){return G instanceof Error?G.stack||G.message:G}})(lt,lt.exports);var Hs=lt.exports;(function(l,W){W=l.exports=Hs,W.log=t,W.formatArgs=b,W.save=e,W.load=n,W.useColors=d,W.storage=typeof chrome<"u"&&typeof chrome.storage<"u"?chrome.storage.local:i(),W.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function d(){return typeof window<"u"&&window.process&&window.process.type==="renderer"?!0:typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)?!1:typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}W.formatters.j=function(h){try{return JSON.stringify(h)}catch(G){return"[UnexpectedJSONParseError]: "+G.message}};function b(h){var G=this.useColors;if(h[0]=(G?"%c":"")+this.namespace+(G?" %c":" ")+h[0]+(G?"%c ":" ")+"+"+W.humanize(this.diff),!!G){var p="color: "+this.color;h.splice(1,0,p,"color: inherit");var s=0,X=0;h[0].replace(/%[a-zA-Z%]/g,function(o){o!=="%%"&&(s++,o==="%c"&&(X=s))}),h.splice(X,0,p)}}function t(){return typeof console=="object"&&console.log&&Function.prototype.apply.call(console.log,console,arguments)}function e(h){try{h==null?W.storage.removeItem("debug"):W.storage.debug=h}catch{}}function n(){var h;try{h=W.storage.debug}catch{}return!h&&typeof process<"u"&&"env"in process&&(h=process.env.DEBUG),h}W.enable(n());function i(){try{return window.localStorage}catch{}}})($a,$a.exports);var DZ=$a.exports,Nn=Aa(),zs=Id,Fn=MW,Is=fZ,Es=un,sV=DZ("engine.io-client:polling"),Un=MV,Ls=function(){var l=fa,W=new l({xdomain:!1});return W.responseType!=null}();function MV(l){var W=l&&l.forceBase64;(!Ls||W)&&(this.supportsBinary=!1),Nn.call(this,l)}Is(MV,Nn),MV.prototype.name="polling",MV.prototype.doOpen=function(){this.poll()},MV.prototype.pause=function(l){var W=this;this.readyState="pausing";function d(){sV("paused"),W.readyState="paused",l()}if(this.polling||!this.writable){var b=0;this.polling&&(sV("we are currently polling - waiting to pause"),b++,this.once("pollComplete",function(){sV("pre-pause polling complete"),--b||d()})),this.writable||(sV("we are currently writing - waiting to pause"),b++,this.once("drain",function(){sV("pre-pause writing complete"),--b||d()}))}else d()},MV.prototype.poll=function(){sV("polling"),this.polling=!0,this.doPoll(),this.emit("poll")},MV.prototype.onData=function(l){var W=this;sV("polling got data %s",l);var d=function(b,t,e){if(W.readyState==="opening"&&W.onOpen(),b.type==="close")return W.onClose(),!1;W.onPacket(b)};Fn.decodePayload(l,this.socket.binaryType,d),this.readyState!=="closed"&&(this.polling=!1,this.emit("pollComplete"),this.readyState==="open"?this.poll():sV('ignoring poll - transport state "%s"',this.readyState))},MV.prototype.doClose=function(){var l=this;function W(){sV("writing close packet"),l.write([{type:"close"}])}this.readyState==="open"?(sV("transport open - closing"),W()):(sV("transport not open - deferring close"),this.once("open",W))},MV.prototype.write=function(l){var W=this;this.writable=!1;var d=function(){W.writable=!0,W.emit("drain")};Fn.encodePayload(l,this.supportsBinary,function(b){W.doWrite(b,d)})},MV.prototype.uri=function(){var l=this.query||{},W=this.secure?"https":"http",d="";this.timestampRequests!==!1&&(l[this.timestampParam]=Es()),!this.supportsBinary&&!l.sid&&(l.b64=1),l=zs.encode(l),this.port&&(W==="https"&&Number(this.port)!==443||W==="http"&&Number(this.port)!==80)&&(d=":"+this.port),l.length&&(l="?"+l);var b=this.hostname.indexOf(":")!==-1;return W+"://"+(b?"["+this.hostname+"]":this.hostname)+d+this.path+l};var ws=fa,Sn=Un,js=Oa,Bs=fZ,Vt=DZ("engine.io-client:polling-xhr"),Ks=ga;Ca.exports=PW,Ca.exports.Request=yl;function Mn(){}function PW(l){if(Sn.call(this,l),this.requestTimeout=l.requestTimeout,this.extraHeaders=l.extraHeaders,typeof location<"u"){var W=location.protocol==="https:",d=location.port;d||(d=W?443:80),this.xd=typeof location<"u"&&l.hostname!==location.hostname||d!==l.port,this.xs=l.secure!==W}}Bs(PW,Sn),PW.prototype.supportsBinary=!0,PW.prototype.request=function(l){return l=l||{},l.uri=this.uri(),l.xd=this.xd,l.xs=this.xs,l.agent=this.agent||!1,l.supportsBinary=this.supportsBinary,l.enablesXDR=this.enablesXDR,l.withCredentials=this.withCredentials,l.pfx=this.pfx,l.key=this.key,l.passphrase=this.passphrase,l.cert=this.cert,l.ca=this.ca,l.ciphers=this.ciphers,l.rejectUnauthorized=this.rejectUnauthorized,l.requestTimeout=this.requestTimeout,l.extraHeaders=this.extraHeaders,new yl(l)},PW.prototype.doWrite=function(l,W){var d=typeof l!="string"&&l!==void 0,b=this.request({method:"POST",data:l,isBinary:d}),t=this;b.on("success",W),b.on("error",function(e){t.onError("xhr post error",e)}),this.sendXhr=b},PW.prototype.doPoll=function(){Vt("xhr poll");var l=this.request(),W=this;l.on("data",function(d){W.onData(d)}),l.on("error",function(d){W.onError("xhr poll error",d)}),this.pollXhr=l};function yl(l){this.method=l.method||"GET",this.uri=l.uri,this.xd=!!l.xd,this.xs=!!l.xs,this.async=l.async!==!1,this.data=l.data!==void 0?l.data:null,this.agent=l.agent,this.isBinary=l.isBinary,this.supportsBinary=l.supportsBinary,this.enablesXDR=l.enablesXDR,this.withCredentials=l.withCredentials,this.requestTimeout=l.requestTimeout,this.pfx=l.pfx,this.key=l.key,this.passphrase=l.passphrase,this.cert=l.cert,this.ca=l.ca,this.ciphers=l.ciphers,this.rejectUnauthorized=l.rejectUnauthorized,this.extraHeaders=l.extraHeaders,this.create()}if(js(yl.prototype),yl.prototype.create=function(){var l={agent:this.agent,xdomain:this.xd,xscheme:this.xs,enablesXDR:this.enablesXDR};l.pfx=this.pfx,l.key=this.key,l.passphrase=this.passphrase,l.cert=this.cert,l.ca=this.ca,l.ciphers=this.ciphers,l.rejectUnauthorized=this.rejectUnauthorized;var W=this.xhr=new ws(l),d=this;try{Vt("xhr open %s: %s",this.method,this.uri),W.open(this.method,this.uri,this.async);try{if(this.extraHeaders){W.setDisableHeaderCheck&&W.setDisableHeaderCheck(!0);for(var b in this.extraHeaders)this.extraHeaders.hasOwnProperty(b)&&W.setRequestHeader(b,this.extraHeaders[b])}}catch{}if(this.method==="POST")try{this.isBinary?W.setRequestHeader("Content-type","application/octet-stream"):W.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch{}try{W.setRequestHeader("Accept","*/*")}catch{}"withCredentials"in W&&(W.withCredentials=this.withCredentials),this.requestTimeout&&(W.timeout=this.requestTimeout),this.hasXDR()?(W.onload=function(){d.onLoad()},W.onerror=function(){d.onError(W.responseText)}):W.onreadystatechange=function(){if(W.readyState===2)try{var t=W.getResponseHeader("Content-Type");(d.supportsBinary&&t==="application/octet-stream"||t==="application/octet-stream; charset=UTF-8")&&(W.responseType="arraybuffer")}catch{}W.readyState===4&&(W.status===200||W.status===1223?d.onLoad():setTimeout(function(){d.onError(typeof W.status=="number"?W.status:0)},0))},Vt("xhr data %s",this.data),W.send(this.data)}catch(t){setTimeout(function(){d.onError(t)},0);return}typeof document<"u"&&(this.index=yl.requestsCount++,yl.requests[this.index]=this)},yl.prototype.onSuccess=function(){this.emit("success"),this.cleanup()},yl.prototype.onData=function(l){this.emit("data",l),this.onSuccess()},yl.prototype.onError=function(l){this.emit("error",l),this.cleanup(!0)},yl.prototype.cleanup=function(l){if(!(typeof this.xhr>"u"||this.xhr===null)){if(this.hasXDR()?this.xhr.onload=this.xhr.onerror=Mn:this.xhr.onreadystatechange=Mn,l)try{this.xhr.abort()}catch{}typeof document<"u"&&delete yl.requests[this.index],this.xhr=null}},yl.prototype.onLoad=function(){var l;try{var W;try{W=this.xhr.getResponseHeader("Content-Type")}catch{}W==="application/octet-stream"||W==="application/octet-stream; charset=UTF-8"?l=this.xhr.response||this.xhr.responseText:l=this.xhr.responseText}catch(d){this.onError(d)}l!=null&&this.onData(l)},yl.prototype.hasXDR=function(){return typeof XDomainRequest<"u"&&!this.xs&&this.enablesXDR},yl.prototype.abort=function(){this.cleanup()},yl.requestsCount=0,yl.requests={},typeof document<"u"){if(typeof attachEvent=="function")attachEvent("onunload",Tn);else if(typeof addEventListener=="function"){var vs="onpagehide"in Ks?"pagehide":"unload";addEventListener(vs,Tn,!1)}}function Tn(){for(var l in yl.requests)yl.requests.hasOwnProperty(l)&&yl.requests[l].abort()}var gs=Ca.exports,Wt=Un,fs=fZ,rn=ga,Cs=AW,Qs=/\n/g,Ds=/\\n/g,OZ;function Os(){}function AW(l){Wt.call(this,l),this.query=this.query||{},OZ||(OZ=rn.___eio=rn.___eio||[]),this.index=OZ.length;var W=this;OZ.push(function(d){W.onData(d)}),this.query.j=this.index,typeof addEventListener=="function"&&addEventListener("beforeunload",function(){W.script&&(W.script.onerror=Os)},!1)}fs(AW,Wt),AW.prototype.supportsBinary=!1,AW.prototype.doClose=function(){this.script&&(this.script.parentNode.removeChild(this.script),this.script=null),this.form&&(this.form.parentNode.removeChild(this.form),this.form=null,this.iframe=null),Wt.prototype.doClose.call(this)},AW.prototype.doPoll=function(){var l=this,W=document.createElement("script");this.script&&(this.script.parentNode.removeChild(this.script),this.script=null),W.async=!0,W.src=this.uri(),W.onerror=function(t){l.onError("jsonp poll error",t)};var d=document.getElementsByTagName("script")[0];d?d.parentNode.insertBefore(W,d):(document.head||document.body).appendChild(W),this.script=W;var b=typeof navigator<"u"&&/gecko/i.test(navigator.userAgent);b&&setTimeout(function(){var t=document.createElement("iframe");document.body.appendChild(t),document.body.removeChild(t)},100)},AW.prototype.doWrite=function(l,W){var d=this;if(!this.form){var b=document.createElement("form"),t=document.createElement("textarea"),e=this.iframeId="eio_iframe_"+this.index,n;b.className="socketio",b.style.position="absolute",b.style.top="-1000px",b.style.left="-1000px",b.target=e,b.method="POST",b.setAttribute("accept-charset","utf-8"),t.name="d",b.appendChild(t),document.body.appendChild(b),this.form=b,this.area=t}this.form.action=this.uri();function i(){h(),W()}function h(){if(d.iframe)try{d.form.removeChild(d.iframe)}catch(p){d.onError("jsonp polling iframe removal error",p)}try{var G='<iframe src="javascript:0" name="'+d.iframeId+'">';n=document.createElement(G)}catch{n=document.createElement("iframe"),n.name=d.iframeId,n.src="javascript:0"}n.id=d.iframeId,d.form.appendChild(n),d.iframe=n}h(),l=l.replace(Ds,`\\
|
|
301
|
-
`),this.area.value=l.replace(Qs,"\\n");try{this.form.submit()}catch{}this.iframe.attachEvent?this.iframe.onreadystatechange=function(){d.iframe.readyState==="complete"&&i()}:this.iframe.onload=i};const Ps=JY(Object.freeze(Object.defineProperty({__proto__:null,default:{}},Symbol.toStringTag,{value:"Module"})));var dt=Aa(),As=MW,_s=Id,qs=fZ,$s=un,lX=DZ("engine.io-client:websocket"),PZ,Zt;if(typeof WebSocket<"u"?PZ=WebSocket:typeof self<"u"&&(PZ=self.WebSocket||self.MozWebSocket),typeof window>"u")try{Zt=Ps}catch{}var _W=PZ||Zt,VX=aV;function aV(l){var W=l&&l.forceBase64;W&&(this.supportsBinary=!1),this.perMessageDeflate=l.perMessageDeflate,this.usingBrowserWebSocket=PZ&&!l.forceNode,this.protocols=l.protocols,this.usingBrowserWebSocket||(_W=Zt),dt.call(this,l)}qs(aV,dt),aV.prototype.name="websocket",aV.prototype.supportsBinary=!0,aV.prototype.doOpen=function(){if(this.check()){var l=this.uri(),W=this.protocols,d={};this.isReactNative||(d.agent=this.agent,d.perMessageDeflate=this.perMessageDeflate,d.pfx=this.pfx,d.key=this.key,d.passphrase=this.passphrase,d.cert=this.cert,d.ca=this.ca,d.ciphers=this.ciphers,d.rejectUnauthorized=this.rejectUnauthorized),this.extraHeaders&&(d.headers=this.extraHeaders),this.localAddress&&(d.localAddress=this.localAddress);try{this.ws=this.usingBrowserWebSocket&&!this.isReactNative?W?new _W(l,W):new _W(l):new _W(l,W,d)}catch(b){return this.emit("error",b)}this.ws.binaryType===void 0&&(this.supportsBinary=!1),this.ws.supports&&this.ws.supports.binary?(this.supportsBinary=!0,this.ws.binaryType="nodebuffer"):this.ws.binaryType="arraybuffer",this.addEventListeners()}},aV.prototype.addEventListeners=function(){var l=this;this.ws.onopen=function(){l.onOpen()},this.ws.onclose=function(){l.onClose()},this.ws.onmessage=function(W){l.onData(W.data)},this.ws.onerror=function(W){l.onError("websocket error",W)}},aV.prototype.write=function(l){var W=this;this.writable=!1;for(var d=l.length,b=0,t=d;b<t;b++)(function(n){As.encodePacket(n,W.supportsBinary,function(i){if(!W.usingBrowserWebSocket){var h={};if(n.options&&(h.compress=n.options.compress),W.perMessageDeflate){var G=typeof i=="string"?Buffer.byteLength(i):i.length;G<W.perMessageDeflate.threshold&&(h.compress=!1)}}try{W.usingBrowserWebSocket?W.ws.send(i):W.ws.send(i,h)}catch{lX("websocket closed before onclose event")}--d||e()})})(l[b]);function e(){W.emit("flush"),setTimeout(function(){W.writable=!0,W.emit("drain")},0)}},aV.prototype.onClose=function(){dt.prototype.onClose.call(this)},aV.prototype.doClose=function(){typeof this.ws<"u"&&this.ws.close()},aV.prototype.uri=function(){var l=this.query||{},W=this.secure?"wss":"ws",d="";this.port&&(W==="wss"&&Number(this.port)!==443||W==="ws"&&Number(this.port)!==80)&&(d=":"+this.port),this.timestampRequests&&(l[this.timestampParam]=$s()),this.supportsBinary||(l.b64=1),l=_s.encode(l),l.length&&(l="?"+l);var b=this.hostname.indexOf(":")!==-1;return W+"://"+(b?"["+this.hostname+"]":this.hostname)+d+this.path+l},aV.prototype.check=function(){return!!_W&&!("__initialize"in _W&&this.name===aV.prototype.name)};var WX=fa,dX=gs,ZX=Cs,bX=VX;jZ.polling=aX,jZ.websocket=bX;function aX(l){var W,d=!1,b=!1,t=l.jsonp!==!1;if(typeof location<"u"){var e=location.protocol==="https:",n=location.port;n||(n=e?443:80),d=l.hostname!==location.hostname||n!==l.port,b=l.secure!==e}if(l.xdomain=d,l.xscheme=b,W=new WX(l),"open"in W&&!l.forceJSONP)return new dX(l);if(!t)throw new Error("JSONP disabled");return new ZX(l)}var tX=[].indexOf,Jn=function(l,W){if(tX)return l.indexOf(W);for(var d=0;d<l.length;++d)if(l[d]===W)return d;return-1},mX=/^(?:(?![^:@]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,eX=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],nX=function(W){var d=W,b=W.indexOf("["),t=W.indexOf("]");b!=-1&&t!=-1&&(W=W.substring(0,b)+W.substring(b,t).replace(/:/g,";")+W.substring(t,W.length));for(var e=mX.exec(W||""),n={},i=14;i--;)n[eX[i]]=e[i]||"";return b!=-1&&t!=-1&&(n.source=d,n.host=n.host.substring(1,n.host.length-1).replace(/;/g,":"),n.authority=n.authority.replace("[","").replace("]","").replace(/;/g,":"),n.ipv6uri=!0),n.pathNames=cX(n,n.path),n.queryKey=iX(n,n.query),n};function cX(l,W){var d=/\/{2,9}/g,b=W.replace(d,"/").split("/");return(W.substr(0,1)=="/"||W.length===0)&&b.splice(0,1),W.substr(W.length-1,1)=="/"&&b.splice(b.length-1,1),b}function iX(l,W){var d={};return W.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,function(b,t,e){t&&(d[t]=e)}),d}var GX=jZ,pX=Oa,kl=DZ("engine.io-client:socket"),hX=Jn,kn=MW,xn=nX,RX=Id,YX=al;function al(l,W){if(!(this instanceof al))return new al(l,W);W=W||{},l&&typeof l=="object"&&(W=l,l=null),l?(l=xn(l),W.hostname=l.host,W.secure=l.protocol==="https"||l.protocol==="wss",W.port=l.port,l.query&&(W.query=l.query)):W.host&&(W.hostname=xn(W.host).host),this.secure=W.secure!=null?W.secure:typeof location<"u"&&location.protocol==="https:",W.hostname&&!W.port&&(W.port=this.secure?"443":"80"),this.agent=W.agent||!1,this.hostname=W.hostname||(typeof location<"u"?location.hostname:"localhost"),this.port=W.port||(typeof location<"u"&&location.port?location.port:this.secure?443:80),this.query=W.query||{},typeof this.query=="string"&&(this.query=RX.decode(this.query)),this.upgrade=W.upgrade!==!1,this.path=(W.path||"/engine.io").replace(/\/$/,"")+"/",this.forceJSONP=!!W.forceJSONP,this.jsonp=W.jsonp!==!1,this.forceBase64=!!W.forceBase64,this.enablesXDR=!!W.enablesXDR,this.withCredentials=W.withCredentials!==!1,this.timestampParam=W.timestampParam||"t",this.timestampRequests=W.timestampRequests,this.transports=W.transports||["polling","websocket"],this.transportOptions=W.transportOptions||{},this.readyState="",this.writeBuffer=[],this.prevBufferLen=0,this.policyPort=W.policyPort||843,this.rememberUpgrade=W.rememberUpgrade||!1,this.binaryType=null,this.onlyBinaryUpgrades=W.onlyBinaryUpgrades,this.perMessageDeflate=W.perMessageDeflate!==!1?W.perMessageDeflate||{}:!1,this.perMessageDeflate===!0&&(this.perMessageDeflate={}),this.perMessageDeflate&&this.perMessageDeflate.threshold==null&&(this.perMessageDeflate.threshold=1024),this.pfx=W.pfx||null,this.key=W.key||null,this.passphrase=W.passphrase||null,this.cert=W.cert||null,this.ca=W.ca||null,this.ciphers=W.ciphers||null,this.rejectUnauthorized=W.rejectUnauthorized===void 0?!0:W.rejectUnauthorized,this.forceNode=!!W.forceNode,this.isReactNative=typeof navigator<"u"&&typeof navigator.product=="string"&&navigator.product.toLowerCase()==="reactnative",(typeof self>"u"||this.isReactNative)&&(W.extraHeaders&&Object.keys(W.extraHeaders).length>0&&(this.extraHeaders=W.extraHeaders),W.localAddress&&(this.localAddress=W.localAddress)),this.id=null,this.upgrades=null,this.pingInterval=null,this.pingTimeout=null,this.pingIntervalTimer=null,this.pingTimeoutTimer=null,this.open()}al.priorWebsocketSuccess=!1,pX(al.prototype),al.protocol=kn.protocol,al.Socket=al,al.Transport=Aa(),al.transports=jZ,al.parser=MW,al.prototype.createTransport=function(l){kl('creating transport "%s"',l);var W=sX(this.query);W.EIO=kn.protocol,W.transport=l;var d=this.transportOptions[l]||{};this.id&&(W.sid=this.id);var b=new GX[l]({query:W,socket:this,agent:d.agent||this.agent,hostname:d.hostname||this.hostname,port:d.port||this.port,secure:d.secure||this.secure,path:d.path||this.path,forceJSONP:d.forceJSONP||this.forceJSONP,jsonp:d.jsonp||this.jsonp,forceBase64:d.forceBase64||this.forceBase64,enablesXDR:d.enablesXDR||this.enablesXDR,withCredentials:d.withCredentials||this.withCredentials,timestampRequests:d.timestampRequests||this.timestampRequests,timestampParam:d.timestampParam||this.timestampParam,policyPort:d.policyPort||this.policyPort,pfx:d.pfx||this.pfx,key:d.key||this.key,passphrase:d.passphrase||this.passphrase,cert:d.cert||this.cert,ca:d.ca||this.ca,ciphers:d.ciphers||this.ciphers,rejectUnauthorized:d.rejectUnauthorized||this.rejectUnauthorized,perMessageDeflate:d.perMessageDeflate||this.perMessageDeflate,extraHeaders:d.extraHeaders||this.extraHeaders,forceNode:d.forceNode||this.forceNode,localAddress:d.localAddress||this.localAddress,requestTimeout:d.requestTimeout||this.requestTimeout,protocols:d.protocols||void 0,isReactNative:this.isReactNative});return b};function sX(l){var W={};for(var d in l)l.hasOwnProperty(d)&&(W[d]=l[d]);return W}al.prototype.open=function(){var l;if(this.rememberUpgrade&&al.priorWebsocketSuccess&&this.transports.indexOf("websocket")!==-1)l="websocket";else if(this.transports.length===0){var W=this;setTimeout(function(){W.emit("error","No transports available")},0);return}else l=this.transports[0];this.readyState="opening";try{l=this.createTransport(l)}catch{this.transports.shift(),this.open();return}l.open(),this.setTransport(l)},al.prototype.setTransport=function(l){kl("setting transport %s",l.name);var W=this;this.transport&&(kl("clearing existing transport %s",this.transport.name),this.transport.removeAllListeners()),this.transport=l,l.on("drain",function(){W.onDrain()}).on("packet",function(d){W.onPacket(d)}).on("error",function(d){W.onError(d)}).on("close",function(){W.onClose("transport close")})},al.prototype.probe=function(l){kl('probing transport "%s"',l);var W=this.createTransport(l,{probe:1}),d=!1,b=this;al.priorWebsocketSuccess=!1;function t(){if(b.onlyBinaryUpgrades){var s=!this.supportsBinary&&b.transport.supportsBinary;d=d||s}d||(kl('probe transport "%s" opened',l),W.send([{type:"ping",data:"probe"}]),W.once("packet",function(X){if(!d)if(X.type==="pong"&&X.data==="probe"){if(kl('probe transport "%s" pong',l),b.upgrading=!0,b.emit("upgrading",W),!W)return;al.priorWebsocketSuccess=W.name==="websocket",kl('pausing current transport "%s"',b.transport.name),b.transport.pause(function(){d||b.readyState!=="closed"&&(kl("changing transport and sending upgrade packet"),p(),b.setTransport(W),W.send([{type:"upgrade"}]),b.emit("upgrade",W),W=null,b.upgrading=!1,b.flush())})}else{kl('probe transport "%s" failed',l);var o=new Error("probe error");o.transport=W.name,b.emit("upgradeError",o)}}))}function e(){d||(d=!0,p(),W.close(),W=null)}function n(s){var X=new Error("probe error: "+s);X.transport=W.name,e(),kl('probe transport "%s" failed because of error: %s',l,s),b.emit("upgradeError",X)}function i(){n("transport closed")}function h(){n("socket closed")}function G(s){W&&s.name!==W.name&&(kl('"%s" works - aborting "%s"',s.name,W.name),e())}function p(){W.removeListener("open",t),W.removeListener("error",n),W.removeListener("close",i),b.removeListener("close",h),b.removeListener("upgrading",G)}W.once("open",t),W.once("error",n),W.once("close",i),this.once("close",h),this.once("upgrading",G),W.open()},al.prototype.onOpen=function(){if(kl("socket open"),this.readyState="open",al.priorWebsocketSuccess=this.transport.name==="websocket",this.emit("open"),this.flush(),this.readyState==="open"&&this.upgrade&&this.transport.pause){kl("starting upgrade probes");for(var l=0,W=this.upgrades.length;l<W;l++)this.probe(this.upgrades[l])}},al.prototype.onPacket=function(l){if(this.readyState==="opening"||this.readyState==="open"||this.readyState==="closing")switch(kl('socket receive: type "%s", data "%s"',l.type,l.data),this.emit("packet",l),this.emit("heartbeat"),l.type){case"open":this.onHandshake(JSON.parse(l.data));break;case"pong":this.setPing(),this.emit("pong");break;case"error":var W=new Error("server error");W.code=l.data,this.onError(W);break;case"message":this.emit("data",l.data),this.emit("message",l.data);break}else kl('packet received with socket readyState "%s"',this.readyState)},al.prototype.onHandshake=function(l){this.emit("handshake",l),this.id=l.sid,this.transport.query.sid=l.sid,this.upgrades=this.filterUpgrades(l.upgrades),this.pingInterval=l.pingInterval,this.pingTimeout=l.pingTimeout,this.onOpen(),this.readyState!=="closed"&&(this.setPing(),this.removeListener("heartbeat",this.onHeartbeat),this.on("heartbeat",this.onHeartbeat))},al.prototype.onHeartbeat=function(l){clearTimeout(this.pingTimeoutTimer);var W=this;W.pingTimeoutTimer=setTimeout(function(){W.readyState!=="closed"&&W.onClose("ping timeout")},l||W.pingInterval+W.pingTimeout)},al.prototype.setPing=function(){var l=this;clearTimeout(l.pingIntervalTimer),l.pingIntervalTimer=setTimeout(function(){kl("writing ping packet - expecting pong within %sms",l.pingTimeout),l.ping(),l.onHeartbeat(l.pingTimeout)},l.pingInterval)},al.prototype.ping=function(){var l=this;this.sendPacket("ping",function(){l.emit("ping")})},al.prototype.onDrain=function(){this.writeBuffer.splice(0,this.prevBufferLen),this.prevBufferLen=0,this.writeBuffer.length===0?this.emit("drain"):this.flush()},al.prototype.flush=function(){this.readyState!=="closed"&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length&&(kl("flushing %d packets in socket",this.writeBuffer.length),this.transport.send(this.writeBuffer),this.prevBufferLen=this.writeBuffer.length,this.emit("flush"))},al.prototype.write=al.prototype.send=function(l,W,d){return this.sendPacket("message",l,W,d),this},al.prototype.sendPacket=function(l,W,d,b){if(typeof W=="function"&&(b=W,W=void 0),typeof d=="function"&&(b=d,d=null),!(this.readyState==="closing"||this.readyState==="closed")){d=d||{},d.compress=d.compress!==!1;var t={type:l,data:W,options:d};this.emit("packetCreate",t),this.writeBuffer.push(t),b&&this.once("flush",b),this.flush()}},al.prototype.close=function(){if(this.readyState==="opening"||this.readyState==="open"){this.readyState="closing";var l=this;this.writeBuffer.length?this.once("drain",function(){this.upgrading?b():W()}):this.upgrading?b():W()}function W(){l.onClose("forced close"),kl("socket closing - telling transport to close"),l.transport.close()}function d(){l.removeListener("upgrade",d),l.removeListener("upgradeError",d),W()}function b(){l.once("upgrade",d),l.once("upgradeError",d)}return this},al.prototype.onError=function(l){kl("socket error %j",l),al.priorWebsocketSuccess=!1,this.emit("error",l),this.onClose("transport error",l)},al.prototype.onClose=function(l,W){if(this.readyState==="opening"||this.readyState==="open"||this.readyState==="closing"){kl('socket close with reason: "%s"',l);var d=this;clearTimeout(this.pingIntervalTimer),clearTimeout(this.pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),this.readyState="closed",this.id=null,this.emit("close",l,W),d.writeBuffer=[],d.prevBufferLen=0}},al.prototype.filterUpgrades=function(l){for(var W=[],d=0,b=l.length;d<b;d++)~hX(this.transports,l[d])&&W.push(l[d]);return W},Ka.exports=YX,Ka.exports.parser=MW;var XX=Ka.exports,yn={exports:{}},Hn={exports:{}};(function(l){l.exports=W;function W(b){if(b)return d(b)}function d(b){for(var t in W.prototype)b[t]=W.prototype[t];return b}W.prototype.on=W.prototype.addEventListener=function(b,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+b]=this._callbacks["$"+b]||[]).push(t),this},W.prototype.once=function(b,t){function e(){this.off(b,e),t.apply(this,arguments)}return e.fn=t,this.on(b,e),this},W.prototype.off=W.prototype.removeListener=W.prototype.removeAllListeners=W.prototype.removeEventListener=function(b,t){if(this._callbacks=this._callbacks||{},arguments.length==0)return this._callbacks={},this;var e=this._callbacks["$"+b];if(!e)return this;if(arguments.length==1)return delete this._callbacks["$"+b],this;for(var n,i=0;i<e.length;i++)if(n=e[i],n===t||n.fn===t){e.splice(i,1);break}return this},W.prototype.emit=function(b){this._callbacks=this._callbacks||{};var t=[].slice.call(arguments,1),e=this._callbacks["$"+b];if(e){e=e.slice(0);for(var n=0,i=e.length;n<i;++n)e[n].apply(this,t)}return this},W.prototype.listeners=function(b){return this._callbacks=this._callbacks||{},this._callbacks["$"+b]||[]},W.prototype.hasListeners=function(b){return!!this.listeners(b).length}})(Hn);var zn=Hn.exports,oX=uX;function uX(l,W){var d=[];W=W||0;for(var b=W||0;b<l.length;b++)d[b-W]=l[b];return d}var In=NX;function NX(l,W,d){return l.on(W,d),{destroy:function(){l.removeListener(W,d)}}}var En=[].slice,Ln=function(l,W){if(typeof W=="string"&&(W=l[W]),typeof W!="function")throw new Error("bind() requires a function");var d=En.call(arguments,2);return function(){return W.apply(l,d.concat(En.call(arguments)))}},bt={};bt.encode=function(l){var W="";for(var d in l)l.hasOwnProperty(d)&&(W.length&&(W+="&"),W+=encodeURIComponent(d)+"="+encodeURIComponent(l[d]));return W},bt.decode=function(l){for(var W={},d=l.split("&"),b=0,t=d.length;b<t;b++){var e=d[b].split("=");W[decodeURIComponent(e[0])]=decodeURIComponent(e[1])}return W},function(l,W){var d=EZ,b=zn,t=oX,e=In,n=Ln,i=IZ("socket.io-client:socket"),h=bt,G=en;l.exports=X;var p={connect:1,connect_error:1,connect_timeout:1,connecting:1,disconnect:1,error:1,reconnect:1,reconnect_attempt:1,reconnect_failed:1,reconnect_error:1,reconnecting:1,ping:1,pong:1},s=b.prototype.emit;function X(o,r,M){this.io=o,this.nsp=r,this.json=this,this.ids=0,this.acks={},this.receiveBuffer=[],this.sendBuffer=[],this.connected=!1,this.disconnected=!0,this.flags={},M&&M.query&&(this.query=M.query),this.io.autoConnect&&this.open()}b(X.prototype),X.prototype.subEvents=function(){if(!this.subs){var o=this.io;this.subs=[e(o,"open",n(this,"onopen")),e(o,"packet",n(this,"onpacket")),e(o,"close",n(this,"onclose"))]}},X.prototype.open=X.prototype.connect=function(){return this.connected?this:(this.subEvents(),this.io.open(),this.io.readyState==="open"&&this.onopen(),this.emit("connecting"),this)},X.prototype.send=function(){var o=t(arguments);return o.unshift("message"),this.emit.apply(this,o),this},X.prototype.emit=function(o){if(p.hasOwnProperty(o))return s.apply(this,arguments),this;var r=t(arguments),M={type:(this.flags.binary!==void 0?this.flags.binary:G(r))?d.BINARY_EVENT:d.EVENT,data:r};return M.options={},M.options.compress=!this.flags||this.flags.compress!==!1,typeof r[r.length-1]=="function"&&(i("emitting packet with ack id %d",this.ids),this.acks[this.ids]=r.pop(),M.id=this.ids++),this.connected?this.packet(M):this.sendBuffer.push(M),this.flags={},this},X.prototype.packet=function(o){o.nsp=this.nsp,this.io.packet(o)},X.prototype.onopen=function(){if(i("transport is open - connecting"),this.nsp!=="/")if(this.query){var o=typeof this.query=="object"?h.encode(this.query):this.query;i("sending connect packet with query %s",o),this.packet({type:d.CONNECT,query:o})}else this.packet({type:d.CONNECT})},X.prototype.onclose=function(o){i("close (%s)",o),this.connected=!1,this.disconnected=!0,delete this.id,this.emit("disconnect",o)},X.prototype.onpacket=function(o){var r=o.nsp===this.nsp,M=o.type===d.ERROR&&o.nsp==="/";if(!(!r&&!M))switch(o.type){case d.CONNECT:this.onconnect();break;case d.EVENT:this.onevent(o);break;case d.BINARY_EVENT:this.onevent(o);break;case d.ACK:this.onack(o);break;case d.BINARY_ACK:this.onack(o);break;case d.DISCONNECT:this.ondisconnect();break;case d.ERROR:this.emit("error",o.data);break}},X.prototype.onevent=function(o){var r=o.data||[];i("emitting event %j",r),o.id!=null&&(i("attaching ack callback to event"),r.push(this.ack(o.id))),this.connected?s.apply(this,r):this.receiveBuffer.push(r)},X.prototype.ack=function(o){var r=this,M=!1;return function(){if(!M){M=!0;var L=t(arguments);i("sending ack %j",L),r.packet({type:G(L)?d.BINARY_ACK:d.ACK,id:o,data:L})}}},X.prototype.onack=function(o){var r=this.acks[o.id];typeof r=="function"?(i("calling ack %s with %j",o.id,o.data),r.apply(this,o.data),delete this.acks[o.id]):i("bad ack %s",o.id)},X.prototype.onconnect=function(){this.connected=!0,this.disconnected=!1,this.emit("connect"),this.emitBuffered()},X.prototype.emitBuffered=function(){var o;for(o=0;o<this.receiveBuffer.length;o++)s.apply(this,this.receiveBuffer[o]);for(this.receiveBuffer=[],o=0;o<this.sendBuffer.length;o++)this.packet(this.sendBuffer[o]);this.sendBuffer=[]},X.prototype.ondisconnect=function(){i("server disconnect (%s)",this.nsp),this.destroy(),this.onclose("io server disconnect")},X.prototype.destroy=function(){if(this.subs){for(var o=0;o<this.subs.length;o++)this.subs[o].destroy();this.subs=null}this.io.destroy(this)},X.prototype.close=X.prototype.disconnect=function(){return this.connected&&(i("performing disconnect (%s)",this.nsp),this.packet({type:d.DISCONNECT})),this.destroy(),this.connected&&this.onclose("io client disconnect"),this},X.prototype.compress=function(o){return this.flags.compress=o,this},X.prototype.binary=function(o){return this.flags.binary=o,this}}(yn);var wn=yn.exports,FX=qW;function qW(l){l=l||{},this.ms=l.min||100,this.max=l.max||1e4,this.factor=l.factor||2,this.jitter=l.jitter>0&&l.jitter<=1?l.jitter:0,this.attempts=0}qW.prototype.duration=function(){var l=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var W=Math.random(),d=Math.floor(W*this.jitter*l);l=Math.floor(W*10)&1?l+d:l-d}return Math.min(l,this.max)|0},qW.prototype.reset=function(){this.attempts=0},qW.prototype.setMin=function(l){this.ms=l},qW.prototype.setMax=function(l){this.max=l},qW.prototype.setJitter=function(l){this.jitter=l};var UX=XX,SX=wn,MX=zn,TX=EZ,lW=In,$W=Ln,Bl=IZ("socket.io-client:manager"),jn=Jn,rX=FX,Bn=Object.prototype.hasOwnProperty,Kn=ml;function ml(l,W){if(!(this instanceof ml))return new ml(l,W);l&&typeof l=="object"&&(W=l,l=void 0),W=W||{},W.path=W.path||"/socket.io",this.nsps={},this.subs=[],this.opts=W,this.reconnection(W.reconnection!==!1),this.reconnectionAttempts(W.reconnectionAttempts||1/0),this.reconnectionDelay(W.reconnectionDelay||1e3),this.reconnectionDelayMax(W.reconnectionDelayMax||5e3),this.randomizationFactor(W.randomizationFactor||.5),this.backoff=new rX({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(W.timeout==null?2e4:W.timeout),this.readyState="closed",this.uri=l,this.connecting=[],this.lastPing=null,this.encoding=!1,this.packetBuffer=[];var d=W.parser||TX;this.encoder=new d.Encoder,this.decoder=new d.Decoder,this.autoConnect=W.autoConnect!==!1,this.autoConnect&&this.open()}ml.prototype.emitAll=function(){this.emit.apply(this,arguments);for(var l in this.nsps)Bn.call(this.nsps,l)&&this.nsps[l].emit.apply(this.nsps[l],arguments)},ml.prototype.updateSocketIds=function(){for(var l in this.nsps)Bn.call(this.nsps,l)&&(this.nsps[l].id=this.generateId(l))},ml.prototype.generateId=function(l){return(l==="/"?"":l+"#")+this.engine.id},MX(ml.prototype),ml.prototype.reconnection=function(l){return arguments.length?(this._reconnection=!!l,this):this._reconnection},ml.prototype.reconnectionAttempts=function(l){return arguments.length?(this._reconnectionAttempts=l,this):this._reconnectionAttempts},ml.prototype.reconnectionDelay=function(l){return arguments.length?(this._reconnectionDelay=l,this.backoff&&this.backoff.setMin(l),this):this._reconnectionDelay},ml.prototype.randomizationFactor=function(l){return arguments.length?(this._randomizationFactor=l,this.backoff&&this.backoff.setJitter(l),this):this._randomizationFactor},ml.prototype.reconnectionDelayMax=function(l){return arguments.length?(this._reconnectionDelayMax=l,this.backoff&&this.backoff.setMax(l),this):this._reconnectionDelayMax},ml.prototype.timeout=function(l){return arguments.length?(this._timeout=l,this):this._timeout},ml.prototype.maybeReconnectOnOpen=function(){!this.reconnecting&&this._reconnection&&this.backoff.attempts===0&&this.reconnect()},ml.prototype.open=ml.prototype.connect=function(l,W){if(Bl("readyState %s",this.readyState),~this.readyState.indexOf("open"))return this;Bl("opening %s",this.uri),this.engine=UX(this.uri,this.opts);var d=this.engine,b=this;this.readyState="opening",this.skipReconnect=!1;var t=lW(d,"open",function(){b.onopen(),l&&l()}),e=lW(d,"error",function(h){if(Bl("connect_error"),b.cleanup(),b.readyState="closed",b.emitAll("connect_error",h),l){var G=new Error("Connection error");G.data=h,l(G)}else b.maybeReconnectOnOpen()});if(this._timeout!==!1){var n=this._timeout;Bl("connect attempt will timeout after %d",n);var i=setTimeout(function(){Bl("connect attempt timed out after %d",n),t.destroy(),d.close(),d.emit("error","timeout"),b.emitAll("connect_timeout",n)},n);this.subs.push({destroy:function(){clearTimeout(i)}})}return this.subs.push(t),this.subs.push(e),this},ml.prototype.onopen=function(){Bl("open"),this.cleanup(),this.readyState="open",this.emit("open");var l=this.engine;this.subs.push(lW(l,"data",$W(this,"ondata"))),this.subs.push(lW(l,"ping",$W(this,"onping"))),this.subs.push(lW(l,"pong",$W(this,"onpong"))),this.subs.push(lW(l,"error",$W(this,"onerror"))),this.subs.push(lW(l,"close",$W(this,"onclose"))),this.subs.push(lW(this.decoder,"decoded",$W(this,"ondecoded")))},ml.prototype.onping=function(){this.lastPing=new Date,this.emitAll("ping")},ml.prototype.onpong=function(){this.emitAll("pong",new Date-this.lastPing)},ml.prototype.ondata=function(l){this.decoder.add(l)},ml.prototype.ondecoded=function(l){this.emit("packet",l)},ml.prototype.onerror=function(l){Bl("error",l),this.emitAll("error",l)},ml.prototype.socket=function(l,W){var d=this.nsps[l];if(!d){d=new SX(this,l,W),this.nsps[l]=d;var b=this;d.on("connecting",t),d.on("connect",function(){d.id=b.generateId(l)}),this.autoConnect&&t()}function t(){~jn(b.connecting,d)||b.connecting.push(d)}return d},ml.prototype.destroy=function(l){var W=jn(this.connecting,l);~W&&this.connecting.splice(W,1),!this.connecting.length&&this.close()},ml.prototype.packet=function(l){Bl("writing packet %j",l);var W=this;l.query&&l.type===0&&(l.nsp+="?"+l.query),W.encoding?W.packetBuffer.push(l):(W.encoding=!0,this.encoder.encode(l,function(d){for(var b=0;b<d.length;b++)W.engine.write(d[b],l.options);W.encoding=!1,W.processPacketQueue()}))},ml.prototype.processPacketQueue=function(){if(this.packetBuffer.length>0&&!this.encoding){var l=this.packetBuffer.shift();this.packet(l)}},ml.prototype.cleanup=function(){Bl("cleanup");for(var l=this.subs.length,W=0;W<l;W++){var d=this.subs.shift();d.destroy()}this.packetBuffer=[],this.encoding=!1,this.lastPing=null,this.decoder.destroy()},ml.prototype.close=ml.prototype.disconnect=function(){Bl("disconnect"),this.skipReconnect=!0,this.reconnecting=!1,this.readyState==="opening"&&this.cleanup(),this.backoff.reset(),this.readyState="closed",this.engine&&this.engine.close()},ml.prototype.onclose=function(l){Bl("onclose"),this.cleanup(),this.backoff.reset(),this.readyState="closed",this.emit("close",l),this._reconnection&&!this.skipReconnect&&this.reconnect()},ml.prototype.reconnect=function(){if(this.reconnecting||this.skipReconnect)return this;var l=this;if(this.backoff.attempts>=this._reconnectionAttempts)Bl("reconnect failed"),this.backoff.reset(),this.emitAll("reconnect_failed"),this.reconnecting=!1;else{var W=this.backoff.duration();Bl("will wait %dms before reconnect attempt",W),this.reconnecting=!0;var d=setTimeout(function(){l.skipReconnect||(Bl("attempting reconnect"),l.emitAll("reconnect_attempt",l.backoff.attempts),l.emitAll("reconnecting",l.backoff.attempts),!l.skipReconnect&&l.open(function(b){b?(Bl("reconnect attempt error"),l.reconnecting=!1,l.reconnect(),l.emitAll("reconnect_error",b.data)):(Bl("reconnect success"),l.onreconnect())}))},W);this.subs.push({destroy:function(){clearTimeout(d)}})}},ml.prototype.onreconnect=function(){var l=this.backoff.attempts;this.reconnecting=!1,this.backoff.reset(),this.updateSocketIds(),this.emitAll("reconnect",l)},function(l,W){var d=CY,b=EZ,t=Kn,e=IZ("socket.io-client");l.exports=W=i;var n=W.managers={};function i(h,G){typeof h=="object"&&(G=h,h=void 0),G=G||{};var p=d(h),s=p.source,X=p.id,o=p.path,r=n[X]&&o in n[X].nsps,M=G.forceNew||G["force new connection"]||G.multiplex===!1||r,L;return M?(e("ignoring socket cache for %s",s),L=t(s,G)):(n[X]||(e("new io instance for %s",s),n[X]=t(s,G)),L=n[X]),p.query&&!G.query&&(G.query=p.query),L.socket(p.path,G)}W.protocol=b.protocol,W.connect=i,W.Manager=Kn,W.Socket=wn}(ya,ya.exports);var JX=ya.exports;const kX=_e(JX);class xX{constructor(W){this.isConnected=!1,this.folderName="",this.callback=W,this.name=""}connect(W){if(this.isConnected)return;this.isConnected=!0;const d=kX("https://www.virtualott.com",{reconnect:!0});d.on("connect",()=>{d.emit("setinfo",{device:LW.getDeviceName()},b=>{this.name=b.name,d.emit("join",W,t=>{il(`join ${W} room`,{}),this.callback("join",t)})})}),d.on("error",b=>{Ml(`socket error::${b}`)}),d.on("disconnect",b=>{Ml(`disconnect from signaling::${b}`)}),d.on("messageroom",b=>{this.callback("messageroom",b),il(`messageroom: ${b}`)}),d.on("ads",b=>{this.callback("ads",b),il(`ads: ${b}`)})}}class vn{constructor(W,d){let b=[];const t=new xX((e,n)=>{switch(e){case"roommembers":BBLog("roommembers message: ",n);break;case"join":const i=document.getElementById("name");i&&(i.textContent=t.name);break;case"messageroom":if(n.player===t.name)if(n.url){const h="#external";window.BB.RENDER_IN_WORKER?W.addAdvertisement({name:h,path:n.url,isSelected:!0}):W.addAdvertisement(h,n.url,()=>{W.selectAd(h)})}else b=n.ads,b.length&&W.selectAd(b[0]);break;case"ads":b=n,b.length&&W.selectAd(b[0]);break}});t.connect(d.augmentation.channelName),d.augmentation.logoURL?window.BB.RENDER_IN_WORKER?W.addAdvertisement({name:"#ad",path:d.augmentation.logoURL,isSelected:!1}):W.addAdvertisement("#ad",d.augmentation.logoURL):fetch("https://www.virtualott.com/ads/"+d.augmentation.channelName).then(async e=>{(await e.json()).forEach(i=>{window.BB.RENDER_IN_WORKER?W.addAdvertisement({name:`#${i.name}`,path:i.url,isSelected:!0}):W.addAdvertisement(`#${i.name}`,i.url)})})}}class yX{constructor(W,d){O(this,"composer",null);O(this,"ctxGl",null);O(this,"firstFrameTimecode",[0,0,0,0,0]);O(this,"countVid",0);O(this,"lastVidDateTime",0);O(this,"lastCalled","");O(this,"frameNumberToRender",0);O(this,"lastOffset",0);O(this,"lastOffsetShown");O(this,"countOfCorrectionsInRow",0);O(this,"deltaVidDeltaArray",[]);O(this,"deltaVidDeltaArrayCapacity",20);O(this,"countANI",0);O(this,"aniDelltaTimeArray",[]);O(this,"aniDelltaTimeArrayCapacity",60);O(this,"lastAniNow",0);O(this,"vidFiredTime",0);O(this,"correction",!1);O(this,"prevFraction",.99);O(this,"lastDblFrame",0);O(this,"lastRealFrame",0);O(this,"lastNow",0);O(this,"renderOnNextFrame",-1);O(this,"countAppleANI",0);O(this,"initializeComponents",()=>{window.BB.RENDER_IN_WORKER?this.initializeComponents_Worker():this.initializeComponents_MainThread(),this.elementToForceRender=document.getElementById("elementToForceRender")});O(this,"initializeComponents_MainThread",()=>{let W=this.video.parentElement;this.composer=new zY(this.options,W),this.ads=new vn(this.composer,this.options)});O(this,"initializeComponents_Worker",()=>{let W=this.video.parentElement;W.offsetTop,W.offsetLeft,this.canvas.style.top=0,this.canvas.style.left=0;var d=this.doCalculateBlackBars(this.video);if(this.video.readyState>=1){var d=this.doCalculateBlackBars(this.video);this.canvas.style.top=Math.round(d.top)+"px",this.canvas.style.left=Math.round(d.left)+"px"}else this.video.addEventListener("loadedmetadata",()=>{var e=this.doCalculateBlackBars(this.video);this.canvas.style.top=Math.round(e.top)+"px",this.canvas.style.left=Math.round(e.left)+"px"});this.canvas.style.width="100%",this.canvas.style.zIndex=1e5,this.canvas.width=W.clientWidth,this.canvas.height=W.clientHeight,this.canvas.style.position="absolute",this.elementToForceRender=document.createElement("span"),this.elementToForceRender.id="elementToForceRender",this.canvas.appendChild(this.elementToForceRender);let b=W.getElementsByTagName("video")[0],t=b.nextSibling;t?W.insertBefore(this.canvas,t):W.appendChild(this.canvas),this.canvas.style["pointer-events"]="none",this.composer=new LY(this.canvas,this.options),b.addEventListener("click",e=>{var n=this.canvas.getBoundingClientRect();this.composer.onUserClickOnCanvas(e.clientX,e.clientY,n)}),this.ads=new vn(this.composer,this.options)});O(this,"getCanvas",()=>{var W;return(W=this.composer)==null?void 0:W.getCanvas()});if(this.options=d,this.video=W,this.onFrameVideoChromeMac=this.onFrameVideoChromeMac.bind(this),this.onFrameVideoChromeWin=this.onFrameVideoChromeWin.bind(this),this.onAnimatedFrameSafari=this.onAnimatedFrameSafari.bind(this),this.onAnimatedFrameChromeWin=this.onAnimatedFrameChromeWin.bind(this),this.onAnimatedFrameChromeMac=this.onAnimatedFrameChromeMac.bind(this),this.calculateBlackBars=this.calculateBlackBars.bind(this),d.renderingMode==DW.Augment)if(window.BB.RENDER_IN_WORKER)this.canvas=document.createElement("canvas");else{let b=document.createElement("canvas");b.width=500,b.height=500,document.body.appendChild(b),this.ctxGl=b.getContext("webgl")}this.lastVideoFrameRenderedInGL=-1,this.lastCorrection=!1,this.sourceFPS=6e4/1001,il("Start Work",{}),window&&window.requestAnimationFrame&&W&&W.requestVideoFrameCallback?il("This script is running in a browser environment."):Ml("This script is running NOT in a browser environment.",{}),window.addEventListener("resize",()=>{this.calculateBlackBars(W)}),LW.isSafariMac()?(d.debug&&(document.getElementById("numberInput").value=2),window.BB.RENDER_IN_WORKER=!1,window.requestAnimationFrame(this.onAnimatedFrameSafari)):LW.isChromeMac()?(d.debug&&document.getElementById("numberInput")&&(document.getElementById("numberInput").value=1),window.BB.RENDER_IN_WORKER=!0,window.requestAnimationFrame(this.onAnimatedFrameChromeMac),W.readyState>=1?(il("video element is already loaded. Setting up requestVideoFrameCallback"),W.requestVideoFrameCallback(this.onFrameVideoChromeMac)):(il("video element is not yet loaded. Setting up loadedmetadata event to wait until it's loaded. video.readyState="+W.readyState),W.addEventListener("loadedmetadata",()=>{il("now video element is loaded in loadedmetadata event. Setting up requestVideoFrameCallback"),W.requestVideoFrameCallback(this.onFrameVideoChromeMac)}))):Ml("Platform not supported yet"),window.addEventListener("resize",()=>{this.calculateBlackBars(W)})}processTimedMetadata(W,d){let b="";if(W&&W.includes("www.mediakind.com/NTC")){const t=W.replace(/.*NTC./,"");let e=0;for(;e+8<=t.length;){const n=t.substring(e,e+4),i=((t.charCodeAt(e+4)*256+t.charCodeAt(e+5))*256+t.charCodeAt(e+6))*256+t.charCodeAt(e+7);if(e+8+i>t.length)break;const h=t.substring(e+8,e+8+i);n=="utc_"&&new Date(parseInt(h)).getTime()/1e3,n=="tc__"&&(this.tcTimeStamp=new Date(parseInt(h)).getTime()),n==="offs"&&(this.timecode_offset=parseInt(h)/90,this.options.debug&&il("We are HERE:TimeCode",this.timecode_offset)),e+=8+i}}return b}onNewMetadata(W){if(W&&W.metadata&&W.metadata.id==0||LW.isSafariMac()){if(W.metadata.messageData)W.metadata.messageData=this.processTimedMetadata(W.metadata.messageData,W.metadata.presentationTime);else if(W.metadata.frames&&W.metadata.frames.length&&W.metadata.frames[0].key&&W.metadata.frames[0].key.toLowerCase()==="priv"){const d=W.metadata.frames.filter(b=>b.info&&b.info.toLowerCase().includes("ntc"));if(d.length){const b=`${d[d.length-1].info}\0${String.fromCharCode(...d[d.length-1].data)}`;W.metadata.messageData=this.processTimedMetadata(b,W.metadata.presentationTime)}}if(W.metadata.id==0||LW.isSafariMac()&&this.timecode_offset==0){W.metadata.presentationTime*1e3;const d=new Date(this.tcTimeStamp-this.timecode_offset);let b=Math.round(d.getUTCMilliseconds()*30*2/1001)/2;const t=b%1;let e=1;t==.5&&(b=Math.floor(b),e=2),this.firstFrameTimecode=[d.getUTCHours(),d.getUTCMinutes(),d.getUTCSeconds(),Math.floor(b),e==1?0:1]}}}onNewSegmentForMetadata(W){if(typeof globalConfig<"u"&&typeof globalConfig.MKsync<"u"&&globalConfig.MKsync=="no")return;let d={frame:0,playerTime:0};d.frame=jm(this.firstFrameTimecode,6e4/1001),d.stringTime=Xl(this.firstFrameTimecode,!0,!0),il("New segment ("+W.url+"): "+d.stringTime+" ("+d.frame+") playing at "+W.playbackTime),d.playerTime=W.playbackTime,this.options.syncPoint=d,W.mimeType.includes("video")&&il("url: "+W.url)}onNewSegment(W){if(W.eventType===wmcEvents.AMC_EVENT_PLAYER_SEGMENT_PLAYBACK){let d={frame:0,playerTime:0};il(`New segment (${W.url}): ${Km(W.dateTime,6e4/1001)} playing at ${W.playbackTime}`),d.frame=jm(vm(W.dateTime),fps),d.stringTime=Km(W.dateTime,6e4/1001),d.playerTime=W.playbackTime,this.options.syncPoint=d}}render(W,d){var h;let b=!1;const t=this.options;if(t.debug){var e=document.getElementById("doNotRenderAugmentationCheckbox");b=e.checked}if(b)return 0;const n=performance.now();return this.lastVideoFrameRenderedInGL==W&&d==this.lastCorrection?(t.debug&&console.log("render(): lastVideoFrameRenderedInGL==currentFrame: "+W),0):!t.enabled||t.stopAugment?(this.composer.cleanGL(),0):t.stopAugmentFor>0?((h=this.composer)==null||h.cleanGL(),t.stopAugmentFor-=1/t.hls_fps,0):(t.renderingMode==DW.RenderDigits?renderDigit(this.ctxGl,W):t.renderingMode==DW.RenderTimecode?this.sourceFPS==6e4/1001||this.sourceFPS==60?renderTimecode(this.ctxGl,hl(W,sourceFPS,!0),!0):(this.sourceFPS==3e4/1001||this.sourceFPS==30)&&renderTimecode(this.ctxGl,hl(W,this.sourceFPS,!1),!1):t.renderingMode==DW.Augment&&this.composer&&(this.sourceFPS==6e4/1001||sourceFPS==60?this.composer.renderAugmentation(Xl(hl(W,this.sourceFPS,!0))):(this.sourceFPS==3e4/1001||this.sourceFPS==30)&&(d?this.composer.renderAugmentation(Xl(hl(W*2+1,this.sourceFPS*2,!0),!0)):this.composer.renderAugmentation(Xl(hl(W,this.sourceFPS,!1),!1)))),this.lastVideoFrameRenderedInGL=W,this.lastCorrection=d,performance.now()-n)}addNumberToVidDeltaArray(W){this.deltaVidDeltaArray.push(W),this.deltaVidDeltaArray.length>this.deltaVidDeltaArrayCapacity&&this.deltaVidDeltaArray.shift();const b=this.deltaVidDeltaArray.reduce((i,h)=>i+h,0)/this.deltaVidDeltaArray.length,t=this.deltaVidDeltaArray.filter(i=>Math.abs(i-b)<=b*.2);return t.reduce((i,h)=>i+h,0)/t.length||b}onFrameVideoChromeMac(W,d){var k,B;const b=this.options;if(this.lastCalled="VID",b.hls_fps!=6e4/1001&&b.hls_fps!=3e4/1001){b.stopAugmentFor=3,this.countVid%60==0&&SW(`Unsupported FPS: options.hls_fps = ${b.hls_fps}. Stopping augmentation for 3 sec`,{timestamp:W,fps:b.hls_fps}),this.video.requestVideoFrameCallback(this.onFrameVideoChromeMac);return}var t=(d.mediaTime-b.syncPoint.playerTime)%(60*60*24)*(6e4/1001),e=d.mediaTime-b.syncPoint.playerTime;let n=Math.floor(t+.1)+b.syncPoint.frame,i=Date.now()-this.lastVidDateTime;var h=1e3/this.addNumberToVidDeltaArray(i);if(b.debug){h>25&&h<35&&(n+=1);var G=document.getElementById("numberInput").value,p=parseInt(G);n+=p}else h>25&&h<35?n+=2:n+=1;let s=document.getElementById("debugText2");var X="";X=Xl(hl(n,this.sourceFPS,!0),!0,!0);var o="";b.augmentation.offset<0?(o+="-",o+=Xl(hl(-1*b.augmentation.offset,this.sourceFPS,!0),!0,!0)):o+=Xl(hl(b.augmentation.offset,this.sourceFPS,!0),!0,!0);let r=n-b.augmentation.offset;r<0&&(r+=5178816),r>=5178816&&(r-=5178816),(k=this.composer)==null||k.setLastFrame(r);var M="";M=Xl(hl(r,this.sourceFPS,!0),!0,!0);let L=new Date,J=String(L.getHours()).padStart(2,"0"),w=String(L.getMinutes()).padStart(2,"0"),K=String(L.getSeconds()).padStart(2,"0"),x=String(L.getMilliseconds()).padStart(3,"0"),z=`${J}:${w}:${K}.${x}`;if(b.debug){var I="black";if(b.augmentation.offset!=this.lastOffset||this.lastOffsetShown<10*60)var I="red";s.innerHTML="VID. "+this.countVid+" Game: "+b.gameId+", Time Fired: "+z+", PlayerTime:"+d.mediaTime.toFixed(4)+", dblFrame: "+t.toFixed(4)+", Stream Time-Code: "+X+", offset: <span style='color:"+I+"'>"+b.augmentation.offset+"("+o+")</span> </br> </br><span style='font-size: 30px;'>, Brain Time-Code: "+M+"( "+r+" )</span> </br> </br>, expectedDisplayTime: "+d.expectedDisplayTime.toFixed(4)+", presentationTime: "+d.presentationTime.toFixed(4)+", presentationTime-expectedDisplayTime: "+(d.presentationTime-d.expectedDisplayTime).toFixed(4)+", expectedDisplayTime-now: "+(d.expectedDisplayTime-W).toFixed(4)+", TimeFromLastSync:"+e.toFixed(4)+", LastSyncPointTime:"+b.syncPoint.playerTime.toFixed(4)+", LastSyncPointFrame:"+b.syncPoint.frame+", LastSyncPoint:"+b.syncPoint.stringTime+" </br>",b.augmentation.offset!=this.lastOffset&&(this.lastOffsetShown=0),this.lastOffset=b.augmentation.offset,this.lastOffsetShown++}if(this.countVid++,this.lastVidDateTime=Date.now(),h>50&&h<70)this.render(r,!1);else if(h>25&&h<35){const C=A=>{let Vl=document.getElementById("debugText");Vl!=null&&(Vl.innerHTML="Rendering now "+A),this.render(A,!1)};d.expectedDisplayTime-W>5?setTimeout(C,20,r):setTimeout(C,5,r)}else(B=this.composer)==null||B.cleanGL(),this.countVid%60==0&&Ml("video FPS is "+h.toFixed(4)+". is not supported yet.");this.video.requestVideoFrameCallback(this.onFrameVideoChromeMac)}onFrameVideoChromeWin(W,d){var I;if(b.hls_fps!=6e4/1001&&b.hls_fps!=3e4/1001){b.stopAugmentFor=3,this.countVid%60==0&&SW(`Unsupported FPS: options.hls_fps = ${b.hls_fps}. Stopping augmentation foe 3 sec`,{timestamp:W,fps:b.hls_fps}),video.requestVideoFrameCallback(onFrameVideoChromeWin);return}Date.now()-lastVidDateTime,lastVidDateTime=Date.now();const b=this.options;if(this.lastCalled=="ANI2"&&b.hls_fps==6e4/1001){b.debug&&il("This videoCallback can be incorrect. This time doing stuff in requestAnimation frame"),this.video.requestVideoFrameCallback(this.onFrameVideoChromeWin);return}b.hls_fps==3e4/1001?this.lastCalled=="ANI3"&&this.countOfCorrectionsInRow<=0?(this.lastCalled="ANI",this.countOfCorrectionsInRow++):(this.lastCalled="VID",this.countOfCorrectionsInRow=0):this.lastCalled="VID";var t=(d.mediaTime-b.syncPoint.playerTime)%(60*60*24)*(6e4/1001),e=d.mediaTime-b.syncPoint.playerTime;let n=Math.floor(t+.1)+b.syncPoint.frame;if(b.debug){var i=document.getElementById("numberInput").value,h=parseInt(i);n+=h}else n+=1;lastMediaTime=d.mediaTime;let G=document.getElementById("debugText2");var p="";p=Xl(hl(n,this.sourceFPS,!0),!0,!0);var s="";b.augmentation.offset<0?(s+="-",s+=Xl(hl(-1*b.augmentation.offset,this.sourceFPS,!0),!0,!0)):s+=Xl(hl(b.augmentation.offset,this.sourceFPS,!0),!0,!0);let X=n-b.augmentation.offset;X<0&&(X+=5178816),X>=5178816&&(X-=5178816),(I=this.composer)==null||I.setLastFrame(X);var o="";o=Xl(hl(X,this.sourceFPS,!0),!0,!0);let r=new Date,M=String(r.getHours()).padStart(2,"0"),L=String(r.getMinutes()).padStart(2,"0"),J=String(r.getSeconds()).padStart(2,"0"),w=String(r.getMilliseconds()).padStart(3,"0"),K=`${M}:${L}:${J}.${w}`;if(b.debug){var x="black";if(b.augmentation.offset!=this.lastOffset||this.lastOffsetShown<10*60)var x="red";G.innerHTML="VID. "+this.countVid+" Game: "+b.gameId+", Time Fired: "+K+", PlayerTime:"+d.mediaTime.toFixed(4)+", dblFrame: "+t.toFixed(4)+", Stream Time-Code: "+p+", offset: <span style='color:"+x+"'>"+b.augmentation.offset+"("+s+")</span> </br> </br><span style='font-size: 30px;'>, Brain Time-Code: "+o+"( "+X+" )</span> </br> </br>, expectedDisplayTime: "+d.expectedDisplayTime.toFixed(4)+", presentationTime: "+d.presentationTime.toFixed(4)+", presentationTime-expectedDisplayTime: "+(d.presentationTime-d.expectedDisplayTime).toFixed(4)+", expectedDisplayTime-now: "+(d.expectedDisplayTime-W).toFixed(4)+", TimeFromLastSync:"+e.toFixed(4)+", LastSyncPointTime:"+b.syncPoint.playerTime.toFixed(4)+", LastSyncPointFrame:"+b.syncPoint.frame+", LastSyncPoint:"+b.syncPoint.stringTime+" </br>",b.augmentation.offset!=this.lastOffset&&(this.lastOffsetShown=0),this.lastOffset=b.augmentation.offset,this.lastOffsetShown++}if(this.countVid++,b.debug){var z=document.getElementById("plus05CorrectionCheckbox");z.checked}b.hls_fps==3e4/1001?this.renderOnNextFrame=X:renderingDuration=this.render(X,!1),this.video.requestVideoFrameCallback(this.onFrameVideoChromeWin)}addNumberToAniDeltaArray(W){this.aniDelltaTimeArray.push(W),this.aniDelltaTimeArray.length>this.aniDelltaTimeArrayCapacity&&this.aniDelltaTimeArray.shift();const b=this.aniDelltaTimeArray.reduce((i,h)=>i+h,0)/this.aniDelltaTimeArray.length,t=this.aniDelltaTimeArray.filter(i=>Math.abs(i-b)<=b*.2);return t.length<this.aniDelltaTimeArrayCapacity*85/100?-1:t.reduce((i,h)=>i+h,0)/t.length}onAnimatedFrameChromeWin(W){this.countANI++;let d=performance.now();var b=d-this.lastAniNow;this.lastAniNow=d;const t=this.options;var e=1e3/this.addNumberToAniDeltaArray(b);if(e==-1e3?(t.stopAugmentFor=3,Ml("Experience difficulties with overloading: (not consistant Calls of requestAnimatedFrame). Stopping augmentation."),console.log(aniDelltaTimeArray)):Math.abs(e-60)>5&&(t.stopAugmentFor=3,Ml("Unsupported FPS: "+e)),!t.debug){let r=document.getElementById("forceUpdate");r!=null&&(r.innerHTML=this.countANI),window.requestAnimationFrame(this.onAnimatedFrameChromeWin);return}let n=String(d.getHours()).padStart(2,"0"),i=String(d.getMinutes()).padStart(2,"0"),h=String(d.getSeconds()).padStart(2,"0"),G=String(d.getMilliseconds()).padStart(3,"0"),p=`${n}:${i}:${h}.${G}`;if(this.video.paused){window.requestAnimationFrame(this.onAnimatedFrameChromeWin);return}let s=document.getElementById("debugText");if(t.debug&&(s.innerHTML="ANI. "+this.countANI+" Time Fired: "+p),t.hls_fps==3e4/1001){s.innerHTML+="VideoTime: "+this.video.currentTime.toFixed(4),this.lastCalled=="VID"?(s.innerHTML+=" rendering on the current frame ",this.render(this.renderOnNextFrame,!1),this.lastCalled="ANI"):this.lastCalled=="ANI"?this.lastCalled="ANI2":this.lastCalled=="ANI2"&&(s.innerHTML+=" extra call. Correcting ",this.render(this.renderOnNextFrame+2,!1),lastCalled="ANI3"),s.innerHTML+="stage:"+this.lastCalled,window.requestAnimationFrame(this.onAnimatedFrameChromeWin);return}else if(t.hls_fps==6e4/1001)if(this.lastCalled=="ANI"||this.lastCalled=="ANI2"){var X="";X=Xl(hl(this.lastVideoFrameRenderedInGL+1,this.sourceFPS,!0),!0,!0);var o="";t.augmentation.offset<0?(o+="-",o+=Xl(hl(-1*t.augmentation.offset,this.sourceFPS,!0),!0,!0)):o+=Xl(hl(t.augmentation.offset,this.sourceFPS,!0),!0,!0);let r=this.lastVideoFrameRenderedInGL-t.augmentation.offset;r<0&&(r+=5178816),r>=5178816&&(r-=5178816),Xl(hl(r,this.sourceFPS,!0),!0,!0),t.debug&&(console.log("Probable videoFrameCallback was not fired. Apllying correction mechanism ("+X+"), stage: "+lastCalled),s.innerHTML+=" correction"),this.render(this.lastVideoFrameRenderedInGL+1,!1),this.lastCalled=="ANI"?this.lastCalled="ANI2":this.lastCalled=="ANI2"&&(this.lastCalled="ANI")}else this.lastCalled="ANI";else SW("Unsupported FPS: options.hls_fps = "+t.hls_fps);window.requestAnimationFrame(this.onAnimatedFrameChromeWin)}onAnimatedFrameChromeMac(){const W=this.elementToForceRender.cloneNode(!0);this.elementToForceRender.replaceWith(W),this.elementToForceRender=W,this.countAppleANI++;let d,b=Xl(hl(this.frameNumberToRender,this.sourceFPS,!0),!0,!0);this.options.debug&&(d=document.getElementById("debugText"),d&&(d.innerHTML=this.countAppleANI)),this.options.hls_fps==6e4/1001&&(this.lastCalled=="VID"?(this.lastCalled="ANI",this.options.debug&&(d.innerHTML="ANI: "+this.countAppleANI+" Stage: "+this.lastCalled+" rendering now")):this.lastCalled=="ANI"?(this.lastCalled="ANI2",this.options.debug&&(d.innerHTML="ANI: "+this.countAppleANI+" Stage: "+this.lastCalled+" correction",this.render(this.lastVideoFrameRenderedInGL+1,!1))):this.lastCalled=="ANI2"&&(this.lastCalled="ANI3",this.options.debug&&(d.innerHTML="ANI: "+this.countAppleANI+" Stage: "+this.lastCalled+" TimeCode: "+b+" extra call"))),window.requestAnimationFrame(this.onAnimatedFrameChromeMac)}onAnimatedFrameSafari(W){var B;this.countANI++;let d=new Date;const b=this.options;var t=performance.now(),e=t-this.lastNow;this.lastNow=t;var n=1e3/this.addNumberToAniDeltaArray(e);n==-1e3?(b.stopAugmentFor=3,this.countANI%60==0&&(SW("Experience difficulties with overloading: (not consistant Calls of requestAnimatedFrame). Stopping augmentation.",{timestamp:W}),console.log(this.aniDelltaTimeArray))):Math.abs(n-60)>5&&(b.stopAugmentFor=3,Ml("Unsupported screen FPS: "+n));let i=String(d.getHours()).padStart(2,"0"),h=String(d.getMinutes()).padStart(2,"0"),G=String(d.getSeconds()).padStart(2,"0"),p=String(d.getMilliseconds()).padStart(3,"0"),s=`${i}:${h}:${G}.${p}`;var X=2;let o;if(b.debug){o=document.getElementById("debugText");var r=document.getElementById("numberInput").value;X=parseInt(r)}var M=0,L=(this.video.currentTime-b.syncPoint.playerTime)%(60*60*24)*6e4/1001;M=Math.floor(L)+b.syncPoint.frame;var J=!1;M-this.lastRealFrame==2&&L-this.lastDblFrame<1.5&&(this.lastRealFrame=M,M--,J=!0),J?this.lastRealFrame=M+1:this.lastRealFrame=M,this.lastDblFrame=L,M+=X;var w=L-Math.floor(L);(this.correction||w<.226&&this.prevFraction<.226)&&(this.correction=!0),w>.8&&(this.correction=!1),this.prevFraction=w,this.correction&&M--;var K="";K=Xl(hl(M,this.sourceFPS,!0),!0,!0);var x="";b.augmentation.offset<0?(x+="-",x+=Xl(hl(-1*b.augmentation.offset,this.sourceFPS,!0),!0,!0)):x+=Xl(hl(b.augmentation.offset,this.sourceFPS,!0),!0,!0);let z=M-b.augmentation.offset;z<0&&(z+=5178816),z>=5178816&&(z-=5178816);var I="";if(I=Xl(hl(z,this.sourceFPS,!0),!0,!0),b.debug){var k="black";if(b.augmentation.offset!=this.lastOffset||this.lastOffsetShown<10*60)var k="red";o.innerHTML=" countAppleANI: "+this.countAppleANI+", Time Fired: "+s+", delta: "+e.toFixed(0)+", screenFPS: "+n.toFixed(4)+", dblFrame: "+L.toFixed(4)+", ANI-VID: "+(d-this.vidFiredTime)+", Game: "+b.gameId+", stremTime: "+K+"( "+M+" ), offset: <span style='color:"+k+"'>"+b.augmentation.offset+"("+x+")</span> </br> </br><span style='font-size: 30px;'>, resultTime: "+I+"("+z+")</span> </br> </br>, LastSyncPointTime:"+b.syncPoint.playerTime.toFixed(4)+", LastSyncPointFrame:"+b.syncPoint.frame+", LastSyncPoint:"+b.syncPoint.stringTime+", correction: "+this.correction+", correction2FrameJump: "+J}(B=this.composer)==null||B.setLastFrame(z),this.render(z),this.countAppleANI++,window.requestAnimationFrame(this.onAnimatedFrameSafari)}doCalculateBlackBars(W){var d=parseInt(window.getComputedStyle(W).getPropertyValue("width"),10),b=parseInt(window.getComputedStyle(W).getPropertyValue("height"),10),t=W.videoWidth,e=W.videoHeight,n=d/b,i=t/e,h={top:0,bottom:0,left:0,right:0};if(n>i){var G=b*i;h.left=(d-G)/2,h.right=h.left}else if(n<i){var p=d/i;h.top=(b-p)/2,h.bottom=h.top}return h}calculateBlackBars(W){const d=this.getCanvas();if(d){var b=this.doCalculateBlackBars(W);return d.style.top=Math.round(b.top)+"px",d.style.left=Math.round(b.left)+"px",b}}}const HX={OnNewSegment:Symbol("OnNewSegment"),OnMetadata:Symbol("OnMetadata"),None:Symbol("None")};function zX(){this.__data__=[],this.size=0}var IX=zX;function EX(l,W){return l===W||l!==l&&W!==W}var AZ=EX,LX=AZ;function wX(l,W){for(var d=l.length;d--;)if(LX(l[d][0],W))return d;return-1}var _Z=wX,jX=_Z,BX=Array.prototype,KX=BX.splice;function vX(l){var W=this.__data__,d=jX(W,l);if(d<0)return!1;var b=W.length-1;return d==b?W.pop():KX.call(W,d,1),--this.size,!0}var gX=vX,fX=_Z;function CX(l){var W=this.__data__,d=fX(W,l);return d<0?void 0:W[d][1]}var QX=CX,DX=_Z;function OX(l){return DX(this.__data__,l)>-1}var PX=OX,AX=_Z;function _X(l,W){var d=this.__data__,b=AX(d,l);return b<0?(++this.size,d.push([l,W])):d[b][1]=W,this}var qX=_X,$X=IX,l0=gX,V0=QX,W0=PX,d0=qX;function ld(l){var W=-1,d=l==null?0:l.length;for(this.clear();++W<d;){var b=l[W];this.set(b[0],b[1])}}ld.prototype.clear=$X,ld.prototype.delete=l0,ld.prototype.get=V0,ld.prototype.has=W0,ld.prototype.set=d0;var qZ=ld,Z0=qZ;function b0(){this.__data__=new Z0,this.size=0}var a0=b0;function t0(l){var W=this.__data__,d=W.delete(l);return this.size=W.size,d}var m0=t0;function e0(l){return this.__data__.get(l)}var n0=e0;function c0(l){return this.__data__.has(l)}var i0=c0,G0=typeof IV=="object"&&IV&&IV.Object===Object&&IV,gn=G0,p0=gn,h0=typeof self=="object"&&self&&self.Object===Object&&self,R0=p0||h0||Function("return this")(),Vd=R0,Y0=Vd,s0=Y0.Symbol,fn=s0,Cn=fn,Qn=Object.prototype,X0=Qn.hasOwnProperty,o0=Qn.toString,Bd=Cn?Cn.toStringTag:void 0;function u0(l){var W=X0.call(l,Bd),d=l[Bd];try{l[Bd]=void 0;var b=!0}catch{}var t=o0.call(l);return b&&(W?l[Bd]=d:delete l[Bd]),t}var N0=u0,F0=Object.prototype,U0=F0.toString;function S0(l){return U0.call(l)}var M0=S0,Dn=fn,T0=N0,r0=M0,J0="[object Null]",k0="[object Undefined]",On=Dn?Dn.toStringTag:void 0;function x0(l){return l==null?l===void 0?k0:J0:On&&On in Object(l)?T0(l):r0(l)}var $Z=x0;function y0(l){var W=typeof l;return l!=null&&(W=="object"||W=="function")}var TW=y0,H0=$Z,z0=TW,I0="[object AsyncFunction]",E0="[object Function]",L0="[object GeneratorFunction]",w0="[object Proxy]";function j0(l){if(!z0(l))return!1;var W=H0(l);return W==E0||W==L0||W==I0||W==w0}var at=j0,B0=Vd,K0=B0["__core-js_shared__"],v0=K0,tt=v0,Pn=function(){var l=/[^.]+$/.exec(tt&&tt.keys&&tt.keys.IE_PROTO||"");return l?"Symbol(src)_1."+l:""}();function g0(l){return!!Pn&&Pn in l}var f0=g0,C0=Function.prototype,Q0=C0.toString;function D0(l){if(l!=null){try{return Q0.call(l)}catch{}try{return l+""}catch{}}return""}var O0=D0,P0=at,A0=f0,_0=TW,q0=O0,$0=/[\\^$.*+?()[\]{}|]/g,lo=/^\[object .+?Constructor\]$/,Vo=Function.prototype,Wo=Object.prototype,Zo=Vo.toString,bo=Wo.hasOwnProperty,ao=RegExp("^"+Zo.call(bo).replace($0,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function to(l){if(!_0(l)||A0(l))return!1;var W=P0(l)?ao:lo;return W.test(q0(l))}var mo=to;function eo(l,W){return l==null?void 0:l[W]}var no=eo,co=mo,io=no;function Go(l,W){var d=io(l,W);return co(d)?d:void 0}var mt=Go,po=mt,ho=Vd,Ro=po(ho,"Map"),An=Ro,Yo=mt,so=Yo(Object,"create"),lb=so,_n=lb;function Xo(){this.__data__=_n?_n(null):{},this.size=0}var oo=Xo;function uo(l){var W=this.has(l)&&delete this.__data__[l];return this.size-=W?1:0,W}var No=uo,Fo=lb,Uo="__lodash_hash_undefined__",So=Object.prototype,Mo=So.hasOwnProperty;function To(l){var W=this.__data__;if(Fo){var d=W[l];return d===Uo?void 0:d}return Mo.call(W,l)?W[l]:void 0}var ro=To,Jo=lb,ko=Object.prototype,xo=ko.hasOwnProperty;function yo(l){var W=this.__data__;return Jo?W[l]!==void 0:xo.call(W,l)}var Ho=yo,zo=lb,Io="__lodash_hash_undefined__";function Eo(l,W){var d=this.__data__;return this.size+=this.has(l)?0:1,d[l]=zo&&W===void 0?Io:W,this}var Lo=Eo,wo=oo,jo=No,Bo=ro,Ko=Ho,vo=Lo;function Wd(l){var W=-1,d=l==null?0:l.length;for(this.clear();++W<d;){var b=l[W];this.set(b[0],b[1])}}Wd.prototype.clear=wo,Wd.prototype.delete=jo,Wd.prototype.get=Bo,Wd.prototype.has=Ko,Wd.prototype.set=vo;var go=Wd,qn=go,fo=qZ,Co=An;function Qo(){this.size=0,this.__data__={hash:new qn,map:new(Co||fo),string:new qn}}var Do=Qo;function Oo(l){var W=typeof l;return W=="string"||W=="number"||W=="symbol"||W=="boolean"?l!=="__proto__":l===null}var Po=Oo,Ao=Po;function _o(l,W){var d=l.__data__;return Ao(W)?d[typeof W=="string"?"string":"hash"]:d.map}var Vb=_o,qo=Vb;function $o(l){var W=qo(this,l).delete(l);return this.size-=W?1:0,W}var lu=$o,Vu=Vb;function Wu(l){return Vu(this,l).get(l)}var du=Wu,Zu=Vb;function bu(l){return Zu(this,l).has(l)}var au=bu,tu=Vb;function mu(l,W){var d=tu(this,l),b=d.size;return d.set(l,W),this.size+=d.size==b?0:1,this}var eu=mu,nu=Do,cu=lu,iu=du,Gu=au,pu=eu;function dd(l){var W=-1,d=l==null?0:l.length;for(this.clear();++W<d;){var b=l[W];this.set(b[0],b[1])}}dd.prototype.clear=nu,dd.prototype.delete=cu,dd.prototype.get=iu,dd.prototype.has=Gu,dd.prototype.set=pu;var hu=dd,Ru=qZ,Yu=An,su=hu,Xu=200;function ou(l,W){var d=this.__data__;if(d instanceof Ru){var b=d.__data__;if(!Yu||b.length<Xu-1)return b.push([l,W]),this.size=++d.size,this;d=this.__data__=new su(b)}return d.set(l,W),this.size=d.size,this}var uu=ou,Nu=qZ,Fu=a0,Uu=m0,Su=n0,Mu=i0,Tu=uu;function Zd(l){var W=this.__data__=new Nu(l);this.size=W.size}Zd.prototype.clear=Fu,Zd.prototype.delete=Uu,Zd.prototype.get=Su,Zd.prototype.has=Mu,Zd.prototype.set=Tu;var ru=Zd,Ju=mt,ku=function(){try{var l=Ju(Object,"defineProperty");return l({},"",{}),l}catch{}}(),$n=ku,lc=$n;function xu(l,W,d){W=="__proto__"&&lc?lc(l,W,{configurable:!0,enumerable:!0,value:d,writable:!0}):l[W]=d}var et=xu,yu=et,Hu=AZ;function zu(l,W,d){(d!==void 0&&!Hu(l[W],d)||d===void 0&&!(W in l))&&yu(l,W,d)}var Vc=zu;function Iu(l){return function(W,d,b){for(var t=-1,e=Object(W),n=b(W),i=n.length;i--;){var h=n[l?i:++t];if(d(e[h],h,e)===!1)break}return W}}var Eu=Iu,Lu=Eu,wu=Lu(),ju=wu,Wb={exports:{}};Wb.exports,function(l,W){var d=Vd,b=W&&!W.nodeType&&W,t=b&&!0&&l&&!l.nodeType&&l,e=t&&t.exports===b,n=e?d.Buffer:void 0,i=n?n.allocUnsafe:void 0;function h(G,p){if(p)return G.slice();var s=G.length,X=i?i(s):new G.constructor(s);return G.copy(X),X}l.exports=h}(Wb,Wb.exports);var Bu=Wb.exports,Ku=Vd,vu=Ku.Uint8Array,gu=vu,Wc=gu;function fu(l){var W=new l.constructor(l.byteLength);return new Wc(W).set(new Wc(l)),W}var Cu=fu,Qu=Cu;function Du(l,W){var d=W?Qu(l.buffer):l.buffer;return new l.constructor(d,l.byteOffset,l.length)}var Ou=Du;function Pu(l,W){var d=-1,b=l.length;for(W||(W=Array(b));++d<b;)W[d]=l[d];return W}var Au=Pu,_u=TW,dc=Object.create,qu=function(){function l(){}return function(W){if(!_u(W))return{};if(dc)return dc(W);l.prototype=W;var d=new l;return l.prototype=void 0,d}}(),$u=qu;function lN(l,W){return function(d){return l(W(d))}}var VN=lN,WN=VN,dN=WN(Object.getPrototypeOf,Object),Zc=dN,ZN=Object.prototype;function bN(l){var W=l&&l.constructor,d=typeof W=="function"&&W.prototype||ZN;return l===d}var bc=bN,aN=$u,tN=Zc,mN=bc;function eN(l){return typeof l.constructor=="function"&&!mN(l)?aN(tN(l)):{}}var nN=eN;function cN(l){return l!=null&&typeof l=="object"}var Kd=cN,iN=$Z,GN=Kd,pN="[object Arguments]";function hN(l){return GN(l)&&iN(l)==pN}var RN=hN,ac=RN,YN=Kd,tc=Object.prototype,sN=tc.hasOwnProperty,XN=tc.propertyIsEnumerable,oN=ac(function(){return arguments}())?ac:function(l){return YN(l)&&sN.call(l,"callee")&&!XN.call(l,"callee")},mc=oN,uN=Array.isArray,ec=uN,NN=9007199254740991;function FN(l){return typeof l=="number"&&l>-1&&l%1==0&&l<=NN}var nc=FN,UN=at,SN=nc;function MN(l){return l!=null&&SN(l.length)&&!UN(l)}var nt=MN,TN=nt,rN=Kd;function JN(l){return rN(l)&&TN(l)}var kN=JN,db={exports:{}};function xN(){return!1}var yN=xN;db.exports,function(l,W){var d=Vd,b=yN,t=W&&!W.nodeType&&W,e=t&&!0&&l&&!l.nodeType&&l,n=e&&e.exports===t,i=n?d.Buffer:void 0,h=i?i.isBuffer:void 0,G=h||b;l.exports=G}(db,db.exports);var cc=db.exports,HN=$Z,zN=Zc,IN=Kd,EN="[object Object]",LN=Function.prototype,wN=Object.prototype,ic=LN.toString,jN=wN.hasOwnProperty,BN=ic.call(Object);function KN(l){if(!IN(l)||HN(l)!=EN)return!1;var W=zN(l);if(W===null)return!0;var d=jN.call(W,"constructor")&&W.constructor;return typeof d=="function"&&d instanceof d&&ic.call(d)==BN}var vN=KN,gN=$Z,fN=nc,CN=Kd,QN="[object Arguments]",DN="[object Array]",ON="[object Boolean]",PN="[object Date]",AN="[object Error]",_N="[object Function]",qN="[object Map]",$N="[object Number]",l2="[object Object]",V2="[object RegExp]",W2="[object Set]",d2="[object String]",Z2="[object WeakMap]",b2="[object ArrayBuffer]",a2="[object DataView]",t2="[object Float32Array]",m2="[object Float64Array]",e2="[object Int8Array]",n2="[object Int16Array]",c2="[object Int32Array]",i2="[object Uint8Array]",G2="[object Uint8ClampedArray]",p2="[object Uint16Array]",h2="[object Uint32Array]",Yl={};Yl[t2]=Yl[m2]=Yl[e2]=Yl[n2]=Yl[c2]=Yl[i2]=Yl[G2]=Yl[p2]=Yl[h2]=!0,Yl[QN]=Yl[DN]=Yl[b2]=Yl[ON]=Yl[a2]=Yl[PN]=Yl[AN]=Yl[_N]=Yl[qN]=Yl[$N]=Yl[l2]=Yl[V2]=Yl[W2]=Yl[d2]=Yl[Z2]=!1;function R2(l){return CN(l)&&fN(l.length)&&!!Yl[gN(l)]}var Y2=R2;function s2(l){return function(W){return l(W)}}var X2=s2,Zb={exports:{}};Zb.exports,function(l,W){var d=gn,b=W&&!W.nodeType&&W,t=b&&!0&&l&&!l.nodeType&&l,e=t&&t.exports===b,n=e&&d.process,i=function(){try{var h=t&&t.require&&t.require("util").types;return h||n&&n.binding&&n.binding("util")}catch{}}();l.exports=i}(Zb,Zb.exports);var o2=Zb.exports,u2=Y2,N2=X2,Gc=o2,pc=Gc&&Gc.isTypedArray,F2=pc?N2(pc):u2,hc=F2;function U2(l,W){if(!(W==="constructor"&&typeof l[W]=="function")&&W!="__proto__")return l[W]}var Rc=U2,S2=et,M2=AZ,T2=Object.prototype,r2=T2.hasOwnProperty;function J2(l,W,d){var b=l[W];(!(r2.call(l,W)&&M2(b,d))||d===void 0&&!(W in l))&&S2(l,W,d)}var k2=J2,x2=k2,y2=et;function H2(l,W,d,b){var t=!d;d||(d={});for(var e=-1,n=W.length;++e<n;){var i=W[e],h=b?b(d[i],l[i],i,d,l):void 0;h===void 0&&(h=l[i]),t?y2(d,i,h):x2(d,i,h)}return d}var z2=H2;function I2(l,W){for(var d=-1,b=Array(l);++d<l;)b[d]=W(d);return b}var E2=I2,L2=9007199254740991,w2=/^(?:0|[1-9]\d*)$/;function j2(l,W){var d=typeof l;return W=W??L2,!!W&&(d=="number"||d!="symbol"&&w2.test(l))&&l>-1&&l%1==0&&l<W}var Yc=j2,B2=E2,K2=mc,v2=ec,g2=cc,f2=Yc,C2=hc,Q2=Object.prototype,D2=Q2.hasOwnProperty;function O2(l,W){var d=v2(l),b=!d&&K2(l),t=!d&&!b&&g2(l),e=!d&&!b&&!t&&C2(l),n=d||b||t||e,i=n?B2(l.length,String):[],h=i.length;for(var G in l)(W||D2.call(l,G))&&!(n&&(G=="length"||t&&(G=="offset"||G=="parent")||e&&(G=="buffer"||G=="byteLength"||G=="byteOffset")||f2(G,h)))&&i.push(G);return i}var P2=O2;function A2(l){var W=[];if(l!=null)for(var d in Object(l))W.push(d);return W}var _2=A2,q2=TW,$2=bc,lF=_2,VF=Object.prototype,WF=VF.hasOwnProperty;function dF(l){if(!q2(l))return lF(l);var W=$2(l),d=[];for(var b in l)b=="constructor"&&(W||!WF.call(l,b))||d.push(b);return d}var ZF=dF,bF=P2,aF=ZF,tF=nt;function mF(l){return tF(l)?bF(l,!0):aF(l)}var sc=mF,eF=z2,nF=sc;function cF(l){return eF(l,nF(l))}var iF=cF,Xc=Vc,GF=Bu,pF=Ou,hF=Au,RF=nN,oc=mc,uc=ec,YF=kN,sF=cc,XF=at,oF=TW,uF=vN,NF=hc,Nc=Rc,FF=iF;function UF(l,W,d,b,t,e,n){var i=Nc(l,d),h=Nc(W,d),G=n.get(h);if(G){Xc(l,d,G);return}var p=e?e(i,h,d+"",l,W,n):void 0,s=p===void 0;if(s){var X=uc(h),o=!X&&sF(h),r=!X&&!o&&NF(h);p=h,X||o||r?uc(i)?p=i:YF(i)?p=hF(i):o?(s=!1,p=GF(h,!0)):r?(s=!1,p=pF(h,!0)):p=[]:uF(h)||oc(h)?(p=i,oc(i)?p=FF(i):(!oF(i)||XF(i))&&(p=RF(h))):s=!1}s&&(n.set(h,p),t(p,h,b,e,n),n.delete(h)),Xc(l,d,p)}var SF=UF,MF=ru,TF=Vc,rF=ju,JF=SF,kF=TW,xF=sc,yF=Rc;function Fc(l,W,d,b,t){l!==W&&rF(W,function(e,n){if(t||(t=new MF),kF(e))JF(l,W,n,d,Fc,b,t);else{var i=b?b(yF(l,n),e,n+"",l,W,t):void 0;i===void 0&&(i=e),TF(l,n,i)}},xF)}var HF=Fc;function zF(l){return l}var Uc=zF;function IF(l,W,d){switch(d.length){case 0:return l.call(W);case 1:return l.call(W,d[0]);case 2:return l.call(W,d[0],d[1]);case 3:return l.call(W,d[0],d[1],d[2])}return l.apply(W,d)}var EF=IF,LF=EF,Sc=Math.max;function wF(l,W,d){return W=Sc(W===void 0?l.length-1:W,0),function(){for(var b=arguments,t=-1,e=Sc(b.length-W,0),n=Array(e);++t<e;)n[t]=b[W+t];t=-1;for(var i=Array(W+1);++t<W;)i[t]=b[t];return i[W]=d(n),LF(l,this,i)}}var jF=wF;function BF(l){return function(){return l}}var KF=BF,vF=KF,Mc=$n,gF=Uc,fF=Mc?function(l,W){return Mc(l,"toString",{configurable:!0,enumerable:!1,value:vF(W),writable:!0})}:gF,CF=fF,QF=800,DF=16,OF=Date.now;function PF(l){var W=0,d=0;return function(){var b=OF(),t=DF-(b-d);if(d=b,t>0){if(++W>=QF)return arguments[0]}else W=0;return l.apply(void 0,arguments)}}var AF=PF,_F=CF,qF=AF,$F=qF(_F),lU=$F,VU=Uc,WU=jF,dU=lU;function ZU(l,W){return dU(WU(l,W,VU),l+"")}var bU=ZU,aU=AZ,tU=nt,mU=Yc,eU=TW;function nU(l,W,d){if(!eU(d))return!1;var b=typeof W;return(b=="number"?tU(d)&&mU(W,d.length):b=="string"&&W in d)?aU(d[W],l):!1}var cU=nU,iU=bU,GU=cU;function pU(l){return iU(function(W,d){var b=-1,t=d.length,e=t>1?d[t-1]:void 0,n=t>2?d[2]:void 0;for(e=l.length>3&&typeof e=="function"?(t--,e):void 0,n&&GU(d[0],d[1],n)&&(e=t<3?void 0:e,t=1),W=Object(W);++b<t;){var i=d[b];i&&l(W,i,b,e)}return W})}var hU=pU,RU=HF,YU=hU,sU=YU(function(l,W,d){RU(l,W,d)}),XU=sU;const oU=_e(XU),uU="1.0.46";class Tc{constructor(W,d,b){O(this,"mediaID",null);this.video=W,this.srcFrameRate=d,this.options=oU({enabled:!0,stopAugment:!1,stopAugmentFor:-1,gameId:"Unknown",medialook:!1,allGamesURL:"https://www.virtualott.com/games/",cloudFrontURL:"https://db8igqxlbvayn.cloudfront.net/prod",mediaIdJsonURL:"https://games-prod.virtualott.com/map",offsetJsonURL:"https://games-prod.virtualott.com/offset",renderingMode:DW.Augment,SynchMethod:HX.None,debug:!1,hls_fps:6e4/1001,augmentation:{renderTimecode:!0,offset:0},syncPoint:{frame:0,playerTime:0,mediaTimeMS:0}},b||{}),il(`OTTPlayer: version: ${uU}`),il(`optionsFromMK: ${JSON.stringify(b)}`,b),il(`options after merge with MK's options: ${JSON.stringify(this.options)}`,this.options),this.getGlobalConfig()}init(){typeof globalConfig>"u"?this.options=Object.assign(this.options,{}):this.options=Object.assign(this.options,globalConfig);var W={};W.value1=this.options.hls_fps,this.setFps(W);const d=JSON.stringify(this.options);if(il("options after merge with the global options: "+d,d),!this.options.debug){let b=["debugText","forplus","forDoNotRender","debugText2","toggleBtn","numberInput","plus05CorrectionCheckbox","doNotRenderAugmentationCheckbox","plus05CorrectionLabel","doNotRenderAugmentationLabel","br1","br2","qualityButton","qualitySelect"];for(let t=0;t<b.length;t++){const e=document.getElementById(b[t]);e&&(e.style.display="none")}}this.fetchAndFindGameIdAndOffsetFromMediaId(this.options.gameId)}initAugmentor(){this.augmentor=new yX(this.video,this.options),this.options.renderingMode==DW.Augment&&this.augmentor.initializeComponents()}async getGlobalConfig(){const d=new URL(document.location).searchParams.get("config")||"";if(d!=="")try{const b=await fetch(d);if(!b.ok)throw new Error("Network response was not ok");const t=await b.json();window.globalConfig={},il(`Fetched the following config: ${JSON.stringify(t)}`,t),il(`local config: ${JSON.stringify(window.localConfig)}`,window.localConfig),globalConfig=Object.assign({},t,window.localConfig),il(`final config: ${JSON.stringify(globalConfig)}`,globalConfig)}catch(b){Ml("Error fetching JSON:",b)}this.init()}async fetchAndFindGameIdAndOffsetFromMediaId(W){if(this.options.mediaIdJsonURL=="test"){this.initAugmentor();return}this.options.mediaId&&(W=this.options.mediaId);try{const d=await fetch(this.options.mediaIdJsonURL+"/"+W);if(!d.ok)throw new Error(`HTTP error! Status: ${d.status}`);const b=await d.json();if(b.hasOwnProperty("GAME_ID")){const t=b.GAME_ID;il(`GameId for mediaid= ${W}: ${t}`,{mediaID:W,gameIs:t}),this.options.gameId=t,await this.fetchOffsetForGameIdMediaID(this.options.gameId,W),this.initAugmentor()}else Ml(`MediaID ${W} not found in JSON.`,{mediaID:W}),this.options.stopAugment=!0}catch(d){Ml(d,"Error fetching and processing GameId JSON:",{url:this.options.mediaIdJsonURL+"/"+W})}}async fetchOffsetForGameIdMediaID(W,d){if(this.options.offsetJsonURL=="test")return 0;try{const b=await fetch(this.options.offsetJsonURL+"/"+W);b.ok||(Ml(`HTTP error! Status: ${b.status}`),setTimeout(()=>{this.fetchOffsetForGameIdMediaID(W,d)},5e3));const t=await b.json();if(t.hasOwnProperty("offset")&&t.hasOwnProperty("found")){const e=t.offset;t.found==!0&&(il(`Offset for gameid= ${W}: ${e}`,{gameId:W,offset:e}),this.options.augmentation.offset=e,setTimeout(()=>{this.fetchOffsetForGameIdMediaID(W,d)},6e4))}else BBerror(`offset for ${W} not found in JSON.`,{gameId:W}),setTimeout(()=>{this.fetchOffsetForGameIdMediaID(W,d)},5e3)}catch(b){Ml("Error fetching and processing offset JSON:",b),setTimeout(()=>{this.fetchOffsetForGameIdMediaID(W,d)},5e3)}}toggle(W){this.options.enabled=W}getCanvas(){return this.augmentor.getCanvas()}setFps(W){var d=W.value1;switch(d){case 59.94:case 6e4/1001:this.options.hls_fps=6e4/1001;break;case 29.97:case 3e4/1001:this.options.hls_fps=3e4/1001;break;default:console.error("Unsupported hls-src frame-rate: "+d+"fps"),this.options.hls_fps=d;break}}setSyncPoint(W){this.options.syncPoint=W}onNewSegment(W){this.augmentor.onNewSegmentForMetadata(W)}onNewMetadata(W){this.augmentor.onNewMetadata(W)}}return window.BB={MAX_LOGOS:4,RENDER_IN_WORKER:!0,OTTPlayer:Tc},Tc});
|
|
137
|
+
\`;class C{constructor(o,n){this.adTextures=new Map,this.allPlaceholders=[],this.setAllPlaceholders=e=>{this.allPlaceholders=e},this.initShadersAlphaMask=e=>{const t=this.compileShader(e,e.VERTEX_SHADER,y),i=this.compileShader(e,e.FRAGMENT_SHADER,I),r=e.createProgram();return e.attachShader(r,t),e.attachShader(r,i),e.linkProgram(r),e.getProgramParameter(r,e.LINK_STATUS)?r:(console.error("Could not link shaders:",e.getProgramInfoLog(r)),null)},this.initShadersAugmentation=e=>{const t=this.compileShader(e,e.VERTEX_SHADER,N),i=this.compileShader(e,e.FRAGMENT_SHADER,k(this.allPlaceholders)),r=e.createProgram();return e.attachShader(r,t),e.attachShader(r,i),e.linkProgram(r),e.getProgramParameter(r,e.LINK_STATUS)?r:(console.error("Could not link shaders:",e.getProgramInfoLog(r)),null)},this.compileShader=(e,t,i)=>{const r=e.createShader(t);return e.shaderSource(r,i),e.compileShader(r),e.getShaderParameter(r,e.COMPILE_STATUS)?r:(console.error(\`Error compiling shader: \${e.getShaderInfoLog(r)}\`),e.deleteShader(r),null)},this.createTextureFromVideoFrame=e=>{const t=this.gl,i=t.createTexture();return t.pixelStorei(t.UNPACK_FLIP_Y_WEBGL,!0),t.bindTexture(t.TEXTURE_2D,i),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,e),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.bindTexture(t.TEXTURE_2D,null),i},this.deleteTexture=e=>{this.gl.deleteTexture(e)},this.drawAlphaMask=e=>{if(!this.program){this.options&&m(this.options,"Errors")&&console.error("[Renderer] Program not initialized");return}(!this.positionBuffer||!this.uvBuffer)&&this.options&&m(this.options,"Errors")&&console.error("[Renderer] Buffers not initialized");const t=this.gl,i=this.program,r=t.getAttribLocation(i,"a_position"),s=t.getAttribLocation(i,"a_uv"),a=t.getUniformLocation(i,"u_alphaMask");t.activeTexture(t.TEXTURE0),t.bindTexture(t.TEXTURE_2D,e),t.uniform1i(a,0),t.bindBuffer(t.ARRAY_BUFFER,this.positionBuffer),t.enableVertexAttribArray(r),t.vertexAttribPointer(r,2,t.FLOAT,!1,0,0),t.bindBuffer(t.ARRAY_BUFFER,this.uvBuffer),t.enableVertexAttribArray(s),t.vertexAttribPointer(s,2,t.FLOAT,!1,0,0),t.clear(t.COLOR_BUFFER_BIT);let l=t.TRIANGLES;t.drawArrays(l,0,6)},this.drawAugmentation=(e,t)=>{if(!this.program){this.options&&m(this.options,"Errors")&&console.error("[Renderer] Program not initialized");return}const i=this.gl,r=this.program;if(!this.allPlaceholders){this.options&&m(this.options,"Errors")&&console.error("[Renderer] Placeholder names not initialized");return}i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,e);let s=i.getUniformLocation(r,"u_alphaMask");s&&i.uniform1i(s,0);let a=0;const l=Object.keys(t).map(g=>t[g]),c=l.map(g=>g.name);this.allPlaceholders.forEach(g=>{if(c.includes(g)&&this.adTextures.has(g)){const v=l.filter(q=>q.name===g)[0],F=this.adTextures.get(g);i.activeTexture(i.TEXTURE1+a),i.bindTexture(i.TEXTURE_2D,F);let P=i.getUniformLocation(r,"u_ad"+g);P&&i.uniform1i(P,a+1);let V="u_hasLogo"+g,Q=i.getUniformLocation(r,V);i.uniform1i(Q,1);let K="u_matrix"+g,J=i.getUniformLocation(r,K);i.uniformMatrix3fv(J,!1,v.tranform),a++}else{let v="u_hasLogo"+g,F=i.getUniformLocation(r,v);i.uniform1i(F,0)}});const d=i.getAttribLocation(r,"a_position"),R=i.getAttribLocation(r,"a_uv"),u=i.getUniformLocation(r,"u_resolution");i.uniform2f(u,i.canvas.width,i.canvas.height),i.bindBuffer(i.ARRAY_BUFFER,this.positionBuffer),i.enableVertexAttribArray(d),i.vertexAttribPointer(d,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,this.uvBuffer),i.enableVertexAttribArray(R),i.vertexAttribPointer(R,2,i.FLOAT,!1,0,0),i.viewport(0,0,i.canvas.width,i.canvas.height),i.clearColor(0,0,0,0),i.clear(i.COLOR_BUFFER_BIT|i.DEPTH_BUFFER_BIT);let p=i.TRIANGLES;i.drawArrays(p,0,6)},this.setRectangle=(e,t,i,r,s)=>{const a=t,l=i,c=t+r,d=i+s;e.bufferData(e.ARRAY_BUFFER,new Float32Array([a,l,c,l,a,d,a,d,c,l,c,d]),e.STATIC_DRAW)},this.generateAdTexture=(e,t,i)=>{const r=this.gl;if(!this.program){this.options&&m(this.options,"Errors")&&console.error("[Renderer] Program not initialized");return}r.pixelStorei(r.UNPACK_ALIGNMENT,4),r.pixelStorei(r.UNPACK_FLIP_Y_WEBGL,i);const a=r.createTexture();if(r.bindTexture(r.TEXTURE_2D,a),r.texImage2D(r.TEXTURE_2D,0,r.RGBA,r.RGBA,r.UNSIGNED_BYTE,t),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_S,r.CLAMP_TO_EDGE),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_T,r.CLAMP_TO_EDGE),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MIN_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MAG_FILTER,r.LINEAR),r.bindTexture(r.TEXTURE_2D,null),!a){this.options&&m(this.options,"Errors")&&console.error("[Renderer] Failed to create texture");return}this.adTextures.set(e,a)},this.isPowerOf2=e=>(e&e-1)==0,this.setUVs=e=>{e.bufferData(e.ARRAY_BUFFER,new Float32Array([0,0,1,0,0,1,0,1,1,0,1,1]),e.STATIC_DRAW)},this.options=n,this.renderer=o,this.gl=o.glContext}init(){const o=this.gl;this.renderer.RENDER_ALPHAMASK?this.program=this.initShadersAlphaMask(o):this.program=this.initShadersAugmentation(o),o.useProgram(this.program);const n=o.getUniformLocation(this.program,"u_resolution");o.uniform2f(n,o.canvas.width,o.canvas.height),this.initGeometryBuffers()}initGeometryBuffers(){const o=this.gl;this.positionBuffer=o.createBuffer(),o.bindBuffer(o.ARRAY_BUFFER,this.positionBuffer),this.setRectangle(o,0,0,o.canvas.width,o.canvas.height),this.uvBuffer=o.createBuffer(),o.bindBuffer(o.ARRAY_BUFFER,this.uvBuffer),this.setUVs(o),o.bindBuffer(o.ARRAY_BUFFER,null)}updateGeometryBuffers(){const o=this.gl;if(!this.positionBuffer||!this.uvBuffer){this.options&&m(this.options,"Errors")&&console.error("[Renderer] Buffers not initialized");return}o.bindBuffer(o.ARRAY_BUFFER,this.positionBuffer),this.setRectangle(o,0,0,o.canvas.width,o.canvas.height),o.bindBuffer(o.ARRAY_BUFFER,this.uvBuffer),this.setUVs(o),o.bindBuffer(o.ARRAY_BUFFER,null)}cleanGL(){this.gl.clearColor(0,0,0,0),this.gl.clear(this.gl.COLOR_BUFFER_BIT)}}const b=["LeftTop","MidTopLeft","MidTopRight","RightTop","LeftBottom","MidBottomLeft","MidBottomRight","RightBottom"];class U{constructor(o,n){this.ads=[],this.getAds=async()=>{const t=await(await fetch("https://www.virtualott.com/ads/"+this.options.augmentation.channelName)).json(),i=t.filter(l=>l.name.indexOf(".json")>-1)[0].url,a=(await(await fetch(i)).json()).urls;for(const l of t){const c=await this.loadAdvImage(l);if(!c)continue;const d={name:l.name,imageUrl:l.url,image:c,adUrl:a[l.name]};this.ads.push(d)}this.setAd("LeftTop",3),this.setAd("RightBottom",4),this.uploadAdTextures()},this.loadAdvImage=async e=>{const t=\`#\${e.name}\`,i=e.url;if(t.indexOf(".json")>-1)return;const s=await(await fetch(i)).blob();return await createImageBitmap(s)},this.setAd=(e,t)=>{this.adMap.set(e,this.ads[t])},this.uploadAdTextures=()=>{this.adMap.forEach((e,t)=>{!e||!e.image||this.webgl.generateAdTexture(t,e.image,!0)})},this.getAdURLAtCoord=(e,t,i)=>{let r;return Object.keys(e).forEach(s=>{const a=e[s].corners.map(l=>({x:l.x/t.width,y:l.y/t.height}));if(this.isPointInPlaceholder(a,i)){const l=e[s].name,c=this.adMap.get(l);console.log("ad: ",c),c&&(console.log("ad.url: ",c.adUrl),r=c.adUrl)}}),r},this.isPointInPlaceholder=(e,t)=>{console.log("polygon: ",e),console.log("coord: ",t);let i=!1;const{x:r,y:s}=t,a=e.length;for(let l=0,c=a-1;l<a;c=l++){const d=e[l].x,R=e[l].y,u=e[c].x,p=e[c].y;R>s!=p>s&&r<(u-d)*(s-R)/(p-R)+d&&(i=!i)}return console.log("inside: ",i),i},this.placeholderNames=b,this.webgl=o,this.options=n,this.adMap=new Map,b.forEach(e=>{this.adMap.set(e,void 0)}),this.webgl.setAllPlaceholders(b),console.log("channelName: ",this.options.augmentation.channelName),this.getAds()}}class O{constructor(o,n){this.RENDER_ALPHAMASK=!1,this.renderDataMap=new Map,this.setWebGLEventListeners=()=>{const e=this.glContext.canvas;e.addEventListener("webglcontextlost",t=>{console.warn("Context lost:",t),t.preventDefault()}),e.addEventListener("webglcontextrestored",()=>{console.log("Context restored!"),this.webgl=new C(this,this.options),this.ads=new U(this.webgl,this.options),this.webgl.init()})},this.addMetadataBatch=e=>{e.forEach(t=>{if(!(!t.alphaMask||!t.isLive)){this.options&&m(this.options,"Renderer")&&console.log(\`[RendererWorker] Creating texture for timeCode=\${t.timecode}\`);try{const i=this.webgl.createTextureFromVideoFrame(t.alphaMask),r=t.timecode,s={width:t.processingWidth,height:t.processingHeight},a={alphaMask:i,placeholders:t.placeholders,processingSize:s};this.renderDataMap.set(r,a)}catch{this.options&&m(this.options,"Errors")&&console.error(\`[RendererWorker] Error creating texture for timeCode=\${t.timecode}\`)}finally{t.alphaMask.close()}}})},this.handleRenderDraw=(e,t)=>{var a,l,c,d,R;if(!this.streamData)return;const i=(a=this.renderDataMap.get(e))==null?void 0:a.alphaMask,r=(l=this.renderDataMap.get(e))==null?void 0:l.placeholders,s=(c=this.renderDataMap.get(e))==null?void 0:c.processingSize;if(!(!i||!r||!s||!this.streamData)){if((this.glContext.canvas.width!==s.width||this.glContext.canvas.height!==s.height)&&(this.glContext.canvas.width=s.width,this.glContext.canvas.height=s.height,this.webgl.updateGeometryBuffers()),t!=0)if(t>0){console.log("frameCorrection:"+t);const u=x.fromStr(e).addFrames(1,this.streamData.fps);console.log("thisFrameTimeCode:"+e),console.log("nextFrameTimeCode:"+x.toStr(u));const p=(d=this.renderDataMap.get(x.toStr(u)))==null?void 0:d.placeholders;p&&(console.log("nextPlaceholder:"+p),Object.keys(p).forEach(T=>{T in r&&(console.log("key:"+T),r[T].tranform=r[T].tranform.map((D,g)=>D*(1-t)+p[T].tranform[g]*t))}))}else{const u=Math.abs(t),p=x.fromStr(e).subtractFrames(1,this.streamData.fps),T=(R=this.renderDataMap.get(x.toStr(p)))==null?void 0:R.placeholders;T&&Object.keys(T).forEach(D=>{D in r&&(r[D].tranform=r[D].tranform.map((g,v)=>T[D].tranform[v]*(1-u)+g*u))})}this.options&&m(this.options,"Renderer")&&console.log(\`[Renderer] Render logic: binding texture for \${e}\`),this.RENDER_ALPHAMASK?this.webgl.drawAlphaMask(i):this.webgl.drawAugmentation(i,r)}},this.getAdURLByCoord=e=>{var a,l;if(console.log("clickData: ",e),!this.ads||!this.streamData||!this.streamData.timeCode||!this.renderDataMap)return null;const t=this.streamData.timeCode,i=(a=this.renderDataMap.get(t))==null?void 0:a.placeholders,r=(l=this.renderDataMap.get(t))==null?void 0:l.processingSize;if(!i||!r)return null;console.log("placeholders: ",i);const s=this.ads.getAdURLAtCoord(i,r,e);return console.log("url: ",s),s},this.deleteTexture=e=>{var i;const t=(i=this.renderDataMap.get(e))==null?void 0:i.alphaMask;t&&(this.webgl.deleteTexture(t),this.renderDataMap.delete(e))},this.deleteOldTextures=e=>{if(!this.streamData)return;const t=this.streamData.fps,i=x.fromStr(e).totalMilliseconds(t);this.renderDataMap.forEach((r,s)=>{x.fromStr(s).totalMilliseconds(t)<i-100&&(this.options&&m(this.options,"Renderer")&&console.log(\`[Renderer] Deleting old texture for timeCode=\${s}\`),this.webgl.deleteTexture(r.alphaMask),this.renderDataMap.delete(s))})},this.cleanGL=()=>{this.webgl.cleanGL()},this.updateStreamData=e=>{this.streamData=e},this.glContext=o,this.webgl=new C(this,n),this.options=n,this.ads=new U(this.webgl,n),this.webgl.init()}}const G=1e3,W=40;let L=null,M=null,S=null,A=null,E;const _={timeCode:"",frameCorrection:0,fps:0,cloudFrontURL:"",bucketName:"",offsets:[]};let w=0,B=0;self.onmessage=h=>{const{data:o}=h;if(o.type==="INIT_OFFSCREEN"){const n=o.offscreen;if(E=o.options,S=n.getContext("webgl"),E&&m(E,"Renderer")&&console.log("[RendererWorker] Initializing OffscreenCanvas"),!S){E&&m(E,"Errors")&&console.error("[RendererWorker] Failed to acquire WebGL context");return}A=new O(S,E),E&&m(E,"Renderer")&&console.log("[RendererWorker] OffscreenCanvas initialized, gl context acquired")}if(o.type==="SET_DOWNLOADER_PORT"&&(L=o.port,L.onmessage=j),o.type==="SET_DECODER_PORT"&&(M=o.port,M.onmessage=z),(o.type==="RENDERER_DRAW"||o.type==="RENDERER_CLEAR")&&(H(o.streamData),A?(A.updateStreamData(_),A.cleanGL(),o.type==="RENDERER_DRAW"&&(A.handleRenderDraw(o.streamData.timeCode,o.streamData.frameCorrection),A.deleteOldTextures(o.streamData.timeCode))):E&&m(E,"Errors")&&console.error("[RendererWorker] WebGL context is not initialized."),$()),o.type==="VIDEO_CLICK"&&A){const n=A.getAdURLByCoord(o.clickData);postMessage({type:"OPEN_URL",url:n})}};function X(){L&&L.postMessage({type:"DOWNLOADER_INPUT",streamData:_})}function Y(){M&&M.postMessage({type:"DECODER_REQUEST",timeCode:_.timeCode,fps:_.fps})}function $(){const h=performance.now();h-w>G&&(X(),w=h),h-B>W&&(Y(),B=h)}function z(h){const{data:o}=h;if(o.type==="RENDERER_INPUT"){const n=o.batch;E&&m(E,"Renderer")&&console.log(\`[RendererWorker] Received a batch of \${n.length} frames\`),A&&A.addMetadataBatch(n)}}function j(h){E&&m(E,"Renderer")&&console.log("[RendererWorker] Message from Downloader:",h.data)}function H(h){_.timeCode=h.timeCode,_.frameCorrection=h.frameCorrection,_.fps=h.fps,_.cloudFrontURL=h.cloudFrontURL,_.bucketName=h.bucketName,_.offsets=h.offsets}})();
|
|
138
|
+
`,O=typeof self<"u"&&self.Blob&&new Blob([z],{type:"text/javascript;charset=utf-8"});function J(s){let t;try{if(t=O&&(self.URL||self.webkitURL).createObjectURL(O),!t)throw"";const e=new Worker(t,{name:s==null?void 0:s.name});return e.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(t)}),e}catch{return new Worker("data:text/javascript;charset=utf-8,"+encodeURIComponent(z),{name:s==null?void 0:s.name})}finally{t&&(self.URL||self.webkitURL).revokeObjectURL(t)}}class b{constructor(t){this.mediaTime=0,this.timecodeChecker=new $(0),this.OTTPlayer=t,this.options=t.options,this.downloaderWorker=new q,this.decoderWorker=new K,this.rendererWorker=new J,this.rendererToDownloader=new MessageChannel,this.downloaderToDecoder=new MessageChannel,this.decoderToRenderer=new MessageChannel,this.setupWorkers(),this.canvas=document.createElement("canvas"),this.OTTPlayer.video.readyState>=3?this.setupCanvas():this.OTTPlayer.video.addEventListener("canplay",()=>this.setupCanvas(),{once:!0}),this.processedTimecodes=[],this.clicker=new X(this.OTTPlayer.video,this.rendererWorker),this.segmentFirstFrameTimecode=new c,this.syncPoint={frame:0,playerTime:0,stringTime:""},this.cacheStarted=!1,this.animationFPScalculator=new A(20),this.videoFPScalculator=new A(20),this.startAnimationFrameLoop(),this.startVideoFrameCallbackLoop()}static getInstance(t){return b.instance||(b.instance=new b(t)),b.instance}onNewMetadata(t){const e=v(this.videoFPScalculator.getFPS());this.segmentFirstFrameTimecode=H(t),this.metadataReportedFrameTimecode=V(t),this.metadataReportedFrameTimecode&&e&&!this.cacheStarted&&(this.syncPoint=j(t,e,this.metadataReportedFrameTimecode),this.cacheStarted=!0)}async onNewSegment(t){const e=v(this.videoFPScalculator.getFPS());this.segmentFirstFrameTimecode&&e&&(this.syncPoint=Y(t,e,this.segmentFirstFrameTimecode))}startAnimationFrameLoop(){const t=()=>{var e;this.animationFPScalculator.addTimestamp(performance.now()/1e3),(e=this.OTTPlayer.gameParams)!=null&&e.bucketName&&this.OTTPlayer.gameParams.offsets&&this.cacheStarted&&!this.OTTPlayer.RUN_ADAPTER&&this.callRenderer(),this.OTTPlayer.RUN_PIXEL_TICKERS&&this.OTTPlayer.pixelTickers.forEach(r=>{r.update()}),this.animationFPScalculator.getFPS(),requestAnimationFrame(t)};requestAnimationFrame(t)}startVideoFrameCallbackLoop(){const t=(e,r)=>{this.mediaTime=r.mediaTime,this.videoFPScalculator.addTimestamp(r.mediaTime),this.OTTPlayer.video.requestVideoFrameCallback(t)};this.OTTPlayer.video.requestVideoFrameCallback(t)}setupCanvas(){const t=this.OTTPlayer.video,e=t.parentElement;this.canvas.width=t.videoWidth,this.canvas.height=t.videoHeight,this.canvas.style.zIndex="3000",this.canvas.style.position="absolute",this.canvas.style.top="50%",this.canvas.style.transform="translateY(-50%)",this.canvas.style.left="0",this.canvas.style.width=e.style.width,this.canvas.style.height=e.style.height,this.canvas.style.pointerEvents="none",e.addEventListener("click",n=>{this.clicker.click(n)}),e.style.position="relative",e.appendChild(this.canvas);const r=this.canvas.transferControlToOffscreen(),i={type:"INIT_OFFSCREEN",offscreen:r,options:this.options};this.rendererWorker.postMessage(i,[r])}setupWorkers(){this.rendererWorker.postMessage({type:"SET_DOWNLOADER_PORT",port:this.rendererToDownloader.port1},[this.rendererToDownloader.port1]),this.downloaderWorker.postMessage({type:"SET_RENDERER_PORT",port:this.rendererToDownloader.port2},[this.rendererToDownloader.port2]),this.downloaderWorker.postMessage({type:"SET_DECODER_PORT",port:this.downloaderToDecoder.port1},[this.downloaderToDecoder.port1]),this.decoderWorker.postMessage({type:"SET_DOWNLOADER_PORT",port:this.downloaderToDecoder.port2},[this.downloaderToDecoder.port2]),this.decoderWorker.postMessage({type:"SET_RENDERER_PORT",port:this.decoderToRenderer.port1},[this.decoderToRenderer.port1]),this.rendererWorker.postMessage({type:"SET_DECODER_PORT",port:this.decoderToRenderer.port2},[this.decoderToRenderer.port2]),this.downloaderWorker.postMessage({type:"SET_OPTIONS",options:this.options}),this.decoderWorker.postMessage({type:"SET_OPTIONS",options:this.options})}callRenderer(t,e,r){var h,l;let i=t;if(!i){const p=c.calculateCurrentTimeCode(this.OTTPlayer);i=c.toStr(p)}this.options&&m(this.options,"Clocker")&&console.log(`[Clocker] Sending current time code to the Renderer: ${i}`);const n={timeCode:i,frameCorrection:e||0,fps:v(this.videoFPScalculator.getFPS()),cloudFrontURL:this.OTTPlayer.options.cloudFrontURL,bucketName:((h=this.OTTPlayer.gameParams)==null?void 0:h.bucketName)||"",offsets:((l=this.OTTPlayer.gameParams)==null?void 0:l.offsets)||[]},o={type:r?"RENDERER_CLEAR":"RENDERER_DRAW",streamData:n};this.rendererWorker.postMessage(o)}}class Q{constructor(t){this.fetchGameParams=async(e,r)=>{const i=`${e}/${r}.json`;this.options&&m(this.options,"Fetcher")&&console.log(`[Fetcher] Fetching GameParams from ${i}`);const n=await fetch(i);if(!n.ok)throw new Error(`HTTP error! Status: ${n.status}`);const a=await n.json();return a.hasOwnProperty("bucketName")&&a.hasOwnProperty("offsets")?a:(this.options&&m(this.options,"Errors")&&console.error(`[Fetcher] Game params for ${r} not found in JSON.`),n)},this.fetchMetadata=async(e,r,i,n)=>{const a=S(i),h=`${`${e}/${r}`}/manifests/${a}/${n}.zip`;this.options&&m(this.options,"Fetcher")&&console.log(`[Fetcher] Fetching metadata from ${h}`);const l=await fetch(h);if(!l.ok)throw new Error(`HTTP error! Status: ${l.status}`);return await l.arrayBuffer()},this.options=t}}class Z{constructor(){this.metrics=new Map,this.containers=[],this.createContainer=()=>{const t=document.createElement("div");t.style.display="flex",t.style.gap="10px",t.style.marginBottom="10px";const e={div:t,metrics:[]};return this.containers.push(e),document.body.appendChild(t),e},this.createMetric=(t,e)=>{const r=document.createElement("span"),i={name:t,value:"",span:r};return e.metrics.push(i),r.textContent=`${t}: ${i.value}`,e.div.appendChild(r),this.metrics.set(t,i),i},this.updateMetric=(t,e)=>{const r=this.metrics.get(t);if(!r){console.error("Metric does not exist");return}typeof e=="boolean"?r.value=e?"true":"false":r.value=e,r.span.textContent=`${t}: ${r.value}`}}}const E=s=>s.toString().padStart(2,"0"),F=":",tt=(s,t,e=!1)=>{let r="";return Array.isArray(s)?(r=[E(s[0]),E(s[1]),E(s[2]),E(s[3])].join(":"),e==!0?s[4]==1&&t?r+=".2":r+=".1":s[4]==1&&t&&(r+=".1")):(r=("0"+s.h).slice(-2)+F+("0"+s.m).slice(-2)+F+("0"+s.s).slice(-2)+F+("0"+s.f).slice(-2),r+="."+(s.field?"1":"2")),r},et=(s,t,e)=>{let r=60,i=0;Math.floor(t)==60?(r=60,i=0):Math.floor(t)==59?(r=60,i=4):Math.floor(t)==30?(r=30,i=0):Math.floor(t)==29&&(r=30,i=2);let n=0,o=Math.floor(t*60*10)*6,h=s[0],l=s[1],p=s[2],u=s[3],_=s[4];return n+=h*o,n+=l*(r*60),n+=p*r,n+=u*2+_,n-=i*l,n+=i*Math.floor(l/10),n};class rt{constructor(){this.start=0,this.end=0,this.startTimeoutForSeconds=t=>{this.start=performance.now(),this.end=this.start+t*1e3},this.isTimeout=()=>{const t=performance.now()>=this.end;return t&&(this.start=0,this.end=0),!t}}}class it{constructor(t){this.firstFrameTimecode=[0,0,0,0,0],this.timeout=new rt,this.metrics=new Z,this.tcTimeStamp=0,this.timecode_offset=0,this.deltaVidDeltaArray=[],this.countVid=0,this.lastVidDateTime=0,this.lastCalled="",this.frameNumberToRender=0,this.lastOffset=0,this.lastOffsetShown=0,this.countOfCorrectionsInRow=0,this.deltaVidDeltaArrayCapacity=20,this.vidFiredTime=0,this.correction=!1,this.prevFraction=.99,this.lastDblFrame=0,this.lastRealFrame=0,this.lastNow=0,this.lastFraction=2,this.countANI=0,this.aniDelltaTimeArray=[],this.aniDelltaTimeArrayCapacity=60,this.lastAniNow=0,this.lastVideoFrameRenderedInGL=-1,this.lastCorrection=!1,this.rafCounter=0,this.rvfcCounter=0,this.currentFrameRVFC=0,this.previousFrame=0,this.lastSeenRAFtimestamp=0,this.lastSeenRVFCtimestamp=0,this.compensationMode=!1,this.RVFCframeExpected=0,this.compensationCounter=0,this.frameCorrection=0,this.lastCallback=null,this.onAnimationFrameChromeMac=()=>{if(this.video.paused){window.requestAnimationFrame(this.onAnimationFrameChromeMac);return}this.options.debug&&(this.rafCounter++,this.metrics.updateMetric("RAF calls",this.rafCounter)),this.lastCallback=="RAF"&&(this.RVFCframeExpected=this.currentFrameRVFC+1,this.options.debug&&this.metrics.updateMetric("RVFC missed",this.RVFCframeExpected-this.currentFrameRVFC)),this.lastCallback="RAF",this.currentFrameRVFC<this.RVFCframeExpected?(this.compensationMode=!0,this.options.debug&&(this.metrics.updateMetric("Compensation","+1"),this.metrics.updateMetric("Last sent frame",this.currentFrameRVFC+1)),this.callRenderer(this.currentFrameRVFC+1),this.previousFrame=this.currentFrameRVFC+1,this.compensationCounter<10?(this.RVFCframeExpected++,this.compensationCounter++,this.options.debug&&this.metrics.updateMetric("Drop frame compensation",!1)):(this.compensationCounter=0,this.frameCorrection=1,console.error("RVFC frame compensation limit reached"),this.options.debug&&this.metrics.updateMetric("Drop frame compensation",!0))):(this.compensationMode&&(this.compensationMode=!1),this.compensationCounter=0),window.requestAnimationFrame(this.onAnimationFrameChromeMac)},this.onVideoFrameChromeMac=(r,i)=>{if(this.options.debug&&(this.rvfcCounter++,this.metrics.updateMetric("RVFC calls",this.rvfcCounter),this.metrics.updateMetric("RVFC missed",0)),this.lastCallback=="RVFC",this.lastCallback="RVFC",!this.OTTPlayer||!this.OTTPlayer.clocker||!this.OTTPlayer.gameParams){this.video.requestVideoFrameCallback(this.onVideoFrameChromeMac);return}var n=(i.mediaTime-this.options.syncPoint.playerTime)%(60*60*24)*(6e4/1001);let a=Math.floor(n+.1)+this.options.syncPoint.frame;const o=c.calculateCurrentOffset(a,this.OTTPlayer.gameParams.offsets);let h=a-o;h<0&&(h+=5178816),h>=5178816&&(h-=5178816),this.currentFrameRVFC=h+1;let l=0;this.frameCorrection>0&&(l=this.frameCorrection,this.frameCorrection=Math.max(this.frameCorrection-.2,0),this.options.debug&&this.metrics.updateMetric("Drop frame compensation",this.frameCorrection)),this.options.debug&&(this.metrics.updateMetric("Last metadata frame",this.currentFrameRVFC),this.metrics.updateMetric("Last sent frame",this.currentFrameRVFC),this.metrics.updateMetric("Compensation",0)),this.callRenderer(this.currentFrameRVFC,l),this.previousFrame=this.currentFrameRVFC,this.video.requestVideoFrameCallback(this.onVideoFrameChromeMac)},this.onAnimationFrameSafariMac=()=>{this.options.debug&&(this.rafCounter++,this.metrics.updateMetric("RAF calls",this.rafCounter));let r=(this.video.currentTime-this.options.syncPoint.playerTime)%(60*60*24)*(6e4/1001),i=Math.floor(r)+this.options.syncPoint.frame;if(i-this.lastRealFrame==2&&r-this.lastDblFrame<1.5&&(r=this.lastDblFrame+1),this.lastDblFrame=r,!this.OTTPlayer||!this.OTTPlayer.gameParams){window.requestAnimationFrame(this.onAnimationFrameSafariMac);return}const n=c.calculateCurrentOffset(i,this.OTTPlayer.gameParams.offsets);let a=i-n;a<0&&(a+=5178816),a>=5178816&&(a-=5178816),a+=2;var o=r-Math.floor(r);o<.3&&o>.1&&this.lastFraction<.3&&this.lastFraction>.1&&(o=Math.min(o,this.lastFraction)),this.lastFraction=o;let h=0;o<.1?h=0:o>.1&&o<.3?h=(o-.1)/(.3-.1):h=1,this.options.debug&&this.metrics.updateMetric("Compensation",h.toFixed(4)),a--,h==1&&(a++,h=0),this.options.debug&&(this.metrics.updateMetric("Double frame",r.toFixed(4)),this.metrics.updateMetric("Last sent frame",a)),this.callRenderer(a,h),window.requestAnimationFrame(this.onAnimationFrameSafariMac)},this.callRenderer=(r,i)=>{if(!this.OTTPlayer.clocker||!this.OTTPlayer)return;const n=this.OTTPlayer.clocker.videoFPScalculator.getFPS();this.options.debug&&this.metrics.updateMetric("FPS",n);const a=c.fromFrames(r,n);if(this.timeout.isTimeout())this.clearAugmentation(a);else{const o=this.OTTPlayer.clocker.videoFPScalculator.getPerciseFPS();if(o<=30||o>70){console.error("Video FPS is out of supported range: "+o),this.timeout.startTimeoutForSeconds(3),this.clearAugmentation(a);return}const h=this.OTTPlayer.clocker.animationFPScalculator.getPerciseFPS();if(h<=30||h>70){console.error("Animation FPS is out of supported range: "+h),this.timeout.startTimeoutForSeconds(3),this.clearAugmentation(a);return}this.renderAugmentation(a,i)}},this.renderAugmentation=(r,i)=>{if(!this.OTTPlayer||!this.OTTPlayer.clocker)throw new Error("OTTPlayer is not initialized");const n=c.toStr(r);this.playerOptions&&m(this.playerOptions,"Clocker")&&console.log(`Rendering augmentation for timecode: ${n} , ${r}`),this.options.debug&&this.metrics.updateMetric("Last sent timecode",n),this.OTTPlayer.clocker.callRenderer(n,i)},this.clearAugmentation=r=>{if(!this.OTTPlayer||!this.OTTPlayer.clocker)throw new Error("OTTPlayer is not initialized");const i=c.toStr(r);this.playerOptions&&m(this.playerOptions,"Clocker")&&console.log("Clearing augmentation"),this.OTTPlayer.clocker.callRenderer(i,0,!0)},this.OTTPlayer=t,this.playerOptions=t.options,this.playerOptions&&m(this.playerOptions,"Clocker")&&console.log("Adapter is initialized",this.OTTPlayer),this.video=t.video;const e=this.playerOptions.debug&&this.playerOptions.debug.on;if(this.options={debug:e,maskMP4:!0,stopAugmentFor:0,syncPoint:{frame:0,playerTime:0,stringTime:""}},this.OTTPlayer.video.readyState>=3?this.setupAdapter():this.OTTPlayer.video.addEventListener("canplay",()=>this.setupAdapter(),{once:!0}),this.options.debug){const r=this.metrics.createContainer(),i=this.metrics.createContainer(),n=this.metrics.createContainer();this.metrics.createMetric("RAF calls",r),this.metrics.createMetric("RVFC calls",r),this.metrics.createMetric("RVFC missed",r),this.metrics.createMetric("Last metadata frame",r),this.metrics.createMetric("Last sent frame",r),this.metrics.createMetric("Double frame",i),this.metrics.createMetric("Last sent timecode",i),this.metrics.createMetric("Compensation",i),this.metrics.createMetric("Drop frame compensation",i),this.metrics.createMetric("FPS",n)}}setupAdapter(){this.options;const t=this.video;if(y.isChromeMac())window.requestAnimationFrame(this.onAnimationFrameChromeMac),t.requestVideoFrameCallback(this.onVideoFrameChromeMac);else{y.isSafariMac();{const e=y.getCurrentPlatform(),r=y.getBrowserName();console.error("Unsupported platform: "+e+" "+r)}}}onNewSegmentForMetadata(t){let e={frame:0,playerTime:0,stringTime:""};e.frame=et(this.firstFrameTimecode,6e4/1001),e.stringTime=tt(this.firstFrameTimecode,!0,!0),this.playerOptions&&m(this.playerOptions,"Clocker")&&console.log("New segment ("+t.url+"): "+e.stringTime+" ("+e.frame+") playing at "+t.playbackTime),e.playerTime=t.playbackTime,this.options.syncPoint=e,t.mimeType.includes("video")&&this.playerOptions&&m(this.playerOptions,"Clocker")&&console.log("url: "+t.url)}onNewMetadata(t){if(t&&t.metadata&&t.metadata.id==0||y.isSafariMac()){if(t.metadata.messageData)t.metadata.messageData=this.processTimedMetadata(t.metadata.messageData,t.metadata.presentationTime);else if(t.metadata.frames&&t.metadata.frames.length&&t.metadata.frames[0].key&&t.metadata.frames[0].key.toLowerCase()==="priv"){const e=t.metadata.frames.filter(r=>r.info&&r.info.toLowerCase().includes("ntc"));if(e.length){const r=`${e[e.length-1].info}\0${String.fromCharCode(...e[e.length-1].data)}`;t.metadata.messageData=this.processTimedMetadata(r,t.metadata.presentationTime)}}if(t.metadata.id==0||y.isSafariMac()&&this.timecode_offset==0){t.metadata.presentationTime*1e3;const e=new Date(this.tcTimeStamp-this.timecode_offset);let r=Math.round(e.getUTCMilliseconds()*30*2/1001)/2;const i=r%1;let n=1;i==.5&&(r=Math.floor(r),n=2),this.firstFrameTimecode=[e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds(),Math.floor(r),n==1?0:1]}}}processTimedMetadata(t,e){let r="";if(t&&t.includes("www.mediakind.com/NTC")){const i=t.replace(/.*NTC./,"");let n=0;for(;n+8<=i.length;){const a=i.substring(n,n+4),o=((i.charCodeAt(n+4)*256+i.charCodeAt(n+5))*256+i.charCodeAt(n+6))*256+i.charCodeAt(n+7);if(n+8+o>i.length)break;const h=i.substring(n+8,n+8+o);a=="utc_"&&new Date(parseInt(h)).getTime()/1e3,a=="tc__"&&(this.tcTimeStamp=new Date(parseInt(h)).getTime()),a==="offs"&&(this.timecode_offset=parseInt(h)/90),n+=8+o}}return r}}class U{constructor(t,e){this.size=1,this.positionElement=()=>{let i=0,n=0;this.corner=="left-top"?(this.element.style.top=`${i}px`,this.element.style.left=`${n}px`):this.corner=="right-top"?(this.element.style.top=`${i}px`,this.element.style.left=`${n+this.video.offsetWidth-this.size}px`):this.corner=="right-bottom"?(this.element.style.top=`${i+this.video.offsetHeight-this.size}px`,this.element.style.left=`${n+this.video.offsetWidth-this.size}px`):this.corner=="left-bottom"&&(this.element.style.top=`${i+this.video.offsetHeight-this.size}px`,this.element.style.left=`${n}px`)},this.video=e,this.container=e.parentElement,this.corner=t;const r=document.createElement("div");r.style.position="absolute",r.style.width=`${this.size}px`,r.style.height=`${this.size}px`,r.style.transition="background-color 0s",r.style.zIndex="100000",this.element=r,this.container.appendChild(r),this.positionElement()}getRandomColor(){return`#${Math.floor(Math.random()*16777215).toString(16).padStart(6,"0")}`}update(){this.element.style.backgroundColor=this.getRandomColor(),this.positionElement()}static createInAllCorners(t){return[new U("left-top",t),new U("right-top",t),new U("right-bottom",t),new U("left-bottom",t)]}static updateAll(t){t.forEach(e=>e.update())}}class N{constructor(t,e,r){this.RUN_ADAPTER=!0,this.RUN_PIXEL_TICKERS=!0,this.pixelTickers=[],this.fetchGameParams=async()=>{if(this.fetcher)try{m(this.options,"OTTPlayer")&&console.log("[OTTPlayer] GameId: ",this.options.gameId);const i=await this.fetcher.fetchGameParams(this.options.cloudFrontURL,this.options.gameId);if(i instanceof Response)throw console.log("gameParams: ",i),new Error("Error fetching game params:"+i.type);this.gameParams=i}catch(i){m(this.options,"Errors")&&console.error("[OTTPlayer] Error fetching game params:",i)}},this.video=t,this.options={...r,cloudFrontURL:"https://d1ze2lfw5ong7.cloudfront.net",augmentation:{channelName:"nba"},zipInterval:2},W(this.options).then(()=>{this.clocker=b.getInstance(this),this.fetcher=new Q(this.options),this.RUN_ADAPTER&&(this.adapter=new it(this)),this.RUN_PIXEL_TICKERS&&(this.pixelTickers=U.createInAllCorners(this.video)),this.fetchGameParams()})}onNewMetadata(t){if(this.RUN_ADAPTER){if(!this.adapter)return;this.adapter.onNewMetadata(t)}else{if(!this.clocker)return;this.clocker.onNewMetadata(t)}}onNewSegment(t){if(this.RUN_ADAPTER){if(!this.adapter)return;this.adapter.onNewSegmentForMetadata(t)}else{if(!this.clocker)return;this.clocker.onNewSegment(t)}}toggle(t){this.options.enabled=t}}return window.BB={OTTPlayer:N},N});
|