From a8ce4c7b188686955c60613d6a25940dcf255665 Mon Sep 17 00:00:00 2001 From: liyulin <501351981@qq.com> Date: Thu, 21 Mar 2024 20:38:03 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20excel=E5=9B=BE=E7=89=87=E4=BD=8D?= =?UTF-8?q?=E7=BD=AE=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/packages/js-excel/package.json | 2 +- core/packages/vue-excel/package.json | 2 +- core/packages/vue-excel/src/media.js | 10 +- examples/dist/assets/DocxDemo-389755be.js | 1 + examples/dist/assets/ExcelDemo-46393fb6.js | 1 + examples/dist/assets/JsDocxDemo-297054d3.js | 1 + examples/dist/assets/JsExcelDemo-5dfb080f.js | 1 + examples/dist/assets/JsPdfDemo-72995c07.js | 1 + examples/dist/assets/PdfDemo-678dff5a.js | 3 + .../dist/assets/PreviewWrapper-99bcc9b3.js | 1 + examples/dist/assets/docx-53fc2607.js | 97 +++++++++ examples/dist/assets/hack-62af20e5.js | 202 ++++++++++++++++++ examples/dist/assets/index-75869108.js | 121 +++++++++++ examples/dist/assets/omit-f856690a.js | 1 + examples/dist/index.html | 2 +- 15 files changed, 438 insertions(+), 8 deletions(-) create mode 100644 examples/dist/assets/DocxDemo-389755be.js create mode 100644 examples/dist/assets/ExcelDemo-46393fb6.js create mode 100644 examples/dist/assets/JsDocxDemo-297054d3.js create mode 100644 examples/dist/assets/JsExcelDemo-5dfb080f.js create mode 100644 examples/dist/assets/JsPdfDemo-72995c07.js create mode 100644 examples/dist/assets/PdfDemo-678dff5a.js create mode 100644 examples/dist/assets/PreviewWrapper-99bcc9b3.js create mode 100644 examples/dist/assets/docx-53fc2607.js create mode 100644 examples/dist/assets/hack-62af20e5.js create mode 100644 examples/dist/assets/index-75869108.js create mode 100644 examples/dist/assets/omit-f856690a.js diff --git a/core/packages/js-excel/package.json b/core/packages/js-excel/package.json index 74d4b93..5c3bca0 100644 --- a/core/packages/js-excel/package.json +++ b/core/packages/js-excel/package.json @@ -1,7 +1,7 @@ { "name": "@js-preview/excel", "type" :"module", - "version": "1.7.1", + "version": "1.7.2", "description": "", "main": "lib/index.js", "files": [ diff --git a/core/packages/vue-excel/package.json b/core/packages/vue-excel/package.json index b785f2e..3cb7721 100644 --- a/core/packages/vue-excel/package.json +++ b/core/packages/vue-excel/package.json @@ -1,6 +1,6 @@ { "name": "@vue-office/excel", - "version": "1.7.1", + "version": "1.7.2", "description": "", "main": "lib/index.js", "files": [ diff --git a/core/packages/vue-excel/src/media.js b/core/packages/vue-excel/src/media.js index c92591b..2392fe7 100644 --- a/core/packages/vue-excel/src/media.js +++ b/core/packages/vue-excel/src/media.js @@ -23,7 +23,7 @@ let devicePixelRatio = window.devicePixelRatio; function calcPosition(sheet, range, offset, options){ let {widthOffset, heightOffset} = options; let {tl={}, br={}} = range; - let {nativeCol, nativeColOff, nativeRow, nativeRowOff} = tl; + let {nativeCol=0, nativeColOff=0, nativeRow=0, nativeRowOff=0} = tl; let basicX = clipWidth; let basicY = clipHeight; @@ -39,10 +39,10 @@ function calcPosition(sheet, range, offset, options){ let y = basicY + nativeRowOff/12700; let { - nativeCol: nativeColEnd, - nativeColOff: nativeColOffEnd, - nativeRow: nativeRowEnd, - nativeRowOff: nativeRowOffEnd + nativeCol: nativeColEnd=0, + nativeColOff: nativeColOffEnd=0, + nativeRow: nativeRowEnd=0, + nativeRowOff: nativeRowOffEnd=0 } = br; let width; if(nativeCol === nativeColEnd){ diff --git a/examples/dist/assets/DocxDemo-389755be.js b/examples/dist/assets/DocxDemo-389755be.js new file mode 100644 index 0000000..41f24e0 --- /dev/null +++ b/examples/dist/assets/DocxDemo-389755be.js @@ -0,0 +1 @@ +import{d as r}from"./docx-53fc2607.js";import{d as p}from"./url-de9b02cf.js";import{d as x,_ as l,r as _,o as h,w as v,a as m,c as g,b as D,e as w,f as y,g as O,u as B}from"./index-75869108.js";import{P as R,u}from"./PreviewWrapper-99bcc9b3.js";import"./_commonjs-dynamic-modules-302442b1.js";typeof window.setImmediate>"u"&&(window.setImmediate=function(e,...o){setTimeout(()=>e(o))});const $=x({name:"VueOfficeDocx",props:{src:[String,ArrayBuffer,Blob],requestOptions:{type:Object,default:()=>({})},options:{type:Object,default:()=>({})}},emits:["rendered","error"],setup(e,{emit:o}){const n=_(null);let c=null;function a(){let t=n.value;r.getData(e.src,e.requestOptions).then(async i=>{c=await r.getBlob(i),r.render(c,t,e.options).then(()=>{o("rendered")}).catch(f=>{r.render("",t,e.options),o("error",f)})}).catch(i=>{r.render("",t,e.options),o("error",i)})}h(()=>{e.src&&a()}),v(()=>e.src,()=>{e.src?a():r.render("",n.value,e.options).then(()=>{o("rendered")})});function s(t){p(t||`vue-office-docx-${new Date().getTime()}.docx`,c)}return{rootRef:n,save:s}}}),b={class:"vue-office-docx"},V={class:"vue-office-docx-main",ref:"rootRef"};function k(e,o,n,c,a,s){return m(),g("div",b,[D("div",V,null,512)])}const d=l($,[["render",k]]);d.install=function(e){e.component(d.name,d)};const q={__name:"DocxDemo",setup(e){function o(){u.hideLoading()}function n(t){console.log("出差",t),u.hideLoading()}const c=location.origin+(location.pathname+"/").replace("//","/")+"static/test-files/test.docx",a=_(),s={headers:{"component-name":"VueOfficeDocx"}};return(t,i)=>(m(),w(R,{accept:".docx",placeholder:"请输入docx文件地址","default-src":c},{default:y(f=>[O(B(d),{ref_key:"docxRef",ref:a,src:f.src,"request-options":s,style:{flex:"1",height:"0"},onRendered:o,onError:n},null,8,["src"])]),_:1}))}},N=l(q,[["__scopeId","data-v-844ea5ef"]]);export{N as default}; diff --git a/examples/dist/assets/ExcelDemo-46393fb6.js b/examples/dist/assets/ExcelDemo-46393fb6.js new file mode 100644 index 0000000..e6eb19b --- /dev/null +++ b/examples/dist/assets/ExcelDemo-46393fb6.js @@ -0,0 +1 @@ +import{l as C,r as R,S as B,a as x,g,b as $,t as L,c as k}from"./hack-62af20e5.js";import{d as q}from"./url-de9b02cf.js";import{d as F,_ as V,r as w,o as W,n as j,h as I,w as M,a as T,c as N,b as A,i as H,e as P,f as U,j as z,g as G,u as J}from"./index-75869108.js";import{P as K,u as O}from"./PreviewWrapper-99bcc9b3.js";import"./_commonjs-dynamic-modules-302442b1.js";const E={xls:!1,minColLength:20},Q=F({name:"VueOfficeExcel",props:{src:[String,ArrayBuffer,Blob],requestOptions:{type:Object,default:()=>({})},options:{type:Object,default:()=>({...E})}},emits:["rendered","error"],setup(e,{emit:l}){const i=w(null),c=w(null);let a={_worksheets:[]},n=[],f=0,o=null,t=null,u=null,h=null;function v(d){h=d,$(d,e.options.xls).then(s=>{if(!s._worksheets||s._worksheets.length===0)throw new Error("未获取到数据,可能文件格式不正确或文件已损坏");e.options.beforeTransformData&&typeof e.options.beforeTransformData=="function"&&(s=e.options.beforeTransformData(s));let{workbookData:m,medias:p,workbookSource:r}=L(s,{...E,...e.options});e.options.transformData&&typeof e.options.transformData=="function"&&(m=e.options.transformData(m)),n=p,a=r,u=null,f=0,k(),t.loadData(m),x(o,n,a._worksheets[f],u,e.options),l("rendered")}).catch(s=>{console.warn(s),n=[],a={_worksheets:[]},k(),t&&t.loadData({}),l("error",s)})}const D=C.debounce(R,200).bind(this,c.value),b=new MutationObserver(D),y={attributes:!0,childList:!0,subtree:!0};W(()=>{j(()=>{b.observe(c.value,y),D(c),t=new B(c.value,{mode:"read",showToolbar:!1,showContextmenu:e.options.showContextmenu||!1,view:{height:()=>i.value&&i.value.clientHeight||300,width:()=>i.value&&i.value.clientWidth||1200},row:{height:24,len:100},col:{len:26,width:80,indexWidth:60,minWidth:60},autoFocus:!1}).loadData({});let d=t.bottombar.swapFunc;t.bottombar.swapFunc=function(r){d.call(t.bottombar,r),f=r,setTimeout(()=>{t.reRender(),x(o,n,a._worksheets[f],u,e.options)})};let s=t.sheet.editor.clear;t.sheet.editor.clear=function(...r){s.apply(t.sheet.editor,r),setTimeout(()=>{x(o,n,a._worksheets[f],u,e.options)})};let m=t.sheet.editor.setOffset;t.sheet.editor.setOffset=function(...r){m.apply(t.sheet.editor,r),u=r[0],x(o,n,a._worksheets[f],u,e.options)},o=c.value.querySelector("canvas").getContext("2d"),e.src&&g(e.src,e.requestOptions).then(v).catch(r=>{n=[],a={_worksheets:[]},t.loadData({}),l("error",r)})})}),I(()=>{b.disconnect(),t=null}),M(()=>e.src,()=>{e.src?g(e.src,e.requestOptions).then(v).catch(d=>{n=[],a={_worksheets:[]},t.loadData({}),l("error",d)}):(n=[],a={_worksheets:[]},t.loadData({}),l("error",new Error("src属性不能为空")))});function S(d){q(d||`vue-office-excel-${new Date().getTime()}.xlsx`,h)}return{wrapperRef:i,rootRef:c,save:S}}}),X={class:"vue-office-excel",ref:"wrapperRef"},Y={class:"vue-office-excel-main",ref:"rootRef"};function Z(e,l,i,c,a,n){return T(),N("div",X,[A("div",Y,null,512)],512)}const _=V(Q,[["render",Z]]);_.install=function(e){e.component(_.name,_)};const re={__name:"ExcelDemo",setup(e){function l(){O.hideLoading()}function i(o){console.log("出差",o),O.hideLoading()}function c(o){return console.log("beforeTransformData",o),o}function a(o){return console.log("transformData",o),o}const n=location.origin+(location.pathname+"/").replace("//","/")+"static/test-files/test.xlsx",f=w();return(o,t)=>{const u=H("loading");return T(),P(K,{accept:".xlsx,.xls",placeholder:"请输入xlsx文件地址","default-src":n},{default:U(h=>[z(G(J(_),{ref_key:"docxRef",ref:f,src:h.src,options:{beforeTransformData:c,transformData:a,xls:h.xls},style:{flex:"1",height:"0"},onRendered:l,onError:i},null,8,["src","options"]),[[u,!0]])]),_:1})}}};export{re as default}; diff --git a/examples/dist/assets/JsDocxDemo-297054d3.js b/examples/dist/assets/JsDocxDemo-297054d3.js new file mode 100644 index 0000000..18a4238 --- /dev/null +++ b/examples/dist/assets/JsDocxDemo-297054d3.js @@ -0,0 +1 @@ +var p=Object.defineProperty;var c=(i,e,t)=>e in i?p(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t;var n=(i,e,t)=>(c(i,typeof e!="symbol"?e+"":e,t),t);import{d as r}from"./docx-53fc2607.js";import{d as l}from"./url-de9b02cf.js";import{r as h,o as d,a as u,c as m}from"./index-75869108.js";import"./_commonjs-dynamic-modules-302442b1.js";typeof window.setImmediate>"u"&&(window.setImmediate=function(i,...e){setTimeout(()=>i(e))});class w{constructor(e,t={},s={}){n(this,"container",null);n(this,"wrapper",null);n(this,"wrapperMain",null);n(this,"options",{});n(this,"requestOptions",{});n(this,"fileData",null);this.container=e,this.options=t,this.requestOptions=s,this.createWrapper()}createWrapper(){this.wrapper=document.createElement("div"),this.wrapper.className="vue-office-docx",this.wrapperMain=document.createElement("div"),this.wrapperMain.className="vue-office-docx-main",this.wrapper.appendChild(this.wrapperMain),this.container.appendChild(this.wrapper)}setOptions(e){this.options=e}setRequestOptions(e){this.requestOptions=e}preview(e){return new Promise((t,s)=>{r.getData(e,this.requestOptions).then(async o=>{this.fileData=await r.getBlob(o),r.render(this.fileData,this.wrapperMain,this.options).then(()=>{t()}).catch(a=>{r.render("",this.wrapperMain,this.options),s(a)})}).catch(o=>{r.render("",this.wrapperMain,this.options),s(o)})})}save(e){l(e||`js-preview-docx-${new Date().getTime()}.docx`,this.fileData)}destroy(){this.container.removeChild(this.wrapper),this.container=null,this.wrapper=null,this.wrapperMain=null,this.options=null,this.requestOptions=null}}function f(i,e,t){return new w(i,e,t)}const v={init:f};const q={__name:"JsDocxDemo",setup(i){const e=h(null);return d(()=>{let t=v.init(e.value);t.preview("/vue-office/examples/dist/static/test-files/test.docx").then(s=>{console.log("docx preview done"),setTimeout(()=>{t.preview("/vue-office/examples/dist/static/test-files/test2.docx")},3e3)}).catch(s=>{console.log("err",s)})}),(t,s)=>(u(),m("div",{ref_key:"dom",ref:e},null,512))}};export{q as default}; diff --git a/examples/dist/assets/JsExcelDemo-5dfb080f.js b/examples/dist/assets/JsExcelDemo-5dfb080f.js new file mode 100644 index 0000000..1f7b0af --- /dev/null +++ b/examples/dist/assets/JsExcelDemo-5dfb080f.js @@ -0,0 +1 @@ +var c=Object.defineProperty;var p=(o,e,t)=>e in o?c(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t;var s=(o,e,t)=>(p(o,typeof e!="symbol"?e+"":e,t),t);import{S as u,a as h,b as d,t as w,c as l,l as f,r as m,g as x}from"./hack-62af20e5.js";import{d as b}from"./url-de9b02cf.js";/* empty css */import{r as D,o as k,a as v,c as S}from"./index-75869108.js";import"./_commonjs-dynamic-modules-302442b1.js";const _={xls:!1,minColLength:20};class E{constructor(e,t={},r={}){s(this,"container",null);s(this,"wrapper",null);s(this,"wrapperMain",null);s(this,"options",{});s(this,"requestOptions",{});s(this,"mediasSource",[]);s(this,"workbookDataSource",{_worksheets:[]});s(this,"sheetIndex",1);s(this,"ctx",null);s(this,"xs",null);s(this,"offset",null);s(this,"observer",null);s(this,"fileData",null);this.container=e,this.options={..._,...t},this.requestOptions=r,this.createWrapper(),this.initSpreadsheet(),this.hack()}createWrapper(){this.wrapper=document.createElement("div"),this.wrapper.className="vue-office-excel",this.wrapperMain=document.createElement("div"),this.wrapperMain.className="vue-office-excel-main",this.wrapper.appendChild(this.wrapperMain),this.container.appendChild(this.wrapper)}initSpreadsheet(){this.xs=new u(this.wrapperMain,{mode:"read",showToolbar:!1,showContextmenu:this.options.showContextmenu||!1,view:{height:()=>this.wrapper&&this.wrapper.clientHeight||300,width:()=>this.wrapper&&this.wrapper.clientWidth||1200},row:{height:24,len:100},col:{len:26,width:80,indexWidth:60,minWidth:60},autoFocus:!1}).loadData({});let e=this,t=this.xs.bottombar.swapFunc;this.xs.bottombar.swapFunc=function(a){t.call(e.xs.bottombar,a),e.sheetIndex=a,setTimeout(()=>{e.xs.reRender(),h(e.ctx,e.mediasSource,e.workbookDataSource._worksheets[e.sheetIndex],e.offset)})};let r=this.xs.sheet.editor.clear;this.xs.sheet.editor.clear=function(...a){r.apply(e.xs.sheet.editor,a),setTimeout(()=>{h(e.ctx,e.mediasSource,e.workbookDataSource._worksheets[e.sheetIndex],e.offset)})};let i=this.xs.sheet.editor.setOffset;this.xs.sheet.editor.setOffset=function(...a){i.apply(e.xs.sheet.editor,a),e.offset=a[0],h(e.ctx,e.mediasSource,e.workbookDataSource._worksheets[e.sheetIndex],e.offset)};const n=this.wrapperMain.querySelector("canvas");this.ctx=n.getContext("2d")}renderExcel(e){return this.fileData=e,d(e,this.options.xls).then(t=>{if(!t._worksheets||t._worksheets.length===0)throw new Error("未获取到数据,可能文件格式不正确或文件已损坏");this.options.beforeTransformData&&typeof this.options.beforeTransformData=="function"&&(t=this.options.beforeTransformData(t));let{workbookData:r,medias:i,workbookSource:n}=w(t,this.options);this.options.transformData&&typeof this.options.transformData=="function"&&(r=this.options.transformData(r)),this.mediasSource=i,this.workbookDataSource=n,this.offset=null,this.sheetIndex=0,l(),this.xs.loadData(r),h(this.ctx,this.mediasSource,this.workbookDataSource._worksheets[this.sheetIndex],this.offset)}).catch(t=>(this.mediasSource=[],this.workbookDataSource={_worksheets:[]},l(),this.xs.loadData({}),Promise.reject(t)))}hack(){const e=f.debounce(m,200).bind(this,this.wrapperMain);this.observer=new MutationObserver(e);const t={attributes:!0,childList:!0,subtree:!0};this.observer.observe(this.wrapperMain,t),e(this.wrapperMain)}setOptions(e){this.options=e}setRequestOptions(e){this.requestOptions=e}preview(e){return new Promise((t,r)=>{x(e,this.requestOptions).then(i=>{this.renderExcel(i).then(t).catch(n=>{this.mediasSource=[],this.workbookDataSource={_worksheets:[]},this.xs.loadData({}),r(n)})}).catch(i=>{this.mediasSource=[],this.workbookDataSource={_worksheets:[]},this.xs.loadData({}),r(i)})})}save(e){b(e||`js-preview-excel-${new Date().getTime()}.xlsx`,this.fileData)}destroy(){this.observer.disconnect(),this.container.removeChild(this.wrapper),this.container=null,this.wrapper=null,this.wrapperMain=null,this.ctx=null,this.xs=null,this.observer=null,this.options=null,this.requestOptions=null,this.mediasSource=null,this.workbookDataSource=null}}function g(o,e,t){return new E(o,e,t)}const O={init:g},P={__name:"JsExcelDemo",setup(o){const e=D(null);return k(()=>{window.myExcelPreview=O.init(e.value,{transformData:function(t){return console.log("transformData",t),t}}),window.myExcelPreview.preview("/vue-office/examples/dist/static/test-files/test.xlsx").then(t=>{console.log("excel preview done",window.myExcelPreview)}).catch(t=>{console.log("err",t)})}),(t,r)=>(v(),S("div",{ref_key:"dom",ref:e,style:{height:"calc(100vh - 50px)"}},null,512))}};export{P as default}; diff --git a/examples/dist/assets/JsPdfDemo-72995c07.js b/examples/dist/assets/JsPdfDemo-72995c07.js new file mode 100644 index 0000000..bf6e0a5 --- /dev/null +++ b/examples/dist/assets/JsPdfDemo-72995c07.js @@ -0,0 +1 @@ +var h=Object.defineProperty;var u=(d,Z,l)=>Z in d?h(d,Z,{enumerable:!0,configurable:!0,writable:!0,value:l}):d[Z]=l;var X=(d,Z,l)=>(u(d,typeof Z!="symbol"?Z+"":Z,l),l);import{l as s,g as p,d as J}from"./url-de9b02cf.js";import{o as S}from"./omit-f856690a.js";/* empty css */import{r as R,o as N,a as x,c as K}from"./index-75869108.js";const M="LyohIEZvciBsaWNlbnNlIGluZm9ybWF0aW9uIHBsZWFzZSBzZWUgd29ya2VyLmpzLkxJQ0VOU0UudHh0ICovCnZhciBlLHQ7ZT1nbG9iYWxUaGlzLHQ9KCk9PigoKT0+e3ZhciBlPVssKGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LldvcmtlclRhc2s9dC5Xb3JrZXJNZXNzYWdlSGFuZGxlcj12b2lkIDA7dmFyIG49cigyKSxhPXIoMTM0KSxpPXIoMTM1KSxvPXIoMTM3KSxzPXIoMjAwKSxjPXIoMTk0KSx1PXIoNCksbD1yKDIzMSksZj1yKDIzMik7ZnVuY3Rpb24gaCgpe2g9ZnVuY3Rpb24oKXtyZXR1cm4gZX07dmFyIGU9e30sdD1PYmplY3QucHJvdG90eXBlLHI9dC5oYXNPd25Qcm9wZXJ0eSxuPU9iamVjdC5kZWZpbmVQcm9wZXJ0eXx8ZnVuY3Rpb24oZSx0LHIpe2VbdF09ci52YWx1ZX0sYT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sP1N5bWJvbDp7fSxpPWEuaXRlcmF0b3J8fCJAQGl0ZXJhdG9yIixvPWEuYXN5bmNJdGVyYXRvcnx8IkBAYXN5bmNJdGVyYXRvciIscz1hLnRvU3RyaW5nVGFnfHwiQEB0b1N0cmluZ1RhZyI7ZnVuY3Rpb24gYyhlLHQscil7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOnIsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KSxlW3RdfXRyeXtjKHt9LCIiKX1jYXRjaChlKXtjPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZVt0XT1yfX1mdW5jdGlvbiB1KGUsdCxyLGEpe3ZhciBpPXQmJnQucHJvdG90eXBlIGluc3RhbmNlb2YgZD90OmQsbz1PYmplY3QuY3JlYXRlKGkucHJvdG90eXBlKSxzPW5ldyBGKGF8fFtdKTtyZXR1cm4gbihvLCJfaW52b2tlIix7dmFsdWU6eChlLHIscyl9KSxvfWZ1bmN0aW9uIGwoZSx0LHIpe3RyeXtyZXR1cm57dHlwZToibm9ybWFsIixhcmc6ZS5jYWxsKHQscil9fWNhdGNoKGUpe3JldHVybnt0eXBlOiJ0aHJvdyIsYXJnOmV9fX1lLndyYXA9dTt2YXIgZj17fTtmdW5jdGlvbiBkKCl7fWZ1bmN0aW9uIHAoKXt9ZnVuY3Rpb24gZygpe312YXIgdj17fTtjKHYsaSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKTt2YXIgeT1PYmplY3QuZ2V0UHJvdG90eXBlT2YsbT15JiZ5KHkoUChbXSkpKTttJiZtIT09dCYmci5jYWxsKG0saSkmJih2PW0pO3ZhciB3PWcucHJvdG90eXBlPWQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodik7ZnVuY3Rpb24gayhlKXtbIm5leHQiLCJ0aHJvdyIsInJldHVybiJdLmZvckVhY2goKGZ1bmN0aW9uKHQpe2MoZSx0LChmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5faW52b2tlKHQsZSl9KSl9KSl9ZnVuY3Rpb24gUyhlLHQpe2Z1bmN0aW9uIGEobixpLG8scyl7dmFyIGM9bChlW25dLGUsaSk7aWYoInRocm93IiE9PWMudHlwZSl7dmFyIHU9Yy5hcmcsZj11LnZhbHVlO3JldHVybiBmJiYib2JqZWN0Ij09YihmKSYmci5jYWxsKGYsIl9fYXdhaXQiKT90LnJlc29sdmUoZi5fX2F3YWl0KS50aGVuKChmdW5jdGlvbihlKXthKCJuZXh0IixlLG8scyl9KSwoZnVuY3Rpb24oZSl7YSgidGhyb3ciLGUsbyxzKX0pKTp0LnJlc29sdmUoZikudGhlbigoZnVuY3Rpb24oZSl7dS52YWx1ZT1lLG8odSl9KSwoZnVuY3Rpb24oZSl7cmV0dXJuIGEoInRocm93IixlLG8scyl9KSl9cyhjLmFyZyl9dmFyIGk7bih0aGlzLCJfaW52b2tlIix7dmFsdWU6ZnVuY3Rpb24oZSxyKXtmdW5jdGlvbiBuKCl7cmV0dXJuIG5ldyB0KChmdW5jdGlvbih0LG4pe2EoZSxyLHQsbil9KSl9cmV0dXJuIGk9aT9pLnRoZW4obixuKTpuKCl9fSl9ZnVuY3Rpb24geChlLHQscil7dmFyIG49InN1c3BlbmRlZFN0YXJ0IjtyZXR1cm4gZnVuY3Rpb24oYSxpKXtpZigiZXhlY3V0aW5nIj09PW4pdGhyb3cgbmV3IEVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nIik7aWYoImNvbXBsZXRlZCI9PT1uKXtpZigidGhyb3ciPT09YSl0aHJvdyBpO3JldHVybnt2YWx1ZTp2b2lkIDAsZG9uZTohMH19Zm9yKHIubWV0aG9kPWEsci5hcmc9aTs7KXt2YXIgbz1yLmRlbGVnYXRlO2lmKG8pe3ZhciBzPU8obyxyKTtpZihzKXtpZihzPT09Ziljb250aW51ZTtyZXR1cm4gc319aWYoIm5leHQiPT09ci5tZXRob2Qpci5zZW50PXIuX3NlbnQ9ci5hcmc7ZWxzZSBpZigidGhyb3ciPT09ci5tZXRob2Qpe2lmKCJzdXNwZW5kZWRTdGFydCI9PT1uKXRocm93IG49ImNvbXBsZXRlZCIsci5hcmc7ci5kaXNwYXRjaEV4Y2VwdGlvbihyLmFyZyl9ZWxzZSJyZXR1cm4iPT09ci5tZXRob2QmJnIuYWJydXB0KCJyZXR1cm4iLHIuYXJnKTtuPSJleGVjdXRpbmciO3ZhciBjPWwoZSx0LHIpO2lmKCJub3JtYWwiPT09Yy50eXBlKXtpZihuPXIuZG9uZT8iY29tcGxldGVkIjoic3VzcGVuZGVkWWllbGQiLGMuYXJnPT09Ziljb250aW51ZTtyZXR1cm57dmFsdWU6Yy5hcmcsZG9uZTpyLmRvbmV9fSJ0aHJvdyI9PT1jLnR5cGUmJihuPSJjb21wbGV0ZWQiLHIubWV0aG9kPSJ0aHJvdyIsci5hcmc9Yy5hcmcpfX19ZnVuY3Rpb24gTyhlLHQpe3ZhciByPXQubWV0aG9kLG49ZS5pdGVyYXRvcltyXTtpZih2b2lkIDA9PT1uKXJldHVybiB0LmRlbGVnYXRlPW51bGwsInRocm93Ij09PXImJmUuaXRlcmF0b3IucmV0dXJuJiYodC5tZXRob2Q9InJldHVybiIsdC5hcmc9dm9pZCAwLE8oZSx0KSwidGhyb3ciPT09dC5tZXRob2QpfHwicmV0dXJuIiE9PXImJih0Lm1ldGhvZD0idGhyb3ciLHQuYXJnPW5ldyBUeXBlRXJyb3IoIlRoZSBpdGVyYXRvciBkb2VzIG5vdCBwcm92aWRlIGEgJyIrcisiJyBtZXRob2QiKSksZjt2YXIgYT1sKG4sZS5pdGVyYXRvcix0LmFyZyk7aWYoInRocm93Ij09PWEudHlwZSlyZXR1cm4gdC5tZXRob2Q9InRocm93Iix0LmFyZz1hLmFyZyx0LmRlbGVnYXRlPW51bGwsZjt2YXIgaT1hLmFyZztyZXR1cm4gaT9pLmRvbmU/KHRbZS5yZXN1bHROYW1lXT1pLnZhbHVlLHQubmV4dD1lLm5leHRMb2MsInJldHVybiIhPT10Lm1ldGhvZCYmKHQubWV0aG9kPSJuZXh0Iix0LmFyZz12b2lkIDApLHQuZGVsZWdhdGU9bnVsbCxmKTppOih0Lm1ldGhvZD0idGhyb3ciLHQuYXJnPW5ldyBUeXBlRXJyb3IoIml0ZXJhdG9yIHJlc3VsdCBpcyBub3QgYW4gb2JqZWN0IiksdC5kZWxlZ2F0ZT1udWxsLGYpfWZ1bmN0aW9uIEEoZSl7dmFyIHQ9e3RyeUxvYzplWzBdfTsxIGluIGUmJih0LmNhdGNoTG9jPWVbMV0pLDIgaW4gZSYmKHQuZmluYWxseUxvYz1lWzJdLHQuYWZ0ZXJMb2M9ZVszXSksdGhpcy50cnlFbnRyaWVzLnB1c2godCl9ZnVuY3Rpb24gQyhlKXt2YXIgdD1lLmNvbXBsZXRpb258fHt9O3QudHlwZT0ibm9ybWFsIixkZWxldGUgdC5hcmcsZS5jb21wbGV0aW9uPXR9ZnVuY3Rpb24gRihlKXt0aGlzLnRyeUVudHJpZXM9W3t0cnlMb2M6InJvb3QifV0sZS5mb3JFYWNoKEEsdGhpcyksdGhpcy5yZXNldCghMCl9ZnVuY3Rpb24gUChlKXtpZihlKXt2YXIgdD1lW2ldO2lmKHQpcmV0dXJuIHQuY2FsbChlKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgZS5uZXh0KXJldHVybiBlO2lmKCFpc05hTihlLmxlbmd0aCkpe3ZhciBuPS0xLGE9ZnVuY3Rpb24gdCgpe2Zvcig7KytuPGUubGVuZ3RoOylpZihyLmNhbGwoZSxuKSlyZXR1cm4gdC52YWx1ZT1lW25dLHQuZG9uZT0hMSx0O3JldHVybiB0LnZhbHVlPXZvaWQgMCx0LmRvbmU9ITAsdH07cmV0dXJuIGEubmV4dD1hfX1yZXR1cm57bmV4dDpUfX1mdW5jdGlvbiBUKCl7cmV0dXJue3ZhbHVlOnZvaWQgMCxkb25lOiEwfX1yZXR1cm4gcC5wcm90b3R5cGU9ZyxuKHcsImNvbnN0cnVjdG9yIix7dmFsdWU6Zyxjb25maWd1cmFibGU6ITB9KSxuKGcsImNvbnN0cnVjdG9yIix7dmFsdWU6cCxjb25maWd1cmFibGU6ITB9KSxwLmRpc3BsYXlOYW1lPWMoZyxzLCJHZW5lcmF0b3JGdW5jdGlvbiIpLGUuaXNHZW5lcmF0b3JGdW5jdGlvbj1mdW5jdGlvbihlKXt2YXIgdD0iZnVuY3Rpb24iPT10eXBlb2YgZSYmZS5jb25zdHJ1Y3RvcjtyZXR1cm4hIXQmJih0PT09cHx8IkdlbmVyYXRvckZ1bmN0aW9uIj09PSh0LmRpc3BsYXlOYW1lfHx0Lm5hbWUpKX0sZS5tYXJrPWZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsZyk6KGUuX19wcm90b19fPWcsYyhlLHMsIkdlbmVyYXRvckZ1bmN0aW9uIikpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodyksZX0sZS5hd3JhcD1mdW5jdGlvbihlKXtyZXR1cm57X19hd2FpdDplfX0sayhTLnByb3RvdHlwZSksYyhTLnByb3RvdHlwZSxvLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpLGUuQXN5bmNJdGVyYXRvcj1TLGUuYXN5bmM9ZnVuY3Rpb24odCxyLG4sYSxpKXt2b2lkIDA9PT1pJiYoaT1Qcm9taXNlKTt2YXIgbz1uZXcgUyh1KHQscixuLGEpLGkpO3JldHVybiBlLmlzR2VuZXJhdG9yRnVuY3Rpb24ocik/bzpvLm5leHQoKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gZS5kb25lP2UudmFsdWU6by5uZXh0KCl9KSl9LGsodyksYyh3LHMsIkdlbmVyYXRvciIpLGModyxpLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpLGModywidG9TdHJpbmciLChmdW5jdGlvbigpe3JldHVybiJbb2JqZWN0IEdlbmVyYXRvcl0ifSkpLGUua2V5cz1mdW5jdGlvbihlKXt2YXIgdD1PYmplY3QoZSkscj1bXTtmb3IodmFyIG4gaW4gdClyLnB1c2gobik7cmV0dXJuIHIucmV2ZXJzZSgpLGZ1bmN0aW9uIGUoKXtmb3IoO3IubGVuZ3RoOyl7dmFyIG49ci5wb3AoKTtpZihuIGluIHQpcmV0dXJuIGUudmFsdWU9bixlLmRvbmU9ITEsZX1yZXR1cm4gZS5kb25lPSEwLGV9fSxlLnZhbHVlcz1QLEYucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpGLHJlc2V0OmZ1bmN0aW9uKGUpe2lmKHRoaXMucHJldj0wLHRoaXMubmV4dD0wLHRoaXMuc2VudD10aGlzLl9zZW50PXZvaWQgMCx0aGlzLmRvbmU9ITEsdGhpcy5kZWxlZ2F0ZT1udWxsLHRoaXMubWV0aG9kPSJuZXh0Iix0aGlzLmFyZz12b2lkIDAsdGhpcy50cnlFbnRyaWVzLmZvckVhY2goQyksIWUpZm9yKHZhciB0IGluIHRoaXMpInQiPT09dC5jaGFyQXQoMCkmJnIuY2FsbCh0aGlzLHQpJiYhaXNOYU4oK3Quc2xpY2UoMSkpJiYodGhpc1t0XT12b2lkIDApfSxzdG9wOmZ1bmN0aW9uKCl7dGhpcy5kb25lPSEwO3ZhciBlPXRoaXMudHJ5RW50cmllc1swXS5jb21wbGV0aW9uO2lmKCJ0aHJvdyI9PT1lLnR5cGUpdGhyb3cgZS5hcmc7cmV0dXJuIHRoaXMucnZhbH0sZGlzcGF0Y2hFeGNlcHRpb246ZnVuY3Rpb24oZSl7aWYodGhpcy5kb25lKXRocm93IGU7dmFyIHQ9dGhpcztmdW5jdGlvbiBuKHIsbil7cmV0dXJuIG8udHlwZT0idGhyb3ciLG8uYXJnPWUsdC5uZXh0PXIsbiYmKHQubWV0aG9kPSJuZXh0Iix0LmFyZz12b2lkIDApLCEhbn1mb3IodmFyIGE9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2E+PTA7LS1hKXt2YXIgaT10aGlzLnRyeUVudHJpZXNbYV0sbz1pLmNvbXBsZXRpb247aWYoInJvb3QiPT09aS50cnlMb2MpcmV0dXJuIG4oImVuZCIpO2lmKGkudHJ5TG9jPD10aGlzLnByZXYpe3ZhciBzPXIuY2FsbChpLCJjYXRjaExvYyIpLGM9ci5jYWxsKGksImZpbmFsbHlMb2MiKTtpZihzJiZjKXtpZih0aGlzLnByZXY8aS5jYXRjaExvYylyZXR1cm4gbihpLmNhdGNoTG9jLCEwKTtpZih0aGlzLnByZXY8aS5maW5hbGx5TG9jKXJldHVybiBuKGkuZmluYWxseUxvYyl9ZWxzZSBpZihzKXtpZih0aGlzLnByZXY8aS5jYXRjaExvYylyZXR1cm4gbihpLmNhdGNoTG9jLCEwKX1lbHNle2lmKCFjKXRocm93IG5ldyBFcnJvcigidHJ5IHN0YXRlbWVudCB3aXRob3V0IGNhdGNoIG9yIGZpbmFsbHkiKTtpZih0aGlzLnByZXY8aS5maW5hbGx5TG9jKXJldHVybiBuKGkuZmluYWxseUxvYyl9fX19LGFicnVwdDpmdW5jdGlvbihlLHQpe2Zvcih2YXIgbj10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7bj49MDstLW4pe3ZhciBhPXRoaXMudHJ5RW50cmllc1tuXTtpZihhLnRyeUxvYzw9dGhpcy5wcmV2JiZyLmNhbGwoYSwiZmluYWxseUxvYyIpJiZ0aGlzLnByZXY8YS5maW5hbGx5TG9jKXt2YXIgaT1hO2JyZWFrfX1pJiYoImJyZWFrIj09PWV8fCJjb250aW51ZSI9PT1lKSYmaS50cnlMb2M8PXQmJnQ8PWkuZmluYWxseUxvYyYmKGk9bnVsbCk7dmFyIG89aT9pLmNvbXBsZXRpb246e307cmV0dXJuIG8udHlwZT1lLG8uYXJnPXQsaT8odGhpcy5tZXRob2Q9Im5leHQiLHRoaXMubmV4dD1pLmZpbmFsbHlMb2MsZik6dGhpcy5jb21wbGV0ZShvKX0sY29tcGxldGU6ZnVuY3Rpb24oZSx0KXtpZigidGhyb3ciPT09ZS50eXBlKXRocm93IGUuYXJnO3JldHVybiJicmVhayI9PT1lLnR5cGV8fCJjb250aW51ZSI9PT1lLnR5cGU/dGhpcy5uZXh0PWUuYXJnOiJyZXR1cm4iPT09ZS50eXBlPyh0aGlzLnJ2YWw9dGhpcy5hcmc9ZS5hcmcsdGhpcy5tZXRob2Q9InJldHVybiIsdGhpcy5uZXh0PSJlbmQiKToibm9ybWFsIj09PWUudHlwZSYmdCYmKHRoaXMubmV4dD10KSxmfSxmaW5pc2g6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTt0Pj0wOy0tdCl7dmFyIHI9dGhpcy50cnlFbnRyaWVzW3RdO2lmKHIuZmluYWxseUxvYz09PWUpcmV0dXJuIHRoaXMuY29tcGxldGUoci5jb21wbGV0aW9uLHIuYWZ0ZXJMb2MpLEMociksZn19LGNhdGNoOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7dD49MDstLXQpe3ZhciByPXRoaXMudHJ5RW50cmllc1t0XTtpZihyLnRyeUxvYz09PWUpe3ZhciBuPXIuY29tcGxldGlvbjtpZigidGhyb3ciPT09bi50eXBlKXt2YXIgYT1uLmFyZztDKHIpfXJldHVybiBhfX10aHJvdyBuZXcgRXJyb3IoImlsbGVnYWwgY2F0Y2ggYXR0ZW1wdCIpfSxkZWxlZ2F0ZVlpZWxkOmZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZT17aXRlcmF0b3I6UChlKSxyZXN1bHROYW1lOnQsbmV4dExvYzpyfSwibmV4dCI9PT10aGlzLm1ldGhvZCYmKHRoaXMuYXJnPXZvaWQgMCksZn19LGV9ZnVuY3Rpb24gZChlLHQpe3JldHVybiB5KGUpfHxmdW5jdGlvbihlLHQpe3ZhciByPW51bGw9PWU/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9cil7dmFyIG4sYSxpLG8scz1bXSxjPSEwLHU9ITE7dHJ5e2lmKGk9KHI9ci5jYWxsKGUpKS5uZXh0LDA9PT10KXtpZihPYmplY3QocikhPT1yKXJldHVybjtjPSExfWVsc2UgZm9yKDshKGM9KG49aS5jYWxsKHIpKS5kb25lKSYmKHMucHVzaChuLnZhbHVlKSxzLmxlbmd0aCE9PXQpO2M9ITApO31jYXRjaChlKXt1PSEwLGE9ZX1maW5hbGx5e3RyeXtpZighYyYmbnVsbCE9ci5yZXR1cm4mJihvPXIucmV0dXJuKCksT2JqZWN0KG8pIT09bykpcmV0dXJufWZpbmFsbHl7aWYodSl0aHJvdyBhfX1yZXR1cm4gc319KGUsdCl8fGcoZSx0KXx8cCgpfWZ1bmN0aW9uIHAoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfWZ1bmN0aW9uIGcoZSx0KXtpZihlKXtpZigic3RyaW5nIj09dHlwZW9mIGUpcmV0dXJuIHYoZSx0KTt2YXIgcj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7cmV0dXJuIk9iamVjdCI9PT1yJiZlLmNvbnN0cnVjdG9yJiYocj1lLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09cnx8IlNldCI9PT1yP0FycmF5LmZyb20oZSk6IkFyZ3VtZW50cyI9PT1yfHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChyKT92KGUsdCk6dm9pZCAwfX1mdW5jdGlvbiB2KGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciByPTAsbj1uZXcgQXJyYXkodCk7cjx0O3IrKyluW3JdPWVbcl07cmV0dXJuIG59ZnVuY3Rpb24geShlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfWZ1bmN0aW9uIG0oZSx0LHIsbixhLGksbyl7dHJ5e3ZhciBzPWVbaV0obyksYz1zLnZhbHVlfWNhdGNoKGUpe3JldHVybiB2b2lkIHIoZSl9cy5kb25lP3QoYyk6UHJvbWlzZS5yZXNvbHZlKGMpLnRoZW4obixhKX1mdW5jdGlvbiBiKGUpe3JldHVybiBiPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSxiKGUpfWZ1bmN0aW9uIHcoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBrKGUsdCl7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBuPXRbcl07bi5lbnVtZXJhYmxlPW4uZW51bWVyYWJsZXx8ITEsbi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIG4mJihuLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwodm9pZCAwLGE9ZnVuY3Rpb24oZSx0KXtpZigib2JqZWN0IiE9PWIoZSl8fG51bGw9PT1lKXJldHVybiBlO3ZhciByPWVbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1yKXt2YXIgbj1yLmNhbGwoZSwic3RyaW5nIik7aWYoIm9iamVjdCIhPT1iKG4pKXJldHVybiBuO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuIFN0cmluZyhlKX0obi5rZXkpLCJzeW1ib2wiPT09YihhKT9hOlN0cmluZyhhKSksbil9dmFyIGF9ZnVuY3Rpb24gUyhlLHQscil7cmV0dXJuIHQmJmsoZS5wcm90b3R5cGUsdCksciYmayhlLHIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGV9dmFyIHg9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQpe3codGhpcyxlKSx0aGlzLm5hbWU9dCx0aGlzLnRlcm1pbmF0ZWQ9ITEsdGhpcy5fY2FwYWJpbGl0eT0oMCxuLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpfXJldHVybiBTKGUsW3trZXk6ImZpbmlzaGVkIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY2FwYWJpbGl0eS5wcm9taXNlfX0se2tleToiZmluaXNoIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX2NhcGFiaWxpdHkucmVzb2x2ZSgpfX0se2tleToidGVybWluYXRlIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMudGVybWluYXRlZD0hMH19LHtrZXk6ImVuc3VyZU5vdFRlcm1pbmF0ZWQiLHZhbHVlOmZ1bmN0aW9uKCl7aWYodGhpcy50ZXJtaW5hdGVkKXRocm93IG5ldyBFcnJvcigiV29ya2VyIHRhc2sgd2FzIHRlcm1pbmF0ZWQiKX19XSksZX0oKTt0LldvcmtlclRhc2s9eDt2YXIgTyxBPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe3codGhpcyxlKX1yZXR1cm4gUyhlLG51bGwsW3trZXk6InNldHVwIix2YWx1ZTpmdW5jdGlvbih0LHIpe3ZhciBhPSExO3Qub24oInRlc3QiLChmdW5jdGlvbihlKXthfHwoYT0hMCx0LnNlbmQoInRlc3QiLGUgaW5zdGFuY2VvZiBVaW50OEFycmF5KSl9KSksdC5vbigiY29uZmlndXJlIiwoZnVuY3Rpb24oZSl7KDAsbi5zZXRWZXJib3NpdHlMZXZlbCkoZS52ZXJib3NpdHkpfSkpLHQub24oIkdldERvY1JlcXVlc3QiLChmdW5jdGlvbih0KXtyZXR1cm4gZS5jcmVhdGVEb2N1bWVudEhhbmRsZXIodCxyKX0pKX19LHtrZXk6ImNyZWF0ZURvY3VtZW50SGFuZGxlciIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgcix2PSExLGI9bnVsbCx3PVtdLGs9KDAsbi5nZXRWZXJib3NpdHlMZXZlbCkoKSxTPWUsTz1TLmRvY0lkLEE9Uy5hcGlWZXJzaW9uLEM9IjMuMi4wIjtpZihBIT09Qyl0aHJvdyBuZXcgRXJyb3IoJ1RoZSBBUEkgdmVyc2lvbiAiJy5jb25jYXQoQSwnIiBkb2VzIG5vdCBtYXRjaCAnKSsndGhlIFdvcmtlciB2ZXJzaW9uICInLmNvbmNhdChDLCciLicpKTt2YXIgRj1bXTtmb3IodmFyIFAgaW5bXSlGLnB1c2goUCk7aWYoRi5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJUaGUgYEFycmF5LnByb3RvdHlwZWAgY29udGFpbnMgdW5leHBlY3RlZCBlbnVtZXJhYmxlIHByb3BlcnRpZXM6ICIrRi5qb2luKCIsICIpKyI7IHRodXMgYnJlYWtpbmcgZS5nLiBgZm9yLi4uaW5gIGl0ZXJhdGlvbiBvZiBgQXJyYXlgcy4iKTtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlYWRhYmxlU3RyZWFtKXt2YXIgVD0iVGhlIGJyb3dzZXIvZW52aXJvbm1lbnQgbGFja3MgbmF0aXZlIHN1cHBvcnQgZm9yIGNyaXRpY2FsIGZ1bmN0aW9uYWxpdHkgdXNlZCBieSB0aGUgUERGLmpzIGxpYnJhcnkgKGUuZy4gYFJlYWRhYmxlU3RyZWFtYCk7ICI7aWYodS5pc05vZGVKUyl0aHJvdyBuZXcgRXJyb3IoVCsicGxlYXNlIHVzZSBhIGBsZWdhY3lgLWJ1aWxkIGluc3RlYWQuIik7dGhyb3cgbmV3IEVycm9yKFQrInBsZWFzZSB1cGRhdGUgdG8gYSBzdXBwb3J0ZWQgYnJvd3Nlci4iKX12YXIgST1PKyJfd29ya2VyIixFPW5ldyBsLk1lc3NhZ2VIYW5kbGVyKEksTyx0KTtmdW5jdGlvbiBqKCl7aWYodil0aHJvdyBuZXcgRXJyb3IoIldvcmtlciB3YXMgdGVybWluYXRlZCIpfWZ1bmN0aW9uIE0oZSl7dy5wdXNoKGUpfWZ1bmN0aW9uIF8oZSl7ZS5maW5pc2goKTt2YXIgdD13LmluZGV4T2YoZSk7dy5zcGxpY2UodCwxKX1mdW5jdGlvbiBMKGUpe3JldHVybiBSLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBSKCl7dmFyIGU7cmV0dXJuIGU9aCgpLm1hcmsoKGZ1bmN0aW9uIGUodCl7dmFyIG4sYSxpLG8scyxjLHU7cmV0dXJuIGgoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsci5lbnN1cmVEb2MoImNoZWNrSGVhZGVyIik7Y2FzZSAyOnJldHVybiBlLm5leHQ9NCxyLmVuc3VyZURvYygicGFyc2VTdGFydFhSZWYiKTtjYXNlIDQ6cmV0dXJuIGUubmV4dD02LHIuZW5zdXJlRG9jKCJwYXJzZSIsW3RdKTtjYXNlIDY6cmV0dXJuIGUubmV4dD04LHIuZW5zdXJlRG9jKCJjaGVja0ZpcnN0UGFnZSIsW3RdKTtjYXNlIDg6cmV0dXJuIGUubmV4dD0xMCxyLmVuc3VyZURvYygiY2hlY2tMYXN0UGFnZSIsW3RdKTtjYXNlIDEwOnJldHVybiBlLm5leHQ9MTIsci5lbnN1cmVEb2MoImlzUHVyZVhmYSIpO2Nhc2UgMTI6aWYoIShuPWUuc2VudCkpe2UubmV4dD0xODticmVha31yZXR1cm4gTShhPW5ldyB4KCJsb2FkWGZhRm9udHMiKSksZS5uZXh0PTE4LFByb21pc2UuYWxsKFtyLmxvYWRYZmFGb250cyhFLGEpLmNhdGNoKChmdW5jdGlvbihlKXt9KSkudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gXyhhKX0pKSxyLmxvYWRYZmFJbWFnZXMoKV0pO2Nhc2UgMTg6cmV0dXJuIGUubmV4dD0yMCxQcm9taXNlLmFsbChbci5lbnN1cmVEb2MoIm51bVBhZ2VzIiksci5lbnN1cmVEb2MoImZpbmdlcnByaW50cyIpXSk7Y2FzZSAyMDppZihpPWUuc2VudCxvPWQoaSwyKSxzPW9bMF0sYz1vWzFdLCFuKXtlLm5leHQ9MzA7YnJlYWt9cmV0dXJuIGUubmV4dD0yNyxyLmVuc3VyZURvYygiaHRtbEZvclhmYSIpO2Nhc2UgMjc6ZS50MD1lLnNlbnQsZS5uZXh0PTMxO2JyZWFrO2Nhc2UgMzA6ZS50MD1udWxsO2Nhc2UgMzE6cmV0dXJuIHU9ZS50MCxlLmFicnVwdCgicmV0dXJuIix7bnVtUGFnZXM6cyxmaW5nZXJwcmludHM6YyxodG1sRm9yWGZhOnV9KTtjYXNlIDMzOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSksUj1mdW5jdGlvbigpe3ZhciB0PXRoaXMscj1hcmd1bWVudHM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihuLGEpe3ZhciBpPWUuYXBwbHkodCxyKTtmdW5jdGlvbiBvKGUpe20oaSxuLGEsbyxzLCJuZXh0IixlKX1mdW5jdGlvbiBzKGUpe20oaSxuLGEsbyxzLCJ0aHJvdyIsZSl9byh2b2lkIDApfSkpfSxSLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gRS5vbigiR2V0UGFnZSIsKGZ1bmN0aW9uKGUpe3JldHVybiByLmdldFBhZ2UoZS5wYWdlSW5kZXgpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLmFsbChbci5lbnN1cmUoZSwicm90YXRlIiksci5lbnN1cmUoZSwicmVmIiksci5lbnN1cmUoZSwidXNlclVuaXQiKSxyLmVuc3VyZShlLCJ2aWV3IildKS50aGVuKChmdW5jdGlvbihlKXt2YXIgdD1kKGUsNCk7cmV0dXJue3JvdGF0ZTp0WzBdLHJlZjp0WzFdLHVzZXJVbml0OnRbMl0sdmlldzp0WzNdfX0pKX0pKX0pKSxFLm9uKCJHZXRQYWdlSW5kZXgiLChmdW5jdGlvbihlKXt2YXIgdD1hLlJlZi5nZXQoZS5udW0sZS5nZW4pO3JldHVybiByLmVuc3VyZUNhdGFsb2coImdldFBhZ2VJbmRleCIsW3RdKX0pKSxFLm9uKCJHZXREZXN0aW5hdGlvbnMiLChmdW5jdGlvbihlKXtyZXR1cm4gci5lbnN1cmVDYXRhbG9nKCJkZXN0aW5hdGlvbnMiKX0pKSxFLm9uKCJHZXREZXN0aW5hdGlvbiIsKGZ1bmN0aW9uKGUpe3JldHVybiByLmVuc3VyZUNhdGFsb2coImdldERlc3RpbmF0aW9uIixbZS5pZF0pfSkpLEUub24oIkdldFBhZ2VMYWJlbHMiLChmdW5jdGlvbihlKXtyZXR1cm4gci5lbnN1cmVDYXRhbG9nKCJwYWdlTGFiZWxzIil9KSksRS5vbigiR2V0UGFnZUxheW91dCIsKGZ1bmN0aW9uKGUpe3JldHVybiByLmVuc3VyZUNhdGFsb2coInBhZ2VMYXlvdXQiKX0pKSxFLm9uKCJHZXRQYWdlTW9kZSIsKGZ1bmN0aW9uKGUpe3JldHVybiByLmVuc3VyZUNhdGFsb2coInBhZ2VNb2RlIil9KSksRS5vbigiR2V0Vmlld2VyUHJlZmVyZW5jZXMiLChmdW5jdGlvbihlKXtyZXR1cm4gci5lbnN1cmVDYXRhbG9nKCJ2aWV3ZXJQcmVmZXJlbmNlcyIpfSkpLEUub24oIkdldE9wZW5BY3Rpb24iLChmdW5jdGlvbihlKXtyZXR1cm4gci5lbnN1cmVDYXRhbG9nKCJvcGVuQWN0aW9uIil9KSksRS5vbigiR2V0QXR0YWNobWVudHMiLChmdW5jdGlvbihlKXtyZXR1cm4gci5lbnN1cmVDYXRhbG9nKCJhdHRhY2htZW50cyIpfSkpLEUub24oIkdldEphdmFTY3JpcHQiLChmdW5jdGlvbihlKXtyZXR1cm4gci5lbnN1cmVDYXRhbG9nKCJqYXZhU2NyaXB0Iil9KSksRS5vbigiR2V0RG9jSlNBY3Rpb25zIiwoZnVuY3Rpb24oZSl7cmV0dXJuIHIuZW5zdXJlQ2F0YWxvZygianNBY3Rpb25zIil9KSksRS5vbigiR2V0UGFnZUpTQWN0aW9ucyIsKGZ1bmN0aW9uKGUpe3ZhciB0PWUucGFnZUluZGV4O3JldHVybiByLmdldFBhZ2UodCkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIHIuZW5zdXJlKGUsImpzQWN0aW9ucyIpfSkpfSkpLEUub24oIkdldE91dGxpbmUiLChmdW5jdGlvbihlKXtyZXR1cm4gci5lbnN1cmVDYXRhbG9nKCJkb2N1bWVudE91dGxpbmUiKX0pKSxFLm9uKCJHZXRPcHRpb25hbENvbnRlbnRDb25maWciLChmdW5jdGlvbihlKXtyZXR1cm4gci5lbnN1cmVDYXRhbG9nKCJvcHRpb25hbENvbnRlbnRDb25maWciKX0pKSxFLm9uKCJHZXRQZXJtaXNzaW9ucyIsKGZ1bmN0aW9uKGUpe3JldHVybiByLmVuc3VyZUNhdGFsb2coInBlcm1pc3Npb25zIil9KSksRS5vbigiR2V0TWV0YWRhdGEiLChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5hbGwoW3IuZW5zdXJlRG9jKCJkb2N1bWVudEluZm8iKSxyLmVuc3VyZUNhdGFsb2coIm1ldGFkYXRhIildKX0pKSxFLm9uKCJHZXRNYXJrSW5mbyIsKGZ1bmN0aW9uKGUpe3JldHVybiByLmVuc3VyZUNhdGFsb2coIm1hcmtJbmZvIil9KSksRS5vbigiR2V0RGF0YSIsKGZ1bmN0aW9uKGUpe3JldHVybiByLnJlcXVlc3RMb2FkZWRTdHJlYW0oKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gZS5ieXRlc30pKX0pKSxFLm9uKCJHZXRBbm5vdGF0aW9ucyIsKGZ1bmN0aW9uKGUpe3ZhciB0PWUucGFnZUluZGV4LG49ZS5pbnRlbnQ7cmV0dXJuIHIuZ2V0UGFnZSh0KS50aGVuKChmdW5jdGlvbihlKXt2YXIgcj1uZXcgeCgiR2V0QW5ub3RhdGlvbnM6IHBhZ2UgIi5jb25jYXQodCkpO3JldHVybiBNKHIpLGUuZ2V0QW5ub3RhdGlvbnNEYXRhKEUscixuKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gXyhyKSxlfSksKGZ1bmN0aW9uKGUpe18ocil9KSl9KSl9KSksRS5vbigiR2V0RmllbGRPYmplY3RzIiwoZnVuY3Rpb24oZSl7cmV0dXJuIHIuZW5zdXJlRG9jKCJmaWVsZE9iamVjdHMiKX0pKSxFLm9uKCJIYXNKU0FjdGlvbnMiLChmdW5jdGlvbihlKXtyZXR1cm4gci5lbnN1cmVEb2MoImhhc0pTQWN0aW9ucyIpfSkpLEUub24oIkdldENhbGN1bGF0aW9uT3JkZXJJZHMiLChmdW5jdGlvbihlKXtyZXR1cm4gci5lbnN1cmVEb2MoImNhbGN1bGF0aW9uT3JkZXJJZHMiKX0pKSxFLm9uKCJTYXZlRG9jdW1lbnQiLChmdW5jdGlvbihlKXt2YXIgdD1lLmlzUHVyZVhmYSxvPWUubnVtUGFnZXMscz1lLmFubm90YXRpb25TdG9yYWdlLHU9ZS5maWxlbmFtZSxsPVtyLnJlcXVlc3RMb2FkZWRTdHJlYW0oKSxyLmVuc3VyZUNhdGFsb2coImFjcm9Gb3JtIiksci5lbnN1cmVDYXRhbG9nKCJhY3JvRm9ybVJlZiIpLHIuZW5zdXJlRG9jKCJ4cmVmIiksci5lbnN1cmVEb2MoInN0YXJ0WFJlZiIpXSxmPXQ/bnVsbDooMCxpLmdldE5ld0Fubm90YXRpb25zTWFwKShzKTtpZihmKXt2YXIgaCx2PWZ1bmN0aW9uKGUsdCl7dmFyIHI9InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVsiQEBpdGVyYXRvciJdO2lmKCFyKXtpZihBcnJheS5pc0FycmF5KGUpfHwocj1nKGUpKSl7ciYmKGU9cik7dmFyIG49MCxhPWZ1bmN0aW9uKCl7fTtyZXR1cm57czphLG46ZnVuY3Rpb24oKXtyZXR1cm4gbj49ZS5sZW5ndGg/e2RvbmU6ITB9Ontkb25lOiExLHZhbHVlOmVbbisrXX19LGU6ZnVuY3Rpb24oZSl7dGhyb3cgZX0sZjphfX10aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gaXRlcmF0ZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9dmFyIGksbz0hMCxzPSExO3JldHVybntzOmZ1bmN0aW9uKCl7cj1yLmNhbGwoZSl9LG46ZnVuY3Rpb24oKXt2YXIgZT1yLm5leHQoKTtyZXR1cm4gbz1lLmRvbmUsZX0sZTpmdW5jdGlvbihlKXtzPSEwLGk9ZX0sZjpmdW5jdGlvbigpe3RyeXtvfHxudWxsPT1yLnJldHVybnx8ci5yZXR1cm4oKX1maW5hbGx5e2lmKHMpdGhyb3cgaX19fX0oZik7dHJ5e3ZhciBtPWZ1bmN0aW9uKCl7dmFyIGU9ZChoLnZhbHVlLDIpLHQ9ZVswXSxuPWVbMV07bC5wdXNoKHIuZ2V0UGFnZSh0KS50aGVuKChmdW5jdGlvbihlKXt2YXIgcj1uZXcgeCgiU2F2ZSAoZWRpdG9yKTogcGFnZSAiLmNvbmNhdCh0KSk7cmV0dXJuIGUuc2F2ZU5ld0Fubm90YXRpb25zKEUscixuKS5maW5hbGx5KChmdW5jdGlvbigpe18ocil9KSl9KSkpfTtmb3Iodi5zKCk7IShoPXYubigpKS5kb25lOyltKCl9Y2F0Y2goZSl7di5lKGUpfWZpbmFsbHl7di5mKCl9fWlmKHQpbC5wdXNoKHIuc2VyaWFsaXplWGZhRGF0YShzKSk7ZWxzZSBmb3IodmFyIGI9ZnVuY3Rpb24oZSl7bC5wdXNoKHIuZ2V0UGFnZShlKS50aGVuKChmdW5jdGlvbih0KXt2YXIgcj1uZXcgeCgiU2F2ZTogcGFnZSAiLmNvbmNhdChlKSk7cmV0dXJuIHQuc2F2ZShFLHIscykuZmluYWxseSgoZnVuY3Rpb24oKXtfKHIpfSkpfSkpKX0sdz0wO3c8bzt3KyspYih3KTtyZXR1cm4gUHJvbWlzZS5hbGwobCkudGhlbigoZnVuY3Rpb24oZSl7dmFyIHIsaT15KHI9ZSl8fGZ1bmN0aW9uKGUpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZudWxsIT1lW1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPWVbIkBAaXRlcmF0b3IiXSlyZXR1cm4gQXJyYXkuZnJvbShlKX0ocil8fGcocil8fHAoKSxvPWlbMF0scz1pWzFdLGw9aVsyXSxmPWlbM10saD1pWzRdLGQ9aS5zbGljZSg1KSx2PVtdLG09bnVsbDtpZih0KXtpZighKG09ZFswXSkpcmV0dXJuIG8uYnl0ZXN9ZWxzZSBpZigwPT09KHY9ZC5mbGF0KDIpKS5sZW5ndGgpcmV0dXJuIG8uYnl0ZXM7dmFyIGI9bCYmcyBpbnN0YW5jZW9mIGEuRGljdCYmdi5zb21lKChmdW5jdGlvbihlKXtyZXR1cm4gZS5uZWVkQXBwZWFyYW5jZXN9KSksdz1zIGluc3RhbmNlb2YgYS5EaWN0JiZzLmdldCgiWEZBIil8fG51bGwsaz1udWxsLFM9ITE7aWYoQXJyYXkuaXNBcnJheSh3KSl7Zm9yKHZhciB4PTAsTz13Lmxlbmd0aDt4PE87eCs9MikiZGF0YXNldHMiPT09d1t4XSYmKGs9d1t4KzFdLFM9ITApO251bGw9PT1rJiYoaz1mLmdldE5ld1RlbXBvcmFyeVJlZigpKX1lbHNlIHcmJigwLG4ud2FybikoIlVuc3VwcG9ydGVkIFhGQSB0eXBlLiIpO3ZhciBBPU9iamVjdC5jcmVhdGUobnVsbCk7aWYoZi50cmFpbGVyKXt2YXIgQz1PYmplY3QuY3JlYXRlKG51bGwpLEY9Zi50cmFpbGVyLmdldCgiSW5mbyIpfHxudWxsO0YgaW5zdGFuY2VvZiBhLkRpY3QmJkYuZm9yRWFjaCgoZnVuY3Rpb24oZSx0KXsic3RyaW5nIj09dHlwZW9mIHQmJihDW2VdPSgwLG4uc3RyaW5nVG9QREZTdHJpbmcpKHQpKX0pKSxBPXtyb290UmVmOmYudHJhaWxlci5nZXRSYXcoIlJvb3QiKXx8bnVsbCxlbmNyeXB0UmVmOmYudHJhaWxlci5nZXRSYXcoIkVuY3J5cHQiKXx8bnVsbCxuZXdSZWY6Zi5nZXROZXdUZW1wb3JhcnlSZWYoKSxpbmZvUmVmOmYudHJhaWxlci5nZXRSYXcoIkluZm8iKXx8bnVsbCxpbmZvOkMsZmlsZUlkczpmLnRyYWlsZXIuZ2V0KCJJRCIpfHxudWxsLHN0YXJ0WFJlZjpoLGZpbGVuYW1lOnV9fXRyeXtyZXR1cm4oMCxjLmluY3JlbWVudGFsVXBkYXRlKSh7b3JpZ2luYWxEYXRhOm8uYnl0ZXMseHJlZkluZm86QSxuZXdSZWZzOnYseHJlZjpmLGhhc1hmYTohIXcseGZhRGF0YXNldHNSZWY6ayxoYXNYZmFEYXRhc2V0c0VudHJ5OlMsbmVlZEFwcGVhcmFuY2VzOmIsYWNyb0Zvcm1SZWY6bCxhY3JvRm9ybTpzLHhmYURhdGE6bX0pfWZpbmFsbHl7Zi5yZXNldE5ld1RlbXBvcmFyeVJlZigpfX0pKX0pKSxFLm9uKCJHZXRPcGVyYXRvckxpc3QiLChmdW5jdGlvbihlLHQpe3ZhciBhPWUucGFnZUluZGV4O3IuZ2V0UGFnZShhKS50aGVuKChmdW5jdGlvbihyKXt2YXIgaT1uZXcgeCgiR2V0T3BlcmF0b3JMaXN0OiBwYWdlICIuY29uY2F0KGEpKTtNKGkpO3ZhciBvPWs+PW4uVmVyYm9zaXR5TGV2ZWwuSU5GT1M/RGF0ZS5ub3coKTowO3IuZ2V0T3BlcmF0b3JMaXN0KHtoYW5kbGVyOkUsc2luazp0LHRhc2s6aSxpbnRlbnQ6ZS5pbnRlbnQsY2FjaGVLZXk6ZS5jYWNoZUtleSxhbm5vdGF0aW9uU3RvcmFnZTplLmFubm90YXRpb25TdG9yYWdlfSkudGhlbigoZnVuY3Rpb24oZSl7XyhpKSxvJiYoMCxuLmluZm8pKCJwYWdlPSIuY29uY2F0KGErMSwiIC0gZ2V0T3BlcmF0b3JMaXN0OiB0aW1lPSIpKyIiLmNvbmNhdChEYXRlLm5vdygpLW8sIm1zLCBsZW49IikuY29uY2F0KGUubGVuZ3RoKSksdC5jbG9zZSgpfSksKGZ1bmN0aW9uKGUpe18oaSksaS50ZXJtaW5hdGVkfHx0LmVycm9yKGUpfSkpfSkpfSkpLEUub24oIkdldFRleHRDb250ZW50IiwoZnVuY3Rpb24oZSx0KXt2YXIgYT1lLnBhZ2VJbmRleDtyLmdldFBhZ2UoYSkudGhlbigoZnVuY3Rpb24ocil7dmFyIGk9bmV3IHgoIkdldFRleHRDb250ZW50OiBwYWdlICIrYSk7TShpKTt2YXIgbz1rPj1uLlZlcmJvc2l0eUxldmVsLklORk9TP0RhdGUubm93KCk6MDtyLmV4dHJhY3RUZXh0Q29udGVudCh7aGFuZGxlcjpFLHRhc2s6aSxzaW5rOnQsaW5jbHVkZU1hcmtlZENvbnRlbnQ6ZS5pbmNsdWRlTWFya2VkQ29udGVudCxjb21iaW5lVGV4dEl0ZW1zOmUuY29tYmluZVRleHRJdGVtc30pLnRoZW4oKGZ1bmN0aW9uKCl7XyhpKSxvJiYoMCxuLmluZm8pKCJwYWdlPSIuY29uY2F0KGErMSwiIC0gZ2V0VGV4dENvbnRlbnQ6IHRpbWU9IikrIiIuY29uY2F0KERhdGUubm93KCktbywibXMiKSksdC5jbG9zZSgpfSksKGZ1bmN0aW9uKGUpe18oaSksaS50ZXJtaW5hdGVkfHx0LmVycm9yKGUpfSkpfSkpfSkpLEUub24oIkdldFN0cnVjdFRyZWUiLChmdW5jdGlvbihlKXtyZXR1cm4gci5nZXRQYWdlKGUucGFnZUluZGV4KS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gci5lbnN1cmUoZSwiZ2V0U3RydWN0VHJlZSIpfSkpfSkpLEUub24oIkZvbnRGYWxsYmFjayIsKGZ1bmN0aW9uKGUpe3JldHVybiByLmZvbnRGYWxsYmFjayhlLmlkLEUpfSkpLEUub24oIkNsZWFudXAiLChmdW5jdGlvbihlKXtyZXR1cm4gci5jbGVhbnVwKCEwKX0pKSxFLm9uKCJUZXJtaW5hdGUiLChmdW5jdGlvbihlKXt2PSEwO3ZhciB0PVtdO2lmKHIpe3IudGVybWluYXRlKG5ldyBuLkFib3J0RXhjZXB0aW9uKCJXb3JrZXIgd2FzIHRlcm1pbmF0ZWQuIikpO3ZhciBhPXIuY2xlYW51cCgpO3QucHVzaChhKSxyPW51bGx9ZWxzZSgwLHMuY2xlYXJHbG9iYWxDYWNoZXMpKCk7YiYmYihuZXcgbi5BYm9ydEV4Y2VwdGlvbigiV29ya2VyIHdhcyB0ZXJtaW5hdGVkLiIpKTtmb3IodmFyIGk9MCxvPXc7aTxvLmxlbmd0aDtpKyspe3ZhciBjPW9baV07dC5wdXNoKGMuZmluaXNoZWQpLGMudGVybWluYXRlKCl9cmV0dXJuIFByb21pc2UuYWxsKHQpLnRoZW4oKGZ1bmN0aW9uKCl7RS5kZXN0cm95KCksRT1udWxsfSkpfSkpLEUub24oIlJlYWR5IiwoZnVuY3Rpb24odCl7IWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSl7aigpLEUuc2VuZCgiR2V0RG9jIix7cGRmSW5mbzplfSl9ZnVuY3Rpb24gYShlKXtpZihqKCksZSBpbnN0YW5jZW9mIG4uUGFzc3dvcmRFeGNlcHRpb24pe3ZhciB0PW5ldyB4KCJQYXNzd29yZEV4Y2VwdGlvbjogcmVzcG9uc2UgIi5jb25jYXQoZS5jb2RlKSk7TSh0KSxFLnNlbmRXaXRoUHJvbWlzZSgiUGFzc3dvcmRSZXF1ZXN0IixlKS50aGVuKChmdW5jdGlvbihlKXt2YXIgbj1lLnBhc3N3b3JkO18odCksci51cGRhdGVQYXNzd29yZChuKSxzKCl9KSkuY2F0Y2goKGZ1bmN0aW9uKCl7Xyh0KSxFLnNlbmQoIkRvY0V4Y2VwdGlvbiIsZSl9KSl9ZWxzZSBlIGluc3RhbmNlb2Ygbi5JbnZhbGlkUERGRXhjZXB0aW9ufHxlIGluc3RhbmNlb2Ygbi5NaXNzaW5nUERGRXhjZXB0aW9ufHxlIGluc3RhbmNlb2Ygbi5VbmV4cGVjdGVkUmVzcG9uc2VFeGNlcHRpb258fGUgaW5zdGFuY2VvZiBuLlVua25vd25FcnJvckV4Y2VwdGlvbj9FLnNlbmQoIkRvY0V4Y2VwdGlvbiIsZSk6RS5zZW5kKCJEb2NFeGNlcHRpb24iLG5ldyBuLlVua25vd25FcnJvckV4Y2VwdGlvbihlLm1lc3NhZ2UsZS50b1N0cmluZygpKSl9ZnVuY3Rpb24gcygpe2ooKSxMKCExKS50aGVuKHQsKGZ1bmN0aW9uKGUpe2ooKSxlIGluc3RhbmNlb2YgaS5YUmVmUGFyc2VFeGNlcHRpb24/ci5yZXF1ZXN0TG9hZGVkU3RyZWFtKCkudGhlbigoZnVuY3Rpb24oKXtqKCksTCghMCkudGhlbih0LGEpfSkpOmEoZSl9KSl9aigpLGZ1bmN0aW9uKGUpe3ZhciB0LHI9ZS5kYXRhLGE9ZS5wYXNzd29yZCxpPWUuZGlzYWJsZUF1dG9GZXRjaCxzPWUucmFuZ2VDaHVua1NpemUsYz1lLmxlbmd0aCx1PWUuZG9jQmFzZVVybCxsPWUuZW5hYmxlWGZhLGg9ZS5ldmFsdWF0b3JPcHRpb25zLGQ9KDAsbi5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTtpZihyKXt0cnl7dD1uZXcgby5Mb2NhbFBkZk1hbmFnZXIoTyxyLGEsRSxoLGwsdSksZC5yZXNvbHZlKHQpfWNhdGNoKGUpe2QucmVqZWN0KGUpfXJldHVybiBkLnByb21pc2V9dmFyIHAsZz1bXTt0cnl7cD1uZXcgZi5QREZXb3JrZXJTdHJlYW0oRSl9Y2F0Y2goZSl7cmV0dXJuIGQucmVqZWN0KGUpLGQucHJvbWlzZX12YXIgdj1wLmdldEZ1bGxSZWFkZXIoKTt2LmhlYWRlcnNSZWFkeS50aGVuKChmdW5jdGlvbigpe2lmKHYuaXNSYW5nZVN1cHBvcnRlZCl7aT1pfHx2LmlzU3RyZWFtaW5nU3VwcG9ydGVkLHQ9bmV3IG8uTmV0d29ya1BkZk1hbmFnZXIoTyxwLHttc2dIYW5kbGVyOkUscGFzc3dvcmQ6YSxsZW5ndGg6di5jb250ZW50TGVuZ3RoLGRpc2FibGVBdXRvRmV0Y2g6aSxyYW5nZUNodW5rU2l6ZTpzfSxoLGwsdSk7Zm9yKHZhciBlPTAscj1nO2U8ci5sZW5ndGg7ZSsrKXt2YXIgbj1yW2VdO3Quc2VuZFByb2dyZXNzaXZlRGF0YShuKX1nPVtdLGQucmVzb2x2ZSh0KSxiPW51bGx9fSkpLmNhdGNoKChmdW5jdGlvbihlKXtkLnJlamVjdChlKSxiPW51bGx9KSk7dmFyIHk9MDtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKGUscil7di5yZWFkKCkudGhlbigoZnVuY3Rpb24gZShpKXt2YXIgcz1pLnZhbHVlLGY9aS5kb25lO3RyeXtpZihqKCksZilyZXR1cm4gdHx8ZnVuY3Rpb24oKXt2YXIgZT0oMCxuLmFycmF5c1RvQnl0ZXMpKGcpO2MmJmUubGVuZ3RoIT09YyYmKDAsbi53YXJuKSgicmVwb3J0ZWQgSFRUUCBsZW5ndGggaXMgZGlmZmVyZW50IGZyb20gYWN0dWFsIik7dHJ5e3Q9bmV3IG8uTG9jYWxQZGZNYW5hZ2VyKE8sZSxhLEUsaCxsLHUpLGQucmVzb2x2ZSh0KX1jYXRjaChlKXtkLnJlamVjdChlKX1nPVtdfSgpLHZvaWQoYj1udWxsKTt5Kz0oMCxuLmFycmF5Qnl0ZUxlbmd0aCkocyksdi5pc1N0cmVhbWluZ1N1cHBvcnRlZHx8RS5zZW5kKCJEb2NQcm9ncmVzcyIse2xvYWRlZDp5LHRvdGFsOk1hdGgubWF4KHksdi5jb250ZW50TGVuZ3RofHwwKX0pLHQ/dC5zZW5kUHJvZ3Jlc3NpdmVEYXRhKHMpOmcucHVzaChzKSx2LnJlYWQoKS50aGVuKGUscil9Y2F0Y2goZSl7cihlKX19KSxyKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7ZC5yZWplY3QoZSksYj1udWxsfSkpLGI9ZnVuY3Rpb24oZSl7cC5jYW5jZWxBbGxSZXF1ZXN0cyhlKX0sZC5wcm9taXNlfShlKS50aGVuKChmdW5jdGlvbihlKXtpZih2KXRocm93IGUudGVybWluYXRlKG5ldyBuLkFib3J0RXhjZXB0aW9uKCJXb3JrZXIgd2FzIHRlcm1pbmF0ZWQuIikpLG5ldyBFcnJvcigiV29ya2VyIHdhcyB0ZXJtaW5hdGVkIik7KHI9ZSkucmVxdWVzdExvYWRlZFN0cmVhbSghMCkudGhlbigoZnVuY3Rpb24oZSl7RS5zZW5kKCJEYXRhTG9hZGVkIix7bGVuZ3RoOmUuYnl0ZXMuYnl0ZUxlbmd0aH0pfSkpfSkpLnRoZW4ocyxhKX0oZSksZT1udWxsfSkpLEl9fSx7a2V5OiJpbml0aWFsaXplRnJvbVBvcnQiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciByPW5ldyBsLk1lc3NhZ2VIYW5kbGVyKCJ3b3JrZXIiLCJtYWluIix0KTtlLnNldHVwKHIsdCksci5zZW5kKCJyZWFkeSIsbnVsbCl9fV0pLGV9KCk7dC5Xb3JrZXJNZXNzYWdlSGFuZGxlcj1BLCJ1bmRlZmluZWQiPT10eXBlb2Ygd2luZG93JiYhdS5pc05vZGVKUyYmInVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmJiYiZnVuY3Rpb24iPT10eXBlb2YoTz1zZWxmKS5wb3N0TWVzc2FnZSYmIm9ubWVzc2FnZSJpbiBPJiZBLmluaXRpYWxpemVGcm9tUG9ydChzZWxmKX0sKGUsdCxyKT0+e2Z1bmN0aW9uIG4oZSl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGkoZSl9KGUpfHxmdW5jdGlvbihlKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmbnVsbCE9ZVtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT1lWyJAQGl0ZXJhdG9yIl0pcmV0dXJuIEFycmF5LmZyb20oZSl9KGUpfHxhKGUpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIGEoZSx0KXtpZihlKXtpZigic3RyaW5nIj09dHlwZW9mIGUpcmV0dXJuIGkoZSx0KTt2YXIgcj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7cmV0dXJuIk9iamVjdCI9PT1yJiZlLmNvbnN0cnVjdG9yJiYocj1lLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09cnx8IlNldCI9PT1yP0FycmF5LmZyb20oZSk6IkFyZ3VtZW50cyI9PT1yfHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChyKT9pKGUsdCk6dm9pZCAwfX1mdW5jdGlvbiBpKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciByPTAsbj1uZXcgQXJyYXkodCk7cjx0O3IrKyluW3JdPWVbcl07cmV0dXJuIG59ZnVuY3Rpb24gbyhlKXtyZXR1cm4gbz0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZX0sbyhlKX1mdW5jdGlvbiBzKGUsdCl7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBuPXRbcl07bi5lbnVtZXJhYmxlPW4uZW51bWVyYWJsZXx8ITEsbi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIG4mJihuLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwodm9pZCAwLGE9ZnVuY3Rpb24oZSx0KXtpZigib2JqZWN0IiE9PW8oZSl8fG51bGw9PT1lKXJldHVybiBlO3ZhciByPWVbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1yKXt2YXIgbj1yLmNhbGwoZSwic3RyaW5nIik7aWYoIm9iamVjdCIhPT1vKG4pKXJldHVybiBuO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuIFN0cmluZyhlKX0obi5rZXkpLCJzeW1ib2wiPT09byhhKT9hOlN0cmluZyhhKSksbil9dmFyIGF9ZnVuY3Rpb24gYyhlLHQscil7cmV0dXJuIHQmJnMoZS5wcm90b3R5cGUsdCksciYmcyhlLHIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGV9ZnVuY3Rpb24gdShlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIGwoZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksdCYmZihlLHQpfWZ1bmN0aW9uIGYoZSx0KXtyZXR1cm4gZj1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihlLHQpe3JldHVybiBlLl9fcHJvdG9fXz10LGV9LGYoZSx0KX1mdW5jdGlvbiBoKGUpe3ZhciB0PWZ1bmN0aW9uKCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3QpcmV0dXJuITE7aWYoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSwoZnVuY3Rpb24oKXt9KSkpLCEwfWNhdGNoKGUpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcixuPWQoZSk7aWYodCl7dmFyIGE9ZCh0aGlzKS5jb25zdHJ1Y3RvcjtyPVJlZmxlY3QuY29uc3RydWN0KG4sYXJndW1lbnRzLGEpfWVsc2Ugcj1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZnVuY3Rpb24oZSx0KXtpZih0JiYoIm9iamVjdCI9PT1vKHQpfHwiZnVuY3Rpb24iPT10eXBlb2YgdCkpcmV0dXJuIHQ7aWYodm9pZCAwIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBmdW5jdGlvbihlKXtpZih2b2lkIDA9PT1lKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGV9KGUpfSh0aGlzLHIpfX1mdW5jdGlvbiBkKGUpe3JldHVybiBkPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGUpe3JldHVybiBlLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpfSxkKGUpfU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LlZlcmJvc2l0eUxldmVsPXQuVXRpbD10LlVua25vd25FcnJvckV4Y2VwdGlvbj10LlVuZXhwZWN0ZWRSZXNwb25zZUV4Y2VwdGlvbj10LlVOU1VQUE9SVEVEX0ZFQVRVUkVTPXQuVGV4dFJlbmRlcmluZ01vZGU9dC5TdHJlYW1UeXBlPXQuUmVuZGVyaW5nSW50ZW50RmxhZz10LlBlcm1pc3Npb25GbGFnPXQuUGFzc3dvcmRSZXNwb25zZXM9dC5QYXNzd29yZEV4Y2VwdGlvbj10LlBhZ2VBY3Rpb25FdmVudFR5cGU9dC5PUFM9dC5NaXNzaW5nUERGRXhjZXB0aW9uPXQuTElORV9GQUNUT1I9dC5MSU5FX0RFU0NFTlRfRkFDVE9SPXQuSW52YWxpZFBERkV4Y2VwdGlvbj10LkltYWdlS2luZD10LklERU5USVRZX01BVFJJWD10LkZvcm1hdEVycm9yPXQuRm9udFR5cGU9dC5GZWF0dXJlVGVzdD10LkZPTlRfSURFTlRJVFlfTUFUUklYPXQuRG9jdW1lbnRBY3Rpb25FdmVudFR5cGU9dC5DTWFwQ29tcHJlc3Npb25UeXBlPXQuQmFzZUV4Y2VwdGlvbj10LkJBU0VMSU5FX0ZBQ1RPUj10LkFubm90YXRpb25UeXBlPXQuQW5ub3RhdGlvblN0YXRlTW9kZWxUeXBlPXQuQW5ub3RhdGlvblJldmlld1N0YXRlPXQuQW5ub3RhdGlvblJlcGx5VHlwZT10LkFubm90YXRpb25Nb2RlPXQuQW5ub3RhdGlvbk1hcmtlZFN0YXRlPXQuQW5ub3RhdGlvbkZsYWc9dC5Bbm5vdGF0aW9uRmllbGRGbGFnPXQuQW5ub3RhdGlvbkVkaXRvclR5cGU9dC5Bbm5vdGF0aW9uRWRpdG9yUHJlZml4PXQuQW5ub3RhdGlvbkVkaXRvclBhcmFtc1R5cGU9dC5Bbm5vdGF0aW9uQm9yZGVyU3R5bGVUeXBlPXQuQW5ub3RhdGlvbkFjdGlvbkV2ZW50VHlwZT10LkFib3J0RXhjZXB0aW9uPXZvaWQgMCx0LmFycmF5Qnl0ZUxlbmd0aD1QLHQuYXJyYXlzVG9CeXRlcz1mdW5jdGlvbihlKXt2YXIgdD1lLmxlbmd0aDtpZigxPT09dCYmZVswXWluc3RhbmNlb2YgVWludDhBcnJheSlyZXR1cm4gZVswXTtmb3IodmFyIHI9MCxuPTA7bjx0O24rKylyKz1QKGVbbl0pO2Zvcih2YXIgYT0wLGk9bmV3IFVpbnQ4QXJyYXkociksbz0wO288dDtvKyspe3ZhciBzPWVbb107cyBpbnN0YW5jZW9mIFVpbnQ4QXJyYXl8fChzPSJzdHJpbmciPT10eXBlb2Ygcz9GKHMpOm5ldyBVaW50OEFycmF5KHMpKTt2YXIgYz1zLmJ5dGVMZW5ndGg7aS5zZXQocyxhKSxhKz1jfXJldHVybiBpfSx0LmFzc2VydD1mdW5jdGlvbihlLHQpe2V8fHkodCl9LHQuYnl0ZXNUb1N0cmluZz1mdW5jdGlvbihlKXsib2JqZWN0Ij09PW8oZSkmJm51bGwhPT1lJiZ2b2lkIDAhPT1lLmxlbmd0aHx8eSgiSW52YWxpZCBhcmd1bWVudCBmb3IgYnl0ZXNUb1N0cmluZyIpO3ZhciB0PWUubGVuZ3RoLHI9ODE5MjtpZih0PHIpcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCxlKTtmb3IodmFyIG49W10sYT0wO2E8dDthKz1yKXt2YXIgaT1NYXRoLm1pbihhK3IsdCkscz1lLnN1YmFycmF5KGEsaSk7bi5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCxzKSl9cmV0dXJuIG4uam9pbigiIil9LHQuY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHk9ZnVuY3Rpb24oKXt2YXIgZT1PYmplY3QuY3JlYXRlKG51bGwpLHQ9ITE7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJzZXR0bGVkIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHR9fSksZS5wcm9taXNlPW5ldyBQcm9taXNlKChmdW5jdGlvbihyLG4pe2UucmVzb2x2ZT1mdW5jdGlvbihlKXt0PSEwLHIoZSl9LGUucmVqZWN0PWZ1bmN0aW9uKGUpe3Q9ITAsbihlKX19KSksZX0sdC5jcmVhdGVWYWxpZEFic29sdXRlVXJsPWZ1bmN0aW9uKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpudWxsLHI9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOm51bGw7aWYoIWUpcmV0dXJuIG51bGw7dHJ5e2lmKHImJiJzdHJpbmciPT10eXBlb2YgZSl7aWYoci5hZGREZWZhdWx0UHJvdG9jb2wmJmUuc3RhcnRzV2l0aCgid3d3LiIpKXt2YXIgbj1lLm1hdGNoKC9cLi9nKTtuJiZuLmxlbmd0aD49MiYmKGU9Imh0dHA6Ly8iLmNvbmNhdChlKSl9aWYoci50cnlDb252ZXJ0RW5jb2RpbmcpdHJ5e2U9TShlKX1jYXRjaChlKXt9fXZhciBhPXQ/bmV3IFVSTChlLHQpOm5ldyBVUkwoZSk7aWYoZnVuY3Rpb24oZSl7aWYoIWUpcmV0dXJuITE7c3dpdGNoKGUucHJvdG9jb2wpe2Nhc2UiaHR0cDoiOmNhc2UiaHR0cHM6IjpjYXNlImZ0cDoiOmNhc2UibWFpbHRvOiI6Y2FzZSJ0ZWw6IjpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiExfX0oYSkpcmV0dXJuIGF9Y2F0Y2goZSl7fXJldHVybiBudWxsfSx0LmdldE1vZGlmaWNhdGlvbkRhdGU9ZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06bmV3IERhdGU7cmV0dXJuW2UuZ2V0VVRDRnVsbFllYXIoKS50b1N0cmluZygpLChlLmdldFVUQ01vbnRoKCkrMSkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIiksZS5nZXRVVENEYXRlKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIiksZS5nZXRVVENIb3VycygpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpLGUuZ2V0VVRDTWludXRlcygpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpLGUuZ2V0VVRDU2Vjb25kcygpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpXS5qb2luKCIiKX0sdC5nZXRWZXJib3NpdHlMZXZlbD1mdW5jdGlvbigpe3JldHVybiBnfSx0LmluZm89ZnVuY3Rpb24oZSl7Zz49cC5JTkZPUyYmY29uc29sZS5sb2coIkluZm86ICIuY29uY2F0KGUpKX0sdC5pc0FycmF5QnVmZmVyPWZ1bmN0aW9uKGUpe3JldHVybiJvYmplY3QiPT09byhlKSYmbnVsbCE9PWUmJnZvaWQgMCE9PWUuYnl0ZUxlbmd0aH0sdC5pc0FycmF5RXF1YWw9ZnVuY3Rpb24oZSx0KXtpZihlLmxlbmd0aCE9PXQubGVuZ3RoKXJldHVybiExO2Zvcih2YXIgcj0wLG49ZS5sZW5ndGg7cjxuO3IrKylpZihlW3JdIT09dFtyXSlyZXR1cm4hMTtyZXR1cm4hMH0sdC5vYmplY3RGcm9tTWFwPWZ1bmN0aW9uKGUpe3ZhciB0LHIsbj1PYmplY3QuY3JlYXRlKG51bGwpLGk9ZnVuY3Rpb24oZSx0KXt2YXIgcj0idW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlWyJAQGl0ZXJhdG9yIl07aWYoIXIpe2lmKEFycmF5LmlzQXJyYXkoZSl8fChyPWEoZSkpKXtyJiYoZT1yKTt2YXIgbj0wLGk9ZnVuY3Rpb24oKXt9O3JldHVybntzOmksbjpmdW5jdGlvbigpe3JldHVybiBuPj1lLmxlbmd0aD97ZG9uZTohMH06e2RvbmU6ITEsdmFsdWU6ZVtuKytdfX0sZTpmdW5jdGlvbihlKXt0aHJvdyBlfSxmOml9fXRocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBpdGVyYXRlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX12YXIgbyxzPSEwLGM9ITE7cmV0dXJue3M6ZnVuY3Rpb24oKXtyPXIuY2FsbChlKX0sbjpmdW5jdGlvbigpe3ZhciBlPXIubmV4dCgpO3JldHVybiBzPWUuZG9uZSxlfSxlOmZ1bmN0aW9uKGUpe2M9ITAsbz1lfSxmOmZ1bmN0aW9uKCl7dHJ5e3N8fG51bGw9PXIucmV0dXJufHxyLnJldHVybigpfWZpbmFsbHl7aWYoYyl0aHJvdyBvfX19fShlKTt0cnl7Zm9yKGkucygpOyEodD1pLm4oKSkuZG9uZTspe3ZhciBvPShyPXQudmFsdWUsMixmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShyKXx8ZnVuY3Rpb24oZSx0KXt2YXIgcj1udWxsPT1lP251bGw6InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVsiQEBpdGVyYXRvciJdO2lmKG51bGwhPXIpe3ZhciBuLGEsaSxvLHM9W10sYz0hMCx1PSExO3RyeXtmb3IoaT0ocj1yLmNhbGwoZSkpLm5leHQsMDshKGM9KG49aS5jYWxsKHIpKS5kb25lKSYmKHMucHVzaChuLnZhbHVlKSwyIT09cy5sZW5ndGgpO2M9ITApO31jYXRjaChlKXt1PSEwLGE9ZX1maW5hbGx5e3RyeXtpZighYyYmbnVsbCE9ci5yZXR1cm4mJihvPXIucmV0dXJuKCksT2JqZWN0KG8pIT09bykpcmV0dXJufWZpbmFsbHl7aWYodSl0aHJvdyBhfX1yZXR1cm4gc319KHIpfHxhKHIsMil8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKSkscz1vWzBdLGM9b1sxXTtuW3NdPWN9fWNhdGNoKGUpe2kuZShlKX1maW5hbGx5e2kuZigpfXJldHVybiBufSx0Lm9iamVjdFNpemU9ZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5rZXlzKGUpLmxlbmd0aH0sdC5zZXRWZXJib3NpdHlMZXZlbD1mdW5jdGlvbihlKXtOdW1iZXIuaXNJbnRlZ2VyKGUpJiYoZz1lKX0sdC5zaGFkb3c9bSx0LnN0cmluZzMyPWZ1bmN0aW9uKGUpe3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGU+PjI0JjI1NSxlPj4xNiYyNTUsZT4+OCYyNTUsMjU1JmUpfSx0LnN0cmluZ1RvQnl0ZXM9Rix0LnN0cmluZ1RvUERGU3RyaW5nPWZ1bmN0aW9uKGUpe3ZhciB0O2lmKGVbMF0+PSLDryImJigiw74iPT09ZVswXSYmIsO/Ij09PWVbMV0/dD0idXRmLTE2YmUiOiLDvyI9PT1lWzBdJiYiw74iPT09ZVsxXT90PSJ1dGYtMTZsZSI6IsOvIj09PWVbMF0mJiLCuyI9PT1lWzFdJiYiwr8iPT09ZVsyXSYmKHQ9InV0Zi04IiksdCkpdHJ5e3ZhciByPW5ldyBUZXh0RGVjb2Rlcih0LHtmYXRhbDohMH0pLG49RihlKTtyZXR1cm4gci5kZWNvZGUobil9Y2F0Y2goZSl7dignc3RyaW5nVG9QREZTdHJpbmc6ICInLmNvbmNhdChlLCciLicpKX1mb3IodmFyIGE9W10saT0wLG89ZS5sZW5ndGg7aTxvO2krKyl7dmFyIHM9altlLmNoYXJDb2RlQXQoaSldO2EucHVzaChzP1N0cmluZy5mcm9tQ2hhckNvZGUocyk6ZS5jaGFyQXQoaSkpfXJldHVybiBhLmpvaW4oIiIpfSx0LnN0cmluZ1RvVVRGOFN0cmluZz1NLHQudW5yZWFjaGFibGU9eSx0LnV0ZjhTdHJpbmdUb1N0cmluZz1mdW5jdGlvbihlKXtyZXR1cm4gdW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KGUpKX0sdC53YXJuPXYsZ2xvYmFsVGhpcy5fcGRmanNDb21wYXRpYmlsaXR5Q2hlY2tlZHx8KGdsb2JhbFRoaXMuX3BkZmpzQ29tcGF0aWJpbGl0eUNoZWNrZWQ9ITAscigzKSksdC5JREVOVElUWV9NQVRSSVg9WzEsMCwwLDEsMCwwXSx0LkZPTlRfSURFTlRJVFlfTUFUUklYPVsuMDAxLDAsMCwuMDAxLDAsMF0sdC5MSU5FX0ZBQ1RPUj0xLjM1LHQuTElORV9ERVNDRU5UX0ZBQ1RPUj0uMzUsdC5CQVNFTElORV9GQUNUT1I9LjI1OTI1OTI1OTI1OTI1OTI0LHQuUmVuZGVyaW5nSW50ZW50RmxhZz17QU5ZOjEsRElTUExBWToyLFBSSU5UOjQsU0FWRTo4LEFOTk9UQVRJT05TX0ZPUk1TOjE2LEFOTk9UQVRJT05TX1NUT1JBR0U6MzIsQU5OT1RBVElPTlNfRElTQUJMRTo2NCxPUExJU1Q6MjU2fSx0LkFubm90YXRpb25Nb2RlPXtESVNBQkxFOjAsRU5BQkxFOjEsRU5BQkxFX0ZPUk1TOjIsRU5BQkxFX1NUT1JBR0U6M30sdC5Bbm5vdGF0aW9uRWRpdG9yUHJlZml4PSJwZGZqc19pbnRlcm5hbF9lZGl0b3JfIix0LkFubm90YXRpb25FZGl0b3JUeXBlPXtESVNBQkxFOi0xLE5PTkU6MCxGUkVFVEVYVDozLElOSzoxNX0sdC5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZT17RlJFRVRFWFRfU0laRToxLEZSRUVURVhUX0NPTE9SOjIsRlJFRVRFWFRfT1BBQ0lUWTozLElOS19DT0xPUjoxMSxJTktfVEhJQ0tORVNTOjEyLElOS19PUEFDSVRZOjEzfSx0LlBlcm1pc3Npb25GbGFnPXtQUklOVDo0LE1PRElGWV9DT05URU5UUzo4LENPUFk6MTYsTU9ESUZZX0FOTk9UQVRJT05TOjMyLEZJTExfSU5URVJBQ1RJVkVfRk9STVM6MjU2LENPUFlfRk9SX0FDQ0VTU0lCSUxJVFk6NTEyLEFTU0VNQkxFOjEwMjQsUFJJTlRfSElHSF9RVUFMSVRZOjIwNDh9LHQuVGV4dFJlbmRlcmluZ01vZGU9e0ZJTEw6MCxTVFJPS0U6MSxGSUxMX1NUUk9LRToyLElOVklTSUJMRTozLEZJTExfQUREX1RPX1BBVEg6NCxTVFJPS0VfQUREX1RPX1BBVEg6NSxGSUxMX1NUUk9LRV9BRERfVE9fUEFUSDo2LEFERF9UT19QQVRIOjcsRklMTF9TVFJPS0VfTUFTSzozLEFERF9UT19QQVRIX0ZMQUc6NH0sdC5JbWFnZUtpbmQ9e0dSQVlTQ0FMRV8xQlBQOjEsUkdCXzI0QlBQOjIsUkdCQV8zMkJQUDozfSx0LkFubm90YXRpb25UeXBlPXtURVhUOjEsTElOSzoyLEZSRUVURVhUOjMsTElORTo0LFNRVUFSRTo1LENJUkNMRTo2LFBPTFlHT046NyxQT0xZTElORTo4LEhJR0hMSUdIVDo5LFVOREVSTElORToxMCxTUVVJR0dMWToxMSxTVFJJS0VPVVQ6MTIsU1RBTVA6MTMsQ0FSRVQ6MTQsSU5LOjE1LFBPUFVQOjE2LEZJTEVBVFRBQ0hNRU5UOjE3LFNPVU5EOjE4LE1PVklFOjE5LFdJREdFVDoyMCxTQ1JFRU46MjEsUFJJTlRFUk1BUks6MjIsVFJBUE5FVDoyMyxXQVRFUk1BUks6MjQsVEhSRUVEOjI1LFJFREFDVDoyNn0sdC5Bbm5vdGF0aW9uU3RhdGVNb2RlbFR5cGU9e01BUktFRDoiTWFya2VkIixSRVZJRVc6IlJldmlldyJ9LHQuQW5ub3RhdGlvbk1hcmtlZFN0YXRlPXtNQVJLRUQ6Ik1hcmtlZCIsVU5NQVJLRUQ6IlVubWFya2VkIn0sdC5Bbm5vdGF0aW9uUmV2aWV3U3RhdGU9e0FDQ0VQVEVEOiJBY2NlcHRlZCIsUkVKRUNURUQ6IlJlamVjdGVkIixDQU5DRUxMRUQ6IkNhbmNlbGxlZCIsQ09NUExFVEVEOiJDb21wbGV0ZWQiLE5PTkU6Ik5vbmUifSx0LkFubm90YXRpb25SZXBseVR5cGU9e0dST1VQOiJHcm91cCIsUkVQTFk6IlIifSx0LkFubm90YXRpb25GbGFnPXtJTlZJU0lCTEU6MSxISURERU46MixQUklOVDo0LE5PWk9PTTo4LE5PUk9UQVRFOjE2LE5PVklFVzozMixSRUFET05MWTo2NCxMT0NLRUQ6MTI4LFRPR0dMRU5PVklFVzoyNTYsTE9DS0VEQ09OVEVOVFM6NTEyfSx0LkFubm90YXRpb25GaWVsZEZsYWc9e1JFQURPTkxZOjEsUkVRVUlSRUQ6MixOT0VYUE9SVDo0LE1VTFRJTElORTo0MDk2LFBBU1NXT1JEOjgxOTIsTk9UT0dHTEVUT09GRjoxNjM4NCxSQURJTzozMjc2OCxQVVNIQlVUVE9OOjY1NTM2LENPTUJPOjEzMTA3MixFRElUOjI2MjE0NCxTT1JUOjUyNDI4OCxGSUxFU0VMRUNUOjEwNDg1NzYsTVVMVElTRUxFQ1Q6MjA5NzE1MixET05PVFNQRUxMQ0hFQ0s6NDE5NDMwNCxET05PVFNDUk9MTDo4Mzg4NjA4LENPTUI6MTY3NzcyMTYsUklDSFRFWFQ6MzM1NTQ0MzIsUkFESU9TSU5VTklTT046MzM1NTQ0MzIsQ09NTUlUT05TRUxDSEFOR0U6NjcxMDg4NjR9LHQuQW5ub3RhdGlvbkJvcmRlclN0eWxlVHlwZT17U09MSUQ6MSxEQVNIRUQ6MixCRVZFTEVEOjMsSU5TRVQ6NCxVTkRFUkxJTkU6NX0sdC5Bbm5vdGF0aW9uQWN0aW9uRXZlbnRUeXBlPXtFOiJNb3VzZSBFbnRlciIsWDoiTW91c2UgRXhpdCIsRDoiTW91c2UgRG93biIsVToiTW91c2UgVXAiLEZvOiJGb2N1cyIsQmw6IkJsdXIiLFBPOiJQYWdlT3BlbiIsUEM6IlBhZ2VDbG9zZSIsUFY6IlBhZ2VWaXNpYmxlIixQSToiUGFnZUludmlzaWJsZSIsSzoiS2V5c3Ryb2tlIixGOiJGb3JtYXQiLFY6IlZhbGlkYXRlIixDOiJDYWxjdWxhdGUifSx0LkRvY3VtZW50QWN0aW9uRXZlbnRUeXBlPXtXQzoiV2lsbENsb3NlIixXUzoiV2lsbFNhdmUiLERTOiJEaWRTYXZlIixXUDoiV2lsbFByaW50IixEUDoiRGlkUHJpbnQifSx0LlBhZ2VBY3Rpb25FdmVudFR5cGU9e086IlBhZ2VPcGVuIixDOiJQYWdlQ2xvc2UifSx0LlN0cmVhbVR5cGU9e1VOS05PV046IlVOS05PV04iLEZMQVRFOiJGTEFURSIsTFpXOiJMWlciLERDVDoiRENUIixKUFg6IkpQWCIsSkJJRzoiSkJJRyIsQTg1OiJBODUiLEFIWDoiQUhYIixDQ0Y6IkNDRiIsUkxYOiJSTFgifSx0LkZvbnRUeXBlPXtVTktOT1dOOiJVTktOT1dOIixUWVBFMToiVFlQRTEiLFRZUEUxU1RBTkRBUkQ6IlRZUEUxU1RBTkRBUkQiLFRZUEUxQzoiVFlQRTFDIixDSURGT05UVFlQRTA6IkNJREZPTlRUWVBFMCIsQ0lERk9OVFRZUEUwQzoiQ0lERk9OVFRZUEUwQyIsVFJVRVRZUEU6IlRSVUVUWVBFIixDSURGT05UVFlQRTI6IkNJREZPTlRUWVBFMiIsVFlQRTM6IlRZUEUzIixPUEVOVFlQRToiT1BFTlRZUEUiLFRZUEUwOiJUWVBFMCIsTU1UWVBFMToiTU1UWVBFMSJ9O3ZhciBwPXtFUlJPUlM6MCxXQVJOSU5HUzoxLElORk9TOjV9O3QuVmVyYm9zaXR5TGV2ZWw9cCx0LkNNYXBDb21wcmVzc2lvblR5cGU9e05PTkU6MCxCSU5BUlk6MX0sdC5PUFM9e2RlcGVuZGVuY3k6MSxzZXRMaW5lV2lkdGg6MixzZXRMaW5lQ2FwOjMsc2V0TGluZUpvaW46NCxzZXRNaXRlckxpbWl0OjUsc2V0RGFzaDo2LHNldFJlbmRlcmluZ0ludGVudDo3LHNldEZsYXRuZXNzOjgsc2V0R1N0YXRlOjksc2F2ZToxMCxyZXN0b3JlOjExLHRyYW5zZm9ybToxMixtb3ZlVG86MTMsbGluZVRvOjE0LGN1cnZlVG86MTUsY3VydmVUbzI6MTYsY3VydmVUbzM6MTcsY2xvc2VQYXRoOjE4LHJlY3RhbmdsZToxOSxzdHJva2U6MjAsY2xvc2VTdHJva2U6MjEsZmlsbDoyMixlb0ZpbGw6MjMsZmlsbFN0cm9rZToyNCxlb0ZpbGxTdHJva2U6MjUsY2xvc2VGaWxsU3Ryb2tlOjI2LGNsb3NlRU9GaWxsU3Ryb2tlOjI3LGVuZFBhdGg6MjgsY2xpcDoyOSxlb0NsaXA6MzAsYmVnaW5UZXh0OjMxLGVuZFRleHQ6MzIsc2V0Q2hhclNwYWNpbmc6MzMsc2V0V29yZFNwYWNpbmc6MzQsc2V0SFNjYWxlOjM1LHNldExlYWRpbmc6MzYsc2V0Rm9udDozNyxzZXRUZXh0UmVuZGVyaW5nTW9kZTozOCxzZXRUZXh0UmlzZTozOSxtb3ZlVGV4dDo0MCxzZXRMZWFkaW5nTW92ZVRleHQ6NDEsc2V0VGV4dE1hdHJpeDo0MixuZXh0TGluZTo0MyxzaG93VGV4dDo0NCxzaG93U3BhY2VkVGV4dDo0NSxuZXh0TGluZVNob3dUZXh0OjQ2LG5leHRMaW5lU2V0U3BhY2luZ1Nob3dUZXh0OjQ3LHNldENoYXJXaWR0aDo0OCxzZXRDaGFyV2lkdGhBbmRCb3VuZHM6NDksc2V0U3Ryb2tlQ29sb3JTcGFjZTo1MCxzZXRGaWxsQ29sb3JTcGFjZTo1MSxzZXRTdHJva2VDb2xvcjo1MixzZXRTdHJva2VDb2xvck46NTMsc2V0RmlsbENvbG9yOjU0LHNldEZpbGxDb2xvck46NTUsc2V0U3Ryb2tlR3JheTo1NixzZXRGaWxsR3JheTo1NyxzZXRTdHJva2VSR0JDb2xvcjo1OCxzZXRGaWxsUkdCQ29sb3I6NTksc2V0U3Ryb2tlQ01ZS0NvbG9yOjYwLHNldEZpbGxDTVlLQ29sb3I6NjEsc2hhZGluZ0ZpbGw6NjIsYmVnaW5JbmxpbmVJbWFnZTo2MyxiZWdpbkltYWdlRGF0YTo2NCxlbmRJbmxpbmVJbWFnZTo2NSxwYWludFhPYmplY3Q6NjYsbWFya1BvaW50OjY3LG1hcmtQb2ludFByb3BzOjY4LGJlZ2luTWFya2VkQ29udGVudDo2OSxiZWdpbk1hcmtlZENvbnRlbnRQcm9wczo3MCxlbmRNYXJrZWRDb250ZW50OjcxLGJlZ2luQ29tcGF0OjcyLGVuZENvbXBhdDo3MyxwYWludEZvcm1YT2JqZWN0QmVnaW46NzQscGFpbnRGb3JtWE9iamVjdEVuZDo3NSxiZWdpbkdyb3VwOjc2LGVuZEdyb3VwOjc3LGJlZ2luQW5ub3RhdGlvbjo4MCxlbmRBbm5vdGF0aW9uOjgxLHBhaW50SW1hZ2VNYXNrWE9iamVjdDo4MyxwYWludEltYWdlTWFza1hPYmplY3RHcm91cDo4NCxwYWludEltYWdlWE9iamVjdDo4NSxwYWludElubGluZUltYWdlWE9iamVjdDo4NixwYWludElubGluZUltYWdlWE9iamVjdEdyb3VwOjg3LHBhaW50SW1hZ2VYT2JqZWN0UmVwZWF0Ojg4LHBhaW50SW1hZ2VNYXNrWE9iamVjdFJlcGVhdDo4OSxwYWludFNvbGlkQ29sb3JJbWFnZU1hc2s6OTAsY29uc3RydWN0UGF0aDo5MX0sdC5VTlNVUFBPUlRFRF9GRUFUVVJFUz17Zm9ybXM6ImZvcm1zIixqYXZhU2NyaXB0OiJqYXZhU2NyaXB0IixzaWduYXR1cmVzOiJzaWduYXR1cmVzIixzbWFzazoic21hc2siLHNoYWRpbmdQYXR0ZXJuOiJzaGFkaW5nUGF0dGVybiIsZXJyb3JUaWxpbmdQYXR0ZXJuOiJlcnJvclRpbGluZ1BhdHRlcm4iLGVycm9yRXh0R1N0YXRlOiJlcnJvckV4dEdTdGF0ZSIsZXJyb3JYT2JqZWN0OiJlcnJvclhPYmplY3QiLGVycm9yRm9udExvYWRUeXBlMzoiZXJyb3JGb250TG9hZFR5cGUzIixlcnJvckZvbnRTdGF0ZToiZXJyb3JGb250U3RhdGUiLGVycm9yRm9udE1pc3Npbmc6ImVycm9yRm9udE1pc3NpbmciLGVycm9yRm9udFRyYW5zbGF0ZToiZXJyb3JGb250VHJhbnNsYXRlIixlcnJvckNvbG9yU3BhY2U6ImVycm9yQ29sb3JTcGFjZSIsZXJyb3JPcGVyYXRvckxpc3Q6ImVycm9yT3BlcmF0b3JMaXN0IixlcnJvckZvbnRUb1VuaWNvZGU6ImVycm9yRm9udFRvVW5pY29kZSIsZXJyb3JGb250TG9hZE5hdGl2ZToiZXJyb3JGb250TG9hZE5hdGl2ZSIsZXJyb3JGb250QnVpbGRQYXRoOiJlcnJvckZvbnRCdWlsZFBhdGgiLGVycm9yRm9udEdldFBhdGg6ImVycm9yRm9udEdldFBhdGgiLGVycm9yTWFya2VkQ29udGVudDoiZXJyb3JNYXJrZWRDb250ZW50IixlcnJvckNvbnRlbnRTdWJTdHJlYW06ImVycm9yQ29udGVudFN1YlN0cmVhbSJ9LHQuUGFzc3dvcmRSZXNwb25zZXM9e05FRURfUEFTU1dPUkQ6MSxJTkNPUlJFQ1RfUEFTU1dPUkQ6Mn07dmFyIGc9cC5XQVJOSU5HUztmdW5jdGlvbiB2KGUpe2c+PXAuV0FSTklOR1MmJmNvbnNvbGUubG9nKCJXYXJuaW5nOiAiLmNvbmNhdChlKSl9ZnVuY3Rpb24geShlKXt0aHJvdyBuZXcgRXJyb3IoZSl9ZnVuY3Rpb24gbShlLHQscil7dmFyIG49YXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10mJmFyZ3VtZW50c1szXTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6cixlbnVtZXJhYmxlOiFuLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMX0pLHJ9dmFyIGI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQscil7dGhpcy5jb25zdHJ1Y3Rvcj09PWUmJnkoIkNhbm5vdCBpbml0aWFsaXplIEJhc2VFeGNlcHRpb24uIiksdGhpcy5tZXNzYWdlPXQsdGhpcy5uYW1lPXJ9cmV0dXJuIGUucHJvdG90eXBlPW5ldyBFcnJvcixlLmNvbnN0cnVjdG9yPWUsZX0oKTt0LkJhc2VFeGNlcHRpb249Yjt2YXIgdz1mdW5jdGlvbihlKXtsKHIsZSk7dmFyIHQ9aChyKTtmdW5jdGlvbiByKGUsbil7dmFyIGE7cmV0dXJuIHUodGhpcyxyKSwoYT10LmNhbGwodGhpcyxlLCJQYXNzd29yZEV4Y2VwdGlvbiIpKS5jb2RlPW4sYX1yZXR1cm4gYyhyKX0oYik7dC5QYXNzd29yZEV4Y2VwdGlvbj13O3ZhciBrPWZ1bmN0aW9uKGUpe2wocixlKTt2YXIgdD1oKHIpO2Z1bmN0aW9uIHIoZSxuKXt2YXIgYTtyZXR1cm4gdSh0aGlzLHIpLChhPXQuY2FsbCh0aGlzLGUsIlVua25vd25FcnJvckV4Y2VwdGlvbiIpKS5kZXRhaWxzPW4sYX1yZXR1cm4gYyhyKX0oYik7dC5Vbmtub3duRXJyb3JFeGNlcHRpb249azt2YXIgUz1mdW5jdGlvbihlKXtsKHIsZSk7dmFyIHQ9aChyKTtmdW5jdGlvbiByKGUpe3JldHVybiB1KHRoaXMsciksdC5jYWxsKHRoaXMsZSwiSW52YWxpZFBERkV4Y2VwdGlvbiIpfXJldHVybiBjKHIpfShiKTt0LkludmFsaWRQREZFeGNlcHRpb249Uzt2YXIgeD1mdW5jdGlvbihlKXtsKHIsZSk7dmFyIHQ9aChyKTtmdW5jdGlvbiByKGUpe3JldHVybiB1KHRoaXMsciksdC5jYWxsKHRoaXMsZSwiTWlzc2luZ1BERkV4Y2VwdGlvbiIpfXJldHVybiBjKHIpfShiKTt0Lk1pc3NpbmdQREZFeGNlcHRpb249eDt2YXIgTz1mdW5jdGlvbihlKXtsKHIsZSk7dmFyIHQ9aChyKTtmdW5jdGlvbiByKGUsbil7dmFyIGE7cmV0dXJuIHUodGhpcyxyKSwoYT10LmNhbGwodGhpcyxlLCJVbmV4cGVjdGVkUmVzcG9uc2VFeGNlcHRpb24iKSkuc3RhdHVzPW4sYX1yZXR1cm4gYyhyKX0oYik7dC5VbmV4cGVjdGVkUmVzcG9uc2VFeGNlcHRpb249Tzt2YXIgQT1mdW5jdGlvbihlKXtsKHIsZSk7dmFyIHQ9aChyKTtmdW5jdGlvbiByKGUpe3JldHVybiB1KHRoaXMsciksdC5jYWxsKHRoaXMsZSwiRm9ybWF0RXJyb3IiKX1yZXR1cm4gYyhyKX0oYik7dC5Gb3JtYXRFcnJvcj1BO3ZhciBDPWZ1bmN0aW9uKGUpe2wocixlKTt2YXIgdD1oKHIpO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIHUodGhpcyxyKSx0LmNhbGwodGhpcyxlLCJBYm9ydEV4Y2VwdGlvbiIpfXJldHVybiBjKHIpfShiKTtmdW5jdGlvbiBGKGUpeyJzdHJpbmciIT10eXBlb2YgZSYmeSgiSW52YWxpZCBhcmd1bWVudCBmb3Igc3RyaW5nVG9CeXRlcyIpO2Zvcih2YXIgdD1lLmxlbmd0aCxyPW5ldyBVaW50OEFycmF5KHQpLG49MDtuPHQ7KytuKXJbbl09MjU1JmUuY2hhckNvZGVBdChuKTtyZXR1cm4gcn1mdW5jdGlvbiBQKGUpe3JldHVybiB2b2lkIDAhPT1lLmxlbmd0aD9lLmxlbmd0aDp2b2lkIDAhPT1lLmJ5dGVMZW5ndGg/ZS5ieXRlTGVuZ3RoOnZvaWQgeSgiSW52YWxpZCBhcmd1bWVudCBmb3IgYXJyYXlCeXRlTGVuZ3RoIil9dC5BYm9ydEV4Y2VwdGlvbj1DO3ZhciBUPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe3UodGhpcyxlKX1yZXR1cm4gYyhlLG51bGwsW3trZXk6ImlzTGl0dGxlRW5kaWFuIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbSh0aGlzLCJpc0xpdHRsZUVuZGlhbiIsKChlPW5ldyBVaW50OEFycmF5KDQpKVswXT0xLDE9PT1uZXcgVWludDMyQXJyYXkoZS5idWZmZXIsMCwxKVswXSkpO3ZhciBlfX0se2tleToiaXNFdmFsU3VwcG9ydGVkIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbSh0aGlzLCJpc0V2YWxTdXBwb3J0ZWQiLGZ1bmN0aW9uKCl7dHJ5e3JldHVybiBuZXcgRnVuY3Rpb24oIiIpLCEwfWNhdGNoKGUpe3JldHVybiExfX0oKSl9fSx7a2V5OiJpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG0odGhpcywiaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQiLCJ1bmRlZmluZWQiIT10eXBlb2YgT2Zmc2NyZWVuQ2FudmFzKX19LHtrZXk6InBsYXRmb3JtIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4idW5kZWZpbmVkIj09dHlwZW9mIG5hdmlnYXRvcj9tKHRoaXMsInBsYXRmb3JtIix7aXNXaW46ITEsaXNNYWM6ITF9KTptKHRoaXMsInBsYXRmb3JtIix7aXNXaW46bmF2aWdhdG9yLnBsYXRmb3JtLmluY2x1ZGVzKCJXaW4iKSxpc01hYzpuYXZpZ2F0b3IucGxhdGZvcm0uaW5jbHVkZXMoIk1hYyIpfSl9fV0pLGV9KCk7dC5GZWF0dXJlVGVzdD1UO3ZhciBJPW4oQXJyYXkoMjU2KS5rZXlzKCkpLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsIjAiKX0pKSxFPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe3UodGhpcyxlKX1yZXR1cm4gYyhlLG51bGwsW3trZXk6Im1ha2VIZXhDb2xvciIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIpe3JldHVybiIjIi5jb25jYXQoSVtlXSkuY29uY2F0KElbdF0pLmNvbmNhdChJW3JdKX19LHtrZXk6InNjYWxlTWluTWF4Iix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciByO2VbMF0/KGVbMF08MCYmKHI9dFswXSx0WzBdPXRbMV0sdFsxXT1yKSx0WzBdKj1lWzBdLHRbMV0qPWVbMF0sZVszXTwwJiYocj10WzJdLHRbMl09dFszXSx0WzNdPXIpLHRbMl0qPWVbM10sdFszXSo9ZVszXSk6KHI9dFswXSx0WzBdPXRbMl0sdFsyXT1yLHI9dFsxXSx0WzFdPXRbM10sdFszXT1yLGVbMV08MCYmKHI9dFsyXSx0WzJdPXRbM10sdFszXT1yKSx0WzJdKj1lWzFdLHRbM10qPWVbMV0sZVsyXTwwJiYocj10WzBdLHRbMF09dFsxXSx0WzFdPXIpLHRbMF0qPWVbMl0sdFsxXSo9ZVsyXSksdFswXSs9ZVs0XSx0WzFdKz1lWzRdLHRbMl0rPWVbNV0sdFszXSs9ZVs1XX19LHtrZXk6InRyYW5zZm9ybSIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm5bZVswXSp0WzBdK2VbMl0qdFsxXSxlWzFdKnRbMF0rZVszXSp0WzFdLGVbMF0qdFsyXStlWzJdKnRbM10sZVsxXSp0WzJdK2VbM10qdFszXSxlWzBdKnRbNF0rZVsyXSp0WzVdK2VbNF0sZVsxXSp0WzRdK2VbM10qdFs1XStlWzVdXX19LHtrZXk6ImFwcGx5VHJhbnNmb3JtIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybltlWzBdKnRbMF0rZVsxXSp0WzJdK3RbNF0sZVswXSp0WzFdK2VbMV0qdFszXSt0WzVdXX19LHtrZXk6ImFwcGx5SW52ZXJzZVRyYW5zZm9ybSIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgcj10WzBdKnRbM10tdFsxXSp0WzJdO3JldHVyblsoZVswXSp0WzNdLWVbMV0qdFsyXSt0WzJdKnRbNV0tdFs0XSp0WzNdKS9yLCgtZVswXSp0WzFdK2VbMV0qdFswXSt0WzRdKnRbMV0tdFs1XSp0WzBdKS9yXX19LHtrZXk6ImdldEF4aWFsQWxpZ25lZEJvdW5kaW5nQm94Iix2YWx1ZTpmdW5jdGlvbih0LHIpe3ZhciBuPWUuYXBwbHlUcmFuc2Zvcm0odCxyKSxhPWUuYXBwbHlUcmFuc2Zvcm0odC5zbGljZSgyLDQpLHIpLGk9ZS5hcHBseVRyYW5zZm9ybShbdFswXSx0WzNdXSxyKSxvPWUuYXBwbHlUcmFuc2Zvcm0oW3RbMl0sdFsxXV0scik7cmV0dXJuW01hdGgubWluKG5bMF0sYVswXSxpWzBdLG9bMF0pLE1hdGgubWluKG5bMV0sYVsxXSxpWzFdLG9bMV0pLE1hdGgubWF4KG5bMF0sYVswXSxpWzBdLG9bMF0pLE1hdGgubWF4KG5bMV0sYVsxXSxpWzFdLG9bMV0pXX19LHtrZXk6ImludmVyc2VUcmFuc2Zvcm0iLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWVbMF0qZVszXS1lWzFdKmVbMl07cmV0dXJuW2VbM10vdCwtZVsxXS90LC1lWzJdL3QsZVswXS90LChlWzJdKmVbNV0tZVs0XSplWzNdKS90LChlWzRdKmVbMV0tZVs1XSplWzBdKS90XX19LHtrZXk6InNpbmd1bGFyVmFsdWVEZWNvbXBvc2UyZFNjYWxlIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1bZVswXSxlWzJdLGVbMV0sZVszXV0scj1lWzBdKnRbMF0rZVsxXSp0WzJdLG49ZVswXSp0WzFdK2VbMV0qdFszXSxhPWVbMl0qdFswXStlWzNdKnRbMl0saT1lWzJdKnRbMV0rZVszXSp0WzNdLG89KHIraSkvMixzPU1hdGguc3FydChNYXRoLnBvdyhyK2ksMiktNCoocippLWEqbikpLzIsYz1vK3N8fDEsdT1vLXN8fDE7cmV0dXJuW01hdGguc3FydChjKSxNYXRoLnNxcnQodSldfX0se2tleToibm9ybWFsaXplUmVjdCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5zbGljZSgwKTtyZXR1cm4gZVswXT5lWzJdJiYodFswXT1lWzJdLHRbMl09ZVswXSksZVsxXT5lWzNdJiYodFsxXT1lWzNdLHRbM109ZVsxXSksdH19LHtrZXk6ImludGVyc2VjdCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgcj1NYXRoLm1heChNYXRoLm1pbihlWzBdLGVbMl0pLE1hdGgubWluKHRbMF0sdFsyXSkpLG49TWF0aC5taW4oTWF0aC5tYXgoZVswXSxlWzJdKSxNYXRoLm1heCh0WzBdLHRbMl0pKTtpZihyPm4pcmV0dXJuIG51bGw7dmFyIGE9TWF0aC5tYXgoTWF0aC5taW4oZVsxXSxlWzNdKSxNYXRoLm1pbih0WzFdLHRbM10pKSxpPU1hdGgubWluKE1hdGgubWF4KGVbMV0sZVszXSksTWF0aC5tYXgodFsxXSx0WzNdKSk7cmV0dXJuIGE+aT9udWxsOltyLGEsbixpXX19LHtrZXk6ImJlemllckJvdW5kaW5nQm94Iix2YWx1ZTpmdW5jdGlvbihlLHQscixhLGksbyxzLGMpe2Zvcih2YXIgdSxsLGYsaCxkLHAsZyx2LHk9W10sbT1bW10sW11dLGI9MDtiPDI7KytiKWlmKDA9PT1iPyhsPTYqZS0xMipyKzYqaSx1PS0zKmUrOSpyLTkqaSszKnMsZj0zKnItMyplKToobD02KnQtMTIqYSs2Km8sdT0tMyp0KzkqYS05Km8rMypjLGY9MyphLTMqdCksTWF0aC5hYnModSk8MWUtMTIpe2lmKE1hdGguYWJzKGwpPDFlLTEyKWNvbnRpbnVlOzA8KGg9LWYvbCkmJmg8MSYmeS5wdXNoKGgpfWVsc2UgZz1sKmwtNCpmKnUsdj1NYXRoLnNxcnQoZyksZzwwfHwoMDwoZD0oLWwrdikvKDIqdSkpJiZkPDEmJnkucHVzaChkKSwwPChwPSgtbC12KS8oMip1KSkmJnA8MSYmeS5wdXNoKHApKTtmb3IodmFyIHcsaz15Lmxlbmd0aCxTPWs7ay0tOyl3PTEtKGg9eVtrXSksbVswXVtrXT13KncqdyplKzMqdyp3KmgqciszKncqaCpoKmkraCpoKmgqcyxtWzFdW2tdPXcqdyp3KnQrMyp3KncqaCphKzMqdypoKmgqbytoKmgqaCpjO3JldHVybiBtWzBdW1NdPWUsbVsxXVtTXT10LG1bMF1bUysxXT1zLG1bMV1bUysxXT1jLG1bMF0ubGVuZ3RoPW1bMV0ubGVuZ3RoPVMrMixbTWF0aC5taW4uYXBwbHkoTWF0aCxuKG1bMF0pKSxNYXRoLm1pbi5hcHBseShNYXRoLG4obVsxXSkpLE1hdGgubWF4LmFwcGx5KE1hdGgsbihtWzBdKSksTWF0aC5tYXguYXBwbHkoTWF0aCxuKG1bMV0pKV19fV0pLGV9KCk7dC5VdGlsPUU7dmFyIGo9WzAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDcyOCw3MTEsNzEwLDcyOSw3MzMsNzMxLDczMCw3MzIsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsODIyNiw4MjI0LDgyMjUsODIzMCw4MjEyLDgyMTEsNDAyLDgyNjAsODI0OSw4MjUwLDg3MjIsODI0MCw4MjIyLDgyMjAsODIyMSw4MjE2LDgyMTcsODIxOCw4NDgyLDY0MjU3LDY0MjU4LDMyMSwzMzgsMzUyLDM3NiwzODEsMzA1LDMyMiwzMzksMzUzLDM4MiwwLDgzNjRdO2Z1bmN0aW9uIE0oZSl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChlc2NhcGUoZSkpfX0sKGUsdCxyKT0+e3ZhciBuPXIoNCk7IWdsb2JhbFRoaXMuYnRvYSYmbi5pc05vZGVKUyYmKGdsb2JhbFRoaXMuYnRvYT1mdW5jdGlvbihlKXtyZXR1cm4gQnVmZmVyLmZyb20oZSwiYmluYXJ5IikudG9TdHJpbmcoImJhc2U2NCIpfSksIWdsb2JhbFRoaXMuYXRvYiYmbi5pc05vZGVKUyYmKGdsb2JhbFRoaXMuYXRvYj1mdW5jdGlvbihlKXtyZXR1cm4gQnVmZmVyLmZyb20oZSwiYmFzZTY0IikudG9TdHJpbmcoImJpbmFyeSIpfSksIWdsb2JhbFRoaXMuRE9NTWF0cml4JiZuLmlzTm9kZUpTJiYoZ2xvYmFsVGhpcy5ET01NYXRyaXg9cmVxdWlyZSgiY2FudmFzIikuRE9NTWF0cml4KSwhZ2xvYmFsVGhpcy5SZWFkYWJsZVN0cmVhbSYmbi5pc05vZGVKUyYmKGdsb2JhbFRoaXMuUmVhZGFibGVTdHJlYW09cmVxdWlyZSgid2ViLXN0cmVhbXMtcG9seWZpbGwvZGlzdC9wb255ZmlsbC5qcyIpLlJlYWRhYmxlU3RyZWFtKSxBcnJheS5wcm90b3R5cGUuYXR8fHIoNSksVWludDhBcnJheS5wcm90b3R5cGUuYXR8fHIoNzkpLGdsb2JhbFRoaXMuc3RydWN0dXJlZENsb25lfHxyKDg5KX0sKGUsdCk9PntmdW5jdGlvbiByKGUpe3JldHVybiByPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSxyKGUpfU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LmlzTm9kZUpTPXZvaWQgMDt2YXIgbj0hKCJvYmplY3QiIT09KCJ1bmRlZmluZWQiPT10eXBlb2YgcHJvY2Vzcz8idW5kZWZpbmVkIjpyKHByb2Nlc3MpKXx8cHJvY2VzcysiIiE9IltvYmplY3QgcHJvY2Vzc10ifHxwcm9jZXNzLnZlcnNpb25zLm53fHxwcm9jZXNzLnZlcnNpb25zLmVsZWN0cm9uJiZwcm9jZXNzLnR5cGUmJiJicm93c2VyIiE9PXByb2Nlc3MudHlwZSk7dC5pc05vZGVKUz1ufSwoZSx0LHIpPT57cig2KTt2YXIgbj1yKDc4KTtlLmV4cG9ydHM9bigiQXJyYXkiLCJhdCIpfSwoZSx0LHIpPT57dmFyIG49cig3KSxhPXIoNDQpLGk9cig2OCksbz1yKDY2KSxzPXIoNzMpO24oe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwfSx7YXQ6ZnVuY3Rpb24oZSl7dmFyIHQ9YSh0aGlzKSxyPWkodCksbj1vKGUpLHM9bj49MD9uOnIrbjtyZXR1cm4gczwwfHxzPj1yP3ZvaWQgMDp0W3NdfX0pLHMoImF0Iil9LChlLHQscik9Pnt2YXIgbj1yKDgpLGE9cig5KS5mLGk9cig0OCksbz1yKDUyKSxzPXIoNDIpLGM9cig2MCksdT1yKDcyKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgcixsLGYsaCxkLHA9ZS50YXJnZXQsZz1lLmdsb2JhbCx2PWUuc3RhdDtpZihyPWc/bjp2P25bcF18fHMocCx7fSk6KG5bcF18fHt9KS5wcm90b3R5cGUpZm9yKGwgaW4gdCl7aWYoaD10W2xdLGY9ZS5kb250Q2FsbEdldFNldD8oZD1hKHIsbCkpJiZkLnZhbHVlOnJbbF0sIXUoZz9sOnArKHY/Ii4iOiIjIikrbCxlLmZvcmNlZCkmJnZvaWQgMCE9PWYpe2lmKHR5cGVvZiBoPT10eXBlb2YgZiljb250aW51ZTtjKGgsZil9KGUuc2hhbXx8ZiYmZi5zaGFtKSYmaShoLCJzaGFtIiwhMCksbyhyLGwsaCxlKX19fSxlPT57dmFyIHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuTWF0aD09TWF0aCYmZX07ZS5leHBvcnRzPXQoIm9iamVjdCI9PXR5cGVvZiBnbG9iYWxUaGlzJiZnbG9iYWxUaGlzKXx8dCgib2JqZWN0Ij09dHlwZW9mIHdpbmRvdyYmd2luZG93KXx8dCgib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGYpfHx0KCJvYmplY3QiPT10eXBlb2YgZ2xvYmFsJiZnbG9iYWwpfHxmdW5jdGlvbigpe3JldHVybiB0aGlzfSgpfHxGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpfSwoZSx0LHIpPT57dmFyIG49cigxMCksYT1yKDEyKSxpPXIoMTQpLG89cigxNSkscz1yKDE2KSxjPXIoMjIpLHU9cig0MyksbD1yKDQ2KSxmPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7dC5mPW4/ZjpmdW5jdGlvbihlLHQpe2lmKGU9cyhlKSx0PWModCksbCl0cnl7cmV0dXJuIGYoZSx0KX1jYXRjaChlKXt9aWYodShlLHQpKXJldHVybiBvKCFhKGkuZixlLHQpLGVbdF0pfX0sKGUsdCxyKT0+e3ZhciBuPXIoMTEpO2UuZXhwb3J0cz0hbigoZnVuY3Rpb24oKXtyZXR1cm4gNyE9T2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LDEse2dldDpmdW5jdGlvbigpe3JldHVybiA3fX0pWzFdfSkpfSxlPT57ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3RyeXtyZXR1cm4hIWUoKX1jYXRjaChlKXtyZXR1cm4hMH19fSwoZSx0LHIpPT57dmFyIG49cigxMyksYT1GdW5jdGlvbi5wcm90b3R5cGUuY2FsbDtlLmV4cG9ydHM9bj9hLmJpbmQoYSk6ZnVuY3Rpb24oKXtyZXR1cm4gYS5hcHBseShhLGFyZ3VtZW50cyl9fSwoZSx0LHIpPT57dmFyIG49cigxMSk7ZS5leHBvcnRzPSFuKChmdW5jdGlvbigpe3ZhciBlPWZ1bmN0aW9uKCl7fS5iaW5kKCk7cmV0dXJuImZ1bmN0aW9uIiE9dHlwZW9mIGV8fGUuaGFzT3duUHJvcGVydHkoInByb3RvdHlwZSIpfSkpfSwoZSx0KT0+e3ZhciByPXt9LnByb3BlcnR5SXNFbnVtZXJhYmxlLG49T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixhPW4mJiFyLmNhbGwoezE6Mn0sMSk7dC5mPWE/ZnVuY3Rpb24oZSl7dmFyIHQ9bih0aGlzLGUpO3JldHVybiEhdCYmdC5lbnVtZXJhYmxlfTpyfSxlPT57ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJue2VudW1lcmFibGU6ISgxJmUpLGNvbmZpZ3VyYWJsZTohKDImZSksd3JpdGFibGU6ISg0JmUpLHZhbHVlOnR9fX0sKGUsdCxyKT0+e3ZhciBuPXIoMTcpLGE9cigyMCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBuKGEoZSkpfX0sKGUsdCxyKT0+e3ZhciBuPXIoMTgpLGE9cigxMSksaT1yKDE5KSxvPU9iamVjdCxzPW4oIiIuc3BsaXQpO2UuZXhwb3J0cz1hKChmdW5jdGlvbigpe3JldHVybiFvKCJ6IikucHJvcGVydHlJc0VudW1lcmFibGUoMCl9KSk/ZnVuY3Rpb24oZSl7cmV0dXJuIlN0cmluZyI9PWkoZSk/cyhlLCIiKTpvKGUpfTpvfSwoZSx0LHIpPT57dmFyIG49cigxMyksYT1GdW5jdGlvbi5wcm90b3R5cGUsaT1hLmNhbGwsbz1uJiZhLmJpbmQuYmluZChpLGkpO2UuZXhwb3J0cz1uP286ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGkuYXBwbHkoZSxhcmd1bWVudHMpfX19LChlLHQscik9Pnt2YXIgbj1yKDE4KSxhPW4oe30udG9TdHJpbmcpLGk9bigiIi5zbGljZSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBpKGEoZSksOCwtMSl9fSwoZSx0LHIpPT57dmFyIG49cigyMSksYT1UeXBlRXJyb3I7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKG4oZSkpdGhyb3cgYSgiQ2FuJ3QgY2FsbCBtZXRob2Qgb24gIitlKTtyZXR1cm4gZX19LGU9PntlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWV9fSwoZSx0LHIpPT57dmFyIG49cigyMyksYT1yKDI3KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9bihlLCJzdHJpbmciKTtyZXR1cm4gYSh0KT90OnQrIiJ9fSwoZSx0LHIpPT57dmFyIG49cigxMiksYT1yKDI0KSxpPXIoMjcpLG89cigzNCkscz1yKDM3KSxjPXIoMzgpLHU9VHlwZUVycm9yLGw9YygidG9QcmltaXRpdmUiKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtpZighYShlKXx8aShlKSlyZXR1cm4gZTt2YXIgcixjPW8oZSxsKTtpZihjKXtpZih2b2lkIDA9PT10JiYodD0iZGVmYXVsdCIpLHI9bihjLGUsdCksIWEocil8fGkocikpcmV0dXJuIHI7dGhyb3cgdSgiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlIil9cmV0dXJuIHZvaWQgMD09PXQmJih0PSJudW1iZXIiKSxzKGUsdCl9fSwoZSx0LHIpPT57dmFyIG49cigyNSksYT1yKDI2KSxpPWEuYWxsO2UuZXhwb3J0cz1hLklTX0hUTUxEREE/ZnVuY3Rpb24oZSl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBlP251bGwhPT1lOm4oZSl8fGU9PT1pfTpmdW5jdGlvbihlKXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIGU/bnVsbCE9PWU6bihlKX19LChlLHQscik9Pnt2YXIgbj1yKDI2KSxhPW4uYWxsO2UuZXhwb3J0cz1uLklTX0hUTUxEREE/ZnVuY3Rpb24oZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGV8fGU9PT1hfTpmdW5jdGlvbihlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZX19LGU9Pnt2YXIgdD0ib2JqZWN0Ij09dHlwZW9mIGRvY3VtZW50JiZkb2N1bWVudC5hbGwscj12b2lkIDA9PT10JiZ2b2lkIDAhPT10O2UuZXhwb3J0cz17YWxsOnQsSVNfSFRNTEREQTpyfX0sKGUsdCxyKT0+e3ZhciBuPXIoMjgpLGE9cigyNSksaT1yKDI5KSxvPXIoMzApLHM9T2JqZWN0O2UuZXhwb3J0cz1vP2Z1bmN0aW9uKGUpe3JldHVybiJzeW1ib2wiPT10eXBlb2YgZX06ZnVuY3Rpb24oZSl7dmFyIHQ9bigiU3ltYm9sIik7cmV0dXJuIGEodCkmJmkodC5wcm90b3R5cGUscyhlKSl9fSwoZSx0LHIpPT57dmFyIG49cig4KSxhPXIoMjUpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPDI/KHI9bltlXSxhKHIpP3I6dm9pZCAwKTpuW2VdJiZuW2VdW3RdO3ZhciByfX0sKGUsdCxyKT0+e3ZhciBuPXIoMTgpO2UuZXhwb3J0cz1uKHt9LmlzUHJvdG90eXBlT2YpfSwoZSx0LHIpPT57dmFyIG49cigzMSk7ZS5leHBvcnRzPW4mJiFTeW1ib2wuc2hhbSYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3J9LChlLHQscik9Pnt2YXIgbj1yKDMyKSxhPXIoMTEpO2UuZXhwb3J0cz0hIU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJiFhKChmdW5jdGlvbigpe3ZhciBlPVN5bWJvbCgpO3JldHVybiFTdHJpbmcoZSl8fCEoT2JqZWN0KGUpaW5zdGFuY2VvZiBTeW1ib2wpfHwhU3ltYm9sLnNoYW0mJm4mJm48NDF9KSl9LChlLHQscik9Pnt2YXIgbixhLGk9cig4KSxvPXIoMzMpLHM9aS5wcm9jZXNzLGM9aS5EZW5vLHU9cyYmcy52ZXJzaW9uc3x8YyYmYy52ZXJzaW9uLGw9dSYmdS52ODtsJiYoYT0obj1sLnNwbGl0KCIuIikpWzBdPjAmJm5bMF08ND8xOisoblswXStuWzFdKSksIWEmJm8mJighKG49by5tYXRjaCgvRWRnZVwvKFxkKykvKSl8fG5bMV0+PTc0KSYmKG49by5tYXRjaCgvQ2hyb21lXC8oXGQrKS8pKSYmKGE9K25bMV0pLGUuZXhwb3J0cz1hfSwoZSx0LHIpPT57dmFyIG49cigyOCk7ZS5leHBvcnRzPW4oIm5hdmlnYXRvciIsInVzZXJBZ2VudCIpfHwiIn0sKGUsdCxyKT0+e3ZhciBuPXIoMzUpLGE9cigyMSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIHI9ZVt0XTtyZXR1cm4gYShyKT92b2lkIDA6bihyKX19LChlLHQscik9Pnt2YXIgbj1yKDI1KSxhPXIoMzYpLGk9VHlwZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZihuKGUpKXJldHVybiBlO3Rocm93IGkoYShlKSsiIGlzIG5vdCBhIGZ1bmN0aW9uIil9fSxlPT57dmFyIHQ9U3RyaW5nO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt0cnl7cmV0dXJuIHQoZSl9Y2F0Y2goZSl7cmV0dXJuIk9iamVjdCJ9fX0sKGUsdCxyKT0+e3ZhciBuPXIoMTIpLGE9cigyNSksaT1yKDI0KSxvPVR5cGVFcnJvcjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgcixzO2lmKCJzdHJpbmciPT09dCYmYShyPWUudG9TdHJpbmcpJiYhaShzPW4ocixlKSkpcmV0dXJuIHM7aWYoYShyPWUudmFsdWVPZikmJiFpKHM9bihyLGUpKSlyZXR1cm4gcztpZigic3RyaW5nIiE9PXQmJmEocj1lLnRvU3RyaW5nKSYmIWkocz1uKHIsZSkpKXJldHVybiBzO3Rocm93IG8oIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZSIpfX0sKGUsdCxyKT0+e3ZhciBuPXIoOCksYT1yKDM5KSxpPXIoNDMpLG89cig0NSkscz1yKDMxKSxjPXIoMzApLHU9YSgid2tzIiksbD1uLlN5bWJvbCxmPWwmJmwuZm9yLGg9Yz9sOmwmJmwud2l0aG91dFNldHRlcnx8bztlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYoIWkodSxlKXx8IXMmJiJzdHJpbmciIT10eXBlb2YgdVtlXSl7dmFyIHQ9IlN5bWJvbC4iK2U7cyYmaShsLGUpP3VbZV09bFtlXTp1W2VdPWMmJmY/Zih0KTpoKHQpfXJldHVybiB1W2VdfX0sKGUsdCxyKT0+e3ZhciBuPXIoNDApLGE9cig0MSk7KGUuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybiBhW2VdfHwoYVtlXT12b2lkIDAhPT10P3Q6e30pfSkoInZlcnNpb25zIixbXSkucHVzaCh7dmVyc2lvbjoiMy4yNi4xIixtb2RlOm4/InB1cmUiOiJnbG9iYWwiLGNvcHlyaWdodDoiwqkgMjAxNC0yMDIyIERlbmlzIFB1c2hrYXJldiAoemxvaXJvY2sucnUpIixsaWNlbnNlOiJodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9ibG9iL3YzLjI2LjEvTElDRU5TRSIsc291cmNlOiJodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcyJ9KX0sZT0+e2UuZXhwb3J0cz0hMX0sKGUsdCxyKT0+e3ZhciBuPXIoOCksYT1yKDQyKSxpPSJfX2NvcmUtanNfc2hhcmVkX18iLG89bltpXXx8YShpLHt9KTtlLmV4cG9ydHM9b30sKGUsdCxyKT0+e3ZhciBuPXIoOCksYT1PYmplY3QuZGVmaW5lUHJvcGVydHk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dHJ5e2EobixlLHt2YWx1ZTp0LGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pfWNhdGNoKHIpe25bZV09dH1yZXR1cm4gdH19LChlLHQscik9Pnt2YXIgbj1yKDE4KSxhPXIoNDQpLGk9bih7fS5oYXNPd25Qcm9wZXJ0eSk7ZS5leHBvcnRzPU9iamVjdC5oYXNPd258fGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGkoYShlKSx0KX19LChlLHQscik9Pnt2YXIgbj1yKDIwKSxhPU9iamVjdDtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGEobihlKSl9fSwoZSx0LHIpPT57dmFyIG49cigxOCksYT0wLGk9TWF0aC5yYW5kb20oKSxvPW4oMS4udG9TdHJpbmcpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4iU3ltYm9sKCIrKHZvaWQgMD09PWU/IiI6ZSkrIilfIitvKCsrYStpLDM2KX19LChlLHQscik9Pnt2YXIgbj1yKDEwKSxhPXIoMTEpLGk9cig0Nyk7ZS5leHBvcnRzPSFuJiYhYSgoZnVuY3Rpb24oKXtyZXR1cm4gNyE9T2JqZWN0LmRlZmluZVByb3BlcnR5KGkoImRpdiIpLCJhIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDd9fSkuYX0pKX0sKGUsdCxyKT0+e3ZhciBuPXIoOCksYT1yKDI0KSxpPW4uZG9jdW1lbnQsbz1hKGkpJiZhKGkuY3JlYXRlRWxlbWVudCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBvP2kuY3JlYXRlRWxlbWVudChlKTp7fX19LChlLHQscik9Pnt2YXIgbj1yKDEwKSxhPXIoNDkpLGk9cigxNSk7ZS5leHBvcnRzPW4/ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBhLmYoZSx0LGkoMSxyKSl9OmZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZVt0XT1yLGV9fSwoZSx0LHIpPT57dmFyIG49cigxMCksYT1yKDQ2KSxpPXIoNTApLG89cig1MSkscz1yKDIyKSxjPVR5cGVFcnJvcix1PU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxsPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsZj0iZW51bWVyYWJsZSIsaD0iY29uZmlndXJhYmxlIixkPSJ3cml0YWJsZSI7dC5mPW4/aT9mdW5jdGlvbihlLHQscil7aWYobyhlKSx0PXModCksbyhyKSwiZnVuY3Rpb24iPT10eXBlb2YgZSYmInByb3RvdHlwZSI9PT10JiYidmFsdWUiaW4gciYmZCBpbiByJiYhcltkXSl7dmFyIG49bChlLHQpO24mJm5bZF0mJihlW3RdPXIudmFsdWUscj17Y29uZmlndXJhYmxlOmggaW4gcj9yW2hdOm5baF0sZW51bWVyYWJsZTpmIGluIHI/cltmXTpuW2ZdLHdyaXRhYmxlOiExfSl9cmV0dXJuIHUoZSx0LHIpfTp1OmZ1bmN0aW9uKGUsdCxyKXtpZihvKGUpLHQ9cyh0KSxvKHIpLGEpdHJ5e3JldHVybiB1KGUsdCxyKX1jYXRjaChlKXt9aWYoImdldCJpbiByfHwic2V0ImluIHIpdGhyb3cgYygiQWNjZXNzb3JzIG5vdCBzdXBwb3J0ZWQiKTtyZXR1cm4idmFsdWUiaW4gciYmKGVbdF09ci52YWx1ZSksZX19LChlLHQscik9Pnt2YXIgbj1yKDEwKSxhPXIoMTEpO2UuZXhwb3J0cz1uJiZhKChmdW5jdGlvbigpe3JldHVybiA0MiE9T2JqZWN0LmRlZmluZVByb3BlcnR5KChmdW5jdGlvbigpe30pLCJwcm90b3R5cGUiLHt2YWx1ZTo0Mix3cml0YWJsZTohMX0pLnByb3RvdHlwZX0pKX0sKGUsdCxyKT0+e3ZhciBuPXIoMjQpLGE9U3RyaW5nLGk9VHlwZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZihuKGUpKXJldHVybiBlO3Rocm93IGkoYShlKSsiIGlzIG5vdCBhbiBvYmplY3QiKX19LChlLHQscik9Pnt2YXIgbj1yKDI1KSxhPXIoNDkpLGk9cig1Myksbz1yKDQyKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIscyl7c3x8KHM9e30pO3ZhciBjPXMuZW51bWVyYWJsZSx1PXZvaWQgMCE9PXMubmFtZT9zLm5hbWU6dDtpZihuKHIpJiZpKHIsdSxzKSxzLmdsb2JhbCljP2VbdF09cjpvKHQscik7ZWxzZXt0cnl7cy51bnNhZmU/ZVt0XSYmKGM9ITApOmRlbGV0ZSBlW3RdfWNhdGNoKGUpe31jP2VbdF09cjphLmYoZSx0LHt2YWx1ZTpyLGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiFzLm5vbkNvbmZpZ3VyYWJsZSx3cml0YWJsZTohcy5ub25Xcml0YWJsZX0pfXJldHVybiBlfX0sKGUsdCxyKT0+e3ZhciBuPXIoMTEpLGE9cigyNSksaT1yKDQzKSxvPXIoMTApLHM9cig1NCkuQ09ORklHVVJBQkxFLGM9cig1NSksdT1yKDU2KSxsPXUuZW5mb3JjZSxmPXUuZ2V0LGg9T2JqZWN0LmRlZmluZVByb3BlcnR5LGQ9byYmIW4oKGZ1bmN0aW9uKCl7cmV0dXJuIDghPT1oKChmdW5jdGlvbigpe30pLCJsZW5ndGgiLHt2YWx1ZTo4fSkubGVuZ3RofSkpLHA9U3RyaW5nKFN0cmluZykuc3BsaXQoIlN0cmluZyIpLGc9ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXsiU3ltYm9sKCI9PT1TdHJpbmcodCkuc2xpY2UoMCw3KSYmKHQ9IlsiK1N0cmluZyh0KS5yZXBsYWNlKC9eU3ltYm9sXCgoW14pXSopXCkvLCIkMSIpKyJdIiksciYmci5nZXR0ZXImJih0PSJnZXQgIit0KSxyJiZyLnNldHRlciYmKHQ9InNldCAiK3QpLCghaShlLCJuYW1lIil8fHMmJmUubmFtZSE9PXQpJiYobz9oKGUsIm5hbWUiLHt2YWx1ZTp0LGNvbmZpZ3VyYWJsZTohMH0pOmUubmFtZT10KSxkJiZyJiZpKHIsImFyaXR5IikmJmUubGVuZ3RoIT09ci5hcml0eSYmaChlLCJsZW5ndGgiLHt2YWx1ZTpyLmFyaXR5fSk7dHJ5e3ImJmkociwiY29uc3RydWN0b3IiKSYmci5jb25zdHJ1Y3Rvcj9vJiZoKGUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSk6ZS5wcm90b3R5cGUmJihlLnByb3RvdHlwZT12b2lkIDApfWNhdGNoKGUpe312YXIgbj1sKGUpO3JldHVybiBpKG4sInNvdXJjZSIpfHwobi5zb3VyY2U9cC5qb2luKCJzdHJpbmciPT10eXBlb2YgdD90OiIiKSksZX07RnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nPWcoKGZ1bmN0aW9uKCl7cmV0dXJuIGEodGhpcykmJmYodGhpcykuc291cmNlfHxjKHRoaXMpfSksInRvU3RyaW5nIil9LChlLHQscik9Pnt2YXIgbj1yKDEwKSxhPXIoNDMpLGk9RnVuY3Rpb24ucHJvdG90eXBlLG89biYmT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixzPWEoaSwibmFtZSIpLGM9cyYmInNvbWV0aGluZyI9PT1mdW5jdGlvbigpe30ubmFtZSx1PXMmJighbnx8biYmbyhpLCJuYW1lIikuY29uZmlndXJhYmxlKTtlLmV4cG9ydHM9e0VYSVNUUzpzLFBST1BFUjpjLENPTkZJR1VSQUJMRTp1fX0sKGUsdCxyKT0+e3ZhciBuPXIoMTgpLGE9cigyNSksaT1yKDQxKSxvPW4oRnVuY3Rpb24udG9TdHJpbmcpO2EoaS5pbnNwZWN0U291cmNlKXx8KGkuaW5zcGVjdFNvdXJjZT1mdW5jdGlvbihlKXtyZXR1cm4gbyhlKX0pLGUuZXhwb3J0cz1pLmluc3BlY3RTb3VyY2V9LChlLHQscik9Pnt2YXIgbixhLGksbz1yKDU3KSxzPXIoOCksYz1yKDI0KSx1PXIoNDgpLGw9cig0MyksZj1yKDQxKSxoPXIoNTgpLGQ9cig1OSkscD0iT2JqZWN0IGFscmVhZHkgaW5pdGlhbGl6ZWQiLGc9cy5UeXBlRXJyb3Isdj1zLldlYWtNYXA7aWYob3x8Zi5zdGF0ZSl7dmFyIHk9Zi5zdGF0ZXx8KGYuc3RhdGU9bmV3IHYpO3kuZ2V0PXkuZ2V0LHkuaGFzPXkuaGFzLHkuc2V0PXkuc2V0LG49ZnVuY3Rpb24oZSx0KXtpZih5LmhhcyhlKSl0aHJvdyBnKHApO3JldHVybiB0LmZhY2FkZT1lLHkuc2V0KGUsdCksdH0sYT1mdW5jdGlvbihlKXtyZXR1cm4geS5nZXQoZSl8fHt9fSxpPWZ1bmN0aW9uKGUpe3JldHVybiB5LmhhcyhlKX19ZWxzZXt2YXIgbT1oKCJzdGF0ZSIpO2RbbV09ITAsbj1mdW5jdGlvbihlLHQpe2lmKGwoZSxtKSl0aHJvdyBnKHApO3JldHVybiB0LmZhY2FkZT1lLHUoZSxtLHQpLHR9LGE9ZnVuY3Rpb24oZSl7cmV0dXJuIGwoZSxtKT9lW21dOnt9fSxpPWZ1bmN0aW9uKGUpe3JldHVybiBsKGUsbSl9fWUuZXhwb3J0cz17c2V0Om4sZ2V0OmEsaGFzOmksZW5mb3JjZTpmdW5jdGlvbihlKXtyZXR1cm4gaShlKT9hKGUpOm4oZSx7fSl9LGdldHRlckZvcjpmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIHI7aWYoIWModCl8fChyPWEodCkpLnR5cGUhPT1lKXRocm93IGcoIkluY29tcGF0aWJsZSByZWNlaXZlciwgIitlKyIgcmVxdWlyZWQiKTtyZXR1cm4gcn19fX0sKGUsdCxyKT0+e3ZhciBuPXIoOCksYT1yKDI1KSxpPW4uV2Vha01hcDtlLmV4cG9ydHM9YShpKSYmL25hdGl2ZSBjb2RlLy50ZXN0KFN0cmluZyhpKSl9LChlLHQscik9Pnt2YXIgbj1yKDM5KSxhPXIoNDUpLGk9bigia2V5cyIpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gaVtlXXx8KGlbZV09YShlKSl9fSxlPT57ZS5leHBvcnRzPXt9fSwoZSx0LHIpPT57dmFyIG49cig0MyksYT1yKDYxKSxpPXIoOSksbz1yKDQ5KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIpe2Zvcih2YXIgcz1hKHQpLGM9by5mLHU9aS5mLGw9MDtsPHMubGVuZ3RoO2wrKyl7dmFyIGY9c1tsXTtuKGUsZil8fHImJm4ocixmKXx8YyhlLGYsdSh0LGYpKX19fSwoZSx0LHIpPT57dmFyIG49cigyOCksYT1yKDE4KSxpPXIoNjIpLG89cig3MSkscz1yKDUxKSxjPWEoW10uY29uY2F0KTtlLmV4cG9ydHM9bigiUmVmbGVjdCIsIm93bktleXMiKXx8ZnVuY3Rpb24oZSl7dmFyIHQ9aS5mKHMoZSkpLHI9by5mO3JldHVybiByP2ModCxyKGUpKTp0fX0sKGUsdCxyKT0+e3ZhciBuPXIoNjMpLGE9cig3MCkuY29uY2F0KCJsZW5ndGgiLCJwcm90b3R5cGUiKTt0LmY9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXN8fGZ1bmN0aW9uKGUpe3JldHVybiBuKGUsYSl9fSwoZSx0LHIpPT57dmFyIG49cigxOCksYT1yKDQzKSxpPXIoMTYpLG89cig2NCkuaW5kZXhPZixzPXIoNTkpLGM9bihbXS5wdXNoKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgcixuPWkoZSksdT0wLGw9W107Zm9yKHIgaW4gbikhYShzLHIpJiZhKG4scikmJmMobCxyKTtmb3IoO3QubGVuZ3RoPnU7KWEobixyPXRbdSsrXSkmJih+byhsLHIpfHxjKGwscikpO3JldHVybiBsfX0sKGUsdCxyKT0+e3ZhciBuPXIoMTYpLGE9cig2NSksaT1yKDY4KSxvPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0LHIsbyl7dmFyIHMsYz1uKHQpLHU9aShjKSxsPWEobyx1KTtpZihlJiZyIT1yKXtmb3IoO3U+bDspaWYoKHM9Y1tsKytdKSE9cylyZXR1cm4hMH1lbHNlIGZvcig7dT5sO2wrKylpZigoZXx8bCBpbiBjKSYmY1tsXT09PXIpcmV0dXJuIGV8fGx8fDA7cmV0dXJuIWUmJi0xfX07ZS5leHBvcnRzPXtpbmNsdWRlczpvKCEwKSxpbmRleE9mOm8oITEpfX0sKGUsdCxyKT0+e3ZhciBuPXIoNjYpLGE9TWF0aC5tYXgsaT1NYXRoLm1pbjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgcj1uKGUpO3JldHVybiByPDA/YShyK3QsMCk6aShyLHQpfX0sKGUsdCxyKT0+e3ZhciBuPXIoNjcpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD0rZTtyZXR1cm4gdCE9dHx8MD09PXQ/MDpuKHQpfX0sZT0+e3ZhciB0PU1hdGguY2VpbCxyPU1hdGguZmxvb3I7ZS5leHBvcnRzPU1hdGgudHJ1bmN8fGZ1bmN0aW9uKGUpe3ZhciBuPStlO3JldHVybihuPjA/cjp0KShuKX19LChlLHQscik9Pnt2YXIgbj1yKDY5KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIG4oZS5sZW5ndGgpfX0sKGUsdCxyKT0+e3ZhciBuPXIoNjYpLGE9TWF0aC5taW47ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBlPjA/YShuKGUpLDkwMDcxOTkyNTQ3NDA5OTEpOjB9fSxlPT57ZS5leHBvcnRzPVsiY29uc3RydWN0b3IiLCJoYXNPd25Qcm9wZXJ0eSIsImlzUHJvdG90eXBlT2YiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsInRvTG9jYWxlU3RyaW5nIiwidG9TdHJpbmciLCJ2YWx1ZU9mIl19LChlLHQpPT57dC5mPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHN9LChlLHQscik9Pnt2YXIgbj1yKDExKSxhPXIoMjUpLGk9LyN8XC5wcm90b3R5cGVcLi8sbz1mdW5jdGlvbihlLHQpe3ZhciByPWNbcyhlKV07cmV0dXJuIHI9PWx8fHIhPXUmJihhKHQpP24odCk6ISF0KX0scz1vLm5vcm1hbGl6ZT1mdW5jdGlvbihlKXtyZXR1cm4gU3RyaW5nKGUpLnJlcGxhY2UoaSwiLiIpLnRvTG93ZXJDYXNlKCl9LGM9by5kYXRhPXt9LHU9by5OQVRJVkU9Ik4iLGw9by5QT0xZRklMTD0iUCI7ZS5leHBvcnRzPW99LChlLHQscik9Pnt2YXIgbj1yKDM4KSxhPXIoNzQpLGk9cig0OSkuZixvPW4oInVuc2NvcGFibGVzIikscz1BcnJheS5wcm90b3R5cGU7bnVsbD09c1tvXSYmaShzLG8se2NvbmZpZ3VyYWJsZTohMCx2YWx1ZTphKG51bGwpfSksZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3Nbb11bZV09ITB9fSwoZSx0LHIpPT57dmFyIG4sYT1yKDUxKSxpPXIoNzUpLG89cig3MCkscz1yKDU5KSxjPXIoNzcpLHU9cig0NyksbD1yKDU4KSxmPSJwcm90b3R5cGUiLGg9InNjcmlwdCIsZD1sKCJJRV9QUk9UTyIpLHA9ZnVuY3Rpb24oKXt9LGc9ZnVuY3Rpb24oZSl7cmV0dXJuIjwiK2grIj4iK2UrIjwvIitoKyI+In0sdj1mdW5jdGlvbihlKXtlLndyaXRlKGcoIiIpKSxlLmNsb3NlKCk7dmFyIHQ9ZS5wYXJlbnRXaW5kb3cuT2JqZWN0O3JldHVybiBlPW51bGwsdH0seT1mdW5jdGlvbigpe3RyeXtuPW5ldyBBY3RpdmVYT2JqZWN0KCJodG1sZmlsZSIpfWNhdGNoKGUpe312YXIgZSx0LHI7eT0idW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50P2RvY3VtZW50LmRvbWFpbiYmbj92KG4pOih0PXUoImlmcmFtZSIpLHI9ImphdmEiK2grIjoiLHQuc3R5bGUuZGlzcGxheT0ibm9uZSIsYy5hcHBlbmRDaGlsZCh0KSx0LnNyYz1TdHJpbmcociksKGU9dC5jb250ZW50V2luZG93LmRvY3VtZW50KS5vcGVuKCksZS53cml0ZShnKCJkb2N1bWVudC5GPU9iamVjdCIpKSxlLmNsb3NlKCksZS5GKTp2KG4pO2Zvcih2YXIgYT1vLmxlbmd0aDthLS07KWRlbGV0ZSB5W2ZdW29bYV1dO3JldHVybiB5KCl9O3NbZF09ITAsZS5leHBvcnRzPU9iamVjdC5jcmVhdGV8fGZ1bmN0aW9uKGUsdCl7dmFyIHI7cmV0dXJuIG51bGwhPT1lPyhwW2ZdPWEoZSkscj1uZXcgcCxwW2ZdPW51bGwscltkXT1lKTpyPXkoKSx2b2lkIDA9PT10P3I6aS5mKHIsdCl9fSwoZSx0LHIpPT57dmFyIG49cigxMCksYT1yKDUwKSxpPXIoNDkpLG89cig1MSkscz1yKDE2KSxjPXIoNzYpO3QuZj1uJiYhYT9PYmplY3QuZGVmaW5lUHJvcGVydGllczpmdW5jdGlvbihlLHQpe28oZSk7Zm9yKHZhciByLG49cyh0KSxhPWModCksdT1hLmxlbmd0aCxsPTA7dT5sOylpLmYoZSxyPWFbbCsrXSxuW3JdKTtyZXR1cm4gZX19LChlLHQscik9Pnt2YXIgbj1yKDYzKSxhPXIoNzApO2UuZXhwb3J0cz1PYmplY3Qua2V5c3x8ZnVuY3Rpb24oZSl7cmV0dXJuIG4oZSxhKX19LChlLHQscik9Pnt2YXIgbj1yKDI4KTtlLmV4cG9ydHM9bigiZG9jdW1lbnQiLCJkb2N1bWVudEVsZW1lbnQiKX0sKGUsdCxyKT0+e3ZhciBuPXIoOCksYT1yKDE4KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gYShuW2VdLnByb3RvdHlwZVt0XSl9fSwoZSx0LHIpPT57cig4MCl9LChlLHQscik9Pnt2YXIgbj1yKDgxKSxhPXIoNjgpLGk9cig2Niksbz1uLmFUeXBlZEFycmF5OygwLG4uZXhwb3J0VHlwZWRBcnJheU1ldGhvZCkoImF0IiwoZnVuY3Rpb24oZSl7dmFyIHQ9byh0aGlzKSxyPWEodCksbj1pKGUpLHM9bj49MD9uOnIrbjtyZXR1cm4gczwwfHxzPj1yP3ZvaWQgMDp0W3NdfSkpfSwoZSx0LHIpPT57dmFyIG4sYSxpLG89cig4Mikscz1yKDEwKSxjPXIoOCksdT1yKDI1KSxsPXIoMjQpLGY9cig0MyksaD1yKDgzKSxkPXIoMzYpLHA9cig0OCksZz1yKDUyKSx2PXIoNDkpLmYseT1yKDI5KSxtPXIoODUpLGI9cig4Nyksdz1yKDM4KSxrPXIoNDUpLFM9cig1NikseD1TLmVuZm9yY2UsTz1TLmdldCxBPWMuSW50OEFycmF5LEM9QSYmQS5wcm90b3R5cGUsRj1jLlVpbnQ4Q2xhbXBlZEFycmF5LFA9RiYmRi5wcm90b3R5cGUsVD1BJiZtKEEpLEk9QyYmbShDKSxFPU9iamVjdC5wcm90b3R5cGUsaj1jLlR5cGVFcnJvcixNPXcoInRvU3RyaW5nVGFnIiksXz1rKCJUWVBFRF9BUlJBWV9UQUciKSxMPSJUeXBlZEFycmF5Q29uc3RydWN0b3IiLFI9byYmISFiJiYiT3BlcmEiIT09aChjLm9wZXJhKSxOPSExLEQ9e0ludDhBcnJheToxLFVpbnQ4QXJyYXk6MSxVaW50OENsYW1wZWRBcnJheToxLEludDE2QXJyYXk6MixVaW50MTZBcnJheToyLEludDMyQXJyYXk6NCxVaW50MzJBcnJheTo0LEZsb2F0MzJBcnJheTo0LEZsb2F0NjRBcnJheTo4fSxCPXtCaWdJbnQ2NEFycmF5OjgsQmlnVWludDY0QXJyYXk6OH0sVT1mdW5jdGlvbihlKXt2YXIgdD1tKGUpO2lmKGwodCkpe3ZhciByPU8odCk7cmV0dXJuIHImJmYocixMKT9yW0xdOlUodCl9fSwkPWZ1bmN0aW9uKGUpe2lmKCFsKGUpKXJldHVybiExO3ZhciB0PWgoZSk7cmV0dXJuIGYoRCx0KXx8ZihCLHQpfTtmb3IobiBpbiBEKShpPShhPWNbbl0pJiZhLnByb3RvdHlwZSk/eChpKVtMXT1hOlI9ITE7Zm9yKG4gaW4gQikoaT0oYT1jW25dKSYmYS5wcm90b3R5cGUpJiYoeChpKVtMXT1hKTtpZigoIVJ8fCF1KFQpfHxUPT09RnVuY3Rpb24ucHJvdG90eXBlKSYmKFQ9ZnVuY3Rpb24oKXt0aHJvdyBqKCJJbmNvcnJlY3QgaW52b2NhdGlvbiIpfSxSKSlmb3IobiBpbiBEKWNbbl0mJmIoY1tuXSxUKTtpZigoIVJ8fCFJfHxJPT09RSkmJihJPVQucHJvdG90eXBlLFIpKWZvcihuIGluIEQpY1tuXSYmYihjW25dLnByb3RvdHlwZSxJKTtpZihSJiZtKFApIT09SSYmYihQLEkpLHMmJiFmKEksTSkpZm9yKG4gaW4gTj0hMCx2KEksTSx7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGwodGhpcyk/dGhpc1tfXTp2b2lkIDB9fSksRCljW25dJiZwKGNbbl0sXyxuKTtlLmV4cG9ydHM9e05BVElWRV9BUlJBWV9CVUZGRVJfVklFV1M6UixUWVBFRF9BUlJBWV9UQUc6TiYmXyxhVHlwZWRBcnJheTpmdW5jdGlvbihlKXtpZigkKGUpKXJldHVybiBlO3Rocm93IGooIlRhcmdldCBpcyBub3QgYSB0eXBlZCBhcnJheSIpfSxhVHlwZWRBcnJheUNvbnN0cnVjdG9yOmZ1bmN0aW9uKGUpe2lmKHUoZSkmJighYnx8eShULGUpKSlyZXR1cm4gZTt0aHJvdyBqKGQoZSkrIiBpcyBub3QgYSB0eXBlZCBhcnJheSBjb25zdHJ1Y3RvciIpfSxleHBvcnRUeXBlZEFycmF5TWV0aG9kOmZ1bmN0aW9uKGUsdCxyLG4pe2lmKHMpe2lmKHIpZm9yKHZhciBhIGluIEQpe3ZhciBpPWNbYV07aWYoaSYmZihpLnByb3RvdHlwZSxlKSl0cnl7ZGVsZXRlIGkucHJvdG90eXBlW2VdfWNhdGNoKHIpe3RyeXtpLnByb3RvdHlwZVtlXT10fWNhdGNoKGUpe319fUlbZV0mJiFyfHxnKEksZSxyP3Q6UiYmQ1tlXXx8dCxuKX19LGV4cG9ydFR5cGVkQXJyYXlTdGF0aWNNZXRob2Q6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuLGE7aWYocyl7aWYoYil7aWYocilmb3IobiBpbiBEKWlmKChhPWNbbl0pJiZmKGEsZSkpdHJ5e2RlbGV0ZSBhW2VdfWNhdGNoKGUpe31pZihUW2VdJiYhcilyZXR1cm47dHJ5e3JldHVybiBnKFQsZSxyP3Q6UiYmVFtlXXx8dCl9Y2F0Y2goZSl7fX1mb3IobiBpbiBEKSEoYT1jW25dKXx8YVtlXSYmIXJ8fGcoYSxlLHQpfX0sZ2V0VHlwZWRBcnJheUNvbnN0cnVjdG9yOlUsaXNWaWV3OmZ1bmN0aW9uKGUpe2lmKCFsKGUpKXJldHVybiExO3ZhciB0PWgoZSk7cmV0dXJuIkRhdGFWaWV3Ij09PXR8fGYoRCx0KXx8ZihCLHQpfSxpc1R5cGVkQXJyYXk6JCxUeXBlZEFycmF5OlQsVHlwZWRBcnJheVByb3RvdHlwZTpJfX0sZT0+e2UuZXhwb3J0cz0idW5kZWZpbmVkIiE9dHlwZW9mIEFycmF5QnVmZmVyJiYidW5kZWZpbmVkIiE9dHlwZW9mIERhdGFWaWV3fSwoZSx0LHIpPT57dmFyIG49cig4NCksYT1yKDI1KSxpPXIoMTkpLG89cigzOCkoInRvU3RyaW5nVGFnIikscz1PYmplY3QsYz0iQXJndW1lbnRzIj09aShmdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHN9KCkpO2UuZXhwb3J0cz1uP2k6ZnVuY3Rpb24oZSl7dmFyIHQscixuO3JldHVybiB2b2lkIDA9PT1lPyJVbmRlZmluZWQiOm51bGw9PT1lPyJOdWxsIjoic3RyaW5nIj09dHlwZW9mKHI9ZnVuY3Rpb24oZSx0KXt0cnl7cmV0dXJuIGVbdF19Y2F0Y2goZSl7fX0odD1zKGUpLG8pKT9yOmM/aSh0KToiT2JqZWN0Ij09KG49aSh0KSkmJmEodC5jYWxsZWUpPyJBcmd1bWVudHMiOm59fSwoZSx0LHIpPT57dmFyIG49e307bltyKDM4KSgidG9TdHJpbmdUYWciKV09InoiLGUuZXhwb3J0cz0iW29iamVjdCB6XSI9PT1TdHJpbmcobil9LChlLHQscik9Pnt2YXIgbj1yKDQzKSxhPXIoMjUpLGk9cig0NCksbz1yKDU4KSxzPXIoODYpLGM9bygiSUVfUFJPVE8iKSx1PU9iamVjdCxsPXUucHJvdG90eXBlO2UuZXhwb3J0cz1zP3UuZ2V0UHJvdG90eXBlT2Y6ZnVuY3Rpb24oZSl7dmFyIHQ9aShlKTtpZihuKHQsYykpcmV0dXJuIHRbY107dmFyIHI9dC5jb25zdHJ1Y3RvcjtyZXR1cm4gYShyKSYmdCBpbnN0YW5jZW9mIHI/ci5wcm90b3R5cGU6dCBpbnN0YW5jZW9mIHU/bDpudWxsfX0sKGUsdCxyKT0+e3ZhciBuPXIoMTEpO2UuZXhwb3J0cz0hbigoZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7fXJldHVybiBlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1udWxsLE9iamVjdC5nZXRQcm90b3R5cGVPZihuZXcgZSkhPT1lLnByb3RvdHlwZX0pKX0sKGUsdCxyKT0+e3ZhciBuPXIoMTgpLGE9cig1MSksaT1yKDg4KTtlLmV4cG9ydHM9T2JqZWN0LnNldFByb3RvdHlwZU9mfHwoIl9fcHJvdG9fXyJpbnt9P2Z1bmN0aW9uKCl7dmFyIGUsdD0hMSxyPXt9O3RyeXsoZT1uKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoT2JqZWN0LnByb3RvdHlwZSwiX19wcm90b19fIikuc2V0KSkocixbXSksdD1yIGluc3RhbmNlb2YgQXJyYXl9Y2F0Y2goZSl7fXJldHVybiBmdW5jdGlvbihyLG4pe3JldHVybiBhKHIpLGkobiksdD9lKHIsbik6ci5fX3Byb3RvX189bixyfX0oKTp2b2lkIDApfSwoZSx0LHIpPT57dmFyIG49cigyNSksYT1TdHJpbmcsaT1UeXBlRXJyb3I7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKCJvYmplY3QiPT10eXBlb2YgZXx8bihlKSlyZXR1cm4gZTt0aHJvdyBpKCJDYW4ndCBzZXQgIithKGUpKyIgYXMgYSBwcm90b3R5cGUiKX19LChlLHQscik9PntyKDkwKSxyKDk3KSxyKDk5KSxyKDEyMikscigxMjQpO3ZhciBuPXIoMTMzKTtlLmV4cG9ydHM9bi5zdHJ1Y3R1cmVkQ2xvbmV9LChlLHQscik9Pnt2YXIgbj1yKDE2KSxhPXIoNzMpLGk9cig5MSksbz1yKDU2KSxzPXIoNDkpLmYsYz1yKDkyKSx1PXIoOTYpLGw9cig0MCksZj1yKDEwKSxoPSJBcnJheSBJdGVyYXRvciIsZD1vLnNldCxwPW8uZ2V0dGVyRm9yKGgpO2UuZXhwb3J0cz1jKEFycmF5LCJBcnJheSIsKGZ1bmN0aW9uKGUsdCl7ZCh0aGlzLHt0eXBlOmgsdGFyZ2V0Om4oZSksaW5kZXg6MCxraW5kOnR9KX0pLChmdW5jdGlvbigpe3ZhciBlPXAodGhpcyksdD1lLnRhcmdldCxyPWUua2luZCxuPWUuaW5kZXgrKztyZXR1cm4hdHx8bj49dC5sZW5ndGg/KGUudGFyZ2V0PXZvaWQgMCx1KHZvaWQgMCwhMCkpOnUoImtleXMiPT1yP246InZhbHVlcyI9PXI/dFtuXTpbbix0W25dXSwhMSl9KSwidmFsdWVzIik7dmFyIGc9aS5Bcmd1bWVudHM9aS5BcnJheTtpZihhKCJrZXlzIiksYSgidmFsdWVzIiksYSgiZW50cmllcyIpLCFsJiZmJiYidmFsdWVzIiE9PWcubmFtZSl0cnl7cyhnLCJuYW1lIix7dmFsdWU6InZhbHVlcyJ9KX1jYXRjaChlKXt9fSxlPT57ZS5leHBvcnRzPXt9fSwoZSx0LHIpPT57dmFyIG49cig3KSxhPXIoMTIpLGk9cig0MCksbz1yKDU0KSxzPXIoMjUpLGM9cig5MyksdT1yKDg1KSxsPXIoODcpLGY9cig5NSksaD1yKDQ4KSxkPXIoNTIpLHA9cigzOCksZz1yKDkxKSx2PXIoOTQpLHk9by5QUk9QRVIsbT1vLkNPTkZJR1VSQUJMRSxiPXYuSXRlcmF0b3JQcm90b3R5cGUsdz12LkJVR0dZX1NBRkFSSV9JVEVSQVRPUlMsaz1wKCJpdGVyYXRvciIpLFM9ImtleXMiLHg9InZhbHVlcyIsTz0iZW50cmllcyIsQT1mdW5jdGlvbigpe3JldHVybiB0aGlzfTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIsbyxwLHYsQyl7YyhyLHQsbyk7dmFyIEYsUCxULEk9ZnVuY3Rpb24oZSl7aWYoZT09PXAmJkwpcmV0dXJuIEw7aWYoIXcmJmUgaW4gTSlyZXR1cm4gTVtlXTtzd2l0Y2goZSl7Y2FzZSBTOmNhc2UgeDpjYXNlIE86cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyByKHRoaXMsZSl9fXJldHVybiBmdW5jdGlvbigpe3JldHVybiBuZXcgcih0aGlzKX19LEU9dCsiIEl0ZXJhdG9yIixqPSExLE09ZS5wcm90b3R5cGUsXz1NW2tdfHxNWyJAQGl0ZXJhdG9yIl18fHAmJk1bcF0sTD0hdyYmX3x8SShwKSxSPSJBcnJheSI9PXQmJk0uZW50cmllc3x8XztpZihSJiYoRj11KFIuY2FsbChuZXcgZSkpKSE9PU9iamVjdC5wcm90b3R5cGUmJkYubmV4dCYmKGl8fHUoRik9PT1ifHwobD9sKEYsYik6cyhGW2tdKXx8ZChGLGssQSkpLGYoRixFLCEwLCEwKSxpJiYoZ1tFXT1BKSkseSYmcD09eCYmXyYmXy5uYW1lIT09eCYmKCFpJiZtP2goTSwibmFtZSIseCk6KGo9ITAsTD1mdW5jdGlvbigpe3JldHVybiBhKF8sdGhpcyl9KSkscClpZihQPXt2YWx1ZXM6SSh4KSxrZXlzOnY/TDpJKFMpLGVudHJpZXM6SShPKX0sQylmb3IoVCBpbiBQKSh3fHxqfHwhKFQgaW4gTSkpJiZkKE0sVCxQW1RdKTtlbHNlIG4oe3RhcmdldDp0LHByb3RvOiEwLGZvcmNlZDp3fHxqfSxQKTtyZXR1cm4gaSYmIUN8fE1ba109PT1MfHxkKE0sayxMLHtuYW1lOnB9KSxnW3RdPUwsUH19LChlLHQscik9Pnt2YXIgbj1yKDk0KS5JdGVyYXRvclByb3RvdHlwZSxhPXIoNzQpLGk9cigxNSksbz1yKDk1KSxzPXIoOTEpLGM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc307ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyLHUpe3ZhciBsPXQrIiBJdGVyYXRvciI7cmV0dXJuIGUucHJvdG90eXBlPWEobix7bmV4dDppKCshdSxyKX0pLG8oZSxsLCExLCEwKSxzW2xdPWMsZX19LChlLHQscik9Pnt2YXIgbixhLGksbz1yKDExKSxzPXIoMjUpLGM9cigyNCksdT1yKDc0KSxsPXIoODUpLGY9cig1MiksaD1yKDM4KSxkPXIoNDApLHA9aCgiaXRlcmF0b3IiKSxnPSExO1tdLmtleXMmJigibmV4dCJpbihpPVtdLmtleXMoKSk/KGE9bChsKGkpKSkhPT1PYmplY3QucHJvdG90eXBlJiYobj1hKTpnPSEwKSwhYyhuKXx8bygoZnVuY3Rpb24oKXt2YXIgZT17fTtyZXR1cm4gbltwXS5jYWxsKGUpIT09ZX0pKT9uPXt9OmQmJihuPXUobikpLHMobltwXSl8fGYobixwLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpLGUuZXhwb3J0cz17SXRlcmF0b3JQcm90b3R5cGU6bixCVUdHWV9TQUZBUklfSVRFUkFUT1JTOmd9fSwoZSx0LHIpPT57dmFyIG49cig0OSkuZixhPXIoNDMpLGk9cigzOCkoInRvU3RyaW5nVGFnIik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXtlJiYhciYmKGU9ZS5wcm90b3R5cGUpLGUmJiFhKGUsaSkmJm4oZSxpLHtjb25maWd1cmFibGU6ITAsdmFsdWU6dH0pfX0sZT0+e2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybnt2YWx1ZTplLGRvbmU6dH19fSwoZSx0LHIpPT57dmFyIG49cig4NCksYT1yKDUyKSxpPXIoOTgpO258fGEoT2JqZWN0LnByb3RvdHlwZSwidG9TdHJpbmciLGkse3Vuc2FmZTohMH0pfSwoZSx0LHIpPT57dmFyIG49cig4NCksYT1yKDgzKTtlLmV4cG9ydHM9bj97fS50b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiJbb2JqZWN0ICIrYSh0aGlzKSsiXSJ9fSwoZSx0LHIpPT57cigxMDApfSwoZSx0LHIpPT57cigxMDEpKCJNYXAiLChmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZSh0aGlzLGFyZ3VtZW50cy5sZW5ndGg/YXJndW1lbnRzWzBdOnZvaWQgMCl9fSkscigxMTkpKX0sKGUsdCxyKT0+e3ZhciBuPXIoNyksYT1yKDgpLGk9cigxOCksbz1yKDcyKSxzPXIoNTIpLGM9cigxMDIpLHU9cigxMDkpLGw9cigxMTYpLGY9cigyNSksaD1yKDIxKSxkPXIoMjQpLHA9cigxMSksZz1yKDExNyksdj1yKDk1KSx5PXIoMTE4KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIpe3ZhciBtPS0xIT09ZS5pbmRleE9mKCJNYXAiKSxiPS0xIT09ZS5pbmRleE9mKCJXZWFrIiksdz1tPyJzZXQiOiJhZGQiLGs9YVtlXSxTPWsmJmsucHJvdG90eXBlLHg9ayxPPXt9LEE9ZnVuY3Rpb24oZSl7dmFyIHQ9aShTW2VdKTtzKFMsZSwiYWRkIj09ZT9mdW5jdGlvbihlKXtyZXR1cm4gdCh0aGlzLDA9PT1lPzA6ZSksdGhpc306ImRlbGV0ZSI9PWU/ZnVuY3Rpb24oZSl7cmV0dXJuIShiJiYhZChlKSkmJnQodGhpcywwPT09ZT8wOmUpfToiZ2V0Ij09ZT9mdW5jdGlvbihlKXtyZXR1cm4gYiYmIWQoZSk/dm9pZCAwOnQodGhpcywwPT09ZT8wOmUpfToiaGFzIj09ZT9mdW5jdGlvbihlKXtyZXR1cm4hKGImJiFkKGUpKSYmdCh0aGlzLDA9PT1lPzA6ZSl9OmZ1bmN0aW9uKGUscil7cmV0dXJuIHQodGhpcywwPT09ZT8wOmUsciksdGhpc30pfTtpZihvKGUsIWYoayl8fCEoYnx8Uy5mb3JFYWNoJiYhcCgoZnVuY3Rpb24oKXsobmV3IGspLmVudHJpZXMoKS5uZXh0KCl9KSkpKSl4PXIuZ2V0Q29uc3RydWN0b3IodCxlLG0sdyksYy5lbmFibGUoKTtlbHNlIGlmKG8oZSwhMCkpe3ZhciBDPW5ldyB4LEY9Q1t3XShiP3t9Oi0wLDEpIT1DLFA9cCgoZnVuY3Rpb24oKXtDLmhhcygxKX0pKSxUPWcoKGZ1bmN0aW9uKGUpe25ldyBrKGUpfSkpLEk9IWImJnAoKGZ1bmN0aW9uKCl7Zm9yKHZhciBlPW5ldyBrLHQ9NTt0LS07KWVbd10odCx0KTtyZXR1cm4hZS5oYXMoLTApfSkpO1R8fCgoeD10KChmdW5jdGlvbihlLHQpe2woZSxTKTt2YXIgcj15KG5ldyBrLGUseCk7cmV0dXJuIGgodCl8fHUodCxyW3ddLHt0aGF0OnIsQVNfRU5UUklFUzptfSkscn0pKSkucHJvdG90eXBlPVMsUy5jb25zdHJ1Y3Rvcj14KSwoUHx8SSkmJihBKCJkZWxldGUiKSxBKCJoYXMiKSxtJiZBKCJnZXQiKSksKEl8fEYpJiZBKHcpLGImJlMuY2xlYXImJmRlbGV0ZSBTLmNsZWFyfXJldHVybiBPW2VdPXgsbih7Z2xvYmFsOiEwLGNvbnN0cnVjdG9yOiEwLGZvcmNlZDp4IT1rfSxPKSx2KHgsZSksYnx8ci5zZXRTdHJvbmcoeCxlLG0pLHh9fSwoZSx0LHIpPT57dmFyIG49cig3KSxhPXIoMTgpLGk9cig1OSksbz1yKDI0KSxzPXIoNDMpLGM9cig0OSkuZix1PXIoNjIpLGw9cigxMDMpLGY9cigxMDYpLGg9cig0NSksZD1yKDEwOCkscD0hMSxnPWgoIm1ldGEiKSx2PTAseT1mdW5jdGlvbihlKXtjKGUsZyx7dmFsdWU6e29iamVjdElEOiJPIit2Kyssd2Vha0RhdGE6e319fSl9LG09ZS5leHBvcnRzPXtlbmFibGU6ZnVuY3Rpb24oKXttLmVuYWJsZT1mdW5jdGlvbigpe30scD0hMDt2YXIgZT11LmYsdD1hKFtdLnNwbGljZSkscj17fTtyW2ddPTEsZShyKS5sZW5ndGgmJih1LmY9ZnVuY3Rpb24ocil7Zm9yKHZhciBuPWUociksYT0wLGk9bi5sZW5ndGg7YTxpO2ErKylpZihuW2FdPT09Zyl7dChuLGEsMSk7YnJlYWt9cmV0dXJuIG59LG4oe3RhcmdldDoiT2JqZWN0IixzdGF0OiEwLGZvcmNlZDohMH0se2dldE93blByb3BlcnR5TmFtZXM6bC5mfSkpfSxmYXN0S2V5OmZ1bmN0aW9uKGUsdCl7aWYoIW8oZSkpcmV0dXJuInN5bWJvbCI9PXR5cGVvZiBlP2U6KCJzdHJpbmciPT10eXBlb2YgZT8iUyI6IlAiKStlO2lmKCFzKGUsZykpe2lmKCFmKGUpKXJldHVybiJGIjtpZighdClyZXR1cm4iRSI7eShlKX1yZXR1cm4gZVtnXS5vYmplY3RJRH0sZ2V0V2Vha0RhdGE6ZnVuY3Rpb24oZSx0KXtpZighcyhlLGcpKXtpZighZihlKSlyZXR1cm4hMDtpZighdClyZXR1cm4hMTt5KGUpfXJldHVybiBlW2ddLndlYWtEYXRhfSxvbkZyZWV6ZTpmdW5jdGlvbihlKXtyZXR1cm4gZCYmcCYmZihlKSYmIXMoZSxnKSYmeShlKSxlfX07aVtnXT0hMH0sKGUsdCxyKT0+e3ZhciBuPXIoMTkpLGE9cigxNiksaT1yKDYyKS5mLG89cigxMDQpLHM9Im9iamVjdCI9PXR5cGVvZiB3aW5kb3cmJndpbmRvdyYmT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXM/T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMod2luZG93KTpbXTtlLmV4cG9ydHMuZj1mdW5jdGlvbihlKXtyZXR1cm4gcyYmIldpbmRvdyI9PW4oZSk/ZnVuY3Rpb24oZSl7dHJ5e3JldHVybiBpKGUpfWNhdGNoKGUpe3JldHVybiBvKHMpfX0oZSk6aShhKGUpKX19LChlLHQscik9Pnt2YXIgbj1yKDY1KSxhPXIoNjgpLGk9cigxMDUpLG89QXJyYXkscz1NYXRoLm1heDtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIpe2Zvcih2YXIgYz1hKGUpLHU9bih0LGMpLGw9bih2b2lkIDA9PT1yP2M6cixjKSxmPW8ocyhsLXUsMCkpLGg9MDt1PGw7dSsrLGgrKylpKGYsaCxlW3VdKTtyZXR1cm4gZi5sZW5ndGg9aCxmfX0sKGUsdCxyKT0+e3ZhciBuPXIoMjIpLGE9cig0OSksaT1yKDE1KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIpe3ZhciBvPW4odCk7byBpbiBlP2EuZihlLG8saSgwLHIpKTplW29dPXJ9fSwoZSx0LHIpPT57dmFyIG49cigxMSksYT1yKDI0KSxpPXIoMTkpLG89cigxMDcpLHM9T2JqZWN0LmlzRXh0ZW5zaWJsZSxjPW4oKGZ1bmN0aW9uKCl7cygxKX0pKTtlLmV4cG9ydHM9Y3x8bz9mdW5jdGlvbihlKXtyZXR1cm4hIWEoZSkmJighb3x8IkFycmF5QnVmZmVyIiE9aShlKSkmJighc3x8cyhlKSl9OnN9LChlLHQscik9Pnt2YXIgbj1yKDExKTtlLmV4cG9ydHM9bigoZnVuY3Rpb24oKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgQXJyYXlCdWZmZXIpe3ZhciBlPW5ldyBBcnJheUJ1ZmZlcig4KTtPYmplY3QuaXNFeHRlbnNpYmxlKGUpJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiYSIse3ZhbHVlOjh9KX19KSl9LChlLHQscik9Pnt2YXIgbj1yKDExKTtlLmV4cG9ydHM9IW4oKGZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdC5pc0V4dGVuc2libGUoT2JqZWN0LnByZXZlbnRFeHRlbnNpb25zKHt9KSl9KSl9LChlLHQscik9Pnt2YXIgbj1yKDExMCksYT1yKDEyKSxpPXIoNTEpLG89cigzNikscz1yKDExMiksYz1yKDY4KSx1PXIoMjkpLGw9cigxMTMpLGY9cigxMTQpLGg9cigxMTUpLGQ9VHlwZUVycm9yLHA9ZnVuY3Rpb24oZSx0KXt0aGlzLnN0b3BwZWQ9ZSx0aGlzLnJlc3VsdD10fSxnPXAucHJvdG90eXBlO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQscil7dmFyIHYseSxtLGIsdyxrLFMseD1yJiZyLnRoYXQsTz0hKCFyfHwhci5BU19FTlRSSUVTKSxBPSEoIXJ8fCFyLklTX1JFQ09SRCksQz0hKCFyfHwhci5JU19JVEVSQVRPUiksRj0hKCFyfHwhci5JTlRFUlJVUFRFRCksUD1uKHQseCksVD1mdW5jdGlvbihlKXtyZXR1cm4gdiYmaCh2LCJub3JtYWwiLGUpLG5ldyBwKCEwLGUpfSxJPWZ1bmN0aW9uKGUpe3JldHVybiBPPyhpKGUpLEY/UChlWzBdLGVbMV0sVCk6UChlWzBdLGVbMV0pKTpGP1AoZSxUKTpQKGUpfTtpZihBKXY9ZS5pdGVyYXRvcjtlbHNlIGlmKEMpdj1lO2Vsc2V7aWYoISh5PWYoZSkpKXRocm93IGQobyhlKSsiIGlzIG5vdCBpdGVyYWJsZSIpO2lmKHMoeSkpe2ZvcihtPTAsYj1jKGUpO2I+bTttKyspaWYoKHc9SShlW21dKSkmJnUoZyx3KSlyZXR1cm4gdztyZXR1cm4gbmV3IHAoITEpfXY9bChlLHkpfWZvcihrPUE/ZS5uZXh0OnYubmV4dDshKFM9YShrLHYpKS5kb25lOyl7dHJ5e3c9SShTLnZhbHVlKX1jYXRjaChlKXtoKHYsInRocm93IixlKX1pZigib2JqZWN0Ij09dHlwZW9mIHcmJncmJnUoZyx3KSlyZXR1cm4gd31yZXR1cm4gbmV3IHAoITEpfX0sKGUsdCxyKT0+e3ZhciBuPXIoMTExKSxhPXIoMzUpLGk9cigxMyksbz1uKG4uYmluZCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGEoZSksdm9pZCAwPT09dD9lOmk/byhlLHQpOmZ1bmN0aW9uKCl7cmV0dXJuIGUuYXBwbHkodCxhcmd1bWVudHMpfX19LChlLHQscik9Pnt2YXIgbj1yKDE5KSxhPXIoMTgpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZigiRnVuY3Rpb24iPT09bihlKSlyZXR1cm4gYShlKX19LChlLHQscik9Pnt2YXIgbj1yKDM4KSxhPXIoOTEpLGk9bigiaXRlcmF0b3IiKSxvPUFycmF5LnByb3RvdHlwZTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMCE9PWUmJihhLkFycmF5PT09ZXx8b1tpXT09PWUpfX0sKGUsdCxyKT0+e3ZhciBuPXIoMTIpLGE9cigzNSksaT1yKDUxKSxvPXIoMzYpLHM9cigxMTQpLGM9VHlwZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciByPWFyZ3VtZW50cy5sZW5ndGg8Mj9zKGUpOnQ7aWYoYShyKSlyZXR1cm4gaShuKHIsZSkpO3Rocm93IGMobyhlKSsiIGlzIG5vdCBpdGVyYWJsZSIpfX0sKGUsdCxyKT0+e3ZhciBuPXIoODMpLGE9cigzNCksaT1yKDIxKSxvPXIoOTEpLHM9cigzOCkoIml0ZXJhdG9yIik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKCFpKGUpKXJldHVybiBhKGUscyl8fGEoZSwiQEBpdGVyYXRvciIpfHxvW24oZSldfX0sKGUsdCxyKT0+e3ZhciBuPXIoMTIpLGE9cig1MSksaT1yKDM0KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIpe3ZhciBvLHM7YShlKTt0cnl7aWYoIShvPWkoZSwicmV0dXJuIikpKXtpZigidGhyb3ciPT09dCl0aHJvdyByO3JldHVybiByfW89bihvLGUpfWNhdGNoKGUpe3M9ITAsbz1lfWlmKCJ0aHJvdyI9PT10KXRocm93IHI7aWYocyl0aHJvdyBvO3JldHVybiBhKG8pLHJ9fSwoZSx0LHIpPT57dmFyIG49cigyOSksYT1UeXBlRXJyb3I7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7aWYobih0LGUpKXJldHVybiBlO3Rocm93IGEoIkluY29ycmVjdCBpbnZvY2F0aW9uIil9fSwoZSx0LHIpPT57dmFyIG49cigzOCkoIml0ZXJhdG9yIiksYT0hMTt0cnl7dmFyIGk9MCxvPXtuZXh0OmZ1bmN0aW9uKCl7cmV0dXJue2RvbmU6ISFpKyt9fSxyZXR1cm46ZnVuY3Rpb24oKXthPSEwfX07b1tuXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxBcnJheS5mcm9tKG8sKGZ1bmN0aW9uKCl7dGhyb3cgMn0pKX1jYXRjaChlKXt9ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7aWYoIXQmJiFhKXJldHVybiExO3ZhciByPSExO3RyeXt2YXIgaT17fTtpW25dPWZ1bmN0aW9uKCl7cmV0dXJue25leHQ6ZnVuY3Rpb24oKXtyZXR1cm57ZG9uZTpyPSEwfX19fSxlKGkpfWNhdGNoKGUpe31yZXR1cm4gcn19LChlLHQscik9Pnt2YXIgbj1yKDI1KSxhPXIoMjQpLGk9cig4Nyk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXt2YXIgbyxzO3JldHVybiBpJiZuKG89dC5jb25zdHJ1Y3RvcikmJm8hPT1yJiZhKHM9by5wcm90b3R5cGUpJiZzIT09ci5wcm90b3R5cGUmJmkoZSxzKSxlfX0sKGUsdCxyKT0+e3ZhciBuPXIoNDkpLmYsYT1yKDc0KSxpPXIoMTIwKSxvPXIoMTEwKSxzPXIoMTE2KSxjPXIoMjEpLHU9cigxMDkpLGw9cig5MiksZj1yKDk2KSxoPXIoMTIxKSxkPXIoMTApLHA9cigxMDIpLmZhc3RLZXksZz1yKDU2KSx2PWcuc2V0LHk9Zy5nZXR0ZXJGb3I7ZS5leHBvcnRzPXtnZXRDb25zdHJ1Y3RvcjpmdW5jdGlvbihlLHQscixsKXt2YXIgZj1lKChmdW5jdGlvbihlLG4pe3MoZSxoKSx2KGUse3R5cGU6dCxpbmRleDphKG51bGwpLGZpcnN0OnZvaWQgMCxsYXN0OnZvaWQgMCxzaXplOjB9KSxkfHwoZS5zaXplPTApLGMobil8fHUobixlW2xdLHt0aGF0OmUsQVNfRU5UUklFUzpyfSl9KSksaD1mLnByb3RvdHlwZSxnPXkodCksbT1mdW5jdGlvbihlLHQscil7dmFyIG4sYSxpPWcoZSksbz1iKGUsdCk7cmV0dXJuIG8/by52YWx1ZT1yOihpLmxhc3Q9bz17aW5kZXg6YT1wKHQsITApLGtleTp0LHZhbHVlOnIscHJldmlvdXM6bj1pLmxhc3QsbmV4dDp2b2lkIDAscmVtb3ZlZDohMX0saS5maXJzdHx8KGkuZmlyc3Q9byksbiYmKG4ubmV4dD1vKSxkP2kuc2l6ZSsrOmUuc2l6ZSsrLCJGIiE9PWEmJihpLmluZGV4W2FdPW8pKSxlfSxiPWZ1bmN0aW9uKGUsdCl7dmFyIHIsbj1nKGUpLGE9cCh0KTtpZigiRiIhPT1hKXJldHVybiBuLmluZGV4W2FdO2ZvcihyPW4uZmlyc3Q7cjtyPXIubmV4dClpZihyLmtleT09dClyZXR1cm4gcn07cmV0dXJuIGkoaCx7Y2xlYXI6ZnVuY3Rpb24oKXtmb3IodmFyIGU9Zyh0aGlzKSx0PWUuaW5kZXgscj1lLmZpcnN0O3I7KXIucmVtb3ZlZD0hMCxyLnByZXZpb3VzJiYoci5wcmV2aW91cz1yLnByZXZpb3VzLm5leHQ9dm9pZCAwKSxkZWxldGUgdFtyLmluZGV4XSxyPXIubmV4dDtlLmZpcnN0PWUubGFzdD12b2lkIDAsZD9lLnNpemU9MDp0aGlzLnNpemU9MH0sZGVsZXRlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMscj1nKHQpLG49Yih0LGUpO2lmKG4pe3ZhciBhPW4ubmV4dCxpPW4ucHJldmlvdXM7ZGVsZXRlIHIuaW5kZXhbbi5pbmRleF0sbi5yZW1vdmVkPSEwLGkmJihpLm5leHQ9YSksYSYmKGEucHJldmlvdXM9aSksci5maXJzdD09biYmKHIuZmlyc3Q9YSksci5sYXN0PT1uJiYoci5sYXN0PWkpLGQ/ci5zaXplLS06dC5zaXplLS19cmV0dXJuISFufSxmb3JFYWNoOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxyPWcodGhpcyksbj1vKGUsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApO3Q9dD90Lm5leHQ6ci5maXJzdDspZm9yKG4odC52YWx1ZSx0LmtleSx0aGlzKTt0JiZ0LnJlbW92ZWQ7KXQ9dC5wcmV2aW91c30saGFzOmZ1bmN0aW9uKGUpe3JldHVybiEhYih0aGlzLGUpfX0pLGkoaCxyP3tnZXQ6ZnVuY3Rpb24oZSl7dmFyIHQ9Yih0aGlzLGUpO3JldHVybiB0JiZ0LnZhbHVlfSxzZXQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbSh0aGlzLDA9PT1lPzA6ZSx0KX19OnthZGQ6ZnVuY3Rpb24oZSl7cmV0dXJuIG0odGhpcyxlPTA9PT1lPzA6ZSxlKX19KSxkJiZuKGgsInNpemUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZyh0aGlzKS5zaXplfX0pLGZ9LHNldFN0cm9uZzpmdW5jdGlvbihlLHQscil7dmFyIG49dCsiIEl0ZXJhdG9yIixhPXkodCksaT15KG4pO2woZSx0LChmdW5jdGlvbihlLHQpe3YodGhpcyx7dHlwZTpuLHRhcmdldDplLHN0YXRlOmEoZSksa2luZDp0LGxhc3Q6dm9pZCAwfSl9KSwoZnVuY3Rpb24oKXtmb3IodmFyIGU9aSh0aGlzKSx0PWUua2luZCxyPWUubGFzdDtyJiZyLnJlbW92ZWQ7KXI9ci5wcmV2aW91cztyZXR1cm4gZS50YXJnZXQmJihlLmxhc3Q9cj1yP3IubmV4dDplLnN0YXRlLmZpcnN0KT9mKCJrZXlzIj09dD9yLmtleToidmFsdWVzIj09dD9yLnZhbHVlOltyLmtleSxyLnZhbHVlXSwhMSk6KGUudGFyZ2V0PXZvaWQgMCxmKHZvaWQgMCwhMCkpfSkscj8iZW50cmllcyI6InZhbHVlcyIsIXIsITApLGgodCl9fX0sKGUsdCxyKT0+e3ZhciBuPXIoNTIpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQscil7Zm9yKHZhciBhIGluIHQpbihlLGEsdFthXSxyKTtyZXR1cm4gZX19LChlLHQscik9Pnt2YXIgbj1yKDI4KSxhPXIoNDkpLGk9cigzOCksbz1yKDEwKSxzPWkoInNwZWNpZXMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9bihlKSxyPWEuZjtvJiZ0JiYhdFtzXSYmcih0LHMse2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc319KX19LChlLHQscik9PntyKDEyMyl9LChlLHQscik9PntyKDEwMSkoIlNldCIsKGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBlKHRoaXMsYXJndW1lbnRzLmxlbmd0aD9hcmd1bWVudHNbMF06dm9pZCAwKX19KSxyKDExOSkpfSwoZSx0LHIpPT57dmFyIG4sYT1yKDQwKSxpPXIoNyksbz1yKDgpLHM9cigyOCksYz1yKDE4KSx1PXIoMTEpLGw9cig0NSksZj1yKDI1KSxoPXIoMTI1KSxkPXIoMjEpLHA9cigyNCksZz1yKDI3KSx2PXIoMTA5KSx5PXIoNTEpLG09cig4MyksYj1yKDQzKSx3PXIoMTA1KSxrPXIoNDgpLFM9cig2OCkseD1yKDEyNiksTz1yKDEyNyksQT1yKDEyOSksQz1yKDMyKSxGPXIoMTMwKSxQPXIoMTMxKSxUPXIoMTMyKSxJPW8uT2JqZWN0LEU9by5EYXRlLGo9by5FcnJvcixNPW8uRXZhbEVycm9yLF89by5SYW5nZUVycm9yLEw9by5SZWZlcmVuY2VFcnJvcixSPW8uU3ludGF4RXJyb3IsTj1vLlR5cGVFcnJvcixEPW8uVVJJRXJyb3IsQj1vLlBlcmZvcm1hbmNlTWFyayxVPW8uV2ViQXNzZW1ibHksJD1VJiZVLkNvbXBpbGVFcnJvcnx8aixYPVUmJlUuTGlua0Vycm9yfHxqLEg9VSYmVS5SdW50aW1lRXJyb3J8fGoscT1zKCJET01FeGNlcHRpb24iKSxHPXMoIlNldCIpLHo9cygiTWFwIiksVz16LnByb3RvdHlwZSxWPWMoVy5oYXMpLFk9YyhXLmdldCksSz1jKFcuc2V0KSxKPWMoRy5wcm90b3R5cGUuYWRkKSxaPXMoIk9iamVjdCIsImtleXMiKSxRPWMoW10ucHVzaCksZWU9YygoITApLnZhbHVlT2YpLHRlPWMoMS4udmFsdWVPZikscmU9YygiIi52YWx1ZU9mKSxuZT1jKEUucHJvdG90eXBlLmdldFRpbWUpLGFlPWwoInN0cnVjdHVyZWRDbG9uZSIpLGllPSJEYXRhQ2xvbmVFcnJvciIsb2U9IlRyYW5zZmVycmluZyIsc2U9ZnVuY3Rpb24oZSl7cmV0dXJuIXUoKGZ1bmN0aW9uKCl7dmFyIHQ9bmV3IG8uU2V0KFs3XSkscj1lKHQpLG49ZShJKDcpKTtyZXR1cm4gcj09dHx8IXIuaGFzKDcpfHwib2JqZWN0IiE9dHlwZW9mIG58fDchPW59KSkmJmV9LGNlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIXUoKGZ1bmN0aW9uKCl7dmFyIHI9bmV3IHQsbj1lKHthOnIsYjpyfSk7cmV0dXJuIShuJiZuLmE9PT1uLmImJm4uYSBpbnN0YW5jZW9mIHQmJm4uYS5zdGFjaz09PXIuc3RhY2spfSkpfSx1ZT1vLnN0cnVjdHVyZWRDbG9uZSxsZT1hfHwhY2UodWUsail8fCFjZSh1ZSxxKXx8KG49dWUsISF1KChmdW5jdGlvbigpe3ZhciBlPW4obmV3IG8uQWdncmVnYXRlRXJyb3IoWzFdLGFlLHtjYXVzZTozfSkpO3JldHVybiJBZ2dyZWdhdGVFcnJvciIhPWUubmFtZXx8MSE9ZS5lcnJvcnNbMF18fGUubWVzc2FnZSE9YWV8fDMhPWUuY2F1c2V9KSkpLGZlPSF1ZSYmc2UoKGZ1bmN0aW9uKGUpe3JldHVybiBuZXcgQihhZSx7ZGV0YWlsOmV9KS5kZXRhaWx9KSksaGU9c2UodWUpfHxmZSxkZT1mdW5jdGlvbihlKXt0aHJvdyBuZXcgcSgiVW5jbG9uZWFibGUgdHlwZTogIitlLGllKX0scGU9ZnVuY3Rpb24oZSx0KXt0aHJvdyBuZXcgcSgodHx8IkNsb25pbmciKSsiIG9mICIrZSsiIGNhbm5vdCBiZSBwcm9wZXJseSBwb2x5ZmlsbGVkIGluIHRoaXMgZW5naW5lIixpZSl9LGdlPWZ1bmN0aW9uKGUsdCl7aWYoZyhlKSYmZGUoIlN5bWJvbCIpLCFwKGUpKXJldHVybiBlO2lmKHQpe2lmKFYodCxlKSlyZXR1cm4gWSh0LGUpfWVsc2UgdD1uZXcgejt2YXIgcixuLGEsaSxjLHUsbCxoLGQsdix5PW0oZSkseD0hMTtzd2l0Y2goeSl7Y2FzZSJBcnJheSI6YT1bXSx4PSEwO2JyZWFrO2Nhc2UiT2JqZWN0IjphPXt9LHg9ITA7YnJlYWs7Y2FzZSJNYXAiOmE9bmV3IHoseD0hMDticmVhaztjYXNlIlNldCI6YT1uZXcgRyx4PSEwO2JyZWFrO2Nhc2UiUmVnRXhwIjphPW5ldyBSZWdFeHAoZS5zb3VyY2UsTyhlKSk7YnJlYWs7Y2FzZSJFcnJvciI6c3dpdGNoKG49ZS5uYW1lKXtjYXNlIkFnZ3JlZ2F0ZUVycm9yIjphPXMoIkFnZ3JlZ2F0ZUVycm9yIikoW10pO2JyZWFrO2Nhc2UiRXZhbEVycm9yIjphPU0oKTticmVhaztjYXNlIlJhbmdlRXJyb3IiOmE9XygpO2JyZWFrO2Nhc2UiUmVmZXJlbmNlRXJyb3IiOmE9TCgpO2JyZWFrO2Nhc2UiU3ludGF4RXJyb3IiOmE9UigpO2JyZWFrO2Nhc2UiVHlwZUVycm9yIjphPU4oKTticmVhaztjYXNlIlVSSUVycm9yIjphPUQoKTticmVhaztjYXNlIkNvbXBpbGVFcnJvciI6YT0kKCk7YnJlYWs7Y2FzZSJMaW5rRXJyb3IiOmE9WCgpO2JyZWFrO2Nhc2UiUnVudGltZUVycm9yIjphPUgoKTticmVhaztkZWZhdWx0OmE9aigpfXg9ITA7YnJlYWs7Y2FzZSJET01FeGNlcHRpb24iOmE9bmV3IHEoZS5tZXNzYWdlLGUubmFtZSkseD0hMDticmVhaztjYXNlIkRhdGFWaWV3IjpjYXNlIkludDhBcnJheSI6Y2FzZSJVaW50OEFycmF5IjpjYXNlIlVpbnQ4Q2xhbXBlZEFycmF5IjpjYXNlIkludDE2QXJyYXkiOmNhc2UiVWludDE2QXJyYXkiOmNhc2UiSW50MzJBcnJheSI6Y2FzZSJVaW50MzJBcnJheSI6Y2FzZSJGbG9hdDMyQXJyYXkiOmNhc2UiRmxvYXQ2NEFycmF5IjpjYXNlIkJpZ0ludDY0QXJyYXkiOmNhc2UiQmlnVWludDY0QXJyYXkiOnI9b1t5XSxwKHIpfHxwZSh5KSxhPW5ldyByKGdlKGUuYnVmZmVyLHQpLGUuYnl0ZU9mZnNldCwiRGF0YVZpZXciPT09eT9lLmJ5dGVMZW5ndGg6ZS5sZW5ndGgpO2JyZWFrO2Nhc2UiRE9NUXVhZCI6dHJ5e2E9bmV3IERPTVF1YWQoZ2UoZS5wMSx0KSxnZShlLnAyLHQpLGdlKGUucDMsdCksZ2UoZS5wNCx0KSl9Y2F0Y2godCl7aGU/YT1oZShlKTpwZSh5KX1icmVhaztjYXNlIkZpbGVMaXN0IjppZihpPWZ1bmN0aW9uKCl7dmFyIGU7dHJ5e2U9bmV3IG8uRGF0YVRyYW5zZmVyfWNhdGNoKHQpe3RyeXtlPW5ldyBvLkNsaXBib2FyZEV2ZW50KCIiKS5jbGlwYm9hcmREYXRhfWNhdGNoKGUpe319cmV0dXJuIGUmJmUuaXRlbXMmJmUuZmlsZXM/ZTpudWxsfSgpKXtmb3IoYz0wLHU9UyhlKTtjPHU7YysrKWkuaXRlbXMuYWRkKGdlKGVbY10sdCkpO2E9aS5maWxlc31lbHNlIGhlP2E9aGUoZSk6cGUoeSk7YnJlYWs7Y2FzZSJJbWFnZURhdGEiOnRyeXthPW5ldyBJbWFnZURhdGEoZ2UoZS5kYXRhLHQpLGUud2lkdGgsZS5oZWlnaHQse2NvbG9yU3BhY2U6ZS5jb2xvclNwYWNlfSl9Y2F0Y2godCl7aGU/YT1oZShlKTpwZSh5KX1icmVhaztkZWZhdWx0OmlmKGhlKWE9aGUoZSk7ZWxzZSBzd2l0Y2goeSl7Y2FzZSJCaWdJbnQiOmE9SShlLnZhbHVlT2YoKSk7YnJlYWs7Y2FzZSJCb29sZWFuIjphPUkoZWUoZSkpO2JyZWFrO2Nhc2UiTnVtYmVyIjphPUkodGUoZSkpO2JyZWFrO2Nhc2UiU3RyaW5nIjphPUkocmUoZSkpO2JyZWFrO2Nhc2UiRGF0ZSI6YT1uZXcgRShuZShlKSk7YnJlYWs7Y2FzZSJBcnJheUJ1ZmZlciI6KHI9by5EYXRhVmlldyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBlLnNsaWNlfHxwZSh5KTt0cnl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGUuc2xpY2UpYT1lLnNsaWNlKDApO2Vsc2UgZm9yKHU9ZS5ieXRlTGVuZ3RoLGE9bmV3IEFycmF5QnVmZmVyKHUpLGQ9bmV3IHIoZSksdj1uZXcgcihhKSxjPTA7Yzx1O2MrKyl2LnNldFVpbnQ4KGMsZC5nZXRVaW50OChjKSl9Y2F0Y2goZSl7dGhyb3cgbmV3IHEoIkFycmF5QnVmZmVyIGlzIGRldGFjaGVkIixpZSl9YnJlYWs7Y2FzZSJTaGFyZWRBcnJheUJ1ZmZlciI6YT1lO2JyZWFrO2Nhc2UiQmxvYiI6dHJ5e2E9ZS5zbGljZSgwLGUuc2l6ZSxlLnR5cGUpfWNhdGNoKGUpe3BlKHkpfWJyZWFrO2Nhc2UiRE9NUG9pbnQiOmNhc2UiRE9NUG9pbnRSZWFkT25seSI6cj1vW3ldO3RyeXthPXIuZnJvbVBvaW50P3IuZnJvbVBvaW50KGUpOm5ldyByKGUueCxlLnksZS56LGUudyl9Y2F0Y2goZSl7cGUoeSl9YnJlYWs7Y2FzZSJET01SZWN0IjpjYXNlIkRPTVJlY3RSZWFkT25seSI6cj1vW3ldO3RyeXthPXIuZnJvbVJlY3Q/ci5mcm9tUmVjdChlKTpuZXcgcihlLngsZS55LGUud2lkdGgsZS5oZWlnaHQpfWNhdGNoKGUpe3BlKHkpfWJyZWFrO2Nhc2UiRE9NTWF0cml4IjpjYXNlIkRPTU1hdHJpeFJlYWRPbmx5IjpyPW9beV07dHJ5e2E9ci5mcm9tTWF0cml4P3IuZnJvbU1hdHJpeChlKTpuZXcgcihlKX1jYXRjaChlKXtwZSh5KX1icmVhaztjYXNlIkF1ZGlvRGF0YSI6Y2FzZSJWaWRlb0ZyYW1lIjpmKGUuY2xvbmUpfHxwZSh5KTt0cnl7YT1lLmNsb25lKCl9Y2F0Y2goZSl7ZGUoeSl9YnJlYWs7Y2FzZSJGaWxlIjp0cnl7YT1uZXcgRmlsZShbZV0sZS5uYW1lLGUpfWNhdGNoKGUpe3BlKHkpfWJyZWFrO2Nhc2UiQ3JvcFRhcmdldCI6Y2FzZSJDcnlwdG9LZXkiOmNhc2UiRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZSI6Y2FzZSJGaWxlU3lzdGVtRmlsZUhhbmRsZSI6Y2FzZSJGaWxlU3lzdGVtSGFuZGxlIjpjYXNlIkdQVUNvbXBpbGF0aW9uSW5mbyI6Y2FzZSJHUFVDb21waWxhdGlvbk1lc3NhZ2UiOmNhc2UiSW1hZ2VCaXRtYXAiOmNhc2UiUlRDQ2VydGlmaWNhdGUiOmNhc2UiV2ViQXNzZW1ibHkuTW9kdWxlIjpwZSh5KTtkZWZhdWx0OmRlKHkpfX1pZihLKHQsZSxhKSx4KXN3aXRjaCh5KXtjYXNlIkFycmF5IjpjYXNlIk9iamVjdCI6Zm9yKGw9WihlKSxjPTAsdT1TKGwpO2M8dTtjKyspaD1sW2NdLHcoYSxoLGdlKGVbaF0sdCkpO2JyZWFrO2Nhc2UiTWFwIjplLmZvckVhY2goKGZ1bmN0aW9uKGUscil7SyhhLGdlKHIsdCksZ2UoZSx0KSl9KSk7YnJlYWs7Y2FzZSJTZXQiOmUuZm9yRWFjaCgoZnVuY3Rpb24oZSl7SihhLGdlKGUsdCkpfSkpO2JyZWFrO2Nhc2UiRXJyb3IiOmsoYSwibWVzc2FnZSIsZ2UoZS5tZXNzYWdlLHQpKSxiKGUsImNhdXNlIikmJmsoYSwiY2F1c2UiLGdlKGUuY2F1c2UsdCkpLCJBZ2dyZWdhdGVFcnJvciI9PW4mJihhLmVycm9ycz1nZShlLmVycm9ycyx0KSk7Y2FzZSJET01FeGNlcHRpb24iOkEmJmsoYSwic3RhY2siLGdlKGUuc3RhY2ssdCkpfXJldHVybiBhfSx2ZT11ZSYmIXUoKGZ1bmN0aW9uKCl7aWYoUCYmQz45Mnx8VCYmQz45NHx8RiYmQz45NylyZXR1cm4hMTt2YXIgZT1uZXcgQXJyYXlCdWZmZXIoOCksdD11ZShlLHt0cmFuc2ZlcjpbZV19KTtyZXR1cm4gMCE9ZS5ieXRlTGVuZ3RofHw4IT10LmJ5dGVMZW5ndGh9KSk7aSh7Z2xvYmFsOiEwLGVudW1lcmFibGU6ITAsc2hhbTohdmUsZm9yY2VkOmxlfSx7c3RydWN0dXJlZENsb25lOmZ1bmN0aW9uKGUpe3ZhciB0LHI9eChhcmd1bWVudHMubGVuZ3RoLDEpPjEmJiFkKGFyZ3VtZW50c1sxXSk/eShhcmd1bWVudHNbMV0pOnZvaWQgMCxuPXI/ci50cmFuc2Zlcjp2b2lkIDA7cmV0dXJuIHZvaWQgMCE9PW4mJmZ1bmN0aW9uKGUsdCl7aWYoIXAoZSkpdGhyb3cgTigiVHJhbnNmZXIgb3B0aW9uIGNhbm5vdCBiZSBjb252ZXJ0ZWQgdG8gYSBzZXF1ZW5jZSIpO3ZhciByPVtdO3YoZSwoZnVuY3Rpb24oZSl7UShyLHkoZSkpfSkpO3ZhciBuLGEsaSxzLGMsdSxsPTAsZD1TKHIpO2lmKHZlKWZvcihzPXVlKHIse3RyYW5zZmVyOnJ9KTtsPGQ7KUsodCxyW2xdLHNbbCsrXSk7ZWxzZSBmb3IoO2w8ZDspe2lmKG49cltsKytdLFYodCxuKSl0aHJvdyBuZXcgcSgiRHVwbGljYXRlIHRyYW5zZmVyYWJsZSIsaWUpO3N3aXRjaChhPW0obikpe2Nhc2UiSW1hZ2VCaXRtYXAiOmk9by5PZmZzY3JlZW5DYW52YXMsaChpKXx8cGUoYSxvZSk7dHJ5eyh1PW5ldyBpKG4ud2lkdGgsbi5oZWlnaHQpKS5nZXRDb250ZXh0KCJiaXRtYXByZW5kZXJlciIpLnRyYW5zZmVyRnJvbUltYWdlQml0bWFwKG4pLGM9dS50cmFuc2ZlclRvSW1hZ2VCaXRtYXAoKX1jYXRjaChlKXt9YnJlYWs7Y2FzZSJBdWRpb0RhdGEiOmNhc2UiVmlkZW9GcmFtZSI6ZihuLmNsb25lKSYmZihuLmNsb3NlKXx8cGUoYSxvZSk7dHJ5e2M9bi5jbG9uZSgpLG4uY2xvc2UoKX1jYXRjaChlKXt9YnJlYWs7Y2FzZSJBcnJheUJ1ZmZlciI6Y2FzZSJNZWRpYVNvdXJjZUhhbmRsZSI6Y2FzZSJNZXNzYWdlUG9ydCI6Y2FzZSJPZmZzY3JlZW5DYW52YXMiOmNhc2UiUmVhZGFibGVTdHJlYW0iOmNhc2UiVHJhbnNmb3JtU3RyZWFtIjpjYXNlIldyaXRhYmxlU3RyZWFtIjpwZShhLG9lKX1pZih2b2lkIDA9PT1jKXRocm93IG5ldyBxKCJUaGlzIG9iamVjdCBjYW5ub3QgYmUgdHJhbnNmZXJyZWQ6ICIrYSxpZSk7Syh0LG4sYyl9fShuLHQ9bmV3IHopLGdlKGUsdCl9fSl9LChlLHQscik9Pnt2YXIgbj1yKDE4KSxhPXIoMTEpLGk9cigyNSksbz1yKDgzKSxzPXIoMjgpLGM9cig1NSksdT1mdW5jdGlvbigpe30sbD1bXSxmPXMoIlJlZmxlY3QiLCJjb25zdHJ1Y3QiKSxoPS9eXHMqKD86Y2xhc3N8ZnVuY3Rpb24pXGIvLGQ9bihoLmV4ZWMpLHA9IWguZXhlYyh1KSxnPWZ1bmN0aW9uKGUpe2lmKCFpKGUpKXJldHVybiExO3RyeXtyZXR1cm4gZih1LGwsZSksITB9Y2F0Y2goZSl7cmV0dXJuITF9fSx2PWZ1bmN0aW9uKGUpe2lmKCFpKGUpKXJldHVybiExO3N3aXRjaChvKGUpKXtjYXNlIkFzeW5jRnVuY3Rpb24iOmNhc2UiR2VuZXJhdG9yRnVuY3Rpb24iOmNhc2UiQXN5bmNHZW5lcmF0b3JGdW5jdGlvbiI6cmV0dXJuITF9dHJ5e3JldHVybiBwfHwhIWQoaCxjKGUpKX1jYXRjaChlKXtyZXR1cm4hMH19O3Yuc2hhbT0hMCxlLmV4cG9ydHM9IWZ8fGEoKGZ1bmN0aW9uKCl7dmFyIGU7cmV0dXJuIGcoZy5jYWxsKXx8IWcoT2JqZWN0KXx8IWcoKGZ1bmN0aW9uKCl7ZT0hMH0pKXx8ZX0pKT92Omd9LGU9Pnt2YXIgdD1UeXBlRXJyb3I7ZS5leHBvcnRzPWZ1bmN0aW9uKGUscil7aWYoZTxyKXRocm93IHQoIk5vdCBlbm91Z2ggYXJndW1lbnRzIik7cmV0dXJuIGV9fSwoZSx0LHIpPT57dmFyIG49cigxMiksYT1yKDQzKSxpPXIoMjkpLG89cigxMjgpLHM9UmVnRXhwLnByb3RvdHlwZTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5mbGFncztyZXR1cm4gdm9pZCAwIT09dHx8ImZsYWdzImluIHN8fGEoZSwiZmxhZ3MiKXx8IWkocyxlKT90Om4obyxlKX19LChlLHQscik9Pnt2YXIgbj1yKDUxKTtlLmV4cG9ydHM9ZnVuY3Rpb24oKXt2YXIgZT1uKHRoaXMpLHQ9IiI7cmV0dXJuIGUuaGFzSW5kaWNlcyYmKHQrPSJkIiksZS5nbG9iYWwmJih0Kz0iZyIpLGUuaWdub3JlQ2FzZSYmKHQrPSJpIiksZS5tdWx0aWxpbmUmJih0Kz0ibSIpLGUuZG90QWxsJiYodCs9InMiKSxlLnVuaWNvZGUmJih0Kz0idSIpLGUudW5pY29kZVNldHMmJih0Kz0idiIpLGUuc3RpY2t5JiYodCs9InkiKSx0fX0sKGUsdCxyKT0+e3ZhciBuPXIoMTEpLGE9cigxNSk7ZS5leHBvcnRzPSFuKChmdW5jdGlvbigpe3ZhciBlPUVycm9yKCJhIik7cmV0dXJuISgic3RhY2siaW4gZSl8fChPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwic3RhY2siLGEoMSw3KSksNyE9PWUuc3RhY2spfSkpfSwoZSx0LHIpPT57dmFyIG49cigxMzEpLGE9cigxMzIpO2UuZXhwb3J0cz0hbiYmIWEmJiJvYmplY3QiPT10eXBlb2Ygd2luZG93JiYib2JqZWN0Ij09dHlwZW9mIGRvY3VtZW50fSxlPT57ZS5leHBvcnRzPSJvYmplY3QiPT10eXBlb2YgRGVubyYmRGVubyYmIm9iamVjdCI9PXR5cGVvZiBEZW5vLnZlcnNpb259LChlLHQscik9Pnt2YXIgbj1yKDE5KSxhPXIoOCk7ZS5leHBvcnRzPSJwcm9jZXNzIj09bihhLnByb2Nlc3MpfSwoZSx0LHIpPT57dmFyIG49cig4KTtlLmV4cG9ydHM9bn0sKGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LlJlZlNldENhY2hlPXQuUmVmU2V0PXQuUmVmPXQuTmFtZT10LkVPRj10LkRpY3Q9dC5DbWQ9dC5DSVJDVUxBUl9SRUY9dm9pZCAwLHQuY2xlYXJQcmltaXRpdmVDYWNoZXM9ZnVuY3Rpb24oKXtiLl9jbGVhckNhY2hlKCkseS5fY2xlYXJDYWNoZSgpLHguX2NsZWFyQ2FjaGUoKX0sdC5pc0NtZD1mdW5jdGlvbihlLHQpe3JldHVybiBlIGluc3RhbmNlb2YgYiYmKHZvaWQgMD09PXR8fGUuY21kPT09dCl9LHQuaXNEaWN0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUgaW5zdGFuY2VvZiBrJiYodm9pZCAwPT09dHx8QyhlLmdldCgiVHlwZSIpLHQpKX0sdC5pc05hbWU9Qyx0LmlzUmVmc0VxdWFsPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUubnVtPT09dC5udW0mJmUuZ2VuPT09dC5nZW59O3ZhciBuPXIoMik7ZnVuY3Rpb24gYShlKXtyZXR1cm4gYT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZX0sYShlKX1mdW5jdGlvbiBpKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciByPW51bGw9PWU/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9cil7dmFyIG4sYSxpLG8scz1bXSxjPSEwLHU9ITE7dHJ5e2lmKGk9KHI9ci5jYWxsKGUpKS5uZXh0LDA9PT10KXtpZihPYmplY3QocikhPT1yKXJldHVybjtjPSExfWVsc2UgZm9yKDshKGM9KG49aS5jYWxsKHIpKS5kb25lKSYmKHMucHVzaChuLnZhbHVlKSxzLmxlbmd0aCE9PXQpO2M9ITApO31jYXRjaChlKXt1PSEwLGE9ZX1maW5hbGx5e3RyeXtpZighYyYmbnVsbCE9ci5yZXR1cm4mJihvPXIucmV0dXJuKCksT2JqZWN0KG8pIT09bykpcmV0dXJufWZpbmFsbHl7aWYodSl0aHJvdyBhfX1yZXR1cm4gc319KGUsdCl8fHMoZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIG8oZSx0KXt2YXIgcj0idW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlWyJAQGl0ZXJhdG9yIl07aWYoIXIpe2lmKEFycmF5LmlzQXJyYXkoZSl8fChyPXMoZSkpfHx0JiZlJiYibnVtYmVyIj09dHlwZW9mIGUubGVuZ3RoKXtyJiYoZT1yKTt2YXIgbj0wLGE9ZnVuY3Rpb24oKXt9O3JldHVybntzOmEsbjpmdW5jdGlvbigpe3JldHVybiBuPj1lLmxlbmd0aD97ZG9uZTohMH06e2RvbmU6ITEsdmFsdWU6ZVtuKytdfX0sZTpmdW5jdGlvbihlKXt0aHJvdyBlfSxmOmF9fXRocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBpdGVyYXRlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX12YXIgaSxvPSEwLGM9ITE7cmV0dXJue3M6ZnVuY3Rpb24oKXtyPXIuY2FsbChlKX0sbjpmdW5jdGlvbigpe3ZhciBlPXIubmV4dCgpO3JldHVybiBvPWUuZG9uZSxlfSxlOmZ1bmN0aW9uKGUpe2M9ITAsaT1lfSxmOmZ1bmN0aW9uKCl7dHJ5e298fG51bGw9PXIucmV0dXJufHxyLnJldHVybigpfWZpbmFsbHl7aWYoYyl0aHJvdyBpfX19fWZ1bmN0aW9uIHMoZSx0KXtpZihlKXtpZigic3RyaW5nIj09dHlwZW9mIGUpcmV0dXJuIGMoZSx0KTt2YXIgcj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7cmV0dXJuIk9iamVjdCI9PT1yJiZlLmNvbnN0cnVjdG9yJiYocj1lLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09cnx8IlNldCI9PT1yP0FycmF5LmZyb20oZSk6IkFyZ3VtZW50cyI9PT1yfHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChyKT9jKGUsdCk6dm9pZCAwfX1mdW5jdGlvbiBjKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciByPTAsbj1uZXcgQXJyYXkodCk7cjx0O3IrKyluW3JdPWVbcl07cmV0dXJuIG59ZnVuY3Rpb24gdSgpe3U9ZnVuY3Rpb24oKXtyZXR1cm4gZX07dmFyIGU9e30sdD1PYmplY3QucHJvdG90eXBlLHI9dC5oYXNPd25Qcm9wZXJ0eSxuPU9iamVjdC5kZWZpbmVQcm9wZXJ0eXx8ZnVuY3Rpb24oZSx0LHIpe2VbdF09ci52YWx1ZX0saT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sP1N5bWJvbDp7fSxvPWkuaXRlcmF0b3J8fCJAQGl0ZXJhdG9yIixzPWkuYXN5bmNJdGVyYXRvcnx8IkBAYXN5bmNJdGVyYXRvciIsYz1pLnRvU3RyaW5nVGFnfHwiQEB0b1N0cmluZ1RhZyI7ZnVuY3Rpb24gbChlLHQscil7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOnIsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KSxlW3RdfXRyeXtsKHt9LCIiKX1jYXRjaChlKXtsPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZVt0XT1yfX1mdW5jdGlvbiBmKGUsdCxyLGEpe3ZhciBpPXQmJnQucHJvdG90eXBlIGluc3RhbmNlb2YgcD90OnAsbz1PYmplY3QuY3JlYXRlKGkucHJvdG90eXBlKSxzPW5ldyBGKGF8fFtdKTtyZXR1cm4gbihvLCJfaW52b2tlIix7dmFsdWU6eChlLHIscyl9KSxvfWZ1bmN0aW9uIGgoZSx0LHIpe3RyeXtyZXR1cm57dHlwZToibm9ybWFsIixhcmc6ZS5jYWxsKHQscil9fWNhdGNoKGUpe3JldHVybnt0eXBlOiJ0aHJvdyIsYXJnOmV9fX1lLndyYXA9Zjt2YXIgZD17fTtmdW5jdGlvbiBwKCl7fWZ1bmN0aW9uIGcoKXt9ZnVuY3Rpb24gdigpe312YXIgeT17fTtsKHksbywoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKTt2YXIgbT1PYmplY3QuZ2V0UHJvdG90eXBlT2YsYj1tJiZtKG0oUChbXSkpKTtiJiZiIT09dCYmci5jYWxsKGIsbykmJih5PWIpO3ZhciB3PXYucHJvdG90eXBlPXAucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoeSk7ZnVuY3Rpb24gayhlKXtbIm5leHQiLCJ0aHJvdyIsInJldHVybiJdLmZvckVhY2goKGZ1bmN0aW9uKHQpe2woZSx0LChmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5faW52b2tlKHQsZSl9KSl9KSl9ZnVuY3Rpb24gUyhlLHQpe2Z1bmN0aW9uIGkobixvLHMsYyl7dmFyIHU9aChlW25dLGUsbyk7aWYoInRocm93IiE9PXUudHlwZSl7dmFyIGw9dS5hcmcsZj1sLnZhbHVlO3JldHVybiBmJiYib2JqZWN0Ij09YShmKSYmci5jYWxsKGYsIl9fYXdhaXQiKT90LnJlc29sdmUoZi5fX2F3YWl0KS50aGVuKChmdW5jdGlvbihlKXtpKCJuZXh0IixlLHMsYyl9KSwoZnVuY3Rpb24oZSl7aSgidGhyb3ciLGUscyxjKX0pKTp0LnJlc29sdmUoZikudGhlbigoZnVuY3Rpb24oZSl7bC52YWx1ZT1lLHMobCl9KSwoZnVuY3Rpb24oZSl7cmV0dXJuIGkoInRocm93IixlLHMsYyl9KSl9Yyh1LmFyZyl9dmFyIG87bih0aGlzLCJfaW52b2tlIix7dmFsdWU6ZnVuY3Rpb24oZSxyKXtmdW5jdGlvbiBuKCl7cmV0dXJuIG5ldyB0KChmdW5jdGlvbih0LG4pe2koZSxyLHQsbil9KSl9cmV0dXJuIG89bz9vLnRoZW4obixuKTpuKCl9fSl9ZnVuY3Rpb24geChlLHQscil7dmFyIG49InN1c3BlbmRlZFN0YXJ0IjtyZXR1cm4gZnVuY3Rpb24oYSxpKXtpZigiZXhlY3V0aW5nIj09PW4pdGhyb3cgbmV3IEVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nIik7aWYoImNvbXBsZXRlZCI9PT1uKXtpZigidGhyb3ciPT09YSl0aHJvdyBpO3JldHVybnt2YWx1ZTp2b2lkIDAsZG9uZTohMH19Zm9yKHIubWV0aG9kPWEsci5hcmc9aTs7KXt2YXIgbz1yLmRlbGVnYXRlO2lmKG8pe3ZhciBzPU8obyxyKTtpZihzKXtpZihzPT09ZCljb250aW51ZTtyZXR1cm4gc319aWYoIm5leHQiPT09ci5tZXRob2Qpci5zZW50PXIuX3NlbnQ9ci5hcmc7ZWxzZSBpZigidGhyb3ciPT09ci5tZXRob2Qpe2lmKCJzdXNwZW5kZWRTdGFydCI9PT1uKXRocm93IG49ImNvbXBsZXRlZCIsci5hcmc7ci5kaXNwYXRjaEV4Y2VwdGlvbihyLmFyZyl9ZWxzZSJyZXR1cm4iPT09ci5tZXRob2QmJnIuYWJydXB0KCJyZXR1cm4iLHIuYXJnKTtuPSJleGVjdXRpbmciO3ZhciBjPWgoZSx0LHIpO2lmKCJub3JtYWwiPT09Yy50eXBlKXtpZihuPXIuZG9uZT8iY29tcGxldGVkIjoic3VzcGVuZGVkWWllbGQiLGMuYXJnPT09ZCljb250aW51ZTtyZXR1cm57dmFsdWU6Yy5hcmcsZG9uZTpyLmRvbmV9fSJ0aHJvdyI9PT1jLnR5cGUmJihuPSJjb21wbGV0ZWQiLHIubWV0aG9kPSJ0aHJvdyIsci5hcmc9Yy5hcmcpfX19ZnVuY3Rpb24gTyhlLHQpe3ZhciByPXQubWV0aG9kLG49ZS5pdGVyYXRvcltyXTtpZih2b2lkIDA9PT1uKXJldHVybiB0LmRlbGVnYXRlPW51bGwsInRocm93Ij09PXImJmUuaXRlcmF0b3IucmV0dXJuJiYodC5tZXRob2Q9InJldHVybiIsdC5hcmc9dm9pZCAwLE8oZSx0KSwidGhyb3ciPT09dC5tZXRob2QpfHwicmV0dXJuIiE9PXImJih0Lm1ldGhvZD0idGhyb3ciLHQuYXJnPW5ldyBUeXBlRXJyb3IoIlRoZSBpdGVyYXRvciBkb2VzIG5vdCBwcm92aWRlIGEgJyIrcisiJyBtZXRob2QiKSksZDt2YXIgYT1oKG4sZS5pdGVyYXRvcix0LmFyZyk7aWYoInRocm93Ij09PWEudHlwZSlyZXR1cm4gdC5tZXRob2Q9InRocm93Iix0LmFyZz1hLmFyZyx0LmRlbGVnYXRlPW51bGwsZDt2YXIgaT1hLmFyZztyZXR1cm4gaT9pLmRvbmU/KHRbZS5yZXN1bHROYW1lXT1pLnZhbHVlLHQubmV4dD1lLm5leHRMb2MsInJldHVybiIhPT10Lm1ldGhvZCYmKHQubWV0aG9kPSJuZXh0Iix0LmFyZz12b2lkIDApLHQuZGVsZWdhdGU9bnVsbCxkKTppOih0Lm1ldGhvZD0idGhyb3ciLHQuYXJnPW5ldyBUeXBlRXJyb3IoIml0ZXJhdG9yIHJlc3VsdCBpcyBub3QgYW4gb2JqZWN0IiksdC5kZWxlZ2F0ZT1udWxsLGQpfWZ1bmN0aW9uIEEoZSl7dmFyIHQ9e3RyeUxvYzplWzBdfTsxIGluIGUmJih0LmNhdGNoTG9jPWVbMV0pLDIgaW4gZSYmKHQuZmluYWxseUxvYz1lWzJdLHQuYWZ0ZXJMb2M9ZVszXSksdGhpcy50cnlFbnRyaWVzLnB1c2godCl9ZnVuY3Rpb24gQyhlKXt2YXIgdD1lLmNvbXBsZXRpb258fHt9O3QudHlwZT0ibm9ybWFsIixkZWxldGUgdC5hcmcsZS5jb21wbGV0aW9uPXR9ZnVuY3Rpb24gRihlKXt0aGlzLnRyeUVudHJpZXM9W3t0cnlMb2M6InJvb3QifV0sZS5mb3JFYWNoKEEsdGhpcyksdGhpcy5yZXNldCghMCl9ZnVuY3Rpb24gUChlKXtpZihlKXt2YXIgdD1lW29dO2lmKHQpcmV0dXJuIHQuY2FsbChlKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgZS5uZXh0KXJldHVybiBlO2lmKCFpc05hTihlLmxlbmd0aCkpe3ZhciBuPS0xLGE9ZnVuY3Rpb24gdCgpe2Zvcig7KytuPGUubGVuZ3RoOylpZihyLmNhbGwoZSxuKSlyZXR1cm4gdC52YWx1ZT1lW25dLHQuZG9uZT0hMSx0O3JldHVybiB0LnZhbHVlPXZvaWQgMCx0LmRvbmU9ITAsdH07cmV0dXJuIGEubmV4dD1hfX1yZXR1cm57bmV4dDpUfX1mdW5jdGlvbiBUKCl7cmV0dXJue3ZhbHVlOnZvaWQgMCxkb25lOiEwfX1yZXR1cm4gZy5wcm90b3R5cGU9dixuKHcsImNvbnN0cnVjdG9yIix7dmFsdWU6dixjb25maWd1cmFibGU6ITB9KSxuKHYsImNvbnN0cnVjdG9yIix7dmFsdWU6Zyxjb25maWd1cmFibGU6ITB9KSxnLmRpc3BsYXlOYW1lPWwodixjLCJHZW5lcmF0b3JGdW5jdGlvbiIpLGUuaXNHZW5lcmF0b3JGdW5jdGlvbj1mdW5jdGlvbihlKXt2YXIgdD0iZnVuY3Rpb24iPT10eXBlb2YgZSYmZS5jb25zdHJ1Y3RvcjtyZXR1cm4hIXQmJih0PT09Z3x8IkdlbmVyYXRvckZ1bmN0aW9uIj09PSh0LmRpc3BsYXlOYW1lfHx0Lm5hbWUpKX0sZS5tYXJrPWZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsdik6KGUuX19wcm90b19fPXYsbChlLGMsIkdlbmVyYXRvckZ1bmN0aW9uIikpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodyksZX0sZS5hd3JhcD1mdW5jdGlvbihlKXtyZXR1cm57X19hd2FpdDplfX0sayhTLnByb3RvdHlwZSksbChTLnByb3RvdHlwZSxzLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpLGUuQXN5bmNJdGVyYXRvcj1TLGUuYXN5bmM9ZnVuY3Rpb24odCxyLG4sYSxpKXt2b2lkIDA9PT1pJiYoaT1Qcm9taXNlKTt2YXIgbz1uZXcgUyhmKHQscixuLGEpLGkpO3JldHVybiBlLmlzR2VuZXJhdG9yRnVuY3Rpb24ocik/bzpvLm5leHQoKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gZS5kb25lP2UudmFsdWU6by5uZXh0KCl9KSl9LGsodyksbCh3LGMsIkdlbmVyYXRvciIpLGwodyxvLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpLGwodywidG9TdHJpbmciLChmdW5jdGlvbigpe3JldHVybiJbb2JqZWN0IEdlbmVyYXRvcl0ifSkpLGUua2V5cz1mdW5jdGlvbihlKXt2YXIgdD1PYmplY3QoZSkscj1bXTtmb3IodmFyIG4gaW4gdClyLnB1c2gobik7cmV0dXJuIHIucmV2ZXJzZSgpLGZ1bmN0aW9uIGUoKXtmb3IoO3IubGVuZ3RoOyl7dmFyIG49ci5wb3AoKTtpZihuIGluIHQpcmV0dXJuIGUudmFsdWU9bixlLmRvbmU9ITEsZX1yZXR1cm4gZS5kb25lPSEwLGV9fSxlLnZhbHVlcz1QLEYucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpGLHJlc2V0OmZ1bmN0aW9uKGUpe2lmKHRoaXMucHJldj0wLHRoaXMubmV4dD0wLHRoaXMuc2VudD10aGlzLl9zZW50PXZvaWQgMCx0aGlzLmRvbmU9ITEsdGhpcy5kZWxlZ2F0ZT1udWxsLHRoaXMubWV0aG9kPSJuZXh0Iix0aGlzLmFyZz12b2lkIDAsdGhpcy50cnlFbnRyaWVzLmZvckVhY2goQyksIWUpZm9yKHZhciB0IGluIHRoaXMpInQiPT09dC5jaGFyQXQoMCkmJnIuY2FsbCh0aGlzLHQpJiYhaXNOYU4oK3Quc2xpY2UoMSkpJiYodGhpc1t0XT12b2lkIDApfSxzdG9wOmZ1bmN0aW9uKCl7dGhpcy5kb25lPSEwO3ZhciBlPXRoaXMudHJ5RW50cmllc1swXS5jb21wbGV0aW9uO2lmKCJ0aHJvdyI9PT1lLnR5cGUpdGhyb3cgZS5hcmc7cmV0dXJuIHRoaXMucnZhbH0sZGlzcGF0Y2hFeGNlcHRpb246ZnVuY3Rpb24oZSl7aWYodGhpcy5kb25lKXRocm93IGU7dmFyIHQ9dGhpcztmdW5jdGlvbiBuKHIsbil7cmV0dXJuIG8udHlwZT0idGhyb3ciLG8uYXJnPWUsdC5uZXh0PXIsbiYmKHQubWV0aG9kPSJuZXh0Iix0LmFyZz12b2lkIDApLCEhbn1mb3IodmFyIGE9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2E+PTA7LS1hKXt2YXIgaT10aGlzLnRyeUVudHJpZXNbYV0sbz1pLmNvbXBsZXRpb247aWYoInJvb3QiPT09aS50cnlMb2MpcmV0dXJuIG4oImVuZCIpO2lmKGkudHJ5TG9jPD10aGlzLnByZXYpe3ZhciBzPXIuY2FsbChpLCJjYXRjaExvYyIpLGM9ci5jYWxsKGksImZpbmFsbHlMb2MiKTtpZihzJiZjKXtpZih0aGlzLnByZXY8aS5jYXRjaExvYylyZXR1cm4gbihpLmNhdGNoTG9jLCEwKTtpZih0aGlzLnByZXY8aS5maW5hbGx5TG9jKXJldHVybiBuKGkuZmluYWxseUxvYyl9ZWxzZSBpZihzKXtpZih0aGlzLnByZXY8aS5jYXRjaExvYylyZXR1cm4gbihpLmNhdGNoTG9jLCEwKX1lbHNle2lmKCFjKXRocm93IG5ldyBFcnJvcigidHJ5IHN0YXRlbWVudCB3aXRob3V0IGNhdGNoIG9yIGZpbmFsbHkiKTtpZih0aGlzLnByZXY8aS5maW5hbGx5TG9jKXJldHVybiBuKGkuZmluYWxseUxvYyl9fX19LGFicnVwdDpmdW5jdGlvbihlLHQpe2Zvcih2YXIgbj10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7bj49MDstLW4pe3ZhciBhPXRoaXMudHJ5RW50cmllc1tuXTtpZihhLnRyeUxvYzw9dGhpcy5wcmV2JiZyLmNhbGwoYSwiZmluYWxseUxvYyIpJiZ0aGlzLnByZXY8YS5maW5hbGx5TG9jKXt2YXIgaT1hO2JyZWFrfX1pJiYoImJyZWFrIj09PWV8fCJjb250aW51ZSI9PT1lKSYmaS50cnlMb2M8PXQmJnQ8PWkuZmluYWxseUxvYyYmKGk9bnVsbCk7dmFyIG89aT9pLmNvbXBsZXRpb246e307cmV0dXJuIG8udHlwZT1lLG8uYXJnPXQsaT8odGhpcy5tZXRob2Q9Im5leHQiLHRoaXMubmV4dD1pLmZpbmFsbHlMb2MsZCk6dGhpcy5jb21wbGV0ZShvKX0sY29tcGxldGU6ZnVuY3Rpb24oZSx0KXtpZigidGhyb3ciPT09ZS50eXBlKXRocm93IGUuYXJnO3JldHVybiJicmVhayI9PT1lLnR5cGV8fCJjb250aW51ZSI9PT1lLnR5cGU/dGhpcy5uZXh0PWUuYXJnOiJyZXR1cm4iPT09ZS50eXBlPyh0aGlzLnJ2YWw9dGhpcy5hcmc9ZS5hcmcsdGhpcy5tZXRob2Q9InJldHVybiIsdGhpcy5uZXh0PSJlbmQiKToibm9ybWFsIj09PWUudHlwZSYmdCYmKHRoaXMubmV4dD10KSxkfSxmaW5pc2g6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTt0Pj0wOy0tdCl7dmFyIHI9dGhpcy50cnlFbnRyaWVzW3RdO2lmKHIuZmluYWxseUxvYz09PWUpcmV0dXJuIHRoaXMuY29tcGxldGUoci5jb21wbGV0aW9uLHIuYWZ0ZXJMb2MpLEMociksZH19LGNhdGNoOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7dD49MDstLXQpe3ZhciByPXRoaXMudHJ5RW50cmllc1t0XTtpZihyLnRyeUxvYz09PWUpe3ZhciBuPXIuY29tcGxldGlvbjtpZigidGhyb3ciPT09bi50eXBlKXt2YXIgYT1uLmFyZztDKHIpfXJldHVybiBhfX10aHJvdyBuZXcgRXJyb3IoImlsbGVnYWwgY2F0Y2ggYXR0ZW1wdCIpfSxkZWxlZ2F0ZVlpZWxkOmZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZT17aXRlcmF0b3I6UChlKSxyZXN1bHROYW1lOnQsbmV4dExvYzpyfSwibmV4dCI9PT10aGlzLm1ldGhvZCYmKHRoaXMuYXJnPXZvaWQgMCksZH19LGV9ZnVuY3Rpb24gbChlLHQscixuLGEsaSxvKXt0cnl7dmFyIHM9ZVtpXShvKSxjPXMudmFsdWV9Y2F0Y2goZSl7cmV0dXJuIHZvaWQgcihlKX1zLmRvbmU/dChjKTpQcm9taXNlLnJlc29sdmUoYykudGhlbihuLGEpfWZ1bmN0aW9uIGYoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBoKGUsdCl7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBuPXRbcl07bi5lbnVtZXJhYmxlPW4uZW51bWVyYWJsZXx8ITEsbi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIG4mJihuLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwodm9pZCAwLGk9ZnVuY3Rpb24oZSx0KXtpZigib2JqZWN0IiE9PWEoZSl8fG51bGw9PT1lKXJldHVybiBlO3ZhciByPWVbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1yKXt2YXIgbj1yLmNhbGwoZSwic3RyaW5nIik7aWYoIm9iamVjdCIhPT1hKG4pKXJldHVybiBuO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuIFN0cmluZyhlKX0obi5rZXkpLCJzeW1ib2wiPT09YShpKT9pOlN0cmluZyhpKSksbil9dmFyIGl9ZnVuY3Rpb24gZChlLHQscil7cmV0dXJuIHQmJmgoZS5wcm90b3R5cGUsdCksciYmaChlLHIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGV9dmFyIHA9U3ltYm9sKCJDSVJDVUxBUl9SRUYiKTt0LkNJUkNVTEFSX1JFRj1wO3ZhciBnPVN5bWJvbCgiRU9GIik7dC5FT0Y9Zzt2YXIgdix5PSh2PU9iamVjdC5jcmVhdGUobnVsbCksZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQpe2YodGhpcyxlKSx0aGlzLm5hbWU9dH1yZXR1cm4gZChlLG51bGwsW3trZXk6ImdldCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHZbdF18fCh2W3RdPW5ldyBlKHQpKX19LHtrZXk6Il9jbGVhckNhY2hlIix2YWx1ZTpmdW5jdGlvbigpe3Y9T2JqZWN0LmNyZWF0ZShudWxsKX19XSksZX0oKSk7dC5OYW1lPXk7dmFyIG0sYj0obT1PYmplY3QuY3JlYXRlKG51bGwpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0KXtmKHRoaXMsZSksdGhpcy5jbWQ9dH1yZXR1cm4gZChlLG51bGwsW3trZXk6ImdldCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIG1bdF18fChtW3RdPW5ldyBlKHQpKX19LHtrZXk6Il9jbGVhckNhY2hlIix2YWx1ZTpmdW5jdGlvbigpe209T2JqZWN0LmNyZWF0ZShudWxsKX19XSksZX0oKSk7dC5DbWQ9Yjt2YXIgdz1mdW5jdGlvbigpe3JldHVybiB3fSxrPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpudWxsO2YodGhpcyxlKSx0aGlzLl9tYXA9T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLnhyZWY9dCx0aGlzLm9iaklkPW51bGwsdGhpcy5zdXBwcmVzc0VuY3J5cHRpb249ITEsdGhpcy5fX25vblNlcmlhbGl6YWJsZV9fPXd9dmFyIHQscjtyZXR1cm4gZChlLFt7a2V5OiJhc3NpZ25YcmVmIix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLnhyZWY9ZX19LHtrZXk6InNpemUiLGdldDpmdW5jdGlvbigpe3JldHVybiBPYmplY3Qua2V5cyh0aGlzLl9tYXApLmxlbmd0aH19LHtrZXk6ImdldCIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXRoaXMuX21hcFtlXTtyZXR1cm4gdm9pZCAwPT09biYmdm9pZCAwIT09dCYmdm9pZCAwPT09KG49dGhpcy5fbWFwW3RdKSYmdm9pZCAwIT09ciYmKG49dGhpcy5fbWFwW3JdKSxuIGluc3RhbmNlb2YgeCYmdGhpcy54cmVmP3RoaXMueHJlZi5mZXRjaChuLHRoaXMuc3VwcHJlc3NFbmNyeXB0aW9uKTpufX0se2tleToiZ2V0QXN5bmMiLHZhbHVlOih0PXUoKS5tYXJrKChmdW5jdGlvbiBlKHQscixuKXt2YXIgYTtyZXR1cm4gdSgpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOmlmKHZvaWQgMD09PShhPXRoaXMuX21hcFt0XSkmJnZvaWQgMCE9PXImJnZvaWQgMD09PShhPXRoaXMuX21hcFtyXSkmJnZvaWQgMCE9PW4mJihhPXRoaXMuX21hcFtuXSksIShhIGluc3RhbmNlb2YgeCYmdGhpcy54cmVmKSl7ZS5uZXh0PTQ7YnJlYWt9cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHRoaXMueHJlZi5mZXRjaEFzeW5jKGEsdGhpcy5zdXBwcmVzc0VuY3J5cHRpb24pKTtjYXNlIDQ6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGEpO2Nhc2UgNTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkscj1mdW5jdGlvbigpe3ZhciBlPXRoaXMscj1hcmd1bWVudHM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihuLGEpe3ZhciBpPXQuYXBwbHkoZSxyKTtmdW5jdGlvbiBvKGUpe2woaSxuLGEsbyxzLCJuZXh0IixlKX1mdW5jdGlvbiBzKGUpe2woaSxuLGEsbyxzLCJ0aHJvdyIsZSl9byh2b2lkIDApfSkpfSxmdW5jdGlvbihlLHQsbil7cmV0dXJuIHIuYXBwbHkodGhpcyxhcmd1bWVudHMpfSl9LHtrZXk6ImdldEFycmF5Iix2YWx1ZTpmdW5jdGlvbihlLHQscil7dmFyIG49dGhpcy5fbWFwW2VdO2lmKHZvaWQgMD09PW4mJnZvaWQgMCE9PXQmJnZvaWQgMD09PShuPXRoaXMuX21hcFt0XSkmJnZvaWQgMCE9PXImJihuPXRoaXMuX21hcFtyXSksbiBpbnN0YW5jZW9mIHgmJnRoaXMueHJlZiYmKG49dGhpcy54cmVmLmZldGNoKG4sdGhpcy5zdXBwcmVzc0VuY3J5cHRpb24pKSxBcnJheS5pc0FycmF5KG4pKWZvcih2YXIgYT0wLGk9KG49bi5zbGljZSgpKS5sZW5ndGg7YTxpO2ErKyluW2FdaW5zdGFuY2VvZiB4JiZ0aGlzLnhyZWYmJihuW2FdPXRoaXMueHJlZi5mZXRjaChuW2FdLHRoaXMuc3VwcHJlc3NFbmNyeXB0aW9uKSk7cmV0dXJuIG59fSx7a2V5OiJnZXRSYXciLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9tYXBbZV19fSx7a2V5OiJnZXRLZXlzIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBPYmplY3Qua2V5cyh0aGlzLl9tYXApfX0se2tleToiZ2V0UmF3VmFsdWVzIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBPYmplY3QudmFsdWVzKHRoaXMuX21hcCl9fSx7a2V5OiJzZXQiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dGhpcy5fbWFwW2VdPXR9fSx7a2V5OiJoYXMiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDAhPT10aGlzLl9tYXBbZV19fSx7a2V5OiJmb3JFYWNoIix2YWx1ZTpmdW5jdGlvbihlKXtmb3IodmFyIHQgaW4gdGhpcy5fbWFwKWUodCx0aGlzLmdldCh0KSl9fV0sW3trZXk6ImVtcHR5IixnZXQ6ZnVuY3Rpb24oKXt2YXIgdD1uZXcgZShudWxsKTtyZXR1cm4gdC5zZXQ9ZnVuY3Rpb24oZSx0KXsoMCxuLnVucmVhY2hhYmxlKSgiU2hvdWxkIG5vdCBjYWxsIGBzZXRgIG9uIHRoZSBlbXB0eSBkaWN0aW9uYXJ5LiIpfSwoMCxuLnNoYWRvdykodGhpcywiZW1wdHkiLHQpfX0se2tleToibWVyZ2UiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciByLG49dC54cmVmLGE9dC5kaWN0QXJyYXkscz10Lm1lcmdlU3ViRGljdHMsYz12b2lkIDAhPT1zJiZzLHU9bmV3IGUobiksbD1uZXcgTWFwLGY9byhhKTt0cnl7Zm9yKGYucygpOyEocj1mLm4oKSkuZG9uZTspe3ZhciBoPXIudmFsdWU7aWYoaCBpbnN0YW5jZW9mIGUpZm9yKHZhciBkPTAscD1PYmplY3QuZW50cmllcyhoLl9tYXApO2Q8cC5sZW5ndGg7ZCsrKXt2YXIgZz1pKHBbZF0sMiksdj1nWzBdLHk9Z1sxXSxtPWwuZ2V0KHYpO2lmKHZvaWQgMD09PW0pbT1bXSxsLnNldCh2LG0pO2Vsc2UgaWYoIShjJiZ5IGluc3RhbmNlb2YgZSkpY29udGludWU7bS5wdXNoKHkpfX19Y2F0Y2goZSl7Zi5lKGUpfWZpbmFsbHl7Zi5mKCl9dmFyIGIsdz1vKGwpO3RyeXtmb3Iody5zKCk7IShiPXcubigpKS5kb25lOyl7dmFyIGs9aShiLnZhbHVlLDIpLFM9a1swXSx4PWtbMV07aWYoMSE9PXgubGVuZ3RoJiZ4WzBdaW5zdGFuY2VvZiBlKXt2YXIgTyxBPW5ldyBlKG4pLEM9byh4KTt0cnl7Zm9yKEMucygpOyEoTz1DLm4oKSkuZG9uZTspZm9yKHZhciBGPU8udmFsdWUsUD0wLFQ9T2JqZWN0LmVudHJpZXMoRi5fbWFwKTtQPFQubGVuZ3RoO1ArKyl7dmFyIEk9aShUW1BdLDIpLEU9SVswXSxqPUlbMV07dm9pZCAwPT09QS5fbWFwW0VdJiYoQS5fbWFwW0VdPWopfX1jYXRjaChlKXtDLmUoZSl9ZmluYWxseXtDLmYoKX1BLnNpemU+MCYmKHUuX21hcFtTXT1BKX1lbHNlIHUuX21hcFtTXT14WzBdfX1jYXRjaChlKXt3LmUoZSl9ZmluYWxseXt3LmYoKX1yZXR1cm4gbC5jbGVhcigpLHUuc2l6ZT4wP3U6ZS5lbXB0eX19XSksZX0oKTt0LkRpY3Q9azt2YXIgUyx4PShTPU9iamVjdC5jcmVhdGUobnVsbCksZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQscil7Zih0aGlzLGUpLHRoaXMubnVtPXQsdGhpcy5nZW49cn1yZXR1cm4gZChlLFt7a2V5OiJ0b1N0cmluZyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gMD09PXRoaXMuZ2VuPyIiLmNvbmNhdCh0aGlzLm51bSwiUiIpOiIiLmNvbmNhdCh0aGlzLm51bSwiUiIpLmNvbmNhdCh0aGlzLmdlbil9fV0sW3trZXk6ImdldCIsdmFsdWU6ZnVuY3Rpb24odCxyKXt2YXIgbj0wPT09cj8iIi5jb25jYXQodCwiUiIpOiIiLmNvbmNhdCh0LCJSIikuY29uY2F0KHIpO3JldHVybiBTW25dfHwoU1tuXT1uZXcgZSh0LHIpKX19LHtrZXk6Il9jbGVhckNhY2hlIix2YWx1ZTpmdW5jdGlvbigpe1M9T2JqZWN0LmNyZWF0ZShudWxsKX19XSksZX0oKSk7dC5SZWY9eDt2YXIgTz1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOm51bGw7Zih0aGlzLHQpLHRoaXMuX3NldD1uZXcgU2V0KGUmJmUuX3NldCl9cmV0dXJuIGQodCxbe2tleToiaGFzIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fc2V0LmhhcyhlLnRvU3RyaW5nKCkpfX0se2tleToicHV0Iix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLl9zZXQuYWRkKGUudG9TdHJpbmcoKSl9fSx7a2V5OiJyZW1vdmUiLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMuX3NldC5kZWxldGUoZS50b1N0cmluZygpKX19LHtrZXk6U3ltYm9sLml0ZXJhdG9yLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3NldC52YWx1ZXMoKX19LHtrZXk6ImNsZWFyIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX3NldC5jbGVhcigpfX1dKSx0fSgpO3QuUmVmU2V0PU87dmFyIEE9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe2YodGhpcyx0KSx0aGlzLl9tYXA9bmV3IE1hcH1yZXR1cm4gZCh0LFt7a2V5OiJzaXplIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbWFwLnNpemV9fSx7a2V5OiJnZXQiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9tYXAuZ2V0KGUudG9TdHJpbmcoKSl9fSx7a2V5OiJoYXMiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9tYXAuaGFzKGUudG9TdHJpbmcoKSl9fSx7a2V5OiJwdXQiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dGhpcy5fbWFwLnNldChlLnRvU3RyaW5nKCksdCl9fSx7a2V5OiJwdXRBbGlhcyIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt0aGlzLl9tYXAuc2V0KGUudG9TdHJpbmcoKSx0aGlzLmdldCh0KSl9fSx7a2V5OlN5bWJvbC5pdGVyYXRvcix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9tYXAudmFsdWVzKCl9fSx7a2V5OiJjbGVhciIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLl9tYXAuY2xlYXIoKX19XSksdH0oKTtmdW5jdGlvbiBDKGUsdCl7cmV0dXJuIGUgaW5zdGFuY2VvZiB5JiYodm9pZCAwPT09dHx8ZS5uYW1lPT09dCl9dC5SZWZTZXRDYWNoZT1BfSwoZSx0LHIpPT57ZnVuY3Rpb24gbihlKXtyZXR1cm4gbj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZX0sbihlKX1PYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5YUmVmUGFyc2VFeGNlcHRpb249dC5YUmVmRW50cnlFeGNlcHRpb249dC5QYXJzZXJFT0ZFeGNlcHRpb249dC5QREZfVkVSU0lPTl9SRUdFWFA9dC5NaXNzaW5nRGF0YUV4Y2VwdGlvbj10LkRvY1N0YXRzPXZvaWQgMCx0LmNvbGxlY3RBY3Rpb25zPWZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1PYmplY3QuY3JlYXRlKG51bGwpLG89Uyh7ZGljdDp0LGtleToiQUEiLHN0b3BXaGVuRm91bmQ6ITF9KTtpZihvKWZvcih2YXIgYz1vLmxlbmd0aC0xO2M+PTA7Yy0tKXt2YXIgdT1vW2NdO2lmKHUgaW5zdGFuY2VvZiBpLkRpY3Qpe3ZhciBsLGY9cyh1LmdldEtleXMoKSk7dHJ5e2ZvcihmLnMoKTshKGw9Zi5uKCkpLmRvbmU7KXt2YXIgaD1sLnZhbHVlLGQ9cltoXTtpZihkKXt2YXIgcD11LmdldFJhdyhoKSxnPW5ldyBpLlJlZlNldCx2PVtdO08ocCxlLHYsZyksdi5sZW5ndGg+MCYmKG5bZF09dil9fX1jYXRjaChlKXtmLmUoZSl9ZmluYWxseXtmLmYoKX19fWlmKHQuaGFzKCJBIikpe3ZhciB5PVtdO08odC5nZXQoIkEiKSxlLHksbmV3IGkuUmVmU2V0KSx5Lmxlbmd0aD4wJiYobi5BY3Rpb249eSl9cmV0dXJuKDAsYS5vYmplY3RTaXplKShuKT4wP246bnVsbH0sdC5lbmNvZGVUb1htbFN0cmluZz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9W10scj0wLG49MCxhPWUubGVuZ3RoO248YTtuKyspe3ZhciBpPWUuY29kZVBvaW50QXQobik7aWYoMzI8PWkmJmk8PTEyNil7dmFyIG89QVtpXTtvJiYocjxuJiZ0LnB1c2goZS5zdWJzdHJpbmcocixuKSksdC5wdXNoKG8pLHI9bisxKX1lbHNlIHI8biYmdC5wdXNoKGUuc3Vic3RyaW5nKHIsbikpLHQucHVzaCgiJiN4Ii5jb25jYXQoaS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKSwiOyIpKSxpPjU1Mjk1JiYoaTw1NzM0NHx8aT42NTUzMykmJm4rKyxyPW4rMX1yZXR1cm4gMD09PXQubGVuZ3RoP2U6KHI8ZS5sZW5ndGgmJnQucHVzaChlLnN1YnN0cmluZyhyLGUubGVuZ3RoKSksdC5qb2luKCIiKSl9LHQuZXNjYXBlUERGTmFtZT1mdW5jdGlvbihlKXtmb3IodmFyIHQ9W10scj0wLG49MCxhPWUubGVuZ3RoO248YTtuKyspe3ZhciBpPWUuY2hhckNvZGVBdChuKTsoaTwzM3x8aT4xMjZ8fDM1PT09aXx8NDA9PT1pfHw0MT09PWl8fDYwPT09aXx8NjI9PT1pfHw5MT09PWl8fDkzPT09aXx8MTIzPT09aXx8MTI1PT09aXx8NDc9PT1pfHwzNz09PWkpJiYocjxuJiZ0LnB1c2goZS5zdWJzdHJpbmcocixuKSksdC5wdXNoKCIjIi5jb25jYXQoaS50b1N0cmluZygxNikpKSxyPW4rMSl9cmV0dXJuIDA9PT10Lmxlbmd0aD9lOihyPGUubGVuZ3RoJiZ0LnB1c2goZS5zdWJzdHJpbmcocixlLmxlbmd0aCkpLHQuam9pbigiIikpfSx0LmVzY2FwZVN0cmluZz1mdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKC8oWygpXFxcblxyXSkvZywoZnVuY3Rpb24oZSl7cmV0dXJuIlxuIj09PWU/IlxcbiI6IlxyIj09PWU/IlxcciI6IlxcIi5jb25jYXQoZSl9KSl9LHQuZ2V0QXJyYXlMb29rdXBUYWJsZUZhY3Rvcnk9ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIGZ1bmN0aW9uKCl7aWYoZSl7dmFyIHI9ZSgpO2U9bnVsbCx0PU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKHZhciBuPTAsYT1yLmxlbmd0aDtuPGE7bis9Mil0W3Jbbl1dPXJbbisxXTtyPW51bGx9cmV0dXJuIHR9fSx0LmdldEluaGVyaXRhYmxlUHJvcGVydHk9Uyx0LmdldExvb2t1cFRhYmxlRmFjdG9yeT1mdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZSYmKHQ9T2JqZWN0LmNyZWF0ZShudWxsKSxlKHQpLGU9bnVsbCksdH19LHQuZ2V0TmV3QW5ub3RhdGlvbnNNYXA9ZnVuY3Rpb24oZSl7aWYoIWUpcmV0dXJuIG51bGw7dmFyIHQscixuPW5ldyBNYXAsaT1zKGUpO3RyeXtmb3IoaS5zKCk7ISh0PWkubigpKS5kb25lOyl7dmFyIG89KHI9dC52YWx1ZSwyLGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KHIpfHxmdW5jdGlvbihlLHQpe3ZhciByPW51bGw9PWU/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9cil7dmFyIG4sYSxpLG8scz1bXSxjPSEwLHU9ITE7dHJ5e2ZvcihpPShyPXIuY2FsbChlKSkubmV4dCwwOyEoYz0obj1pLmNhbGwocikpLmRvbmUpJiYocy5wdXNoKG4udmFsdWUpLDIhPT1zLmxlbmd0aCk7Yz0hMCk7fWNhdGNoKGUpe3U9ITAsYT1lfWZpbmFsbHl7dHJ5e2lmKCFjJiZudWxsIT1yLnJldHVybiYmKG89ci5yZXR1cm4oKSxPYmplY3QobykhPT1vKSlyZXR1cm59ZmluYWxseXtpZih1KXRocm93IGF9fXJldHVybiBzfX0ocil8fGMociwyKXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpKSx1PW9bMF0sbD1vWzFdO2lmKHUuc3RhcnRzV2l0aChhLkFubm90YXRpb25FZGl0b3JQcmVmaXgpKXt2YXIgZj1uLmdldChsLnBhZ2VJbmRleCk7Znx8KGY9W10sbi5zZXQobC5wYWdlSW5kZXgsZikpLGYucHVzaChsKX19fWNhdGNoKGUpe2kuZShlKX1maW5hbGx5e2kuZigpfXJldHVybiBuLnNpemU+MD9uOm51bGx9LHQuZ2V0Um90YXRpb25NYXRyaXg9ZnVuY3Rpb24oZSx0LHIpe3N3aXRjaChlKXtjYXNlIDkwOnJldHVyblswLDEsLTEsMCx0LDBdO2Nhc2UgMTgwOnJldHVyblstMSwwLDAsLTEsdCxyXTtjYXNlIDI3MDpyZXR1cm5bMCwtMSwxLDAsMCxyXTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiSW52YWxpZCByb3RhdGlvbiIpfX0sdC5pc0FzY2lpPWZ1bmN0aW9uKGUpe3JldHVybi9eW1x4MDAtXHg3Rl0qJC8udGVzdChlKX0sdC5pc1doaXRlU3BhY2U9ZnVuY3Rpb24oZSl7cmV0dXJuIDMyPT09ZXx8OT09PWV8fDEzPT09ZXx8MTA9PT1lfSx0LmxvZzI9ZnVuY3Rpb24oZSl7cmV0dXJuIGU8PTA/MDpNYXRoLmNlaWwoTWF0aC5sb2cyKGUpKX0sdC5udW1iZXJUb1N0cmluZz1mdW5jdGlvbihlKXtpZihOdW1iZXIuaXNJbnRlZ2VyKGUpKXJldHVybiBlLnRvU3RyaW5nKCk7dmFyIHQ9TWF0aC5yb3VuZCgxMDAqZSk7cmV0dXJuIHQlMTAwPT0wPyh0LzEwMCkudG9TdHJpbmcoKTp0JTEwPT0wP2UudG9GaXhlZCgxKTplLnRvRml4ZWQoMil9LHQucGFyc2VYRkFQYXRoPWZ1bmN0aW9uKGUpe3ZhciB0PS8oLispXFsoXGQrKVxdJC87cmV0dXJuIGUuc3BsaXQoIi4iKS5tYXAoKGZ1bmN0aW9uKGUpe3ZhciByPWUubWF0Y2godCk7cmV0dXJuIHI/e25hbWU6clsxXSxwb3M6cGFyc2VJbnQoclsyXSwxMCl9OntuYW1lOmUscG9zOjB9fSkpfSx0LnJlYWRJbnQ4PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGVbdF08PDI0Pj4yNH0sdC5yZWFkVWludDE2PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGVbdF08PDh8ZVt0KzFdfSx0LnJlYWRVaW50MzI9ZnVuY3Rpb24oZSx0KXtyZXR1cm4oZVt0XTw8MjR8ZVt0KzFdPDwxNnxlW3QrMl08PDh8ZVt0KzNdKT4+PjB9LHQucmVjb3ZlckpzVVJMPWZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBSZWdFeHAoIl5cXHMqKCIrWyJhcHAubGF1bmNoVVJMIiwid2luZG93Lm9wZW4iLCJ4ZmEuaG9zdC5nb3RvVVJMIl0uam9pbigifCIpLnNwbGl0KCIuIikuam9pbigiXFwuIikrIilcXCgoPzonfFwiKShbXidcIl0qKSg/Oid8XCIpKD86LFxccyooXFx3KylcXCl8XFwpKSIsImkiKS5leGVjKGUpO2lmKHQmJnRbMl0pe3ZhciByPXRbMl0sbj0hMTtyZXR1cm4idHJ1ZSI9PT10WzNdJiYiYXBwLmxhdW5jaFVSTCI9PT10WzFdJiYobj0hMCkse3VybDpyLG5ld1dpbmRvdzpufX1yZXR1cm4gbnVsbH0sdC5zdHJpbmdUb1VURjE2SGV4U3RyaW5nPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1bXSxyPTAsbj1lLmxlbmd0aDtyPG47cisrKXt2YXIgYT1lLmNoYXJDb2RlQXQocik7dC5wdXNoKChhPj44JjI1NSkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsIjAiKSwoMjU1JmEpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCIwIikpfXJldHVybiB0LmpvaW4oIiIpfSx0LnN0cmluZ1RvVVRGMTZTdHJpbmc9ZnVuY3Rpb24oZSl7dmFyIHQ9W107YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXSYmdC5wdXNoKCLDvsO/Iik7Zm9yKHZhciByPTAsbj1lLmxlbmd0aDtyPG47cisrKXt2YXIgYT1lLmNoYXJDb2RlQXQocik7dC5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoYT4+OCYyNTUpLFN0cmluZy5mcm9tQ2hhckNvZGUoMjU1JmEpKX1yZXR1cm4gdC5qb2luKCIiKX0sdC50b1JvbWFuTnVtZXJhbHM9ZnVuY3Rpb24oZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXTsoMCxhLmFzc2VydCkoTnVtYmVyLmlzSW50ZWdlcihlKSYmZT4wLCJUaGUgbnVtYmVyIHNob3VsZCBiZSBhIHBvc2l0aXZlIGludGVnZXIuIik7Zm9yKHZhciByLG49W107ZT49MWUzOyllLT0xZTMsbi5wdXNoKCJNIik7cj1lLzEwMHwwLGUlPTEwMCxuLnB1c2goeFtyXSkscj1lLzEwfDAsZSU9MTAsbi5wdXNoKHhbMTArcl0pLG4ucHVzaCh4WzIwK2VdKTt2YXIgaT1uLmpvaW4oIiIpO3JldHVybiB0P2kudG9Mb3dlckNhc2UoKTppfSx0LnZhbGlkYXRlQ1NTRm9udD1mdW5jdGlvbihlKXt2YXIgdD1uZXcgU2V0KFsiMTAwIiwiMjAwIiwiMzAwIiwiNDAwIiwiNTAwIiwiNjAwIiwiNzAwIiwiODAwIiwiOTAwIiwiMTAwMCIsIm5vcm1hbCIsImJvbGQiLCJib2xkZXIiLCJsaWdodGVyIl0pLHI9ZS5mb250RmFtaWx5LG49ZS5mb250V2VpZ2h0LGk9ZS5pdGFsaWNBbmdsZTtpZigvXiIuKiIkLy50ZXN0KHIpKXtpZigvW15cXF0iLy50ZXN0KHIuc2xpY2UoMSxyLmxlbmd0aC0xKSkpcmV0dXJuKDAsYS53YXJuKSgnWEZBIC0gRm9udEZhbWlseSBjb250YWlucyBzb21lIHVuZXNjYXBlZCAiOiAnLmNvbmNhdChyLCIuIikpLCExfWVsc2UgaWYoL14nLionJC8udGVzdChyKSl7aWYoL1teXFxdJy8udGVzdChyLnNsaWNlKDEsci5sZW5ndGgtMSkpKXJldHVybigwLGEud2FybikoIlhGQSAtIEZvbnRGYW1pbHkgY29udGFpbnMgc29tZSB1bmVzY2FwZWQgJzogIi5jb25jYXQociwiLiIpKSwhMX1lbHNle3ZhciBvLGM9cyhyLnNwbGl0KC9bIFx0XSsvKSk7dHJ5e2ZvcihjLnMoKTshKG89Yy5uKCkpLmRvbmU7KXt2YXIgdT1vLnZhbHVlO2lmKC9eKFxkfCgtKFxkfC0pKSkvLnRlc3QodSl8fCEvXltcdy1cXF0rJC8udGVzdCh1KSlyZXR1cm4oMCxhLndhcm4pKCJYRkEgLSBGb250RmFtaWx5IGNvbnRhaW5zIHNvbWUgaW52YWxpZCA8Y3VzdG9tLWlkZW50PjogIi5jb25jYXQociwiLiIpKSwhMX19Y2F0Y2goZSl7Yy5lKGUpfWZpbmFsbHl7Yy5mKCl9fXZhciBsPW4/bi50b1N0cmluZygpOiIiO2UuZm9udFdlaWdodD10LmhhcyhsKT9sOiI0MDAiO3ZhciBmPXBhcnNlRmxvYXQoaSk7cmV0dXJuIGUuaXRhbGljQW5nbGU9aXNOYU4oZil8fGY8LTkwfHxmPjkwPyIxNCI6aS50b1N0cmluZygpLCEwfTt2YXIgYT1yKDIpLGk9cigxMzQpLG89cigxMzYpO2Z1bmN0aW9uIHMoZSx0KXt2YXIgcj0idW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlWyJAQGl0ZXJhdG9yIl07aWYoIXIpe2lmKEFycmF5LmlzQXJyYXkoZSl8fChyPWMoZSkpfHx0JiZlJiYibnVtYmVyIj09dHlwZW9mIGUubGVuZ3RoKXtyJiYoZT1yKTt2YXIgbj0wLGE9ZnVuY3Rpb24oKXt9O3JldHVybntzOmEsbjpmdW5jdGlvbigpe3JldHVybiBuPj1lLmxlbmd0aD97ZG9uZTohMH06e2RvbmU6ITEsdmFsdWU6ZVtuKytdfX0sZTpmdW5jdGlvbihlKXt0aHJvdyBlfSxmOmF9fXRocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBpdGVyYXRlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX12YXIgaSxvPSEwLHM9ITE7cmV0dXJue3M6ZnVuY3Rpb24oKXtyPXIuY2FsbChlKX0sbjpmdW5jdGlvbigpe3ZhciBlPXIubmV4dCgpO3JldHVybiBvPWUuZG9uZSxlfSxlOmZ1bmN0aW9uKGUpe3M9ITAsaT1lfSxmOmZ1bmN0aW9uKCl7dHJ5e298fG51bGw9PXIucmV0dXJufHxyLnJldHVybigpfWZpbmFsbHl7aWYocyl0aHJvdyBpfX19fWZ1bmN0aW9uIGMoZSx0KXtpZihlKXtpZigic3RyaW5nIj09dHlwZW9mIGUpcmV0dXJuIHUoZSx0KTt2YXIgcj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7cmV0dXJuIk9iamVjdCI9PT1yJiZlLmNvbnN0cnVjdG9yJiYocj1lLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09cnx8IlNldCI9PT1yP0FycmF5LmZyb20oZSk6IkFyZ3VtZW50cyI9PT1yfHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChyKT91KGUsdCk6dm9pZCAwfX1mdW5jdGlvbiB1KGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciByPTAsbj1uZXcgQXJyYXkodCk7cjx0O3IrKyluW3JdPWVbcl07cmV0dXJuIG59ZnVuY3Rpb24gbChlLHQpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgYT10W3JdO2EuZW51bWVyYWJsZT1hLmVudW1lcmFibGV8fCExLGEuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBhJiYoYS53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsKHZvaWQgMCxpPWZ1bmN0aW9uKGUsdCl7aWYoIm9iamVjdCIhPT1uKGUpfHxudWxsPT09ZSlyZXR1cm4gZTt2YXIgcj1lW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09cil7dmFyIGE9ci5jYWxsKGUsInN0cmluZyIpO2lmKCJvYmplY3QiIT09bihhKSlyZXR1cm4gYTt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybiBTdHJpbmcoZSl9KGEua2V5KSwic3ltYm9sIj09PW4oaSk/aTpTdHJpbmcoaSkpLGEpfXZhciBpfWZ1bmN0aW9uIGYoZSx0LHIpe3JldHVybiB0JiZsKGUucHJvdG90eXBlLHQpLHImJmwoZSxyKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxlfWZ1bmN0aW9uIGgoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBkKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLHQmJnAoZSx0KX1mdW5jdGlvbiBwKGUsdCl7cmV0dXJuIHA9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5fX3Byb3RvX189dCxlfSxwKGUsdCl9ZnVuY3Rpb24gZyhlKXt2YXIgdD1mdW5jdGlvbigpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0KXJldHVybiExO2lmKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sKGZ1bmN0aW9uKCl7fSkpKSwhMH1jYXRjaChlKXtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHIsYT12KGUpO2lmKHQpe3ZhciBpPXYodGhpcykuY29uc3RydWN0b3I7cj1SZWZsZWN0LmNvbnN0cnVjdChhLGFyZ3VtZW50cyxpKX1lbHNlIHI9YS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYodCYmKCJvYmplY3QiPT09bih0KXx8ImZ1bmN0aW9uIj09dHlwZW9mIHQpKXJldHVybiB0O2lmKHZvaWQgMCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24oZSl7aWYodm9pZCAwPT09ZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBlfShlKX0odGhpcyxyKX19ZnVuY3Rpb24gdihlKXtyZXR1cm4gdj1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihlKXtyZXR1cm4gZS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihlKX0sdihlKX10LlBERl9WRVJTSU9OX1JFR0VYUD0vXlsxLTldXC5cZCQvO3ZhciB5PWZ1bmN0aW9uKGUpe2QocixlKTt2YXIgdD1nKHIpO2Z1bmN0aW9uIHIoZSxuKXt2YXIgYTtyZXR1cm4gaCh0aGlzLHIpLChhPXQuY2FsbCh0aGlzLCJNaXNzaW5nIGRhdGEgWyIuY29uY2F0KGUsIiwgIikuY29uY2F0KG4sIikiKSwiTWlzc2luZ0RhdGFFeGNlcHRpb24iKSkuYmVnaW49ZSxhLmVuZD1uLGF9cmV0dXJuIGYocil9KGEuQmFzZUV4Y2VwdGlvbik7dC5NaXNzaW5nRGF0YUV4Y2VwdGlvbj15O3ZhciBtPWZ1bmN0aW9uKGUpe2QocixlKTt2YXIgdD1nKHIpO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGgodGhpcyxyKSx0LmNhbGwodGhpcyxlLCJQYXJzZXJFT0ZFeGNlcHRpb24iKX1yZXR1cm4gZihyKX0oYS5CYXNlRXhjZXB0aW9uKTt0LlBhcnNlckVPRkV4Y2VwdGlvbj1tO3ZhciBiPWZ1bmN0aW9uKGUpe2QocixlKTt2YXIgdD1nKHIpO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGgodGhpcyxyKSx0LmNhbGwodGhpcyxlLCJYUmVmRW50cnlFeGNlcHRpb24iKX1yZXR1cm4gZihyKX0oYS5CYXNlRXhjZXB0aW9uKTt0LlhSZWZFbnRyeUV4Y2VwdGlvbj1iO3ZhciB3PWZ1bmN0aW9uKGUpe2QocixlKTt2YXIgdD1nKHIpO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGgodGhpcyxyKSx0LmNhbGwodGhpcyxlLCJYUmVmUGFyc2VFeGNlcHRpb24iKX1yZXR1cm4gZihyKX0oYS5CYXNlRXhjZXB0aW9uKTt0LlhSZWZQYXJzZUV4Y2VwdGlvbj13O3ZhciBrPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0KXtoKHRoaXMsZSksdGhpcy5faGFuZGxlcj10LHRoaXMuX3N0cmVhbVR5cGVzPW5ldyBTZXQsdGhpcy5fZm9udFR5cGVzPW5ldyBTZXR9cmV0dXJuIGYoZSxbe2tleToiX3NlbmQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGUsdD1PYmplY3QuY3JlYXRlKG51bGwpLHI9T2JqZWN0LmNyZWF0ZShudWxsKSxuPXModGhpcy5fc3RyZWFtVHlwZXMpO3RyeXtmb3Iobi5zKCk7IShlPW4ubigpKS5kb25lOyl0W2UudmFsdWVdPSEwfWNhdGNoKGUpe24uZShlKX1maW5hbGx5e24uZigpfXZhciBhLGk9cyh0aGlzLl9mb250VHlwZXMpO3RyeXtmb3IoaS5zKCk7IShhPWkubigpKS5kb25lOylyW2EudmFsdWVdPSEwfWNhdGNoKGUpe2kuZShlKX1maW5hbGx5e2kuZigpfXRoaXMuX2hhbmRsZXIuc2VuZCgiRG9jU3RhdHMiLHtzdHJlYW1UeXBlczp0LGZvbnRUeXBlczpyfSl9fSx7a2V5OiJhZGRTdHJlYW1UeXBlIix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLl9zdHJlYW1UeXBlcy5oYXMoZSl8fCh0aGlzLl9zdHJlYW1UeXBlcy5hZGQoZSksdGhpcy5fc2VuZCgpKX19LHtrZXk6ImFkZEZvbnRUeXBlIix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLl9mb250VHlwZXMuaGFzKGUpfHwodGhpcy5fZm9udFR5cGVzLmFkZChlKSx0aGlzLl9zZW5kKCkpfX1dKSxlfSgpO2Z1bmN0aW9uIFMoZSl7Zm9yKHZhciB0LHI9ZS5kaWN0LG49ZS5rZXksYT1lLmdldEFycmF5LG89dm9pZCAwIT09YSYmYSxzPWUuc3RvcFdoZW5Gb3VuZCxjPXZvaWQgMD09PXN8fHMsdT1uZXcgaS5SZWZTZXQ7ciBpbnN0YW5jZW9mIGkuRGljdCYmKCFyLm9iaklkfHwhdS5oYXMoci5vYmpJZCkpOyl7ci5vYmpJZCYmdS5wdXQoci5vYmpJZCk7dmFyIGw9bz9yLmdldEFycmF5KG4pOnIuZ2V0KG4pO2lmKHZvaWQgMCE9PWwpe2lmKGMpcmV0dXJuIGw7dHx8KHQ9W10pLHQucHVzaChsKX1yPXIuZ2V0KCJQYXJlbnQiKX1yZXR1cm4gdH10LkRvY1N0YXRzPWs7dmFyIHg9WyIiLCJDIiwiQ0MiLCJDQ0MiLCJDRCIsIkQiLCJEQyIsIkRDQyIsIkRDQ0MiLCJDTSIsIiIsIlgiLCJYWCIsIlhYWCIsIlhMIiwiTCIsIkxYIiwiTFhYIiwiTFhYWCIsIlhDIiwiIiwiSSIsIklJIiwiSUlJIiwiSVYiLCJWIiwiVkkiLCJWSUkiLCJWSUlJIiwiSVgiXTtmdW5jdGlvbiBPKGUsdCxyLG4pe2lmKGUpe3ZhciBjPW51bGw7aWYoZSBpbnN0YW5jZW9mIGkuUmVmKXtpZihuLmhhcyhlKSlyZXR1cm47Yz1lLG4ucHV0KGMpLGU9dC5mZXRjaChlKX1pZihBcnJheS5pc0FycmF5KGUpKXt2YXIgdSxsPXMoZSk7dHJ5e2ZvcihsLnMoKTshKHU9bC5uKCkpLmRvbmU7KU8odS52YWx1ZSx0LHIsbil9Y2F0Y2goZSl7bC5lKGUpfWZpbmFsbHl7bC5mKCl9fWVsc2UgaWYoZSBpbnN0YW5jZW9mIGkuRGljdCl7aWYoKDAsaS5pc05hbWUpKGUuZ2V0KCJTIiksIkphdmFTY3JpcHQiKSl7dmFyIGYsaD1lLmdldCgiSlMiKTtoIGluc3RhbmNlb2Ygby5CYXNlU3RyZWFtP2Y9aC5nZXRTdHJpbmcoKToic3RyaW5nIj09dHlwZW9mIGgmJihmPWgpLChmPWYmJigwLGEuc3RyaW5nVG9QREZTdHJpbmcpKGYpLnJlcGxhY2UoL1x1MDAwMC9nLCIiKSkmJnIucHVzaChmKX1PKGUuZ2V0UmF3KCJOZXh0IiksdCxyLG4pfWMmJm4ucmVtb3ZlKGMpfX12YXIgQT17NjA6IiZsdDsiLDYyOiImZ3Q7IiwzODoiJmFtcDsiLDM0OiImcXVvdDsiLDM5OiImYXBvczsifX0sKGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LkJhc2VTdHJlYW09dm9pZCAwO3ZhciBuPXIoMik7ZnVuY3Rpb24gYShlKXtyZXR1cm4gYT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZX0sYShlKX1mdW5jdGlvbiBpKGUsdCl7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBuPXRbcl07bi5lbnVtZXJhYmxlPW4uZW51bWVyYWJsZXx8ITEsbi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIG4mJihuLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwodm9pZCAwLGk9ZnVuY3Rpb24oZSx0KXtpZigib2JqZWN0IiE9PWEoZSl8fG51bGw9PT1lKXJldHVybiBlO3ZhciByPWVbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1yKXt2YXIgbj1yLmNhbGwoZSwic3RyaW5nIik7aWYoIm9iamVjdCIhPT1hKG4pKXJldHVybiBuO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuIFN0cmluZyhlKX0obi5rZXkpLCJzeW1ib2wiPT09YShpKT9pOlN0cmluZyhpKSksbil9dmFyIGl9dmFyIG89ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7IWZ1bmN0aW9uKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsZSksdGhpcy5jb25zdHJ1Y3Rvcj09PWUmJigwLG4udW5yZWFjaGFibGUpKCJDYW5ub3QgaW5pdGlhbGl6ZSBCYXNlU3RyZWFtLiIpfXZhciB0LHI7cmV0dXJuIHQ9ZSwocj1be2tleToibGVuZ3RoIixnZXQ6ZnVuY3Rpb24oKXsoMCxuLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgZ2V0dGVyIGBsZW5ndGhgIGFjY2Vzc2VkIil9fSx7a2V5OiJpc0VtcHR5IixnZXQ6ZnVuY3Rpb24oKXsoMCxuLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgZ2V0dGVyIGBpc0VtcHR5YCBhY2Nlc3NlZCIpfX0se2tleToiaXNEYXRhTG9hZGVkIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywiaXNEYXRhTG9hZGVkIiwhMCl9fSx7a2V5OiJnZXRCeXRlIix2YWx1ZTpmdW5jdGlvbigpeygwLG4udW5yZWFjaGFibGUpKCJBYnN0cmFjdCBtZXRob2QgYGdldEJ5dGVgIGNhbGxlZCIpfX0se2tleToiZ2V0Qnl0ZXMiLHZhbHVlOmZ1bmN0aW9uKGUpeygwLG4udW5yZWFjaGFibGUpKCJBYnN0cmFjdCBtZXRob2QgYGdldEJ5dGVzYCBjYWxsZWQiKX19LHtrZXk6InBlZWtCeXRlIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuZ2V0Qnl0ZSgpO3JldHVybi0xIT09ZSYmdGhpcy5wb3MtLSxlfX0se2tleToicGVla0J5dGVzIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLmdldEJ5dGVzKGUpO3JldHVybiB0aGlzLnBvcy09dC5sZW5ndGgsdH19LHtrZXk6ImdldFVpbnQxNiIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmdldEJ5dGUoKSx0PXRoaXMuZ2V0Qnl0ZSgpO3JldHVybi0xPT09ZXx8LTE9PT10Py0xOihlPDw4KSt0fX0se2tleToiZ2V0SW50MzIiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuKHRoaXMuZ2V0Qnl0ZSgpPDwyNCkrKHRoaXMuZ2V0Qnl0ZSgpPDwxNikrKHRoaXMuZ2V0Qnl0ZSgpPDw4KSt0aGlzLmdldEJ5dGUoKX19LHtrZXk6ImdldEJ5dGVSYW5nZSIsdmFsdWU6ZnVuY3Rpb24oZSx0KXsoMCxuLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGBnZXRCeXRlUmFuZ2VgIGNhbGxlZCIpfX0se2tleToiZ2V0U3RyaW5nIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4oMCxuLmJ5dGVzVG9TdHJpbmcpKHRoaXMuZ2V0Qnl0ZXMoZSkpfX0se2tleToic2tpcCIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5wb3MrPWV8fDF9fSx7a2V5OiJyZXNldCIsdmFsdWU6ZnVuY3Rpb24oKXsoMCxuLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGByZXNldGAgY2FsbGVkIil9fSx7a2V5OiJtb3ZlU3RhcnQiLHZhbHVlOmZ1bmN0aW9uKCl7KDAsbi51bnJlYWNoYWJsZSkoIkFic3RyYWN0IG1ldGhvZCBgbW92ZVN0YXJ0YCBjYWxsZWQiKX19LHtrZXk6Im1ha2VTdWJTdHJlYW0iLHZhbHVlOmZ1bmN0aW9uKGUsdCl7KDAsbi51bnJlYWNoYWJsZSkoIkFic3RyYWN0IG1ldGhvZCBgbWFrZVN1YlN0cmVhbWAgY2FsbGVkIil9fSx7a2V5OiJnZXRCYXNlU3RyZWFtcyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH19XSkmJmkodC5wcm90b3R5cGUsciksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZX0oKTt0LkJhc2VTdHJlYW09b30sKGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0Lk5ldHdvcmtQZGZNYW5hZ2VyPXQuTG9jYWxQZGZNYW5hZ2VyPXZvaWQgMDt2YXIgbj1yKDIpLGE9cigxMzgpLGk9cigxMzUpLG89cigxNDApLHM9cigxMzkpO2Z1bmN0aW9uIGMoZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksdCYmdShlLHQpfWZ1bmN0aW9uIHUoZSx0KXtyZXR1cm4gdT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihlLHQpe3JldHVybiBlLl9fcHJvdG9fXz10LGV9LHUoZSx0KX1mdW5jdGlvbiBsKGUpe3ZhciB0PWZ1bmN0aW9uKCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3QpcmV0dXJuITE7aWYoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSwoZnVuY3Rpb24oKXt9KSkpLCEwfWNhdGNoKGUpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcixuPWgoZSk7aWYodCl7dmFyIGE9aCh0aGlzKS5jb25zdHJ1Y3RvcjtyPVJlZmxlY3QuY29uc3RydWN0KG4sYXJndW1lbnRzLGEpfWVsc2Ugcj1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZnVuY3Rpb24oZSx0KXtpZih0JiYoIm9iamVjdCI9PT1kKHQpfHwiZnVuY3Rpb24iPT10eXBlb2YgdCkpcmV0dXJuIHQ7aWYodm9pZCAwIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBmKGUpfSh0aGlzLHIpfX1mdW5jdGlvbiBmKGUpe2lmKHZvaWQgMD09PWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZX1mdW5jdGlvbiBoKGUpe3JldHVybiBoPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGUpe3JldHVybiBlLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpfSxoKGUpfWZ1bmN0aW9uIGQoZSl7cmV0dXJuIGQ9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGV9LGQoZSl9ZnVuY3Rpb24gcCgpe3A9ZnVuY3Rpb24oKXtyZXR1cm4gZX07dmFyIGU9e30sdD1PYmplY3QucHJvdG90eXBlLHI9dC5oYXNPd25Qcm9wZXJ0eSxuPU9iamVjdC5kZWZpbmVQcm9wZXJ0eXx8ZnVuY3Rpb24oZSx0LHIpe2VbdF09ci52YWx1ZX0sYT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sP1N5bWJvbDp7fSxpPWEuaXRlcmF0b3J8fCJAQGl0ZXJhdG9yIixvPWEuYXN5bmNJdGVyYXRvcnx8IkBAYXN5bmNJdGVyYXRvciIscz1hLnRvU3RyaW5nVGFnfHwiQEB0b1N0cmluZ1RhZyI7ZnVuY3Rpb24gYyhlLHQscil7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOnIsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KSxlW3RdfXRyeXtjKHt9LCIiKX1jYXRjaChlKXtjPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZVt0XT1yfX1mdW5jdGlvbiB1KGUsdCxyLGEpe3ZhciBpPXQmJnQucHJvdG90eXBlIGluc3RhbmNlb2YgaD90Omgsbz1PYmplY3QuY3JlYXRlKGkucHJvdG90eXBlKSxzPW5ldyBGKGF8fFtdKTtyZXR1cm4gbihvLCJfaW52b2tlIix7dmFsdWU6eChlLHIscyl9KSxvfWZ1bmN0aW9uIGwoZSx0LHIpe3RyeXtyZXR1cm57dHlwZToibm9ybWFsIixhcmc6ZS5jYWxsKHQscil9fWNhdGNoKGUpe3JldHVybnt0eXBlOiJ0aHJvdyIsYXJnOmV9fX1lLndyYXA9dTt2YXIgZj17fTtmdW5jdGlvbiBoKCl7fWZ1bmN0aW9uIGcoKXt9ZnVuY3Rpb24gdigpe312YXIgeT17fTtjKHksaSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKTt2YXIgbT1PYmplY3QuZ2V0UHJvdG90eXBlT2YsYj1tJiZtKG0oUChbXSkpKTtiJiZiIT09dCYmci5jYWxsKGIsaSkmJih5PWIpO3ZhciB3PXYucHJvdG90eXBlPWgucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoeSk7ZnVuY3Rpb24gayhlKXtbIm5leHQiLCJ0aHJvdyIsInJldHVybiJdLmZvckVhY2goKGZ1bmN0aW9uKHQpe2MoZSx0LChmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5faW52b2tlKHQsZSl9KSl9KSl9ZnVuY3Rpb24gUyhlLHQpe2Z1bmN0aW9uIGEobixpLG8scyl7dmFyIGM9bChlW25dLGUsaSk7aWYoInRocm93IiE9PWMudHlwZSl7dmFyIHU9Yy5hcmcsZj11LnZhbHVlO3JldHVybiBmJiYib2JqZWN0Ij09ZChmKSYmci5jYWxsKGYsIl9fYXdhaXQiKT90LnJlc29sdmUoZi5fX2F3YWl0KS50aGVuKChmdW5jdGlvbihlKXthKCJuZXh0IixlLG8scyl9KSwoZnVuY3Rpb24oZSl7YSgidGhyb3ciLGUsbyxzKX0pKTp0LnJlc29sdmUoZikudGhlbigoZnVuY3Rpb24oZSl7dS52YWx1ZT1lLG8odSl9KSwoZnVuY3Rpb24oZSl7cmV0dXJuIGEoInRocm93IixlLG8scyl9KSl9cyhjLmFyZyl9dmFyIGk7bih0aGlzLCJfaW52b2tlIix7dmFsdWU6ZnVuY3Rpb24oZSxyKXtmdW5jdGlvbiBuKCl7cmV0dXJuIG5ldyB0KChmdW5jdGlvbih0LG4pe2EoZSxyLHQsbil9KSl9cmV0dXJuIGk9aT9pLnRoZW4obixuKTpuKCl9fSl9ZnVuY3Rpb24geChlLHQscil7dmFyIG49InN1c3BlbmRlZFN0YXJ0IjtyZXR1cm4gZnVuY3Rpb24oYSxpKXtpZigiZXhlY3V0aW5nIj09PW4pdGhyb3cgbmV3IEVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nIik7aWYoImNvbXBsZXRlZCI9PT1uKXtpZigidGhyb3ciPT09YSl0aHJvdyBpO3JldHVybnt2YWx1ZTp2b2lkIDAsZG9uZTohMH19Zm9yKHIubWV0aG9kPWEsci5hcmc9aTs7KXt2YXIgbz1yLmRlbGVnYXRlO2lmKG8pe3ZhciBzPU8obyxyKTtpZihzKXtpZihzPT09Ziljb250aW51ZTtyZXR1cm4gc319aWYoIm5leHQiPT09ci5tZXRob2Qpci5zZW50PXIuX3NlbnQ9ci5hcmc7ZWxzZSBpZigidGhyb3ciPT09ci5tZXRob2Qpe2lmKCJzdXNwZW5kZWRTdGFydCI9PT1uKXRocm93IG49ImNvbXBsZXRlZCIsci5hcmc7ci5kaXNwYXRjaEV4Y2VwdGlvbihyLmFyZyl9ZWxzZSJyZXR1cm4iPT09ci5tZXRob2QmJnIuYWJydXB0KCJyZXR1cm4iLHIuYXJnKTtuPSJleGVjdXRpbmciO3ZhciBjPWwoZSx0LHIpO2lmKCJub3JtYWwiPT09Yy50eXBlKXtpZihuPXIuZG9uZT8iY29tcGxldGVkIjoic3VzcGVuZGVkWWllbGQiLGMuYXJnPT09Ziljb250aW51ZTtyZXR1cm57dmFsdWU6Yy5hcmcsZG9uZTpyLmRvbmV9fSJ0aHJvdyI9PT1jLnR5cGUmJihuPSJjb21wbGV0ZWQiLHIubWV0aG9kPSJ0aHJvdyIsci5hcmc9Yy5hcmcpfX19ZnVuY3Rpb24gTyhlLHQpe3ZhciByPXQubWV0aG9kLG49ZS5pdGVyYXRvcltyXTtpZih2b2lkIDA9PT1uKXJldHVybiB0LmRlbGVnYXRlPW51bGwsInRocm93Ij09PXImJmUuaXRlcmF0b3IucmV0dXJuJiYodC5tZXRob2Q9InJldHVybiIsdC5hcmc9dm9pZCAwLE8oZSx0KSwidGhyb3ciPT09dC5tZXRob2QpfHwicmV0dXJuIiE9PXImJih0Lm1ldGhvZD0idGhyb3ciLHQuYXJnPW5ldyBUeXBlRXJyb3IoIlRoZSBpdGVyYXRvciBkb2VzIG5vdCBwcm92aWRlIGEgJyIrcisiJyBtZXRob2QiKSksZjt2YXIgYT1sKG4sZS5pdGVyYXRvcix0LmFyZyk7aWYoInRocm93Ij09PWEudHlwZSlyZXR1cm4gdC5tZXRob2Q9InRocm93Iix0LmFyZz1hLmFyZyx0LmRlbGVnYXRlPW51bGwsZjt2YXIgaT1hLmFyZztyZXR1cm4gaT9pLmRvbmU/KHRbZS5yZXN1bHROYW1lXT1pLnZhbHVlLHQubmV4dD1lLm5leHRMb2MsInJldHVybiIhPT10Lm1ldGhvZCYmKHQubWV0aG9kPSJuZXh0Iix0LmFyZz12b2lkIDApLHQuZGVsZWdhdGU9bnVsbCxmKTppOih0Lm1ldGhvZD0idGhyb3ciLHQuYXJnPW5ldyBUeXBlRXJyb3IoIml0ZXJhdG9yIHJlc3VsdCBpcyBub3QgYW4gb2JqZWN0IiksdC5kZWxlZ2F0ZT1udWxsLGYpfWZ1bmN0aW9uIEEoZSl7dmFyIHQ9e3RyeUxvYzplWzBdfTsxIGluIGUmJih0LmNhdGNoTG9jPWVbMV0pLDIgaW4gZSYmKHQuZmluYWxseUxvYz1lWzJdLHQuYWZ0ZXJMb2M9ZVszXSksdGhpcy50cnlFbnRyaWVzLnB1c2godCl9ZnVuY3Rpb24gQyhlKXt2YXIgdD1lLmNvbXBsZXRpb258fHt9O3QudHlwZT0ibm9ybWFsIixkZWxldGUgdC5hcmcsZS5jb21wbGV0aW9uPXR9ZnVuY3Rpb24gRihlKXt0aGlzLnRyeUVudHJpZXM9W3t0cnlMb2M6InJvb3QifV0sZS5mb3JFYWNoKEEsdGhpcyksdGhpcy5yZXNldCghMCl9ZnVuY3Rpb24gUChlKXtpZihlKXt2YXIgdD1lW2ldO2lmKHQpcmV0dXJuIHQuY2FsbChlKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgZS5uZXh0KXJldHVybiBlO2lmKCFpc05hTihlLmxlbmd0aCkpe3ZhciBuPS0xLGE9ZnVuY3Rpb24gdCgpe2Zvcig7KytuPGUubGVuZ3RoOylpZihyLmNhbGwoZSxuKSlyZXR1cm4gdC52YWx1ZT1lW25dLHQuZG9uZT0hMSx0O3JldHVybiB0LnZhbHVlPXZvaWQgMCx0LmRvbmU9ITAsdH07cmV0dXJuIGEubmV4dD1hfX1yZXR1cm57bmV4dDpUfX1mdW5jdGlvbiBUKCl7cmV0dXJue3ZhbHVlOnZvaWQgMCxkb25lOiEwfX1yZXR1cm4gZy5wcm90b3R5cGU9dixuKHcsImNvbnN0cnVjdG9yIix7dmFsdWU6dixjb25maWd1cmFibGU6ITB9KSxuKHYsImNvbnN0cnVjdG9yIix7dmFsdWU6Zyxjb25maWd1cmFibGU6ITB9KSxnLmRpc3BsYXlOYW1lPWModixzLCJHZW5lcmF0b3JGdW5jdGlvbiIpLGUuaXNHZW5lcmF0b3JGdW5jdGlvbj1mdW5jdGlvbihlKXt2YXIgdD0iZnVuY3Rpb24iPT10eXBlb2YgZSYmZS5jb25zdHJ1Y3RvcjtyZXR1cm4hIXQmJih0PT09Z3x8IkdlbmVyYXRvckZ1bmN0aW9uIj09PSh0LmRpc3BsYXlOYW1lfHx0Lm5hbWUpKX0sZS5tYXJrPWZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsdik6KGUuX19wcm90b19fPXYsYyhlLHMsIkdlbmVyYXRvckZ1bmN0aW9uIikpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodyksZX0sZS5hd3JhcD1mdW5jdGlvbihlKXtyZXR1cm57X19hd2FpdDplfX0sayhTLnByb3RvdHlwZSksYyhTLnByb3RvdHlwZSxvLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpLGUuQXN5bmNJdGVyYXRvcj1TLGUuYXN5bmM9ZnVuY3Rpb24odCxyLG4sYSxpKXt2b2lkIDA9PT1pJiYoaT1Qcm9taXNlKTt2YXIgbz1uZXcgUyh1KHQscixuLGEpLGkpO3JldHVybiBlLmlzR2VuZXJhdG9yRnVuY3Rpb24ocik/bzpvLm5leHQoKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gZS5kb25lP2UudmFsdWU6by5uZXh0KCl9KSl9LGsodyksYyh3LHMsIkdlbmVyYXRvciIpLGModyxpLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpLGModywidG9TdHJpbmciLChmdW5jdGlvbigpe3JldHVybiJbb2JqZWN0IEdlbmVyYXRvcl0ifSkpLGUua2V5cz1mdW5jdGlvbihlKXt2YXIgdD1PYmplY3QoZSkscj1bXTtmb3IodmFyIG4gaW4gdClyLnB1c2gobik7cmV0dXJuIHIucmV2ZXJzZSgpLGZ1bmN0aW9uIGUoKXtmb3IoO3IubGVuZ3RoOyl7dmFyIG49ci5wb3AoKTtpZihuIGluIHQpcmV0dXJuIGUudmFsdWU9bixlLmRvbmU9ITEsZX1yZXR1cm4gZS5kb25lPSEwLGV9fSxlLnZhbHVlcz1QLEYucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpGLHJlc2V0OmZ1bmN0aW9uKGUpe2lmKHRoaXMucHJldj0wLHRoaXMubmV4dD0wLHRoaXMuc2VudD10aGlzLl9zZW50PXZvaWQgMCx0aGlzLmRvbmU9ITEsdGhpcy5kZWxlZ2F0ZT1udWxsLHRoaXMubWV0aG9kPSJuZXh0Iix0aGlzLmFyZz12b2lkIDAsdGhpcy50cnlFbnRyaWVzLmZvckVhY2goQyksIWUpZm9yKHZhciB0IGluIHRoaXMpInQiPT09dC5jaGFyQXQoMCkmJnIuY2FsbCh0aGlzLHQpJiYhaXNOYU4oK3Quc2xpY2UoMSkpJiYodGhpc1t0XT12b2lkIDApfSxzdG9wOmZ1bmN0aW9uKCl7dGhpcy5kb25lPSEwO3ZhciBlPXRoaXMudHJ5RW50cmllc1swXS5jb21wbGV0aW9uO2lmKCJ0aHJvdyI9PT1lLnR5cGUpdGhyb3cgZS5hcmc7cmV0dXJuIHRoaXMucnZhbH0sZGlzcGF0Y2hFeGNlcHRpb246ZnVuY3Rpb24oZSl7aWYodGhpcy5kb25lKXRocm93IGU7dmFyIHQ9dGhpcztmdW5jdGlvbiBuKHIsbil7cmV0dXJuIG8udHlwZT0idGhyb3ciLG8uYXJnPWUsdC5uZXh0PXIsbiYmKHQubWV0aG9kPSJuZXh0Iix0LmFyZz12b2lkIDApLCEhbn1mb3IodmFyIGE9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2E+PTA7LS1hKXt2YXIgaT10aGlzLnRyeUVudHJpZXNbYV0sbz1pLmNvbXBsZXRpb247aWYoInJvb3QiPT09aS50cnlMb2MpcmV0dXJuIG4oImVuZCIpO2lmKGkudHJ5TG9jPD10aGlzLnByZXYpe3ZhciBzPXIuY2FsbChpLCJjYXRjaExvYyIpLGM9ci5jYWxsKGksImZpbmFsbHlMb2MiKTtpZihzJiZjKXtpZih0aGlzLnByZXY8aS5jYXRjaExvYylyZXR1cm4gbihpLmNhdGNoTG9jLCEwKTtpZih0aGlzLnByZXY8aS5maW5hbGx5TG9jKXJldHVybiBuKGkuZmluYWxseUxvYyl9ZWxzZSBpZihzKXtpZih0aGlzLnByZXY8aS5jYXRjaExvYylyZXR1cm4gbihpLmNhdGNoTG9jLCEwKX1lbHNle2lmKCFjKXRocm93IG5ldyBFcnJvcigidHJ5IHN0YXRlbWVudCB3aXRob3V0IGNhdGNoIG9yIGZpbmFsbHkiKTtpZih0aGlzLnByZXY8aS5maW5hbGx5TG9jKXJldHVybiBuKGkuZmluYWxseUxvYyl9fX19LGFicnVwdDpmdW5jdGlvbihlLHQpe2Zvcih2YXIgbj10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7bj49MDstLW4pe3ZhciBhPXRoaXMudHJ5RW50cmllc1tuXTtpZihhLnRyeUxvYzw9dGhpcy5wcmV2JiZyLmNhbGwoYSwiZmluYWxseUxvYyIpJiZ0aGlzLnByZXY8YS5maW5hbGx5TG9jKXt2YXIgaT1hO2JyZWFrfX1pJiYoImJyZWFrIj09PWV8fCJjb250aW51ZSI9PT1lKSYmaS50cnlMb2M8PXQmJnQ8PWkuZmluYWxseUxvYyYmKGk9bnVsbCk7dmFyIG89aT9pLmNvbXBsZXRpb246e307cmV0dXJuIG8udHlwZT1lLG8uYXJnPXQsaT8odGhpcy5tZXRob2Q9Im5leHQiLHRoaXMubmV4dD1pLmZpbmFsbHlMb2MsZik6dGhpcy5jb21wbGV0ZShvKX0sY29tcGxldGU6ZnVuY3Rpb24oZSx0KXtpZigidGhyb3ciPT09ZS50eXBlKXRocm93IGUuYXJnO3JldHVybiJicmVhayI9PT1lLnR5cGV8fCJjb250aW51ZSI9PT1lLnR5cGU/dGhpcy5uZXh0PWUuYXJnOiJyZXR1cm4iPT09ZS50eXBlPyh0aGlzLnJ2YWw9dGhpcy5hcmc9ZS5hcmcsdGhpcy5tZXRob2Q9InJldHVybiIsdGhpcy5uZXh0PSJlbmQiKToibm9ybWFsIj09PWUudHlwZSYmdCYmKHRoaXMubmV4dD10KSxmfSxmaW5pc2g6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTt0Pj0wOy0tdCl7dmFyIHI9dGhpcy50cnlFbnRyaWVzW3RdO2lmKHIuZmluYWxseUxvYz09PWUpcmV0dXJuIHRoaXMuY29tcGxldGUoci5jb21wbGV0aW9uLHIuYWZ0ZXJMb2MpLEMociksZn19LGNhdGNoOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7dD49MDstLXQpe3ZhciByPXRoaXMudHJ5RW50cmllc1t0XTtpZihyLnRyeUxvYz09PWUpe3ZhciBuPXIuY29tcGxldGlvbjtpZigidGhyb3ciPT09bi50eXBlKXt2YXIgYT1uLmFyZztDKHIpfXJldHVybiBhfX10aHJvdyBuZXcgRXJyb3IoImlsbGVnYWwgY2F0Y2ggYXR0ZW1wdCIpfSxkZWxlZ2F0ZVlpZWxkOmZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZT17aXRlcmF0b3I6UChlKSxyZXN1bHROYW1lOnQsbmV4dExvYzpyfSwibmV4dCI9PT10aGlzLm1ldGhvZCYmKHRoaXMuYXJnPXZvaWQgMCksZn19LGV9ZnVuY3Rpb24gZyhlLHQscixuLGEsaSxvKXt0cnl7dmFyIHM9ZVtpXShvKSxjPXMudmFsdWV9Y2F0Y2goZSl7cmV0dXJuIHZvaWQgcihlKX1zLmRvbmU/dChjKTpQcm9taXNlLnJlc29sdmUoYykudGhlbihuLGEpfWZ1bmN0aW9uIHYoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxyPWFyZ3VtZW50cztyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKG4sYSl7dmFyIGk9ZS5hcHBseSh0LHIpO2Z1bmN0aW9uIG8oZSl7ZyhpLG4sYSxvLHMsIm5leHQiLGUpfWZ1bmN0aW9uIHMoZSl7ZyhpLG4sYSxvLHMsInRocm93IixlKX1vKHZvaWQgMCl9KSl9fWZ1bmN0aW9uIHkoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBtKGUsdCl7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBuPXRbcl07bi5lbnVtZXJhYmxlPW4uZW51bWVyYWJsZXx8ITEsbi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIG4mJihuLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwodm9pZCAwLGE9ZnVuY3Rpb24oZSx0KXtpZigib2JqZWN0IiE9PWQoZSl8fG51bGw9PT1lKXJldHVybiBlO3ZhciByPWVbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1yKXt2YXIgbj1yLmNhbGwoZSwic3RyaW5nIik7aWYoIm9iamVjdCIhPT1kKG4pKXJldHVybiBuO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuIFN0cmluZyhlKX0obi5rZXkpLCJzeW1ib2wiPT09ZChhKT9hOlN0cmluZyhhKSksbil9dmFyIGF9ZnVuY3Rpb24gYihlLHQscil7cmV0dXJuIHQmJm0oZS5wcm90b3R5cGUsdCksciYmbShlLHIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGV9ZnVuY3Rpb24gdyhlKXtpZihlKXt2YXIgdD0oMCxuLmNyZWF0ZVZhbGlkQWJzb2x1dGVVcmwpKGUpO2lmKHQpcmV0dXJuIHQuaHJlZjsoMCxuLndhcm4pKCdJbnZhbGlkIGFic29sdXRlIGRvY0Jhc2VVcmw6ICInLmNvbmNhdChlLCciLicpKX1yZXR1cm4gbnVsbH12YXIgaz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXt5KHRoaXMsZSksdGhpcy5jb25zdHJ1Y3Rvcj09PWUmJigwLG4udW5yZWFjaGFibGUpKCJDYW5ub3QgaW5pdGlhbGl6ZSBCYXNlUGRmTWFuYWdlci4iKX12YXIgdDtyZXR1cm4gYihlLFt7a2V5OiJkb2NJZCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RvY0lkfX0se2tleToicGFzc3dvcmQiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wYXNzd29yZH19LHtrZXk6ImRvY0Jhc2VVcmwiLGdldDpmdW5jdGlvbigpe3ZhciBlPXRoaXMucGRmRG9jdW1lbnQuY2F0YWxvZztyZXR1cm4oMCxuLnNoYWRvdykodGhpcywiZG9jQmFzZVVybCIsZS5iYXNlVXJsfHx0aGlzLl9kb2NCYXNlVXJsKX19LHtrZXk6ImVuc3VyZURvYyIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5lbnN1cmUodGhpcy5wZGZEb2N1bWVudCxlLHQpfX0se2tleToiZW5zdXJlWFJlZiIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5lbnN1cmUodGhpcy5wZGZEb2N1bWVudC54cmVmLGUsdCl9fSx7a2V5OiJlbnN1cmVDYXRhbG9nIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLmVuc3VyZSh0aGlzLnBkZkRvY3VtZW50LmNhdGFsb2csZSx0KX19LHtrZXk6ImdldFBhZ2UiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnBkZkRvY3VtZW50LmdldFBhZ2UoZSl9fSx7a2V5OiJmb250RmFsbGJhY2siLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMucGRmRG9jdW1lbnQuZm9udEZhbGxiYWNrKGUsdCl9fSx7a2V5OiJsb2FkWGZhRm9udHMiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMucGRmRG9jdW1lbnQubG9hZFhmYUZvbnRzKGUsdCl9fSx7a2V5OiJsb2FkWGZhSW1hZ2VzIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBkZkRvY3VtZW50LmxvYWRYZmFJbWFnZXMoKX19LHtrZXk6InNlcmlhbGl6ZVhmYURhdGEiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnBkZkRvY3VtZW50LnNlcmlhbGl6ZVhmYURhdGEoZSl9fSx7a2V5OiJjbGVhbnVwIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdJiZhcmd1bWVudHNbMF07cmV0dXJuIHRoaXMucGRmRG9jdW1lbnQuY2xlYW51cChlKX19LHtrZXk6ImVuc3VyZSIsdmFsdWU6KHQ9dihwKCkubWFyaygoZnVuY3Rpb24gZSh0LHIsYSl7cmV0dXJuIHAoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDooMCxuLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGBlbnN1cmVgIGNhbGxlZCIpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpKSxmdW5jdGlvbihlLHIsbil7cmV0dXJuIHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfSl9LHtrZXk6InJlcXVlc3RSYW5nZSIsdmFsdWU6ZnVuY3Rpb24oZSx0KXsoMCxuLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGByZXF1ZXN0UmFuZ2VgIGNhbGxlZCIpfX0se2tleToicmVxdWVzdExvYWRlZFN0cmVhbSIsdmFsdWU6ZnVuY3Rpb24oKXsoMCxuLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGByZXF1ZXN0TG9hZGVkU3RyZWFtYCBjYWxsZWQiKX19LHtrZXk6InNlbmRQcm9ncmVzc2l2ZURhdGEiLHZhbHVlOmZ1bmN0aW9uKGUpeygwLG4udW5yZWFjaGFibGUpKCJBYnN0cmFjdCBtZXRob2QgYHNlbmRQcm9ncmVzc2l2ZURhdGFgIGNhbGxlZCIpfX0se2tleToidXBkYXRlUGFzc3dvcmQiLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMuX3Bhc3N3b3JkPWV9fSx7a2V5OiJ0ZXJtaW5hdGUiLHZhbHVlOmZ1bmN0aW9uKGUpeygwLG4udW5yZWFjaGFibGUpKCJBYnN0cmFjdCBtZXRob2QgYHRlcm1pbmF0ZWAgY2FsbGVkIil9fV0pLGV9KCksUz1mdW5jdGlvbihlKXtjKG4sZSk7dmFyIHQscj1sKG4pO2Z1bmN0aW9uIG4oZSx0LGEsaSxjLHUsbCl7dmFyIGg7eSh0aGlzLG4pLChoPXIuY2FsbCh0aGlzKSkuX2RvY0lkPWUsaC5fcGFzc3dvcmQ9YSxoLl9kb2NCYXNlVXJsPXcobCksaC5tc2dIYW5kbGVyPWksaC5ldmFsdWF0b3JPcHRpb25zPWMsaC5lbmFibGVYZmE9dTt2YXIgZD1uZXcgcy5TdHJlYW0odCk7cmV0dXJuIGgucGRmRG9jdW1lbnQ9bmV3IG8uUERGRG9jdW1lbnQoZihoKSxkKSxoLl9sb2FkZWRTdHJlYW1Qcm9taXNlPVByb21pc2UucmVzb2x2ZShkKSxofXJldHVybiBiKG4sW3trZXk6ImVuc3VyZSIsdmFsdWU6KHQ9dihwKCkubWFyaygoZnVuY3Rpb24gZSh0LHIsbil7dmFyIGE7cmV0dXJuIHAoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDppZigiZnVuY3Rpb24iIT10eXBlb2YoYT10W3JdKSl7ZS5uZXh0PTM7YnJlYWt9cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGEuYXBwbHkodCxuKSk7Y2FzZSAzOnJldHVybiBlLmFicnVwdCgicmV0dXJuIixhKTtjYXNlIDQ6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSksZnVuY3Rpb24oZSxyLG4pe3JldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pfSx7a2V5OiJyZXF1ZXN0UmFuZ2UiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpfX0se2tleToicmVxdWVzdExvYWRlZFN0cmVhbSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbG9hZGVkU3RyZWFtUHJvbWlzZX19LHtrZXk6InRlcm1pbmF0ZSIsdmFsdWU6ZnVuY3Rpb24oZSl7fX1dKSxufShrKTt0LkxvY2FsUGRmTWFuYWdlcj1TO3ZhciB4PWZ1bmN0aW9uKGUpe2MobixlKTt2YXIgdCxyPWwobik7ZnVuY3Rpb24gbihlLHQsaSxzLGMsdSl7dmFyIGw7cmV0dXJuIHkodGhpcyxuKSwobD1yLmNhbGwodGhpcykpLl9kb2NJZD1lLGwuX3Bhc3N3b3JkPWkucGFzc3dvcmQsbC5fZG9jQmFzZVVybD13KHUpLGwubXNnSGFuZGxlcj1pLm1zZ0hhbmRsZXIsbC5ldmFsdWF0b3JPcHRpb25zPXMsbC5lbmFibGVYZmE9YyxsLnN0cmVhbU1hbmFnZXI9bmV3IGEuQ2h1bmtlZFN0cmVhbU1hbmFnZXIodCx7bXNnSGFuZGxlcjppLm1zZ0hhbmRsZXIsbGVuZ3RoOmkubGVuZ3RoLGRpc2FibGVBdXRvRmV0Y2g6aS5kaXNhYmxlQXV0b0ZldGNoLHJhbmdlQ2h1bmtTaXplOmkucmFuZ2VDaHVua1NpemV9KSxsLnBkZkRvY3VtZW50PW5ldyBvLlBERkRvY3VtZW50KGYobCksbC5zdHJlYW1NYW5hZ2VyLmdldFN0cmVhbSgpKSxsfXJldHVybiBiKG4sW3trZXk6ImVuc3VyZSIsdmFsdWU6KHQ9dihwKCkubWFyaygoZnVuY3Rpb24gZSh0LHIsbil7dmFyIGE7cmV0dXJuIHAoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDppZihlLnByZXY9MCwiZnVuY3Rpb24iIT10eXBlb2YoYT10W3JdKSl7ZS5uZXh0PTQ7YnJlYWt9cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGEuYXBwbHkodCxuKSk7Y2FzZSA0OnJldHVybiBlLmFicnVwdCgicmV0dXJuIixhKTtjYXNlIDc6aWYoZS5wcmV2PTcsZS50MD1lLmNhdGNoKDApLGUudDAgaW5zdGFuY2VvZiBpLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXtlLm5leHQ9MTE7YnJlYWt9dGhyb3cgZS50MDtjYXNlIDExOnJldHVybiBlLm5leHQ9MTMsdGhpcy5yZXF1ZXN0UmFuZ2UoZS50MC5iZWdpbixlLnQwLmVuZCk7Y2FzZSAxMzpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsdGhpcy5lbnN1cmUodCxyLG4pKTtjYXNlIDE0OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzLFtbMCw3XV0pfSkpKSxmdW5jdGlvbihlLHIsbil7cmV0dXJuIHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfSl9LHtrZXk6InJlcXVlc3RSYW5nZSIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5zdHJlYW1NYW5hZ2VyLnJlcXVlc3RSYW5nZShlLHQpfX0se2tleToicmVxdWVzdExvYWRlZFN0cmVhbSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSYmYXJndW1lbnRzWzBdO3JldHVybiB0aGlzLnN0cmVhbU1hbmFnZXIucmVxdWVzdEFsbENodW5rcyhlKX19LHtrZXk6InNlbmRQcm9ncmVzc2l2ZURhdGEiLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMuc3RyZWFtTWFuYWdlci5vblJlY2VpdmVEYXRhKHtjaHVuazplfSl9fSx7a2V5OiJ0ZXJtaW5hdGUiLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMuc3RyZWFtTWFuYWdlci5hYm9ydChlKX19XSksbn0oayk7dC5OZXR3b3JrUGRmTWFuYWdlcj14fSwoZSx0LHIpPT57ZnVuY3Rpb24gbihlKXtyZXR1cm4gbj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZX0sbihlKX1PYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5DaHVua2VkU3RyZWFtTWFuYWdlcj10LkNodW5rZWRTdHJlYW09dm9pZCAwO3ZhciBhPXIoMiksaT1yKDEzNSk7ZnVuY3Rpb24gbyhlLHQpe3ZhciByPSJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbIkBAaXRlcmF0b3IiXTtpZighcil7aWYoQXJyYXkuaXNBcnJheShlKXx8KHI9ZnVuY3Rpb24oZSx0KXtpZihlKXtpZigic3RyaW5nIj09dHlwZW9mIGUpcmV0dXJuIHMoZSx0KTt2YXIgcj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7cmV0dXJuIk9iamVjdCI9PT1yJiZlLmNvbnN0cnVjdG9yJiYocj1lLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09cnx8IlNldCI9PT1yP0FycmF5LmZyb20oZSk6IkFyZ3VtZW50cyI9PT1yfHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChyKT9zKGUsdCk6dm9pZCAwfX0oZSkpfHx0JiZlJiYibnVtYmVyIj09dHlwZW9mIGUubGVuZ3RoKXtyJiYoZT1yKTt2YXIgbj0wLGE9ZnVuY3Rpb24oKXt9O3JldHVybntzOmEsbjpmdW5jdGlvbigpe3JldHVybiBuPj1lLmxlbmd0aD97ZG9uZTohMH06e2RvbmU6ITEsdmFsdWU6ZVtuKytdfX0sZTpmdW5jdGlvbihlKXt0aHJvdyBlfSxmOmF9fXRocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBpdGVyYXRlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX12YXIgaSxvPSEwLGM9ITE7cmV0dXJue3M6ZnVuY3Rpb24oKXtyPXIuY2FsbChlKX0sbjpmdW5jdGlvbigpe3ZhciBlPXIubmV4dCgpO3JldHVybiBvPWUuZG9uZSxlfSxlOmZ1bmN0aW9uKGUpe2M9ITAsaT1lfSxmOmZ1bmN0aW9uKCl7dHJ5e298fG51bGw9PXIucmV0dXJufHxyLnJldHVybigpfWZpbmFsbHl7aWYoYyl0aHJvdyBpfX19fWZ1bmN0aW9uIHMoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIHI9MCxuPW5ldyBBcnJheSh0KTtyPHQ7cisrKW5bcl09ZVtyXTtyZXR1cm4gbn1mdW5jdGlvbiBjKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gdShlLHQpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgYT10W3JdO2EuZW51bWVyYWJsZT1hLmVudW1lcmFibGV8fCExLGEuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBhJiYoYS53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsKHZvaWQgMCxpPWZ1bmN0aW9uKGUsdCl7aWYoIm9iamVjdCIhPT1uKGUpfHxudWxsPT09ZSlyZXR1cm4gZTt2YXIgcj1lW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09cil7dmFyIGE9ci5jYWxsKGUsInN0cmluZyIpO2lmKCJvYmplY3QiIT09bihhKSlyZXR1cm4gYTt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybiBTdHJpbmcoZSl9KGEua2V5KSwic3ltYm9sIj09PW4oaSk/aTpTdHJpbmcoaSkpLGEpfXZhciBpfWZ1bmN0aW9uIGwoZSx0LHIpe3JldHVybiB0JiZ1KGUucHJvdG90eXBlLHQpLHImJnUoZSxyKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxlfWZ1bmN0aW9uIGYoZSx0KXtyZXR1cm4gZj1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihlLHQpe3JldHVybiBlLl9fcHJvdG9fXz10LGV9LGYoZSx0KX1mdW5jdGlvbiBoKGUpe3JldHVybiBoPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGUpe3JldHVybiBlLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpfSxoKGUpfXZhciBkPWZ1bmN0aW9uKGUpeyFmdW5jdGlvbihlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSx0JiZmKGUsdCl9KG8sZSk7dmFyIHQscixhPSh0PW8scj1mdW5jdGlvbigpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0KXJldHVybiExO2lmKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sKGZ1bmN0aW9uKCl7fSkpKSwhMH1jYXRjaChlKXtyZXR1cm4hMX19KCksZnVuY3Rpb24oKXt2YXIgZSxhPWgodCk7aWYocil7dmFyIGk9aCh0aGlzKS5jb25zdHJ1Y3RvcjtlPVJlZmxlY3QuY29uc3RydWN0KGEsYXJndW1lbnRzLGkpfWVsc2UgZT1hLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZnVuY3Rpb24oZSx0KXtpZih0JiYoIm9iamVjdCI9PT1uKHQpfHwiZnVuY3Rpb24iPT10eXBlb2YgdCkpcmV0dXJuIHQ7aWYodm9pZCAwIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBmdW5jdGlvbihlKXtpZih2b2lkIDA9PT1lKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGV9KGUpfSh0aGlzLGUpfSk7ZnVuY3Rpb24gbyhlLHQscil7dmFyIG47cmV0dXJuIGModGhpcyxvKSwobj1hLmNhbGwodGhpcyxuZXcgVWludDhBcnJheShlKSwwLGUsbnVsbCkpLmNodW5rU2l6ZT10LG4uX2xvYWRlZENodW5rcz1uZXcgU2V0LG4ubnVtQ2h1bmtzPU1hdGguY2VpbChlL3QpLG4ubWFuYWdlcj1yLG4ucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoPTAsbi5sYXN0U3VjY2Vzc2Z1bEVuc3VyZUJ5dGVDaHVuaz0tMSxufXJldHVybiBsKG8sW3trZXk6ImdldE1pc3NpbmdDaHVua3MiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciBlPVtdLHQ9MCxyPXRoaXMubnVtQ2h1bmtzO3Q8cjsrK3QpdGhpcy5fbG9hZGVkQ2h1bmtzLmhhcyh0KXx8ZS5wdXNoKHQpO3JldHVybiBlfX0se2tleToibnVtQ2h1bmtzTG9hZGVkIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbG9hZGVkQ2h1bmtzLnNpemV9fSx7a2V5OiJpc0RhdGFMb2FkZWQiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm51bUNodW5rc0xvYWRlZD09PXRoaXMubnVtQ2h1bmtzfX0se2tleToib25SZWNlaXZlRGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzLmNodW5rU2l6ZTtpZihlJXIhPTApdGhyb3cgbmV3IEVycm9yKCJCYWQgYmVnaW4gb2Zmc2V0OiAiLmNvbmNhdChlKSk7dmFyIG49ZSt0LmJ5dGVMZW5ndGg7aWYobiVyIT0wJiZuIT09dGhpcy5ieXRlcy5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJCYWQgZW5kIG9mZnNldDogIi5jb25jYXQobikpO3RoaXMuYnl0ZXMuc2V0KG5ldyBVaW50OEFycmF5KHQpLGUpO2Zvcih2YXIgYT1NYXRoLmZsb29yKGUvciksaT1NYXRoLmZsb29yKChuLTEpL3IpKzEsbz1hO288aTsrK28pdGhpcy5fbG9hZGVkQ2h1bmtzLmFkZChvKX19LHtrZXk6Im9uUmVjZWl2ZVByb2dyZXNzaXZlRGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGgscj1NYXRoLmZsb29yKHQvdGhpcy5jaHVua1NpemUpO3RoaXMuYnl0ZXMuc2V0KG5ldyBVaW50OEFycmF5KGUpLHQpLHQrPWUuYnl0ZUxlbmd0aCx0aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aD10O2Zvcih2YXIgbj10Pj10aGlzLmVuZD90aGlzLm51bUNodW5rczpNYXRoLmZsb29yKHQvdGhpcy5jaHVua1NpemUpLGE9cjthPG47KythKXRoaXMuX2xvYWRlZENodW5rcy5hZGQoYSl9fSx7a2V5OiJlbnN1cmVCeXRlIix2YWx1ZTpmdW5jdGlvbihlKXtpZighKGU8dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGgpKXt2YXIgdD1NYXRoLmZsb29yKGUvdGhpcy5jaHVua1NpemUpO2lmKCEodD50aGlzLm51bUNodW5rcykmJnQhPT10aGlzLmxhc3RTdWNjZXNzZnVsRW5zdXJlQnl0ZUNodW5rKXtpZighdGhpcy5fbG9hZGVkQ2h1bmtzLmhhcyh0KSl0aHJvdyBuZXcgaS5NaXNzaW5nRGF0YUV4Y2VwdGlvbihlLGUrMSk7dGhpcy5sYXN0U3VjY2Vzc2Z1bEVuc3VyZUJ5dGVDaHVuaz10fX19fSx7a2V5OiJlbnN1cmVSYW5nZSIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtpZighKGU+PXR8fHQ8PXRoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoKSl7dmFyIHI9TWF0aC5mbG9vcihlL3RoaXMuY2h1bmtTaXplKTtpZighKHI+dGhpcy5udW1DaHVua3MpKWZvcih2YXIgbj1NYXRoLm1pbihNYXRoLmZsb29yKCh0LTEpL3RoaXMuY2h1bmtTaXplKSsxLHRoaXMubnVtQ2h1bmtzKSxhPXI7YTxuOysrYSlpZighdGhpcy5fbG9hZGVkQ2h1bmtzLmhhcyhhKSl0aHJvdyBuZXcgaS5NaXNzaW5nRGF0YUV4Y2VwdGlvbihlLHQpfX19LHtrZXk6Im5leHRFbXB0eUNodW5rIix2YWx1ZTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpcy5udW1DaHVua3Mscj0wO3I8dDsrK3Ipe3ZhciBuPShlK3IpJXQ7aWYoIXRoaXMuX2xvYWRlZENodW5rcy5oYXMobikpcmV0dXJuIG59cmV0dXJuIG51bGx9fSx7a2V5OiJoYXNDaHVuayIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX2xvYWRlZENodW5rcy5oYXMoZSl9fSx7a2V5OiJnZXRCeXRlIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMucG9zO3JldHVybiBlPj10aGlzLmVuZD8tMTooZT49dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGgmJnRoaXMuZW5zdXJlQnl0ZShlKSx0aGlzLmJ5dGVzW3RoaXMucG9zKytdKX19LHtrZXk6ImdldEJ5dGVzIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLmJ5dGVzLHI9dGhpcy5wb3Msbj10aGlzLmVuZDtpZighZSlyZXR1cm4gbj50aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aCYmdGhpcy5lbnN1cmVSYW5nZShyLG4pLHQuc3ViYXJyYXkocixuKTt2YXIgYT1yK2U7cmV0dXJuIGE+biYmKGE9biksYT50aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aCYmdGhpcy5lbnN1cmVSYW5nZShyLGEpLHRoaXMucG9zPWEsdC5zdWJhcnJheShyLGEpfX0se2tleToiZ2V0Qnl0ZVJhbmdlIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiBlPDAmJihlPTApLHQ+dGhpcy5lbmQmJih0PXRoaXMuZW5kKSx0PnRoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoJiZ0aGlzLmVuc3VyZVJhbmdlKGUsdCksdGhpcy5ieXRlcy5zdWJhcnJheShlLHQpfX0se2tleToibWFrZVN1YlN0cmVhbSIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgcj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06bnVsbDtmdW5jdGlvbiBuKCl7fXQ/ZSt0PnRoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoJiZ0aGlzLmVuc3VyZVJhbmdlKGUsZSt0KTplPj10aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aCYmdGhpcy5lbnN1cmVCeXRlKGUpLG4ucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodGhpcyksbi5wcm90b3R5cGUuZ2V0TWlzc2luZ0NodW5rcz1mdW5jdGlvbigpe2Zvcih2YXIgZT10aGlzLmNodW5rU2l6ZSx0PU1hdGguZmxvb3IodGhpcy5zdGFydC9lKSxyPU1hdGguZmxvb3IoKHRoaXMuZW5kLTEpL2UpKzEsbj1bXSxhPXQ7YTxyOysrYSl0aGlzLl9sb2FkZWRDaHVua3MuaGFzKGEpfHxuLnB1c2goYSk7cmV0dXJuIG59LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLnByb3RvdHlwZSwiaXNEYXRhTG9hZGVkIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubnVtQ2h1bmtzTG9hZGVkPT09dGhpcy5udW1DaHVua3N8fDA9PT10aGlzLmdldE1pc3NpbmdDaHVua3MoKS5sZW5ndGh9LGNvbmZpZ3VyYWJsZTohMH0pO3ZhciBhPW5ldyBuO3JldHVybiBhLnBvcz1hLnN0YXJ0PWUsYS5lbmQ9ZSt0fHx0aGlzLmVuZCxhLmRpY3Q9cixhfX0se2tleToiZ2V0QmFzZVN0cmVhbXMiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuW3RoaXNdfX1dKSxvfShyKDEzOSkuU3RyZWFtKTt0LkNodW5rZWRTdHJlYW09ZDt2YXIgcD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCxyKXtjKHRoaXMsZSksdGhpcy5sZW5ndGg9ci5sZW5ndGgsdGhpcy5jaHVua1NpemU9ci5yYW5nZUNodW5rU2l6ZSx0aGlzLnN0cmVhbT1uZXcgZCh0aGlzLmxlbmd0aCx0aGlzLmNodW5rU2l6ZSx0aGlzKSx0aGlzLnBkZk5ldHdvcmtTdHJlYW09dCx0aGlzLmRpc2FibGVBdXRvRmV0Y2g9ci5kaXNhYmxlQXV0b0ZldGNoLHRoaXMubXNnSGFuZGxlcj1yLm1zZ0hhbmRsZXIsdGhpcy5jdXJyUmVxdWVzdElkPTAsdGhpcy5fY2h1bmtzTmVlZGVkQnlSZXF1ZXN0PW5ldyBNYXAsdGhpcy5fcmVxdWVzdHNCeUNodW5rPW5ldyBNYXAsdGhpcy5fcHJvbWlzZXNCeVJlcXVlc3Q9bmV3IE1hcCx0aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aD0wLHRoaXMuYWJvcnRlZD0hMSx0aGlzLl9sb2FkZWRTdHJlYW1DYXBhYmlsaXR5PSgwLGEuY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkpKCl9cmV0dXJuIGwoZSxbe2tleToic2VuZFJlcXVlc3QiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIHI9dGhpcyxuPXRoaXMucGRmTmV0d29ya1N0cmVhbS5nZXRSYW5nZVJlYWRlcihlLHQpO24uaXNTdHJlYW1pbmdTdXBwb3J0ZWR8fChuLm9uUHJvZ3Jlc3M9dGhpcy5vblByb2dyZXNzLmJpbmQodGhpcykpO3ZhciBpPVtdLG89MDtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKGUsdCl7bi5yZWFkKCkudGhlbigoZnVuY3Rpb24gcyhjKXt0cnl7aWYoIWMuZG9uZSl7dmFyIHU9Yy52YWx1ZTtyZXR1cm4gaS5wdXNoKHUpLG8rPSgwLGEuYXJyYXlCeXRlTGVuZ3RoKSh1KSxuLmlzU3RyZWFtaW5nU3VwcG9ydGVkJiZyLm9uUHJvZ3Jlc3Moe2xvYWRlZDpvfSksdm9pZCBuLnJlYWQoKS50aGVuKHMsdCl9dmFyIGw9KDAsYS5hcnJheXNUb0J5dGVzKShpKTtpPW51bGwsZShsKX1jYXRjaChlKXt0KGUpfX0pLHQpfSkpLnRoZW4oKGZ1bmN0aW9uKHQpe3IuYWJvcnRlZHx8ci5vblJlY2VpdmVEYXRhKHtjaHVuazp0LGJlZ2luOmV9KX0pKX19LHtrZXk6InJlcXVlc3RBbGxDaHVua3MiLHZhbHVlOmZ1bmN0aW9uKCl7aWYoIShhcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSYmYXJndW1lbnRzWzBdKSl7dmFyIGU9dGhpcy5zdHJlYW0uZ2V0TWlzc2luZ0NodW5rcygpO3RoaXMuX3JlcXVlc3RDaHVua3MoZSl9cmV0dXJuIHRoaXMuX2xvYWRlZFN0cmVhbUNhcGFiaWxpdHkucHJvbWlzZX19LHtrZXk6Il9yZXF1ZXN0Q2h1bmtzIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLHI9dGhpcy5jdXJyUmVxdWVzdElkKyssbj1uZXcgU2V0O3RoaXMuX2NodW5rc05lZWRlZEJ5UmVxdWVzdC5zZXQocixuKTt2YXIgaSxzPW8oZSk7dHJ5e2ZvcihzLnMoKTshKGk9cy5uKCkpLmRvbmU7KXt2YXIgYz1pLnZhbHVlO3RoaXMuc3RyZWFtLmhhc0NodW5rKGMpfHxuLmFkZChjKX19Y2F0Y2goZSl7cy5lKGUpfWZpbmFsbHl7cy5mKCl9aWYoMD09PW4uc2l6ZSlyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7dmFyIHU9KDAsYS5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTt0aGlzLl9wcm9taXNlc0J5UmVxdWVzdC5zZXQocix1KTt2YXIgbCxmPVtdLGg9byhuKTt0cnl7Zm9yKGgucygpOyEobD1oLm4oKSkuZG9uZTspe3ZhciBkPWwudmFsdWUscD10aGlzLl9yZXF1ZXN0c0J5Q2h1bmsuZ2V0KGQpO3B8fChwPVtdLHRoaXMuX3JlcXVlc3RzQnlDaHVuay5zZXQoZCxwKSxmLnB1c2goZCkpLHAucHVzaChyKX19Y2F0Y2goZSl7aC5lKGUpfWZpbmFsbHl7aC5mKCl9aWYoZi5sZW5ndGg+MCl7dmFyIGcsdj1vKHRoaXMuZ3JvdXBDaHVua3MoZikpO3RyeXtmb3Iodi5zKCk7IShnPXYubigpKS5kb25lOyl7dmFyIHk9Zy52YWx1ZSxtPXkuYmVnaW5DaHVuayp0aGlzLmNodW5rU2l6ZSxiPU1hdGgubWluKHkuZW5kQ2h1bmsqdGhpcy5jaHVua1NpemUsdGhpcy5sZW5ndGgpO3RoaXMuc2VuZFJlcXVlc3QobSxiKS5jYXRjaCh1LnJlamVjdCl9fWNhdGNoKGUpe3YuZShlKX1maW5hbGx5e3YuZigpfX1yZXR1cm4gdS5wcm9taXNlLmNhdGNoKChmdW5jdGlvbihlKXtpZighdC5hYm9ydGVkKXRocm93IGV9KSl9fSx7a2V5OiJnZXRTdHJlYW0iLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3RyZWFtfX0se2tleToicmVxdWVzdFJhbmdlIix2YWx1ZTpmdW5jdGlvbihlLHQpe3Q9TWF0aC5taW4odCx0aGlzLmxlbmd0aCk7Zm9yKHZhciByPXRoaXMuZ2V0QmVnaW5DaHVuayhlKSxuPXRoaXMuZ2V0RW5kQ2h1bmsodCksYT1bXSxpPXI7aTxuOysraSlhLnB1c2goaSk7cmV0dXJuIHRoaXMuX3JlcXVlc3RDaHVua3MoYSl9fSx7a2V5OiJyZXF1ZXN0UmFuZ2VzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlLHQ9W10scj1vKGFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpbXSk7dHJ5e2ZvcihyLnMoKTshKGU9ci5uKCkpLmRvbmU7KWZvcih2YXIgbj1lLnZhbHVlLGE9dGhpcy5nZXRCZWdpbkNodW5rKG4uYmVnaW4pLGk9dGhpcy5nZXRFbmRDaHVuayhuLmVuZCkscz1hO3M8aTsrK3MpdC5pbmNsdWRlcyhzKXx8dC5wdXNoKHMpfWNhdGNoKGUpe3IuZShlKX1maW5hbGx5e3IuZigpfXJldHVybiB0LnNvcnQoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUtdH0pKSx0aGlzLl9yZXF1ZXN0Q2h1bmtzKHQpfX0se2tleToiZ3JvdXBDaHVua3MiLHZhbHVlOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1bXSxyPS0xLG49LTEsYT0wLGk9ZS5sZW5ndGg7YTxpOysrYSl7dmFyIG89ZVthXTtyPDAmJihyPW8pLG4+PTAmJm4rMSE9PW8mJih0LnB1c2goe2JlZ2luQ2h1bms6cixlbmRDaHVuazpuKzF9KSxyPW8pLGErMT09PWUubGVuZ3RoJiZ0LnB1c2goe2JlZ2luQ2h1bms6cixlbmRDaHVuazpvKzF9KSxuPW99cmV0dXJuIHR9fSx7a2V5OiJvblByb2dyZXNzIix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLm1zZ0hhbmRsZXIuc2VuZCgiRG9jUHJvZ3Jlc3MiLHtsb2FkZWQ6dGhpcy5zdHJlYW0ubnVtQ2h1bmtzTG9hZGVkKnRoaXMuY2h1bmtTaXplK2UubG9hZGVkLHRvdGFsOnRoaXMubGVuZ3RofSl9fSx7a2V5OiJvblJlY2VpdmVEYXRhIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1lLmNodW5rLHI9dm9pZCAwPT09ZS5iZWdpbixuPXI/dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGg6ZS5iZWdpbixhPW4rdC5ieXRlTGVuZ3RoLGk9TWF0aC5mbG9vcihuL3RoaXMuY2h1bmtTaXplKSxzPWE8dGhpcy5sZW5ndGg/TWF0aC5mbG9vcihhL3RoaXMuY2h1bmtTaXplKTpNYXRoLmNlaWwoYS90aGlzLmNodW5rU2l6ZSk7cj8odGhpcy5zdHJlYW0ub25SZWNlaXZlUHJvZ3Jlc3NpdmVEYXRhKHQpLHRoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoPWEpOnRoaXMuc3RyZWFtLm9uUmVjZWl2ZURhdGEobix0KSx0aGlzLnN0cmVhbS5pc0RhdGFMb2FkZWQmJnRoaXMuX2xvYWRlZFN0cmVhbUNhcGFiaWxpdHkucmVzb2x2ZSh0aGlzLnN0cmVhbSk7Zm9yKHZhciBjPVtdLHU9aTt1PHM7Kyt1KXt2YXIgbD10aGlzLl9yZXF1ZXN0c0J5Q2h1bmsuZ2V0KHUpO2lmKGwpe3RoaXMuX3JlcXVlc3RzQnlDaHVuay5kZWxldGUodSk7dmFyIGYsaD1vKGwpO3RyeXtmb3IoaC5zKCk7IShmPWgubigpKS5kb25lOyl7dmFyIGQ9Zi52YWx1ZSxwPXRoaXMuX2NodW5rc05lZWRlZEJ5UmVxdWVzdC5nZXQoZCk7cC5oYXModSkmJnAuZGVsZXRlKHUpLHAuc2l6ZT4wfHxjLnB1c2goZCl9fWNhdGNoKGUpe2guZShlKX1maW5hbGx5e2guZigpfX19aWYoIXRoaXMuZGlzYWJsZUF1dG9GZXRjaCYmMD09PXRoaXMuX3JlcXVlc3RzQnlDaHVuay5zaXplKXt2YXIgZztpZigxPT09dGhpcy5zdHJlYW0ubnVtQ2h1bmtzTG9hZGVkKXt2YXIgdj10aGlzLnN0cmVhbS5udW1DaHVua3MtMTt0aGlzLnN0cmVhbS5oYXNDaHVuayh2KXx8KGc9dil9ZWxzZSBnPXRoaXMuc3RyZWFtLm5leHRFbXB0eUNodW5rKHMpO051bWJlci5pc0ludGVnZXIoZykmJnRoaXMuX3JlcXVlc3RDaHVua3MoW2ddKX1mb3IodmFyIHk9MCxtPWM7eTxtLmxlbmd0aDt5Kyspe3ZhciBiPW1beV0sdz10aGlzLl9wcm9taXNlc0J5UmVxdWVzdC5nZXQoYik7dGhpcy5fcHJvbWlzZXNCeVJlcXVlc3QuZGVsZXRlKGIpLHcucmVzb2x2ZSgpfXRoaXMubXNnSGFuZGxlci5zZW5kKCJEb2NQcm9ncmVzcyIse2xvYWRlZDp0aGlzLnN0cmVhbS5udW1DaHVua3NMb2FkZWQqdGhpcy5jaHVua1NpemUsdG90YWw6dGhpcy5sZW5ndGh9KX19LHtrZXk6Im9uRXJyb3IiLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMuX2xvYWRlZFN0cmVhbUNhcGFiaWxpdHkucmVqZWN0KGUpfX0se2tleToiZ2V0QmVnaW5DaHVuayIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGguZmxvb3IoZS90aGlzLmNodW5rU2l6ZSl9fSx7a2V5OiJnZXRFbmRDaHVuayIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGguZmxvb3IoKGUtMSkvdGhpcy5jaHVua1NpemUpKzF9fSx7a2V5OiJhYm9ydCIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5hYm9ydGVkPSEwLHRoaXMucGRmTmV0d29ya1N0cmVhbSYmdGhpcy5wZGZOZXR3b3JrU3RyZWFtLmNhbmNlbEFsbFJlcXVlc3RzKGUpO3ZhciB0LHI9byh0aGlzLl9wcm9taXNlc0J5UmVxdWVzdC52YWx1ZXMoKSk7dHJ5e2ZvcihyLnMoKTshKHQ9ci5uKCkpLmRvbmU7KXQudmFsdWUucmVqZWN0KGUpfWNhdGNoKGUpe3IuZShlKX1maW5hbGx5e3IuZigpfX19XSksZX0oKTt0LkNodW5rZWRTdHJlYW1NYW5hZ2VyPXB9LChlLHQscik9PntmdW5jdGlvbiBuKGUpe3JldHVybiBuPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSxuKGUpfU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LlN0cmluZ1N0cmVhbT10LlN0cmVhbT10Lk51bGxTdHJlYW09dm9pZCAwO3ZhciBhPXIoMTM2KSxpPXIoMik7ZnVuY3Rpb24gbyhlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIHMoZSx0KXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIGE9dFtyXTthLmVudW1lcmFibGU9YS5lbnVtZXJhYmxlfHwhMSxhLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gYSYmKGEud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCh2b2lkIDAsaT1mdW5jdGlvbihlLHQpe2lmKCJvYmplY3QiIT09bihlKXx8bnVsbD09PWUpcmV0dXJuIGU7dmFyIHI9ZVtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PXIpe3ZhciBhPXIuY2FsbChlLCJzdHJpbmciKTtpZigib2JqZWN0IiE9PW4oYSkpcmV0dXJuIGE7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4gU3RyaW5nKGUpfShhLmtleSksInN5bWJvbCI9PT1uKGkpP2k6U3RyaW5nKGkpKSxhKX12YXIgaX1mdW5jdGlvbiBjKGUsdCxyKXtyZXR1cm4gdCYmcyhlLnByb3RvdHlwZSx0KSxyJiZzKGUsciksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZX1mdW5jdGlvbiB1KGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLHQmJmwoZSx0KX1mdW5jdGlvbiBsKGUsdCl7cmV0dXJuIGw9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5fX3Byb3RvX189dCxlfSxsKGUsdCl9ZnVuY3Rpb24gZihlKXt2YXIgdD1mdW5jdGlvbigpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0KXJldHVybiExO2lmKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sKGZ1bmN0aW9uKCl7fSkpKSwhMH1jYXRjaChlKXtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHIsYT1oKGUpO2lmKHQpe3ZhciBpPWgodGhpcykuY29uc3RydWN0b3I7cj1SZWZsZWN0LmNvbnN0cnVjdChhLGFyZ3VtZW50cyxpKX1lbHNlIHI9YS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYodCYmKCJvYmplY3QiPT09bih0KXx8ImZ1bmN0aW9uIj09dHlwZW9mIHQpKXJldHVybiB0O2lmKHZvaWQgMCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24oZSl7aWYodm9pZCAwPT09ZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBlfShlKX0odGhpcyxyKX19ZnVuY3Rpb24gaChlKXtyZXR1cm4gaD1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihlKXtyZXR1cm4gZS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihlKX0saChlKX12YXIgZD1mdW5jdGlvbihlKXt1KHIsZSk7dmFyIHQ9ZihyKTtmdW5jdGlvbiByKGUsbixhLGkpe3ZhciBzO3JldHVybiBvKHRoaXMsciksKHM9dC5jYWxsKHRoaXMpKS5ieXRlcz1lIGluc3RhbmNlb2YgVWludDhBcnJheT9lOm5ldyBVaW50OEFycmF5KGUpLHMuc3RhcnQ9bnx8MCxzLnBvcz1zLnN0YXJ0LHMuZW5kPW4rYXx8cy5ieXRlcy5sZW5ndGgscy5kaWN0PWksc31yZXR1cm4gYyhyLFt7a2V5OiJsZW5ndGgiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVuZC10aGlzLnN0YXJ0fX0se2tleToiaXNFbXB0eSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLmxlbmd0aH19LHtrZXk6ImdldEJ5dGUiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucG9zPj10aGlzLmVuZD8tMTp0aGlzLmJ5dGVzW3RoaXMucG9zKytdfX0se2tleToiZ2V0Qnl0ZXMiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuYnl0ZXMscj10aGlzLnBvcyxuPXRoaXMuZW5kO2lmKCFlKXJldHVybiB0LnN1YmFycmF5KHIsbik7dmFyIGE9citlO3JldHVybiBhPm4mJihhPW4pLHRoaXMucG9zPWEsdC5zdWJhcnJheShyLGEpfX0se2tleToiZ2V0Qnl0ZVJhbmdlIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiBlPDAmJihlPTApLHQ+dGhpcy5lbmQmJih0PXRoaXMuZW5kKSx0aGlzLmJ5dGVzLnN1YmFycmF5KGUsdCl9fSx7a2V5OiJyZXNldCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnBvcz10aGlzLnN0YXJ0fX0se2tleToibW92ZVN0YXJ0Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuc3RhcnQ9dGhpcy5wb3N9fSx7a2V5OiJtYWtlU3ViU3RyZWFtIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBuPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTpudWxsO3JldHVybiBuZXcgcih0aGlzLmJ5dGVzLmJ1ZmZlcixlLHQsbil9fV0pLHJ9KGEuQmFzZVN0cmVhbSk7dC5TdHJlYW09ZDt2YXIgcD1mdW5jdGlvbihlKXt1KHIsZSk7dmFyIHQ9ZihyKTtmdW5jdGlvbiByKGUpe3JldHVybiBvKHRoaXMsciksdC5jYWxsKHRoaXMsKDAsaS5zdHJpbmdUb0J5dGVzKShlKSl9cmV0dXJuIGMocil9KGQpO3QuU3RyaW5nU3RyZWFtPXA7dmFyIGc9ZnVuY3Rpb24oZSl7dShyLGUpO3ZhciB0PWYocik7ZnVuY3Rpb24gcigpe3JldHVybiBvKHRoaXMsciksdC5jYWxsKHRoaXMsbmV3IFVpbnQ4QXJyYXkoMCkpfXJldHVybiBjKHIpfShkKTt0Lk51bGxTdHJlYW09Z30sKGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LlBhZ2U9dC5QREZEb2N1bWVudD12b2lkIDA7dmFyIG49cigxNDEpLGE9cigyKSxpPXIoMTM1KSxvPXIoMTM0KSxzPXIoMTgwKSxjPXIoMTM2KSx1PXIoMTk2KSxsPXIoMTk4KSxmPXIoMjAwKSxoPXIoMjI5KSxkPXIoMTQ2KSxwPXIoMTM5KSxnPXIoMjA0KSx2PXIoMTkxKSx5PXIoMTQ0KSxtPXIoMTQ4KSxiPXIoMjAzKSx3PXIoMTk0KSxrPXIoMjA1KSxTPXIoMjMwKTtmdW5jdGlvbiB4KGUpe3JldHVybiB4PSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSx4KGUpfWZ1bmN0aW9uIE8oZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIHI9bnVsbD09ZT9udWxsOiJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbIkBAaXRlcmF0b3IiXTtpZihudWxsIT1yKXt2YXIgbixhLGksbyxzPVtdLGM9ITAsdT0hMTt0cnl7aWYoaT0ocj1yLmNhbGwoZSkpLm5leHQsMD09PXQpe2lmKE9iamVjdChyKSE9PXIpcmV0dXJuO2M9ITF9ZWxzZSBmb3IoOyEoYz0obj1pLmNhbGwocikpLmRvbmUpJiYocy5wdXNoKG4udmFsdWUpLHMubGVuZ3RoIT09dCk7Yz0hMCk7fWNhdGNoKGUpe3U9ITAsYT1lfWZpbmFsbHl7dHJ5e2lmKCFjJiZudWxsIT1yLnJldHVybiYmKG89ci5yZXR1cm4oKSxPYmplY3QobykhPT1vKSlyZXR1cm59ZmluYWxseXtpZih1KXRocm93IGF9fXJldHVybiBzfX0oZSx0KXx8UChlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gQSgpe0E9ZnVuY3Rpb24oKXtyZXR1cm4gZX07dmFyIGU9e30sdD1PYmplY3QucHJvdG90eXBlLHI9dC5oYXNPd25Qcm9wZXJ0eSxuPU9iamVjdC5kZWZpbmVQcm9wZXJ0eXx8ZnVuY3Rpb24oZSx0LHIpe2VbdF09ci52YWx1ZX0sYT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sP1N5bWJvbDp7fSxpPWEuaXRlcmF0b3J8fCJAQGl0ZXJhdG9yIixvPWEuYXN5bmNJdGVyYXRvcnx8IkBAYXN5bmNJdGVyYXRvciIscz1hLnRvU3RyaW5nVGFnfHwiQEB0b1N0cmluZ1RhZyI7ZnVuY3Rpb24gYyhlLHQscil7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOnIsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KSxlW3RdfXRyeXtjKHt9LCIiKX1jYXRjaChlKXtjPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZVt0XT1yfX1mdW5jdGlvbiB1KGUsdCxyLGEpe3ZhciBpPXQmJnQucHJvdG90eXBlIGluc3RhbmNlb2YgaD90Omgsbz1PYmplY3QuY3JlYXRlKGkucHJvdG90eXBlKSxzPW5ldyBGKGF8fFtdKTtyZXR1cm4gbihvLCJfaW52b2tlIix7dmFsdWU6ayhlLHIscyl9KSxvfWZ1bmN0aW9uIGwoZSx0LHIpe3RyeXtyZXR1cm57dHlwZToibm9ybWFsIixhcmc6ZS5jYWxsKHQscil9fWNhdGNoKGUpe3JldHVybnt0eXBlOiJ0aHJvdyIsYXJnOmV9fX1lLndyYXA9dTt2YXIgZj17fTtmdW5jdGlvbiBoKCl7fWZ1bmN0aW9uIGQoKXt9ZnVuY3Rpb24gcCgpe312YXIgZz17fTtjKGcsaSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKTt2YXIgdj1PYmplY3QuZ2V0UHJvdG90eXBlT2YseT12JiZ2KHYoUChbXSkpKTt5JiZ5IT09dCYmci5jYWxsKHksaSkmJihnPXkpO3ZhciBtPXAucHJvdG90eXBlPWgucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZyk7ZnVuY3Rpb24gYihlKXtbIm5leHQiLCJ0aHJvdyIsInJldHVybiJdLmZvckVhY2goKGZ1bmN0aW9uKHQpe2MoZSx0LChmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5faW52b2tlKHQsZSl9KSl9KSl9ZnVuY3Rpb24gdyhlLHQpe2Z1bmN0aW9uIGEobixpLG8scyl7dmFyIGM9bChlW25dLGUsaSk7aWYoInRocm93IiE9PWMudHlwZSl7dmFyIHU9Yy5hcmcsZj11LnZhbHVlO3JldHVybiBmJiYib2JqZWN0Ij09eChmKSYmci5jYWxsKGYsIl9fYXdhaXQiKT90LnJlc29sdmUoZi5fX2F3YWl0KS50aGVuKChmdW5jdGlvbihlKXthKCJuZXh0IixlLG8scyl9KSwoZnVuY3Rpb24oZSl7YSgidGhyb3ciLGUsbyxzKX0pKTp0LnJlc29sdmUoZikudGhlbigoZnVuY3Rpb24oZSl7dS52YWx1ZT1lLG8odSl9KSwoZnVuY3Rpb24oZSl7cmV0dXJuIGEoInRocm93IixlLG8scyl9KSl9cyhjLmFyZyl9dmFyIGk7bih0aGlzLCJfaW52b2tlIix7dmFsdWU6ZnVuY3Rpb24oZSxyKXtmdW5jdGlvbiBuKCl7cmV0dXJuIG5ldyB0KChmdW5jdGlvbih0LG4pe2EoZSxyLHQsbil9KSl9cmV0dXJuIGk9aT9pLnRoZW4obixuKTpuKCl9fSl9ZnVuY3Rpb24gayhlLHQscil7dmFyIG49InN1c3BlbmRlZFN0YXJ0IjtyZXR1cm4gZnVuY3Rpb24oYSxpKXtpZigiZXhlY3V0aW5nIj09PW4pdGhyb3cgbmV3IEVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nIik7aWYoImNvbXBsZXRlZCI9PT1uKXtpZigidGhyb3ciPT09YSl0aHJvdyBpO3JldHVybnt2YWx1ZTp2b2lkIDAsZG9uZTohMH19Zm9yKHIubWV0aG9kPWEsci5hcmc9aTs7KXt2YXIgbz1yLmRlbGVnYXRlO2lmKG8pe3ZhciBzPVMobyxyKTtpZihzKXtpZihzPT09Ziljb250aW51ZTtyZXR1cm4gc319aWYoIm5leHQiPT09ci5tZXRob2Qpci5zZW50PXIuX3NlbnQ9ci5hcmc7ZWxzZSBpZigidGhyb3ciPT09ci5tZXRob2Qpe2lmKCJzdXNwZW5kZWRTdGFydCI9PT1uKXRocm93IG49ImNvbXBsZXRlZCIsci5hcmc7ci5kaXNwYXRjaEV4Y2VwdGlvbihyLmFyZyl9ZWxzZSJyZXR1cm4iPT09ci5tZXRob2QmJnIuYWJydXB0KCJyZXR1cm4iLHIuYXJnKTtuPSJleGVjdXRpbmciO3ZhciBjPWwoZSx0LHIpO2lmKCJub3JtYWwiPT09Yy50eXBlKXtpZihuPXIuZG9uZT8iY29tcGxldGVkIjoic3VzcGVuZGVkWWllbGQiLGMuYXJnPT09Ziljb250aW51ZTtyZXR1cm57dmFsdWU6Yy5hcmcsZG9uZTpyLmRvbmV9fSJ0aHJvdyI9PT1jLnR5cGUmJihuPSJjb21wbGV0ZWQiLHIubWV0aG9kPSJ0aHJvdyIsci5hcmc9Yy5hcmcpfX19ZnVuY3Rpb24gUyhlLHQpe3ZhciByPXQubWV0aG9kLG49ZS5pdGVyYXRvcltyXTtpZih2b2lkIDA9PT1uKXJldHVybiB0LmRlbGVnYXRlPW51bGwsInRocm93Ij09PXImJmUuaXRlcmF0b3IucmV0dXJuJiYodC5tZXRob2Q9InJldHVybiIsdC5hcmc9dm9pZCAwLFMoZSx0KSwidGhyb3ciPT09dC5tZXRob2QpfHwicmV0dXJuIiE9PXImJih0Lm1ldGhvZD0idGhyb3ciLHQuYXJnPW5ldyBUeXBlRXJyb3IoIlRoZSBpdGVyYXRvciBkb2VzIG5vdCBwcm92aWRlIGEgJyIrcisiJyBtZXRob2QiKSksZjt2YXIgYT1sKG4sZS5pdGVyYXRvcix0LmFyZyk7aWYoInRocm93Ij09PWEudHlwZSlyZXR1cm4gdC5tZXRob2Q9InRocm93Iix0LmFyZz1hLmFyZyx0LmRlbGVnYXRlPW51bGwsZjt2YXIgaT1hLmFyZztyZXR1cm4gaT9pLmRvbmU/KHRbZS5yZXN1bHROYW1lXT1pLnZhbHVlLHQubmV4dD1lLm5leHRMb2MsInJldHVybiIhPT10Lm1ldGhvZCYmKHQubWV0aG9kPSJuZXh0Iix0LmFyZz12b2lkIDApLHQuZGVsZWdhdGU9bnVsbCxmKTppOih0Lm1ldGhvZD0idGhyb3ciLHQuYXJnPW5ldyBUeXBlRXJyb3IoIml0ZXJhdG9yIHJlc3VsdCBpcyBub3QgYW4gb2JqZWN0IiksdC5kZWxlZ2F0ZT1udWxsLGYpfWZ1bmN0aW9uIE8oZSl7dmFyIHQ9e3RyeUxvYzplWzBdfTsxIGluIGUmJih0LmNhdGNoTG9jPWVbMV0pLDIgaW4gZSYmKHQuZmluYWxseUxvYz1lWzJdLHQuYWZ0ZXJMb2M9ZVszXSksdGhpcy50cnlFbnRyaWVzLnB1c2godCl9ZnVuY3Rpb24gQyhlKXt2YXIgdD1lLmNvbXBsZXRpb258fHt9O3QudHlwZT0ibm9ybWFsIixkZWxldGUgdC5hcmcsZS5jb21wbGV0aW9uPXR9ZnVuY3Rpb24gRihlKXt0aGlzLnRyeUVudHJpZXM9W3t0cnlMb2M6InJvb3QifV0sZS5mb3JFYWNoKE8sdGhpcyksdGhpcy5yZXNldCghMCl9ZnVuY3Rpb24gUChlKXtpZihlKXt2YXIgdD1lW2ldO2lmKHQpcmV0dXJuIHQuY2FsbChlKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgZS5uZXh0KXJldHVybiBlO2lmKCFpc05hTihlLmxlbmd0aCkpe3ZhciBuPS0xLGE9ZnVuY3Rpb24gdCgpe2Zvcig7KytuPGUubGVuZ3RoOylpZihyLmNhbGwoZSxuKSlyZXR1cm4gdC52YWx1ZT1lW25dLHQuZG9uZT0hMSx0O3JldHVybiB0LnZhbHVlPXZvaWQgMCx0LmRvbmU9ITAsdH07cmV0dXJuIGEubmV4dD1hfX1yZXR1cm57bmV4dDpUfX1mdW5jdGlvbiBUKCl7cmV0dXJue3ZhbHVlOnZvaWQgMCxkb25lOiEwfX1yZXR1cm4gZC5wcm90b3R5cGU9cCxuKG0sImNvbnN0cnVjdG9yIix7dmFsdWU6cCxjb25maWd1cmFibGU6ITB9KSxuKHAsImNvbnN0cnVjdG9yIix7dmFsdWU6ZCxjb25maWd1cmFibGU6ITB9KSxkLmRpc3BsYXlOYW1lPWMocCxzLCJHZW5lcmF0b3JGdW5jdGlvbiIpLGUuaXNHZW5lcmF0b3JGdW5jdGlvbj1mdW5jdGlvbihlKXt2YXIgdD0iZnVuY3Rpb24iPT10eXBlb2YgZSYmZS5jb25zdHJ1Y3RvcjtyZXR1cm4hIXQmJih0PT09ZHx8IkdlbmVyYXRvckZ1bmN0aW9uIj09PSh0LmRpc3BsYXlOYW1lfHx0Lm5hbWUpKX0sZS5tYXJrPWZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKGUscCk6KGUuX19wcm90b19fPXAsYyhlLHMsIkdlbmVyYXRvckZ1bmN0aW9uIikpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUobSksZX0sZS5hd3JhcD1mdW5jdGlvbihlKXtyZXR1cm57X19hd2FpdDplfX0sYih3LnByb3RvdHlwZSksYyh3LnByb3RvdHlwZSxvLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpLGUuQXN5bmNJdGVyYXRvcj13LGUuYXN5bmM9ZnVuY3Rpb24odCxyLG4sYSxpKXt2b2lkIDA9PT1pJiYoaT1Qcm9taXNlKTt2YXIgbz1uZXcgdyh1KHQscixuLGEpLGkpO3JldHVybiBlLmlzR2VuZXJhdG9yRnVuY3Rpb24ocik/bzpvLm5leHQoKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gZS5kb25lP2UudmFsdWU6by5uZXh0KCl9KSl9LGIobSksYyhtLHMsIkdlbmVyYXRvciIpLGMobSxpLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpLGMobSwidG9TdHJpbmciLChmdW5jdGlvbigpe3JldHVybiJbb2JqZWN0IEdlbmVyYXRvcl0ifSkpLGUua2V5cz1mdW5jdGlvbihlKXt2YXIgdD1PYmplY3QoZSkscj1bXTtmb3IodmFyIG4gaW4gdClyLnB1c2gobik7cmV0dXJuIHIucmV2ZXJzZSgpLGZ1bmN0aW9uIGUoKXtmb3IoO3IubGVuZ3RoOyl7dmFyIG49ci5wb3AoKTtpZihuIGluIHQpcmV0dXJuIGUudmFsdWU9bixlLmRvbmU9ITEsZX1yZXR1cm4gZS5kb25lPSEwLGV9fSxlLnZhbHVlcz1QLEYucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpGLHJlc2V0OmZ1bmN0aW9uKGUpe2lmKHRoaXMucHJldj0wLHRoaXMubmV4dD0wLHRoaXMuc2VudD10aGlzLl9zZW50PXZvaWQgMCx0aGlzLmRvbmU9ITEsdGhpcy5kZWxlZ2F0ZT1udWxsLHRoaXMubWV0aG9kPSJuZXh0Iix0aGlzLmFyZz12b2lkIDAsdGhpcy50cnlFbnRyaWVzLmZvckVhY2goQyksIWUpZm9yKHZhciB0IGluIHRoaXMpInQiPT09dC5jaGFyQXQoMCkmJnIuY2FsbCh0aGlzLHQpJiYhaXNOYU4oK3Quc2xpY2UoMSkpJiYodGhpc1t0XT12b2lkIDApfSxzdG9wOmZ1bmN0aW9uKCl7dGhpcy5kb25lPSEwO3ZhciBlPXRoaXMudHJ5RW50cmllc1swXS5jb21wbGV0aW9uO2lmKCJ0aHJvdyI9PT1lLnR5cGUpdGhyb3cgZS5hcmc7cmV0dXJuIHRoaXMucnZhbH0sZGlzcGF0Y2hFeGNlcHRpb246ZnVuY3Rpb24oZSl7aWYodGhpcy5kb25lKXRocm93IGU7dmFyIHQ9dGhpcztmdW5jdGlvbiBuKHIsbil7cmV0dXJuIG8udHlwZT0idGhyb3ciLG8uYXJnPWUsdC5uZXh0PXIsbiYmKHQubWV0aG9kPSJuZXh0Iix0LmFyZz12b2lkIDApLCEhbn1mb3IodmFyIGE9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2E+PTA7LS1hKXt2YXIgaT10aGlzLnRyeUVudHJpZXNbYV0sbz1pLmNvbXBsZXRpb247aWYoInJvb3QiPT09aS50cnlMb2MpcmV0dXJuIG4oImVuZCIpO2lmKGkudHJ5TG9jPD10aGlzLnByZXYpe3ZhciBzPXIuY2FsbChpLCJjYXRjaExvYyIpLGM9ci5jYWxsKGksImZpbmFsbHlMb2MiKTtpZihzJiZjKXtpZih0aGlzLnByZXY8aS5jYXRjaExvYylyZXR1cm4gbihpLmNhdGNoTG9jLCEwKTtpZih0aGlzLnByZXY8aS5maW5hbGx5TG9jKXJldHVybiBuKGkuZmluYWxseUxvYyl9ZWxzZSBpZihzKXtpZih0aGlzLnByZXY8aS5jYXRjaExvYylyZXR1cm4gbihpLmNhdGNoTG9jLCEwKX1lbHNle2lmKCFjKXRocm93IG5ldyBFcnJvcigidHJ5IHN0YXRlbWVudCB3aXRob3V0IGNhdGNoIG9yIGZpbmFsbHkiKTtpZih0aGlzLnByZXY8aS5maW5hbGx5TG9jKXJldHVybiBuKGkuZmluYWxseUxvYyl9fX19LGFicnVwdDpmdW5jdGlvbihlLHQpe2Zvcih2YXIgbj10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7bj49MDstLW4pe3ZhciBhPXRoaXMudHJ5RW50cmllc1tuXTtpZihhLnRyeUxvYzw9dGhpcy5wcmV2JiZyLmNhbGwoYSwiZmluYWxseUxvYyIpJiZ0aGlzLnByZXY8YS5maW5hbGx5TG9jKXt2YXIgaT1hO2JyZWFrfX1pJiYoImJyZWFrIj09PWV8fCJjb250aW51ZSI9PT1lKSYmaS50cnlMb2M8PXQmJnQ8PWkuZmluYWxseUxvYyYmKGk9bnVsbCk7dmFyIG89aT9pLmNvbXBsZXRpb246e307cmV0dXJuIG8udHlwZT1lLG8uYXJnPXQsaT8odGhpcy5tZXRob2Q9Im5leHQiLHRoaXMubmV4dD1pLmZpbmFsbHlMb2MsZik6dGhpcy5jb21wbGV0ZShvKX0sY29tcGxldGU6ZnVuY3Rpb24oZSx0KXtpZigidGhyb3ciPT09ZS50eXBlKXRocm93IGUuYXJnO3JldHVybiJicmVhayI9PT1lLnR5cGV8fCJjb250aW51ZSI9PT1lLnR5cGU/dGhpcy5uZXh0PWUuYXJnOiJyZXR1cm4iPT09ZS50eXBlPyh0aGlzLnJ2YWw9dGhpcy5hcmc9ZS5hcmcsdGhpcy5tZXRob2Q9InJldHVybiIsdGhpcy5uZXh0PSJlbmQiKToibm9ybWFsIj09PWUudHlwZSYmdCYmKHRoaXMubmV4dD10KSxmfSxmaW5pc2g6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTt0Pj0wOy0tdCl7dmFyIHI9dGhpcy50cnlFbnRyaWVzW3RdO2lmKHIuZmluYWxseUxvYz09PWUpcmV0dXJuIHRoaXMuY29tcGxldGUoci5jb21wbGV0aW9uLHIuYWZ0ZXJMb2MpLEMociksZn19LGNhdGNoOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7dD49MDstLXQpe3ZhciByPXRoaXMudHJ5RW50cmllc1t0XTtpZihyLnRyeUxvYz09PWUpe3ZhciBuPXIuY29tcGxldGlvbjtpZigidGhyb3ciPT09bi50eXBlKXt2YXIgYT1uLmFyZztDKHIpfXJldHVybiBhfX10aHJvdyBuZXcgRXJyb3IoImlsbGVnYWwgY2F0Y2ggYXR0ZW1wdCIpfSxkZWxlZ2F0ZVlpZWxkOmZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZT17aXRlcmF0b3I6UChlKSxyZXN1bHROYW1lOnQsbmV4dExvYzpyfSwibmV4dCI9PT10aGlzLm1ldGhvZCYmKHRoaXMuYXJnPXZvaWQgMCksZn19LGV9ZnVuY3Rpb24gQyhlKXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gVChlKX0oZSl8fGZ1bmN0aW9uKGUpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZudWxsIT1lW1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPWVbIkBAaXRlcmF0b3IiXSlyZXR1cm4gQXJyYXkuZnJvbShlKX0oZSl8fFAoZSl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gRihlLHQpe3ZhciByPSJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbIkBAaXRlcmF0b3IiXTtpZighcil7aWYoQXJyYXkuaXNBcnJheShlKXx8KHI9UChlKSl8fHQmJmUmJiJudW1iZXIiPT10eXBlb2YgZS5sZW5ndGgpe3ImJihlPXIpO3ZhciBuPTAsYT1mdW5jdGlvbigpe307cmV0dXJue3M6YSxuOmZ1bmN0aW9uKCl7cmV0dXJuIG4+PWUubGVuZ3RoP3tkb25lOiEwfTp7ZG9uZTohMSx2YWx1ZTplW24rK119fSxlOmZ1bmN0aW9uKGUpe3Rocm93IGV9LGY6YX19dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGl0ZXJhdGUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfXZhciBpLG89ITAscz0hMTtyZXR1cm57czpmdW5jdGlvbigpe3I9ci5jYWxsKGUpfSxuOmZ1bmN0aW9uKCl7dmFyIGU9ci5uZXh0KCk7cmV0dXJuIG89ZS5kb25lLGV9LGU6ZnVuY3Rpb24oZSl7cz0hMCxpPWV9LGY6ZnVuY3Rpb24oKXt0cnl7b3x8bnVsbD09ci5yZXR1cm58fHIucmV0dXJuKCl9ZmluYWxseXtpZihzKXRocm93IGl9fX19ZnVuY3Rpb24gUChlLHQpe2lmKGUpe2lmKCJzdHJpbmciPT10eXBlb2YgZSlyZXR1cm4gVChlLHQpO3ZhciByPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtyZXR1cm4iT2JqZWN0Ij09PXImJmUuY29uc3RydWN0b3ImJihyPWUuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1yfHwiU2V0Ij09PXI/QXJyYXkuZnJvbShlKToiQXJndW1lbnRzIj09PXJ8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KHIpP1QoZSx0KTp2b2lkIDB9fWZ1bmN0aW9uIFQoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIHI9MCxuPW5ldyBBcnJheSh0KTtyPHQ7cisrKW5bcl09ZVtyXTtyZXR1cm4gbn1mdW5jdGlvbiBJKGUsdCxyLG4sYSxpLG8pe3RyeXt2YXIgcz1lW2ldKG8pLGM9cy52YWx1ZX1jYXRjaChlKXtyZXR1cm4gdm9pZCByKGUpfXMuZG9uZT90KGMpOlByb21pc2UucmVzb2x2ZShjKS50aGVuKG4sYSl9ZnVuY3Rpb24gRShlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdD10aGlzLHI9YXJndW1lbnRzO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24obixhKXt2YXIgaT1lLmFwcGx5KHQscik7ZnVuY3Rpb24gbyhlKXtJKGksbixhLG8scywibmV4dCIsZSl9ZnVuY3Rpb24gcyhlKXtJKGksbixhLG8scywidGhyb3ciLGUpfW8odm9pZCAwKX0pKX19ZnVuY3Rpb24gaihlLHQpe3JldHVybiBqPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuX19wcm90b19fPXQsZX0saihlLHQpfWZ1bmN0aW9uIE0oZSl7cmV0dXJuIE09T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSl9LE0oZSl9ZnVuY3Rpb24gXyhlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIEwoZSx0KXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIG49dFtyXTtuLmVudW1lcmFibGU9bi5lbnVtZXJhYmxlfHwhMSxuLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gbiYmKG4ud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCh2b2lkIDAsYT1mdW5jdGlvbihlLHQpe2lmKCJvYmplY3QiIT09eChlKXx8bnVsbD09PWUpcmV0dXJuIGU7dmFyIHI9ZVtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PXIpe3ZhciBuPXIuY2FsbChlLCJzdHJpbmciKTtpZigib2JqZWN0IiE9PXgobikpcmV0dXJuIG47dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4gU3RyaW5nKGUpfShuLmtleSksInN5bWJvbCI9PT14KGEpP2E6U3RyaW5nKGEpKSxuKX12YXIgYX1mdW5jdGlvbiBSKGUsdCxyKXtyZXR1cm4gdCYmTChlLnByb3RvdHlwZSx0KSxyJiZMKGUsciksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZX12YXIgTj1bMCwwLDYxMiw3OTJdLEQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQpe3ZhciByPXQucGRmTWFuYWdlcixuPXQueHJlZixhPXQucGFnZUluZGV4LGk9dC5wYWdlRGljdCxvPXQucmVmLHM9dC5nbG9iYWxJZEZhY3RvcnksYz10LmZvbnRDYWNoZSx1PXQuYnVpbHRJbkNNYXBDYWNoZSxsPXQuc3RhbmRhcmRGb250RGF0YUNhY2hlLGY9dC5nbG9iYWxJbWFnZUNhY2hlLGg9dC5ub25CbGVuZE1vZGVzU2V0LGQ9dC54ZmFGYWN0b3J5O18odGhpcyxlKSx0aGlzLnBkZk1hbmFnZXI9cix0aGlzLnBhZ2VJbmRleD1hLHRoaXMucGFnZURpY3Q9aSx0aGlzLnhyZWY9bix0aGlzLnJlZj1vLHRoaXMuZm9udENhY2hlPWMsdGhpcy5idWlsdEluQ01hcENhY2hlPXUsdGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGU9bCx0aGlzLmdsb2JhbEltYWdlQ2FjaGU9Zix0aGlzLm5vbkJsZW5kTW9kZXNTZXQ9aCx0aGlzLmV2YWx1YXRvck9wdGlvbnM9ci5ldmFsdWF0b3JPcHRpb25zLHRoaXMucmVzb3VyY2VzUHJvbWlzZT1udWxsLHRoaXMueGZhRmFjdG9yeT1kO3ZhciBwPXtvYmo6MH07dGhpcy5fbG9jYWxJZEZhY3Rvcnk9ZnVuY3Rpb24oZSl7IWZ1bmN0aW9uKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLHQmJmooZSx0KX0oaSxlKTt2YXIgdCxyLG49KHQ9aSxyPWZ1bmN0aW9uKCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3QpcmV0dXJuITE7aWYoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSwoZnVuY3Rpb24oKXt9KSkpLCEwfWNhdGNoKGUpe3JldHVybiExfX0oKSxmdW5jdGlvbigpe3ZhciBlLG49TSh0KTtpZihyKXt2YXIgYT1NKHRoaXMpLmNvbnN0cnVjdG9yO2U9UmVmbGVjdC5jb25zdHJ1Y3Qobixhcmd1bWVudHMsYSl9ZWxzZSBlPW4uYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBmdW5jdGlvbihlLHQpe2lmKHQmJigib2JqZWN0Ij09PXgodCl8fCJmdW5jdGlvbiI9PXR5cGVvZiB0KSlyZXR1cm4gdDtpZih2b2lkIDAhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKHZvaWQgMD09PWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZX0oZSl9KHRoaXMsZSl9KTtmdW5jdGlvbiBpKCl7cmV0dXJuIF8odGhpcyxpKSxuLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gUihpLG51bGwsW3trZXk6ImNyZWF0ZU9iaklkIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiJwIi5jb25jYXQoYSwiXyIpLmNvbmNhdCgrK3Aub2JqKX19LHtrZXk6ImdldFBhZ2VPYmpJZCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4icGFnZSIuY29uY2F0KG8udG9TdHJpbmcoKSl9fV0pLGl9KHMpfXZhciB0LHIscztyZXR1cm4gUihlLFt7a2V5OiJfZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXSxyPSgwLGkuZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eSkoe2RpY3Q6dGhpcy5wYWdlRGljdCxrZXk6ZSxnZXRBcnJheTp0LHN0b3BXaGVuRm91bmQ6ITF9KTtyZXR1cm4gQXJyYXkuaXNBcnJheShyKT8xIT09ci5sZW5ndGgmJnJbMF1pbnN0YW5jZW9mIG8uRGljdD9vLkRpY3QubWVyZ2Uoe3hyZWY6dGhpcy54cmVmLGRpY3RBcnJheTpyfSk6clswXTpyfX0se2tleToiY29udGVudCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucGFnZURpY3QuZ2V0QXJyYXkoIkNvbnRlbnRzIil9fSx7a2V5OiJyZXNvdXJjZXMiLGdldDpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX2dldEluaGVyaXRhYmxlUHJvcGVydHkoIlJlc291cmNlcyIpO3JldHVybigwLGEuc2hhZG93KSh0aGlzLCJyZXNvdXJjZXMiLGUgaW5zdGFuY2VvZiBvLkRpY3Q/ZTpvLkRpY3QuZW1wdHkpfX0se2tleToiX2dldEJvdW5kaW5nQm94Iix2YWx1ZTpmdW5jdGlvbihlKXtpZih0aGlzLnhmYURhdGEpcmV0dXJuIHRoaXMueGZhRGF0YS5iYm94O3ZhciB0PXRoaXMuX2dldEluaGVyaXRhYmxlUHJvcGVydHkoZSwhMCk7aWYoQXJyYXkuaXNBcnJheSh0KSYmND09PXQubGVuZ3RoKXtpZigodD1hLlV0aWwubm9ybWFsaXplUmVjdCh0KSlbMl0tdFswXT4wJiZ0WzNdLXRbMV0+MClyZXR1cm4gdDsoMCxhLndhcm4pKCJFbXB0eSwgb3IgaW52YWxpZCwgLyIuY29uY2F0KGUsIiBlbnRyeS4iKSl9cmV0dXJuIG51bGx9fSx7a2V5OiJtZWRpYUJveCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuKDAsYS5zaGFkb3cpKHRoaXMsIm1lZGlhQm94Iix0aGlzLl9nZXRCb3VuZGluZ0JveCgiTWVkaWFCb3giKXx8Til9fSx7a2V5OiJjcm9wQm94IixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4oMCxhLnNoYWRvdykodGhpcywiY3JvcEJveCIsdGhpcy5fZ2V0Qm91bmRpbmdCb3goIkNyb3BCb3giKXx8dGhpcy5tZWRpYUJveCl9fSx7a2V5OiJ1c2VyVW5pdCIsZ2V0OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wYWdlRGljdC5nZXQoIlVzZXJVbml0Iik7cmV0dXJuKCJudW1iZXIiIT10eXBlb2YgZXx8ZTw9MCkmJihlPTEpLCgwLGEuc2hhZG93KSh0aGlzLCJ1c2VyVW5pdCIsZSl9fSx7a2V5OiJ2aWV3IixnZXQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmNyb3BCb3gsdD10aGlzLm1lZGlhQm94O2lmKGUhPT10JiYhKDAsYS5pc0FycmF5RXF1YWwpKGUsdCkpe3ZhciByPWEuVXRpbC5pbnRlcnNlY3QoZSx0KTtpZihyJiZyWzJdLXJbMF0+MCYmclszXS1yWzFdPjApcmV0dXJuKDAsYS5zaGFkb3cpKHRoaXMsInZpZXciLHIpOygwLGEud2FybikoIkVtcHR5IC9Dcm9wQm94IGFuZCAvTWVkaWFCb3ggaW50ZXJzZWN0aW9uLiIpfXJldHVybigwLGEuc2hhZG93KSh0aGlzLCJ2aWV3Iix0KX19LHtrZXk6InJvdGF0ZSIsZ2V0OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eSgiUm90YXRlIil8fDA7cmV0dXJuIGUlOTAhPTA/ZT0wOmU+PTM2MD9lJT0zNjA6ZTwwJiYoZT0oZSUzNjArMzYwKSUzNjApLCgwLGEuc2hhZG93KSh0aGlzLCJyb3RhdGUiLGUpfX0se2tleToiX29uU3ViU3RyZWFtRXJyb3IiLHZhbHVlOmZ1bmN0aW9uKGUsdCxyKXtpZih0aGlzLmV2YWx1YXRvck9wdGlvbnMuaWdub3JlRXJyb3JzKXJldHVybiBlLnNlbmQoIlVuc3VwcG9ydGVkRmVhdHVyZSIse2ZlYXR1cmVJZDphLlVOU1VQUE9SVEVEX0ZFQVRVUkVTLmVycm9yQ29udGVudFN1YlN0cmVhbX0pLHZvaWQoMCxhLndhcm4pKCJnZXRDb250ZW50U3RyZWFtIC0gaWdub3Jpbmcgc3ViLXN0cmVhbSAoIi5jb25jYXQociwnKTogIicpLmNvbmNhdCh0LCciLicpKTt0aHJvdyB0fX0se2tleToiZ2V0Q29udGVudFN0cmVhbSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcztyZXR1cm4gdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZSh0aGlzLCJjb250ZW50IikudGhlbigoZnVuY3Rpb24ocil7cmV0dXJuIHIgaW5zdGFuY2VvZiBjLkJhc2VTdHJlYW0/cjpBcnJheS5pc0FycmF5KHIpP25ldyBtLlN0cmVhbXNTZXF1ZW5jZVN0cmVhbShyLHQuX29uU3ViU3RyZWFtRXJyb3IuYmluZCh0LGUpKTpuZXcgcC5OdWxsU3RyZWFtfSkpfX0se2tleToieGZhRGF0YSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuKDAsYS5zaGFkb3cpKHRoaXMsInhmYURhdGEiLHRoaXMueGZhRmFjdG9yeT97YmJveDp0aGlzLnhmYUZhY3RvcnkuZ2V0Qm91bmRpbmdCb3godGhpcy5wYWdlSW5kZXgpfTpudWxsKX19LHtrZXk6InNhdmVOZXdBbm5vdGF0aW9ucyIsdmFsdWU6KHM9RShBKCkubWFyaygoZnVuY3Rpb24gZSh0LHIsYSl7dmFyIGksbyxzLGMsdSxsLGYsaCxkLHAsZztyZXR1cm4gQSgpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOmlmKCF0aGlzLnhmYUZhY3Rvcnkpe2UubmV4dD0yO2JyZWFrfXRocm93IG5ldyBFcnJvcigiWEZBOiBDYW5ub3Qgc2F2ZSBuZXcgYW5ub3RhdGlvbnMuIik7Y2FzZSAyOnJldHVybiBpPW5ldyB5LlBhcnRpYWxFdmFsdWF0b3Ioe3hyZWY6dGhpcy54cmVmLGhhbmRsZXI6dCxwYWdlSW5kZXg6dGhpcy5wYWdlSW5kZXgsaWRGYWN0b3J5OnRoaXMuX2xvY2FsSWRGYWN0b3J5LGZvbnRDYWNoZTp0aGlzLmZvbnRDYWNoZSxidWlsdEluQ01hcENhY2hlOnRoaXMuYnVpbHRJbkNNYXBDYWNoZSxzdGFuZGFyZEZvbnREYXRhQ2FjaGU6dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGUsZ2xvYmFsSW1hZ2VDYWNoZTp0aGlzLmdsb2JhbEltYWdlQ2FjaGUsb3B0aW9uczp0aGlzLmV2YWx1YXRvck9wdGlvbnN9KSxvPXRoaXMucGFnZURpY3Qscz10aGlzLmFubm90YXRpb25zLnNsaWNlKCksZS5uZXh0PTcsbi5Bbm5vdGF0aW9uRmFjdG9yeS5zYXZlTmV3QW5ub3RhdGlvbnMoaSxyLGEpO2Nhc2UgNzpjPWUuc2VudCx1PUYoYy5hbm5vdGF0aW9ucyk7dHJ5e2Zvcih1LnMoKTshKGw9dS5uKCkpLmRvbmU7KWY9bC52YWx1ZS5yZWYscy5wdXNoKGYpfWNhdGNoKGUpe3UuZShlKX1maW5hbGx5e3UuZigpfXJldHVybiBoPW8uZ2V0KCJBbm5vdHMiKSxvLnNldCgiQW5ub3RzIixzKSxkPVtdLHA9bnVsbCx0aGlzLnhyZWYuZW5jcnlwdCYmKHA9dGhpcy54cmVmLmVuY3J5cHQuY3JlYXRlQ2lwaGVyVHJhbnNmb3JtKHRoaXMucmVmLm51bSx0aGlzLnJlZi5nZW4pKSwoMCx3LndyaXRlT2JqZWN0KSh0aGlzLnJlZixvLGQscCksaCYmby5zZXQoIkFubm90cyIsaCksKGc9Yy5kZXBlbmRlbmNpZXMpLnB1c2guYXBwbHkoZyxbe3JlZjp0aGlzLnJlZixkYXRhOmQuam9pbigiIil9XS5jb25jYXQoQyhjLmFubm90YXRpb25zKSkpLGUuYWJydXB0KCJyZXR1cm4iLGcpO2Nhc2UgMjA6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKSxmdW5jdGlvbihlLHQscil7cmV0dXJuIHMuYXBwbHkodGhpcyxhcmd1bWVudHMpfSl9LHtrZXk6InNhdmUiLHZhbHVlOmZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1uZXcgeS5QYXJ0aWFsRXZhbHVhdG9yKHt4cmVmOnRoaXMueHJlZixoYW5kbGVyOmUscGFnZUluZGV4OnRoaXMucGFnZUluZGV4LGlkRmFjdG9yeTp0aGlzLl9sb2NhbElkRmFjdG9yeSxmb250Q2FjaGU6dGhpcy5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTp0aGlzLmJ1aWx0SW5DTWFwQ2FjaGUsc3RhbmRhcmRGb250RGF0YUNhY2hlOnRoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLGdsb2JhbEltYWdlQ2FjaGU6dGhpcy5nbG9iYWxJbWFnZUNhY2hlLG9wdGlvbnM6dGhpcy5ldmFsdWF0b3JPcHRpb25zfSk7cmV0dXJuIHRoaXMuX3BhcnNlZEFubm90YXRpb25zLnRoZW4oKGZ1bmN0aW9uKGUpe3ZhciBpLG89W10scz1GKGUpO3RyeXtmb3Iocy5zKCk7IShpPXMubigpKS5kb25lOyl7dmFyIGM9aS52YWx1ZTtjLm11c3RCZVByaW50ZWQocikmJm8ucHVzaChjLnNhdmUobix0LHIpLmNhdGNoKChmdW5jdGlvbihlKXtyZXR1cm4oMCxhLndhcm4pKCJzYXZlIC0gaWdub3JpbmcgYW5ub3RhdGlvbiBkYXRhIGR1cmluZyAiKyciJy5jb25jYXQodC5uYW1lLCciIHRhc2s6ICInKS5jb25jYXQoZSwnIi4nKSksbnVsbH0pKSl9fWNhdGNoKGUpe3MuZShlKX1maW5hbGx5e3MuZigpfXJldHVybiBQcm9taXNlLmFsbChvKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gZS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiEhZX0pKX0pKX0pKX19LHtrZXk6ImxvYWRSZXNvdXJjZXMiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7cmV0dXJuIHRoaXMucmVzb3VyY2VzUHJvbWlzZXx8KHRoaXMucmVzb3VyY2VzUHJvbWlzZT10aGlzLnBkZk1hbmFnZXIuZW5zdXJlKHRoaXMsInJlc291cmNlcyIpKSx0aGlzLnJlc291cmNlc1Byb21pc2UudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGcuT2JqZWN0TG9hZGVyKHQucmVzb3VyY2VzLGUsdC54cmVmKS5sb2FkKCl9KSl9fSx7a2V5OiJnZXRPcGVyYXRvckxpc3QiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMscj1lLmhhbmRsZXIsbz1lLnNpbmsscz1lLnRhc2ssYz1lLmludGVudCx1PWUuY2FjaGVLZXksbD1lLmFubm90YXRpb25TdG9yYWdlLGY9dm9pZCAwPT09bD9udWxsOmwsaD10aGlzLmdldENvbnRlbnRTdHJlYW0ociksZD10aGlzLmxvYWRSZXNvdXJjZXMoWyJDb2xvclNwYWNlIiwiRXh0R1N0YXRlIiwiRm9udCIsIlBhdHRlcm4iLCJQcm9wZXJ0aWVzIiwiU2hhZGluZyIsIlhPYmplY3QiXSkscD1uZXcgeS5QYXJ0aWFsRXZhbHVhdG9yKHt4cmVmOnRoaXMueHJlZixoYW5kbGVyOnIscGFnZUluZGV4OnRoaXMucGFnZUluZGV4LGlkRmFjdG9yeTp0aGlzLl9sb2NhbElkRmFjdG9yeSxmb250Q2FjaGU6dGhpcy5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTp0aGlzLmJ1aWx0SW5DTWFwQ2FjaGUsc3RhbmRhcmRGb250RGF0YUNhY2hlOnRoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLGdsb2JhbEltYWdlQ2FjaGU6dGhpcy5nbG9iYWxJbWFnZUNhY2hlLG9wdGlvbnM6dGhpcy5ldmFsdWF0b3JPcHRpb25zfSksZz10aGlzLnhmYUZhY3Rvcnk/bnVsbDooMCxpLmdldE5ld0Fubm90YXRpb25zTWFwKShmKSxtPVByb21pc2UucmVzb2x2ZShudWxsKTtpZihnKXt2YXIgYj1nLmdldCh0aGlzLnBhZ2VJbmRleCk7YiYmKG09bi5Bbm5vdGF0aW9uRmFjdG9yeS5wcmludE5ld0Fubm90YXRpb25zKHAscyxiKSl9dmFyIHc9UHJvbWlzZS5hbGwoW2gsZF0pLnRoZW4oKGZ1bmN0aW9uKGUpe3ZhciBuPU8oZSwxKVswXSxhPW5ldyB2Lk9wZXJhdG9yTGlzdChjLG8pO3JldHVybiByLnNlbmQoIlN0YXJ0UmVuZGVyUGFnZSIse3RyYW5zcGFyZW5jeTpwLmhhc0JsZW5kTW9kZXModC5yZXNvdXJjZXMsdC5ub25CbGVuZE1vZGVzU2V0KSxwYWdlSW5kZXg6dC5wYWdlSW5kZXgsY2FjaGVLZXk6dX0pLHAuZ2V0T3BlcmF0b3JMaXN0KHtzdHJlYW06bix0YXNrOnMscmVzb3VyY2VzOnQucmVzb3VyY2VzLG9wZXJhdG9yTGlzdDphfSkudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gYX0pKX0pKTtyZXR1cm4gUHJvbWlzZS5hbGwoW3csdGhpcy5fcGFyc2VkQW5ub3RhdGlvbnMsbV0pLnRoZW4oKGZ1bmN0aW9uKGUpe3ZhciB0PU8oZSwzKSxyPXRbMF0sbj10WzFdLGk9dFsyXTtpZihpJiYobj1uLmNvbmNhdChpKSksMD09PW4ubGVuZ3RofHxjJmEuUmVuZGVyaW5nSW50ZW50RmxhZy5BTk5PVEFUSU9OU19ESVNBQkxFKXJldHVybiByLmZsdXNoKCEwKSx7bGVuZ3RoOnIudG90YWxMZW5ndGh9O3ZhciBvLHU9ISEoYyZhLlJlbmRlcmluZ0ludGVudEZsYWcuQU5OT1RBVElPTlNfRk9STVMpLGw9ISEoYyZhLlJlbmRlcmluZ0ludGVudEZsYWcuQU5ZKSxoPSEhKGMmYS5SZW5kZXJpbmdJbnRlbnRGbGFnLkRJU1BMQVkpLGQ9ISEoYyZhLlJlbmRlcmluZ0ludGVudEZsYWcuUFJJTlQpLGc9W10sdj1GKG4pO3RyeXtmb3Iodi5zKCk7IShvPXYubigpKS5kb25lOyl7dmFyIHk9by52YWx1ZTsobHx8aCYmeS5tdXN0QmVWaWV3ZWQoZil8fGQmJnkubXVzdEJlUHJpbnRlZChmKSkmJmcucHVzaCh5LmdldE9wZXJhdG9yTGlzdChwLHMsYyx1LGYpLmNhdGNoKChmdW5jdGlvbihlKXtyZXR1cm4oMCxhLndhcm4pKCJnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBhbm5vdGF0aW9uIGRhdGEgZHVyaW5nICIrJyInLmNvbmNhdChzLm5hbWUsJyIgdGFzazogIicpLmNvbmNhdChlLCciLicpKSx7b3BMaXN0Om51bGwsc2VwYXJhdGVGb3JtOiExLHNlcGFyYXRlQ2FudmFzOiExfX0pKSl9fWNhdGNoKGUpe3YuZShlKX1maW5hbGx5e3YuZigpfXJldHVybiBQcm9taXNlLmFsbChnKS50aGVuKChmdW5jdGlvbihlKXt2YXIgdCxuPSExLGE9ITEsaT1GKGUpO3RyeXtmb3IoaS5zKCk7ISh0PWkubigpKS5kb25lOyl7dmFyIG89dC52YWx1ZSxzPW8ub3BMaXN0LGM9by5zZXBhcmF0ZUZvcm0sdT1vLnNlcGFyYXRlQ2FudmFzO3IuYWRkT3BMaXN0KHMpLGMmJihuPWMpLHUmJihhPXUpfX1jYXRjaChlKXtpLmUoZSl9ZmluYWxseXtpLmYoKX1yZXR1cm4gci5mbHVzaCghMCx7Zm9ybTpuLGNhbnZhczphfSkse2xlbmd0aDpyLnRvdGFsTGVuZ3RofX0pKX0pKX19LHtrZXk6ImV4dHJhY3RUZXh0Q29udGVudCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxyPWUuaGFuZGxlcixuPWUudGFzayxhPWUuaW5jbHVkZU1hcmtlZENvbnRlbnQsaT1lLnNpbmssbz1lLmNvbWJpbmVUZXh0SXRlbXMscz10aGlzLmdldENvbnRlbnRTdHJlYW0ociksYz10aGlzLmxvYWRSZXNvdXJjZXMoWyJFeHRHU3RhdGUiLCJGb250IiwiUHJvcGVydGllcyIsIlhPYmplY3QiXSk7cmV0dXJuIFByb21pc2UuYWxsKFtzLGNdKS50aGVuKChmdW5jdGlvbihlKXt2YXIgcz1PKGUsMSlbMF07cmV0dXJuIG5ldyB5LlBhcnRpYWxFdmFsdWF0b3Ioe3hyZWY6dC54cmVmLGhhbmRsZXI6cixwYWdlSW5kZXg6dC5wYWdlSW5kZXgsaWRGYWN0b3J5OnQuX2xvY2FsSWRGYWN0b3J5LGZvbnRDYWNoZTp0LmZvbnRDYWNoZSxidWlsdEluQ01hcENhY2hlOnQuYnVpbHRJbkNNYXBDYWNoZSxzdGFuZGFyZEZvbnREYXRhQ2FjaGU6dC5zdGFuZGFyZEZvbnREYXRhQ2FjaGUsZ2xvYmFsSW1hZ2VDYWNoZTp0Lmdsb2JhbEltYWdlQ2FjaGUsb3B0aW9uczp0LmV2YWx1YXRvck9wdGlvbnN9KS5nZXRUZXh0Q29udGVudCh7c3RyZWFtOnMsdGFzazpuLHJlc291cmNlczp0LnJlc291cmNlcyxpbmNsdWRlTWFya2VkQ29udGVudDphLGNvbWJpbmVUZXh0SXRlbXM6byxzaW5rOmksdmlld0JveDp0LnZpZXd9KX0pKX19LHtrZXk6ImdldFN0cnVjdFRyZWUiLHZhbHVlOihyPUUoQSgpLm1hcmsoKGZ1bmN0aW9uIGUoKXt2YXIgdCxyO3JldHVybiBBKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLHRoaXMucGRmTWFuYWdlci5lbnN1cmVDYXRhbG9nKCJzdHJ1Y3RUcmVlUm9vdCIpO2Nhc2UgMjppZih0PWUuc2VudCl7ZS5uZXh0PTU7YnJlYWt9cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLG51bGwpO2Nhc2UgNTpyZXR1cm4gZS5uZXh0PTcsdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZSh0aGlzLCJfcGFyc2VTdHJ1Y3RUcmVlIixbdF0pO2Nhc2UgNzpyZXR1cm4gcj1lLnNlbnQsZS5hYnJ1cHQoInJldHVybiIsci5zZXJpYWxpemFibGUpO2Nhc2UgOTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpLGZ1bmN0aW9uKCl7cmV0dXJuIHIuYXBwbHkodGhpcyxhcmd1bWVudHMpfSl9LHtrZXk6Il9wYXJzZVN0cnVjdFRyZWUiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBiLlN0cnVjdFRyZWVQYWdlKGUsdGhpcy5wYWdlRGljdCk7cmV0dXJuIHQucGFyc2UoKSx0fX0se2tleToiZ2V0QW5ub3RhdGlvbnNEYXRhIix2YWx1ZToodD1FKEEoKS5tYXJrKChmdW5jdGlvbiBlKHQscixuKXt2YXIgaSxvLHMsYyx1LGwsZixoLGQscCxnO3JldHVybiBBKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLHRoaXMuX3BhcnNlZEFubm90YXRpb25zO2Nhc2UgMjppZigwIT09KGk9ZS5zZW50KS5sZW5ndGgpe2UubmV4dD01O2JyZWFrfXJldHVybiBlLmFicnVwdCgicmV0dXJuIixbXSk7Y2FzZSA1Om89W10scz1bXSx1PSEhKG4mYS5SZW5kZXJpbmdJbnRlbnRGbGFnLkFOWSksbD0hIShuJmEuUmVuZGVyaW5nSW50ZW50RmxhZy5ESVNQTEFZKSxmPSEhKG4mYS5SZW5kZXJpbmdJbnRlbnRGbGFnLlBSSU5UKSxoPUYoaSk7dHJ5e2ZvcihoLnMoKTshKGQ9aC5uKCkpLmRvbmU7KXA9ZC52YWx1ZSwoKGc9dXx8bCYmcC52aWV3YWJsZSl8fGYmJnAucHJpbnRhYmxlKSYmcy5wdXNoKHAuZGF0YSkscC5oYXNUZXh0Q29udGVudCYmZyYmKGN8fChjPW5ldyB5LlBhcnRpYWxFdmFsdWF0b3Ioe3hyZWY6dGhpcy54cmVmLGhhbmRsZXI6dCxwYWdlSW5kZXg6dGhpcy5wYWdlSW5kZXgsaWRGYWN0b3J5OnRoaXMuX2xvY2FsSWRGYWN0b3J5LGZvbnRDYWNoZTp0aGlzLmZvbnRDYWNoZSxidWlsdEluQ01hcENhY2hlOnRoaXMuYnVpbHRJbkNNYXBDYWNoZSxzdGFuZGFyZEZvbnREYXRhQ2FjaGU6dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGUsZ2xvYmFsSW1hZ2VDYWNoZTp0aGlzLmdsb2JhbEltYWdlQ2FjaGUsb3B0aW9uczp0aGlzLmV2YWx1YXRvck9wdGlvbnN9KSksby5wdXNoKHAuZXh0cmFjdFRleHRDb250ZW50KGMscix0aGlzLnZpZXcpLmNhdGNoKChmdW5jdGlvbihlKXsoMCxhLndhcm4pKCdnZXRBbm5vdGF0aW9uc0RhdGEgLSBpZ25vcmluZyB0ZXh0Q29udGVudCBkdXJpbmcgIicuY29uY2F0KHIubmFtZSwnIiB0YXNrOiAiJykuY29uY2F0KGUsJyIuJykpfSkpKSl9Y2F0Y2goZSl7aC5lKGUpfWZpbmFsbHl7aC5mKCl9cmV0dXJuIGUubmV4dD0xMixQcm9taXNlLmFsbChvKTtjYXNlIDEyOnJldHVybiBlLmFicnVwdCgicmV0dXJuIixzKTtjYXNlIDEzOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSksZnVuY3Rpb24oZSxyLG4pe3JldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pfSx7a2V5OiJhbm5vdGF0aW9ucyIsZ2V0OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eSgiQW5ub3RzIik7cmV0dXJuKDAsYS5zaGFkb3cpKHRoaXMsImFubm90YXRpb25zIixBcnJheS5pc0FycmF5KGUpP2U6W10pfX0se2tleToiX3BhcnNlZEFubm90YXRpb25zIixnZXQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9dGhpcy5wZGZNYW5hZ2VyLmVuc3VyZSh0aGlzLCJhbm5vdGF0aW9ucyIpLnRoZW4oKGZ1bmN0aW9uKCl7dmFyIHQscj1bXSxpPUYoZS5hbm5vdGF0aW9ucyk7dHJ5e2ZvcihpLnMoKTshKHQ9aS5uKCkpLmRvbmU7KXt2YXIgbz10LnZhbHVlO3IucHVzaChuLkFubm90YXRpb25GYWN0b3J5LmNyZWF0ZShlLnhyZWYsbyxlLnBkZk1hbmFnZXIsZS5fbG9jYWxJZEZhY3RvcnksITEpLmNhdGNoKChmdW5jdGlvbihlKXtyZXR1cm4oMCxhLndhcm4pKCdfcGFyc2VkQW5ub3RhdGlvbnM6ICInLmNvbmNhdChlLCciLicpKSxudWxsfSkpKX19Y2F0Y2goZSl7aS5lKGUpfWZpbmFsbHl7aS5mKCl9cmV0dXJuIFByb21pc2UuYWxsKHIpLnRoZW4oKGZ1bmN0aW9uKGUpe2lmKDA9PT1lLmxlbmd0aClyZXR1cm4gZTt2YXIgdCxyLGE9W10saT1GKGUpO3RyeXtmb3IoaS5zKCk7IShyPWkubigpKS5kb25lOyl7dmFyIG89ci52YWx1ZTtvJiYobyBpbnN0YW5jZW9mIG4uUG9wdXBBbm5vdGF0aW9uPyh0fHwodD1bXSksdC5wdXNoKG8pKTphLnB1c2gobykpfX1jYXRjaChlKXtpLmUoZSl9ZmluYWxseXtpLmYoKX1yZXR1cm4gdCYmYS5wdXNoLmFwcGx5KGEsQyh0KSksYX0pKX0pKTtyZXR1cm4oMCxhLnNoYWRvdykodGhpcywiX3BhcnNlZEFubm90YXRpb25zIix0KX19LHtrZXk6ImpzQWN0aW9ucyIsZ2V0OmZ1bmN0aW9uKCl7dmFyIGU9KDAsaS5jb2xsZWN0QWN0aW9ucykodGhpcy54cmVmLHRoaXMucGFnZURpY3QsYS5QYWdlQWN0aW9uRXZlbnRUeXBlKTtyZXR1cm4oMCxhLnNoYWRvdykodGhpcywianNBY3Rpb25zIixlKX19XSksZX0oKTt0LlBhZ2U9RDt2YXIgQj1uZXcgVWludDhBcnJheShbMzcsODAsNjgsNzAsNDVdKSxVPW5ldyBVaW50OEFycmF5KFsxMTUsMTE2LDk3LDExNCwxMTYsMTIwLDExNCwxMDEsMTAyXSksJD1uZXcgVWludDhBcnJheShbMTAxLDExMCwxMDAsMTExLDk4LDEwNl0pO2Z1bmN0aW9uIFgoZSx0KXt2YXIgcj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06MTAyNCxuPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdJiZhcmd1bWVudHNbM10sYT10Lmxlbmd0aCxpPWUucGVla0J5dGVzKHIpLG89aS5sZW5ndGgtYTtpZihvPD0wKXJldHVybiExO2lmKG4pZm9yKHZhciBzPWEtMSxjPWkubGVuZ3RoLTE7Yz49czspe2Zvcih2YXIgdT0wO3U8YSYmaVtjLXVdPT09dFtzLXVdOyl1Kys7aWYodT49YSlyZXR1cm4gZS5wb3MrPWMtcywhMDtjLS19ZWxzZSBmb3IodmFyIGw9MDtsPD1vOyl7Zm9yKHZhciBmPTA7ZjxhJiZpW2wrZl09PT10W2ZdOylmKys7aWYoZj49YSlyZXR1cm4gZS5wb3MrPWwsITA7bCsrfXJldHVybiExfXZhciBIPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0LHIpe2lmKF8odGhpcyxlKSxyLmxlbmd0aDw9MCl0aHJvdyBuZXcgYS5JbnZhbGlkUERGRXhjZXB0aW9uKCJUaGUgUERGIGZpbGUgaXMgZW1wdHksIGkuZS4gaXRzIHNpemUgaXMgemVybyBieXRlcy4iKTt0aGlzLnBkZk1hbmFnZXI9dCx0aGlzLnN0cmVhbT1yLHRoaXMueHJlZj1uZXcgUy5YUmVmKHIsdCksdGhpcy5fcGFnZVByb21pc2VzPW5ldyBNYXAsdGhpcy5fdmVyc2lvbj1udWxsO3ZhciBuPXtmb250OjB9O3RoaXMuX2dsb2JhbElkRmFjdG9yeT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXtfKHRoaXMsZSl9cmV0dXJuIFIoZSxudWxsLFt7a2V5OiJnZXREb2NJZCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4iZ18iLmNvbmNhdCh0LmRvY0lkKX19LHtrZXk6ImNyZWF0ZUZvbnRJZCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4iZiIuY29uY2F0KCsrbi5mb250KX19LHtrZXk6ImNyZWF0ZU9iaklkIix2YWx1ZTpmdW5jdGlvbigpeygwLGEudW5yZWFjaGFibGUpKCJBYnN0cmFjdCBtZXRob2QgYGNyZWF0ZU9iaklkYCBjYWxsZWQuIil9fSx7a2V5OiJnZXRQYWdlT2JqSWQiLHZhbHVlOmZ1bmN0aW9uKCl7KDAsYS51bnJlYWNoYWJsZSkoIkFic3RyYWN0IG1ldGhvZCBgZ2V0UGFnZU9iaklkYCBjYWxsZWQuIil9fV0pLGV9KCl9dmFyIHQscixwLG0sYix3LEMsUDtyZXR1cm4gUihlLFt7a2V5OiJwYXJzZSIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy54cmVmLnBhcnNlKGUpLHRoaXMuY2F0YWxvZz1uZXcgbC5DYXRhbG9nKHRoaXMucGRmTWFuYWdlcix0aGlzLnhyZWYpfX0se2tleToibGluZWFyaXphdGlvbiIsZ2V0OmZ1bmN0aW9uKCl7dmFyIGU9bnVsbDt0cnl7ZT1kLkxpbmVhcml6YXRpb24uY3JlYXRlKHRoaXMuc3RyZWFtKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgaS5NaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlOygwLGEuaW5mbykoZSl9cmV0dXJuKDAsYS5zaGFkb3cpKHRoaXMsImxpbmVhcml6YXRpb24iLGUpfX0se2tleToic3RhcnRYUmVmIixnZXQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnN0cmVhbSx0PTA7aWYodGhpcy5saW5lYXJpemF0aW9uKWUucmVzZXQoKSxYKGUsJCkmJih0PWUucG9zKzYtZS5zdGFydCk7ZWxzZXtmb3IodmFyIHI9VS5sZW5ndGgsbj0hMSxvPWUuZW5kOyFuJiZvPjA7KShvLT0xMDI0LXIpPDAmJihvPTApLGUucG9zPW8sbj1YKGUsVSwxMDI0LCEwKTtpZihuKXt2YXIgcztlLnNraXAoOSk7ZG97cz1lLmdldEJ5dGUoKX13aGlsZSgoMCxpLmlzV2hpdGVTcGFjZSkocykpO2Zvcih2YXIgYz0iIjtzPj0zMiYmczw9NTc7KWMrPVN0cmluZy5mcm9tQ2hhckNvZGUocykscz1lLmdldEJ5dGUoKTt0PXBhcnNlSW50KGMsMTApLGlzTmFOKHQpJiYodD0wKX19cmV0dXJuKDAsYS5zaGFkb3cpKHRoaXMsInN0YXJ0WFJlZiIsdCl9fSx7a2V5OiJjaGVja0hlYWRlciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnN0cmVhbTtpZihlLnJlc2V0KCksWChlLEIpKXtlLm1vdmVTdGFydCgpLGUuc2tpcChCLmxlbmd0aCk7Zm9yKHZhciB0LHI9IiI7KHQ9ZS5nZXRCeXRlKCkpPjMyJiZyLmxlbmd0aDw3OylyKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHQpO2kuUERGX1ZFUlNJT05fUkVHRVhQLnRlc3Qocik/dGhpcy5fdmVyc2lvbj1yOigwLGEud2FybikoIkludmFsaWQgUERGIGhlYWRlciB2ZXJzaW9uOiAiLmNvbmNhdChyKSl9fX0se2tleToicGFyc2VTdGFydFhSZWYiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy54cmVmLnNldFN0YXJ0WFJlZih0aGlzLnN0YXJ0WFJlZil9fSx7a2V5OiJudW1QYWdlcyIsZ2V0OmZ1bmN0aW9uKCl7dmFyIGU7cmV0dXJuIGU9dGhpcy5jYXRhbG9nLmhhc0FjdHVhbE51bVBhZ2VzP3RoaXMuY2F0YWxvZy5udW1QYWdlczp0aGlzLnhmYUZhY3Rvcnk/dGhpcy54ZmFGYWN0b3J5LmdldE51bVBhZ2VzKCk6dGhpcy5saW5lYXJpemF0aW9uP3RoaXMubGluZWFyaXphdGlvbi5udW1QYWdlczp0aGlzLmNhdGFsb2cubnVtUGFnZXMsKDAsYS5zaGFkb3cpKHRoaXMsIm51bVBhZ2VzIixlKX19LHtrZXk6Il9oYXNPbmx5RG9jdW1lbnRTaWduYXR1cmVzIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLHI9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOjA7cmV0dXJuISFBcnJheS5pc0FycmF5KGUpJiZlLmV2ZXJ5KChmdW5jdGlvbihlKXtpZighKChlPXQueHJlZi5mZXRjaElmUmVmKGUpKWluc3RhbmNlb2Ygby5EaWN0KSlyZXR1cm4hMTtpZihlLmhhcygiS2lkcyIpKXJldHVybisrcj4xMD8oKDAsYS53YXJuKSgiX2hhc09ubHlEb2N1bWVudFNpZ25hdHVyZXM6IG1heGltdW0gcmVjdXJzaW9uIGRlcHRoIHJlYWNoZWQiKSwhMSk6dC5faGFzT25seURvY3VtZW50U2lnbmF0dXJlcyhlLmdldCgiS2lkcyIpLHIpO3ZhciBuPSgwLG8uaXNOYW1lKShlLmdldCgiRlQiKSwiU2lnIiksaT1lLmdldCgiUmVjdCIpLHM9QXJyYXkuaXNBcnJheShpKSYmaS5ldmVyeSgoZnVuY3Rpb24oZSl7cmV0dXJuIDA9PT1lfSkpO3JldHVybiBuJiZzfSkpfX0se2tleToiX3hmYVN0cmVhbXMiLGdldDpmdW5jdGlvbigpe3ZhciBlPXRoaXMuY2F0YWxvZy5hY3JvRm9ybTtpZighZSlyZXR1cm4gbnVsbDt2YXIgdD1lLmdldCgiWEZBIikscj17InhkcDp4ZHAiOiIiLHRlbXBsYXRlOiIiLGRhdGFzZXRzOiIiLGNvbmZpZzoiIixjb25uZWN0aW9uU2V0OiIiLGxvY2FsZVNldDoiIixzdHlsZXNoZWV0OiIiLCIveGRwOnhkcCI6IiJ9O2lmKHQgaW5zdGFuY2VvZiBjLkJhc2VTdHJlYW0mJiF0LmlzRW1wdHkpcmV0dXJuIHJbInhkcDp4ZHAiXT10LHI7aWYoIUFycmF5LmlzQXJyYXkodCl8fDA9PT10Lmxlbmd0aClyZXR1cm4gbnVsbDtmb3IodmFyIG49MCxhPXQubGVuZ3RoO248YTtuKz0yKXt2YXIgaTtpZihpPTA9PT1uPyJ4ZHA6eGRwIjpuPT09YS0yPyIveGRwOnhkcCI6dFtuXSxyLmhhc093blByb3BlcnR5KGkpKXt2YXIgbz10aGlzLnhyZWYuZmV0Y2hJZlJlZih0W24rMV0pO28gaW5zdGFuY2VvZiBjLkJhc2VTdHJlYW0mJiFvLmlzRW1wdHkmJihyW2ldPW8pfX1yZXR1cm4gcn19LHtrZXk6InhmYURhdGFzZXRzIixnZXQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl94ZmFTdHJlYW1zO2lmKCFlKXJldHVybigwLGEuc2hhZG93KSh0aGlzLCJ4ZmFEYXRhc2V0cyIsbnVsbCk7Zm9yKHZhciB0PTAscj1bImRhdGFzZXRzIiwieGRwOnhkcCJdO3Q8ci5sZW5ndGg7dCsrKXt2YXIgbj1yW3RdLGk9ZVtuXTtpZihpKXRyeXt2YXIgbz17W25dOigwLGEuc3RyaW5nVG9VVEY4U3RyaW5nKShpLmdldFN0cmluZygpKX07cmV0dXJuKDAsYS5zaGFkb3cpKHRoaXMsInhmYURhdGFzZXRzIixuZXcgaC5EYXRhc2V0UmVhZGVyKG8pKX1jYXRjaChlKXsoMCxhLndhcm4pKCJYRkEgLSBJbnZhbGlkIHV0Zi04IHN0cmluZy4iKTticmVha319cmV0dXJuKDAsYS5zaGFkb3cpKHRoaXMsInhmYURhdGFzZXRzIixudWxsKX19LHtrZXk6InhmYURhdGEiLGdldDpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX3hmYVN0cmVhbXM7aWYoIWUpcmV0dXJuIG51bGw7Zm9yKHZhciB0PU9iamVjdC5jcmVhdGUobnVsbCkscj0wLG49T2JqZWN0LmVudHJpZXMoZSk7cjxuLmxlbmd0aDtyKyspe3ZhciBpPU8obltyXSwyKSxvPWlbMF0scz1pWzFdO2lmKHMpdHJ5e3Rbb109KDAsYS5zdHJpbmdUb1VURjhTdHJpbmcpKHMuZ2V0U3RyaW5nKCkpfWNhdGNoKGUpe3JldHVybigwLGEud2FybikoIlhGQSAtIEludmFsaWQgdXRmLTggc3RyaW5nLiIpLG51bGx9fXJldHVybiB0fX0se2tleToieGZhRmFjdG9yeSIsZ2V0OmZ1bmN0aW9uKCl7dmFyIGU7cmV0dXJuIHRoaXMucGRmTWFuYWdlci5lbmFibGVYZmEmJnRoaXMuY2F0YWxvZy5uZWVkc1JlbmRlcmluZyYmdGhpcy5mb3JtSW5mby5oYXNYZmEmJiF0aGlzLmZvcm1JbmZvLmhhc0Fjcm9Gb3JtJiYoZT10aGlzLnhmYURhdGEpLCgwLGEuc2hhZG93KSh0aGlzLCJ4ZmFGYWN0b3J5IixlP25ldyBrLlhGQUZhY3RvcnkoZSk6bnVsbCl9fSx7a2V5OiJpc1B1cmVYZmEiLGdldDpmdW5jdGlvbigpe3JldHVybiEhdGhpcy54ZmFGYWN0b3J5JiZ0aGlzLnhmYUZhY3RvcnkuaXNWYWxpZCgpfX0se2tleToiaHRtbEZvclhmYSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMueGZhRmFjdG9yeT90aGlzLnhmYUZhY3RvcnkuZ2V0UGFnZXMoKTpudWxsfX0se2tleToibG9hZFhmYUltYWdlcyIsdmFsdWU6KFA9RShBKCkubWFyaygoZnVuY3Rpb24gZSgpe3ZhciB0LHIsbixhLGksbyxzLHU7cmV0dXJuIEEoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZUNhdGFsb2coInhmYUltYWdlcyIpO2Nhc2UgMjppZih0PWUuc2VudCl7ZS5uZXh0PTU7YnJlYWt9cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iKTtjYXNlIDU6cmV0dXJuIHI9dC5nZXRLZXlzKCksbj1uZXcgZy5PYmplY3RMb2FkZXIodCxyLHRoaXMueHJlZiksZS5uZXh0PTksbi5sb2FkKCk7Y2FzZSA5OmE9bmV3IE1hcCxpPUYocik7dHJ5e2ZvcihpLnMoKTshKG89aS5uKCkpLmRvbmU7KXM9by52YWx1ZSwodT10LmdldChzKSlpbnN0YW5jZW9mIGMuQmFzZVN0cmVhbSYmYS5zZXQocyx1LmdldEJ5dGVzKCkpfWNhdGNoKGUpe2kuZShlKX1maW5hbGx5e2kuZigpfXRoaXMueGZhRmFjdG9yeS5zZXRJbWFnZXMoYSk7Y2FzZSAxMzpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpLGZ1bmN0aW9uKCl7cmV0dXJuIFAuYXBwbHkodGhpcyxhcmd1bWVudHMpfSl9LHtrZXk6ImxvYWRYZmFGb250cyIsdmFsdWU6KEM9RShBKCkubWFyaygoZnVuY3Rpb24gZSh0LHIpe3ZhciBuLGMsdSxsLGYsaCxkLHAsbSxiLHcsayxTLHgsQyxQLFQsSSxFLGosTSxfLEwsUixOLEQsQixVLCQsWCxILHEsRyx6O3JldHVybiBBKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLHRoaXMucGRmTWFuYWdlci5lbnN1cmVDYXRhbG9nKCJhY3JvRm9ybSIpO2Nhc2UgMjppZihuPWUuc2VudCl7ZS5uZXh0PTU7YnJlYWt9cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iKTtjYXNlIDU6cmV0dXJuIGUubmV4dD03LG4uZ2V0QXN5bmMoIkRSIik7Y2FzZSA3OmlmKChjPWUuc2VudClpbnN0YW5jZW9mIG8uRGljdCl7ZS5uZXh0PTEwO2JyZWFrfXJldHVybiBlLmFicnVwdCgicmV0dXJuIik7Y2FzZSAxMDpyZXR1cm4gdT1uZXcgZy5PYmplY3RMb2FkZXIoYyxbIkZvbnQiXSx0aGlzLnhyZWYpLGUubmV4dD0xMyx1LmxvYWQoKTtjYXNlIDEzOmlmKChsPWMuZ2V0KCJGb250IikpaW5zdGFuY2VvZiBvLkRpY3Qpe2UubmV4dD0xNjticmVha31yZXR1cm4gZS5hYnJ1cHQoInJldHVybiIpO2Nhc2UgMTY6KGY9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKG51bGwpLHRoaXMucGRmTWFuYWdlci5ldmFsdWF0b3JPcHRpb25zKSkudXNlU3lzdGVtRm9udHM9ITEsaD1uZXcgeS5QYXJ0aWFsRXZhbHVhdG9yKHt4cmVmOnRoaXMueHJlZixoYW5kbGVyOnQscGFnZUluZGV4Oi0xLGlkRmFjdG9yeTp0aGlzLl9nbG9iYWxJZEZhY3RvcnksZm9udENhY2hlOnRoaXMuY2F0YWxvZy5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTp0aGlzLmNhdGFsb2cuYnVpbHRJbkNNYXBDYWNoZSxzdGFuZGFyZEZvbnREYXRhQ2FjaGU6dGhpcy5jYXRhbG9nLnN0YW5kYXJkRm9udERhdGFDYWNoZSxvcHRpb25zOmZ9KSxkPW5ldyB2Lk9wZXJhdG9yTGlzdCxwPVtdLGUudDA9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sbT17Z2V0IGZvbnQoKXtyZXR1cm4gcC5hdCgtMSl9LHNldCBmb250KGUpe3AucHVzaChlKX0sY2xvbmU6ZS50MH0sYj1uZXcgTWFwLGwuZm9yRWFjaCgoZnVuY3Rpb24oZSx0KXtiLnNldChlLHQpfSkpLHc9W10saz1GKGIpLGUucHJldj0yNyxrLnMoKTtjYXNlIDI5OmlmKChTPWsubigpKS5kb25lKXtlLm5leHQ9NDQ7YnJlYWt9aWYoeD1PKFMudmFsdWUsMiksQz14WzBdLFA9eFsxXSwoVD1QLmdldCgiRm9udERlc2NyaXB0b3IiKSlpbnN0YW5jZW9mIG8uRGljdCl7ZS5uZXh0PTM0O2JyZWFrfXJldHVybiBlLmFicnVwdCgiY29udGludWUiLDQyKTtjYXNlIDM0OmlmKEk9KEk9VC5nZXQoIkZvbnRGYW1pbHkiKSkucmVwbGFjZSgvWyBdKyhcZCkvZywiJDEiKSxFPVQuZ2V0KCJGb250V2VpZ2h0Iiksaj0tVC5nZXQoIkl0YWxpY0FuZ2xlIiksTT17Zm9udEZhbWlseTpJLGZvbnRXZWlnaHQ6RSxpdGFsaWNBbmdsZTpqfSwoMCxpLnZhbGlkYXRlQ1NTRm9udCkoTSkpe2UubmV4dD00MTticmVha31yZXR1cm4gZS5hYnJ1cHQoImNvbnRpbnVlIiw0Mik7Y2FzZSA0MTp3LnB1c2goaC5oYW5kbGVTZXRGb250KGMsW28uTmFtZS5nZXQoQyksMV0sbnVsbCxkLHIsbSxudWxsLE0pLmNhdGNoKChmdW5jdGlvbihlKXtyZXR1cm4oMCxhLndhcm4pKCdsb2FkWGZhRm9udHM6ICInLmNvbmNhdChlLCciLicpKSxudWxsfSkpKTtjYXNlIDQyOmUubmV4dD0yOTticmVhaztjYXNlIDQ0OmUubmV4dD00OTticmVhaztjYXNlIDQ2OmUucHJldj00NixlLnQxPWUuY2F0Y2goMjcpLGsuZShlLnQxKTtjYXNlIDQ5OnJldHVybiBlLnByZXY9NDksay5mKCksZS5maW5pc2goNDkpO2Nhc2UgNTI6cmV0dXJuIGUubmV4dD01NCxQcm9taXNlLmFsbCh3KTtjYXNlIDU0OmlmKF89dGhpcy54ZmFGYWN0b3J5LnNldEZvbnRzKHApKXtlLm5leHQ9NTc7YnJlYWt9cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iKTtjYXNlIDU3OmYuaWdub3JlRXJyb3JzPSEwLHcubGVuZ3RoPTAscC5sZW5ndGg9MCxMPW5ldyBTZXQsUj1GKF8pO3RyeXtmb3IoUi5zKCk7IShOPVIubigpKS5kb25lOylEPU4udmFsdWUsKDAscy5nZXRYZmFGb250TmFtZSkoIiIuY29uY2F0KEQsIi1SZWd1bGFyIikpfHxMLmFkZChEKX1jYXRjaChlKXtSLmUoZSl9ZmluYWxseXtSLmYoKX1MLnNpemUmJl8ucHVzaCgiUGRmSlMtRmFsbGJhY2siKSxCPUYoXyksZS5wcmV2PTY1LEIucygpO2Nhc2UgNjc6aWYoKFU9Qi5uKCkpLmRvbmUpe2UubmV4dD03NDticmVha31pZigkPVUudmFsdWUsIUwuaGFzKCQpKXtlLm5leHQ9NzE7YnJlYWt9cmV0dXJuIGUuYWJydXB0KCJjb250aW51ZSIsNzIpO2Nhc2UgNzE6Zm9yKFg9MCxIPVt7bmFtZToiUmVndWxhciIsZm9udFdlaWdodDo0MDAsaXRhbGljQW5nbGU6MH0se25hbWU6IkJvbGQiLGZvbnRXZWlnaHQ6NzAwLGl0YWxpY0FuZ2xlOjB9LHtuYW1lOiJJdGFsaWMiLGZvbnRXZWlnaHQ6NDAwLGl0YWxpY0FuZ2xlOjEyfSx7bmFtZToiQm9sZEl0YWxpYyIsZm9udFdlaWdodDo3MDAsaXRhbGljQW5nbGU6MTJ9XTtYPEgubGVuZ3RoO1grKylxPUhbWF0sRz0iIi5jb25jYXQoJCwiLSIpLmNvbmNhdChxLm5hbWUpLHo9KDAscy5nZXRYZmFGb250RGljdCkoRyksdy5wdXNoKGguaGFuZGxlU2V0Rm9udChjLFtvLk5hbWUuZ2V0KEcpLDFdLG51bGwsZCxyLG0seix7Zm9udEZhbWlseTokLGZvbnRXZWlnaHQ6cS5mb250V2VpZ2h0LGl0YWxpY0FuZ2xlOnEuaXRhbGljQW5nbGV9KS5jYXRjaCgoZnVuY3Rpb24oZSl7cmV0dXJuKDAsYS53YXJuKSgnbG9hZFhmYUZvbnRzOiAiJy5jb25jYXQoZSwnIi4nKSksbnVsbH0pKSk7Y2FzZSA3MjplLm5leHQ9Njc7YnJlYWs7Y2FzZSA3NDplLm5leHQ9Nzk7YnJlYWs7Y2FzZSA3NjplLnByZXY9NzYsZS50Mj1lLmNhdGNoKDY1KSxCLmUoZS50Mik7Y2FzZSA3OTpyZXR1cm4gZS5wcmV2PTc5LEIuZigpLGUuZmluaXNoKDc5KTtjYXNlIDgyOnJldHVybiBlLm5leHQ9ODQsUHJvbWlzZS5hbGwodyk7Y2FzZSA4NDp0aGlzLnhmYUZhY3RvcnkuYXBwZW5kRm9udHMocCxMKTtjYXNlIDg1OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzLFtbMjcsNDYsNDksNTJdLFs2NSw3Niw3OSw4Ml1dKX0pKSksZnVuY3Rpb24oZSx0KXtyZXR1cm4gQy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KX0se2tleToic2VyaWFsaXplWGZhRGF0YSIsdmFsdWU6KHc9RShBKCkubWFyaygoZnVuY3Rpb24gZSh0KXtyZXR1cm4gQSgpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLmFicnVwdCgicmV0dXJuIix0aGlzLnhmYUZhY3Rvcnk/dGhpcy54ZmFGYWN0b3J5LnNlcmlhbGl6ZURhdGEodCk6bnVsbCk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSksZnVuY3Rpb24oZSl7cmV0dXJuIHcuYXBwbHkodGhpcyxhcmd1bWVudHMpfSl9LHtrZXk6InZlcnNpb24iLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNhdGFsb2cudmVyc2lvbnx8dGhpcy5fdmVyc2lvbn19LHtrZXk6ImZvcm1JbmZvIixnZXQ6ZnVuY3Rpb24oKXt2YXIgZT17aGFzRmllbGRzOiExLGhhc0Fjcm9Gb3JtOiExLGhhc1hmYTohMSxoYXNTaWduYXR1cmVzOiExfSx0PXRoaXMuY2F0YWxvZy5hY3JvRm9ybTtpZighdClyZXR1cm4oMCxhLnNoYWRvdykodGhpcywiZm9ybUluZm8iLGUpO3RyeXt2YXIgcj10LmdldCgiRmllbGRzIiksbj1BcnJheS5pc0FycmF5KHIpJiZyLmxlbmd0aD4wO2UuaGFzRmllbGRzPW47dmFyIG89dC5nZXQoIlhGQSIpO2UuaGFzWGZhPUFycmF5LmlzQXJyYXkobykmJm8ubGVuZ3RoPjB8fG8gaW5zdGFuY2VvZiBjLkJhc2VTdHJlYW0mJiFvLmlzRW1wdHk7dmFyIHM9ISEoMSZ0LmdldCgiU2lnRmxhZ3MiKSksdT1zJiZ0aGlzLl9oYXNPbmx5RG9jdW1lbnRTaWduYXR1cmVzKHIpO2UuaGFzQWNyb0Zvcm09biYmIXUsZS5oYXNTaWduYXR1cmVzPXN9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIGkuTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTsoMCxhLndhcm4pKCdDYW5ub3QgZmV0Y2ggZm9ybSBpbmZvcm1hdGlvbjogIicuY29uY2F0KGUsJyIuJykpfXJldHVybigwLGEuc2hhZG93KSh0aGlzLCJmb3JtSW5mbyIsZSl9fSx7a2V5OiJkb2N1bWVudEluZm8iLGdldDpmdW5jdGlvbigpe3ZhciBlLHQ9e1BERkZvcm1hdFZlcnNpb246dGhpcy52ZXJzaW9uLExhbmd1YWdlOnRoaXMuY2F0YWxvZy5sYW5nLEVuY3J5cHRGaWx0ZXJOYW1lOnRoaXMueHJlZi5lbmNyeXB0P3RoaXMueHJlZi5lbmNyeXB0LmZpbHRlck5hbWU6bnVsbCxJc0xpbmVhcml6ZWQ6ISF0aGlzLmxpbmVhcml6YXRpb24sSXNBY3JvRm9ybVByZXNlbnQ6dGhpcy5mb3JtSW5mby5oYXNBY3JvRm9ybSxJc1hGQVByZXNlbnQ6dGhpcy5mb3JtSW5mby5oYXNYZmEsSXNDb2xsZWN0aW9uUHJlc2VudDohIXRoaXMuY2F0YWxvZy5jb2xsZWN0aW9uLElzU2lnbmF0dXJlc1ByZXNlbnQ6dGhpcy5mb3JtSW5mby5oYXNTaWduYXR1cmVzfTt0cnl7ZT10aGlzLnhyZWYudHJhaWxlci5nZXQoIkluZm8iKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgaS5NaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlOygwLGEuaW5mbykoIlRoZSBkb2N1bWVudCBpbmZvcm1hdGlvbiBkaWN0aW9uYXJ5IGlzIGludmFsaWQuIil9aWYoIShlIGluc3RhbmNlb2Ygby5EaWN0KSlyZXR1cm4oMCxhLnNoYWRvdykodGhpcywiZG9jdW1lbnRJbmZvIix0KTt2YXIgcixuPUYoZS5nZXRLZXlzKCkpO3RyeXtmb3Iobi5zKCk7IShyPW4ubigpKS5kb25lOyl7dmFyIHM9ci52YWx1ZSxjPWUuZ2V0KHMpO3N3aXRjaChzKXtjYXNlIlRpdGxlIjpjYXNlIkF1dGhvciI6Y2FzZSJTdWJqZWN0IjpjYXNlIktleXdvcmRzIjpjYXNlIkNyZWF0b3IiOmNhc2UiUHJvZHVjZXIiOmNhc2UiQ3JlYXRpb25EYXRlIjpjYXNlIk1vZERhdGUiOmlmKCJzdHJpbmciPT10eXBlb2YgYyl7dFtzXT0oMCxhLnN0cmluZ1RvUERGU3RyaW5nKShjKTtjb250aW51ZX1icmVhaztjYXNlIlRyYXBwZWQiOmlmKGMgaW5zdGFuY2VvZiBvLk5hbWUpe3Rbc109Yztjb250aW51ZX1icmVhaztkZWZhdWx0OnZhciB1PXZvaWQgMDtzd2l0Y2goeChjKSl7Y2FzZSJzdHJpbmciOnU9KDAsYS5zdHJpbmdUb1BERlN0cmluZykoYyk7YnJlYWs7Y2FzZSJudW1iZXIiOmNhc2UiYm9vbGVhbiI6dT1jO2JyZWFrO2RlZmF1bHQ6YyBpbnN0YW5jZW9mIG8uTmFtZSYmKHU9Yyl9aWYodm9pZCAwPT09dSl7KDAsYS53YXJuKSgnQmFkIHZhbHVlLCBmb3IgY3VzdG9tIGtleSAiJy5jb25jYXQocywnIiwgaW4gSW5mbzogJykuY29uY2F0KGMsIi4iKSk7Y29udGludWV9dC5DdXN0b218fCh0LkN1c3RvbT1PYmplY3QuY3JlYXRlKG51bGwpKSx0LkN1c3RvbVtzXT11O2NvbnRpbnVlfSgwLGEud2FybikoJ0JhZCB2YWx1ZSwgZm9yIGtleSAiJy5jb25jYXQocywnIiwgaW4gSW5mbzogJykuY29uY2F0KGMsIi4iKSl9fWNhdGNoKGUpe24uZShlKX1maW5hbGx5e24uZigpfXJldHVybigwLGEuc2hhZG93KSh0aGlzLCJkb2N1bWVudEluZm8iLHQpfX0se2tleToiZmluZ2VycHJpbnRzIixnZXQ6ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZSYmZS5sZW5ndGg+MCYmIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIiE9PWV9ZnVuY3Rpb24gdChlKXt2YXIgdCxyPVtdLG49RihlKTt0cnl7Zm9yKG4ucygpOyEodD1uLm4oKSkuZG9uZTspe3ZhciBhPXQudmFsdWUudG9TdHJpbmcoMTYpO3IucHVzaChhLnBhZFN0YXJ0KDIsIjAiKSl9fWNhdGNoKGUpe24uZShlKX1maW5hbGx5e24uZigpfXJldHVybiByLmpvaW4oIiIpfXZhciByLG4saT10aGlzLnhyZWYudHJhaWxlci5nZXQoIklEIik7cmV0dXJuIEFycmF5LmlzQXJyYXkoaSkmJmUoaVswXSk/KHI9KDAsYS5zdHJpbmdUb0J5dGVzKShpWzBdKSxpWzFdIT09aVswXSYmZShpWzFdKSYmKG49KDAsYS5zdHJpbmdUb0J5dGVzKShpWzFdKSkpOnI9KDAsdS5jYWxjdWxhdGVNRDUpKHRoaXMuc3RyZWFtLmdldEJ5dGVSYW5nZSgwLDEwMjQpLDAsMTAyNCksKDAsYS5zaGFkb3cpKHRoaXMsImZpbmdlcnByaW50cyIsW3Qociksbj90KG4pOm51bGxdKX19LHtrZXk6Il9nZXRMaW5lYXJpemF0aW9uUGFnZSIsdmFsdWU6KGI9RShBKCkubWFyaygoZnVuY3Rpb24gZSh0KXt2YXIgcixuLGkscyxjLHU7cmV0dXJuIEEoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gcj10aGlzLmNhdGFsb2csbj10aGlzLmxpbmVhcml6YXRpb24saT10aGlzLnhyZWYscz1vLlJlZi5nZXQobi5vYmplY3ROdW1iZXJGaXJzdCwwKSxlLnByZXY9MixlLm5leHQ9NSxpLmZldGNoQXN5bmMocyk7Y2FzZSA1OmlmKCEoKGM9ZS5zZW50KWluc3RhbmNlb2Ygby5EaWN0KSl7ZS5uZXh0PTE2O2JyZWFrfWlmKCEoKHU9Yy5nZXRSYXcoIlR5cGUiKSlpbnN0YW5jZW9mIG8uUmVmKSl7ZS5uZXh0PTEyO2JyZWFrfXJldHVybiBlLm5leHQ9MTEsaS5mZXRjaEFzeW5jKHUpO2Nhc2UgMTE6dT1lLnNlbnQ7Y2FzZSAxMjppZighKDAsby5pc05hbWUpKHUsIlBhZ2UiKSYmKGMuaGFzKCJUeXBlIil8fGMuaGFzKCJLaWRzIikpKXtlLm5leHQ9MTY7YnJlYWt9cmV0dXJuIHIucGFnZUtpZHNDb3VudENhY2hlLmhhcyhzKXx8ci5wYWdlS2lkc0NvdW50Q2FjaGUucHV0KHMsMSksci5wYWdlSW5kZXhDYWNoZS5oYXMocyl8fHIucGFnZUluZGV4Q2FjaGUucHV0KHMsMCksZS5hYnJ1cHQoInJldHVybiIsW2Msc10pO2Nhc2UgMTY6dGhyb3cgbmV3IGEuRm9ybWF0RXJyb3IoIlRoZSBMaW5lYXJpemF0aW9uIGRpY3Rpb25hcnkgZG9lc24ndCBwb2ludCB0byBhIHZhbGlkIFBhZ2UgZGljdGlvbmFyeS4iKTtjYXNlIDE5OnJldHVybiBlLnByZXY9MTksZS50MD1lLmNhdGNoKDIpLCgwLGEud2FybikoJ19nZXRMaW5lYXJpemF0aW9uUGFnZTogIicuY29uY2F0KGUudDAubWVzc2FnZSwnIi4nKSksZS5hYnJ1cHQoInJldHVybiIsci5nZXRQYWdlRGljdCh0KSk7Y2FzZSAyMzpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyxbWzIsMTldXSl9KSkpLGZ1bmN0aW9uKGUpe3JldHVybiBiLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pfSx7a2V5OiJnZXRQYWdlIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLHI9dGhpcy5fcGFnZVByb21pc2VzLmdldChlKTtpZihyKXJldHVybiByO3ZhciBuLGE9dGhpcy5jYXRhbG9nLGk9dGhpcy5saW5lYXJpemF0aW9uLHM9dGhpcy54ZmFGYWN0b3J5O3JldHVybiBuPShuPXM/UHJvbWlzZS5yZXNvbHZlKFtvLkRpY3QuZW1wdHksbnVsbF0pOmkmJmkucGFnZUZpcnN0PT09ZT90aGlzLl9nZXRMaW5lYXJpemF0aW9uUGFnZShlKTphLmdldFBhZ2VEaWN0KGUpKS50aGVuKChmdW5jdGlvbihyKXt2YXIgbj1PKHIsMiksaT1uWzBdLG89blsxXTtyZXR1cm4gbmV3IEQoe3BkZk1hbmFnZXI6dC5wZGZNYW5hZ2VyLHhyZWY6dC54cmVmLHBhZ2VJbmRleDplLHBhZ2VEaWN0OmkscmVmOm8sZ2xvYmFsSWRGYWN0b3J5OnQuX2dsb2JhbElkRmFjdG9yeSxmb250Q2FjaGU6YS5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTphLmJ1aWx0SW5DTWFwQ2FjaGUsc3RhbmRhcmRGb250RGF0YUNhY2hlOmEuc3RhbmRhcmRGb250RGF0YUNhY2hlLGdsb2JhbEltYWdlQ2FjaGU6YS5nbG9iYWxJbWFnZUNhY2hlLG5vbkJsZW5kTW9kZXNTZXQ6YS5ub25CbGVuZE1vZGVzU2V0LHhmYUZhY3Rvcnk6c30pfSkpLHRoaXMuX3BhZ2VQcm9taXNlcy5zZXQoZSxuKSxufX0se2tleToiY2hlY2tGaXJzdFBhZ2UiLHZhbHVlOihtPUUoQSgpLm1hcmsoKGZ1bmN0aW9uIGUoKXt2YXIgdD1hcmd1bWVudHM7cmV0dXJuIEEoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDppZighKHQubGVuZ3RoPjAmJnZvaWQgMCE9PXRbMF0mJnRbMF0pKXtlLm5leHQ9MzticmVha31yZXR1cm4gZS5hYnJ1cHQoInJldHVybiIpO2Nhc2UgMzpyZXR1cm4gZS5wcmV2PTMsZS5uZXh0PTYsdGhpcy5nZXRQYWdlKDApO2Nhc2UgNjplLm5leHQ9MTU7YnJlYWs7Y2FzZSA4OmlmKGUucHJldj04LGUudDA9ZS5jYXRjaCgzKSwhKGUudDAgaW5zdGFuY2VvZiBpLlhSZWZFbnRyeUV4Y2VwdGlvbikpe2UubmV4dD0xNTticmVha31yZXR1cm4gdGhpcy5fcGFnZVByb21pc2VzLmRlbGV0ZSgwKSxlLm5leHQ9MTQsdGhpcy5jbGVhbnVwKCk7Y2FzZSAxNDp0aHJvdyBuZXcgaS5YUmVmUGFyc2VFeGNlcHRpb247Y2FzZSAxNTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyxbWzMsOF1dKX0pKSksZnVuY3Rpb24oKXtyZXR1cm4gbS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KX0se2tleToiY2hlY2tMYXN0UGFnZSIsdmFsdWU6KHA9RShBKCkubWFyaygoZnVuY3Rpb24gZSgpe3ZhciB0LHIsbixvLHMsYyx1LGwsZixoLGQscCxnLHY9YXJndW1lbnRzO3JldHVybiBBKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIHQ9di5sZW5ndGg+MCYmdm9pZCAwIT09dlswXSYmdlswXSxyPXRoaXMuY2F0YWxvZyxuPXRoaXMucGRmTWFuYWdlcixyLnNldEFjdHVhbE51bVBhZ2VzKCksZS5wcmV2PTMsZS5uZXh0PTYsUHJvbWlzZS5hbGwoW24uZW5zdXJlRG9jKCJ4ZmFGYWN0b3J5Iiksbi5lbnN1cmVEb2MoImxpbmVhcml6YXRpb24iKSxuLmVuc3VyZUNhdGFsb2coIm51bVBhZ2VzIildKTtjYXNlIDY6aWYoIXRoaXMueGZhRmFjdG9yeSl7ZS5uZXh0PTEwO2JyZWFrfXJldHVybiBlLmFicnVwdCgicmV0dXJuIik7Y2FzZSAxMDpvPXRoaXMubGluZWFyaXphdGlvbj90aGlzLmxpbmVhcml6YXRpb24ubnVtUGFnZXM6ci5udW1QYWdlcztjYXNlIDExOmlmKE51bWJlci5pc0ludGVnZXIobykpe2UubmV4dD0xNTticmVha310aHJvdyBuZXcgYS5Gb3JtYXRFcnJvcigiUGFnZSBjb3VudCBpcyBub3QgYW4gaW50ZWdlci4iKTtjYXNlIDE1OmlmKCEobzw9MSkpe2UubmV4dD0xNzticmVha31yZXR1cm4gZS5hYnJ1cHQoInJldHVybiIpO2Nhc2UgMTc6cmV0dXJuIGUubmV4dD0xOSx0aGlzLmdldFBhZ2Uoby0xKTtjYXNlIDE5OmUubmV4dD00NDticmVhaztjYXNlIDIxOnJldHVybiBlLnByZXY9MjEsZS50MD1lLmNhdGNoKDMpLHRoaXMuX3BhZ2VQcm9taXNlcy5kZWxldGUoby0xKSxlLm5leHQ9MjYsdGhpcy5jbGVhbnVwKCk7Y2FzZSAyNjppZighKGUudDAgaW5zdGFuY2VvZiBpLlhSZWZFbnRyeUV4Y2VwdGlvbil8fHQpe2UubmV4dD0yODticmVha310aHJvdyBuZXcgaS5YUmVmUGFyc2VFeGNlcHRpb247Y2FzZSAyODpyZXR1cm4oMCxhLndhcm4pKCJjaGVja0xhc3RQYWdlIC0gaW52YWxpZCAvUGFnZXMgdHJlZSAvQ291bnQ6ICIuY29uY2F0KG8sIi4iKSksZS5wcmV2PTI5LGUubmV4dD0zMixyLmdldEFsbFBhZ2VEaWN0cyh0KTtjYXNlIDMyOnM9ZS5zZW50LGUubmV4dD00MTticmVhaztjYXNlIDM1OmlmKGUucHJldj0zNSxlLnQxPWUuY2F0Y2goMjkpLCEoZS50MSBpbnN0YW5jZW9mIGkuWFJlZkVudHJ5RXhjZXB0aW9uKXx8dCl7ZS5uZXh0PTM5O2JyZWFrfXRocm93IG5ldyBpLlhSZWZQYXJzZUV4Y2VwdGlvbjtjYXNlIDM5OnJldHVybiByLnNldEFjdHVhbE51bVBhZ2VzKDEpLGUuYWJydXB0KCJyZXR1cm4iKTtjYXNlIDQxOmM9RihzKTt0cnl7Zm9yKGMucygpOyEodT1jLm4oKSkuZG9uZTspbD1PKHUudmFsdWUsMiksZj1sWzBdLGg9TyhsWzFdLDIpLGQ9aFswXSxwPWhbMV0sZz12b2lkIDAsZCBpbnN0YW5jZW9mIEVycm9yPyhnPVByb21pc2UucmVqZWN0KGQpKS5jYXRjaCgoZnVuY3Rpb24oKXt9KSk6Zz1Qcm9taXNlLnJlc29sdmUobmV3IEQoe3BkZk1hbmFnZXI6bix4cmVmOnRoaXMueHJlZixwYWdlSW5kZXg6ZixwYWdlRGljdDpkLHJlZjpwLGdsb2JhbElkRmFjdG9yeTp0aGlzLl9nbG9iYWxJZEZhY3RvcnksZm9udENhY2hlOnIuZm9udENhY2hlLGJ1aWx0SW5DTWFwQ2FjaGU6ci5idWlsdEluQ01hcENhY2hlLHN0YW5kYXJkRm9udERhdGFDYWNoZTpyLnN0YW5kYXJkRm9udERhdGFDYWNoZSxnbG9iYWxJbWFnZUNhY2hlOnIuZ2xvYmFsSW1hZ2VDYWNoZSxub25CbGVuZE1vZGVzU2V0OnIubm9uQmxlbmRNb2Rlc1NldCx4ZmFGYWN0b3J5Om51bGx9KSksdGhpcy5fcGFnZVByb21pc2VzLnNldChmLGcpfWNhdGNoKGUpe2MuZShlKX1maW5hbGx5e2MuZigpfXIuc2V0QWN0dWFsTnVtUGFnZXMocy5zaXplKTtjYXNlIDQ0OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzLFtbMywyMV0sWzI5LDM1XV0pfSkpKSxmdW5jdGlvbigpe3JldHVybiBwLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pfSx7a2V5OiJmb250RmFsbGJhY2siLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuY2F0YWxvZy5mb250RmFsbGJhY2soZSx0KX19LHtrZXk6ImNsZWFudXAiLHZhbHVlOihyPUUoQSgpLm1hcmsoKGZ1bmN0aW9uIGUoKXt2YXIgdCxyPWFyZ3VtZW50cztyZXR1cm4gQSgpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiB0PXIubGVuZ3RoPjAmJnZvaWQgMCE9PXJbMF0mJnJbMF0sZS5hYnJ1cHQoInJldHVybiIsdGhpcy5jYXRhbG9nP3RoaXMuY2F0YWxvZy5jbGVhbnVwKHQpOigwLGYuY2xlYXJHbG9iYWxDYWNoZXMpKCkpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpLGZ1bmN0aW9uKCl7cmV0dXJuIHIuYXBwbHkodGhpcyxhcmd1bWVudHMpfSl9LHtrZXk6Il9jb2xsZWN0RmllbGRPYmplY3RzIix2YWx1ZTpmdW5jdGlvbihlLHQscil7dmFyIGk9dGhpcy54cmVmLmZldGNoSWZSZWYodCk7aWYoaS5oYXMoIlQiKSl7dmFyIG89KDAsYS5zdHJpbmdUb1BERlN0cmluZykoaS5nZXQoIlQiKSk7ZT0iIj09PWU/bzoiIi5jb25jYXQoZSwiLiIpLmNvbmNhdChvKX1pZihyLmhhcyhlKXx8ci5zZXQoZSxbXSksci5nZXQoZSkucHVzaChuLkFubm90YXRpb25GYWN0b3J5LmNyZWF0ZSh0aGlzLnhyZWYsdCx0aGlzLnBkZk1hbmFnZXIsdGhpcy5fbG9jYWxJZEZhY3RvcnksITApLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLmdldEZpZWxkT2JqZWN0KCl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3JldHVybigwLGEud2FybikoJ19jb2xsZWN0RmllbGRPYmplY3RzOiAiJy5jb25jYXQoZSwnIi4nKSksbnVsbH0pKSksaS5oYXMoIktpZHMiKSl7dmFyIHMsYz1GKGkuZ2V0KCJLaWRzIikpO3RyeXtmb3IoYy5zKCk7IShzPWMubigpKS5kb25lOyl7dmFyIHU9cy52YWx1ZTt0aGlzLl9jb2xsZWN0RmllbGRPYmplY3RzKGUsdSxyKX19Y2F0Y2goZSl7Yy5lKGUpfWZpbmFsbHl7Yy5mKCl9fX19LHtrZXk6ImZpZWxkT2JqZWN0cyIsZ2V0OmZ1bmN0aW9uKCl7aWYoIXRoaXMuZm9ybUluZm8uaGFzRmllbGRzKXJldHVybigwLGEuc2hhZG93KSh0aGlzLCJmaWVsZE9iamVjdHMiLFByb21pc2UucmVzb2x2ZShudWxsKSk7dmFyIGUsdD1PYmplY3QuY3JlYXRlKG51bGwpLHI9bmV3IE1hcCxuPUYodGhpcy5jYXRhbG9nLmFjcm9Gb3JtLmdldCgiRmllbGRzIikpO3RyeXtmb3Iobi5zKCk7IShlPW4ubigpKS5kb25lOyl7dmFyIGk9ZS52YWx1ZTt0aGlzLl9jb2xsZWN0RmllbGRPYmplY3RzKCIiLGkscil9fWNhdGNoKGUpe24uZShlKX1maW5hbGx5e24uZigpfXZhciBvLHM9W10sYz1GKHIpO3RyeXt2YXIgdT1mdW5jdGlvbigpe3ZhciBlPU8oby52YWx1ZSwyKSxyPWVbMF0sbj1lWzFdO3MucHVzaChQcm9taXNlLmFsbChuKS50aGVuKChmdW5jdGlvbihlKXsoZT1lLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuISFlfSkpKS5sZW5ndGg+MCYmKHRbcl09ZSl9KSkpfTtmb3IoYy5zKCk7IShvPWMubigpKS5kb25lOyl1KCl9Y2F0Y2goZSl7Yy5lKGUpfWZpbmFsbHl7Yy5mKCl9cmV0dXJuKDAsYS5zaGFkb3cpKHRoaXMsImZpZWxkT2JqZWN0cyIsUHJvbWlzZS5hbGwocykudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gdH0pKSl9fSx7a2V5OiJoYXNKU0FjdGlvbnMiLGdldDpmdW5jdGlvbigpe3ZhciBlPXRoaXMucGRmTWFuYWdlci5lbnN1cmVEb2MoIl9wYXJzZUhhc0pTQWN0aW9ucyIpO3JldHVybigwLGEuc2hhZG93KSh0aGlzLCJoYXNKU0FjdGlvbnMiLGUpfX0se2tleToiX3BhcnNlSGFzSlNBY3Rpb25zIix2YWx1ZToodD1FKEEoKS5tYXJrKChmdW5jdGlvbiBlKCl7dmFyIHQscixuLGE7cmV0dXJuIEEoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsUHJvbWlzZS5hbGwoW3RoaXMucGRmTWFuYWdlci5lbnN1cmVDYXRhbG9nKCJqc0FjdGlvbnMiKSx0aGlzLnBkZk1hbmFnZXIuZW5zdXJlRG9jKCJmaWVsZE9iamVjdHMiKV0pO2Nhc2UgMjppZih0PWUuc2VudCxyPU8odCwyKSxuPXJbMF0sYT1yWzFdLCFuKXtlLm5leHQ9ODticmVha31yZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsITApO2Nhc2UgODppZighYSl7ZS5uZXh0PTEwO2JyZWFrfXJldHVybiBlLmFicnVwdCgicmV0dXJuIixPYmplY3QudmFsdWVzKGEpLnNvbWUoKGZ1bmN0aW9uKGUpe3JldHVybiBlLnNvbWUoKGZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT09ZS5hY3Rpb25zfSkpfSkpKTtjYXNlIDEwOnJldHVybiBlLmFicnVwdCgicmV0dXJuIiwhMSk7Y2FzZSAxMTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpLGZ1bmN0aW9uKCl7cmV0dXJuIHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfSl9LHtrZXk6ImNhbGN1bGF0aW9uT3JkZXJJZHMiLGdldDpmdW5jdGlvbigpe3ZhciBlPXRoaXMuY2F0YWxvZy5hY3JvRm9ybTtpZighZXx8IWUuaGFzKCJDTyIpKXJldHVybigwLGEuc2hhZG93KSh0aGlzLCJjYWxjdWxhdGlvbk9yZGVySWRzIixudWxsKTt2YXIgdD1lLmdldCgiQ08iKTtpZighQXJyYXkuaXNBcnJheSh0KXx8MD09PXQubGVuZ3RoKXJldHVybigwLGEuc2hhZG93KSh0aGlzLCJjYWxjdWxhdGlvbk9yZGVySWRzIixudWxsKTt2YXIgcixuPVtdLGk9Rih0KTt0cnl7Zm9yKGkucygpOyEocj1pLm4oKSkuZG9uZTspe3ZhciBzPXIudmFsdWU7cyBpbnN0YW5jZW9mIG8uUmVmJiZuLnB1c2gocy50b1N0cmluZygpKX19Y2F0Y2goZSl7aS5lKGUpfWZpbmFsbHl7aS5mKCl9cmV0dXJuIDA9PT1uLmxlbmd0aD8oMCxhLnNoYWRvdykodGhpcywiY2FsY3VsYXRpb25PcmRlcklkcyIsbnVsbCk6KDAsYS5zaGFkb3cpKHRoaXMsImNhbGN1bGF0aW9uT3JkZXJJZHMiLG4pfX1dKSxlfSgpO3QuUERGRG9jdW1lbnQ9SH0sKGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LlBvcHVwQW5ub3RhdGlvbj10Lk1hcmt1cEFubm90YXRpb249dC5Bbm5vdGF0aW9uRmFjdG9yeT10LkFubm90YXRpb25Cb3JkZXJTdHlsZT10LkFubm90YXRpb249dm9pZCAwLHQuZ2V0UXVhZFBvaW50cz1EO3ZhciBuPXIoMiksYT1yKDEzNSksaT1yKDE0Miksbz1yKDEzNCkscz1yKDE5NCksYz1yKDEzNiksdT1yKDE4OSksbD1yKDE5OCksZj1yKDE0MyksaD1yKDIwMSksZD1yKDIwNCkscD1yKDE5MSksZz1yKDEzOSksdj1yKDIwNSk7ZnVuY3Rpb24geSgpe3JldHVybiB5PSJ1bmRlZmluZWQiIT10eXBlb2YgUmVmbGVjdCYmUmVmbGVjdC5nZXQ/UmVmbGVjdC5nZXQuYmluZCgpOmZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1mdW5jdGlvbihlLHQpe2Zvcig7IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHQpJiZudWxsIT09KGU9eChlKSk7KTtyZXR1cm4gZX0oZSx0KTtpZihuKXt2YXIgYT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCk7cmV0dXJuIGEuZ2V0P2EuZ2V0LmNhbGwoYXJndW1lbnRzLmxlbmd0aDwzP2U6cik6YS52YWx1ZX19LHkuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIG0oZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksdCYmYihlLHQpfWZ1bmN0aW9uIGIoZSx0KXtyZXR1cm4gYj1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihlLHQpe3JldHVybiBlLl9fcHJvdG9fXz10LGV9LGIoZSx0KX1mdW5jdGlvbiB3KGUpe3ZhciB0PWZ1bmN0aW9uKCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3QpcmV0dXJuITE7aWYoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSwoZnVuY3Rpb24oKXt9KSkpLCEwfWNhdGNoKGUpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcixuPXgoZSk7aWYodCl7dmFyIGE9eCh0aGlzKS5jb25zdHJ1Y3RvcjtyPVJlZmxlY3QuY29uc3RydWN0KG4sYXJndW1lbnRzLGEpfWVsc2Ugcj1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gayh0aGlzLHIpfX1mdW5jdGlvbiBrKGUsdCl7aWYodCYmKCJvYmplY3QiPT09Tyh0KXx8ImZ1bmN0aW9uIj09dHlwZW9mIHQpKXJldHVybiB0O2lmKHZvaWQgMCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gUyhlKX1mdW5jdGlvbiBTKGUpe2lmKHZvaWQgMD09PWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZX1mdW5jdGlvbiB4KGUpe3JldHVybiB4PU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGUpe3JldHVybiBlLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpfSx4KGUpfWZ1bmN0aW9uIE8oZSl7cmV0dXJuIE89ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGV9LE8oZSl9ZnVuY3Rpb24gQShlLHQpe3ZhciByPSJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbIkBAaXRlcmF0b3IiXTtpZighcil7aWYoQXJyYXkuaXNBcnJheShlKXx8KHI9SShlKSl8fHQmJmUmJiJudW1iZXIiPT10eXBlb2YgZS5sZW5ndGgpe3ImJihlPXIpO3ZhciBuPTAsYT1mdW5jdGlvbigpe307cmV0dXJue3M6YSxuOmZ1bmN0aW9uKCl7cmV0dXJuIG4+PWUubGVuZ3RoP3tkb25lOiEwfTp7ZG9uZTohMSx2YWx1ZTplW24rK119fSxlOmZ1bmN0aW9uKGUpe3Rocm93IGV9LGY6YX19dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGl0ZXJhdGUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfXZhciBpLG89ITAscz0hMTtyZXR1cm57czpmdW5jdGlvbigpe3I9ci5jYWxsKGUpfSxuOmZ1bmN0aW9uKCl7dmFyIGU9ci5uZXh0KCk7cmV0dXJuIG89ZS5kb25lLGV9LGU6ZnVuY3Rpb24oZSl7cz0hMCxpPWV9LGY6ZnVuY3Rpb24oKXt0cnl7b3x8bnVsbD09ci5yZXR1cm58fHIucmV0dXJuKCl9ZmluYWxseXtpZihzKXRocm93IGl9fX19ZnVuY3Rpb24gQygpe0M9ZnVuY3Rpb24oKXtyZXR1cm4gZX07dmFyIGU9e30sdD1PYmplY3QucHJvdG90eXBlLHI9dC5oYXNPd25Qcm9wZXJ0eSxuPU9iamVjdC5kZWZpbmVQcm9wZXJ0eXx8ZnVuY3Rpb24oZSx0LHIpe2VbdF09ci52YWx1ZX0sYT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sP1N5bWJvbDp7fSxpPWEuaXRlcmF0b3J8fCJAQGl0ZXJhdG9yIixvPWEuYXN5bmNJdGVyYXRvcnx8IkBAYXN5bmNJdGVyYXRvciIscz1hLnRvU3RyaW5nVGFnfHwiQEB0b1N0cmluZ1RhZyI7ZnVuY3Rpb24gYyhlLHQscil7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOnIsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KSxlW3RdfXRyeXtjKHt9LCIiKX1jYXRjaChlKXtjPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZVt0XT1yfX1mdW5jdGlvbiB1KGUsdCxyLGEpe3ZhciBpPXQmJnQucHJvdG90eXBlIGluc3RhbmNlb2YgaD90Omgsbz1PYmplY3QuY3JlYXRlKGkucHJvdG90eXBlKSxzPW5ldyBGKGF8fFtdKTtyZXR1cm4gbihvLCJfaW52b2tlIix7dmFsdWU6ayhlLHIscyl9KSxvfWZ1bmN0aW9uIGwoZSx0LHIpe3RyeXtyZXR1cm57dHlwZToibm9ybWFsIixhcmc6ZS5jYWxsKHQscil9fWNhdGNoKGUpe3JldHVybnt0eXBlOiJ0aHJvdyIsYXJnOmV9fX1lLndyYXA9dTt2YXIgZj17fTtmdW5jdGlvbiBoKCl7fWZ1bmN0aW9uIGQoKXt9ZnVuY3Rpb24gcCgpe312YXIgZz17fTtjKGcsaSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKTt2YXIgdj1PYmplY3QuZ2V0UHJvdG90eXBlT2YseT12JiZ2KHYoUChbXSkpKTt5JiZ5IT09dCYmci5jYWxsKHksaSkmJihnPXkpO3ZhciBtPXAucHJvdG90eXBlPWgucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZyk7ZnVuY3Rpb24gYihlKXtbIm5leHQiLCJ0aHJvdyIsInJldHVybiJdLmZvckVhY2goKGZ1bmN0aW9uKHQpe2MoZSx0LChmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5faW52b2tlKHQsZSl9KSl9KSl9ZnVuY3Rpb24gdyhlLHQpe2Z1bmN0aW9uIGEobixpLG8scyl7dmFyIGM9bChlW25dLGUsaSk7aWYoInRocm93IiE9PWMudHlwZSl7dmFyIHU9Yy5hcmcsZj11LnZhbHVlO3JldHVybiBmJiYib2JqZWN0Ij09TyhmKSYmci5jYWxsKGYsIl9fYXdhaXQiKT90LnJlc29sdmUoZi5fX2F3YWl0KS50aGVuKChmdW5jdGlvbihlKXthKCJuZXh0IixlLG8scyl9KSwoZnVuY3Rpb24oZSl7YSgidGhyb3ciLGUsbyxzKX0pKTp0LnJlc29sdmUoZikudGhlbigoZnVuY3Rpb24oZSl7dS52YWx1ZT1lLG8odSl9KSwoZnVuY3Rpb24oZSl7cmV0dXJuIGEoInRocm93IixlLG8scyl9KSl9cyhjLmFyZyl9dmFyIGk7bih0aGlzLCJfaW52b2tlIix7dmFsdWU6ZnVuY3Rpb24oZSxyKXtmdW5jdGlvbiBuKCl7cmV0dXJuIG5ldyB0KChmdW5jdGlvbih0LG4pe2EoZSxyLHQsbil9KSl9cmV0dXJuIGk9aT9pLnRoZW4obixuKTpuKCl9fSl9ZnVuY3Rpb24gayhlLHQscil7dmFyIG49InN1c3BlbmRlZFN0YXJ0IjtyZXR1cm4gZnVuY3Rpb24oYSxpKXtpZigiZXhlY3V0aW5nIj09PW4pdGhyb3cgbmV3IEVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nIik7aWYoImNvbXBsZXRlZCI9PT1uKXtpZigidGhyb3ciPT09YSl0aHJvdyBpO3JldHVybnt2YWx1ZTp2b2lkIDAsZG9uZTohMH19Zm9yKHIubWV0aG9kPWEsci5hcmc9aTs7KXt2YXIgbz1yLmRlbGVnYXRlO2lmKG8pe3ZhciBzPVMobyxyKTtpZihzKXtpZihzPT09Ziljb250aW51ZTtyZXR1cm4gc319aWYoIm5leHQiPT09ci5tZXRob2Qpci5zZW50PXIuX3NlbnQ9ci5hcmc7ZWxzZSBpZigidGhyb3ciPT09ci5tZXRob2Qpe2lmKCJzdXNwZW5kZWRTdGFydCI9PT1uKXRocm93IG49ImNvbXBsZXRlZCIsci5hcmc7ci5kaXNwYXRjaEV4Y2VwdGlvbihyLmFyZyl9ZWxzZSJyZXR1cm4iPT09ci5tZXRob2QmJnIuYWJydXB0KCJyZXR1cm4iLHIuYXJnKTtuPSJleGVjdXRpbmciO3ZhciBjPWwoZSx0LHIpO2lmKCJub3JtYWwiPT09Yy50eXBlKXtpZihuPXIuZG9uZT8iY29tcGxldGVkIjoic3VzcGVuZGVkWWllbGQiLGMuYXJnPT09Ziljb250aW51ZTtyZXR1cm57dmFsdWU6Yy5hcmcsZG9uZTpyLmRvbmV9fSJ0aHJvdyI9PT1jLnR5cGUmJihuPSJjb21wbGV0ZWQiLHIubWV0aG9kPSJ0aHJvdyIsci5hcmc9Yy5hcmcpfX19ZnVuY3Rpb24gUyhlLHQpe3ZhciByPXQubWV0aG9kLG49ZS5pdGVyYXRvcltyXTtpZih2b2lkIDA9PT1uKXJldHVybiB0LmRlbGVnYXRlPW51bGwsInRocm93Ij09PXImJmUuaXRlcmF0b3IucmV0dXJuJiYodC5tZXRob2Q9InJldHVybiIsdC5hcmc9dm9pZCAwLFMoZSx0KSwidGhyb3ciPT09dC5tZXRob2QpfHwicmV0dXJuIiE9PXImJih0Lm1ldGhvZD0idGhyb3ciLHQuYXJnPW5ldyBUeXBlRXJyb3IoIlRoZSBpdGVyYXRvciBkb2VzIG5vdCBwcm92aWRlIGEgJyIrcisiJyBtZXRob2QiKSksZjt2YXIgYT1sKG4sZS5pdGVyYXRvcix0LmFyZyk7aWYoInRocm93Ij09PWEudHlwZSlyZXR1cm4gdC5tZXRob2Q9InRocm93Iix0LmFyZz1hLmFyZyx0LmRlbGVnYXRlPW51bGwsZjt2YXIgaT1hLmFyZztyZXR1cm4gaT9pLmRvbmU/KHRbZS5yZXN1bHROYW1lXT1pLnZhbHVlLHQubmV4dD1lLm5leHRMb2MsInJldHVybiIhPT10Lm1ldGhvZCYmKHQubWV0aG9kPSJuZXh0Iix0LmFyZz12b2lkIDApLHQuZGVsZWdhdGU9bnVsbCxmKTppOih0Lm1ldGhvZD0idGhyb3ciLHQuYXJnPW5ldyBUeXBlRXJyb3IoIml0ZXJhdG9yIHJlc3VsdCBpcyBub3QgYW4gb2JqZWN0IiksdC5kZWxlZ2F0ZT1udWxsLGYpfWZ1bmN0aW9uIHgoZSl7dmFyIHQ9e3RyeUxvYzplWzBdfTsxIGluIGUmJih0LmNhdGNoTG9jPWVbMV0pLDIgaW4gZSYmKHQuZmluYWxseUxvYz1lWzJdLHQuYWZ0ZXJMb2M9ZVszXSksdGhpcy50cnlFbnRyaWVzLnB1c2godCl9ZnVuY3Rpb24gQShlKXt2YXIgdD1lLmNvbXBsZXRpb258fHt9O3QudHlwZT0ibm9ybWFsIixkZWxldGUgdC5hcmcsZS5jb21wbGV0aW9uPXR9ZnVuY3Rpb24gRihlKXt0aGlzLnRyeUVudHJpZXM9W3t0cnlMb2M6InJvb3QifV0sZS5mb3JFYWNoKHgsdGhpcyksdGhpcy5yZXNldCghMCl9ZnVuY3Rpb24gUChlKXtpZihlKXt2YXIgdD1lW2ldO2lmKHQpcmV0dXJuIHQuY2FsbChlKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgZS5uZXh0KXJldHVybiBlO2lmKCFpc05hTihlLmxlbmd0aCkpe3ZhciBuPS0xLGE9ZnVuY3Rpb24gdCgpe2Zvcig7KytuPGUubGVuZ3RoOylpZihyLmNhbGwoZSxuKSlyZXR1cm4gdC52YWx1ZT1lW25dLHQuZG9uZT0hMSx0O3JldHVybiB0LnZhbHVlPXZvaWQgMCx0LmRvbmU9ITAsdH07cmV0dXJuIGEubmV4dD1hfX1yZXR1cm57bmV4dDpUfX1mdW5jdGlvbiBUKCl7cmV0dXJue3ZhbHVlOnZvaWQgMCxkb25lOiEwfX1yZXR1cm4gZC5wcm90b3R5cGU9cCxuKG0sImNvbnN0cnVjdG9yIix7dmFsdWU6cCxjb25maWd1cmFibGU6ITB9KSxuKHAsImNvbnN0cnVjdG9yIix7dmFsdWU6ZCxjb25maWd1cmFibGU6ITB9KSxkLmRpc3BsYXlOYW1lPWMocCxzLCJHZW5lcmF0b3JGdW5jdGlvbiIpLGUuaXNHZW5lcmF0b3JGdW5jdGlvbj1mdW5jdGlvbihlKXt2YXIgdD0iZnVuY3Rpb24iPT10eXBlb2YgZSYmZS5jb25zdHJ1Y3RvcjtyZXR1cm4hIXQmJih0PT09ZHx8IkdlbmVyYXRvckZ1bmN0aW9uIj09PSh0LmRpc3BsYXlOYW1lfHx0Lm5hbWUpKX0sZS5tYXJrPWZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKGUscCk6KGUuX19wcm90b19fPXAsYyhlLHMsIkdlbmVyYXRvckZ1bmN0aW9uIikpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUobSksZX0sZS5hd3JhcD1mdW5jdGlvbihlKXtyZXR1cm57X19hd2FpdDplfX0sYih3LnByb3RvdHlwZSksYyh3LnByb3RvdHlwZSxvLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpLGUuQXN5bmNJdGVyYXRvcj13LGUuYXN5bmM9ZnVuY3Rpb24odCxyLG4sYSxpKXt2b2lkIDA9PT1pJiYoaT1Qcm9taXNlKTt2YXIgbz1uZXcgdyh1KHQscixuLGEpLGkpO3JldHVybiBlLmlzR2VuZXJhdG9yRnVuY3Rpb24ocik/bzpvLm5leHQoKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gZS5kb25lP2UudmFsdWU6by5uZXh0KCl9KSl9LGIobSksYyhtLHMsIkdlbmVyYXRvciIpLGMobSxpLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpLGMobSwidG9TdHJpbmciLChmdW5jdGlvbigpe3JldHVybiJbb2JqZWN0IEdlbmVyYXRvcl0ifSkpLGUua2V5cz1mdW5jdGlvbihlKXt2YXIgdD1PYmplY3QoZSkscj1bXTtmb3IodmFyIG4gaW4gdClyLnB1c2gobik7cmV0dXJuIHIucmV2ZXJzZSgpLGZ1bmN0aW9uIGUoKXtmb3IoO3IubGVuZ3RoOyl7dmFyIG49ci5wb3AoKTtpZihuIGluIHQpcmV0dXJuIGUudmFsdWU9bixlLmRvbmU9ITEsZX1yZXR1cm4gZS5kb25lPSEwLGV9fSxlLnZhbHVlcz1QLEYucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpGLHJlc2V0OmZ1bmN0aW9uKGUpe2lmKHRoaXMucHJldj0wLHRoaXMubmV4dD0wLHRoaXMuc2VudD10aGlzLl9zZW50PXZvaWQgMCx0aGlzLmRvbmU9ITEsdGhpcy5kZWxlZ2F0ZT1udWxsLHRoaXMubWV0aG9kPSJuZXh0Iix0aGlzLmFyZz12b2lkIDAsdGhpcy50cnlFbnRyaWVzLmZvckVhY2goQSksIWUpZm9yKHZhciB0IGluIHRoaXMpInQiPT09dC5jaGFyQXQoMCkmJnIuY2FsbCh0aGlzLHQpJiYhaXNOYU4oK3Quc2xpY2UoMSkpJiYodGhpc1t0XT12b2lkIDApfSxzdG9wOmZ1bmN0aW9uKCl7dGhpcy5kb25lPSEwO3ZhciBlPXRoaXMudHJ5RW50cmllc1swXS5jb21wbGV0aW9uO2lmKCJ0aHJvdyI9PT1lLnR5cGUpdGhyb3cgZS5hcmc7cmV0dXJuIHRoaXMucnZhbH0sZGlzcGF0Y2hFeGNlcHRpb246ZnVuY3Rpb24oZSl7aWYodGhpcy5kb25lKXRocm93IGU7dmFyIHQ9dGhpcztmdW5jdGlvbiBuKHIsbil7cmV0dXJuIG8udHlwZT0idGhyb3ciLG8uYXJnPWUsdC5uZXh0PXIsbiYmKHQubWV0aG9kPSJuZXh0Iix0LmFyZz12b2lkIDApLCEhbn1mb3IodmFyIGE9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2E+PTA7LS1hKXt2YXIgaT10aGlzLnRyeUVudHJpZXNbYV0sbz1pLmNvbXBsZXRpb247aWYoInJvb3QiPT09aS50cnlMb2MpcmV0dXJuIG4oImVuZCIpO2lmKGkudHJ5TG9jPD10aGlzLnByZXYpe3ZhciBzPXIuY2FsbChpLCJjYXRjaExvYyIpLGM9ci5jYWxsKGksImZpbmFsbHlMb2MiKTtpZihzJiZjKXtpZih0aGlzLnByZXY8aS5jYXRjaExvYylyZXR1cm4gbihpLmNhdGNoTG9jLCEwKTtpZih0aGlzLnByZXY8aS5maW5hbGx5TG9jKXJldHVybiBuKGkuZmluYWxseUxvYyl9ZWxzZSBpZihzKXtpZih0aGlzLnByZXY8aS5jYXRjaExvYylyZXR1cm4gbihpLmNhdGNoTG9jLCEwKX1lbHNle2lmKCFjKXRocm93IG5ldyBFcnJvcigidHJ5IHN0YXRlbWVudCB3aXRob3V0IGNhdGNoIG9yIGZpbmFsbHkiKTtpZih0aGlzLnByZXY8aS5maW5hbGx5TG9jKXJldHVybiBuKGkuZmluYWxseUxvYyl9fX19LGFicnVwdDpmdW5jdGlvbihlLHQpe2Zvcih2YXIgbj10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7bj49MDstLW4pe3ZhciBhPXRoaXMudHJ5RW50cmllc1tuXTtpZihhLnRyeUxvYzw9dGhpcy5wcmV2JiZyLmNhbGwoYSwiZmluYWxseUxvYyIpJiZ0aGlzLnByZXY8YS5maW5hbGx5TG9jKXt2YXIgaT1hO2JyZWFrfX1pJiYoImJyZWFrIj09PWV8fCJjb250aW51ZSI9PT1lKSYmaS50cnlMb2M8PXQmJnQ8PWkuZmluYWxseUxvYyYmKGk9bnVsbCk7dmFyIG89aT9pLmNvbXBsZXRpb246e307cmV0dXJuIG8udHlwZT1lLG8uYXJnPXQsaT8odGhpcy5tZXRob2Q9Im5leHQiLHRoaXMubmV4dD1pLmZpbmFsbHlMb2MsZik6dGhpcy5jb21wbGV0ZShvKX0sY29tcGxldGU6ZnVuY3Rpb24oZSx0KXtpZigidGhyb3ciPT09ZS50eXBlKXRocm93IGUuYXJnO3JldHVybiJicmVhayI9PT1lLnR5cGV8fCJjb250aW51ZSI9PT1lLnR5cGU/dGhpcy5uZXh0PWUuYXJnOiJyZXR1cm4iPT09ZS50eXBlPyh0aGlzLnJ2YWw9dGhpcy5hcmc9ZS5hcmcsdGhpcy5tZXRob2Q9InJldHVybiIsdGhpcy5uZXh0PSJlbmQiKToibm9ybWFsIj09PWUudHlwZSYmdCYmKHRoaXMubmV4dD10KSxmfSxmaW5pc2g6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTt0Pj0wOy0tdCl7dmFyIHI9dGhpcy50cnlFbnRyaWVzW3RdO2lmKHIuZmluYWxseUxvYz09PWUpcmV0dXJuIHRoaXMuY29tcGxldGUoci5jb21wbGV0aW9uLHIuYWZ0ZXJMb2MpLEEociksZn19LGNhdGNoOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7dD49MDstLXQpe3ZhciByPXRoaXMudHJ5RW50cmllc1t0XTtpZihyLnRyeUxvYz09PWUpe3ZhciBuPXIuY29tcGxldGlvbjtpZigidGhyb3ciPT09bi50eXBlKXt2YXIgYT1uLmFyZztBKHIpfXJldHVybiBhfX10aHJvdyBuZXcgRXJyb3IoImlsbGVnYWwgY2F0Y2ggYXR0ZW1wdCIpfSxkZWxlZ2F0ZVlpZWxkOmZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZT17aXRlcmF0b3I6UChlKSxyZXN1bHROYW1lOnQsbmV4dExvYzpyfSwibmV4dCI9PT10aGlzLm1ldGhvZCYmKHRoaXMuYXJnPXZvaWQgMCksZn19LGV9ZnVuY3Rpb24gRihlLHQscixuLGEsaSxvKXt0cnl7dmFyIHM9ZVtpXShvKSxjPXMudmFsdWV9Y2F0Y2goZSl7cmV0dXJuIHZvaWQgcihlKX1zLmRvbmU/dChjKTpQcm9taXNlLnJlc29sdmUoYykudGhlbihuLGEpfWZ1bmN0aW9uIFAoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxyPWFyZ3VtZW50cztyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKG4sYSl7dmFyIGk9ZS5hcHBseSh0LHIpO2Z1bmN0aW9uIG8oZSl7RihpLG4sYSxvLHMsIm5leHQiLGUpfWZ1bmN0aW9uIHMoZSl7RihpLG4sYSxvLHMsInRocm93IixlKX1vKHZvaWQgMCl9KSl9fWZ1bmN0aW9uIFQoZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIHI9bnVsbD09ZT9udWxsOiJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbIkBAaXRlcmF0b3IiXTtpZihudWxsIT1yKXt2YXIgbixhLGksbyxzPVtdLGM9ITAsdT0hMTt0cnl7aWYoaT0ocj1yLmNhbGwoZSkpLm5leHQsMD09PXQpe2lmKE9iamVjdChyKSE9PXIpcmV0dXJuO2M9ITF9ZWxzZSBmb3IoOyEoYz0obj1pLmNhbGwocikpLmRvbmUpJiYocy5wdXNoKG4udmFsdWUpLHMubGVuZ3RoIT09dCk7Yz0hMCk7fWNhdGNoKGUpe3U9ITAsYT1lfWZpbmFsbHl7dHJ5e2lmKCFjJiZudWxsIT1yLnJldHVybiYmKG89ci5yZXR1cm4oKSxPYmplY3QobykhPT1vKSlyZXR1cm59ZmluYWxseXtpZih1KXRocm93IGF9fXJldHVybiBzfX0oZSx0KXx8SShlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gSShlLHQpe2lmKGUpe2lmKCJzdHJpbmciPT10eXBlb2YgZSlyZXR1cm4gRShlLHQpO3ZhciByPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtyZXR1cm4iT2JqZWN0Ij09PXImJmUuY29uc3RydWN0b3ImJihyPWUuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1yfHwiU2V0Ij09PXI/QXJyYXkuZnJvbShlKToiQXJndW1lbnRzIj09PXJ8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KHIpP0UoZSx0KTp2b2lkIDB9fWZ1bmN0aW9uIEUoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIHI9MCxuPW5ldyBBcnJheSh0KTtyPHQ7cisrKW5bcl09ZVtyXTtyZXR1cm4gbn1mdW5jdGlvbiBqKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gTShlLHQpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgbj10W3JdO24uZW51bWVyYWJsZT1uLmVudW1lcmFibGV8fCExLG4uY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBuJiYobi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsKHZvaWQgMCxhPWZ1bmN0aW9uKGUsdCl7aWYoIm9iamVjdCIhPT1PKGUpfHxudWxsPT09ZSlyZXR1cm4gZTt2YXIgcj1lW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09cil7dmFyIG49ci5jYWxsKGUsInN0cmluZyIpO2lmKCJvYmplY3QiIT09TyhuKSlyZXR1cm4gbjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybiBTdHJpbmcoZSl9KG4ua2V5KSwic3ltYm9sIj09PU8oYSk/YTpTdHJpbmcoYSkpLG4pfXZhciBhfWZ1bmN0aW9uIF8oZSx0LHIpe3JldHVybiB0JiZNKGUucHJvdG90eXBlLHQpLHImJk0oZSxyKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxlfXZhciBMPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe2oodGhpcyxlKX12YXIgdCxyLGk7cmV0dXJuIF8oZSxudWxsLFt7a2V5OiJjcmVhdGUiLHZhbHVlOmZ1bmN0aW9uKGUsdCxyLG4sYSl7dmFyIGk9dGhpcztyZXR1cm4gUHJvbWlzZS5hbGwoW3IuZW5zdXJlQ2F0YWxvZygiYWNyb0Zvcm0iKSxyLmVuc3VyZUNhdGFsb2coImJhc2VVcmwiKSxyLmVuc3VyZUNhdGFsb2coImF0dGFjaG1lbnRzIiksci5lbnN1cmVEb2MoInhmYURhdGFzZXRzIiksYT90aGlzLl9nZXRQYWdlSW5kZXgoZSx0LHIpOi0xXSkudGhlbigoZnVuY3Rpb24obyl7dmFyIHM9VChvLDUpLGM9c1swXSx1PShzWzFdLHNbMl0pLGw9c1szXSxmPXNbNF07cmV0dXJuIHIuZW5zdXJlKGksIl9jcmVhdGUiLFtlLHQscixuLGMsdSxsLGEsZl0pfSkpfX0se2tleToiX2NyZWF0ZSIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIsaSxzKXt2YXIgYz1hcmd1bWVudHMubGVuZ3RoPjUmJnZvaWQgMCE9PWFyZ3VtZW50c1s1XT9hcmd1bWVudHNbNV06bnVsbCx1PWFyZ3VtZW50cy5sZW5ndGg+Nj9hcmd1bWVudHNbNl06dm9pZCAwLGw9YXJndW1lbnRzLmxlbmd0aD43P2FyZ3VtZW50c1s3XTp2b2lkIDAsZj1hcmd1bWVudHMubGVuZ3RoPjgmJnZvaWQgMCE9PWFyZ3VtZW50c1s4XT9hcmd1bWVudHNbOF06LTEsaD1lLmZldGNoSWZSZWYodCk7aWYoaCBpbnN0YW5jZW9mIG8uRGljdCl7dmFyIGQ9dCBpbnN0YW5jZW9mIG8uUmVmP3QudG9TdHJpbmcoKToiYW5ub3RfIi5jb25jYXQoaS5jcmVhdGVPYmpJZCgpKSxwPWguZ2V0KCJTdWJ0eXBlIik7cD1wIGluc3RhbmNlb2Ygby5OYW1lP3AubmFtZTpudWxsO3ZhciBnPXMgaW5zdGFuY2VvZiBvLkRpY3Q/czpvLkRpY3QuZW1wdHksdj17eHJlZjplLHJlZjp0LGRpY3Q6aCxzdWJ0eXBlOnAsaWQ6ZCxwZGZNYW5hZ2VyOnIsYWNyb0Zvcm06ZyxhdHRhY2htZW50czpjLHhmYURhdGFzZXRzOnUsY29sbGVjdEZpZWxkczpsLG5lZWRBcHBlYXJhbmNlczohbCYmITA9PT1nLmdldCgiTmVlZEFwcGVhcmFuY2VzIikscGFnZUluZGV4OmYsaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ6bi5GZWF0dXJlVGVzdC5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZCYmci5ldmFsdWF0b3JPcHRpb25zLmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkfTtzd2l0Y2gocCl7Y2FzZSJMaW5rIjpyZXR1cm4gbmV3IFkodik7Y2FzZSJUZXh0IjpyZXR1cm4gbmV3IFYodik7Y2FzZSJXaWRnZXQiOnZhciB5PSgwLGEuZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eSkoe2RpY3Q6aCxrZXk6IkZUIn0pO3N3aXRjaCh5PXkgaW5zdGFuY2VvZiBvLk5hbWU/eS5uYW1lOm51bGwpe2Nhc2UiVHgiOnJldHVybiBuZXcgcSh2KTtjYXNlIkJ0biI6cmV0dXJuIG5ldyBHKHYpO2Nhc2UiQ2giOnJldHVybiBuZXcgeih2KTtjYXNlIlNpZyI6cmV0dXJuIG5ldyBXKHYpfXJldHVybigwLG4ud2FybikoJ1VuaW1wbGVtZW50ZWQgd2lkZ2V0IGZpZWxkIHR5cGUgIicuY29uY2F0KHksJyIsICcpKyJmYWxsaW5nIGJhY2sgdG8gYmFzZSBmaWVsZCB0eXBlLiIpLG5ldyBIKHYpO2Nhc2UiUG9wdXAiOnJldHVybiBuZXcgSyh2KTtjYXNlIkZyZWVUZXh0IjpyZXR1cm4gbmV3IEoodik7Y2FzZSJMaW5lIjpyZXR1cm4gbmV3IFoodik7Y2FzZSJTcXVhcmUiOnJldHVybiBuZXcgUSh2KTtjYXNlIkNpcmNsZSI6cmV0dXJuIG5ldyBlZSh2KTtjYXNlIlBvbHlMaW5lIjpyZXR1cm4gbmV3IHRlKHYpO2Nhc2UiUG9seWdvbiI6cmV0dXJuIG5ldyByZSh2KTtjYXNlIkNhcmV0IjpyZXR1cm4gbmV3IG5lKHYpO2Nhc2UiSW5rIjpyZXR1cm4gbmV3IGFlKHYpO2Nhc2UiSGlnaGxpZ2h0IjpyZXR1cm4gbmV3IGllKHYpO2Nhc2UiVW5kZXJsaW5lIjpyZXR1cm4gbmV3IG9lKHYpO2Nhc2UiU3F1aWdnbHkiOnJldHVybiBuZXcgc2Uodik7Y2FzZSJTdHJpa2VPdXQiOnJldHVybiBuZXcgY2Uodik7Y2FzZSJTdGFtcCI6cmV0dXJuIG5ldyB1ZSh2KTtjYXNlIkZpbGVBdHRhY2htZW50IjpyZXR1cm4gbmV3IGxlKHYpO2RlZmF1bHQ6cmV0dXJuIGx8fChwPygwLG4ud2FybikoJ1VuaW1wbGVtZW50ZWQgYW5ub3RhdGlvbiB0eXBlICInLmNvbmNhdChwLCciLCAnKSsiZmFsbGluZyBiYWNrIHRvIGJhc2UgYW5ub3RhdGlvbi4iKTooMCxuLndhcm4pKCJBbm5vdGF0aW9uIGlzIG1pc3NpbmcgdGhlIHJlcXVpcmVkIC9TdWJ0eXBlLiIpKSxuZXcgVSh2KX19fX0se2tleToiX2dldFBhZ2VJbmRleCIsdmFsdWU6KGk9UChDKCkubWFyaygoZnVuY3Rpb24gZSh0LHIsYSl7dmFyIGkscyxjO3JldHVybiBDKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUucHJldj0wLGUubmV4dD0zLHQuZmV0Y2hJZlJlZkFzeW5jKHIpO2Nhc2UgMzppZigoaT1lLnNlbnQpaW5zdGFuY2VvZiBvLkRpY3Qpe2UubmV4dD02O2JyZWFrfXJldHVybiBlLmFicnVwdCgicmV0dXJuIiwtMSk7Y2FzZSA2OmlmKChzPWkuZ2V0UmF3KCJQIikpaW5zdGFuY2VvZiBvLlJlZil7ZS5uZXh0PTk7YnJlYWt9cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLC0xKTtjYXNlIDk6cmV0dXJuIGUubmV4dD0xMSxhLmVuc3VyZUNhdGFsb2coImdldFBhZ2VJbmRleCIsW3NdKTtjYXNlIDExOnJldHVybiBjPWUuc2VudCxlLmFicnVwdCgicmV0dXJuIixjKTtjYXNlIDE1OnJldHVybiBlLnByZXY9MTUsZS50MD1lLmNhdGNoKDApLCgwLG4ud2FybikoJ19nZXRQYWdlSW5kZXg6ICInLmNvbmNhdChlLnQwLCciLicpKSxlLmFicnVwdCgicmV0dXJuIiwtMSk7Y2FzZSAxOTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsbnVsbCxbWzAsMTVdXSl9KSkpLGZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gaS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KX0se2tleToic2F2ZU5ld0Fubm90YXRpb25zIix2YWx1ZToocj1QKEMoKS5tYXJrKChmdW5jdGlvbiBlKHQscixhKXt2YXIgaSxjLHUsbCxmLGgsZCxwLGc7cmV0dXJuIEMoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDppPXQueHJlZix1PVtdLGw9W10sZj1BKGEpLGUucHJldj00LGYucygpO2Nhc2UgNjppZigoaD1mLm4oKSkuZG9uZSl7ZS5uZXh0PTE3O2JyZWFrfWQ9aC52YWx1ZSxlLnQwPWQuYW5ub3RhdGlvblR5cGUsZS5uZXh0PWUudDA9PT1uLkFubm90YXRpb25FZGl0b3JUeXBlLkZSRUVURVhUPzExOmUudDA9PT1uLkFubm90YXRpb25FZGl0b3JUeXBlLklOSz8xNDoxNTticmVhaztjYXNlIDExOnJldHVybiBjfHwoKHA9bmV3IG8uRGljdChpKSkuc2V0KCJCYXNlRm9udCIsby5OYW1lLmdldCgiSGVsdmV0aWNhIikpLHAuc2V0KCJUeXBlIixvLk5hbWUuZ2V0KCJGb250IikpLHAuc2V0KCJTdWJ0eXBlIixvLk5hbWUuZ2V0KCJUeXBlMSIpKSxwLnNldCgiRW5jb2RpbmciLG8uTmFtZS5nZXQoIldpbkFuc2lFbmNvZGluZyIpKSxnPVtdLGM9aS5nZXROZXdUZW1wb3JhcnlSZWYoKSwoMCxzLndyaXRlT2JqZWN0KShjLHAsZyxudWxsKSx1LnB1c2goe3JlZjpjLGRhdGE6Zy5qb2luKCIiKX0pKSxsLnB1c2goSi5jcmVhdGVOZXdBbm5vdGF0aW9uKGksZCx1LHtldmFsdWF0b3I6dCx0YXNrOnIsYmFzZUZvbnRSZWY6Y30pKSxlLmFicnVwdCgiYnJlYWsiLDE1KTtjYXNlIDE0OmwucHVzaChhZS5jcmVhdGVOZXdBbm5vdGF0aW9uKGksZCx1KSk7Y2FzZSAxNTplLm5leHQ9NjticmVhaztjYXNlIDE3OmUubmV4dD0yMjticmVhaztjYXNlIDE5OmUucHJldj0xOSxlLnQxPWUuY2F0Y2goNCksZi5lKGUudDEpO2Nhc2UgMjI6cmV0dXJuIGUucHJldj0yMixmLmYoKSxlLmZpbmlzaCgyMik7Y2FzZSAyNTpyZXR1cm4gZS5uZXh0PTI3LFByb21pc2UuYWxsKGwpO2Nhc2UgMjc6cmV0dXJuIGUudDI9ZS5zZW50LGUudDM9dSxlLmFicnVwdCgicmV0dXJuIix7YW5ub3RhdGlvbnM6ZS50MixkZXBlbmRlbmNpZXM6ZS50M30pO2Nhc2UgMzA6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLG51bGwsW1s0LDE5LDIyLDI1XV0pfSkpKSxmdW5jdGlvbihlLHQsbil7cmV0dXJuIHIuYXBwbHkodGhpcyxhcmd1bWVudHMpfSl9LHtrZXk6InByaW50TmV3QW5ub3RhdGlvbnMiLHZhbHVlOih0PVAoQygpLm1hcmsoKGZ1bmN0aW9uIGUodCxyLGEpe3ZhciBpLG8scyxjLHUsbDtyZXR1cm4gQygpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOmlmKGEpe2UubmV4dD0yO2JyZWFrfXJldHVybiBlLmFicnVwdCgicmV0dXJuIixudWxsKTtjYXNlIDI6aT10LnhyZWYsbz1bXSxzPW4uRmVhdHVyZVRlc3QuaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQmJnQub3B0aW9ucy5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZCxjPUEoYSksZS5wcmV2PTYsYy5zKCk7Y2FzZSA4OmlmKCh1PWMubigpKS5kb25lKXtlLm5leHQ9MTk7YnJlYWt9bD11LnZhbHVlLGUudDA9bC5hbm5vdGF0aW9uVHlwZSxlLm5leHQ9ZS50MD09PW4uQW5ub3RhdGlvbkVkaXRvclR5cGUuRlJFRVRFWFQ/MTM6ZS50MD09PW4uQW5ub3RhdGlvbkVkaXRvclR5cGUuSU5LPzE1OjE3O2JyZWFrO2Nhc2UgMTM6cmV0dXJuIG8ucHVzaChKLmNyZWF0ZU5ld1ByaW50QW5ub3RhdGlvbihpLGwse2V2YWx1YXRvcjp0LHRhc2s6cixpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDpzfSkpLGUuYWJydXB0KCJicmVhayIsMTcpO2Nhc2UgMTU6cmV0dXJuIG8ucHVzaChhZS5jcmVhdGVOZXdQcmludEFubm90YXRpb24oaSxsLHtpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDpzfSkpLGUuYWJydXB0KCJicmVhayIsMTcpO2Nhc2UgMTc6ZS5uZXh0PTg7YnJlYWs7Y2FzZSAxOTplLm5leHQ9MjQ7YnJlYWs7Y2FzZSAyMTplLnByZXY9MjEsZS50MT1lLmNhdGNoKDYpLGMuZShlLnQxKTtjYXNlIDI0OnJldHVybiBlLnByZXY9MjQsYy5mKCksZS5maW5pc2goMjQpO2Nhc2UgMjc6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLFByb21pc2UuYWxsKG8pKTtjYXNlIDI4OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSxudWxsLFtbNiwyMSwyNCwyN11dKX0pKSksZnVuY3Rpb24oZSxyLG4pe3JldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pfV0pLGV9KCk7ZnVuY3Rpb24gUihlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDMpO2lmKCFBcnJheS5pc0FycmF5KGUpKXJldHVybiB0O3ZhciByPXR8fG5ldyBVaW50OENsYW1wZWRBcnJheSgzKTtzd2l0Y2goZS5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4gbnVsbDtjYXNlIDE6cmV0dXJuIGYuQ29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXkuZ2V0UmdiSXRlbShlLDAsciwwKSxyO2Nhc2UgMzpyZXR1cm4gZi5Db2xvclNwYWNlLnNpbmdsZXRvbnMucmdiLmdldFJnYkl0ZW0oZSwwLHIsMCkscjtjYXNlIDQ6cmV0dXJuIGYuQ29sb3JTcGFjZS5zaW5nbGV0b25zLmNteWsuZ2V0UmdiSXRlbShlLDAsciwwKSxyO2RlZmF1bHQ6cmV0dXJuIHR9fWZ1bmN0aW9uIE4oZSl7cmV0dXJuIEFycmF5LmZyb20oZSwoZnVuY3Rpb24oZSl7cmV0dXJuIGUvMjU1fSkpfWZ1bmN0aW9uIEQoZSx0KXt2YXIgcj1lLmdldEFycmF5KCJRdWFkUG9pbnRzIik7aWYoIUFycmF5LmlzQXJyYXkocil8fDA9PT1yLmxlbmd0aHx8ci5sZW5ndGglOD4wKXJldHVybiBudWxsO2Zvcih2YXIgbj1bXSxhPTAsaT1yLmxlbmd0aC84O2E8aTthKyspe2Zvcih2YXIgbz0xLzAscz0tMS8wLGM9MS8wLHU9LTEvMCxsPTgqYSxmPTgqYSs4O2w8ZjtsKz0yKXt2YXIgaD1yW2xdLGQ9cltsKzFdO289TWF0aC5taW4oaCxvKSxzPU1hdGgubWF4KGgscyksYz1NYXRoLm1pbihkLGMpLHU9TWF0aC5tYXgoZCx1KX1pZihudWxsIT09dCYmKG88dFswXXx8cz50WzJdfHxjPHRbMV18fHU+dFszXSkpcmV0dXJuIG51bGw7bi5wdXNoKFt7eDpvLHk6dX0se3g6cyx5OnV9LHt4Om8seTpjfSx7eDpzLHk6Y31dKX1yZXR1cm4gbn1mdW5jdGlvbiBCKGUsdCxyKXt2YXIgYT1UKG4uVXRpbC5nZXRBeGlhbEFsaWduZWRCb3VuZGluZ0JveCh0LHIpLDQpLGk9YVswXSxvPWFbMV0scz1hWzJdLGM9YVszXTtpZihpPT09c3x8bz09PWMpcmV0dXJuWzEsMCwwLDEsZVswXSxlWzFdXTt2YXIgdT0oZVsyXS1lWzBdKS8ocy1pKSxsPShlWzNdLWVbMV0pLyhjLW8pO3JldHVyblt1LDAsMCxsLGVbMF0taSp1LGVbMV0tbypsXX10LkFubm90YXRpb25GYWN0b3J5PUw7dmFyIFU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQpe2oodGhpcyxlKTt2YXIgcj10LmRpY3QsaT10LnhyZWY7dGhpcy5zZXRUaXRsZShyLmdldCgiVCIpKSx0aGlzLnNldENvbnRlbnRzKHIuZ2V0KCJDb250ZW50cyIpKSx0aGlzLnNldE1vZGlmaWNhdGlvbkRhdGUoci5nZXQoIk0iKSksdGhpcy5zZXRGbGFncyhyLmdldCgiRiIpKSx0aGlzLnNldFJlY3RhbmdsZShyLmdldEFycmF5KCJSZWN0IikpLHRoaXMuc2V0Q29sb3Ioci5nZXRBcnJheSgiQyIpKSx0aGlzLnNldEJvcmRlclN0eWxlKHIpLHRoaXMuc2V0QXBwZWFyYW5jZShyKSx0aGlzLnNldE9wdGlvbmFsQ29udGVudChyKTt2YXIgcz1yLmdldCgiTUsiKTtpZih0aGlzLnNldEJvcmRlckFuZEJhY2tncm91bmRDb2xvcnMocyksdGhpcy5zZXRSb3RhdGlvbihzKSx0aGlzLl9zdHJlYW1zPVtdLHRoaXMuYXBwZWFyYW5jZSYmdGhpcy5fc3RyZWFtcy5wdXNoKHRoaXMuYXBwZWFyYW5jZSksdGhpcy5kYXRhPXthbm5vdGF0aW9uRmxhZ3M6dGhpcy5mbGFncyxib3JkZXJTdHlsZTp0aGlzLmJvcmRlclN0eWxlLGNvbG9yOnRoaXMuY29sb3IsYmFja2dyb3VuZENvbG9yOnRoaXMuYmFja2dyb3VuZENvbG9yLGJvcmRlckNvbG9yOnRoaXMuYm9yZGVyQ29sb3Iscm90YXRpb246dGhpcy5yb3RhdGlvbixjb250ZW50c09iajp0aGlzLl9jb250ZW50cyxoYXNBcHBlYXJhbmNlOiEhdGhpcy5hcHBlYXJhbmNlLGlkOnQuaWQsbW9kaWZpY2F0aW9uRGF0ZTp0aGlzLm1vZGlmaWNhdGlvbkRhdGUscmVjdDp0aGlzLnJlY3RhbmdsZSxzdWJ0eXBlOnQuc3VidHlwZSxoYXNPd25DYW52YXM6ITF9LHQuY29sbGVjdEZpZWxkcyl7dmFyIGM9ci5nZXQoIktpZHMiKTtpZihBcnJheS5pc0FycmF5KGMpKXt2YXIgdSxsPVtdLGY9QShjKTt0cnl7Zm9yKGYucygpOyEodT1mLm4oKSkuZG9uZTspe3ZhciBoPXUudmFsdWU7aCBpbnN0YW5jZW9mIG8uUmVmJiZsLnB1c2goaC50b1N0cmluZygpKX19Y2F0Y2goZSl7Zi5lKGUpfWZpbmFsbHl7Zi5mKCl9MCE9PWwubGVuZ3RoJiYodGhpcy5kYXRhLmtpZElkcz1sKX10aGlzLmRhdGEuYWN0aW9ucz0oMCxhLmNvbGxlY3RBY3Rpb25zKShpLHIsbi5Bbm5vdGF0aW9uQWN0aW9uRXZlbnRUeXBlKSx0aGlzLmRhdGEuZmllbGROYW1lPXRoaXMuX2NvbnN0cnVjdEZpZWxkTmFtZShyKSx0aGlzLmRhdGEucGFnZUluZGV4PXQucGFnZUluZGV4fXRoaXMuX2lzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkPXQuaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQsdGhpcy5fZmFsbGJhY2tGb250RGljdD1udWxsLHRoaXMuX25lZWRBcHBlYXJhbmNlcz0hMX12YXIgdCxyLHM7cmV0dXJuIF8oZSxbe2tleToiX2hhc0ZsYWciLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuISEoZSZ0KX19LHtrZXk6Il9pc1ZpZXdhYmxlIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4hdGhpcy5faGFzRmxhZyhlLG4uQW5ub3RhdGlvbkZsYWcuSU5WSVNJQkxFKSYmIXRoaXMuX2hhc0ZsYWcoZSxuLkFubm90YXRpb25GbGFnLk5PVklFVyl9fSx7a2V5OiJfaXNQcmludGFibGUiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9oYXNGbGFnKGUsbi5Bbm5vdGF0aW9uRmxhZy5QUklOVCkmJiF0aGlzLl9oYXNGbGFnKGUsbi5Bbm5vdGF0aW9uRmxhZy5JTlZJU0lCTEUpfX0se2tleToibXVzdEJlVmlld2VkIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1lJiZlLmdldCh0aGlzLmRhdGEuaWQpO3JldHVybiB0JiZ2b2lkIDAhPT10LmhpZGRlbj8hdC5oaWRkZW46dGhpcy52aWV3YWJsZSYmIXRoaXMuX2hhc0ZsYWcodGhpcy5mbGFncyxuLkFubm90YXRpb25GbGFnLkhJRERFTil9fSx7a2V5OiJtdXN0QmVQcmludGVkIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1lJiZlLmdldCh0aGlzLmRhdGEuaWQpO3JldHVybiB0JiZ2b2lkIDAhPT10LnByaW50P3QucHJpbnQ6dGhpcy5wcmludGFibGV9fSx7a2V5OiJ2aWV3YWJsZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG51bGwhPT10aGlzLmRhdGEucXVhZFBvaW50cyYmKDA9PT10aGlzLmZsYWdzfHx0aGlzLl9pc1ZpZXdhYmxlKHRoaXMuZmxhZ3MpKX19LHtrZXk6InByaW50YWJsZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG51bGwhPT10aGlzLmRhdGEucXVhZFBvaW50cyYmMCE9PXRoaXMuZmxhZ3MmJnRoaXMuX2lzUHJpbnRhYmxlKHRoaXMuZmxhZ3MpfX0se2tleToiX3BhcnNlU3RyaW5nSGVscGVyIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD0ic3RyaW5nIj09dHlwZW9mIGU/KDAsbi5zdHJpbmdUb1BERlN0cmluZykoZSk6IiI7cmV0dXJue3N0cjp0LGRpcjp0JiYicnRsIj09PSgwLHUuYmlkaSkodCkuZGlyPyJydGwiOiJsdHIifX19LHtrZXk6InNldERlZmF1bHRBcHBlYXJhbmNlIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD0oMCxhLmdldEluaGVyaXRhYmxlUHJvcGVydHkpKHtkaWN0OmUuZGljdCxrZXk6IkRBIn0pfHxlLmFjcm9Gb3JtLmdldCgiREEiKTt0aGlzLl9kZWZhdWx0QXBwZWFyYW5jZT0ic3RyaW5nIj09dHlwZW9mIHQ/dDoiIix0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhPSgwLGkucGFyc2VEZWZhdWx0QXBwZWFyYW5jZSkodGhpcy5fZGVmYXVsdEFwcGVhcmFuY2UpfX0se2tleToic2V0VGl0bGUiLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMuX3RpdGxlPXRoaXMuX3BhcnNlU3RyaW5nSGVscGVyKGUpfX0se2tleToic2V0Q29udGVudHMiLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMuX2NvbnRlbnRzPXRoaXMuX3BhcnNlU3RyaW5nSGVscGVyKGUpfX0se2tleToic2V0TW9kaWZpY2F0aW9uRGF0ZSIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5tb2RpZmljYXRpb25EYXRlPSJzdHJpbmciPT10eXBlb2YgZT9lOm51bGx9fSx7a2V5OiJzZXRGbGFncyIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5mbGFncz1OdW1iZXIuaXNJbnRlZ2VyKGUpJiZlPjA/ZTowfX0se2tleToiaGFzRmxhZyIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX2hhc0ZsYWcodGhpcy5mbGFncyxlKX19LHtrZXk6InNldFJlY3RhbmdsZSIsdmFsdWU6ZnVuY3Rpb24oZSl7QXJyYXkuaXNBcnJheShlKSYmND09PWUubGVuZ3RoP3RoaXMucmVjdGFuZ2xlPW4uVXRpbC5ub3JtYWxpemVSZWN0KGUpOnRoaXMucmVjdGFuZ2xlPVswLDAsMCwwXX19LHtrZXk6InNldENvbG9yIix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLmNvbG9yPVIoZSl9fSx7a2V5OiJzZXRMaW5lRW5kaW5ncyIsdmFsdWU6ZnVuY3Rpb24oZSl7aWYodGhpcy5saW5lRW5kaW5ncz1bIk5vbmUiLCJOb25lIl0sQXJyYXkuaXNBcnJheShlKSYmMj09PWUubGVuZ3RoKWZvcih2YXIgdD0wO3Q8Mjt0Kyspe3ZhciByPWVbdF07aWYociBpbnN0YW5jZW9mIG8uTmFtZSlzd2l0Y2goci5uYW1lKXtjYXNlIk5vbmUiOmNvbnRpbnVlO2Nhc2UiU3F1YXJlIjpjYXNlIkNpcmNsZSI6Y2FzZSJEaWFtb25kIjpjYXNlIk9wZW5BcnJvdyI6Y2FzZSJDbG9zZWRBcnJvdyI6Y2FzZSJCdXR0IjpjYXNlIlJPcGVuQXJyb3ciOmNhc2UiUkNsb3NlZEFycm93IjpjYXNlIlNsYXNoIjp0aGlzLmxpbmVFbmRpbmdzW3RdPXIubmFtZTtjb250aW51ZX0oMCxuLndhcm4pKCJJZ25vcmluZyBpbnZhbGlkIGxpbmVFbmRpbmc6ICIuY29uY2F0KHIpKX19fSx7a2V5OiJzZXRSb3RhdGlvbiIsdmFsdWU6ZnVuY3Rpb24oZSl7aWYodGhpcy5yb3RhdGlvbj0wLGUgaW5zdGFuY2VvZiBvLkRpY3Qpe3ZhciB0PWUuZ2V0KCJSIil8fDA7TnVtYmVyLmlzSW50ZWdlcih0KSYmMCE9PXQmJigodCU9MzYwKTwwJiYodCs9MzYwKSx0JTkwPT0wJiYodGhpcy5yb3RhdGlvbj10KSl9fX0se2tleToic2V0Qm9yZGVyQW5kQmFja2dyb3VuZENvbG9ycyIsdmFsdWU6ZnVuY3Rpb24oZSl7ZSBpbnN0YW5jZW9mIG8uRGljdD8odGhpcy5ib3JkZXJDb2xvcj1SKGUuZ2V0QXJyYXkoIkJDIiksbnVsbCksdGhpcy5iYWNrZ3JvdW5kQ29sb3I9UihlLmdldEFycmF5KCJCRyIpLG51bGwpKTp0aGlzLmJvcmRlckNvbG9yPXRoaXMuYmFja2dyb3VuZENvbG9yPW51bGx9fSx7a2V5OiJzZXRCb3JkZXJTdHlsZSIsdmFsdWU6ZnVuY3Rpb24oZSl7aWYodGhpcy5ib3JkZXJTdHlsZT1uZXcgJCxlIGluc3RhbmNlb2Ygby5EaWN0KWlmKGUuaGFzKCJCUyIpKXt2YXIgdD1lLmdldCgiQlMiKSxyPXQuZ2V0KCJUeXBlIik7ciYmISgwLG8uaXNOYW1lKShyLCJCb3JkZXIiKXx8KHRoaXMuYm9yZGVyU3R5bGUuc2V0V2lkdGgodC5nZXQoIlciKSx0aGlzLnJlY3RhbmdsZSksdGhpcy5ib3JkZXJTdHlsZS5zZXRTdHlsZSh0LmdldCgiUyIpKSx0aGlzLmJvcmRlclN0eWxlLnNldERhc2hBcnJheSh0LmdldEFycmF5KCJEIikpKX1lbHNlIGlmKGUuaGFzKCJCb3JkZXIiKSl7dmFyIG49ZS5nZXRBcnJheSgiQm9yZGVyIik7QXJyYXkuaXNBcnJheShuKSYmbi5sZW5ndGg+PTMmJih0aGlzLmJvcmRlclN0eWxlLnNldEhvcml6b250YWxDb3JuZXJSYWRpdXMoblswXSksdGhpcy5ib3JkZXJTdHlsZS5zZXRWZXJ0aWNhbENvcm5lclJhZGl1cyhuWzFdKSx0aGlzLmJvcmRlclN0eWxlLnNldFdpZHRoKG5bMl0sdGhpcy5yZWN0YW5nbGUpLDQ9PT1uLmxlbmd0aCYmdGhpcy5ib3JkZXJTdHlsZS5zZXREYXNoQXJyYXkoblszXSwhMCkpfWVsc2UgdGhpcy5ib3JkZXJTdHlsZS5zZXRXaWR0aCgwKX19LHtrZXk6InNldEFwcGVhcmFuY2UiLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMuYXBwZWFyYW5jZT1udWxsO3ZhciB0PWUuZ2V0KCJBUCIpO2lmKHQgaW5zdGFuY2VvZiBvLkRpY3Qpe3ZhciByPXQuZ2V0KCJOIik7aWYociBpbnN0YW5jZW9mIGMuQmFzZVN0cmVhbSl0aGlzLmFwcGVhcmFuY2U9cjtlbHNlIGlmKHIgaW5zdGFuY2VvZiBvLkRpY3Qpe3ZhciBuPWUuZ2V0KCJBUyIpO24gaW5zdGFuY2VvZiBvLk5hbWUmJnIuaGFzKG4ubmFtZSkmJih0aGlzLmFwcGVhcmFuY2U9ci5nZXQobi5uYW1lKSl9fX19LHtrZXk6InNldE9wdGlvbmFsQ29udGVudCIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5vYz1udWxsO3ZhciB0PWUuZ2V0KCJPQyIpO3QgaW5zdGFuY2VvZiBvLk5hbWU/KDAsbi53YXJuKSgic2V0T3B0aW9uYWxDb250ZW50OiBTdXBwb3J0IGZvciAvTmFtZS1lbnRyeSBpcyBub3QgaW1wbGVtZW50ZWQuIik6dCBpbnN0YW5jZW9mIG8uRGljdCYmKHRoaXMub2M9dCl9fSx7a2V5OiJsb2FkUmVzb3VyY2VzIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiB0LmRpY3QuZ2V0QXN5bmMoIlJlc291cmNlcyIpLnRoZW4oKGZ1bmN0aW9uKHQpe2lmKHQpcmV0dXJuIG5ldyBkLk9iamVjdExvYWRlcih0LGUsdC54cmVmKS5sb2FkKCkudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gdH0pKX0pKX19LHtrZXk6ImdldE9wZXJhdG9yTGlzdCIsdmFsdWU6KHM9UChDKCkubWFyaygoZnVuY3Rpb24gZSh0LHIsYSxpLHMpe3ZhciBjLHUsbCxmLGgsZCx2LHksbSxiO3JldHVybiBDKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6aWYoYz10aGlzLmRhdGEsdT10aGlzLmFwcGVhcmFuY2UsbD0hISh0aGlzLmRhdGEuaGFzT3duQ2FudmFzJiZhJm4uUmVuZGVyaW5nSW50ZW50RmxhZy5ESVNQTEFZKSx1KXtlLm5leHQ9ODticmVha31pZihsKXtlLm5leHQ9NjticmVha31yZXR1cm4gZS5hYnJ1cHQoInJldHVybiIse29wTGlzdDpuZXcgcC5PcGVyYXRvckxpc3Qsc2VwYXJhdGVGb3JtOiExLHNlcGFyYXRlQ2FudmFzOiExfSk7Y2FzZSA2Oih1PW5ldyBnLlN0cmluZ1N0cmVhbSgiIikpLmRpY3Q9bmV3IG8uRGljdDtjYXNlIDg6cmV0dXJuIGY9dS5kaWN0LGUubmV4dD0xMSx0aGlzLmxvYWRSZXNvdXJjZXMoWyJFeHRHU3RhdGUiLCJDb2xvclNwYWNlIiwiUGF0dGVybiIsIlNoYWRpbmciLCJYT2JqZWN0IiwiRm9udCJdLHUpO2Nhc2UgMTE6aWYoaD1lLnNlbnQsZD1mLmdldEFycmF5KCJCQm94Iil8fFswLDAsMSwxXSx2PWYuZ2V0QXJyYXkoIk1hdHJpeCIpfHxbMSwwLDAsMSwwLDBdLHk9QihjLnJlY3QsZCx2KSxtPW5ldyBwLk9wZXJhdG9yTGlzdCwhdGhpcy5vYyl7ZS5uZXh0PTIwO2JyZWFrfXJldHVybiBlLm5leHQ9MTksdC5wYXJzZU1hcmtlZENvbnRlbnRQcm9wcyh0aGlzLm9jLG51bGwpO2Nhc2UgMTk6Yj1lLnNlbnQ7Y2FzZSAyMDpyZXR1cm4gdm9pZCAwIT09YiYmbS5hZGRPcChuLk9QUy5iZWdpbk1hcmtlZENvbnRlbnRQcm9wcyxbIk9DIixiXSksbS5hZGRPcChuLk9QUy5iZWdpbkFubm90YXRpb24sW2MuaWQsYy5yZWN0LHksdixsXSksZS5uZXh0PTI0LHQuZ2V0T3BlcmF0b3JMaXN0KHtzdHJlYW06dSx0YXNrOnIscmVzb3VyY2VzOmgsb3BlcmF0b3JMaXN0Om0sZmFsbGJhY2tGb250RGljdDp0aGlzLl9mYWxsYmFja0ZvbnREaWN0fSk7Y2FzZSAyNDpyZXR1cm4gbS5hZGRPcChuLk9QUy5lbmRBbm5vdGF0aW9uLFtdKSx2b2lkIDAhPT1iJiZtLmFkZE9wKG4uT1BTLmVuZE1hcmtlZENvbnRlbnQsW10pLHRoaXMucmVzZXQoKSxlLmFicnVwdCgicmV0dXJuIix7b3BMaXN0Om0sc2VwYXJhdGVGb3JtOiExLHNlcGFyYXRlQ2FudmFzOmx9KTtjYXNlIDI4OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSksZnVuY3Rpb24oZSx0LHIsbixhKXtyZXR1cm4gcy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KX0se2tleToic2F2ZSIsdmFsdWU6KHI9UChDKCkubWFyaygoZnVuY3Rpb24gZSh0LHIsbil7cmV0dXJuIEMoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsbnVsbCk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpLGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gci5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KX0se2tleToiaGFzVGV4dENvbnRlbnQiLGdldDpmdW5jdGlvbigpe3JldHVybiExfX0se2tleToiZXh0cmFjdFRleHRDb250ZW50Iix2YWx1ZToodD1QKEMoKS5tYXJrKChmdW5jdGlvbiBlKHQscixuKXt2YXIgYSxpLG8scztyZXR1cm4gQygpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOmlmKHRoaXMuYXBwZWFyYW5jZSl7ZS5uZXh0PTI7YnJlYWt9cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iKTtjYXNlIDI6cmV0dXJuIGUubmV4dD00LHRoaXMubG9hZFJlc291cmNlcyhbIkV4dEdTdGF0ZSIsIkZvbnQiLCJQcm9wZXJ0aWVzIiwiWE9iamVjdCJdLHRoaXMuYXBwZWFyYW5jZSk7Y2FzZSA0OnJldHVybiBhPWUuc2VudCxpPVtdLG89W10scz17ZGVzaXJlZFNpemU6TWF0aC5JbmZpbml0eSxyZWFkeTohMCxlbnF1ZXVlOmZ1bmN0aW9uKGUsdCl7dmFyIHIsbj1BKGUuaXRlbXMpO3RyeXtmb3Iobi5zKCk7IShyPW4ubigpKS5kb25lOyl7dmFyIGE9ci52YWx1ZTtvLnB1c2goYS5zdHIpLGEuaGFzRU9MJiYoaS5wdXNoKG8uam9pbigiIikpLG8ubGVuZ3RoPTApfX1jYXRjaChlKXtuLmUoZSl9ZmluYWxseXtuLmYoKX19fSxlLm5leHQ9MTAsdC5nZXRUZXh0Q29udGVudCh7c3RyZWFtOnRoaXMuYXBwZWFyYW5jZSx0YXNrOnIscmVzb3VyY2VzOmEsaW5jbHVkZU1hcmtlZENvbnRlbnQ6ITAsY29tYmluZVRleHRJdGVtczohMCxzaW5rOnMsdmlld0JveDpufSk7Y2FzZSAxMDp0aGlzLnJlc2V0KCksby5sZW5ndGgmJmkucHVzaChvLmpvaW4oIiIpKSxpLmxlbmd0aD4wJiYodGhpcy5kYXRhLnRleHRDb250ZW50PWkpO2Nhc2UgMTM6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKSxmdW5jdGlvbihlLHIsbil7cmV0dXJuIHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfSl9LHtrZXk6ImdldEZpZWxkT2JqZWN0Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRhdGEua2lkSWRzP3tpZDp0aGlzLmRhdGEuaWQsYWN0aW9uczp0aGlzLmRhdGEuYWN0aW9ucyxuYW1lOnRoaXMuZGF0YS5maWVsZE5hbWUsc3Ryb2tlQ29sb3I6dGhpcy5kYXRhLmJvcmRlckNvbG9yLGZpbGxDb2xvcjp0aGlzLmRhdGEuYmFja2dyb3VuZENvbG9yLHR5cGU6IiIsa2lkSWRzOnRoaXMuZGF0YS5raWRJZHMscGFnZTp0aGlzLmRhdGEucGFnZUluZGV4LHJvdGF0aW9uOnRoaXMucm90YXRpb259Om51bGx9fSx7a2V5OiJyZXNldCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZSx0PUEodGhpcy5fc3RyZWFtcyk7dHJ5e2Zvcih0LnMoKTshKGU9dC5uKCkpLmRvbmU7KWUudmFsdWUucmVzZXQoKX1jYXRjaChlKXt0LmUoZSl9ZmluYWxseXt0LmYoKX19fSx7a2V5OiJfY29uc3RydWN0RmllbGROYW1lIix2YWx1ZTpmdW5jdGlvbihlKXtpZighZS5oYXMoIlQiKSYmIWUuaGFzKCJQYXJlbnQiKSlyZXR1cm4oMCxuLndhcm4pKCJVbmtub3duIGZpZWxkIG5hbWUsIGZhbGxpbmcgYmFjayB0byBlbXB0eSBmaWVsZCBuYW1lLiIpLCIiO2lmKCFlLmhhcygiUGFyZW50IikpcmV0dXJuKDAsbi5zdHJpbmdUb1BERlN0cmluZykoZS5nZXQoIlQiKSk7dmFyIHQ9W107ZS5oYXMoIlQiKSYmdC51bnNoaWZ0KCgwLG4uc3RyaW5nVG9QREZTdHJpbmcpKGUuZ2V0KCJUIikpKTt2YXIgcj1lLGE9bmV3IG8uUmVmU2V0O2ZvcihlLm9iaklkJiZhLnB1dChlLm9iaklkKTtyLmhhcygiUGFyZW50IikmJihyPXIuZ2V0KCJQYXJlbnQiKSlpbnN0YW5jZW9mIG8uRGljdCYmKCFyLm9iaklkfHwhYS5oYXMoci5vYmpJZCkpOylyLm9iaklkJiZhLnB1dChyLm9iaklkKSxyLmhhcygiVCIpJiZ0LnVuc2hpZnQoKDAsbi5zdHJpbmdUb1BERlN0cmluZykoci5nZXQoIlQiKSkpO3JldHVybiB0LmpvaW4oIi4iKX19XSksZX0oKTt0LkFubm90YXRpb249VTt2YXIgJD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXtqKHRoaXMsZSksdGhpcy53aWR0aD0xLHRoaXMuc3R5bGU9bi5Bbm5vdGF0aW9uQm9yZGVyU3R5bGVUeXBlLlNPTElELHRoaXMuZGFzaEFycmF5PVszXSx0aGlzLmhvcml6b250YWxDb3JuZXJSYWRpdXM9MCx0aGlzLnZlcnRpY2FsQ29ybmVyUmFkaXVzPTB9cmV0dXJuIF8oZSxbe2tleToic2V0V2lkdGgiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpbMCwwLDAsMF07aWYoZSBpbnN0YW5jZW9mIG8uTmFtZSl0aGlzLndpZHRoPTA7ZWxzZSBpZigibnVtYmVyIj09dHlwZW9mIGUpe2lmKGU+MCl7dmFyIHI9KHRbMl0tdFswXSkvMixhPSh0WzNdLXRbMV0pLzI7cj4wJiZhPjAmJihlPnJ8fGU+YSkmJigoMCxuLndhcm4pKCJBbm5vdGF0aW9uQm9yZGVyU3R5bGUuc2V0V2lkdGggLSBpZ25vcmluZyB3aWR0aDogIi5jb25jYXQoZSkpLGU9MSl9dGhpcy53aWR0aD1lfX19LHtrZXk6InNldFN0eWxlIix2YWx1ZTpmdW5jdGlvbihlKXtpZihlIGluc3RhbmNlb2Ygby5OYW1lKXN3aXRjaChlLm5hbWUpe2Nhc2UiUyI6dGhpcy5zdHlsZT1uLkFubm90YXRpb25Cb3JkZXJTdHlsZVR5cGUuU09MSUQ7YnJlYWs7Y2FzZSJEIjp0aGlzLnN0eWxlPW4uQW5ub3RhdGlvbkJvcmRlclN0eWxlVHlwZS5EQVNIRUQ7YnJlYWs7Y2FzZSJCIjp0aGlzLnN0eWxlPW4uQW5ub3RhdGlvbkJvcmRlclN0eWxlVHlwZS5CRVZFTEVEO2JyZWFrO2Nhc2UiSSI6dGhpcy5zdHlsZT1uLkFubm90YXRpb25Cb3JkZXJTdHlsZVR5cGUuSU5TRVQ7YnJlYWs7Y2FzZSJVIjp0aGlzLnN0eWxlPW4uQW5ub3RhdGlvbkJvcmRlclN0eWxlVHlwZS5VTkRFUkxJTkV9fX0se2tleToic2V0RGFzaEFycmF5Iix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSYmYXJndW1lbnRzWzFdO2lmKEFycmF5LmlzQXJyYXkoZSkmJmUubGVuZ3RoPjApe3ZhciByLG49ITAsYT0hMCxpPUEoZSk7dHJ5e2ZvcihpLnMoKTshKHI9aS5uKCkpLmRvbmU7KXt2YXIgcz1yLnZhbHVlO2lmKCEoK3M+PTApKXtuPSExO2JyZWFrfXM+MCYmKGE9ITEpfX1jYXRjaChlKXtpLmUoZSl9ZmluYWxseXtpLmYoKX1uJiYhYT8odGhpcy5kYXNoQXJyYXk9ZSx0JiZ0aGlzLnNldFN0eWxlKG8uTmFtZS5nZXQoIkQiKSkpOnRoaXMud2lkdGg9MH1lbHNlIGUmJih0aGlzLndpZHRoPTApfX0se2tleToic2V0SG9yaXpvbnRhbENvcm5lclJhZGl1cyIsdmFsdWU6ZnVuY3Rpb24oZSl7TnVtYmVyLmlzSW50ZWdlcihlKSYmKHRoaXMuaG9yaXpvbnRhbENvcm5lclJhZGl1cz1lKX19LHtrZXk6InNldFZlcnRpY2FsQ29ybmVyUmFkaXVzIix2YWx1ZTpmdW5jdGlvbihlKXtOdW1iZXIuaXNJbnRlZ2VyKGUpJiYodGhpcy52ZXJ0aWNhbENvcm5lclJhZGl1cz1lKX19XSksZX0oKTt0LkFubm90YXRpb25Cb3JkZXJTdHlsZT0kO3ZhciBYPWZ1bmN0aW9uKGUpe20oaSxlKTt2YXIgdCxyLGE9dyhpKTtmdW5jdGlvbiBpKGUpe3ZhciB0O2oodGhpcyxpKSx0PWEuY2FsbCh0aGlzLGUpO3ZhciByPWUuZGljdDtpZihyLmhhcygiSVJUIikpe3ZhciBzPXIuZ2V0UmF3KCJJUlQiKTt0LmRhdGEuaW5SZXBseVRvPXMgaW5zdGFuY2VvZiBvLlJlZj9zLnRvU3RyaW5nKCk6bnVsbDt2YXIgYz1yLmdldCgiUlQiKTt0LmRhdGEucmVwbHlUeXBlPWMgaW5zdGFuY2VvZiBvLk5hbWU/Yy5uYW1lOm4uQW5ub3RhdGlvblJlcGx5VHlwZS5SRVBMWX1pZih0LmRhdGEucmVwbHlUeXBlPT09bi5Bbm5vdGF0aW9uUmVwbHlUeXBlLkdST1VQKXt2YXIgdT1yLmdldCgiSVJUIik7dC5zZXRUaXRsZSh1LmdldCgiVCIpKSx0LmRhdGEudGl0bGVPYmo9dC5fdGl0bGUsdC5zZXRDb250ZW50cyh1LmdldCgiQ29udGVudHMiKSksdC5kYXRhLmNvbnRlbnRzT2JqPXQuX2NvbnRlbnRzLHUuaGFzKCJDcmVhdGlvbkRhdGUiKT8odC5zZXRDcmVhdGlvbkRhdGUodS5nZXQoIkNyZWF0aW9uRGF0ZSIpKSx0LmRhdGEuY3JlYXRpb25EYXRlPXQuY3JlYXRpb25EYXRlKTp0LmRhdGEuY3JlYXRpb25EYXRlPW51bGwsdS5oYXMoIk0iKT8odC5zZXRNb2RpZmljYXRpb25EYXRlKHUuZ2V0KCJNIikpLHQuZGF0YS5tb2RpZmljYXRpb25EYXRlPXQubW9kaWZpY2F0aW9uRGF0ZSk6dC5kYXRhLm1vZGlmaWNhdGlvbkRhdGU9bnVsbCx0LmRhdGEuaGFzUG9wdXA9dS5oYXMoIlBvcHVwIiksdS5oYXMoIkMiKT8odC5zZXRDb2xvcih1LmdldEFycmF5KCJDIikpLHQuZGF0YS5jb2xvcj10LmNvbG9yKTp0LmRhdGEuY29sb3I9bnVsbH1lbHNlIHQuZGF0YS50aXRsZU9iaj10Ll90aXRsZSx0LnNldENyZWF0aW9uRGF0ZShyLmdldCgiQ3JlYXRpb25EYXRlIikpLHQuZGF0YS5jcmVhdGlvbkRhdGU9dC5jcmVhdGlvbkRhdGUsdC5kYXRhLmhhc1BvcHVwPXIuaGFzKCJQb3B1cCIpLHIuaGFzKCJDIil8fCh0LmRhdGEuY29sb3I9bnVsbCk7cmV0dXJuIHIuaGFzKCJSQyIpJiYodC5kYXRhLnJpY2hUZXh0PXYuWEZBRmFjdG9yeS5nZXRSaWNoVGV4dEFzSHRtbChyLmdldCgiUkMiKSkpLHR9cmV0dXJuIF8oaSxbe2tleToic2V0Q3JlYXRpb25EYXRlIix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLmNyZWF0aW9uRGF0ZT0ic3RyaW5nIj09dHlwZW9mIGU/ZTpudWxsfX0se2tleToiX3NldERlZmF1bHRBcHBlYXJhbmNlIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1lLnhyZWYscj1lLmV4dHJhLG49ZS5zdHJva2VDb2xvcixhPWUuZmlsbENvbG9yLGk9ZS5ibGVuZE1vZGUscz1lLnN0cm9rZUFscGhhLGM9ZS5maWxsQWxwaGEsdT1lLnBvaW50c0NhbGxiYWNrLGw9TnVtYmVyLk1BWF9WQUxVRSxmPU51bWJlci5NQVhfVkFMVUUsaD1OdW1iZXIuTUlOX1ZBTFVFLGQ9TnVtYmVyLk1JTl9WQUxVRSxwPVsicSJdO3ImJnAucHVzaChyKSxuJiZwLnB1c2goIiIuY29uY2F0KG5bMF0sIiAiKS5jb25jYXQoblsxXSwiICIpLmNvbmNhdChuWzJdLCIgUkciKSksYSYmcC5wdXNoKCIiLmNvbmNhdChhWzBdLCIgIikuY29uY2F0KGFbMV0sIiAiKS5jb25jYXQoYVsyXSwiIHJnIikpO3ZhciB2PXRoaXMuZGF0YS5xdWFkUG9pbnRzO3Z8fCh2PVtbe3g6dGhpcy5yZWN0YW5nbGVbMF0seTp0aGlzLnJlY3RhbmdsZVszXX0se3g6dGhpcy5yZWN0YW5nbGVbMl0seTp0aGlzLnJlY3RhbmdsZVszXX0se3g6dGhpcy5yZWN0YW5nbGVbMF0seTp0aGlzLnJlY3RhbmdsZVsxXX0se3g6dGhpcy5yZWN0YW5nbGVbMl0seTp0aGlzLnJlY3RhbmdsZVsxXX1dXSk7dmFyIHksbT1BKHYpO3RyeXtmb3IobS5zKCk7ISh5PW0ubigpKS5kb25lOyl7dmFyIGI9VCh1KHAseS52YWx1ZSksNCksdz1iWzBdLGs9YlsxXSxTPWJbMl0seD1iWzNdO2w9TWF0aC5taW4obCx3KSxoPU1hdGgubWF4KGgsayksZj1NYXRoLm1pbihmLFMpLGQ9TWF0aC5tYXgoZCx4KX19Y2F0Y2goZSl7bS5lKGUpfWZpbmFsbHl7bS5mKCl9cC5wdXNoKCJRIik7dmFyIE89bmV3IG8uRGljdCh0KSxDPW5ldyBvLkRpY3QodCk7Qy5zZXQoIlN1YnR5cGUiLG8uTmFtZS5nZXQoIkZvcm0iKSk7dmFyIEY9bmV3IGcuU3RyaW5nU3RyZWFtKHAuam9pbigiICIpKTtGLmRpY3Q9QyxPLnNldCgiRm0wIixGKTt2YXIgUD1uZXcgby5EaWN0KHQpO2kmJlAuc2V0KCJCTSIsby5OYW1lLmdldChpKSksIm51bWJlciI9PXR5cGVvZiBzJiZQLnNldCgiQ0EiLHMpLCJudW1iZXIiPT10eXBlb2YgYyYmUC5zZXQoImNhIixjKTt2YXIgST1uZXcgby5EaWN0KHQpO0kuc2V0KCJHUzAiLFApO3ZhciBFPW5ldyBvLkRpY3QodCk7RS5zZXQoIkV4dEdTdGF0ZSIsSSksRS5zZXQoIlhPYmplY3QiLE8pO3ZhciBqPW5ldyBvLkRpY3QodCk7ai5zZXQoIlJlc291cmNlcyIsRSk7dmFyIE09dGhpcy5kYXRhLnJlY3Q9W2wsZixoLGRdO2ouc2V0KCJCQm94IixNKSx0aGlzLmFwcGVhcmFuY2U9bmV3IGcuU3RyaW5nU3RyZWFtKCIvR1MwIGdzIC9GbTAgRG8iKSx0aGlzLmFwcGVhcmFuY2UuZGljdD1qLHRoaXMuX3N0cmVhbXMucHVzaCh0aGlzLmFwcGVhcmFuY2UsRil9fV0sW3trZXk6ImNyZWF0ZU5ld0Fubm90YXRpb24iLHZhbHVlOihyPVAoQygpLm1hcmsoKGZ1bmN0aW9uIGUodCxyLG4sYSl7dmFyIGksbyxjLHUsbCxmLGg7cmV0dXJuIEMoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gaT10LmdldE5ld1RlbXBvcmFyeVJlZigpLGUubmV4dD0zLHRoaXMuY3JlYXRlTmV3QXBwZWFyYW5jZVN0cmVhbShyLHQsYSk7Y2FzZSAzOnJldHVybiBvPWUuc2VudCxjPVtdLG8/KGw9dC5nZXROZXdUZW1wb3JhcnlSZWYoKSx1PXRoaXMuY3JlYXRlTmV3RGljdChyLHQse2FwUmVmOmx9KSxmPXQuZW5jcnlwdD90LmVuY3J5cHQuY3JlYXRlQ2lwaGVyVHJhbnNmb3JtKGwubnVtLGwuZ2VuKTpudWxsLCgwLHMud3JpdGVPYmplY3QpKGwsbyxjLGYpLG4ucHVzaCh7cmVmOmwsZGF0YTpjLmpvaW4oIiIpfSkpOnU9dGhpcy5jcmVhdGVOZXdEaWN0KHIsdCx7fSksYy5sZW5ndGg9MCxoPXQuZW5jcnlwdD90LmVuY3J5cHQuY3JlYXRlQ2lwaGVyVHJhbnNmb3JtKGkubnVtLGkuZ2VuKTpudWxsLCgwLHMud3JpdGVPYmplY3QpKGksdSxjLGgpLGUuYWJydXB0KCJyZXR1cm4iLHtyZWY6aSxkYXRhOmMuam9pbigiIil9KTtjYXNlIDEwOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSksZnVuY3Rpb24oZSx0LG4sYSl7cmV0dXJuIHIuYXBwbHkodGhpcyxhcmd1bWVudHMpfSl9LHtrZXk6ImNyZWF0ZU5ld1ByaW50QW5ub3RhdGlvbiIsdmFsdWU6KHQ9UChDKCkubWFyaygoZnVuY3Rpb24gZSh0LHIsbil7dmFyIGEsaTtyZXR1cm4gQygpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLmNyZWF0ZU5ld0FwcGVhcmFuY2VTdHJlYW0ocix0LG4pO2Nhc2UgMjpyZXR1cm4gYT1lLnNlbnQsaT10aGlzLmNyZWF0ZU5ld0RpY3Qocix0LHthcDphfSksZS5hYnJ1cHQoInJldHVybiIsbmV3IHRoaXMucHJvdG90eXBlLmNvbnN0cnVjdG9yKHtkaWN0OmkseHJlZjp0LGlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkOm4uaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWR9KSk7Y2FzZSA1OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSksZnVuY3Rpb24oZSxyLG4pe3JldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pfV0pLGl9KFUpO3QuTWFya3VwQW5ub3RhdGlvbj1YO3ZhciBIPWZ1bmN0aW9uKGUpe20oZixlKTt2YXIgdCxyLGMsdSxsPXcoZik7ZnVuY3Rpb24gZihlKXt2YXIgdDtqKHRoaXMsZiksdD1sLmNhbGwodGhpcyxlKTt2YXIgcj1lLmRpY3QsaT1lLnhyZWYscz10LmRhdGE7dC5yZWY9ZS5yZWYsdC5fbmVlZEFwcGVhcmFuY2VzPWUubmVlZEFwcGVhcmFuY2VzLHMuYW5ub3RhdGlvblR5cGU9bi5Bbm5vdGF0aW9uVHlwZS5XSURHRVQsdm9pZCAwPT09cy5maWVsZE5hbWUmJihzLmZpZWxkTmFtZT10Ll9jb25zdHJ1Y3RGaWVsZE5hbWUocikpLHZvaWQgMD09PXMuYWN0aW9ucyYmKHMuYWN0aW9ucz0oMCxhLmNvbGxlY3RBY3Rpb25zKShpLHIsbi5Bbm5vdGF0aW9uQWN0aW9uRXZlbnRUeXBlKSk7dmFyIGM9KDAsYS5nZXRJbmhlcml0YWJsZVByb3BlcnR5KSh7ZGljdDpyLGtleToiViIsZ2V0QXJyYXk6ITB9KTtzLmZpZWxkVmFsdWU9dC5fZGVjb2RlRm9ybVZhbHVlKGMpO3ZhciB1PSgwLGEuZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eSkoe2RpY3Q6cixrZXk6IkRWIixnZXRBcnJheTohMH0pO2lmKHMuZGVmYXVsdEZpZWxkVmFsdWU9dC5fZGVjb2RlRm9ybVZhbHVlKHUpLHZvaWQgMD09PWMmJmUueGZhRGF0YXNldHMpe3ZhciBoPXQuX3RpdGxlLnN0cjtoJiYodC5faGFzVmFsdWVGcm9tWEZBPSEwLHMuZmllbGRWYWx1ZT1jPWUueGZhRGF0YXNldHMuZ2V0VmFsdWUoaCkpfXZvaWQgMD09PWMmJm51bGwhPT1zLmRlZmF1bHRGaWVsZFZhbHVlJiYocy5maWVsZFZhbHVlPXMuZGVmYXVsdEZpZWxkVmFsdWUpLHMuYWx0ZXJuYXRpdmVUZXh0PSgwLG4uc3RyaW5nVG9QREZTdHJpbmcpKHIuZ2V0KCJUVSIpfHwiIiksdC5zZXREZWZhdWx0QXBwZWFyYW5jZShlKSxzLmhhc0FwcGVhcmFuY2U9dC5fbmVlZEFwcGVhcmFuY2VzJiZ2b2lkIDAhPT1zLmZpZWxkVmFsdWUmJm51bGwhPT1zLmZpZWxkVmFsdWV8fHMuaGFzQXBwZWFyYW5jZTt2YXIgZD0oMCxhLmdldEluaGVyaXRhYmxlUHJvcGVydHkpKHtkaWN0OnIsa2V5OiJGVCJ9KTtzLmZpZWxkVHlwZT1kIGluc3RhbmNlb2Ygby5OYW1lP2QubmFtZTpudWxsO3ZhciBwPSgwLGEuZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eSkoe2RpY3Q6cixrZXk6IkRSIn0pLGc9ZS5hY3JvRm9ybS5nZXQoIkRSIiksdj10LmFwcGVhcmFuY2UmJnQuYXBwZWFyYW5jZS5kaWN0LmdldCgiUmVzb3VyY2VzIik7cmV0dXJuIHQuX2ZpZWxkUmVzb3VyY2VzPXtsb2NhbFJlc291cmNlczpwLGFjcm9Gb3JtUmVzb3VyY2VzOmcsYXBwZWFyYW5jZVJlc291cmNlczp2LG1lcmdlZFJlc291cmNlczpvLkRpY3QubWVyZ2Uoe3hyZWY6aSxkaWN0QXJyYXk6W3AsdixnXSxtZXJnZVN1YkRpY3RzOiEwfSl9LHMuZmllbGRGbGFncz0oMCxhLmdldEluaGVyaXRhYmxlUHJvcGVydHkpKHtkaWN0OnIsa2V5OiJGZiJ9KSwoIU51bWJlci5pc0ludGVnZXIocy5maWVsZEZsYWdzKXx8cy5maWVsZEZsYWdzPDApJiYocy5maWVsZEZsYWdzPTApLHMucmVhZE9ubHk9dC5oYXNGaWVsZEZsYWcobi5Bbm5vdGF0aW9uRmllbGRGbGFnLlJFQURPTkxZKSxzLnJlcXVpcmVkPXQuaGFzRmllbGRGbGFnKG4uQW5ub3RhdGlvbkZpZWxkRmxhZy5SRVFVSVJFRCkscy5oaWRkZW49dC5faGFzRmxhZyhzLmFubm90YXRpb25GbGFncyxuLkFubm90YXRpb25GbGFnLkhJRERFTiksdH1yZXR1cm4gXyhmLFt7a2V5OiJfZGVjb2RlRm9ybVZhbHVlIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9lLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlfSkpLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuKDAsbi5zdHJpbmdUb1BERlN0cmluZykoZSl9KSk6ZSBpbnN0YW5jZW9mIG8uTmFtZT8oMCxuLnN0cmluZ1RvUERGU3RyaW5nKShlLm5hbWUpOiJzdHJpbmciPT10eXBlb2YgZT8oMCxuLnN0cmluZ1RvUERGU3RyaW5nKShlKTpudWxsfX0se2tleToiaGFzRmllbGRGbGFnIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4hISh0aGlzLmRhdGEuZmllbGRGbGFncyZlKX19LHtrZXk6ImdldFJvdGF0aW9uTWF0cml4Iix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1lP2UuZ2V0KHRoaXMuZGF0YS5pZCk6dm9pZCAwLHI9dCYmdC5yb3RhdGlvbjtpZih2b2lkIDA9PT1yJiYocj10aGlzLnJvdGF0aW9uKSwwPT09cilyZXR1cm4gbi5JREVOVElUWV9NQVRSSVg7dmFyIGk9dGhpcy5kYXRhLnJlY3RbMl0tdGhpcy5kYXRhLnJlY3RbMF0sbz10aGlzLmRhdGEucmVjdFszXS10aGlzLmRhdGEucmVjdFsxXTtyZXR1cm4oMCxhLmdldFJvdGF0aW9uTWF0cml4KShyLGksbyl9fSx7a2V5OiJnZXRCb3JkZXJBbmRCYWNrZ3JvdW5kQXBwZWFyYW5jZXMiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWU/ZS5nZXQodGhpcy5kYXRhLmlkKTp2b2lkIDAscj10JiZ0LnJvdGF0aW9uO2lmKHZvaWQgMD09PXImJihyPXRoaXMucm90YXRpb24pLCF0aGlzLmJhY2tncm91bmRDb2xvciYmIXRoaXMuYm9yZGVyQ29sb3IpcmV0dXJuIiI7dmFyIG49dGhpcy5kYXRhLnJlY3RbMl0tdGhpcy5kYXRhLnJlY3RbMF0sYT10aGlzLmRhdGEucmVjdFszXS10aGlzLmRhdGEucmVjdFsxXSxvPTA9PT1yfHwxODA9PT1yPyIwIDAgIi5jb25jYXQobiwiICIpLmNvbmNhdChhLCIgcmUiKToiMCAwICIuY29uY2F0KGEsIiAiKS5jb25jYXQobiwiIHJlIikscz0iIjtpZih0aGlzLmJhY2tncm91bmRDb2xvciYmKHM9IiIuY29uY2F0KCgwLGkuZ2V0UGRmQ29sb3IpKHRoaXMuYmFja2dyb3VuZENvbG9yLCEwKSwiICIpLmNvbmNhdChvLCIgZiAiKSksdGhpcy5ib3JkZXJDb2xvcil7dmFyIGM9dGhpcy5ib3JkZXJTdHlsZS53aWR0aHx8MTtzKz0iIi5jb25jYXQoYywiIHcgIikuY29uY2F0KCgwLGkuZ2V0UGRmQ29sb3IpKHRoaXMuYm9yZGVyQ29sb3IsITEpLCIgIikuY29uY2F0KG8sIiBTICIpfXJldHVybiBzfX0se2tleToiZ2V0T3BlcmF0b3JMaXN0Iix2YWx1ZToodT1QKEMoKS5tYXJrKChmdW5jdGlvbiBlKHQscixhLGksbyl7dmFyIHMsYyx1LGwsaCxkLHY7cmV0dXJuIEMoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDppZighaXx8dGhpcyBpbnN0YW5jZW9mIFcpe2UubmV4dD0yO2JyZWFrfXJldHVybiBlLmFicnVwdCgicmV0dXJuIix7b3BMaXN0Om5ldyBwLk9wZXJhdG9yTGlzdCxzZXBhcmF0ZUZvcm06ITAsc2VwYXJhdGVDYW52YXM6ITF9KTtjYXNlIDI6aWYodGhpcy5faGFzVGV4dCl7ZS5uZXh0PTQ7YnJlYWt9cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHkoeChmLnByb3RvdHlwZSksImdldE9wZXJhdG9yTGlzdCIsdGhpcykuY2FsbCh0aGlzLHQscixhLGksbykpO2Nhc2UgNDpyZXR1cm4gZS5uZXh0PTYsdGhpcy5fZ2V0QXBwZWFyYW5jZSh0LHIsYSxvKTtjYXNlIDY6aWYocz1lLnNlbnQsIXRoaXMuYXBwZWFyYW5jZXx8bnVsbCE9PXMpe2UubmV4dD05O2JyZWFrfXJldHVybiBlLmFicnVwdCgicmV0dXJuIix5KHgoZi5wcm90b3R5cGUpLCJnZXRPcGVyYXRvckxpc3QiLHRoaXMpLmNhbGwodGhpcyx0LHIsYSxpLG8pKTtjYXNlIDk6aWYoYz1uZXcgcC5PcGVyYXRvckxpc3QsdGhpcy5fZGVmYXVsdEFwcGVhcmFuY2UmJm51bGwhPT1zKXtlLm5leHQ9MTI7YnJlYWt9cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHtvcExpc3Q6YyxzZXBhcmF0ZUZvcm06ITEsc2VwYXJhdGVDYW52YXM6ITF9KTtjYXNlIDEyOmlmKHU9WzEsMCwwLDEsMCwwXSxsPVswLDAsdGhpcy5kYXRhLnJlY3RbMl0tdGhpcy5kYXRhLnJlY3RbMF0sdGhpcy5kYXRhLnJlY3RbM10tdGhpcy5kYXRhLnJlY3RbMV1dLGg9Qih0aGlzLmRhdGEucmVjdCxsLHUpLCF0aGlzLm9jKXtlLm5leHQ9MTk7YnJlYWt9cmV0dXJuIGUubmV4dD0xOCx0LnBhcnNlTWFya2VkQ29udGVudFByb3BzKHRoaXMub2MsbnVsbCk7Y2FzZSAxODpkPWUuc2VudDtjYXNlIDE5OnJldHVybiB2b2lkIDAhPT1kJiZjLmFkZE9wKG4uT1BTLmJlZ2luTWFya2VkQ29udGVudFByb3BzLFsiT0MiLGRdKSxjLmFkZE9wKG4uT1BTLmJlZ2luQW5ub3RhdGlvbixbdGhpcy5kYXRhLmlkLHRoaXMuZGF0YS5yZWN0LGgsdGhpcy5nZXRSb3RhdGlvbk1hdHJpeChvKSwhMV0pLHY9bmV3IGcuU3RyaW5nU3RyZWFtKHMpLGUubmV4dD0yNCx0LmdldE9wZXJhdG9yTGlzdCh7c3RyZWFtOnYsdGFzazpyLHJlc291cmNlczp0aGlzLl9maWVsZFJlc291cmNlcy5tZXJnZWRSZXNvdXJjZXMsb3BlcmF0b3JMaXN0OmN9KTtjYXNlIDI0OnJldHVybiBjLmFkZE9wKG4uT1BTLmVuZEFubm90YXRpb24sW10pLHZvaWQgMCE9PWQmJmMuYWRkT3Aobi5PUFMuZW5kTWFya2VkQ29udGVudCxbXSksZS5hYnJ1cHQoInJldHVybiIse29wTGlzdDpjLHNlcGFyYXRlRm9ybTohMSxzZXBhcmF0ZUNhbnZhczohMX0pO2Nhc2UgMjc6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKSxmdW5jdGlvbihlLHQscixuLGEpe3JldHVybiB1LmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pfSx7a2V5OiJfZ2V0TUtEaWN0Iix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1uZXcgby5EaWN0KG51bGwpO3JldHVybiBlJiZ0LnNldCgiUiIsZSksdGhpcy5ib3JkZXJDb2xvciYmdC5zZXQoIkJDIixOKHRoaXMuYm9yZGVyQ29sb3IpKSx0aGlzLmJhY2tncm91bmRDb2xvciYmdC5zZXQoIkJHIixOKHRoaXMuYmFja2dyb3VuZENvbG9yKSksdC5zaXplPjA/dDpudWxsfX0se2tleToic2F2ZSIsdmFsdWU6KGM9UChDKCkubWFyaygoZnVuY3Rpb24gZSh0LHIsaSl7dmFyIGMsdSxsLGYsaCxkLHAsdix5LG0sYix3LGssUyx4LE8sRixQLFQsSSxFLGosTSxfLEwsUj10aGlzO3JldHVybiBDKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6aWYoYz1pP2kuZ2V0KHRoaXMuZGF0YS5pZCk6dm9pZCAwLHU9YyYmYy52YWx1ZSxsPWMmJmMucm90YXRpb24sdSE9PXRoaXMuZGF0YS5maWVsZFZhbHVlJiZ2b2lkIDAhPT11KXtlLm5leHQ9NzticmVha31pZih0aGlzLl9oYXNWYWx1ZUZyb21YRkF8fHZvaWQgMCE9PWwpe2UubmV4dD02O2JyZWFrfXJldHVybiBlLmFicnVwdCgicmV0dXJuIixudWxsKTtjYXNlIDY6dT11fHx0aGlzLmRhdGEuZmllbGRWYWx1ZTtjYXNlIDc6aWYodm9pZCAwIT09bHx8dGhpcy5faGFzVmFsdWVGcm9tWEZBfHwhQXJyYXkuaXNBcnJheSh1KXx8IUFycmF5LmlzQXJyYXkodGhpcy5kYXRhLmZpZWxkVmFsdWUpfHx1Lmxlbmd0aCE9PXRoaXMuZGF0YS5maWVsZFZhbHVlLmxlbmd0aHx8IXUuZXZlcnkoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9PT1SLmRhdGEuZmllbGRWYWx1ZVt0XX0pKSl7ZS5uZXh0PTk7YnJlYWt9cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLG51bGwpO2Nhc2UgOTppZih2b2lkIDA9PT1sJiYobD10aGlzLnJvdGF0aW9uKSxmPW51bGwsdGhpcy5fbmVlZEFwcGVhcmFuY2VzKXtlLm5leHQ9MTk7YnJlYWt9cmV0dXJuIGUubmV4dD0xNCx0aGlzLl9nZXRBcHBlYXJhbmNlKHQscixuLlJlbmRlcmluZ0ludGVudEZsYWcuU0FWRSxpKTtjYXNlIDE0OmlmKG51bGwhPT0oZj1lLnNlbnQpKXtlLm5leHQ9MTc7YnJlYWt9cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLG51bGwpO2Nhc2UgMTc6ZS5uZXh0PTE5O2JyZWFrO2Nhc2UgMTk6aWYoaD0hMSxmJiZmLm5lZWRBcHBlYXJhbmNlcyYmKGg9ITAsZj1udWxsKSxkPXQueHJlZiwocD1kLmZldGNoSWZSZWYodGhpcy5yZWYpKWluc3RhbmNlb2Ygby5EaWN0KXtlLm5leHQ9MjU7YnJlYWt9cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLG51bGwpO2Nhc2UgMjU6dj1uZXcgby5EaWN0KGQpLHk9QShwLmdldEtleXMoKSk7dHJ5e2Zvcih5LnMoKTshKG09eS5uKCkpLmRvbmU7KSJBUCIhPT0oYj1tLnZhbHVlKSYmdi5zZXQoYixwLmdldFJhdyhiKSl9Y2F0Y2goZSl7eS5lKGUpfWZpbmFsbHl7eS5mKCl9cmV0dXJuIHc9e3BhdGg6KDAsbi5zdHJpbmdUb1BERlN0cmluZykodi5nZXQoIlQiKXx8IiIpLHZhbHVlOnV9LGs9ZnVuY3Rpb24oZSl7cmV0dXJuKDAsYS5pc0FzY2lpKShlKT9lOigwLGEuc3RyaW5nVG9VVEYxNlN0cmluZykoZSwhMCl9LHYuc2V0KCJWIixBcnJheS5pc0FycmF5KHUpP3UubWFwKGspOmsodSkpLChTPXRoaXMuX2dldE1LRGljdChsKSkmJnYuc2V0KCJNSyIsUykseD1kLmVuY3J5cHQsTz14P3guY3JlYXRlQ2lwaGVyVHJhbnNmb3JtKHRoaXMucmVmLm51bSx0aGlzLnJlZi5nZW4pOm51bGwsRj1bXSxQPVt7cmVmOnRoaXMucmVmLGRhdGE6IiIseGZhOncsbmVlZEFwcGVhcmFuY2VzOmh9XSxudWxsIT09ZiYmKFQ9ZC5nZXROZXdUZW1wb3JhcnlSZWYoKSxJPW5ldyBvLkRpY3QoZCksdi5zZXQoIkFQIixJKSxJLnNldCgiTiIsVCksRT1udWxsLHgmJihFPXguY3JlYXRlQ2lwaGVyVHJhbnNmb3JtKFQubnVtLFQuZ2VuKSxmPUUuZW5jcnlwdFN0cmluZyhmKSksaj10aGlzLl9nZXRTYXZlRmllbGRSZXNvdXJjZXMoZCksTT1uZXcgZy5TdHJpbmdTdHJlYW0oZiksKF89TS5kaWN0PW5ldyBvLkRpY3QoZCkpLnNldCgiTGVuZ3RoIixmLmxlbmd0aCksXy5zZXQoIlN1YnR5cGUiLG8uTmFtZS5nZXQoIkZvcm0iKSksXy5zZXQoIlJlc291cmNlcyIsaiksXy5zZXQoIkJCb3giLFswLDAsdGhpcy5kYXRhLnJlY3RbMl0tdGhpcy5kYXRhLnJlY3RbMF0sdGhpcy5kYXRhLnJlY3RbM10tdGhpcy5kYXRhLnJlY3RbMV1dKSwoTD10aGlzLmdldFJvdGF0aW9uTWF0cml4KGkpKSE9PW4uSURFTlRJVFlfTUFUUklYJiZfLnNldCgiTWF0cml4IixMKSwoMCxzLndyaXRlT2JqZWN0KShULE0sRixFKSxQLnB1c2goe3JlZjpULGRhdGE6Ri5qb2luKCIiKSx4ZmE6bnVsbCxuZWVkQXBwZWFyYW5jZXM6ITF9KSxGLmxlbmd0aD0wKSx2LnNldCgiTSIsIkQ6Ii5jb25jYXQoKDAsbi5nZXRNb2RpZmljYXRpb25EYXRlKSgpKSksKDAscy53cml0ZU9iamVjdCkodGhpcy5yZWYsdixGLE8pLFBbMF0uZGF0YT1GLmpvaW4oIiIpLGUuYWJydXB0KCJyZXR1cm4iLFApO2Nhc2UgNDI6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKSxmdW5jdGlvbihlLHQscil7cmV0dXJuIGMuYXBwbHkodGhpcyxhcmd1bWVudHMpfSl9LHtrZXk6Il9nZXRBcHBlYXJhbmNlIix2YWx1ZToocj1QKEMoKS5tYXJrKChmdW5jdGlvbiBlKHQscixvLHMpe3ZhciBjLHUsbCxoLGQscCxnLHYseSxtLGIsdyxrLFMseCxPLEYsUCxJLEUsaixNLF8sTCxSLE4sRCxCLFUsJCxYLEgscSxHLHosVyxWLFksSyxKLFosUSxlZSx0ZTtyZXR1cm4gQygpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOmlmKCF0aGlzLmhhc0ZpZWxkRmxhZyhuLkFubm90YXRpb25GaWVsZEZsYWcuUEFTU1dPUkQpKXtlLm5leHQ9MzticmVha31yZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsbnVsbCk7Y2FzZSAzOmlmKChjPXM/cy5nZXQodGhpcy5kYXRhLmlkKTp2b2lkIDApJiYodT1jLmZvcm1hdHRlZFZhbHVlfHxjLnZhbHVlLGw9Yy5yb3RhdGlvbiksdm9pZCAwIT09bHx8dm9pZCAwIT09dXx8dGhpcy5fbmVlZEFwcGVhcmFuY2VzKXtlLm5leHQ9ODticmVha31pZih0aGlzLl9oYXNWYWx1ZUZyb21YRkEmJiF0aGlzLmFwcGVhcmFuY2Upe2UubmV4dD04O2JyZWFrfXJldHVybiBlLmFicnVwdCgicmV0dXJuIixudWxsKTtjYXNlIDg6aWYoaD10aGlzLmdldEJvcmRlckFuZEJhY2tncm91bmRBcHBlYXJhbmNlcyhzKSx2b2lkIDAhPT11KXtlLm5leHQ9MTM7YnJlYWt9aWYodT10aGlzLmRhdGEuZmllbGRWYWx1ZSl7ZS5uZXh0PTEzO2JyZWFrfXJldHVybiBlLmFicnVwdCgicmV0dXJuIiwiL1R4IEJNQyBxICIuY29uY2F0KGgsIlEgRU1DIikpO2Nhc2UgMTM6aWYoQXJyYXkuaXNBcnJheSh1KSYmMT09PXUubGVuZ3RoJiYodT11WzBdKSwoMCxuLmFzc2VydCkoInN0cmluZyI9PXR5cGVvZiB1LCJFeHBlY3RlZCBgdmFsdWVgIHRvIGJlIGEgc3RyaW5nLiIpLHRoaXMuZGF0YS5jb21ibz8oZD10aGlzLmRhdGEub3B0aW9ucy5maW5kKChmdW5jdGlvbihlKXt2YXIgdD1lLmV4cG9ydFZhbHVlO3JldHVybiB1PT09dH0pKXx8dGhpcy5kYXRhLm9wdGlvbnNbMF0sdT1kJiZkLmRpc3BsYXlWYWx1ZXx8IiIpOnU9dS50cmltKCksIiIhPT11KXtlLm5leHQ9MTg7YnJlYWt9cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLCIvVHggQk1DIHEgIi5jb25jYXQoaCwiUSBFTUMiKSk7Y2FzZSAxODpyZXR1cm4gdm9pZCAwPT09bCYmKGw9dGhpcy5yb3RhdGlvbikscD0tMSx0aGlzLmRhdGEubXVsdGlMaW5lPyhnPXUuc3BsaXQoL1xyXG4/fFxuLykubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZS5ub3JtYWxpemUoIk5GQyIpfSkpLHA9Zy5sZW5ndGgpOmc9W3UucmVwbGFjZSgvXHJcbj98XG4vLCIiKS5ub3JtYWxpemUoIk5GQyIpXSx2PTEseT0yLG09dGhpcy5kYXRhLnJlY3RbM10tdGhpcy5kYXRhLnJlY3RbMV0sYj10aGlzLmRhdGEucmVjdFsyXS10aGlzLmRhdGEucmVjdFswXSw5MCE9PWwmJjI3MCE9PWx8fChiPSh3PVttLGJdKVswXSxtPXdbMV0pLHRoaXMuX2RlZmF1bHRBcHBlYXJhbmNlfHwodGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YT0oMCxpLnBhcnNlRGVmYXVsdEFwcGVhcmFuY2UpKHRoaXMuX2RlZmF1bHRBcHBlYXJhbmNlPSIvSGVsdmV0aWNhIDAgVGYgMCBnIikpLGUubmV4dD0yOSxmLl9nZXRGb250RGF0YSh0LHIsdGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YSx0aGlzLl9maWVsZFJlc291cmNlcy5tZXJnZWRSZXNvdXJjZXMpO2Nhc2UgMjk6az1lLnNlbnQsRj1bXSxQPSExLEk9QShnKTt0cnl7Zm9yKEkucygpOyEoRT1JLm4oKSkuZG9uZTspaj1FLnZhbHVlLChNPWsuZW5jb2RlU3RyaW5nKGopKS5sZW5ndGg+MSYmKFA9ITApLEYucHVzaChNLmpvaW4oIiIpKX1jYXRjaChlKXtJLmUoZSl9ZmluYWxseXtJLmYoKX1pZighKFAmJm8mbi5SZW5kZXJpbmdJbnRlbnRGbGFnLlNBVkUpKXtlLm5leHQ9MzY7YnJlYWt9cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHtuZWVkQXBwZWFyYW5jZXM6ITB9KTtjYXNlIDM2OmlmKCFQfHwhdGhpcy5faXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQpe2UubmV4dD01ODticmVha31pZihfPXRoaXMuZGF0YS5jb21iPyJtb25vc3BhY2UiOiJzYW5zLXNlcmlmIixMPW5ldyBpLkZha2VVbmljb2RlRm9udCh0LnhyZWYsXyksUj1MLmNyZWF0ZUZvbnRSZXNvdXJjZXMoZy5qb2luKCIiKSksTj1SLmdldFJhdygiRm9udCIpLHRoaXMuX2ZpZWxkUmVzb3VyY2VzLm1lcmdlZFJlc291cmNlcy5oYXMoIkZvbnQiKSl7RD10aGlzLl9maWVsZFJlc291cmNlcy5tZXJnZWRSZXNvdXJjZXMuZ2V0KCJGb250IiksQj1BKE4uZ2V0S2V5cygpKTt0cnl7Zm9yKEIucygpOyEoVT1CLm4oKSkuZG9uZTspJD1VLnZhbHVlLEQuc2V0KCQsTi5nZXRSYXcoJCkpfWNhdGNoKGUpe0IuZShlKX1maW5hbGx5e0IuZigpfX1lbHNlIHRoaXMuX2ZpZWxkUmVzb3VyY2VzLm1lcmdlZFJlc291cmNlcy5zZXQoIkZvbnQiLE4pO3JldHVybiBYPUwuZm9udE5hbWUubmFtZSxlLm5leHQ9NDUsZi5fZ2V0Rm9udERhdGEodCxyLHtmb250TmFtZTpYLGZvbnRTaXplOjB9LFIpO2Nhc2UgNDU6Zm9yKGs9ZS5zZW50LEg9MCxxPUYubGVuZ3RoO0g8cTtIKyspRltIXT0oMCxhLnN0cmluZ1RvVVRGMTZTdHJpbmcpKGdbSF0pO0c9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKG51bGwpLHRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGEpLHRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGEuZm9udFNpemU9MCx0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhLmZvbnROYW1lPVgsej10aGlzLl9jb21wdXRlRm9udFNpemUobS0yKnYsYi0yKnksdSxrLHApLFc9VCh6LDMpLFM9V1swXSx4PVdbMV0sTz1XWzJdLHRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGE9RyxlLm5leHQ9NjQ7YnJlYWs7Y2FzZSA1ODp0aGlzLl9pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZHx8KDAsbi53YXJuKSgiX2dldEFwcGVhcmFuY2U6IE9mZnNjcmVlbkNhbnZhcyBpcyBub3Qgc3VwcG9ydGVkLCBhbm5vdGF0aW9uIG1heSBub3QgcmVuZGVyIGNvcnJlY3RseS4iKSxWPXRoaXMuX2NvbXB1dGVGb250U2l6ZShtLTIqdixiLTIqeSx1LGsscCksWT1UKFYsMyksUz1ZWzBdLHg9WVsxXSxPPVlbMl07Y2FzZSA2NDppZihLPWsuZGVzY2VudCxLPWlzTmFOKEspP24uQkFTRUxJTkVfRkFDVE9SKk86TWF0aC5tYXgobi5CQVNFTElORV9GQUNUT1IqTyxNYXRoLmFicyhLKSp4KSxKPU1hdGgubWluKE1hdGguZmxvb3IoKG0teCkvMiksdiksWj10aGlzLmRhdGEudGV4dEFsaWdubWVudCwhdGhpcy5kYXRhLm11bHRpTGluZSl7ZS5uZXh0PTcwO2JyZWFrfXJldHVybiBlLmFicnVwdCgicmV0dXJuIix0aGlzLl9nZXRNdWx0aWxpbmVBcHBlYXJhbmNlKFMsRixrLHgsYixtLFoseSxKLEssTyxzKSk7Y2FzZSA3MDppZighdGhpcy5kYXRhLmNvbWIpe2UubmV4dD03MjticmVha31yZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsdGhpcy5fZ2V0Q29tYkFwcGVhcmFuY2UoUyxrLEZbMF0seCxiLG0seSxKLEssTyxzKSk7Y2FzZSA3MjppZihRPUorSywhKDA9PT1afHxaPjIpKXtlLm5leHQ9NzU7YnJlYWt9cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLCIvVHggQk1DIHEgIi5jb25jYXQoaCwiQlQgIikrUysiIDEgMCAwIDEgIi5jb25jYXQoKDAsYS5udW1iZXJUb1N0cmluZykoeSksIiAiKS5jb25jYXQoKDAsYS5udW1iZXJUb1N0cmluZykoUSksIiBUbSAoIikuY29uY2F0KCgwLGEuZXNjYXBlU3RyaW5nKShGWzBdKSwiKSBUaiIpKyIgRVQgUSBFTUMiKTtjYXNlIDc1OnJldHVybiBlZT17c2hpZnQ6MH0sdGU9dGhpcy5fcmVuZGVyVGV4dChGWzBdLGsseCxiLFosZWUseSxRKSxlLmFicnVwdCgicmV0dXJuIiwiL1R4IEJNQyBxICIuY29uY2F0KGgsIkJUICIpK1MrIiAxIDAgMCAxIDAgMCBUbSAiLmNvbmNhdCh0ZSkrIiBFVCBRIEVNQyIpO2Nhc2UgNzg6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKSxmdW5jdGlvbihlLHQsbixhKXtyZXR1cm4gci5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KX0se2tleToiX2dldFRleHRXaWR0aCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdC5jaGFyc1RvR2x5cGhzKGUpLnJlZHVjZSgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSt0LndpZHRofSksMCkvMWUzfX0se2tleToiX2NvbXB1dGVGb250U2l6ZSIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIsYSxvKXt2YXIgcz10aGlzLGM9dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YS5mb250U2l6ZSx1PShjfHwxMikqbi5MSU5FX0ZBQ1RPUixsPU1hdGgucm91bmQoZS91KTtpZighYyl7dmFyIGY9ZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGguZmxvb3IoMTAwKmUpLzEwMH07aWYoLTE9PT1vKXt2YXIgaD10aGlzLl9nZXRUZXh0V2lkdGgocixhKTtjPWYoTWF0aC5taW4oZS9uLkxJTkVfRkFDVE9SLGg+dD90L2g6MS8wKSksbD0xfWVsc2V7dmFyIGQscD1yLnNwbGl0KC9cclxuP3xcbi8pLGc9W10sdj1BKHApO3RyeXtmb3Iodi5zKCk7IShkPXYubigpKS5kb25lOyl7dmFyIHk9ZC52YWx1ZSxtPWEuZW5jb2RlU3RyaW5nKHkpLmpvaW4oIiIpLGI9YS5jaGFyc1RvR2x5cGhzKG0pLHc9YS5nZXRDaGFyUG9zaXRpb25zKG0pO2cucHVzaCh7bGluZTptLGdseXBoczpiLHBvc2l0aW9uczp3fSl9fWNhdGNoKGUpe3YuZShlKX1maW5hbGx5e3YuZigpfXZhciBrPWZ1bmN0aW9uKHIpe2Zvcih2YXIgbj0wLGk9MCxvPWc7aTxvLmxlbmd0aDtpKyspe3ZhciBjPW9baV07aWYoKG4rPXMuX3NwbGl0TGluZShudWxsLGEscix0LGMpLmxlbmd0aCpyKT5lKXJldHVybiEwfXJldHVybiExfTtmb3IobD1NYXRoLm1heChsLG8pO2soYz1mKCh1PWUvbCkvbi5MSU5FX0ZBQ1RPUikpOylsKyt9dmFyIFM9dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YSx4PVMuZm9udE5hbWUsTz1TLmZvbnRDb2xvcjt0aGlzLl9kZWZhdWx0QXBwZWFyYW5jZT0oMCxpLmNyZWF0ZURlZmF1bHRBcHBlYXJhbmNlKSh7Zm9udFNpemU6Yyxmb250TmFtZTp4LGZvbnRDb2xvcjpPfSl9cmV0dXJuW3RoaXMuX2RlZmF1bHRBcHBlYXJhbmNlLGMsZS9sXX19LHtrZXk6Il9yZW5kZXJUZXh0Iix2YWx1ZTpmdW5jdGlvbihlLHQscixuLGksbyxzLGMpe3ZhciB1O3U9MT09PWk/KG4tdGhpcy5fZ2V0VGV4dFdpZHRoKGUsdCkqcikvMjoyPT09aT9uLXRoaXMuX2dldFRleHRXaWR0aChlLHQpKnItczpzO3ZhciBsPSgwLGEubnVtYmVyVG9TdHJpbmcpKHUtby5zaGlmdCk7cmV0dXJuIG8uc2hpZnQ9dSxjPSgwLGEubnVtYmVyVG9TdHJpbmcpKGMpLCIiLmNvbmNhdChsLCIgIikuY29uY2F0KGMsIiBUZCAoIikuY29uY2F0KCgwLGEuZXNjYXBlU3RyaW5nKShlKSwiKSBUaiIpfX0se2tleToiX2dldFNhdmVGaWVsZFJlc291cmNlcyIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fZmllbGRSZXNvdXJjZXMscj10LmxvY2FsUmVzb3VyY2VzLG49dC5hcHBlYXJhbmNlUmVzb3VyY2VzLGE9dC5hY3JvRm9ybVJlc291cmNlcyxpPXRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGEmJnRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGEuZm9udE5hbWU7aWYoIWkpcmV0dXJuIHJ8fG8uRGljdC5lbXB0eTtmb3IodmFyIHM9MCxjPVtyLG5dO3M8Yy5sZW5ndGg7cysrKXt2YXIgdT1jW3NdO2lmKHUgaW5zdGFuY2VvZiBvLkRpY3Qpe3ZhciBsPXUuZ2V0KCJGb250Iik7aWYobCBpbnN0YW5jZW9mIG8uRGljdCYmbC5oYXMoaSkpcmV0dXJuIHV9fWlmKGEgaW5zdGFuY2VvZiBvLkRpY3Qpe3ZhciBmPWEuZ2V0KCJGb250Iik7aWYoZiBpbnN0YW5jZW9mIG8uRGljdCYmZi5oYXMoaSkpe3ZhciBoPW5ldyBvLkRpY3QoZSk7aC5zZXQoaSxmLmdldFJhdyhpKSk7dmFyIGQ9bmV3IG8uRGljdChlKTtyZXR1cm4gZC5zZXQoIkZvbnQiLGgpLG8uRGljdC5tZXJnZSh7eHJlZjplLGRpY3RBcnJheTpbZCxyXSxtZXJnZVN1YkRpY3RzOiEwfSl9fXJldHVybiByfHxvLkRpY3QuZW1wdHl9fSx7a2V5OiJnZXRGaWVsZE9iamVjdCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH19XSxbe2tleToiX2dldEZvbnREYXRhIix2YWx1ZToodD1QKEMoKS5tYXJrKChmdW5jdGlvbiBlKHQscixuLGEpe3ZhciBpLHMsYyx1O3JldHVybiBDKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGk9bmV3IHAuT3BlcmF0b3JMaXN0LHM9e2ZvbnQ6bnVsbCxjbG9uZTpmdW5jdGlvbigpe3JldHVybiB0aGlzfX0sYz1uLmZvbnROYW1lLHU9bi5mb250U2l6ZSxlLm5leHQ9NSx0LmhhbmRsZVNldEZvbnQoYSxbYyYmby5OYW1lLmdldChjKSx1XSxudWxsLGkscixzLG51bGwpO2Nhc2UgNTpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIscy5mb250KTtjYXNlIDY6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSksZnVuY3Rpb24oZSxyLG4sYSl7cmV0dXJuIHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfSl9XSksZn0oVSkscT1mdW5jdGlvbihlKXttKHIsZSk7dmFyIHQ9dyhyKTtmdW5jdGlvbiByKGUpe3ZhciBpO2oodGhpcyxyKSwoaT10LmNhbGwodGhpcyxlKSkuX2hhc1RleHQ9ITA7dmFyIG89ZS5kaWN0OyJzdHJpbmciIT10eXBlb2YgaS5kYXRhLmZpZWxkVmFsdWUmJihpLmRhdGEuZmllbGRWYWx1ZT0iIik7dmFyIHM9KDAsYS5nZXRJbmhlcml0YWJsZVByb3BlcnR5KSh7ZGljdDpvLGtleToiUSJ9KTsoIU51bWJlci5pc0ludGVnZXIocyl8fHM8MHx8cz4yKSYmKHM9bnVsbCksaS5kYXRhLnRleHRBbGlnbm1lbnQ9czt2YXIgYz0oMCxhLmdldEluaGVyaXRhYmxlUHJvcGVydHkpKHtkaWN0Om8sa2V5OiJNYXhMZW4ifSk7cmV0dXJuKCFOdW1iZXIuaXNJbnRlZ2VyKGMpfHxjPDApJiYoYz0wKSxpLmRhdGEubWF4TGVuPWMsaS5kYXRhLm11bHRpTGluZT1pLmhhc0ZpZWxkRmxhZyhuLkFubm90YXRpb25GaWVsZEZsYWcuTVVMVElMSU5FKSxpLmRhdGEuY29tYj1pLmhhc0ZpZWxkRmxhZyhuLkFubm90YXRpb25GaWVsZEZsYWcuQ09NQikmJiFpLmhhc0ZpZWxkRmxhZyhuLkFubm90YXRpb25GaWVsZEZsYWcuTVVMVElMSU5FKSYmIWkuaGFzRmllbGRGbGFnKG4uQW5ub3RhdGlvbkZpZWxkRmxhZy5QQVNTV09SRCkmJiFpLmhhc0ZpZWxkRmxhZyhuLkFubm90YXRpb25GaWVsZEZsYWcuRklMRVNFTEVDVCkmJjAhPT1pLmRhdGEubWF4TGVuLGkuZGF0YS5kb05vdFNjcm9sbD1pLmhhc0ZpZWxkRmxhZyhuLkFubm90YXRpb25GaWVsZEZsYWcuRE9OT1RTQ1JPTEwpLGl9cmV0dXJuIF8ocixbe2tleToiX2dldENvbWJBcHBlYXJhbmNlIix2YWx1ZTpmdW5jdGlvbihlLHQscixuLGksbyxzLGMsdSxsLGYpe3ZhciBoLGQ9aS90aGlzLmRhdGEubWF4TGVuLHA9dGhpcy5nZXRCb3JkZXJBbmRCYWNrZ3JvdW5kQXBwZWFyYW5jZXMoZiksZz1bXSx2PUEodC5nZXRDaGFyUG9zaXRpb25zKHIpKTt0cnl7Zm9yKHYucygpOyEoaD12Lm4oKSkuZG9uZTspe3ZhciB5PVQoaC52YWx1ZSwyKSxtPXlbMF0sYj15WzFdO2cucHVzaCgiKCIuY29uY2F0KCgwLGEuZXNjYXBlU3RyaW5nKShyLnN1YnN0cmluZyhtLGIpKSwiKSBUaiIpKX19Y2F0Y2goZSl7di5lKGUpfWZpbmFsbHl7di5mKCl9dmFyIHc9Zy5qb2luKCIgIi5jb25jYXQoKDAsYS5udW1iZXJUb1N0cmluZykoZCksIiAwIFRkICIpKTtyZXR1cm4iL1R4IEJNQyBxICIuY29uY2F0KHAsIkJUICIpK2UrIiAxIDAgMCAxICIuY29uY2F0KCgwLGEubnVtYmVyVG9TdHJpbmcpKHMpLCIgIikuY29uY2F0KCgwLGEubnVtYmVyVG9TdHJpbmcpKGMrdSksIiBUbSAiKS5jb25jYXQodykrIiBFVCBRIEVNQyJ9fSx7a2V5OiJfZ2V0TXVsdGlsaW5lQXBwZWFyYW5jZSIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIsbixpLG8scyxjLHUsbCxmLGgpe2Zvcih2YXIgZD1bXSxwPWktMipjLGc9e3NoaWZ0OjB9LHY9MCx5PXQubGVuZ3RoO3Y8eTt2KyspZm9yKHZhciBtPXRbdl0sYj10aGlzLl9zcGxpdExpbmUobSxyLG4scCksdz0wLGs9Yi5sZW5ndGg7dzxrO3crKyl7dmFyIFM9Ylt3XSx4PTA9PT12JiYwPT09dz8tdS0oZi1sKTotZjtkLnB1c2godGhpcy5fcmVuZGVyVGV4dChTLHIsbixpLHMsZyxjLHgpKX12YXIgTz10aGlzLmdldEJvcmRlckFuZEJhY2tncm91bmRBcHBlYXJhbmNlcyhoKSxBPWQuam9pbigiXG4iKTtyZXR1cm4iL1R4IEJNQyBxICIuY29uY2F0KE8sIkJUICIpK2UrIiAxIDAgMCAxIDAgIi5jb25jYXQoKDAsYS5udW1iZXJUb1N0cmluZykobyksIiBUbSAiKS5jb25jYXQoQSkrIiBFVCBRIEVNQyJ9fSx7a2V5OiJfc3BsaXRMaW5lIix2YWx1ZTpmdW5jdGlvbihlLHQscixuKXt2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjQmJnZvaWQgMCE9PWFyZ3VtZW50c1s0XT9hcmd1bWVudHNbNF06e307ZT1hLmxpbmV8fGU7dmFyIGk9YS5nbHlwaHN8fHQuY2hhcnNUb0dseXBocyhlKTtpZihpLmxlbmd0aDw9MSlyZXR1cm5bZV07Zm9yKHZhciBvPWEucG9zaXRpb25zfHx0LmdldENoYXJQb3NpdGlvbnMoZSkscz1yLzFlMyxjPVtdLHU9LTEsbD0tMSxmPS0xLGg9MCxkPTAscD0wLGc9aS5sZW5ndGg7cDxnO3ArKyl7dmFyIHY9VChvW3BdLDIpLHk9dlswXSxtPXZbMV0sYj1pW3BdLHc9Yi53aWR0aCpzOyIgIj09PWIudW5pY29kZT9kK3c+bj8oYy5wdXNoKGUuc3Vic3RyaW5nKGgseSkpLGg9eSxkPXcsdT0tMSxmPS0xKTooZCs9dyx1PXksbD1tLGY9cCk6ZCt3Pm4/LTEhPT11PyhjLnB1c2goZS5zdWJzdHJpbmcoaCxsKSksaD1sLHA9ZisxLHU9LTEsZD0wKTooYy5wdXNoKGUuc3Vic3RyaW5nKGgseSkpLGg9eSxkPXcpOmQrPXd9cmV0dXJuIGg8ZS5sZW5ndGgmJmMucHVzaChlLnN1YnN0cmluZyhoLGUubGVuZ3RoKSksY319LHtrZXk6ImdldEZpZWxkT2JqZWN0Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybntpZDp0aGlzLmRhdGEuaWQsdmFsdWU6dGhpcy5kYXRhLmZpZWxkVmFsdWUsZGVmYXVsdFZhbHVlOnRoaXMuZGF0YS5kZWZhdWx0RmllbGRWYWx1ZXx8IiIsbXVsdGlsaW5lOnRoaXMuZGF0YS5tdWx0aUxpbmUscGFzc3dvcmQ6dGhpcy5oYXNGaWVsZEZsYWcobi5Bbm5vdGF0aW9uRmllbGRGbGFnLlBBU1NXT1JEKSxjaGFyTGltaXQ6dGhpcy5kYXRhLm1heExlbixjb21iOnRoaXMuZGF0YS5jb21iLGVkaXRhYmxlOiF0aGlzLmRhdGEucmVhZE9ubHksaGlkZGVuOnRoaXMuZGF0YS5oaWRkZW4sbmFtZTp0aGlzLmRhdGEuZmllbGROYW1lLHJlY3Q6dGhpcy5kYXRhLnJlY3QsYWN0aW9uczp0aGlzLmRhdGEuYWN0aW9ucyxwYWdlOnRoaXMuZGF0YS5wYWdlSW5kZXgsc3Ryb2tlQ29sb3I6dGhpcy5kYXRhLmJvcmRlckNvbG9yLGZpbGxDb2xvcjp0aGlzLmRhdGEuYmFja2dyb3VuZENvbG9yLHJvdGF0aW9uOnRoaXMucm90YXRpb24sdHlwZToidGV4dCJ9fX1dKSxyfShIKSxHPWZ1bmN0aW9uKGUpe20oZixlKTt2YXIgdCxyLGksYyx1PXcoZik7ZnVuY3Rpb24gZihlKXt2YXIgdDtyZXR1cm4gaih0aGlzLGYpLCh0PXUuY2FsbCh0aGlzLGUpKS5jaGVja2VkQXBwZWFyYW5jZT1udWxsLHQudW5jaGVja2VkQXBwZWFyYW5jZT1udWxsLHQuZGF0YS5jaGVja0JveD0hdC5oYXNGaWVsZEZsYWcobi5Bbm5vdGF0aW9uRmllbGRGbGFnLlJBRElPKSYmIXQuaGFzRmllbGRGbGFnKG4uQW5ub3RhdGlvbkZpZWxkRmxhZy5QVVNIQlVUVE9OKSx0LmRhdGEucmFkaW9CdXR0b249dC5oYXNGaWVsZEZsYWcobi5Bbm5vdGF0aW9uRmllbGRGbGFnLlJBRElPKSYmIXQuaGFzRmllbGRGbGFnKG4uQW5ub3RhdGlvbkZpZWxkRmxhZy5QVVNIQlVUVE9OKSx0LmRhdGEucHVzaEJ1dHRvbj10Lmhhc0ZpZWxkRmxhZyhuLkFubm90YXRpb25GaWVsZEZsYWcuUFVTSEJVVFRPTiksdC5kYXRhLmlzVG9vbHRpcE9ubHk9ITEsdC5kYXRhLmNoZWNrQm94P3QuX3Byb2Nlc3NDaGVja0JveChlKTp0LmRhdGEucmFkaW9CdXR0b24/dC5fcHJvY2Vzc1JhZGlvQnV0dG9uKGUpOnQuZGF0YS5wdXNoQnV0dG9uPyh0LmRhdGEuaGFzT3duQ2FudmFzPSEwLHQuX3Byb2Nlc3NQdXNoQnV0dG9uKGUpKTooMCxuLndhcm4pKCJJbnZhbGlkIGZpZWxkIGZsYWdzIGZvciBidXR0b24gd2lkZ2V0IGFubm90YXRpb24iKSx0fXJldHVybiBfKGYsW3trZXk6ImdldE9wZXJhdG9yTGlzdCIsdmFsdWU6KGM9UChDKCkubWFyaygoZnVuY3Rpb24gZSh0LHIsYSxpLG8pe3ZhciBzLGMsdSxsLGgsZCxnO3JldHVybiBDKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6aWYoIXRoaXMuZGF0YS5wdXNoQnV0dG9uKXtlLm5leHQ9MjticmVha31yZXR1cm4gZS5hYnJ1cHQoInJldHVybiIseSh4KGYucHJvdG90eXBlKSwiZ2V0T3BlcmF0b3JMaXN0Iix0aGlzKS5jYWxsKHRoaXMsdCxyLGEsITEsbykpO2Nhc2UgMjppZihzPW51bGwsYz1udWxsLG8mJih1PW8uZ2V0KHRoaXMuZGF0YS5pZCkscz11P3UudmFsdWU6bnVsbCxjPXU/dS5yb3RhdGlvbjpudWxsKSxudWxsIT09c3x8IXRoaXMuYXBwZWFyYW5jZSl7ZS5uZXh0PTc7YnJlYWt9cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHkoeChmLnByb3RvdHlwZSksImdldE9wZXJhdG9yTGlzdCIsdGhpcykuY2FsbCh0aGlzLHQscixhLGksbykpO2Nhc2UgNzppZihudWxsPT1zJiYocz10aGlzLmRhdGEuY2hlY2tCb3g/dGhpcy5kYXRhLmZpZWxkVmFsdWU9PT10aGlzLmRhdGEuZXhwb3J0VmFsdWU6dGhpcy5kYXRhLmZpZWxkVmFsdWU9PT10aGlzLmRhdGEuYnV0dG9uVmFsdWUpLCEobD1zP3RoaXMuY2hlY2tlZEFwcGVhcmFuY2U6dGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlKSl7ZS5uZXh0PTE4O2JyZWFrfXJldHVybiBoPXRoaXMuYXBwZWFyYW5jZSxkPWwuZGljdC5nZXRBcnJheSgiTWF0cml4Iil8fG4uSURFTlRJVFlfTUFUUklYLGMmJmwuZGljdC5zZXQoIk1hdHJpeCIsdGhpcy5nZXRSb3RhdGlvbk1hdHJpeChvKSksdGhpcy5hcHBlYXJhbmNlPWwsZz15KHgoZi5wcm90b3R5cGUpLCJnZXRPcGVyYXRvckxpc3QiLHRoaXMpLmNhbGwodGhpcyx0LHIsYSxpLG8pLHRoaXMuYXBwZWFyYW5jZT1oLGwuZGljdC5zZXQoIk1hdHJpeCIsZCksZS5hYnJ1cHQoInJldHVybiIsZyk7Y2FzZSAxODpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIse29wTGlzdDpuZXcgcC5PcGVyYXRvckxpc3Qsc2VwYXJhdGVGb3JtOiExLHNlcGFyYXRlQ2FudmFzOiExfSk7Y2FzZSAxOTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpLGZ1bmN0aW9uKGUsdCxyLG4sYSl7cmV0dXJuIGMuYXBwbHkodGhpcyxhcmd1bWVudHMpfSl9LHtrZXk6InNhdmUiLHZhbHVlOihpPVAoQygpLm1hcmsoKGZ1bmN0aW9uIGUodCxyLG4pe3JldHVybiBDKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6aWYoIXRoaXMuZGF0YS5jaGVja0JveCl7ZS5uZXh0PTI7YnJlYWt9cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHRoaXMuX3NhdmVDaGVja2JveCh0LHIsbikpO2Nhc2UgMjppZighdGhpcy5kYXRhLnJhZGlvQnV0dG9uKXtlLm5leHQ9NDticmVha31yZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsdGhpcy5fc2F2ZVJhZGlvQnV0dG9uKHQscixuKSk7Y2FzZSA0OnJldHVybiBlLmFicnVwdCgicmV0dXJuIixudWxsKTtjYXNlIDU6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKSxmdW5jdGlvbihlLHQscil7cmV0dXJuIGkuYXBwbHkodGhpcyxhcmd1bWVudHMpfSl9LHtrZXk6Il9zYXZlQ2hlY2tib3giLHZhbHVlOihyPVAoQygpLm1hcmsoKGZ1bmN0aW9uIGUodCxyLGEpe3ZhciBpLGMsdSxsLGYsaCxkLHAsZyx2O3JldHVybiBDKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6aWYoYSl7ZS5uZXh0PTI7YnJlYWt9cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLG51bGwpO2Nhc2UgMjppZihpPWEuZ2V0KHRoaXMuZGF0YS5pZCksYz1pJiZpLnJvdGF0aW9uLHU9aSYmaS52YWx1ZSx2b2lkIDAhPT1jKXtlLm5leHQ9MTE7YnJlYWt9aWYodm9pZCAwIT09dSl7ZS5uZXh0PTg7YnJlYWt9cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLG51bGwpO2Nhc2UgODppZih0aGlzLmRhdGEuZmllbGRWYWx1ZT09PXRoaXMuZGF0YS5leHBvcnRWYWx1ZSE9PXUpe2UubmV4dD0xMTticmVha31yZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsbnVsbCk7Y2FzZSAxMTppZigobD10LnhyZWYuZmV0Y2hJZlJlZih0aGlzLnJlZikpaW5zdGFuY2VvZiBvLkRpY3Qpe2UubmV4dD0xNDticmVha31yZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsbnVsbCk7Y2FzZSAxNDpyZXR1cm4gdm9pZCAwPT09YyYmKGM9dGhpcy5yb3RhdGlvbiksdm9pZCAwPT09dSYmKHU9dGhpcy5kYXRhLmZpZWxkVmFsdWU9PT10aGlzLmRhdGEuZXhwb3J0VmFsdWUpLGY9e3BhdGg6KDAsbi5zdHJpbmdUb1BERlN0cmluZykobC5nZXQoIlQiKXx8IiIpLHZhbHVlOnU/dGhpcy5kYXRhLmV4cG9ydFZhbHVlOiIifSxoPW8uTmFtZS5nZXQodT90aGlzLmRhdGEuZXhwb3J0VmFsdWU6Ik9mZiIpLGwuc2V0KCJWIixoKSxsLnNldCgiQVMiLGgpLGwuc2V0KCJNIiwiRDoiLmNvbmNhdCgoMCxuLmdldE1vZGlmaWNhdGlvbkRhdGUpKCkpKSwoZD10aGlzLl9nZXRNS0RpY3QoYykpJiZsLnNldCgiTUsiLGQpLHA9dC54cmVmLmVuY3J5cHQsZz1udWxsLHAmJihnPXAuY3JlYXRlQ2lwaGVyVHJhbnNmb3JtKHRoaXMucmVmLm51bSx0aGlzLnJlZi5nZW4pKSx2PVsiIi5jb25jYXQodGhpcy5yZWYubnVtLCIgIikuY29uY2F0KHRoaXMucmVmLmdlbiwiIG9ialxuIildLCgwLHMud3JpdGVEaWN0KShsLHYsZyksdi5wdXNoKCJcbmVuZG9ialxuIiksZS5hYnJ1cHQoInJldHVybiIsW3tyZWY6dGhpcy5yZWYsZGF0YTp2LmpvaW4oIiIpLHhmYTpmfV0pO2Nhc2UgMzA6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKSxmdW5jdGlvbihlLHQsbil7cmV0dXJuIHIuYXBwbHkodGhpcyxhcmd1bWVudHMpfSl9LHtrZXk6Il9zYXZlUmFkaW9CdXR0b24iLHZhbHVlOih0PVAoQygpLm1hcmsoKGZ1bmN0aW9uIGUodCxyLGEpe3ZhciBpLGMsdSxsLGYsaCxkLHAsZyx2LHksbSxiLHc7cmV0dXJuIEMoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDppZihhKXtlLm5leHQ9MjticmVha31yZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsbnVsbCk7Y2FzZSAyOmlmKGk9YS5nZXQodGhpcy5kYXRhLmlkKSxjPWkmJmkucm90YXRpb24sdT1pJiZpLnZhbHVlLHZvaWQgMCE9PWMpe2UubmV4dD0xMTticmVha31pZih2b2lkIDAhPT11KXtlLm5leHQ9ODticmVha31yZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsbnVsbCk7Y2FzZSA4OmlmKHRoaXMuZGF0YS5maWVsZFZhbHVlPT09dGhpcy5kYXRhLmJ1dHRvblZhbHVlIT09dSl7ZS5uZXh0PTExO2JyZWFrfXJldHVybiBlLmFicnVwdCgicmV0dXJuIixudWxsKTtjYXNlIDExOmlmKChsPXQueHJlZi5mZXRjaElmUmVmKHRoaXMucmVmKSlpbnN0YW5jZW9mIG8uRGljdCl7ZS5uZXh0PTE0O2JyZWFrfXJldHVybiBlLmFicnVwdCgicmV0dXJuIixudWxsKTtjYXNlIDE0OnJldHVybiB2b2lkIDA9PT11JiYodT10aGlzLmRhdGEuZmllbGRWYWx1ZT09PXRoaXMuZGF0YS5idXR0b25WYWx1ZSksdm9pZCAwPT09YyYmKGM9dGhpcy5yb3RhdGlvbiksZj17cGF0aDooMCxuLnN0cmluZ1RvUERGU3RyaW5nKShsLmdldCgiVCIpfHwiIiksdmFsdWU6dT90aGlzLmRhdGEuYnV0dG9uVmFsdWU6IiJ9LGg9by5OYW1lLmdldCh1P3RoaXMuZGF0YS5idXR0b25WYWx1ZToiT2ZmIiksZD1udWxsLHA9dC54cmVmLmVuY3J5cHQsdSYmKHRoaXMucGFyZW50IGluc3RhbmNlb2Ygby5SZWY/KGc9dC54cmVmLmZldGNoKHRoaXMucGFyZW50KSx2PW51bGwscCYmKHY9cC5jcmVhdGVDaXBoZXJUcmFuc2Zvcm0odGhpcy5wYXJlbnQubnVtLHRoaXMucGFyZW50LmdlbikpLGcuc2V0KCJWIixoKSxkPVsiIi5jb25jYXQodGhpcy5wYXJlbnQubnVtLCIgIikuY29uY2F0KHRoaXMucGFyZW50LmdlbiwiIG9ialxuIildLCgwLHMud3JpdGVEaWN0KShnLGQsdiksZC5wdXNoKCJcbmVuZG9ialxuIikpOnRoaXMucGFyZW50IGluc3RhbmNlb2Ygby5EaWN0JiZ0aGlzLnBhcmVudC5zZXQoIlYiLGgpKSxsLnNldCgiQVMiLGgpLGwuc2V0KCJNIiwiRDoiLmNvbmNhdCgoMCxuLmdldE1vZGlmaWNhdGlvbkRhdGUpKCkpKSwoeT10aGlzLl9nZXRNS0RpY3QoYykpJiZsLnNldCgiTUsiLHkpLG09bnVsbCxwJiYobT1wLmNyZWF0ZUNpcGhlclRyYW5zZm9ybSh0aGlzLnJlZi5udW0sdGhpcy5yZWYuZ2VuKSksYj1bIiIuY29uY2F0KHRoaXMucmVmLm51bSwiICIpLmNvbmNhdCh0aGlzLnJlZi5nZW4sIiBvYmpcbiIpXSwoMCxzLndyaXRlRGljdCkobCxiLG0pLGIucHVzaCgiXG5lbmRvYmpcbiIpLHc9W3tyZWY6dGhpcy5yZWYsZGF0YTpiLmpvaW4oIiIpLHhmYTpmfV0sbnVsbCE9PWQmJncucHVzaCh7cmVmOnRoaXMucGFyZW50LGRhdGE6ZC5qb2luKCIiKSx4ZmE6bnVsbH0pLGUuYWJydXB0KCJyZXR1cm4iLHcpO2Nhc2UgMzM6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKSxmdW5jdGlvbihlLHIsbil7cmV0dXJuIHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfSl9LHtrZXk6Il9nZXREZWZhdWx0Q2hlY2tlZEFwcGVhcmFuY2UiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIHIsaSxzPXRoaXMuZGF0YS5yZWN0WzJdLXRoaXMuZGF0YS5yZWN0WzBdLGM9dGhpcy5kYXRhLnJlY3RbM10tdGhpcy5kYXRhLnJlY3RbMV0sdT1bMCwwLHMsY10sbD0uOCpNYXRoLm1pbihzLGMpOyJjaGVjayI9PT10PyhyPXt3aWR0aDouNzU1KmwsaGVpZ2h0Oi43MDUqbH0saT0iMyIpOiJkaXNjIj09PXQ/KHI9e3dpZHRoOi43OTEqbCxoZWlnaHQ6LjcwNSpsfSxpPSJsIik6KDAsbi51bnJlYWNoYWJsZSkoIl9nZXREZWZhdWx0Q2hlY2tlZEFwcGVhcmFuY2UgLSB1bnN1cHBvcnRlZCB0eXBlOiAiLmNvbmNhdCh0KSk7dmFyIGY9KDAsYS5udW1iZXJUb1N0cmluZykoKHMtci53aWR0aCkvMiksaD0oMCxhLm51bWJlclRvU3RyaW5nKSgoYy1yLmhlaWdodCkvMiksZD0icSBCVCAvUGRmSnNaYURiICIuY29uY2F0KGwsIiBUZiAwIGcgIikuY29uY2F0KGYsIiAiKS5jb25jYXQoaCwiIFRkICgiKS5jb25jYXQoaSwiKSBUaiBFVCBRIikscD1uZXcgby5EaWN0KGUueHJlZik7cC5zZXQoIkZvcm1UeXBlIiwxKSxwLnNldCgiU3VidHlwZSIsby5OYW1lLmdldCgiRm9ybSIpKSxwLnNldCgiVHlwZSIsby5OYW1lLmdldCgiWE9iamVjdCIpKSxwLnNldCgiQkJveCIsdSkscC5zZXQoIk1hdHJpeCIsWzEsMCwwLDEsMCwwXSkscC5zZXQoIkxlbmd0aCIsZC5sZW5ndGgpO3ZhciB2PW5ldyBvLkRpY3QoZS54cmVmKSx5PW5ldyBvLkRpY3QoZS54cmVmKTt5LnNldCgiUGRmSnNaYURiIix0aGlzLmZhbGxiYWNrRm9udERpY3QpLHYuc2V0KCJGb250Iix5KSxwLnNldCgiUmVzb3VyY2VzIix2KSx0aGlzLmNoZWNrZWRBcHBlYXJhbmNlPW5ldyBnLlN0cmluZ1N0cmVhbShkKSx0aGlzLmNoZWNrZWRBcHBlYXJhbmNlLmRpY3Q9cCx0aGlzLl9zdHJlYW1zLnB1c2godGhpcy5jaGVja2VkQXBwZWFyYW5jZSl9fSx7a2V5OiJfcHJvY2Vzc0NoZWNrQm94Iix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1lLmRpY3QuZ2V0KCJBUCIpO2lmKHQgaW5zdGFuY2VvZiBvLkRpY3Qpe3ZhciByPXQuZ2V0KCJOIik7aWYociBpbnN0YW5jZW9mIG8uRGljdCl7dmFyIG49dGhpcy5fZGVjb2RlRm9ybVZhbHVlKGUuZGljdC5nZXQoIkFTIikpOyJzdHJpbmciPT10eXBlb2YgbiYmKHRoaXMuZGF0YS5maWVsZFZhbHVlPW4pO3ZhciBhPW51bGwhPT10aGlzLmRhdGEuZmllbGRWYWx1ZSYmIk9mZiIhPT10aGlzLmRhdGEuZmllbGRWYWx1ZT90aGlzLmRhdGEuZmllbGRWYWx1ZToiWWVzIixpPXIuZ2V0S2V5cygpO2lmKDA9PT1pLmxlbmd0aClpLnB1c2goIk9mZiIsYSk7ZWxzZSBpZigxPT09aS5sZW5ndGgpIk9mZiI9PT1pWzBdP2kucHVzaChhKTppLnVuc2hpZnQoIk9mZiIpO2Vsc2UgaWYoaS5pbmNsdWRlcyhhKSlpLmxlbmd0aD0wLGkucHVzaCgiT2ZmIixhKTtlbHNle3ZhciBzPWkuZmluZCgoZnVuY3Rpb24oZSl7cmV0dXJuIk9mZiIhPT1lfSkpO2kubGVuZ3RoPTAsaS5wdXNoKCJPZmYiLHMpfWkuaW5jbHVkZXModGhpcy5kYXRhLmZpZWxkVmFsdWUpfHwodGhpcy5kYXRhLmZpZWxkVmFsdWU9Ik9mZiIpLHRoaXMuZGF0YS5leHBvcnRWYWx1ZT1pWzFdLHRoaXMuY2hlY2tlZEFwcGVhcmFuY2U9ci5nZXQodGhpcy5kYXRhLmV4cG9ydFZhbHVlKXx8bnVsbCx0aGlzLnVuY2hlY2tlZEFwcGVhcmFuY2U9ci5nZXQoIk9mZiIpfHxudWxsLHRoaXMuY2hlY2tlZEFwcGVhcmFuY2U/dGhpcy5fc3RyZWFtcy5wdXNoKHRoaXMuY2hlY2tlZEFwcGVhcmFuY2UpOnRoaXMuX2dldERlZmF1bHRDaGVja2VkQXBwZWFyYW5jZShlLCJjaGVjayIpLHRoaXMudW5jaGVja2VkQXBwZWFyYW5jZSYmdGhpcy5fc3RyZWFtcy5wdXNoKHRoaXMudW5jaGVja2VkQXBwZWFyYW5jZSksdGhpcy5fZmFsbGJhY2tGb250RGljdD10aGlzLmZhbGxiYWNrRm9udERpY3R9fX19LHtrZXk6Il9wcm9jZXNzUmFkaW9CdXR0b24iLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMuZGF0YS5maWVsZFZhbHVlPXRoaXMuZGF0YS5idXR0b25WYWx1ZT1udWxsO3ZhciB0PWUuZGljdC5nZXQoIlBhcmVudCIpO2lmKHQgaW5zdGFuY2VvZiBvLkRpY3Qpe3RoaXMucGFyZW50PWUuZGljdC5nZXRSYXcoIlBhcmVudCIpO3ZhciByPXQuZ2V0KCJWIik7ciBpbnN0YW5jZW9mIG8uTmFtZSYmKHRoaXMuZGF0YS5maWVsZFZhbHVlPXRoaXMuX2RlY29kZUZvcm1WYWx1ZShyKSl9dmFyIG49ZS5kaWN0LmdldCgiQVAiKTtpZihuIGluc3RhbmNlb2Ygby5EaWN0KXt2YXIgYT1uLmdldCgiTiIpO2lmKGEgaW5zdGFuY2VvZiBvLkRpY3Qpe3ZhciBpLHM9QShhLmdldEtleXMoKSk7dHJ5e2ZvcihzLnMoKTshKGk9cy5uKCkpLmRvbmU7KXt2YXIgYz1pLnZhbHVlO2lmKCJPZmYiIT09Yyl7dGhpcy5kYXRhLmJ1dHRvblZhbHVlPXRoaXMuX2RlY29kZUZvcm1WYWx1ZShjKTticmVha319fWNhdGNoKGUpe3MuZShlKX1maW5hbGx5e3MuZigpfXRoaXMuY2hlY2tlZEFwcGVhcmFuY2U9YS5nZXQodGhpcy5kYXRhLmJ1dHRvblZhbHVlKXx8bnVsbCx0aGlzLnVuY2hlY2tlZEFwcGVhcmFuY2U9YS5nZXQoIk9mZiIpfHxudWxsLHRoaXMuY2hlY2tlZEFwcGVhcmFuY2U/dGhpcy5fc3RyZWFtcy5wdXNoKHRoaXMuY2hlY2tlZEFwcGVhcmFuY2UpOnRoaXMuX2dldERlZmF1bHRDaGVja2VkQXBwZWFyYW5jZShlLCJkaXNjIiksdGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlJiZ0aGlzLl9zdHJlYW1zLnB1c2godGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlKSx0aGlzLl9mYWxsYmFja0ZvbnREaWN0PXRoaXMuZmFsbGJhY2tGb250RGljdH19fX0se2tleToiX3Byb2Nlc3NQdXNoQnV0dG9uIix2YWx1ZTpmdW5jdGlvbihlKXtlLmRpY3QuaGFzKCJBIil8fGUuZGljdC5oYXMoIkFBIil8fHRoaXMuZGF0YS5hbHRlcm5hdGl2ZVRleHQ/KHRoaXMuZGF0YS5pc1Rvb2x0aXBPbmx5PSFlLmRpY3QuaGFzKCJBIikmJiFlLmRpY3QuaGFzKCJBQSIpLGwuQ2F0YWxvZy5wYXJzZURlc3REaWN0aW9uYXJ5KHtkZXN0RGljdDplLmRpY3QscmVzdWx0T2JqOnRoaXMuZGF0YSxkb2NCYXNlVXJsOmUucGRmTWFuYWdlci5kb2NCYXNlVXJsLGRvY0F0dGFjaG1lbnRzOmUuYXR0YWNobWVudHN9KSk6KDAsbi53YXJuKSgiUHVzaCBidXR0b25zIHdpdGhvdXQgYWN0aW9uIGRpY3Rpb25hcmllcyBhcmUgbm90IHN1cHBvcnRlZCIpfX0se2tleToiZ2V0RmllbGRPYmplY3QiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGUsdD0iYnV0dG9uIjtyZXR1cm4gdGhpcy5kYXRhLmNoZWNrQm94Pyh0PSJjaGVja2JveCIsZT10aGlzLmRhdGEuZXhwb3J0VmFsdWUpOnRoaXMuZGF0YS5yYWRpb0J1dHRvbiYmKHQ9InJhZGlvYnV0dG9uIixlPXRoaXMuZGF0YS5idXR0b25WYWx1ZSkse2lkOnRoaXMuZGF0YS5pZCx2YWx1ZTp0aGlzLmRhdGEuZmllbGRWYWx1ZXx8Ik9mZiIsZGVmYXVsdFZhbHVlOnRoaXMuZGF0YS5kZWZhdWx0RmllbGRWYWx1ZSxleHBvcnRWYWx1ZXM6ZSxlZGl0YWJsZTohdGhpcy5kYXRhLnJlYWRPbmx5LG5hbWU6dGhpcy5kYXRhLmZpZWxkTmFtZSxyZWN0OnRoaXMuZGF0YS5yZWN0LGhpZGRlbjp0aGlzLmRhdGEuaGlkZGVuLGFjdGlvbnM6dGhpcy5kYXRhLmFjdGlvbnMscGFnZTp0aGlzLmRhdGEucGFnZUluZGV4LHN0cm9rZUNvbG9yOnRoaXMuZGF0YS5ib3JkZXJDb2xvcixmaWxsQ29sb3I6dGhpcy5kYXRhLmJhY2tncm91bmRDb2xvcixyb3RhdGlvbjp0aGlzLnJvdGF0aW9uLHR5cGU6dH19fSx7a2V5OiJmYWxsYmFja0ZvbnREaWN0IixnZXQ6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgby5EaWN0O3JldHVybiBlLnNldCgiQmFzZUZvbnQiLG8uTmFtZS5nZXQoIlphcGZEaW5nYmF0cyIpKSxlLnNldCgiVHlwZSIsby5OYW1lLmdldCgiRmFsbGJhY2tUeXBlIikpLGUuc2V0KCJTdWJ0eXBlIixvLk5hbWUuZ2V0KCJGYWxsYmFja1R5cGUiKSksZS5zZXQoIkVuY29kaW5nIixvLk5hbWUuZ2V0KCJaYXBmRGluZ2JhdHNFbmNvZGluZyIpKSwoMCxuLnNoYWRvdykodGhpcywiZmFsbGJhY2tGb250RGljdCIsZSl9fV0pLGZ9KEgpLHo9ZnVuY3Rpb24oZSl7bShvLGUpO3ZhciB0LHI9dyhvKTtmdW5jdGlvbiBvKGUpe3ZhciB0O2oodGhpcyxvKSx0PXIuY2FsbCh0aGlzLGUpO3ZhciBpPWUuZGljdCxzPWUueHJlZjt0LmRhdGEub3B0aW9ucz1bXTt2YXIgYz0oMCxhLmdldEluaGVyaXRhYmxlUHJvcGVydHkpKHtkaWN0Omksa2V5OiJPcHQifSk7aWYoQXJyYXkuaXNBcnJheShjKSlmb3IodmFyIHU9MCxsPWMubGVuZ3RoO3U8bDt1Kyspe3ZhciBmPXMuZmV0Y2hJZlJlZihjW3VdKSxoPUFycmF5LmlzQXJyYXkoZik7dC5kYXRhLm9wdGlvbnNbdV09e2V4cG9ydFZhbHVlOnQuX2RlY29kZUZvcm1WYWx1ZShoP3MuZmV0Y2hJZlJlZihmWzBdKTpmKSxkaXNwbGF5VmFsdWU6dC5fZGVjb2RlRm9ybVZhbHVlKGg/cy5mZXRjaElmUmVmKGZbMV0pOmYpfX1yZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQuZGF0YS5maWVsZFZhbHVlP3QuZGF0YS5maWVsZFZhbHVlPVt0LmRhdGEuZmllbGRWYWx1ZV06dC5kYXRhLmZpZWxkVmFsdWV8fCh0LmRhdGEuZmllbGRWYWx1ZT1bXSksdC5kYXRhLmNvbWJvPXQuaGFzRmllbGRGbGFnKG4uQW5ub3RhdGlvbkZpZWxkRmxhZy5DT01CTyksdC5kYXRhLm11bHRpU2VsZWN0PXQuaGFzRmllbGRGbGFnKG4uQW5ub3RhdGlvbkZpZWxkRmxhZy5NVUxUSVNFTEVDVCksdC5faGFzVGV4dD0hMCx0fXJldHVybiBfKG8sW3trZXk6ImdldEZpZWxkT2JqZWN0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuZGF0YS5jb21ibz8iY29tYm9ib3giOiJsaXN0Ym94Iix0PXRoaXMuZGF0YS5maWVsZFZhbHVlLmxlbmd0aD4wP3RoaXMuZGF0YS5maWVsZFZhbHVlWzBdOm51bGw7cmV0dXJue2lkOnRoaXMuZGF0YS5pZCx2YWx1ZTp0LGRlZmF1bHRWYWx1ZTp0aGlzLmRhdGEuZGVmYXVsdEZpZWxkVmFsdWUsZWRpdGFibGU6IXRoaXMuZGF0YS5yZWFkT25seSxuYW1lOnRoaXMuZGF0YS5maWVsZE5hbWUscmVjdDp0aGlzLmRhdGEucmVjdCxudW1JdGVtczp0aGlzLmRhdGEuZmllbGRWYWx1ZS5sZW5ndGgsbXVsdGlwbGVTZWxlY3Rpb246dGhpcy5kYXRhLm11bHRpU2VsZWN0LGhpZGRlbjp0aGlzLmRhdGEuaGlkZGVuLGFjdGlvbnM6dGhpcy5kYXRhLmFjdGlvbnMsaXRlbXM6dGhpcy5kYXRhLm9wdGlvbnMscGFnZTp0aGlzLmRhdGEucGFnZUluZGV4LHN0cm9rZUNvbG9yOnRoaXMuZGF0YS5ib3JkZXJDb2xvcixmaWxsQ29sb3I6dGhpcy5kYXRhLmJhY2tncm91bmRDb2xvcixyb3RhdGlvbjp0aGlzLnJvdGF0aW9uLHR5cGU6ZX19fSx7a2V5OiJfZ2V0QXBwZWFyYW5jZSIsdmFsdWU6KHQ9UChDKCkubWFyaygoZnVuY3Rpb24gZSh0LHIsYSxzKXt2YXIgYyx1LGwsZixoLGQscCxnLHYsbSxiLHcsayxTLE8sRixQLEksRSxqLE0sXyxMLFIsTixELEIsVSwkLFgscSxHLHosVyxWLFksSztyZXR1cm4gQygpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOmlmKCF0aGlzLmRhdGEuY29tYm8pe2UubmV4dD0yO2JyZWFrfXJldHVybiBlLmFicnVwdCgicmV0dXJuIix5KHgoby5wcm90b3R5cGUpLCJfZ2V0QXBwZWFyYW5jZSIsdGhpcykuY2FsbCh0aGlzLHQscixhLHMpKTtjYXNlIDI6aWYoKGw9cz9zLmdldCh0aGlzLmRhdGEuaWQpOnZvaWQgMCkmJih1PWwucm90YXRpb24sYz1sLnZhbHVlKSx2b2lkIDAhPT11fHx2b2lkIDAhPT1jfHx0aGlzLl9uZWVkQXBwZWFyYW5jZXMpe2UubmV4dD02O2JyZWFrfXJldHVybiBlLmFicnVwdCgicmV0dXJuIixudWxsKTtjYXNlIDY6Zm9yKHZvaWQgMD09PWM/Yz10aGlzLmRhdGEuZmllbGRWYWx1ZTpBcnJheS5pc0FycmF5KGMpfHwoYz1bY10pLGY9MSxoPTIsZD10aGlzLmRhdGEucmVjdFszXS10aGlzLmRhdGEucmVjdFsxXSxwPXRoaXMuZGF0YS5yZWN0WzJdLXRoaXMuZGF0YS5yZWN0WzBdLDkwIT09dSYmMjcwIT09dXx8KHA9KGc9W2QscF0pWzBdLGQ9Z1sxXSksdj10aGlzLmRhdGEub3B0aW9ucy5sZW5ndGgsbT1bXSxiPTA7Yjx2O2IrKyl3PXRoaXMuZGF0YS5vcHRpb25zW2JdLmV4cG9ydFZhbHVlLGMuaW5jbHVkZXModykmJm0ucHVzaChiKTtyZXR1cm4gdGhpcy5fZGVmYXVsdEFwcGVhcmFuY2V8fCh0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhPSgwLGkucGFyc2VEZWZhdWx0QXBwZWFyYW5jZSkodGhpcy5fZGVmYXVsdEFwcGVhcmFuY2U9Ii9IZWx2ZXRpY2EgMCBUZiAwIGciKSksZS5uZXh0PTE4LEguX2dldEZvbnREYXRhKHQscix0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhLHRoaXMuX2ZpZWxkUmVzb3VyY2VzLm1lcmdlZFJlc291cmNlcyk7Y2FzZSAxODppZihrPWUuc2VudCxPPXRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGEuZm9udFNpemUpUz10aGlzLl9kZWZhdWx0QXBwZWFyYW5jZTtlbHNle0Y9KGQtZikvdixQPS0xLEU9QSh0aGlzLmRhdGEub3B0aW9ucyk7dHJ5e2ZvcihFLnMoKTshKGo9RS5uKCkpLmRvbmU7KU09ai52YWx1ZS5kaXNwbGF5VmFsdWUsKF89dGhpcy5fZ2V0VGV4dFdpZHRoKE0saykpPlAmJihQPV8sST1NKX1jYXRjaChlKXtFLmUoZSl9ZmluYWxseXtFLmYoKX1MPXRoaXMuX2NvbXB1dGVGb250U2l6ZShGLHAtMipoLEksaywtMSksUj1UKEwsMiksUz1SWzBdLE89UlsxXX1pZihOPU8qbi5MSU5FX0ZBQ1RPUixEPShOLU8pLzIsQj1NYXRoLmZsb29yKGQvTiksMT09PW0ubGVuZ3RoPygkPW1bMF0sVT0kLSQlQik6VT1tLmxlbmd0aD9tWzBdOjAsWD1NYXRoLm1pbihVK0IrMSx2KSxxPVsiL1R4IEJNQyBxIiwiMSAxICIuY29uY2F0KHAsIiAiKS5jb25jYXQoZCwiIHJlIFcgbiIpXSxtLmxlbmd0aCl7cS5wdXNoKCIwLjYwMDAwNiAwLjc1Njg2NiAwLjg1NDkwNCByZyIpLEc9QShtKTt0cnl7Zm9yKEcucygpOyEoej1HLm4oKSkuZG9uZTspVz16LnZhbHVlLFU8PVcmJlc8WCYmcS5wdXNoKCIxICIuY29uY2F0KGQtKFctVSsxKSpOLCIgIikuY29uY2F0KHAsIiAiKS5jb25jYXQoTiwiIHJlIGYiKSl9Y2F0Y2goZSl7Ry5lKGUpfWZpbmFsbHl7Ry5mKCl9fWZvcihxLnB1c2goIkJUIixTLCIxIDAgMCAxIDAgIi5jb25jYXQoZCwiIFRtIikpLFY9e3NoaWZ0OjB9LGI9VTtiPFg7YisrKVk9dGhpcy5kYXRhLm9wdGlvbnNbYl0uZGlzcGxheVZhbHVlLEs9Yj09PVU/RDowLHEucHVzaCh0aGlzLl9yZW5kZXJUZXh0KFksayxPLHAsMCxWLGgsLU4rSykpO3JldHVybiBxLnB1c2goIkVUIFEgRU1DIiksZS5hYnJ1cHQoInJldHVybiIscS5qb2luKCJcbiIpKTtjYXNlIDMzOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSksZnVuY3Rpb24oZSxyLG4sYSl7cmV0dXJuIHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfSl9XSksb30oSCksVz1mdW5jdGlvbihlKXttKHIsZSk7dmFyIHQ9dyhyKTtmdW5jdGlvbiByKGUpe3ZhciBuO3JldHVybiBqKHRoaXMsciksKG49dC5jYWxsKHRoaXMsZSkpLmRhdGEuZmllbGRWYWx1ZT1udWxsLG59cmV0dXJuIF8ocixbe2tleToiZ2V0RmllbGRPYmplY3QiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJue2lkOnRoaXMuZGF0YS5pZCx2YWx1ZTpudWxsLHBhZ2U6dGhpcy5kYXRhLnBhZ2VJbmRleCx0eXBlOiJzaWduYXR1cmUifX19XSkscn0oSCksVj1mdW5jdGlvbihlKXttKHIsZSk7dmFyIHQ9dyhyKTtmdW5jdGlvbiByKGUpe3ZhciBhO2oodGhpcyxyKSxhPXQuY2FsbCh0aGlzLGUpO3ZhciBpPWUuZGljdDtyZXR1cm4gYS5kYXRhLmFubm90YXRpb25UeXBlPW4uQW5ub3RhdGlvblR5cGUuVEVYVCxhLmRhdGEuaGFzQXBwZWFyYW5jZT9hLmRhdGEubmFtZT0iTm9JY29uIjooYS5kYXRhLnJlY3RbMV09YS5kYXRhLnJlY3RbM10tMjIsYS5kYXRhLnJlY3RbMl09YS5kYXRhLnJlY3RbMF0rMjIsYS5kYXRhLm5hbWU9aS5oYXMoIk5hbWUiKT9pLmdldCgiTmFtZSIpLm5hbWU6Ik5vdGUiKSxpLmhhcygiU3RhdGUiKT8oYS5kYXRhLnN0YXRlPWkuZ2V0KCJTdGF0ZSIpfHxudWxsLGEuZGF0YS5zdGF0ZU1vZGVsPWkuZ2V0KCJTdGF0ZU1vZGVsIil8fG51bGwpOihhLmRhdGEuc3RhdGU9bnVsbCxhLmRhdGEuc3RhdGVNb2RlbD1udWxsKSxhfXJldHVybiBfKHIpfShYKSxZPWZ1bmN0aW9uKGUpe20ocixlKTt2YXIgdD13KHIpO2Z1bmN0aW9uIHIoZSl7dmFyIGE7aih0aGlzLHIpLChhPXQuY2FsbCh0aGlzLGUpKS5kYXRhLmFubm90YXRpb25UeXBlPW4uQW5ub3RhdGlvblR5cGUuTElOSzt2YXIgaT1EKGUuZGljdCxhLnJlY3RhbmdsZSk7cmV0dXJuIGkmJihhLmRhdGEucXVhZFBvaW50cz1pKSxhLmRhdGEuYm9yZGVyQ29sb3I9YS5kYXRhLmJvcmRlckNvbG9yfHxhLmRhdGEuY29sb3IsbC5DYXRhbG9nLnBhcnNlRGVzdERpY3Rpb25hcnkoe2Rlc3REaWN0OmUuZGljdCxyZXN1bHRPYmo6YS5kYXRhLGRvY0Jhc2VVcmw6ZS5wZGZNYW5hZ2VyLmRvY0Jhc2VVcmwsZG9jQXR0YWNobWVudHM6ZS5hdHRhY2htZW50c30pLGF9cmV0dXJuIF8ocil9KFUpLEs9ZnVuY3Rpb24oZSl7bShyLGUpO3ZhciB0PXcocik7ZnVuY3Rpb24gcihlKXt2YXIgYTtqKHRoaXMsciksYT10LmNhbGwodGhpcyxlKTt2YXIgaT1lLmRpY3Q7YS5kYXRhLmFubm90YXRpb25UeXBlPW4uQW5ub3RhdGlvblR5cGUuUE9QVVA7dmFyIHM9aS5nZXQoIlBhcmVudCIpO2lmKCFzKXJldHVybigwLG4ud2FybikoIlBvcHVwIGFubm90YXRpb24gaGFzIGEgbWlzc2luZyBvciBpbnZhbGlkIHBhcmVudCBhbm5vdGF0aW9uLiIpLGsoYSk7dmFyIGM9cy5nZXQoIlN1YnR5cGUiKTthLmRhdGEucGFyZW50VHlwZT1jIGluc3RhbmNlb2Ygby5OYW1lP2MubmFtZTpudWxsO3ZhciB1PWkuZ2V0UmF3KCJQYXJlbnQiKTthLmRhdGEucGFyZW50SWQ9dSBpbnN0YW5jZW9mIG8uUmVmP3UudG9TdHJpbmcoKTpudWxsO3ZhciBsPXMuZ2V0QXJyYXkoIlJlY3QiKTtBcnJheS5pc0FycmF5KGwpJiY0PT09bC5sZW5ndGg/YS5kYXRhLnBhcmVudFJlY3Q9bi5VdGlsLm5vcm1hbGl6ZVJlY3QobCk6YS5kYXRhLnBhcmVudFJlY3Q9WzAsMCwwLDBdO3ZhciBmPXMuZ2V0KCJSVCIpO2lmKCgwLG8uaXNOYW1lKShmLG4uQW5ub3RhdGlvblJlcGx5VHlwZS5HUk9VUCkmJihzPXMuZ2V0KCJJUlQiKSkscy5oYXMoIk0iKT8oYS5zZXRNb2RpZmljYXRpb25EYXRlKHMuZ2V0KCJNIikpLGEuZGF0YS5tb2RpZmljYXRpb25EYXRlPWEubW9kaWZpY2F0aW9uRGF0ZSk6YS5kYXRhLm1vZGlmaWNhdGlvbkRhdGU9bnVsbCxzLmhhcygiQyIpPyhhLnNldENvbG9yKHMuZ2V0QXJyYXkoIkMiKSksYS5kYXRhLmNvbG9yPWEuY29sb3IpOmEuZGF0YS5jb2xvcj1udWxsLCFhLnZpZXdhYmxlKXt2YXIgaD1zLmdldCgiRiIpO2EuX2lzVmlld2FibGUoaCkmJmEuc2V0RmxhZ3MoaCl9cmV0dXJuIGEuc2V0VGl0bGUocy5nZXQoIlQiKSksYS5kYXRhLnRpdGxlT2JqPWEuX3RpdGxlLGEuc2V0Q29udGVudHMocy5nZXQoIkNvbnRlbnRzIikpLGEuZGF0YS5jb250ZW50c09iaj1hLl9jb250ZW50cyxzLmhhcygiUkMiKSYmKGEuZGF0YS5yaWNoVGV4dD12LlhGQUZhY3RvcnkuZ2V0UmljaFRleHRBc0h0bWwocy5nZXQoIlJDIikpKSxhfXJldHVybiBfKHIpfShVKTt0LlBvcHVwQW5ub3RhdGlvbj1LO3ZhciBKPWZ1bmN0aW9uKGUpe20ocyxlKTt2YXIgdCxyPXcocyk7ZnVuY3Rpb24gcyhlKXt2YXIgdDtqKHRoaXMscyksdD1yLmNhbGwodGhpcyxlKTt2YXIgYT1lLnhyZWY7aWYodC5kYXRhLmFubm90YXRpb25UeXBlPW4uQW5ub3RhdGlvblR5cGUuRlJFRVRFWFQsdC5zZXREZWZhdWx0QXBwZWFyYW5jZShlKSwhdC5hcHBlYXJhbmNlJiZ0Ll9pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZCl7dmFyIG89bmV3IGkuRmFrZVVuaWNvZGVGb250KGEsInNhbnMtc2VyaWYiKSxjPXQuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGE7dC5hcHBlYXJhbmNlPW8uY3JlYXRlQXBwZWFyYW5jZSh0Ll9jb250ZW50cy5zdHIsdC5yZWN0YW5nbGUsdC5yb3RhdGlvbixjLmZvbnRTaXplfHwxMCxjLmZvbnRDb2xvciksdC5fc3RyZWFtcy5wdXNoKHQuYXBwZWFyYW5jZSxpLkZha2VVbmljb2RlRm9udC50b1VuaWNvZGVTdHJlYW0pfWVsc2UgdC5faXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWR8fCgwLG4ud2FybikoIkZyZWVUZXh0QW5ub3RhdGlvbjogT2Zmc2NyZWVuQ2FudmFzIGlzIG5vdCBzdXBwb3J0ZWQsIGFubm90YXRpb24gbWF5IG5vdCByZW5kZXIgY29ycmVjdGx5LiIpO3JldHVybiB0fXJldHVybiBfKHMsW3trZXk6Imhhc1RleHRDb250ZW50IixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuYXBwZWFyYW5jZX19XSxbe2tleToiY3JlYXRlTmV3RGljdCIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIpe3ZhciBzPXIuYXBSZWYsYz1yLmFwLHU9ZS5jb2xvcixsPWUuZm9udFNpemUsZj1lLnJlY3QsaD1lLnJvdGF0aW9uLGQ9ZS51c2VyLHA9ZS52YWx1ZSxnPW5ldyBvLkRpY3QodCk7Zy5zZXQoIlR5cGUiLG8uTmFtZS5nZXQoIkFubm90IikpLGcuc2V0KCJTdWJ0eXBlIixvLk5hbWUuZ2V0KCJGcmVlVGV4dCIpKSxnLnNldCgiQ3JlYXRpb25EYXRlIiwiRDoiLmNvbmNhdCgoMCxuLmdldE1vZGlmaWNhdGlvbkRhdGUpKCkpKSxnLnNldCgiUmVjdCIsZik7dmFyIHY9Ii9IZWx2ICIuY29uY2F0KGwsIiBUZiAiKS5jb25jYXQoKDAsaS5nZXRQZGZDb2xvcikodSwhMCkpO2lmKGcuc2V0KCJEQSIsdiksZy5zZXQoIkNvbnRlbnRzIiwoMCxhLmlzQXNjaWkpKHApP3A6KDAsYS5zdHJpbmdUb1VURjE2U3RyaW5nKShwLCEwKSksZy5zZXQoIkYiLDQpLGcuc2V0KCJCb3JkZXIiLFswLDAsMF0pLGcuc2V0KCJSb3RhdGUiLGgpLGQmJmcuc2V0KCJUIiwoMCxhLmlzQXNjaWkpKGQpP2Q6KDAsYS5zdHJpbmdUb1VURjE2U3RyaW5nKShkLCEwKSksc3x8Yyl7dmFyIHk9bmV3IG8uRGljdCh0KTtnLnNldCgiQVAiLHkpLHM/eS5zZXQoIk4iLHMpOnkuc2V0KCJOIixjKX1yZXR1cm4gZ319LHtrZXk6ImNyZWF0ZU5ld0FwcGVhcmFuY2VTdHJlYW0iLHZhbHVlOih0PVAoQygpLm1hcmsoKGZ1bmN0aW9uIGUodCxyLHMpe3ZhciBjLHUsbCxmLGgsZCxwLHYseSxtLGIsdyxrLFMseCxPLEYsUCxJLEUsaixNLF8sTCxSLE4sRCxCLFUsJCxYLHEsRyx6LFcsVixZLEssSixaLFEsZWUsdGUscmUsbmUsYWUsaWUsb2Usc2U7cmV0dXJuIEMoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gYz1zLmJhc2VGb250UmVmLHU9cy5ldmFsdWF0b3IsbD1zLnRhc2ssZj10LmNvbG9yLGg9dC5mb250U2l6ZSxkPXQucmVjdCxwPXQucm90YXRpb24sdj10LnZhbHVlLHk9bmV3IG8uRGljdChyKSxtPW5ldyBvLkRpY3QociksYz9tLnNldCgiSGVsdiIsYyk6KChiPW5ldyBvLkRpY3QocikpLnNldCgiQmFzZUZvbnQiLG8uTmFtZS5nZXQoIkhlbHZldGljYSIpKSxiLnNldCgiVHlwZSIsby5OYW1lLmdldCgiRm9udCIpKSxiLnNldCgiU3VidHlwZSIsby5OYW1lLmdldCgiVHlwZTEiKSksYi5zZXQoIkVuY29kaW5nIixvLk5hbWUuZ2V0KCJXaW5BbnNpRW5jb2RpbmciKSksbS5zZXQoIkhlbHYiLGIpKSx5LnNldCgiRm9udCIsbSksZS5uZXh0PTgsSC5fZ2V0Rm9udERhdGEodSxsLHtmb250TmFtZToiSGVsdmV0aWNhIixmb250U2l6ZTpofSx5KTtjYXNlIDg6dz1lLnNlbnQsaz1UKGQsNCksUz1rWzBdLHg9a1sxXSxPPWtbMl0sRj1rWzNdLFA9Ty1TLEk9Ri14LHAlMTgwIT0wJiYoUD0oRT1bSSxQXSlbMF0sST1FWzFdKSxqPXYuc3BsaXQoIlxuIiksTT1oLzFlMyxfPS0xLzAsTD1bXSxSPUEoaiksZS5wcmV2PTE4LFIucygpO2Nhc2UgMjA6aWYoKE49Ui5uKCkpLmRvbmUpe2UubmV4dD0zNDticmVha31pZihEPU4udmFsdWUsISgoQj13LmVuY29kZVN0cmluZyhEKSkubGVuZ3RoPjEpKXtlLm5leHQ9MjU7YnJlYWt9cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLG51bGwpO2Nhc2UgMjU6RD1CLmpvaW4oIiIpLEwucHVzaChEKSxVPTAsJD13LmNoYXJzVG9HbHlwaHMoRCksWD1BKCQpO3RyeXtmb3IoWC5zKCk7IShxPVgubigpKS5kb25lOylHPXEudmFsdWUsVSs9Ry53aWR0aCpNfWNhdGNoKGUpe1guZShlKX1maW5hbGx5e1guZigpfV89TWF0aC5tYXgoXyxVKTtjYXNlIDMyOmUubmV4dD0yMDticmVhaztjYXNlIDM0OmUubmV4dD0zOTticmVhaztjYXNlIDM2OmUucHJldj0zNixlLnQwPWUuY2F0Y2goMTgpLFIuZShlLnQwKTtjYXNlIDM5OnJldHVybiBlLnByZXY9MzksUi5mKCksZS5maW5pc2goMzkpO2Nhc2UgNDI6Zm9yKHo9MSxfPlAmJih6PVAvXyksVz0xLFY9bi5MSU5FX0ZBQ1RPUipoLFk9bi5MSU5FX0RFU0NFTlRfRkFDVE9SKmgsKEs9VipqLmxlbmd0aCk+SSYmKFc9SS9LKSxKPU1hdGgubWluKHosVyksWj1oKkosUT1bInEiLCIwIDAgIi5jb25jYXQoKDAsYS5udW1iZXJUb1N0cmluZykoUCksIiAiKS5jb25jYXQoKDAsYS5udW1iZXJUb1N0cmluZykoSSksIiByZSBXIG4iKSwiQlQiLCIxIDAgMCAxIDAgIi5jb25jYXQoKDAsYS5udW1iZXJUb1N0cmluZykoSStZKSwiIFRtIDAgVGMgIikuY29uY2F0KCgwLGkuZ2V0UGRmQ29sb3IpKGYsITApKSwiL0hlbHYgIi5jb25jYXQoKDAsYS5udW1iZXJUb1N0cmluZykoWiksIiBUZiIpXSxlZT0oMCxhLm51bWJlclRvU3RyaW5nKShWKSx0ZT0wLHJlPUw7dGU8cmUubGVuZ3RoO3RlKyspbmU9cmVbdGVdLFEucHVzaCgiMCAtIi5jb25jYXQoZWUsIiBUZCAoIikuY29uY2F0KCgwLGEuZXNjYXBlU3RyaW5nKShuZSksIikgVGoiKSk7cmV0dXJuIFEucHVzaCgiRVQiLCJRIiksYWU9US5qb2luKCJcbiIpLChpZT1uZXcgby5EaWN0KHIpKS5zZXQoIkZvcm1UeXBlIiwxKSxpZS5zZXQoIlN1YnR5cGUiLG8uTmFtZS5nZXQoIkZvcm0iKSksaWUuc2V0KCJUeXBlIixvLk5hbWUuZ2V0KCJYT2JqZWN0IikpLGllLnNldCgiQkJveCIsWzAsMCxQLEldKSxpZS5zZXQoIkxlbmd0aCIsYWUubGVuZ3RoKSxpZS5zZXQoIlJlc291cmNlcyIseSkscCYmKG9lPSgwLGEuZ2V0Um90YXRpb25NYXRyaXgpKHAsUCxJKSxpZS5zZXQoIk1hdHJpeCIsb2UpKSwoc2U9bmV3IGcuU3RyaW5nU3RyZWFtKGFlKSkuZGljdD1pZSxlLmFicnVwdCgicmV0dXJuIixzZSk7Y2FzZSA2NzpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsbnVsbCxbWzE4LDM2LDM5LDQyXV0pfSkpKSxmdW5jdGlvbihlLHIsbil7cmV0dXJuIHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfSl9XSksc30oWCksWj1mdW5jdGlvbihlKXttKHIsZSk7dmFyIHQ9dyhyKTtmdW5jdGlvbiByKGUpe3ZhciBhO2oodGhpcyxyKSxhPXQuY2FsbCh0aGlzLGUpO3ZhciBpPWUuZGljdCxvPWUueHJlZjthLmRhdGEuYW5ub3RhdGlvblR5cGU9bi5Bbm5vdGF0aW9uVHlwZS5MSU5FO3ZhciBzPWkuZ2V0QXJyYXkoIkwiKTtpZihhLmRhdGEubGluZUNvb3JkaW5hdGVzPW4uVXRpbC5ub3JtYWxpemVSZWN0KHMpLGEuc2V0TGluZUVuZGluZ3MoaS5nZXRBcnJheSgiTEUiKSksYS5kYXRhLmxpbmVFbmRpbmdzPWEubGluZUVuZGluZ3MsIWEuYXBwZWFyYW5jZSl7dmFyIGM9YS5jb2xvcj9OKGEuY29sb3IpOlswLDAsMF0sdT1pLmdldCgiQ0EiKSxsPVIoaS5nZXRBcnJheSgiSUMiKSxudWxsKSxmPWw/TihsKTpudWxsLGg9Zj91Om51bGwsZD1hLmJvcmRlclN0eWxlLndpZHRofHwxLHA9MipkLGc9W2EuZGF0YS5saW5lQ29vcmRpbmF0ZXNbMF0tcCxhLmRhdGEubGluZUNvb3JkaW5hdGVzWzFdLXAsYS5kYXRhLmxpbmVDb29yZGluYXRlc1syXStwLGEuZGF0YS5saW5lQ29vcmRpbmF0ZXNbM10rcF07bi5VdGlsLmludGVyc2VjdChhLnJlY3RhbmdsZSxnKXx8KGEucmVjdGFuZ2xlPWcpLGEuX3NldERlZmF1bHRBcHBlYXJhbmNlKHt4cmVmOm8sZXh0cmE6IiIuY29uY2F0KGQsIiB3Iiksc3Ryb2tlQ29sb3I6YyxmaWxsQ29sb3I6ZixzdHJva2VBbHBoYTp1LGZpbGxBbHBoYTpoLHBvaW50c0NhbGxiYWNrOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUucHVzaCgiIi5jb25jYXQoc1swXSwiICIpLmNvbmNhdChzWzFdLCIgbSIpLCIiLmNvbmNhdChzWzJdLCIgIikuY29uY2F0KHNbM10sIiBsIiksIlMiKSxbdFswXS54LWQsdFsxXS54K2QsdFszXS55LWQsdFsxXS55K2RdfX0pfXJldHVybiBhfXJldHVybiBfKHIpfShYKSxRPWZ1bmN0aW9uKGUpe20ocixlKTt2YXIgdD13KHIpO2Z1bmN0aW9uIHIoZSl7dmFyIGE7aih0aGlzLHIpLGE9dC5jYWxsKHRoaXMsZSk7dmFyIGk9ZS5kaWN0LG89ZS54cmVmO2lmKGEuZGF0YS5hbm5vdGF0aW9uVHlwZT1uLkFubm90YXRpb25UeXBlLlNRVUFSRSwhYS5hcHBlYXJhbmNlKXt2YXIgcz1hLmNvbG9yP04oYS5jb2xvcik6WzAsMCwwXSxjPWkuZ2V0KCJDQSIpLHU9UihpLmdldEFycmF5KCJJQyIpLG51bGwpLGw9dT9OKHUpOm51bGwsZj1sP2M6bnVsbDtpZigwPT09YS5ib3JkZXJTdHlsZS53aWR0aCYmIWwpcmV0dXJuIGsoYSk7YS5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6byxleHRyYToiIi5jb25jYXQoYS5ib3JkZXJTdHlsZS53aWR0aCwiIHciKSxzdHJva2VDb2xvcjpzLGZpbGxDb2xvcjpsLHN0cm9rZUFscGhhOmMsZmlsbEFscGhhOmYscG9pbnRzQ2FsbGJhY2s6ZnVuY3Rpb24oZSx0KXt2YXIgcj10WzJdLngrYS5ib3JkZXJTdHlsZS53aWR0aC8yLG49dFsyXS55K2EuYm9yZGVyU3R5bGUud2lkdGgvMixpPXRbM10ueC10WzJdLngtYS5ib3JkZXJTdHlsZS53aWR0aCxvPXRbMV0ueS10WzNdLnktYS5ib3JkZXJTdHlsZS53aWR0aDtyZXR1cm4gZS5wdXNoKCIiLmNvbmNhdChyLCIgIikuY29uY2F0KG4sIiAiKS5jb25jYXQoaSwiICIpLmNvbmNhdChvLCIgcmUiKSksbD9lLnB1c2goIkIiKTplLnB1c2goIlMiKSxbdFswXS54LHRbMV0ueCx0WzNdLnksdFsxXS55XX19KX1yZXR1cm4gYX1yZXR1cm4gXyhyKX0oWCksZWU9ZnVuY3Rpb24oZSl7bShyLGUpO3ZhciB0PXcocik7ZnVuY3Rpb24gcihlKXt2YXIgYTtqKHRoaXMsciksYT10LmNhbGwodGhpcyxlKTt2YXIgaT1lLmRpY3Qsbz1lLnhyZWY7aWYoYS5kYXRhLmFubm90YXRpb25UeXBlPW4uQW5ub3RhdGlvblR5cGUuQ0lSQ0xFLCFhLmFwcGVhcmFuY2Upe3ZhciBzPWEuY29sb3I/TihhLmNvbG9yKTpbMCwwLDBdLGM9aS5nZXQoIkNBIiksdT1SKGkuZ2V0QXJyYXkoIklDIiksbnVsbCksbD11P04odSk6bnVsbCxmPWw/YzpudWxsO2lmKDA9PT1hLmJvcmRlclN0eWxlLndpZHRoJiYhbClyZXR1cm4gayhhKTt2YXIgaD00LzMqTWF0aC50YW4oTWF0aC5QSS84KTthLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjpvLGV4dHJhOiIiLmNvbmNhdChhLmJvcmRlclN0eWxlLndpZHRoLCIgdyIpLHN0cm9rZUNvbG9yOnMsZmlsbENvbG9yOmwsc3Ryb2tlQWxwaGE6YyxmaWxsQWxwaGE6Zixwb2ludHNDYWxsYmFjazpmdW5jdGlvbihlLHQpe3ZhciByPXRbMF0ueCthLmJvcmRlclN0eWxlLndpZHRoLzIsbj10WzBdLnktYS5ib3JkZXJTdHlsZS53aWR0aC8yLGk9dFszXS54LWEuYm9yZGVyU3R5bGUud2lkdGgvMixvPXRbM10ueSthLmJvcmRlclN0eWxlLndpZHRoLzIscz1yKyhpLXIpLzIsYz1uKyhvLW4pLzIsdT0oaS1yKS8yKmgsZj0oby1uKS8yKmg7cmV0dXJuIGUucHVzaCgiIi5jb25jYXQocywiICIpLmNvbmNhdChvLCIgbSIpLCIiLmNvbmNhdChzK3UsIiAiKS5jb25jYXQobywiICIpLmNvbmNhdChpLCIgIikuY29uY2F0KGMrZiwiICIpLmNvbmNhdChpLCIgIikuY29uY2F0KGMsIiBjIiksIiIuY29uY2F0KGksIiAiKS5jb25jYXQoYy1mLCIgIikuY29uY2F0KHMrdSwiICIpLmNvbmNhdChuLCIgIikuY29uY2F0KHMsIiAiKS5jb25jYXQobiwiIGMiKSwiIi5jb25jYXQocy11LCIgIikuY29uY2F0KG4sIiAiKS5jb25jYXQociwiICIpLmNvbmNhdChjLWYsIiAiKS5jb25jYXQociwiICIpLmNvbmNhdChjLCIgYyIpLCIiLmNvbmNhdChyLCIgIikuY29uY2F0KGMrZiwiICIpLmNvbmNhdChzLXUsIiAiKS5jb25jYXQobywiICIpLmNvbmNhdChzLCIgIikuY29uY2F0KG8sIiBjIiksImgiKSxsP2UucHVzaCgiQiIpOmUucHVzaCgiUyIpLFt0WzBdLngsdFsxXS54LHRbM10ueSx0WzFdLnldfX0pfXJldHVybiBhfXJldHVybiBfKHIpfShYKSx0ZT1mdW5jdGlvbihlKXttKHIsZSk7dmFyIHQ9dyhyKTtmdW5jdGlvbiByKGUpe3ZhciBhO2oodGhpcyxyKSxhPXQuY2FsbCh0aGlzLGUpO3ZhciBpPWUuZGljdCxvPWUueHJlZjthLmRhdGEuYW5ub3RhdGlvblR5cGU9bi5Bbm5vdGF0aW9uVHlwZS5QT0xZTElORSxhLmRhdGEudmVydGljZXM9W10sUyhhKWluc3RhbmNlb2YgcmV8fChhLnNldExpbmVFbmRpbmdzKGkuZ2V0QXJyYXkoIkxFIikpLGEuZGF0YS5saW5lRW5kaW5ncz1hLmxpbmVFbmRpbmdzKTt2YXIgcz1pLmdldEFycmF5KCJWZXJ0aWNlcyIpO2lmKCFBcnJheS5pc0FycmF5KHMpKXJldHVybiBrKGEpO2Zvcih2YXIgYz0wLHU9cy5sZW5ndGg7Yzx1O2MrPTIpYS5kYXRhLnZlcnRpY2VzLnB1c2goe3g6c1tjXSx5OnNbYysxXX0pO2lmKCFhLmFwcGVhcmFuY2Upe3ZhciBsLGY9YS5jb2xvcj9OKGEuY29sb3IpOlswLDAsMF0saD1pLmdldCgiQ0EiKSxkPWEuYm9yZGVyU3R5bGUud2lkdGh8fDEscD0yKmQsZz1bMS8wLDEvMCwtMS8wLC0xLzBdLHY9QShhLmRhdGEudmVydGljZXMpO3RyeXtmb3Iodi5zKCk7IShsPXYubigpKS5kb25lOyl7dmFyIHk9bC52YWx1ZTtnWzBdPU1hdGgubWluKGdbMF0seS54LXApLGdbMV09TWF0aC5taW4oZ1sxXSx5LnktcCksZ1syXT1NYXRoLm1heChnWzJdLHkueCtwKSxnWzNdPU1hdGgubWF4KGdbM10seS55K3ApfX1jYXRjaChlKXt2LmUoZSl9ZmluYWxseXt2LmYoKX1uLlV0aWwuaW50ZXJzZWN0KGEucmVjdGFuZ2xlLGcpfHwoYS5yZWN0YW5nbGU9ZyksYS5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6byxleHRyYToiIi5jb25jYXQoZCwiIHciKSxzdHJva2VDb2xvcjpmLHN0cm9rZUFscGhhOmgscG9pbnRzQ2FsbGJhY2s6ZnVuY3Rpb24oZSx0KXtmb3IodmFyIHI9YS5kYXRhLnZlcnRpY2VzLG49MCxpPXIubGVuZ3RoO248aTtuKyspZS5wdXNoKCIiLmNvbmNhdChyW25dLngsIiAiKS5jb25jYXQocltuXS55LCIgIikuY29uY2F0KDA9PT1uPyJtIjoibCIpKTtyZXR1cm4gZS5wdXNoKCJTIiksW3RbMF0ueCx0WzFdLngsdFszXS55LHRbMV0ueV19fSl9cmV0dXJuIGF9cmV0dXJuIF8ocil9KFgpLHJlPWZ1bmN0aW9uKGUpe20ocixlKTt2YXIgdD13KHIpO2Z1bmN0aW9uIHIoZSl7dmFyIGE7cmV0dXJuIGoodGhpcyxyKSwoYT10LmNhbGwodGhpcyxlKSkuZGF0YS5hbm5vdGF0aW9uVHlwZT1uLkFubm90YXRpb25UeXBlLlBPTFlHT04sYX1yZXR1cm4gXyhyKX0odGUpLG5lPWZ1bmN0aW9uKGUpe20ocixlKTt2YXIgdD13KHIpO2Z1bmN0aW9uIHIoZSl7dmFyIGE7cmV0dXJuIGoodGhpcyxyKSwoYT10LmNhbGwodGhpcyxlKSkuZGF0YS5hbm5vdGF0aW9uVHlwZT1uLkFubm90YXRpb25UeXBlLkNBUkVULGF9cmV0dXJuIF8ocil9KFgpLGFlPWZ1bmN0aW9uKGUpe20ocyxlKTt2YXIgdCxyPXcocyk7ZnVuY3Rpb24gcyhlKXt2YXIgdDtqKHRoaXMscyksdD1yLmNhbGwodGhpcyxlKTt2YXIgYT1lLmRpY3QsaT1lLnhyZWY7dC5kYXRhLmFubm90YXRpb25UeXBlPW4uQW5ub3RhdGlvblR5cGUuSU5LLHQuZGF0YS5pbmtMaXN0cz1bXTt2YXIgbz1hLmdldEFycmF5KCJJbmtMaXN0Iik7aWYoIUFycmF5LmlzQXJyYXkobykpcmV0dXJuIGsodCk7Zm9yKHZhciBjPTAsdT1vLmxlbmd0aDtjPHU7KytjKXt0LmRhdGEuaW5rTGlzdHMucHVzaChbXSk7Zm9yKHZhciBsPTAsZj1vW2NdLmxlbmd0aDtsPGY7bCs9Mil0LmRhdGEuaW5rTGlzdHNbY10ucHVzaCh7eDppLmZldGNoSWZSZWYob1tjXVtsXSkseTppLmZldGNoSWZSZWYob1tjXVtsKzFdKX0pfWlmKCF0LmFwcGVhcmFuY2Upe3ZhciBoLGQ9dC5jb2xvcj9OKHQuY29sb3IpOlswLDAsMF0scD1hLmdldCgiQ0EiKSxnPXQuYm9yZGVyU3R5bGUud2lkdGh8fDEsdj0yKmcseT1bMS8wLDEvMCwtMS8wLC0xLzBdLG09QSh0LmRhdGEuaW5rTGlzdHMpO3RyeXtmb3IobS5zKCk7IShoPW0ubigpKS5kb25lOyl7dmFyIGIsdz1BKGgudmFsdWUpO3RyeXtmb3Iody5zKCk7IShiPXcubigpKS5kb25lOyl7dmFyIFM9Yi52YWx1ZTt5WzBdPU1hdGgubWluKHlbMF0sUy54LXYpLHlbMV09TWF0aC5taW4oeVsxXSxTLnktdikseVsyXT1NYXRoLm1heCh5WzJdLFMueCt2KSx5WzNdPU1hdGgubWF4KHlbM10sUy55K3YpfX1jYXRjaChlKXt3LmUoZSl9ZmluYWxseXt3LmYoKX19fWNhdGNoKGUpe20uZShlKX1maW5hbGx5e20uZigpfW4uVXRpbC5pbnRlcnNlY3QodC5yZWN0YW5nbGUseSl8fCh0LnJlY3RhbmdsZT15KSx0Ll9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjppLGV4dHJhOiIiLmNvbmNhdChnLCIgdyIpLHN0cm9rZUNvbG9yOmQsc3Ryb2tlQWxwaGE6cCxwb2ludHNDYWxsYmFjazpmdW5jdGlvbihlLHIpe3ZhciBuLGE9QSh0LmRhdGEuaW5rTGlzdHMpO3RyeXtmb3IoYS5zKCk7IShuPWEubigpKS5kb25lOyl7Zm9yKHZhciBpPW4udmFsdWUsbz0wLHM9aS5sZW5ndGg7bzxzO28rKyllLnB1c2goIiIuY29uY2F0KGlbb10ueCwiICIpLmNvbmNhdChpW29dLnksIiAiKS5jb25jYXQoMD09PW8/Im0iOiJsIikpO2UucHVzaCgiUyIpfX1jYXRjaChlKXthLmUoZSl9ZmluYWxseXthLmYoKX1yZXR1cm5bclswXS54LHJbMV0ueCxyWzNdLnksclsxXS55XX19KX1yZXR1cm4gdH1yZXR1cm4gXyhzLG51bGwsW3trZXk6ImNyZWF0ZU5ld0RpY3QiLHZhbHVlOmZ1bmN0aW9uKGUsdCxyKXt2YXIgYT1yLmFwUmVmLGk9ci5hcCxzPWUucGF0aHMsYz1lLnJlY3QsdT1lLnJvdGF0aW9uLGw9bmV3IG8uRGljdCh0KTtsLnNldCgiVHlwZSIsby5OYW1lLmdldCgiQW5ub3QiKSksbC5zZXQoIlN1YnR5cGUiLG8uTmFtZS5nZXQoIkluayIpKSxsLnNldCgiQ3JlYXRpb25EYXRlIiwiRDoiLmNvbmNhdCgoMCxuLmdldE1vZGlmaWNhdGlvbkRhdGUpKCkpKSxsLnNldCgiUmVjdCIsYyksbC5zZXQoIklua0xpc3QiLHMubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZS5wb2ludHN9KSkpLGwuc2V0KCJGIiw0KSxsLnNldCgiQm9yZGVyIixbMCwwLDBdKSxsLnNldCgiUm90YXRlIix1KTt2YXIgZj1uZXcgby5EaWN0KHQpO3JldHVybiBsLnNldCgiQVAiLGYpLGE/Zi5zZXQoIk4iLGEpOmYuc2V0KCJOIixpKSxsfX0se2tleToiY3JlYXRlTmV3QXBwZWFyYW5jZVN0cmVhbSIsdmFsdWU6KHQ9UChDKCkubWFyaygoZnVuY3Rpb24gZSh0LHIsbil7dmFyIHMsYyx1LGwsZixoLGQscCx2LHksbSxiLHcsayxTLHgsTyxGLFAsSSxFLGosTSxfLEwsUixOLEQsQjtyZXR1cm4gQygpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnM9dC5jb2xvcixjPXQucmVjdCx1PXQucm90YXRpb24sbD10LnBhdGhzLGY9dC50aGlja25lc3MsaD10Lm9wYWNpdHksZD1UKGMsNCkscD1kWzBdLHY9ZFsxXSx5PWRbMl0sbT1kWzNdLGI9eS1wLHc9bS12LHUlMTgwIT0wJiYoYj0oaz1bdyxiXSlbMF0sdz1rWzFdKSxTPVsiIi5jb25jYXQoZiwiIHcgMSBKIDEgaiIpLCIiLmNvbmNhdCgoMCxpLmdldFBkZkNvbG9yKShzLCExKSldLDEhPT1oJiZTLnB1c2goIi9SMCBncyIpLHg9W10sTz1BKGwpO3RyeXtmb3IoTy5zKCk7IShGPU8ubigpKS5kb25lOyl7Zm9yKFA9Ri52YWx1ZS5iZXppZXIseC5sZW5ndGg9MCx4LnB1c2goIiIuY29uY2F0KCgwLGEubnVtYmVyVG9TdHJpbmcpKFBbMF0pLCIgIikuY29uY2F0KCgwLGEubnVtYmVyVG9TdHJpbmcpKFBbMV0pLCIgbSIpKSxJPTIsRT1QLmxlbmd0aDtJPEU7SSs9NilqPVAuc2xpY2UoSSxJKzYpLm1hcChhLm51bWJlclRvU3RyaW5nKS5qb2luKCIgIikseC5wdXNoKCIiLmNvbmNhdChqLCIgYyIpKTt4LnB1c2goIlMiKSxTLnB1c2goeC5qb2luKCJcbiIpKX19Y2F0Y2goZSl7Ty5lKGUpfWZpbmFsbHl7Ty5mKCl9cmV0dXJuIE09Uy5qb2luKCJcbiIpLChfPW5ldyBvLkRpY3QocikpLnNldCgiRm9ybVR5cGUiLDEpLF8uc2V0KCJTdWJ0eXBlIixvLk5hbWUuZ2V0KCJGb3JtIikpLF8uc2V0KCJUeXBlIixvLk5hbWUuZ2V0KCJYT2JqZWN0IikpLF8uc2V0KCJCQm94IixbMCwwLGIsd10pLF8uc2V0KCJMZW5ndGgiLE0ubGVuZ3RoKSx1JiYoTD0oMCxhLmdldFJvdGF0aW9uTWF0cml4KSh1LGIsdyksXy5zZXQoIk1hdHJpeCIsTCkpLDEhPT1oJiYoUj1uZXcgby5EaWN0KHIpLE49bmV3IG8uRGljdChyKSwoRD1uZXcgby5EaWN0KHIpKS5zZXQoIkNBIixoKSxELnNldCgiVHlwZSIsby5OYW1lLmdldCgiRXh0R1N0YXRlIikpLE4uc2V0KCJSMCIsRCksUi5zZXQoIkV4dEdTdGF0ZSIsTiksXy5zZXQoIlJlc291cmNlcyIsUikpLChCPW5ldyBnLlN0cmluZ1N0cmVhbShNKSkuZGljdD1fLGUuYWJydXB0KCJyZXR1cm4iLEIpO2Nhc2UgMjI6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSksZnVuY3Rpb24oZSxyLG4pe3JldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pfV0pLHN9KFgpLGllPWZ1bmN0aW9uKGUpe20ocixlKTt2YXIgdD13KHIpO2Z1bmN0aW9uIHIoZSl7dmFyIGE7aih0aGlzLHIpLGE9dC5jYWxsKHRoaXMsZSk7dmFyIGk9ZS5kaWN0LG89ZS54cmVmO2lmKGEuZGF0YS5hbm5vdGF0aW9uVHlwZT1uLkFubm90YXRpb25UeXBlLkhJR0hMSUdIVCxhLmRhdGEucXVhZFBvaW50cz1EKGksbnVsbCkpe3ZhciBzPWEuYXBwZWFyYW5jZSYmYS5hcHBlYXJhbmNlLmRpY3QuZ2V0KCJSZXNvdXJjZXMiKTtpZighYS5hcHBlYXJhbmNlfHwhc3x8IXMuaGFzKCJFeHRHU3RhdGUiKSl7YS5hcHBlYXJhbmNlJiYoMCxuLndhcm4pKCJIaWdobGlnaHRBbm5vdGF0aW9uIC0gaWdub3JpbmcgYnVpbHQtaW4gYXBwZWFyYW5jZSBzdHJlYW0uIik7dmFyIGM9YS5jb2xvcj9OKGEuY29sb3IpOlsxLDEsMF0sdT1pLmdldCgiQ0EiKTthLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjpvLGZpbGxDb2xvcjpjLGJsZW5kTW9kZToiTXVsdGlwbHkiLGZpbGxBbHBoYTp1LHBvaW50c0NhbGxiYWNrOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUucHVzaCgiIi5jb25jYXQodFswXS54LCIgIikuY29uY2F0KHRbMF0ueSwiIG0iKSwiIi5jb25jYXQodFsxXS54LCIgIikuY29uY2F0KHRbMV0ueSwiIGwiKSwiIi5jb25jYXQodFszXS54LCIgIikuY29uY2F0KHRbM10ueSwiIGwiKSwiIi5jb25jYXQodFsyXS54LCIgIikuY29uY2F0KHRbMl0ueSwiIGwiKSwiZiIpLFt0WzBdLngsdFsxXS54LHRbM10ueSx0WzFdLnldfX0pfX1lbHNlIGEuZGF0YS5oYXNQb3B1cD0hMTtyZXR1cm4gYX1yZXR1cm4gXyhyKX0oWCksb2U9ZnVuY3Rpb24oZSl7bShyLGUpO3ZhciB0PXcocik7ZnVuY3Rpb24gcihlKXt2YXIgYTtqKHRoaXMsciksYT10LmNhbGwodGhpcyxlKTt2YXIgaT1lLmRpY3Qsbz1lLnhyZWY7aWYoYS5kYXRhLmFubm90YXRpb25UeXBlPW4uQW5ub3RhdGlvblR5cGUuVU5ERVJMSU5FLGEuZGF0YS5xdWFkUG9pbnRzPUQoaSxudWxsKSl7aWYoIWEuYXBwZWFyYW5jZSl7dmFyIHM9YS5jb2xvcj9OKGEuY29sb3IpOlswLDAsMF0sYz1pLmdldCgiQ0EiKTthLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjpvLGV4dHJhOiJbXSAwIGQgMSB3IixzdHJva2VDb2xvcjpzLHN0cm9rZUFscGhhOmMscG9pbnRzQ2FsbGJhY2s6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5wdXNoKCIiLmNvbmNhdCh0WzJdLngsIiAiKS5jb25jYXQodFsyXS55LCIgbSIpLCIiLmNvbmNhdCh0WzNdLngsIiAiKS5jb25jYXQodFszXS55LCIgbCIpLCJTIiksW3RbMF0ueCx0WzFdLngsdFszXS55LHRbMV0ueV19fSl9fWVsc2UgYS5kYXRhLmhhc1BvcHVwPSExO3JldHVybiBhfXJldHVybiBfKHIpfShYKSxzZT1mdW5jdGlvbihlKXttKHIsZSk7dmFyIHQ9dyhyKTtmdW5jdGlvbiByKGUpe3ZhciBhO2oodGhpcyxyKSxhPXQuY2FsbCh0aGlzLGUpO3ZhciBpPWUuZGljdCxvPWUueHJlZjtpZihhLmRhdGEuYW5ub3RhdGlvblR5cGU9bi5Bbm5vdGF0aW9uVHlwZS5TUVVJR0dMWSxhLmRhdGEucXVhZFBvaW50cz1EKGksbnVsbCkpe2lmKCFhLmFwcGVhcmFuY2Upe3ZhciBzPWEuY29sb3I/TihhLmNvbG9yKTpbMCwwLDBdLGM9aS5nZXQoIkNBIik7YS5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6byxleHRyYToiW10gMCBkIDEgdyIsc3Ryb2tlQ29sb3I6cyxzdHJva2VBbHBoYTpjLHBvaW50c0NhbGxiYWNrOmZ1bmN0aW9uKGUsdCl7dmFyIHI9KHRbMF0ueS10WzJdLnkpLzYsbj1yLGE9dFsyXS54LGk9dFsyXS55LG89dFszXS54O2UucHVzaCgiIi5jb25jYXQoYSwiICIpLmNvbmNhdChpK24sIiBtIikpO2Rve2ErPTIsbj0wPT09bj9yOjAsZS5wdXNoKCIiLmNvbmNhdChhLCIgIikuY29uY2F0KGkrbiwiIGwiKSl9d2hpbGUoYTxvKTtyZXR1cm4gZS5wdXNoKCJTIiksW3RbMl0ueCxvLGktMipyLGkrMipyXX19KX19ZWxzZSBhLmRhdGEuaGFzUG9wdXA9ITE7cmV0dXJuIGF9cmV0dXJuIF8ocil9KFgpLGNlPWZ1bmN0aW9uKGUpe20ocixlKTt2YXIgdD13KHIpO2Z1bmN0aW9uIHIoZSl7dmFyIGE7aih0aGlzLHIpLGE9dC5jYWxsKHRoaXMsZSk7dmFyIGk9ZS5kaWN0LG89ZS54cmVmO2lmKGEuZGF0YS5hbm5vdGF0aW9uVHlwZT1uLkFubm90YXRpb25UeXBlLlNUUklLRU9VVCxhLmRhdGEucXVhZFBvaW50cz1EKGksbnVsbCkpe2lmKCFhLmFwcGVhcmFuY2Upe3ZhciBzPWEuY29sb3I/TihhLmNvbG9yKTpbMCwwLDBdLGM9aS5nZXQoIkNBIik7YS5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6byxleHRyYToiW10gMCBkIDEgdyIsc3Ryb2tlQ29sb3I6cyxzdHJva2VBbHBoYTpjLHBvaW50c0NhbGxiYWNrOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUucHVzaCgiIi5jb25jYXQoKHRbMF0ueCt0WzJdLngpLzIsIiAiKSsiIi5jb25jYXQoKHRbMF0ueSt0WzJdLnkpLzIsIiBtIiksIiIuY29uY2F0KCh0WzFdLngrdFszXS54KS8yLCIgIikrIiIuY29uY2F0KCh0WzFdLnkrdFszXS55KS8yLCIgbCIpLCJTIiksW3RbMF0ueCx0WzFdLngsdFszXS55LHRbMV0ueV19fSl9fWVsc2UgYS5kYXRhLmhhc1BvcHVwPSExO3JldHVybiBhfXJldHVybiBfKHIpfShYKSx1ZT1mdW5jdGlvbihlKXttKHIsZSk7dmFyIHQ9dyhyKTtmdW5jdGlvbiByKGUpe3ZhciBhO3JldHVybiBqKHRoaXMsciksKGE9dC5jYWxsKHRoaXMsZSkpLmRhdGEuYW5ub3RhdGlvblR5cGU9bi5Bbm5vdGF0aW9uVHlwZS5TVEFNUCxhfXJldHVybiBfKHIpfShYKSxsZT1mdW5jdGlvbihlKXttKHIsZSk7dmFyIHQ9dyhyKTtmdW5jdGlvbiByKGUpe3ZhciBhO2oodGhpcyxyKSxhPXQuY2FsbCh0aGlzLGUpO3ZhciBpPWUuZGljdCxzPWUueHJlZixjPW5ldyBoLkZpbGVTcGVjKGkuZ2V0KCJGUyIpLHMpO2EuZGF0YS5hbm5vdGF0aW9uVHlwZT1uLkFubm90YXRpb25UeXBlLkZJTEVBVFRBQ0hNRU5ULGEuZGF0YS5maWxlPWMuc2VyaWFsaXphYmxlO3ZhciB1PWkuZ2V0KCJOYW1lIik7cmV0dXJuIGEuZGF0YS5uYW1lPXUgaW5zdGFuY2VvZiBvLk5hbWU/KDAsbi5zdHJpbmdUb1BERlN0cmluZykodS5uYW1lKToiUHVzaFBpbiIsYX1yZXR1cm4gXyhyKX0oWCl9LChlLHQscik9PntmdW5jdGlvbiBuKGUpe3JldHVybiBuPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSxuKGUpfU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LkZha2VVbmljb2RlRm9udD12b2lkIDAsdC5jcmVhdGVEZWZhdWx0QXBwZWFyYW5jZT1mdW5jdGlvbihlKXt2YXIgdD1lLmZvbnRTaXplLHI9ZS5mb250TmFtZSxuPWUuZm9udENvbG9yO3JldHVybiIvIi5jb25jYXQoKDAsaS5lc2NhcGVQREZOYW1lKShyKSwiICIpLmNvbmNhdCh0LCIgVGYgIikuY29uY2F0KHcobiwhMCkpfSx0LmdldFBkZkNvbG9yPXcsdC5wYXJzZURlZmF1bHRBcHBlYXJhbmNlPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgYihlKS5wYXJzZSgpfTt2YXIgYT1yKDEzNCksaT1yKDEzNSksbz1yKDIpLHM9cigxNDMpLGM9cigxNDQpLHU9cigxMzkpO2Z1bmN0aW9uIGwoZSx0KXt2YXIgcj0idW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlWyJAQGl0ZXJhdG9yIl07aWYoIXIpe2lmKEFycmF5LmlzQXJyYXkoZSl8fChyPWgoZSkpfHx0JiZlJiYibnVtYmVyIj09dHlwZW9mIGUubGVuZ3RoKXtyJiYoZT1yKTt2YXIgbj0wLGE9ZnVuY3Rpb24oKXt9O3JldHVybntzOmEsbjpmdW5jdGlvbigpe3JldHVybiBuPj1lLmxlbmd0aD97ZG9uZTohMH06e2RvbmU6ITEsdmFsdWU6ZVtuKytdfX0sZTpmdW5jdGlvbihlKXt0aHJvdyBlfSxmOmF9fXRocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBpdGVyYXRlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX12YXIgaSxvPSEwLHM9ITE7cmV0dXJue3M6ZnVuY3Rpb24oKXtyPXIuY2FsbChlKX0sbjpmdW5jdGlvbigpe3ZhciBlPXIubmV4dCgpO3JldHVybiBvPWUuZG9uZSxlfSxlOmZ1bmN0aW9uKGUpe3M9ITAsaT1lfSxmOmZ1bmN0aW9uKCl7dHJ5e298fG51bGw9PXIucmV0dXJufHxyLnJldHVybigpfWZpbmFsbHl7aWYocyl0aHJvdyBpfX19fWZ1bmN0aW9uIGYoZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIHI9bnVsbD09ZT9udWxsOiJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbIkBAaXRlcmF0b3IiXTtpZihudWxsIT1yKXt2YXIgbixhLGksbyxzPVtdLGM9ITAsdT0hMTt0cnl7aWYoaT0ocj1yLmNhbGwoZSkpLm5leHQsMD09PXQpe2lmKE9iamVjdChyKSE9PXIpcmV0dXJuO2M9ITF9ZWxzZSBmb3IoOyEoYz0obj1pLmNhbGwocikpLmRvbmUpJiYocy5wdXNoKG4udmFsdWUpLHMubGVuZ3RoIT09dCk7Yz0hMCk7fWNhdGNoKGUpe3U9ITAsYT1lfWZpbmFsbHl7dHJ5e2lmKCFjJiZudWxsIT1yLnJldHVybiYmKG89ci5yZXR1cm4oKSxPYmplY3QobykhPT1vKSlyZXR1cm59ZmluYWxseXtpZih1KXRocm93IGF9fXJldHVybiBzfX0oZSx0KXx8aChlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gaChlLHQpe2lmKGUpe2lmKCJzdHJpbmciPT10eXBlb2YgZSlyZXR1cm4gZChlLHQpO3ZhciByPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtyZXR1cm4iT2JqZWN0Ij09PXImJmUuY29uc3RydWN0b3ImJihyPWUuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1yfHwiU2V0Ij09PXI/QXJyYXkuZnJvbShlKToiQXJndW1lbnRzIj09PXJ8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KHIpP2QoZSx0KTp2b2lkIDB9fWZ1bmN0aW9uIGQoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIHI9MCxuPW5ldyBBcnJheSh0KTtyPHQ7cisrKW5bcl09ZVtyXTtyZXR1cm4gbn1mdW5jdGlvbiBwKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gZyhlLHQpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgYT10W3JdO2EuZW51bWVyYWJsZT1hLmVudW1lcmFibGV8fCExLGEuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBhJiYoYS53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsKHZvaWQgMCxpPWZ1bmN0aW9uKGUsdCl7aWYoIm9iamVjdCIhPT1uKGUpfHxudWxsPT09ZSlyZXR1cm4gZTt2YXIgcj1lW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09cil7dmFyIGE9ci5jYWxsKGUsInN0cmluZyIpO2lmKCJvYmplY3QiIT09bihhKSlyZXR1cm4gYTt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybiBTdHJpbmcoZSl9KGEua2V5KSwic3ltYm9sIj09PW4oaSk/aTpTdHJpbmcoaSkpLGEpfXZhciBpfWZ1bmN0aW9uIHYoZSx0LHIpe3JldHVybiB0JiZnKGUucHJvdG90eXBlLHQpLHImJmcoZSxyKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxlfWZ1bmN0aW9uIHkoZSx0KXtyZXR1cm4geT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihlLHQpe3JldHVybiBlLl9fcHJvdG9fXz10LGV9LHkoZSx0KX1mdW5jdGlvbiBtKGUpe3JldHVybiBtPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGUpe3JldHVybiBlLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpfSxtKGUpfXZhciBiPWZ1bmN0aW9uKGUpeyFmdW5jdGlvbihlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSx0JiZ5KGUsdCl9KGMsZSk7dmFyIHQscixpPSh0PWMscj1mdW5jdGlvbigpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0KXJldHVybiExO2lmKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sKGZ1bmN0aW9uKCl7fSkpKSwhMH1jYXRjaChlKXtyZXR1cm4hMX19KCksZnVuY3Rpb24oKXt2YXIgZSxhPW0odCk7aWYocil7dmFyIGk9bSh0aGlzKS5jb25zdHJ1Y3RvcjtlPVJlZmxlY3QuY29uc3RydWN0KGEsYXJndW1lbnRzLGkpfWVsc2UgZT1hLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZnVuY3Rpb24oZSx0KXtpZih0JiYoIm9iamVjdCI9PT1uKHQpfHwiZnVuY3Rpb24iPT10eXBlb2YgdCkpcmV0dXJuIHQ7aWYodm9pZCAwIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBmdW5jdGlvbihlKXtpZih2b2lkIDA9PT1lKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGV9KGUpfSh0aGlzLGUpfSk7ZnVuY3Rpb24gYyhlKXtyZXR1cm4gcCh0aGlzLGMpLGkuY2FsbCh0aGlzLG5ldyB1LlN0cmluZ1N0cmVhbShlKSl9cmV0dXJuIHYoYyxbe2tleToicGFyc2UiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9e2ZuOjAsYXJnczpbXX0sdD17Zm9udFNpemU6MCxmb250TmFtZToiIixmb250Q29sb3I6bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDMpfTt0cnl7Zm9yKDtlLmFyZ3MubGVuZ3RoPTAsdGhpcy5yZWFkKGUpOylpZigwPT09dGhpcy5zYXZlZFN0YXRlc0RlcHRoKXt2YXIgcj1lLmZuLG49ZS5hcmdzO3N3aXRjaCgwfHIpe2Nhc2Ugby5PUFMuc2V0Rm9udDp2YXIgaT1mKG4sMiksYz1pWzBdLHU9aVsxXTtjIGluc3RhbmNlb2YgYS5OYW1lJiYodC5mb250TmFtZT1jLm5hbWUpLCJudW1iZXIiPT10eXBlb2YgdSYmdT4wJiYodC5mb250U2l6ZT11KTticmVhaztjYXNlIG8uT1BTLnNldEZpbGxSR0JDb2xvcjpzLkNvbG9yU3BhY2Uuc2luZ2xldG9ucy5yZ2IuZ2V0UmdiSXRlbShuLDAsdC5mb250Q29sb3IsMCk7YnJlYWs7Y2FzZSBvLk9QUy5zZXRGaWxsR3JheTpzLkNvbG9yU3BhY2Uuc2luZ2xldG9ucy5ncmF5LmdldFJnYkl0ZW0obiwwLHQuZm9udENvbG9yLDApO2JyZWFrO2Nhc2Ugby5PUFMuc2V0RmlsbENvbG9yU3BhY2U6cy5Db2xvclNwYWNlLnNpbmdsZXRvbnMuY215ay5nZXRSZ2JJdGVtKG4sMCx0LmZvbnRDb2xvciwwKX19fWNhdGNoKGUpeygwLG8ud2FybikoJ3BhcnNlRGVmYXVsdEFwcGVhcmFuY2UgLSBpZ25vcmluZyBlcnJvcnM6ICInLmNvbmNhdChlLCciLicpKX1yZXR1cm4gdH19XSksY30oYy5FdmFsdWF0b3JQcmVwcm9jZXNzb3IpO2Z1bmN0aW9uIHcoZSx0KXtpZihlWzBdPT09ZVsxXSYmZVsxXT09PWVbMl0pe3ZhciByPWVbMF0vMjU1O3JldHVybiIiLmNvbmNhdCgoMCxpLm51bWJlclRvU3RyaW5nKShyKSwiICIpLmNvbmNhdCh0PyJnIjoiRyIpfXJldHVybiBBcnJheS5mcm9tKGUsKGZ1bmN0aW9uKGUpe3JldHVybigwLGkubnVtYmVyVG9TdHJpbmcpKGUvMjU1KX0pKS5qb2luKCIgIikrIiAiLmNvbmNhdCh0PyJyZyI6IlJHIil9dmFyIGs9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQscil7cCh0aGlzLGUpLHRoaXMueHJlZj10LHRoaXMud2lkdGhzPW51bGwsdGhpcy5maXJzdENoYXI9MS8wLHRoaXMubGFzdENoYXI9LTEvMCx0aGlzLmZvbnRGYW1pbHk9cjt2YXIgbj1uZXcgT2Zmc2NyZWVuQ2FudmFzKDEsMSk7dGhpcy5jdHhNZWFzdXJlPW4uZ2V0Q29udGV4dCgiMmQiKSxlLl9mb250TmFtZUlkfHwoZS5fZm9udE5hbWVJZD0xKSx0aGlzLmZvbnROYW1lPWEuTmFtZS5nZXQoIkludmFsaWRQREZqc0ZvbnRfIi5jb25jYXQociwiXyIpLmNvbmNhdChlLl9mb250TmFtZUlkKyspKX1yZXR1cm4gdihlLFt7a2V5OiJ0b1VuaWNvZGVSZWYiLGdldDpmdW5jdGlvbigpe2lmKCFlLl90b1VuaWNvZGVSZWYpe3ZhciB0PWUudG9Vbmljb2RlU3RyZWFtPW5ldyB1LlN0cmluZ1N0cmVhbSgiL0NJREluaXQgL1Byb2NTZXQgZmluZHJlc291cmNlIGJlZ2luXG4xMiBkaWN0IGJlZ2luXG5iZWdpbmNtYXBcbi9DSURTeXN0ZW1JbmZvXG48PCAvUmVnaXN0cnkgKEFkb2JlKVxuL09yZGVyaW5nIChVQ1MpIC9TdXBwbGVtZW50IDAgPj4gZGVmXG4vQ01hcE5hbWUgL0Fkb2JlLUlkZW50aXR5LVVDUyBkZWZcbi9DTWFwVHlwZSAyIGRlZlxuMSBiZWdpbmNvZGVzcGFjZXJhbmdlXG48MDAwMD4gPEZGRkY+XG5lbmRjb2Rlc3BhY2VyYW5nZVxuMSBiZWdpbmJmcmFuZ2VcbjwwMDAwPiA8RkZGRj4gPDAwMDA+XG5lbmRiZnJhbmdlXG5lbmRjbWFwIENNYXBOYW1lIGN1cnJlbnRkaWN0IC9DTWFwIGRlZmluZXJlc291cmNlIHBvcCBlbmQgZW5kIikscj1uZXcgYS5EaWN0KHRoaXMueHJlZik7dC5kaWN0PXIsci5zZXQoIkxlbmd0aCIsMzQ2KSxlLl90b1VuaWNvZGVSZWY9dGhpcy54cmVmLmdldE5ld1BlcnNpc3RlbnRSZWYodCl9cmV0dXJuIGUuX3RvVW5pY29kZVJlZn19LHtrZXk6ImZvbnREZXNjcmlwdG9yUmVmIixnZXQ6ZnVuY3Rpb24oKXtpZighZS5fZm9udERlc2NyaXB0b3JSZWYpe3ZhciB0PW5ldyBhLkRpY3QodGhpcy54cmVmKTt0LnNldCgiVHlwZSIsYS5OYW1lLmdldCgiRm9udERlc2NyaXB0b3IiKSksdC5zZXQoIkZvbnROYW1lIix0aGlzLmZvbnROYW1lKSx0LnNldCgiRm9udEZhbWlseSIsIk15cmlhZFBybyBSZWd1bGFyIiksdC5zZXQoIkZvbnRCQm94IixbMCwwLDAsMF0pLHQuc2V0KCJGb250U3RyZXRjaCIsYS5OYW1lLmdldCgiTm9ybWFsIikpLHQuc2V0KCJGb250V2VpZ2h0Iiw0MDApLHQuc2V0KCJJdGFsaWNBbmdsZSIsMCksZS5fZm9udERlc2NyaXB0b3JSZWY9dGhpcy54cmVmLmdldE5ld1BlcnNpc3RlbnRSZWYodCl9cmV0dXJuIGUuX2ZvbnREZXNjcmlwdG9yUmVmfX0se2tleToiZGVzY2VuZGFudEZvbnRSZWYiLGdldDpmdW5jdGlvbigpe3ZhciBlPW5ldyBhLkRpY3QodGhpcy54cmVmKTtlLnNldCgiQmFzZUZvbnQiLHRoaXMuZm9udE5hbWUpLGUuc2V0KCJUeXBlIixhLk5hbWUuZ2V0KCJGb250IikpLGUuc2V0KCJTdWJ0eXBlIixhLk5hbWUuZ2V0KCJDSURGb250VHlwZTAiKSksZS5zZXQoIkNJRFRvR0lETWFwIixhLk5hbWUuZ2V0KCJJZGVudGl0eSIpKSxlLnNldCgiRmlyc3RDaGFyIix0aGlzLmZpcnN0Q2hhciksZS5zZXQoIkxhc3RDaGFyIix0aGlzLmxhc3RDaGFyKSxlLnNldCgiRm9udERlc2NyaXB0b3IiLHRoaXMuZm9udERlc2NyaXB0b3JSZWYpLGUuc2V0KCJEVyIsMWUzKTt2YXIgdCxyLG49W10saT1udWxsLG89bnVsbCxzPWwoKHI9dGhpcy53aWR0aHMuZW50cmllcygpLGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGQoZSl9KHIpfHxmdW5jdGlvbihlKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmbnVsbCE9ZVtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT1lWyJAQGl0ZXJhdG9yIl0pcmV0dXJuIEFycmF5LmZyb20oZSl9KHIpfHxoKHIpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpKS5zb3J0KCkpO3RyeXtmb3Iocy5zKCk7ISh0PXMubigpKS5kb25lOyl7dmFyIGM9Zih0LnZhbHVlLDIpLHU9Y1swXSxwPWNbMV07aT91PT09aStvLmxlbmd0aD9vLnB1c2gocCk6KG4ucHVzaChpLG8pLGk9dSxvPVtwXSk6KGk9dSxvPVtwXSl9fWNhdGNoKGUpe3MuZShlKX1maW5hbGx5e3MuZigpfWkmJm4ucHVzaChpLG8pLGUuc2V0KCJXIixuKTt2YXIgZz1uZXcgYS5EaWN0KHRoaXMueHJlZik7cmV0dXJuIGcuc2V0KCJPcmRlcmluZyIsIklkZW50aXR5IiksZy5zZXQoIlJlZ2lzdHJ5IiwiQWRvYmUiKSxnLnNldCgiU3VwcGxlbWVudCIsMCksZS5zZXQoIkNJRFN5c3RlbUluZm8iLGcpLHRoaXMueHJlZi5nZXROZXdQZXJzaXN0ZW50UmVmKGUpfX0se2tleToiYmFzZUZvbnRSZWYiLGdldDpmdW5jdGlvbigpe3ZhciBlPW5ldyBhLkRpY3QodGhpcy54cmVmKTtyZXR1cm4gZS5zZXQoIkJhc2VGb250Iix0aGlzLmZvbnROYW1lKSxlLnNldCgiVHlwZSIsYS5OYW1lLmdldCgiRm9udCIpKSxlLnNldCgiU3VidHlwZSIsYS5OYW1lLmdldCgiVHlwZTAiKSksZS5zZXQoIkVuY29kaW5nIixhLk5hbWUuZ2V0KCJJZGVudGl0eS1IIikpLGUuc2V0KCJEZXNjZW5kYW50Rm9udHMiLFt0aGlzLmRlc2NlbmRhbnRGb250UmVmXSksZS5zZXQoIlRvVW5pY29kZSIsdGhpcy50b1VuaWNvZGVSZWYpLHRoaXMueHJlZi5nZXROZXdQZXJzaXN0ZW50UmVmKGUpfX0se2tleToicmVzb3VyY2VzIixnZXQ6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgYS5EaWN0KHRoaXMueHJlZiksdD1uZXcgYS5EaWN0KHRoaXMueHJlZik7cmV0dXJuIHQuc2V0KHRoaXMuZm9udE5hbWUubmFtZSx0aGlzLmJhc2VGb250UmVmKSxlLnNldCgiRm9udCIsdCksZX19LHtrZXk6Il9jcmVhdGVDb250ZXh0Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLndpZHRocz1uZXcgTWFwLHRoaXMuY3R4TWVhc3VyZS5mb250PSIxMDAwcHggIi5jb25jYXQodGhpcy5mb250RmFtaWx5KSx0aGlzLmN0eE1lYXN1cmV9fSx7a2V5OiJjcmVhdGVGb250UmVzb3VyY2VzIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdCxyPXRoaXMuX2NyZWF0ZUNvbnRleHQoKSxuPWwoZS5zcGxpdCgvXHJcbj98XG4vKSk7dHJ5e2ZvcihuLnMoKTshKHQ9bi5uKCkpLmRvbmU7KXt2YXIgYSxpPWwodC52YWx1ZS5zcGxpdCgiIikpO3RyeXtmb3IoaS5zKCk7IShhPWkubigpKS5kb25lOyl7dmFyIG89YS52YWx1ZSxzPW8uY2hhckNvZGVBdCgwKTtpZighdGhpcy53aWR0aHMuaGFzKHMpKXt2YXIgYz1yLm1lYXN1cmVUZXh0KG8pLHU9TWF0aC5jZWlsKGMud2lkdGgpO3RoaXMud2lkdGhzLnNldChzLHUpLHRoaXMuZmlyc3RDaGFyPU1hdGgubWluKHMsdGhpcy5maXJzdENoYXIpLHRoaXMubGFzdENoYXI9TWF0aC5tYXgocyx0aGlzLmxhc3RDaGFyKX19fWNhdGNoKGUpe2kuZShlKX1maW5hbGx5e2kuZigpfX19Y2F0Y2goZSl7bi5lKGUpfWZpbmFsbHl7bi5mKCl9cmV0dXJuIHRoaXMucmVzb3VyY2VzfX0se2tleToiY3JlYXRlQXBwZWFyYW5jZSIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIsbixzKXt2YXIgYyxoPXRoaXMuX2NyZWF0ZUNvbnRleHQoKSxkPVtdLHA9LTEvMCxnPWwoZS5zcGxpdCgvXHJcbj98XG4vKSk7dHJ5e2ZvcihnLnMoKTshKGM9Zy5uKCkpLmRvbmU7KXt2YXIgdj1jLnZhbHVlO2QucHVzaCh2KTt2YXIgeT1oLm1lYXN1cmVUZXh0KHYpLndpZHRoO3A9TWF0aC5tYXgocCx5KTt2YXIgbSxiPWwodi5zcGxpdCgiIikpO3RyeXtmb3IoYi5zKCk7IShtPWIubigpKS5kb25lOyl7dmFyIGs9bS52YWx1ZSxTPWsuY2hhckNvZGVBdCgwKSx4PXRoaXMud2lkdGhzLmdldChTKTtpZih2b2lkIDA9PT14KXt2YXIgTz1oLm1lYXN1cmVUZXh0KGspO3g9TWF0aC5jZWlsKE8ud2lkdGgpLHRoaXMud2lkdGhzLnNldChTLHgpLHRoaXMuZmlyc3RDaGFyPU1hdGgubWluKFMsdGhpcy5maXJzdENoYXIpLHRoaXMubGFzdENoYXI9TWF0aC5tYXgoUyx0aGlzLmxhc3RDaGFyKX19fWNhdGNoKGUpe2IuZShlKX1maW5hbGx5e2IuZigpfX19Y2F0Y2goZSl7Zy5lKGUpfWZpbmFsbHl7Zy5mKCl9cCo9bi8xZTM7dmFyIEE9Zih0LDQpLEM9QVswXSxGPUFbMV0sUD1BWzJdLUMsVD1BWzNdLUY7aWYociUxODAhPTApe3ZhciBJPVtULFBdO1A9SVswXSxUPUlbMV19dmFyIEU9MTtwPlAmJihFPVAvcCk7dmFyIGo9MSxNPW8uTElORV9GQUNUT1IqbixfPW8uTElORV9ERVNDRU5UX0ZBQ1RPUipuLEw9TSpkLmxlbmd0aDtMPlQmJihqPVQvTCk7Zm9yKHZhciBSPW4qTWF0aC5taW4oRSxqKSxOPVsicSIsIjAgMCAiLmNvbmNhdCgoMCxpLm51bWJlclRvU3RyaW5nKShQKSwiICIpLmNvbmNhdCgoMCxpLm51bWJlclRvU3RyaW5nKShUKSwiIHJlIFcgbiIpLCJCVCIsIjEgMCAwIDEgMCAiLmNvbmNhdCgoMCxpLm51bWJlclRvU3RyaW5nKShUK18pLCIgVG0gMCBUYyAiKS5jb25jYXQodyhzLCEwKSksIi8iLmNvbmNhdCh0aGlzLmZvbnROYW1lLm5hbWUsIiAiKS5jb25jYXQoKDAsaS5udW1iZXJUb1N0cmluZykoUiksIiBUZiIpXSxEPSgwLGkubnVtYmVyVG9TdHJpbmcpKE0pLEI9MCxVPWQ7QjxVLmxlbmd0aDtCKyspe3ZhciAkPVVbQl07Ti5wdXNoKCIwIC0iLmNvbmNhdChELCIgVGQgPCIpLmNvbmNhdCgoMCxpLnN0cmluZ1RvVVRGMTZIZXhTdHJpbmcpKCQpLCI+IFRqIikpfU4ucHVzaCgiRVQiLCJRIik7dmFyIFg9Ti5qb2luKCJcbiIpLEg9bmV3IGEuRGljdCh0aGlzLnhyZWYpO2lmKEguc2V0KCJTdWJ0eXBlIixhLk5hbWUuZ2V0KCJGb3JtIikpLEguc2V0KCJUeXBlIixhLk5hbWUuZ2V0KCJYT2JqZWN0IikpLEguc2V0KCJCQm94IixbMCwwLFAsVF0pLEguc2V0KCJMZW5ndGgiLFgubGVuZ3RoKSxILnNldCgiUmVzb3VyY2VzIix0aGlzLnJlc291cmNlcykscil7dmFyIHE9KDAsaS5nZXRSb3RhdGlvbk1hdHJpeCkocixQLFQpO0guc2V0KCJNYXRyaXgiLHEpfXZhciBHPW5ldyB1LlN0cmluZ1N0cmVhbShYKTtyZXR1cm4gRy5kaWN0PUgsR319XSksZX0oKTt0LkZha2VVbmljb2RlRm9udD1rfSwoZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuQ29sb3JTcGFjZT12b2lkIDA7dmFyIG49cigyKSxhPXIoMTM0KSxpPXIoMTM2KSxvPXIoMTM1KTtmdW5jdGlvbiBzKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLHQmJmMoZSx0KX1mdW5jdGlvbiBjKGUsdCl7cmV0dXJuIGM9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5fX3Byb3RvX189dCxlfSxjKGUsdCl9ZnVuY3Rpb24gdShlKXt2YXIgdD1mdW5jdGlvbigpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0KXJldHVybiExO2lmKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sKGZ1bmN0aW9uKCl7fSkpKSwhMH1jYXRjaChlKXtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHIsbj1sKGUpO2lmKHQpe3ZhciBhPWwodGhpcykuY29uc3RydWN0b3I7cj1SZWZsZWN0LmNvbnN0cnVjdChuLGFyZ3VtZW50cyxhKX1lbHNlIHI9bi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYodCYmKCJvYmplY3QiPT09Zih0KXx8ImZ1bmN0aW9uIj09dHlwZW9mIHQpKXJldHVybiB0O2lmKHZvaWQgMCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24oZSl7aWYodm9pZCAwPT09ZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBlfShlKX0odGhpcyxyKX19ZnVuY3Rpb24gbChlKXtyZXR1cm4gbD1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihlKXtyZXR1cm4gZS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihlKX0sbChlKX1mdW5jdGlvbiBmKGUpe3JldHVybiBmPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSxmKGUpfWZ1bmN0aW9uIGgoKXtoPWZ1bmN0aW9uKCl7cmV0dXJuIGV9O3ZhciBlPXt9LHQ9T2JqZWN0LnByb3RvdHlwZSxyPXQuaGFzT3duUHJvcGVydHksbj1PYmplY3QuZGVmaW5lUHJvcGVydHl8fGZ1bmN0aW9uKGUsdCxyKXtlW3RdPXIudmFsdWV9LGE9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbD9TeW1ib2w6e30saT1hLml0ZXJhdG9yfHwiQEBpdGVyYXRvciIsbz1hLmFzeW5jSXRlcmF0b3J8fCJAQGFzeW5jSXRlcmF0b3IiLHM9YS50b1N0cmluZ1RhZ3x8IkBAdG9TdHJpbmdUYWciO2Z1bmN0aW9uIGMoZSx0LHIpe3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpyLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSksZVt0XX10cnl7Yyh7fSwiIil9Y2F0Y2goZSl7Yz1mdW5jdGlvbihlLHQscil7cmV0dXJuIGVbdF09cn19ZnVuY3Rpb24gdShlLHQscixhKXt2YXIgaT10JiZ0LnByb3RvdHlwZSBpbnN0YW5jZW9mIHA/dDpwLG89T2JqZWN0LmNyZWF0ZShpLnByb3RvdHlwZSkscz1uZXcgRihhfHxbXSk7cmV0dXJuIG4obywiX2ludm9rZSIse3ZhbHVlOngoZSxyLHMpfSksb31mdW5jdGlvbiBsKGUsdCxyKXt0cnl7cmV0dXJue3R5cGU6Im5vcm1hbCIsYXJnOmUuY2FsbCh0LHIpfX1jYXRjaChlKXtyZXR1cm57dHlwZToidGhyb3ciLGFyZzplfX19ZS53cmFwPXU7dmFyIGQ9e307ZnVuY3Rpb24gcCgpe31mdW5jdGlvbiBnKCl7fWZ1bmN0aW9uIHYoKXt9dmFyIHk9e307Yyh5LGksKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSk7dmFyIG09T2JqZWN0LmdldFByb3RvdHlwZU9mLGI9bSYmbShtKFAoW10pKSk7YiYmYiE9PXQmJnIuY2FsbChiLGkpJiYoeT1iKTt2YXIgdz12LnByb3RvdHlwZT1wLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHkpO2Z1bmN0aW9uIGsoZSl7WyJuZXh0IiwidGhyb3ciLCJyZXR1cm4iXS5mb3JFYWNoKChmdW5jdGlvbih0KXtjKGUsdCwoZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX2ludm9rZSh0LGUpfSkpfSkpfWZ1bmN0aW9uIFMoZSx0KXtmdW5jdGlvbiBhKG4saSxvLHMpe3ZhciBjPWwoZVtuXSxlLGkpO2lmKCJ0aHJvdyIhPT1jLnR5cGUpe3ZhciB1PWMuYXJnLGg9dS52YWx1ZTtyZXR1cm4gaCYmIm9iamVjdCI9PWYoaCkmJnIuY2FsbChoLCJfX2F3YWl0Iik/dC5yZXNvbHZlKGguX19hd2FpdCkudGhlbigoZnVuY3Rpb24oZSl7YSgibmV4dCIsZSxvLHMpfSksKGZ1bmN0aW9uKGUpe2EoInRocm93IixlLG8scyl9KSk6dC5yZXNvbHZlKGgpLnRoZW4oKGZ1bmN0aW9uKGUpe3UudmFsdWU9ZSxvKHUpfSksKGZ1bmN0aW9uKGUpe3JldHVybiBhKCJ0aHJvdyIsZSxvLHMpfSkpfXMoYy5hcmcpfXZhciBpO24odGhpcywiX2ludm9rZSIse3ZhbHVlOmZ1bmN0aW9uKGUscil7ZnVuY3Rpb24gbigpe3JldHVybiBuZXcgdCgoZnVuY3Rpb24odCxuKXthKGUscix0LG4pfSkpfXJldHVybiBpPWk/aS50aGVuKG4sbik6bigpfX0pfWZ1bmN0aW9uIHgoZSx0LHIpe3ZhciBuPSJzdXNwZW5kZWRTdGFydCI7cmV0dXJuIGZ1bmN0aW9uKGEsaSl7aWYoImV4ZWN1dGluZyI9PT1uKXRocm93IG5ldyBFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgcnVubmluZyIpO2lmKCJjb21wbGV0ZWQiPT09bil7aWYoInRocm93Ij09PWEpdGhyb3cgaTtyZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9fWZvcihyLm1ldGhvZD1hLHIuYXJnPWk7Oyl7dmFyIG89ci5kZWxlZ2F0ZTtpZihvKXt2YXIgcz1PKG8scik7aWYocyl7aWYocz09PWQpY29udGludWU7cmV0dXJuIHN9fWlmKCJuZXh0Ij09PXIubWV0aG9kKXIuc2VudD1yLl9zZW50PXIuYXJnO2Vsc2UgaWYoInRocm93Ij09PXIubWV0aG9kKXtpZigic3VzcGVuZGVkU3RhcnQiPT09bil0aHJvdyBuPSJjb21wbGV0ZWQiLHIuYXJnO3IuZGlzcGF0Y2hFeGNlcHRpb24oci5hcmcpfWVsc2UicmV0dXJuIj09PXIubWV0aG9kJiZyLmFicnVwdCgicmV0dXJuIixyLmFyZyk7bj0iZXhlY3V0aW5nIjt2YXIgYz1sKGUsdCxyKTtpZigibm9ybWFsIj09PWMudHlwZSl7aWYobj1yLmRvbmU/ImNvbXBsZXRlZCI6InN1c3BlbmRlZFlpZWxkIixjLmFyZz09PWQpY29udGludWU7cmV0dXJue3ZhbHVlOmMuYXJnLGRvbmU6ci5kb25lfX0idGhyb3ciPT09Yy50eXBlJiYobj0iY29tcGxldGVkIixyLm1ldGhvZD0idGhyb3ciLHIuYXJnPWMuYXJnKX19fWZ1bmN0aW9uIE8oZSx0KXt2YXIgcj10Lm1ldGhvZCxuPWUuaXRlcmF0b3Jbcl07aWYodm9pZCAwPT09bilyZXR1cm4gdC5kZWxlZ2F0ZT1udWxsLCJ0aHJvdyI9PT1yJiZlLml0ZXJhdG9yLnJldHVybiYmKHQubWV0aG9kPSJyZXR1cm4iLHQuYXJnPXZvaWQgMCxPKGUsdCksInRocm93Ij09PXQubWV0aG9kKXx8InJldHVybiIhPT1yJiYodC5tZXRob2Q9InRocm93Iix0LmFyZz1uZXcgVHlwZUVycm9yKCJUaGUgaXRlcmF0b3IgZG9lcyBub3QgcHJvdmlkZSBhICciK3IrIicgbWV0aG9kIikpLGQ7dmFyIGE9bChuLGUuaXRlcmF0b3IsdC5hcmcpO2lmKCJ0aHJvdyI9PT1hLnR5cGUpcmV0dXJuIHQubWV0aG9kPSJ0aHJvdyIsdC5hcmc9YS5hcmcsdC5kZWxlZ2F0ZT1udWxsLGQ7dmFyIGk9YS5hcmc7cmV0dXJuIGk/aS5kb25lPyh0W2UucmVzdWx0TmFtZV09aS52YWx1ZSx0Lm5leHQ9ZS5uZXh0TG9jLCJyZXR1cm4iIT09dC5tZXRob2QmJih0Lm1ldGhvZD0ibmV4dCIsdC5hcmc9dm9pZCAwKSx0LmRlbGVnYXRlPW51bGwsZCk6aToodC5tZXRob2Q9InRocm93Iix0LmFyZz1uZXcgVHlwZUVycm9yKCJpdGVyYXRvciByZXN1bHQgaXMgbm90IGFuIG9iamVjdCIpLHQuZGVsZWdhdGU9bnVsbCxkKX1mdW5jdGlvbiBBKGUpe3ZhciB0PXt0cnlMb2M6ZVswXX07MSBpbiBlJiYodC5jYXRjaExvYz1lWzFdKSwyIGluIGUmJih0LmZpbmFsbHlMb2M9ZVsyXSx0LmFmdGVyTG9jPWVbM10pLHRoaXMudHJ5RW50cmllcy5wdXNoKHQpfWZ1bmN0aW9uIEMoZSl7dmFyIHQ9ZS5jb21wbGV0aW9ufHx7fTt0LnR5cGU9Im5vcm1hbCIsZGVsZXRlIHQuYXJnLGUuY29tcGxldGlvbj10fWZ1bmN0aW9uIEYoZSl7dGhpcy50cnlFbnRyaWVzPVt7dHJ5TG9jOiJyb290In1dLGUuZm9yRWFjaChBLHRoaXMpLHRoaXMucmVzZXQoITApfWZ1bmN0aW9uIFAoZSl7aWYoZSl7dmFyIHQ9ZVtpXTtpZih0KXJldHVybiB0LmNhbGwoZSk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGUubmV4dClyZXR1cm4gZTtpZighaXNOYU4oZS5sZW5ndGgpKXt2YXIgbj0tMSxhPWZ1bmN0aW9uIHQoKXtmb3IoOysrbjxlLmxlbmd0aDspaWYoci5jYWxsKGUsbikpcmV0dXJuIHQudmFsdWU9ZVtuXSx0LmRvbmU9ITEsdDtyZXR1cm4gdC52YWx1ZT12b2lkIDAsdC5kb25lPSEwLHR9O3JldHVybiBhLm5leHQ9YX19cmV0dXJue25leHQ6VH19ZnVuY3Rpb24gVCgpe3JldHVybnt2YWx1ZTp2b2lkIDAsZG9uZTohMH19cmV0dXJuIGcucHJvdG90eXBlPXYsbih3LCJjb25zdHJ1Y3RvciIse3ZhbHVlOnYsY29uZmlndXJhYmxlOiEwfSksbih2LCJjb25zdHJ1Y3RvciIse3ZhbHVlOmcsY29uZmlndXJhYmxlOiEwfSksZy5kaXNwbGF5TmFtZT1jKHYscywiR2VuZXJhdG9yRnVuY3Rpb24iKSxlLmlzR2VuZXJhdG9yRnVuY3Rpb249ZnVuY3Rpb24oZSl7dmFyIHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGUmJmUuY29uc3RydWN0b3I7cmV0dXJuISF0JiYodD09PWd8fCJHZW5lcmF0b3JGdW5jdGlvbiI9PT0odC5kaXNwbGF5TmFtZXx8dC5uYW1lKSl9LGUubWFyaz1mdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZihlLHYpOihlLl9fcHJvdG9fXz12LGMoZSxzLCJHZW5lcmF0b3JGdW5jdGlvbiIpKSxlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHcpLGV9LGUuYXdyYXA9ZnVuY3Rpb24oZSl7cmV0dXJue19fYXdhaXQ6ZX19LGsoUy5wcm90b3R5cGUpLGMoUy5wcm90b3R5cGUsbywoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSxlLkFzeW5jSXRlcmF0b3I9UyxlLmFzeW5jPWZ1bmN0aW9uKHQscixuLGEsaSl7dm9pZCAwPT09aSYmKGk9UHJvbWlzZSk7dmFyIG89bmV3IFModSh0LHIsbixhKSxpKTtyZXR1cm4gZS5pc0dlbmVyYXRvckZ1bmN0aW9uKHIpP286by5uZXh0KCkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIGUuZG9uZT9lLnZhbHVlOm8ubmV4dCgpfSkpfSxrKHcpLGModyxzLCJHZW5lcmF0b3IiKSxjKHcsaSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSxjKHcsInRvU3RyaW5nIiwoZnVuY3Rpb24oKXtyZXR1cm4iW29iamVjdCBHZW5lcmF0b3JdIn0pKSxlLmtleXM9ZnVuY3Rpb24oZSl7dmFyIHQ9T2JqZWN0KGUpLHI9W107Zm9yKHZhciBuIGluIHQpci5wdXNoKG4pO3JldHVybiByLnJldmVyc2UoKSxmdW5jdGlvbiBlKCl7Zm9yKDtyLmxlbmd0aDspe3ZhciBuPXIucG9wKCk7aWYobiBpbiB0KXJldHVybiBlLnZhbHVlPW4sZS5kb25lPSExLGV9cmV0dXJuIGUuZG9uZT0hMCxlfX0sZS52YWx1ZXM9UCxGLnByb3RvdHlwZT17Y29uc3RydWN0b3I6RixyZXNldDpmdW5jdGlvbihlKXtpZih0aGlzLnByZXY9MCx0aGlzLm5leHQ9MCx0aGlzLnNlbnQ9dGhpcy5fc2VudD12b2lkIDAsdGhpcy5kb25lPSExLHRoaXMuZGVsZWdhdGU9bnVsbCx0aGlzLm1ldGhvZD0ibmV4dCIsdGhpcy5hcmc9dm9pZCAwLHRoaXMudHJ5RW50cmllcy5mb3JFYWNoKEMpLCFlKWZvcih2YXIgdCBpbiB0aGlzKSJ0Ij09PXQuY2hhckF0KDApJiZyLmNhbGwodGhpcyx0KSYmIWlzTmFOKCt0LnNsaWNlKDEpKSYmKHRoaXNbdF09dm9pZCAwKX0sc3RvcDpmdW5jdGlvbigpe3RoaXMuZG9uZT0hMDt2YXIgZT10aGlzLnRyeUVudHJpZXNbMF0uY29tcGxldGlvbjtpZigidGhyb3ciPT09ZS50eXBlKXRocm93IGUuYXJnO3JldHVybiB0aGlzLnJ2YWx9LGRpc3BhdGNoRXhjZXB0aW9uOmZ1bmN0aW9uKGUpe2lmKHRoaXMuZG9uZSl0aHJvdyBlO3ZhciB0PXRoaXM7ZnVuY3Rpb24gbihyLG4pe3JldHVybiBvLnR5cGU9InRocm93IixvLmFyZz1lLHQubmV4dD1yLG4mJih0Lm1ldGhvZD0ibmV4dCIsdC5hcmc9dm9pZCAwKSwhIW59Zm9yKHZhciBhPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTthPj0wOy0tYSl7dmFyIGk9dGhpcy50cnlFbnRyaWVzW2FdLG89aS5jb21wbGV0aW9uO2lmKCJyb290Ij09PWkudHJ5TG9jKXJldHVybiBuKCJlbmQiKTtpZihpLnRyeUxvYzw9dGhpcy5wcmV2KXt2YXIgcz1yLmNhbGwoaSwiY2F0Y2hMb2MiKSxjPXIuY2FsbChpLCJmaW5hbGx5TG9jIik7aWYocyYmYyl7aWYodGhpcy5wcmV2PGkuY2F0Y2hMb2MpcmV0dXJuIG4oaS5jYXRjaExvYywhMCk7aWYodGhpcy5wcmV2PGkuZmluYWxseUxvYylyZXR1cm4gbihpLmZpbmFsbHlMb2MpfWVsc2UgaWYocyl7aWYodGhpcy5wcmV2PGkuY2F0Y2hMb2MpcmV0dXJuIG4oaS5jYXRjaExvYywhMCl9ZWxzZXtpZighYyl0aHJvdyBuZXcgRXJyb3IoInRyeSBzdGF0ZW1lbnQgd2l0aG91dCBjYXRjaCBvciBmaW5hbGx5Iik7aWYodGhpcy5wcmV2PGkuZmluYWxseUxvYylyZXR1cm4gbihpLmZpbmFsbHlMb2MpfX19fSxhYnJ1cHQ6ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO24+PTA7LS1uKXt2YXIgYT10aGlzLnRyeUVudHJpZXNbbl07aWYoYS50cnlMb2M8PXRoaXMucHJldiYmci5jYWxsKGEsImZpbmFsbHlMb2MiKSYmdGhpcy5wcmV2PGEuZmluYWxseUxvYyl7dmFyIGk9YTticmVha319aSYmKCJicmVhayI9PT1lfHwiY29udGludWUiPT09ZSkmJmkudHJ5TG9jPD10JiZ0PD1pLmZpbmFsbHlMb2MmJihpPW51bGwpO3ZhciBvPWk/aS5jb21wbGV0aW9uOnt9O3JldHVybiBvLnR5cGU9ZSxvLmFyZz10LGk/KHRoaXMubWV0aG9kPSJuZXh0Iix0aGlzLm5leHQ9aS5maW5hbGx5TG9jLGQpOnRoaXMuY29tcGxldGUobyl9LGNvbXBsZXRlOmZ1bmN0aW9uKGUsdCl7aWYoInRocm93Ij09PWUudHlwZSl0aHJvdyBlLmFyZztyZXR1cm4iYnJlYWsiPT09ZS50eXBlfHwiY29udGludWUiPT09ZS50eXBlP3RoaXMubmV4dD1lLmFyZzoicmV0dXJuIj09PWUudHlwZT8odGhpcy5ydmFsPXRoaXMuYXJnPWUuYXJnLHRoaXMubWV0aG9kPSJyZXR1cm4iLHRoaXMubmV4dD0iZW5kIik6Im5vcm1hbCI9PT1lLnR5cGUmJnQmJih0aGlzLm5leHQ9dCksZH0sZmluaXNoOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7dD49MDstLXQpe3ZhciByPXRoaXMudHJ5RW50cmllc1t0XTtpZihyLmZpbmFsbHlMb2M9PT1lKXJldHVybiB0aGlzLmNvbXBsZXRlKHIuY29tcGxldGlvbixyLmFmdGVyTG9jKSxDKHIpLGR9fSxjYXRjaDpmdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO3Q+PTA7LS10KXt2YXIgcj10aGlzLnRyeUVudHJpZXNbdF07aWYoci50cnlMb2M9PT1lKXt2YXIgbj1yLmNvbXBsZXRpb247aWYoInRocm93Ij09PW4udHlwZSl7dmFyIGE9bi5hcmc7QyhyKX1yZXR1cm4gYX19dGhyb3cgbmV3IEVycm9yKCJpbGxlZ2FsIGNhdGNoIGF0dGVtcHQiKX0sZGVsZWdhdGVZaWVsZDpmdW5jdGlvbihlLHQscil7cmV0dXJuIHRoaXMuZGVsZWdhdGU9e2l0ZXJhdG9yOlAoZSkscmVzdWx0TmFtZTp0LG5leHRMb2M6cn0sIm5leHQiPT09dGhpcy5tZXRob2QmJih0aGlzLmFyZz12b2lkIDApLGR9fSxlfWZ1bmN0aW9uIGQoZSx0LHIsbixhLGksbyl7dHJ5e3ZhciBzPWVbaV0obyksYz1zLnZhbHVlfWNhdGNoKGUpe3JldHVybiB2b2lkIHIoZSl9cy5kb25lP3QoYyk6UHJvbWlzZS5yZXNvbHZlKGMpLnRoZW4obixhKX1mdW5jdGlvbiBwKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gZyhlLHQpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgbj10W3JdO24uZW51bWVyYWJsZT1uLmVudW1lcmFibGV8fCExLG4uY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBuJiYobi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsKHZvaWQgMCxhPWZ1bmN0aW9uKGUsdCl7aWYoIm9iamVjdCIhPT1mKGUpfHxudWxsPT09ZSlyZXR1cm4gZTt2YXIgcj1lW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09cil7dmFyIG49ci5jYWxsKGUsInN0cmluZyIpO2lmKCJvYmplY3QiIT09ZihuKSlyZXR1cm4gbjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybiBTdHJpbmcoZSl9KG4ua2V5KSwic3ltYm9sIj09PWYoYSk/YTpTdHJpbmcoYSkpLG4pfXZhciBhfWZ1bmN0aW9uIHYoZSx0LHIpe3JldHVybiB0JiZnKGUucHJvdG90eXBlLHQpLHImJmcoZSxyKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxlfXZhciB5PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0LHIpe3AodGhpcyxlKSx0aGlzLmNvbnN0cnVjdG9yPT09ZSYmKDAsbi51bnJlYWNoYWJsZSkoIkNhbm5vdCBpbml0aWFsaXplIENvbG9yU3BhY2UuIiksdGhpcy5uYW1lPXQsdGhpcy5udW1Db21wcz1yfXZhciB0LHI7cmV0dXJuIHYoZSxbe2tleToiZ2V0UmdiIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciByPW5ldyBVaW50OENsYW1wZWRBcnJheSgzKTtyZXR1cm4gdGhpcy5nZXRSZ2JJdGVtKGUsdCxyLDApLHJ9fSx7a2V5OiJnZXRSZ2JJdGVtIix2YWx1ZTpmdW5jdGlvbihlLHQscixhKXsoMCxuLnVucmVhY2hhYmxlKSgiU2hvdWxkIG5vdCBjYWxsIENvbG9yU3BhY2UuZ2V0UmdiSXRlbSIpfX0se2tleToiZ2V0UmdiQnVmZmVyIix2YWx1ZTpmdW5jdGlvbihlLHQscixhLGksbyxzKXsoMCxuLnVucmVhY2hhYmxlKSgiU2hvdWxkIG5vdCBjYWxsIENvbG9yU3BhY2UuZ2V0UmdiQnVmZmVyIil9fSx7a2V5OiJnZXRPdXRwdXRMZW5ndGgiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7KDAsbi51bnJlYWNoYWJsZSkoIlNob3VsZCBub3QgY2FsbCBDb2xvclNwYWNlLmdldE91dHB1dExlbmd0aCIpfX0se2tleToiaXNQYXNzdGhyb3VnaCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuITF9fSx7a2V5OiJpc0RlZmF1bHREZWNvZGUiLHZhbHVlOmZ1bmN0aW9uKHQscil7cmV0dXJuIGUuaXNEZWZhdWx0RGVjb2RlKHQsdGhpcy5udW1Db21wcyl9fSx7a2V5OiJmaWxsUmdiIix2YWx1ZTpmdW5jdGlvbihlLHQscixuLGEsaSxvLHMsYyl7dmFyIHU9dCpyLGw9bnVsbCxmPTE8PG8saD1yIT09YXx8dCE9PW47aWYodGhpcy5pc1Bhc3N0aHJvdWdoKG8pKWw9cztlbHNlIGlmKDE9PT10aGlzLm51bUNvbXBzJiZ1PmYmJiJEZXZpY2VHcmF5IiE9PXRoaXMubmFtZSYmIkRldmljZVJHQiIhPT10aGlzLm5hbWUpe2Zvcih2YXIgZD1vPD04P25ldyBVaW50OEFycmF5KGYpOm5ldyBVaW50MTZBcnJheShmKSxwPTA7cDxmO3ArKylkW3BdPXA7dmFyIGc9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDMqZik7aWYodGhpcy5nZXRSZ2JCdWZmZXIoZCwwLGYsZywwLG8sMCksaCl7bD1uZXcgVWludDhBcnJheSgzKnUpO2Zvcih2YXIgdj0wLHk9MDt5PHU7Kyt5KXt2YXIgbT0zKnNbeV07bFt2KytdPWdbbV0sbFt2KytdPWdbbSsxXSxsW3YrK109Z1ttKzJdfX1lbHNlIGZvcih2YXIgYj0wLHc9MDt3PHU7Kyt3KXt2YXIgaz0zKnNbd107ZVtiKytdPWdba10sZVtiKytdPWdbaysxXSxlW2IrK109Z1trKzJdLGIrPWN9fWVsc2UgaD8obD1uZXcgVWludDhDbGFtcGVkQXJyYXkoMyp1KSx0aGlzLmdldFJnYkJ1ZmZlcihzLDAsdSxsLDAsbywwKSk6dGhpcy5nZXRSZ2JCdWZmZXIocywwLG4qaSxlLDAsbyxjKTtpZihsKWlmKGgpIWZ1bmN0aW9uKGUsdCxyLG4sYSxpLG8pe289MSE9PW8/MDpvO2Zvcih2YXIgcyxjPXIvYSx1PW4vaSxsPTAsZj1uZXcgVWludDE2QXJyYXkoYSksaD0zKnIsZD0wO2Q8YTtkKyspZltkXT0zKk1hdGguZmxvb3IoZCpjKTtmb3IodmFyIHA9MDtwPGk7cCsrKWZvcih2YXIgZz1NYXRoLmZsb29yKHAqdSkqaCx2PTA7djxhO3YrKylzPWcrZlt2XSx0W2wrK109ZVtzKytdLHRbbCsrXT1lW3MrK10sdFtsKytdPWVbcysrXSxsKz1vfShsLGUsdCxyLG4sYSxjKTtlbHNlIGZvcih2YXIgUz0wLHg9MCxPPTAsQT1uKmk7TzxBO08rKyllW1MrK109bFt4KytdLGVbUysrXT1sW3grK10sZVtTKytdPWxbeCsrXSxTKz1jfX0se2tleToidXNlc1plcm9Ub09uZVJhbmdlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywidXNlc1plcm9Ub09uZVJhbmdlIiwhMCl9fV0sW3trZXk6Il9jYWNoZSIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIsbil7aWYoIXIpdGhyb3cgbmV3IEVycm9yKCdDb2xvclNwYWNlLl9jYWNoZSAtIGV4cGVjdGVkICJsb2NhbENvbG9yU3BhY2VDYWNoZSIgYXJndW1lbnQuJyk7aWYoIW4pdGhyb3cgbmV3IEVycm9yKCdDb2xvclNwYWNlLl9jYWNoZSAtIGV4cGVjdGVkICJwYXJzZWRDb2xvclNwYWNlIiBhcmd1bWVudC4nKTt2YXIgaSxvO2UgaW5zdGFuY2VvZiBhLlJlZiYmKG89ZSxlPXQuZmV0Y2goZSkpLGUgaW5zdGFuY2VvZiBhLk5hbWUmJihpPWUubmFtZSksKGl8fG8pJiZyLnNldChpLG8sbil9fSx7a2V5OiJnZXRDYWNoZWQiLHZhbHVlOmZ1bmN0aW9uKGUsdCxyKXtpZighcil0aHJvdyBuZXcgRXJyb3IoJ0NvbG9yU3BhY2UuZ2V0Q2FjaGVkIC0gZXhwZWN0ZWQgImxvY2FsQ29sb3JTcGFjZUNhY2hlIiBhcmd1bWVudC4nKTtpZihlIGluc3RhbmNlb2YgYS5SZWYpe3ZhciBuPXIuZ2V0QnlSZWYoZSk7aWYobilyZXR1cm4gbjt0cnl7ZT10LmZldGNoKGUpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBvLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGV9fWlmKGUgaW5zdGFuY2VvZiBhLk5hbWUpe3ZhciBpPXIuZ2V0QnlOYW1lKGUubmFtZSk7aWYoaSlyZXR1cm4gaX1yZXR1cm4gbnVsbH19LHtrZXk6InBhcnNlQXN5bmMiLHZhbHVlOih0PWgoKS5tYXJrKChmdW5jdGlvbiBlKHQpe3ZhciByLG4sYSxpLG8scyxjO3JldHVybiBoKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIHI9dC5jcyxuPXQueHJlZixhPXQucmVzb3VyY2VzLGk9dm9pZCAwPT09YT9udWxsOmEsbz10LnBkZkZ1bmN0aW9uRmFjdG9yeSxzPXQubG9jYWxDb2xvclNwYWNlQ2FjaGUsYz10aGlzLl9wYXJzZShyLG4saSxvKSx0aGlzLl9jYWNoZShyLG4scyxjKSxlLmFicnVwdCgicmV0dXJuIixjKTtjYXNlIDQ6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpLHI9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHI9YXJndW1lbnRzO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24obixhKXt2YXIgaT10LmFwcGx5KGUscik7ZnVuY3Rpb24gbyhlKXtkKGksbixhLG8scywibmV4dCIsZSl9ZnVuY3Rpb24gcyhlKXtkKGksbixhLG8scywidGhyb3ciLGUpfW8odm9pZCAwKX0pKX0sZnVuY3Rpb24oZSl7cmV0dXJuIHIuYXBwbHkodGhpcyxhcmd1bWVudHMpfSl9LHtrZXk6InBhcnNlIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1lLmNzLHI9ZS54cmVmLG49ZS5yZXNvdXJjZXMsYT12b2lkIDA9PT1uP251bGw6bixpPWUucGRmRnVuY3Rpb25GYWN0b3J5LG89ZS5sb2NhbENvbG9yU3BhY2VDYWNoZSxzPXRoaXMuZ2V0Q2FjaGVkKHQscixvKTtpZihzKXJldHVybiBzO3ZhciBjPXRoaXMuX3BhcnNlKHQscixhLGkpO3JldHVybiB0aGlzLl9jYWNoZSh0LHIsbyxjKSxjfX0se2tleToiX3BhcnNlIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciByPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTpudWxsLGk9YXJndW1lbnRzLmxlbmd0aD4zP2FyZ3VtZW50c1szXTp2b2lkIDA7aWYoKGU9dC5mZXRjaElmUmVmKGUpKWluc3RhbmNlb2YgYS5OYW1lKXN3aXRjaChlLm5hbWUpe2Nhc2UiRyI6Y2FzZSJEZXZpY2VHcmF5IjpyZXR1cm4gdGhpcy5zaW5nbGV0b25zLmdyYXk7Y2FzZSJSR0IiOmNhc2UiRGV2aWNlUkdCIjpyZXR1cm4gdGhpcy5zaW5nbGV0b25zLnJnYjtjYXNlIkNNWUsiOmNhc2UiRGV2aWNlQ01ZSyI6cmV0dXJuIHRoaXMuc2luZ2xldG9ucy5jbXlrO2Nhc2UiUGF0dGVybiI6cmV0dXJuIG5ldyBiKG51bGwpO2RlZmF1bHQ6aWYociBpbnN0YW5jZW9mIGEuRGljdCl7dmFyIG89ci5nZXQoIkNvbG9yU3BhY2UiKTtpZihvIGluc3RhbmNlb2YgYS5EaWN0KXt2YXIgcz1vLmdldChlLm5hbWUpO2lmKHMpe2lmKHMgaW5zdGFuY2VvZiBhLk5hbWUpcmV0dXJuIHRoaXMuX3BhcnNlKHMsdCxyLGkpO2U9czticmVha319fXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJVbnJlY29nbml6ZWQgQ29sb3JTcGFjZTogIi5jb25jYXQoZS5uYW1lKSl9aWYoQXJyYXkuaXNBcnJheShlKSl7dmFyIGMsdSxsLGYsaCxkLHA9dC5mZXRjaElmUmVmKGVbMF0pLm5hbWU7c3dpdGNoKHApe2Nhc2UiRyI6Y2FzZSJEZXZpY2VHcmF5IjpyZXR1cm4gdGhpcy5zaW5nbGV0b25zLmdyYXk7Y2FzZSJSR0IiOmNhc2UiRGV2aWNlUkdCIjpyZXR1cm4gdGhpcy5zaW5nbGV0b25zLnJnYjtjYXNlIkNNWUsiOmNhc2UiRGV2aWNlQ01ZSyI6cmV0dXJuIHRoaXMuc2luZ2xldG9ucy5jbXlrO2Nhc2UiQ2FsR3JheSI6cmV0dXJuIGY9KGM9dC5mZXRjaElmUmVmKGVbMV0pKS5nZXRBcnJheSgiV2hpdGVQb2ludCIpLGg9Yy5nZXRBcnJheSgiQmxhY2tQb2ludCIpLGQ9Yy5nZXQoIkdhbW1hIiksbmV3IE8oZixoLGQpO2Nhc2UiQ2FsUkdCIjpmPShjPXQuZmV0Y2hJZlJlZihlWzFdKSkuZ2V0QXJyYXkoIldoaXRlUG9pbnQiKSxoPWMuZ2V0QXJyYXkoIkJsYWNrUG9pbnQiKSxkPWMuZ2V0QXJyYXkoIkdhbW1hIik7dmFyIGc9Yy5nZXRBcnJheSgiTWF0cml4Iik7cmV0dXJuIG5ldyBBKGYsaCxkLGcpO2Nhc2UiSUNDQmFzZWQiOnZhciB2PXQuZmV0Y2hJZlJlZihlWzFdKS5kaWN0O3U9di5nZXQoIk4iKTt2YXIgeT12LmdldCgiQWx0ZXJuYXRlIik7aWYoeSl7dmFyIGs9dGhpcy5fcGFyc2UoeSx0LHIsaSk7aWYoay5udW1Db21wcz09PXUpcmV0dXJuIGs7KDAsbi53YXJuKSgiSUNDQmFzZWQgY29sb3Igc3BhY2U6IElnbm9yaW5nIGluY29ycmVjdCAvQWx0ZXJuYXRlIGVudHJ5LiIpfWlmKDE9PT11KXJldHVybiB0aGlzLnNpbmdsZXRvbnMuZ3JheTtpZigzPT09dSlyZXR1cm4gdGhpcy5zaW5nbGV0b25zLnJnYjtpZig0PT09dSlyZXR1cm4gdGhpcy5zaW5nbGV0b25zLmNteWs7YnJlYWs7Y2FzZSJQYXR0ZXJuIjpyZXR1cm4obD1lWzFdfHxudWxsKSYmKGw9dGhpcy5fcGFyc2UobCx0LHIsaSkpLG5ldyBiKGwpO2Nhc2UiSSI6Y2FzZSJJbmRleGVkIjpsPXRoaXMuX3BhcnNlKGVbMV0sdCxyLGkpO3ZhciBTPXQuZmV0Y2hJZlJlZihlWzJdKSsxLHg9dC5mZXRjaElmUmVmKGVbM10pO3JldHVybiBuZXcgdyhsLFMseCk7Y2FzZSJTZXBhcmF0aW9uIjpjYXNlIkRldmljZU4iOnZhciBGPXQuZmV0Y2hJZlJlZihlWzFdKTt1PUFycmF5LmlzQXJyYXkoRik/Ri5sZW5ndGg6MSxsPXRoaXMuX3BhcnNlKGVbMl0sdCxyLGkpO3ZhciBQPWkuY3JlYXRlKGVbM10pO3JldHVybiBuZXcgbSh1LGwsUCk7Y2FzZSJMYWIiOmY9KGM9dC5mZXRjaElmUmVmKGVbMV0pKS5nZXRBcnJheSgiV2hpdGVQb2ludCIpLGg9Yy5nZXRBcnJheSgiQmxhY2tQb2ludCIpO3ZhciBUPWMuZ2V0QXJyYXkoIlJhbmdlIik7cmV0dXJuIG5ldyBDKGYsaCxUKTtkZWZhdWx0OnRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJVbmltcGxlbWVudGVkIENvbG9yU3BhY2Ugb2JqZWN0OiAiLmNvbmNhdChwKSl9fXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJVbnJlY29nbml6ZWQgQ29sb3JTcGFjZSBvYmplY3Q6ICIuY29uY2F0KGUpKX19LHtrZXk6ImlzRGVmYXVsdERlY29kZSIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtpZighQXJyYXkuaXNBcnJheShlKSlyZXR1cm4hMDtpZigyKnQhPT1lLmxlbmd0aClyZXR1cm4oMCxuLndhcm4pKCJUaGUgZGVjb2RlIG1hcCBpcyBub3QgdGhlIGNvcnJlY3QgbGVuZ3RoIiksITA7Zm9yKHZhciByPTAsYT1lLmxlbmd0aDtyPGE7cis9MilpZigwIT09ZVtyXXx8MSE9PWVbcisxXSlyZXR1cm4hMTtyZXR1cm4hMH19LHtrZXk6InNpbmdsZXRvbnMiLGdldDpmdW5jdGlvbigpe3JldHVybigwLG4uc2hhZG93KSh0aGlzLCJzaW5nbGV0b25zIix7Z2V0IGdyYXkoKXtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywiZ3JheSIsbmV3IGspfSxnZXQgcmdiKCl7cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsInJnYiIsbmV3IFMpfSxnZXQgY215aygpe3JldHVybigwLG4uc2hhZG93KSh0aGlzLCJjbXlrIixuZXcgeCl9fSl9fV0pLGV9KCk7dC5Db2xvclNwYWNlPXk7dmFyIG09ZnVuY3Rpb24oZSl7cyhyLGUpO3ZhciB0PXUocik7ZnVuY3Rpb24gcihlLG4sYSl7dmFyIGk7cmV0dXJuIHAodGhpcyxyKSwoaT10LmNhbGwodGhpcywiQWx0ZXJuYXRlIixlKSkuYmFzZT1uLGkudGludEZuPWEsaS50bXBCdWY9bmV3IEZsb2F0MzJBcnJheShuLm51bUNvbXBzKSxpfXJldHVybiB2KHIsW3trZXk6ImdldFJnYkl0ZW0iLHZhbHVlOmZ1bmN0aW9uKGUsdCxyLG4pe3ZhciBhPXRoaXMudG1wQnVmO3RoaXMudGludEZuKGUsdCxhLDApLHRoaXMuYmFzZS5nZXRSZ2JJdGVtKGEsMCxyLG4pfX0se2tleToiZ2V0UmdiQnVmZmVyIix2YWx1ZTpmdW5jdGlvbihlLHQscixuLGEsaSxvKXt2YXIgcyxjLHU9dGhpcy50aW50Rm4sbD10aGlzLmJhc2UsZj0xLygoMTw8aSktMSksaD1sLm51bUNvbXBzLGQ9bC51c2VzWmVyb1RvT25lUmFuZ2UscD0obC5pc1Bhc3N0aHJvdWdoKDgpfHwhZCkmJjA9PT1vLGc9cD9hOjAsdj1wP246bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KGgqcikseT10aGlzLm51bUNvbXBzLG09bmV3IEZsb2F0MzJBcnJheSh5KSxiPW5ldyBGbG9hdDMyQXJyYXkoaCk7Zm9yKHM9MDtzPHI7cysrKXtmb3IoYz0wO2M8eTtjKyspbVtjXT1lW3QrK10qZjtpZih1KG0sMCxiLDApLGQpZm9yKGM9MDtjPGg7YysrKXZbZysrXT0yNTUqYltjXTtlbHNlIGwuZ2V0UmdiSXRlbShiLDAsdixnKSxnKz1ofXB8fGwuZ2V0UmdiQnVmZmVyKHYsMCxyLG4sYSw4LG8pfX0se2tleToiZ2V0T3V0cHV0TGVuZ3RoIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLmJhc2UuZ2V0T3V0cHV0TGVuZ3RoKGUqdGhpcy5iYXNlLm51bUNvbXBzL3RoaXMubnVtQ29tcHMsdCl9fV0pLHJ9KHkpLGI9ZnVuY3Rpb24oZSl7cyhyLGUpO3ZhciB0PXUocik7ZnVuY3Rpb24gcihlKXt2YXIgbjtyZXR1cm4gcCh0aGlzLHIpLChuPXQuY2FsbCh0aGlzLCJQYXR0ZXJuIixudWxsKSkuYmFzZT1lLG59cmV0dXJuIHYocixbe2tleToiaXNEZWZhdWx0RGVjb2RlIix2YWx1ZTpmdW5jdGlvbihlLHQpeygwLG4udW5yZWFjaGFibGUpKCJTaG91bGQgbm90IGNhbGwgUGF0dGVybkNTLmlzRGVmYXVsdERlY29kZSIpfX1dKSxyfSh5KSx3PWZ1bmN0aW9uKGUpe3MocixlKTt2YXIgdD11KHIpO2Z1bmN0aW9uIHIoZSxhLG8pe3ZhciBzO3AodGhpcyxyKSwocz10LmNhbGwodGhpcywiSW5kZXhlZCIsMSkpLmJhc2U9ZSxzLmhpZ2hWYWw9YTt2YXIgYz1lLm51bUNvbXBzKmE7aWYocy5sb29rdXA9bmV3IFVpbnQ4QXJyYXkoYyksbyBpbnN0YW5jZW9mIGkuQmFzZVN0cmVhbSl7dmFyIHU9by5nZXRCeXRlcyhjKTtzLmxvb2t1cC5zZXQodSl9ZWxzZXtpZigic3RyaW5nIiE9dHlwZW9mIG8pdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIkluZGV4ZWRDUyAtIHVucmVjb2duaXplZCBsb29rdXAgdGFibGU6ICIuY29uY2F0KG8pKTtmb3IodmFyIGw9MDtsPGM7KytsKXMubG9va3VwW2xdPTI1NSZvLmNoYXJDb2RlQXQobCl9cmV0dXJuIHN9cmV0dXJuIHYocixbe2tleToiZ2V0UmdiSXRlbSIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIsbil7dmFyIGE9dGhpcy5iYXNlLm51bUNvbXBzLGk9ZVt0XSphO3RoaXMuYmFzZS5nZXRSZ2JCdWZmZXIodGhpcy5sb29rdXAsaSwxLHIsbiw4LDApfX0se2tleToiZ2V0UmdiQnVmZmVyIix2YWx1ZTpmdW5jdGlvbihlLHQscixuLGEsaSxvKXtmb3IodmFyIHM9dGhpcy5iYXNlLGM9cy5udW1Db21wcyx1PXMuZ2V0T3V0cHV0TGVuZ3RoKGMsbyksbD10aGlzLmxvb2t1cCxmPTA7ZjxyOysrZil7dmFyIGg9ZVt0KytdKmM7cy5nZXRSZ2JCdWZmZXIobCxoLDEsbixhLDgsbyksYSs9dX19fSx7a2V5OiJnZXRPdXRwdXRMZW5ndGgiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuYmFzZS5nZXRPdXRwdXRMZW5ndGgoZSp0aGlzLmJhc2UubnVtQ29tcHMsdCl9fSx7a2V5OiJpc0RlZmF1bHREZWNvZGUiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIUFycmF5LmlzQXJyYXkoZSl8fCgyIT09ZS5sZW5ndGg/KCgwLG4ud2FybikoIkRlY29kZSBtYXAgbGVuZ3RoIGlzIG5vdCBjb3JyZWN0IiksITApOiFOdW1iZXIuaXNJbnRlZ2VyKHQpfHx0PDE/KCgwLG4ud2FybikoIkJpdHMgcGVyIGNvbXBvbmVudCBpcyBub3QgY29ycmVjdCIpLCEwKTowPT09ZVswXSYmZVsxXT09PSgxPDx0KS0xKX19XSkscn0oeSksaz1mdW5jdGlvbihlKXtzKHIsZSk7dmFyIHQ9dShyKTtmdW5jdGlvbiByKCl7cmV0dXJuIHAodGhpcyxyKSx0LmNhbGwodGhpcywiRGV2aWNlR3JheSIsMSl9cmV0dXJuIHYocixbe2tleToiZ2V0UmdiSXRlbSIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIsbil7dmFyIGE9MjU1KmVbdF07cltuXT1yW24rMV09cltuKzJdPWF9fSx7a2V5OiJnZXRSZ2JCdWZmZXIiLHZhbHVlOmZ1bmN0aW9uKGUsdCxyLG4sYSxpLG8pe2Zvcih2YXIgcz0yNTUvKCgxPDxpKS0xKSxjPXQsdT1hLGw9MDtsPHI7KytsKXt2YXIgZj1zKmVbYysrXTtuW3UrK109ZixuW3UrK109ZixuW3UrK109Zix1Kz1vfX19LHtrZXk6ImdldE91dHB1dExlbmd0aCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSooMyt0KX19XSkscn0oeSksUz1mdW5jdGlvbihlKXtzKHIsZSk7dmFyIHQ9dShyKTtmdW5jdGlvbiByKCl7cmV0dXJuIHAodGhpcyxyKSx0LmNhbGwodGhpcywiRGV2aWNlUkdCIiwzKX1yZXR1cm4gdihyLFt7a2V5OiJnZXRSZ2JJdGVtIix2YWx1ZTpmdW5jdGlvbihlLHQscixuKXtyW25dPTI1NSplW3RdLHJbbisxXT0yNTUqZVt0KzFdLHJbbisyXT0yNTUqZVt0KzJdfX0se2tleToiZ2V0UmdiQnVmZmVyIix2YWx1ZTpmdW5jdGlvbihlLHQscixuLGEsaSxvKXtpZig4IT09aXx8MCE9PW8pZm9yKHZhciBzPTI1NS8oKDE8PGkpLTEpLGM9dCx1PWEsbD0wO2w8cjsrK2wpblt1KytdPXMqZVtjKytdLG5bdSsrXT1zKmVbYysrXSxuW3UrK109cyplW2MrK10sdSs9bztlbHNlIG4uc2V0KGUuc3ViYXJyYXkodCx0KzMqciksYSl9fSx7a2V5OiJnZXRPdXRwdXRMZW5ndGgiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUqKDMrdCkvM3wwfX0se2tleToiaXNQYXNzdGhyb3VnaCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIDg9PT1lfX1dKSxyfSh5KSx4PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQscixuLGEpe3ZhciBpPWVbdF0qcixvPWVbdCsxXSpyLHM9ZVt0KzJdKnIsYz1lW3QrM10qcjtuW2FdPTI1NStpKigtNC4zODczMzIzODQ2MDk5ODgqaSs1NC40ODYxNTE5NDE4OTE3NipvKzE4LjgyMjkwNTAyMTY1MzAyKnMrMjEyLjI1NjYyNDUxNjM5NTg1KmMtMjg1LjIzMzEwMjYxMzcwMDQpK28qKDEuNzE0OTc2MzQ3NzM2MjEzNCpvLTUuNjA5NjczNjkwNDA0NzMxNSpzKy0xNy44NzM4NzA4NjE0MTU0NDQqYy01LjQ5NzAwNjQyNzE5NjM2NikrcyooLTIuNTIxNzM0MDEzMTY4MzAzMypzLTIxLjI0ODkyMzMzNzM1MzA3MypjKzE3LjUxMTkyNzA4NDE4MTMpK2MqKC0yMS44NjEyMjE0NzQ2MzYwNSpjLTE4OS40ODE4MDgzNTkyMjc0NyksblthKzFdPTI1NStpKig4Ljg0MTA0MTQyMjAzNjE0OSppKzYwLjExODAyNzA0NTU5NzM2NipvKzYuODcxNDI1NTkyMDQ5MDA3KnMrMzEuMTU5MTAwMTMwMDU1OTIyKmMtNzkuMjk3MDg0NDgxNjU0OCkrbyooLTE1LjMxMDM2MTMwNjk2NzgxNypvKzE3LjU3NTI1MTI2MTEwOTQ4MipzKzEzMS4zNTI1MDkxMjQ5Mzk3NipjLTE5MC45NDUzMzAyNTg4OTUxKStzKig0LjQ0NDMzOTEwMjg1MjczOSpzKzkuODYzMjg2MTQ5MzQwNSpjLTI0Ljg2NzQxNTgyNTU1ODc4KStjKigtMjAuNzM3MzI1NDcxMTgxMDM0KmMtMTg3LjgwNDUzNzA5NzE5NTc4KSxuW2ErMl09MjU1K2kqKC44ODQyNTIyNDMwMDAzMjk2KmkrOC4wNzg2Nzc1MDMxMTI5MjgqbyszMC44OTk3ODMwOTcwMzcyOSpzLS4yMzg4MzIzODY4OTE3ODkzNCpjLTE0LjE4MzU3Njc5OTY3MzI4NikrbyooMTAuNDk1OTMyNzM0MzIwNzIqbys2My4wMjM3ODQ5NDc1NDA1MipzKzUwLjYwNjk1NzY1NjM2MDczNCpjLTExMi4yMzg4NDI1MzcxOTI0OCkrcyooLjAzMjk2MDQxMTE0ODczMjE3KnMrMTE1LjYwMzg0NDQ5NjQ2NjQxKmMtMTkzLjU4MjA5MzU2ODYxNTA1KStjKigtMjIuMzM4MTY4MDczMDk4ODYqYy0xODAuMTI2MTM5NzQ3MDgzNjcpfXJldHVybiBmdW5jdGlvbih0KXtzKG4sdCk7dmFyIHI9dShuKTtmdW5jdGlvbiBuKCl7cmV0dXJuIHAodGhpcyxuKSxyLmNhbGwodGhpcywiRGV2aWNlQ01ZSyIsNCl9cmV0dXJuIHYobixbe2tleToiZ2V0UmdiSXRlbSIsdmFsdWU6ZnVuY3Rpb24odCxyLG4sYSl7ZSh0LHIsMSxuLGEpfX0se2tleToiZ2V0UmdiQnVmZmVyIix2YWx1ZTpmdW5jdGlvbih0LHIsbixhLGksbyxzKXtmb3IodmFyIGM9MS8oKDE8PG8pLTEpLHU9MDt1PG47dSsrKWUodCxyLGMsYSxpKSxyKz00LGkrPTMrc319LHtrZXk6ImdldE91dHB1dExlbmd0aCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS80KigzK3QpfDB9fV0pLG59KHkpfSgpLE89ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCxyLG4sYSxpKXt2YXIgbz10W3JdKmkscz1NYXRoLnBvdyhvLGUuRyksYz1lLllXKnMsdT1NYXRoLm1heCgyOTUuOCpNYXRoLnBvdyhjLC4zMzMzMzMzMzMzMzMzMzMzKS00MC44LDApO25bYV09dSxuW2ErMV09dSxuW2ErMl09dX1yZXR1cm4gZnVuY3Rpb24odCl7cyhhLHQpO3ZhciByPXUoYSk7ZnVuY3Rpb24gYShlLHQsaSl7dmFyIG87aWYocCh0aGlzLGEpLG89ci5jYWxsKHRoaXMsIkNhbEdyYXkiLDEpLCFlKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJXaGl0ZVBvaW50IG1pc3NpbmcgLSByZXF1aXJlZCBmb3IgY29sb3Igc3BhY2UgQ2FsR3JheSIpO2lmKHQ9dHx8WzAsMCwwXSxpPWl8fDEsby5YVz1lWzBdLG8uWVc9ZVsxXSxvLlpXPWVbMl0sby5YQj10WzBdLG8uWUI9dFsxXSxvLlpCPXRbMl0sby5HPWksby5YVzwwfHxvLlpXPDB8fDEhPT1vLllXKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJJbnZhbGlkIFdoaXRlUG9pbnQgY29tcG9uZW50cyBmb3IgIi5jb25jYXQoby5uYW1lKSsiLCBubyBmYWxsYmFjayBhdmFpbGFibGUiKTtyZXR1cm4oby5YQjwwfHxvLllCPDB8fG8uWkI8MCkmJigoMCxuLmluZm8pKCJJbnZhbGlkIEJsYWNrUG9pbnQgZm9yICIuY29uY2F0KG8ubmFtZSwiLCBmYWxsaW5nIGJhY2sgdG8gZGVmYXVsdC4iKSksby5YQj1vLllCPW8uWkI9MCksMD09PW8uWEImJjA9PT1vLllCJiYwPT09by5aQnx8KDAsbi53YXJuKSgiIi5jb25jYXQoby5uYW1lLCIsIEJsYWNrUG9pbnQ6IFhCOiAiKS5jb25jYXQoby5YQiwiLCBZQjogIikuY29uY2F0KG8uWUIsIiwgIikrIlpCOiAiLmNvbmNhdChvLlpCLCIsIG9ubHkgZGVmYXVsdCB2YWx1ZXMgYXJlIHN1cHBvcnRlZC4iKSksby5HPDEmJigoMCxuLmluZm8pKCJJbnZhbGlkIEdhbW1hOiAiLmNvbmNhdChvLkcsIiBmb3IgIikuY29uY2F0KG8ubmFtZSwiLCAiKSsiZmFsbGluZyBiYWNrIHRvIGRlZmF1bHQuIiksby5HPTEpLG99cmV0dXJuIHYoYSxbe2tleToiZ2V0UmdiSXRlbSIsdmFsdWU6ZnVuY3Rpb24odCxyLG4sYSl7ZSh0aGlzLHQscixuLGEsMSl9fSx7a2V5OiJnZXRSZ2JCdWZmZXIiLHZhbHVlOmZ1bmN0aW9uKHQscixuLGEsaSxvLHMpe2Zvcih2YXIgYz0xLygoMTw8byktMSksdT0wO3U8bjsrK3UpZSh0aGlzLHQscixhLGksYykscis9MSxpKz0zK3N9fSx7a2V5OiJnZXRPdXRwdXRMZW5ndGgiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUqKDMrdCl9fV0pLGF9KHkpfSgpLEE9ZnVuY3Rpb24oKXt2YXIgZT1uZXcgRmxvYXQzMkFycmF5KFsuODk1MSwuMjY2NCwtLjE2MTQsLS43NTAyLDEuNzEzNSwuMDM2NywuMDM4OSwtLjA2ODUsMS4wMjk2XSksdD1uZXcgRmxvYXQzMkFycmF5KFsuOTg2OTkyOSwtLjE0NzA1NDMsLjE1OTk2MjcsLjQzMjMwNTMsLjUxODM2MDMsLjA0OTI5MTIsLS4wMDg1Mjg3LC4wNDAwNDI4LC45Njg0ODY3XSkscj1uZXcgRmxvYXQzMkFycmF5KFszLjI0MDQ1NDIsLTEuNTM3MTM4NSwtLjQ5ODUzMTQsLS45NjkyNjYsMS44NzYwMTA4LC4wNDE1NTYsLjA1NTY0MzQsLS4yMDQwMjU5LDEuMDU3MjI1Ml0pLGE9bmV3IEZsb2F0MzJBcnJheShbMSwxLDFdKSxpPW5ldyBGbG9hdDMyQXJyYXkoMyksbz1uZXcgRmxvYXQzMkFycmF5KDMpLGM9bmV3IEZsb2F0MzJBcnJheSgzKSxsPU1hdGgucG93KDI0LzExNiwzKS84O2Z1bmN0aW9uIGYoZSx0LHIpe3JbMF09ZVswXSp0WzBdK2VbMV0qdFsxXStlWzJdKnRbMl0sclsxXT1lWzNdKnRbMF0rZVs0XSp0WzFdK2VbNV0qdFsyXSxyWzJdPWVbNl0qdFswXStlWzddKnRbMV0rZVs4XSp0WzJdfWZ1bmN0aW9uIGgoZSl7cmV0dXJuIGU8PS4wMDMxMzA4P2QoMCwxLDEyLjkyKmUpOmU+PS45OTU1NDUyNT8xOmQoMCwxLDEuMDU1Kk1hdGgucG93KGUsMS8yLjQpLS4wNTUpfWZ1bmN0aW9uIGQoZSx0LHIpe3JldHVybiBNYXRoLm1heChlLE1hdGgubWluKHQscikpfWZ1bmN0aW9uIGcoZSl7cmV0dXJuIGU8MD8tZygtZSk6ZT44P01hdGgucG93KChlKzE2KS8xMTYsMyk6ZSpsfWZ1bmN0aW9uIG0obixzLHUsbCxwLHYpe3ZhciB5PWQoMCwxLHNbdV0qdiksbT1kKDAsMSxzW3UrMV0qdiksYj1kKDAsMSxzW3UrMl0qdiksdz0xPT09eT8xOk1hdGgucG93KHksbi5HUiksaz0xPT09bT8xOk1hdGgucG93KG0sbi5HRyksUz0xPT09Yj8xOk1hdGgucG93KGIsbi5HQikseD1uLk1YQSp3K24uTVhCKmsrbi5NWEMqUyxPPW4uTVlBKncrbi5NWUIqaytuLk1ZQypTLEE9bi5NWkEqdytuLk1aQiprK24uTVpDKlMsQz1vO0NbMF09eCxDWzFdPU8sQ1syXT1BO3ZhciBGPWM7IWZ1bmN0aW9uKHIsbixhKXtpZigxPT09clswXSYmMT09PXJbMl0pcmV0dXJuIGFbMF09blswXSxhWzFdPW5bMV0sdm9pZChhWzJdPW5bMl0pO3ZhciBvPWE7ZihlLG4sbyk7dmFyIHM9aTshZnVuY3Rpb24oZSx0LHIpe3JbMF09MSp0WzBdL2VbMF0sclsxXT0xKnRbMV0vZVsxXSxyWzJdPTEqdFsyXS9lWzJdfShyLG8scyksZih0LHMsYSl9KG4ud2hpdGVQb2ludCxDLEYpO3ZhciBQPW87IWZ1bmN0aW9uKGUsdCxyKXtpZigwPT09ZVswXSYmMD09PWVbMV0mJjA9PT1lWzJdKXJldHVybiByWzBdPXRbMF0sclsxXT10WzFdLHZvaWQoclsyXT10WzJdKTt2YXIgbj1nKDApLGE9KDEtbikvKDEtZyhlWzBdKSksaT0xLWEsbz0oMS1uKS8oMS1nKGVbMV0pKSxzPTEtbyxjPSgxLW4pLygxLWcoZVsyXSkpLHU9MS1jO3JbMF09dFswXSphK2ksclsxXT10WzFdKm8rcyxyWzJdPXRbMl0qYyt1fShuLmJsYWNrUG9pbnQsRixQKTt2YXIgVD1jOyFmdW5jdGlvbihyLG4sYSl7dmFyIG89YTtmKGUsbixvKTt2YXIgcz1pOyFmdW5jdGlvbihlLHQscil7clswXT0uOTUwNDcqdFswXS9lWzBdLHJbMV09MSp0WzFdL2VbMV0sclsyXT0xLjA4ODgzKnRbMl0vZVsyXX0ocixvLHMpLGYodCxzLGEpfShhLFAsVCk7dmFyIEk9bztmKHIsVCxJKSxsW3BdPTI1NSpoKElbMF0pLGxbcCsxXT0yNTUqaChJWzFdKSxsW3ArMl09MjU1KmgoSVsyXSl9cmV0dXJuIGZ1bmN0aW9uKGUpe3MocixlKTt2YXIgdD11KHIpO2Z1bmN0aW9uIHIoZSxhLGksbyl7dmFyIHM7aWYocCh0aGlzLHIpLHM9dC5jYWxsKHRoaXMsIkNhbFJHQiIsMyksIWUpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIldoaXRlUG9pbnQgbWlzc2luZyAtIHJlcXVpcmVkIGZvciBjb2xvciBzcGFjZSBDYWxSR0IiKTthPWF8fG5ldyBGbG9hdDMyQXJyYXkoMyksaT1pfHxuZXcgRmxvYXQzMkFycmF5KFsxLDEsMV0pLG89b3x8bmV3IEZsb2F0MzJBcnJheShbMSwwLDAsMCwxLDAsMCwwLDFdKTt2YXIgYz1lWzBdLHU9ZVsxXSxsPWVbMl07cy53aGl0ZVBvaW50PWU7dmFyIGY9YVswXSxoPWFbMV0sZD1hWzJdO2lmKHMuYmxhY2tQb2ludD1hLHMuR1I9aVswXSxzLkdHPWlbMV0scy5HQj1pWzJdLHMuTVhBPW9bMF0scy5NWUE9b1sxXSxzLk1aQT1vWzJdLHMuTVhCPW9bM10scy5NWUI9b1s0XSxzLk1aQj1vWzVdLHMuTVhDPW9bNl0scy5NWUM9b1s3XSxzLk1aQz1vWzhdLGM8MHx8bDwwfHwxIT09dSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiSW52YWxpZCBXaGl0ZVBvaW50IGNvbXBvbmVudHMgZm9yICIuY29uY2F0KHMubmFtZSkrIiwgbm8gZmFsbGJhY2sgYXZhaWxhYmxlIik7cmV0dXJuKGY8MHx8aDwwfHxkPDApJiYoKDAsbi5pbmZvKSgiSW52YWxpZCBCbGFja1BvaW50IGZvciAiLmNvbmNhdChzLm5hbWUsIiBbIikuY29uY2F0KGYsIiwgIikuY29uY2F0KGgsIiwgIikuY29uY2F0KGQsIl0sICIpKyJmYWxsaW5nIGJhY2sgdG8gZGVmYXVsdC4iKSxzLmJsYWNrUG9pbnQ9bmV3IEZsb2F0MzJBcnJheSgzKSksKHMuR1I8MHx8cy5HRzwwfHxzLkdCPDApJiYoKDAsbi5pbmZvKSgiSW52YWxpZCBHYW1tYSBbIi5jb25jYXQocy5HUiwiLCAiKS5jb25jYXQocy5HRywiLCAiKS5jb25jYXQocy5HQiwiXSBmb3IgIikrIiIuY29uY2F0KHMubmFtZSwiLCBmYWxsaW5nIGJhY2sgdG8gZGVmYXVsdC4iKSkscy5HUj1zLkdHPXMuR0I9MSksc31yZXR1cm4gdihyLFt7a2V5OiJnZXRSZ2JJdGVtIix2YWx1ZTpmdW5jdGlvbihlLHQscixuKXttKHRoaXMsZSx0LHIsbiwxKX19LHtrZXk6ImdldFJnYkJ1ZmZlciIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIsbixhLGksbyl7Zm9yKHZhciBzPTEvKCgxPDxpKS0xKSxjPTA7YzxyOysrYyltKHRoaXMsZSx0LG4sYSxzKSx0Kz0zLGErPTMrb319LHtrZXk6ImdldE91dHB1dExlbmd0aCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSooMyt0KS8zfDB9fV0pLHJ9KHkpfSgpLEM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3JldHVybiBlPj02LzI5P01hdGgucG93KGUsMyk6MTA4Lzg0MSooZS00LzI5KX1mdW5jdGlvbiB0KGUsdCxyLG4pe3JldHVybiByK2UqKG4tcikvdH1mdW5jdGlvbiByKHIsbixhLGksbyxzKXt2YXIgYz1uW2FdLHU9blthKzFdLGw9blthKzJdOyExIT09aSYmKGM9dChjLGksMCwxMDApLHU9dCh1LGksci5hbWluLHIuYW1heCksbD10KGwsaSxyLmJtaW4sci5ibWF4KSksdT5yLmFtYXg/dT1yLmFtYXg6dTxyLmFtaW4mJih1PXIuYW1pbiksbD5yLmJtYXg/bD1yLmJtYXg6bDxyLmJtaW4mJihsPXIuYm1pbik7dmFyIGYsaCxkLHA9KGMrMTYpLzExNixnPXArdS81MDAsdj1wLWwvMjAwLHk9ci5YVyplKGcpLG09ci5ZVyplKHApLGI9ci5aVyplKHYpO3IuWlc8MT8oZj0zLjEzMzkqeSstMS42MTcqbSstLjQ5MDYqYixoPS0uOTc4NSp5KzEuOTE2Km0rLjAzMzMqYixkPS4wNzIqeSstLjIyOSptKzEuNDA1NypiKTooZj0zLjI0MDYqeSstMS41MzcyKm0rLS40OTg2KmIsaD0tLjk2ODkqeSsxLjg3NTgqbSsuMDQxNSpiLGQ9LjA1NTcqeSstLjIwNCptKzEuMDU3KmIpLG9bc109MjU1Kk1hdGguc3FydChmKSxvW3MrMV09MjU1Kk1hdGguc3FydChoKSxvW3MrMl09MjU1Kk1hdGguc3FydChkKX1yZXR1cm4gZnVuY3Rpb24oZSl7cyhhLGUpO3ZhciB0PXUoYSk7ZnVuY3Rpb24gYShlLHIsaSl7dmFyIG87aWYocCh0aGlzLGEpLG89dC5jYWxsKHRoaXMsIkxhYiIsMyksIWUpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIldoaXRlUG9pbnQgbWlzc2luZyAtIHJlcXVpcmVkIGZvciBjb2xvciBzcGFjZSBMYWIiKTtpZihyPXJ8fFswLDAsMF0saT1pfHxbLTEwMCwxMDAsLTEwMCwxMDBdLG8uWFc9ZVswXSxvLllXPWVbMV0sby5aVz1lWzJdLG8uYW1pbj1pWzBdLG8uYW1heD1pWzFdLG8uYm1pbj1pWzJdLG8uYm1heD1pWzNdLG8uWEI9clswXSxvLllCPXJbMV0sby5aQj1yWzJdLG8uWFc8MHx8by5aVzwwfHwxIT09by5ZVyl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiSW52YWxpZCBXaGl0ZVBvaW50IGNvbXBvbmVudHMsIG5vIGZhbGxiYWNrIGF2YWlsYWJsZSIpO3JldHVybihvLlhCPDB8fG8uWUI8MHx8by5aQjwwKSYmKCgwLG4uaW5mbykoIkludmFsaWQgQmxhY2tQb2ludCwgZmFsbGluZyBiYWNrIHRvIGRlZmF1bHQiKSxvLlhCPW8uWUI9by5aQj0wKSwoby5hbWluPm8uYW1heHx8by5ibWluPm8uYm1heCkmJigoMCxuLmluZm8pKCJJbnZhbGlkIFJhbmdlLCBmYWxsaW5nIGJhY2sgdG8gZGVmYXVsdHMiKSxvLmFtaW49LTEwMCxvLmFtYXg9MTAwLG8uYm1pbj0tMTAwLG8uYm1heD0xMDApLG99cmV0dXJuIHYoYSxbe2tleToiZ2V0UmdiSXRlbSIsdmFsdWU6ZnVuY3Rpb24oZSx0LG4sYSl7cih0aGlzLGUsdCwhMSxuLGEpfX0se2tleToiZ2V0UmdiQnVmZmVyIix2YWx1ZTpmdW5jdGlvbihlLHQsbixhLGksbyxzKXtmb3IodmFyIGM9KDE8PG8pLTEsdT0wO3U8bjt1Kyspcih0aGlzLGUsdCxjLGEsaSksdCs9MyxpKz0zK3N9fSx7a2V5OiJnZXRPdXRwdXRMZW5ndGgiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUqKDMrdCkvM3wwfX0se2tleToiaXNEZWZhdWx0RGVjb2RlIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiEwfX0se2tleToidXNlc1plcm9Ub09uZVJhbmdlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywidXNlc1plcm9Ub09uZVJhbmdlIiwhMSl9fV0pLGF9KHkpfSgpfSwoZSx0LHIpPT57ZnVuY3Rpb24gbihlKXtyZXR1cm4gbj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZX0sbihlKX1PYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5QYXJ0aWFsRXZhbHVhdG9yPXQuRXZhbHVhdG9yUHJlcHJvY2Vzc29yPXZvaWQgMDt2YXIgYT1yKDIpLGk9cigxNDUpLG89cigxMzQpLHM9cigxNjMpLGM9cigxNjcpLHU9cigxNjYpLGw9cigxNzApLGY9cigxNzkpLGg9cigxODApLGQ9cigxNzEpLHA9cigxODYpLGc9cigxNDYpLHY9cigxODgpLHk9cigxMzkpLG09cigxMzYpLGI9cigxODkpLHc9cigxNDMpLGs9cigxNDgpLFM9cigxNjgpLHg9cigxMzUpLE89cigxNzQpLEE9cigxNjkpLEM9cigxOTApLEY9cigxOTEpLFA9cigxOTIpO2Z1bmN0aW9uIFQoZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIHI9bnVsbD09ZT9udWxsOiJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbIkBAaXRlcmF0b3IiXTtpZihudWxsIT1yKXt2YXIgbixhLGksbyxzPVtdLGM9ITAsdT0hMTt0cnl7aWYoaT0ocj1yLmNhbGwoZSkpLm5leHQsMD09PXQpe2lmKE9iamVjdChyKSE9PXIpcmV0dXJuO2M9ITF9ZWxzZSBmb3IoOyEoYz0obj1pLmNhbGwocikpLmRvbmUpJiYocy5wdXNoKG4udmFsdWUpLHMubGVuZ3RoIT09dCk7Yz0hMCk7fWNhdGNoKGUpe3U9ITAsYT1lfWZpbmFsbHl7dHJ5e2lmKCFjJiZudWxsIT1yLnJldHVybiYmKG89ci5yZXR1cm4oKSxPYmplY3QobykhPT1vKSlyZXR1cm59ZmluYWxseXtpZih1KXRocm93IGF9fXJldHVybiBzfX0oZSx0KXx8RChlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gSShlKXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gQihlKX0oZSl8fGZ1bmN0aW9uKGUpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZudWxsIT1lW1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPWVbIkBAaXRlcmF0b3IiXSlyZXR1cm4gQXJyYXkuZnJvbShlKX0oZSl8fEQoZSl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gRSgpe0U9ZnVuY3Rpb24oKXtyZXR1cm4gZX07dmFyIGU9e30sdD1PYmplY3QucHJvdG90eXBlLHI9dC5oYXNPd25Qcm9wZXJ0eSxhPU9iamVjdC5kZWZpbmVQcm9wZXJ0eXx8ZnVuY3Rpb24oZSx0LHIpe2VbdF09ci52YWx1ZX0saT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sP1N5bWJvbDp7fSxvPWkuaXRlcmF0b3J8fCJAQGl0ZXJhdG9yIixzPWkuYXN5bmNJdGVyYXRvcnx8IkBAYXN5bmNJdGVyYXRvciIsYz1pLnRvU3RyaW5nVGFnfHwiQEB0b1N0cmluZ1RhZyI7ZnVuY3Rpb24gdShlLHQscil7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOnIsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KSxlW3RdfXRyeXt1KHt9LCIiKX1jYXRjaChlKXt1PWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZVt0XT1yfX1mdW5jdGlvbiBsKGUsdCxyLG4pe3ZhciBpPXQmJnQucHJvdG90eXBlIGluc3RhbmNlb2YgZD90OmQsbz1PYmplY3QuY3JlYXRlKGkucHJvdG90eXBlKSxzPW5ldyBDKG58fFtdKTtyZXR1cm4gYShvLCJfaW52b2tlIix7dmFsdWU6UyhlLHIscyl9KSxvfWZ1bmN0aW9uIGYoZSx0LHIpe3RyeXtyZXR1cm57dHlwZToibm9ybWFsIixhcmc6ZS5jYWxsKHQscil9fWNhdGNoKGUpe3JldHVybnt0eXBlOiJ0aHJvdyIsYXJnOmV9fX1lLndyYXA9bDt2YXIgaD17fTtmdW5jdGlvbiBkKCl7fWZ1bmN0aW9uIHAoKXt9ZnVuY3Rpb24gZygpe312YXIgdj17fTt1KHYsbywoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKTt2YXIgeT1PYmplY3QuZ2V0UHJvdG90eXBlT2YsbT15JiZ5KHkoRihbXSkpKTttJiZtIT09dCYmci5jYWxsKG0sbykmJih2PW0pO3ZhciBiPWcucHJvdG90eXBlPWQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodik7ZnVuY3Rpb24gdyhlKXtbIm5leHQiLCJ0aHJvdyIsInJldHVybiJdLmZvckVhY2goKGZ1bmN0aW9uKHQpe3UoZSx0LChmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5faW52b2tlKHQsZSl9KSl9KSl9ZnVuY3Rpb24gayhlLHQpe2Z1bmN0aW9uIGkoYSxvLHMsYyl7dmFyIHU9ZihlW2FdLGUsbyk7aWYoInRocm93IiE9PXUudHlwZSl7dmFyIGw9dS5hcmcsaD1sLnZhbHVlO3JldHVybiBoJiYib2JqZWN0Ij09bihoKSYmci5jYWxsKGgsIl9fYXdhaXQiKT90LnJlc29sdmUoaC5fX2F3YWl0KS50aGVuKChmdW5jdGlvbihlKXtpKCJuZXh0IixlLHMsYyl9KSwoZnVuY3Rpb24oZSl7aSgidGhyb3ciLGUscyxjKX0pKTp0LnJlc29sdmUoaCkudGhlbigoZnVuY3Rpb24oZSl7bC52YWx1ZT1lLHMobCl9KSwoZnVuY3Rpb24oZSl7cmV0dXJuIGkoInRocm93IixlLHMsYyl9KSl9Yyh1LmFyZyl9dmFyIG87YSh0aGlzLCJfaW52b2tlIix7dmFsdWU6ZnVuY3Rpb24oZSxyKXtmdW5jdGlvbiBuKCl7cmV0dXJuIG5ldyB0KChmdW5jdGlvbih0LG4pe2koZSxyLHQsbil9KSl9cmV0dXJuIG89bz9vLnRoZW4obixuKTpuKCl9fSl9ZnVuY3Rpb24gUyhlLHQscil7dmFyIG49InN1c3BlbmRlZFN0YXJ0IjtyZXR1cm4gZnVuY3Rpb24oYSxpKXtpZigiZXhlY3V0aW5nIj09PW4pdGhyb3cgbmV3IEVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nIik7aWYoImNvbXBsZXRlZCI9PT1uKXtpZigidGhyb3ciPT09YSl0aHJvdyBpO3JldHVybnt2YWx1ZTp2b2lkIDAsZG9uZTohMH19Zm9yKHIubWV0aG9kPWEsci5hcmc9aTs7KXt2YXIgbz1yLmRlbGVnYXRlO2lmKG8pe3ZhciBzPXgobyxyKTtpZihzKXtpZihzPT09aCljb250aW51ZTtyZXR1cm4gc319aWYoIm5leHQiPT09ci5tZXRob2Qpci5zZW50PXIuX3NlbnQ9ci5hcmc7ZWxzZSBpZigidGhyb3ciPT09ci5tZXRob2Qpe2lmKCJzdXNwZW5kZWRTdGFydCI9PT1uKXRocm93IG49ImNvbXBsZXRlZCIsci5hcmc7ci5kaXNwYXRjaEV4Y2VwdGlvbihyLmFyZyl9ZWxzZSJyZXR1cm4iPT09ci5tZXRob2QmJnIuYWJydXB0KCJyZXR1cm4iLHIuYXJnKTtuPSJleGVjdXRpbmciO3ZhciBjPWYoZSx0LHIpO2lmKCJub3JtYWwiPT09Yy50eXBlKXtpZihuPXIuZG9uZT8iY29tcGxldGVkIjoic3VzcGVuZGVkWWllbGQiLGMuYXJnPT09aCljb250aW51ZTtyZXR1cm57dmFsdWU6Yy5hcmcsZG9uZTpyLmRvbmV9fSJ0aHJvdyI9PT1jLnR5cGUmJihuPSJjb21wbGV0ZWQiLHIubWV0aG9kPSJ0aHJvdyIsci5hcmc9Yy5hcmcpfX19ZnVuY3Rpb24geChlLHQpe3ZhciByPXQubWV0aG9kLG49ZS5pdGVyYXRvcltyXTtpZih2b2lkIDA9PT1uKXJldHVybiB0LmRlbGVnYXRlPW51bGwsInRocm93Ij09PXImJmUuaXRlcmF0b3IucmV0dXJuJiYodC5tZXRob2Q9InJldHVybiIsdC5hcmc9dm9pZCAwLHgoZSx0KSwidGhyb3ciPT09dC5tZXRob2QpfHwicmV0dXJuIiE9PXImJih0Lm1ldGhvZD0idGhyb3ciLHQuYXJnPW5ldyBUeXBlRXJyb3IoIlRoZSBpdGVyYXRvciBkb2VzIG5vdCBwcm92aWRlIGEgJyIrcisiJyBtZXRob2QiKSksaDt2YXIgYT1mKG4sZS5pdGVyYXRvcix0LmFyZyk7aWYoInRocm93Ij09PWEudHlwZSlyZXR1cm4gdC5tZXRob2Q9InRocm93Iix0LmFyZz1hLmFyZyx0LmRlbGVnYXRlPW51bGwsaDt2YXIgaT1hLmFyZztyZXR1cm4gaT9pLmRvbmU/KHRbZS5yZXN1bHROYW1lXT1pLnZhbHVlLHQubmV4dD1lLm5leHRMb2MsInJldHVybiIhPT10Lm1ldGhvZCYmKHQubWV0aG9kPSJuZXh0Iix0LmFyZz12b2lkIDApLHQuZGVsZWdhdGU9bnVsbCxoKTppOih0Lm1ldGhvZD0idGhyb3ciLHQuYXJnPW5ldyBUeXBlRXJyb3IoIml0ZXJhdG9yIHJlc3VsdCBpcyBub3QgYW4gb2JqZWN0IiksdC5kZWxlZ2F0ZT1udWxsLGgpfWZ1bmN0aW9uIE8oZSl7dmFyIHQ9e3RyeUxvYzplWzBdfTsxIGluIGUmJih0LmNhdGNoTG9jPWVbMV0pLDIgaW4gZSYmKHQuZmluYWxseUxvYz1lWzJdLHQuYWZ0ZXJMb2M9ZVszXSksdGhpcy50cnlFbnRyaWVzLnB1c2godCl9ZnVuY3Rpb24gQShlKXt2YXIgdD1lLmNvbXBsZXRpb258fHt9O3QudHlwZT0ibm9ybWFsIixkZWxldGUgdC5hcmcsZS5jb21wbGV0aW9uPXR9ZnVuY3Rpb24gQyhlKXt0aGlzLnRyeUVudHJpZXM9W3t0cnlMb2M6InJvb3QifV0sZS5mb3JFYWNoKE8sdGhpcyksdGhpcy5yZXNldCghMCl9ZnVuY3Rpb24gRihlKXtpZihlKXt2YXIgdD1lW29dO2lmKHQpcmV0dXJuIHQuY2FsbChlKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgZS5uZXh0KXJldHVybiBlO2lmKCFpc05hTihlLmxlbmd0aCkpe3ZhciBuPS0xLGE9ZnVuY3Rpb24gdCgpe2Zvcig7KytuPGUubGVuZ3RoOylpZihyLmNhbGwoZSxuKSlyZXR1cm4gdC52YWx1ZT1lW25dLHQuZG9uZT0hMSx0O3JldHVybiB0LnZhbHVlPXZvaWQgMCx0LmRvbmU9ITAsdH07cmV0dXJuIGEubmV4dD1hfX1yZXR1cm57bmV4dDpQfX1mdW5jdGlvbiBQKCl7cmV0dXJue3ZhbHVlOnZvaWQgMCxkb25lOiEwfX1yZXR1cm4gcC5wcm90b3R5cGU9ZyxhKGIsImNvbnN0cnVjdG9yIix7dmFsdWU6Zyxjb25maWd1cmFibGU6ITB9KSxhKGcsImNvbnN0cnVjdG9yIix7dmFsdWU6cCxjb25maWd1cmFibGU6ITB9KSxwLmRpc3BsYXlOYW1lPXUoZyxjLCJHZW5lcmF0b3JGdW5jdGlvbiIpLGUuaXNHZW5lcmF0b3JGdW5jdGlvbj1mdW5jdGlvbihlKXt2YXIgdD0iZnVuY3Rpb24iPT10eXBlb2YgZSYmZS5jb25zdHJ1Y3RvcjtyZXR1cm4hIXQmJih0PT09cHx8IkdlbmVyYXRvckZ1bmN0aW9uIj09PSh0LmRpc3BsYXlOYW1lfHx0Lm5hbWUpKX0sZS5tYXJrPWZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsZyk6KGUuX19wcm90b19fPWcsdShlLGMsIkdlbmVyYXRvckZ1bmN0aW9uIikpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoYiksZX0sZS5hd3JhcD1mdW5jdGlvbihlKXtyZXR1cm57X19hd2FpdDplfX0sdyhrLnByb3RvdHlwZSksdShrLnByb3RvdHlwZSxzLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpLGUuQXN5bmNJdGVyYXRvcj1rLGUuYXN5bmM9ZnVuY3Rpb24odCxyLG4sYSxpKXt2b2lkIDA9PT1pJiYoaT1Qcm9taXNlKTt2YXIgbz1uZXcgayhsKHQscixuLGEpLGkpO3JldHVybiBlLmlzR2VuZXJhdG9yRnVuY3Rpb24ocik/bzpvLm5leHQoKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gZS5kb25lP2UudmFsdWU6by5uZXh0KCl9KSl9LHcoYiksdShiLGMsIkdlbmVyYXRvciIpLHUoYixvLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpLHUoYiwidG9TdHJpbmciLChmdW5jdGlvbigpe3JldHVybiJbb2JqZWN0IEdlbmVyYXRvcl0ifSkpLGUua2V5cz1mdW5jdGlvbihlKXt2YXIgdD1PYmplY3QoZSkscj1bXTtmb3IodmFyIG4gaW4gdClyLnB1c2gobik7cmV0dXJuIHIucmV2ZXJzZSgpLGZ1bmN0aW9uIGUoKXtmb3IoO3IubGVuZ3RoOyl7dmFyIG49ci5wb3AoKTtpZihuIGluIHQpcmV0dXJuIGUudmFsdWU9bixlLmRvbmU9ITEsZX1yZXR1cm4gZS5kb25lPSEwLGV9fSxlLnZhbHVlcz1GLEMucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpDLHJlc2V0OmZ1bmN0aW9uKGUpe2lmKHRoaXMucHJldj0wLHRoaXMubmV4dD0wLHRoaXMuc2VudD10aGlzLl9zZW50PXZvaWQgMCx0aGlzLmRvbmU9ITEsdGhpcy5kZWxlZ2F0ZT1udWxsLHRoaXMubWV0aG9kPSJuZXh0Iix0aGlzLmFyZz12b2lkIDAsdGhpcy50cnlFbnRyaWVzLmZvckVhY2goQSksIWUpZm9yKHZhciB0IGluIHRoaXMpInQiPT09dC5jaGFyQXQoMCkmJnIuY2FsbCh0aGlzLHQpJiYhaXNOYU4oK3Quc2xpY2UoMSkpJiYodGhpc1t0XT12b2lkIDApfSxzdG9wOmZ1bmN0aW9uKCl7dGhpcy5kb25lPSEwO3ZhciBlPXRoaXMudHJ5RW50cmllc1swXS5jb21wbGV0aW9uO2lmKCJ0aHJvdyI9PT1lLnR5cGUpdGhyb3cgZS5hcmc7cmV0dXJuIHRoaXMucnZhbH0sZGlzcGF0Y2hFeGNlcHRpb246ZnVuY3Rpb24oZSl7aWYodGhpcy5kb25lKXRocm93IGU7dmFyIHQ9dGhpcztmdW5jdGlvbiBuKHIsbil7cmV0dXJuIG8udHlwZT0idGhyb3ciLG8uYXJnPWUsdC5uZXh0PXIsbiYmKHQubWV0aG9kPSJuZXh0Iix0LmFyZz12b2lkIDApLCEhbn1mb3IodmFyIGE9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2E+PTA7LS1hKXt2YXIgaT10aGlzLnRyeUVudHJpZXNbYV0sbz1pLmNvbXBsZXRpb247aWYoInJvb3QiPT09aS50cnlMb2MpcmV0dXJuIG4oImVuZCIpO2lmKGkudHJ5TG9jPD10aGlzLnByZXYpe3ZhciBzPXIuY2FsbChpLCJjYXRjaExvYyIpLGM9ci5jYWxsKGksImZpbmFsbHlMb2MiKTtpZihzJiZjKXtpZih0aGlzLnByZXY8aS5jYXRjaExvYylyZXR1cm4gbihpLmNhdGNoTG9jLCEwKTtpZih0aGlzLnByZXY8aS5maW5hbGx5TG9jKXJldHVybiBuKGkuZmluYWxseUxvYyl9ZWxzZSBpZihzKXtpZih0aGlzLnByZXY8aS5jYXRjaExvYylyZXR1cm4gbihpLmNhdGNoTG9jLCEwKX1lbHNle2lmKCFjKXRocm93IG5ldyBFcnJvcigidHJ5IHN0YXRlbWVudCB3aXRob3V0IGNhdGNoIG9yIGZpbmFsbHkiKTtpZih0aGlzLnByZXY8aS5maW5hbGx5TG9jKXJldHVybiBuKGkuZmluYWxseUxvYyl9fX19LGFicnVwdDpmdW5jdGlvbihlLHQpe2Zvcih2YXIgbj10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7bj49MDstLW4pe3ZhciBhPXRoaXMudHJ5RW50cmllc1tuXTtpZihhLnRyeUxvYzw9dGhpcy5wcmV2JiZyLmNhbGwoYSwiZmluYWxseUxvYyIpJiZ0aGlzLnByZXY8YS5maW5hbGx5TG9jKXt2YXIgaT1hO2JyZWFrfX1pJiYoImJyZWFrIj09PWV8fCJjb250aW51ZSI9PT1lKSYmaS50cnlMb2M8PXQmJnQ8PWkuZmluYWxseUxvYyYmKGk9bnVsbCk7dmFyIG89aT9pLmNvbXBsZXRpb246e307cmV0dXJuIG8udHlwZT1lLG8uYXJnPXQsaT8odGhpcy5tZXRob2Q9Im5leHQiLHRoaXMubmV4dD1pLmZpbmFsbHlMb2MsaCk6dGhpcy5jb21wbGV0ZShvKX0sY29tcGxldGU6ZnVuY3Rpb24oZSx0KXtpZigidGhyb3ciPT09ZS50eXBlKXRocm93IGUuYXJnO3JldHVybiJicmVhayI9PT1lLnR5cGV8fCJjb250aW51ZSI9PT1lLnR5cGU/dGhpcy5uZXh0PWUuYXJnOiJyZXR1cm4iPT09ZS50eXBlPyh0aGlzLnJ2YWw9dGhpcy5hcmc9ZS5hcmcsdGhpcy5tZXRob2Q9InJldHVybiIsdGhpcy5uZXh0PSJlbmQiKToibm9ybWFsIj09PWUudHlwZSYmdCYmKHRoaXMubmV4dD10KSxofSxmaW5pc2g6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTt0Pj0wOy0tdCl7dmFyIHI9dGhpcy50cnlFbnRyaWVzW3RdO2lmKHIuZmluYWxseUxvYz09PWUpcmV0dXJuIHRoaXMuY29tcGxldGUoci5jb21wbGV0aW9uLHIuYWZ0ZXJMb2MpLEEociksaH19LGNhdGNoOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7dD49MDstLXQpe3ZhciByPXRoaXMudHJ5RW50cmllc1t0XTtpZihyLnRyeUxvYz09PWUpe3ZhciBuPXIuY29tcGxldGlvbjtpZigidGhyb3ciPT09bi50eXBlKXt2YXIgYT1uLmFyZztBKHIpfXJldHVybiBhfX10aHJvdyBuZXcgRXJyb3IoImlsbGVnYWwgY2F0Y2ggYXR0ZW1wdCIpfSxkZWxlZ2F0ZVlpZWxkOmZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZT17aXRlcmF0b3I6RihlKSxyZXN1bHROYW1lOnQsbmV4dExvYzpyfSwibmV4dCI9PT10aGlzLm1ldGhvZCYmKHRoaXMuYXJnPXZvaWQgMCksaH19LGV9ZnVuY3Rpb24gaihlLHQscixuLGEsaSxvKXt0cnl7dmFyIHM9ZVtpXShvKSxjPXMudmFsdWV9Y2F0Y2goZSl7cmV0dXJuIHZvaWQgcihlKX1zLmRvbmU/dChjKTpQcm9taXNlLnJlc29sdmUoYykudGhlbihuLGEpfWZ1bmN0aW9uIE0oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxyPWFyZ3VtZW50cztyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKG4sYSl7dmFyIGk9ZS5hcHBseSh0LHIpO2Z1bmN0aW9uIG8oZSl7aihpLG4sYSxvLHMsIm5leHQiLGUpfWZ1bmN0aW9uIHMoZSl7aihpLG4sYSxvLHMsInRocm93IixlKX1vKHZvaWQgMCl9KSl9fWZ1bmN0aW9uIF8oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBMKGUsdCl7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBhPXRbcl07YS5lbnVtZXJhYmxlPWEuZW51bWVyYWJsZXx8ITEsYS5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGEmJihhLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwodm9pZCAwLGk9ZnVuY3Rpb24oZSx0KXtpZigib2JqZWN0IiE9PW4oZSl8fG51bGw9PT1lKXJldHVybiBlO3ZhciByPWVbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1yKXt2YXIgYT1yLmNhbGwoZSwic3RyaW5nIik7aWYoIm9iamVjdCIhPT1uKGEpKXJldHVybiBhO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuIFN0cmluZyhlKX0oYS5rZXkpLCJzeW1ib2wiPT09bihpKT9pOlN0cmluZyhpKSksYSl9dmFyIGl9ZnVuY3Rpb24gUihlLHQscil7cmV0dXJuIHQmJkwoZS5wcm90b3R5cGUsdCksciYmTChlLHIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGV9ZnVuY3Rpb24gTihlLHQpe3ZhciByPSJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbIkBAaXRlcmF0b3IiXTtpZighcil7aWYoQXJyYXkuaXNBcnJheShlKXx8KHI9RChlKSl8fHQmJmUmJiJudW1iZXIiPT10eXBlb2YgZS5sZW5ndGgpe3ImJihlPXIpO3ZhciBuPTAsYT1mdW5jdGlvbigpe307cmV0dXJue3M6YSxuOmZ1bmN0aW9uKCl7cmV0dXJuIG4+PWUubGVuZ3RoP3tkb25lOiEwfTp7ZG9uZTohMSx2YWx1ZTplW24rK119fSxlOmZ1bmN0aW9uKGUpe3Rocm93IGV9LGY6YX19dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGl0ZXJhdGUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfXZhciBpLG89ITAscz0hMTtyZXR1cm57czpmdW5jdGlvbigpe3I9ci5jYWxsKGUpfSxuOmZ1bmN0aW9uKCl7dmFyIGU9ci5uZXh0KCk7cmV0dXJuIG89ZS5kb25lLGV9LGU6ZnVuY3Rpb24oZSl7cz0hMCxpPWV9LGY6ZnVuY3Rpb24oKXt0cnl7b3x8bnVsbD09ci5yZXR1cm58fHIucmV0dXJuKCl9ZmluYWxseXtpZihzKXRocm93IGl9fX19ZnVuY3Rpb24gRChlLHQpe2lmKGUpe2lmKCJzdHJpbmciPT10eXBlb2YgZSlyZXR1cm4gQihlLHQpO3ZhciByPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtyZXR1cm4iT2JqZWN0Ij09PXImJmUuY29uc3RydWN0b3ImJihyPWUuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1yfHwiU2V0Ij09PXI/QXJyYXkuZnJvbShlKToiQXJndW1lbnRzIj09PXJ8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KHIpP0IoZSx0KTp2b2lkIDB9fWZ1bmN0aW9uIEIoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIHI9MCxuPW5ldyBBcnJheSh0KTtyPHQ7cisrKW5bcl09ZVtyXTtyZXR1cm4gbn12YXIgVT1PYmplY3QuZnJlZXplKHttYXhJbWFnZVNpemU6LTEsZGlzYWJsZUZvbnRGYWNlOiExLGlnbm9yZUVycm9yczohMSxpc0V2YWxTdXBwb3J0ZWQ6ITAsaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ6ITAsZm9udEV4dHJhUHJvcGVydGllczohMSx1c2VTeXN0ZW1Gb250czohMCxjTWFwVXJsOm51bGwsc3RhbmRhcmRGb250RGF0YVVybDpudWxsfSksJD1Qcm9taXNlLnJlc29sdmUoKTtmdW5jdGlvbiBYKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdJiZhcmd1bWVudHNbMV07aWYoQXJyYXkuaXNBcnJheShlKSl7dmFyIHIsbj1OKGUpO3RyeXtmb3Iobi5zKCk7IShyPW4ubigpKS5kb25lOyl7dmFyIGk9WChyLnZhbHVlLCEwKTtpZihpKXJldHVybiBpfX1jYXRjaChlKXtuLmUoZSl9ZmluYWxseXtuLmYoKX1yZXR1cm4oMCxhLndhcm4pKCJVbnN1cHBvcnRlZCBibGVuZCBtb2RlIEFycmF5OiAiLmNvbmNhdChlKSksInNvdXJjZS1vdmVyIn1pZighKGUgaW5zdGFuY2VvZiBvLk5hbWUpKXJldHVybiB0P251bGw6InNvdXJjZS1vdmVyIjtzd2l0Y2goZS5uYW1lKXtjYXNlIk5vcm1hbCI6Y2FzZSJDb21wYXRpYmxlIjpyZXR1cm4ic291cmNlLW92ZXIiO2Nhc2UiTXVsdGlwbHkiOnJldHVybiJtdWx0aXBseSI7Y2FzZSJTY3JlZW4iOnJldHVybiJzY3JlZW4iO2Nhc2UiT3ZlcmxheSI6cmV0dXJuIm92ZXJsYXkiO2Nhc2UiRGFya2VuIjpyZXR1cm4iZGFya2VuIjtjYXNlIkxpZ2h0ZW4iOnJldHVybiJsaWdodGVuIjtjYXNlIkNvbG9yRG9kZ2UiOnJldHVybiJjb2xvci1kb2RnZSI7Y2FzZSJDb2xvckJ1cm4iOnJldHVybiJjb2xvci1idXJuIjtjYXNlIkhhcmRMaWdodCI6cmV0dXJuImhhcmQtbGlnaHQiO2Nhc2UiU29mdExpZ2h0IjpyZXR1cm4ic29mdC1saWdodCI7Y2FzZSJEaWZmZXJlbmNlIjpyZXR1cm4iZGlmZmVyZW5jZSI7Y2FzZSJFeGNsdXNpb24iOnJldHVybiJleGNsdXNpb24iO2Nhc2UiSHVlIjpyZXR1cm4iaHVlIjtjYXNlIlNhdHVyYXRpb24iOnJldHVybiJzYXR1cmF0aW9uIjtjYXNlIkNvbG9yIjpyZXR1cm4iY29sb3IiO2Nhc2UiTHVtaW5vc2l0eSI6cmV0dXJuImx1bWlub3NpdHkifXJldHVybiB0P251bGw6KCgwLGEud2FybikoIlVuc3VwcG9ydGVkIGJsZW5kIG1vZGU6ICIuY29uY2F0KGUubmFtZSkpLCJzb3VyY2Utb3ZlciIpfWZ1bmN0aW9uIEgoZSl7ZS5mbj09PWEuT1BTLnBhaW50SW1hZ2VNYXNrWE9iamVjdCYmZS5hcmdzWzBdJiZlLmFyZ3NbMF0uY291bnQ+MCYmZS5hcmdzWzBdLmNvdW50Kyt9dmFyIHE9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7Xyh0aGlzLGUpLHRoaXMucmVzZXQoKX1yZXR1cm4gUihlLFt7a2V5OiJjaGVjayIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4hKCsrdGhpcy5jaGVja2VkPGUuQ0hFQ0tfVElNRV9FVkVSWSkmJih0aGlzLmNoZWNrZWQ9MCx0aGlzLmVuZFRpbWU8PURhdGUubm93KCkpfX0se2tleToicmVzZXQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5lbmRUaW1lPURhdGUubm93KCkrZS5USU1FX1NMT1RfRFVSQVRJT05fTVMsdGhpcy5jaGVja2VkPTB9fV0sW3trZXk6IlRJTUVfU0xPVF9EVVJBVElPTl9NUyIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuKDAsYS5zaGFkb3cpKHRoaXMsIlRJTUVfU0xPVF9EVVJBVElPTl9NUyIsMjApfX0se2tleToiQ0hFQ0tfVElNRV9FVkVSWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuKDAsYS5zaGFkb3cpKHRoaXMsIkNIRUNLX1RJTUVfRVZFUlkiLDEwMCl9fV0pLGV9KCksRz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCl7dmFyIHI9dC54cmVmLG49dC5oYW5kbGVyLGE9dC5wYWdlSW5kZXgsaT10LmlkRmFjdG9yeSxvPXQuZm9udENhY2hlLHM9dC5idWlsdEluQ01hcENhY2hlLGM9dC5zdGFuZGFyZEZvbnREYXRhQ2FjaGUsdT10Lmdsb2JhbEltYWdlQ2FjaGUsbD10Lm9wdGlvbnMsZj12b2lkIDA9PT1sP251bGw6bDtfKHRoaXMsZSksdGhpcy54cmVmPXIsdGhpcy5oYW5kbGVyPW4sdGhpcy5wYWdlSW5kZXg9YSx0aGlzLmlkRmFjdG9yeT1pLHRoaXMuZm9udENhY2hlPW8sdGhpcy5idWlsdEluQ01hcENhY2hlPXMsdGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGU9Yyx0aGlzLmdsb2JhbEltYWdlQ2FjaGU9dSx0aGlzLm9wdGlvbnM9Znx8VSx0aGlzLnBhcnNpbmdUeXBlM0ZvbnQ9ITEsdGhpcy5fZmV0Y2hCdWlsdEluQ01hcEJvdW5kPXRoaXMuZmV0Y2hCdWlsdEluQ01hcC5iaW5kKHRoaXMpfXZhciB0LHIsbixnLHgsaixMLEQ7cmV0dXJuIFIoZSxbe2tleToiX3BkZkZ1bmN0aW9uRmFjdG9yeSIsZ2V0OmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHAuUERGRnVuY3Rpb25GYWN0b3J5KHt4cmVmOnRoaXMueHJlZixpc0V2YWxTdXBwb3J0ZWQ6dGhpcy5vcHRpb25zLmlzRXZhbFN1cHBvcnRlZH0pO3JldHVybigwLGEuc2hhZG93KSh0aGlzLCJfcGRmRnVuY3Rpb25GYWN0b3J5IixlKX19LHtrZXk6ImNsb25lIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpudWxsLHQ9T2JqZWN0LmNyZWF0ZSh0aGlzKTtyZXR1cm4gdC5vcHRpb25zPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLm9wdGlvbnMsZSksdH19LHtrZXk6Imhhc0JsZW5kTW9kZXMiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7aWYoIShlIGluc3RhbmNlb2Ygby5EaWN0KSlyZXR1cm4hMTtpZihlLm9iaklkJiZ0LmhhcyhlLm9iaklkKSlyZXR1cm4hMTt2YXIgcj1uZXcgby5SZWZTZXQodCk7ZS5vYmpJZCYmci5wdXQoZS5vYmpJZCk7Zm9yKHZhciBuPVtlXSxpPXRoaXMueHJlZjtuLmxlbmd0aDspe3ZhciBzPW4uc2hpZnQoKSxjPXMuZ2V0KCJFeHRHU3RhdGUiKTtpZihjIGluc3RhbmNlb2Ygby5EaWN0KXt2YXIgdSxsPU4oYy5nZXRSYXdWYWx1ZXMoKSk7dHJ5e2ZvcihsLnMoKTshKHU9bC5uKCkpLmRvbmU7KXt2YXIgZj11LnZhbHVlO2lmKGYgaW5zdGFuY2VvZiBvLlJlZil7aWYoci5oYXMoZikpY29udGludWU7dHJ5e2Y9aS5mZXRjaChmKX1jYXRjaChlKXtyLnB1dChmKSwoMCxhLmluZm8pKCdoYXNCbGVuZE1vZGVzIC0gaWdub3JpbmcgRXh0R1N0YXRlOiAiJy5jb25jYXQoZSwnIi4nKSk7Y29udGludWV9fWlmKGYgaW5zdGFuY2VvZiBvLkRpY3Qpe2Yub2JqSWQmJnIucHV0KGYub2JqSWQpO3ZhciBoPWYuZ2V0KCJCTSIpO2lmKGggaW5zdGFuY2VvZiBvLk5hbWUpe2lmKCJOb3JtYWwiIT09aC5uYW1lKXJldHVybiEwfWVsc2UgaWYodm9pZCAwIT09aCYmQXJyYXkuaXNBcnJheShoKSl7dmFyIGQscD1OKGgpO3RyeXtmb3IocC5zKCk7IShkPXAubigpKS5kb25lOyl7dmFyIGc9ZC52YWx1ZTtpZihnIGluc3RhbmNlb2Ygby5OYW1lJiYiTm9ybWFsIiE9PWcubmFtZSlyZXR1cm4hMH19Y2F0Y2goZSl7cC5lKGUpfWZpbmFsbHl7cC5mKCl9fX19fWNhdGNoKGUpe2wuZShlKX1maW5hbGx5e2wuZigpfX12YXIgdj1zLmdldCgiWE9iamVjdCIpO2lmKHYgaW5zdGFuY2VvZiBvLkRpY3Qpe3ZhciB5LGI9Tih2LmdldFJhd1ZhbHVlcygpKTt0cnl7Zm9yKGIucygpOyEoeT1iLm4oKSkuZG9uZTspe3ZhciB3PXkudmFsdWU7aWYodyBpbnN0YW5jZW9mIG8uUmVmKXtpZihyLmhhcyh3KSljb250aW51ZTt0cnl7dz1pLmZldGNoKHcpfWNhdGNoKGUpe3IucHV0KHcpLCgwLGEuaW5mbykoJ2hhc0JsZW5kTW9kZXMgLSBpZ25vcmluZyBYT2JqZWN0OiAiJy5jb25jYXQoZSwnIi4nKSk7Y29udGludWV9fWlmKHcgaW5zdGFuY2VvZiBtLkJhc2VTdHJlYW0pe3cuZGljdC5vYmpJZCYmci5wdXQody5kaWN0Lm9iaklkKTt2YXIgaz13LmRpY3QuZ2V0KCJSZXNvdXJjZXMiKTtrIGluc3RhbmNlb2Ygby5EaWN0JiYoay5vYmpJZCYmci5oYXMoay5vYmpJZCl8fChuLnB1c2goayksay5vYmpJZCYmci5wdXQoay5vYmpJZCkpKX19fWNhdGNoKGUpe2IuZShlKX1maW5hbGx5e2IuZigpfX19dmFyIFMseD1OKHIpO3RyeXtmb3IoeC5zKCk7IShTPXgubigpKS5kb25lOyl7dmFyIE89Uy52YWx1ZTt0LnB1dChPKX19Y2F0Y2goZSl7eC5lKGUpfWZpbmFsbHl7eC5mKCl9cmV0dXJuITF9fSx7a2V5OiJmZXRjaEJ1aWx0SW5DTWFwIix2YWx1ZTooRD1NKEUoKS5tYXJrKChmdW5jdGlvbiBlKHQpe3ZhciByLG4saSxvO3JldHVybiBFKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6aWYoIShyPXRoaXMuYnVpbHRJbkNNYXBDYWNoZS5nZXQodCkpKXtlLm5leHQ9MzticmVha31yZXR1cm4gZS5hYnJ1cHQoInJldHVybiIscik7Y2FzZSAzOmlmKG51bGw9PT10aGlzLm9wdGlvbnMuY01hcFVybCl7ZS5uZXh0PTE5O2JyZWFrfXJldHVybiBpPSIiLmNvbmNhdCh0aGlzLm9wdGlvbnMuY01hcFVybCkuY29uY2F0KHQsIi5iY21hcCIpLGUubmV4dD03LGZldGNoKGkpO2Nhc2UgNzppZigobz1lLnNlbnQpLm9rKXtlLm5leHQ9MTA7YnJlYWt9dGhyb3cgbmV3IEVycm9yKCdmZXRjaEJ1aWx0SW5DTWFwOiBmYWlsZWQgdG8gZmV0Y2ggZmlsZSAiJy5jb25jYXQoaSwnIiB3aXRoICInKS5jb25jYXQoby5zdGF0dXNUZXh0LCciLicpKTtjYXNlIDEwOnJldHVybiBlLnQwPVVpbnQ4QXJyYXksZS5uZXh0PTEzLG8uYXJyYXlCdWZmZXIoKTtjYXNlIDEzOmUudDE9ZS5zZW50LGUudDI9bmV3IGUudDAoZS50MSksZS50Mz1hLkNNYXBDb21wcmVzc2lvblR5cGUuQklOQVJZLG49e2NNYXBEYXRhOmUudDIsY29tcHJlc3Npb25UeXBlOmUudDN9LGUubmV4dD0yMjticmVhaztjYXNlIDE5OnJldHVybiBlLm5leHQ9MjEsdGhpcy5oYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiRmV0Y2hCdWlsdEluQ01hcCIse25hbWU6dH0pO2Nhc2UgMjE6bj1lLnNlbnQ7Y2FzZSAyMjpyZXR1cm4gbi5jb21wcmVzc2lvblR5cGUhPT1hLkNNYXBDb21wcmVzc2lvblR5cGUuTk9ORSYmdGhpcy5idWlsdEluQ01hcENhY2hlLnNldCh0LG4pLGUuYWJydXB0KCJyZXR1cm4iLG4pO2Nhc2UgMjQ6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKSxmdW5jdGlvbihlKXtyZXR1cm4gRC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KX0se2tleToiZmV0Y2hTdGFuZGFyZEZvbnREYXRhIix2YWx1ZTooTD1NKEUoKS5tYXJrKChmdW5jdGlvbiBlKHQpe3ZhciByLG4saSxvLHMsYztyZXR1cm4gRSgpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOmlmKCEocj10aGlzLnN0YW5kYXJkRm9udERhdGFDYWNoZS5nZXQodCkpKXtlLm5leHQ9MzticmVha31yZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsbmV3IHkuU3RyZWFtKHIpKTtjYXNlIDM6aWYoIXRoaXMub3B0aW9ucy51c2VTeXN0ZW1Gb250c3x8IlN5bWJvbCI9PT10fHwiWmFwZkRpbmdiYXRzIj09PXQpe2UubmV4dD01O2JyZWFrfXJldHVybiBlLmFicnVwdCgicmV0dXJuIixudWxsKTtjYXNlIDU6aWYobj0oMCxsLmdldEZvbnROYW1lVG9GaWxlTWFwKSgpLGk9blt0XSxudWxsPT09dGhpcy5vcHRpb25zLnN0YW5kYXJkRm9udERhdGFVcmwpe2UubmV4dD0yMDticmVha31yZXR1cm4gcz0iIi5jb25jYXQodGhpcy5vcHRpb25zLnN0YW5kYXJkRm9udERhdGFVcmwpLmNvbmNhdChpKSxlLm5leHQ9MTAsZmV0Y2gocyk7Y2FzZSAxMDppZigoYz1lLnNlbnQpLm9rKXtlLm5leHQ9MTU7YnJlYWt9KDAsYS53YXJuKSgnZmV0Y2hTdGFuZGFyZEZvbnREYXRhOiBmYWlsZWQgdG8gZmV0Y2ggZmlsZSAiJy5jb25jYXQocywnIiB3aXRoICInKS5jb25jYXQoYy5zdGF0dXNUZXh0LCciLicpKSxlLm5leHQ9MTg7YnJlYWs7Y2FzZSAxNTpyZXR1cm4gZS5uZXh0PTE3LGMuYXJyYXlCdWZmZXIoKTtjYXNlIDE3Om89ZS5zZW50O2Nhc2UgMTg6ZS5uZXh0PTI5O2JyZWFrO2Nhc2UgMjA6cmV0dXJuIGUucHJldj0yMCxlLm5leHQ9MjMsdGhpcy5oYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiRmV0Y2hTdGFuZGFyZEZvbnREYXRhIix7ZmlsZW5hbWU6aX0pO2Nhc2UgMjM6bz1lLnNlbnQsZS5uZXh0PTI5O2JyZWFrO2Nhc2UgMjY6ZS5wcmV2PTI2LGUudDA9ZS5jYXRjaCgyMCksKDAsYS53YXJuKSgnZmV0Y2hTdGFuZGFyZEZvbnREYXRhOiBmYWlsZWQgdG8gZmV0Y2ggZmlsZSAiJy5jb25jYXQoaSwnIiB3aXRoICInKS5jb25jYXQoZS50MCwnIi4nKSk7Y2FzZSAyOTppZihvKXtlLm5leHQ9MzE7YnJlYWt9cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLG51bGwpO2Nhc2UgMzE6cmV0dXJuIHRoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLnNldCh0LG8pLGUuYWJydXB0KCJyZXR1cm4iLG5ldyB5LlN0cmVhbShvKSk7Y2FzZSAzMzpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyxbWzIwLDI2XV0pfSkpKSxmdW5jdGlvbihlKXtyZXR1cm4gTC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KX0se2tleToiYnVpbGRGb3JtWE9iamVjdCIsdmFsdWU6KGo9TShFKCkubWFyaygoZnVuY3Rpb24gZSh0LHIsbixpLHMsYyx1KXt2YXIgbCxmLGgsZCxwLGcsdix5LG0sYixrO3JldHVybiBFKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6aWYobD1yLmRpY3QsZj1sLmdldEFycmF5KCJNYXRyaXgiKSxoPWwuZ2V0QXJyYXkoIkJCb3giKSxoPUFycmF5LmlzQXJyYXkoaCkmJjQ9PT1oLmxlbmd0aD9hLlV0aWwubm9ybWFsaXplUmVjdChoKTpudWxsLCFsLmhhcygiT0MiKSl7ZS5uZXh0PTg7YnJlYWt9cmV0dXJuIGUubmV4dD03LHRoaXMucGFyc2VNYXJrZWRDb250ZW50UHJvcHMobC5nZXQoIk9DIiksdCk7Y2FzZSA3OmQ9ZS5zZW50O2Nhc2UgODppZih2b2lkIDAhPT1kJiZpLmFkZE9wKGEuT1BTLmJlZ2luTWFya2VkQ29udGVudFByb3BzLFsiT0MiLGRdKSwhKGc9bC5nZXQoIkdyb3VwIikpKXtlLm5leHQ9Mjk7YnJlYWt9aWYocD17bWF0cml4OmYsYmJveDpoLHNtYXNrOm4saXNvbGF0ZWQ6ITEsa25vY2tvdXQ6ITF9LHY9Zy5nZXQoIlMiKSx5PW51bGwsISgwLG8uaXNOYW1lKSh2LCJUcmFuc3BhcmVuY3kiKSl7ZS5uZXh0PTI3O2JyZWFrfWlmKHAuaXNvbGF0ZWQ9Zy5nZXQoIkkiKXx8ITEscC5rbm9ja291dD1nLmdldCgiSyIpfHwhMSwhZy5oYXMoIkNTIikpe2UubmV4dD0yNzticmVha31pZihtPWcuZ2V0UmF3KCJDUyIpLCEoYj13LkNvbG9yU3BhY2UuZ2V0Q2FjaGVkKG0sdGhpcy54cmVmLHUpKSl7ZS5uZXh0PTI0O2JyZWFrfXk9YixlLm5leHQ9Mjc7YnJlYWs7Y2FzZSAyNDpyZXR1cm4gZS5uZXh0PTI2LHRoaXMucGFyc2VDb2xvclNwYWNlKHtjczptLHJlc291cmNlczp0LGxvY2FsQ29sb3JTcGFjZUNhY2hlOnV9KTtjYXNlIDI2Onk9ZS5zZW50O2Nhc2UgMjc6biYmbi5iYWNrZHJvcCYmKHk9eXx8dy5Db2xvclNwYWNlLnNpbmdsZXRvbnMucmdiLG4uYmFja2Ryb3A9eS5nZXRSZ2Iobi5iYWNrZHJvcCwwKSksaS5hZGRPcChhLk9QUy5iZWdpbkdyb3VwLFtwXSk7Y2FzZSAyOTpyZXR1cm4gaz1nP1tmLG51bGxdOltmLGhdLGkuYWRkT3AoYS5PUFMucGFpbnRGb3JtWE9iamVjdEJlZ2luLGspLGUuYWJydXB0KCJyZXR1cm4iLHRoaXMuZ2V0T3BlcmF0b3JMaXN0KHtzdHJlYW06cix0YXNrOnMscmVzb3VyY2VzOmwuZ2V0KCJSZXNvdXJjZXMiKXx8dCxvcGVyYXRvckxpc3Q6aSxpbml0aWFsU3RhdGU6Y30pLnRoZW4oKGZ1bmN0aW9uKCl7aS5hZGRPcChhLk9QUy5wYWludEZvcm1YT2JqZWN0RW5kLFtdKSxnJiZpLmFkZE9wKGEuT1BTLmVuZEdyb3VwLFtwXSksdm9pZCAwIT09ZCYmaS5hZGRPcChhLk9QUy5lbmRNYXJrZWRDb250ZW50LFtdKX0pKSk7Y2FzZSAzMjpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpLGZ1bmN0aW9uKGUsdCxyLG4sYSxpLG8pe3JldHVybiBqLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pfSx7a2V5OiJfc2VuZEltZ0RhdGEiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIHI9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0mJmFyZ3VtZW50c1syXSxuPXQ/W3QuYml0bWFwfHx0LmRhdGEuYnVmZmVyXTpudWxsO3JldHVybiB0aGlzLnBhcnNpbmdUeXBlM0ZvbnR8fHI/dGhpcy5oYW5kbGVyLnNlbmQoImNvbW1vbm9iaiIsW2UsIkltYWdlIix0XSxuKTp0aGlzLmhhbmRsZXIuc2VuZCgib2JqIixbZSx0aGlzLnBhZ2VJbmRleCwiSW1hZ2UiLHRdLG4pfX0se2tleToiYnVpbGRQYWludEltYWdlWE9iamVjdCIsdmFsdWU6KHg9TShFKCkubWFyaygoZnVuY3Rpb24gZSh0KXt2YXIgcixuLGksbyxzLGMsdSxsLGYsaCxkLHAsZyx2LHksbSxiLHcsUyx4LE8sQSxDLEYsVCxJLGosTT10aGlzO3JldHVybiBFKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6aWYocj10LnJlc291cmNlcyxuPXQuaW1hZ2UsaT10LmlzSW5saW5lLG89dm9pZCAwIT09aSYmaSxzPXQub3BlcmF0b3JMaXN0LGM9dC5jYWNoZUtleSx1PXQubG9jYWxJbWFnZUNhY2hlLGw9dC5sb2NhbENvbG9yU3BhY2VDYWNoZSxmPW4uZGljdCxoPWYub2JqSWQsZD1mLmdldCgiVyIsIldpZHRoIikscD1mLmdldCgiSCIsIkhlaWdodCIpLGQmJiJudW1iZXIiPT10eXBlb2YgZCYmcCYmIm51bWJlciI9PXR5cGVvZiBwKXtlLm5leHQ9ODticmVha31yZXR1cm4oMCxhLndhcm4pKCJJbWFnZSBkaW1lbnNpb25zIGFyZSBtaXNzaW5nLCBvciBub3QgbnVtYmVycy4iKSxlLmFicnVwdCgicmV0dXJuIik7Y2FzZSA4OmlmKCEoLTEhPT0oZz10aGlzLm9wdGlvbnMubWF4SW1hZ2VTaXplKSYmZCpwPmcpKXtlLm5leHQ9MTU7YnJlYWt9aWYodj0iSW1hZ2UgZXhjZWVkZWQgbWF4aW11bSBhbGxvd2VkIHNpemUgYW5kIHdhcyByZW1vdmVkLiIsIXRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpe2UubmV4dD0xNDticmVha31yZXR1cm4oMCxhLndhcm4pKHYpLGUuYWJydXB0KCJyZXR1cm4iKTtjYXNlIDE0OnRocm93IG5ldyBFcnJvcih2KTtjYXNlIDE1OmlmKCFmLmhhcygiT0MiKSl7ZS5uZXh0PTE5O2JyZWFrfXJldHVybiBlLm5leHQ9MTgsdGhpcy5wYXJzZU1hcmtlZENvbnRlbnRQcm9wcyhmLmdldCgiT0MiKSxyKTtjYXNlIDE4Onk9ZS5zZW50O2Nhc2UgMTk6aWYoIWYuZ2V0KCJJTSIsIkltYWdlTWFzayIpKXtlLm5leHQ9NDQ7YnJlYWt9aWYodz1mLmdldCgiSSIsIkludGVycG9sYXRlIiksUz1kKzc+PjMseD1uLmdldEJ5dGVzKFMqcCksTz1mLmdldEFycmF5KCJEIiwiRGVjb2RlIiksIXRoaXMucGFyc2luZ1R5cGUzRm9udCl7ZS5uZXh0PTMyO2JyZWFrfXJldHVybihtPVAuUERGSW1hZ2UuY3JlYXRlUmF3TWFzayh7aW1nQXJyYXk6eCx3aWR0aDpkLGhlaWdodDpwLGltYWdlSXNGcm9tRGVjb2RlU3RyZWFtOm4gaW5zdGFuY2VvZiBrLkRlY29kZVN0cmVhbSxpbnZlcnNlRGVjb2RlOiEhTyYmT1swXT4wLGludGVycG9sYXRlOnd9KSkuY2FjaGVkPSEhYyxiPVttXSxzLmFkZEltYWdlT3BzKGEuT1BTLnBhaW50SW1hZ2VNYXNrWE9iamVjdCxiLHkpLGMmJnUuc2V0KGMsaCx7Zm46YS5PUFMucGFpbnRJbWFnZU1hc2tYT2JqZWN0LGFyZ3M6YixvcHRpb25hbENvbnRlbnQ6eX0pLGUuYWJydXB0KCJyZXR1cm4iKTtjYXNlIDMyOmlmKCEobT1QLlBERkltYWdlLmNyZWF0ZU1hc2soe2ltZ0FycmF5Ongsd2lkdGg6ZCxoZWlnaHQ6cCxpbWFnZUlzRnJvbURlY29kZVN0cmVhbTpuIGluc3RhbmNlb2Ygay5EZWNvZGVTdHJlYW0saW52ZXJzZURlY29kZTohIU8mJk9bMF0+MCxpbnRlcnBvbGF0ZTp3LGlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkOnRoaXMub3B0aW9ucy5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZH0pKS5pc1NpbmdsZU9wYXF1ZVBpeGVsKXtlLm5leHQ9Mzc7YnJlYWt9cmV0dXJuIHMuYWRkSW1hZ2VPcHMoYS5PUFMucGFpbnRTb2xpZENvbG9ySW1hZ2VNYXNrLFtdLHkpLGMmJnUuc2V0KGMsaCx7Zm46YS5PUFMucGFpbnRTb2xpZENvbG9ySW1hZ2VNYXNrLGFyZ3M6W10sb3B0aW9uYWxDb250ZW50Onl9KSxlLmFicnVwdCgicmV0dXJuIik7Y2FzZSAzNzpyZXR1cm4gQT0ibWFza18iLmNvbmNhdCh0aGlzLmlkRmFjdG9yeS5jcmVhdGVPYmpJZCgpKSxzLmFkZERlcGVuZGVuY3koQSksdGhpcy5fc2VuZEltZ0RhdGEoQSxtKSxiPVt7ZGF0YTpBLHdpZHRoOm0ud2lkdGgsaGVpZ2h0Om0uaGVpZ2h0LGludGVycG9sYXRlOm0uaW50ZXJwb2xhdGUsY291bnQ6MX1dLHMuYWRkSW1hZ2VPcHMoYS5PUFMucGFpbnRJbWFnZU1hc2tYT2JqZWN0LGIseSksYyYmdS5zZXQoYyxoLHtmbjphLk9QUy5wYWludEltYWdlTWFza1hPYmplY3QsYXJnczpiLG9wdGlvbmFsQ29udGVudDp5fSksZS5hYnJ1cHQoInJldHVybiIpO2Nhc2UgNDQ6aWYoQz1mLmdldCgiU00iLCJTTWFzayIpfHwhMSxGPWYuZ2V0KCJNYXNrIil8fCExLCFvfHxDfHxGfHwhKGQrcDwyMDApKXtlLm5leHQ9NTI7YnJlYWt9cmV0dXJuIFQ9bmV3IFAuUERGSW1hZ2Uoe3hyZWY6dGhpcy54cmVmLHJlczpyLGltYWdlOm4saXNJbmxpbmU6byxwZGZGdW5jdGlvbkZhY3Rvcnk6dGhpcy5fcGRmRnVuY3Rpb25GYWN0b3J5LGxvY2FsQ29sb3JTcGFjZUNhY2hlOmx9KSxtPVQuY3JlYXRlSW1hZ2VEYXRhKCEwKSxzLmFkZEltYWdlT3BzKGEuT1BTLnBhaW50SW5saW5lSW1hZ2VYT2JqZWN0LFttXSx5KSxlLmFicnVwdCgicmV0dXJuIik7Y2FzZSA1MjpJPSJpbWdfIi5jb25jYXQodGhpcy5pZEZhY3RvcnkuY3JlYXRlT2JqSWQoKSksaj0hMSx0aGlzLnBhcnNpbmdUeXBlM0ZvbnQ/ST0iIi5jb25jYXQodGhpcy5pZEZhY3RvcnkuZ2V0RG9jSWQoKSwiX3R5cGUzXyIpLmNvbmNhdChJKTpoJiYoaj10aGlzLmdsb2JhbEltYWdlQ2FjaGUuc2hvdWxkQ2FjaGUoaCx0aGlzLnBhZ2VJbmRleCkpJiYoST0iIi5jb25jYXQodGhpcy5pZEZhY3RvcnkuZ2V0RG9jSWQoKSwiXyIpLmNvbmNhdChJKSkscy5hZGREZXBlbmRlbmN5KEkpLGI9W0ksZCxwXSxQLlBERkltYWdlLmJ1aWxkSW1hZ2Uoe3hyZWY6dGhpcy54cmVmLHJlczpyLGltYWdlOm4saXNJbmxpbmU6byxwZGZGdW5jdGlvbkZhY3Rvcnk6dGhpcy5fcGRmRnVuY3Rpb25GYWN0b3J5LGxvY2FsQ29sb3JTcGFjZUNhY2hlOmx9KS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gbT1lLmNyZWF0ZUltYWdlRGF0YSghMSksYyYmaCYmaiYmTS5nbG9iYWxJbWFnZUNhY2hlLmFkZEJ5dGVTaXplKGgsbS5kYXRhLmxlbmd0aCksTS5fc2VuZEltZ0RhdGEoSSxtLGopfSkpLmNhdGNoKChmdW5jdGlvbihlKXtyZXR1cm4oMCxhLndhcm4pKCdVbmFibGUgdG8gZGVjb2RlIGltYWdlICInLmNvbmNhdChJLCciOiAiJykuY29uY2F0KGUsJyIuJykpLE0uX3NlbmRJbWdEYXRhKEksbnVsbCxqKX0pKSxzLmFkZEltYWdlT3BzKGEuT1BTLnBhaW50SW1hZ2VYT2JqZWN0LGIseSksYyYmKHUuc2V0KGMsaCx7Zm46YS5PUFMucGFpbnRJbWFnZVhPYmplY3QsYXJnczpiLG9wdGlvbmFsQ29udGVudDp5fSksaCYmKCgwLGEuYXNzZXJ0KSghbywiQ2Fubm90IGNhY2hlIGFuIGlubGluZSBpbWFnZSBnbG9iYWxseS4iKSx0aGlzLmdsb2JhbEltYWdlQ2FjaGUuYWRkUGFnZUluZGV4KGgsdGhpcy5wYWdlSW5kZXgpLGomJnRoaXMuZ2xvYmFsSW1hZ2VDYWNoZS5zZXREYXRhKGgse29iaklkOkksZm46YS5PUFMucGFpbnRJbWFnZVhPYmplY3QsYXJnczpiLG9wdGlvbmFsQ29udGVudDp5LGJ5dGVTaXplOjB9KSkpO2Nhc2UgNTk6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKSxmdW5jdGlvbihlKXtyZXR1cm4geC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KX0se2tleToiaGFuZGxlU01hc2siLHZhbHVlOmZ1bmN0aW9uKGUsdCxyLG4sYSxpKXt2YXIgbz1lLmdldCgiRyIpLHM9e3N1YnR5cGU6ZS5nZXQoIlMiKS5uYW1lLGJhY2tkcm9wOmUuZ2V0KCJCQyIpfSxjPWUuZ2V0KCJUUiIpO2lmKCgwLHAuaXNQREZGdW5jdGlvbikoYykpe2Zvcih2YXIgdT10aGlzLl9wZGZGdW5jdGlvbkZhY3RvcnkuY3JlYXRlKGMpLGw9bmV3IFVpbnQ4QXJyYXkoMjU2KSxmPW5ldyBGbG9hdDMyQXJyYXkoMSksaD0wO2g8MjU2O2grKylmWzBdPWgvMjU1LHUoZiwwLGYsMCksbFtoXT0yNTUqZlswXXwwO3MudHJhbnNmZXJNYXA9bH1yZXR1cm4gdGhpcy5idWlsZEZvcm1YT2JqZWN0KHQsbyxzLHIsbixhLnN0YXRlLmNsb25lKCksaSl9fSx7a2V5OiJoYW5kbGVUcmFuc2ZlckZ1bmN0aW9uIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdDtpZihBcnJheS5pc0FycmF5KGUpKXQ9ZTtlbHNle2lmKCEoMCxwLmlzUERGRnVuY3Rpb24pKGUpKXJldHVybiBudWxsO3Q9W2VdfXZhciByLG49W10sYT0wLGk9MCxzPU4odCk7dHJ5e2ZvcihzLnMoKTshKHI9cy5uKCkpLmRvbmU7KXt2YXIgYz1yLnZhbHVlLHU9dGhpcy54cmVmLmZldGNoSWZSZWYoYyk7aWYoYSsrLCgwLG8uaXNOYW1lKSh1LCJJZGVudGl0eSIpKW4ucHVzaChudWxsKTtlbHNle2lmKCEoMCxwLmlzUERGRnVuY3Rpb24pKHUpKXJldHVybiBudWxsO2Zvcih2YXIgbD10aGlzLl9wZGZGdW5jdGlvbkZhY3RvcnkuY3JlYXRlKHUpLGY9bmV3IFVpbnQ4QXJyYXkoMjU2KSxoPW5ldyBGbG9hdDMyQXJyYXkoMSksZD0wO2Q8MjU2O2QrKyloWzBdPWQvMjU1LGwoaCwwLGgsMCksZltkXT0yNTUqaFswXXwwO24ucHVzaChmKSxpKyt9fX1jYXRjaChlKXtzLmUoZSl9ZmluYWxseXtzLmYoKX1yZXR1cm4gMSE9PWEmJjQhPT1hfHwwPT09aT9udWxsOm59fSx7a2V5OiJoYW5kbGVUaWxpbmdUeXBlIix2YWx1ZTpmdW5jdGlvbihlLHQscixuLGkscyxjLHUpe3ZhciBsPXRoaXMsaD1uZXcgRi5PcGVyYXRvckxpc3QsZD1vLkRpY3QubWVyZ2Uoe3hyZWY6dGhpcy54cmVmLGRpY3RBcnJheTpbaS5nZXQoIlJlc291cmNlcyIpLHJdfSk7cmV0dXJuIHRoaXMuZ2V0T3BlcmF0b3JMaXN0KHtzdHJlYW06bix0YXNrOmMscmVzb3VyY2VzOmQsb3BlcmF0b3JMaXN0Omh9KS50aGVuKChmdW5jdGlvbigpe3ZhciByPWguZ2V0SVIoKSxuPSgwLGYuZ2V0VGlsaW5nUGF0dGVybklSKShyLGksdCk7cy5hZGREZXBlbmRlbmNpZXMoaC5kZXBlbmRlbmNpZXMpLHMuYWRkT3AoZSxuKSxpLm9iaklkJiZ1LnNldChudWxsLGkub2JqSWQse29wZXJhdG9yTGlzdElSOnIsZGljdDppfSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe2lmKCEoZSBpbnN0YW5jZW9mIGEuQWJvcnRFeGNlcHRpb24pKXtpZihsLm9wdGlvbnMuaWdub3JlRXJyb3JzKXJldHVybiBsLmhhbmRsZXIuc2VuZCgiVW5zdXBwb3J0ZWRGZWF0dXJlIix7ZmVhdHVyZUlkOmEuVU5TVVBQT1JURURfRkVBVFVSRVMuZXJyb3JUaWxpbmdQYXR0ZXJufSksdm9pZCgwLGEud2FybikoJ2hhbmRsZVRpbGluZ1R5cGUgLSBpZ25vcmluZyBwYXR0ZXJuOiAiJy5jb25jYXQoZSwnIi4nKSk7dGhyb3cgZX19KSl9fSx7a2V5OiJoYW5kbGVTZXRGb250Iix2YWx1ZTpmdW5jdGlvbihlLHQscixuLGksYyl7dmFyIHU9dGhpcyxsPWFyZ3VtZW50cy5sZW5ndGg+NiYmdm9pZCAwIT09YXJndW1lbnRzWzZdP2FyZ3VtZW50c1s2XTpudWxsLGY9YXJndW1lbnRzLmxlbmd0aD43JiZ2b2lkIDAhPT1hcmd1bWVudHNbN10/YXJndW1lbnRzWzddOm51bGwsaD10JiZ0WzBdaW5zdGFuY2VvZiBvLk5hbWU/dFswXS5uYW1lOm51bGw7cmV0dXJuIHRoaXMubG9hZEZvbnQoaCxyLGUsbCxmKS50aGVuKChmdW5jdGlvbih0KXtyZXR1cm4gdC5mb250LmlzVHlwZTNGb250P3QubG9hZFR5cGUzRGF0YSh1LGUsaSkudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gbi5hZGREZXBlbmRlbmNpZXModC50eXBlM0RlcGVuZGVuY2llcyksdH0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIHUuaGFuZGxlci5zZW5kKCJVbnN1cHBvcnRlZEZlYXR1cmUiLHtmZWF0dXJlSWQ6YS5VTlNVUFBPUlRFRF9GRUFUVVJFUy5lcnJvckZvbnRMb2FkVHlwZTN9KSxuZXcgeih7bG9hZGVkTmFtZToiZ19mb250X2Vycm9yIixmb250Om5ldyBzLkVycm9yRm9udCgiVHlwZTMgZm9udCBsb2FkIGVycm9yOiAiLmNvbmNhdChlKSksZGljdDp0LmZvbnQsZXZhbHVhdG9yT3B0aW9uczp1Lm9wdGlvbnN9KX0pKTp0fSkpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBjLmZvbnQ9ZS5mb250LGUuc2VuZCh1LmhhbmRsZXIpLGUubG9hZGVkTmFtZX0pKX19LHtrZXk6ImhhbmRsZVRleHQiLHZhbHVlOmZ1bmN0aW9uKHQscil7dmFyIG49ci5mb250LGk9bi5jaGFyc1RvR2x5cGhzKHQpO3JldHVybiBuLmRhdGEmJihyLnRleHRSZW5kZXJpbmdNb2RlJmEuVGV4dFJlbmRlcmluZ01vZGUuQUREX1RPX1BBVEhfRkxBR3x8IlBhdHRlcm4iPT09ci5maWxsQ29sb3JTcGFjZS5uYW1lfHxuLmRpc2FibGVGb250RmFjZXx8dGhpcy5vcHRpb25zLmRpc2FibGVGb250RmFjZSkmJmUuYnVpbGRGb250UGF0aHMobixpLHRoaXMuaGFuZGxlcix0aGlzLm9wdGlvbnMpLGl9fSx7a2V5OiJlbnN1cmVTdGF0ZUZvbnQiLHZhbHVlOmZ1bmN0aW9uKGUpe2lmKCFlLmZvbnQpe3ZhciB0PW5ldyBhLkZvcm1hdEVycm9yKCJNaXNzaW5nIHNldEZvbnQgKFRmKSBvcGVyYXRvciBiZWZvcmUgdGV4dCByZW5kZXJpbmcgb3BlcmF0b3IuIik7aWYodGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycylyZXR1cm4gdGhpcy5oYW5kbGVyLnNlbmQoIlVuc3VwcG9ydGVkRmVhdHVyZSIse2ZlYXR1cmVJZDphLlVOU1VQUE9SVEVEX0ZFQVRVUkVTLmVycm9yRm9udFN0YXRlfSksdm9pZCgwLGEud2FybikoJ2Vuc3VyZVN0YXRlRm9udDogIicuY29uY2F0KHQsJyIuJykpO3Rocm93IHR9fX0se2tleToic2V0R1N0YXRlIix2YWx1ZTooZz1NKEUoKS5tYXJrKChmdW5jdGlvbiBlKHQpe3ZhciByLG4saSxzLGMsdSxsLGYsaCxkLHAsZyx2LHksbSxiPXRoaXM7cmV0dXJuIEUoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyPXQucmVzb3VyY2VzLG49dC5nU3RhdGUsaT10Lm9wZXJhdG9yTGlzdCxzPXQuY2FjaGVLZXksYz10LnRhc2ssdT10LnN0YXRlTWFuYWdlcixsPXQubG9jYWxHU3RhdGVDYWNoZSxmPXQubG9jYWxDb2xvclNwYWNlQ2FjaGUsaD1uLm9iaklkLGQ9ITAscD1bXSxnPVByb21pc2UucmVzb2x2ZSgpLHY9TihuLmdldEtleXMoKSk7dHJ5e2ZvcihtPWZ1bmN0aW9uKCl7dmFyIGU9eS52YWx1ZSx0PW4uZ2V0KGUpO3N3aXRjaChlKXtjYXNlIlR5cGUiOmJyZWFrO2Nhc2UiTFciOmNhc2UiTEMiOmNhc2UiTEoiOmNhc2UiTUwiOmNhc2UiRCI6Y2FzZSJSSSI6Y2FzZSJGTCI6Y2FzZSJDQSI6Y2FzZSJjYSI6cC5wdXNoKFtlLHRdKTticmVhaztjYXNlIkZvbnQiOmQ9ITEsZz1nLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIGIuaGFuZGxlU2V0Rm9udChyLG51bGwsdFswXSxpLGMsdS5zdGF0ZSkudGhlbigoZnVuY3Rpb24ocil7aS5hZGREZXBlbmRlbmN5KHIpLHAucHVzaChbZSxbcix0WzFdXV0pfSkpfSkpO2JyZWFrO2Nhc2UiQk0iOnAucHVzaChbZSxYKHQpXSk7YnJlYWs7Y2FzZSJTTWFzayI6aWYoKDAsby5pc05hbWUpKHQsIk5vbmUiKSl7cC5wdXNoKFtlLCExXSk7YnJlYWt9dCBpbnN0YW5jZW9mIG8uRGljdD8oZD0hMSxnPWcudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gYi5oYW5kbGVTTWFzayh0LHIsaSxjLHUsZil9KSkscC5wdXNoKFtlLCEwXSkpOigwLGEud2FybikoIlVuc3VwcG9ydGVkIFNNYXNrIHR5cGUiKTticmVhaztjYXNlIlRSIjp2YXIgcz1iLmhhbmRsZVRyYW5zZmVyRnVuY3Rpb24odCk7cC5wdXNoKFtlLHNdKTticmVhaztjYXNlIk9QIjpjYXNlIm9wIjpjYXNlIk9QTSI6Y2FzZSJCRyI6Y2FzZSJCRzIiOmNhc2UiVUNSIjpjYXNlIlVDUjIiOmNhc2UiVFIyIjpjYXNlIkhUIjpjYXNlIlNNIjpjYXNlIlNBIjpjYXNlIkFJUyI6Y2FzZSJUSyI6KDAsYS5pbmZvKSgiZ3JhcGhpYyBzdGF0ZSBvcGVyYXRvciAiK2UpO2JyZWFrO2RlZmF1bHQ6KDAsYS5pbmZvKSgiVW5rbm93biBncmFwaGljIHN0YXRlIG9wZXJhdG9yICIrZSl9fSx2LnMoKTshKHk9di5uKCkpLmRvbmU7KW0oKX1jYXRjaChlKXt2LmUoZSl9ZmluYWxseXt2LmYoKX1yZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsZy50aGVuKChmdW5jdGlvbigpe3AubGVuZ3RoPjAmJmkuYWRkT3AoYS5PUFMuc2V0R1N0YXRlLFtwXSksZCYmbC5zZXQocyxoLHApfSkpKTtjYXNlIDg6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSksZnVuY3Rpb24oZSl7cmV0dXJuIGcuYXBwbHkodGhpcyxhcmd1bWVudHMpfSl9LHtrZXk6ImxvYWRGb250Iix2YWx1ZTpmdW5jdGlvbih0LHIsbil7dmFyIGksdT10aGlzLGw9YXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10/YXJndW1lbnRzWzNdOm51bGwsZj1hcmd1bWVudHMubGVuZ3RoPjQmJnZvaWQgMCE9PWFyZ3VtZW50c1s0XT9hcmd1bWVudHNbNF06bnVsbCxoPWZ1bmN0aW9uKCl7dmFyIGU9TShFKCkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiBFKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLG5ldyB6KHtsb2FkZWROYW1lOiJnX2ZvbnRfZXJyb3IiLGZvbnQ6bmV3IHMuRXJyb3JGb250KCdGb250ICInLmNvbmNhdCh0LCciIGlzIG5vdCBhdmFpbGFibGUuJykpLGRpY3Q6cixldmFsdWF0b3JPcHRpb25zOnUub3B0aW9uc30pKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSk7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKSxkPXRoaXMueHJlZjtpZihyKXIgaW5zdGFuY2VvZiBvLlJlZiYmKGk9cik7ZWxzZXt2YXIgcD1uLmdldCgiRm9udCIpO3AmJihpPXAuZ2V0UmF3KHQpKX1pZighaSl7dmFyIGc9J0ZvbnQgIicuY29uY2F0KHR8fHImJnIudG9TdHJpbmcoKSwnIiBpcyBub3QgYXZhaWxhYmxlJyk7aWYoIXRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMmJiF0aGlzLnBhcnNpbmdUeXBlM0ZvbnQpcmV0dXJuKDAsYS53YXJuKSgiIi5jb25jYXQoZywiLiIpKSxoKCk7dGhpcy5oYW5kbGVyLnNlbmQoIlVuc3VwcG9ydGVkRmVhdHVyZSIse2ZlYXR1cmVJZDphLlVOU1VQUE9SVEVEX0ZFQVRVUkVTLmVycm9yRm9udE1pc3Npbmd9KSwoMCxhLndhcm4pKCIiLmNvbmNhdChnLCIgLS0gYXR0ZW1wdGluZyB0byBmYWxsYmFjayB0byBhIGRlZmF1bHQgZm9udC4iKSksaT1sfHxlLmZhbGxiYWNrRm9udERpY3R9aWYodGhpcy5wYXJzaW5nVHlwZTNGb250JiZ0aGlzLnR5cGUzRm9udFJlZnMuaGFzKGkpKXJldHVybiBoKCk7aWYodGhpcy5mb250Q2FjaGUuaGFzKGkpKXJldHVybiB0aGlzLmZvbnRDYWNoZS5nZXQoaSk7aWYoISgocj1kLmZldGNoSWZSZWYoaSkpaW5zdGFuY2VvZiBvLkRpY3QpKXJldHVybiBoKCk7aWYoci5jYWNoZUtleSYmdGhpcy5mb250Q2FjaGUuaGFzKHIuY2FjaGVLZXkpKXJldHVybiB0aGlzLmZvbnRDYWNoZS5nZXQoci5jYWNoZUtleSk7dmFyIHYseT0oMCxhLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpO3RyeXsodj10aGlzLnByZUV2YWx1YXRlRm9udChyKSkuY3NzRm9udEluZm89Zn1jYXRjaChlKXtyZXR1cm4oMCxhLndhcm4pKCdsb2FkRm9udCAtIHByZUV2YWx1YXRlRm9udCBmYWlsZWQ6ICInLmNvbmNhdChlLCciLicpKSxoKCl9dmFyIG0sYj12LHc9Yi5kZXNjcmlwdG9yLGs9Yi5oYXNoLFM9aSBpbnN0YW5jZW9mIG8uUmVmO2lmKFMmJihtPSJmIi5jb25jYXQoaS50b1N0cmluZygpKSksayYmdyBpbnN0YW5jZW9mIG8uRGljdCl7dy5mb250QWxpYXNlc3x8KHcuZm9udEFsaWFzZXM9T2JqZWN0LmNyZWF0ZShudWxsKSk7dmFyIHg9dy5mb250QWxpYXNlcztpZih4W2tdKXt2YXIgTz14W2tdLmFsaWFzUmVmO2lmKFMmJk8mJnRoaXMuZm9udENhY2hlLmhhcyhPKSlyZXR1cm4gdGhpcy5mb250Q2FjaGUucHV0QWxpYXMoaSxPKSx0aGlzLmZvbnRDYWNoZS5nZXQoaSl9ZWxzZSB4W2tdPXtmb250SUQ6dGhpcy5pZEZhY3RvcnkuY3JlYXRlRm9udElkKCl9O1MmJih4W2tdLmFsaWFzUmVmPWkpLG09eFtrXS5mb250SUR9cmV0dXJuIFM/dGhpcy5mb250Q2FjaGUucHV0KGkseS5wcm9taXNlKToobXx8KG09dGhpcy5pZEZhY3RvcnkuY3JlYXRlRm9udElkKCkpLHIuY2FjaGVLZXk9ImNhY2hlS2V5XyIuY29uY2F0KG0pLHRoaXMuZm9udENhY2hlLnB1dChyLmNhY2hlS2V5LHkucHJvbWlzZSkpLCgwLGEuYXNzZXJ0KShtJiZtLnN0YXJ0c1dpdGgoImYiKSwnVGhlICJmb250SUQiIG11c3QgYmUgKGNvcnJlY3RseSkgZGVmaW5lZC4nKSxyLmxvYWRlZE5hbWU9IiIuY29uY2F0KHRoaXMuaWRGYWN0b3J5LmdldERvY0lkKCksIl8iKS5jb25jYXQobSksdGhpcy50cmFuc2xhdGVGb250KHYpLnRoZW4oKGZ1bmN0aW9uKGUpe3ZvaWQgMCE9PWUuZm9udFR5cGUmJmQuc3RhdHMuYWRkRm9udFR5cGUoZS5mb250VHlwZSkseS5yZXNvbHZlKG5ldyB6KHtsb2FkZWROYW1lOnIubG9hZGVkTmFtZSxmb250OmUsZGljdDpyLGV2YWx1YXRvck9wdGlvbnM6dS5vcHRpb25zfSkpfSkpLmNhdGNoKChmdW5jdGlvbihlKXt1LmhhbmRsZXIuc2VuZCgiVW5zdXBwb3J0ZWRGZWF0dXJlIix7ZmVhdHVyZUlkOmEuVU5TVVBQT1JURURfRkVBVFVSRVMuZXJyb3JGb250VHJhbnNsYXRlfSksKDAsYS53YXJuKSgnbG9hZEZvbnQgLSB0cmFuc2xhdGVGb250IGZhaWxlZDogIicuY29uY2F0KGUsJyIuJykpO3RyeXt2YXIgdD13JiZ3LmdldCgiRm9udEZpbGUzIiksbj10JiZ0LmdldCgiU3VidHlwZSIpLGk9KDAsYy5nZXRGb250VHlwZSkodi50eXBlLG4mJm4ubmFtZSk7dm9pZCAwIT09aSYmZC5zdGF0cy5hZGRGb250VHlwZShpKX1jYXRjaChlKXt9eS5yZXNvbHZlKG5ldyB6KHtsb2FkZWROYW1lOnIubG9hZGVkTmFtZSxmb250Om5ldyBzLkVycm9yRm9udChlIGluc3RhbmNlb2YgRXJyb3I/ZS5tZXNzYWdlOmUpLGRpY3Q6cixldmFsdWF0b3JPcHRpb25zOnUub3B0aW9uc30pKX0pKSx5LnByb21pc2V9fSx7a2V5OiJidWlsZFBhdGgiLHZhbHVlOmZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXSYmYXJndW1lbnRzWzNdLGk9ZS5sZW5ndGgtMTtpZihyfHwocj1bXSksaTwwfHxlLmZuQXJyYXlbaV0hPT1hLk9QUy5jb25zdHJ1Y3RQYXRoKXt2YXIgbztzd2l0Y2gobiYmKCgwLGEud2FybikoJ0VuY291bnRlcmVkIHBhdGggb3BlcmF0b3IgIicuY29uY2F0KHQsJyIgaW5zaWRlIG9mIGEgdGV4dCBvYmplY3QuJykpLGUuYWRkT3AoYS5PUFMuc2F2ZSxudWxsKSksdCl7Y2FzZSBhLk9QUy5yZWN0YW5nbGU6dmFyIHM9clswXStyWzJdLGM9clsxXStyWzNdO289W01hdGgubWluKHJbMF0scyksTWF0aC5tYXgoclswXSxzKSxNYXRoLm1pbihyWzFdLGMpLE1hdGgubWF4KHJbMV0sYyldO2JyZWFrO2Nhc2UgYS5PUFMubW92ZVRvOmNhc2UgYS5PUFMubGluZVRvOm89W3JbMF0sclswXSxyWzFdLHJbMV1dO2JyZWFrO2RlZmF1bHQ6bz1bMS8wLC0xLzAsMS8wLC0xLzBdfWUuYWRkT3AoYS5PUFMuY29uc3RydWN0UGF0aCxbW3RdLHIsb10pLG4mJmUuYWRkT3AoYS5PUFMucmVzdG9yZSxudWxsKX1lbHNle3ZhciB1LGw9ZS5hcmdzQXJyYXlbaV07bFswXS5wdXNoKHQpLCh1PWxbMV0pLnB1c2guYXBwbHkodSxJKHIpKTt2YXIgZj1sWzJdO3N3aXRjaCh0KXtjYXNlIGEuT1BTLnJlY3RhbmdsZTp2YXIgaD1yWzBdK3JbMl0sZD1yWzFdK3JbM107ZlswXT1NYXRoLm1pbihmWzBdLHJbMF0saCksZlsxXT1NYXRoLm1heChmWzFdLHJbMF0saCksZlsyXT1NYXRoLm1pbihmWzJdLHJbMV0sZCksZlszXT1NYXRoLm1heChmWzNdLHJbMV0sZCk7YnJlYWs7Y2FzZSBhLk9QUy5tb3ZlVG86Y2FzZSBhLk9QUy5saW5lVG86ZlswXT1NYXRoLm1pbihmWzBdLHJbMF0pLGZbMV09TWF0aC5tYXgoZlsxXSxyWzBdKSxmWzJdPU1hdGgubWluKGZbMl0sclsxXSksZlszXT1NYXRoLm1heChmWzNdLHJbMV0pfX19fSx7a2V5OiJwYXJzZUNvbG9yU3BhY2UiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMscj1lLmNzLG49ZS5yZXNvdXJjZXMsaT1lLmxvY2FsQ29sb3JTcGFjZUNhY2hlO3JldHVybiB3LkNvbG9yU3BhY2UucGFyc2VBc3luYyh7Y3M6cix4cmVmOnRoaXMueHJlZixyZXNvdXJjZXM6bixwZGZGdW5jdGlvbkZhY3Rvcnk6dGhpcy5fcGRmRnVuY3Rpb25GYWN0b3J5LGxvY2FsQ29sb3JTcGFjZUNhY2hlOml9KS5jYXRjaCgoZnVuY3Rpb24oZSl7aWYoZSBpbnN0YW5jZW9mIGEuQWJvcnRFeGNlcHRpb24pcmV0dXJuIG51bGw7aWYodC5vcHRpb25zLmlnbm9yZUVycm9ycylyZXR1cm4gdC5oYW5kbGVyLnNlbmQoIlVuc3VwcG9ydGVkRmVhdHVyZSIse2ZlYXR1cmVJZDphLlVOU1VQUE9SVEVEX0ZFQVRVUkVTLmVycm9yQ29sb3JTcGFjZX0pLCgwLGEud2FybikoJ3BhcnNlQ29sb3JTcGFjZSAtIGlnbm9yaW5nIENvbG9yU3BhY2U6ICInLmNvbmNhdChlLCciLicpKSxudWxsO3Rocm93IGV9KSl9fSx7a2V5OiJwYXJzZVNoYWRpbmciLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWUuc2hhZGluZyxyPWUucmVzb3VyY2VzLG49ZS5sb2NhbENvbG9yU3BhY2VDYWNoZSxhPWUubG9jYWxTaGFkaW5nUGF0dGVybkNhY2hlLGk9YS5nZXQodCk7aWYoIWkpe3ZhciBvPWYuUGF0dGVybi5wYXJzZVNoYWRpbmcodCx0aGlzLnhyZWYscix0aGlzLmhhbmRsZXIsdGhpcy5fcGRmRnVuY3Rpb25GYWN0b3J5LG4pLmdldElSKCk7aT0icGF0dGVybl8iLmNvbmNhdCh0aGlzLmlkRmFjdG9yeS5jcmVhdGVPYmpJZCgpKSxhLnNldCh0LGkpLHRoaXMuaGFuZGxlci5zZW5kKCJvYmoiLFtpLHRoaXMucGFnZUluZGV4LCJQYXR0ZXJuIixvXSl9cmV0dXJuIGl9fSx7a2V5OiJoYW5kbGVDb2xvck4iLHZhbHVlOmZ1bmN0aW9uKGUsdCxyLG4saSxzLGMsdSxsLGgpe3ZhciBkPXIucG9wKCk7aWYoZCBpbnN0YW5jZW9mIG8uTmFtZSl7dmFyIHA9aS5nZXRSYXcoZC5uYW1lKSxnPXAgaW5zdGFuY2VvZiBvLlJlZiYmbC5nZXRCeVJlZihwKTtpZihnKXRyeXt2YXIgdj1uLmJhc2U/bi5iYXNlLmdldFJnYihyLDApOm51bGwseT0oMCxmLmdldFRpbGluZ1BhdHRlcm5JUikoZy5vcGVyYXRvckxpc3RJUixnLmRpY3Qsdik7cmV0dXJuIHZvaWQgZS5hZGRPcCh0LHkpfWNhdGNoKGUpe312YXIgYj10aGlzLnhyZWYuZmV0Y2hJZlJlZihwKTtpZihiKXt2YXIgdz1iIGluc3RhbmNlb2YgbS5CYXNlU3RyZWFtP2IuZGljdDpiLGs9dy5nZXQoIlBhdHRlcm5UeXBlIik7aWYoMT09PWspe3ZhciBTPW4uYmFzZT9uLmJhc2UuZ2V0UmdiKHIsMCk6bnVsbDtyZXR1cm4gdGhpcy5oYW5kbGVUaWxpbmdUeXBlKHQsUyxzLGIsdyxlLGMsbCl9aWYoMj09PWspe3ZhciB4PXcuZ2V0KCJTaGFkaW5nIiksTz13LmdldEFycmF5KCJNYXRyaXgiKSxBPXRoaXMucGFyc2VTaGFkaW5nKHtzaGFkaW5nOngscmVzb3VyY2VzOnMsbG9jYWxDb2xvclNwYWNlQ2FjaGU6dSxsb2NhbFNoYWRpbmdQYXR0ZXJuQ2FjaGU6aH0pO3JldHVybiB2b2lkIGUuYWRkT3AodCxbIlNoYWRpbmciLEEsT10pfXRocm93IG5ldyBhLkZvcm1hdEVycm9yKCJVbmtub3duIFBhdHRlcm5UeXBlOiAiLmNvbmNhdChrKSl9fXRocm93IG5ldyBhLkZvcm1hdEVycm9yKCJVbmtub3duIFBhdHRlcm5OYW1lOiAiLmNvbmNhdChkKSl9fSx7a2V5OiJfcGFyc2VWaXNpYmlsaXR5RXhwcmVzc2lvbiIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIpe2lmKCsrdD4xMCkoMCxhLndhcm4pKCJWaXNpYmlsaXR5IGV4cHJlc3Npb24gaXMgdG9vIGRlZXBseSBuZXN0ZWQiKTtlbHNle3ZhciBuPWUubGVuZ3RoLGk9dGhpcy54cmVmLmZldGNoSWZSZWYoZVswXSk7aWYoIShuPDIpJiZpIGluc3RhbmNlb2Ygby5OYW1lKXtzd2l0Y2goaS5uYW1lKXtjYXNlIkFuZCI6Y2FzZSJPciI6Y2FzZSJOb3QiOnIucHVzaChpLm5hbWUpO2JyZWFrO2RlZmF1bHQ6cmV0dXJuIHZvaWQoMCxhLndhcm4pKCJJbnZhbGlkIG9wZXJhdG9yICIuY29uY2F0KGkubmFtZSwiIGluIHZpc2liaWxpdHkgZXhwcmVzc2lvbiIpKX1mb3IodmFyIHM9MTtzPG47cysrKXt2YXIgYz1lW3NdLHU9dGhpcy54cmVmLmZldGNoSWZSZWYoYyk7aWYoQXJyYXkuaXNBcnJheSh1KSl7dmFyIGw9W107ci5wdXNoKGwpLHRoaXMuX3BhcnNlVmlzaWJpbGl0eUV4cHJlc3Npb24odSx0LGwpfWVsc2UgYyBpbnN0YW5jZW9mIG8uUmVmJiZyLnB1c2goYy50b1N0cmluZygpKX19ZWxzZSgwLGEud2FybikoIkludmFsaWQgdmlzaWJpbGl0eSBleHByZXNzaW9uIil9fX0se2tleToicGFyc2VNYXJrZWRDb250ZW50UHJvcHMiLHZhbHVlOihuPU0oRSgpLm1hcmsoKGZ1bmN0aW9uIGUodCxyKXt2YXIgbixpLHMsYyx1LGwsZixoLGQscDtyZXR1cm4gRSgpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOmlmKCEodCBpbnN0YW5jZW9mIG8uTmFtZSkpe2UubmV4dD01O2JyZWFrfWk9ci5nZXQoIlByb3BlcnRpZXMiKSxuPWkuZ2V0KHQubmFtZSksZS5uZXh0PTEwO2JyZWFrO2Nhc2UgNTppZighKHQgaW5zdGFuY2VvZiBvLkRpY3QpKXtlLm5leHQ9OTticmVha31uPXQsZS5uZXh0PTEwO2JyZWFrO2Nhc2UgOTp0aHJvdyBuZXcgYS5Gb3JtYXRFcnJvcigiT3B0aW9uYWwgY29udGVudCBwcm9wZXJ0aWVzIG1hbGZvcm1lZC4iKTtjYXNlIDEwOmlmKCJPQ0ciIT09KHM9bi5nZXQoIlR5cGUiKS5uYW1lKSl7ZS5uZXh0PTE1O2JyZWFrfXJldHVybiBlLmFicnVwdCgicmV0dXJuIix7dHlwZTpzLGlkOm4ub2JqSWR9KTtjYXNlIDE1OmlmKCJPQ01EIiE9PXMpe2UubmV4dD0zMTticmVha31pZihjPW4uZ2V0KCJWRSIpLCFBcnJheS5pc0FycmF5KGMpKXtlLm5leHQ9MjI7YnJlYWt9aWYodT1bXSx0aGlzLl9wYXJzZVZpc2liaWxpdHlFeHByZXNzaW9uKGMsMCx1KSwhKHUubGVuZ3RoPjApKXtlLm5leHQ9MjI7YnJlYWt9cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHt0eXBlOiJPQ01EIixleHByZXNzaW9uOnV9KTtjYXNlIDIyOmlmKGw9bi5nZXQoIk9DR3MiKSwhKEFycmF5LmlzQXJyYXkobCl8fGwgaW5zdGFuY2VvZiBvLkRpY3QpKXtlLm5leHQ9Mjk7YnJlYWt9aWYoZj1bXSxBcnJheS5pc0FycmF5KGwpKXtoPU4obCk7dHJ5e2ZvcihoLnMoKTshKGQ9aC5uKCkpLmRvbmU7KXA9ZC52YWx1ZSxmLnB1c2gocC50b1N0cmluZygpKX1jYXRjaChlKXtoLmUoZSl9ZmluYWxseXtoLmYoKX19ZWxzZSBmLnB1c2gobC5vYmpJZCk7cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHt0eXBlOnMsaWRzOmYscG9saWN5Om4uZ2V0KCJQIilpbnN0YW5jZW9mIG8uTmFtZT9uLmdldCgiUCIpLm5hbWU6bnVsbCxleHByZXNzaW9uOm51bGx9KTtjYXNlIDI5OmlmKCEobCBpbnN0YW5jZW9mIG8uUmVmKSl7ZS5uZXh0PTMxO2JyZWFrfXJldHVybiBlLmFicnVwdCgicmV0dXJuIix7dHlwZTpzLGlkOmwudG9TdHJpbmcoKX0pO2Nhc2UgMzE6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLG51bGwpO2Nhc2UgMzI6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKSxmdW5jdGlvbihlLHQpe3JldHVybiBuLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pfSx7a2V5OiJnZXRPcGVyYXRvckxpc3QiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMscj1lLnN0cmVhbSxuPWUudGFzayxpPWUucmVzb3VyY2VzLHM9ZS5vcGVyYXRvckxpc3QsYz1lLmluaXRpYWxTdGF0ZSx1PXZvaWQgMD09PWM/bnVsbDpjLGw9ZS5mYWxsYmFja0ZvbnREaWN0LGY9dm9pZCAwPT09bD9udWxsOmw7aWYoaT1pfHxvLkRpY3QuZW1wdHksdT11fHxuZXcgWSwhcyl0aHJvdyBuZXcgRXJyb3IoJ2dldE9wZXJhdG9yTGlzdDogbWlzc2luZyAib3BlcmF0b3JMaXN0IiBwYXJhbWV0ZXInKTt2YXIgaD10aGlzLGQ9dGhpcy54cmVmLHA9ITEsZz1uZXcgdi5Mb2NhbEltYWdlQ2FjaGUseT1uZXcgdi5Mb2NhbENvbG9yU3BhY2VDYWNoZSxiPW5ldyB2LkxvY2FsR1N0YXRlQ2FjaGUsaz1uZXcgdi5Mb2NhbFRpbGluZ1BhdHRlcm5DYWNoZSxTPW5ldyBNYXAseD1pLmdldCgiWE9iamVjdCIpfHxvLkRpY3QuZW1wdHksTz1pLmdldCgiUGF0dGVybiIpfHxvLkRpY3QuZW1wdHksQT1uZXcgVyh1KSxDPW5ldyBLKHIsZCxBKSxGPW5ldyBxO2Z1bmN0aW9uIFAoZSl7Zm9yKHZhciB0PTAscj1DLnNhdmVkU3RhdGVzRGVwdGg7dDxyO3QrKylzLmFkZE9wKGEuT1BTLnJlc3RvcmUsW10pfXJldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24gZSh0LHIpe3ZhciBjPWZ1bmN0aW9uKG4pe1Byb21pc2UuYWxsKFtuLHMucmVhZHldKS50aGVuKChmdW5jdGlvbigpe3RyeXtlKHQscil9Y2F0Y2goZSl7cihlKX19KSxyKX07bi5lbnN1cmVOb3RUZXJtaW5hdGVkKCksRi5yZXNldCgpO2Zvcih2YXIgdSxsLHYsVCxFLGosTT17fTshKHU9Ri5jaGVjaygpKSYmKE0uYXJncz1udWxsLEMucmVhZChNKSk7KXt2YXIgXz1NLmFyZ3MsTD1NLmZuO3N3aXRjaCgwfEwpe2Nhc2UgYS5PUFMucGFpbnRYT2JqZWN0OmlmKGo9X1swXWluc3RhbmNlb2Ygby5OYW1lLEU9X1swXS5uYW1lLGope3ZhciBSPWcuZ2V0QnlOYW1lKEUpO2lmKFIpe3MuYWRkSW1hZ2VPcHMoUi5mbixSLmFyZ3MsUi5vcHRpb25hbENvbnRlbnQpLEgoUiksXz1udWxsO2NvbnRpbnVlfX1yZXR1cm4gdm9pZCBjKG5ldyBQcm9taXNlKChmdW5jdGlvbihlLHQpe2lmKCFqKXRocm93IG5ldyBhLkZvcm1hdEVycm9yKCJYT2JqZWN0IG11c3QgYmUgcmVmZXJyZWQgdG8gYnkgbmFtZS4iKTt2YXIgcj14LmdldFJhdyhFKTtpZihyIGluc3RhbmNlb2Ygby5SZWYpe3ZhciBjPWcuZ2V0QnlSZWYocik7aWYoYylyZXR1cm4gcy5hZGRJbWFnZU9wcyhjLmZuLGMuYXJncyxjLm9wdGlvbmFsQ29udGVudCksSChjKSx2b2lkIGUoKTt2YXIgdT1oLmdsb2JhbEltYWdlQ2FjaGUuZ2V0RGF0YShyLGgucGFnZUluZGV4KTtpZih1KXJldHVybiBzLmFkZERlcGVuZGVuY3kodS5vYmpJZCkscy5hZGRJbWFnZU9wcyh1LmZuLHUuYXJncyx1Lm9wdGlvbmFsQ29udGVudCksdm9pZCBlKCk7cj1kLmZldGNoKHIpfWlmKCEociBpbnN0YW5jZW9mIG0uQmFzZVN0cmVhbSkpdGhyb3cgbmV3IGEuRm9ybWF0RXJyb3IoIlhPYmplY3Qgc2hvdWxkIGJlIGEgc3RyZWFtIik7dmFyIGw9ci5kaWN0LmdldCgiU3VidHlwZSIpO2lmKCEobCBpbnN0YW5jZW9mIG8uTmFtZSkpdGhyb3cgbmV3IGEuRm9ybWF0RXJyb3IoIlhPYmplY3Qgc2hvdWxkIGhhdmUgYSBOYW1lIHN1YnR5cGUiKTtpZigiRm9ybSI9PT1sLm5hbWUpcmV0dXJuIEEuc2F2ZSgpLHZvaWQgaC5idWlsZEZvcm1YT2JqZWN0KGkscixudWxsLHMsbixBLnN0YXRlLmNsb25lKCkseSkudGhlbigoZnVuY3Rpb24oKXtBLnJlc3RvcmUoKSxlKCl9KSx0KTtpZigiSW1hZ2UiIT09bC5uYW1lKXtpZigiUFMiIT09bC5uYW1lKXRocm93IG5ldyBhLkZvcm1hdEVycm9yKCJVbmhhbmRsZWQgWE9iamVjdCBzdWJ0eXBlICIuY29uY2F0KGwubmFtZSkpOygwLGEuaW5mbykoIklnbm9yZWQgWE9iamVjdCBzdWJ0eXBlIFBTIiksZSgpfWVsc2UgaC5idWlsZFBhaW50SW1hZ2VYT2JqZWN0KHtyZXNvdXJjZXM6aSxpbWFnZTpyLG9wZXJhdG9yTGlzdDpzLGNhY2hlS2V5OkUsbG9jYWxJbWFnZUNhY2hlOmcsbG9jYWxDb2xvclNwYWNlQ2FjaGU6eX0pLnRoZW4oZSx0KX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7aWYoIShlIGluc3RhbmNlb2YgYS5BYm9ydEV4Y2VwdGlvbikpe2lmKGgub3B0aW9ucy5pZ25vcmVFcnJvcnMpcmV0dXJuIGguaGFuZGxlci5zZW5kKCJVbnN1cHBvcnRlZEZlYXR1cmUiLHtmZWF0dXJlSWQ6YS5VTlNVUFBPUlRFRF9GRUFUVVJFUy5lcnJvclhPYmplY3R9KSx2b2lkKDAsYS53YXJuKSgnZ2V0T3BlcmF0b3JMaXN0IC0gaWdub3JpbmcgWE9iamVjdDogIicuY29uY2F0KGUsJyIuJykpO3Rocm93IGV9fSkpKTtjYXNlIGEuT1BTLnNldEZvbnQ6dmFyIEQ9X1sxXTtyZXR1cm4gdm9pZCBjKGguaGFuZGxlU2V0Rm9udChpLF8sbnVsbCxzLG4sQS5zdGF0ZSxmKS50aGVuKChmdW5jdGlvbihlKXtzLmFkZERlcGVuZGVuY3koZSkscy5hZGRPcChhLk9QUy5zZXRGb250LFtlLERdKX0pKSk7Y2FzZSBhLk9QUy5iZWdpblRleHQ6cD0hMDticmVhaztjYXNlIGEuT1BTLmVuZFRleHQ6cD0hMTticmVhaztjYXNlIGEuT1BTLmVuZElubGluZUltYWdlOnZhciBCPV9bMF0uY2FjaGVLZXk7aWYoQil7dmFyIFU9Zy5nZXRCeU5hbWUoQik7aWYoVSl7cy5hZGRJbWFnZU9wcyhVLmZuLFUuYXJncyxVLm9wdGlvbmFsQ29udGVudCksSChVKSxfPW51bGw7Y29udGludWV9fXJldHVybiB2b2lkIGMoaC5idWlsZFBhaW50SW1hZ2VYT2JqZWN0KHtyZXNvdXJjZXM6aSxpbWFnZTpfWzBdLGlzSW5saW5lOiEwLG9wZXJhdG9yTGlzdDpzLGNhY2hlS2V5OkIsbG9jYWxJbWFnZUNhY2hlOmcsbG9jYWxDb2xvclNwYWNlQ2FjaGU6eX0pKTtjYXNlIGEuT1BTLnNob3dUZXh0OmlmKCFBLnN0YXRlLmZvbnQpe2guZW5zdXJlU3RhdGVGb250KEEuc3RhdGUpO2NvbnRpbnVlfV9bMF09aC5oYW5kbGVUZXh0KF9bMF0sQS5zdGF0ZSk7YnJlYWs7Y2FzZSBhLk9QUy5zaG93U3BhY2VkVGV4dDppZighQS5zdGF0ZS5mb250KXtoLmVuc3VyZVN0YXRlRm9udChBLnN0YXRlKTtjb250aW51ZX12YXIgWCxxPVtdLEc9QS5zdGF0ZSx6PU4oX1swXSk7dHJ5e2Zvcih6LnMoKTshKFg9ei5uKCkpLmRvbmU7KXt2YXIgVyxWPVgudmFsdWU7InN0cmluZyI9PXR5cGVvZiBWPyhXPXEpLnB1c2guYXBwbHkoVyxJKGguaGFuZGxlVGV4dChWLEcpKSk6Im51bWJlciI9PXR5cGVvZiBWJiZxLnB1c2goVil9fWNhdGNoKGUpe3ouZShlKX1maW5hbGx5e3ouZigpfV9bMF09cSxMPWEuT1BTLnNob3dUZXh0O2JyZWFrO2Nhc2UgYS5PUFMubmV4dExpbmVTaG93VGV4dDppZighQS5zdGF0ZS5mb250KXtoLmVuc3VyZVN0YXRlRm9udChBLnN0YXRlKTtjb250aW51ZX1zLmFkZE9wKGEuT1BTLm5leHRMaW5lKSxfWzBdPWguaGFuZGxlVGV4dChfWzBdLEEuc3RhdGUpLEw9YS5PUFMuc2hvd1RleHQ7YnJlYWs7Y2FzZSBhLk9QUy5uZXh0TGluZVNldFNwYWNpbmdTaG93VGV4dDppZighQS5zdGF0ZS5mb250KXtoLmVuc3VyZVN0YXRlRm9udChBLnN0YXRlKTtjb250aW51ZX1zLmFkZE9wKGEuT1BTLm5leHRMaW5lKSxzLmFkZE9wKGEuT1BTLnNldFdvcmRTcGFjaW5nLFtfLnNoaWZ0KCldKSxzLmFkZE9wKGEuT1BTLnNldENoYXJTcGFjaW5nLFtfLnNoaWZ0KCldKSxfWzBdPWguaGFuZGxlVGV4dChfWzBdLEEuc3RhdGUpLEw9YS5PUFMuc2hvd1RleHQ7YnJlYWs7Y2FzZSBhLk9QUy5zZXRUZXh0UmVuZGVyaW5nTW9kZTpBLnN0YXRlLnRleHRSZW5kZXJpbmdNb2RlPV9bMF07YnJlYWs7Y2FzZSBhLk9QUy5zZXRGaWxsQ29sb3JTcGFjZTp2YXIgWT13LkNvbG9yU3BhY2UuZ2V0Q2FjaGVkKF9bMF0sZCx5KTtpZihZKXtBLnN0YXRlLmZpbGxDb2xvclNwYWNlPVk7Y29udGludWV9cmV0dXJuIHZvaWQgYyhoLnBhcnNlQ29sb3JTcGFjZSh7Y3M6X1swXSxyZXNvdXJjZXM6aSxsb2NhbENvbG9yU3BhY2VDYWNoZTp5fSkudGhlbigoZnVuY3Rpb24oZSl7ZSYmKEEuc3RhdGUuZmlsbENvbG9yU3BhY2U9ZSl9KSkpO2Nhc2UgYS5PUFMuc2V0U3Ryb2tlQ29sb3JTcGFjZTp2YXIgSz13LkNvbG9yU3BhY2UuZ2V0Q2FjaGVkKF9bMF0sZCx5KTtpZihLKXtBLnN0YXRlLnN0cm9rZUNvbG9yU3BhY2U9Sztjb250aW51ZX1yZXR1cm4gdm9pZCBjKGgucGFyc2VDb2xvclNwYWNlKHtjczpfWzBdLHJlc291cmNlczppLGxvY2FsQ29sb3JTcGFjZUNhY2hlOnl9KS50aGVuKChmdW5jdGlvbihlKXtlJiYoQS5zdGF0ZS5zdHJva2VDb2xvclNwYWNlPWUpfSkpKTtjYXNlIGEuT1BTLnNldEZpbGxDb2xvcjpfPShUPUEuc3RhdGUuZmlsbENvbG9yU3BhY2UpLmdldFJnYihfLDApLEw9YS5PUFMuc2V0RmlsbFJHQkNvbG9yO2JyZWFrO2Nhc2UgYS5PUFMuc2V0U3Ryb2tlQ29sb3I6Xz0oVD1BLnN0YXRlLnN0cm9rZUNvbG9yU3BhY2UpLmdldFJnYihfLDApLEw9YS5PUFMuc2V0U3Ryb2tlUkdCQ29sb3I7YnJlYWs7Y2FzZSBhLk9QUy5zZXRGaWxsR3JheTpBLnN0YXRlLmZpbGxDb2xvclNwYWNlPXcuQ29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXksXz13LkNvbG9yU3BhY2Uuc2luZ2xldG9ucy5ncmF5LmdldFJnYihfLDApLEw9YS5PUFMuc2V0RmlsbFJHQkNvbG9yO2JyZWFrO2Nhc2UgYS5PUFMuc2V0U3Ryb2tlR3JheTpBLnN0YXRlLnN0cm9rZUNvbG9yU3BhY2U9dy5Db2xvclNwYWNlLnNpbmdsZXRvbnMuZ3JheSxfPXcuQ29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXkuZ2V0UmdiKF8sMCksTD1hLk9QUy5zZXRTdHJva2VSR0JDb2xvcjticmVhaztjYXNlIGEuT1BTLnNldEZpbGxDTVlLQ29sb3I6QS5zdGF0ZS5maWxsQ29sb3JTcGFjZT13LkNvbG9yU3BhY2Uuc2luZ2xldG9ucy5jbXlrLF89dy5Db2xvclNwYWNlLnNpbmdsZXRvbnMuY215ay5nZXRSZ2IoXywwKSxMPWEuT1BTLnNldEZpbGxSR0JDb2xvcjticmVhaztjYXNlIGEuT1BTLnNldFN0cm9rZUNNWUtDb2xvcjpBLnN0YXRlLnN0cm9rZUNvbG9yU3BhY2U9dy5Db2xvclNwYWNlLnNpbmdsZXRvbnMuY215ayxfPXcuQ29sb3JTcGFjZS5zaW5nbGV0b25zLmNteWsuZ2V0UmdiKF8sMCksTD1hLk9QUy5zZXRTdHJva2VSR0JDb2xvcjticmVhaztjYXNlIGEuT1BTLnNldEZpbGxSR0JDb2xvcjpBLnN0YXRlLmZpbGxDb2xvclNwYWNlPXcuQ29sb3JTcGFjZS5zaW5nbGV0b25zLnJnYixfPXcuQ29sb3JTcGFjZS5zaW5nbGV0b25zLnJnYi5nZXRSZ2IoXywwKTticmVhaztjYXNlIGEuT1BTLnNldFN0cm9rZVJHQkNvbG9yOkEuc3RhdGUuc3Ryb2tlQ29sb3JTcGFjZT13LkNvbG9yU3BhY2Uuc2luZ2xldG9ucy5yZ2IsXz13LkNvbG9yU3BhY2Uuc2luZ2xldG9ucy5yZ2IuZ2V0UmdiKF8sMCk7YnJlYWs7Y2FzZSBhLk9QUy5zZXRGaWxsQ29sb3JOOmlmKCJQYXR0ZXJuIj09PShUPUEuc3RhdGUuZmlsbENvbG9yU3BhY2UpLm5hbWUpcmV0dXJuIHZvaWQgYyhoLmhhbmRsZUNvbG9yTihzLGEuT1BTLnNldEZpbGxDb2xvck4sXyxULE8saSxuLHksayxTKSk7Xz1ULmdldFJnYihfLDApLEw9YS5PUFMuc2V0RmlsbFJHQkNvbG9yO2JyZWFrO2Nhc2UgYS5PUFMuc2V0U3Ryb2tlQ29sb3JOOmlmKCJQYXR0ZXJuIj09PShUPUEuc3RhdGUuc3Ryb2tlQ29sb3JTcGFjZSkubmFtZSlyZXR1cm4gdm9pZCBjKGguaGFuZGxlQ29sb3JOKHMsYS5PUFMuc2V0U3Ryb2tlQ29sb3JOLF8sVCxPLGksbix5LGssUykpO189VC5nZXRSZ2IoXywwKSxMPWEuT1BTLnNldFN0cm9rZVJHQkNvbG9yO2JyZWFrO2Nhc2UgYS5PUFMuc2hhZGluZ0ZpbGw6dmFyIEo9aS5nZXQoIlNoYWRpbmciKTtpZighSil0aHJvdyBuZXcgYS5Gb3JtYXRFcnJvcigiTm8gc2hhZGluZyByZXNvdXJjZSBmb3VuZCIpO3ZhciBaPUouZ2V0KF9bMF0ubmFtZSk7aWYoIVopdGhyb3cgbmV3IGEuRm9ybWF0RXJyb3IoIk5vIHNoYWRpbmcgb2JqZWN0IGZvdW5kIik7Xz1baC5wYXJzZVNoYWRpbmcoe3NoYWRpbmc6WixyZXNvdXJjZXM6aSxsb2NhbENvbG9yU3BhY2VDYWNoZTp5LGxvY2FsU2hhZGluZ1BhdHRlcm5DYWNoZTpTfSldLEw9YS5PUFMuc2hhZGluZ0ZpbGw7YnJlYWs7Y2FzZSBhLk9QUy5zZXRHU3RhdGU6aWYoaj1fWzBdaW5zdGFuY2VvZiBvLk5hbWUsRT1fWzBdLm5hbWUsail7dmFyIFE9Yi5nZXRCeU5hbWUoRSk7aWYoUSl7US5sZW5ndGg+MCYmcy5hZGRPcChhLk9QUy5zZXRHU3RhdGUsW1FdKSxfPW51bGw7Y29udGludWV9fXJldHVybiB2b2lkIGMobmV3IFByb21pc2UoKGZ1bmN0aW9uKGUsdCl7aWYoIWopdGhyb3cgbmV3IGEuRm9ybWF0RXJyb3IoIkdTdGF0ZSBtdXN0IGJlIHJlZmVycmVkIHRvIGJ5IG5hbWUuIik7dmFyIHI9aS5nZXQoIkV4dEdTdGF0ZSIpO2lmKCEociBpbnN0YW5jZW9mIG8uRGljdCkpdGhyb3cgbmV3IGEuRm9ybWF0RXJyb3IoIkV4dEdTdGF0ZSBzaG91bGQgYmUgYSBkaWN0aW9uYXJ5LiIpO3ZhciBjPXIuZ2V0KEUpO2lmKCEoYyBpbnN0YW5jZW9mIG8uRGljdCkpdGhyb3cgbmV3IGEuRm9ybWF0RXJyb3IoIkdTdGF0ZSBzaG91bGQgYmUgYSBkaWN0aW9uYXJ5LiIpO2guc2V0R1N0YXRlKHtyZXNvdXJjZXM6aSxnU3RhdGU6YyxvcGVyYXRvckxpc3Q6cyxjYWNoZUtleTpFLHRhc2s6bixzdGF0ZU1hbmFnZXI6QSxsb2NhbEdTdGF0ZUNhY2hlOmIsbG9jYWxDb2xvclNwYWNlQ2FjaGU6eX0pLnRoZW4oZSx0KX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7aWYoIShlIGluc3RhbmNlb2YgYS5BYm9ydEV4Y2VwdGlvbikpe2lmKGgub3B0aW9ucy5pZ25vcmVFcnJvcnMpcmV0dXJuIGguaGFuZGxlci5zZW5kKCJVbnN1cHBvcnRlZEZlYXR1cmUiLHtmZWF0dXJlSWQ6YS5VTlNVUFBPUlRFRF9GRUFUVVJFUy5lcnJvckV4dEdTdGF0ZX0pLHZvaWQoMCxhLndhcm4pKCdnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBFeHRHU3RhdGU6ICInLmNvbmNhdChlLCciLicpKTt0aHJvdyBlfX0pKSk7Y2FzZSBhLk9QUy5tb3ZlVG86Y2FzZSBhLk9QUy5saW5lVG86Y2FzZSBhLk9QUy5jdXJ2ZVRvOmNhc2UgYS5PUFMuY3VydmVUbzI6Y2FzZSBhLk9QUy5jdXJ2ZVRvMzpjYXNlIGEuT1BTLmNsb3NlUGF0aDpjYXNlIGEuT1BTLnJlY3RhbmdsZTpoLmJ1aWxkUGF0aChzLEwsXyxwKTtjb250aW51ZTtjYXNlIGEuT1BTLm1hcmtQb2ludDpjYXNlIGEuT1BTLm1hcmtQb2ludFByb3BzOmNhc2UgYS5PUFMuYmVnaW5Db21wYXQ6Y2FzZSBhLk9QUy5lbmRDb21wYXQ6Y29udGludWU7Y2FzZSBhLk9QUy5iZWdpbk1hcmtlZENvbnRlbnRQcm9wczppZighKF9bMF1pbnN0YW5jZW9mIG8uTmFtZSkpeygwLGEud2FybikoIkV4cGVjdGVkIG5hbWUgZm9yIGJlZ2luTWFya2VkQ29udGVudFByb3BzIGFyZzA9Ii5jb25jYXQoX1swXSkpO2NvbnRpbnVlfWlmKCJPQyI9PT1fWzBdLm5hbWUpcmV0dXJuIHZvaWQgYyhoLnBhcnNlTWFya2VkQ29udGVudFByb3BzKF9bMV0saSkudGhlbigoZnVuY3Rpb24oZSl7cy5hZGRPcChhLk9QUy5iZWdpbk1hcmtlZENvbnRlbnRQcm9wcyxbIk9DIixlXSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe2lmKCEoZSBpbnN0YW5jZW9mIGEuQWJvcnRFeGNlcHRpb24pKXtpZihoLm9wdGlvbnMuaWdub3JlRXJyb3JzKXJldHVybiBoLmhhbmRsZXIuc2VuZCgiVW5zdXBwb3J0ZWRGZWF0dXJlIix7ZmVhdHVyZUlkOmEuVU5TVVBQT1JURURfRkVBVFVSRVMuZXJyb3JNYXJrZWRDb250ZW50fSksdm9pZCgwLGEud2FybikoJ2dldE9wZXJhdG9yTGlzdCAtIGlnbm9yaW5nIGJlZ2luTWFya2VkQ29udGVudFByb3BzOiAiJy5jb25jYXQoZSwnIi4nKSk7dGhyb3cgZX19KSkpO189W19bMF0ubmFtZSxfWzFdaW5zdGFuY2VvZiBvLkRpY3Q/X1sxXS5nZXQoIk1DSUQiKTpudWxsXTticmVhaztjYXNlIGEuT1BTLmJlZ2luTWFya2VkQ29udGVudDpjYXNlIGEuT1BTLmVuZE1hcmtlZENvbnRlbnQ6ZGVmYXVsdDppZihudWxsIT09Xyl7Zm9yKGw9MCx2PV8ubGVuZ3RoO2w8diYmIShfW2xdaW5zdGFuY2VvZiBvLkRpY3QpO2wrKyk7aWYobDx2KXsoMCxhLndhcm4pKCJnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBvcGVyYXRvcjogIitMKTtjb250aW51ZX19fXMuYWRkT3AoTCxfKX11P2MoJCk6KFAoKSx0KCkpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtpZighKGUgaW5zdGFuY2VvZiBhLkFib3J0RXhjZXB0aW9uKSl7aWYodC5vcHRpb25zLmlnbm9yZUVycm9ycylyZXR1cm4gdC5oYW5kbGVyLnNlbmQoIlVuc3VwcG9ydGVkRmVhdHVyZSIse2ZlYXR1cmVJZDphLlVOU1VQUE9SVEVEX0ZFQVRVUkVTLmVycm9yT3BlcmF0b3JMaXN0fSksKDAsYS53YXJuKSgnZ2V0T3BlcmF0b3JMaXN0IC0gaWdub3JpbmcgZXJyb3JzIGR1cmluZyAiJy5jb25jYXQobi5uYW1lLCciICcpKyd0YXNrOiAiJy5jb25jYXQoZSwnIi4nKSksdm9pZCBQKCk7dGhyb3cgZX19KSl9fSx7a2V5OiJnZXRUZXh0Q29udGVudCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxyPWUuc3RyZWFtLG49ZS50YXNrLGk9ZS5yZXNvdXJjZXMscz1lLnN0YXRlTWFuYWdlcixjPXZvaWQgMD09PXM/bnVsbDpzLHU9ZS5jb21iaW5lVGV4dEl0ZW1zLGw9dm9pZCAwIT09dSYmdSxmPWUuaW5jbHVkZU1hcmtlZENvbnRlbnQsaD12b2lkIDAhPT1mJiZmLGQ9ZS5zaW5rLHA9ZS5zZWVuU3R5bGVzLGc9dm9pZCAwPT09cD9uZXcgU2V0OnAseT1lLnZpZXdCb3gsdz1lLm1hcmtlZENvbnRlbnREYXRhLGs9dm9pZCAwPT09dz9udWxsOnc7aT1pfHxvLkRpY3QuZW1wdHksYz1jfHxuZXcgVyhuZXcgViksaCYmKGs9a3x8e2xldmVsOjB9KTt2YXIgUz17aXRlbXM6W10sc3R5bGVzOk9iamVjdC5jcmVhdGUobnVsbCl9LHg9e2luaXRpYWxpemVkOiExLHN0cjpbXSx0b3RhbFdpZHRoOjAsdG90YWxIZWlnaHQ6MCx3aWR0aDowLGhlaWdodDowLHZlcnRpY2FsOiExLHByZXZUcmFuc2Zvcm06bnVsbCx0ZXh0QWR2YW5jZVNjYWxlOjAsc3BhY2VJbkZsb3dNaW46MCxzcGFjZUluRmxvd01heDowLHRyYWNraW5nU3BhY2VNaW46MS8wLG5lZ2F0aXZlU3BhY2VNYXg6LTEvMCxub3RBU3BhY2U6LTEvMCx0cmFuc2Zvcm06bnVsbCxmb250TmFtZTpudWxsLGhhc0VPTDohMX0sTz1bIiAiLCIgIl0sQT0wO2Z1bmN0aW9uIEMoZSl7dmFyIHQ9KEErMSklMixyPSIgIiE9PU9bQV0mJiIgIj09PU9bdF07cmV0dXJuIE9bQV09ZSxBPXQscn1mdW5jdGlvbiBGKCl7T1swXT1PWzFdPSIgIixBPTB9dmFyIFAsST0uMSxFPS4wMyxqPS0uMixNPS4xLF89LjYsTD10aGlzLFI9dGhpcy54cmVmLE49W10sRD1udWxsLEI9bmV3IHYuTG9jYWxJbWFnZUNhY2hlLFU9bmV3IHYuTG9jYWxHU3RhdGVDYWNoZSxYPW5ldyBLKHIsUixjKTtmdW5jdGlvbiBIKCl7dmFyIGU9UC5mb250LHQ9W1AuZm9udFNpemUqUC50ZXh0SFNjYWxlLDAsMCxQLmZvbnRTaXplLDAsUC50ZXh0UmlzZV07aWYoZS5pc1R5cGUzRm9udCYmKFAuZm9udFNpemU8PTF8fGUuaXNDaGFyQkJveCkmJiEoMCxhLmlzQXJyYXlFcXVhbCkoUC5mb250TWF0cml4LGEuRk9OVF9JREVOVElUWV9NQVRSSVgpKXt2YXIgcj1lLmJib3hbM10tZS5iYm94WzFdO3I+MCYmKHRbM10qPXIqUC5mb250TWF0cml4WzNdKX1yZXR1cm4gYS5VdGlsLnRyYW5zZm9ybShQLmN0bSxhLlV0aWwudHJhbnNmb3JtKFAudGV4dE1hdHJpeCx0KSl9ZnVuY3Rpb24gRygpe2lmKHguaW5pdGlhbGl6ZWQpcmV0dXJuIHg7dmFyIGU9UCx0PWUuZm9udCxyPWUubG9hZGVkTmFtZTtnLmhhcyhyKXx8KGcuYWRkKHIpLFMuc3R5bGVzW3JdPXtmb250RmFtaWx5OnQuZmFsbGJhY2tOYW1lLGFzY2VudDp0LmFzY2VudCxkZXNjZW50OnQuZGVzY2VudCx2ZXJ0aWNhbDp0LnZlcnRpY2FsfSkseC5mb250TmFtZT1yO3ZhciBuPXgudHJhbnNmb3JtPUgoKTt0LnZlcnRpY2FsPyh4LndpZHRoPXgudG90YWxXaWR0aD1NYXRoLmh5cG90KG5bMF0sblsxXSkseC5oZWlnaHQ9eC50b3RhbEhlaWdodD0wLHgudmVydGljYWw9ITApOih4LndpZHRoPXgudG90YWxXaWR0aD0wLHguaGVpZ2h0PXgudG90YWxIZWlnaHQ9TWF0aC5oeXBvdChuWzJdLG5bM10pLHgudmVydGljYWw9ITEpO3ZhciBhPU1hdGguaHlwb3QoUC50ZXh0TGluZU1hdHJpeFswXSxQLnRleHRMaW5lTWF0cml4WzFdKSxpPU1hdGguaHlwb3QoUC5jdG1bMF0sUC5jdG1bMV0pO3JldHVybiB4LnRleHRBZHZhbmNlU2NhbGU9aSphLHgudHJhY2tpbmdTcGFjZU1pbj1QLmZvbnRTaXplKkkseC5ub3RBU3BhY2U9UC5mb250U2l6ZSpFLHgubmVnYXRpdmVTcGFjZU1heD1QLmZvbnRTaXplKmoseC5zcGFjZUluRmxvd01pbj1QLmZvbnRTaXplKk0seC5zcGFjZUluRmxvd01heD1QLmZvbnRTaXplKl8seC5oYXNFT0w9ITEseC5pbml0aWFsaXplZD0hMCx4fWZ1bmN0aW9uIHooKXtpZih4LmluaXRpYWxpemVkKXt2YXIgZT1NYXRoLmh5cG90KFAudGV4dExpbmVNYXRyaXhbMF0sUC50ZXh0TGluZU1hdHJpeFsxXSksdD1NYXRoLmh5cG90KFAuY3RtWzBdLFAuY3RtWzFdKSplO3QhPT14LnRleHRBZHZhbmNlU2NhbGUmJih4LnZlcnRpY2FsPyh4LnRvdGFsSGVpZ2h0Kz14LmhlaWdodCp4LnRleHRBZHZhbmNlU2NhbGUseC5oZWlnaHQ9MCk6KHgudG90YWxXaWR0aCs9eC53aWR0aCp4LnRleHRBZHZhbmNlU2NhbGUseC53aWR0aD0wKSx4LnRleHRBZHZhbmNlU2NhbGU9dCl9fWZ1bmN0aW9uIFkoZSx0KXtyZXR1cm4gTC5sb2FkRm9udChlLHQsaSkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIGUuZm9udC5pc1R5cGUzRm9udD9lLmxvYWRUeXBlM0RhdGEoTCxpLG4pLmNhdGNoKChmdW5jdGlvbigpe30pKS50aGVuKChmdW5jdGlvbigpe3JldHVybiBlfSkpOmV9KSkudGhlbigoZnVuY3Rpb24oZSl7UC5sb2FkZWROYW1lPWUubG9hZGVkTmFtZSxQLmZvbnQ9ZS5mb250LFAuZm9udE1hdHJpeD1lLmZvbnQuZm9udE1hdHJpeHx8YS5GT05UX0lERU5USVRZX01BVFJJWH0pKX1mdW5jdGlvbiBKKGUsdCxyKXt2YXIgbj1NYXRoLmh5cG90KHJbMF0sclsxXSk7cmV0dXJuWyhyWzBdKmUrclsxXSp0KS9uLChyWzJdKmUrclszXSp0KS9uXX1mdW5jdGlvbiBaKCl7dmFyIGU9SCgpLHQ9ZVs0XSxyPWVbNV0sbj10LXlbMF0sYT1yLXlbMV07aWYobjwwfHxuPnlbMl18fGE8MHx8YT55WzNdKXJldHVybiExO2lmKCFsfHwhUC5mb250fHwheC5wcmV2VHJhbnNmb3JtKXJldHVybiEwO3ZhciBpPXgucHJldlRyYW5zZm9ybVs0XSxvPXgucHJldlRyYW5zZm9ybVs1XTtpZihpPT09dCYmbz09PXIpcmV0dXJuITA7dmFyIHM9LTE7c3dpdGNoKGVbMF0mJjA9PT1lWzFdJiYwPT09ZVsyXT9zPWVbMF0+MD8wOjE4MDplWzFdJiYwPT09ZVswXSYmMD09PWVbM10mJihzPWVbMV0+MD85MDoyNzApLHMpe2Nhc2UgMDpicmVhaztjYXNlIDkwOnZhciBjPVtyLHRdO3Q9Y1swXSxyPWNbMV07dmFyIHU9W28saV07aT11WzBdLG89dVsxXTticmVhaztjYXNlIDE4MDp2YXIgZj1bLXQsLXIsLWksLW9dO3Q9ZlswXSxyPWZbMV0saT1mWzJdLG89ZlszXTticmVhaztjYXNlIDI3MDp2YXIgaD1bLXIsLXRdO3Q9aFswXSxyPWhbMV07dmFyIGQ9Wy1vLC1pXTtpPWRbMF0sbz1kWzFdO2JyZWFrO2RlZmF1bHQ6dmFyIHA9VChKKHQscixlKSwyKTt0PXBbMF0scj1wWzFdO3ZhciBnPVQoSihpLG8seC5wcmV2VHJhbnNmb3JtKSwyKTtpPWdbMF0sbz1nWzFdfWlmKFAuZm9udC52ZXJ0aWNhbCl7dmFyIHY9KG8tcikveC50ZXh0QWR2YW5jZVNjYWxlLG09dC1pLGI9TWF0aC5zaWduKHguaGVpZ2h0KTtyZXR1cm4gdjxiKngubmVnYXRpdmVTcGFjZU1heD9NYXRoLmFicyhtKT4uNSp4LndpZHRoPyhlZSgpLCEwKTooRigpLHJlKCksITApOk1hdGguYWJzKG0pPngud2lkdGg/KGVlKCksITApOih2PD1iKngubm90QVNwYWNlJiZGKCksdjw9Yip4LnRyYWNraW5nU3BhY2VNaW4/eC5oZWlnaHQrPXY6dGUodix4LnByZXZUcmFuc2Zvcm0sYil8fCgwPT09eC5zdHIubGVuZ3RoPyhGKCksUy5pdGVtcy5wdXNoKHtzdHI6IiAiLGRpcjoibHRyIix3aWR0aDowLGhlaWdodDpNYXRoLmFicyh2KSx0cmFuc2Zvcm06eC5wcmV2VHJhbnNmb3JtLGZvbnROYW1lOnguZm9udE5hbWUsaGFzRU9MOiExfSkpOnguaGVpZ2h0Kz12KSwhMCl9dmFyIHc9KHQtaSkveC50ZXh0QWR2YW5jZVNjYWxlLGs9ci1vLE89TWF0aC5zaWduKHgud2lkdGgpO3JldHVybiB3PE8qeC5uZWdhdGl2ZVNwYWNlTWF4P01hdGguYWJzKGspPi41KnguaGVpZ2h0PyhlZSgpLCEwKTooRigpLHJlKCksITApOk1hdGguYWJzKGspPnguaGVpZ2h0PyhlZSgpLCEwKToodzw9Typ4Lm5vdEFTcGFjZSYmRigpLHc8PU8qeC50cmFja2luZ1NwYWNlTWluP3gud2lkdGgrPXc6dGUodyx4LnByZXZUcmFuc2Zvcm0sTyl8fCgwPT09eC5zdHIubGVuZ3RoPyhGKCksUy5pdGVtcy5wdXNoKHtzdHI6IiAiLGRpcjoibHRyIix3aWR0aDpNYXRoLmFicyh3KSxoZWlnaHQ6MCx0cmFuc2Zvcm06eC5wcmV2VHJhbnNmb3JtLGZvbnROYW1lOnguZm9udE5hbWUsaGFzRU9MOiExfSkpOngud2lkdGgrPXcpLCEwKX1mdW5jdGlvbiBRKGUpe3ZhciB0PWUuY2hhcnMscj1lLmV4dHJhU3BhY2luZyxuPVAuZm9udDtpZih0KWZvcih2YXIgYT1uLmNoYXJzVG9HbHlwaHModCksaT1QLmZvbnRNYXRyaXhbMF0qUC5mb250U2l6ZSxvPTAscz1hLmxlbmd0aDtvPHM7bysrKXt2YXIgYz1hW29dLHU9Yy5jYXRlZ29yeTtpZighdS5pc0ludmlzaWJsZUZvcm1hdE1hcmspe3ZhciBsPVAuY2hhclNwYWNpbmcrKG8rMT09PXM/cjowKSxmPWMud2lkdGg7bi52ZXJ0aWNhbCYmKGY9Yy52bWV0cmljP2Mudm1ldHJpY1swXTotZik7dmFyIGg9ZippO2lmKHUuaXNXaGl0ZXNwYWNlKW4udmVydGljYWw/KGwrPS1oK1Aud29yZFNwYWNpbmcsUC50cmFuc2xhdGVUZXh0TWF0cml4KDAsLWwpKToobCs9aCtQLndvcmRTcGFjaW5nLFAudHJhbnNsYXRlVGV4dE1hdHJpeChsKlAudGV4dEhTY2FsZSwwKSksQygiICIpO2Vsc2UgaWYoWigpKXt2YXIgZD1HKCk7dS5pc1plcm9XaWR0aERpYWNyaXRpYyYmKGg9MCksbi52ZXJ0aWNhbD8oUC50cmFuc2xhdGVUZXh0TWF0cml4KDAsaCksaD1NYXRoLmFicyhoKSxkLmhlaWdodCs9aCk6KGgqPVAudGV4dEhTY2FsZSxQLnRyYW5zbGF0ZVRleHRNYXRyaXgoaCwwKSxkLndpZHRoKz1oKSxoJiYoZC5wcmV2VHJhbnNmb3JtPUgoKSk7dmFyIHA9Yy5ub3JtYWxpemVkVW5pY29kZTtDKHApJiZkLnN0ci5wdXNoKCIgIiksZC5zdHIucHVzaChwKSxsJiYobi52ZXJ0aWNhbD9QLnRyYW5zbGF0ZVRleHRNYXRyaXgoMCwtbCk6UC50cmFuc2xhdGVUZXh0TWF0cml4KGwqUC50ZXh0SFNjYWxlLDApKX19fWVsc2V7dmFyIGc9UC5jaGFyU3BhY2luZytyO2cmJihuLnZlcnRpY2FsP1AudHJhbnNsYXRlVGV4dE1hdHJpeCgwLC1nKTpQLnRyYW5zbGF0ZVRleHRNYXRyaXgoZypQLnRleHRIU2NhbGUsMCkpfX1mdW5jdGlvbiBlZSgpe0YoKSx4LmluaXRpYWxpemVkPyh4Lmhhc0VPTD0hMCxyZSgpKTpTLml0ZW1zLnB1c2goe3N0cjoiIixkaXI6Imx0ciIsd2lkdGg6MCxoZWlnaHQ6MCx0cmFuc2Zvcm06SCgpLGZvbnROYW1lOlAubG9hZGVkTmFtZSxoYXNFT0w6ITB9KX1mdW5jdGlvbiB0ZShlLHQscil7aWYocip4LnNwYWNlSW5GbG93TWluPD1lJiZlPD1yKnguc3BhY2VJbkZsb3dNYXgpcmV0dXJuIHguaW5pdGlhbGl6ZWQmJihGKCkseC5zdHIucHVzaCgiICIpKSwhMTt2YXIgbj14LmZvbnROYW1lLGE9MDtyZXR1cm4geC52ZXJ0aWNhbCYmKGE9ZSxlPTApLHJlKCksRigpLFMuaXRlbXMucHVzaCh7c3RyOiIgIixkaXI6Imx0ciIsd2lkdGg6TWF0aC5hYnMoZSksaGVpZ2h0Ok1hdGguYWJzKGEpLHRyYW5zZm9ybTp0fHxIKCksZm9udE5hbWU6bixoYXNFT0w6ITF9KSwhMH1mdW5jdGlvbiByZSgpe3ZhciBlLHQscjt4LmluaXRpYWxpemVkJiZ4LnN0ciYmKHgudmVydGljYWw/eC50b3RhbEhlaWdodCs9eC5oZWlnaHQqeC50ZXh0QWR2YW5jZVNjYWxlOngudG90YWxXaWR0aCs9eC53aWR0aCp4LnRleHRBZHZhbmNlU2NhbGUsUy5pdGVtcy5wdXNoKCh0PShlPXgpLnN0ci5qb2luKCIiKSx7c3RyOihyPSgwLGIuYmlkaSkodCwtMSxlLnZlcnRpY2FsKSkuc3RyLGRpcjpyLmRpcix3aWR0aDpNYXRoLmFicyhlLnRvdGFsV2lkdGgpLGhlaWdodDpNYXRoLmFicyhlLnRvdGFsSGVpZ2h0KSx0cmFuc2Zvcm06ZS50cmFuc2Zvcm0sZm9udE5hbWU6ZS5mb250TmFtZSxoYXNFT0w6ZS5oYXNFT0x9KSkseC5pbml0aWFsaXplZD0hMSx4LnN0ci5sZW5ndGg9MCl9ZnVuY3Rpb24gbmUoKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSYmYXJndW1lbnRzWzBdLHQ9Uy5pdGVtcy5sZW5ndGg7MCE9PXQmJihlJiZ0PDEwfHwoZC5lbnF1ZXVlKFMsdCksUy5pdGVtcz1bXSxTLnN0eWxlcz1PYmplY3QuY3JlYXRlKG51bGwpKSl9dmFyIGFlPW5ldyBxO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24gZSh0LHIpe3ZhciBzPWZ1bmN0aW9uKG4pe25lKCEwKSxQcm9taXNlLmFsbChbbixkLnJlYWR5XSkudGhlbigoZnVuY3Rpb24oKXt0cnl7ZSh0LHIpfWNhdGNoKGUpe3IoZSl9fSkscil9O24uZW5zdXJlTm90VGVybWluYXRlZCgpLGFlLnJlc2V0KCk7Zm9yKHZhciB1LGY9e30scD1bXTshKHU9YWUuY2hlY2soKSkmJihwLmxlbmd0aD0wLGYuYXJncz1wLFgucmVhZChmKSk7KXtQPWMuc3RhdGU7dmFyIHY9Zi5mbjtzd2l0Y2gocD1mLmFyZ3MsMHx2KXtjYXNlIGEuT1BTLnNldEZvbnQ6dmFyIGI9cFswXS5uYW1lLHc9cFsxXTtpZihQLmZvbnQmJmI9PT1QLmZvbnROYW1lJiZ3PT09UC5mb250U2l6ZSlicmVhaztyZXR1cm4gcmUoKSxQLmZvbnROYW1lPWIsUC5mb250U2l6ZT13LHZvaWQgcyhZKGIsbnVsbCkpO2Nhc2UgYS5PUFMuc2V0VGV4dFJpc2U6UC50ZXh0UmlzZT1wWzBdO2JyZWFrO2Nhc2UgYS5PUFMuc2V0SFNjYWxlOlAudGV4dEhTY2FsZT1wWzBdLzEwMDticmVhaztjYXNlIGEuT1BTLnNldExlYWRpbmc6UC5sZWFkaW5nPXBbMF07YnJlYWs7Y2FzZSBhLk9QUy5tb3ZlVGV4dDpQLnRyYW5zbGF0ZVRleHRMaW5lTWF0cml4KHBbMF0scFsxXSksUC50ZXh0TWF0cml4PVAudGV4dExpbmVNYXRyaXguc2xpY2UoKTticmVhaztjYXNlIGEuT1BTLnNldExlYWRpbmdNb3ZlVGV4dDpQLmxlYWRpbmc9LXBbMV0sUC50cmFuc2xhdGVUZXh0TGluZU1hdHJpeChwWzBdLHBbMV0pLFAudGV4dE1hdHJpeD1QLnRleHRMaW5lTWF0cml4LnNsaWNlKCk7YnJlYWs7Y2FzZSBhLk9QUy5uZXh0TGluZTpQLmNhcnJpYWdlUmV0dXJuKCk7YnJlYWs7Y2FzZSBhLk9QUy5zZXRUZXh0TWF0cml4OlAuc2V0VGV4dE1hdHJpeChwWzBdLHBbMV0scFsyXSxwWzNdLHBbNF0scFs1XSksUC5zZXRUZXh0TGluZU1hdHJpeChwWzBdLHBbMV0scFsyXSxwWzNdLHBbNF0scFs1XSkseigpO2JyZWFrO2Nhc2UgYS5PUFMuc2V0Q2hhclNwYWNpbmc6UC5jaGFyU3BhY2luZz1wWzBdO2JyZWFrO2Nhc2UgYS5PUFMuc2V0V29yZFNwYWNpbmc6UC53b3JkU3BhY2luZz1wWzBdO2JyZWFrO2Nhc2UgYS5PUFMuYmVnaW5UZXh0OlAudGV4dE1hdHJpeD1hLklERU5USVRZX01BVFJJWC5zbGljZSgpLFAudGV4dExpbmVNYXRyaXg9YS5JREVOVElUWV9NQVRSSVguc2xpY2UoKTticmVhaztjYXNlIGEuT1BTLnNob3dTcGFjZWRUZXh0OmlmKCFjLnN0YXRlLmZvbnQpe0wuZW5zdXJlU3RhdGVGb250KGMuc3RhdGUpO2NvbnRpbnVlfWZvcih2YXIgeD0oUC5mb250LnZlcnRpY2FsPzE6LTEpKlAuZm9udFNpemUvMWUzLE89cFswXSxBPTAsQz1PLmxlbmd0aDtBPEMtMTtBKyspe3ZhciBGPU9bQV07aWYoInN0cmluZyI9PXR5cGVvZiBGKU4ucHVzaChGKTtlbHNlIGlmKCJudW1iZXIiPT10eXBlb2YgRiYmMCE9PUYpe3ZhciBUPU4uam9pbigiIik7Ti5sZW5ndGg9MCxRKHtjaGFyczpULGV4dHJhU3BhY2luZzpGKnh9KX19dmFyIEk9Ty5hdCgtMSk7aWYoInN0cmluZyI9PXR5cGVvZiBJJiZOLnB1c2goSSksTi5sZW5ndGg+MCl7dmFyIEU9Ti5qb2luKCIiKTtOLmxlbmd0aD0wLFEoe2NoYXJzOkUsZXh0cmFTcGFjaW5nOjB9KX1icmVhaztjYXNlIGEuT1BTLnNob3dUZXh0OmlmKCFjLnN0YXRlLmZvbnQpe0wuZW5zdXJlU3RhdGVGb250KGMuc3RhdGUpO2NvbnRpbnVlfVEoe2NoYXJzOnBbMF0sZXh0cmFTcGFjaW5nOjB9KTticmVhaztjYXNlIGEuT1BTLm5leHRMaW5lU2hvd1RleHQ6aWYoIWMuc3RhdGUuZm9udCl7TC5lbnN1cmVTdGF0ZUZvbnQoYy5zdGF0ZSk7Y29udGludWV9UC5jYXJyaWFnZVJldHVybigpLFEoe2NoYXJzOnBbMF0sZXh0cmFTcGFjaW5nOjB9KTticmVhaztjYXNlIGEuT1BTLm5leHRMaW5lU2V0U3BhY2luZ1Nob3dUZXh0OmlmKCFjLnN0YXRlLmZvbnQpe0wuZW5zdXJlU3RhdGVGb250KGMuc3RhdGUpO2NvbnRpbnVlfVAud29yZFNwYWNpbmc9cFswXSxQLmNoYXJTcGFjaW5nPXBbMV0sUC5jYXJyaWFnZVJldHVybigpLFEoe2NoYXJzOnBbMl0sZXh0cmFTcGFjaW5nOjB9KTticmVhaztjYXNlIGEuT1BTLnBhaW50WE9iamVjdDpyZSgpLER8fChEPWkuZ2V0KCJYT2JqZWN0Iil8fG8uRGljdC5lbXB0eSk7dmFyIGo9cFswXWluc3RhbmNlb2Ygby5OYW1lLE09cFswXS5uYW1lO2lmKGomJkIuZ2V0QnlOYW1lKE0pKWJyZWFrO3JldHVybiB2b2lkIHMobmV3IFByb21pc2UoKGZ1bmN0aW9uKGUsdCl7aWYoIWopdGhyb3cgbmV3IGEuRm9ybWF0RXJyb3IoIlhPYmplY3QgbXVzdCBiZSByZWZlcnJlZCB0byBieSBuYW1lLiIpO3ZhciByPUQuZ2V0UmF3KE0pO2lmKHIgaW5zdGFuY2VvZiBvLlJlZil7aWYoQi5nZXRCeVJlZihyKSlyZXR1cm4gdm9pZCBlKCk7aWYoTC5nbG9iYWxJbWFnZUNhY2hlLmdldERhdGEocixMLnBhZ2VJbmRleCkpcmV0dXJuIHZvaWQgZSgpO3I9Ui5mZXRjaChyKX1pZighKHIgaW5zdGFuY2VvZiBtLkJhc2VTdHJlYW0pKXRocm93IG5ldyBhLkZvcm1hdEVycm9yKCJYT2JqZWN0IHNob3VsZCBiZSBhIHN0cmVhbSIpO3ZhciBzPXIuZGljdC5nZXQoIlN1YnR5cGUiKTtpZighKHMgaW5zdGFuY2VvZiBvLk5hbWUpKXRocm93IG5ldyBhLkZvcm1hdEVycm9yKCJYT2JqZWN0IHNob3VsZCBoYXZlIGEgTmFtZSBzdWJ0eXBlIik7aWYoIkZvcm0iIT09cy5uYW1lKXJldHVybiBCLnNldChNLHIuZGljdC5vYmpJZCwhMCksdm9pZCBlKCk7dmFyIHU9Yy5zdGF0ZS5jbG9uZSgpLGY9bmV3IFcodSkscD1yLmRpY3QuZ2V0QXJyYXkoIk1hdHJpeCIpO0FycmF5LmlzQXJyYXkocCkmJjY9PT1wLmxlbmd0aCYmZi50cmFuc2Zvcm0ocCksbmUoKTt2YXIgdj17ZW5xdWV1ZUludm9rZWQ6ITEsZW5xdWV1ZTpmdW5jdGlvbihlLHQpe3RoaXMuZW5xdWV1ZUludm9rZWQ9ITAsZC5lbnF1ZXVlKGUsdCl9LGdldCBkZXNpcmVkU2l6ZSgpe3JldHVybiBkLmRlc2lyZWRTaXplfSxnZXQgcmVhZHkoKXtyZXR1cm4gZC5yZWFkeX19O0wuZ2V0VGV4dENvbnRlbnQoe3N0cmVhbTpyLHRhc2s6bixyZXNvdXJjZXM6ci5kaWN0LmdldCgiUmVzb3VyY2VzIil8fGksc3RhdGVNYW5hZ2VyOmYsY29tYmluZVRleHRJdGVtczpsLGluY2x1ZGVNYXJrZWRDb250ZW50Omgsc2luazp2LHNlZW5TdHlsZXM6Zyx2aWV3Qm94OnksbWFya2VkQ29udGVudERhdGE6a30pLnRoZW4oKGZ1bmN0aW9uKCl7di5lbnF1ZXVlSW52b2tlZHx8Qi5zZXQoTSxyLmRpY3Qub2JqSWQsITApLGUoKX0pLHQpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtpZighKGUgaW5zdGFuY2VvZiBhLkFib3J0RXhjZXB0aW9uKSl7aWYoIUwub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTsoMCxhLndhcm4pKCdnZXRUZXh0Q29udGVudCAtIGlnbm9yaW5nIFhPYmplY3Q6ICInLmNvbmNhdChlLCciLicpKX19KSkpO2Nhc2UgYS5PUFMuc2V0R1N0YXRlOmlmKGo9cFswXWluc3RhbmNlb2Ygby5OYW1lLE09cFswXS5uYW1lLGomJlUuZ2V0QnlOYW1lKE0pKWJyZWFrO3JldHVybiB2b2lkIHMobmV3IFByb21pc2UoKGZ1bmN0aW9uKGUsdCl7aWYoIWopdGhyb3cgbmV3IGEuRm9ybWF0RXJyb3IoIkdTdGF0ZSBtdXN0IGJlIHJlZmVycmVkIHRvIGJ5IG5hbWUuIik7dmFyIHI9aS5nZXQoIkV4dEdTdGF0ZSIpO2lmKCEociBpbnN0YW5jZW9mIG8uRGljdCkpdGhyb3cgbmV3IGEuRm9ybWF0RXJyb3IoIkV4dEdTdGF0ZSBzaG91bGQgYmUgYSBkaWN0aW9uYXJ5LiIpO3ZhciBuPXIuZ2V0KE0pO2lmKCEobiBpbnN0YW5jZW9mIG8uRGljdCkpdGhyb3cgbmV3IGEuRm9ybWF0RXJyb3IoIkdTdGF0ZSBzaG91bGQgYmUgYSBkaWN0aW9uYXJ5LiIpO3ZhciBzPW4uZ2V0KCJGb250Iik7aWYoIXMpcmV0dXJuIFUuc2V0KE0sbi5vYmpJZCwhMCksdm9pZCBlKCk7cmUoKSxQLmZvbnROYW1lPW51bGwsUC5mb250U2l6ZT1zWzFdLFkobnVsbCxzWzBdKS50aGVuKGUsdCl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe2lmKCEoZSBpbnN0YW5jZW9mIGEuQWJvcnRFeGNlcHRpb24pKXtpZighTC5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlOygwLGEud2FybikoJ2dldFRleHRDb250ZW50IC0gaWdub3JpbmcgRXh0R1N0YXRlOiAiJy5jb25jYXQoZSwnIi4nKSl9fSkpKTtjYXNlIGEuT1BTLmJlZ2luTWFya2VkQ29udGVudDpyZSgpLGgmJihrLmxldmVsKyssUy5pdGVtcy5wdXNoKHt0eXBlOiJiZWdpbk1hcmtlZENvbnRlbnQiLHRhZzpwWzBdaW5zdGFuY2VvZiBvLk5hbWU/cFswXS5uYW1lOm51bGx9KSk7YnJlYWs7Y2FzZSBhLk9QUy5iZWdpbk1hcmtlZENvbnRlbnRQcm9wczppZihyZSgpLGgpe2subGV2ZWwrKzt2YXIgXz1udWxsO3BbMV1pbnN0YW5jZW9mIG8uRGljdCYmKF89cFsxXS5nZXQoIk1DSUQiKSksUy5pdGVtcy5wdXNoKHt0eXBlOiJiZWdpbk1hcmtlZENvbnRlbnRQcm9wcyIsaWQ6TnVtYmVyLmlzSW50ZWdlcihfKT8iIi5jb25jYXQoTC5pZEZhY3RvcnkuZ2V0UGFnZU9iaklkKCksIl9tY2lkIikuY29uY2F0KF8pOm51bGwsdGFnOnBbMF1pbnN0YW5jZW9mIG8uTmFtZT9wWzBdLm5hbWU6bnVsbH0pfWJyZWFrO2Nhc2UgYS5PUFMuZW5kTWFya2VkQ29udGVudDppZihyZSgpLGgpe2lmKDA9PT1rLmxldmVsKWJyZWFrO2subGV2ZWwtLSxTLml0ZW1zLnB1c2goe3R5cGU6ImVuZE1hcmtlZENvbnRlbnQifSl9fWlmKFMuaXRlbXMubGVuZ3RoPj1kLmRlc2lyZWRTaXplKXt1PSEwO2JyZWFrfX11P3MoJCk6KHJlKCksbmUoKSx0KCkpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtpZighKGUgaW5zdGFuY2VvZiBhLkFib3J0RXhjZXB0aW9uKSl7aWYodC5vcHRpb25zLmlnbm9yZUVycm9ycylyZXR1cm4oMCxhLndhcm4pKCdnZXRUZXh0Q29udGVudCAtIGlnbm9yaW5nIGVycm9ycyBkdXJpbmcgIicuY29uY2F0KG4ubmFtZSwnIiAnKSsndGFzazogIicuY29uY2F0KGUsJyIuJykpLHJlKCksdm9pZCBuZSgpO3Rocm93IGV9fSkpfX0se2tleToiZXh0cmFjdERhdGFTdHJ1Y3R1cmVzIix2YWx1ZTpmdW5jdGlvbihlLHQscil7dmFyIG4saT10aGlzLHM9dGhpcy54cmVmLGw9dGhpcy5yZWFkVG9Vbmljb2RlKHIudG9Vbmljb2RlfHxlLmdldCgiVG9Vbmljb2RlIil8fHQuZ2V0KCJUb1VuaWNvZGUiKSk7aWYoci5jb21wb3NpdGUpe3ZhciBmPWUuZ2V0KCJDSURTeXN0ZW1JbmZvIik7ZiBpbnN0YW5jZW9mIG8uRGljdCYmKHIuY2lkU3lzdGVtSW5mbz17cmVnaXN0cnk6KDAsYS5zdHJpbmdUb1BERlN0cmluZykoZi5nZXQoIlJlZ2lzdHJ5IikpLG9yZGVyaW5nOigwLGEuc3RyaW5nVG9QREZTdHJpbmcpKGYuZ2V0KCJPcmRlcmluZyIpKSxzdXBwbGVtZW50OmYuZ2V0KCJTdXBwbGVtZW50Iil9KTt0cnl7dmFyIGg9ZS5nZXQoIkNJRFRvR0lETWFwIik7aCBpbnN0YW5jZW9mIG0uQmFzZVN0cmVhbSYmKG49aC5nZXRCeXRlcygpKX1jYXRjaChlKXtpZighdGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlOygwLGEud2FybikoJ2V4dHJhY3REYXRhU3RydWN0dXJlcyAtIGlnbm9yaW5nIENJRFRvR0lETWFwIGRhdGE6ICInLmNvbmNhdChlLCciLicpKX19dmFyIGQscD1bXSxnPW51bGw7aWYoZS5oYXMoIkVuY29kaW5nIikpe2lmKChkPWUuZ2V0KCJFbmNvZGluZyIpKWluc3RhbmNlb2Ygby5EaWN0KXtpZihnPShnPWQuZ2V0KCJCYXNlRW5jb2RpbmciKSlpbnN0YW5jZW9mIG8uTmFtZT9nLm5hbWU6bnVsbCxkLmhhcygiRGlmZmVyZW5jZXMiKSl7dmFyIHYseT0wLGI9TihkLmdldCgiRGlmZmVyZW5jZXMiKSk7dHJ5e2ZvcihiLnMoKTshKHY9Yi5uKCkpLmRvbmU7KXt2YXIgdz12LnZhbHVlLGs9cy5mZXRjaElmUmVmKHcpO2lmKCJudW1iZXIiPT10eXBlb2Ygayl5PWs7ZWxzZXtpZighKGsgaW5zdGFuY2VvZiBvLk5hbWUpKXRocm93IG5ldyBhLkZvcm1hdEVycm9yKCJJbnZhbGlkIGVudHJ5IGluICdEaWZmZXJlbmNlcycgYXJyYXk6ICIuY29uY2F0KGspKTtwW3krK109ay5uYW1lfX19Y2F0Y2goZSl7Yi5lKGUpfWZpbmFsbHl7Yi5mKCl9fX1lbHNlIGlmKGQgaW5zdGFuY2VvZiBvLk5hbWUpZz1kLm5hbWU7ZWxzZXt2YXIgUz0iRW5jb2RpbmcgaXMgbm90IGEgTmFtZSBub3IgYSBEaWN0IjtpZighdGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBuZXcgYS5Gb3JtYXRFcnJvcihTKTsoMCxhLndhcm4pKFMpfSJNYWNSb21hbkVuY29kaW5nIiE9PWcmJiJNYWNFeHBlcnRFbmNvZGluZyIhPT1nJiYiV2luQW5zaUVuY29kaW5nIiE9PWcmJihnPW51bGwpfWlmKGcpci5kZWZhdWx0RW5jb2Rpbmc9KDAsdS5nZXRFbmNvZGluZykoZyk7ZWxzZXt2YXIgeD0hIShyLmZsYWdzJmMuRm9udEZsYWdzLlN5bWJvbGljKSxPPSEhKHIuZmxhZ3MmYy5Gb250RmxhZ3MuTm9uc3ltYm9saWMpO2Q9dS5TdGFuZGFyZEVuY29kaW5nLCJUcnVlVHlwZSIhPT1yLnR5cGV8fE98fChkPXUuV2luQW5zaUVuY29kaW5nKSx4JiYoZD11Lk1hY1JvbWFuRW5jb2Rpbmcsci5maWxlJiYhci5pc0ludGVybmFsRm9udHx8KC9TeW1ib2wvaS50ZXN0KHIubmFtZSk/ZD11LlN5bWJvbFNldEVuY29kaW5nOi9EaW5nYmF0c3xXaW5nZGluZ3MvaS50ZXN0KHIubmFtZSkmJihkPXUuWmFwZkRpbmdiYXRzRW5jb2RpbmcpKSksci5kZWZhdWx0RW5jb2Rpbmc9ZH1yZXR1cm4gci5kaWZmZXJlbmNlcz1wLHIuYmFzZUVuY29kaW5nTmFtZT1nLHIuaGFzRW5jb2Rpbmc9ISFnfHxwLmxlbmd0aD4wLHIuZGljdD1lLGwudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIHIudG9Vbmljb2RlPWUsaS5idWlsZFRvVW5pY29kZShyKX0pKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gci50b1VuaWNvZGU9ZSxuJiYoci5jaWRUb0dpZE1hcD1pLnJlYWRDaWRUb0dpZE1hcChuLGUpKSxyfSkpfX0se2tleToiX3NpbXBsZUZvbnRUb1VuaWNvZGUiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdJiZhcmd1bWVudHNbMV07KDAsYS5hc3NlcnQpKCFlLmNvbXBvc2l0ZSwiTXVzdCBiZSBhIHNpbXBsZSBmb250LiIpO3ZhciByPVtdLG49ZS5kZWZhdWx0RW5jb2Rpbmcuc2xpY2UoKSxpPWUuYmFzZUVuY29kaW5nTmFtZSxvPWUuZGlmZmVyZW5jZXM7Zm9yKHZhciBzIGluIG8pe3ZhciBjPW9bc107Ii5ub3RkZWYiIT09YyYmKG5bc109Yyl9dmFyIGw9KDAsUy5nZXRHbHlwaHNVbmljb2RlKSgpO2Zvcih2YXIgZiBpbiBuKXt2YXIgaD1uW2ZdO2lmKCIiIT09aCl7dmFyIGQ9bFtoXTtpZih2b2lkIDA9PT1kKXt2YXIgcD0wO3N3aXRjaChoWzBdKXtjYXNlIkciOjM9PT1oLmxlbmd0aCYmKHA9cGFyc2VJbnQoaC5zdWJzdHJpbmcoMSksMTYpKTticmVhaztjYXNlImciOjU9PT1oLmxlbmd0aCYmKHA9cGFyc2VJbnQoaC5zdWJzdHJpbmcoMSksMTYpKTticmVhaztjYXNlIkMiOmNhc2UiYyI6aWYoaC5sZW5ndGg+PTMmJmgubGVuZ3RoPD00KXt2YXIgZz1oLnN1YnN0cmluZygxKTtpZih0KXtwPXBhcnNlSW50KGcsMTYpO2JyZWFrfWlmKHA9K2csTnVtYmVyLmlzTmFOKHApJiZOdW1iZXIuaXNJbnRlZ2VyKHBhcnNlSW50KGcsMTYpKSlyZXR1cm4gdGhpcy5fc2ltcGxlRm9udFRvVW5pY29kZShlLCEwKX1icmVhaztjYXNlInUiOi0xIT09KGQ9KDAsQS5nZXRVbmljb2RlRm9yR2x5cGgpKGgsbCkpJiYocD1kKX1pZihwPjAmJnA8PTExMTQxMTEmJk51bWJlci5pc0ludGVnZXIocCkpe2lmKGkmJnA9PT0rZil7dmFyIHY9KDAsdS5nZXRFbmNvZGluZykoaSk7aWYodiYmKGg9dltmXSkpe3JbZl09U3RyaW5nLmZyb21DaGFyQ29kZShsW2hdKTtjb250aW51ZX19cltmXT1TdHJpbmcuZnJvbUNvZGVQb2ludChwKX19ZWxzZSByW2ZdPVN0cmluZy5mcm9tQ2hhckNvZGUoZCl9fXJldHVybiByfX0se2tleToiYnVpbGRUb1VuaWNvZGUiLHZhbHVlOihyPU0oRSgpLm1hcmsoKGZ1bmN0aW9uIGUodCl7dmFyIHIsbixzLGMsdSxsO3JldHVybiBFKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6aWYodC5oYXNJbmNsdWRlZFRvVW5pY29kZU1hcD0hIXQudG9Vbmljb2RlJiZ0LnRvVW5pY29kZS5sZW5ndGg+MCwhdC5oYXNJbmNsdWRlZFRvVW5pY29kZU1hcCl7ZS5uZXh0PTQ7YnJlYWt9cmV0dXJuIXQuY29tcG9zaXRlJiZ0Lmhhc0VuY29kaW5nJiYodC5mYWxsYmFja1RvVW5pY29kZT10aGlzLl9zaW1wbGVGb250VG9Vbmljb2RlKHQpKSxlLmFicnVwdCgicmV0dXJuIix0LnRvVW5pY29kZSk7Y2FzZSA0OmlmKHQuY29tcG9zaXRlKXtlLm5leHQ9NjticmVha31yZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsbmV3IGQuVG9Vbmljb2RlTWFwKHRoaXMuX3NpbXBsZUZvbnRUb1VuaWNvZGUodCkpKTtjYXNlIDY6aWYoIXQuY29tcG9zaXRlfHwoIXQuY01hcC5idWlsdEluQ01hcHx8dC5jTWFwIGluc3RhbmNlb2YgaS5JZGVudGl0eUNNYXApJiYoIkFkb2JlIiE9PXQuY2lkU3lzdGVtSW5mby5yZWdpc3RyeXx8IkdCMSIhPT10LmNpZFN5c3RlbUluZm8ub3JkZXJpbmcmJiJDTlMxIiE9PXQuY2lkU3lzdGVtSW5mby5vcmRlcmluZyYmIkphcGFuMSIhPT10LmNpZFN5c3RlbUluZm8ub3JkZXJpbmcmJiJLb3JlYTEiIT09dC5jaWRTeXN0ZW1JbmZvLm9yZGVyaW5nKSl7ZS5uZXh0PTE1O2JyZWFrfXJldHVybiByPXQuY2lkU3lzdGVtSW5mbyxuPXIucmVnaXN0cnkscz1yLm9yZGVyaW5nLGM9by5OYW1lLmdldCgiIi5jb25jYXQobiwiLSIpLmNvbmNhdChzLCItVUNTMiIpKSxlLm5leHQ9MTEsaS5DTWFwRmFjdG9yeS5jcmVhdGUoe2VuY29kaW5nOmMsZmV0Y2hCdWlsdEluQ01hcDp0aGlzLl9mZXRjaEJ1aWx0SW5DTWFwQm91bmQsdXNlQ01hcDpudWxsfSk7Y2FzZSAxMTpyZXR1cm4gdT1lLnNlbnQsbD1bXSx0LmNNYXAuZm9yRWFjaCgoZnVuY3Rpb24oZSx0KXtpZih0PjY1NTM1KXRocm93IG5ldyBhLkZvcm1hdEVycm9yKCJNYXggc2l6ZSBvZiBDSUQgaXMgNjUsNTM1Iik7dmFyIHI9dS5sb29rdXAodCk7ciYmKGxbZV09U3RyaW5nLmZyb21DaGFyQ29kZSgoci5jaGFyQ29kZUF0KDApPDw4KStyLmNoYXJDb2RlQXQoMSkpKX0pKSxlLmFicnVwdCgicmV0dXJuIixuZXcgZC5Ub1VuaWNvZGVNYXAobCkpO2Nhc2UgMTU6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLG5ldyBkLklkZW50aXR5VG9Vbmljb2RlTWFwKHQuZmlyc3RDaGFyLHQubGFzdENoYXIpKTtjYXNlIDE2OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSksZnVuY3Rpb24oZSl7cmV0dXJuIHIuYXBwbHkodGhpcyxhcmd1bWVudHMpfSl9LHtrZXk6InJlYWRUb1VuaWNvZGUiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7cmV0dXJuIGU/ZSBpbnN0YW5jZW9mIG8uTmFtZT9pLkNNYXBGYWN0b3J5LmNyZWF0ZSh7ZW5jb2Rpbmc6ZSxmZXRjaEJ1aWx0SW5DTWFwOnRoaXMuX2ZldGNoQnVpbHRJbkNNYXBCb3VuZCx1c2VDTWFwOm51bGx9KS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIGkuSWRlbnRpdHlDTWFwP25ldyBkLklkZW50aXR5VG9Vbmljb2RlTWFwKDAsNjU1MzUpOm5ldyBkLlRvVW5pY29kZU1hcChlLmdldE1hcCgpKX0pKTplIGluc3RhbmNlb2YgbS5CYXNlU3RyZWFtP2kuQ01hcEZhY3RvcnkuY3JlYXRlKHtlbmNvZGluZzplLGZldGNoQnVpbHRJbkNNYXA6dGhpcy5fZmV0Y2hCdWlsdEluQ01hcEJvdW5kLHVzZUNNYXA6bnVsbH0pLnRoZW4oKGZ1bmN0aW9uKGUpe2lmKGUgaW5zdGFuY2VvZiBpLklkZW50aXR5Q01hcClyZXR1cm4gbmV3IGQuSWRlbnRpdHlUb1VuaWNvZGVNYXAoMCw2NTUzNSk7dmFyIHQ9bmV3IEFycmF5KGUubGVuZ3RoKTtyZXR1cm4gZS5mb3JFYWNoKChmdW5jdGlvbihlLHIpe2lmKCJudW1iZXIiIT10eXBlb2Ygcil7Zm9yKHZhciBuPVtdLGE9MDthPHIubGVuZ3RoO2ErPTIpe3ZhciBpPXIuY2hhckNvZGVBdChhKTw8OHxyLmNoYXJDb2RlQXQoYSsxKTtpZig1NTI5Nj09KDYzNDg4JmkpKXthKz0yO3ZhciBvPXIuY2hhckNvZGVBdChhKTw8OHxyLmNoYXJDb2RlQXQoYSsxKTtuLnB1c2goKCgxMDIzJmkpPDwxMCkrKDEwMjMmbykrNjU1MzYpfWVsc2Ugbi5wdXNoKGkpfXRbZV09U3RyaW5nLmZyb21Db2RlUG9pbnQuYXBwbHkoU3RyaW5nLG4pfWVsc2UgdFtlXT1TdHJpbmcuZnJvbUNvZGVQb2ludChyKX0pKSxuZXcgZC5Ub1VuaWNvZGVNYXAodCl9KSwoZnVuY3Rpb24oZSl7aWYoZSBpbnN0YW5jZW9mIGEuQWJvcnRFeGNlcHRpb24pcmV0dXJuIG51bGw7aWYodC5vcHRpb25zLmlnbm9yZUVycm9ycylyZXR1cm4gdC5oYW5kbGVyLnNlbmQoIlVuc3VwcG9ydGVkRmVhdHVyZSIse2ZlYXR1cmVJZDphLlVOU1VQUE9SVEVEX0ZFQVRVUkVTLmVycm9yRm9udFRvVW5pY29kZX0pLCgwLGEud2FybikoJ3JlYWRUb1VuaWNvZGUgLSBpZ25vcmluZyBUb1VuaWNvZGUgZGF0YTogIicuY29uY2F0KGUsJyIuJykpLG51bGw7dGhyb3cgZX0pKTpQcm9taXNlLnJlc29sdmUobnVsbCk6UHJvbWlzZS5yZXNvbHZlKG51bGwpfX0se2tleToicmVhZENpZFRvR2lkTWFwIix2YWx1ZTpmdW5jdGlvbihlLHQpe2Zvcih2YXIgcj1bXSxuPTAsYT1lLmxlbmd0aDtuPGE7bisrKXt2YXIgaT1lW24rK108PDh8ZVtuXSxvPW4+PjE7KDAhPT1pfHx0LmhhcyhvKSkmJihyW29dPWkpfXJldHVybiByfX0se2tleToiZXh0cmFjdFdpZHRocyIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuLGEsaSxzLHUsbCxmLGgsZD10aGlzLnhyZWYscD1bXSxnPTAsdj1bXTtpZihyLmNvbXBvc2l0ZSl7aWYoZz1lLmhhcygiRFciKT9lLmdldCgiRFciKToxZTMsaD1lLmdldCgiVyIpKWZvcihhPTAsaT1oLmxlbmd0aDthPGk7YSsrKWlmKGw9ZC5mZXRjaElmUmVmKGhbYSsrXSksZj1kLmZldGNoSWZSZWYoaFthXSksQXJyYXkuaXNBcnJheShmKSlmb3Iocz0wLHU9Zi5sZW5ndGg7czx1O3MrKylwW2wrK109ZC5mZXRjaElmUmVmKGZbc10pO2Vsc2V7dmFyIHk9ZC5mZXRjaElmUmVmKGhbKythXSk7Zm9yKHM9bDtzPD1mO3MrKylwW3NdPXl9aWYoci52ZXJ0aWNhbCl7dmFyIG09ZS5nZXRBcnJheSgiRFcyIil8fFs4ODAsLTFlM107aWYobj1bbVsxXSwuNSpnLG1bMF1dLG09ZS5nZXQoIlcyIikpZm9yKGE9MCxpPW0ubGVuZ3RoO2E8aTthKyspaWYobD1kLmZldGNoSWZSZWYobVthKytdKSxmPWQuZmV0Y2hJZlJlZihtW2FdKSxBcnJheS5pc0FycmF5KGYpKWZvcihzPTAsdT1mLmxlbmd0aDtzPHU7cysrKXZbbCsrXT1bZC5mZXRjaElmUmVmKGZbcysrXSksZC5mZXRjaElmUmVmKGZbcysrXSksZC5mZXRjaElmUmVmKGZbc10pXTtlbHNle3ZhciBiPVtkLmZldGNoSWZSZWYobVsrK2FdKSxkLmZldGNoSWZSZWYobVsrK2FdKSxkLmZldGNoSWZSZWYobVsrK2FdKV07Zm9yKHM9bDtzPD1mO3MrKyl2W3NdPWJ9fX1lbHNle3ZhciB3PXIuZmlyc3RDaGFyO2lmKGg9ZS5nZXQoIldpZHRocyIpKXtmb3Iocz13LGE9MCxpPWgubGVuZ3RoO2E8aTthKyspcFtzKytdPWQuZmV0Y2hJZlJlZihoW2FdKTtnPXBhcnNlRmxvYXQodC5nZXQoIk1pc3NpbmdXaWR0aCIpKXx8MH1lbHNle3ZhciBrPWUuZ2V0KCJCYXNlRm9udCIpO2lmKGsgaW5zdGFuY2VvZiBvLk5hbWUpe3ZhciBTPXRoaXMuZ2V0QmFzZUZvbnRNZXRyaWNzKGsubmFtZSk7cD10aGlzLmJ1aWxkQ2hhckNvZGVUb1dpZHRoKFMud2lkdGhzLHIpLGc9Uy5kZWZhdWx0V2lkdGh9fX12YXIgeD0hMCxPPWc7Zm9yKHZhciBBIGluIHApe3ZhciBDPXBbQV07aWYoQylpZihPKXtpZihPIT09Qyl7eD0hMTticmVha319ZWxzZSBPPUN9eCYmKHIuZmxhZ3N8PWMuRm9udEZsYWdzLkZpeGVkUGl0Y2gpLHIuZGVmYXVsdFdpZHRoPWcsci53aWR0aHM9cCxyLmRlZmF1bHRWTWV0cmljcz1uLHIudm1ldHJpY3M9dn19LHtrZXk6ImlzU2VyaWZGb250Iix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1lLnNwbGl0KCItIilbMF07cmV0dXJuIHQgaW4oMCxsLmdldFNlcmlmRm9udHMpKCl8fC9zZXJpZi9naS50ZXN0KHQpfX0se2tleToiZ2V0QmFzZUZvbnRNZXRyaWNzIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD0wLHI9T2JqZWN0LmNyZWF0ZShudWxsKSxuPSExLGE9KDAsbC5nZXRTdGRGb250TWFwKSgpW2VdfHxlLGk9KDAsTy5nZXRNZXRyaWNzKSgpO2EgaW4gaXx8KGE9dGhpcy5pc1NlcmlmRm9udChlKT8iVGltZXMtUm9tYW4iOiJIZWx2ZXRpY2EiKTt2YXIgbz1pW2FdO3JldHVybiJudW1iZXIiPT10eXBlb2Ygbz8odD1vLG49ITApOnI9bygpLHtkZWZhdWx0V2lkdGg6dCxtb25vc3BhY2U6bix3aWR0aHM6cn19fSx7a2V5OiJidWlsZENoYXJDb2RlVG9XaWR0aCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtmb3IodmFyIHI9T2JqZWN0LmNyZWF0ZShudWxsKSxuPXQuZGlmZmVyZW5jZXMsYT10LmRlZmF1bHRFbmNvZGluZyxpPTA7aTwyNTY7aSsrKWkgaW4gbiYmZVtuW2ldXT9yW2ldPWVbbltpXV06aSBpbiBhJiZlW2FbaV1dJiYocltpXT1lW2FbaV1dKTtyZXR1cm4gcn19LHtrZXk6InByZUV2YWx1YXRlRm9udCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZSxyPWUuZ2V0KCJTdWJ0eXBlIik7aWYoIShyIGluc3RhbmNlb2Ygby5OYW1lKSl0aHJvdyBuZXcgYS5Gb3JtYXRFcnJvcigiaW52YWxpZCBmb250IFN1YnR5cGUiKTt2YXIgbixpLHM9ITE7aWYoIlR5cGUwIj09PXIubmFtZSl7dmFyIGM9ZS5nZXQoIkRlc2NlbmRhbnRGb250cyIpO2lmKCFjKXRocm93IG5ldyBhLkZvcm1hdEVycm9yKCJEZXNjZW5kYW50IGZvbnRzIGFyZSBub3Qgc3BlY2lmaWVkIik7aWYoISgoZT1BcnJheS5pc0FycmF5KGMpP3RoaXMueHJlZi5mZXRjaElmUmVmKGNbMF0pOmMpaW5zdGFuY2VvZiBvLkRpY3QpKXRocm93IG5ldyBhLkZvcm1hdEVycm9yKCJEZXNjZW5kYW50IGZvbnQgaXMgbm90IGEgZGljdGlvbmFyeS4iKTtpZighKChyPWUuZ2V0KCJTdWJ0eXBlIikpaW5zdGFuY2VvZiBvLk5hbWUpKXRocm93IG5ldyBhLkZvcm1hdEVycm9yKCJpbnZhbGlkIGZvbnQgU3VidHlwZSIpO3M9ITB9dmFyIHU9ZS5nZXQoIkZpcnN0Q2hhciIpfHwwLGw9ZS5nZXQoIkxhc3RDaGFyIil8fChzPzY1NTM1OjI1NSksZj1lLmdldCgiRm9udERlc2NyaXB0b3IiKTtpZihmKXtuPW5ldyBDLk11cm11ckhhc2gzXzY0O3ZhciBoPXQuZ2V0UmF3KCJFbmNvZGluZyIpO2lmKGggaW5zdGFuY2VvZiBvLk5hbWUpbi51cGRhdGUoaC5uYW1lKTtlbHNlIGlmKGggaW5zdGFuY2VvZiBvLlJlZiluLnVwZGF0ZShoLnRvU3RyaW5nKCkpO2Vsc2UgaWYoaCBpbnN0YW5jZW9mIG8uRGljdCl7dmFyIGQscD1OKGguZ2V0UmF3VmFsdWVzKCkpO3RyeXtmb3IocC5zKCk7IShkPXAubigpKS5kb25lOyl7dmFyIGc9ZC52YWx1ZTtpZihnIGluc3RhbmNlb2Ygby5OYW1lKW4udXBkYXRlKGcubmFtZSk7ZWxzZSBpZihnIGluc3RhbmNlb2Ygby5SZWYpbi51cGRhdGUoZy50b1N0cmluZygpKTtlbHNlIGlmKEFycmF5LmlzQXJyYXkoZykpe2Zvcih2YXIgdj1nLmxlbmd0aCx5PW5ldyBBcnJheSh2KSxiPTA7Yjx2O2IrKyl7dmFyIHc9Z1tiXTt3IGluc3RhbmNlb2Ygby5OYW1lP3lbYl09dy5uYW1lOigibnVtYmVyIj09dHlwZW9mIHd8fHcgaW5zdGFuY2VvZiBvLlJlZikmJih5W2JdPXcudG9TdHJpbmcoKSl9bi51cGRhdGUoeS5qb2luKCkpfX19Y2F0Y2goZSl7cC5lKGUpfWZpbmFsbHl7cC5mKCl9fWlmKG4udXBkYXRlKCIiLmNvbmNhdCh1LCItIikuY29uY2F0KGwpKSwoaT1lLmdldCgiVG9Vbmljb2RlIil8fHQuZ2V0KCJUb1VuaWNvZGUiKSlpbnN0YW5jZW9mIG0uQmFzZVN0cmVhbSl7dmFyIGs9aS5zdHJ8fGksUz1rLmJ1ZmZlcj9uZXcgVWludDhBcnJheShrLmJ1ZmZlci5idWZmZXIsMCxrLmJ1ZmZlckxlbmd0aCk6bmV3IFVpbnQ4QXJyYXkoay5ieXRlcy5idWZmZXIsay5zdGFydCxrLmVuZC1rLnN0YXJ0KTtuLnVwZGF0ZShTKX1lbHNlIGkgaW5zdGFuY2VvZiBvLk5hbWUmJm4udXBkYXRlKGkubmFtZSk7dmFyIHg9ZS5nZXQoIldpZHRocyIpfHx0LmdldCgiV2lkdGhzIik7aWYoQXJyYXkuaXNBcnJheSh4KSl7dmFyIE8sQT1bXSxGPU4oeCk7dHJ5e2ZvcihGLnMoKTshKE89Ri5uKCkpLmRvbmU7KXt2YXIgUD1PLnZhbHVlOygibnVtYmVyIj09dHlwZW9mIFB8fFAgaW5zdGFuY2VvZiBvLlJlZikmJkEucHVzaChQLnRvU3RyaW5nKCkpfX1jYXRjaChlKXtGLmUoZSl9ZmluYWxseXtGLmYoKX1uLnVwZGF0ZShBLmpvaW4oKSl9aWYocyl7bi51cGRhdGUoImNvbXBvc2l0ZUZvbnQiKTt2YXIgVD1lLmdldCgiVyIpfHx0LmdldCgiVyIpO2lmKEFycmF5LmlzQXJyYXkoVCkpe3ZhciBJLEU9W10saj1OKFQpO3RyeXtmb3Ioai5zKCk7IShJPWoubigpKS5kb25lOyl7dmFyIE09SS52YWx1ZTtpZigibnVtYmVyIj09dHlwZW9mIE18fE0gaW5zdGFuY2VvZiBvLlJlZilFLnB1c2goTS50b1N0cmluZygpKTtlbHNlIGlmKEFycmF5LmlzQXJyYXkoTSkpe3ZhciBfLEw9W10sUj1OKE0pO3RyeXtmb3IoUi5zKCk7IShfPVIubigpKS5kb25lOyl7dmFyIEQ9Xy52YWx1ZTsoIm51bWJlciI9PXR5cGVvZiBEfHxEIGluc3RhbmNlb2Ygby5SZWYpJiZMLnB1c2goRC50b1N0cmluZygpKX19Y2F0Y2goZSl7Ui5lKGUpfWZpbmFsbHl7Ui5mKCl9RS5wdXNoKCJbIi5jb25jYXQoTC5qb2luKCksIl0iKSl9fX1jYXRjaChlKXtqLmUoZSl9ZmluYWxseXtqLmYoKX1uLnVwZGF0ZShFLmpvaW4oKSl9dmFyIEI9ZS5nZXRSYXcoIkNJRFRvR0lETWFwIil8fHQuZ2V0UmF3KCJDSURUb0dJRE1hcCIpO0IgaW5zdGFuY2VvZiBvLk5hbWU/bi51cGRhdGUoQi5uYW1lKTpCIGluc3RhbmNlb2Ygby5SZWY/bi51cGRhdGUoQi50b1N0cmluZygpKTpCIGluc3RhbmNlb2YgbS5CYXNlU3RyZWFtJiZuLnVwZGF0ZShCLnBlZWtCeXRlcygpKX19cmV0dXJue2Rlc2NyaXB0b3I6ZixkaWN0OmUsYmFzZURpY3Q6dCxjb21wb3NpdGU6cyx0eXBlOnIubmFtZSxmaXJzdENoYXI6dSxsYXN0Q2hhcjpsLHRvVW5pY29kZTppLGhhc2g6bj9uLmhleGRpZ2VzdCgpOiIifX19LHtrZXk6InRyYW5zbGF0ZUZvbnQiLHZhbHVlOih0PU0oRSgpLm1hcmsoKGZ1bmN0aW9uIGUodCl7dmFyIHIsbix1LGYsZCxwLGcsdixtLGIsdyxrLFMseCxPLEEsQyxGLFAsVCxJLGosTSxfLEwsUixELEIsVSwkLFgsSCxxLEcseixXPXRoaXM7cmV0dXJuIEUoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDppZihyPXQuZGVzY3JpcHRvcixuPXQuZGljdCx1PXQuYmFzZURpY3QsZj10LmNvbXBvc2l0ZSxkPXQudHlwZSxwPXQuZmlyc3RDaGFyLGc9dC5sYXN0Q2hhcix2PXQudG9Vbmljb2RlLG09dC5jc3NGb250SW5mbyxiPSJUeXBlMyI9PT1kLHIpe2UubmV4dD0yNzticmVha31pZighYil7ZS5uZXh0PTk7YnJlYWt9KHI9bmV3IG8uRGljdChudWxsKSkuc2V0KCJGb250TmFtZSIsby5OYW1lLmdldChkKSksci5zZXQoIkZvbnRCQm94IixuLmdldEFycmF5KCJGb250QkJveCIpfHxbMCwwLDAsMF0pLGUubmV4dD0yNzticmVhaztjYXNlIDk6aWYoKGs9bi5nZXQoIkJhc2VGb250IikpaW5zdGFuY2VvZiBvLk5hbWUpe2UubmV4dD0xMjticmVha310aHJvdyBuZXcgYS5Gb3JtYXRFcnJvcigiQmFzZSBmb250IGlzIG5vdCBzcGVjaWZpZWQiKTtjYXNlIDEyOmlmKGs9ay5uYW1lLnJlcGxhY2UoL1ssX10vZywiLSIpLFM9dGhpcy5nZXRCYXNlRm9udE1ldHJpY3MoaykseD1rLnNwbGl0KCItIilbMF0sTz0odGhpcy5pc1NlcmlmRm9udCh4KT9jLkZvbnRGbGFncy5TZXJpZjowKXwoUy5tb25vc3BhY2U/Yy5Gb250RmxhZ3MuRml4ZWRQaXRjaDowKXwoKDAsbC5nZXRTeW1ib2xzRm9udHMpKClbeF0/Yy5Gb250RmxhZ3MuU3ltYm9saWM6Yy5Gb250RmxhZ3MuTm9uc3ltYm9saWMpLHc9e3R5cGU6ZCxuYW1lOmssbG9hZGVkTmFtZTp1LmxvYWRlZE5hbWUsd2lkdGhzOlMud2lkdGhzLGRlZmF1bHRXaWR0aDpTLmRlZmF1bHRXaWR0aCxpc1NpbXVsYXRlZEZsYWdzOiEwLGZsYWdzOk8sZmlyc3RDaGFyOnAsbGFzdENoYXI6Zyx0b1VuaWNvZGU6dix4SGVpZ2h0OjAsY2FwSGVpZ2h0OjAsaXRhbGljQW5nbGU6MCxpc1R5cGUzRm9udDpifSxBPW4uZ2V0KCJXaWR0aHMiKSxDPSgwLGwuZ2V0U3RhbmRhcmRGb250TmFtZSkoayksRj1udWxsLCFDKXtlLm5leHQ9MjY7YnJlYWt9cmV0dXJuIHcuaXNTdGFuZGFyZEZvbnQ9ITAsZS5uZXh0PTI0LHRoaXMuZmV0Y2hTdGFuZGFyZEZvbnREYXRhKEMpO2Nhc2UgMjQ6Rj1lLnNlbnQsdy5pc0ludGVybmFsRm9udD0hIUY7Y2FzZSAyNjpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsdGhpcy5leHRyYWN0RGF0YVN0cnVjdHVyZXMobixuLHcpLnRoZW4oKGZ1bmN0aW9uKGUpe2lmKEEpe3ZhciB0LHI9W10sbj1wLGE9TihBKTt0cnl7Zm9yKGEucygpOyEodD1hLm4oKSkuZG9uZTspe3ZhciBpPXQudmFsdWU7cltuKytdPVcueHJlZi5mZXRjaElmUmVmKGkpfX1jYXRjaChlKXthLmUoZSl9ZmluYWxseXthLmYoKX1lLndpZHRocz1yfWVsc2UgZS53aWR0aHM9Vy5idWlsZENoYXJDb2RlVG9XaWR0aChTLndpZHRocyxlKTtyZXR1cm4gbmV3IHMuRm9udChrLEYsZSl9KSkpO2Nhc2UgMjc6aWYoUD1yLmdldCgiRm9udE5hbWUiKSxUPW4uZ2V0KCJCYXNlRm9udCIpLCJzdHJpbmciPT10eXBlb2YgUCYmKFA9by5OYW1lLmdldChQKSksInN0cmluZyI9PXR5cGVvZiBUJiYoVD1vLk5hbWUuZ2V0KFQpKSxifHwoST1QJiZQLm5hbWUsaj1UJiZULm5hbWUsSSE9PWomJigoMCxhLmluZm8pKCJUaGUgRm9udERlc2NyaXB0b3IncyBGb250TmFtZSBpcyBcIiIuY29uY2F0KEksJyIgYnV0ICcpKyJzaG91bGQgYmUgdGhlIHNhbWUgYXMgdGhlIEZvbnQncyBCYXNlRm9udCBcIiIuY29uY2F0KGosJyIuJykpLEkmJmomJmouc3RhcnRzV2l0aChJKSYmKFA9VCkpKSwoUD1QfHxUKWluc3RhbmNlb2Ygby5OYW1lKXtlLm5leHQ9MzU7YnJlYWt9dGhyb3cgbmV3IGEuRm9ybWF0RXJyb3IoImludmFsaWQgZm9udCBuYW1lIik7Y2FzZSAzNTplLnByZXY9MzUsTT1yLmdldCgiRm9udEZpbGUiLCJGb250RmlsZTIiLCJGb250RmlsZTMiKSxlLm5leHQ9NDU7YnJlYWs7Y2FzZSAzOTppZihlLnByZXY9MzksZS50MD1lLmNhdGNoKDM1KSx0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXtlLm5leHQ9NDM7YnJlYWt9dGhyb3cgZS50MDtjYXNlIDQzOigwLGEud2FybikoJ3RyYW5zbGF0ZUZvbnQgLSBmZXRjaGluZyAiJy5jb25jYXQoUC5uYW1lLCciIGZvbnQgZmlsZTogIicpLmNvbmNhdChlLnQwLCciLicpKSxNPW5ldyB5Lk51bGxTdHJlYW07Y2FzZSA0NTppZihCPSExLFU9ITEsJD1udWxsLCFNKXtlLm5leHQ9NTI7YnJlYWt9TS5kaWN0JiYoKFg9TS5kaWN0LmdldCgiU3VidHlwZSIpKWluc3RhbmNlb2Ygby5OYW1lJiYoXz1YLm5hbWUpLEw9TS5kaWN0LmdldCgiTGVuZ3RoMSIpLFI9TS5kaWN0LmdldCgiTGVuZ3RoMiIpLEQ9TS5kaWN0LmdldCgiTGVuZ3RoMyIpKSxlLm5leHQ9NzQ7YnJlYWs7Y2FzZSA1MjppZighbSl7ZS5uZXh0PTY2O2JyZWFrfWlmKCEoSD0oMCxoLmdldFhmYUZvbnROYW1lKShQLm5hbWUpKSl7ZS5uZXh0PTY0O2JyZWFrfXJldHVybiBtLmZvbnRGYW1pbHk9IiIuY29uY2F0KG0uZm9udEZhbWlseSwiLVBkZkpTLVhGQSIpLG0ubWV0cmljcz1ILm1ldHJpY3N8fG51bGwsJD1ILmZhY3RvcnN8fG51bGwsZS5uZXh0PTYwLHRoaXMuZmV0Y2hTdGFuZGFyZEZvbnREYXRhKEgubmFtZSk7Y2FzZSA2MDpNPWUuc2VudCxVPSEhTSx1PW49KDAsaC5nZXRYZmFGb250RGljdCkoUC5uYW1lKSxmPSEwO2Nhc2UgNjQ6ZS5uZXh0PTc0O2JyZWFrO2Nhc2UgNjY6aWYoYil7ZS5uZXh0PTc0O2JyZWFrfWlmKCEocT0oMCxsLmdldFN0YW5kYXJkRm9udE5hbWUpKFAubmFtZSkpKXtlLm5leHQ9NzQ7YnJlYWt9cmV0dXJuIEI9ITAsZS5uZXh0PTcyLHRoaXMuZmV0Y2hTdGFuZGFyZEZvbnREYXRhKHEpO2Nhc2UgNzI6TT1lLnNlbnQsVT0hIU07Y2FzZSA3NDppZih3PXt0eXBlOmQsbmFtZTpQLm5hbWUsc3VidHlwZTpfLGZpbGU6TSxsZW5ndGgxOkwsbGVuZ3RoMjpSLGxlbmd0aDM6RCxpc1N0YW5kYXJkRm9udDpCLGlzSW50ZXJuYWxGb250OlUsbG9hZGVkTmFtZTp1LmxvYWRlZE5hbWUsY29tcG9zaXRlOmYsZml4ZWRQaXRjaDohMSxmb250TWF0cml4Om4uZ2V0QXJyYXkoIkZvbnRNYXRyaXgiKXx8YS5GT05UX0lERU5USVRZX01BVFJJWCxmaXJzdENoYXI6cCxsYXN0Q2hhcjpnLHRvVW5pY29kZTp2LGJib3g6ci5nZXRBcnJheSgiRm9udEJCb3giKXx8bi5nZXRBcnJheSgiRm9udEJCb3giKSxhc2NlbnQ6ci5nZXQoIkFzY2VudCIpLGRlc2NlbnQ6ci5nZXQoIkRlc2NlbnQiKSx4SGVpZ2h0OnIuZ2V0KCJYSGVpZ2h0Iil8fDAsY2FwSGVpZ2h0OnIuZ2V0KCJDYXBIZWlnaHQiKXx8MCxmbGFnczpyLmdldCgiRmxhZ3MiKSxpdGFsaWNBbmdsZTpyLmdldCgiSXRhbGljQW5nbGUiKXx8MCxpc1R5cGUzRm9udDpiLGNzc0ZvbnRJbmZvOm0sc2NhbGVGYWN0b3JzOiR9LCFmKXtlLm5leHQ9ODM7YnJlYWt9cmV0dXJuKEc9dS5nZXQoIkVuY29kaW5nIikpaW5zdGFuY2VvZiBvLk5hbWUmJih3LmNpZEVuY29kaW5nPUcubmFtZSksZS5uZXh0PTgwLGkuQ01hcEZhY3RvcnkuY3JlYXRlKHtlbmNvZGluZzpHLGZldGNoQnVpbHRJbkNNYXA6dGhpcy5fZmV0Y2hCdWlsdEluQ01hcEJvdW5kLHVzZUNNYXA6bnVsbH0pO2Nhc2UgODA6ej1lLnNlbnQsdy5jTWFwPXosdy52ZXJ0aWNhbD13LmNNYXAudmVydGljYWw7Y2FzZSA4MzpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsdGhpcy5leHRyYWN0RGF0YVN0cnVjdHVyZXMobix1LHcpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBXLmV4dHJhY3RXaWR0aHMobixyLGUpLG5ldyBzLkZvbnQoUC5uYW1lLE0sZSl9KSkpO2Nhc2UgODQ6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMsW1szNSwzOV1dKX0pKSksZnVuY3Rpb24oZSl7cmV0dXJuIHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfSl9XSxbe2tleToiYnVpbGRGb250UGF0aHMiLHZhbHVlOmZ1bmN0aW9uKGUsdCxyLG4pe2Z1bmN0aW9uIGkodCl7dmFyIGk9IiIuY29uY2F0KGUubG9hZGVkTmFtZSwiX3BhdGhfIikuY29uY2F0KHQpO3RyeXtpZihlLnJlbmRlcmVyLmhhc0J1aWx0UGF0aCh0KSlyZXR1cm47ci5zZW5kKCJjb21tb25vYmoiLFtpLCJGb250UGF0aCIsZS5yZW5kZXJlci5nZXRQYXRoSnModCldKX1jYXRjaChlKXtpZihuLmlnbm9yZUVycm9ycylyZXR1cm4gci5zZW5kKCJVbnN1cHBvcnRlZEZlYXR1cmUiLHtmZWF0dXJlSWQ6YS5VTlNVUFBPUlRFRF9GRUFUVVJFUy5lcnJvckZvbnRCdWlsZFBhdGh9KSx2b2lkKDAsYS53YXJuKSgiYnVpbGRGb250UGF0aHMgLSBpZ25vcmluZyAiLmNvbmNhdChpLCcgZ2x5cGg6ICInKS5jb25jYXQoZSwnIi4nKSk7dGhyb3cgZX19dmFyIG8scz1OKHQpO3RyeXtmb3Iocy5zKCk7IShvPXMubigpKS5kb25lOyl7dmFyIGM9by52YWx1ZTtpKGMuZm9udENoYXIpO3ZhciB1PWMuYWNjZW50O3UmJnUuZm9udENoYXImJmkodS5mb250Q2hhcil9fWNhdGNoKGUpe3MuZShlKX1maW5hbGx5e3MuZigpfX19LHtrZXk6ImZhbGxiYWNrRm9udERpY3QiLGdldDpmdW5jdGlvbigpe3ZhciBlPW5ldyBvLkRpY3Q7cmV0dXJuIGUuc2V0KCJCYXNlRm9udCIsby5OYW1lLmdldCgiUERGSlMtRmFsbGJhY2tGb250IikpLGUuc2V0KCJUeXBlIixvLk5hbWUuZ2V0KCJGYWxsYmFja1R5cGUiKSksZS5zZXQoIlN1YnR5cGUiLG8uTmFtZS5nZXQoIkZhbGxiYWNrVHlwZSIpKSxlLnNldCgiRW5jb2RpbmciLG8uTmFtZS5nZXQoIldpbkFuc2lFbmNvZGluZyIpKSwoMCxhLnNoYWRvdykodGhpcywiZmFsbGJhY2tGb250RGljdCIsZSl9fV0pLGV9KCk7dC5QYXJ0aWFsRXZhbHVhdG9yPUc7dmFyIHo9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQpe3ZhciByPXQubG9hZGVkTmFtZSxuPXQuZm9udCxhPXQuZGljdCxpPXQuZXZhbHVhdG9yT3B0aW9ucztfKHRoaXMsZSksdGhpcy5sb2FkZWROYW1lPXIsdGhpcy5mb250PW4sdGhpcy5kaWN0PWEsdGhpcy5fZXZhbHVhdG9yT3B0aW9ucz1pfHxVLHRoaXMudHlwZTNMb2FkZWQ9bnVsbCx0aGlzLnR5cGUzRGVwZW5kZW5jaWVzPW4uaXNUeXBlM0ZvbnQ/bmV3IFNldDpudWxsLHRoaXMuc2VudD0hMX1yZXR1cm4gUihlLFt7a2V5OiJzZW5kIix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLnNlbnR8fCh0aGlzLnNlbnQ9ITAsZS5zZW5kKCJjb21tb25vYmoiLFt0aGlzLmxvYWRlZE5hbWUsIkZvbnQiLHRoaXMuZm9udC5leHBvcnREYXRhKHRoaXMuX2V2YWx1YXRvck9wdGlvbnMuZm9udEV4dHJhUHJvcGVydGllcyldKSl9fSx7a2V5OiJmYWxsYmFjayIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5mb250LmRhdGEmJih0aGlzLmZvbnQuZGlzYWJsZUZvbnRGYWNlPSEwLEcuYnVpbGRGb250UGF0aHModGhpcy5mb250LHRoaXMuZm9udC5nbHlwaENhY2hlVmFsdWVzLGUsdGhpcy5fZXZhbHVhdG9yT3B0aW9ucykpfX0se2tleToibG9hZFR5cGUzRGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXRoaXM7aWYodGhpcy50eXBlM0xvYWRlZClyZXR1cm4gdGhpcy50eXBlM0xvYWRlZDtpZighdGhpcy5mb250LmlzVHlwZTNGb250KXRocm93IG5ldyBFcnJvcigiTXVzdCBiZSBhIFR5cGUzIGZvbnQuIik7dmFyIGk9ZS5jbG9uZSh7aWdub3JlRXJyb3JzOiExfSk7aS5wYXJzaW5nVHlwZTNGb250PSEwO3ZhciBzPW5ldyBvLlJlZlNldChlLnR5cGUzRm9udFJlZnMpO3RoaXMuZGljdC5vYmpJZCYmIXMuaGFzKHRoaXMuZGljdC5vYmpJZCkmJnMucHV0KHRoaXMuZGljdC5vYmpJZCksaS50eXBlM0ZvbnRSZWZzPXM7dmFyIGMsdT10aGlzLmZvbnQsbD10aGlzLnR5cGUzRGVwZW5kZW5jaWVzLGY9UHJvbWlzZS5yZXNvbHZlKCksaD10aGlzLmRpY3QuZ2V0KCJDaGFyUHJvY3MiKSxkPXRoaXMuZGljdC5nZXQoIlJlc291cmNlcyIpfHx0LHA9T2JqZWN0LmNyZWF0ZShudWxsKSxnPWEuVXRpbC5ub3JtYWxpemVSZWN0KHUuYmJveHx8WzAsMCwwLDBdKSx2PWdbMl0tZ1swXSx5PWdbM10tZ1sxXSxtPU1hdGguaHlwb3Qodix5KSxiPU4oaC5nZXRLZXlzKCkpO3RyeXt2YXIgdz1mdW5jdGlvbigpe3ZhciBlPWMudmFsdWU7Zj1mLnRoZW4oKGZ1bmN0aW9uKCl7dmFyIHQ9aC5nZXQoZSksbz1uZXcgRi5PcGVyYXRvckxpc3Q7cmV0dXJuIGkuZ2V0T3BlcmF0b3JMaXN0KHtzdHJlYW06dCx0YXNrOnIscmVzb3VyY2VzOmQsb3BlcmF0b3JMaXN0Om99KS50aGVuKChmdW5jdGlvbigpe28uZm5BcnJheVswXT09PWEuT1BTLnNldENoYXJXaWR0aEFuZEJvdW5kcyYmbi5fcmVtb3ZlVHlwZTNDb2xvck9wZXJhdG9ycyhvLG0pLHBbZV09by5nZXRJUigpO3ZhciB0LHI9TihvLmRlcGVuZGVuY2llcyk7dHJ5e2ZvcihyLnMoKTshKHQ9ci5uKCkpLmRvbmU7KXt2YXIgaT10LnZhbHVlO2wuYWRkKGkpfX1jYXRjaChlKXtyLmUoZSl9ZmluYWxseXtyLmYoKX19KSkuY2F0Y2goKGZ1bmN0aW9uKHQpeygwLGEud2FybikoJ1R5cGUzIGZvbnQgcmVzb3VyY2UgIicuY29uY2F0KGUsJyIgaXMgbm90IGF2YWlsYWJsZS4nKSk7dmFyIHI9bmV3IEYuT3BlcmF0b3JMaXN0O3BbZV09ci5nZXRJUigpfSkpfSkpfTtmb3IoYi5zKCk7IShjPWIubigpKS5kb25lOyl3KCl9Y2F0Y2goZSl7Yi5lKGUpfWZpbmFsbHl7Yi5mKCl9cmV0dXJuIHRoaXMudHlwZTNMb2FkZWQ9Zi50aGVuKChmdW5jdGlvbigpe3UuY2hhclByb2NPcGVyYXRvckxpc3Q9cCxuLl9iYm94JiYodS5pc0NoYXJCQm94PSEwLHUuYmJveD1uLl9iYm94KX0pKSx0aGlzLnR5cGUzTG9hZGVkfX0se2tleToiX3JlbW92ZVR5cGUzQ29sb3JPcGVyYXRvcnMiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpOYU4scj1hLlV0aWwubm9ybWFsaXplUmVjdChlLmFyZ3NBcnJheVswXS5zbGljZSgyKSksbj1yWzJdLXJbMF0saT1yWzNdLXJbMV0sbz1NYXRoLmh5cG90KG4saSk7MD09PW58fDA9PT1pPyhlLmZuQXJyYXkuc3BsaWNlKDAsMSksZS5hcmdzQXJyYXkuc3BsaWNlKDAsMSkpOigwPT09dHx8TWF0aC5yb3VuZChvL3QpPj0xMCkmJih0aGlzLl9iYm94fHwodGhpcy5fYmJveD1bMS8wLDEvMCwtMS8wLC0xLzBdKSx0aGlzLl9iYm94WzBdPU1hdGgubWluKHRoaXMuX2Jib3hbMF0sclswXSksdGhpcy5fYmJveFsxXT1NYXRoLm1pbih0aGlzLl9iYm94WzFdLHJbMV0pLHRoaXMuX2Jib3hbMl09TWF0aC5tYXgodGhpcy5fYmJveFsyXSxyWzJdKSx0aGlzLl9iYm94WzNdPU1hdGgubWF4KHRoaXMuX2Jib3hbM10sclszXSkpO2Zvcih2YXIgcz0wLGM9ZS5sZW5ndGg7czxjOyl7c3dpdGNoKGUuZm5BcnJheVtzXSl7Y2FzZSBhLk9QUy5zZXRDaGFyV2lkdGhBbmRCb3VuZHM6YnJlYWs7Y2FzZSBhLk9QUy5zZXRTdHJva2VDb2xvclNwYWNlOmNhc2UgYS5PUFMuc2V0RmlsbENvbG9yU3BhY2U6Y2FzZSBhLk9QUy5zZXRTdHJva2VDb2xvcjpjYXNlIGEuT1BTLnNldFN0cm9rZUNvbG9yTjpjYXNlIGEuT1BTLnNldEZpbGxDb2xvcjpjYXNlIGEuT1BTLnNldEZpbGxDb2xvck46Y2FzZSBhLk9QUy5zZXRTdHJva2VHcmF5OmNhc2UgYS5PUFMuc2V0RmlsbEdyYXk6Y2FzZSBhLk9QUy5zZXRTdHJva2VSR0JDb2xvcjpjYXNlIGEuT1BTLnNldEZpbGxSR0JDb2xvcjpjYXNlIGEuT1BTLnNldFN0cm9rZUNNWUtDb2xvcjpjYXNlIGEuT1BTLnNldEZpbGxDTVlLQ29sb3I6Y2FzZSBhLk9QUy5zaGFkaW5nRmlsbDpjYXNlIGEuT1BTLnNldFJlbmRlcmluZ0ludGVudDplLmZuQXJyYXkuc3BsaWNlKHMsMSksZS5hcmdzQXJyYXkuc3BsaWNlKHMsMSksYy0tO2NvbnRpbnVlO2Nhc2UgYS5PUFMuc2V0R1N0YXRlOmZvcih2YXIgdT1UKGUuYXJnc0FycmF5W3NdLDEpWzBdLGw9MCxmPXUubGVuZ3RoO2w8Zjspe3N3aXRjaChUKHVbbF0sMSlbMF0pe2Nhc2UiVFIiOmNhc2UiVFIyIjpjYXNlIkhUIjpjYXNlIkJHIjpjYXNlIkJHMiI6Y2FzZSJVQ1IiOmNhc2UiVUNSMiI6dS5zcGxpY2UobCwxKSxmLS07Y29udGludWV9bCsrfX1zKyt9fX1dKSxlfSgpLFc9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOm5ldyBZO18odGhpcyxlKSx0aGlzLnN0YXRlPXQsdGhpcy5zdGF0ZVN0YWNrPVtdfXJldHVybiBSKGUsW3trZXk6InNhdmUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5zdGF0ZTt0aGlzLnN0YXRlU3RhY2sucHVzaCh0aGlzLnN0YXRlKSx0aGlzLnN0YXRlPWUuY2xvbmUoKX19LHtrZXk6InJlc3RvcmUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5zdGF0ZVN0YWNrLnBvcCgpO2UmJih0aGlzLnN0YXRlPWUpfX0se2tleToidHJhbnNmb3JtIix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLnN0YXRlLmN0bT1hLlV0aWwudHJhbnNmb3JtKHRoaXMuc3RhdGUuY3RtLGUpfX1dKSxlfSgpLFY9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7Xyh0aGlzLGUpLHRoaXMuY3RtPW5ldyBGbG9hdDMyQXJyYXkoYS5JREVOVElUWV9NQVRSSVgpLHRoaXMuZm9udE5hbWU9bnVsbCx0aGlzLmZvbnRTaXplPTAsdGhpcy5sb2FkZWROYW1lPW51bGwsdGhpcy5mb250PW51bGwsdGhpcy5mb250TWF0cml4PWEuRk9OVF9JREVOVElUWV9NQVRSSVgsdGhpcy50ZXh0TWF0cml4PWEuSURFTlRJVFlfTUFUUklYLnNsaWNlKCksdGhpcy50ZXh0TGluZU1hdHJpeD1hLklERU5USVRZX01BVFJJWC5zbGljZSgpLHRoaXMuY2hhclNwYWNpbmc9MCx0aGlzLndvcmRTcGFjaW5nPTAsdGhpcy5sZWFkaW5nPTAsdGhpcy50ZXh0SFNjYWxlPTEsdGhpcy50ZXh0UmlzZT0wfXJldHVybiBSKGUsW3trZXk6InNldFRleHRNYXRyaXgiLHZhbHVlOmZ1bmN0aW9uKGUsdCxyLG4sYSxpKXt2YXIgbz10aGlzLnRleHRNYXRyaXg7b1swXT1lLG9bMV09dCxvWzJdPXIsb1szXT1uLG9bNF09YSxvWzVdPWl9fSx7a2V5OiJzZXRUZXh0TGluZU1hdHJpeCIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIsbixhLGkpe3ZhciBvPXRoaXMudGV4dExpbmVNYXRyaXg7b1swXT1lLG9bMV09dCxvWzJdPXIsb1szXT1uLG9bNF09YSxvWzVdPWl9fSx7a2V5OiJ0cmFuc2xhdGVUZXh0TWF0cml4Iix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciByPXRoaXMudGV4dE1hdHJpeDtyWzRdPXJbMF0qZStyWzJdKnQrcls0XSxyWzVdPXJbMV0qZStyWzNdKnQrcls1XX19LHtrZXk6InRyYW5zbGF0ZVRleHRMaW5lTWF0cml4Iix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciByPXRoaXMudGV4dExpbmVNYXRyaXg7cls0XT1yWzBdKmUrclsyXSp0K3JbNF0scls1XT1yWzFdKmUrclszXSp0K3JbNV19fSx7a2V5OiJjYXJyaWFnZVJldHVybiIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnRyYW5zbGF0ZVRleHRMaW5lTWF0cml4KDAsLXRoaXMubGVhZGluZyksdGhpcy50ZXh0TWF0cml4PXRoaXMudGV4dExpbmVNYXRyaXguc2xpY2UoKX19LHtrZXk6ImNsb25lIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPU9iamVjdC5jcmVhdGUodGhpcyk7cmV0dXJuIGUudGV4dE1hdHJpeD10aGlzLnRleHRNYXRyaXguc2xpY2UoKSxlLnRleHRMaW5lTWF0cml4PXRoaXMudGV4dExpbmVNYXRyaXguc2xpY2UoKSxlLmZvbnRNYXRyaXg9dGhpcy5mb250TWF0cml4LnNsaWNlKCksZX19XSksZX0oKSxZPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe18odGhpcyxlKSx0aGlzLmN0bT1uZXcgRmxvYXQzMkFycmF5KGEuSURFTlRJVFlfTUFUUklYKSx0aGlzLmZvbnQ9bnVsbCx0aGlzLnRleHRSZW5kZXJpbmdNb2RlPWEuVGV4dFJlbmRlcmluZ01vZGUuRklMTCx0aGlzLmZpbGxDb2xvclNwYWNlPXcuQ29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXksdGhpcy5zdHJva2VDb2xvclNwYWNlPXcuQ29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXl9cmV0dXJuIFIoZSxbe2tleToiY2xvbmUiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdC5jcmVhdGUodGhpcyl9fV0pLGV9KCksSz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCxyKXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06bmV3IFc7Xyh0aGlzLGUpLHRoaXMucGFyc2VyPW5ldyBnLlBhcnNlcih7bGV4ZXI6bmV3IGcuTGV4ZXIodCxlLm9wTWFwKSx4cmVmOnJ9KSx0aGlzLnN0YXRlTWFuYWdlcj1uLHRoaXMubm9uUHJvY2Vzc2VkQXJncz1bXSx0aGlzLl9pc1BhdGhPcD0hMSx0aGlzLl9udW1JbnZhbGlkUGF0aE9QUz0wfXJldHVybiBSKGUsW3trZXk6InNhdmVkU3RhdGVzRGVwdGgiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnN0YXRlTWFuYWdlci5zdGF0ZVN0YWNrLmxlbmd0aH19LHtrZXk6InJlYWQiLHZhbHVlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgcj10LmFyZ3M7Oyl7dmFyIG49dGhpcy5wYXJzZXIuZ2V0T2JqKCk7aWYobiBpbnN0YW5jZW9mIG8uQ21kKXt2YXIgaT1uLmNtZCxzPWUub3BNYXBbaV07aWYoIXMpeygwLGEud2FybikoJ1Vua25vd24gY29tbWFuZCAiJy5jb25jYXQoaSwnIi4nKSk7Y29udGludWV9dmFyIGM9cy5pZCx1PXMubnVtQXJncyxsPW51bGwhPT1yP3IubGVuZ3RoOjA7aWYodGhpcy5faXNQYXRoT3B8fCh0aGlzLl9udW1JbnZhbGlkUGF0aE9QUz0wKSx0aGlzLl9pc1BhdGhPcD1jPj1hLk9QUy5tb3ZlVG8mJmM8PWEuT1BTLmVuZFBhdGgscy52YXJpYWJsZUFyZ3MpbD51JiYoMCxhLmluZm8pKCJDb21tYW5kICIuY29uY2F0KGksIjogZXhwZWN0ZWQgWzAsICIpLmNvbmNhdCh1LCJdIGFyZ3MsICIpKyJidXQgcmVjZWl2ZWQgIi5jb25jYXQobCwiIGFyZ3MuIikpO2Vsc2V7aWYobCE9PXUpe2Zvcih2YXIgZj10aGlzLm5vblByb2Nlc3NlZEFyZ3M7bD51OylmLnB1c2goci5zaGlmdCgpKSxsLS07Zm9yKDtsPHUmJjAhPT1mLmxlbmd0aDspbnVsbD09PXImJihyPVtdKSxyLnVuc2hpZnQoZi5wb3AoKSksbCsrfWlmKGw8dSl7dmFyIGg9ImNvbW1hbmQgIi5jb25jYXQoaSwiOiBleHBlY3RlZCAiKS5jb25jYXQodSwiIGFyZ3MsICIpKyJidXQgcmVjZWl2ZWQgIi5jb25jYXQobCwiIGFyZ3MuIik7aWYodGhpcy5faXNQYXRoT3AmJisrdGhpcy5fbnVtSW52YWxpZFBhdGhPUFM+ZS5NQVhfSU5WQUxJRF9QQVRIX09QUyl0aHJvdyBuZXcgYS5Gb3JtYXRFcnJvcigiSW52YWxpZCAiLmNvbmNhdChoKSk7KDAsYS53YXJuKSgiU2tpcHBpbmcgIi5jb25jYXQoaCkpLG51bGwhPT1yJiYoci5sZW5ndGg9MCk7Y29udGludWV9fXJldHVybiB0aGlzLnByZXByb2Nlc3NDb21tYW5kKGMsciksdC5mbj1jLHQuYXJncz1yLCEwfWlmKG49PT1vLkVPRilyZXR1cm4hMTtpZihudWxsIT09biYmKG51bGw9PT1yJiYocj1bXSksci5wdXNoKG4pLHIubGVuZ3RoPjMzKSl0aHJvdyBuZXcgYS5Gb3JtYXRFcnJvcigiVG9vIG1hbnkgYXJndW1lbnRzIil9fX0se2tleToicHJlcHJvY2Vzc0NvbW1hbmQiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7c3dpdGNoKDB8ZSl7Y2FzZSBhLk9QUy5zYXZlOnRoaXMuc3RhdGVNYW5hZ2VyLnNhdmUoKTticmVhaztjYXNlIGEuT1BTLnJlc3RvcmU6dGhpcy5zdGF0ZU1hbmFnZXIucmVzdG9yZSgpO2JyZWFrO2Nhc2UgYS5PUFMudHJhbnNmb3JtOnRoaXMuc3RhdGVNYW5hZ2VyLnRyYW5zZm9ybSh0KX19fV0sW3trZXk6Im9wTWFwIixnZXQ6ZnVuY3Rpb24oKXt2YXIgZT0oMCx4LmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2Uudz17aWQ6YS5PUFMuc2V0TGluZVdpZHRoLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LGUuSj17aWQ6YS5PUFMuc2V0TGluZUNhcCxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxlLmo9e2lkOmEuT1BTLnNldExpbmVKb2luLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LGUuTT17aWQ6YS5PUFMuc2V0TWl0ZXJMaW1pdCxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxlLmQ9e2lkOmEuT1BTLnNldERhc2gsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX0sZS5yaT17aWQ6YS5PUFMuc2V0UmVuZGVyaW5nSW50ZW50LG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LGUuaT17aWQ6YS5PUFMuc2V0RmxhdG5lc3MsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sZS5ncz17aWQ6YS5PUFMuc2V0R1N0YXRlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LGUucT17aWQ6YS5PUFMuc2F2ZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxlLlE9e2lkOmEuT1BTLnJlc3RvcmUsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sZS5jbT17aWQ6YS5PUFMudHJhbnNmb3JtLG51bUFyZ3M6Nix2YXJpYWJsZUFyZ3M6ITF9LGUubT17aWQ6YS5PUFMubW92ZVRvLG51bUFyZ3M6Mix2YXJpYWJsZUFyZ3M6ITF9LGUubD17aWQ6YS5PUFMubGluZVRvLG51bUFyZ3M6Mix2YXJpYWJsZUFyZ3M6ITF9LGUuYz17aWQ6YS5PUFMuY3VydmVUbyxudW1BcmdzOjYsdmFyaWFibGVBcmdzOiExfSxlLnY9e2lkOmEuT1BTLmN1cnZlVG8yLG51bUFyZ3M6NCx2YXJpYWJsZUFyZ3M6ITF9LGUueT17aWQ6YS5PUFMuY3VydmVUbzMsbnVtQXJnczo0LHZhcmlhYmxlQXJnczohMX0sZS5oPXtpZDphLk9QUy5jbG9zZVBhdGgsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sZS5yZT17aWQ6YS5PUFMucmVjdGFuZ2xlLG51bUFyZ3M6NCx2YXJpYWJsZUFyZ3M6ITF9LGUuUz17aWQ6YS5PUFMuc3Ryb2tlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LGUucz17aWQ6YS5PUFMuY2xvc2VTdHJva2UsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sZS5mPXtpZDphLk9QUy5maWxsLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LGUuRj17aWQ6YS5PUFMuZmlsbCxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxlWyJmKiJdPXtpZDphLk9QUy5lb0ZpbGwsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sZS5CPXtpZDphLk9QUy5maWxsU3Ryb2tlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LGVbIkIqIl09e2lkOmEuT1BTLmVvRmlsbFN0cm9rZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxlLmI9e2lkOmEuT1BTLmNsb3NlRmlsbFN0cm9rZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxlWyJiKiJdPXtpZDphLk9QUy5jbG9zZUVPRmlsbFN0cm9rZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxlLm49e2lkOmEuT1BTLmVuZFBhdGgsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sZS5XPXtpZDphLk9QUy5jbGlwLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LGVbIlcqIl09e2lkOmEuT1BTLmVvQ2xpcCxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxlLkJUPXtpZDphLk9QUy5iZWdpblRleHQsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sZS5FVD17aWQ6YS5PUFMuZW5kVGV4dCxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxlLlRjPXtpZDphLk9QUy5zZXRDaGFyU3BhY2luZyxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxlLlR3PXtpZDphLk9QUy5zZXRXb3JkU3BhY2luZyxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxlLlR6PXtpZDphLk9QUy5zZXRIU2NhbGUsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sZS5UTD17aWQ6YS5PUFMuc2V0TGVhZGluZyxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxlLlRmPXtpZDphLk9QUy5zZXRGb250LG51bUFyZ3M6Mix2YXJpYWJsZUFyZ3M6ITF9LGUuVHI9e2lkOmEuT1BTLnNldFRleHRSZW5kZXJpbmdNb2RlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LGUuVHM9e2lkOmEuT1BTLnNldFRleHRSaXNlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LGUuVGQ9e2lkOmEuT1BTLm1vdmVUZXh0LG51bUFyZ3M6Mix2YXJpYWJsZUFyZ3M6ITF9LGUuVEQ9e2lkOmEuT1BTLnNldExlYWRpbmdNb3ZlVGV4dCxudW1BcmdzOjIsdmFyaWFibGVBcmdzOiExfSxlLlRtPXtpZDphLk9QUy5zZXRUZXh0TWF0cml4LG51bUFyZ3M6Nix2YXJpYWJsZUFyZ3M6ITF9LGVbIlQqIl09e2lkOmEuT1BTLm5leHRMaW5lLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LGUuVGo9e2lkOmEuT1BTLnNob3dUZXh0LG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LGUuVEo9e2lkOmEuT1BTLnNob3dTcGFjZWRUZXh0LG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LGVbIiciXT17aWQ6YS5PUFMubmV4dExpbmVTaG93VGV4dCxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxlWyciJ109e2lkOmEuT1BTLm5leHRMaW5lU2V0U3BhY2luZ1Nob3dUZXh0LG51bUFyZ3M6Myx2YXJpYWJsZUFyZ3M6ITF9LGUuZDA9e2lkOmEuT1BTLnNldENoYXJXaWR0aCxudW1BcmdzOjIsdmFyaWFibGVBcmdzOiExfSxlLmQxPXtpZDphLk9QUy5zZXRDaGFyV2lkdGhBbmRCb3VuZHMsbnVtQXJnczo2LHZhcmlhYmxlQXJnczohMX0sZS5DUz17aWQ6YS5PUFMuc2V0U3Ryb2tlQ29sb3JTcGFjZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxlLmNzPXtpZDphLk9QUy5zZXRGaWxsQ29sb3JTcGFjZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxlLlNDPXtpZDphLk9QUy5zZXRTdHJva2VDb2xvcixudW1BcmdzOjQsdmFyaWFibGVBcmdzOiEwfSxlLlNDTj17aWQ6YS5PUFMuc2V0U3Ryb2tlQ29sb3JOLG51bUFyZ3M6MzMsdmFyaWFibGVBcmdzOiEwfSxlLnNjPXtpZDphLk9QUy5zZXRGaWxsQ29sb3IsbnVtQXJnczo0LHZhcmlhYmxlQXJnczohMH0sZS5zY249e2lkOmEuT1BTLnNldEZpbGxDb2xvck4sbnVtQXJnczozMyx2YXJpYWJsZUFyZ3M6ITB9LGUuRz17aWQ6YS5PUFMuc2V0U3Ryb2tlR3JheSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxlLmc9e2lkOmEuT1BTLnNldEZpbGxHcmF5LG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LGUuUkc9e2lkOmEuT1BTLnNldFN0cm9rZVJHQkNvbG9yLG51bUFyZ3M6Myx2YXJpYWJsZUFyZ3M6ITF9LGUucmc9e2lkOmEuT1BTLnNldEZpbGxSR0JDb2xvcixudW1BcmdzOjMsdmFyaWFibGVBcmdzOiExfSxlLks9e2lkOmEuT1BTLnNldFN0cm9rZUNNWUtDb2xvcixudW1BcmdzOjQsdmFyaWFibGVBcmdzOiExfSxlLms9e2lkOmEuT1BTLnNldEZpbGxDTVlLQ29sb3IsbnVtQXJnczo0LHZhcmlhYmxlQXJnczohMX0sZS5zaD17aWQ6YS5PUFMuc2hhZGluZ0ZpbGwsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sZS5CST17aWQ6YS5PUFMuYmVnaW5JbmxpbmVJbWFnZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxlLklEPXtpZDphLk9QUy5iZWdpbkltYWdlRGF0YSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxlLkVJPXtpZDphLk9QUy5lbmRJbmxpbmVJbWFnZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxlLkRvPXtpZDphLk9QUy5wYWludFhPYmplY3QsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sZS5NUD17aWQ6YS5PUFMubWFya1BvaW50LG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LGUuRFA9e2lkOmEuT1BTLm1hcmtQb2ludFByb3BzLG51bUFyZ3M6Mix2YXJpYWJsZUFyZ3M6ITF9LGUuQk1DPXtpZDphLk9QUy5iZWdpbk1hcmtlZENvbnRlbnQsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sZS5CREM9e2lkOmEuT1BTLmJlZ2luTWFya2VkQ29udGVudFByb3BzLG51bUFyZ3M6Mix2YXJpYWJsZUFyZ3M6ITF9LGUuRU1DPXtpZDphLk9QUy5lbmRNYXJrZWRDb250ZW50LG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LGUuQlg9e2lkOmEuT1BTLmJlZ2luQ29tcGF0LG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LGUuRVg9e2lkOmEuT1BTLmVuZENvbXBhdCxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxlLkJNPW51bGwsZS5CRD1udWxsLGUudHJ1ZT1udWxsLGUuZmE9bnVsbCxlLmZhbD1udWxsLGUuZmFscz1udWxsLGUuZmFsc2U9bnVsbCxlLm51PW51bGwsZS5udWw9bnVsbCxlLm51bGw9bnVsbH0pKTtyZXR1cm4oMCxhLnNoYWRvdykodGhpcywib3BNYXAiLGUoKSl9fSx7a2V5OiJNQVhfSU5WQUxJRF9QQVRIX09QUyIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuKDAsYS5zaGFkb3cpKHRoaXMsIk1BWF9JTlZBTElEX1BBVEhfT1BTIiwxMCl9fV0pLGV9KCk7dC5FdmFsdWF0b3JQcmVwcm9jZXNzb3I9S30sKGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LklkZW50aXR5Q01hcD10LkNNYXBGYWN0b3J5PXQuQ01hcD12b2lkIDA7dmFyIG49cigyKSxhPXIoMTM0KSxpPXIoMTM2KSxvPXIoMTQ2KSxzPXIoMTM1KSxjPXIoMTM5KTtmdW5jdGlvbiB1KCl7dT1mdW5jdGlvbigpe3JldHVybiBlfTt2YXIgZT17fSx0PU9iamVjdC5wcm90b3R5cGUscj10Lmhhc093blByb3BlcnR5LG49T2JqZWN0LmRlZmluZVByb3BlcnR5fHxmdW5jdGlvbihlLHQscil7ZVt0XT1yLnZhbHVlfSxhPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2w/U3ltYm9sOnt9LGk9YS5pdGVyYXRvcnx8IkBAaXRlcmF0b3IiLG89YS5hc3luY0l0ZXJhdG9yfHwiQEBhc3luY0l0ZXJhdG9yIixzPWEudG9TdHJpbmdUYWd8fCJAQHRvU3RyaW5nVGFnIjtmdW5jdGlvbiBjKGUsdCxyKXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6cixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pLGVbdF19dHJ5e2Moe30sIiIpfWNhdGNoKGUpe2M9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlW3RdPXJ9fWZ1bmN0aW9uIGwoZSx0LHIsYSl7dmFyIGk9dCYmdC5wcm90b3R5cGUgaW5zdGFuY2VvZiBkP3Q6ZCxvPU9iamVjdC5jcmVhdGUoaS5wcm90b3R5cGUpLHM9bmV3IEYoYXx8W10pO3JldHVybiBuKG8sIl9pbnZva2UiLHt2YWx1ZTp4KGUscixzKX0pLG99ZnVuY3Rpb24gZihlLHQscil7dHJ5e3JldHVybnt0eXBlOiJub3JtYWwiLGFyZzplLmNhbGwodCxyKX19Y2F0Y2goZSl7cmV0dXJue3R5cGU6InRocm93Iixhcmc6ZX19fWUud3JhcD1sO3ZhciBoPXt9O2Z1bmN0aW9uIGQoKXt9ZnVuY3Rpb24gZygpe31mdW5jdGlvbiB2KCl7fXZhciB5PXt9O2MoeSxpLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpO3ZhciBtPU9iamVjdC5nZXRQcm90b3R5cGVPZixiPW0mJm0obShQKFtdKSkpO2ImJmIhPT10JiZyLmNhbGwoYixpKSYmKHk9Yik7dmFyIHc9di5wcm90b3R5cGU9ZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh5KTtmdW5jdGlvbiBrKGUpe1sibmV4dCIsInRocm93IiwicmV0dXJuIl0uZm9yRWFjaCgoZnVuY3Rpb24odCl7YyhlLHQsKGZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9pbnZva2UodCxlKX0pKX0pKX1mdW5jdGlvbiBTKGUsdCl7ZnVuY3Rpb24gYShuLGksbyxzKXt2YXIgYz1mKGVbbl0sZSxpKTtpZigidGhyb3ciIT09Yy50eXBlKXt2YXIgdT1jLmFyZyxsPXUudmFsdWU7cmV0dXJuIGwmJiJvYmplY3QiPT1wKGwpJiZyLmNhbGwobCwiX19hd2FpdCIpP3QucmVzb2x2ZShsLl9fYXdhaXQpLnRoZW4oKGZ1bmN0aW9uKGUpe2EoIm5leHQiLGUsbyxzKX0pLChmdW5jdGlvbihlKXthKCJ0aHJvdyIsZSxvLHMpfSkpOnQucmVzb2x2ZShsKS50aGVuKChmdW5jdGlvbihlKXt1LnZhbHVlPWUsbyh1KX0pLChmdW5jdGlvbihlKXtyZXR1cm4gYSgidGhyb3ciLGUsbyxzKX0pKX1zKGMuYXJnKX12YXIgaTtuKHRoaXMsIl9pbnZva2UiLHt2YWx1ZTpmdW5jdGlvbihlLHIpe2Z1bmN0aW9uIG4oKXtyZXR1cm4gbmV3IHQoKGZ1bmN0aW9uKHQsbil7YShlLHIsdCxuKX0pKX1yZXR1cm4gaT1pP2kudGhlbihuLG4pOm4oKX19KX1mdW5jdGlvbiB4KGUsdCxyKXt2YXIgbj0ic3VzcGVuZGVkU3RhcnQiO3JldHVybiBmdW5jdGlvbihhLGkpe2lmKCJleGVjdXRpbmciPT09bil0aHJvdyBuZXcgRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmciKTtpZigiY29tcGxldGVkIj09PW4pe2lmKCJ0aHJvdyI9PT1hKXRocm93IGk7cmV0dXJue3ZhbHVlOnZvaWQgMCxkb25lOiEwfX1mb3Ioci5tZXRob2Q9YSxyLmFyZz1pOzspe3ZhciBvPXIuZGVsZWdhdGU7aWYobyl7dmFyIHM9TyhvLHIpO2lmKHMpe2lmKHM9PT1oKWNvbnRpbnVlO3JldHVybiBzfX1pZigibmV4dCI9PT1yLm1ldGhvZClyLnNlbnQ9ci5fc2VudD1yLmFyZztlbHNlIGlmKCJ0aHJvdyI9PT1yLm1ldGhvZCl7aWYoInN1c3BlbmRlZFN0YXJ0Ij09PW4pdGhyb3cgbj0iY29tcGxldGVkIixyLmFyZztyLmRpc3BhdGNoRXhjZXB0aW9uKHIuYXJnKX1lbHNlInJldHVybiI9PT1yLm1ldGhvZCYmci5hYnJ1cHQoInJldHVybiIsci5hcmcpO249ImV4ZWN1dGluZyI7dmFyIGM9ZihlLHQscik7aWYoIm5vcm1hbCI9PT1jLnR5cGUpe2lmKG49ci5kb25lPyJjb21wbGV0ZWQiOiJzdXNwZW5kZWRZaWVsZCIsYy5hcmc9PT1oKWNvbnRpbnVlO3JldHVybnt2YWx1ZTpjLmFyZyxkb25lOnIuZG9uZX19InRocm93Ij09PWMudHlwZSYmKG49ImNvbXBsZXRlZCIsci5tZXRob2Q9InRocm93IixyLmFyZz1jLmFyZyl9fX1mdW5jdGlvbiBPKGUsdCl7dmFyIHI9dC5tZXRob2Qsbj1lLml0ZXJhdG9yW3JdO2lmKHZvaWQgMD09PW4pcmV0dXJuIHQuZGVsZWdhdGU9bnVsbCwidGhyb3ciPT09ciYmZS5pdGVyYXRvci5yZXR1cm4mJih0Lm1ldGhvZD0icmV0dXJuIix0LmFyZz12b2lkIDAsTyhlLHQpLCJ0aHJvdyI9PT10Lm1ldGhvZCl8fCJyZXR1cm4iIT09ciYmKHQubWV0aG9kPSJ0aHJvdyIsdC5hcmc9bmV3IFR5cGVFcnJvcigiVGhlIGl0ZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgYSAnIityKyInIG1ldGhvZCIpKSxoO3ZhciBhPWYobixlLml0ZXJhdG9yLHQuYXJnKTtpZigidGhyb3ciPT09YS50eXBlKXJldHVybiB0Lm1ldGhvZD0idGhyb3ciLHQuYXJnPWEuYXJnLHQuZGVsZWdhdGU9bnVsbCxoO3ZhciBpPWEuYXJnO3JldHVybiBpP2kuZG9uZT8odFtlLnJlc3VsdE5hbWVdPWkudmFsdWUsdC5uZXh0PWUubmV4dExvYywicmV0dXJuIiE9PXQubWV0aG9kJiYodC5tZXRob2Q9Im5leHQiLHQuYXJnPXZvaWQgMCksdC5kZWxlZ2F0ZT1udWxsLGgpOmk6KHQubWV0aG9kPSJ0aHJvdyIsdC5hcmc9bmV3IFR5cGVFcnJvcigiaXRlcmF0b3IgcmVzdWx0IGlzIG5vdCBhbiBvYmplY3QiKSx0LmRlbGVnYXRlPW51bGwsaCl9ZnVuY3Rpb24gQShlKXt2YXIgdD17dHJ5TG9jOmVbMF19OzEgaW4gZSYmKHQuY2F0Y2hMb2M9ZVsxXSksMiBpbiBlJiYodC5maW5hbGx5TG9jPWVbMl0sdC5hZnRlckxvYz1lWzNdKSx0aGlzLnRyeUVudHJpZXMucHVzaCh0KX1mdW5jdGlvbiBDKGUpe3ZhciB0PWUuY29tcGxldGlvbnx8e307dC50eXBlPSJub3JtYWwiLGRlbGV0ZSB0LmFyZyxlLmNvbXBsZXRpb249dH1mdW5jdGlvbiBGKGUpe3RoaXMudHJ5RW50cmllcz1be3RyeUxvYzoicm9vdCJ9XSxlLmZvckVhY2goQSx0aGlzKSx0aGlzLnJlc2V0KCEwKX1mdW5jdGlvbiBQKGUpe2lmKGUpe3ZhciB0PWVbaV07aWYodClyZXR1cm4gdC5jYWxsKGUpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBlLm5leHQpcmV0dXJuIGU7aWYoIWlzTmFOKGUubGVuZ3RoKSl7dmFyIG49LTEsYT1mdW5jdGlvbiB0KCl7Zm9yKDsrK248ZS5sZW5ndGg7KWlmKHIuY2FsbChlLG4pKXJldHVybiB0LnZhbHVlPWVbbl0sdC5kb25lPSExLHQ7cmV0dXJuIHQudmFsdWU9dm9pZCAwLHQuZG9uZT0hMCx0fTtyZXR1cm4gYS5uZXh0PWF9fXJldHVybntuZXh0OlR9fWZ1bmN0aW9uIFQoKXtyZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9fXJldHVybiBnLnByb3RvdHlwZT12LG4odywiY29uc3RydWN0b3IiLHt2YWx1ZTp2LGNvbmZpZ3VyYWJsZTohMH0pLG4odiwiY29uc3RydWN0b3IiLHt2YWx1ZTpnLGNvbmZpZ3VyYWJsZTohMH0pLGcuZGlzcGxheU5hbWU9Yyh2LHMsIkdlbmVyYXRvckZ1bmN0aW9uIiksZS5pc0dlbmVyYXRvckZ1bmN0aW9uPWZ1bmN0aW9uKGUpe3ZhciB0PSJmdW5jdGlvbiI9PXR5cGVvZiBlJiZlLmNvbnN0cnVjdG9yO3JldHVybiEhdCYmKHQ9PT1nfHwiR2VuZXJhdG9yRnVuY3Rpb24iPT09KHQuZGlzcGxheU5hbWV8fHQubmFtZSkpfSxlLm1hcms9ZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YoZSx2KTooZS5fX3Byb3RvX189dixjKGUscywiR2VuZXJhdG9yRnVuY3Rpb24iKSksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh3KSxlfSxlLmF3cmFwPWZ1bmN0aW9uKGUpe3JldHVybntfX2F3YWl0OmV9fSxrKFMucHJvdG90eXBlKSxjKFMucHJvdG90eXBlLG8sKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSksZS5Bc3luY0l0ZXJhdG9yPVMsZS5hc3luYz1mdW5jdGlvbih0LHIsbixhLGkpe3ZvaWQgMD09PWkmJihpPVByb21pc2UpO3ZhciBvPW5ldyBTKGwodCxyLG4sYSksaSk7cmV0dXJuIGUuaXNHZW5lcmF0b3JGdW5jdGlvbihyKT9vOm8ubmV4dCgpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBlLmRvbmU/ZS52YWx1ZTpvLm5leHQoKX0pKX0sayh3KSxjKHcscywiR2VuZXJhdG9yIiksYyh3LGksKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSksYyh3LCJ0b1N0cmluZyIsKGZ1bmN0aW9uKCl7cmV0dXJuIltvYmplY3QgR2VuZXJhdG9yXSJ9KSksZS5rZXlzPWZ1bmN0aW9uKGUpe3ZhciB0PU9iamVjdChlKSxyPVtdO2Zvcih2YXIgbiBpbiB0KXIucHVzaChuKTtyZXR1cm4gci5yZXZlcnNlKCksZnVuY3Rpb24gZSgpe2Zvcig7ci5sZW5ndGg7KXt2YXIgbj1yLnBvcCgpO2lmKG4gaW4gdClyZXR1cm4gZS52YWx1ZT1uLGUuZG9uZT0hMSxlfXJldHVybiBlLmRvbmU9ITAsZX19LGUudmFsdWVzPVAsRi5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOkYscmVzZXQ6ZnVuY3Rpb24oZSl7aWYodGhpcy5wcmV2PTAsdGhpcy5uZXh0PTAsdGhpcy5zZW50PXRoaXMuX3NlbnQ9dm9pZCAwLHRoaXMuZG9uZT0hMSx0aGlzLmRlbGVnYXRlPW51bGwsdGhpcy5tZXRob2Q9Im5leHQiLHRoaXMuYXJnPXZvaWQgMCx0aGlzLnRyeUVudHJpZXMuZm9yRWFjaChDKSwhZSlmb3IodmFyIHQgaW4gdGhpcykidCI9PT10LmNoYXJBdCgwKSYmci5jYWxsKHRoaXMsdCkmJiFpc05hTigrdC5zbGljZSgxKSkmJih0aGlzW3RdPXZvaWQgMCl9LHN0b3A6ZnVuY3Rpb24oKXt0aGlzLmRvbmU9ITA7dmFyIGU9dGhpcy50cnlFbnRyaWVzWzBdLmNvbXBsZXRpb247aWYoInRocm93Ij09PWUudHlwZSl0aHJvdyBlLmFyZztyZXR1cm4gdGhpcy5ydmFsfSxkaXNwYXRjaEV4Y2VwdGlvbjpmdW5jdGlvbihlKXtpZih0aGlzLmRvbmUpdGhyb3cgZTt2YXIgdD10aGlzO2Z1bmN0aW9uIG4ocixuKXtyZXR1cm4gby50eXBlPSJ0aHJvdyIsby5hcmc9ZSx0Lm5leHQ9cixuJiYodC5tZXRob2Q9Im5leHQiLHQuYXJnPXZvaWQgMCksISFufWZvcih2YXIgYT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7YT49MDstLWEpe3ZhciBpPXRoaXMudHJ5RW50cmllc1thXSxvPWkuY29tcGxldGlvbjtpZigicm9vdCI9PT1pLnRyeUxvYylyZXR1cm4gbigiZW5kIik7aWYoaS50cnlMb2M8PXRoaXMucHJldil7dmFyIHM9ci5jYWxsKGksImNhdGNoTG9jIiksYz1yLmNhbGwoaSwiZmluYWxseUxvYyIpO2lmKHMmJmMpe2lmKHRoaXMucHJldjxpLmNhdGNoTG9jKXJldHVybiBuKGkuY2F0Y2hMb2MsITApO2lmKHRoaXMucHJldjxpLmZpbmFsbHlMb2MpcmV0dXJuIG4oaS5maW5hbGx5TG9jKX1lbHNlIGlmKHMpe2lmKHRoaXMucHJldjxpLmNhdGNoTG9jKXJldHVybiBuKGkuY2F0Y2hMb2MsITApfWVsc2V7aWYoIWMpdGhyb3cgbmV3IEVycm9yKCJ0cnkgc3RhdGVtZW50IHdpdGhvdXQgY2F0Y2ggb3IgZmluYWxseSIpO2lmKHRoaXMucHJldjxpLmZpbmFsbHlMb2MpcmV0dXJuIG4oaS5maW5hbGx5TG9jKX19fX0sYWJydXB0OmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtuPj0wOy0tbil7dmFyIGE9dGhpcy50cnlFbnRyaWVzW25dO2lmKGEudHJ5TG9jPD10aGlzLnByZXYmJnIuY2FsbChhLCJmaW5hbGx5TG9jIikmJnRoaXMucHJldjxhLmZpbmFsbHlMb2Mpe3ZhciBpPWE7YnJlYWt9fWkmJigiYnJlYWsiPT09ZXx8ImNvbnRpbnVlIj09PWUpJiZpLnRyeUxvYzw9dCYmdDw9aS5maW5hbGx5TG9jJiYoaT1udWxsKTt2YXIgbz1pP2kuY29tcGxldGlvbjp7fTtyZXR1cm4gby50eXBlPWUsby5hcmc9dCxpPyh0aGlzLm1ldGhvZD0ibmV4dCIsdGhpcy5uZXh0PWkuZmluYWxseUxvYyxoKTp0aGlzLmNvbXBsZXRlKG8pfSxjb21wbGV0ZTpmdW5jdGlvbihlLHQpe2lmKCJ0aHJvdyI9PT1lLnR5cGUpdGhyb3cgZS5hcmc7cmV0dXJuImJyZWFrIj09PWUudHlwZXx8ImNvbnRpbnVlIj09PWUudHlwZT90aGlzLm5leHQ9ZS5hcmc6InJldHVybiI9PT1lLnR5cGU/KHRoaXMucnZhbD10aGlzLmFyZz1lLmFyZyx0aGlzLm1ldGhvZD0icmV0dXJuIix0aGlzLm5leHQ9ImVuZCIpOiJub3JtYWwiPT09ZS50eXBlJiZ0JiYodGhpcy5uZXh0PXQpLGh9LGZpbmlzaDpmdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO3Q+PTA7LS10KXt2YXIgcj10aGlzLnRyeUVudHJpZXNbdF07aWYoci5maW5hbGx5TG9jPT09ZSlyZXR1cm4gdGhpcy5jb21wbGV0ZShyLmNvbXBsZXRpb24sci5hZnRlckxvYyksQyhyKSxofX0sY2F0Y2g6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTt0Pj0wOy0tdCl7dmFyIHI9dGhpcy50cnlFbnRyaWVzW3RdO2lmKHIudHJ5TG9jPT09ZSl7dmFyIG49ci5jb21wbGV0aW9uO2lmKCJ0aHJvdyI9PT1uLnR5cGUpe3ZhciBhPW4uYXJnO0Mocil9cmV0dXJuIGF9fXRocm93IG5ldyBFcnJvcigiaWxsZWdhbCBjYXRjaCBhdHRlbXB0Iil9LGRlbGVnYXRlWWllbGQ6ZnVuY3Rpb24oZSx0LHIpe3JldHVybiB0aGlzLmRlbGVnYXRlPXtpdGVyYXRvcjpQKGUpLHJlc3VsdE5hbWU6dCxuZXh0TG9jOnJ9LCJuZXh0Ij09PXRoaXMubWV0aG9kJiYodGhpcy5hcmc9dm9pZCAwKSxofX0sZX1mdW5jdGlvbiBsKGUsdCxyLG4sYSxpLG8pe3RyeXt2YXIgcz1lW2ldKG8pLGM9cy52YWx1ZX1jYXRjaChlKXtyZXR1cm4gdm9pZCByKGUpfXMuZG9uZT90KGMpOlByb21pc2UucmVzb2x2ZShjKS50aGVuKG4sYSl9ZnVuY3Rpb24gZihlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdD10aGlzLHI9YXJndW1lbnRzO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24obixhKXt2YXIgaT1lLmFwcGx5KHQscik7ZnVuY3Rpb24gbyhlKXtsKGksbixhLG8scywibmV4dCIsZSl9ZnVuY3Rpb24gcyhlKXtsKGksbixhLG8scywidGhyb3ciLGUpfW8odm9pZCAwKX0pKX19ZnVuY3Rpb24gaChlLHQpe3JldHVybiBoPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuX19wcm90b19fPXQsZX0saChlLHQpfWZ1bmN0aW9uIGQoZSl7cmV0dXJuIGQ9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSl9LGQoZSl9ZnVuY3Rpb24gcChlKXtyZXR1cm4gcD0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZX0scChlKX1mdW5jdGlvbiBnKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gdihlLHQpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgbj10W3JdO24uZW51bWVyYWJsZT1uLmVudW1lcmFibGV8fCExLG4uY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBuJiYobi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsKHZvaWQgMCxhPWZ1bmN0aW9uKGUsdCl7aWYoIm9iamVjdCIhPT1wKGUpfHxudWxsPT09ZSlyZXR1cm4gZTt2YXIgcj1lW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09cil7dmFyIG49ci5jYWxsKGUsInN0cmluZyIpO2lmKCJvYmplY3QiIT09cChuKSlyZXR1cm4gbjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybiBTdHJpbmcoZSl9KG4ua2V5KSwic3ltYm9sIj09PXAoYSk/YTpTdHJpbmcoYSkpLG4pfXZhciBhfWZ1bmN0aW9uIHkoZSx0LHIpe3JldHVybiB0JiZ2KGUucHJvdG90eXBlLHQpLHImJnYoZSxyKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxlfXZhciBtPVsiQWRvYmUtR0IxLVVDUzIiLCJBZG9iZS1DTlMxLVVDUzIiLCJBZG9iZS1KYXBhbjEtVUNTMiIsIkFkb2JlLUtvcmVhMS1VQ1MyIiwiNzgtRVVDLUgiLCI3OC1FVUMtViIsIjc4LUgiLCI3OC1SS1NKLUgiLCI3OC1SS1NKLVYiLCI3OC1WIiwiNzhtcy1SS1NKLUgiLCI3OG1zLVJLU0otViIsIjgzcHYtUktTSi1IIiwiOTBtcy1SS1NKLUgiLCI5MG1zLVJLU0otViIsIjkwbXNwLVJLU0otSCIsIjkwbXNwLVJLU0otViIsIjkwcHYtUktTSi1IIiwiOTBwdi1SS1NKLVYiLCJBZGQtSCIsIkFkZC1SS1NKLUgiLCJBZGQtUktTSi1WIiwiQWRkLVYiLCJBZG9iZS1DTlMxLTAiLCJBZG9iZS1DTlMxLTEiLCJBZG9iZS1DTlMxLTIiLCJBZG9iZS1DTlMxLTMiLCJBZG9iZS1DTlMxLTQiLCJBZG9iZS1DTlMxLTUiLCJBZG9iZS1DTlMxLTYiLCJBZG9iZS1HQjEtMCIsIkFkb2JlLUdCMS0xIiwiQWRvYmUtR0IxLTIiLCJBZG9iZS1HQjEtMyIsIkFkb2JlLUdCMS00IiwiQWRvYmUtR0IxLTUiLCJBZG9iZS1KYXBhbjEtMCIsIkFkb2JlLUphcGFuMS0xIiwiQWRvYmUtSmFwYW4xLTIiLCJBZG9iZS1KYXBhbjEtMyIsIkFkb2JlLUphcGFuMS00IiwiQWRvYmUtSmFwYW4xLTUiLCJBZG9iZS1KYXBhbjEtNiIsIkFkb2JlLUtvcmVhMS0wIiwiQWRvYmUtS29yZWExLTEiLCJBZG9iZS1Lb3JlYTEtMiIsIkI1LUgiLCJCNS1WIiwiQjVwYy1IIiwiQjVwYy1WIiwiQ05TLUVVQy1IIiwiQ05TLUVVQy1WIiwiQ05TMS1IIiwiQ05TMS1WIiwiQ05TMi1IIiwiQ05TMi1WIiwiRVRISy1CNS1IIiwiRVRISy1CNS1WIiwiRVRlbi1CNS1IIiwiRVRlbi1CNS1WIiwiRVRlbm1zLUI1LUgiLCJFVGVubXMtQjUtViIsIkVVQy1IIiwiRVVDLVYiLCJFeHQtSCIsIkV4dC1SS1NKLUgiLCJFeHQtUktTSi1WIiwiRXh0LVYiLCJHQi1FVUMtSCIsIkdCLUVVQy1WIiwiR0ItSCIsIkdCLVYiLCJHQkstRVVDLUgiLCJHQkstRVVDLVYiLCJHQksySy1IIiwiR0JLMkstViIsIkdCS3AtRVVDLUgiLCJHQktwLUVVQy1WIiwiR0JULUVVQy1IIiwiR0JULUVVQy1WIiwiR0JULUgiLCJHQlQtViIsIkdCVHBjLUVVQy1IIiwiR0JUcGMtRVVDLVYiLCJHQnBjLUVVQy1IIiwiR0JwYy1FVUMtViIsIkgiLCJIS2RsYS1CNS1IIiwiSEtkbGEtQjUtViIsIkhLZGxiLUI1LUgiLCJIS2RsYi1CNS1WIiwiSEtnY2NzLUI1LUgiLCJIS2djY3MtQjUtViIsIkhLbTMxNC1CNS1IIiwiSEttMzE0LUI1LVYiLCJIS200NzEtQjUtSCIsIkhLbTQ3MS1CNS1WIiwiSEtzY3MtQjUtSCIsIkhLc2NzLUI1LVYiLCJIYW5rYWt1IiwiSGlyYWdhbmEiLCJLU0MtRVVDLUgiLCJLU0MtRVVDLVYiLCJLU0MtSCIsIktTQy1Kb2hhYi1IIiwiS1NDLUpvaGFiLVYiLCJLU0MtViIsIktTQ21zLVVIQy1IIiwiS1NDbXMtVUhDLUhXLUgiLCJLU0Ntcy1VSEMtSFctViIsIktTQ21zLVVIQy1WIiwiS1NDcGMtRVVDLUgiLCJLU0NwYy1FVUMtViIsIkthdGFrYW5hIiwiTldQLUgiLCJOV1AtViIsIlJLU0otSCIsIlJLU0otViIsIlJvbWFuIiwiVW5pQ05TLVVDUzItSCIsIlVuaUNOUy1VQ1MyLVYiLCJVbmlDTlMtVVRGMTYtSCIsIlVuaUNOUy1VVEYxNi1WIiwiVW5pQ05TLVVURjMyLUgiLCJVbmlDTlMtVVRGMzItViIsIlVuaUNOUy1VVEY4LUgiLCJVbmlDTlMtVVRGOC1WIiwiVW5pR0ItVUNTMi1IIiwiVW5pR0ItVUNTMi1WIiwiVW5pR0ItVVRGMTYtSCIsIlVuaUdCLVVURjE2LVYiLCJVbmlHQi1VVEYzMi1IIiwiVW5pR0ItVVRGMzItViIsIlVuaUdCLVVURjgtSCIsIlVuaUdCLVVURjgtViIsIlVuaUpJUy1VQ1MyLUgiLCJVbmlKSVMtVUNTMi1IVy1IIiwiVW5pSklTLVVDUzItSFctViIsIlVuaUpJUy1VQ1MyLVYiLCJVbmlKSVMtVVRGMTYtSCIsIlVuaUpJUy1VVEYxNi1WIiwiVW5pSklTLVVURjMyLUgiLCJVbmlKSVMtVVRGMzItViIsIlVuaUpJUy1VVEY4LUgiLCJVbmlKSVMtVVRGOC1WIiwiVW5pSklTMjAwNC1VVEYxNi1IIiwiVW5pSklTMjAwNC1VVEYxNi1WIiwiVW5pSklTMjAwNC1VVEYzMi1IIiwiVW5pSklTMjAwNC1VVEYzMi1WIiwiVW5pSklTMjAwNC1VVEY4LUgiLCJVbmlKSVMyMDA0LVVURjgtViIsIlVuaUpJU1Byby1VQ1MyLUhXLVYiLCJVbmlKSVNQcm8tVUNTMi1WIiwiVW5pSklTUHJvLVVURjgtViIsIlVuaUpJU1gwMjEzLVVURjMyLUgiLCJVbmlKSVNYMDIxMy1VVEYzMi1WIiwiVW5pSklTWDAyMTMyMDA0LVVURjMyLUgiLCJVbmlKSVNYMDIxMzIwMDQtVVRGMzItViIsIlVuaUtTLVVDUzItSCIsIlVuaUtTLVVDUzItViIsIlVuaUtTLVVURjE2LUgiLCJVbmlLUy1VVEYxNi1WIiwiVW5pS1MtVVRGMzItSCIsIlVuaUtTLVVURjMyLVYiLCJVbmlLUy1VVEY4LUgiLCJVbmlLUy1VVEY4LVYiLCJWIiwiV1AtU3ltYm9sIl0sYj1NYXRoLnBvdygyLDI0KS0xLHc9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0mJmFyZ3VtZW50c1swXTtnKHRoaXMsZSksdGhpcy5jb2Rlc3BhY2VSYW5nZXM9W1tdLFtdLFtdLFtdXSx0aGlzLm51bUNvZGVzcGFjZVJhbmdlcz0wLHRoaXMuX21hcD1bXSx0aGlzLm5hbWU9IiIsdGhpcy52ZXJ0aWNhbD0hMSx0aGlzLnVzZUNNYXA9bnVsbCx0aGlzLmJ1aWx0SW5DTWFwPXR9cmV0dXJuIHkoZSxbe2tleToiYWRkQ29kZXNwYWNlUmFuZ2UiLHZhbHVlOmZ1bmN0aW9uKGUsdCxyKXt0aGlzLmNvZGVzcGFjZVJhbmdlc1tlLTFdLnB1c2godCxyKSx0aGlzLm51bUNvZGVzcGFjZVJhbmdlcysrfX0se2tleToibWFwQ2lkUmFuZ2UiLHZhbHVlOmZ1bmN0aW9uKGUsdCxyKXtpZih0LWU+Yil0aHJvdyBuZXcgRXJyb3IoIm1hcENpZFJhbmdlIC0gaWdub3JpbmcgZGF0YSBhYm92ZSBNQVhfTUFQX1JBTkdFLiIpO2Zvcig7ZTw9dDspdGhpcy5fbWFwW2UrK109cisrfX0se2tleToibWFwQmZSYW5nZSIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIpe2lmKHQtZT5iKXRocm93IG5ldyBFcnJvcigibWFwQmZSYW5nZSAtIGlnbm9yaW5nIGRhdGEgYWJvdmUgTUFYX01BUF9SQU5HRS4iKTtmb3IodmFyIG49ci5sZW5ndGgtMTtlPD10Oyl7dGhpcy5fbWFwW2UrK109cjt2YXIgYT1yLmNoYXJDb2RlQXQobikrMTtyPWE+MjU1P3Iuc3Vic3RyaW5nKDAsbi0xKStTdHJpbmcuZnJvbUNoYXJDb2RlKHIuY2hhckNvZGVBdChuLTEpKzEpKyJcMCI6ci5zdWJzdHJpbmcoMCxuKStTdHJpbmcuZnJvbUNoYXJDb2RlKGEpfX19LHtrZXk6Im1hcEJmUmFuZ2VUb0FycmF5Iix2YWx1ZTpmdW5jdGlvbihlLHQscil7aWYodC1lPmIpdGhyb3cgbmV3IEVycm9yKCJtYXBCZlJhbmdlVG9BcnJheSAtIGlnbm9yaW5nIGRhdGEgYWJvdmUgTUFYX01BUF9SQU5HRS4iKTtmb3IodmFyIG49ci5sZW5ndGgsYT0wO2U8PXQmJmE8bjspdGhpcy5fbWFwW2VdPXJbYSsrXSwrK2V9fSx7a2V5OiJtYXBPbmUiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dGhpcy5fbWFwW2VdPXR9fSx7a2V5OiJsb29rdXAiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9tYXBbZV19fSx7a2V5OiJjb250YWlucyIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMCE9PXRoaXMuX21hcFtlXX19LHtrZXk6ImZvckVhY2giLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX21hcCxyPXQubGVuZ3RoO2lmKHI8PTY1NTM2KWZvcih2YXIgbj0wO248cjtuKyspdm9pZCAwIT09dFtuXSYmZShuLHRbbl0pO2Vsc2UgZm9yKHZhciBhIGluIHQpZShhLHRbYV0pfX0se2tleToiY2hhckNvZGVPZiIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fbWFwO2lmKHQubGVuZ3RoPD02NTUzNilyZXR1cm4gdC5pbmRleE9mKGUpO2Zvcih2YXIgciBpbiB0KWlmKHRbcl09PT1lKXJldHVybiAwfHI7cmV0dXJuLTF9fSx7a2V5OiJnZXRNYXAiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21hcH19LHtrZXk6InJlYWRDaGFyQ29kZSIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIpe2Zvcih2YXIgbj0wLGE9dGhpcy5jb2Rlc3BhY2VSYW5nZXMsaT0wLG89YS5sZW5ndGg7aTxvO2krKyl7bj0objw8OHxlLmNoYXJDb2RlQXQodCtpKSk+Pj4wO2Zvcih2YXIgcz1hW2ldLGM9MCx1PXMubGVuZ3RoO2M8dTspe3ZhciBsPXNbYysrXSxmPXNbYysrXTtpZihuPj1sJiZuPD1mKXJldHVybiByLmNoYXJjb2RlPW4sdm9pZChyLmxlbmd0aD1pKzEpfX1yLmNoYXJjb2RlPTAsci5sZW5ndGg9MX19LHtrZXk6ImdldENoYXJDb2RlTGVuZ3RoIix2YWx1ZTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpcy5jb2Rlc3BhY2VSYW5nZXMscj0wLG49dC5sZW5ndGg7cjxuO3IrKylmb3IodmFyIGE9dFtyXSxpPTAsbz1hLmxlbmd0aDtpPG87KXt2YXIgcz1hW2krK10sYz1hW2krK107aWYoZT49cyYmZTw9YylyZXR1cm4gcisxfXJldHVybiAxfX0se2tleToibGVuZ3RoIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbWFwLmxlbmd0aH19LHtrZXk6ImlzSWRlbnRpdHlDTWFwIixnZXQ6ZnVuY3Rpb24oKXtpZigiSWRlbnRpdHktSCIhPT10aGlzLm5hbWUmJiJJZGVudGl0eS1WIiE9PXRoaXMubmFtZSlyZXR1cm4hMTtpZig2NTUzNiE9PXRoaXMuX21hcC5sZW5ndGgpcmV0dXJuITE7Zm9yKHZhciBlPTA7ZTw2NTUzNjtlKyspaWYodGhpcy5fbWFwW2VdIT09ZSlyZXR1cm4hMTtyZXR1cm4hMH19XSksZX0oKTt0LkNNYXA9dzt2YXIgaz1mdW5jdGlvbihlKXshZnVuY3Rpb24oZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksdCYmaChlLHQpfShpLGUpO3ZhciB0LHIsYT0odD1pLHI9ZnVuY3Rpb24oKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdClyZXR1cm4hMTtpZihSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLChmdW5jdGlvbigpe30pKSksITB9Y2F0Y2goZSl7cmV0dXJuITF9fSgpLGZ1bmN0aW9uKCl7dmFyIGUsbj1kKHQpO2lmKHIpe3ZhciBhPWQodGhpcykuY29uc3RydWN0b3I7ZT1SZWZsZWN0LmNvbnN0cnVjdChuLGFyZ3VtZW50cyxhKX1lbHNlIGU9bi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYodCYmKCJvYmplY3QiPT09cCh0KXx8ImZ1bmN0aW9uIj09dHlwZW9mIHQpKXJldHVybiB0O2lmKHZvaWQgMCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24oZSl7aWYodm9pZCAwPT09ZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBlfShlKX0odGhpcyxlKX0pO2Z1bmN0aW9uIGkoZSx0KXt2YXIgcjtyZXR1cm4gZyh0aGlzLGkpLChyPWEuY2FsbCh0aGlzKSkudmVydGljYWw9ZSxyLmFkZENvZGVzcGFjZVJhbmdlKHQsMCw2NTUzNSkscn1yZXR1cm4geShpLFt7a2V5OiJtYXBDaWRSYW5nZSIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIpeygwLG4udW5yZWFjaGFibGUpKCJzaG91bGQgbm90IGNhbGwgbWFwQ2lkUmFuZ2UiKX19LHtrZXk6Im1hcEJmUmFuZ2UiLHZhbHVlOmZ1bmN0aW9uKGUsdCxyKXsoMCxuLnVucmVhY2hhYmxlKSgic2hvdWxkIG5vdCBjYWxsIG1hcEJmUmFuZ2UiKX19LHtrZXk6Im1hcEJmUmFuZ2VUb0FycmF5Iix2YWx1ZTpmdW5jdGlvbihlLHQscil7KDAsbi51bnJlYWNoYWJsZSkoInNob3VsZCBub3QgY2FsbCBtYXBCZlJhbmdlVG9BcnJheSIpfX0se2tleToibWFwT25lIix2YWx1ZTpmdW5jdGlvbihlLHQpeygwLG4udW5yZWFjaGFibGUpKCJzaG91bGQgbm90IGNhbGwgbWFwQ2lkT25lIil9fSx7a2V5OiJsb29rdXAiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBOdW1iZXIuaXNJbnRlZ2VyKGUpJiZlPD02NTUzNT9lOnZvaWQgMH19LHtrZXk6ImNvbnRhaW5zIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihlKSYmZTw9NjU1MzV9fSx7a2V5OiJmb3JFYWNoIix2YWx1ZTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PD02NTUzNTt0KyspZSh0LHQpfX0se2tleToiY2hhckNvZGVPZiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIE51bWJlci5pc0ludGVnZXIoZSkmJmU8PTY1NTM1P2U6LTF9fSx7a2V5OiJnZXRNYXAiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciBlPW5ldyBBcnJheSg2NTUzNiksdD0wO3Q8PTY1NTM1O3QrKyllW3RdPXQ7cmV0dXJuIGV9fSx7a2V5OiJsZW5ndGgiLGdldDpmdW5jdGlvbigpe3JldHVybiA2NTUzNn19LHtrZXk6ImlzSWRlbnRpdHlDTWFwIixnZXQ6ZnVuY3Rpb24oKXsoMCxuLnVucmVhY2hhYmxlKSgic2hvdWxkIG5vdCBhY2Nlc3MgLmlzSWRlbnRpdHlDTWFwIil9fV0pLGl9KHcpO3QuSWRlbnRpdHlDTWFwPWs7dmFyIFM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7Zm9yKHZhciByPTAsbj0wO248PXQ7bisrKXI9cjw8OHxlW25dO3JldHVybiByPj4+MH1mdW5jdGlvbiB0KGUsdCl7cmV0dXJuIDE9PT10P1N0cmluZy5mcm9tQ2hhckNvZGUoZVswXSxlWzFdKTozPT09dD9TdHJpbmcuZnJvbUNoYXJDb2RlKGVbMF0sZVsxXSxlWzJdLGVbM10pOlN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCxlLnN1YmFycmF5KDAsdCsxKSl9ZnVuY3Rpb24gcihlLHQscil7Zm9yKHZhciBuPTAsYT1yO2E+PTA7YS0tKW4rPWVbYV0rdFthXSxlW2FdPTI1NSZuLG4+Pj04fWZ1bmN0aW9uIGEoZSx0KXtmb3IodmFyIHI9MSxuPXQ7bj49MCYmcj4wO24tLSlyKz1lW25dLGVbbl09MjU1JnIscj4+PTh9dmFyIGk9MTYsbz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCl7Zyh0aGlzLGUpLHRoaXMuYnVmZmVyPXQsdGhpcy5wb3M9MCx0aGlzLmVuZD10Lmxlbmd0aCx0aGlzLnRtcEJ1Zj1uZXcgVWludDhBcnJheSgxOSl9cmV0dXJuIHkoZSxbe2tleToicmVhZEJ5dGUiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucG9zPj10aGlzLmVuZD8tMTp0aGlzLmJ1ZmZlclt0aGlzLnBvcysrXX19LHtrZXk6InJlYWROdW1iZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGUsdD0wO2Rve3ZhciByPXRoaXMucmVhZEJ5dGUoKTtpZihyPDApdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoInVuZXhwZWN0ZWQgRU9GIGluIGJjbWFwIik7ZT0hKDEyOCZyKSx0PXQ8PDd8MTI3JnJ9d2hpbGUoIWUpO3JldHVybiB0fX0se2tleToicmVhZFNpZ25lZCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnJlYWROdW1iZXIoKTtyZXR1cm4gMSZlP34oZT4+PjEpOmU+Pj4xfX0se2tleToicmVhZEhleCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtlLnNldCh0aGlzLmJ1ZmZlci5zdWJhcnJheSh0aGlzLnBvcyx0aGlzLnBvcyt0KzEpKSx0aGlzLnBvcys9dCsxfX0se2tleToicmVhZEhleE51bWJlciIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgcixhPXRoaXMudG1wQnVmLGk9MDtkb3t2YXIgbz10aGlzLnJlYWRCeXRlKCk7aWYobzwwKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJ1bmV4cGVjdGVkIEVPRiBpbiBiY21hcCIpO3I9ISgxMjgmbyksYVtpKytdPTEyNyZvfXdoaWxlKCFyKTtmb3IodmFyIHM9dCxjPTAsdT0wO3M+PTA7KXtmb3IoO3U8OCYmYS5sZW5ndGg+MDspY3w9YVstLWldPDx1LHUrPTc7ZVtzXT0yNTUmYyxzLS0sYz4+PTgsdS09OH19fSx7a2V5OiJyZWFkSGV4U2lnbmVkIix2YWx1ZTpmdW5jdGlvbihlLHQpe3RoaXMucmVhZEhleE51bWJlcihlLHQpO2Zvcih2YXIgcj0xJmVbdF0/MjU1OjAsbj0wLGE9MDthPD10O2ErKyluPSgxJm4pPDw4fGVbYV0sZVthXT1uPj4xXnJ9fSx7a2V5OiJyZWFkU3RyaW5nIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgZT10aGlzLnJlYWROdW1iZXIoKSx0PSIiLHI9MDtyPGU7cisrKXQrPVN0cmluZy5mcm9tQ2hhckNvZGUodGhpcy5yZWFkTnVtYmVyKCkpO3JldHVybiB0fX1dKSxlfSgpLHM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKCl7Zyh0aGlzLG4pfXZhciBzO3JldHVybiB5KG4sW3trZXk6InByb2Nlc3MiLHZhbHVlOihzPWYodSgpLm1hcmsoKGZ1bmN0aW9uIG4ocyxjLGwpe3ZhciBmLGgsZCxwLGcsdix5LG0sYix3LGssUyx4LE8sQSxDLEYsUCxULEksRTtyZXR1cm4gdSgpLndyYXAoKGZ1bmN0aW9uKG4pe2Zvcig7Oylzd2l0Y2gobi5wcmV2PW4ubmV4dCl7Y2FzZSAwOmY9bmV3IG8ocyksaD1mLnJlYWRCeXRlKCksYy52ZXJ0aWNhbD0hISgxJmgpLGQ9bnVsbCxwPW5ldyBVaW50OEFycmF5KGkpLGc9bmV3IFVpbnQ4QXJyYXkoaSksdj1uZXcgVWludDhBcnJheShpKSx5PW5ldyBVaW50OEFycmF5KGkpLG09bmV3IFVpbnQ4QXJyYXkoaSk7Y2FzZSA5OmlmKCEoKHc9Zi5yZWFkQnl0ZSgpKT49MCkpe24ubmV4dD02ODticmVha31pZig3IT0oaz13Pj41KSl7bi5uZXh0PTIwO2JyZWFrfW4udDA9MzEmdyxuLm5leHQ9MD09PW4udDA/MTU6MT09PW4udDA/MTc6MTk7YnJlYWs7Y2FzZSAxNTpyZXR1cm4gZi5yZWFkU3RyaW5nKCksbi5hYnJ1cHQoImJyZWFrIiwxOSk7Y2FzZSAxNzpyZXR1cm4gZD1mLnJlYWRTdHJpbmcoKSxuLmFicnVwdCgiYnJlYWsiLDE5KTtjYXNlIDE5OnJldHVybiBuLmFicnVwdCgiY29udGludWUiLDkpO2Nhc2UgMjA6aWYoUz0hISgxNiZ3KSwhKDErKHg9MTUmdyk+aSkpe24ubmV4dD0yNDticmVha310aHJvdyBuZXcgRXJyb3IoIkJpbmFyeUNNYXBSZWFkZXIucHJvY2VzczogSW52YWxpZCBkYXRhU2l6ZS4iKTtjYXNlIDI0Ok89MSxBPWYucmVhZE51bWJlcigpLG4udDE9ayxuLm5leHQ9MD09PW4udDE/Mjk6MT09PW4udDE/MzU6Mj09PW4udDE/NDE6Mz09PW4udDE/NDY6ND09PW4udDE/NTM6NT09PW4udDE/NTg6NjU7YnJlYWs7Y2FzZSAyOTpmb3IoZi5yZWFkSGV4KHAseCksZi5yZWFkSGV4TnVtYmVyKGcseCkscihnLHAseCksYy5hZGRDb2Rlc3BhY2VSYW5nZSh4KzEsZShwLHgpLGUoZyx4KSksQz0xO0M8QTtDKyspYShnLHgpLGYucmVhZEhleE51bWJlcihwLHgpLHIocCxnLHgpLGYucmVhZEhleE51bWJlcihnLHgpLHIoZyxwLHgpLGMuYWRkQ29kZXNwYWNlUmFuZ2UoeCsxLGUocCx4KSxlKGcseCkpO3JldHVybiBuLmFicnVwdCgiYnJlYWsiLDY2KTtjYXNlIDM1OmZvcihmLnJlYWRIZXgocCx4KSxmLnJlYWRIZXhOdW1iZXIoZyx4KSxyKGcscCx4KSxmLnJlYWROdW1iZXIoKSxGPTE7RjxBO0YrKylhKGcseCksZi5yZWFkSGV4TnVtYmVyKHAseCkscihwLGcseCksZi5yZWFkSGV4TnVtYmVyKGcseCkscihnLHAseCksZi5yZWFkTnVtYmVyKCk7cmV0dXJuIG4uYWJydXB0KCJicmVhayIsNjYpO2Nhc2UgNDE6Zm9yKGYucmVhZEhleCh2LHgpLGI9Zi5yZWFkTnVtYmVyKCksYy5tYXBPbmUoZSh2LHgpLGIpLFA9MTtQPEE7UCsrKWEodix4KSxTfHwoZi5yZWFkSGV4TnVtYmVyKG0seCkscih2LG0seCkpLGI9Zi5yZWFkU2lnbmVkKCkrKGIrMSksYy5tYXBPbmUoZSh2LHgpLGIpO3JldHVybiBuLmFicnVwdCgiYnJlYWsiLDY2KTtjYXNlIDQ2OmZvcihmLnJlYWRIZXgocCx4KSxmLnJlYWRIZXhOdW1iZXIoZyx4KSxyKGcscCx4KSxiPWYucmVhZE51bWJlcigpLGMubWFwQ2lkUmFuZ2UoZShwLHgpLGUoZyx4KSxiKSxUPTE7VDxBO1QrKylhKGcseCksUz9wLnNldChnKTooZi5yZWFkSGV4TnVtYmVyKHAseCkscihwLGcseCkpLGYucmVhZEhleE51bWJlcihnLHgpLHIoZyxwLHgpLGI9Zi5yZWFkTnVtYmVyKCksYy5tYXBDaWRSYW5nZShlKHAseCksZShnLHgpLGIpO3JldHVybiBuLmFicnVwdCgiYnJlYWsiLDY2KTtjYXNlIDUzOmZvcihmLnJlYWRIZXgodixPKSxmLnJlYWRIZXgoeSx4KSxjLm1hcE9uZShlKHYsTyksdCh5LHgpKSxJPTE7STxBO0krKylhKHYsTyksU3x8KGYucmVhZEhleE51bWJlcihtLE8pLHIodixtLE8pKSxhKHkseCksZi5yZWFkSGV4U2lnbmVkKG0seCkscih5LG0seCksYy5tYXBPbmUoZSh2LE8pLHQoeSx4KSk7cmV0dXJuIG4uYWJydXB0KCJicmVhayIsNjYpO2Nhc2UgNTg6Zm9yKGYucmVhZEhleChwLE8pLGYucmVhZEhleE51bWJlcihnLE8pLHIoZyxwLE8pLGYucmVhZEhleCh5LHgpLGMubWFwQmZSYW5nZShlKHAsTyksZShnLE8pLHQoeSx4KSksRT0xO0U8QTtFKyspYShnLE8pLFM/cC5zZXQoZyk6KGYucmVhZEhleE51bWJlcihwLE8pLHIocCxnLE8pKSxmLnJlYWRIZXhOdW1iZXIoZyxPKSxyKGcscCxPKSxmLnJlYWRIZXgoeSx4KSxjLm1hcEJmUmFuZ2UoZShwLE8pLGUoZyxPKSx0KHkseCkpO3JldHVybiBuLmFicnVwdCgiYnJlYWsiLDY2KTtjYXNlIDY1OnRocm93IG5ldyBFcnJvcigiQmluYXJ5Q01hcFJlYWRlci5wcm9jZXNzIC0gdW5rbm93biB0eXBlOiAiLmNvbmNhdChrKSk7Y2FzZSA2NjpuLm5leHQ9OTticmVhaztjYXNlIDY4OmlmKCFkKXtuLm5leHQ9NzA7YnJlYWt9cmV0dXJuIG4uYWJydXB0KCJyZXR1cm4iLGwoZCkpO2Nhc2UgNzA6cmV0dXJuIG4uYWJydXB0KCJyZXR1cm4iLGMpO2Nhc2UgNzE6Y2FzZSJlbmQiOnJldHVybiBuLnN0b3AoKX19KSxuKX0pKSksZnVuY3Rpb24oZSx0LHIpe3JldHVybiBzLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pfV0pLG59KCk7cmV0dXJuIHN9KCkseD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7Zm9yKHZhciB0PTAscj0wO3I8ZS5sZW5ndGg7cisrKXQ9dDw8OHxlLmNoYXJDb2RlQXQocik7cmV0dXJuIHQ+Pj4wfWZ1bmN0aW9uIHQoZSl7aWYoInN0cmluZyIhPXR5cGVvZiBlKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJNYWxmb3JtZWQgQ01hcDogZXhwZWN0ZWQgc3RyaW5nLiIpfWZ1bmN0aW9uIHIoZSl7aWYoIU51bWJlci5pc0ludGVnZXIoZSkpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIk1hbGZvcm1lZCBDTWFwOiBleHBlY3RlZCBpbnQuIil9ZnVuY3Rpb24gbChyLG4pe2Zvcig7Oyl7dmFyIGk9bi5nZXRPYmooKTtpZihpPT09YS5FT0YpYnJlYWs7aWYoKDAsYS5pc0NtZCkoaSwiZW5kYmZjaGFyIikpcmV0dXJuO3QoaSk7dmFyIG89ZShpKTt0KGk9bi5nZXRPYmooKSk7dmFyIHM9aTtyLm1hcE9uZShvLHMpfX1mdW5jdGlvbiBoKHIsaSl7Zm9yKDs7KXt2YXIgbz1pLmdldE9iaigpO2lmKG89PT1hLkVPRilicmVhaztpZigoMCxhLmlzQ21kKShvLCJlbmRiZnJhbmdlIikpcmV0dXJuO3Qobyk7dmFyIHM9ZShvKTt0KG89aS5nZXRPYmooKSk7dmFyIGM9ZShvKTtpZihvPWkuZ2V0T2JqKCksTnVtYmVyLmlzSW50ZWdlcihvKXx8InN0cmluZyI9PXR5cGVvZiBvKXt2YXIgdT1OdW1iZXIuaXNJbnRlZ2VyKG8pP1N0cmluZy5mcm9tQ2hhckNvZGUobyk6bztyLm1hcEJmUmFuZ2UocyxjLHUpfWVsc2V7aWYoISgwLGEuaXNDbWQpKG8sIlsiKSlicmVhaztvPWkuZ2V0T2JqKCk7Zm9yKHZhciBsPVtdOyEoMCxhLmlzQ21kKShvLCJdIikmJm8hPT1hLkVPRjspbC5wdXNoKG8pLG89aS5nZXRPYmooKTtyLm1hcEJmUmFuZ2VUb0FycmF5KHMsYyxsKX19dGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIkludmFsaWQgYmYgcmFuZ2UuIil9ZnVuY3Rpb24gZChuLGkpe2Zvcig7Oyl7dmFyIG89aS5nZXRPYmooKTtpZihvPT09YS5FT0YpYnJlYWs7aWYoKDAsYS5pc0NtZCkobywiZW5kY2lkY2hhciIpKXJldHVybjt0KG8pO3ZhciBzPWUobyk7cihvPWkuZ2V0T2JqKCkpO3ZhciBjPW87bi5tYXBPbmUocyxjKX19ZnVuY3Rpb24gcChuLGkpe2Zvcig7Oyl7dmFyIG89aS5nZXRPYmooKTtpZihvPT09YS5FT0YpYnJlYWs7aWYoKDAsYS5pc0NtZCkobywiZW5kY2lkcmFuZ2UiKSlyZXR1cm47dChvKTt2YXIgcz1lKG8pO3Qobz1pLmdldE9iaigpKTt2YXIgYz1lKG8pO3Iobz1pLmdldE9iaigpKTt2YXIgdT1vO24ubWFwQ2lkUmFuZ2UocyxjLHUpfX1mdW5jdGlvbiBnKHQscil7Zm9yKDs7KXt2YXIgaT1yLmdldE9iaigpO2lmKGk9PT1hLkVPRilicmVhaztpZigoMCxhLmlzQ21kKShpLCJlbmRjb2Rlc3BhY2VyYW5nZSIpKXJldHVybjtpZigic3RyaW5nIiE9dHlwZW9mIGkpYnJlYWs7dmFyIG89ZShpKTtpZigic3RyaW5nIiE9dHlwZW9mKGk9ci5nZXRPYmooKSkpYnJlYWs7dmFyIHM9ZShpKTt0LmFkZENvZGVzcGFjZVJhbmdlKGkubGVuZ3RoLG8scyl9dGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIkludmFsaWQgY29kZXNwYWNlIHJhbmdlLiIpfWZ1bmN0aW9uIHYoZSx0KXt2YXIgcj10LmdldE9iaigpO051bWJlci5pc0ludGVnZXIocikmJihlLnZlcnRpY2FsPSEhcil9ZnVuY3Rpb24geShlLHQpe3ZhciByPXQuZ2V0T2JqKCk7ciBpbnN0YW5jZW9mIGEuTmFtZSYmKGUubmFtZT1yLm5hbWUpfWZ1bmN0aW9uIGIoZSx0LHIsbil7cmV0dXJuIHguYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIHgoKXtyZXR1cm4oeD1mKHUoKS5tYXJrKChmdW5jdGlvbiBlKHQscixpLG8pe3ZhciBjLGYsbTtyZXR1cm4gdSgpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOmlmKGUucHJldj0xLChtPXIuZ2V0T2JqKCkpIT09YS5FT0Ype2UubmV4dD03O2JyZWFrfXJldHVybiBlLmFicnVwdCgiYnJlYWsiLDM5KTtjYXNlIDc6aWYoIShtIGluc3RhbmNlb2YgYS5OYW1lKSl7ZS5uZXh0PTEyO2JyZWFrfSJXTW9kZSI9PT1tLm5hbWU/dih0LHIpOiJDTWFwTmFtZSI9PT1tLm5hbWUmJnkodCxyKSxjPW0sZS5uZXh0PTI5O2JyZWFrO2Nhc2UgMTI6aWYoIShtIGluc3RhbmNlb2YgYS5DbWQpKXtlLm5leHQ9Mjk7YnJlYWt9ZS50MD1tLmNtZCxlLm5leHQ9ImVuZGNtYXAiPT09ZS50MD8xNjoidXNlY21hcCI9PT1lLnQwPzE3OiJiZWdpbmNvZGVzcGFjZXJhbmdlIj09PWUudDA/MTk6ImJlZ2luYmZjaGFyIj09PWUudDA/MjE6ImJlZ2luY2lkY2hhciI9PT1lLnQwPzIzOiJiZWdpbmJmcmFuZ2UiPT09ZS50MD8yNToiYmVnaW5jaWRyYW5nZSI9PT1lLnQwPzI3OjI5O2JyZWFrO2Nhc2UgMTY6cmV0dXJuIGUuYWJydXB0KCJicmVhayIsMzkpO2Nhc2UgMTc6cmV0dXJuIGMgaW5zdGFuY2VvZiBhLk5hbWUmJihmPWMubmFtZSksZS5hYnJ1cHQoImJyZWFrIiwyOSk7Y2FzZSAxOTpyZXR1cm4gZyh0LHIpLGUuYWJydXB0KCJicmVhayIsMjkpO2Nhc2UgMjE6cmV0dXJuIGwodCxyKSxlLmFicnVwdCgiYnJlYWsiLDI5KTtjYXNlIDIzOnJldHVybiBkKHQsciksZS5hYnJ1cHQoImJyZWFrIiwyOSk7Y2FzZSAyNTpyZXR1cm4gaCh0LHIpLGUuYWJydXB0KCJicmVhayIsMjkpO2Nhc2UgMjc6cmV0dXJuIHAodCxyKSxlLmFicnVwdCgiYnJlYWsiLDI5KTtjYXNlIDI5OmUubmV4dD0zNzticmVhaztjYXNlIDMxOmlmKGUucHJldj0zMSxlLnQxPWUuY2F0Y2goMSksIShlLnQxIGluc3RhbmNlb2Ygcy5NaXNzaW5nRGF0YUV4Y2VwdGlvbikpe2UubmV4dD0zNTticmVha310aHJvdyBlLnQxO2Nhc2UgMzU6cmV0dXJuKDAsbi53YXJuKSgiSW52YWxpZCBjTWFwIGRhdGE6ICIrZS50MSksZS5hYnJ1cHQoImNvbnRpbnVlIiwwKTtjYXNlIDM3OmUubmV4dD0wO2JyZWFrO2Nhc2UgMzk6aWYoIW8mJmYmJihvPWYpLCFvKXtlLm5leHQ9NDI7YnJlYWt9cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLE8odCxpLG8pKTtjYXNlIDQyOnJldHVybiBlLmFicnVwdCgicmV0dXJuIix0KTtjYXNlIDQzOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSxudWxsLFtbMSwzMV1dKX0pKSkpLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBPKGUsdCxyKXtyZXR1cm4gQS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gQSgpe3JldHVybihBPWYodSgpLm1hcmsoKGZ1bmN0aW9uIGUodCxyLG4pe3ZhciBhLGk7cmV0dXJuIHUoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsQyhuLHIpO2Nhc2UgMjppZih0LnVzZUNNYXA9ZS5zZW50LDA9PT10Lm51bUNvZGVzcGFjZVJhbmdlcyl7Zm9yKGE9dC51c2VDTWFwLmNvZGVzcGFjZVJhbmdlcyxpPTA7aTxhLmxlbmd0aDtpKyspdC5jb2Rlc3BhY2VSYW5nZXNbaV09YVtpXS5zbGljZSgpO3QubnVtQ29kZXNwYWNlUmFuZ2VzPXQudXNlQ01hcC5udW1Db2Rlc3BhY2VSYW5nZXN9cmV0dXJuIHQudXNlQ01hcC5mb3JFYWNoKChmdW5jdGlvbihlLHIpe3QuY29udGFpbnMoZSl8fHQubWFwT25lKGUsdC51c2VDTWFwLmxvb2t1cChlKSl9KSksZS5hYnJ1cHQoInJldHVybiIsdCk7Y2FzZSA2OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpKS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gQyhlLHQpe3JldHVybiBGLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBGKCl7cmV0dXJuKEY9Zih1KCkubWFyaygoZnVuY3Rpb24gZSh0LHIpe3ZhciBhLGkscyxsLGY7cmV0dXJuIHUoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDppZigiSWRlbnRpdHktSCIhPT10KXtlLm5leHQ9NDticmVha31yZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsbmV3IGsoITEsMikpO2Nhc2UgNDppZigiSWRlbnRpdHktViIhPT10KXtlLm5leHQ9NjticmVha31yZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsbmV3IGsoITAsMikpO2Nhc2UgNjppZihtLmluY2x1ZGVzKHQpKXtlLm5leHQ9ODticmVha310aHJvdyBuZXcgRXJyb3IoIlVua25vd24gQ01hcCBuYW1lOiAiK3QpO2Nhc2UgODppZihyKXtlLm5leHQ9MTA7YnJlYWt9dGhyb3cgbmV3IEVycm9yKCJCdWlsdC1pbiBDTWFwIHBhcmFtZXRlcnMgYXJlIG5vdCBwcm92aWRlZC4iKTtjYXNlIDEwOnJldHVybiBlLm5leHQ9MTIscih0KTtjYXNlIDEyOmlmKGE9ZS5zZW50LGk9YS5jTWFwRGF0YSxzPWEuY29tcHJlc3Npb25UeXBlLGw9bmV3IHcoITApLHMhPT1uLkNNYXBDb21wcmVzc2lvblR5cGUuQklOQVJZKXtlLm5leHQ9MTg7YnJlYWt9cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLChuZXcgUykucHJvY2VzcyhpLGwsKGZ1bmN0aW9uKGUpe3JldHVybiBPKGwscixlKX0pKSk7Y2FzZSAxODppZihzIT09bi5DTWFwQ29tcHJlc3Npb25UeXBlLk5PTkUpe2UubmV4dD0yMTticmVha31yZXR1cm4gZj1uZXcgby5MZXhlcihuZXcgYy5TdHJlYW0oaSkpLGUuYWJydXB0KCJyZXR1cm4iLGIobCxmLHIsbnVsbCkpO2Nhc2UgMjE6dGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIENNYXAgImNvbXByZXNzaW9uVHlwZSIgdmFsdWU6ICcuY29uY2F0KHMpKTtjYXNlIDIyOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpKS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJue2NyZWF0ZTpmdW5jdGlvbihlKXtyZXR1cm4gZih1KCkubWFyaygoZnVuY3Rpb24gdCgpe3ZhciByLG4scyxjO3JldHVybiB1KCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6aWYocj1lLmVuY29kaW5nLG49ZS5mZXRjaEJ1aWx0SW5DTWFwLHM9ZS51c2VDTWFwLCEociBpbnN0YW5jZW9mIGEuTmFtZSkpe3QubmV4dD03O2JyZWFrfXJldHVybiB0LmFicnVwdCgicmV0dXJuIixDKHIubmFtZSxuKSk7Y2FzZSA3OmlmKCEociBpbnN0YW5jZW9mIGkuQmFzZVN0cmVhbSkpe3QubmV4dD0xNDticmVha31yZXR1cm4gdC5uZXh0PTEwLGIobmV3IHcsbmV3IG8uTGV4ZXIociksbixzKTtjYXNlIDEwOmlmKCEoYz10LnNlbnQpLmlzSWRlbnRpdHlDTWFwKXt0Lm5leHQ9MTM7YnJlYWt9cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLEMoYy5uYW1lLG4pKTtjYXNlIDEzOnJldHVybiB0LmFicnVwdCgicmV0dXJuIixjKTtjYXNlIDE0OnRocm93IG5ldyBFcnJvcigiRW5jb2RpbmcgcmVxdWlyZWQuIik7Y2FzZSAxNTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQpfSkpKSgpfX19KCk7dC5DTWFwRmFjdG9yeT14fSwoZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuUGFyc2VyPXQuTGluZWFyaXphdGlvbj10LkxleGVyPXZvaWQgMDt2YXIgbj1yKDIpLGE9cigxMzQpLGk9cigxMzUpLG89cigxNDcpLHM9cigxNDkpLGM9cigxNTApLHU9cigxNTIpLGw9cigxNTMpLGY9cigxNTYpLGg9cigxNTgpLGQ9cigxNjApLHA9cigxMzkpLGc9cigxNjEpLHY9cigxNjIpO2Z1bmN0aW9uIHkoZSl7cmV0dXJuIHk9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGV9LHkoZSl9ZnVuY3Rpb24gbShlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIGIoZSx0KXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIG49dFtyXTtuLmVudW1lcmFibGU9bi5lbnVtZXJhYmxlfHwhMSxuLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gbiYmKG4ud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCh2b2lkIDAsYT1mdW5jdGlvbihlLHQpe2lmKCJvYmplY3QiIT09eShlKXx8bnVsbD09PWUpcmV0dXJuIGU7dmFyIHI9ZVtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PXIpe3ZhciBuPXIuY2FsbChlLCJzdHJpbmciKTtpZigib2JqZWN0IiE9PXkobikpcmV0dXJuIG47dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4gU3RyaW5nKGUpfShuLmtleSksInN5bWJvbCI9PT15KGEpP2E6U3RyaW5nKGEpKSxuKX12YXIgYX1mdW5jdGlvbiB3KGUsdCxyKXtyZXR1cm4gdCYmYihlLnByb3RvdHlwZSx0KSxyJiZiKGUsciksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZX12YXIgaz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCl7dmFyIHI9dC5sZXhlcixuPXQueHJlZixhPXQuYWxsb3dTdHJlYW1zLGk9dm9pZCAwIT09YSYmYSxvPXQucmVjb3ZlcnlNb2RlLHM9dm9pZCAwIT09byYmbzttKHRoaXMsZSksdGhpcy5sZXhlcj1yLHRoaXMueHJlZj1uLHRoaXMuYWxsb3dTdHJlYW1zPWksdGhpcy5yZWNvdmVyeU1vZGU9cyx0aGlzLmltYWdlQ2FjaGU9T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLl9pbWFnZUlkPTAsdGhpcy5yZWZpbGwoKX1yZXR1cm4gdyhlLFt7a2V5OiJyZWZpbGwiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5idWYxPXRoaXMubGV4ZXIuZ2V0T2JqKCksdGhpcy5idWYyPXRoaXMubGV4ZXIuZ2V0T2JqKCl9fSx7a2V5OiJzaGlmdCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmJ1ZjIgaW5zdGFuY2VvZiBhLkNtZCYmIklEIj09PXRoaXMuYnVmMi5jbWQ/KHRoaXMuYnVmMT10aGlzLmJ1ZjIsdGhpcy5idWYyPW51bGwpOih0aGlzLmJ1ZjE9dGhpcy5idWYyLHRoaXMuYnVmMj10aGlzLmxleGVyLmdldE9iaigpKX19LHtrZXk6InRyeVNoaWZ0Iix2YWx1ZTpmdW5jdGlvbigpe3RyeXtyZXR1cm4gdGhpcy5zaGlmdCgpLCEwfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBpLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7cmV0dXJuITF9fX0se2tleToiZ2V0T2JqIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpudWxsLHQ9dGhpcy5idWYxO2lmKHRoaXMuc2hpZnQoKSx0IGluc3RhbmNlb2YgYS5DbWQpc3dpdGNoKHQuY21kKXtjYXNlIkJJIjpyZXR1cm4gdGhpcy5tYWtlSW5saW5lSW1hZ2UoZSk7Y2FzZSJbIjpmb3IodmFyIHI9W107ISgwLGEuaXNDbWQpKHRoaXMuYnVmMSwiXSIpJiZ0aGlzLmJ1ZjEhPT1hLkVPRjspci5wdXNoKHRoaXMuZ2V0T2JqKGUpKTtpZih0aGlzLmJ1ZjE9PT1hLkVPRil7aWYodGhpcy5yZWNvdmVyeU1vZGUpcmV0dXJuIHI7dGhyb3cgbmV3IGkuUGFyc2VyRU9GRXhjZXB0aW9uKCJFbmQgb2YgZmlsZSBpbnNpZGUgYXJyYXkuIil9cmV0dXJuIHRoaXMuc2hpZnQoKSxyO2Nhc2UiPDwiOmZvcih2YXIgbz1uZXcgYS5EaWN0KHRoaXMueHJlZik7ISgwLGEuaXNDbWQpKHRoaXMuYnVmMSwiPj4iKSYmdGhpcy5idWYxIT09YS5FT0Y7KWlmKHRoaXMuYnVmMSBpbnN0YW5jZW9mIGEuTmFtZSl7dmFyIHM9dGhpcy5idWYxLm5hbWU7aWYodGhpcy5zaGlmdCgpLHRoaXMuYnVmMT09PWEuRU9GKWJyZWFrO28uc2V0KHMsdGhpcy5nZXRPYmooZSkpfWVsc2UoMCxuLmluZm8pKCJNYWxmb3JtZWQgZGljdGlvbmFyeToga2V5IG11c3QgYmUgYSBuYW1lIG9iamVjdCIpLHRoaXMuc2hpZnQoKTtpZih0aGlzLmJ1ZjE9PT1hLkVPRil7aWYodGhpcy5yZWNvdmVyeU1vZGUpcmV0dXJuIG87dGhyb3cgbmV3IGkuUGFyc2VyRU9GRXhjZXB0aW9uKCJFbmQgb2YgZmlsZSBpbnNpZGUgZGljdGlvbmFyeS4iKX1yZXR1cm4oMCxhLmlzQ21kKSh0aGlzLmJ1ZjIsInN0cmVhbSIpP3RoaXMuYWxsb3dTdHJlYW1zP3RoaXMubWFrZVN0cmVhbShvLGUpOm86KHRoaXMuc2hpZnQoKSxvKTtkZWZhdWx0OnJldHVybiB0fWlmKE51bWJlci5pc0ludGVnZXIodCkpe2lmKE51bWJlci5pc0ludGVnZXIodGhpcy5idWYxKSYmKDAsYS5pc0NtZCkodGhpcy5idWYyLCJSIikpe3ZhciBjPWEuUmVmLmdldCh0LHRoaXMuYnVmMSk7cmV0dXJuIHRoaXMuc2hpZnQoKSx0aGlzLnNoaWZ0KCksY31yZXR1cm4gdH1yZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQmJmU/ZS5kZWNyeXB0U3RyaW5nKHQpOnR9fSx7a2V5OiJmaW5kRGVmYXVsdElubGluZVN0cmVhbUVuZCIsdmFsdWU6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LHIsbz10aGlzLmxleGVyLHM9ZS5wb3MsYz0wOy0xIT09KHQ9ZS5nZXRCeXRlKCkpOylpZigwPT09YyljPTY5PT09dD8xOjA7ZWxzZSBpZigxPT09YyljPTczPT09dD8yOjA7ZWxzZSBpZigzMj09PXR8fDEwPT09dHx8MTM9PT10KXtyPWUucG9zO2Zvcih2YXIgdT1lLnBlZWtCeXRlcygxMCksbD0wLGY9dS5sZW5ndGg7bDxmO2wrKylpZigoMCE9PSh0PXVbbF0pfHwwPT09dVtsKzFdKSYmMTAhPT10JiYxMyE9PXQmJih0PDMyfHx0PjEyNykpe2M9MDticmVha31pZigyIT09Yyljb250aW51ZTtpZihvLmtub3duQ29tbWFuZHMpe3ZhciBoPW8ucGVla09iaigpO2ggaW5zdGFuY2VvZiBhLkNtZCYmIW8ua25vd25Db21tYW5kc1toLmNtZF0mJihjPTApfWVsc2UoMCxuLndhcm4pKCJmaW5kRGVmYXVsdElubGluZVN0cmVhbUVuZCAtIGBsZXhlci5rbm93bkNvbW1hbmRzYCBpcyB1bmRlZmluZWQuIik7aWYoMj09PWMpYnJlYWt9ZWxzZSBjPTA7LTE9PT10JiYoKDAsbi53YXJuKSgiZmluZERlZmF1bHRJbmxpbmVTdHJlYW1FbmQ6IFJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgc3RyZWFtIHdpdGhvdXQgZmluZGluZyBhIHZhbGlkIEVJIG1hcmtlciIpLHImJigoMCxuLndhcm4pKCcuLi4gdHJ5aW5nIHRvIHJlY292ZXIgYnkgdXNpbmcgdGhlIGxhc3QgIkVJIiBvY2N1cnJlbmNlLicpLGUuc2tpcCgtKGUucG9zLXIpKSkpO3ZhciBkPTQ7cmV0dXJuIGUuc2tpcCgtZCksdD1lLnBlZWtCeXRlKCksZS5za2lwKGQpLCgwLGkuaXNXaGl0ZVNwYWNlKSh0KXx8ZC0tLGUucG9zLWQtc319LHtrZXk6ImZpbmREQ1REZWNvZGVJbmxpbmVTdHJlYW1FbmQiLHZhbHVlOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxyLGE9ZS5wb3MsaT0hMTstMSE9PSh0PWUuZ2V0Qnl0ZSgpKTspaWYoMjU1PT09dCl7c3dpdGNoKGUuZ2V0Qnl0ZSgpKXtjYXNlIDA6YnJlYWs7Y2FzZSAyNTU6ZS5za2lwKC0xKTticmVhaztjYXNlIDIxNzppPSEwO2JyZWFrO2Nhc2UgMTkyOmNhc2UgMTkzOmNhc2UgMTk0OmNhc2UgMTk1OmNhc2UgMTk3OmNhc2UgMTk4OmNhc2UgMTk5OmNhc2UgMjAxOmNhc2UgMjAyOmNhc2UgMjAzOmNhc2UgMjA1OmNhc2UgMjA2OmNhc2UgMjA3OmNhc2UgMTk2OmNhc2UgMjA0OmNhc2UgMjE4OmNhc2UgMjE5OmNhc2UgMjIwOmNhc2UgMjIxOmNhc2UgMjIyOmNhc2UgMjIzOmNhc2UgMjI0OmNhc2UgMjI1OmNhc2UgMjI2OmNhc2UgMjI3OmNhc2UgMjI4OmNhc2UgMjI5OmNhc2UgMjMwOmNhc2UgMjMxOmNhc2UgMjMyOmNhc2UgMjMzOmNhc2UgMjM0OmNhc2UgMjM1OmNhc2UgMjM2OmNhc2UgMjM3OmNhc2UgMjM4OmNhc2UgMjM5OmNhc2UgMjU0OihyPWUuZ2V0VWludDE2KCkpPjI/ZS5za2lwKHItMik6ZS5za2lwKC0yKX1pZihpKWJyZWFrfXZhciBvPWUucG9zLWE7cmV0dXJuLTE9PT10PygoMCxuLndhcm4pKCJJbmxpbmUgRENURGVjb2RlIGltYWdlIHN0cmVhbTogRU9JIG1hcmtlciBub3QgZm91bmQsIHNlYXJjaGluZyBmb3IgL0VJLyBpbnN0ZWFkLiIpLGUuc2tpcCgtbyksdGhpcy5maW5kRGVmYXVsdElubGluZVN0cmVhbUVuZChlKSk6KHRoaXMuaW5saW5lU3RyZWFtU2tpcEVJKGUpLG8pfX0se2tleToiZmluZEFTQ0lJODVEZWNvZGVJbmxpbmVTdHJlYW1FbmQiLHZhbHVlOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxyPWUucG9zOy0xIT09KHQ9ZS5nZXRCeXRlKCkpOylpZigxMjY9PT10KXt2YXIgYT1lLnBvcztmb3IodD1lLnBlZWtCeXRlKCk7KDAsaS5pc1doaXRlU3BhY2UpKHQpOyllLnNraXAoKSx0PWUucGVla0J5dGUoKTtpZig2Mj09PXQpe2Uuc2tpcCgpO2JyZWFrfWlmKGUucG9zPmEpe3ZhciBvPWUucGVla0J5dGVzKDIpO2lmKDY5PT09b1swXSYmNzM9PT1vWzFdKWJyZWFrfX12YXIgcz1lLnBvcy1yO3JldHVybi0xPT09dD8oKDAsbi53YXJuKSgiSW5saW5lIEFTQ0lJODVEZWNvZGUgaW1hZ2Ugc3RyZWFtOiBFT0QgbWFya2VyIG5vdCBmb3VuZCwgc2VhcmNoaW5nIGZvciAvRUkvIGluc3RlYWQuIiksZS5za2lwKC1zKSx0aGlzLmZpbmREZWZhdWx0SW5saW5lU3RyZWFtRW5kKGUpKToodGhpcy5pbmxpbmVTdHJlYW1Ta2lwRUkoZSkscyl9fSx7a2V5OiJmaW5kQVNDSUlIZXhEZWNvZGVJbmxpbmVTdHJlYW1FbmQiLHZhbHVlOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxyPWUucG9zOy0xIT09KHQ9ZS5nZXRCeXRlKCkpJiY2MiE9PXQ7KTt2YXIgYT1lLnBvcy1yO3JldHVybi0xPT09dD8oKDAsbi53YXJuKSgiSW5saW5lIEFTQ0lJSGV4RGVjb2RlIGltYWdlIHN0cmVhbTogRU9EIG1hcmtlciBub3QgZm91bmQsIHNlYXJjaGluZyBmb3IgL0VJLyBpbnN0ZWFkLiIpLGUuc2tpcCgtYSksdGhpcy5maW5kRGVmYXVsdElubGluZVN0cmVhbUVuZChlKSk6KHRoaXMuaW5saW5lU3RyZWFtU2tpcEVJKGUpLGEpfX0se2tleToiaW5saW5lU3RyZWFtU2tpcEVJIix2YWx1ZTpmdW5jdGlvbihlKXtmb3IodmFyIHQscj0wOy0xIT09KHQ9ZS5nZXRCeXRlKCkpOylpZigwPT09cilyPTY5PT09dD8xOjA7ZWxzZSBpZigxPT09cilyPTczPT09dD8yOjA7ZWxzZSBpZigyPT09cilicmVha319LHtrZXk6Im1ha2VJbmxpbmVJbWFnZSIsdmFsdWU6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LHI9dGhpcy5sZXhlcixpPXIuc3RyZWFtLG89T2JqZWN0LmNyZWF0ZShudWxsKTshKDAsYS5pc0NtZCkodGhpcy5idWYxLCJJRCIpJiZ0aGlzLmJ1ZjEhPT1hLkVPRjspe2lmKCEodGhpcy5idWYxIGluc3RhbmNlb2YgYS5OYW1lKSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiRGljdGlvbmFyeSBrZXkgbXVzdCBiZSBhIG5hbWUgb2JqZWN0Iik7dmFyIHM9dGhpcy5idWYxLm5hbWU7aWYodGhpcy5zaGlmdCgpLHRoaXMuYnVmMT09PWEuRU9GKWJyZWFrO29bc109dGhpcy5nZXRPYmooZSl9LTEhPT1yLmJlZ2luSW5saW5lSW1hZ2VQb3MmJih0PWkucG9zLXIuYmVnaW5JbmxpbmVJbWFnZVBvcyk7dmFyIGMsdT10aGlzLnhyZWYuZmV0Y2hJZlJlZihvLkZ8fG8uRmlsdGVyKTtpZih1IGluc3RhbmNlb2YgYS5OYW1lKWM9dS5uYW1lO2Vsc2UgaWYoQXJyYXkuaXNBcnJheSh1KSl7dmFyIGw9dGhpcy54cmVmLmZldGNoSWZSZWYodVswXSk7bCBpbnN0YW5jZW9mIGEuTmFtZSYmKGM9bC5uYW1lKX12YXIgZixoLGQ9aS5wb3M7c3dpdGNoKGMpe2Nhc2UiRENUIjpjYXNlIkRDVERlY29kZSI6Zj10aGlzLmZpbmREQ1REZWNvZGVJbmxpbmVTdHJlYW1FbmQoaSk7YnJlYWs7Y2FzZSJBODUiOmNhc2UiQVNDSUk4NURlY29kZSI6Zj10aGlzLmZpbmRBU0NJSTg1RGVjb2RlSW5saW5lU3RyZWFtRW5kKGkpO2JyZWFrO2Nhc2UiQUh4IjpjYXNlIkFTQ0lJSGV4RGVjb2RlIjpmPXRoaXMuZmluZEFTQ0lJSGV4RGVjb2RlSW5saW5lU3RyZWFtRW5kKGkpO2JyZWFrO2RlZmF1bHQ6Zj10aGlzLmZpbmREZWZhdWx0SW5saW5lU3RyZWFtRW5kKGkpfWlmKGY8MWUzJiZ0PjApe3ZhciBwPWkucG9zO2kucG9zPXIuYmVnaW5JbmxpbmVJbWFnZVBvcyxoPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1bXSxyPWUubGVuZ3RoLG49MDtuPHItMTspdC5wdXNoKGVbbisrXTw8OHxlW24rK10pO3JldHVybiBuPHImJnQucHVzaChlW25dKSxyKyJfIitTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsdCl9KGkuZ2V0Qnl0ZXModCtmKSksaS5wb3M9cDt2YXIgZz10aGlzLmltYWdlQ2FjaGVbaF07aWYodm9pZCAwIT09ZylyZXR1cm4gdGhpcy5idWYyPWEuQ21kLmdldCgiRUkiKSx0aGlzLnNoaWZ0KCksZy5yZXNldCgpLGd9dmFyIHY9bmV3IGEuRGljdCh0aGlzLnhyZWYpO2Zvcih2YXIgeSBpbiBvKXYuc2V0KHksb1t5XSk7dmFyIG09aS5tYWtlU3ViU3RyZWFtKGQsZix2KTtyZXR1cm4gZSYmKG09ZS5jcmVhdGVTdHJlYW0obSxmKSksKG09dGhpcy5maWx0ZXIobSx2LGYpKS5kaWN0PXYsdm9pZCAwIT09aCYmKG0uY2FjaGVLZXk9ImlubGluZV9pbWdfIi5jb25jYXQoKyt0aGlzLl9pbWFnZUlkKSx0aGlzLmltYWdlQ2FjaGVbaF09bSksdGhpcy5idWYyPWEuQ21kLmdldCgiRUkiKSx0aGlzLnNoaWZ0KCksbX19LHtrZXk6Il9maW5kU3RyZWFtTGVuZ3RoIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciByPXRoaXMubGV4ZXIuc3RyZWFtO3IucG9zPWU7Zm9yKHZhciBuPXQubGVuZ3RoO3IucG9zPHIuZW5kOyl7dmFyIGE9ci5wZWVrQnl0ZXMoMjA0OCksaT1hLmxlbmd0aC1uO2lmKGk8PTApYnJlYWs7Zm9yKHZhciBvPTA7bzxpOyl7Zm9yKHZhciBzPTA7czxuJiZhW28rc109PT10W3NdOylzKys7aWYocz49bilyZXR1cm4gci5wb3MrPW8sci5wb3MtZTtvKyt9ci5wb3MrPWl9cmV0dXJuLTF9fSx7a2V5OiJtYWtlU3RyZWFtIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciByPXRoaXMubGV4ZXIsbz1yLnN0cmVhbTtyLnNraXBUb05leHRMaW5lKCk7dmFyIHM9by5wb3MtMSxjPWUuZ2V0KCJMZW5ndGgiKTtpZihOdW1iZXIuaXNJbnRlZ2VyKGMpfHwoKDAsbi5pbmZvKSgnQmFkIGxlbmd0aCAiJy5jb25jYXQoYyYmYy50b1N0cmluZygpLCciIGluIHN0cmVhbS4nKSksYz0wKSxvLnBvcz1zK2Msci5uZXh0Q2hhcigpLHRoaXMudHJ5U2hpZnQoKSYmKDAsYS5pc0NtZCkodGhpcy5idWYyLCJlbmRzdHJlYW0iKSl0aGlzLnNoaWZ0KCk7ZWxzZXt2YXIgdT1uZXcgVWludDhBcnJheShbMTAxLDExMCwxMDAsMTE1LDExNiwxMTQsMTAxLDk3LDEwOV0pLGw9dGhpcy5fZmluZFN0cmVhbUxlbmd0aChzLHUpO2lmKGw8MCl7Zm9yKHZhciBmPTE7Zjw9MTtmKyspe3ZhciBoPXUubGVuZ3RoLWYsZD11LnNsaWNlKDAsaCkscD10aGlzLl9maW5kU3RyZWFtTGVuZ3RoKHMsZCk7aWYocD49MCl7dmFyIGc9by5wZWVrQnl0ZXMoaCsxKVtoXTtpZighKDAsaS5pc1doaXRlU3BhY2UpKGcpKWJyZWFrOygwLG4uaW5mbykoJ0ZvdW5kICInLmNvbmNhdCgoMCxuLmJ5dGVzVG9TdHJpbmcpKGQpLCciIHdoZW4gJykrInNlYXJjaGluZyBmb3IgZW5kc3RyZWFtIGNvbW1hbmQuIiksbD1wO2JyZWFrfX1pZihsPDApdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIk1pc3NpbmcgZW5kc3RyZWFtIGNvbW1hbmQuIil9Yz1sLHIubmV4dENoYXIoKSx0aGlzLnNoaWZ0KCksdGhpcy5zaGlmdCgpfXJldHVybiB0aGlzLnNoaWZ0KCksbz1vLm1ha2VTdWJTdHJlYW0ocyxjLGUpLHQmJihvPXQuY3JlYXRlU3RyZWFtKG8sYykpLChvPXRoaXMuZmlsdGVyKG8sZSxjKSkuZGljdD1lLG99fSx7a2V5OiJmaWx0ZXIiLHZhbHVlOmZ1bmN0aW9uKGUsdCxyKXt2YXIgaT10LmdldCgiRiIsIkZpbHRlciIpLG89dC5nZXQoIkRQIiwiRGVjb2RlUGFybXMiKTtpZihpIGluc3RhbmNlb2YgYS5OYW1lKXJldHVybiBBcnJheS5pc0FycmF5KG8pJiYoMCxuLndhcm4pKCIvRGVjb2RlUGFybXMgc2hvdWxkIG5vdCBiZSBhbiBBcnJheSwgd2hlbiAvRmlsdGVyIGlzIGEgTmFtZS4iKSx0aGlzLm1ha2VGaWx0ZXIoZSxpLm5hbWUscixvKTt2YXIgcz1yO2lmKEFycmF5LmlzQXJyYXkoaSkpZm9yKHZhciBjPWksdT1vLGw9MCxmPWMubGVuZ3RoO2w8ZjsrK2wpe2lmKCEoKGk9dGhpcy54cmVmLmZldGNoSWZSZWYoY1tsXSkpaW5zdGFuY2VvZiBhLk5hbWUpKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCdCYWQgZmlsdGVyIG5hbWUgIicuY29uY2F0KGksJyInKSk7bz1udWxsLEFycmF5LmlzQXJyYXkodSkmJmwgaW4gdSYmKG89dGhpcy54cmVmLmZldGNoSWZSZWYodVtsXSkpLGU9dGhpcy5tYWtlRmlsdGVyKGUsaS5uYW1lLHMsbykscz1udWxsfXJldHVybiBlfX0se2tleToibWFrZUZpbHRlciIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIsYSl7aWYoMD09PXIpcmV0dXJuKDAsbi53YXJuKSgnRW1wdHkgIicuY29uY2F0KHQsJyIgc3RyZWFtLicpKSxuZXcgcC5OdWxsU3RyZWFtO3ZhciB5PXRoaXMueHJlZi5zdGF0czt0cnl7c3dpdGNoKHQpe2Nhc2UiRmwiOmNhc2UiRmxhdGVEZWNvZGUiOnJldHVybiB5LmFkZFN0cmVhbVR5cGUobi5TdHJlYW1UeXBlLkZMQVRFKSxhP25ldyBnLlByZWRpY3RvclN0cmVhbShuZXcgdS5GbGF0ZVN0cmVhbShlLHIpLHIsYSk6bmV3IHUuRmxhdGVTdHJlYW0oZSxyKTtjYXNlIkxaVyI6Y2FzZSJMWldEZWNvZGUiOnkuYWRkU3RyZWFtVHlwZShuLlN0cmVhbVR5cGUuTFpXKTt2YXIgbT0xO3JldHVybiBhPyhhLmhhcygiRWFybHlDaGFuZ2UiKSYmKG09YS5nZXQoIkVhcmx5Q2hhbmdlIikpLG5ldyBnLlByZWRpY3RvclN0cmVhbShuZXcgZC5MWldTdHJlYW0oZSxyLG0pLHIsYSkpOm5ldyBkLkxaV1N0cmVhbShlLHIsbSk7Y2FzZSJEQ1QiOmNhc2UiRENURGVjb2RlIjpyZXR1cm4geS5hZGRTdHJlYW1UeXBlKG4uU3RyZWFtVHlwZS5EQ1QpLG5ldyBmLkpwZWdTdHJlYW0oZSxyLGEpO2Nhc2UiSlBYIjpjYXNlIkpQWERlY29kZSI6cmV0dXJuIHkuYWRkU3RyZWFtVHlwZShuLlN0cmVhbVR5cGUuSlBYKSxuZXcgaC5KcHhTdHJlYW0oZSxyLGEpO2Nhc2UiQTg1IjpjYXNlIkFTQ0lJODVEZWNvZGUiOnJldHVybiB5LmFkZFN0cmVhbVR5cGUobi5TdHJlYW1UeXBlLkE4NSksbmV3IG8uQXNjaWk4NVN0cmVhbShlLHIpO2Nhc2UiQUh4IjpjYXNlIkFTQ0lJSGV4RGVjb2RlIjpyZXR1cm4geS5hZGRTdHJlYW1UeXBlKG4uU3RyZWFtVHlwZS5BSFgpLG5ldyBzLkFzY2lpSGV4U3RyZWFtKGUscik7Y2FzZSJDQ0YiOmNhc2UiQ0NJVFRGYXhEZWNvZGUiOnJldHVybiB5LmFkZFN0cmVhbVR5cGUobi5TdHJlYW1UeXBlLkNDRiksbmV3IGMuQ0NJVFRGYXhTdHJlYW0oZSxyLGEpO2Nhc2UiUkwiOmNhc2UiUnVuTGVuZ3RoRGVjb2RlIjpyZXR1cm4geS5hZGRTdHJlYW1UeXBlKG4uU3RyZWFtVHlwZS5STFgpLG5ldyB2LlJ1bkxlbmd0aFN0cmVhbShlLHIpO2Nhc2UiSkJJRzJEZWNvZGUiOnJldHVybiB5LmFkZFN0cmVhbVR5cGUobi5TdHJlYW1UeXBlLkpCSUcpLG5ldyBsLkpiaWcyU3RyZWFtKGUscixhKX1yZXR1cm4oMCxuLndhcm4pKCdGaWx0ZXIgIicuY29uY2F0KHQsJyIgaXMgbm90IHN1cHBvcnRlZC4nKSksZX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgaS5NaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3JldHVybigwLG4ud2FybikoJ0ludmFsaWQgc3RyZWFtOiAiJy5jb25jYXQoZSwnIicpKSxuZXcgcC5OdWxsU3RyZWFtfX19XSksZX0oKTt0LlBhcnNlcj1rO3ZhciBTPVsxLDAsMCwwLDAsMCwwLDAsMCwxLDEsMCwxLDEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwwLDIsMCwwLDIsMiwwLDAsMCwwLDAsMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyLDAsMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDIsMCwyLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyLDAsMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwXTtmdW5jdGlvbiB4KGUpe3JldHVybiBlPj00OCYmZTw9NTc/MTUmZTplPj02NSYmZTw9NzB8fGU+PTk3JiZlPD0xMDI/OSsoMTUmZSk6LTF9dmFyIE89ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQpe3ZhciByPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpudWxsO20odGhpcyxlKSx0aGlzLnN0cmVhbT10LHRoaXMubmV4dENoYXIoKSx0aGlzLnN0ckJ1Zj1bXSx0aGlzLmtub3duQ29tbWFuZHM9cix0aGlzLl9oZXhTdHJpbmdOdW1XYXJuPTAsdGhpcy5iZWdpbklubGluZUltYWdlUG9zPS0xfXJldHVybiB3KGUsW3trZXk6Im5leHRDaGFyIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmN1cnJlbnRDaGFyPXRoaXMuc3RyZWFtLmdldEJ5dGUoKX19LHtrZXk6InBlZWtDaGFyIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnN0cmVhbS5wZWVrQnl0ZSgpfX0se2tleToiZ2V0TnVtYmVyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuY3VycmVudENoYXIsdD0hMSxyPTAsYT0wO2lmKDQ1PT09ZT8oYT0tMSw0NT09PShlPXRoaXMubmV4dENoYXIoKSkmJihlPXRoaXMubmV4dENoYXIoKSkpOjQzPT09ZSYmKGE9MSxlPXRoaXMubmV4dENoYXIoKSksMTA9PT1lfHwxMz09PWUpZG97ZT10aGlzLm5leHRDaGFyKCl9d2hpbGUoMTA9PT1lfHwxMz09PWUpO2lmKDQ2PT09ZSYmKHI9MTAsZT10aGlzLm5leHRDaGFyKCkpLGU8NDh8fGU+NTcpe3ZhciBvPSJJbnZhbGlkIG51bWJlcjogIi5jb25jYXQoU3RyaW5nLmZyb21DaGFyQ29kZShlKSwiIChjaGFyQ29kZSAiKS5jb25jYXQoZSwiKSIpO2lmKCgwLGkuaXNXaGl0ZVNwYWNlKShlKXx8LTE9PT1lKXJldHVybigwLG4uaW5mbykoJ0xleGVyLmdldE51bWJlciAtICInLmNvbmNhdChvLCciLicpKSwwO3Rocm93IG5ldyBuLkZvcm1hdEVycm9yKG8pfWE9YXx8MTtmb3IodmFyIHM9ZS00OCxjPTAsdT0xOyhlPXRoaXMubmV4dENoYXIoKSk+PTA7KWlmKGU+PTQ4JiZlPD01Nyl7dmFyIGw9ZS00ODt0P2M9MTAqYytsOigwIT09ciYmKHIqPTEwKSxzPTEwKnMrbCl9ZWxzZSBpZig0Nj09PWUpe2lmKDAhPT1yKWJyZWFrO3I9MX1lbHNlIGlmKDQ1PT09ZSkoMCxuLndhcm4pKCJCYWRseSBmb3JtYXR0ZWQgbnVtYmVyOiBtaW51cyBzaWduIGluIHRoZSBtaWRkbGUiKTtlbHNle2lmKDY5IT09ZSYmMTAxIT09ZSlicmVhaztpZig0Mz09PShlPXRoaXMucGVla0NoYXIoKSl8fDQ1PT09ZSl1PTQ1PT09ZT8tMToxLHRoaXMubmV4dENoYXIoKTtlbHNlIGlmKGU8NDh8fGU+NTcpYnJlYWs7dD0hMH1yZXR1cm4gMCE9PXImJihzLz1yKSx0JiYocyo9TWF0aC5wb3coMTAsdSpjKSksYSpzfX0se2tleToiZ2V0U3RyaW5nIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPTEsdD0hMSxyPXRoaXMuc3RyQnVmO3IubGVuZ3RoPTA7Zm9yKHZhciBhPXRoaXMubmV4dENoYXIoKTs7KXt2YXIgaT0hMTtzd2l0Y2goMHxhKXtjYXNlLTE6KDAsbi53YXJuKSgiVW50ZXJtaW5hdGVkIHN0cmluZyIpLHQ9ITA7YnJlYWs7Y2FzZSA0MDorK2Usci5wdXNoKCIoIik7YnJlYWs7Y2FzZSA0MTowPT0tLWU/KHRoaXMubmV4dENoYXIoKSx0PSEwKTpyLnB1c2goIikiKTticmVhaztjYXNlIDkyOnN3aXRjaChhPXRoaXMubmV4dENoYXIoKSl7Y2FzZS0xOigwLG4ud2FybikoIlVudGVybWluYXRlZCBzdHJpbmciKSx0PSEwO2JyZWFrO2Nhc2UgMTEwOnIucHVzaCgiXG4iKTticmVhaztjYXNlIDExNDpyLnB1c2goIlxyIik7YnJlYWs7Y2FzZSAxMTY6ci5wdXNoKCJcdCIpO2JyZWFrO2Nhc2UgOTg6ci5wdXNoKCJcYiIpO2JyZWFrO2Nhc2UgMTAyOnIucHVzaCgiXGYiKTticmVhaztjYXNlIDkyOmNhc2UgNDA6Y2FzZSA0MTpyLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShhKSk7YnJlYWs7Y2FzZSA0ODpjYXNlIDQ5OmNhc2UgNTA6Y2FzZSA1MTpjYXNlIDUyOmNhc2UgNTM6Y2FzZSA1NDpjYXNlIDU1OnZhciBvPTE1JmE7aT0hMCwoYT10aGlzLm5leHRDaGFyKCkpPj00OCYmYTw9NTUmJihvPShvPDwzKSsoMTUmYSksKGE9dGhpcy5uZXh0Q2hhcigpKT49NDgmJmE8PTU1JiYoaT0hMSxvPShvPDwzKSsoMTUmYSkpKSxyLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShvKSk7YnJlYWs7Y2FzZSAxMzoxMD09PXRoaXMucGVla0NoYXIoKSYmdGhpcy5uZXh0Q2hhcigpO2JyZWFrO2Nhc2UgMTA6YnJlYWs7ZGVmYXVsdDpyLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShhKSl9YnJlYWs7ZGVmYXVsdDpyLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShhKSl9aWYodClicmVhaztpfHwoYT10aGlzLm5leHRDaGFyKCkpfXJldHVybiByLmpvaW4oIiIpfX0se2tleToiZ2V0TmFtZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZSx0LHI9dGhpcy5zdHJCdWY7Zm9yKHIubGVuZ3RoPTA7KGU9dGhpcy5uZXh0Q2hhcigpKT49MCYmIVNbZV07KWlmKDM1PT09ZSl7aWYoZT10aGlzLm5leHRDaGFyKCksU1tlXSl7KDAsbi53YXJuKSgiTGV4ZXJfZ2V0TmFtZTogTlVNQkVSIFNJR04gKCMpIHNob3VsZCBiZSBmb2xsb3dlZCBieSBhIGhleGFkZWNpbWFsIG51bWJlci4iKSxyLnB1c2goIiMiKTticmVha312YXIgaT14KGUpO2lmKC0xIT09aSl7dD1lO3ZhciBvPXgoZT10aGlzLm5leHRDaGFyKCkpO2lmKC0xPT09byl7aWYoKDAsbi53YXJuKSgiTGV4ZXJfZ2V0TmFtZTogSWxsZWdhbCBkaWdpdCAoIi5jb25jYXQoU3RyaW5nLmZyb21DaGFyQ29kZShlKSwiKSAiKSsiaW4gaGV4YWRlY2ltYWwgbnVtYmVyLiIpLHIucHVzaCgiIyIsU3RyaW5nLmZyb21DaGFyQ29kZSh0KSksU1tlXSlicmVhaztyLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShlKSk7Y29udGludWV9ci5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoaTw8NHxvKSl9ZWxzZSByLnB1c2goIiMiLFN0cmluZy5mcm9tQ2hhckNvZGUoZSkpfWVsc2Ugci5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoZSkpO3JldHVybiByLmxlbmd0aD4xMjcmJigwLG4ud2FybikoIk5hbWUgdG9rZW4gaXMgbG9uZ2VyIHRoYW4gYWxsb3dlZCBieSB0aGUgc3BlYzogIi5jb25jYXQoci5sZW5ndGgpKSxhLk5hbWUuZ2V0KHIuam9pbigiIikpfX0se2tleToiX2hleFN0cmluZ1dhcm4iLHZhbHVlOmZ1bmN0aW9uKGUpezUhPXRoaXMuX2hleFN0cmluZ051bVdhcm4rKz90aGlzLl9oZXhTdHJpbmdOdW1XYXJuPjV8fCgwLG4ud2FybikoImdldEhleFN0cmluZyAtIGlnbm9yaW5nIGludmFsaWQgY2hhcmFjdGVyOiAiLmNvbmNhdChlKSk6KDAsbi53YXJuKSgiZ2V0SGV4U3RyaW5nIC0gaWdub3JpbmcgYWRkaXRpb25hbCBpbnZhbGlkIGNoYXJhY3RlcnMuIil9fSx7a2V5OiJnZXRIZXhTdHJpbmciLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5zdHJCdWY7ZS5sZW5ndGg9MDt2YXIgdCxyLGE9dGhpcy5jdXJyZW50Q2hhcixpPSEwO2Zvcih0aGlzLl9oZXhTdHJpbmdOdW1XYXJuPTA7Oyl7aWYoYTwwKXsoMCxuLndhcm4pKCJVbnRlcm1pbmF0ZWQgaGV4IHN0cmluZyIpO2JyZWFrfWlmKDYyPT09YSl7dGhpcy5uZXh0Q2hhcigpO2JyZWFrfWlmKDEhPT1TW2FdKXtpZihpKXtpZigtMT09PSh0PXgoYSkpKXt0aGlzLl9oZXhTdHJpbmdXYXJuKGEpLGE9dGhpcy5uZXh0Q2hhcigpO2NvbnRpbnVlfX1lbHNle2lmKC0xPT09KHI9eChhKSkpe3RoaXMuX2hleFN0cmluZ1dhcm4oYSksYT10aGlzLm5leHRDaGFyKCk7Y29udGludWV9ZS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUodDw8NHxyKSl9aT0haSxhPXRoaXMubmV4dENoYXIoKX1lbHNlIGE9dGhpcy5uZXh0Q2hhcigpfXJldHVybiBlLmpvaW4oIiIpfX0se2tleToiZ2V0T2JqIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgZT0hMSx0PXRoaXMuY3VycmVudENoYXI7Oyl7aWYodDwwKXJldHVybiBhLkVPRjtpZihlKTEwIT09dCYmMTMhPT10fHwoZT0hMSk7ZWxzZSBpZigzNz09PXQpZT0hMDtlbHNlIGlmKDEhPT1TW3RdKWJyZWFrO3Q9dGhpcy5uZXh0Q2hhcigpfXN3aXRjaCgwfHQpe2Nhc2UgNDg6Y2FzZSA0OTpjYXNlIDUwOmNhc2UgNTE6Y2FzZSA1MjpjYXNlIDUzOmNhc2UgNTQ6Y2FzZSA1NTpjYXNlIDU2OmNhc2UgNTc6Y2FzZSA0MzpjYXNlIDQ1OmNhc2UgNDY6cmV0dXJuIHRoaXMuZ2V0TnVtYmVyKCk7Y2FzZSA0MDpyZXR1cm4gdGhpcy5nZXRTdHJpbmcoKTtjYXNlIDQ3OnJldHVybiB0aGlzLmdldE5hbWUoKTtjYXNlIDkxOnJldHVybiB0aGlzLm5leHRDaGFyKCksYS5DbWQuZ2V0KCJbIik7Y2FzZSA5MzpyZXR1cm4gdGhpcy5uZXh0Q2hhcigpLGEuQ21kLmdldCgiXSIpO2Nhc2UgNjA6cmV0dXJuIDYwPT09KHQ9dGhpcy5uZXh0Q2hhcigpKT8odGhpcy5uZXh0Q2hhcigpLGEuQ21kLmdldCgiPDwiKSk6dGhpcy5nZXRIZXhTdHJpbmcoKTtjYXNlIDYyOnJldHVybiA2Mj09PSh0PXRoaXMubmV4dENoYXIoKSk/KHRoaXMubmV4dENoYXIoKSxhLkNtZC5nZXQoIj4+IikpOmEuQ21kLmdldCgiPiIpO2Nhc2UgMTIzOnJldHVybiB0aGlzLm5leHRDaGFyKCksYS5DbWQuZ2V0KCJ7Iik7Y2FzZSAxMjU6cmV0dXJuIHRoaXMubmV4dENoYXIoKSxhLkNtZC5nZXQoIn0iKTtjYXNlIDQxOnRocm93IHRoaXMubmV4dENoYXIoKSxuZXcgbi5Gb3JtYXRFcnJvcigiSWxsZWdhbCBjaGFyYWN0ZXI6ICIuY29uY2F0KHQpKX12YXIgcj1TdHJpbmcuZnJvbUNoYXJDb2RlKHQpO2lmKHQ8MzJ8fHQ+MTI3KXt2YXIgaT10aGlzLnBlZWtDaGFyKCk7aWYoaT49MzImJmk8PTEyNylyZXR1cm4gdGhpcy5uZXh0Q2hhcigpLGEuQ21kLmdldChyKX1mb3IodmFyIG89dGhpcy5rbm93bkNvbW1hbmRzLHM9byYmdm9pZCAwIT09b1tyXTsodD10aGlzLm5leHRDaGFyKCkpPj0wJiYhU1t0XTspe3ZhciBjPXIrU3RyaW5nLmZyb21DaGFyQ29kZSh0KTtpZihzJiZ2b2lkIDA9PT1vW2NdKWJyZWFrO2lmKDEyOD09PXIubGVuZ3RoKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJDb21tYW5kIHRva2VuIHRvbyBsb25nOiAiLmNvbmNhdChyLmxlbmd0aCkpO3I9YyxzPW8mJnZvaWQgMCE9PW9bcl19cmV0dXJuInRydWUiPT09cnx8ImZhbHNlIiE9PXImJigibnVsbCI9PT1yP251bGw6KCJCSSI9PT1yJiYodGhpcy5iZWdpbklubGluZUltYWdlUG9zPXRoaXMuc3RyZWFtLnBvcyksYS5DbWQuZ2V0KHIpKSl9fSx7a2V5OiJwZWVrT2JqIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlLHQ9dGhpcy5zdHJlYW0ucG9zLHI9dGhpcy5jdXJyZW50Q2hhcixhPXRoaXMuYmVnaW5JbmxpbmVJbWFnZVBvczt0cnl7ZT10aGlzLmdldE9iaigpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBpLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7KDAsbi53YXJuKSgicGVla09iajogIi5jb25jYXQoZSkpfXJldHVybiB0aGlzLnN0cmVhbS5wb3M9dCx0aGlzLmN1cnJlbnRDaGFyPXIsdGhpcy5iZWdpbklubGluZUltYWdlUG9zPWEsZX19LHtrZXk6InNraXBUb05leHRMaW5lIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgZT10aGlzLmN1cnJlbnRDaGFyO2U+PTA7KXtpZigxMz09PWUpezEwPT09KGU9dGhpcy5uZXh0Q2hhcigpKSYmdGhpcy5uZXh0Q2hhcigpO2JyZWFrfWlmKDEwPT09ZSl7dGhpcy5uZXh0Q2hhcigpO2JyZWFrfWU9dGhpcy5uZXh0Q2hhcigpfX19XSksZX0oKTt0LkxleGVyPU87dmFyIEE9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7bSh0aGlzLGUpfXJldHVybiB3KGUsbnVsbCxbe2tleToiY3JlYXRlIix2YWx1ZTpmdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUsdCl7dmFyIHI9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0mJmFyZ3VtZW50c1syXSxuPWUuZ2V0KHQpO2lmKE51bWJlci5pc0ludGVnZXIobikmJihyP24+PTA6bj4wKSlyZXR1cm4gbjt0aHJvdyBuZXcgRXJyb3IoJ1RoZSAiJy5jb25jYXQodCwnIiBwYXJhbWV0ZXIgaW4gdGhlIGxpbmVhcml6YXRpb24gJykrImRpY3Rpb25hcnkgaXMgaW52YWxpZC4iKX12YXIgcixuLGk9bmV3IGsoe2xleGVyOm5ldyBPKGUpLHhyZWY6bnVsbH0pLG89aS5nZXRPYmooKSxzPWkuZ2V0T2JqKCksYz1pLmdldE9iaigpLHU9aS5nZXRPYmooKTtpZighKE51bWJlci5pc0ludGVnZXIobykmJk51bWJlci5pc0ludGVnZXIocykmJigwLGEuaXNDbWQpKGMsIm9iaiIpJiZ1IGluc3RhbmNlb2YgYS5EaWN0JiYibnVtYmVyIj09dHlwZW9mKHI9dS5nZXQoIkxpbmVhcml6ZWQiKSkmJnI+MCkpcmV0dXJuIG51bGw7aWYoKG49dCh1LCJMIikpIT09ZS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCdUaGUgIkwiIHBhcmFtZXRlciBpbiB0aGUgbGluZWFyaXphdGlvbiBkaWN0aW9uYXJ5IGRvZXMgbm90IGVxdWFsIHRoZSBzdHJlYW0gbGVuZ3RoLicpO3JldHVybntsZW5ndGg6bixoaW50czpmdW5jdGlvbihlKXt2YXIgdCxyPWUuZ2V0KCJIIik7aWYoQXJyYXkuaXNBcnJheShyKSYmKDI9PT0odD1yLmxlbmd0aCl8fDQ9PT10KSl7Zm9yKHZhciBuPTA7bjx0O24rKyl7dmFyIGE9cltuXTtpZighKE51bWJlci5pc0ludGVnZXIoYSkmJmE+MCkpdGhyb3cgbmV3IEVycm9yKCJIaW50ICgiLmNvbmNhdChuLCIpIGluIHRoZSBsaW5lYXJpemF0aW9uIGRpY3Rpb25hcnkgaXMgaW52YWxpZC4iKSl9cmV0dXJuIHJ9dGhyb3cgbmV3IEVycm9yKCJIaW50IGFycmF5IGluIHRoZSBsaW5lYXJpemF0aW9uIGRpY3Rpb25hcnkgaXMgaW52YWxpZC4iKX0odSksb2JqZWN0TnVtYmVyRmlyc3Q6dCh1LCJPIiksZW5kRmlyc3Q6dCh1LCJFIiksbnVtUGFnZXM6dCh1LCJOIiksbWFpblhSZWZFbnRyaWVzT2Zmc2V0OnQodSwiVCIpLHBhZ2VGaXJzdDp1LmhhcygiUCIpP3QodSwiUCIsITApOjB9fX1dKSxlfSgpO3QuTGluZWFyaXphdGlvbj1BfSwoZSx0LHIpPT57ZnVuY3Rpb24gbihlKXtyZXR1cm4gbj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZX0sbihlKX1PYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5Bc2NpaTg1U3RyZWFtPXZvaWQgMDt2YXIgYT1yKDE0OCksaT1yKDEzNSk7ZnVuY3Rpb24gbyhlLHQpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgYT10W3JdO2EuZW51bWVyYWJsZT1hLmVudW1lcmFibGV8fCExLGEuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBhJiYoYS53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsKHZvaWQgMCxpPWZ1bmN0aW9uKGUsdCl7aWYoIm9iamVjdCIhPT1uKGUpfHxudWxsPT09ZSlyZXR1cm4gZTt2YXIgcj1lW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09cil7dmFyIGE9ci5jYWxsKGUsInN0cmluZyIpO2lmKCJvYmplY3QiIT09bihhKSlyZXR1cm4gYTt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybiBTdHJpbmcoZSl9KGEua2V5KSwic3ltYm9sIj09PW4oaSk/aTpTdHJpbmcoaSkpLGEpfXZhciBpfWZ1bmN0aW9uIHMoZSx0KXtyZXR1cm4gcz1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihlLHQpe3JldHVybiBlLl9fcHJvdG9fXz10LGV9LHMoZSx0KX1mdW5jdGlvbiBjKGUpe3JldHVybiBjPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGUpe3JldHVybiBlLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpfSxjKGUpfXZhciB1PWZ1bmN0aW9uKGUpeyFmdW5jdGlvbihlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSx0JiZzKGUsdCl9KGYsZSk7dmFyIHQscixhLHUsbD0oYT1mLHU9ZnVuY3Rpb24oKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdClyZXR1cm4hMTtpZihSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLChmdW5jdGlvbigpe30pKSksITB9Y2F0Y2goZSl7cmV0dXJuITF9fSgpLGZ1bmN0aW9uKCl7dmFyIGUsdD1jKGEpO2lmKHUpe3ZhciByPWModGhpcykuY29uc3RydWN0b3I7ZT1SZWZsZWN0LmNvbnN0cnVjdCh0LGFyZ3VtZW50cyxyKX1lbHNlIGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYodCYmKCJvYmplY3QiPT09bih0KXx8ImZ1bmN0aW9uIj09dHlwZW9mIHQpKXJldHVybiB0O2lmKHZvaWQgMCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24oZSl7aWYodm9pZCAwPT09ZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBlfShlKX0odGhpcyxlKX0pO2Z1bmN0aW9uIGYoZSx0KXt2YXIgcjtyZXR1cm4gZnVuY3Rpb24oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxmKSx0JiYodCo9LjgpLChyPWwuY2FsbCh0aGlzLHQpKS5zdHI9ZSxyLmRpY3Q9ZS5kaWN0LHIuaW5wdXQ9bmV3IFVpbnQ4QXJyYXkoNSkscn1yZXR1cm4gdD1mLChyPVt7a2V5OiJyZWFkQmxvY2siLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMuc3RyLHQ9ZS5nZXRCeXRlKCk7KDAsaS5pc1doaXRlU3BhY2UpKHQpOyl0PWUuZ2V0Qnl0ZSgpO2lmKC0xIT09dCYmMTI2IT09dCl7dmFyIHIsbixhPXRoaXMuYnVmZmVyTGVuZ3RoO2lmKDEyMj09PXQpe2ZvcihyPXRoaXMuZW5zdXJlQnVmZmVyKGErNCksbj0wO248NDsrK24pclthK25dPTA7dGhpcy5idWZmZXJMZW5ndGgrPTR9ZWxzZXt2YXIgbz10aGlzLmlucHV0O2ZvcihvWzBdPXQsbj0xO248NTsrK24pe2Zvcih0PWUuZ2V0Qnl0ZSgpOygwLGkuaXNXaGl0ZVNwYWNlKSh0KTspdD1lLmdldEJ5dGUoKTtpZihvW25dPXQsLTE9PT10fHwxMjY9PT10KWJyZWFrfWlmKHI9dGhpcy5lbnN1cmVCdWZmZXIoYStuLTEpLHRoaXMuYnVmZmVyTGVuZ3RoKz1uLTEsbjw1KXtmb3IoO248NTsrK24pb1tuXT0xMTc7dGhpcy5lb2Y9ITB9dmFyIHM9MDtmb3Iobj0wO248NTsrK24pcz04NSpzKyhvW25dLTMzKTtmb3Iobj0zO24+PTA7LS1uKXJbYStuXT0yNTUmcyxzPj49OH19ZWxzZSB0aGlzLmVvZj0hMH19XSkmJm8odC5wcm90b3R5cGUsciksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZn0oYS5EZWNvZGVTdHJlYW0pO3QuQXNjaWk4NVN0cmVhbT11fSwoZSx0LHIpPT57ZnVuY3Rpb24gbihlKXtyZXR1cm4gbj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZX0sbihlKX1PYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5TdHJlYW1zU2VxdWVuY2VTdHJlYW09dC5EZWNvZGVTdHJlYW09dm9pZCAwO3ZhciBhPXIoMTM2KSxpPXIoMTM5KTtmdW5jdGlvbiBvKGUsdCl7dmFyIHI9InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVsiQEBpdGVyYXRvciJdO2lmKCFyKXtpZihBcnJheS5pc0FycmF5KGUpfHwocj1zKGUpKXx8dCYmZSYmIm51bWJlciI9PXR5cGVvZiBlLmxlbmd0aCl7ciYmKGU9cik7dmFyIG49MCxhPWZ1bmN0aW9uKCl7fTtyZXR1cm57czphLG46ZnVuY3Rpb24oKXtyZXR1cm4gbj49ZS5sZW5ndGg/e2RvbmU6ITB9Ontkb25lOiExLHZhbHVlOmVbbisrXX19LGU6ZnVuY3Rpb24oZSl7dGhyb3cgZX0sZjphfX10aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gaXRlcmF0ZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9dmFyIGksbz0hMCxjPSExO3JldHVybntzOmZ1bmN0aW9uKCl7cj1yLmNhbGwoZSl9LG46ZnVuY3Rpb24oKXt2YXIgZT1yLm5leHQoKTtyZXR1cm4gbz1lLmRvbmUsZX0sZTpmdW5jdGlvbihlKXtjPSEwLGk9ZX0sZjpmdW5jdGlvbigpe3RyeXtvfHxudWxsPT1yLnJldHVybnx8ci5yZXR1cm4oKX1maW5hbGx5e2lmKGMpdGhyb3cgaX19fX1mdW5jdGlvbiBzKGUsdCl7aWYoZSl7aWYoInN0cmluZyI9PXR5cGVvZiBlKXJldHVybiBjKGUsdCk7dmFyIHI9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO3JldHVybiJPYmplY3QiPT09ciYmZS5jb25zdHJ1Y3RvciYmKHI9ZS5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PXJ8fCJTZXQiPT09cj9BcnJheS5mcm9tKGUpOiJBcmd1bWVudHMiPT09cnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3Qocik/YyhlLHQpOnZvaWQgMH19ZnVuY3Rpb24gYyhlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgcj0wLG49bmV3IEFycmF5KHQpO3I8dDtyKyspbltyXT1lW3JdO3JldHVybiBufWZ1bmN0aW9uIHUoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBsKGUsdCl7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBhPXRbcl07YS5lbnVtZXJhYmxlPWEuZW51bWVyYWJsZXx8ITEsYS5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGEmJihhLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwodm9pZCAwLGk9ZnVuY3Rpb24oZSx0KXtpZigib2JqZWN0IiE9PW4oZSl8fG51bGw9PT1lKXJldHVybiBlO3ZhciByPWVbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1yKXt2YXIgYT1yLmNhbGwoZSwic3RyaW5nIik7aWYoIm9iamVjdCIhPT1uKGEpKXJldHVybiBhO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuIFN0cmluZyhlKX0oYS5rZXkpLCJzeW1ib2wiPT09bihpKT9pOlN0cmluZyhpKSksYSl9dmFyIGl9ZnVuY3Rpb24gZihlLHQscil7cmV0dXJuIHQmJmwoZS5wcm90b3R5cGUsdCksciYmbChlLHIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGV9ZnVuY3Rpb24gaChlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSx0JiZkKGUsdCl9ZnVuY3Rpb24gZChlLHQpe3JldHVybiBkPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuX19wcm90b19fPXQsZX0sZChlLHQpfWZ1bmN0aW9uIHAoZSl7dmFyIHQ9ZnVuY3Rpb24oKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdClyZXR1cm4hMTtpZihSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLChmdW5jdGlvbigpe30pKSksITB9Y2F0Y2goZSl7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciByLGE9ZyhlKTtpZih0KXt2YXIgaT1nKHRoaXMpLmNvbnN0cnVjdG9yO3I9UmVmbGVjdC5jb25zdHJ1Y3QoYSxhcmd1bWVudHMsaSl9ZWxzZSByPWEuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBmdW5jdGlvbihlLHQpe2lmKHQmJigib2JqZWN0Ij09PW4odCl8fCJmdW5jdGlvbiI9PXR5cGVvZiB0KSlyZXR1cm4gdDtpZih2b2lkIDAhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKHZvaWQgMD09PWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZX0oZSl9KHRoaXMscil9fWZ1bmN0aW9uIGcoZSl7cmV0dXJuIGc9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSl9LGcoZSl9dmFyIHY9bmV3IFVpbnQ4QXJyYXkoMCkseT1mdW5jdGlvbihlKXtoKHIsZSk7dmFyIHQ9cChyKTtmdW5jdGlvbiByKGUpe3ZhciBuO2lmKHUodGhpcyxyKSwobj10LmNhbGwodGhpcykpLl9yYXdNaW5CdWZmZXJMZW5ndGg9ZXx8MCxuLnBvcz0wLG4uYnVmZmVyTGVuZ3RoPTAsbi5lb2Y9ITEsbi5idWZmZXI9dixuLm1pbkJ1ZmZlckxlbmd0aD01MTIsZSlmb3IoO24ubWluQnVmZmVyTGVuZ3RoPGU7KW4ubWluQnVmZmVyTGVuZ3RoKj0yO3JldHVybiBufXJldHVybiBmKHIsW3trZXk6ImlzRW1wdHkiLGdldDpmdW5jdGlvbigpe2Zvcig7IXRoaXMuZW9mJiYwPT09dGhpcy5idWZmZXJMZW5ndGg7KXRoaXMucmVhZEJsb2NrKCk7cmV0dXJuIDA9PT10aGlzLmJ1ZmZlckxlbmd0aH19LHtrZXk6ImVuc3VyZUJ1ZmZlciIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5idWZmZXI7aWYoZTw9dC5ieXRlTGVuZ3RoKXJldHVybiB0O2Zvcih2YXIgcj10aGlzLm1pbkJ1ZmZlckxlbmd0aDtyPGU7KXIqPTI7dmFyIG49bmV3IFVpbnQ4QXJyYXkocik7cmV0dXJuIG4uc2V0KHQpLHRoaXMuYnVmZmVyPW59fSx7a2V5OiJnZXRCeXRlIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgZT10aGlzLnBvczt0aGlzLmJ1ZmZlckxlbmd0aDw9ZTspe2lmKHRoaXMuZW9mKXJldHVybi0xO3RoaXMucmVhZEJsb2NrKCl9cmV0dXJuIHRoaXMuYnVmZmVyW3RoaXMucG9zKytdfX0se2tleToiZ2V0Qnl0ZXMiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0LHI9dGhpcy5wb3M7aWYoZSl7Zm9yKHRoaXMuZW5zdXJlQnVmZmVyKHIrZSksdD1yK2U7IXRoaXMuZW9mJiZ0aGlzLmJ1ZmZlckxlbmd0aDx0Oyl0aGlzLnJlYWRCbG9jaygpO3ZhciBuPXRoaXMuYnVmZmVyTGVuZ3RoO3Q+biYmKHQ9bil9ZWxzZXtmb3IoOyF0aGlzLmVvZjspdGhpcy5yZWFkQmxvY2soKTt0PXRoaXMuYnVmZmVyTGVuZ3RofXJldHVybiB0aGlzLnBvcz10LHRoaXMuYnVmZmVyLnN1YmFycmF5KHIsdCl9fSx7a2V5OiJyZXNldCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnBvcz0wfX0se2tleToibWFrZVN1YlN0cmVhbSIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgcj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06bnVsbDtpZih2b2lkIDA9PT10KWZvcig7IXRoaXMuZW9mOyl0aGlzLnJlYWRCbG9jaygpO2Vsc2UgZm9yKHZhciBuPWUrdDt0aGlzLmJ1ZmZlckxlbmd0aDw9biYmIXRoaXMuZW9mOyl0aGlzLnJlYWRCbG9jaygpO3JldHVybiBuZXcgaS5TdHJlYW0odGhpcy5idWZmZXIsZSx0LHIpfX0se2tleToiZ2V0QmFzZVN0cmVhbXMiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3RyP3RoaXMuc3RyLmdldEJhc2VTdHJlYW1zKCk6bnVsbH19XSkscn0oYS5CYXNlU3RyZWFtKTt0LkRlY29kZVN0cmVhbT15O3ZhciBtPWZ1bmN0aW9uKGUpe2gocixlKTt2YXIgdD1wKHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG4sYT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06bnVsbDt1KHRoaXMscik7dmFyIGkscz0wLGM9byhlKTt0cnl7Zm9yKGMucygpOyEoaT1jLm4oKSkuZG9uZTspe3ZhciBsPWkudmFsdWU7cys9bCBpbnN0YW5jZW9mIHk/bC5fcmF3TWluQnVmZmVyTGVuZ3RoOmwubGVuZ3RofX1jYXRjaChlKXtjLmUoZSl9ZmluYWxseXtjLmYoKX1yZXR1cm4obj10LmNhbGwodGhpcyxzKSkuc3RyZWFtcz1lLG4uX29uRXJyb3I9YSxufXJldHVybiBmKHIsW3trZXk6InJlYWRCbG9jayIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnN0cmVhbXM7aWYoMCE9PWUubGVuZ3RoKXt2YXIgdCxyPWUuc2hpZnQoKTt0cnl7dD1yLmdldEJ5dGVzKCl9Y2F0Y2goZSl7aWYodGhpcy5fb25FcnJvcilyZXR1cm4gdm9pZCB0aGlzLl9vbkVycm9yKGUsci5kaWN0JiZyLmRpY3Qub2JqSWQpO3Rocm93IGV9dmFyIG49dGhpcy5idWZmZXJMZW5ndGgsYT1uK3QubGVuZ3RoO3RoaXMuZW5zdXJlQnVmZmVyKGEpLnNldCh0LG4pLHRoaXMuYnVmZmVyTGVuZ3RoPWF9ZWxzZSB0aGlzLmVvZj0hMH19LHtrZXk6ImdldEJhc2VTdHJlYW1zIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlLHQscj1bXSxuPW8odGhpcy5zdHJlYW1zKTt0cnl7Zm9yKG4ucygpOyEoZT1uLm4oKSkuZG9uZTspe3ZhciBhPWUudmFsdWUuZ2V0QmFzZVN0cmVhbXMoKTthJiZyLnB1c2guYXBwbHkocixmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBjKGUpfSh0PWEpfHxmdW5jdGlvbihlKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmbnVsbCE9ZVtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT1lWyJAQGl0ZXJhdG9yIl0pcmV0dXJuIEFycmF5LmZyb20oZSl9KHQpfHxzKHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpKX19Y2F0Y2goZSl7bi5lKGUpfWZpbmFsbHl7bi5mKCl9cmV0dXJuIHIubGVuZ3RoPjA/cjpudWxsfX1dKSxyfSh5KTt0LlN0cmVhbXNTZXF1ZW5jZVN0cmVhbT1tfSwoZSx0LHIpPT57ZnVuY3Rpb24gbihlKXtyZXR1cm4gbj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZX0sbihlKX1mdW5jdGlvbiBhKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciByPTAsbj1uZXcgQXJyYXkodCk7cjx0O3IrKyluW3JdPWVbcl07cmV0dXJuIG59ZnVuY3Rpb24gaShlLHQpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgYT10W3JdO2EuZW51bWVyYWJsZT1hLmVudW1lcmFibGV8fCExLGEuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBhJiYoYS53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsKHZvaWQgMCxpPWZ1bmN0aW9uKGUsdCl7aWYoIm9iamVjdCIhPT1uKGUpfHxudWxsPT09ZSlyZXR1cm4gZTt2YXIgcj1lW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09cil7dmFyIGE9ci5jYWxsKGUsInN0cmluZyIpO2lmKCJvYmplY3QiIT09bihhKSlyZXR1cm4gYTt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybiBTdHJpbmcoZSl9KGEua2V5KSwic3ltYm9sIj09PW4oaSk/aTpTdHJpbmcoaSkpLGEpfXZhciBpfWZ1bmN0aW9uIG8oZSx0KXtyZXR1cm4gbz1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihlLHQpe3JldHVybiBlLl9fcHJvdG9fXz10LGV9LG8oZSx0KX1mdW5jdGlvbiBzKGUpe3JldHVybiBzPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGUpe3JldHVybiBlLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpfSxzKGUpfU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LkFzY2lpSGV4U3RyZWFtPXZvaWQgMDt2YXIgYz1mdW5jdGlvbihlKXshZnVuY3Rpb24oZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksdCYmbyhlLHQpfShmLGUpO3ZhciB0LHIsYyx1LGw9KGM9Zix1PWZ1bmN0aW9uKCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3QpcmV0dXJuITE7aWYoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSwoZnVuY3Rpb24oKXt9KSkpLCEwfWNhdGNoKGUpe3JldHVybiExfX0oKSxmdW5jdGlvbigpe3ZhciBlLHQ9cyhjKTtpZih1KXt2YXIgcj1zKHRoaXMpLmNvbnN0cnVjdG9yO2U9UmVmbGVjdC5jb25zdHJ1Y3QodCxhcmd1bWVudHMscil9ZWxzZSBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBmdW5jdGlvbihlLHQpe2lmKHQmJigib2JqZWN0Ij09PW4odCl8fCJmdW5jdGlvbiI9PXR5cGVvZiB0KSlyZXR1cm4gdDtpZih2b2lkIDAhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKHZvaWQgMD09PWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZX0oZSl9KHRoaXMsZSl9KTtmdW5jdGlvbiBmKGUsdCl7dmFyIHI7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsZiksdCYmKHQqPS41KSwocj1sLmNhbGwodGhpcyx0KSkuc3RyPWUsci5kaWN0PWUuZGljdCxyLmZpcnN0RGlnaXQ9LTEscn1yZXR1cm4gdD1mLChyPVt7a2V5OiJyZWFkQmxvY2siLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5zdHIuZ2V0Qnl0ZXMoOGUzKTtpZihlLmxlbmd0aCl7dmFyIHQscj1lLmxlbmd0aCsxPj4xLG49dGhpcy5lbnN1cmVCdWZmZXIodGhpcy5idWZmZXJMZW5ndGgrciksaT10aGlzLmJ1ZmZlckxlbmd0aCxvPXRoaXMuZmlyc3REaWdpdCxzPWZ1bmN0aW9uKGUsdCl7dmFyIHI9InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVsiQEBpdGVyYXRvciJdO2lmKCFyKXtpZihBcnJheS5pc0FycmF5KGUpfHwocj1mdW5jdGlvbihlLHQpe2lmKGUpe2lmKCJzdHJpbmciPT10eXBlb2YgZSlyZXR1cm4gYShlLHQpO3ZhciByPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtyZXR1cm4iT2JqZWN0Ij09PXImJmUuY29uc3RydWN0b3ImJihyPWUuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1yfHwiU2V0Ij09PXI/QXJyYXkuZnJvbShlKToiQXJndW1lbnRzIj09PXJ8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KHIpP2EoZSx0KTp2b2lkIDB9fShlKSl8fHQmJmUmJiJudW1iZXIiPT10eXBlb2YgZS5sZW5ndGgpe3ImJihlPXIpO3ZhciBuPTAsaT1mdW5jdGlvbigpe307cmV0dXJue3M6aSxuOmZ1bmN0aW9uKCl7cmV0dXJuIG4+PWUubGVuZ3RoP3tkb25lOiEwfTp7ZG9uZTohMSx2YWx1ZTplW24rK119fSxlOmZ1bmN0aW9uKGUpe3Rocm93IGV9LGY6aX19dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGl0ZXJhdGUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfXZhciBvLHM9ITAsYz0hMTtyZXR1cm57czpmdW5jdGlvbigpe3I9ci5jYWxsKGUpfSxuOmZ1bmN0aW9uKCl7dmFyIGU9ci5uZXh0KCk7cmV0dXJuIHM9ZS5kb25lLGV9LGU6ZnVuY3Rpb24oZSl7Yz0hMCxvPWV9LGY6ZnVuY3Rpb24oKXt0cnl7c3x8bnVsbD09ci5yZXR1cm58fHIucmV0dXJuKCl9ZmluYWxseXtpZihjKXRocm93IG99fX19KGUpO3RyeXtmb3Iocy5zKCk7ISh0PXMubigpKS5kb25lOyl7dmFyIGM9dC52YWx1ZSx1PXZvaWQgMDtpZihjPj00OCYmYzw9NTcpdT0xNSZjO2Vsc2V7aWYoIShjPj02NSYmYzw9NzB8fGM+PTk3JiZjPD0xMDIpKXtpZig2Mj09PWMpe3RoaXMuZW9mPSEwO2JyZWFrfWNvbnRpbnVlfXU9OSsoMTUmYyl9bzwwP289dToobltpKytdPW88PDR8dSxvPS0xKX19Y2F0Y2goZSl7cy5lKGUpfWZpbmFsbHl7cy5mKCl9bz49MCYmdGhpcy5lb2YmJihuW2krK109bzw8NCxvPS0xKSx0aGlzLmZpcnN0RGlnaXQ9byx0aGlzLmJ1ZmZlckxlbmd0aD1pfWVsc2UgdGhpcy5lb2Y9ITB9fV0pJiZpKHQucHJvdG90eXBlLHIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGZ9KHIoMTQ4KS5EZWNvZGVTdHJlYW0pO3QuQXNjaWlIZXhTdHJlYW09Y30sKGUsdCxyKT0+e2Z1bmN0aW9uIG4oZSl7cmV0dXJuIG49ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGV9LG4oZSl9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuQ0NJVFRGYXhTdHJlYW09dm9pZCAwO3ZhciBhPXIoMTUxKSxpPXIoMTQ4KSxvPXIoMTM0KTtmdW5jdGlvbiBzKGUsdCl7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBhPXRbcl07YS5lbnVtZXJhYmxlPWEuZW51bWVyYWJsZXx8ITEsYS5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGEmJihhLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwodm9pZCAwLGk9ZnVuY3Rpb24oZSx0KXtpZigib2JqZWN0IiE9PW4oZSl8fG51bGw9PT1lKXJldHVybiBlO3ZhciByPWVbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1yKXt2YXIgYT1yLmNhbGwoZSwic3RyaW5nIik7aWYoIm9iamVjdCIhPT1uKGEpKXJldHVybiBhO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuIFN0cmluZyhlKX0oYS5rZXkpLCJzeW1ib2wiPT09bihpKT9pOlN0cmluZyhpKSksYSl9dmFyIGl9ZnVuY3Rpb24gYyhlLHQpe3JldHVybiBjPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuX19wcm90b19fPXQsZX0sYyhlLHQpfWZ1bmN0aW9uIHUoZSl7cmV0dXJuIHU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSl9LHUoZSl9dmFyIGw9ZnVuY3Rpb24oZSl7IWZ1bmN0aW9uKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLHQmJmMoZSx0KX0oaCxlKTt2YXIgdCxyLGksbCxmPShpPWgsbD1mdW5jdGlvbigpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0KXJldHVybiExO2lmKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sKGZ1bmN0aW9uKCl7fSkpKSwhMH1jYXRjaChlKXtyZXR1cm4hMX19KCksZnVuY3Rpb24oKXt2YXIgZSx0PXUoaSk7aWYobCl7dmFyIHI9dSh0aGlzKS5jb25zdHJ1Y3RvcjtlPVJlZmxlY3QuY29uc3RydWN0KHQsYXJndW1lbnRzLHIpfWVsc2UgZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZnVuY3Rpb24oZSx0KXtpZih0JiYoIm9iamVjdCI9PT1uKHQpfHwiZnVuY3Rpb24iPT10eXBlb2YgdCkpcmV0dXJuIHQ7aWYodm9pZCAwIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBmdW5jdGlvbihlKXtpZih2b2lkIDA9PT1lKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGV9KGUpfSh0aGlzLGUpfSk7ZnVuY3Rpb24gaChlLHQscil7dmFyIG47IWZ1bmN0aW9uKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsaCksKG49Zi5jYWxsKHRoaXMsdCkpLnN0cj1lLG4uZGljdD1lLmRpY3QsciBpbnN0YW5jZW9mIG8uRGljdHx8KHI9by5EaWN0LmVtcHR5KTt2YXIgaT17bmV4dDpmdW5jdGlvbigpe3JldHVybiBlLmdldEJ5dGUoKX19O3JldHVybiBuLmNjaXR0RmF4RGVjb2Rlcj1uZXcgYS5DQ0lUVEZheERlY29kZXIoaSx7SzpyLmdldCgiSyIpLEVuZE9mTGluZTpyLmdldCgiRW5kT2ZMaW5lIiksRW5jb2RlZEJ5dGVBbGlnbjpyLmdldCgiRW5jb2RlZEJ5dGVBbGlnbiIpLENvbHVtbnM6ci5nZXQoIkNvbHVtbnMiKSxSb3dzOnIuZ2V0KCJSb3dzIiksRW5kT2ZCbG9jazpyLmdldCgiRW5kT2ZCbG9jayIpLEJsYWNrSXMxOnIuZ2V0KCJCbGFja0lzMSIpfSksbn1yZXR1cm4gdD1oLChyPVt7a2V5OiJyZWFkQmxvY2siLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKDshdGhpcy5lb2Y7KXt2YXIgZT10aGlzLmNjaXR0RmF4RGVjb2Rlci5yZWFkTmV4dENoYXIoKTtpZigtMT09PWUpcmV0dXJuIHZvaWQodGhpcy5lb2Y9ITApO3RoaXMuZW5zdXJlQnVmZmVyKHRoaXMuYnVmZmVyTGVuZ3RoKzEpLHRoaXMuYnVmZmVyW3RoaXMuYnVmZmVyTGVuZ3RoKytdPWV9fX1dKSYmcyh0LnByb3RvdHlwZSxyKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxofShpLkRlY29kZVN0cmVhbSk7dC5DQ0lUVEZheFN0cmVhbT1sfSwoZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuQ0NJVFRGYXhEZWNvZGVyPXZvaWQgMDt2YXIgbj1yKDIpO2Z1bmN0aW9uIGEoZSl7cmV0dXJuIGE9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGV9LGEoZSl9ZnVuY3Rpb24gaShlLHQpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgbj10W3JdO24uZW51bWVyYWJsZT1uLmVudW1lcmFibGV8fCExLG4uY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBuJiYobi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsKHZvaWQgMCxpPWZ1bmN0aW9uKGUsdCl7aWYoIm9iamVjdCIhPT1hKGUpfHxudWxsPT09ZSlyZXR1cm4gZTt2YXIgcj1lW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09cil7dmFyIG49ci5jYWxsKGUsInN0cmluZyIpO2lmKCJvYmplY3QiIT09YShuKSlyZXR1cm4gbjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybiBTdHJpbmcoZSl9KG4ua2V5KSwic3ltYm9sIj09PWEoaSk/aTpTdHJpbmcoaSkpLG4pfXZhciBpfXZhciBvPS0xLHM9W1stMSwtMV0sWy0xLC0xXSxbNyw4XSxbNyw3XSxbNiw2XSxbNiw2XSxbNiw1XSxbNiw1XSxbNCwwXSxbNCwwXSxbNCwwXSxbNCwwXSxbNCwwXSxbNCwwXSxbNCwwXSxbNCwwXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXV0sYz1bWy0xLC0xXSxbMTIsLTJdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbMTEsMTc5Ml0sWzExLDE3OTJdLFsxMiwxOTg0XSxbMTIsMjA0OF0sWzEyLDIxMTJdLFsxMiwyMTc2XSxbMTIsMjI0MF0sWzEyLDIzMDRdLFsxMSwxODU2XSxbMTEsMTg1Nl0sWzExLDE5MjBdLFsxMSwxOTIwXSxbMTIsMjM2OF0sWzEyLDI0MzJdLFsxMiwyNDk2XSxbMTIsMjU2MF1dLHU9W1stMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWzgsMjldLFs4LDI5XSxbOCwzMF0sWzgsMzBdLFs4LDQ1XSxbOCw0NV0sWzgsNDZdLFs4LDQ2XSxbNywyMl0sWzcsMjJdLFs3LDIyXSxbNywyMl0sWzcsMjNdLFs3LDIzXSxbNywyM10sWzcsMjNdLFs4LDQ3XSxbOCw0N10sWzgsNDhdLFs4LDQ4XSxbNiwxM10sWzYsMTNdLFs2LDEzXSxbNiwxM10sWzYsMTNdLFs2LDEzXSxbNiwxM10sWzYsMTNdLFs3LDIwXSxbNywyMF0sWzcsMjBdLFs3LDIwXSxbOCwzM10sWzgsMzNdLFs4LDM0XSxbOCwzNF0sWzgsMzVdLFs4LDM1XSxbOCwzNl0sWzgsMzZdLFs4LDM3XSxbOCwzN10sWzgsMzhdLFs4LDM4XSxbNywxOV0sWzcsMTldLFs3LDE5XSxbNywxOV0sWzgsMzFdLFs4LDMxXSxbOCwzMl0sWzgsMzJdLFs2LDFdLFs2LDFdLFs2LDFdLFs2LDFdLFs2LDFdLFs2LDFdLFs2LDFdLFs2LDFdLFs2LDEyXSxbNiwxMl0sWzYsMTJdLFs2LDEyXSxbNiwxMl0sWzYsMTJdLFs2LDEyXSxbNiwxMl0sWzgsNTNdLFs4LDUzXSxbOCw1NF0sWzgsNTRdLFs3LDI2XSxbNywyNl0sWzcsMjZdLFs3LDI2XSxbOCwzOV0sWzgsMzldLFs4LDQwXSxbOCw0MF0sWzgsNDFdLFs4LDQxXSxbOCw0Ml0sWzgsNDJdLFs4LDQzXSxbOCw0M10sWzgsNDRdLFs4LDQ0XSxbNywyMV0sWzcsMjFdLFs3LDIxXSxbNywyMV0sWzcsMjhdLFs3LDI4XSxbNywyOF0sWzcsMjhdLFs4LDYxXSxbOCw2MV0sWzgsNjJdLFs4LDYyXSxbOCw2M10sWzgsNjNdLFs4LDBdLFs4LDBdLFs4LDMyMF0sWzgsMzIwXSxbOCwzODRdLFs4LDM4NF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNywyN10sWzcsMjddLFs3LDI3XSxbNywyN10sWzgsNTldLFs4LDU5XSxbOCw2MF0sWzgsNjBdLFs5LDE0NzJdLFs5LDE1MzZdLFs5LDE2MDBdLFs5LDE3MjhdLFs3LDE4XSxbNywxOF0sWzcsMThdLFs3LDE4XSxbNywyNF0sWzcsMjRdLFs3LDI0XSxbNywyNF0sWzgsNDldLFs4LDQ5XSxbOCw1MF0sWzgsNTBdLFs4LDUxXSxbOCw1MV0sWzgsNTJdLFs4LDUyXSxbNywyNV0sWzcsMjVdLFs3LDI1XSxbNywyNV0sWzgsNTVdLFs4LDU1XSxbOCw1Nl0sWzgsNTZdLFs4LDU3XSxbOCw1N10sWzgsNThdLFs4LDU4XSxbNiwxOTJdLFs2LDE5Ml0sWzYsMTkyXSxbNiwxOTJdLFs2LDE5Ml0sWzYsMTkyXSxbNiwxOTJdLFs2LDE5Ml0sWzYsMTY2NF0sWzYsMTY2NF0sWzYsMTY2NF0sWzYsMTY2NF0sWzYsMTY2NF0sWzYsMTY2NF0sWzYsMTY2NF0sWzYsMTY2NF0sWzgsNDQ4XSxbOCw0NDhdLFs4LDUxMl0sWzgsNTEyXSxbOSw3MDRdLFs5LDc2OF0sWzgsNjQwXSxbOCw2NDBdLFs4LDU3Nl0sWzgsNTc2XSxbOSw4MzJdLFs5LDg5Nl0sWzksOTYwXSxbOSwxMDI0XSxbOSwxMDg4XSxbOSwxMTUyXSxbOSwxMjE2XSxbOSwxMjgwXSxbOSwxMzQ0XSxbOSwxNDA4XSxbNywyNTZdLFs3LDI1Nl0sWzcsMjU2XSxbNywyNTZdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsOF0sWzUsOF0sWzUsOF0sWzUsOF0sWzUsOF0sWzUsOF0sWzUsOF0sWzUsOF0sWzUsOF0sWzUsOF0sWzUsOF0sWzUsOF0sWzUsOF0sWzUsOF0sWzUsOF0sWzUsOF0sWzUsOV0sWzUsOV0sWzUsOV0sWzUsOV0sWzUsOV0sWzUsOV0sWzUsOV0sWzUsOV0sWzUsOV0sWzUsOV0sWzUsOV0sWzUsOV0sWzUsOV0sWzUsOV0sWzUsOV0sWzUsOV0sWzYsMTZdLFs2LDE2XSxbNiwxNl0sWzYsMTZdLFs2LDE2XSxbNiwxNl0sWzYsMTZdLFs2LDE2XSxbNiwxN10sWzYsMTddLFs2LDE3XSxbNiwxN10sWzYsMTddLFs2LDE3XSxbNiwxN10sWzYsMTddLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs2LDE0XSxbNiwxNF0sWzYsMTRdLFs2LDE0XSxbNiwxNF0sWzYsMTRdLFs2LDE0XSxbNiwxNF0sWzYsMTVdLFs2LDE1XSxbNiwxNV0sWzYsMTVdLFs2LDE1XSxbNiwxNV0sWzYsMTVdLFs2LDE1XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN11dLGw9W1stMSwtMV0sWy0xLC0xXSxbMTIsLTJdLFsxMiwtMl0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbMTEsMTc5Ml0sWzExLDE3OTJdLFsxMSwxNzkyXSxbMTEsMTc5Ml0sWzEyLDE5ODRdLFsxMiwxOTg0XSxbMTIsMjA0OF0sWzEyLDIwNDhdLFsxMiwyMTEyXSxbMTIsMjExMl0sWzEyLDIxNzZdLFsxMiwyMTc2XSxbMTIsMjI0MF0sWzEyLDIyNDBdLFsxMiwyMzA0XSxbMTIsMjMwNF0sWzExLDE4NTZdLFsxMSwxODU2XSxbMTEsMTg1Nl0sWzExLDE4NTZdLFsxMSwxOTIwXSxbMTEsMTkyMF0sWzExLDE5MjBdLFsxMSwxOTIwXSxbMTIsMjM2OF0sWzEyLDIzNjhdLFsxMiwyNDMyXSxbMTIsMjQzMl0sWzEyLDI0OTZdLFsxMiwyNDk2XSxbMTIsMjU2MF0sWzEyLDI1NjBdLFsxMCwxOF0sWzEwLDE4XSxbMTAsMThdLFsxMCwxOF0sWzEwLDE4XSxbMTAsMThdLFsxMCwxOF0sWzEwLDE4XSxbMTIsNTJdLFsxMiw1Ml0sWzEzLDY0MF0sWzEzLDcwNF0sWzEzLDc2OF0sWzEzLDgzMl0sWzEyLDU1XSxbMTIsNTVdLFsxMiw1Nl0sWzEyLDU2XSxbMTMsMTI4MF0sWzEzLDEzNDRdLFsxMywxNDA4XSxbMTMsMTQ3Ml0sWzEyLDU5XSxbMTIsNTldLFsxMiw2MF0sWzEyLDYwXSxbMTMsMTUzNl0sWzEzLDE2MDBdLFsxMSwyNF0sWzExLDI0XSxbMTEsMjRdLFsxMSwyNF0sWzExLDI1XSxbMTEsMjVdLFsxMSwyNV0sWzExLDI1XSxbMTMsMTY2NF0sWzEzLDE3MjhdLFsxMiwzMjBdLFsxMiwzMjBdLFsxMiwzODRdLFsxMiwzODRdLFsxMiw0NDhdLFsxMiw0NDhdLFsxMyw1MTJdLFsxMyw1NzZdLFsxMiw1M10sWzEyLDUzXSxbMTIsNTRdLFsxMiw1NF0sWzEzLDg5Nl0sWzEzLDk2MF0sWzEzLDEwMjRdLFsxMywxMDg4XSxbMTMsMTE1Ml0sWzEzLDEyMTZdLFsxMCw2NF0sWzEwLDY0XSxbMTAsNjRdLFsxMCw2NF0sWzEwLDY0XSxbMTAsNjRdLFsxMCw2NF0sWzEwLDY0XV0sZj1bWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFsxMSwyM10sWzExLDIzXSxbMTIsNTBdLFsxMiw1MV0sWzEyLDQ0XSxbMTIsNDVdLFsxMiw0Nl0sWzEyLDQ3XSxbMTIsNTddLFsxMiw1OF0sWzEyLDYxXSxbMTIsMjU2XSxbMTAsMTZdLFsxMCwxNl0sWzEwLDE2XSxbMTAsMTZdLFsxMCwxN10sWzEwLDE3XSxbMTAsMTddLFsxMCwxN10sWzEyLDQ4XSxbMTIsNDldLFsxMiw2Ml0sWzEyLDYzXSxbMTIsMzBdLFsxMiwzMV0sWzEyLDMyXSxbMTIsMzNdLFsxMiw0MF0sWzEyLDQxXSxbMTEsMjJdLFsxMSwyMl0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbOSwxNV0sWzksMTVdLFs5LDE1XSxbOSwxNV0sWzksMTVdLFs5LDE1XSxbOSwxNV0sWzksMTVdLFsxMiwxMjhdLFsxMiwxOTJdLFsxMiwyNl0sWzEyLDI3XSxbMTIsMjhdLFsxMiwyOV0sWzExLDE5XSxbMTEsMTldLFsxMSwyMF0sWzExLDIwXSxbMTIsMzRdLFsxMiwzNV0sWzEyLDM2XSxbMTIsMzddLFsxMiwzOF0sWzEyLDM5XSxbMTEsMjFdLFsxMSwyMV0sWzEyLDQyXSxbMTIsNDNdLFsxMCwwXSxbMTAsMF0sWzEwLDBdLFsxMCwwXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdXSxoPVtbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFs2LDldLFs2LDhdLFs1LDddLFs1LDddLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFszLDFdLFszLDFdLFszLDFdLFszLDFdLFszLDFdLFszLDFdLFszLDFdLFszLDFdLFszLDRdLFszLDRdLFszLDRdLFszLDRdLFszLDRdLFszLDRdLFszLDRdLFszLDRdLFsyLDNdLFsyLDNdLFsyLDNdLFsyLDNdLFsyLDNdLFsyLDNdLFsyLDNdLFsyLDNdLFsyLDNdLFsyLDNdLFsyLDNdLFsyLDNdLFsyLDNdLFsyLDNdLFsyLDNdLFsyLDNdLFsyLDJdLFsyLDJdLFsyLDJdLFsyLDJdLFsyLDJdLFsyLDJdLFsyLDJdLFsyLDJdLFsyLDJdLFsyLDJdLFsyLDJdLFsyLDJdLFsyLDJdLFsyLDJdLFsyLDJdLFsyLDJdXSxkPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0KXt2YXIgcj1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e307aWYoZnVuY3Rpb24oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxlKSwhdHx8ImZ1bmN0aW9uIiE9dHlwZW9mIHQubmV4dCl0aHJvdyBuZXcgRXJyb3IoJ0NDSVRURmF4RGVjb2RlciAtIGludmFsaWQgInNvdXJjZSIgcGFyYW1ldGVyLicpO3RoaXMuc291cmNlPXQsdGhpcy5lb2Y9ITEsdGhpcy5lbmNvZGluZz1yLkt8fDAsdGhpcy5lb2xpbmU9ci5FbmRPZkxpbmV8fCExLHRoaXMuYnl0ZUFsaWduPXIuRW5jb2RlZEJ5dGVBbGlnbnx8ITEsdGhpcy5jb2x1bW5zPXIuQ29sdW1uc3x8MTcyOCx0aGlzLnJvd3M9ci5Sb3dzfHwwO3ZhciBuLGE9ci5FbmRPZkJsb2NrO2ZvcihudWxsPT1hJiYoYT0hMCksdGhpcy5lb2Jsb2NrPWEsdGhpcy5ibGFjaz1yLkJsYWNrSXMxfHwhMSx0aGlzLmNvZGluZ0xpbmU9bmV3IFVpbnQzMkFycmF5KHRoaXMuY29sdW1ucysxKSx0aGlzLnJlZkxpbmU9bmV3IFVpbnQzMkFycmF5KHRoaXMuY29sdW1ucysyKSx0aGlzLmNvZGluZ0xpbmVbMF09dGhpcy5jb2x1bW5zLHRoaXMuY29kaW5nUG9zPTAsdGhpcy5yb3c9MCx0aGlzLm5leHRMaW5lMkQ9dGhpcy5lbmNvZGluZzwwLHRoaXMuaW5wdXRCaXRzPTAsdGhpcy5pbnB1dEJ1Zj0wLHRoaXMub3V0cHV0Qml0cz0wLHRoaXMucm93c0RvbmU9ITE7MD09PShuPXRoaXMuX2xvb2tCaXRzKDEyKSk7KXRoaXMuX2VhdEJpdHMoMSk7MT09PW4mJnRoaXMuX2VhdEJpdHMoMTIpLHRoaXMuZW5jb2Rpbmc+MCYmKHRoaXMubmV4dExpbmUyRD0hdGhpcy5fbG9va0JpdHMoMSksdGhpcy5fZWF0Qml0cygxKSl9dmFyIHQscjtyZXR1cm4gdD1lLChyPVt7a2V5OiJyZWFkTmV4dENoYXIiLHZhbHVlOmZ1bmN0aW9uKCl7aWYodGhpcy5lb2YpcmV0dXJuLTE7dmFyIGUsdCxyLGEsaSxzPXRoaXMucmVmTGluZSxjPXRoaXMuY29kaW5nTGluZSx1PXRoaXMuY29sdW1ucztpZigwPT09dGhpcy5vdXRwdXRCaXRzKXtpZih0aGlzLnJvd3NEb25lJiYodGhpcy5lb2Y9ITApLHRoaXMuZW9mKXJldHVybi0xO3ZhciBsLGYsaDtpZih0aGlzLmVycj0hMSx0aGlzLm5leHRMaW5lMkQpe2ZvcihhPTA7Y1thXTx1OysrYSlzW2FdPWNbYV07Zm9yKHNbYSsrXT11LHNbYV09dSxjWzBdPTAsdGhpcy5jb2RpbmdQb3M9MCxlPTAsdD0wO2NbdGhpcy5jb2RpbmdQb3NdPHU7KXN3aXRjaChsPXRoaXMuX2dldFR3b0RpbUNvZGUoKSl7Y2FzZSAwOnRoaXMuX2FkZFBpeGVscyhzW2UrMV0sdCksc1tlKzFdPHUmJihlKz0yKTticmVhaztjYXNlIDE6aWYobD1mPTAsdCl7ZG97bCs9aD10aGlzLl9nZXRCbGFja0NvZGUoKX13aGlsZShoPj02NCk7ZG97Zis9aD10aGlzLl9nZXRXaGl0ZUNvZGUoKX13aGlsZShoPj02NCl9ZWxzZXtkb3tsKz1oPXRoaXMuX2dldFdoaXRlQ29kZSgpfXdoaWxlKGg+PTY0KTtkb3tmKz1oPXRoaXMuX2dldEJsYWNrQ29kZSgpfXdoaWxlKGg+PTY0KX1mb3IodGhpcy5fYWRkUGl4ZWxzKGNbdGhpcy5jb2RpbmdQb3NdK2wsdCksY1t0aGlzLmNvZGluZ1Bvc108dSYmdGhpcy5fYWRkUGl4ZWxzKGNbdGhpcy5jb2RpbmdQb3NdK2YsMV50KTtzW2VdPD1jW3RoaXMuY29kaW5nUG9zXSYmc1tlXTx1OyllKz0yO2JyZWFrO2Nhc2UgNzppZih0aGlzLl9hZGRQaXhlbHMoc1tlXSszLHQpLHRePTEsY1t0aGlzLmNvZGluZ1Bvc108dSlmb3IoKytlO3NbZV08PWNbdGhpcy5jb2RpbmdQb3NdJiZzW2VdPHU7KWUrPTI7YnJlYWs7Y2FzZSA1OmlmKHRoaXMuX2FkZFBpeGVscyhzW2VdKzIsdCksdF49MSxjW3RoaXMuY29kaW5nUG9zXTx1KWZvcigrK2U7c1tlXTw9Y1t0aGlzLmNvZGluZ1Bvc10mJnNbZV08dTspZSs9MjticmVhaztjYXNlIDM6aWYodGhpcy5fYWRkUGl4ZWxzKHNbZV0rMSx0KSx0Xj0xLGNbdGhpcy5jb2RpbmdQb3NdPHUpZm9yKCsrZTtzW2VdPD1jW3RoaXMuY29kaW5nUG9zXSYmc1tlXTx1OyllKz0yO2JyZWFrO2Nhc2UgMjppZih0aGlzLl9hZGRQaXhlbHMoc1tlXSx0KSx0Xj0xLGNbdGhpcy5jb2RpbmdQb3NdPHUpZm9yKCsrZTtzW2VdPD1jW3RoaXMuY29kaW5nUG9zXSYmc1tlXTx1OyllKz0yO2JyZWFrO2Nhc2UgODppZih0aGlzLl9hZGRQaXhlbHNOZWcoc1tlXS0zLHQpLHRePTEsY1t0aGlzLmNvZGluZ1Bvc108dSlmb3IoZT4wPy0tZTorK2U7c1tlXTw9Y1t0aGlzLmNvZGluZ1Bvc10mJnNbZV08dTspZSs9MjticmVhaztjYXNlIDY6aWYodGhpcy5fYWRkUGl4ZWxzTmVnKHNbZV0tMix0KSx0Xj0xLGNbdGhpcy5jb2RpbmdQb3NdPHUpZm9yKGU+MD8tLWU6KytlO3NbZV08PWNbdGhpcy5jb2RpbmdQb3NdJiZzW2VdPHU7KWUrPTI7YnJlYWs7Y2FzZSA0OmlmKHRoaXMuX2FkZFBpeGVsc05lZyhzW2VdLTEsdCksdF49MSxjW3RoaXMuY29kaW5nUG9zXTx1KWZvcihlPjA/LS1lOisrZTtzW2VdPD1jW3RoaXMuY29kaW5nUG9zXSYmc1tlXTx1OyllKz0yO2JyZWFrO2Nhc2Ugbzp0aGlzLl9hZGRQaXhlbHModSwwKSx0aGlzLmVvZj0hMDticmVhaztkZWZhdWx0OigwLG4uaW5mbykoImJhZCAyZCBjb2RlIiksdGhpcy5fYWRkUGl4ZWxzKHUsMCksdGhpcy5lcnI9ITB9fWVsc2UgZm9yKGNbMF09MCx0aGlzLmNvZGluZ1Bvcz0wLHQ9MDtjW3RoaXMuY29kaW5nUG9zXTx1Oyl7aWYobD0wLHQpZG97bCs9aD10aGlzLl9nZXRCbGFja0NvZGUoKX13aGlsZShoPj02NCk7ZWxzZSBkb3tsKz1oPXRoaXMuX2dldFdoaXRlQ29kZSgpfXdoaWxlKGg+PTY0KTt0aGlzLl9hZGRQaXhlbHMoY1t0aGlzLmNvZGluZ1Bvc10rbCx0KSx0Xj0xfXZhciBkPSExO2lmKHRoaXMuYnl0ZUFsaWduJiYodGhpcy5pbnB1dEJpdHMmPS04KSx0aGlzLmVvYmxvY2t8fHRoaXMucm93IT09dGhpcy5yb3dzLTEpe2lmKGw9dGhpcy5fbG9va0JpdHMoMTIpLHRoaXMuZW9saW5lKWZvcig7bCE9PW8mJjEhPT1sOyl0aGlzLl9lYXRCaXRzKDEpLGw9dGhpcy5fbG9va0JpdHMoMTIpO2Vsc2UgZm9yKDswPT09bDspdGhpcy5fZWF0Qml0cygxKSxsPXRoaXMuX2xvb2tCaXRzKDEyKTsxPT09bD8odGhpcy5fZWF0Qml0cygxMiksZD0hMCk6bD09PW8mJih0aGlzLmVvZj0hMCl9ZWxzZSB0aGlzLnJvd3NEb25lPSEwO2lmKCF0aGlzLmVvZiYmdGhpcy5lbmNvZGluZz4wJiYhdGhpcy5yb3dzRG9uZSYmKHRoaXMubmV4dExpbmUyRD0hdGhpcy5fbG9va0JpdHMoMSksdGhpcy5fZWF0Qml0cygxKSksdGhpcy5lb2Jsb2NrJiZkJiZ0aGlzLmJ5dGVBbGlnbil7aWYoMT09PShsPXRoaXMuX2xvb2tCaXRzKDEyKSkpe2lmKHRoaXMuX2VhdEJpdHMoMTIpLHRoaXMuZW5jb2Rpbmc+MCYmKHRoaXMuX2xvb2tCaXRzKDEpLHRoaXMuX2VhdEJpdHMoMSkpLHRoaXMuZW5jb2Rpbmc+PTApZm9yKGE9MDthPDQ7KythKTEhPT0obD10aGlzLl9sb29rQml0cygxMikpJiYoMCxuLmluZm8pKCJiYWQgcnRjIGNvZGU6ICIrbCksdGhpcy5fZWF0Qml0cygxMiksdGhpcy5lbmNvZGluZz4wJiYodGhpcy5fbG9va0JpdHMoMSksdGhpcy5fZWF0Qml0cygxKSk7dGhpcy5lb2Y9ITB9fWVsc2UgaWYodGhpcy5lcnImJnRoaXMuZW9saW5lKXtmb3IoOzspe2lmKChsPXRoaXMuX2xvb2tCaXRzKDEzKSk9PT1vKXJldHVybiB0aGlzLmVvZj0hMCwtMTtpZihsPj4xPT0xKWJyZWFrO3RoaXMuX2VhdEJpdHMoMSl9dGhpcy5fZWF0Qml0cygxMiksdGhpcy5lbmNvZGluZz4wJiYodGhpcy5fZWF0Qml0cygxKSx0aGlzLm5leHRMaW5lMkQ9ISgxJmwpKX1jWzBdPjA/dGhpcy5vdXRwdXRCaXRzPWNbdGhpcy5jb2RpbmdQb3M9MF06dGhpcy5vdXRwdXRCaXRzPWNbdGhpcy5jb2RpbmdQb3M9MV0sdGhpcy5yb3crK31pZih0aGlzLm91dHB1dEJpdHM+PTgpaT0xJnRoaXMuY29kaW5nUG9zPzA6MjU1LHRoaXMub3V0cHV0Qml0cy09OCwwPT09dGhpcy5vdXRwdXRCaXRzJiZjW3RoaXMuY29kaW5nUG9zXTx1JiYodGhpcy5jb2RpbmdQb3MrKyx0aGlzLm91dHB1dEJpdHM9Y1t0aGlzLmNvZGluZ1Bvc10tY1t0aGlzLmNvZGluZ1Bvcy0xXSk7ZWxzZXtyPTgsaT0wO2Rve2lmKCJudW1iZXIiIT10eXBlb2YgdGhpcy5vdXRwdXRCaXRzKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCdJbnZhbGlkIC9DQ0lUVEZheERlY29kZSBkYXRhLCAib3V0cHV0Qml0cyIgbXVzdCBiZSBhIG51bWJlci4nKTt0aGlzLm91dHB1dEJpdHM+cj8oaTw8PXIsMSZ0aGlzLmNvZGluZ1Bvc3x8KGl8PTI1NT4+OC1yKSx0aGlzLm91dHB1dEJpdHMtPXIscj0wKTooaTw8PXRoaXMub3V0cHV0Qml0cywxJnRoaXMuY29kaW5nUG9zfHwoaXw9MjU1Pj44LXRoaXMub3V0cHV0Qml0cyksci09dGhpcy5vdXRwdXRCaXRzLHRoaXMub3V0cHV0Qml0cz0wLGNbdGhpcy5jb2RpbmdQb3NdPHU/KHRoaXMuY29kaW5nUG9zKyssdGhpcy5vdXRwdXRCaXRzPWNbdGhpcy5jb2RpbmdQb3NdLWNbdGhpcy5jb2RpbmdQb3MtMV0pOnI+MCYmKGk8PD1yLHI9MCkpfXdoaWxlKHIpfXJldHVybiB0aGlzLmJsYWNrJiYoaV49MjU1KSxpfX0se2tleToiX2FkZFBpeGVscyIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzLmNvZGluZ0xpbmUsYT10aGlzLmNvZGluZ1BvcztlPnJbYV0mJihlPnRoaXMuY29sdW1ucyYmKCgwLG4uaW5mbykoInJvdyBpcyB3cm9uZyBsZW5ndGgiKSx0aGlzLmVycj0hMCxlPXRoaXMuY29sdW1ucyksMSZhXnQmJisrYSxyW2FdPWUpLHRoaXMuY29kaW5nUG9zPWF9fSx7a2V5OiJfYWRkUGl4ZWxzTmVnIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciByPXRoaXMuY29kaW5nTGluZSxhPXRoaXMuY29kaW5nUG9zO2lmKGU+clthXSllPnRoaXMuY29sdW1ucyYmKCgwLG4uaW5mbykoInJvdyBpcyB3cm9uZyBsZW5ndGgiKSx0aGlzLmVycj0hMCxlPXRoaXMuY29sdW1ucyksMSZhXnQmJisrYSxyW2FdPWU7ZWxzZSBpZihlPHJbYV0pe2ZvcihlPDAmJigoMCxuLmluZm8pKCJpbnZhbGlkIGNvZGUiKSx0aGlzLmVycj0hMCxlPTApO2E+MCYmZTxyW2EtMV07KS0tYTtyW2FdPWV9dGhpcy5jb2RpbmdQb3M9YX19LHtrZXk6Il9maW5kVGFibGVDb2RlIix2YWx1ZTpmdW5jdGlvbihlLHQscixuKXtmb3IodmFyIGE9bnx8MCxpPWU7aTw9dDsrK2kpe3ZhciBzPXRoaXMuX2xvb2tCaXRzKGkpO2lmKHM9PT1vKXJldHVyblshMCwxLCExXTtpZihpPHQmJihzPDw9dC1pKSwhYXx8cz49YSl7dmFyIGM9cltzLWFdO2lmKGNbMF09PT1pKXJldHVybiB0aGlzLl9lYXRCaXRzKGkpLFshMCxjWzFdLCEwXX19cmV0dXJuWyExLDAsITFdfX0se2tleToiX2dldFR3b0RpbUNvZGUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGUsdD0wO2lmKHRoaXMuZW9ibG9jayl7aWYodD10aGlzLl9sb29rQml0cyg3KSwoZT1zW3RdKSYmZVswXT4wKXJldHVybiB0aGlzLl9lYXRCaXRzKGVbMF0pLGVbMV19ZWxzZXt2YXIgcj10aGlzLl9maW5kVGFibGVDb2RlKDEsNyxzKTtpZihyWzBdJiZyWzJdKXJldHVybiByWzFdfXJldHVybigwLG4uaW5mbykoIkJhZCB0d28gZGltIGNvZGUiKSxvfX0se2tleToiX2dldFdoaXRlQ29kZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZSx0PTA7aWYodGhpcy5lb2Jsb2NrKXtpZigodD10aGlzLl9sb29rQml0cygxMikpPT09bylyZXR1cm4gMTtpZigoZT10Pj41PT0wP2NbdF06dVt0Pj4zXSlbMF0+MClyZXR1cm4gdGhpcy5fZWF0Qml0cyhlWzBdKSxlWzFdfWVsc2V7dmFyIHI9dGhpcy5fZmluZFRhYmxlQ29kZSgxLDksdSk7aWYoclswXSlyZXR1cm4gclsxXTtpZigocj10aGlzLl9maW5kVGFibGVDb2RlKDExLDEyLGMpKVswXSlyZXR1cm4gclsxXX1yZXR1cm4oMCxuLmluZm8pKCJiYWQgd2hpdGUgY29kZSIpLHRoaXMuX2VhdEJpdHMoMSksMX19LHtrZXk6Il9nZXRCbGFja0NvZGUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGUsdDtpZih0aGlzLmVvYmxvY2spe2lmKChlPXRoaXMuX2xvb2tCaXRzKDEzKSk9PT1vKXJldHVybiAxO2lmKCh0PWU+Pjc9PTA/bFtlXTplPj45PT0wJiZlPj43IT0wP2ZbKGU+PjEpLTY0XTpoW2U+PjddKVswXT4wKXJldHVybiB0aGlzLl9lYXRCaXRzKHRbMF0pLHRbMV19ZWxzZXt2YXIgcj10aGlzLl9maW5kVGFibGVDb2RlKDIsNixoKTtpZihyWzBdKXJldHVybiByWzFdO2lmKChyPXRoaXMuX2ZpbmRUYWJsZUNvZGUoNywxMixmLDY0KSlbMF0pcmV0dXJuIHJbMV07aWYoKHI9dGhpcy5fZmluZFRhYmxlQ29kZSgxMCwxMyxsKSlbMF0pcmV0dXJuIHJbMV19cmV0dXJuKDAsbi5pbmZvKSgiYmFkIGJsYWNrIGNvZGUiKSx0aGlzLl9lYXRCaXRzKDEpLDF9fSx7a2V5OiJfbG9va0JpdHMiLHZhbHVlOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdDt0aGlzLmlucHV0Qml0czxlOyl7aWYoLTE9PT0odD10aGlzLnNvdXJjZS5uZXh0KCkpKXJldHVybiAwPT09dGhpcy5pbnB1dEJpdHM/bzp0aGlzLmlucHV0QnVmPDxlLXRoaXMuaW5wdXRCaXRzJjY1NTM1Pj4xNi1lO3RoaXMuaW5wdXRCdWY9dGhpcy5pbnB1dEJ1Zjw8OHx0LHRoaXMuaW5wdXRCaXRzKz04fXJldHVybiB0aGlzLmlucHV0QnVmPj50aGlzLmlucHV0Qml0cy1lJjY1NTM1Pj4xNi1lfX0se2tleToiX2VhdEJpdHMiLHZhbHVlOmZ1bmN0aW9uKGUpeyh0aGlzLmlucHV0Qml0cy09ZSk8MCYmKHRoaXMuaW5wdXRCaXRzPTApfX1dKSYmaSh0LnByb3RvdHlwZSxyKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxlfSgpO3QuQ0NJVFRGYXhEZWNvZGVyPWR9LChlLHQscik9PntmdW5jdGlvbiBuKGUpe3JldHVybiBuPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSxuKGUpfU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LkZsYXRlU3RyZWFtPXZvaWQgMDt2YXIgYT1yKDE0OCksaT1yKDIpO2Z1bmN0aW9uIG8oZSx0KXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIGE9dFtyXTthLmVudW1lcmFibGU9YS5lbnVtZXJhYmxlfHwhMSxhLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gYSYmKGEud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCh2b2lkIDAsaT1mdW5jdGlvbihlLHQpe2lmKCJvYmplY3QiIT09bihlKXx8bnVsbD09PWUpcmV0dXJuIGU7dmFyIHI9ZVtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PXIpe3ZhciBhPXIuY2FsbChlLCJzdHJpbmciKTtpZigib2JqZWN0IiE9PW4oYSkpcmV0dXJuIGE7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4gU3RyaW5nKGUpfShhLmtleSksInN5bWJvbCI9PT1uKGkpP2k6U3RyaW5nKGkpKSxhKX12YXIgaX1mdW5jdGlvbiBzKGUsdCl7cmV0dXJuIHM9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5fX3Byb3RvX189dCxlfSxzKGUsdCl9ZnVuY3Rpb24gYyhlKXtyZXR1cm4gYz1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihlKXtyZXR1cm4gZS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihlKX0sYyhlKX12YXIgdT1uZXcgSW50MzJBcnJheShbMTYsMTcsMTgsMCw4LDcsOSw2LDEwLDUsMTEsNCwxMiwzLDEzLDIsMTQsMSwxNV0pLGw9bmV3IEludDMyQXJyYXkoWzMsNCw1LDYsNyw4LDksMTAsNjU1NDcsNjU1NDksNjU1NTEsNjU1NTMsMTMxMDkxLDEzMTA5NSwxMzEwOTksMTMxMTAzLDE5NjY0MywxOTY2NTEsMTk2NjU5LDE5NjY2NywyNjIyMTEsMjYyMjI3LDI2MjI0MywyNjIyNTksMzI3ODExLDMyNzg0MywzMjc4NzUsMzI3OTA3LDI1OCwyNTgsMjU4XSksZj1uZXcgSW50MzJBcnJheShbMSwyLDMsNCw2NTU0MSw2NTU0MywxMzEwODEsMTMxMDg1LDE5NjYyNSwxOTY2MzMsMjYyMTc3LDI2MjE5MywzMjc3NDUsMzI3Nzc3LDM5MzM0NSwzOTM0MDksNDU5MDA5LDQ1OTEzNyw1MjQ4MDEsNTI1MDU3LDU5MDg0OSw1OTEzNjEsNjU3NDA5LDY1ODQzMyw3MjQ5OTMsNzI3MDQxLDc5NDYyNSw3OTg3MjEsODY4MzUzLDg3NjU0NV0pLGg9W25ldyBJbnQzMkFycmF5KFs0NTkwMDgsNTI0MzY4LDUyNDMwNCw1MjQ1NjgsNDU5MDI0LDUyNDQwMCw1MjQzMzYsNTkwMDE2LDQ1OTAxNiw1MjQzODQsNTI0MzIwLDU4OTk4NCw1MjQyODgsNTI0NDE2LDUyNDM1Miw1OTAwNDgsNDU5MDEyLDUyNDM3Niw1MjQzMTIsNTg5OTY4LDQ1OTAyOCw1MjQ0MDgsNTI0MzQ0LDU5MDAzMiw0NTkwMjAsNTI0MzkyLDUyNDMyOCw1OWU0LDUyNDI5Niw1MjQ0MjQsNTI0MzYwLDU5MDA2NCw0NTkwMTAsNTI0MzcyLDUyNDMwOCw1MjQ1NzIsNDU5MDI2LDUyNDQwNCw1MjQzNDAsNTkwMDI0LDQ1OTAxOCw1MjQzODgsNTI0MzI0LDU4OTk5Miw1MjQyOTIsNTI0NDIwLDUyNDM1Niw1OTAwNTYsNDU5MDE0LDUyNDM4MCw1MjQzMTYsNTg5OTc2LDQ1OTAzMCw1MjQ0MTIsNTI0MzQ4LDU5MDA0MCw0NTkwMjIsNTI0Mzk2LDUyNDMzMiw1OTAwMDgsNTI0MzAwLDUyNDQyOCw1MjQzNjQsNTkwMDcyLDQ1OTAwOSw1MjQzNzAsNTI0MzA2LDUyNDU3MCw0NTkwMjUsNTI0NDAyLDUyNDMzOCw1OTAwMjAsNDU5MDE3LDUyNDM4Niw1MjQzMjIsNTg5OTg4LDUyNDI5MCw1MjQ0MTgsNTI0MzU0LDU5MDA1Miw0NTkwMTMsNTI0Mzc4LDUyNDMxNCw1ODk5NzIsNDU5MDI5LDUyNDQxMCw1MjQzNDYsNTkwMDM2LDQ1OTAyMSw1MjQzOTQsNTI0MzMwLDU5MDAwNCw1MjQyOTgsNTI0NDI2LDUyNDM2Miw1OTAwNjgsNDU5MDExLDUyNDM3NCw1MjQzMTAsNTI0NTc0LDQ1OTAyNyw1MjQ0MDYsNTI0MzQyLDU5MDAyOCw0NTkwMTksNTI0MzkwLDUyNDMyNiw1ODk5OTYsNTI0Mjk0LDUyNDQyMiw1MjQzNTgsNTkwMDYwLDQ1OTAxNSw1MjQzODIsNTI0MzE4LDU4OTk4MCw0NTkwMzEsNTI0NDE0LDUyNDM1MCw1OTAwNDQsNDU5MDIzLDUyNDM5OCw1MjQzMzQsNTkwMDEyLDUyNDMwMiw1MjQ0MzAsNTI0MzY2LDU5MDA3Niw0NTkwMDgsNTI0MzY5LDUyNDMwNSw1MjQ1NjksNDU5MDI0LDUyNDQwMSw1MjQzMzcsNTkwMDE4LDQ1OTAxNiw1MjQzODUsNTI0MzIxLDU4OTk4Niw1MjQyODksNTI0NDE3LDUyNDM1Myw1OTAwNTAsNDU5MDEyLDUyNDM3Nyw1MjQzMTMsNTg5OTcwLDQ1OTAyOCw1MjQ0MDksNTI0MzQ1LDU5MDAzNCw0NTkwMjAsNTI0MzkzLDUyNDMyOSw1OTAwMDIsNTI0Mjk3LDUyNDQyNSw1MjQzNjEsNTkwMDY2LDQ1OTAxMCw1MjQzNzMsNTI0MzA5LDUyNDU3Myw0NTkwMjYsNTI0NDA1LDUyNDM0MSw1OTAwMjYsNDU5MDE4LDUyNDM4OSw1MjQzMjUsNTg5OTk0LDUyNDI5Myw1MjQ0MjEsNTI0MzU3LDU5MDA1OCw0NTkwMTQsNTI0MzgxLDUyNDMxNyw1ODk5NzgsNDU5MDMwLDUyNDQxMyw1MjQzNDksNTkwMDQyLDQ1OTAyMiw1MjQzOTcsNTI0MzMzLDU5MDAxMCw1MjQzMDEsNTI0NDI5LDUyNDM2NSw1OTAwNzQsNDU5MDA5LDUyNDM3MSw1MjQzMDcsNTI0NTcxLDQ1OTAyNSw1MjQ0MDMsNTI0MzM5LDU5MDAyMiw0NTkwMTcsNTI0Mzg3LDUyNDMyMyw1ODk5OTAsNTI0MjkxLDUyNDQxOSw1MjQzNTUsNTkwMDU0LDQ1OTAxMyw1MjQzNzksNTI0MzE1LDU4OTk3NCw0NTkwMjksNTI0NDExLDUyNDM0Nyw1OTAwMzgsNDU5MDIxLDUyNDM5NSw1MjQzMzEsNTkwMDA2LDUyNDI5OSw1MjQ0MjcsNTI0MzYzLDU5MDA3MCw0NTkwMTEsNTI0Mzc1LDUyNDMxMSw1MjQ1NzUsNDU5MDI3LDUyNDQwNyw1MjQzNDMsNTkwMDMwLDQ1OTAxOSw1MjQzOTEsNTI0MzI3LDU4OTk5OCw1MjQyOTUsNTI0NDIzLDUyNDM1OSw1OTAwNjIsNDU5MDE1LDUyNDM4Myw1MjQzMTksNTg5OTgyLDQ1OTAzMSw1MjQ0MTUsNTI0MzUxLDU5MDA0Niw0NTkwMjMsNTI0Mzk5LDUyNDMzNSw1OTAwMTQsNTI0MzAzLDUyNDQzMSw1MjQzNjcsNTkwMDc4LDQ1OTAwOCw1MjQzNjgsNTI0MzA0LDUyNDU2OCw0NTkwMjQsNTI0NDAwLDUyNDMzNiw1OTAwMTcsNDU5MDE2LDUyNDM4NCw1MjQzMjAsNTg5OTg1LDUyNDI4OCw1MjQ0MTYsNTI0MzUyLDU5MDA0OSw0NTkwMTIsNTI0Mzc2LDUyNDMxMiw1ODk5NjksNDU5MDI4LDUyNDQwOCw1MjQzNDQsNTkwMDMzLDQ1OTAyMCw1MjQzOTIsNTI0MzI4LDU5MDAwMSw1MjQyOTYsNTI0NDI0LDUyNDM2MCw1OTAwNjUsNDU5MDEwLDUyNDM3Miw1MjQzMDgsNTI0NTcyLDQ1OTAyNiw1MjQ0MDQsNTI0MzQwLDU5MDAyNSw0NTkwMTgsNTI0Mzg4LDUyNDMyNCw1ODk5OTMsNTI0MjkyLDUyNDQyMCw1MjQzNTYsNTkwMDU3LDQ1OTAxNCw1MjQzODAsNTI0MzE2LDU4OTk3Nyw0NTkwMzAsNTI0NDEyLDUyNDM0OCw1OTAwNDEsNDU5MDIyLDUyNDM5Niw1MjQzMzIsNTkwMDA5LDUyNDMwMCw1MjQ0MjgsNTI0MzY0LDU5MDA3Myw0NTkwMDksNTI0MzcwLDUyNDMwNiw1MjQ1NzAsNDU5MDI1LDUyNDQwMiw1MjQzMzgsNTkwMDIxLDQ1OTAxNyw1MjQzODYsNTI0MzIyLDU4OTk4OSw1MjQyOTAsNTI0NDE4LDUyNDM1NCw1OTAwNTMsNDU5MDEzLDUyNDM3OCw1MjQzMTQsNTg5OTczLDQ1OTAyOSw1MjQ0MTAsNTI0MzQ2LDU5MDAzNyw0NTkwMjEsNTI0Mzk0LDUyNDMzMCw1OTAwMDUsNTI0Mjk4LDUyNDQyNiw1MjQzNjIsNTkwMDY5LDQ1OTAxMSw1MjQzNzQsNTI0MzEwLDUyNDU3NCw0NTkwMjcsNTI0NDA2LDUyNDM0Miw1OTAwMjksNDU5MDE5LDUyNDM5MCw1MjQzMjYsNTg5OTk3LDUyNDI5NCw1MjQ0MjIsNTI0MzU4LDU5MDA2MSw0NTkwMTUsNTI0MzgyLDUyNDMxOCw1ODk5ODEsNDU5MDMxLDUyNDQxNCw1MjQzNTAsNTkwMDQ1LDQ1OTAyMyw1MjQzOTgsNTI0MzM0LDU5MDAxMyw1MjQzMDIsNTI0NDMwLDUyNDM2Niw1OTAwNzcsNDU5MDA4LDUyNDM2OSw1MjQzMDUsNTI0NTY5LDQ1OTAyNCw1MjQ0MDEsNTI0MzM3LDU5MDAxOSw0NTkwMTYsNTI0Mzg1LDUyNDMyMSw1ODk5ODcsNTI0Mjg5LDUyNDQxNyw1MjQzNTMsNTkwMDUxLDQ1OTAxMiw1MjQzNzcsNTI0MzEzLDU4OTk3MSw0NTkwMjgsNTI0NDA5LDUyNDM0NSw1OTAwMzUsNDU5MDIwLDUyNDM5Myw1MjQzMjksNTkwMDAzLDUyNDI5Nyw1MjQ0MjUsNTI0MzYxLDU5MDA2Nyw0NTkwMTAsNTI0MzczLDUyNDMwOSw1MjQ1NzMsNDU5MDI2LDUyNDQwNSw1MjQzNDEsNTkwMDI3LDQ1OTAxOCw1MjQzODksNTI0MzI1LDU4OTk5NSw1MjQyOTMsNTI0NDIxLDUyNDM1Nyw1OTAwNTksNDU5MDE0LDUyNDM4MSw1MjQzMTcsNTg5OTc5LDQ1OTAzMCw1MjQ0MTMsNTI0MzQ5LDU5MDA0Myw0NTkwMjIsNTI0Mzk3LDUyNDMzMyw1OTAwMTEsNTI0MzAxLDUyNDQyOSw1MjQzNjUsNTkwMDc1LDQ1OTAwOSw1MjQzNzEsNTI0MzA3LDUyNDU3MSw0NTkwMjUsNTI0NDAzLDUyNDMzOSw1OTAwMjMsNDU5MDE3LDUyNDM4Nyw1MjQzMjMsNTg5OTkxLDUyNDI5MSw1MjQ0MTksNTI0MzU1LDU5MDA1NSw0NTkwMTMsNTI0Mzc5LDUyNDMxNSw1ODk5NzUsNDU5MDI5LDUyNDQxMSw1MjQzNDcsNTkwMDM5LDQ1OTAyMSw1MjQzOTUsNTI0MzMxLDU5MDAwNyw1MjQyOTksNTI0NDI3LDUyNDM2Myw1OTAwNzEsNDU5MDExLDUyNDM3NSw1MjQzMTEsNTI0NTc1LDQ1OTAyNyw1MjQ0MDcsNTI0MzQzLDU5MDAzMSw0NTkwMTksNTI0MzkxLDUyNDMyNyw1ODk5OTksNTI0Mjk1LDUyNDQyMyw1MjQzNTksNTkwMDYzLDQ1OTAxNSw1MjQzODMsNTI0MzE5LDU4OTk4Myw0NTkwMzEsNTI0NDE1LDUyNDM1MSw1OTAwNDcsNDU5MDIzLDUyNDM5OSw1MjQzMzUsNTkwMDE1LDUyNDMwMyw1MjQ0MzEsNTI0MzY3LDU5MDA3OV0pLDldLGQ9W25ldyBJbnQzMkFycmF5KFszMjc2ODAsMzI3Njk2LDMyNzY4OCwzMjc3MDQsMzI3Njg0LDMyNzcwMCwzMjc2OTIsMzI3NzA4LDMyNzY4MiwzMjc2OTgsMzI3NjkwLDMyNzcwNiwzMjc2ODYsMzI3NzAyLDMyNzY5NCwwLDMyNzY4MSwzMjc2OTcsMzI3Njg5LDMyNzcwNSwzMjc2ODUsMzI3NzAxLDMyNzY5MywzMjc3MDksMzI3NjgzLDMyNzY5OSwzMjc2OTEsMzI3NzA3LDMyNzY4NywzMjc3MDMsMzI3Njk1LDBdKSw1XSxwPWZ1bmN0aW9uKGUpeyFmdW5jdGlvbihlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSx0JiZzKGUsdCl9KHYsZSk7dmFyIHQscixhLHAsZz0oYT12LHA9ZnVuY3Rpb24oKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdClyZXR1cm4hMTtpZihSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLChmdW5jdGlvbigpe30pKSksITB9Y2F0Y2goZSl7cmV0dXJuITF9fSgpLGZ1bmN0aW9uKCl7dmFyIGUsdD1jKGEpO2lmKHApe3ZhciByPWModGhpcykuY29uc3RydWN0b3I7ZT1SZWZsZWN0LmNvbnN0cnVjdCh0LGFyZ3VtZW50cyxyKX1lbHNlIGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYodCYmKCJvYmplY3QiPT09bih0KXx8ImZ1bmN0aW9uIj09dHlwZW9mIHQpKXJldHVybiB0O2lmKHZvaWQgMCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24oZSl7aWYodm9pZCAwPT09ZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBlfShlKX0odGhpcyxlKX0pO2Z1bmN0aW9uIHYoZSx0KXt2YXIgcjshZnVuY3Rpb24oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyx2KSwocj1nLmNhbGwodGhpcyx0KSkuc3RyPWUsci5kaWN0PWUuZGljdDt2YXIgbj1lLmdldEJ5dGUoKSxhPWUuZ2V0Qnl0ZSgpO2lmKC0xPT09bnx8LTE9PT1hKXRocm93IG5ldyBpLkZvcm1hdEVycm9yKCJJbnZhbGlkIGhlYWRlciBpbiBmbGF0ZSBzdHJlYW06ICIuY29uY2F0KG4sIiwgIikuY29uY2F0KGEpKTtpZig4IT0oMTUmbikpdGhyb3cgbmV3IGkuRm9ybWF0RXJyb3IoIlVua25vd24gY29tcHJlc3Npb24gbWV0aG9kIGluIGZsYXRlIHN0cmVhbTogIi5jb25jYXQobiwiLCAiKS5jb25jYXQoYSkpO2lmKCgobjw8OCkrYSklMzEhPTApdGhyb3cgbmV3IGkuRm9ybWF0RXJyb3IoIkJhZCBGQ0hFQ0sgaW4gZmxhdGUgc3RyZWFtOiAiLmNvbmNhdChuLCIsICIpLmNvbmNhdChhKSk7aWYoMzImYSl0aHJvdyBuZXcgaS5Gb3JtYXRFcnJvcigiRkRJQ1QgYml0IHNldCBpbiBmbGF0ZSBzdHJlYW06ICIuY29uY2F0KG4sIiwgIikuY29uY2F0KGEpKTtyZXR1cm4gci5jb2RlU2l6ZT0wLHIuY29kZUJ1Zj0wLHJ9cmV0dXJuIHQ9diwocj1be2tleToiZ2V0Qml0cyIsdmFsdWU6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LHI9dGhpcy5zdHIsbj10aGlzLmNvZGVTaXplLGE9dGhpcy5jb2RlQnVmO248ZTspe2lmKC0xPT09KHQ9ci5nZXRCeXRlKCkpKXRocm93IG5ldyBpLkZvcm1hdEVycm9yKCJCYWQgZW5jb2RpbmcgaW4gZmxhdGUgc3RyZWFtIik7YXw9dDw8bixuKz04fXJldHVybiB0PWEmKDE8PGUpLTEsdGhpcy5jb2RlQnVmPWE+PmUsdGhpcy5jb2RlU2l6ZT1uLT1lLHR9fSx7a2V5OiJnZXRDb2RlIix2YWx1ZTpmdW5jdGlvbihlKXtmb3IodmFyIHQscj10aGlzLnN0cixuPWVbMF0sYT1lWzFdLG89dGhpcy5jb2RlU2l6ZSxzPXRoaXMuY29kZUJ1ZjtvPGEmJi0xIT09KHQ9ci5nZXRCeXRlKCkpOylzfD10PDxvLG8rPTg7dmFyIGM9bltzJigxPDxhKS0xXSx1PWM+PjE2LGw9NjU1MzUmYztpZih1PDF8fG88dSl0aHJvdyBuZXcgaS5Gb3JtYXRFcnJvcigiQmFkIGVuY29kaW5nIGluIGZsYXRlIHN0cmVhbSIpO3JldHVybiB0aGlzLmNvZGVCdWY9cz4+dSx0aGlzLmNvZGVTaXplPW8tdSxsfX0se2tleToiZ2VuZXJhdGVIdWZmbWFuVGFibGUiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0LHI9ZS5sZW5ndGgsbj0wO2Zvcih0PTA7dDxyOysrdCllW3RdPm4mJihuPWVbdF0pO2Zvcih2YXIgYT0xPDxuLGk9bmV3IEludDMyQXJyYXkoYSksbz0xLHM9MCxjPTI7bzw9bjsrK28sczw8PTEsYzw8PTEpZm9yKHZhciB1PTA7dTxyOysrdSlpZihlW3VdPT09byl7dmFyIGw9MCxmPXM7Zm9yKHQ9MDt0PG87Kyt0KWw9bDw8MXwxJmYsZj4+PTE7Zm9yKHQ9bDt0PGE7dCs9YylpW3RdPW88PDE2fHU7KytzfXJldHVybltpLG5dfX0se2tleToicmVhZEJsb2NrIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlLHQscj10aGlzLnN0cixuPXRoaXMuZ2V0Qml0cygzKTtpZigxJm4mJih0aGlzLmVvZj0hMCksMCE9KG4+Pj0xKSl7dmFyIGEsbztpZigxPT09bilhPWgsbz1kO2Vsc2V7aWYoMiE9PW4pdGhyb3cgbmV3IGkuRm9ybWF0RXJyb3IoIlVua25vd24gYmxvY2sgdHlwZSBpbiBmbGF0ZSBzdHJlYW0iKTt2YXIgcyxjPXRoaXMuZ2V0Qml0cyg1KSsyNTcscD10aGlzLmdldEJpdHMoNSkrMSxnPXRoaXMuZ2V0Qml0cyg0KSs0LHY9bmV3IFVpbnQ4QXJyYXkodS5sZW5ndGgpO2ZvcihzPTA7czxnOysrcyl2W3Vbc11dPXRoaXMuZ2V0Qml0cygzKTt2YXIgeT10aGlzLmdlbmVyYXRlSHVmZm1hblRhYmxlKHYpO3Q9MCxzPTA7Zm9yKHZhciBtLGIsdyxrPWMrcCxTPW5ldyBVaW50OEFycmF5KGspO3M8azspe3ZhciB4PXRoaXMuZ2V0Q29kZSh5KTtpZigxNj09PXgpbT0yLGI9Myx3PXQ7ZWxzZSBpZigxNz09PXgpbT0zLGI9Myx3PXQ9MDtlbHNle2lmKDE4IT09eCl7U1tzKytdPXQ9eDtjb250aW51ZX1tPTcsYj0xMSx3PXQ9MH1mb3IodmFyIE89dGhpcy5nZXRCaXRzKG0pK2I7Ty0tID4wOylTW3MrK109d31hPXRoaXMuZ2VuZXJhdGVIdWZmbWFuVGFibGUoUy5zdWJhcnJheSgwLGMpKSxvPXRoaXMuZ2VuZXJhdGVIdWZmbWFuVGFibGUoUy5zdWJhcnJheShjLGspKX1mb3IodmFyIEE9KGU9dGhpcy5idWZmZXIpP2UubGVuZ3RoOjAsQz10aGlzLmJ1ZmZlckxlbmd0aDs7KXt2YXIgRj10aGlzLmdldENvZGUoYSk7aWYoRjwyNTYpQysxPj1BJiYoQT0oZT10aGlzLmVuc3VyZUJ1ZmZlcihDKzEpKS5sZW5ndGgpLGVbQysrXT1GO2Vsc2V7aWYoMjU2PT09RilyZXR1cm4gdm9pZCh0aGlzLmJ1ZmZlckxlbmd0aD1DKTt2YXIgUD0oRj1sW0YtPTI1N10pPj4xNjtQPjAmJihQPXRoaXMuZ2V0Qml0cyhQKSksdD0oNjU1MzUmRikrUCxGPXRoaXMuZ2V0Q29kZShvKSwoUD0oRj1mW0ZdKT4+MTYpPjAmJihQPXRoaXMuZ2V0Qml0cyhQKSk7dmFyIFQ9KDY1NTM1JkYpK1A7Qyt0Pj1BJiYoQT0oZT10aGlzLmVuc3VyZUJ1ZmZlcihDK3QpKS5sZW5ndGgpO2Zvcih2YXIgST0wO0k8dDsrK0ksKytDKWVbQ109ZVtDLVRdfX19ZWxzZXt2YXIgRTtpZigtMT09PShFPXIuZ2V0Qnl0ZSgpKSl0aHJvdyBuZXcgaS5Gb3JtYXRFcnJvcigiQmFkIGJsb2NrIGhlYWRlciBpbiBmbGF0ZSBzdHJlYW0iKTt2YXIgaj1FO2lmKC0xPT09KEU9ci5nZXRCeXRlKCkpKXRocm93IG5ldyBpLkZvcm1hdEVycm9yKCJCYWQgYmxvY2sgaGVhZGVyIGluIGZsYXRlIHN0cmVhbSIpO2lmKGp8PUU8PDgsLTE9PT0oRT1yLmdldEJ5dGUoKSkpdGhyb3cgbmV3IGkuRm9ybWF0RXJyb3IoIkJhZCBibG9jayBoZWFkZXIgaW4gZmxhdGUgc3RyZWFtIik7dmFyIE09RTtpZigtMT09PShFPXIuZ2V0Qnl0ZSgpKSl0aHJvdyBuZXcgaS5Gb3JtYXRFcnJvcigiQmFkIGJsb2NrIGhlYWRlciBpbiBmbGF0ZSBzdHJlYW0iKTtpZigoTXw9RTw8OCkhPSg2NTUzNSZ+aikmJigwIT09anx8MCE9PU0pKXRocm93IG5ldyBpLkZvcm1hdEVycm9yKCJCYWQgdW5jb21wcmVzc2VkIGJsb2NrIGxlbmd0aCBpbiBmbGF0ZSBzdHJlYW0iKTt0aGlzLmNvZGVCdWY9MCx0aGlzLmNvZGVTaXplPTA7dmFyIF89dGhpcy5idWZmZXJMZW5ndGgsTD1fK2o7aWYoZT10aGlzLmVuc3VyZUJ1ZmZlcihMKSx0aGlzLmJ1ZmZlckxlbmd0aD1MLDA9PT1qKS0xPT09ci5wZWVrQnl0ZSgpJiYodGhpcy5lb2Y9ITApO2Vsc2V7dmFyIFI9ci5nZXRCeXRlcyhqKTtlLnNldChSLF8pLFIubGVuZ3RoPGomJih0aGlzLmVvZj0hMCl9fX19XSkmJm8odC5wcm90b3R5cGUsciksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksdn0oYS5EZWNvZGVTdHJlYW0pO3QuRmxhdGVTdHJlYW09cH0sKGUsdCxyKT0+e2Z1bmN0aW9uIG4oZSl7cmV0dXJuIG49ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGV9LG4oZSl9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuSmJpZzJTdHJlYW09dm9pZCAwO3ZhciBhPXIoMTM2KSxpPXIoMTQ4KSxvPXIoMTM0KSxzPXIoMTU0KSxjPXIoMik7ZnVuY3Rpb24gdShlLHQpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgYT10W3JdO2EuZW51bWVyYWJsZT1hLmVudW1lcmFibGV8fCExLGEuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBhJiYoYS53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsKHZvaWQgMCxpPWZ1bmN0aW9uKGUsdCl7aWYoIm9iamVjdCIhPT1uKGUpfHxudWxsPT09ZSlyZXR1cm4gZTt2YXIgcj1lW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09cil7dmFyIGE9ci5jYWxsKGUsInN0cmluZyIpO2lmKCJvYmplY3QiIT09bihhKSlyZXR1cm4gYTt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybiBTdHJpbmcoZSl9KGEua2V5KSwic3ltYm9sIj09PW4oaSk/aTpTdHJpbmcoaSkpLGEpfXZhciBpfWZ1bmN0aW9uIGwoZSx0KXtyZXR1cm4gbD1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihlLHQpe3JldHVybiBlLl9fcHJvdG9fXz10LGV9LGwoZSx0KX1mdW5jdGlvbiBmKGUpe3JldHVybiBmPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGUpe3JldHVybiBlLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpfSxmKGUpfXZhciBoPWZ1bmN0aW9uKGUpeyFmdW5jdGlvbihlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSx0JiZsKGUsdCl9KHAsZSk7dmFyIHQscixpLGgsZD0oaT1wLGg9ZnVuY3Rpb24oKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdClyZXR1cm4hMTtpZihSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLChmdW5jdGlvbigpe30pKSksITB9Y2F0Y2goZSl7cmV0dXJuITF9fSgpLGZ1bmN0aW9uKCl7dmFyIGUsdD1mKGkpO2lmKGgpe3ZhciByPWYodGhpcykuY29uc3RydWN0b3I7ZT1SZWZsZWN0LmNvbnN0cnVjdCh0LGFyZ3VtZW50cyxyKX1lbHNlIGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYodCYmKCJvYmplY3QiPT09bih0KXx8ImZ1bmN0aW9uIj09dHlwZW9mIHQpKXJldHVybiB0O2lmKHZvaWQgMCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24oZSl7aWYodm9pZCAwPT09ZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBlfShlKX0odGhpcyxlKX0pO2Z1bmN0aW9uIHAoZSx0LHIpe3ZhciBuO3JldHVybiBmdW5jdGlvbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLHApLChuPWQuY2FsbCh0aGlzLHQpKS5zdHJlYW09ZSxuLmRpY3Q9ZS5kaWN0LG4ubWF5YmVMZW5ndGg9dCxuLnBhcmFtcz1yLG59cmV0dXJuIHQ9cCwocj1be2tleToiYnl0ZXMiLGdldDpmdW5jdGlvbigpe3JldHVybigwLGMuc2hhZG93KSh0aGlzLCJieXRlcyIsdGhpcy5zdHJlYW0uZ2V0Qnl0ZXModGhpcy5tYXliZUxlbmd0aCkpfX0se2tleToiZW5zdXJlQnVmZmVyIix2YWx1ZTpmdW5jdGlvbihlKXt9fSx7a2V5OiJyZWFkQmxvY2siLHZhbHVlOmZ1bmN0aW9uKCl7aWYoIXRoaXMuZW9mKXt2YXIgZT1uZXcgcy5KYmlnMkltYWdlLHQ9W107aWYodGhpcy5wYXJhbXMgaW5zdGFuY2VvZiBvLkRpY3Qpe3ZhciByPXRoaXMucGFyYW1zLmdldCgiSkJJRzJHbG9iYWxzIik7aWYociBpbnN0YW5jZW9mIGEuQmFzZVN0cmVhbSl7dmFyIG49ci5nZXRCeXRlcygpO3QucHVzaCh7ZGF0YTpuLHN0YXJ0OjAsZW5kOm4ubGVuZ3RofSl9fXQucHVzaCh7ZGF0YTp0aGlzLmJ5dGVzLHN0YXJ0OjAsZW5kOnRoaXMuYnl0ZXMubGVuZ3RofSk7Zm9yKHZhciBpPWUucGFyc2VDaHVua3ModCksYz1pLmxlbmd0aCx1PTA7dTxjO3UrKylpW3VdXj0yNTU7dGhpcy5idWZmZXI9aSx0aGlzLmJ1ZmZlckxlbmd0aD1jLHRoaXMuZW9mPSEwfX19XSkmJnUodC5wcm90b3R5cGUsciksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSkscH0oaS5EZWNvZGVTdHJlYW0pO3QuSmJpZzJTdHJlYW09aH0sKGUsdCxyKT0+e2Z1bmN0aW9uIG4oZSl7cmV0dXJuIG49ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGV9LG4oZSl9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuSmJpZzJJbWFnZT12b2lkIDA7dmFyIGE9cigyKSxpPXIoMTM1KSxvPXIoMTU1KSxzPXIoMTUxKTtmdW5jdGlvbiBjKGUpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBmKGUpfShlKXx8ZnVuY3Rpb24oZSl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJm51bGwhPWVbU3ltYm9sLml0ZXJhdG9yXXx8bnVsbCE9ZVsiQEBpdGVyYXRvciJdKXJldHVybiBBcnJheS5mcm9tKGUpfShlKXx8bChlKXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiB1KGUsdCl7dmFyIHI9InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVsiQEBpdGVyYXRvciJdO2lmKCFyKXtpZihBcnJheS5pc0FycmF5KGUpfHwocj1sKGUpKXx8dCYmZSYmIm51bWJlciI9PXR5cGVvZiBlLmxlbmd0aCl7ciYmKGU9cik7dmFyIG49MCxhPWZ1bmN0aW9uKCl7fTtyZXR1cm57czphLG46ZnVuY3Rpb24oKXtyZXR1cm4gbj49ZS5sZW5ndGg/e2RvbmU6ITB9Ontkb25lOiExLHZhbHVlOmVbbisrXX19LGU6ZnVuY3Rpb24oZSl7dGhyb3cgZX0sZjphfX10aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gaXRlcmF0ZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9dmFyIGksbz0hMCxzPSExO3JldHVybntzOmZ1bmN0aW9uKCl7cj1yLmNhbGwoZSl9LG46ZnVuY3Rpb24oKXt2YXIgZT1yLm5leHQoKTtyZXR1cm4gbz1lLmRvbmUsZX0sZTpmdW5jdGlvbihlKXtzPSEwLGk9ZX0sZjpmdW5jdGlvbigpe3RyeXtvfHxudWxsPT1yLnJldHVybnx8ci5yZXR1cm4oKX1maW5hbGx5e2lmKHMpdGhyb3cgaX19fX1mdW5jdGlvbiBsKGUsdCl7aWYoZSl7aWYoInN0cmluZyI9PXR5cGVvZiBlKXJldHVybiBmKGUsdCk7dmFyIHI9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO3JldHVybiJPYmplY3QiPT09ciYmZS5jb25zdHJ1Y3RvciYmKHI9ZS5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PXJ8fCJTZXQiPT09cj9BcnJheS5mcm9tKGUpOiJBcmd1bWVudHMiPT09cnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3Qocik/ZihlLHQpOnZvaWQgMH19ZnVuY3Rpb24gZihlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgcj0wLG49bmV3IEFycmF5KHQpO3I8dDtyKyspbltyXT1lW3JdO3JldHVybiBufWZ1bmN0aW9uIGgoZSx0KXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIGE9dFtyXTthLmVudW1lcmFibGU9YS5lbnVtZXJhYmxlfHwhMSxhLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gYSYmKGEud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCh2b2lkIDAsaT1mdW5jdGlvbihlLHQpe2lmKCJvYmplY3QiIT09bihlKXx8bnVsbD09PWUpcmV0dXJuIGU7dmFyIHI9ZVtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PXIpe3ZhciBhPXIuY2FsbChlLCJzdHJpbmciKTtpZigib2JqZWN0IiE9PW4oYSkpcmV0dXJuIGE7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4gU3RyaW5nKGUpfShhLmtleSksInN5bWJvbCI9PT1uKGkpP2k6U3RyaW5nKGkpKSxhKX12YXIgaX1mdW5jdGlvbiBkKGUsdCxyKXtyZXR1cm4gdCYmaChlLnByb3RvdHlwZSx0KSxyJiZoKGUsciksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZX1mdW5jdGlvbiBwKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gZyhlLHQpe3JldHVybiBnPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuX19wcm90b19fPXQsZX0sZyhlLHQpfWZ1bmN0aW9uIHYoZSl7cmV0dXJuIHY9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSl9LHYoZSl9dmFyIHk9ZnVuY3Rpb24oZSl7IWZ1bmN0aW9uKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLHQmJmcoZSx0KX0oaSxlKTt2YXIgdCxyLGE9KHQ9aSxyPWZ1bmN0aW9uKCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3QpcmV0dXJuITE7aWYoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSwoZnVuY3Rpb24oKXt9KSkpLCEwfWNhdGNoKGUpe3JldHVybiExfX0oKSxmdW5jdGlvbigpe3ZhciBlLGE9dih0KTtpZihyKXt2YXIgaT12KHRoaXMpLmNvbnN0cnVjdG9yO2U9UmVmbGVjdC5jb25zdHJ1Y3QoYSxhcmd1bWVudHMsaSl9ZWxzZSBlPWEuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBmdW5jdGlvbihlLHQpe2lmKHQmJigib2JqZWN0Ij09PW4odCl8fCJmdW5jdGlvbiI9PXR5cGVvZiB0KSlyZXR1cm4gdDtpZih2b2lkIDAhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKHZvaWQgMD09PWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZX0oZSl9KHRoaXMsZSl9KTtmdW5jdGlvbiBpKGUpe3JldHVybiBwKHRoaXMsaSksYS5jYWxsKHRoaXMsIkpCSUcyIGVycm9yOiAiLmNvbmNhdChlKSwiSmJpZzJFcnJvciIpfXJldHVybiBkKGkpfShhLkJhc2VFeGNlcHRpb24pLG09ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7cCh0aGlzLGUpfXJldHVybiBkKGUsW3trZXk6ImdldENvbnRleHRzIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gZSBpbiB0aGlzP3RoaXNbZV06dGhpc1tlXT1uZXcgSW50OEFycmF5KDY1NTM2KX19XSksZX0oKSxiPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0LHIsbil7cCh0aGlzLGUpLHRoaXMuZGF0YT10LHRoaXMuc3RhcnQ9cix0aGlzLmVuZD1ufXJldHVybiBkKGUsW3trZXk6ImRlY29kZXIiLGdldDpmdW5jdGlvbigpe3ZhciBlPW5ldyBvLkFyaXRobWV0aWNEZWNvZGVyKHRoaXMuZGF0YSx0aGlzLnN0YXJ0LHRoaXMuZW5kKTtyZXR1cm4oMCxhLnNoYWRvdykodGhpcywiZGVjb2RlciIsZSl9fSx7a2V5OiJjb250ZXh0Q2FjaGUiLGdldDpmdW5jdGlvbigpe3ZhciBlPW5ldyBtO3JldHVybigwLGEuc2hhZG93KSh0aGlzLCJjb250ZXh0Q2FjaGUiLGUpfX1dKSxlfSgpO2Z1bmN0aW9uIHcoZSx0LHIpe3ZhciBuPWUuZ2V0Q29udGV4dHModCksYT0xO2Z1bmN0aW9uIGkoZSl7Zm9yKHZhciB0PTAsaT0wO2k8ZTtpKyspe3ZhciBvPXIucmVhZEJpdChuLGEpO2E9YTwyNTY/YTw8MXxvOjUxMSYoYTw8MXxvKXwyNTYsdD10PDwxfG99cmV0dXJuIHQ+Pj4wfXZhciBvPWkoMSkscz1pKDEpP2koMSk/aSgxKT9pKDEpP2koMSk/aSgzMikrNDQzNjppKDEyKSszNDA6aSg4KSs4NDppKDYpKzIwOmkoNCkrNDppKDIpO3JldHVybiAwPT09bz9zOnM+MD8tczpudWxsfWZ1bmN0aW9uIGsoZSx0LHIpe2Zvcih2YXIgbj1lLmdldENvbnRleHRzKCJJQUlEIiksYT0xLGk9MDtpPHI7aSsrKWE9YTw8MXx0LnJlYWRCaXQobixhKTtyZXR1cm4gcjwzMT9hJigxPDxyKS0xOjIxNDc0ODM2NDcmYX12YXIgUz1bIlN5bWJvbERpY3Rpb25hcnkiLG51bGwsbnVsbCxudWxsLCJJbnRlcm1lZGlhdGVUZXh0UmVnaW9uIixudWxsLCJJbW1lZGlhdGVUZXh0UmVnaW9uIiwiSW1tZWRpYXRlTG9zc2xlc3NUZXh0UmVnaW9uIixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsIlBhdHRlcm5EaWN0aW9uYXJ5IixudWxsLG51bGwsbnVsbCwiSW50ZXJtZWRpYXRlSGFsZnRvbmVSZWdpb24iLG51bGwsIkltbWVkaWF0ZUhhbGZ0b25lUmVnaW9uIiwiSW1tZWRpYXRlTG9zc2xlc3NIYWxmdG9uZVJlZ2lvbiIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsIkludGVybWVkaWF0ZUdlbmVyaWNSZWdpb24iLG51bGwsIkltbWVkaWF0ZUdlbmVyaWNSZWdpb24iLCJJbW1lZGlhdGVMb3NzbGVzc0dlbmVyaWNSZWdpb24iLCJJbnRlcm1lZGlhdGVHZW5lcmljUmVmaW5lbWVudFJlZ2lvbiIsbnVsbCwiSW1tZWRpYXRlR2VuZXJpY1JlZmluZW1lbnRSZWdpb24iLCJJbW1lZGlhdGVMb3NzbGVzc0dlbmVyaWNSZWZpbmVtZW50UmVnaW9uIixudWxsLG51bGwsbnVsbCxudWxsLCJQYWdlSW5mb3JtYXRpb24iLCJFbmRPZlBhZ2UiLCJFbmRPZlN0cmlwZSIsIkVuZE9mRmlsZSIsIlByb2ZpbGVzIiwiVGFibGVzIixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsIkV4dGVuc2lvbiJdLHg9W1t7eDotMSx5Oi0yfSx7eDowLHk6LTJ9LHt4OjEseTotMn0se3g6LTIseTotMX0se3g6LTEseTotMX0se3g6MCx5Oi0xfSx7eDoxLHk6LTF9LHt4OjIseTotMX0se3g6LTQseTowfSx7eDotMyx5OjB9LHt4Oi0yLHk6MH0se3g6LTEseTowfV0sW3t4Oi0xLHk6LTJ9LHt4OjAseTotMn0se3g6MSx5Oi0yfSx7eDoyLHk6LTJ9LHt4Oi0yLHk6LTF9LHt4Oi0xLHk6LTF9LHt4OjAseTotMX0se3g6MSx5Oi0xfSx7eDoyLHk6LTF9LHt4Oi0zLHk6MH0se3g6LTIseTowfSx7eDotMSx5OjB9XSxbe3g6LTEseTotMn0se3g6MCx5Oi0yfSx7eDoxLHk6LTJ9LHt4Oi0yLHk6LTF9LHt4Oi0xLHk6LTF9LHt4OjAseTotMX0se3g6MSx5Oi0xfSx7eDotMix5OjB9LHt4Oi0xLHk6MH1dLFt7eDotMyx5Oi0xfSx7eDotMix5Oi0xfSx7eDotMSx5Oi0xfSx7eDowLHk6LTF9LHt4OjEseTotMX0se3g6LTQseTowfSx7eDotMyx5OjB9LHt4Oi0yLHk6MH0se3g6LTEseTowfV1dLE89W3tjb2Rpbmc6W3t4OjAseTotMX0se3g6MSx5Oi0xfSx7eDotMSx5OjB9XSxyZWZlcmVuY2U6W3t4OjAseTotMX0se3g6MSx5Oi0xfSx7eDotMSx5OjB9LHt4OjAseTowfSx7eDoxLHk6MH0se3g6LTEseToxfSx7eDowLHk6MX0se3g6MSx5OjF9XX0se2NvZGluZzpbe3g6LTEseTotMX0se3g6MCx5Oi0xfSx7eDoxLHk6LTF9LHt4Oi0xLHk6MH1dLHJlZmVyZW5jZTpbe3g6MCx5Oi0xfSx7eDotMSx5OjB9LHt4OjAseTowfSx7eDoxLHk6MH0se3g6MCx5OjF9LHt4OjEseToxfV19XSxBPVszOTcxNywxOTQxLDIyOSw0MDVdLEM9WzMyLDhdO2Z1bmN0aW9uIEYoZSx0LHIsbixhLGksbyxzKXtpZihlKXJldHVybiBHKG5ldyBYKHMuZGF0YSxzLnN0YXJ0LHMuZW5kKSx0LHIsITEpO2lmKDA9PT1uJiYhaSYmIWEmJjQ9PT1vLmxlbmd0aCYmMz09PW9bMF0ueCYmLTE9PT1vWzBdLnkmJi0zPT09b1sxXS54JiYtMT09PW9bMV0ueSYmMj09PW9bMl0ueCYmLTI9PT1vWzJdLnkmJi0yPT09b1szXS54JiYtMj09PW9bM10ueSlyZXR1cm4gZnVuY3Rpb24oZSx0LHIpe3ZhciBuLGEsaSxvLHMsYyx1LGw9ci5kZWNvZGVyLGY9ci5jb250ZXh0Q2FjaGUuZ2V0Q29udGV4dHMoIkdCIiksaD1bXTtmb3IoYT0wO2E8dDthKyspZm9yKHM9aFthXT1uZXcgVWludDhBcnJheShlKSxjPWE8MT9zOmhbYS0xXSxuPSh1PWE8Mj9zOmhbYS0yXSlbMF08PDEzfHVbMV08PDEyfHVbMl08PDExfGNbMF08PDd8Y1sxXTw8NnxjWzJdPDw1fGNbM108PDQsaT0wO2k8ZTtpKyspc1tpXT1vPWwucmVhZEJpdChmLG4pLG49KDMxNzM1Jm4pPDwxfChpKzM8ZT91W2krM108PDExOjApfChpKzQ8ZT9jW2krNF08PDQ6MCl8bztyZXR1cm4gaH0odCxyLHMpO3ZhciBjPSEhaSx1PXhbbl0uY29uY2F0KG8pO3Uuc29ydCgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS55LXQueXx8ZS54LXQueH0pKTt2YXIgbCxmLGg9dS5sZW5ndGgsZD1uZXcgSW50OEFycmF5KGgpLHA9bmV3IEludDhBcnJheShoKSxnPVtdLHY9MCx5PTAsbT0wLGI9MDtmb3IoZj0wO2Y8aDtmKyspZFtmXT11W2ZdLngscFtmXT11W2ZdLnkseT1NYXRoLm1pbih5LHVbZl0ueCksbT1NYXRoLm1heChtLHVbZl0ueCksYj1NYXRoLm1pbihiLHVbZl0ueSksZjxoLTEmJnVbZl0ueT09PXVbZisxXS55JiZ1W2ZdLng9PT11W2YrMV0ueC0xP3Z8PTE8PGgtMS1mOmcucHVzaChmKTt2YXIgdz1nLmxlbmd0aCxrPW5ldyBJbnQ4QXJyYXkodyksUz1uZXcgSW50OEFycmF5KHcpLE89bmV3IFVpbnQxNkFycmF5KHcpO2ZvcihsPTA7bDx3O2wrKylmPWdbbF0sa1tsXT11W2ZdLngsU1tsXT11W2ZdLnksT1tsXT0xPDxoLTEtZjtmb3IodmFyIEMsRixQLFQsSSxFPS15LGo9LWIsTT10LW0sXz1BW25dLEw9bmV3IFVpbnQ4QXJyYXkodCksUj1bXSxOPXMuZGVjb2RlcixEPXMuY29udGV4dENhY2hlLmdldENvbnRleHRzKCJHQiIpLEI9MCxVPTAsJD0wOyQ8cjskKyspaWYoYSYmKEJePU4ucmVhZEJpdChELF8pKSlSLnB1c2goTCk7ZWxzZSBmb3IoTD1uZXcgVWludDhBcnJheShMKSxSLnB1c2goTCksQz0wO0M8dDtDKyspaWYoYyYmaVskXVtDXSlMW0NdPTA7ZWxzZXtpZihDPj1FJiZDPE0mJiQ+PWopZm9yKFU9VTw8MSZ2LGY9MDtmPHc7ZisrKUY9JCtTW2ZdLFA9QytrW2ZdLChUPVJbRl1bUF0pJiYoVXw9VD1PW2ZdKTtlbHNlIGZvcihVPTAsST1oLTEsZj0wO2Y8aDtmKyssSS0tKShQPUMrZFtmXSk+PTAmJlA8dCYmKEY9JCtwW2ZdKT49MCYmKFQ9UltGXVtQXSkmJihVfD1UPDxJKTt2YXIgSD1OLnJlYWRCaXQoRCxVKTtMW0NdPUh9cmV0dXJuIFJ9ZnVuY3Rpb24gUChlLHQscixuLGEsaSxvLHMsYyl7dmFyIHU9T1tyXS5jb2Rpbmc7MD09PXImJih1PXUuY29uY2F0KFtzWzBdXSkpO3ZhciBsLGY9dS5sZW5ndGgsaD1uZXcgSW50MzJBcnJheShmKSxkPW5ldyBJbnQzMkFycmF5KGYpO2ZvcihsPTA7bDxmO2wrKyloW2xdPXVbbF0ueCxkW2xdPXVbbF0ueTt2YXIgcD1PW3JdLnJlZmVyZW5jZTswPT09ciYmKHA9cC5jb25jYXQoW3NbMV1dKSk7dmFyIGc9cC5sZW5ndGgsdj1uZXcgSW50MzJBcnJheShnKSxtPW5ldyBJbnQzMkFycmF5KGcpO2ZvcihsPTA7bDxnO2wrKyl2W2xdPXBbbF0ueCxtW2xdPXBbbF0ueTtmb3IodmFyIGI9blswXS5sZW5ndGgsdz1uLmxlbmd0aCxrPUNbcl0sUz1bXSx4PWMuZGVjb2RlcixBPWMuY29udGV4dENhY2hlLmdldENvbnRleHRzKCJHUiIpLEY9MCxQPTA7UDx0O1ArKyl7aWYobyYmKEZePXgucmVhZEJpdChBLGspKSl0aHJvdyBuZXcgeSgicHJlZGljdGlvbiBpcyBub3Qgc3VwcG9ydGVkIik7dmFyIFQ9bmV3IFVpbnQ4QXJyYXkoZSk7Uy5wdXNoKFQpO2Zvcih2YXIgST0wO0k8ZTtJKyspe3ZhciBFPXZvaWQgMCxqPXZvaWQgMCxNPTA7Zm9yKGw9MDtsPGY7bCsrKUU9UCtkW2xdLGo9SStoW2xdLEU8MHx8ajwwfHxqPj1lP008PD0xOk09TTw8MXxTW0VdW2pdO2ZvcihsPTA7bDxnO2wrKylFPVArbVtsXS1pLGo9SSt2W2xdLWEsRTwwfHxFPj13fHxqPDB8fGo+PWI/TTw8PTE6TT1NPDwxfG5bRV1bal07dmFyIF89eC5yZWFkQml0KEEsTSk7VFtJXT1ffX1yZXR1cm4gU31mdW5jdGlvbiBUKGUsdCxyLG4sYSxpLG8scyxjLHUsbCxmLGgsZCxwLGcsdixtLGIpe2lmKGUmJnQpdGhyb3cgbmV3IHkoInJlZmluZW1lbnQgd2l0aCBIdWZmbWFuIGlzIG5vdCBzdXBwb3J0ZWQiKTt2YXIgUyx4LE89W107Zm9yKFM9MDtTPG47UysrKXtpZih4PW5ldyBVaW50OEFycmF5KHIpLGEpZm9yKHZhciBBPTA7QTxyO0ErKyl4W0FdPWE7Ty5wdXNoKHgpfXZhciBDPXYuZGVjb2RlcixGPXYuY29udGV4dENhY2hlLFQ9ZT8tZC50YWJsZURlbHRhVC5kZWNvZGUoYik6LXcoRiwiSUFEVCIsQyksST0wO2ZvcihTPTA7UzxpOyl7VCs9ZT9kLnRhYmxlRGVsdGFULmRlY29kZShiKTp3KEYsIklBRFQiLEMpO2Zvcih2YXIgRT1JKz1lP2QudGFibGVGaXJzdFMuZGVjb2RlKGIpOncoRiwiSUFGUyIsQyk7Oyl7dmFyIGo9MDtvPjEmJihqPWU/Yi5yZWFkQml0cyhtKTp3KEYsIklBSVQiLEMpKTt2YXIgTT1vKlQraixfPWU/ZC5zeW1ib2xJRFRhYmxlLmRlY29kZShiKTprKEYsQyxjKSxMPXQmJihlP2IucmVhZEJpdCgpOncoRiwiSUFSSSIsQykpLFI9c1tfXSxOPVJbMF0ubGVuZ3RoLEQ9Ui5sZW5ndGg7aWYoTCl7dmFyIEI9dyhGLCJJQVJEVyIsQyksVT13KEYsIklBUkRIIixDKTtSPVAoTis9QixEKz1VLHAsUiwoQj4+MSkrdyhGLCJJQVJEWCIsQyksKFU+PjEpK3coRiwiSUFSRFkiLEMpLCExLGcsdil9dmFyICQ9TS0oMSZmPzA6RC0xKSxYPUUtKDImZj9OLTE6MCksSD12b2lkIDAscT12b2lkIDAsRz12b2lkIDA7aWYodSl7Zm9yKEg9MDtIPEQ7SCsrKWlmKHg9T1tYK0hdKXtHPVJbSF07dmFyIHo9TWF0aC5taW4oci0kLE4pO3N3aXRjaChoKXtjYXNlIDA6Zm9yKHE9MDtxPHo7cSsrKXhbJCtxXXw9R1txXTticmVhaztjYXNlIDI6Zm9yKHE9MDtxPHo7cSsrKXhbJCtxXV49R1txXTticmVhaztkZWZhdWx0OnRocm93IG5ldyB5KCJvcGVyYXRvciAiLmNvbmNhdChoLCIgaXMgbm90IHN1cHBvcnRlZCIpKX19RSs9RC0xfWVsc2V7Zm9yKHE9MDtxPEQ7cSsrKWlmKHg9T1skK3FdKXN3aXRjaChHPVJbcV0saCl7Y2FzZSAwOmZvcihIPTA7SDxOO0grKyl4W1grSF18PUdbSF07YnJlYWs7Y2FzZSAyOmZvcihIPTA7SDxOO0grKyl4W1grSF1ePUdbSF07YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgeSgib3BlcmF0b3IgIi5jb25jYXQoaCwiIGlzIG5vdCBzdXBwb3J0ZWQiKSl9RSs9Ti0xfVMrKzt2YXIgVz1lP2QudGFibGVEZWx0YVMuZGVjb2RlKGIpOncoRiwiSUFEUyIsQyk7aWYobnVsbD09PVcpYnJlYWs7RSs9VytsfX1yZXR1cm4gT31mdW5jdGlvbiBJKGUsdCl7dmFyIHI9e307ci5udW1iZXI9KDAsaS5yZWFkVWludDMyKShlLHQpO3ZhciBuPWVbdCs0XSxhPTYzJm47aWYoIVNbYV0pdGhyb3cgbmV3IHkoImludmFsaWQgc2VnbWVudCB0eXBlOiAiK2EpO3IudHlwZT1hLHIudHlwZU5hbWU9U1thXSxyLmRlZmVycmVkTm9uUmV0YWluPSEhKDEyOCZuKTt2YXIgbz0hISg2NCZuKSxzPWVbdCs1XSxjPXM+PjUmNyx1PVszMSZzXSxsPXQrNjtpZig3PT09cyl7Yz01MzY4NzA5MTEmKDAsaS5yZWFkVWludDMyKShlLGwtMSksbCs9Mzt2YXIgZj1jKzc+PjM7Zm9yKHVbMF09ZVtsKytdOy0tZj4wOyl1LnB1c2goZVtsKytdKX1lbHNlIGlmKDU9PT1zfHw2PT09cyl0aHJvdyBuZXcgeSgiaW52YWxpZCByZWZlcnJlZC10byBmbGFncyIpO3IucmV0YWluQml0cz11O3ZhciBoPTQ7ci5udW1iZXI8PTI1Nj9oPTE6ci5udW1iZXI8PTY1NTM2JiYoaD0yKTt2YXIgZCxwLGc9W107Zm9yKGQ9MDtkPGM7ZCsrKXt2YXIgdjt2PTE9PT1oP2VbbF06Mj09PWg/KDAsaS5yZWFkVWludDE2KShlLGwpOigwLGkucmVhZFVpbnQzMikoZSxsKSxnLnB1c2godiksbCs9aH1pZihyLnJlZmVycmVkVG89ZyxvPyhyLnBhZ2VBc3NvY2lhdGlvbj0oMCxpLnJlYWRVaW50MzIpKGUsbCksbCs9NCk6ci5wYWdlQXNzb2NpYXRpb249ZVtsKytdLHIubGVuZ3RoPSgwLGkucmVhZFVpbnQzMikoZSxsKSxsKz00LDQyOTQ5NjcyOTU9PT1yLmxlbmd0aCl7aWYoMzghPT1hKXRocm93IG5ldyB5KCJpbnZhbGlkIHVua25vd24gc2VnbWVudCBsZW5ndGgiKTt2YXIgbT1qKGUsbCksYj0hISgxJmVbbCtNXSksdz1uZXcgVWludDhBcnJheSg2KTtmb3IoYnx8KHdbMF09MjU1LHdbMV09MTcyKSx3WzJdPW0uaGVpZ2h0Pj4+MjQmMjU1LHdbM109bS5oZWlnaHQ+PjE2JjI1NSx3WzRdPW0uaGVpZ2h0Pj44JjI1NSx3WzVdPTI1NSZtLmhlaWdodCxkPWwscD1lLmxlbmd0aDtkPHA7ZCsrKXtmb3IodmFyIGs9MDtrPDYmJndba109PT1lW2Qra107KWsrKztpZig2PT09ayl7ci5sZW5ndGg9ZCs2O2JyZWFrfX1pZig0Mjk0OTY3Mjk1PT09ci5sZW5ndGgpdGhyb3cgbmV3IHkoInNlZ21lbnQgZW5kIHdhcyBub3QgZm91bmQiKX1yZXR1cm4gci5oZWFkZXJFbmQ9bCxyfWZ1bmN0aW9uIEUoZSx0LHIsbil7Zm9yKHZhciBhPVtdLGk9cjtpPG47KXt2YXIgbz1JKHQsaSk7aT1vLmhlYWRlckVuZDt2YXIgcz17aGVhZGVyOm8sZGF0YTp0fTtpZihlLnJhbmRvbUFjY2Vzc3x8KHMuc3RhcnQ9aSxpKz1vLmxlbmd0aCxzLmVuZD1pKSxhLnB1c2gocyksNTE9PT1vLnR5cGUpYnJlYWt9aWYoZS5yYW5kb21BY2Nlc3MpZm9yKHZhciBjPTAsdT1hLmxlbmd0aDtjPHU7YysrKWFbY10uc3RhcnQ9aSxpKz1hW2NdLmhlYWRlci5sZW5ndGgsYVtjXS5lbmQ9aTtyZXR1cm4gYX1mdW5jdGlvbiBqKGUsdCl7cmV0dXJue3dpZHRoOigwLGkucmVhZFVpbnQzMikoZSx0KSxoZWlnaHQ6KDAsaS5yZWFkVWludDMyKShlLHQrNCkseDooMCxpLnJlYWRVaW50MzIpKGUsdCs4KSx5OigwLGkucmVhZFVpbnQzMikoZSx0KzEyKSxjb21iaW5hdGlvbk9wZXJhdG9yOjcmZVt0KzE2XX19dmFyIE09MTc7ZnVuY3Rpb24gXyhlLHQpe3ZhciByLG4sYSxvLHM9ZS5oZWFkZXIsYz1lLmRhdGEsdT1lLmVuZCxsPWUuc3RhcnQ7c3dpdGNoKHMudHlwZSl7Y2FzZSAwOnZhciBmPXt9LGg9KDAsaS5yZWFkVWludDE2KShjLGwpO2lmKGYuaHVmZm1hbj0hISgxJmgpLGYucmVmaW5lbWVudD0hISgyJmgpLGYuaHVmZm1hbkRIU2VsZWN0b3I9aD4+MiYzLGYuaHVmZm1hbkRXU2VsZWN0b3I9aD4+NCYzLGYuYml0bWFwU2l6ZVNlbGVjdG9yPWg+PjYmMSxmLmFnZ3JlZ2F0aW9uSW5zdGFuY2VzU2VsZWN0b3I9aD4+NyYxLGYuYml0bWFwQ29kaW5nQ29udGV4dFVzZWQ9ISEoMjU2JmgpLGYuYml0bWFwQ29kaW5nQ29udGV4dFJldGFpbmVkPSEhKDUxMiZoKSxmLnRlbXBsYXRlPWg+PjEwJjMsZi5yZWZpbmVtZW50VGVtcGxhdGU9aD4+MTImMSxsKz0yLCFmLmh1ZmZtYW4pe2ZvcihvPTA9PT1mLnRlbXBsYXRlPzQ6MSxuPVtdLGE9MDthPG87YSsrKW4ucHVzaCh7eDooMCxpLnJlYWRJbnQ4KShjLGwpLHk6KDAsaS5yZWFkSW50OCkoYyxsKzEpfSksbCs9MjtmLmF0PW59aWYoZi5yZWZpbmVtZW50JiYhZi5yZWZpbmVtZW50VGVtcGxhdGUpe2ZvcihuPVtdLGE9MDthPDI7YSsrKW4ucHVzaCh7eDooMCxpLnJlYWRJbnQ4KShjLGwpLHk6KDAsaS5yZWFkSW50OCkoYyxsKzEpfSksbCs9MjtmLnJlZmluZW1lbnRBdD1ufWYubnVtYmVyT2ZFeHBvcnRlZFN5bWJvbHM9KDAsaS5yZWFkVWludDMyKShjLGwpLGwrPTQsZi5udW1iZXJPZk5ld1N5bWJvbHM9KDAsaS5yZWFkVWludDMyKShjLGwpLGwrPTQscj1bZixzLm51bWJlcixzLnJlZmVycmVkVG8sYyxsLHVdO2JyZWFrO2Nhc2UgNjpjYXNlIDc6dmFyIGQ9e307ZC5pbmZvPWooYyxsKSxsKz1NO3ZhciBwPSgwLGkucmVhZFVpbnQxNikoYyxsKTtpZihsKz0yLGQuaHVmZm1hbj0hISgxJnApLGQucmVmaW5lbWVudD0hISgyJnApLGQubG9nU3RyaXBTaXplPXA+PjImMyxkLnN0cmlwU2l6ZT0xPDxkLmxvZ1N0cmlwU2l6ZSxkLnJlZmVyZW5jZUNvcm5lcj1wPj40JjMsZC50cmFuc3Bvc2VkPSEhKDY0JnApLGQuY29tYmluYXRpb25PcGVyYXRvcj1wPj43JjMsZC5kZWZhdWx0UGl4ZWxWYWx1ZT1wPj45JjEsZC5kc09mZnNldD1wPDwxNz4+MjcsZC5yZWZpbmVtZW50VGVtcGxhdGU9cD4+MTUmMSxkLmh1ZmZtYW4pe3ZhciBnPSgwLGkucmVhZFVpbnQxNikoYyxsKTtsKz0yLGQuaHVmZm1hbkZTPTMmZyxkLmh1ZmZtYW5EUz1nPj4yJjMsZC5odWZmbWFuRFQ9Zz4+NCYzLGQuaHVmZm1hblJlZmluZW1lbnREVz1nPj42JjMsZC5odWZmbWFuUmVmaW5lbWVudERIPWc+PjgmMyxkLmh1ZmZtYW5SZWZpbmVtZW50RFg9Zz4+MTAmMyxkLmh1ZmZtYW5SZWZpbmVtZW50RFk9Zz4+MTImMyxkLmh1ZmZtYW5SZWZpbmVtZW50U2l6ZVNlbGVjdG9yPSEhKDE2Mzg0JmcpfWlmKGQucmVmaW5lbWVudCYmIWQucmVmaW5lbWVudFRlbXBsYXRlKXtmb3Iobj1bXSxhPTA7YTwyO2ErKyluLnB1c2goe3g6KDAsaS5yZWFkSW50OCkoYyxsKSx5OigwLGkucmVhZEludDgpKGMsbCsxKX0pLGwrPTI7ZC5yZWZpbmVtZW50QXQ9bn1kLm51bWJlck9mU3ltYm9sSW5zdGFuY2VzPSgwLGkucmVhZFVpbnQzMikoYyxsKSxsKz00LHI9W2Qscy5yZWZlcnJlZFRvLGMsbCx1XTticmVhaztjYXNlIDE2OnZhciB2PXt9LG09Y1tsKytdO3YubW1yPSEhKDEmbSksdi50ZW1wbGF0ZT1tPj4xJjMsdi5wYXR0ZXJuV2lkdGg9Y1tsKytdLHYucGF0dGVybkhlaWdodD1jW2wrK10sdi5tYXhQYXR0ZXJuSW5kZXg9KDAsaS5yZWFkVWludDMyKShjLGwpLGwrPTQscj1bdixzLm51bWJlcixjLGwsdV07YnJlYWs7Y2FzZSAyMjpjYXNlIDIzOnZhciBiPXt9O2IuaW5mbz1qKGMsbCksbCs9TTt2YXIgdz1jW2wrK107Yi5tbXI9ISEoMSZ3KSxiLnRlbXBsYXRlPXc+PjEmMyxiLmVuYWJsZVNraXA9ISEoOCZ3KSxiLmNvbWJpbmF0aW9uT3BlcmF0b3I9dz4+NCY3LGIuZGVmYXVsdFBpeGVsVmFsdWU9dz4+NyYxLGIuZ3JpZFdpZHRoPSgwLGkucmVhZFVpbnQzMikoYyxsKSxsKz00LGIuZ3JpZEhlaWdodD0oMCxpLnJlYWRVaW50MzIpKGMsbCksbCs9NCxiLmdyaWRPZmZzZXRYPTQyOTQ5NjcyOTUmKDAsaS5yZWFkVWludDMyKShjLGwpLGwrPTQsYi5ncmlkT2Zmc2V0WT00Mjk0OTY3Mjk1JigwLGkucmVhZFVpbnQzMikoYyxsKSxsKz00LGIuZ3JpZFZlY3Rvclg9KDAsaS5yZWFkVWludDE2KShjLGwpLGwrPTIsYi5ncmlkVmVjdG9yWT0oMCxpLnJlYWRVaW50MTYpKGMsbCksbCs9MixyPVtiLHMucmVmZXJyZWRUbyxjLGwsdV07YnJlYWs7Y2FzZSAzODpjYXNlIDM5OnZhciBrPXt9O2suaW5mbz1qKGMsbCksbCs9TTt2YXIgUz1jW2wrK107aWYoay5tbXI9ISEoMSZTKSxrLnRlbXBsYXRlPVM+PjEmMyxrLnByZWRpY3Rpb249ISEoOCZTKSwhay5tbXIpe2ZvcihvPTA9PT1rLnRlbXBsYXRlPzQ6MSxuPVtdLGE9MDthPG87YSsrKW4ucHVzaCh7eDooMCxpLnJlYWRJbnQ4KShjLGwpLHk6KDAsaS5yZWFkSW50OCkoYyxsKzEpfSksbCs9MjtrLmF0PW59cj1bayxjLGwsdV07YnJlYWs7Y2FzZSA0ODp2YXIgeD17d2lkdGg6KDAsaS5yZWFkVWludDMyKShjLGwpLGhlaWdodDooMCxpLnJlYWRVaW50MzIpKGMsbCs0KSxyZXNvbHV0aW9uWDooMCxpLnJlYWRVaW50MzIpKGMsbCs4KSxyZXNvbHV0aW9uWTooMCxpLnJlYWRVaW50MzIpKGMsbCsxMil9OzQyOTQ5NjcyOTU9PT14LmhlaWdodCYmZGVsZXRlIHguaGVpZ2h0O3ZhciBPPWNbbCsxNl07KDAsaS5yZWFkVWludDE2KShjLGwrMTcpLHgubG9zc2xlc3M9ISEoMSZPKSx4LnJlZmluZW1lbnQ9ISEoMiZPKSx4LmRlZmF1bHRQaXhlbFZhbHVlPU8+PjImMSx4LmNvbWJpbmF0aW9uT3BlcmF0b3I9Tz4+MyYzLHgucmVxdWlyZXNCdWZmZXI9ISEoMzImTykseC5jb21iaW5hdGlvbk9wZXJhdG9yT3ZlcnJpZGU9ISEoNjQmTykscj1beF07YnJlYWs7Y2FzZSA0OTpjYXNlIDUwOmNhc2UgNTE6Y2FzZSA2MjpicmVhaztjYXNlIDUzOnI9W3MubnVtYmVyLGMsbCx1XTticmVhaztkZWZhdWx0OnRocm93IG5ldyB5KCJzZWdtZW50IHR5cGUgIi5jb25jYXQocy50eXBlTmFtZSwiKCIpLmNvbmNhdChzLnR5cGUsIikgaXMgbm90IGltcGxlbWVudGVkIikpfXZhciBBPSJvbiIrcy50eXBlTmFtZTtBIGluIHQmJnRbQV0uYXBwbHkodCxyKX1mdW5jdGlvbiBMKGUsdCl7Zm9yKHZhciByPTAsbj1lLmxlbmd0aDtyPG47cisrKV8oZVtyXSx0KX12YXIgUj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXtwKHRoaXMsZSl9cmV0dXJuIGQoZSxbe2tleToib25QYWdlSW5mb3JtYXRpb24iLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMuY3VycmVudFBhZ2VJbmZvPWU7dmFyIHQ9ZS53aWR0aCs3Pj4zLHI9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KHQqZS5oZWlnaHQpO2UuZGVmYXVsdFBpeGVsVmFsdWUmJnIuZmlsbCgyNTUpLHRoaXMuYnVmZmVyPXJ9fSx7a2V5OiJkcmF3Qml0bWFwIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciByLG4sYSxpLG89dGhpcy5jdXJyZW50UGFnZUluZm8scz1lLndpZHRoLGM9ZS5oZWlnaHQsdT1vLndpZHRoKzc+PjMsbD1vLmNvbWJpbmF0aW9uT3BlcmF0b3JPdmVycmlkZT9lLmNvbWJpbmF0aW9uT3BlcmF0b3I6by5jb21iaW5hdGlvbk9wZXJhdG9yLGY9dGhpcy5idWZmZXIsaD0xMjg+Pig3JmUueCksZD1lLnkqdSsoZS54Pj4zKTtzd2l0Y2gobCl7Y2FzZSAwOmZvcihyPTA7cjxjO3IrKyl7Zm9yKGE9aCxpPWQsbj0wO248cztuKyspdFtyXVtuXSYmKGZbaV18PWEpLChhPj49MSl8fChhPTEyOCxpKyspO2QrPXV9YnJlYWs7Y2FzZSAyOmZvcihyPTA7cjxjO3IrKyl7Zm9yKGE9aCxpPWQsbj0wO248cztuKyspdFtyXVtuXSYmKGZbaV1ePWEpLChhPj49MSl8fChhPTEyOCxpKyspO2QrPXV9YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgeSgib3BlcmF0b3IgIi5jb25jYXQobCwiIGlzIG5vdCBzdXBwb3J0ZWQiKSl9fX0se2tleToib25JbW1lZGlhdGVHZW5lcmljUmVnaW9uIix2YWx1ZTpmdW5jdGlvbihlLHQscixuKXt2YXIgYT1lLmluZm8saT1uZXcgYih0LHIsbiksbz1GKGUubW1yLGEud2lkdGgsYS5oZWlnaHQsZS50ZW1wbGF0ZSxlLnByZWRpY3Rpb24sbnVsbCxlLmF0LGkpO3RoaXMuZHJhd0JpdG1hcChhLG8pfX0se2tleToib25JbW1lZGlhdGVMb3NzbGVzc0dlbmVyaWNSZWdpb24iLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5vbkltbWVkaWF0ZUdlbmVyaWNSZWdpb24uYXBwbHkodGhpcyxhcmd1bWVudHMpfX0se2tleToib25TeW1ib2xEaWN0aW9uYXJ5Iix2YWx1ZTpmdW5jdGlvbihlLHQscixuLGEsbyl7dmFyIHMsbDtlLmh1ZmZtYW4mJihzPWZ1bmN0aW9uKGUsdCxyKXt2YXIgbixhLGksbz0wO3N3aXRjaChlLmh1ZmZtYW5ESFNlbGVjdG9yKXtjYXNlIDA6Y2FzZSAxOm49JChlLmh1ZmZtYW5ESFNlbGVjdG9yKzQpO2JyZWFrO2Nhc2UgMzpuPUgobyx0LHIpLG8rKzticmVhaztkZWZhdWx0OnRocm93IG5ldyB5KCJpbnZhbGlkIEh1ZmZtYW4gREggc2VsZWN0b3IiKX1zd2l0Y2goZS5odWZmbWFuRFdTZWxlY3Rvcil7Y2FzZSAwOmNhc2UgMTphPSQoZS5odWZmbWFuRFdTZWxlY3RvcisyKTticmVhaztjYXNlIDM6YT1IKG8sdCxyKSxvKys7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgeSgiaW52YWxpZCBIdWZmbWFuIERXIHNlbGVjdG9yIil9cmV0dXJuIGUuYml0bWFwU2l6ZVNlbGVjdG9yPyhpPUgobyx0LHIpLG8rKyk6aT0kKDEpLHt0YWJsZURlbHRhSGVpZ2h0Om4sdGFibGVEZWx0YVdpZHRoOmEsdGFibGVCaXRtYXBTaXplOmksdGFibGVBZ2dyZWdhdGVJbnN0YW5jZXM6ZS5hZ2dyZWdhdGlvbkluc3RhbmNlc1NlbGVjdG9yP0gobyx0LHIpOiQoMSl9fShlLHIsdGhpcy5jdXN0b21UYWJsZXMpLGw9bmV3IFgobixhLG8pKTt2YXIgZj10aGlzLnN5bWJvbHM7Znx8KHRoaXMuc3ltYm9scz1mPXt9KTt2YXIgaCxkPVtdLHA9dShyKTt0cnl7Zm9yKHAucygpOyEoaD1wLm4oKSkuZG9uZTspe3ZhciBnPWZbaC52YWx1ZV07ZyYmZC5wdXNoLmFwcGx5KGQsYyhnKSl9fWNhdGNoKGUpe3AuZShlKX1maW5hbGx5e3AuZigpfXZhciB2PW5ldyBiKG4sYSxvKTtmW3RdPWZ1bmN0aW9uKGUsdCxyLG4sYSxvLHMsYyx1LGwsZixoKXtpZihlJiZ0KXRocm93IG5ldyB5KCJzeW1ib2wgcmVmaW5lbWVudCB3aXRoIEh1ZmZtYW4gaXMgbm90IHN1cHBvcnRlZCIpO3ZhciBkLHAsZz1bXSx2PTAsbT0oMCxpLmxvZzIpKHIubGVuZ3RoK24pLGI9Zi5kZWNvZGVyLFM9Zi5jb250ZXh0Q2FjaGU7Zm9yKGUmJihkPSQoMSkscD1bXSxtPU1hdGgubWF4KG0sMSkpO2cubGVuZ3RoPG47KXt2Kz1lP28udGFibGVEZWx0YUhlaWdodC5kZWNvZGUoaCk6dyhTLCJJQURIIixiKTtmb3IodmFyIHg9MCxPPTAsQT1lP3AubGVuZ3RoOjA7Oyl7dmFyIEM9ZT9vLnRhYmxlRGVsdGFXaWR0aC5kZWNvZGUoaCk6dyhTLCJJQURXIixiKTtpZihudWxsPT09QylicmVhaztPKz14Kz1DO3ZhciBJPXZvaWQgMDtpZih0KXt2YXIgRT13KFMsIklBQUkiLGIpO2lmKEU+MSlJPVQoZSx0LHgsdiwwLEUsMSxyLmNvbmNhdChnKSxtLDAsMCwxLDAsbyx1LGwsZiwwLGgpO2Vsc2V7dmFyIGo9ayhTLGIsbSksTT13KFMsIklBUkRYIixiKSxfPXcoUywiSUFSRFkiLGIpO0k9UCh4LHYsdSxqPHIubGVuZ3RoP3Jbal06Z1tqLXIubGVuZ3RoXSxNLF8sITEsbCxmKX1nLnB1c2goSSl9ZWxzZSBlP3AucHVzaCh4KTooST1GKCExLHgsdixzLCExLG51bGwsYyxmKSxnLnB1c2goSSkpfWlmKGUmJiF0KXt2YXIgTD1vLnRhYmxlQml0bWFwU2l6ZS5kZWNvZGUoaCk7aC5ieXRlQWxpZ24oKTt2YXIgUj12b2lkIDA7aWYoMD09PUwpUj1xKGgsTyx2KTtlbHNle3ZhciBOPWguZW5kLEQ9aC5wb3NpdGlvbitMO2guZW5kPUQsUj1HKGgsTyx2LCExKSxoLmVuZD1OLGgucG9zaXRpb249RH12YXIgQj1wLmxlbmd0aDtpZihBPT09Qi0xKWcucHVzaChSKTtlbHNle3ZhciBVPXZvaWQgMCxYPXZvaWQgMCxIPTAsej12b2lkIDAsVz12b2lkIDA7Zm9yKFU9QTtVPEI7VSsrKXtmb3Ioej1IK3BbVV0sVz1bXSxYPTA7WDx2O1grKylXLnB1c2goUltYXS5zdWJhcnJheShILHopKTtnLnB1c2goVyksSD16fX19fWZvcih2YXIgVixZLEs9W10sSj1bXSxaPSExLFE9ci5sZW5ndGgrbjtKLmxlbmd0aDxROyl7Zm9yKHZhciBlZT1lP2QuZGVjb2RlKGgpOncoUywiSUFFWCIsYik7ZWUtLTspSi5wdXNoKFopO1o9IVp9Zm9yKFY9MCxZPXIubGVuZ3RoO1Y8WTtWKyspSltWXSYmSy5wdXNoKHJbVl0pO2Zvcih2YXIgdGU9MDt0ZTxuO1YrKyx0ZSsrKUpbVl0mJksucHVzaChnW3RlXSk7cmV0dXJuIEt9KGUuaHVmZm1hbixlLnJlZmluZW1lbnQsZCxlLm51bWJlck9mTmV3U3ltYm9scyxlLm51bWJlck9mRXhwb3J0ZWRTeW1ib2xzLHMsZS50ZW1wbGF0ZSxlLmF0LGUucmVmaW5lbWVudFRlbXBsYXRlLGUucmVmaW5lbWVudEF0LHYsbCl9fSx7a2V5OiJvbkltbWVkaWF0ZVRleHRSZWdpb24iLHZhbHVlOmZ1bmN0aW9uKGUsdCxyLG4sYSl7dmFyIG8scyxsLGY9ZS5pbmZvLGg9dGhpcy5zeW1ib2xzLGQ9W10scD11KHQpO3RyeXtmb3IocC5zKCk7IShsPXAubigpKS5kb25lOyl7dmFyIGc9aFtsLnZhbHVlXTtnJiZkLnB1c2guYXBwbHkoZCxjKGcpKX19Y2F0Y2goZSl7cC5lKGUpfWZpbmFsbHl7cC5mKCl9dmFyIHY9KDAsaS5sb2cyKShkLmxlbmd0aCk7ZS5odWZmbWFuJiYocz1uZXcgWChyLG4sYSksbz1mdW5jdGlvbihlLHQscixuLGEpe2Zvcih2YXIgaT1bXSxvPTA7bzw9MzQ7bysrKXt2YXIgcz1hLnJlYWRCaXRzKDQpO2kucHVzaChuZXcgTihbbyxzLDAsMF0pKX12YXIgYz1uZXcgQihpLCExKTtpLmxlbmd0aD0wO2Zvcih2YXIgdT0wO3U8bjspe3ZhciBsPWMuZGVjb2RlKGEpO2lmKGw+PTMyKXt2YXIgZj12b2lkIDAsaD12b2lkIDAsZD12b2lkIDA7c3dpdGNoKGwpe2Nhc2UgMzI6aWYoMD09PXUpdGhyb3cgbmV3IHkoIm5vIHByZXZpb3VzIHZhbHVlIGluIHN5bWJvbCBJRCB0YWJsZSIpO2g9YS5yZWFkQml0cygyKSszLGY9aVt1LTFdLnByZWZpeExlbmd0aDticmVhaztjYXNlIDMzOmg9YS5yZWFkQml0cygzKSszLGY9MDticmVhaztjYXNlIDM0Omg9YS5yZWFkQml0cyg3KSsxMSxmPTA7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgeSgiaW52YWxpZCBjb2RlIGxlbmd0aCBpbiBzeW1ib2wgSUQgdGFibGUiKX1mb3IoZD0wO2Q8aDtkKyspaS5wdXNoKG5ldyBOKFt1LGYsMCwwXSkpLHUrK31lbHNlIGkucHVzaChuZXcgTihbdSxsLDAsMF0pKSx1Kyt9YS5ieXRlQWxpZ24oKTt2YXIgcCxnLHYsbT1uZXcgQihpLCExKSxiPTA7c3dpdGNoKGUuaHVmZm1hbkZTKXtjYXNlIDA6Y2FzZSAxOnA9JChlLmh1ZmZtYW5GUys2KTticmVhaztjYXNlIDM6cD1IKGIsdCxyKSxiKys7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgeSgiaW52YWxpZCBIdWZmbWFuIEZTIHNlbGVjdG9yIil9c3dpdGNoKGUuaHVmZm1hbkRTKXtjYXNlIDA6Y2FzZSAxOmNhc2UgMjpnPSQoZS5odWZmbWFuRFMrOCk7YnJlYWs7Y2FzZSAzOmc9SChiLHQsciksYisrO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IHkoImludmFsaWQgSHVmZm1hbiBEUyBzZWxlY3RvciIpfXN3aXRjaChlLmh1ZmZtYW5EVCl7Y2FzZSAwOmNhc2UgMTpjYXNlIDI6dj0kKGUuaHVmZm1hbkRUKzExKTticmVhaztjYXNlIDM6dj1IKGIsdCxyKSxiKys7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgeSgiaW52YWxpZCBIdWZmbWFuIERUIHNlbGVjdG9yIil9aWYoZS5yZWZpbmVtZW50KXRocm93IG5ldyB5KCJyZWZpbmVtZW50IHdpdGggSHVmZm1hbiBpcyBub3Qgc3VwcG9ydGVkIik7cmV0dXJue3N5bWJvbElEVGFibGU6bSx0YWJsZUZpcnN0UzpwLHRhYmxlRGVsdGFTOmcsdGFibGVEZWx0YVQ6dn19KGUsdCx0aGlzLmN1c3RvbVRhYmxlcyxkLmxlbmd0aCxzKSk7dmFyIG09bmV3IGIocixuLGEpLHc9VChlLmh1ZmZtYW4sZS5yZWZpbmVtZW50LGYud2lkdGgsZi5oZWlnaHQsZS5kZWZhdWx0UGl4ZWxWYWx1ZSxlLm51bWJlck9mU3ltYm9sSW5zdGFuY2VzLGUuc3RyaXBTaXplLGQsdixlLnRyYW5zcG9zZWQsZS5kc09mZnNldCxlLnJlZmVyZW5jZUNvcm5lcixlLmNvbWJpbmF0aW9uT3BlcmF0b3IsbyxlLnJlZmluZW1lbnRUZW1wbGF0ZSxlLnJlZmluZW1lbnRBdCxtLGUubG9nU3RyaXBTaXplLHMpO3RoaXMuZHJhd0JpdG1hcChmLHcpfX0se2tleToib25JbW1lZGlhdGVMb3NzbGVzc1RleHRSZWdpb24iLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5vbkltbWVkaWF0ZVRleHRSZWdpb24uYXBwbHkodGhpcyxhcmd1bWVudHMpfX0se2tleToib25QYXR0ZXJuRGljdGlvbmFyeSIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIsbixhKXt2YXIgaT10aGlzLnBhdHRlcm5zO2l8fCh0aGlzLnBhdHRlcm5zPWk9e30pO3ZhciBvPW5ldyBiKHIsbixhKTtpW3RdPWZ1bmN0aW9uKGUsdCxyLG4sYSxpKXt2YXIgbz1bXTtlfHwoby5wdXNoKHt4Oi10LHk6MH0pLDA9PT1hJiZvLnB1c2goe3g6LTMseTotMX0se3g6Mix5Oi0yfSx7eDotMix5Oi0yfSkpO2Zvcih2YXIgcz1GKGUsKG4rMSkqdCxyLGEsITEsbnVsbCxvLGkpLGM9W10sdT0wO3U8PW47dSsrKXtmb3IodmFyIGw9W10sZj10KnUsaD1mK3QsZD0wO2Q8cjtkKyspbC5wdXNoKHNbZF0uc3ViYXJyYXkoZixoKSk7Yy5wdXNoKGwpfXJldHVybiBjfShlLm1tcixlLnBhdHRlcm5XaWR0aCxlLnBhdHRlcm5IZWlnaHQsZS5tYXhQYXR0ZXJuSW5kZXgsZS50ZW1wbGF0ZSxvKX19LHtrZXk6Im9uSW1tZWRpYXRlSGFsZnRvbmVSZWdpb24iLHZhbHVlOmZ1bmN0aW9uKGUsdCxyLG4sYSl7dmFyIG89dGhpcy5wYXR0ZXJuc1t0WzBdXSxzPWUuaW5mbyxjPW5ldyBiKHIsbixhKSx1PWZ1bmN0aW9uKGUsdCxyLG4sYSxvLHMsYyx1LGwsZixoLGQscCxnKXtpZihzKXRocm93IG5ldyB5KCJza2lwIGlzIG5vdCBzdXBwb3J0ZWQiKTtpZigwIT09Yyl0aHJvdyBuZXcgeSgnb3BlcmF0b3IgIicuY29uY2F0KGMsJyIgaXMgbm90IHN1cHBvcnRlZCBpbiBoYWxmdG9uZSByZWdpb24nKSk7dmFyIHYsbSxiLHc9W107Zm9yKHY9MDt2PGE7disrKXtpZihiPW5ldyBVaW50OEFycmF5KG4pLG8pZm9yKG09MDttPG47bSsrKWJbbV09bzt3LnB1c2goYil9dmFyIGs9dC5sZW5ndGgsUz10WzBdLHg9U1swXS5sZW5ndGgsTz1TLmxlbmd0aCxBPSgwLGkubG9nMikoayksQz1bXTtlfHwoQy5wdXNoKHt4OnI8PTE/MzoyLHk6LTF9KSwwPT09ciYmQy5wdXNoKHt4Oi0zLHk6LTF9LHt4OjIseTotMn0se3g6LTIseTotMn0pKTt2YXIgUCxULEksRSxqLE0sXyxMLFIsTixELEI9W107Zm9yKGUmJihQPW5ldyBYKGcuZGF0YSxnLnN0YXJ0LGcuZW5kKSksdj1BLTE7dj49MDt2LS0pVD1lP0coUCx1LGwsITApOkYoITEsdSxsLHIsITEsbnVsbCxDLGcpLEJbdl09VDtmb3IoST0wO0k8bDtJKyspZm9yKEU9MDtFPHU7RSsrKXtmb3Ioaj0wLE09MCxtPUEtMTttPj0wO20tLSlNfD0oal49QlttXVtJXVtFXSk8PG07aWYoXz10W01dLFI9aCtJKmQtRSpwPj44LChMPWYrSSpwK0UqZD4+OCk+PTAmJkwreDw9biYmUj49MCYmUitPPD1hKWZvcih2PTA7djxPO3YrKylmb3IoRD13W1Irdl0sTj1fW3ZdLG09MDttPHg7bSsrKURbTCttXXw9TlttXTtlbHNle3ZhciBVPXZvaWQgMCwkPXZvaWQgMDtmb3Iodj0wO3Y8Tzt2KyspaWYoISgoJD1SK3YpPDB8fCQ+PWEpKWZvcihEPXdbJF0sTj1fW3ZdLG09MDttPHg7bSsrKShVPUwrbSk+PTAmJlU8biYmKERbVV18PU5bbV0pfX1yZXR1cm4gd30oZS5tbXIsbyxlLnRlbXBsYXRlLHMud2lkdGgscy5oZWlnaHQsZS5kZWZhdWx0UGl4ZWxWYWx1ZSxlLmVuYWJsZVNraXAsZS5jb21iaW5hdGlvbk9wZXJhdG9yLGUuZ3JpZFdpZHRoLGUuZ3JpZEhlaWdodCxlLmdyaWRPZmZzZXRYLGUuZ3JpZE9mZnNldFksZS5ncmlkVmVjdG9yWCxlLmdyaWRWZWN0b3JZLGMpO3RoaXMuZHJhd0JpdG1hcChzLHUpfX0se2tleToib25JbW1lZGlhdGVMb3NzbGVzc0hhbGZ0b25lUmVnaW9uIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMub25JbW1lZGlhdGVIYWxmdG9uZVJlZ2lvbi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSx7a2V5OiJvblRhYmxlcyIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIsbil7dmFyIGE9dGhpcy5jdXN0b21UYWJsZXM7YXx8KHRoaXMuY3VzdG9tVGFibGVzPWE9e30pLGFbZV09ZnVuY3Rpb24oZSx0LHIpe3ZhciBuLGEsbz1lW3RdLHM9NDI5NDk2NzI5NSYoMCxpLnJlYWRVaW50MzIpKGUsdCsxKSxjPTQyOTQ5NjcyOTUmKDAsaS5yZWFkVWludDMyKShlLHQrNSksdT1uZXcgWChlLHQrOSxyKSxsPTErKG8+PjEmNyksZj0xKyhvPj40JjcpLGg9W10sZD1zO2Rve249dS5yZWFkQml0cyhsKSxhPXUucmVhZEJpdHMoZiksaC5wdXNoKG5ldyBOKFtkLG4sYSwwXSkpLGQrPTE8PGF9d2hpbGUoZDxjKTtyZXR1cm4gbj11LnJlYWRCaXRzKGwpLGgucHVzaChuZXcgTihbcy0xLG4sMzIsMCwibG93ZXIiXSkpLG49dS5yZWFkQml0cyhsKSxoLnB1c2gobmV3IE4oW2MsbiwzMiwwXSkpLDEmbyYmKG49dS5yZWFkQml0cyhsKSxoLnB1c2gobmV3IE4oW24sMF0pKSksbmV3IEIoaCwhMSl9KHQscixuKX19XSksZX0oKSxOPWQoKGZ1bmN0aW9uIGUodCl7cCh0aGlzLGUpLDI9PT10Lmxlbmd0aD8odGhpcy5pc09PQj0hMCx0aGlzLnJhbmdlTG93PTAsdGhpcy5wcmVmaXhMZW5ndGg9dFswXSx0aGlzLnJhbmdlTGVuZ3RoPTAsdGhpcy5wcmVmaXhDb2RlPXRbMV0sdGhpcy5pc0xvd2VyUmFuZ2U9ITEpOih0aGlzLmlzT09CPSExLHRoaXMucmFuZ2VMb3c9dFswXSx0aGlzLnByZWZpeExlbmd0aD10WzFdLHRoaXMucmFuZ2VMZW5ndGg9dFsyXSx0aGlzLnByZWZpeENvZGU9dFszXSx0aGlzLmlzTG93ZXJSYW5nZT0ibG93ZXIiPT09dFs0XSl9KSksRD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCl7cCh0aGlzLGUpLHRoaXMuY2hpbGRyZW49W10sdD8odGhpcy5pc0xlYWY9ITAsdGhpcy5yYW5nZUxlbmd0aD10LnJhbmdlTGVuZ3RoLHRoaXMucmFuZ2VMb3c9dC5yYW5nZUxvdyx0aGlzLmlzTG93ZXJSYW5nZT10LmlzTG93ZXJSYW5nZSx0aGlzLmlzT09CPXQuaXNPT0IpOnRoaXMuaXNMZWFmPSExfXJldHVybiBkKGUsW3trZXk6ImJ1aWxkVHJlZSIsdmFsdWU6ZnVuY3Rpb24odCxyKXt2YXIgbj10LnByZWZpeENvZGU+PnImMTtpZihyPD0wKXRoaXMuY2hpbGRyZW5bbl09bmV3IGUodCk7ZWxzZXt2YXIgYT10aGlzLmNoaWxkcmVuW25dO2F8fCh0aGlzLmNoaWxkcmVuW25dPWE9bmV3IGUobnVsbCkpLGEuYnVpbGRUcmVlKHQsci0xKX19fSx7a2V5OiJkZWNvZGVOb2RlIix2YWx1ZTpmdW5jdGlvbihlKXtpZih0aGlzLmlzTGVhZil7aWYodGhpcy5pc09PQilyZXR1cm4gbnVsbDt2YXIgdD1lLnJlYWRCaXRzKHRoaXMucmFuZ2VMZW5ndGgpO3JldHVybiB0aGlzLnJhbmdlTG93Kyh0aGlzLmlzTG93ZXJSYW5nZT8tdDp0KX12YXIgcj10aGlzLmNoaWxkcmVuW2UucmVhZEJpdCgpXTtpZighcil0aHJvdyBuZXcgeSgiaW52YWxpZCBIdWZmbWFuIGRhdGEiKTtyZXR1cm4gci5kZWNvZGVOb2RlKGUpfX1dKSxlfSgpLEI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQscil7cCh0aGlzLGUpLHJ8fHRoaXMuYXNzaWduUHJlZml4Q29kZXModCksdGhpcy5yb290Tm9kZT1uZXcgRChudWxsKTtmb3IodmFyIG49MCxhPXQubGVuZ3RoO248YTtuKyspe3ZhciBpPXRbbl07aS5wcmVmaXhMZW5ndGg+MCYmdGhpcy5yb290Tm9kZS5idWlsZFRyZWUoaSxpLnByZWZpeExlbmd0aC0xKX19cmV0dXJuIGQoZSxbe2tleToiZGVjb2RlIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5yb290Tm9kZS5kZWNvZGVOb2RlKGUpfX0se2tleToiYXNzaWduUHJlZml4Q29kZXMiLHZhbHVlOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1lLmxlbmd0aCxyPTAsbj0wO248dDtuKyspcj1NYXRoLm1heChyLGVbbl0ucHJlZml4TGVuZ3RoKTtmb3IodmFyIGE9bmV3IFVpbnQzMkFycmF5KHIrMSksaT0wO2k8dDtpKyspYVtlW2ldLnByZWZpeExlbmd0aF0rKzt2YXIgbyxzLGMsdT0xLGw9MDtmb3IoYVswXT0wO3U8PXI7KXtmb3Iobz1sPWwrYVt1LTFdPDwxLHM9MDtzPHQ7KShjPWVbc10pLnByZWZpeExlbmd0aD09PXUmJihjLnByZWZpeENvZGU9byxvKyspLHMrKzt1Kyt9fX1dKSxlfSgpLFU9e307ZnVuY3Rpb24gJChlKXt2YXIgdCxyPVVbZV07aWYocilyZXR1cm4gcjtzd2l0Y2goZSl7Y2FzZSAxOnQ9W1swLDEsNCwwXSxbMTYsMiw4LDJdLFsyNzIsMywxNiw2XSxbNjU4MDgsMywzMiw3XV07YnJlYWs7Y2FzZSAyOnQ9W1swLDEsMCwwXSxbMSwyLDAsMl0sWzIsMywwLDZdLFszLDQsMywxNF0sWzExLDUsNiwzMF0sWzc1LDYsMzIsNjJdLFs2LDYzXV07YnJlYWs7Y2FzZSAzOnQ9W1stMjU2LDgsOCwyNTRdLFswLDEsMCwwXSxbMSwyLDAsMl0sWzIsMywwLDZdLFszLDQsMywxNF0sWzExLDUsNiwzMF0sWy0yNTcsOCwzMiwyNTUsImxvd2VyIl0sWzc1LDcsMzIsMTI2XSxbNiw2Ml1dO2JyZWFrO2Nhc2UgNDp0PVtbMSwxLDAsMF0sWzIsMiwwLDJdLFszLDMsMCw2XSxbNCw0LDMsMTRdLFsxMiw1LDYsMzBdLFs3Niw1LDMyLDMxXV07YnJlYWs7Y2FzZSA1OnQ9W1stMjU1LDcsOCwxMjZdLFsxLDEsMCwwXSxbMiwyLDAsMl0sWzMsMywwLDZdLFs0LDQsMywxNF0sWzEyLDUsNiwzMF0sWy0yNTYsNywzMiwxMjcsImxvd2VyIl0sWzc2LDYsMzIsNjJdXTticmVhaztjYXNlIDY6dD1bWy0yMDQ4LDUsMTAsMjhdLFstMTAyNCw0LDksOF0sWy01MTIsNCw4LDldLFstMjU2LDQsNywxMF0sWy0xMjgsNSw2LDI5XSxbLTY0LDUsNSwzMF0sWy0zMiw0LDUsMTFdLFswLDIsNywwXSxbMTI4LDMsNywyXSxbMjU2LDMsOCwzXSxbNTEyLDQsOSwxMl0sWzEwMjQsNCwxMCwxM10sWy0yMDQ5LDYsMzIsNjIsImxvd2VyIl0sWzIwNDgsNiwzMiw2M11dO2JyZWFrO2Nhc2UgNzp0PVtbLTEwMjQsNCw5LDhdLFstNTEyLDMsOCwwXSxbLTI1Niw0LDcsOV0sWy0xMjgsNSw2LDI2XSxbLTY0LDUsNSwyN10sWy0zMiw0LDUsMTBdLFswLDQsNSwxMV0sWzMyLDUsNSwyOF0sWzY0LDUsNiwyOV0sWzEyOCw0LDcsMTJdLFsyNTYsMyw4LDFdLFs1MTIsMyw5LDJdLFsxMDI0LDMsMTAsM10sWy0xMDI1LDUsMzIsMzAsImxvd2VyIl0sWzIwNDgsNSwzMiwzMV1dO2JyZWFrO2Nhc2UgODp0PVtbLTE1LDgsMywyNTJdLFstNyw5LDEsNTA4XSxbLTUsOCwxLDI1M10sWy0zLDksMCw1MDldLFstMiw3LDAsMTI0XSxbLTEsNCwwLDEwXSxbMCwyLDEsMF0sWzIsNSwwLDI2XSxbMyw2LDAsNThdLFs0LDMsNCw0XSxbMjAsNiwxLDU5XSxbMjIsNCw0LDExXSxbMzgsNCw1LDEyXSxbNzAsNSw2LDI3XSxbMTM0LDUsNywyOF0sWzI2Miw2LDcsNjBdLFszOTAsNyw4LDEyNV0sWzY0Niw2LDEwLDYxXSxbLTE2LDksMzIsNTEwLCJsb3dlciJdLFsxNjcwLDksMzIsNTExXSxbMiwxXV07YnJlYWs7Y2FzZSA5OnQ9W1stMzEsOCw0LDI1Ml0sWy0xNSw5LDIsNTA4XSxbLTExLDgsMiwyNTNdLFstNyw5LDEsNTA5XSxbLTUsNywxLDEyNF0sWy0zLDQsMSwxMF0sWy0xLDMsMSwyXSxbMSwzLDEsM10sWzMsNSwxLDI2XSxbNSw2LDEsNThdLFs3LDMsNSw0XSxbMzksNiwyLDU5XSxbNDMsNCw1LDExXSxbNzUsNCw2LDEyXSxbMTM5LDUsNywyN10sWzI2Nyw1LDgsMjhdLFs1MjMsNiw4LDYwXSxbNzc5LDcsOSwxMjVdLFsxMjkxLDYsMTEsNjFdLFstMzIsOSwzMiw1MTAsImxvd2VyIl0sWzMzMzksOSwzMiw1MTFdLFsyLDBdXTticmVhaztjYXNlIDEwOnQ9W1stMjEsNyw0LDEyMl0sWy01LDgsMCwyNTJdLFstNCw3LDAsMTIzXSxbLTMsNSwwLDI0XSxbLTIsMiwyLDBdLFsyLDUsMCwyNV0sWzMsNiwwLDU0XSxbNCw3LDAsMTI0XSxbNSw4LDAsMjUzXSxbNiwyLDYsMV0sWzcwLDUsNSwyNl0sWzEwMiw2LDUsNTVdLFsxMzQsNiw2LDU2XSxbMTk4LDYsNyw1N10sWzMyNiw2LDgsNThdLFs1ODIsNiw5LDU5XSxbMTA5NCw2LDEwLDYwXSxbMjExOCw3LDExLDEyNV0sWy0yMiw4LDMyLDI1NCwibG93ZXIiXSxbNDE2Niw4LDMyLDI1NV0sWzIsMl1dO2JyZWFrO2Nhc2UgMTE6dD1bWzEsMSwwLDBdLFsyLDIsMSwyXSxbNCw0LDAsMTJdLFs1LDQsMSwxM10sWzcsNSwxLDI4XSxbOSw1LDIsMjldLFsxMyw2LDIsNjBdLFsxNyw3LDIsMTIyXSxbMjEsNywzLDEyM10sWzI5LDcsNCwxMjRdLFs0NSw3LDUsMTI1XSxbNzcsNyw2LDEyNl0sWzE0MSw3LDMyLDEyN11dO2JyZWFrO2Nhc2UgMTI6dD1bWzEsMSwwLDBdLFsyLDIsMCwyXSxbMywzLDEsNl0sWzUsNSwwLDI4XSxbNiw1LDEsMjldLFs4LDYsMSw2MF0sWzEwLDcsMCwxMjJdLFsxMSw3LDEsMTIzXSxbMTMsNywyLDEyNF0sWzE3LDcsMywxMjVdLFsyNSw3LDQsMTI2XSxbNDEsOCw1LDI1NF0sWzczLDgsMzIsMjU1XV07YnJlYWs7Y2FzZSAxMzp0PVtbMSwxLDAsMF0sWzIsMywwLDRdLFszLDQsMCwxMl0sWzQsNSwwLDI4XSxbNSw0LDEsMTNdLFs3LDMsMyw1XSxbMTUsNiwxLDU4XSxbMTcsNiwyLDU5XSxbMjEsNiwzLDYwXSxbMjksNiw0LDYxXSxbNDUsNiw1LDYyXSxbNzcsNyw2LDEyNl0sWzE0MSw3LDMyLDEyN11dO2JyZWFrO2Nhc2UgMTQ6dD1bWy0yLDMsMCw0XSxbLTEsMywwLDVdLFswLDEsMCwwXSxbMSwzLDAsNl0sWzIsMywwLDddXTticmVhaztjYXNlIDE1OnQ9W1stMjQsNyw0LDEyNF0sWy04LDYsMiw2MF0sWy00LDUsMSwyOF0sWy0yLDQsMCwxMl0sWy0xLDMsMCw0XSxbMCwxLDAsMF0sWzEsMywwLDVdLFsyLDQsMCwxM10sWzMsNSwxLDI5XSxbNSw2LDIsNjFdLFs5LDcsNCwxMjVdLFstMjUsNywzMiwxMjYsImxvd2VyIl0sWzI1LDcsMzIsMTI3XV07YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgeSgic3RhbmRhcmQgdGFibGUgQi4iLmNvbmNhdChlLCIgZG9lcyBub3QgZXhpc3QiKSl9Zm9yKHZhciBuPTAsYT10Lmxlbmd0aDtuPGE7bisrKXRbbl09bmV3IE4odFtuXSk7cmV0dXJuIHI9bmV3IEIodCwhMCksVVtlXT1yLHJ9dmFyIFg9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQscixuKXtwKHRoaXMsZSksdGhpcy5kYXRhPXQsdGhpcy5zdGFydD1yLHRoaXMuZW5kPW4sdGhpcy5wb3NpdGlvbj1yLHRoaXMuc2hpZnQ9LTEsdGhpcy5jdXJyZW50Qnl0ZT0wfXJldHVybiBkKGUsW3trZXk6InJlYWRCaXQiLHZhbHVlOmZ1bmN0aW9uKCl7aWYodGhpcy5zaGlmdDwwKXtpZih0aGlzLnBvc2l0aW9uPj10aGlzLmVuZCl0aHJvdyBuZXcgeSgiZW5kIG9mIGRhdGEgd2hpbGUgcmVhZGluZyBiaXQiKTt0aGlzLmN1cnJlbnRCeXRlPXRoaXMuZGF0YVt0aGlzLnBvc2l0aW9uKytdLHRoaXMuc2hpZnQ9N312YXIgZT10aGlzLmN1cnJlbnRCeXRlPj50aGlzLnNoaWZ0JjE7cmV0dXJuIHRoaXMuc2hpZnQtLSxlfX0se2tleToicmVhZEJpdHMiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0LHI9MDtmb3IodD1lLTE7dD49MDt0LS0pcnw9dGhpcy5yZWFkQml0KCk8PHQ7cmV0dXJuIHJ9fSx7a2V5OiJieXRlQWxpZ24iLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5zaGlmdD0tMX19LHtrZXk6Im5leHQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucG9zaXRpb24+PXRoaXMuZW5kPy0xOnRoaXMuZGF0YVt0aGlzLnBvc2l0aW9uKytdfX1dKSxlfSgpO2Z1bmN0aW9uIEgoZSx0LHIpe2Zvcih2YXIgbj0wLGE9MCxpPXQubGVuZ3RoO2E8aTthKyspe3ZhciBvPXJbdFthXV07aWYobyl7aWYoZT09PW4pcmV0dXJuIG87bisrfX10aHJvdyBuZXcgeSgiY2FuJ3QgZmluZCBjdXN0b20gSHVmZm1hbiB0YWJsZSIpfWZ1bmN0aW9uIHEoZSx0LHIpe2Zvcih2YXIgbj1bXSxhPTA7YTxyO2ErKyl7dmFyIGk9bmV3IFVpbnQ4QXJyYXkodCk7bi5wdXNoKGkpO2Zvcih2YXIgbz0wO288dDtvKyspaVtvXT1lLnJlYWRCaXQoKTtlLmJ5dGVBbGlnbigpfXJldHVybiBufWZ1bmN0aW9uIEcoZSx0LHIsbil7Zm9yKHZhciBhLGk9e0s6LTEsQ29sdW1uczp0LFJvd3M6cixCbGFja0lzMTohMCxFbmRPZkJsb2NrOm59LG89bmV3IHMuQ0NJVFRGYXhEZWNvZGVyKGUsaSksYz1bXSx1PSExLGw9MDtsPHI7bCsrKXt2YXIgZj1uZXcgVWludDhBcnJheSh0KTtjLnB1c2goZik7Zm9yKHZhciBoPS0xLGQ9MDtkPHQ7ZCsrKWg8MCYmKC0xPT09KGE9by5yZWFkTmV4dENoYXIoKSkmJihhPTAsdT0hMCksaD03KSxmW2RdPWE+PmgmMSxoLS19aWYobiYmIXUpZm9yKHZhciBwPTA7cDw1JiYtMSE9PW8ucmVhZE5leHRDaGFyKCk7cCsrKTtyZXR1cm4gY312YXIgej1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXtwKHRoaXMsZSl9cmV0dXJuIGQoZSxbe2tleToicGFyc2VDaHVua3MiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbihlKXtmb3IodmFyIHQ9bmV3IFIscj0wLG49ZS5sZW5ndGg7cjxuO3IrKyl7dmFyIGE9ZVtyXTtMKEUoe30sYS5kYXRhLGEuc3RhcnQsYS5lbmQpLHQpfXJldHVybiB0LmJ1ZmZlcn0oZSl9fSx7a2V5OiJwYXJzZSIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhyb3cgbmV3IEVycm9yKCJOb3QgaW1wbGVtZW50ZWQ6IEpiaWcySW1hZ2UucGFyc2UiKX19XSksZX0oKTt0LkpiaWcySW1hZ2U9en0sKGUsdCk9PntmdW5jdGlvbiByKGUpe3JldHVybiByPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSxyKGUpfWZ1bmN0aW9uIG4oZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIGE9dFtuXTthLmVudW1lcmFibGU9YS5lbnVtZXJhYmxlfHwhMSxhLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gYSYmKGEud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCh2b2lkIDAsaT1mdW5jdGlvbihlLHQpe2lmKCJvYmplY3QiIT09cihlKXx8bnVsbD09PWUpcmV0dXJuIGU7dmFyIG49ZVtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PW4pe3ZhciBhPW4uY2FsbChlLCJzdHJpbmciKTtpZigib2JqZWN0IiE9PXIoYSkpcmV0dXJuIGE7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4gU3RyaW5nKGUpfShhLmtleSksInN5bWJvbCI9PT1yKGkpP2k6U3RyaW5nKGkpKSxhKX12YXIgaX1PYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5Bcml0aG1ldGljRGVjb2Rlcj12b2lkIDA7dmFyIGE9W3txZToyMjAxNyxubXBzOjEsbmxwczoxLHN3aXRjaEZsYWc6MX0se3FlOjEzMzEzLG5tcHM6MixubHBzOjYsc3dpdGNoRmxhZzowfSx7cWU6NjE0NSxubXBzOjMsbmxwczo5LHN3aXRjaEZsYWc6MH0se3FlOjI3NTMsbm1wczo0LG5scHM6MTIsc3dpdGNoRmxhZzowfSx7cWU6MTMxMyxubXBzOjUsbmxwczoyOSxzd2l0Y2hGbGFnOjB9LHtxZTo1NDUsbm1wczozOCxubHBzOjMzLHN3aXRjaEZsYWc6MH0se3FlOjIyMDE3LG5tcHM6NyxubHBzOjYsc3dpdGNoRmxhZzoxfSx7cWU6MjE1MDUsbm1wczo4LG5scHM6MTQsc3dpdGNoRmxhZzowfSx7cWU6MTg0MzMsbm1wczo5LG5scHM6MTQsc3dpdGNoRmxhZzowfSx7cWU6MTQzMzcsbm1wczoxMCxubHBzOjE0LHN3aXRjaEZsYWc6MH0se3FlOjEyMjg5LG5tcHM6MTEsbmxwczoxNyxzd2l0Y2hGbGFnOjB9LHtxZTo5MjE3LG5tcHM6MTIsbmxwczoxOCxzd2l0Y2hGbGFnOjB9LHtxZTo3MTY5LG5tcHM6MTMsbmxwczoyMCxzd2l0Y2hGbGFnOjB9LHtxZTo1NjMzLG5tcHM6MjksbmxwczoyMSxzd2l0Y2hGbGFnOjB9LHtxZToyMjAxNyxubXBzOjE1LG5scHM6MTQsc3dpdGNoRmxhZzoxfSx7cWU6MjE1MDUsbm1wczoxNixubHBzOjE0LHN3aXRjaEZsYWc6MH0se3FlOjIwNzM3LG5tcHM6MTcsbmxwczoxNSxzd2l0Y2hGbGFnOjB9LHtxZToxODQzMyxubXBzOjE4LG5scHM6MTYsc3dpdGNoRmxhZzowfSx7cWU6MTQzMzcsbm1wczoxOSxubHBzOjE3LHN3aXRjaEZsYWc6MH0se3FlOjEzMzEzLG5tcHM6MjAsbmxwczoxOCxzd2l0Y2hGbGFnOjB9LHtxZToxMjI4OSxubXBzOjIxLG5scHM6MTksc3dpdGNoRmxhZzowfSx7cWU6MTAyNDEsbm1wczoyMixubHBzOjE5LHN3aXRjaEZsYWc6MH0se3FlOjkyMTcsbm1wczoyMyxubHBzOjIwLHN3aXRjaEZsYWc6MH0se3FlOjg3MDUsbm1wczoyNCxubHBzOjIxLHN3aXRjaEZsYWc6MH0se3FlOjcxNjksbm1wczoyNSxubHBzOjIyLHN3aXRjaEZsYWc6MH0se3FlOjYxNDUsbm1wczoyNixubHBzOjIzLHN3aXRjaEZsYWc6MH0se3FlOjU2MzMsbm1wczoyNyxubHBzOjI0LHN3aXRjaEZsYWc6MH0se3FlOjUxMjEsbm1wczoyOCxubHBzOjI1LHN3aXRjaEZsYWc6MH0se3FlOjQ2MDksbm1wczoyOSxubHBzOjI2LHN3aXRjaEZsYWc6MH0se3FlOjQzNTMsbm1wczozMCxubHBzOjI3LHN3aXRjaEZsYWc6MH0se3FlOjI3NTMsbm1wczozMSxubHBzOjI4LHN3aXRjaEZsYWc6MH0se3FlOjI0OTcsbm1wczozMixubHBzOjI5LHN3aXRjaEZsYWc6MH0se3FlOjIyMDksbm1wczozMyxubHBzOjMwLHN3aXRjaEZsYWc6MH0se3FlOjEzMTMsbm1wczozNCxubHBzOjMxLHN3aXRjaEZsYWc6MH0se3FlOjEwODksbm1wczozNSxubHBzOjMyLHN3aXRjaEZsYWc6MH0se3FlOjY3MyxubXBzOjM2LG5scHM6MzMsc3dpdGNoRmxhZzowfSx7cWU6NTQ1LG5tcHM6MzcsbmxwczozNCxzd2l0Y2hGbGFnOjB9LHtxZTozMjEsbm1wczozOCxubHBzOjM1LHN3aXRjaEZsYWc6MH0se3FlOjI3MyxubXBzOjM5LG5scHM6MzYsc3dpdGNoRmxhZzowfSx7cWU6MTMzLG5tcHM6NDAsbmxwczozNyxzd2l0Y2hGbGFnOjB9LHtxZTo3MyxubXBzOjQxLG5scHM6Mzgsc3dpdGNoRmxhZzowfSx7cWU6Mzcsbm1wczo0MixubHBzOjM5LHN3aXRjaEZsYWc6MH0se3FlOjIxLG5tcHM6NDMsbmxwczo0MCxzd2l0Y2hGbGFnOjB9LHtxZTo5LG5tcHM6NDQsbmxwczo0MSxzd2l0Y2hGbGFnOjB9LHtxZTo1LG5tcHM6NDUsbmxwczo0Mixzd2l0Y2hGbGFnOjB9LHtxZToxLG5tcHM6NDUsbmxwczo0Myxzd2l0Y2hGbGFnOjB9LHtxZToyMjAxNyxubXBzOjQ2LG5scHM6NDYsc3dpdGNoRmxhZzowfV0saT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCxyLG4peyFmdW5jdGlvbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGUpLHRoaXMuZGF0YT10LHRoaXMuYnA9cix0aGlzLmRhdGFFbmQ9bix0aGlzLmNoaWdoPXRbcl0sdGhpcy5jbG93PTAsdGhpcy5ieXRlSW4oKSx0aGlzLmNoaWdoPXRoaXMuY2hpZ2g8PDcmNjU1MzV8dGhpcy5jbG93Pj45JjEyNyx0aGlzLmNsb3c9dGhpcy5jbG93PDw3JjY1NTM1LHRoaXMuY3QtPTcsdGhpcy5hPTMyNzY4fXZhciB0LHI7cmV0dXJuIHQ9ZSwocj1be2tleToiYnl0ZUluIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuZGF0YSx0PXRoaXMuYnA7MjU1PT09ZVt0XT9lW3QrMV0+MTQzPyh0aGlzLmNsb3crPTY1MjgwLHRoaXMuY3Q9OCk6KHQrKyx0aGlzLmNsb3crPWVbdF08PDksdGhpcy5jdD03LHRoaXMuYnA9dCk6KHQrKyx0aGlzLmNsb3crPXQ8dGhpcy5kYXRhRW5kP2VbdF08PDg6NjUyODAsdGhpcy5jdD04LHRoaXMuYnA9dCksdGhpcy5jbG93PjY1NTM1JiYodGhpcy5jaGlnaCs9dGhpcy5jbG93Pj4xNix0aGlzLmNsb3cmPTY1NTM1KX19LHtrZXk6InJlYWRCaXQiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIHIsbj1lW3RdPj4xLGk9MSZlW3RdLG89YVtuXSxzPW8ucWUsYz10aGlzLmEtcztpZih0aGlzLmNoaWdoPHMpYzxzPyhjPXMscj1pLG49by5ubXBzKTooYz1zLHI9MV5pLDE9PT1vLnN3aXRjaEZsYWcmJihpPXIpLG49by5ubHBzKTtlbHNle2lmKHRoaXMuY2hpZ2gtPXMsMCE9KDMyNzY4JmMpKXJldHVybiB0aGlzLmE9YyxpO2M8cz8ocj0xXmksMT09PW8uc3dpdGNoRmxhZyYmKGk9ciksbj1vLm5scHMpOihyPWksbj1vLm5tcHMpfWRvezA9PT10aGlzLmN0JiZ0aGlzLmJ5dGVJbigpLGM8PD0xLHRoaXMuY2hpZ2g9dGhpcy5jaGlnaDw8MSY2NTUzNXx0aGlzLmNsb3c+PjE1JjEsdGhpcy5jbG93PXRoaXMuY2xvdzw8MSY2NTUzNSx0aGlzLmN0LS19d2hpbGUoMD09KDMyNzY4JmMpKTtyZXR1cm4gdGhpcy5hPWMsZVt0XT1uPDwxfGkscn19XSkmJm4odC5wcm90b3R5cGUsciksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZX0oKTt0LkFyaXRobWV0aWNEZWNvZGVyPWl9LChlLHQscik9PntmdW5jdGlvbiBuKGUpe3JldHVybiBuPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSxuKGUpfU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LkpwZWdTdHJlYW09dm9pZCAwO3ZhciBhPXIoMTQ4KSxpPXIoMTM0KSxvPXIoMTU3KSxzPXIoMik7ZnVuY3Rpb24gYyhlLHQpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgYT10W3JdO2EuZW51bWVyYWJsZT1hLmVudW1lcmFibGV8fCExLGEuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBhJiYoYS53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsKHZvaWQgMCxpPWZ1bmN0aW9uKGUsdCl7aWYoIm9iamVjdCIhPT1uKGUpfHxudWxsPT09ZSlyZXR1cm4gZTt2YXIgcj1lW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09cil7dmFyIGE9ci5jYWxsKGUsInN0cmluZyIpO2lmKCJvYmplY3QiIT09bihhKSlyZXR1cm4gYTt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybiBTdHJpbmcoZSl9KGEua2V5KSwic3ltYm9sIj09PW4oaSk/aTpTdHJpbmcoaSkpLGEpfXZhciBpfWZ1bmN0aW9uIHUoZSx0KXtyZXR1cm4gdT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihlLHQpe3JldHVybiBlLl9fcHJvdG9fXz10LGV9LHUoZSx0KX1mdW5jdGlvbiBsKGUpe3JldHVybiBsPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGUpe3JldHVybiBlLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpfSxsKGUpfXZhciBmPWZ1bmN0aW9uKGUpeyFmdW5jdGlvbihlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSx0JiZ1KGUsdCl9KGQsZSk7dmFyIHQscixhLGYsaD0oYT1kLGY9ZnVuY3Rpb24oKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdClyZXR1cm4hMTtpZihSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLChmdW5jdGlvbigpe30pKSksITB9Y2F0Y2goZSl7cmV0dXJuITF9fSgpLGZ1bmN0aW9uKCl7dmFyIGUsdD1sKGEpO2lmKGYpe3ZhciByPWwodGhpcykuY29uc3RydWN0b3I7ZT1SZWZsZWN0LmNvbnN0cnVjdCh0LGFyZ3VtZW50cyxyKX1lbHNlIGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYodCYmKCJvYmplY3QiPT09bih0KXx8ImZ1bmN0aW9uIj09dHlwZW9mIHQpKXJldHVybiB0O2lmKHZvaWQgMCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24oZSl7aWYodm9pZCAwPT09ZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBlfShlKX0odGhpcyxlKX0pO2Z1bmN0aW9uIGQoZSx0LHIpe3ZhciBuLGE7Zm9yKGZ1bmN0aW9uKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsZCk7LTEhPT0oYT1lLmdldEJ5dGUoKSk7KWlmKDI1NT09PWEpe2Uuc2tpcCgtMSk7YnJlYWt9cmV0dXJuKG49aC5jYWxsKHRoaXMsdCkpLnN0cmVhbT1lLG4uZGljdD1lLmRpY3Qsbi5tYXliZUxlbmd0aD10LG4ucGFyYW1zPXIsbn1yZXR1cm4gdD1kLChyPVt7a2V5OiJieXRlcyIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuKDAscy5zaGFkb3cpKHRoaXMsImJ5dGVzIix0aGlzLnN0cmVhbS5nZXRCeXRlcyh0aGlzLm1heWJlTGVuZ3RoKSl9fSx7a2V5OiJlbnN1cmVCdWZmZXIiLHZhbHVlOmZ1bmN0aW9uKGUpe319LHtrZXk6InJlYWRCbG9jayIsdmFsdWU6ZnVuY3Rpb24oKXtpZighdGhpcy5lb2Ype3ZhciBlPXtkZWNvZGVUcmFuc2Zvcm06dm9pZCAwLGNvbG9yVHJhbnNmb3JtOnZvaWQgMH0sdD10aGlzLmRpY3QuZ2V0QXJyYXkoIkQiLCJEZWNvZGUiKTtpZih0aGlzLmZvcmNlUkdCJiZBcnJheS5pc0FycmF5KHQpKXtmb3IodmFyIHI9dGhpcy5kaWN0LmdldCgiQlBDIiwiQml0c1BlckNvbXBvbmVudCIpfHw4LG49dC5sZW5ndGgsYT1uZXcgSW50MzJBcnJheShuKSxzPSExLGM9KDE8PHIpLTEsdT0wO3U8bjt1Kz0yKWFbdV09MjU2Kih0W3UrMV0tdFt1XSl8MCxhW3UrMV09dFt1XSpjfDAsMjU2PT09YVt1XSYmMD09PWFbdSsxXXx8KHM9ITApO3MmJihlLmRlY29kZVRyYW5zZm9ybT1hKX1pZih0aGlzLnBhcmFtcyBpbnN0YW5jZW9mIGkuRGljdCl7dmFyIGw9dGhpcy5wYXJhbXMuZ2V0KCJDb2xvclRyYW5zZm9ybSIpO051bWJlci5pc0ludGVnZXIobCkmJihlLmNvbG9yVHJhbnNmb3JtPWwpfXZhciBmPW5ldyBvLkpwZWdJbWFnZShlKTtmLnBhcnNlKHRoaXMuYnl0ZXMpO3ZhciBoPWYuZ2V0RGF0YSh7d2lkdGg6dGhpcy5kcmF3V2lkdGgsaGVpZ2h0OnRoaXMuZHJhd0hlaWdodCxmb3JjZVJHQjp0aGlzLmZvcmNlUkdCLGlzU291cmNlUERGOiEwfSk7dGhpcy5idWZmZXI9aCx0aGlzLmJ1ZmZlckxlbmd0aD1oLmxlbmd0aCx0aGlzLmVvZj0hMH19fV0pJiZjKHQucHJvdG90eXBlLHIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGR9KGEuRGVjb2RlU3RyZWFtKTt0LkpwZWdTdHJlYW09Zn0sKGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LkpwZWdJbWFnZT12b2lkIDA7dmFyIG49cigyKSxhPXIoMTM1KTtmdW5jdGlvbiBpKGUsdCl7dmFyIHI9InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVsiQEBpdGVyYXRvciJdO2lmKCFyKXtpZihBcnJheS5pc0FycmF5KGUpfHwocj1mdW5jdGlvbihlLHQpe2lmKGUpe2lmKCJzdHJpbmciPT10eXBlb2YgZSlyZXR1cm4gbyhlLHQpO3ZhciByPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtyZXR1cm4iT2JqZWN0Ij09PXImJmUuY29uc3RydWN0b3ImJihyPWUuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1yfHwiU2V0Ij09PXI/QXJyYXkuZnJvbShlKToiQXJndW1lbnRzIj09PXJ8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KHIpP28oZSx0KTp2b2lkIDB9fShlKSl8fHQmJmUmJiJudW1iZXIiPT10eXBlb2YgZS5sZW5ndGgpe3ImJihlPXIpO3ZhciBuPTAsYT1mdW5jdGlvbigpe307cmV0dXJue3M6YSxuOmZ1bmN0aW9uKCl7cmV0dXJuIG4+PWUubGVuZ3RoP3tkb25lOiEwfTp7ZG9uZTohMSx2YWx1ZTplW24rK119fSxlOmZ1bmN0aW9uKGUpe3Rocm93IGV9LGY6YX19dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGl0ZXJhdGUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfXZhciBpLHM9ITAsYz0hMTtyZXR1cm57czpmdW5jdGlvbigpe3I9ci5jYWxsKGUpfSxuOmZ1bmN0aW9uKCl7dmFyIGU9ci5uZXh0KCk7cmV0dXJuIHM9ZS5kb25lLGV9LGU6ZnVuY3Rpb24oZSl7Yz0hMCxpPWV9LGY6ZnVuY3Rpb24oKXt0cnl7c3x8bnVsbD09ci5yZXR1cm58fHIucmV0dXJuKCl9ZmluYWxseXtpZihjKXRocm93IGl9fX19ZnVuY3Rpb24gbyhlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgcj0wLG49bmV3IEFycmF5KHQpO3I8dDtyKyspbltyXT1lW3JdO3JldHVybiBufWZ1bmN0aW9uIHMoZSl7cmV0dXJuIHM9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGV9LHMoZSl9ZnVuY3Rpb24gYyhlLHQpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgbj10W3JdO24uZW51bWVyYWJsZT1uLmVudW1lcmFibGV8fCExLG4uY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBuJiYobi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsKHZvaWQgMCxhPWZ1bmN0aW9uKGUsdCl7aWYoIm9iamVjdCIhPT1zKGUpfHxudWxsPT09ZSlyZXR1cm4gZTt2YXIgcj1lW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09cil7dmFyIG49ci5jYWxsKGUsInN0cmluZyIpO2lmKCJvYmplY3QiIT09cyhuKSlyZXR1cm4gbjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybiBTdHJpbmcoZSl9KG4ua2V5KSwic3ltYm9sIj09PXMoYSk/YTpTdHJpbmcoYSkpLG4pfXZhciBhfWZ1bmN0aW9uIHUoZSx0LHIpe3JldHVybiB0JiZjKGUucHJvdG90eXBlLHQpLHImJmMoZSxyKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxlfWZ1bmN0aW9uIGwoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBmKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLHQmJmgoZSx0KX1mdW5jdGlvbiBoKGUsdCl7cmV0dXJuIGg9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5fX3Byb3RvX189dCxlfSxoKGUsdCl9ZnVuY3Rpb24gZChlKXt2YXIgdD1mdW5jdGlvbigpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0KXJldHVybiExO2lmKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sKGZ1bmN0aW9uKCl7fSkpKSwhMH1jYXRjaChlKXtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHIsbj1wKGUpO2lmKHQpe3ZhciBhPXAodGhpcykuY29uc3RydWN0b3I7cj1SZWZsZWN0LmNvbnN0cnVjdChuLGFyZ3VtZW50cyxhKX1lbHNlIHI9bi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYodCYmKCJvYmplY3QiPT09cyh0KXx8ImZ1bmN0aW9uIj09dHlwZW9mIHQpKXJldHVybiB0O2lmKHZvaWQgMCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24oZSl7aWYodm9pZCAwPT09ZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBlfShlKX0odGhpcyxyKX19ZnVuY3Rpb24gcChlKXtyZXR1cm4gcD1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihlKXtyZXR1cm4gZS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihlKX0scChlKX12YXIgZz1mdW5jdGlvbihlKXtmKHIsZSk7dmFyIHQ9ZChyKTtmdW5jdGlvbiByKGUpe3JldHVybiBsKHRoaXMsciksdC5jYWxsKHRoaXMsIkpQRUcgZXJyb3I6ICIuY29uY2F0KGUpLCJKcGVnRXJyb3IiKX1yZXR1cm4gdShyKX0obi5CYXNlRXhjZXB0aW9uKSx2PWZ1bmN0aW9uKGUpe2YocixlKTt2YXIgdD1kKHIpO2Z1bmN0aW9uIHIoZSxuKXt2YXIgYTtyZXR1cm4gbCh0aGlzLHIpLChhPXQuY2FsbCh0aGlzLGUsIkROTE1hcmtlckVycm9yIikpLnNjYW5MaW5lcz1uLGF9cmV0dXJuIHUocil9KG4uQmFzZUV4Y2VwdGlvbikseT1mdW5jdGlvbihlKXtmKHIsZSk7dmFyIHQ9ZChyKTtmdW5jdGlvbiByKGUpe3JldHVybiBsKHRoaXMsciksdC5jYWxsKHRoaXMsZSwiRU9JTWFya2VyRXJyb3IiKX1yZXR1cm4gdShyKX0obi5CYXNlRXhjZXB0aW9uKSxtPW5ldyBVaW50OEFycmF5KFswLDEsOCwxNiw5LDIsMywxMCwxNywyNCwzMiwyNSwxOCwxMSw0LDUsMTIsMTksMjYsMzMsNDAsNDgsNDEsMzQsMjcsMjAsMTMsNiw3LDE0LDIxLDI4LDM1LDQyLDQ5LDU2LDU3LDUwLDQzLDM2LDI5LDIyLDE1LDIzLDMwLDM3LDQ0LDUxLDU4LDU5LDUyLDQ1LDM4LDMxLDM5LDQ2LDUzLDYwLDYxLDU0LDQ3LDU1LDYyLDYzXSksYj00MDE3LHc9Nzk5LGs9MzQwNixTPTIyNzYseD0xNTY3LE89Mzc4NCxBPTU3OTMsQz0yODk2O2Z1bmN0aW9uIEYoZSx0KXtmb3IodmFyIHIsbixhPTAsaT0xNjtpPjAmJiFlW2ktMV07KWktLTt2YXIgbyxzPVt7Y2hpbGRyZW46W10saW5kZXg6MH1dLGM9c1swXTtmb3Iocj0wO3I8aTtyKyspe2ZvcihuPTA7bjxlW3JdO24rKyl7Zm9yKChjPXMucG9wKCkpLmNoaWxkcmVuW2MuaW5kZXhdPXRbYV07Yy5pbmRleD4wOyljPXMucG9wKCk7Zm9yKGMuaW5kZXgrKyxzLnB1c2goYyk7cy5sZW5ndGg8PXI7KXMucHVzaChvPXtjaGlsZHJlbjpbXSxpbmRleDowfSksYy5jaGlsZHJlbltjLmluZGV4XT1vLmNoaWxkcmVuLGM9bzthKyt9cisxPGkmJihzLnB1c2gobz17Y2hpbGRyZW46W10saW5kZXg6MH0pLGMuY2hpbGRyZW5bYy5pbmRleF09by5jaGlsZHJlbixjPW8pfXJldHVybiBzWzBdLmNoaWxkcmVufWZ1bmN0aW9uIFAoZSx0LHIpe3JldHVybiA2NCooKGUuYmxvY2tzUGVyTGluZSsxKSp0K3IpfWZ1bmN0aW9uIFQoZSx0LHIsaSxvLGMsdSxsLGYpe3ZhciBoPWFyZ3VtZW50cy5sZW5ndGg+OSYmdm9pZCAwIT09YXJndW1lbnRzWzldJiZhcmd1bWVudHNbOV0sZD1yLm1jdXNQZXJMaW5lLHA9ci5wcm9ncmVzc2l2ZSxiPXQsdz0wLGs9MDtmdW5jdGlvbiBTKCl7aWYoaz4wKXJldHVybiBrLS0sdz4+ayYxO2lmKDI1NT09PSh3PWVbdCsrXSkpe3ZhciBuPWVbdCsrXTtpZihuKXtpZigyMjA9PT1uJiZoKXt0Kz0yO3ZhciBpPSgwLGEucmVhZFVpbnQxNikoZSx0KTtpZih0Kz0yLGk+MCYmaSE9PXIuc2NhbkxpbmVzKXRocm93IG5ldyB2KCJGb3VuZCBETkwgbWFya2VyICgweEZGREMpIHdoaWxlIHBhcnNpbmcgc2NhbiBkYXRhIixpKX1lbHNlIGlmKDIxNz09PW4pe2lmKGgpe3ZhciBvPUkqKDg9PT1yLnByZWNpc2lvbj84OjApO2lmKG8+MCYmTWF0aC5yb3VuZChyLnNjYW5MaW5lcy9vKT49NSl0aHJvdyBuZXcgdigiRm91bmQgRU9JIG1hcmtlciAoMHhGRkQ5KSB3aGlsZSBwYXJzaW5nIHNjYW4gZGF0YSwgcG9zc2libHkgY2F1c2VkIGJ5IGluY29ycmVjdCBgc2NhbkxpbmVzYCBwYXJhbWV0ZXIiLG8pfXRocm93IG5ldyB5KCJGb3VuZCBFT0kgbWFya2VyICgweEZGRDkpIHdoaWxlIHBhcnNpbmcgc2NhbiBkYXRhIil9dGhyb3cgbmV3IGcoInVuZXhwZWN0ZWQgbWFya2VyICIuY29uY2F0KCh3PDw4fG4pLnRvU3RyaW5nKDE2KSkpfX1yZXR1cm4gaz03LHc+Pj43fWZ1bmN0aW9uIHgoZSl7Zm9yKHZhciB0PWU7Oyl7c3dpdGNoKHModD10W1MoKV0pKXtjYXNlIm51bWJlciI6cmV0dXJuIHQ7Y2FzZSJvYmplY3QiOmNvbnRpbnVlfXRocm93IG5ldyBnKCJpbnZhbGlkIGh1ZmZtYW4gc2VxdWVuY2UiKX19ZnVuY3Rpb24gTyhlKXtmb3IodmFyIHQ9MDtlPjA7KXQ9dDw8MXxTKCksZS0tO3JldHVybiB0fWZ1bmN0aW9uIEEoZSl7aWYoMT09PWUpcmV0dXJuIDE9PT1TKCk/MTotMTt2YXIgdD1PKGUpO3JldHVybiB0Pj0xPDxlLTE/dDp0KygtMTw8ZSkrMX12YXIgQyxGPTAsVD0wLEk9MDtmdW5jdGlvbiBFKGUsdCxyLG4sYSl7dmFyIGk9ciVkO0k9KHIvZHwwKSplLnYrbjt2YXIgbz1pKmUuaCthO3QoZSxQKGUsSSxvKSl9ZnVuY3Rpb24gTShlLHQscil7ST1yL2UuYmxvY2tzUGVyTGluZXwwO3ZhciBuPXIlZS5ibG9ja3NQZXJMaW5lO3QoZSxQKGUsSSxuKSl9dmFyIF8sTCxSLE4sRCxCLFU9aS5sZW5ndGg7Qj1wPzA9PT1jPzA9PT1sP2Z1bmN0aW9uKGUsdCl7dmFyIHI9eChlLmh1ZmZtYW5UYWJsZURDKSxuPTA9PT1yPzA6QShyKTw8ZjtlLmJsb2NrRGF0YVt0XT1lLnByZWQrPW59OmZ1bmN0aW9uKGUsdCl7ZS5ibG9ja0RhdGFbdF18PVMoKTw8Zn06MD09PWw/ZnVuY3Rpb24oZSx0KXtpZihGPjApRi0tO2Vsc2UgZm9yKHZhciByPWMsbj11O3I8PW47KXt2YXIgYT14KGUuaHVmZm1hblRhYmxlQUMpLGk9MTUmYSxvPWE+PjQ7aWYoMCE9PWkpe3ZhciBzPW1bcis9b107ZS5ibG9ja0RhdGFbdCtzXT1BKGkpKigxPDxmKSxyKyt9ZWxzZXtpZihvPDE1KXtGPU8obykrKDE8PG8pLTE7YnJlYWt9cis9MTZ9fX06ZnVuY3Rpb24oZSx0KXtmb3IodmFyIHIsbixhPWMsaT11LG89MDthPD1pOyl7dmFyIHM9dCttW2FdLGw9ZS5ibG9ja0RhdGFbc108MD8tMToxO3N3aXRjaChUKXtjYXNlIDA6aWYobz0obj14KGUuaHVmZm1hblRhYmxlQUMpKT4+NCwwPT0ocj0xNSZuKSlvPDE1PyhGPU8obykrKDE8PG8pLFQ9NCk6KG89MTYsVD0xKTtlbHNle2lmKDEhPT1yKXRocm93IG5ldyBnKCJpbnZhbGlkIEFDbiBlbmNvZGluZyIpO0M9QShyKSxUPW8/MjozfWNvbnRpbnVlO2Nhc2UgMTpjYXNlIDI6ZS5ibG9ja0RhdGFbc10/ZS5ibG9ja0RhdGFbc10rPWwqKFMoKTw8Zik6MD09LS1vJiYoVD0yPT09VD8zOjApO2JyZWFrO2Nhc2UgMzplLmJsb2NrRGF0YVtzXT9lLmJsb2NrRGF0YVtzXSs9bCooUygpPDxmKTooZS5ibG9ja0RhdGFbc109Qzw8ZixUPTApO2JyZWFrO2Nhc2UgNDplLmJsb2NrRGF0YVtzXSYmKGUuYmxvY2tEYXRhW3NdKz1sKihTKCk8PGYpKX1hKyt9ND09PVQmJjA9PS0tRiYmKFQ9MCl9OmZ1bmN0aW9uKGUsdCl7dmFyIHI9eChlLmh1ZmZtYW5UYWJsZURDKSxuPTA9PT1yPzA6QShyKTtlLmJsb2NrRGF0YVt0XT1lLnByZWQrPW47Zm9yKHZhciBhPTE7YTw2NDspe3ZhciBpPXgoZS5odWZmbWFuVGFibGVBQyksbz0xNSZpLHM9aT4+NDtpZigwIT09byl7dmFyIGM9bVthKz1zXTtlLmJsb2NrRGF0YVt0K2NdPUEobyksYSsrfWVsc2V7aWYoczwxNSlicmVhazthKz0xNn19fTt2YXIgJCxYLEgscSxHPTA7Zm9yKFg9MT09PVU/aVswXS5ibG9ja3NQZXJMaW5lKmlbMF0uYmxvY2tzUGVyQ29sdW1uOmQqci5tY3VzUGVyQ29sdW1uO0c8PVg7KXt2YXIgej1vP01hdGgubWluKFgtRyxvKTpYO2lmKHo+MCl7Zm9yKEw9MDtMPFU7TCsrKWlbTF0ucHJlZD0wO2lmKEY9MCwxPT09VSlmb3IoXz1pWzBdLEQ9MDtEPHo7RCsrKU0oXyxCLEcpLEcrKztlbHNlIGZvcihEPTA7RDx6O0QrKyl7Zm9yKEw9MDtMPFU7TCsrKWZvcihIPShfPWlbTF0pLmgscT1fLnYsUj0wO1I8cTtSKyspZm9yKE49MDtOPEg7TisrKUUoXyxCLEcsUixOKTtHKyt9fWlmKGs9MCwhKCQ9aihlLHQpKSlicmVhaztpZigkLmludmFsaWQpe3ZhciBXPXo+MD8idW5leHBlY3RlZCI6ImV4Y2Vzc2l2ZSI7KDAsbi53YXJuKSgiZGVjb2RlU2NhbiAtICIuY29uY2F0KFcsIiBNQ1UgZGF0YSwgY3VycmVudCBtYXJrZXIgaXM6ICIpLmNvbmNhdCgkLmludmFsaWQpKSx0PSQub2Zmc2V0fWlmKCEoJC5tYXJrZXI+PTY1NDg4JiYkLm1hcmtlcjw9NjU0OTUpKWJyZWFrO3QrPTJ9cmV0dXJuIHQtYn1mdW5jdGlvbiBJKGUsdCxyKXt2YXIgbixhLGksbyxzLGMsdSxsLGYsaCxkLHAsdix5LG0sRixQLFQ9ZS5xdWFudGl6YXRpb25UYWJsZSxJPWUuYmxvY2tEYXRhO2lmKCFUKXRocm93IG5ldyBnKCJtaXNzaW5nIHJlcXVpcmVkIFF1YW50aXphdGlvbiBUYWJsZS4iKTtmb3IodmFyIEU9MDtFPDY0O0UrPTgpZj1JW3QrRV0saD1JW3QrRSsxXSxkPUlbdCtFKzJdLHA9SVt0K0UrM10sdj1JW3QrRSs0XSx5PUlbdCtFKzVdLG09SVt0K0UrNl0sRj1JW3QrRSs3XSxmKj1UW0VdLDAhPShofGR8cHx2fHl8bXxGKT8oaCo9VFtFKzFdLGQqPVRbRSsyXSxwKj1UW0UrM10sdio9VFtFKzRdLHkqPVRbRSs1XSxtKj1UW0UrNl0sRio9VFtFKzddLGE9KG49KG49QSpmKzEyOD4+OCkrKGE9QSp2KzEyOD4+OCkrMT4+MSktYSxQPShpPWQpKk8rKG89bSkqeCsxMjg+PjgsaT1pKngtbypPKzEyOD4+OCx1PShzPShzPUMqKGgtRikrMTI4Pj44KSsodT15PDw0KSsxPj4xKS11LGM9KGw9KGw9QyooaCtGKSsxMjg+PjgpKyhjPXA8PDQpKzE+PjEpLWMsbz0obj1uKyhvPVApKzE+PjEpLW8saT0oYT1hK2krMT4+MSktaSxQPXMqUytsKmsrMjA0OD4+MTIscz1zKmstbCpTKzIwNDg+PjEyLGw9UCxQPWMqdyt1KmIrMjA0OD4+MTIsYz1jKmItdSp3KzIwNDg+PjEyLHU9UCxyW0VdPW4rbCxyW0UrN109bi1sLHJbRSsxXT1hK3UscltFKzZdPWEtdSxyW0UrMl09aStjLHJbRSs1XT1pLWMscltFKzNdPW8rcyxyW0UrNF09by1zKTooUD1BKmYrNTEyPj4xMCxyW0VdPVAscltFKzFdPVAscltFKzJdPVAscltFKzNdPVAscltFKzRdPVAscltFKzVdPVAscltFKzZdPVAscltFKzddPVApO2Zvcih2YXIgaj0wO2o8ODsrK2opZj1yW2pdLDAhPSgoaD1yW2orOF0pfChkPXJbaisxNl0pfChwPXJbaisyNF0pfCh2PXJbaiszMl0pfCh5PXJbais0MF0pfChtPXJbais0OF0pfChGPXJbais1Nl0pKT8oYT0obj00MTEyKygobj1BKmYrMjA0OD4+MTIpKyhhPUEqdisyMDQ4Pj4xMikrMT4+MSkpLWEsUD0oaT1kKSpPKyhvPW0pKngrMjA0OD4+MTIsaT1pKngtbypPKzIwNDg+PjEyLG89UCx1PShzPShzPUMqKGgtRikrMjA0OD4+MTIpKyh1PXkpKzE+PjEpLXUsYz0obD0obD1DKihoK0YpKzIwNDg+PjEyKSsoYz1wKSsxPj4xKS1jLFA9cypTK2wqaysyMDQ4Pj4xMixzPXMqay1sKlMrMjA0OD4+MTIsbD1QLFA9Yyp3K3UqYisyMDQ4Pj4xMixjPWMqYi11KncrMjA0OD4+MTIsKGY9KG49bitvKzE+PjEpK2wpPDE2P2Y9MDpmPj00MDgwP2Y9MjU1OmY+Pj00LChoPShhPWEraSsxPj4xKSsodT1QKSk8MTY/aD0wOmg+PTQwODA/aD0yNTU6aD4+PTQsKGQ9KGk9YS1pKStjKTwxNj9kPTA6ZD49NDA4MD9kPTI1NTpkPj49NCwocD0obz1uLW8pK3MpPDE2P3A9MDpwPj00MDgwP3A9MjU1OnA+Pj00LCh2PW8tcyk8MTY/dj0wOnY+PTQwODA/dj0yNTU6dj4+PTQsKHk9aS1jKTwxNj95PTA6eT49NDA4MD95PTI1NTp5Pj49NCwobT1hLXUpPDE2P209MDptPj00MDgwP209MjU1Om0+Pj00LChGPW4tbCk8MTY/Rj0wOkY+PTQwODA/Rj0yNTU6Rj4+PTQsSVt0K2pdPWYsSVt0K2orOF09aCxJW3QraisxNl09ZCxJW3QraisyNF09cCxJW3QraiszMl09dixJW3Qrais0MF09eSxJW3Qrais0OF09bSxJW3Qrais1Nl09Rik6KFA9KFA9QSpmKzgxOTI+PjE0KTwtMjA0MD8wOlA+PTIwMjQ/MjU1OlArMjA1Nj4+NCxJW3Qral09UCxJW3Qrais4XT1QLElbdCtqKzE2XT1QLElbdCtqKzI0XT1QLElbdCtqKzMyXT1QLElbdCtqKzQwXT1QLElbdCtqKzQ4XT1QLElbdCtqKzU2XT1QKX1mdW5jdGlvbiBFKGUsdCl7Zm9yKHZhciByPXQuYmxvY2tzUGVyTGluZSxuPXQuYmxvY2tzUGVyQ29sdW1uLGE9bmV3IEludDE2QXJyYXkoNjQpLGk9MDtpPG47aSsrKWZvcih2YXIgbz0wO288cjtvKyspSSh0LFAodCxpLG8pLGEpO3JldHVybiB0LmJsb2NrRGF0YX1mdW5jdGlvbiBqKGUsdCl7dmFyIHI9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOnQsbj1lLmxlbmd0aC0xLGk9cjx0P3I6dDtpZih0Pj1uKXJldHVybiBudWxsO3ZhciBvPSgwLGEucmVhZFVpbnQxNikoZSx0KTtpZihvPj02NTQ3MiYmbzw9NjU1MzQpcmV0dXJue2ludmFsaWQ6bnVsbCxtYXJrZXI6byxvZmZzZXQ6dH07Zm9yKHZhciBzPSgwLGEucmVhZFVpbnQxNikoZSxpKTshKHM+PTY1NDcyJiZzPD02NTUzNCk7KXtpZigrK2k+PW4pcmV0dXJuIG51bGw7cz0oMCxhLnJlYWRVaW50MTYpKGUsaSl9cmV0dXJue2ludmFsaWQ6by50b1N0cmluZygxNiksbWFya2VyOnMsb2Zmc2V0Oml9fXZhciBNPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7fSxyPXQuZGVjb2RlVHJhbnNmb3JtLG49dm9pZCAwPT09cj9udWxsOnIsYT10LmNvbG9yVHJhbnNmb3JtLGk9dm9pZCAwPT09YT8tMTphO2wodGhpcyxlKSx0aGlzLl9kZWNvZGVUcmFuc2Zvcm09bix0aGlzLl9jb2xvclRyYW5zZm9ybT1pfXJldHVybiB1KGUsW3trZXk6InBhcnNlIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD0oYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9KS5kbmxTY2FuTGluZXMscj12b2lkIDA9PT10P251bGw6dDtmdW5jdGlvbiBvKCl7dmFyIHQ9KDAsYS5yZWFkVWludDE2KShlLGwpLHI9KGwrPTIpK3QtMixpPWooZSxyLGwpO2kmJmkuaW52YWxpZCYmKCgwLG4ud2FybikoInJlYWREYXRhQmxvY2sgLSBpbmNvcnJlY3QgbGVuZ3RoLCBjdXJyZW50IG1hcmtlciBpczogIitpLmludmFsaWQpLHI9aS5vZmZzZXQpO3ZhciBvPWUuc3ViYXJyYXkobCxyKTtyZXR1cm4gbCs9by5sZW5ndGgsb31mdW5jdGlvbiBzKGUpe3ZhciB0LHI9TWF0aC5jZWlsKGUuc2FtcGxlc1BlckxpbmUvOC9lLm1heEgpLG49TWF0aC5jZWlsKGUuc2NhbkxpbmVzLzgvZS5tYXhWKSxhPWkoZS5jb21wb25lbnRzKTt0cnl7Zm9yKGEucygpOyEodD1hLm4oKSkuZG9uZTspe3ZhciBvPXQudmFsdWUscz1NYXRoLmNlaWwoTWF0aC5jZWlsKGUuc2FtcGxlc1BlckxpbmUvOCkqby5oL2UubWF4SCksYz1NYXRoLmNlaWwoTWF0aC5jZWlsKGUuc2NhbkxpbmVzLzgpKm8udi9lLm1heFYpLHU9cipvLmgsbD1uKm8udio2NCoodSsxKTtvLmJsb2NrRGF0YT1uZXcgSW50MTZBcnJheShsKSxvLmJsb2Nrc1BlckxpbmU9cyxvLmJsb2Nrc1BlckNvbHVtbj1jfX1jYXRjaChlKXthLmUoZSl9ZmluYWxseXthLmYoKX1lLm1jdXNQZXJMaW5lPXIsZS5tY3VzUGVyQ29sdW1uPW59dmFyIGMsdSxsPTAsZj1udWxsLGg9bnVsbCxkPTAscD1bXSxiPVtdLHc9W10saz0oMCxhLnJlYWRVaW50MTYpKGUsbCk7aWYobCs9Miw2NTQ5NiE9PWspdGhyb3cgbmV3IGcoIlNPSSBub3QgZm91bmQiKTtrPSgwLGEucmVhZFVpbnQxNikoZSxsKSxsKz0yO2U6Zm9yKDs2NTQ5NyE9PWs7KXt2YXIgUz12b2lkIDAseD12b2lkIDAsTz12b2lkIDA7c3dpdGNoKGspe2Nhc2UgNjU1MDQ6Y2FzZSA2NTUwNTpjYXNlIDY1NTA2OmNhc2UgNjU1MDc6Y2FzZSA2NTUwODpjYXNlIDY1NTA5OmNhc2UgNjU1MTA6Y2FzZSA2NTUxMTpjYXNlIDY1NTEyOmNhc2UgNjU1MTM6Y2FzZSA2NTUxNDpjYXNlIDY1NTE1OmNhc2UgNjU1MTY6Y2FzZSA2NTUxNzpjYXNlIDY1NTE4OmNhc2UgNjU1MTk6Y2FzZSA2NTUzNDp2YXIgQT1vKCk7NjU1MDQ9PT1rJiY3ND09PUFbMF0mJjcwPT09QVsxXSYmNzM9PT1BWzJdJiY3MD09PUFbM10mJjA9PT1BWzRdJiYoZj17dmVyc2lvbjp7bWFqb3I6QVs1XSxtaW5vcjpBWzZdfSxkZW5zaXR5VW5pdHM6QVs3XSx4RGVuc2l0eTpBWzhdPDw4fEFbOV0seURlbnNpdHk6QVsxMF08PDh8QVsxMV0sdGh1bWJXaWR0aDpBWzEyXSx0aHVtYkhlaWdodDpBWzEzXSx0aHVtYkRhdGE6QS5zdWJhcnJheSgxNCwxNCszKkFbMTJdKkFbMTNdKX0pLDY1NTE4PT09ayYmNjU9PT1BWzBdJiYxMDA9PT1BWzFdJiYxMTE9PT1BWzJdJiY5OD09PUFbM10mJjEwMT09PUFbNF0mJihoPXt2ZXJzaW9uOkFbNV08PDh8QVs2XSxmbGFnczA6QVs3XTw8OHxBWzhdLGZsYWdzMTpBWzldPDw4fEFbMTBdLHRyYW5zZm9ybUNvZGU6QVsxMV19KTticmVhaztjYXNlIDY1NDk5OmZvcih2YXIgQz0oMCxhLnJlYWRVaW50MTYpKGUsbCkrKGwrPTIpLTI7bDxDOyl7dmFyIFA9ZVtsKytdLEk9bmV3IFVpbnQxNkFycmF5KDY0KTtpZihQPj40PT0wKWZvcih4PTA7eDw2NDt4KyspSVttW3hdXT1lW2wrK107ZWxzZXtpZihQPj40IT0xKXRocm93IG5ldyBnKCJEUVQgLSBpbnZhbGlkIHRhYmxlIHNwZWMiKTtmb3IoeD0wO3g8NjQ7eCsrKUlbbVt4XV09KDAsYS5yZWFkVWludDE2KShlLGwpLGwrPTJ9cFsxNSZQXT1JfWJyZWFrO2Nhc2UgNjU0NzI6Y2FzZSA2NTQ3MzpjYXNlIDY1NDc0OmlmKGMpdGhyb3cgbmV3IGcoIk9ubHkgc2luZ2xlIGZyYW1lIEpQRUdzIHN1cHBvcnRlZCIpO2wrPTIsKGM9e30pLmV4dGVuZGVkPTY1NDczPT09ayxjLnByb2dyZXNzaXZlPTY1NDc0PT09ayxjLnByZWNpc2lvbj1lW2wrK107dmFyIE09KDAsYS5yZWFkVWludDE2KShlLGwpO2wrPTIsYy5zY2FuTGluZXM9cnx8TSxjLnNhbXBsZXNQZXJMaW5lPSgwLGEucmVhZFVpbnQxNikoZSxsKSxsKz0yLGMuY29tcG9uZW50cz1bXSxjLmNvbXBvbmVudElkcz17fTt2YXIgXz1lW2wrK10sTD0wLFI9MDtmb3IoUz0wO1M8XztTKyspe3ZhciBOPWVbbF0sRD1lW2wrMV0+PjQsQj0xNSZlW2wrMV07TDxEJiYoTD1EKSxSPEImJihSPUIpO3ZhciBVPWVbbCsyXTtPPWMuY29tcG9uZW50cy5wdXNoKHtoOkQsdjpCLHF1YW50aXphdGlvbklkOlUscXVhbnRpemF0aW9uVGFibGU6bnVsbH0pLGMuY29tcG9uZW50SWRzW05dPU8tMSxsKz0zfWMubWF4SD1MLGMubWF4Vj1SLHMoYyk7YnJlYWs7Y2FzZSA2NTQ3Njp2YXIgJD0oMCxhLnJlYWRVaW50MTYpKGUsbCk7Zm9yKGwrPTIsUz0yO1M8JDspe3ZhciBYPWVbbCsrXSxIPW5ldyBVaW50OEFycmF5KDE2KSxxPTA7Zm9yKHg9MDt4PDE2O3grKyxsKyspcSs9SFt4XT1lW2xdO3ZhciBHPW5ldyBVaW50OEFycmF5KHEpO2Zvcih4PTA7eDxxO3grKyxsKyspR1t4XT1lW2xdO1MrPTE3K3EsKFg+PjQ9PTA/dzpiKVsxNSZYXT1GKEgsRyl9YnJlYWs7Y2FzZSA2NTUwMTpsKz0yLHU9KDAsYS5yZWFkVWludDE2KShlLGwpLGwrPTI7YnJlYWs7Y2FzZSA2NTQ5ODp2YXIgej0xPT0rK2QmJiFyO2wrPTI7dmFyIFc9ZVtsKytdLFY9W107Zm9yKFM9MDtTPFc7UysrKXt2YXIgWT1lW2wrK10sSz1jLmNvbXBvbmVudElkc1tZXSxKPWMuY29tcG9uZW50c1tLXTtKLmluZGV4PVk7dmFyIFo9ZVtsKytdO0ouaHVmZm1hblRhYmxlREM9d1taPj40XSxKLmh1ZmZtYW5UYWJsZUFDPWJbMTUmWl0sVi5wdXNoKEopfXZhciBRPWVbbCsrXSxlZT1lW2wrK10sdGU9ZVtsKytdO3RyeXt2YXIgcmU9VChlLGwsYyxWLHUsUSxlZSx0ZT4+NCwxNSZ0ZSx6KTtsKz1yZX1jYXRjaCh0KXtpZih0IGluc3RhbmNlb2YgdilyZXR1cm4oMCxuLndhcm4pKCIiLmNvbmNhdCh0Lm1lc3NhZ2UsIiAtLSBhdHRlbXB0aW5nIHRvIHJlLXBhcnNlIHRoZSBKUEVHIGltYWdlLiIpKSx0aGlzLnBhcnNlKGUse2RubFNjYW5MaW5lczp0LnNjYW5MaW5lc30pO2lmKHQgaW5zdGFuY2VvZiB5KXsoMCxuLndhcm4pKCIiLmNvbmNhdCh0Lm1lc3NhZ2UsIiAtLSBpZ25vcmluZyB0aGUgcmVzdCBvZiB0aGUgaW1hZ2UgZGF0YS4iKSk7YnJlYWsgZX10aHJvdyB0fWJyZWFrO2Nhc2UgNjU1MDA6bCs9NDticmVhaztjYXNlIDY1NTM1OjI1NSE9PWVbbF0mJmwtLTticmVhaztkZWZhdWx0OnZhciBuZT1qKGUsbC0yLGwtMyk7aWYobmUmJm5lLmludmFsaWQpeygwLG4ud2FybikoIkpwZWdJbWFnZS5wYXJzZSAtIHVuZXhwZWN0ZWQgZGF0YSwgY3VycmVudCBtYXJrZXIgaXM6ICIrbmUuaW52YWxpZCksbD1uZS5vZmZzZXQ7YnJlYWt9aWYoIW5lfHxsPj1lLmxlbmd0aC0xKXsoMCxuLndhcm4pKCJKcGVnSW1hZ2UucGFyc2UgLSByZWFjaGVkIHRoZSBlbmQgb2YgdGhlIGltYWdlIGRhdGEgd2l0aG91dCBmaW5kaW5nIGFuIEVPSSBtYXJrZXIgKDB4RkZEOSkuIik7YnJlYWsgZX10aHJvdyBuZXcgZygiSnBlZ0ltYWdlLnBhcnNlIC0gdW5rbm93biBtYXJrZXI6ICIray50b1N0cmluZygxNikpfWs9KDAsYS5yZWFkVWludDE2KShlLGwpLGwrPTJ9dGhpcy53aWR0aD1jLnNhbXBsZXNQZXJMaW5lLHRoaXMuaGVpZ2h0PWMuc2NhbkxpbmVzLHRoaXMuamZpZj1mLHRoaXMuYWRvYmU9aCx0aGlzLmNvbXBvbmVudHM9W107dmFyIGFlLGllPWkoYy5jb21wb25lbnRzKTt0cnl7Zm9yKGllLnMoKTshKGFlPWllLm4oKSkuZG9uZTspe3ZhciBvZT1hZS52YWx1ZSxzZT1wW29lLnF1YW50aXphdGlvbklkXTtzZSYmKG9lLnF1YW50aXphdGlvblRhYmxlPXNlKSx0aGlzLmNvbXBvbmVudHMucHVzaCh7aW5kZXg6b2UuaW5kZXgsb3V0cHV0OkUoMCxvZSksc2NhbGVYOm9lLmgvYy5tYXhILHNjYWxlWTpvZS52L2MubWF4VixibG9ja3NQZXJMaW5lOm9lLmJsb2Nrc1BlckxpbmUsYmxvY2tzUGVyQ29sdW1uOm9lLmJsb2Nrc1BlckNvbHVtbn0pfX1jYXRjaChlKXtpZS5lKGUpfWZpbmFsbHl7aWUuZigpfXRoaXMubnVtQ29tcG9uZW50cz10aGlzLmNvbXBvbmVudHMubGVuZ3RofX0se2tleToiX2dldExpbmVhcml6ZWRCbG9ja0RhdGEiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIHIsbixhLGksbyxzLGMsdSxsLGYsaCxkLHA9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0mJmFyZ3VtZW50c1syXSxnPXRoaXMud2lkdGgvZSx2PXRoaXMuaGVpZ2h0L3QseT0wLG09dGhpcy5jb21wb25lbnRzLmxlbmd0aCxiPWUqdCptLHc9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KGIpLGs9bmV3IFVpbnQzMkFycmF5KGUpLFM9NDI5NDk2NzI4ODtmb3IoYz0wO2M8bTtjKyspe2lmKG49KHI9dGhpcy5jb21wb25lbnRzW2NdKS5zY2FsZVgqZyxhPXIuc2NhbGVZKnYseT1jLGg9ci5vdXRwdXQsaT1yLmJsb2Nrc1BlckxpbmUrMTw8MyxuIT09ZCl7Zm9yKG89MDtvPGU7bysrKXU9MHxvKm4sa1tvXT0odSZTKTw8M3w3JnU7ZD1ufWZvcihzPTA7czx0O3MrKylmb3IoZj1pKigodT0wfHMqYSkmUyl8KDcmdSk8PDMsbz0wO288ZTtvKyspd1t5XT1oW2Yra1tvXV0seSs9bX12YXIgeD10aGlzLl9kZWNvZGVUcmFuc2Zvcm07aWYocHx8NCE9PW18fHh8fCh4PW5ldyBJbnQzMkFycmF5KFstMjU2LDI1NSwtMjU2LDI1NSwtMjU2LDI1NSwtMjU2LDI1NV0pKSx4KWZvcihjPTA7YzxiOylmb3IodT0wLGw9MDt1PG07dSsrLGMrKyxsKz0yKXdbY109KHdbY10qeFtsXT4+OCkreFtsKzFdO3JldHVybiB3fX0se2tleToiX2lzQ29sb3JDb252ZXJzaW9uTmVlZGVkIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hZG9iZT8hIXRoaXMuYWRvYmUudHJhbnNmb3JtQ29kZTozPT09dGhpcy5udW1Db21wb25lbnRzPzAhPT10aGlzLl9jb2xvclRyYW5zZm9ybSYmKDgyIT09dGhpcy5jb21wb25lbnRzWzBdLmluZGV4fHw3MSE9PXRoaXMuY29tcG9uZW50c1sxXS5pbmRleHx8NjYhPT10aGlzLmNvbXBvbmVudHNbMl0uaW5kZXgpOjE9PT10aGlzLl9jb2xvclRyYW5zZm9ybX19LHtrZXk6Il9jb252ZXJ0WWNjVG9SZ2IiLHZhbHVlOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxyLG4sYT0wLGk9ZS5sZW5ndGg7YTxpO2ErPTMpdD1lW2FdLHI9ZVthKzFdLG49ZVthKzJdLGVbYV09dC0xNzkuNDU2KzEuNDAyKm4sZVthKzFdPXQrMTM1LjQ1OS0uMzQ0KnItLjcxNCpuLGVbYSsyXT10LTIyNi44MTYrMS43NzIqcjtyZXR1cm4gZX19LHtrZXk6Il9jb252ZXJ0WWNja1RvUmdiIix2YWx1ZTpmdW5jdGlvbihlKXtmb3IodmFyIHQscixuLGEsaT0wLG89MCxzPWUubGVuZ3RoO288cztvKz00KXQ9ZVtvXSxyPWVbbysxXSxuPWVbbysyXSxhPWVbbyszXSxlW2krK109ciooLTY2MDYzNTY2OTQyMDM2NGUtMTkqcisuMDAwNDM3MTMwNDc1OTI2MjMyKm4tNTQwODA2MTAwNjQ1OTllLTE4KnQrLjAwMDQ4NDQ5Nzk3MTIwMjgxKmEtLjE1NDM2MjE1MTg3MTEyNiktMTIyLjY3MTk1NDA2ODk0K24qKC0uMDAwOTU3OTY0Mzc4NDQ1NzczKm4rLjAwMDgxNzA3NjkxMTM0NjYyNSp0LS4wMDQ3NzI3MTQwNTQwODc0NyphKzEuNTMzODAyNTMyMjE3MzQpK3QqKC4wMDA5NjEyNTAxODQxMzA2ODgqdC0uMDAyNjYyNTczMzIyODM5MzMqYSsuNDgzNTcwODg0NTEyNjUpK2EqKC0uMDAwMzM2MTk3MTc3NjE4Mzk0KmErLjQ4NDc5MTU2MTQ5MDc3NiksZVtpKytdPTEwNy4yNjgwMzkzOTc3MjQrciooMjE5OTI3MTA0NTI1NzQxZS0xOSpyLS4wMDA2NDA5OTIwMTgyOTc5NDUqbisuMDAwNjU5Mzk3MDAxMjQ1NTc3KnQrLjAwMDQyNjEwNTY1MjkzODgzNyphLS4xNzY0OTE3OTI0NjI4NzUpK24qKC0uMDAwNzc4MjY5OTQxNTEzNjgzKm4rLjAwMTMwODcyMjYxNDA4Mjc1KnQrLjAwMDc3MDQ4MjYzMTgwMTEzMiphLS4xNTEwNTE0OTI3NzU1NjIpK3QqKC4wMDEyNjkzNTM2ODExNDg0Myp0LS4wMDI2NTA5MDE4OTAxMDg5OCphKy4yNTgwMjkxMDIwNjg0NSkrYSooLS4wMDAzMTg5MTMxMTc1ODgzMjgqYS0uMjEzNzQyNDAwMzIzNjY1KSxlW2krK109ciooLS4wMDA1NzAxMTUxOTY5NzM2Nzcqci0yNjM0MDkwNTEwMDQ1ODllLTE5Km4rLjAwMjA3NDEwODgxMTUwMTIqdC0uMDAyODgyNjAyMzY4NTM0NDIqYSsuODE0MjcyOTY4MzU5Mjk1KS0yMC44MTAwMTI1NDY5NDcrbiooLTE1MzQ5NjA1NzQ0MDk3NWUtMTkqbi0uMDAwMTMyNjg5MDQzOTYxNDQ2KnQrLjAwMDU2MDgzMzY5MTI0MjgxMiphLS4xOTUxNTIwMjc1MzQwNDkpK3QqKC4wMDE3NDQxODEzMjkyNzU4Mip0LS4wMDI1NTI0MzMyMTQzOTM0NyphKy4xMTY5MzUwMjA0NjUxNDUpK2EqKC0uMDAwMzQzNTMxOTk2NTEwNTU1KmErLjI0MTY1MjYwMjMyNDA3KTtyZXR1cm4gZS5zdWJhcnJheSgwLGkpfX0se2tleToiX2NvbnZlcnRZY2NrVG9DbXlrIix2YWx1ZTpmdW5jdGlvbihlKXtmb3IodmFyIHQscixuLGE9MCxpPWUubGVuZ3RoO2E8aTthKz00KXQ9ZVthXSxyPWVbYSsxXSxuPWVbYSsyXSxlW2FdPTQzNC40NTYtdC0xLjQwMipuLGVbYSsxXT0xMTkuNTQxLXQrLjM0NCpyKy43MTQqbixlW2ErMl09NDgxLjgxNi10LTEuNzcyKnI7cmV0dXJuIGV9fSx7a2V5OiJfY29udmVydENteWtUb1JnYiIsdmFsdWU6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LHIsbixhLGk9MCxvPTAscz1lLmxlbmd0aDtvPHM7bys9NCl0PWVbb10scj1lW28rMV0sbj1lW28rMl0sYT1lW28rM10sZVtpKytdPTI1NSt0KigtNjc0NzE0NzA3MzYwMjQ0MWUtMjAqdCsuMDAwODM3OTI2MjEyMTAxMzcyNypyKy4wMDAyODk0NzE4MTg4NjQzMjk0Km4rLjAwMzI2NDIzMTA1NzUzNzgwNiphLTEuMTE4NTYxMTg2NzIwMzkzNykrciooMjYzNzQxMDc2MTYwODk0MDVlLTIxKnItODYyNjk0OTE1ODYzODU3MmUtMjAqbi0uMDAwMjc0ODc2OTA2NzQ5OTQ5MSphLS4wMjE1NTY4ODc5NDk3ODk2NykrbiooLTM4NzgwOTkyMTI4NjkzNjNlLTIwKm4tLjAwMDMyNjc4MDgyNzk0ODUyODYqYSsuMDY4Njc0MjIzODU5NTM0NSktYSooLjAwMDMzNjE5NzE3NzYxODM5MzcqYSsuNzQzMDY1OTE1MTM0MjI1NCksZVtpKytdPTI1NSt0KiguMDAwMTM1OTYzNzI4MTM1ODg4NDgqdCsuMDAwOTI0NTM3MTMyNTczNTg1KnIrLjAwMDEwNTY3MzU5NjE4NjgzNTkzKm4rLjAwMDQ3OTE4NjQ2ODc0MzY1MTIqYS0uMzEwOTY4OTU4NzUxNTg3NSkrciooLS4wMDAyMzU0NTM0NjEwODM3MDM0NCpyKy4wMDAyNzAyODQ1MjUzNTM0NzE0Km4rLjAwMjAyMDAzMDg5NzczMDcxNTYqYS0uNzQ4ODA1MjE2NzAxNTQ5NCkrbiooNjgzNDgxNTk5ODIzNTY2MmUtMjAqbisuMDAwMTUxNjg0NTIzNjM0NjA5NzMqYS0uMDk3NTE5Mjc3NzQ3Mjg5MzMpLWEqKC4wMDAzMTg5MTMxMTc1ODgzMjgxKmErLjczNjQ4ODM4MDc3MzMxNjgpLGVbaSsrXT0yNTUrdCooMTM1OTg2NTA0MTEzODUzMDdlLTIxKnQrLjAwMDEyNDIzOTU2MTc1NDkwODUxKnIrLjAwMDQ3NTE5ODUwOTc1ODM1ODkqbi0zNjcyOTMxNzQ3NjYzMDQyMmUtMjIqYS0uMDU1NjIxODY5ODAyNjQwMzQpK3IqKC4wMDAxNjE0MTM4MDU5ODcyNDY3NipyKy4wMDA5NjkyMjM5MTMwNzI1MTg2Km4rLjAwMDc3ODI2OTI0NTAwMzYyNTMqYS0uNDQwMTUyMzIzNjc1MjY0NjMpK24qKDUuMDY4ODgyOTE0MDY4NzY5ZS03Km4rLjAwMTc3NzgzNjkwMTEzNzUwNzEqYS0uNzU5MTQ1NDY0OTc0OTYwOSktYSooLjAwMDM0MzUzMTk5NjUxMDU1NTMqYSsuNzA2Mzc3MDE4NjE2MDE0NCk7cmV0dXJuIGUuc3ViYXJyYXkoMCxpKX19LHtrZXk6ImdldERhdGEiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWUud2lkdGgscj1lLmhlaWdodCxuPWUuZm9yY2VSR0IsYT12b2lkIDAhPT1uJiZuLG89ZS5pc1NvdXJjZVBERixzPXZvaWQgMCE9PW8mJm87aWYodGhpcy5udW1Db21wb25lbnRzPjQpdGhyb3cgbmV3IGcoIlVuc3VwcG9ydGVkIGNvbG9yIG1vZGUiKTt2YXIgYz10aGlzLl9nZXRMaW5lYXJpemVkQmxvY2tEYXRhKHQscixzKTtpZigxPT09dGhpcy5udW1Db21wb25lbnRzJiZhKXt2YXIgdSxsPW5ldyBVaW50OENsYW1wZWRBcnJheSgzKmMubGVuZ3RoKSxmPTAsaD1pKGMpO3RyeXtmb3IoaC5zKCk7ISh1PWgubigpKS5kb25lOyl7dmFyIGQ9dS52YWx1ZTtsW2YrK109ZCxsW2YrK109ZCxsW2YrK109ZH19Y2F0Y2goZSl7aC5lKGUpfWZpbmFsbHl7aC5mKCl9cmV0dXJuIGx9aWYoMz09PXRoaXMubnVtQ29tcG9uZW50cyYmdGhpcy5faXNDb2xvckNvbnZlcnNpb25OZWVkZWQpcmV0dXJuIHRoaXMuX2NvbnZlcnRZY2NUb1JnYihjKTtpZig0PT09dGhpcy5udW1Db21wb25lbnRzKXtpZih0aGlzLl9pc0NvbG9yQ29udmVyc2lvbk5lZWRlZClyZXR1cm4gYT90aGlzLl9jb252ZXJ0WWNja1RvUmdiKGMpOnRoaXMuX2NvbnZlcnRZY2NrVG9DbXlrKGMpO2lmKGEpcmV0dXJuIHRoaXMuX2NvbnZlcnRDbXlrVG9SZ2IoYyl9cmV0dXJuIGN9fV0pLGV9KCk7dC5KcGVnSW1hZ2U9TX0sKGUsdCxyKT0+e2Z1bmN0aW9uIG4oZSl7cmV0dXJuIG49ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGV9LG4oZSl9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuSnB4U3RyZWFtPXZvaWQgMDt2YXIgYT1yKDE0OCksaT1yKDE1OSksbz1yKDIpO2Z1bmN0aW9uIHMoZSx0KXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIGE9dFtyXTthLmVudW1lcmFibGU9YS5lbnVtZXJhYmxlfHwhMSxhLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gYSYmKGEud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCh2b2lkIDAsaT1mdW5jdGlvbihlLHQpe2lmKCJvYmplY3QiIT09bihlKXx8bnVsbD09PWUpcmV0dXJuIGU7dmFyIHI9ZVtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PXIpe3ZhciBhPXIuY2FsbChlLCJzdHJpbmciKTtpZigib2JqZWN0IiE9PW4oYSkpcmV0dXJuIGE7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4gU3RyaW5nKGUpfShhLmtleSksInN5bWJvbCI9PT1uKGkpP2k6U3RyaW5nKGkpKSxhKX12YXIgaX1mdW5jdGlvbiBjKGUsdCl7cmV0dXJuIGM9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5fX3Byb3RvX189dCxlfSxjKGUsdCl9ZnVuY3Rpb24gdShlKXtyZXR1cm4gdT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihlKXtyZXR1cm4gZS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihlKX0sdShlKX12YXIgbD1mdW5jdGlvbihlKXshZnVuY3Rpb24oZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksdCYmYyhlLHQpfShoLGUpO3ZhciB0LHIsYSxsLGY9KGE9aCxsPWZ1bmN0aW9uKCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3QpcmV0dXJuITE7aWYoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSwoZnVuY3Rpb24oKXt9KSkpLCEwfWNhdGNoKGUpe3JldHVybiExfX0oKSxmdW5jdGlvbigpe3ZhciBlLHQ9dShhKTtpZihsKXt2YXIgcj11KHRoaXMpLmNvbnN0cnVjdG9yO2U9UmVmbGVjdC5jb25zdHJ1Y3QodCxhcmd1bWVudHMscil9ZWxzZSBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBmdW5jdGlvbihlLHQpe2lmKHQmJigib2JqZWN0Ij09PW4odCl8fCJmdW5jdGlvbiI9PXR5cGVvZiB0KSlyZXR1cm4gdDtpZih2b2lkIDAhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKHZvaWQgMD09PWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZX0oZSl9KHRoaXMsZSl9KTtmdW5jdGlvbiBoKGUsdCxyKXt2YXIgbjtyZXR1cm4gZnVuY3Rpb24oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxoKSwobj1mLmNhbGwodGhpcyx0KSkuc3RyZWFtPWUsbi5kaWN0PWUuZGljdCxuLm1heWJlTGVuZ3RoPXQsbi5wYXJhbXM9cixufXJldHVybiB0PWgsKHI9W3trZXk6ImJ5dGVzIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4oMCxvLnNoYWRvdykodGhpcywiYnl0ZXMiLHRoaXMuc3RyZWFtLmdldEJ5dGVzKHRoaXMubWF5YmVMZW5ndGgpKX19LHtrZXk6ImVuc3VyZUJ1ZmZlciIsdmFsdWU6ZnVuY3Rpb24oZSl7fX0se2tleToicmVhZEJsb2NrIix2YWx1ZTpmdW5jdGlvbigpe2lmKCF0aGlzLmVvZil7dmFyIGU9bmV3IGkuSnB4SW1hZ2U7ZS5wYXJzZSh0aGlzLmJ5dGVzKTt2YXIgdD1lLndpZHRoLHI9ZS5oZWlnaHQsbj1lLmNvbXBvbmVudHNDb3VudCxhPWUudGlsZXMubGVuZ3RoO2lmKDE9PT1hKXRoaXMuYnVmZmVyPWUudGlsZXNbMF0uaXRlbXM7ZWxzZXtmb3IodmFyIG89bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KHQqcipuKSxzPTA7czxhO3MrKylmb3IodmFyIGM9ZS50aWxlc1tzXSx1PWMud2lkdGgsbD1jLmhlaWdodCxmPWMubGVmdCxoPWMudG9wLGQ9Yy5pdGVtcyxwPTAsZz0odCpoK2YpKm4sdj10Km4seT11Km4sbT0wO208bDttKyspe3ZhciBiPWQuc3ViYXJyYXkocCxwK3kpO28uc2V0KGIsZykscCs9eSxnKz12fXRoaXMuYnVmZmVyPW99dGhpcy5idWZmZXJMZW5ndGg9dGhpcy5idWZmZXIubGVuZ3RoLHRoaXMuZW9mPSEwfX19XSkmJnModC5wcm90b3R5cGUsciksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksaH0oYS5EZWNvZGVTdHJlYW0pO3QuSnB4U3RyZWFtPWx9LChlLHQscik9PntmdW5jdGlvbiBuKGUpe3JldHVybiBuPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSxuKGUpfU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LkpweEltYWdlPXZvaWQgMDt2YXIgYT1yKDIpLGk9cigxMzUpLG89cigxNTUpO2Z1bmN0aW9uIHMoZSx0KXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIGE9dFtyXTthLmVudW1lcmFibGU9YS5lbnVtZXJhYmxlfHwhMSxhLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gYSYmKGEud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCh2b2lkIDAsaT1mdW5jdGlvbihlLHQpe2lmKCJvYmplY3QiIT09bihlKXx8bnVsbD09PWUpcmV0dXJuIGU7dmFyIHI9ZVtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PXIpe3ZhciBhPXIuY2FsbChlLCJzdHJpbmciKTtpZigib2JqZWN0IiE9PW4oYSkpcmV0dXJuIGE7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4gU3RyaW5nKGUpfShhLmtleSksInN5bWJvbCI9PT1uKGkpP2k6U3RyaW5nKGkpKSxhKX12YXIgaX1mdW5jdGlvbiBjKGUsdCxyKXtyZXR1cm4gdCYmcyhlLnByb3RvdHlwZSx0KSxyJiZzKGUsciksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZX1mdW5jdGlvbiB1KGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gbChlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSx0JiZmKGUsdCl9ZnVuY3Rpb24gZihlLHQpe3JldHVybiBmPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuX19wcm90b19fPXQsZX0sZihlLHQpfWZ1bmN0aW9uIGgoZSl7dmFyIHQ9ZnVuY3Rpb24oKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdClyZXR1cm4hMTtpZihSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLChmdW5jdGlvbigpe30pKSksITB9Y2F0Y2goZSl7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciByLGE9ZChlKTtpZih0KXt2YXIgaT1kKHRoaXMpLmNvbnN0cnVjdG9yO3I9UmVmbGVjdC5jb25zdHJ1Y3QoYSxhcmd1bWVudHMsaSl9ZWxzZSByPWEuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBmdW5jdGlvbihlLHQpe2lmKHQmJigib2JqZWN0Ij09PW4odCl8fCJmdW5jdGlvbiI9PXR5cGVvZiB0KSlyZXR1cm4gdDtpZih2b2lkIDAhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKHZvaWQgMD09PWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZX0oZSl9KHRoaXMscil9fWZ1bmN0aW9uIGQoZSl7cmV0dXJuIGQ9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSl9LGQoZSl9dmFyIHA9ZnVuY3Rpb24oZSl7bChyLGUpO3ZhciB0PWgocik7ZnVuY3Rpb24gcihlKXtyZXR1cm4gdSh0aGlzLHIpLHQuY2FsbCh0aGlzLCJKUFggZXJyb3I6ICIuY29uY2F0KGUpLCJKcHhFcnJvciIpfXJldHVybiBjKHIpfShhLkJhc2VFeGNlcHRpb24pLGc9e0xMOjAsTEg6MSxITDoxLEhIOjJ9LHY9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7dSh0aGlzLGUpLHRoaXMuZmFpbE9uQ29ycnVwdGVkSW1hZ2U9ITF9cmV0dXJuIGMoZSxbe2tleToicGFyc2UiLHZhbHVlOmZ1bmN0aW9uKGUpe2lmKDY1MzU5IT09KDAsaS5yZWFkVWludDE2KShlLDApKWZvcih2YXIgdD1lLmxlbmd0aCxyPTA7cjx0Oyl7dmFyIG49OCxvPSgwLGkucmVhZFVpbnQzMikoZSxyKSxzPSgwLGkucmVhZFVpbnQzMikoZSxyKzQpO2lmKHIrPW4sMT09PW8mJihvPTQyOTQ5NjcyOTYqKDAsaS5yZWFkVWludDMyKShlLHIpKygwLGkucmVhZFVpbnQzMikoZSxyKzQpLHIrPTgsbis9OCksMD09PW8mJihvPXQtcituKSxvPG4pdGhyb3cgbmV3IHAoIkludmFsaWQgYm94IGZpZWxkIHNpemUiKTt2YXIgYz1vLW4sdT0hMDtzd2l0Y2gocyl7Y2FzZSAxNzg1NzM3ODMyOnU9ITE7YnJlYWs7Y2FzZSAxNjY4MjQ2NjQyOnZhciBsPWVbcl07aWYoMT09PWwpe3ZhciBmPSgwLGkucmVhZFVpbnQzMikoZSxyKzMpO3N3aXRjaChmKXtjYXNlIDE2OmNhc2UgMTc6Y2FzZSAxODpicmVhaztkZWZhdWx0OigwLGEud2FybikoIlVua25vd24gY29sb3JzcGFjZSAiK2YpfX1lbHNlIDI9PT1sJiYoMCxhLmluZm8pKCJJQ0MgcHJvZmlsZSBub3Qgc3VwcG9ydGVkIik7YnJlYWs7Y2FzZSAxNzg1NzM3ODI3OnRoaXMucGFyc2VDb2Rlc3RyZWFtKGUscixyK2MpO2JyZWFrO2Nhc2UgMTc4MzYzNmUzOjIxODc5MzczOCE9PSgwLGkucmVhZFVpbnQzMikoZSxyKSYmKDAsYS53YXJuKSgiSW52YWxpZCBKUDIgc2lnbmF0dXJlIik7YnJlYWs7Y2FzZSAxNzgzNjM0NDU4OmNhc2UgMTcxODkwOTI5NjpjYXNlIDE5MjAwOTk2OTc6Y2FzZSAxOTE5MjUxMjMyOmNhc2UgMTc2ODQ0OTEzODpicmVhaztkZWZhdWx0OnZhciBoPVN0cmluZy5mcm9tQ2hhckNvZGUocz4+MjQmMjU1LHM+PjE2JjI1NSxzPj44JjI1NSwyNTUmcyk7KDAsYS53YXJuKSgiVW5zdXBwb3J0ZWQgaGVhZGVyIHR5cGUgIi5jb25jYXQocywiICgiKS5jb25jYXQoaCwiKS4iKSl9dSYmKHIrPWMpfWVsc2UgdGhpcy5wYXJzZUNvZGVzdHJlYW0oZSwwLGUubGVuZ3RoKX19LHtrZXk6InBhcnNlSW1hZ2VQcm9wZXJ0aWVzIix2YWx1ZTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9ZS5nZXRCeXRlKCk7dD49MDspaWYoNjUzNjE9PSh0PDw4fCh0PWUuZ2V0Qnl0ZSgpKSkpe2Uuc2tpcCg0KTt2YXIgcj1lLmdldEludDMyKCk+Pj4wLG49ZS5nZXRJbnQzMigpPj4+MCxhPWUuZ2V0SW50MzIoKT4+PjAsaT1lLmdldEludDMyKCk+Pj4wO2Uuc2tpcCgxNik7dmFyIG89ZS5nZXRVaW50MTYoKTtyZXR1cm4gdGhpcy53aWR0aD1yLWEsdGhpcy5oZWlnaHQ9bi1pLHRoaXMuY29tcG9uZW50c0NvdW50PW8sdm9pZCh0aGlzLmJpdHNQZXJDb21wb25lbnQ9OCl9dGhyb3cgbmV3IHAoIk5vIHNpemUgbWFya2VyIGZvdW5kIGluIEpQWCBzdHJlYW0iKX19LHtrZXk6InBhcnNlQ29kZXN0cmVhbSIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXt9LG89ITE7dHJ5e2Zvcih2YXIgcz10O3MrMTxyOyl7dmFyIGM9KDAsaS5yZWFkVWludDE2KShlLHMpO3MrPTI7dmFyIHU9MCxsPXZvaWQgMCxmPXZvaWQgMCxoPXZvaWQgMCxkPXZvaWQgMCxnPXZvaWQgMCx2PXZvaWQgMDtzd2l0Y2goYyl7Y2FzZSA2NTM1OTpuLm1haW5IZWFkZXI9ITA7YnJlYWs7Y2FzZSA2NTQ5NzpicmVhaztjYXNlIDY1MzYxOnU9KDAsaS5yZWFkVWludDE2KShlLHMpO3ZhciBiPXt9O2IuWHNpej0oMCxpLnJlYWRVaW50MzIpKGUscys0KSxiLllzaXo9KDAsaS5yZWFkVWludDMyKShlLHMrOCksYi5YT3Npej0oMCxpLnJlYWRVaW50MzIpKGUscysxMiksYi5ZT3Npej0oMCxpLnJlYWRVaW50MzIpKGUscysxNiksYi5YVHNpej0oMCxpLnJlYWRVaW50MzIpKGUscysyMCksYi5ZVHNpej0oMCxpLnJlYWRVaW50MzIpKGUscysyNCksYi5YVE9zaXo9KDAsaS5yZWFkVWludDMyKShlLHMrMjgpLGIuWVRPc2l6PSgwLGkucmVhZFVpbnQzMikoZSxzKzMyKTt2YXIgdz0oMCxpLnJlYWRVaW50MTYpKGUscyszNik7Yi5Dc2l6PXc7dmFyIGs9W107bD1zKzM4O2Zvcih2YXIgUz0wO1M8dztTKyspe3ZhciB4PXtwcmVjaXNpb246MSsoMTI3JmVbbF0pLGlzU2lnbmVkOiEhKDEyOCZlW2xdKSxYUnNpejplW2wrMV0sWVJzaXo6ZVtsKzJdfTtsKz0zLHkoeCxiKSxrLnB1c2goeCl9bi5TSVo9YixuLmNvbXBvbmVudHM9ayxtKG4sayksbi5RQ0M9W10sbi5DT0M9W107YnJlYWs7Y2FzZSA2NTM3Mjp1PSgwLGkucmVhZFVpbnQxNikoZSxzKTt2YXIgTz17fTtzd2l0Y2gobD1zKzIsMzEmKGY9ZVtsKytdKSl7Y2FzZSAwOmQ9OCxnPSEwO2JyZWFrO2Nhc2UgMTpkPTE2LGc9ITE7YnJlYWs7Y2FzZSAyOmQ9MTYsZz0hMDticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiSW52YWxpZCBTUWNkIHZhbHVlICIrZil9Zm9yKE8ubm9RdWFudGl6YXRpb249OD09PWQsTy5zY2FsYXJFeHBvdW5kZWQ9ZyxPLmd1YXJkQml0cz1mPj41LGg9W107bDx1K3M7KXt2YXIgQT17fTs4PT09ZD8oQS5lcHNpbG9uPWVbbCsrXT4+MyxBLm11PTApOihBLmVwc2lsb249ZVtsXT4+MyxBLm11PSg3JmVbbF0pPDw4fGVbbCsxXSxsKz0yKSxoLnB1c2goQSl9Ty5TUHFjZHM9aCxuLm1haW5IZWFkZXI/bi5RQ0Q9Tzoobi5jdXJyZW50VGlsZS5RQ0Q9TyxuLmN1cnJlbnRUaWxlLlFDQz1bXSk7YnJlYWs7Y2FzZSA2NTM3Mzp1PSgwLGkucmVhZFVpbnQxNikoZSxzKTt2YXIgQz17fTtsPXMrMjt2YXIgRj12b2lkIDA7c3dpdGNoKG4uU0laLkNzaXo8MjU3P0Y9ZVtsKytdOihGPSgwLGkucmVhZFVpbnQxNikoZSxsKSxsKz0yKSwzMSYoZj1lW2wrK10pKXtjYXNlIDA6ZD04LGc9ITA7YnJlYWs7Y2FzZSAxOmQ9MTYsZz0hMTticmVhaztjYXNlIDI6ZD0xNixnPSEwO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIFNRY2QgdmFsdWUgIitmKX1mb3IoQy5ub1F1YW50aXphdGlvbj04PT09ZCxDLnNjYWxhckV4cG91bmRlZD1nLEMuZ3VhcmRCaXRzPWY+PjUsaD1bXTtsPHUrczspe3ZhciBQPXt9Ozg9PT1kPyhQLmVwc2lsb249ZVtsKytdPj4zLFAubXU9MCk6KFAuZXBzaWxvbj1lW2xdPj4zLFAubXU9KDcmZVtsXSk8PDh8ZVtsKzFdLGwrPTIpLGgucHVzaChQKX1DLlNQcWNkcz1oLG4ubWFpbkhlYWRlcj9uLlFDQ1tGXT1DOm4uY3VycmVudFRpbGUuUUNDW0ZdPUM7YnJlYWs7Y2FzZSA2NTM2Mjp1PSgwLGkucmVhZFVpbnQxNikoZSxzKTt2YXIgVD17fTtsPXMrMjt2YXIgaj1lW2wrK107VC5lbnRyb3B5Q29kZXJXaXRoQ3VzdG9tUHJlY2luY3RzPSEhKDEmaiksVC5zb3BNYXJrZXJVc2VkPSEhKDImaiksVC5lcGhNYXJrZXJVc2VkPSEhKDQmaiksVC5wcm9ncmVzc2lvbk9yZGVyPWVbbCsrXSxULmxheWVyc0NvdW50PSgwLGkucmVhZFVpbnQxNikoZSxsKSxsKz0yLFQubXVsdGlwbGVDb21wb25lbnRUcmFuc2Zvcm09ZVtsKytdLFQuZGVjb21wb3NpdGlvbkxldmVsc0NvdW50PWVbbCsrXSxULnhjYj0yKygxNSZlW2wrK10pLFQueWNiPTIrKDE1JmVbbCsrXSk7dmFyIEw9ZVtsKytdO2lmKFQuc2VsZWN0aXZlQXJpdGhtZXRpY0NvZGluZ0J5cGFzcz0hISgxJkwpLFQucmVzZXRDb250ZXh0UHJvYmFiaWxpdGllcz0hISgyJkwpLFQudGVybWluYXRpb25PbkVhY2hDb2RpbmdQYXNzPSEhKDQmTCksVC52ZXJ0aWNhbGx5U3RyaXBlPSEhKDgmTCksVC5wcmVkaWN0YWJsZVRlcm1pbmF0aW9uPSEhKDE2JkwpLFQuc2VnbWVudGF0aW9uU3ltYm9sVXNlZD0hISgzMiZMKSxULnJldmVyc2libGVUcmFuc2Zvcm1hdGlvbj1lW2wrK10sVC5lbnRyb3B5Q29kZXJXaXRoQ3VzdG9tUHJlY2luY3RzKXtmb3IodmFyIFI9W107bDx1K3M7KXt2YXIgTj1lW2wrK107Ui5wdXNoKHtQUHg6MTUmTixQUHk6Tj4+NH0pfVQucHJlY2luY3RzU2l6ZXM9Un12YXIgRD1bXTtULnNlbGVjdGl2ZUFyaXRobWV0aWNDb2RpbmdCeXBhc3MmJkQucHVzaCgic2VsZWN0aXZlQXJpdGhtZXRpY0NvZGluZ0J5cGFzcyIpLFQudGVybWluYXRpb25PbkVhY2hDb2RpbmdQYXNzJiZELnB1c2goInRlcm1pbmF0aW9uT25FYWNoQ29kaW5nUGFzcyIpLFQudmVydGljYWxseVN0cmlwZSYmRC5wdXNoKCJ2ZXJ0aWNhbGx5U3RyaXBlIiksVC5wcmVkaWN0YWJsZVRlcm1pbmF0aW9uJiZELnB1c2goInByZWRpY3RhYmxlVGVybWluYXRpb24iKSxELmxlbmd0aD4wJiYobz0hMCwoMCxhLndhcm4pKCJKUFg6IFVuc3VwcG9ydGVkIENPRCBvcHRpb25zICgiLmNvbmNhdChELmpvaW4oIiwgIiksIikuIikpKSxuLm1haW5IZWFkZXI/bi5DT0Q9VDoobi5jdXJyZW50VGlsZS5DT0Q9VCxuLmN1cnJlbnRUaWxlLkNPQz1bXSk7YnJlYWs7Y2FzZSA2NTQyNDp1PSgwLGkucmVhZFVpbnQxNikoZSxzKSwodj17fSkuaW5kZXg9KDAsaS5yZWFkVWludDE2KShlLHMrMiksdi5sZW5ndGg9KDAsaS5yZWFkVWludDMyKShlLHMrNCksdi5kYXRhRW5kPXYubGVuZ3RoK3MtMix2LnBhcnRJbmRleD1lW3MrOF0sdi5wYXJ0c0NvdW50PWVbcys5XSxuLm1haW5IZWFkZXI9ITEsMD09PXYucGFydEluZGV4JiYodi5DT0Q9bi5DT0Qsdi5DT0M9bi5DT0Muc2xpY2UoMCksdi5RQ0Q9bi5RQ0Qsdi5RQ0M9bi5RQ0Muc2xpY2UoMCkpLG4uY3VycmVudFRpbGU9djticmVhaztjYXNlIDY1NDI3OjA9PT0odj1uLmN1cnJlbnRUaWxlKS5wYXJ0SW5kZXgmJihfKG4sdi5pbmRleCksSShuKSksRShuLGUscyx1PXYuZGF0YUVuZC1zKTticmVhaztjYXNlIDY1MzYzOigwLGEud2FybikoIkpQWDogQ29kZXN0cmVhbSBjb2RlIDB4RkY1MyAoQ09DKSBpcyBub3QgaW1wbGVtZW50ZWQuIik7Y2FzZSA2NTM2NTpjYXNlIDY1MzY3OmNhc2UgNjUzNjg6Y2FzZSA2NTM4MDp1PSgwLGkucmVhZFVpbnQxNikoZSxzKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5rbm93biBjb2Rlc3RyZWFtIGNvZGU6ICIrYy50b1N0cmluZygxNikpfXMrPXV9fWNhdGNoKGUpe2lmKG98fHRoaXMuZmFpbE9uQ29ycnVwdGVkSW1hZ2UpdGhyb3cgbmV3IHAoZS5tZXNzYWdlKTsoMCxhLndhcm4pKCdKUFg6IFRyeWluZyB0byByZWNvdmVyIGZyb206ICInLmNvbmNhdChlLm1lc3NhZ2UsJyIuJykpfXRoaXMudGlsZXM9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PWUuU0laLHI9ZS5jb21wb25lbnRzLG49dC5Dc2l6LGE9W10saT0wLG89ZS50aWxlcy5sZW5ndGg7aTxvO2krKyl7Zm9yKHZhciBzPWUudGlsZXNbaV0sYz1bXSx1PTA7dTxuO3UrKyljW3VdPU0oZSxzLHUpO3ZhciBsPWNbMF0sZj1uZXcgVWludDhDbGFtcGVkQXJyYXkobC5pdGVtcy5sZW5ndGgqbiksaD17bGVmdDpsLmxlZnQsdG9wOmwudG9wLHdpZHRoOmwud2lkdGgsaGVpZ2h0OmwuaGVpZ2h0LGl0ZW1zOmZ9LGQ9dm9pZCAwLHA9dm9pZCAwLGc9MCx2PXZvaWQgMCx5PXZvaWQgMCxtPXZvaWQgMCxiPXZvaWQgMCx3PXZvaWQgMDtpZihzLmNvZGluZ1N0eWxlRGVmYXVsdFBhcmFtZXRlcnMubXVsdGlwbGVDb21wb25lbnRUcmFuc2Zvcm0pe3ZhciBrPTQ9PT1uLFM9Y1swXS5pdGVtcyx4PWNbMV0uaXRlbXMsTz1jWzJdLml0ZW1zLEE9az9jWzNdLml0ZW1zOm51bGw7cD0uNSsoMTI4PDwoZD1yWzBdLnByZWNpc2lvbi04KSk7dmFyIEM9cy5jb21wb25lbnRzWzBdLEY9bi0zO2lmKHk9Uy5sZW5ndGgsQy5jb2RpbmdTdHlsZVBhcmFtZXRlcnMucmV2ZXJzaWJsZVRyYW5zZm9ybWF0aW9uKWZvcih2PTA7djx5O3YrKyxnKz1GKXttPVNbdl0rcCxiPXhbdl07dmFyIFA9bS0oKHc9T1t2XSkrYj4+Mik7ZltnKytdPVArdz4+ZCxmW2crK109UD4+ZCxmW2crK109UCtiPj5kfWVsc2UgZm9yKHY9MDt2PHk7disrLGcrPUYpbT1TW3ZdK3AsYj14W3ZdLHc9T1t2XSxmW2crK109bSsxLjQwMip3Pj5kLGZbZysrXT1tLS4zNDQxMypiLS43MTQxNCp3Pj5kLGZbZysrXT1tKzEuNzcyKmI+PmQ7aWYoaylmb3Iodj0wLGc9Mzt2PHk7disrLGcrPTQpZltnXT1BW3ZdK3A+PmR9ZWxzZSBmb3IodmFyIFQ9MDtUPG47VCsrKXt2YXIgST1jW1RdLml0ZW1zO2ZvcihwPS41KygxMjg8PChkPXJbVF0ucHJlY2lzaW9uLTgpKSxnPVQsdj0wLHk9SS5sZW5ndGg7djx5O3YrKylmW2ddPUlbdl0rcD4+ZCxnKz1ufWEucHVzaChoKX1yZXR1cm4gYX0obiksdGhpcy53aWR0aD1uLlNJWi5Yc2l6LW4uU0laLlhPc2l6LHRoaXMuaGVpZ2h0PW4uU0laLllzaXotbi5TSVouWU9zaXosdGhpcy5jb21wb25lbnRzQ291bnQ9bi5TSVouQ3Npen19XSksZX0oKTtmdW5jdGlvbiB5KGUsdCl7ZS54MD1NYXRoLmNlaWwodC5YT3Npei9lLlhSc2l6KSxlLngxPU1hdGguY2VpbCh0LlhzaXovZS5YUnNpeiksZS55MD1NYXRoLmNlaWwodC5ZT3Npei9lLllSc2l6KSxlLnkxPU1hdGguY2VpbCh0LllzaXovZS5ZUnNpeiksZS53aWR0aD1lLngxLWUueDAsZS5oZWlnaHQ9ZS55MS1lLnkwfWZ1bmN0aW9uIG0oZSx0KXtmb3IodmFyIHIsbj1lLlNJWixhPVtdLGk9TWF0aC5jZWlsKChuLlhzaXotbi5YVE9zaXopL24uWFRzaXopLG89TWF0aC5jZWlsKChuLllzaXotbi5ZVE9zaXopL24uWVRzaXopLHM9MDtzPG87cysrKWZvcih2YXIgYz0wO2M8aTtjKyspKHI9e30pLnR4MD1NYXRoLm1heChuLlhUT3NpeitjKm4uWFRzaXosbi5YT3Npeiksci50eTA9TWF0aC5tYXgobi5ZVE9zaXorcypuLllUc2l6LG4uWU9zaXopLHIudHgxPU1hdGgubWluKG4uWFRPc2l6KyhjKzEpKm4uWFRzaXosbi5Yc2l6KSxyLnR5MT1NYXRoLm1pbihuLllUT3NpeisocysxKSpuLllUc2l6LG4uWXNpeiksci53aWR0aD1yLnR4MS1yLnR4MCxyLmhlaWdodD1yLnR5MS1yLnR5MCxyLmNvbXBvbmVudHM9W10sYS5wdXNoKHIpO2UudGlsZXM9YTtmb3IodmFyIHU9MCxsPW4uQ3Npejt1PGw7dSsrKWZvcih2YXIgZj10W3VdLGg9MCxkPWEubGVuZ3RoO2g8ZDtoKyspe3ZhciBwPXt9O3I9YVtoXSxwLnRjeDA9TWF0aC5jZWlsKHIudHgwL2YuWFJzaXopLHAudGN5MD1NYXRoLmNlaWwoci50eTAvZi5ZUnNpeikscC50Y3gxPU1hdGguY2VpbChyLnR4MS9mLlhSc2l6KSxwLnRjeTE9TWF0aC5jZWlsKHIudHkxL2YuWVJzaXopLHAud2lkdGg9cC50Y3gxLXAudGN4MCxwLmhlaWdodD1wLnRjeTEtcC50Y3kwLHIuY29tcG9uZW50c1t1XT1wfX1mdW5jdGlvbiBiKGUsdCxyKXt2YXIgbj10LmNvZGluZ1N0eWxlUGFyYW1ldGVycyxhPXt9O3JldHVybiBuLmVudHJvcHlDb2RlcldpdGhDdXN0b21QcmVjaW5jdHM/KGEuUFB4PW4ucHJlY2luY3RzU2l6ZXNbcl0uUFB4LGEuUFB5PW4ucHJlY2luY3RzU2l6ZXNbcl0uUFB5KTooYS5QUHg9MTUsYS5QUHk9MTUpLGEueGNiXz1yPjA/TWF0aC5taW4obi54Y2IsYS5QUHgtMSk6TWF0aC5taW4obi54Y2IsYS5QUHgpLGEueWNiXz1yPjA/TWF0aC5taW4obi55Y2IsYS5QUHktMSk6TWF0aC5taW4obi55Y2IsYS5QUHkpLGF9ZnVuY3Rpb24gdyhlLHQscil7dmFyIG49MTw8ci5QUHgsYT0xPDxyLlBQeSxpPTA9PT10LnJlc0xldmVsLG89MTw8ci5QUHgrKGk/MDotMSkscz0xPDxyLlBQeSsoaT8wOi0xKSxjPXQudHJ4MT50LnRyeDA/TWF0aC5jZWlsKHQudHJ4MS9uKS1NYXRoLmZsb29yKHQudHJ4MC9uKTowLHU9dC50cnkxPnQudHJ5MD9NYXRoLmNlaWwodC50cnkxL2EpLU1hdGguZmxvb3IodC50cnkwL2EpOjAsbD1jKnU7dC5wcmVjaW5jdFBhcmFtZXRlcnM9e3ByZWNpbmN0V2lkdGg6bixwcmVjaW5jdEhlaWdodDphLG51bXByZWNpbmN0c3dpZGU6YyxudW1wcmVjaW5jdHNoaWdoOnUsbnVtcHJlY2luY3RzOmwscHJlY2luY3RXaWR0aEluU3ViYmFuZDpvLHByZWNpbmN0SGVpZ2h0SW5TdWJiYW5kOnN9fWZ1bmN0aW9uIGsoZSx0LHIpe3ZhciBuLGEsaSxvLHM9ci54Y2JfLGM9ci55Y2JfLHU9MTw8cyxsPTE8PGMsZj10LnRieDA+PnMsaD10LnRieTA+PmMsZD10LnRieDErdS0xPj5zLHA9dC50YnkxK2wtMT4+YyxnPXQucmVzb2x1dGlvbi5wcmVjaW5jdFBhcmFtZXRlcnMsdj1bXSx5PVtdO2ZvcihhPWg7YTxwO2ErKylmb3Iobj1mO248ZDtuKyspaWYoKGk9e2NieDpuLGNieTphLHRieDA6dSpuLHRieTA6bCphLHRieDE6dSoobisxKSx0YnkxOmwqKGErMSl9KS50YngwXz1NYXRoLm1heCh0LnRieDAsaS50YngwKSxpLnRieTBfPU1hdGgubWF4KHQudGJ5MCxpLnRieTApLGkudGJ4MV89TWF0aC5taW4odC50YngxLGkudGJ4MSksaS50YnkxXz1NYXRoLm1pbih0LnRieTEsaS50YnkxKSxvPU1hdGguZmxvb3IoKGkudGJ4MF8tdC50YngwKS9nLnByZWNpbmN0V2lkdGhJblN1YmJhbmQpK01hdGguZmxvb3IoKGkudGJ5MF8tdC50YnkwKS9nLnByZWNpbmN0SGVpZ2h0SW5TdWJiYW5kKSpnLm51bXByZWNpbmN0c3dpZGUsaS5wcmVjaW5jdE51bWJlcj1vLGkuc3ViYmFuZFR5cGU9dC50eXBlLGkuTGJsb2NrPTMsIShpLnRieDFfPD1pLnRieDBffHxpLnRieTFfPD1pLnRieTBfKSl7di5wdXNoKGkpO3ZhciBtPXlbb107dm9pZCAwIT09bT8objxtLmNieE1pbj9tLmNieE1pbj1uOm4+bS5jYnhNYXgmJihtLmNieE1heD1uKSxhPG0uY2J5TWluP20uY2J4TWluPWE6YT5tLmNieU1heCYmKG0uY2J5TWF4PWEpKTp5W29dPW09e2NieE1pbjpuLGNieU1pbjphLGNieE1heDpuLGNieU1heDphfSxpLnByZWNpbmN0PW19dC5jb2RlYmxvY2tQYXJhbWV0ZXJzPXtjb2RlYmxvY2tXaWR0aDpzLGNvZGVibG9ja0hlaWdodDpjLG51bWNvZGVibG9ja3dpZGU6ZC1mKzEsbnVtY29kZWJsb2NraGlnaDpwLWgrMX0sdC5jb2RlYmxvY2tzPXYsdC5wcmVjaW5jdHM9eX1mdW5jdGlvbiBTKGUsdCxyKXtmb3IodmFyIG49W10sYT1lLnN1YmJhbmRzLGk9MCxvPWEubGVuZ3RoO2k8bztpKyspZm9yKHZhciBzPWFbaV0uY29kZWJsb2NrcyxjPTAsdT1zLmxlbmd0aDtjPHU7YysrKXt2YXIgbD1zW2NdO2wucHJlY2luY3ROdW1iZXI9PT10JiZuLnB1c2gobCl9cmV0dXJue2xheWVyTnVtYmVyOnIsY29kZWJsb2NrczpufX1mdW5jdGlvbiB4KGUpe2Zvcih2YXIgdD1lLlNJWixyPWUuY3VycmVudFRpbGUuaW5kZXgsbj1lLnRpbGVzW3JdLGE9bi5jb2RpbmdTdHlsZURlZmF1bHRQYXJhbWV0ZXJzLmxheWVyc0NvdW50LGk9dC5Dc2l6LG89MCxzPTA7czxpO3MrKylvPU1hdGgubWF4KG8sbi5jb21wb25lbnRzW3NdLmNvZGluZ1N0eWxlUGFyYW1ldGVycy5kZWNvbXBvc2l0aW9uTGV2ZWxzQ291bnQpO3ZhciBjPTAsdT0wLGw9MCxmPTA7dGhpcy5uZXh0UGFja2V0PWZ1bmN0aW9uKCl7Zm9yKDtjPGE7YysrKXtmb3IoO3U8PW87dSsrKXtmb3IoO2w8aTtsKyspe3ZhciBlPW4uY29tcG9uZW50c1tsXTtpZighKHU+ZS5jb2RpbmdTdHlsZVBhcmFtZXRlcnMuZGVjb21wb3NpdGlvbkxldmVsc0NvdW50KSl7Zm9yKHZhciB0PWUucmVzb2x1dGlvbnNbdV0scj10LnByZWNpbmN0UGFyYW1ldGVycy5udW1wcmVjaW5jdHM7ZjxyOyl7dmFyIHM9Uyh0LGYsYyk7cmV0dXJuIGYrKyxzfWY9MH19bD0wfXU9MH10aHJvdyBuZXcgcCgiT3V0IG9mIHBhY2tldHMiKX19ZnVuY3Rpb24gTyhlKXtmb3IodmFyIHQ9ZS5TSVoscj1lLmN1cnJlbnRUaWxlLmluZGV4LG49ZS50aWxlc1tyXSxhPW4uY29kaW5nU3R5bGVEZWZhdWx0UGFyYW1ldGVycy5sYXllcnNDb3VudCxpPXQuQ3NpeixvPTAscz0wO3M8aTtzKyspbz1NYXRoLm1heChvLG4uY29tcG9uZW50c1tzXS5jb2RpbmdTdHlsZVBhcmFtZXRlcnMuZGVjb21wb3NpdGlvbkxldmVsc0NvdW50KTt2YXIgYz0wLHU9MCxsPTAsZj0wO3RoaXMubmV4dFBhY2tldD1mdW5jdGlvbigpe2Zvcig7Yzw9bztjKyspe2Zvcig7dTxhO3UrKyl7Zm9yKDtsPGk7bCsrKXt2YXIgZT1uLmNvbXBvbmVudHNbbF07aWYoIShjPmUuY29kaW5nU3R5bGVQYXJhbWV0ZXJzLmRlY29tcG9zaXRpb25MZXZlbHNDb3VudCkpe2Zvcih2YXIgdD1lLnJlc29sdXRpb25zW2NdLHI9dC5wcmVjaW5jdFBhcmFtZXRlcnMubnVtcHJlY2luY3RzO2Y8cjspe3ZhciBzPVModCxmLHUpO3JldHVybiBmKyssc31mPTB9fWw9MH11PTB9dGhyb3cgbmV3IHAoIk91dCBvZiBwYWNrZXRzIil9fWZ1bmN0aW9uIEEoZSl7dmFyIHQscixuLGEsaT1lLlNJWixvPWUuY3VycmVudFRpbGUuaW5kZXgscz1lLnRpbGVzW29dLGM9cy5jb2RpbmdTdHlsZURlZmF1bHRQYXJhbWV0ZXJzLmxheWVyc0NvdW50LHU9aS5Dc2l6LGw9MDtmb3Iobj0wO248dTtuKyspe3ZhciBmPXMuY29tcG9uZW50c1tuXTtsPU1hdGgubWF4KGwsZi5jb2RpbmdTdHlsZVBhcmFtZXRlcnMuZGVjb21wb3NpdGlvbkxldmVsc0NvdW50KX12YXIgaD1uZXcgSW50MzJBcnJheShsKzEpO2ZvcihyPTA7cjw9bDsrK3Ipe3ZhciBkPTA7Zm9yKG49MDtuPHU7KytuKXt2YXIgZz1zLmNvbXBvbmVudHNbbl0ucmVzb2x1dGlvbnM7cjxnLmxlbmd0aCYmKGQ9TWF0aC5tYXgoZCxnW3JdLnByZWNpbmN0UGFyYW1ldGVycy5udW1wcmVjaW5jdHMpKX1oW3JdPWR9dD0wLHI9MCxuPTAsYT0wLHRoaXMubmV4dFBhY2tldD1mdW5jdGlvbigpe2Zvcig7cjw9bDtyKyspe2Zvcig7YTxoW3JdO2ErKyl7Zm9yKDtuPHU7bisrKXt2YXIgZT1zLmNvbXBvbmVudHNbbl07aWYoIShyPmUuY29kaW5nU3R5bGVQYXJhbWV0ZXJzLmRlY29tcG9zaXRpb25MZXZlbHNDb3VudCkpe3ZhciBpPWUucmVzb2x1dGlvbnNbcl0sbz1pLnByZWNpbmN0UGFyYW1ldGVycy5udW1wcmVjaW5jdHM7aWYoIShhPj1vKSl7Zm9yKDt0PGM7KXt2YXIgZj1TKGksYSx0KTtyZXR1cm4gdCsrLGZ9dD0wfX19bj0wfWE9MH10aHJvdyBuZXcgcCgiT3V0IG9mIHBhY2tldHMiKX19ZnVuY3Rpb24gQyhlKXt2YXIgdD1lLlNJWixyPWUuY3VycmVudFRpbGUuaW5kZXgsbj1lLnRpbGVzW3JdLGE9bi5jb2RpbmdTdHlsZURlZmF1bHRQYXJhbWV0ZXJzLmxheWVyc0NvdW50LGk9dC5Dc2l6LG89VChuKSxzPW8sYz0wLHU9MCxsPTAsZj0wLGg9MDt0aGlzLm5leHRQYWNrZXQ9ZnVuY3Rpb24oKXtmb3IoO2g8cy5tYXhOdW1IaWdoO2grKyl7Zm9yKDtmPHMubWF4TnVtV2lkZTtmKyspe2Zvcig7bDxpO2wrKyl7Zm9yKHZhciBlPW4uY29tcG9uZW50c1tsXSx0PWUuY29kaW5nU3R5bGVQYXJhbWV0ZXJzLmRlY29tcG9zaXRpb25MZXZlbHNDb3VudDt1PD10O3UrKyl7dmFyIHI9ZS5yZXNvbHV0aW9uc1t1XSxkPW8uY29tcG9uZW50c1tsXS5yZXNvbHV0aW9uc1t1XSxnPVAoZixoLGQscyxyKTtpZihudWxsIT09Zyl7Zm9yKDtjPGE7KXt2YXIgdj1TKHIsZyxjKTtyZXR1cm4gYysrLHZ9Yz0wfX11PTB9bD0wfWY9MH10aHJvdyBuZXcgcCgiT3V0IG9mIHBhY2tldHMiKX19ZnVuY3Rpb24gRihlKXt2YXIgdD1lLlNJWixyPWUuY3VycmVudFRpbGUuaW5kZXgsbj1lLnRpbGVzW3JdLGE9bi5jb2RpbmdTdHlsZURlZmF1bHRQYXJhbWV0ZXJzLmxheWVyc0NvdW50LGk9dC5Dc2l6LG89VChuKSxzPTAsYz0wLHU9MCxsPTAsZj0wO3RoaXMubmV4dFBhY2tldD1mdW5jdGlvbigpe2Zvcig7dTxpOysrdSl7Zm9yKHZhciBlPW4uY29tcG9uZW50c1t1XSx0PW8uY29tcG9uZW50c1t1XSxyPWUuY29kaW5nU3R5bGVQYXJhbWV0ZXJzLmRlY29tcG9zaXRpb25MZXZlbHNDb3VudDtmPHQubWF4TnVtSGlnaDtmKyspe2Zvcig7bDx0Lm1heE51bVdpZGU7bCsrKXtmb3IoO2M8PXI7YysrKXt2YXIgaD1lLnJlc29sdXRpb25zW2NdLGQ9dC5yZXNvbHV0aW9uc1tjXSxnPVAobCxmLGQsdCxoKTtpZihudWxsIT09Zyl7Zm9yKDtzPGE7KXt2YXIgdj1TKGgsZyxzKTtyZXR1cm4gcysrLHZ9cz0wfX1jPTB9bD0wfWY9MH10aHJvdyBuZXcgcCgiT3V0IG9mIHBhY2tldHMiKX19ZnVuY3Rpb24gUChlLHQscixuLGEpe3ZhciBpPWUqbi5taW5XaWR0aCxvPXQqbi5taW5IZWlnaHQ7aWYoaSVyLndpZHRoIT0wfHxvJXIuaGVpZ2h0IT0wKXJldHVybiBudWxsO3ZhciBzPW8vci53aWR0aCphLnByZWNpbmN0UGFyYW1ldGVycy5udW1wcmVjaW5jdHN3aWRlO3JldHVybiBpL3IuaGVpZ2h0K3N9ZnVuY3Rpb24gVChlKXtmb3IodmFyIHQ9ZS5jb21wb25lbnRzLmxlbmd0aCxyPU51bWJlci5NQVhfVkFMVUUsbj1OdW1iZXIuTUFYX1ZBTFVFLGE9MCxpPTAsbz1uZXcgQXJyYXkodCkscz0wO3M8dDtzKyspe2Zvcih2YXIgYz1lLmNvbXBvbmVudHNbc10sdT1jLmNvZGluZ1N0eWxlUGFyYW1ldGVycy5kZWNvbXBvc2l0aW9uTGV2ZWxzQ291bnQsbD1uZXcgQXJyYXkodSsxKSxmPU51bWJlci5NQVhfVkFMVUUsaD1OdW1iZXIuTUFYX1ZBTFVFLGQ9MCxwPTAsZz0xLHY9dTt2Pj0wOy0tdil7dmFyIHk9Yy5yZXNvbHV0aW9uc1t2XSxtPWcqeS5wcmVjaW5jdFBhcmFtZXRlcnMucHJlY2luY3RXaWR0aCxiPWcqeS5wcmVjaW5jdFBhcmFtZXRlcnMucHJlY2luY3RIZWlnaHQ7Zj1NYXRoLm1pbihmLG0pLGg9TWF0aC5taW4oaCxiKSxkPU1hdGgubWF4KGQseS5wcmVjaW5jdFBhcmFtZXRlcnMubnVtcHJlY2luY3Rzd2lkZSkscD1NYXRoLm1heChwLHkucHJlY2luY3RQYXJhbWV0ZXJzLm51bXByZWNpbmN0c2hpZ2gpLGxbdl09e3dpZHRoOm0saGVpZ2h0OmJ9LGc8PD0xfXI9TWF0aC5taW4ocixmKSxuPU1hdGgubWluKG4saCksYT1NYXRoLm1heChhLGQpLGk9TWF0aC5tYXgoaSxwKSxvW3NdPXtyZXNvbHV0aW9uczpsLG1pbldpZHRoOmYsbWluSGVpZ2h0OmgsbWF4TnVtV2lkZTpkLG1heE51bUhpZ2g6cH19cmV0dXJue2NvbXBvbmVudHM6byxtaW5XaWR0aDpyLG1pbkhlaWdodDpuLG1heE51bVdpZGU6YSxtYXhOdW1IaWdoOml9fWZ1bmN0aW9uIEkoZSl7Zm9yKHZhciB0PWUuU0laLHI9ZS5jdXJyZW50VGlsZS5pbmRleCxuPWUudGlsZXNbcl0sYT10LkNzaXosaT0wO2k8YTtpKyspe2Zvcih2YXIgbz1uLmNvbXBvbmVudHNbaV0scz1vLmNvZGluZ1N0eWxlUGFyYW1ldGVycy5kZWNvbXBvc2l0aW9uTGV2ZWxzQ291bnQsYz1bXSx1PVtdLGw9MDtsPD1zO2wrKyl7dmFyIGY9YigwLG8sbCksaD17fSxkPTE8PHMtbDtoLnRyeDA9TWF0aC5jZWlsKG8udGN4MC9kKSxoLnRyeTA9TWF0aC5jZWlsKG8udGN5MC9kKSxoLnRyeDE9TWF0aC5jZWlsKG8udGN4MS9kKSxoLnRyeTE9TWF0aC5jZWlsKG8udGN5MS9kKSxoLnJlc0xldmVsPWwsdygwLGgsZiksYy5wdXNoKGgpO3ZhciBnPXZvaWQgMDtpZigwPT09bCkoZz17fSkudHlwZT0iTEwiLGcudGJ4MD1NYXRoLmNlaWwoby50Y3gwL2QpLGcudGJ5MD1NYXRoLmNlaWwoby50Y3kwL2QpLGcudGJ4MT1NYXRoLmNlaWwoby50Y3gxL2QpLGcudGJ5MT1NYXRoLmNlaWwoby50Y3kxL2QpLGcucmVzb2x1dGlvbj1oLGsoMCxnLGYpLHUucHVzaChnKSxoLnN1YmJhbmRzPVtnXTtlbHNle3ZhciB2PTE8PHMtbCsxLHk9W107KGc9e30pLnR5cGU9IkhMIixnLnRieDA9TWF0aC5jZWlsKG8udGN4MC92LS41KSxnLnRieTA9TWF0aC5jZWlsKG8udGN5MC92KSxnLnRieDE9TWF0aC5jZWlsKG8udGN4MS92LS41KSxnLnRieTE9TWF0aC5jZWlsKG8udGN5MS92KSxnLnJlc29sdXRpb249aCxrKDAsZyxmKSx1LnB1c2goZykseS5wdXNoKGcpLChnPXt9KS50eXBlPSJMSCIsZy50YngwPU1hdGguY2VpbChvLnRjeDAvdiksZy50YnkwPU1hdGguY2VpbChvLnRjeTAvdi0uNSksZy50YngxPU1hdGguY2VpbChvLnRjeDEvdiksZy50YnkxPU1hdGguY2VpbChvLnRjeTEvdi0uNSksZy5yZXNvbHV0aW9uPWgsaygwLGcsZiksdS5wdXNoKGcpLHkucHVzaChnKSwoZz17fSkudHlwZT0iSEgiLGcudGJ4MD1NYXRoLmNlaWwoby50Y3gwL3YtLjUpLGcudGJ5MD1NYXRoLmNlaWwoby50Y3kwL3YtLjUpLGcudGJ4MT1NYXRoLmNlaWwoby50Y3gxL3YtLjUpLGcudGJ5MT1NYXRoLmNlaWwoby50Y3kxL3YtLjUpLGcucmVzb2x1dGlvbj1oLGsoMCxnLGYpLHUucHVzaChnKSx5LnB1c2goZyksaC5zdWJiYW5kcz15fX1vLnJlc29sdXRpb25zPWMsby5zdWJiYW5kcz11fXZhciBtPW4uY29kaW5nU3R5bGVEZWZhdWx0UGFyYW1ldGVycy5wcm9ncmVzc2lvbk9yZGVyO3N3aXRjaChtKXtjYXNlIDA6bi5wYWNrZXRzSXRlcmF0b3I9bmV3IHgoZSk7YnJlYWs7Y2FzZSAxOm4ucGFja2V0c0l0ZXJhdG9yPW5ldyBPKGUpO2JyZWFrO2Nhc2UgMjpuLnBhY2tldHNJdGVyYXRvcj1uZXcgQShlKTticmVhaztjYXNlIDM6bi5wYWNrZXRzSXRlcmF0b3I9bmV3IEMoZSk7YnJlYWs7Y2FzZSA0Om4ucGFja2V0c0l0ZXJhdG9yPW5ldyBGKGUpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IHAoIlVuc3VwcG9ydGVkIHByb2dyZXNzaW9uIG9yZGVyICIuY29uY2F0KG0pKX19ZnVuY3Rpb24gRShlLHQscixuKXt2YXIgYSxvPTAscz0wLGM9ITE7ZnVuY3Rpb24gdShlKXtmb3IoO3M8ZTspe3ZhciBuPXRbcitvXTtvKyssYz8oYT1hPDw3fG4scys9NyxjPSExKTooYT1hPDw4fG4scys9OCksMjU1PT09biYmKGM9ITApfXJldHVybiBhPj4+KHMtPWUpJigxPDxlKS0xfWZ1bmN0aW9uIGwoZSl7cmV0dXJuIDI1NT09PXRbcitvLTFdJiZ0W3Irb109PT1lPyhmKDEpLCEwKToyNTU9PT10W3Irb10mJnRbcitvKzFdPT09ZSYmKGYoMiksITApfWZ1bmN0aW9uIGYoZSl7bys9ZX1mdW5jdGlvbiBoKCl7cz0wLGMmJihvKyssYz0hMSl9ZnVuY3Rpb24gZCgpe2lmKDA9PT11KDEpKXJldHVybiAxO2lmKDA9PT11KDEpKXJldHVybiAyO3ZhciBlPXUoMik7cmV0dXJuIGU8Mz9lKzM6KGU9dSg1KSk8MzE/ZSs2OihlPXUoNykpKzM3fWZvcih2YXIgZz1lLmN1cnJlbnRUaWxlLmluZGV4LHY9ZS50aWxlc1tnXSx5PWUuQ09ELnNvcE1hcmtlclVzZWQsbT1lLkNPRC5lcGhNYXJrZXJVc2VkLGI9di5wYWNrZXRzSXRlcmF0b3I7bzxuOyl7aCgpLHkmJmwoMTQ1KSYmZig0KTt2YXIgdz1iLm5leHRQYWNrZXQoKTtpZih1KDEpKXtmb3IodmFyIGs9dy5sYXllck51bWJlcixTPVtdLHg9dm9pZCAwLE89MCxBPXcuY29kZWJsb2Nrcy5sZW5ndGg7TzxBO08rKyl7dmFyIEM9KHg9dy5jb2RlYmxvY2tzW09dKS5wcmVjaW5jdCxGPXguY2J4LUMuY2J4TWluLFA9eC5jYnktQy5jYnlNaW4sVD0hMSxJPSExLEU9dm9pZCAwO2lmKHZvaWQgMCE9PXguaW5jbHVkZWQpVD0hIXUoMSk7ZWxzZXt2YXIgaj12b2lkIDA7aWYodm9pZCAwIT09KEM9eC5wcmVjaW5jdCkuaW5jbHVzaW9uVHJlZSlqPUMuaW5jbHVzaW9uVHJlZTtlbHNle3ZhciBNPUMuY2J4TWF4LUMuY2J4TWluKzEsXz1DLmNieU1heC1DLmNieU1pbisxO2o9bmV3IFUoTSxfLGspLEU9bmV3IEIoTSxfKSxDLmluY2x1c2lvblRyZWU9aixDLnplcm9CaXRQbGFuZXNUcmVlPUU7Zm9yKHZhciBMPTA7TDxrO0wrKylpZigwIT09dSgxKSl0aHJvdyBuZXcgcCgiSW52YWxpZCB0YWcgdHJlZSIpfWlmKGoucmVzZXQoRixQLGspKWZvcig7Oyl7aWYoIXUoMSkpe2ouaW5jcmVtZW50VmFsdWUoayk7YnJlYWt9aWYoIWoubmV4dExldmVsKCkpe3guaW5jbHVkZWQ9ITAsVD1JPSEwO2JyZWFrfX19aWYoVCl7aWYoSSl7Zm9yKChFPUMuemVyb0JpdFBsYW5lc1RyZWUpLnJlc2V0KEYsUCk7OylpZih1KDEpKXtpZighRS5uZXh0TGV2ZWwoKSlicmVha31lbHNlIEUuaW5jcmVtZW50VmFsdWUoKTt4Lnplcm9CaXRQbGFuZXM9RS52YWx1ZX1mb3IodmFyIFI9ZCgpO3UoMSk7KXguTGJsb2NrKys7dmFyIE49KDAsaS5sb2cyKShSKSxEPXUoKFI8MTw8Tj9OLTE6TikreC5MYmxvY2spO1MucHVzaCh7Y29kZWJsb2NrOngsY29kaW5ncGFzc2VzOlIsZGF0YUxlbmd0aDpEfSl9fWZvcihoKCksbSYmbCgxNDYpO1MubGVuZ3RoPjA7KXt2YXIgJD1TLnNoaWZ0KCk7dm9pZCAwPT09KHg9JC5jb2RlYmxvY2spLmRhdGEmJih4LmRhdGE9W10pLHguZGF0YS5wdXNoKHtkYXRhOnQsc3RhcnQ6citvLGVuZDpyK28rJC5kYXRhTGVuZ3RoLGNvZGluZ3Bhc3NlczokLmNvZGluZ3Bhc3Nlc30pLG8rPSQuZGF0YUxlbmd0aH19fXJldHVybiBvfWZ1bmN0aW9uIGooZSx0LHIsbixhLGkscyxjLHUpe2Zvcih2YXIgbD1uLnRieDAsZj1uLnRieTAsaD1uLnRieDEtbi50YngwLGQ9bi5jb2RlYmxvY2tzLHA9IkgiPT09bi50eXBlLmNoYXJBdCgwKT8xOjAsZz0iSCI9PT1uLnR5cGUuY2hhckF0KDEpP3Q6MCx2PTAseT1kLmxlbmd0aDt2PHk7Kyt2KXt2YXIgbT1kW3ZdLGI9bS50YngxXy1tLnRieDBfLHc9bS50YnkxXy1tLnRieTBfO2lmKDAhPT1iJiYwIT09dyYmdm9pZCAwIT09bS5kYXRhKXt2YXIgaz1uZXcgJChiLHcsbS5zdWJiYW5kVHlwZSxtLnplcm9CaXRQbGFuZXMsaSksUz0yLHg9bS5kYXRhLE89MCxBPTAsQz12b2lkIDAsRj12b2lkIDAsUD12b2lkIDA7Zm9yKEM9MCxGPXgubGVuZ3RoO0M8RjtDKyspTys9KFA9eFtDXSkuZW5kLVAuc3RhcnQsQSs9UC5jb2RpbmdwYXNzZXM7dmFyIFQ9bmV3IFVpbnQ4QXJyYXkoTyksST0wO2ZvcihDPTAsRj14Lmxlbmd0aDtDPEY7QysrKXt2YXIgRT0oUD14W0NdKS5kYXRhLnN1YmFycmF5KFAuc3RhcnQsUC5lbmQpO1Quc2V0KEUsSSksSSs9RS5sZW5ndGh9dmFyIGo9bmV3IG8uQXJpdGhtZXRpY0RlY29kZXIoVCwwLE8pO2ZvcihrLnNldERlY29kZXIoaiksQz0wO0M8QTtDKyspe3N3aXRjaChTKXtjYXNlIDA6ay5ydW5TaWduaWZpY2FuY2VQcm9wYWdhdGlvblBhc3MoKTticmVhaztjYXNlIDE6ay5ydW5NYWduaXR1ZGVSZWZpbmVtZW50UGFzcygpO2JyZWFrO2Nhc2UgMjprLnJ1bkNsZWFudXBQYXNzKCksYyYmay5jaGVja1NlZ21lbnRhdGlvblN5bWJvbCgpfXUmJmsucmVzZXQoKSxTPShTKzEpJTN9dmFyIE09bS50YngwXy1sKyhtLnRieTBfLWYpKmgsXz1rLmNvZWZmaWNlbnRzU2lnbixMPWsuY29lZmZpY2VudHNNYWduaXR1ZGUsUj1rLmJpdHNEZWNvZGVkLE49cz8wOi41LEQ9dm9pZCAwLEI9dm9pZCAwLFU9dm9pZCAwO0k9MDt2YXIgWD0iTEwiIT09bi50eXBlO2ZvcihDPTA7Qzx3O0MrKyl7dmFyIEg9MiooTS9ofDApKih0LWgpK3ArZztmb3IoRD0wO0Q8YjtEKyspe2lmKDAhPT0oQj1MW0ldKSlCPShCK04pKmEsMCE9PV9bSV0mJihCPS1CKSxVPVJbSV0sZVtYP0grKE08PDEpOk1dPXMmJlU+PWk/QjpCKigxPDxpLVUpO00rKyxJKyt9TSs9aC1ifX19fWZ1bmN0aW9uIE0oZSx0LHIpe2Zvcih2YXIgbj10LmNvbXBvbmVudHNbcl0sYT1uLmNvZGluZ1N0eWxlUGFyYW1ldGVycyxpPW4ucXVhbnRpemF0aW9uUGFyYW1ldGVycyxvPWEuZGVjb21wb3NpdGlvbkxldmVsc0NvdW50LHM9aS5TUHFjZHMsYz1pLnNjYWxhckV4cG91bmRlZCx1PWkuZ3VhcmRCaXRzLGw9YS5zZWdtZW50YXRpb25TeW1ib2xVc2VkLGY9YS5yZXNldENvbnRleHRQcm9iYWJpbGl0aWVzLGg9ZS5jb21wb25lbnRzW3JdLnByZWNpc2lvbixkPWEucmV2ZXJzaWJsZVRyYW5zZm9ybWF0aW9uLHA9ZD9uZXcgcTpuZXcgSCx2PVtdLHk9MCxtPTA7bTw9bzttKyspe2Zvcih2YXIgYj1uLnJlc29sdXRpb25zW21dLHc9Yi50cngxLWIudHJ4MCxrPWIudHJ5MS1iLnRyeTAsUz1uZXcgRmxvYXQzMkFycmF5KHcqaykseD0wLE89Yi5zdWJiYW5kcy5sZW5ndGg7eDxPO3grKyl7dmFyIEE9dm9pZCAwLEM9dm9pZCAwO2M/KEE9c1t5XS5tdSxDPXNbeV0uZXBzaWxvbix5KyspOihBPXNbMF0ubXUsQz1zWzBdLmVwc2lsb24rKG0+MD8xLW06MCkpO3ZhciBGPWIuc3ViYmFuZHNbeF0sUD1nW0YudHlwZV07aihTLHcsMCxGLGQ/MTpNYXRoLnBvdygyLGgrUC1DKSooMStBLzIwNDgpLHUrQy0xLGQsbCxmKX12LnB1c2goe3dpZHRoOncsaGVpZ2h0OmssaXRlbXM6U30pfXZhciBUPXAuY2FsY3VsYXRlKHYsbi50Y3gwLG4udGN5MCk7cmV0dXJue2xlZnQ6bi50Y3gwLHRvcDpuLnRjeTAsd2lkdGg6VC53aWR0aCxoZWlnaHQ6VC5oZWlnaHQsaXRlbXM6VC5pdGVtc319ZnVuY3Rpb24gXyhlLHQpe2Zvcih2YXIgcj1lLlNJWi5Dc2l6LG49ZS50aWxlc1t0XSxhPTA7YTxyO2ErKyl7dmFyIGk9bi5jb21wb25lbnRzW2FdLG89dm9pZCAwIT09ZS5jdXJyZW50VGlsZS5RQ0NbYV0/ZS5jdXJyZW50VGlsZS5RQ0NbYV06ZS5jdXJyZW50VGlsZS5RQ0Q7aS5xdWFudGl6YXRpb25QYXJhbWV0ZXJzPW87dmFyIHM9dm9pZCAwIT09ZS5jdXJyZW50VGlsZS5DT0NbYV0/ZS5jdXJyZW50VGlsZS5DT0NbYV06ZS5jdXJyZW50VGlsZS5DT0Q7aS5jb2RpbmdTdHlsZVBhcmFtZXRlcnM9c31uLmNvZGluZ1N0eWxlRGVmYXVsdFBhcmFtZXRlcnM9ZS5jdXJyZW50VGlsZS5DT0R9dC5KcHhJbWFnZT12O3ZhciBMLFIsTixELEI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQscil7dSh0aGlzLGUpO3ZhciBuPSgwLGkubG9nMikoTWF0aC5tYXgodCxyKSkrMTt0aGlzLmxldmVscz1bXTtmb3IodmFyIGE9MDthPG47YSsrKXt2YXIgbz17d2lkdGg6dCxoZWlnaHQ6cixpdGVtczpbXX07dGhpcy5sZXZlbHMucHVzaChvKSx0PU1hdGguY2VpbCh0LzIpLHI9TWF0aC5jZWlsKHIvMil9fXJldHVybiBjKGUsW3trZXk6InJlc2V0Iix2YWx1ZTpmdW5jdGlvbihlLHQpe2Zvcih2YXIgcixuPTAsYT0wO248dGhpcy5sZXZlbHMubGVuZ3RoOyl7dmFyIGk9ZSt0KihyPXRoaXMubGV2ZWxzW25dKS53aWR0aDtpZih2b2lkIDAhPT1yLml0ZW1zW2ldKXthPXIuaXRlbXNbaV07YnJlYWt9ci5pbmRleD1pLGU+Pj0xLHQ+Pj0xLG4rK31uLS0sKHI9dGhpcy5sZXZlbHNbbl0pLml0ZW1zW3IuaW5kZXhdPWEsdGhpcy5jdXJyZW50TGV2ZWw9bixkZWxldGUgdGhpcy52YWx1ZX19LHtrZXk6ImluY3JlbWVudFZhbHVlIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMubGV2ZWxzW3RoaXMuY3VycmVudExldmVsXTtlLml0ZW1zW2UuaW5kZXhdKyt9fSx7a2V5OiJuZXh0TGV2ZWwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5jdXJyZW50TGV2ZWwsdD10aGlzLmxldmVsc1tlXSxyPXQuaXRlbXNbdC5pbmRleF07cmV0dXJuLS1lPDA/KHRoaXMudmFsdWU9ciwhMSk6KHRoaXMuY3VycmVudExldmVsPWUsKHQ9dGhpcy5sZXZlbHNbZV0pLml0ZW1zW3QuaW5kZXhdPXIsITApfX1dKSxlfSgpLFU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQscixuKXt1KHRoaXMsZSk7dmFyIGE9KDAsaS5sb2cyKShNYXRoLm1heCh0LHIpKSsxO3RoaXMubGV2ZWxzPVtdO2Zvcih2YXIgbz0wO288YTtvKyspe2Zvcih2YXIgcz1uZXcgVWludDhBcnJheSh0KnIpLGM9MCxsPXMubGVuZ3RoO2M8bDtjKyspc1tjXT1uO3ZhciBmPXt3aWR0aDp0LGhlaWdodDpyLGl0ZW1zOnN9O3RoaXMubGV2ZWxzLnB1c2goZiksdD1NYXRoLmNlaWwodC8yKSxyPU1hdGguY2VpbChyLzIpfX1yZXR1cm4gYyhlLFt7a2V5OiJyZXNldCIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIpe2Zvcih2YXIgbj0wO248dGhpcy5sZXZlbHMubGVuZ3RoOyl7dmFyIGE9dGhpcy5sZXZlbHNbbl0saT1lK3QqYS53aWR0aDthLmluZGV4PWk7dmFyIG89YS5pdGVtc1tpXTtpZigyNTU9PT1vKWJyZWFrO2lmKG8+cilyZXR1cm4gdGhpcy5jdXJyZW50TGV2ZWw9bix0aGlzLnByb3BhZ2F0ZVZhbHVlcygpLCExO2U+Pj0xLHQ+Pj0xLG4rK31yZXR1cm4gdGhpcy5jdXJyZW50TGV2ZWw9bi0xLCEwfX0se2tleToiaW5jcmVtZW50VmFsdWUiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMubGV2ZWxzW3RoaXMuY3VycmVudExldmVsXTt0Lml0ZW1zW3QuaW5kZXhdPWUrMSx0aGlzLnByb3BhZ2F0ZVZhbHVlcygpfX0se2tleToicHJvcGFnYXRlVmFsdWVzIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgZT10aGlzLmN1cnJlbnRMZXZlbCx0PXRoaXMubGV2ZWxzW2VdLHI9dC5pdGVtc1t0LmluZGV4XTstLWU+PTA7KSh0PXRoaXMubGV2ZWxzW2VdKS5pdGVtc1t0LmluZGV4XT1yfX0se2tleToibmV4dExldmVsIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuY3VycmVudExldmVsLHQ9dGhpcy5sZXZlbHNbZV0scj10Lml0ZW1zW3QuaW5kZXhdO3JldHVybiB0Lml0ZW1zW3QuaW5kZXhdPTI1NSwhKC0tZTwwfHwodGhpcy5jdXJyZW50TGV2ZWw9ZSwodD10aGlzLmxldmVsc1tlXSkuaXRlbXNbdC5pbmRleF09ciwwKSl9fV0pLGV9KCksJD0oTD0xNyxSPW5ldyBVaW50OEFycmF5KFswLDUsOCwwLDMsNyw4LDAsNCw3LDgsMCwwLDAsMCwwLDEsNiw4LDAsMyw3LDgsMCw0LDcsOCwwLDAsMCwwLDAsMiw2LDgsMCwzLDcsOCwwLDQsNyw4LDAsMCwwLDAsMCwyLDYsOCwwLDMsNyw4LDAsNCw3LDgsMCwwLDAsMCwwLDIsNiw4LDAsMyw3LDgsMCw0LDcsOF0pLE49bmV3IFVpbnQ4QXJyYXkoWzAsMyw0LDAsNSw3LDcsMCw4LDgsOCwwLDAsMCwwLDAsMSwzLDQsMCw2LDcsNywwLDgsOCw4LDAsMCwwLDAsMCwyLDMsNCwwLDYsNyw3LDAsOCw4LDgsMCwwLDAsMCwwLDIsMyw0LDAsNiw3LDcsMCw4LDgsOCwwLDAsMCwwLDAsMiwzLDQsMCw2LDcsNywwLDgsOCw4XSksRD1uZXcgVWludDhBcnJheShbMCwxLDIsMCwxLDIsMiwwLDIsMiwyLDAsMCwwLDAsMCwzLDQsNSwwLDQsNSw1LDAsNSw1LDUsMCwwLDAsMCwwLDYsNyw3LDAsNyw3LDcsMCw3LDcsNywwLDAsMCwwLDAsOCw4LDgsMCw4LDgsOCwwLDgsOCw4LDAsMCwwLDAsMCw4LDgsOCwwLDgsOCw4LDAsOCw4LDhdKSxmdW5jdGlvbigpe2Z1bmN0aW9uIGUodCxyLG4sYSxpKXt2YXIgbzt1KHRoaXMsZSksdGhpcy53aWR0aD10LHRoaXMuaGVpZ2h0PXIsbz0iSEgiPT09bj9EOiJITCI9PT1uP046Uix0aGlzLmNvbnRleHRMYWJlbFRhYmxlPW87dmFyIHMsYz10KnI7dGhpcy5uZWlnaGJvcnNTaWduaWZpY2FuY2U9bmV3IFVpbnQ4QXJyYXkoYyksdGhpcy5jb2VmZmljZW50c1NpZ249bmV3IFVpbnQ4QXJyYXkoYykscz1pPjE0P25ldyBVaW50MzJBcnJheShjKTppPjY/bmV3IFVpbnQxNkFycmF5KGMpOm5ldyBVaW50OEFycmF5KGMpLHRoaXMuY29lZmZpY2VudHNNYWduaXR1ZGU9cyx0aGlzLnByb2Nlc3NpbmdGbGFncz1uZXcgVWludDhBcnJheShjKTt2YXIgbD1uZXcgVWludDhBcnJheShjKTtpZigwIT09YSlmb3IodmFyIGY9MDtmPGM7ZisrKWxbZl09YTt0aGlzLmJpdHNEZWNvZGVkPWwsdGhpcy5yZXNldCgpfXJldHVybiBjKGUsW3trZXk6InNldERlY29kZXIiLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMuZGVjb2Rlcj1lfX0se2tleToicmVzZXQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5jb250ZXh0cz1uZXcgSW50OEFycmF5KDE5KSx0aGlzLmNvbnRleHRzWzBdPTgsdGhpcy5jb250ZXh0c1sxN109OTIsdGhpcy5jb250ZXh0c1sxOF09Nn19LHtrZXk6InNldE5laWdoYm9yc1NpZ25pZmljYW5jZSIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuLGE9dGhpcy5uZWlnaGJvcnNTaWduaWZpY2FuY2UsaT10aGlzLndpZHRoLG89dGhpcy5oZWlnaHQscz10PjAsYz10KzE8aTtlPjAmJihuPXItaSxzJiYoYVtuLTFdKz0xNiksYyYmKGFbbisxXSs9MTYpLGFbbl0rPTQpLGUrMTxvJiYobj1yK2kscyYmKGFbbi0xXSs9MTYpLGMmJihhW24rMV0rPTE2KSxhW25dKz00KSxzJiYoYVtyLTFdKz0xKSxjJiYoYVtyKzFdKz0xKSxhW3JdfD0xMjh9fSx7a2V5OiJydW5TaWduaWZpY2FuY2VQcm9wYWdhdGlvblBhc3MiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMuZGVjb2Rlcix0PXRoaXMud2lkdGgscj10aGlzLmhlaWdodCxuPXRoaXMuY29lZmZpY2VudHNNYWduaXR1ZGUsYT10aGlzLmNvZWZmaWNlbnRzU2lnbixpPXRoaXMubmVpZ2hib3JzU2lnbmlmaWNhbmNlLG89dGhpcy5wcm9jZXNzaW5nRmxhZ3Mscz10aGlzLmNvbnRleHRzLGM9dGhpcy5jb250ZXh0TGFiZWxUYWJsZSx1PXRoaXMuYml0c0RlY29kZWQsbD0wO2w8cjtsKz00KWZvcih2YXIgZj0wO2Y8dDtmKyspZm9yKHZhciBoPWwqdCtmLGQ9MDtkPDQ7ZCsrLGgrPXQpe3ZhciBwPWwrZDtpZihwPj1yKWJyZWFrO2lmKG9baF0mPS0yLCFuW2hdJiZpW2hdKXt2YXIgZz1jW2lbaF1dO2lmKGUucmVhZEJpdChzLGcpKXt2YXIgdj10aGlzLmRlY29kZVNpZ25CaXQocCxmLGgpO2FbaF09dixuW2hdPTEsdGhpcy5zZXROZWlnaGJvcnNTaWduaWZpY2FuY2UocCxmLGgpLG9baF18PTJ9dVtoXSsrLG9baF18PTF9fX19LHtrZXk6ImRlY29kZVNpZ25CaXQiLHZhbHVlOmZ1bmN0aW9uKGUsdCxyKXt2YXIgbixhLGksbyxzLGMsdT10aGlzLndpZHRoLGw9dGhpcy5oZWlnaHQsZj10aGlzLmNvZWZmaWNlbnRzTWFnbml0dWRlLGg9dGhpcy5jb2VmZmljZW50c1NpZ247bz10PjAmJjAhPT1mW3ItMV0sdCsxPHUmJjAhPT1mW3IrMV0/KGk9aFtyKzFdLG49bz8xLWktKGE9aFtyLTFdKToxLWktaSk6bj1vPzEtKGE9aFtyLTFdKS1hOjA7dmFyIGQ9MypuO3JldHVybiBvPWU+MCYmMCE9PWZbci11XSxlKzE8bCYmMCE9PWZbcit1XT8oaT1oW3IrdV0sbj1vPzEtaS0oYT1oW3ItdV0pK2Q6MS1pLWkrZCk6bj1vPzEtKGE9aFtyLXVdKS1hK2Q6ZCxuPj0wPyhzPTkrbixjPXRoaXMuZGVjb2Rlci5yZWFkQml0KHRoaXMuY29udGV4dHMscykpOihzPTktbixjPTFedGhpcy5kZWNvZGVyLnJlYWRCaXQodGhpcy5jb250ZXh0cyxzKSksY319LHtrZXk6InJ1bk1hZ25pdHVkZVJlZmluZW1lbnRQYXNzIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgZSx0PXRoaXMuZGVjb2RlcixyPXRoaXMud2lkdGgsbj10aGlzLmhlaWdodCxhPXRoaXMuY29lZmZpY2VudHNNYWduaXR1ZGUsaT10aGlzLm5laWdoYm9yc1NpZ25pZmljYW5jZSxvPXRoaXMuY29udGV4dHMscz10aGlzLmJpdHNEZWNvZGVkLGM9dGhpcy5wcm9jZXNzaW5nRmxhZ3MsdT1yKm4sbD00KnIsZj0wO2Y8dTtmPWUpe2U9TWF0aC5taW4odSxmK2wpO2Zvcih2YXIgaD0wO2g8cjtoKyspZm9yKHZhciBkPWYraDtkPGU7ZCs9cilpZihhW2RdJiYwPT0oMSZjW2RdKSl7dmFyIHA9MTY7MCE9KDImY1tkXSkmJihjW2RdXj0yLHA9MD09KDEyNyZpW2RdKT8xNToxNCk7dmFyIGc9dC5yZWFkQml0KG8scCk7YVtkXT1hW2RdPDwxfGcsc1tkXSsrLGNbZF18PTF9fX19LHtrZXk6InJ1bkNsZWFudXBQYXNzIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgZSx0PXRoaXMuZGVjb2RlcixyPXRoaXMud2lkdGgsbj10aGlzLmhlaWdodCxhPXRoaXMubmVpZ2hib3JzU2lnbmlmaWNhbmNlLGk9dGhpcy5jb2VmZmljZW50c01hZ25pdHVkZSxvPXRoaXMuY29lZmZpY2VudHNTaWduLHM9dGhpcy5jb250ZXh0cyxjPXRoaXMuY29udGV4dExhYmVsVGFibGUsdT10aGlzLmJpdHNEZWNvZGVkLGw9dGhpcy5wcm9jZXNzaW5nRmxhZ3MsZj1yLGg9MipyLGQ9MypyLHA9MDtwPG47cD1lKXtlPU1hdGgubWluKHArNCxuKTtmb3IodmFyIGc9cCpyLHY9cCszPG4seT0wO3k8cjt5Kyspe3ZhciBtPWcreSxiPTAsdz1tLGs9cCxTPXZvaWQgMDtpZih2JiYwPT09bFttXSYmMD09PWxbbStmXSYmMD09PWxbbStoXSYmMD09PWxbbStkXSYmMD09PWFbbV0mJjA9PT1hW20rZl0mJjA9PT1hW20raF0mJjA9PT1hW20rZF0pe2lmKCF0LnJlYWRCaXQocywxOCkpe3VbbV0rKyx1W20rZl0rKyx1W20raF0rKyx1W20rZF0rKztjb250aW51ZX0wIT0oYj10LnJlYWRCaXQocyxMKTw8MXx0LnJlYWRCaXQocyxMKSkmJihrPXArYix3Kz1iKnIpLFM9dGhpcy5kZWNvZGVTaWduQml0KGsseSx3KSxvW3ddPVMsaVt3XT0xLHRoaXMuc2V0TmVpZ2hib3JzU2lnbmlmaWNhbmNlKGsseSx3KSxsW3ddfD0yLHc9bTtmb3IodmFyIHg9cDt4PD1rO3grKyx3Kz1yKXVbd10rKztiKyt9Zm9yKGs9cCtiO2s8ZTtrKyssdys9cilpZighaVt3XSYmMD09KDEmbFt3XSkpe3ZhciBPPWNbYVt3XV07MT09PXQucmVhZEJpdChzLE8pJiYoUz10aGlzLmRlY29kZVNpZ25CaXQoayx5LHcpLG9bd109UyxpW3ddPTEsdGhpcy5zZXROZWlnaGJvcnNTaWduaWZpY2FuY2Uoayx5LHcpLGxbd118PTIpLHVbd10rK319fX19LHtrZXk6ImNoZWNrU2VnbWVudGF0aW9uU3ltYm9sIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuZGVjb2Rlcix0PXRoaXMuY29udGV4dHM7aWYoMTAhPShlLnJlYWRCaXQodCxMKTw8M3xlLnJlYWRCaXQodCxMKTw8MnxlLnJlYWRCaXQodCxMKTw8MXxlLnJlYWRCaXQodCxMKSkpdGhyb3cgbmV3IHAoIkludmFsaWQgc2VnbWVudGF0aW9uIHN5bWJvbCIpfX1dKSxlfSgpKSxYPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe3UodGhpcyxlKSx0aGlzLmNvbnN0cnVjdG9yPT09ZSYmKDAsYS51bnJlYWNoYWJsZSkoIkNhbm5vdCBpbml0aWFsaXplIFRyYW5zZm9ybS4iKX1yZXR1cm4gYyhlLFt7a2V5OiJjYWxjdWxhdGUiLHZhbHVlOmZ1bmN0aW9uKGUsdCxyKXtmb3IodmFyIG49ZVswXSxhPTEsaT1lLmxlbmd0aDthPGk7YSsrKW49dGhpcy5pdGVyYXRlKG4sZVthXSx0LHIpO3JldHVybiBufX0se2tleToiZXh0ZW5kIix2YWx1ZTpmdW5jdGlvbihlLHQscil7dmFyIG49dC0xLGE9dCsxLGk9dCtyLTIsbz10K3I7ZVtuLS1dPWVbYSsrXSxlW28rK109ZVtpLS1dLGVbbi0tXT1lW2ErK10sZVtvKytdPWVbaS0tXSxlW24tLV09ZVthKytdLGVbbysrXT1lW2ktLV0sZVtuXT1lW2FdLGVbb109ZVtpXX19LHtrZXk6ImZpbHRlciIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIpeygwLGEudW5yZWFjaGFibGUpKCJBYnN0cmFjdCBtZXRob2QgYGZpbHRlcmAgY2FsbGVkIil9fSx7a2V5OiJpdGVyYXRlIix2YWx1ZTpmdW5jdGlvbihlLHQscixuKXt2YXIgYSxpLG8scyxjLHUsbD1lLndpZHRoLGY9ZS5oZWlnaHQsaD1lLml0ZW1zLGQ9dC53aWR0aCxwPXQuaGVpZ2h0LGc9dC5pdGVtcztmb3Iobz0wLGE9MDthPGY7YSsrKWZvcihzPTIqYSpkLGk9MDtpPGw7aSsrLG8rKyxzKz0yKWdbc109aFtvXTtoPWUuaXRlbXM9bnVsbDt2YXIgdj1uZXcgRmxvYXQzMkFycmF5KGQrOCk7aWYoMT09PWQpe2lmKDAhPSgxJnIpKWZvcih1PTAsbz0wO3U8cDt1Kyssbys9ZClnW29dKj0uNX1lbHNlIGZvcih1PTAsbz0wO3U8cDt1Kyssbys9ZCl2LnNldChnLnN1YmFycmF5KG8sbytkKSw0KSx0aGlzLmV4dGVuZCh2LDQsZCksdGhpcy5maWx0ZXIodiw0LGQpLGcuc2V0KHYuc3ViYXJyYXkoNCw0K2QpLG8pO3ZhciB5PTE2LG09W107Zm9yKGE9MDthPHk7YSsrKW0ucHVzaChuZXcgRmxvYXQzMkFycmF5KHArOCkpO3ZhciBiLHc9MDtpZihlPTQrcCwxPT09cCl7aWYoMCE9KDEmbikpZm9yKGM9MDtjPGQ7YysrKWdbY10qPS41fWVsc2UgZm9yKGM9MDtjPGQ7YysrKXtpZigwPT09dyl7Zm9yKHk9TWF0aC5taW4oZC1jLHkpLG89YyxzPTQ7czxlO28rPWQscysrKWZvcihiPTA7Yjx5O2IrKyltW2JdW3NdPWdbbytiXTt3PXl9dmFyIGs9bVstLXddO2lmKHRoaXMuZXh0ZW5kKGssNCxwKSx0aGlzLmZpbHRlcihrLDQscCksMD09PXcpZm9yKG89Yy15KzEscz00O3M8ZTtvKz1kLHMrKylmb3IoYj0wO2I8eTtiKyspZ1tvK2JdPW1bYl1bc119cmV0dXJue3dpZHRoOmQsaGVpZ2h0OnAsaXRlbXM6Z319fV0pLGV9KCksSD1mdW5jdGlvbihlKXtsKHIsZSk7dmFyIHQ9aChyKTtmdW5jdGlvbiByKCl7cmV0dXJuIHUodGhpcyxyKSx0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gYyhyLFt7a2V5OiJmaWx0ZXIiLHZhbHVlOmZ1bmN0aW9uKGUsdCxyKXt2YXIgbixhLGksbyxzPXI+PjEsYz0tMS41ODYxMzQzNDIwNTk5MjQsdT0tLjA1Mjk4MDExODU3Mjk2MSxsPS44ODI5MTEwNzU1MzA5MzQsZj0uNDQzNTA2ODUyMDQzOTcxLGg9MS4yMzAxNzQxMDQ5MTQwMDE7Zm9yKG49KHR8PTApLTMsYT1zKzQ7YS0tO24rPTIpZVtuXSo9LjgxMjg5MzA2NjExNTk2MDk7Zm9yKGk9ZiplWyhuPXQtMiktMV0sYT1zKzM7YS0tJiYobz1mKmVbbisxXSxlW25dPWgqZVtuXS1pLW8sYS0tKTtuKz0yKWk9ZiplWyhuKz0yKSsxXSxlW25dPWgqZVtuXS1pLW87Zm9yKGk9bCplWyhuPXQtMSktMV0sYT1zKzI7YS0tJiYobz1sKmVbbisxXSxlW25dLT1pK28sYS0tKTtuKz0yKWk9bCplWyhuKz0yKSsxXSxlW25dLT1pK287Zm9yKGk9dSplWyhuPXQpLTFdLGE9cysxO2EtLSYmKG89dSplW24rMV0sZVtuXS09aStvLGEtLSk7bis9MilpPXUqZVsobis9MikrMV0sZVtuXS09aStvO2lmKDAhPT1zKWZvcihpPWMqZVsobj10KzEpLTFdLGE9czthLS0mJihvPWMqZVtuKzFdLGVbbl0tPWkrbyxhLS0pO24rPTIpaT1jKmVbKG4rPTIpKzFdLGVbbl0tPWkrb319XSkscn0oWCkscT1mdW5jdGlvbihlKXtsKHIsZSk7dmFyIHQ9aChyKTtmdW5jdGlvbiByKCl7cmV0dXJuIHUodGhpcyxyKSx0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gYyhyLFt7a2V5OiJmaWx0ZXIiLHZhbHVlOmZ1bmN0aW9uKGUsdCxyKXt2YXIgbixhLGk9cj4+MTtmb3Iobj10fD0wLGE9aSsxO2EtLTtuKz0yKWVbbl0tPWVbbi0xXStlW24rMV0rMj4+Mjtmb3Iobj10KzEsYT1pO2EtLTtuKz0yKWVbbl0rPWVbbi0xXStlW24rMV0+PjF9fV0pLHJ9KFgpfSwoZSx0LHIpPT57ZnVuY3Rpb24gbihlKXtyZXR1cm4gbj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZX0sbihlKX1mdW5jdGlvbiBhKGUsdCl7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBhPXRbcl07YS5lbnVtZXJhYmxlPWEuZW51bWVyYWJsZXx8ITEsYS5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGEmJihhLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwodm9pZCAwLGk9ZnVuY3Rpb24oZSx0KXtpZigib2JqZWN0IiE9PW4oZSl8fG51bGw9PT1lKXJldHVybiBlO3ZhciByPWVbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1yKXt2YXIgYT1yLmNhbGwoZSwic3RyaW5nIik7aWYoIm9iamVjdCIhPT1uKGEpKXJldHVybiBhO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuIFN0cmluZyhlKX0oYS5rZXkpLCJzeW1ib2wiPT09bihpKT9pOlN0cmluZyhpKSksYSl9dmFyIGl9ZnVuY3Rpb24gaShlLHQpe3JldHVybiBpPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuX19wcm90b19fPXQsZX0saShlLHQpfWZ1bmN0aW9uIG8oZSl7cmV0dXJuIG89T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSl9LG8oZSl9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuTFpXU3RyZWFtPXZvaWQgMDt2YXIgcz1mdW5jdGlvbihlKXshZnVuY3Rpb24oZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksdCYmaShlLHQpfShsLGUpO3ZhciB0LHIscyxjLHU9KHM9bCxjPWZ1bmN0aW9uKCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3QpcmV0dXJuITE7aWYoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSwoZnVuY3Rpb24oKXt9KSkpLCEwfWNhdGNoKGUpe3JldHVybiExfX0oKSxmdW5jdGlvbigpe3ZhciBlLHQ9byhzKTtpZihjKXt2YXIgcj1vKHRoaXMpLmNvbnN0cnVjdG9yO2U9UmVmbGVjdC5jb25zdHJ1Y3QodCxhcmd1bWVudHMscil9ZWxzZSBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBmdW5jdGlvbihlLHQpe2lmKHQmJigib2JqZWN0Ij09PW4odCl8fCJmdW5jdGlvbiI9PXR5cGVvZiB0KSlyZXR1cm4gdDtpZih2b2lkIDAhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKHZvaWQgMD09PWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZX0oZSl9KHRoaXMsZSl9KTtmdW5jdGlvbiBsKGUsdCxyKXt2YXIgbjshZnVuY3Rpb24oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxsKSwobj11LmNhbGwodGhpcyx0KSkuc3RyPWUsbi5kaWN0PWUuZGljdCxuLmNhY2hlZERhdGE9MCxuLmJpdHNDYWNoZWQ9MDtmb3IodmFyIGE9NDA5NixpPXtlYXJseUNoYW5nZTpyLGNvZGVMZW5ndGg6OSxuZXh0Q29kZToyNTgsZGljdGlvbmFyeVZhbHVlczpuZXcgVWludDhBcnJheShhKSxkaWN0aW9uYXJ5TGVuZ3RoczpuZXcgVWludDE2QXJyYXkoYSksZGljdGlvbmFyeVByZXZDb2RlczpuZXcgVWludDE2QXJyYXkoYSksY3VycmVudFNlcXVlbmNlOm5ldyBVaW50OEFycmF5KGEpLGN1cnJlbnRTZXF1ZW5jZUxlbmd0aDowfSxvPTA7bzwyNTY7KytvKWkuZGljdGlvbmFyeVZhbHVlc1tvXT1vLGkuZGljdGlvbmFyeUxlbmd0aHNbb109MTtyZXR1cm4gbi5sendTdGF0ZT1pLG59cmV0dXJuIHQ9bCwocj1be2tleToicmVhZEJpdHMiLHZhbHVlOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD10aGlzLmJpdHNDYWNoZWQscj10aGlzLmNhY2hlZERhdGE7dDxlOyl7dmFyIG49dGhpcy5zdHIuZ2V0Qnl0ZSgpO2lmKC0xPT09bilyZXR1cm4gdGhpcy5lb2Y9ITAsbnVsbDtyPXI8PDh8bix0Kz04fXJldHVybiB0aGlzLmJpdHNDYWNoZWQ9dC09ZSx0aGlzLmNhY2hlZERhdGE9cix0aGlzLmxhc3RDb2RlPW51bGwscj4+PnQmKDE8PGUpLTF9fSx7a2V5OiJyZWFkQmxvY2siLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGUsdCxyLG49MTAyNCxhPXRoaXMubHp3U3RhdGU7aWYoYSl7dmFyIGk9YS5lYXJseUNoYW5nZSxvPWEubmV4dENvZGUscz1hLmRpY3Rpb25hcnlWYWx1ZXMsYz1hLmRpY3Rpb25hcnlMZW5ndGhzLHU9YS5kaWN0aW9uYXJ5UHJldkNvZGVzLGw9YS5jb2RlTGVuZ3RoLGY9YS5wcmV2Q29kZSxoPWEuY3VycmVudFNlcXVlbmNlLGQ9YS5jdXJyZW50U2VxdWVuY2VMZW5ndGgscD0wLGc9dGhpcy5idWZmZXJMZW5ndGgsdj10aGlzLmVuc3VyZUJ1ZmZlcih0aGlzLmJ1ZmZlckxlbmd0aCtuKTtmb3IoZT0wO2U8NTEyO2UrKyl7dmFyIHk9dGhpcy5yZWFkQml0cyhsKSxtPWQ+MDtpZih5PDI1NiloWzBdPXksZD0xO2Vsc2V7aWYoISh5Pj0yNTgpKXtpZigyNTY9PT15KXtsPTksbz0yNTgsZD0wO2NvbnRpbnVlfXRoaXMuZW9mPSEwLGRlbGV0ZSB0aGlzLmx6d1N0YXRlO2JyZWFrfWlmKHk8bylmb3IodD0oZD1jW3ldKS0xLHI9eTt0Pj0wO3QtLSloW3RdPXNbcl0scj11W3JdO2Vsc2UgaFtkKytdPWhbMF19aWYobSYmKHVbb109ZixjW29dPWNbZl0rMSxzW29dPWhbMF0sbD0rK28raSZvK2ktMT9sOjB8TWF0aC5taW4oTWF0aC5sb2cobytpKS8uNjkzMTQ3MTgwNTU5OTQ1MysxLDEyKSksZj15LG48KHArPWQpKXtkb3tuKz01MTJ9d2hpbGUobjxwKTt2PXRoaXMuZW5zdXJlQnVmZmVyKHRoaXMuYnVmZmVyTGVuZ3RoK24pfWZvcih0PTA7dDxkO3QrKyl2W2crK109aFt0XX1hLm5leHRDb2RlPW8sYS5jb2RlTGVuZ3RoPWwsYS5wcmV2Q29kZT1mLGEuY3VycmVudFNlcXVlbmNlTGVuZ3RoPWQsdGhpcy5idWZmZXJMZW5ndGg9Z319fV0pJiZhKHQucHJvdG90eXBlLHIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGx9KHIoMTQ4KS5EZWNvZGVTdHJlYW0pO3QuTFpXU3RyZWFtPXN9LChlLHQscik9PntmdW5jdGlvbiBuKGUpe3JldHVybiBuPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSxuKGUpfU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LlByZWRpY3RvclN0cmVhbT12b2lkIDA7dmFyIGE9cigxNDgpLGk9cigxMzQpLG89cigyKTtmdW5jdGlvbiBzKGUsdCl7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBhPXRbcl07YS5lbnVtZXJhYmxlPWEuZW51bWVyYWJsZXx8ITEsYS5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGEmJihhLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwodm9pZCAwLGk9ZnVuY3Rpb24oZSx0KXtpZigib2JqZWN0IiE9PW4oZSl8fG51bGw9PT1lKXJldHVybiBlO3ZhciByPWVbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1yKXt2YXIgYT1yLmNhbGwoZSwic3RyaW5nIik7aWYoIm9iamVjdCIhPT1uKGEpKXJldHVybiBhO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuIFN0cmluZyhlKX0oYS5rZXkpLCJzeW1ib2wiPT09bihpKT9pOlN0cmluZyhpKSksYSl9dmFyIGl9ZnVuY3Rpb24gYyhlLHQpe3JldHVybiBjPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuX19wcm90b19fPXQsZX0sYyhlLHQpfWZ1bmN0aW9uIHUoZSx0KXtpZih0JiYoIm9iamVjdCI9PT1uKHQpfHwiZnVuY3Rpb24iPT10eXBlb2YgdCkpcmV0dXJuIHQ7aWYodm9pZCAwIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBsKGUpfWZ1bmN0aW9uIGwoZSl7aWYodm9pZCAwPT09ZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBlfWZ1bmN0aW9uIGYoZSl7cmV0dXJuIGY9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSl9LGYoZSl9dmFyIGg9ZnVuY3Rpb24oZSl7IWZ1bmN0aW9uKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLHQmJmMoZSx0KX0oZCxlKTt2YXIgdCxyLG4sYSxoPShuPWQsYT1mdW5jdGlvbigpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0KXJldHVybiExO2lmKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sKGZ1bmN0aW9uKCl7fSkpKSwhMH1jYXRjaChlKXtyZXR1cm4hMX19KCksZnVuY3Rpb24oKXt2YXIgZSx0PWYobik7aWYoYSl7dmFyIHI9Zih0aGlzKS5jb25zdHJ1Y3RvcjtlPVJlZmxlY3QuY29uc3RydWN0KHQsYXJndW1lbnRzLHIpfWVsc2UgZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gdSh0aGlzLGUpfSk7ZnVuY3Rpb24gZChlLHQscil7dmFyIG47aWYoZnVuY3Rpb24oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxkKSxuPWguY2FsbCh0aGlzLHQpLCEociBpbnN0YW5jZW9mIGkuRGljdCkpcmV0dXJuIHUobixlKTt2YXIgYT1uLnByZWRpY3Rvcj1yLmdldCgiUHJlZGljdG9yIil8fDE7aWYoYTw9MSlyZXR1cm4gdShuLGUpO2lmKDIhPT1hJiYoYTwxMHx8YT4xNSkpdGhyb3cgbmV3IG8uRm9ybWF0RXJyb3IoIlVuc3VwcG9ydGVkIHByZWRpY3RvcjogIi5jb25jYXQoYSkpO24ucmVhZEJsb2NrPTI9PT1hP24ucmVhZEJsb2NrVGlmZjpuLnJlYWRCbG9ja1BuZyxuLnN0cj1lLG4uZGljdD1lLmRpY3Q7dmFyIHM9bi5jb2xvcnM9ci5nZXQoIkNvbG9ycyIpfHwxLGM9bi5iaXRzPXIuZ2V0KCJCUEMiLCJCaXRzUGVyQ29tcG9uZW50Iil8fDgsZj1uLmNvbHVtbnM9ci5nZXQoIkNvbHVtbnMiKXx8MTtyZXR1cm4gbi5waXhCeXRlcz1zKmMrNz4+MyxuLnJvd0J5dGVzPWYqcypjKzc+PjMsdShuLGwobikpfXJldHVybiB0PWQsKHI9W3trZXk6InJlYWRCbG9ja1RpZmYiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5yb3dCeXRlcyx0PXRoaXMuYnVmZmVyTGVuZ3RoLHI9dGhpcy5lbnN1cmVCdWZmZXIodCtlKSxuPXRoaXMuYml0cyxhPXRoaXMuY29sb3JzLGk9dGhpcy5zdHIuZ2V0Qnl0ZXMoZSk7aWYodGhpcy5lb2Y9IWkubGVuZ3RoLCF0aGlzLmVvZil7dmFyIG8scz0wLGM9MCx1PTAsbD0wLGY9dDtpZigxPT09biYmMT09PWEpZm9yKG89MDtvPGU7KytvKXt2YXIgaD1pW29dXnM7aF49aD4+MSxoXj1oPj4yLHM9KDEmKGhePWg+PjQpKTw8NyxyW2YrK109aH1lbHNlIGlmKDg9PT1uKXtmb3Iobz0wO288YTsrK28pcltmKytdPWlbb107Zm9yKDtvPGU7KytvKXJbZl09cltmLWFdK2lbb10sZisrfWVsc2UgaWYoMTY9PT1uKXt2YXIgZD0yKmE7Zm9yKG89MDtvPGQ7KytvKXJbZisrXT1pW29dO2Zvcig7bzxlO28rPTIpe3ZhciBwPSgoMjU1Jmlbb10pPDw4KSsoMjU1JmlbbysxXSkrKCgyNTUmcltmLWRdKTw8OCkrKDI1NSZyW2YtZCsxXSk7cltmKytdPXA+PjgmMjU1LHJbZisrXT0yNTUmcH19ZWxzZXt2YXIgZz1uZXcgVWludDhBcnJheShhKzEpLHY9KDE8PG4pLTEseT0wLG09dCxiPXRoaXMuY29sdW1ucztmb3Iobz0wO288YjsrK28pZm9yKHZhciB3PTA7dzxhOysrdyl1PG4mJihzPXM8PDh8MjU1JmlbeSsrXSx1Kz04KSxnW3ddPWdbd10rKHM+PnUtbikmdix1LT1uLGM9Yzw8bnxnW3ddLChsKz1uKT49OCYmKHJbbSsrXT1jPj5sLTgmMjU1LGwtPTgpO2w+MCYmKHJbbSsrXT0oYzw8OC1sKSsocyYoMTw8OC1sKS0xKSl9dGhpcy5idWZmZXJMZW5ndGgrPWV9fX0se2tleToicmVhZEJsb2NrUG5nIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMucm93Qnl0ZXMsdD10aGlzLnBpeEJ5dGVzLHI9dGhpcy5zdHIuZ2V0Qnl0ZSgpLG49dGhpcy5zdHIuZ2V0Qnl0ZXMoZSk7aWYodGhpcy5lb2Y9IW4ubGVuZ3RoLCF0aGlzLmVvZil7dmFyIGE9dGhpcy5idWZmZXJMZW5ndGgsaT10aGlzLmVuc3VyZUJ1ZmZlcihhK2UpLHM9aS5zdWJhcnJheShhLWUsYSk7MD09PXMubGVuZ3RoJiYocz1uZXcgVWludDhBcnJheShlKSk7dmFyIGMsdSxsLGY9YTtzd2l0Y2gocil7Y2FzZSAwOmZvcihjPTA7YzxlOysrYylpW2YrK109bltjXTticmVhaztjYXNlIDE6Zm9yKGM9MDtjPHQ7KytjKWlbZisrXT1uW2NdO2Zvcig7YzxlOysrYylpW2ZdPWlbZi10XStuW2NdJjI1NSxmKys7YnJlYWs7Y2FzZSAyOmZvcihjPTA7YzxlOysrYylpW2YrK109c1tjXStuW2NdJjI1NTticmVhaztjYXNlIDM6Zm9yKGM9MDtjPHQ7KytjKWlbZisrXT0oc1tjXT4+MSkrbltjXTtmb3IoO2M8ZTsrK2MpaVtmXT0oc1tjXStpW2YtdF0+PjEpK25bY10mMjU1LGYrKzticmVhaztjYXNlIDQ6Zm9yKGM9MDtjPHQ7KytjKXU9c1tjXSxsPW5bY10saVtmKytdPXUrbDtmb3IoO2M8ZTsrK2Mpe3U9c1tjXTt2YXIgaD1zW2MtdF0sZD1pW2YtdF0scD1kK3UtaCxnPXAtZDtnPDAmJihnPS1nKTt2YXIgdj1wLXU7djwwJiYodj0tdik7dmFyIHk9cC1oO3k8MCYmKHk9LXkpLGw9bltjXSxpW2YrK109Zzw9diYmZzw9eT9kK2w6djw9eT91K2w6aCtsfWJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IG8uRm9ybWF0RXJyb3IoIlVuc3VwcG9ydGVkIHByZWRpY3RvcjogIi5jb25jYXQocikpfXRoaXMuYnVmZmVyTGVuZ3RoKz1lfX19XSkmJnModC5wcm90b3R5cGUsciksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZH0oYS5EZWNvZGVTdHJlYW0pO3QuUHJlZGljdG9yU3RyZWFtPWh9LChlLHQscik9PntmdW5jdGlvbiBuKGUpe3JldHVybiBuPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSxuKGUpfWZ1bmN0aW9uIGEoZSx0KXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIGE9dFtyXTthLmVudW1lcmFibGU9YS5lbnVtZXJhYmxlfHwhMSxhLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gYSYmKGEud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCh2b2lkIDAsaT1mdW5jdGlvbihlLHQpe2lmKCJvYmplY3QiIT09bihlKXx8bnVsbD09PWUpcmV0dXJuIGU7dmFyIHI9ZVtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PXIpe3ZhciBhPXIuY2FsbChlLCJzdHJpbmciKTtpZigib2JqZWN0IiE9PW4oYSkpcmV0dXJuIGE7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4gU3RyaW5nKGUpfShhLmtleSksInN5bWJvbCI9PT1uKGkpP2k6U3RyaW5nKGkpKSxhKX12YXIgaX1mdW5jdGlvbiBpKGUsdCl7cmV0dXJuIGk9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5fX3Byb3RvX189dCxlfSxpKGUsdCl9ZnVuY3Rpb24gbyhlKXtyZXR1cm4gbz1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihlKXtyZXR1cm4gZS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihlKX0sbyhlKX1PYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5SdW5MZW5ndGhTdHJlYW09dm9pZCAwO3ZhciBzPWZ1bmN0aW9uKGUpeyFmdW5jdGlvbihlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSx0JiZpKGUsdCl9KGwsZSk7dmFyIHQscixzLGMsdT0ocz1sLGM9ZnVuY3Rpb24oKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdClyZXR1cm4hMTtpZihSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLChmdW5jdGlvbigpe30pKSksITB9Y2F0Y2goZSl7cmV0dXJuITF9fSgpLGZ1bmN0aW9uKCl7dmFyIGUsdD1vKHMpO2lmKGMpe3ZhciByPW8odGhpcykuY29uc3RydWN0b3I7ZT1SZWZsZWN0LmNvbnN0cnVjdCh0LGFyZ3VtZW50cyxyKX1lbHNlIGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYodCYmKCJvYmplY3QiPT09bih0KXx8ImZ1bmN0aW9uIj09dHlwZW9mIHQpKXJldHVybiB0O2lmKHZvaWQgMCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24oZSl7aWYodm9pZCAwPT09ZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBlfShlKX0odGhpcyxlKX0pO2Z1bmN0aW9uIGwoZSx0KXt2YXIgcjtyZXR1cm4gZnVuY3Rpb24oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxsKSwocj11LmNhbGwodGhpcyx0KSkuc3RyPWUsci5kaWN0PWUuZGljdCxyfXJldHVybiB0PWwsKHI9W3trZXk6InJlYWRCbG9jayIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnN0ci5nZXRCeXRlcygyKTtpZighZXx8ZS5sZW5ndGg8Mnx8MTI4PT09ZVswXSl0aGlzLmVvZj0hMDtlbHNle3ZhciB0LHI9dGhpcy5idWZmZXJMZW5ndGgsbj1lWzBdO2lmKG48MTI4KXtpZigodD10aGlzLmVuc3VyZUJ1ZmZlcihyK24rMSkpW3IrK109ZVsxXSxuPjApe3ZhciBhPXRoaXMuc3RyLmdldEJ5dGVzKG4pO3Quc2V0KGEscikscis9bn19ZWxzZXtuPTI1Ny1uO3ZhciBpPWVbMV07dD10aGlzLmVuc3VyZUJ1ZmZlcihyK24rMSk7Zm9yKHZhciBvPTA7bzxuO28rKyl0W3IrK109aX10aGlzLmJ1ZmZlckxlbmd0aD1yfX19XSkmJmEodC5wcm90b3R5cGUsciksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksbH0ocigxNDgpLkRlY29kZVN0cmVhbSk7dC5SdW5MZW5ndGhTdHJlYW09c30sKGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LkZvbnQ9dC5FcnJvckZvbnQ9dm9pZCAwO3ZhciBuPXIoMiksYT1yKDE2NCksaT1yKDE2Nyksbz1yKDE2OSkscz1yKDE2OCksYz1yKDE2NiksdT1yKDE3MCksbD1yKDE3MSksZj1yKDE3MiksaD1yKDE3MyksZD1yKDE3NCkscD1yKDE3NSksZz1yKDE0NSksdj1yKDE3NikseT1yKDEzNSksbT1yKDEzOSksYj1yKDE3Nyk7ZnVuY3Rpb24gdyhlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgcj1udWxsPT1lP251bGw6InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVsiQEBpdGVyYXRvciJdO2lmKG51bGwhPXIpe3ZhciBuLGEsaSxvLHM9W10sYz0hMCx1PSExO3RyeXtpZihpPShyPXIuY2FsbChlKSkubmV4dCwwPT09dCl7aWYoT2JqZWN0KHIpIT09cilyZXR1cm47Yz0hMX1lbHNlIGZvcig7IShjPShuPWkuY2FsbChyKSkuZG9uZSkmJihzLnB1c2gobi52YWx1ZSkscy5sZW5ndGghPT10KTtjPSEwKTt9Y2F0Y2goZSl7dT0hMCxhPWV9ZmluYWxseXt0cnl7aWYoIWMmJm51bGwhPXIucmV0dXJuJiYobz1yLnJldHVybigpLE9iamVjdChvKSE9PW8pKXJldHVybn1maW5hbGx5e2lmKHUpdGhyb3cgYX19cmV0dXJuIHN9fShlLHQpfHxTKGUsdCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiBrKGUsdCl7dmFyIHI9InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVsiQEBpdGVyYXRvciJdO2lmKCFyKXtpZihBcnJheS5pc0FycmF5KGUpfHwocj1TKGUpKXx8dCYmZSYmIm51bWJlciI9PXR5cGVvZiBlLmxlbmd0aCl7ciYmKGU9cik7dmFyIG49MCxhPWZ1bmN0aW9uKCl7fTtyZXR1cm57czphLG46ZnVuY3Rpb24oKXtyZXR1cm4gbj49ZS5sZW5ndGg/e2RvbmU6ITB9Ontkb25lOiExLHZhbHVlOmVbbisrXX19LGU6ZnVuY3Rpb24oZSl7dGhyb3cgZX0sZjphfX10aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gaXRlcmF0ZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9dmFyIGksbz0hMCxzPSExO3JldHVybntzOmZ1bmN0aW9uKCl7cj1yLmNhbGwoZSl9LG46ZnVuY3Rpb24oKXt2YXIgZT1yLm5leHQoKTtyZXR1cm4gbz1lLmRvbmUsZX0sZTpmdW5jdGlvbihlKXtzPSEwLGk9ZX0sZjpmdW5jdGlvbigpe3RyeXtvfHxudWxsPT1yLnJldHVybnx8ci5yZXR1cm4oKX1maW5hbGx5e2lmKHMpdGhyb3cgaX19fX1mdW5jdGlvbiBTKGUsdCl7aWYoZSl7aWYoInN0cmluZyI9PXR5cGVvZiBlKXJldHVybiB4KGUsdCk7dmFyIHI9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO3JldHVybiJPYmplY3QiPT09ciYmZS5jb25zdHJ1Y3RvciYmKHI9ZS5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PXJ8fCJTZXQiPT09cj9BcnJheS5mcm9tKGUpOiJBcmd1bWVudHMiPT09cnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3Qocik/eChlLHQpOnZvaWQgMH19ZnVuY3Rpb24geChlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgcj0wLG49bmV3IEFycmF5KHQpO3I8dDtyKyspbltyXT1lW3JdO3JldHVybiBufWZ1bmN0aW9uIE8oZSl7cmV0dXJuIE89ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGV9LE8oZSl9ZnVuY3Rpb24gQShlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIEMoZSx0KXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIG49dFtyXTtuLmVudW1lcmFibGU9bi5lbnVtZXJhYmxlfHwhMSxuLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gbiYmKG4ud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCh2b2lkIDAsYT1mdW5jdGlvbihlLHQpe2lmKCJvYmplY3QiIT09TyhlKXx8bnVsbD09PWUpcmV0dXJuIGU7dmFyIHI9ZVtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PXIpe3ZhciBuPXIuY2FsbChlLCJzdHJpbmciKTtpZigib2JqZWN0IiE9PU8obikpcmV0dXJuIG47dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4gU3RyaW5nKGUpfShuLmtleSksInN5bWJvbCI9PT1PKGEpP2E6U3RyaW5nKGEpKSxuKX12YXIgYX1mdW5jdGlvbiBGKGUsdCxyKXtyZXR1cm4gdCYmQyhlLnByb3RvdHlwZSx0KSxyJiZDKGUsciksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZX12YXIgUD1bWzU3MzQ0LDYzNzQzXSxbMTA0ODU3NiwxMTE0MTA5XV0sVD0xZTMsST1bImFzY2VudCIsImJib3giLCJibGFjayIsImJvbGQiLCJjaGFyUHJvY09wZXJhdG9yTGlzdCIsImNvbXBvc2l0ZSIsImNzc0ZvbnRJbmZvIiwiZGF0YSIsImRlZmF1bHRWTWV0cmljcyIsImRlZmF1bHRXaWR0aCIsImRlc2NlbnQiLCJmYWxsYmFja05hbWUiLCJmb250TWF0cml4IiwiZm9udFR5cGUiLCJpc0ludmFsaWRQREZqc0ZvbnQiLCJpc1R5cGUzRm9udCIsIml0YWxpYyIsImxvYWRlZE5hbWUiLCJtaW1ldHlwZSIsIm1pc3NpbmdGaWxlIiwibmFtZSIsInJlbWVhc3VyZSIsInN1YnR5cGUiLCJ0eXBlIiwidmVydGljYWwiXSxFPVsiY01hcCIsImRlZmF1bHRFbmNvZGluZyIsImRpZmZlcmVuY2VzIiwiaXNNb25vc3BhY2UiLCJpc1NlcmlmRm9udCIsImlzU3ltYm9saWNGb250Iiwic2VhY01hcCIsInRvRm9udENoYXIiLCJ0b1VuaWNvZGUiLCJ2bWV0cmljcyIsIndpZHRocyJdO2Z1bmN0aW9uIGooZSl7aWYoZS5mb250TWF0cml4JiZlLmZvbnRNYXRyaXhbMF0hPT1uLkZPTlRfSURFTlRJVFlfTUFUUklYWzBdKXt2YXIgdD0uMDAxL2UuZm9udE1hdHJpeFswXSxyPWUud2lkdGhzO2Zvcih2YXIgYSBpbiByKXJbYV0qPXQ7ZS5kZWZhdWx0V2lkdGgqPXR9fWZ1bmN0aW9uIE0oZSl7aWYoZS5mYWxsYmFja1RvVW5pY29kZSYmIShlLnRvVW5pY29kZSBpbnN0YW5jZW9mIGwuSWRlbnRpdHlUb1VuaWNvZGVNYXApKXt2YXIgdD1bXTtmb3IodmFyIHIgaW4gZS5mYWxsYmFja1RvVW5pY29kZSllLnRvVW5pY29kZS5oYXMocil8fCh0W3JdPWUuZmFsbGJhY2tUb1VuaWNvZGVbcl0pO3QubGVuZ3RoPjAmJmUudG9Vbmljb2RlLmFtZW5kKHQpfX12YXIgXz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCxyLG4sYSxpLG8scyxjLHUpe0EodGhpcyxlKSx0aGlzLm9yaWdpbmFsQ2hhckNvZGU9dCx0aGlzLmZvbnRDaGFyPXIsdGhpcy51bmljb2RlPW4sdGhpcy5hY2NlbnQ9YSx0aGlzLndpZHRoPWksdGhpcy52bWV0cmljPW8sdGhpcy5vcGVyYXRvckxpc3RJZD1zLHRoaXMuaXNTcGFjZT1jLHRoaXMuaXNJbkZvbnQ9dX1yZXR1cm4gRihlLFt7a2V5OiJjYXRlZ29yeSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsImNhdGVnb3J5IiwoMCxvLmdldENoYXJVbmljb2RlQ2F0ZWdvcnkpKHRoaXMudW5pY29kZSksITApfX0se2tleToibm9ybWFsaXplZFVuaWNvZGUiLGdldDpmdW5jdGlvbigpe3JldHVybigwLG4uc2hhZG93KSh0aGlzLCJub3JtYWxpemVkVW5pY29kZSIsKDAsby5yZXZlcnNlSWZSdGwpKGUuX05vcm1hbGl6ZWRVbmljb2Rlc1t0aGlzLnVuaWNvZGVdfHx0aGlzLnVuaWNvZGUpLCEwKX19XSxbe2tleToiX05vcm1hbGl6ZWRVbmljb2RlcyIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsIl9Ob3JtYWxpemVkVW5pY29kZXMiLCgwLG8uZ2V0Tm9ybWFsaXplZFVuaWNvZGVzKSgpKX19XSksZX0oKTtmdW5jdGlvbiBMKGUsdCl7cmV0dXJuKGU8PDgpK3R9ZnVuY3Rpb24gUihlLHQscil7ZVt0KzFdPXIsZVt0XT1yPj4+OH1mdW5jdGlvbiBOKGUsdCl7dmFyIHI9KGU8PDgpK3Q7cmV0dXJuIDMyNzY4JnI/ci02NTUzNjpyfWZ1bmN0aW9uIEQoZSl7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoZT4+OCYyNTUsMjU1JmUpfWZ1bmN0aW9uIEIoZSl7cmV0dXJuIGU+MzI3Njc/ZT0zMjc2NzplPC0zMjc2OCYmKGU9LTMyNzY4KSxTdHJpbmcuZnJvbUNoYXJDb2RlKGU+PjgmMjU1LDI1NSZlKX1mdW5jdGlvbiBVKGUpe3ZhciB0PWUucGVla0J5dGVzKDQpO3JldHVybiJ0dGNmIj09PSgwLG4uYnl0ZXNUb1N0cmluZykodCl9ZnVuY3Rpb24gJChlLHQpe2Zvcih2YXIgciBpbiB0KWVbK3JdPXRbcl19ZnVuY3Rpb24gWChlLHQscil7Zm9yKHZhciBuLGE9W10saT0wLHM9ZS5sZW5ndGg7aTxzO2krKyktMSE9PShuPSgwLG8uZ2V0VW5pY29kZUZvckdseXBoKShlW2ldLHQpKSYmKGFbaV09bik7Zm9yKHZhciBjIGluIHIpLTEhPT0obj0oMCxvLmdldFVuaWNvZGVGb3JHbHlwaCkocltjXSx0KSkmJihhWytjXT1uKTtyZXR1cm4gYX1mdW5jdGlvbiBIKGUsdCl7dmFyIHI9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0mJmFyZ3VtZW50c1syXTtzd2l0Y2godC5sZW5ndGgpe2Nhc2UgMTpyZXR1cm4gdC5jaGFyQ29kZUF0KDApO2Nhc2UgMjpyZXR1cm4gdC5jaGFyQ29kZUF0KDApPDw4fHQuY2hhckNvZGVBdCgxKX12YXIgYT0iVW5zdXBwb3J0ZWQgQ0lEIHN0cmluZyAoY2hhckNvZGUgIi5jb25jYXQoZSwnKTogIicpLmNvbmNhdCh0LCciLicpO2lmKHIpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoYSk7cmV0dXJuKDAsbi53YXJuKShhKSx0fWZ1bmN0aW9uIHEoZSx0LHIsYSl7dmFyIGk9T2JqZWN0LmNyZWF0ZShudWxsKSxvPW5ldyBNYXAscz1bXSxjPW5ldyBTZXQsdT0wLGw9UFt1XVswXSxmPWwsaD1QW3VdWzFdO2Zvcih2YXIgZCBpbiBlKXt2YXIgcD1lW2R8PTBdO2lmKHQocCkpe2lmKGY+aCl7aWYoKyt1Pj1QLmxlbmd0aCl7KDAsbi53YXJuKSgiUmFuIG91dCBvZiBzcGFjZSBpbiBmb250IHByaXZhdGUgdXNlIGFyZWEuIik7YnJlYWt9Zj1QW3VdWzBdLGg9UFt1XVsxXX12YXIgZz1mKys7MD09PXAmJihwPXIpO3ZhciB2PWEuZ2V0KGQpOyJzdHJpbmciPT10eXBlb2YgdiYmKHY9di5jb2RlUG9pbnRBdCgwKSksdiYmdjxsJiYhYy5oYXMocCkmJihvLnNldCh2LHApLGMuYWRkKHApKSxpW2ddPXAsc1tkXT1nfX1yZXR1cm57dG9Gb250Q2hhcjpzLGNoYXJDb2RlVG9HbHlwaElkOmksdG9Vbmljb2RlRXh0cmFNYXA6byxuZXh0QXZhaWxhYmxlRm9udENoYXJDb2RlOmZ9fWZ1bmN0aW9uIEcoZSx0LHIpe3ZhciBhLGksbyxzLGM9ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPVtdO2Zvcih2YXIgYSBpbiBlKWVbYV0+PXJ8fG4ucHVzaCh7Zm9udENoYXJDb2RlOjB8YSxnbHlwaElkOmVbYV19KTtpZih0KXt2YXIgaSxvPWsodCk7dHJ5e2ZvcihvLnMoKTshKGk9by5uKCkpLmRvbmU7KXt2YXIgcz13KGkudmFsdWUsMiksYz1zWzBdLHU9c1sxXTt1Pj1yfHxuLnB1c2goe2ZvbnRDaGFyQ29kZTpjLGdseXBoSWQ6dX0pfX1jYXRjaChlKXtvLmUoZSl9ZmluYWxseXtvLmYoKX19MD09PW4ubGVuZ3RoJiZuLnB1c2goe2ZvbnRDaGFyQ29kZTowLGdseXBoSWQ6MH0pLG4uc29ydCgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5mb250Q2hhckNvZGUtdC5mb250Q2hhckNvZGV9KSk7Zm9yKHZhciBsPVtdLGY9bi5sZW5ndGgsaD0wO2g8Zjspe3ZhciBkPW5baF0uZm9udENoYXJDb2RlLHA9W25baF0uZ2x5cGhJZF07KytoO2Zvcih2YXIgZz1kO2g8ZiYmZysxPT09bltoXS5mb250Q2hhckNvZGUmJihwLnB1c2gobltoXS5nbHlwaElkKSwrK2gsNjU1MzUhPSsrZyk7KTtsLnB1c2goW2QsZyxwXSl9cmV0dXJuIGx9KGUsdCxyKSx1PWMuYXQoLTEpWzFdPjY1NTM1PzI6MSxsPSJcMFwwIitEKHUpKyJcMANcMAEiKygwLG4uc3RyaW5nMzIpKDQrOCp1KTtmb3IoYT1jLmxlbmd0aC0xO2E+PTAmJiEoY1thXVswXTw9NjU1MzUpOy0tYSk7dmFyIGY9YSsxO2NbYV1bMF08NjU1MzUmJjY1NTM1PT09Y1thXVsxXSYmKGNbYV1bMV09NjU1MzQpO3ZhciBoLGQscCxnLHk9Y1thXVsxXTw2NTUzNT8xOjAsbT1mK3ksYj12Lk9wZW5UeXBlRmlsZUJ1aWxkZXIuZ2V0U2VhcmNoUGFyYW1zKG0sMiksUz0iIix4PSIiLE89IiIsQT0iIixDPSIiLEY9MDtmb3IoYT0wLGk9ZjthPGk7YSsrKXtkPShoPWNbYV0pWzBdLHA9aFsxXSxTKz1EKGQpLHgrPUQocCk7dmFyIFA9ITA7Zm9yKG89MSxzPShnPWhbMl0pLmxlbmd0aDtvPHM7KytvKWlmKGdbb10hPT1nW28tMV0rMSl7UD0hMTticmVha31pZihQKU8rPUQoZ1swXS1kJjY1NTM1KSxBKz1EKDApO2Vsc2V7dmFyIFQ9MioobS1hKSsyKkY7Zm9yKEYrPXAtZCsxLE8rPUQoMCksQSs9RChUKSxvPTAscz1nLmxlbmd0aDtvPHM7KytvKUMrPUQoZ1tvXSl9fXk+MCYmKHgrPSLDv8O/IixTKz0iw7/DvyIsTys9IlwwASIsQSs9IlwwXDAiKTt2YXIgST0iXDBcMCIrRCgyKm0pK0QoYi5yYW5nZSkrRChiLmVudHJ5KStEKGIucmFuZ2VTaGlmdCkreCsiXDBcMCIrUytPK0ErQyxFPSIiLGo9IiI7aWYodT4xKXtmb3IobCs9IlwwA1wwXG4iKygwLG4uc3RyaW5nMzIpKDQrOCp1KzQrSS5sZW5ndGgpLEU9IiIsYT0wLGk9Yy5sZW5ndGg7YTxpO2ErKyl7ZD0oaD1jW2FdKVswXTt2YXIgTT0oZz1oWzJdKVswXTtmb3Iobz0xLHM9Zy5sZW5ndGg7bzxzOysrbylnW29dIT09Z1tvLTFdKzEmJihwPWhbMF0rby0xLEUrPSgwLG4uc3RyaW5nMzIpKGQpKygwLG4uc3RyaW5nMzIpKHApKygwLG4uc3RyaW5nMzIpKE0pLGQ9cCsxLE09Z1tvXSk7RSs9KDAsbi5zdHJpbmczMikoZCkrKDAsbi5zdHJpbmczMikoaFsxXSkrKDAsbi5zdHJpbmczMikoTSl9aj0iXDBcZlwwXDAiKygwLG4uc3RyaW5nMzIpKEUubGVuZ3RoKzE2KSsiXDBcMFwwXDAiKygwLG4uc3RyaW5nMzIpKEUubGVuZ3RoLzEyKX1yZXR1cm4gbCsiXDAEIitEKEkubGVuZ3RoKzQpK0kraitFfWZ1bmN0aW9uIHooZSx0LHIpe3I9cnx8e3VuaXRzUGVyRW06MCx5TWF4OjAseU1pbjowLGFzY2VudDowLGRlc2NlbnQ6MH07dmFyIGE9MCxpPTAscz0wLGM9MCx1PW51bGwsbD0wO2lmKHQpe2Zvcih2YXIgZiBpbiB0KXsodT4oZnw9MCl8fCF1KSYmKHU9ZiksbDxmJiYobD1mKTt2YXIgaD0oMCxvLmdldFVuaWNvZGVSYW5nZUZvcikoZik7aWYoaDwzMilhfD0xPDxoO2Vsc2UgaWYoaDw2NClpfD0xPDxoLTMyO2Vsc2UgaWYoaDw5NilzfD0xPDxoLTY0O2Vsc2V7aWYoIShoPDEyMykpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIlVuaWNvZGUgcmFuZ2VzIEJpdHMgPiAxMjMgYXJlIHJlc2VydmVkIGZvciBpbnRlcm5hbCB1c2FnZSIpO2N8PTE8PGgtOTZ9fWw+NjU1MzUmJihsPTY1NTM1KX1lbHNlIHU9MCxsPTI1NTt2YXIgZD1lLmJib3h8fFswLDAsMCwwXSxwPXIudW5pdHNQZXJFbXx8MS8oZS5mb250TWF0cml4fHxuLkZPTlRfSURFTlRJVFlfTUFUUklYKVswXSxnPWUuYXNjZW50U2NhbGVkPzE6cC9ULHY9ci5hc2NlbnR8fE1hdGgucm91bmQoZyooZS5hc2NlbnR8fGRbM10pKSx5PXIuZGVzY2VudHx8TWF0aC5yb3VuZChnKihlLmRlc2NlbnR8fGRbMV0pKTt5PjAmJmUuZGVzY2VudD4wJiZkWzFdPDAmJih5PS15KTt2YXIgbT1yLnlNYXh8fHYsYj0tci55TWlufHwteTtyZXR1cm4iXDADAiQBw7RcMAVcMFwwAsKKAsK7XDBcMFwwwowCwooCwrtcMFwwAcOfXHgwMDEBAlwwXDBcMFwwBiIrU3RyaW5nLmZyb21DaGFyQ29kZShlLmZpeGVkUGl0Y2g/OTowKSsiXDBcMFwwXDBcMFwwIisoMCxuLnN0cmluZzMyKShhKSsoMCxuLnN0cmluZzMyKShpKSsoMCxuLnN0cmluZzMyKShzKSsoMCxuLnN0cmluZzMyKShjKSsiKjIxKiIrRChlLml0YWxpY0FuZ2xlPzE6MCkrRCh1fHxlLmZpcnN0Q2hhcikrRChsfHxlLmxhc3RDaGFyKStEKHYpK0QoeSkrIlwwZCIrRChtKStEKGIpKyJcMFwwXDBcMFwwXDBcMFwwIitEKGUueEhlaWdodCkrRChlLmNhcEhlaWdodCkrRCgwKStEKHV8fGUuZmlyc3RDaGFyKSsiXDADIn1mdW5jdGlvbiBXKGUpe3ZhciB0PU1hdGguZmxvb3IoZS5pdGFsaWNBbmdsZSpNYXRoLnBvdygyLDE2KSk7cmV0dXJuIlwwA1wwXDAiKygwLG4uc3RyaW5nMzIpKHQpKyJcMFwwXDBcMCIrKDAsbi5zdHJpbmczMikoZS5maXhlZFBpdGNoPzE6MCkrIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIn1mdW5jdGlvbiBWKGUpe3JldHVybiBlLnJlcGxhY2UoL1teXHgyMS1ceDdFXXxbW1xdKCl7fTw+LyVdL2csIiIpLnNsaWNlKDAsNjMpfWZ1bmN0aW9uIFkoZSx0KXt0fHwodD1bW10sW11dKTt2YXIgcixuLGEsaSxvLHM9W3RbMF1bMF18fCJPcmlnaW5hbCBsaWNlbmNlIix0WzBdWzFdfHxlLHRbMF1bMl18fCJVbmtub3duIix0WzBdWzNdfHwidW5pcXVlSUQiLHRbMF1bNF18fGUsdFswXVs1XXx8IlZlcnNpb24gMC4xMSIsdFswXVs2XXx8VihlKSx0WzBdWzddfHwiVW5rbm93biIsdFswXVs4XXx8IlVua25vd24iLHRbMF1bOV18fCJVbmtub3duIl0sYz1bXTtmb3Iocj0wLG49cy5sZW5ndGg7cjxuO3IrKyl7dmFyIHU9W107Zm9yKGE9MCxpPShvPXRbMV1bcl18fHNbcl0pLmxlbmd0aDthPGk7YSsrKXUucHVzaChEKG8uY2hhckNvZGVBdChhKSkpO2MucHVzaCh1LmpvaW4oIiIpKX12YXIgbD1bcyxjXSxmPVsiXDABIiwiXDADIl0saD1bIlwwXDAiLCJcMAEiXSxkPVsiXDBcMCIsIgRcdCJdLHA9cy5sZW5ndGgqZi5sZW5ndGgsZz0iXDBcMCIrRChwKStEKDEyKnArNiksdj0wO2ZvcihyPTAsbj1mLmxlbmd0aDtyPG47cisrKXt2YXIgeT1sW3JdO2ZvcihhPTAsaT15Lmxlbmd0aDthPGk7YSsrKW89eVthXSxnKz1mW3JdK2hbcl0rZFtyXStEKGEpK0Qoby5sZW5ndGgpK0Qodiksdis9by5sZW5ndGh9cmV0dXJuIGcrKHMuam9pbigiIikrYy5qb2luKCIiKSl9dmFyIEs9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQscixhKXtBKHRoaXMsZSksdGhpcy5uYW1lPXQsdGhpcy5wc05hbWU9bnVsbCx0aGlzLm1pbWV0eXBlPW51bGwsdGhpcy5kaXNhYmxlRm9udEZhY2U9ITEsdGhpcy5sb2FkZWROYW1lPWEubG9hZGVkTmFtZSx0aGlzLmlzVHlwZTNGb250PWEuaXNUeXBlM0ZvbnQsdGhpcy5taXNzaW5nRmlsZT0hMSx0aGlzLmNzc0ZvbnRJbmZvPWEuY3NzRm9udEluZm8sdGhpcy5fY2hhcnNDYWNoZT1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMuX2dseXBoQ2FjaGU9T2JqZWN0LmNyZWF0ZShudWxsKTt2YXIgbz0hIShhLmZsYWdzJmkuRm9udEZsYWdzLlNlcmlmKTtpZighbyYmIWEuaXNTaW11bGF0ZWRGbGFncyl7dmFyIHMsYz10LnJlcGxhY2UoL1ssX10vZywiLSIpLnNwbGl0KCItIilbMF0sbD0oMCx1LmdldFNlcmlmRm9udHMpKCksaD1rKGMuc3BsaXQoIisiKSk7dHJ5e2ZvcihoLnMoKTshKHM9aC5uKCkpLmRvbmU7KWlmKGxbcy52YWx1ZV0pe289ITA7YnJlYWt9fWNhdGNoKGUpe2guZShlKX1maW5hbGx5e2guZigpfX10aGlzLmlzU2VyaWZGb250PW8sdGhpcy5pc1N5bWJvbGljRm9udD0hIShhLmZsYWdzJmkuRm9udEZsYWdzLlN5bWJvbGljKSx0aGlzLmlzTW9ub3NwYWNlPSEhKGEuZmxhZ3MmaS5Gb250RmxhZ3MuRml4ZWRQaXRjaCk7dmFyIGQ9YS50eXBlLHA9YS5zdWJ0eXBlO3RoaXMudHlwZT1kLHRoaXMuc3VidHlwZT1wO3ZhciBnPXQubWF0Y2goL15JbnZhbGlkUERGanNGb250XyguKilfXGQrJC8pO2lmKHRoaXMuaXNJbnZhbGlkUERGanNGb250PSEhZyx0aGlzLmlzSW52YWxpZFBERmpzRm9udD90aGlzLmZhbGxiYWNrTmFtZT1nWzFdOnRoaXMuaXNNb25vc3BhY2U/dGhpcy5mYWxsYmFja05hbWU9Im1vbm9zcGFjZSI6dGhpcy5pc1NlcmlmRm9udD90aGlzLmZhbGxiYWNrTmFtZT0ic2VyaWYiOnRoaXMuZmFsbGJhY2tOYW1lPSJzYW5zLXNlcmlmIix0aGlzLmRpZmZlcmVuY2VzPWEuZGlmZmVyZW5jZXMsdGhpcy53aWR0aHM9YS53aWR0aHMsdGhpcy5kZWZhdWx0V2lkdGg9YS5kZWZhdWx0V2lkdGgsdGhpcy5jb21wb3NpdGU9YS5jb21wb3NpdGUsdGhpcy5jTWFwPWEuY01hcCx0aGlzLmNhcEhlaWdodD1hLmNhcEhlaWdodC9ULHRoaXMuYXNjZW50PWEuYXNjZW50L1QsdGhpcy5kZXNjZW50PWEuZGVzY2VudC9ULHRoaXMubGluZUhlaWdodD10aGlzLmFzY2VudC10aGlzLmRlc2NlbnQsdGhpcy5mb250TWF0cml4PWEuZm9udE1hdHJpeCx0aGlzLmJib3g9YS5iYm94LHRoaXMuZGVmYXVsdEVuY29kaW5nPWEuZGVmYXVsdEVuY29kaW5nLHRoaXMudG9Vbmljb2RlPWEudG9Vbmljb2RlLHRoaXMudG9Gb250Q2hhcj1bXSwiVHlwZTMiIT09YS50eXBlKXtpZih0aGlzLmNpZEVuY29kaW5nPWEuY2lkRW5jb2Rpbmd8fCIiLHRoaXMudmVydGljYWw9ISFhLnZlcnRpY2FsLHRoaXMudmVydGljYWwmJih0aGlzLnZtZXRyaWNzPWEudm1ldHJpY3MsdGhpcy5kZWZhdWx0Vk1ldHJpY3M9YS5kZWZhdWx0Vk1ldHJpY3MpLCFyfHxyLmlzRW1wdHkpcmV0dXJuIHImJigwLG4ud2FybikoJ0ZvbnQgZmlsZSBpcyBlbXB0eSBpbiAiJyt0KyciICgnK3RoaXMubG9hZGVkTmFtZSsiKSIpLHZvaWQgdGhpcy5mYWxsYmFja1RvU3lzdGVtRm9udChhKTt2YXIgdixtPXcoZnVuY3Rpb24oZSx0KXt2YXIgcixhLGk9dC50eXBlLG89dC5zdWJ0eXBlLHM9dC5jb21wb3NpdGU7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciB0PWUucGVla0J5dGVzKDQpO3JldHVybiA2NTUzNj09PSgwLHkucmVhZFVpbnQzMikodCwwKXx8InRydWUiPT09KDAsbi5ieXRlc1RvU3RyaW5nKSh0KX0oZSl8fFUoZSk/cj1zPyJDSURGb250VHlwZTIiOiJUcnVlVHlwZSI6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5wZWVrQnl0ZXMoNCk7cmV0dXJuIk9UVE8iPT09KDAsbi5ieXRlc1RvU3RyaW5nKSh0KX0oZSk/cj1zPyJDSURGb250VHlwZTIiOiJPcGVuVHlwZSI6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5wZWVrQnl0ZXMoMik7cmV0dXJuIDM3PT09dFswXSYmMzM9PT10WzFdfHwxMjg9PT10WzBdJiYxPT09dFsxXX0oZSk/cj1zPyJDSURGb250VHlwZTAiOiJNTVR5cGUxIj09PWk/Ik1NVHlwZTEiOiJUeXBlMSI6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5wZWVrQnl0ZXMoNCk7cmV0dXJuIHRbMF0+PTEmJnRbM10+PTEmJnRbM108PTR9KGUpP3M/KHI9IkNJREZvbnRUeXBlMCIsYT0iQ0lERm9udFR5cGUwQyIpOihyPSJNTVR5cGUxIj09PWk/Ik1NVHlwZTEiOiJUeXBlMSIsYT0iVHlwZTFDIik6KCgwLG4ud2FybikoImdldEZvbnRGaWxlVHlwZTogVW5hYmxlIHRvIGRldGVjdCBjb3JyZWN0IGZvbnQgZmlsZSBUeXBlL1N1YnR5cGUuIikscj1pLGE9byksW3IsYV19KHIsYSksMik7ZD1tWzBdLHA9bVsxXSxkPT09dGhpcy50eXBlJiZwPT09dGhpcy5zdWJ0eXBlfHwoMCxuLmluZm8pKCJJbmNvbnNpc3RlbnQgZm9udCBmaWxlIFR5cGUvU3ViVHlwZSwgZXhwZWN0ZWQ6ICIrIiIuY29uY2F0KHRoaXMudHlwZSwiLyIpLmNvbmNhdCh0aGlzLnN1YnR5cGUsIiBidXQgZm91bmQ6ICIpLmNvbmNhdChkLCIvIikuY29uY2F0KHAsIi4iKSk7dHJ5e3N3aXRjaChkKXtjYXNlIk1NVHlwZTEiOigwLG4uaW5mbykoIk1NVHlwZTEgZm9udCAoIit0KyIpLCBmYWxsaW5nIGJhY2sgdG8gVHlwZTEuIik7Y2FzZSJUeXBlMSI6Y2FzZSJDSURGb250VHlwZTAiOnRoaXMubWltZXR5cGU9ImZvbnQvb3BlbnR5cGUiO3ZhciBTPSJUeXBlMUMiPT09cHx8IkNJREZvbnRUeXBlMEMiPT09cD9uZXcgZi5DRkZGb250KHIsYSk6bmV3IGIuVHlwZTFGb250KHQscixhKTtqKGEpLHY9dGhpcy5jb252ZXJ0KHQsUyxhKTticmVhaztjYXNlIk9wZW5UeXBlIjpjYXNlIlRydWVUeXBlIjpjYXNlIkNJREZvbnRUeXBlMiI6dGhpcy5taW1ldHlwZT0iZm9udC9vcGVudHlwZSIsdj10aGlzLmNoZWNrQW5kUmVwYWlyKHQscixhKSx0aGlzLmlzT3BlblR5cGUmJihqKGEpLGQ9Ik9wZW5UeXBlIik7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiRm9udCAiLmNvbmNhdChkLCIgaXMgbm90IHN1cHBvcnRlZCIpKX19Y2F0Y2goZSl7cmV0dXJuKDAsbi53YXJuKShlKSx2b2lkIHRoaXMuZmFsbGJhY2tUb1N5c3RlbUZvbnQoYSl9TShhKSx0aGlzLmRhdGE9dix0aGlzLmZvbnRUeXBlPSgwLGkuZ2V0Rm9udFR5cGUpKGQscCxhLmlzU3RhbmRhcmRGb250KSx0aGlzLmZvbnRNYXRyaXg9YS5mb250TWF0cml4LHRoaXMud2lkdGhzPWEud2lkdGhzLHRoaXMuZGVmYXVsdFdpZHRoPWEuZGVmYXVsdFdpZHRoLHRoaXMudG9Vbmljb2RlPWEudG9Vbmljb2RlLHRoaXMuc2VhY01hcD1hLnNlYWNNYXB9ZWxzZXtmb3IodmFyIHg9MDt4PDI1Njt4KyspdGhpcy50b0ZvbnRDaGFyW3hdPXRoaXMuZGlmZmVyZW5jZXNbeF18fGEuZGVmYXVsdEVuY29kaW5nW3hdO3RoaXMuZm9udFR5cGU9bi5Gb250VHlwZS5UWVBFM319cmV0dXJuIEYoZSxbe2tleToicmVuZGVyZXIiLGdldDpmdW5jdGlvbigpe3ZhciBlPWguRm9udFJlbmRlcmVyRmFjdG9yeS5jcmVhdGUodGhpcyxpLlNFQUNfQU5BTFlTSVNfRU5BQkxFRCk7cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsInJlbmRlcmVyIixlKX19LHtrZXk6ImV4cG9ydERhdGEiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGUsdCxyLG49YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0mJmFyZ3VtZW50c1swXT9bXS5jb25jYXQoSSxFKTpJLGE9T2JqZWN0LmNyZWF0ZShudWxsKSxpPWsobik7dHJ5e2ZvcihpLnMoKTshKHI9aS5uKCkpLmRvbmU7KXZvaWQgMCE9PSh0PXRoaXNbZT1yLnZhbHVlXSkmJihhW2VdPXQpfWNhdGNoKGUpe2kuZShlKX1maW5hbGx5e2kuZigpfXJldHVybiBhfX0se2tleToiZmFsbGJhY2tUb1N5c3RlbUZvbnQiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7dGhpcy5taXNzaW5nRmlsZT0hMDt2YXIgcj10aGlzLm5hbWUsYT10aGlzLnR5cGUsZj10aGlzLnN1YnR5cGUsaD0oMCxpLm5vcm1hbGl6ZUZvbnROYW1lKShyKSxwPSgwLHUuZ2V0U3RkRm9udE1hcCkoKSxnPSgwLHUuZ2V0Tm9uU3RkRm9udE1hcCkoKSx2PSEhcFtoXSx5PSEoIWdbaF18fCFwW2dbaF1dKTtoPXBbaF18fGdbaF18fGg7dmFyIG09KDAsZC5nZXRGb250QmFzaWNNZXRyaWNzKSgpW2hdO20mJihpc05hTih0aGlzLmFzY2VudCkmJih0aGlzLmFzY2VudD1tLmFzY2VudC9UKSxpc05hTih0aGlzLmRlc2NlbnQpJiYodGhpcy5kZXNjZW50PW0uZGVzY2VudC9UKSxpc05hTih0aGlzLmNhcEhlaWdodCkmJih0aGlzLmNhcEhlaWdodD1tLmNhcEhlaWdodC9UKSksdGhpcy5ib2xkPS9ib2xkL2dpLnRlc3QoaCksdGhpcy5pdGFsaWM9L29ibGlxdWV8aXRhbGljL2dpLnRlc3QoaCksdGhpcy5ibGFjaz0vQmxhY2svZy50ZXN0KHIpO3ZhciBiPS9OYXJyb3cvZy50ZXN0KHIpO2lmKHRoaXMucmVtZWFzdXJlPSghdnx8YikmJk9iamVjdC5rZXlzKHRoaXMud2lkdGhzKS5sZW5ndGg+MCwodnx8eSkmJiJDSURGb250VHlwZTIiPT09YSYmdGhpcy5jaWRFbmNvZGluZy5zdGFydHNXaXRoKCJJZGVudGl0eS0iKSl7dmFyIHc9ZS5jaWRUb0dpZE1hcCxrPVtdO2lmKCQoaywoMCx1LmdldEdseXBoTWFwRm9yU3RhbmRhcmRGb250cykoKSksL0FyaWFsLT9CbGFjay9pLnRlc3Qocik/JChrLCgwLHUuZ2V0U3VwcGxlbWVudGFsR2x5cGhNYXBGb3JBcmlhbEJsYWNrKSgpKTovQ2FsaWJyaS9pLnRlc3QocikmJiQoaywoMCx1LmdldFN1cHBsZW1lbnRhbEdseXBoTWFwRm9yQ2FsaWJyaSkoKSksdyl7Zm9yKHZhciBTIGluIGspe3ZhciB4PWtbU107dm9pZCAwIT09d1t4XSYmKGtbK1NdPXdbeF0pfXcubGVuZ3RoIT09dGhpcy50b1VuaWNvZGUubGVuZ3RoJiZlLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwJiZ0aGlzLnRvVW5pY29kZSBpbnN0YW5jZW9mIGwuSWRlbnRpdHlUb1VuaWNvZGVNYXAmJnRoaXMudG9Vbmljb2RlLmZvckVhY2goKGZ1bmN0aW9uKGUsdCl7dmFyIHI9a1tlXTt2b2lkIDA9PT13W3JdJiYoa1srZV09dCl9KSl9dGhpcy50b1VuaWNvZGUgaW5zdGFuY2VvZiBsLklkZW50aXR5VG9Vbmljb2RlTWFwfHx0aGlzLnRvVW5pY29kZS5mb3JFYWNoKChmdW5jdGlvbihlLHQpe2tbK2VdPXR9KSksdGhpcy50b0ZvbnRDaGFyPWssdGhpcy50b1VuaWNvZGU9bmV3IGwuVG9Vbmljb2RlTWFwKGspfWVsc2UgaWYoL1N5bWJvbC9pLnRlc3QoaCkpdGhpcy50b0ZvbnRDaGFyPVgoYy5TeW1ib2xTZXRFbmNvZGluZywoMCxzLmdldEdseXBoc1VuaWNvZGUpKCksdGhpcy5kaWZmZXJlbmNlcyk7ZWxzZSBpZigvRGluZ2JhdHMvaS50ZXN0KGgpKS9XaW5nZGluZ3MvaS50ZXN0KHIpJiYoMCxuLndhcm4pKCJOb24tZW1iZWRkZWQgV2luZ2RpbmdzIGZvbnQsIGZhbGxpbmcgYmFjayB0byBaYXBmRGluZ2JhdHMuIiksdGhpcy50b0ZvbnRDaGFyPVgoYy5aYXBmRGluZ2JhdHNFbmNvZGluZywoMCxzLmdldERpbmdiYXRzR2x5cGhzVW5pY29kZSkoKSx0aGlzLmRpZmZlcmVuY2VzKTtlbHNlIGlmKHYpe3ZhciBPPVgodGhpcy5kZWZhdWx0RW5jb2RpbmcsKDAscy5nZXRHbHlwaHNVbmljb2RlKSgpLHRoaXMuZGlmZmVyZW5jZXMpOyJDSURGb250VHlwZTIiIT09YXx8dGhpcy5jaWRFbmNvZGluZy5zdGFydHNXaXRoKCJJZGVudGl0eS0iKXx8dGhpcy50b1VuaWNvZGUgaW5zdGFuY2VvZiBsLklkZW50aXR5VG9Vbmljb2RlTWFwfHx0aGlzLnRvVW5pY29kZS5mb3JFYWNoKChmdW5jdGlvbihlLHQpe09bK2VdPXR9KSksdGhpcy50b0ZvbnRDaGFyPU99ZWxzZXt2YXIgQT0oMCxzLmdldEdseXBoc1VuaWNvZGUpKCksQz1bXTt0aGlzLnRvVW5pY29kZS5mb3JFYWNoKChmdW5jdGlvbihlLHIpe2lmKCF0LmNvbXBvc2l0ZSl7dmFyIG49dC5kaWZmZXJlbmNlc1tlXXx8dC5kZWZhdWx0RW5jb2RpbmdbZV0sYT0oMCxvLmdldFVuaWNvZGVGb3JHbHlwaCkobixBKTstMSE9PWEmJihyPWEpfUNbK2VdPXJ9KSksdGhpcy5jb21wb3NpdGUmJnRoaXMudG9Vbmljb2RlIGluc3RhbmNlb2YgbC5JZGVudGl0eVRvVW5pY29kZU1hcCYmL1RhaG9tYXxWZXJkYW5hL2kudGVzdChyKSYmJChDLCgwLHUuZ2V0R2x5cGhNYXBGb3JTdGFuZGFyZEZvbnRzKSgpKSx0aGlzLnRvRm9udENoYXI9Q31NKGUpLHRoaXMubG9hZGVkTmFtZT1oLnNwbGl0KCItIilbMF0sdGhpcy5mb250VHlwZT0oMCxpLmdldEZvbnRUeXBlKShhLGYsZS5pc1N0YW5kYXJkRm9udCl9fSx7a2V5OiJjaGVja0FuZFJlcGFpciIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIpe3ZhciBvPVsiT1MvMiIsImNtYXAiLCJoZWFkIiwiaGhlYSIsImhtdHgiLCJtYXhwIiwibmFtZSIsInBvc3QiLCJsb2NhIiwiZ2x5ZiIsImZwZ20iLCJwcmVwIiwiY3Z0ICIsIkNGRiAiXTtmdW5jdGlvbiB1KGUsdCl7dmFyIHI9T2JqZWN0LmNyZWF0ZShudWxsKTtyWyJPUy8yIl09bnVsbCxyLmNtYXA9bnVsbCxyLmhlYWQ9bnVsbCxyLmhoZWE9bnVsbCxyLmhtdHg9bnVsbCxyLm1heHA9bnVsbCxyLm5hbWU9bnVsbCxyLnBvc3Q9bnVsbDtmb3IodmFyIG49MDtuPHQ7bisrKXt2YXIgYT1oKGUpO28uaW5jbHVkZXMoYS50YWcpJiYwIT09YS5sZW5ndGgmJihyW2EudGFnXT1hKX1yZXR1cm4gcn1mdW5jdGlvbiBoKGUpe3ZhciB0PWUuZ2V0U3RyaW5nKDQpLHI9ZS5nZXRJbnQzMigpPj4+MCxuPWUuZ2V0SW50MzIoKT4+PjAsYT1lLmdldEludDMyKCk+Pj4wLGk9ZS5wb3M7ZS5wb3M9ZS5zdGFydHx8MCxlLnNraXAobik7dmFyIG89ZS5nZXRCeXRlcyhhKTtyZXR1cm4gZS5wb3M9aSwiaGVhZCI9PT10JiYob1s4XT1vWzldPW9bMTBdPW9bMTFdPTAsb1sxN118PTMyKSx7dGFnOnQsY2hlY2tzdW06cixsZW5ndGg6YSxvZmZzZXQ6bixkYXRhOm99fWZ1bmN0aW9uIGQoZSl7cmV0dXJue3ZlcnNpb246ZS5nZXRTdHJpbmcoNCksbnVtVGFibGVzOmUuZ2V0VWludDE2KCksc2VhcmNoUmFuZ2U6ZS5nZXRVaW50MTYoKSxlbnRyeVNlbGVjdG9yOmUuZ2V0VWludDE2KCkscmFuZ2VTaGlmdDplLmdldFVpbnQxNigpfX1mdW5jdGlvbiB5KGUsdCxyLG4sYSxpKXt2YXIgbz17bGVuZ3RoOjAsc2l6ZU9mSW5zdHJ1Y3Rpb25zOjB9O2lmKHItdDw9MTIpcmV0dXJuIG87dmFyIHM9ZS5zdWJhcnJheSh0LHIpLGM9TihzWzBdLHNbMV0pO2lmKGM8MClyZXR1cm4gUihzLDAsYz0tMSksbi5zZXQocyxhKSxvLmxlbmd0aD1zLmxlbmd0aCxvO3ZhciB1LGw9MTAsZj0wO2Zvcih1PTA7dTxjO3UrKylmPTErKHNbbF08PDh8c1tsKzFdKSxsKz0yO3ZhciBoPWwsZD1zW2xdPDw4fHNbbCsxXTtvLnNpemVPZkluc3RydWN0aW9ucz1kO3ZhciBwPWwrPTIrZCxnPTA7Zm9yKHU9MDt1PGY7dSsrKXt2YXIgdj1zW2wrK107MTkyJnYmJihzW2wtMV09NjMmdik7dmFyIHk9MjsyJnY/eT0xOjE2JnYmJih5PTApO3ZhciBtPTI7NCZ2P209MTozMiZ2JiYobT0wKTt2YXIgYj15K207aWYoZys9Yiw4JnYpe3ZhciB3PXNbbCsrXTt1Kz13LGcrPXcqYn19aWYoMD09PWcpcmV0dXJuIG87dmFyIGs9bCtnO3JldHVybiBrPnMubGVuZ3RoP286IWkmJmQ+MD8obi5zZXQocy5zdWJhcnJheSgwLGgpLGEpLG4uc2V0KFswLDBdLGEraCksbi5zZXQocy5zdWJhcnJheShwLGspLGEraCsyKSxrLT1kLHMubGVuZ3RoLWs+MyYmKGs9ayszJi00KSxvLmxlbmd0aD1rLG8pOnMubGVuZ3RoLWs+Mz8oaz1rKzMmLTQsbi5zZXQocy5zdWJhcnJheSgwLGspLGEpLG8ubGVuZ3RoPWssbyk6KG4uc2V0KHMsYSksby5sZW5ndGg9cy5sZW5ndGgsbyl9ZnVuY3Rpb24gYihlKXt2YXIgcj0odC5zdGFydHx8MCkrZS5vZmZzZXQ7dC5wb3M9cjt2YXIgbj1bW10sW11dLGE9ZS5sZW5ndGgsaT1yK2E7aWYoMCE9PXQuZ2V0VWludDE2KCl8fGE8NilyZXR1cm4gbjt2YXIgbyxzLGM9dC5nZXRVaW50MTYoKSx1PXQuZ2V0VWludDE2KCksbD1bXTtmb3Iobz0wO288YyYmdC5wb3MrMTI8PWk7bysrKXt2YXIgZj17cGxhdGZvcm06dC5nZXRVaW50MTYoKSxlbmNvZGluZzp0LmdldFVpbnQxNigpLGxhbmd1YWdlOnQuZ2V0VWludDE2KCksbmFtZTp0LmdldFVpbnQxNigpLGxlbmd0aDp0LmdldFVpbnQxNigpLG9mZnNldDp0LmdldFVpbnQxNigpfTsoMT09PWYucGxhdGZvcm0mJjA9PT1mLmVuY29kaW5nJiYwPT09Zi5sYW5ndWFnZXx8Mz09PWYucGxhdGZvcm0mJjE9PT1mLmVuY29kaW5nJiYxMDMzPT09Zi5sYW5ndWFnZSkmJmwucHVzaChmKX1mb3Iobz0wLHM9bC5sZW5ndGg7bzxzO28rKyl7dmFyIGg9bFtvXTtpZighKGgubGVuZ3RoPD0wKSl7dmFyIGQ9cit1K2gub2Zmc2V0O2lmKCEoZCtoLmxlbmd0aD5pKSl7dC5wb3M9ZDt2YXIgcD1oLm5hbWU7aWYoaC5lbmNvZGluZyl7Zm9yKHZhciBnPSIiLHY9MCx5PWgubGVuZ3RoO3Y8eTt2Kz0yKWcrPVN0cmluZy5mcm9tQ2hhckNvZGUodC5nZXRVaW50MTYoKSk7blsxXVtwXT1nfWVsc2UgblswXVtwXT10LmdldFN0cmluZyhoLmxlbmd0aCl9fX1yZXR1cm4gbn12YXIgdyxTLHgsTyxBPVswLDAsMCwwLDAsMCwwLDAsLTIsLTIsLTIsLTIsMCwwLC0yLC01LC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLDAsMCwtMSwwLC0xLC0xLC0xLC0xLDEsLTEsLTk5OSwwLDEsMCwtMSwtMiwwLC0xLC0yLC0xLC0xLDAsLTEsLTEsMCwwLC05OTksLTk5OSwtMSwtMSwtMSwtMSwtMiwtOTk5LC0yLC0yLC05OTksMCwtMiwtMiwwLDAsLTIsMCwtMiwwLDAsMCwtMiwtMSwtMSwxLDEsMCwwLC0xLC0xLC0xLC0xLC0xLC0xLC0xLDAsMCwtMSwwLC0xLC0xLDAsLTk5OSwtMSwtMSwtMSwtMSwtMSwtMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwtMiwtOTk5LC05OTksLTk5OSwtOTk5LC05OTksLTEsLTEsLTIsLTIsMCwwLDAsMCwtMSwtMSwtOTk5LC0yLC0yLDAsMCwtMSwtMiwtMiwwLDAsMCwtMSwtMSwtMSwtMl07ZnVuY3Rpb24gQyhlLHQpe2Zvcih2YXIgcixhLGksbyxzLGM9ZS5kYXRhLHU9MCxsPTAsZj0wLGg9W10sZD1bXSxwPVtdLGc9dC50b29Db21wbGV4VG9Gb2xsb3dGdW5jdGlvbnMsdj0hMSx5PTAsbT0wLGI9Yy5sZW5ndGg7dTxiOyl7dmFyIHc9Y1t1KytdO2lmKDY0PT09dylpZihhPWNbdSsrXSx2fHxtKXUrPWE7ZWxzZSBmb3Iocj0wO3I8YTtyKyspaC5wdXNoKGNbdSsrXSk7ZWxzZSBpZig2NT09PXcpaWYoYT1jW3UrK10sdnx8bSl1Kz0yKmE7ZWxzZSBmb3Iocj0wO3I8YTtyKyspaT1jW3UrK10saC5wdXNoKGk8PDh8Y1t1KytdKTtlbHNlIGlmKDE3Nj09KDI0OCZ3KSlpZihhPXctMTc2KzEsdnx8bSl1Kz1hO2Vsc2UgZm9yKHI9MDtyPGE7cisrKWgucHVzaChjW3UrK10pO2Vsc2UgaWYoMTg0PT0oMjQ4JncpKWlmKGE9dy0xODQrMSx2fHxtKXUrPTIqYTtlbHNlIGZvcihyPTA7cjxhO3IrKylpPWNbdSsrXSxoLnB1c2goaTw8OHxjW3UrK10pO2Vsc2UgaWYoNDMhPT13fHxnKWlmKDQ0IT09d3x8Zyl7aWYoNDU9PT13KWlmKHYpdj0hMSxsPXU7ZWxzZXtpZighKHM9ZC5wb3AoKSkpcmV0dXJuKDAsbi53YXJuKSgiVFQ6IEVOREYgYmFkIHN0YWNrIiksdm9pZCh0LmhpbnRzVmFsaWQ9ITEpO289cC5wb3AoKSxjPXMuZGF0YSx1PXMuaSx0LmZ1bmN0aW9uc1N0YWNrRGVsdGFzW29dPWgubGVuZ3RoLXMuc3RhY2tUb3B9ZWxzZSBpZigxMzc9PT13KSh2fHxtKSYmKCgwLG4ud2FybikoIlRUOiBuZXN0ZWQgSURFRnMgbm90IGFsbG93ZWQiKSxnPSEwKSx2PSEwLGY9dTtlbHNlIGlmKDg4PT09dykrK3k7ZWxzZSBpZigyNz09PXcpbT15O2Vsc2UgaWYoODk9PT13KW09PT15JiYobT0wKSwtLXk7ZWxzZSBpZigyOD09PXcmJiF2JiYhbSl7dmFyIGs9aC5hdCgtMSk7az4wJiYodSs9ay0xKX19ZWxzZSh2fHxtKSYmKCgwLG4ud2FybikoIlRUOiBuZXN0ZWQgRkRFRnMgbm90IGFsbG93ZWQiKSxnPSEwKSx2PSEwLGY9dSxvPWgucG9wKCksdC5mdW5jdGlvbnNEZWZpbmVkW29dPXtkYXRhOmMsaTp1fTtlbHNlIGlmKCF2JiYhbSlpZihvPWguYXQoLTEpLGlzTmFOKG8pKSgwLG4uaW5mbykoIlRUOiBDQUxMIGVtcHR5IHN0YWNrIChvciBpbnZhbGlkIGVudHJ5KS4iKTtlbHNlIGlmKHQuZnVuY3Rpb25zVXNlZFtvXT0hMCxvIGluIHQuZnVuY3Rpb25zU3RhY2tEZWx0YXMpe3ZhciBTPWgubGVuZ3RoK3QuZnVuY3Rpb25zU3RhY2tEZWx0YXNbb107aWYoUzwwKXJldHVybigwLG4ud2FybikoIlRUOiBDQUxMIGludmFsaWQgZnVuY3Rpb25zIHN0YWNrIGRlbHRhLiIpLHZvaWQodC5oaW50c1ZhbGlkPSExKTtoLmxlbmd0aD1TfWVsc2UgaWYobyBpbiB0LmZ1bmN0aW9uc0RlZmluZWQmJiFwLmluY2x1ZGVzKG8pKXtpZihkLnB1c2goe2RhdGE6YyxpOnUsc3RhY2tUb3A6aC5sZW5ndGgtMX0pLHAucHVzaChvKSwhKHM9dC5mdW5jdGlvbnNEZWZpbmVkW29dKSlyZXR1cm4oMCxuLndhcm4pKCJUVDogQ0FMTCBub24tZXhpc3RlbnQgZnVuY3Rpb24iKSx2b2lkKHQuaGludHNWYWxpZD0hMSk7Yz1zLmRhdGEsdT1zLml9aWYoIXYmJiFtKXt2YXIgeD0wO2Zvcih3PD0xNDI/eD1BW3ddOnc+PTE5MiYmdzw9MjIzP3g9LTE6dz49MjI0JiYoeD0tMiksdz49MTEzJiZ3PD0xMTcmJihhPWgucG9wKCksaXNOYU4oYSl8fCh4PTIqLWEpKTt4PDAmJmgubGVuZ3RoPjA7KWgucG9wKCkseCsrO2Zvcig7eD4wOyloLnB1c2goTmFOKSx4LS19fXQudG9vQ29tcGxleFRvRm9sbG93RnVuY3Rpb25zPWc7dmFyIE89W2NdO3U+Yy5sZW5ndGgmJk8ucHVzaChuZXcgVWludDhBcnJheSh1LWMubGVuZ3RoKSksZj5sJiYoKDAsbi53YXJuKSgiVFQ6IGNvbXBsZW1lbnRpbmcgYSBtaXNzaW5nIGZ1bmN0aW9uIHRhaWwiKSxPLnB1c2gobmV3IFVpbnQ4QXJyYXkoWzM0LDQ1XSkpKSxmdW5jdGlvbihlLHQpe2lmKHQubGVuZ3RoPjEpe3ZhciByLG4sYT0wO2ZvcihyPTAsbj10Lmxlbmd0aDtyPG47cisrKWErPXRbcl0ubGVuZ3RoO2E9YSszJi00O3ZhciBpPW5ldyBVaW50OEFycmF5KGEpLG89MDtmb3Iocj0wLG49dC5sZW5ndGg7cjxuO3IrKylpLnNldCh0W3JdLG8pLG8rPXRbcl0ubGVuZ3RoO2UuZGF0YT1pLGUubGVuZ3RoPWF9fShlLE8pfWlmKFUodD1uZXcgbS5TdHJlYW0obmV3IFVpbnQ4QXJyYXkodC5nZXRCeXRlcygpKSkpKXt2YXIgRj1mdW5jdGlvbihlLHQpe2Zvcih2YXIgcixhPWZ1bmN0aW9uKGUpe3ZhciB0PWUuZ2V0U3RyaW5nKDQpOygwLG4uYXNzZXJ0KSgidHRjZiI9PT10LCJNdXN0IGJlIGEgVHJ1ZVR5cGUgQ29sbGVjdGlvbiBmb250LiIpO2Zvcih2YXIgcj1lLmdldFVpbnQxNigpLGE9ZS5nZXRVaW50MTYoKSxpPWUuZ2V0SW50MzIoKT4+PjAsbz1bXSxzPTA7czxpO3MrKylvLnB1c2goZS5nZXRJbnQzMigpPj4+MCk7dmFyIGM9e3R0Y1RhZzp0LG1ham9yVmVyc2lvbjpyLG1pbm9yVmVyc2lvbjphLG51bUZvbnRzOmksb2Zmc2V0VGFibGU6b307c3dpdGNoKHIpe2Nhc2UgMTpyZXR1cm4gYztjYXNlIDI6cmV0dXJuIGMuZHNpZ1RhZz1lLmdldEludDMyKCk+Pj4wLGMuZHNpZ0xlbmd0aD1lLmdldEludDMyKCk+Pj4wLGMuZHNpZ09mZnNldD1lLmdldEludDMyKCk+Pj4wLGN9dGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIkludmFsaWQgVHJ1ZVR5cGUgQ29sbGVjdGlvbiBtYWpvclZlcnNpb246ICIuY29uY2F0KHIsIi4iKSl9KGUpLGk9YS5udW1Gb250cyxvPWEub2Zmc2V0VGFibGUscz10LnNwbGl0KCIrIiksYz0wO2M8aTtjKyspe2UucG9zPShlLnN0YXJ0fHwwKStvW2NdO3ZhciBsPWQoZSksZj11KGUsbC5udW1UYWJsZXMpO2lmKCFmLm5hbWUpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoJ1RydWVUeXBlIENvbGxlY3Rpb24gZm9udCBtdXN0IGNvbnRhaW4gYSAibmFtZSIgdGFibGUuJyk7Zm9yKHZhciBoPWIoZi5uYW1lKSxwPTAsZz1oLmxlbmd0aDtwPGc7cCsrKWZvcih2YXIgdj0wLHk9aFtwXS5sZW5ndGg7djx5O3YrKyl7dmFyIG09aFtwXVt2XSYmaFtwXVt2XS5yZXBsYWNlKC9ccy9nLCIiKTtpZihtKXtpZihtPT09dClyZXR1cm57aGVhZGVyOmwsdGFibGVzOmZ9O2lmKCEocy5sZW5ndGg8Mikpe3ZhciB3LFM9ayhzKTt0cnl7Zm9yKFMucygpOyEodz1TLm4oKSkuZG9uZTspe3ZhciB4PXcudmFsdWU7bT09PXgmJihyPXtuYW1lOngsaGVhZGVyOmwsdGFibGVzOmZ9KX19Y2F0Y2goZSl7Uy5lKGUpfWZpbmFsbHl7Uy5mKCl9fX19fWlmKHIpcmV0dXJuKDAsbi53YXJuKSgnVHJ1ZVR5cGUgQ29sbGVjdGlvbiBkb2VzIG5vdCBjb250YWluICInLmNvbmNhdCh0LCciIGZvbnQsICcpKydmYWxsaW5nIGJhY2sgdG8gIicuY29uY2F0KHIubmFtZSwnIiBmb250IGluc3RlYWQuJykpLHtoZWFkZXI6ci5oZWFkZXIsdGFibGVzOnIudGFibGVzfTt0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcignVHJ1ZVR5cGUgQ29sbGVjdGlvbiBkb2VzIG5vdCBjb250YWluICInLmNvbmNhdCh0LCciIGZvbnQuJykpfSh0LHRoaXMubmFtZSk7dz1GLmhlYWRlcixTPUYudGFibGVzfWVsc2Ugdz1kKHQpLFM9dSh0LHcubnVtVGFibGVzKTt2YXIgUD0hU1siQ0ZGICJdO2lmKFApe2lmKCFTLmxvY2EpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoJ1JlcXVpcmVkICJsb2NhIiB0YWJsZSBpcyBub3QgZm91bmQnKTtTLmdseWZ8fCgoMCxuLndhcm4pKCdSZXF1aXJlZCAiZ2x5ZiIgdGFibGUgaXMgbm90IGZvdW5kIC0tIHRyeWluZyB0byByZWNvdmVyLicpLFMuZ2x5Zj17dGFnOiJnbHlmIixkYXRhOm5ldyBVaW50OEFycmF5KDApfSksdGhpcy5pc09wZW5UeXBlPSExfWVsc2V7dmFyIFQ9ci5jb21wb3NpdGUmJigoci5jaWRUb0dpZE1hcHx8W10pLmxlbmd0aD4wfHwhKHIuY01hcCBpbnN0YW5jZW9mIGcuSWRlbnRpdHlDTWFwKSk7aWYoIk9UVE8iPT09dy52ZXJzaW9uJiYhVHx8IVMuaGVhZHx8IVMuaGhlYXx8IVMubWF4cHx8IVMucG9zdClyZXR1cm4gTz1uZXcgbS5TdHJlYW0oU1siQ0ZGICJdLmRhdGEpLHg9bmV3IGYuQ0ZGRm9udChPLHIpLGoociksdGhpcy5jb252ZXJ0KGUseCxyKTtkZWxldGUgUy5nbHlmLGRlbGV0ZSBTLmxvY2EsZGVsZXRlIFMuZnBnbSxkZWxldGUgUy5wcmVwLGRlbGV0ZSBTWyJjdnQgIl0sdGhpcy5pc09wZW5UeXBlPSEwfWlmKCFTLm1heHApdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoJ1JlcXVpcmVkICJtYXhwIiB0YWJsZSBpcyBub3QgZm91bmQnKTt0LnBvcz0odC5zdGFydHx8MCkrUy5tYXhwLm9mZnNldDt2YXIgST10LmdldEludDMyKCksRT10LmdldFVpbnQxNigpO2lmKHIuc2NhbGVGYWN0b3JzJiZyLnNjYWxlRmFjdG9ycy5sZW5ndGg9PT1FJiZQKXt2YXIgTT1yLnNjYWxlRmFjdG9ycyxfPUwoUy5oZWFkLmRhdGFbNTBdLFMuaGVhZC5kYXRhWzUxXSksRD1uZXcgcC5HbHlmVGFibGUoe2dseWZUYWJsZTpTLmdseWYuZGF0YSxpc0dseXBoTG9jYXRpb25zTG9uZzpfLGxvY2FUYWJsZTpTLmxvY2EuZGF0YSxudW1HbHlwaHM6RX0pO0Quc2NhbGUoTSk7dmFyIEI9RC53cml0ZSgpLCQ9Qi5nbHlmLFg9Qi5sb2NhLFY9Qi5pc0xvY2F0aW9uTG9uZztTLmdseWYuZGF0YT0kLFMubG9jYS5kYXRhPVgsViE9PSEhXyYmKFMuaGVhZC5kYXRhWzUwXT0wLFMuaGVhZC5kYXRhWzUxXT1WPzE6MCk7Zm9yKHZhciBLPVMuaG10eC5kYXRhLEo9MDtKPEU7SisrKXt2YXIgWj00KkosUT1NYXRoLnJvdW5kKE1bSl0qTChLW1pdLEtbWisxXSkpO0tbWl09UT4+OCYyNTUsS1taKzFdPTI1NSZRLFIoSyxaKzIsTWF0aC5yb3VuZChNW0pdKk4oS1taKzJdLEtbWiszXSkpKX19dmFyIGVlPUUrMSx0ZT0hMDtlZT42NTUzNSYmKHRlPSExLGVlPUUsKDAsbi53YXJuKSgiTm90IGVub3VnaCBzcGFjZSBpbiBnbHlmcyB0byBkdXBsaWNhdGUgZmlyc3QgZ2x5cGguIikpO3ZhciByZT0wLG5lPTA7ST49NjU1MzYmJlMubWF4cC5sZW5ndGg+PTIyJiYodC5wb3MrPTgsdC5nZXRVaW50MTYoKT4yJiYoUy5tYXhwLmRhdGFbMTRdPTAsUy5tYXhwLmRhdGFbMTVdPTIpLHQucG9zKz00LHJlPXQuZ2V0VWludDE2KCksdC5wb3MrPTQsbmU9dC5nZXRVaW50MTYoKSksUy5tYXhwLmRhdGFbNF09ZWU+PjgsUy5tYXhwLmRhdGFbNV09MjU1JmVlO3ZhciBhZT1mdW5jdGlvbihlLHQscixhKXt2YXIgaT17ZnVuY3Rpb25zRGVmaW5lZDpbXSxmdW5jdGlvbnNVc2VkOltdLGZ1bmN0aW9uc1N0YWNrRGVsdGFzOltdLHRvb0NvbXBsZXhUb0ZvbGxvd0Z1bmN0aW9uczohMSxoaW50c1ZhbGlkOiEwfTtpZihlJiZDKGUsaSksdCYmQyh0LGkpLGUmJmZ1bmN0aW9uKGUsdCl7aWYoIWUudG9vQ29tcGxleFRvRm9sbG93RnVuY3Rpb25zKXtpZihlLmZ1bmN0aW9uc0RlZmluZWQubGVuZ3RoPnQpcmV0dXJuKDAsbi53YXJuKSgiVFQ6IG1vcmUgZnVuY3Rpb25zIGRlZmluZWQgdGhhbiBleHBlY3RlZCIpLHZvaWQoZS5oaW50c1ZhbGlkPSExKTtmb3IodmFyIHI9MCxhPWUuZnVuY3Rpb25zVXNlZC5sZW5ndGg7cjxhO3IrKyl7aWYocj50KXJldHVybigwLG4ud2FybikoIlRUOiBpbnZhbGlkIGZ1bmN0aW9uIGlkOiAiK3IpLHZvaWQoZS5oaW50c1ZhbGlkPSExKTtpZihlLmZ1bmN0aW9uc1VzZWRbcl0mJiFlLmZ1bmN0aW9uc0RlZmluZWRbcl0pcmV0dXJuKDAsbi53YXJuKSgiVFQ6IHVuZGVmaW5lZCBmdW5jdGlvbjogIityKSx2b2lkKGUuaGludHNWYWxpZD0hMSl9fX0oaSxhKSxyJiYxJnIubGVuZ3RoKXt2YXIgbz1uZXcgVWludDhBcnJheShyLmxlbmd0aCsxKTtvLnNldChyLmRhdGEpLHIuZGF0YT1vfXJldHVybiBpLmhpbnRzVmFsaWR9KFMuZnBnbSxTLnByZXAsU1siY3Z0ICJdLHJlKTtpZihhZXx8KGRlbGV0ZSBTLmZwZ20sZGVsZXRlIFMucHJlcCxkZWxldGUgU1siY3Z0ICJdKSxmdW5jdGlvbihlLHQscixhLGksbyl7aWYodCl7ZS5wb3M9KGUuc3RhcnR8fDApK3Qub2Zmc2V0LGUucG9zKz00LGUucG9zKz0yLGUucG9zKz0yLGUucG9zKz0yLGUucG9zKz0yLGUucG9zKz0yLGUucG9zKz0yLGUucG9zKz0yLGUucG9zKz0yLGUucG9zKz0yO3ZhciBzPWUuZ2V0VWludDE2KCk7ZS5wb3MrPTgsZS5wb3MrPTI7dmFyIGM9ZS5nZXRVaW50MTYoKTswIT09cyYmKDImTChhLmRhdGFbNDRdLGEuZGF0YVs0NV0pfHwodC5kYXRhWzIyXT0wLHQuZGF0YVsyM109MCkpLGM+aSYmKCgwLG4uaW5mbykoIlRoZSBudW1PZk1ldHJpY3MgKCIuY29uY2F0KGMsIikgc2hvdWxkIG5vdCBiZSAiKSsiZ3JlYXRlciB0aGFuIHRoZSBudW1HbHlwaHMgKCIuY29uY2F0KGksIikuIikpLGM9aSx0LmRhdGFbMzRdPSg2NTI4MCZjKT4+OCx0LmRhdGFbMzVdPTI1NSZjKTt2YXIgdT1pLWMtKHIubGVuZ3RoLTQqYz4+MSk7aWYodT4wKXt2YXIgbD1uZXcgVWludDhBcnJheShyLmxlbmd0aCsyKnUpO2wuc2V0KHIuZGF0YSksbyYmKGxbci5sZW5ndGhdPXIuZGF0YVsyXSxsW3IubGVuZ3RoKzFdPXIuZGF0YVszXSksci5kYXRhPWx9fWVsc2UgciYmKHIuZGF0YT1udWxsKX0odCxTLmhoZWEsUy5obXR4LFMuaGVhZCxlZSx0ZSksIVMuaGVhZCl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcignUmVxdWlyZWQgImhlYWQiIHRhYmxlIGlzIG5vdCBmb3VuZCcpOyFmdW5jdGlvbihlLHQscil7dmFyIGE9ZS5kYXRhLGk9KGFbMF08PDI0KSsoYVsxXTw8MTYpKyhhWzJdPDw4KSthWzNdO2k+PjE2IT0xJiYoKDAsbi5pbmZvKSgiQXR0ZW1wdGluZyB0byBmaXggaW52YWxpZCB2ZXJzaW9uIGluIGhlYWQgdGFibGU6ICIraSksYVswXT0wLGFbMV09MSxhWzJdPTAsYVszXT0wKTt2YXIgbz1MKGFbNTBdLGFbNTFdKTtpZihvPDB8fG8+MSl7KDAsbi5pbmZvKSgiQXR0ZW1wdGluZyB0byBmaXggaW52YWxpZCBpbmRleFRvTG9jRm9ybWF0IGluIGhlYWQgdGFibGU6ICIrbyk7dmFyIHM9dCsxO2lmKHI9PT1zPDwxKWFbNTBdPTAsYVs1MV09MDtlbHNle2lmKHIhPT1zPDwyKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJDb3VsZCBub3QgZml4IGluZGV4VG9Mb2NGb3JtYXQ6ICIrbyk7YVs1MF09MCxhWzUxXT0xfX19KFMuaGVhZCxFLFA/Uy5sb2NhLmxlbmd0aDowKTt2YXIgaWU9T2JqZWN0LmNyZWF0ZShudWxsKTtpZihQKXt2YXIgb2U9TChTLmhlYWQuZGF0YVs1MF0sUy5oZWFkLmRhdGFbNTFdKSxzZT1mdW5jdGlvbihlLHQscixuLGEsaSxvKXt2YXIgcyxjLHU7bj8ocz00LGM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZVt0XTw8MjR8ZVt0KzFdPDwxNnxlW3QrMl08PDh8ZVt0KzNdfSx1PWZ1bmN0aW9uKGUsdCxyKXtlW3RdPXI+Pj4yNCYyNTUsZVt0KzFdPXI+PjE2JjI1NSxlW3QrMl09cj4+OCYyNTUsZVt0KzNdPTI1NSZyfSk6KHM9MixjPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGVbdF08PDl8ZVt0KzFdPDwxfSx1PWZ1bmN0aW9uKGUsdCxyKXtlW3RdPXI+PjkmMjU1LGVbdCsxXT1yPj4xJjI1NX0pO3ZhciBsPWk/cisxOnIsZj1zKigxK2wpLGg9bmV3IFVpbnQ4QXJyYXkoZik7aC5zZXQoZS5kYXRhLnN1YmFycmF5KDAsZikpLGUuZGF0YT1oO3ZhciBkLHAsZz10LmRhdGEsdj1nLmxlbmd0aCxtPW5ldyBVaW50OEFycmF5KHYpLGI9W107Zm9yKGQ9MCxwPTA7ZDxyKzE7ZCsrLHArPXMpe3ZhciB3PWMoaCxwKTt3PnYmJih3PXYpLGIucHVzaCh7aW5kZXg6ZCxvZmZzZXQ6dyxlbmRPZmZzZXQ6MH0pfWZvcihiLnNvcnQoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUub2Zmc2V0LXQub2Zmc2V0fSkpLGQ9MDtkPHI7ZCsrKWJbZF0uZW5kT2Zmc2V0PWJbZCsxXS5vZmZzZXQ7Zm9yKGIuc29ydCgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5pbmRleC10LmluZGV4fSkpLGQ9MDtkPHI7ZCsrKXt2YXIgaz1iW2RdLFM9ay5vZmZzZXQseD1rLmVuZE9mZnNldDtpZigwIT09U3x8MCE9PXgpYnJlYWs7dmFyIE89YltkKzFdLm9mZnNldDtpZigwIT09Tyl7YltkXS5lbmRPZmZzZXQ9TzticmVha319dmFyIEE9T2JqZWN0LmNyZWF0ZShudWxsKSxDPTA7Zm9yKHUoaCwwLEMpLGQ9MCxwPXM7ZDxyO2QrKyxwKz1zKXt2YXIgRj15KGcsYltkXS5vZmZzZXQsYltkXS5lbmRPZmZzZXQsbSxDLGEpLFA9Ri5sZW5ndGg7MD09PVAmJihBW2RdPSEwKSxGLnNpemVPZkluc3RydWN0aW9ucz5vJiYobz1GLnNpemVPZkluc3RydWN0aW9ucyksdShoLHAsQys9UCl9aWYoMD09PUMpe3ZhciBUPW5ldyBVaW50OEFycmF5KFswLDEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNDksMF0pO2ZvcihkPTAscD1zO2Q8bDtkKysscCs9cyl1KGgscCxULmxlbmd0aCk7dC5kYXRhPVR9ZWxzZSBpZihpKXt2YXIgST1jKGgscyk7bS5sZW5ndGg+SStDP3QuZGF0YT1tLnN1YmFycmF5KDAsSStDKToodC5kYXRhPW5ldyBVaW50OEFycmF5KEkrQyksdC5kYXRhLnNldChtLnN1YmFycmF5KDAsQykpKSx0LmRhdGEuc2V0KG0uc3ViYXJyYXkoMCxJKSxDKSx1KGUuZGF0YSxoLmxlbmd0aC1zLEMrSSl9ZWxzZSB0LmRhdGE9bS5zdWJhcnJheSgwLEMpO3JldHVybnttaXNzaW5nR2x5cGhzOkEsbWF4U2l6ZU9mSW5zdHJ1Y3Rpb25zOm99fShTLmxvY2EsUy5nbHlmLEUsb2UsYWUsdGUsbmUpO2llPXNlLm1pc3NpbmdHbHlwaHMsST49NjU1MzYmJlMubWF4cC5sZW5ndGg+PTIyJiYoUy5tYXhwLmRhdGFbMjZdPXNlLm1heFNpemVPZkluc3RydWN0aW9ucz4+OCxTLm1heHAuZGF0YVsyN109MjU1JnNlLm1heFNpemVPZkluc3RydWN0aW9ucyl9aWYoIVMuaGhlYSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcignUmVxdWlyZWQgImhoZWEiIHRhYmxlIGlzIG5vdCBmb3VuZCcpOzA9PT1TLmhoZWEuZGF0YVsxMF0mJjA9PT1TLmhoZWEuZGF0YVsxMV0mJihTLmhoZWEuZGF0YVsxMF09MjU1LFMuaGhlYS5kYXRhWzExXT0yNTUpO3ZhciBjZT17dW5pdHNQZXJFbTpMKFMuaGVhZC5kYXRhWzE4XSxTLmhlYWQuZGF0YVsxOV0pLHlNYXg6TChTLmhlYWQuZGF0YVs0Ml0sUy5oZWFkLmRhdGFbNDNdKSx5TWluOk4oUy5oZWFkLmRhdGFbMzhdLFMuaGVhZC5kYXRhWzM5XSksYXNjZW50Ok4oUy5oaGVhLmRhdGFbNF0sUy5oaGVhLmRhdGFbNV0pLGRlc2NlbnQ6TihTLmhoZWEuZGF0YVs2XSxTLmhoZWEuZGF0YVs3XSksbGluZUdhcDpOKFMuaGhlYS5kYXRhWzhdLFMuaGhlYS5kYXRhWzldKX07dGhpcy5hc2NlbnQ9Y2UuYXNjZW50L2NlLnVuaXRzUGVyRW0sdGhpcy5kZXNjZW50PWNlLmRlc2NlbnQvY2UudW5pdHNQZXJFbSx0aGlzLmxpbmVHYXA9Y2UubGluZUdhcC9jZS51bml0c1BlckVtLHRoaXMuY3NzRm9udEluZm8mJnRoaXMuY3NzRm9udEluZm8ubGluZUhlaWdodD8odGhpcy5saW5lSGVpZ2h0PXRoaXMuY3NzRm9udEluZm8ubWV0cmljcy5saW5lSGVpZ2h0LHRoaXMubGluZUdhcD10aGlzLmNzc0ZvbnRJbmZvLm1ldHJpY3MubGluZUdhcCk6dGhpcy5saW5lSGVpZ2h0PXRoaXMuYXNjZW50LXRoaXMuZGVzY2VudCt0aGlzLmxpbmVHYXAsUy5wb3N0JiZmdW5jdGlvbihlLHIsYSl7dmFyIG89KHQuc3RhcnR8fDApK2Uub2Zmc2V0O3QucG9zPW87dmFyIHMsYz1vK2UubGVuZ3RoLHU9dC5nZXRJbnQzMigpO3Quc2tpcCgyOCk7dmFyIGwsZj0hMDtzd2l0Y2godSl7Y2FzZSA2NTUzNjpzPWkuTWFjU3RhbmRhcmRHbHlwaE9yZGVyaW5nO2JyZWFrO2Nhc2UgMTMxMDcyOnZhciBoPXQuZ2V0VWludDE2KCk7aWYoaCE9PWEpe2Y9ITE7YnJlYWt9dmFyIGQ9W107Zm9yKGw9MDtsPGg7KytsKXt2YXIgcD10LmdldFVpbnQxNigpO2lmKHA+PTMyNzY4KXtmPSExO2JyZWFrfWQucHVzaChwKX1pZighZilicmVhaztmb3IodmFyIGc9W10sdj1bXTt0LnBvczxjOyl7dmFyIHk9dC5nZXRCeXRlKCk7Zm9yKHYubGVuZ3RoPXksbD0wO2w8eTsrK2wpdltsXT1TdHJpbmcuZnJvbUNoYXJDb2RlKHQuZ2V0Qnl0ZSgpKTtnLnB1c2godi5qb2luKCIiKSl9Zm9yKHM9W10sbD0wO2w8aDsrK2wpe3ZhciBtPWRbbF07bTwyNTg/cy5wdXNoKGkuTWFjU3RhbmRhcmRHbHlwaE9yZGVyaW5nW21dKTpzLnB1c2goZ1ttLTI1OF0pfWJyZWFrO2Nhc2UgMTk2NjA4OmJyZWFrO2RlZmF1bHQ6KDAsbi53YXJuKSgiVW5rbm93bi91bnN1cHBvcnRlZCBwb3N0IHRhYmxlIHZlcnNpb24gIit1KSxmPSExLHIuZGVmYXVsdEVuY29kaW5nJiYocz1yLmRlZmF1bHRFbmNvZGluZyl9ci5nbHlwaE5hbWVzPXN9KFMucG9zdCxyLEUpLFMucG9zdD17dGFnOiJwb3N0IixkYXRhOlcocil9O3ZhciB1ZT1bXTtmdW5jdGlvbiBsZShlKXtyZXR1cm4haWVbZV19aWYoci5jb21wb3NpdGUpe3ZhciBmZT1yLmNpZFRvR2lkTWFwfHxbXSxoZT0wPT09ZmUubGVuZ3RoO3IuY01hcC5mb3JFYWNoKChmdW5jdGlvbihlLHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdCYmKHQ9SChlLHQsITApKSx0PjY1NTM1KXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJNYXggc2l6ZSBvZiBDSUQgaXMgNjUsNTM1Iik7dmFyIHI9LTE7aGU/cj10OnZvaWQgMCE9PWZlW3RdJiYocj1mZVt0XSkscj49MCYmcjxFJiZsZShyKSYmKHVlW2VdPXIpfSkpfWVsc2V7dmFyIGRlPWZ1bmN0aW9uKGUsdCxyLGEpe2lmKCFlKXJldHVybigwLG4ud2FybikoIk5vIGNtYXAgdGFibGUgYXZhaWxhYmxlLiIpLHtwbGF0Zm9ybUlkOi0xLGVuY29kaW5nSWQ6LTEsbWFwcGluZ3M6W10saGFzU2hvcnRDbWFwOiExfTt2YXIgaSxvPSh0LnN0YXJ0fHwwKStlLm9mZnNldDt0LnBvcz1vLHQuc2tpcCgyKTtmb3IodmFyIHMsYz10LmdldFVpbnQxNigpLHU9ITEsbD0wO2w8YztsKyspe3ZhciBmPXQuZ2V0VWludDE2KCksaD10LmdldFVpbnQxNigpLGQ9dC5nZXRJbnQzMigpPj4+MCxwPSExO2lmKCFzfHxzLnBsYXRmb3JtSWQhPT1mfHxzLmVuY29kaW5nSWQhPT1oKXtpZigwIT09Znx8MCE9PWgmJjEhPT1oJiYzIT09aClpZigxPT09ZiYmMD09PWgpcD0hMDtlbHNlIGlmKDMhPT1mfHwxIT09aHx8IWEmJnMpe2lmKHImJjM9PT1mJiYwPT09aCl7cD0hMDt2YXIgZz0hMDtpZihsPGMtMSl7dmFyIHY9dC5wZWVrQnl0ZXMoMik7TCh2WzBdLHZbMV0pPGYmJihnPSExKX1nJiYodT0hMCl9fWVsc2UgcD0hMCxyfHwodT0hMCk7ZWxzZSBwPSEwO2lmKHAmJihzPXtwbGF0Zm9ybUlkOmYsZW5jb2RpbmdJZDpoLG9mZnNldDpkfSksdSlicmVha319aWYocyYmKHQucG9zPW8rcy5vZmZzZXQpLCFzfHwtMT09PXQucGVla0J5dGUoKSlyZXR1cm4oMCxuLndhcm4pKCJDb3VsZCBub3QgZmluZCBhIHByZWZlcnJlZCBjbWFwIHRhYmxlLiIpLHtwbGF0Zm9ybUlkOi0xLGVuY29kaW5nSWQ6LTEsbWFwcGluZ3M6W10saGFzU2hvcnRDbWFwOiExfTt2YXIgeSxtLGI9dC5nZXRVaW50MTYoKSx3PSExLGs9W107aWYoMD09PWIpe2Zvcih0LnNraXAoNCkseT0wO3k8MjU2O3krKyl7dmFyIFM9dC5nZXRCeXRlKCk7UyYmay5wdXNoKHtjaGFyQ29kZTp5LGdseXBoSWQ6U30pfXc9ITB9ZWxzZSBpZigyPT09Yil7dC5za2lwKDQpO2Zvcih2YXIgeD1bXSxPPTAsQT0wO0E8MjU2O0ErKyl7dmFyIEM9dC5nZXRVaW50MTYoKT4+Mzt4LnB1c2goQyksTz1NYXRoLm1heChDLE8pfWZvcih2YXIgRj1bXSxQPTA7UDw9TztQKyspRi5wdXNoKHtmaXJzdENvZGU6dC5nZXRVaW50MTYoKSxlbnRyeUNvdW50OnQuZ2V0VWludDE2KCksaWREZWx0YTpOKHQuZ2V0Qnl0ZSgpLHQuZ2V0Qnl0ZSgpKSxpZFJhbmdlUG9zOnQucG9zK3QuZ2V0VWludDE2KCl9KTtmb3IodmFyIFQ9MDtUPDI1NjtUKyspaWYoMD09PXhbVF0pdC5wb3M9RlswXS5pZFJhbmdlUG9zKzIqVCxtPXQuZ2V0VWludDE2KCksay5wdXNoKHtjaGFyQ29kZTpULGdseXBoSWQ6bX0pO2Vsc2V7dmFyIEk9Rlt4W1RdXTtmb3IoeT0wO3k8SS5lbnRyeUNvdW50O3krKyl7dmFyIEU9KFQ8PDgpK3krSS5maXJzdENvZGU7dC5wb3M9SS5pZFJhbmdlUG9zKzIqeSwwIT09KG09dC5nZXRVaW50MTYoKSkmJihtPShtK0kuaWREZWx0YSklNjU1MzYpLGsucHVzaCh7Y2hhckNvZGU6RSxnbHlwaElkOm19KX19fWVsc2UgaWYoND09PWIpe3Quc2tpcCg0KTt2YXIgaj10LmdldFVpbnQxNigpPj4xO3Quc2tpcCg2KTt2YXIgTSxfPVtdO2ZvcihNPTA7TTxqO00rKylfLnB1c2goe2VuZDp0LmdldFVpbnQxNigpfSk7Zm9yKHQuc2tpcCgyKSxNPTA7TTxqO00rKylfW01dLnN0YXJ0PXQuZ2V0VWludDE2KCk7Zm9yKE09MDtNPGo7TSsrKV9bTV0uZGVsdGE9dC5nZXRVaW50MTYoKTt2YXIgUixEPTA7Zm9yKE09MDtNPGo7TSsrKXtpPV9bTV07dmFyIEI9dC5nZXRVaW50MTYoKTtCPyhSPShCPj4xKS0oai1NKSxpLm9mZnNldEluZGV4PVIsRD1NYXRoLm1heChELFIraS5lbmQtaS5zdGFydCsxKSk6aS5vZmZzZXRJbmRleD0tMX12YXIgVT1bXTtmb3IoeT0wO3k8RDt5KyspVS5wdXNoKHQuZ2V0VWludDE2KCkpO2ZvcihNPTA7TTxqO00rKyl7bz0oaT1fW01dKS5zdGFydDt2YXIgJD1pLmVuZCxYPWkuZGVsdGE7Zm9yKFI9aS5vZmZzZXRJbmRleCx5PW87eTw9JDt5KyspNjU1MzUhPT15JiYobT0obT1SPDA/eTpVW1IreS1vXSkrWCY2NTUzNSxrLnB1c2goe2NoYXJDb2RlOnksZ2x5cGhJZDptfSkpfX1lbHNlIGlmKDY9PT1iKXt0LnNraXAoNCk7dmFyIEg9dC5nZXRVaW50MTYoKSxxPXQuZ2V0VWludDE2KCk7Zm9yKHk9MDt5PHE7eSsrKXttPXQuZ2V0VWludDE2KCk7dmFyIEc9SCt5O2sucHVzaCh7Y2hhckNvZGU6RyxnbHlwaElkOm19KX19ZWxzZXtpZigxMiE9PWIpcmV0dXJuKDAsbi53YXJuKSgiY21hcCB0YWJsZSBoYXMgdW5zdXBwb3J0ZWQgZm9ybWF0OiAiK2IpLHtwbGF0Zm9ybUlkOi0xLGVuY29kaW5nSWQ6LTEsbWFwcGluZ3M6W10saGFzU2hvcnRDbWFwOiExfTt0LnNraXAoMTApO3ZhciB6PXQuZ2V0SW50MzIoKT4+PjA7Zm9yKHk9MDt5PHo7eSsrKWZvcih2YXIgVz10LmdldEludDMyKCk+Pj4wLFY9dC5nZXRJbnQzMigpPj4+MCxZPXQuZ2V0SW50MzIoKT4+PjAsSz1XO0s8PVY7SysrKWsucHVzaCh7Y2hhckNvZGU6SyxnbHlwaElkOlkrK30pfWsuc29ydCgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jaGFyQ29kZS10LmNoYXJDb2RlfSkpO2Zvcih2YXIgSj0xO0o8ay5sZW5ndGg7SisrKWtbSi0xXS5jaGFyQ29kZT09PWtbSl0uY2hhckNvZGUmJihrLnNwbGljZShKLDEpLEotLSk7cmV0dXJue3BsYXRmb3JtSWQ6cy5wbGF0Zm9ybUlkLGVuY29kaW5nSWQ6cy5lbmNvZGluZ0lkLG1hcHBpbmdzOmssaGFzU2hvcnRDbWFwOnd9fShTLmNtYXAsdCx0aGlzLmlzU3ltYm9saWNGb250LHIuaGFzRW5jb2RpbmcpLHBlPWRlLnBsYXRmb3JtSWQsZ2U9ZGUuZW5jb2RpbmdJZCx2ZT1kZS5tYXBwaW5ncyx5ZT1bXSxtZT0hMTtpZighci5oYXNFbmNvZGluZ3x8Ik1hY1JvbWFuRW5jb2RpbmciIT09ci5iYXNlRW5jb2RpbmdOYW1lJiYiV2luQW5zaUVuY29kaW5nIiE9PXIuYmFzZUVuY29kaW5nTmFtZXx8KHllPSgwLGMuZ2V0RW5jb2RpbmcpKHIuYmFzZUVuY29kaW5nTmFtZSkpLHIuaGFzRW5jb2RpbmcmJiF0aGlzLmlzU3ltYm9saWNGb250JiYoMz09PXBlJiYxPT09Z2V8fDE9PT1wZSYmMD09PWdlKSlmb3IodmFyIGJlPSgwLHMuZ2V0R2x5cGhzVW5pY29kZSkoKSx3ZT0wO3dlPDI1Njt3ZSsrKXt2YXIga2U7aWYoa2U9dm9pZCAwIT09dGhpcy5kaWZmZXJlbmNlc1t3ZV0/dGhpcy5kaWZmZXJlbmNlc1t3ZV06eWUubGVuZ3RoJiYiIiE9PXllW3dlXT95ZVt3ZV06Yy5TdGFuZGFyZEVuY29kaW5nW3dlXSl7dmFyIFNlPSgwLGkucmVjb3ZlckdseXBoTmFtZSkoa2UsYmUpLHhlPXZvaWQgMDtpZigzPT09cGUmJjE9PT1nZT94ZT1iZVtTZV06MT09PXBlJiYwPT09Z2UmJih4ZT1jLk1hY1JvbWFuRW5jb2RpbmcuaW5kZXhPZihTZSkpLHZvaWQgMD09PXhlKXtpZighci5nbHlwaE5hbWVzJiZyLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwJiYhKHRoaXMudG9Vbmljb2RlIGluc3RhbmNlb2YgbC5JZGVudGl0eVRvVW5pY29kZU1hcCkpe3ZhciBPZT10aGlzLnRvVW5pY29kZS5nZXQod2UpO09lJiYoeGU9T2UuY29kZVBvaW50QXQoMCkpfWlmKHZvaWQgMD09PXhlKWNvbnRpbnVlfXZhciBBZSxDZT1rKHZlKTt0cnl7Zm9yKENlLnMoKTshKEFlPUNlLm4oKSkuZG9uZTspe3ZhciBGZT1BZS52YWx1ZTtpZihGZS5jaGFyQ29kZT09PXhlKXt1ZVt3ZV09RmUuZ2x5cGhJZDticmVha319fWNhdGNoKGUpe0NlLmUoZSl9ZmluYWxseXtDZS5mKCl9fX1lbHNlIGlmKDA9PT1wZSl7dmFyIFBlLFRlPWsodmUpO3RyeXtmb3IoVGUucygpOyEoUGU9VGUubigpKS5kb25lOyl7dmFyIEllPVBlLnZhbHVlO3VlW0llLmNoYXJDb2RlXT1JZS5nbHlwaElkfX1jYXRjaChlKXtUZS5lKGUpfWZpbmFsbHl7VGUuZigpfW1lPSEwfWVsc2V7dmFyIEVlLGplPWsodmUpO3RyeXtmb3IoamUucygpOyEoRWU9amUubigpKS5kb25lOyl7dmFyIE1lPUVlLnZhbHVlLF9lPU1lLmNoYXJDb2RlOzM9PT1wZSYmX2U+PTYxNDQwJiZfZTw9NjE2OTUmJihfZSY9MjU1KSx1ZVtfZV09TWUuZ2x5cGhJZH19Y2F0Y2goZSl7amUuZShlKX1maW5hbGx5e2plLmYoKX19aWYoci5nbHlwaE5hbWVzJiYoeWUubGVuZ3RofHx0aGlzLmRpZmZlcmVuY2VzLmxlbmd0aCkpZm9yKHZhciBMZT0wO0xlPDI1NjsrK0xlKWlmKG1lfHx2b2lkIDA9PT11ZVtMZV0pe3ZhciBSZT10aGlzLmRpZmZlcmVuY2VzW0xlXXx8eWVbTGVdO2lmKFJlKXt2YXIgTmU9ci5nbHlwaE5hbWVzLmluZGV4T2YoUmUpO05lPjAmJmxlKE5lKSYmKHVlW0xlXT1OZSl9fX0wPT09dWUubGVuZ3RoJiYodWVbMF09MCk7dmFyIERlPWVlLTE7aWYodGV8fChEZT0wKSwhci5jc3NGb250SW5mbyl7dmFyIEJlPXEodWUsbGUsRGUsdGhpcy50b1VuaWNvZGUpO3RoaXMudG9Gb250Q2hhcj1CZS50b0ZvbnRDaGFyLFMuY21hcD17dGFnOiJjbWFwIixkYXRhOkcoQmUuY2hhckNvZGVUb0dseXBoSWQsQmUudG9Vbmljb2RlRXh0cmFNYXAsZWUpfSxTWyJPUy8yIl0mJmZ1bmN0aW9uKGUsdCl7dC5wb3M9KHQuc3RhcnR8fDApK2Uub2Zmc2V0O3ZhciByPXQuZ2V0VWludDE2KCk7dC5za2lwKDYwKTt2YXIgbj10LmdldFVpbnQxNigpO3JldHVybiEocjw0JiY3Njgmbnx8dC5nZXRVaW50MTYoKT50LmdldFVpbnQxNigpfHwodC5za2lwKDYpLDA9PT10LmdldFVpbnQxNigpfHwoZS5kYXRhWzhdPWUuZGF0YVs5XT0wLDApKSl9KFNbIk9TLzIiXSx0KXx8KFNbIk9TLzIiXT17dGFnOiJPUy8yIixkYXRhOnoocixCZS5jaGFyQ29kZVRvR2x5cGhJZCxjZSl9KX1pZighUCl0cnl7Tz1uZXcgbS5TdHJlYW0oU1siQ0ZGICJdLmRhdGEpLCh4PW5ldyBhLkNGRlBhcnNlcihPLHIsaS5TRUFDX0FOQUxZU0lTX0VOQUJMRUQpLnBhcnNlKCkpLmR1cGxpY2F0ZUZpcnN0R2x5cGgoKTt2YXIgVWU9bmV3IGEuQ0ZGQ29tcGlsZXIoeCk7U1siQ0ZGICJdLmRhdGE9VWUuY29tcGlsZSgpfWNhdGNoKGUpeygwLG4ud2FybikoIkZhaWxlZCB0byBjb21waWxlIGZvbnQgIityLmxvYWRlZE5hbWUpfWlmKFMubmFtZSl7dmFyICRlPWIoUy5uYW1lKTtTLm5hbWUuZGF0YT1ZKGUsJGUpLHRoaXMucHNOYW1lPSRlWzBdWzZdfHxudWxsfWVsc2UgUy5uYW1lPXt0YWc6Im5hbWUiLGRhdGE6WSh0aGlzLm5hbWUpfTt2YXIgWGU9bmV3IHYuT3BlblR5cGVGaWxlQnVpbGRlcih3LnZlcnNpb24pO2Zvcih2YXIgSGUgaW4gUylYZS5hZGRUYWJsZShIZSxTW0hlXS5kYXRhKTtyZXR1cm4gWGUudG9BcnJheSgpfX0se2tleToiY29udmVydCIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIpe3IuZml4ZWRQaXRjaD0hMSxyLmJ1aWx0SW5FbmNvZGluZyYmZnVuY3Rpb24oZSx0KXtpZighZS5pc0ludGVybmFsRm9udCYmIShlLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwfHx0PT09ZS5kZWZhdWx0RW5jb2Rpbmd8fGUudG9Vbmljb2RlIGluc3RhbmNlb2YgbC5JZGVudGl0eVRvVW5pY29kZU1hcCkpe3ZhciByPVtdLG49KDAscy5nZXRHbHlwaHNVbmljb2RlKSgpO2Zvcih2YXIgYSBpbiB0KWlmKCFlLmhhc0VuY29kaW5nfHwwIT09ZS5kaWZmZXJlbmNlcy5sZW5ndGgmJnZvaWQgMD09PWUuZGlmZmVyZW5jZXNbYV0pe3ZhciBpPXRbYV0sYz0oMCxvLmdldFVuaWNvZGVGb3JHbHlwaCkoaSxuKTstMSE9PWMmJihyW2FdPVN0cmluZy5mcm9tQ2hhckNvZGUoYykpfXIubGVuZ3RoPjAmJmUudG9Vbmljb2RlLmFtZW5kKHIpfX0ocixyLmJ1aWx0SW5FbmNvZGluZyk7dmFyIGE9MTt0IGluc3RhbmNlb2YgZi5DRkZGb250JiYoYT10Lm51bUdseXBocy0xKTt2YXIgdT10LmdldEdseXBoTWFwcGluZyhyKSxoPW51bGwsZD11LHA9bnVsbDtyLmNzc0ZvbnRJbmZvfHwoaD1xKHUsdC5oYXNHbHlwaElkLmJpbmQodCksYSx0aGlzLnRvVW5pY29kZSksdGhpcy50b0ZvbnRDaGFyPWgudG9Gb250Q2hhcixkPWguY2hhckNvZGVUb0dseXBoSWQscD1oLnRvVW5pY29kZUV4dHJhTWFwKTt2YXIgZz10Lm51bUdseXBocztmdW5jdGlvbiB5KGUsdCl7dmFyIHI9bnVsbDtmb3IodmFyIG4gaW4gZSl0PT09ZVtuXSYmKHJ8fChyPVtdKSxyLnB1c2goMHxuKSk7cmV0dXJuIHJ9ZnVuY3Rpb24gbShlLHQpe2Zvcih2YXIgciBpbiBlKWlmKHQ9PT1lW3JdKXJldHVybiAwfHI7cmV0dXJuIGguY2hhckNvZGVUb0dseXBoSWRbaC5uZXh0QXZhaWxhYmxlRm9udENoYXJDb2RlXT10LGgubmV4dEF2YWlsYWJsZUZvbnRDaGFyQ29kZSsrfXZhciBiPXQuc2VhY3M7aWYoaCYmaS5TRUFDX0FOQUxZU0lTX0VOQUJMRUQmJmImJmIubGVuZ3RoKXt2YXIgdz1yLmZvbnRNYXRyaXh8fG4uRk9OVF9JREVOVElUWV9NQVRSSVgsUz10LmdldENoYXJzZXQoKSx4PU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKHZhciBPIGluIGIpe3ZhciBBPWJbT3w9MF0sQz1jLlN0YW5kYXJkRW5jb2RpbmdbQVsyXV0sRj1jLlN0YW5kYXJkRW5jb2RpbmdbQVszXV0sUD1TLmluZGV4T2YoQyksVD1TLmluZGV4T2YoRik7aWYoIShQPDB8fFQ8MCkpe3ZhciBJPXt4OkFbMF0qd1swXStBWzFdKndbMl0rd1s0XSx5OkFbMF0qd1sxXStBWzFdKndbM10rd1s1XX0sRT15KHUsTyk7aWYoRSl7dmFyIGosTT1rKEUpO3RyeXtmb3IoTS5zKCk7IShqPU0ubigpKS5kb25lOyl7dmFyIF89ai52YWx1ZSxMPWguY2hhckNvZGVUb0dseXBoSWQsUj1tKEwsUCksTj1tKEwsVCk7eFtfXT17YmFzZUZvbnRDaGFyQ29kZTpSLGFjY2VudEZvbnRDaGFyQ29kZTpOLGFjY2VudE9mZnNldDpJfX19Y2F0Y2goZSl7TS5lKGUpfWZpbmFsbHl7TS5mKCl9fX19ci5zZWFjTWFwPXh9dmFyIFU9MS8oci5mb250TWF0cml4fHxuLkZPTlRfSURFTlRJVFlfTUFUUklYKVswXSwkPW5ldyB2Lk9wZW5UeXBlRmlsZUJ1aWxkZXIoIk9UVE8iKTtyZXR1cm4gJC5hZGRUYWJsZSgiQ0ZGICIsdC5kYXRhKSwkLmFkZFRhYmxlKCJPUy8yIix6KHIsZCkpLCQuYWRkVGFibGUoImNtYXAiLEcoZCxwLGcpKSwkLmFkZFRhYmxlKCJoZWFkIiwiXDABXDBcMFwwXDAQXDBcMFwwXDBcMF8PPMO1XDBcMCIrQihVKSsiXDBcMFwwXDDCnlx2fidcMFwwXDBcMMKeXHZ+J1wwXDAiK0Ioci5kZXNjZW50KSsiD8O/IitCKHIuYXNjZW50KStEKHIuaXRhbGljQW5nbGU/MjowKSsiXDARXDBcMFwwXDBcMFwwIiksJC5hZGRUYWJsZSgiaGhlYSIsIlwwAVwwXDAiK0Ioci5hc2NlbnQpK0Ioci5kZXNjZW50KSsiXDBcMMO/w79cMFwwXDBcMFwwXDAiK0Ioci5jYXBIZWlnaHQpK0IoTWF0aC50YW4oci5pdGFsaWNBbmdsZSkqci54SGVpZ2h0KSsiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIitEKGcpKSwkLmFkZFRhYmxlKCJobXR4IixmdW5jdGlvbigpe2Zvcih2YXIgZT10LmNoYXJzdHJpbmdzLHI9dC5jZmY/dC5jZmYud2lkdGhzOm51bGwsbj0iXDBcMFwwXDAiLGE9MSxpPWc7YTxpO2ErKyl7dmFyIG89MDtpZihlKXt2YXIgcz1lW2EtMV07bz0id2lkdGgiaW4gcz9zLndpZHRoOjB9ZWxzZSByJiYobz1NYXRoLmNlaWwoclthXXx8MCkpO24rPUQobykrRCgwKX1yZXR1cm4gbn0oKSksJC5hZGRUYWJsZSgibWF4cCIsIlwwXDBQXDAiK0QoZykpLCQuYWRkVGFibGUoIm5hbWUiLFkoZSkpLCQuYWRkVGFibGUoInBvc3QiLFcocikpLCQudG9BcnJheSgpfX0se2tleToic3BhY2VXaWR0aCIsZ2V0OmZ1bmN0aW9uKCl7Zm9yKHZhciBlLHQ9MCxyPVsic3BhY2UiLCJtaW51cyIsIm9uZSIsImkiLCJJIl07dDxyLmxlbmd0aDt0Kyspe3ZhciBhPXJbdF07aWYoYSBpbiB0aGlzLndpZHRocyl7ZT10aGlzLndpZHRoc1thXTticmVha312YXIgaT0oMCxzLmdldEdseXBoc1VuaWNvZGUpKClbYV0sbz0wO2lmKHRoaXMuY29tcG9zaXRlJiZ0aGlzLmNNYXAuY29udGFpbnMoaSkmJiJzdHJpbmciPT10eXBlb2Yobz10aGlzLmNNYXAubG9va3VwKGkpKSYmKG89SChpLG8pKSwhbyYmdGhpcy50b1VuaWNvZGUmJihvPXRoaXMudG9Vbmljb2RlLmNoYXJDb2RlT2YoaSkpLG88PTAmJihvPWkpLGU9dGhpcy53aWR0aHNbb10pYnJlYWt9cmV0dXJuIGU9ZXx8dGhpcy5kZWZhdWx0V2lkdGgsKDAsbi5zaGFkb3cpKHRoaXMsInNwYWNlV2lkdGgiLGUpfX0se2tleToiX2NoYXJUb0dseXBoIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdCxyLGEsaT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSYmYXJndW1lbnRzWzFdLHM9dGhpcy5fZ2x5cGhDYWNoZVtlXTtpZihzJiZzLmlzU3BhY2U9PT1pKXJldHVybiBzO3ZhciBjPWU7dGhpcy5jTWFwJiZ0aGlzLmNNYXAuY29udGFpbnMoZSkmJiJzdHJpbmciPT10eXBlb2YoYz10aGlzLmNNYXAubG9va3VwKGUpKSYmKGM9SChlLGMpKSwibnVtYmVyIiE9dHlwZW9mKHI9dGhpcy53aWR0aHNbY10pJiYocj10aGlzLmRlZmF1bHRXaWR0aCk7dmFyIHU9dGhpcy52bWV0cmljcyYmdGhpcy52bWV0cmljc1tjXSxsPXRoaXMudG9Vbmljb2RlLmdldChlKXx8ZTsibnVtYmVyIj09dHlwZW9mIGwmJihsPVN0cmluZy5mcm9tQ2hhckNvZGUobCkpO3ZhciBmPXZvaWQgMCE9PXRoaXMudG9Gb250Q2hhcltlXTtpZih0PXRoaXMudG9Gb250Q2hhcltlXXx8ZSx0aGlzLm1pc3NpbmdGaWxlKXt2YXIgaD10aGlzLmRpZmZlcmVuY2VzW2VdfHx0aGlzLmRlZmF1bHRFbmNvZGluZ1tlXTsiLm5vdGRlZiIhPT1oJiYiIiE9PWh8fCJUeXBlMSIhPT10aGlzLnR5cGV8fCh0PTMyKSx0PSgwLG8ubWFwU3BlY2lhbFVuaWNvZGVWYWx1ZXMpKHQpfXRoaXMuaXNUeXBlM0ZvbnQmJihhPXQpO3ZhciBkPW51bGw7aWYodGhpcy5zZWFjTWFwJiZ0aGlzLnNlYWNNYXBbZV0pe2Y9ITA7dmFyIHA9dGhpcy5zZWFjTWFwW2VdO3Q9cC5iYXNlRm9udENoYXJDb2RlLGQ9e2ZvbnRDaGFyOlN0cmluZy5mcm9tQ29kZVBvaW50KHAuYWNjZW50Rm9udENoYXJDb2RlKSxvZmZzZXQ6cC5hY2NlbnRPZmZzZXR9fXZhciBnPSIiO3JldHVybiJudW1iZXIiPT10eXBlb2YgdCYmKHQ8PTExMTQxMTE/Zz1TdHJpbmcuZnJvbUNvZGVQb2ludCh0KTooMCxuLndhcm4pKCJjaGFyVG9HbHlwaCAtIGludmFsaWQgZm9udENoYXJDb2RlOiAiLmNvbmNhdCh0KSkpLHM9bmV3IF8oZSxnLGwsZCxyLHUsYSxpLGYpLHRoaXMuX2dseXBoQ2FjaGVbZV09c319LHtrZXk6ImNoYXJzVG9HbHlwaHMiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX2NoYXJzQ2FjaGVbZV07aWYodClyZXR1cm4gdDtpZih0PVtdLHRoaXMuY01hcClmb3IodmFyIHI9T2JqZWN0LmNyZWF0ZShudWxsKSxuPWUubGVuZ3RoLGE9MDthPG47KXt0aGlzLmNNYXAucmVhZENoYXJDb2RlKGUsYSxyKTt2YXIgaT1yLmNoYXJjb2RlLG89ci5sZW5ndGg7YSs9bzt2YXIgcz10aGlzLl9jaGFyVG9HbHlwaChpLDE9PT1vJiYzMj09PWUuY2hhckNvZGVBdChhLTEpKTt0LnB1c2gocyl9ZWxzZSBmb3IodmFyIGM9MCx1PWUubGVuZ3RoO2M8dTsrK2Mpe3ZhciBsPWUuY2hhckNvZGVBdChjKSxmPXRoaXMuX2NoYXJUb0dseXBoKGwsMzI9PT1sKTt0LnB1c2goZil9cmV0dXJuIHRoaXMuX2NoYXJzQ2FjaGVbZV09dH19LHtrZXk6ImdldENoYXJQb3NpdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PVtdO2lmKHRoaXMuY01hcClmb3IodmFyIHI9T2JqZWN0LmNyZWF0ZShudWxsKSxuPTA7bjxlLmxlbmd0aDspe3RoaXMuY01hcC5yZWFkQ2hhckNvZGUoZSxuLHIpO3ZhciBhPXIubGVuZ3RoO3QucHVzaChbbixuK2FdKSxuKz1hfWVsc2UgZm9yKHZhciBpPTAsbz1lLmxlbmd0aDtpPG87KytpKXQucHVzaChbaSxpKzFdKTtyZXR1cm4gdH19LHtrZXk6ImdseXBoQ2FjaGVWYWx1ZXMiLGdldDpmdW5jdGlvbigpe3JldHVybiBPYmplY3QudmFsdWVzKHRoaXMuX2dseXBoQ2FjaGUpfX0se2tleToiZW5jb2RlU3RyaW5nIix2YWx1ZTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpcyxyPVtdLG49W10sYT1mdW5jdGlvbigpe3JldHVybiByLmxlbmd0aCUyPT0xfSxpPXRoaXMudG9Vbmljb2RlIGluc3RhbmNlb2YgbC5JZGVudGl0eVRvVW5pY29kZU1hcD9mdW5jdGlvbihlKXtyZXR1cm4gdC50b1VuaWNvZGUuY2hhckNvZGVPZihlKX06ZnVuY3Rpb24oZSl7cmV0dXJuIHQudG9Vbmljb2RlLmNoYXJDb2RlT2YoU3RyaW5nLmZyb21Db2RlUG9pbnQoZSkpfSxvPTAscz1lLmxlbmd0aDtvPHM7bysrKXt2YXIgYz1lLmNvZGVQb2ludEF0KG8pO2lmKGM+NTUyOTUmJihjPDU3MzQ0fHxjPjY1NTMzKSYmbysrLHRoaXMudG9Vbmljb2RlKXt2YXIgdT1pKGMpO2lmKC0xIT09dSl7YSgpJiYoci5wdXNoKG4uam9pbigiIikpLG4ubGVuZ3RoPTApO2Zvcih2YXIgZj0odGhpcy5jTWFwP3RoaXMuY01hcC5nZXRDaGFyQ29kZUxlbmd0aCh1KToxKS0xO2Y+PTA7Zi0tKW4ucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKHU+PjgqZiYyNTUpKTtjb250aW51ZX19YSgpfHwoci5wdXNoKG4uam9pbigiIikpLG4ubGVuZ3RoPTApLG4ucHVzaChTdHJpbmcuZnJvbUNvZGVQb2ludChjKSl9cmV0dXJuIHIucHVzaChuLmpvaW4oIiIpKSxyfX1dKSxlfSgpO3QuRm9udD1LO3ZhciBKPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0KXtBKHRoaXMsZSksdGhpcy5lcnJvcj10LHRoaXMubG9hZGVkTmFtZT0iZ19mb250X2Vycm9yIix0aGlzLm1pc3NpbmdGaWxlPSEwfXJldHVybiBGKGUsW3trZXk6ImNoYXJzVG9HbHlwaHMiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuW119fSx7a2V5OiJlbmNvZGVTdHJpbmciLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybltlXX19LHtrZXk6ImV4cG9ydERhdGEiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJue2Vycm9yOnRoaXMuZXJyb3J9fX1dKSxlfSgpO3QuRXJyb3JGb250PUp9LChlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5DRkZUb3BEaWN0PXQuQ0ZGU3RyaW5ncz10LkNGRlN0YW5kYXJkU3RyaW5ncz10LkNGRlByaXZhdGVEaWN0PXQuQ0ZGUGFyc2VyPXQuQ0ZGSW5kZXg9dC5DRkZIZWFkZXI9dC5DRkZGRFNlbGVjdD10LkNGRkNvbXBpbGVyPXQuQ0ZGQ2hhcnNldD10LkNGRj12b2lkIDA7dmFyIG49cigyKSxhPXIoMTY1KSxpPXIoMTY2KTtmdW5jdGlvbiBvKGUpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBwKGUpfShlKXx8ZnVuY3Rpb24oZSl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJm51bGwhPWVbU3ltYm9sLml0ZXJhdG9yXXx8bnVsbCE9ZVsiQEBpdGVyYXRvciJdKXJldHVybiBBcnJheS5mcm9tKGUpfShlKXx8ZChlKXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiBzKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLHQmJmMoZSx0KX1mdW5jdGlvbiBjKGUsdCl7cmV0dXJuIGM9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5fX3Byb3RvX189dCxlfSxjKGUsdCl9ZnVuY3Rpb24gdShlKXt2YXIgdD1mdW5jdGlvbigpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0KXJldHVybiExO2lmKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sKGZ1bmN0aW9uKCl7fSkpKSwhMH1jYXRjaChlKXtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHIsbj1sKGUpO2lmKHQpe3ZhciBhPWwodGhpcykuY29uc3RydWN0b3I7cj1SZWZsZWN0LmNvbnN0cnVjdChuLGFyZ3VtZW50cyxhKX1lbHNlIHI9bi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYodCYmKCJvYmplY3QiPT09Zih0KXx8ImZ1bmN0aW9uIj09dHlwZW9mIHQpKXJldHVybiB0O2lmKHZvaWQgMCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24oZSl7aWYodm9pZCAwPT09ZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBlfShlKX0odGhpcyxyKX19ZnVuY3Rpb24gbChlKXtyZXR1cm4gbD1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihlKXtyZXR1cm4gZS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihlKX0sbChlKX1mdW5jdGlvbiBmKGUpe3JldHVybiBmPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSxmKGUpfWZ1bmN0aW9uIGgoZSx0KXt2YXIgcj0idW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlWyJAQGl0ZXJhdG9yIl07aWYoIXIpe2lmKEFycmF5LmlzQXJyYXkoZSl8fChyPWQoZSkpfHx0JiZlJiYibnVtYmVyIj09dHlwZW9mIGUubGVuZ3RoKXtyJiYoZT1yKTt2YXIgbj0wLGE9ZnVuY3Rpb24oKXt9O3JldHVybntzOmEsbjpmdW5jdGlvbigpe3JldHVybiBuPj1lLmxlbmd0aD97ZG9uZTohMH06e2RvbmU6ITEsdmFsdWU6ZVtuKytdfX0sZTpmdW5jdGlvbihlKXt0aHJvdyBlfSxmOmF9fXRocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBpdGVyYXRlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX12YXIgaSxvPSEwLHM9ITE7cmV0dXJue3M6ZnVuY3Rpb24oKXtyPXIuY2FsbChlKX0sbjpmdW5jdGlvbigpe3ZhciBlPXIubmV4dCgpO3JldHVybiBvPWUuZG9uZSxlfSxlOmZ1bmN0aW9uKGUpe3M9ITAsaT1lfSxmOmZ1bmN0aW9uKCl7dHJ5e298fG51bGw9PXIucmV0dXJufHxyLnJldHVybigpfWZpbmFsbHl7aWYocyl0aHJvdyBpfX19fWZ1bmN0aW9uIGQoZSx0KXtpZihlKXtpZigic3RyaW5nIj09dHlwZW9mIGUpcmV0dXJuIHAoZSx0KTt2YXIgcj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7cmV0dXJuIk9iamVjdCI9PT1yJiZlLmNvbnN0cnVjdG9yJiYocj1lLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09cnx8IlNldCI9PT1yP0FycmF5LmZyb20oZSk6IkFyZ3VtZW50cyI9PT1yfHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChyKT9wKGUsdCk6dm9pZCAwfX1mdW5jdGlvbiBwKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciByPTAsbj1uZXcgQXJyYXkodCk7cjx0O3IrKyluW3JdPWVbcl07cmV0dXJuIG59ZnVuY3Rpb24gZyhlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIHYoZSx0KXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIG49dFtyXTtuLmVudW1lcmFibGU9bi5lbnVtZXJhYmxlfHwhMSxuLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gbiYmKG4ud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCh2b2lkIDAsYT1mdW5jdGlvbihlLHQpe2lmKCJvYmplY3QiIT09ZihlKXx8bnVsbD09PWUpcmV0dXJuIGU7dmFyIHI9ZVtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PXIpe3ZhciBuPXIuY2FsbChlLCJzdHJpbmciKTtpZigib2JqZWN0IiE9PWYobikpcmV0dXJuIG47dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4gU3RyaW5nKGUpfShuLmtleSksInN5bWJvbCI9PT1mKGEpP2E6U3RyaW5nKGEpKSxuKX12YXIgYX1mdW5jdGlvbiB5KGUsdCxyKXtyZXR1cm4gdCYmdihlLnByb3RvdHlwZSx0KSxyJiZ2KGUsciksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZX12YXIgbT1bIi5ub3RkZWYiLCJzcGFjZSIsImV4Y2xhbSIsInF1b3RlZGJsIiwibnVtYmVyc2lnbiIsImRvbGxhciIsInBlcmNlbnQiLCJhbXBlcnNhbmQiLCJxdW90ZXJpZ2h0IiwicGFyZW5sZWZ0IiwicGFyZW5yaWdodCIsImFzdGVyaXNrIiwicGx1cyIsImNvbW1hIiwiaHlwaGVuIiwicGVyaW9kIiwic2xhc2giLCJ6ZXJvIiwib25lIiwidHdvIiwidGhyZWUiLCJmb3VyIiwiZml2ZSIsInNpeCIsInNldmVuIiwiZWlnaHQiLCJuaW5lIiwiY29sb24iLCJzZW1pY29sb24iLCJsZXNzIiwiZXF1YWwiLCJncmVhdGVyIiwicXVlc3Rpb24iLCJhdCIsIkEiLCJCIiwiQyIsIkQiLCJFIiwiRiIsIkciLCJIIiwiSSIsIkoiLCJLIiwiTCIsIk0iLCJOIiwiTyIsIlAiLCJRIiwiUiIsIlMiLCJUIiwiVSIsIlYiLCJXIiwiWCIsIlkiLCJaIiwiYnJhY2tldGxlZnQiLCJiYWNrc2xhc2giLCJicmFja2V0cmlnaHQiLCJhc2NpaWNpcmN1bSIsInVuZGVyc2NvcmUiLCJxdW90ZWxlZnQiLCJhIiwiYiIsImMiLCJkIiwiZSIsImYiLCJnIiwiaCIsImkiLCJqIiwiayIsImwiLCJtIiwibiIsIm8iLCJwIiwicSIsInIiLCJzIiwidCIsInUiLCJ2IiwidyIsIngiLCJ5IiwieiIsImJyYWNlbGVmdCIsImJhciIsImJyYWNlcmlnaHQiLCJhc2NpaXRpbGRlIiwiZXhjbGFtZG93biIsImNlbnQiLCJzdGVybGluZyIsImZyYWN0aW9uIiwieWVuIiwiZmxvcmluIiwic2VjdGlvbiIsImN1cnJlbmN5IiwicXVvdGVzaW5nbGUiLCJxdW90ZWRibGxlZnQiLCJndWlsbGVtb3RsZWZ0IiwiZ3VpbHNpbmdsbGVmdCIsImd1aWxzaW5nbHJpZ2h0IiwiZmkiLCJmbCIsImVuZGFzaCIsImRhZ2dlciIsImRhZ2dlcmRibCIsInBlcmlvZGNlbnRlcmVkIiwicGFyYWdyYXBoIiwiYnVsbGV0IiwicXVvdGVzaW5nbGJhc2UiLCJxdW90ZWRibGJhc2UiLCJxdW90ZWRibHJpZ2h0IiwiZ3VpbGxlbW90cmlnaHQiLCJlbGxpcHNpcyIsInBlcnRob3VzYW5kIiwicXVlc3Rpb25kb3duIiwiZ3JhdmUiLCJhY3V0ZSIsImNpcmN1bWZsZXgiLCJ0aWxkZSIsIm1hY3JvbiIsImJyZXZlIiwiZG90YWNjZW50IiwiZGllcmVzaXMiLCJyaW5nIiwiY2VkaWxsYSIsImh1bmdhcnVtbGF1dCIsIm9nb25layIsImNhcm9uIiwiZW1kYXNoIiwiQUUiLCJvcmRmZW1pbmluZSIsIkxzbGFzaCIsIk9zbGFzaCIsIk9FIiwib3JkbWFzY3VsaW5lIiwiYWUiLCJkb3RsZXNzaSIsImxzbGFzaCIsIm9zbGFzaCIsIm9lIiwiZ2VybWFuZGJscyIsIm9uZXN1cGVyaW9yIiwibG9naWNhbG5vdCIsIm11IiwidHJhZGVtYXJrIiwiRXRoIiwib25laGFsZiIsInBsdXNtaW51cyIsIlRob3JuIiwib25lcXVhcnRlciIsImRpdmlkZSIsImJyb2tlbmJhciIsImRlZ3JlZSIsInRob3JuIiwidGhyZWVxdWFydGVycyIsInR3b3N1cGVyaW9yIiwicmVnaXN0ZXJlZCIsIm1pbnVzIiwiZXRoIiwibXVsdGlwbHkiLCJ0aHJlZXN1cGVyaW9yIiwiY29weXJpZ2h0IiwiQWFjdXRlIiwiQWNpcmN1bWZsZXgiLCJBZGllcmVzaXMiLCJBZ3JhdmUiLCJBcmluZyIsIkF0aWxkZSIsIkNjZWRpbGxhIiwiRWFjdXRlIiwiRWNpcmN1bWZsZXgiLCJFZGllcmVzaXMiLCJFZ3JhdmUiLCJJYWN1dGUiLCJJY2lyY3VtZmxleCIsIklkaWVyZXNpcyIsIklncmF2ZSIsIk50aWxkZSIsIk9hY3V0ZSIsIk9jaXJjdW1mbGV4IiwiT2RpZXJlc2lzIiwiT2dyYXZlIiwiT3RpbGRlIiwiU2Nhcm9uIiwiVWFjdXRlIiwiVWNpcmN1bWZsZXgiLCJVZGllcmVzaXMiLCJVZ3JhdmUiLCJZYWN1dGUiLCJZZGllcmVzaXMiLCJaY2Fyb24iLCJhYWN1dGUiLCJhY2lyY3VtZmxleCIsImFkaWVyZXNpcyIsImFncmF2ZSIsImFyaW5nIiwiYXRpbGRlIiwiY2NlZGlsbGEiLCJlYWN1dGUiLCJlY2lyY3VtZmxleCIsImVkaWVyZXNpcyIsImVncmF2ZSIsImlhY3V0ZSIsImljaXJjdW1mbGV4IiwiaWRpZXJlc2lzIiwiaWdyYXZlIiwibnRpbGRlIiwib2FjdXRlIiwib2NpcmN1bWZsZXgiLCJvZGllcmVzaXMiLCJvZ3JhdmUiLCJvdGlsZGUiLCJzY2Fyb24iLCJ1YWN1dGUiLCJ1Y2lyY3VtZmxleCIsInVkaWVyZXNpcyIsInVncmF2ZSIsInlhY3V0ZSIsInlkaWVyZXNpcyIsInpjYXJvbiIsImV4Y2xhbXNtYWxsIiwiSHVuZ2FydW1sYXV0c21hbGwiLCJkb2xsYXJvbGRzdHlsZSIsImRvbGxhcnN1cGVyaW9yIiwiYW1wZXJzYW5kc21hbGwiLCJBY3V0ZXNtYWxsIiwicGFyZW5sZWZ0c3VwZXJpb3IiLCJwYXJlbnJpZ2h0c3VwZXJpb3IiLCJ0d29kb3RlbmxlYWRlciIsIm9uZWRvdGVubGVhZGVyIiwiemVyb29sZHN0eWxlIiwib25lb2xkc3R5bGUiLCJ0d29vbGRzdHlsZSIsInRocmVlb2xkc3R5bGUiLCJmb3Vyb2xkc3R5bGUiLCJmaXZlb2xkc3R5bGUiLCJzaXhvbGRzdHlsZSIsInNldmVub2xkc3R5bGUiLCJlaWdodG9sZHN0eWxlIiwibmluZW9sZHN0eWxlIiwiY29tbWFzdXBlcmlvciIsInRocmVlcXVhcnRlcnNlbWRhc2giLCJwZXJpb2RzdXBlcmlvciIsInF1ZXN0aW9uc21hbGwiLCJhc3VwZXJpb3IiLCJic3VwZXJpb3IiLCJjZW50c3VwZXJpb3IiLCJkc3VwZXJpb3IiLCJlc3VwZXJpb3IiLCJpc3VwZXJpb3IiLCJsc3VwZXJpb3IiLCJtc3VwZXJpb3IiLCJuc3VwZXJpb3IiLCJvc3VwZXJpb3IiLCJyc3VwZXJpb3IiLCJzc3VwZXJpb3IiLCJ0c3VwZXJpb3IiLCJmZiIsImZmaSIsImZmbCIsInBhcmVubGVmdGluZmVyaW9yIiwicGFyZW5yaWdodGluZmVyaW9yIiwiQ2lyY3VtZmxleHNtYWxsIiwiaHlwaGVuc3VwZXJpb3IiLCJHcmF2ZXNtYWxsIiwiQXNtYWxsIiwiQnNtYWxsIiwiQ3NtYWxsIiwiRHNtYWxsIiwiRXNtYWxsIiwiRnNtYWxsIiwiR3NtYWxsIiwiSHNtYWxsIiwiSXNtYWxsIiwiSnNtYWxsIiwiS3NtYWxsIiwiTHNtYWxsIiwiTXNtYWxsIiwiTnNtYWxsIiwiT3NtYWxsIiwiUHNtYWxsIiwiUXNtYWxsIiwiUnNtYWxsIiwiU3NtYWxsIiwiVHNtYWxsIiwiVXNtYWxsIiwiVnNtYWxsIiwiV3NtYWxsIiwiWHNtYWxsIiwiWXNtYWxsIiwiWnNtYWxsIiwiY29sb25tb25ldGFyeSIsIm9uZWZpdHRlZCIsInJ1cGlhaCIsIlRpbGRlc21hbGwiLCJleGNsYW1kb3duc21hbGwiLCJjZW50b2xkc3R5bGUiLCJMc2xhc2hzbWFsbCIsIlNjYXJvbnNtYWxsIiwiWmNhcm9uc21hbGwiLCJEaWVyZXNpc3NtYWxsIiwiQnJldmVzbWFsbCIsIkNhcm9uc21hbGwiLCJEb3RhY2NlbnRzbWFsbCIsIk1hY3JvbnNtYWxsIiwiZmlndXJlZGFzaCIsImh5cGhlbmluZmVyaW9yIiwiT2dvbmVrc21hbGwiLCJSaW5nc21hbGwiLCJDZWRpbGxhc21hbGwiLCJxdWVzdGlvbmRvd25zbWFsbCIsIm9uZWVpZ2h0aCIsInRocmVlZWlnaHRocyIsImZpdmVlaWdodGhzIiwic2V2ZW5laWdodGhzIiwib25ldGhpcmQiLCJ0d290aGlyZHMiLCJ6ZXJvc3VwZXJpb3IiLCJmb3Vyc3VwZXJpb3IiLCJmaXZlc3VwZXJpb3IiLCJzaXhzdXBlcmlvciIsInNldmVuc3VwZXJpb3IiLCJlaWdodHN1cGVyaW9yIiwibmluZXN1cGVyaW9yIiwiemVyb2luZmVyaW9yIiwib25laW5mZXJpb3IiLCJ0d29pbmZlcmlvciIsInRocmVlaW5mZXJpb3IiLCJmb3VyaW5mZXJpb3IiLCJmaXZlaW5mZXJpb3IiLCJzaXhpbmZlcmlvciIsInNldmVuaW5mZXJpb3IiLCJlaWdodGluZmVyaW9yIiwibmluZWluZmVyaW9yIiwiY2VudGluZmVyaW9yIiwiZG9sbGFyaW5mZXJpb3IiLCJwZXJpb2RpbmZlcmlvciIsImNvbW1haW5mZXJpb3IiLCJBZ3JhdmVzbWFsbCIsIkFhY3V0ZXNtYWxsIiwiQWNpcmN1bWZsZXhzbWFsbCIsIkF0aWxkZXNtYWxsIiwiQWRpZXJlc2lzc21hbGwiLCJBcmluZ3NtYWxsIiwiQUVzbWFsbCIsIkNjZWRpbGxhc21hbGwiLCJFZ3JhdmVzbWFsbCIsIkVhY3V0ZXNtYWxsIiwiRWNpcmN1bWZsZXhzbWFsbCIsIkVkaWVyZXNpc3NtYWxsIiwiSWdyYXZlc21hbGwiLCJJYWN1dGVzbWFsbCIsIkljaXJjdW1mbGV4c21hbGwiLCJJZGllcmVzaXNzbWFsbCIsIkV0aHNtYWxsIiwiTnRpbGRlc21hbGwiLCJPZ3JhdmVzbWFsbCIsIk9hY3V0ZXNtYWxsIiwiT2NpcmN1bWZsZXhzbWFsbCIsIk90aWxkZXNtYWxsIiwiT2RpZXJlc2lzc21hbGwiLCJPRXNtYWxsIiwiT3NsYXNoc21hbGwiLCJVZ3JhdmVzbWFsbCIsIlVhY3V0ZXNtYWxsIiwiVWNpcmN1bWZsZXhzbWFsbCIsIlVkaWVyZXNpc3NtYWxsIiwiWWFjdXRlc21hbGwiLCJUaG9ybnNtYWxsIiwiWWRpZXJlc2lzc21hbGwiLCIwMDEuMDAwIiwiMDAxLjAwMSIsIjAwMS4wMDIiLCIwMDEuMDAzIiwiQmxhY2siLCJCb2xkIiwiQm9vayIsIkxpZ2h0IiwiTWVkaXVtIiwiUmVndWxhciIsIlJvbWFuIiwiU2VtaWJvbGQiXTt0LkNGRlN0YW5kYXJkU3RyaW5ncz1tO3ZhciBiPVtudWxsLHtpZDoiaHN0ZW0iLG1pbjoyLHN0YWNrQ2xlYXJpbmc6ITAsc3RlbTohMH0sbnVsbCx7aWQ6InZzdGVtIixtaW46MixzdGFja0NsZWFyaW5nOiEwLHN0ZW06ITB9LHtpZDoidm1vdmV0byIsbWluOjEsc3RhY2tDbGVhcmluZzohMH0se2lkOiJybGluZXRvIixtaW46MixyZXNldFN0YWNrOiEwfSx7aWQ6ImhsaW5ldG8iLG1pbjoxLHJlc2V0U3RhY2s6ITB9LHtpZDoidmxpbmV0byIsbWluOjEscmVzZXRTdGFjazohMH0se2lkOiJycmN1cnZldG8iLG1pbjo2LHJlc2V0U3RhY2s6ITB9LG51bGwse2lkOiJjYWxsc3ViciIsbWluOjEsdW5kZWZTdGFjazohMH0se2lkOiJyZXR1cm4iLG1pbjowLHVuZGVmU3RhY2s6ITB9LG51bGwsbnVsbCx7aWQ6ImVuZGNoYXIiLG1pbjowLHN0YWNrQ2xlYXJpbmc6ITB9LG51bGwsbnVsbCxudWxsLHtpZDoiaHN0ZW1obSIsbWluOjIsc3RhY2tDbGVhcmluZzohMCxzdGVtOiEwfSx7aWQ6ImhpbnRtYXNrIixtaW46MCxzdGFja0NsZWFyaW5nOiEwfSx7aWQ6ImNudHJtYXNrIixtaW46MCxzdGFja0NsZWFyaW5nOiEwfSx7aWQ6InJtb3ZldG8iLG1pbjoyLHN0YWNrQ2xlYXJpbmc6ITB9LHtpZDoiaG1vdmV0byIsbWluOjEsc3RhY2tDbGVhcmluZzohMH0se2lkOiJ2c3RlbWhtIixtaW46MixzdGFja0NsZWFyaW5nOiEwLHN0ZW06ITB9LHtpZDoicmN1cnZlbGluZSIsbWluOjgscmVzZXRTdGFjazohMH0se2lkOiJybGluZWN1cnZlIixtaW46OCxyZXNldFN0YWNrOiEwfSx7aWQ6InZ2Y3VydmV0byIsbWluOjQscmVzZXRTdGFjazohMH0se2lkOiJoaGN1cnZldG8iLG1pbjo0LHJlc2V0U3RhY2s6ITB9LG51bGwse2lkOiJjYWxsZ3N1YnIiLG1pbjoxLHVuZGVmU3RhY2s6ITB9LHtpZDoidmhjdXJ2ZXRvIixtaW46NCxyZXNldFN0YWNrOiEwfSx7aWQ6Imh2Y3VydmV0byIsbWluOjQscmVzZXRTdGFjazohMH1dLHc9W251bGwsbnVsbCxudWxsLHtpZDoiYW5kIixtaW46MixzdGFja0RlbHRhOi0xfSx7aWQ6Im9yIixtaW46MixzdGFja0RlbHRhOi0xfSx7aWQ6Im5vdCIsbWluOjEsc3RhY2tEZWx0YTowfSxudWxsLG51bGwsbnVsbCx7aWQ6ImFicyIsbWluOjEsc3RhY2tEZWx0YTowfSx7aWQ6ImFkZCIsbWluOjIsc3RhY2tEZWx0YTotMSxzdGFja0ZuOmZ1bmN0aW9uKGUsdCl7ZVt0LTJdPWVbdC0yXStlW3QtMV19fSx7aWQ6InN1YiIsbWluOjIsc3RhY2tEZWx0YTotMSxzdGFja0ZuOmZ1bmN0aW9uKGUsdCl7ZVt0LTJdPWVbdC0yXS1lW3QtMV19fSx7aWQ6ImRpdiIsbWluOjIsc3RhY2tEZWx0YTotMSxzdGFja0ZuOmZ1bmN0aW9uKGUsdCl7ZVt0LTJdPWVbdC0yXS9lW3QtMV19fSxudWxsLHtpZDoibmVnIixtaW46MSxzdGFja0RlbHRhOjAsc3RhY2tGbjpmdW5jdGlvbihlLHQpe2VbdC0xXT0tZVt0LTFdfX0se2lkOiJlcSIsbWluOjIsc3RhY2tEZWx0YTotMX0sbnVsbCxudWxsLHtpZDoiZHJvcCIsbWluOjEsc3RhY2tEZWx0YTotMX0sbnVsbCx7aWQ6InB1dCIsbWluOjIsc3RhY2tEZWx0YTotMn0se2lkOiJnZXQiLG1pbjoxLHN0YWNrRGVsdGE6MH0se2lkOiJpZmVsc2UiLG1pbjo0LHN0YWNrRGVsdGE6LTN9LHtpZDoicmFuZG9tIixtaW46MCxzdGFja0RlbHRhOjF9LHtpZDoibXVsIixtaW46MixzdGFja0RlbHRhOi0xLHN0YWNrRm46ZnVuY3Rpb24oZSx0KXtlW3QtMl09ZVt0LTJdKmVbdC0xXX19LG51bGwse2lkOiJzcXJ0IixtaW46MSxzdGFja0RlbHRhOjB9LHtpZDoiZHVwIixtaW46MSxzdGFja0RlbHRhOjF9LHtpZDoiZXhjaCIsbWluOjIsc3RhY2tEZWx0YTowfSx7aWQ6ImluZGV4IixtaW46MixzdGFja0RlbHRhOjB9LHtpZDoicm9sbCIsbWluOjMsc3RhY2tEZWx0YTotMn0sbnVsbCxudWxsLG51bGwse2lkOiJoZmxleCIsbWluOjcscmVzZXRTdGFjazohMH0se2lkOiJmbGV4IixtaW46MTMscmVzZXRTdGFjazohMH0se2lkOiJoZmxleDEiLG1pbjo5LHJlc2V0U3RhY2s6ITB9LHtpZDoiZmxleDEiLG1pbjoxMSxyZXNldFN0YWNrOiEwfV0saz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCxyLG4pe2codGhpcyxlKSx0aGlzLmJ5dGVzPXQuZ2V0Qnl0ZXMoKSx0aGlzLnByb3BlcnRpZXM9cix0aGlzLnNlYWNBbmFseXNpc0VuYWJsZWQ9ISFufXJldHVybiB5KGUsW3trZXk6InBhcnNlIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMucHJvcGVydGllcyx0PW5ldyBTO3RoaXMuY2ZmPXQ7dmFyIHI9dGhpcy5wYXJzZUhlYWRlcigpLG49dGhpcy5wYXJzZUluZGV4KHIuZW5kUG9zKSxhPXRoaXMucGFyc2VJbmRleChuLmVuZFBvcyksaT10aGlzLnBhcnNlSW5kZXgoYS5lbmRQb3MpLG89dGhpcy5wYXJzZUluZGV4KGkuZW5kUG9zKSxzPXRoaXMucGFyc2VEaWN0KGEub2JqLmdldCgwKSksYz10aGlzLmNyZWF0ZURpY3QoUCxzLHQuc3RyaW5ncyk7dC5oZWFkZXI9ci5vYmosdC5uYW1lcz10aGlzLnBhcnNlTmFtZUluZGV4KG4ub2JqKSx0LnN0cmluZ3M9dGhpcy5wYXJzZVN0cmluZ0luZGV4KGkub2JqKSx0LnRvcERpY3Q9Yyx0Lmdsb2JhbFN1YnJJbmRleD1vLm9iaix0aGlzLnBhcnNlUHJpdmF0ZURpY3QodC50b3BEaWN0KSx0LmlzQ0lERm9udD1jLmhhc05hbWUoIlJPUyIpO3ZhciB1PWMuZ2V0QnlOYW1lKCJDaGFyU3RyaW5ncyIpLGw9dGhpcy5wYXJzZUluZGV4KHUpLm9iaixmPWMuZ2V0QnlOYW1lKCJGb250TWF0cml4Iik7ZiYmKGUuZm9udE1hdHJpeD1mKTt2YXIgaCxkLHA9Yy5nZXRCeU5hbWUoIkZvbnRCQm94Iik7aWYocCYmKGUuYXNjZW50PU1hdGgubWF4KHBbM10scFsxXSksZS5kZXNjZW50PU1hdGgubWluKHBbMV0scFszXSksZS5hc2NlbnRTY2FsZWQ9ITApLHQuaXNDSURGb250KXtmb3IodmFyIGc9dGhpcy5wYXJzZUluZGV4KGMuZ2V0QnlOYW1lKCJGREFycmF5IikpLm9iaix2PTAseT1nLmNvdW50O3Y8eTsrK3Ype3ZhciBtPWcuZ2V0KHYpLGI9dGhpcy5jcmVhdGVEaWN0KFAsdGhpcy5wYXJzZURpY3QobSksdC5zdHJpbmdzKTt0aGlzLnBhcnNlUHJpdmF0ZURpY3QoYiksdC5mZEFycmF5LnB1c2goYil9ZD1udWxsLGg9dGhpcy5wYXJzZUNoYXJzZXRzKGMuZ2V0QnlOYW1lKCJjaGFyc2V0IiksbC5jb3VudCx0LnN0cmluZ3MsITApLHQuZmRTZWxlY3Q9dGhpcy5wYXJzZUZEU2VsZWN0KGMuZ2V0QnlOYW1lKCJGRFNlbGVjdCIpLGwuY291bnQpfWVsc2UgaD10aGlzLnBhcnNlQ2hhcnNldHMoYy5nZXRCeU5hbWUoImNoYXJzZXQiKSxsLmNvdW50LHQuc3RyaW5ncywhMSksZD10aGlzLnBhcnNlRW5jb2RpbmcoYy5nZXRCeU5hbWUoIkVuY29kaW5nIiksZSx0LnN0cmluZ3MsaC5jaGFyc2V0KTt0LmNoYXJzZXQ9aCx0LmVuY29kaW5nPWQ7dmFyIHc9dGhpcy5wYXJzZUNoYXJTdHJpbmdzKHtjaGFyU3RyaW5nczpsLGxvY2FsU3VickluZGV4OmMucHJpdmF0ZURpY3Quc3VicnNJbmRleCxnbG9iYWxTdWJySW5kZXg6by5vYmosZmRTZWxlY3Q6dC5mZFNlbGVjdCxmZEFycmF5OnQuZmRBcnJheSxwcml2YXRlRGljdDpjLnByaXZhdGVEaWN0fSk7cmV0dXJuIHQuY2hhclN0cmluZ3M9dy5jaGFyU3RyaW5ncyx0LnNlYWNzPXcuc2VhY3MsdC53aWR0aHM9dy53aWR0aHMsdH19LHtrZXk6InBhcnNlSGVhZGVyIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgZT10aGlzLmJ5dGVzLHQ9ZS5sZW5ndGgscj0wO3I8dCYmMSE9PWVbcl07KSsrcjtpZihyPj10KXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJJbnZhbGlkIENGRiBoZWFkZXIiKTswIT09ciYmKCgwLG4uaW5mbykoImNmZiBkYXRhIGlzIHNoaWZ0ZWQiKSxlPWUuc3ViYXJyYXkociksdGhpcy5ieXRlcz1lKTt2YXIgYT1lWzBdLGk9ZVsxXSxvPWVbMl0scz1lWzNdO3JldHVybntvYmo6bmV3IHgoYSxpLG8scyksZW5kUG9zOm99fX0se2tleToicGFyc2VEaWN0Iix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD0wO3ZhciByLGE9W10saT1bXTt0PTA7Zm9yKHZhciBvPWUubGVuZ3RoO3Q8bzspe3ZhciBzPWVbdF07czw9MjE/KDEyPT09cyYmKHM9czw8OHxlWysrdF0pLGkucHVzaChbcyxhXSksYT1bXSwrK3QpOmEucHVzaCgocj12b2lkIDAsMzA9PT0ocj1lW3QrK10pP2Z1bmN0aW9uKCl7Zm9yKHZhciByPSIiLG49WyIwIiwiMSIsIjIiLCIzIiwiNCIsIjUiLCI2IiwiNyIsIjgiLCI5IiwiLiIsIkUiLCJFLSIsbnVsbCwiLSJdLGE9ZS5sZW5ndGg7dDxhOyl7dmFyIGk9ZVt0KytdLG89aT4+NCxzPTE1Jmk7aWYoMTU9PT1vKWJyZWFrO2lmKHIrPW5bb10sMTU9PT1zKWJyZWFrO3IrPW5bc119cmV0dXJuIHBhcnNlRmxvYXQocil9KCk6Mjg9PT1yP3I9KChyPWVbdCsrXSk8PDI0fGVbdCsrXTw8MTYpPj4xNjoyOT09PXI/cj0ocj0ocj0ocj1lW3QrK10pPDw4fGVbdCsrXSk8PDh8ZVt0KytdKTw8OHxlW3QrK106cj49MzImJnI8PTI0Nj9yLTEzOTpyPj0yNDcmJnI8PTI1MD8yNTYqKHItMjQ3KStlW3QrK10rMTA4OnI+PTI1MSYmcjw9MjU0Py0yNTYqKHItMjUxKS1lW3QrK10tMTA4OigoMCxuLndhcm4pKCdDRkZQYXJzZXJfcGFyc2VEaWN0OiAiJytyKyciIGlzIGEgcmVzZXJ2ZWQgY29tbWFuZC4nKSxOYU4pKSl9cmV0dXJuIGl9fSx7a2V5OiJwYXJzZUluZGV4Iix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdCxyLG49bmV3IEEsYT10aGlzLmJ5dGVzLGk9YVtlKytdPDw4fGFbZSsrXSxvPVtdLHM9ZTtpZigwIT09aSl7dmFyIGM9YVtlKytdLHU9ZSsoaSsxKSpjLTE7Zm9yKHQ9MCxyPWkrMTt0PHI7Kyt0KXtmb3IodmFyIGw9MCxmPTA7ZjxjOysrZilsPDw9OCxsKz1hW2UrK107by5wdXNoKHUrbCl9cz1vW2ldfWZvcih0PTAscj1vLmxlbmd0aC0xO3Q8cjsrK3Qpe3ZhciBoPW9bdF0sZD1vW3QrMV07bi5hZGQoYS5zdWJhcnJheShoLGQpKX1yZXR1cm57b2JqOm4sZW5kUG9zOnN9fX0se2tleToicGFyc2VOYW1lSW5kZXgiLHZhbHVlOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1bXSxyPTAsYT1lLmNvdW50O3I8YTsrK3Ipe3ZhciBpPWUuZ2V0KHIpO3QucHVzaCgoMCxuLmJ5dGVzVG9TdHJpbmcpKGkpKX1yZXR1cm4gdH19LHtrZXk6InBhcnNlU3RyaW5nSW5kZXgiLHZhbHVlOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1uZXcgTyxyPTAsYT1lLmNvdW50O3I8YTsrK3Ipe3ZhciBpPWUuZ2V0KHIpO3QuYWRkKCgwLG4uYnl0ZXNUb1N0cmluZykoaSkpfXJldHVybiB0fX0se2tleToiY3JlYXRlRGljdCIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuLGEsaSxvPW5ldyBlKHIpLHM9aCh0KTt0cnl7Zm9yKHMucygpOyEobj1zLm4oKSkuZG9uZTspe3ZhciBjPShhPW4udmFsdWUsaT0yLGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGEpfHxmdW5jdGlvbihlLHQpe3ZhciByPW51bGw9PWU/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9cil7dmFyIG4sYSxpLG8scz1bXSxjPSEwLHU9ITE7dHJ5e2lmKGk9KHI9ci5jYWxsKGUpKS5uZXh0LDA9PT10KXtpZihPYmplY3QocikhPT1yKXJldHVybjtjPSExfWVsc2UgZm9yKDshKGM9KG49aS5jYWxsKHIpKS5kb25lKSYmKHMucHVzaChuLnZhbHVlKSxzLmxlbmd0aCE9PXQpO2M9ITApO31jYXRjaChlKXt1PSEwLGE9ZX1maW5hbGx5e3RyeXtpZighYyYmbnVsbCE9ci5yZXR1cm4mJihvPXIucmV0dXJuKCksT2JqZWN0KG8pIT09bykpcmV0dXJufWZpbmFsbHl7aWYodSl0aHJvdyBhfX1yZXR1cm4gc319KGEsaSl8fGQoYSxpKXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpKSx1PWNbMF0sbD1jWzFdO28uc2V0QnlLZXkodSxsKX19Y2F0Y2goZSl7cy5lKGUpfWZpbmFsbHl7cy5mKCl9cmV0dXJuIG99fSx7a2V5OiJwYXJzZUNoYXJTdHJpbmciLHZhbHVlOmZ1bmN0aW9uKGUsdCxyLGEpe2lmKCF0fHxlLmNhbGxEZXB0aD4xMClyZXR1cm4hMTtmb3IodmFyIGk9ZS5zdGFja1NpemUsbz1lLnN0YWNrLHM9dC5sZW5ndGgsYz0wO2M8czspe3ZhciB1PXRbYysrXSxsPW51bGw7aWYoMTI9PT11KXt2YXIgZj10W2MrK107MD09PWY/KHRbYy0yXT0xMzksdFtjLTFdPTIyLGk9MCk6bD13W2ZdfWVsc2UgaWYoMjg9PT11KW9baV09KHRbY108PDI0fHRbYysxXTw8MTYpPj4xNixjKz0yLGkrKztlbHNlIGlmKDE0PT09dSl7aWYoaT49NCYmKGktPTQsdGhpcy5zZWFjQW5hbHlzaXNFbmFibGVkKSlyZXR1cm4gZS5zZWFjPW8uc2xpY2UoaSxpKzQpLCExO2w9Ylt1XX1lbHNlIGlmKHU+PTMyJiZ1PD0yNDYpb1tpXT11LTEzOSxpKys7ZWxzZSBpZih1Pj0yNDcmJnU8PTI1NClvW2ldPXU8MjUxPyh1LTI0Nzw8OCkrdFtjXSsxMDg6LSh1LTI1MTw8OCktdFtjXS0xMDgsYysrLGkrKztlbHNlIGlmKDI1NT09PXUpb1tpXT0odFtjXTw8MjR8dFtjKzFdPDwxNnx0W2MrMl08PDh8dFtjKzNdKS82NTUzNixjKz00LGkrKztlbHNlIGlmKDE5PT09dXx8MjA9PT11KWUuaGludHMrPWk+PjEsYys9ZS5oaW50cys3Pj4zLGklPTIsbD1iW3VdO2Vsc2V7aWYoMTA9PT11fHwyOT09PXUpe3ZhciBoPXZvaWQgMDtpZighKGg9MTA9PT11P3I6YSkpcmV0dXJuIGw9Ylt1XSwoMCxuLndhcm4pKCJNaXNzaW5nIHN1YnJzSW5kZXggZm9yICIrbC5pZCksITE7dmFyIGQ9MzI3Njg7aC5jb3VudDwxMjQwP2Q9MTA3OmguY291bnQ8MzM5MDAmJihkPTExMzEpO3ZhciBwPW9bLS1pXStkO2lmKHA8MHx8cD49aC5jb3VudHx8aXNOYU4ocCkpcmV0dXJuIGw9Ylt1XSwoMCxuLndhcm4pKCJPdXQgb2YgYm91bmRzIHN1YnJJbmRleCBmb3IgIitsLmlkKSwhMTtpZihlLnN0YWNrU2l6ZT1pLGUuY2FsbERlcHRoKyssIXRoaXMucGFyc2VDaGFyU3RyaW5nKGUsaC5nZXQocCkscixhKSlyZXR1cm4hMTtlLmNhbGxEZXB0aC0tLGk9ZS5zdGFja1NpemU7Y29udGludWV9aWYoMTE9PT11KXJldHVybiBlLnN0YWNrU2l6ZT1pLCEwO2lmKDA9PT11JiZjPT09dC5sZW5ndGgpdFtjLTFdPTE0LGw9YlsxNF07ZWxzZXtpZig5PT09dSl7dC5jb3B5V2l0aGluKGMtMSxjLC0xKSxjLT0xLHMtPTE7Y29udGludWV9bD1iW3VdfX1pZihsKXtpZihsLnN0ZW0mJihlLmhpbnRzKz1pPj4xLDM9PT11fHwyMz09PXU/ZS5oYXNWU3RlbXM9ITA6IWUuaGFzVlN0ZW1zfHwxIT09dSYmMTghPT11fHwoKDAsbi53YXJuKSgiQ0ZGIHN0ZW0gaGludHMgYXJlIGluIHdyb25nIG9yZGVyIiksdFtjLTFdPTE9PT11PzM6MjMpKSwibWluImluIGwmJiFlLnVuZGVmU3RhY2smJmk8bC5taW4pcmV0dXJuKDAsbi53YXJuKSgiTm90IGVub3VnaCBwYXJhbWV0ZXJzIGZvciAiK2wuaWQrIjsgYWN0dWFsOiAiK2krIiwgZXhwZWN0ZWQ6ICIrbC5taW4pLDA9PT1pJiYodFtjLTFdPTE0LCEwKTtlLmZpcnN0U3RhY2tDbGVhcmluZyYmbC5zdGFja0NsZWFyaW5nJiYoZS5maXJzdFN0YWNrQ2xlYXJpbmc9ITEsKGktPWwubWluKT49MiYmbC5zdGVtP2klPTI6aT4xJiYoMCxuLndhcm4pKCJGb3VuZCB0b28gbWFueSBwYXJhbWV0ZXJzIGZvciBzdGFjay1jbGVhcmluZyBjb21tYW5kIiksaT4wJiYoZS53aWR0aD1vW2ktMV0pKSwic3RhY2tEZWx0YSJpbiBsPygic3RhY2tGbiJpbiBsJiZsLnN0YWNrRm4obyxpKSxpKz1sLnN0YWNrRGVsdGEpOmwuc3RhY2tDbGVhcmluZz9pPTA6bC5yZXNldFN0YWNrPyhpPTAsZS51bmRlZlN0YWNrPSExKTpsLnVuZGVmU3RhY2smJihpPTAsZS51bmRlZlN0YWNrPSEwLGUuZmlyc3RTdGFja0NsZWFyaW5nPSExKX19cmV0dXJuIHM8dC5sZW5ndGgmJnQuZmlsbCgxNCxzKSxlLnN0YWNrU2l6ZT1pLCEwfX0se2tleToicGFyc2VDaGFyU3RyaW5ncyIsdmFsdWU6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PWUuY2hhclN0cmluZ3Mscj1lLmxvY2FsU3VickluZGV4LGE9ZS5nbG9iYWxTdWJySW5kZXgsaT1lLmZkU2VsZWN0LG89ZS5mZEFycmF5LHM9ZS5wcml2YXRlRGljdCxjPVtdLHU9W10sbD10LmNvdW50LGY9MDtmPGw7ZisrKXt2YXIgaD10LmdldChmKSxkPXtjYWxsRGVwdGg6MCxzdGFja1NpemU6MCxzdGFjazpbXSx1bmRlZlN0YWNrOiEwLGhpbnRzOjAsZmlyc3RTdGFja0NsZWFyaW5nOiEwLHNlYWM6bnVsbCx3aWR0aDpudWxsLGhhc1ZTdGVtczohMX0scD0hMCxnPW51bGwsdj1zO2lmKGkmJm8ubGVuZ3RoKXt2YXIgeT1pLmdldEZESW5kZXgoZik7LTE9PT15JiYoKDAsbi53YXJuKSgiR2x5cGggaW5kZXggaXMgbm90IGluIGZkIHNlbGVjdC4iKSxwPSExKSx5Pj1vLmxlbmd0aCYmKCgwLG4ud2FybikoIkludmFsaWQgZmQgaW5kZXggZm9yIGdseXBoIGluZGV4LiIpLHA9ITEpLHAmJihnPSh2PW9beV0ucHJpdmF0ZURpY3QpLnN1YnJzSW5kZXgpfWVsc2UgciYmKGc9cik7aWYocCYmKHA9dGhpcy5wYXJzZUNoYXJTdHJpbmcoZCxoLGcsYSkpLG51bGwhPT1kLndpZHRoKXt2YXIgbT12LmdldEJ5TmFtZSgibm9taW5hbFdpZHRoWCIpO3VbZl09bStkLndpZHRofWVsc2V7dmFyIGI9di5nZXRCeU5hbWUoImRlZmF1bHRXaWR0aFgiKTt1W2ZdPWJ9bnVsbCE9PWQuc2VhYyYmKGNbZl09ZC5zZWFjKSxwfHx0LnNldChmLG5ldyBVaW50OEFycmF5KFsxNF0pKX1yZXR1cm57Y2hhclN0cmluZ3M6dCxzZWFjczpjLHdpZHRoczp1fX19LHtrZXk6ImVtcHR5UHJpdmF0ZURpY3Rpb25hcnkiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuY3JlYXRlRGljdChJLFtdLGUuc3RyaW5ncyk7ZS5zZXRCeUtleSgxOCxbMCwwXSksZS5wcml2YXRlRGljdD10fX0se2tleToicGFyc2VQcml2YXRlRGljdCIsdmFsdWU6ZnVuY3Rpb24oZSl7aWYoZS5oYXNOYW1lKCJQcml2YXRlIikpe3ZhciB0PWUuZ2V0QnlOYW1lKCJQcml2YXRlIik7aWYoQXJyYXkuaXNBcnJheSh0KSYmMj09PXQubGVuZ3RoKXt2YXIgcj10WzBdLG49dFsxXTtpZigwPT09cnx8bj49dGhpcy5ieXRlcy5sZW5ndGgpdGhpcy5lbXB0eVByaXZhdGVEaWN0aW9uYXJ5KGUpO2Vsc2V7dmFyIGE9bityLGk9dGhpcy5ieXRlcy5zdWJhcnJheShuLGEpLG89dGhpcy5wYXJzZURpY3QoaSkscz10aGlzLmNyZWF0ZURpY3QoSSxvLGUuc3RyaW5ncyk7aWYoZS5wcml2YXRlRGljdD1zLHMuZ2V0QnlOYW1lKCJTdWJycyIpKXt2YXIgYz1zLmdldEJ5TmFtZSgiU3VicnMiKSx1PW4rYztpZigwPT09Y3x8dT49dGhpcy5ieXRlcy5sZW5ndGgpdGhpcy5lbXB0eVByaXZhdGVEaWN0aW9uYXJ5KGUpO2Vsc2V7dmFyIGw9dGhpcy5wYXJzZUluZGV4KHUpO3Muc3VicnNJbmRleD1sLm9ian19fX1lbHNlIGUucmVtb3ZlQnlOYW1lKCJQcml2YXRlIil9ZWxzZSB0aGlzLmVtcHR5UHJpdmF0ZURpY3Rpb25hcnkoZSl9fSx7a2V5OiJwYXJzZUNoYXJzZXRzIix2YWx1ZTpmdW5jdGlvbihlLHQscixpKXtpZigwPT09ZSlyZXR1cm4gbmV3IGooITAsRS5JU09fQURPQkUsYS5JU09BZG9iZUNoYXJzZXQpO2lmKDE9PT1lKXJldHVybiBuZXcgaighMCxFLkVYUEVSVCxhLkV4cGVydENoYXJzZXQpO2lmKDI9PT1lKXJldHVybiBuZXcgaighMCxFLkVYUEVSVF9TVUJTRVQsYS5FeHBlcnRTdWJzZXRDaGFyc2V0KTt2YXIgbyxzLGMsdT10aGlzLmJ5dGVzLGw9ZSxmPXVbZSsrXSxoPVtpPzA6Ii5ub3RkZWYiXTtzd2l0Y2godC09MSxmKXtjYXNlIDA6Zm9yKGM9MDtjPHQ7YysrKW89dVtlKytdPDw4fHVbZSsrXSxoLnB1c2goaT9vOnIuZ2V0KG8pKTticmVhaztjYXNlIDE6Zm9yKDtoLmxlbmd0aDw9dDspZm9yKG89dVtlKytdPDw4fHVbZSsrXSxzPXVbZSsrXSxjPTA7Yzw9cztjKyspaC5wdXNoKGk/bysrOnIuZ2V0KG8rKykpO2JyZWFrO2Nhc2UgMjpmb3IoO2gubGVuZ3RoPD10Oylmb3Iobz11W2UrK108PDh8dVtlKytdLHM9dVtlKytdPDw4fHVbZSsrXSxjPTA7Yzw9cztjKyspaC5wdXNoKGk/bysrOnIuZ2V0KG8rKykpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIlVua25vd24gY2hhcnNldCBmb3JtYXQiKX12YXIgZD1lLHA9dS5zdWJhcnJheShsLGQpO3JldHVybiBuZXcgaighMSxmLGgscCl9fSx7a2V5OiJwYXJzZUVuY29kaW5nIix2YWx1ZTpmdW5jdGlvbihlLHQscixhKXt2YXIgbyxzLGMsdT1PYmplY3QuY3JlYXRlKG51bGwpLGw9dGhpcy5ieXRlcyxmPSExLGg9bnVsbDtpZigwPT09ZXx8MT09PWUpe2Y9ITAsbz1lO3ZhciBkPWU/aS5FeHBlcnRFbmNvZGluZzppLlN0YW5kYXJkRW5jb2Rpbmc7Zm9yKHM9MCxjPWEubGVuZ3RoO3M8YztzKyspe3ZhciBwPWQuaW5kZXhPZihhW3NdKTstMSE9PXAmJih1W3BdPXMpfX1lbHNle3ZhciBnPWU7c3dpdGNoKDEyNyYobz1sW2UrK10pKXtjYXNlIDA6dmFyIHY9bFtlKytdO2ZvcihzPTE7czw9djtzKyspdVtsW2UrK11dPXM7YnJlYWs7Y2FzZSAxOnZhciB5PWxbZSsrXSxtPTE7Zm9yKHM9MDtzPHk7cysrKWZvcih2YXIgYj1sW2UrK10sdz1sW2UrK10saz1iO2s8PWIrdztrKyspdVtrXT1tKys7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiVW5rbm93biBlbmNvZGluZyBmb3JtYXQ6ICIuY29uY2F0KG8sIiBpbiBDRkYiKSl9dmFyIFM9ZTsxMjgmbyYmKGxbZ10mPTEyNyxmdW5jdGlvbigpe3ZhciB0PWxbZSsrXTtmb3Iocz0wO3M8dDtzKyspe3ZhciBuPWxbZSsrXSxpPShsW2UrK108PDgpKygyNTUmbFtlKytdKTt1W25dPWEuaW5kZXhPZihyLmdldChpKSl9fSgpKSxoPWwuc3ViYXJyYXkoZyxTKX1yZXR1cm4gbmV3IE0oZixvJj0xMjcsdSxoKX19LHtrZXk6InBhcnNlRkRTZWxlY3QiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIHIsYT10aGlzLmJ5dGVzLGk9YVtlKytdLG89W107c3dpdGNoKGkpe2Nhc2UgMDpmb3Iocj0wO3I8dDsrK3Ipe3ZhciBzPWFbZSsrXTtvLnB1c2gocyl9YnJlYWs7Y2FzZSAzOnZhciBjPWFbZSsrXTw8OHxhW2UrK107Zm9yKHI9MDtyPGM7KytyKXt2YXIgdT1hW2UrK108PDh8YVtlKytdOzA9PT1yJiYwIT09dSYmKCgwLG4ud2FybikoInBhcnNlRkRTZWxlY3Q6IFRoZSBmaXJzdCByYW5nZSBtdXN0IGhhdmUgYSBmaXJzdCBHSUQgb2YgMCAtLSB0cnlpbmcgdG8gcmVjb3Zlci4iKSx1PTApO2Zvcih2YXIgbD1hW2UrK10sZj1hW2VdPDw4fGFbZSsxXSxoPXU7aDxmOysraClvLnB1c2gobCl9ZSs9MjticmVhaztkZWZhdWx0OnRocm93IG5ldyBuLkZvcm1hdEVycm9yKCdwYXJzZUZEU2VsZWN0OiBVbmtub3duIGZvcm1hdCAiJy5jb25jYXQoaSwnIi4nKSl9aWYoby5sZW5ndGghPT10KXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJwYXJzZUZEU2VsZWN0OiBJbnZhbGlkIGZvbnQgZGF0YS4iKTtyZXR1cm4gbmV3IF8oaSxvKX19XSksZX0oKTt0LkNGRlBhcnNlcj1rO3ZhciBTPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe2codGhpcyxlKSx0aGlzLmhlYWRlcj1udWxsLHRoaXMubmFtZXM9W10sdGhpcy50b3BEaWN0PW51bGwsdGhpcy5zdHJpbmdzPW5ldyBPLHRoaXMuZ2xvYmFsU3VickluZGV4PW51bGwsdGhpcy5lbmNvZGluZz1udWxsLHRoaXMuY2hhcnNldD1udWxsLHRoaXMuY2hhclN0cmluZ3M9bnVsbCx0aGlzLmZkQXJyYXk9W10sdGhpcy5mZFNlbGVjdD1udWxsLHRoaXMuaXNDSURGb250PSExfXJldHVybiB5KGUsW3trZXk6ImR1cGxpY2F0ZUZpcnN0R2x5cGgiLHZhbHVlOmZ1bmN0aW9uKCl7aWYodGhpcy5jaGFyU3RyaW5ncy5jb3VudD49NjU1MzUpKDAsbi53YXJuKSgiTm90IGVub3VnaCBzcGFjZSBpbiBjaGFyc3RyaW5ncyB0byBkdXBsaWNhdGUgZmlyc3QgZ2x5cGguIik7ZWxzZXt2YXIgZT10aGlzLmNoYXJTdHJpbmdzLmdldCgwKTt0aGlzLmNoYXJTdHJpbmdzLmFkZChlKSx0aGlzLmlzQ0lERm9udCYmdGhpcy5mZFNlbGVjdC5mZFNlbGVjdC5wdXNoKHRoaXMuZmRTZWxlY3QuZmRTZWxlY3RbMF0pfX19LHtrZXk6Imhhc0dseXBoSWQiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiEoZTwwfHxlPj10aGlzLmNoYXJTdHJpbmdzLmNvdW50KSYmdGhpcy5jaGFyU3RyaW5ncy5nZXQoZSkubGVuZ3RoPjB9fV0pLGV9KCk7dC5DRkY9Uzt2YXIgeD15KChmdW5jdGlvbiBlKHQscixuLGEpe2codGhpcyxlKSx0aGlzLm1ham9yPXQsdGhpcy5taW5vcj1yLHRoaXMuaGRyU2l6ZT1uLHRoaXMub2ZmU2l6ZT1hfSkpO3QuQ0ZGSGVhZGVyPXg7dmFyIE89ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7Zyh0aGlzLGUpLHRoaXMuc3RyaW5ncz1bXX1yZXR1cm4geShlLFt7a2V5OiJnZXQiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBlPj0wJiZlPD0zOTA/bVtlXTplLTM5MTw9dGhpcy5zdHJpbmdzLmxlbmd0aD90aGlzLnN0cmluZ3NbZS0zOTFdOm1bMF19fSx7a2V5OiJnZXRTSUQiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PW0uaW5kZXhPZihlKTtyZXR1cm4tMSE9PXQ/dDotMSE9PSh0PXRoaXMuc3RyaW5ncy5pbmRleE9mKGUpKT90KzM5MTotMX19LHtrZXk6ImFkZCIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5zdHJpbmdzLnB1c2goZSl9fSx7a2V5OiJjb3VudCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3RyaW5ncy5sZW5ndGh9fV0pLGV9KCk7dC5DRkZTdHJpbmdzPU87dmFyIEE9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7Zyh0aGlzLGUpLHRoaXMub2JqZWN0cz1bXSx0aGlzLmxlbmd0aD0wfXJldHVybiB5KGUsW3trZXk6ImFkZCIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5sZW5ndGgrPWUubGVuZ3RoLHRoaXMub2JqZWN0cy5wdXNoKGUpfX0se2tleToic2V0Iix2YWx1ZTpmdW5jdGlvbihlLHQpe3RoaXMubGVuZ3RoKz10Lmxlbmd0aC10aGlzLm9iamVjdHNbZV0ubGVuZ3RoLHRoaXMub2JqZWN0c1tlXT10fX0se2tleToiZ2V0Iix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5vYmplY3RzW2VdfX0se2tleToiY291bnQiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm9iamVjdHMubGVuZ3RofX1dKSxlfSgpO3QuQ0ZGSW5kZXg9QTt2YXIgQz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCxyKXtnKHRoaXMsZSksdGhpcy5rZXlUb05hbWVNYXA9dC5rZXlUb05hbWVNYXAsdGhpcy5uYW1lVG9LZXlNYXA9dC5uYW1lVG9LZXlNYXAsdGhpcy5kZWZhdWx0cz10LmRlZmF1bHRzLHRoaXMudHlwZXM9dC50eXBlcyx0aGlzLm9wY29kZXM9dC5vcGNvZGVzLHRoaXMub3JkZXI9dC5vcmRlcix0aGlzLnN0cmluZ3M9cix0aGlzLnZhbHVlcz1PYmplY3QuY3JlYXRlKG51bGwpfXJldHVybiB5KGUsW3trZXk6InNldEJ5S2V5Iix2YWx1ZTpmdW5jdGlvbihlLHQpe2lmKCEoZSBpbiB0aGlzLmtleVRvTmFtZU1hcCkpcmV0dXJuITE7aWYoMD09PXQubGVuZ3RoKXJldHVybiEwO3ZhciByLGE9aCh0KTt0cnl7Zm9yKGEucygpOyEocj1hLm4oKSkuZG9uZTspe3ZhciBpPXIudmFsdWU7aWYoaXNOYU4oaSkpcmV0dXJuKDAsbi53YXJuKSgnSW52YWxpZCBDRkZEaWN0IHZhbHVlOiAiJy5jb25jYXQodCwnIiBmb3Iga2V5ICInKS5jb25jYXQoZSwnIi4nKSksITB9fWNhdGNoKGUpe2EuZShlKX1maW5hbGx5e2EuZigpfXZhciBvPXRoaXMudHlwZXNbZV07cmV0dXJuIm51bSIhPT1vJiYic2lkIiE9PW8mJiJvZmZzZXQiIT09b3x8KHQ9dFswXSksdGhpcy52YWx1ZXNbZV09dCwhMH19LHtrZXk6InNldEJ5TmFtZSIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtpZighKGUgaW4gdGhpcy5uYW1lVG9LZXlNYXApKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCdJbnZhbGlkIGRpY3Rpb25hcnkgbmFtZSAiJy5jb25jYXQoZSwnIicpKTt0aGlzLnZhbHVlc1t0aGlzLm5hbWVUb0tleU1hcFtlXV09dH19LHtrZXk6Imhhc05hbWUiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLm5hbWVUb0tleU1hcFtlXWluIHRoaXMudmFsdWVzfX0se2tleToiZ2V0QnlOYW1lIix2YWx1ZTpmdW5jdGlvbihlKXtpZighKGUgaW4gdGhpcy5uYW1lVG9LZXlNYXApKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJJbnZhbGlkIGRpY3Rpb25hcnkgbmFtZSAiLmNvbmNhdChlLCciJykpO3ZhciB0PXRoaXMubmFtZVRvS2V5TWFwW2VdO3JldHVybiB0IGluIHRoaXMudmFsdWVzP3RoaXMudmFsdWVzW3RdOnRoaXMuZGVmYXVsdHNbdF19fSx7a2V5OiJyZW1vdmVCeU5hbWUiLHZhbHVlOmZ1bmN0aW9uKGUpe2RlbGV0ZSB0aGlzLnZhbHVlc1t0aGlzLm5hbWVUb0tleU1hcFtlXV19fV0sW3trZXk6ImNyZWF0ZVRhYmxlcyIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQscj17a2V5VG9OYW1lTWFwOnt9LG5hbWVUb0tleU1hcDp7fSxkZWZhdWx0czp7fSx0eXBlczp7fSxvcGNvZGVzOnt9LG9yZGVyOltdfSxuPWgoZSk7dHJ5e2ZvcihuLnMoKTshKHQ9bi5uKCkpLmRvbmU7KXt2YXIgYT10LnZhbHVlLGk9QXJyYXkuaXNBcnJheShhWzBdKT8oYVswXVswXTw8OCkrYVswXVsxXTphWzBdO3Iua2V5VG9OYW1lTWFwW2ldPWFbMV0sci5uYW1lVG9LZXlNYXBbYVsxXV09aSxyLnR5cGVzW2ldPWFbMl0sci5kZWZhdWx0c1tpXT1hWzNdLHIub3Bjb2Rlc1tpXT1BcnJheS5pc0FycmF5KGFbMF0pP2FbMF06W2FbMF1dLHIub3JkZXIucHVzaChpKX19Y2F0Y2goZSl7bi5lKGUpfWZpbmFsbHl7bi5mKCl9cmV0dXJuIHJ9fV0pLGV9KCksRj1bW1sxMiwzMF0sIlJPUyIsWyJzaWQiLCJzaWQiLCJudW0iXSxudWxsXSxbWzEyLDIwXSwiU3ludGhldGljQmFzZSIsIm51bSIsbnVsbF0sWzAsInZlcnNpb24iLCJzaWQiLG51bGxdLFsxLCJOb3RpY2UiLCJzaWQiLG51bGxdLFtbMTIsMF0sIkNvcHlyaWdodCIsInNpZCIsbnVsbF0sWzIsIkZ1bGxOYW1lIiwic2lkIixudWxsXSxbMywiRmFtaWx5TmFtZSIsInNpZCIsbnVsbF0sWzQsIldlaWdodCIsInNpZCIsbnVsbF0sW1sxMiwxXSwiaXNGaXhlZFBpdGNoIiwibnVtIiwwXSxbWzEyLDJdLCJJdGFsaWNBbmdsZSIsIm51bSIsMF0sW1sxMiwzXSwiVW5kZXJsaW5lUG9zaXRpb24iLCJudW0iLC0xMDBdLFtbMTIsNF0sIlVuZGVybGluZVRoaWNrbmVzcyIsIm51bSIsNTBdLFtbMTIsNV0sIlBhaW50VHlwZSIsIm51bSIsMF0sW1sxMiw2XSwiQ2hhcnN0cmluZ1R5cGUiLCJudW0iLDJdLFtbMTIsN10sIkZvbnRNYXRyaXgiLFsibnVtIiwibnVtIiwibnVtIiwibnVtIiwibnVtIiwibnVtIl0sWy4wMDEsMCwwLC4wMDEsMCwwXV0sWzEzLCJVbmlxdWVJRCIsIm51bSIsbnVsbF0sWzUsIkZvbnRCQm94IixbIm51bSIsIm51bSIsIm51bSIsIm51bSJdLFswLDAsMCwwXV0sW1sxMiw4XSwiU3Ryb2tlV2lkdGgiLCJudW0iLDBdLFsxNCwiWFVJRCIsImFycmF5IixudWxsXSxbMTUsImNoYXJzZXQiLCJvZmZzZXQiLDBdLFsxNiwiRW5jb2RpbmciLCJvZmZzZXQiLDBdLFsxNywiQ2hhclN0cmluZ3MiLCJvZmZzZXQiLDBdLFsxOCwiUHJpdmF0ZSIsWyJvZmZzZXQiLCJvZmZzZXQiXSxudWxsXSxbWzEyLDIxXSwiUG9zdFNjcmlwdCIsInNpZCIsbnVsbF0sW1sxMiwyMl0sIkJhc2VGb250TmFtZSIsInNpZCIsbnVsbF0sW1sxMiwyM10sIkJhc2VGb250QmxlbmQiLCJkZWx0YSIsbnVsbF0sW1sxMiwzMV0sIkNJREZvbnRWZXJzaW9uIiwibnVtIiwwXSxbWzEyLDMyXSwiQ0lERm9udFJldmlzaW9uIiwibnVtIiwwXSxbWzEyLDMzXSwiQ0lERm9udFR5cGUiLCJudW0iLDBdLFtbMTIsMzRdLCJDSURDb3VudCIsIm51bSIsODcyMF0sW1sxMiwzNV0sIlVJREJhc2UiLCJudW0iLG51bGxdLFtbMTIsMzddLCJGRFNlbGVjdCIsIm9mZnNldCIsbnVsbF0sW1sxMiwzNl0sIkZEQXJyYXkiLCJvZmZzZXQiLG51bGxdLFtbMTIsMzhdLCJGb250TmFtZSIsInNpZCIsbnVsbF1dLFA9ZnVuY3Rpb24oZSl7cyhyLGUpO3ZhciB0PXUocik7ZnVuY3Rpb24gcihlKXt2YXIgbjtyZXR1cm4gZyh0aGlzLHIpLChuPXQuY2FsbCh0aGlzLHIudGFibGVzLGUpKS5wcml2YXRlRGljdD1udWxsLG59cmV0dXJuIHkocixudWxsLFt7a2V5OiJ0YWJsZXMiLGdldDpmdW5jdGlvbigpe3JldHVybigwLG4uc2hhZG93KSh0aGlzLCJ0YWJsZXMiLHRoaXMuY3JlYXRlVGFibGVzKEYpKX19XSkscn0oQyk7dC5DRkZUb3BEaWN0PVA7dmFyIFQ9W1s2LCJCbHVlVmFsdWVzIiwiZGVsdGEiLG51bGxdLFs3LCJPdGhlckJsdWVzIiwiZGVsdGEiLG51bGxdLFs4LCJGYW1pbHlCbHVlcyIsImRlbHRhIixudWxsXSxbOSwiRmFtaWx5T3RoZXJCbHVlcyIsImRlbHRhIixudWxsXSxbWzEyLDldLCJCbHVlU2NhbGUiLCJudW0iLC4wMzk2MjVdLFtbMTIsMTBdLCJCbHVlU2hpZnQiLCJudW0iLDddLFtbMTIsMTFdLCJCbHVlRnV6eiIsIm51bSIsMV0sWzEwLCJTdGRIVyIsIm51bSIsbnVsbF0sWzExLCJTdGRWVyIsIm51bSIsbnVsbF0sW1sxMiwxMl0sIlN0ZW1TbmFwSCIsImRlbHRhIixudWxsXSxbWzEyLDEzXSwiU3RlbVNuYXBWIiwiZGVsdGEiLG51bGxdLFtbMTIsMTRdLCJGb3JjZUJvbGQiLCJudW0iLDBdLFtbMTIsMTddLCJMYW5ndWFnZUdyb3VwIiwibnVtIiwwXSxbWzEyLDE4XSwiRXhwYW5zaW9uRmFjdG9yIiwibnVtIiwuMDZdLFtbMTIsMTldLCJpbml0aWFsUmFuZG9tU2VlZCIsIm51bSIsMF0sWzIwLCJkZWZhdWx0V2lkdGhYIiwibnVtIiwwXSxbMjEsIm5vbWluYWxXaWR0aFgiLCJudW0iLDBdLFsxOSwiU3VicnMiLCJvZmZzZXQiLG51bGxdXSxJPWZ1bmN0aW9uKGUpe3MocixlKTt2YXIgdD11KHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG47cmV0dXJuIGcodGhpcyxyKSwobj10LmNhbGwodGhpcyxyLnRhYmxlcyxlKSkuc3VicnNJbmRleD1udWxsLG59cmV0dXJuIHkocixudWxsLFt7a2V5OiJ0YWJsZXMiLGdldDpmdW5jdGlvbigpe3JldHVybigwLG4uc2hhZG93KSh0aGlzLCJ0YWJsZXMiLHRoaXMuY3JlYXRlVGFibGVzKFQpKX19XSkscn0oQyk7dC5DRkZQcml2YXRlRGljdD1JO3ZhciBFPXtJU09fQURPQkU6MCxFWFBFUlQ6MSxFWFBFUlRfU1VCU0VUOjJ9LGo9eSgoZnVuY3Rpb24gZSh0LHIsbixhKXtnKHRoaXMsZSksdGhpcy5wcmVkZWZpbmVkPXQsdGhpcy5mb3JtYXQ9cix0aGlzLmNoYXJzZXQ9bix0aGlzLnJhdz1hfSkpO3QuQ0ZGQ2hhcnNldD1qO3ZhciBNPXkoKGZ1bmN0aW9uIGUodCxyLG4sYSl7Zyh0aGlzLGUpLHRoaXMucHJlZGVmaW5lZD10LHRoaXMuZm9ybWF0PXIsdGhpcy5lbmNvZGluZz1uLHRoaXMucmF3PWF9KSksXz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCxyKXtnKHRoaXMsZSksdGhpcy5mb3JtYXQ9dCx0aGlzLmZkU2VsZWN0PXJ9cmV0dXJuIHkoZSxbe2tleToiZ2V0RkRJbmRleCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGU8MHx8ZT49dGhpcy5mZFNlbGVjdC5sZW5ndGg/LTE6dGhpcy5mZFNlbGVjdFtlXX19XSksZX0oKTt0LkNGRkZEU2VsZWN0PV87dmFyIEw9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7Zyh0aGlzLGUpLHRoaXMub2Zmc2V0cz1PYmplY3QuY3JlYXRlKG51bGwpfXJldHVybiB5KGUsW3trZXk6ImlzVHJhY2tpbmciLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBlIGluIHRoaXMub2Zmc2V0c319LHtrZXk6InRyYWNrIix2YWx1ZTpmdW5jdGlvbihlLHQpe2lmKGUgaW4gdGhpcy5vZmZzZXRzKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJBbHJlYWR5IHRyYWNraW5nIGxvY2F0aW9uIG9mICIuY29uY2F0KGUpKTt0aGlzLm9mZnNldHNbZV09dH19LHtrZXk6Im9mZnNldCIsdmFsdWU6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0IGluIHRoaXMub2Zmc2V0cyl0aGlzLm9mZnNldHNbdF0rPWV9fSx7a2V5OiJzZXRFbnRyeUxvY2F0aW9uIix2YWx1ZTpmdW5jdGlvbihlLHQscil7aWYoIShlIGluIHRoaXMub2Zmc2V0cykpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIk5vdCB0cmFja2luZyBsb2NhdGlvbiBvZiAiLmNvbmNhdChlKSk7Zm9yKHZhciBhPXIuZGF0YSxpPXRoaXMub2Zmc2V0c1tlXSxvPTAscz10Lmxlbmd0aDtvPHM7KytvKXt2YXIgYz01Km8raSx1PWMrMSxsPWMrMixmPWMrMyxoPWMrNDtpZigyOSE9PWFbY118fDAhPT1hW3VdfHwwIT09YVtsXXx8MCE9PWFbZl18fDAhPT1hW2hdKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJ3cml0aW5nIHRvIGFuIG9mZnNldCB0aGF0IGlzIG5vdCBlbXB0eSIpO3ZhciBkPXRbb107YVtjXT0yOSxhW3VdPWQ+PjI0JjI1NSxhW2xdPWQ+PjE2JjI1NSxhW2ZdPWQ+PjgmMjU1LGFbaF09MjU1JmR9fX1dKSxlfSgpLFI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQpe2codGhpcyxlKSx0aGlzLmNmZj10fXJldHVybiB5KGUsW3trZXk6ImNvbXBpbGUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5jZmYsdD17ZGF0YTpbXSxsZW5ndGg6MCxhZGQ6ZnVuY3Rpb24oZSl7dGhpcy5kYXRhPXRoaXMuZGF0YS5jb25jYXQoZSksdGhpcy5sZW5ndGg9dGhpcy5kYXRhLmxlbmd0aH19LHI9dGhpcy5jb21waWxlSGVhZGVyKGUuaGVhZGVyKTt0LmFkZChyKTt2YXIgYT10aGlzLmNvbXBpbGVOYW1lSW5kZXgoZS5uYW1lcyk7aWYodC5hZGQoYSksZS5pc0NJREZvbnQmJmUudG9wRGljdC5oYXNOYW1lKCJGb250TWF0cml4Iikpe3ZhciBpPWUudG9wRGljdC5nZXRCeU5hbWUoIkZvbnRNYXRyaXgiKTtlLnRvcERpY3QucmVtb3ZlQnlOYW1lKCJGb250TWF0cml4Iik7dmFyIG8scz1oKGUuZmRBcnJheSk7dHJ5e2ZvcihzLnMoKTshKG89cy5uKCkpLmRvbmU7KXt2YXIgYz1vLnZhbHVlLHU9aS5zbGljZSgwKTtjLmhhc05hbWUoIkZvbnRNYXRyaXgiKSYmKHU9bi5VdGlsLnRyYW5zZm9ybSh1LGMuZ2V0QnlOYW1lKCJGb250TWF0cml4IikpKSxjLnNldEJ5TmFtZSgiRm9udE1hdHJpeCIsdSl9fWNhdGNoKGUpe3MuZShlKX1maW5hbGx5e3MuZigpfX12YXIgbD1lLnRvcERpY3QuZ2V0QnlOYW1lKCJYVUlEIik7bCYmbC5sZW5ndGg+MTYmJmUudG9wRGljdC5yZW1vdmVCeU5hbWUoIlhVSUQiKSxlLnRvcERpY3Quc2V0QnlOYW1lKCJjaGFyc2V0IiwwKTt2YXIgZj10aGlzLmNvbXBpbGVUb3BEaWN0cyhbZS50b3BEaWN0XSx0Lmxlbmd0aCxlLmlzQ0lERm9udCk7dC5hZGQoZi5vdXRwdXQpO3ZhciBkPWYudHJhY2tlcnNbMF0scD10aGlzLmNvbXBpbGVTdHJpbmdJbmRleChlLnN0cmluZ3Muc3RyaW5ncyk7dC5hZGQocCk7dmFyIGc9dGhpcy5jb21waWxlSW5kZXgoZS5nbG9iYWxTdWJySW5kZXgpO2lmKHQuYWRkKGcpLGUuZW5jb2RpbmcmJmUudG9wRGljdC5oYXNOYW1lKCJFbmNvZGluZyIpKWlmKGUuZW5jb2RpbmcucHJlZGVmaW5lZClkLnNldEVudHJ5TG9jYXRpb24oIkVuY29kaW5nIixbZS5lbmNvZGluZy5mb3JtYXRdLHQpO2Vsc2V7dmFyIHY9dGhpcy5jb21waWxlRW5jb2RpbmcoZS5lbmNvZGluZyk7ZC5zZXRFbnRyeUxvY2F0aW9uKCJFbmNvZGluZyIsW3QubGVuZ3RoXSx0KSx0LmFkZCh2KX12YXIgeT10aGlzLmNvbXBpbGVDaGFyc2V0KGUuY2hhcnNldCxlLmNoYXJTdHJpbmdzLmNvdW50LGUuc3RyaW5ncyxlLmlzQ0lERm9udCk7ZC5zZXRFbnRyeUxvY2F0aW9uKCJjaGFyc2V0IixbdC5sZW5ndGhdLHQpLHQuYWRkKHkpO3ZhciBtPXRoaXMuY29tcGlsZUNoYXJTdHJpbmdzKGUuY2hhclN0cmluZ3MpO2lmKGQuc2V0RW50cnlMb2NhdGlvbigiQ2hhclN0cmluZ3MiLFt0Lmxlbmd0aF0sdCksdC5hZGQobSksZS5pc0NJREZvbnQpe2Quc2V0RW50cnlMb2NhdGlvbigiRkRTZWxlY3QiLFt0Lmxlbmd0aF0sdCk7dmFyIGI9dGhpcy5jb21waWxlRkRTZWxlY3QoZS5mZFNlbGVjdCk7dC5hZGQoYiksZj10aGlzLmNvbXBpbGVUb3BEaWN0cyhlLmZkQXJyYXksdC5sZW5ndGgsITApLGQuc2V0RW50cnlMb2NhdGlvbigiRkRBcnJheSIsW3QubGVuZ3RoXSx0KSx0LmFkZChmLm91dHB1dCk7dmFyIHc9Zi50cmFja2Vyczt0aGlzLmNvbXBpbGVQcml2YXRlRGljdHMoZS5mZEFycmF5LHcsdCl9cmV0dXJuIHRoaXMuY29tcGlsZVByaXZhdGVEaWN0cyhbZS50b3BEaWN0XSxbZF0sdCksdC5hZGQoWzBdKSx0LmRhdGF9fSx7a2V5OiJlbmNvZGVOdW1iZXIiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBOdW1iZXIuaXNJbnRlZ2VyKGUpP3RoaXMuZW5jb2RlSW50ZWdlcihlKTp0aGlzLmVuY29kZUZsb2F0KGUpfX0se2tleToiZW5jb2RlRmxvYXQiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciByPXQudG9TdHJpbmcoKSxuPWUuRW5jb2RlRmxvYXRSZWdFeHAuZXhlYyhyKTtpZihuKXt2YXIgYT1wYXJzZUZsb2F0KCIxZSIrKChuWzJdPytuWzJdOjApK25bMV0ubGVuZ3RoKSk7cj0oTWF0aC5yb3VuZCh0KmEpL2EpLnRvU3RyaW5nKCl9dmFyIGksbyxzPSIiO2ZvcihpPTAsbz1yLmxlbmd0aDtpPG87KytpKXt2YXIgYz1yW2ldO3MrPSJlIj09PWM/Ii0iPT09clsrK2ldPyJjIjoiYiI6Ii4iPT09Yz8iYSI6Ii0iPT09Yz8iZSI6Y312YXIgdT1bMzBdO2ZvcihpPTAsbz0ocys9MSZzLmxlbmd0aD8iZiI6ImZmIikubGVuZ3RoO2k8bztpKz0yKXUucHVzaChwYXJzZUludChzLnN1YnN0cmluZyhpLGkrMiksMTYpKTtyZXR1cm4gdX19LHtrZXk6ImVuY29kZUludGVnZXIiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBlPj0tMTA3JiZlPD0xMDc/W2UrMTM5XTplPj0xMDgmJmU8PTExMzE/WzI0NysoKGUtPTEwOCk+PjgpLDI1NSZlXTplPj0tMTEzMSYmZTw9LTEwOD9bMjUxKygoZT0tZS0xMDgpPj44KSwyNTUmZV06ZT49LTMyNzY4JiZlPD0zMjc2Nz9bMjgsZT4+OCYyNTUsMjU1JmVdOlsyOSxlPj4yNCYyNTUsZT4+MTYmMjU1LGU+PjgmMjU1LDI1NSZlXX19LHtrZXk6ImNvbXBpbGVIZWFkZXIiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybltlLm1ham9yLGUubWlub3IsNCxlLm9mZlNpemVdfX0se2tleToiY29tcGlsZU5hbWVJbmRleCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQscj1uZXcgQSxhPWgoZSk7dHJ5e2ZvcihhLnMoKTshKHQ9YS5uKCkpLmRvbmU7KXtmb3IodmFyIGk9dC52YWx1ZSxvPU1hdGgubWluKGkubGVuZ3RoLDEyNykscz1uZXcgQXJyYXkobyksYz0wO2M8bztjKyspe3ZhciB1PWlbY107KHU8IiEifHx1PiJ+Inx8IlsiPT09dXx8Il0iPT09dXx8IigiPT09dXx8IikiPT09dXx8InsiPT09dXx8In0iPT09dXx8IjwiPT09dXx8Ij4iPT09dXx8Ii8iPT09dXx8IiUiPT09dSkmJih1PSJfIiksc1tjXT11fSIiPT09KHM9cy5qb2luKCIiKSkmJihzPSJCYWRfRm9udF9OYW1lIiksci5hZGQoKDAsbi5zdHJpbmdUb0J5dGVzKShzKSl9fWNhdGNoKGUpe2EuZShlKX1maW5hbGx5e2EuZigpfXJldHVybiB0aGlzLmNvbXBpbGVJbmRleChyKX19LHtrZXk6ImNvbXBpbGVUb3BEaWN0cyIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuLGE9W10saT1uZXcgQSxvPWgoZSk7dHJ5e2ZvcihvLnMoKTshKG49by5uKCkpLmRvbmU7KXt2YXIgcz1uLnZhbHVlO3ImJihzLnJlbW92ZUJ5TmFtZSgiQ0lERm9udFZlcnNpb24iKSxzLnJlbW92ZUJ5TmFtZSgiQ0lERm9udFJldmlzaW9uIikscy5yZW1vdmVCeU5hbWUoIkNJREZvbnRUeXBlIikscy5yZW1vdmVCeU5hbWUoIkNJRENvdW50Iikscy5yZW1vdmVCeU5hbWUoIlVJREJhc2UiKSk7dmFyIGM9bmV3IEwsdT10aGlzLmNvbXBpbGVEaWN0KHMsYyk7YS5wdXNoKGMpLGkuYWRkKHUpLGMub2Zmc2V0KHQpfX1jYXRjaChlKXtvLmUoZSl9ZmluYWxseXtvLmYoKX1yZXR1cm57dHJhY2tlcnM6YSxvdXRwdXQ6aT10aGlzLmNvbXBpbGVJbmRleChpLGEpfX19LHtrZXk6ImNvbXBpbGVQcml2YXRlRGljdHMiLHZhbHVlOmZ1bmN0aW9uKGUsdCxyKXtmb3IodmFyIGE9MCxpPWUubGVuZ3RoO2E8aTsrK2Epe3ZhciBvPWVbYV0scz1vLnByaXZhdGVEaWN0O2lmKCFzfHwhby5oYXNOYW1lKCJQcml2YXRlIikpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIlRoZXJlIG11c3QgYmUgYSBwcml2YXRlIGRpY3Rpb25hcnkuIik7dmFyIGM9bmV3IEwsdT10aGlzLmNvbXBpbGVEaWN0KHMsYyksbD1yLmxlbmd0aDtpZihjLm9mZnNldChsKSx1Lmxlbmd0aHx8KGw9MCksdFthXS5zZXRFbnRyeUxvY2F0aW9uKCJQcml2YXRlIixbdS5sZW5ndGgsbF0sciksci5hZGQodSkscy5zdWJyc0luZGV4JiZzLmhhc05hbWUoIlN1YnJzIikpe3ZhciBmPXRoaXMuY29tcGlsZUluZGV4KHMuc3VicnNJbmRleCk7Yy5zZXRFbnRyeUxvY2F0aW9uKCJTdWJycyIsW3UubGVuZ3RoXSxyKSxyLmFkZChmKX19fX0se2tleToiY29tcGlsZURpY3QiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIHIsYT1bXSxpPWgoZS5vcmRlcik7dHJ5e2ZvcihpLnMoKTshKHI9aS5uKCkpLmRvbmU7KXt2YXIgcz1yLnZhbHVlO2lmKHMgaW4gZS52YWx1ZXMpe3ZhciBjPWUudmFsdWVzW3NdLHU9ZS50eXBlc1tzXTtpZihBcnJheS5pc0FycmF5KHUpfHwodT1bdV0pLEFycmF5LmlzQXJyYXkoYyl8fChjPVtjXSksMCE9PWMubGVuZ3RoKXtmb3IodmFyIGw9MCxmPXUubGVuZ3RoO2w8ZjsrK2wpe3ZhciBkPXVbbF0scD1jW2xdO3N3aXRjaChkKXtjYXNlIm51bSI6Y2FzZSJzaWQiOmEucHVzaC5hcHBseShhLG8odGhpcy5lbmNvZGVOdW1iZXIocCkpKTticmVhaztjYXNlIm9mZnNldCI6dmFyIGc9ZS5rZXlUb05hbWVNYXBbc107dC5pc1RyYWNraW5nKGcpfHx0LnRyYWNrKGcsYS5sZW5ndGgpLGEucHVzaCgyOSwwLDAsMCwwKTticmVhaztjYXNlImFycmF5IjpjYXNlImRlbHRhIjphLnB1c2guYXBwbHkoYSxvKHRoaXMuZW5jb2RlTnVtYmVyKHApKSk7Zm9yKHZhciB2PTEseT1jLmxlbmd0aDt2PHk7Kyt2KWEucHVzaC5hcHBseShhLG8odGhpcy5lbmNvZGVOdW1iZXIoY1t2XSkpKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJVbmtub3duIGRhdGEgdHlwZSBvZiAiLmNvbmNhdChkKSl9fWEucHVzaC5hcHBseShhLG8oZS5vcGNvZGVzW3NdKSl9fX19Y2F0Y2goZSl7aS5lKGUpfWZpbmFsbHl7aS5mKCl9cmV0dXJuIGF9fSx7a2V5OiJjb21waWxlU3RyaW5nSW5kZXgiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0LHI9bmV3IEEsYT1oKGUpO3RyeXtmb3IoYS5zKCk7ISh0PWEubigpKS5kb25lOyl7dmFyIGk9dC52YWx1ZTtyLmFkZCgoMCxuLnN0cmluZ1RvQnl0ZXMpKGkpKX19Y2F0Y2goZSl7YS5lKGUpfWZpbmFsbHl7YS5mKCl9cmV0dXJuIHRoaXMuY29tcGlsZUluZGV4KHIpfX0se2tleToiY29tcGlsZUdsb2JhbFN1YnJJbmRleCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmNmZi5nbG9iYWxTdWJySW5kZXg7dGhpcy5vdXQud3JpdGVCeXRlQXJyYXkodGhpcy5jb21waWxlSW5kZXgoZSkpfX0se2tleToiY29tcGlsZUNoYXJTdHJpbmdzIix2YWx1ZTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9bmV3IEEscj0wO3I8ZS5jb3VudDtyKyspe3ZhciBuPWUuZ2V0KHIpOzAhPT1uLmxlbmd0aD90LmFkZChuKTp0LmFkZChuZXcgVWludDhBcnJheShbMTM5LDE0XSkpfXJldHVybiB0aGlzLmNvbXBpbGVJbmRleCh0KX19LHtrZXk6ImNvbXBpbGVDaGFyc2V0Iix2YWx1ZTpmdW5jdGlvbihlLHQscixhKXt2YXIgaSxvPXQtMTtpZihhKWk9bmV3IFVpbnQ4QXJyYXkoWzIsMCwwLG8+PjgmMjU1LDI1NSZvXSk7ZWxzZXsoaT1uZXcgVWludDhBcnJheSgxKzIqbykpWzBdPTA7Zm9yKHZhciBzPTAsYz1lLmNoYXJzZXQubGVuZ3RoLHU9ITEsbD0xO2w8aS5sZW5ndGg7bCs9Mil7dmFyIGY9MDtpZihzPGMpe3ZhciBoPWUuY2hhcnNldFtzKytdOy0xPT09KGY9ci5nZXRTSUQoaCkpJiYoZj0wLHV8fCh1PSEwLCgwLG4ud2FybikoIkNvdWxkbid0IGZpbmQgIi5jb25jYXQoaCwiIGluIENGRiBzdHJpbmdzIikpKSl9aVtsXT1mPj44JjI1NSxpW2wrMV09MjU1JmZ9fXJldHVybiB0aGlzLmNvbXBpbGVUeXBlZEFycmF5KGkpfX0se2tleToiY29tcGlsZUVuY29kaW5nIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5jb21waWxlVHlwZWRBcnJheShlLnJhdyl9fSx7a2V5OiJjb21waWxlRkRTZWxlY3QiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0LHIsbj1lLmZvcm1hdDtzd2l0Y2gobil7Y2FzZSAwOmZvcigodD1uZXcgVWludDhBcnJheSgxK2UuZmRTZWxlY3QubGVuZ3RoKSlbMF09bixyPTA7cjxlLmZkU2VsZWN0Lmxlbmd0aDtyKyspdFtyKzFdPWUuZmRTZWxlY3Rbcl07YnJlYWs7Y2FzZSAzOnZhciBhPWUuZmRTZWxlY3RbMF0saT1bbiwwLDAsMCwwLGFdO2ZvcihyPTE7cjxlLmZkU2VsZWN0Lmxlbmd0aDtyKyspe3ZhciBvPWUuZmRTZWxlY3Rbcl07byE9PWEmJihpLnB1c2gocj4+OCYyNTUsMjU1JnIsbyksYT1vKX12YXIgcz0oaS5sZW5ndGgtMykvMztpWzFdPXM+PjgmMjU1LGlbMl09MjU1JnMsaS5wdXNoKHI+PjgmMjU1LDI1NSZyKSx0PW5ldyBVaW50OEFycmF5KGkpfXJldHVybiB0aGlzLmNvbXBpbGVUeXBlZEFycmF5KHQpfX0se2tleToiY29tcGlsZVR5cGVkQXJyYXkiLHZhbHVlOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1bXSxyPTAsbj1lLmxlbmd0aDtyPG47KytyKXRbcl09ZVtyXTtyZXR1cm4gdH19LHtrZXk6ImNvbXBpbGVJbmRleCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOltdLHI9ZS5vYmplY3RzLG49ci5sZW5ndGg7aWYoMD09PW4pcmV0dXJuWzAsMF07dmFyIGEsaSxzPVtuPj44JjI1NSwyNTUmbl0sYz0xO2ZvcihhPTA7YTxuOysrYSljKz1yW2FdLmxlbmd0aDtpPWM8MjU2PzE6Yzw2NTUzNj8yOmM8MTY3NzcyMTY/Mzo0LHMucHVzaChpKTt2YXIgdT0xO2ZvcihhPTA7YTxuKzE7YSsrKTE9PT1pP3MucHVzaCgyNTUmdSk6Mj09PWk/cy5wdXNoKHU+PjgmMjU1LDI1NSZ1KTozPT09aT9zLnB1c2godT4+MTYmMjU1LHU+PjgmMjU1LDI1NSZ1KTpzLnB1c2godT4+PjI0JjI1NSx1Pj4xNiYyNTUsdT4+OCYyNTUsMjU1JnUpLHJbYV0mJih1Kz1yW2FdLmxlbmd0aCk7Zm9yKGE9MDthPG47YSsrKXRbYV0mJnRbYV0ub2Zmc2V0KHMubGVuZ3RoKSxzLnB1c2guYXBwbHkocyxvKHJbYV0pKTtyZXR1cm4gc319XSxbe2tleToiRW5jb2RlRmxvYXRSZWdFeHAiLGdldDpmdW5jdGlvbigpe3JldHVybigwLG4uc2hhZG93KSh0aGlzLCJFbmNvZGVGbG9hdFJlZ0V4cCIsL1wuKFxkKj8pKD86OXs1LDIwfXwwezUsMjB9KVxkezAsMn0oPzplKC4rKXwkKS8pfX1dKSxlfSgpO3QuQ0ZGQ29tcGlsZXI9Un0sKGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5JU09BZG9iZUNoYXJzZXQ9dC5FeHBlcnRTdWJzZXRDaGFyc2V0PXQuRXhwZXJ0Q2hhcnNldD12b2lkIDAsdC5JU09BZG9iZUNoYXJzZXQ9WyIubm90ZGVmIiwic3BhY2UiLCJleGNsYW0iLCJxdW90ZWRibCIsIm51bWJlcnNpZ24iLCJkb2xsYXIiLCJwZXJjZW50IiwiYW1wZXJzYW5kIiwicXVvdGVyaWdodCIsInBhcmVubGVmdCIsInBhcmVucmlnaHQiLCJhc3RlcmlzayIsInBsdXMiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsInNsYXNoIiwiemVybyIsIm9uZSIsInR3byIsInRocmVlIiwiZm91ciIsImZpdmUiLCJzaXgiLCJzZXZlbiIsImVpZ2h0IiwibmluZSIsImNvbG9uIiwic2VtaWNvbG9uIiwibGVzcyIsImVxdWFsIiwiZ3JlYXRlciIsInF1ZXN0aW9uIiwiYXQiLCJBIiwiQiIsIkMiLCJEIiwiRSIsIkYiLCJHIiwiSCIsIkkiLCJKIiwiSyIsIkwiLCJNIiwiTiIsIk8iLCJQIiwiUSIsIlIiLCJTIiwiVCIsIlUiLCJWIiwiVyIsIlgiLCJZIiwiWiIsImJyYWNrZXRsZWZ0IiwiYmFja3NsYXNoIiwiYnJhY2tldHJpZ2h0IiwiYXNjaWljaXJjdW0iLCJ1bmRlcnNjb3JlIiwicXVvdGVsZWZ0IiwiYSIsImIiLCJjIiwiZCIsImUiLCJmIiwiZyIsImgiLCJpIiwiaiIsImsiLCJsIiwibSIsIm4iLCJvIiwicCIsInEiLCJyIiwicyIsInQiLCJ1IiwidiIsInciLCJ4IiwieSIsInoiLCJicmFjZWxlZnQiLCJiYXIiLCJicmFjZXJpZ2h0IiwiYXNjaWl0aWxkZSIsImV4Y2xhbWRvd24iLCJjZW50Iiwic3RlcmxpbmciLCJmcmFjdGlvbiIsInllbiIsImZsb3JpbiIsInNlY3Rpb24iLCJjdXJyZW5jeSIsInF1b3Rlc2luZ2xlIiwicXVvdGVkYmxsZWZ0IiwiZ3VpbGxlbW90bGVmdCIsImd1aWxzaW5nbGxlZnQiLCJndWlsc2luZ2xyaWdodCIsImZpIiwiZmwiLCJlbmRhc2giLCJkYWdnZXIiLCJkYWdnZXJkYmwiLCJwZXJpb2RjZW50ZXJlZCIsInBhcmFncmFwaCIsImJ1bGxldCIsInF1b3Rlc2luZ2xiYXNlIiwicXVvdGVkYmxiYXNlIiwicXVvdGVkYmxyaWdodCIsImd1aWxsZW1vdHJpZ2h0IiwiZWxsaXBzaXMiLCJwZXJ0aG91c2FuZCIsInF1ZXN0aW9uZG93biIsImdyYXZlIiwiYWN1dGUiLCJjaXJjdW1mbGV4IiwidGlsZGUiLCJtYWNyb24iLCJicmV2ZSIsImRvdGFjY2VudCIsImRpZXJlc2lzIiwicmluZyIsImNlZGlsbGEiLCJodW5nYXJ1bWxhdXQiLCJvZ29uZWsiLCJjYXJvbiIsImVtZGFzaCIsIkFFIiwib3JkZmVtaW5pbmUiLCJMc2xhc2giLCJPc2xhc2giLCJPRSIsIm9yZG1hc2N1bGluZSIsImFlIiwiZG90bGVzc2kiLCJsc2xhc2giLCJvc2xhc2giLCJvZSIsImdlcm1hbmRibHMiLCJvbmVzdXBlcmlvciIsImxvZ2ljYWxub3QiLCJtdSIsInRyYWRlbWFyayIsIkV0aCIsIm9uZWhhbGYiLCJwbHVzbWludXMiLCJUaG9ybiIsIm9uZXF1YXJ0ZXIiLCJkaXZpZGUiLCJicm9rZW5iYXIiLCJkZWdyZWUiLCJ0aG9ybiIsInRocmVlcXVhcnRlcnMiLCJ0d29zdXBlcmlvciIsInJlZ2lzdGVyZWQiLCJtaW51cyIsImV0aCIsIm11bHRpcGx5IiwidGhyZWVzdXBlcmlvciIsImNvcHlyaWdodCIsIkFhY3V0ZSIsIkFjaXJjdW1mbGV4IiwiQWRpZXJlc2lzIiwiQWdyYXZlIiwiQXJpbmciLCJBdGlsZGUiLCJDY2VkaWxsYSIsIkVhY3V0ZSIsIkVjaXJjdW1mbGV4IiwiRWRpZXJlc2lzIiwiRWdyYXZlIiwiSWFjdXRlIiwiSWNpcmN1bWZsZXgiLCJJZGllcmVzaXMiLCJJZ3JhdmUiLCJOdGlsZGUiLCJPYWN1dGUiLCJPY2lyY3VtZmxleCIsIk9kaWVyZXNpcyIsIk9ncmF2ZSIsIk90aWxkZSIsIlNjYXJvbiIsIlVhY3V0ZSIsIlVjaXJjdW1mbGV4IiwiVWRpZXJlc2lzIiwiVWdyYXZlIiwiWWFjdXRlIiwiWWRpZXJlc2lzIiwiWmNhcm9uIiwiYWFjdXRlIiwiYWNpcmN1bWZsZXgiLCJhZGllcmVzaXMiLCJhZ3JhdmUiLCJhcmluZyIsImF0aWxkZSIsImNjZWRpbGxhIiwiZWFjdXRlIiwiZWNpcmN1bWZsZXgiLCJlZGllcmVzaXMiLCJlZ3JhdmUiLCJpYWN1dGUiLCJpY2lyY3VtZmxleCIsImlkaWVyZXNpcyIsImlncmF2ZSIsIm50aWxkZSIsIm9hY3V0ZSIsIm9jaXJjdW1mbGV4Iiwib2RpZXJlc2lzIiwib2dyYXZlIiwib3RpbGRlIiwic2Nhcm9uIiwidWFjdXRlIiwidWNpcmN1bWZsZXgiLCJ1ZGllcmVzaXMiLCJ1Z3JhdmUiLCJ5YWN1dGUiLCJ5ZGllcmVzaXMiLCJ6Y2Fyb24iXSx0LkV4cGVydENoYXJzZXQ9WyIubm90ZGVmIiwic3BhY2UiLCJleGNsYW1zbWFsbCIsIkh1bmdhcnVtbGF1dHNtYWxsIiwiZG9sbGFyb2xkc3R5bGUiLCJkb2xsYXJzdXBlcmlvciIsImFtcGVyc2FuZHNtYWxsIiwiQWN1dGVzbWFsbCIsInBhcmVubGVmdHN1cGVyaW9yIiwicGFyZW5yaWdodHN1cGVyaW9yIiwidHdvZG90ZW5sZWFkZXIiLCJvbmVkb3RlbmxlYWRlciIsImNvbW1hIiwiaHlwaGVuIiwicGVyaW9kIiwiZnJhY3Rpb24iLCJ6ZXJvb2xkc3R5bGUiLCJvbmVvbGRzdHlsZSIsInR3b29sZHN0eWxlIiwidGhyZWVvbGRzdHlsZSIsImZvdXJvbGRzdHlsZSIsImZpdmVvbGRzdHlsZSIsInNpeG9sZHN0eWxlIiwic2V2ZW5vbGRzdHlsZSIsImVpZ2h0b2xkc3R5bGUiLCJuaW5lb2xkc3R5bGUiLCJjb2xvbiIsInNlbWljb2xvbiIsImNvbW1hc3VwZXJpb3IiLCJ0aHJlZXF1YXJ0ZXJzZW1kYXNoIiwicGVyaW9kc3VwZXJpb3IiLCJxdWVzdGlvbnNtYWxsIiwiYXN1cGVyaW9yIiwiYnN1cGVyaW9yIiwiY2VudHN1cGVyaW9yIiwiZHN1cGVyaW9yIiwiZXN1cGVyaW9yIiwiaXN1cGVyaW9yIiwibHN1cGVyaW9yIiwibXN1cGVyaW9yIiwibnN1cGVyaW9yIiwib3N1cGVyaW9yIiwicnN1cGVyaW9yIiwic3N1cGVyaW9yIiwidHN1cGVyaW9yIiwiZmYiLCJmaSIsImZsIiwiZmZpIiwiZmZsIiwicGFyZW5sZWZ0aW5mZXJpb3IiLCJwYXJlbnJpZ2h0aW5mZXJpb3IiLCJDaXJjdW1mbGV4c21hbGwiLCJoeXBoZW5zdXBlcmlvciIsIkdyYXZlc21hbGwiLCJBc21hbGwiLCJCc21hbGwiLCJDc21hbGwiLCJEc21hbGwiLCJFc21hbGwiLCJGc21hbGwiLCJHc21hbGwiLCJIc21hbGwiLCJJc21hbGwiLCJKc21hbGwiLCJLc21hbGwiLCJMc21hbGwiLCJNc21hbGwiLCJOc21hbGwiLCJPc21hbGwiLCJQc21hbGwiLCJRc21hbGwiLCJSc21hbGwiLCJTc21hbGwiLCJUc21hbGwiLCJVc21hbGwiLCJWc21hbGwiLCJXc21hbGwiLCJYc21hbGwiLCJZc21hbGwiLCJac21hbGwiLCJjb2xvbm1vbmV0YXJ5Iiwib25lZml0dGVkIiwicnVwaWFoIiwiVGlsZGVzbWFsbCIsImV4Y2xhbWRvd25zbWFsbCIsImNlbnRvbGRzdHlsZSIsIkxzbGFzaHNtYWxsIiwiU2Nhcm9uc21hbGwiLCJaY2Fyb25zbWFsbCIsIkRpZXJlc2lzc21hbGwiLCJCcmV2ZXNtYWxsIiwiQ2Fyb25zbWFsbCIsIkRvdGFjY2VudHNtYWxsIiwiTWFjcm9uc21hbGwiLCJmaWd1cmVkYXNoIiwiaHlwaGVuaW5mZXJpb3IiLCJPZ29uZWtzbWFsbCIsIlJpbmdzbWFsbCIsIkNlZGlsbGFzbWFsbCIsIm9uZXF1YXJ0ZXIiLCJvbmVoYWxmIiwidGhyZWVxdWFydGVycyIsInF1ZXN0aW9uZG93bnNtYWxsIiwib25lZWlnaHRoIiwidGhyZWVlaWdodGhzIiwiZml2ZWVpZ2h0aHMiLCJzZXZlbmVpZ2h0aHMiLCJvbmV0aGlyZCIsInR3b3RoaXJkcyIsInplcm9zdXBlcmlvciIsIm9uZXN1cGVyaW9yIiwidHdvc3VwZXJpb3IiLCJ0aHJlZXN1cGVyaW9yIiwiZm91cnN1cGVyaW9yIiwiZml2ZXN1cGVyaW9yIiwic2l4c3VwZXJpb3IiLCJzZXZlbnN1cGVyaW9yIiwiZWlnaHRzdXBlcmlvciIsIm5pbmVzdXBlcmlvciIsInplcm9pbmZlcmlvciIsIm9uZWluZmVyaW9yIiwidHdvaW5mZXJpb3IiLCJ0aHJlZWluZmVyaW9yIiwiZm91cmluZmVyaW9yIiwiZml2ZWluZmVyaW9yIiwic2l4aW5mZXJpb3IiLCJzZXZlbmluZmVyaW9yIiwiZWlnaHRpbmZlcmlvciIsIm5pbmVpbmZlcmlvciIsImNlbnRpbmZlcmlvciIsImRvbGxhcmluZmVyaW9yIiwicGVyaW9kaW5mZXJpb3IiLCJjb21tYWluZmVyaW9yIiwiQWdyYXZlc21hbGwiLCJBYWN1dGVzbWFsbCIsIkFjaXJjdW1mbGV4c21hbGwiLCJBdGlsZGVzbWFsbCIsIkFkaWVyZXNpc3NtYWxsIiwiQXJpbmdzbWFsbCIsIkFFc21hbGwiLCJDY2VkaWxsYXNtYWxsIiwiRWdyYXZlc21hbGwiLCJFYWN1dGVzbWFsbCIsIkVjaXJjdW1mbGV4c21hbGwiLCJFZGllcmVzaXNzbWFsbCIsIklncmF2ZXNtYWxsIiwiSWFjdXRlc21hbGwiLCJJY2lyY3VtZmxleHNtYWxsIiwiSWRpZXJlc2lzc21hbGwiLCJFdGhzbWFsbCIsIk50aWxkZXNtYWxsIiwiT2dyYXZlc21hbGwiLCJPYWN1dGVzbWFsbCIsIk9jaXJjdW1mbGV4c21hbGwiLCJPdGlsZGVzbWFsbCIsIk9kaWVyZXNpc3NtYWxsIiwiT0VzbWFsbCIsIk9zbGFzaHNtYWxsIiwiVWdyYXZlc21hbGwiLCJVYWN1dGVzbWFsbCIsIlVjaXJjdW1mbGV4c21hbGwiLCJVZGllcmVzaXNzbWFsbCIsIllhY3V0ZXNtYWxsIiwiVGhvcm5zbWFsbCIsIllkaWVyZXNpc3NtYWxsIl0sdC5FeHBlcnRTdWJzZXRDaGFyc2V0PVsiLm5vdGRlZiIsInNwYWNlIiwiZG9sbGFyb2xkc3R5bGUiLCJkb2xsYXJzdXBlcmlvciIsInBhcmVubGVmdHN1cGVyaW9yIiwicGFyZW5yaWdodHN1cGVyaW9yIiwidHdvZG90ZW5sZWFkZXIiLCJvbmVkb3RlbmxlYWRlciIsImNvbW1hIiwiaHlwaGVuIiwicGVyaW9kIiwiZnJhY3Rpb24iLCJ6ZXJvb2xkc3R5bGUiLCJvbmVvbGRzdHlsZSIsInR3b29sZHN0eWxlIiwidGhyZWVvbGRzdHlsZSIsImZvdXJvbGRzdHlsZSIsImZpdmVvbGRzdHlsZSIsInNpeG9sZHN0eWxlIiwic2V2ZW5vbGRzdHlsZSIsImVpZ2h0b2xkc3R5bGUiLCJuaW5lb2xkc3R5bGUiLCJjb2xvbiIsInNlbWljb2xvbiIsImNvbW1hc3VwZXJpb3IiLCJ0aHJlZXF1YXJ0ZXJzZW1kYXNoIiwicGVyaW9kc3VwZXJpb3IiLCJhc3VwZXJpb3IiLCJic3VwZXJpb3IiLCJjZW50c3VwZXJpb3IiLCJkc3VwZXJpb3IiLCJlc3VwZXJpb3IiLCJpc3VwZXJpb3IiLCJsc3VwZXJpb3IiLCJtc3VwZXJpb3IiLCJuc3VwZXJpb3IiLCJvc3VwZXJpb3IiLCJyc3VwZXJpb3IiLCJzc3VwZXJpb3IiLCJ0c3VwZXJpb3IiLCJmZiIsImZpIiwiZmwiLCJmZmkiLCJmZmwiLCJwYXJlbmxlZnRpbmZlcmlvciIsInBhcmVucmlnaHRpbmZlcmlvciIsImh5cGhlbnN1cGVyaW9yIiwiY29sb25tb25ldGFyeSIsIm9uZWZpdHRlZCIsInJ1cGlhaCIsImNlbnRvbGRzdHlsZSIsImZpZ3VyZWRhc2giLCJoeXBoZW5pbmZlcmlvciIsIm9uZXF1YXJ0ZXIiLCJvbmVoYWxmIiwidGhyZWVxdWFydGVycyIsIm9uZWVpZ2h0aCIsInRocmVlZWlnaHRocyIsImZpdmVlaWdodGhzIiwic2V2ZW5laWdodGhzIiwib25ldGhpcmQiLCJ0d290aGlyZHMiLCJ6ZXJvc3VwZXJpb3IiLCJvbmVzdXBlcmlvciIsInR3b3N1cGVyaW9yIiwidGhyZWVzdXBlcmlvciIsImZvdXJzdXBlcmlvciIsImZpdmVzdXBlcmlvciIsInNpeHN1cGVyaW9yIiwic2V2ZW5zdXBlcmlvciIsImVpZ2h0c3VwZXJpb3IiLCJuaW5lc3VwZXJpb3IiLCJ6ZXJvaW5mZXJpb3IiLCJvbmVpbmZlcmlvciIsInR3b2luZmVyaW9yIiwidGhyZWVpbmZlcmlvciIsImZvdXJpbmZlcmlvciIsImZpdmVpbmZlcmlvciIsInNpeGluZmVyaW9yIiwic2V2ZW5pbmZlcmlvciIsImVpZ2h0aW5mZXJpb3IiLCJuaW5laW5mZXJpb3IiLCJjZW50aW5mZXJpb3IiLCJkb2xsYXJpbmZlcmlvciIsInBlcmlvZGluZmVyaW9yIiwiY29tbWFpbmZlcmlvciJdfSwoZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LlphcGZEaW5nYmF0c0VuY29kaW5nPXQuV2luQW5zaUVuY29kaW5nPXQuU3ltYm9sU2V0RW5jb2Rpbmc9dC5TdGFuZGFyZEVuY29kaW5nPXQuTWFjUm9tYW5FbmNvZGluZz10LkV4cGVydEVuY29kaW5nPXZvaWQgMCx0LmdldEVuY29kaW5nPWZ1bmN0aW9uKGUpe3N3aXRjaChlKXtjYXNlIldpbkFuc2lFbmNvZGluZyI6cmV0dXJuIG87Y2FzZSJTdGFuZGFyZEVuY29kaW5nIjpyZXR1cm4gaTtjYXNlIk1hY1JvbWFuRW5jb2RpbmciOnJldHVybiBhO2Nhc2UiU3ltYm9sU2V0RW5jb2RpbmciOnJldHVybiBzO2Nhc2UiWmFwZkRpbmdiYXRzRW5jb2RpbmciOnJldHVybiBjO2Nhc2UiRXhwZXJ0RW5jb2RpbmciOnJldHVybiByO2Nhc2UiTWFjRXhwZXJ0RW5jb2RpbmciOnJldHVybiBuO2RlZmF1bHQ6cmV0dXJuIG51bGx9fTt2YXIgcj1bIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsInNwYWNlIiwiZXhjbGFtc21hbGwiLCJIdW5nYXJ1bWxhdXRzbWFsbCIsIiIsImRvbGxhcm9sZHN0eWxlIiwiZG9sbGFyc3VwZXJpb3IiLCJhbXBlcnNhbmRzbWFsbCIsIkFjdXRlc21hbGwiLCJwYXJlbmxlZnRzdXBlcmlvciIsInBhcmVucmlnaHRzdXBlcmlvciIsInR3b2RvdGVubGVhZGVyIiwib25lZG90ZW5sZWFkZXIiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsImZyYWN0aW9uIiwiemVyb29sZHN0eWxlIiwib25lb2xkc3R5bGUiLCJ0d29vbGRzdHlsZSIsInRocmVlb2xkc3R5bGUiLCJmb3Vyb2xkc3R5bGUiLCJmaXZlb2xkc3R5bGUiLCJzaXhvbGRzdHlsZSIsInNldmVub2xkc3R5bGUiLCJlaWdodG9sZHN0eWxlIiwibmluZW9sZHN0eWxlIiwiY29sb24iLCJzZW1pY29sb24iLCJjb21tYXN1cGVyaW9yIiwidGhyZWVxdWFydGVyc2VtZGFzaCIsInBlcmlvZHN1cGVyaW9yIiwicXVlc3Rpb25zbWFsbCIsIiIsImFzdXBlcmlvciIsImJzdXBlcmlvciIsImNlbnRzdXBlcmlvciIsImRzdXBlcmlvciIsImVzdXBlcmlvciIsIiIsIiIsIiIsImlzdXBlcmlvciIsIiIsIiIsImxzdXBlcmlvciIsIm1zdXBlcmlvciIsIm5zdXBlcmlvciIsIm9zdXBlcmlvciIsIiIsIiIsInJzdXBlcmlvciIsInNzdXBlcmlvciIsInRzdXBlcmlvciIsIiIsImZmIiwiZmkiLCJmbCIsImZmaSIsImZmbCIsInBhcmVubGVmdGluZmVyaW9yIiwiIiwicGFyZW5yaWdodGluZmVyaW9yIiwiQ2lyY3VtZmxleHNtYWxsIiwiaHlwaGVuc3VwZXJpb3IiLCJHcmF2ZXNtYWxsIiwiQXNtYWxsIiwiQnNtYWxsIiwiQ3NtYWxsIiwiRHNtYWxsIiwiRXNtYWxsIiwiRnNtYWxsIiwiR3NtYWxsIiwiSHNtYWxsIiwiSXNtYWxsIiwiSnNtYWxsIiwiS3NtYWxsIiwiTHNtYWxsIiwiTXNtYWxsIiwiTnNtYWxsIiwiT3NtYWxsIiwiUHNtYWxsIiwiUXNtYWxsIiwiUnNtYWxsIiwiU3NtYWxsIiwiVHNtYWxsIiwiVXNtYWxsIiwiVnNtYWxsIiwiV3NtYWxsIiwiWHNtYWxsIiwiWXNtYWxsIiwiWnNtYWxsIiwiY29sb25tb25ldGFyeSIsIm9uZWZpdHRlZCIsInJ1cGlhaCIsIlRpbGRlc21hbGwiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJleGNsYW1kb3duc21hbGwiLCJjZW50b2xkc3R5bGUiLCJMc2xhc2hzbWFsbCIsIiIsIiIsIlNjYXJvbnNtYWxsIiwiWmNhcm9uc21hbGwiLCJEaWVyZXNpc3NtYWxsIiwiQnJldmVzbWFsbCIsIkNhcm9uc21hbGwiLCIiLCJEb3RhY2NlbnRzbWFsbCIsIiIsIiIsIk1hY3JvbnNtYWxsIiwiIiwiIiwiZmlndXJlZGFzaCIsImh5cGhlbmluZmVyaW9yIiwiIiwiIiwiT2dvbmVrc21hbGwiLCJSaW5nc21hbGwiLCJDZWRpbGxhc21hbGwiLCIiLCIiLCIiLCJvbmVxdWFydGVyIiwib25laGFsZiIsInRocmVlcXVhcnRlcnMiLCJxdWVzdGlvbmRvd25zbWFsbCIsIm9uZWVpZ2h0aCIsInRocmVlZWlnaHRocyIsImZpdmVlaWdodGhzIiwic2V2ZW5laWdodGhzIiwib25ldGhpcmQiLCJ0d290aGlyZHMiLCIiLCIiLCJ6ZXJvc3VwZXJpb3IiLCJvbmVzdXBlcmlvciIsInR3b3N1cGVyaW9yIiwidGhyZWVzdXBlcmlvciIsImZvdXJzdXBlcmlvciIsImZpdmVzdXBlcmlvciIsInNpeHN1cGVyaW9yIiwic2V2ZW5zdXBlcmlvciIsImVpZ2h0c3VwZXJpb3IiLCJuaW5lc3VwZXJpb3IiLCJ6ZXJvaW5mZXJpb3IiLCJvbmVpbmZlcmlvciIsInR3b2luZmVyaW9yIiwidGhyZWVpbmZlcmlvciIsImZvdXJpbmZlcmlvciIsImZpdmVpbmZlcmlvciIsInNpeGluZmVyaW9yIiwic2V2ZW5pbmZlcmlvciIsImVpZ2h0aW5mZXJpb3IiLCJuaW5laW5mZXJpb3IiLCJjZW50aW5mZXJpb3IiLCJkb2xsYXJpbmZlcmlvciIsInBlcmlvZGluZmVyaW9yIiwiY29tbWFpbmZlcmlvciIsIkFncmF2ZXNtYWxsIiwiQWFjdXRlc21hbGwiLCJBY2lyY3VtZmxleHNtYWxsIiwiQXRpbGRlc21hbGwiLCJBZGllcmVzaXNzbWFsbCIsIkFyaW5nc21hbGwiLCJBRXNtYWxsIiwiQ2NlZGlsbGFzbWFsbCIsIkVncmF2ZXNtYWxsIiwiRWFjdXRlc21hbGwiLCJFY2lyY3VtZmxleHNtYWxsIiwiRWRpZXJlc2lzc21hbGwiLCJJZ3JhdmVzbWFsbCIsIklhY3V0ZXNtYWxsIiwiSWNpcmN1bWZsZXhzbWFsbCIsIklkaWVyZXNpc3NtYWxsIiwiRXRoc21hbGwiLCJOdGlsZGVzbWFsbCIsIk9ncmF2ZXNtYWxsIiwiT2FjdXRlc21hbGwiLCJPY2lyY3VtZmxleHNtYWxsIiwiT3RpbGRlc21hbGwiLCJPZGllcmVzaXNzbWFsbCIsIk9Fc21hbGwiLCJPc2xhc2hzbWFsbCIsIlVncmF2ZXNtYWxsIiwiVWFjdXRlc21hbGwiLCJVY2lyY3VtZmxleHNtYWxsIiwiVWRpZXJlc2lzc21hbGwiLCJZYWN1dGVzbWFsbCIsIlRob3Juc21hbGwiLCJZZGllcmVzaXNzbWFsbCJdO3QuRXhwZXJ0RW5jb2Rpbmc9cjt2YXIgbj1bIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsInNwYWNlIiwiZXhjbGFtc21hbGwiLCJIdW5nYXJ1bWxhdXRzbWFsbCIsImNlbnRvbGRzdHlsZSIsImRvbGxhcm9sZHN0eWxlIiwiZG9sbGFyc3VwZXJpb3IiLCJhbXBlcnNhbmRzbWFsbCIsIkFjdXRlc21hbGwiLCJwYXJlbmxlZnRzdXBlcmlvciIsInBhcmVucmlnaHRzdXBlcmlvciIsInR3b2RvdGVubGVhZGVyIiwib25lZG90ZW5sZWFkZXIiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsImZyYWN0aW9uIiwiemVyb29sZHN0eWxlIiwib25lb2xkc3R5bGUiLCJ0d29vbGRzdHlsZSIsInRocmVlb2xkc3R5bGUiLCJmb3Vyb2xkc3R5bGUiLCJmaXZlb2xkc3R5bGUiLCJzaXhvbGRzdHlsZSIsInNldmVub2xkc3R5bGUiLCJlaWdodG9sZHN0eWxlIiwibmluZW9sZHN0eWxlIiwiY29sb24iLCJzZW1pY29sb24iLCIiLCJ0aHJlZXF1YXJ0ZXJzZW1kYXNoIiwiIiwicXVlc3Rpb25zbWFsbCIsIiIsIiIsIiIsIiIsIkV0aHNtYWxsIiwiIiwiIiwib25lcXVhcnRlciIsIm9uZWhhbGYiLCJ0aHJlZXF1YXJ0ZXJzIiwib25lZWlnaHRoIiwidGhyZWVlaWdodGhzIiwiZml2ZWVpZ2h0aHMiLCJzZXZlbmVpZ2h0aHMiLCJvbmV0aGlyZCIsInR3b3RoaXJkcyIsIiIsIiIsIiIsIiIsIiIsIiIsImZmIiwiZmkiLCJmbCIsImZmaSIsImZmbCIsInBhcmVubGVmdGluZmVyaW9yIiwiIiwicGFyZW5yaWdodGluZmVyaW9yIiwiQ2lyY3VtZmxleHNtYWxsIiwiaHlwaGVuaW5mZXJpb3IiLCJHcmF2ZXNtYWxsIiwiQXNtYWxsIiwiQnNtYWxsIiwiQ3NtYWxsIiwiRHNtYWxsIiwiRXNtYWxsIiwiRnNtYWxsIiwiR3NtYWxsIiwiSHNtYWxsIiwiSXNtYWxsIiwiSnNtYWxsIiwiS3NtYWxsIiwiTHNtYWxsIiwiTXNtYWxsIiwiTnNtYWxsIiwiT3NtYWxsIiwiUHNtYWxsIiwiUXNtYWxsIiwiUnNtYWxsIiwiU3NtYWxsIiwiVHNtYWxsIiwiVXNtYWxsIiwiVnNtYWxsIiwiV3NtYWxsIiwiWHNtYWxsIiwiWXNtYWxsIiwiWnNtYWxsIiwiY29sb25tb25ldGFyeSIsIm9uZWZpdHRlZCIsInJ1cGlhaCIsIlRpbGRlc21hbGwiLCIiLCIiLCJhc3VwZXJpb3IiLCJjZW50c3VwZXJpb3IiLCIiLCIiLCIiLCIiLCJBYWN1dGVzbWFsbCIsIkFncmF2ZXNtYWxsIiwiQWNpcmN1bWZsZXhzbWFsbCIsIkFkaWVyZXNpc3NtYWxsIiwiQXRpbGRlc21hbGwiLCJBcmluZ3NtYWxsIiwiQ2NlZGlsbGFzbWFsbCIsIkVhY3V0ZXNtYWxsIiwiRWdyYXZlc21hbGwiLCJFY2lyY3VtZmxleHNtYWxsIiwiRWRpZXJlc2lzc21hbGwiLCJJYWN1dGVzbWFsbCIsIklncmF2ZXNtYWxsIiwiSWNpcmN1bWZsZXhzbWFsbCIsIklkaWVyZXNpc3NtYWxsIiwiTnRpbGRlc21hbGwiLCJPYWN1dGVzbWFsbCIsIk9ncmF2ZXNtYWxsIiwiT2NpcmN1bWZsZXhzbWFsbCIsIk9kaWVyZXNpc3NtYWxsIiwiT3RpbGRlc21hbGwiLCJVYWN1dGVzbWFsbCIsIlVncmF2ZXNtYWxsIiwiVWNpcmN1bWZsZXhzbWFsbCIsIlVkaWVyZXNpc3NtYWxsIiwiIiwiZWlnaHRzdXBlcmlvciIsImZvdXJpbmZlcmlvciIsInRocmVlaW5mZXJpb3IiLCJzaXhpbmZlcmlvciIsImVpZ2h0aW5mZXJpb3IiLCJzZXZlbmluZmVyaW9yIiwiU2Nhcm9uc21hbGwiLCIiLCJjZW50aW5mZXJpb3IiLCJ0d29pbmZlcmlvciIsIiIsIkRpZXJlc2lzc21hbGwiLCIiLCJDYXJvbnNtYWxsIiwib3N1cGVyaW9yIiwiZml2ZWluZmVyaW9yIiwiIiwiY29tbWFpbmZlcmlvciIsInBlcmlvZGluZmVyaW9yIiwiWWFjdXRlc21hbGwiLCIiLCJkb2xsYXJpbmZlcmlvciIsIiIsIiIsIlRob3Juc21hbGwiLCIiLCJuaW5laW5mZXJpb3IiLCJ6ZXJvaW5mZXJpb3IiLCJaY2Fyb25zbWFsbCIsIkFFc21hbGwiLCJPc2xhc2hzbWFsbCIsInF1ZXN0aW9uZG93bnNtYWxsIiwib25laW5mZXJpb3IiLCJMc2xhc2hzbWFsbCIsIiIsIiIsIiIsIiIsIiIsIiIsIkNlZGlsbGFzbWFsbCIsIiIsIiIsIiIsIiIsIiIsIk9Fc21hbGwiLCJmaWd1cmVkYXNoIiwiaHlwaGVuc3VwZXJpb3IiLCIiLCIiLCIiLCIiLCJleGNsYW1kb3duc21hbGwiLCIiLCJZZGllcmVzaXNzbWFsbCIsIiIsIm9uZXN1cGVyaW9yIiwidHdvc3VwZXJpb3IiLCJ0aHJlZXN1cGVyaW9yIiwiZm91cnN1cGVyaW9yIiwiZml2ZXN1cGVyaW9yIiwic2l4c3VwZXJpb3IiLCJzZXZlbnN1cGVyaW9yIiwibmluZXN1cGVyaW9yIiwiemVyb3N1cGVyaW9yIiwiIiwiZXN1cGVyaW9yIiwicnN1cGVyaW9yIiwidHN1cGVyaW9yIiwiIiwiIiwiaXN1cGVyaW9yIiwic3N1cGVyaW9yIiwiZHN1cGVyaW9yIiwiIiwiIiwiIiwiIiwiIiwibHN1cGVyaW9yIiwiT2dvbmVrc21hbGwiLCJCcmV2ZXNtYWxsIiwiTWFjcm9uc21hbGwiLCJic3VwZXJpb3IiLCJuc3VwZXJpb3IiLCJtc3VwZXJpb3IiLCJjb21tYXN1cGVyaW9yIiwicGVyaW9kc3VwZXJpb3IiLCJEb3RhY2NlbnRzbWFsbCIsIlJpbmdzbWFsbCIsIiIsIiIsIiIsIiJdLGE9WyIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJzcGFjZSIsImV4Y2xhbSIsInF1b3RlZGJsIiwibnVtYmVyc2lnbiIsImRvbGxhciIsInBlcmNlbnQiLCJhbXBlcnNhbmQiLCJxdW90ZXNpbmdsZSIsInBhcmVubGVmdCIsInBhcmVucmlnaHQiLCJhc3RlcmlzayIsInBsdXMiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsInNsYXNoIiwiemVybyIsIm9uZSIsInR3byIsInRocmVlIiwiZm91ciIsImZpdmUiLCJzaXgiLCJzZXZlbiIsImVpZ2h0IiwibmluZSIsImNvbG9uIiwic2VtaWNvbG9uIiwibGVzcyIsImVxdWFsIiwiZ3JlYXRlciIsInF1ZXN0aW9uIiwiYXQiLCJBIiwiQiIsIkMiLCJEIiwiRSIsIkYiLCJHIiwiSCIsIkkiLCJKIiwiSyIsIkwiLCJNIiwiTiIsIk8iLCJQIiwiUSIsIlIiLCJTIiwiVCIsIlUiLCJWIiwiVyIsIlgiLCJZIiwiWiIsImJyYWNrZXRsZWZ0IiwiYmFja3NsYXNoIiwiYnJhY2tldHJpZ2h0IiwiYXNjaWljaXJjdW0iLCJ1bmRlcnNjb3JlIiwiZ3JhdmUiLCJhIiwiYiIsImMiLCJkIiwiZSIsImYiLCJnIiwiaCIsImkiLCJqIiwiayIsImwiLCJtIiwibiIsIm8iLCJwIiwicSIsInIiLCJzIiwidCIsInUiLCJ2IiwidyIsIngiLCJ5IiwieiIsImJyYWNlbGVmdCIsImJhciIsImJyYWNlcmlnaHQiLCJhc2NpaXRpbGRlIiwiIiwiQWRpZXJlc2lzIiwiQXJpbmciLCJDY2VkaWxsYSIsIkVhY3V0ZSIsIk50aWxkZSIsIk9kaWVyZXNpcyIsIlVkaWVyZXNpcyIsImFhY3V0ZSIsImFncmF2ZSIsImFjaXJjdW1mbGV4IiwiYWRpZXJlc2lzIiwiYXRpbGRlIiwiYXJpbmciLCJjY2VkaWxsYSIsImVhY3V0ZSIsImVncmF2ZSIsImVjaXJjdW1mbGV4IiwiZWRpZXJlc2lzIiwiaWFjdXRlIiwiaWdyYXZlIiwiaWNpcmN1bWZsZXgiLCJpZGllcmVzaXMiLCJudGlsZGUiLCJvYWN1dGUiLCJvZ3JhdmUiLCJvY2lyY3VtZmxleCIsIm9kaWVyZXNpcyIsIm90aWxkZSIsInVhY3V0ZSIsInVncmF2ZSIsInVjaXJjdW1mbGV4IiwidWRpZXJlc2lzIiwiZGFnZ2VyIiwiZGVncmVlIiwiY2VudCIsInN0ZXJsaW5nIiwic2VjdGlvbiIsImJ1bGxldCIsInBhcmFncmFwaCIsImdlcm1hbmRibHMiLCJyZWdpc3RlcmVkIiwiY29weXJpZ2h0IiwidHJhZGVtYXJrIiwiYWN1dGUiLCJkaWVyZXNpcyIsIm5vdGVxdWFsIiwiQUUiLCJPc2xhc2giLCJpbmZpbml0eSIsInBsdXNtaW51cyIsImxlc3NlcXVhbCIsImdyZWF0ZXJlcXVhbCIsInllbiIsIm11IiwicGFydGlhbGRpZmYiLCJzdW1tYXRpb24iLCJwcm9kdWN0IiwicGkiLCJpbnRlZ3JhbCIsIm9yZGZlbWluaW5lIiwib3JkbWFzY3VsaW5lIiwiT21lZ2EiLCJhZSIsIm9zbGFzaCIsInF1ZXN0aW9uZG93biIsImV4Y2xhbWRvd24iLCJsb2dpY2Fsbm90IiwicmFkaWNhbCIsImZsb3JpbiIsImFwcHJveGVxdWFsIiwiRGVsdGEiLCJndWlsbGVtb3RsZWZ0IiwiZ3VpbGxlbW90cmlnaHQiLCJlbGxpcHNpcyIsInNwYWNlIiwiQWdyYXZlIiwiQXRpbGRlIiwiT3RpbGRlIiwiT0UiLCJvZSIsImVuZGFzaCIsImVtZGFzaCIsInF1b3RlZGJsbGVmdCIsInF1b3RlZGJscmlnaHQiLCJxdW90ZWxlZnQiLCJxdW90ZXJpZ2h0IiwiZGl2aWRlIiwibG96ZW5nZSIsInlkaWVyZXNpcyIsIllkaWVyZXNpcyIsImZyYWN0aW9uIiwiY3VycmVuY3kiLCJndWlsc2luZ2xsZWZ0IiwiZ3VpbHNpbmdscmlnaHQiLCJmaSIsImZsIiwiZGFnZ2VyZGJsIiwicGVyaW9kY2VudGVyZWQiLCJxdW90ZXNpbmdsYmFzZSIsInF1b3RlZGJsYmFzZSIsInBlcnRob3VzYW5kIiwiQWNpcmN1bWZsZXgiLCJFY2lyY3VtZmxleCIsIkFhY3V0ZSIsIkVkaWVyZXNpcyIsIkVncmF2ZSIsIklhY3V0ZSIsIkljaXJjdW1mbGV4IiwiSWRpZXJlc2lzIiwiSWdyYXZlIiwiT2FjdXRlIiwiT2NpcmN1bWZsZXgiLCJhcHBsZSIsIk9ncmF2ZSIsIlVhY3V0ZSIsIlVjaXJjdW1mbGV4IiwiVWdyYXZlIiwiZG90bGVzc2kiLCJjaXJjdW1mbGV4IiwidGlsZGUiLCJtYWNyb24iLCJicmV2ZSIsImRvdGFjY2VudCIsInJpbmciLCJjZWRpbGxhIiwiaHVuZ2FydW1sYXV0Iiwib2dvbmVrIiwiY2Fyb24iXTt0Lk1hY1JvbWFuRW5jb2Rpbmc9YTt2YXIgaT1bIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsInNwYWNlIiwiZXhjbGFtIiwicXVvdGVkYmwiLCJudW1iZXJzaWduIiwiZG9sbGFyIiwicGVyY2VudCIsImFtcGVyc2FuZCIsInF1b3RlcmlnaHQiLCJwYXJlbmxlZnQiLCJwYXJlbnJpZ2h0IiwiYXN0ZXJpc2siLCJwbHVzIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJzbGFzaCIsInplcm8iLCJvbmUiLCJ0d28iLCJ0aHJlZSIsImZvdXIiLCJmaXZlIiwic2l4Iiwic2V2ZW4iLCJlaWdodCIsIm5pbmUiLCJjb2xvbiIsInNlbWljb2xvbiIsImxlc3MiLCJlcXVhbCIsImdyZWF0ZXIiLCJxdWVzdGlvbiIsImF0IiwiQSIsIkIiLCJDIiwiRCIsIkUiLCJGIiwiRyIsIkgiLCJJIiwiSiIsIksiLCJMIiwiTSIsIk4iLCJPIiwiUCIsIlEiLCJSIiwiUyIsIlQiLCJVIiwiViIsIlciLCJYIiwiWSIsIloiLCJicmFja2V0bGVmdCIsImJhY2tzbGFzaCIsImJyYWNrZXRyaWdodCIsImFzY2lpY2lyY3VtIiwidW5kZXJzY29yZSIsInF1b3RlbGVmdCIsImEiLCJiIiwiYyIsImQiLCJlIiwiZiIsImciLCJoIiwiaSIsImoiLCJrIiwibCIsIm0iLCJuIiwibyIsInAiLCJxIiwiciIsInMiLCJ0IiwidSIsInYiLCJ3IiwieCIsInkiLCJ6IiwiYnJhY2VsZWZ0IiwiYmFyIiwiYnJhY2VyaWdodCIsImFzY2lpdGlsZGUiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJleGNsYW1kb3duIiwiY2VudCIsInN0ZXJsaW5nIiwiZnJhY3Rpb24iLCJ5ZW4iLCJmbG9yaW4iLCJzZWN0aW9uIiwiY3VycmVuY3kiLCJxdW90ZXNpbmdsZSIsInF1b3RlZGJsbGVmdCIsImd1aWxsZW1vdGxlZnQiLCJndWlsc2luZ2xsZWZ0IiwiZ3VpbHNpbmdscmlnaHQiLCJmaSIsImZsIiwiIiwiZW5kYXNoIiwiZGFnZ2VyIiwiZGFnZ2VyZGJsIiwicGVyaW9kY2VudGVyZWQiLCIiLCJwYXJhZ3JhcGgiLCJidWxsZXQiLCJxdW90ZXNpbmdsYmFzZSIsInF1b3RlZGJsYmFzZSIsInF1b3RlZGJscmlnaHQiLCJndWlsbGVtb3RyaWdodCIsImVsbGlwc2lzIiwicGVydGhvdXNhbmQiLCIiLCJxdWVzdGlvbmRvd24iLCIiLCJncmF2ZSIsImFjdXRlIiwiY2lyY3VtZmxleCIsInRpbGRlIiwibWFjcm9uIiwiYnJldmUiLCJkb3RhY2NlbnQiLCJkaWVyZXNpcyIsIiIsInJpbmciLCJjZWRpbGxhIiwiIiwiaHVuZ2FydW1sYXV0Iiwib2dvbmVrIiwiY2Fyb24iLCJlbWRhc2giLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJBRSIsIiIsIm9yZGZlbWluaW5lIiwiIiwiIiwiIiwiIiwiTHNsYXNoIiwiT3NsYXNoIiwiT0UiLCJvcmRtYXNjdWxpbmUiLCIiLCIiLCIiLCIiLCIiLCJhZSIsIiIsIiIsIiIsImRvdGxlc3NpIiwiIiwiIiwibHNsYXNoIiwib3NsYXNoIiwib2UiLCJnZXJtYW5kYmxzIiwiIiwiIiwiIiwiIl07dC5TdGFuZGFyZEVuY29kaW5nPWk7dmFyIG89WyIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJzcGFjZSIsImV4Y2xhbSIsInF1b3RlZGJsIiwibnVtYmVyc2lnbiIsImRvbGxhciIsInBlcmNlbnQiLCJhbXBlcnNhbmQiLCJxdW90ZXNpbmdsZSIsInBhcmVubGVmdCIsInBhcmVucmlnaHQiLCJhc3RlcmlzayIsInBsdXMiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsInNsYXNoIiwiemVybyIsIm9uZSIsInR3byIsInRocmVlIiwiZm91ciIsImZpdmUiLCJzaXgiLCJzZXZlbiIsImVpZ2h0IiwibmluZSIsImNvbG9uIiwic2VtaWNvbG9uIiwibGVzcyIsImVxdWFsIiwiZ3JlYXRlciIsInF1ZXN0aW9uIiwiYXQiLCJBIiwiQiIsIkMiLCJEIiwiRSIsIkYiLCJHIiwiSCIsIkkiLCJKIiwiSyIsIkwiLCJNIiwiTiIsIk8iLCJQIiwiUSIsIlIiLCJTIiwiVCIsIlUiLCJWIiwiVyIsIlgiLCJZIiwiWiIsImJyYWNrZXRsZWZ0IiwiYmFja3NsYXNoIiwiYnJhY2tldHJpZ2h0IiwiYXNjaWljaXJjdW0iLCJ1bmRlcnNjb3JlIiwiZ3JhdmUiLCJhIiwiYiIsImMiLCJkIiwiZSIsImYiLCJnIiwiaCIsImkiLCJqIiwiayIsImwiLCJtIiwibiIsIm8iLCJwIiwicSIsInIiLCJzIiwidCIsInUiLCJ2IiwidyIsIngiLCJ5IiwieiIsImJyYWNlbGVmdCIsImJhciIsImJyYWNlcmlnaHQiLCJhc2NpaXRpbGRlIiwiYnVsbGV0IiwiRXVybyIsImJ1bGxldCIsInF1b3Rlc2luZ2xiYXNlIiwiZmxvcmluIiwicXVvdGVkYmxiYXNlIiwiZWxsaXBzaXMiLCJkYWdnZXIiLCJkYWdnZXJkYmwiLCJjaXJjdW1mbGV4IiwicGVydGhvdXNhbmQiLCJTY2Fyb24iLCJndWlsc2luZ2xsZWZ0IiwiT0UiLCJidWxsZXQiLCJaY2Fyb24iLCJidWxsZXQiLCJidWxsZXQiLCJxdW90ZWxlZnQiLCJxdW90ZXJpZ2h0IiwicXVvdGVkYmxsZWZ0IiwicXVvdGVkYmxyaWdodCIsImJ1bGxldCIsImVuZGFzaCIsImVtZGFzaCIsInRpbGRlIiwidHJhZGVtYXJrIiwic2Nhcm9uIiwiZ3VpbHNpbmdscmlnaHQiLCJvZSIsImJ1bGxldCIsInpjYXJvbiIsIllkaWVyZXNpcyIsInNwYWNlIiwiZXhjbGFtZG93biIsImNlbnQiLCJzdGVybGluZyIsImN1cnJlbmN5IiwieWVuIiwiYnJva2VuYmFyIiwic2VjdGlvbiIsImRpZXJlc2lzIiwiY29weXJpZ2h0Iiwib3JkZmVtaW5pbmUiLCJndWlsbGVtb3RsZWZ0IiwibG9naWNhbG5vdCIsImh5cGhlbiIsInJlZ2lzdGVyZWQiLCJtYWNyb24iLCJkZWdyZWUiLCJwbHVzbWludXMiLCJ0d29zdXBlcmlvciIsInRocmVlc3VwZXJpb3IiLCJhY3V0ZSIsIm11IiwicGFyYWdyYXBoIiwicGVyaW9kY2VudGVyZWQiLCJjZWRpbGxhIiwib25lc3VwZXJpb3IiLCJvcmRtYXNjdWxpbmUiLCJndWlsbGVtb3RyaWdodCIsIm9uZXF1YXJ0ZXIiLCJvbmVoYWxmIiwidGhyZWVxdWFydGVycyIsInF1ZXN0aW9uZG93biIsIkFncmF2ZSIsIkFhY3V0ZSIsIkFjaXJjdW1mbGV4IiwiQXRpbGRlIiwiQWRpZXJlc2lzIiwiQXJpbmciLCJBRSIsIkNjZWRpbGxhIiwiRWdyYXZlIiwiRWFjdXRlIiwiRWNpcmN1bWZsZXgiLCJFZGllcmVzaXMiLCJJZ3JhdmUiLCJJYWN1dGUiLCJJY2lyY3VtZmxleCIsIklkaWVyZXNpcyIsIkV0aCIsIk50aWxkZSIsIk9ncmF2ZSIsIk9hY3V0ZSIsIk9jaXJjdW1mbGV4IiwiT3RpbGRlIiwiT2RpZXJlc2lzIiwibXVsdGlwbHkiLCJPc2xhc2giLCJVZ3JhdmUiLCJVYWN1dGUiLCJVY2lyY3VtZmxleCIsIlVkaWVyZXNpcyIsIllhY3V0ZSIsIlRob3JuIiwiZ2VybWFuZGJscyIsImFncmF2ZSIsImFhY3V0ZSIsImFjaXJjdW1mbGV4IiwiYXRpbGRlIiwiYWRpZXJlc2lzIiwiYXJpbmciLCJhZSIsImNjZWRpbGxhIiwiZWdyYXZlIiwiZWFjdXRlIiwiZWNpcmN1bWZsZXgiLCJlZGllcmVzaXMiLCJpZ3JhdmUiLCJpYWN1dGUiLCJpY2lyY3VtZmxleCIsImlkaWVyZXNpcyIsImV0aCIsIm50aWxkZSIsIm9ncmF2ZSIsIm9hY3V0ZSIsIm9jaXJjdW1mbGV4Iiwib3RpbGRlIiwib2RpZXJlc2lzIiwiZGl2aWRlIiwib3NsYXNoIiwidWdyYXZlIiwidWFjdXRlIiwidWNpcmN1bWZsZXgiLCJ1ZGllcmVzaXMiLCJ5YWN1dGUiLCJ0aG9ybiIsInlkaWVyZXNpcyJdO3QuV2luQW5zaUVuY29kaW5nPW87dmFyIHM9WyIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJzcGFjZSIsImV4Y2xhbSIsInVuaXZlcnNhbCIsIm51bWJlcnNpZ24iLCJleGlzdGVudGlhbCIsInBlcmNlbnQiLCJhbXBlcnNhbmQiLCJzdWNodGhhdCIsInBhcmVubGVmdCIsInBhcmVucmlnaHQiLCJhc3Rlcmlza21hdGgiLCJwbHVzIiwiY29tbWEiLCJtaW51cyIsInBlcmlvZCIsInNsYXNoIiwiemVybyIsIm9uZSIsInR3byIsInRocmVlIiwiZm91ciIsImZpdmUiLCJzaXgiLCJzZXZlbiIsImVpZ2h0IiwibmluZSIsImNvbG9uIiwic2VtaWNvbG9uIiwibGVzcyIsImVxdWFsIiwiZ3JlYXRlciIsInF1ZXN0aW9uIiwiY29uZ3J1ZW50IiwiQWxwaGEiLCJCZXRhIiwiQ2hpIiwiRGVsdGEiLCJFcHNpbG9uIiwiUGhpIiwiR2FtbWEiLCJFdGEiLCJJb3RhIiwidGhldGExIiwiS2FwcGEiLCJMYW1iZGEiLCJNdSIsIk51IiwiT21pY3JvbiIsIlBpIiwiVGhldGEiLCJSaG8iLCJTaWdtYSIsIlRhdSIsIlVwc2lsb24iLCJzaWdtYTEiLCJPbWVnYSIsIlhpIiwiUHNpIiwiWmV0YSIsImJyYWNrZXRsZWZ0IiwidGhlcmVmb3JlIiwiYnJhY2tldHJpZ2h0IiwicGVycGVuZGljdWxhciIsInVuZGVyc2NvcmUiLCJyYWRpY2FsZXgiLCJhbHBoYSIsImJldGEiLCJjaGkiLCJkZWx0YSIsImVwc2lsb24iLCJwaGkiLCJnYW1tYSIsImV0YSIsImlvdGEiLCJwaGkxIiwia2FwcGEiLCJsYW1iZGEiLCJtdSIsIm51Iiwib21pY3JvbiIsInBpIiwidGhldGEiLCJyaG8iLCJzaWdtYSIsInRhdSIsInVwc2lsb24iLCJvbWVnYTEiLCJvbWVnYSIsInhpIiwicHNpIiwiemV0YSIsImJyYWNlbGVmdCIsImJhciIsImJyYWNlcmlnaHQiLCJzaW1pbGFyIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiRXVybyIsIlVwc2lsb24xIiwibWludXRlIiwibGVzc2VxdWFsIiwiZnJhY3Rpb24iLCJpbmZpbml0eSIsImZsb3JpbiIsImNsdWIiLCJkaWFtb25kIiwiaGVhcnQiLCJzcGFkZSIsImFycm93Ym90aCIsImFycm93bGVmdCIsImFycm93dXAiLCJhcnJvd3JpZ2h0IiwiYXJyb3dkb3duIiwiZGVncmVlIiwicGx1c21pbnVzIiwic2Vjb25kIiwiZ3JlYXRlcmVxdWFsIiwibXVsdGlwbHkiLCJwcm9wb3J0aW9uYWwiLCJwYXJ0aWFsZGlmZiIsImJ1bGxldCIsImRpdmlkZSIsIm5vdGVxdWFsIiwiZXF1aXZhbGVuY2UiLCJhcHByb3hlcXVhbCIsImVsbGlwc2lzIiwiYXJyb3d2ZXJ0ZXgiLCJhcnJvd2hvcml6ZXgiLCJjYXJyaWFnZXJldHVybiIsImFsZXBoIiwiSWZyYWt0dXIiLCJSZnJha3R1ciIsIndlaWVyc3RyYXNzIiwiY2lyY2xlbXVsdGlwbHkiLCJjaXJjbGVwbHVzIiwiZW1wdHlzZXQiLCJpbnRlcnNlY3Rpb24iLCJ1bmlvbiIsInByb3BlcnN1cGVyc2V0IiwicmVmbGV4c3VwZXJzZXQiLCJub3RzdWJzZXQiLCJwcm9wZXJzdWJzZXQiLCJyZWZsZXhzdWJzZXQiLCJlbGVtZW50Iiwibm90ZWxlbWVudCIsImFuZ2xlIiwiZ3JhZGllbnQiLCJyZWdpc3RlcnNlcmlmIiwiY29weXJpZ2h0c2VyaWYiLCJ0cmFkZW1hcmtzZXJpZiIsInByb2R1Y3QiLCJyYWRpY2FsIiwiZG90bWF0aCIsImxvZ2ljYWxub3QiLCJsb2dpY2FsYW5kIiwibG9naWNhbG9yIiwiYXJyb3dkYmxib3RoIiwiYXJyb3dkYmxsZWZ0IiwiYXJyb3dkYmx1cCIsImFycm93ZGJscmlnaHQiLCJhcnJvd2RibGRvd24iLCJsb3plbmdlIiwiYW5nbGVsZWZ0IiwicmVnaXN0ZXJzYW5zIiwiY29weXJpZ2h0c2FucyIsInRyYWRlbWFya3NhbnMiLCJzdW1tYXRpb24iLCJwYXJlbmxlZnR0cCIsInBhcmVubGVmdGV4IiwicGFyZW5sZWZ0YnQiLCJicmFja2V0bGVmdHRwIiwiYnJhY2tldGxlZnRleCIsImJyYWNrZXRsZWZ0YnQiLCJicmFjZWxlZnR0cCIsImJyYWNlbGVmdG1pZCIsImJyYWNlbGVmdGJ0IiwiYnJhY2VleCIsIiIsImFuZ2xlcmlnaHQiLCJpbnRlZ3JhbCIsImludGVncmFsdHAiLCJpbnRlZ3JhbGV4IiwiaW50ZWdyYWxidCIsInBhcmVucmlnaHR0cCIsInBhcmVucmlnaHRleCIsInBhcmVucmlnaHRidCIsImJyYWNrZXRyaWdodHRwIiwiYnJhY2tldHJpZ2h0ZXgiLCJicmFja2V0cmlnaHRidCIsImJyYWNlcmlnaHR0cCIsImJyYWNlcmlnaHRtaWQiLCJicmFjZXJpZ2h0YnQiLCIiXTt0LlN5bWJvbFNldEVuY29kaW5nPXM7dmFyIGM9WyIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJzcGFjZSIsImExIiwiYTIiLCJhMjAyIiwiYTMiLCJhNCIsImE1IiwiYTExOSIsImExMTgiLCJhMTE3IiwiYTExIiwiYTEyIiwiYTEzIiwiYTE0IiwiYTE1IiwiYTE2IiwiYTEwNSIsImExNyIsImExOCIsImExOSIsImEyMCIsImEyMSIsImEyMiIsImEyMyIsImEyNCIsImEyNSIsImEyNiIsImEyNyIsImEyOCIsImE2IiwiYTciLCJhOCIsImE5IiwiYTEwIiwiYTI5IiwiYTMwIiwiYTMxIiwiYTMyIiwiYTMzIiwiYTM0IiwiYTM1IiwiYTM2IiwiYTM3IiwiYTM4IiwiYTM5IiwiYTQwIiwiYTQxIiwiYTQyIiwiYTQzIiwiYTQ0IiwiYTQ1IiwiYTQ2IiwiYTQ3IiwiYTQ4IiwiYTQ5IiwiYTUwIiwiYTUxIiwiYTUyIiwiYTUzIiwiYTU0IiwiYTU1IiwiYTU2IiwiYTU3IiwiYTU4IiwiYTU5IiwiYTYwIiwiYTYxIiwiYTYyIiwiYTYzIiwiYTY0IiwiYTY1IiwiYTY2IiwiYTY3IiwiYTY4IiwiYTY5IiwiYTcwIiwiYTcxIiwiYTcyIiwiYTczIiwiYTc0IiwiYTIwMyIsImE3NSIsImEyMDQiLCJhNzYiLCJhNzciLCJhNzgiLCJhNzkiLCJhODEiLCJhODIiLCJhODMiLCJhODQiLCJhOTciLCJhOTgiLCJhOTkiLCJhMTAwIiwiIiwiYTg5IiwiYTkwIiwiYTkzIiwiYTk0IiwiYTkxIiwiYTkyIiwiYTIwNSIsImE4NSIsImEyMDYiLCJhODYiLCJhODciLCJhODgiLCJhOTUiLCJhOTYiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJhMTAxIiwiYTEwMiIsImExMDMiLCJhMTA0IiwiYTEwNiIsImExMDciLCJhMTA4IiwiYTExMiIsImExMTEiLCJhMTEwIiwiYTEwOSIsImExMjAiLCJhMTIxIiwiYTEyMiIsImExMjMiLCJhMTI0IiwiYTEyNSIsImExMjYiLCJhMTI3IiwiYTEyOCIsImExMjkiLCJhMTMwIiwiYTEzMSIsImExMzIiLCJhMTMzIiwiYTEzNCIsImExMzUiLCJhMTM2IiwiYTEzNyIsImExMzgiLCJhMTM5IiwiYTE0MCIsImExNDEiLCJhMTQyIiwiYTE0MyIsImExNDQiLCJhMTQ1IiwiYTE0NiIsImExNDciLCJhMTQ4IiwiYTE0OSIsImExNTAiLCJhMTUxIiwiYTE1MiIsImExNTMiLCJhMTU0IiwiYTE1NSIsImExNTYiLCJhMTU3IiwiYTE1OCIsImExNTkiLCJhMTYwIiwiYTE2MSIsImExNjMiLCJhMTY0IiwiYTE5NiIsImExNjUiLCJhMTkyIiwiYTE2NiIsImExNjciLCJhMTY4IiwiYTE2OSIsImExNzAiLCJhMTcxIiwiYTE3MiIsImExNzMiLCJhMTYyIiwiYTE3NCIsImExNzUiLCJhMTc2IiwiYTE3NyIsImExNzgiLCJhMTc5IiwiYTE5MyIsImExODAiLCJhMTk5IiwiYTE4MSIsImEyMDAiLCJhMTgyIiwiIiwiYTIwMSIsImExODMiLCJhMTg0IiwiYTE5NyIsImExODUiLCJhMTk0IiwiYTE5OCIsImExODYiLCJhMTk1IiwiYTE4NyIsImExODgiLCJhMTg5IiwiYTE5MCIsImExOTEiLCIiXTt0LlphcGZEaW5nYmF0c0VuY29kaW5nPWN9LChlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5TRUFDX0FOQUxZU0lTX0VOQUJMRUQ9dC5NYWNTdGFuZGFyZEdseXBoT3JkZXJpbmc9dC5Gb250RmxhZ3M9dm9pZCAwLHQuZ2V0Rm9udFR5cGU9ZnVuY3Rpb24oZSx0KXt2YXIgcj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXSYmYXJndW1lbnRzWzJdO3N3aXRjaChlKXtjYXNlIlR5cGUxIjpyZXR1cm4gcj9uLkZvbnRUeXBlLlRZUEUxU1RBTkRBUkQ6IlR5cGUxQyI9PT10P24uRm9udFR5cGUuVFlQRTFDOm4uRm9udFR5cGUuVFlQRTE7Y2FzZSJDSURGb250VHlwZTAiOnJldHVybiJDSURGb250VHlwZTBDIj09PXQ/bi5Gb250VHlwZS5DSURGT05UVFlQRTBDOm4uRm9udFR5cGUuQ0lERk9OVFRZUEUwO2Nhc2UiT3BlblR5cGUiOnJldHVybiBuLkZvbnRUeXBlLk9QRU5UWVBFO2Nhc2UiVHJ1ZVR5cGUiOnJldHVybiBuLkZvbnRUeXBlLlRSVUVUWVBFO2Nhc2UiQ0lERm9udFR5cGUyIjpyZXR1cm4gbi5Gb250VHlwZS5DSURGT05UVFlQRTI7Y2FzZSJNTVR5cGUxIjpyZXR1cm4gbi5Gb250VHlwZS5NTVRZUEUxO2Nhc2UiVHlwZTAiOnJldHVybiBuLkZvbnRUeXBlLlRZUEUwO2RlZmF1bHQ6cmV0dXJuIG4uRm9udFR5cGUuVU5LTk9XTn19LHQubm9ybWFsaXplRm9udE5hbWU9ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZSgvWyxfXS9nLCItIikucmVwbGFjZSgvXHMvZywiIil9LHQucmVjb3ZlckdseXBoTmFtZT1jLHQudHlwZTFGb250R2x5cGhNYXBwaW5nPWZ1bmN0aW9uKGUsdCxyKXt2YXIgbixvLHUsbD1PYmplY3QuY3JlYXRlKG51bGwpLGY9ISEoZS5mbGFncyZzLlN5bWJvbGljKTtpZihlLmlzSW50ZXJuYWxGb250KWZvcih1PXQsbz0wO288dS5sZW5ndGg7bysrKW49ci5pbmRleE9mKHVbb10pLGxbb109bj49MD9uOjA7ZWxzZSBpZihlLmJhc2VFbmNvZGluZ05hbWUpZm9yKHU9KDAsYS5nZXRFbmNvZGluZykoZS5iYXNlRW5jb2RpbmdOYW1lKSxvPTA7bzx1Lmxlbmd0aDtvKyspbj1yLmluZGV4T2YodVtvXSksbFtvXT1uPj0wP246MDtlbHNlIGlmKGYpZm9yKG8gaW4gdClsW29dPXRbb107ZWxzZSBmb3IodT1hLlN0YW5kYXJkRW5jb2Rpbmcsbz0wO288dS5sZW5ndGg7bysrKW49ci5pbmRleE9mKHVbb10pLGxbb109bj49MD9uOjA7dmFyIGgsZD1lLmRpZmZlcmVuY2VzO2lmKGQpZm9yKG8gaW4gZCl7dmFyIHA9ZFtvXTtpZigtMT09PShuPXIuaW5kZXhPZihwKSkpe2h8fChoPSgwLGkuZ2V0R2x5cGhzVW5pY29kZSkoKSk7dmFyIGc9YyhwLGgpO2chPT1wJiYobj1yLmluZGV4T2YoZykpfWxbb109bj49MD9uOjB9cmV0dXJuIGx9O3ZhciBuPXIoMiksYT1yKDE2NiksaT1yKDE2OCksbz1yKDE2OSk7dC5TRUFDX0FOQUxZU0lTX0VOQUJMRUQ9ITA7dmFyIHM9e0ZpeGVkUGl0Y2g6MSxTZXJpZjoyLFN5bWJvbGljOjQsU2NyaXB0OjgsTm9uc3ltYm9saWM6MzIsSXRhbGljOjY0LEFsbENhcDo2NTUzNixTbWFsbENhcDoxMzEwNzIsRm9yY2VCb2xkOjI2MjE0NH07ZnVuY3Rpb24gYyhlLHQpe2lmKHZvaWQgMCE9PXRbZV0pcmV0dXJuIGU7dmFyIHI9KDAsby5nZXRVbmljb2RlRm9yR2x5cGgpKGUsdCk7aWYoLTEhPT1yKWZvcih2YXIgYSBpbiB0KWlmKHRbYV09PT1yKXJldHVybiBhO3JldHVybigwLG4uaW5mbykoIlVuYWJsZSB0byByZWNvdmVyIGEgc3RhbmRhcmQgZ2x5cGggbmFtZSBmb3I6ICIrZSksZX10LkZvbnRGbGFncz1zLHQuTWFjU3RhbmRhcmRHbHlwaE9yZGVyaW5nPVsiLm5vdGRlZiIsIi5udWxsIiwibm9ubWFya2luZ3JldHVybiIsInNwYWNlIiwiZXhjbGFtIiwicXVvdGVkYmwiLCJudW1iZXJzaWduIiwiZG9sbGFyIiwicGVyY2VudCIsImFtcGVyc2FuZCIsInF1b3Rlc2luZ2xlIiwicGFyZW5sZWZ0IiwicGFyZW5yaWdodCIsImFzdGVyaXNrIiwicGx1cyIsImNvbW1hIiwiaHlwaGVuIiwicGVyaW9kIiwic2xhc2giLCJ6ZXJvIiwib25lIiwidHdvIiwidGhyZWUiLCJmb3VyIiwiZml2ZSIsInNpeCIsInNldmVuIiwiZWlnaHQiLCJuaW5lIiwiY29sb24iLCJzZW1pY29sb24iLCJsZXNzIiwiZXF1YWwiLCJncmVhdGVyIiwicXVlc3Rpb24iLCJhdCIsIkEiLCJCIiwiQyIsIkQiLCJFIiwiRiIsIkciLCJIIiwiSSIsIkoiLCJLIiwiTCIsIk0iLCJOIiwiTyIsIlAiLCJRIiwiUiIsIlMiLCJUIiwiVSIsIlYiLCJXIiwiWCIsIlkiLCJaIiwiYnJhY2tldGxlZnQiLCJiYWNrc2xhc2giLCJicmFja2V0cmlnaHQiLCJhc2NpaWNpcmN1bSIsInVuZGVyc2NvcmUiLCJncmF2ZSIsImEiLCJiIiwiYyIsImQiLCJlIiwiZiIsImciLCJoIiwiaSIsImoiLCJrIiwibCIsIm0iLCJuIiwibyIsInAiLCJxIiwiciIsInMiLCJ0IiwidSIsInYiLCJ3IiwieCIsInkiLCJ6IiwiYnJhY2VsZWZ0IiwiYmFyIiwiYnJhY2VyaWdodCIsImFzY2lpdGlsZGUiLCJBZGllcmVzaXMiLCJBcmluZyIsIkNjZWRpbGxhIiwiRWFjdXRlIiwiTnRpbGRlIiwiT2RpZXJlc2lzIiwiVWRpZXJlc2lzIiwiYWFjdXRlIiwiYWdyYXZlIiwiYWNpcmN1bWZsZXgiLCJhZGllcmVzaXMiLCJhdGlsZGUiLCJhcmluZyIsImNjZWRpbGxhIiwiZWFjdXRlIiwiZWdyYXZlIiwiZWNpcmN1bWZsZXgiLCJlZGllcmVzaXMiLCJpYWN1dGUiLCJpZ3JhdmUiLCJpY2lyY3VtZmxleCIsImlkaWVyZXNpcyIsIm50aWxkZSIsIm9hY3V0ZSIsIm9ncmF2ZSIsIm9jaXJjdW1mbGV4Iiwib2RpZXJlc2lzIiwib3RpbGRlIiwidWFjdXRlIiwidWdyYXZlIiwidWNpcmN1bWZsZXgiLCJ1ZGllcmVzaXMiLCJkYWdnZXIiLCJkZWdyZWUiLCJjZW50Iiwic3RlcmxpbmciLCJzZWN0aW9uIiwiYnVsbGV0IiwicGFyYWdyYXBoIiwiZ2VybWFuZGJscyIsInJlZ2lzdGVyZWQiLCJjb3B5cmlnaHQiLCJ0cmFkZW1hcmsiLCJhY3V0ZSIsImRpZXJlc2lzIiwibm90ZXF1YWwiLCJBRSIsIk9zbGFzaCIsImluZmluaXR5IiwicGx1c21pbnVzIiwibGVzc2VxdWFsIiwiZ3JlYXRlcmVxdWFsIiwieWVuIiwibXUiLCJwYXJ0aWFsZGlmZiIsInN1bW1hdGlvbiIsInByb2R1Y3QiLCJwaSIsImludGVncmFsIiwib3JkZmVtaW5pbmUiLCJvcmRtYXNjdWxpbmUiLCJPbWVnYSIsImFlIiwib3NsYXNoIiwicXVlc3Rpb25kb3duIiwiZXhjbGFtZG93biIsImxvZ2ljYWxub3QiLCJyYWRpY2FsIiwiZmxvcmluIiwiYXBwcm94ZXF1YWwiLCJEZWx0YSIsImd1aWxsZW1vdGxlZnQiLCJndWlsbGVtb3RyaWdodCIsImVsbGlwc2lzIiwibm9uYnJlYWtpbmdzcGFjZSIsIkFncmF2ZSIsIkF0aWxkZSIsIk90aWxkZSIsIk9FIiwib2UiLCJlbmRhc2giLCJlbWRhc2giLCJxdW90ZWRibGxlZnQiLCJxdW90ZWRibHJpZ2h0IiwicXVvdGVsZWZ0IiwicXVvdGVyaWdodCIsImRpdmlkZSIsImxvemVuZ2UiLCJ5ZGllcmVzaXMiLCJZZGllcmVzaXMiLCJmcmFjdGlvbiIsImN1cnJlbmN5IiwiZ3VpbHNpbmdsbGVmdCIsImd1aWxzaW5nbHJpZ2h0IiwiZmkiLCJmbCIsImRhZ2dlcmRibCIsInBlcmlvZGNlbnRlcmVkIiwicXVvdGVzaW5nbGJhc2UiLCJxdW90ZWRibGJhc2UiLCJwZXJ0aG91c2FuZCIsIkFjaXJjdW1mbGV4IiwiRWNpcmN1bWZsZXgiLCJBYWN1dGUiLCJFZGllcmVzaXMiLCJFZ3JhdmUiLCJJYWN1dGUiLCJJY2lyY3VtZmxleCIsIklkaWVyZXNpcyIsIklncmF2ZSIsIk9hY3V0ZSIsIk9jaXJjdW1mbGV4IiwiYXBwbGUiLCJPZ3JhdmUiLCJVYWN1dGUiLCJVY2lyY3VtZmxleCIsIlVncmF2ZSIsImRvdGxlc3NpIiwiY2lyY3VtZmxleCIsInRpbGRlIiwibWFjcm9uIiwiYnJldmUiLCJkb3RhY2NlbnQiLCJyaW5nIiwiY2VkaWxsYSIsImh1bmdhcnVtbGF1dCIsIm9nb25layIsImNhcm9uIiwiTHNsYXNoIiwibHNsYXNoIiwiU2Nhcm9uIiwic2Nhcm9uIiwiWmNhcm9uIiwiemNhcm9uIiwiYnJva2VuYmFyIiwiRXRoIiwiZXRoIiwiWWFjdXRlIiwieWFjdXRlIiwiVGhvcm4iLCJ0aG9ybiIsIm1pbnVzIiwibXVsdGlwbHkiLCJvbmVzdXBlcmlvciIsInR3b3N1cGVyaW9yIiwidGhyZWVzdXBlcmlvciIsIm9uZWhhbGYiLCJvbmVxdWFydGVyIiwidGhyZWVxdWFydGVycyIsImZyYW5jIiwiR2JyZXZlIiwiZ2JyZXZlIiwiSWRvdGFjY2VudCIsIlNjZWRpbGxhIiwic2NlZGlsbGEiLCJDYWN1dGUiLCJjYWN1dGUiLCJDY2Fyb24iLCJjY2Fyb24iLCJkY3JvYXQiXX0sKGUsdCxyKT0+e3Iucih0KSxyLmQodCx7Z2V0RGluZ2JhdHNHbHlwaHNVbmljb2RlOigpPT5pLGdldEdseXBoc1VuaWNvZGU6KCk9PmF9KTt2YXIgbj1yKDEzNSk7Y29uc3QgYT0oMCxuLmdldEFycmF5TG9va3VwVGFibGVGYWN0b3J5KSgoZnVuY3Rpb24oKXtyZXR1cm5bIkEiLDY1LCJBRSIsMTk4LCJBRWFjdXRlIiw1MDgsIkFFbWFjcm9uIiw0ODIsIkFFc21hbGwiLDYzNDYyLCJBYWN1dGUiLDE5MywiQWFjdXRlc21hbGwiLDYzNDU3LCJBYnJldmUiLDI1OCwiQWJyZXZlYWN1dGUiLDc4NTQsIkFicmV2ZWN5cmlsbGljIiwxMjMyLCJBYnJldmVkb3RiZWxvdyIsNzg2MiwiQWJyZXZlZ3JhdmUiLDc4NTYsIkFicmV2ZWhvb2thYm92ZSIsNzg1OCwiQWJyZXZldGlsZGUiLDc4NjAsIkFjYXJvbiIsNDYxLCJBY2lyY2xlIiw5Mzk4LCJBY2lyY3VtZmxleCIsMTk0LCJBY2lyY3VtZmxleGFjdXRlIiw3ODQ0LCJBY2lyY3VtZmxleGRvdGJlbG93Iiw3ODUyLCJBY2lyY3VtZmxleGdyYXZlIiw3ODQ2LCJBY2lyY3VtZmxleGhvb2thYm92ZSIsNzg0OCwiQWNpcmN1bWZsZXhzbWFsbCIsNjM0NTgsIkFjaXJjdW1mbGV4dGlsZGUiLDc4NTAsIkFjdXRlIiw2MzE3NywiQWN1dGVzbWFsbCIsNjM0MTIsIkFjeXJpbGxpYyIsMTA0MCwiQWRibGdyYXZlIiw1MTIsIkFkaWVyZXNpcyIsMTk2LCJBZGllcmVzaXNjeXJpbGxpYyIsMTIzNCwiQWRpZXJlc2lzbWFjcm9uIiw0NzgsIkFkaWVyZXNpc3NtYWxsIiw2MzQ2MCwiQWRvdGJlbG93Iiw3ODQwLCJBZG90bWFjcm9uIiw0ODAsIkFncmF2ZSIsMTkyLCJBZ3JhdmVzbWFsbCIsNjM0NTYsIkFob29rYWJvdmUiLDc4NDIsIkFpZWN5cmlsbGljIiwxMjM2LCJBaW52ZXJ0ZWRicmV2ZSIsNTE0LCJBbHBoYSIsOTEzLCJBbHBoYXRvbm9zIiw5MDIsIkFtYWNyb24iLDI1NiwiQW1vbm9zcGFjZSIsNjUzMTMsIkFvZ29uZWsiLDI2MCwiQXJpbmciLDE5NywiQXJpbmdhY3V0ZSIsNTA2LCJBcmluZ2JlbG93Iiw3NjgwLCJBcmluZ3NtYWxsIiw2MzQ2MSwiQXNtYWxsIiw2MzMyOSwiQXRpbGRlIiwxOTUsIkF0aWxkZXNtYWxsIiw2MzQ1OSwiQXliYXJtZW5pYW4iLDEzMjksIkIiLDY2LCJCY2lyY2xlIiw5Mzk5LCJCZG90YWNjZW50Iiw3NjgyLCJCZG90YmVsb3ciLDc2ODQsIkJlY3lyaWxsaWMiLDEwNDEsIkJlbmFybWVuaWFuIiwxMzMwLCJCZXRhIiw5MTQsIkJob29rIiwzODUsIkJsaW5lYmVsb3ciLDc2ODYsIkJtb25vc3BhY2UiLDY1MzE0LCJCcmV2ZXNtYWxsIiw2MzIyMCwiQnNtYWxsIiw2MzMzMCwiQnRvcGJhciIsMzg2LCJDIiw2NywiQ2Fhcm1lbmlhbiIsMTM0MiwiQ2FjdXRlIiwyNjIsIkNhcm9uIiw2MzE3OCwiQ2Fyb25zbWFsbCIsNjMyMjEsIkNjYXJvbiIsMjY4LCJDY2VkaWxsYSIsMTk5LCJDY2VkaWxsYWFjdXRlIiw3Njg4LCJDY2VkaWxsYXNtYWxsIiw2MzQ2MywiQ2NpcmNsZSIsOTQwMCwiQ2NpcmN1bWZsZXgiLDI2NCwiQ2RvdCIsMjY2LCJDZG90YWNjZW50IiwyNjYsIkNlZGlsbGFzbWFsbCIsNjM0MTYsIkNoYWFybWVuaWFuIiwxMzUzLCJDaGVhYmtoYXNpYW5jeXJpbGxpYyIsMTIxMiwiQ2hlY3lyaWxsaWMiLDEwNjMsIkNoZWRlc2NlbmRlcmFia2hhc2lhbmN5cmlsbGljIiwxMjE0LCJDaGVkZXNjZW5kZXJjeXJpbGxpYyIsMTIwNiwiQ2hlZGllcmVzaXNjeXJpbGxpYyIsMTI2OCwiQ2hlaGFybWVuaWFuIiwxMzQ3LCJDaGVraGFrYXNzaWFuY3lyaWxsaWMiLDEyMjcsIkNoZXZlcnRpY2Fsc3Ryb2tlY3lyaWxsaWMiLDEyMDgsIkNoaSIsOTM1LCJDaG9vayIsMzkxLCJDaXJjdW1mbGV4c21hbGwiLDYzMjIyLCJDbW9ub3NwYWNlIiw2NTMxNSwiQ29hcm1lbmlhbiIsMTM2MSwiQ3NtYWxsIiw2MzMzMSwiRCIsNjgsIkRaIiw0OTcsIkRaY2Fyb24iLDQ1MiwiRGFhcm1lbmlhbiIsMTMzMiwiRGFmcmljYW4iLDM5MywiRGNhcm9uIiwyNzAsIkRjZWRpbGxhIiw3Njk2LCJEY2lyY2xlIiw5NDAxLCJEY2lyY3VtZmxleGJlbG93Iiw3Njk4LCJEY3JvYXQiLDI3MiwiRGRvdGFjY2VudCIsNzY5MCwiRGRvdGJlbG93Iiw3NjkyLCJEZWN5cmlsbGljIiwxMDQ0LCJEZWljb3B0aWMiLDEwMDYsIkRlbHRhIiw4NzEwLCJEZWx0YWdyZWVrIiw5MTYsIkRob29rIiwzOTQsIkRpZXJlc2lzIiw2MzE3OSwiRGllcmVzaXNBY3V0ZSIsNjMxODAsIkRpZXJlc2lzR3JhdmUiLDYzMTgxLCJEaWVyZXNpc3NtYWxsIiw2MzQwMCwiRGlnYW1tYWdyZWVrIiw5ODgsIkRqZWN5cmlsbGljIiwxMDI2LCJEbGluZWJlbG93Iiw3Njk0LCJEbW9ub3NwYWNlIiw2NTMxNiwiRG90YWNjZW50c21hbGwiLDYzMjIzLCJEc2xhc2giLDI3MiwiRHNtYWxsIiw2MzMzMiwiRHRvcGJhciIsMzk1LCJEeiIsNDk4LCJEemNhcm9uIiw0NTMsIkR6ZWFia2hhc2lhbmN5cmlsbGljIiwxMjQ4LCJEemVjeXJpbGxpYyIsMTAyOSwiRHpoZWN5cmlsbGljIiwxMDM5LCJFIiw2OSwiRWFjdXRlIiwyMDEsIkVhY3V0ZXNtYWxsIiw2MzQ2NSwiRWJyZXZlIiwyNzYsIkVjYXJvbiIsMjgyLCJFY2VkaWxsYWJyZXZlIiw3NzA4LCJFY2hhcm1lbmlhbiIsMTMzMywiRWNpcmNsZSIsOTQwMiwiRWNpcmN1bWZsZXgiLDIwMiwiRWNpcmN1bWZsZXhhY3V0ZSIsNzg3MCwiRWNpcmN1bWZsZXhiZWxvdyIsNzcwNCwiRWNpcmN1bWZsZXhkb3RiZWxvdyIsNzg3OCwiRWNpcmN1bWZsZXhncmF2ZSIsNzg3MiwiRWNpcmN1bWZsZXhob29rYWJvdmUiLDc4NzQsIkVjaXJjdW1mbGV4c21hbGwiLDYzNDY2LCJFY2lyY3VtZmxleHRpbGRlIiw3ODc2LCJFY3lyaWxsaWMiLDEwMjgsIkVkYmxncmF2ZSIsNTE2LCJFZGllcmVzaXMiLDIwMywiRWRpZXJlc2lzc21hbGwiLDYzNDY3LCJFZG90IiwyNzgsIkVkb3RhY2NlbnQiLDI3OCwiRWRvdGJlbG93Iiw3ODY0LCJFZmN5cmlsbGljIiwxMDYwLCJFZ3JhdmUiLDIwMCwiRWdyYXZlc21hbGwiLDYzNDY0LCJFaGFybWVuaWFuIiwxMzM1LCJFaG9va2Fib3ZlIiw3ODY2LCJFaWdodHJvbWFuIiw4NTUxLCJFaW52ZXJ0ZWRicmV2ZSIsNTE4LCJFaW90aWZpZWRjeXJpbGxpYyIsMTEyNCwiRWxjeXJpbGxpYyIsMTA1MSwiRWxldmVucm9tYW4iLDg1NTQsIkVtYWNyb24iLDI3NCwiRW1hY3JvbmFjdXRlIiw3NzAyLCJFbWFjcm9uZ3JhdmUiLDc3MDAsIkVtY3lyaWxsaWMiLDEwNTIsIkVtb25vc3BhY2UiLDY1MzE3LCJFbmN5cmlsbGljIiwxMDUzLCJFbmRlc2NlbmRlcmN5cmlsbGljIiwxMTg2LCJFbmciLDMzMCwiRW5naGVjeXJpbGxpYyIsMTE4OCwiRW5ob29rY3lyaWxsaWMiLDEyMjMsIkVvZ29uZWsiLDI4MCwiRW9wZW4iLDQwMCwiRXBzaWxvbiIsOTE3LCJFcHNpbG9udG9ub3MiLDkwNCwiRXJjeXJpbGxpYyIsMTA1NiwiRXJldmVyc2VkIiwzOTgsIkVyZXZlcnNlZGN5cmlsbGljIiwxMDY5LCJFc2N5cmlsbGljIiwxMDU3LCJFc2Rlc2NlbmRlcmN5cmlsbGljIiwxMTk0LCJFc2giLDQyNSwiRXNtYWxsIiw2MzMzMywiRXRhIiw5MTksIkV0YXJtZW5pYW4iLDEzMzYsIkV0YXRvbm9zIiw5MDUsIkV0aCIsMjA4LCJFdGhzbWFsbCIsNjM0NzIsIkV0aWxkZSIsNzg2OCwiRXRpbGRlYmVsb3ciLDc3MDYsIkV1cm8iLDgzNjQsIkV6aCIsNDM5LCJFemhjYXJvbiIsNDk0LCJFemhyZXZlcnNlZCIsNDQwLCJGIiw3MCwiRmNpcmNsZSIsOTQwMywiRmRvdGFjY2VudCIsNzcxMCwiRmVoYXJtZW5pYW4iLDEzNjYsIkZlaWNvcHRpYyIsOTk2LCJGaG9vayIsNDAxLCJGaXRhY3lyaWxsaWMiLDExMzgsIkZpdmVyb21hbiIsODU0OCwiRm1vbm9zcGFjZSIsNjUzMTgsIkZvdXJyb21hbiIsODU0NywiRnNtYWxsIiw2MzMzNCwiRyIsNzEsIkdCc3F1YXJlIiwxMzE5MSwiR2FjdXRlIiw1MDAsIkdhbW1hIiw5MTUsIkdhbW1hYWZyaWNhbiIsNDA0LCJHYW5naWFjb3B0aWMiLDEwMDIsIkdicmV2ZSIsMjg2LCJHY2Fyb24iLDQ4NiwiR2NlZGlsbGEiLDI5MCwiR2NpcmNsZSIsOTQwNCwiR2NpcmN1bWZsZXgiLDI4NCwiR2NvbW1hYWNjZW50IiwyOTAsIkdkb3QiLDI4OCwiR2RvdGFjY2VudCIsMjg4LCJHZWN5cmlsbGljIiwxMDQzLCJHaGFkYXJtZW5pYW4iLDEzNDYsIkdoZW1pZGRsZWhvb2tjeXJpbGxpYyIsMTE3MiwiR2hlc3Ryb2tlY3lyaWxsaWMiLDExNzAsIkdoZXVwdHVybmN5cmlsbGljIiwxMTY4LCJHaG9vayIsNDAzLCJHaW1hcm1lbmlhbiIsMTMzMSwiR2plY3lyaWxsaWMiLDEwMjcsIkdtYWNyb24iLDc3MTIsIkdtb25vc3BhY2UiLDY1MzE5LCJHcmF2ZSIsNjMxODIsIkdyYXZlc21hbGwiLDYzMzI4LCJHc21hbGwiLDYzMzM1LCJHc21hbGxob29rIiw2NjcsIkdzdHJva2UiLDQ4NCwiSCIsNzIsIkgxODUzMyIsOTY3OSwiSDE4NTQzIiw5NjQyLCJIMTg1NTEiLDk2NDMsIkgyMjA3MyIsOTYzMywiSFBzcXVhcmUiLDEzMjU5LCJIYWFia2hhc2lhbmN5cmlsbGljIiwxMTkyLCJIYWRlc2NlbmRlcmN5cmlsbGljIiwxMjAyLCJIYXJkc2lnbmN5cmlsbGljIiwxMDY2LCJIYmFyIiwyOTQsIkhicmV2ZWJlbG93Iiw3NzIyLCJIY2VkaWxsYSIsNzcyMCwiSGNpcmNsZSIsOTQwNSwiSGNpcmN1bWZsZXgiLDI5MiwiSGRpZXJlc2lzIiw3NzE4LCJIZG90YWNjZW50Iiw3NzE0LCJIZG90YmVsb3ciLDc3MTYsIkhtb25vc3BhY2UiLDY1MzIwLCJIb2FybWVuaWFuIiwxMzQ0LCJIb3JpY29wdGljIiwxZTMsIkhzbWFsbCIsNjMzMzYsIkh1bmdhcnVtbGF1dCIsNjMxODMsIkh1bmdhcnVtbGF1dHNtYWxsIiw2MzIyNCwiSHpzcXVhcmUiLDEzMjAwLCJJIiw3MywiSUFjeXJpbGxpYyIsMTA3MSwiSUoiLDMwNiwiSVVjeXJpbGxpYyIsMTA3MCwiSWFjdXRlIiwyMDUsIklhY3V0ZXNtYWxsIiw2MzQ2OSwiSWJyZXZlIiwzMDAsIkljYXJvbiIsNDYzLCJJY2lyY2xlIiw5NDA2LCJJY2lyY3VtZmxleCIsMjA2LCJJY2lyY3VtZmxleHNtYWxsIiw2MzQ3MCwiSWN5cmlsbGljIiwxMDMwLCJJZGJsZ3JhdmUiLDUyMCwiSWRpZXJlc2lzIiwyMDcsIklkaWVyZXNpc2FjdXRlIiw3NzI2LCJJZGllcmVzaXNjeXJpbGxpYyIsMTI1MiwiSWRpZXJlc2lzc21hbGwiLDYzNDcxLCJJZG90IiwzMDQsIklkb3RhY2NlbnQiLDMwNCwiSWRvdGJlbG93Iiw3ODgyLCJJZWJyZXZlY3lyaWxsaWMiLDEyMzgsIkllY3lyaWxsaWMiLDEwNDUsIklmcmFrdHVyIiw4NDY1LCJJZ3JhdmUiLDIwNCwiSWdyYXZlc21hbGwiLDYzNDY4LCJJaG9va2Fib3ZlIiw3ODgwLCJJaWN5cmlsbGljIiwxMDQ4LCJJaW52ZXJ0ZWRicmV2ZSIsNTIyLCJJaXNob3J0Y3lyaWxsaWMiLDEwNDksIkltYWNyb24iLDI5OCwiSW1hY3JvbmN5cmlsbGljIiwxMjUwLCJJbW9ub3NwYWNlIiw2NTMyMSwiSW5pYXJtZW5pYW4iLDEzMzksIklvY3lyaWxsaWMiLDEwMjUsIklvZ29uZWsiLDMwMiwiSW90YSIsOTIxLCJJb3RhYWZyaWNhbiIsNDA2LCJJb3RhZGllcmVzaXMiLDkzOCwiSW90YXRvbm9zIiw5MDYsIklzbWFsbCIsNjMzMzcsIklzdHJva2UiLDQwNywiSXRpbGRlIiwyOTYsIkl0aWxkZWJlbG93Iiw3NzI0LCJJemhpdHNhY3lyaWxsaWMiLDExNDAsIkl6aGl0c2FkYmxncmF2ZWN5cmlsbGljIiwxMTQyLCJKIiw3NCwiSmFhcm1lbmlhbiIsMTM0NSwiSmNpcmNsZSIsOTQwNywiSmNpcmN1bWZsZXgiLDMwOCwiSmVjeXJpbGxpYyIsMTAzMiwiSmhlaGFybWVuaWFuIiwxMzU1LCJKbW9ub3NwYWNlIiw2NTMyMiwiSnNtYWxsIiw2MzMzOCwiSyIsNzUsIktCc3F1YXJlIiwxMzE4OSwiS0tzcXVhcmUiLDEzMjYxLCJLYWJhc2hraXJjeXJpbGxpYyIsMTE4NCwiS2FjdXRlIiw3NzI4LCJLYWN5cmlsbGljIiwxMDUwLCJLYWRlc2NlbmRlcmN5cmlsbGljIiwxMTc4LCJLYWhvb2tjeXJpbGxpYyIsMTIxOSwiS2FwcGEiLDkyMiwiS2FzdHJva2VjeXJpbGxpYyIsMTE4MiwiS2F2ZXJ0aWNhbHN0cm9rZWN5cmlsbGljIiwxMTgwLCJLY2Fyb24iLDQ4OCwiS2NlZGlsbGEiLDMxMCwiS2NpcmNsZSIsOTQwOCwiS2NvbW1hYWNjZW50IiwzMTAsIktkb3RiZWxvdyIsNzczMCwiS2VoYXJtZW5pYW4iLDEzNjQsIktlbmFybWVuaWFuIiwxMzQzLCJLaGFjeXJpbGxpYyIsMTA2MSwiS2hlaWNvcHRpYyIsOTk4LCJLaG9vayIsNDA4LCJLamVjeXJpbGxpYyIsMTAzNiwiS2xpbmViZWxvdyIsNzczMiwiS21vbm9zcGFjZSIsNjUzMjMsIktvcHBhY3lyaWxsaWMiLDExNTIsIktvcHBhZ3JlZWsiLDk5MCwiS3NpY3lyaWxsaWMiLDExMzQsIktzbWFsbCIsNjMzMzksIkwiLDc2LCJMSiIsNDU1LCJMTCIsNjMxNjcsIkxhY3V0ZSIsMzEzLCJMYW1iZGEiLDkyMywiTGNhcm9uIiwzMTcsIkxjZWRpbGxhIiwzMTUsIkxjaXJjbGUiLDk0MDksIkxjaXJjdW1mbGV4YmVsb3ciLDc3NDAsIkxjb21tYWFjY2VudCIsMzE1LCJMZG90IiwzMTksIkxkb3RhY2NlbnQiLDMxOSwiTGRvdGJlbG93Iiw3NzM0LCJMZG90YmVsb3dtYWNyb24iLDc3MzYsIkxpd25hcm1lbmlhbiIsMTM0MCwiTGoiLDQ1NiwiTGplY3lyaWxsaWMiLDEwMzMsIkxsaW5lYmVsb3ciLDc3MzgsIkxtb25vc3BhY2UiLDY1MzI0LCJMc2xhc2giLDMyMSwiTHNsYXNoc21hbGwiLDYzMjI1LCJMc21hbGwiLDYzMzQwLCJNIiw3NywiTUJzcXVhcmUiLDEzMTkwLCJNYWNyb24iLDYzMTg0LCJNYWNyb25zbWFsbCIsNjM0MDcsIk1hY3V0ZSIsNzc0MiwiTWNpcmNsZSIsOTQxMCwiTWRvdGFjY2VudCIsNzc0NCwiTWRvdGJlbG93Iiw3NzQ2LCJNZW5hcm1lbmlhbiIsMTM0OCwiTW1vbm9zcGFjZSIsNjUzMjUsIk1zbWFsbCIsNjMzNDEsIk10dXJuZWQiLDQxMiwiTXUiLDkyNCwiTiIsNzgsIk5KIiw0NTgsIk5hY3V0ZSIsMzIzLCJOY2Fyb24iLDMyNywiTmNlZGlsbGEiLDMyNSwiTmNpcmNsZSIsOTQxMSwiTmNpcmN1bWZsZXhiZWxvdyIsNzc1NCwiTmNvbW1hYWNjZW50IiwzMjUsIk5kb3RhY2NlbnQiLDc3NDgsIk5kb3RiZWxvdyIsNzc1MCwiTmhvb2tsZWZ0Iiw0MTMsIk5pbmVyb21hbiIsODU1MiwiTmoiLDQ1OSwiTmplY3lyaWxsaWMiLDEwMzQsIk5saW5lYmVsb3ciLDc3NTIsIk5tb25vc3BhY2UiLDY1MzI2LCJOb3dhcm1lbmlhbiIsMTM1MCwiTnNtYWxsIiw2MzM0MiwiTnRpbGRlIiwyMDksIk50aWxkZXNtYWxsIiw2MzQ3MywiTnUiLDkyNSwiTyIsNzksIk9FIiwzMzgsIk9Fc21hbGwiLDYzMjI2LCJPYWN1dGUiLDIxMSwiT2FjdXRlc21hbGwiLDYzNDc1LCJPYmFycmVkY3lyaWxsaWMiLDEyNTYsIk9iYXJyZWRkaWVyZXNpc2N5cmlsbGljIiwxMjU4LCJPYnJldmUiLDMzNCwiT2Nhcm9uIiw0NjUsIk9jZW50ZXJlZHRpbGRlIiw0MTUsIk9jaXJjbGUiLDk0MTIsIk9jaXJjdW1mbGV4IiwyMTIsIk9jaXJjdW1mbGV4YWN1dGUiLDc4ODgsIk9jaXJjdW1mbGV4ZG90YmVsb3ciLDc4OTYsIk9jaXJjdW1mbGV4Z3JhdmUiLDc4OTAsIk9jaXJjdW1mbGV4aG9va2Fib3ZlIiw3ODkyLCJPY2lyY3VtZmxleHNtYWxsIiw2MzQ3NiwiT2NpcmN1bWZsZXh0aWxkZSIsNzg5NCwiT2N5cmlsbGljIiwxMDU0LCJPZGJsYWN1dGUiLDMzNiwiT2RibGdyYXZlIiw1MjQsIk9kaWVyZXNpcyIsMjE0LCJPZGllcmVzaXNjeXJpbGxpYyIsMTI1NCwiT2RpZXJlc2lzc21hbGwiLDYzNDc4LCJPZG90YmVsb3ciLDc4ODQsIk9nb25la3NtYWxsIiw2MzIyNywiT2dyYXZlIiwyMTAsIk9ncmF2ZXNtYWxsIiw2MzQ3NCwiT2hhcm1lbmlhbiIsMTM2NSwiT2htIiw4NDg2LCJPaG9va2Fib3ZlIiw3ODg2LCJPaG9ybiIsNDE2LCJPaG9ybmFjdXRlIiw3ODk4LCJPaG9ybmRvdGJlbG93Iiw3OTA2LCJPaG9ybmdyYXZlIiw3OTAwLCJPaG9ybmhvb2thYm92ZSIsNzkwMiwiT2hvcm50aWxkZSIsNzkwNCwiT2h1bmdhcnVtbGF1dCIsMzM2LCJPaSIsNDE4LCJPaW52ZXJ0ZWRicmV2ZSIsNTI2LCJPbWFjcm9uIiwzMzIsIk9tYWNyb25hY3V0ZSIsNzc2MiwiT21hY3JvbmdyYXZlIiw3NzYwLCJPbWVnYSIsODQ4NiwiT21lZ2FjeXJpbGxpYyIsMTEyMCwiT21lZ2FncmVlayIsOTM3LCJPbWVnYXJvdW5kY3lyaWxsaWMiLDExNDYsIk9tZWdhdGl0bG9jeXJpbGxpYyIsMTE0OCwiT21lZ2F0b25vcyIsOTExLCJPbWljcm9uIiw5MjcsIk9taWNyb250b25vcyIsOTA4LCJPbW9ub3NwYWNlIiw2NTMyNywiT25lcm9tYW4iLDg1NDQsIk9vZ29uZWsiLDQ5MCwiT29nb25la21hY3JvbiIsNDkyLCJPb3BlbiIsMzkwLCJPc2xhc2giLDIxNiwiT3NsYXNoYWN1dGUiLDUxMCwiT3NsYXNoc21hbGwiLDYzNDgwLCJPc21hbGwiLDYzMzQzLCJPc3Ryb2tlYWN1dGUiLDUxMCwiT3RjeXJpbGxpYyIsMTE1MCwiT3RpbGRlIiwyMTMsIk90aWxkZWFjdXRlIiw3NzU2LCJPdGlsZGVkaWVyZXNpcyIsNzc1OCwiT3RpbGRlc21hbGwiLDYzNDc3LCJQIiw4MCwiUGFjdXRlIiw3NzY0LCJQY2lyY2xlIiw5NDEzLCJQZG90YWNjZW50Iiw3NzY2LCJQZWN5cmlsbGljIiwxMDU1LCJQZWhhcm1lbmlhbiIsMTM1NCwiUGVtaWRkbGVob29rY3lyaWxsaWMiLDExOTAsIlBoaSIsOTM0LCJQaG9vayIsNDIwLCJQaSIsOTI4LCJQaXdyYXJtZW5pYW4iLDEzNjMsIlBtb25vc3BhY2UiLDY1MzI4LCJQc2kiLDkzNiwiUHNpY3lyaWxsaWMiLDExMzYsIlBzbWFsbCIsNjMzNDQsIlEiLDgxLCJRY2lyY2xlIiw5NDE0LCJRbW9ub3NwYWNlIiw2NTMyOSwiUXNtYWxsIiw2MzM0NSwiUiIsODIsIlJhYXJtZW5pYW4iLDEzNTYsIlJhY3V0ZSIsMzQwLCJSY2Fyb24iLDM0NCwiUmNlZGlsbGEiLDM0MiwiUmNpcmNsZSIsOTQxNSwiUmNvbW1hYWNjZW50IiwzNDIsIlJkYmxncmF2ZSIsNTI4LCJSZG90YWNjZW50Iiw3NzY4LCJSZG90YmVsb3ciLDc3NzAsIlJkb3RiZWxvd21hY3JvbiIsNzc3MiwiUmVoYXJtZW5pYW4iLDEzNjAsIlJmcmFrdHVyIiw4NDc2LCJSaG8iLDkyOSwiUmluZ3NtYWxsIiw2MzIyOCwiUmludmVydGVkYnJldmUiLDUzMCwiUmxpbmViZWxvdyIsNzc3NCwiUm1vbm9zcGFjZSIsNjUzMzAsIlJzbWFsbCIsNjMzNDYsIlJzbWFsbGludmVydGVkIiw2NDEsIlJzbWFsbGludmVydGVkc3VwZXJpb3IiLDY5NCwiUyIsODMsIlNGMDEwMDAwIiw5NDg0LCJTRjAyMDAwMCIsOTQ5MiwiU0YwMzAwMDAiLDk0ODgsIlNGMDQwMDAwIiw5NDk2LCJTRjA1MDAwMCIsOTUzMiwiU0YwNjAwMDAiLDk1MTYsIlNGMDcwMDAwIiw5NTI0LCJTRjA4MDAwMCIsOTUwMCwiU0YwOTAwMDAiLDk1MDgsIlNGMTAwMDAwIiw5NDcyLCJTRjExMDAwMCIsOTQ3NCwiU0YxOTAwMDAiLDk1NjksIlNGMjAwMDAwIiw5NTcwLCJTRjIxMDAwMCIsOTU1OCwiU0YyMjAwMDAiLDk1NTcsIlNGMjMwMDAwIiw5NTcxLCJTRjI0MDAwMCIsOTU1MywiU0YyNTAwMDAiLDk1NTksIlNGMjYwMDAwIiw5NTY1LCJTRjI3MDAwMCIsOTU2NCwiU0YyODAwMDAiLDk1NjMsIlNGMzYwMDAwIiw5NTY2LCJTRjM3MDAwMCIsOTU2NywiU0YzODAwMDAiLDk1NjIsIlNGMzkwMDAwIiw5NTU2LCJTRjQwMDAwMCIsOTU3NywiU0Y0MTAwMDAiLDk1NzQsIlNGNDIwMDAwIiw5NTY4LCJTRjQzMDAwMCIsOTU1MiwiU0Y0NDAwMDAiLDk1ODAsIlNGNDUwMDAwIiw5NTc1LCJTRjQ2MDAwMCIsOTU3NiwiU0Y0NzAwMDAiLDk1NzIsIlNGNDgwMDAwIiw5NTczLCJTRjQ5MDAwMCIsOTU2MSwiU0Y1MDAwMDAiLDk1NjAsIlNGNTEwMDAwIiw5NTU0LCJTRjUyMDAwMCIsOTU1NSwiU0Y1MzAwMDAiLDk1NzksIlNGNTQwMDAwIiw5NTc4LCJTYWN1dGUiLDM0NiwiU2FjdXRlZG90YWNjZW50Iiw3NzgwLCJTYW1waWdyZWVrIiw5OTIsIlNjYXJvbiIsMzUyLCJTY2Fyb25kb3RhY2NlbnQiLDc3ODIsIlNjYXJvbnNtYWxsIiw2MzIyOSwiU2NlZGlsbGEiLDM1MCwiU2Nod2EiLDM5OSwiU2Nod2FjeXJpbGxpYyIsMTI0MCwiU2Nod2FkaWVyZXNpc2N5cmlsbGljIiwxMjQyLCJTY2lyY2xlIiw5NDE2LCJTY2lyY3VtZmxleCIsMzQ4LCJTY29tbWFhY2NlbnQiLDUzNiwiU2RvdGFjY2VudCIsNzc3NiwiU2RvdGJlbG93Iiw3Nzc4LCJTZG90YmVsb3dkb3RhY2NlbnQiLDc3ODQsIlNlaGFybWVuaWFuIiwxMzU3LCJTZXZlbnJvbWFuIiw4NTUwLCJTaGFhcm1lbmlhbiIsMTM1MSwiU2hhY3lyaWxsaWMiLDEwNjQsIlNoY2hhY3lyaWxsaWMiLDEwNjUsIlNoZWljb3B0aWMiLDk5NCwiU2hoYWN5cmlsbGljIiwxMjEwLCJTaGltYWNvcHRpYyIsMTAwNCwiU2lnbWEiLDkzMSwiU2l4cm9tYW4iLDg1NDksIlNtb25vc3BhY2UiLDY1MzMxLCJTb2Z0c2lnbmN5cmlsbGljIiwxMDY4LCJTc21hbGwiLDYzMzQ3LCJTdGlnbWFncmVlayIsOTg2LCJUIiw4NCwiVGF1Iiw5MzIsIlRiYXIiLDM1OCwiVGNhcm9uIiwzNTYsIlRjZWRpbGxhIiwzNTQsIlRjaXJjbGUiLDk0MTcsIlRjaXJjdW1mbGV4YmVsb3ciLDc3OTIsIlRjb21tYWFjY2VudCIsMzU0LCJUZG90YWNjZW50Iiw3Nzg2LCJUZG90YmVsb3ciLDc3ODgsIlRlY3lyaWxsaWMiLDEwNTgsIlRlZGVzY2VuZGVyY3lyaWxsaWMiLDExOTYsIlRlbnJvbWFuIiw4NTUzLCJUZXRzZWN5cmlsbGljIiwxMjA0LCJUaGV0YSIsOTIwLCJUaG9vayIsNDI4LCJUaG9ybiIsMjIyLCJUaG9ybnNtYWxsIiw2MzQ4NiwiVGhyZWVyb21hbiIsODU0NiwiVGlsZGVzbWFsbCIsNjMyMzAsIlRpd25hcm1lbmlhbiIsMTM1OSwiVGxpbmViZWxvdyIsNzc5MCwiVG1vbm9zcGFjZSIsNjUzMzIsIlRvYXJtZW5pYW4iLDEzMzcsIlRvbmVmaXZlIiw0NDQsIlRvbmVzaXgiLDM4OCwiVG9uZXR3byIsNDIzLCJUcmV0cm9mbGV4aG9vayIsNDMwLCJUc2VjeXJpbGxpYyIsMTA2MiwiVHNoZWN5cmlsbGljIiwxMDM1LCJUc21hbGwiLDYzMzQ4LCJUd2VsdmVyb21hbiIsODU1NSwiVHdvcm9tYW4iLDg1NDUsIlUiLDg1LCJVYWN1dGUiLDIxOCwiVWFjdXRlc21hbGwiLDYzNDgyLCJVYnJldmUiLDM2NCwiVWNhcm9uIiw0NjcsIlVjaXJjbGUiLDk0MTgsIlVjaXJjdW1mbGV4IiwyMTksIlVjaXJjdW1mbGV4YmVsb3ciLDc3OTgsIlVjaXJjdW1mbGV4c21hbGwiLDYzNDgzLCJVY3lyaWxsaWMiLDEwNTksIlVkYmxhY3V0ZSIsMzY4LCJVZGJsZ3JhdmUiLDUzMiwiVWRpZXJlc2lzIiwyMjAsIlVkaWVyZXNpc2FjdXRlIiw0NzEsIlVkaWVyZXNpc2JlbG93Iiw3Nzk0LCJVZGllcmVzaXNjYXJvbiIsNDczLCJVZGllcmVzaXNjeXJpbGxpYyIsMTI2NCwiVWRpZXJlc2lzZ3JhdmUiLDQ3NSwiVWRpZXJlc2lzbWFjcm9uIiw0NjksIlVkaWVyZXNpc3NtYWxsIiw2MzQ4NCwiVWRvdGJlbG93Iiw3OTA4LCJVZ3JhdmUiLDIxNywiVWdyYXZlc21hbGwiLDYzNDgxLCJVaG9va2Fib3ZlIiw3OTEwLCJVaG9ybiIsNDMxLCJVaG9ybmFjdXRlIiw3OTEyLCJVaG9ybmRvdGJlbG93Iiw3OTIwLCJVaG9ybmdyYXZlIiw3OTE0LCJVaG9ybmhvb2thYm92ZSIsNzkxNiwiVWhvcm50aWxkZSIsNzkxOCwiVWh1bmdhcnVtbGF1dCIsMzY4LCJVaHVuZ2FydW1sYXV0Y3lyaWxsaWMiLDEyNjYsIlVpbnZlcnRlZGJyZXZlIiw1MzQsIlVrY3lyaWxsaWMiLDExNDQsIlVtYWNyb24iLDM2MiwiVW1hY3JvbmN5cmlsbGljIiwxMjYyLCJVbWFjcm9uZGllcmVzaXMiLDc4MDIsIlVtb25vc3BhY2UiLDY1MzMzLCJVb2dvbmVrIiwzNzAsIlVwc2lsb24iLDkzMywiVXBzaWxvbjEiLDk3OCwiVXBzaWxvbmFjdXRlaG9va3N5bWJvbGdyZWVrIiw5NzksIlVwc2lsb25hZnJpY2FuIiw0MzMsIlVwc2lsb25kaWVyZXNpcyIsOTM5LCJVcHNpbG9uZGllcmVzaXNob29rc3ltYm9sZ3JlZWsiLDk4MCwiVXBzaWxvbmhvb2tzeW1ib2wiLDk3OCwiVXBzaWxvbnRvbm9zIiw5MTAsIlVyaW5nIiwzNjYsIlVzaG9ydGN5cmlsbGljIiwxMDM4LCJVc21hbGwiLDYzMzQ5LCJVc3RyYWlnaHRjeXJpbGxpYyIsMTE5OCwiVXN0cmFpZ2h0c3Ryb2tlY3lyaWxsaWMiLDEyMDAsIlV0aWxkZSIsMzYwLCJVdGlsZGVhY3V0ZSIsNzgwMCwiVXRpbGRlYmVsb3ciLDc3OTYsIlYiLDg2LCJWY2lyY2xlIiw5NDE5LCJWZG90YmVsb3ciLDc4MDYsIlZlY3lyaWxsaWMiLDEwNDIsIlZld2FybWVuaWFuIiwxMzU4LCJWaG9vayIsNDM0LCJWbW9ub3NwYWNlIiw2NTMzNCwiVm9hcm1lbmlhbiIsMTM1MiwiVnNtYWxsIiw2MzM1MCwiVnRpbGRlIiw3ODA0LCJXIiw4NywiV2FjdXRlIiw3ODEwLCJXY2lyY2xlIiw5NDIwLCJXY2lyY3VtZmxleCIsMzcyLCJXZGllcmVzaXMiLDc4MTIsIldkb3RhY2NlbnQiLDc4MTQsIldkb3RiZWxvdyIsNzgxNiwiV2dyYXZlIiw3ODA4LCJXbW9ub3NwYWNlIiw2NTMzNSwiV3NtYWxsIiw2MzM1MSwiWCIsODgsIlhjaXJjbGUiLDk0MjEsIlhkaWVyZXNpcyIsNzgyMCwiWGRvdGFjY2VudCIsNzgxOCwiWGVoYXJtZW5pYW4iLDEzNDEsIlhpIiw5MjYsIlhtb25vc3BhY2UiLDY1MzM2LCJYc21hbGwiLDYzMzUyLCJZIiw4OSwiWWFjdXRlIiwyMjEsIllhY3V0ZXNtYWxsIiw2MzQ4NSwiWWF0Y3lyaWxsaWMiLDExMjIsIlljaXJjbGUiLDk0MjIsIlljaXJjdW1mbGV4IiwzNzQsIllkaWVyZXNpcyIsMzc2LCJZZGllcmVzaXNzbWFsbCIsNjM0ODcsIllkb3RhY2NlbnQiLDc4MjIsIllkb3RiZWxvdyIsNzkyNCwiWWVyaWN5cmlsbGljIiwxMDY3LCJZZXJ1ZGllcmVzaXNjeXJpbGxpYyIsMTI3MiwiWWdyYXZlIiw3OTIyLCJZaG9vayIsNDM1LCJZaG9va2Fib3ZlIiw3OTI2LCJZaWFybWVuaWFuIiwxMzQ5LCJZaWN5cmlsbGljIiwxMDMxLCJZaXduYXJtZW5pYW4iLDEzNjIsIlltb25vc3BhY2UiLDY1MzM3LCJZc21hbGwiLDYzMzUzLCJZdGlsZGUiLDc5MjgsIll1c2JpZ2N5cmlsbGljIiwxMTMwLCJZdXNiaWdpb3RpZmllZGN5cmlsbGljIiwxMTMyLCJZdXNsaXR0bGVjeXJpbGxpYyIsMTEyNiwiWXVzbGl0dGxlaW90aWZpZWRjeXJpbGxpYyIsMTEyOCwiWiIsOTAsIlphYXJtZW5pYW4iLDEzMzQsIlphY3V0ZSIsMzc3LCJaY2Fyb24iLDM4MSwiWmNhcm9uc21hbGwiLDYzMjMxLCJaY2lyY2xlIiw5NDIzLCJaY2lyY3VtZmxleCIsNzgyNCwiWmRvdCIsMzc5LCJaZG90YWNjZW50IiwzNzksIlpkb3RiZWxvdyIsNzgyNiwiWmVjeXJpbGxpYyIsMTA0NywiWmVkZXNjZW5kZXJjeXJpbGxpYyIsMTE3NiwiWmVkaWVyZXNpc2N5cmlsbGljIiwxMjQ2LCJaZXRhIiw5MTgsIlpoZWFybWVuaWFuIiwxMzM4LCJaaGVicmV2ZWN5cmlsbGljIiwxMjE3LCJaaGVjeXJpbGxpYyIsMTA0NiwiWmhlZGVzY2VuZGVyY3lyaWxsaWMiLDExNzQsIlpoZWRpZXJlc2lzY3lyaWxsaWMiLDEyNDQsIlpsaW5lYmVsb3ciLDc4MjgsIlptb25vc3BhY2UiLDY1MzM4LCJac21hbGwiLDYzMzU0LCJac3Ryb2tlIiw0MzcsImEiLDk3LCJhYWJlbmdhbGkiLDI0MzgsImFhY3V0ZSIsMjI1LCJhYWRldmEiLDIzMTAsImFhZ3VqYXJhdGkiLDI2OTQsImFhZ3VybXVraGkiLDI1NjYsImFhbWF0cmFndXJtdWtoaSIsMjYyMiwiYWFydXNxdWFyZSIsMTMwNTksImFhdm93ZWxzaWduYmVuZ2FsaSIsMjQ5NCwiYWF2b3dlbHNpZ25kZXZhIiwyMzY2LCJhYXZvd2Vsc2lnbmd1amFyYXRpIiwyNzUwLCJhYmJyZXZpYXRpb25tYXJrYXJtZW5pYW4iLDEzNzUsImFiYnJldmlhdGlvbnNpZ25kZXZhIiwyNDE2LCJhYmVuZ2FsaSIsMjQzNywiYWJvcG9tb2ZvIiwxMjU3MCwiYWJyZXZlIiwyNTksImFicmV2ZWFjdXRlIiw3ODU1LCJhYnJldmVjeXJpbGxpYyIsMTIzMywiYWJyZXZlZG90YmVsb3ciLDc4NjMsImFicmV2ZWdyYXZlIiw3ODU3LCJhYnJldmVob29rYWJvdmUiLDc4NTksImFicmV2ZXRpbGRlIiw3ODYxLCJhY2Fyb24iLDQ2MiwiYWNpcmNsZSIsOTQyNCwiYWNpcmN1bWZsZXgiLDIyNiwiYWNpcmN1bWZsZXhhY3V0ZSIsNzg0NSwiYWNpcmN1bWZsZXhkb3RiZWxvdyIsNzg1MywiYWNpcmN1bWZsZXhncmF2ZSIsNzg0NywiYWNpcmN1bWZsZXhob29rYWJvdmUiLDc4NDksImFjaXJjdW1mbGV4dGlsZGUiLDc4NTEsImFjdXRlIiwxODAsImFjdXRlYmVsb3djbWIiLDc5MSwiYWN1dGVjbWIiLDc2OSwiYWN1dGVjb21iIiw3NjksImFjdXRlZGV2YSIsMjM4OCwiYWN1dGVsb3dtb2QiLDcxOSwiYWN1dGV0b25lY21iIiw4MzMsImFjeXJpbGxpYyIsMTA3MiwiYWRibGdyYXZlIiw1MTMsImFkZGFrZ3VybXVraGkiLDI2NzMsImFkZXZhIiwyMzA5LCJhZGllcmVzaXMiLDIyOCwiYWRpZXJlc2lzY3lyaWxsaWMiLDEyMzUsImFkaWVyZXNpc21hY3JvbiIsNDc5LCJhZG90YmVsb3ciLDc4NDEsImFkb3RtYWNyb24iLDQ4MSwiYWUiLDIzMCwiYWVhY3V0ZSIsNTA5LCJhZWtvcmVhbiIsMTI2MjQsImFlbWFjcm9uIiw0ODMsImFmaWkwMDIwOCIsODIxMywiYWZpaTA4OTQxIiw4MzU2LCJhZmlpMTAwMTciLDEwNDAsImFmaWkxMDAxOCIsMTA0MSwiYWZpaTEwMDE5IiwxMDQyLCJhZmlpMTAwMjAiLDEwNDMsImFmaWkxMDAyMSIsMTA0NCwiYWZpaTEwMDIyIiwxMDQ1LCJhZmlpMTAwMjMiLDEwMjUsImFmaWkxMDAyNCIsMTA0NiwiYWZpaTEwMDI1IiwxMDQ3LCJhZmlpMTAwMjYiLDEwNDgsImFmaWkxMDAyNyIsMTA0OSwiYWZpaTEwMDI4IiwxMDUwLCJhZmlpMTAwMjkiLDEwNTEsImFmaWkxMDAzMCIsMTA1MiwiYWZpaTEwMDMxIiwxMDUzLCJhZmlpMTAwMzIiLDEwNTQsImFmaWkxMDAzMyIsMTA1NSwiYWZpaTEwMDM0IiwxMDU2LCJhZmlpMTAwMzUiLDEwNTcsImFmaWkxMDAzNiIsMTA1OCwiYWZpaTEwMDM3IiwxMDU5LCJhZmlpMTAwMzgiLDEwNjAsImFmaWkxMDAzOSIsMTA2MSwiYWZpaTEwMDQwIiwxMDYyLCJhZmlpMTAwNDEiLDEwNjMsImFmaWkxMDA0MiIsMTA2NCwiYWZpaTEwMDQzIiwxMDY1LCJhZmlpMTAwNDQiLDEwNjYsImFmaWkxMDA0NSIsMTA2NywiYWZpaTEwMDQ2IiwxMDY4LCJhZmlpMTAwNDciLDEwNjksImFmaWkxMDA0OCIsMTA3MCwiYWZpaTEwMDQ5IiwxMDcxLCJhZmlpMTAwNTAiLDExNjgsImFmaWkxMDA1MSIsMTAyNiwiYWZpaTEwMDUyIiwxMDI3LCJhZmlpMTAwNTMiLDEwMjgsImFmaWkxMDA1NCIsMTAyOSwiYWZpaTEwMDU1IiwxMDMwLCJhZmlpMTAwNTYiLDEwMzEsImFmaWkxMDA1NyIsMTAzMiwiYWZpaTEwMDU4IiwxMDMzLCJhZmlpMTAwNTkiLDEwMzQsImFmaWkxMDA2MCIsMTAzNSwiYWZpaTEwMDYxIiwxMDM2LCJhZmlpMTAwNjIiLDEwMzgsImFmaWkxMDA2MyIsNjMxNzIsImFmaWkxMDA2NCIsNjMxNzMsImFmaWkxMDA2NSIsMTA3MiwiYWZpaTEwMDY2IiwxMDczLCJhZmlpMTAwNjciLDEwNzQsImFmaWkxMDA2OCIsMTA3NSwiYWZpaTEwMDY5IiwxMDc2LCJhZmlpMTAwNzAiLDEwNzcsImFmaWkxMDA3MSIsMTEwNSwiYWZpaTEwMDcyIiwxMDc4LCJhZmlpMTAwNzMiLDEwNzksImFmaWkxMDA3NCIsMTA4MCwiYWZpaTEwMDc1IiwxMDgxLCJhZmlpMTAwNzYiLDEwODIsImFmaWkxMDA3NyIsMTA4MywiYWZpaTEwMDc4IiwxMDg0LCJhZmlpMTAwNzkiLDEwODUsImFmaWkxMDA4MCIsMTA4NiwiYWZpaTEwMDgxIiwxMDg3LCJhZmlpMTAwODIiLDEwODgsImFmaWkxMDA4MyIsMTA4OSwiYWZpaTEwMDg0IiwxMDkwLCJhZmlpMTAwODUiLDEwOTEsImFmaWkxMDA4NiIsMTA5MiwiYWZpaTEwMDg3IiwxMDkzLCJhZmlpMTAwODgiLDEwOTQsImFmaWkxMDA4OSIsMTA5NSwiYWZpaTEwMDkwIiwxMDk2LCJhZmlpMTAwOTEiLDEwOTcsImFmaWkxMDA5MiIsMTA5OCwiYWZpaTEwMDkzIiwxMDk5LCJhZmlpMTAwOTQiLDExMDAsImFmaWkxMDA5NSIsMTEwMSwiYWZpaTEwMDk2IiwxMTAyLCJhZmlpMTAwOTciLDExMDMsImFmaWkxMDA5OCIsMTE2OSwiYWZpaTEwMDk5IiwxMTA2LCJhZmlpMTAxMDAiLDExMDcsImFmaWkxMDEwMSIsMTEwOCwiYWZpaTEwMTAyIiwxMTA5LCJhZmlpMTAxMDMiLDExMTAsImFmaWkxMDEwNCIsMTExMSwiYWZpaTEwMTA1IiwxMTEyLCJhZmlpMTAxMDYiLDExMTMsImFmaWkxMDEwNyIsMTExNCwiYWZpaTEwMTA4IiwxMTE1LCJhZmlpMTAxMDkiLDExMTYsImFmaWkxMDExMCIsMTExOCwiYWZpaTEwMTQ1IiwxMDM5LCJhZmlpMTAxNDYiLDExMjIsImFmaWkxMDE0NyIsMTEzOCwiYWZpaTEwMTQ4IiwxMTQwLCJhZmlpMTAxOTIiLDYzMTc0LCJhZmlpMTAxOTMiLDExMTksImFmaWkxMDE5NCIsMTEyMywiYWZpaTEwMTk1IiwxMTM5LCJhZmlpMTAxOTYiLDExNDEsImFmaWkxMDgzMSIsNjMxNzUsImFmaWkxMDgzMiIsNjMxNzYsImFmaWkxMDg0NiIsMTI0MSwiYWZpaTI5OSIsODIwNiwiYWZpaTMwMCIsODIwNywiYWZpaTMwMSIsODIwNSwiYWZpaTU3MzgxIiwxNjQyLCJhZmlpNTczODgiLDE1NDgsImFmaWk1NzM5MiIsMTYzMiwiYWZpaTU3MzkzIiwxNjMzLCJhZmlpNTczOTQiLDE2MzQsImFmaWk1NzM5NSIsMTYzNSwiYWZpaTU3Mzk2IiwxNjM2LCJhZmlpNTczOTciLDE2MzcsImFmaWk1NzM5OCIsMTYzOCwiYWZpaTU3Mzk5IiwxNjM5LCJhZmlpNTc0MDAiLDE2NDAsImFmaWk1NzQwMSIsMTY0MSwiYWZpaTU3NDAzIiwxNTYzLCJhZmlpNTc0MDciLDE1NjcsImFmaWk1NzQwOSIsMTU2OSwiYWZpaTU3NDEwIiwxNTcwLCJhZmlpNTc0MTEiLDE1NzEsImFmaWk1NzQxMiIsMTU3MiwiYWZpaTU3NDEzIiwxNTczLCJhZmlpNTc0MTQiLDE1NzQsImFmaWk1NzQxNSIsMTU3NSwiYWZpaTU3NDE2IiwxNTc2LCJhZmlpNTc0MTciLDE1NzcsImFmaWk1NzQxOCIsMTU3OCwiYWZpaTU3NDE5IiwxNTc5LCJhZmlpNTc0MjAiLDE1ODAsImFmaWk1NzQyMSIsMTU4MSwiYWZpaTU3NDIyIiwxNTgyLCJhZmlpNTc0MjMiLDE1ODMsImFmaWk1NzQyNCIsMTU4NCwiYWZpaTU3NDI1IiwxNTg1LCJhZmlpNTc0MjYiLDE1ODYsImFmaWk1NzQyNyIsMTU4NywiYWZpaTU3NDI4IiwxNTg4LCJhZmlpNTc0MjkiLDE1ODksImFmaWk1NzQzMCIsMTU5MCwiYWZpaTU3NDMxIiwxNTkxLCJhZmlpNTc0MzIiLDE1OTIsImFmaWk1NzQzMyIsMTU5MywiYWZpaTU3NDM0IiwxNTk0LCJhZmlpNTc0NDAiLDE2MDAsImFmaWk1NzQ0MSIsMTYwMSwiYWZpaTU3NDQyIiwxNjAyLCJhZmlpNTc0NDMiLDE2MDMsImFmaWk1NzQ0NCIsMTYwNCwiYWZpaTU3NDQ1IiwxNjA1LCJhZmlpNTc0NDYiLDE2MDYsImFmaWk1NzQ0OCIsMTYwOCwiYWZpaTU3NDQ5IiwxNjA5LCJhZmlpNTc0NTAiLDE2MTAsImFmaWk1NzQ1MSIsMTYxMSwiYWZpaTU3NDUyIiwxNjEyLCJhZmlpNTc0NTMiLDE2MTMsImFmaWk1NzQ1NCIsMTYxNCwiYWZpaTU3NDU1IiwxNjE1LCJhZmlpNTc0NTYiLDE2MTYsImFmaWk1NzQ1NyIsMTYxNywiYWZpaTU3NDU4IiwxNjE4LCJhZmlpNTc0NzAiLDE2MDcsImFmaWk1NzUwNSIsMTcwMCwiYWZpaTU3NTA2IiwxNjYyLCJhZmlpNTc1MDciLDE2NzAsImFmaWk1NzUwOCIsMTY4OCwiYWZpaTU3NTA5IiwxNzExLCJhZmlpNTc1MTEiLDE2NTcsImFmaWk1NzUxMiIsMTY3MiwiYWZpaTU3NTEzIiwxNjgxLCJhZmlpNTc1MTQiLDE3MjIsImFmaWk1NzUxOSIsMTc0NiwiYWZpaTU3NTM0IiwxNzQ5LCJhZmlpNTc2MzYiLDgzNjIsImFmaWk1NzY0NSIsMTQ3MCwiYWZpaTU3NjU4IiwxNDc1LCJhZmlpNTc2NjQiLDE0ODgsImFmaWk1NzY2NSIsMTQ4OSwiYWZpaTU3NjY2IiwxNDkwLCJhZmlpNTc2NjciLDE0OTEsImFmaWk1NzY2OCIsMTQ5MiwiYWZpaTU3NjY5IiwxNDkzLCJhZmlpNTc2NzAiLDE0OTQsImFmaWk1NzY3MSIsMTQ5NSwiYWZpaTU3NjcyIiwxNDk2LCJhZmlpNTc2NzMiLDE0OTcsImFmaWk1NzY3NCIsMTQ5OCwiYWZpaTU3Njc1IiwxNDk5LCJhZmlpNTc2NzYiLDE1MDAsImFmaWk1NzY3NyIsMTUwMSwiYWZpaTU3Njc4IiwxNTAyLCJhZmlpNTc2NzkiLDE1MDMsImFmaWk1NzY4MCIsMTUwNCwiYWZpaTU3NjgxIiwxNTA1LCJhZmlpNTc2ODIiLDE1MDYsImFmaWk1NzY4MyIsMTUwNywiYWZpaTU3Njg0IiwxNTA4LCJhZmlpNTc2ODUiLDE1MDksImFmaWk1NzY4NiIsMTUxMCwiYWZpaTU3Njg3IiwxNTExLCJhZmlpNTc2ODgiLDE1MTIsImFmaWk1NzY4OSIsMTUxMywiYWZpaTU3NjkwIiwxNTE0LCJhZmlpNTc2OTQiLDY0Mjk4LCJhZmlpNTc2OTUiLDY0Mjk5LCJhZmlpNTc3MDAiLDY0MzMxLCJhZmlpNTc3MDUiLDY0Mjg3LCJhZmlpNTc3MTYiLDE1MjAsImFmaWk1NzcxNyIsMTUyMSwiYWZpaTU3NzE4IiwxNTIyLCJhZmlpNTc3MjMiLDY0MzA5LCJhZmlpNTc3OTMiLDE0NjAsImFmaWk1Nzc5NCIsMTQ2MSwiYWZpaTU3Nzk1IiwxNDYyLCJhZmlpNTc3OTYiLDE0NjcsImFmaWk1Nzc5NyIsMTQ2NCwiYWZpaTU3Nzk4IiwxNDYzLCJhZmlpNTc3OTkiLDE0NTYsImFmaWk1NzgwMCIsMTQ1OCwiYWZpaTU3ODAxIiwxNDU3LCJhZmlpNTc4MDIiLDE0NTksImFmaWk1NzgwMyIsMTQ3NCwiYWZpaTU3ODA0IiwxNDczLCJhZmlpNTc4MDYiLDE0NjUsImFmaWk1NzgwNyIsMTQ2OCwiYWZpaTU3ODM5IiwxNDY5LCJhZmlpNTc4NDEiLDE0NzEsImFmaWk1Nzg0MiIsMTQ3MiwiYWZpaTU3OTI5Iiw3MDAsImFmaWk2MTI0OCIsODQ1MywiYWZpaTYxMjg5Iiw4NDY3LCJhZmlpNjEzNTIiLDg0NzAsImFmaWk2MTU3MyIsODIzNiwiYWZpaTYxNTc0Iiw4MjM3LCJhZmlpNjE1NzUiLDgyMzgsImFmaWk2MTY2NCIsODIwNCwiYWZpaTYzMTY3IiwxNjQ1LCJhZmlpNjQ5MzciLDcwMSwiYWdyYXZlIiwyMjQsImFndWphcmF0aSIsMjY5MywiYWd1cm11a2hpIiwyNTY1LCJhaGlyYWdhbmEiLDEyMzU0LCJhaG9va2Fib3ZlIiw3ODQzLCJhaWJlbmdhbGkiLDI0NDgsImFpYm9wb21vZm8iLDEyNTc0LCJhaWRldmEiLDIzMjAsImFpZWN5cmlsbGljIiwxMjM3LCJhaWd1amFyYXRpIiwyNzA0LCJhaWd1cm11a2hpIiwyNTc2LCJhaW1hdHJhZ3VybXVraGkiLDI2MzIsImFpbmFyYWJpYyIsMTU5MywiYWluZmluYWxhcmFiaWMiLDY1MjI2LCJhaW5pbml0aWFsYXJhYmljIiw2NTIyNywiYWlubWVkaWFsYXJhYmljIiw2NTIyOCwiYWludmVydGVkYnJldmUiLDUxNSwiYWl2b3dlbHNpZ25iZW5nYWxpIiwyNTA0LCJhaXZvd2Vsc2lnbmRldmEiLDIzNzYsImFpdm93ZWxzaWduZ3VqYXJhdGkiLDI3NjAsImFrYXRha2FuYSIsMTI0NTAsImFrYXRha2FuYWhhbGZ3aWR0aCIsNjUzOTMsImFrb3JlYW4iLDEyNjIzLCJhbGVmIiwxNDg4LCJhbGVmYXJhYmljIiwxNTc1LCJhbGVmZGFnZXNoaGVicmV3Iiw2NDMwNCwiYWxlZmZpbmFsYXJhYmljIiw2NTE2NiwiYWxlZmhhbXphYWJvdmVhcmFiaWMiLDE1NzEsImFsZWZoYW16YWFib3ZlZmluYWxhcmFiaWMiLDY1MTU2LCJhbGVmaGFtemFiZWxvd2FyYWJpYyIsMTU3MywiYWxlZmhhbXphYmVsb3dmaW5hbGFyYWJpYyIsNjUxNjAsImFsZWZoZWJyZXciLDE0ODgsImFsZWZsYW1lZGhlYnJldyIsNjQzMzUsImFsZWZtYWRkYWFib3ZlYXJhYmljIiwxNTcwLCJhbGVmbWFkZGFhYm92ZWZpbmFsYXJhYmljIiw2NTE1NCwiYWxlZm1ha3N1cmFhcmFiaWMiLDE2MDksImFsZWZtYWtzdXJhZmluYWxhcmFiaWMiLDY1MjY0LCJhbGVmbWFrc3VyYWluaXRpYWxhcmFiaWMiLDY1MjY3LCJhbGVmbWFrc3VyYW1lZGlhbGFyYWJpYyIsNjUyNjgsImFsZWZwYXRhaGhlYnJldyIsNjQzMDIsImFsZWZxYW1hdHNoZWJyZXciLDY0MzAzLCJhbGVwaCIsODUwMSwiYWxsZXF1YWwiLDg3ODAsImFscGhhIiw5NDUsImFscGhhdG9ub3MiLDk0MCwiYW1hY3JvbiIsMjU3LCJhbW9ub3NwYWNlIiw2NTM0NSwiYW1wZXJzYW5kIiwzOCwiYW1wZXJzYW5kbW9ub3NwYWNlIiw2NTI4NiwiYW1wZXJzYW5kc21hbGwiLDYzMjcwLCJhbXNxdWFyZSIsMTMyNTAsImFuYm9wb21vZm8iLDEyNTc4LCJhbmdib3BvbW9mbyIsMTI1ODAsImFuZ2JyYWNrZXRsZWZ0IiwxMjI5NiwiYW5nYnJhY2tldHJpZ2h0IiwxMjI5NywiYW5na2hhbmtodXRoYWkiLDM2NzQsImFuZ2xlIiw4NzM2LCJhbmdsZWJyYWNrZXRsZWZ0IiwxMjI5NiwiYW5nbGVicmFja2V0bGVmdHZlcnRpY2FsIiw2NTA4NywiYW5nbGVicmFja2V0cmlnaHQiLDEyMjk3LCJhbmdsZWJyYWNrZXRyaWdodHZlcnRpY2FsIiw2NTA4OCwiYW5nbGVsZWZ0Iiw5MDAxLCJhbmdsZXJpZ2h0Iiw5MDAyLCJhbmdzdHJvbSIsODQ5MSwiYW5vdGVsZWlhIiw5MDMsImFudWRhdHRhZGV2YSIsMjM4NiwiYW51c3ZhcmFiZW5nYWxpIiwyNDM0LCJhbnVzdmFyYWRldmEiLDIzMDYsImFudXN2YXJhZ3VqYXJhdGkiLDI2OTAsImFvZ29uZWsiLDI2MSwiYXBhYXRvc3F1YXJlIiwxMzA1NiwiYXBhcmVuIiw5MzcyLCJhcG9zdHJvcGhlYXJtZW5pYW4iLDEzNzAsImFwb3N0cm9waGVtb2QiLDcwMCwiYXBwbGUiLDYzNzQzLCJhcHByb2FjaGVzIiw4Nzg0LCJhcHByb3hlcXVhbCIsODc3NiwiYXBwcm94ZXF1YWxvcmltYWdlIiw4Nzg2LCJhcHByb3hpbWF0ZWx5ZXF1YWwiLDg3NzMsImFyYWVhZWtvcmVhbiIsMTI2ODYsImFyYWVha29yZWFuIiwxMjY4NSwiYXJjIiw4OTc4LCJhcmlnaHRoYWxmcmluZyIsNzgzNCwiYXJpbmciLDIyOSwiYXJpbmdhY3V0ZSIsNTA3LCJhcmluZ2JlbG93Iiw3NjgxLCJhcnJvd2JvdGgiLDg1OTYsImFycm93ZGFzaGRvd24iLDg2NzUsImFycm93ZGFzaGxlZnQiLDg2NzIsImFycm93ZGFzaHJpZ2h0Iiw4Njc0LCJhcnJvd2Rhc2h1cCIsODY3MywiYXJyb3dkYmxib3RoIiw4NjYwLCJhcnJvd2RibGRvd24iLDg2NTksImFycm93ZGJsbGVmdCIsODY1NiwiYXJyb3dkYmxyaWdodCIsODY1OCwiYXJyb3dkYmx1cCIsODY1NywiYXJyb3dkb3duIiw4NTk1LCJhcnJvd2Rvd25sZWZ0Iiw4NjAxLCJhcnJvd2Rvd25yaWdodCIsODYwMCwiYXJyb3dkb3dud2hpdGUiLDg2ODEsImFycm93aGVhZGRvd25tb2QiLDcwOSwiYXJyb3doZWFkbGVmdG1vZCIsNzA2LCJhcnJvd2hlYWRyaWdodG1vZCIsNzA3LCJhcnJvd2hlYWR1cG1vZCIsNzA4LCJhcnJvd2hvcml6ZXgiLDYzNzE5LCJhcnJvd2xlZnQiLDg1OTIsImFycm93bGVmdGRibCIsODY1NiwiYXJyb3dsZWZ0ZGJsc3Ryb2tlIiw4NjUzLCJhcnJvd2xlZnRvdmVycmlnaHQiLDg2NDYsImFycm93bGVmdHdoaXRlIiw4Njc4LCJhcnJvd3JpZ2h0Iiw4NTk0LCJhcnJvd3JpZ2h0ZGJsc3Ryb2tlIiw4NjU1LCJhcnJvd3JpZ2h0aGVhdnkiLDEwMTQyLCJhcnJvd3JpZ2h0b3ZlcmxlZnQiLDg2NDQsImFycm93cmlnaHR3aGl0ZSIsODY4MCwiYXJyb3d0YWJsZWZ0Iiw4Njc2LCJhcnJvd3RhYnJpZ2h0Iiw4Njc3LCJhcnJvd3VwIiw4NTkzLCJhcnJvd3VwZG4iLDg1OTcsImFycm93dXBkbmJzZSIsODYxNiwiYXJyb3d1cGRvd25iYXNlIiw4NjE2LCJhcnJvd3VwbGVmdCIsODU5OCwiYXJyb3d1cGxlZnRvZmRvd24iLDg2NDUsImFycm93dXByaWdodCIsODU5OSwiYXJyb3d1cHdoaXRlIiw4Njc5LCJhcnJvd3ZlcnRleCIsNjM3MTgsImFzY2lpY2lyY3VtIiw5NCwiYXNjaWljaXJjdW1tb25vc3BhY2UiLDY1MzQyLCJhc2NpaXRpbGRlIiwxMjYsImFzY2lpdGlsZGVtb25vc3BhY2UiLDY1Mzc0LCJhc2NyaXB0Iiw1OTMsImFzY3JpcHR0dXJuZWQiLDU5NCwiYXNtYWxsaGlyYWdhbmEiLDEyMzUzLCJhc21hbGxrYXRha2FuYSIsMTI0NDksImFzbWFsbGthdGFrYW5haGFsZndpZHRoIiw2NTM4MywiYXN0ZXJpc2siLDQyLCJhc3Rlcmlza2FsdG9uZWFyYWJpYyIsMTY0NSwiYXN0ZXJpc2thcmFiaWMiLDE2NDUsImFzdGVyaXNrbWF0aCIsODcyNywiYXN0ZXJpc2ttb25vc3BhY2UiLDY1MjkwLCJhc3Rlcmlza3NtYWxsIiw2NTEyMSwiYXN0ZXJpc20iLDgyNTgsImFzdXBlcmlvciIsNjMyMDksImFzeW1wdG90aWNhbGx5ZXF1YWwiLDg3NzEsImF0Iiw2NCwiYXRpbGRlIiwyMjcsImF0bW9ub3NwYWNlIiw2NTMxMiwiYXRzbWFsbCIsNjUxMzEsImF0dXJuZWQiLDU5MiwiYXViZW5nYWxpIiwyNDUyLCJhdWJvcG9tb2ZvIiwxMjU3NiwiYXVkZXZhIiwyMzI0LCJhdWd1amFyYXRpIiwyNzA4LCJhdWd1cm11a2hpIiwyNTgwLCJhdWxlbmd0aG1hcmtiZW5nYWxpIiwyNTE5LCJhdW1hdHJhZ3VybXVraGkiLDI2MzYsImF1dm93ZWxzaWduYmVuZ2FsaSIsMjUwOCwiYXV2b3dlbHNpZ25kZXZhIiwyMzgwLCJhdXZvd2Vsc2lnbmd1amFyYXRpIiwyNzY0LCJhdmFncmFoYWRldmEiLDIzNjUsImF5YmFybWVuaWFuIiwxMzc3LCJheWluIiwxNTA2LCJheWluYWx0b25laGVicmV3Iiw2NDI4OCwiYXlpbmhlYnJldyIsMTUwNiwiYiIsOTgsImJhYmVuZ2FsaSIsMjQ3NiwiYmFja3NsYXNoIiw5MiwiYmFja3NsYXNobW9ub3NwYWNlIiw2NTM0MCwiYmFkZXZhIiwyMzQ4LCJiYWd1amFyYXRpIiwyNzMyLCJiYWd1cm11a2hpIiwyNjA0LCJiYWhpcmFnYW5hIiwxMjQwMCwiYmFodHRoYWkiLDM2NDcsImJha2F0YWthbmEiLDEyNDk2LCJiYXIiLDEyNCwiYmFybW9ub3NwYWNlIiw2NTM3MiwiYmJvcG9tb2ZvIiwxMjU0OSwiYmNpcmNsZSIsOTQyNSwiYmRvdGFjY2VudCIsNzY4MywiYmRvdGJlbG93Iiw3Njg1LCJiZWFtZWRzaXh0ZWVudGhub3RlcyIsOTgzNiwiYmVjYXVzZSIsODc1NywiYmVjeXJpbGxpYyIsMTA3MywiYmVoYXJhYmljIiwxNTc2LCJiZWhmaW5hbGFyYWJpYyIsNjUxNjgsImJlaGluaXRpYWxhcmFiaWMiLDY1MTY5LCJiZWhpcmFnYW5hIiwxMjQwOSwiYmVobWVkaWFsYXJhYmljIiw2NTE3MCwiYmVobWVlbWluaXRpYWxhcmFiaWMiLDY0NjcxLCJiZWhtZWVtaXNvbGF0ZWRhcmFiaWMiLDY0NTIwLCJiZWhub29uZmluYWxhcmFiaWMiLDY0NjIxLCJiZWthdGFrYW5hIiwxMjUwNSwiYmVuYXJtZW5pYW4iLDEzNzgsImJldCIsMTQ4OSwiYmV0YSIsOTQ2LCJiZXRhc3ltYm9sZ3JlZWsiLDk3NiwiYmV0ZGFnZXNoIiw2NDMwNSwiYmV0ZGFnZXNoaGVicmV3Iiw2NDMwNSwiYmV0aGVicmV3IiwxNDg5LCJiZXRyYWZlaGVicmV3Iiw2NDMzMiwiYmhhYmVuZ2FsaSIsMjQ3NywiYmhhZGV2YSIsMjM0OSwiYmhhZ3VqYXJhdGkiLDI3MzMsImJoYWd1cm11a2hpIiwyNjA1LCJiaG9vayIsNTk1LCJiaWhpcmFnYW5hIiwxMjQwMywiYmlrYXRha2FuYSIsMTI0OTksImJpbGFiaWFsY2xpY2siLDY2NCwiYmluZGlndXJtdWtoaSIsMjU2MiwiYmlydXNxdWFyZSIsMTMxMDUsImJsYWNrY2lyY2xlIiw5Njc5LCJibGFja2RpYW1vbmQiLDk2NzAsImJsYWNrZG93bnBvaW50aW5ndHJpYW5nbGUiLDk2NjAsImJsYWNrbGVmdHBvaW50aW5ncG9pbnRlciIsOTY2OCwiYmxhY2tsZWZ0cG9pbnRpbmd0cmlhbmdsZSIsOTY2NCwiYmxhY2tsZW50aWN1bGFyYnJhY2tldGxlZnQiLDEyMzA0LCJibGFja2xlbnRpY3VsYXJicmFja2V0bGVmdHZlcnRpY2FsIiw2NTA4MywiYmxhY2tsZW50aWN1bGFyYnJhY2tldHJpZ2h0IiwxMjMwNSwiYmxhY2tsZW50aWN1bGFyYnJhY2tldHJpZ2h0dmVydGljYWwiLDY1MDg0LCJibGFja2xvd2VybGVmdHRyaWFuZ2xlIiw5Njk5LCJibGFja2xvd2VycmlnaHR0cmlhbmdsZSIsOTY5OCwiYmxhY2tyZWN0YW5nbGUiLDk2NDQsImJsYWNrcmlnaHRwb2ludGluZ3BvaW50ZXIiLDk2NTgsImJsYWNrcmlnaHRwb2ludGluZ3RyaWFuZ2xlIiw5NjU0LCJibGFja3NtYWxsc3F1YXJlIiw5NjQyLCJibGFja3NtaWxpbmdmYWNlIiw5Nzg3LCJibGFja3NxdWFyZSIsOTYzMiwiYmxhY2tzdGFyIiw5NzMzLCJibGFja3VwcGVybGVmdHRyaWFuZ2xlIiw5NzAwLCJibGFja3VwcGVycmlnaHR0cmlhbmdsZSIsOTcwMSwiYmxhY2t1cHBvaW50aW5nc21hbGx0cmlhbmdsZSIsOTY1MiwiYmxhY2t1cHBvaW50aW5ndHJpYW5nbGUiLDk2NTAsImJsYW5rIiw5MjUxLCJibGluZWJlbG93Iiw3Njg3LCJibG9jayIsOTYwOCwiYm1vbm9zcGFjZSIsNjUzNDYsImJvYmFpbWFpdGhhaSIsMzYxMCwiYm9oaXJhZ2FuYSIsMTI0MTIsImJva2F0YWthbmEiLDEyNTA4LCJicGFyZW4iLDkzNzMsImJxc3F1YXJlIiwxMzI1MSwiYnJhY2VleCIsNjM3MzIsImJyYWNlbGVmdCIsMTIzLCJicmFjZWxlZnRidCIsNjM3MzEsImJyYWNlbGVmdG1pZCIsNjM3MzAsImJyYWNlbGVmdG1vbm9zcGFjZSIsNjUzNzEsImJyYWNlbGVmdHNtYWxsIiw2NTExNSwiYnJhY2VsZWZ0dHAiLDYzNzI5LCJicmFjZWxlZnR2ZXJ0aWNhbCIsNjUwNzksImJyYWNlcmlnaHQiLDEyNSwiYnJhY2VyaWdodGJ0Iiw2Mzc0MiwiYnJhY2VyaWdodG1pZCIsNjM3NDEsImJyYWNlcmlnaHRtb25vc3BhY2UiLDY1MzczLCJicmFjZXJpZ2h0c21hbGwiLDY1MTE2LCJicmFjZXJpZ2h0dHAiLDYzNzQwLCJicmFjZXJpZ2h0dmVydGljYWwiLDY1MDgwLCJicmFja2V0bGVmdCIsOTEsImJyYWNrZXRsZWZ0YnQiLDYzNzI4LCJicmFja2V0bGVmdGV4Iiw2MzcyNywiYnJhY2tldGxlZnRtb25vc3BhY2UiLDY1MzM5LCJicmFja2V0bGVmdHRwIiw2MzcyNiwiYnJhY2tldHJpZ2h0Iiw5MywiYnJhY2tldHJpZ2h0YnQiLDYzNzM5LCJicmFja2V0cmlnaHRleCIsNjM3MzgsImJyYWNrZXRyaWdodG1vbm9zcGFjZSIsNjUzNDEsImJyYWNrZXRyaWdodHRwIiw2MzczNywiYnJldmUiLDcyOCwiYnJldmViZWxvd2NtYiIsODE0LCJicmV2ZWNtYiIsNzc0LCJicmV2ZWludmVydGVkYmVsb3djbWIiLDgxNSwiYnJldmVpbnZlcnRlZGNtYiIsNzg1LCJicmV2ZWludmVydGVkZG91YmxlY21iIiw4NjUsImJyaWRnZWJlbG93Y21iIiw4MTAsImJyaWRnZWludmVydGVkYmVsb3djbWIiLDgyNiwiYnJva2VuYmFyIiwxNjYsImJzdHJva2UiLDM4NCwiYnN1cGVyaW9yIiw2MzIxMCwiYnRvcGJhciIsMzg3LCJidWhpcmFnYW5hIiwxMjQwNiwiYnVrYXRha2FuYSIsMTI1MDIsImJ1bGxldCIsODIyNiwiYnVsbGV0aW52ZXJzZSIsOTY4OCwiYnVsbGV0b3BlcmF0b3IiLDg3MjksImJ1bGxzZXllIiw5Njc4LCJjIiw5OSwiY2Fhcm1lbmlhbiIsMTM5MCwiY2FiZW5nYWxpIiwyNDU4LCJjYWN1dGUiLDI2MywiY2FkZXZhIiwyMzMwLCJjYWd1amFyYXRpIiwyNzE0LCJjYWd1cm11a2hpIiwyNTg2LCJjYWxzcXVhcmUiLDEzMTkyLCJjYW5kcmFiaW5kdWJlbmdhbGkiLDI0MzMsImNhbmRyYWJpbmR1Y21iIiw3ODQsImNhbmRyYWJpbmR1ZGV2YSIsMjMwNSwiY2FuZHJhYmluZHVndWphcmF0aSIsMjY4OSwiY2Fwc2xvY2siLDg2ODIsImNhcmVvZiIsODQ1MywiY2Fyb24iLDcxMSwiY2Fyb25iZWxvd2NtYiIsODEyLCJjYXJvbmNtYiIsNzgwLCJjYXJyaWFnZXJldHVybiIsODYyOSwiY2JvcG9tb2ZvIiwxMjU2OCwiY2Nhcm9uIiwyNjksImNjZWRpbGxhIiwyMzEsImNjZWRpbGxhYWN1dGUiLDc2ODksImNjaXJjbGUiLDk0MjYsImNjaXJjdW1mbGV4IiwyNjUsImNjdXJsIiw1OTcsImNkb3QiLDI2NywiY2RvdGFjY2VudCIsMjY3LCJjZHNxdWFyZSIsMTMyNTMsImNlZGlsbGEiLDE4NCwiY2VkaWxsYWNtYiIsODA3LCJjZW50IiwxNjIsImNlbnRpZ3JhZGUiLDg0NTEsImNlbnRpbmZlcmlvciIsNjMxOTksImNlbnRtb25vc3BhY2UiLDY1NTA0LCJjZW50b2xkc3R5bGUiLDYzMzk0LCJjZW50c3VwZXJpb3IiLDYzMjAwLCJjaGFhcm1lbmlhbiIsMTQwMSwiY2hhYmVuZ2FsaSIsMjQ1OSwiY2hhZGV2YSIsMjMzMSwiY2hhZ3VqYXJhdGkiLDI3MTUsImNoYWd1cm11a2hpIiwyNTg3LCJjaGJvcG9tb2ZvIiwxMjU2NCwiY2hlYWJraGFzaWFuY3lyaWxsaWMiLDEyMTMsImNoZWNrbWFyayIsMTAwMDMsImNoZWN5cmlsbGljIiwxMDk1LCJjaGVkZXNjZW5kZXJhYmtoYXNpYW5jeXJpbGxpYyIsMTIxNSwiY2hlZGVzY2VuZGVyY3lyaWxsaWMiLDEyMDcsImNoZWRpZXJlc2lzY3lyaWxsaWMiLDEyNjksImNoZWhhcm1lbmlhbiIsMTM5NSwiY2hla2hha2Fzc2lhbmN5cmlsbGljIiwxMjI4LCJjaGV2ZXJ0aWNhbHN0cm9rZWN5cmlsbGljIiwxMjA5LCJjaGkiLDk2NywiY2hpZXVjaGFjaXJjbGVrb3JlYW4iLDEyOTE5LCJjaGlldWNoYXBhcmVua29yZWFuIiwxMjgyMywiY2hpZXVjaGNpcmNsZWtvcmVhbiIsMTI5MDUsImNoaWV1Y2hrb3JlYW4iLDEyNjE4LCJjaGlldWNocGFyZW5rb3JlYW4iLDEyODA5LCJjaG9jaGFuZ3RoYWkiLDM1OTQsImNob2NoYW50aGFpIiwzNTkyLCJjaG9jaGluZ3RoYWkiLDM1OTMsImNob2Nob2V0aGFpIiwzNTk2LCJjaG9vayIsMzkyLCJjaWV1Y2FjaXJjbGVrb3JlYW4iLDEyOTE4LCJjaWV1Y2FwYXJlbmtvcmVhbiIsMTI4MjIsImNpZXVjY2lyY2xla29yZWFuIiwxMjkwNCwiY2lldWNrb3JlYW4iLDEyNjE2LCJjaWV1Y3BhcmVua29yZWFuIiwxMjgwOCwiY2lldWN1cGFyZW5rb3JlYW4iLDEyODI4LCJjaXJjbGUiLDk2NzUsImNpcmNsZWNvcHlydCIsMTY5LCJjaXJjbGVtdWx0aXBseSIsODg1NSwiY2lyY2xlb3QiLDg4NTcsImNpcmNsZXBsdXMiLDg4NTMsImNpcmNsZXBvc3RhbG1hcmsiLDEyMzQyLCJjaXJjbGV3aXRobGVmdGhhbGZibGFjayIsOTY4MCwiY2lyY2xld2l0aHJpZ2h0aGFsZmJsYWNrIiw5NjgxLCJjaXJjdW1mbGV4Iiw3MTAsImNpcmN1bWZsZXhiZWxvd2NtYiIsODEzLCJjaXJjdW1mbGV4Y21iIiw3NzAsImNsZWFyIiw4OTk5LCJjbGlja2FsdmVvbGFyIiw0NTAsImNsaWNrZGVudGFsIiw0NDgsImNsaWNrbGF0ZXJhbCIsNDQ5LCJjbGlja3JldHJvZmxleCIsNDUxLCJjbHViIiw5ODI3LCJjbHVic3VpdGJsYWNrIiw5ODI3LCJjbHVic3VpdHdoaXRlIiw5ODMxLCJjbWN1YmVkc3F1YXJlIiwxMzIyMCwiY21vbm9zcGFjZSIsNjUzNDcsImNtc3F1YXJlZHNxdWFyZSIsMTMyMTYsImNvYXJtZW5pYW4iLDE0MDksImNvbG9uIiw1OCwiY29sb25tb25ldGFyeSIsODM1MywiY29sb25tb25vc3BhY2UiLDY1MzA2LCJjb2xvbnNpZ24iLDgzNTMsImNvbG9uc21hbGwiLDY1MTA5LCJjb2xvbnRyaWFuZ3VsYXJoYWxmbW9kIiw3MjEsImNvbG9udHJpYW5ndWxhcm1vZCIsNzIwLCJjb21tYSIsNDQsImNvbW1hYWJvdmVjbWIiLDc4NywiY29tbWFhYm92ZXJpZ2h0Y21iIiw3ODksImNvbW1hYWNjZW50Iiw2MzE3MSwiY29tbWFhcmFiaWMiLDE1NDgsImNvbW1hYXJtZW5pYW4iLDEzNzMsImNvbW1haW5mZXJpb3IiLDYzMjAxLCJjb21tYW1vbm9zcGFjZSIsNjUyOTIsImNvbW1hcmV2ZXJzZWRhYm92ZWNtYiIsNzg4LCJjb21tYXJldmVyc2VkbW9kIiw3MDEsImNvbW1hc21hbGwiLDY1MTA0LCJjb21tYXN1cGVyaW9yIiw2MzIwMiwiY29tbWF0dXJuZWRhYm92ZWNtYiIsNzg2LCJjb21tYXR1cm5lZG1vZCIsNjk5LCJjb21wYXNzIiw5Nzg4LCJjb25ncnVlbnQiLDg3NzMsImNvbnRvdXJpbnRlZ3JhbCIsODc1MCwiY29udHJvbCIsODk2MywiY29udHJvbEFDSyIsNiwiY29udHJvbEJFTCIsNywiY29udHJvbEJTIiw4LCJjb250cm9sQ0FOIiwyNCwiY29udHJvbENSIiwxMywiY29udHJvbERDMSIsMTcsImNvbnRyb2xEQzIiLDE4LCJjb250cm9sREMzIiwxOSwiY29udHJvbERDNCIsMjAsImNvbnRyb2xERUwiLDEyNywiY29udHJvbERMRSIsMTYsImNvbnRyb2xFTSIsMjUsImNvbnRyb2xFTlEiLDUsImNvbnRyb2xFT1QiLDQsImNvbnRyb2xFU0MiLDI3LCJjb250cm9sRVRCIiwyMywiY29udHJvbEVUWCIsMywiY29udHJvbEZGIiwxMiwiY29udHJvbEZTIiwyOCwiY29udHJvbEdTIiwyOSwiY29udHJvbEhUIiw5LCJjb250cm9sTEYiLDEwLCJjb250cm9sTkFLIiwyMSwiY29udHJvbE5VTEwiLDAsImNvbnRyb2xSUyIsMzAsImNvbnRyb2xTSSIsMTUsImNvbnRyb2xTTyIsMTQsImNvbnRyb2xTT1QiLDIsImNvbnRyb2xTVFgiLDEsImNvbnRyb2xTVUIiLDI2LCJjb250cm9sU1lOIiwyMiwiY29udHJvbFVTIiwzMSwiY29udHJvbFZUIiwxMSwiY29weXJpZ2h0IiwxNjksImNvcHlyaWdodHNhbnMiLDYzNzIxLCJjb3B5cmlnaHRzZXJpZiIsNjMxOTMsImNvcm5lcmJyYWNrZXRsZWZ0IiwxMjMwMCwiY29ybmVyYnJhY2tldGxlZnRoYWxmd2lkdGgiLDY1Mzc4LCJjb3JuZXJicmFja2V0bGVmdHZlcnRpY2FsIiw2NTA4OSwiY29ybmVyYnJhY2tldHJpZ2h0IiwxMjMwMSwiY29ybmVyYnJhY2tldHJpZ2h0aGFsZndpZHRoIiw2NTM3OSwiY29ybmVyYnJhY2tldHJpZ2h0dmVydGljYWwiLDY1MDkwLCJjb3Jwb3JhdGlvbnNxdWFyZSIsMTMxODMsImNvc3F1YXJlIiwxMzI1NSwiY292ZXJrZ3NxdWFyZSIsMTMyNTQsImNwYXJlbiIsOTM3NCwiY3J1emVpcm8iLDgzNTQsImNzdHJldGNoZWQiLDY2MywiY3VybHlhbmQiLDg5MTEsImN1cmx5b3IiLDg5MTAsImN1cnJlbmN5IiwxNjQsImN5ckJyZXZlIiw2MzE4NSwiY3lyRmxleCIsNjMxODYsImN5cmJyZXZlIiw2MzE4OCwiY3lyZmxleCIsNjMxODksImQiLDEwMCwiZGFhcm1lbmlhbiIsMTM4MCwiZGFiZW5nYWxpIiwyNDcwLCJkYWRhcmFiaWMiLDE1OTAsImRhZGV2YSIsMjM0MiwiZGFkZmluYWxhcmFiaWMiLDY1MjE0LCJkYWRpbml0aWFsYXJhYmljIiw2NTIxNSwiZGFkbWVkaWFsYXJhYmljIiw2NTIxNiwiZGFnZXNoIiwxNDY4LCJkYWdlc2hoZWJyZXciLDE0NjgsImRhZ2dlciIsODIyNCwiZGFnZ2VyZGJsIiw4MjI1LCJkYWd1amFyYXRpIiwyNzI2LCJkYWd1cm11a2hpIiwyNTk4LCJkYWhpcmFnYW5hIiwxMjM4NCwiZGFrYXRha2FuYSIsMTI0ODAsImRhbGFyYWJpYyIsMTU4MywiZGFsZXQiLDE0OTEsImRhbGV0ZGFnZXNoIiw2NDMwNywiZGFsZXRkYWdlc2hoZWJyZXciLDY0MzA3LCJkYWxldGhlYnJldyIsMTQ5MSwiZGFsZmluYWxhcmFiaWMiLDY1MTk0LCJkYW1tYWFyYWJpYyIsMTYxNSwiZGFtbWFsb3dhcmFiaWMiLDE2MTUsImRhbW1hdGFuYWx0b25lYXJhYmljIiwxNjEyLCJkYW1tYXRhbmFyYWJpYyIsMTYxMiwiZGFuZGEiLDI0MDQsImRhcmdhaGVicmV3IiwxNDQ3LCJkYXJnYWxlZnRoZWJyZXciLDE0NDcsImRhc2lhcG5ldW1hdGFjeXJpbGxpY2NtYiIsMTE1NywiZGJsR3JhdmUiLDYzMTg3LCJkYmxhbmdsZWJyYWNrZXRsZWZ0IiwxMjI5OCwiZGJsYW5nbGVicmFja2V0bGVmdHZlcnRpY2FsIiw2NTA4NSwiZGJsYW5nbGVicmFja2V0cmlnaHQiLDEyMjk5LCJkYmxhbmdsZWJyYWNrZXRyaWdodHZlcnRpY2FsIiw2NTA4NiwiZGJsYXJjaGludmVydGVkYmVsb3djbWIiLDgxMSwiZGJsYXJyb3dsZWZ0Iiw4NjYwLCJkYmxhcnJvd3JpZ2h0Iiw4NjU4LCJkYmxkYW5kYSIsMjQwNSwiZGJsZ3JhdmUiLDYzMTkwLCJkYmxncmF2ZWNtYiIsNzgzLCJkYmxpbnRlZ3JhbCIsODc0OCwiZGJsbG93bGluZSIsODIxNSwiZGJsbG93bGluZWNtYiIsODE5LCJkYmxvdmVybGluZWNtYiIsODMxLCJkYmxwcmltZW1vZCIsNjk4LCJkYmx2ZXJ0aWNhbGJhciIsODIxNCwiZGJsdmVydGljYWxsaW5lYWJvdmVjbWIiLDc4MiwiZGJvcG9tb2ZvIiwxMjU1MywiZGJzcXVhcmUiLDEzMjU2LCJkY2Fyb24iLDI3MSwiZGNlZGlsbGEiLDc2OTcsImRjaXJjbGUiLDk0MjcsImRjaXJjdW1mbGV4YmVsb3ciLDc2OTksImRjcm9hdCIsMjczLCJkZGFiZW5nYWxpIiwyNDY1LCJkZGFkZXZhIiwyMzM3LCJkZGFndWphcmF0aSIsMjcyMSwiZGRhZ3VybXVraGkiLDI1OTMsImRkYWxhcmFiaWMiLDE2NzIsImRkYWxmaW5hbGFyYWJpYyIsNjQzOTMsImRkZGhhZGV2YSIsMjM5NiwiZGRoYWJlbmdhbGkiLDI0NjYsImRkaGFkZXZhIiwyMzM4LCJkZGhhZ3VqYXJhdGkiLDI3MjIsImRkaGFndXJtdWtoaSIsMjU5NCwiZGRvdGFjY2VudCIsNzY5MSwiZGRvdGJlbG93Iiw3NjkzLCJkZWNpbWFsc2VwYXJhdG9yYXJhYmljIiwxNjQzLCJkZWNpbWFsc2VwYXJhdG9ycGVyc2lhbiIsMTY0MywiZGVjeXJpbGxpYyIsMTA3NiwiZGVncmVlIiwxNzYsImRlaGloZWJyZXciLDE0NTMsImRlaGlyYWdhbmEiLDEyMzkxLCJkZWljb3B0aWMiLDEwMDcsImRla2F0YWthbmEiLDEyNDg3LCJkZWxldGVsZWZ0Iiw5MDAzLCJkZWxldGVyaWdodCIsODk5OCwiZGVsdGEiLDk0OCwiZGVsdGF0dXJuZWQiLDM5NywiZGVub21pbmF0b3JtaW51c29uZW51bWVyYXRvcmJlbmdhbGkiLDI1NTIsImRlemgiLDY3NiwiZGhhYmVuZ2FsaSIsMjQ3MSwiZGhhZGV2YSIsMjM0MywiZGhhZ3VqYXJhdGkiLDI3MjcsImRoYWd1cm11a2hpIiwyNTk5LCJkaG9vayIsNTk5LCJkaWFseXRpa2F0b25vcyIsOTAxLCJkaWFseXRpa2F0b25vc2NtYiIsODM2LCJkaWFtb25kIiw5ODMwLCJkaWFtb25kc3VpdHdoaXRlIiw5ODI2LCJkaWVyZXNpcyIsMTY4LCJkaWVyZXNpc2FjdXRlIiw2MzE5MSwiZGllcmVzaXNiZWxvd2NtYiIsODA0LCJkaWVyZXNpc2NtYiIsNzc2LCJkaWVyZXNpc2dyYXZlIiw2MzE5MiwiZGllcmVzaXN0b25vcyIsOTAxLCJkaWhpcmFnYW5hIiwxMjM4NiwiZGlrYXRha2FuYSIsMTI0ODIsImRpdHRvbWFyayIsMTIyOTEsImRpdmlkZSIsMjQ3LCJkaXZpZGVzIiw4NzM5LCJkaXZpc2lvbnNsYXNoIiw4NzI1LCJkamVjeXJpbGxpYyIsMTEwNiwiZGtzaGFkZSIsOTYxOSwiZGxpbmViZWxvdyIsNzY5NSwiZGxzcXVhcmUiLDEzMjA3LCJkbWFjcm9uIiwyNzMsImRtb25vc3BhY2UiLDY1MzQ4LCJkbmJsb2NrIiw5NjA0LCJkb2NoYWRhdGhhaSIsMzU5OCwiZG9kZWt0aGFpIiwzNjA0LCJkb2hpcmFnYW5hIiwxMjM5MywiZG9rYXRha2FuYSIsMTI0ODksImRvbGxhciIsMzYsImRvbGxhcmluZmVyaW9yIiw2MzIwMywiZG9sbGFybW9ub3NwYWNlIiw2NTI4NCwiZG9sbGFyb2xkc3R5bGUiLDYzMjY4LCJkb2xsYXJzbWFsbCIsNjUxMjksImRvbGxhcnN1cGVyaW9yIiw2MzIwNCwiZG9uZyIsODM2MywiZG9ydXNxdWFyZSIsMTMwOTQsImRvdGFjY2VudCIsNzI5LCJkb3RhY2NlbnRjbWIiLDc3NSwiZG90YmVsb3djbWIiLDgwMywiZG90YmVsb3djb21iIiw4MDMsImRvdGthdGFrYW5hIiwxMjUzOSwiZG90bGVzc2kiLDMwNSwiZG90bGVzc2oiLDYzMTY2LCJkb3RsZXNzanN0cm9rZWhvb2siLDY0NCwiZG90bWF0aCIsODkwMSwiZG90dGVkY2lyY2xlIiw5Njc2LCJkb3VibGV5b2RwYXRhaCIsNjQyODcsImRvdWJsZXlvZHBhdGFoaGVicmV3Iiw2NDI4NywiZG93bnRhY2tiZWxvd2NtYiIsNzk4LCJkb3dudGFja21vZCIsNzI1LCJkcGFyZW4iLDkzNzUsImRzdXBlcmlvciIsNjMyMTEsImR0YWlsIiw1OTgsImR0b3BiYXIiLDM5NiwiZHVoaXJhZ2FuYSIsMTIzODksImR1a2F0YWthbmEiLDEyNDg1LCJkeiIsNDk5LCJkemFsdG9uZSIsNjc1LCJkemNhcm9uIiw0NTQsImR6Y3VybCIsNjc3LCJkemVhYmtoYXNpYW5jeXJpbGxpYyIsMTI0OSwiZHplY3lyaWxsaWMiLDExMDksImR6aGVjeXJpbGxpYyIsMTExOSwiZSIsMTAxLCJlYWN1dGUiLDIzMywiZWFydGgiLDk3OTMsImViZW5nYWxpIiwyNDQ3LCJlYm9wb21vZm8iLDEyNTcyLCJlYnJldmUiLDI3NywiZWNhbmRyYWRldmEiLDIzMTcsImVjYW5kcmFndWphcmF0aSIsMjcwMSwiZWNhbmRyYXZvd2Vsc2lnbmRldmEiLDIzNzMsImVjYW5kcmF2b3dlbHNpZ25ndWphcmF0aSIsMjc1NywiZWNhcm9uIiwyODMsImVjZWRpbGxhYnJldmUiLDc3MDksImVjaGFybWVuaWFuIiwxMzgxLCJlY2h5aXduYXJtZW5pYW4iLDE0MTUsImVjaXJjbGUiLDk0MjgsImVjaXJjdW1mbGV4IiwyMzQsImVjaXJjdW1mbGV4YWN1dGUiLDc4NzEsImVjaXJjdW1mbGV4YmVsb3ciLDc3MDUsImVjaXJjdW1mbGV4ZG90YmVsb3ciLDc4NzksImVjaXJjdW1mbGV4Z3JhdmUiLDc4NzMsImVjaXJjdW1mbGV4aG9va2Fib3ZlIiw3ODc1LCJlY2lyY3VtZmxleHRpbGRlIiw3ODc3LCJlY3lyaWxsaWMiLDExMDgsImVkYmxncmF2ZSIsNTE3LCJlZGV2YSIsMjMxOSwiZWRpZXJlc2lzIiwyMzUsImVkb3QiLDI3OSwiZWRvdGFjY2VudCIsMjc5LCJlZG90YmVsb3ciLDc4NjUsImVlZ3VybXVraGkiLDI1NzUsImVlbWF0cmFndXJtdWtoaSIsMjYzMSwiZWZjeXJpbGxpYyIsMTA5MiwiZWdyYXZlIiwyMzIsImVndWphcmF0aSIsMjcwMywiZWhhcm1lbmlhbiIsMTM4MywiZWhib3BvbW9mbyIsMTI1NzMsImVoaXJhZ2FuYSIsMTIzNjAsImVob29rYWJvdmUiLDc4NjcsImVpYm9wb21vZm8iLDEyNTc1LCJlaWdodCIsNTYsImVpZ2h0YXJhYmljIiwxNjQwLCJlaWdodGJlbmdhbGkiLDI1NDIsImVpZ2h0Y2lyY2xlIiw5MzE5LCJlaWdodGNpcmNsZWludmVyc2VzYW5zc2VyaWYiLDEwMTI5LCJlaWdodGRldmEiLDI0MTQsImVpZ2h0ZWVuY2lyY2xlIiw5MzI5LCJlaWdodGVlbnBhcmVuIiw5MzQ5LCJlaWdodGVlbnBlcmlvZCIsOTM2OSwiZWlnaHRndWphcmF0aSIsMjc5OCwiZWlnaHRndXJtdWtoaSIsMjY3MCwiZWlnaHRoYWNrYXJhYmljIiwxNjQwLCJlaWdodGhhbmd6aG91IiwxMjMyOCwiZWlnaHRobm90ZWJlYW1lZCIsOTgzNSwiZWlnaHRpZGVvZ3JhcGhpY3BhcmVuIiwxMjgzOSwiZWlnaHRpbmZlcmlvciIsODMyOCwiZWlnaHRtb25vc3BhY2UiLDY1MzA0LCJlaWdodG9sZHN0eWxlIiw2MzI4OCwiZWlnaHRwYXJlbiIsOTMzOSwiZWlnaHRwZXJpb2QiLDkzNTksImVpZ2h0cGVyc2lhbiIsMTc4NCwiZWlnaHRyb21hbiIsODU2NywiZWlnaHRzdXBlcmlvciIsODMxMiwiZWlnaHR0aGFpIiwzNjcyLCJlaW52ZXJ0ZWRicmV2ZSIsNTE5LCJlaW90aWZpZWRjeXJpbGxpYyIsMTEyNSwiZWthdGFrYW5hIiwxMjQ1NiwiZWthdGFrYW5haGFsZndpZHRoIiw2NTM5NiwiZWtvbmthcmd1cm11a2hpIiwyNjc2LCJla29yZWFuIiwxMjYyOCwiZWxjeXJpbGxpYyIsMTA4MywiZWxlbWVudCIsODcxMiwiZWxldmVuY2lyY2xlIiw5MzIyLCJlbGV2ZW5wYXJlbiIsOTM0MiwiZWxldmVucGVyaW9kIiw5MzYyLCJlbGV2ZW5yb21hbiIsODU3MCwiZWxsaXBzaXMiLDgyMzAsImVsbGlwc2lzdmVydGljYWwiLDg5NDIsImVtYWNyb24iLDI3NSwiZW1hY3JvbmFjdXRlIiw3NzAzLCJlbWFjcm9uZ3JhdmUiLDc3MDEsImVtY3lyaWxsaWMiLDEwODQsImVtZGFzaCIsODIxMiwiZW1kYXNodmVydGljYWwiLDY1MDczLCJlbW9ub3NwYWNlIiw2NTM0OSwiZW1waGFzaXNtYXJrYXJtZW5pYW4iLDEzNzEsImVtcHR5c2V0Iiw4NzA5LCJlbmJvcG9tb2ZvIiwxMjU3OSwiZW5jeXJpbGxpYyIsMTA4NSwiZW5kYXNoIiw4MjExLCJlbmRhc2h2ZXJ0aWNhbCIsNjUwNzQsImVuZGVzY2VuZGVyY3lyaWxsaWMiLDExODcsImVuZyIsMzMxLCJlbmdib3BvbW9mbyIsMTI1ODEsImVuZ2hlY3lyaWxsaWMiLDExODksImVuaG9va2N5cmlsbGljIiwxMjI0LCJlbnNwYWNlIiw4MTk0LCJlb2dvbmVrIiwyODEsImVva29yZWFuIiwxMjYyNywiZW9wZW4iLDYwMywiZW9wZW5jbG9zZWQiLDY2NiwiZW9wZW5yZXZlcnNlZCIsNjA0LCJlb3BlbnJldmVyc2VkY2xvc2VkIiw2MDYsImVvcGVucmV2ZXJzZWRob29rIiw2MDUsImVwYXJlbiIsOTM3NiwiZXBzaWxvbiIsOTQ5LCJlcHNpbG9udG9ub3MiLDk0MSwiZXF1YWwiLDYxLCJlcXVhbG1vbm9zcGFjZSIsNjUzMDksImVxdWFsc21hbGwiLDY1MTI2LCJlcXVhbHN1cGVyaW9yIiw4MzE2LCJlcXVpdmFsZW5jZSIsODgwMSwiZXJib3BvbW9mbyIsMTI1ODIsImVyY3lyaWxsaWMiLDEwODgsImVyZXZlcnNlZCIsNjAwLCJlcmV2ZXJzZWRjeXJpbGxpYyIsMTEwMSwiZXNjeXJpbGxpYyIsMTA4OSwiZXNkZXNjZW5kZXJjeXJpbGxpYyIsMTE5NSwiZXNoIiw2NDMsImVzaGN1cmwiLDY0NiwiZXNob3J0ZGV2YSIsMjMxOCwiZXNob3J0dm93ZWxzaWduZGV2YSIsMjM3NCwiZXNocmV2ZXJzZWRsb29wIiw0MjYsImVzaHNxdWF0cmV2ZXJzZWQiLDY0NSwiZXNtYWxsaGlyYWdhbmEiLDEyMzU5LCJlc21hbGxrYXRha2FuYSIsMTI0NTUsImVzbWFsbGthdGFrYW5haGFsZndpZHRoIiw2NTM4NiwiZXN0aW1hdGVkIiw4NDk0LCJlc3VwZXJpb3IiLDYzMjEyLCJldGEiLDk1MSwiZXRhcm1lbmlhbiIsMTM4NCwiZXRhdG9ub3MiLDk0MiwiZXRoIiwyNDAsImV0aWxkZSIsNzg2OSwiZXRpbGRlYmVsb3ciLDc3MDcsImV0bmFodGFmb3VraGhlYnJldyIsMTQyNSwiZXRuYWh0YWZvdWtobGVmdGhlYnJldyIsMTQyNSwiZXRuYWh0YWhlYnJldyIsMTQyNSwiZXRuYWh0YWxlZnRoZWJyZXciLDE0MjUsImV0dXJuZWQiLDQ3NywiZXVrb3JlYW4iLDEyNjQxLCJldXJvIiw4MzY0LCJldm93ZWxzaWduYmVuZ2FsaSIsMjUwMywiZXZvd2Vsc2lnbmRldmEiLDIzNzUsImV2b3dlbHNpZ25ndWphcmF0aSIsMjc1OSwiZXhjbGFtIiwzMywiZXhjbGFtYXJtZW5pYW4iLDEzNzIsImV4Y2xhbWRibCIsODI1MiwiZXhjbGFtZG93biIsMTYxLCJleGNsYW1kb3duc21hbGwiLDYzMzkzLCJleGNsYW1tb25vc3BhY2UiLDY1MjgxLCJleGNsYW1zbWFsbCIsNjMyNjUsImV4aXN0ZW50aWFsIiw4NzA3LCJlemgiLDY1OCwiZXpoY2Fyb24iLDQ5NSwiZXpoY3VybCIsNjU5LCJlemhyZXZlcnNlZCIsNDQxLCJlemh0YWlsIiw0NDIsImYiLDEwMiwiZmFkZXZhIiwyMzk4LCJmYWd1cm11a2hpIiwyNjU0LCJmYWhyZW5oZWl0Iiw4NDU3LCJmYXRoYWFyYWJpYyIsMTYxNCwiZmF0aGFsb3dhcmFiaWMiLDE2MTQsImZhdGhhdGFuYXJhYmljIiwxNjExLCJmYm9wb21vZm8iLDEyNTUyLCJmY2lyY2xlIiw5NDI5LCJmZG90YWNjZW50Iiw3NzExLCJmZWhhcmFiaWMiLDE2MDEsImZlaGFybWVuaWFuIiwxNDE0LCJmZWhmaW5hbGFyYWJpYyIsNjUyMzQsImZlaGluaXRpYWxhcmFiaWMiLDY1MjM1LCJmZWhtZWRpYWxhcmFiaWMiLDY1MjM2LCJmZWljb3B0aWMiLDk5NywiZmVtYWxlIiw5NzkyLCJmZiIsNjQyNTYsImZfZiIsNjQyNTYsImZmaSIsNjQyNTksImZfZl9pIiw2NDI1OSwiZmZsIiw2NDI2MCwiZl9mX2wiLDY0MjYwLCJmaSIsNjQyNTcsImZfaSIsNjQyNTcsImZpZnRlZW5jaXJjbGUiLDkzMjYsImZpZnRlZW5wYXJlbiIsOTM0NiwiZmlmdGVlbnBlcmlvZCIsOTM2NiwiZmlndXJlZGFzaCIsODIxMCwiZmlsbGVkYm94Iiw5NjMyLCJmaWxsZWRyZWN0Iiw5NjQ0LCJmaW5hbGthZiIsMTQ5OCwiZmluYWxrYWZkYWdlc2giLDY0MzE0LCJmaW5hbGthZmRhZ2VzaGhlYnJldyIsNjQzMTQsImZpbmFsa2FmaGVicmV3IiwxNDk4LCJmaW5hbG1lbSIsMTUwMSwiZmluYWxtZW1oZWJyZXciLDE1MDEsImZpbmFsbnVuIiwxNTAzLCJmaW5hbG51bmhlYnJldyIsMTUwMywiZmluYWxwZSIsMTUwNywiZmluYWxwZWhlYnJldyIsMTUwNywiZmluYWx0c2FkaSIsMTUwOSwiZmluYWx0c2FkaWhlYnJldyIsMTUwOSwiZmlyc3R0b25lY2hpbmVzZSIsNzEzLCJmaXNoZXllIiw5NjczLCJmaXRhY3lyaWxsaWMiLDExMzksImZpdmUiLDUzLCJmaXZlYXJhYmljIiwxNjM3LCJmaXZlYmVuZ2FsaSIsMjUzOSwiZml2ZWNpcmNsZSIsOTMxNiwiZml2ZWNpcmNsZWludmVyc2VzYW5zc2VyaWYiLDEwMTI2LCJmaXZlZGV2YSIsMjQxMSwiZml2ZWVpZ2h0aHMiLDg1NDEsImZpdmVndWphcmF0aSIsMjc5NSwiZml2ZWd1cm11a2hpIiwyNjY3LCJmaXZlaGFja2FyYWJpYyIsMTYzNywiZml2ZWhhbmd6aG91IiwxMjMyNSwiZml2ZWlkZW9ncmFwaGljcGFyZW4iLDEyODM2LCJmaXZlaW5mZXJpb3IiLDgzMjUsImZpdmVtb25vc3BhY2UiLDY1MzAxLCJmaXZlb2xkc3R5bGUiLDYzMjg1LCJmaXZlcGFyZW4iLDkzMzYsImZpdmVwZXJpb2QiLDkzNTYsImZpdmVwZXJzaWFuIiwxNzgxLCJmaXZlcm9tYW4iLDg1NjQsImZpdmVzdXBlcmlvciIsODMwOSwiZml2ZXRoYWkiLDM2NjksImZsIiw2NDI1OCwiZl9sIiw2NDI1OCwiZmxvcmluIiw0MDIsImZtb25vc3BhY2UiLDY1MzUwLCJmbXNxdWFyZSIsMTMyMDksImZvZmFudGhhaSIsMzYxNSwiZm9mYXRoYWkiLDM2MTMsImZvbmdtYW50aGFpIiwzNjYzLCJmb3JhbGwiLDg3MDQsImZvdXIiLDUyLCJmb3VyYXJhYmljIiwxNjM2LCJmb3VyYmVuZ2FsaSIsMjUzOCwiZm91cmNpcmNsZSIsOTMxNSwiZm91cmNpcmNsZWludmVyc2VzYW5zc2VyaWYiLDEwMTI1LCJmb3VyZGV2YSIsMjQxMCwiZm91cmd1amFyYXRpIiwyNzk0LCJmb3VyZ3VybXVraGkiLDI2NjYsImZvdXJoYWNrYXJhYmljIiwxNjM2LCJmb3VyaGFuZ3pob3UiLDEyMzI0LCJmb3VyaWRlb2dyYXBoaWNwYXJlbiIsMTI4MzUsImZvdXJpbmZlcmlvciIsODMyNCwiZm91cm1vbm9zcGFjZSIsNjUzMDAsImZvdXJudW1lcmF0b3JiZW5nYWxpIiwyNTUxLCJmb3Vyb2xkc3R5bGUiLDYzMjg0LCJmb3VycGFyZW4iLDkzMzUsImZvdXJwZXJpb2QiLDkzNTUsImZvdXJwZXJzaWFuIiwxNzgwLCJmb3Vycm9tYW4iLDg1NjMsImZvdXJzdXBlcmlvciIsODMwOCwiZm91cnRlZW5jaXJjbGUiLDkzMjUsImZvdXJ0ZWVucGFyZW4iLDkzNDUsImZvdXJ0ZWVucGVyaW9kIiw5MzY1LCJmb3VydGhhaSIsMzY2OCwiZm91cnRodG9uZWNoaW5lc2UiLDcxNSwiZnBhcmVuIiw5Mzc3LCJmcmFjdGlvbiIsODI2MCwiZnJhbmMiLDgzNTUsImciLDEwMywiZ2FiZW5nYWxpIiwyNDU1LCJnYWN1dGUiLDUwMSwiZ2FkZXZhIiwyMzI3LCJnYWZhcmFiaWMiLDE3MTEsImdhZmZpbmFsYXJhYmljIiw2NDQwMywiZ2FmaW5pdGlhbGFyYWJpYyIsNjQ0MDQsImdhZm1lZGlhbGFyYWJpYyIsNjQ0MDUsImdhZ3VqYXJhdGkiLDI3MTEsImdhZ3VybXVraGkiLDI1ODMsImdhaGlyYWdhbmEiLDEyMzY0LCJnYWthdGFrYW5hIiwxMjQ2MCwiZ2FtbWEiLDk0NywiZ2FtbWFsYXRpbnNtYWxsIiw2MTEsImdhbW1hc3VwZXJpb3IiLDczNiwiZ2FuZ2lhY29wdGljIiwxMDAzLCJnYm9wb21vZm8iLDEyNTU3LCJnYnJldmUiLDI4NywiZ2Nhcm9uIiw0ODcsImdjZWRpbGxhIiwyOTEsImdjaXJjbGUiLDk0MzAsImdjaXJjdW1mbGV4IiwyODUsImdjb21tYWFjY2VudCIsMjkxLCJnZG90IiwyODksImdkb3RhY2NlbnQiLDI4OSwiZ2VjeXJpbGxpYyIsMTA3NSwiZ2VoaXJhZ2FuYSIsMTIzNzAsImdla2F0YWthbmEiLDEyNDY2LCJnZW9tZXRyaWNhbGx5ZXF1YWwiLDg3ODUsImdlcmVzaGFjY2VudGhlYnJldyIsMTQzNiwiZ2VyZXNoaGVicmV3IiwxNTIzLCJnZXJlc2htdXFkYW1oZWJyZXciLDE0MzcsImdlcm1hbmRibHMiLDIyMywiZ2Vyc2hheWltYWNjZW50aGVicmV3IiwxNDM4LCJnZXJzaGF5aW1oZWJyZXciLDE1MjQsImdldGFtYXJrIiwxMjMwNywiZ2hhYmVuZ2FsaSIsMjQ1NiwiZ2hhZGFybWVuaWFuIiwxMzk0LCJnaGFkZXZhIiwyMzI4LCJnaGFndWphcmF0aSIsMjcxMiwiZ2hhZ3VybXVraGkiLDI1ODQsImdoYWluYXJhYmljIiwxNTk0LCJnaGFpbmZpbmFsYXJhYmljIiw2NTIzMCwiZ2hhaW5pbml0aWFsYXJhYmljIiw2NTIzMSwiZ2hhaW5tZWRpYWxhcmFiaWMiLDY1MjMyLCJnaGVtaWRkbGVob29rY3lyaWxsaWMiLDExNzMsImdoZXN0cm9rZWN5cmlsbGljIiwxMTcxLCJnaGV1cHR1cm5jeXJpbGxpYyIsMTE2OSwiZ2hoYWRldmEiLDIzOTQsImdoaGFndXJtdWtoaSIsMjY1MCwiZ2hvb2siLDYwOCwiZ2h6c3F1YXJlIiwxMzIwMywiZ2loaXJhZ2FuYSIsMTIzNjYsImdpa2F0YWthbmEiLDEyNDYyLCJnaW1hcm1lbmlhbiIsMTM3OSwiZ2ltZWwiLDE0OTAsImdpbWVsZGFnZXNoIiw2NDMwNiwiZ2ltZWxkYWdlc2hoZWJyZXciLDY0MzA2LCJnaW1lbGhlYnJldyIsMTQ5MCwiZ2plY3lyaWxsaWMiLDExMDcsImdsb3R0YWxpbnZlcnRlZHN0cm9rZSIsNDQ2LCJnbG90dGFsc3RvcCIsNjYwLCJnbG90dGFsc3RvcGludmVydGVkIiw2NjIsImdsb3R0YWxzdG9wbW9kIiw3MDQsImdsb3R0YWxzdG9wcmV2ZXJzZWQiLDY2MSwiZ2xvdHRhbHN0b3ByZXZlcnNlZG1vZCIsNzA1LCJnbG90dGFsc3RvcHJldmVyc2Vkc3VwZXJpb3IiLDc0MCwiZ2xvdHRhbHN0b3BzdHJva2UiLDY3MywiZ2xvdHRhbHN0b3BzdHJva2VyZXZlcnNlZCIsNjc0LCJnbWFjcm9uIiw3NzEzLCJnbW9ub3NwYWNlIiw2NTM1MSwiZ29oaXJhZ2FuYSIsMTIzNzIsImdva2F0YWthbmEiLDEyNDY4LCJncGFyZW4iLDkzNzgsImdwYXNxdWFyZSIsMTMyMjgsImdyYWRpZW50Iiw4NzExLCJncmF2ZSIsOTYsImdyYXZlYmVsb3djbWIiLDc5MCwiZ3JhdmVjbWIiLDc2OCwiZ3JhdmVjb21iIiw3NjgsImdyYXZlZGV2YSIsMjM4NywiZ3JhdmVsb3dtb2QiLDcxOCwiZ3JhdmVtb25vc3BhY2UiLDY1MzQ0LCJncmF2ZXRvbmVjbWIiLDgzMiwiZ3JlYXRlciIsNjIsImdyZWF0ZXJlcXVhbCIsODgwNSwiZ3JlYXRlcmVxdWFsb3JsZXNzIiw4OTIzLCJncmVhdGVybW9ub3NwYWNlIiw2NTMxMCwiZ3JlYXRlcm9yZXF1aXZhbGVudCIsODgxOSwiZ3JlYXRlcm9ybGVzcyIsODgyMywiZ3JlYXRlcm92ZXJlcXVhbCIsODgwNywiZ3JlYXRlcnNtYWxsIiw2NTEyNSwiZ3NjcmlwdCIsNjA5LCJnc3Ryb2tlIiw0ODUsImd1aGlyYWdhbmEiLDEyMzY4LCJndWlsbGVtb3RsZWZ0IiwxNzEsImd1aWxsZW1vdHJpZ2h0IiwxODcsImd1aWxzaW5nbGxlZnQiLDgyNDksImd1aWxzaW5nbHJpZ2h0Iiw4MjUwLCJndWthdGFrYW5hIiwxMjQ2NCwiZ3VyYW11c3F1YXJlIiwxMzA4MCwiZ3lzcXVhcmUiLDEzMjU3LCJoIiwxMDQsImhhYWJraGFzaWFuY3lyaWxsaWMiLDExOTMsImhhYWx0b25lYXJhYmljIiwxNzI5LCJoYWJlbmdhbGkiLDI0ODksImhhZGVzY2VuZGVyY3lyaWxsaWMiLDEyMDMsImhhZGV2YSIsMjM2MSwiaGFndWphcmF0aSIsMjc0NSwiaGFndXJtdWtoaSIsMjYxNywiaGFoYXJhYmljIiwxNTgxLCJoYWhmaW5hbGFyYWJpYyIsNjUxODYsImhhaGluaXRpYWxhcmFiaWMiLDY1MTg3LCJoYWhpcmFnYW5hIiwxMjM5OSwiaGFobWVkaWFsYXJhYmljIiw2NTE4OCwiaGFpdHVzcXVhcmUiLDEzMDk4LCJoYWthdGFrYW5hIiwxMjQ5NSwiaGFrYXRha2FuYWhhbGZ3aWR0aCIsNjU0MTgsImhhbGFudGd1cm11a2hpIiwyNjM3LCJoYW16YWFyYWJpYyIsMTU2OSwiaGFtemFsb3dhcmFiaWMiLDE1NjksImhhbmd1bGZpbGxlciIsMTI2NDQsImhhcmRzaWduY3lyaWxsaWMiLDEwOTgsImhhcnBvb25sZWZ0YmFyYnVwIiw4NjM2LCJoYXJwb29ucmlnaHRiYXJidXAiLDg2NDAsImhhc3F1YXJlIiwxMzI1OCwiaGF0YWZwYXRhaCIsMTQ1OCwiaGF0YWZwYXRhaDE2IiwxNDU4LCJoYXRhZnBhdGFoMjMiLDE0NTgsImhhdGFmcGF0YWgyZiIsMTQ1OCwiaGF0YWZwYXRhaGhlYnJldyIsMTQ1OCwiaGF0YWZwYXRhaG5hcnJvd2hlYnJldyIsMTQ1OCwiaGF0YWZwYXRhaHF1YXJ0ZXJoZWJyZXciLDE0NTgsImhhdGFmcGF0YWh3aWRlaGVicmV3IiwxNDU4LCJoYXRhZnFhbWF0cyIsMTQ1OSwiaGF0YWZxYW1hdHMxYiIsMTQ1OSwiaGF0YWZxYW1hdHMyOCIsMTQ1OSwiaGF0YWZxYW1hdHMzNCIsMTQ1OSwiaGF0YWZxYW1hdHNoZWJyZXciLDE0NTksImhhdGFmcWFtYXRzbmFycm93aGVicmV3IiwxNDU5LCJoYXRhZnFhbWF0c3F1YXJ0ZXJoZWJyZXciLDE0NTksImhhdGFmcWFtYXRzd2lkZWhlYnJldyIsMTQ1OSwiaGF0YWZzZWdvbCIsMTQ1NywiaGF0YWZzZWdvbDE3IiwxNDU3LCJoYXRhZnNlZ29sMjQiLDE0NTcsImhhdGFmc2Vnb2wzMCIsMTQ1NywiaGF0YWZzZWdvbGhlYnJldyIsMTQ1NywiaGF0YWZzZWdvbG5hcnJvd2hlYnJldyIsMTQ1NywiaGF0YWZzZWdvbHF1YXJ0ZXJoZWJyZXciLDE0NTcsImhhdGFmc2Vnb2x3aWRlaGVicmV3IiwxNDU3LCJoYmFyIiwyOTUsImhib3BvbW9mbyIsMTI1NTksImhicmV2ZWJlbG93Iiw3NzIzLCJoY2VkaWxsYSIsNzcyMSwiaGNpcmNsZSIsOTQzMSwiaGNpcmN1bWZsZXgiLDI5MywiaGRpZXJlc2lzIiw3NzE5LCJoZG90YWNjZW50Iiw3NzE1LCJoZG90YmVsb3ciLDc3MTcsImhlIiwxNDkyLCJoZWFydCIsOTgyOSwiaGVhcnRzdWl0YmxhY2siLDk4MjksImhlYXJ0c3VpdHdoaXRlIiw5ODI1LCJoZWRhZ2VzaCIsNjQzMDgsImhlZGFnZXNoaGVicmV3Iiw2NDMwOCwiaGVoYWx0b25lYXJhYmljIiwxNzI5LCJoZWhhcmFiaWMiLDE2MDcsImhlaGVicmV3IiwxNDkyLCJoZWhmaW5hbGFsdG9uZWFyYWJpYyIsNjQ0MjMsImhlaGZpbmFsYWx0dHdvYXJhYmljIiw2NTI1OCwiaGVoZmluYWxhcmFiaWMiLDY1MjU4LCJoZWhoYW16YWFib3ZlZmluYWxhcmFiaWMiLDY0NDIxLCJoZWhoYW16YWFib3ZlaXNvbGF0ZWRhcmFiaWMiLDY0NDIwLCJoZWhpbml0aWFsYWx0b25lYXJhYmljIiw2NDQyNCwiaGVoaW5pdGlhbGFyYWJpYyIsNjUyNTksImhlaGlyYWdhbmEiLDEyNDA4LCJoZWhtZWRpYWxhbHRvbmVhcmFiaWMiLDY0NDI1LCJoZWhtZWRpYWxhcmFiaWMiLDY1MjYwLCJoZWlzZWllcmFzcXVhcmUiLDEzMTc5LCJoZWthdGFrYW5hIiwxMjUwNCwiaGVrYXRha2FuYWhhbGZ3aWR0aCIsNjU0MjEsImhla3V0YWFydXNxdWFyZSIsMTMxMTAsImhlbmdob29rIiw2MTUsImhlcnV0dXNxdWFyZSIsMTMxMTMsImhldCIsMTQ5NSwiaGV0aGVicmV3IiwxNDk1LCJoaG9vayIsNjE0LCJoaG9va3N1cGVyaW9yIiw2ODksImhpZXVoYWNpcmNsZWtvcmVhbiIsMTI5MjMsImhpZXVoYXBhcmVua29yZWFuIiwxMjgyNywiaGlldWhjaXJjbGVrb3JlYW4iLDEyOTA5LCJoaWV1aGtvcmVhbiIsMTI2MjIsImhpZXVocGFyZW5rb3JlYW4iLDEyODEzLCJoaWhpcmFnYW5hIiwxMjQwMiwiaGlrYXRha2FuYSIsMTI0OTgsImhpa2F0YWthbmFoYWxmd2lkdGgiLDY1NDE5LCJoaXJpcSIsMTQ2MCwiaGlyaXExNCIsMTQ2MCwiaGlyaXEyMSIsMTQ2MCwiaGlyaXEyZCIsMTQ2MCwiaGlyaXFoZWJyZXciLDE0NjAsImhpcmlxbmFycm93aGVicmV3IiwxNDYwLCJoaXJpcXF1YXJ0ZXJoZWJyZXciLDE0NjAsImhpcmlxd2lkZWhlYnJldyIsMTQ2MCwiaGxpbmViZWxvdyIsNzgzMCwiaG1vbm9zcGFjZSIsNjUzNTIsImhvYXJtZW5pYW4iLDEzOTIsImhvaGlwdGhhaSIsMzYyNywiaG9oaXJhZ2FuYSIsMTI0MTEsImhva2F0YWthbmEiLDEyNTA3LCJob2thdGFrYW5haGFsZndpZHRoIiw2NTQyMiwiaG9sYW0iLDE0NjUsImhvbGFtMTkiLDE0NjUsImhvbGFtMjYiLDE0NjUsImhvbGFtMzIiLDE0NjUsImhvbGFtaGVicmV3IiwxNDY1LCJob2xhbW5hcnJvd2hlYnJldyIsMTQ2NSwiaG9sYW1xdWFydGVyaGVicmV3IiwxNDY1LCJob2xhbXdpZGVoZWJyZXciLDE0NjUsImhvbm9raHVrdGhhaSIsMzYzMCwiaG9va2Fib3ZlY29tYiIsNzc3LCJob29rY21iIiw3NzcsImhvb2twYWxhdGFsaXplZGJlbG93Y21iIiw4MDEsImhvb2tyZXRyb2ZsZXhiZWxvd2NtYiIsODAyLCJob29uc3F1YXJlIiwxMzEyMiwiaG9yaWNvcHRpYyIsMTAwMSwiaG9yaXpvbnRhbGJhciIsODIxMywiaG9ybmNtYiIsNzk1LCJob3RzcHJpbmdzIiw5ODMyLCJob3VzZSIsODk2MiwiaHBhcmVuIiw5Mzc5LCJoc3VwZXJpb3IiLDY4OCwiaHR1cm5lZCIsNjEzLCJodWhpcmFnYW5hIiwxMjQwNSwiaHVpaXRvc3F1YXJlIiwxMzEwNywiaHVrYXRha2FuYSIsMTI1MDEsImh1a2F0YWthbmFoYWxmd2lkdGgiLDY1NDIwLCJodW5nYXJ1bWxhdXQiLDczMywiaHVuZ2FydW1sYXV0Y21iIiw3NzksImh2Iiw0MDUsImh5cGhlbiIsNDUsImh5cGhlbmluZmVyaW9yIiw2MzIwNSwiaHlwaGVubW9ub3NwYWNlIiw2NTI5MywiaHlwaGVuc21hbGwiLDY1MTIzLCJoeXBoZW5zdXBlcmlvciIsNjMyMDYsImh5cGhlbnR3byIsODIwOCwiaSIsMTA1LCJpYWN1dGUiLDIzNywiaWFjeXJpbGxpYyIsMTEwMywiaWJlbmdhbGkiLDI0MzksImlib3BvbW9mbyIsMTI1ODMsImlicmV2ZSIsMzAxLCJpY2Fyb24iLDQ2NCwiaWNpcmNsZSIsOTQzMiwiaWNpcmN1bWZsZXgiLDIzOCwiaWN5cmlsbGljIiwxMTEwLCJpZGJsZ3JhdmUiLDUyMSwiaWRlb2dyYXBoZWFydGhjaXJjbGUiLDEyOTQzLCJpZGVvZ3JhcGhmaXJlY2lyY2xlIiwxMjkzOSwiaWRlb2dyYXBoaWNhbGxpYW5jZXBhcmVuIiwxMjg2MywiaWRlb2dyYXBoaWNjYWxscGFyZW4iLDEyODU4LCJpZGVvZ3JhcGhpY2NlbnRyZWNpcmNsZSIsMTI5NjUsImlkZW9ncmFwaGljY2xvc2UiLDEyMjk0LCJpZGVvZ3JhcGhpY2NvbW1hIiwxMjI4OSwiaWRlb2dyYXBoaWNjb21tYWxlZnQiLDY1MzgwLCJpZGVvZ3JhcGhpY2NvbmdyYXR1bGF0aW9ucGFyZW4iLDEyODU1LCJpZGVvZ3JhcGhpY2NvcnJlY3RjaXJjbGUiLDEyOTYzLCJpZGVvZ3JhcGhpY2VhcnRocGFyZW4iLDEyODQ3LCJpZGVvZ3JhcGhpY2VudGVycHJpc2VwYXJlbiIsMTI4NjEsImlkZW9ncmFwaGljZXhjZWxsZW50Y2lyY2xlIiwxMjk1NywiaWRlb2dyYXBoaWNmZXN0aXZhbHBhcmVuIiwxMjg2NCwiaWRlb2dyYXBoaWNmaW5hbmNpYWxjaXJjbGUiLDEyOTUwLCJpZGVvZ3JhcGhpY2ZpbmFuY2lhbHBhcmVuIiwxMjg1NCwiaWRlb2dyYXBoaWNmaXJlcGFyZW4iLDEyODQzLCJpZGVvZ3JhcGhpY2hhdmVwYXJlbiIsMTI4NTAsImlkZW9ncmFwaGljaGlnaGNpcmNsZSIsMTI5NjQsImlkZW9ncmFwaGljaXRlcmF0aW9ubWFyayIsMTIyOTMsImlkZW9ncmFwaGljbGFib3JjaXJjbGUiLDEyOTUyLCJpZGVvZ3JhcGhpY2xhYm9ycGFyZW4iLDEyODU2LCJpZGVvZ3JhcGhpY2xlZnRjaXJjbGUiLDEyOTY3LCJpZGVvZ3JhcGhpY2xvd2NpcmNsZSIsMTI5NjYsImlkZW9ncmFwaGljbWVkaWNpbmVjaXJjbGUiLDEyOTY5LCJpZGVvZ3JhcGhpY21ldGFscGFyZW4iLDEyODQ2LCJpZGVvZ3JhcGhpY21vb25wYXJlbiIsMTI4NDIsImlkZW9ncmFwaGljbmFtZXBhcmVuIiwxMjg1MiwiaWRlb2dyYXBoaWNwZXJpb2QiLDEyMjkwLCJpZGVvZ3JhcGhpY3ByaW50Y2lyY2xlIiwxMjk1OCwiaWRlb2dyYXBoaWNyZWFjaHBhcmVuIiwxMjg2NywiaWRlb2dyYXBoaWNyZXByZXNlbnRwYXJlbiIsMTI4NTcsImlkZW9ncmFwaGljcmVzb3VyY2VwYXJlbiIsMTI4NjIsImlkZW9ncmFwaGljcmlnaHRjaXJjbGUiLDEyOTY4LCJpZGVvZ3JhcGhpY3NlY3JldGNpcmNsZSIsMTI5NTMsImlkZW9ncmFwaGljc2VsZnBhcmVuIiwxMjg2NiwiaWRlb2dyYXBoaWNzb2NpZXR5cGFyZW4iLDEyODUxLCJpZGVvZ3JhcGhpY3NwYWNlIiwxMjI4OCwiaWRlb2dyYXBoaWNzcGVjaWFscGFyZW4iLDEyODUzLCJpZGVvZ3JhcGhpY3N0b2NrcGFyZW4iLDEyODQ5LCJpZGVvZ3JhcGhpY3N0dWR5cGFyZW4iLDEyODU5LCJpZGVvZ3JhcGhpY3N1bnBhcmVuIiwxMjg0OCwiaWRlb2dyYXBoaWNzdXBlcnZpc2VwYXJlbiIsMTI4NjAsImlkZW9ncmFwaGljd2F0ZXJwYXJlbiIsMTI4NDQsImlkZW9ncmFwaGljd29vZHBhcmVuIiwxMjg0NSwiaWRlb2dyYXBoaWN6ZXJvIiwxMjI5NSwiaWRlb2dyYXBobWV0YWxjaXJjbGUiLDEyOTQyLCJpZGVvZ3JhcGhtb29uY2lyY2xlIiwxMjkzOCwiaWRlb2dyYXBobmFtZWNpcmNsZSIsMTI5NDgsImlkZW9ncmFwaHN1bmNpcmNsZSIsMTI5NDQsImlkZW9ncmFwaHdhdGVyY2lyY2xlIiwxMjk0MCwiaWRlb2dyYXBod29vZGNpcmNsZSIsMTI5NDEsImlkZXZhIiwyMzExLCJpZGllcmVzaXMiLDIzOSwiaWRpZXJlc2lzYWN1dGUiLDc3MjcsImlkaWVyZXNpc2N5cmlsbGljIiwxMjUzLCJpZG90YmVsb3ciLDc4ODMsImllYnJldmVjeXJpbGxpYyIsMTIzOSwiaWVjeXJpbGxpYyIsMTA3NywiaWV1bmdhY2lyY2xla29yZWFuIiwxMjkxNywiaWV1bmdhcGFyZW5rb3JlYW4iLDEyODIxLCJpZXVuZ2NpcmNsZWtvcmVhbiIsMTI5MDMsImlldW5na29yZWFuIiwxMjYxNSwiaWV1bmdwYXJlbmtvcmVhbiIsMTI4MDcsImlncmF2ZSIsMjM2LCJpZ3VqYXJhdGkiLDI2OTUsImlndXJtdWtoaSIsMjU2NywiaWhpcmFnYW5hIiwxMjM1NiwiaWhvb2thYm92ZSIsNzg4MSwiaWliZW5nYWxpIiwyNDQwLCJpaWN5cmlsbGljIiwxMDgwLCJpaWRldmEiLDIzMTIsImlpZ3VqYXJhdGkiLDI2OTYsImlpZ3VybXVraGkiLDI1NjgsImlpbWF0cmFndXJtdWtoaSIsMjYyNCwiaWludmVydGVkYnJldmUiLDUyMywiaWlzaG9ydGN5cmlsbGljIiwxMDgxLCJpaXZvd2Vsc2lnbmJlbmdhbGkiLDI0OTYsImlpdm93ZWxzaWduZGV2YSIsMjM2OCwiaWl2b3dlbHNpZ25ndWphcmF0aSIsMjc1MiwiaWoiLDMwNywiaWthdGFrYW5hIiwxMjQ1MiwiaWthdGFrYW5haGFsZndpZHRoIiw2NTM5NCwiaWtvcmVhbiIsMTI2NDMsImlsZGUiLDczMiwiaWx1eWhlYnJldyIsMTQ1MiwiaW1hY3JvbiIsMjk5LCJpbWFjcm9uY3lyaWxsaWMiLDEyNTEsImltYWdlb3JhcHByb3hpbWF0ZWx5ZXF1YWwiLDg3ODcsImltYXRyYWd1cm11a2hpIiwyNjIzLCJpbW9ub3NwYWNlIiw2NTM1MywiaW5jcmVtZW50Iiw4NzEwLCJpbmZpbml0eSIsODczNCwiaW5pYXJtZW5pYW4iLDEzODcsImludGVncmFsIiw4NzQ3LCJpbnRlZ3JhbGJvdHRvbSIsODk5MywiaW50ZWdyYWxidCIsODk5MywiaW50ZWdyYWxleCIsNjM3MzMsImludGVncmFsdG9wIiw4OTkyLCJpbnRlZ3JhbHRwIiw4OTkyLCJpbnRlcnNlY3Rpb24iLDg3NDUsImludGlzcXVhcmUiLDEzMDYxLCJpbnZidWxsZXQiLDk2ODgsImludmNpcmNsZSIsOTY4OSwiaW52c21pbGVmYWNlIiw5Nzg3LCJpb2N5cmlsbGljIiwxMTA1LCJpb2dvbmVrIiwzMDMsImlvdGEiLDk1MywiaW90YWRpZXJlc2lzIiw5NzAsImlvdGFkaWVyZXNpc3Rvbm9zIiw5MTIsImlvdGFsYXRpbiIsNjE3LCJpb3RhdG9ub3MiLDk0MywiaXBhcmVuIiw5MzgwLCJpcmlndXJtdWtoaSIsMjY3NCwiaXNtYWxsaGlyYWdhbmEiLDEyMzU1LCJpc21hbGxrYXRha2FuYSIsMTI0NTEsImlzbWFsbGthdGFrYW5haGFsZndpZHRoIiw2NTM4NCwiaXNzaGFyYmVuZ2FsaSIsMjU1NCwiaXN0cm9rZSIsNjE2LCJpc3VwZXJpb3IiLDYzMjEzLCJpdGVyYXRpb25oaXJhZ2FuYSIsMTI0NDUsIml0ZXJhdGlvbmthdGFrYW5hIiwxMjU0MSwiaXRpbGRlIiwyOTcsIml0aWxkZWJlbG93Iiw3NzI1LCJpdWJvcG9tb2ZvIiwxMjU4NSwiaXVjeXJpbGxpYyIsMTEwMiwiaXZvd2Vsc2lnbmJlbmdhbGkiLDI0OTUsIml2b3dlbHNpZ25kZXZhIiwyMzY3LCJpdm93ZWxzaWduZ3VqYXJhdGkiLDI3NTEsIml6aGl0c2FjeXJpbGxpYyIsMTE0MSwiaXpoaXRzYWRibGdyYXZlY3lyaWxsaWMiLDExNDMsImoiLDEwNiwiamFhcm1lbmlhbiIsMTM5MywiamFiZW5nYWxpIiwyNDYwLCJqYWRldmEiLDIzMzIsImphZ3VqYXJhdGkiLDI3MTYsImphZ3VybXVraGkiLDI1ODgsImpib3BvbW9mbyIsMTI1NjAsImpjYXJvbiIsNDk2LCJqY2lyY2xlIiw5NDMzLCJqY2lyY3VtZmxleCIsMzA5LCJqY3Jvc3NlZHRhaWwiLDY2OSwiamRvdGxlc3NzdHJva2UiLDYwNywiamVjeXJpbGxpYyIsMTExMiwiamVlbWFyYWJpYyIsMTU4MCwiamVlbWZpbmFsYXJhYmljIiw2NTE4MiwiamVlbWluaXRpYWxhcmFiaWMiLDY1MTgzLCJqZWVtbWVkaWFsYXJhYmljIiw2NTE4NCwiamVoYXJhYmljIiwxNjg4LCJqZWhmaW5hbGFyYWJpYyIsNjQzOTUsImpoYWJlbmdhbGkiLDI0NjEsImpoYWRldmEiLDIzMzMsImpoYWd1amFyYXRpIiwyNzE3LCJqaGFndXJtdWtoaSIsMjU4OSwiamhlaGFybWVuaWFuIiwxNDAzLCJqaXMiLDEyMjkyLCJqbW9ub3NwYWNlIiw2NTM1NCwianBhcmVuIiw5MzgxLCJqc3VwZXJpb3IiLDY5MCwiayIsMTA3LCJrYWJhc2hraXJjeXJpbGxpYyIsMTE4NSwia2FiZW5nYWxpIiwyNDUzLCJrYWN1dGUiLDc3MjksImthY3lyaWxsaWMiLDEwODIsImthZGVzY2VuZGVyY3lyaWxsaWMiLDExNzksImthZGV2YSIsMjMyNSwia2FmIiwxNDk5LCJrYWZhcmFiaWMiLDE2MDMsImthZmRhZ2VzaCIsNjQzMTUsImthZmRhZ2VzaGhlYnJldyIsNjQzMTUsImthZmZpbmFsYXJhYmljIiw2NTI0Miwia2FmaGVicmV3IiwxNDk5LCJrYWZpbml0aWFsYXJhYmljIiw2NTI0Mywia2FmbWVkaWFsYXJhYmljIiw2NTI0NCwia2FmcmFmZWhlYnJldyIsNjQzMzMsImthZ3VqYXJhdGkiLDI3MDksImthZ3VybXVraGkiLDI1ODEsImthaGlyYWdhbmEiLDEyMzYzLCJrYWhvb2tjeXJpbGxpYyIsMTIyMCwia2FrYXRha2FuYSIsMTI0NTksImtha2F0YWthbmFoYWxmd2lkdGgiLDY1Mzk4LCJrYXBwYSIsOTU0LCJrYXBwYXN5bWJvbGdyZWVrIiwxMDA4LCJrYXB5ZW91bm1pZXVta29yZWFuIiwxMjY1Nywia2FweWVvdW5waGlldXBoa29yZWFuIiwxMjY3Niwia2FweWVvdW5waWV1cGtvcmVhbiIsMTI2NjQsImthcHllb3Vuc3NhbmdwaWV1cGtvcmVhbiIsMTI2NjUsImthcm9yaWlzcXVhcmUiLDEzMDY5LCJrYXNoaWRhYXV0b2FyYWJpYyIsMTYwMCwia2FzaGlkYWF1dG9ub3NpZGViZWFyaW5nYXJhYmljIiwxNjAwLCJrYXNtYWxsa2F0YWthbmEiLDEyNTMzLCJrYXNxdWFyZSIsMTMxODgsImthc3JhYXJhYmljIiwxNjE2LCJrYXNyYXRhbmFyYWJpYyIsMTYxMywia2FzdHJva2VjeXJpbGxpYyIsMTE4Mywia2F0YWhpcmFwcm9sb25nbWFya2hhbGZ3aWR0aCIsNjUzOTIsImthdmVydGljYWxzdHJva2VjeXJpbGxpYyIsMTE4MSwia2JvcG9tb2ZvIiwxMjU1OCwia2NhbHNxdWFyZSIsMTMxOTMsImtjYXJvbiIsNDg5LCJrY2VkaWxsYSIsMzExLCJrY2lyY2xlIiw5NDM0LCJrY29tbWFhY2NlbnQiLDMxMSwia2RvdGJlbG93Iiw3NzMxLCJrZWhhcm1lbmlhbiIsMTQxMiwia2VoaXJhZ2FuYSIsMTIzNjksImtla2F0YWthbmEiLDEyNDY1LCJrZWthdGFrYW5haGFsZndpZHRoIiw2NTQwMSwia2VuYXJtZW5pYW4iLDEzOTEsImtlc21hbGxrYXRha2FuYSIsMTI1MzQsImtncmVlbmxhbmRpYyIsMzEyLCJraGFiZW5nYWxpIiwyNDU0LCJraGFjeXJpbGxpYyIsMTA5Mywia2hhZGV2YSIsMjMyNiwia2hhZ3VqYXJhdGkiLDI3MTAsImtoYWd1cm11a2hpIiwyNTgyLCJraGFoYXJhYmljIiwxNTgyLCJraGFoZmluYWxhcmFiaWMiLDY1MTkwLCJraGFoaW5pdGlhbGFyYWJpYyIsNjUxOTEsImtoYWhtZWRpYWxhcmFiaWMiLDY1MTkyLCJraGVpY29wdGljIiw5OTksImtoaGFkZXZhIiwyMzkzLCJraGhhZ3VybXVraGkiLDI2NDksImtoaWV1a2hhY2lyY2xla29yZWFuIiwxMjkyMCwia2hpZXVraGFwYXJlbmtvcmVhbiIsMTI4MjQsImtoaWV1a2hjaXJjbGVrb3JlYW4iLDEyOTA2LCJraGlldWtoa29yZWFuIiwxMjYxOSwia2hpZXVraHBhcmVua29yZWFuIiwxMjgxMCwia2hva2hhaXRoYWkiLDM1ODYsImtob2tob250aGFpIiwzNTg5LCJraG9raHVhdHRoYWkiLDM1ODcsImtob2tod2FpdGhhaSIsMzU4OCwia2hvbXV0dGhhaSIsMzY3NSwia2hvb2siLDQwOSwia2hvcmFraGFuZ3RoYWkiLDM1OTAsImtoenNxdWFyZSIsMTMyMDEsImtpaGlyYWdhbmEiLDEyMzY1LCJraWthdGFrYW5hIiwxMjQ2MSwia2lrYXRha2FuYWhhbGZ3aWR0aCIsNjUzOTksImtpcm9ndXJhbXVzcXVhcmUiLDEzMDc3LCJraXJvbWVldG9ydXNxdWFyZSIsMTMwNzgsImtpcm9zcXVhcmUiLDEzMDc2LCJraXllb2thY2lyY2xla29yZWFuIiwxMjkxMCwia2l5ZW9rYXBhcmVua29yZWFuIiwxMjgxNCwia2l5ZW9rY2lyY2xla29yZWFuIiwxMjg5Niwia2l5ZW9ra29yZWFuIiwxMjU5Mywia2l5ZW9rcGFyZW5rb3JlYW4iLDEyODAwLCJraXllb2tzaW9za29yZWFuIiwxMjU5NSwia2plY3lyaWxsaWMiLDExMTYsImtsaW5lYmVsb3ciLDc3MzMsImtsc3F1YXJlIiwxMzIwOCwia21jdWJlZHNxdWFyZSIsMTMyMjIsImttb25vc3BhY2UiLDY1MzU1LCJrbXNxdWFyZWRzcXVhcmUiLDEzMjE4LCJrb2hpcmFnYW5hIiwxMjM3MSwia29obXNxdWFyZSIsMTMyNDgsImtva2FpdGhhaSIsMzU4NSwia29rYXRha2FuYSIsMTI0NjcsImtva2F0YWthbmFoYWxmd2lkdGgiLDY1NDAyLCJrb29wb3NxdWFyZSIsMTMwODYsImtvcHBhY3lyaWxsaWMiLDExNTMsImtvcmVhbnN0YW5kYXJkc3ltYm9sIiwxMjkyNywia29yb25pc2NtYiIsODM1LCJrcGFyZW4iLDkzODIsImtwYXNxdWFyZSIsMTMyMjYsImtzaWN5cmlsbGljIiwxMTM1LCJrdHNxdWFyZSIsMTMyNjMsImt0dXJuZWQiLDY3MCwia3VoaXJhZ2FuYSIsMTIzNjcsImt1a2F0YWthbmEiLDEyNDYzLCJrdWthdGFrYW5haGFsZndpZHRoIiw2NTQwMCwia3ZzcXVhcmUiLDEzMjQwLCJrd3NxdWFyZSIsMTMyNDYsImwiLDEwOCwibGFiZW5nYWxpIiwyNDgyLCJsYWN1dGUiLDMxNCwibGFkZXZhIiwyMzU0LCJsYWd1amFyYXRpIiwyNzM4LCJsYWd1cm11a2hpIiwyNjEwLCJsYWtraGFuZ3lhb3RoYWkiLDM2NTMsImxhbWFsZWZmaW5hbGFyYWJpYyIsNjUyNzYsImxhbWFsZWZoYW16YWFib3ZlZmluYWxhcmFiaWMiLDY1MjcyLCJsYW1hbGVmaGFtemFhYm92ZWlzb2xhdGVkYXJhYmljIiw2NTI3MSwibGFtYWxlZmhhbXphYmVsb3dmaW5hbGFyYWJpYyIsNjUyNzQsImxhbWFsZWZoYW16YWJlbG93aXNvbGF0ZWRhcmFiaWMiLDY1MjczLCJsYW1hbGVmaXNvbGF0ZWRhcmFiaWMiLDY1Mjc1LCJsYW1hbGVmbWFkZGFhYm92ZWZpbmFsYXJhYmljIiw2NTI3MCwibGFtYWxlZm1hZGRhYWJvdmVpc29sYXRlZGFyYWJpYyIsNjUyNjksImxhbWFyYWJpYyIsMTYwNCwibGFtYmRhIiw5NTUsImxhbWJkYXN0cm9rZSIsNDExLCJsYW1lZCIsMTUwMCwibGFtZWRkYWdlc2giLDY0MzE2LCJsYW1lZGRhZ2VzaGhlYnJldyIsNjQzMTYsImxhbWVkaGVicmV3IiwxNTAwLCJsYW1maW5hbGFyYWJpYyIsNjUyNDYsImxhbWhhaGluaXRpYWxhcmFiaWMiLDY0NzE0LCJsYW1pbml0aWFsYXJhYmljIiw2NTI0NywibGFtamVlbWluaXRpYWxhcmFiaWMiLDY0NzEzLCJsYW1raGFoaW5pdGlhbGFyYWJpYyIsNjQ3MTUsImxhbWxhbWhlaGlzb2xhdGVkYXJhYmljIiw2NTAxMCwibGFtbWVkaWFsYXJhYmljIiw2NTI0OCwibGFtbWVlbWhhaGluaXRpYWxhcmFiaWMiLDY0OTA0LCJsYW1tZWVtaW5pdGlhbGFyYWJpYyIsNjQ3MTYsImxhcmdlY2lyY2xlIiw5NzExLCJsYmFyIiw0MTAsImxiZWx0Iiw2MjAsImxib3BvbW9mbyIsMTI1NTYsImxjYXJvbiIsMzE4LCJsY2VkaWxsYSIsMzE2LCJsY2lyY2xlIiw5NDM1LCJsY2lyY3VtZmxleGJlbG93Iiw3NzQxLCJsY29tbWFhY2NlbnQiLDMxNiwibGRvdCIsMzIwLCJsZG90YWNjZW50IiwzMjAsImxkb3RiZWxvdyIsNzczNSwibGRvdGJlbG93bWFjcm9uIiw3NzM3LCJsZWZ0YW5nbGVhYm92ZWNtYiIsNzk0LCJsZWZ0dGFja2JlbG93Y21iIiw3OTIsImxlc3MiLDYwLCJsZXNzZXF1YWwiLDg4MDQsImxlc3NlcXVhbG9yZ3JlYXRlciIsODkyMiwibGVzc21vbm9zcGFjZSIsNjUzMDgsImxlc3NvcmVxdWl2YWxlbnQiLDg4MTgsImxlc3NvcmdyZWF0ZXIiLDg4MjIsImxlc3NvdmVyZXF1YWwiLDg4MDYsImxlc3NzbWFsbCIsNjUxMjQsImxlemgiLDYyMiwibGZibG9jayIsOTYxMiwibGhvb2tyZXRyb2ZsZXgiLDYyMSwibGlyYSIsODM1NiwibGl3bmFybWVuaWFuIiwxMzg4LCJsaiIsNDU3LCJsamVjeXJpbGxpYyIsMTExMywibGwiLDYzMTY4LCJsbGFkZXZhIiwyMzU1LCJsbGFndWphcmF0aSIsMjczOSwibGxpbmViZWxvdyIsNzczOSwibGxsYWRldmEiLDIzNTYsImxsdm9jYWxpY2JlbmdhbGkiLDI1MjksImxsdm9jYWxpY2RldmEiLDI0MDEsImxsdm9jYWxpY3Zvd2Vsc2lnbmJlbmdhbGkiLDI1MzEsImxsdm9jYWxpY3Zvd2Vsc2lnbmRldmEiLDI0MDMsImxtaWRkbGV0aWxkZSIsNjE5LCJsbW9ub3NwYWNlIiw2NTM1NiwibG1zcXVhcmUiLDEzMjY0LCJsb2NodWxhdGhhaSIsMzYyOCwibG9naWNhbGFuZCIsODc0MywibG9naWNhbG5vdCIsMTcyLCJsb2dpY2Fsbm90cmV2ZXJzZWQiLDg5NzYsImxvZ2ljYWxvciIsODc0NCwibG9saW5ndGhhaSIsMzYyMSwibG9uZ3MiLDM4MywibG93bGluZWNlbnRlcmxpbmUiLDY1MTAyLCJsb3dsaW5lY21iIiw4MTgsImxvd2xpbmVkYXNoZWQiLDY1MTAxLCJsb3plbmdlIiw5Njc0LCJscGFyZW4iLDkzODMsImxzbGFzaCIsMzIyLCJsc3F1YXJlIiw4NDY3LCJsc3VwZXJpb3IiLDYzMjE0LCJsdHNoYWRlIiw5NjE3LCJsdXRoYWkiLDM2MjIsImx2b2NhbGljYmVuZ2FsaSIsMjQ0NCwibHZvY2FsaWNkZXZhIiwyMzE2LCJsdm9jYWxpY3Zvd2Vsc2lnbmJlbmdhbGkiLDI1MzAsImx2b2NhbGljdm93ZWxzaWduZGV2YSIsMjQwMiwibHhzcXVhcmUiLDEzMjY3LCJtIiwxMDksIm1hYmVuZ2FsaSIsMjQ3OCwibWFjcm9uIiwxNzUsIm1hY3JvbmJlbG93Y21iIiw4MTcsIm1hY3JvbmNtYiIsNzcyLCJtYWNyb25sb3dtb2QiLDcxNywibWFjcm9ubW9ub3NwYWNlIiw2NTUwNywibWFjdXRlIiw3NzQzLCJtYWRldmEiLDIzNTAsIm1hZ3VqYXJhdGkiLDI3MzQsIm1hZ3VybXVraGkiLDI2MDYsIm1haGFwYWtoaGVicmV3IiwxNDQ0LCJtYWhhcGFraGxlZnRoZWJyZXciLDE0NDQsIm1haGlyYWdhbmEiLDEyNDE0LCJtYWljaGF0dGF3YWxvd2xlZnR0aGFpIiw2MzYzNywibWFpY2hhdHRhd2Fsb3dyaWdodHRoYWkiLDYzNjM2LCJtYWljaGF0dGF3YXRoYWkiLDM2NTksIm1haWNoYXR0YXdhdXBwZXJsZWZ0dGhhaSIsNjM2MzUsIm1haWVrbG93bGVmdHRoYWkiLDYzNjI4LCJtYWlla2xvd3JpZ2h0dGhhaSIsNjM2MjcsIm1haWVrdGhhaSIsMzY1NiwibWFpZWt1cHBlcmxlZnR0aGFpIiw2MzYyNiwibWFpaGFuYWthdGxlZnR0aGFpIiw2MzYyMCwibWFpaGFuYWthdHRoYWkiLDM2MzMsIm1haXRhaWtodWxlZnR0aGFpIiw2MzYyNSwibWFpdGFpa2h1dGhhaSIsMzY1NSwibWFpdGhvbG93bGVmdHRoYWkiLDYzNjMxLCJtYWl0aG9sb3dyaWdodHRoYWkiLDYzNjMwLCJtYWl0aG90aGFpIiwzNjU3LCJtYWl0aG91cHBlcmxlZnR0aGFpIiw2MzYyOSwibWFpdHJpbG93bGVmdHRoYWkiLDYzNjM0LCJtYWl0cmlsb3dyaWdodHRoYWkiLDYzNjMzLCJtYWl0cml0aGFpIiwzNjU4LCJtYWl0cml1cHBlcmxlZnR0aGFpIiw2MzYzMiwibWFpeWFtb2t0aGFpIiwzNjU0LCJtYWthdGFrYW5hIiwxMjUxMCwibWFrYXRha2FuYWhhbGZ3aWR0aCIsNjU0MjMsIm1hbGUiLDk3OTQsIm1hbnN5b25zcXVhcmUiLDEzMTI3LCJtYXFhZmhlYnJldyIsMTQ3MCwibWFycyIsOTc5NCwibWFzb3JhY2lyY2xlaGVicmV3IiwxNDU1LCJtYXNxdWFyZSIsMTMxODcsIm1ib3BvbW9mbyIsMTI1NTEsIm1ic3F1YXJlIiwxMzI2OCwibWNpcmNsZSIsOTQzNiwibWN1YmVkc3F1YXJlIiwxMzIyMSwibWRvdGFjY2VudCIsNzc0NSwibWRvdGJlbG93Iiw3NzQ3LCJtZWVtYXJhYmljIiwxNjA1LCJtZWVtZmluYWxhcmFiaWMiLDY1MjUwLCJtZWVtaW5pdGlhbGFyYWJpYyIsNjUyNTEsIm1lZW1tZWRpYWxhcmFiaWMiLDY1MjUyLCJtZWVtbWVlbWluaXRpYWxhcmFiaWMiLDY0NzIxLCJtZWVtbWVlbWlzb2xhdGVkYXJhYmljIiw2NDU4NCwibWVldG9ydXNxdWFyZSIsMTMxMzMsIm1laGlyYWdhbmEiLDEyNDE3LCJtZWl6aWVyYXNxdWFyZSIsMTMxODIsIm1la2F0YWthbmEiLDEyNTEzLCJtZWthdGFrYW5haGFsZndpZHRoIiw2NTQyNiwibWVtIiwxNTAyLCJtZW1kYWdlc2giLDY0MzE4LCJtZW1kYWdlc2hoZWJyZXciLDY0MzE4LCJtZW1oZWJyZXciLDE1MDIsIm1lbmFybWVuaWFuIiwxMzk2LCJtZXJraGFoZWJyZXciLDE0NDUsIm1lcmtoYWtlZnVsYWhlYnJldyIsMTQ0NiwibWVya2hha2VmdWxhbGVmdGhlYnJldyIsMTQ0NiwibWVya2hhbGVmdGhlYnJldyIsMTQ0NSwibWhvb2siLDYyNSwibWh6c3F1YXJlIiwxMzIwMiwibWlkZGxlZG90a2F0YWthbmFoYWxmd2lkdGgiLDY1MzgxLCJtaWRkb3QiLDE4MywibWlldW1hY2lyY2xla29yZWFuIiwxMjkxNCwibWlldW1hcGFyZW5rb3JlYW4iLDEyODE4LCJtaWV1bWNpcmNsZWtvcmVhbiIsMTI5MDAsIm1pZXVta29yZWFuIiwxMjYwOSwibWlldW1wYW5zaW9za29yZWFuIiwxMjY1NiwibWlldW1wYXJlbmtvcmVhbiIsMTI4MDQsIm1pZXVtcGlldXBrb3JlYW4iLDEyNjU0LCJtaWV1bXNpb3Nrb3JlYW4iLDEyNjU1LCJtaWhpcmFnYW5hIiwxMjQxNSwibWlrYXRha2FuYSIsMTI1MTEsIm1pa2F0YWthbmFoYWxmd2lkdGgiLDY1NDI0LCJtaW51cyIsODcyMiwibWludXNiZWxvd2NtYiIsODAwLCJtaW51c2NpcmNsZSIsODg1NCwibWludXNtb2QiLDcyNywibWludXNwbHVzIiw4NzIzLCJtaW51dGUiLDgyNDIsIm1pcmliYWFydXNxdWFyZSIsMTMxMzAsIm1pcmlzcXVhcmUiLDEzMTI5LCJtbG9uZ2xlZ3R1cm5lZCIsNjI0LCJtbHNxdWFyZSIsMTMyMDYsIm1tY3ViZWRzcXVhcmUiLDEzMjE5LCJtbW9ub3NwYWNlIiw2NTM1NywibW1zcXVhcmVkc3F1YXJlIiwxMzIxNSwibW9oaXJhZ2FuYSIsMTI0MTgsIm1vaG1zcXVhcmUiLDEzMjQ5LCJtb2thdGFrYW5hIiwxMjUxNCwibW9rYXRha2FuYWhhbGZ3aWR0aCIsNjU0MjcsIm1vbHNxdWFyZSIsMTMyNzAsIm1vbWF0aGFpIiwzNjE3LCJtb3ZlcnNzcXVhcmUiLDEzMjIzLCJtb3ZlcnNzcXVhcmVkc3F1YXJlIiwxMzIyNCwibXBhcmVuIiw5Mzg0LCJtcGFzcXVhcmUiLDEzMjI3LCJtc3NxdWFyZSIsMTMyMzUsIm1zdXBlcmlvciIsNjMyMTUsIm10dXJuZWQiLDYyMywibXUiLDE4MSwibXUxIiwxODEsIm11YXNxdWFyZSIsMTMxODYsIm11Y2hncmVhdGVyIiw4ODExLCJtdWNobGVzcyIsODgxMCwibXVmc3F1YXJlIiwxMzE5NiwibXVncmVlayIsOTU2LCJtdWdzcXVhcmUiLDEzMTk3LCJtdWhpcmFnYW5hIiwxMjQxNiwibXVrYXRha2FuYSIsMTI1MTIsIm11a2F0YWthbmFoYWxmd2lkdGgiLDY1NDI1LCJtdWxzcXVhcmUiLDEzMjA1LCJtdWx0aXBseSIsMjE1LCJtdW1zcXVhcmUiLDEzMjExLCJtdW5haGhlYnJldyIsMTQ0MywibXVuYWhsZWZ0aGVicmV3IiwxNDQzLCJtdXNpY2Fsbm90ZSIsOTgzNCwibXVzaWNhbG5vdGVkYmwiLDk4MzUsIm11c2ljZmxhdHNpZ24iLDk4MzcsIm11c2ljc2hhcnBzaWduIiw5ODM5LCJtdXNzcXVhcmUiLDEzMjM0LCJtdXZzcXVhcmUiLDEzMjM4LCJtdXdzcXVhcmUiLDEzMjQ0LCJtdm1lZ2FzcXVhcmUiLDEzMjQxLCJtdnNxdWFyZSIsMTMyMzksIm13bWVnYXNxdWFyZSIsMTMyNDcsIm13c3F1YXJlIiwxMzI0NSwibiIsMTEwLCJuYWJlbmdhbGkiLDI0NzIsIm5hYmxhIiw4NzExLCJuYWN1dGUiLDMyNCwibmFkZXZhIiwyMzQ0LCJuYWd1amFyYXRpIiwyNzI4LCJuYWd1cm11a2hpIiwyNjAwLCJuYWhpcmFnYW5hIiwxMjM5NCwibmFrYXRha2FuYSIsMTI0OTAsIm5ha2F0YWthbmFoYWxmd2lkdGgiLDY1NDEzLCJuYXBvc3Ryb3BoZSIsMzI5LCJuYXNxdWFyZSIsMTMxODUsIm5ib3BvbW9mbyIsMTI1NTUsIm5ic3BhY2UiLDE2MCwibmNhcm9uIiwzMjgsIm5jZWRpbGxhIiwzMjYsIm5jaXJjbGUiLDk0MzcsIm5jaXJjdW1mbGV4YmVsb3ciLDc3NTUsIm5jb21tYWFjY2VudCIsMzI2LCJuZG90YWNjZW50Iiw3NzQ5LCJuZG90YmVsb3ciLDc3NTEsIm5laGlyYWdhbmEiLDEyMzk3LCJuZWthdGFrYW5hIiwxMjQ5MywibmVrYXRha2FuYWhhbGZ3aWR0aCIsNjU0MTYsIm5ld3NoZXFlbHNpZ24iLDgzNjIsIm5mc3F1YXJlIiwxMzE5NSwibmdhYmVuZ2FsaSIsMjQ1NywibmdhZGV2YSIsMjMyOSwibmdhZ3VqYXJhdGkiLDI3MTMsIm5nYWd1cm11a2hpIiwyNTg1LCJuZ29uZ3V0aGFpIiwzNTkxLCJuaGlyYWdhbmEiLDEyNDM1LCJuaG9va2xlZnQiLDYyNiwibmhvb2tyZXRyb2ZsZXgiLDYyNywibmlldW5hY2lyY2xla29yZWFuIiwxMjkxMSwibmlldW5hcGFyZW5rb3JlYW4iLDEyODE1LCJuaWV1bmNpZXVja29yZWFuIiwxMjU5NywibmlldW5jaXJjbGVrb3JlYW4iLDEyODk3LCJuaWV1bmhpZXVoa29yZWFuIiwxMjU5OCwibmlldW5rb3JlYW4iLDEyNTk2LCJuaWV1bnBhbnNpb3Nrb3JlYW4iLDEyNjQ4LCJuaWV1bnBhcmVua29yZWFuIiwxMjgwMSwibmlldW5zaW9za29yZWFuIiwxMjY0NywibmlldW50aWtldXRrb3JlYW4iLDEyNjQ2LCJuaWhpcmFnYW5hIiwxMjM5NSwibmlrYXRha2FuYSIsMTI0OTEsIm5pa2F0YWthbmFoYWxmd2lkdGgiLDY1NDE0LCJuaWtoYWhpdGxlZnR0aGFpIiw2MzY0MSwibmlraGFoaXR0aGFpIiwzNjYxLCJuaW5lIiw1NywibmluZWFyYWJpYyIsMTY0MSwibmluZWJlbmdhbGkiLDI1NDMsIm5pbmVjaXJjbGUiLDkzMjAsIm5pbmVjaXJjbGVpbnZlcnNlc2Fuc3NlcmlmIiwxMDEzMCwibmluZWRldmEiLDI0MTUsIm5pbmVndWphcmF0aSIsMjc5OSwibmluZWd1cm11a2hpIiwyNjcxLCJuaW5laGFja2FyYWJpYyIsMTY0MSwibmluZWhhbmd6aG91IiwxMjMyOSwibmluZWlkZW9ncmFwaGljcGFyZW4iLDEyODQwLCJuaW5laW5mZXJpb3IiLDgzMjksIm5pbmVtb25vc3BhY2UiLDY1MzA1LCJuaW5lb2xkc3R5bGUiLDYzMjg5LCJuaW5lcGFyZW4iLDkzNDAsIm5pbmVwZXJpb2QiLDkzNjAsIm5pbmVwZXJzaWFuIiwxNzg1LCJuaW5lcm9tYW4iLDg1NjgsIm5pbmVzdXBlcmlvciIsODMxMywibmluZXRlZW5jaXJjbGUiLDkzMzAsIm5pbmV0ZWVucGFyZW4iLDkzNTAsIm5pbmV0ZWVucGVyaW9kIiw5MzcwLCJuaW5ldGhhaSIsMzY3MywibmoiLDQ2MCwibmplY3lyaWxsaWMiLDExMTQsIm5rYXRha2FuYSIsMTI1MzEsIm5rYXRha2FuYWhhbGZ3aWR0aCIsNjU0MzcsIm5sZWdyaWdodGxvbmciLDQxNCwibmxpbmViZWxvdyIsNzc1Mywibm1vbm9zcGFjZSIsNjUzNTgsIm5tc3F1YXJlIiwxMzIxMCwibm5hYmVuZ2FsaSIsMjQ2Nywibm5hZGV2YSIsMjMzOSwibm5hZ3VqYXJhdGkiLDI3MjMsIm5uYWd1cm11a2hpIiwyNTk1LCJubm5hZGV2YSIsMjM0NSwibm9oaXJhZ2FuYSIsMTIzOTgsIm5va2F0YWthbmEiLDEyNDk0LCJub2thdGFrYW5haGFsZndpZHRoIiw2NTQxNywibm9uYnJlYWtpbmdzcGFjZSIsMTYwLCJub25lbnRoYWkiLDM2MDMsIm5vbnV0aGFpIiwzNjA5LCJub29uYXJhYmljIiwxNjA2LCJub29uZmluYWxhcmFiaWMiLDY1MjU0LCJub29uZ2h1bm5hYXJhYmljIiwxNzIyLCJub29uZ2h1bm5hZmluYWxhcmFiaWMiLDY0NDE1LCJub29uaW5pdGlhbGFyYWJpYyIsNjUyNTUsIm5vb25qZWVtaW5pdGlhbGFyYWJpYyIsNjQ3MjIsIm5vb25qZWVtaXNvbGF0ZWRhcmFiaWMiLDY0NTg3LCJub29ubWVkaWFsYXJhYmljIiw2NTI1Niwibm9vbm1lZW1pbml0aWFsYXJhYmljIiw2NDcyNSwibm9vbm1lZW1pc29sYXRlZGFyYWJpYyIsNjQ1OTAsIm5vb25ub29uZmluYWxhcmFiaWMiLDY0NjUzLCJub3Rjb250YWlucyIsODcxNiwibm90ZWxlbWVudCIsODcxMywibm90ZWxlbWVudG9mIiw4NzEzLCJub3RlcXVhbCIsODgwMCwibm90Z3JlYXRlciIsODgxNSwibm90Z3JlYXRlcm5vcmVxdWFsIiw4ODE3LCJub3RncmVhdGVybm9ybGVzcyIsODgyNSwibm90aWRlbnRpY2FsIiw4ODAyLCJub3RsZXNzIiw4ODE0LCJub3RsZXNzbm9yZXF1YWwiLDg4MTYsIm5vdHBhcmFsbGVsIiw4NzQyLCJub3RwcmVjZWRlcyIsODgzMiwibm90c3Vic2V0Iiw4ODM2LCJub3RzdWNjZWVkcyIsODgzMywibm90c3VwZXJzZXQiLDg4MzcsIm5vd2FybWVuaWFuIiwxMzk4LCJucGFyZW4iLDkzODUsIm5zc3F1YXJlIiwxMzIzMywibnN1cGVyaW9yIiw4MzE5LCJudGlsZGUiLDI0MSwibnUiLDk1NywibnVoaXJhZ2FuYSIsMTIzOTYsIm51a2F0YWthbmEiLDEyNDkyLCJudWthdGFrYW5haGFsZndpZHRoIiw2NTQxNSwibnVrdGFiZW5nYWxpIiwyNDkyLCJudWt0YWRldmEiLDIzNjQsIm51a3RhZ3VqYXJhdGkiLDI3NDgsIm51a3RhZ3VybXVraGkiLDI2MjAsIm51bWJlcnNpZ24iLDM1LCJudW1iZXJzaWdubW9ub3NwYWNlIiw2NTI4MywibnVtYmVyc2lnbnNtYWxsIiw2NTExOSwibnVtZXJhbHNpZ25ncmVlayIsODg0LCJudW1lcmFsc2lnbmxvd2VyZ3JlZWsiLDg4NSwibnVtZXJvIiw4NDcwLCJudW4iLDE1MDQsIm51bmRhZ2VzaCIsNjQzMjAsIm51bmRhZ2VzaGhlYnJldyIsNjQzMjAsIm51bmhlYnJldyIsMTUwNCwibnZzcXVhcmUiLDEzMjM3LCJud3NxdWFyZSIsMTMyNDMsIm55YWJlbmdhbGkiLDI0NjIsIm55YWRldmEiLDIzMzQsIm55YWd1amFyYXRpIiwyNzE4LCJueWFndXJtdWtoaSIsMjU5MCwibyIsMTExLCJvYWN1dGUiLDI0Mywib2FuZ3RoYWkiLDM2MjksIm9iYXJyZWQiLDYyOSwib2JhcnJlZGN5cmlsbGljIiwxMjU3LCJvYmFycmVkZGllcmVzaXNjeXJpbGxpYyIsMTI1OSwib2JlbmdhbGkiLDI0NTEsIm9ib3BvbW9mbyIsMTI1NzEsIm9icmV2ZSIsMzM1LCJvY2FuZHJhZGV2YSIsMjMyMSwib2NhbmRyYWd1amFyYXRpIiwyNzA1LCJvY2FuZHJhdm93ZWxzaWduZGV2YSIsMjM3Nywib2NhbmRyYXZvd2Vsc2lnbmd1amFyYXRpIiwyNzYxLCJvY2Fyb24iLDQ2Niwib2NpcmNsZSIsOTQzOCwib2NpcmN1bWZsZXgiLDI0NCwib2NpcmN1bWZsZXhhY3V0ZSIsNzg4OSwib2NpcmN1bWZsZXhkb3RiZWxvdyIsNzg5Nywib2NpcmN1bWZsZXhncmF2ZSIsNzg5MSwib2NpcmN1bWZsZXhob29rYWJvdmUiLDc4OTMsIm9jaXJjdW1mbGV4dGlsZGUiLDc4OTUsIm9jeXJpbGxpYyIsMTA4Niwib2RibGFjdXRlIiwzMzcsIm9kYmxncmF2ZSIsNTI1LCJvZGV2YSIsMjMyMywib2RpZXJlc2lzIiwyNDYsIm9kaWVyZXNpc2N5cmlsbGljIiwxMjU1LCJvZG90YmVsb3ciLDc4ODUsIm9lIiwzMzksIm9la29yZWFuIiwxMjYzNCwib2dvbmVrIiw3MzEsIm9nb25la2NtYiIsODA4LCJvZ3JhdmUiLDI0Miwib2d1amFyYXRpIiwyNzA3LCJvaGFybWVuaWFuIiwxNDEzLCJvaGlyYWdhbmEiLDEyMzYyLCJvaG9va2Fib3ZlIiw3ODg3LCJvaG9ybiIsNDE3LCJvaG9ybmFjdXRlIiw3ODk5LCJvaG9ybmRvdGJlbG93Iiw3OTA3LCJvaG9ybmdyYXZlIiw3OTAxLCJvaG9ybmhvb2thYm92ZSIsNzkwMywib2hvcm50aWxkZSIsNzkwNSwib2h1bmdhcnVtbGF1dCIsMzM3LCJvaSIsNDE5LCJvaW52ZXJ0ZWRicmV2ZSIsNTI3LCJva2F0YWthbmEiLDEyNDU4LCJva2F0YWthbmFoYWxmd2lkdGgiLDY1Mzk3LCJva29yZWFuIiwxMjYzMSwib2xlaGVicmV3IiwxNDUxLCJvbWFjcm9uIiwzMzMsIm9tYWNyb25hY3V0ZSIsNzc2Mywib21hY3JvbmdyYXZlIiw3NzYxLCJvbWRldmEiLDIzODQsIm9tZWdhIiw5NjksIm9tZWdhMSIsOTgyLCJvbWVnYWN5cmlsbGljIiwxMTIxLCJvbWVnYWxhdGluY2xvc2VkIiw2MzEsIm9tZWdhcm91bmRjeXJpbGxpYyIsMTE0Nywib21lZ2F0aXRsb2N5cmlsbGljIiwxMTQ5LCJvbWVnYXRvbm9zIiw5NzQsIm9tZ3VqYXJhdGkiLDI3NjgsIm9taWNyb24iLDk1OSwib21pY3JvbnRvbm9zIiw5NzIsIm9tb25vc3BhY2UiLDY1MzU5LCJvbmUiLDQ5LCJvbmVhcmFiaWMiLDE2MzMsIm9uZWJlbmdhbGkiLDI1MzUsIm9uZWNpcmNsZSIsOTMxMiwib25lY2lyY2xlaW52ZXJzZXNhbnNzZXJpZiIsMTAxMjIsIm9uZWRldmEiLDI0MDcsIm9uZWRvdGVubGVhZGVyIiw4MjI4LCJvbmVlaWdodGgiLDg1MzksIm9uZWZpdHRlZCIsNjMxOTYsIm9uZWd1amFyYXRpIiwyNzkxLCJvbmVndXJtdWtoaSIsMjY2Mywib25laGFja2FyYWJpYyIsMTYzMywib25laGFsZiIsMTg5LCJvbmVoYW5nemhvdSIsMTIzMjEsIm9uZWlkZW9ncmFwaGljcGFyZW4iLDEyODMyLCJvbmVpbmZlcmlvciIsODMyMSwib25lbW9ub3NwYWNlIiw2NTI5Nywib25lbnVtZXJhdG9yYmVuZ2FsaSIsMjU0OCwib25lb2xkc3R5bGUiLDYzMjgxLCJvbmVwYXJlbiIsOTMzMiwib25lcGVyaW9kIiw5MzUyLCJvbmVwZXJzaWFuIiwxNzc3LCJvbmVxdWFydGVyIiwxODgsIm9uZXJvbWFuIiw4NTYwLCJvbmVzdXBlcmlvciIsMTg1LCJvbmV0aGFpIiwzNjY1LCJvbmV0aGlyZCIsODUzMSwib29nb25layIsNDkxLCJvb2dvbmVrbWFjcm9uIiw0OTMsIm9vZ3VybXVraGkiLDI1NzksIm9vbWF0cmFndXJtdWtoaSIsMjYzNSwib29wZW4iLDU5Niwib3BhcmVuIiw5Mzg2LCJvcGVuYnVsbGV0Iiw5NzAyLCJvcHRpb24iLDg5OTcsIm9yZGZlbWluaW5lIiwxNzAsIm9yZG1hc2N1bGluZSIsMTg2LCJvcnRob2dvbmFsIiw4NzM1LCJvc2hvcnRkZXZhIiwyMzIyLCJvc2hvcnR2b3dlbHNpZ25kZXZhIiwyMzc4LCJvc2xhc2giLDI0OCwib3NsYXNoYWN1dGUiLDUxMSwib3NtYWxsaGlyYWdhbmEiLDEyMzYxLCJvc21hbGxrYXRha2FuYSIsMTI0NTcsIm9zbWFsbGthdGFrYW5haGFsZndpZHRoIiw2NTM4Nywib3N0cm9rZWFjdXRlIiw1MTEsIm9zdXBlcmlvciIsNjMyMTYsIm90Y3lyaWxsaWMiLDExNTEsIm90aWxkZSIsMjQ1LCJvdGlsZGVhY3V0ZSIsNzc1Nywib3RpbGRlZGllcmVzaXMiLDc3NTksIm91Ym9wb21vZm8iLDEyNTc3LCJvdmVybGluZSIsODI1NCwib3ZlcmxpbmVjZW50ZXJsaW5lIiw2NTA5OCwib3ZlcmxpbmVjbWIiLDc3Mywib3ZlcmxpbmVkYXNoZWQiLDY1MDk3LCJvdmVybGluZWRibHdhdnkiLDY1MTAwLCJvdmVybGluZXdhdnkiLDY1MDk5LCJvdmVyc2NvcmUiLDE3NSwib3Zvd2Vsc2lnbmJlbmdhbGkiLDI1MDcsIm92b3dlbHNpZ25kZXZhIiwyMzc5LCJvdm93ZWxzaWduZ3VqYXJhdGkiLDI3NjMsInAiLDExMiwicGFhbXBzc3F1YXJlIiwxMzE4NCwicGFhc2VudG9zcXVhcmUiLDEzMDk5LCJwYWJlbmdhbGkiLDI0NzQsInBhY3V0ZSIsNzc2NSwicGFkZXZhIiwyMzQ2LCJwYWdlZG93biIsODY3MSwicGFnZXVwIiw4NjcwLCJwYWd1amFyYXRpIiwyNzMwLCJwYWd1cm11a2hpIiwyNjAyLCJwYWhpcmFnYW5hIiwxMjQwMSwicGFpeWFubm9pdGhhaSIsMzYzMSwicGFrYXRha2FuYSIsMTI0OTcsInBhbGF0YWxpemF0aW9uY3lyaWxsaWNjbWIiLDExNTYsInBhbG9jaGthY3lyaWxsaWMiLDEyMTYsInBhbnNpb3Nrb3JlYW4iLDEyNjcxLCJwYXJhZ3JhcGgiLDE4MiwicGFyYWxsZWwiLDg3NDEsInBhcmVubGVmdCIsNDAsInBhcmVubGVmdGFsdG9uZWFyYWJpYyIsNjQ4MzAsInBhcmVubGVmdGJ0Iiw2MzcyNSwicGFyZW5sZWZ0ZXgiLDYzNzI0LCJwYXJlbmxlZnRpbmZlcmlvciIsODMzMywicGFyZW5sZWZ0bW9ub3NwYWNlIiw2NTI4OCwicGFyZW5sZWZ0c21hbGwiLDY1MTEzLCJwYXJlbmxlZnRzdXBlcmlvciIsODMxNywicGFyZW5sZWZ0dHAiLDYzNzIzLCJwYXJlbmxlZnR2ZXJ0aWNhbCIsNjUwNzcsInBhcmVucmlnaHQiLDQxLCJwYXJlbnJpZ2h0YWx0b25lYXJhYmljIiw2NDgzMSwicGFyZW5yaWdodGJ0Iiw2MzczNiwicGFyZW5yaWdodGV4Iiw2MzczNSwicGFyZW5yaWdodGluZmVyaW9yIiw4MzM0LCJwYXJlbnJpZ2h0bW9ub3NwYWNlIiw2NTI4OSwicGFyZW5yaWdodHNtYWxsIiw2NTExNCwicGFyZW5yaWdodHN1cGVyaW9yIiw4MzE4LCJwYXJlbnJpZ2h0dHAiLDYzNzM0LCJwYXJlbnJpZ2h0dmVydGljYWwiLDY1MDc4LCJwYXJ0aWFsZGlmZiIsODcwNiwicGFzZXFoZWJyZXciLDE0NzIsInBhc2h0YWhlYnJldyIsMTQzMywicGFzcXVhcmUiLDEzMjI1LCJwYXRhaCIsMTQ2MywicGF0YWgxMSIsMTQ2MywicGF0YWgxZCIsMTQ2MywicGF0YWgyYSIsMTQ2MywicGF0YWhoZWJyZXciLDE0NjMsInBhdGFobmFycm93aGVicmV3IiwxNDYzLCJwYXRhaHF1YXJ0ZXJoZWJyZXciLDE0NjMsInBhdGFod2lkZWhlYnJldyIsMTQ2MywicGF6ZXJoZWJyZXciLDE0NDEsInBib3BvbW9mbyIsMTI1NTAsInBjaXJjbGUiLDk0MzksInBkb3RhY2NlbnQiLDc3NjcsInBlIiwxNTA4LCJwZWN5cmlsbGljIiwxMDg3LCJwZWRhZ2VzaCIsNjQzMjQsInBlZGFnZXNoaGVicmV3Iiw2NDMyNCwicGVlemlzcXVhcmUiLDEzMTE1LCJwZWZpbmFsZGFnZXNoaGVicmV3Iiw2NDMyMywicGVoYXJhYmljIiwxNjYyLCJwZWhhcm1lbmlhbiIsMTQwMiwicGVoZWJyZXciLDE1MDgsInBlaGZpbmFsYXJhYmljIiw2NDM0MywicGVoaW5pdGlhbGFyYWJpYyIsNjQzNDQsInBlaGlyYWdhbmEiLDEyNDEwLCJwZWhtZWRpYWxhcmFiaWMiLDY0MzQ1LCJwZWthdGFrYW5hIiwxMjUwNiwicGVtaWRkbGVob29rY3lyaWxsaWMiLDExOTEsInBlcmFmZWhlYnJldyIsNjQzMzQsInBlcmNlbnQiLDM3LCJwZXJjZW50YXJhYmljIiwxNjQyLCJwZXJjZW50bW9ub3NwYWNlIiw2NTI4NSwicGVyY2VudHNtYWxsIiw2NTEzMCwicGVyaW9kIiw0NiwicGVyaW9kYXJtZW5pYW4iLDE0MTcsInBlcmlvZGNlbnRlcmVkIiwxODMsInBlcmlvZGhhbGZ3aWR0aCIsNjUzNzcsInBlcmlvZGluZmVyaW9yIiw2MzIwNywicGVyaW9kbW9ub3NwYWNlIiw2NTI5NCwicGVyaW9kc21hbGwiLDY1MTA2LCJwZXJpb2RzdXBlcmlvciIsNjMyMDgsInBlcmlzcG9tZW5pZ3JlZWtjbWIiLDgzNCwicGVycGVuZGljdWxhciIsODg2OSwicGVydGhvdXNhbmQiLDgyNDAsInBlc2V0YSIsODM1OSwicGZzcXVhcmUiLDEzMTk0LCJwaGFiZW5nYWxpIiwyNDc1LCJwaGFkZXZhIiwyMzQ3LCJwaGFndWphcmF0aSIsMjczMSwicGhhZ3VybXVraGkiLDI2MDMsInBoaSIsOTY2LCJwaGkxIiw5ODEsInBoaWV1cGhhY2lyY2xla29yZWFuIiwxMjkyMiwicGhpZXVwaGFwYXJlbmtvcmVhbiIsMTI4MjYsInBoaWV1cGhjaXJjbGVrb3JlYW4iLDEyOTA4LCJwaGlldXBoa29yZWFuIiwxMjYyMSwicGhpZXVwaHBhcmVua29yZWFuIiwxMjgxMiwicGhpbGF0aW4iLDYzMiwicGhpbnRodXRoYWkiLDM2NDIsInBoaXN5bWJvbGdyZWVrIiw5ODEsInBob29rIiw0MjEsInBob3BoYW50aGFpIiwzNjE0LCJwaG9waHVuZ3RoYWkiLDM2MTIsInBob3NhbXBoYW90aGFpIiwzNjE2LCJwaSIsOTYwLCJwaWV1cGFjaXJjbGVrb3JlYW4iLDEyOTE1LCJwaWV1cGFwYXJlbmtvcmVhbiIsMTI4MTksInBpZXVwY2lldWNrb3JlYW4iLDEyNjYyLCJwaWV1cGNpcmNsZWtvcmVhbiIsMTI5MDEsInBpZXVwa2l5ZW9ra29yZWFuIiwxMjY1OCwicGlldXBrb3JlYW4iLDEyNjEwLCJwaWV1cHBhcmVua29yZWFuIiwxMjgwNSwicGlldXBzaW9za2l5ZW9ra29yZWFuIiwxMjY2MCwicGlldXBzaW9za29yZWFuIiwxMjYxMiwicGlldXBzaW9zdGlrZXV0a29yZWFuIiwxMjY2MSwicGlldXB0aGlldXRoa29yZWFuIiwxMjY2MywicGlldXB0aWtldXRrb3JlYW4iLDEyNjU5LCJwaWhpcmFnYW5hIiwxMjQwNCwicGlrYXRha2FuYSIsMTI1MDAsInBpc3ltYm9sZ3JlZWsiLDk4MiwicGl3cmFybWVuaWFuIiwxNDExLCJwbHVzIiw0MywicGx1c2JlbG93Y21iIiw3OTksInBsdXNjaXJjbGUiLDg4NTMsInBsdXNtaW51cyIsMTc3LCJwbHVzbW9kIiw3MjYsInBsdXNtb25vc3BhY2UiLDY1MjkxLCJwbHVzc21hbGwiLDY1MTIyLCJwbHVzc3VwZXJpb3IiLDgzMTQsInBtb25vc3BhY2UiLDY1MzYwLCJwbXNxdWFyZSIsMTMyNzIsInBvaGlyYWdhbmEiLDEyNDEzLCJwb2ludGluZ2luZGV4ZG93bndoaXRlIiw5NzU5LCJwb2ludGluZ2luZGV4bGVmdHdoaXRlIiw5NzU2LCJwb2ludGluZ2luZGV4cmlnaHR3aGl0ZSIsOTc1OCwicG9pbnRpbmdpbmRleHVwd2hpdGUiLDk3NTcsInBva2F0YWthbmEiLDEyNTA5LCJwb3BsYXRoYWkiLDM2MTEsInBvc3RhbG1hcmsiLDEyMzA2LCJwb3N0YWxtYXJrZmFjZSIsMTIzMjAsInBwYXJlbiIsOTM4NywicHJlY2VkZXMiLDg4MjYsInByZXNjcmlwdGlvbiIsODQ3OCwicHJpbWVtb2QiLDY5NywicHJpbWVyZXZlcnNlZCIsODI0NSwicHJvZHVjdCIsODcxOSwicHJvamVjdGl2ZSIsODk2NSwicHJvbG9uZ2Vka2FuYSIsMTI1NDAsInByb3BlbGxvciIsODk4NCwicHJvcGVyc3Vic2V0Iiw4ODM0LCJwcm9wZXJzdXBlcnNldCIsODgzNSwicHJvcG9ydGlvbiIsODc1OSwicHJvcG9ydGlvbmFsIiw4NzMzLCJwc2kiLDk2OCwicHNpY3lyaWxsaWMiLDExMzcsInBzaWxpcG5ldW1hdGFjeXJpbGxpY2NtYiIsMTE1OCwicHNzcXVhcmUiLDEzMjMyLCJwdWhpcmFnYW5hIiwxMjQwNywicHVrYXRha2FuYSIsMTI1MDMsInB2c3F1YXJlIiwxMzIzNiwicHdzcXVhcmUiLDEzMjQyLCJxIiwxMTMsInFhZGV2YSIsMjM5MiwicWFkbWFoZWJyZXciLDE0NDgsInFhZmFyYWJpYyIsMTYwMiwicWFmZmluYWxhcmFiaWMiLDY1MjM4LCJxYWZpbml0aWFsYXJhYmljIiw2NTIzOSwicWFmbWVkaWFsYXJhYmljIiw2NTI0MCwicWFtYXRzIiwxNDY0LCJxYW1hdHMxMCIsMTQ2NCwicWFtYXRzMWEiLDE0NjQsInFhbWF0czFjIiwxNDY0LCJxYW1hdHMyNyIsMTQ2NCwicWFtYXRzMjkiLDE0NjQsInFhbWF0czMzIiwxNDY0LCJxYW1hdHNkZSIsMTQ2NCwicWFtYXRzaGVicmV3IiwxNDY0LCJxYW1hdHNuYXJyb3doZWJyZXciLDE0NjQsInFhbWF0c3FhdGFuaGVicmV3IiwxNDY0LCJxYW1hdHNxYXRhbm5hcnJvd2hlYnJldyIsMTQ2NCwicWFtYXRzcWF0YW5xdWFydGVyaGVicmV3IiwxNDY0LCJxYW1hdHNxYXRhbndpZGVoZWJyZXciLDE0NjQsInFhbWF0c3F1YXJ0ZXJoZWJyZXciLDE0NjQsInFhbWF0c3dpZGVoZWJyZXciLDE0NjQsInFhcm5leXBhcmFoZWJyZXciLDE0MzksInFib3BvbW9mbyIsMTI1NjEsInFjaXJjbGUiLDk0NDAsInFob29rIiw2NzIsInFtb25vc3BhY2UiLDY1MzYxLCJxb2YiLDE1MTEsInFvZmRhZ2VzaCIsNjQzMjcsInFvZmRhZ2VzaGhlYnJldyIsNjQzMjcsInFvZmhlYnJldyIsMTUxMSwicXBhcmVuIiw5Mzg4LCJxdWFydGVybm90ZSIsOTgzMywicXVidXRzIiwxNDY3LCJxdWJ1dHMxOCIsMTQ2NywicXVidXRzMjUiLDE0NjcsInF1YnV0czMxIiwxNDY3LCJxdWJ1dHNoZWJyZXciLDE0NjcsInF1YnV0c25hcnJvd2hlYnJldyIsMTQ2NywicXVidXRzcXVhcnRlcmhlYnJldyIsMTQ2NywicXVidXRzd2lkZWhlYnJldyIsMTQ2NywicXVlc3Rpb24iLDYzLCJxdWVzdGlvbmFyYWJpYyIsMTU2NywicXVlc3Rpb25hcm1lbmlhbiIsMTM3NCwicXVlc3Rpb25kb3duIiwxOTEsInF1ZXN0aW9uZG93bnNtYWxsIiw2MzQyMywicXVlc3Rpb25ncmVlayIsODk0LCJxdWVzdGlvbm1vbm9zcGFjZSIsNjUzMTEsInF1ZXN0aW9uc21hbGwiLDYzMjk1LCJxdW90ZWRibCIsMzQsInF1b3RlZGJsYmFzZSIsODIyMiwicXVvdGVkYmxsZWZ0Iiw4MjIwLCJxdW90ZWRibG1vbm9zcGFjZSIsNjUyODIsInF1b3RlZGJscHJpbWUiLDEyMzE4LCJxdW90ZWRibHByaW1lcmV2ZXJzZWQiLDEyMzE3LCJxdW90ZWRibHJpZ2h0Iiw4MjIxLCJxdW90ZWxlZnQiLDgyMTYsInF1b3RlbGVmdHJldmVyc2VkIiw4MjE5LCJxdW90ZXJldmVyc2VkIiw4MjE5LCJxdW90ZXJpZ2h0Iiw4MjE3LCJxdW90ZXJpZ2h0biIsMzI5LCJxdW90ZXNpbmdsYmFzZSIsODIxOCwicXVvdGVzaW5nbGUiLDM5LCJxdW90ZXNpbmdsZW1vbm9zcGFjZSIsNjUyODcsInIiLDExNCwicmFhcm1lbmlhbiIsMTQwNCwicmFiZW5nYWxpIiwyNDgwLCJyYWN1dGUiLDM0MSwicmFkZXZhIiwyMzUyLCJyYWRpY2FsIiw4NzMwLCJyYWRpY2FsZXgiLDYzNzE3LCJyYWRvdmVyc3NxdWFyZSIsMTMyMzAsInJhZG92ZXJzc3F1YXJlZHNxdWFyZSIsMTMyMzEsInJhZHNxdWFyZSIsMTMyMjksInJhZmUiLDE0NzEsInJhZmVoZWJyZXciLDE0NzEsInJhZ3VqYXJhdGkiLDI3MzYsInJhZ3VybXVraGkiLDI2MDgsInJhaGlyYWdhbmEiLDEyNDI1LCJyYWthdGFrYW5hIiwxMjUyMSwicmFrYXRha2FuYWhhbGZ3aWR0aCIsNjU0MzEsInJhbG93ZXJkaWFnb25hbGJlbmdhbGkiLDI1NDUsInJhbWlkZGxlZGlhZ29uYWxiZW5nYWxpIiwyNTQ0LCJyYW1zaG9ybiIsNjEyLCJyYXRpbyIsODc1OCwicmJvcG9tb2ZvIiwxMjU2NiwicmNhcm9uIiwzNDUsInJjZWRpbGxhIiwzNDMsInJjaXJjbGUiLDk0NDEsInJjb21tYWFjY2VudCIsMzQzLCJyZGJsZ3JhdmUiLDUyOSwicmRvdGFjY2VudCIsNzc2OSwicmRvdGJlbG93Iiw3NzcxLCJyZG90YmVsb3dtYWNyb24iLDc3NzMsInJlZmVyZW5jZW1hcmsiLDgyNTEsInJlZmxleHN1YnNldCIsODgzOCwicmVmbGV4c3VwZXJzZXQiLDg4MzksInJlZ2lzdGVyZWQiLDE3NCwicmVnaXN0ZXJzYW5zIiw2MzcyMCwicmVnaXN0ZXJzZXJpZiIsNjMxOTQsInJlaGFyYWJpYyIsMTU4NSwicmVoYXJtZW5pYW4iLDE0MDgsInJlaGZpbmFsYXJhYmljIiw2NTE5OCwicmVoaXJhZ2FuYSIsMTI0MjgsInJla2F0YWthbmEiLDEyNTI0LCJyZWthdGFrYW5haGFsZndpZHRoIiw2NTQzNCwicmVzaCIsMTUxMiwicmVzaGRhZ2VzaGhlYnJldyIsNjQzMjgsInJlc2hoZWJyZXciLDE1MTIsInJldmVyc2VkdGlsZGUiLDg3NjUsInJldmlhaGVicmV3IiwxNDMxLCJyZXZpYW11Z3Jhc2hoZWJyZXciLDE0MzEsInJldmxvZ2ljYWxub3QiLDg5NzYsInJmaXNoaG9vayIsNjM4LCJyZmlzaGhvb2tyZXZlcnNlZCIsNjM5LCJyaGFiZW5nYWxpIiwyNTI1LCJyaGFkZXZhIiwyMzk3LCJyaG8iLDk2MSwicmhvb2siLDYzNywicmhvb2t0dXJuZWQiLDYzNSwicmhvb2t0dXJuZWRzdXBlcmlvciIsNjkzLCJyaG9zeW1ib2xncmVlayIsMTAwOSwicmhvdGljaG9va21vZCIsNzM0LCJyaWV1bGFjaXJjbGVrb3JlYW4iLDEyOTEzLCJyaWV1bGFwYXJlbmtvcmVhbiIsMTI4MTcsInJpZXVsY2lyY2xla29yZWFuIiwxMjg5OSwicmlldWxoaWV1aGtvcmVhbiIsMTI2MDgsInJpZXVsa2l5ZW9ra29yZWFuIiwxMjYwMiwicmlldWxraXllb2tzaW9za29yZWFuIiwxMjY0OSwicmlldWxrb3JlYW4iLDEyNjAxLCJyaWV1bG1pZXVta29yZWFuIiwxMjYwMywicmlldWxwYW5zaW9za29yZWFuIiwxMjY1MiwicmlldWxwYXJlbmtvcmVhbiIsMTI4MDMsInJpZXVscGhpZXVwaGtvcmVhbiIsMTI2MDcsInJpZXVscGlldXBrb3JlYW4iLDEyNjA0LCJyaWV1bHBpZXVwc2lvc2tvcmVhbiIsMTI2NTEsInJpZXVsc2lvc2tvcmVhbiIsMTI2MDUsInJpZXVsdGhpZXV0aGtvcmVhbiIsMTI2MDYsInJpZXVsdGlrZXV0a29yZWFuIiwxMjY1MCwicmlldWx5ZW9yaW5oaWV1aGtvcmVhbiIsMTI2NTMsInJpZ2h0YW5nbGUiLDg3MzUsInJpZ2h0dGFja2JlbG93Y21iIiw3OTMsInJpZ2h0dHJpYW5nbGUiLDg4OTUsInJpaGlyYWdhbmEiLDEyNDI2LCJyaWthdGFrYW5hIiwxMjUyMiwicmlrYXRha2FuYWhhbGZ3aWR0aCIsNjU0MzIsInJpbmciLDczMCwicmluZ2JlbG93Y21iIiw4MDUsInJpbmdjbWIiLDc3OCwicmluZ2hhbGZsZWZ0Iiw3MDMsInJpbmdoYWxmbGVmdGFybWVuaWFuIiwxMzY5LCJyaW5naGFsZmxlZnRiZWxvd2NtYiIsNzk2LCJyaW5naGFsZmxlZnRjZW50ZXJlZCIsNzIzLCJyaW5naGFsZnJpZ2h0Iiw3MDIsInJpbmdoYWxmcmlnaHRiZWxvd2NtYiIsODI1LCJyaW5naGFsZnJpZ2h0Y2VudGVyZWQiLDcyMiwicmludmVydGVkYnJldmUiLDUzMSwicml0dG9ydXNxdWFyZSIsMTMxMzcsInJsaW5lYmVsb3ciLDc3NzUsInJsb25nbGVnIiw2MzYsInJsb25nbGVndHVybmVkIiw2MzQsInJtb25vc3BhY2UiLDY1MzYyLCJyb2hpcmFnYW5hIiwxMjQyOSwicm9rYXRha2FuYSIsMTI1MjUsInJva2F0YWthbmFoYWxmd2lkdGgiLDY1NDM1LCJyb3J1YXRoYWkiLDM2MTksInJwYXJlbiIsOTM4OSwicnJhYmVuZ2FsaSIsMjUyNCwicnJhZGV2YSIsMjM1MywicnJhZ3VybXVraGkiLDI2NTIsInJyZWhhcmFiaWMiLDE2ODEsInJyZWhmaW5hbGFyYWJpYyIsNjQzOTcsInJydm9jYWxpY2JlbmdhbGkiLDI1MjgsInJydm9jYWxpY2RldmEiLDI0MDAsInJydm9jYWxpY2d1amFyYXRpIiwyNzg0LCJycnZvY2FsaWN2b3dlbHNpZ25iZW5nYWxpIiwyNTAwLCJycnZvY2FsaWN2b3dlbHNpZ25kZXZhIiwyMzcyLCJycnZvY2FsaWN2b3dlbHNpZ25ndWphcmF0aSIsMjc1NiwicnN1cGVyaW9yIiw2MzIxNywicnRibG9jayIsOTYxNiwicnR1cm5lZCIsNjMzLCJydHVybmVkc3VwZXJpb3IiLDY5MiwicnVoaXJhZ2FuYSIsMTI0MjcsInJ1a2F0YWthbmEiLDEyNTIzLCJydWthdGFrYW5haGFsZndpZHRoIiw2NTQzMywicnVwZWVtYXJrYmVuZ2FsaSIsMjU0NiwicnVwZWVzaWduYmVuZ2FsaSIsMjU0NywicnVwaWFoIiw2MzE5NywicnV0aGFpIiwzNjIwLCJydm9jYWxpY2JlbmdhbGkiLDI0NDMsInJ2b2NhbGljZGV2YSIsMjMxNSwicnZvY2FsaWNndWphcmF0aSIsMjY5OSwicnZvY2FsaWN2b3dlbHNpZ25iZW5nYWxpIiwyNDk5LCJydm9jYWxpY3Zvd2Vsc2lnbmRldmEiLDIzNzEsInJ2b2NhbGljdm93ZWxzaWduZ3VqYXJhdGkiLDI3NTUsInMiLDExNSwic2FiZW5nYWxpIiwyNDg4LCJzYWN1dGUiLDM0Nywic2FjdXRlZG90YWNjZW50Iiw3NzgxLCJzYWRhcmFiaWMiLDE1ODksInNhZGV2YSIsMjM2MCwic2FkZmluYWxhcmFiaWMiLDY1MjEwLCJzYWRpbml0aWFsYXJhYmljIiw2NTIxMSwic2FkbWVkaWFsYXJhYmljIiw2NTIxMiwic2FndWphcmF0aSIsMjc0NCwic2FndXJtdWtoaSIsMjYxNiwic2FoaXJhZ2FuYSIsMTIzNzMsInNha2F0YWthbmEiLDEyNDY5LCJzYWthdGFrYW5haGFsZndpZHRoIiw2NTQwMywic2FsbGFsbGFob3VhbGF5aGV3YXNhbGxhbWFyYWJpYyIsNjUwMTgsInNhbWVraCIsMTUwNSwic2FtZWtoZGFnZXNoIiw2NDMyMSwic2FtZWtoZGFnZXNoaGVicmV3Iiw2NDMyMSwic2FtZWtoaGVicmV3IiwxNTA1LCJzYXJhYWF0aGFpIiwzNjM0LCJzYXJhYWV0aGFpIiwzNjQ5LCJzYXJhYWltYWltYWxhaXRoYWkiLDM2NTIsInNhcmFhaW1haW11YW50aGFpIiwzNjUxLCJzYXJhYW10aGFpIiwzNjM1LCJzYXJhYXRoYWkiLDM2MzIsInNhcmFldGhhaSIsMzY0OCwic2FyYWlpbGVmdHRoYWkiLDYzNjIyLCJzYXJhaWl0aGFpIiwzNjM3LCJzYXJhaWxlZnR0aGFpIiw2MzYyMSwic2FyYWl0aGFpIiwzNjM2LCJzYXJhb3RoYWkiLDM2NTAsInNhcmF1ZWVsZWZ0dGhhaSIsNjM2MjQsInNhcmF1ZWV0aGFpIiwzNjM5LCJzYXJhdWVsZWZ0dGhhaSIsNjM2MjMsInNhcmF1ZXRoYWkiLDM2MzgsInNhcmF1dGhhaSIsMzY0MCwic2FyYXV1dGhhaSIsMzY0MSwic2JvcG9tb2ZvIiwxMjU2OSwic2Nhcm9uIiwzNTMsInNjYXJvbmRvdGFjY2VudCIsNzc4Mywic2NlZGlsbGEiLDM1MSwic2Nod2EiLDYwMSwic2Nod2FjeXJpbGxpYyIsMTI0MSwic2Nod2FkaWVyZXNpc2N5cmlsbGljIiwxMjQzLCJzY2h3YWhvb2siLDYwMiwic2NpcmNsZSIsOTQ0Miwic2NpcmN1bWZsZXgiLDM0OSwic2NvbW1hYWNjZW50Iiw1MzcsInNkb3RhY2NlbnQiLDc3NzcsInNkb3RiZWxvdyIsNzc3OSwic2RvdGJlbG93ZG90YWNjZW50Iiw3Nzg1LCJzZWFndWxsYmVsb3djbWIiLDgyOCwic2Vjb25kIiw4MjQzLCJzZWNvbmR0b25lY2hpbmVzZSIsNzE0LCJzZWN0aW9uIiwxNjcsInNlZW5hcmFiaWMiLDE1ODcsInNlZW5maW5hbGFyYWJpYyIsNjUyMDIsInNlZW5pbml0aWFsYXJhYmljIiw2NTIwMywic2Vlbm1lZGlhbGFyYWJpYyIsNjUyMDQsInNlZ29sIiwxNDYyLCJzZWdvbDEzIiwxNDYyLCJzZWdvbDFmIiwxNDYyLCJzZWdvbDJjIiwxNDYyLCJzZWdvbGhlYnJldyIsMTQ2Miwic2Vnb2xuYXJyb3doZWJyZXciLDE0NjIsInNlZ29scXVhcnRlcmhlYnJldyIsMTQ2Miwic2Vnb2x0YWhlYnJldyIsMTQyNiwic2Vnb2x3aWRlaGVicmV3IiwxNDYyLCJzZWhhcm1lbmlhbiIsMTQwNSwic2VoaXJhZ2FuYSIsMTIzNzksInNla2F0YWthbmEiLDEyNDc1LCJzZWthdGFrYW5haGFsZndpZHRoIiw2NTQwNiwic2VtaWNvbG9uIiw1OSwic2VtaWNvbG9uYXJhYmljIiwxNTYzLCJzZW1pY29sb25tb25vc3BhY2UiLDY1MzA3LCJzZW1pY29sb25zbWFsbCIsNjUxMDgsInNlbWl2b2ljZWRtYXJra2FuYSIsMTI0NDQsInNlbWl2b2ljZWRtYXJra2FuYWhhbGZ3aWR0aCIsNjU0MzksInNlbnRpc3F1YXJlIiwxMzA5MCwic2VudG9zcXVhcmUiLDEzMDkxLCJzZXZlbiIsNTUsInNldmVuYXJhYmljIiwxNjM5LCJzZXZlbmJlbmdhbGkiLDI1NDEsInNldmVuY2lyY2xlIiw5MzE4LCJzZXZlbmNpcmNsZWludmVyc2VzYW5zc2VyaWYiLDEwMTI4LCJzZXZlbmRldmEiLDI0MTMsInNldmVuZWlnaHRocyIsODU0Miwic2V2ZW5ndWphcmF0aSIsMjc5Nywic2V2ZW5ndXJtdWtoaSIsMjY2OSwic2V2ZW5oYWNrYXJhYmljIiwxNjM5LCJzZXZlbmhhbmd6aG91IiwxMjMyNywic2V2ZW5pZGVvZ3JhcGhpY3BhcmVuIiwxMjgzOCwic2V2ZW5pbmZlcmlvciIsODMyNywic2V2ZW5tb25vc3BhY2UiLDY1MzAzLCJzZXZlbm9sZHN0eWxlIiw2MzI4Nywic2V2ZW5wYXJlbiIsOTMzOCwic2V2ZW5wZXJpb2QiLDkzNTgsInNldmVucGVyc2lhbiIsMTc4Mywic2V2ZW5yb21hbiIsODU2Niwic2V2ZW5zdXBlcmlvciIsODMxMSwic2V2ZW50ZWVuY2lyY2xlIiw5MzI4LCJzZXZlbnRlZW5wYXJlbiIsOTM0OCwic2V2ZW50ZWVucGVyaW9kIiw5MzY4LCJzZXZlbnRoYWkiLDM2NzEsInNmdGh5cGhlbiIsMTczLCJzaGFhcm1lbmlhbiIsMTM5OSwic2hhYmVuZ2FsaSIsMjQ4Niwic2hhY3lyaWxsaWMiLDEwOTYsInNoYWRkYWFyYWJpYyIsMTYxNywic2hhZGRhZGFtbWFhcmFiaWMiLDY0NjA5LCJzaGFkZGFkYW1tYXRhbmFyYWJpYyIsNjQ2MDYsInNoYWRkYWZhdGhhYXJhYmljIiw2NDYwOCwic2hhZGRha2FzcmFhcmFiaWMiLDY0NjEwLCJzaGFkZGFrYXNyYXRhbmFyYWJpYyIsNjQ2MDcsInNoYWRlIiw5NjE4LCJzaGFkZWRhcmsiLDk2MTksInNoYWRlbGlnaHQiLDk2MTcsInNoYWRlbWVkaXVtIiw5NjE4LCJzaGFkZXZhIiwyMzU4LCJzaGFndWphcmF0aSIsMjc0Miwic2hhZ3VybXVraGkiLDI2MTQsInNoYWxzaGVsZXRoZWJyZXciLDE0MjcsInNoYm9wb21vZm8iLDEyNTY1LCJzaGNoYWN5cmlsbGljIiwxMDk3LCJzaGVlbmFyYWJpYyIsMTU4OCwic2hlZW5maW5hbGFyYWJpYyIsNjUyMDYsInNoZWVuaW5pdGlhbGFyYWJpYyIsNjUyMDcsInNoZWVubWVkaWFsYXJhYmljIiw2NTIwOCwic2hlaWNvcHRpYyIsOTk1LCJzaGVxZWwiLDgzNjIsInNoZXFlbGhlYnJldyIsODM2Miwic2hldmEiLDE0NTYsInNoZXZhMTE1IiwxNDU2LCJzaGV2YTE1IiwxNDU2LCJzaGV2YTIyIiwxNDU2LCJzaGV2YTJlIiwxNDU2LCJzaGV2YWhlYnJldyIsMTQ1Niwic2hldmFuYXJyb3doZWJyZXciLDE0NTYsInNoZXZhcXVhcnRlcmhlYnJldyIsMTQ1Niwic2hldmF3aWRlaGVicmV3IiwxNDU2LCJzaGhhY3lyaWxsaWMiLDEyMTEsInNoaW1hY29wdGljIiwxMDA1LCJzaGluIiwxNTEzLCJzaGluZGFnZXNoIiw2NDMyOSwic2hpbmRhZ2VzaGhlYnJldyIsNjQzMjksInNoaW5kYWdlc2hzaGluZG90Iiw2NDMwMCwic2hpbmRhZ2VzaHNoaW5kb3RoZWJyZXciLDY0MzAwLCJzaGluZGFnZXNoc2luZG90Iiw2NDMwMSwic2hpbmRhZ2VzaHNpbmRvdGhlYnJldyIsNjQzMDEsInNoaW5kb3RoZWJyZXciLDE0NzMsInNoaW5oZWJyZXciLDE1MTMsInNoaW5zaGluZG90Iiw2NDI5OCwic2hpbnNoaW5kb3RoZWJyZXciLDY0Mjk4LCJzaGluc2luZG90Iiw2NDI5OSwic2hpbnNpbmRvdGhlYnJldyIsNjQyOTksInNob29rIiw2NDIsInNpZ21hIiw5NjMsInNpZ21hMSIsOTYyLCJzaWdtYWZpbmFsIiw5NjIsInNpZ21hbHVuYXRlc3ltYm9sZ3JlZWsiLDEwMTAsInNpaGlyYWdhbmEiLDEyMzc1LCJzaWthdGFrYW5hIiwxMjQ3MSwic2lrYXRha2FuYWhhbGZ3aWR0aCIsNjU0MDQsInNpbHVxaGVicmV3IiwxNDY5LCJzaWx1cWxlZnRoZWJyZXciLDE0NjksInNpbWlsYXIiLDg3NjQsInNpbmRvdGhlYnJldyIsMTQ3NCwic2lvc2FjaXJjbGVrb3JlYW4iLDEyOTE2LCJzaW9zYXBhcmVua29yZWFuIiwxMjgyMCwic2lvc2NpZXVja29yZWFuIiwxMjY3MCwic2lvc2NpcmNsZWtvcmVhbiIsMTI5MDIsInNpb3NraXllb2trb3JlYW4iLDEyNjY2LCJzaW9za29yZWFuIiwxMjYxMywic2lvc25pZXVua29yZWFuIiwxMjY2Nywic2lvc3BhcmVua29yZWFuIiwxMjgwNiwic2lvc3BpZXVwa29yZWFuIiwxMjY2OSwic2lvc3Rpa2V1dGtvcmVhbiIsMTI2NjgsInNpeCIsNTQsInNpeGFyYWJpYyIsMTYzOCwic2l4YmVuZ2FsaSIsMjU0MCwic2l4Y2lyY2xlIiw5MzE3LCJzaXhjaXJjbGVpbnZlcnNlc2Fuc3NlcmlmIiwxMDEyNywic2l4ZGV2YSIsMjQxMiwic2l4Z3VqYXJhdGkiLDI3OTYsInNpeGd1cm11a2hpIiwyNjY4LCJzaXhoYWNrYXJhYmljIiwxNjM4LCJzaXhoYW5nemhvdSIsMTIzMjYsInNpeGlkZW9ncmFwaGljcGFyZW4iLDEyODM3LCJzaXhpbmZlcmlvciIsODMyNiwic2l4bW9ub3NwYWNlIiw2NTMwMiwic2l4b2xkc3R5bGUiLDYzMjg2LCJzaXhwYXJlbiIsOTMzNywic2l4cGVyaW9kIiw5MzU3LCJzaXhwZXJzaWFuIiwxNzgyLCJzaXhyb21hbiIsODU2NSwic2l4c3VwZXJpb3IiLDgzMTAsInNpeHRlZW5jaXJjbGUiLDkzMjcsInNpeHRlZW5jdXJyZW5jeWRlbm9taW5hdG9yYmVuZ2FsaSIsMjU1Mywic2l4dGVlbnBhcmVuIiw5MzQ3LCJzaXh0ZWVucGVyaW9kIiw5MzY3LCJzaXh0aGFpIiwzNjcwLCJzbGFzaCIsNDcsInNsYXNobW9ub3NwYWNlIiw2NTI5NSwic2xvbmciLDM4Mywic2xvbmdkb3RhY2NlbnQiLDc4MzUsInNtaWxlZmFjZSIsOTc4Niwic21vbm9zcGFjZSIsNjUzNjMsInNvZnBhc3VxaGVicmV3IiwxNDc1LCJzb2Z0aHlwaGVuIiwxNzMsInNvZnRzaWduY3lyaWxsaWMiLDExMDAsInNvaGlyYWdhbmEiLDEyMzgxLCJzb2thdGFrYW5hIiwxMjQ3Nywic29rYXRha2FuYWhhbGZ3aWR0aCIsNjU0MDcsInNvbGlkdXNsb25nb3ZlcmxheWNtYiIsODI0LCJzb2xpZHVzc2hvcnRvdmVybGF5Y21iIiw4MjMsInNvcnVzaXRoYWkiLDM2MjUsInNvc2FsYXRoYWkiLDM2MjQsInNvc290aGFpIiwzNTk1LCJzb3N1YXRoYWkiLDM2MjYsInNwYWNlIiwzMiwic3BhY2VoYWNrYXJhYmljIiwzMiwic3BhZGUiLDk4MjQsInNwYWRlc3VpdGJsYWNrIiw5ODI0LCJzcGFkZXN1aXR3aGl0ZSIsOTgyOCwic3BhcmVuIiw5MzkwLCJzcXVhcmViZWxvd2NtYiIsODI3LCJzcXVhcmVjYyIsMTMyNTIsInNxdWFyZWNtIiwxMzIxMywic3F1YXJlZGlhZ29uYWxjcm9zc2hhdGNoZmlsbCIsOTY0MSwic3F1YXJlaG9yaXpvbnRhbGZpbGwiLDk2MzYsInNxdWFyZWtnIiwxMzE5OSwic3F1YXJla20iLDEzMjE0LCJzcXVhcmVrbWNhcGl0YWwiLDEzMjYyLCJzcXVhcmVsbiIsMTMyNjUsInNxdWFyZWxvZyIsMTMyNjYsInNxdWFyZW1nIiwxMzE5OCwic3F1YXJlbWlsIiwxMzI2OSwic3F1YXJlbW0iLDEzMjEyLCJzcXVhcmVtc3F1YXJlZCIsMTMyMTcsInNxdWFyZW9ydGhvZ29uYWxjcm9zc2hhdGNoZmlsbCIsOTYzOCwic3F1YXJldXBwZXJsZWZ0dG9sb3dlcnJpZ2h0ZmlsbCIsOTYzOSwic3F1YXJldXBwZXJyaWdodHRvbG93ZXJsZWZ0ZmlsbCIsOTY0MCwic3F1YXJldmVydGljYWxmaWxsIiw5NjM3LCJzcXVhcmV3aGl0ZXdpdGhzbWFsbGJsYWNrIiw5NjM1LCJzcnNxdWFyZSIsMTMyNzUsInNzYWJlbmdhbGkiLDI0ODcsInNzYWRldmEiLDIzNTksInNzYWd1amFyYXRpIiwyNzQzLCJzc2FuZ2NpZXVja29yZWFuIiwxMjYxNywic3NhbmdoaWV1aGtvcmVhbiIsMTI2NzcsInNzYW5naWV1bmdrb3JlYW4iLDEyNjcyLCJzc2FuZ2tpeWVva2tvcmVhbiIsMTI1OTQsInNzYW5nbmlldW5rb3JlYW4iLDEyNjQ1LCJzc2FuZ3BpZXVwa29yZWFuIiwxMjYxMSwic3NhbmdzaW9za29yZWFuIiwxMjYxNCwic3Nhbmd0aWtldXRrb3JlYW4iLDEyNjAwLCJzc3VwZXJpb3IiLDYzMjE4LCJzdGVybGluZyIsMTYzLCJzdGVybGluZ21vbm9zcGFjZSIsNjU1MDUsInN0cm9rZWxvbmdvdmVybGF5Y21iIiw4MjIsInN0cm9rZXNob3J0b3ZlcmxheWNtYiIsODIxLCJzdWJzZXQiLDg4MzQsInN1YnNldG5vdGVxdWFsIiw4ODQyLCJzdWJzZXRvcmVxdWFsIiw4ODM4LCJzdWNjZWVkcyIsODgyNywic3VjaHRoYXQiLDg3MTUsInN1aGlyYWdhbmEiLDEyMzc3LCJzdWthdGFrYW5hIiwxMjQ3Mywic3VrYXRha2FuYWhhbGZ3aWR0aCIsNjU0MDUsInN1a3VuYXJhYmljIiwxNjE4LCJzdW1tYXRpb24iLDg3MjEsInN1biIsOTc4OCwic3VwZXJzZXQiLDg4MzUsInN1cGVyc2V0bm90ZXF1YWwiLDg4NDMsInN1cGVyc2V0b3JlcXVhbCIsODgzOSwic3ZzcXVhcmUiLDEzMjc2LCJzeW91d2FlcmFzcXVhcmUiLDEzMTgwLCJ0IiwxMTYsInRhYmVuZ2FsaSIsMjQ2OCwidGFja2Rvd24iLDg4NjgsInRhY2tsZWZ0Iiw4ODY3LCJ0YWRldmEiLDIzNDAsInRhZ3VqYXJhdGkiLDI3MjQsInRhZ3VybXVraGkiLDI1OTYsInRhaGFyYWJpYyIsMTU5MSwidGFoZmluYWxhcmFiaWMiLDY1MjE4LCJ0YWhpbml0aWFsYXJhYmljIiw2NTIxOSwidGFoaXJhZ2FuYSIsMTIzODMsInRhaG1lZGlhbGFyYWJpYyIsNjUyMjAsInRhaXN5b3VlcmFzcXVhcmUiLDEzMTgxLCJ0YWthdGFrYW5hIiwxMjQ3OSwidGFrYXRha2FuYWhhbGZ3aWR0aCIsNjU0MDgsInRhdHdlZWxhcmFiaWMiLDE2MDAsInRhdSIsOTY0LCJ0YXYiLDE1MTQsInRhdmRhZ2VzIiw2NDMzMCwidGF2ZGFnZXNoIiw2NDMzMCwidGF2ZGFnZXNoaGVicmV3Iiw2NDMzMCwidGF2aGVicmV3IiwxNTE0LCJ0YmFyIiwzNTksInRib3BvbW9mbyIsMTI1NTQsInRjYXJvbiIsMzU3LCJ0Y2N1cmwiLDY4MCwidGNlZGlsbGEiLDM1NSwidGNoZWhhcmFiaWMiLDE2NzAsInRjaGVoZmluYWxhcmFiaWMiLDY0Mzc5LCJ0Y2hlaGluaXRpYWxhcmFiaWMiLDY0MzgwLCJ0Y2hlaG1lZGlhbGFyYWJpYyIsNjQzODEsInRjaXJjbGUiLDk0NDMsInRjaXJjdW1mbGV4YmVsb3ciLDc3OTMsInRjb21tYWFjY2VudCIsMzU1LCJ0ZGllcmVzaXMiLDc4MzEsInRkb3RhY2NlbnQiLDc3ODcsInRkb3RiZWxvdyIsNzc4OSwidGVjeXJpbGxpYyIsMTA5MCwidGVkZXNjZW5kZXJjeXJpbGxpYyIsMTE5NywidGVoYXJhYmljIiwxNTc4LCJ0ZWhmaW5hbGFyYWJpYyIsNjUxNzQsInRlaGhhaGluaXRpYWxhcmFiaWMiLDY0Njc0LCJ0ZWhoYWhpc29sYXRlZGFyYWJpYyIsNjQ1MjQsInRlaGluaXRpYWxhcmFiaWMiLDY1MTc1LCJ0ZWhpcmFnYW5hIiwxMjM5MCwidGVoamVlbWluaXRpYWxhcmFiaWMiLDY0NjczLCJ0ZWhqZWVtaXNvbGF0ZWRhcmFiaWMiLDY0NTIzLCJ0ZWhtYXJidXRhYXJhYmljIiwxNTc3LCJ0ZWhtYXJidXRhZmluYWxhcmFiaWMiLDY1MTcyLCJ0ZWhtZWRpYWxhcmFiaWMiLDY1MTc2LCJ0ZWhtZWVtaW5pdGlhbGFyYWJpYyIsNjQ2NzYsInRlaG1lZW1pc29sYXRlZGFyYWJpYyIsNjQ1MjYsInRlaG5vb25maW5hbGFyYWJpYyIsNjQ2MjcsInRla2F0YWthbmEiLDEyNDg2LCJ0ZWthdGFrYW5haGFsZndpZHRoIiw2NTQxMSwidGVsZXBob25lIiw4NDgxLCJ0ZWxlcGhvbmVibGFjayIsOTc0MiwidGVsaXNoYWdlZG9sYWhlYnJldyIsMTQ0MCwidGVsaXNoYXFldGFuYWhlYnJldyIsMTQ0OSwidGVuY2lyY2xlIiw5MzIxLCJ0ZW5pZGVvZ3JhcGhpY3BhcmVuIiwxMjg0MSwidGVucGFyZW4iLDkzNDEsInRlbnBlcmlvZCIsOTM2MSwidGVucm9tYW4iLDg1NjksInRlc2giLDY3OSwidGV0IiwxNDk2LCJ0ZXRkYWdlc2giLDY0MzEyLCJ0ZXRkYWdlc2hoZWJyZXciLDY0MzEyLCJ0ZXRoZWJyZXciLDE0OTYsInRldHNlY3lyaWxsaWMiLDEyMDUsInRldmlyaGVicmV3IiwxNDM1LCJ0ZXZpcmxlZnRoZWJyZXciLDE0MzUsInRoYWJlbmdhbGkiLDI0NjksInRoYWRldmEiLDIzNDEsInRoYWd1amFyYXRpIiwyNzI1LCJ0aGFndXJtdWtoaSIsMjU5NywidGhhbGFyYWJpYyIsMTU4NCwidGhhbGZpbmFsYXJhYmljIiw2NTE5NiwidGhhbnRoYWtoYXRsb3dsZWZ0dGhhaSIsNjM2NDAsInRoYW50aGFraGF0bG93cmlnaHR0aGFpIiw2MzYzOSwidGhhbnRoYWtoYXR0aGFpIiwzNjYwLCJ0aGFudGhha2hhdHVwcGVybGVmdHRoYWkiLDYzNjM4LCJ0aGVoYXJhYmljIiwxNTc5LCJ0aGVoZmluYWxhcmFiaWMiLDY1MTc4LCJ0aGVoaW5pdGlhbGFyYWJpYyIsNjUxNzksInRoZWhtZWRpYWxhcmFiaWMiLDY1MTgwLCJ0aGVyZWV4aXN0cyIsODcwNywidGhlcmVmb3JlIiw4NzU2LCJ0aGV0YSIsOTUyLCJ0aGV0YTEiLDk3NywidGhldGFzeW1ib2xncmVlayIsOTc3LCJ0aGlldXRoYWNpcmNsZWtvcmVhbiIsMTI5MjEsInRoaWV1dGhhcGFyZW5rb3JlYW4iLDEyODI1LCJ0aGlldXRoY2lyY2xla29yZWFuIiwxMjkwNywidGhpZXV0aGtvcmVhbiIsMTI2MjAsInRoaWV1dGhwYXJlbmtvcmVhbiIsMTI4MTEsInRoaXJ0ZWVuY2lyY2xlIiw5MzI0LCJ0aGlydGVlbnBhcmVuIiw5MzQ0LCJ0aGlydGVlbnBlcmlvZCIsOTM2NCwidGhvbmFuZ21vbnRob3RoYWkiLDM2MDEsInRob29rIiw0MjksInRob3BodXRoYW90aGFpIiwzNjAyLCJ0aG9ybiIsMjU0LCJ0aG90aGFoYW50aGFpIiwzNjA3LCJ0aG90aGFudGhhaSIsMzYwMCwidGhvdGhvbmd0aGFpIiwzNjA4LCJ0aG90aHVuZ3RoYWkiLDM2MDYsInRob3VzYW5kY3lyaWxsaWMiLDExNTQsInRob3VzYW5kc3NlcGFyYXRvcmFyYWJpYyIsMTY0NCwidGhvdXNhbmRzc2VwYXJhdG9ycGVyc2lhbiIsMTY0NCwidGhyZWUiLDUxLCJ0aHJlZWFyYWJpYyIsMTYzNSwidGhyZWViZW5nYWxpIiwyNTM3LCJ0aHJlZWNpcmNsZSIsOTMxNCwidGhyZWVjaXJjbGVpbnZlcnNlc2Fuc3NlcmlmIiwxMDEyNCwidGhyZWVkZXZhIiwyNDA5LCJ0aHJlZWVpZ2h0aHMiLDg1NDAsInRocmVlZ3VqYXJhdGkiLDI3OTMsInRocmVlZ3VybXVraGkiLDI2NjUsInRocmVlaGFja2FyYWJpYyIsMTYzNSwidGhyZWVoYW5nemhvdSIsMTIzMjMsInRocmVlaWRlb2dyYXBoaWNwYXJlbiIsMTI4MzQsInRocmVlaW5mZXJpb3IiLDgzMjMsInRocmVlbW9ub3NwYWNlIiw2NTI5OSwidGhyZWVudW1lcmF0b3JiZW5nYWxpIiwyNTUwLCJ0aHJlZW9sZHN0eWxlIiw2MzI4MywidGhyZWVwYXJlbiIsOTMzNCwidGhyZWVwZXJpb2QiLDkzNTQsInRocmVlcGVyc2lhbiIsMTc3OSwidGhyZWVxdWFydGVycyIsMTkwLCJ0aHJlZXF1YXJ0ZXJzZW1kYXNoIiw2MzE5OCwidGhyZWVyb21hbiIsODU2MiwidGhyZWVzdXBlcmlvciIsMTc5LCJ0aHJlZXRoYWkiLDM2NjcsInRoenNxdWFyZSIsMTMyMDQsInRpaGlyYWdhbmEiLDEyMzg1LCJ0aWthdGFrYW5hIiwxMjQ4MSwidGlrYXRha2FuYWhhbGZ3aWR0aCIsNjU0MDksInRpa2V1dGFjaXJjbGVrb3JlYW4iLDEyOTEyLCJ0aWtldXRhcGFyZW5rb3JlYW4iLDEyODE2LCJ0aWtldXRjaXJjbGVrb3JlYW4iLDEyODk4LCJ0aWtldXRrb3JlYW4iLDEyNTk5LCJ0aWtldXRwYXJlbmtvcmVhbiIsMTI4MDIsInRpbGRlIiw3MzIsInRpbGRlYmVsb3djbWIiLDgxNiwidGlsZGVjbWIiLDc3MSwidGlsZGVjb21iIiw3NzEsInRpbGRlZG91YmxlY21iIiw4NjQsInRpbGRlb3BlcmF0b3IiLDg3NjQsInRpbGRlb3ZlcmxheWNtYiIsODIwLCJ0aWxkZXZlcnRpY2FsY21iIiw4MzAsInRpbWVzY2lyY2xlIiw4ODU1LCJ0aXBlaGFoZWJyZXciLDE0MzAsInRpcGVoYWxlZnRoZWJyZXciLDE0MzAsInRpcHBpZ3VybXVraGkiLDI2NzIsInRpdGxvY3lyaWxsaWNjbWIiLDExNTUsInRpd25hcm1lbmlhbiIsMTQwNywidGxpbmViZWxvdyIsNzc5MSwidG1vbm9zcGFjZSIsNjUzNjQsInRvYXJtZW5pYW4iLDEzODUsInRvaGlyYWdhbmEiLDEyMzkyLCJ0b2thdGFrYW5hIiwxMjQ4OCwidG9rYXRha2FuYWhhbGZ3aWR0aCIsNjU0MTIsInRvbmViYXJleHRyYWhpZ2htb2QiLDc0MSwidG9uZWJhcmV4dHJhbG93bW9kIiw3NDUsInRvbmViYXJoaWdobW9kIiw3NDIsInRvbmViYXJsb3dtb2QiLDc0NCwidG9uZWJhcm1pZG1vZCIsNzQzLCJ0b25lZml2ZSIsNDQ1LCJ0b25lc2l4IiwzODksInRvbmV0d28iLDQyNCwidG9ub3MiLDkwMCwidG9uc3F1YXJlIiwxMzA5NSwidG9wYXRha3RoYWkiLDM1OTksInRvcnRvaXNlc2hlbGxicmFja2V0bGVmdCIsMTIzMDgsInRvcnRvaXNlc2hlbGxicmFja2V0bGVmdHNtYWxsIiw2NTExNywidG9ydG9pc2VzaGVsbGJyYWNrZXRsZWZ0dmVydGljYWwiLDY1MDgxLCJ0b3J0b2lzZXNoZWxsYnJhY2tldHJpZ2h0IiwxMjMwOSwidG9ydG9pc2VzaGVsbGJyYWNrZXRyaWdodHNtYWxsIiw2NTExOCwidG9ydG9pc2VzaGVsbGJyYWNrZXRyaWdodHZlcnRpY2FsIiw2NTA4MiwidG90YW90aGFpIiwzNjA1LCJ0cGFsYXRhbGhvb2siLDQyNywidHBhcmVuIiw5MzkxLCJ0cmFkZW1hcmsiLDg0ODIsInRyYWRlbWFya3NhbnMiLDYzNzIyLCJ0cmFkZW1hcmtzZXJpZiIsNjMxOTUsInRyZXRyb2ZsZXhob29rIiw2NDgsInRyaWFnZG4iLDk2NjAsInRyaWFnbGYiLDk2NjgsInRyaWFncnQiLDk2NTgsInRyaWFndXAiLDk2NTAsInRzIiw2NzgsInRzYWRpIiwxNTEwLCJ0c2FkaWRhZ2VzaCIsNjQzMjYsInRzYWRpZGFnZXNoaGVicmV3Iiw2NDMyNiwidHNhZGloZWJyZXciLDE1MTAsInRzZWN5cmlsbGljIiwxMDk0LCJ0c2VyZSIsMTQ2MSwidHNlcmUxMiIsMTQ2MSwidHNlcmUxZSIsMTQ2MSwidHNlcmUyYiIsMTQ2MSwidHNlcmVoZWJyZXciLDE0NjEsInRzZXJlbmFycm93aGVicmV3IiwxNDYxLCJ0c2VyZXF1YXJ0ZXJoZWJyZXciLDE0NjEsInRzZXJld2lkZWhlYnJldyIsMTQ2MSwidHNoZWN5cmlsbGljIiwxMTE1LCJ0c3VwZXJpb3IiLDYzMjE5LCJ0dGFiZW5nYWxpIiwyNDYzLCJ0dGFkZXZhIiwyMzM1LCJ0dGFndWphcmF0aSIsMjcxOSwidHRhZ3VybXVraGkiLDI1OTEsInR0ZWhhcmFiaWMiLDE2NTcsInR0ZWhmaW5hbGFyYWJpYyIsNjQzNTksInR0ZWhpbml0aWFsYXJhYmljIiw2NDM2MCwidHRlaG1lZGlhbGFyYWJpYyIsNjQzNjEsInR0aGFiZW5nYWxpIiwyNDY0LCJ0dGhhZGV2YSIsMjMzNiwidHRoYWd1amFyYXRpIiwyNzIwLCJ0dGhhZ3VybXVraGkiLDI1OTIsInR0dXJuZWQiLDY0NywidHVoaXJhZ2FuYSIsMTIzODgsInR1a2F0YWthbmEiLDEyNDg0LCJ0dWthdGFrYW5haGFsZndpZHRoIiw2NTQxMCwidHVzbWFsbGhpcmFnYW5hIiwxMjM4NywidHVzbWFsbGthdGFrYW5hIiwxMjQ4MywidHVzbWFsbGthdGFrYW5haGFsZndpZHRoIiw2NTM5MSwidHdlbHZlY2lyY2xlIiw5MzIzLCJ0d2VsdmVwYXJlbiIsOTM0MywidHdlbHZlcGVyaW9kIiw5MzYzLCJ0d2VsdmVyb21hbiIsODU3MSwidHdlbnR5Y2lyY2xlIiw5MzMxLCJ0d2VudHloYW5nemhvdSIsMjEzMTYsInR3ZW50eXBhcmVuIiw5MzUxLCJ0d2VudHlwZXJpb2QiLDkzNzEsInR3byIsNTAsInR3b2FyYWJpYyIsMTYzNCwidHdvYmVuZ2FsaSIsMjUzNiwidHdvY2lyY2xlIiw5MzEzLCJ0d29jaXJjbGVpbnZlcnNlc2Fuc3NlcmlmIiwxMDEyMywidHdvZGV2YSIsMjQwOCwidHdvZG90ZW5sZWFkZXIiLDgyMjksInR3b2RvdGxlYWRlciIsODIyOSwidHdvZG90bGVhZGVydmVydGljYWwiLDY1MDcyLCJ0d29ndWphcmF0aSIsMjc5MiwidHdvZ3VybXVraGkiLDI2NjQsInR3b2hhY2thcmFiaWMiLDE2MzQsInR3b2hhbmd6aG91IiwxMjMyMiwidHdvaWRlb2dyYXBoaWNwYXJlbiIsMTI4MzMsInR3b2luZmVyaW9yIiw4MzIyLCJ0d29tb25vc3BhY2UiLDY1Mjk4LCJ0d29udW1lcmF0b3JiZW5nYWxpIiwyNTQ5LCJ0d29vbGRzdHlsZSIsNjMyODIsInR3b3BhcmVuIiw5MzMzLCJ0d29wZXJpb2QiLDkzNTMsInR3b3BlcnNpYW4iLDE3NzgsInR3b3JvbWFuIiw4NTYxLCJ0d29zdHJva2UiLDQ0MywidHdvc3VwZXJpb3IiLDE3OCwidHdvdGhhaSIsMzY2NiwidHdvdGhpcmRzIiw4NTMyLCJ1IiwxMTcsInVhY3V0ZSIsMjUwLCJ1YmFyIiw2NDksInViZW5nYWxpIiwyNDQxLCJ1Ym9wb21vZm8iLDEyNTg0LCJ1YnJldmUiLDM2NSwidWNhcm9uIiw0NjgsInVjaXJjbGUiLDk0NDQsInVjaXJjdW1mbGV4IiwyNTEsInVjaXJjdW1mbGV4YmVsb3ciLDc3OTksInVjeXJpbGxpYyIsMTA5MSwidWRhdHRhZGV2YSIsMjM4NSwidWRibGFjdXRlIiwzNjksInVkYmxncmF2ZSIsNTMzLCJ1ZGV2YSIsMjMxMywidWRpZXJlc2lzIiwyNTIsInVkaWVyZXNpc2FjdXRlIiw0NzIsInVkaWVyZXNpc2JlbG93Iiw3Nzk1LCJ1ZGllcmVzaXNjYXJvbiIsNDc0LCJ1ZGllcmVzaXNjeXJpbGxpYyIsMTI2NSwidWRpZXJlc2lzZ3JhdmUiLDQ3NiwidWRpZXJlc2lzbWFjcm9uIiw0NzAsInVkb3RiZWxvdyIsNzkwOSwidWdyYXZlIiwyNDksInVndWphcmF0aSIsMjY5NywidWd1cm11a2hpIiwyNTY5LCJ1aGlyYWdhbmEiLDEyMzU4LCJ1aG9va2Fib3ZlIiw3OTExLCJ1aG9ybiIsNDMyLCJ1aG9ybmFjdXRlIiw3OTEzLCJ1aG9ybmRvdGJlbG93Iiw3OTIxLCJ1aG9ybmdyYXZlIiw3OTE1LCJ1aG9ybmhvb2thYm92ZSIsNzkxNywidWhvcm50aWxkZSIsNzkxOSwidWh1bmdhcnVtbGF1dCIsMzY5LCJ1aHVuZ2FydW1sYXV0Y3lyaWxsaWMiLDEyNjcsInVpbnZlcnRlZGJyZXZlIiw1MzUsInVrYXRha2FuYSIsMTI0NTQsInVrYXRha2FuYWhhbGZ3aWR0aCIsNjUzOTUsInVrY3lyaWxsaWMiLDExNDUsInVrb3JlYW4iLDEyNjM2LCJ1bWFjcm9uIiwzNjMsInVtYWNyb25jeXJpbGxpYyIsMTI2MywidW1hY3JvbmRpZXJlc2lzIiw3ODAzLCJ1bWF0cmFndXJtdWtoaSIsMjYyNSwidW1vbm9zcGFjZSIsNjUzNjUsInVuZGVyc2NvcmUiLDk1LCJ1bmRlcnNjb3JlZGJsIiw4MjE1LCJ1bmRlcnNjb3JlbW9ub3NwYWNlIiw2NTM0MywidW5kZXJzY29yZXZlcnRpY2FsIiw2NTA3NSwidW5kZXJzY29yZXdhdnkiLDY1MTAzLCJ1bmlvbiIsODc0NiwidW5pdmVyc2FsIiw4NzA0LCJ1b2dvbmVrIiwzNzEsInVwYXJlbiIsOTM5MiwidXBibG9jayIsOTYwMCwidXBwZXJkb3RoZWJyZXciLDE0NzYsInVwc2lsb24iLDk2NSwidXBzaWxvbmRpZXJlc2lzIiw5NzEsInVwc2lsb25kaWVyZXNpc3Rvbm9zIiw5NDQsInVwc2lsb25sYXRpbiIsNjUwLCJ1cHNpbG9udG9ub3MiLDk3MywidXB0YWNrYmVsb3djbWIiLDc5NywidXB0YWNrbW9kIiw3MjQsInVyYWd1cm11a2hpIiwyNjc1LCJ1cmluZyIsMzY3LCJ1c2hvcnRjeXJpbGxpYyIsMTExOCwidXNtYWxsaGlyYWdhbmEiLDEyMzU3LCJ1c21hbGxrYXRha2FuYSIsMTI0NTMsInVzbWFsbGthdGFrYW5haGFsZndpZHRoIiw2NTM4NSwidXN0cmFpZ2h0Y3lyaWxsaWMiLDExOTksInVzdHJhaWdodHN0cm9rZWN5cmlsbGljIiwxMjAxLCJ1dGlsZGUiLDM2MSwidXRpbGRlYWN1dGUiLDc4MDEsInV0aWxkZWJlbG93Iiw3Nzk3LCJ1dWJlbmdhbGkiLDI0NDIsInV1ZGV2YSIsMjMxNCwidXVndWphcmF0aSIsMjY5OCwidXVndXJtdWtoaSIsMjU3MCwidXVtYXRyYWd1cm11a2hpIiwyNjI2LCJ1dXZvd2Vsc2lnbmJlbmdhbGkiLDI0OTgsInV1dm93ZWxzaWduZGV2YSIsMjM3MCwidXV2b3dlbHNpZ25ndWphcmF0aSIsMjc1NCwidXZvd2Vsc2lnbmJlbmdhbGkiLDI0OTcsInV2b3dlbHNpZ25kZXZhIiwyMzY5LCJ1dm93ZWxzaWduZ3VqYXJhdGkiLDI3NTMsInYiLDExOCwidmFkZXZhIiwyMzU3LCJ2YWd1amFyYXRpIiwyNzQxLCJ2YWd1cm11a2hpIiwyNjEzLCJ2YWthdGFrYW5hIiwxMjUzNSwidmF2IiwxNDkzLCJ2YXZkYWdlc2giLDY0MzA5LCJ2YXZkYWdlc2g2NSIsNjQzMDksInZhdmRhZ2VzaGhlYnJldyIsNjQzMDksInZhdmhlYnJldyIsMTQ5MywidmF2aG9sYW0iLDY0MzMxLCJ2YXZob2xhbWhlYnJldyIsNjQzMzEsInZhdnZhdmhlYnJldyIsMTUyMCwidmF2eW9kaGVicmV3IiwxNTIxLCJ2Y2lyY2xlIiw5NDQ1LCJ2ZG90YmVsb3ciLDc4MDcsInZlY3lyaWxsaWMiLDEwNzQsInZlaGFyYWJpYyIsMTcwMCwidmVoZmluYWxhcmFiaWMiLDY0MzYzLCJ2ZWhpbml0aWFsYXJhYmljIiw2NDM2NCwidmVobWVkaWFsYXJhYmljIiw2NDM2NSwidmVrYXRha2FuYSIsMTI1MzcsInZlbnVzIiw5NzkyLCJ2ZXJ0aWNhbGJhciIsMTI0LCJ2ZXJ0aWNhbGxpbmVhYm92ZWNtYiIsNzgxLCJ2ZXJ0aWNhbGxpbmViZWxvd2NtYiIsODA5LCJ2ZXJ0aWNhbGxpbmVsb3dtb2QiLDcxNiwidmVydGljYWxsaW5lbW9kIiw3MTIsInZld2FybWVuaWFuIiwxNDA2LCJ2aG9vayIsNjUxLCJ2aWthdGFrYW5hIiwxMjUzNiwidmlyYW1hYmVuZ2FsaSIsMjUwOSwidmlyYW1hZGV2YSIsMjM4MSwidmlyYW1hZ3VqYXJhdGkiLDI3NjUsInZpc2FyZ2FiZW5nYWxpIiwyNDM1LCJ2aXNhcmdhZGV2YSIsMjMwNywidmlzYXJnYWd1amFyYXRpIiwyNjkxLCJ2bW9ub3NwYWNlIiw2NTM2Niwidm9hcm1lbmlhbiIsMTQwMCwidm9pY2VkaXRlcmF0aW9uaGlyYWdhbmEiLDEyNDQ2LCJ2b2ljZWRpdGVyYXRpb25rYXRha2FuYSIsMTI1NDIsInZvaWNlZG1hcmtrYW5hIiwxMjQ0Mywidm9pY2VkbWFya2thbmFoYWxmd2lkdGgiLDY1NDM4LCJ2b2thdGFrYW5hIiwxMjUzOCwidnBhcmVuIiw5MzkzLCJ2dGlsZGUiLDc4MDUsInZ0dXJuZWQiLDY1MiwidnVoaXJhZ2FuYSIsMTI0MzYsInZ1a2F0YWthbmEiLDEyNTMyLCJ3IiwxMTksIndhY3V0ZSIsNzgxMSwid2Fla29yZWFuIiwxMjYzMywid2FoaXJhZ2FuYSIsMTI0MzEsIndha2F0YWthbmEiLDEyNTI3LCJ3YWthdGFrYW5haGFsZndpZHRoIiw2NTQzNiwid2Frb3JlYW4iLDEyNjMyLCJ3YXNtYWxsaGlyYWdhbmEiLDEyNDMwLCJ3YXNtYWxsa2F0YWthbmEiLDEyNTI2LCJ3YXR0b3NxdWFyZSIsMTMxNDMsIndhdmVkYXNoIiwxMjMxNiwid2F2eXVuZGVyc2NvcmV2ZXJ0aWNhbCIsNjUwNzYsIndhd2FyYWJpYyIsMTYwOCwid2F3ZmluYWxhcmFiaWMiLDY1MjYyLCJ3YXdoYW16YWFib3ZlYXJhYmljIiwxNTcyLCJ3YXdoYW16YWFib3ZlZmluYWxhcmFiaWMiLDY1MTU4LCJ3YnNxdWFyZSIsMTMyNzcsIndjaXJjbGUiLDk0NDYsIndjaXJjdW1mbGV4IiwzNzMsIndkaWVyZXNpcyIsNzgxMywid2RvdGFjY2VudCIsNzgxNSwid2RvdGJlbG93Iiw3ODE3LCJ3ZWhpcmFnYW5hIiwxMjQzMywid2VpZXJzdHJhc3MiLDg0NzIsIndla2F0YWthbmEiLDEyNTI5LCJ3ZWtvcmVhbiIsMTI2MzgsIndlb2tvcmVhbiIsMTI2MzcsIndncmF2ZSIsNzgwOSwid2hpdGVidWxsZXQiLDk3MDIsIndoaXRlY2lyY2xlIiw5Njc1LCJ3aGl0ZWNpcmNsZWludmVyc2UiLDk2ODksIndoaXRlY29ybmVyYnJhY2tldGxlZnQiLDEyMzAyLCJ3aGl0ZWNvcm5lcmJyYWNrZXRsZWZ0dmVydGljYWwiLDY1MDkxLCJ3aGl0ZWNvcm5lcmJyYWNrZXRyaWdodCIsMTIzMDMsIndoaXRlY29ybmVyYnJhY2tldHJpZ2h0dmVydGljYWwiLDY1MDkyLCJ3aGl0ZWRpYW1vbmQiLDk2NzEsIndoaXRlZGlhbW9uZGNvbnRhaW5pbmdibGFja3NtYWxsZGlhbW9uZCIsOTY3Miwid2hpdGVkb3ducG9pbnRpbmdzbWFsbHRyaWFuZ2xlIiw5NjYzLCJ3aGl0ZWRvd25wb2ludGluZ3RyaWFuZ2xlIiw5NjYxLCJ3aGl0ZWxlZnRwb2ludGluZ3NtYWxsdHJpYW5nbGUiLDk2NjcsIndoaXRlbGVmdHBvaW50aW5ndHJpYW5nbGUiLDk2NjUsIndoaXRlbGVudGljdWxhcmJyYWNrZXRsZWZ0IiwxMjMxMCwid2hpdGVsZW50aWN1bGFyYnJhY2tldHJpZ2h0IiwxMjMxMSwid2hpdGVyaWdodHBvaW50aW5nc21hbGx0cmlhbmdsZSIsOTY1Nywid2hpdGVyaWdodHBvaW50aW5ndHJpYW5nbGUiLDk2NTUsIndoaXRlc21hbGxzcXVhcmUiLDk2NDMsIndoaXRlc21pbGluZ2ZhY2UiLDk3ODYsIndoaXRlc3F1YXJlIiw5NjMzLCJ3aGl0ZXN0YXIiLDk3MzQsIndoaXRldGVsZXBob25lIiw5NzQzLCJ3aGl0ZXRvcnRvaXNlc2hlbGxicmFja2V0bGVmdCIsMTIzMTIsIndoaXRldG9ydG9pc2VzaGVsbGJyYWNrZXRyaWdodCIsMTIzMTMsIndoaXRldXBwb2ludGluZ3NtYWxsdHJpYW5nbGUiLDk2NTMsIndoaXRldXBwb2ludGluZ3RyaWFuZ2xlIiw5NjUxLCJ3aWhpcmFnYW5hIiwxMjQzMiwid2lrYXRha2FuYSIsMTI1MjgsIndpa29yZWFuIiwxMjYzOSwid21vbm9zcGFjZSIsNjUzNjcsIndvaGlyYWdhbmEiLDEyNDM0LCJ3b2thdGFrYW5hIiwxMjUzMCwid29rYXRha2FuYWhhbGZ3aWR0aCIsNjUzODIsIndvbiIsODM2MSwid29ubW9ub3NwYWNlIiw2NTUxMCwid293YWVudGhhaSIsMzYyMywid3BhcmVuIiw5Mzk0LCJ3cmluZyIsNzgzMiwid3N1cGVyaW9yIiw2OTUsInd0dXJuZWQiLDY1Mywid3lubiIsNDQ3LCJ4IiwxMjAsInhhYm92ZWNtYiIsODI5LCJ4Ym9wb21vZm8iLDEyNTYyLCJ4Y2lyY2xlIiw5NDQ3LCJ4ZGllcmVzaXMiLDc4MjEsInhkb3RhY2NlbnQiLDc4MTksInhlaGFybWVuaWFuIiwxMzg5LCJ4aSIsOTU4LCJ4bW9ub3NwYWNlIiw2NTM2OCwieHBhcmVuIiw5Mzk1LCJ4c3VwZXJpb3IiLDczOSwieSIsMTIxLCJ5YWFkb3NxdWFyZSIsMTMxMzQsInlhYmVuZ2FsaSIsMjQ3OSwieWFjdXRlIiwyNTMsInlhZGV2YSIsMjM1MSwieWFla29yZWFuIiwxMjYyNiwieWFndWphcmF0aSIsMjczNSwieWFndXJtdWtoaSIsMjYwNywieWFoaXJhZ2FuYSIsMTI0MjAsInlha2F0YWthbmEiLDEyNTE2LCJ5YWthdGFrYW5haGFsZndpZHRoIiw2NTQyOCwieWFrb3JlYW4iLDEyNjI1LCJ5YW1ha2thbnRoYWkiLDM2NjIsInlhc21hbGxoaXJhZ2FuYSIsMTI0MTksInlhc21hbGxrYXRha2FuYSIsMTI1MTUsInlhc21hbGxrYXRha2FuYWhhbGZ3aWR0aCIsNjUzODgsInlhdGN5cmlsbGljIiwxMTIzLCJ5Y2lyY2xlIiw5NDQ4LCJ5Y2lyY3VtZmxleCIsMzc1LCJ5ZGllcmVzaXMiLDI1NSwieWRvdGFjY2VudCIsNzgyMywieWRvdGJlbG93Iiw3OTI1LCJ5ZWhhcmFiaWMiLDE2MTAsInllaGJhcnJlZWFyYWJpYyIsMTc0NiwieWVoYmFycmVlZmluYWxhcmFiaWMiLDY0NDMxLCJ5ZWhmaW5hbGFyYWJpYyIsNjUyNjYsInllaGhhbXphYWJvdmVhcmFiaWMiLDE1NzQsInllaGhhbXphYWJvdmVmaW5hbGFyYWJpYyIsNjUxNjIsInllaGhhbXphYWJvdmVpbml0aWFsYXJhYmljIiw2NTE2MywieWVoaGFtemFhYm92ZW1lZGlhbGFyYWJpYyIsNjUxNjQsInllaGluaXRpYWxhcmFiaWMiLDY1MjY3LCJ5ZWhtZWRpYWxhcmFiaWMiLDY1MjY4LCJ5ZWhtZWVtaW5pdGlhbGFyYWJpYyIsNjQ3MzMsInllaG1lZW1pc29sYXRlZGFyYWJpYyIsNjQ2MDAsInllaG5vb25maW5hbGFyYWJpYyIsNjQ2NjAsInllaHRocmVlZG90c2JlbG93YXJhYmljIiwxNzQ1LCJ5ZWtvcmVhbiIsMTI2MzAsInllbiIsMTY1LCJ5ZW5tb25vc3BhY2UiLDY1NTA5LCJ5ZW9rb3JlYW4iLDEyNjI5LCJ5ZW9yaW5oaWV1aGtvcmVhbiIsMTI2NzgsInllcmFoYmVueW9tb2hlYnJldyIsMTQ1MCwieWVyYWhiZW55b21vbGVmdGhlYnJldyIsMTQ1MCwieWVyaWN5cmlsbGljIiwxMDk5LCJ5ZXJ1ZGllcmVzaXNjeXJpbGxpYyIsMTI3MywieWVzaWV1bmdrb3JlYW4iLDEyNjczLCJ5ZXNpZXVuZ3BhbnNpb3Nrb3JlYW4iLDEyNjc1LCJ5ZXNpZXVuZ3Npb3Nrb3JlYW4iLDEyNjc0LCJ5ZXRpdmhlYnJldyIsMTQzNCwieWdyYXZlIiw3OTIzLCJ5aG9vayIsNDM2LCJ5aG9va2Fib3ZlIiw3OTI3LCJ5aWFybWVuaWFuIiwxMzk3LCJ5aWN5cmlsbGljIiwxMTExLCJ5aWtvcmVhbiIsMTI2NDIsInlpbnlhbmciLDk3NzUsInlpd25hcm1lbmlhbiIsMTQxMCwieW1vbm9zcGFjZSIsNjUzNjksInlvZCIsMTQ5NywieW9kZGFnZXNoIiw2NDMxMywieW9kZGFnZXNoaGVicmV3Iiw2NDMxMywieW9kaGVicmV3IiwxNDk3LCJ5b2R5b2RoZWJyZXciLDE1MjIsInlvZHlvZHBhdGFoaGVicmV3Iiw2NDI4NywieW9oaXJhZ2FuYSIsMTI0MjQsInlvaWtvcmVhbiIsMTI2ODEsInlva2F0YWthbmEiLDEyNTIwLCJ5b2thdGFrYW5haGFsZndpZHRoIiw2NTQzMCwieW9rb3JlYW4iLDEyNjM1LCJ5b3NtYWxsaGlyYWdhbmEiLDEyNDIzLCJ5b3NtYWxsa2F0YWthbmEiLDEyNTE5LCJ5b3NtYWxsa2F0YWthbmFoYWxmd2lkdGgiLDY1MzkwLCJ5b3RncmVlayIsMTAxMSwieW95YWVrb3JlYW4iLDEyNjgwLCJ5b3lha29yZWFuIiwxMjY3OSwieW95YWt0aGFpIiwzNjE4LCJ5b3lpbmd0aGFpIiwzNTk3LCJ5cGFyZW4iLDkzOTYsInlwb2dlZ3JhbW1lbmkiLDg5MCwieXBvZ2VncmFtbWVuaWdyZWVrY21iIiw4MzcsInlyIiw0MjIsInlyaW5nIiw3ODMzLCJ5c3VwZXJpb3IiLDY5NiwieXRpbGRlIiw3OTI5LCJ5dHVybmVkIiw2NTQsInl1aGlyYWdhbmEiLDEyNDIyLCJ5dWlrb3JlYW4iLDEyNjg0LCJ5dWthdGFrYW5hIiwxMjUxOCwieXVrYXRha2FuYWhhbGZ3aWR0aCIsNjU0MjksInl1a29yZWFuIiwxMjY0MCwieXVzYmlnY3lyaWxsaWMiLDExMzEsInl1c2JpZ2lvdGlmaWVkY3lyaWxsaWMiLDExMzMsInl1c2xpdHRsZWN5cmlsbGljIiwxMTI3LCJ5dXNsaXR0bGVpb3RpZmllZGN5cmlsbGljIiwxMTI5LCJ5dXNtYWxsaGlyYWdhbmEiLDEyNDIxLCJ5dXNtYWxsa2F0YWthbmEiLDEyNTE3LCJ5dXNtYWxsa2F0YWthbmFoYWxmd2lkdGgiLDY1Mzg5LCJ5dXlla29yZWFuIiwxMjY4MywieXV5ZW9rb3JlYW4iLDEyNjgyLCJ5eWFiZW5nYWxpIiwyNTI3LCJ5eWFkZXZhIiwyMzk5LCJ6IiwxMjIsInphYXJtZW5pYW4iLDEzODIsInphY3V0ZSIsMzc4LCJ6YWRldmEiLDIzOTUsInphZ3VybXVraGkiLDI2NTEsInphaGFyYWJpYyIsMTU5MiwiemFoZmluYWxhcmFiaWMiLDY1MjIyLCJ6YWhpbml0aWFsYXJhYmljIiw2NTIyMywiemFoaXJhZ2FuYSIsMTIzNzQsInphaG1lZGlhbGFyYWJpYyIsNjUyMjQsInphaW5hcmFiaWMiLDE1ODYsInphaW5maW5hbGFyYWJpYyIsNjUyMDAsInpha2F0YWthbmEiLDEyNDcwLCJ6YXFlZmdhZG9saGVicmV3IiwxNDI5LCJ6YXFlZnFhdGFuaGVicmV3IiwxNDI4LCJ6YXJxYWhlYnJldyIsMTQzMiwiemF5aW4iLDE0OTQsInpheWluZGFnZXNoIiw2NDMxMCwiemF5aW5kYWdlc2hoZWJyZXciLDY0MzEwLCJ6YXlpbmhlYnJldyIsMTQ5NCwiemJvcG9tb2ZvIiwxMjU2NywiemNhcm9uIiwzODIsInpjaXJjbGUiLDk0NDksInpjaXJjdW1mbGV4Iiw3ODI1LCJ6Y3VybCIsNjU3LCJ6ZG90IiwzODAsInpkb3RhY2NlbnQiLDM4MCwiemRvdGJlbG93Iiw3ODI3LCJ6ZWN5cmlsbGljIiwxMDc5LCJ6ZWRlc2NlbmRlcmN5cmlsbGljIiwxMTc3LCJ6ZWRpZXJlc2lzY3lyaWxsaWMiLDEyNDcsInplaGlyYWdhbmEiLDEyMzgwLCJ6ZWthdGFrYW5hIiwxMjQ3NiwiemVybyIsNDgsInplcm9hcmFiaWMiLDE2MzIsInplcm9iZW5nYWxpIiwyNTM0LCJ6ZXJvZGV2YSIsMjQwNiwiemVyb2d1amFyYXRpIiwyNzkwLCJ6ZXJvZ3VybXVraGkiLDI2NjIsInplcm9oYWNrYXJhYmljIiwxNjMyLCJ6ZXJvaW5mZXJpb3IiLDgzMjAsInplcm9tb25vc3BhY2UiLDY1Mjk2LCJ6ZXJvb2xkc3R5bGUiLDYzMjgwLCJ6ZXJvcGVyc2lhbiIsMTc3NiwiemVyb3N1cGVyaW9yIiw4MzA0LCJ6ZXJvdGhhaSIsMzY2NCwiemVyb3dpZHRoam9pbmVyIiw2NTI3OSwiemVyb3dpZHRobm9uam9pbmVyIiw4MjA0LCJ6ZXJvd2lkdGhzcGFjZSIsODIwMywiemV0YSIsOTUwLCJ6aGJvcG9tb2ZvIiwxMjU2MywiemhlYXJtZW5pYW4iLDEzODYsInpoZWJyZXZlY3lyaWxsaWMiLDEyMTgsInpoZWN5cmlsbGljIiwxMDc4LCJ6aGVkZXNjZW5kZXJjeXJpbGxpYyIsMTE3NSwiemhlZGllcmVzaXNjeXJpbGxpYyIsMTI0NSwiemloaXJhZ2FuYSIsMTIzNzYsInppa2F0YWthbmEiLDEyNDcyLCJ6aW5vcmhlYnJldyIsMTQ1NCwiemxpbmViZWxvdyIsNzgyOSwiem1vbm9zcGFjZSIsNjUzNzAsInpvaGlyYWdhbmEiLDEyMzgyLCJ6b2thdGFrYW5hIiwxMjQ3OCwienBhcmVuIiw5Mzk3LCJ6cmV0cm9mbGV4aG9vayIsNjU2LCJ6c3Ryb2tlIiw0MzgsInp1aGlyYWdhbmEiLDEyMzc4LCJ6dWthdGFrYW5hIiwxMjQ3NCwiLm5vdGRlZiIsMCwiYW5nYnJhY2tldGxlZnRiaWciLDkwMDEsImFuZ2JyYWNrZXRsZWZ0QmlnIiw5MDAxLCJhbmdicmFja2V0bGVmdGJpZ2ciLDkwMDEsImFuZ2JyYWNrZXRsZWZ0QmlnZyIsOTAwMSwiYW5nYnJhY2tldHJpZ2h0QmlnIiw5MDAyLCJhbmdicmFja2V0cmlnaHRiaWciLDkwMDIsImFuZ2JyYWNrZXRyaWdodEJpZ2ciLDkwMDIsImFuZ2JyYWNrZXRyaWdodGJpZ2ciLDkwMDIsImFycm93aG9va2xlZnQiLDg2MTgsImFycm93aG9va3JpZ2h0Iiw4NjE3LCJhcnJvd2xlZnR0b3BoYWxmIiw4NjM2LCJhcnJvd2xlZnRib3RoYWxmIiw4NjM3LCJhcnJvd25vcnRoZWFzdCIsODU5OSwiYXJyb3dub3J0aHdlc3QiLDg1OTgsImFycm93cmlnaHR0b3BoYWxmIiw4NjQwLCJhcnJvd3JpZ2h0Ym90aGFsZiIsODY0MSwiYXJyb3dzb3V0aGVhc3QiLDg2MDAsImFycm93c291dGh3ZXN0Iiw4NjAxLCJiYWNrc2xhc2hiaWciLDg3MjYsImJhY2tzbGFzaEJpZyIsODcyNiwiYmFja3NsYXNoQmlnZyIsODcyNiwiYmFja3NsYXNoYmlnZyIsODcyNiwiYmFyZGJsIiw4MjE0LCJicmFjZWh0aXBkb3dubGVmdCIsNjUwNzksImJyYWNlaHRpcGRvd25yaWdodCIsNjUwNzksImJyYWNlaHRpcHVwbGVmdCIsNjUwODAsImJyYWNlaHRpcHVwcmlnaHQiLDY1MDgwLCJicmFjZWxlZnRCaWciLDEyMywiYnJhY2VsZWZ0YmlnIiwxMjMsImJyYWNlbGVmdGJpZ2ciLDEyMywiYnJhY2VsZWZ0QmlnZyIsMTIzLCJicmFjZXJpZ2h0QmlnIiwxMjUsImJyYWNlcmlnaHRiaWciLDEyNSwiYnJhY2VyaWdodGJpZ2ciLDEyNSwiYnJhY2VyaWdodEJpZ2ciLDEyNSwiYnJhY2tldGxlZnRiaWciLDkxLCJicmFja2V0bGVmdEJpZyIsOTEsImJyYWNrZXRsZWZ0YmlnZyIsOTEsImJyYWNrZXRsZWZ0QmlnZyIsOTEsImJyYWNrZXRyaWdodEJpZyIsOTMsImJyYWNrZXRyaWdodGJpZyIsOTMsImJyYWNrZXRyaWdodGJpZ2ciLDkzLCJicmFja2V0cmlnaHRCaWdnIiw5MywiY2VpbGluZ2xlZnRiaWciLDg5NjgsImNlaWxpbmdsZWZ0QmlnIiw4OTY4LCJjZWlsaW5nbGVmdEJpZ2ciLDg5NjgsImNlaWxpbmdsZWZ0YmlnZyIsODk2OCwiY2VpbGluZ3JpZ2h0YmlnIiw4OTY5LCJjZWlsaW5ncmlnaHRCaWciLDg5NjksImNlaWxpbmdyaWdodGJpZ2ciLDg5NjksImNlaWxpbmdyaWdodEJpZ2ciLDg5NjksImNpcmNsZWRvdGRpc3BsYXkiLDg4NTcsImNpcmNsZWRvdHRleHQiLDg4NTcsImNpcmNsZW11bHRpcGx5ZGlzcGxheSIsODg1NSwiY2lyY2xlbXVsdGlwbHl0ZXh0Iiw4ODU1LCJjaXJjbGVwbHVzZGlzcGxheSIsODg1MywiY2lyY2xlcGx1c3RleHQiLDg4NTMsImNvbnRpbnRlZ3JhbGRpc3BsYXkiLDg3NTAsImNvbnRpbnRlZ3JhbHRleHQiLDg3NTAsImNvcHJvZHVjdGRpc3BsYXkiLDg3MjAsImNvcHJvZHVjdHRleHQiLDg3MjAsImZsb29ybGVmdEJpZyIsODk3MCwiZmxvb3JsZWZ0YmlnIiw4OTcwLCJmbG9vcmxlZnRiaWdnIiw4OTcwLCJmbG9vcmxlZnRCaWdnIiw4OTcwLCJmbG9vcnJpZ2h0YmlnIiw4OTcxLCJmbG9vcnJpZ2h0QmlnIiw4OTcxLCJmbG9vcnJpZ2h0QmlnZyIsODk3MSwiZmxvb3JyaWdodGJpZ2ciLDg5NzEsImhhdHdpZGUiLDc3MCwiaGF0d2lkZXIiLDc3MCwiaGF0d2lkZXN0Iiw3NzAsImludGVyY2FsIiw3NDg4LCJpbnRlZ3JhbGRpc3BsYXkiLDg3NDcsImludGVncmFsdGV4dCIsODc0NywiaW50ZXJzZWN0aW9uZGlzcGxheSIsODg5OCwiaW50ZXJzZWN0aW9udGV4dCIsODg5OCwibG9naWNhbGFuZGRpc3BsYXkiLDg3NDMsImxvZ2ljYWxhbmR0ZXh0Iiw4NzQzLCJsb2dpY2Fsb3JkaXNwbGF5Iiw4NzQ0LCJsb2dpY2Fsb3J0ZXh0Iiw4NzQ0LCJwYXJlbmxlZnRCaWciLDQwLCJwYXJlbmxlZnRiaWciLDQwLCJwYXJlbmxlZnRCaWdnIiw0MCwicGFyZW5sZWZ0YmlnZyIsNDAsInBhcmVucmlnaHRCaWciLDQxLCJwYXJlbnJpZ2h0YmlnIiw0MSwicGFyZW5yaWdodEJpZ2ciLDQxLCJwYXJlbnJpZ2h0YmlnZyIsNDEsInByaW1lIiw4MjQyLCJwcm9kdWN0ZGlzcGxheSIsODcxOSwicHJvZHVjdHRleHQiLDg3MTksInJhZGljYWxiaWciLDg3MzAsInJhZGljYWxCaWciLDg3MzAsInJhZGljYWxCaWdnIiw4NzMwLCJyYWRpY2FsYmlnZyIsODczMCwicmFkaWNhbGJ0Iiw4NzMwLCJyYWRpY2FsdHAiLDg3MzAsInJhZGljYWx2ZXJ0ZXgiLDg3MzAsInNsYXNoYmlnIiw0Nywic2xhc2hCaWciLDQ3LCJzbGFzaEJpZ2ciLDQ3LCJzbGFzaGJpZ2ciLDQ3LCJzdW1tYXRpb25kaXNwbGF5Iiw4NzIxLCJzdW1tYXRpb250ZXh0Iiw4NzIxLCJ0aWxkZXdpZGUiLDczMiwidGlsZGV3aWRlciIsNzMyLCJ0aWxkZXdpZGVzdCIsNzMyLCJ1bmlvbmRpc3BsYXkiLDg4OTksInVuaW9ubXVsdGlkaXNwbGF5Iiw4ODQ2LCJ1bmlvbm11bHRpdGV4dCIsODg0NiwidW5pb25zcWRpc3BsYXkiLDg4NTIsInVuaW9uc3F0ZXh0Iiw4ODUyLCJ1bmlvbnRleHQiLDg4OTksInZleHRlbmRkb3VibGUiLDg3NDEsInZleHRlbmRzaW5nbGUiLDg3MzldfSkpLGk9KDAsbi5nZXRBcnJheUxvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKCl7cmV0dXJuWyJzcGFjZSIsMzIsImExIiw5OTg1LCJhMiIsOTk4NiwiYTIwMiIsOTk4NywiYTMiLDk5ODgsImE0Iiw5NzQyLCJhNSIsOTk5MCwiYTExOSIsOTk5MSwiYTExOCIsOTk5MiwiYTExNyIsOTk5MywiYTExIiw5NzU1LCJhMTIiLDk3NTgsImExMyIsOTk5NiwiYTE0Iiw5OTk3LCJhMTUiLDk5OTgsImExNiIsOTk5OSwiYTEwNSIsMWU0LCJhMTciLDEwMDAxLCJhMTgiLDEwMDAyLCJhMTkiLDEwMDAzLCJhMjAiLDEwMDA0LCJhMjEiLDEwMDA1LCJhMjIiLDEwMDA2LCJhMjMiLDEwMDA3LCJhMjQiLDEwMDA4LCJhMjUiLDEwMDA5LCJhMjYiLDEwMDEwLCJhMjciLDEwMDExLCJhMjgiLDEwMDEyLCJhNiIsMTAwMTMsImE3IiwxMDAxNCwiYTgiLDEwMDE1LCJhOSIsMTAwMTYsImExMCIsMTAwMTcsImEyOSIsMTAwMTgsImEzMCIsMTAwMTksImEzMSIsMTAwMjAsImEzMiIsMTAwMjEsImEzMyIsMTAwMjIsImEzNCIsMTAwMjMsImEzNSIsOTczMywiYTM2IiwxMDAyNSwiYTM3IiwxMDAyNiwiYTM4IiwxMDAyNywiYTM5IiwxMDAyOCwiYTQwIiwxMDAyOSwiYTQxIiwxMDAzMCwiYTQyIiwxMDAzMSwiYTQzIiwxMDAzMiwiYTQ0IiwxMDAzMywiYTQ1IiwxMDAzNCwiYTQ2IiwxMDAzNSwiYTQ3IiwxMDAzNiwiYTQ4IiwxMDAzNywiYTQ5IiwxMDAzOCwiYTUwIiwxMDAzOSwiYTUxIiwxMDA0MCwiYTUyIiwxMDA0MSwiYTUzIiwxMDA0MiwiYTU0IiwxMDA0MywiYTU1IiwxMDA0NCwiYTU2IiwxMDA0NSwiYTU3IiwxMDA0NiwiYTU4IiwxMDA0NywiYTU5IiwxMDA0OCwiYTYwIiwxMDA0OSwiYTYxIiwxMDA1MCwiYTYyIiwxMDA1MSwiYTYzIiwxMDA1MiwiYTY0IiwxMDA1MywiYTY1IiwxMDA1NCwiYTY2IiwxMDA1NSwiYTY3IiwxMDA1NiwiYTY4IiwxMDA1NywiYTY5IiwxMDA1OCwiYTcwIiwxMDA1OSwiYTcxIiw5Njc5LCJhNzIiLDEwMDYxLCJhNzMiLDk2MzIsImE3NCIsMTAwNjMsImEyMDMiLDEwMDY0LCJhNzUiLDEwMDY1LCJhMjA0IiwxMDA2NiwiYTc2Iiw5NjUwLCJhNzciLDk2NjAsImE3OCIsOTY3MCwiYTc5IiwxMDA3MCwiYTgxIiw5Njg3LCJhODIiLDEwMDcyLCJhODMiLDEwMDczLCJhODQiLDEwMDc0LCJhOTciLDEwMDc1LCJhOTgiLDEwMDc2LCJhOTkiLDEwMDc3LCJhMTAwIiwxMDA3OCwiYTEwMSIsMTAwODEsImExMDIiLDEwMDgyLCJhMTAzIiwxMDA4MywiYTEwNCIsMTAwODQsImExMDYiLDEwMDg1LCJhMTA3IiwxMDA4NiwiYTEwOCIsMTAwODcsImExMTIiLDk4MjcsImExMTEiLDk4MzAsImExMTAiLDk4MjksImExMDkiLDk4MjQsImExMjAiLDkzMTIsImExMjEiLDkzMTMsImExMjIiLDkzMTQsImExMjMiLDkzMTUsImExMjQiLDkzMTYsImExMjUiLDkzMTcsImExMjYiLDkzMTgsImExMjciLDkzMTksImExMjgiLDkzMjAsImExMjkiLDkzMjEsImExMzAiLDEwMTAyLCJhMTMxIiwxMDEwMywiYTEzMiIsMTAxMDQsImExMzMiLDEwMTA1LCJhMTM0IiwxMDEwNiwiYTEzNSIsMTAxMDcsImExMzYiLDEwMTA4LCJhMTM3IiwxMDEwOSwiYTEzOCIsMTAxMTAsImExMzkiLDEwMTExLCJhMTQwIiwxMDExMiwiYTE0MSIsMTAxMTMsImExNDIiLDEwMTE0LCJhMTQzIiwxMDExNSwiYTE0NCIsMTAxMTYsImExNDUiLDEwMTE3LCJhMTQ2IiwxMDExOCwiYTE0NyIsMTAxMTksImExNDgiLDEwMTIwLCJhMTQ5IiwxMDEyMSwiYTE1MCIsMTAxMjIsImExNTEiLDEwMTIzLCJhMTUyIiwxMDEyNCwiYTE1MyIsMTAxMjUsImExNTQiLDEwMTI2LCJhMTU1IiwxMDEyNywiYTE1NiIsMTAxMjgsImExNTciLDEwMTI5LCJhMTU4IiwxMDEzMCwiYTE1OSIsMTAxMzEsImExNjAiLDEwMTMyLCJhMTYxIiw4NTk0LCJhMTYzIiw4NTk2LCJhMTY0Iiw4NTk3LCJhMTk2IiwxMDEzNiwiYTE2NSIsMTAxMzcsImExOTIiLDEwMTM4LCJhMTY2IiwxMDEzOSwiYTE2NyIsMTAxNDAsImExNjgiLDEwMTQxLCJhMTY5IiwxMDE0MiwiYTE3MCIsMTAxNDMsImExNzEiLDEwMTQ0LCJhMTcyIiwxMDE0NSwiYTE3MyIsMTAxNDYsImExNjIiLDEwMTQ3LCJhMTc0IiwxMDE0OCwiYTE3NSIsMTAxNDksImExNzYiLDEwMTUwLCJhMTc3IiwxMDE1MSwiYTE3OCIsMTAxNTIsImExNzkiLDEwMTUzLCJhMTkzIiwxMDE1NCwiYTE4MCIsMTAxNTUsImExOTkiLDEwMTU2LCJhMTgxIiwxMDE1NywiYTIwMCIsMTAxNTgsImExODIiLDEwMTU5LCJhMjAxIiwxMDE2MSwiYTE4MyIsMTAxNjIsImExODQiLDEwMTYzLCJhMTk3IiwxMDE2NCwiYTE4NSIsMTAxNjUsImExOTQiLDEwMTY2LCJhMTk4IiwxMDE2NywiYTE4NiIsMTAxNjgsImExOTUiLDEwMTY5LCJhMTg3IiwxMDE3MCwiYTE4OCIsMTAxNzEsImExODkiLDEwMTcyLCJhMTkwIiwxMDE3MywiYTE5MSIsMTAxNzQsImE4OSIsMTAwODgsImE5MCIsMTAwODksImE5MyIsMTAwOTAsImE5NCIsMTAwOTEsImE5MSIsMTAwOTIsImE5MiIsMTAwOTMsImEyMDUiLDEwMDk0LCJhODUiLDEwMDk1LCJhMjA2IiwxMDA5NiwiYTg2IiwxMDA5NywiYTg3IiwxMDA5OCwiYTg4IiwxMDA5OSwiYTk1IiwxMDEwMCwiYTk2IiwxMDEwMSwiLm5vdGRlZiIsMF19KSl9LChlLHQscik9PntyLnIodCksci5kKHQse2NsZWFyVW5pY29kZUNhY2hlczooKT0+cCxnZXRDaGFyVW5pY29kZUNhdGVnb3J5OigpPT5kLGdldE5vcm1hbGl6ZWRVbmljb2RlczooKT0+dSxnZXRVbmljb2RlRm9yR2x5cGg6KCk9Pm8sZ2V0VW5pY29kZVJhbmdlRm9yOigpPT5jLG1hcFNwZWNpYWxVbmljb2RlVmFsdWVzOigpPT5pLHJldmVyc2VJZlJ0bDooKT0+bH0pO3ZhciBuPXIoMTM1KTtjb25zdCBhPSgwLG4uZ2V0TG9va3VwVGFibGVGYWN0b3J5KSgoZnVuY3Rpb24oZSl7ZVs2MzcyMV09MTY5LGVbNjMxOTNdPTE2OSxlWzYzNzIwXT0xNzQsZVs2MzE5NF09MTc0LGVbNjM3MjJdPTg0ODIsZVs2MzE5NV09ODQ4MixlWzYzNzI5XT05MTI3LGVbNjM3MzBdPTkxMjgsZVs2MzczMV09OTEyOSxlWzYzNzQwXT05MTMxLGVbNjM3NDFdPTkxMzIsZVs2Mzc0Ml09OTEzMyxlWzYzNzI2XT05MTIxLGVbNjM3MjddPTkxMjIsZVs2MzcyOF09OTEyMyxlWzYzNzM3XT05MTI0LGVbNjM3MzhdPTkxMjUsZVs2MzczOV09OTEyNixlWzYzNzIzXT05MTE1LGVbNjM3MjRdPTkxMTYsZVs2MzcyNV09OTExNyxlWzYzNzM0XT05MTE4LGVbNjM3MzVdPTkxMTksZVs2MzczNl09OTEyMH0pKTtmdW5jdGlvbiBpKGUpe3JldHVybiBlPj02NTUyMCYmZTw9NjU1MzU/MDplPj02Mjk3NiYmZTw9NjM3NDM/YSgpW2VdfHxlOjE3Mz09PWU/NDU6ZX1mdW5jdGlvbiBvKGUsdCl7bGV0IHI9dFtlXTtpZih2b2lkIDAhPT1yKXJldHVybiByO2lmKCFlKXJldHVybi0xO2lmKCJ1Ij09PWVbMF0pe2NvbnN0IHQ9ZS5sZW5ndGg7bGV0IG47aWYoNz09PXQmJiJuIj09PWVbMV0mJiJpIj09PWVbMl0pbj1lLnN1YnN0cmluZygzKTtlbHNle2lmKCEodD49NSYmdDw9NykpcmV0dXJuLTE7bj1lLnN1YnN0cmluZygxKX1pZihuPT09bi50b1VwcGVyQ2FzZSgpJiYocj1wYXJzZUludChuLDE2KSxyPj0wKSlyZXR1cm4gcn1yZXR1cm4tMX1jb25zdCBzPVt7YmVnaW46MCxlbmQ6MTI3fSx7YmVnaW46MTI4LGVuZDoyNTV9LHtiZWdpbjoyNTYsZW5kOjM4M30se2JlZ2luOjM4NCxlbmQ6NTkxfSx7YmVnaW46NTkyLGVuZDo2ODd9LHtiZWdpbjo2ODgsZW5kOjc2N30se2JlZ2luOjc2OCxlbmQ6ODc5fSx7YmVnaW46ODgwLGVuZDoxMDIzfSx7YmVnaW46MTEzOTIsZW5kOjExNTE5fSx7YmVnaW46MTAyNCxlbmQ6MTI3OX0se2JlZ2luOjEzMjgsZW5kOjE0MjN9LHtiZWdpbjoxNDI0LGVuZDoxNTM1fSx7YmVnaW46NDIyNDAsZW5kOjQyNTU5fSx7YmVnaW46MTUzNixlbmQ6MTc5MX0se2JlZ2luOjE5ODQsZW5kOjIwNDd9LHtiZWdpbjoyMzA0LGVuZDoyNDMxfSx7YmVnaW46MjQzMixlbmQ6MjU1OX0se2JlZ2luOjI1NjAsZW5kOjI2ODd9LHtiZWdpbjoyNjg4LGVuZDoyODE1fSx7YmVnaW46MjgxNixlbmQ6Mjk0M30se2JlZ2luOjI5NDQsZW5kOjMwNzF9LHtiZWdpbjozMDcyLGVuZDozMTk5fSx7YmVnaW46MzIwMCxlbmQ6MzMyN30se2JlZ2luOjMzMjgsZW5kOjM0NTV9LHtiZWdpbjozNTg0LGVuZDozNzExfSx7YmVnaW46MzcxMixlbmQ6MzgzOX0se2JlZ2luOjQyNTYsZW5kOjQzNTF9LHtiZWdpbjo2OTEyLGVuZDo3MDM5fSx7YmVnaW46NDM1MixlbmQ6NDYwN30se2JlZ2luOjc2ODAsZW5kOjc5MzV9LHtiZWdpbjo3OTM2LGVuZDo4MTkxfSx7YmVnaW46ODE5MixlbmQ6ODMwM30se2JlZ2luOjgzMDQsZW5kOjgzNTF9LHtiZWdpbjo4MzUyLGVuZDo4Mzk5fSx7YmVnaW46ODQwMCxlbmQ6ODQ0N30se2JlZ2luOjg0NDgsZW5kOjg1Mjd9LHtiZWdpbjo4NTI4LGVuZDo4NTkxfSx7YmVnaW46ODU5MixlbmQ6ODcwM30se2JlZ2luOjg3MDQsZW5kOjg5NTl9LHtiZWdpbjo4OTYwLGVuZDo5MjE1fSx7YmVnaW46OTIxNixlbmQ6OTI3OX0se2JlZ2luOjkyODAsZW5kOjkzMTF9LHtiZWdpbjo5MzEyLGVuZDo5NDcxfSx7YmVnaW46OTQ3MixlbmQ6OTU5OX0se2JlZ2luOjk2MDAsZW5kOjk2MzF9LHtiZWdpbjo5NjMyLGVuZDo5NzI3fSx7YmVnaW46OTcyOCxlbmQ6OTk4M30se2JlZ2luOjk5ODQsZW5kOjEwMTc1fSx7YmVnaW46MTIyODgsZW5kOjEyMzUxfSx7YmVnaW46MTIzNTIsZW5kOjEyNDQ3fSx7YmVnaW46MTI0NDgsZW5kOjEyNTQzfSx7YmVnaW46MTI1NDQsZW5kOjEyNTkxfSx7YmVnaW46MTI1OTIsZW5kOjEyNjg3fSx7YmVnaW46NDMwNzIsZW5kOjQzMTM1fSx7YmVnaW46MTI4MDAsZW5kOjEzMDU1fSx7YmVnaW46MTMwNTYsZW5kOjEzMzExfSx7YmVnaW46NDQwMzIsZW5kOjU1MjE1fSx7YmVnaW46NTUyOTYsZW5kOjU3MzQzfSx7YmVnaW46Njc4NDAsZW5kOjY3ODcxfSx7YmVnaW46MTk5NjgsZW5kOjQwOTU5fSx7YmVnaW46NTczNDQsZW5kOjYzNzQzfSx7YmVnaW46MTI3MzYsZW5kOjEyNzgzfSx7YmVnaW46NjQyNTYsZW5kOjY0MzM1fSx7YmVnaW46NjQzMzYsZW5kOjY1MDIzfSx7YmVnaW46NjUwNTYsZW5kOjY1MDcxfSx7YmVnaW46NjUwNDAsZW5kOjY1MDU1fSx7YmVnaW46NjUxMDQsZW5kOjY1MTM1fSx7YmVnaW46NjUxMzYsZW5kOjY1Mjc5fSx7YmVnaW46NjUyODAsZW5kOjY1NTE5fSx7YmVnaW46NjU1MjAsZW5kOjY1NTM1fSx7YmVnaW46Mzg0MCxlbmQ6NDA5NX0se2JlZ2luOjE3OTIsZW5kOjE4NzF9LHtiZWdpbjoxOTIwLGVuZDoxOTgzfSx7YmVnaW46MzQ1NixlbmQ6MzU4M30se2JlZ2luOjQwOTYsZW5kOjQyNTV9LHtiZWdpbjo0NjA4LGVuZDo0OTkxfSx7YmVnaW46NTAyNCxlbmQ6NTExOX0se2JlZ2luOjUxMjAsZW5kOjU3NTl9LHtiZWdpbjo1NzYwLGVuZDo1NzkxfSx7YmVnaW46NTc5MixlbmQ6NTg4N30se2JlZ2luOjYwMTYsZW5kOjYxNDN9LHtiZWdpbjo2MTQ0LGVuZDo2MzE5fSx7YmVnaW46MTAyNDAsZW5kOjEwNDk1fSx7YmVnaW46NDA5NjAsZW5kOjQyMTI3fSx7YmVnaW46NTg4OCxlbmQ6NTkxOX0se2JlZ2luOjY2MzA0LGVuZDo2NjM1MX0se2JlZ2luOjY2MzUyLGVuZDo2NjM4M30se2JlZ2luOjY2NTYwLGVuZDo2NjYzOX0se2JlZ2luOjExODc4NCxlbmQ6MTE5MDM5fSx7YmVnaW46MTE5ODA4LGVuZDoxMjA4MzF9LHtiZWdpbjoxMDQ0NDgwLGVuZDoxMDQ4NTczfSx7YmVnaW46NjUwMjQsZW5kOjY1MDM5fSx7YmVnaW46OTE3NTA0LGVuZDo5MTc2MzF9LHtiZWdpbjo2NDAwLGVuZDo2NDc5fSx7YmVnaW46NjQ4MCxlbmQ6NjUyN30se2JlZ2luOjY1MjgsZW5kOjY2MjN9LHtiZWdpbjo2NjU2LGVuZDo2Njg3fSx7YmVnaW46MTEyNjQsZW5kOjExMzU5fSx7YmVnaW46MTE1NjgsZW5kOjExNjQ3fSx7YmVnaW46MTk5MDQsZW5kOjE5OTY3fSx7YmVnaW46NDMwMDgsZW5kOjQzMDU1fSx7YmVnaW46NjU1MzYsZW5kOjY1NjYzfSx7YmVnaW46NjU4NTYsZW5kOjY1OTM1fSx7YmVnaW46NjY0MzIsZW5kOjY2NDYzfSx7YmVnaW46NjY0NjQsZW5kOjY2NTI3fSx7YmVnaW46NjY2NDAsZW5kOjY2Njg3fSx7YmVnaW46NjY2ODgsZW5kOjY2NzM1fSx7YmVnaW46Njc1ODQsZW5kOjY3NjQ3fSx7YmVnaW46NjgwOTYsZW5kOjY4MTkxfSx7YmVnaW46MTE5NTUyLGVuZDoxMTk2NDd9LHtiZWdpbjo3MzcyOCxlbmQ6NzQ3NTF9LHtiZWdpbjoxMTk2NDgsZW5kOjExOTY3OX0se2JlZ2luOjcwNDAsZW5kOjcxMDN9LHtiZWdpbjo3MTY4LGVuZDo3MjQ3fSx7YmVnaW46NzI0OCxlbmQ6NzI5NX0se2JlZ2luOjQzMTM2LGVuZDo0MzIzMX0se2JlZ2luOjQzMjY0LGVuZDo0MzMxMX0se2JlZ2luOjQzMzEyLGVuZDo0MzM1OX0se2JlZ2luOjQzNTIwLGVuZDo0MzYxNX0se2JlZ2luOjY1OTM2LGVuZDo2NTk5OX0se2JlZ2luOjY2ZTMsZW5kOjY2MDQ3fSx7YmVnaW46NjYyMDgsZW5kOjY2MjcxfSx7YmVnaW46MTI3MDI0LGVuZDoxMjcxMzV9XTtmdW5jdGlvbiBjKGUpe2ZvcihsZXQgdD0wLHI9cy5sZW5ndGg7dDxyO3QrKyl7Y29uc3Qgcj1zW3RdO2lmKGU+PXIuYmVnaW4mJmU8ci5lbmQpcmV0dXJuIHR9cmV0dXJuLTF9Y29uc3QgdT0oMCxuLmdldEFycmF5TG9va3VwVGFibGVGYWN0b3J5KSgoZnVuY3Rpb24oKXtyZXR1cm5bIsKoIiwiIMyIIiwiwq8iLCIgzIQiLCLCtCIsIiDMgSIsIsK1IiwizrwiLCLCuCIsIiDMpyIsIsSyIiwiSUoiLCLEsyIsImlqIiwixL8iLCJMwrciLCLFgCIsImzCtyIsIsWJIiwiyrxuIiwixb8iLCJzIiwix4QiLCJExb0iLCLHhSIsIkTFviIsIseGIiwiZMW+Iiwix4ciLCJMSiIsIseIIiwiTGoiLCLHiSIsImxqIiwix4oiLCJOSiIsIseLIiwiTmoiLCLHjCIsIm5qIiwix7EiLCJEWiIsIseyIiwiRHoiLCLHsyIsImR6Iiwiy5giLCIgzIYiLCLLmSIsIiDMhyIsIsuaIiwiIMyKIiwiy5siLCIgzKgiLCLLnCIsIiDMgyIsIsudIiwiIMyLIiwizboiLCIgzYUiLCLOhCIsIiDMgSIsIs+QIiwizrIiLCLPkSIsIs64Iiwiz5IiLCLOpSIsIs+VIiwiz4YiLCLPliIsIs+AIiwiz7AiLCLOuiIsIs+xIiwiz4EiLCLPsiIsIs+CIiwiz7QiLCLOmCIsIs+1IiwizrUiLCLPuSIsIs6jIiwi1ociLCLVpdaCIiwi2bUiLCLYp9m0Iiwi2bYiLCLZiNm0Iiwi2bciLCLbh9m0Iiwi2bgiLCLZitm0Iiwi4LizIiwi4LmN4LiyIiwi4LqzIiwi4LuN4LqyIiwi4LucIiwi4Lqr4LqZIiwi4LudIiwi4Lqr4LqhIiwi4L23Iiwi4L6y4L6BIiwi4L25Iiwi4L6z4L6BIiwi4bqaIiwiYcq+Iiwi4b69IiwiIMyTIiwi4b6/IiwiIMyTIiwi4b+AIiwiIM2CIiwi4b++IiwiIMyUIiwi4oCCIiwiICIsIuKAgyIsIiAiLCLigIQiLCIgIiwi4oCFIiwiICIsIuKAhiIsIiAiLCLigIgiLCIgIiwi4oCJIiwiICIsIuKAiiIsIiAiLCLigJciLCIgzLMiLCLigKQiLCIuIiwi4oClIiwiLi4iLCLigKYiLCIuLi4iLCLigLMiLCLigLLigLIiLCLigLQiLCLigLLigLLigLIiLCLigLYiLCLigLXigLUiLCLigLciLCLigLXigLXigLUiLCLigLwiLCIhISIsIuKAviIsIiDMhSIsIuKBhyIsIj8/Iiwi4oGIIiwiPyEiLCLigYkiLCIhPyIsIuKBlyIsIuKAsuKAsuKAsuKAsiIsIuKBnyIsIiAiLCLigqgiLCJScyIsIuKEgCIsImEvYyIsIuKEgSIsImEvcyIsIuKEgyIsIsKwQyIsIuKEhSIsImMvbyIsIuKEhiIsImMvdSIsIuKEhyIsIsaQIiwi4oSJIiwiwrBGIiwi4oSWIiwiTm8iLCLihKEiLCJURUwiLCLihLUiLCLXkCIsIuKEtiIsIteRIiwi4oS3Iiwi15IiLCLihLgiLCLXkyIsIuKEuyIsIkZBWCIsIuKFoCIsIkkiLCLihaEiLCJJSSIsIuKFoiIsIklJSSIsIuKFoyIsIklWIiwi4oWkIiwiViIsIuKFpSIsIlZJIiwi4oWmIiwiVklJIiwi4oWnIiwiVklJSSIsIuKFqCIsIklYIiwi4oWpIiwiWCIsIuKFqiIsIlhJIiwi4oWrIiwiWElJIiwi4oWsIiwiTCIsIuKFrSIsIkMiLCLiha4iLCJEIiwi4oWvIiwiTSIsIuKFsCIsImkiLCLihbEiLCJpaSIsIuKFsiIsImlpaSIsIuKFsyIsIml2Iiwi4oW0IiwidiIsIuKFtSIsInZpIiwi4oW2IiwidmlpIiwi4oW3IiwidmlpaSIsIuKFuCIsIml4Iiwi4oW5IiwieCIsIuKFuiIsInhpIiwi4oW7IiwieGlpIiwi4oW8IiwibCIsIuKFvSIsImMiLCLihb4iLCJkIiwi4oW/IiwibSIsIuKIrCIsIuKIq+KIqyIsIuKIrSIsIuKIq+KIq+KIqyIsIuKIryIsIuKIruKIriIsIuKIsCIsIuKIruKIruKIriIsIuKRtCIsIigxKSIsIuKRtSIsIigyKSIsIuKRtiIsIigzKSIsIuKRtyIsIig0KSIsIuKRuCIsIig1KSIsIuKRuSIsIig2KSIsIuKRuiIsIig3KSIsIuKRuyIsIig4KSIsIuKRvCIsIig5KSIsIuKRvSIsIigxMCkiLCLikb4iLCIoMTEpIiwi4pG/IiwiKDEyKSIsIuKSgCIsIigxMykiLCLikoEiLCIoMTQpIiwi4pKCIiwiKDE1KSIsIuKSgyIsIigxNikiLCLikoQiLCIoMTcpIiwi4pKFIiwiKDE4KSIsIuKShiIsIigxOSkiLCLikociLCIoMjApIiwi4pKIIiwiMS4iLCLikokiLCIyLiIsIuKSiiIsIjMuIiwi4pKLIiwiNC4iLCLikowiLCI1LiIsIuKSjSIsIjYuIiwi4pKOIiwiNy4iLCLiko8iLCI4LiIsIuKSkCIsIjkuIiwi4pKRIiwiMTAuIiwi4pKSIiwiMTEuIiwi4pKTIiwiMTIuIiwi4pKUIiwiMTMuIiwi4pKVIiwiMTQuIiwi4pKWIiwiMTUuIiwi4pKXIiwiMTYuIiwi4pKYIiwiMTcuIiwi4pKZIiwiMTguIiwi4pKaIiwiMTkuIiwi4pKbIiwiMjAuIiwi4pKcIiwiKGEpIiwi4pKdIiwiKGIpIiwi4pKeIiwiKGMpIiwi4pKfIiwiKGQpIiwi4pKgIiwiKGUpIiwi4pKhIiwiKGYpIiwi4pKiIiwiKGcpIiwi4pKjIiwiKGgpIiwi4pKkIiwiKGkpIiwi4pKlIiwiKGopIiwi4pKmIiwiKGspIiwi4pKnIiwiKGwpIiwi4pKoIiwiKG0pIiwi4pKpIiwiKG4pIiwi4pKqIiwiKG8pIiwi4pKrIiwiKHApIiwi4pKsIiwiKHEpIiwi4pKtIiwiKHIpIiwi4pKuIiwiKHMpIiwi4pKvIiwiKHQpIiwi4pKwIiwiKHUpIiwi4pKxIiwiKHYpIiwi4pKyIiwiKHcpIiwi4pKzIiwiKHgpIiwi4pK0IiwiKHkpIiwi4pK1IiwiKHopIiwi4qiMIiwi4oir4oir4oir4oirIiwi4qm0IiwiOjo9Iiwi4qm1IiwiPT0iLCLiqbYiLCI9PT0iLCLiup8iLCLmr40iLCLiu7MiLCLpvp8iLCLivIAiLCLkuIAiLCLivIEiLCLkuKgiLCLivIIiLCLkuLYiLCLivIMiLCLkuL8iLCLivIQiLCLkuZkiLCLivIUiLCLkuoUiLCLivIYiLCLkuowiLCLivIciLCLkuqAiLCLivIgiLCLkuroiLCLivIkiLCLlhL8iLCLivIoiLCLlhaUiLCLivIsiLCLlhasiLCLivIwiLCLlhoIiLCLivI0iLCLlhpYiLCLivI4iLCLlhqsiLCLivI8iLCLlh6AiLCLivJAiLCLlh7UiLCLivJEiLCLliIAiLCLivJIiLCLlipsiLCLivJMiLCLli7kiLCLivJQiLCLljJUiLCLivJUiLCLljJoiLCLivJYiLCLljLgiLCLivJciLCLljYEiLCLivJgiLCLljZwiLCLivJkiLCLljakiLCLivJoiLCLljoIiLCLivJsiLCLljrYiLCLivJwiLCLlj4giLCLivJ0iLCLlj6MiLCLivJ4iLCLlm5ciLCLivJ8iLCLlnJ8iLCLivKAiLCLlo6siLCLivKEiLCLlpIIiLCLivKIiLCLlpIoiLCLivKMiLCLlpJUiLCLivKQiLCLlpKciLCLivKUiLCLlpbMiLCLivKYiLCLlrZAiLCLivKciLCLlroAiLCLivKgiLCLlr7giLCLivKkiLCLlsI8iLCLivKoiLCLlsKIiLCLivKsiLCLlsLgiLCLivKwiLCLlsa4iLCLivK0iLCLlsbEiLCLivK4iLCLlt5siLCLivK8iLCLlt6UiLCLivLAiLCLlt7EiLCLivLEiLCLlt74iLCLivLIiLCLlubIiLCLivLMiLCLluboiLCLivLQiLCLlub8iLCLivLUiLCLlu7QiLCLivLYiLCLlu74iLCLivLciLCLlvIsiLCLivLgiLCLlvJMiLCLivLkiLCLlvZAiLCLivLoiLCLlvaEiLCLivLsiLCLlvbMiLCLivLwiLCLlv4MiLCLivL0iLCLmiIgiLCLivL4iLCLmiLYiLCLivL8iLCLmiYsiLCLivYAiLCLmlK8iLCLivYEiLCLmlLQiLCLivYIiLCLmlociLCLivYMiLCLmlpciLCLivYQiLCLmlqQiLCLivYUiLCLmlrkiLCLivYYiLCLml6AiLCLivYciLCLml6UiLCLivYgiLCLmm7AiLCLivYkiLCLmnIgiLCLivYoiLCLmnKgiLCLivYsiLCLmrKAiLCLivYwiLCLmraIiLCLivY0iLCLmrbkiLCLivY4iLCLmrrMiLCLivY8iLCLmr4siLCLivZAiLCLmr5QiLCLivZEiLCLmr5siLCLivZIiLCLmsI8iLCLivZMiLCLmsJQiLCLivZQiLCLmsLQiLCLivZUiLCLngasiLCLivZYiLCLniKoiLCLivZciLCLniLYiLCLivZgiLCLniLsiLCLivZkiLCLniL8iLCLivZoiLCLniYciLCLivZsiLCLniZkiLCLivZwiLCLniZsiLCLivZ0iLCLniqwiLCLivZ4iLCLnjoQiLCLivZ8iLCLnjokiLCLivaAiLCLnk5wiLCLivaEiLCLnk6YiLCLivaIiLCLnlJgiLCLivaMiLCLnlJ8iLCLivaQiLCLnlKgiLCLivaUiLCLnlLAiLCLivaYiLCLnlosiLCLivaciLCLnlpIiLCLivagiLCLnmbYiLCLivakiLCLnmb0iLCLivaoiLCLnmq4iLCLivasiLCLnmr8iLCLivawiLCLnm64iLCLiva0iLCLnn5siLCLiva4iLCLnn6IiLCLiva8iLCLnn7MiLCLivbAiLCLnpLoiLCLivbEiLCLnprgiLCLivbIiLCLnpr4iLCLivbMiLCLnqbQiLCLivbQiLCLnq4siLCLivbUiLCLnq7kiLCLivbYiLCLnsbMiLCLivbciLCLns7giLCLivbgiLCLnvLYiLCLivbkiLCLnvZEiLCLivboiLCLnvooiLCLivbsiLCLnvr0iLCLivbwiLCLogIEiLCLivb0iLCLogIwiLCLivb4iLCLogJIiLCLivb8iLCLogLMiLCLivoAiLCLogb8iLCLivoEiLCLogokiLCLivoIiLCLoh6MiLCLivoMiLCLoh6oiLCLivoQiLCLoh7MiLCLivoUiLCLoh7wiLCLivoYiLCLoiIwiLCLivociLCLoiJsiLCLivogiLCLoiJ8iLCLivokiLCLoia4iLCLivooiLCLoibIiLCLivosiLCLoibgiLCLivowiLCLomY0iLCLivo0iLCLomasiLCLivo4iLCLooYAiLCLivo8iLCLooYwiLCLivpAiLCLooaMiLCLivpEiLCLopb4iLCLivpIiLCLoposiLCLivpMiLCLop5IiLCLivpQiLCLoqIAiLCLivpUiLCLosLciLCLivpYiLCLosYYiLCLivpciLCLosZUiLCLivpgiLCLosbgiLCLivpkiLCLosp0iLCLivpoiLCLotaQiLCLivpsiLCLotbAiLCLivpwiLCLotrMiLCLivp0iLCLouqsiLCLivp4iLCLou4oiLCLivp8iLCLovpsiLCLivqAiLCLovrAiLCLivqEiLCLovrUiLCLivqIiLCLpgpEiLCLivqMiLCLphYkiLCLivqQiLCLph4YiLCLivqUiLCLph4wiLCLivqYiLCLph5EiLCLivqciLCLplbciLCLivqgiLCLploAiLCLivqkiLCLpmJwiLCLivqoiLCLpmrYiLCLivqsiLCLpmrkiLCLivqwiLCLpm6giLCLivq0iLCLpnZEiLCLivq4iLCLpnZ4iLCLivq8iLCLpnaIiLCLivrAiLCLpnakiLCLivrEiLCLpn4siLCLivrIiLCLpn60iLCLivrMiLCLpn7MiLCLivrQiLCLpoIEiLCLivrUiLCLpoqgiLCLivrYiLCLpo5siLCLivrciLCLpo58iLCLivrgiLCLpppYiLCLivrkiLCLpppkiLCLivroiLCLppqwiLCLivrsiLCLpqqgiLCLivrwiLCLpq5giLCLivr0iLCLpq58iLCLivr4iLCLprKUiLCLivr8iLCLprK8iLCLiv4AiLCLprLIiLCLiv4EiLCLprLwiLCLiv4IiLCLprZoiLCLiv4MiLCLps6UiLCLiv4QiLCLpubUiLCLiv4UiLCLpub8iLCLiv4YiLCLpuqUiLCLiv4ciLCLpursiLCLiv4giLCLpu4MiLCLiv4kiLCLpu40iLCLiv4oiLCLpu5EiLCLiv4siLCLpu7kiLCLiv4wiLCLpu70iLCLiv40iLCLpvI4iLCLiv44iLCLpvJMiLCLiv48iLCLpvKAiLCLiv5AiLCLpvLsiLCLiv5EiLCLpvYoiLCLiv5IiLCLpvZIiLCLiv5MiLCLpvo0iLCLiv5QiLCLpvpwiLCLiv5UiLCLpvqAiLCLjgLYiLCLjgJIiLCLjgLgiLCLljYEiLCLjgLkiLCLljYQiLCLjgLoiLCLljYUiLCLjgpsiLCIg44KZIiwi44KcIiwiIOOCmiIsIuOEsSIsIuGEgCIsIuOEsiIsIuGEgSIsIuOEsyIsIuGGqiIsIuOEtCIsIuGEgiIsIuOEtSIsIuGGrCIsIuOEtiIsIuGGrSIsIuOEtyIsIuGEgyIsIuOEuCIsIuGEhCIsIuOEuSIsIuGEhSIsIuOEuiIsIuGGsCIsIuOEuyIsIuGGsSIsIuOEvCIsIuGGsiIsIuOEvSIsIuGGsyIsIuOEviIsIuGGtCIsIuOEvyIsIuGGtSIsIuOFgCIsIuGEmiIsIuOFgSIsIuGEhiIsIuOFgiIsIuGEhyIsIuOFgyIsIuGEiCIsIuOFhCIsIuGEoSIsIuOFhSIsIuGEiSIsIuOFhiIsIuGEiiIsIuOFhyIsIuGEiyIsIuOFiCIsIuGEjCIsIuOFiSIsIuGEjSIsIuOFiiIsIuGEjiIsIuOFiyIsIuGEjyIsIuOFjCIsIuGEkCIsIuOFjSIsIuGEkSIsIuOFjiIsIuGEkiIsIuOFjyIsIuGFoSIsIuOFkCIsIuGFoiIsIuOFkSIsIuGFoyIsIuOFkiIsIuGFpCIsIuOFkyIsIuGFpSIsIuOFlCIsIuGFpiIsIuOFlSIsIuGFpyIsIuOFliIsIuGFqCIsIuOFlyIsIuGFqSIsIuOFmCIsIuGFqiIsIuOFmSIsIuGFqyIsIuOFmiIsIuGFrCIsIuOFmyIsIuGFrSIsIuOFnCIsIuGFriIsIuOFnSIsIuGFryIsIuOFniIsIuGFsCIsIuOFnyIsIuGFsSIsIuOFoCIsIuGFsiIsIuOFoSIsIuGFsyIsIuOFoiIsIuGFtCIsIuOFoyIsIuGFtSIsIuOFpCIsIuGFoCIsIuOFpSIsIuGElCIsIuOFpiIsIuGElSIsIuOFpyIsIuGHhyIsIuOFqCIsIuGHiCIsIuOFqSIsIuGHjCIsIuOFqiIsIuGHjiIsIuOFqyIsIuGHkyIsIuOFrCIsIuGHlyIsIuOFrSIsIuGHmSIsIuOFriIsIuGEnCIsIuOFryIsIuGHnSIsIuOFsCIsIuGHnyIsIuOFsSIsIuGEnSIsIuOFsiIsIuGEniIsIuOFsyIsIuGEoCIsIuOFtCIsIuGEoiIsIuOFtSIsIuGEoyIsIuOFtiIsIuGEpyIsIuOFtyIsIuGEqSIsIuOFuCIsIuGEqyIsIuOFuSIsIuGErCIsIuOFuiIsIuGErSIsIuOFuyIsIuGEriIsIuOFvCIsIuGEryIsIuOFvSIsIuGEsiIsIuOFviIsIuGEtiIsIuOFvyIsIuGFgCIsIuOGgCIsIuGFhyIsIuOGgSIsIuGFjCIsIuOGgiIsIuGHsSIsIuOGgyIsIuGHsiIsIuOGhCIsIuGFlyIsIuOGhSIsIuGFmCIsIuOGhiIsIuGFmSIsIuOGhyIsIuGGhCIsIuOGiCIsIuGGhSIsIuOGiSIsIuGGiCIsIuOGiiIsIuGGkSIsIuOGiyIsIuGGkiIsIuOGjCIsIuGGlCIsIuOGjSIsIuGGniIsIuOGjiIsIuGGoSIsIuOIgCIsIijhhIApIiwi44iBIiwiKOGEgikiLCLjiIIiLCIo4YSDKSIsIuOIgyIsIijhhIUpIiwi44iEIiwiKOGEhikiLCLjiIUiLCIo4YSHKSIsIuOIhiIsIijhhIkpIiwi44iHIiwiKOGEiykiLCLjiIgiLCIo4YSMKSIsIuOIiSIsIijhhI4pIiwi44iKIiwiKOGEjykiLCLjiIsiLCIo4YSQKSIsIuOIjCIsIijhhJEpIiwi44iNIiwiKOGEkikiLCLjiI4iLCIo4YSA4YWhKSIsIuOIjyIsIijhhILhhaEpIiwi44iQIiwiKOGEg+GFoSkiLCLjiJEiLCIo4YSF4YWhKSIsIuOIkiIsIijhhIbhhaEpIiwi44iTIiwiKOGEh+GFoSkiLCLjiJQiLCIo4YSJ4YWhKSIsIuOIlSIsIijhhIvhhaEpIiwi44iWIiwiKOGEjOGFoSkiLCLjiJciLCIo4YSO4YWhKSIsIuOImCIsIijhhI/hhaEpIiwi44iZIiwiKOGEkOGFoSkiLCLjiJoiLCIo4YSR4YWhKSIsIuOImyIsIijhhJLhhaEpIiwi44icIiwiKOGEjOGFrikiLCLjiJ0iLCIo4YSL4YWp4YSM4YWl4YarKSIsIuOIniIsIijhhIvhhanhhJLhha4pIiwi44igIiwiKOS4gCkiLCLjiKEiLCIo5LqMKSIsIuOIoiIsIijkuIkpIiwi44ijIiwiKOWbmykiLCLjiKQiLCIo5LqUKSIsIuOIpSIsIijlha0pIiwi44imIiwiKOS4gykiLCLjiKciLCIo5YWrKSIsIuOIqCIsIijkuZ0pIiwi44ipIiwiKOWNgSkiLCLjiKoiLCIo5pyIKSIsIuOIqyIsIijngaspIiwi44isIiwiKOawtCkiLCLjiK0iLCIo5pyoKSIsIuOIriIsIijph5EpIiwi44ivIiwiKOWcnykiLCLjiLAiLCIo5pelKSIsIuOIsSIsIijmoKopIiwi44iyIiwiKOaciSkiLCLjiLMiLCIo56S+KSIsIuOItCIsIijlkI0pIiwi44i1IiwiKOeJuSkiLCLjiLYiLCIo6LKhKSIsIuOItyIsIijnpZ0pIiwi44i4IiwiKOWKtCkiLCLjiLkiLCIo5LujKSIsIuOIuiIsIijlkbwpIiwi44i7IiwiKOWtpikiLCLjiLwiLCIo55ujKSIsIuOIvSIsIijkvIEpIiwi44i+IiwiKOizhykiLCLjiL8iLCIo5Y2UKSIsIuOJgCIsIijnpa0pIiwi44mBIiwiKOS8kSkiLCLjiYIiLCIo6IeqKSIsIuOJgyIsIijoh7MpIiwi44uAIiwiMeaciCIsIuOLgSIsIjLmnIgiLCLji4IiLCIz5pyIIiwi44uDIiwiNOaciCIsIuOLhCIsIjXmnIgiLCLji4UiLCI25pyIIiwi44uGIiwiN+aciCIsIuOLhyIsIjjmnIgiLCLji4giLCI55pyIIiwi44uJIiwiMTDmnIgiLCLji4oiLCIxMeaciCIsIuOLiyIsIjEy5pyIIiwi442YIiwiMOeCuSIsIuONmSIsIjHngrkiLCLjjZoiLCIy54K5Iiwi442bIiwiM+eCuSIsIuONnCIsIjTngrkiLCLjjZ0iLCI154K5Iiwi442eIiwiNueCuSIsIuONnyIsIjfngrkiLCLjjaAiLCI454K5Iiwi442hIiwiOeeCuSIsIuONoiIsIjEw54K5Iiwi442jIiwiMTHngrkiLCLjjaQiLCIxMueCuSIsIuONpSIsIjEz54K5Iiwi442mIiwiMTTngrkiLCLjjaciLCIxNeeCuSIsIuONqCIsIjE254K5Iiwi442pIiwiMTfngrkiLCLjjaoiLCIxOOeCuSIsIuONqyIsIjE554K5Iiwi442sIiwiMjDngrkiLCLjja0iLCIyMeeCuSIsIuONriIsIjIy54K5Iiwi442vIiwiMjPngrkiLCLjjbAiLCIyNOeCuSIsIuOPoCIsIjHml6UiLCLjj6EiLCIy5pelIiwi44+iIiwiM+aXpSIsIuOPoyIsIjTml6UiLCLjj6QiLCI15pelIiwi44+lIiwiNuaXpSIsIuOPpiIsIjfml6UiLCLjj6ciLCI45pelIiwi44+oIiwiOeaXpSIsIuOPqSIsIjEw5pelIiwi44+qIiwiMTHml6UiLCLjj6siLCIxMuaXpSIsIuOPrCIsIjEz5pelIiwi44+tIiwiMTTml6UiLCLjj64iLCIxNeaXpSIsIuOPryIsIjE25pelIiwi44+wIiwiMTfml6UiLCLjj7EiLCIxOOaXpSIsIuOPsiIsIjE55pelIiwi44+zIiwiMjDml6UiLCLjj7QiLCIyMeaXpSIsIuOPtSIsIjIy5pelIiwi44+2IiwiMjPml6UiLCLjj7ciLCIyNOaXpSIsIuOPuCIsIjI15pelIiwi44+5IiwiMjbml6UiLCLjj7oiLCIyN+aXpSIsIuOPuyIsIjI45pelIiwi44+8IiwiMjnml6UiLCLjj70iLCIzMOaXpSIsIuOPviIsIjMx5pelIiwi76yAIiwiZmYiLCLvrIEiLCJmaSIsIu+sgiIsImZsIiwi76yDIiwiZmZpIiwi76yEIiwiZmZsIiwi76yFIiwixb90Iiwi76yGIiwic3QiLCLvrJMiLCLVtNW2Iiwi76yUIiwi1bTVpSIsIu+slSIsItW01asiLCLvrJYiLCLVvtW2Iiwi76yXIiwi1bTVrSIsIu+tjyIsIteQ15wiLCLvrZAiLCLZsSIsIu+tkSIsItmxIiwi762SIiwi2bsiLCLvrZMiLCLZuyIsIu+tlCIsItm7Iiwi762VIiwi2bsiLCLvrZYiLCLZviIsIu+tlyIsItm+Iiwi762YIiwi2b4iLCLvrZkiLCLZviIsIu+tmiIsItqAIiwi762bIiwi2oAiLCLvrZwiLCLagCIsIu+tnSIsItqAIiwi762eIiwi2boiLCLvrZ8iLCLZuiIsIu+toCIsItm6Iiwi762hIiwi2boiLCLvraIiLCLZvyIsIu+toyIsItm/Iiwi762kIiwi2b8iLCLvraUiLCLZvyIsIu+tpiIsItm5Iiwi762nIiwi2bkiLCLvragiLCLZuSIsIu+tqSIsItm5Iiwi762qIiwi2qQiLCLvrasiLCLapCIsIu+trCIsItqkIiwi762tIiwi2qQiLCLvra4iLCLapiIsIu+tryIsItqmIiwi762wIiwi2qYiLCLvrbEiLCLapiIsIu+tsiIsItqEIiwi762zIiwi2oQiLCLvrbQiLCLahCIsIu+ttSIsItqEIiwi7622Iiwi2oMiLCLvrbciLCLagyIsIu+tuCIsItqDIiwi7625Iiwi2oMiLCLvrboiLCLahiIsIu+tuyIsItqGIiwi7628Iiwi2oYiLCLvrb0iLCLahiIsIu+tviIsItqHIiwi762/Iiwi2ociLCLvroAiLCLahyIsIu+ugSIsItqHIiwi766CIiwi2o0iLCLvroMiLCLajSIsIu+uhCIsItqMIiwi766FIiwi2owiLCLvroYiLCLajiIsIu+uhyIsItqOIiwi766IIiwi2ogiLCLvrokiLCLaiCIsIu+uiiIsItqYIiwi766LIiwi2pgiLCLvrowiLCLakSIsIu+ujSIsItqRIiwi766OIiwi2qkiLCLvro8iLCLaqSIsIu+ukCIsItqpIiwi766RIiwi2qkiLCLvrpIiLCLaryIsIu+ukyIsItqvIiwi766UIiwi2q8iLCLvrpUiLCLaryIsIu+uliIsItqzIiwi766XIiwi2rMiLCLvrpgiLCLasyIsIu+umSIsItqzIiwi766aIiwi2rEiLCLvrpsiLCLasSIsIu+unCIsItqxIiwi766dIiwi2rEiLCLvrp4iLCLauiIsIu+unyIsItq6Iiwi766gIiwi2rsiLCLvrqEiLCLauyIsIu+uoiIsItq7Iiwi766jIiwi2rsiLCLvrqQiLCLbgCIsIu+upSIsItuAIiwi766mIiwi24EiLCLvrqciLCLbgSIsIu+uqCIsItuBIiwi766pIiwi24EiLCLvrqoiLCLaviIsIu+uqyIsItq+Iiwi766sIiwi2r4iLCLvrq0iLCLaviIsIu+uriIsItuSIiwi766vIiwi25IiLCLvrrAiLCLbkyIsIu+usSIsItuTIiwi76+TIiwi2q0iLCLvr5QiLCLarSIsIu+vlSIsItqtIiwi76+WIiwi2q0iLCLvr5ciLCLbhyIsIu+vmCIsItuHIiwi76+ZIiwi24YiLCLvr5oiLCLbhiIsIu+vmyIsItuIIiwi76+cIiwi24giLCLvr50iLCLZtyIsIu+vniIsItuLIiwi76+fIiwi24siLCLvr6AiLCLbhSIsIu+voSIsItuFIiwi76+iIiwi24kiLCLvr6MiLCLbiSIsIu+vpCIsItuQIiwi76+lIiwi25AiLCLvr6YiLCLbkCIsIu+vpyIsItuQIiwi76+oIiwi2YkiLCLvr6kiLCLZiSIsIu+vqiIsItim2KciLCLvr6siLCLYptinIiwi76+sIiwi2KbblSIsIu+vrSIsItim25UiLCLvr64iLCLYptmIIiwi76+vIiwi2KbZiCIsIu+vsCIsItim24ciLCLvr7EiLCLYptuHIiwi76+yIiwi2KbbhiIsIu+vsyIsItim24YiLCLvr7QiLCLYptuIIiwi76+1Iiwi2KbbiCIsIu+vtiIsItim25AiLCLvr7ciLCLYptuQIiwi76+4Iiwi2KbbkCIsIu+vuSIsItim2YkiLCLvr7oiLCLYptmJIiwi76+7Iiwi2KbZiSIsIu+vvCIsItuMIiwi76+9Iiwi24wiLCLvr74iLCLbjCIsIu+vvyIsItuMIiwi77CAIiwi2KbYrCIsIu+wgSIsItim2K0iLCLvsIIiLCLYptmFIiwi77CDIiwi2KbZiSIsIu+whCIsItim2YoiLCLvsIUiLCLYqNisIiwi77CGIiwi2KjYrSIsIu+whyIsItio2K4iLCLvsIgiLCLYqNmFIiwi77CJIiwi2KjZiSIsIu+wiiIsItio2YoiLCLvsIsiLCLYqtisIiwi77CMIiwi2KrYrSIsIu+wjSIsItiq2K4iLCLvsI4iLCLYqtmFIiwi77CPIiwi2KrZiSIsIu+wkCIsItiq2YoiLCLvsJEiLCLYq9isIiwi77CSIiwi2KvZhSIsIu+wkyIsItir2YkiLCLvsJQiLCLYq9mKIiwi77CVIiwi2KzYrSIsIu+wliIsItis2YUiLCLvsJciLCLYrdisIiwi77CYIiwi2K3ZhSIsIu+wmSIsItiu2KwiLCLvsJoiLCLYrtitIiwi77CbIiwi2K7ZhSIsIu+wnCIsItiz2KwiLCLvsJ0iLCLYs9itIiwi77CeIiwi2LPYriIsIu+wnyIsItiz2YUiLCLvsKAiLCLYtditIiwi77ChIiwi2LXZhSIsIu+woiIsIti22KwiLCLvsKMiLCLYttitIiwi77CkIiwi2LbYriIsIu+wpSIsIti22YUiLCLvsKYiLCLYt9itIiwi77CnIiwi2LfZhSIsIu+wqCIsIti42YUiLCLvsKkiLCLYudisIiwi77CqIiwi2LnZhSIsIu+wqyIsIti62KwiLCLvsKwiLCLYutmFIiwi77CtIiwi2YHYrCIsIu+wriIsItmB2K0iLCLvsK8iLCLZgdiuIiwi77CwIiwi2YHZhSIsIu+wsSIsItmB2YkiLCLvsLIiLCLZgdmKIiwi77CzIiwi2YLYrSIsIu+wtCIsItmC2YUiLCLvsLUiLCLZgtmJIiwi77C2Iiwi2YLZiiIsIu+wtyIsItmD2KciLCLvsLgiLCLZg9isIiwi77C5Iiwi2YPYrSIsIu+wuiIsItmD2K4iLCLvsLsiLCLZg9mEIiwi77C8Iiwi2YPZhSIsIu+wvSIsItmD2YkiLCLvsL4iLCLZg9mKIiwi77C/Iiwi2YTYrCIsIu+xgCIsItmE2K0iLCLvsYEiLCLZhNiuIiwi77GCIiwi2YTZhSIsIu+xgyIsItmE2YkiLCLvsYQiLCLZhNmKIiwi77GFIiwi2YXYrCIsIu+xhiIsItmF2K0iLCLvsYciLCLZhdiuIiwi77GIIiwi2YXZhSIsIu+xiSIsItmF2YkiLCLvsYoiLCLZhdmKIiwi77GLIiwi2YbYrCIsIu+xjCIsItmG2K0iLCLvsY0iLCLZhtiuIiwi77GOIiwi2YbZhSIsIu+xjyIsItmG2YkiLCLvsZAiLCLZhtmKIiwi77GRIiwi2YfYrCIsIu+xkiIsItmH2YUiLCLvsZMiLCLZh9mJIiwi77GUIiwi2YfZiiIsIu+xlSIsItmK2KwiLCLvsZYiLCLZititIiwi77GXIiwi2YrYriIsIu+xmCIsItmK2YUiLCLvsZkiLCLZitmJIiwi77GaIiwi2YrZiiIsIu+xmyIsItiw2bAiLCLvsZwiLCLYsdmwIiwi77GdIiwi2YnZsCIsIu+xniIsIiDZjNmRIiwi77GfIiwiINmN2ZEiLCLvsaAiLCIg2Y7ZkSIsIu+xoSIsIiDZj9mRIiwi77GiIiwiINmQ2ZEiLCLvsaMiLCIg2ZHZsCIsIu+xpCIsItim2LEiLCLvsaUiLCLYptiyIiwi77GmIiwi2KbZhSIsIu+xpyIsItim2YYiLCLvsagiLCLYptmJIiwi77GpIiwi2KbZiiIsIu+xqiIsItio2LEiLCLvsasiLCLYqNiyIiwi77GsIiwi2KjZhSIsIu+xrSIsItio2YYiLCLvsa4iLCLYqNmJIiwi77GvIiwi2KjZiiIsIu+xsCIsItiq2LEiLCLvsbEiLCLYqtiyIiwi77GyIiwi2KrZhSIsIu+xsyIsItiq2YYiLCLvsbQiLCLYqtmJIiwi77G1Iiwi2KrZiiIsIu+xtiIsItir2LEiLCLvsbciLCLYq9iyIiwi77G4Iiwi2KvZhSIsIu+xuSIsItir2YYiLCLvsboiLCLYq9mJIiwi77G7Iiwi2KvZiiIsIu+xvCIsItmB2YkiLCLvsb0iLCLZgdmKIiwi77G+Iiwi2YLZiSIsIu+xvyIsItmC2YoiLCLvsoAiLCLZg9inIiwi77KBIiwi2YPZhCIsIu+ygiIsItmD2YUiLCLvsoMiLCLZg9mJIiwi77KEIiwi2YPZiiIsIu+yhSIsItmE2YUiLCLvsoYiLCLZhNmJIiwi77KHIiwi2YTZiiIsIu+yiCIsItmF2KciLCLvsokiLCLZhdmFIiwi77KKIiwi2YbYsSIsIu+yiyIsItmG2LIiLCLvsowiLCLZhtmFIiwi77KNIiwi2YbZhiIsIu+yjiIsItmG2YkiLCLvso8iLCLZhtmKIiwi77KQIiwi2YnZsCIsIu+ykSIsItmK2LEiLCLvspIiLCLZitiyIiwi77KTIiwi2YrZhSIsIu+ylCIsItmK2YYiLCLvspUiLCLZitmJIiwi77KWIiwi2YrZiiIsIu+ylyIsItim2KwiLCLvspgiLCLYptitIiwi77KZIiwi2KbYriIsIu+ymiIsItim2YUiLCLvspsiLCLYptmHIiwi77KcIiwi2KjYrCIsIu+ynSIsItio2K0iLCLvsp4iLCLYqNiuIiwi77KfIiwi2KjZhSIsIu+yoCIsItio2YciLCLvsqEiLCLYqtisIiwi77KiIiwi2KrYrSIsIu+yoyIsItiq2K4iLCLvsqQiLCLYqtmFIiwi77KlIiwi2KrZhyIsIu+ypiIsItir2YUiLCLvsqciLCLYrNitIiwi77KoIiwi2KzZhSIsIu+yqSIsItit2KwiLCLvsqoiLCLYrdmFIiwi77KrIiwi2K7YrCIsIu+yrCIsItiu2YUiLCLvsq0iLCLYs9isIiwi77KuIiwi2LPYrSIsIu+yryIsItiz2K4iLCLvsrAiLCLYs9mFIiwi77KxIiwi2LXYrSIsIu+ysiIsIti12K4iLCLvsrMiLCLYtdmFIiwi77K0Iiwi2LbYrCIsIu+ytSIsIti22K0iLCLvsrYiLCLYttiuIiwi77K3Iiwi2LbZhSIsIu+yuCIsIti32K0iLCLvsrkiLCLYuNmFIiwi77K6Iiwi2LnYrCIsIu+yuyIsIti52YUiLCLvsrwiLCLYutisIiwi77K9Iiwi2LrZhSIsIu+yviIsItmB2KwiLCLvsr8iLCLZgditIiwi77OAIiwi2YHYriIsIu+zgSIsItmB2YUiLCLvs4IiLCLZgtitIiwi77ODIiwi2YLZhSIsIu+zhCIsItmD2KwiLCLvs4UiLCLZg9itIiwi77OGIiwi2YPYriIsIu+zhyIsItmD2YQiLCLvs4giLCLZg9mFIiwi77OJIiwi2YTYrCIsIu+ziiIsItmE2K0iLCLvs4siLCLZhNiuIiwi77OMIiwi2YTZhSIsIu+zjSIsItmE2YciLCLvs44iLCLZhdisIiwi77OPIiwi2YXYrSIsIu+zkCIsItmF2K4iLCLvs5EiLCLZhdmFIiwi77OSIiwi2YbYrCIsIu+zkyIsItmG2K0iLCLvs5QiLCLZhtiuIiwi77OVIiwi2YbZhSIsIu+zliIsItmG2YciLCLvs5ciLCLZh9isIiwi77OYIiwi2YfZhSIsIu+zmSIsItmH2bAiLCLvs5oiLCLZitisIiwi77ObIiwi2YrYrSIsIu+znCIsItmK2K4iLCLvs50iLCLZitmFIiwi77OeIiwi2YrZhyIsIu+znyIsItim2YUiLCLvs6AiLCLYptmHIiwi77OhIiwi2KjZhSIsIu+zoiIsItio2YciLCLvs6MiLCLYqtmFIiwi77OkIiwi2KrZhyIsIu+zpSIsItir2YUiLCLvs6YiLCLYq9mHIiwi77OnIiwi2LPZhSIsIu+zqCIsItiz2YciLCLvs6kiLCLYtNmFIiwi77OqIiwi2LTZhyIsIu+zqyIsItmD2YQiLCLvs6wiLCLZg9mFIiwi77OtIiwi2YTZhSIsIu+zriIsItmG2YUiLCLvs68iLCLZhtmHIiwi77OwIiwi2YrZhSIsIu+zsSIsItmK2YciLCLvs7IiLCLZgNmO2ZEiLCLvs7MiLCLZgNmP2ZEiLCLvs7QiLCLZgNmQ2ZEiLCLvs7UiLCLYt9mJIiwi77O2Iiwi2LfZiiIsIu+ztyIsIti52YkiLCLvs7giLCLYudmKIiwi77O5Iiwi2LrZiSIsIu+zuiIsIti62YoiLCLvs7siLCLYs9mJIiwi77O8Iiwi2LPZiiIsIu+zvSIsIti02YkiLCLvs74iLCLYtNmKIiwi77O/Iiwi2K3ZiSIsIu+0gCIsItit2YoiLCLvtIEiLCLYrNmJIiwi77SCIiwi2KzZiiIsIu+0gyIsItiu2YkiLCLvtIQiLCLYrtmKIiwi77SFIiwi2LXZiSIsIu+0hiIsIti12YoiLCLvtIciLCLYttmJIiwi77SIIiwi2LbZiiIsIu+0iSIsIti02KwiLCLvtIoiLCLYtNitIiwi77SLIiwi2LTYriIsIu+0jCIsIti02YUiLCLvtI0iLCLYtNixIiwi77SOIiwi2LPYsSIsIu+0jyIsIti12LEiLCLvtJAiLCLYttixIiwi77SRIiwi2LfZiSIsIu+0kiIsIti32YoiLCLvtJMiLCLYudmJIiwi77SUIiwi2LnZiiIsIu+0lSIsIti62YkiLCLvtJYiLCLYutmKIiwi77SXIiwi2LPZiSIsIu+0mCIsItiz2YoiLCLvtJkiLCLYtNmJIiwi77SaIiwi2LTZiiIsIu+0myIsItit2YkiLCLvtJwiLCLYrdmKIiwi77SdIiwi2KzZiSIsIu+0niIsItis2YoiLCLvtJ8iLCLYrtmJIiwi77SgIiwi2K7ZiiIsIu+0oSIsIti12YkiLCLvtKIiLCLYtdmKIiwi77SjIiwi2LbZiSIsIu+0pCIsIti22YoiLCLvtKUiLCLYtNisIiwi77SmIiwi2LTYrSIsIu+0pyIsIti02K4iLCLvtKgiLCLYtNmFIiwi77SpIiwi2LTYsSIsIu+0qiIsItiz2LEiLCLvtKsiLCLYtdixIiwi77SsIiwi2LbYsSIsIu+0rSIsIti02KwiLCLvtK4iLCLYtNitIiwi77SvIiwi2LTYriIsIu+0sCIsIti02YUiLCLvtLEiLCLYs9mHIiwi77SyIiwi2LTZhyIsIu+0syIsIti32YUiLCLvtLQiLCLYs9isIiwi77S1Iiwi2LPYrSIsIu+0tiIsItiz2K4iLCLvtLciLCLYtNisIiwi77S4Iiwi2LTYrSIsIu+0uSIsIti02K4iLCLvtLoiLCLYt9mFIiwi77S7Iiwi2LjZhSIsIu+0vCIsItin2YsiLCLvtL0iLCLYp9mLIiwi77WQIiwi2KrYrNmFIiwi77WRIiwi2KrYrdisIiwi77WSIiwi2KrYrdisIiwi77WTIiwi2KrYrdmFIiwi77WUIiwi2KrYrtmFIiwi77WVIiwi2KrZhdisIiwi77WWIiwi2KrZhditIiwi77WXIiwi2KrZhdiuIiwi77WYIiwi2KzZhditIiwi77WZIiwi2KzZhditIiwi77WaIiwi2K3ZhdmKIiwi77WbIiwi2K3ZhdmJIiwi77WcIiwi2LPYrdisIiwi77WdIiwi2LPYrNitIiwi77WeIiwi2LPYrNmJIiwi77WfIiwi2LPZhditIiwi77WgIiwi2LPZhditIiwi77WhIiwi2LPZhdisIiwi77WiIiwi2LPZhdmFIiwi77WjIiwi2LPZhdmFIiwi77WkIiwi2LXYrditIiwi77WlIiwi2LXYrditIiwi77WmIiwi2LXZhdmFIiwi77WnIiwi2LTYrdmFIiwi77WoIiwi2LTYrdmFIiwi77WpIiwi2LTYrNmKIiwi77WqIiwi2LTZhdiuIiwi77WrIiwi2LTZhdiuIiwi77WsIiwi2LTZhdmFIiwi77WtIiwi2LTZhdmFIiwi77WuIiwi2LbYrdmJIiwi77WvIiwi2LbYrtmFIiwi77WwIiwi2LbYrtmFIiwi77WxIiwi2LfZhditIiwi77WyIiwi2LfZhditIiwi77WzIiwi2LfZhdmFIiwi77W0Iiwi2LfZhdmKIiwi77W1Iiwi2LnYrNmFIiwi77W2Iiwi2LnZhdmFIiwi77W3Iiwi2LnZhdmFIiwi77W4Iiwi2LnZhdmJIiwi77W5Iiwi2LrZhdmFIiwi77W6Iiwi2LrZhdmKIiwi77W7Iiwi2LrZhdmJIiwi77W8Iiwi2YHYrtmFIiwi77W9Iiwi2YHYrtmFIiwi77W+Iiwi2YLZhditIiwi77W/Iiwi2YLZhdmFIiwi77aAIiwi2YTYrdmFIiwi77aBIiwi2YTYrdmKIiwi77aCIiwi2YTYrdmJIiwi77aDIiwi2YTYrNisIiwi77aEIiwi2YTYrNisIiwi77aFIiwi2YTYrtmFIiwi77aGIiwi2YTYrtmFIiwi77aHIiwi2YTZhditIiwi77aIIiwi2YTZhditIiwi77aJIiwi2YXYrdisIiwi77aKIiwi2YXYrdmFIiwi77aLIiwi2YXYrdmKIiwi77aMIiwi2YXYrNitIiwi77aNIiwi2YXYrNmFIiwi77aOIiwi2YXYrtisIiwi77aPIiwi2YXYrtmFIiwi77aSIiwi2YXYrNiuIiwi77aTIiwi2YfZhdisIiwi77aUIiwi2YfZhdmFIiwi77aVIiwi2YbYrdmFIiwi77aWIiwi2YbYrdmJIiwi77aXIiwi2YbYrNmFIiwi77aYIiwi2YbYrNmFIiwi77aZIiwi2YbYrNmJIiwi77aaIiwi2YbZhdmKIiwi77abIiwi2YbZhdmJIiwi77acIiwi2YrZhdmFIiwi77adIiwi2YrZhdmFIiwi77aeIiwi2KjYrtmKIiwi77afIiwi2KrYrNmKIiwi77agIiwi2KrYrNmJIiwi77ahIiwi2KrYrtmKIiwi77aiIiwi2KrYrtmJIiwi77ajIiwi2KrZhdmKIiwi77akIiwi2KrZhdmJIiwi77alIiwi2KzZhdmKIiwi77amIiwi2KzYrdmJIiwi77anIiwi2KzZhdmJIiwi77aoIiwi2LPYrtmJIiwi77apIiwi2LXYrdmKIiwi77aqIiwi2LTYrdmKIiwi77arIiwi2LbYrdmKIiwi77asIiwi2YTYrNmKIiwi77atIiwi2YTZhdmKIiwi77auIiwi2YrYrdmKIiwi77avIiwi2YrYrNmKIiwi77awIiwi2YrZhdmKIiwi77axIiwi2YXZhdmKIiwi77ayIiwi2YLZhdmKIiwi77azIiwi2YbYrdmKIiwi77a0Iiwi2YLZhditIiwi77a1Iiwi2YTYrdmFIiwi77a2Iiwi2LnZhdmKIiwi77a3Iiwi2YPZhdmKIiwi77a4Iiwi2YbYrNitIiwi77a5Iiwi2YXYrtmKIiwi77a6Iiwi2YTYrNmFIiwi77a7Iiwi2YPZhdmFIiwi77a8Iiwi2YTYrNmFIiwi77a9Iiwi2YbYrNitIiwi77a+Iiwi2KzYrdmKIiwi77a/Iiwi2K3YrNmKIiwi77eAIiwi2YXYrNmKIiwi77eBIiwi2YHZhdmKIiwi77eCIiwi2KjYrdmKIiwi77eDIiwi2YPZhdmFIiwi77eEIiwi2LnYrNmFIiwi77eFIiwi2LXZhdmFIiwi77eGIiwi2LPYrtmKIiwi77eHIiwi2YbYrNmKIiwi77mJIiwi4oC+Iiwi77mKIiwi4oC+Iiwi77mLIiwi4oC+Iiwi77mMIiwi4oC+Iiwi77mNIiwiXyIsIu+5jiIsIl8iLCLvuY8iLCJfIiwi77qAIiwi2KEiLCLvuoEiLCLYoiIsIu+6giIsItiiIiwi77qDIiwi2KMiLCLvuoQiLCLYoyIsIu+6hSIsItikIiwi77qGIiwi2KQiLCLvuociLCLYpSIsIu+6iCIsItilIiwi77qJIiwi2KYiLCLvuooiLCLYpiIsIu+6iyIsItimIiwi77qMIiwi2KYiLCLvuo0iLCLYpyIsIu+6jiIsItinIiwi77qPIiwi2KgiLCLvupAiLCLYqCIsIu+6kSIsItioIiwi77qSIiwi2KgiLCLvupMiLCLYqSIsIu+6lCIsItipIiwi77qVIiwi2KoiLCLvupYiLCLYqiIsIu+6lyIsItiqIiwi77qYIiwi2KoiLCLvupkiLCLYqyIsIu+6miIsItirIiwi77qbIiwi2KsiLCLvupwiLCLYqyIsIu+6nSIsItisIiwi77qeIiwi2KwiLCLvup8iLCLYrCIsIu+6oCIsItisIiwi77qhIiwi2K0iLCLvuqIiLCLYrSIsIu+6oyIsItitIiwi77qkIiwi2K0iLCLvuqUiLCLYriIsIu+6piIsItiuIiwi77qnIiwi2K4iLCLvuqgiLCLYriIsIu+6qSIsItivIiwi77qqIiwi2K8iLCLvuqsiLCLYsCIsIu+6rCIsItiwIiwi77qtIiwi2LEiLCLvuq4iLCLYsSIsIu+6ryIsItiyIiwi77qwIiwi2LIiLCLvurEiLCLYsyIsIu+6siIsItizIiwi77qzIiwi2LMiLCLvurQiLCLYsyIsIu+6tSIsIti0Iiwi77q2Iiwi2LQiLCLvurciLCLYtCIsIu+6uCIsIti0Iiwi77q5Iiwi2LUiLCLvuroiLCLYtSIsIu+6uyIsIti1Iiwi77q8Iiwi2LUiLCLvur0iLCLYtiIsIu+6viIsIti2Iiwi77q/Iiwi2LYiLCLvu4AiLCLYtiIsIu+7gSIsIti3Iiwi77uCIiwi2LciLCLvu4MiLCLYtyIsIu+7hCIsIti3Iiwi77uFIiwi2LgiLCLvu4YiLCLYuCIsIu+7hyIsIti4Iiwi77uIIiwi2LgiLCLvu4kiLCLYuSIsIu+7iiIsIti5Iiwi77uLIiwi2LkiLCLvu4wiLCLYuSIsIu+7jSIsIti6Iiwi77uOIiwi2LoiLCLvu48iLCLYuiIsIu+7kCIsIti6Iiwi77uRIiwi2YEiLCLvu5IiLCLZgSIsIu+7kyIsItmBIiwi77uUIiwi2YEiLCLvu5UiLCLZgiIsIu+7liIsItmCIiwi77uXIiwi2YIiLCLvu5giLCLZgiIsIu+7mSIsItmDIiwi77uaIiwi2YMiLCLvu5siLCLZgyIsIu+7nCIsItmDIiwi77udIiwi2YQiLCLvu54iLCLZhCIsIu+7nyIsItmEIiwi77ugIiwi2YQiLCLvu6EiLCLZhSIsIu+7oiIsItmFIiwi77ujIiwi2YUiLCLvu6QiLCLZhSIsIu+7pSIsItmGIiwi77umIiwi2YYiLCLvu6ciLCLZhiIsIu+7qCIsItmGIiwi77upIiwi2YciLCLvu6oiLCLZhyIsIu+7qyIsItmHIiwi77usIiwi2YciLCLvu60iLCLZiCIsIu+7riIsItmIIiwi77uvIiwi2YkiLCLvu7AiLCLZiSIsIu+7sSIsItmKIiwi77uyIiwi2YoiLCLvu7MiLCLZiiIsIu+7tCIsItmKIiwi77u1Iiwi2YTYoiIsIu+7tiIsItmE2KIiLCLvu7ciLCLZhNijIiwi77u4Iiwi2YTYoyIsIu+7uSIsItmE2KUiLCLvu7oiLCLZhNilIiwi77u7Iiwi2YTYpyIsIu+7vCIsItmE2KciXX0pKTtmdW5jdGlvbiBsKGUpe2NvbnN0IHQ9ZS5sZW5ndGg7aWYodDw9MXx8IWZ1bmN0aW9uKGUpe2xldCB0PXNbMTNdO3JldHVybiBlPj10LmJlZ2luJiZlPHQuZW5kfHwodD1zWzExXSxlPj10LmJlZ2luJiZlPHQuZW5kKX0oZS5jaGFyQ29kZUF0KDApKSlyZXR1cm4gZTtjb25zdCByPVtdO2ZvcihsZXQgbj10LTE7bj49MDtuLS0pci5wdXNoKGVbbl0pO3JldHVybiByLmpvaW4oIiIpfWNvbnN0IGY9bmV3IFJlZ0V4cCgiXihcXHMpfChcXHB7TW59KXwoXFxwe0NmfSkkIiwidSIpLGg9bmV3IE1hcDtmdW5jdGlvbiBkKGUpe2NvbnN0IHQ9aC5nZXQoZSk7aWYodClyZXR1cm4gdDtjb25zdCByPWUubWF0Y2goZiksbj17aXNXaGl0ZXNwYWNlOiEoIXJ8fCFyWzFdKSxpc1plcm9XaWR0aERpYWNyaXRpYzohKCFyfHwhclsyXSksaXNJbnZpc2libGVGb3JtYXRNYXJrOiEoIXJ8fCFyWzNdKX07cmV0dXJuIGguc2V0KGUsbiksbn1mdW5jdGlvbiBwKCl7aC5jbGVhcigpfX0sKGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LmdldFNlcmlmRm9udHM9dC5nZXROb25TdGRGb250TWFwPXQuZ2V0R2x5cGhNYXBGb3JTdGFuZGFyZEZvbnRzPXQuZ2V0Rm9udE5hbWVUb0ZpbGVNYXA9dm9pZCAwLHQuZ2V0U3RhbmRhcmRGb250TmFtZT1mdW5jdGlvbihlKXt2YXIgdD0oMCxhLm5vcm1hbGl6ZUZvbnROYW1lKShlKTtyZXR1cm4gaSgpW3RdfSx0LmdldFN5bWJvbHNGb250cz10LmdldFN1cHBsZW1lbnRhbEdseXBoTWFwRm9yQ2FsaWJyaT10LmdldFN1cHBsZW1lbnRhbEdseXBoTWFwRm9yQXJpYWxCbGFjaz10LmdldFN0ZEZvbnRNYXA9dm9pZCAwO3ZhciBuPXIoMTM1KSxhPXIoMTY3KSxpPSgwLG4uZ2V0TG9va3VwVGFibGVGYWN0b3J5KSgoZnVuY3Rpb24oZSl7ZVsiVGltZXMtUm9tYW4iXT0iVGltZXMtUm9tYW4iLGUuSGVsdmV0aWNhPSJIZWx2ZXRpY2EiLGUuQ291cmllcj0iQ291cmllciIsZS5TeW1ib2w9IlN5bWJvbCIsZVsiVGltZXMtQm9sZCJdPSJUaW1lcy1Cb2xkIixlWyJIZWx2ZXRpY2EtQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCIsZVsiQ291cmllci1Cb2xkIl09IkNvdXJpZXItQm9sZCIsZS5aYXBmRGluZ2JhdHM9IlphcGZEaW5nYmF0cyIsZVsiVGltZXMtSXRhbGljIl09IlRpbWVzLUl0YWxpYyIsZVsiSGVsdmV0aWNhLU9ibGlxdWUiXT0iSGVsdmV0aWNhLU9ibGlxdWUiLGVbIkNvdXJpZXItT2JsaXF1ZSJdPSJDb3VyaWVyLU9ibGlxdWUiLGVbIlRpbWVzLUJvbGRJdGFsaWMiXT0iVGltZXMtQm9sZEl0YWxpYyIsZVsiSGVsdmV0aWNhLUJvbGRPYmxpcXVlIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSIsZVsiQ291cmllci1Cb2xkT2JsaXF1ZSJdPSJDb3VyaWVyLUJvbGRPYmxpcXVlIixlLkFyaWFsTmFycm93PSJIZWx2ZXRpY2EiLGVbIkFyaWFsTmFycm93LUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiLGVbIkFyaWFsTmFycm93LUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIixlWyJBcmlhbE5hcnJvdy1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiLGUuQXJpYWxCbGFjaz0iSGVsdmV0aWNhIixlWyJBcmlhbEJsYWNrLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiLGVbIkFyaWFsQmxhY2stQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiLGVbIkFyaWFsQmxhY2stSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIixlWyJBcmlhbC1CbGFjayJdPSJIZWx2ZXRpY2EiLGVbIkFyaWFsLUJsYWNrLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiLGVbIkFyaWFsLUJsYWNrLUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIixlWyJBcmlhbC1CbGFjay1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiLGUuQXJpYWw9IkhlbHZldGljYSIsZVsiQXJpYWwtQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCIsZVsiQXJpYWwtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiLGVbIkFyaWFsLUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSIsZS5BcmlhbE1UPSJIZWx2ZXRpY2EiLGVbIkFyaWFsLUJvbGRJdGFsaWNNVCJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiLGVbIkFyaWFsLUJvbGRNVCJdPSJIZWx2ZXRpY2EtQm9sZCIsZVsiQXJpYWwtSXRhbGljTVQiXT0iSGVsdmV0aWNhLU9ibGlxdWUiLGUuQXJpYWxVbmljb2RlTVM9IkhlbHZldGljYSIsZVsiQXJpYWxVbmljb2RlTVMtQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCIsZVsiQXJpYWxVbmljb2RlTVMtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiLGVbIkFyaWFsVW5pY29kZU1TLUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSIsZVsiQ291cmllci1Cb2xkSXRhbGljIl09IkNvdXJpZXItQm9sZE9ibGlxdWUiLGVbIkNvdXJpZXItSXRhbGljIl09IkNvdXJpZXItT2JsaXF1ZSIsZS5Db3VyaWVyTmV3PSJDb3VyaWVyIixlWyJDb3VyaWVyTmV3LUJvbGQiXT0iQ291cmllci1Cb2xkIixlWyJDb3VyaWVyTmV3LUJvbGRJdGFsaWMiXT0iQ291cmllci1Cb2xkT2JsaXF1ZSIsZVsiQ291cmllck5ldy1JdGFsaWMiXT0iQ291cmllci1PYmxpcXVlIixlWyJDb3VyaWVyTmV3UFMtQm9sZEl0YWxpY01UIl09IkNvdXJpZXItQm9sZE9ibGlxdWUiLGVbIkNvdXJpZXJOZXdQUy1Cb2xkTVQiXT0iQ291cmllci1Cb2xkIixlWyJDb3VyaWVyTmV3UFMtSXRhbGljTVQiXT0iQ291cmllci1PYmxpcXVlIixlLkNvdXJpZXJOZXdQU01UPSJDb3VyaWVyIixlWyJIZWx2ZXRpY2EtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiLGVbIkhlbHZldGljYS1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiLGVbIlN5bWJvbC1Cb2xkIl09IlN5bWJvbCIsZVsiU3ltYm9sLUJvbGRJdGFsaWMiXT0iU3ltYm9sIixlWyJTeW1ib2wtSXRhbGljIl09IlN5bWJvbCIsZS5UaW1lc05ld1JvbWFuPSJUaW1lcy1Sb21hbiIsZVsiVGltZXNOZXdSb21hbi1Cb2xkIl09IlRpbWVzLUJvbGQiLGVbIlRpbWVzTmV3Um9tYW4tQm9sZEl0YWxpYyJdPSJUaW1lcy1Cb2xkSXRhbGljIixlWyJUaW1lc05ld1JvbWFuLUl0YWxpYyJdPSJUaW1lcy1JdGFsaWMiLGUuVGltZXNOZXdSb21hblBTPSJUaW1lcy1Sb21hbiIsZVsiVGltZXNOZXdSb21hblBTLUJvbGQiXT0iVGltZXMtQm9sZCIsZVsiVGltZXNOZXdSb21hblBTLUJvbGRJdGFsaWMiXT0iVGltZXMtQm9sZEl0YWxpYyIsZVsiVGltZXNOZXdSb21hblBTLUJvbGRJdGFsaWNNVCJdPSJUaW1lcy1Cb2xkSXRhbGljIixlWyJUaW1lc05ld1JvbWFuUFMtQm9sZE1UIl09IlRpbWVzLUJvbGQiLGVbIlRpbWVzTmV3Um9tYW5QUy1JdGFsaWMiXT0iVGltZXMtSXRhbGljIixlWyJUaW1lc05ld1JvbWFuUFMtSXRhbGljTVQiXT0iVGltZXMtSXRhbGljIixlLlRpbWVzTmV3Um9tYW5QU01UPSJUaW1lcy1Sb21hbiIsZVsiVGltZXNOZXdSb21hblBTTVQtQm9sZCJdPSJUaW1lcy1Cb2xkIixlWyJUaW1lc05ld1JvbWFuUFNNVC1Cb2xkSXRhbGljIl09IlRpbWVzLUJvbGRJdGFsaWMiLGVbIlRpbWVzTmV3Um9tYW5QU01ULUl0YWxpYyJdPSJUaW1lcy1JdGFsaWMifSkpO3QuZ2V0U3RkRm9udE1hcD1pO3ZhciBvPSgwLG4uZ2V0TG9va3VwVGFibGVGYWN0b3J5KSgoZnVuY3Rpb24oZSl7ZS5Db3VyaWVyPSJGb3hpdEZpeGVkLnBmYiIsZVsiQ291cmllci1Cb2xkIl09IkZveGl0Rml4ZWRCb2xkLnBmYiIsZVsiQ291cmllci1Cb2xkT2JsaXF1ZSJdPSJGb3hpdEZpeGVkQm9sZEl0YWxpYy5wZmIiLGVbIkNvdXJpZXItT2JsaXF1ZSJdPSJGb3hpdEZpeGVkSXRhbGljLnBmYiIsZS5IZWx2ZXRpY2E9IkZveGl0U2Fucy5wZmIiLGVbIkhlbHZldGljYS1Cb2xkIl09IkZveGl0U2Fuc0JvbGQucGZiIixlWyJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiXT0iRm94aXRTYW5zQm9sZEl0YWxpYy5wZmIiLGVbIkhlbHZldGljYS1PYmxpcXVlIl09IkZveGl0U2Fuc0l0YWxpYy5wZmIiLGVbIlRpbWVzLVJvbWFuIl09IkZveGl0U2VyaWYucGZiIixlWyJUaW1lcy1Cb2xkIl09IkZveGl0U2VyaWZCb2xkLnBmYiIsZVsiVGltZXMtQm9sZEl0YWxpYyJdPSJGb3hpdFNlcmlmQm9sZEl0YWxpYy5wZmIiLGVbIlRpbWVzLUl0YWxpYyJdPSJGb3hpdFNlcmlmSXRhbGljLnBmYiIsZS5TeW1ib2w9IkZveGl0U3ltYm9sLnBmYiIsZS5aYXBmRGluZ2JhdHM9IkZveGl0RGluZ2JhdHMucGZiIixlWyJMaWJlcmF0aW9uU2Fucy1SZWd1bGFyIl09IkxpYmVyYXRpb25TYW5zLVJlZ3VsYXIudHRmIixlWyJMaWJlcmF0aW9uU2Fucy1Cb2xkIl09IkxpYmVyYXRpb25TYW5zLUJvbGQudHRmIixlWyJMaWJlcmF0aW9uU2Fucy1JdGFsaWMiXT0iTGliZXJhdGlvblNhbnMtSXRhbGljLnR0ZiIsZVsiTGliZXJhdGlvblNhbnMtQm9sZEl0YWxpYyJdPSJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljLnR0ZiJ9KSk7dC5nZXRGb250TmFtZVRvRmlsZU1hcD1vO3ZhciBzPSgwLG4uZ2V0TG9va3VwVGFibGVGYWN0b3J5KSgoZnVuY3Rpb24oZSl7ZS5DYWxpYnJpPSJIZWx2ZXRpY2EiLGVbIkNhbGlicmktQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCIsZVsiQ2FsaWJyaS1Cb2xkSXRhbGljIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSIsZVsiQ2FsaWJyaS1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiLGUuQ2VudHVyeUdvdGhpYz0iSGVsdmV0aWNhIixlWyJDZW50dXJ5R290aGljLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiLGVbIkNlbnR1cnlHb3RoaWMtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiLGVbIkNlbnR1cnlHb3RoaWMtSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIixlLkNvbWljU2Fuc01TPSJDb21pYyBTYW5zIE1TIixlWyJDb21pY1NhbnNNUy1Cb2xkIl09IkNvbWljIFNhbnMgTVMtQm9sZCIsZVsiQ29taWNTYW5zTVMtQm9sZEl0YWxpYyJdPSJDb21pYyBTYW5zIE1TLUJvbGRJdGFsaWMiLGVbIkNvbWljU2Fuc01TLUl0YWxpYyJdPSJDb21pYyBTYW5zIE1TLUl0YWxpYyIsZVsiSXRjU3ltYm9sLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiLGVbIkl0Y1N5bWJvbC1Cb2xkSXRhbGljIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSIsZVsiSXRjU3ltYm9sLUJvb2siXT0iSGVsdmV0aWNhIixlWyJJdGNTeW1ib2wtQm9va0l0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSIsZVsiSXRjU3ltYm9sLU1lZGl1bSJdPSJIZWx2ZXRpY2EiLGVbIkl0Y1N5bWJvbC1NZWRpdW1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiLGUuTHVjaWRhQ29uc29sZT0iQ291cmllciIsZVsiTHVjaWRhQ29uc29sZS1Cb2xkIl09IkNvdXJpZXItQm9sZCIsZVsiTHVjaWRhQ29uc29sZS1Cb2xkSXRhbGljIl09IkNvdXJpZXItQm9sZE9ibGlxdWUiLGVbIkx1Y2lkYUNvbnNvbGUtSXRhbGljIl09IkNvdXJpZXItT2JsaXF1ZSIsZVsiTHVjaWRhU2Fucy1EZW1pIl09IkhlbHZldGljYS1Cb2xkIixlWyJNUy1Hb3RoaWMiXT0iTVMgR290aGljIixlWyJNUy1Hb3RoaWMtQm9sZCJdPSJNUyBHb3RoaWMtQm9sZCIsZVsiTVMtR290aGljLUJvbGRJdGFsaWMiXT0iTVMgR290aGljLUJvbGRJdGFsaWMiLGVbIk1TLUdvdGhpYy1JdGFsaWMiXT0iTVMgR290aGljLUl0YWxpYyIsZVsiTVMtTWluY2hvIl09Ik1TIE1pbmNobyIsZVsiTVMtTWluY2hvLUJvbGQiXT0iTVMgTWluY2hvLUJvbGQiLGVbIk1TLU1pbmNoby1Cb2xkSXRhbGljIl09Ik1TIE1pbmNoby1Cb2xkSXRhbGljIixlWyJNUy1NaW5jaG8tSXRhbGljIl09Ik1TIE1pbmNoby1JdGFsaWMiLGVbIk1TLVBHb3RoaWMiXT0iTVMgUEdvdGhpYyIsZVsiTVMtUEdvdGhpYy1Cb2xkIl09Ik1TIFBHb3RoaWMtQm9sZCIsZVsiTVMtUEdvdGhpYy1Cb2xkSXRhbGljIl09Ik1TIFBHb3RoaWMtQm9sZEl0YWxpYyIsZVsiTVMtUEdvdGhpYy1JdGFsaWMiXT0iTVMgUEdvdGhpYy1JdGFsaWMiLGVbIk1TLVBNaW5jaG8iXT0iTVMgUE1pbmNobyIsZVsiTVMtUE1pbmNoby1Cb2xkIl09Ik1TIFBNaW5jaG8tQm9sZCIsZVsiTVMtUE1pbmNoby1Cb2xkSXRhbGljIl09Ik1TIFBNaW5jaG8tQm9sZEl0YWxpYyIsZVsiTVMtUE1pbmNoby1JdGFsaWMiXT0iTVMgUE1pbmNoby1JdGFsaWMiLGUuTnVwdGlhbFNjcmlwdD0iVGltZXMtSXRhbGljIixlLlNlZ29lVUlTeW1ib2w9IkhlbHZldGljYSIsZS5XaW5nZGluZ3M9IlphcGZEaW5nYmF0cyIsZVsiV2luZ2RpbmdzLVJlZ3VsYXIiXT0iWmFwZkRpbmdiYXRzIn0pKTt0LmdldE5vblN0ZEZvbnRNYXA9czt2YXIgYz0oMCxuLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2VbIkFkb2JlIEplbnNvbiJdPSEwLGVbIkFkb2JlIFRleHQiXT0hMCxlLkFsYmVydHVzPSEwLGUuQWxkdXM9ITAsZS5BbGV4YW5kcmlhPSEwLGUuQWxnZXJpYW49ITAsZVsiQW1lcmljYW4gVHlwZXdyaXRlciJdPSEwLGUuQW50aXF1YT0hMCxlLkFwZXg9ITAsZS5Bcm5vPSEwLGUuQXN0ZXI9ITAsZS5BdXJvcmE9ITAsZS5CYXNrZXJ2aWxsZT0hMCxlLkJlbGw9ITAsZS5CZW1ibz0hMCxlWyJCZW1ibyBTY2hvb2xib29rIl09ITAsZS5CZW5ndWlhdD0hMCxlWyJCZXJrZWxleSBPbGQgU3R5bGUiXT0hMCxlWyJCZXJuaGFyZCBNb2Rlcm4iXT0hMCxlWyJCZXJ0aG9sZCBDaXR5Il09ITAsZS5Cb2Rvbmk9ITAsZVsiQmF1ZXIgQm9kb25pIl09ITAsZVsiQm9vayBBbnRpcXVhIl09ITAsZS5Cb29rbWFuPSEwLGVbIkJvcmRlYXV4IFJvbWFuIl09ITAsZVsiQ2FsaWZvcm5pYW4gRkIiXT0hMCxlLkNhbGlzdG89ITAsZS5DYWx2ZXJ0PSEwLGUuQ2FwaXRhbHM9ITAsZS5DYW1icmlhPSEwLGUuQ2FydGllcj0hMCxlLkNhc2xvbj0hMCxlLkNhdHVsbD0hMCxlLkNlbnRhdXI9ITAsZVsiQ2VudHVyeSBPbGQgU3R5bGUiXT0hMCxlWyJDZW50dXJ5IFNjaG9vbGJvb2siXT0hMCxlLkNoYXBhcnJhbD0hMCxlWyJDaGFyaXMgU0lMIl09ITAsZS5DaGVsdGVuaGFtPSEwLGVbIkNob2xsYSBTbGFiIl09ITAsZS5DbGFyZW5kb249ITAsZS5DbGVhcmZhY2U9ITAsZS5Db2NoaW49ITAsZS5Db2xvbm5hPSEwLGVbIkNvbXB1dGVyIE1vZGVybiJdPSEwLGVbIkNvbmNyZXRlIFJvbWFuIl09ITAsZS5Db25zdGFudGlhPSEwLGVbIkNvb3BlciBCbGFjayJdPSEwLGUuQ29yb25hPSEwLGUuRWNvdHlwZT0hMCxlLkVneXB0aWVubmU9ITAsZS5FbGVwaGFudD0hMCxlLkV4Y2Vsc2lvcj0hMCxlLkZhaXJmaWVsZD0hMCxlWyJGRiBTY2FsYSJdPSEwLGUuRm9sa2FyZD0hMCxlLkZvb3RsaWdodD0hMCxlLkZyZWVTZXJpZj0hMCxlWyJGcml6IFF1YWRyYXRhIl09ITAsZS5HYXJhbW9uZD0hMCxlLkdlbnRpdW09ITAsZS5HZW9yZ2lhPSEwLGUuR2xvdWNlc3Rlcj0hMCxlWyJHb3VkeSBPbGQgU3R5bGUiXT0hMCxlWyJHb3VkeSBTY2hvb2xib29rIl09ITAsZVsiR291ZHkgUHJvIEZvbnQiXT0hMCxlLkdyYW5qb249ITAsZVsiR3VhcmRpYW4gRWd5cHRpYW4iXT0hMCxlLkhlYXRoZXI9ITAsZS5IZXJjdWxlcz0hMCxlWyJIaWdoIFRvd2VyIFRleHQiXT0hMCxlLkhpcm9zaGlnZT0hMCxlWyJIb2VmbGVyIFRleHQiXT0hMCxlWyJIdW1hbmEgU2VyaWYiXT0hMCxlLkltcHJpbnQ9ITAsZVsiSW9uaWMgTm8uIDUiXT0hMCxlLkphbnNvbj0hMCxlLkpvYW5uYT0hMCxlLktvcmlubmE9ITAsZS5MZXhpY29uPSEwLGUuTGliZXJhdGlvblNlcmlmPSEwLGVbIkxpYmVyYXRpb24gU2VyaWYiXT0hMCxlWyJMaW51eCBMaWJlcnRpbmUiXT0hMCxlLkxpdGVyYXR1cm5heWE9ITAsZS5MdWNpZGE9ITAsZVsiTHVjaWRhIEJyaWdodCJdPSEwLGUuTWVsaW9yPSEwLGUuTWVtcGhpcz0hMCxlLk1pbGxlcj0hMCxlLk1pbmlvbj0hMCxlLk1vZGVybj0hMCxlWyJNb25hIExpc2EiXT0hMCxlWyJNcnMgRWF2ZXMiXT0hMCxlWyJNUyBTZXJpZiJdPSEwLGVbIk11c2VvIFNsYWIiXT0hMCxlWyJOZXcgWW9yayJdPSEwLGVbIk5pbWJ1cyBSb21hbiJdPSEwLGVbIk5QUyBSYXdsaW5zb24gUm9hZHdheSJdPSEwLGUuTnVwdGlhbFNjcmlwdD0hMCxlLlBhbGF0aW5vPSEwLGUuUGVycGV0dWE9ITAsZS5QbGFudGluPSEwLGVbIlBsYW50aW4gU2Nob29sYm9vayJdPSEwLGUuUGxheWJpbGw9ITAsZVsiUG9vciBSaWNoYXJkIl09ITAsZVsiUmF3bGluc29uIFJvYWR3YXkiXT0hMCxlLlJlbmF1bHQ9ITAsZS5SZXF1aWVtPSEwLGUuUm9ja3dlbGw9ITAsZS5Sb21hbj0hMCxlWyJSb3RpcyBTZXJpZiJdPSEwLGUuU2Fib249ITAsZS5TY2FsYT0hMCxlLlNlYWd1bGw9ITAsZS5TaXN0aW5hPSEwLGUuU291dmVuaXI9ITAsZS5TVElYPSEwLGVbIlN0b25lIEluZm9ybWFsIl09ITAsZVsiU3RvbmUgU2VyaWYiXT0hMCxlLlN5bGZhZW49ITAsZS5UaW1lcz0hMCxlLlRyYWphbj0hMCxlWyJUcmluaXTDqSJdPSEwLGVbIlRydW1wIE1lZGlhZXZhbCJdPSEwLGUuVXRvcGlhPSEwLGVbIlZhbGUgVHlwZSJdPSEwLGVbIkJpdHN0cmVhbSBWZXJhIl09ITAsZVsiVmVyYSBTZXJpZiJdPSEwLGUuVmVyc2FpbGxlcz0hMCxlLldhbnRlZD0hMCxlLldlaXNzPSEwLGVbIldpZGUgTGF0aW4iXT0hMCxlLldpbmRzb3I9ITAsZS5YSVRTPSEwfSkpO3QuZ2V0U2VyaWZGb250cz1jO3ZhciB1PSgwLG4uZ2V0TG9va3VwVGFibGVGYWN0b3J5KSgoZnVuY3Rpb24oZSl7ZS5EaW5nYmF0cz0hMCxlLlN5bWJvbD0hMCxlLlphcGZEaW5nYmF0cz0hMH0pKTt0LmdldFN5bWJvbHNGb250cz11O3ZhciBsPSgwLG4uZ2V0TG9va3VwVGFibGVGYWN0b3J5KSgoZnVuY3Rpb24oZSl7ZVsyXT0xMCxlWzNdPTMyLGVbNF09MzMsZVs1XT0zNCxlWzZdPTM1LGVbN109MzYsZVs4XT0zNyxlWzldPTM4LGVbMTBdPTM5LGVbMTFdPTQwLGVbMTJdPTQxLGVbMTNdPTQyLGVbMTRdPTQzLGVbMTVdPTQ0LGVbMTZdPTQ1LGVbMTddPTQ2LGVbMThdPTQ3LGVbMTldPTQ4LGVbMjBdPTQ5LGVbMjFdPTUwLGVbMjJdPTUxLGVbMjNdPTUyLGVbMjRdPTUzLGVbMjVdPTU0LGVbMjZdPTU1LGVbMjddPTU2LGVbMjhdPTU3LGVbMjldPTU4LGVbMzBdPTg5NCxlWzMxXT02MCxlWzMyXT02MSxlWzMzXT02MixlWzM0XT02MyxlWzM1XT02NCxlWzM2XT02NSxlWzM3XT02NixlWzM4XT02NyxlWzM5XT02OCxlWzQwXT02OSxlWzQxXT03MCxlWzQyXT03MSxlWzQzXT03MixlWzQ0XT03MyxlWzQ1XT03NCxlWzQ2XT03NSxlWzQ3XT03NixlWzQ4XT03NyxlWzQ5XT03OCxlWzUwXT03OSxlWzUxXT04MCxlWzUyXT04MSxlWzUzXT04MixlWzU0XT04MyxlWzU1XT04NCxlWzU2XT04NSxlWzU3XT04NixlWzU4XT04NyxlWzU5XT04OCxlWzYwXT04OSxlWzYxXT05MCxlWzYyXT05MSxlWzYzXT05MixlWzY0XT05MyxlWzY1XT05NCxlWzY2XT05NSxlWzY3XT05NixlWzY4XT05NyxlWzY5XT05OCxlWzcwXT05OSxlWzcxXT0xMDAsZVs3Ml09MTAxLGVbNzNdPTEwMixlWzc0XT0xMDMsZVs3NV09MTA0LGVbNzZdPTEwNSxlWzc3XT0xMDYsZVs3OF09MTA3LGVbNzldPTEwOCxlWzgwXT0xMDksZVs4MV09MTEwLGVbODJdPTExMSxlWzgzXT0xMTIsZVs4NF09MTEzLGVbODVdPTExNCxlWzg2XT0xMTUsZVs4N109MTE2LGVbODhdPTExNyxlWzg5XT0xMTgsZVs5MF09MTE5LGVbOTFdPTEyMCxlWzkyXT0xMjEsZVs5M109MTIyLGVbOTRdPTEyMyxlWzk1XT0xMjQsZVs5Nl09MTI1LGVbOTddPTEyNixlWzk4XT0xOTYsZVs5OV09MTk3LGVbMTAwXT0xOTksZVsxMDFdPTIwMSxlWzEwMl09MjA5LGVbMTAzXT0yMTQsZVsxMDRdPTIyMCxlWzEwNV09MjI1LGVbMTA2XT0yMjQsZVsxMDddPTIyNixlWzEwOF09MjI4LGVbMTA5XT0yMjcsZVsxMTBdPTIyOSxlWzExMV09MjMxLGVbMTEyXT0yMzMsZVsxMTNdPTIzMixlWzExNF09MjM0LGVbMTE1XT0yMzUsZVsxMTZdPTIzNyxlWzExN109MjM2LGVbMTE4XT0yMzgsZVsxMTldPTIzOSxlWzEyMF09MjQxLGVbMTIxXT0yNDMsZVsxMjJdPTI0MixlWzEyM109MjQ0LGVbMTI0XT0yNDYsZVsxMjVdPTI0NSxlWzEyNl09MjUwLGVbMTI3XT0yNDksZVsxMjhdPTI1MSxlWzEyOV09MjUyLGVbMTMwXT04MjI0LGVbMTMxXT0xNzYsZVsxMzJdPTE2MixlWzEzM109MTYzLGVbMTM0XT0xNjcsZVsxMzVdPTgyMjYsZVsxMzZdPTE4MixlWzEzN109MjIzLGVbMTM4XT0xNzQsZVsxMzldPTE2OSxlWzE0MF09ODQ4MixlWzE0MV09MTgwLGVbMTQyXT0xNjgsZVsxNDNdPTg4MDAsZVsxNDRdPTE5OCxlWzE0NV09MjE2LGVbMTQ2XT04NzM0LGVbMTQ3XT0xNzcsZVsxNDhdPTg4MDQsZVsxNDldPTg4MDUsZVsxNTBdPTE2NSxlWzE1MV09MTgxLGVbMTUyXT04NzA2LGVbMTUzXT04NzIxLGVbMTU0XT04NzE5LGVbMTU2XT04NzQ3LGVbMTU3XT0xNzAsZVsxNThdPTE4NixlWzE1OV09ODQ4NixlWzE2MF09MjMwLGVbMTYxXT0yNDgsZVsxNjJdPTE5MSxlWzE2M109MTYxLGVbMTY0XT0xNzIsZVsxNjVdPTg3MzAsZVsxNjZdPTQwMixlWzE2N109ODc3NixlWzE2OF09ODcxMCxlWzE2OV09MTcxLGVbMTcwXT0xODcsZVsxNzFdPTgyMzAsZVsxNzldPTgyMjAsZVsxODBdPTgyMjEsZVsxODFdPTgyMTYsZVsxODJdPTgyMTcsZVsyMDBdPTE5MyxlWzIwM109MjA1LGVbMjEwXT0yMTgsZVsyMjNdPTcxMSxlWzIyNF09MzIxLGVbMjI1XT0zMjIsZVsyMjZdPTM1MixlWzIyN109MzUzLGVbMjI4XT0zODEsZVsyMjldPTM4MixlWzIzM109MjIxLGVbMjM0XT0yNTMsZVsyNTJdPTI2MyxlWzI1M109MjY4LGVbMjU0XT0yNjksZVsyNThdPTI1OCxlWzI2MF09MjYwLGVbMjYxXT0yNjEsZVsyNjVdPTI4MCxlWzI2Nl09MjgxLGVbMjY3XT0yODIsZVsyNjhdPTI4MyxlWzI2OV09MzEzLGVbMjc1XT0zMjMsZVsyNzZdPTMyNCxlWzI3OF09MzI4LGVbMjgzXT0zNDQsZVsyODRdPTM0NSxlWzI4NV09MzQ2LGVbMjg2XT0zNDcsZVsyOTJdPTM2NyxlWzI5NV09Mzc3LGVbMjk2XT0zNzgsZVsyOThdPTM4MCxlWzMwNV09OTYzLGVbMzA2XT05NjQsZVszMDddPTk2NixlWzMwOF09ODIxNSxlWzMwOV09ODI1MixlWzMxMF09ODMxOSxlWzMxMV09ODM1OSxlWzMxMl09ODU5MixlWzMxM109ODU5MyxlWzMzN109OTU1MixlWzQ5M109MTAzOSxlWzQ5NF09MTA0MCxlWzY3Ml09MTQ4OCxlWzY3M109MTQ4OSxlWzY3NF09MTQ5MCxlWzY3NV09MTQ5MSxlWzY3Nl09MTQ5MixlWzY3N109MTQ5MyxlWzY3OF09MTQ5NCxlWzY3OV09MTQ5NSxlWzY4MF09MTQ5NixlWzY4MV09MTQ5NyxlWzY4Ml09MTQ5OCxlWzY4M109MTQ5OSxlWzY4NF09MTUwMCxlWzY4NV09MTUwMSxlWzY4Nl09MTUwMixlWzY4N109MTUwMyxlWzY4OF09MTUwNCxlWzY4OV09MTUwNSxlWzY5MF09MTUwNixlWzY5MV09MTUwNyxlWzY5Ml09MTUwOCxlWzY5M109MTUwOSxlWzY5NF09MTUxMCxlWzY5NV09MTUxMSxlWzY5Nl09MTUxMixlWzY5N109MTUxMyxlWzY5OF09MTUxNCxlWzcwNV09MTUyNCxlWzcwNl09ODM2MixlWzcxMF09NjQyODgsZVs3MTFdPTY0Mjk4LGVbNzU5XT0xNjE3LGVbNzYxXT0xNzc2LGVbNzYzXT0xNzc4LGVbNzc1XT0xNjUyLGVbNzc3XT0xNzY0LGVbNzc4XT0xNzgwLGVbNzc5XT0xNzgxLGVbNzgwXT0xNzgyLGVbNzgyXT03NzEsZVs3ODNdPTY0NzI2LGVbNzg2XT04MzYzLGVbNzg4XT04NTMyLGVbNzkwXT03NjgsZVs3OTFdPTc2OSxlWzc5Ml09NzY4LGVbNzk1XT04MDMsZVs3OTddPTY0MzM2LGVbNzk4XT02NDMzNyxlWzc5OV09NjQzNDIsZVs4MDBdPTY0MzQzLGVbODAxXT02NDM0NCxlWzgwMl09NjQzNDUsZVs4MDNdPTY0MzYyLGVbODA0XT02NDM2MyxlWzgwNV09NjQzNjQsZVsyNDI0XT03ODIxLGVbMjQyNV09NzgyMixlWzI0MjZdPTc4MjMsZVsyNDI3XT03ODI0LGVbMjQyOF09NzgyNSxlWzI0MjldPTc4MjYsZVsyNDMwXT03ODI3LGVbMjQzM109NzY4MixlWzI2NzhdPTgwNDUsZVsyNjc5XT04MDQ2LGVbMjgzMF09MTU1MixlWzI4MzhdPTY4NixlWzI4NDBdPTc1MSxlWzI4NDJdPTc1MyxlWzI4NDNdPTc1NCxlWzI4NDRdPTc1NSxlWzI4NDZdPTc1NyxlWzI4NTZdPTc2NyxlWzI4NTddPTg0OCxlWzI4NThdPTg0OSxlWzI4NjJdPTg1MyxlWzI4NjNdPTg1NCxlWzI4NjRdPTg1NSxlWzI4NjVdPTg2MSxlWzI4NjZdPTg2MixlWzI5MDZdPTc0NjAsZVsyOTA4XT03NDYyLGVbMjkwOV09NzQ2MyxlWzI5MTBdPTc0NjQsZVsyOTEyXT03NDY2LGVbMjkxM109NzQ2NyxlWzI5MTRdPTc0NjgsZVsyOTE2XT03NDcwLGVbMjkxN109NzQ3MSxlWzI5MThdPTc0NzIsZVsyOTIwXT03NDc0LGVbMjkyMV09NzQ3NSxlWzI5MjJdPTc0NzYsZVsyOTI0XT03NDc4LGVbMjkyNV09NzQ3OSxlWzI5MjZdPTc0ODAsZVsyOTI4XT03NDgyLGVbMjkyOV09NzQ4MyxlWzI5MzBdPTc0ODQsZVsyOTMyXT03NDg2LGVbMjkzM109NzQ4NyxlWzI5MzRdPTc0ODgsZVsyOTM2XT03NDkwLGVbMjkzN109NzQ5MSxlWzI5MzhdPTc0OTIsZVsyOTQwXT03NDk0LGVbMjk0MV09NzQ5NSxlWzI5NDJdPTc0OTYsZVsyOTQ0XT03NDk4LGVbMjk0Nl09NzUwMCxlWzI5NDhdPTc1MDIsZVsyOTUwXT03NTA0LGVbMjk1MV09NzUwNSxlWzI5NTJdPTc1MDYsZVsyOTU0XT03NTA4LGVbMjk1NV09NzUwOSxlWzI5NTZdPTc1MTAsZVsyOTU4XT03NTEyLGVbMjk1OV09NzUxMyxlWzI5NjBdPTc1MTQsZVsyOTYyXT03NTE2LGVbMjk2M109NzUxNyxlWzI5NjRdPTc1MTgsZVsyOTY2XT03NTIwLGVbMjk2N109NzUyMSxlWzI5NjhdPTc1MjIsZVsyOTcwXT03NTI0LGVbMjk3MV09NzUyNSxlWzI5NzJdPTc1MjYsZVsyOTc0XT03NTI4LGVbMjk3NV09NzUyOSxlWzI5NzZdPTc1MzAsZVsyOTc4XT0xNTM3LGVbMjk3OV09MTUzOCxlWzI5ODBdPTE1MzksZVsyOTgyXT0xNTQ5LGVbMjk4M109MTU1MSxlWzI5ODRdPTE1NTIsZVsyOTg2XT0xNTU0LGVbMjk4N109MTU1NSxlWzI5ODhdPTE1NTYsZVsyOTkwXT0xNjIzLGVbMjk5MV09MTYyNCxlWzI5OTVdPTE3NzUsZVsyOTk5XT0xNzkxLGVbMzAwMl09NjQyOTAsZVszMDAzXT02NDI5MSxlWzMwMDRdPTY0MjkyLGVbMzAwNl09NjQyOTQsZVszMDA3XT02NDI5NSxlWzMwMDhdPTY0Mjk2LGVbMzAxMV09MTkwMCxlWzMwMTRdPTgyMjMsZVszMDE1XT04MjQ0LGVbMzAxN109NzUzMixlWzMwMThdPTc1MzMsZVszMDE5XT03NTM0LGVbMzA3NV09NzU5MCxlWzMwNzZdPTc1OTEsZVszMDc5XT03NTk0LGVbMzA4MF09NzU5NSxlWzMwODNdPTc1OTgsZVszMDg0XT03NTk5LGVbMzA4N109NzYwMixlWzMwODhdPTc2MDMsZVszMDkxXT03NjA2LGVbMzA5Ml09NzYwNyxlWzMwOTVdPTc2MTAsZVszMDk2XT03NjExLGVbMzA5OV09NzYxNCxlWzMxMDBdPTc2MTUsZVszMTAzXT03NjE4LGVbMzEwNF09NzYxOSxlWzMxMDddPTgzMzcsZVszMTA4XT04MzM4LGVbMzExNl09MTg4NCxlWzMxMTldPTE4ODUsZVszMTIwXT0xODg1LGVbMzEyM109MTg4NixlWzMxMjRdPTE4ODYsZVszMTI3XT0xODg3LGVbMzEyOF09MTg4NyxlWzMxMzFdPTE4ODgsZVszMTMyXT0xODg4LGVbMzEzNV09MTg4OSxlWzMxMzZdPTE4ODksZVszMTM5XT0xODkwLGVbMzE0MF09MTg5MCxlWzMxNDNdPTE4OTEsZVszMTQ0XT0xODkxLGVbMzE0N109MTg5MixlWzMxNDhdPTE4OTIsZVszMTUzXT01ODAsZVszMTU0XT01ODEsZVszMTU3XT01ODQsZVszMTU4XT01ODUsZVszMTYxXT01ODgsZVszMTYyXT01ODksZVszMTY1XT04OTEsZVszMTY2XT04OTIsZVszMTY5XT0xMjc0LGVbMzE3MF09MTI3NSxlWzMxNzNdPTEyNzgsZVszMTc0XT0xMjc5LGVbMzE4MV09NzYyMixlWzMxODJdPTc2MjMsZVszMjgyXT0xMTc5OSxlWzMzMTZdPTU3OCxlWzMzNzldPTQyNzg1LGVbMzM5M109MTE1OSxlWzM0MTZdPTgzNzd9KSk7dC5nZXRHbHlwaE1hcEZvclN0YW5kYXJkRm9udHM9bDt2YXIgZj0oMCxuLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2VbMjI3XT0zMjIsZVsyNjRdPTI2MSxlWzI5MV09MzQ2fSkpO3QuZ2V0U3VwcGxlbWVudGFsR2x5cGhNYXBGb3JBcmlhbEJsYWNrPWY7dmFyIGg9KDAsbi5nZXRMb29rdXBUYWJsZUZhY3RvcnkpKChmdW5jdGlvbihlKXtlWzFdPTMyLGVbNF09NjUsZVs1XT0xOTIsZVs2XT0xOTMsZVs5XT0xOTYsZVsxN109NjYsZVsxOF09NjcsZVsyMV09MjY4LGVbMjRdPTY4LGVbMjhdPTY5LGVbMjldPTIwMCxlWzMwXT0yMDEsZVszMl09MjgyLGVbMzhdPTcwLGVbMzldPTcxLGVbNDRdPTcyLGVbNDddPTczLGVbNDhdPTIwNCxlWzQ5XT0yMDUsZVs1OF09NzQsZVs2MF09NzUsZVs2Ml09NzYsZVs2OF09NzcsZVs2OV09NzgsZVs3NV09NzksZVs3Nl09MjEwLGVbODBdPTIxNCxlWzg3XT04MCxlWzg5XT04MSxlWzkwXT04MixlWzkyXT0zNDQsZVs5NF09ODMsZVs5N109MzUyLGVbMTAwXT04NCxlWzEwNF09ODUsZVsxMDldPTIyMCxlWzExNV09ODYsZVsxMTZdPTg3LGVbMTIxXT04OCxlWzEyMl09ODksZVsxMjRdPTIyMSxlWzEyN109OTAsZVsxMjldPTM4MSxlWzI1OF09OTcsZVsyNTldPTIyNCxlWzI2MF09MjI1LGVbMjYzXT0yMjgsZVsyNjhdPTI2MSxlWzI3MV09OTgsZVsyNzJdPTk5LGVbMjczXT0yNjMsZVsyNzVdPTI2OSxlWzI4Ml09MTAwLGVbMjg2XT0xMDEsZVsyODddPTIzMixlWzI4OF09MjMzLGVbMjkwXT0yODMsZVsyOTVdPTI4MSxlWzI5Nl09MTAyLGVbMzM2XT0xMDMsZVszNDZdPTEwNCxlWzM0OV09MTA1LGVbMzUwXT0yMzYsZVszNTFdPTIzNyxlWzM2MV09MTA2LGVbMzY0XT0xMDcsZVszNjddPTEwOCxlWzM3MV09MzIyLGVbMzczXT0xMDksZVszNzRdPTExMCxlWzM4MV09MTExLGVbMzgyXT0yNDIsZVszODNdPTI0MyxlWzM4Nl09MjQ2LGVbMzkzXT0xMTIsZVszOTVdPTExMyxlWzM5Nl09MTE0LGVbMzk4XT0zNDUsZVs0MDBdPTExNSxlWzQwMV09MzQ3LGVbNDAzXT0zNTMsZVs0MTBdPTExNixlWzQzN109MTE3LGVbNDQyXT0yNTIsZVs0NDhdPTExOCxlWzQ0OV09MTE5LGVbNDU0XT0xMjAsZVs0NTVdPTEyMSxlWzQ1N109MjUzLGVbNDYwXT0xMjIsZVs0NjJdPTM4MixlWzQ2M109MzgwLGVbODUzXT00NCxlWzg1NV09NTgsZVs4NTZdPTQ2LGVbODc2XT00NyxlWzg3OF09NDUsZVs4ODJdPTQ1LGVbODk0XT00MCxlWzg5NV09NDEsZVs4OTZdPTkxLGVbODk3XT05MyxlWzkyM109NjQsZVsxMDA0XT00OCxlWzEwMDVdPTQ5LGVbMTAwNl09NTAsZVsxMDA3XT01MSxlWzEwMDhdPTUyLGVbMTAwOV09NTMsZVsxMDEwXT01NCxlWzEwMTFdPTU1LGVbMTAxMl09NTYsZVsxMDEzXT01NyxlWzEwODFdPTM3LGVbMTA4NV09NDMsZVsxMDg2XT00NX0pKTt0LmdldFN1cHBsZW1lbnRhbEdseXBoTWFwRm9yQ2FsaWJyaT1ofSwoZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuVG9Vbmljb2RlTWFwPXQuSWRlbnRpdHlUb1VuaWNvZGVNYXA9dm9pZCAwO3ZhciBuPXIoMik7ZnVuY3Rpb24gYShlKXtyZXR1cm4gYT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZX0sYShlKX1mdW5jdGlvbiBpKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gbyhlLHQpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgbj10W3JdO24uZW51bWVyYWJsZT1uLmVudW1lcmFibGV8fCExLG4uY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBuJiYobi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsKHZvaWQgMCxpPWZ1bmN0aW9uKGUsdCl7aWYoIm9iamVjdCIhPT1hKGUpfHxudWxsPT09ZSlyZXR1cm4gZTt2YXIgcj1lW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09cil7dmFyIG49ci5jYWxsKGUsInN0cmluZyIpO2lmKCJvYmplY3QiIT09YShuKSlyZXR1cm4gbjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybiBTdHJpbmcoZSl9KG4ua2V5KSwic3ltYm9sIj09PWEoaSk/aTpTdHJpbmcoaSkpLG4pfXZhciBpfWZ1bmN0aW9uIHMoZSx0LHIpe3JldHVybiB0JiZvKGUucHJvdG90eXBlLHQpLHImJm8oZSxyKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxlfXZhciBjPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpbXTtpKHRoaXMsZSksdGhpcy5fbWFwPXR9cmV0dXJuIHMoZSxbe2tleToibGVuZ3RoIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbWFwLmxlbmd0aH19LHtrZXk6ImZvckVhY2giLHZhbHVlOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdCBpbiB0aGlzLl9tYXApZSh0LHRoaXMuX21hcFt0XS5jaGFyQ29kZUF0KDApKX19LHtrZXk6ImhhcyIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMCE9PXRoaXMuX21hcFtlXX19LHtrZXk6ImdldCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX21hcFtlXX19LHtrZXk6ImNoYXJDb2RlT2YiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX21hcDtpZih0Lmxlbmd0aDw9NjU1MzYpcmV0dXJuIHQuaW5kZXhPZihlKTtmb3IodmFyIHIgaW4gdClpZih0W3JdPT09ZSlyZXR1cm4gMHxyO3JldHVybi0xfX0se2tleToiYW1lbmQiLHZhbHVlOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdCBpbiBlKXRoaXMuX21hcFt0XT1lW3RdfX1dKSxlfSgpO3QuVG9Vbmljb2RlTWFwPWM7dmFyIHU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQscil7aSh0aGlzLGUpLHRoaXMuZmlyc3RDaGFyPXQsdGhpcy5sYXN0Q2hhcj1yfXJldHVybiBzKGUsW3trZXk6Imxlbmd0aCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGFzdENoYXIrMS10aGlzLmZpcnN0Q2hhcn19LHtrZXk6ImZvckVhY2giLHZhbHVlOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD10aGlzLmZpcnN0Q2hhcixyPXRoaXMubGFzdENoYXI7dDw9cjt0KyspZSh0LHQpfX0se2tleToiaGFzIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5maXJzdENoYXI8PWUmJmU8PXRoaXMubGFzdENoYXJ9fSx7a2V5OiJnZXQiLHZhbHVlOmZ1bmN0aW9uKGUpe2lmKHRoaXMuZmlyc3RDaGFyPD1lJiZlPD10aGlzLmxhc3RDaGFyKXJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGUpfX0se2tleToiY2hhckNvZGVPZiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIE51bWJlci5pc0ludGVnZXIoZSkmJmU+PXRoaXMuZmlyc3RDaGFyJiZlPD10aGlzLmxhc3RDaGFyP2U6LTF9fSx7a2V5OiJhbWVuZCIsdmFsdWU6ZnVuY3Rpb24oZSl7KDAsbi51bnJlYWNoYWJsZSkoIlNob3VsZCBub3QgY2FsbCBhbWVuZCgpIil9fV0pLGV9KCk7dC5JZGVudGl0eVRvVW5pY29kZU1hcD11fSwoZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuQ0ZGRm9udD12b2lkIDA7dmFyIG49cigxNjQpLGE9cigxNjcpLGk9cigyKTtmdW5jdGlvbiBvKGUpe3JldHVybiBvPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSxvKGUpfWZ1bmN0aW9uIHMoZSx0KXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIG49dFtyXTtuLmVudW1lcmFibGU9bi5lbnVtZXJhYmxlfHwhMSxuLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gbiYmKG4ud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCh2b2lkIDAsYT1mdW5jdGlvbihlLHQpe2lmKCJvYmplY3QiIT09byhlKXx8bnVsbD09PWUpcmV0dXJuIGU7dmFyIHI9ZVtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PXIpe3ZhciBuPXIuY2FsbChlLCJzdHJpbmciKTtpZigib2JqZWN0IiE9PW8obikpcmV0dXJuIG47dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4gU3RyaW5nKGUpfShuLmtleSksInN5bWJvbCI9PT1vKGEpP2E6U3RyaW5nKGEpKSxuKX12YXIgYX12YXIgYz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCxyKXshZnVuY3Rpb24oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxlKSx0aGlzLnByb3BlcnRpZXM9cjt2YXIgbz1uZXcgbi5DRkZQYXJzZXIodCxyLGEuU0VBQ19BTkFMWVNJU19FTkFCTEVEKTt0aGlzLmNmZj1vLnBhcnNlKCksdGhpcy5jZmYuZHVwbGljYXRlRmlyc3RHbHlwaCgpO3ZhciBzPW5ldyBuLkNGRkNvbXBpbGVyKHRoaXMuY2ZmKTt0aGlzLnNlYWNzPXRoaXMuY2ZmLnNlYWNzO3RyeXt0aGlzLmRhdGE9cy5jb21waWxlKCl9Y2F0Y2goZSl7KDAsaS53YXJuKSgiRmFpbGVkIHRvIGNvbXBpbGUgZm9udCAiK3IubG9hZGVkTmFtZSksdGhpcy5kYXRhPXR9dGhpcy5fY3JlYXRlQnVpbHRJbkVuY29kaW5nKCl9dmFyIHQscjtyZXR1cm4gdD1lLChyPVt7a2V5OiJudW1HbHlwaHMiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNmZi5jaGFyU3RyaW5ncy5jb3VudH19LHtrZXk6ImdldENoYXJzZXQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2ZmLmNoYXJzZXQuY2hhcnNldH19LHtrZXk6ImdldEdseXBoTWFwcGluZyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZSx0LHI9dGhpcy5jZmYsbj10aGlzLnByb3BlcnRpZXMsaT1uLmNpZFRvR2lkTWFwLG89bi5jTWFwLHM9ci5jaGFyc2V0LmNoYXJzZXQ7aWYobi5jb21wb3NpdGUpe3ZhciBjLHU7aWYoaSYmaS5sZW5ndGg+MCl7Yz1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcih2YXIgbD0wLGY9aS5sZW5ndGg7bDxmO2wrKyl7dmFyIGg9aVtsXTt2b2lkIDAhPT1oJiYoY1toXT1sKX19aWYoZT1PYmplY3QuY3JlYXRlKG51bGwpLHIuaXNDSURGb250KWZvcih0PTA7dDxzLmxlbmd0aDt0Kyspe3ZhciBkPXNbdF07dT1vLmNoYXJDb2RlT2YoZCksYyYmdm9pZCAwIT09Y1t1XSYmKHU9Y1t1XSksZVt1XT10fWVsc2UgZm9yKHQ9MDt0PHIuY2hhclN0cmluZ3MuY291bnQ7dCsrKWVbdT1vLmNoYXJDb2RlT2YodCldPXQ7cmV0dXJuIGV9dmFyIHA9ci5lbmNvZGluZz9yLmVuY29kaW5nLmVuY29kaW5nOm51bGw7cmV0dXJuIG4uaXNJbnRlcm5hbEZvbnQmJihwPW4uZGVmYXVsdEVuY29kaW5nKSwoMCxhLnR5cGUxRm9udEdseXBoTWFwcGluZykobixwLHMpfX0se2tleToiaGFzR2x5cGhJZCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuY2ZmLmhhc0dseXBoSWQoZSl9fSx7a2V5OiJfY3JlYXRlQnVpbHRJbkVuY29kaW5nIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuY2ZmLHQ9ZS5jaGFyc2V0LHI9ZS5lbmNvZGluZztpZih0JiZyKXt2YXIgbj10LmNoYXJzZXQsYT1yLmVuY29kaW5nLGk9W107Zm9yKHZhciBvIGluIGEpe3ZhciBzPWFbb107aWYocz49MCl7dmFyIGM9bltzXTtjJiYoaVtvXT1jKX19aS5sZW5ndGg+MCYmKHRoaXMucHJvcGVydGllcy5idWlsdEluRW5jb2Rpbmc9aSl9fX1dKSYmcyh0LnByb3RvdHlwZSxyKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxlfSgpO3QuQ0ZGRm9udD1jfSwoZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuRm9udFJlbmRlcmVyRmFjdG9yeT12b2lkIDA7dmFyIG49cigyKSxhPXIoMTY0KSxpPXIoMTY4KSxvPXIoMTY2KSxzPXIoMTM5KTtmdW5jdGlvbiBjKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLHQmJnUoZSx0KX1mdW5jdGlvbiB1KGUsdCl7cmV0dXJuIHU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5fX3Byb3RvX189dCxlfSx1KGUsdCl9ZnVuY3Rpb24gbChlKXt2YXIgdD1mdW5jdGlvbigpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0KXJldHVybiExO2lmKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sKGZ1bmN0aW9uKCl7fSkpKSwhMH1jYXRjaChlKXtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHIsbj1mKGUpO2lmKHQpe3ZhciBhPWYodGhpcykuY29uc3RydWN0b3I7cj1SZWZsZWN0LmNvbnN0cnVjdChuLGFyZ3VtZW50cyxhKX1lbHNlIHI9bi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYodCYmKCJvYmplY3QiPT09aCh0KXx8ImZ1bmN0aW9uIj09dHlwZW9mIHQpKXJldHVybiB0O2lmKHZvaWQgMCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24oZSl7aWYodm9pZCAwPT09ZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBlfShlKX0odGhpcyxyKX19ZnVuY3Rpb24gZihlKXtyZXR1cm4gZj1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihlKXtyZXR1cm4gZS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihlKX0sZihlKX1mdW5jdGlvbiBoKGUpe3JldHVybiBoPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSxoKGUpfWZ1bmN0aW9uIGQoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBwKGUsdCl7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBuPXRbcl07bi5lbnVtZXJhYmxlPW4uZW51bWVyYWJsZXx8ITEsbi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIG4mJihuLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwodm9pZCAwLGE9ZnVuY3Rpb24oZSx0KXtpZigib2JqZWN0IiE9PWgoZSl8fG51bGw9PT1lKXJldHVybiBlO3ZhciByPWVbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1yKXt2YXIgbj1yLmNhbGwoZSwic3RyaW5nIik7aWYoIm9iamVjdCIhPT1oKG4pKXJldHVybiBuO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuIFN0cmluZyhlKX0obi5rZXkpLCJzeW1ib2wiPT09aChhKT9hOlN0cmluZyhhKSksbil9dmFyIGF9ZnVuY3Rpb24gZyhlLHQscil7cmV0dXJuIHQmJnAoZS5wcm90b3R5cGUsdCksciYmcChlLHIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGV9ZnVuY3Rpb24gdihlLHQpe3JldHVybihlW3RdPDwyNHxlW3QrMV08PDE2fGVbdCsyXTw8OHxlW3QrM10pPj4+MH1mdW5jdGlvbiB5KGUsdCl7cmV0dXJuIGVbdF08PDh8ZVt0KzFdfWZ1bmN0aW9uIG0oZSx0KXtyZXR1cm4oZVt0XTw8MjR8ZVt0KzFdPDwxNik+PjE2fWZ1bmN0aW9uIGIoZSx0KXtyZXR1cm4gZVt0XTw8MjQ+PjI0fWZ1bmN0aW9uIHcoZSx0KXtyZXR1cm4gbShlLHQpLzE2Mzg0fWZ1bmN0aW9uIGsoZSl7dmFyIHQ9ZS5sZW5ndGgscj0zMjc2ODtyZXR1cm4gdDwxMjQwP3I9MTA3OnQ8MzM5MDAmJihyPTExMzEpLHJ9ZnVuY3Rpb24gUyhlLHQscil7dmFyIGEsaSxvLHM9MT09PXkoZSx0KzIpP3YoZSx0KzgpOnYoZSx0KzE2KSxjPXkoZSx0K3MpO2lmKDQ9PT1jKXt5KGUsdCtzKzIpO3ZhciB1PXkoZSx0K3MrNik+PjE7Zm9yKGk9dCtzKzE0LGE9W10sbz0wO288dTtvKyssaSs9MilhW29dPXtlbmQ6eShlLGkpfTtmb3IoaSs9MixvPTA7bzx1O28rKyxpKz0yKWFbb10uc3RhcnQ9eShlLGkpO2ZvcihvPTA7bzx1O28rKyxpKz0yKWFbb10uaWREZWx0YT15KGUsaSk7Zm9yKG89MDtvPHU7bysrLGkrPTIpe3ZhciBsPXkoZSxpKTtpZigwIT09bCl7YVtvXS5pZHM9W107Zm9yKHZhciBmPTAsaD1hW29dLmVuZC1hW29dLnN0YXJ0KzE7ZjxoO2YrKylhW29dLmlkc1tmXT15KGUsaStsKSxsKz0yfX1yZXR1cm4gYX1pZigxMj09PWMpe3ZhciBkPXYoZSx0K3MrMTIpO2ZvcihpPXQrcysxNixhPVtdLG89MDtvPGQ7bysrKXQ9dihlLGkpLGEucHVzaCh7c3RhcnQ6dCxlbmQ6dihlLGkrNCksaWREZWx0YTp2KGUsaSs4KS10fSksaSs9MTI7cmV0dXJuIGF9dGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoInVuc3VwcG9ydGVkIGNtYXA6ICIuY29uY2F0KGMpKX1mdW5jdGlvbiB4KGUsdCxyLG4pe3ZhciBpPW5ldyBhLkNGRlBhcnNlcihuZXcgcy5TdHJlYW0oZSx0LHItdCkse30sbikucGFyc2UoKTtyZXR1cm57Z2x5cGhzOmkuY2hhclN0cmluZ3Mub2JqZWN0cyxzdWJyczppLnRvcERpY3QucHJpdmF0ZURpY3QmJmkudG9wRGljdC5wcml2YXRlRGljdC5zdWJyc0luZGV4JiZpLnRvcERpY3QucHJpdmF0ZURpY3Quc3VicnNJbmRleC5vYmplY3RzLGdzdWJyczppLmdsb2JhbFN1YnJJbmRleCYmaS5nbG9iYWxTdWJySW5kZXgub2JqZWN0cyxpc0NGRkNJREZvbnQ6aS5pc0NJREZvbnQsZmRTZWxlY3Q6aS5mZFNlbGVjdCxmZEFycmF5OmkuZmRBcnJheX19ZnVuY3Rpb24gTyhlLHQpe2Zvcih2YXIgcj10LmNvZGVQb2ludEF0KDApLG49MCxhPTAsaT1lLmxlbmd0aC0xO2E8aTspe3ZhciBvPWEraSsxPj4xO3I8ZVtvXS5zdGFydD9pPW8tMTphPW99cmV0dXJuIGVbYV0uc3RhcnQ8PXImJnI8PWVbYV0uZW5kJiYobj1lW2FdLmlkRGVsdGErKGVbYV0uaWRzP2VbYV0uaWRzW3ItZVthXS5zdGFydF06cikmNjU1MzUpLHtjaGFyQ29kZTpyLGdseXBoSWQ6bn19ZnVuY3Rpb24gQShlLHQscil7ZnVuY3Rpb24gbihlLHIpe3QucHVzaCh7Y21kOiJtb3ZlVG8iLGFyZ3M6W2Uscl19KX1mdW5jdGlvbiBhKGUscil7dC5wdXNoKHtjbWQ6ImxpbmVUbyIsYXJnczpbZSxyXX0pfWZ1bmN0aW9uIGkoZSxyLG4sYSl7dC5wdXNoKHtjbWQ6InF1YWRyYXRpY0N1cnZlVG8iLGFyZ3M6W2UscixuLGFdfSl9dmFyIG8scz0wLGM9bShlLHMpLHU9MCxsPTA7aWYocys9MTAsYzwwKWRve289eShlLHMpO3ZhciBmPXkoZSxzKzIpO3MrPTQ7dmFyIGg9dm9pZCAwLGQ9dm9pZCAwOzEmbz8oMiZvPyhoPW0oZSxzKSxkPW0oZSxzKzIpKTooaD15KGUscyksZD15KGUscysyKSkscys9NCk6MiZvPyhoPWIoZSxzKyspLGQ9YihlLHMrKykpOihoPWVbcysrXSxkPWVbcysrXSksMiZvPyh1PWgsbD1kKToodT0wLGw9MCk7dmFyIHA9MSxnPTEsdj0wLGs9MDs4Jm8/KHA9Zz13KGUscykscys9Mik6NjQmbz8ocD13KGUscyksZz13KGUscysyKSxzKz00KToxMjgmbyYmKHA9dyhlLHMpLHY9dyhlLHMrMiksaz13KGUscys0KSxnPXcoZSxzKzYpLHMrPTgpO3ZhciBTPXIuZ2x5cGhzW2ZdO1MmJih0LnB1c2goe2NtZDoic2F2ZSJ9LHtjbWQ6InRyYW5zZm9ybSIsYXJnczpbcCx2LGssZyx1LGxdfSksQShTLHQsciksdC5wdXNoKHtjbWQ6InJlc3RvcmUifSkpfXdoaWxlKDMyJm8pO2Vsc2V7dmFyIHgsTyxDPVtdO2Zvcih4PTA7eDxjO3grKylDLnB1c2goeShlLHMpKSxzKz0yO3MrPTIreShlLHMpO2Zvcih2YXIgRj1DLmF0KC0xKSsxLFA9W107UC5sZW5ndGg8Rjspe3ZhciBUPTE7Zm9yKDgmKG89ZVtzKytdKSYmKFQrPWVbcysrXSk7VC0tID4wOylQLnB1c2goe2ZsYWdzOm99KX1mb3IoeD0wO3g8Rjt4Kyspe3N3aXRjaCgxOCZQW3hdLmZsYWdzKXtjYXNlIDA6dSs9bShlLHMpLHMrPTI7YnJlYWs7Y2FzZSAyOnUtPWVbcysrXTticmVhaztjYXNlIDE4OnUrPWVbcysrXX1QW3hdLng9dX1mb3IoeD0wO3g8Rjt4Kyspe3N3aXRjaCgzNiZQW3hdLmZsYWdzKXtjYXNlIDA6bCs9bShlLHMpLHMrPTI7YnJlYWs7Y2FzZSA0OmwtPWVbcysrXTticmVhaztjYXNlIDM2OmwrPWVbcysrXX1QW3hdLnk9bH12YXIgST0wO2ZvcihzPTA7czxjO3MrKyl7dmFyIEU9Q1tzXSxqPVAuc2xpY2UoSSxFKzEpO2lmKDEmalswXS5mbGFncylqLnB1c2goalswXSk7ZWxzZSBpZigxJmouYXQoLTEpLmZsYWdzKWoudW5zaGlmdChqLmF0KC0xKSk7ZWxzZXt2YXIgTT17ZmxhZ3M6MSx4OihqWzBdLngrai5hdCgtMSkueCkvMix5OihqWzBdLnkrai5hdCgtMSkueSkvMn07ai51bnNoaWZ0KE0pLGoucHVzaChNKX1mb3IobihqWzBdLngsalswXS55KSx4PTEsTz1qLmxlbmd0aDt4PE87eCsrKTEmalt4XS5mbGFncz9hKGpbeF0ueCxqW3hdLnkpOjEmalt4KzFdLmZsYWdzPyhpKGpbeF0ueCxqW3hdLnksalt4KzFdLngsalt4KzFdLnkpLHgrKyk6aShqW3hdLngsalt4XS55LChqW3hdLngralt4KzFdLngpLzIsKGpbeF0ueStqW3grMV0ueSkvMik7ST1FKzF9fX1mdW5jdGlvbiBDKGUsdCxyLGEpe2Z1bmN0aW9uIGkoZSxyKXt0LnB1c2goe2NtZDoibW92ZVRvIixhcmdzOltlLHJdfSl9ZnVuY3Rpb24gcyhlLHIpe3QucHVzaCh7Y21kOiJsaW5lVG8iLGFyZ3M6W2Uscl19KX1mdW5jdGlvbiBjKGUscixuLGEsaSxvKXt0LnB1c2goe2NtZDoiYmV6aWVyQ3VydmVUbyIsYXJnczpbZSxyLG4sYSxpLG9dfSl9dmFyIHU9W10sbD0wLGY9MCxoPTA7IWZ1bmN0aW9uIGUoZCl7Zm9yKHZhciBwPTA7cDxkLmxlbmd0aDspe3ZhciBnPSExLHY9ZFtwKytdLHk9dm9pZCAwLG09dm9pZCAwLGI9dm9pZCAwLHc9dm9pZCAwLFM9dm9pZCAwLHg9dm9pZCAwLEE9dm9pZCAwLEY9dm9pZCAwO3N3aXRjaCh2KXtjYXNlIDE6Y2FzZSAzOmNhc2UgMTg6Y2FzZSAyMzpoKz11Lmxlbmd0aD4+MSxnPSEwO2JyZWFrO2Nhc2UgNDpmKz11LnBvcCgpLGkobCxmKSxnPSEwO2JyZWFrO2Nhc2UgNTpmb3IoO3UubGVuZ3RoPjA7KWwrPXUuc2hpZnQoKSxmKz11LnNoaWZ0KCkscyhsLGYpO2JyZWFrO2Nhc2UgNjpmb3IoO3UubGVuZ3RoPjAmJihzKGwrPXUuc2hpZnQoKSxmKSwwIT09dS5sZW5ndGgpOylmKz11LnNoaWZ0KCkscyhsLGYpO2JyZWFrO2Nhc2UgNzpmb3IoO3UubGVuZ3RoPjAmJihmKz11LnNoaWZ0KCkscyhsLGYpLDAhPT11Lmxlbmd0aCk7KXMobCs9dS5zaGlmdCgpLGYpO2JyZWFrO2Nhc2UgODpmb3IoO3UubGVuZ3RoPjA7KXk9bCt1LnNoaWZ0KCksYj1mK3Uuc2hpZnQoKSxtPXkrdS5zaGlmdCgpLHc9Yit1LnNoaWZ0KCksbD1tK3Uuc2hpZnQoKSxmPXcrdS5zaGlmdCgpLGMoeSxiLG0sdyxsLGYpO2JyZWFrO2Nhc2UgMTA6aWYoQT11LnBvcCgpLEY9bnVsbCxyLmlzQ0ZGQ0lERm9udCl7dmFyIFA9ci5mZFNlbGVjdC5nZXRGREluZGV4KGEpO2lmKFA+PTAmJlA8ci5mZEFycmF5Lmxlbmd0aCl7dmFyIFQ9ci5mZEFycmF5W1BdLEk9dm9pZCAwO1QucHJpdmF0ZURpY3QmJlQucHJpdmF0ZURpY3Quc3VicnNJbmRleCYmKEk9VC5wcml2YXRlRGljdC5zdWJyc0luZGV4Lm9iamVjdHMpLEkmJihGPUlbQSs9ayhJKV0pfWVsc2UoMCxuLndhcm4pKCJJbnZhbGlkIGZkIGluZGV4IGZvciBnbHlwaCBpbmRleC4iKX1lbHNlIEY9ci5zdWJyc1tBK3Iuc3VicnNCaWFzXTtGJiZlKEYpO2JyZWFrO2Nhc2UgMTE6cmV0dXJuO2Nhc2UgMTI6c3dpdGNoKHY9ZFtwKytdKXtjYXNlIDM0Om09KHk9bCt1LnNoaWZ0KCkpK3Uuc2hpZnQoKSxTPWYrdS5zaGlmdCgpLGw9bSt1LnNoaWZ0KCksYyh5LGYsbSxTLGwsUyksbT0oeT1sK3Uuc2hpZnQoKSkrdS5zaGlmdCgpLGw9bSt1LnNoaWZ0KCksYyh5LFMsbSxmLGwsZik7YnJlYWs7Y2FzZSAzNTp5PWwrdS5zaGlmdCgpLGI9Zit1LnNoaWZ0KCksbT15K3Uuc2hpZnQoKSx3PWIrdS5zaGlmdCgpLGw9bSt1LnNoaWZ0KCksZj13K3Uuc2hpZnQoKSxjKHksYixtLHcsbCxmKSx5PWwrdS5zaGlmdCgpLGI9Zit1LnNoaWZ0KCksbT15K3Uuc2hpZnQoKSx3PWIrdS5zaGlmdCgpLGw9bSt1LnNoaWZ0KCksZj13K3Uuc2hpZnQoKSxjKHksYixtLHcsbCxmKSx1LnBvcCgpO2JyZWFrO2Nhc2UgMzY6Yyh5PWwrdS5zaGlmdCgpLFM9Zit1LnNoaWZ0KCksbT15K3Uuc2hpZnQoKSx4PVMrdS5zaGlmdCgpLGw9bSt1LnNoaWZ0KCkseCksYyh5PWwrdS5zaGlmdCgpLHgsbT15K3Uuc2hpZnQoKSx4K3Uuc2hpZnQoKSxsPW0rdS5zaGlmdCgpLGYpO2JyZWFrO2Nhc2UgMzc6dmFyIEU9bCxqPWY7eT1sK3Uuc2hpZnQoKSxiPWYrdS5zaGlmdCgpLG09eSt1LnNoaWZ0KCksdz1iK3Uuc2hpZnQoKSxsPW0rdS5zaGlmdCgpLGY9dyt1LnNoaWZ0KCksYyh5LGIsbSx3LGwsZikseT1sK3Uuc2hpZnQoKSxiPWYrdS5zaGlmdCgpLG09eSt1LnNoaWZ0KCksdz1iK3Uuc2hpZnQoKSxsPW0sZj13LE1hdGguYWJzKGwtRSk+TWF0aC5hYnMoZi1qKT9sKz11LnNoaWZ0KCk6Zis9dS5zaGlmdCgpLGMoeSxiLG0sdyxsLGYpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoInVua25vd24gb3BlcmF0b3I6IDEyICIuY29uY2F0KHYpKX1icmVhaztjYXNlIDE0OmlmKHUubGVuZ3RoPj00KXt2YXIgTT11LnBvcCgpLF89dS5wb3AoKTtmPXUucG9wKCksbD11LnBvcCgpLHQucHVzaCh7Y21kOiJzYXZlIn0se2NtZDoidHJhbnNsYXRlIixhcmdzOltsLGZdfSk7dmFyIEw9TyhyLmNtYXAsU3RyaW5nLmZyb21DaGFyQ29kZShyLmdseXBoTmFtZU1hcFtvLlN0YW5kYXJkRW5jb2RpbmdbTV1dKSk7QyhyLmdseXBoc1tMLmdseXBoSWRdLHQscixMLmdseXBoSWQpLHQucHVzaCh7Y21kOiJyZXN0b3JlIn0pLEw9TyhyLmNtYXAsU3RyaW5nLmZyb21DaGFyQ29kZShyLmdseXBoTmFtZU1hcFtvLlN0YW5kYXJkRW5jb2RpbmdbX11dKSksQyhyLmdseXBoc1tMLmdseXBoSWRdLHQscixMLmdseXBoSWQpfXJldHVybjtjYXNlIDE5OmNhc2UgMjA6cCs9KGgrPXUubGVuZ3RoPj4xKSs3Pj4zLGc9ITA7YnJlYWs7Y2FzZSAyMTpmKz11LnBvcCgpLGkobCs9dS5wb3AoKSxmKSxnPSEwO2JyZWFrO2Nhc2UgMjI6aShsKz11LnBvcCgpLGYpLGc9ITA7YnJlYWs7Y2FzZSAyNDpmb3IoO3UubGVuZ3RoPjI7KXk9bCt1LnNoaWZ0KCksYj1mK3Uuc2hpZnQoKSxtPXkrdS5zaGlmdCgpLHc9Yit1LnNoaWZ0KCksbD1tK3Uuc2hpZnQoKSxmPXcrdS5zaGlmdCgpLGMoeSxiLG0sdyxsLGYpO2wrPXUuc2hpZnQoKSxmKz11LnNoaWZ0KCkscyhsLGYpO2JyZWFrO2Nhc2UgMjU6Zm9yKDt1Lmxlbmd0aD42OylsKz11LnNoaWZ0KCksZis9dS5zaGlmdCgpLHMobCxmKTt5PWwrdS5zaGlmdCgpLGI9Zit1LnNoaWZ0KCksbT15K3Uuc2hpZnQoKSx3PWIrdS5zaGlmdCgpLGw9bSt1LnNoaWZ0KCksZj13K3Uuc2hpZnQoKSxjKHksYixtLHcsbCxmKTticmVhaztjYXNlIDI2OmZvcih1Lmxlbmd0aCUyJiYobCs9dS5zaGlmdCgpKTt1Lmxlbmd0aD4wOyl5PWwsYj1mK3Uuc2hpZnQoKSxtPXkrdS5zaGlmdCgpLHc9Yit1LnNoaWZ0KCksbD1tLGY9dyt1LnNoaWZ0KCksYyh5LGIsbSx3LGwsZik7YnJlYWs7Y2FzZSAyNzpmb3IodS5sZW5ndGglMiYmKGYrPXUuc2hpZnQoKSk7dS5sZW5ndGg+MDspYyh5PWwrdS5zaGlmdCgpLGI9ZixtPXkrdS5zaGlmdCgpLHc9Yit1LnNoaWZ0KCksbD1tK3Uuc2hpZnQoKSxmPXcpO2JyZWFrO2Nhc2UgMjg6dS5wdXNoKChkW3BdPDwyNHxkW3ArMV08PDE2KT4+MTYpLHArPTI7YnJlYWs7Y2FzZSAyOTpBPXUucG9wKCkrci5nc3VicnNCaWFzLChGPXIuZ3N1YnJzW0FdKSYmZShGKTticmVhaztjYXNlIDMwOmZvcig7dS5sZW5ndGg+MCYmKHk9bCxiPWYrdS5zaGlmdCgpLG09eSt1LnNoaWZ0KCksdz1iK3Uuc2hpZnQoKSxsPW0rdS5zaGlmdCgpLGY9dysoMT09PXUubGVuZ3RoP3Uuc2hpZnQoKTowKSxjKHksYixtLHcsbCxmKSwwIT09dS5sZW5ndGgpOyl5PWwrdS5zaGlmdCgpLGI9ZixtPXkrdS5zaGlmdCgpLHc9Yit1LnNoaWZ0KCksZj13K3Uuc2hpZnQoKSxjKHksYixtLHcsbD1tKygxPT09dS5sZW5ndGg/dS5zaGlmdCgpOjApLGYpO2JyZWFrO2Nhc2UgMzE6Zm9yKDt1Lmxlbmd0aD4wJiYoeT1sK3Uuc2hpZnQoKSxiPWYsbT15K3Uuc2hpZnQoKSx3PWIrdS5zaGlmdCgpLGY9dyt1LnNoaWZ0KCksYyh5LGIsbSx3LGw9bSsoMT09PXUubGVuZ3RoP3Uuc2hpZnQoKTowKSxmKSwwIT09dS5sZW5ndGgpOyl5PWwsYj1mK3Uuc2hpZnQoKSxtPXkrdS5zaGlmdCgpLHc9Yit1LnNoaWZ0KCksbD1tK3Uuc2hpZnQoKSxmPXcrKDE9PT11Lmxlbmd0aD91LnNoaWZ0KCk6MCksYyh5LGIsbSx3LGwsZik7YnJlYWs7ZGVmYXVsdDppZih2PDMyKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJ1bmtub3duIG9wZXJhdG9yOiAiLmNvbmNhdCh2KSk7djwyNDc/dS5wdXNoKHYtMTM5KTp2PDI1MT91LnB1c2goMjU2Kih2LTI0NykrZFtwKytdKzEwOCk6djwyNTU/dS5wdXNoKDI1NiotKHYtMjUxKS1kW3ArK10tMTA4KToodS5wdXNoKChkW3BdPDwyNHxkW3ArMV08PDE2fGRbcCsyXTw8OHxkW3ArM10pLzY1NTM2KSxwKz00KX1nJiYodS5sZW5ndGg9MCl9fShlKX12YXIgRj1bXSxQPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0KXtkKHRoaXMsZSksdGhpcy5jb25zdHJ1Y3Rvcj09PWUmJigwLG4udW5yZWFjaGFibGUpKCJDYW5ub3QgaW5pdGlhbGl6ZSBDb21waWxlZEZvbnQuIiksdGhpcy5mb250TWF0cml4PXQsdGhpcy5jb21waWxlZEdseXBocz1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMuY29tcGlsZWRDaGFyQ29kZVRvR2x5cGhJZD1PYmplY3QuY3JlYXRlKG51bGwpfXJldHVybiBnKGUsW3trZXk6ImdldFBhdGhKcyIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9Tyh0aGlzLmNtYXAsZSkscj10LmNoYXJDb2RlLG49dC5nbHlwaElkLGE9dGhpcy5jb21waWxlZEdseXBoc1tuXTtpZighYSl0cnl7YT10aGlzLmNvbXBpbGVHbHlwaCh0aGlzLmdseXBoc1tuXSxuKSx0aGlzLmNvbXBpbGVkR2x5cGhzW25dPWF9Y2F0Y2goZSl7dGhyb3cgdGhpcy5jb21waWxlZEdseXBoc1tuXT1GLHZvaWQgMD09PXRoaXMuY29tcGlsZWRDaGFyQ29kZVRvR2x5cGhJZFtyXSYmKHRoaXMuY29tcGlsZWRDaGFyQ29kZVRvR2x5cGhJZFtyXT1uKSxlfXJldHVybiB2b2lkIDA9PT10aGlzLmNvbXBpbGVkQ2hhckNvZGVUb0dseXBoSWRbcl0mJih0aGlzLmNvbXBpbGVkQ2hhckNvZGVUb0dseXBoSWRbcl09biksYX19LHtrZXk6ImNvbXBpbGVHbHlwaCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtpZighZXx8MD09PWUubGVuZ3RofHwxND09PWVbMF0pcmV0dXJuIEY7dmFyIHI9dGhpcy5mb250TWF0cml4O2lmKHRoaXMuaXNDRkZDSURGb250KXt2YXIgYT10aGlzLmZkU2VsZWN0LmdldEZESW5kZXgodCk7YT49MCYmYTx0aGlzLmZkQXJyYXkubGVuZ3RoP3I9dGhpcy5mZEFycmF5W2FdLmdldEJ5TmFtZSgiRm9udE1hdHJpeCIpfHxuLkZPTlRfSURFTlRJVFlfTUFUUklYOigwLG4ud2FybikoIkludmFsaWQgZmQgaW5kZXggZm9yIGdseXBoIGluZGV4LiIpfXZhciBpPVt7Y21kOiJzYXZlIn0se2NtZDoidHJhbnNmb3JtIixhcmdzOnIuc2xpY2UoKX0se2NtZDoic2NhbGUiLGFyZ3M6WyJzaXplIiwiLXNpemUiXX1dO3JldHVybiB0aGlzLmNvbXBpbGVHbHlwaEltcGwoZSxpLHQpLGkucHVzaCh7Y21kOiJyZXN0b3JlIn0pLGl9fSx7a2V5OiJjb21waWxlR2x5cGhJbXBsIix2YWx1ZTpmdW5jdGlvbigpeygwLG4udW5yZWFjaGFibGUpKCJDaGlsZHJlbiBjbGFzc2VzIHNob3VsZCBpbXBsZW1lbnQgdGhpcy4iKX19LHtrZXk6Imhhc0J1aWx0UGF0aCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9Tyh0aGlzLmNtYXAsZSkscj10LmNoYXJDb2RlLG49dC5nbHlwaElkO3JldHVybiB2b2lkIDAhPT10aGlzLmNvbXBpbGVkR2x5cGhzW25dJiZ2b2lkIDAhPT10aGlzLmNvbXBpbGVkQ2hhckNvZGVUb0dseXBoSWRbcl19fV0pLGV9KCksVD1mdW5jdGlvbihlKXtjKHIsZSk7dmFyIHQ9bChyKTtmdW5jdGlvbiByKGUsbixhKXt2YXIgaTtyZXR1cm4gZCh0aGlzLHIpLChpPXQuY2FsbCh0aGlzLGF8fFs0ODhlLTYsMCwwLDQ4OGUtNiwwLDBdKSkuZ2x5cGhzPWUsaS5jbWFwPW4saX1yZXR1cm4gZyhyLFt7a2V5OiJjb21waWxlR2x5cGhJbXBsIix2YWx1ZTpmdW5jdGlvbihlLHQpe0EoZSx0LHRoaXMpfX1dKSxyfShQKSxJPWZ1bmN0aW9uKGUpe2MocixlKTt2YXIgdD1sKHIpO2Z1bmN0aW9uIHIoZSxuLGEsbyl7dmFyIHM7cmV0dXJuIGQodGhpcyxyKSwocz10LmNhbGwodGhpcyxhfHxbLjAwMSwwLDAsLjAwMSwwLDBdKSkuZ2x5cGhzPWUuZ2x5cGhzLHMuZ3N1YnJzPWUuZ3N1YnJzfHxbXSxzLnN1YnJzPWUuc3VicnN8fFtdLHMuY21hcD1uLHMuZ2x5cGhOYW1lTWFwPW98fCgwLGkuZ2V0R2x5cGhzVW5pY29kZSkoKSxzLmdzdWJyc0JpYXM9ayhzLmdzdWJycykscy5zdWJyc0JpYXM9ayhzLnN1YnJzKSxzLmlzQ0ZGQ0lERm9udD1lLmlzQ0ZGQ0lERm9udCxzLmZkU2VsZWN0PWUuZmRTZWxlY3Qscy5mZEFycmF5PWUuZmRBcnJheSxzfXJldHVybiBnKHIsW3trZXk6ImNvbXBpbGVHbHlwaEltcGwiLHZhbHVlOmZ1bmN0aW9uKGUsdCxyKXtDKGUsdCx0aGlzLHIpfX1dKSxyfShQKSxFPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe2QodGhpcyxlKX1yZXR1cm4gZyhlLG51bGwsW3trZXk6ImNyZWF0ZSIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtmb3IodmFyIHIsYSxpLG8scyxjLHU9bmV3IFVpbnQ4QXJyYXkoZS5kYXRhKSxsPXkodSw0KSxmPTAsaD0xMjtmPGw7ZisrLGgrPTE2KXt2YXIgZD0oMCxuLmJ5dGVzVG9TdHJpbmcpKHUuc3ViYXJyYXkoaCxoKzQpKSxwPXYodSxoKzgpLGc9dih1LGgrMTIpO3N3aXRjaChkKXtjYXNlImNtYXAiOnI9Uyh1LHApO2JyZWFrO2Nhc2UiZ2x5ZiI6YT11LnN1YmFycmF5KHAscCtnKTticmVhaztjYXNlImxvY2EiOmk9dS5zdWJhcnJheShwLHArZyk7YnJlYWs7Y2FzZSJoZWFkIjpjPXkodSxwKzE4KSxzPXkodSxwKzUwKTticmVhaztjYXNlIkNGRiAiOm89eCh1LHAscCtnLHQpfX1pZihhKXt2YXIgbT1jP1sxL2MsMCwwLDEvYywwLDBdOmUuZm9udE1hdHJpeDtyZXR1cm4gbmV3IFQoZnVuY3Rpb24oZSx0LHIpe3ZhciBuLGE7cj8obj00LGE9dik6KG49MixhPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIDIqeShlLHQpfSk7Zm9yKHZhciBpPVtdLG89YSh0LDApLHM9bjtzPHQubGVuZ3RoO3MrPW4pe3ZhciBjPWEodCxzKTtpLnB1c2goZS5zdWJhcnJheShvLGMpKSxvPWN9cmV0dXJuIGl9KGEsaSxzKSxyLG0pfXJldHVybiBuZXcgSShvLHIsZS5mb250TWF0cml4LGUuZ2x5cGhOYW1lTWFwKX19XSksZX0oKTt0LkZvbnRSZW5kZXJlckZhY3Rvcnk9RX0sKGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LmdldE1ldHJpY3M9dC5nZXRGb250QmFzaWNNZXRyaWNzPXZvaWQgMDt2YXIgbj1yKDEzNSksYT0oMCxuLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2UuQ291cmllcj02MDAsZVsiQ291cmllci1Cb2xkIl09NjAwLGVbIkNvdXJpZXItQm9sZE9ibGlxdWUiXT02MDAsZVsiQ291cmllci1PYmxpcXVlIl09NjAwLGUuSGVsdmV0aWNhPSgwLG4uZ2V0TG9va3VwVGFibGVGYWN0b3J5KSgoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNzgsZS5leGNsYW09Mjc4LGUucXVvdGVkYmw9MzU1LGUubnVtYmVyc2lnbj01NTYsZS5kb2xsYXI9NTU2LGUucGVyY2VudD04ODksZS5hbXBlcnNhbmQ9NjY3LGUucXVvdGVyaWdodD0yMjIsZS5wYXJlbmxlZnQ9MzMzLGUucGFyZW5yaWdodD0zMzMsZS5hc3Rlcmlzaz0zODksZS5wbHVzPTU4NCxlLmNvbW1hPTI3OCxlLmh5cGhlbj0zMzMsZS5wZXJpb2Q9Mjc4LGUuc2xhc2g9Mjc4LGUuemVybz01NTYsZS5vbmU9NTU2LGUudHdvPTU1NixlLnRocmVlPTU1NixlLmZvdXI9NTU2LGUuZml2ZT01NTYsZS5zaXg9NTU2LGUuc2V2ZW49NTU2LGUuZWlnaHQ9NTU2LGUubmluZT01NTYsZS5jb2xvbj0yNzgsZS5zZW1pY29sb249Mjc4LGUubGVzcz01ODQsZS5lcXVhbD01ODQsZS5ncmVhdGVyPTU4NCxlLnF1ZXN0aW9uPTU1NixlLmF0PTEwMTUsZS5BPTY2NyxlLkI9NjY3LGUuQz03MjIsZS5EPTcyMixlLkU9NjY3LGUuRj02MTEsZS5HPTc3OCxlLkg9NzIyLGUuST0yNzgsZS5KPTUwMCxlLks9NjY3LGUuTD01NTYsZS5NPTgzMyxlLk49NzIyLGUuTz03NzgsZS5QPTY2NyxlLlE9Nzc4LGUuUj03MjIsZS5TPTY2NyxlLlQ9NjExLGUuVT03MjIsZS5WPTY2NyxlLlc9OTQ0LGUuWD02NjcsZS5ZPTY2NyxlLlo9NjExLGUuYnJhY2tldGxlZnQ9Mjc4LGUuYmFja3NsYXNoPTI3OCxlLmJyYWNrZXRyaWdodD0yNzgsZS5hc2NpaWNpcmN1bT00NjksZS51bmRlcnNjb3JlPTU1NixlLnF1b3RlbGVmdD0yMjIsZS5hPTU1NixlLmI9NTU2LGUuYz01MDAsZS5kPTU1NixlLmU9NTU2LGUuZj0yNzgsZS5nPTU1NixlLmg9NTU2LGUuaT0yMjIsZS5qPTIyMixlLms9NTAwLGUubD0yMjIsZS5tPTgzMyxlLm49NTU2LGUubz01NTYsZS5wPTU1NixlLnE9NTU2LGUucj0zMzMsZS5zPTUwMCxlLnQ9Mjc4LGUudT01NTYsZS52PTUwMCxlLnc9NzIyLGUueD01MDAsZS55PTUwMCxlLno9NTAwLGUuYnJhY2VsZWZ0PTMzNCxlLmJhcj0yNjAsZS5icmFjZXJpZ2h0PTMzNCxlLmFzY2lpdGlsZGU9NTg0LGUuZXhjbGFtZG93bj0zMzMsZS5jZW50PTU1NixlLnN0ZXJsaW5nPTU1NixlLmZyYWN0aW9uPTE2NyxlLnllbj01NTYsZS5mbG9yaW49NTU2LGUuc2VjdGlvbj01NTYsZS5jdXJyZW5jeT01NTYsZS5xdW90ZXNpbmdsZT0xOTEsZS5xdW90ZWRibGxlZnQ9MzMzLGUuZ3VpbGxlbW90bGVmdD01NTYsZS5ndWlsc2luZ2xsZWZ0PTMzMyxlLmd1aWxzaW5nbHJpZ2h0PTMzMyxlLmZpPTUwMCxlLmZsPTUwMCxlLmVuZGFzaD01NTYsZS5kYWdnZXI9NTU2LGUuZGFnZ2VyZGJsPTU1NixlLnBlcmlvZGNlbnRlcmVkPTI3OCxlLnBhcmFncmFwaD01MzcsZS5idWxsZXQ9MzUwLGUucXVvdGVzaW5nbGJhc2U9MjIyLGUucXVvdGVkYmxiYXNlPTMzMyxlLnF1b3RlZGJscmlnaHQ9MzMzLGUuZ3VpbGxlbW90cmlnaHQ9NTU2LGUuZWxsaXBzaXM9MWUzLGUucGVydGhvdXNhbmQ9MWUzLGUucXVlc3Rpb25kb3duPTYxMSxlLmdyYXZlPTMzMyxlLmFjdXRlPTMzMyxlLmNpcmN1bWZsZXg9MzMzLGUudGlsZGU9MzMzLGUubWFjcm9uPTMzMyxlLmJyZXZlPTMzMyxlLmRvdGFjY2VudD0zMzMsZS5kaWVyZXNpcz0zMzMsZS5yaW5nPTMzMyxlLmNlZGlsbGE9MzMzLGUuaHVuZ2FydW1sYXV0PTMzMyxlLm9nb25laz0zMzMsZS5jYXJvbj0zMzMsZS5lbWRhc2g9MWUzLGUuQUU9MWUzLGUub3JkZmVtaW5pbmU9MzcwLGUuTHNsYXNoPTU1NixlLk9zbGFzaD03NzgsZS5PRT0xZTMsZS5vcmRtYXNjdWxpbmU9MzY1LGUuYWU9ODg5LGUuZG90bGVzc2k9Mjc4LGUubHNsYXNoPTIyMixlLm9zbGFzaD02MTEsZS5vZT05NDQsZS5nZXJtYW5kYmxzPTYxMSxlLklkaWVyZXNpcz0yNzgsZS5lYWN1dGU9NTU2LGUuYWJyZXZlPTU1NixlLnVodW5nYXJ1bWxhdXQ9NTU2LGUuZWNhcm9uPTU1NixlLllkaWVyZXNpcz02NjcsZS5kaXZpZGU9NTg0LGUuWWFjdXRlPTY2NyxlLkFjaXJjdW1mbGV4PTY2NyxlLmFhY3V0ZT01NTYsZS5VY2lyY3VtZmxleD03MjIsZS55YWN1dGU9NTAwLGUuc2NvbW1hYWNjZW50PTUwMCxlLmVjaXJjdW1mbGV4PTU1NixlLlVyaW5nPTcyMixlLlVkaWVyZXNpcz03MjIsZS5hb2dvbmVrPTU1NixlLlVhY3V0ZT03MjIsZS51b2dvbmVrPTU1NixlLkVkaWVyZXNpcz02NjcsZS5EY3JvYXQ9NzIyLGUuY29tbWFhY2NlbnQ9MjUwLGUuY29weXJpZ2h0PTczNyxlLkVtYWNyb249NjY3LGUuY2Nhcm9uPTUwMCxlLmFyaW5nPTU1NixlLk5jb21tYWFjY2VudD03MjIsZS5sYWN1dGU9MjIyLGUuYWdyYXZlPTU1NixlLlRjb21tYWFjY2VudD02MTEsZS5DYWN1dGU9NzIyLGUuYXRpbGRlPTU1NixlLkVkb3RhY2NlbnQ9NjY3LGUuc2Nhcm9uPTUwMCxlLnNjZWRpbGxhPTUwMCxlLmlhY3V0ZT0yNzgsZS5sb3plbmdlPTQ3MSxlLlJjYXJvbj03MjIsZS5HY29tbWFhY2NlbnQ9Nzc4LGUudWNpcmN1bWZsZXg9NTU2LGUuYWNpcmN1bWZsZXg9NTU2LGUuQW1hY3Jvbj02NjcsZS5yY2Fyb249MzMzLGUuY2NlZGlsbGE9NTAwLGUuWmRvdGFjY2VudD02MTEsZS5UaG9ybj02NjcsZS5PbWFjcm9uPTc3OCxlLlJhY3V0ZT03MjIsZS5TYWN1dGU9NjY3LGUuZGNhcm9uPTY0MyxlLlVtYWNyb249NzIyLGUudXJpbmc9NTU2LGUudGhyZWVzdXBlcmlvcj0zMzMsZS5PZ3JhdmU9Nzc4LGUuQWdyYXZlPTY2NyxlLkFicmV2ZT02NjcsZS5tdWx0aXBseT01ODQsZS51YWN1dGU9NTU2LGUuVGNhcm9uPTYxMSxlLnBhcnRpYWxkaWZmPTQ3NixlLnlkaWVyZXNpcz01MDAsZS5OYWN1dGU9NzIyLGUuaWNpcmN1bWZsZXg9Mjc4LGUuRWNpcmN1bWZsZXg9NjY3LGUuYWRpZXJlc2lzPTU1NixlLmVkaWVyZXNpcz01NTYsZS5jYWN1dGU9NTAwLGUubmFjdXRlPTU1NixlLnVtYWNyb249NTU2LGUuTmNhcm9uPTcyMixlLklhY3V0ZT0yNzgsZS5wbHVzbWludXM9NTg0LGUuYnJva2VuYmFyPTI2MCxlLnJlZ2lzdGVyZWQ9NzM3LGUuR2JyZXZlPTc3OCxlLklkb3RhY2NlbnQ9Mjc4LGUuc3VtbWF0aW9uPTYwMCxlLkVncmF2ZT02NjcsZS5yYWN1dGU9MzMzLGUub21hY3Jvbj01NTYsZS5aYWN1dGU9NjExLGUuWmNhcm9uPTYxMSxlLmdyZWF0ZXJlcXVhbD01NDksZS5FdGg9NzIyLGUuQ2NlZGlsbGE9NzIyLGUubGNvbW1hYWNjZW50PTIyMixlLnRjYXJvbj0zMTcsZS5lb2dvbmVrPTU1NixlLlVvZ29uZWs9NzIyLGUuQWFjdXRlPTY2NyxlLkFkaWVyZXNpcz02NjcsZS5lZ3JhdmU9NTU2LGUuemFjdXRlPTUwMCxlLmlvZ29uZWs9MjIyLGUuT2FjdXRlPTc3OCxlLm9hY3V0ZT01NTYsZS5hbWFjcm9uPTU1NixlLnNhY3V0ZT01MDAsZS5pZGllcmVzaXM9Mjc4LGUuT2NpcmN1bWZsZXg9Nzc4LGUuVWdyYXZlPTcyMixlLkRlbHRhPTYxMixlLnRob3JuPTU1NixlLnR3b3N1cGVyaW9yPTMzMyxlLk9kaWVyZXNpcz03NzgsZS5tdT01NTYsZS5pZ3JhdmU9Mjc4LGUub2h1bmdhcnVtbGF1dD01NTYsZS5Fb2dvbmVrPTY2NyxlLmRjcm9hdD01NTYsZS50aHJlZXF1YXJ0ZXJzPTgzNCxlLlNjZWRpbGxhPTY2NyxlLmxjYXJvbj0yOTksZS5LY29tbWFhY2NlbnQ9NjY3LGUuTGFjdXRlPTU1NixlLnRyYWRlbWFyaz0xZTMsZS5lZG90YWNjZW50PTU1NixlLklncmF2ZT0yNzgsZS5JbWFjcm9uPTI3OCxlLkxjYXJvbj01NTYsZS5vbmVoYWxmPTgzNCxlLmxlc3NlcXVhbD01NDksZS5vY2lyY3VtZmxleD01NTYsZS5udGlsZGU9NTU2LGUuVWh1bmdhcnVtbGF1dD03MjIsZS5FYWN1dGU9NjY3LGUuZW1hY3Jvbj01NTYsZS5nYnJldmU9NTU2LGUub25lcXVhcnRlcj04MzQsZS5TY2Fyb249NjY3LGUuU2NvbW1hYWNjZW50PTY2NyxlLk9odW5nYXJ1bWxhdXQ9Nzc4LGUuZGVncmVlPTQwMCxlLm9ncmF2ZT01NTYsZS5DY2Fyb249NzIyLGUudWdyYXZlPTU1NixlLnJhZGljYWw9NDUzLGUuRGNhcm9uPTcyMixlLnJjb21tYWFjY2VudD0zMzMsZS5OdGlsZGU9NzIyLGUub3RpbGRlPTU1NixlLlJjb21tYWFjY2VudD03MjIsZS5MY29tbWFhY2NlbnQ9NTU2LGUuQXRpbGRlPTY2NyxlLkFvZ29uZWs9NjY3LGUuQXJpbmc9NjY3LGUuT3RpbGRlPTc3OCxlLnpkb3RhY2NlbnQ9NTAwLGUuRWNhcm9uPTY2NyxlLklvZ29uZWs9Mjc4LGUua2NvbW1hYWNjZW50PTUwMCxlLm1pbnVzPTU4NCxlLkljaXJjdW1mbGV4PTI3OCxlLm5jYXJvbj01NTYsZS50Y29tbWFhY2NlbnQ9Mjc4LGUubG9naWNhbG5vdD01ODQsZS5vZGllcmVzaXM9NTU2LGUudWRpZXJlc2lzPTU1NixlLm5vdGVxdWFsPTU0OSxlLmdjb21tYWFjY2VudD01NTYsZS5ldGg9NTU2LGUuemNhcm9uPTUwMCxlLm5jb21tYWFjY2VudD01NTYsZS5vbmVzdXBlcmlvcj0zMzMsZS5pbWFjcm9uPTI3OCxlLkV1cm89NTU2fSkpLGVbIkhlbHZldGljYS1Cb2xkIl09KDAsbi5nZXRMb29rdXBUYWJsZUZhY3RvcnkpKChmdW5jdGlvbihlKXtlLnNwYWNlPTI3OCxlLmV4Y2xhbT0zMzMsZS5xdW90ZWRibD00NzQsZS5udW1iZXJzaWduPTU1NixlLmRvbGxhcj01NTYsZS5wZXJjZW50PTg4OSxlLmFtcGVyc2FuZD03MjIsZS5xdW90ZXJpZ2h0PTI3OCxlLnBhcmVubGVmdD0zMzMsZS5wYXJlbnJpZ2h0PTMzMyxlLmFzdGVyaXNrPTM4OSxlLnBsdXM9NTg0LGUuY29tbWE9Mjc4LGUuaHlwaGVuPTMzMyxlLnBlcmlvZD0yNzgsZS5zbGFzaD0yNzgsZS56ZXJvPTU1NixlLm9uZT01NTYsZS50d289NTU2LGUudGhyZWU9NTU2LGUuZm91cj01NTYsZS5maXZlPTU1NixlLnNpeD01NTYsZS5zZXZlbj01NTYsZS5laWdodD01NTYsZS5uaW5lPTU1NixlLmNvbG9uPTMzMyxlLnNlbWljb2xvbj0zMzMsZS5sZXNzPTU4NCxlLmVxdWFsPTU4NCxlLmdyZWF0ZXI9NTg0LGUucXVlc3Rpb249NjExLGUuYXQ9OTc1LGUuQT03MjIsZS5CPTcyMixlLkM9NzIyLGUuRD03MjIsZS5FPTY2NyxlLkY9NjExLGUuRz03NzgsZS5IPTcyMixlLkk9Mjc4LGUuSj01NTYsZS5LPTcyMixlLkw9NjExLGUuTT04MzMsZS5OPTcyMixlLk89Nzc4LGUuUD02NjcsZS5RPTc3OCxlLlI9NzIyLGUuUz02NjcsZS5UPTYxMSxlLlU9NzIyLGUuVj02NjcsZS5XPTk0NCxlLlg9NjY3LGUuWT02NjcsZS5aPTYxMSxlLmJyYWNrZXRsZWZ0PTMzMyxlLmJhY2tzbGFzaD0yNzgsZS5icmFja2V0cmlnaHQ9MzMzLGUuYXNjaWljaXJjdW09NTg0LGUudW5kZXJzY29yZT01NTYsZS5xdW90ZWxlZnQ9Mjc4LGUuYT01NTYsZS5iPTYxMSxlLmM9NTU2LGUuZD02MTEsZS5lPTU1NixlLmY9MzMzLGUuZz02MTEsZS5oPTYxMSxlLmk9Mjc4LGUuaj0yNzgsZS5rPTU1NixlLmw9Mjc4LGUubT04ODksZS5uPTYxMSxlLm89NjExLGUucD02MTEsZS5xPTYxMSxlLnI9Mzg5LGUucz01NTYsZS50PTMzMyxlLnU9NjExLGUudj01NTYsZS53PTc3OCxlLng9NTU2LGUueT01NTYsZS56PTUwMCxlLmJyYWNlbGVmdD0zODksZS5iYXI9MjgwLGUuYnJhY2VyaWdodD0zODksZS5hc2NpaXRpbGRlPTU4NCxlLmV4Y2xhbWRvd249MzMzLGUuY2VudD01NTYsZS5zdGVybGluZz01NTYsZS5mcmFjdGlvbj0xNjcsZS55ZW49NTU2LGUuZmxvcmluPTU1NixlLnNlY3Rpb249NTU2LGUuY3VycmVuY3k9NTU2LGUucXVvdGVzaW5nbGU9MjM4LGUucXVvdGVkYmxsZWZ0PTUwMCxlLmd1aWxsZW1vdGxlZnQ9NTU2LGUuZ3VpbHNpbmdsbGVmdD0zMzMsZS5ndWlsc2luZ2xyaWdodD0zMzMsZS5maT02MTEsZS5mbD02MTEsZS5lbmRhc2g9NTU2LGUuZGFnZ2VyPTU1NixlLmRhZ2dlcmRibD01NTYsZS5wZXJpb2RjZW50ZXJlZD0yNzgsZS5wYXJhZ3JhcGg9NTU2LGUuYnVsbGV0PTM1MCxlLnF1b3Rlc2luZ2xiYXNlPTI3OCxlLnF1b3RlZGJsYmFzZT01MDAsZS5xdW90ZWRibHJpZ2h0PTUwMCxlLmd1aWxsZW1vdHJpZ2h0PTU1NixlLmVsbGlwc2lzPTFlMyxlLnBlcnRob3VzYW5kPTFlMyxlLnF1ZXN0aW9uZG93bj02MTEsZS5ncmF2ZT0zMzMsZS5hY3V0ZT0zMzMsZS5jaXJjdW1mbGV4PTMzMyxlLnRpbGRlPTMzMyxlLm1hY3Jvbj0zMzMsZS5icmV2ZT0zMzMsZS5kb3RhY2NlbnQ9MzMzLGUuZGllcmVzaXM9MzMzLGUucmluZz0zMzMsZS5jZWRpbGxhPTMzMyxlLmh1bmdhcnVtbGF1dD0zMzMsZS5vZ29uZWs9MzMzLGUuY2Fyb249MzMzLGUuZW1kYXNoPTFlMyxlLkFFPTFlMyxlLm9yZGZlbWluaW5lPTM3MCxlLkxzbGFzaD02MTEsZS5Pc2xhc2g9Nzc4LGUuT0U9MWUzLGUub3JkbWFzY3VsaW5lPTM2NSxlLmFlPTg4OSxlLmRvdGxlc3NpPTI3OCxlLmxzbGFzaD0yNzgsZS5vc2xhc2g9NjExLGUub2U9OTQ0LGUuZ2VybWFuZGJscz02MTEsZS5JZGllcmVzaXM9Mjc4LGUuZWFjdXRlPTU1NixlLmFicmV2ZT01NTYsZS51aHVuZ2FydW1sYXV0PTYxMSxlLmVjYXJvbj01NTYsZS5ZZGllcmVzaXM9NjY3LGUuZGl2aWRlPTU4NCxlLllhY3V0ZT02NjcsZS5BY2lyY3VtZmxleD03MjIsZS5hYWN1dGU9NTU2LGUuVWNpcmN1bWZsZXg9NzIyLGUueWFjdXRlPTU1NixlLnNjb21tYWFjY2VudD01NTYsZS5lY2lyY3VtZmxleD01NTYsZS5VcmluZz03MjIsZS5VZGllcmVzaXM9NzIyLGUuYW9nb25laz01NTYsZS5VYWN1dGU9NzIyLGUudW9nb25laz02MTEsZS5FZGllcmVzaXM9NjY3LGUuRGNyb2F0PTcyMixlLmNvbW1hYWNjZW50PTI1MCxlLmNvcHlyaWdodD03MzcsZS5FbWFjcm9uPTY2NyxlLmNjYXJvbj01NTYsZS5hcmluZz01NTYsZS5OY29tbWFhY2NlbnQ9NzIyLGUubGFjdXRlPTI3OCxlLmFncmF2ZT01NTYsZS5UY29tbWFhY2NlbnQ9NjExLGUuQ2FjdXRlPTcyMixlLmF0aWxkZT01NTYsZS5FZG90YWNjZW50PTY2NyxlLnNjYXJvbj01NTYsZS5zY2VkaWxsYT01NTYsZS5pYWN1dGU9Mjc4LGUubG96ZW5nZT00OTQsZS5SY2Fyb249NzIyLGUuR2NvbW1hYWNjZW50PTc3OCxlLnVjaXJjdW1mbGV4PTYxMSxlLmFjaXJjdW1mbGV4PTU1NixlLkFtYWNyb249NzIyLGUucmNhcm9uPTM4OSxlLmNjZWRpbGxhPTU1NixlLlpkb3RhY2NlbnQ9NjExLGUuVGhvcm49NjY3LGUuT21hY3Jvbj03NzgsZS5SYWN1dGU9NzIyLGUuU2FjdXRlPTY2NyxlLmRjYXJvbj03NDMsZS5VbWFjcm9uPTcyMixlLnVyaW5nPTYxMSxlLnRocmVlc3VwZXJpb3I9MzMzLGUuT2dyYXZlPTc3OCxlLkFncmF2ZT03MjIsZS5BYnJldmU9NzIyLGUubXVsdGlwbHk9NTg0LGUudWFjdXRlPTYxMSxlLlRjYXJvbj02MTEsZS5wYXJ0aWFsZGlmZj00OTQsZS55ZGllcmVzaXM9NTU2LGUuTmFjdXRlPTcyMixlLmljaXJjdW1mbGV4PTI3OCxlLkVjaXJjdW1mbGV4PTY2NyxlLmFkaWVyZXNpcz01NTYsZS5lZGllcmVzaXM9NTU2LGUuY2FjdXRlPTU1NixlLm5hY3V0ZT02MTEsZS51bWFjcm9uPTYxMSxlLk5jYXJvbj03MjIsZS5JYWN1dGU9Mjc4LGUucGx1c21pbnVzPTU4NCxlLmJyb2tlbmJhcj0yODAsZS5yZWdpc3RlcmVkPTczNyxlLkdicmV2ZT03NzgsZS5JZG90YWNjZW50PTI3OCxlLnN1bW1hdGlvbj02MDAsZS5FZ3JhdmU9NjY3LGUucmFjdXRlPTM4OSxlLm9tYWNyb249NjExLGUuWmFjdXRlPTYxMSxlLlpjYXJvbj02MTEsZS5ncmVhdGVyZXF1YWw9NTQ5LGUuRXRoPTcyMixlLkNjZWRpbGxhPTcyMixlLmxjb21tYWFjY2VudD0yNzgsZS50Y2Fyb249Mzg5LGUuZW9nb25laz01NTYsZS5Vb2dvbmVrPTcyMixlLkFhY3V0ZT03MjIsZS5BZGllcmVzaXM9NzIyLGUuZWdyYXZlPTU1NixlLnphY3V0ZT01MDAsZS5pb2dvbmVrPTI3OCxlLk9hY3V0ZT03NzgsZS5vYWN1dGU9NjExLGUuYW1hY3Jvbj01NTYsZS5zYWN1dGU9NTU2LGUuaWRpZXJlc2lzPTI3OCxlLk9jaXJjdW1mbGV4PTc3OCxlLlVncmF2ZT03MjIsZS5EZWx0YT02MTIsZS50aG9ybj02MTEsZS50d29zdXBlcmlvcj0zMzMsZS5PZGllcmVzaXM9Nzc4LGUubXU9NjExLGUuaWdyYXZlPTI3OCxlLm9odW5nYXJ1bWxhdXQ9NjExLGUuRW9nb25laz02NjcsZS5kY3JvYXQ9NjExLGUudGhyZWVxdWFydGVycz04MzQsZS5TY2VkaWxsYT02NjcsZS5sY2Fyb249NDAwLGUuS2NvbW1hYWNjZW50PTcyMixlLkxhY3V0ZT02MTEsZS50cmFkZW1hcms9MWUzLGUuZWRvdGFjY2VudD01NTYsZS5JZ3JhdmU9Mjc4LGUuSW1hY3Jvbj0yNzgsZS5MY2Fyb249NjExLGUub25laGFsZj04MzQsZS5sZXNzZXF1YWw9NTQ5LGUub2NpcmN1bWZsZXg9NjExLGUubnRpbGRlPTYxMSxlLlVodW5nYXJ1bWxhdXQ9NzIyLGUuRWFjdXRlPTY2NyxlLmVtYWNyb249NTU2LGUuZ2JyZXZlPTYxMSxlLm9uZXF1YXJ0ZXI9ODM0LGUuU2Nhcm9uPTY2NyxlLlNjb21tYWFjY2VudD02NjcsZS5PaHVuZ2FydW1sYXV0PTc3OCxlLmRlZ3JlZT00MDAsZS5vZ3JhdmU9NjExLGUuQ2Nhcm9uPTcyMixlLnVncmF2ZT02MTEsZS5yYWRpY2FsPTU0OSxlLkRjYXJvbj03MjIsZS5yY29tbWFhY2NlbnQ9Mzg5LGUuTnRpbGRlPTcyMixlLm90aWxkZT02MTEsZS5SY29tbWFhY2NlbnQ9NzIyLGUuTGNvbW1hYWNjZW50PTYxMSxlLkF0aWxkZT03MjIsZS5Bb2dvbmVrPTcyMixlLkFyaW5nPTcyMixlLk90aWxkZT03NzgsZS56ZG90YWNjZW50PTUwMCxlLkVjYXJvbj02NjcsZS5Jb2dvbmVrPTI3OCxlLmtjb21tYWFjY2VudD01NTYsZS5taW51cz01ODQsZS5JY2lyY3VtZmxleD0yNzgsZS5uY2Fyb249NjExLGUudGNvbW1hYWNjZW50PTMzMyxlLmxvZ2ljYWxub3Q9NTg0LGUub2RpZXJlc2lzPTYxMSxlLnVkaWVyZXNpcz02MTEsZS5ub3RlcXVhbD01NDksZS5nY29tbWFhY2NlbnQ9NjExLGUuZXRoPTYxMSxlLnpjYXJvbj01MDAsZS5uY29tbWFhY2NlbnQ9NjExLGUub25lc3VwZXJpb3I9MzMzLGUuaW1hY3Jvbj0yNzgsZS5FdXJvPTU1Nn0pKSxlWyJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiXT0oMCxuLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2Uuc3BhY2U9Mjc4LGUuZXhjbGFtPTMzMyxlLnF1b3RlZGJsPTQ3NCxlLm51bWJlcnNpZ249NTU2LGUuZG9sbGFyPTU1NixlLnBlcmNlbnQ9ODg5LGUuYW1wZXJzYW5kPTcyMixlLnF1b3RlcmlnaHQ9Mjc4LGUucGFyZW5sZWZ0PTMzMyxlLnBhcmVucmlnaHQ9MzMzLGUuYXN0ZXJpc2s9Mzg5LGUucGx1cz01ODQsZS5jb21tYT0yNzgsZS5oeXBoZW49MzMzLGUucGVyaW9kPTI3OCxlLnNsYXNoPTI3OCxlLnplcm89NTU2LGUub25lPTU1NixlLnR3bz01NTYsZS50aHJlZT01NTYsZS5mb3VyPTU1NixlLmZpdmU9NTU2LGUuc2l4PTU1NixlLnNldmVuPTU1NixlLmVpZ2h0PTU1NixlLm5pbmU9NTU2LGUuY29sb249MzMzLGUuc2VtaWNvbG9uPTMzMyxlLmxlc3M9NTg0LGUuZXF1YWw9NTg0LGUuZ3JlYXRlcj01ODQsZS5xdWVzdGlvbj02MTEsZS5hdD05NzUsZS5BPTcyMixlLkI9NzIyLGUuQz03MjIsZS5EPTcyMixlLkU9NjY3LGUuRj02MTEsZS5HPTc3OCxlLkg9NzIyLGUuST0yNzgsZS5KPTU1NixlLks9NzIyLGUuTD02MTEsZS5NPTgzMyxlLk49NzIyLGUuTz03NzgsZS5QPTY2NyxlLlE9Nzc4LGUuUj03MjIsZS5TPTY2NyxlLlQ9NjExLGUuVT03MjIsZS5WPTY2NyxlLlc9OTQ0LGUuWD02NjcsZS5ZPTY2NyxlLlo9NjExLGUuYnJhY2tldGxlZnQ9MzMzLGUuYmFja3NsYXNoPTI3OCxlLmJyYWNrZXRyaWdodD0zMzMsZS5hc2NpaWNpcmN1bT01ODQsZS51bmRlcnNjb3JlPTU1NixlLnF1b3RlbGVmdD0yNzgsZS5hPTU1NixlLmI9NjExLGUuYz01NTYsZS5kPTYxMSxlLmU9NTU2LGUuZj0zMzMsZS5nPTYxMSxlLmg9NjExLGUuaT0yNzgsZS5qPTI3OCxlLms9NTU2LGUubD0yNzgsZS5tPTg4OSxlLm49NjExLGUubz02MTEsZS5wPTYxMSxlLnE9NjExLGUucj0zODksZS5zPTU1NixlLnQ9MzMzLGUudT02MTEsZS52PTU1NixlLnc9Nzc4LGUueD01NTYsZS55PTU1NixlLno9NTAwLGUuYnJhY2VsZWZ0PTM4OSxlLmJhcj0yODAsZS5icmFjZXJpZ2h0PTM4OSxlLmFzY2lpdGlsZGU9NTg0LGUuZXhjbGFtZG93bj0zMzMsZS5jZW50PTU1NixlLnN0ZXJsaW5nPTU1NixlLmZyYWN0aW9uPTE2NyxlLnllbj01NTYsZS5mbG9yaW49NTU2LGUuc2VjdGlvbj01NTYsZS5jdXJyZW5jeT01NTYsZS5xdW90ZXNpbmdsZT0yMzgsZS5xdW90ZWRibGxlZnQ9NTAwLGUuZ3VpbGxlbW90bGVmdD01NTYsZS5ndWlsc2luZ2xsZWZ0PTMzMyxlLmd1aWxzaW5nbHJpZ2h0PTMzMyxlLmZpPTYxMSxlLmZsPTYxMSxlLmVuZGFzaD01NTYsZS5kYWdnZXI9NTU2LGUuZGFnZ2VyZGJsPTU1NixlLnBlcmlvZGNlbnRlcmVkPTI3OCxlLnBhcmFncmFwaD01NTYsZS5idWxsZXQ9MzUwLGUucXVvdGVzaW5nbGJhc2U9Mjc4LGUucXVvdGVkYmxiYXNlPTUwMCxlLnF1b3RlZGJscmlnaHQ9NTAwLGUuZ3VpbGxlbW90cmlnaHQ9NTU2LGUuZWxsaXBzaXM9MWUzLGUucGVydGhvdXNhbmQ9MWUzLGUucXVlc3Rpb25kb3duPTYxMSxlLmdyYXZlPTMzMyxlLmFjdXRlPTMzMyxlLmNpcmN1bWZsZXg9MzMzLGUudGlsZGU9MzMzLGUubWFjcm9uPTMzMyxlLmJyZXZlPTMzMyxlLmRvdGFjY2VudD0zMzMsZS5kaWVyZXNpcz0zMzMsZS5yaW5nPTMzMyxlLmNlZGlsbGE9MzMzLGUuaHVuZ2FydW1sYXV0PTMzMyxlLm9nb25laz0zMzMsZS5jYXJvbj0zMzMsZS5lbWRhc2g9MWUzLGUuQUU9MWUzLGUub3JkZmVtaW5pbmU9MzcwLGUuTHNsYXNoPTYxMSxlLk9zbGFzaD03NzgsZS5PRT0xZTMsZS5vcmRtYXNjdWxpbmU9MzY1LGUuYWU9ODg5LGUuZG90bGVzc2k9Mjc4LGUubHNsYXNoPTI3OCxlLm9zbGFzaD02MTEsZS5vZT05NDQsZS5nZXJtYW5kYmxzPTYxMSxlLklkaWVyZXNpcz0yNzgsZS5lYWN1dGU9NTU2LGUuYWJyZXZlPTU1NixlLnVodW5nYXJ1bWxhdXQ9NjExLGUuZWNhcm9uPTU1NixlLllkaWVyZXNpcz02NjcsZS5kaXZpZGU9NTg0LGUuWWFjdXRlPTY2NyxlLkFjaXJjdW1mbGV4PTcyMixlLmFhY3V0ZT01NTYsZS5VY2lyY3VtZmxleD03MjIsZS55YWN1dGU9NTU2LGUuc2NvbW1hYWNjZW50PTU1NixlLmVjaXJjdW1mbGV4PTU1NixlLlVyaW5nPTcyMixlLlVkaWVyZXNpcz03MjIsZS5hb2dvbmVrPTU1NixlLlVhY3V0ZT03MjIsZS51b2dvbmVrPTYxMSxlLkVkaWVyZXNpcz02NjcsZS5EY3JvYXQ9NzIyLGUuY29tbWFhY2NlbnQ9MjUwLGUuY29weXJpZ2h0PTczNyxlLkVtYWNyb249NjY3LGUuY2Nhcm9uPTU1NixlLmFyaW5nPTU1NixlLk5jb21tYWFjY2VudD03MjIsZS5sYWN1dGU9Mjc4LGUuYWdyYXZlPTU1NixlLlRjb21tYWFjY2VudD02MTEsZS5DYWN1dGU9NzIyLGUuYXRpbGRlPTU1NixlLkVkb3RhY2NlbnQ9NjY3LGUuc2Nhcm9uPTU1NixlLnNjZWRpbGxhPTU1NixlLmlhY3V0ZT0yNzgsZS5sb3plbmdlPTQ5NCxlLlJjYXJvbj03MjIsZS5HY29tbWFhY2NlbnQ9Nzc4LGUudWNpcmN1bWZsZXg9NjExLGUuYWNpcmN1bWZsZXg9NTU2LGUuQW1hY3Jvbj03MjIsZS5yY2Fyb249Mzg5LGUuY2NlZGlsbGE9NTU2LGUuWmRvdGFjY2VudD02MTEsZS5UaG9ybj02NjcsZS5PbWFjcm9uPTc3OCxlLlJhY3V0ZT03MjIsZS5TYWN1dGU9NjY3LGUuZGNhcm9uPTc0MyxlLlVtYWNyb249NzIyLGUudXJpbmc9NjExLGUudGhyZWVzdXBlcmlvcj0zMzMsZS5PZ3JhdmU9Nzc4LGUuQWdyYXZlPTcyMixlLkFicmV2ZT03MjIsZS5tdWx0aXBseT01ODQsZS51YWN1dGU9NjExLGUuVGNhcm9uPTYxMSxlLnBhcnRpYWxkaWZmPTQ5NCxlLnlkaWVyZXNpcz01NTYsZS5OYWN1dGU9NzIyLGUuaWNpcmN1bWZsZXg9Mjc4LGUuRWNpcmN1bWZsZXg9NjY3LGUuYWRpZXJlc2lzPTU1NixlLmVkaWVyZXNpcz01NTYsZS5jYWN1dGU9NTU2LGUubmFjdXRlPTYxMSxlLnVtYWNyb249NjExLGUuTmNhcm9uPTcyMixlLklhY3V0ZT0yNzgsZS5wbHVzbWludXM9NTg0LGUuYnJva2VuYmFyPTI4MCxlLnJlZ2lzdGVyZWQ9NzM3LGUuR2JyZXZlPTc3OCxlLklkb3RhY2NlbnQ9Mjc4LGUuc3VtbWF0aW9uPTYwMCxlLkVncmF2ZT02NjcsZS5yYWN1dGU9Mzg5LGUub21hY3Jvbj02MTEsZS5aYWN1dGU9NjExLGUuWmNhcm9uPTYxMSxlLmdyZWF0ZXJlcXVhbD01NDksZS5FdGg9NzIyLGUuQ2NlZGlsbGE9NzIyLGUubGNvbW1hYWNjZW50PTI3OCxlLnRjYXJvbj0zODksZS5lb2dvbmVrPTU1NixlLlVvZ29uZWs9NzIyLGUuQWFjdXRlPTcyMixlLkFkaWVyZXNpcz03MjIsZS5lZ3JhdmU9NTU2LGUuemFjdXRlPTUwMCxlLmlvZ29uZWs9Mjc4LGUuT2FjdXRlPTc3OCxlLm9hY3V0ZT02MTEsZS5hbWFjcm9uPTU1NixlLnNhY3V0ZT01NTYsZS5pZGllcmVzaXM9Mjc4LGUuT2NpcmN1bWZsZXg9Nzc4LGUuVWdyYXZlPTcyMixlLkRlbHRhPTYxMixlLnRob3JuPTYxMSxlLnR3b3N1cGVyaW9yPTMzMyxlLk9kaWVyZXNpcz03NzgsZS5tdT02MTEsZS5pZ3JhdmU9Mjc4LGUub2h1bmdhcnVtbGF1dD02MTEsZS5Fb2dvbmVrPTY2NyxlLmRjcm9hdD02MTEsZS50aHJlZXF1YXJ0ZXJzPTgzNCxlLlNjZWRpbGxhPTY2NyxlLmxjYXJvbj00MDAsZS5LY29tbWFhY2NlbnQ9NzIyLGUuTGFjdXRlPTYxMSxlLnRyYWRlbWFyaz0xZTMsZS5lZG90YWNjZW50PTU1NixlLklncmF2ZT0yNzgsZS5JbWFjcm9uPTI3OCxlLkxjYXJvbj02MTEsZS5vbmVoYWxmPTgzNCxlLmxlc3NlcXVhbD01NDksZS5vY2lyY3VtZmxleD02MTEsZS5udGlsZGU9NjExLGUuVWh1bmdhcnVtbGF1dD03MjIsZS5FYWN1dGU9NjY3LGUuZW1hY3Jvbj01NTYsZS5nYnJldmU9NjExLGUub25lcXVhcnRlcj04MzQsZS5TY2Fyb249NjY3LGUuU2NvbW1hYWNjZW50PTY2NyxlLk9odW5nYXJ1bWxhdXQ9Nzc4LGUuZGVncmVlPTQwMCxlLm9ncmF2ZT02MTEsZS5DY2Fyb249NzIyLGUudWdyYXZlPTYxMSxlLnJhZGljYWw9NTQ5LGUuRGNhcm9uPTcyMixlLnJjb21tYWFjY2VudD0zODksZS5OdGlsZGU9NzIyLGUub3RpbGRlPTYxMSxlLlJjb21tYWFjY2VudD03MjIsZS5MY29tbWFhY2NlbnQ9NjExLGUuQXRpbGRlPTcyMixlLkFvZ29uZWs9NzIyLGUuQXJpbmc9NzIyLGUuT3RpbGRlPTc3OCxlLnpkb3RhY2NlbnQ9NTAwLGUuRWNhcm9uPTY2NyxlLklvZ29uZWs9Mjc4LGUua2NvbW1hYWNjZW50PTU1NixlLm1pbnVzPTU4NCxlLkljaXJjdW1mbGV4PTI3OCxlLm5jYXJvbj02MTEsZS50Y29tbWFhY2NlbnQ9MzMzLGUubG9naWNhbG5vdD01ODQsZS5vZGllcmVzaXM9NjExLGUudWRpZXJlc2lzPTYxMSxlLm5vdGVxdWFsPTU0OSxlLmdjb21tYWFjY2VudD02MTEsZS5ldGg9NjExLGUuemNhcm9uPTUwMCxlLm5jb21tYWFjY2VudD02MTEsZS5vbmVzdXBlcmlvcj0zMzMsZS5pbWFjcm9uPTI3OCxlLkV1cm89NTU2fSkpLGVbIkhlbHZldGljYS1PYmxpcXVlIl09KDAsbi5nZXRMb29rdXBUYWJsZUZhY3RvcnkpKChmdW5jdGlvbihlKXtlLnNwYWNlPTI3OCxlLmV4Y2xhbT0yNzgsZS5xdW90ZWRibD0zNTUsZS5udW1iZXJzaWduPTU1NixlLmRvbGxhcj01NTYsZS5wZXJjZW50PTg4OSxlLmFtcGVyc2FuZD02NjcsZS5xdW90ZXJpZ2h0PTIyMixlLnBhcmVubGVmdD0zMzMsZS5wYXJlbnJpZ2h0PTMzMyxlLmFzdGVyaXNrPTM4OSxlLnBsdXM9NTg0LGUuY29tbWE9Mjc4LGUuaHlwaGVuPTMzMyxlLnBlcmlvZD0yNzgsZS5zbGFzaD0yNzgsZS56ZXJvPTU1NixlLm9uZT01NTYsZS50d289NTU2LGUudGhyZWU9NTU2LGUuZm91cj01NTYsZS5maXZlPTU1NixlLnNpeD01NTYsZS5zZXZlbj01NTYsZS5laWdodD01NTYsZS5uaW5lPTU1NixlLmNvbG9uPTI3OCxlLnNlbWljb2xvbj0yNzgsZS5sZXNzPTU4NCxlLmVxdWFsPTU4NCxlLmdyZWF0ZXI9NTg0LGUucXVlc3Rpb249NTU2LGUuYXQ9MTAxNSxlLkE9NjY3LGUuQj02NjcsZS5DPTcyMixlLkQ9NzIyLGUuRT02NjcsZS5GPTYxMSxlLkc9Nzc4LGUuSD03MjIsZS5JPTI3OCxlLko9NTAwLGUuSz02NjcsZS5MPTU1NixlLk09ODMzLGUuTj03MjIsZS5PPTc3OCxlLlA9NjY3LGUuUT03NzgsZS5SPTcyMixlLlM9NjY3LGUuVD02MTEsZS5VPTcyMixlLlY9NjY3LGUuVz05NDQsZS5YPTY2NyxlLlk9NjY3LGUuWj02MTEsZS5icmFja2V0bGVmdD0yNzgsZS5iYWNrc2xhc2g9Mjc4LGUuYnJhY2tldHJpZ2h0PTI3OCxlLmFzY2lpY2lyY3VtPTQ2OSxlLnVuZGVyc2NvcmU9NTU2LGUucXVvdGVsZWZ0PTIyMixlLmE9NTU2LGUuYj01NTYsZS5jPTUwMCxlLmQ9NTU2LGUuZT01NTYsZS5mPTI3OCxlLmc9NTU2LGUuaD01NTYsZS5pPTIyMixlLmo9MjIyLGUuaz01MDAsZS5sPTIyMixlLm09ODMzLGUubj01NTYsZS5vPTU1NixlLnA9NTU2LGUucT01NTYsZS5yPTMzMyxlLnM9NTAwLGUudD0yNzgsZS51PTU1NixlLnY9NTAwLGUudz03MjIsZS54PTUwMCxlLnk9NTAwLGUuej01MDAsZS5icmFjZWxlZnQ9MzM0LGUuYmFyPTI2MCxlLmJyYWNlcmlnaHQ9MzM0LGUuYXNjaWl0aWxkZT01ODQsZS5leGNsYW1kb3duPTMzMyxlLmNlbnQ9NTU2LGUuc3Rlcmxpbmc9NTU2LGUuZnJhY3Rpb249MTY3LGUueWVuPTU1NixlLmZsb3Jpbj01NTYsZS5zZWN0aW9uPTU1NixlLmN1cnJlbmN5PTU1NixlLnF1b3Rlc2luZ2xlPTE5MSxlLnF1b3RlZGJsbGVmdD0zMzMsZS5ndWlsbGVtb3RsZWZ0PTU1NixlLmd1aWxzaW5nbGxlZnQ9MzMzLGUuZ3VpbHNpbmdscmlnaHQ9MzMzLGUuZmk9NTAwLGUuZmw9NTAwLGUuZW5kYXNoPTU1NixlLmRhZ2dlcj01NTYsZS5kYWdnZXJkYmw9NTU2LGUucGVyaW9kY2VudGVyZWQ9Mjc4LGUucGFyYWdyYXBoPTUzNyxlLmJ1bGxldD0zNTAsZS5xdW90ZXNpbmdsYmFzZT0yMjIsZS5xdW90ZWRibGJhc2U9MzMzLGUucXVvdGVkYmxyaWdodD0zMzMsZS5ndWlsbGVtb3RyaWdodD01NTYsZS5lbGxpcHNpcz0xZTMsZS5wZXJ0aG91c2FuZD0xZTMsZS5xdWVzdGlvbmRvd249NjExLGUuZ3JhdmU9MzMzLGUuYWN1dGU9MzMzLGUuY2lyY3VtZmxleD0zMzMsZS50aWxkZT0zMzMsZS5tYWNyb249MzMzLGUuYnJldmU9MzMzLGUuZG90YWNjZW50PTMzMyxlLmRpZXJlc2lzPTMzMyxlLnJpbmc9MzMzLGUuY2VkaWxsYT0zMzMsZS5odW5nYXJ1bWxhdXQ9MzMzLGUub2dvbmVrPTMzMyxlLmNhcm9uPTMzMyxlLmVtZGFzaD0xZTMsZS5BRT0xZTMsZS5vcmRmZW1pbmluZT0zNzAsZS5Mc2xhc2g9NTU2LGUuT3NsYXNoPTc3OCxlLk9FPTFlMyxlLm9yZG1hc2N1bGluZT0zNjUsZS5hZT04ODksZS5kb3RsZXNzaT0yNzgsZS5sc2xhc2g9MjIyLGUub3NsYXNoPTYxMSxlLm9lPTk0NCxlLmdlcm1hbmRibHM9NjExLGUuSWRpZXJlc2lzPTI3OCxlLmVhY3V0ZT01NTYsZS5hYnJldmU9NTU2LGUudWh1bmdhcnVtbGF1dD01NTYsZS5lY2Fyb249NTU2LGUuWWRpZXJlc2lzPTY2NyxlLmRpdmlkZT01ODQsZS5ZYWN1dGU9NjY3LGUuQWNpcmN1bWZsZXg9NjY3LGUuYWFjdXRlPTU1NixlLlVjaXJjdW1mbGV4PTcyMixlLnlhY3V0ZT01MDAsZS5zY29tbWFhY2NlbnQ9NTAwLGUuZWNpcmN1bWZsZXg9NTU2LGUuVXJpbmc9NzIyLGUuVWRpZXJlc2lzPTcyMixlLmFvZ29uZWs9NTU2LGUuVWFjdXRlPTcyMixlLnVvZ29uZWs9NTU2LGUuRWRpZXJlc2lzPTY2NyxlLkRjcm9hdD03MjIsZS5jb21tYWFjY2VudD0yNTAsZS5jb3B5cmlnaHQ9NzM3LGUuRW1hY3Jvbj02NjcsZS5jY2Fyb249NTAwLGUuYXJpbmc9NTU2LGUuTmNvbW1hYWNjZW50PTcyMixlLmxhY3V0ZT0yMjIsZS5hZ3JhdmU9NTU2LGUuVGNvbW1hYWNjZW50PTYxMSxlLkNhY3V0ZT03MjIsZS5hdGlsZGU9NTU2LGUuRWRvdGFjY2VudD02NjcsZS5zY2Fyb249NTAwLGUuc2NlZGlsbGE9NTAwLGUuaWFjdXRlPTI3OCxlLmxvemVuZ2U9NDcxLGUuUmNhcm9uPTcyMixlLkdjb21tYWFjY2VudD03NzgsZS51Y2lyY3VtZmxleD01NTYsZS5hY2lyY3VtZmxleD01NTYsZS5BbWFjcm9uPTY2NyxlLnJjYXJvbj0zMzMsZS5jY2VkaWxsYT01MDAsZS5aZG90YWNjZW50PTYxMSxlLlRob3JuPTY2NyxlLk9tYWNyb249Nzc4LGUuUmFjdXRlPTcyMixlLlNhY3V0ZT02NjcsZS5kY2Fyb249NjQzLGUuVW1hY3Jvbj03MjIsZS51cmluZz01NTYsZS50aHJlZXN1cGVyaW9yPTMzMyxlLk9ncmF2ZT03NzgsZS5BZ3JhdmU9NjY3LGUuQWJyZXZlPTY2NyxlLm11bHRpcGx5PTU4NCxlLnVhY3V0ZT01NTYsZS5UY2Fyb249NjExLGUucGFydGlhbGRpZmY9NDc2LGUueWRpZXJlc2lzPTUwMCxlLk5hY3V0ZT03MjIsZS5pY2lyY3VtZmxleD0yNzgsZS5FY2lyY3VtZmxleD02NjcsZS5hZGllcmVzaXM9NTU2LGUuZWRpZXJlc2lzPTU1NixlLmNhY3V0ZT01MDAsZS5uYWN1dGU9NTU2LGUudW1hY3Jvbj01NTYsZS5OY2Fyb249NzIyLGUuSWFjdXRlPTI3OCxlLnBsdXNtaW51cz01ODQsZS5icm9rZW5iYXI9MjYwLGUucmVnaXN0ZXJlZD03MzcsZS5HYnJldmU9Nzc4LGUuSWRvdGFjY2VudD0yNzgsZS5zdW1tYXRpb249NjAwLGUuRWdyYXZlPTY2NyxlLnJhY3V0ZT0zMzMsZS5vbWFjcm9uPTU1NixlLlphY3V0ZT02MTEsZS5aY2Fyb249NjExLGUuZ3JlYXRlcmVxdWFsPTU0OSxlLkV0aD03MjIsZS5DY2VkaWxsYT03MjIsZS5sY29tbWFhY2NlbnQ9MjIyLGUudGNhcm9uPTMxNyxlLmVvZ29uZWs9NTU2LGUuVW9nb25laz03MjIsZS5BYWN1dGU9NjY3LGUuQWRpZXJlc2lzPTY2NyxlLmVncmF2ZT01NTYsZS56YWN1dGU9NTAwLGUuaW9nb25laz0yMjIsZS5PYWN1dGU9Nzc4LGUub2FjdXRlPTU1NixlLmFtYWNyb249NTU2LGUuc2FjdXRlPTUwMCxlLmlkaWVyZXNpcz0yNzgsZS5PY2lyY3VtZmxleD03NzgsZS5VZ3JhdmU9NzIyLGUuRGVsdGE9NjEyLGUudGhvcm49NTU2LGUudHdvc3VwZXJpb3I9MzMzLGUuT2RpZXJlc2lzPTc3OCxlLm11PTU1NixlLmlncmF2ZT0yNzgsZS5vaHVuZ2FydW1sYXV0PTU1NixlLkVvZ29uZWs9NjY3LGUuZGNyb2F0PTU1NixlLnRocmVlcXVhcnRlcnM9ODM0LGUuU2NlZGlsbGE9NjY3LGUubGNhcm9uPTI5OSxlLktjb21tYWFjY2VudD02NjcsZS5MYWN1dGU9NTU2LGUudHJhZGVtYXJrPTFlMyxlLmVkb3RhY2NlbnQ9NTU2LGUuSWdyYXZlPTI3OCxlLkltYWNyb249Mjc4LGUuTGNhcm9uPTU1NixlLm9uZWhhbGY9ODM0LGUubGVzc2VxdWFsPTU0OSxlLm9jaXJjdW1mbGV4PTU1NixlLm50aWxkZT01NTYsZS5VaHVuZ2FydW1sYXV0PTcyMixlLkVhY3V0ZT02NjcsZS5lbWFjcm9uPTU1NixlLmdicmV2ZT01NTYsZS5vbmVxdWFydGVyPTgzNCxlLlNjYXJvbj02NjcsZS5TY29tbWFhY2NlbnQ9NjY3LGUuT2h1bmdhcnVtbGF1dD03NzgsZS5kZWdyZWU9NDAwLGUub2dyYXZlPTU1NixlLkNjYXJvbj03MjIsZS51Z3JhdmU9NTU2LGUucmFkaWNhbD00NTMsZS5EY2Fyb249NzIyLGUucmNvbW1hYWNjZW50PTMzMyxlLk50aWxkZT03MjIsZS5vdGlsZGU9NTU2LGUuUmNvbW1hYWNjZW50PTcyMixlLkxjb21tYWFjY2VudD01NTYsZS5BdGlsZGU9NjY3LGUuQW9nb25laz02NjcsZS5BcmluZz02NjcsZS5PdGlsZGU9Nzc4LGUuemRvdGFjY2VudD01MDAsZS5FY2Fyb249NjY3LGUuSW9nb25laz0yNzgsZS5rY29tbWFhY2NlbnQ9NTAwLGUubWludXM9NTg0LGUuSWNpcmN1bWZsZXg9Mjc4LGUubmNhcm9uPTU1NixlLnRjb21tYWFjY2VudD0yNzgsZS5sb2dpY2Fsbm90PTU4NCxlLm9kaWVyZXNpcz01NTYsZS51ZGllcmVzaXM9NTU2LGUubm90ZXF1YWw9NTQ5LGUuZ2NvbW1hYWNjZW50PTU1NixlLmV0aD01NTYsZS56Y2Fyb249NTAwLGUubmNvbW1hYWNjZW50PTU1NixlLm9uZXN1cGVyaW9yPTMzMyxlLmltYWNyb249Mjc4LGUuRXVybz01NTZ9KSksZS5TeW1ib2w9KDAsbi5nZXRMb29rdXBUYWJsZUZhY3RvcnkpKChmdW5jdGlvbihlKXtlLnNwYWNlPTI1MCxlLmV4Y2xhbT0zMzMsZS51bml2ZXJzYWw9NzEzLGUubnVtYmVyc2lnbj01MDAsZS5leGlzdGVudGlhbD01NDksZS5wZXJjZW50PTgzMyxlLmFtcGVyc2FuZD03NzgsZS5zdWNodGhhdD00MzksZS5wYXJlbmxlZnQ9MzMzLGUucGFyZW5yaWdodD0zMzMsZS5hc3Rlcmlza21hdGg9NTAwLGUucGx1cz01NDksZS5jb21tYT0yNTAsZS5taW51cz01NDksZS5wZXJpb2Q9MjUwLGUuc2xhc2g9Mjc4LGUuemVybz01MDAsZS5vbmU9NTAwLGUudHdvPTUwMCxlLnRocmVlPTUwMCxlLmZvdXI9NTAwLGUuZml2ZT01MDAsZS5zaXg9NTAwLGUuc2V2ZW49NTAwLGUuZWlnaHQ9NTAwLGUubmluZT01MDAsZS5jb2xvbj0yNzgsZS5zZW1pY29sb249Mjc4LGUubGVzcz01NDksZS5lcXVhbD01NDksZS5ncmVhdGVyPTU0OSxlLnF1ZXN0aW9uPTQ0NCxlLmNvbmdydWVudD01NDksZS5BbHBoYT03MjIsZS5CZXRhPTY2NyxlLkNoaT03MjIsZS5EZWx0YT02MTIsZS5FcHNpbG9uPTYxMSxlLlBoaT03NjMsZS5HYW1tYT02MDMsZS5FdGE9NzIyLGUuSW90YT0zMzMsZS50aGV0YTE9NjMxLGUuS2FwcGE9NzIyLGUuTGFtYmRhPTY4NixlLk11PTg4OSxlLk51PTcyMixlLk9taWNyb249NzIyLGUuUGk9NzY4LGUuVGhldGE9NzQxLGUuUmhvPTU1NixlLlNpZ21hPTU5MixlLlRhdT02MTEsZS5VcHNpbG9uPTY5MCxlLnNpZ21hMT00MzksZS5PbWVnYT03NjgsZS5YaT02NDUsZS5Qc2k9Nzk1LGUuWmV0YT02MTEsZS5icmFja2V0bGVmdD0zMzMsZS50aGVyZWZvcmU9ODYzLGUuYnJhY2tldHJpZ2h0PTMzMyxlLnBlcnBlbmRpY3VsYXI9NjU4LGUudW5kZXJzY29yZT01MDAsZS5yYWRpY2FsZXg9NTAwLGUuYWxwaGE9NjMxLGUuYmV0YT01NDksZS5jaGk9NTQ5LGUuZGVsdGE9NDk0LGUuZXBzaWxvbj00MzksZS5waGk9NTIxLGUuZ2FtbWE9NDExLGUuZXRhPTYwMyxlLmlvdGE9MzI5LGUucGhpMT02MDMsZS5rYXBwYT01NDksZS5sYW1iZGE9NTQ5LGUubXU9NTc2LGUubnU9NTIxLGUub21pY3Jvbj01NDksZS5waT01NDksZS50aGV0YT01MjEsZS5yaG89NTQ5LGUuc2lnbWE9NjAzLGUudGF1PTQzOSxlLnVwc2lsb249NTc2LGUub21lZ2ExPTcxMyxlLm9tZWdhPTY4NixlLnhpPTQ5MyxlLnBzaT02ODYsZS56ZXRhPTQ5NCxlLmJyYWNlbGVmdD00ODAsZS5iYXI9MjAwLGUuYnJhY2VyaWdodD00ODAsZS5zaW1pbGFyPTU0OSxlLkV1cm89NzUwLGUuVXBzaWxvbjE9NjIwLGUubWludXRlPTI0NyxlLmxlc3NlcXVhbD01NDksZS5mcmFjdGlvbj0xNjcsZS5pbmZpbml0eT03MTMsZS5mbG9yaW49NTAwLGUuY2x1Yj03NTMsZS5kaWFtb25kPTc1MyxlLmhlYXJ0PTc1MyxlLnNwYWRlPTc1MyxlLmFycm93Ym90aD0xMDQyLGUuYXJyb3dsZWZ0PTk4NyxlLmFycm93dXA9NjAzLGUuYXJyb3dyaWdodD05ODcsZS5hcnJvd2Rvd249NjAzLGUuZGVncmVlPTQwMCxlLnBsdXNtaW51cz01NDksZS5zZWNvbmQ9NDExLGUuZ3JlYXRlcmVxdWFsPTU0OSxlLm11bHRpcGx5PTU0OSxlLnByb3BvcnRpb25hbD03MTMsZS5wYXJ0aWFsZGlmZj00OTQsZS5idWxsZXQ9NDYwLGUuZGl2aWRlPTU0OSxlLm5vdGVxdWFsPTU0OSxlLmVxdWl2YWxlbmNlPTU0OSxlLmFwcHJveGVxdWFsPTU0OSxlLmVsbGlwc2lzPTFlMyxlLmFycm93dmVydGV4PTYwMyxlLmFycm93aG9yaXpleD0xZTMsZS5jYXJyaWFnZXJldHVybj02NTgsZS5hbGVwaD04MjMsZS5JZnJha3R1cj02ODYsZS5SZnJha3R1cj03OTUsZS53ZWllcnN0cmFzcz05ODcsZS5jaXJjbGVtdWx0aXBseT03NjgsZS5jaXJjbGVwbHVzPTc2OCxlLmVtcHR5c2V0PTgyMyxlLmludGVyc2VjdGlvbj03NjgsZS51bmlvbj03NjgsZS5wcm9wZXJzdXBlcnNldD03MTMsZS5yZWZsZXhzdXBlcnNldD03MTMsZS5ub3RzdWJzZXQ9NzEzLGUucHJvcGVyc3Vic2V0PTcxMyxlLnJlZmxleHN1YnNldD03MTMsZS5lbGVtZW50PTcxMyxlLm5vdGVsZW1lbnQ9NzEzLGUuYW5nbGU9NzY4LGUuZ3JhZGllbnQ9NzEzLGUucmVnaXN0ZXJzZXJpZj03OTAsZS5jb3B5cmlnaHRzZXJpZj03OTAsZS50cmFkZW1hcmtzZXJpZj04OTAsZS5wcm9kdWN0PTgyMyxlLnJhZGljYWw9NTQ5LGUuZG90bWF0aD0yNTAsZS5sb2dpY2Fsbm90PTcxMyxlLmxvZ2ljYWxhbmQ9NjAzLGUubG9naWNhbG9yPTYwMyxlLmFycm93ZGJsYm90aD0xMDQyLGUuYXJyb3dkYmxsZWZ0PTk4NyxlLmFycm93ZGJsdXA9NjAzLGUuYXJyb3dkYmxyaWdodD05ODcsZS5hcnJvd2RibGRvd249NjAzLGUubG96ZW5nZT00OTQsZS5hbmdsZWxlZnQ9MzI5LGUucmVnaXN0ZXJzYW5zPTc5MCxlLmNvcHlyaWdodHNhbnM9NzkwLGUudHJhZGVtYXJrc2Fucz03ODYsZS5zdW1tYXRpb249NzEzLGUucGFyZW5sZWZ0dHA9Mzg0LGUucGFyZW5sZWZ0ZXg9Mzg0LGUucGFyZW5sZWZ0YnQ9Mzg0LGUuYnJhY2tldGxlZnR0cD0zODQsZS5icmFja2V0bGVmdGV4PTM4NCxlLmJyYWNrZXRsZWZ0YnQ9Mzg0LGUuYnJhY2VsZWZ0dHA9NDk0LGUuYnJhY2VsZWZ0bWlkPTQ5NCxlLmJyYWNlbGVmdGJ0PTQ5NCxlLmJyYWNlZXg9NDk0LGUuYW5nbGVyaWdodD0zMjksZS5pbnRlZ3JhbD0yNzQsZS5pbnRlZ3JhbHRwPTY4NixlLmludGVncmFsZXg9Njg2LGUuaW50ZWdyYWxidD02ODYsZS5wYXJlbnJpZ2h0dHA9Mzg0LGUucGFyZW5yaWdodGV4PTM4NCxlLnBhcmVucmlnaHRidD0zODQsZS5icmFja2V0cmlnaHR0cD0zODQsZS5icmFja2V0cmlnaHRleD0zODQsZS5icmFja2V0cmlnaHRidD0zODQsZS5icmFjZXJpZ2h0dHA9NDk0LGUuYnJhY2VyaWdodG1pZD00OTQsZS5icmFjZXJpZ2h0YnQ9NDk0LGUuYXBwbGU9NzkwfSkpLGVbIlRpbWVzLVJvbWFuIl09KDAsbi5nZXRMb29rdXBUYWJsZUZhY3RvcnkpKChmdW5jdGlvbihlKXtlLnNwYWNlPTI1MCxlLmV4Y2xhbT0zMzMsZS5xdW90ZWRibD00MDgsZS5udW1iZXJzaWduPTUwMCxlLmRvbGxhcj01MDAsZS5wZXJjZW50PTgzMyxlLmFtcGVyc2FuZD03NzgsZS5xdW90ZXJpZ2h0PTMzMyxlLnBhcmVubGVmdD0zMzMsZS5wYXJlbnJpZ2h0PTMzMyxlLmFzdGVyaXNrPTUwMCxlLnBsdXM9NTY0LGUuY29tbWE9MjUwLGUuaHlwaGVuPTMzMyxlLnBlcmlvZD0yNTAsZS5zbGFzaD0yNzgsZS56ZXJvPTUwMCxlLm9uZT01MDAsZS50d289NTAwLGUudGhyZWU9NTAwLGUuZm91cj01MDAsZS5maXZlPTUwMCxlLnNpeD01MDAsZS5zZXZlbj01MDAsZS5laWdodD01MDAsZS5uaW5lPTUwMCxlLmNvbG9uPTI3OCxlLnNlbWljb2xvbj0yNzgsZS5sZXNzPTU2NCxlLmVxdWFsPTU2NCxlLmdyZWF0ZXI9NTY0LGUucXVlc3Rpb249NDQ0LGUuYXQ9OTIxLGUuQT03MjIsZS5CPTY2NyxlLkM9NjY3LGUuRD03MjIsZS5FPTYxMSxlLkY9NTU2LGUuRz03MjIsZS5IPTcyMixlLkk9MzMzLGUuSj0zODksZS5LPTcyMixlLkw9NjExLGUuTT04ODksZS5OPTcyMixlLk89NzIyLGUuUD01NTYsZS5RPTcyMixlLlI9NjY3LGUuUz01NTYsZS5UPTYxMSxlLlU9NzIyLGUuVj03MjIsZS5XPTk0NCxlLlg9NzIyLGUuWT03MjIsZS5aPTYxMSxlLmJyYWNrZXRsZWZ0PTMzMyxlLmJhY2tzbGFzaD0yNzgsZS5icmFja2V0cmlnaHQ9MzMzLGUuYXNjaWljaXJjdW09NDY5LGUudW5kZXJzY29yZT01MDAsZS5xdW90ZWxlZnQ9MzMzLGUuYT00NDQsZS5iPTUwMCxlLmM9NDQ0LGUuZD01MDAsZS5lPTQ0NCxlLmY9MzMzLGUuZz01MDAsZS5oPTUwMCxlLmk9Mjc4LGUuaj0yNzgsZS5rPTUwMCxlLmw9Mjc4LGUubT03NzgsZS5uPTUwMCxlLm89NTAwLGUucD01MDAsZS5xPTUwMCxlLnI9MzMzLGUucz0zODksZS50PTI3OCxlLnU9NTAwLGUudj01MDAsZS53PTcyMixlLng9NTAwLGUueT01MDAsZS56PTQ0NCxlLmJyYWNlbGVmdD00ODAsZS5iYXI9MjAwLGUuYnJhY2VyaWdodD00ODAsZS5hc2NpaXRpbGRlPTU0MSxlLmV4Y2xhbWRvd249MzMzLGUuY2VudD01MDAsZS5zdGVybGluZz01MDAsZS5mcmFjdGlvbj0xNjcsZS55ZW49NTAwLGUuZmxvcmluPTUwMCxlLnNlY3Rpb249NTAwLGUuY3VycmVuY3k9NTAwLGUucXVvdGVzaW5nbGU9MTgwLGUucXVvdGVkYmxsZWZ0PTQ0NCxlLmd1aWxsZW1vdGxlZnQ9NTAwLGUuZ3VpbHNpbmdsbGVmdD0zMzMsZS5ndWlsc2luZ2xyaWdodD0zMzMsZS5maT01NTYsZS5mbD01NTYsZS5lbmRhc2g9NTAwLGUuZGFnZ2VyPTUwMCxlLmRhZ2dlcmRibD01MDAsZS5wZXJpb2RjZW50ZXJlZD0yNTAsZS5wYXJhZ3JhcGg9NDUzLGUuYnVsbGV0PTM1MCxlLnF1b3Rlc2luZ2xiYXNlPTMzMyxlLnF1b3RlZGJsYmFzZT00NDQsZS5xdW90ZWRibHJpZ2h0PTQ0NCxlLmd1aWxsZW1vdHJpZ2h0PTUwMCxlLmVsbGlwc2lzPTFlMyxlLnBlcnRob3VzYW5kPTFlMyxlLnF1ZXN0aW9uZG93bj00NDQsZS5ncmF2ZT0zMzMsZS5hY3V0ZT0zMzMsZS5jaXJjdW1mbGV4PTMzMyxlLnRpbGRlPTMzMyxlLm1hY3Jvbj0zMzMsZS5icmV2ZT0zMzMsZS5kb3RhY2NlbnQ9MzMzLGUuZGllcmVzaXM9MzMzLGUucmluZz0zMzMsZS5jZWRpbGxhPTMzMyxlLmh1bmdhcnVtbGF1dD0zMzMsZS5vZ29uZWs9MzMzLGUuY2Fyb249MzMzLGUuZW1kYXNoPTFlMyxlLkFFPTg4OSxlLm9yZGZlbWluaW5lPTI3NixlLkxzbGFzaD02MTEsZS5Pc2xhc2g9NzIyLGUuT0U9ODg5LGUub3JkbWFzY3VsaW5lPTMxMCxlLmFlPTY2NyxlLmRvdGxlc3NpPTI3OCxlLmxzbGFzaD0yNzgsZS5vc2xhc2g9NTAwLGUub2U9NzIyLGUuZ2VybWFuZGJscz01MDAsZS5JZGllcmVzaXM9MzMzLGUuZWFjdXRlPTQ0NCxlLmFicmV2ZT00NDQsZS51aHVuZ2FydW1sYXV0PTUwMCxlLmVjYXJvbj00NDQsZS5ZZGllcmVzaXM9NzIyLGUuZGl2aWRlPTU2NCxlLllhY3V0ZT03MjIsZS5BY2lyY3VtZmxleD03MjIsZS5hYWN1dGU9NDQ0LGUuVWNpcmN1bWZsZXg9NzIyLGUueWFjdXRlPTUwMCxlLnNjb21tYWFjY2VudD0zODksZS5lY2lyY3VtZmxleD00NDQsZS5VcmluZz03MjIsZS5VZGllcmVzaXM9NzIyLGUuYW9nb25laz00NDQsZS5VYWN1dGU9NzIyLGUudW9nb25laz01MDAsZS5FZGllcmVzaXM9NjExLGUuRGNyb2F0PTcyMixlLmNvbW1hYWNjZW50PTI1MCxlLmNvcHlyaWdodD03NjAsZS5FbWFjcm9uPTYxMSxlLmNjYXJvbj00NDQsZS5hcmluZz00NDQsZS5OY29tbWFhY2NlbnQ9NzIyLGUubGFjdXRlPTI3OCxlLmFncmF2ZT00NDQsZS5UY29tbWFhY2NlbnQ9NjExLGUuQ2FjdXRlPTY2NyxlLmF0aWxkZT00NDQsZS5FZG90YWNjZW50PTYxMSxlLnNjYXJvbj0zODksZS5zY2VkaWxsYT0zODksZS5pYWN1dGU9Mjc4LGUubG96ZW5nZT00NzEsZS5SY2Fyb249NjY3LGUuR2NvbW1hYWNjZW50PTcyMixlLnVjaXJjdW1mbGV4PTUwMCxlLmFjaXJjdW1mbGV4PTQ0NCxlLkFtYWNyb249NzIyLGUucmNhcm9uPTMzMyxlLmNjZWRpbGxhPTQ0NCxlLlpkb3RhY2NlbnQ9NjExLGUuVGhvcm49NTU2LGUuT21hY3Jvbj03MjIsZS5SYWN1dGU9NjY3LGUuU2FjdXRlPTU1NixlLmRjYXJvbj01ODgsZS5VbWFjcm9uPTcyMixlLnVyaW5nPTUwMCxlLnRocmVlc3VwZXJpb3I9MzAwLGUuT2dyYXZlPTcyMixlLkFncmF2ZT03MjIsZS5BYnJldmU9NzIyLGUubXVsdGlwbHk9NTY0LGUudWFjdXRlPTUwMCxlLlRjYXJvbj02MTEsZS5wYXJ0aWFsZGlmZj00NzYsZS55ZGllcmVzaXM9NTAwLGUuTmFjdXRlPTcyMixlLmljaXJjdW1mbGV4PTI3OCxlLkVjaXJjdW1mbGV4PTYxMSxlLmFkaWVyZXNpcz00NDQsZS5lZGllcmVzaXM9NDQ0LGUuY2FjdXRlPTQ0NCxlLm5hY3V0ZT01MDAsZS51bWFjcm9uPTUwMCxlLk5jYXJvbj03MjIsZS5JYWN1dGU9MzMzLGUucGx1c21pbnVzPTU2NCxlLmJyb2tlbmJhcj0yMDAsZS5yZWdpc3RlcmVkPTc2MCxlLkdicmV2ZT03MjIsZS5JZG90YWNjZW50PTMzMyxlLnN1bW1hdGlvbj02MDAsZS5FZ3JhdmU9NjExLGUucmFjdXRlPTMzMyxlLm9tYWNyb249NTAwLGUuWmFjdXRlPTYxMSxlLlpjYXJvbj02MTEsZS5ncmVhdGVyZXF1YWw9NTQ5LGUuRXRoPTcyMixlLkNjZWRpbGxhPTY2NyxlLmxjb21tYWFjY2VudD0yNzgsZS50Y2Fyb249MzI2LGUuZW9nb25laz00NDQsZS5Vb2dvbmVrPTcyMixlLkFhY3V0ZT03MjIsZS5BZGllcmVzaXM9NzIyLGUuZWdyYXZlPTQ0NCxlLnphY3V0ZT00NDQsZS5pb2dvbmVrPTI3OCxlLk9hY3V0ZT03MjIsZS5vYWN1dGU9NTAwLGUuYW1hY3Jvbj00NDQsZS5zYWN1dGU9Mzg5LGUuaWRpZXJlc2lzPTI3OCxlLk9jaXJjdW1mbGV4PTcyMixlLlVncmF2ZT03MjIsZS5EZWx0YT02MTIsZS50aG9ybj01MDAsZS50d29zdXBlcmlvcj0zMDAsZS5PZGllcmVzaXM9NzIyLGUubXU9NTAwLGUuaWdyYXZlPTI3OCxlLm9odW5nYXJ1bWxhdXQ9NTAwLGUuRW9nb25laz02MTEsZS5kY3JvYXQ9NTAwLGUudGhyZWVxdWFydGVycz03NTAsZS5TY2VkaWxsYT01NTYsZS5sY2Fyb249MzQ0LGUuS2NvbW1hYWNjZW50PTcyMixlLkxhY3V0ZT02MTEsZS50cmFkZW1hcms9OTgwLGUuZWRvdGFjY2VudD00NDQsZS5JZ3JhdmU9MzMzLGUuSW1hY3Jvbj0zMzMsZS5MY2Fyb249NjExLGUub25laGFsZj03NTAsZS5sZXNzZXF1YWw9NTQ5LGUub2NpcmN1bWZsZXg9NTAwLGUubnRpbGRlPTUwMCxlLlVodW5nYXJ1bWxhdXQ9NzIyLGUuRWFjdXRlPTYxMSxlLmVtYWNyb249NDQ0LGUuZ2JyZXZlPTUwMCxlLm9uZXF1YXJ0ZXI9NzUwLGUuU2Nhcm9uPTU1NixlLlNjb21tYWFjY2VudD01NTYsZS5PaHVuZ2FydW1sYXV0PTcyMixlLmRlZ3JlZT00MDAsZS5vZ3JhdmU9NTAwLGUuQ2Nhcm9uPTY2NyxlLnVncmF2ZT01MDAsZS5yYWRpY2FsPTQ1MyxlLkRjYXJvbj03MjIsZS5yY29tbWFhY2NlbnQ9MzMzLGUuTnRpbGRlPTcyMixlLm90aWxkZT01MDAsZS5SY29tbWFhY2NlbnQ9NjY3LGUuTGNvbW1hYWNjZW50PTYxMSxlLkF0aWxkZT03MjIsZS5Bb2dvbmVrPTcyMixlLkFyaW5nPTcyMixlLk90aWxkZT03MjIsZS56ZG90YWNjZW50PTQ0NCxlLkVjYXJvbj02MTEsZS5Jb2dvbmVrPTMzMyxlLmtjb21tYWFjY2VudD01MDAsZS5taW51cz01NjQsZS5JY2lyY3VtZmxleD0zMzMsZS5uY2Fyb249NTAwLGUudGNvbW1hYWNjZW50PTI3OCxlLmxvZ2ljYWxub3Q9NTY0LGUub2RpZXJlc2lzPTUwMCxlLnVkaWVyZXNpcz01MDAsZS5ub3RlcXVhbD01NDksZS5nY29tbWFhY2NlbnQ9NTAwLGUuZXRoPTUwMCxlLnpjYXJvbj00NDQsZS5uY29tbWFhY2NlbnQ9NTAwLGUub25lc3VwZXJpb3I9MzAwLGUuaW1hY3Jvbj0yNzgsZS5FdXJvPTUwMH0pKSxlWyJUaW1lcy1Cb2xkIl09KDAsbi5nZXRMb29rdXBUYWJsZUZhY3RvcnkpKChmdW5jdGlvbihlKXtlLnNwYWNlPTI1MCxlLmV4Y2xhbT0zMzMsZS5xdW90ZWRibD01NTUsZS5udW1iZXJzaWduPTUwMCxlLmRvbGxhcj01MDAsZS5wZXJjZW50PTFlMyxlLmFtcGVyc2FuZD04MzMsZS5xdW90ZXJpZ2h0PTMzMyxlLnBhcmVubGVmdD0zMzMsZS5wYXJlbnJpZ2h0PTMzMyxlLmFzdGVyaXNrPTUwMCxlLnBsdXM9NTcwLGUuY29tbWE9MjUwLGUuaHlwaGVuPTMzMyxlLnBlcmlvZD0yNTAsZS5zbGFzaD0yNzgsZS56ZXJvPTUwMCxlLm9uZT01MDAsZS50d289NTAwLGUudGhyZWU9NTAwLGUuZm91cj01MDAsZS5maXZlPTUwMCxlLnNpeD01MDAsZS5zZXZlbj01MDAsZS5laWdodD01MDAsZS5uaW5lPTUwMCxlLmNvbG9uPTMzMyxlLnNlbWljb2xvbj0zMzMsZS5sZXNzPTU3MCxlLmVxdWFsPTU3MCxlLmdyZWF0ZXI9NTcwLGUucXVlc3Rpb249NTAwLGUuYXQ9OTMwLGUuQT03MjIsZS5CPTY2NyxlLkM9NzIyLGUuRD03MjIsZS5FPTY2NyxlLkY9NjExLGUuRz03NzgsZS5IPTc3OCxlLkk9Mzg5LGUuSj01MDAsZS5LPTc3OCxlLkw9NjY3LGUuTT05NDQsZS5OPTcyMixlLk89Nzc4LGUuUD02MTEsZS5RPTc3OCxlLlI9NzIyLGUuUz01NTYsZS5UPTY2NyxlLlU9NzIyLGUuVj03MjIsZS5XPTFlMyxlLlg9NzIyLGUuWT03MjIsZS5aPTY2NyxlLmJyYWNrZXRsZWZ0PTMzMyxlLmJhY2tzbGFzaD0yNzgsZS5icmFja2V0cmlnaHQ9MzMzLGUuYXNjaWljaXJjdW09NTgxLGUudW5kZXJzY29yZT01MDAsZS5xdW90ZWxlZnQ9MzMzLGUuYT01MDAsZS5iPTU1NixlLmM9NDQ0LGUuZD01NTYsZS5lPTQ0NCxlLmY9MzMzLGUuZz01MDAsZS5oPTU1NixlLmk9Mjc4LGUuaj0zMzMsZS5rPTU1NixlLmw9Mjc4LGUubT04MzMsZS5uPTU1NixlLm89NTAwLGUucD01NTYsZS5xPTU1NixlLnI9NDQ0LGUucz0zODksZS50PTMzMyxlLnU9NTU2LGUudj01MDAsZS53PTcyMixlLng9NTAwLGUueT01MDAsZS56PTQ0NCxlLmJyYWNlbGVmdD0zOTQsZS5iYXI9MjIwLGUuYnJhY2VyaWdodD0zOTQsZS5hc2NpaXRpbGRlPTUyMCxlLmV4Y2xhbWRvd249MzMzLGUuY2VudD01MDAsZS5zdGVybGluZz01MDAsZS5mcmFjdGlvbj0xNjcsZS55ZW49NTAwLGUuZmxvcmluPTUwMCxlLnNlY3Rpb249NTAwLGUuY3VycmVuY3k9NTAwLGUucXVvdGVzaW5nbGU9Mjc4LGUucXVvdGVkYmxsZWZ0PTUwMCxlLmd1aWxsZW1vdGxlZnQ9NTAwLGUuZ3VpbHNpbmdsbGVmdD0zMzMsZS5ndWlsc2luZ2xyaWdodD0zMzMsZS5maT01NTYsZS5mbD01NTYsZS5lbmRhc2g9NTAwLGUuZGFnZ2VyPTUwMCxlLmRhZ2dlcmRibD01MDAsZS5wZXJpb2RjZW50ZXJlZD0yNTAsZS5wYXJhZ3JhcGg9NTQwLGUuYnVsbGV0PTM1MCxlLnF1b3Rlc2luZ2xiYXNlPTMzMyxlLnF1b3RlZGJsYmFzZT01MDAsZS5xdW90ZWRibHJpZ2h0PTUwMCxlLmd1aWxsZW1vdHJpZ2h0PTUwMCxlLmVsbGlwc2lzPTFlMyxlLnBlcnRob3VzYW5kPTFlMyxlLnF1ZXN0aW9uZG93bj01MDAsZS5ncmF2ZT0zMzMsZS5hY3V0ZT0zMzMsZS5jaXJjdW1mbGV4PTMzMyxlLnRpbGRlPTMzMyxlLm1hY3Jvbj0zMzMsZS5icmV2ZT0zMzMsZS5kb3RhY2NlbnQ9MzMzLGUuZGllcmVzaXM9MzMzLGUucmluZz0zMzMsZS5jZWRpbGxhPTMzMyxlLmh1bmdhcnVtbGF1dD0zMzMsZS5vZ29uZWs9MzMzLGUuY2Fyb249MzMzLGUuZW1kYXNoPTFlMyxlLkFFPTFlMyxlLm9yZGZlbWluaW5lPTMwMCxlLkxzbGFzaD02NjcsZS5Pc2xhc2g9Nzc4LGUuT0U9MWUzLGUub3JkbWFzY3VsaW5lPTMzMCxlLmFlPTcyMixlLmRvdGxlc3NpPTI3OCxlLmxzbGFzaD0yNzgsZS5vc2xhc2g9NTAwLGUub2U9NzIyLGUuZ2VybWFuZGJscz01NTYsZS5JZGllcmVzaXM9Mzg5LGUuZWFjdXRlPTQ0NCxlLmFicmV2ZT01MDAsZS51aHVuZ2FydW1sYXV0PTU1NixlLmVjYXJvbj00NDQsZS5ZZGllcmVzaXM9NzIyLGUuZGl2aWRlPTU3MCxlLllhY3V0ZT03MjIsZS5BY2lyY3VtZmxleD03MjIsZS5hYWN1dGU9NTAwLGUuVWNpcmN1bWZsZXg9NzIyLGUueWFjdXRlPTUwMCxlLnNjb21tYWFjY2VudD0zODksZS5lY2lyY3VtZmxleD00NDQsZS5VcmluZz03MjIsZS5VZGllcmVzaXM9NzIyLGUuYW9nb25laz01MDAsZS5VYWN1dGU9NzIyLGUudW9nb25laz01NTYsZS5FZGllcmVzaXM9NjY3LGUuRGNyb2F0PTcyMixlLmNvbW1hYWNjZW50PTI1MCxlLmNvcHlyaWdodD03NDcsZS5FbWFjcm9uPTY2NyxlLmNjYXJvbj00NDQsZS5hcmluZz01MDAsZS5OY29tbWFhY2NlbnQ9NzIyLGUubGFjdXRlPTI3OCxlLmFncmF2ZT01MDAsZS5UY29tbWFhY2NlbnQ9NjY3LGUuQ2FjdXRlPTcyMixlLmF0aWxkZT01MDAsZS5FZG90YWNjZW50PTY2NyxlLnNjYXJvbj0zODksZS5zY2VkaWxsYT0zODksZS5pYWN1dGU9Mjc4LGUubG96ZW5nZT00OTQsZS5SY2Fyb249NzIyLGUuR2NvbW1hYWNjZW50PTc3OCxlLnVjaXJjdW1mbGV4PTU1NixlLmFjaXJjdW1mbGV4PTUwMCxlLkFtYWNyb249NzIyLGUucmNhcm9uPTQ0NCxlLmNjZWRpbGxhPTQ0NCxlLlpkb3RhY2NlbnQ9NjY3LGUuVGhvcm49NjExLGUuT21hY3Jvbj03NzgsZS5SYWN1dGU9NzIyLGUuU2FjdXRlPTU1NixlLmRjYXJvbj02NzIsZS5VbWFjcm9uPTcyMixlLnVyaW5nPTU1NixlLnRocmVlc3VwZXJpb3I9MzAwLGUuT2dyYXZlPTc3OCxlLkFncmF2ZT03MjIsZS5BYnJldmU9NzIyLGUubXVsdGlwbHk9NTcwLGUudWFjdXRlPTU1NixlLlRjYXJvbj02NjcsZS5wYXJ0aWFsZGlmZj00OTQsZS55ZGllcmVzaXM9NTAwLGUuTmFjdXRlPTcyMixlLmljaXJjdW1mbGV4PTI3OCxlLkVjaXJjdW1mbGV4PTY2NyxlLmFkaWVyZXNpcz01MDAsZS5lZGllcmVzaXM9NDQ0LGUuY2FjdXRlPTQ0NCxlLm5hY3V0ZT01NTYsZS51bWFjcm9uPTU1NixlLk5jYXJvbj03MjIsZS5JYWN1dGU9Mzg5LGUucGx1c21pbnVzPTU3MCxlLmJyb2tlbmJhcj0yMjAsZS5yZWdpc3RlcmVkPTc0NyxlLkdicmV2ZT03NzgsZS5JZG90YWNjZW50PTM4OSxlLnN1bW1hdGlvbj02MDAsZS5FZ3JhdmU9NjY3LGUucmFjdXRlPTQ0NCxlLm9tYWNyb249NTAwLGUuWmFjdXRlPTY2NyxlLlpjYXJvbj02NjcsZS5ncmVhdGVyZXF1YWw9NTQ5LGUuRXRoPTcyMixlLkNjZWRpbGxhPTcyMixlLmxjb21tYWFjY2VudD0yNzgsZS50Y2Fyb249NDE2LGUuZW9nb25laz00NDQsZS5Vb2dvbmVrPTcyMixlLkFhY3V0ZT03MjIsZS5BZGllcmVzaXM9NzIyLGUuZWdyYXZlPTQ0NCxlLnphY3V0ZT00NDQsZS5pb2dvbmVrPTI3OCxlLk9hY3V0ZT03NzgsZS5vYWN1dGU9NTAwLGUuYW1hY3Jvbj01MDAsZS5zYWN1dGU9Mzg5LGUuaWRpZXJlc2lzPTI3OCxlLk9jaXJjdW1mbGV4PTc3OCxlLlVncmF2ZT03MjIsZS5EZWx0YT02MTIsZS50aG9ybj01NTYsZS50d29zdXBlcmlvcj0zMDAsZS5PZGllcmVzaXM9Nzc4LGUubXU9NTU2LGUuaWdyYXZlPTI3OCxlLm9odW5nYXJ1bWxhdXQ9NTAwLGUuRW9nb25laz02NjcsZS5kY3JvYXQ9NTU2LGUudGhyZWVxdWFydGVycz03NTAsZS5TY2VkaWxsYT01NTYsZS5sY2Fyb249Mzk0LGUuS2NvbW1hYWNjZW50PTc3OCxlLkxhY3V0ZT02NjcsZS50cmFkZW1hcms9MWUzLGUuZWRvdGFjY2VudD00NDQsZS5JZ3JhdmU9Mzg5LGUuSW1hY3Jvbj0zODksZS5MY2Fyb249NjY3LGUub25laGFsZj03NTAsZS5sZXNzZXF1YWw9NTQ5LGUub2NpcmN1bWZsZXg9NTAwLGUubnRpbGRlPTU1NixlLlVodW5nYXJ1bWxhdXQ9NzIyLGUuRWFjdXRlPTY2NyxlLmVtYWNyb249NDQ0LGUuZ2JyZXZlPTUwMCxlLm9uZXF1YXJ0ZXI9NzUwLGUuU2Nhcm9uPTU1NixlLlNjb21tYWFjY2VudD01NTYsZS5PaHVuZ2FydW1sYXV0PTc3OCxlLmRlZ3JlZT00MDAsZS5vZ3JhdmU9NTAwLGUuQ2Nhcm9uPTcyMixlLnVncmF2ZT01NTYsZS5yYWRpY2FsPTU0OSxlLkRjYXJvbj03MjIsZS5yY29tbWFhY2NlbnQ9NDQ0LGUuTnRpbGRlPTcyMixlLm90aWxkZT01MDAsZS5SY29tbWFhY2NlbnQ9NzIyLGUuTGNvbW1hYWNjZW50PTY2NyxlLkF0aWxkZT03MjIsZS5Bb2dvbmVrPTcyMixlLkFyaW5nPTcyMixlLk90aWxkZT03NzgsZS56ZG90YWNjZW50PTQ0NCxlLkVjYXJvbj02NjcsZS5Jb2dvbmVrPTM4OSxlLmtjb21tYWFjY2VudD01NTYsZS5taW51cz01NzAsZS5JY2lyY3VtZmxleD0zODksZS5uY2Fyb249NTU2LGUudGNvbW1hYWNjZW50PTMzMyxlLmxvZ2ljYWxub3Q9NTcwLGUub2RpZXJlc2lzPTUwMCxlLnVkaWVyZXNpcz01NTYsZS5ub3RlcXVhbD01NDksZS5nY29tbWFhY2NlbnQ9NTAwLGUuZXRoPTUwMCxlLnpjYXJvbj00NDQsZS5uY29tbWFhY2NlbnQ9NTU2LGUub25lc3VwZXJpb3I9MzAwLGUuaW1hY3Jvbj0yNzgsZS5FdXJvPTUwMH0pKSxlWyJUaW1lcy1Cb2xkSXRhbGljIl09KDAsbi5nZXRMb29rdXBUYWJsZUZhY3RvcnkpKChmdW5jdGlvbihlKXtlLnNwYWNlPTI1MCxlLmV4Y2xhbT0zODksZS5xdW90ZWRibD01NTUsZS5udW1iZXJzaWduPTUwMCxlLmRvbGxhcj01MDAsZS5wZXJjZW50PTgzMyxlLmFtcGVyc2FuZD03NzgsZS5xdW90ZXJpZ2h0PTMzMyxlLnBhcmVubGVmdD0zMzMsZS5wYXJlbnJpZ2h0PTMzMyxlLmFzdGVyaXNrPTUwMCxlLnBsdXM9NTcwLGUuY29tbWE9MjUwLGUuaHlwaGVuPTMzMyxlLnBlcmlvZD0yNTAsZS5zbGFzaD0yNzgsZS56ZXJvPTUwMCxlLm9uZT01MDAsZS50d289NTAwLGUudGhyZWU9NTAwLGUuZm91cj01MDAsZS5maXZlPTUwMCxlLnNpeD01MDAsZS5zZXZlbj01MDAsZS5laWdodD01MDAsZS5uaW5lPTUwMCxlLmNvbG9uPTMzMyxlLnNlbWljb2xvbj0zMzMsZS5sZXNzPTU3MCxlLmVxdWFsPTU3MCxlLmdyZWF0ZXI9NTcwLGUucXVlc3Rpb249NTAwLGUuYXQ9ODMyLGUuQT02NjcsZS5CPTY2NyxlLkM9NjY3LGUuRD03MjIsZS5FPTY2NyxlLkY9NjY3LGUuRz03MjIsZS5IPTc3OCxlLkk9Mzg5LGUuSj01MDAsZS5LPTY2NyxlLkw9NjExLGUuTT04ODksZS5OPTcyMixlLk89NzIyLGUuUD02MTEsZS5RPTcyMixlLlI9NjY3LGUuUz01NTYsZS5UPTYxMSxlLlU9NzIyLGUuVj02NjcsZS5XPTg4OSxlLlg9NjY3LGUuWT02MTEsZS5aPTYxMSxlLmJyYWNrZXRsZWZ0PTMzMyxlLmJhY2tzbGFzaD0yNzgsZS5icmFja2V0cmlnaHQ9MzMzLGUuYXNjaWljaXJjdW09NTcwLGUudW5kZXJzY29yZT01MDAsZS5xdW90ZWxlZnQ9MzMzLGUuYT01MDAsZS5iPTUwMCxlLmM9NDQ0LGUuZD01MDAsZS5lPTQ0NCxlLmY9MzMzLGUuZz01MDAsZS5oPTU1NixlLmk9Mjc4LGUuaj0yNzgsZS5rPTUwMCxlLmw9Mjc4LGUubT03NzgsZS5uPTU1NixlLm89NTAwLGUucD01MDAsZS5xPTUwMCxlLnI9Mzg5LGUucz0zODksZS50PTI3OCxlLnU9NTU2LGUudj00NDQsZS53PTY2NyxlLng9NTAwLGUueT00NDQsZS56PTM4OSxlLmJyYWNlbGVmdD0zNDgsZS5iYXI9MjIwLGUuYnJhY2VyaWdodD0zNDgsZS5hc2NpaXRpbGRlPTU3MCxlLmV4Y2xhbWRvd249Mzg5LGUuY2VudD01MDAsZS5zdGVybGluZz01MDAsZS5mcmFjdGlvbj0xNjcsZS55ZW49NTAwLGUuZmxvcmluPTUwMCxlLnNlY3Rpb249NTAwLGUuY3VycmVuY3k9NTAwLGUucXVvdGVzaW5nbGU9Mjc4LGUucXVvdGVkYmxsZWZ0PTUwMCxlLmd1aWxsZW1vdGxlZnQ9NTAwLGUuZ3VpbHNpbmdsbGVmdD0zMzMsZS5ndWlsc2luZ2xyaWdodD0zMzMsZS5maT01NTYsZS5mbD01NTYsZS5lbmRhc2g9NTAwLGUuZGFnZ2VyPTUwMCxlLmRhZ2dlcmRibD01MDAsZS5wZXJpb2RjZW50ZXJlZD0yNTAsZS5wYXJhZ3JhcGg9NTAwLGUuYnVsbGV0PTM1MCxlLnF1b3Rlc2luZ2xiYXNlPTMzMyxlLnF1b3RlZGJsYmFzZT01MDAsZS5xdW90ZWRibHJpZ2h0PTUwMCxlLmd1aWxsZW1vdHJpZ2h0PTUwMCxlLmVsbGlwc2lzPTFlMyxlLnBlcnRob3VzYW5kPTFlMyxlLnF1ZXN0aW9uZG93bj01MDAsZS5ncmF2ZT0zMzMsZS5hY3V0ZT0zMzMsZS5jaXJjdW1mbGV4PTMzMyxlLnRpbGRlPTMzMyxlLm1hY3Jvbj0zMzMsZS5icmV2ZT0zMzMsZS5kb3RhY2NlbnQ9MzMzLGUuZGllcmVzaXM9MzMzLGUucmluZz0zMzMsZS5jZWRpbGxhPTMzMyxlLmh1bmdhcnVtbGF1dD0zMzMsZS5vZ29uZWs9MzMzLGUuY2Fyb249MzMzLGUuZW1kYXNoPTFlMyxlLkFFPTk0NCxlLm9yZGZlbWluaW5lPTI2NixlLkxzbGFzaD02MTEsZS5Pc2xhc2g9NzIyLGUuT0U9OTQ0LGUub3JkbWFzY3VsaW5lPTMwMCxlLmFlPTcyMixlLmRvdGxlc3NpPTI3OCxlLmxzbGFzaD0yNzgsZS5vc2xhc2g9NTAwLGUub2U9NzIyLGUuZ2VybWFuZGJscz01MDAsZS5JZGllcmVzaXM9Mzg5LGUuZWFjdXRlPTQ0NCxlLmFicmV2ZT01MDAsZS51aHVuZ2FydW1sYXV0PTU1NixlLmVjYXJvbj00NDQsZS5ZZGllcmVzaXM9NjExLGUuZGl2aWRlPTU3MCxlLllhY3V0ZT02MTEsZS5BY2lyY3VtZmxleD02NjcsZS5hYWN1dGU9NTAwLGUuVWNpcmN1bWZsZXg9NzIyLGUueWFjdXRlPTQ0NCxlLnNjb21tYWFjY2VudD0zODksZS5lY2lyY3VtZmxleD00NDQsZS5VcmluZz03MjIsZS5VZGllcmVzaXM9NzIyLGUuYW9nb25laz01MDAsZS5VYWN1dGU9NzIyLGUudW9nb25laz01NTYsZS5FZGllcmVzaXM9NjY3LGUuRGNyb2F0PTcyMixlLmNvbW1hYWNjZW50PTI1MCxlLmNvcHlyaWdodD03NDcsZS5FbWFjcm9uPTY2NyxlLmNjYXJvbj00NDQsZS5hcmluZz01MDAsZS5OY29tbWFhY2NlbnQ9NzIyLGUubGFjdXRlPTI3OCxlLmFncmF2ZT01MDAsZS5UY29tbWFhY2NlbnQ9NjExLGUuQ2FjdXRlPTY2NyxlLmF0aWxkZT01MDAsZS5FZG90YWNjZW50PTY2NyxlLnNjYXJvbj0zODksZS5zY2VkaWxsYT0zODksZS5pYWN1dGU9Mjc4LGUubG96ZW5nZT00OTQsZS5SY2Fyb249NjY3LGUuR2NvbW1hYWNjZW50PTcyMixlLnVjaXJjdW1mbGV4PTU1NixlLmFjaXJjdW1mbGV4PTUwMCxlLkFtYWNyb249NjY3LGUucmNhcm9uPTM4OSxlLmNjZWRpbGxhPTQ0NCxlLlpkb3RhY2NlbnQ9NjExLGUuVGhvcm49NjExLGUuT21hY3Jvbj03MjIsZS5SYWN1dGU9NjY3LGUuU2FjdXRlPTU1NixlLmRjYXJvbj02MDgsZS5VbWFjcm9uPTcyMixlLnVyaW5nPTU1NixlLnRocmVlc3VwZXJpb3I9MzAwLGUuT2dyYXZlPTcyMixlLkFncmF2ZT02NjcsZS5BYnJldmU9NjY3LGUubXVsdGlwbHk9NTcwLGUudWFjdXRlPTU1NixlLlRjYXJvbj02MTEsZS5wYXJ0aWFsZGlmZj00OTQsZS55ZGllcmVzaXM9NDQ0LGUuTmFjdXRlPTcyMixlLmljaXJjdW1mbGV4PTI3OCxlLkVjaXJjdW1mbGV4PTY2NyxlLmFkaWVyZXNpcz01MDAsZS5lZGllcmVzaXM9NDQ0LGUuY2FjdXRlPTQ0NCxlLm5hY3V0ZT01NTYsZS51bWFjcm9uPTU1NixlLk5jYXJvbj03MjIsZS5JYWN1dGU9Mzg5LGUucGx1c21pbnVzPTU3MCxlLmJyb2tlbmJhcj0yMjAsZS5yZWdpc3RlcmVkPTc0NyxlLkdicmV2ZT03MjIsZS5JZG90YWNjZW50PTM4OSxlLnN1bW1hdGlvbj02MDAsZS5FZ3JhdmU9NjY3LGUucmFjdXRlPTM4OSxlLm9tYWNyb249NTAwLGUuWmFjdXRlPTYxMSxlLlpjYXJvbj02MTEsZS5ncmVhdGVyZXF1YWw9NTQ5LGUuRXRoPTcyMixlLkNjZWRpbGxhPTY2NyxlLmxjb21tYWFjY2VudD0yNzgsZS50Y2Fyb249MzY2LGUuZW9nb25laz00NDQsZS5Vb2dvbmVrPTcyMixlLkFhY3V0ZT02NjcsZS5BZGllcmVzaXM9NjY3LGUuZWdyYXZlPTQ0NCxlLnphY3V0ZT0zODksZS5pb2dvbmVrPTI3OCxlLk9hY3V0ZT03MjIsZS5vYWN1dGU9NTAwLGUuYW1hY3Jvbj01MDAsZS5zYWN1dGU9Mzg5LGUuaWRpZXJlc2lzPTI3OCxlLk9jaXJjdW1mbGV4PTcyMixlLlVncmF2ZT03MjIsZS5EZWx0YT02MTIsZS50aG9ybj01MDAsZS50d29zdXBlcmlvcj0zMDAsZS5PZGllcmVzaXM9NzIyLGUubXU9NTc2LGUuaWdyYXZlPTI3OCxlLm9odW5nYXJ1bWxhdXQ9NTAwLGUuRW9nb25laz02NjcsZS5kY3JvYXQ9NTAwLGUudGhyZWVxdWFydGVycz03NTAsZS5TY2VkaWxsYT01NTYsZS5sY2Fyb249MzgyLGUuS2NvbW1hYWNjZW50PTY2NyxlLkxhY3V0ZT02MTEsZS50cmFkZW1hcms9MWUzLGUuZWRvdGFjY2VudD00NDQsZS5JZ3JhdmU9Mzg5LGUuSW1hY3Jvbj0zODksZS5MY2Fyb249NjExLGUub25laGFsZj03NTAsZS5sZXNzZXF1YWw9NTQ5LGUub2NpcmN1bWZsZXg9NTAwLGUubnRpbGRlPTU1NixlLlVodW5nYXJ1bWxhdXQ9NzIyLGUuRWFjdXRlPTY2NyxlLmVtYWNyb249NDQ0LGUuZ2JyZXZlPTUwMCxlLm9uZXF1YXJ0ZXI9NzUwLGUuU2Nhcm9uPTU1NixlLlNjb21tYWFjY2VudD01NTYsZS5PaHVuZ2FydW1sYXV0PTcyMixlLmRlZ3JlZT00MDAsZS5vZ3JhdmU9NTAwLGUuQ2Nhcm9uPTY2NyxlLnVncmF2ZT01NTYsZS5yYWRpY2FsPTU0OSxlLkRjYXJvbj03MjIsZS5yY29tbWFhY2NlbnQ9Mzg5LGUuTnRpbGRlPTcyMixlLm90aWxkZT01MDAsZS5SY29tbWFhY2NlbnQ9NjY3LGUuTGNvbW1hYWNjZW50PTYxMSxlLkF0aWxkZT02NjcsZS5Bb2dvbmVrPTY2NyxlLkFyaW5nPTY2NyxlLk90aWxkZT03MjIsZS56ZG90YWNjZW50PTM4OSxlLkVjYXJvbj02NjcsZS5Jb2dvbmVrPTM4OSxlLmtjb21tYWFjY2VudD01MDAsZS5taW51cz02MDYsZS5JY2lyY3VtZmxleD0zODksZS5uY2Fyb249NTU2LGUudGNvbW1hYWNjZW50PTI3OCxlLmxvZ2ljYWxub3Q9NjA2LGUub2RpZXJlc2lzPTUwMCxlLnVkaWVyZXNpcz01NTYsZS5ub3RlcXVhbD01NDksZS5nY29tbWFhY2NlbnQ9NTAwLGUuZXRoPTUwMCxlLnpjYXJvbj0zODksZS5uY29tbWFhY2NlbnQ9NTU2LGUub25lc3VwZXJpb3I9MzAwLGUuaW1hY3Jvbj0yNzgsZS5FdXJvPTUwMH0pKSxlWyJUaW1lcy1JdGFsaWMiXT0oMCxuLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2Uuc3BhY2U9MjUwLGUuZXhjbGFtPTMzMyxlLnF1b3RlZGJsPTQyMCxlLm51bWJlcnNpZ249NTAwLGUuZG9sbGFyPTUwMCxlLnBlcmNlbnQ9ODMzLGUuYW1wZXJzYW5kPTc3OCxlLnF1b3RlcmlnaHQ9MzMzLGUucGFyZW5sZWZ0PTMzMyxlLnBhcmVucmlnaHQ9MzMzLGUuYXN0ZXJpc2s9NTAwLGUucGx1cz02NzUsZS5jb21tYT0yNTAsZS5oeXBoZW49MzMzLGUucGVyaW9kPTI1MCxlLnNsYXNoPTI3OCxlLnplcm89NTAwLGUub25lPTUwMCxlLnR3bz01MDAsZS50aHJlZT01MDAsZS5mb3VyPTUwMCxlLmZpdmU9NTAwLGUuc2l4PTUwMCxlLnNldmVuPTUwMCxlLmVpZ2h0PTUwMCxlLm5pbmU9NTAwLGUuY29sb249MzMzLGUuc2VtaWNvbG9uPTMzMyxlLmxlc3M9Njc1LGUuZXF1YWw9Njc1LGUuZ3JlYXRlcj02NzUsZS5xdWVzdGlvbj01MDAsZS5hdD05MjAsZS5BPTYxMSxlLkI9NjExLGUuQz02NjcsZS5EPTcyMixlLkU9NjExLGUuRj02MTEsZS5HPTcyMixlLkg9NzIyLGUuST0zMzMsZS5KPTQ0NCxlLks9NjY3LGUuTD01NTYsZS5NPTgzMyxlLk49NjY3LGUuTz03MjIsZS5QPTYxMSxlLlE9NzIyLGUuUj02MTEsZS5TPTUwMCxlLlQ9NTU2LGUuVT03MjIsZS5WPTYxMSxlLlc9ODMzLGUuWD02MTEsZS5ZPTU1NixlLlo9NTU2LGUuYnJhY2tldGxlZnQ9Mzg5LGUuYmFja3NsYXNoPTI3OCxlLmJyYWNrZXRyaWdodD0zODksZS5hc2NpaWNpcmN1bT00MjIsZS51bmRlcnNjb3JlPTUwMCxlLnF1b3RlbGVmdD0zMzMsZS5hPTUwMCxlLmI9NTAwLGUuYz00NDQsZS5kPTUwMCxlLmU9NDQ0LGUuZj0yNzgsZS5nPTUwMCxlLmg9NTAwLGUuaT0yNzgsZS5qPTI3OCxlLms9NDQ0LGUubD0yNzgsZS5tPTcyMixlLm49NTAwLGUubz01MDAsZS5wPTUwMCxlLnE9NTAwLGUucj0zODksZS5zPTM4OSxlLnQ9Mjc4LGUudT01MDAsZS52PTQ0NCxlLnc9NjY3LGUueD00NDQsZS55PTQ0NCxlLno9Mzg5LGUuYnJhY2VsZWZ0PTQwMCxlLmJhcj0yNzUsZS5icmFjZXJpZ2h0PTQwMCxlLmFzY2lpdGlsZGU9NTQxLGUuZXhjbGFtZG93bj0zODksZS5jZW50PTUwMCxlLnN0ZXJsaW5nPTUwMCxlLmZyYWN0aW9uPTE2NyxlLnllbj01MDAsZS5mbG9yaW49NTAwLGUuc2VjdGlvbj01MDAsZS5jdXJyZW5jeT01MDAsZS5xdW90ZXNpbmdsZT0yMTQsZS5xdW90ZWRibGxlZnQ9NTU2LGUuZ3VpbGxlbW90bGVmdD01MDAsZS5ndWlsc2luZ2xsZWZ0PTMzMyxlLmd1aWxzaW5nbHJpZ2h0PTMzMyxlLmZpPTUwMCxlLmZsPTUwMCxlLmVuZGFzaD01MDAsZS5kYWdnZXI9NTAwLGUuZGFnZ2VyZGJsPTUwMCxlLnBlcmlvZGNlbnRlcmVkPTI1MCxlLnBhcmFncmFwaD01MjMsZS5idWxsZXQ9MzUwLGUucXVvdGVzaW5nbGJhc2U9MzMzLGUucXVvdGVkYmxiYXNlPTU1NixlLnF1b3RlZGJscmlnaHQ9NTU2LGUuZ3VpbGxlbW90cmlnaHQ9NTAwLGUuZWxsaXBzaXM9ODg5LGUucGVydGhvdXNhbmQ9MWUzLGUucXVlc3Rpb25kb3duPTUwMCxlLmdyYXZlPTMzMyxlLmFjdXRlPTMzMyxlLmNpcmN1bWZsZXg9MzMzLGUudGlsZGU9MzMzLGUubWFjcm9uPTMzMyxlLmJyZXZlPTMzMyxlLmRvdGFjY2VudD0zMzMsZS5kaWVyZXNpcz0zMzMsZS5yaW5nPTMzMyxlLmNlZGlsbGE9MzMzLGUuaHVuZ2FydW1sYXV0PTMzMyxlLm9nb25laz0zMzMsZS5jYXJvbj0zMzMsZS5lbWRhc2g9ODg5LGUuQUU9ODg5LGUub3JkZmVtaW5pbmU9Mjc2LGUuTHNsYXNoPTU1NixlLk9zbGFzaD03MjIsZS5PRT05NDQsZS5vcmRtYXNjdWxpbmU9MzEwLGUuYWU9NjY3LGUuZG90bGVzc2k9Mjc4LGUubHNsYXNoPTI3OCxlLm9zbGFzaD01MDAsZS5vZT02NjcsZS5nZXJtYW5kYmxzPTUwMCxlLklkaWVyZXNpcz0zMzMsZS5lYWN1dGU9NDQ0LGUuYWJyZXZlPTUwMCxlLnVodW5nYXJ1bWxhdXQ9NTAwLGUuZWNhcm9uPTQ0NCxlLllkaWVyZXNpcz01NTYsZS5kaXZpZGU9Njc1LGUuWWFjdXRlPTU1NixlLkFjaXJjdW1mbGV4PTYxMSxlLmFhY3V0ZT01MDAsZS5VY2lyY3VtZmxleD03MjIsZS55YWN1dGU9NDQ0LGUuc2NvbW1hYWNjZW50PTM4OSxlLmVjaXJjdW1mbGV4PTQ0NCxlLlVyaW5nPTcyMixlLlVkaWVyZXNpcz03MjIsZS5hb2dvbmVrPTUwMCxlLlVhY3V0ZT03MjIsZS51b2dvbmVrPTUwMCxlLkVkaWVyZXNpcz02MTEsZS5EY3JvYXQ9NzIyLGUuY29tbWFhY2NlbnQ9MjUwLGUuY29weXJpZ2h0PTc2MCxlLkVtYWNyb249NjExLGUuY2Nhcm9uPTQ0NCxlLmFyaW5nPTUwMCxlLk5jb21tYWFjY2VudD02NjcsZS5sYWN1dGU9Mjc4LGUuYWdyYXZlPTUwMCxlLlRjb21tYWFjY2VudD01NTYsZS5DYWN1dGU9NjY3LGUuYXRpbGRlPTUwMCxlLkVkb3RhY2NlbnQ9NjExLGUuc2Nhcm9uPTM4OSxlLnNjZWRpbGxhPTM4OSxlLmlhY3V0ZT0yNzgsZS5sb3plbmdlPTQ3MSxlLlJjYXJvbj02MTEsZS5HY29tbWFhY2NlbnQ9NzIyLGUudWNpcmN1bWZsZXg9NTAwLGUuYWNpcmN1bWZsZXg9NTAwLGUuQW1hY3Jvbj02MTEsZS5yY2Fyb249Mzg5LGUuY2NlZGlsbGE9NDQ0LGUuWmRvdGFjY2VudD01NTYsZS5UaG9ybj02MTEsZS5PbWFjcm9uPTcyMixlLlJhY3V0ZT02MTEsZS5TYWN1dGU9NTAwLGUuZGNhcm9uPTU0NCxlLlVtYWNyb249NzIyLGUudXJpbmc9NTAwLGUudGhyZWVzdXBlcmlvcj0zMDAsZS5PZ3JhdmU9NzIyLGUuQWdyYXZlPTYxMSxlLkFicmV2ZT02MTEsZS5tdWx0aXBseT02NzUsZS51YWN1dGU9NTAwLGUuVGNhcm9uPTU1NixlLnBhcnRpYWxkaWZmPTQ3NixlLnlkaWVyZXNpcz00NDQsZS5OYWN1dGU9NjY3LGUuaWNpcmN1bWZsZXg9Mjc4LGUuRWNpcmN1bWZsZXg9NjExLGUuYWRpZXJlc2lzPTUwMCxlLmVkaWVyZXNpcz00NDQsZS5jYWN1dGU9NDQ0LGUubmFjdXRlPTUwMCxlLnVtYWNyb249NTAwLGUuTmNhcm9uPTY2NyxlLklhY3V0ZT0zMzMsZS5wbHVzbWludXM9Njc1LGUuYnJva2VuYmFyPTI3NSxlLnJlZ2lzdGVyZWQ9NzYwLGUuR2JyZXZlPTcyMixlLklkb3RhY2NlbnQ9MzMzLGUuc3VtbWF0aW9uPTYwMCxlLkVncmF2ZT02MTEsZS5yYWN1dGU9Mzg5LGUub21hY3Jvbj01MDAsZS5aYWN1dGU9NTU2LGUuWmNhcm9uPTU1NixlLmdyZWF0ZXJlcXVhbD01NDksZS5FdGg9NzIyLGUuQ2NlZGlsbGE9NjY3LGUubGNvbW1hYWNjZW50PTI3OCxlLnRjYXJvbj0zMDAsZS5lb2dvbmVrPTQ0NCxlLlVvZ29uZWs9NzIyLGUuQWFjdXRlPTYxMSxlLkFkaWVyZXNpcz02MTEsZS5lZ3JhdmU9NDQ0LGUuemFjdXRlPTM4OSxlLmlvZ29uZWs9Mjc4LGUuT2FjdXRlPTcyMixlLm9hY3V0ZT01MDAsZS5hbWFjcm9uPTUwMCxlLnNhY3V0ZT0zODksZS5pZGllcmVzaXM9Mjc4LGUuT2NpcmN1bWZsZXg9NzIyLGUuVWdyYXZlPTcyMixlLkRlbHRhPTYxMixlLnRob3JuPTUwMCxlLnR3b3N1cGVyaW9yPTMwMCxlLk9kaWVyZXNpcz03MjIsZS5tdT01MDAsZS5pZ3JhdmU9Mjc4LGUub2h1bmdhcnVtbGF1dD01MDAsZS5Fb2dvbmVrPTYxMSxlLmRjcm9hdD01MDAsZS50aHJlZXF1YXJ0ZXJzPTc1MCxlLlNjZWRpbGxhPTUwMCxlLmxjYXJvbj0zMDAsZS5LY29tbWFhY2NlbnQ9NjY3LGUuTGFjdXRlPTU1NixlLnRyYWRlbWFyaz05ODAsZS5lZG90YWNjZW50PTQ0NCxlLklncmF2ZT0zMzMsZS5JbWFjcm9uPTMzMyxlLkxjYXJvbj02MTEsZS5vbmVoYWxmPTc1MCxlLmxlc3NlcXVhbD01NDksZS5vY2lyY3VtZmxleD01MDAsZS5udGlsZGU9NTAwLGUuVWh1bmdhcnVtbGF1dD03MjIsZS5FYWN1dGU9NjExLGUuZW1hY3Jvbj00NDQsZS5nYnJldmU9NTAwLGUub25lcXVhcnRlcj03NTAsZS5TY2Fyb249NTAwLGUuU2NvbW1hYWNjZW50PTUwMCxlLk9odW5nYXJ1bWxhdXQ9NzIyLGUuZGVncmVlPTQwMCxlLm9ncmF2ZT01MDAsZS5DY2Fyb249NjY3LGUudWdyYXZlPTUwMCxlLnJhZGljYWw9NDUzLGUuRGNhcm9uPTcyMixlLnJjb21tYWFjY2VudD0zODksZS5OdGlsZGU9NjY3LGUub3RpbGRlPTUwMCxlLlJjb21tYWFjY2VudD02MTEsZS5MY29tbWFhY2NlbnQ9NTU2LGUuQXRpbGRlPTYxMSxlLkFvZ29uZWs9NjExLGUuQXJpbmc9NjExLGUuT3RpbGRlPTcyMixlLnpkb3RhY2NlbnQ9Mzg5LGUuRWNhcm9uPTYxMSxlLklvZ29uZWs9MzMzLGUua2NvbW1hYWNjZW50PTQ0NCxlLm1pbnVzPTY3NSxlLkljaXJjdW1mbGV4PTMzMyxlLm5jYXJvbj01MDAsZS50Y29tbWFhY2NlbnQ9Mjc4LGUubG9naWNhbG5vdD02NzUsZS5vZGllcmVzaXM9NTAwLGUudWRpZXJlc2lzPTUwMCxlLm5vdGVxdWFsPTU0OSxlLmdjb21tYWFjY2VudD01MDAsZS5ldGg9NTAwLGUuemNhcm9uPTM4OSxlLm5jb21tYWFjY2VudD01MDAsZS5vbmVzdXBlcmlvcj0zMDAsZS5pbWFjcm9uPTI3OCxlLkV1cm89NTAwfSkpLGUuWmFwZkRpbmdiYXRzPSgwLG4uZ2V0TG9va3VwVGFibGVGYWN0b3J5KSgoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNzgsZS5hMT05NzQsZS5hMj05NjEsZS5hMjAyPTk3NCxlLmEzPTk4MCxlLmE0PTcxOSxlLmE1PTc4OSxlLmExMTk9NzkwLGUuYTExOD03OTEsZS5hMTE3PTY5MCxlLmExMT05NjAsZS5hMTI9OTM5LGUuYTEzPTU0OSxlLmExND04NTUsZS5hMTU9OTExLGUuYTE2PTkzMyxlLmExMDU9OTExLGUuYTE3PTk0NSxlLmExOD05NzQsZS5hMTk9NzU1LGUuYTIwPTg0NixlLmEyMT03NjIsZS5hMjI9NzYxLGUuYTIzPTU3MSxlLmEyND02NzcsZS5hMjU9NzYzLGUuYTI2PTc2MCxlLmEyNz03NTksZS5hMjg9NzU0LGUuYTY9NDk0LGUuYTc9NTUyLGUuYTg9NTM3LGUuYTk9NTc3LGUuYTEwPTY5MixlLmEyOT03ODYsZS5hMzA9Nzg4LGUuYTMxPTc4OCxlLmEzMj03OTAsZS5hMzM9NzkzLGUuYTM0PTc5NCxlLmEzNT04MTYsZS5hMzY9ODIzLGUuYTM3PTc4OSxlLmEzOD04NDEsZS5hMzk9ODIzLGUuYTQwPTgzMyxlLmE0MT04MTYsZS5hNDI9ODMxLGUuYTQzPTkyMyxlLmE0ND03NDQsZS5hNDU9NzIzLGUuYTQ2PTc0OSxlLmE0Nz03OTAsZS5hNDg9NzkyLGUuYTQ5PTY5NSxlLmE1MD03NzYsZS5hNTE9NzY4LGUuYTUyPTc5MixlLmE1Mz03NTksZS5hNTQ9NzA3LGUuYTU1PTcwOCxlLmE1Nj02ODIsZS5hNTc9NzAxLGUuYTU4PTgyNixlLmE1OT04MTUsZS5hNjA9Nzg5LGUuYTYxPTc4OSxlLmE2Mj03MDcsZS5hNjM9Njg3LGUuYTY0PTY5NixlLmE2NT02ODksZS5hNjY9Nzg2LGUuYTY3PTc4NyxlLmE2OD03MTMsZS5hNjk9NzkxLGUuYTcwPTc4NSxlLmE3MT03OTEsZS5hNzI9ODczLGUuYTczPTc2MSxlLmE3ND03NjIsZS5hMjAzPTc2MixlLmE3NT03NTksZS5hMjA0PTc1OSxlLmE3Nj04OTIsZS5hNzc9ODkyLGUuYTc4PTc4OCxlLmE3OT03ODQsZS5hODE9NDM4LGUuYTgyPTEzOCxlLmE4Mz0yNzcsZS5hODQ9NDE1LGUuYTk3PTM5MixlLmE5OD0zOTIsZS5hOTk9NjY4LGUuYTEwMD02NjgsZS5hODk9MzkwLGUuYTkwPTM5MCxlLmE5Mz0zMTcsZS5hOTQ9MzE3LGUuYTkxPTI3NixlLmE5Mj0yNzYsZS5hMjA1PTUwOSxlLmE4NT01MDksZS5hMjA2PTQxMCxlLmE4Nj00MTAsZS5hODc9MjM0LGUuYTg4PTIzNCxlLmE5NT0zMzQsZS5hOTY9MzM0LGUuYTEwMT03MzIsZS5hMTAyPTU0NCxlLmExMDM9NTQ0LGUuYTEwND05MTAsZS5hMTA2PTY2NyxlLmExMDc9NzYwLGUuYTEwOD03NjAsZS5hMTEyPTc3NixlLmExMTE9NTk1LGUuYTExMD02OTQsZS5hMTA5PTYyNixlLmExMjA9Nzg4LGUuYTEyMT03ODgsZS5hMTIyPTc4OCxlLmExMjM9Nzg4LGUuYTEyND03ODgsZS5hMTI1PTc4OCxlLmExMjY9Nzg4LGUuYTEyNz03ODgsZS5hMTI4PTc4OCxlLmExMjk9Nzg4LGUuYTEzMD03ODgsZS5hMTMxPTc4OCxlLmExMzI9Nzg4LGUuYTEzMz03ODgsZS5hMTM0PTc4OCxlLmExMzU9Nzg4LGUuYTEzNj03ODgsZS5hMTM3PTc4OCxlLmExMzg9Nzg4LGUuYTEzOT03ODgsZS5hMTQwPTc4OCxlLmExNDE9Nzg4LGUuYTE0Mj03ODgsZS5hMTQzPTc4OCxlLmExNDQ9Nzg4LGUuYTE0NT03ODgsZS5hMTQ2PTc4OCxlLmExNDc9Nzg4LGUuYTE0OD03ODgsZS5hMTQ5PTc4OCxlLmExNTA9Nzg4LGUuYTE1MT03ODgsZS5hMTUyPTc4OCxlLmExNTM9Nzg4LGUuYTE1ND03ODgsZS5hMTU1PTc4OCxlLmExNTY9Nzg4LGUuYTE1Nz03ODgsZS5hMTU4PTc4OCxlLmExNTk9Nzg4LGUuYTE2MD04OTQsZS5hMTYxPTgzOCxlLmExNjM9MTAxNixlLmExNjQ9NDU4LGUuYTE5Nj03NDgsZS5hMTY1PTkyNCxlLmExOTI9NzQ4LGUuYTE2Nj05MTgsZS5hMTY3PTkyNyxlLmExNjg9OTI4LGUuYTE2OT05MjgsZS5hMTcwPTgzNCxlLmExNzE9ODczLGUuYTE3Mj04MjgsZS5hMTczPTkyNCxlLmExNjI9OTI0LGUuYTE3ND05MTcsZS5hMTc1PTkzMCxlLmExNzY9OTMxLGUuYTE3Nz00NjMsZS5hMTc4PTg4MyxlLmExNzk9ODM2LGUuYTE5Mz04MzYsZS5hMTgwPTg2NyxlLmExOTk9ODY3LGUuYTE4MT02OTYsZS5hMjAwPTY5NixlLmExODI9ODc0LGUuYTIwMT04NzQsZS5hMTgzPTc2MCxlLmExODQ9OTQ2LGUuYTE5Nz03NzEsZS5hMTg1PTg2NSxlLmExOTQ9NzcxLGUuYTE5OD04ODgsZS5hMTg2PTk2NyxlLmExOTU9ODg4LGUuYTE4Nz04MzEsZS5hMTg4PTg3MyxlLmExODk9OTI3LGUuYTE5MD05NzAsZS5hMTkxPTkxOH0pKX0pKTt0LmdldE1ldHJpY3M9YTt2YXIgaT0oMCxuLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2UuQ291cmllcj17YXNjZW50OjYyOSxkZXNjZW50Oi0xNTcsY2FwSGVpZ2h0OjU2Mix4SGVpZ2h0Oi00MjZ9LGVbIkNvdXJpZXItQm9sZCJdPXthc2NlbnQ6NjI5LGRlc2NlbnQ6LTE1NyxjYXBIZWlnaHQ6NTYyLHhIZWlnaHQ6NDM5fSxlWyJDb3VyaWVyLU9ibGlxdWUiXT17YXNjZW50OjYyOSxkZXNjZW50Oi0xNTcsY2FwSGVpZ2h0OjU2Mix4SGVpZ2h0OjQyNn0sZVsiQ291cmllci1Cb2xkT2JsaXF1ZSJdPXthc2NlbnQ6NjI5LGRlc2NlbnQ6LTE1NyxjYXBIZWlnaHQ6NTYyLHhIZWlnaHQ6NDI2fSxlLkhlbHZldGljYT17YXNjZW50OjcxOCxkZXNjZW50Oi0yMDcsY2FwSGVpZ2h0OjcxOCx4SGVpZ2h0OjUyM30sZVsiSGVsdmV0aWNhLUJvbGQiXT17YXNjZW50OjcxOCxkZXNjZW50Oi0yMDcsY2FwSGVpZ2h0OjcxOCx4SGVpZ2h0OjUzMn0sZVsiSGVsdmV0aWNhLU9ibGlxdWUiXT17YXNjZW50OjcxOCxkZXNjZW50Oi0yMDcsY2FwSGVpZ2h0OjcxOCx4SGVpZ2h0OjUyM30sZVsiSGVsdmV0aWNhLUJvbGRPYmxpcXVlIl09e2FzY2VudDo3MTgsZGVzY2VudDotMjA3LGNhcEhlaWdodDo3MTgseEhlaWdodDo1MzJ9LGVbIlRpbWVzLVJvbWFuIl09e2FzY2VudDo2ODMsZGVzY2VudDotMjE3LGNhcEhlaWdodDo2NjIseEhlaWdodDo0NTB9LGVbIlRpbWVzLUJvbGQiXT17YXNjZW50OjY4MyxkZXNjZW50Oi0yMTcsY2FwSGVpZ2h0OjY3Nix4SGVpZ2h0OjQ2MX0sZVsiVGltZXMtSXRhbGljIl09e2FzY2VudDo2ODMsZGVzY2VudDotMjE3LGNhcEhlaWdodDo2NTMseEhlaWdodDo0NDF9LGVbIlRpbWVzLUJvbGRJdGFsaWMiXT17YXNjZW50OjY4MyxkZXNjZW50Oi0yMTcsY2FwSGVpZ2h0OjY2OSx4SGVpZ2h0OjQ2Mn0sZS5TeW1ib2w9e2FzY2VudDpNYXRoLk5hTixkZXNjZW50Ok1hdGguTmFOLGNhcEhlaWdodDpNYXRoLk5hTix4SGVpZ2h0Ok1hdGguTmFOfSxlLlphcGZEaW5nYmF0cz17YXNjZW50Ok1hdGguTmFOLGRlc2NlbnQ6TWF0aC5OYU4sY2FwSGVpZ2h0Ok1hdGguTmFOLHhIZWlnaHQ6TWF0aC5OYU59fSkpO3QuZ2V0Rm9udEJhc2ljTWV0cmljcz1pfSwoZSx0KT0+e2Z1bmN0aW9uIHIoZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIHI9bnVsbD09ZT9udWxsOiJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbIkBAaXRlcmF0b3IiXTtpZihudWxsIT1yKXt2YXIgbixhLGksbyxzPVtdLGM9ITAsdT0hMTt0cnl7aWYoaT0ocj1yLmNhbGwoZSkpLm5leHQsMD09PXQpe2lmKE9iamVjdChyKSE9PXIpcmV0dXJuO2M9ITF9ZWxzZSBmb3IoOyEoYz0obj1pLmNhbGwocikpLmRvbmUpJiYocy5wdXNoKG4udmFsdWUpLHMubGVuZ3RoIT09dCk7Yz0hMCk7fWNhdGNoKGUpe3U9ITAsYT1lfWZpbmFsbHl7dHJ5e2lmKCFjJiZudWxsIT1yLnJldHVybiYmKG89ci5yZXR1cm4oKSxPYmplY3QobykhPT1vKSlyZXR1cm59ZmluYWxseXtpZih1KXRocm93IGF9fXJldHVybiBzfX0oZSx0KXx8aShlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gbihlKXtyZXR1cm4gbj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZX0sbihlKX1mdW5jdGlvbiBhKGUsdCl7dmFyIHI9InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVsiQEBpdGVyYXRvciJdO2lmKCFyKXtpZihBcnJheS5pc0FycmF5KGUpfHwocj1pKGUpKXx8dCYmZSYmIm51bWJlciI9PXR5cGVvZiBlLmxlbmd0aCl7ciYmKGU9cik7dmFyIG49MCxhPWZ1bmN0aW9uKCl7fTtyZXR1cm57czphLG46ZnVuY3Rpb24oKXtyZXR1cm4gbj49ZS5sZW5ndGg/e2RvbmU6ITB9Ontkb25lOiExLHZhbHVlOmVbbisrXX19LGU6ZnVuY3Rpb24oZSl7dGhyb3cgZX0sZjphfX10aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gaXRlcmF0ZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9dmFyIG8scz0hMCxjPSExO3JldHVybntzOmZ1bmN0aW9uKCl7cj1yLmNhbGwoZSl9LG46ZnVuY3Rpb24oKXt2YXIgZT1yLm5leHQoKTtyZXR1cm4gcz1lLmRvbmUsZX0sZTpmdW5jdGlvbihlKXtjPSEwLG89ZX0sZjpmdW5jdGlvbigpe3RyeXtzfHxudWxsPT1yLnJldHVybnx8ci5yZXR1cm4oKX1maW5hbGx5e2lmKGMpdGhyb3cgb319fX1mdW5jdGlvbiBpKGUsdCl7aWYoZSl7aWYoInN0cmluZyI9PXR5cGVvZiBlKXJldHVybiBvKGUsdCk7dmFyIHI9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO3JldHVybiJPYmplY3QiPT09ciYmZS5jb25zdHJ1Y3RvciYmKHI9ZS5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PXJ8fCJTZXQiPT09cj9BcnJheS5mcm9tKGUpOiJBcmd1bWVudHMiPT09cnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3Qocik/byhlLHQpOnZvaWQgMH19ZnVuY3Rpb24gbyhlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgcj0wLG49bmV3IEFycmF5KHQpO3I8dDtyKyspbltyXT1lW3JdO3JldHVybiBufWZ1bmN0aW9uIHMoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBjKGUsdCl7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBhPXRbcl07YS5lbnVtZXJhYmxlPWEuZW51bWVyYWJsZXx8ITEsYS5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGEmJihhLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwodm9pZCAwLGk9ZnVuY3Rpb24oZSx0KXtpZigib2JqZWN0IiE9PW4oZSl8fG51bGw9PT1lKXJldHVybiBlO3ZhciByPWVbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1yKXt2YXIgYT1yLmNhbGwoZSwic3RyaW5nIik7aWYoIm9iamVjdCIhPT1uKGEpKXJldHVybiBhO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuIFN0cmluZyhlKX0oYS5rZXkpLCJzeW1ib2wiPT09bihpKT9pOlN0cmluZyhpKSksYSl9dmFyIGl9ZnVuY3Rpb24gdShlLHQscil7cmV0dXJuIHQmJmMoZS5wcm90b3R5cGUsdCksciYmYyhlLHIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGV9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuR2x5ZlRhYmxlPXZvaWQgMDt2YXIgbD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCl7dmFyIHI9dC5nbHlmVGFibGUsbj10LmlzR2x5cGhMb2NhdGlvbnNMb25nLGE9dC5sb2NhVGFibGUsaT10Lm51bUdseXBocztzKHRoaXMsZSksdGhpcy5nbHlwaHM9W107Zm9yKHZhciBvPW5ldyBEYXRhVmlldyhhLmJ1ZmZlcixhLmJ5dGVPZmZzZXQsYS5ieXRlTGVuZ3RoKSxjPW5ldyBEYXRhVmlldyhyLmJ1ZmZlcixyLmJ5dGVPZmZzZXQsci5ieXRlTGVuZ3RoKSx1PW4/NDoyLGw9bj9vLmdldFVpbnQzMigwKToyKm8uZ2V0VWludDE2KDApLGg9MCxkPTA7ZDxpO2QrKyl7aCs9dTt2YXIgcD1uP28uZ2V0VWludDMyKGgpOjIqby5nZXRVaW50MTYoaCk7aWYocCE9PWwpe3ZhciBnPWYucGFyc2UobCxjKTt0aGlzLmdseXBocy5wdXNoKGcpLGw9cH1lbHNlIHRoaXMuZ2x5cGhzLnB1c2gobmV3IGYoe30pKX19cmV0dXJuIHUoZSxbe2tleToiZ2V0U2l6ZSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nbHlwaHMucmVkdWNlKChmdW5jdGlvbihlLHQpe3JldHVybiBlKyh0LmdldFNpemUoKSszJi00KX0pLDApfX0se2tleToid3JpdGUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5nZXRTaXplKCksdD1uZXcgRGF0YVZpZXcobmV3IEFycmF5QnVmZmVyKGUpKSxyPWU+MTMxMDcwLG49cj80OjIsaT1uZXcgRGF0YVZpZXcobmV3IEFycmF5QnVmZmVyKCh0aGlzLmdseXBocy5sZW5ndGgrMSkqbikpO3I/aS5zZXRVaW50MzIoMCwwKTppLnNldFVpbnQxNigwLDApO3ZhciBvLHM9MCxjPTAsdT1hKHRoaXMuZ2x5cGhzKTt0cnl7Zm9yKHUucygpOyEobz11Lm4oKSkuZG9uZTspcz0ocys9by52YWx1ZS53cml0ZShzLHQpKSszJi00LGMrPW4scj9pLnNldFVpbnQzMihjLHMpOmkuc2V0VWludDE2KGMscz4+MSl9Y2F0Y2goZSl7dS5lKGUpfWZpbmFsbHl7dS5mKCl9cmV0dXJue2lzTG9jYXRpb25Mb25nOnIsbG9jYTpuZXcgVWludDhBcnJheShpLmJ1ZmZlciksZ2x5ZjpuZXcgVWludDhBcnJheSh0LmJ1ZmZlcil9fX0se2tleToic2NhbGUiLHZhbHVlOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0wLHI9dGhpcy5nbHlwaHMubGVuZ3RoO3Q8cjt0KyspdGhpcy5nbHlwaHNbdF0uc2NhbGUoZVt0XSl9fV0pLGV9KCk7dC5HbHlmVGFibGU9bDt2YXIgZj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCl7dmFyIHI9dC5oZWFkZXIsbj12b2lkIDA9PT1yP251bGw6cixhPXQuc2ltcGxlLGk9dm9pZCAwPT09YT9udWxsOmEsbz10LmNvbXBvc2l0ZXMsYz12b2lkIDA9PT1vP251bGw6bztzKHRoaXMsZSksdGhpcy5oZWFkZXI9bix0aGlzLnNpbXBsZT1pLHRoaXMuY29tcG9zaXRlcz1jfXJldHVybiB1KGUsW3trZXk6ImdldFNpemUiLHZhbHVlOmZ1bmN0aW9uKCl7aWYoIXRoaXMuaGVhZGVyKXJldHVybiAwO3ZhciBlPXRoaXMuc2ltcGxlP3RoaXMuc2ltcGxlLmdldFNpemUoKTp0aGlzLmNvbXBvc2l0ZXMucmVkdWNlKChmdW5jdGlvbihlLHQpe3JldHVybiBlK3QuZ2V0U2l6ZSgpfSksMCk7cmV0dXJuIHRoaXMuaGVhZGVyLmdldFNpemUoKStlfX0se2tleToid3JpdGUiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7aWYoIXRoaXMuaGVhZGVyKXJldHVybiAwO3ZhciByPWU7aWYoZSs9dGhpcy5oZWFkZXIud3JpdGUoZSx0KSx0aGlzLnNpbXBsZSllKz10aGlzLnNpbXBsZS53cml0ZShlLHQpO2Vsc2V7dmFyIG4saT1hKHRoaXMuY29tcG9zaXRlcyk7dHJ5e2ZvcihpLnMoKTshKG49aS5uKCkpLmRvbmU7KWUrPW4udmFsdWUud3JpdGUoZSx0KX1jYXRjaChlKXtpLmUoZSl9ZmluYWxseXtpLmYoKX19cmV0dXJuIGUtcn19LHtrZXk6InNjYWxlIix2YWx1ZTpmdW5jdGlvbihlKXtpZih0aGlzLmhlYWRlcil7dmFyIHQ9KHRoaXMuaGVhZGVyLnhNaW4rdGhpcy5oZWFkZXIueE1heCkvMjtpZih0aGlzLmhlYWRlci5zY2FsZSh0LGUpLHRoaXMuc2ltcGxlKXRoaXMuc2ltcGxlLnNjYWxlKHQsZSk7ZWxzZXt2YXIgcixuPWEodGhpcy5jb21wb3NpdGVzKTt0cnl7Zm9yKG4ucygpOyEocj1uLm4oKSkuZG9uZTspci52YWx1ZS5zY2FsZSh0LGUpfWNhdGNoKGUpe24uZShlKX1maW5hbGx5e24uZigpfX19fX1dLFt7a2V5OiJwYXJzZSIsdmFsdWU6ZnVuY3Rpb24odCxuKXt2YXIgYT1yKGgucGFyc2UodCxuKSwyKSxpPWFbMF0sbz1hWzFdO2lmKHQrPWksby5udW1iZXJPZkNvbnRvdXJzPDApe2Zvcih2YXIgcz1bXTs7KXt2YXIgYz1yKGcucGFyc2UodCxuKSwyKSx1PWNbMF0sbD1jWzFdO2lmKHQrPXUscy5wdXNoKGwpLCEoMzImbC5mbGFncykpYnJlYWt9cmV0dXJuIG5ldyBlKHtoZWFkZXI6byxjb21wb3NpdGVzOnN9KX1yZXR1cm4gbmV3IGUoe2hlYWRlcjpvLHNpbXBsZTpwLnBhcnNlKHQsbixvLm51bWJlck9mQ29udG91cnMpfSl9fV0pLGV9KCksaD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCl7dmFyIHI9dC5udW1iZXJPZkNvbnRvdXJzLG49dC54TWluLGE9dC55TWluLGk9dC54TWF4LG89dC55TWF4O3ModGhpcyxlKSx0aGlzLm51bWJlck9mQ29udG91cnM9cix0aGlzLnhNaW49bix0aGlzLnlNaW49YSx0aGlzLnhNYXg9aSx0aGlzLnlNYXg9b31yZXR1cm4gdShlLFt7a2V5OiJnZXRTaXplIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiAxMH19LHtrZXk6IndyaXRlIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiB0LnNldEludDE2KGUsdGhpcy5udW1iZXJPZkNvbnRvdXJzKSx0LnNldEludDE2KGUrMix0aGlzLnhNaW4pLHQuc2V0SW50MTYoZSs0LHRoaXMueU1pbiksdC5zZXRJbnQxNihlKzYsdGhpcy54TWF4KSx0LnNldEludDE2KGUrOCx0aGlzLnlNYXgpLDEwfX0se2tleToic2NhbGUiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dGhpcy54TWluPU1hdGgucm91bmQoZSsodGhpcy54TWluLWUpKnQpLHRoaXMueE1heD1NYXRoLnJvdW5kKGUrKHRoaXMueE1heC1lKSp0KX19XSxbe2tleToicGFyc2UiLHZhbHVlOmZ1bmN0aW9uKHQscil7cmV0dXJuWzEwLG5ldyBlKHtudW1iZXJPZkNvbnRvdXJzOnIuZ2V0SW50MTYodCkseE1pbjpyLmdldEludDE2KHQrMikseU1pbjpyLmdldEludDE2KHQrNCkseE1heDpyLmdldEludDE2KHQrNikseU1heDpyLmdldEludDE2KHQrOCl9KV19fV0pLGV9KCksZD11KChmdW5jdGlvbiBlKHQpe3ZhciByPXQuZmxhZ3Msbj10LnhDb29yZGluYXRlcyxhPXQueUNvb3JkaW5hdGVzO3ModGhpcyxlKSx0aGlzLnhDb29yZGluYXRlcz1uLHRoaXMueUNvb3JkaW5hdGVzPWEsdGhpcy5mbGFncz1yfSkpLHA9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQpe3ZhciByPXQuY29udG91cnMsbj10Lmluc3RydWN0aW9ucztzKHRoaXMsZSksdGhpcy5jb250b3Vycz1yLHRoaXMuaW5zdHJ1Y3Rpb25zPW59cmV0dXJuIHUoZSxbe2tleToiZ2V0U2l6ZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZSx0PTIqdGhpcy5jb250b3Vycy5sZW5ndGgrMit0aGlzLmluc3RydWN0aW9ucy5sZW5ndGgscj0wLG49MCxpPWEodGhpcy5jb250b3Vycyk7dHJ5e2ZvcihpLnMoKTshKGU9aS5uKCkpLmRvbmU7KXt2YXIgbz1lLnZhbHVlO3QrPW8uZmxhZ3MubGVuZ3RoO2Zvcih2YXIgcz0wLGM9by54Q29vcmRpbmF0ZXMubGVuZ3RoO3M8YztzKyspe3ZhciB1PW8ueENvb3JkaW5hdGVzW3NdLGw9by55Q29vcmRpbmF0ZXNbc10sZj1NYXRoLmFicyh1LXIpO2Y+MjU1P3QrPTI6Zj4wJiYodCs9MSkscj11LChmPU1hdGguYWJzKGwtbikpPjI1NT90Kz0yOmY+MCYmKHQrPTEpLG49bH19fWNhdGNoKGUpe2kuZShlKX1maW5hbGx5e2kuZigpfXJldHVybiB0fX0se2tleToid3JpdGUiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIHIsbj1lLGk9W10sbz1bXSxzPVtdLGM9MCx1PTAsbD1hKHRoaXMuY29udG91cnMpO3RyeXtmb3IobC5zKCk7IShyPWwubigpKS5kb25lOyl7Zm9yKHZhciBmPXIudmFsdWUsaD0wLGQ9Zi54Q29vcmRpbmF0ZXMubGVuZ3RoO2g8ZDtoKyspe3ZhciBwPWYuZmxhZ3NbaF0sZz1mLnhDb29yZGluYXRlc1toXSx2PWctYztpZigwPT09dilwfD0xNixpLnB1c2goMCk7ZWxzZXt2YXIgeT1NYXRoLmFicyh2KTt5PD0yNTU/KHB8PXY+PTA/MTg6MixpLnB1c2goeSkpOmkucHVzaCh2KX1jPWc7dmFyIG09Zi55Q29vcmRpbmF0ZXNbaF07aWYoMD09KHY9bS11KSlwfD0zMixvLnB1c2goMCk7ZWxzZXt2YXIgYj1NYXRoLmFicyh2KTtiPD0yNTU/KHB8PXY+PTA/MzY6NCxvLnB1c2goYikpOm8ucHVzaCh2KX11PW0scy5wdXNoKHApfXQuc2V0VWludDE2KGUsaS5sZW5ndGgtMSksZSs9Mn19Y2F0Y2goZSl7bC5lKGUpfWZpbmFsbHl7bC5mKCl9dC5zZXRVaW50MTYoZSx0aGlzLmluc3RydWN0aW9ucy5sZW5ndGgpLGUrPTIsdGhpcy5pbnN0cnVjdGlvbnMubGVuZ3RoJiYobmV3IFVpbnQ4QXJyYXkodC5idWZmZXIsMCx0LmJ1ZmZlci5ieXRlTGVuZ3RoKS5zZXQodGhpcy5pbnN0cnVjdGlvbnMsZSksZSs9dGhpcy5pbnN0cnVjdGlvbnMubGVuZ3RoKTtmb3IodmFyIHc9MCxrPXM7dzxrLmxlbmd0aDt3Kyspe3ZhciBTPWtbd107dC5zZXRVaW50OChlKyssUyl9Zm9yKHZhciB4PTAsTz1pLmxlbmd0aDt4PE87eCsrKXt2YXIgQT1pW3hdLEM9c1t4XTsyJkM/dC5zZXRVaW50OChlKyssQSk6MTYmQ3x8KHQuc2V0SW50MTYoZSxBKSxlKz0yKX1mb3IodmFyIEY9MCxQPW8ubGVuZ3RoO0Y8UDtGKyspe3ZhciBUPW9bRl0sST1zW0ZdOzQmST90LnNldFVpbnQ4KGUrKyxUKTozMiZJfHwodC5zZXRJbnQxNihlLFQpLGUrPTIpfXJldHVybiBlLW59fSx7a2V5OiJzY2FsZSIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgcixuPWEodGhpcy5jb250b3Vycyk7dHJ5e2ZvcihuLnMoKTshKHI9bi5uKCkpLmRvbmU7KXt2YXIgaT1yLnZhbHVlO2lmKDAhPT1pLnhDb29yZGluYXRlcy5sZW5ndGgpZm9yKHZhciBvPTAscz1pLnhDb29yZGluYXRlcy5sZW5ndGg7bzxzO28rKylpLnhDb29yZGluYXRlc1tvXT1NYXRoLnJvdW5kKGUrKGkueENvb3JkaW5hdGVzW29dLWUpKnQpfX1jYXRjaChlKXtuLmUoZSl9ZmluYWxseXtuLmYoKX19fV0sW3trZXk6InBhcnNlIix2YWx1ZTpmdW5jdGlvbih0LHIsbil7Zm9yKHZhciBhPVtdLGk9MDtpPG47aSsrKXt2YXIgbz1yLmdldFVpbnQxNih0KTt0Kz0yLGEucHVzaChvKX12YXIgcz1hW24tMV0rMSxjPXIuZ2V0VWludDE2KHQpO3QrPTI7dmFyIHU9bmV3IFVpbnQ4QXJyYXkocikuc2xpY2UodCx0K2MpO3QrPWM7Zm9yKHZhciBsPVtdLGY9MDtmPHM7dCsrLGYrKyl7dmFyIGg9ci5nZXRVaW50OCh0KTtpZihsLnB1c2goaCksOCZoKXt2YXIgcD1yLmdldFVpbnQ4KCsrdCk7aF49ODtmb3IodmFyIGc9MDtnPHA7ZysrKWwucHVzaChoKTtmKz1wfX1mb3IodmFyIHY9W10seT1bXSxtPVtdLGI9W10sdz1bXSxrPTAsUz0wLHg9MDt4PHM7eCsrKXt2YXIgTz1sW3hdO2lmKDImTyl7dmFyIEE9ci5nZXRVaW50OCh0KyspO1MrPTE2Jk8/QTotQSx5LnB1c2goUyl9ZWxzZSAxNiZPfHwoUys9ci5nZXRJbnQxNih0KSx0Kz0yKSx5LnB1c2goUyk7YVtrXT09PXgmJihrKyssdi5wdXNoKHkpLHk9W10pfVM9MCxrPTA7Zm9yKHZhciBDPTA7QzxzO0MrKyl7dmFyIEY9bFtDXTtpZig0JkYpe3ZhciBQPXIuZ2V0VWludDgodCsrKTtTKz0zMiZGP1A6LVAsbS5wdXNoKFMpfWVsc2UgMzImRnx8KFMrPXIuZ2V0SW50MTYodCksdCs9MiksbS5wdXNoKFMpO2IucHVzaCgxJkZ8NjQmRiksYVtrXT09PUMmJih5PXZba10saysrLHcucHVzaChuZXcgZCh7ZmxhZ3M6Yix4Q29vcmRpbmF0ZXM6eSx5Q29vcmRpbmF0ZXM6bX0pKSxtPVtdLGI9W10pfXJldHVybiBuZXcgZSh7Y29udG91cnM6dyxpbnN0cnVjdGlvbnM6dX0pfX1dKSxlfSgpLGc9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQpe3ZhciByPXQuZmxhZ3Msbj10LmdseXBoSW5kZXgsYT10LmFyZ3VtZW50MSxpPXQuYXJndW1lbnQyLG89dC50cmFuc2YsYz10Lmluc3RydWN0aW9ucztzKHRoaXMsZSksdGhpcy5mbGFncz1yLHRoaXMuZ2x5cGhJbmRleD1uLHRoaXMuYXJndW1lbnQxPWEsdGhpcy5hcmd1bWVudDI9aSx0aGlzLnRyYW5zZj1vLHRoaXMuaW5zdHJ1Y3Rpb25zPWN9cmV0dXJuIHUoZSxbe2tleToiZ2V0U2l6ZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT00KzIqdGhpcy50cmFuc2YubGVuZ3RoO3JldHVybiAyNTYmdGhpcy5mbGFncyYmKGUrPTIrdGhpcy5pbnN0cnVjdGlvbnMubGVuZ3RoKSxlKz0yLDImdGhpcy5mbGFncz90aGlzLmFyZ3VtZW50MT49LTEyOCYmdGhpcy5hcmd1bWVudDE8PTEyNyYmdGhpcy5hcmd1bWVudDI+PS0xMjgmJnRoaXMuYXJndW1lbnQyPD0xMjd8fChlKz0yKTp0aGlzLmFyZ3VtZW50MT49MCYmdGhpcy5hcmd1bWVudDE8PTI1NSYmdGhpcy5hcmd1bWVudDI+PTAmJnRoaXMuYXJndW1lbnQyPD0yNTV8fChlKz0yKSxlfX0se2tleToid3JpdGUiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIHI9ZTtyZXR1cm4gMiZ0aGlzLmZsYWdzP3RoaXMuYXJndW1lbnQxPj0tMTI4JiZ0aGlzLmFyZ3VtZW50MTw9MTI3JiZ0aGlzLmFyZ3VtZW50Mj49LTEyOCYmdGhpcy5hcmd1bWVudDI8PTEyN3x8KHRoaXMuZmxhZ3N8PTEpOnRoaXMuYXJndW1lbnQxPj0wJiZ0aGlzLmFyZ3VtZW50MTw9MjU1JiZ0aGlzLmFyZ3VtZW50Mj49MCYmdGhpcy5hcmd1bWVudDI8PTI1NXx8KHRoaXMuZmxhZ3N8PTEpLHQuc2V0VWludDE2KGUsdGhpcy5mbGFncyksdC5zZXRVaW50MTYoZSsyLHRoaXMuZ2x5cGhJbmRleCksZSs9NCwxJnRoaXMuZmxhZ3M/KDImdGhpcy5mbGFncz8odC5zZXRJbnQxNihlLHRoaXMuYXJndW1lbnQxKSx0LnNldEludDE2KGUrMix0aGlzLmFyZ3VtZW50MikpOih0LnNldFVpbnQxNihlLHRoaXMuYXJndW1lbnQxKSx0LnNldFVpbnQxNihlKzIsdGhpcy5hcmd1bWVudDIpKSxlKz00KToodC5zZXRVaW50OChlLHRoaXMuYXJndW1lbnQxKSx0LnNldFVpbnQ4KGUrMSx0aGlzLmFyZ3VtZW50MiksZSs9MiksMjU2JnRoaXMuZmxhZ3MmJih0LnNldFVpbnQxNihlLHRoaXMuaW5zdHJ1Y3Rpb25zLmxlbmd0aCksZSs9Mix0aGlzLmluc3RydWN0aW9ucy5sZW5ndGgmJihuZXcgVWludDhBcnJheSh0LmJ1ZmZlciwwLHQuYnVmZmVyLmJ5dGVMZW5ndGgpLnNldCh0aGlzLmluc3RydWN0aW9ucyxlKSxlKz10aGlzLmluc3RydWN0aW9ucy5sZW5ndGgpKSxlLXJ9fSx7a2V5OiJzY2FsZSIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt9fV0sW3trZXk6InBhcnNlIix2YWx1ZTpmdW5jdGlvbih0LHIpe3ZhciBuLGEsaT10LG89W10scz1yLmdldFVpbnQxNih0KSxjPXIuZ2V0VWludDE2KHQrMik7dCs9NCwxJnM/KDImcz8obj1yLmdldEludDE2KHQpLGE9ci5nZXRJbnQxNih0KzIpKToobj1yLmdldFVpbnQxNih0KSxhPXIuZ2V0VWludDE2KHQrMikpLHQrPTQsc149MSk6KDImcz8obj1yLmdldEludDgodCksYT1yLmdldEludDgodCsxKSk6KG49ci5nZXRVaW50OCh0KSxhPXIuZ2V0VWludDgodCsxKSksdCs9MiksOCZzPyhvLnB1c2goci5nZXRVaW50MTYodCkpLHQrPTIpOjY0JnM/KG8ucHVzaChyLmdldFVpbnQxNih0KSxyLmdldFVpbnQxNih0KzIpKSx0Kz00KToxMjgmcyYmKG8ucHVzaChyLmdldFVpbnQxNih0KSxyLmdldFVpbnQxNih0KzIpLHIuZ2V0VWludDE2KHQrNCksci5nZXRVaW50MTYodCs2KSksdCs9OCk7dmFyIHU9bnVsbDtpZigyNTYmcyl7dmFyIGw9ci5nZXRVaW50MTYodCk7dCs9Mix1PW5ldyBVaW50OEFycmF5KHIpLnNsaWNlKHQsdCtsKSx0Kz1sfXJldHVyblt0LWksbmV3IGUoe2ZsYWdzOnMsZ2x5cGhJbmRleDpjLGFyZ3VtZW50MTpuLGFyZ3VtZW50MjphLHRyYW5zZjpvLGluc3RydWN0aW9uczp1fSldfX1dKSxlfSgpfSwoZSx0LHIpPT57ZnVuY3Rpb24gbihlKXtyZXR1cm4gbj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZX0sbihlKX1PYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5PcGVuVHlwZUZpbGVCdWlsZGVyPXZvaWQgMDt2YXIgYT1yKDEzNSksaT1yKDIpO2Z1bmN0aW9uIG8oZSx0KXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIGE9dFtyXTthLmVudW1lcmFibGU9YS5lbnVtZXJhYmxlfHwhMSxhLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gYSYmKGEud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCh2b2lkIDAsaT1mdW5jdGlvbihlLHQpe2lmKCJvYmplY3QiIT09bihlKXx8bnVsbD09PWUpcmV0dXJuIGU7dmFyIHI9ZVtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PXIpe3ZhciBhPXIuY2FsbChlLCJzdHJpbmciKTtpZigib2JqZWN0IiE9PW4oYSkpcmV0dXJuIGE7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4gU3RyaW5nKGUpfShhLmtleSksInN5bWJvbCI9PT1uKGkpP2k6U3RyaW5nKGkpKSxhKX12YXIgaX1mdW5jdGlvbiBzKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciByPTAsbj1uZXcgQXJyYXkodCk7cjx0O3IrKyluW3JdPWVbcl07cmV0dXJuIG59ZnVuY3Rpb24gYyhlLHQscil7ZVt0XT1yPj44JjI1NSxlW3QrMV09MjU1JnJ9ZnVuY3Rpb24gdShlLHQscil7ZVt0XT1yPj4yNCYyNTUsZVt0KzFdPXI+PjE2JjI1NSxlW3QrMl09cj4+OCYyNTUsZVt0KzNdPTI1NSZyfWZ1bmN0aW9uIGwoZSx0LHIpe2lmKHIgaW5zdGFuY2VvZiBVaW50OEFycmF5KWUuc2V0KHIsdCk7ZWxzZSBpZigic3RyaW5nIj09dHlwZW9mIHIpZm9yKHZhciBuPTAsYT1yLmxlbmd0aDtuPGE7bisrKWVbdCsrXT0yNTUmci5jaGFyQ29kZUF0KG4pO2Vsc2V7dmFyIGksbz1mdW5jdGlvbihlLHQpe3ZhciByPSJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbIkBAaXRlcmF0b3IiXTtpZighcil7aWYoQXJyYXkuaXNBcnJheShlKXx8KHI9ZnVuY3Rpb24oZSx0KXtpZihlKXtpZigic3RyaW5nIj09dHlwZW9mIGUpcmV0dXJuIHMoZSx0KTt2YXIgcj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7cmV0dXJuIk9iamVjdCI9PT1yJiZlLmNvbnN0cnVjdG9yJiYocj1lLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09cnx8IlNldCI9PT1yP0FycmF5LmZyb20oZSk6IkFyZ3VtZW50cyI9PT1yfHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChyKT9zKGUsdCk6dm9pZCAwfX0oZSkpfHx0JiZlJiYibnVtYmVyIj09dHlwZW9mIGUubGVuZ3RoKXtyJiYoZT1yKTt2YXIgbj0wLGE9ZnVuY3Rpb24oKXt9O3JldHVybntzOmEsbjpmdW5jdGlvbigpe3JldHVybiBuPj1lLmxlbmd0aD97ZG9uZTohMH06e2RvbmU6ITEsdmFsdWU6ZVtuKytdfX0sZTpmdW5jdGlvbihlKXt0aHJvdyBlfSxmOmF9fXRocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBpdGVyYXRlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX12YXIgaSxvPSEwLGM9ITE7cmV0dXJue3M6ZnVuY3Rpb24oKXtyPXIuY2FsbChlKX0sbjpmdW5jdGlvbigpe3ZhciBlPXIubmV4dCgpO3JldHVybiBvPWUuZG9uZSxlfSxlOmZ1bmN0aW9uKGUpe2M9ITAsaT1lfSxmOmZ1bmN0aW9uKCl7dHJ5e298fG51bGw9PXIucmV0dXJufHxyLnJldHVybigpfWZpbmFsbHl7aWYoYyl0aHJvdyBpfX19fShyKTt0cnl7Zm9yKG8ucygpOyEoaT1vLm4oKSkuZG9uZTspe3ZhciBjPWkudmFsdWU7ZVt0KytdPTI1NSZjfX1jYXRjaChlKXtvLmUoZSl9ZmluYWxseXtvLmYoKX19fXZhciBmPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0KXshZnVuY3Rpb24oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxlKSx0aGlzLnNmbnQ9dCx0aGlzLnRhYmxlcz1PYmplY3QuY3JlYXRlKG51bGwpfXZhciB0LHIsbjtyZXR1cm4gdD1lLG49W3trZXk6ImdldFNlYXJjaFBhcmFtcyIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtmb3IodmFyIHI9MSxuPTA7KHJeZSk+cjspcjw8PTEsbisrO3ZhciBhPXIqdDtyZXR1cm57cmFuZ2U6YSxlbnRyeTpuLHJhbmdlU2hpZnQ6dCplLWF9fX1dLChyPVt7a2V5OiJ0b0FycmF5Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuc2ZudCxyPXRoaXMudGFibGVzLG49T2JqZWN0LmtleXMocik7bi5zb3J0KCk7dmFyIG8scyxmLGgsZCxwPW4ubGVuZ3RoLGc9MTIrMTYqcCx2PVtnXTtmb3Iobz0wO288cDtvKyspZys9KChoPXJbbltvXV0pLmxlbmd0aCszJi00KT4+PjAsdi5wdXNoKGcpO3ZhciB5PW5ldyBVaW50OEFycmF5KGcpO2ZvcihvPTA7bzxwO28rKyloPXJbbltvXV0sbCh5LHZbb10saCk7InRydWUiPT09dCYmKHQ9KDAsaS5zdHJpbmczMikoNjU1MzYpKSx5WzBdPTI1NSZ0LmNoYXJDb2RlQXQoMCkseVsxXT0yNTUmdC5jaGFyQ29kZUF0KDEpLHlbMl09MjU1JnQuY2hhckNvZGVBdCgyKSx5WzNdPTI1NSZ0LmNoYXJDb2RlQXQoMyksYyh5LDQscCk7dmFyIG09ZS5nZXRTZWFyY2hQYXJhbXMocCwxNik7Zm9yKGMoeSw2LG0ucmFuZ2UpLGMoeSw4LG0uZW50cnkpLGMoeSwxMCxtLnJhbmdlU2hpZnQpLGc9MTIsbz0wO288cDtvKyspe2Q9bltvXSx5W2ddPTI1NSZkLmNoYXJDb2RlQXQoMCkseVtnKzFdPTI1NSZkLmNoYXJDb2RlQXQoMSkseVtnKzJdPTI1NSZkLmNoYXJDb2RlQXQoMikseVtnKzNdPTI1NSZkLmNoYXJDb2RlQXQoMyk7dmFyIGI9MDtmb3Iocz12W29dLGY9dltvKzFdO3M8ZjtzKz00KWI9YisoMCxhLnJlYWRVaW50MzIpKHkscyk+Pj4wO3UoeSxnKzQsYiksdSh5LGcrOCx2W29dKSx1KHksZysxMixyW2RdLmxlbmd0aCksZys9MTZ9cmV0dXJuIHl9fSx7a2V5OiJhZGRUYWJsZSIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtpZihlIGluIHRoaXMudGFibGVzKXRocm93IG5ldyBFcnJvcigiVGFibGUgIitlKyIgYWxyZWFkeSBleGlzdHMiKTt0aGlzLnRhYmxlc1tlXT10fX1dKSYmbyh0LnByb3RvdHlwZSxyKSxuJiZvKHQsbiksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZX0oKTt0Lk9wZW5UeXBlRmlsZUJ1aWxkZXI9Zn0sKGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LlR5cGUxRm9udD12b2lkIDA7dmFyIG49cigxNjQpLGE9cigyKSxpPXIoMTY3KSxvPXIoMTM1KSxzPXIoMTM5KSxjPXIoMTc4KTtmdW5jdGlvbiB1KGUpe3JldHVybiB1PSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSx1KGUpfWZ1bmN0aW9uIGwoZSx0KXt2YXIgcj0idW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlWyJAQGl0ZXJhdG9yIl07aWYoIXIpe2lmKEFycmF5LmlzQXJyYXkoZSl8fChyPWZ1bmN0aW9uKGUsdCl7aWYoZSl7aWYoInN0cmluZyI9PXR5cGVvZiBlKXJldHVybiBmKGUsdCk7dmFyIHI9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO3JldHVybiJPYmplY3QiPT09ciYmZS5jb25zdHJ1Y3RvciYmKHI9ZS5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PXJ8fCJTZXQiPT09cj9BcnJheS5mcm9tKGUpOiJBcmd1bWVudHMiPT09cnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3Qocik/ZihlLHQpOnZvaWQgMH19KGUpKXx8dCYmZSYmIm51bWJlciI9PXR5cGVvZiBlLmxlbmd0aCl7ciYmKGU9cik7dmFyIG49MCxhPWZ1bmN0aW9uKCl7fTtyZXR1cm57czphLG46ZnVuY3Rpb24oKXtyZXR1cm4gbj49ZS5sZW5ndGg/e2RvbmU6ITB9Ontkb25lOiExLHZhbHVlOmVbbisrXX19LGU6ZnVuY3Rpb24oZSl7dGhyb3cgZX0sZjphfX10aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gaXRlcmF0ZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9dmFyIGksbz0hMCxzPSExO3JldHVybntzOmZ1bmN0aW9uKCl7cj1yLmNhbGwoZSl9LG46ZnVuY3Rpb24oKXt2YXIgZT1yLm5leHQoKTtyZXR1cm4gbz1lLmRvbmUsZX0sZTpmdW5jdGlvbihlKXtzPSEwLGk9ZX0sZjpmdW5jdGlvbigpe3RyeXtvfHxudWxsPT1yLnJldHVybnx8ci5yZXR1cm4oKX1maW5hbGx5e2lmKHMpdGhyb3cgaX19fX1mdW5jdGlvbiBmKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciByPTAsbj1uZXcgQXJyYXkodCk7cjx0O3IrKyluW3JdPWVbcl07cmV0dXJuIG59ZnVuY3Rpb24gaChlLHQpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgbj10W3JdO24uZW51bWVyYWJsZT1uLmVudW1lcmFibGV8fCExLG4uY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBuJiYobi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsKHZvaWQgMCxhPWZ1bmN0aW9uKGUsdCl7aWYoIm9iamVjdCIhPT11KGUpfHxudWxsPT09ZSlyZXR1cm4gZTt2YXIgcj1lW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09cil7dmFyIG49ci5jYWxsKGUsInN0cmluZyIpO2lmKCJvYmplY3QiIT09dShuKSlyZXR1cm4gbjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybiBTdHJpbmcoZSl9KG4ua2V5KSwic3ltYm9sIj09PXUoYSk/YTpTdHJpbmcoYSkpLG4pfXZhciBhfWZ1bmN0aW9uIGQoZSx0LHIpe2Zvcih2YXIgbj1lLmxlbmd0aCxhPXQubGVuZ3RoLGk9bi1hLHM9cixjPSExO3M8aTspe2Zvcih2YXIgdT0wO3U8YSYmZVtzK3VdPT09dFt1XTspdSsrO2lmKHU+PWEpe2ZvcihzKz11O3M8biYmKDAsby5pc1doaXRlU3BhY2UpKGVbc10pOylzKys7Yz0hMDticmVha31zKyt9cmV0dXJue2ZvdW5kOmMsbGVuZ3RoOnN9fXZhciBwPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0LHIsbil7IWZ1bmN0aW9uKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsZSk7dmFyIG89bi5sZW5ndGgxLHU9KG4ubGVuZ3RoMixyLnBlZWtCeXRlcyg2KSksbD0xMjg9PT11WzBdJiYxPT09dVsxXTtsJiYoci5za2lwKDYpLG89dVs1XTw8MjR8dVs0XTw8MTZ8dVszXTw8OHx1WzJdKTt2YXIgZj1mdW5jdGlvbihlLHQpe3ZhciByLG4saSxvLGM9WzEwMSwxMDEsMTIwLDEwMSw5OV0sdT1lLnBvczt0cnl7bj0ocj1lLmdldEJ5dGVzKHQpKS5sZW5ndGh9Y2F0Y2goZSl7fWlmKG49PT10JiYoaT1kKHIsYyx0LTIqYy5sZW5ndGgpKS5mb3VuZCYmaS5sZW5ndGg9PT10KXJldHVybntzdHJlYW06bmV3IHMuU3RyZWFtKHIpLGxlbmd0aDp0fTtmb3IoKDAsYS53YXJuKSgnSW52YWxpZCAiTGVuZ3RoMSIgcHJvcGVydHkgaW4gVHlwZTEgZm9udCAtLSB0cnlpbmcgdG8gcmVjb3Zlci4nKSxlLnBvcz11OzAhPT0oaT1kKGUucGVla0J5dGVzKDIwNDgpLGMsMCkpLmxlbmd0aDspaWYoZS5wb3MrPWkubGVuZ3RoLGkuZm91bmQpe289ZS5wb3MtdTticmVha31yZXR1cm4gZS5wb3M9dSxvP3tzdHJlYW06bmV3IHMuU3RyZWFtKGUuZ2V0Qnl0ZXMobykpLGxlbmd0aDpvfTooKDAsYS53YXJuKSgnVW5hYmxlIHRvIHJlY292ZXIgIkxlbmd0aDEiIHByb3BlcnR5IGluIFR5cGUxIGZvbnQgLS0gdXNpbmcgYXMgaXMuJykse3N0cmVhbTpuZXcgcy5TdHJlYW0oZS5nZXRCeXRlcyh0KSksbGVuZ3RoOnR9KX0ocixvKTtuZXcgYy5UeXBlMVBhcnNlcihmLnN0cmVhbSwhMSxpLlNFQUNfQU5BTFlTSVNfRU5BQkxFRCkuZXh0cmFjdEZvbnRIZWFkZXIobiksbCYmKCh1PXIuZ2V0Qnl0ZXMoNikpWzVdLHVbNF0sdVszXSx1WzJdKTt2YXIgaD1mdW5jdGlvbihlLHQpe3ZhciByPWUuZ2V0Qnl0ZXMoKTtpZigwPT09ci5sZW5ndGgpdGhyb3cgbmV3IGEuRm9ybWF0RXJyb3IoImdldEVleGVjQmxvY2sgLSBubyBmb250IHByb2dyYW0gZm91bmQuIik7cmV0dXJue3N0cmVhbTpuZXcgcy5TdHJlYW0ociksbGVuZ3RoOnIubGVuZ3RofX0ocikscD1uZXcgYy5UeXBlMVBhcnNlcihoLnN0cmVhbSwhMCxpLlNFQUNfQU5BTFlTSVNfRU5BQkxFRCkuZXh0cmFjdEZvbnRQcm9ncmFtKG4pO2Zvcih2YXIgZyBpbiBwLnByb3BlcnRpZXMpbltnXT1wLnByb3BlcnRpZXNbZ107dmFyIHY9cC5jaGFyc3RyaW5ncyx5PXRoaXMuZ2V0VHlwZTJDaGFyc3RyaW5ncyh2KSxtPXRoaXMuZ2V0VHlwZTJTdWJycyhwLnN1YnJzKTt0aGlzLmNoYXJzdHJpbmdzPXYsdGhpcy5kYXRhPXRoaXMud3JhcCh0LHksdGhpcy5jaGFyc3RyaW5ncyxtLG4pLHRoaXMuc2VhY3M9dGhpcy5nZXRTZWFjcyhwLmNoYXJzdHJpbmdzKX12YXIgdCxyO3JldHVybiB0PWUsKHI9W3trZXk6Im51bUdseXBocyIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2hhcnN0cmluZ3MubGVuZ3RoKzF9fSx7a2V5OiJnZXRDaGFyc2V0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlLHQ9WyIubm90ZGVmIl0scj1sKHRoaXMuY2hhcnN0cmluZ3MpO3RyeXtmb3Ioci5zKCk7IShlPXIubigpKS5kb25lOyl7dmFyIG49ZS52YWx1ZS5nbHlwaE5hbWU7dC5wdXNoKG4pfX1jYXRjaChlKXtyLmUoZSl9ZmluYWxseXtyLmYoKX1yZXR1cm4gdH19LHtrZXk6ImdldEdseXBoTWFwcGluZyIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5jaGFyc3RyaW5ncztpZihlLmNvbXBvc2l0ZSl7Zm9yKHZhciByPU9iamVjdC5jcmVhdGUobnVsbCksbj0wLGE9dC5sZW5ndGg7bjxhO24rKylyW2UuY01hcC5jaGFyQ29kZU9mKG4pXT1uKzE7cmV0dXJuIHJ9dmFyIG8scyxjPVsiLm5vdGRlZiJdO2ZvcihzPTA7czx0Lmxlbmd0aDtzKyspYy5wdXNoKHRbc10uZ2x5cGhOYW1lKTt2YXIgdT1lLmJ1aWx0SW5FbmNvZGluZztpZih1KWZvcih2YXIgbCBpbiBvPU9iamVjdC5jcmVhdGUobnVsbCksdSkocz1jLmluZGV4T2YodVtsXSkpPj0wJiYob1tsXT1zKTtyZXR1cm4oMCxpLnR5cGUxRm9udEdseXBoTWFwcGluZykoZSxvLGMpfX0se2tleToiaGFzR2x5cGhJZCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIShlPDB8fGU+PXRoaXMubnVtR2x5cGhzKSYmKDA9PT1lfHx0aGlzLmNoYXJzdHJpbmdzW2UtMV0uY2hhcnN0cmluZy5sZW5ndGg+MCl9fSx7a2V5OiJnZXRTZWFjcyIsdmFsdWU6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PVtdLHI9MCxuPWUubGVuZ3RoO3I8bjtyKyspe3ZhciBhPWVbcl07YS5zZWFjJiYodFtyKzFdPWEuc2VhYyl9cmV0dXJuIHR9fSx7a2V5OiJnZXRUeXBlMkNoYXJzdHJpbmdzIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdCxyPVtdLG49bChlKTt0cnl7Zm9yKG4ucygpOyEodD1uLm4oKSkuZG9uZTspe3ZhciBhPXQudmFsdWU7ci5wdXNoKGEuY2hhcnN0cmluZyl9fWNhdGNoKGUpe24uZShlKX1maW5hbGx5e24uZigpfXJldHVybiByfX0se2tleToiZ2V0VHlwZTJTdWJycyIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQscj1lLmxlbmd0aDt0PXI8MTEzMz8xMDc6cjwzMzc2OT8xMTMxOjMyNzY4O3ZhciBuLGE9W107Zm9yKG49MDtuPHQ7bisrKWEucHVzaChbMTFdKTtmb3Iobj0wO248cjtuKyspYS5wdXNoKGVbbl0pO3JldHVybiBhfX0se2tleToid3JhcCIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIsYSxpKXt2YXIgbz1uZXcgbi5DRkY7by5oZWFkZXI9bmV3IG4uQ0ZGSGVhZGVyKDEsMCw0LDQpLG8ubmFtZXM9W2VdO3ZhciBzPW5ldyBuLkNGRlRvcERpY3Q7cy5zZXRCeU5hbWUoInZlcnNpb24iLDM5MSkscy5zZXRCeU5hbWUoIk5vdGljZSIsMzkyKSxzLnNldEJ5TmFtZSgiRnVsbE5hbWUiLDM5Mykscy5zZXRCeU5hbWUoIkZhbWlseU5hbWUiLDM5NCkscy5zZXRCeU5hbWUoIldlaWdodCIsMzk1KSxzLnNldEJ5TmFtZSgiRW5jb2RpbmciLG51bGwpLHMuc2V0QnlOYW1lKCJGb250TWF0cml4IixpLmZvbnRNYXRyaXgpLHMuc2V0QnlOYW1lKCJGb250QkJveCIsaS5iYm94KSxzLnNldEJ5TmFtZSgiY2hhcnNldCIsbnVsbCkscy5zZXRCeU5hbWUoIkNoYXJTdHJpbmdzIixudWxsKSxzLnNldEJ5TmFtZSgiUHJpdmF0ZSIsbnVsbCksby50b3BEaWN0PXM7dmFyIGM9bmV3IG4uQ0ZGU3RyaW5ncztjLmFkZCgiVmVyc2lvbiAwLjExIiksYy5hZGQoIlNlZSBvcmlnaW5hbCBub3RpY2UiKSxjLmFkZChlKSxjLmFkZChlKSxjLmFkZCgiTWVkaXVtIiksby5zdHJpbmdzPWMsby5nbG9iYWxTdWJySW5kZXg9bmV3IG4uQ0ZGSW5kZXg7dmFyIHUsbCxmPXQubGVuZ3RoLGg9WyIubm90ZGVmIl07Zm9yKHU9MDt1PGY7dSsrKXt2YXIgZD1yW3VdLmdseXBoTmFtZTstMT09PW4uQ0ZGU3RhbmRhcmRTdHJpbmdzLmluZGV4T2YoZCkmJmMuYWRkKGQpLGgucHVzaChkKX1vLmNoYXJzZXQ9bmV3IG4uQ0ZGQ2hhcnNldCghMSwwLGgpO3ZhciBwPW5ldyBuLkNGRkluZGV4O2ZvcihwLmFkZChbMTM5LDE0XSksdT0wO3U8Zjt1KyspcC5hZGQodFt1XSk7by5jaGFyU3RyaW5ncz1wO3ZhciBnPW5ldyBuLkNGRlByaXZhdGVEaWN0O2cuc2V0QnlOYW1lKCJTdWJycyIsbnVsbCk7dmFyIHY9WyJCbHVlVmFsdWVzIiwiT3RoZXJCbHVlcyIsIkZhbWlseUJsdWVzIiwiRmFtaWx5T3RoZXJCbHVlcyIsIlN0ZW1TbmFwSCIsIlN0ZW1TbmFwViIsIkJsdWVTaGlmdCIsIkJsdWVGdXp6IiwiQmx1ZVNjYWxlIiwiTGFuZ3VhZ2VHcm91cCIsIkV4cGFuc2lvbkZhY3RvciIsIkZvcmNlQm9sZCIsIlN0ZEhXIiwiU3RkVlciXTtmb3IodT0wLGw9di5sZW5ndGg7dTxsO3UrKyl7dmFyIHk9dlt1XTtpZih5IGluIGkucHJpdmF0ZURhdGEpe3ZhciBtPWkucHJpdmF0ZURhdGFbeV07aWYoQXJyYXkuaXNBcnJheShtKSlmb3IodmFyIGI9bS5sZW5ndGgtMTtiPjA7Yi0tKW1bYl0tPW1bYi0xXTtnLnNldEJ5TmFtZSh5LG0pfX1vLnRvcERpY3QucHJpdmF0ZURpY3Q9Zzt2YXIgdz1uZXcgbi5DRkZJbmRleDtmb3IodT0wLGw9YS5sZW5ndGg7dTxsO3UrKyl3LmFkZChhW3VdKTtyZXR1cm4gZy5zdWJyc0luZGV4PXcsbmV3IG4uQ0ZGQ29tcGlsZXIobykuY29tcGlsZSgpfX1dKSYmaCh0LnByb3RvdHlwZSxyKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxlfSgpO3QuVHlwZTFGb250PXB9LChlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5UeXBlMVBhcnNlcj12b2lkIDA7dmFyIG49cigxNjYpLGE9cigxMzUpLGk9cigxMzkpLG89cigyKTtmdW5jdGlvbiBzKGUpe3JldHVybiBzPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSxzKGUpfWZ1bmN0aW9uIGMoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIHI9MCxuPW5ldyBBcnJheSh0KTtyPHQ7cisrKW5bcl09ZVtyXTtyZXR1cm4gbn1mdW5jdGlvbiB1KGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gbChlLHQpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgbj10W3JdO24uZW51bWVyYWJsZT1uLmVudW1lcmFibGV8fCExLG4uY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBuJiYobi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsKHZvaWQgMCxhPWZ1bmN0aW9uKGUsdCl7aWYoIm9iamVjdCIhPT1zKGUpfHxudWxsPT09ZSlyZXR1cm4gZTt2YXIgcj1lW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09cil7dmFyIG49ci5jYWxsKGUsInN0cmluZyIpO2lmKCJvYmplY3QiIT09cyhuKSlyZXR1cm4gbjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybiBTdHJpbmcoZSl9KG4ua2V5KSwic3ltYm9sIj09PXMoYSk/YTpTdHJpbmcoYSkpLG4pfXZhciBhfWZ1bmN0aW9uIGYoZSx0LHIpe3JldHVybiB0JiZsKGUucHJvdG90eXBlLHQpLHImJmwoZSxyKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxlfXZhciBoPVs0XSxkPVs1XSxwPVs2XSxnPVs3XSx2PVs4XSx5PVsxMiwzNV0sbT1bMTRdLGI9WzIxXSx3PVsyMl0saz1bMzBdLFM9WzMxXSx4PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe3UodGhpcyxlKSx0aGlzLndpZHRoPTAsdGhpcy5sc2I9MCx0aGlzLmZsZXhpbmc9ITEsdGhpcy5vdXRwdXQ9W10sdGhpcy5zdGFjaz1bXX1yZXR1cm4gZihlLFt7a2V5OiJjb252ZXJ0Iix2YWx1ZTpmdW5jdGlvbihlLHQscil7Zm9yKHZhciBuLGEsaSxzPWUubGVuZ3RoLGM9ITEsdT0wO3U8czt1Kyspe3ZhciBsPWVbdV07aWYobDwzMil7c3dpdGNoKDEyPT09bCYmKGw9KGw8PDgpK2VbKyt1XSksbCl7Y2FzZSAxOmNhc2UgMzpjYXNlIDk6Y2FzZSAzMDcyOmNhc2UgMzA3MzpjYXNlIDMwNzQ6Y2FzZSAzMTA1OnRoaXMuc3RhY2s9W107YnJlYWs7Y2FzZSA0OmlmKHRoaXMuZmxleGluZyl7aWYodGhpcy5zdGFjay5sZW5ndGg8MSl7Yz0hMDticmVha312YXIgZj10aGlzLnN0YWNrLnBvcCgpO3RoaXMuc3RhY2sucHVzaCgwLGYpO2JyZWFrfWM9dGhpcy5leGVjdXRlQ29tbWFuZCgxLGgpO2JyZWFrO2Nhc2UgNTpjPXRoaXMuZXhlY3V0ZUNvbW1hbmQoMixkKTticmVhaztjYXNlIDY6Yz10aGlzLmV4ZWN1dGVDb21tYW5kKDEscCk7YnJlYWs7Y2FzZSA3OmM9dGhpcy5leGVjdXRlQ29tbWFuZCgxLGcpO2JyZWFrO2Nhc2UgODpjPXRoaXMuZXhlY3V0ZUNvbW1hbmQoNix2KTticmVhaztjYXNlIDEwOmlmKHRoaXMuc3RhY2subGVuZ3RoPDEpe2M9ITA7YnJlYWt9aWYoIXRbaT10aGlzLnN0YWNrLnBvcCgpXSl7Yz0hMDticmVha31jPXRoaXMuY29udmVydCh0W2ldLHQscik7YnJlYWs7Y2FzZSAxMTpyZXR1cm4gYztjYXNlIDEzOmlmKHRoaXMuc3RhY2subGVuZ3RoPDIpe2M9ITA7YnJlYWt9bj10aGlzLnN0YWNrLnBvcCgpLGE9dGhpcy5zdGFjay5wb3AoKSx0aGlzLmxzYj1hLHRoaXMud2lkdGg9bix0aGlzLnN0YWNrLnB1c2gobixhKSxjPXRoaXMuZXhlY3V0ZUNvbW1hbmQoMix3KTticmVhaztjYXNlIDE0OnRoaXMub3V0cHV0LnB1c2gobVswXSk7YnJlYWs7Y2FzZSAyMTppZih0aGlzLmZsZXhpbmcpYnJlYWs7Yz10aGlzLmV4ZWN1dGVDb21tYW5kKDIsYik7YnJlYWs7Y2FzZSAyMjppZih0aGlzLmZsZXhpbmcpe3RoaXMuc3RhY2sucHVzaCgwKTticmVha31jPXRoaXMuZXhlY3V0ZUNvbW1hbmQoMSx3KTticmVhaztjYXNlIDMwOmM9dGhpcy5leGVjdXRlQ29tbWFuZCg0LGspO2JyZWFrO2Nhc2UgMzE6Yz10aGlzLmV4ZWN1dGVDb21tYW5kKDQsUyk7YnJlYWs7Y2FzZSAzMDc4OmlmKHIpe3ZhciB4PXRoaXMuc3RhY2suYXQoLTUpO3RoaXMuc2VhYz10aGlzLnN0YWNrLnNwbGljZSgtNCw0KSx0aGlzLnNlYWNbMF0rPXRoaXMubHNiLXgsYz10aGlzLmV4ZWN1dGVDb21tYW5kKDAsbSl9ZWxzZSBjPXRoaXMuZXhlY3V0ZUNvbW1hbmQoNCxtKTticmVhaztjYXNlIDMwNzk6aWYodGhpcy5zdGFjay5sZW5ndGg8NCl7Yz0hMDticmVha310aGlzLnN0YWNrLnBvcCgpLG49dGhpcy5zdGFjay5wb3AoKTt2YXIgTz10aGlzLnN0YWNrLnBvcCgpO2E9dGhpcy5zdGFjay5wb3AoKSx0aGlzLmxzYj1hLHRoaXMud2lkdGg9bix0aGlzLnN0YWNrLnB1c2gobixhLE8pLGM9dGhpcy5leGVjdXRlQ29tbWFuZCgzLGIpO2JyZWFrO2Nhc2UgMzA4NDppZih0aGlzLnN0YWNrLmxlbmd0aDwyKXtjPSEwO2JyZWFrfXZhciBBPXRoaXMuc3RhY2sucG9wKCksQz10aGlzLnN0YWNrLnBvcCgpO3RoaXMuc3RhY2sucHVzaChDL0EpO2JyZWFrO2Nhc2UgMzA4ODppZih0aGlzLnN0YWNrLmxlbmd0aDwyKXtjPSEwO2JyZWFrfWk9dGhpcy5zdGFjay5wb3AoKTt2YXIgRj10aGlzLnN0YWNrLnBvcCgpO2lmKDA9PT1pJiYzPT09Ril7dmFyIFA9dGhpcy5zdGFjay5zcGxpY2UodGhpcy5zdGFjay5sZW5ndGgtMTcsMTcpO3RoaXMuc3RhY2sucHVzaChQWzJdK1BbMF0sUFszXStQWzFdLFBbNF0sUFs1XSxQWzZdLFBbN10sUFs4XSxQWzldLFBbMTBdLFBbMTFdLFBbMTJdLFBbMTNdLFBbMTRdKSxjPXRoaXMuZXhlY3V0ZUNvbW1hbmQoMTMseSwhMCksdGhpcy5mbGV4aW5nPSExLHRoaXMuc3RhY2sucHVzaChQWzE1XSxQWzE2XSl9ZWxzZSAxPT09aSYmMD09PUYmJih0aGlzLmZsZXhpbmc9ITApO2JyZWFrO2Nhc2UgMzA4OTpicmVhaztkZWZhdWx0OigwLG8ud2FybikoJ1Vua25vd24gdHlwZSAxIGNoYXJzdHJpbmcgY29tbWFuZCBvZiAiJytsKyciJyl9aWYoYylicmVha31lbHNlIGw8PTI0Nj9sLT0xMzk6bD1sPD0yNTA/MjU2KihsLTI0NykrZVsrK3VdKzEwODpsPD0yNTQ/LTI1NioobC0yNTEpLWVbKyt1XS0xMDg6KDI1NSZlWysrdV0pPDwyNHwoMjU1JmVbKyt1XSk8PDE2fCgyNTUmZVsrK3VdKTw8OHwoMjU1JmVbKyt1XSk8PDAsdGhpcy5zdGFjay5wdXNoKGwpfXJldHVybiBjfX0se2tleToiZXhlY3V0ZUNvbW1hbmQiLHZhbHVlOmZ1bmN0aW9uKGUsdCxyKXt2YXIgbixhLGk9dGhpcy5zdGFjay5sZW5ndGg7aWYoZT5pKXJldHVybiEwO2Zvcih2YXIgbz1pLWUscz1vO3M8aTtzKyspe3ZhciB1PXRoaXMuc3RhY2tbc107TnVtYmVyLmlzSW50ZWdlcih1KT90aGlzLm91dHB1dC5wdXNoKDI4LHU+PjgmMjU1LDI1NSZ1KToodT02NTUzNip1fDAsdGhpcy5vdXRwdXQucHVzaCgyNTUsdT4+MjQmMjU1LHU+PjE2JjI1NSx1Pj44JjI1NSwyNTUmdSkpfXJldHVybihuPXRoaXMub3V0cHV0KS5wdXNoLmFwcGx5KG4sZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gYyhlKX0oYT10KXx8ZnVuY3Rpb24oZSl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJm51bGwhPWVbU3ltYm9sLml0ZXJhdG9yXXx8bnVsbCE9ZVsiQEBpdGVyYXRvciJdKXJldHVybiBBcnJheS5mcm9tKGUpfShhKXx8ZnVuY3Rpb24oZSx0KXtpZihlKXtpZigic3RyaW5nIj09dHlwZW9mIGUpcmV0dXJuIGMoZSx0KTt2YXIgcj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7cmV0dXJuIk9iamVjdCI9PT1yJiZlLmNvbnN0cnVjdG9yJiYocj1lLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09cnx8IlNldCI9PT1yP0FycmF5LmZyb20oZSk6IkFyZ3VtZW50cyI9PT1yfHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChyKT9jKGUsdCk6dm9pZCAwfX0oYSl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCkpLHI/dGhpcy5zdGFjay5zcGxpY2UobyxlKTp0aGlzLnN0YWNrLmxlbmd0aD0wLCExfX1dKSxlfSgpO2Z1bmN0aW9uIE8oZSl7cmV0dXJuIGU+PTQ4JiZlPD01N3x8ZT49NjUmJmU8PTcwfHxlPj05NyYmZTw9MTAyfWZ1bmN0aW9uIEEoZSx0LHIpe2lmKHI+PWUubGVuZ3RoKXJldHVybiBuZXcgVWludDhBcnJheSgwKTt2YXIgbixhLGk9MHx0O2ZvcihuPTA7bjxyO24rKylpPTUyODQ1KihlW25dK2kpKzIyNzE5JjY1NTM1O3ZhciBvPWUubGVuZ3RoLXIscz1uZXcgVWludDhBcnJheShvKTtmb3Iobj1yLGE9MDthPG87bisrLGErKyl7dmFyIGM9ZVtuXTtzW2FdPWNeaT4+OCxpPTUyODQ1KihjK2kpKzIyNzE5JjY1NTM1fXJldHVybiBzfWZ1bmN0aW9uIEMoZSl7cmV0dXJuIDQ3PT09ZXx8OTE9PT1lfHw5Mz09PWV8fDEyMz09PWV8fDEyNT09PWV8fDQwPT09ZXx8NDE9PT1lfXZhciBGPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0LHIsbil7aWYodSh0aGlzLGUpLHIpe3ZhciBvPXQuZ2V0Qnl0ZXMoKSxzPSEoKE8ob1swXSl8fCgwLGEuaXNXaGl0ZVNwYWNlKShvWzBdKSkmJk8ob1sxXSkmJk8ob1syXSkmJk8ob1szXSkmJk8ob1s0XSkmJk8ob1s1XSkmJk8ob1s2XSkmJk8ob1s3XSkpO3Q9bmV3IGkuU3RyZWFtKHM/QShvLDU1NjY1LDQpOmZ1bmN0aW9uKGUsdCxyKXt2YXIgbixhLGk9NTU2NjUsbz1lLmxlbmd0aCxzPW5ldyBVaW50OEFycmF5KG8+Pj4xKTtmb3Iobj0wLGE9MDtuPG87bisrKXt2YXIgYz1lW25dO2lmKE8oYykpe24rKztmb3IodmFyIHU9dm9pZCAwO248byYmIU8odT1lW25dKTspbisrO2lmKG48byl7dmFyIGw9cGFyc2VJbnQoU3RyaW5nLmZyb21DaGFyQ29kZShjLHUpLDE2KTtzW2ErK109bF5pPj44LGk9NTI4NDUqKGwraSkrMjI3MTkmNjU1MzV9fX1yZXR1cm4gcy5zbGljZSg0LGEpfShvKSl9dGhpcy5zZWFjQW5hbHlzaXNFbmFibGVkPSEhbix0aGlzLnN0cmVhbT10LHRoaXMubmV4dENoYXIoKX1yZXR1cm4gZihlLFt7a2V5OiJyZWFkTnVtYmVyQXJyYXkiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5nZXRUb2tlbigpO2Zvcih2YXIgZT1bXTs7KXt2YXIgdD10aGlzLmdldFRva2VuKCk7aWYobnVsbD09PXR8fCJdIj09PXR8fCJ9Ij09PXQpYnJlYWs7ZS5wdXNoKHBhcnNlRmxvYXQodHx8MCkpfXJldHVybiBlfX0se2tleToicmVhZE51bWJlciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmdldFRva2VuKCk7cmV0dXJuIHBhcnNlRmxvYXQoZXx8MCl9fSx7a2V5OiJyZWFkSW50Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuZ2V0VG9rZW4oKTtyZXR1cm4gMHxwYXJzZUludChlfHwwLDEwKX19LHtrZXk6InJlYWRCb29sZWFuIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiJ0cnVlIj09PXRoaXMuZ2V0VG9rZW4oKT8xOjB9fSx7a2V5OiJuZXh0Q2hhciIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jdXJyZW50Q2hhcj10aGlzLnN0cmVhbS5nZXRCeXRlKCl9fSx7a2V5OiJwcmV2Q2hhciIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdHJlYW0uc2tpcCgtMiksdGhpcy5jdXJyZW50Q2hhcj10aGlzLnN0cmVhbS5nZXRCeXRlKCl9fSx7a2V5OiJnZXRUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIGU9ITEsdD10aGlzLmN1cnJlbnRDaGFyOzspe2lmKC0xPT09dClyZXR1cm4gbnVsbDtpZihlKTEwIT09dCYmMTMhPT10fHwoZT0hMSk7ZWxzZSBpZigzNz09PXQpZT0hMDtlbHNlIGlmKCEoMCxhLmlzV2hpdGVTcGFjZSkodCkpYnJlYWs7dD10aGlzLm5leHRDaGFyKCl9aWYoQyh0KSlyZXR1cm4gdGhpcy5uZXh0Q2hhcigpLFN0cmluZy5mcm9tQ2hhckNvZGUodCk7dmFyIHI9IiI7ZG97cis9U3RyaW5nLmZyb21DaGFyQ29kZSh0KSx0PXRoaXMubmV4dENoYXIoKX13aGlsZSh0Pj0wJiYhKDAsYS5pc1doaXRlU3BhY2UpKHQpJiYhQyh0KSk7cmV0dXJuIHJ9fSx7a2V5OiJyZWFkQ2hhclN0cmluZ3MiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuLTE9PT10P2U6QShlLDQzMzAsdCl9fSx7a2V5OiJleHRyYWN0Rm9udFByb2dyYW0iLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuc3RyZWFtLHI9W10sbj1bXSxhPU9iamVjdC5jcmVhdGUobnVsbCk7YS5sZW5JVj00O2Zvcih2YXIgaSxvLHMsYyx1PXtzdWJyczpbXSxjaGFyc3RyaW5nczpbXSxwcm9wZXJ0aWVzOntwcml2YXRlRGF0YTphfX07bnVsbCE9PShpPXRoaXMuZ2V0VG9rZW4oKSk7KWlmKCIvIj09PWkpc3dpdGNoKGk9dGhpcy5nZXRUb2tlbigpKXtjYXNlIkNoYXJTdHJpbmdzIjpmb3IodGhpcy5nZXRUb2tlbigpLHRoaXMuZ2V0VG9rZW4oKSx0aGlzLmdldFRva2VuKCksdGhpcy5nZXRUb2tlbigpO251bGwhPT0oaT10aGlzLmdldFRva2VuKCkpJiYiZW5kIiE9PWk7KWlmKCIvIj09PWkpe3ZhciBsPXRoaXMuZ2V0VG9rZW4oKTtvPXRoaXMucmVhZEludCgpLHRoaXMuZ2V0VG9rZW4oKSxzPW8+MD90LmdldEJ5dGVzKG8pOm5ldyBVaW50OEFycmF5KDApLGM9dS5wcm9wZXJ0aWVzLnByaXZhdGVEYXRhLmxlbklWO3ZhciBmPXRoaXMucmVhZENoYXJTdHJpbmdzKHMsYyk7dGhpcy5uZXh0Q2hhcigpLCJub2FjY2VzcyI9PT0oaT10aGlzLmdldFRva2VuKCkpP3RoaXMuZ2V0VG9rZW4oKToiLyI9PT1pJiZ0aGlzLnByZXZDaGFyKCksbi5wdXNoKHtnbHlwaDpsLGVuY29kZWQ6Zn0pfWJyZWFrO2Nhc2UiU3VicnMiOmZvcih0aGlzLnJlYWRJbnQoKSx0aGlzLmdldFRva2VuKCk7ImR1cCI9PT10aGlzLmdldFRva2VuKCk7KXt2YXIgaD10aGlzLnJlYWRJbnQoKTtvPXRoaXMucmVhZEludCgpLHRoaXMuZ2V0VG9rZW4oKSxzPW8+MD90LmdldEJ5dGVzKG8pOm5ldyBVaW50OEFycmF5KDApLGM9dS5wcm9wZXJ0aWVzLnByaXZhdGVEYXRhLmxlbklWO3ZhciBkPXRoaXMucmVhZENoYXJTdHJpbmdzKHMsYyk7dGhpcy5uZXh0Q2hhcigpLCJub2FjY2VzcyI9PT0oaT10aGlzLmdldFRva2VuKCkpJiZ0aGlzLmdldFRva2VuKCkscltoXT1kfWJyZWFrO2Nhc2UiQmx1ZVZhbHVlcyI6Y2FzZSJPdGhlckJsdWVzIjpjYXNlIkZhbWlseUJsdWVzIjpjYXNlIkZhbWlseU90aGVyQmx1ZXMiOnZhciBwPXRoaXMucmVhZE51bWJlckFycmF5KCk7cC5sZW5ndGg+MCYmcC5sZW5ndGg7YnJlYWs7Y2FzZSJTdGVtU25hcEgiOmNhc2UiU3RlbVNuYXBWIjp1LnByb3BlcnRpZXMucHJpdmF0ZURhdGFbaV09dGhpcy5yZWFkTnVtYmVyQXJyYXkoKTticmVhaztjYXNlIlN0ZEhXIjpjYXNlIlN0ZFZXIjp1LnByb3BlcnRpZXMucHJpdmF0ZURhdGFbaV09dGhpcy5yZWFkTnVtYmVyQXJyYXkoKVswXTticmVhaztjYXNlIkJsdWVTaGlmdCI6Y2FzZSJsZW5JViI6Y2FzZSJCbHVlRnV6eiI6Y2FzZSJCbHVlU2NhbGUiOmNhc2UiTGFuZ3VhZ2VHcm91cCI6Y2FzZSJFeHBhbnNpb25GYWN0b3IiOnUucHJvcGVydGllcy5wcml2YXRlRGF0YVtpXT10aGlzLnJlYWROdW1iZXIoKTticmVhaztjYXNlIkZvcmNlQm9sZCI6dS5wcm9wZXJ0aWVzLnByaXZhdGVEYXRhW2ldPXRoaXMucmVhZEJvb2xlYW4oKX1mb3IodmFyIGc9MCx2PW47Zzx2Lmxlbmd0aDtnKyspe3ZhciB5PXZbZ10sbT15LmVuY29kZWQsYj15LmdseXBoLHc9bmV3IHgsaz13LmNvbnZlcnQobSxyLHRoaXMuc2VhY0FuYWx5c2lzRW5hYmxlZCksUz13Lm91dHB1dDtrJiYoUz1bMTRdKTt2YXIgTz17Z2x5cGhOYW1lOmIsY2hhcnN0cmluZzpTLHdpZHRoOncud2lkdGgsbHNiOncubHNiLHNlYWM6dy5zZWFjfTtpZigiLm5vdGRlZiI9PT1iP3UuY2hhcnN0cmluZ3MudW5zaGlmdChPKTp1LmNoYXJzdHJpbmdzLnB1c2goTyksZS5idWlsdEluRW5jb2Rpbmcpe3ZhciBBPWUuYnVpbHRJbkVuY29kaW5nLmluZGV4T2YoYik7QT4tMSYmdm9pZCAwPT09ZS53aWR0aHNbQV0mJkE+PWUuZmlyc3RDaGFyJiZBPD1lLmxhc3RDaGFyJiYoZS53aWR0aHNbQV09dy53aWR0aCl9fXJldHVybiB1fX0se2tleToiZXh0cmFjdEZvbnRIZWFkZXIiLHZhbHVlOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdDtudWxsIT09KHQ9dGhpcy5nZXRUb2tlbigpKTspaWYoIi8iPT09dClzd2l0Y2godD10aGlzLmdldFRva2VuKCkpe2Nhc2UiRm9udE1hdHJpeCI6dmFyIHI9dGhpcy5yZWFkTnVtYmVyQXJyYXkoKTtlLmZvbnRNYXRyaXg9cjticmVhaztjYXNlIkVuY29kaW5nIjp2YXIgYT10aGlzLmdldFRva2VuKCksaT12b2lkIDA7aWYoL15cZCskLy50ZXN0KGEpKXtpPVtdO3ZhciBvPTB8cGFyc2VJbnQoYSwxMCk7dGhpcy5nZXRUb2tlbigpO2Zvcih2YXIgcz0wO3M8bztzKyspe2Zvcih0PXRoaXMuZ2V0VG9rZW4oKTsiZHVwIiE9PXQmJiJkZWYiIT09dDspaWYobnVsbD09PSh0PXRoaXMuZ2V0VG9rZW4oKSkpcmV0dXJuO2lmKCJkZWYiPT09dClicmVhazt2YXIgYz10aGlzLnJlYWRJbnQoKTt0aGlzLmdldFRva2VuKCk7dmFyIHU9dGhpcy5nZXRUb2tlbigpO2lbY109dSx0aGlzLmdldFRva2VuKCl9fWVsc2UgaT0oMCxuLmdldEVuY29kaW5nKShhKTtlLmJ1aWx0SW5FbmNvZGluZz1pO2JyZWFrO2Nhc2UiRm9udEJCb3giOnZhciBsPXRoaXMucmVhZE51bWJlckFycmF5KCk7ZS5hc2NlbnQ9TWF0aC5tYXgobFszXSxsWzFdKSxlLmRlc2NlbnQ9TWF0aC5taW4obFsxXSxsWzNdKSxlLmFzY2VudFNjYWxlZD0hMH19fV0pLGV9KCk7dC5UeXBlMVBhcnNlcj1GfSwoZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuUGF0dGVybj12b2lkIDAsdC5nZXRUaWxpbmdQYXR0ZXJuSVI9ZnVuY3Rpb24oZSx0LHIpe3ZhciBhPXQuZ2V0QXJyYXkoIk1hdHJpeCIpLGk9bi5VdGlsLm5vcm1hbGl6ZVJlY3QodC5nZXRBcnJheSgiQkJveCIpKSxvPXQuZ2V0KCJYU3RlcCIpLHM9dC5nZXQoIllTdGVwIiksYz10LmdldCgiUGFpbnRUeXBlIiksdT10LmdldCgiVGlsaW5nVHlwZSIpO2lmKGlbMl0taVswXT09MHx8aVszXS1pWzFdPT0wKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJJbnZhbGlkIGdldFRpbGluZ1BhdHRlcm5JUiAvQkJveCBhcnJheTogWyIuY29uY2F0KGksIl0uIikpO3JldHVyblsiVGlsaW5nUGF0dGVybiIscixlLGEsaSxvLHMsYyx1XX07dmFyIG49cigyKSxhPXIoMTM2KSxpPXIoMTQzKSxvPXIoMTM1KTtmdW5jdGlvbiBzKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciByPTAsbj1uZXcgQXJyYXkodCk7cjx0O3IrKyluW3JdPWVbcl07cmV0dXJuIG59ZnVuY3Rpb24gYyhlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSx0JiZ1KGUsdCl9ZnVuY3Rpb24gdShlLHQpe3JldHVybiB1PU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuX19wcm90b19fPXQsZX0sdShlLHQpfWZ1bmN0aW9uIGwoZSl7dmFyIHQ9ZnVuY3Rpb24oKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdClyZXR1cm4hMTtpZihSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLChmdW5jdGlvbigpe30pKSksITB9Y2F0Y2goZSl7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciByLG49aChlKTtpZih0KXt2YXIgYT1oKHRoaXMpLmNvbnN0cnVjdG9yO3I9UmVmbGVjdC5jb25zdHJ1Y3Qobixhcmd1bWVudHMsYSl9ZWxzZSByPW4uYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBmKHRoaXMscil9fWZ1bmN0aW9uIGYoZSx0KXtpZih0JiYoIm9iamVjdCI9PT1kKHQpfHwiZnVuY3Rpb24iPT10eXBlb2YgdCkpcmV0dXJuIHQ7aWYodm9pZCAwIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBmdW5jdGlvbihlKXtpZih2b2lkIDA9PT1lKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGV9KGUpfWZ1bmN0aW9uIGgoZSl7cmV0dXJuIGg9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSl9LGgoZSl9ZnVuY3Rpb24gZChlKXtyZXR1cm4gZD0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZX0sZChlKX1mdW5jdGlvbiBwKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gZyhlLHQpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgbj10W3JdO24uZW51bWVyYWJsZT1uLmVudW1lcmFibGV8fCExLG4uY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBuJiYobi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsKHZvaWQgMCxhPWZ1bmN0aW9uKGUsdCl7aWYoIm9iamVjdCIhPT1kKGUpfHxudWxsPT09ZSlyZXR1cm4gZTt2YXIgcj1lW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09cil7dmFyIG49ci5jYWxsKGUsInN0cmluZyIpO2lmKCJvYmplY3QiIT09ZChuKSlyZXR1cm4gbjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybiBTdHJpbmcoZSl9KG4ua2V5KSwic3ltYm9sIj09PWQoYSk/YTpTdHJpbmcoYSkpLG4pfXZhciBhfWZ1bmN0aW9uIHYoZSx0LHIpe3JldHVybiB0JiZnKGUucHJvdG90eXBlLHQpLHImJmcoZSxyKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxlfXZhciB5PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe3AodGhpcyxlKSwoMCxuLnVucmVhY2hhYmxlKSgiQ2Fubm90IGluaXRpYWxpemUgUGF0dGVybi4iKX1yZXR1cm4gdihlLG51bGwsW3trZXk6InBhcnNlU2hhZGluZyIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIsaSxzLGMpe3ZhciB1PWUgaW5zdGFuY2VvZiBhLkJhc2VTdHJlYW0/ZS5kaWN0OmUsbD11LmdldCgiU2hhZGluZ1R5cGUiKTt0cnl7c3dpdGNoKGwpe2Nhc2UgMjpjYXNlIDM6cmV0dXJuIG5ldyB3KHUsdCxyLHMsYyk7Y2FzZSA0OmNhc2UgNTpjYXNlIDY6Y2FzZSA3OnJldHVybiBuZXcgeChlLHQscixzLGMpO2RlZmF1bHQ6dGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIlVuc3VwcG9ydGVkIFNoYWRpbmdUeXBlOiAiK2wpfX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2Ygby5NaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3JldHVybiBpLnNlbmQoIlVuc3VwcG9ydGVkRmVhdHVyZSIse2ZlYXR1cmVJZDpuLlVOU1VQUE9SVEVEX0ZFQVRVUkVTLnNoYWRpbmdQYXR0ZXJufSksKDAsbi53YXJuKShlKSxuZXcgT319fV0pLGV9KCk7dC5QYXR0ZXJuPXk7dmFyIG0sYj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXtwKHRoaXMsZSksdGhpcy5jb25zdHJ1Y3Rvcj09PWUmJigwLG4udW5yZWFjaGFibGUpKCJDYW5ub3QgaW5pdGlhbGl6ZSBCYXNlU2hhZGluZy4iKX1yZXR1cm4gdihlLFt7a2V5OiJnZXRJUiIsdmFsdWU6ZnVuY3Rpb24oKXsoMCxuLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGBnZXRJUmAgY2FsbGVkLiIpfX1dLFt7a2V5OiJTTUFMTF9OVU1CRVIiLGdldDpmdW5jdGlvbigpe3JldHVybigwLG4uc2hhZG93KSh0aGlzLCJTTUFMTF9OVU1CRVIiLDFlLTYpfX1dKSxlfSgpLHc9ZnVuY3Rpb24oZSl7YyhyLGUpO3ZhciB0PWwocik7ZnVuY3Rpb24gcihlLGEsbyxjLHUpe3ZhciBsO3AodGhpcyxyKSwobD10LmNhbGwodGhpcykpLmNvb3Jkc0Fycj1lLmdldEFycmF5KCJDb29yZHMiKSxsLnNoYWRpbmdUeXBlPWUuZ2V0KCJTaGFkaW5nVHlwZSIpO3ZhciBoPWkuQ29sb3JTcGFjZS5wYXJzZSh7Y3M6ZS5nZXRSYXcoIkNTIil8fGUuZ2V0UmF3KCJDb2xvclNwYWNlIikseHJlZjphLHJlc291cmNlczpvLHBkZkZ1bmN0aW9uRmFjdG9yeTpjLGxvY2FsQ29sb3JTcGFjZUNhY2hlOnV9KSxkPWUuZ2V0QXJyYXkoIkJCb3giKTtBcnJheS5pc0FycmF5KGQpJiY0PT09ZC5sZW5ndGg/bC5iYm94PW4uVXRpbC5ub3JtYWxpemVSZWN0KGQpOmwuYmJveD1udWxsO3ZhciBnPTAsdj0xO2lmKGUuaGFzKCJEb21haW4iKSl7dmFyIHk9ZS5nZXRBcnJheSgiRG9tYWluIik7Zz15WzBdLHY9eVsxXX12YXIgbT0hMSx3PSExO2lmKGUuaGFzKCJFeHRlbmQiKSl7dmFyIGs9ZS5nZXRBcnJheSgiRXh0ZW5kIik7bT1rWzBdLHc9a1sxXX1pZighKDMhPT1sLnNoYWRpbmdUeXBlfHxtJiZ3KSl7dmFyIFM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIHI9bnVsbD09ZT9udWxsOiJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbIkBAaXRlcmF0b3IiXTtpZihudWxsIT1yKXt2YXIgbixhLGksbyxzPVtdLGM9ITAsdT0hMTt0cnl7aWYoaT0ocj1yLmNhbGwoZSkpLm5leHQsMD09PXQpe2lmKE9iamVjdChyKSE9PXIpcmV0dXJuO2M9ITF9ZWxzZSBmb3IoOyEoYz0obj1pLmNhbGwocikpLmRvbmUpJiYocy5wdXNoKG4udmFsdWUpLHMubGVuZ3RoIT09dCk7Yz0hMCk7fWNhdGNoKGUpe3U9ITAsYT1lfWZpbmFsbHl7dHJ5e2lmKCFjJiZudWxsIT1yLnJldHVybiYmKG89ci5yZXR1cm4oKSxPYmplY3QobykhPT1vKSlyZXR1cm59ZmluYWxseXtpZih1KXRocm93IGF9fXJldHVybiBzfX0oZSx0KXx8ZnVuY3Rpb24oZSx0KXtpZihlKXtpZigic3RyaW5nIj09dHlwZW9mIGUpcmV0dXJuIHMoZSx0KTt2YXIgcj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7cmV0dXJuIk9iamVjdCI9PT1yJiZlLmNvbnN0cnVjdG9yJiYocj1lLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09cnx8IlNldCI9PT1yP0FycmF5LmZyb20oZSk6IkFyZ3VtZW50cyI9PT1yfHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChyKT9zKGUsdCk6dm9pZCAwfX0oZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfShsLmNvb3Jkc0Fyciw2KSx4PVNbMF0sTz1TWzFdLEE9U1syXSxDPVNbM10sRj1TWzRdLFA9U1s1XSxUPU1hdGguaHlwb3QoeC1DLE8tRik7QTw9UCtUJiZQPD1BK1QmJigwLG4ud2FybikoIlVuc3VwcG9ydGVkIHJhZGlhbCBncmFkaWVudC4iKX1sLmV4dGVuZFN0YXJ0PW0sbC5leHRlbmRFbmQ9dzt2YXIgST1lLmdldFJhdygiRnVuY3Rpb24iKSxFPWMuY3JlYXRlRnJvbUFycmF5KEkpLGo9KHYtZykvMTAsTT1sLmNvbG9yU3RvcHM9W107aWYoZz49dnx8ajw9MClyZXR1cm4oMCxuLmluZm8pKCJCYWQgc2hhZGluZyBkb21haW4uIiksZihsKTtmb3IodmFyIF8sTD1uZXcgRmxvYXQzMkFycmF5KGgubnVtQ29tcHMpLFI9bmV3IEZsb2F0MzJBcnJheSgxKSxOPTA7Tjw9MTA7TisrKXtSWzBdPWcrTipqLEUoUiwwLEwsMCksXz1oLmdldFJnYihMLDApO3ZhciBEPW4uVXRpbC5tYWtlSGV4Q29sb3IoX1swXSxfWzFdLF9bMl0pO00ucHVzaChbTi8xMCxEXSl9dmFyIEI9InRyYW5zcGFyZW50IjtyZXR1cm4gZS5oYXMoIkJhY2tncm91bmQiKSYmKF89aC5nZXRSZ2IoZS5nZXQoIkJhY2tncm91bmQiKSwwKSxCPW4uVXRpbC5tYWtlSGV4Q29sb3IoX1swXSxfWzFdLF9bMl0pKSxtfHwoTS51bnNoaWZ0KFswLEJdKSxNWzFdWzBdKz1iLlNNQUxMX05VTUJFUiksd3x8KE0uYXQoLTEpWzBdLT1iLlNNQUxMX05VTUJFUixNLnB1c2goWzEsQl0pKSxsLmNvbG9yU3RvcHM9TSxsfXJldHVybiB2KHIsW3trZXk6ImdldElSIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlLHQscixhLGksbz10aGlzLmNvb3Jkc0FycixzPXRoaXMuc2hhZGluZ1R5cGU7cmV0dXJuIDI9PT1zPyh0PVtvWzBdLG9bMV1dLHI9W29bMl0sb1szXV0sYT1udWxsLGk9bnVsbCxlPSJheGlhbCIpOjM9PT1zPyh0PVtvWzBdLG9bMV1dLHI9W29bM10sb1s0XV0sYT1vWzJdLGk9b1s1XSxlPSJyYWRpYWwiKTooMCxuLnVucmVhY2hhYmxlKSgiZ2V0UGF0dGVybiB0eXBlIHVua25vd246ICIuY29uY2F0KHMpKSxbIlJhZGlhbEF4aWFsIixlLHRoaXMuYmJveCx0aGlzLmNvbG9yU3RvcHMsdCxyLGEsaV19fV0pLHJ9KGIpLGs9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQscil7cCh0aGlzLGUpLHRoaXMuc3RyZWFtPXQsdGhpcy5jb250ZXh0PXIsdGhpcy5idWZmZXI9MCx0aGlzLmJ1ZmZlckxlbmd0aD0wO3ZhciBuPXIubnVtQ29tcHM7dGhpcy50bXBDb21wc0J1Zj1uZXcgRmxvYXQzMkFycmF5KG4pO3ZhciBhPXIuY29sb3JTcGFjZS5udW1Db21wczt0aGlzLnRtcENzQ29tcHNCdWY9ci5jb2xvckZuP25ldyBGbG9hdDMyQXJyYXkoYSk6dGhpcy50bXBDb21wc0J1Zn1yZXR1cm4gdihlLFt7a2V5OiJoYXNEYXRhIixnZXQ6ZnVuY3Rpb24oKXtpZih0aGlzLnN0cmVhbS5lbmQpcmV0dXJuIHRoaXMuc3RyZWFtLnBvczx0aGlzLnN0cmVhbS5lbmQ7aWYodGhpcy5idWZmZXJMZW5ndGg+MClyZXR1cm4hMDt2YXIgZT10aGlzLnN0cmVhbS5nZXRCeXRlKCk7cmV0dXJuIShlPDB8fCh0aGlzLmJ1ZmZlcj1lLHRoaXMuYnVmZmVyTGVuZ3RoPTgsMCkpfX0se2tleToicmVhZEJpdHMiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuYnVmZmVyLHI9dGhpcy5idWZmZXJMZW5ndGg7aWYoMzI9PT1lKXtpZigwPT09cilyZXR1cm4odGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpPDwyNHx0aGlzLnN0cmVhbS5nZXRCeXRlKCk8PDE2fHRoaXMuc3RyZWFtLmdldEJ5dGUoKTw8OHx0aGlzLnN0cmVhbS5nZXRCeXRlKCkpPj4+MDt0PXQ8PDI0fHRoaXMuc3RyZWFtLmdldEJ5dGUoKTw8MTZ8dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpPDw4fHRoaXMuc3RyZWFtLmdldEJ5dGUoKTt2YXIgbj10aGlzLnN0cmVhbS5nZXRCeXRlKCk7cmV0dXJuIHRoaXMuYnVmZmVyPW4mKDE8PHIpLTEsKHQ8PDgtcnwoMjU1Jm4pPj5yKT4+PjB9aWYoOD09PWUmJjA9PT1yKXJldHVybiB0aGlzLnN0cmVhbS5nZXRCeXRlKCk7Zm9yKDtyPGU7KXQ9dDw8OHx0aGlzLnN0cmVhbS5nZXRCeXRlKCkscis9ODtyZXR1cm4gci09ZSx0aGlzLmJ1ZmZlckxlbmd0aD1yLHRoaXMuYnVmZmVyPXQmKDE8PHIpLTEsdD4+cn19LHtrZXk6ImFsaWduIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuYnVmZmVyPTAsdGhpcy5idWZmZXJMZW5ndGg9MH19LHtrZXk6InJlYWRGbGFnIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJlYWRCaXRzKHRoaXMuY29udGV4dC5iaXRzUGVyRmxhZyl9fSx7a2V5OiJyZWFkQ29vcmRpbmF0ZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmNvbnRleHQuYml0c1BlckNvb3JkaW5hdGUsdD10aGlzLnJlYWRCaXRzKGUpLHI9dGhpcy5yZWFkQml0cyhlKSxuPXRoaXMuY29udGV4dC5kZWNvZGUsYT1lPDMyPzEvKCgxPDxlKS0xKToyLjMyODMwNjQzNjUzODY5NjNlLTEwO3JldHVyblt0KmEqKG5bMV0tblswXSkrblswXSxyKmEqKG5bM10tblsyXSkrblsyXV19fSx7a2V5OiJyZWFkQ29tcG9uZW50cyIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIGU9dGhpcy5jb250ZXh0Lm51bUNvbXBzLHQ9dGhpcy5jb250ZXh0LmJpdHNQZXJDb21wb25lbnQscj10PDMyPzEvKCgxPDx0KS0xKToyLjMyODMwNjQzNjUzODY5NjNlLTEwLG49dGhpcy5jb250ZXh0LmRlY29kZSxhPXRoaXMudG1wQ29tcHNCdWYsaT0wLG89NDtpPGU7aSsrLG8rPTIpe3ZhciBzPXRoaXMucmVhZEJpdHModCk7YVtpXT1zKnIqKG5bbysxXS1uW29dKStuW29dfXZhciBjPXRoaXMudG1wQ3NDb21wc0J1ZjtyZXR1cm4gdGhpcy5jb250ZXh0LmNvbG9yRm4mJnRoaXMuY29udGV4dC5jb2xvckZuKGEsMCxjLDApLHRoaXMuY29udGV4dC5jb2xvclNwYWNlLmdldFJnYihjLDApfX1dKSxlfSgpLFM9KG09W10sZnVuY3Rpb24oZSl7cmV0dXJuIG1bZV18fChtW2VdPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1bXSxyPTA7cjw9ZTtyKyspe3ZhciBuPXIvZSxhPTEtbjt0LnB1c2gobmV3IEZsb2F0MzJBcnJheShbYSphKmEsMypuKmEqYSwzKm4qbiphLG4qbipuXSkpfXJldHVybiB0fShlKSksbVtlXX0pLHg9ZnVuY3Rpb24oZSl7YyhyLGUpO3ZhciB0PWwocik7ZnVuY3Rpb24gcihlLG8scyxjLHUpe3ZhciBsO2lmKHAodGhpcyxyKSxsPXQuY2FsbCh0aGlzKSwhKGUgaW5zdGFuY2VvZiBhLkJhc2VTdHJlYW0pKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJNZXNoIGRhdGEgaXMgbm90IGEgc3RyZWFtIik7dmFyIGY9ZS5kaWN0O2wuc2hhZGluZ1R5cGU9Zi5nZXQoIlNoYWRpbmdUeXBlIik7dmFyIGg9Zi5nZXRBcnJheSgiQkJveCIpO0FycmF5LmlzQXJyYXkoaCkmJjQ9PT1oLmxlbmd0aD9sLmJib3g9bi5VdGlsLm5vcm1hbGl6ZVJlY3QoaCk6bC5iYm94PW51bGw7dmFyIGQ9aS5Db2xvclNwYWNlLnBhcnNlKHtjczpmLmdldFJhdygiQ1MiKXx8Zi5nZXRSYXcoIkNvbG9yU3BhY2UiKSx4cmVmOm8scmVzb3VyY2VzOnMscGRmRnVuY3Rpb25GYWN0b3J5OmMsbG9jYWxDb2xvclNwYWNlQ2FjaGU6dX0pO2wuYmFja2dyb3VuZD1mLmhhcygiQmFja2dyb3VuZCIpP2QuZ2V0UmdiKGYuZ2V0KCJCYWNrZ3JvdW5kIiksMCk6bnVsbDt2YXIgZz1mLmdldFJhdygiRnVuY3Rpb24iKSx2PWc/Yy5jcmVhdGVGcm9tQXJyYXkoZyk6bnVsbDtsLmNvb3Jkcz1bXSxsLmNvbG9ycz1bXSxsLmZpZ3VyZXM9W107dmFyIHk9e2JpdHNQZXJDb29yZGluYXRlOmYuZ2V0KCJCaXRzUGVyQ29vcmRpbmF0ZSIpLGJpdHNQZXJDb21wb25lbnQ6Zi5nZXQoIkJpdHNQZXJDb21wb25lbnQiKSxiaXRzUGVyRmxhZzpmLmdldCgiQml0c1BlckZsYWciKSxkZWNvZGU6Zi5nZXRBcnJheSgiRGVjb2RlIiksY29sb3JGbjp2LGNvbG9yU3BhY2U6ZCxudW1Db21wczp2PzE6ZC5udW1Db21wc30sbT1uZXcgayhlLHkpLGI9ITE7c3dpdGNoKGwuc2hhZGluZ1R5cGUpe2Nhc2UgNDpsLl9kZWNvZGVUeXBlNFNoYWRpbmcobSk7YnJlYWs7Y2FzZSA1OnZhciB3PTB8Zi5nZXQoIlZlcnRpY2VzUGVyUm93Iik7aWYodzwyKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJJbnZhbGlkIFZlcnRpY2VzUGVyUm93Iik7bC5fZGVjb2RlVHlwZTVTaGFkaW5nKG0sdyk7YnJlYWs7Y2FzZSA2OmwuX2RlY29kZVR5cGU2U2hhZGluZyhtKSxiPSEwO2JyZWFrO2Nhc2UgNzpsLl9kZWNvZGVUeXBlN1NoYWRpbmcobSksYj0hMDticmVhaztkZWZhdWx0OigwLG4udW5yZWFjaGFibGUpKCJVbnN1cHBvcnRlZCBtZXNoIHR5cGUuIil9aWYoYil7bC5fdXBkYXRlQm91bmRzKCk7Zm9yKHZhciBTPTAseD1sLmZpZ3VyZXMubGVuZ3RoO1M8eDtTKyspbC5fYnVpbGRGaWd1cmVGcm9tUGF0Y2goUyl9cmV0dXJuIGwuX3VwZGF0ZUJvdW5kcygpLGwuX3BhY2tEYXRhKCksbH1yZXR1cm4gdihyLFt7a2V5OiJfZGVjb2RlVHlwZTRTaGFkaW5nIix2YWx1ZTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpcy5jb29yZHMscj10aGlzLmNvbG9ycyxhPVtdLGk9W10sbz0wO2UuaGFzRGF0YTspe3ZhciBzPWUucmVhZEZsYWcoKSxjPWUucmVhZENvb3JkaW5hdGUoKSx1PWUucmVhZENvbXBvbmVudHMoKTtpZigwPT09byl7aWYoISgwPD1zJiZzPD0yKSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiVW5rbm93biB0eXBlNCBmbGFnIik7c3dpdGNoKHMpe2Nhc2UgMDpvPTM7YnJlYWs7Y2FzZSAxOmkucHVzaChpLmF0KC0yKSxpLmF0KC0xKSksbz0xO2JyZWFrO2Nhc2UgMjppLnB1c2goaS5hdCgtMyksaS5hdCgtMSkpLG89MX1hLnB1c2gocyl9aS5wdXNoKHQubGVuZ3RoKSx0LnB1c2goYyksci5wdXNoKHUpLG8tLSxlLmFsaWduKCl9dGhpcy5maWd1cmVzLnB1c2goe3R5cGU6InRyaWFuZ2xlcyIsY29vcmRzOm5ldyBJbnQzMkFycmF5KGkpLGNvbG9yczpuZXcgSW50MzJBcnJheShpKX0pfX0se2tleToiX2RlY29kZVR5cGU1U2hhZGluZyIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtmb3IodmFyIHI9dGhpcy5jb29yZHMsbj10aGlzLmNvbG9ycyxhPVtdO2UuaGFzRGF0YTspe3ZhciBpPWUucmVhZENvb3JkaW5hdGUoKSxvPWUucmVhZENvbXBvbmVudHMoKTthLnB1c2goci5sZW5ndGgpLHIucHVzaChpKSxuLnB1c2gobyl9dGhpcy5maWd1cmVzLnB1c2goe3R5cGU6ImxhdHRpY2UiLGNvb3JkczpuZXcgSW50MzJBcnJheShhKSxjb2xvcnM6bmV3IEludDMyQXJyYXkoYSksdmVydGljZXNQZXJSb3c6dH0pfX0se2tleToiX2RlY29kZVR5cGU2U2hhZGluZyIsdmFsdWU6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMuY29vcmRzLHI9dGhpcy5jb2xvcnMsYT1uZXcgSW50MzJBcnJheSgxNiksaT1uZXcgSW50MzJBcnJheSg0KTtlLmhhc0RhdGE7KXt2YXIgbz1lLnJlYWRGbGFnKCk7aWYoISgwPD1vJiZvPD0zKSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiVW5rbm93biB0eXBlNiBmbGFnIik7Zm9yKHZhciBzPXQubGVuZ3RoLGM9MCx1PTAhPT1vPzg6MTI7Yzx1O2MrKyl0LnB1c2goZS5yZWFkQ29vcmRpbmF0ZSgpKTtmb3IodmFyIGw9ci5sZW5ndGgsZj0wLGg9MCE9PW8/Mjo0O2Y8aDtmKyspci5wdXNoKGUucmVhZENvbXBvbmVudHMoKSk7dmFyIGQ9dm9pZCAwLHA9dm9pZCAwLGc9dm9pZCAwLHY9dm9pZCAwO3N3aXRjaChvKXtjYXNlIDA6YVsxMl09cyszLGFbMTNdPXMrNCxhWzE0XT1zKzUsYVsxNV09cys2LGFbOF09cysyLGFbMTFdPXMrNyxhWzRdPXMrMSxhWzddPXMrOCxhWzBdPXMsYVsxXT1zKzExLGFbMl09cysxMCxhWzNdPXMrOSxpWzJdPWwrMSxpWzNdPWwrMixpWzBdPWwsaVsxXT1sKzM7YnJlYWs7Y2FzZSAxOmQ9YVsxMl0scD1hWzEzXSxnPWFbMTRdLHY9YVsxNV0sYVsxMl09dixhWzEzXT1zKzAsYVsxNF09cysxLGFbMTVdPXMrMixhWzhdPWcsYVsxMV09cyszLGFbNF09cCxhWzddPXMrNCxhWzBdPWQsYVsxXT1zKzcsYVsyXT1zKzYsYVszXT1zKzUsZD1pWzJdLHA9aVszXSxpWzJdPXAsaVszXT1sLGlbMF09ZCxpWzFdPWwrMTticmVhaztjYXNlIDI6ZD1hWzE1XSxwPWFbMTFdLGFbMTJdPWFbM10sYVsxM109cyswLGFbMTRdPXMrMSxhWzE1XT1zKzIsYVs4XT1hWzddLGFbMTFdPXMrMyxhWzRdPXAsYVs3XT1zKzQsYVswXT1kLGFbMV09cys3LGFbMl09cys2LGFbM109cys1LGQ9aVszXSxpWzJdPWlbMV0saVszXT1sLGlbMF09ZCxpWzFdPWwrMTticmVhaztjYXNlIDM6YVsxMl09YVswXSxhWzEzXT1zKzAsYVsxNF09cysxLGFbMTVdPXMrMixhWzhdPWFbMV0sYVsxMV09cyszLGFbNF09YVsyXSxhWzddPXMrNCxhWzBdPWFbM10sYVsxXT1zKzcsYVsyXT1zKzYsYVszXT1zKzUsaVsyXT1pWzBdLGlbM109bCxpWzBdPWlbMV0saVsxXT1sKzF9YVs1XT10Lmxlbmd0aCx0LnB1c2goWygtNCp0W2FbMF1dWzBdLXRbYVsxNV1dWzBdKzYqKHRbYVs0XV1bMF0rdFthWzFdXVswXSktMioodFthWzEyXV1bMF0rdFthWzNdXVswXSkrMyoodFthWzEzXV1bMF0rdFthWzddXVswXSkpLzksKC00KnRbYVswXV1bMV0tdFthWzE1XV1bMV0rNioodFthWzRdXVsxXSt0W2FbMV1dWzFdKS0yKih0W2FbMTJdXVsxXSt0W2FbM11dWzFdKSszKih0W2FbMTNdXVsxXSt0W2FbN11dWzFdKSkvOV0pLGFbNl09dC5sZW5ndGgsdC5wdXNoKFsoLTQqdFthWzNdXVswXS10W2FbMTJdXVswXSs2Kih0W2FbMl1dWzBdK3RbYVs3XV1bMF0pLTIqKHRbYVswXV1bMF0rdFthWzE1XV1bMF0pKzMqKHRbYVs0XV1bMF0rdFthWzE0XV1bMF0pKS85LCgtNCp0W2FbM11dWzFdLXRbYVsxMl1dWzFdKzYqKHRbYVsyXV1bMV0rdFthWzddXVsxXSktMioodFthWzBdXVsxXSt0W2FbMTVdXVsxXSkrMyoodFthWzRdXVsxXSt0W2FbMTRdXVsxXSkpLzldKSxhWzldPXQubGVuZ3RoLHQucHVzaChbKC00KnRbYVsxMl1dWzBdLXRbYVszXV1bMF0rNioodFthWzhdXVswXSt0W2FbMTNdXVswXSktMioodFthWzBdXVswXSt0W2FbMTVdXVswXSkrMyoodFthWzExXV1bMF0rdFthWzFdXVswXSkpLzksKC00KnRbYVsxMl1dWzFdLXRbYVszXV1bMV0rNioodFthWzhdXVsxXSt0W2FbMTNdXVsxXSktMioodFthWzBdXVsxXSt0W2FbMTVdXVsxXSkrMyoodFthWzExXV1bMV0rdFthWzFdXVsxXSkpLzldKSxhWzEwXT10Lmxlbmd0aCx0LnB1c2goWygtNCp0W2FbMTVdXVswXS10W2FbMF1dWzBdKzYqKHRbYVsxMV1dWzBdK3RbYVsxNF1dWzBdKS0yKih0W2FbMTJdXVswXSt0W2FbM11dWzBdKSszKih0W2FbMl1dWzBdK3RbYVs4XV1bMF0pKS85LCgtNCp0W2FbMTVdXVsxXS10W2FbMF1dWzFdKzYqKHRbYVsxMV1dWzFdK3RbYVsxNF1dWzFdKS0yKih0W2FbMTJdXVsxXSt0W2FbM11dWzFdKSszKih0W2FbMl1dWzFdK3RbYVs4XV1bMV0pKS85XSksdGhpcy5maWd1cmVzLnB1c2goe3R5cGU6InBhdGNoIixjb29yZHM6bmV3IEludDMyQXJyYXkoYSksY29sb3JzOm5ldyBJbnQzMkFycmF5KGkpfSl9fX0se2tleToiX2RlY29kZVR5cGU3U2hhZGluZyIsdmFsdWU6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMuY29vcmRzLHI9dGhpcy5jb2xvcnMsYT1uZXcgSW50MzJBcnJheSgxNiksaT1uZXcgSW50MzJBcnJheSg0KTtlLmhhc0RhdGE7KXt2YXIgbz1lLnJlYWRGbGFnKCk7aWYoISgwPD1vJiZvPD0zKSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiVW5rbm93biB0eXBlNyBmbGFnIik7Zm9yKHZhciBzPXQubGVuZ3RoLGM9MCx1PTAhPT1vPzEyOjE2O2M8dTtjKyspdC5wdXNoKGUucmVhZENvb3JkaW5hdGUoKSk7Zm9yKHZhciBsPXIubGVuZ3RoLGY9MCxoPTAhPT1vPzI6NDtmPGg7ZisrKXIucHVzaChlLnJlYWRDb21wb25lbnRzKCkpO3ZhciBkPXZvaWQgMCxwPXZvaWQgMCxnPXZvaWQgMCx2PXZvaWQgMDtzd2l0Y2gobyl7Y2FzZSAwOmFbMTJdPXMrMyxhWzEzXT1zKzQsYVsxNF09cys1LGFbMTVdPXMrNixhWzhdPXMrMixhWzldPXMrMTMsYVsxMF09cysxNCxhWzExXT1zKzcsYVs0XT1zKzEsYVs1XT1zKzEyLGFbNl09cysxNSxhWzddPXMrOCxhWzBdPXMsYVsxXT1zKzExLGFbMl09cysxMCxhWzNdPXMrOSxpWzJdPWwrMSxpWzNdPWwrMixpWzBdPWwsaVsxXT1sKzM7YnJlYWs7Y2FzZSAxOmQ9YVsxMl0scD1hWzEzXSxnPWFbMTRdLHY9YVsxNV0sYVsxMl09dixhWzEzXT1zKzAsYVsxNF09cysxLGFbMTVdPXMrMixhWzhdPWcsYVs5XT1zKzksYVsxMF09cysxMCxhWzExXT1zKzMsYVs0XT1wLGFbNV09cys4LGFbNl09cysxMSxhWzddPXMrNCxhWzBdPWQsYVsxXT1zKzcsYVsyXT1zKzYsYVszXT1zKzUsZD1pWzJdLHA9aVszXSxpWzJdPXAsaVszXT1sLGlbMF09ZCxpWzFdPWwrMTticmVhaztjYXNlIDI6ZD1hWzE1XSxwPWFbMTFdLGFbMTJdPWFbM10sYVsxM109cyswLGFbMTRdPXMrMSxhWzE1XT1zKzIsYVs4XT1hWzddLGFbOV09cys5LGFbMTBdPXMrMTAsYVsxMV09cyszLGFbNF09cCxhWzVdPXMrOCxhWzZdPXMrMTEsYVs3XT1zKzQsYVswXT1kLGFbMV09cys3LGFbMl09cys2LGFbM109cys1LGQ9aVszXSxpWzJdPWlbMV0saVszXT1sLGlbMF09ZCxpWzFdPWwrMTticmVhaztjYXNlIDM6YVsxMl09YVswXSxhWzEzXT1zKzAsYVsxNF09cysxLGFbMTVdPXMrMixhWzhdPWFbMV0sYVs5XT1zKzksYVsxMF09cysxMCxhWzExXT1zKzMsYVs0XT1hWzJdLGFbNV09cys4LGFbNl09cysxMSxhWzddPXMrNCxhWzBdPWFbM10sYVsxXT1zKzcsYVsyXT1zKzYsYVszXT1zKzUsaVsyXT1pWzBdLGlbM109bCxpWzBdPWlbMV0saVsxXT1sKzF9dGhpcy5maWd1cmVzLnB1c2goe3R5cGU6InBhdGNoIixjb29yZHM6bmV3IEludDMyQXJyYXkoYSksY29sb3JzOm5ldyBJbnQzMkFycmF5KGkpfSl9fX0se2tleToiX2J1aWxkRmlndXJlRnJvbVBhdGNoIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLmZpZ3VyZXNbZV07KDAsbi5hc3NlcnQpKCJwYXRjaCI9PT10LnR5cGUsIlVuZXhwZWN0ZWQgcGF0Y2ggbWVzaCBmaWd1cmUiKTt2YXIgYT10aGlzLmNvb3JkcyxpPXRoaXMuY29sb3JzLG89dC5jb29yZHMscz10LmNvbG9ycyxjPU1hdGgubWluKGFbb1swXV1bMF0sYVtvWzNdXVswXSxhW29bMTJdXVswXSxhW29bMTVdXVswXSksdT1NYXRoLm1pbihhW29bMF1dWzFdLGFbb1szXV1bMV0sYVtvWzEyXV1bMV0sYVtvWzE1XV1bMV0pLGw9TWF0aC5tYXgoYVtvWzBdXVswXSxhW29bM11dWzBdLGFbb1sxMl1dWzBdLGFbb1sxNV1dWzBdKSxmPU1hdGgubWF4KGFbb1swXV1bMV0sYVtvWzNdXVsxXSxhW29bMTJdXVsxXSxhW29bMTVdXVsxXSksaD1NYXRoLmNlaWwoKGwtYykqci5UUklBTkdMRV9ERU5TSVRZLyh0aGlzLmJvdW5kc1syXS10aGlzLmJvdW5kc1swXSkpO2g9TWF0aC5tYXgoci5NSU5fU1BMSVRfUEFUQ0hfQ0hVTktTX0FNT1VOVCxNYXRoLm1pbihyLk1BWF9TUExJVF9QQVRDSF9DSFVOS1NfQU1PVU5ULGgpKTt2YXIgZD1NYXRoLmNlaWwoKGYtdSkqci5UUklBTkdMRV9ERU5TSVRZLyh0aGlzLmJvdW5kc1szXS10aGlzLmJvdW5kc1sxXSkpO2Q9TWF0aC5tYXgoci5NSU5fU1BMSVRfUEFUQ0hfQ0hVTktTX0FNT1VOVCxNYXRoLm1pbihyLk1BWF9TUExJVF9QQVRDSF9DSFVOS1NfQU1PVU5ULGQpKTtmb3IodmFyIHA9aCsxLGc9bmV3IEludDMyQXJyYXkoKGQrMSkqcCksdj1uZXcgSW50MzJBcnJheSgoZCsxKSpwKSx5PTAsbT1uZXcgVWludDhBcnJheSgzKSxiPW5ldyBVaW50OEFycmF5KDMpLHc9aVtzWzBdXSxrPWlbc1sxXV0seD1pW3NbMl1dLE89aVtzWzNdXSxBPVMoZCksQz1TKGgpLEY9MDtGPD1kO0YrKyl7bVswXT0od1swXSooZC1GKSt4WzBdKkYpL2R8MCxtWzFdPSh3WzFdKihkLUYpK3hbMV0qRikvZHwwLG1bMl09KHdbMl0qKGQtRikreFsyXSpGKS9kfDAsYlswXT0oa1swXSooZC1GKStPWzBdKkYpL2R8MCxiWzFdPShrWzFdKihkLUYpK09bMV0qRikvZHwwLGJbMl09KGtbMl0qKGQtRikrT1syXSpGKS9kfDA7Zm9yKHZhciBQPTA7UDw9aDtQKysseSsrKWlmKDAhPT1GJiZGIT09ZHx8MCE9PVAmJlAhPT1oKXtmb3IodmFyIFQ9MCxJPTAsRT0wLGo9MDtqPD0zO2orKylmb3IodmFyIE09MDtNPD0zO00rKyxFKyspe3ZhciBfPUFbRl1bal0qQ1tQXVtNXTtUKz1hW29bRV1dWzBdKl8sSSs9YVtvW0VdXVsxXSpffWdbeV09YS5sZW5ndGgsYS5wdXNoKFtULEldKSx2W3ldPWkubGVuZ3RoO3ZhciBMPW5ldyBVaW50OEFycmF5KDMpO0xbMF09KG1bMF0qKGgtUCkrYlswXSpQKS9ofDAsTFsxXT0obVsxXSooaC1QKStiWzFdKlApL2h8MCxMWzJdPShtWzJdKihoLVApK2JbMl0qUCkvaHwwLGkucHVzaChMKX19Z1swXT1vWzBdLHZbMF09c1swXSxnW2hdPW9bM10sdltoXT1zWzFdLGdbcCpkXT1vWzEyXSx2W3AqZF09c1syXSxnW3AqZCtoXT1vWzE1XSx2W3AqZCtoXT1zWzNdLHRoaXMuZmlndXJlc1tlXT17dHlwZToibGF0dGljZSIsY29vcmRzOmcsY29sb3JzOnYsdmVydGljZXNQZXJSb3c6cH19fSx7a2V5OiJfdXBkYXRlQm91bmRzIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgZT10aGlzLmNvb3Jkc1swXVswXSx0PXRoaXMuY29vcmRzWzBdWzFdLHI9ZSxuPXQsYT0xLGk9dGhpcy5jb29yZHMubGVuZ3RoO2E8aTthKyspe3ZhciBvPXRoaXMuY29vcmRzW2FdWzBdLHM9dGhpcy5jb29yZHNbYV1bMV07ZT1lPm8/bzplLHQ9dD5zP3M6dCxyPXI8bz9vOnIsbj1uPHM/czpufXRoaXMuYm91bmRzPVtlLHQscixuXX19LHtrZXk6Il9wYWNrRGF0YSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZSx0LHIsbixhPXRoaXMuY29vcmRzLGk9bmV3IEZsb2F0MzJBcnJheSgyKmEubGVuZ3RoKTtmb3IoZT0wLHI9MCx0PWEubGVuZ3RoO2U8dDtlKyspe3ZhciBvPWFbZV07aVtyKytdPW9bMF0saVtyKytdPW9bMV19dGhpcy5jb29yZHM9aTt2YXIgcz10aGlzLmNvbG9ycyxjPW5ldyBVaW50OEFycmF5KDMqcy5sZW5ndGgpO2ZvcihlPTAscj0wLHQ9cy5sZW5ndGg7ZTx0O2UrKyl7dmFyIHU9c1tlXTtjW3IrK109dVswXSxjW3IrK109dVsxXSxjW3IrK109dVsyXX10aGlzLmNvbG9ycz1jO3ZhciBsPXRoaXMuZmlndXJlcztmb3IoZT0wLHQ9bC5sZW5ndGg7ZTx0O2UrKyl7dmFyIGY9bFtlXSxoPWYuY29vcmRzLGQ9Zi5jb2xvcnM7Zm9yKHI9MCxuPWgubGVuZ3RoO3I8bjtyKyspaFtyXSo9MixkW3JdKj0zfX19LHtrZXk6ImdldElSIix2YWx1ZTpmdW5jdGlvbigpe3JldHVyblsiTWVzaCIsdGhpcy5zaGFkaW5nVHlwZSx0aGlzLmNvb3Jkcyx0aGlzLmNvbG9ycyx0aGlzLmZpZ3VyZXMsdGhpcy5ib3VuZHMsdGhpcy5iYm94LHRoaXMuYmFja2dyb3VuZF19fV0sW3trZXk6Ik1JTl9TUExJVF9QQVRDSF9DSFVOS1NfQU1PVU5UIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywiTUlOX1NQTElUX1BBVENIX0NIVU5LU19BTU9VTlQiLDMpfX0se2tleToiTUFYX1NQTElUX1BBVENIX0NIVU5LU19BTU9VTlQiLGdldDpmdW5jdGlvbigpe3JldHVybigwLG4uc2hhZG93KSh0aGlzLCJNQVhfU1BMSVRfUEFUQ0hfQ0hVTktTX0FNT1VOVCIsMjApfX0se2tleToiVFJJQU5HTEVfREVOU0lUWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsIlRSSUFOR0xFX0RFTlNJVFkiLDIwKX19XSkscn0oYiksTz1mdW5jdGlvbihlKXtjKHIsZSk7dmFyIHQ9bChyKTtmdW5jdGlvbiByKCl7cmV0dXJuIHAodGhpcyxyKSx0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gdihyLFt7a2V5OiJnZXRJUiIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm5bIkR1bW15Il19fV0pLHJ9KGIpfSwoZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuZ2V0WGZhRm9udERpY3Q9ZnVuY3Rpb24oZSl7dmFyIHQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZyhlKTtpZighdClyZXR1cm4gbnVsbDt2YXIgcixuPXQuYmFzZVdpZHRocyxhPXQuYmFzZU1hcHBpbmcsaT10LmZhY3RvcnM7cj1pP24ubWFwKChmdW5jdGlvbihlLHQpe3JldHVybiBlKmlbdF19KSk6bjt2YXIgbyxzLGM9LTIsdT1bXSxsPWZ1bmN0aW9uKGUsdCl7dmFyIHI9InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVsiQEBpdGVyYXRvciJdO2lmKCFyKXtpZihBcnJheS5pc0FycmF5KGUpfHwocj1oKGUpKSl7ciYmKGU9cik7dmFyIG49MCxhPWZ1bmN0aW9uKCl7fTtyZXR1cm57czphLG46ZnVuY3Rpb24oKXtyZXR1cm4gbj49ZS5sZW5ndGg/e2RvbmU6ITB9Ontkb25lOiExLHZhbHVlOmVbbisrXX19LGU6ZnVuY3Rpb24oZSl7dGhyb3cgZX0sZjphfX10aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gaXRlcmF0ZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9dmFyIGksbz0hMCxzPSExO3JldHVybntzOmZ1bmN0aW9uKCl7cj1yLmNhbGwoZSl9LG46ZnVuY3Rpb24oKXt2YXIgZT1yLm5leHQoKTtyZXR1cm4gbz1lLmRvbmUsZX0sZTpmdW5jdGlvbihlKXtzPSEwLGk9ZX0sZjpmdW5jdGlvbigpe3RyeXtvfHxudWxsPT1yLnJldHVybnx8ci5yZXR1cm4oKX1maW5hbGx5e2lmKHMpdGhyb3cgaX19fX0oYS5tYXAoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuW2UsdF19KSkuc29ydCgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZihlLDEpWzBdLWYodCwxKVswXX0pKSk7dHJ5e2ZvcihsLnMoKTshKHM9bC5uKCkpLmRvbmU7KXt2YXIgZD1mKHMudmFsdWUsMikscD1kWzBdLHY9ZFsxXTstMSE9PXAmJihwPT09YysxPyhvLnB1c2goclt2XSksYys9MSk6KGM9cCxvPVtyW3ZdXSx1LnB1c2gocCxvKSkpfX1jYXRjaChlKXtsLmUoZSl9ZmluYWxseXtsLmYoKX1yZXR1cm4gdX0oZSkscj1uZXcgYS5EaWN0KG51bGwpO3Iuc2V0KCJCYXNlRm9udCIsYS5OYW1lLmdldChlKSksci5zZXQoIlR5cGUiLGEuTmFtZS5nZXQoIkZvbnQiKSksci5zZXQoIlN1YnR5cGUiLGEuTmFtZS5nZXQoIkNJREZvbnRUeXBlMiIpKSxyLnNldCgiRW5jb2RpbmciLGEuTmFtZS5nZXQoIklkZW50aXR5LUgiKSksci5zZXQoIkNJRFRvR0lETWFwIixhLk5hbWUuZ2V0KCJJZGVudGl0eSIpKSxyLnNldCgiVyIsdCksci5zZXQoIkZpcnN0Q2hhciIsdFswXSksci5zZXQoIkxhc3RDaGFyIix0LmF0KC0yKSt0LmF0KC0xKS5sZW5ndGgtMSk7dmFyIG49bmV3IGEuRGljdChudWxsKTtyLnNldCgiRm9udERlc2NyaXB0b3IiLG4pO3ZhciBpPW5ldyBhLkRpY3QobnVsbCk7cmV0dXJuIGkuc2V0KCJPcmRlcmluZyIsIklkZW50aXR5IiksaS5zZXQoIlJlZ2lzdHJ5IiwiQWRvYmUiKSxpLnNldCgiU3VwcGxlbWVudCIsMCksci5zZXQoIkNJRFN5c3RlbUluZm8iLGkpLHJ9LHQuZ2V0WGZhRm9udE5hbWU9Zzt2YXIgbj1yKDE4MSksYT1yKDEzNCksaT1yKDE4Miksbz1yKDE4Mykscz1yKDE4NCksYz1yKDE4NSksdT1yKDEzNSksbD1yKDE2Nyk7ZnVuY3Rpb24gZihlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgcj1udWxsPT1lP251bGw6InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVsiQEBpdGVyYXRvciJdO2lmKG51bGwhPXIpe3ZhciBuLGEsaSxvLHM9W10sYz0hMCx1PSExO3RyeXtpZihpPShyPXIuY2FsbChlKSkubmV4dCwwPT09dCl7aWYoT2JqZWN0KHIpIT09cilyZXR1cm47Yz0hMX1lbHNlIGZvcig7IShjPShuPWkuY2FsbChyKSkuZG9uZSkmJihzLnB1c2gobi52YWx1ZSkscy5sZW5ndGghPT10KTtjPSEwKTt9Y2F0Y2goZSl7dT0hMCxhPWV9ZmluYWxseXt0cnl7aWYoIWMmJm51bGwhPXIucmV0dXJuJiYobz1yLnJldHVybigpLE9iamVjdChvKSE9PW8pKXJldHVybn1maW5hbGx5e2lmKHUpdGhyb3cgYX19cmV0dXJuIHN9fShlLHQpfHxoKGUsdCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiBoKGUsdCl7aWYoZSl7aWYoInN0cmluZyI9PXR5cGVvZiBlKXJldHVybiBkKGUsdCk7dmFyIHI9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO3JldHVybiJPYmplY3QiPT09ciYmZS5jb25zdHJ1Y3RvciYmKHI9ZS5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PXJ8fCJTZXQiPT09cj9BcnJheS5mcm9tKGUpOiJBcmd1bWVudHMiPT09cnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3Qocik/ZChlLHQpOnZvaWQgMH19ZnVuY3Rpb24gZChlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgcj0wLG49bmV3IEFycmF5KHQpO3I8dDtyKyspbltyXT1lW3JdO3JldHVybiBufXZhciBwPSgwLHUuZ2V0TG9va3VwVGFibGVGYWN0b3J5KSgoZnVuY3Rpb24oZSl7ZVsiTXlyaWFkUHJvLVJlZ3VsYXIiXT1lWyJQZGZKUy1GYWxsYmFjay1SZWd1bGFyIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLVJlZ3VsYXIiLGZhY3RvcnM6cy5NeXJpYWRQcm9SZWd1bGFyRmFjdG9ycyxiYXNlV2lkdGhzOm8uTGliZXJhdGlvblNhbnNSZWd1bGFyV2lkdGhzLGJhc2VNYXBwaW5nOm8uTGliZXJhdGlvblNhbnNSZWd1bGFyTWFwcGluZyxtZXRyaWNzOnMuTXlyaWFkUHJvUmVndWxhck1ldHJpY3N9LGVbIk15cmlhZFByby1Cb2xkIl09ZVsiUGRmSlMtRmFsbGJhY2stQm9sZCJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkIixmYWN0b3JzOnMuTXlyaWFkUHJvQm9sZEZhY3RvcnMsYmFzZVdpZHRoczpvLkxpYmVyYXRpb25TYW5zQm9sZFdpZHRocyxiYXNlTWFwcGluZzpvLkxpYmVyYXRpb25TYW5zQm9sZE1hcHBpbmcsbWV0cmljczpzLk15cmlhZFByb0JvbGRNZXRyaWNzfSxlWyJNeXJpYWRQcm8tSXQiXT1lWyJNeXJpYWRQcm8tSXRhbGljIl09ZVsiUGRmSlMtRmFsbGJhY2stSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUl0YWxpYyIsZmFjdG9yczpzLk15cmlhZFByb0l0YWxpY0ZhY3RvcnMsYmFzZVdpZHRoczpvLkxpYmVyYXRpb25TYW5zSXRhbGljV2lkdGhzLGJhc2VNYXBwaW5nOm8uTGliZXJhdGlvblNhbnNJdGFsaWNNYXBwaW5nLG1ldHJpY3M6cy5NeXJpYWRQcm9JdGFsaWNNZXRyaWNzfSxlWyJNeXJpYWRQcm8tQm9sZEl0Il09ZVsiTXlyaWFkUHJvLUJvbGRJdGFsaWMiXT1lWyJQZGZKUy1GYWxsYmFjay1Cb2xkSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUJvbGRJdGFsaWMiLGZhY3RvcnM6cy5NeXJpYWRQcm9Cb2xkSXRhbGljRmFjdG9ycyxiYXNlV2lkdGhzOm8uTGliZXJhdGlvblNhbnNCb2xkSXRhbGljV2lkdGhzLGJhc2VNYXBwaW5nOm8uTGliZXJhdGlvblNhbnNCb2xkSXRhbGljTWFwcGluZyxtZXRyaWNzOnMuTXlyaWFkUHJvQm9sZEl0YWxpY01ldHJpY3N9LGUuQXJpYWxNVD1lLkFyaWFsPWVbIkFyaWFsLVJlZ3VsYXIiXT17bmFtZToiTGliZXJhdGlvblNhbnMtUmVndWxhciIsYmFzZVdpZHRoczpvLkxpYmVyYXRpb25TYW5zUmVndWxhcldpZHRocyxiYXNlTWFwcGluZzpvLkxpYmVyYXRpb25TYW5zUmVndWxhck1hcHBpbmd9LGVbIkFyaWFsLUJvbGRNVCJdPWVbIkFyaWFsLUJvbGQiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZCIsYmFzZVdpZHRoczpvLkxpYmVyYXRpb25TYW5zQm9sZFdpZHRocyxiYXNlTWFwcGluZzpvLkxpYmVyYXRpb25TYW5zQm9sZE1hcHBpbmd9LGVbIkFyaWFsLUl0YWxpY01UIl09ZVsiQXJpYWwtSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUl0YWxpYyIsYmFzZVdpZHRoczpvLkxpYmVyYXRpb25TYW5zSXRhbGljV2lkdGhzLGJhc2VNYXBwaW5nOm8uTGliZXJhdGlvblNhbnNJdGFsaWNNYXBwaW5nfSxlWyJBcmlhbC1Cb2xkSXRhbGljTVQiXT1lWyJBcmlhbC1Cb2xkSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUJvbGRJdGFsaWMiLGJhc2VXaWR0aHM6by5MaWJlcmF0aW9uU2Fuc0JvbGRJdGFsaWNXaWR0aHMsYmFzZU1hcHBpbmc6by5MaWJlcmF0aW9uU2Fuc0JvbGRJdGFsaWNNYXBwaW5nfSxlWyJDYWxpYnJpLVJlZ3VsYXIiXT17bmFtZToiTGliZXJhdGlvblNhbnMtUmVndWxhciIsZmFjdG9yczpuLkNhbGlicmlSZWd1bGFyRmFjdG9ycyxiYXNlV2lkdGhzOm8uTGliZXJhdGlvblNhbnNSZWd1bGFyV2lkdGhzLGJhc2VNYXBwaW5nOm8uTGliZXJhdGlvblNhbnNSZWd1bGFyTWFwcGluZyxtZXRyaWNzOm4uQ2FsaWJyaVJlZ3VsYXJNZXRyaWNzfSxlWyJDYWxpYnJpLUJvbGQiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZCIsZmFjdG9yczpuLkNhbGlicmlCb2xkRmFjdG9ycyxiYXNlV2lkdGhzOm8uTGliZXJhdGlvblNhbnNCb2xkV2lkdGhzLGJhc2VNYXBwaW5nOm8uTGliZXJhdGlvblNhbnNCb2xkTWFwcGluZyxtZXRyaWNzOm4uQ2FsaWJyaUJvbGRNZXRyaWNzfSxlWyJDYWxpYnJpLUl0YWxpYyJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1JdGFsaWMiLGZhY3RvcnM6bi5DYWxpYnJpSXRhbGljRmFjdG9ycyxiYXNlV2lkdGhzOm8uTGliZXJhdGlvblNhbnNJdGFsaWNXaWR0aHMsYmFzZU1hcHBpbmc6by5MaWJlcmF0aW9uU2Fuc0l0YWxpY01hcHBpbmcsbWV0cmljczpuLkNhbGlicmlJdGFsaWNNZXRyaWNzfSxlWyJDYWxpYnJpLUJvbGRJdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZEl0YWxpYyIsZmFjdG9yczpuLkNhbGlicmlCb2xkSXRhbGljRmFjdG9ycyxiYXNlV2lkdGhzOm8uTGliZXJhdGlvblNhbnNCb2xkSXRhbGljV2lkdGhzLGJhc2VNYXBwaW5nOm8uTGliZXJhdGlvblNhbnNCb2xkSXRhbGljTWFwcGluZyxtZXRyaWNzOm4uQ2FsaWJyaUJvbGRJdGFsaWNNZXRyaWNzfSxlWyJTZWdvZXVpLVJlZ3VsYXIiXT17bmFtZToiTGliZXJhdGlvblNhbnMtUmVndWxhciIsZmFjdG9yczpjLlNlZ29ldWlSZWd1bGFyRmFjdG9ycyxiYXNlV2lkdGhzOm8uTGliZXJhdGlvblNhbnNSZWd1bGFyV2lkdGhzLGJhc2VNYXBwaW5nOm8uTGliZXJhdGlvblNhbnNSZWd1bGFyTWFwcGluZyxtZXRyaWNzOmMuU2Vnb2V1aVJlZ3VsYXJNZXRyaWNzfSxlWyJTZWdvZXVpLUJvbGQiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZCIsZmFjdG9yczpjLlNlZ29ldWlCb2xkRmFjdG9ycyxiYXNlV2lkdGhzOm8uTGliZXJhdGlvblNhbnNCb2xkV2lkdGhzLGJhc2VNYXBwaW5nOm8uTGliZXJhdGlvblNhbnNCb2xkTWFwcGluZyxtZXRyaWNzOmMuU2Vnb2V1aUJvbGRNZXRyaWNzfSxlWyJTZWdvZXVpLUl0YWxpYyJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1JdGFsaWMiLGZhY3RvcnM6Yy5TZWdvZXVpSXRhbGljRmFjdG9ycyxiYXNlV2lkdGhzOm8uTGliZXJhdGlvblNhbnNJdGFsaWNXaWR0aHMsYmFzZU1hcHBpbmc6by5MaWJlcmF0aW9uU2Fuc0l0YWxpY01hcHBpbmcsbWV0cmljczpjLlNlZ29ldWlJdGFsaWNNZXRyaWNzfSxlWyJTZWdvZXVpLUJvbGRJdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZEl0YWxpYyIsZmFjdG9yczpjLlNlZ29ldWlCb2xkSXRhbGljRmFjdG9ycyxiYXNlV2lkdGhzOm8uTGliZXJhdGlvblNhbnNCb2xkSXRhbGljV2lkdGhzLGJhc2VNYXBwaW5nOm8uTGliZXJhdGlvblNhbnNCb2xkSXRhbGljTWFwcGluZyxtZXRyaWNzOmMuU2Vnb2V1aUJvbGRJdGFsaWNNZXRyaWNzfSxlWyJIZWx2ZXRpY2EtUmVndWxhciJdPWUuSGVsdmV0aWNhPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1SZWd1bGFyIixmYWN0b3JzOmkuSGVsdmV0aWNhUmVndWxhckZhY3RvcnMsYmFzZVdpZHRoczpvLkxpYmVyYXRpb25TYW5zUmVndWxhcldpZHRocyxiYXNlTWFwcGluZzpvLkxpYmVyYXRpb25TYW5zUmVndWxhck1hcHBpbmcsbWV0cmljczppLkhlbHZldGljYVJlZ3VsYXJNZXRyaWNzfSxlWyJIZWx2ZXRpY2EtQm9sZCJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkIixmYWN0b3JzOmkuSGVsdmV0aWNhQm9sZEZhY3RvcnMsYmFzZVdpZHRoczpvLkxpYmVyYXRpb25TYW5zQm9sZFdpZHRocyxiYXNlTWFwcGluZzpvLkxpYmVyYXRpb25TYW5zQm9sZE1hcHBpbmcsbWV0cmljczppLkhlbHZldGljYUJvbGRNZXRyaWNzfSxlWyJIZWx2ZXRpY2EtSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUl0YWxpYyIsZmFjdG9yczppLkhlbHZldGljYUl0YWxpY0ZhY3RvcnMsYmFzZVdpZHRoczpvLkxpYmVyYXRpb25TYW5zSXRhbGljV2lkdGhzLGJhc2VNYXBwaW5nOm8uTGliZXJhdGlvblNhbnNJdGFsaWNNYXBwaW5nLG1ldHJpY3M6aS5IZWx2ZXRpY2FJdGFsaWNNZXRyaWNzfSxlWyJIZWx2ZXRpY2EtQm9sZEl0YWxpYyJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljIixmYWN0b3JzOmkuSGVsdmV0aWNhQm9sZEl0YWxpY0ZhY3RvcnMsYmFzZVdpZHRoczpvLkxpYmVyYXRpb25TYW5zQm9sZEl0YWxpY1dpZHRocyxiYXNlTWFwcGluZzpvLkxpYmVyYXRpb25TYW5zQm9sZEl0YWxpY01hcHBpbmcsbWV0cmljczppLkhlbHZldGljYUJvbGRJdGFsaWNNZXRyaWNzfX0pKTtmdW5jdGlvbiBnKGUpe3ZhciB0PSgwLGwubm9ybWFsaXplRm9udE5hbWUpKGUpO3JldHVybiBwKClbdF19fSwoZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LkNhbGlicmlSZWd1bGFyTWV0cmljcz10LkNhbGlicmlSZWd1bGFyRmFjdG9ycz10LkNhbGlicmlJdGFsaWNNZXRyaWNzPXQuQ2FsaWJyaUl0YWxpY0ZhY3RvcnM9dC5DYWxpYnJpQm9sZE1ldHJpY3M9dC5DYWxpYnJpQm9sZEl0YWxpY01ldHJpY3M9dC5DYWxpYnJpQm9sZEl0YWxpY0ZhY3RvcnM9dC5DYWxpYnJpQm9sZEZhY3RvcnM9dm9pZCAwLHQuQ2FsaWJyaUJvbGRGYWN0b3JzPVsxLjM4NzcsMSwxLDEsLjk3ODAxLC45MjQ4MiwuODk1NTIsLjkxMTMzLC44MTk4OCwuOTc1NjYsLjk4MTUyLC45MzU0OCwuOTM1NDgsMS4yNzk4LC44NTI4NCwuOTI3OTQsMSwuOTYxMzQsMS41NDY1NywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjgyODQ1LC44Mjg0NSwuODUyODQsLjg1Mjg0LC44NTI4NCwuNzU4NTksLjkyMTM4LC44MzkwOCwuNzc2MiwuNzMyOTMsLjg3Mjg5LC43MzEzMywuNzUxNCwuODE5MjEsLjg3MzU2LC45NTk1OCwuNTk1MjYsLjc1NzI3LC42OTIyNSwxLjA0OTI0LC45MTIxLC44Njk0MywuNzk3OTUsLjg4MTk4LC43Nzk1OCwuNzA4NjQsLjgxMDU1LC45MDM5OSwuODg2NTMsLjk2MDE3LC44MjU3NywuNzc4OTIsLjc4MjU3LC45NzUwNywxLjU0NjU3LC45NzUwNywuODUyODQsLjg5NTUyLC45MDE3NiwuODg3NjIsLjg3ODUsLjc1MjQxLC44Nzg1LC45MDUxOCwuOTUwMTUsLjc3NjE4LC44Nzg1LC44ODQwMSwuOTE5MTYsLjg2MzA0LC44ODQwMSwuOTE0ODgsLjg3ODUsLjg4MDEsLjg3ODUsLjg3ODUsLjkxMzQzLC43MTczLDEuMDQxMDYsLjg3ODUsLjg1MDc1LC45NTc5NCwuODI2MTYsLjg1MTYyLC43OTQ5MiwuODgzMzEsMS42OTgwOCwuODgzMzEsLjg1Mjg0LC45NzgwMSwuODk1NTIsLjkxMTMzLC44OTU1MiwuOTExMzMsMS43ODAxLC44OTU1MiwxLjI0NDg3LDEuMTMyNTQsMS4xMjQwMSwuOTY4MzksLjg1Mjg0LC42ODc4NywuNzA2NDUsLjg1NTkyLC45MDc0NywxLjAxNDY2LDEuMDA4OCwuOTAzMjMsMSwxLjA3NDYzLDEsLjkxMDU2LC43NTgwNiwxLjE5MTE4LC45NjgzOSwuNzg4NjQsLjgyODQ1LC44NDEzMywuNzU4NTksLjgzOTA4LC44MzkwOCwuODM5MDgsLjgzOTA4LC44MzkwOCwuODM5MDgsLjc3NTM5LC43MzI5MywuNzMxMzMsLjczMTMzLC43MzEzMywuNzMxMzMsLjk1OTU4LC45NTk1OCwuOTU5NTgsLjk1OTU4LC44ODUwNiwuOTEyMSwuODY5NDMsLjg2OTQzLC44Njk0MywuODY5NDMsLjg2OTQzLC44NTI4NCwuODc1MDgsLjkwMzk5LC45MDM5OSwuOTAzOTksLjkwMzk5LC43Nzg5MiwuNzk3OTUsLjkwODA3LC44ODc2MiwuODg3NjIsLjg4NzYyLC44ODc2MiwuODg3NjIsLjg4NzYyLC44NzE1LC43NTI0MSwuOTA1MTgsLjkwNTE4LC45MDUxOCwuOTA1MTgsLjg4NDAxLC44ODQwMSwuODg0MDEsLjg4NDAxLC44Nzg1LC44Nzg1LC44ODAxLC44ODAxLC44ODAxLC44ODAxLC44ODAxLC45MDc0NywuODkwNDksLjg3ODUsLjg3ODUsLjg3ODUsLjg3ODUsLjg1MTYyLC44Nzg1LC44NTE2MiwuODM5MDgsLjg4NzYyLC44MzkwOCwuODg3NjIsLjgzOTA4LC44ODc2MiwuNzMyOTMsLjc1MjQxLC43MzI5MywuNzUyNDEsLjczMjkzLC43NTI0MSwuNzMyOTMsLjc1MjQxLC44NzI4OSwuODMwMTYsLjg4NTA2LC45MzEyNSwuNzMxMzMsLjkwNTE4LC43MzEzMywuOTA1MTgsLjczMTMzLC45MDUxOCwuNzMxMzMsLjkwNTE4LC43MzEzMywuOTA1MTgsLjgxOTIxLC43NzYxOCwuODE5MjEsLjc3NjE4LC44MTkyMSwuNzc2MTgsMSwxLC44NzM1NiwuODc4NSwuOTEwNzUsLjg5NjA4LC45NTk1OCwuODg0MDEsLjk1OTU4LC44ODQwMSwuOTU5NTgsLjg4NDAxLC45NTk1OCwuODg0MDEsLjk1OTU4LC44ODQwMSwuNzYyMjksLjkwMTY3LC41OTUyNiwuOTE5MTYsMSwxLC44NjMwNCwuNjkyMjUsLjg4NDAxLDEsMSwuNzA0MjQsLjc5NDY4LC45MTkyNiwuODgxNzUsLjcwODIzLC45NDkwMywuOTEyMSwuODc4NSwxLDEsLjkxMjEsLjg3ODUsLjg3ODAyLC44ODY1NiwuODc4NSwuODY5NDMsLjg4MDEsLjg2OTQzLC44ODAxLC44Njk0MywuODgwMSwuODc0MDIsLjg5MjkxLC43Nzk1OCwuOTEzNDMsMSwxLC43Nzk1OCwuOTEzNDMsLjcwODY0LC43MTczLC43MDg2NCwuNzE3MywuNzA4NjQsLjcxNzMsLjcwODY0LC43MTczLDEsMSwuODEwNTUsLjc1ODQxLC44MTA1NSwxLjA2NDUyLC45MDM5OSwuODc4NSwuOTAzOTksLjg3ODUsLjkwMzk5LC44Nzg1LC45MDM5OSwuODc4NSwuOTAzOTksLjg3ODUsLjkwMzk5LC44Nzg1LC45NjAxNywuOTU3OTQsLjc3ODkyLC44NTE2MiwuNzc4OTIsLjc4MjU3LC43OTQ5MiwuNzgyNTcsLjc5NDkyLC43ODI1NywuNzk0OTIsLjkyOTcsLjU2ODkyLC44MzkwOCwuODg3NjIsLjc3NTM5LC44NzE1LC44NzUwOCwuODkwNDksMSwxLC44MTA1NSwxLjA0MTA2LDEuMjA1MjgsMS4yMDUyOCwxLDEuMTU1NDMsLjcwNjc0LC45ODM4NywuOTQ3MjEsMS4zMzQzMSwxLjQ1ODk0LC45NTE2MSwxLjA2MzAzLC44MzkwOCwuODAzNTIsLjU3MTg0LC42OTY1LC41NjI4OSwuODIwMDEsLjU2MDI5LC44MTIzNSwxLjAyOTg4LC44MzkwOCwuNzc2MiwuNjgxNTYsLjgwMzY3LC43MzEzMywuNzgyNTcsLjg3MzU2LC44Njk0MywuOTU5NTgsLjc1NzI3LC44OTAxOSwxLjA0OTI0LC45MTIxLC43NjQ4LC44Njk0MywuODczNTYsLjc5Nzk1LC43ODI3NSwuODEwNTUsLjc3ODkyLC45NzYyLC44MjU3NywuOTk4MTksLjg0ODk2LC45NTk1OCwuNzc4OTIsLjk2MTA4LDEuMDE0MDcsLjg5MDQ5LDEuMDI5ODgsLjk0MjExLC45NjEwOCwuODkzNiwuODQwMjEsLjg3ODQyLC45NjM5OSwuNzkxMDksLjg5MDQ5LDEuMDA4MTMsMS4wMjk4OCwuODYwNzcsLjg3NDQ1LC45MjA5OSwuODQ3MjMsLjg2NTEzLC44ODAxLC43NTYzOCwuODU3MTQsLjc4MjE2LC43OTU4NiwuODc5NjUsLjk0MjExLC45Nzc0NywuNzgyODcsLjk3OTI2LC44NDk3MSwxLjAyOTg4LC45NDIxMSwuODgwMSwuOTQyMTEsLjg0OTcxLC43MzEzMywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTAyNjQsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkwNTE4LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45MDU0OCwxLDEsMSwxLDEsMSwuOTYwMTcsLjk1Nzk0LC45NjAxNywuOTU3OTQsLjk2MDE3LC45NTc5NCwuNzc4OTIsLjg1MTYyLDEsMSwuODk1NTIsLjkwNTI3LDEsLjkwMzYzLC45Mjc5NCwuOTI3OTQsLjkyNzk0LC45Mjc5NCwuODcwMTIsLjg3MDEyLC44NzAxMiwuODk1NTIsLjg5NTUyLDEuNDIyNTksLjcxMTQzLDEuMDYxNTIsMSwxLDEuMDMzNzIsMS4wMzM3MiwuOTcxNzEsMS40OTU2LDIuMjgwNywuOTM4MzUsLjgzNDA2LC45MTEzMywuODQxMDcsLjkxMTMzLDEsMSwxLC43MjAyMSwxLDEuMjMxMDgsLjgzNDg5LC44ODUyNSwuODg1MjUsLjgxNDk5LC45MDUyNywxLjgxMDU1LC45MDUyNywxLjgxMDU1LDEuMzEwMDYsMS41MzcxMSwuOTQ0MzQsMS4wODY5NiwxLC45NTAxOCwuNzcxOTIsLjg1Mjg0LC45MDc0NywxLjE3NTM0LC42OTgyNSwuOTcxNiwxLjM3MDc3LC45MDc0NywuOTA3NDcsLjg1MzU2LC45MDc0NywuOTA3NDcsMS40NDk0NywuODUyODQsLjg5NDEsLjg5NDEsLjcwNTcyLC44LC43MDU3MiwuNzA1NzIsLjcwNTcyLC43MDU3MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk5ODYyLC45OTg2MiwxLDEsMSwxLDEsMS4wODAwNCwuOTEwMjcsMSwxLDEsLjk5ODYyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45MDcyNywuOTA3MjcsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLHQuQ2FsaWJyaUJvbGRNZXRyaWNzPXtsaW5lSGVpZ2h0OjEuMjIwNyxsaW5lR2FwOi4yMjA3fSx0LkNhbGlicmlCb2xkSXRhbGljRmFjdG9ycz1bMS4zODc3LDEsMSwxLC45NzgwMSwuOTI0ODIsLjg5NTUyLC45MTEzMywuODE5ODgsLjk3NTY2LC45ODE1MiwuOTM1NDgsLjkzNTQ4LDEuMjc5OCwuODUyODQsLjkyNzk0LDEsLjk2MTM0LDEuNTYyMzksLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC44Mjg0NSwuODI4NDUsLjg1Mjg0LC44NTI4NCwuODUyODQsLjc1ODU5LC45MjEzOCwuODM5MDgsLjc3NjIsLjcxODA1LC44NzI4OSwuNzMxMzMsLjc1MTQsLjgxOTIxLC44NzM1NiwuOTU5NTgsLjU5NTI2LC43NTcyNywuNjkyMjUsMS4wNDkyNCwuOTA4NzIsLjg1OTM4LC43OTc5NSwuODcwNjgsLjc3OTU4LC42OTc2NiwuODEwNTUsLjkwMzk5LC44ODY1MywuOTYwNjgsLjgyNTc3LC43Nzg5MiwuNzgyNTcsLjk3NTA3LDEuNTI5LC45NzUwNywuODUyODQsLjg5NTUyLC45MDE3NiwuOTQ5MDgsLjg2NDExLC43NDAxMiwuODY0MTEsLjg4MzIzLC45NTAxNSwuODY0MTEsLjg2MzMxLC44ODQwMSwuOTE5MTYsLjg2MzA0LC44ODQwMSwuOTAzOSwuODYzMzEsLjg2MzMxLC44NjQxMSwuODY0MTEsLjkwNDY0LC43MDg1MiwxLjA0MTA2LC44NjMzMSwuODQzNzIsLjk1Nzk0LC44MjYxNiwuODQ1NDgsLjc5NDkyLC44ODMzMSwxLjY5ODA4LC44ODMzMSwuODUyODQsLjk3ODAxLC44OTU1MiwuOTExMzMsLjg5NTUyLC45MTEzMywxLjc4MDEsLjg5NTUyLDEuMjQ0ODcsMS4xMzI1NCwxLjE5MTI5LC45NjgzOSwuODUyODQsLjY4Nzg3LC43MDY0NSwuODU1OTIsLjkwNzQ3LDEuMDE0NjYsMS4wMDg4LC45MDMyMywxLDEuMDc0NjMsMSwuOTEwNTYsLjc1ODA2LDEuMTkxMTgsLjk2ODM5LC43ODg2NCwuODI4NDUsLjg0MTMzLC43NTg1OSwuODM5MDgsLjgzOTA4LC44MzkwOCwuODM5MDgsLjgzOTA4LC44MzkwOCwuNzc1MzksLjcxODA1LC43MzEzMywuNzMxMzMsLjczMTMzLC43MzEzMywuOTU5NTgsLjk1OTU4LC45NTk1OCwuOTU5NTgsLjg4NTA2LC45MDg3MiwuODU5MzgsLjg1OTM4LC44NTkzOCwuODU5MzgsLjg1OTM4LC44NTI4NCwuODcwNjgsLjkwMzk5LC45MDM5OSwuOTAzOTksLjkwMzk5LC43Nzg5MiwuNzk3OTUsLjkwODA3LC45NDkwOCwuOTQ5MDgsLjk0OTA4LC45NDkwOCwuOTQ5MDgsLjk0OTA4LC44NTg4NywuNzQwMTIsLjg4MzIzLC44ODMyMywuODgzMjMsLjg4MzIzLC44ODQwMSwuODg0MDEsLjg4NDAxLC44ODQwMSwuODc4NSwuODYzMzEsLjg2MzMxLC44NjMzMSwuODYzMzEsLjg2MzMxLC44NjMzMSwuOTA3NDcsLjg5MDQ5LC44NjMzMSwuODYzMzEsLjg2MzMxLC44NjMzMSwuODQ1NDgsLjg2NDExLC44NDU0OCwuODM5MDgsLjk0OTA4LC44MzkwOCwuOTQ5MDgsLjgzOTA4LC45NDkwOCwuNzE4MDUsLjc0MDEyLC43MTgwNSwuNzQwMTIsLjcxODA1LC43NDAxMiwuNzE4MDUsLjc0MDEyLC44NzI4OSwuNzk1MzgsLjg4NTA2LC45MjcyNiwuNzMxMzMsLjg4MzIzLC43MzEzMywuODgzMjMsLjczMTMzLC44ODMyMywuNzMxMzMsLjg4MzIzLC43MzEzMywuODgzMjMsLjgxOTIxLC44NjQxMSwuODE5MjEsLjg2NDExLC44MTkyMSwuODY0MTEsMSwxLC44NzM1NiwuODYzMzEsLjkxMDc1LC44Nzc3LC45NTk1OCwuODg0MDEsLjk1OTU4LC44ODQwMSwuOTU5NTgsLjg4NDAxLC45NTk1OCwuODg0MDEsLjk1OTU4LC44ODQwMSwuNzY0NjcsLjkwMTY3LC41OTUyNiwuOTE5MTYsMSwxLC44NjMwNCwuNjkyMjUsLjg4NDAxLDEsMSwuNzA0MjQsLjc3MzEyLC45MTkyNiwuODgxNzUsLjcwODIzLC45NDkwMywuOTA4NzIsLjg2MzMxLDEsMSwuOTA4NzIsLjg2MzMxLC44NjkwNiwuODgxMTYsLjg2MzMxLC44NTkzOCwuODYzMzEsLjg1OTM4LC44NjMzMSwuODU5MzgsLjg2MzMxLC44NzQwMiwuODY1NDksLjc3OTU4LC45MDQ2NCwxLDEsLjc3OTU4LC45MDQ2NCwuNjk3NjYsLjcwODUyLC42OTc2NiwuNzA4NTIsLjY5NzY2LC43MDg1MiwuNjk3NjYsLjcwODUyLDEsMSwuODEwNTUsLjc1ODQxLC44MTA1NSwxLjA2NDUyLC45MDM5OSwuODYzMzEsLjkwMzk5LC44NjMzMSwuOTAzOTksLjg2MzMxLC45MDM5OSwuODYzMzEsLjkwMzk5LC44NjMzMSwuOTAzOTksLjg2MzMxLC45NjA2OCwuOTU3OTQsLjc3ODkyLC44NDU0OCwuNzc4OTIsLjc4MjU3LC43OTQ5MiwuNzgyNTcsLjc5NDkyLC43ODI1NywuNzk0OTIsLjkyOTcsLjU2ODkyLC44MzkwOCwuOTQ5MDgsLjc3NTM5LC44NTg4NywuODcwNjgsLjg5MDQ5LDEsMSwuODEwNTUsMS4wNDEwNiwxLjIwNTI4LDEuMjA1MjgsMSwxLjE1NTQzLC43MDA4OCwuOTgzODcsLjk0NzIxLDEuMzM0MzEsMS40NTg5NCwuOTUxNjEsMS40ODM4NywuODM5MDgsLjgwMzUyLC41NzExOCwuNjk2NSwuNTYzNDcsLjc5MTc5LC41NTg1MywuODAzNDYsMS4wMjk4OCwuODM5MDgsLjc3NjIsLjY3MTc0LC44NjAzNiwuNzMxMzMsLjc4MjU3LC44NzM1NiwuODY0NDEsLjk1OTU4LC43NTcyNywuODkwMTksMS4wNDkyNCwuOTA4NzIsLjc0ODg5LC44NTkzOCwuODc4OTEsLjc5Nzk1LC43OTU3LC44MTA1NSwuNzc4OTIsLjk3NDQ3LC44MjU3NywuOTc0NjYsLjg3MTc5LC45NTk1OCwuNzc4OTIsLjk0MjUyLC45NTYxMiwuODc1MywxLjAyOTg4LC45MjczMywuOTQyNTIsLjg3NDExLC44NDAyMSwuODcyOCwuOTU2MTIsLjc0MDgxLC44NzUzLDEuMDIxODksMS4wMjk4OCwuODQ4MTQsLjg3NDQ1LC45MTgyMiwuODQ3MjMsLjg1NjY4LC44NjMzMSwuODEzNDQsLjg3NTgxLC43NjQyMiwuODIwNDYsLjk2MDU3LC45MjczMywuOTkzNzUsLjc4MDIyLC45NTQ1MiwuODYwMTUsMS4wMjk4OCwuOTI3MzMsLjg2MzMxLC45MjczMywuODYwMTUsLjczMTMzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45MDYzMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODgzMjMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjg1MTc0LDEsMSwxLDEsMSwxLC45NjA2OCwuOTU3OTQsLjk2MDY4LC45NTc5NCwuOTYwNjgsLjk1Nzk0LC43Nzg5MiwuODQ1NDgsMSwxLC44OTU1MiwuOTA1MjcsMSwuOTAzNjMsLjkyNzk0LC45Mjc5NCwuOTI3OTQsLjg5ODA3LC44NzAxMiwuODcwMTIsLjg3MDEyLC44OTU1MiwuODk1NTIsMS40MjI1OSwuNzEwOTQsMS4wNjE1MiwxLDEsMS4wMzM3MiwxLjAzMzcyLC45NzE3MSwxLjQ5NTYsMi4yODA3LC45Mjk3MiwuODM0MDYsLjkxMTMzLC44MzMyNiwuOTExMzMsMSwxLDEsLjcyMDIxLDEsMS4yMzEwOCwuODM0ODksLjg4NTI1LC44ODUyNSwuODE0OTksLjkwNjE2LDEuODEwNTUsLjkwNTI3LDEuODEwNTUsMS4zMTA3LDEuNTM3MTEsLjk0NDM0LDEuMDg2OTYsMSwuOTUwMTgsLjc3MTkyLC44NTI4NCwuOTA3NDcsMS4xNzUzNCwuNjk4MjUsLjk3MTYsMS4zNzA3NywuOTA3NDcsLjkwNzQ3LC44NTM1NiwuOTA3NDcsLjkwNzQ3LDEuNDQ5NDcsLjg1Mjg0LC44OTQxLC44OTQxLC43MDU3MiwuOCwuNzA1NzIsLjcwNTcyLC43MDU3MiwuNzA1NzIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45OTg2MiwuOTk4NjIsMSwxLDEsMSwxLDEuMDgwMDQsLjkxMDI3LDEsMSwxLC45OTg2MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTA3MjcsLjkwNzI3LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSx0LkNhbGlicmlCb2xkSXRhbGljTWV0cmljcz17bGluZUhlaWdodDoxLjIyMDcsbGluZUdhcDouMjIwN30sdC5DYWxpYnJpSXRhbGljRmFjdG9ycz1bMS4zODc3LDEsMSwxLDEuMTcyMjMsMS4xMjkzLC44OTU1MiwuOTExMzMsLjgwMzk1LDEuMDIyNjksMS4xNTYwMSwuOTEwNTYsLjkxMDU2LDEuMjc5OCwuODUyODQsLjg5ODA3LDEsLjkwODYxLDEuMzk1NDMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45NjMwOSwuOTYzMDksLjg1Mjg0LC44NTI4NCwuODUyODQsLjgzMzE5LC44ODA3MSwuODY3NSwuODE1NTIsLjcyMzQ2LC44NTE5MywuNzMyMDYsLjc1MjIsLjgxMTA1LC44NjI3NSwuOTA2ODUsLjYzNzcsLjc3ODkyLC43NTU5MywxLjAyNjM4LC44OTI0OSwuODQxMTgsLjc3NDUyLC44NTM3NCwuNzUxODYsLjY3Nzg5LC43OTc3NiwuODg4NDQsLjg1MDY2LC45NDMwOSwuNzc4MTgsLjczMDYsLjc2NjU5LDEuMTAzNjksMS4zODMxMywxLjEwMzY5LDEuMDYxMzksLjg5NTUyLC44NzM5LC45MjQ1LC45MjQ1LC44MzIwMywuOTI0NSwuODU4NjUsMS4wOTg0MiwuOTI0NSwuOTI0NSwxLjAzMjk3LDEuMDc2OTIsLjkwOTE4LDEuMDMyOTcsLjk0OTU5LC45MjQ1LC45MjI3NCwuOTI0NSwuOTI0NSwxLjAyOTMzLC43NzgzMiwxLjIwNTYyLC45MjQ1LC44OTE2LC45ODk4NiwuODY2MjEsLjg5NDUzLC43OTAwNCwuOTQxNTIsMS43NzI1NiwuOTQxNTIsLjg1Mjg0LC45NzgwMSwuODk1NTIsLjkxMTMzLC44OTU1MiwuOTExMzMsMS45MTcyOSwuODk1NTIsMS4xNzg4OSwxLjEzMjU0LDEuMTYzNTksLjkyMDk4LC44NTI4NCwuNjg3ODcsLjcxMzUzLC44NDczNywuOTA3NDcsMS4wMDg4LDEuMDA0NCwuODc2ODMsMSwxLjA5MDkxLDEsLjkyMjI5LC43MzksMS4xNTY0MiwuOTIwOTgsLjc2Mjg4LC44MDUwNCwuODA5NzIsLjc1ODU5LC44Njc1LC44Njc1LC44Njc1LC44Njc1LC44Njc1LC44Njc1LC43NjMxOCwuNzIzNDYsLjczMjA2LC43MzIwNiwuNzMyMDYsLjczMjA2LC45MDY4NSwuOTA2ODUsLjkwNjg1LC45MDY4NSwuODY0NzcsLjg5MjQ5LC44NDExOCwuODQxMTgsLjg0MTE4LC44NDExOCwuODQxMTgsLjg1Mjg0LC44NDU1NywuODg4NDQsLjg4ODQ0LC44ODg0NCwuODg4NDQsLjczMDYsLjc3NDUyLC44NjMzMSwuOTI0NSwuOTI0NSwuOTI0NSwuOTI0NSwuOTI0NSwuOTI0NSwuODQ4NDMsLjgzMjAzLC44NTg2NSwuODU4NjUsLjg1ODY1LC44NTg2NSwuODI2MDEsLjgyNjAxLC44MjYwMSwuODI2MDEsLjk0NDY5LC45MjQ1LC45MjI3NCwuOTIyNzQsLjkyMjc0LC45MjI3NCwuOTIyNzQsLjkwNzQ3LC44NjY1MSwuOTI0NSwuOTI0NSwuOTI0NSwuOTI0NSwuODk0NTMsLjkyNDUsLjg5NDUzLC44Njc1LC45MjQ1LC44Njc1LC45MjQ1LC44Njc1LC45MjQ1LC43MjM0NiwuODMyMDMsLjcyMzQ2LC44MzIwMywuNzIzNDYsLjgzMjAzLC43MjM0NiwuODMyMDMsLjg1MTkzLC44ODc1LC44NjQ3NywuOTkwMzQsLjczMjA2LC44NTg2NSwuNzMyMDYsLjg1ODY1LC43MzIwNiwuODU4NjUsLjczMjA2LC44NTg2NSwuNzMyMDYsLjg1ODY1LC44MTEwNSwuOTI0NSwuODExMDUsLjkyNDUsLjgxMTA1LC45MjQ1LDEsMSwuODYyNzUsLjkyNDUsLjkwODcyLC45MzU5MSwuOTA2ODUsLjgyNjAxLC45MDY4NSwuODI2MDEsLjkwNjg1LC44MjYwMSwuOTA2ODUsMS4wMzI5NywuOTA2ODUsLjgyNjAxLC43Nzg5NiwxLjA1NjExLC42Mzc3LDEuMDc2OTIsMSwxLC45MDkxOCwuNzU1OTMsMS4wMzI5NywxLDEsLjc2MDMyLC45Mzc1LC45ODE1NiwuOTM0MDcsLjc3MjYxLDEuMTE0MjksLjg5MjQ5LC45MjQ1LDEsMSwuODkyNDksLjkyNDUsLjkyNTM0LC44NjY5OCwuOTI0NSwuODQxMTgsLjkyMjc0LC44NDExOCwuOTIyNzQsLjg0MTE4LC45MjI3NCwuODY2NywuODYyOTEsLjc1MTg2LDEuMDI5MzMsMSwxLC43NTE4NiwxLjAyOTMzLC42Nzc4OSwuNzc4MzIsLjY3Nzg5LC43NzgzMiwuNjc3ODksLjc3ODMyLC42Nzc4OSwuNzc4MzIsMSwxLC43OTc3NiwuOTc2NTUsLjc5Nzc2LDEuMjMwMjMsLjg4ODQ0LC45MjQ1LC44ODg0NCwuOTI0NSwuODg4NDQsLjkyNDUsLjg4ODQ0LC45MjQ1LC44ODg0NCwuOTI0NSwuODg4NDQsLjkyNDUsLjk0MzA5LC45ODk4NiwuNzMwNiwuODk0NTMsLjczMDYsLjc2NjU5LC43OTAwNCwuNzY2NTksLjc5MDA0LC43NjY1OSwuNzkwMDQsMS4wOTIzMSwuNTQ4NzMsLjg2NzUsLjkyNDUsLjc2MzE4LC44NDg0MywuODQ1NTcsLjg2NjUxLDEsMSwuNzk3NzYsMS4yMDU2MiwxLjE4NjIyLDEuMTg2MjIsMSwxLjE0MzcsLjY3MDA5LC45NjMzNCwuOTM2OTUsMS4zNTE5MSwxLjQwOTA5LC45NTE2MSwxLjQ4Mzg3LC44Njc1LC45MDg2MSwuNjE5MiwuNzM2MywuNjQ4MjQsLjgyNDExLC41NjMyMSwuODU2OTYsMS4yMzUxNiwuODY3NSwuODE1NTIsLjcyODYsLjg0MTM0LC43MzIwNiwuNzY2NTksLjg2Mjc1LC44NDM2OSwuOTA2ODUsLjc3ODkyLC44NTg3MSwxLjAyNjM4LC44OTI0OSwuNzU4MjgsLjg0MTE4LC44NTk4NCwuNzc0NTIsLjc2NDY2LC43OTc3NiwuNzMwNiwuOTA3ODIsLjc3ODE4LC45MDMsLjg3MjkxLC45MDY4NSwuNzMwNiwuOTkwNTgsMS4wMzY2NywuOTQ2MzUsMS4yMzUxNiwuOTg0OSwuOTkwNTgsLjkyMzkzLC44OTE2LC45NDIsMS4wMzY2NywuNzUwMjYsLjk0NjM1LDEuMDI5NywxLjIzNTE2LC45MDkxOCwuOTQwNDgsLjk4MjE3LC44OTc0NiwuODQxNTMsLjkyMjc0LC44MjUwNywuODg4MzIsLjg0NDM4LC44ODE3OCwxLjAzNTI1LC45ODQ5LDEuMDAyMjUsLjc4MDg2LC45NzI0OCwuODk0MDQsMS4yMzUxNiwuOTg0OSwuOTIyNzQsLjk4NDksLjg5NDA0LC43MzIwNiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODk2OTMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjg1ODY1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45MDkzMywxLDEsMSwxLDEsMSwuOTQzMDksLjk4OTg2LC45NDMwOSwuOTg5ODYsLjk0MzA5LC45ODk4NiwuNzMwNiwuODk0NTMsMSwxLC44OTU1MiwuOTA1MjcsMSwuOTAxODYsMS4xMjMwOCwxLjEyMzA4LDEuMTIzMDgsMS4xMjMwOCwxLjI1NjYsMS4yNTY2LDEuMjU2NiwuODk1NTIsLjg5NTUyLDEuNDIyNTksLjY4OTk0LDEuMDM4MDksMSwxLDEuMDE3NiwxLjAxNzYsMS4xMTUyMywxLjQ5NTYsMi4wMTQ2MiwuOTc4NTgsLjgyNjE2LC45MTEzMywuODM0MzcsLjkxMTMzLDEsMSwxLC43MDUwOCwxLDEuMjMxMDgsLjc5ODAxLC44NDQyNiwuODQ0MjYsLjc3NCwuOTA1NzIsMS44MTA1NSwuOTA3NDksMS44MTA1NSwxLjI4ODA5LDEuNTU0NjksLjk0NDM0LDEuMDc4MDYsMSwuOTcwOTQsLjc1ODksLjg1Mjg0LC45MDc0NywxLjE5NjU4LC42OTgyNSwuOTc2MjIsMS4zMzUxMiwuOTA3NDcsLjkwNzQ3LC44NTI4NCwuOTA3NDcsLjkwNzQ3LDEuNDQ5NDcsLjg1Mjg0LC44OTQxLC44OTQxLC43MDU3MiwuOCwuNzA1NzIsLjcwNTcyLC43MDU3MiwuNzA1NzIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45OTg2MiwuOTk4NjIsMSwxLDEsMSwxLDEuMDMzNiwuOTEwMjcsMSwxLDEsLjk5ODYyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDU4NTksMS4wNTg1OSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sdC5DYWxpYnJpSXRhbGljTWV0cmljcz17bGluZUhlaWdodDoxLjIyMDcsbGluZUdhcDouMjIwN30sdC5DYWxpYnJpUmVndWxhckZhY3RvcnM9WzEuMzg3NywxLDEsMSwxLjE3MjIzLDEuMTI5MywuODk1NTIsLjkxMTMzLC44MDM5NSwxLjAyMjY5LDEuMTU2MDEsLjkxMDU2LC45MTA1NiwxLjI3OTgsLjg1Mjg0LC44OTgwNywxLC45MDg2MSwxLjM5MDE2LC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTYzMDksLjk2MzA5LC44NTI4NCwuODUyODQsLjg1Mjg0LC44MzMxOSwuODgwNzEsLjg2NzUsLjgxNTUyLC43MzgzNCwuODUxOTMsLjczMjA2LC43NTIyLC44MTEwNSwuODYyNzUsLjkwNjg1LC42Mzc3LC43Nzg5MiwuNzU1OTMsMS4wMjYzOCwuODkzODUsLjg1MTIyLC43NzQ1MiwuODY1MDMsLjc1MTg2LC42ODg4NywuNzk3NzYsLjg4ODQ0LC44NTA2NiwuOTQyNTgsLjc3ODE4LC43MzA2LC43NjY1OSwxLjEwMzY5LDEuMzkwMTYsMS4xMDM2OSwxLjA2MTM5LC44OTU1MiwuODczOSwuODYxMjgsLjk0NDY5LC44NDU3LC45NDQ2OSwuODk0NjQsMS4wOTg0MiwuODQ2MzYsLjk0NDY5LDEuMDMyOTcsMS4wNzY5MiwuOTA5MTgsMS4wMzI5NywuOTU4OTcsLjk0NDY5LC45NDgyLC45NDQ2OSwuOTQ0NjksMS4wNDY5MiwuNzgyMjMsMS4yMDU2MiwuOTQ0NjksLjkwMzMyLC45ODk4NiwuODY2MjEsLjkwNTI3LC43OTAwNCwuOTQxNTIsMS43NzI1NiwuOTQxNTIsLjg1Mjg0LC45NzgwMSwuODk1NTIsLjkxMTMzLC44OTU1MiwuOTExMzMsMS45MTcyOSwuODk1NTIsMS4xNzg4OSwxLjEzMjU0LDEuMDg3MDcsLjkyMDk4LC44NTI4NCwuNjg3ODcsLjcxMzUzLC44NDczNywuOTA3NDcsMS4wMDg4LDEuMDA0NCwuODc2ODMsMSwxLjA5MDkxLDEsLjkyMjI5LC43MzksMS4xNTY0MiwuOTIwOTgsLjc2Mjg4LC44MDUwNCwuODA5NzIsLjc1ODU5LC44Njc1LC44Njc1LC44Njc1LC44Njc1LC44Njc1LC44Njc1LC43NjMxOCwuNzM4MzQsLjczMjA2LC43MzIwNiwuNzMyMDYsLjczMjA2LC45MDY4NSwuOTA2ODUsLjkwNjg1LC45MDY4NSwuODY0NzcsLjg5Mzg1LC44NTEyMiwuODUxMjIsLjg1MTIyLC44NTEyMiwuODUxMjIsLjg1Mjg0LC44NTMxMSwuODg4NDQsLjg4ODQ0LC44ODg0NCwuODg4NDQsLjczMDYsLjc3NDUyLC44NjMzMSwuODYxMjgsLjg2MTI4LC44NjEyOCwuODYxMjgsLjg2MTI4LC44NjEyOCwuODY5MywuODQ1NywuODk0NjQsLjg5NDY0LC44OTQ2NCwuODk0NjQsLjgyNjAxLC44MjYwMSwuODI2MDEsLjgyNjAxLC45NDQ2OSwuOTQ0NjksLjk0ODIsLjk0ODIsLjk0ODIsLjk0ODIsLjk0ODIsLjkwNzQ3LC44NjY1MSwuOTQ0NjksLjk0NDY5LC45NDQ2OSwuOTQ0NjksLjkwNTI3LC45NDQ2OSwuOTA1MjcsLjg2NzUsLjg2MTI4LC44Njc1LC44NjEyOCwuODY3NSwuODYxMjgsLjczODM0LC44NDU3LC43MzgzNCwuODQ1NywuNzM4MzQsLjg0NTcsLjczODM0LC44NDU3LC44NTE5MywuOTI0NTQsLjg2NDc3LC45OTIxLC43MzIwNiwuODk0NjQsLjczMjA2LC44OTQ2NCwuNzMyMDYsLjg5NDY0LC43MzIwNiwuODk0NjQsLjczMjA2LC44OTQ2NCwuODExMDUsLjg0NjM2LC44MTEwNSwuODQ2MzYsLjgxMTA1LC44NDYzNiwxLDEsLjg2Mjc1LC45NDQ2OSwuOTA4NzIsLjk1Nzg2LC45MDY4NSwuODI2MDEsLjkwNjg1LC44MjYwMSwuOTA2ODUsLjgyNjAxLC45MDY4NSwxLjAzMjk3LC45MDY4NSwuODI2MDEsLjc3NzQxLDEuMDU2MTEsLjYzNzcsMS4wNzY5MiwxLDEsLjkwOTE4LC43NTU5MywxLjAzMjk3LDEsMSwuNzYwMzIsLjkwNDUyLC45ODE1NiwxLjExODQyLC43NzI2MSwxLjExNDI5LC44OTM4NSwuOTQ0NjksMSwxLC44OTM4NSwuOTQ0NjksLjk1ODc3LC44NjkwMSwuOTQ0NjksLjg1MTIyLC45NDgyLC44NTEyMiwuOTQ4MiwuODUxMjIsLjk0ODIsLjg2NjcsLjkwMDE2LC43NTE4NiwxLjA0NjkyLDEsMSwuNzUxODYsMS4wNDY5MiwuNjg4ODcsLjc4MjIzLC42ODg4NywuNzgyMjMsLjY4ODg3LC43ODIyMywuNjg4ODcsLjc4MjIzLDEsMSwuNzk3NzYsLjkyMTg4LC43OTc3NiwxLjIzMDIzLC44ODg0NCwuOTQ0NjksLjg4ODQ0LC45NDQ2OSwuODg4NDQsLjk0NDY5LC44ODg0NCwuOTQ0NjksLjg4ODQ0LC45NDQ2OSwuODg4NDQsLjk0NDY5LC45NDI1OCwuOTg5ODYsLjczMDYsLjkwNTI3LC43MzA2LC43NjY1OSwuNzkwMDQsLjc2NjU5LC43OTAwNCwuNzY2NTksLjc5MDA0LDEuMDkyMzEsLjU0ODczLC44Njc1LC44NjEyOCwuNzYzMTgsLjg2OTMsLjg1MzExLC44NjY1MSwxLDEsLjc5Nzc2LDEuMjA1NjIsMS4xODYyMiwxLjE4NjIyLDEsMS4xNDM3LC42Nzc0MiwuOTYzMzQsLjkzNjk1LDEuMzUxOTEsMS40MDkwOSwuOTUxNjEsMS40ODM4NywuODY2ODYsLjkwODYxLC42MjI2NywuNzQzNTksLjY1NjQ5LC44NTQ5OCwuNTY5NjMsLjg4MjU0LDEuMjM1MTYsLjg2NzUsLjgxNTUyLC43NTQ0MywuODQ1MDMsLjczMjA2LC43NjY1OSwuODYyNzUsLjg1MTIyLC45MDY4NSwuNzc4OTIsLjg1NzQ2LDEuMDI2MzgsLjg5Mzg1LC43NTY1NywuODUxMjIsLjg2Mjc1LC43NzQ1MiwuNzQxNzEsLjc5Nzc2LC43MzA2LC45NTE2NSwuNzc4MTgsLjg5NzcyLC44ODgzMSwuOTA2ODUsLjczMDYsLjk4MTQyLDEuMDIxOTEsLjk2NTc2LDEuMjM1MTYsLjk5MDE4LC45ODE0MiwuOTIzNiwuODkyNTgsLjk0MDM1LDEuMDIxOTEsLjc4ODQ4LC45NjU3NiwuOTU2MSwxLjIzNTE2LC45MDkxOCwuOTI1NzgsLjk1NDI0LC44OTc0NiwuODM5NjksLjk0ODIsLjgwMTEzLC44OTQ0MiwuODUyMDgsLjg2MTU1LC45ODAyMiwuOTkwMTgsMS4wMDQ1MiwuODEyMDksLjk5MjQ3LC44OTE4MSwxLjIzNTE2LC45OTAxOCwuOTQ4MiwuOTkwMTgsLjg5MTgxLC43MzIwNiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODg4NDQsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjg5NDY0LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45Njc2NiwxLDEsMSwxLDEsMSwuOTQyNTgsLjk4OTg2LC45NDI1OCwuOTg5ODYsLjk0MjU4LC45ODk4NiwuNzMwNiwuOTA1MjcsMSwxLC44OTU1MiwuOTA1MjcsMSwuOTAxODYsMS4xMjMwOCwxLjEyMzA4LDEuMTIzMDgsMS4xMjMwOCwxLjI1NjYsMS4yNTY2LDEuMjU2NiwuODk1NTIsLjg5NTUyLDEuNDIyNTksLjY5MDQzLDEuMDM4MDksMSwxLDEuMDE3NiwxLjAxNzYsMS4xMTUyMywxLjQ5NTYsMi4wMTQ2MiwuOTkzMzEsLjgyNjE2LC45MTEzMywuODQyODYsLjkxMTMzLDEsMSwxLC43MDUwOCwxLDEuMjMxMDgsLjc5ODAxLC44NDQyNiwuODQ0MjYsLjc3NCwuOTA1MjcsMS44MTA1NSwuOTA1MjcsMS44MTA1NSwxLjI4ODA5LDEuNTU0NjksLjk0NDM0LDEuMDc4MDYsMSwuOTcwOTQsLjc1ODksLjg1Mjg0LC45MDc0NywxLjE5NjU4LC42OTgyNSwuOTc2MjIsMS4zMzUxMiwuOTA3NDcsLjkwNzQ3LC44NTM1NiwuOTA3NDcsLjkwNzQ3LDEuNDQ5NDcsLjg1Mjg0LC44OTQxLC44OTQxLC43MDU3MiwuOCwuNzA1NzIsLjcwNTcyLC43MDU3MiwuNzA1NzIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45OTg2MiwuOTk4NjIsMSwxLDEsMSwxLDEuMDMzNiwuOTEwMjcsMSwxLDEsLjk5ODYyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDU4NTksMS4wNTg1OSwxLDEsMSwxLjA3MTg1LC45OTQxMywuOTYzMzQsMS4wODA2NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLHQuQ2FsaWJyaVJlZ3VsYXJNZXRyaWNzPXtsaW5lSGVpZ2h0OjEuMjIwNyxsaW5lR2FwOi4yMjA3fX0sKGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5IZWx2ZXRpY2FSZWd1bGFyTWV0cmljcz10LkhlbHZldGljYVJlZ3VsYXJGYWN0b3JzPXQuSGVsdmV0aWNhSXRhbGljTWV0cmljcz10LkhlbHZldGljYUl0YWxpY0ZhY3RvcnM9dC5IZWx2ZXRpY2FCb2xkTWV0cmljcz10LkhlbHZldGljYUJvbGRJdGFsaWNNZXRyaWNzPXQuSGVsdmV0aWNhQm9sZEl0YWxpY0ZhY3RvcnM9dC5IZWx2ZXRpY2FCb2xkRmFjdG9ycz12b2lkIDAsdC5IZWx2ZXRpY2FCb2xkRmFjdG9ycz1bLjc2MTE2LDEsMSwxLjAwMDYsLjk5OTk4LC45OTk3NCwuOTk5NzMsLjk5OTczLC45OTk4MiwuOTk5NzcsMS4wMDA4NywuOTk5OTgsLjk5OTk4LC45OTk1OSwxLjAwMDAzLDEuMDAwNiwuOTk5OTgsMS4wMDA2LDEuMDAwNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTk4LDEsMS4wMDAwMywxLjAwMDAzLDEuMDAwMDMsMS4wMDAyNiwuOTk5OSwuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMS4wMDAwMSwxLjAwMDI2LDEuMDAwMjIsLjk5OTc3LDEuMDAwNiwuOTk5NzMsLjk5OTc3LDEuMDAwMjYsLjk5OTk5LC45OTk3NywxLjAwMDIyLDEuMDAwMDEsMS4wMDAyMiwuOTk5NzcsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDAxLDEuMDAwMTYsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTk4LDEuMDAwNiwuOTk5OTgsMS4wMDAwMywuOTk5NzMsLjk5OTk4LC45OTk3MywxLjAwMDI2LC45OTk3MywxLjAwMDI2LC45OTk3MywuOTk5OTgsMS4wMDAyNiwxLjAwMDI2LDEuMDAwNiwxLjAwMDYsLjk5OTczLDEuMDAwNiwuOTk5ODIsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwuOTk5NTksLjk5OTczLC45OTk5OCwxLjAwMDI2LC45OTk3MywxLjAwMDIyLC45OTk3MywuOTk5NzMsMSwuOTk5NTksMS4wMDA3NywuOTk5NTksMS4wMDAwMywuOTk5OTgsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwNzcsLjk5OTczLC45OTk5OCwxLjAwMDI1LC45OTk2OCwuOTk5NzMsMS4wMDAwMywxLjAwMDI1LC42MDI5OSwxLjAwMDI0LDEuMDY0MDksMSwxLC45OTk5OCwxLC45OTk3MywxLjAwMDYsLjk5OTk4LDEsLjk5OTM2LC45OTk3MywxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDI2LC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsLjk5OTc3LDEsLjk5OTc3LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3NywuOTk5NzcsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMDMsMS4wMDAyMiwuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTgyLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wNjQwOSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsLjk5OTczLDEuMDAwMjYsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LDEuMDMzNzQsLjk5OTc3LDEuMDAwMjYsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDQyLC45OTk3MywuOTk5NzMsMS4wMDA2LC45OTk3NywuOTk5NzMsLjk5OTczLDEuMDAwMjYsMS4wMDA2LDEuMDAwMjYsMS4wMDA2LDEuMDAwMjYsMS4wMzgyOCwxLjAwMDI2LC45OTk5OSwxLjAwMDI2LDEuMDAwNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5MywuOTk5OCwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEsMS4wMDAxNiwuOTk5NzcsLjk5OTU5LC45OTk3NywuOTk5NTksLjk5OTc3LC45OTk1OSwxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDI2LC45OTk5OCwxLjAwMDI2LC44MTIxLDEuMDAwMjYsLjk5OTk4LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LDEuMDAwMTYsMS4wMDAyMiwxLjAwMDAxLC45OTk3MywxLjAwMDAxLDEuMDAwMjYsMSwxLjAwMDI2LDEsMS4wMDAyNiwxLDEuMDAwNiwuOTk5NzMsLjk5OTc3LC45OTk3MywxLC45OTk4MiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAwMSwuOTk5NzMsMS4wMDAyNiwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LDEuMDAwMzQsLjk5OTc3LDEsLjk5OTk3LDEuMDAwMjYsMS4wMDA3OCwxLjAwMDM2LC45OTk3MywxLjAwMDEzLDEuMDAwNiwuOTk5NzcsLjk5OTc3LC45OTk4OCwuODUxNDgsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDIyLDEuMDAwNiwuOTk5NzcsMS4wMDAwMSwuOTk5OTksLjk5OTc3LDEuMDAwNjksMS4wMDAyMiwuOTk5NzcsMS4wMDAwMSwuOTk5ODQsMS4wMDAyNiwxLjAwMDAxLDEuMDAwMjQsMS4wMDAwMSwuOTk5OSwxLDEuMDAwNiwxLjAwMDAxLDEuMDAwNDEsLjk5OTYyLDEuMDAwMjYsMS4wMDA2LC45OTk5NSwxLjAwMDQxLC45OTk0MiwuOTk5NzMsLjk5OTI3LDEuMDAwODIsLjk5OTAyLDEuMDAwMjYsMS4wMDA4NywxLjAwMDYsMS4wMDA2OSwuOTk5NzMsLjk5ODY3LC45OTk3MywuOTk5MywxLjAwMDI2LDEuMDAwNDksMS4wMDA1NiwxLC45OTk4OCwuOTk5MzUsLjk5OTk1LC45OTk1NCwxLjAwMDU1LC45OTk0NSwxLjAwMDMyLDEuMDAwNiwuOTk5OTUsMS4wMDAyNiwuOTk5OTUsMS4wMDAzMiwxLjAwMDAxLDEuMDAwMDgsLjk5OTcxLDEuMDAwMTksLjk5OTQsMS4wMDAwMSwxLjAwMDYsMS4wMDA0NCwuOTk5NzMsMS4wMDAyMywxLjAwMDQ3LDEsLjk5OTQyLC45OTU2MSwuOTk5ODksMS4wMDAzNSwuOTk5NzcsMS4wMDAzNSwuOTk5NzcsMS4wMDAxOSwuOTk5NDQsMS4wMDAwMSwxLjAwMDIxLC45OTkyNiwxLjAwMDM1LDEuMDAwMzUsLjk5OTQyLDEuMDAwNDgsLjk5OTk5LC45OTk3NywxLjAwMDIyLDEuMDAwMzUsMS4wMDAwMSwuOTk5NzcsMS4wMDAyNiwuOTk5ODksMS4wMDA1NywxLjAwMDAxLC45OTkzNiwxLjAwMDUyLDEuMDAwMTIsLjk5OTk2LDEuMDAwNDMsMSwxLjAwMDM1LC45OTk0LC45OTk3NiwxLjAwMDM1LC45OTk3MywxLjAwMDUyLDEuMDAwNDEsMS4wMDExOSwxLjAwMDM3LC45OTk3MywxLjAwMDAyLC45OTk4NiwxLjAwMDQxLDEuMDAwNDEsLjk5OTAyLC45OTk2LDEuMDAwMzQsLjk5OTk5LDEuMDAwMjYsLjk5OTk5LDEuMDAwMjYsLjk5OTczLDEuMDAwNTIsLjk5OTczLDEsLjk5OTczLDEuMDAwNDEsMS4wMDA3NSwuOTk5NCwxLjAwMDMsLjk5OTk5LDEsMS4wMDA0MSwuOTk5NTUsMSwuOTk5MTUsLjk5OTczLC45OTk3MywxLjAwMDI2LDEuMDAxMTksLjk5OTU1LC45OTk3MywxLjAwMDYsLjk5OTExLDEuMDAwNiwxLjAwMDI2LC45OTk3MiwxLjAwMDI2LC45OTkwMiwxLjAwMDQxLC45OTk3MywuOTk5OTksMSwxLDEuMDAwMzgsMS4wMDA1LDEuMDAwMTYsMS4wMDAyMiwxLjAwMDE2LDEuMDAwMjIsMS4wMDAxNiwxLjAwMDIyLDEuMDAwMDEsLjk5OTczLDEsMSwuOTk5NzMsMSwxLC45OTk1NSwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMSwxLDEsLjk5OTczLC45OTk3MywuOTk5NzIsMSwxLDEuMDAxMDYsLjk5OTk5LC45OTk5OCwuOTk5OTgsLjk5OTk5LC45OTk5OCwxLjY2NDc1LDEsLjk5OTczLC45OTk3MywxLjAwMDIzLC45OTk3MywuOTk5NzEsMS4wMDA0NywxLjAwMDIzLDEsLjk5OTkxLC45OTk4NCwxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEsMSwxLDEsMSwxLDEsLjk5OTcyLDEsMS4yMDk4NSwxLjM5NzEzLDEuMDAwMDMsMS4wMDAzMSwxLjAwMDE1LDEsLjk5NTYxLDEuMDAwMjcsMS4wMDAzMSwxLjAwMDMxLC45OTkxNSwxLjAwMDMxLDEuMDAwMzEsLjk5OTk5LDEuMDAwMDMsLjk5OTk5LC45OTk5OSwxLjQxMTQ0LDEuNiwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDA1NzksMS40MDU3OSwxLjM2NjI1LC45OTk5OSwxLC45OTg2MSwuOTk4NjEsMSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LC45OTk3MiwuOTk5OTksLjk5OTk5LC45OTk5OSwuOTk5OTksMS40MDQ4MywxLC45OTk3NywxLjAwMDU0LDEsMSwuOTk5NTMsLjk5OTYyLDEuMDAwNDIsLjk5OTUsMSwxLDEsMSwxLDEsMSwxLC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLHQuSGVsdmV0aWNhQm9sZE1ldHJpY3M9e2xpbmVIZWlnaHQ6MS4yLGxpbmVHYXA6LjJ9LHQuSGVsdmV0aWNhQm9sZEl0YWxpY0ZhY3RvcnM9Wy43NjExNiwxLDEsMS4wMDA2LC45OTk5OCwuOTk5NzQsLjk5OTczLC45OTk3MywuOTk5ODIsLjk5OTc3LDEuMDAwODcsLjk5OTk4LC45OTk5OCwuOTk5NTksMS4wMDAwMywxLjAwMDYsLjk5OTk4LDEuMDAwNiwxLjAwMDYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk5OCwxLDEuMDAwMDMsMS4wMDAwMywxLjAwMDAzLDEuMDAwMjYsLjk5OTksLjk5OTc3LC45OTk3NywuOTk5NzcsLjk5OTc3LDEuMDAwMDEsMS4wMDAyNiwxLjAwMDIyLC45OTk3NywxLjAwMDYsLjk5OTczLC45OTk3NywxLjAwMDI2LC45OTk5OSwuOTk5NzcsMS4wMDAyMiwxLjAwMDAxLDEuMDAwMjIsLjk5OTc3LDEuMDAwMDEsMS4wMDAyNiwuOTk5NzcsMS4wMDAwMSwxLjAwMDE2LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDI2LC45OTk5OCwxLjAwMDYsLjk5OTk4LDEuMDAwMDMsLjk5OTczLC45OTk5OCwuOTk5NzMsMS4wMDAyNiwuOTk5NzMsMS4wMDAyNiwuOTk5NzMsLjk5OTk4LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDYsMS4wMDA2LC45OTk3MywxLjAwMDYsLjk5OTgyLDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsLjk5OTU5LC45OTk3MywuOTk5OTgsMS4wMDAyNiwuOTk5NzMsMS4wMDAyMiwuOTk5NzMsLjk5OTczLDEsLjk5OTU5LDEuMDAwNzcsLjk5OTU5LDEuMDAwMDMsLjk5OTk4LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDc3LC45OTk3MywuOTk5OTgsMS4wMDAyNSwuOTk5NjgsLjk5OTczLDEuMDAwMDMsMS4wMDAyNSwuNjAyOTksMS4wMDAyNCwxLjA2NDA5LDEsMSwuOTk5OTgsMSwuOTk5NzMsMS4wMDA2LC45OTk5OCwxLC45OTkzNiwuOTk5NzMsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMS4wMDAyNiwuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywxLC45OTk3NywxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5NzcsLjk5OTc3LDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDAzLDEuMDAwMjIsLjk5OTc3LC45OTk3NywuOTk5NzcsLjk5OTc3LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDI2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk4MiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDY0MDksMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LC45OTk3MywxLjAwMDI2LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywxLjAwNDQsLjk5OTc3LDEuMDAwMjYsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5NzEsLjk5OTczLC45OTk3MywxLjAwMDYsLjk5OTc3LC45OTk3MywuOTk5NzMsMS4wMDAyNiwxLjAwMDYsMS4wMDAyNiwxLjAwMDYsMS4wMDAyNiwxLjAxMDExLDEuMDAwMjYsLjk5OTk5LDEuMDAwMjYsMS4wMDA2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTkzLC45OTk4LDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsMSwxLjAwMDE2LC45OTk3NywuOTk5NTksLjk5OTc3LC45OTk1OSwuOTk5NzcsLjk5OTU5LDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMjYsLjk5OTk4LDEuMDAwMjYsLjgxMjEsMS4wMDAyNiwuOTk5OTgsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsMS4wMDAxNiwxLjAwMDIyLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwxLjAwMDI2LDEsMS4wMDA2LC45OTk3MywuOTk5NzcsLjk5OTczLDEsLjk5OTgyLDEuMDAwMjIsMS4wMDAyNiwxLjAwMDAxLC45OTk3MywxLjAwMDI2LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk3NywxLDEsMS4wMDAyNiwuOTk5NjksLjk5OTcyLC45OTk4MSwuOTk5OCwxLjAwMDYsLjk5OTc3LC45OTk3NywxLjAwMDIyLC45MTE1NSwxLjAwMDAxLDEuMDAwMjYsLjk5OTc3LDEuMDAwMjIsMS4wMDA2LC45OTk3NywxLjAwMDAxLC45OTk5OSwuOTk5NzcsLjk5OTY2LDEuMDAwMjIsMS4wMDAzMiwxLjAwMDAxLC45OTk0NCwxLjAwMDI2LDEuMDAwMDEsLjk5OTY4LDEuMDAwMDEsMS4wMDA0NywxLDEuMDAwNiwxLjAwMDAxLC45OTk4MSwxLjAwMTAxLDEuMDAwMjYsMS4wMDA2LC45OTk0OCwuOTk5ODEsMS4wMDA2NCwuOTk5NzMsLjk5OTQyLDEuMDAxMDEsMS4wMDA2MSwxLjAwMDI2LDEuMDAwNjksMS4wMDA2LDEuMDAwMTQsLjk5OTczLDEuMDEzMjIsLjk5OTczLDEuMDAwNjUsMS4wMDAyNiwxLjAwMDEyLC45OTkyMywxLDEuMDAwNjQsMS4wMDA3NiwuOTk5NDgsMS4wMDA1NSwxLjAwMDYzLDEuMDAwMDcsLjk5OTQzLDEuMDAwNiwuOTk5NDgsMS4wMDAyNiwuOTk5NDgsLjk5OTQzLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDI5LDEuMDAwMzgsMS4wMDAzNSwxLjAwMDAxLDEuMDAwNiwxLjAwMDYsLjk5OTczLC45OTk3OCwxLjAwMDAxLDEuMDAwNTcsLjk5OTg5LC45OTk2NywuOTk5NjQsLjk5OTY3LC45OTk3NywuOTk5OTksLjk5OTc3LDEuMDAwMzgsLjk5OTc3LDEuMDAwMDEsLjk5OTczLDEuMDAwNjYsLjk5OTY3LC45OTk2NywxLjAwMDQxLC45OTk5OCwuOTk5OTksLjk5OTc3LDEuMDAwMjIsLjk5OTY3LDEuMDAwMDEsLjk5OTc3LDEuMDAwMjYsLjk5OTY0LDEuMDAwMzEsMS4wMDAwMSwuOTk5OTksLjk5OTk5LDEsMS4wMDAyMywxLDEsLjk5OTk5LDEuMDAwMzUsMS4wMDAwMSwuOTk5OTksLjk5OTczLC45OTk3NywuOTk5OTksMS4wMDA1OCwuOTk5NzMsLjk5OTczLC45OTk1NSwuOTk5NSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAzMiwuOTk5ODksMS4wMDAzNCwuOTk5OTksMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsLjk5OTczLC40NTk5OCwuOTk5NzMsMS4wMDAyNiwuOTk5NzMsMS4wMDAwMSwuOTk5OTksLjk5OTgyLC45OTk5NCwuOTk5OTYsMSwxLjAwMDQyLDEuMDAwNDQsMS4wMDAyOSwxLjAwMDIzLC45OTk3MywuOTk5NzMsMS4wMDAyNiwuOTk5NDksMS4wMDAwMiwuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTc1LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDMyLC45ODY4NSwuOTk5NzMsMS4wMDAyNiwxLDEsLjk5OTY2LDEuMDAwNDQsMS4wMDAxNiwxLjAwMDIyLDEuMDAwMTYsMS4wMDAyMiwxLjAwMDE2LDEuMDAwMjIsMS4wMDAwMSwuOTk5NzMsMSwxLC45OTk3MywxLDEsLjk5OTU1LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLDEsMSwuOTk5NzMsLjk5OTczLC45OTk3MiwxLDEsMS4wMDEwNiwuOTk5OTksLjk5OTk4LC45OTk5OCwuOTk5OTksLjk5OTk4LDEuNjY0NzUsMSwuOTk5NzMsLjk5OTczLDEsLjk5OTczLC45OTk3MSwuOTk5NzgsMSwxLC45OTk5MSwuOTk5ODQsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDk4LDEsMSwxLDEuMDAwNDksMSwxLC45OTk3MiwxLDEuMjA5ODUsMS4zOTcxMywxLjAwMDAzLDEuMDAwMzEsMS4wMDAxNSwxLC45OTU2MSwxLjAwMDI3LDEuMDAwMzEsMS4wMDAzMSwuOTk5MTUsMS4wMDAzMSwxLjAwMDMxLC45OTk5OSwxLjAwMDAzLC45OTk5OSwuOTk5OTksMS40MTE0NCwxLjYsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQwNTc5LDEuNDA1NzksMS4zNjYyNSwuOTk5OTksMSwuOTk4NjEsLjk5ODYxLDEsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwuOTk5NzIsLjk5OTk5LC45OTk5OSwuOTk5OTksLjk5OTk5LDEuNDA0ODMsMSwuOTk5NzcsMS4wMDA1NCwxLDEsLjk5OTUzLC45OTk2MiwxLjAwMDQyLC45OTk1LDEsMSwxLDEsMSwxLDEsMSwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSx0LkhlbHZldGljYUJvbGRJdGFsaWNNZXRyaWNzPXtsaW5lSGVpZ2h0OjEuMzUsbGluZUdhcDouMn0sdC5IZWx2ZXRpY2FJdGFsaWNGYWN0b3JzPVsuNzYxMTYsMSwxLDEuMDAwNiwxLjAwMDYsMS4wMDAwNiwuOTk5NzMsLjk5OTczLC45OTk4MiwxLjAwMDAxLDEuMDAwNDMsLjk5OTk4LC45OTk5OCwuOTk5NTksMS4wMDAwMywxLjAwMDYsLjk5OTk4LDEuMDAwNiwxLjAwMDYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwNiwxLDEuMDAwMDMsMS4wMDAwMywxLjAwMDAzLC45OTk3MywuOTk5ODcsMS4wMDAwMSwxLjAwMDAxLC45OTk3NywuOTk5NzcsMS4wMDAwMSwxLjAwMDI2LDEuMDAwMjIsLjk5OTc3LDEuMDAwNiwxLDEuMDAwMDEsLjk5OTczLC45OTk5OSwuOTk5NzcsMS4wMDAyMiwxLjAwMDAxLDEuMDAwMjIsLjk5OTc3LDEuMDAwMDEsMS4wMDAyNiwuOTk5NzcsMS4wMDAwMSwxLjAwMDE2LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDI2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk0OSwuOTk5NzMsLjk5OTk4LC45OTk3MywuOTk5NzMsMSwuOTk5NzMsLjk5OTczLDEuMDAwNiwuOTk5NzMsLjk5OTczLC45OTkyNCwuOTk5MjQsMSwuOTk5MjQsLjk5OTk5LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5OTgsMSwxLjAwMDYsLjk5OTczLDEsLjk5OTc3LDEsMSwxLDEuMDAwMDUsMS4wMDA5LDEuMDAwMDUsMS4wMDAwMywuOTk5OTgsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwOSwuOTk5NzMsLjk5OTk4LDEuMDAwMjUsLjk5OTY4LC45OTk3MywxLjAwMDAzLDEuMDAwMjUsLjYwMjk5LDEuMDAwMjQsMS4wNjQwOSwxLDEsLjk5OTk4LDEsLjk5OTgsMS4wMDA2LC45OTk5OCwxLC45OTkzNiwuOTk5NzMsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMS4wMDAyNiwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLC45OTk3NywxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5NzcsLjk5OTc3LDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDAzLDEuMDAwMjIsLjk5OTc3LC45OTk3NywuOTk5NzcsLjk5OTc3LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDI2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk4MiwxLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDY0MDksMS4wMDAyNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMSwuOTk5NzMsMSwxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywuOTk5NzcsMSwuOTk5NzcsMSwuOTk5NzcsMSwuOTk5NzcsMSwuOTk5NzcsMS4wMjg4LC45OTk3NywuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAyMiwuOTk5NzMsMS4wMDAyMiwuOTk5NzMsMS4wMDAyMiwuOTk5NzMsMS4wMDAyMiwuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5MjQsMS4wMDA2LDEuMDAwNiwuOTk5NDYsMS4wMDAzNCwxLC45OTkyNCwxLjAwMDAxLDEsMSwuOTk5NzMsLjk5OTI0LC45OTk3MywuOTk5MjQsLjk5OTczLDEuMDYzMTEsLjk5OTczLDEuMDAwMjQsLjk5OTczLC45OTkyNCwuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywxLjAwMDQxLC45OTk4LC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywxLDEuMDAwMTYsLjk5OTc3LC45OTk5OCwuOTk5NzcsLjk5OTk4LC45OTk3NywuOTk5OTgsMS4wMDAwMSwxLDEuMDAwMDEsMSwxLjAwMDAxLDEsMS4wMDAwMSwxLDEuMDAwMjYsMS4wMDA2LDEuMDAwMjYsLjg5NTQ3LDEuMDAwMjYsMS4wMDA2LC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLDEuMDAwMTYsLjk5OTc3LDEuMDAwMDEsMSwxLjAwMDAxLDEuMDAwMjYsMSwxLjAwMDI2LDEsMS4wMDAyNiwxLC45OTkyNCwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMSwuOTk5ODIsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMDEsMSwxLjAwMDI2LDEuMDAwNiwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LDEuMDAwMDEsMSwxLjAwMDU0LC45OTk3NywxLjAwMDg0LDEuMDAwMDcsLjk5OTczLDEuMDAwMTMsLjk5OTI0LDEuMDAwMDEsMS4wMDAwMSwuOTk5NDUsLjkxMjIxLDEuMDAwMDEsMS4wMDAyNiwuOTk5NzcsMS4wMDAyMiwxLjAwMDYsMS4wMDAwMSwxLjAwMDAxLC45OTk5OSwuOTk5NzcsLjk5OTMzLDEuMDAwMjIsMS4wMDA1NCwxLjAwMDAxLDEuMDAwNjUsMS4wMDAyNiwxLjAwMDAxLDEuMDAwMSwxLjAwMDAxLDEuMDAwNTIsMSwxLjAwMDYsMS4wMDAwMSwuOTk5NDUsLjk5ODk3LC45OTk2OCwuOTk5MjQsMS4wMDAzNiwuOTk5NDUsLjk5OTQ5LDEsMS4wMDA2LC45OTg5NywuOTk5MTgsLjk5OTY4LC45OTkxMSwuOTk5MjQsMSwuOTk5NjIsMS4wMTQ4NywxLDEuMDAwNSwuOTk5NzMsMS4wMDAxMiwxLjAwMDQzLDEsLjk5OTk1LC45OTk5NCwxLjAwMDM2LC45OTk0NywxLjAwMDE5LDEuMDAwNjMsMS4wMDAyNSwuOTk5MjQsMS4wMDAzNiwuOTk5NzMsMS4wMDAzNiwxLjAwMDI1LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDI3LDEuMDAwMSwxLjAwMDY4LDEuMDAwMDEsMS4wMDA2LDEuMDAwNiwxLDEuMDAwMDgsLjk5OTU3LC45OTk3MiwuOTk5NCwuOTk5NTQsLjk5OTc1LDEuMDAwNTEsMS4wMDAwMSwxLjAwMDE5LDEuMDAwMDEsMS4wMDAxLC45OTk4NiwxLjAwMDAxLDEuMDAwMDEsMS4wMDAzOCwuOTk5NTQsLjk5OTU0LC45OTk0LDEuMDAwNjYsLjk5OTk5LC45OTk3NywxLjAwMDIyLDEuMDAwNTQsMS4wMDAwMSwuOTk5NzcsMS4wMDAyNiwuOTk5NzUsMS4wMDAxLDEuMDAwMDEsLjk5OTkzLC45OTk1LC45OTk1NSwxLjAwMDE2LC45OTk3OCwuOTk5NzQsMS4wMDAxOSwxLjAwMDIyLC45OTk1NSwxLjAwMDUzLC45OTk3MywxLjAwMDg5LDEuMDAwMDUsLjk5OTY3LDEuMDAwNDgsLjk5OTczLDEuMDAwMDIsMS4wMDAzNCwuOTk5NzMsLjk5OTczLC45OTk2NCwxLjAwMDA2LDEuMDAwNjYsLjk5OTQ3LC45OTk3MywuOTg4OTQsLjk5OTczLDEsLjQ0ODk4LDEsLjk5OTQ2LDEsMS4wMDAzOSwxLjAwMDgyLC45OTk5MSwuOTk5OTEsLjk5OTg1LDEuMDAwMjIsMS4wMDAyMywxLjAwMDYxLDEuMDAwMDYsLjk5OTY2LC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwMTksMS4wMDA4LDEsLjk5OTI0LC45OTkyNCwuOTk5MjQsLjk5OTgzLDEuMDAwNDQsLjk5OTczLC45OTk2NCwuOTgzMzIsMSwuOTk5NzMsMSwxLC45OTk2MiwuOTk4OTUsMS4wMDAxNiwuOTk5NzcsMS4wMDAxNiwuOTk5NzcsMS4wMDAxNiwuOTk5NzcsMS4wMDAwMSwxLDEsMSwuOTk5NzMsMSwxLC45OTk1NSwuOTk5MjQsLjk5OTI0LC45OTkyNCwuOTk5MjQsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTczLC45OTk3MywuOTk5NzIsMSwxLDEuMDAyNjcsLjk5OTk5LC45OTk5OCwuOTk5OTgsMSwuOTk5OTgsMS42NjQ3NSwxLC45OTk3MywuOTk5NzMsMS4wMDAyMywuOTk5NzMsMS4wMDQyMywuOTk5MjUsLjk5OTk5LDEsLjk5OTkxLC45OTk4NCwxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwNDksMSwxLjAwMjQ1LDEsMSwxLDEsLjk2MzI5LDEsMS4yMDk4NSwxLjM5NzEzLDEuMDAwMDMsLjgyNTQsMS4wMDAxNSwxLDEuMDAwMzUsMS4wMDAyNywxLjAwMDMxLDEuMDAwMzEsMS4wMDAwMywxLjAwMDMxLDEuMDAwMzEsLjk5OTk5LDEuMDAwMDMsLjk5OTk5LC45OTk5OSwxLjQxMTQ0LDEuNiwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDA1NzksMS40MDU3OSwxLjM2NjI1LC45OTk5OSwxLC45OTg2MSwuOTk4NjEsMSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LC45NTMxNywuOTk5OTksLjk5OTk5LC45OTk5OSwuOTk5OTksMS40MDQ4MywxLC45OTk3NywxLjAwMDU0LDEsMSwuOTk5NTMsLjk5OTYyLDEuMDAwNDIsLjk5OTUsMSwxLDEsMSwxLDEsMSwxLC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLHQuSGVsdmV0aWNhSXRhbGljTWV0cmljcz17bGluZUhlaWdodDoxLjM1LGxpbmVHYXA6LjJ9LHQuSGVsdmV0aWNhUmVndWxhckZhY3RvcnM9Wy43NjExNiwxLDEsMS4wMDA2LDEuMDAwNiwxLjAwMDA2LC45OTk3MywuOTk5NzMsLjk5OTgyLDEuMDAwMDEsMS4wMDA0MywuOTk5OTgsLjk5OTk4LC45OTk1OSwxLjAwMDAzLDEuMDAwNiwuOTk5OTgsMS4wMDA2LDEuMDAwNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA2LDEsMS4wMDAwMywxLjAwMDAzLDEuMDAwMDMsLjk5OTczLC45OTk4NywxLjAwMDAxLDEuMDAwMDEsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMjYsMS4wMDAyMiwuOTk5NzcsMS4wMDA2LDEsMS4wMDAwMSwuOTk5NzMsLjk5OTk5LC45OTk3NywxLjAwMDIyLDEuMDAwMDEsMS4wMDAyMiwuOTk5NzcsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDAxLDEuMDAwMTYsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTQ5LC45OTk3MywuOTk5OTgsLjk5OTczLC45OTk3MywxLC45OTk3MywuOTk5NzMsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTI0LC45OTkyNCwxLC45OTkyNCwuOTk5OTksLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk5OCwxLDEuMDAwNiwuOTk5NzMsMSwuOTk5NzcsMSwxLDEsMS4wMDAwNSwxLjAwMDksMS4wMDAwNSwxLjAwMDAzLC45OTk5OCwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA5LC45OTk3MywuOTk5OTgsMS4wMDAyNSwuOTk5NjgsLjk5OTczLDEuMDAwMDMsMS4wMDAyNSwuNjAyOTksMS4wMDAyNCwxLjA2NDA5LDEsMSwuOTk5OTgsMSwuOTk5OCwxLjAwMDYsLjk5OTk4LDEsLjk5OTM2LC45OTk3MywxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDI2LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEsLjk5OTc3LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3NywuOTk5NzcsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMDMsMS4wMDAyMiwuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTgyLDEsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wNjQwOSwxLjAwMDI2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLC45OTk3MywxLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLC45OTk3NywxLC45OTk3NywxLC45OTk3NywxLC45OTk3NywxLC45OTk3NywxLjA0NTk2LC45OTk3NywuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAyMiwuOTk5NzMsMS4wMDAyMiwuOTk5NzMsMS4wMDAyMiwuOTk5NzMsMS4wMDAyMiwuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5MjQsMS4wMDA2LDEuMDAwNiwxLjAwMDE5LDEuMDAwMzQsMSwuOTk5MjQsMS4wMDAwMSwxLDEsLjk5OTczLC45OTkyNCwuOTk5NzMsLjk5OTI0LC45OTk3MywxLjAyNTcyLC45OTk3MywxLjAwMDA1LC45OTk3MywuOTk5MjQsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTk5LC45OTk4LC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywxLDEuMDAwMTYsLjk5OTc3LC45OTk5OCwuOTk5NzcsLjk5OTk4LC45OTk3NywuOTk5OTgsMS4wMDAwMSwxLDEuMDAwMDEsMSwxLjAwMDAxLDEsMS4wMDAwMSwxLDEuMDAwMjYsMS4wMDA2LDEuMDAwMjYsLjg0NTMzLDEuMDAwMjYsMS4wMDA2LC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLDEuMDAwMTYsLjk5OTc3LDEuMDAwMDEsMSwxLjAwMDAxLDEuMDAwMjYsMSwxLjAwMDI2LDEsMS4wMDAyNiwxLC45OTkyNCwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMSwuOTk5ODIsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMDEsMSwxLjAwMDI2LDEuMDAwNiwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTkyOCwxLC45OTk3NywxLjAwMDEzLDEuMDAwNTUsLjk5OTQ3LC45OTk0NSwuOTk5NDEsLjk5OTI0LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDQsLjkxNjIxLDEuMDAwMDEsMS4wMDAyNiwuOTk5NzcsMS4wMDAyMiwxLjAwMDYsMS4wMDAwMSwxLjAwMDA1LC45OTk5OSwuOTk5NzcsMS4wMDAxNSwxLjAwMDIyLC45OTk3NywxLjAwMDAxLC45OTk3MywxLjAwMDI2LDEuMDAwMDEsMS4wMDAxOSwxLjAwMDAxLC45OTk0NiwxLDEuMDAwNiwxLjAwMDAxLC45OTk3OCwxLjAwMDQ1LC45OTk3MywuOTk5MjQsMS4wMDAyMywuOTk5NzgsLjk5OTY2LDEsMS4wMDA2NSwxLjAwMDQ1LDEuMDAwMTksLjk5OTczLC45OTk3MywuOTk5MjQsMSwxLC45NjQ5OSwxLDEuMDAwNTUsLjk5OTczLDEuMDAwMDgsMS4wMDAyNywxLC45OTk3LC45OTk5NSwxLjAwMDIzLC45OTkzMywxLjAwMDE5LDEuMDAwMTUsMS4wMDAzMSwuOTk5MjQsMS4wMDAyMywuOTk5NzMsMS4wMDAyMywxLjAwMDMxLDEuMDAwMDEsLjk5OTI4LDEuMDAwMjksMS4wMDA5MiwxLjAwMDM1LDEuMDAwMDEsMS4wMDA2LDEuMDAwNiwxLC45OTk4OCwuOTk5NzUsMSwxLjAwMDgyLC45OTU2MSwuOTk5NiwxLjAwMDM1LDEuMDAwMDEsLjk5OTYyLDEuMDAwMDEsMS4wMDA5MiwuOTk5NjQsMS4wMDAwMSwuOTk5NjMsLjk5OTk5LDEuMDAwMzUsMS4wMDAzNSwxLjAwMDgyLC45OTk2MiwuOTk5OTksLjk5OTc3LDEuMDAwMjIsMS4wMDAzNSwxLjAwMDAxLC45OTk3NywxLjAwMDI2LC45OTk2LC45OTk2NywxLjAwMDAxLDEuMDAwMzQsMS4wMDA3NCwxLjAwMDU0LDEuMDAwNTMsMS4wMDA2MywuOTk5NzEsLjk5OTYyLDEuMDAwMzUsLjk5OTc1LC45OTk3NywuOTk5NzMsMS4wMDA0MywuOTk5NTMsMS4wMDA3LC45OTkxNSwuOTk5NzMsMS4wMDAwOCwuOTk4OTIsMS4wMDA3MywxLjAwMDczLDEuMDAxMTQsLjk5OTE1LDEuMDAwNzMsLjk5OTU1LC45OTk3MywxLjAwMDkyLC45OTk3MywxLC45OTk5OCwxLDEuMDAwMywxLDEuMDAwNDMsMS4wMDAwMSwuOTk5NjksMS4wMDAzLDEsMS4wMDAzNSwxLjAwMDAxLC45OTk1LDEsMS4wMDA5MiwuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDcsLjk5OTUsMSwuOTk5MjQsMS4wMDA2LC45OTkyNCwuOTk5NzIsMS4wMDA2MiwuOTk5NzMsMS4wMDExNCwxLjAwMDczLDEsLjk5OTU1LDEsMSwxLjAwMDQ3LC45OTk2OCwxLjAwMDE2LC45OTk3NywxLjAwMDE2LC45OTk3NywxLjAwMDE2LC45OTk3NywxLjAwMDAxLDEsMSwxLC45OTk3MywxLDEsLjk5OTU1LC45OTkyNCwuOTk5MjQsLjk5OTI0LC45OTkyNCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5NzMsLjk5OTczLC45OTk3MiwxLDEsMS4wMDI2NywuOTk5OTksLjk5OTk4LC45OTk5OCwxLC45OTk5OCwxLjY2NDc1LDEsLjk5OTczLC45OTk3MywxLjAwMDIzLC45OTk3MywuOTk5NzEsLjk5OTI1LDEuMDAwMjMsMSwuOTk5OTEsLjk5OTg0LDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMSwxLDEsMSwxLDEsMSwuOTYzMjksMSwxLjIwOTg1LDEuMzk3MTMsMS4wMDAwMywuODI1NCwxLjAwMDE1LDEsMS4wMDAzNSwxLjAwMDI3LDEuMDAwMzEsMS4wMDAzMSwuOTk5MTUsMS4wMDAzMSwxLjAwMDMxLC45OTk5OSwxLjAwMDAzLC45OTk5OSwuOTk5OTksMS40MTE0NCwxLjYsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQwNTc5LDEuNDA1NzksMS4zNjYyNSwuOTk5OTksMSwuOTk4NjEsLjk5ODYxLDEsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwuOTUzMTcsLjk5OTk5LC45OTk5OSwuOTk5OTksLjk5OTk5LDEuNDA0ODMsMSwuOTk5NzcsMS4wMDA1NCwxLDEsLjk5OTUzLC45OTk2MiwxLjAwMDQyLC45OTk1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sdC5IZWx2ZXRpY2FSZWd1bGFyTWV0cmljcz17bGluZUhlaWdodDoxLjIsbGluZUdhcDouMn19LChlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuTGliZXJhdGlvblNhbnNSZWd1bGFyV2lkdGhzPXQuTGliZXJhdGlvblNhbnNSZWd1bGFyTWFwcGluZz10LkxpYmVyYXRpb25TYW5zSXRhbGljV2lkdGhzPXQuTGliZXJhdGlvblNhbnNJdGFsaWNNYXBwaW5nPXQuTGliZXJhdGlvblNhbnNCb2xkV2lkdGhzPXQuTGliZXJhdGlvblNhbnNCb2xkTWFwcGluZz10LkxpYmVyYXRpb25TYW5zQm9sZEl0YWxpY1dpZHRocz10LkxpYmVyYXRpb25TYW5zQm9sZEl0YWxpY01hcHBpbmc9dm9pZCAwLHQuTGliZXJhdGlvblNhbnNCb2xkV2lkdGhzPVszNjUsMCwzMzMsMjc4LDMzMyw0NzQsNTU2LDU1Niw4ODksNzIyLDIzOCwzMzMsMzMzLDM4OSw1ODQsMjc4LDMzMywyNzgsMjc4LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1NiwzMzMsMzMzLDU4NCw1ODQsNTg0LDYxMSw5NzUsNzIyLDcyMiw3MjIsNzIyLDY2Nyw2MTEsNzc4LDcyMiwyNzgsNTU2LDcyMiw2MTEsODMzLDcyMiw3NzgsNjY3LDc3OCw3MjIsNjY3LDYxMSw3MjIsNjY3LDk0NCw2NjcsNjY3LDYxMSwzMzMsMjc4LDMzMyw1ODQsNTU2LDMzMyw1NTYsNjExLDU1Niw2MTEsNTU2LDMzMyw2MTEsNjExLDI3OCwyNzgsNTU2LDI3OCw4ODksNjExLDYxMSw2MTEsNjExLDM4OSw1NTYsMzMzLDYxMSw1NTYsNzc4LDU1Niw1NTYsNTAwLDM4OSwyODAsMzg5LDU4NCwzMzMsNTU2LDU1Niw1NTYsNTU2LDI4MCw1NTYsMzMzLDczNywzNzAsNTU2LDU4NCw3MzcsNTUyLDQwMCw1NDksMzMzLDMzMywzMzMsNTc2LDU1NiwyNzgsMzMzLDMzMywzNjUsNTU2LDgzNCw4MzQsODM0LDYxMSw3MjIsNzIyLDcyMiw3MjIsNzIyLDcyMiwxZTMsNzIyLDY2Nyw2NjcsNjY3LDY2NywyNzgsMjc4LDI3OCwyNzgsNzIyLDcyMiw3NzgsNzc4LDc3OCw3NzgsNzc4LDU4NCw3NzgsNzIyLDcyMiw3MjIsNzIyLDY2Nyw2NjcsNjExLDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDg4OSw1NTYsNTU2LDU1Niw1NTYsNTU2LDI3OCwyNzgsMjc4LDI3OCw2MTEsNjExLDYxMSw2MTEsNjExLDYxMSw2MTEsNTQ5LDYxMSw2MTEsNjExLDYxMSw2MTEsNTU2LDYxMSw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNzE5LDcyMiw2MTEsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDc3OCw2MTEsNzc4LDYxMSw3NzgsNjExLDc3OCw2MTEsNzIyLDYxMSw3MjIsNjExLDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCw3ODUsNTU2LDU1NiwyNzgsNzIyLDU1Niw1NTYsNjExLDI3OCw2MTEsMjc4LDYxMSwzODUsNjExLDQ3OSw2MTEsMjc4LDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDcwOCw3MjMsNjExLDc3OCw2MTEsNzc4LDYxMSw3NzgsNjExLDFlMyw5NDQsNzIyLDM4OSw3MjIsMzg5LDcyMiwzODksNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2MTEsMzMzLDYxMSw0NzksNjExLDMzMyw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw5NDQsNzc4LDY2Nyw1NTYsNjY3LDYxMSw1MDAsNjExLDUwMCw2MTEsNTAwLDI3OCw1NTYsNzIyLDU1NiwxZTMsODg5LDc3OCw2MTEsNjY3LDU1Niw2MTEsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMyw0NjUsNzIyLDMzMyw4NTMsOTA2LDQ3NCw4MjUsOTI3LDgzOCwyNzgsNzIyLDcyMiw2MDEsNzE5LDY2Nyw2MTEsNzIyLDc3OCwyNzgsNzIyLDY2Nyw4MzMsNzIyLDY0NCw3NzgsNzIyLDY2Nyw2MDAsNjExLDY2Nyw4MjEsNjY3LDgwOSw4MDIsMjc4LDY2Nyw2MTUsNDUxLDYxMSwyNzgsNTgyLDYxNSw2MTAsNTU2LDYwNiw0NzUsNDYwLDYxMSw1NDEsMjc4LDU1OCw1NTYsNjEyLDU1Niw0NDUsNjExLDc2Niw2MTksNTIwLDY4NCw0NDYsNTgyLDcxNSw1NzYsNzUzLDg0NSwyNzgsNTgyLDYxMSw1ODIsODQ1LDY2Nyw2NjksODg1LDU2Nyw3MTEsNjY3LDI3OCwyNzYsNTU2LDEwOTQsMTA2Miw4NzUsNjEwLDcyMiw2MjIsNzE5LDcyMiw3MTksNzIyLDU2Nyw3MTIsNjY3LDkwNCw2MjYsNzE5LDcxOSw2MTAsNzAyLDgzMyw3MjIsNzc4LDcxOSw2NjcsNzIyLDYxMSw2MjIsODU0LDY2Nyw3MzAsNzAzLDEwMDUsMTAxOSw4NzAsOTc5LDcxOSw3MTEsMTAzMSw3MTksNTU2LDYxOCw2MTUsNDE3LDYzNSw1NTYsNzA5LDQ5Nyw2MTUsNjE1LDUwMCw2MzUsNzQwLDYwNCw2MTEsNjA0LDYxMSw1NTYsNDkwLDU1Niw4NzUsNTU2LDYxNSw1ODEsODMzLDg0NCw3MjksODU0LDYxNSw1NTIsODU0LDU4Myw1NTYsNTU2LDYxMSw0MTcsNTUyLDU1NiwyNzgsMjgxLDI3OCw5NjksOTA2LDYxMSw1MDAsNjE1LDU1Niw2MDQsNzc4LDYxMSw0ODcsNDQ3LDk0NCw3NzgsOTQ0LDc3OCw5NDQsNzc4LDY2Nyw1NTYsMzMzLDMzMyw1NTYsMWUzLDFlMyw1NTIsMjc4LDI3OCwyNzgsMjc4LDUwMCw1MDAsNTAwLDU1Niw1NTYsMzUwLDFlMywxZTMsMjQwLDQ3OSwzMzMsMzMzLDYwNCwzMzMsMTY3LDM5Niw1NTYsNTU2LDEwOTQsNTU2LDg4NSw0ODksMTExNSwxZTMsNzY4LDYwMCw4MzQsODM0LDgzNCw4MzQsMWUzLDUwMCwxZTMsNTAwLDFlMyw1MDAsNTAwLDQ5NCw2MTIsODIzLDcxMyw1ODQsNTQ5LDcxMyw5NzksNzIyLDI3NCw1NDksNTQ5LDU4Myw1NDksNTQ5LDYwNCw1ODQsNjA0LDYwNCw3MDgsNjI1LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcyOSw2MDQsNjA0LDM1NCwzNTQsMWUzLDk5MCw5OTAsOTkwLDk5MCw0OTQsNjA0LDYwNCw2MDQsNjA0LDM1NCwxMDIxLDEwNTIsOTE3LDc1MCw3NTAsNTMxLDY1Niw1OTQsNTEwLDUwMCw3NTAsNzUwLDYxMSw2MTEsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywyMjIsMjIyLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzNdLHQuTGliZXJhdGlvblNhbnNCb2xkTWFwcGluZz1bLTEsLTEsLTEsMzIsMzMsMzQsMzUsMzYsMzcsMzgsMzksNDAsNDEsNDIsNDMsNDQsNDUsNDYsNDcsNDgsNDksNTAsNTEsNTIsNTMsNTQsNTUsNTYsNTcsNTgsNTksNjAsNjEsNjIsNjMsNjQsNjUsNjYsNjcsNjgsNjksNzAsNzEsNzIsNzMsNzQsNzUsNzYsNzcsNzgsNzksODAsODEsODIsODMsODQsODUsODYsODcsODgsODksOTAsOTEsOTIsOTMsOTQsOTUsOTYsOTcsOTgsOTksMTAwLDEwMSwxMDIsMTAzLDEwNCwxMDUsMTA2LDEwNywxMDgsMTA5LDExMCwxMTEsMTEyLDExMywxMTQsMTE1LDExNiwxMTcsMTE4LDExOSwxMjAsMTIxLDEyMiwxMjMsMTI0LDEyNSwxMjYsMTYxLDE2MiwxNjMsMTY0LDE2NSwxNjYsMTY3LDE2OCwxNjksMTcwLDE3MSwxNzIsMTc0LDE3NSwxNzYsMTc3LDE3OCwxNzksMTgwLDE4MSwxODIsMTgzLDE4NCwxODUsMTg2LDE4NywxODgsMTg5LDE5MCwxOTEsMTkyLDE5MywxOTQsMTk1LDE5NiwxOTcsMTk4LDE5OSwyMDAsMjAxLDIwMiwyMDMsMjA0LDIwNSwyMDYsMjA3LDIwOCwyMDksMjEwLDIxMSwyMTIsMjEzLDIxNCwyMTUsMjE2LDIxNywyMTgsMjE5LDIyMCwyMjEsMjIyLDIyMywyMjQsMjI1LDIyNiwyMjcsMjI4LDIyOSwyMzAsMjMxLDIzMiwyMzMsMjM0LDIzNSwyMzYsMjM3LDIzOCwyMzksMjQwLDI0MSwyNDIsMjQzLDI0NCwyNDUsMjQ2LDI0NywyNDgsMjQ5LDI1MCwyNTEsMjUyLDI1MywyNTQsMjU1LDI1NiwyNTcsMjU4LDI1OSwyNjAsMjYxLDI2MiwyNjMsMjY0LDI2NSwyNjYsMjY3LDI2OCwyNjksMjcwLDI3MSwyNzIsMjczLDI3NCwyNzUsMjc2LDI3NywyNzgsMjc5LDI4MCwyODEsMjgyLDI4MywyODQsMjg1LDI4NiwyODcsMjg4LDI4OSwyOTAsMjkxLDI5MiwyOTMsMjk0LDI5NSwyOTYsMjk3LDI5OCwyOTksMzAwLDMwMSwzMDIsMzAzLDMwNCwzMDUsMzA2LDMwNywzMDgsMzA5LDMxMCwzMTEsMzEyLDMxMywzMTQsMzE1LDMxNiwzMTcsMzE4LDMxOSwzMjAsMzIxLDMyMiwzMjMsMzI0LDMyNSwzMjYsMzI3LDMyOCwzMjksMzMwLDMzMSwzMzIsMzMzLDMzNCwzMzUsMzM2LDMzNywzMzgsMzM5LDM0MCwzNDEsMzQyLDM0MywzNDQsMzQ1LDM0NiwzNDcsMzQ4LDM0OSwzNTAsMzUxLDM1MiwzNTMsMzU0LDM1NSwzNTYsMzU3LDM1OCwzNTksMzYwLDM2MSwzNjIsMzYzLDM2NCwzNjUsMzY2LDM2NywzNjgsMzY5LDM3MCwzNzEsMzcyLDM3MywzNzQsMzc1LDM3NiwzNzcsMzc4LDM3OSwzODAsMzgxLDM4MiwzODMsNDAyLDUwNiw1MDcsNTA4LDUwOSw1MTAsNTExLDUzNiw1MzcsNTM4LDUzOSw3MTAsNzExLDcxMyw3MjgsNzI5LDczMCw3MzEsNzMyLDczMyw5MDAsOTAxLDkwMiw5MDMsOTA0LDkwNSw5MDYsOTA4LDkxMCw5MTEsOTEyLDkxMyw5MTQsOTE1LDkxNiw5MTcsOTE4LDkxOSw5MjAsOTIxLDkyMiw5MjMsOTI0LDkyNSw5MjYsOTI3LDkyOCw5MjksOTMxLDkzMiw5MzMsOTM0LDkzNSw5MzYsOTM3LDkzOCw5MzksOTQwLDk0MSw5NDIsOTQzLDk0NCw5NDUsOTQ2LDk0Nyw5NDgsOTQ5LDk1MCw5NTEsOTUyLDk1Myw5NTQsOTU1LDk1Niw5NTcsOTU4LDk1OSw5NjAsOTYxLDk2Miw5NjMsOTY0LDk2NSw5NjYsOTY3LDk2OCw5NjksOTcwLDk3MSw5NzIsOTczLDk3NCwxMDI0LDEwMjUsMTAyNiwxMDI3LDEwMjgsMTAyOSwxMDMwLDEwMzEsMTAzMiwxMDMzLDEwMzQsMTAzNSwxMDM2LDEwMzcsMTAzOCwxMDM5LDEwNDAsMTA0MSwxMDQyLDEwNDMsMTA0NCwxMDQ1LDEwNDYsMTA0NywxMDQ4LDEwNDksMTA1MCwxMDUxLDEwNTIsMTA1MywxMDU0LDEwNTUsMTA1NiwxMDU3LDEwNTgsMTA1OSwxMDYwLDEwNjEsMTA2MiwxMDYzLDEwNjQsMTA2NSwxMDY2LDEwNjcsMTA2OCwxMDY5LDEwNzAsMTA3MSwxMDcyLDEwNzMsMTA3NCwxMDc1LDEwNzYsMTA3NywxMDc4LDEwNzksMTA4MCwxMDgxLDEwODIsMTA4MywxMDg0LDEwODUsMTA4NiwxMDg3LDEwODgsMTA4OSwxMDkwLDEwOTEsMTA5MiwxMDkzLDEwOTQsMTA5NSwxMDk2LDEwOTcsMTA5OCwxMDk5LDExMDAsMTEwMSwxMTAyLDExMDMsMTEwNCwxMTA1LDExMDYsMTEwNywxMTA4LDExMDksMTExMCwxMTExLDExMTIsMTExMywxMTE0LDExMTUsMTExNiwxMTE3LDExMTgsMTExOSwxMTM4LDExMzksMTE2OCwxMTY5LDc4MDgsNzgwOSw3ODEwLDc4MTEsNzgxMiw3ODEzLDc5MjIsNzkyMyw4MjA4LDgyMDksODIxMSw4MjEyLDgyMTMsODIxNSw4MjE2LDgyMTcsODIxOCw4MjE5LDgyMjAsODIyMSw4MjIyLDgyMjQsODIyNSw4MjI2LDgyMzAsODI0MCw4MjQyLDgyNDMsODI0OSw4MjUwLDgyNTIsODI1NCw4MjYwLDgzMTksODM1NSw4MzU2LDgzNTksODM2NCw4NDUzLDg0NjcsODQ3MCw4NDgyLDg0ODYsODQ5NCw4NTM5LDg1NDAsODU0MSw4NTQyLDg1OTIsODU5Myw4NTk0LDg1OTUsODU5Niw4NTk3LDg2MTYsODcwNiw4NzEwLDg3MTksODcyMSw4NzIyLDg3MzAsODczNCw4NzM1LDg3NDUsODc0Nyw4Nzc2LDg4MDAsODgwMSw4ODA0LDg4MDUsODk2Miw4OTc2LDg5OTIsODk5Myw5NDcyLDk0NzQsOTQ4NCw5NDg4LDk0OTIsOTQ5Niw5NTAwLDk1MDgsOTUxNiw5NTI0LDk1MzIsOTU1Miw5NTUzLDk1NTQsOTU1NSw5NTU2LDk1NTcsOTU1OCw5NTU5LDk1NjAsOTU2MSw5NTYyLDk1NjMsOTU2NCw5NTY1LDk1NjYsOTU2Nyw5NTY4LDk1NjksOTU3MCw5NTcxLDk1NzIsOTU3Myw5NTc0LDk1NzUsOTU3Niw5NTc3LDk1NzgsOTU3OSw5NTgwLDk2MDAsOTYwNCw5NjA4LDk2MTIsOTYxNiw5NjE3LDk2MTgsOTYxOSw5NjMyLDk2MzMsOTY0Miw5NjQzLDk2NDQsOTY1MCw5NjU4LDk2NjAsOTY2OCw5Njc0LDk2NzUsOTY3OSw5Njg4LDk2ODksOTcwMiw5Nzg2LDk3ODcsOTc4OCw5NzkyLDk3OTQsOTgyNCw5ODI3LDk4MjksOTgzMCw5ODM0LDk4MzUsOTgzNiw2MTQ0MSw2MTQ0Miw2MTQ0NSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMV0sdC5MaWJlcmF0aW9uU2Fuc0JvbGRJdGFsaWNXaWR0aHM9WzM2NSwwLDMzMywyNzgsMzMzLDQ3NCw1NTYsNTU2LDg4OSw3MjIsMjM4LDMzMywzMzMsMzg5LDU4NCwyNzgsMzMzLDI3OCwyNzgsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDMzMywzMzMsNTg0LDU4NCw1ODQsNjExLDk3NSw3MjIsNzIyLDcyMiw3MjIsNjY3LDYxMSw3NzgsNzIyLDI3OCw1NTYsNzIyLDYxMSw4MzMsNzIyLDc3OCw2NjcsNzc4LDcyMiw2NjcsNjExLDcyMiw2NjcsOTQ0LDY2Nyw2NjcsNjExLDMzMywyNzgsMzMzLDU4NCw1NTYsMzMzLDU1Niw2MTEsNTU2LDYxMSw1NTYsMzMzLDYxMSw2MTEsMjc4LDI3OCw1NTYsMjc4LDg4OSw2MTEsNjExLDYxMSw2MTEsMzg5LDU1NiwzMzMsNjExLDU1Niw3NzgsNTU2LDU1Niw1MDAsMzg5LDI4MCwzODksNTg0LDMzMyw1NTYsNTU2LDU1Niw1NTYsMjgwLDU1NiwzMzMsNzM3LDM3MCw1NTYsNTg0LDczNyw1NTIsNDAwLDU0OSwzMzMsMzMzLDMzMyw1NzYsNTU2LDI3OCwzMzMsMzMzLDM2NSw1NTYsODM0LDgzNCw4MzQsNjExLDcyMiw3MjIsNzIyLDcyMiw3MjIsNzIyLDFlMyw3MjIsNjY3LDY2Nyw2NjcsNjY3LDI3OCwyNzgsMjc4LDI3OCw3MjIsNzIyLDc3OCw3NzgsNzc4LDc3OCw3NzgsNTg0LDc3OCw3MjIsNzIyLDcyMiw3MjIsNjY3LDY2Nyw2MTEsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsODg5LDU1Niw1NTYsNTU2LDU1Niw1NTYsMjc4LDI3OCwyNzgsMjc4LDYxMSw2MTEsNjExLDYxMSw2MTEsNjExLDYxMSw1NDksNjExLDYxMSw2MTEsNjExLDYxMSw1NTYsNjExLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw3NDAsNzIyLDYxMSw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNzc4LDYxMSw3NzgsNjExLDc3OCw2MTEsNzc4LDYxMSw3MjIsNjExLDcyMiw2MTEsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDc4Miw1NTYsNTU2LDI3OCw3MjIsNTU2LDU1Niw2MTEsMjc4LDYxMSwyNzgsNjExLDM5Niw2MTEsNDc5LDYxMSwyNzgsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsNzA4LDcyMyw2MTEsNzc4LDYxMSw3NzgsNjExLDc3OCw2MTEsMWUzLDk0NCw3MjIsMzg5LDcyMiwzODksNzIyLDM4OSw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDYxMSwzMzMsNjExLDQ3OSw2MTEsMzMzLDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDk0NCw3NzgsNjY3LDU1Niw2NjcsNjExLDUwMCw2MTEsNTAwLDYxMSw1MDAsMjc4LDU1Niw3MjIsNTU2LDFlMyw4ODksNzc4LDYxMSw2NjcsNTU2LDYxMSwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMyw3MjIsMzMzLDg1NCw5MDYsNDczLDg0NCw5MzAsODQ3LDI3OCw3MjIsNzIyLDYxMCw2NzEsNjY3LDYxMSw3MjIsNzc4LDI3OCw3MjIsNjY3LDgzMyw3MjIsNjU3LDc3OCw3MTgsNjY3LDU5MCw2MTEsNjY3LDgyMiw2NjcsODI5LDc4MSwyNzgsNjY3LDYyMCw0NzksNjExLDI3OCw1OTEsNjIwLDYyMSw1NTYsNjEwLDQ3OSw0OTIsNjExLDU1OCwyNzgsNTY2LDU1Niw2MDMsNTU2LDQ1MCw2MTEsNzEyLDYwNSw1MzIsNjY0LDQwOSw1OTEsNzA0LDU3OCw3NzMsODM0LDI3OCw1OTEsNjExLDU5MSw4MzQsNjY3LDY2Nyw4ODYsNjE0LDcxOSw2NjcsMjc4LDI3OCw1NTYsMTA5NCwxMDQyLDg1NCw2MjIsNzE5LDY3Nyw3MTksNzIyLDcwOCw3MjIsNjE0LDcyMiw2NjcsOTI3LDY0Myw3MTksNzE5LDYxNSw2ODcsODMzLDcyMiw3NzgsNzE5LDY2Nyw3MjIsNjExLDY3Nyw3ODEsNjY3LDcyOSw3MDgsOTc5LDk4OSw4NTQsMWUzLDcwOCw3MTksMTA0Miw3MjksNTU2LDYxOSw2MDQsNTM0LDYxOCw1NTYsNzM2LDUxMCw2MTEsNjExLDUwNyw2MjIsNzQwLDYwNCw2MTEsNjExLDYxMSw1NTYsODg5LDU1Niw4ODUsNTU2LDY0Niw1ODMsODg5LDkzNSw3MDcsODU0LDU5NCw1NTIsODY1LDU4OSw1NTYsNTU2LDYxMSw0NjksNTYzLDU1NiwyNzgsMjc4LDI3OCw5NjksOTA2LDYxMSw1MDcsNjE5LDU1Niw2MTEsNzc4LDYxMSw1NzUsNDY3LDk0NCw3NzgsOTQ0LDc3OCw5NDQsNzc4LDY2Nyw1NTYsMzMzLDMzMyw1NTYsMWUzLDFlMyw1NTIsMjc4LDI3OCwyNzgsMjc4LDUwMCw1MDAsNTAwLDU1Niw1NTYsMzUwLDFlMywxZTMsMjQwLDQ3OSwzMzMsMzMzLDYwNCwzMzMsMTY3LDM5Niw1NTYsNTU2LDExMDQsNTU2LDg4NSw1MTYsMTE0NiwxZTMsNzY4LDYwMCw4MzQsODM0LDgzNCw4MzQsOTk5LDUwMCwxZTMsNTAwLDFlMyw1MDAsNTAwLDQ5NCw2MTIsODIzLDcxMyw1ODQsNTQ5LDcxMyw5NzksNzIyLDI3NCw1NDksNTQ5LDU4Myw1NDksNTQ5LDYwNCw1ODQsNjA0LDYwNCw3MDgsNjI1LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcyOSw2MDQsNjA0LDM1NCwzNTQsMWUzLDk5MCw5OTAsOTkwLDk5MCw0OTQsNjA0LDYwNCw2MDQsNjA0LDM1NCwxMDIxLDEwNTIsOTE3LDc1MCw3NTAsNTMxLDY1Niw1OTQsNTEwLDUwMCw3NTAsNzUwLDYxMSw2MTEsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywyMjIsMjIyLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzNdLHQuTGliZXJhdGlvblNhbnNCb2xkSXRhbGljTWFwcGluZz1bLTEsLTEsLTEsMzIsMzMsMzQsMzUsMzYsMzcsMzgsMzksNDAsNDEsNDIsNDMsNDQsNDUsNDYsNDcsNDgsNDksNTAsNTEsNTIsNTMsNTQsNTUsNTYsNTcsNTgsNTksNjAsNjEsNjIsNjMsNjQsNjUsNjYsNjcsNjgsNjksNzAsNzEsNzIsNzMsNzQsNzUsNzYsNzcsNzgsNzksODAsODEsODIsODMsODQsODUsODYsODcsODgsODksOTAsOTEsOTIsOTMsOTQsOTUsOTYsOTcsOTgsOTksMTAwLDEwMSwxMDIsMTAzLDEwNCwxMDUsMTA2LDEwNywxMDgsMTA5LDExMCwxMTEsMTEyLDExMywxMTQsMTE1LDExNiwxMTcsMTE4LDExOSwxMjAsMTIxLDEyMiwxMjMsMTI0LDEyNSwxMjYsMTYxLDE2MiwxNjMsMTY0LDE2NSwxNjYsMTY3LDE2OCwxNjksMTcwLDE3MSwxNzIsMTc0LDE3NSwxNzYsMTc3LDE3OCwxNzksMTgwLDE4MSwxODIsMTgzLDE4NCwxODUsMTg2LDE4NywxODgsMTg5LDE5MCwxOTEsMTkyLDE5MywxOTQsMTk1LDE5NiwxOTcsMTk4LDE5OSwyMDAsMjAxLDIwMiwyMDMsMjA0LDIwNSwyMDYsMjA3LDIwOCwyMDksMjEwLDIxMSwyMTIsMjEzLDIxNCwyMTUsMjE2LDIxNywyMTgsMjE5LDIyMCwyMjEsMjIyLDIyMywyMjQsMjI1LDIyNiwyMjcsMjI4LDIyOSwyMzAsMjMxLDIzMiwyMzMsMjM0LDIzNSwyMzYsMjM3LDIzOCwyMzksMjQwLDI0MSwyNDIsMjQzLDI0NCwyNDUsMjQ2LDI0NywyNDgsMjQ5LDI1MCwyNTEsMjUyLDI1MywyNTQsMjU1LDI1NiwyNTcsMjU4LDI1OSwyNjAsMjYxLDI2MiwyNjMsMjY0LDI2NSwyNjYsMjY3LDI2OCwyNjksMjcwLDI3MSwyNzIsMjczLDI3NCwyNzUsMjc2LDI3NywyNzgsMjc5LDI4MCwyODEsMjgyLDI4MywyODQsMjg1LDI4NiwyODcsMjg4LDI4OSwyOTAsMjkxLDI5MiwyOTMsMjk0LDI5NSwyOTYsMjk3LDI5OCwyOTksMzAwLDMwMSwzMDIsMzAzLDMwNCwzMDUsMzA2LDMwNywzMDgsMzA5LDMxMCwzMTEsMzEyLDMxMywzMTQsMzE1LDMxNiwzMTcsMzE4LDMxOSwzMjAsMzIxLDMyMiwzMjMsMzI0LDMyNSwzMjYsMzI3LDMyOCwzMjksMzMwLDMzMSwzMzIsMzMzLDMzNCwzMzUsMzM2LDMzNywzMzgsMzM5LDM0MCwzNDEsMzQyLDM0MywzNDQsMzQ1LDM0NiwzNDcsMzQ4LDM0OSwzNTAsMzUxLDM1MiwzNTMsMzU0LDM1NSwzNTYsMzU3LDM1OCwzNTksMzYwLDM2MSwzNjIsMzYzLDM2NCwzNjUsMzY2LDM2NywzNjgsMzY5LDM3MCwzNzEsMzcyLDM3MywzNzQsMzc1LDM3NiwzNzcsMzc4LDM3OSwzODAsMzgxLDM4MiwzODMsNDAyLDUwNiw1MDcsNTA4LDUwOSw1MTAsNTExLDUzNiw1MzcsNTM4LDUzOSw3MTAsNzExLDcxMyw3MjgsNzI5LDczMCw3MzEsNzMyLDczMyw5MDAsOTAxLDkwMiw5MDMsOTA0LDkwNSw5MDYsOTA4LDkxMCw5MTEsOTEyLDkxMyw5MTQsOTE1LDkxNiw5MTcsOTE4LDkxOSw5MjAsOTIxLDkyMiw5MjMsOTI0LDkyNSw5MjYsOTI3LDkyOCw5MjksOTMxLDkzMiw5MzMsOTM0LDkzNSw5MzYsOTM3LDkzOCw5MzksOTQwLDk0MSw5NDIsOTQzLDk0NCw5NDUsOTQ2LDk0Nyw5NDgsOTQ5LDk1MCw5NTEsOTUyLDk1Myw5NTQsOTU1LDk1Niw5NTcsOTU4LDk1OSw5NjAsOTYxLDk2Miw5NjMsOTY0LDk2NSw5NjYsOTY3LDk2OCw5NjksOTcwLDk3MSw5NzIsOTczLDk3NCwxMDI0LDEwMjUsMTAyNiwxMDI3LDEwMjgsMTAyOSwxMDMwLDEwMzEsMTAzMiwxMDMzLDEwMzQsMTAzNSwxMDM2LDEwMzcsMTAzOCwxMDM5LDEwNDAsMTA0MSwxMDQyLDEwNDMsMTA0NCwxMDQ1LDEwNDYsMTA0NywxMDQ4LDEwNDksMTA1MCwxMDUxLDEwNTIsMTA1MywxMDU0LDEwNTUsMTA1NiwxMDU3LDEwNTgsMTA1OSwxMDYwLDEwNjEsMTA2MiwxMDYzLDEwNjQsMTA2NSwxMDY2LDEwNjcsMTA2OCwxMDY5LDEwNzAsMTA3MSwxMDcyLDEwNzMsMTA3NCwxMDc1LDEwNzYsMTA3NywxMDc4LDEwNzksMTA4MCwxMDgxLDEwODIsMTA4MywxMDg0LDEwODUsMTA4NiwxMDg3LDEwODgsMTA4OSwxMDkwLDEwOTEsMTA5MiwxMDkzLDEwOTQsMTA5NSwxMDk2LDEwOTcsMTA5OCwxMDk5LDExMDAsMTEwMSwxMTAyLDExMDMsMTEwNCwxMTA1LDExMDYsMTEwNywxMTA4LDExMDksMTExMCwxMTExLDExMTIsMTExMywxMTE0LDExMTUsMTExNiwxMTE3LDExMTgsMTExOSwxMTM4LDExMzksMTE2OCwxMTY5LDc4MDgsNzgwOSw3ODEwLDc4MTEsNzgxMiw3ODEzLDc5MjIsNzkyMyw4MjA4LDgyMDksODIxMSw4MjEyLDgyMTMsODIxNSw4MjE2LDgyMTcsODIxOCw4MjE5LDgyMjAsODIyMSw4MjIyLDgyMjQsODIyNSw4MjI2LDgyMzAsODI0MCw4MjQyLDgyNDMsODI0OSw4MjUwLDgyNTIsODI1NCw4MjYwLDgzMTksODM1NSw4MzU2LDgzNTksODM2NCw4NDUzLDg0NjcsODQ3MCw4NDgyLDg0ODYsODQ5NCw4NTM5LDg1NDAsODU0MSw4NTQyLDg1OTIsODU5Myw4NTk0LDg1OTUsODU5Niw4NTk3LDg2MTYsODcwNiw4NzEwLDg3MTksODcyMSw4NzIyLDg3MzAsODczNCw4NzM1LDg3NDUsODc0Nyw4Nzc2LDg4MDAsODgwMSw4ODA0LDg4MDUsODk2Miw4OTc2LDg5OTIsODk5Myw5NDcyLDk0NzQsOTQ4NCw5NDg4LDk0OTIsOTQ5Niw5NTAwLDk1MDgsOTUxNiw5NTI0LDk1MzIsOTU1Miw5NTUzLDk1NTQsOTU1NSw5NTU2LDk1NTcsOTU1OCw5NTU5LDk1NjAsOTU2MSw5NTYyLDk1NjMsOTU2NCw5NTY1LDk1NjYsOTU2Nyw5NTY4LDk1NjksOTU3MCw5NTcxLDk1NzIsOTU3Myw5NTc0LDk1NzUsOTU3Niw5NTc3LDk1NzgsOTU3OSw5NTgwLDk2MDAsOTYwNCw5NjA4LDk2MTIsOTYxNiw5NjE3LDk2MTgsOTYxOSw5NjMyLDk2MzMsOTY0Miw5NjQzLDk2NDQsOTY1MCw5NjU4LDk2NjAsOTY2OCw5Njc0LDk2NzUsOTY3OSw5Njg4LDk2ODksOTcwMiw5Nzg2LDk3ODcsOTc4OCw5NzkyLDk3OTQsOTgyNCw5ODI3LDk4MjksOTgzMCw5ODM0LDk4MzUsOTgzNiw2MTQ0MSw2MTQ0Miw2MTQ0NSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMV0sdC5MaWJlcmF0aW9uU2Fuc0l0YWxpY1dpZHRocz1bMzY1LDAsMzMzLDI3OCwyNzgsMzU1LDU1Niw1NTYsODg5LDY2NywxOTEsMzMzLDMzMywzODksNTg0LDI3OCwzMzMsMjc4LDI3OCw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsMjc4LDI3OCw1ODQsNTg0LDU4NCw1NTYsMTAxNSw2NjcsNjY3LDcyMiw3MjIsNjY3LDYxMSw3NzgsNzIyLDI3OCw1MDAsNjY3LDU1Niw4MzMsNzIyLDc3OCw2NjcsNzc4LDcyMiw2NjcsNjExLDcyMiw2NjcsOTQ0LDY2Nyw2NjcsNjExLDI3OCwyNzgsMjc4LDQ2OSw1NTYsMzMzLDU1Niw1NTYsNTAwLDU1Niw1NTYsMjc4LDU1Niw1NTYsMjIyLDIyMiw1MDAsMjIyLDgzMyw1NTYsNTU2LDU1Niw1NTYsMzMzLDUwMCwyNzgsNTU2LDUwMCw3MjIsNTAwLDUwMCw1MDAsMzM0LDI2MCwzMzQsNTg0LDMzMyw1NTYsNTU2LDU1Niw1NTYsMjYwLDU1NiwzMzMsNzM3LDM3MCw1NTYsNTg0LDczNyw1NTIsNDAwLDU0OSwzMzMsMzMzLDMzMyw1NzYsNTM3LDI3OCwzMzMsMzMzLDM2NSw1NTYsODM0LDgzNCw4MzQsNjExLDY2Nyw2NjcsNjY3LDY2Nyw2NjcsNjY3LDFlMyw3MjIsNjY3LDY2Nyw2NjcsNjY3LDI3OCwyNzgsMjc4LDI3OCw3MjIsNzIyLDc3OCw3NzgsNzc4LDc3OCw3NzgsNTg0LDc3OCw3MjIsNzIyLDcyMiw3MjIsNjY3LDY2Nyw2MTEsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsODg5LDUwMCw1NTYsNTU2LDU1Niw1NTYsMjc4LDI3OCwyNzgsMjc4LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NDksNjExLDU1Niw1NTYsNTU2LDU1Niw1MDAsNTU2LDUwMCw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw3MjIsNTAwLDcyMiw1MDAsNzIyLDUwMCw3MjIsNTAwLDcyMiw2MjUsNzIyLDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNzc4LDU1Niw3NzgsNTU2LDc3OCw1NTYsNzc4LDU1Niw3MjIsNTU2LDcyMiw1NTYsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDIyMiwyNzgsMjc4LDczMyw0NDQsNTAwLDIyMiw2NjcsNTAwLDUwMCw1NTYsMjIyLDU1NiwyMjIsNTU2LDI4MSw1NTYsNDAwLDU1NiwyMjIsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNjE1LDcyMyw1NTYsNzc4LDU1Niw3NzgsNTU2LDc3OCw1NTYsMWUzLDk0NCw3MjIsMzMzLDcyMiwzMzMsNzIyLDMzMyw2NjcsNTAwLDY2Nyw1MDAsNjY3LDUwMCw2NjcsNTAwLDYxMSwyNzgsNjExLDM1NCw2MTEsMjc4LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDk0NCw3MjIsNjY3LDUwMCw2NjcsNjExLDUwMCw2MTEsNTAwLDYxMSw1MDAsMjIyLDU1Niw2NjcsNTU2LDFlMyw4ODksNzc4LDYxMSw2NjcsNTAwLDYxMSwyNzgsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMyw2NjcsMjc4LDc4OSw4NDYsMzg5LDc5NCw4NjUsNzc1LDIyMiw2NjcsNjY3LDU3MCw2NzEsNjY3LDYxMSw3MjIsNzc4LDI3OCw2NjcsNjY3LDgzMyw3MjIsNjQ4LDc3OCw3MjUsNjY3LDYwMCw2MTEsNjY3LDgzNyw2NjcsODMxLDc2MSwyNzgsNjY3LDU3MCw0MzksNTU1LDIyMiw1NTAsNTcwLDU3MSw1MDAsNTU2LDQzOSw0NjMsNTU1LDU0MiwyMjIsNTAwLDQ5Miw1NDgsNTAwLDQ0Nyw1NTYsNjcwLDU3Myw0ODYsNjAzLDM3NCw1NTAsNjUyLDU0Niw3MjgsNzc5LDIyMiw1NTAsNTU2LDU1MCw3NzksNjY3LDY2Nyw4NDMsNTQ0LDcwOCw2NjcsMjc4LDI3OCw1MDAsMTA2Niw5ODIsODQ0LDU4OSw3MTUsNjM5LDcyNCw2NjcsNjUxLDY2Nyw1NDQsNzA0LDY2Nyw5MTcsNjE0LDcxNSw3MTUsNTg5LDY4Niw4MzMsNzIyLDc3OCw3MjUsNjY3LDcyMiw2MTEsNjM5LDc5NSw2NjcsNzI3LDY3Myw5MjAsOTIzLDgwNSw4ODYsNjUxLDY5NCwxMDIyLDY4Miw1NTYsNTYyLDUyMiw0OTMsNTUzLDU1Niw2ODgsNDY1LDU1Niw1NTYsNDcyLDU2NCw2ODYsNTUwLDU1Niw1NTYsNTU2LDUwMCw4MzMsNTAwLDgzNSw1MDAsNTcyLDUxOCw4MzAsODUxLDYyMSw3MzYsNTI2LDQ5Miw3NTIsNTM0LDU1Niw1NTYsNTU2LDM3OCw0OTYsNTAwLDIyMiwyMjIsMjIyLDkxMCw4MjgsNTU2LDQ3Miw1NjUsNTAwLDU1Niw3NzgsNTU2LDQ5MiwzMzksOTQ0LDcyMiw5NDQsNzIyLDk0NCw3MjIsNjY3LDUwMCwzMzMsMzMzLDU1NiwxZTMsMWUzLDU1MiwyMjIsMjIyLDIyMiwyMjIsMzMzLDMzMywzMzMsNTU2LDU1NiwzNTAsMWUzLDFlMywxODgsMzU0LDMzMywzMzMsNTAwLDMzMywxNjcsMzY1LDU1Niw1NTYsMTA5NCw1NTYsODg1LDMyMywxMDgzLDFlMyw3NjgsNjAwLDgzNCw4MzQsODM0LDgzNCwxZTMsNTAwLDk5OCw1MDAsMWUzLDUwMCw1MDAsNDk0LDYxMiw4MjMsNzEzLDU4NCw1NDksNzEzLDk3OSw3MTksMjc0LDU0OSw1NDksNTg0LDU0OSw1NDksNjA0LDU4NCw2MDQsNjA0LDcwOCw2MjUsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzI5LDYwNCw2MDQsMzU0LDM1NCwxZTMsOTkwLDk5MCw5OTAsOTkwLDQ5NCw2MDQsNjA0LDYwNCw2MDQsMzU0LDEwMjEsMTA1Miw5MTcsNzUwLDc1MCw1MzEsNjU2LDU5NCw1MTAsNTAwLDc1MCw3NTAsNTAwLDUwMCwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDIyMiwyMjIsMjk0LDI5NCwzMjQsMzI0LDMxNiwzMjgsMzk4LDI4NV0sdC5MaWJlcmF0aW9uU2Fuc0l0YWxpY01hcHBpbmc9Wy0xLC0xLC0xLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLDQxLDQyLDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzLDU0LDU1LDU2LDU3LDU4LDU5LDYwLDYxLDYyLDYzLDY0LDY1LDY2LDY3LDY4LDY5LDcwLDcxLDcyLDczLDc0LDc1LDc2LDc3LDc4LDc5LDgwLDgxLDgyLDgzLDg0LDg1LDg2LDg3LDg4LDg5LDkwLDkxLDkyLDkzLDk0LDk1LDk2LDk3LDk4LDk5LDEwMCwxMDEsMTAyLDEwMywxMDQsMTA1LDEwNiwxMDcsMTA4LDEwOSwxMTAsMTExLDExMiwxMTMsMTE0LDExNSwxMTYsMTE3LDExOCwxMTksMTIwLDEyMSwxMjIsMTIzLDEyNCwxMjUsMTI2LDE2MSwxNjIsMTYzLDE2NCwxNjUsMTY2LDE2NywxNjgsMTY5LDE3MCwxNzEsMTcyLDE3NCwxNzUsMTc2LDE3NywxNzgsMTc5LDE4MCwxODEsMTgyLDE4MywxODQsMTg1LDE4NiwxODcsMTg4LDE4OSwxOTAsMTkxLDE5MiwxOTMsMTk0LDE5NSwxOTYsMTk3LDE5OCwxOTksMjAwLDIwMSwyMDIsMjAzLDIwNCwyMDUsMjA2LDIwNywyMDgsMjA5LDIxMCwyMTEsMjEyLDIxMywyMTQsMjE1LDIxNiwyMTcsMjE4LDIxOSwyMjAsMjIxLDIyMiwyMjMsMjI0LDIyNSwyMjYsMjI3LDIyOCwyMjksMjMwLDIzMSwyMzIsMjMzLDIzNCwyMzUsMjM2LDIzNywyMzgsMjM5LDI0MCwyNDEsMjQyLDI0MywyNDQsMjQ1LDI0NiwyNDcsMjQ4LDI0OSwyNTAsMjUxLDI1MiwyNTMsMjU0LDI1NSwyNTYsMjU3LDI1OCwyNTksMjYwLDI2MSwyNjIsMjYzLDI2NCwyNjUsMjY2LDI2NywyNjgsMjY5LDI3MCwyNzEsMjcyLDI3MywyNzQsMjc1LDI3NiwyNzcsMjc4LDI3OSwyODAsMjgxLDI4MiwyODMsMjg0LDI4NSwyODYsMjg3LDI4OCwyODksMjkwLDI5MSwyOTIsMjkzLDI5NCwyOTUsMjk2LDI5NywyOTgsMjk5LDMwMCwzMDEsMzAyLDMwMywzMDQsMzA1LDMwNiwzMDcsMzA4LDMwOSwzMTAsMzExLDMxMiwzMTMsMzE0LDMxNSwzMTYsMzE3LDMxOCwzMTksMzIwLDMyMSwzMjIsMzIzLDMyNCwzMjUsMzI2LDMyNywzMjgsMzI5LDMzMCwzMzEsMzMyLDMzMywzMzQsMzM1LDMzNiwzMzcsMzM4LDMzOSwzNDAsMzQxLDM0MiwzNDMsMzQ0LDM0NSwzNDYsMzQ3LDM0OCwzNDksMzUwLDM1MSwzNTIsMzUzLDM1NCwzNTUsMzU2LDM1NywzNTgsMzU5LDM2MCwzNjEsMzYyLDM2MywzNjQsMzY1LDM2NiwzNjcsMzY4LDM2OSwzNzAsMzcxLDM3MiwzNzMsMzc0LDM3NSwzNzYsMzc3LDM3OCwzNzksMzgwLDM4MSwzODIsMzgzLDQwMiw1MDYsNTA3LDUwOCw1MDksNTEwLDUxMSw1MzYsNTM3LDUzOCw1MzksNzEwLDcxMSw3MTMsNzI4LDcyOSw3MzAsNzMxLDczMiw3MzMsOTAwLDkwMSw5MDIsOTAzLDkwNCw5MDUsOTA2LDkwOCw5MTAsOTExLDkxMiw5MTMsOTE0LDkxNSw5MTYsOTE3LDkxOCw5MTksOTIwLDkyMSw5MjIsOTIzLDkyNCw5MjUsOTI2LDkyNyw5MjgsOTI5LDkzMSw5MzIsOTMzLDkzNCw5MzUsOTM2LDkzNyw5MzgsOTM5LDk0MCw5NDEsOTQyLDk0Myw5NDQsOTQ1LDk0Niw5NDcsOTQ4LDk0OSw5NTAsOTUxLDk1Miw5NTMsOTU0LDk1NSw5NTYsOTU3LDk1OCw5NTksOTYwLDk2MSw5NjIsOTYzLDk2NCw5NjUsOTY2LDk2Nyw5NjgsOTY5LDk3MCw5NzEsOTcyLDk3Myw5NzQsMTAyNCwxMDI1LDEwMjYsMTAyNywxMDI4LDEwMjksMTAzMCwxMDMxLDEwMzIsMTAzMywxMDM0LDEwMzUsMTAzNiwxMDM3LDEwMzgsMTAzOSwxMDQwLDEwNDEsMTA0MiwxMDQzLDEwNDQsMTA0NSwxMDQ2LDEwNDcsMTA0OCwxMDQ5LDEwNTAsMTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1LDEwNTYsMTA1NywxMDU4LDEwNTksMTA2MCwxMDYxLDEwNjIsMTA2MywxMDY0LDEwNjUsMTA2NiwxMDY3LDEwNjgsMTA2OSwxMDcwLDEwNzEsMTA3MiwxMDczLDEwNzQsMTA3NSwxMDc2LDEwNzcsMTA3OCwxMDc5LDEwODAsMTA4MSwxMDgyLDEwODMsMTA4NCwxMDg1LDEwODYsMTA4NywxMDg4LDEwODksMTA5MCwxMDkxLDEwOTIsMTA5MywxMDk0LDEwOTUsMTA5NiwxMDk3LDEwOTgsMTA5OSwxMTAwLDExMDEsMTEwMiwxMTAzLDExMDQsMTEwNSwxMTA2LDExMDcsMTEwOCwxMTA5LDExMTAsMTExMSwxMTEyLDExMTMsMTExNCwxMTE1LDExMTYsMTExNywxMTE4LDExMTksMTEzOCwxMTM5LDExNjgsMTE2OSw3ODA4LDc4MDksNzgxMCw3ODExLDc4MTIsNzgxMyw3OTIyLDc5MjMsODIwOCw4MjA5LDgyMTEsODIxMiw4MjEzLDgyMTUsODIxNiw4MjE3LDgyMTgsODIxOSw4MjIwLDgyMjEsODIyMiw4MjI0LDgyMjUsODIyNiw4MjMwLDgyNDAsODI0Miw4MjQzLDgyNDksODI1MCw4MjUyLDgyNTQsODI2MCw4MzE5LDgzNTUsODM1Niw4MzU5LDgzNjQsODQ1Myw4NDY3LDg0NzAsODQ4Miw4NDg2LDg0OTQsODUzOSw4NTQwLDg1NDEsODU0Miw4NTkyLDg1OTMsODU5NCw4NTk1LDg1OTYsODU5Nyw4NjE2LDg3MDYsODcxMCw4NzE5LDg3MjEsODcyMiw4NzMwLDg3MzQsODczNSw4NzQ1LDg3NDcsODc3Niw4ODAwLDg4MDEsODgwNCw4ODA1LDg5NjIsODk3Niw4OTkyLDg5OTMsOTQ3Miw5NDc0LDk0ODQsOTQ4OCw5NDkyLDk0OTYsOTUwMCw5NTA4LDk1MTYsOTUyNCw5NTMyLDk1NTIsOTU1Myw5NTU0LDk1NTUsOTU1Niw5NTU3LDk1NTgsOTU1OSw5NTYwLDk1NjEsOTU2Miw5NTYzLDk1NjQsOTU2NSw5NTY2LDk1NjcsOTU2OCw5NTY5LDk1NzAsOTU3MSw5NTcyLDk1NzMsOTU3NCw5NTc1LDk1NzYsOTU3Nyw5NTc4LDk1NzksOTU4MCw5NjAwLDk2MDQsOTYwOCw5NjEyLDk2MTYsOTYxNyw5NjE4LDk2MTksOTYzMiw5NjMzLDk2NDIsOTY0Myw5NjQ0LDk2NTAsOTY1OCw5NjYwLDk2NjgsOTY3NCw5Njc1LDk2NzksOTY4OCw5Njg5LDk3MDIsOTc4Niw5Nzg3LDk3ODgsOTc5Miw5Nzk0LDk4MjQsOTgyNyw5ODI5LDk4MzAsOTgzNCw5ODM1LDk4MzYsNjE0NDEsNjE0NDIsNjE0NDUsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTFdLHQuTGliZXJhdGlvblNhbnNSZWd1bGFyV2lkdGhzPVszNjUsMCwzMzMsMjc4LDI3OCwzNTUsNTU2LDU1Niw4ODksNjY3LDE5MSwzMzMsMzMzLDM4OSw1ODQsMjc4LDMzMywyNzgsMjc4LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1NiwyNzgsMjc4LDU4NCw1ODQsNTg0LDU1NiwxMDE1LDY2Nyw2NjcsNzIyLDcyMiw2NjcsNjExLDc3OCw3MjIsMjc4LDUwMCw2NjcsNTU2LDgzMyw3MjIsNzc4LDY2Nyw3NzgsNzIyLDY2Nyw2MTEsNzIyLDY2Nyw5NDQsNjY3LDY2Nyw2MTEsMjc4LDI3OCwyNzgsNDY5LDU1NiwzMzMsNTU2LDU1Niw1MDAsNTU2LDU1NiwyNzgsNTU2LDU1NiwyMjIsMjIyLDUwMCwyMjIsODMzLDU1Niw1NTYsNTU2LDU1NiwzMzMsNTAwLDI3OCw1NTYsNTAwLDcyMiw1MDAsNTAwLDUwMCwzMzQsMjYwLDMzNCw1ODQsMzMzLDU1Niw1NTYsNTU2LDU1NiwyNjAsNTU2LDMzMyw3MzcsMzcwLDU1Niw1ODQsNzM3LDU1Miw0MDAsNTQ5LDMzMywzMzMsMzMzLDU3Niw1MzcsMjc4LDMzMywzMzMsMzY1LDU1Niw4MzQsODM0LDgzNCw2MTEsNjY3LDY2Nyw2NjcsNjY3LDY2Nyw2NjcsMWUzLDcyMiw2NjcsNjY3LDY2Nyw2NjcsMjc4LDI3OCwyNzgsMjc4LDcyMiw3MjIsNzc4LDc3OCw3NzgsNzc4LDc3OCw1ODQsNzc4LDcyMiw3MjIsNzIyLDcyMiw2NjcsNjY3LDYxMSw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw4ODksNTAwLDU1Niw1NTYsNTU2LDU1NiwyNzgsMjc4LDI3OCwyNzgsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU0OSw2MTEsNTU2LDU1Niw1NTYsNTU2LDUwMCw1NTYsNTAwLDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDcyMiw1MDAsNzIyLDUwMCw3MjIsNTAwLDcyMiw1MDAsNzIyLDYxNSw3MjIsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw3NzgsNTU2LDc3OCw1NTYsNzc4LDU1Niw3NzgsNTU2LDcyMiw1NTYsNzIyLDU1NiwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjIyLDI3OCwyNzgsNzM1LDQ0NCw1MDAsMjIyLDY2Nyw1MDAsNTAwLDU1NiwyMjIsNTU2LDIyMiw1NTYsMjkyLDU1NiwzMzQsNTU2LDIyMiw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw2MDQsNzIzLDU1Niw3NzgsNTU2LDc3OCw1NTYsNzc4LDU1NiwxZTMsOTQ0LDcyMiwzMzMsNzIyLDMzMyw3MjIsMzMzLDY2Nyw1MDAsNjY3LDUwMCw2NjcsNTAwLDY2Nyw1MDAsNjExLDI3OCw2MTEsMzc1LDYxMSwyNzgsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsOTQ0LDcyMiw2NjcsNTAwLDY2Nyw2MTEsNTAwLDYxMSw1MDAsNjExLDUwMCwyMjIsNTU2LDY2Nyw1NTYsMWUzLDg4OSw3NzgsNjExLDY2Nyw1MDAsNjExLDI3OCwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDY2NywyNzgsNzg0LDgzOCwzODQsNzc0LDg1NSw3NTIsMjIyLDY2Nyw2NjcsNTUxLDY2OCw2NjcsNjExLDcyMiw3NzgsMjc4LDY2Nyw2NjgsODMzLDcyMiw2NTAsNzc4LDcyMiw2NjcsNjE4LDYxMSw2NjcsNzk4LDY2Nyw4MzUsNzQ4LDI3OCw2NjcsNTc4LDQ0Niw1NTYsMjIyLDU0Nyw1NzgsNTc1LDUwMCw1NTcsNDQ2LDQ0MSw1NTYsNTU2LDIyMiw1MDAsNTAwLDU3Niw1MDAsNDQ4LDU1Niw2OTAsNTY5LDQ4Miw2MTcsMzk1LDU0Nyw2NDgsNTI1LDcxMyw3ODEsMjIyLDU0Nyw1NTYsNTQ3LDc4MSw2NjcsNjY3LDg2NSw1NDIsNzE5LDY2NywyNzgsMjc4LDUwMCwxMDU3LDEwMTAsODU0LDU4Myw3MjIsNjM1LDcxOSw2NjcsNjU2LDY2Nyw1NDIsNjc3LDY2Nyw5MjMsNjA0LDcxOSw3MTksNTgzLDY1Niw4MzMsNzIyLDc3OCw3MTksNjY3LDcyMiw2MTEsNjM1LDc2MCw2NjcsNzQwLDY2Nyw5MTcsOTM4LDc5Miw4ODUsNjU2LDcxOSwxMDEwLDcyMiw1NTYsNTczLDUzMSwzNjUsNTgzLDU1Niw2NjksNDU4LDU1OSw1NTksNDM4LDU4Myw2ODgsNTUyLDU1Niw1NDIsNTU2LDUwMCw0NTgsNTAwLDgyMyw1MDAsNTczLDUyMSw4MDIsODIzLDYyNSw3MTksNTIxLDUxMCw3NTAsNTQyLDU1Niw1NTYsNTU2LDM2NSw1MTAsNTAwLDIyMiwyNzgsMjIyLDkwNiw4MTIsNTU2LDQzOCw1NTksNTAwLDU1Miw3NzgsNTU2LDQ4OSw0MTEsOTQ0LDcyMiw5NDQsNzIyLDk0NCw3MjIsNjY3LDUwMCwzMzMsMzMzLDU1NiwxZTMsMWUzLDU1MiwyMjIsMjIyLDIyMiwyMjIsMzMzLDMzMywzMzMsNTU2LDU1NiwzNTAsMWUzLDFlMywxODgsMzU0LDMzMywzMzMsNTAwLDMzMywxNjcsMzY1LDU1Niw1NTYsMTA5NCw1NTYsODg1LDMyMywxMDczLDFlMyw3NjgsNjAwLDgzNCw4MzQsODM0LDgzNCwxZTMsNTAwLDFlMyw1MDAsMWUzLDUwMCw1MDAsNDk0LDYxMiw4MjMsNzEzLDU4NCw1NDksNzEzLDk3OSw3MTksMjc0LDU0OSw1NDksNTgzLDU0OSw1NDksNjA0LDU4NCw2MDQsNjA0LDcwOCw2MjUsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzI5LDYwNCw2MDQsMzU0LDM1NCwxZTMsOTkwLDk5MCw5OTAsOTkwLDQ5NCw2MDQsNjA0LDYwNCw2MDQsMzU0LDEwMjEsMTA1Miw5MTcsNzUwLDc1MCw1MzEsNjU2LDU5NCw1MTAsNTAwLDc1MCw3NTAsNTAwLDUwMCwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDIyMiwyMjIsMjk0LDI5NCwzMjQsMzI0LDMxNiwzMjgsMzk4LDI4NV0sdC5MaWJlcmF0aW9uU2Fuc1JlZ3VsYXJNYXBwaW5nPVstMSwtMSwtMSwzMiwzMywzNCwzNSwzNiwzNywzOCwzOSw0MCw0MSw0Miw0Myw0NCw0NSw0Niw0Nyw0OCw0OSw1MCw1MSw1Miw1Myw1NCw1NSw1Niw1Nyw1OCw1OSw2MCw2MSw2Miw2Myw2NCw2NSw2Niw2Nyw2OCw2OSw3MCw3MSw3Miw3Myw3NCw3NSw3Niw3Nyw3OCw3OSw4MCw4MSw4Miw4Myw4NCw4NSw4Niw4Nyw4OCw4OSw5MCw5MSw5Miw5Myw5NCw5NSw5Niw5Nyw5OCw5OSwxMDAsMTAxLDEwMiwxMDMsMTA0LDEwNSwxMDYsMTA3LDEwOCwxMDksMTEwLDExMSwxMTIsMTEzLDExNCwxMTUsMTE2LDExNywxMTgsMTE5LDEyMCwxMjEsMTIyLDEyMywxMjQsMTI1LDEyNiwxNjEsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwxNzAsMTcxLDE3MiwxNzQsMTc1LDE3NiwxNzcsMTc4LDE3OSwxODAsMTgxLDE4MiwxODMsMTg0LDE4NSwxODYsMTg3LDE4OCwxODksMTkwLDE5MSwxOTIsMTkzLDE5NCwxOTUsMTk2LDE5NywxOTgsMTk5LDIwMCwyMDEsMjAyLDIwMywyMDQsMjA1LDIwNiwyMDcsMjA4LDIwOSwyMTAsMjExLDIxMiwyMTMsMjE0LDIxNSwyMTYsMjE3LDIxOCwyMTksMjIwLDIyMSwyMjIsMjIzLDIyNCwyMjUsMjI2LDIyNywyMjgsMjI5LDIzMCwyMzEsMjMyLDIzMywyMzQsMjM1LDIzNiwyMzcsMjM4LDIzOSwyNDAsMjQxLDI0MiwyNDMsMjQ0LDI0NSwyNDYsMjQ3LDI0OCwyNDksMjUwLDI1MSwyNTIsMjUzLDI1NCwyNTUsMjU2LDI1NywyNTgsMjU5LDI2MCwyNjEsMjYyLDI2MywyNjQsMjY1LDI2NiwyNjcsMjY4LDI2OSwyNzAsMjcxLDI3MiwyNzMsMjc0LDI3NSwyNzYsMjc3LDI3OCwyNzksMjgwLDI4MSwyODIsMjgzLDI4NCwyODUsMjg2LDI4NywyODgsMjg5LDI5MCwyOTEsMjkyLDI5MywyOTQsMjk1LDI5NiwyOTcsMjk4LDI5OSwzMDAsMzAxLDMwMiwzMDMsMzA0LDMwNSwzMDYsMzA3LDMwOCwzMDksMzEwLDMxMSwzMTIsMzEzLDMxNCwzMTUsMzE2LDMxNywzMTgsMzE5LDMyMCwzMjEsMzIyLDMyMywzMjQsMzI1LDMyNiwzMjcsMzI4LDMyOSwzMzAsMzMxLDMzMiwzMzMsMzM0LDMzNSwzMzYsMzM3LDMzOCwzMzksMzQwLDM0MSwzNDIsMzQzLDM0NCwzNDUsMzQ2LDM0NywzNDgsMzQ5LDM1MCwzNTEsMzUyLDM1MywzNTQsMzU1LDM1NiwzNTcsMzU4LDM1OSwzNjAsMzYxLDM2MiwzNjMsMzY0LDM2NSwzNjYsMzY3LDM2OCwzNjksMzcwLDM3MSwzNzIsMzczLDM3NCwzNzUsMzc2LDM3NywzNzgsMzc5LDM4MCwzODEsMzgyLDM4Myw0MDIsNTA2LDUwNyw1MDgsNTA5LDUxMCw1MTEsNTM2LDUzNyw1MzgsNTM5LDcxMCw3MTEsNzEzLDcyOCw3MjksNzMwLDczMSw3MzIsNzMzLDkwMCw5MDEsOTAyLDkwMyw5MDQsOTA1LDkwNiw5MDgsOTEwLDkxMSw5MTIsOTEzLDkxNCw5MTUsOTE2LDkxNyw5MTgsOTE5LDkyMCw5MjEsOTIyLDkyMyw5MjQsOTI1LDkyNiw5MjcsOTI4LDkyOSw5MzEsOTMyLDkzMyw5MzQsOTM1LDkzNiw5MzcsOTM4LDkzOSw5NDAsOTQxLDk0Miw5NDMsOTQ0LDk0NSw5NDYsOTQ3LDk0OCw5NDksOTUwLDk1MSw5NTIsOTUzLDk1NCw5NTUsOTU2LDk1Nyw5NTgsOTU5LDk2MCw5NjEsOTYyLDk2Myw5NjQsOTY1LDk2Niw5NjcsOTY4LDk2OSw5NzAsOTcxLDk3Miw5NzMsOTc0LDEwMjQsMTAyNSwxMDI2LDEwMjcsMTAyOCwxMDI5LDEwMzAsMTAzMSwxMDMyLDEwMzMsMTAzNCwxMDM1LDEwMzYsMTAzNywxMDM4LDEwMzksMTA0MCwxMDQxLDEwNDIsMTA0MywxMDQ0LDEwNDUsMTA0NiwxMDQ3LDEwNDgsMTA0OSwxMDUwLDEwNTEsMTA1MiwxMDUzLDEwNTQsMTA1NSwxMDU2LDEwNTcsMTA1OCwxMDU5LDEwNjAsMTA2MSwxMDYyLDEwNjMsMTA2NCwxMDY1LDEwNjYsMTA2NywxMDY4LDEwNjksMTA3MCwxMDcxLDEwNzIsMTA3MywxMDc0LDEwNzUsMTA3NiwxMDc3LDEwNzgsMTA3OSwxMDgwLDEwODEsMTA4MiwxMDgzLDEwODQsMTA4NSwxMDg2LDEwODcsMTA4OCwxMDg5LDEwOTAsMTA5MSwxMDkyLDEwOTMsMTA5NCwxMDk1LDEwOTYsMTA5NywxMDk4LDEwOTksMTEwMCwxMTAxLDExMDIsMTEwMywxMTA0LDExMDUsMTEwNiwxMTA3LDExMDgsMTEwOSwxMTEwLDExMTEsMTExMiwxMTEzLDExMTQsMTExNSwxMTE2LDExMTcsMTExOCwxMTE5LDExMzgsMTEzOSwxMTY4LDExNjksNzgwOCw3ODA5LDc4MTAsNzgxMSw3ODEyLDc4MTMsNzkyMiw3OTIzLDgyMDgsODIwOSw4MjExLDgyMTIsODIxMyw4MjE1LDgyMTYsODIxNyw4MjE4LDgyMTksODIyMCw4MjIxLDgyMjIsODIyNCw4MjI1LDgyMjYsODIzMCw4MjQwLDgyNDIsODI0Myw4MjQ5LDgyNTAsODI1Miw4MjU0LDgyNjAsODMxOSw4MzU1LDgzNTYsODM1OSw4MzY0LDg0NTMsODQ2Nyw4NDcwLDg0ODIsODQ4Niw4NDk0LDg1MzksODU0MCw4NTQxLDg1NDIsODU5Miw4NTkzLDg1OTQsODU5NSw4NTk2LDg1OTcsODYxNiw4NzA2LDg3MTAsODcxOSw4NzIxLDg3MjIsODczMCw4NzM0LDg3MzUsODc0NSw4NzQ3LDg3NzYsODgwMCw4ODAxLDg4MDQsODgwNSw4OTYyLDg5NzYsODk5Miw4OTkzLDk0NzIsOTQ3NCw5NDg0LDk0ODgsOTQ5Miw5NDk2LDk1MDAsOTUwOCw5NTE2LDk1MjQsOTUzMiw5NTUyLDk1NTMsOTU1NCw5NTU1LDk1NTYsOTU1Nyw5NTU4LDk1NTksOTU2MCw5NTYxLDk1NjIsOTU2Myw5NTY0LDk1NjUsOTU2Niw5NTY3LDk1NjgsOTU2OSw5NTcwLDk1NzEsOTU3Miw5NTczLDk1NzQsOTU3NSw5NTc2LDk1NzcsOTU3OCw5NTc5LDk1ODAsOTYwMCw5NjA0LDk2MDgsOTYxMiw5NjE2LDk2MTcsOTYxOCw5NjE5LDk2MzIsOTYzMyw5NjQyLDk2NDMsOTY0NCw5NjUwLDk2NTgsOTY2MCw5NjY4LDk2NzQsOTY3NSw5Njc5LDk2ODgsOTY4OSw5NzAyLDk3ODYsOTc4Nyw5Nzg4LDk3OTIsOTc5NCw5ODI0LDk4MjcsOTgyOSw5ODMwLDk4MzQsOTgzNSw5ODM2LDYxNDQxLDYxNDQyLDYxNDQ1LC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xXX0sKGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5NeXJpYWRQcm9SZWd1bGFyTWV0cmljcz10Lk15cmlhZFByb1JlZ3VsYXJGYWN0b3JzPXQuTXlyaWFkUHJvSXRhbGljTWV0cmljcz10Lk15cmlhZFByb0l0YWxpY0ZhY3RvcnM9dC5NeXJpYWRQcm9Cb2xkTWV0cmljcz10Lk15cmlhZFByb0JvbGRJdGFsaWNNZXRyaWNzPXQuTXlyaWFkUHJvQm9sZEl0YWxpY0ZhY3RvcnM9dC5NeXJpYWRQcm9Cb2xkRmFjdG9ycz12b2lkIDAsdC5NeXJpYWRQcm9Cb2xkRmFjdG9ycz1bMS4zNjg5OCwxLDEsLjcyNzA2LC44MDQ3OSwuODM3MzQsLjk4ODk0LC45OTc5MywuOTg5NywuOTM4ODQsLjg2MjA5LC45NDI5MiwuOTQyOTIsMS4xNjY2MSwxLjAyMDU4LC45MzU4MiwuOTY2OTQsLjkzNTgyLDEuMTkxMzcsLjk5NzkzLC45OTc5MywuOTk3OTMsLjk5NzkzLC45OTc5MywuOTk3OTMsLjk5NzkzLC45OTc5MywuOTk3OTMsLjk5NzkzLC43ODA3NiwuNzgwNzYsMS4wMjA1OCwxLjAyMDU4LDEuMDIwNTgsLjcyODUxLC43ODk2NiwuOTA4MzgsLjgzNjM3LC44MjM5MSwuOTYzNzYsLjgwMDYxLC44NjI3NSwuODc2OCwuOTU0MDcsMS4wMjU4LC43MzkwMSwuODUwMjIsLjgzNjU1LDEuMDE1NiwuOTU1NDYsLjkyMTc5LC44NzEwNywuOTIxNzksLjgyMTE0LC44MDk2LC44OTcxMywuOTQ0MzgsLjk1MzUzLC45NDA4MywuOTE5MDUsLjkwNDA2LC45NDQ2LC45NDI5MiwxLjE4Nzc3LC45NDI5MiwxLjAyMDU4LC44OTkwMywuOTAwODgsLjk0OTM4LC45Nzg5OCwuODEwOTMsLjk3NTcxLC45NDkzOCwxLjAyNCwuOTU3NywuOTU5MzMsLjk4NjIxLDEuMDQ3NCwuOTc0NTUsLjk4OTgxLC45NjcyLC45NTkzMywuOTQ0NiwuOTc4OTgsLjk3NDA3LC45NzY0NiwuNzgwMzYsMS4xMDIwOCwuOTU0NDIsLjk1Mjk4LC45NzU3OSwuOTMzMiwuOTQwMzksLjkzOCwuODA2ODcsMS4wMTE0OSwuODA2ODcsMS4wMjA1OCwuODA0NzksLjk5NzkzLC45OTc5MywuOTk3OTMsLjk5NzkzLDEuMDExNDksMS4wMDg3MiwuOTAwODgsLjkxODgyLDEuMDIxMywuODM2MSwxLjAyMDU4LC42MjI5NSwuNTQzMjQsLjg5MDIyLDEuMDg1OTUsMSwxLC45MDA4OCwxLC45NzQ1NSwuOTM1ODIsLjkwMDg4LDEsMS4wNTY4NiwuODM2MSwuOTk2NDIsLjk5NjQyLC45OTY0MiwuNzI4NTEsLjkwODM4LC45MDgzOCwuOTA4MzgsLjkwODM4LC45MDgzOCwuOTA4MzgsLjg2OCwuODIzOTEsLjgwMDYxLC44MDA2MSwuODAwNjEsLjgwMDYxLDEuMDI1OCwxLjAyNTgsMS4wMjU4LDEuMDI1OCwuOTc0ODQsLjk1NTQ2LC45MjE3OSwuOTIxNzksLjkyMTc5LC45MjE3OSwuOTIxNzksMS4wMjA1OCwuOTIxNzksLjk0NDM4LC45NDQzOCwuOTQ0MzgsLjk0NDM4LC45MDQwNiwuODY5NTgsLjk4MjI1LC45NDkzOCwuOTQ5MzgsLjk0OTM4LC45NDkzOCwuOTQ5MzgsLjk0OTM4LC45MDMxLC44MTA5MywuOTQ5MzgsLjk0OTM4LC45NDkzOCwuOTQ5MzgsLjk4NjIxLC45ODYyMSwuOTg2MjEsLjk4NjIxLC45Mzk2OSwuOTU5MzMsLjk0NDYsLjk0NDYsLjk0NDYsLjk0NDYsLjk0NDYsMS4wODU5NSwuOTQ0NiwuOTU0NDIsLjk1NDQyLC45NTQ0MiwuOTU0NDIsLjk0MDM5LC45Nzg5OCwuOTQwMzksLjkwODM4LC45NDkzOCwuOTA4MzgsLjk0OTM4LC45MDgzOCwuOTQ5MzgsLjgyMzkxLC44MTA5MywuODIzOTEsLjgxMDkzLC44MjM5MSwuODEwOTMsLjgyMzkxLC44MTA5MywuOTYzNzYsLjg0MzEzLC45NzQ4NCwuOTc1NzEsLjgwMDYxLC45NDkzOCwuODAwNjEsLjk0OTM4LC44MDA2MSwuOTQ5MzgsLjgwMDYxLC45NDkzOCwuODAwNjEsLjk0OTM4LC44NzY4LC45NTc3LC44NzY4LC45NTc3LC44NzY4LC45NTc3LDEsMSwuOTU0MDcsLjk1OTMzLC45NzA2OSwuOTU5MzMsMS4wMjU4LC45ODYyMSwxLjAyNTgsLjk4NjIxLDEuMDI1OCwuOTg2MjEsMS4wMjU4LC45ODYyMSwxLjAyNTgsLjk4NjIxLC44ODcsMS4wMTU5MSwuNzM5MDEsMS4wNDc0LDEsMSwuOTc0NTUsLjgzNjU1LC45ODk4MSwxLDEsLjgzNjU1LC43Mzk3NywuODM2NTUsLjczOTAzLC44NDYzOCwxLjAzMywuOTU1NDYsLjk1OTMzLDEsMSwuOTU1NDYsLjk1OTMzLC44MjcxLC45NTQxNywuOTU5MzMsLjkyMTc5LC45NDQ2LC45MjE3OSwuOTQ0NiwuOTIxNzksLjk0NDYsLjkzNiwuOTE5NjQsLjgyMTE0LC45NzY0NiwxLDEsLjgyMTE0LC45NzY0NiwuODA5NiwuNzgwMzYsLjgwOTYsLjc4MDM2LDEsMSwuODA5NiwuNzgwMzYsMSwxLC44OTcxMywuNzc0NTIsLjg5NzEzLDEuMTAyMDgsLjk0NDM4LC45NTQ0MiwuOTQ0MzgsLjk1NDQyLC45NDQzOCwuOTU0NDIsLjk0NDM4LC45NTQ0MiwuOTQ0MzgsLjk1NDQyLC45NDQzOCwuOTU0NDIsLjk0MDgzLC45NzU3OSwuOTA0MDYsLjk0MDM5LC45MDQwNiwuOTQ0NiwuOTM4LC45NDQ2LC45MzgsLjk0NDYsLjkzOCwxLC45OTc5MywuOTA4MzgsLjk0OTM4LC44NjgsLjkwMzEsLjkyMTc5LC45NDQ2LDEsMSwuODk3MTMsMS4xMDIwOCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTA5ODksLjkzNTgsLjkxOTQ1LC44MzE4MSwuNzUyNjEsLjg3OTkyLC44Mjk3NiwuOTYwMzQsLjgzNjg5LC45NzI2OCwxLjAwNzgsLjkwODM4LC44MzYzNywuODAxOSwuOTAxNTcsLjgwMDYxLC45NDQ2LC45NTQwNywuOTI0MzYsMS4wMjU4LC44NTAyMiwuOTcxNTMsMS4wMTU2LC45NTU0NiwuODkxOTIsLjkyMTc5LC45MjM2MSwuODcxMDcsLjk2MzE4LC44OTcxMywuOTM3MDQsLjk1NjM4LC45MTkwNSwuOTE3MDksLjkyNzk2LDEuMDI1OCwuOTM3MDQsLjk0ODM2LDEuMDM3MywuOTU5MzMsMS4wMDc4LC45NTg3MSwuOTQ4MzYsLjk2MTc0LC45MjYwMSwuOTQ5OCwuOTg2MDcsLjk1Nzc2LC45NTkzMywxLjA1NDUzLDEuMDA3OCwuOTgyNzUsLjkzMTQsLjk1NjE3LC45MTcwMSwxLjA1OTkzLC45NDQ2LC43ODM2NywuOTU1MywxLC44NjgzMiwxLjAxMjgsLjk1ODcxLC45OTM5NCwuODc1NDgsLjk2MzYxLC44Njc3NCwxLjAwNzgsLjk1ODcxLC45NDQ2LC45NTg3MSwuODY3NzQsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTQwODMsLjk3NTc5LC45NDA4MywuOTc1NzksLjk0MDgzLC45NzU3OSwuOTA0MDYsLjk0MDM5LC45NjY5NCwxLC44OTkwMywxLDEsMSwuOTM1ODIsLjkzNTgyLC45MzU4MiwxLC45MDgsLjkwOCwuOTE4LC45NDIxOSwuOTQyMTksLjk2NTQ0LDEsMS4yODUsMSwxLC44MTA3OSwuODEwNzksMSwxLC43NDg1NCwxLDEsMSwxLC45OTc5MywxLDEsMSwuNjUsMSwxLjM2MTQ1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjE3MTczLDEsLjgwNTM1LC43NjE2OSwxLjAyMDU4LDEuMDczMiwxLjA1NDg2LDEsMSwxLjMwNjkyLDEuMDg1OTUsMS4wODU5NSwxLDEuMDg1OTUsMS4wODU5NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMTYxNjEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sdC5NeXJpYWRQcm9Cb2xkTWV0cmljcz17bGluZUhlaWdodDoxLjIsbGluZUdhcDouMn0sdC5NeXJpYWRQcm9Cb2xkSXRhbGljRmFjdG9ycz1bMS4zNjg5OCwxLDEsLjY2MjI3LC44MDc3OSwuODE2MjUsLjk3Mjc2LC45NzI3NiwuOTc3MzMsLjkyMjIyLC44MzI2NiwuOTQyOTIsLjk0MjkyLDEuMTYxNDgsMS4wMjA1OCwuOTM1ODIsLjk2Njk0LC45MzU4MiwxLjE3MzM3LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC45NzI3NiwuNzgwNzYsLjc4MDc2LDEuMDIwNTgsMS4wMjA1OCwxLjAyMDU4LC43MTU0MSwuNzY4MTMsLjg1NTc2LC44MDU5MSwuODA3MjksLjk0Mjk5LC43NzUxMiwuODM2NTUsLjg2NTIzLC45MjIyMiwuOTg2MjEsLjcxNzQzLC44MTY5OCwuNzk3MjYsLjk4NTU4LC45MjIyMiwuOTA2MzcsLjgzODA5LC45MDYzNywuODA3MjksLjc2NDYzLC44NjI3NSwuOTA2OTksLjkxNjA1LC45MTU0LC44NTMwOCwuODU0NTgsLjkwNTMxLC45NDI5MiwxLjIxMjk2LC45NDI5MiwxLjAyMDU4LC44OTkwMywxLjE4NjE2LC45OTYxMywuOTE2NzcsLjc4MjE2LC45MTY3NywuOTAwODMsLjk4Nzk2LC45MTM1LC45MjE2OCwuOTUzODEsLjk4OTgxLC45NTI5OCwuOTUzODEsLjkzNDU5LC45MjE2OCwuOTE1MTMsLjkyMDA0LC45MTY3NywuOTUwNzcsLjc0OCwxLjA0NTAyLC45MTY3NywuOTIwNjEsLjk0MjM2LC44OTU0NCwuODkzNjQsLjksLjgwNjg3LC44NTc4LC44MDY4NywxLjAyMDU4LC44MDc3OSwuOTcyNzYsLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjg1NzgsLjk5OTczLDEuMTg2MTYsLjkxMzM5LDEuMDgwNzQsLjgyODkxLDEuMDIwNTgsLjU1NTA5LC43MTUyNiwuODkwMjIsMS4wODU5NSwxLDEsMS4xODYxNiwxLC45NjczNiwuOTM1ODIsMS4xODYxNiwxLDEuMDQ4NjQsLjgyNzExLC45OTA0MywuOTkwNDMsLjk5MDQzLC43MTU0MSwuODU1NzYsLjg1NTc2LC44NTU3NiwuODU1NzYsLjg1NTc2LC44NTU3NiwuODQ1LC44MDcyOSwuNzc1MTIsLjc3NTEyLC43NzUxMiwuNzc1MTIsLjk4NjIxLC45ODYyMSwuOTg2MjEsLjk4NjIxLC45NTk2MSwuOTIyMjIsLjkwNjM3LC45MDYzNywuOTA2MzcsLjkwNjM3LC45MDYzNywxLjAyMDU4LC45MDI1MSwuOTA2OTksLjkwNjk5LC45MDY5OSwuOTA2OTksLjg1NDU4LC44MzY1OSwuOTQ5NTEsLjk5NjEzLC45OTYxMywuOTk2MTMsLjk5NjEzLC45OTYxMywuOTk2MTMsLjg1ODExLC43ODIxNiwuOTAwODMsLjkwMDgzLC45MDA4MywuOTAwODMsLjk1MzgxLC45NTM4MSwuOTUzODEsLjk1MzgxLC45MTM1LC45MjE2OCwuOTE1MTMsLjkxNTEzLC45MTUxMywuOTE1MTMsLjkxNTEzLDEuMDg1OTUsLjkxNjc3LC45MTY3NywuOTE2NzcsLjkxNjc3LC45MTY3NywuODkzNjQsLjkyMzMyLC44OTM2NCwuODU1NzYsLjk5NjEzLC44NTU3NiwuOTk2MTMsLjg1NTc2LC45OTYxMywuODA3MjksLjc4MjE2LC44MDcyOSwuNzgyMTYsLjgwNzI5LC43ODIxNiwuODA3MjksLjc4MjE2LC45NDI5OSwuNzY3ODMsLjk1OTYxLC45MTY3NywuNzc1MTIsLjkwMDgzLC43NzUxMiwuOTAwODMsLjc3NTEyLC45MDA4MywuNzc1MTIsLjkwMDgzLC43NzUxMiwuOTAwODMsLjg2NTIzLC45MTM1LC44NjUyMywuOTEzNSwuODY1MjMsLjkxMzUsMSwxLC45MjIyMiwuOTIxNjgsLjkyMjIyLC45MjE2OCwuOTg2MjEsLjk1MzgxLC45ODYyMSwuOTUzODEsLjk4NjIxLC45NTM4MSwuOTg2MjEsLjk1MzgxLC45ODYyMSwuOTUzODEsLjg2MDM2LC45NzA5NiwuNzE3NDMsLjk4OTgxLDEsMSwuOTUyOTgsLjc5NzI2LC45NTM4MSwxLDEsLjc5NzI2LC42ODk0LC43OTcyNiwuNzQzMjEsLjgxNjkxLDEuMDAwNiwuOTIyMjIsLjkyMTY4LDEsMSwuOTIyMjIsLjkyMTY4LC43OTQ2NCwuOTIwOTgsLjkyMTY4LC45MDYzNywuOTE1MTMsLjkwNjM3LC45MTUxMywuOTA2MzcsLjkxNTEzLC45MDksLjg3NTE0LC44MDcyOSwuOTUwNzcsMSwxLC44MDcyOSwuOTUwNzcsLjc2NDYzLC43NDgsLjc2NDYzLC43NDgsMSwxLC43NjQ2MywuNzQ4LDEsMSwuODYyNzUsLjcyNjUxLC44NjI3NSwxLjA0NTAyLC45MDY5OSwuOTE2NzcsLjkwNjk5LC45MTY3NywuOTA2OTksLjkxNjc3LC45MDY5OSwuOTE2NzcsLjkwNjk5LC45MTY3NywuOTA2OTksLjkxNjc3LC45MTU0LC45NDIzNiwuODU0NTgsLjg5MzY0LC44NTQ1OCwuOTA1MzEsLjksLjkwNTMxLC45LC45MDUzMSwuOSwxLC45NzI3NiwuODU1NzYsLjk5NjEzLC44NDUsLjg1ODExLC45MDI1MSwuOTE2NzcsMSwxLC44NjI3NSwxLjA0NTAyLDEuMTg2MTYsMS4xODYxNiwxLjE4NjE2LDEuMTg2MTYsMS4xODYxNiwxLjE4NjE2LDEuMTg2MTYsMS4xODYxNiwxLjE4NjE2LDEuMDA4OTksMS4zMDYyOCwuODU1NzYsLjgwMTc4LC42Njg2MiwuNzkyNywuNjkzMjMsLjg4MTI3LC43MjQ1OSwuODk3MTEsLjk1MzgxLC44NTU3NiwuODA1OTEsLjc4MDUsLjk0NzI5LC43NzUxMiwuOTA1MzEsLjkyMjIyLC45MDYzNywuOTg2MjEsLjgxNjk4LC45MjY1NSwuOTg1NTgsLjkyMjIyLC44NTM1OSwuOTA2MzcsLjkwOTc2LC44MzgwOSwuOTQ1MjMsLjg2Mjc1LC44MzUwOSwuOTMxNTcsLjg1MzA4LC44MzM5MiwuOTIzNDYsLjk4NjIxLC44MzUwOSwuOTI4ODYsLjkxMzI0LC45MjE2OCwuOTUzODEsLjkwNjQ2LC45Mjg4NiwuOTA1NTcsLjg2ODQ3LC45MDI3NiwuOTEzMjQsLjg2ODQyLC45MjE2OCwuOTk1MzEsLjk1MzgxLC45MjI0LC44NTQwOCwuOTI2OTksLjg2ODQ3LDEuMDA1MSwuOTE1MTMsLjgwNDg3LC45MzQ4MSwxLC44ODE1OSwxLjA1MjE0LC45MDY0NiwuOTczNTUsLjgxNTM5LC44OTM5OCwuODU5MjMsLjk1MzgxLC45MDY0NiwuOTE1MTMsLjkwNjQ2LC44NTkyMywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45MTU0LC45NDIzNiwuOTE1NCwuOTQyMzYsLjkxNTQsLjk0MjM2LC44NTQ1OCwuODkzNjQsLjk2Njk0LDEsLjg5OTAzLDEsMSwxLC45MTc4MiwuOTE3ODIsLjkxNzgyLDEsLjg5NiwuODk2LC44OTYsLjkzMzIsLjkzMzIsLjk1OTczLDEsMS4yNiwxLDEsLjgwNDc5LC44MDE3OCwxLDEsLjg1NjMzLDEsMSwxLDEsLjk3Mjc2LDEsMSwxLC42OTgsMSwxLjM2MTQ1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjE0NTQyLDEsLjc5MTk5LC43ODY5NCwxLjAyMDU4LDEuMDM0OTMsMS4wNTQ4NiwxLDEsMS4yMzAyNiwxLjA4NTk1LDEuMDg1OTUsMSwxLjA4NTk1LDEuMDg1OTUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjIwMDA2LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLHQuTXlyaWFkUHJvQm9sZEl0YWxpY01ldHJpY3M9e2xpbmVIZWlnaHQ6MS4yLGxpbmVHYXA6LjJ9LHQuTXlyaWFkUHJvSXRhbGljRmFjdG9ycz1bMS4zNjg5OCwxLDEsLjY1NTA3LC44NDk0MywuODU2MzksLjg4NDY1LC44ODQ2NSwuODY5MzYsLjg4MzA3LC44Njk0OCwuODUyODMsLjg1MjgzLDEuMDYzODMsMS4wMjA1OCwuNzU5NDUsLjkyMTksLjc1OTQ1LDEuMTczMzcsLjg4NDY1LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44ODQ2NSwuODg0NjUsLjg4NDY1LC43NTk0NSwuNzU5NDUsMS4wMjA1OCwxLjAyMDU4LDEuMDIwNTgsLjY5MDQ2LC43MDkyNiwuODUxNTgsLjc3ODEyLC43Njg1MiwuODk1OTEsLjcwNDY2LC43NjEyNSwuODAwOTQsLjg2ODIyLC44Mzg2NCwuNzI4LC43NzIxMiwuNzk0NzUsLjkzNjM3LC44NzUxNCwuODU4OCwuNzYwMTMsLjg1ODgsLjcyNDIxLC42OTg2NiwuNzc1OTgsLjg1OTkxLC44MDgxMSwuODc4MzIsLjc4MTEyLC43NzUxMiwuODU2MiwxLjAyMjIsMS4xODQxNywxLjAyMjIsMS4yNzAxNCwuODk5MDMsMS4xNTAxMiwuOTM4NTksLjk0Mzk5LC44NDYsLjk0Mzk5LC44MTQ1MywxLjAxODYsLjk0MjE5LC45NjAxNywxLjAzMDc1LDEuMDIxNzUsLjkxMiwxLjAzMDc1LC45Njk5OCwuOTYwMTcsLjkzODU5LC45NDM5OSwuOTQzOTksLjk1NDkzLC43NDYsMS4xMjY1OCwuOTQ1NzgsLjkxLC45NzksLjg4MiwuODgyLC44MywuODUwMzQsLjgzNTM3LC44NTAzNCwxLjAyMDU4LC43MDg2OSwuODg0NjUsLjg4NDY1LC44ODQ2NSwuODg0NjUsLjgzNTM3LC45MDA4MywxLjE1MDEyLC45MTYxLC45NDU2NSwuNzM1NDEsMS4wMjA1OCwuNTM2MDksLjY5MzUzLC43OTUxOSwxLjA4NTk1LDEsMSwxLjE1MDEyLDEsLjkxOTc0LC43NTk0NSwxLjE1MDEyLDEsLjk0NDYsLjczMzYxLC45MDA1LC45MDA1LC45MDA1LC42Mjg2NCwuODUxNTgsLjg1MTU4LC44NTE1OCwuODUxNTgsLjg1MTU4LC44NTE1OCwuNzczLC43Njg1MiwuNzA0NjYsLjcwNDY2LC43MDQ2NiwuNzA0NjYsLjgzODY0LC44Mzg2NCwuODM4NjQsLjgzODY0LC45MDU2MSwuODc1MTQsLjg1ODgsLjg1ODgsLjg1ODgsLjg1ODgsLjg1ODgsMS4wMjA1OCwuODU3NTEsLjg1OTkxLC44NTk5MSwuODU5OTEsLjg1OTkxLC43NzUxMiwuNzYwMTMsLjg4MDc1LC45Mzg1OSwuOTM4NTksLjkzODU5LC45Mzg1OSwuOTM4NTksLjkzODU5LC44MDc1LC44NDYsLjgxNDUzLC44MTQ1MywuODE0NTMsLjgxNDUzLC44MjQyNCwuODI0MjQsLjgyNDI0LC44MjQyNCwuOTI3OCwuOTYwMTcsLjkzODU5LC45Mzg1OSwuOTM4NTksLjkzODU5LC45Mzg1OSwxLjA4NTk1LC44NTYyLC45NDU3OCwuOTQ1NzgsLjk0NTc4LC45NDU3OCwuODgyLC45NDU3OCwuODgyLC44NTE1OCwuOTM4NTksLjg1MTU4LC45Mzg1OSwuODUxNTgsLjkzODU5LC43Njg1MiwuODQ2LC43Njg1MiwuODQ2LC43Njg1MiwuODQ2LC43Njg1MiwuODQ2LC44OTU5MSwuODU0NCwuOTA1NjEsLjk0Mzk5LC43MDQ2NiwuODE0NTMsLjcwNDY2LC44MTQ1MywuNzA0NjYsLjgxNDUzLC43MDQ2NiwuODE0NTMsLjcwNDY2LC44MTQ1MywuODAwOTQsLjk0MjE5LC44MDA5NCwuOTQyMTksLjgwMDk0LC45NDIxOSwxLDEsLjg2ODIyLC45NjAxNywuODY4MjIsLjk2MDE3LC44Mzg2NCwuODI0MjQsLjgzODY0LC44MjQyNCwuODM4NjQsLjgyNDI0LC44Mzg2NCwxLjAzMDc1LC44Mzg2NCwuODI0MjQsLjgxNDAyLDEuMDI3MzgsLjcyOCwxLjAyMTc1LDEsMSwuOTEyLC43OTQ3NSwxLjAzMDc1LDEsMSwuNzk0NzUsLjgzOTExLC43OTQ3NSwuNjYyNjYsLjgwNTUzLDEuMDY2NzYsLjg3NTE0LC45NjAxNywxLDEsLjg3NTE0LC45NjAxNywuODY4NjUsLjg3Mzk2LC45NjAxNywuODU4OCwuOTM4NTksLjg1ODgsLjkzODU5LC44NTg4LC45Mzg1OSwuODY3LC44NDc1OSwuNzI0MjEsLjk1NDkzLDEsMSwuNzI0MjEsLjk1NDkzLC42OTg2NiwuNzQ2LC42OTg2NiwuNzQ2LDEsMSwuNjk4NjYsLjc0NiwxLDEsLjc3NTk4LC44ODQxNywuNzc1OTgsMS4xMjY1OCwuODU5OTEsLjk0NTc4LC44NTk5MSwuOTQ1NzgsLjg1OTkxLC45NDU3OCwuODU5OTEsLjk0NTc4LC44NTk5MSwuOTQ1NzgsLjg1OTkxLC45NDU3OCwuODc4MzIsLjk3OSwuNzc1MTIsLjg4MiwuNzc1MTIsLjg1NjIsLjgzLC44NTYyLC44MywuODU2MiwuODMsMSwuODg0NjUsLjg1MTU4LC45Mzg1OSwuNzczLC44MDc1LC44NTc1MSwuODU2MiwxLDEsLjc3NTk4LDEuMTI2NTgsMS4xNTAxMiwxLjE1MDEyLDEuMTUwMTIsMS4xNTAxMiwxLjE1MDEyLDEuMTUzMTMsMS4xNTAxMiwxLjE1MDEyLDEuMTUwMTIsMS4wODEwNiwxLjAzOTAxLC44NTE1OCwuNzcwMjUsLjYyMjY0LC43NjQ2LC42NTM1MSwuODYwMjYsLjY5NDYxLC44OTk0NywxLjAzMDc1LC44NTE1OCwuNzc4MTIsLjc2NDQ5LC44ODgzNiwuNzA0NjYsLjg1NjIsLjg2ODIyLC44NTg4LC44Mzg2NCwuNzcyMTIsLjg1MzA4LC45MzYzNywuODc1MTQsLjgyMzUyLC44NTg4LC44NTcwMSwuNzYwMTMsLjg5MDU4LC43NzU5OCwuODE1NiwuODI1NjUsLjc4MTEyLC43Nzg5OSwuODkzODYsLjgzODY0LC44MTU2LC45NDg2LC45MjM4OCwuOTYxODYsMS4wMzA3NSwuOTExMjMsLjk0ODYsLjkzMjk4LC44NzgsLjkzOTQyLC45MjM4OCwuODQ1OTYsLjk2MTg2LC45NTExOSwxLjAzMDc1LC45MjIsLjg4Nzg3LC45NTgyOSwuODgsLjkzNTU5LC45Mzg1OSwuNzg4MTUsLjkzNzU4LDEsLjg5MjE3LDEuMDM3MzcsLjkxMTIzLC45Mzk2OSwuNzc0ODcsLjg1NzY5LC44Njc5OSwxLjAzMDc1LC45MTEyMywuOTM4NTksLjkxMTIzLC44Njc5OSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC44NzgzMiwuOTc5LC44NzgzMiwuOTc5LC44NzgzMiwuOTc5LC43NzUxMiwuODgyLC45MjE5LDEsLjg5OTAzLDEsMSwxLC44NzMyMSwuODczMjEsLjg3MzIxLDEsMS4wMjcsMS4wMjcsMS4wMjcsLjg2ODQ3LC44Njg0NywuNzkxMjEsMSwxLjEyNCwxLDEsLjczNTcyLC43MzU3MiwxLDEsLjg1MDM0LDEsMSwxLDEsLjg4NDY1LDEsMSwxLC42NjksMSwxLjM2MTQ1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjA0ODI4LDEsLjc0OTQ4LC43NTE4NywxLjAyMDU4LC45ODM5MSwxLjAyMTE5LDEsMSwxLjA2MjMzLDEuMDg1OTUsMS4wODU5NSwxLDEuMDg1OTUsMS4wODU5NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDUyMzMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sdC5NeXJpYWRQcm9JdGFsaWNNZXRyaWNzPXtsaW5lSGVpZ2h0OjEuMixsaW5lR2FwOi4yfSx0Lk15cmlhZFByb1JlZ3VsYXJGYWN0b3JzPVsxLjM2ODk4LDEsMSwuNzYzMDUsLjgyNzg0LC45NDkzNSwuODkzNjQsLjkyMjQxLC44OTA3MywuOTA3MDYsLjk4NDcyLC44NTI4MywuODUyODMsMS4wNjY0LDEuMDIwNTgsLjc0NTA1LC45MjE5LC43NDUwNSwxLjIzNDU2LC45MjI0MSwuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMjQxLC45MjI0MSwuNzQ1MDUsLjc0NTA1LDEuMDIwNTgsMS4wMjA1OCwxLjAyMDU4LC43MzAwMiwuNzI2MDEsLjkxNzU1LC44MTI2LC44MDMxNCwuOTIyMjIsLjczNzY0LC43OTcyNiwuODMwNTEsLjkwMjg0LC44NjAyMywuNzQsLjgxMjYsLjg0ODY5LC45NjUxOCwuOTExMTUsLjg4NTgsLjc5NzYxLC44ODU4LC43NDQ5OCwuNzM5MTQsLjgxMzYzLC44OTU5MSwuODM2NTksLjg5NjMzLC44NTYwOCwuODExMSwuOTA1MzEsMS4wMjIyLDEuMjI3MzYsMS4wMjIyLDEuMjcwMTQsLjg5OTAzLC45MDA4OCwuODY2NjcsMS4wMjMxLC44OTYsMS4wMTQxMSwuOTAwODMsMS4wNTA5OSwxLjAwNTEyLC45OTc5MywxLjA1MzI2LDEuMDkzNzcsLjkzOCwxLjA2MjI2LDEuMDAxMTksLjk5NzkzLC45ODcxNCwxLjAyMzEsMS4wMTIzMSwuOTgxOTYsLjc5MiwxLjE5MTM3LC45OTA3NCwuOTYyLDEuMDE5MTUsLjkyNiwuOTQyLC44NTYsLjg1MDM0LC45MjAwNiwuODUwMzQsMS4wMjA1OCwuNjkwNjcsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMjQxLC45MjAwNiwuOTMzMiwuOTAwODgsLjkxODgyLC45MzQ4NCwuNzUzMzksMS4wMjA1OCwuNTY4NjYsLjU0MzI0LC43OTUxOSwxLjA4NTk1LDEsMSwuOTAwODgsMSwuOTUzMjUsLjc0NTA1LC45MDA4OCwxLC45NzE5OCwuNzUzMzksLjkxMDA5LC45MTAwOSwuOTEwMDksLjY2NDY2LC45MTc1NSwuOTE3NTUsLjkxNzU1LC45MTc1NSwuOTE3NTUsLjkxNzU1LC43ODgsLjgwMzE0LC43Mzc2NCwuNzM3NjQsLjczNzY0LC43Mzc2NCwuODYwMjMsLjg2MDIzLC44NjAyMywuODYwMjMsLjkyOTE1LC45MTExNSwuODg1OCwuODg1OCwuODg1OCwuODg1OCwuODg1OCwxLjAyMDU4LC44ODU4LC44OTU5MSwuODk1OTEsLjg5NTkxLC44OTU5MSwuODExMSwuNzk2MTEsLjg5NzEzLC44NjY2NywuODY2NjcsLjg2NjY3LC44NjY2NywuODY2NjcsLjg2NjY3LC44NjkzNiwuODk2LC45MDA4MywuOTAwODMsLjkwMDgzLC45MDA4MywuODQyMjQsLjg0MjI0LC44NDIyNCwuODQyMjQsLjk3Mjc2LC45OTc5MywuOTg3MTQsLjk4NzE0LC45ODcxNCwuOTg3MTQsLjk4NzE0LDEuMDg1OTUsLjg5ODc2LC45OTA3NCwuOTkwNzQsLjk5MDc0LC45OTA3NCwuOTQyLDEuMDIzMSwuOTQyLC45MTc1NSwuODY2NjcsLjkxNzU1LC44NjY2NywuOTE3NTUsLjg2NjY3LC44MDMxNCwuODk2LC44MDMxNCwuODk2LC44MDMxNCwuODk2LC44MDMxNCwuODk2LC45MjIyMiwuOTMzNzIsLjkyOTE1LDEuMDE0MTEsLjczNzY0LC45MDA4MywuNzM3NjQsLjkwMDgzLC43Mzc2NCwuOTAwODMsLjczNzY0LC45MDA4MywuNzM3NjQsLjkwMDgzLC44MzA1MSwxLjAwNTEyLC44MzA1MSwxLjAwNTEyLC44MzA1MSwxLjAwNTEyLDEsMSwuOTAyODQsLjk5NzkzLC45MDk3NiwuOTk3OTMsLjg2MDIzLC44NDIyNCwuODYwMjMsLjg0MjI0LC44NjAyMywuODQyMjQsLjg2MDIzLDEuMDUzMjYsLjg2MDIzLC44NDIyNCwuODI4NzMsMS4wNzQ2OSwuNzQsMS4wOTM3NywxLDEsLjkzOCwuODQ4NjksMS4wNjIyNiwxLDEsLjg0ODY5LC44MzcwNCwuODQ4NjksLjgxNDQxLC44NTU4OCwxLjA4OTI3LC45MTExNSwuOTk3OTMsMSwxLC45MTExNSwuOTk3OTMsLjkxODg3LC45MDk5MSwuOTk3OTMsLjg4NTgsLjk4NzE0LC44ODU4LC45ODcxNCwuODg1OCwuOTg3MTQsLjg5NCwuOTE0MzQsLjc0NDk4LC45ODE5NiwxLDEsLjc0NDk4LC45ODE5NiwuNzM5MTQsLjc5MiwuNzM5MTQsLjc5MiwxLDEsLjczOTE0LC43OTIsMSwxLC44MTM2MywuOTA0LC44MTM2MywxLjE5MTM3LC44OTU5MSwuOTkwNzQsLjg5NTkxLC45OTA3NCwuODk1OTEsLjk5MDc0LC44OTU5MSwuOTkwNzQsLjg5NTkxLC45OTA3NCwuODk1OTEsLjk5MDc0LC44OTYzMywxLjAxOTE1LC44MTExLC45NDIsLjgxMTEsLjkwNTMxLC44NTYsLjkwNTMxLC44NTYsLjkwNTMxLC44NTYsMSwuOTIyNDEsLjkxNzU1LC44NjY2NywuNzg4LC44NjkzNiwuODg1OCwuODk4NzYsMSwxLC44MTM2MywxLjE5MTM3LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDM4OCwxLjAzOTAxLC45MjEzOCwuNzgxMDUsLjcxNTQsLjg2MTY5LC44MDUxMywuOTQwMDcsLjgyNTI4LC45ODYxMiwxLjA2MjI2LC45MTc1NSwuODEyNiwuODE4ODQsLjkyODE5LC43Mzc2NCwuOTA1MzEsLjkwMjg0LC44ODU4LC44NjAyMywuODEyNiwuOTExNzIsLjk2NTE4LC45MTExNSwuODMwODksLjg4NTgsLjg3NzkxLC43OTc2MSwuODkyOTcsLjgxMzYzLC44ODE1NywuODk5OTIsLjg1NjA4LC44MTk5MiwuOTQzMDcsLjg2MDIzLC44ODE1NywuOTUzMDgsLjk4Njk5LC45OTc5MywxLjA2MjI2LC45NTgxNywuOTUzMDgsLjk3MzU4LC45MjgsLjk4MDg4LC45ODY5OSwuOTI3NjEsLjk5NzkzLC45NjAxNywxLjA2MjI2LC45ODYsLjk0NCwuOTU5NzgsLjkzOCwuOTY3MDUsLjk4NzE0LC44MDQ0MiwuOTg5NzIsMSwuODk3NjIsMS4wNDU1MiwuOTU4MTcsLjk5MDA3LC44NzA2NCwuOTE4NzksLjg4ODg4LDEuMDYyMjYsLjk1ODE3LC45ODcxNCwuOTU4MTcsLjg4ODg4LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjg5NjMzLDEuMDE5MTUsLjg5NjMzLDEuMDE5MTUsLjg5NjMzLDEuMDE5MTUsLjgxMTEsLjk0MiwuOTIxOSwxLC44OTkwMywxLDEsMSwuOTMxNzMsLjkzMTczLC45MzE3MywxLDEuMDYzMDQsMS4wNjMwNCwxLjA2OTA0LC44OTkwMywuODk5MDMsLjgwNTQ5LDEsMS4xNTYsMSwxLC43NjU3NSwuNzY1NzUsMSwxLC43MjQ1OCwxLDEsMSwxLC45MjI0MSwxLDEsMSwuNjE5LDEsMS4zNjE0NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wNzI1NywxLC43NDcwNSwuNzExMTksMS4wMjA1OCwxLjAyNCwxLjAyMTE5LDEsMSwxLjE1MzYsMS4wODU5NSwxLjA4NTk1LDEsMS4wODU5NSwxLjA4NTk1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wNTYzOCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSx0Lk15cmlhZFByb1JlZ3VsYXJNZXRyaWNzPXtsaW5lSGVpZ2h0OjEuMixsaW5lR2FwOi4yfX0sKGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5TZWdvZXVpUmVndWxhck1ldHJpY3M9dC5TZWdvZXVpUmVndWxhckZhY3RvcnM9dC5TZWdvZXVpSXRhbGljTWV0cmljcz10LlNlZ29ldWlJdGFsaWNGYWN0b3JzPXQuU2Vnb2V1aUJvbGRNZXRyaWNzPXQuU2Vnb2V1aUJvbGRJdGFsaWNNZXRyaWNzPXQuU2Vnb2V1aUJvbGRJdGFsaWNGYWN0b3JzPXQuU2Vnb2V1aUJvbGRGYWN0b3JzPXZvaWQgMCx0LlNlZ29ldWlCb2xkRmFjdG9ycz1bMS43NjczOCwxLDEsLjk5Mjk3LC45ODI0LDEuMDQwMTYsMS4wNjQ5NywxLjAzNDI0LC45NzUyOSwxLjE3NjQ3LDEuMjMyMDMsMS4xMDg1LDEuMTA4NSwxLjE2OTM5LDEuMjEwNywuOTc1NCwxLjIxNDA4LC45NzU0LDEuNTk1NzgsMS4wMzQyNCwxLjAzNDI0LDEuMDM0MjQsMS4wMzQyNCwxLjAzNDI0LDEuMDM0MjQsMS4wMzQyNCwxLjAzNDI0LDEuMDM0MjQsMS4wMzQyNCwuODEzNzgsLjgxMzc4LDEuMjEwNywxLjIxMDcsMS4yMTA3LC43MTcwMywuOTc4NDcsLjk3MzYzLC44ODc3NiwuODY0MSwxLjAyMDk2LC43OTc5NSwuODUxMzIsLjkxNCwxLjA2MDg1LDEuMTQwNiwuODAwNywuODk4NTgsLjgzNjkzLDEuMTQ4ODksMS4wOTM5OCwuOTc0ODksLjkyMDk0LC45NzQ4OSwuOTAzOTksLjg0MDQxLC45NTkyMywxLjAwMTM1LDEsMS4wNjQ2NywuOTgyNDMsLjkwOTk2LC45OTM2MSwxLjEwODUsMS41Njk0MiwxLjEwODUsMS4yMTA3LC43NDYyNywuOTQyODIsLjk2NzUyLDEuMDE1MTksLjg2MzA0LDEuMDEzNTksLjk3Mjc4LDEuMTUxMDMsMS4wMTM1OSwuOTg1NjEsMS4wMjI4NSwxLjAyMjg1LDEuMDA1MjcsMS4wMjI4NSwxLjAzMDIsLjk5MDQxLDEuMDAwOCwxLjAxNTE5LDEuMDEzNTksMS4wMjI1OCwuNzkxMDQsMS4xNjg2MiwuOTkwNDEsLjk3NDU0LDEuMDI1MTEsLjk5Mjk4LC45Njc1MiwuOTU4MDEsLjk0ODU2LDEuMTY1NzksLjk0ODU2LDEuMjEwNywuOTgyNCwxLjAzNDI0LDEuMDM0MjQsMSwxLjAzNDI0LDEuMTY1NzksLjg3MjcsMS4zODcxLDEuMTg2MjIsMS4xMDgxOCwxLjA0NDc4LDEuMjEwNywxLjE4NjIyLC43NTE1NSwuOTQ5OTQsMS4yODgyNiwxLjIxNDA4LDEuMjE0MDgsLjkxMDU2LDEsLjkxNTcyLC45NzU0LC42NDY2MywxLjE4MzI4LDEuMjQ4NjYsMS4wNDQ3OCwxLjE0MTY5LDEuMTU3NDksMS4xNzM4OSwuNzE3MDMsLjk3MzYzLC45NzM2MywuOTczNjMsLjk3MzYzLC45NzM2MywuOTczNjMsLjkzNTA2LC44NjQxLC43OTc5NSwuNzk3OTUsLjc5Nzk1LC43OTc5NSwxLjE0MDYsMS4xNDA2LDEuMTQwNiwxLjE0MDYsMS4wMjA5NiwxLjA5Mzk4LC45NzQyNiwuOTc0MjYsLjk3NDI2LC45NzQyNiwuOTc0MjYsMS4yMTA3LC45NzQ4OSwxLjAwMTM1LDEuMDAxMzUsMS4wMDEzNSwxLjAwMTM1LC45MDk5NiwuOTIwOTQsMS4wMjc5OCwuOTY3NTIsLjk2NzUyLC45Njc1MiwuOTY3NTIsLjk2NzUyLC45Njc1MiwuOTMxMzYsLjg2MzA0LC45NzI3OCwuOTcyNzgsLjk3Mjc4LC45NzI3OCwxLjAyMjg1LDEuMDIyODUsMS4wMjI4NSwxLjAyMjg1LC45NzEyMiwuOTkwNDEsMSwxLDEsMSwxLDEuMjg4MjYsMS4wMDA4LC45OTA0MSwuOTkwNDEsLjk5MDQxLC45OTA0MSwuOTY3NTIsMS4wMTUxOSwuOTY3NTIsLjk3MzYzLC45Njc1MiwuOTczNjMsLjk2NzUyLC45NzM2MywuOTY3NTIsLjg2NDEsLjg2MzA0LC44NjQxLC44NjMwNCwuODY0MSwuODYzMDQsLjg2NDEsLjg2MzA0LDEuMDIwOTYsMS4wMzA1NywxLjAyMDk2LDEuMDM1MTcsLjc5Nzk1LC45NzI3OCwuNzk3OTUsLjk3Mjc4LC43OTc5NSwuOTcyNzgsLjc5Nzk1LC45NzI3OCwuNzk3OTUsLjk3Mjc4LC45MTQsMS4wMTM1OSwuOTE0LDEuMDEzNTksLjkxNCwxLjAxMzU5LDEsMSwxLjA2MDg1LC45ODU2MSwxLjA2MDg1LDEuMDA4NzksMS4xNDA2LDEuMDIyODUsMS4xNDA2LDEuMDIyODUsMS4xNDA2LDEuMDIyODUsMS4xNDA2LDEuMDIyODUsMS4xNDA2LDEuMDIyODUsLjk3MTM4LDEuMDg2OTIsLjgwMDcsMS4wMjI4NSwxLDEsMS4wMDUyNywuODM2OTMsMS4wMjI4NSwxLDEsLjgzNjkzLC45NDU1LC44MzY5MywuOTA0MTgsLjgzNjkzLDEuMTMwMDUsMS4wOTM5OCwuOTkwNDEsMSwxLDEuMDkzOTgsLjk5MDQxLC45NjY5MiwxLjA5MjUxLC45OTA0MSwuOTc0ODksMS4wMDA4LC45NzQ4OSwxLjAwMDgsLjk3NDg5LDEuMDAwOCwuOTM5OTQsLjk3OTMxLC45MDM5OSwxLjAyMjU4LDEsMSwuOTAzOTksMS4wMjI1OCwuODQwNDEsLjc5MTA0LC44NDA0MSwuNzkxMDQsLjg0MDQxLC43OTEwNCwuODQwNDEsLjc5MTA0LDEsMSwuOTU5MjMsMS4wNzAzNCwuOTU5MjMsMS4xNjg2MiwxLjAwMTM1LC45OTA0MSwxLjAwMTM1LC45OTA0MSwxLjAwMTM1LC45OTA0MSwxLjAwMTM1LC45OTA0MSwxLjAwMTM1LC45OTA0MSwxLjAwMTM1LC45OTA0MSwxLjA2NDY3LDEuMDI1MTEsLjkwOTk2LC45Njc1MiwuOTA5OTYsLjk5MzYxLC45NTgwMSwuOTkzNjEsLjk1ODAxLC45OTM2MSwuOTU4MDEsMS4wNzczMywxLjAzNDI0LC45NzM2MywuOTY3NTIsLjkzNTA2LC45MzEzNiwuOTc0ODksMS4wMDA4LDEsMSwuOTU5MjMsMS4xNjg2MiwxLjE1MTAzLDEuMTUxMDMsMS4wMTE3MywxLjAzOTU5LC43NTk1MywuODEzNzgsLjc5OTEyLDEuMTUxMDMsMS4yMTk5NCwuOTUxNjEsLjg3ODE1LDEuMDExNDksLjgxNTI1LC43Njc2LC45ODE2NywxLjAxMTM0LDEuMDI1NDYsLjg0MDk3LDEuMDMwODksMS4xODEwMiwuOTczNjMsLjg4Nzc2LC44NTEzNCwuOTc4MjYsLjc5Nzk1LC45OTM2MSwxLjA2MDg1LC45NzQ4OSwxLjE0MDYsLjg5ODU4LDEuMDM4OCwxLjE0ODg5LDEuMDkzOTgsLjg2MDM5LC45NzQ4OSwxLjA1OTUsLjkyMDk0LC45NDc5MywuOTU5MjMsLjkwOTk2LC45OTM0NiwuOTgyNDMsMS4wMjExMiwuOTU0OTMsMS4xNDA2LC45MDk5NiwxLjAzNTc0LDEuMDI1OTcsMS4wMDA4LDEuMTgxMDIsMS4wNjYyOCwxLjAzNTc0LDEuMDE5MiwxLjAxOTMyLDEuMDA4ODYsLjk3NTMxLDEuMDEwNiwxLjAwMDgsMS4xMzE4OSwxLjE4MTAyLDEuMDIyNzcsLjk4NjgzLDEuMDAxNiwuOTk1NjEsMS4wNzIzNywxLjAwMDgsLjkwNDM0LC45OTkyMSwuOTM4MDMsLjg5NjUsMS4yMzA4NSwxLjA2NjI4LDEuMDQ5ODMsLjk2MjY4LDEuMDQ5OSwuOTg0MzksMS4xODEwMiwxLjA2NjI4LDEuMDAwOCwxLjA2NjI4LC45ODQzOSwuNzk3OTUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wOTQ2NiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTcyNzgsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wMjA2NSwxLDEsMSwxLDEsMSwxLjA2NDY3LDEuMDI1MTEsMS4wNjQ2NywxLjAyNTExLDEuMDY0NjcsMS4wMjUxMSwuOTA5OTYsLjk2NzUyLDEsMS4yMTQwOCwuODk5MDMsMSwxLC43NTE1NSwxLjA0Mzk0LDEuMDQzOTQsMS4wNDM5NCwxLjA0Mzk0LC45ODYzMywuOTg2MzMsLjk4NjMzLC43MzA0NywuNzMwNDcsMS4yMDY0MiwuOTEyMTEsMS4yNTYzNSwxLjIyMiwxLjAyOTU2LDEuMDMzNzIsMS4wMzM3MiwuOTYwMzksMS4yNDYzMywxLDEuMTI0NTQsLjkzNTAzLDEuMDM0MjQsMS4xOTY4NywxLjAzNDI0LDEsMSwxLC43NzEsMSwxLDEuMTU3NDksMS4xNTc0OSwxLjE1NzQ5LDEuMTA5NDgsLjg2Mjc5LC45NDQzNCwuODYyNzksLjk0NDM0LC44NjE4MiwxLDEsMS4xNjg5NywxLC45NjA4NSwuOTAxMzcsMS4yMTA3LDEuMTg0MTYsMS4xMzk3MywuNjk4MjUsLjk3MTYsMi4xMDMzOSwxLjI5MDA0LDEuMjkwMDQsMS4yMTE3MiwxLjI5MDA0LDEuMjkwMDQsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjQyNjAzLDEsLjk5ODYyLC45OTg2MiwxLC44NzAyNSwuODcwMjUsLjg3MDI1LC44NzAyNSwxLjE4ODc0LDEuNDI2MDMsMSwxLjQyNjAzLDEuNDI2MDMsLjk5ODYyLDEsMSwxLDEsMSwxLjI4ODYsMS4wNDMxNSwxLjE1Mjk2LDEuMzQxNjMsMSwxLDEsMS4wOTE5MywxLjA5MTkzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSx0LlNlZ29ldWlCb2xkTWV0cmljcz17bGluZUhlaWdodDoxLjMzMDA4LGxpbmVHYXA6MH0sdC5TZWdvZXVpQm9sZEl0YWxpY0ZhY3RvcnM9WzEuNzY3MzgsMSwxLC45ODk0NiwxLjAzOTU5LDEuMDQwMTYsMS4wMjgwOSwxLjAzNiwuOTc2MzksMS4xMDk1MywxLjIzMjAzLDEuMTExNDQsMS4xMTE0NCwxLjE2OTM5LDEuMjEyMzcsLjk3NTQsMS4yMTI2MSwuOTc1NCwxLjU5NzU0LDEuMDM2LDEuMDM2LDEuMDM2LDEuMDM2LDEuMDM2LDEuMDM2LDEuMDM2LDEuMDM2LDEuMDM2LDEuMDM2LC44MTM3OCwuODEzNzgsMS4yMTIzNywxLjIxMjM3LDEuMjEyMzcsLjczNTQxLC45Nzg0NywuOTczNjMsLjg5NzIzLC44Nzg5NywxLjA0MjYsLjc5NDI5LC44NTI5MiwuOTExNDksMS4wNTgxNSwxLjE0MDYsLjc5NjMxLC45MDEyOCwuODM4NTMsMS4wNDM5NiwxLjEwNjE1LC45NzU1MiwuOTQ0MzYsLjk3NTUyLC44ODY0MSwuODA1MjcsLjk2MDgzLDEuMDAxMzUsMSwxLjA2Nzc3LC45ODE3LC45MTE0MiwuOTkzNjEsMS4xMTE0NCwxLjU3MjkzLDEuMTExNDQsMS4yMTIzNywuNzQ2MjcsMS4zMTgxOCwxLjA2NTg1LC45NzA0MiwuODMwNTUsLjk3MDQyLC45MzUwMywxLjEyNjEsLjk3MDQyLC45NzkyMiwxLjE0MjM2LC45NDU1MiwxLjAxMDU0LDEuMTQyMzYsMS4wMjQ3MSwuOTc5MjIsLjk0MTY1LC45NzA0MiwuOTcwNDIsMS4wMjc2LC43ODkyOSwxLjEyNjEsLjk3OTIyLC45NTg3NCwxLjAyMTk3LC45ODUwNywuOTY3NTIsLjk3MTY4LC45NTEwNywxLjE2NTc5LC45NTEwNywxLjIxMjM3LDEuMDM5NTksMS4wMzYsMS4wMzYsMSwxLjAzNiwxLjE2NTc5LC44NzM1NywxLjMxODE4LDEuMTg3NTQsMS4yNjc4MSwxLjA1MzU2LDEuMjEyMzcsMS4xODYyMiwuNzk0ODcsLjk0OTk0LDEuMjkwMDQsMS4yNDA0NywxLjI0MDQ3LDEuMzE4MTgsMSwuOTE0ODQsLjk3NTQsMS4zMTgxOCwxLjEzNDksMS4yNDg2NiwxLjA1MzU2LDEuMTM5MzQsMS4xNTU3NCwxLjE3Mzg5LC43MzU0MSwuOTczNjMsLjk3MzYzLC45NzM2MywuOTczNjMsLjk3MzYzLC45NzM2MywuOTQzODUsLjg3ODk3LC43OTQyOSwuNzk0MjksLjc5NDI5LC43OTQyOSwxLjE0MDYsMS4xNDA2LDEuMTQwNiwxLjE0MDYsMS4wNDI2LDEuMTA2MTUsLjk3NTUyLC45NzU1MiwuOTc1NTIsLjk3NTUyLC45NzU1MiwxLjIxMjM3LC45NzU1MiwxLjAwMTM1LDEuMDAxMzUsMS4wMDEzNSwxLjAwMTM1LC45MTE0MiwuOTQ0MzYsLjk4NzIxLDEuMDY1ODUsMS4wNjU4NSwxLjA2NTg1LDEuMDY1ODUsMS4wNjU4NSwxLjA2NTg1LC45NjcwNSwuODMwNTUsLjkzNTAzLC45MzUwMywuOTM1MDMsLjkzNTAzLDEuMTQyMzYsMS4xNDIzNiwxLjE0MjM2LDEuMTQyMzYsLjkzMTI1LC45NzkyMiwuOTQxNjUsLjk0MTY1LC45NDE2NSwuOTQxNjUsLjk0MTY1LDEuMjkwMDQsLjk0MTY1LC45NzkyMiwuOTc5MjIsLjk3OTIyLC45NzkyMiwuOTY3NTIsLjk3MDQyLC45Njc1MiwuOTczNjMsMS4wNjU4NSwuOTczNjMsMS4wNjU4NSwuOTczNjMsMS4wNjU4NSwuODc4OTcsLjgzMDU1LC44Nzg5NywuODMwNTUsLjg3ODk3LC44MzA1NSwuODc4OTcsLjgzMDU1LDEuMDQyNiwxLjAwMzMsMS4wNDI2LC45NzA0MiwuNzk0MjksLjkzNTAzLC43OTQyOSwuOTM1MDMsLjc5NDI5LC45MzUwMywuNzk0MjksLjkzNTAzLC43OTQyOSwuOTM1MDMsLjkxMTQ5LC45NzA0MiwuOTExNDksLjk3MDQyLC45MTE0OSwuOTcwNDIsMSwxLDEuMDU4MTUsLjk3OTIyLDEuMDU4MTUsLjk3OTIyLDEuMTQwNiwxLjE0MjM2LDEuMTQwNiwxLjE0MjM2LDEuMTQwNiwxLjE0MjM2LDEuMTQwNiwxLjE0MjM2LDEuMTQwNiwxLjE0MjM2LC45NzQ0MSwxLjA0MzAyLC43OTYzMSwxLjAxNTgyLDEsMSwxLjAxMDU0LC44Mzg1MywxLjE0MjM2LDEsMSwuODM4NTMsMS4wOTEyNSwuODM4NTMsLjkwNDE4LC44Mzg1MywxLjE5NTA4LDEuMTA2MTUsLjk3OTIyLDEsMSwxLjEwNjE1LC45NzkyMiwxLjAxMDM0LDEuMTA0NjYsLjk3OTIyLC45NzU1MiwuOTQxNjUsLjk3NTUyLC45NDE2NSwuOTc1NTIsLjk0MTY1LC45MTYwMiwuOTE5ODEsLjg4NjQxLDEuMDI3NiwxLDEsLjg4NjQxLDEuMDI3NiwuODA1MjcsLjc4OTI5LC44MDUyNywuNzg5MjksLjgwNTI3LC43ODkyOSwuODA1MjcsLjc4OTI5LDEsMSwuOTYwODMsMS4wNTQwMywuOTU5MjMsMS4xNjg2MiwxLjAwMTM1LC45NzkyMiwxLjAwMTM1LC45NzkyMiwxLjAwMTM1LC45NzkyMiwxLjAwMTM1LC45NzkyMiwxLjAwMTM1LC45NzkyMiwxLjAwMTM1LC45NzkyMiwxLjA2Nzc3LDEuMDIxOTcsLjkxMTQyLC45Njc1MiwuOTExNDIsLjk5MzYxLC45NzE2OCwuOTkzNjEsLjk3MTY4LC45OTM2MSwuOTcxNjgsMS4yMzE5OSwxLjAzNiwuOTczNjMsMS4wNjU4NSwuOTQzODUsLjk2NzA1LC45NzU1MiwuOTQxNjUsMSwxLC45NjA4MywxLjEyNjEsMS4zMTgxOCwxLjMxODE4LDEuMzE4MTgsMS4zMTgxOCwxLjMxODE4LDEuMzE4MTgsMS4zMTgxOCwxLjMxODE4LDEuMzE4MTgsLjk1MTYxLDEuMjcxMjYsMS4wMDgxMSwuODMyODQsLjc3NzAyLC45OTEzNywuOTUyNTMsMS4wMzQ3LC44NjE0MiwxLjA3MjA1LDEuMTQyMzYsLjk3MzYzLC44OTcyMywuODY4NjksMS4wOTgxOCwuNzk0MjksLjk5MzYxLDEuMDU4MTUsLjk3NTUyLDEuMTQwNiwuOTAxMjgsMS4wNjY2MiwxLjA0Mzk2LDEuMTA2MTUsLjg0OTE4LC45NzU1MiwxLjA0Njk0LC45NDQzNiwuOTgwMTUsLjk2MDgzLC45MTE0MiwxLjAwMzU2LC45ODE3LDEuMDE5NDUsLjk4OTk5LDEuMTQwNiwuOTExNDIsMS4wNDk2MSwuOTg5OCwxLjAwNjM5LDEuMTQyMzYsMS4wNzUxNCwxLjA0OTYxLC45OTYwNywxLjAyODk3LDEuMDA4LC45ODk4LC45NTEzNCwxLjAwNjM5LDEuMTExMjEsMS4xNDIzNiwxLjAwNTE4LC45Nzk4MSwxLjAyMTg2LDEsMS4wODU3OCwuOTQxNjUsLjk5MzE0LC45ODM4NywuOTMwMjgsLjkzMzc3LDEuMzUxMjUsMS4wNzUxNCwxLjEwNjg3LC45MzQ5MSwxLjA0MjMyLDEuMDAzNTEsMS4xNDIzNiwxLjA3NTE0LC45NDE2NSwxLjA3NTE0LDEuMDAzNTEsLjc5NDI5LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDkwOTcsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkzNTAzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45NjYwOSwxLDEsMSwxLDEsMSwxLjA2Nzc3LDEuMDIxOTcsMS4wNjc3NywxLjAyMTk3LDEuMDY3NzcsMS4wMjE5NywuOTExNDIsLjk2NzUyLDEsMS4yMTI2MSwuODk5MDMsMSwxLC43NTE1NSwxLjA0NzQ1LDEuMDQ3NDUsMS4wNDc0NSwxLjA0Mzk0LC45ODYzMywuOTg2MzMsLjk4NjMzLC43Mjk1OSwuNzI5NTksMS4yMDUwMiwuOTE0MDYsMS4yNjUxNCwxLjIyMiwxLjAyOTU2LDEuMDMzNzIsMS4wMzM3MiwuOTYwMzksMS4yNDYzMywxLDEuMDkxMjUsLjkzMzI3LDEuMDMzMzYsMS4xNjU0MSwxLjAzNiwxLDEsMSwuNzcxLDEsMSwxLjE1NTc0LDEuMTU1NzQsMS4xNTU3NCwxLjE1NTc0LC44NjM2NCwuOTQ0MzQsLjg2Mjc5LC45NDQzNCwuODYyMjQsMSwxLDEuMTY3OTgsMSwuOTYwODUsLjkwMDY4LDEuMjEyMzcsMS4xODQxNiwxLjEzOTA0LC42OTgyNSwuOTcxNiwyLjEwMzM5LDEuMjkwMDQsMS4yOTAwNCwxLjIxMzM5LDEuMjkwMDQsMS4yOTAwNCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuNDI2MDMsMSwuOTk4NjIsLjk5ODYyLDEsLjg3MDI1LC44NzAyNSwuODcwMjUsLjg3MDI1LDEuMTg3NzUsMS40MjYwMywxLDEuNDI2MDMsMS40MjYwMywuOTk4NjIsMSwxLDEsMSwxLDEuMjg4NiwxLjA0MzE1LDEuMTUyOTYsMS4zNDE2MywxLDEsMSwxLjEzMjY5LDEuMTMyNjksMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLHQuU2Vnb2V1aUJvbGRJdGFsaWNNZXRyaWNzPXtsaW5lSGVpZ2h0OjEuMzMwMDgsbGluZUdhcDowfSx0LlNlZ29ldWlJdGFsaWNGYWN0b3JzPVsxLjc2NzM4LDEsMSwuOTg5NDYsMS4xNDc2MywxLjA1MzY1LDEuMDYyMzQsLjk2OTI3LC45MjU4NiwxLjE1MzczLDEuMTg0MTQsLjkxMzQ5LC45MTM0OSwxLjA3NDAzLDEuMTczMDgsLjc4MzgzLDEuMjAwODgsLjc4MzgzLDEuNDI1MzEsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC43ODM4MywuNzgzODMsMS4xNzMwOCwxLjE3MzA4LDEuMTczMDgsLjc3MzQ5LC45NDU2NSwuOTQ3MjksLjg1OTQ0LC44ODUwNiwuOTg1OCwuNzQ4MTcsLjgwMDE2LC44ODQ0OSwuOTgwMzksLjk1NzgyLC42OTIzOCwuODk4OTgsLjgzMjMxLC45ODE4MywxLjAzOTg5LC45NjkyNCwuODYyMzcsLjk2OTI0LC44MDU5NSwuNzQ1MjQsLjg2MDkxLC45NTQwMiwuOTQxNDMsLjk4NDQ4LC44ODU4LC44MzA4OSwuOTMyODUsMS4wOTQ5LDEuMzkwMTYsMS4wOTQ5LDEuNDU5OTQsLjc0NjI3LDEuMDQ4MzksLjk3NDU0LC45NzQ1NCwuODcyMDcsLjk3NDU0LC44NzUzMywxLjA2MTUxLC45NzQ1NCwxLjAwMTc2LDEuMTY0ODQsMS4wODEzMiwuOTgwNDcsMS4xNjQ4NCwxLjAyOTg5LDEuMDEwNTQsLjk2MjI1LC45NzQ1NCwuOTc0NTQsMS4wNjU5OCwuNzkwMDQsMS4xNjM0NCwxLjAwMzUxLC45NDYyOSwuOTk3MywuOTEwMTYsLjk2Nzc3LC45MDQzLC45MTA4MiwuOTI0ODEsLjkxMDgyLDEuMTczMDgsLjk1NzQ4LC45NjkyNywuOTY5MjcsMSwuOTY5MjcsLjkyNDgxLC44MDU5NywxLjA0ODM5LDEuMjMzOTMsMS4xNzgxLC45MjQ1LDEuMTczMDgsMS4yMDgwOCwuNjMyMTgsLjk0MjYxLDEuMjQ4MjIsMS4wOTk3MSwxLjA5OTcxLDEuMDQ4MzksMSwuODUyNzMsLjc4MDMyLDEuMDQ4MzksMS4wOTk3MSwxLjIyMzI2LC45MjQ1LDEuMDk4MzYsMS4xMzUyNSwxLjE1MjIyLC43MDQyNCwuOTQ3MjksLjk0NzI5LC45NDcyOSwuOTQ3MjksLjk0NzI5LC45NDcyOSwuODU0OTgsLjg4NTA2LC43NDgxNywuNzQ4MTcsLjc0ODE3LC43NDgxNywuOTU3ODIsLjk1NzgyLC45NTc4MiwuOTU3ODIsLjk4NTgsMS4wMzk4OSwuOTY5MjQsLjk2OTI0LC45NjkyNCwuOTY5MjQsLjk2OTI0LDEuMTczMDgsLjk2OTI0LC45NTQwMiwuOTU0MDIsLjk1NDAyLC45NTQwMiwuODMwODksLjg2MjM3LC44ODQwOSwuOTc0NTQsLjk3NDU0LC45NzQ1NCwuOTc0NTQsLjk3NDU0LC45NzQ1NCwuOTI5MTYsLjg3MjA3LC44NzUzMywuODc1MzMsLjg3NTMzLC44NzUzMywuOTMxNDYsLjkzMTQ2LC45MzE0NiwuOTMxNDYsLjkzODU0LDEuMDEwNTQsLjk2MjI1LC45NjIyNSwuOTYyMjUsLjk2MjI1LC45NjIyNSwxLjI0ODIyLC44NzYxLDEuMDAzNTEsMS4wMDM1MSwxLjAwMzUxLDEuMDAzNTEsLjk2Nzc3LC45NzQ1NCwuOTY3NzcsLjk0NzI5LC45NzQ1NCwuOTQ3MjksLjk3NDU0LC45NDcyOSwuOTc0NTQsLjg4NTA2LC44NzIwNywuODg1MDYsLjg3MjA3LC44ODUwNiwuODcyMDcsLjg4NTA2LC44NzIwNywuOTg1OCwuOTUzOTEsLjk4NTgsLjk3NDU0LC43NDgxNywuODc1MzMsLjc0ODE3LC44NzUzMywuNzQ4MTcsLjg3NTMzLC43NDgxNywuODc1MzMsLjc0ODE3LC44NzUzMywuODg0NDksLjk3NDU0LC44ODQ0OSwuOTc0NTQsLjg4NDQ5LC45NzQ1NCwxLDEsLjk4MDM5LDEuMDAxNzYsLjk4MDM5LDEuMDAxNzYsLjk1NzgyLC45MzE0NiwuOTU3ODIsLjkzMTQ2LC45NTc4MiwuOTMxNDYsLjk1NzgyLDEuMTY0ODQsLjk1NzgyLC45MzE0NiwuODQ0MjEsMS4xMjc2MSwuNjkyMzgsMS4wODEzMiwxLDEsLjk4MDQ3LC44MzIzMSwxLjE2NDg0LDEsMSwuODQ3MjMsMS4wNDg2MSwuODQ3MjMsLjc4NzU1LC44MzIzMSwxLjIzNzM2LDEuMDM5ODksMS4wMTA1NCwxLDEsMS4wMzk4OSwxLjAxMDU0LC45ODU3LDEuMDM4NDksMS4wMTA1NCwuOTY5MjQsLjk2MjI1LC45NjkyNCwuOTYyMjUsLjk2OTI0LC45NjIyNSwuOTIzODMsLjkwMTcxLC44MDU5NSwxLjA2NTk4LDEsMSwuODA1OTUsMS4wNjU5OCwuNzQ1MjQsLjc5MDA0LC43NDUyNCwuNzkwMDQsLjc0NTI0LC43OTAwNCwuNzQ1MjQsLjc5MDA0LDEsMSwuODYwOTEsMS4wMjc1OSwuODU3NzEsMS4xNjM0NCwuOTU0MDIsMS4wMDM1MSwuOTU0MDIsMS4wMDM1MSwuOTU0MDIsMS4wMDM1MSwuOTU0MDIsMS4wMDM1MSwuOTU0MDIsMS4wMDM1MSwuOTU0MDIsMS4wMDM1MSwuOTg0NDgsLjk5NzMsLjgzMDg5LC45Njc3NywuODMwODksLjkzMjg1LC45MDQzLC45MzI4NSwuOTA0MywuOTMyODUsLjkwNDMsMS4zMTg2OCwuOTY5MjcsLjk0NzI5LC45NzQ1NCwuODU0OTgsLjkyOTE2LC45NjkyNCwuODc2MSwxLDEsLjg2MDkxLDEuMTYzNDQsMS4wNDgzOSwxLjA0ODM5LDEuMDQ4MzksMS4wNDgzOSwxLjA0ODM5LDEuMDQ4MzksMS4wNDgzOSwxLjA0ODM5LDEuMDQ4MzksLjgxOTY1LC44MTk2NSwuOTQ3MjksLjc4MDMyLC43MTAyMiwuOTA4ODMsLjg0MTcxLC45OTg3NywuNzc1OTYsMS4wNTczNCwxLjIsLjk0NzI5LC44NTk0NCwuODI3OTEsLjk2MDcsLjc0ODE3LC45MzI4NSwuOTgwMzksLjk2OTI0LC45NTc4MiwuODk4OTgsLjk4MzE2LC45ODE4MywxLjAzOTg5LC43ODYxNCwuOTY5MjQsLjk3NjQyLC44NjIzNywuODYwNzUsLjg2MDkxLC44MzA4OSwuOTAwODIsLjg4NTgsLjk3Mjk2LDEuMDEyODQsLjk1NzgyLC44MzA4OSwxLjA5NzYsMS4wNCwxLjAzMzQyLDEuMiwxLjA2NzUsMS4wOTc2LC45ODIwNSwxLjAzODA5LDEuMDUwOTcsMS4wNCwuOTUzNjQsMS4wMzM0MiwxLjA1NDAxLDEuMiwxLjAyMTQ4LDEuMDExOSwxLjA0NzI0LDEuMDEyNywxLjAyNzMyLC45NjIyNSwuODk2NSwuOTc3ODMsLjkzNTc0LC45NDgxOCwxLjMwNjc5LDEuMDY3NSwxLjExODI2LC45OTgyMSwxLjA1NTcsMS4wMzI2LDEuMiwxLjA2NzUsLjk2MjI1LDEuMDY3NSwxLjAzMjYsLjc0ODE3LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDM3NTQsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjg3NTMzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45ODcwNSwxLDEsMSwxLDEsMSwuOTg0NDgsLjk5NzMsLjk4NDQ4LC45OTczLC45ODQ0OCwuOTk3MywuODMwODksLjk2Nzc3LDEsMS4yMDA4OCwuODk5MDMsMSwxLC43NTE1NSwuOTQ5NDUsLjk0OTQ1LC45NDk0NSwuOTQ5NDUsMS4xMjMxNywxLjEyMzE3LDEuMTIzMTcsLjY3NjAzLC42NzYwMywxLjE1NjIxLC43MzU4NCwxLjIxMTkxLDEuMjIxMzUsMS4wNjQ4MywuOTQ4NjgsLjk0ODY4LC45NTk5NiwxLjI0NjMzLDEsMS4wNzQ5NywuODc3MDksLjk2OTI3LDEuMDE0NzMsLjk2OTI3LDEsMSwxLC43NzI5NSwxLDEsMS4wOTgzNiwxLjA5ODM2LDEuMDk4MzYsMS4wMTUyMiwuODYzMjEsLjk0NDM0LC44NjQ5LC45NDQzNCwuODYxODIsMSwxLDEuMDgzLDEsLjkxNTc4LC44NjQzOCwxLjE3MzA4LDEuMTg0MTYsMS4xNDU4OSwuNjk4MjUsLjk3NjIyLDEuOTY3OTEsMS4yNDgyMiwxLjI0ODIyLDEuMTczMDgsMS4yNDgyMiwxLjI0ODIyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS40MjYwMywxLC45OTg2MiwuOTk4NjIsMSwuODcwMjUsLjg3MDI1LC44NzAyNSwuODcwMjUsMS4xNzk4NCwxLjQyNjAzLDEsMS40MjYwMywxLjQyNjAzLC45OTg2MiwxLDEsMSwxLDEsMS4yODg2LDEuMDQzMTUsMS4xNTI5NiwxLjM0MTYzLDEsMSwxLDEuMTA3NDIsMS4xMDc0MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sdC5TZWdvZXVpSXRhbGljTWV0cmljcz17bGluZUhlaWdodDoxLjMzMDA4LGxpbmVHYXA6MH0sdC5TZWdvZXVpUmVndWxhckZhY3RvcnM9WzEuNzY3MzgsMSwxLC45ODU5NCwxLjAyMjg1LDEuMTA0NTQsMS4wNjIzNCwuOTY5MjcsLjkyMDM3LDEuMTk5ODUsMS4yMDQ2LC45MDYxNiwuOTA2MTYsMS4wNzE1MiwxLjE3MTQsLjc4MDMyLDEuMjAwODgsLjc4MDMyLDEuNDAyNDYsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC43ODAzMiwuNzgwMzIsMS4xNzE0LDEuMTcxNCwxLjE3MTQsLjgwNTk3LC45NDA4NCwuOTY3MDYsLjg1OTQ0LC44NTczNCwuOTcwOTMsLjc1ODQyLC43OTkzNiwuODgxOTgsLjk4MzEsLjk1NzgyLC43MTM4NywuODY5NjksLjg0NjM2LDEuMDc3OTYsMS4wMzU4NCwuOTY5MjQsLjgzOTY4LC45NjkyNCwuODI4MjYsLjc5NjQ5LC44NTc3MSwuOTUxMzIsLjkzMTE5LC45ODk2NSwuODg0MzMsLjgyODcsLjkzMzY1LDEuMDg2MTIsMS4zNjM4LDEuMDg2MTIsMS40NTc4NiwuNzQ2MjcsLjgwNDk5LC45MTQ4NCwxLjA1NzA3LC45MjM4MywxLjA1ODgyLC45NDAzLDEuMTI2NTQsMS4wNTg4MiwxLjAxNzU2LDEuMDkwMTEsMS4wOTAxMSwuOTk0MTQsMS4wOTAxMSwxLjAzNCwxLjAxNzU2LDEuMDUzNTYsMS4wNTcwNywxLjA1ODgyLDEuMDQzOTksLjg0ODYzLDEuMjE5NjgsMS4wMTc1NiwuOTU4MDEsMS4wMDA2OCwuOTE3OTcsLjk2Nzc3LC45MDQzLC45MDM1MSwuOTIxMDUsLjkwMzUxLDEuMTcxNCwuODUzMzcsLjk2OTI3LC45NjkyNywuOTk5MTIsLjk2OTI3LC45MjEwNSwuODA1OTcsMS4yNDM0LDEuMjA4MDgsMS4wNTkzNywuOTA5NTcsMS4xNzE0LDEuMjA4MDgsLjc1MTU1LC45NDI2MSwxLjI0NjQ0LDEuMDk5NzEsMS4wOTk3MSwuODQ3NTEsMSwuODUyNzMsLjc4MDMyLC42MTU4NCwxLjA1NDI1LDEuMTc5MTQsLjkwOTU3LDEuMDg2NjUsMS4xMTU5MywxLjE0MTY5LC43MzM4MSwuOTY3MDYsLjk2NzA2LC45NjcwNiwuOTY3MDYsLjk2NzA2LC45NjcwNiwuODYwMzUsLjg1NzM0LC43NTg0MiwuNzU4NDIsLjc1ODQyLC43NTg0MiwuOTU3ODIsLjk1NzgyLC45NTc4MiwuOTU3ODIsLjk3MDkzLDEuMDM1ODQsLjk2OTI0LC45NjkyNCwuOTY5MjQsLjk2OTI0LC45NjkyNCwxLjE3MTQsLjk2OTI0LC45NTEzMiwuOTUxMzIsLjk1MTMyLC45NTEzMiwuODI4NywuODM5NjgsLjg5MDQ5LC45MTQ4NCwuOTE0ODQsLjkxNDg0LC45MTQ4NCwuOTE0ODQsLjkxNDg0LC45MzU3NSwuOTIzODMsLjk0MDMsLjk0MDMsLjk0MDMsLjk0MDMsLjg3MTcsLjg3MTcsLjg3MTcsLjg3MTcsMS4wMDUyNywxLjAxNzU2LDEuMDUzNTYsMS4wNTM1NiwxLjA1MzU2LDEuMDUzNTYsMS4wNTM1NiwxLjI0NjQ0LC45NTkyMywxLjAxNzU2LDEuMDE3NTYsMS4wMTc1NiwxLjAxNzU2LC45Njc3NywxLjA1NzA3LC45Njc3NywuOTY3MDYsLjkxNDg0LC45NjcwNiwuOTE0ODQsLjk2NzA2LC45MTQ4NCwuODU3MzQsLjkyMzgzLC44NTczNCwuOTIzODMsLjg1NzM0LC45MjM4MywuODU3MzQsLjkyMzgzLC45NzA5MywxLjA5NjksLjk3MDkzLDEuMDU4ODIsLjc1ODQyLC45NDAzLC43NTg0MiwuOTQwMywuNzU4NDIsLjk0MDMsLjc1ODQyLC45NDAzLC43NTg0MiwuOTQwMywuODgxOTgsMS4wNTg4MiwuODgxOTgsMS4wNTg4MiwuODgxOTgsMS4wNTg4MiwxLDEsLjk4MzEsMS4wMTc1NiwuOTgzMSwxLjAxNzU2LC45NTc4MiwuODcxNywuOTU3ODIsLjg3MTcsLjk1NzgyLC44NzE3LC45NTc4MiwxLjA5MDExLC45NTc4MiwuODcxNywuODQ3ODQsMS4xMTU1MSwuNzEzODcsMS4wOTAxMSwxLDEsLjk5NDE0LC44NDYzNiwxLjA5MDExLDEsMSwuODQ2MzYsMS4wNTM2LC44NDYzNiwuOTQyOTgsLjg0NjM2LDEuMjMyOTcsMS4wMzU4NCwxLjAxNzU2LDEsMSwxLjAzNTg0LDEuMDE3NTYsMS4wMDMyMywxLjAzNDQ0LDEuMDE3NTYsLjk2OTI0LDEuMDUzNTYsLjk2OTI0LDEuMDUzNTYsLjk2OTI0LDEuMDUzNTYsLjkzMDY2LC45ODI5MywuODI4MjYsMS4wNDM5OSwxLDEsLjgyODI2LDEuMDQzOTksLjc5NjQ5LC44NDg2MywuNzk2NDksLjg0ODYzLC43OTY0OSwuODQ4NjMsLjc5NjQ5LC44NDg2MywxLDEsLjg1NzcxLDEuMTczMTgsLjg1NzcxLDEuMjE5NjgsLjk1MTMyLDEuMDE3NTYsLjk1MTMyLDEuMDE3NTYsLjk1MTMyLDEuMDE3NTYsLjk1MTMyLDEuMDE3NTYsLjk1MTMyLDEuMDE3NTYsLjk1MTMyLDEuMDE3NTYsLjk4OTY1LDEuMDAwNjgsLjgyODcsLjk2Nzc3LC44Mjg3LC45MzM2NSwuOTA0MywuOTMzNjUsLjkwNDMsLjkzMzY1LC45MDQzLDEuMDg1NzEsLjk2OTI3LC45NjcwNiwuOTE0ODQsLjg2MDM1LC45MzU3NSwuOTY5MjQsLjk1OTIzLDEsMSwuODU3NzEsMS4yMTk2OCwxLjExNDM3LDEuMTE0MzcsLjkzMTA5LC45MTIwMiwuNjA0MTEsLjg0MTY0LC41NTU3MiwxLjAxMTczLC45NzM2MSwuODE4MTgsLjgxODE4LC45NjYzNSwuNzgwMzIsLjcyNzI3LC45MjM2NiwuOTg2MDEsMS4wMzQwNSwuNzc5NjgsMS4wOTc5OSwxLjIsLjk2NzA2LC44NTk0NCwuODU2MzgsLjk2NDkxLC43NTg0MiwuOTMzNjUsLjk4MzEsLjk2OTI0LC45NTc4MiwuODY5NjksLjk0MTUyLDEuMDc3OTYsMS4wMzU4NCwuNzg0MzcsLjk2OTI0LC45ODcxNSwuODM5NjgsLjgzNDkxLC44NTc3MSwuODI4NywuOTQ0OTIsLjg4NDMzLC45Mjg3LDEuMDA5OCwuOTU3ODIsLjgyODcsMS4wNjI1LC45ODI0OCwxLjAzNDI0LDEuMiwxLjAxMDcxLDEuMDYyNSwuOTUyNDYsMS4wMzgwOSwxLjA0OTEyLC45ODI0OCwxLjAwMjIxLDEuMDM0MjQsMS4wNTQ0MywxLjIsMS4wNDc4NSwuOTk2MDksMS4wMDE2OSwxLjA1MTc2LC45OTM0NiwxLjA1MzU2LC45MDg3LDEuMDMwMDQsLjk1NTQyLC45MzExNywxLjIzMzYyLDEuMDEwNzEsMS4wNzgzMSwxLjAyNTEyLDEuMDUyMDUsMS4wMzUwMiwxLjIsMS4wMTA3MSwxLjA1MzU2LDEuMDEwNzEsMS4wMzUwMiwuNzU4NDIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wMzcxOSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTQwMywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjA0MDIxLDEsMSwxLDEsMSwxLC45ODk2NSwxLjAwMDY4LC45ODk2NSwxLjAwMDY4LC45ODk2NSwxLjAwMDY4LC44Mjg3LC45Njc3NywxLDEuMjAwODgsLjg5OTAzLDEsMSwuNzUxNTUsMS4wMzA3NywxLjAzMDc3LDEuMDMwNzcsMS4wMzA3NywxLjEzMTk2LDEuMTMxOTYsMS4xMzE5NiwuNjc0MjgsLjY3NDI4LDEuMTYwMzksLjczMjkxLDEuMjA5OTYsMS4yMjEzNSwxLjA2NDgzLC45NDg2OCwuOTQ4NjgsLjk1OTk2LDEuMjQ2MzMsMSwxLjA3NDk3LC44Nzc5NiwuOTY5MjcsMS4wMTUxOCwuOTY5MjcsMSwxLDEsLjc3Mjk1LDEsMSwxLjEwNTM5LDEuMTA1MzksMS4xMTM1OCwxLjA2OTY3LC44NjI3OSwuOTQ0MzQsLjg2Mjc5LC45NDQzNCwuODYxODIsMSwxLDEuMDgzLDEsLjkxNTc4LC44NjUwNywxLjE3MTQsMS4xODQxNiwxLjE0NTg5LC42OTgyNSwuOTc2MjIsMS45Njk3LDEuMjQ4MjIsMS4yNDgyMiwxLjE3MjM4LDEuMjQ4MjIsMS4yNDgyMiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuNDI2MDMsMSwuOTk4NjIsLjk5ODYyLDEsLjg3MDI1LC44NzAyNSwuODcwMjUsLjg3MDI1LDEuMTgwODMsMS40MjYwMywxLDEuNDI2MDMsMS40MjYwMywuOTk4NjIsMSwxLDEsMSwxLDEuMjg4NiwxLjA0MzE1LDEuMTUyOTYsMS4zNDE2MywxLDEsMSwxLjEwOTM4LDEuMTA5MzgsMSwxLDEsMS4wNTQyNSwxLjA5OTcxLDEuMDk5NzEsMS4wOTk3MSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLHQuU2Vnb2V1aVJlZ3VsYXJNZXRyaWNzPXtsaW5lSGVpZ2h0OjEuMzMwMDgsbGluZUdhcDowfX0sKGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LlBvc3RTY3JpcHRFdmFsdWF0b3I9dC5Qb3N0U2NyaXB0Q29tcGlsZXI9dC5QREZGdW5jdGlvbkZhY3Rvcnk9dm9pZCAwLHQuaXNQREZGdW5jdGlvbj1mdW5jdGlvbihlKXt2YXIgdDtpZigib2JqZWN0IiE9PWcoZSkpcmV0dXJuITE7aWYoZSBpbnN0YW5jZW9mIG4uRGljdCl0PWU7ZWxzZXtpZighKGUgaW5zdGFuY2VvZiBvLkJhc2VTdHJlYW0pKXJldHVybiExO3Q9ZS5kaWN0fXJldHVybiB0LmhhcygiRnVuY3Rpb25UeXBlIil9O3ZhciBuPXIoMTM0KSxhPXIoMiksaT1yKDE4Nyksbz1yKDEzNikscz1yKDE4OCk7ZnVuY3Rpb24gYyhlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSx0JiZ1KGUsdCl9ZnVuY3Rpb24gdShlLHQpe3JldHVybiB1PU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuX19wcm90b19fPXQsZX0sdShlLHQpfWZ1bmN0aW9uIGwoZSl7dmFyIHQ9ZnVuY3Rpb24oKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdClyZXR1cm4hMTtpZihSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLChmdW5jdGlvbigpe30pKSksITB9Y2F0Y2goZSl7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciByLG49ZihlKTtpZih0KXt2YXIgYT1mKHRoaXMpLmNvbnN0cnVjdG9yO3I9UmVmbGVjdC5jb25zdHJ1Y3Qobixhcmd1bWVudHMsYSl9ZWxzZSByPW4uYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBmdW5jdGlvbihlLHQpe2lmKHQmJigib2JqZWN0Ij09PWcodCl8fCJmdW5jdGlvbiI9PXR5cGVvZiB0KSlyZXR1cm4gdDtpZih2b2lkIDAhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKHZvaWQgMD09PWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZX0oZSl9KHRoaXMscil9fWZ1bmN0aW9uIGYoZSl7cmV0dXJuIGY9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSl9LGYoZSl9ZnVuY3Rpb24gaChlLHQpe3ZhciByPSJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbIkBAaXRlcmF0b3IiXTtpZighcil7aWYoQXJyYXkuaXNBcnJheShlKXx8KHI9ZChlKSl8fHQmJmUmJiJudW1iZXIiPT10eXBlb2YgZS5sZW5ndGgpe3ImJihlPXIpO3ZhciBuPTAsYT1mdW5jdGlvbigpe307cmV0dXJue3M6YSxuOmZ1bmN0aW9uKCl7cmV0dXJuIG4+PWUubGVuZ3RoP3tkb25lOiEwfTp7ZG9uZTohMSx2YWx1ZTplW24rK119fSxlOmZ1bmN0aW9uKGUpe3Rocm93IGV9LGY6YX19dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGl0ZXJhdGUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfXZhciBpLG89ITAscz0hMTtyZXR1cm57czpmdW5jdGlvbigpe3I9ci5jYWxsKGUpfSxuOmZ1bmN0aW9uKCl7dmFyIGU9ci5uZXh0KCk7cmV0dXJuIG89ZS5kb25lLGV9LGU6ZnVuY3Rpb24oZSl7cz0hMCxpPWV9LGY6ZnVuY3Rpb24oKXt0cnl7b3x8bnVsbD09ci5yZXR1cm58fHIucmV0dXJuKCl9ZmluYWxseXtpZihzKXRocm93IGl9fX19ZnVuY3Rpb24gZChlLHQpe2lmKGUpe2lmKCJzdHJpbmciPT10eXBlb2YgZSlyZXR1cm4gcChlLHQpO3ZhciByPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtyZXR1cm4iT2JqZWN0Ij09PXImJmUuY29uc3RydWN0b3ImJihyPWUuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1yfHwiU2V0Ij09PXI/QXJyYXkuZnJvbShlKToiQXJndW1lbnRzIj09PXJ8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KHIpP3AoZSx0KTp2b2lkIDB9fWZ1bmN0aW9uIHAoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIHI9MCxuPW5ldyBBcnJheSh0KTtyPHQ7cisrKW5bcl09ZVtyXTtyZXR1cm4gbn1mdW5jdGlvbiBnKGUpe3JldHVybiBnPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSxnKGUpfWZ1bmN0aW9uIHYoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiB5KGUsdCl7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBuPXRbcl07bi5lbnVtZXJhYmxlPW4uZW51bWVyYWJsZXx8ITEsbi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIG4mJihuLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwodm9pZCAwLGE9ZnVuY3Rpb24oZSx0KXtpZigib2JqZWN0IiE9PWcoZSl8fG51bGw9PT1lKXJldHVybiBlO3ZhciByPWVbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1yKXt2YXIgbj1yLmNhbGwoZSwic3RyaW5nIik7aWYoIm9iamVjdCIhPT1nKG4pKXJldHVybiBuO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuIFN0cmluZyhlKX0obi5rZXkpLCJzeW1ib2wiPT09ZyhhKT9hOlN0cmluZyhhKSksbil9dmFyIGF9ZnVuY3Rpb24gbShlLHQscil7cmV0dXJuIHQmJnkoZS5wcm90b3R5cGUsdCksciYmeShlLHIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGV9dmFyIGI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQpe3ZhciByPXQueHJlZixuPXQuaXNFdmFsU3VwcG9ydGVkLGE9dm9pZCAwPT09bnx8bjt2KHRoaXMsZSksdGhpcy54cmVmPXIsdGhpcy5pc0V2YWxTdXBwb3J0ZWQ9ITEhPT1hfXJldHVybiBtKGUsW3trZXk6ImNyZWF0ZSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5nZXRDYWNoZWQoZSk7aWYodClyZXR1cm4gdDt2YXIgcj1rLnBhcnNlKHt4cmVmOnRoaXMueHJlZixpc0V2YWxTdXBwb3J0ZWQ6dGhpcy5pc0V2YWxTdXBwb3J0ZWQsZm46ZSBpbnN0YW5jZW9mIG4uUmVmP3RoaXMueHJlZi5mZXRjaChlKTplfSk7cmV0dXJuIHRoaXMuX2NhY2hlKGUscikscn19LHtrZXk6ImNyZWF0ZUZyb21BcnJheSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5nZXRDYWNoZWQoZSk7aWYodClyZXR1cm4gdDt2YXIgcj1rLnBhcnNlQXJyYXkoe3hyZWY6dGhpcy54cmVmLGlzRXZhbFN1cHBvcnRlZDp0aGlzLmlzRXZhbFN1cHBvcnRlZCxmbk9iajplIGluc3RhbmNlb2Ygbi5SZWY/dGhpcy54cmVmLmZldGNoKGUpOmV9KTtyZXR1cm4gdGhpcy5fY2FjaGUoZSxyKSxyfX0se2tleToiZ2V0Q2FjaGVkIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdDtpZihlIGluc3RhbmNlb2Ygbi5SZWY/dD1lOmUgaW5zdGFuY2VvZiBuLkRpY3Q/dD1lLm9iaklkOmUgaW5zdGFuY2VvZiBvLkJhc2VTdHJlYW0mJih0PWUuZGljdCYmZS5kaWN0Lm9iaklkKSx0KXt2YXIgcj10aGlzLl9sb2NhbEZ1bmN0aW9uQ2FjaGUuZ2V0QnlSZWYodCk7aWYocilyZXR1cm4gcn1yZXR1cm4gbnVsbH19LHtrZXk6Il9jYWNoZSIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtpZighdCl0aHJvdyBuZXcgRXJyb3IoJ1BERkZ1bmN0aW9uRmFjdG9yeS5fY2FjaGUgLSBleHBlY3RlZCAicGFyc2VkRnVuY3Rpb24iIGFyZ3VtZW50LicpO3ZhciByO2UgaW5zdGFuY2VvZiBuLlJlZj9yPWU6ZSBpbnN0YW5jZW9mIG4uRGljdD9yPWUub2JqSWQ6ZSBpbnN0YW5jZW9mIG8uQmFzZVN0cmVhbSYmKHI9ZS5kaWN0JiZlLmRpY3Qub2JqSWQpLHImJnRoaXMuX2xvY2FsRnVuY3Rpb25DYWNoZS5zZXQobnVsbCxyLHQpfX0se2tleToiX2xvY2FsRnVuY3Rpb25DYWNoZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuKDAsYS5zaGFkb3cpKHRoaXMsIl9sb2NhbEZ1bmN0aW9uQ2FjaGUiLG5ldyBzLkxvY2FsRnVuY3Rpb25DYWNoZSl9fV0pLGV9KCk7ZnVuY3Rpb24gdyhlKXtpZighQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gbnVsbDtmb3IodmFyIHQ9ZS5sZW5ndGgscj0wO3I8dDtyKyspaWYoIm51bWJlciIhPXR5cGVvZiBlW3JdKXtmb3IodmFyIG49bmV3IEFycmF5KHQpLGE9MDthPHQ7YSsrKW5bYV09K2VbYV07cmV0dXJuIG59cmV0dXJuIGV9dC5QREZGdW5jdGlvbkZhY3Rvcnk9Yjt2YXIgaz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXt2KHRoaXMsZSl9cmV0dXJuIG0oZSxudWxsLFt7a2V5OiJnZXRTYW1wbGVBcnJheSIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIsbil7dmFyIGEsaSxvPTE7Zm9yKGE9MCxpPWUubGVuZ3RoO2E8aTthKyspbyo9ZVthXTtvKj10O3ZhciBzPW5ldyBBcnJheShvKSxjPTAsdT0wLGw9MS8oTWF0aC5wb3coMixyKS0xKSxmPW4uZ2V0Qnl0ZXMoKG8qcis3KS84KSxoPTA7Zm9yKGE9MDthPG87YSsrKXtmb3IoO2M8cjspdTw8PTgsdXw9ZltoKytdLGMrPTg7Yy09cixzW2FdPSh1Pj5jKSpsLHUmPSgxPDxjKS0xfXJldHVybiBzfX0se2tleToicGFyc2UiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWUueHJlZixyPWUuaXNFdmFsU3VwcG9ydGVkLG49ZS5mbixpPW4uZGljdHx8bjtzd2l0Y2goaS5nZXQoIkZ1bmN0aW9uVHlwZSIpKXtjYXNlIDA6cmV0dXJuIHRoaXMuY29uc3RydWN0U2FtcGxlZCh7eHJlZjp0LGlzRXZhbFN1cHBvcnRlZDpyLGZuOm4sZGljdDppfSk7Y2FzZSAxOmJyZWFrO2Nhc2UgMjpyZXR1cm4gdGhpcy5jb25zdHJ1Y3RJbnRlcnBvbGF0ZWQoe3hyZWY6dCxpc0V2YWxTdXBwb3J0ZWQ6cixkaWN0Oml9KTtjYXNlIDM6cmV0dXJuIHRoaXMuY29uc3RydWN0U3RpY2hlZCh7eHJlZjp0LGlzRXZhbFN1cHBvcnRlZDpyLGRpY3Q6aX0pO2Nhc2UgNDpyZXR1cm4gdGhpcy5jb25zdHJ1Y3RQb3N0U2NyaXB0KHt4cmVmOnQsaXNFdmFsU3VwcG9ydGVkOnIsZm46bixkaWN0Oml9KX10aHJvdyBuZXcgYS5Gb3JtYXRFcnJvcigiVW5rbm93biB0eXBlIG9mIGZ1bmN0aW9uIil9fSx7a2V5OiJwYXJzZUFycmF5Iix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1lLnhyZWYscj1lLmlzRXZhbFN1cHBvcnRlZCxuPWUuZm5PYmo7aWYoIUFycmF5LmlzQXJyYXkobikpcmV0dXJuIHRoaXMucGFyc2Uoe3hyZWY6dCxpc0V2YWxTdXBwb3J0ZWQ6cixmbjpufSk7dmFyIGEsaT1bXSxvPWgobik7dHJ5e2ZvcihvLnMoKTshKGE9by5uKCkpLmRvbmU7KXt2YXIgcz1hLnZhbHVlO2kucHVzaCh0aGlzLnBhcnNlKHt4cmVmOnQsaXNFdmFsU3VwcG9ydGVkOnIsZm46dC5mZXRjaElmUmVmKHMpfSkpfX1jYXRjaChlKXtvLmUoZSl9ZmluYWxseXtvLmYoKX1yZXR1cm4gZnVuY3Rpb24oZSx0LHIsbil7Zm9yKHZhciBhPTAsbz1pLmxlbmd0aDthPG87YSsrKWlbYV0oZSx0LHIsbithKX19fSx7a2V5OiJjb25zdHJ1Y3RTYW1wbGVkIix2YWx1ZTpmdW5jdGlvbihlKXtlLnhyZWYsZS5pc0V2YWxTdXBwb3J0ZWQ7dmFyIHQ9ZS5mbixyPWUuZGljdDtmdW5jdGlvbiBuKGUpe2Zvcih2YXIgdD1lLmxlbmd0aCxyPVtdLG49MCxhPTA7YTx0O2ErPTIpcltuKytdPVtlW2FdLGVbYSsxXV07cmV0dXJuIHJ9ZnVuY3Rpb24gaShlLHQscixuLGEpe3JldHVybiBuKyhhLW4pLyhyLXQpKihlLXQpfXZhciBvPXcoci5nZXRBcnJheSgiRG9tYWluIikpLHM9dyhyLmdldEFycmF5KCJSYW5nZSIpKTtpZighb3x8IXMpdGhyb3cgbmV3IGEuRm9ybWF0RXJyb3IoIk5vIGRvbWFpbiBvciByYW5nZSIpO3ZhciBjPW8ubGVuZ3RoLzIsdT1zLmxlbmd0aC8yO289bihvKSxzPW4ocyk7dmFyIGw9dyhyLmdldEFycmF5KCJTaXplIikpLGY9ci5nZXQoIkJpdHNQZXJTYW1wbGUiKSxoPXIuZ2V0KCJPcmRlciIpfHwxOzEhPT1oJiYoMCxhLmluZm8pKCJObyBzdXBwb3J0IGZvciBjdWJpYyBzcGxpbmUgaW50ZXJwb2xhdGlvbjogIitoKTt2YXIgZD13KHIuZ2V0QXJyYXkoIkVuY29kZSIpKTtpZihkKWQ9bihkKTtlbHNle2Q9W107Zm9yKHZhciBwPTA7cDxjOysrcClkLnB1c2goWzAsbFtwXS0xXSl9dmFyIGc9dyhyLmdldEFycmF5KCJEZWNvZGUiKSk7Zz1nP24oZyk6czt2YXIgdj10aGlzLmdldFNhbXBsZUFycmF5KGwsdSxmLHQpO3JldHVybiBmdW5jdGlvbihlLHQscixuKXt2YXIgYSxmLGg9MTw8YyxwPW5ldyBGbG9hdDY0QXJyYXkoaCkseT1uZXcgVWludDMyQXJyYXkoaCk7Zm9yKGY9MDtmPGg7ZisrKXBbZl09MTt2YXIgbT11LGI9MTtmb3IoYT0wO2E8YzsrK2Epe3ZhciB3PW9bYV1bMF0saz1vW2FdWzFdLFM9aShNYXRoLm1pbihNYXRoLm1heChlW3QrYV0sdyksayksdyxrLGRbYV1bMF0sZFthXVsxXSkseD1sW2FdLE89KFM9TWF0aC5taW4oTWF0aC5tYXgoUywwKSx4LTEpKTx4LTE/TWF0aC5mbG9vcihTKTpTLTEsQT1PKzEtUyxDPVMtTyxGPU8qbSxQPUYrbTtmb3IoZj0wO2Y8aDtmKyspZiZiPyhwW2ZdKj1DLHlbZl0rPVApOihwW2ZdKj1BLHlbZl0rPUYpO20qPXgsYjw8PTF9Zm9yKGY9MDtmPHU7KytmKXt2YXIgVD0wO2ZvcihhPTA7YTxoO2ErKylUKz12W3lbYV0rZl0qcFthXTtUPWkoVCwwLDEsZ1tmXVswXSxnW2ZdWzFdKSxyW24rZl09TWF0aC5taW4oTWF0aC5tYXgoVCxzW2ZdWzBdKSxzW2ZdWzFdKX19fX0se2tleToiY29uc3RydWN0SW50ZXJwb2xhdGVkIix2YWx1ZTpmdW5jdGlvbihlKXtlLnhyZWYsZS5pc0V2YWxTdXBwb3J0ZWQ7Zm9yKHZhciB0PWUuZGljdCxyPXcodC5nZXRBcnJheSgiQzAiKSl8fFswXSxuPXcodC5nZXRBcnJheSgiQzEiKSl8fFsxXSxhPXQuZ2V0KCJOIiksaT1bXSxvPTAscz1yLmxlbmd0aDtvPHM7KytvKWkucHVzaChuW29dLXJbb10pO3ZhciBjPWkubGVuZ3RoO3JldHVybiBmdW5jdGlvbihlLHQsbixvKXtmb3IodmFyIHM9MT09PWE/ZVt0XTpNYXRoLnBvdyhlW3RdLGEpLHU9MDt1PGM7Kyt1KW5bbyt1XT1yW3VdK3MqaVt1XX19fSx7a2V5OiJjb25zdHJ1Y3RTdGljaGVkIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1lLnhyZWYscj1lLmlzRXZhbFN1cHBvcnRlZCxuPWUuZGljdCxpPXcobi5nZXRBcnJheSgiRG9tYWluIikpO2lmKCFpKXRocm93IG5ldyBhLkZvcm1hdEVycm9yKCJObyBkb21haW4iKTtpZigxIT1pLmxlbmd0aC8yKXRocm93IG5ldyBhLkZvcm1hdEVycm9yKCJCYWQgZG9tYWluIGZvciBzdGljaGVkIGZ1bmN0aW9uIik7dmFyIG8scz1bXSxjPWgobi5nZXQoIkZ1bmN0aW9ucyIpKTt0cnl7Zm9yKGMucygpOyEobz1jLm4oKSkuZG9uZTspe3ZhciB1PW8udmFsdWU7cy5wdXNoKHRoaXMucGFyc2Uoe3hyZWY6dCxpc0V2YWxTdXBwb3J0ZWQ6cixmbjp0LmZldGNoSWZSZWYodSl9KSl9fWNhdGNoKGUpe2MuZShlKX1maW5hbGx5e2MuZigpfXZhciBsPXcobi5nZXRBcnJheSgiQm91bmRzIikpLGY9dyhuLmdldEFycmF5KCJFbmNvZGUiKSksZD1uZXcgRmxvYXQzMkFycmF5KDEpO3JldHVybiBmdW5jdGlvbihlLHQscixuKXt2YXIgYSxvPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT5yP2U9cjplPHQmJihlPXQpLGV9KGVbdF0saVswXSxpWzFdKSxjPWwubGVuZ3RoO2ZvcihhPTA7YTxjJiYhKG88bFthXSk7KythKTt2YXIgdT1pWzBdO2E+MCYmKHU9bFthLTFdKTt2YXIgaD1pWzFdO2E8bC5sZW5ndGgmJihoPWxbYV0pO3ZhciBwPWZbMiphXSxnPWZbMiphKzFdO2RbMF09dT09PWg/cDpwKyhvLXUpKihnLXApLyhoLXUpLHNbYV0oZCwwLHIsbil9fX0se2tleToiY29uc3RydWN0UG9zdFNjcmlwdCIsdmFsdWU6ZnVuY3Rpb24oZSl7ZS54cmVmO3ZhciB0PWUuaXNFdmFsU3VwcG9ydGVkLHI9ZS5mbixuPWUuZGljdCxvPXcobi5nZXRBcnJheSgiRG9tYWluIikpLHM9dyhuLmdldEFycmF5KCJSYW5nZSIpKTtpZighbyl0aHJvdyBuZXcgYS5Gb3JtYXRFcnJvcigiTm8gZG9tYWluLiIpO2lmKCFzKXRocm93IG5ldyBhLkZvcm1hdEVycm9yKCJObyByYW5nZS4iKTt2YXIgYz1uZXcgaS5Qb3N0U2NyaXB0TGV4ZXIociksdT1uZXcgaS5Qb3N0U2NyaXB0UGFyc2VyKGMpLnBhcnNlKCk7aWYodCYmYS5GZWF0dXJlVGVzdC5pc0V2YWxTdXBwb3J0ZWQpe3ZhciBsPShuZXcgUikuY29tcGlsZSh1LG8scyk7aWYobClyZXR1cm4gbmV3IEZ1bmN0aW9uKCJzcmMiLCJzcmNPZmZzZXQiLCJkZXN0IiwiZGVzdE9mZnNldCIsbCl9KDAsYS5pbmZvKSgiVW5hYmxlIHRvIGNvbXBpbGUgUFMgZnVuY3Rpb24iKTt2YXIgZj1zLmxlbmd0aD4+MSxoPW8ubGVuZ3RoPj4xLGQ9bmV3IHgodSkscD1PYmplY3QuY3JlYXRlKG51bGwpLGc9ODE5Mix2PW5ldyBGbG9hdDMyQXJyYXkoaCk7cmV0dXJuIGZ1bmN0aW9uKGUsdCxyLG4pe3ZhciBhLGksbz0iIixjPXY7Zm9yKGE9MDthPGg7YSsrKWk9ZVt0K2FdLGNbYV09aSxvKz1pKyJfIjt2YXIgdT1wW29dO2lmKHZvaWQgMD09PXUpe3ZhciBsPW5ldyBGbG9hdDMyQXJyYXkoZikseT1kLmV4ZWN1dGUoYyksbT15Lmxlbmd0aC1mO2ZvcihhPTA7YTxmO2ErKyl7aT15W20rYV07dmFyIGI9c1syKmFdOyhpPGJ8fGk+KGI9c1syKmErMV0pKSYmKGk9YiksbFthXT1pfWc+MCYmKGctLSxwW29dPWwpLHIuc2V0KGwsbil9ZWxzZSByLnNldCh1LG4pfX19XSksZX0oKSxTPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0KXt2KHRoaXMsZSksdGhpcy5zdGFjaz10P0FycmF5LmZyb20odCk6W119cmV0dXJuIG0oZSxbe2tleToicHVzaCIsdmFsdWU6ZnVuY3Rpb24odCl7aWYodGhpcy5zdGFjay5sZW5ndGg+PWUuTUFYX1NUQUNLX1NJWkUpdGhyb3cgbmV3IEVycm9yKCJQb3N0U2NyaXB0IGZ1bmN0aW9uIHN0YWNrIG92ZXJmbG93LiIpO3RoaXMuc3RhY2sucHVzaCh0KX19LHtrZXk6InBvcCIsdmFsdWU6ZnVuY3Rpb24oKXtpZih0aGlzLnN0YWNrLmxlbmd0aDw9MCl0aHJvdyBuZXcgRXJyb3IoIlBvc3RTY3JpcHQgZnVuY3Rpb24gc3RhY2sgdW5kZXJmbG93LiIpO3JldHVybiB0aGlzLnN0YWNrLnBvcCgpfX0se2tleToiY29weSIsdmFsdWU6ZnVuY3Rpb24odCl7aWYodGhpcy5zdGFjay5sZW5ndGgrdD49ZS5NQVhfU1RBQ0tfU0laRSl0aHJvdyBuZXcgRXJyb3IoIlBvc3RTY3JpcHQgZnVuY3Rpb24gc3RhY2sgb3ZlcmZsb3cuIik7Zm9yKHZhciByPXRoaXMuc3RhY2ssbj1yLmxlbmd0aC10LGE9dC0xO2E+PTA7YS0tLG4rKylyLnB1c2gocltuXSl9fSx7a2V5OiJpbmRleCIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5wdXNoKHRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGgtZS0xXSl9fSx7a2V5OiJyb2xsIix2YWx1ZTpmdW5jdGlvbihlLHQpe2Zvcih2YXIgcj10aGlzLnN0YWNrLG49ci5sZW5ndGgtZSxhPXIubGVuZ3RoLTEsaT1uKyh0LU1hdGguZmxvb3IodC9lKSplKSxvPW4scz1hO288cztvKysscy0tKXt2YXIgYz1yW29dO3Jbb109cltzXSxyW3NdPWN9Zm9yKHZhciB1PW4sbD1pLTE7dTxsO3UrKyxsLS0pe3ZhciBmPXJbdV07clt1XT1yW2xdLHJbbF09Zn1mb3IodmFyIGg9aSxkPWE7aDxkO2grKyxkLS0pe3ZhciBwPXJbaF07cltoXT1yW2RdLHJbZF09cH19fV0sW3trZXk6Ik1BWF9TVEFDS19TSVpFIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4oMCxhLnNoYWRvdykodGhpcywiTUFYX1NUQUNLX1NJWkUiLDEwMCl9fV0pLGV9KCkseD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCl7dih0aGlzLGUpLHRoaXMub3BlcmF0b3JzPXR9cmV0dXJuIG0oZSxbe2tleToiZXhlY3V0ZSIsdmFsdWU6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LHIsbixpPW5ldyBTKGUpLG89MCxzPXRoaXMub3BlcmF0b3JzLGM9cy5sZW5ndGg7bzxjOylpZigibnVtYmVyIiE9dHlwZW9mKHQ9c1tvKytdKSlzd2l0Y2godCl7Y2FzZSJqeiI6bj1pLnBvcCgpLChyPWkucG9wKCkpfHwobz1uKTticmVhaztjYXNlImoiOm89cj1pLnBvcCgpO2JyZWFrO2Nhc2UiYWJzIjpyPWkucG9wKCksaS5wdXNoKE1hdGguYWJzKHIpKTticmVhaztjYXNlImFkZCI6bj1pLnBvcCgpLHI9aS5wb3AoKSxpLnB1c2gocituKTticmVhaztjYXNlImFuZCI6bj1pLnBvcCgpLCJib29sZWFuIj09dHlwZW9mKHI9aS5wb3AoKSkmJiJib29sZWFuIj09dHlwZW9mIG4/aS5wdXNoKHImJm4pOmkucHVzaChyJm4pO2JyZWFrO2Nhc2UiYXRhbiI6cj1pLnBvcCgpLGkucHVzaChNYXRoLmF0YW4ocikpO2JyZWFrO2Nhc2UiYml0c2hpZnQiOm49aS5wb3AoKSwocj1pLnBvcCgpKT4wP2kucHVzaChyPDxuKTppLnB1c2gocj4+bik7YnJlYWs7Y2FzZSJjZWlsaW5nIjpyPWkucG9wKCksaS5wdXNoKE1hdGguY2VpbChyKSk7YnJlYWs7Y2FzZSJjb3B5IjpyPWkucG9wKCksaS5jb3B5KHIpO2JyZWFrO2Nhc2UiY29zIjpyPWkucG9wKCksaS5wdXNoKE1hdGguY29zKHIpKTticmVhaztjYXNlImN2aSI6cj0wfGkucG9wKCksaS5wdXNoKHIpO2JyZWFrO2Nhc2UiY3ZyIjpicmVhaztjYXNlImRpdiI6bj1pLnBvcCgpLHI9aS5wb3AoKSxpLnB1c2goci9uKTticmVhaztjYXNlImR1cCI6aS5jb3B5KDEpO2JyZWFrO2Nhc2UiZXEiOm49aS5wb3AoKSxyPWkucG9wKCksaS5wdXNoKHI9PT1uKTticmVhaztjYXNlImV4Y2giOmkucm9sbCgyLDEpO2JyZWFrO2Nhc2UiZXhwIjpuPWkucG9wKCkscj1pLnBvcCgpLGkucHVzaChNYXRoLnBvdyhyLG4pKTticmVhaztjYXNlImZhbHNlIjppLnB1c2goITEpO2JyZWFrO2Nhc2UiZmxvb3IiOnI9aS5wb3AoKSxpLnB1c2goTWF0aC5mbG9vcihyKSk7YnJlYWs7Y2FzZSJnZSI6bj1pLnBvcCgpLHI9aS5wb3AoKSxpLnB1c2gocj49bik7YnJlYWs7Y2FzZSJndCI6bj1pLnBvcCgpLHI9aS5wb3AoKSxpLnB1c2gocj5uKTticmVhaztjYXNlImlkaXYiOm49aS5wb3AoKSxyPWkucG9wKCksaS5wdXNoKHIvbnwwKTticmVhaztjYXNlImluZGV4IjpyPWkucG9wKCksaS5pbmRleChyKTticmVhaztjYXNlImxlIjpuPWkucG9wKCkscj1pLnBvcCgpLGkucHVzaChyPD1uKTticmVhaztjYXNlImxuIjpyPWkucG9wKCksaS5wdXNoKE1hdGgubG9nKHIpKTticmVhaztjYXNlImxvZyI6cj1pLnBvcCgpLGkucHVzaChNYXRoLmxvZyhyKS9NYXRoLkxOMTApO2JyZWFrO2Nhc2UibHQiOm49aS5wb3AoKSxyPWkucG9wKCksaS5wdXNoKHI8bik7YnJlYWs7Y2FzZSJtb2QiOm49aS5wb3AoKSxyPWkucG9wKCksaS5wdXNoKHIlbik7YnJlYWs7Y2FzZSJtdWwiOm49aS5wb3AoKSxyPWkucG9wKCksaS5wdXNoKHIqbik7YnJlYWs7Y2FzZSJuZSI6bj1pLnBvcCgpLHI9aS5wb3AoKSxpLnB1c2gociE9PW4pO2JyZWFrO2Nhc2UibmVnIjpyPWkucG9wKCksaS5wdXNoKC1yKTticmVhaztjYXNlIm5vdCI6ImJvb2xlYW4iPT10eXBlb2Yocj1pLnBvcCgpKT9pLnB1c2goIXIpOmkucHVzaCh+cik7YnJlYWs7Y2FzZSJvciI6bj1pLnBvcCgpLCJib29sZWFuIj09dHlwZW9mKHI9aS5wb3AoKSkmJiJib29sZWFuIj09dHlwZW9mIG4/aS5wdXNoKHJ8fG4pOmkucHVzaChyfG4pO2JyZWFrO2Nhc2UicG9wIjppLnBvcCgpO2JyZWFrO2Nhc2Uicm9sbCI6bj1pLnBvcCgpLHI9aS5wb3AoKSxpLnJvbGwocixuKTticmVhaztjYXNlInJvdW5kIjpyPWkucG9wKCksaS5wdXNoKE1hdGgucm91bmQocikpO2JyZWFrO2Nhc2Uic2luIjpyPWkucG9wKCksaS5wdXNoKE1hdGguc2luKHIpKTticmVhaztjYXNlInNxcnQiOnI9aS5wb3AoKSxpLnB1c2goTWF0aC5zcXJ0KHIpKTticmVhaztjYXNlInN1YiI6bj1pLnBvcCgpLHI9aS5wb3AoKSxpLnB1c2goci1uKTticmVhaztjYXNlInRydWUiOmkucHVzaCghMCk7YnJlYWs7Y2FzZSJ0cnVuY2F0ZSI6cj0ocj1pLnBvcCgpKTwwP01hdGguY2VpbChyKTpNYXRoLmZsb29yKHIpLGkucHVzaChyKTticmVhaztjYXNlInhvciI6bj1pLnBvcCgpLCJib29sZWFuIj09dHlwZW9mKHI9aS5wb3AoKSkmJiJib29sZWFuIj09dHlwZW9mIG4/aS5wdXNoKHIhPT1uKTppLnB1c2gocl5uKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBhLkZvcm1hdEVycm9yKCJVbmtub3duIG9wZXJhdG9yICIuY29uY2F0KHQpKX1lbHNlIGkucHVzaCh0KTtyZXR1cm4gaS5zdGFja319XSksZX0oKTt0LlBvc3RTY3JpcHRFdmFsdWF0b3I9eDt2YXIgTz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCl7dih0aGlzLGUpLHRoaXMudHlwZT10fXJldHVybiBtKGUsW3trZXk6InZpc2l0Iix2YWx1ZTpmdW5jdGlvbihlKXsoMCxhLnVucmVhY2hhYmxlKSgiYWJzdHJhY3QgbWV0aG9kIil9fV0pLGV9KCksQT1mdW5jdGlvbihlKXtjKHIsZSk7dmFyIHQ9bChyKTtmdW5jdGlvbiByKGUsbixhKXt2YXIgaTtyZXR1cm4gdih0aGlzLHIpLChpPXQuY2FsbCh0aGlzLCJhcmdzIikpLmluZGV4PWUsaS5taW49bixpLm1heD1hLGl9cmV0dXJuIG0ocixbe2tleToidmlzaXQiLHZhbHVlOmZ1bmN0aW9uKGUpe2UudmlzaXRBcmd1bWVudCh0aGlzKX19XSkscn0oTyksQz1mdW5jdGlvbihlKXtjKHIsZSk7dmFyIHQ9bChyKTtmdW5jdGlvbiByKGUpe3ZhciBuO3JldHVybiB2KHRoaXMsciksKG49dC5jYWxsKHRoaXMsImxpdGVyYWwiKSkubnVtYmVyPWUsbi5taW49ZSxuLm1heD1lLG59cmV0dXJuIG0ocixbe2tleToidmlzaXQiLHZhbHVlOmZ1bmN0aW9uKGUpe2UudmlzaXRMaXRlcmFsKHRoaXMpfX1dKSxyfShPKSxGPWZ1bmN0aW9uKGUpe2MocixlKTt2YXIgdD1sKHIpO2Z1bmN0aW9uIHIoZSxuLGEsaSxvKXt2YXIgcztyZXR1cm4gdih0aGlzLHIpLChzPXQuY2FsbCh0aGlzLCJiaW5hcnkiKSkub3A9ZSxzLmFyZzE9bixzLmFyZzI9YSxzLm1pbj1pLHMubWF4PW8sc31yZXR1cm4gbShyLFt7a2V5OiJ2aXNpdCIsdmFsdWU6ZnVuY3Rpb24oZSl7ZS52aXNpdEJpbmFyeU9wZXJhdGlvbih0aGlzKX19XSkscn0oTyksUD1mdW5jdGlvbihlKXtjKHIsZSk7dmFyIHQ9bChyKTtmdW5jdGlvbiByKGUsbil7dmFyIGE7cmV0dXJuIHYodGhpcyxyKSwoYT10LmNhbGwodGhpcywibWF4IikpLmFyZz1lLGEubWluPWUubWluLGEubWF4PW4sYX1yZXR1cm4gbShyLFt7a2V5OiJ2aXNpdCIsdmFsdWU6ZnVuY3Rpb24oZSl7ZS52aXNpdE1pbih0aGlzKX19XSkscn0oTyksVD1mdW5jdGlvbihlKXtjKHIsZSk7dmFyIHQ9bChyKTtmdW5jdGlvbiByKGUsbixhKXt2YXIgaTtyZXR1cm4gdih0aGlzLHIpLChpPXQuY2FsbCh0aGlzLCJ2YXIiKSkuaW5kZXg9ZSxpLm1pbj1uLGkubWF4PWEsaX1yZXR1cm4gbShyLFt7a2V5OiJ2aXNpdCIsdmFsdWU6ZnVuY3Rpb24oZSl7ZS52aXNpdFZhcmlhYmxlKHRoaXMpfX1dKSxyfShPKSxJPWZ1bmN0aW9uKGUpe2MocixlKTt2YXIgdD1sKHIpO2Z1bmN0aW9uIHIoZSxuKXt2YXIgYTtyZXR1cm4gdih0aGlzLHIpLChhPXQuY2FsbCh0aGlzLCJkZWZpbml0aW9uIikpLnZhcmlhYmxlPWUsYS5hcmc9bixhfXJldHVybiBtKHIsW3trZXk6InZpc2l0Iix2YWx1ZTpmdW5jdGlvbihlKXtlLnZpc2l0VmFyaWFibGVEZWZpbml0aW9uKHRoaXMpfX1dKSxyfShPKSxFPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe3YodGhpcyxlKSx0aGlzLnBhcnRzPVtdfXJldHVybiBtKGUsW3trZXk6InZpc2l0QXJndW1lbnQiLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMucGFydHMucHVzaCgiTWF0aC5tYXgoIixlLm1pbiwiLCBNYXRoLm1pbigiLGUubWF4LCIsIHNyY1tzcmNPZmZzZXQgKyAiLGUuaW5kZXgsIl0pKSIpfX0se2tleToidmlzaXRWYXJpYWJsZSIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5wYXJ0cy5wdXNoKCJ2IixlLmluZGV4KX19LHtrZXk6InZpc2l0TGl0ZXJhbCIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5wYXJ0cy5wdXNoKGUubnVtYmVyKX19LHtrZXk6InZpc2l0QmluYXJ5T3BlcmF0aW9uIix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLnBhcnRzLnB1c2goIigiKSxlLmFyZzEudmlzaXQodGhpcyksdGhpcy5wYXJ0cy5wdXNoKCIgIixlLm9wLCIgIiksZS5hcmcyLnZpc2l0KHRoaXMpLHRoaXMucGFydHMucHVzaCgiKSIpfX0se2tleToidmlzaXRWYXJpYWJsZURlZmluaXRpb24iLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMucGFydHMucHVzaCgidmFyICIpLGUudmFyaWFibGUudmlzaXQodGhpcyksdGhpcy5wYXJ0cy5wdXNoKCIgPSAiKSxlLmFyZy52aXNpdCh0aGlzKSx0aGlzLnBhcnRzLnB1c2goIjsiKX19LHtrZXk6InZpc2l0TWluIix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLnBhcnRzLnB1c2goIk1hdGgubWluKCIpLGUuYXJnLnZpc2l0KHRoaXMpLHRoaXMucGFydHMucHVzaCgiLCAiLGUubWF4LCIpIil9fSx7a2V5OiJ0b1N0cmluZyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wYXJ0cy5qb2luKCIiKX19XSksZX0oKTtmdW5jdGlvbiBqKGUsdCl7cmV0dXJuImxpdGVyYWwiPT09dC50eXBlJiYwPT09dC5udW1iZXI/ZToibGl0ZXJhbCI9PT1lLnR5cGUmJjA9PT1lLm51bWJlcj90OiJsaXRlcmFsIj09PXQudHlwZSYmImxpdGVyYWwiPT09ZS50eXBlP25ldyBDKGUubnVtYmVyK3QubnVtYmVyKTpuZXcgRigiKyIsZSx0LGUubWluK3QubWluLGUubWF4K3QubWF4KX1mdW5jdGlvbiBNKGUsdCl7aWYoImxpdGVyYWwiPT09dC50eXBlKXtpZigwPT09dC5udW1iZXIpcmV0dXJuIG5ldyBDKDApO2lmKDE9PT10Lm51bWJlcilyZXR1cm4gZTtpZigibGl0ZXJhbCI9PT1lLnR5cGUpcmV0dXJuIG5ldyBDKGUubnVtYmVyKnQubnVtYmVyKX1pZigibGl0ZXJhbCI9PT1lLnR5cGUpe2lmKDA9PT1lLm51bWJlcilyZXR1cm4gbmV3IEMoMCk7aWYoMT09PWUubnVtYmVyKXJldHVybiB0fXZhciByPU1hdGgubWluKGUubWluKnQubWluLGUubWluKnQubWF4LGUubWF4KnQubWluLGUubWF4KnQubWF4KSxuPU1hdGgubWF4KGUubWluKnQubWluLGUubWluKnQubWF4LGUubWF4KnQubWluLGUubWF4KnQubWF4KTtyZXR1cm4gbmV3IEYoIioiLGUsdCxyLG4pfWZ1bmN0aW9uIF8oZSx0KXtpZigibGl0ZXJhbCI9PT10LnR5cGUpe2lmKDA9PT10Lm51bWJlcilyZXR1cm4gZTtpZigibGl0ZXJhbCI9PT1lLnR5cGUpcmV0dXJuIG5ldyBDKGUubnVtYmVyLXQubnVtYmVyKX1yZXR1cm4iYmluYXJ5Ij09PXQudHlwZSYmIi0iPT09dC5vcCYmImxpdGVyYWwiPT09ZS50eXBlJiYxPT09ZS5udW1iZXImJiJsaXRlcmFsIj09PXQuYXJnMS50eXBlJiYxPT09dC5hcmcxLm51bWJlcj90LmFyZzI6bmV3IEYoIi0iLGUsdCxlLm1pbi10Lm1heCxlLm1heC10Lm1pbil9ZnVuY3Rpb24gTChlLHQpe3JldHVybiBlLm1pbj49dD9uZXcgQyh0KTplLm1heDw9dD9lOm5ldyBQKGUsdCl9dmFyIFI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7dih0aGlzLGUpfXJldHVybiBtKGUsW3trZXk6ImNvbXBpbGUiLHZhbHVlOmZ1bmN0aW9uKGUsdCxyKXtmb3IodmFyIG4sYSxpLG8scyxjLHUsbCxmPVtdLGg9W10sZz10Lmxlbmd0aD4+MSx2PXIubGVuZ3RoPj4xLHk9MCxtPTA7bTxnO20rKylmLnB1c2gobmV3IEEobSx0WzIqbV0sdFsyKm0rMV0pKTtmb3IodmFyIGI9MCx3PWUubGVuZ3RoO2I8dztiKyspaWYoIm51bWJlciIhPXR5cGVvZihsPWVbYl0pKXN3aXRjaChsKXtjYXNlImFkZCI6aWYoZi5sZW5ndGg8MilyZXR1cm4gbnVsbDtvPWYucG9wKCksaT1mLnBvcCgpLGYucHVzaChqKGksbykpO2JyZWFrO2Nhc2UiY3ZyIjppZihmLmxlbmd0aDwxKXJldHVybiBudWxsO2JyZWFrO2Nhc2UibXVsIjppZihmLmxlbmd0aDwyKXJldHVybiBudWxsO289Zi5wb3AoKSxpPWYucG9wKCksZi5wdXNoKE0oaSxvKSk7YnJlYWs7Y2FzZSJzdWIiOmlmKGYubGVuZ3RoPDIpcmV0dXJuIG51bGw7bz1mLnBvcCgpLGk9Zi5wb3AoKSxmLnB1c2goXyhpLG8pKTticmVhaztjYXNlImV4Y2giOmlmKGYubGVuZ3RoPDIpcmV0dXJuIG51bGw7cz1mLnBvcCgpLGM9Zi5wb3AoKSxmLnB1c2gocyxjKTticmVhaztjYXNlInBvcCI6aWYoZi5sZW5ndGg8MSlyZXR1cm4gbnVsbDtmLnBvcCgpO2JyZWFrO2Nhc2UiaW5kZXgiOmlmKGYubGVuZ3RoPDEpcmV0dXJuIG51bGw7aWYoImxpdGVyYWwiIT09KGk9Zi5wb3AoKSkudHlwZSlyZXR1cm4gbnVsbDtpZigobj1pLm51bWJlcik8MHx8IU51bWJlci5pc0ludGVnZXIobil8fGYubGVuZ3RoPG4pcmV0dXJuIG51bGw7aWYoImxpdGVyYWwiPT09KHM9ZltmLmxlbmd0aC1uLTFdKS50eXBlfHwidmFyIj09PXMudHlwZSl7Zi5wdXNoKHMpO2JyZWFrfXU9bmV3IFQoeSsrLHMubWluLHMubWF4KSxmW2YubGVuZ3RoLW4tMV09dSxmLnB1c2godSksaC5wdXNoKG5ldyBJKHUscykpO2JyZWFrO2Nhc2UiZHVwIjppZihmLmxlbmd0aDwxKXJldHVybiBudWxsO2lmKCJudW1iZXIiPT10eXBlb2YgZVtiKzFdJiYiZ3QiPT09ZVtiKzJdJiZlW2IrM109PT1iKzcmJiJqeiI9PT1lW2IrNF0mJiJwb3AiPT09ZVtiKzVdJiZlW2IrNl09PT1lW2IrMV0pe2k9Zi5wb3AoKSxmLnB1c2goTChpLGVbYisxXSkpLGIrPTY7YnJlYWt9aWYoImxpdGVyYWwiPT09KHM9Zi5hdCgtMSkpLnR5cGV8fCJ2YXIiPT09cy50eXBlKXtmLnB1c2gocyk7YnJlYWt9dT1uZXcgVCh5Kysscy5taW4scy5tYXgpLGZbZi5sZW5ndGgtMV09dSxmLnB1c2godSksaC5wdXNoKG5ldyBJKHUscykpO2JyZWFrO2Nhc2Uicm9sbCI6aWYoZi5sZW5ndGg8MilyZXR1cm4gbnVsbDtpZihvPWYucG9wKCksaT1mLnBvcCgpLCJsaXRlcmFsIiE9PW8udHlwZXx8ImxpdGVyYWwiIT09aS50eXBlKXJldHVybiBudWxsO2lmKGE9by5udW1iZXIsKG49aS5udW1iZXIpPD0wfHwhTnVtYmVyLmlzSW50ZWdlcihuKXx8IU51bWJlci5pc0ludGVnZXIoYSl8fGYubGVuZ3RoPG4pcmV0dXJuIG51bGw7aWYoMD09KGE9KGElbituKSVuKSlicmVhaztmLnB1c2guYXBwbHkoZixmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBwKGUpfShrPWYuc3BsaWNlKGYubGVuZ3RoLW4sbi1hKSl8fGZ1bmN0aW9uKGUpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZudWxsIT1lW1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPWVbIkBAaXRlcmF0b3IiXSlyZXR1cm4gQXJyYXkuZnJvbShlKX0oayl8fGQoayl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCkpO2JyZWFrO2RlZmF1bHQ6cmV0dXJuIG51bGx9ZWxzZSBmLnB1c2gobmV3IEMobCkpO3ZhciBrO2lmKGYubGVuZ3RoIT09dilyZXR1cm4gbnVsbDtmb3IodmFyIFM9W10seD0wLE89aDt4PE8ubGVuZ3RoO3grKyl7dmFyIEY9T1t4XSxQPW5ldyBFO0YudmlzaXQoUCksUy5wdXNoKFAudG9TdHJpbmcoKSl9Zm9yKHZhciBSPTAsTj1mLmxlbmd0aDtSPE47UisrKXt2YXIgRD1mW1JdLEI9bmV3IEU7RC52aXNpdChCKTt2YXIgVT1yWzIqUl0sJD1yWzIqUisxXSxYPVtCLnRvU3RyaW5nKCldO1U+RC5taW4mJihYLnVuc2hpZnQoIk1hdGgubWF4KCIsVSwiLCAiKSxYLnB1c2goIikiKSksJDxELm1heCYmKFgudW5zaGlmdCgiTWF0aC5taW4oIiwkLCIsICIpLFgucHVzaCgiKSIpKSxYLnVuc2hpZnQoImRlc3RbZGVzdE9mZnNldCArICIsUiwiXSA9ICIpLFgucHVzaCgiOyIpLFMucHVzaChYLmpvaW4oIiIpKX1yZXR1cm4gUy5qb2luKCJcbiIpfX1dKSxlfSgpO3QuUG9zdFNjcmlwdENvbXBpbGVyPVJ9LChlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5Qb3N0U2NyaXB0UGFyc2VyPXQuUG9zdFNjcmlwdExleGVyPXZvaWQgMDt2YXIgbj1yKDIpLGE9cigxMzQpLGk9cigxMzUpO2Z1bmN0aW9uIG8oZSl7cmV0dXJuIG89ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGV9LG8oZSl9ZnVuY3Rpb24gcyhlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIGMoZSx0KXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIG49dFtyXTtuLmVudW1lcmFibGU9bi5lbnVtZXJhYmxlfHwhMSxuLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gbiYmKG4ud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCh2b2lkIDAsYT1mdW5jdGlvbihlLHQpe2lmKCJvYmplY3QiIT09byhlKXx8bnVsbD09PWUpcmV0dXJuIGU7dmFyIHI9ZVtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PXIpe3ZhciBuPXIuY2FsbChlLCJzdHJpbmciKTtpZigib2JqZWN0IiE9PW8obikpcmV0dXJuIG47dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4gU3RyaW5nKGUpfShuLmtleSksInN5bWJvbCI9PT1vKGEpP2E6U3RyaW5nKGEpKSxuKX12YXIgYX1mdW5jdGlvbiB1KGUsdCxyKXtyZXR1cm4gdCYmYyhlLnByb3RvdHlwZSx0KSxyJiZjKGUsciksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZX12YXIgbD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCl7cyh0aGlzLGUpLHRoaXMubGV4ZXI9dCx0aGlzLm9wZXJhdG9ycz1bXSx0aGlzLnRva2VuPW51bGwsdGhpcy5wcmV2PW51bGx9cmV0dXJuIHUoZSxbe2tleToibmV4dFRva2VuIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMucHJldj10aGlzLnRva2VuLHRoaXMudG9rZW49dGhpcy5sZXhlci5nZXRUb2tlbigpfX0se2tleToiYWNjZXB0Iix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy50b2tlbi50eXBlPT09ZSYmKHRoaXMubmV4dFRva2VuKCksITApfX0se2tleToiZXhwZWN0Iix2YWx1ZTpmdW5jdGlvbihlKXtpZih0aGlzLmFjY2VwdChlKSlyZXR1cm4hMDt0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiVW5leHBlY3RlZCBzeW1ib2w6IGZvdW5kICIuY29uY2F0KHRoaXMudG9rZW4udHlwZSwiIGV4cGVjdGVkICIpLmNvbmNhdChlLCIuIikpfX0se2tleToicGFyc2UiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubmV4dFRva2VuKCksdGhpcy5leHBlY3QoZi5MQlJBQ0UpLHRoaXMucGFyc2VCbG9jaygpLHRoaXMuZXhwZWN0KGYuUkJSQUNFKSx0aGlzLm9wZXJhdG9yc319LHtrZXk6InBhcnNlQmxvY2siLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKDs7KWlmKHRoaXMuYWNjZXB0KGYuTlVNQkVSKSl0aGlzLm9wZXJhdG9ycy5wdXNoKHRoaXMucHJldi52YWx1ZSk7ZWxzZSBpZih0aGlzLmFjY2VwdChmLk9QRVJBVE9SKSl0aGlzLm9wZXJhdG9ycy5wdXNoKHRoaXMucHJldi52YWx1ZSk7ZWxzZXtpZighdGhpcy5hY2NlcHQoZi5MQlJBQ0UpKXJldHVybjt0aGlzLnBhcnNlQ29uZGl0aW9uKCl9fX0se2tleToicGFyc2VDb25kaXRpb24iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vcGVyYXRvcnMubGVuZ3RoO2lmKHRoaXMub3BlcmF0b3JzLnB1c2gobnVsbCxudWxsKSx0aGlzLnBhcnNlQmxvY2soKSx0aGlzLmV4cGVjdChmLlJCUkFDRSksdGhpcy5hY2NlcHQoZi5JRikpdGhpcy5vcGVyYXRvcnNbZV09dGhpcy5vcGVyYXRvcnMubGVuZ3RoLHRoaXMub3BlcmF0b3JzW2UrMV09Imp6IjtlbHNle2lmKCF0aGlzLmFjY2VwdChmLkxCUkFDRSkpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIlBTIEZ1bmN0aW9uOiBlcnJvciBwYXJzaW5nIGNvbmRpdGlvbmFsLiIpO3ZhciB0PXRoaXMub3BlcmF0b3JzLmxlbmd0aDt0aGlzLm9wZXJhdG9ycy5wdXNoKG51bGwsbnVsbCk7dmFyIHI9dGhpcy5vcGVyYXRvcnMubGVuZ3RoO3RoaXMucGFyc2VCbG9jaygpLHRoaXMuZXhwZWN0KGYuUkJSQUNFKSx0aGlzLmV4cGVjdChmLklGRUxTRSksdGhpcy5vcGVyYXRvcnNbdF09dGhpcy5vcGVyYXRvcnMubGVuZ3RoLHRoaXMub3BlcmF0b3JzW3QrMV09ImoiLHRoaXMub3BlcmF0b3JzW2VdPXIsdGhpcy5vcGVyYXRvcnNbZSsxXT0ianoifX19XSksZX0oKTt0LlBvc3RTY3JpcHRQYXJzZXI9bDt2YXIgZj17TEJSQUNFOjAsUkJSQUNFOjEsTlVNQkVSOjIsT1BFUkFUT1I6MyxJRjo0LElGRUxTRTo1fSxoPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0LHIpe3ModGhpcyxlKSx0aGlzLnR5cGU9dCx0aGlzLnZhbHVlPXJ9cmV0dXJuIHUoZSxudWxsLFt7a2V5OiJvcENhY2hlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywib3BDYWNoZSIsT2JqZWN0LmNyZWF0ZShudWxsKSl9fSx7a2V5OiJnZXRPcGVyYXRvciIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIGUub3BDYWNoZVt0XXx8KGUub3BDYWNoZVt0XT1uZXcgZShmLk9QRVJBVE9SLHQpKX19LHtrZXk6IkxCUkFDRSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsIkxCUkFDRSIsbmV3IGUoZi5MQlJBQ0UsInsiKSl9fSx7a2V5OiJSQlJBQ0UiLGdldDpmdW5jdGlvbigpe3JldHVybigwLG4uc2hhZG93KSh0aGlzLCJSQlJBQ0UiLG5ldyBlKGYuUkJSQUNFLCJ9IikpfX0se2tleToiSUYiLGdldDpmdW5jdGlvbigpe3JldHVybigwLG4uc2hhZG93KSh0aGlzLCJJRiIsbmV3IGUoZi5JRiwiSUYiKSl9fSx7a2V5OiJJRkVMU0UiLGdldDpmdW5jdGlvbigpe3JldHVybigwLG4uc2hhZG93KSh0aGlzLCJJRkVMU0UiLG5ldyBlKGYuSUZFTFNFLCJJRkVMU0UiKSl9fV0pLGV9KCksZD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCl7cyh0aGlzLGUpLHRoaXMuc3RyZWFtPXQsdGhpcy5uZXh0Q2hhcigpLHRoaXMuc3RyQnVmPVtdfXJldHVybiB1KGUsW3trZXk6Im5leHRDaGFyIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmN1cnJlbnRDaGFyPXRoaXMuc3RyZWFtLmdldEJ5dGUoKX19LHtrZXk6ImdldFRva2VuIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgZT0hMSx0PXRoaXMuY3VycmVudENoYXI7Oyl7aWYodDwwKXJldHVybiBhLkVPRjtpZihlKTEwIT09dCYmMTMhPT10fHwoZT0hMSk7ZWxzZSBpZigzNz09PXQpZT0hMDtlbHNlIGlmKCEoMCxpLmlzV2hpdGVTcGFjZSkodCkpYnJlYWs7dD10aGlzLm5leHRDaGFyKCl9c3dpdGNoKDB8dCl7Y2FzZSA0ODpjYXNlIDQ5OmNhc2UgNTA6Y2FzZSA1MTpjYXNlIDUyOmNhc2UgNTM6Y2FzZSA1NDpjYXNlIDU1OmNhc2UgNTY6Y2FzZSA1NzpjYXNlIDQzOmNhc2UgNDU6Y2FzZSA0NjpyZXR1cm4gbmV3IGgoZi5OVU1CRVIsdGhpcy5nZXROdW1iZXIoKSk7Y2FzZSAxMjM6cmV0dXJuIHRoaXMubmV4dENoYXIoKSxoLkxCUkFDRTtjYXNlIDEyNTpyZXR1cm4gdGhpcy5uZXh0Q2hhcigpLGguUkJSQUNFfXZhciByPXRoaXMuc3RyQnVmO2ZvcihyLmxlbmd0aD0wLHJbMF09U3RyaW5nLmZyb21DaGFyQ29kZSh0KTsodD10aGlzLm5leHRDaGFyKCkpPj0wJiYodD49NjUmJnQ8PTkwfHx0Pj05NyYmdDw9MTIyKTspci5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUodCkpO3ZhciBuPXIuam9pbigiIik7c3dpdGNoKG4udG9Mb3dlckNhc2UoKSl7Y2FzZSJpZiI6cmV0dXJuIGguSUY7Y2FzZSJpZmVsc2UiOnJldHVybiBoLklGRUxTRTtkZWZhdWx0OnJldHVybiBoLmdldE9wZXJhdG9yKG4pfX19LHtrZXk6ImdldE51bWJlciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmN1cnJlbnRDaGFyLHQ9dGhpcy5zdHJCdWY7Zm9yKHQubGVuZ3RoPTAsdFswXT1TdHJpbmcuZnJvbUNoYXJDb2RlKGUpOyhlPXRoaXMubmV4dENoYXIoKSk+PTAmJihlPj00OCYmZTw9NTd8fDQ1PT09ZXx8NDY9PT1lKTspdC5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoZSkpO3ZhciByPXBhcnNlRmxvYXQodC5qb2luKCIiKSk7aWYoaXNOYU4ocikpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIkludmFsaWQgZmxvYXRpbmcgcG9pbnQgbnVtYmVyOiAiLmNvbmNhdChyKSk7cmV0dXJuIHJ9fV0pLGV9KCk7dC5Qb3N0U2NyaXB0TGV4ZXI9ZH0sKGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LkxvY2FsVGlsaW5nUGF0dGVybkNhY2hlPXQuTG9jYWxJbWFnZUNhY2hlPXQuTG9jYWxHU3RhdGVDYWNoZT10LkxvY2FsRnVuY3Rpb25DYWNoZT10LkxvY2FsQ29sb3JTcGFjZUNhY2hlPXQuR2xvYmFsSW1hZ2VDYWNoZT12b2lkIDA7dmFyIG49cigyKSxhPXIoMTM0KTtmdW5jdGlvbiBpKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciByPTAsbj1uZXcgQXJyYXkodCk7cjx0O3IrKyluW3JdPWVbcl07cmV0dXJuIG59ZnVuY3Rpb24gbyhlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSx0JiZzKGUsdCl9ZnVuY3Rpb24gcyhlLHQpe3JldHVybiBzPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuX19wcm90b19fPXQsZX0scyhlLHQpfWZ1bmN0aW9uIGMoZSl7dmFyIHQ9ZnVuY3Rpb24oKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdClyZXR1cm4hMTtpZihSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLChmdW5jdGlvbigpe30pKSksITB9Y2F0Y2goZSl7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciByLG49dShlKTtpZih0KXt2YXIgYT11KHRoaXMpLmNvbnN0cnVjdG9yO3I9UmVmbGVjdC5jb25zdHJ1Y3Qobixhcmd1bWVudHMsYSl9ZWxzZSByPW4uYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBmdW5jdGlvbihlLHQpe2lmKHQmJigib2JqZWN0Ij09PWwodCl8fCJmdW5jdGlvbiI9PXR5cGVvZiB0KSlyZXR1cm4gdDtpZih2b2lkIDAhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKHZvaWQgMD09PWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZX0oZSl9KHRoaXMscil9fWZ1bmN0aW9uIHUoZSl7cmV0dXJuIHU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSl9LHUoZSl9ZnVuY3Rpb24gbChlKXtyZXR1cm4gbD0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZX0sbChlKX1mdW5jdGlvbiBmKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gaChlLHQpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgbj10W3JdO24uZW51bWVyYWJsZT1uLmVudW1lcmFibGV8fCExLG4uY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBuJiYobi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsKHZvaWQgMCxhPWZ1bmN0aW9uKGUsdCl7aWYoIm9iamVjdCIhPT1sKGUpfHxudWxsPT09ZSlyZXR1cm4gZTt2YXIgcj1lW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09cil7dmFyIG49ci5jYWxsKGUsInN0cmluZyIpO2lmKCJvYmplY3QiIT09bChuKSlyZXR1cm4gbjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybiBTdHJpbmcoZSl9KG4ua2V5KSwic3ltYm9sIj09PWwoYSk/YTpTdHJpbmcoYSkpLG4pfXZhciBhfWZ1bmN0aW9uIGQoZSx0LHIpe3JldHVybiB0JiZoKGUucHJvdG90eXBlLHQpLHImJmgoZSxyKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxlfXZhciBwPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0KXtmKHRoaXMsZSksdGhpcy5jb25zdHJ1Y3Rvcj09PWUmJigwLG4udW5yZWFjaGFibGUpKCJDYW5ub3QgaW5pdGlhbGl6ZSBCYXNlTG9jYWxDYWNoZS4iKSx0aGlzLl9vbmx5UmVmcz0hMD09PSh0JiZ0Lm9ubHlSZWZzKSx0aGlzLl9vbmx5UmVmc3x8KHRoaXMuX25hbWVSZWZNYXA9bmV3IE1hcCx0aGlzLl9pbWFnZU1hcD1uZXcgTWFwKSx0aGlzLl9pbWFnZUNhY2hlPW5ldyBhLlJlZlNldENhY2hlfXJldHVybiBkKGUsW3trZXk6ImdldEJ5TmFtZSIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5fb25seVJlZnMmJigwLG4udW5yZWFjaGFibGUpKCJTaG91bGQgbm90IGNhbGwgYGdldEJ5TmFtZWAgbWV0aG9kLiIpO3ZhciB0PXRoaXMuX25hbWVSZWZNYXAuZ2V0KGUpO3JldHVybiB0P3RoaXMuZ2V0QnlSZWYodCk6dGhpcy5faW1hZ2VNYXAuZ2V0KGUpfHxudWxsfX0se2tleToiZ2V0QnlSZWYiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9pbWFnZUNhY2hlLmdldChlKXx8bnVsbH19LHtrZXk6InNldCIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIpeygwLG4udW5yZWFjaGFibGUpKCJBYnN0cmFjdCBtZXRob2QgYHNldGAgY2FsbGVkLiIpfX1dKSxlfSgpLGc9ZnVuY3Rpb24oZSl7byhyLGUpO3ZhciB0PWMocik7ZnVuY3Rpb24gcigpe3JldHVybiBmKHRoaXMsciksdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIGQocixbe2tleToic2V0Iix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06bnVsbCxyPWFyZ3VtZW50cy5sZW5ndGg+Mj9hcmd1bWVudHNbMl06dm9pZCAwO2lmKCJzdHJpbmciIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3IoJ0xvY2FsSW1hZ2VDYWNoZS5zZXQgLSBleHBlY3RlZCAibmFtZSIgYXJndW1lbnQuJyk7aWYodCl7aWYodGhpcy5faW1hZ2VDYWNoZS5oYXModCkpcmV0dXJuO3JldHVybiB0aGlzLl9uYW1lUmVmTWFwLnNldChlLHQpLHZvaWQgdGhpcy5faW1hZ2VDYWNoZS5wdXQodCxyKX10aGlzLl9pbWFnZU1hcC5oYXMoZSl8fHRoaXMuX2ltYWdlTWFwLnNldChlLHIpfX1dKSxyfShwKTt0LkxvY2FsSW1hZ2VDYWNoZT1nO3ZhciB2PWZ1bmN0aW9uKGUpe28ocixlKTt2YXIgdD1jKHIpO2Z1bmN0aW9uIHIoKXtyZXR1cm4gZih0aGlzLHIpLHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiBkKHIsW3trZXk6InNldCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06bnVsbCx0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpudWxsLHI9YXJndW1lbnRzLmxlbmd0aD4yP2FyZ3VtZW50c1syXTp2b2lkIDA7aWYoInN0cmluZyIhPXR5cGVvZiBlJiYhdCl0aHJvdyBuZXcgRXJyb3IoJ0xvY2FsQ29sb3JTcGFjZUNhY2hlLnNldCAtIGV4cGVjdGVkICJuYW1lIiBhbmQvb3IgInJlZiIgYXJndW1lbnQuJyk7aWYodCl7aWYodGhpcy5faW1hZ2VDYWNoZS5oYXModCkpcmV0dXJuO3JldHVybiBudWxsIT09ZSYmdGhpcy5fbmFtZVJlZk1hcC5zZXQoZSx0KSx2b2lkIHRoaXMuX2ltYWdlQ2FjaGUucHV0KHQscil9dGhpcy5faW1hZ2VNYXAuaGFzKGUpfHx0aGlzLl9pbWFnZU1hcC5zZXQoZSxyKX19XSkscn0ocCk7dC5Mb2NhbENvbG9yU3BhY2VDYWNoZT12O3ZhciB5PWZ1bmN0aW9uKGUpe28ocixlKTt2YXIgdD1jKHIpO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGYodGhpcyxyKSx0LmNhbGwodGhpcyx7b25seVJlZnM6ITB9KX1yZXR1cm4gZChyLFt7a2V5OiJzZXQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDAsdD1hcmd1bWVudHMubGVuZ3RoPjI/YXJndW1lbnRzWzJdOnZvaWQgMDtpZighZSl0aHJvdyBuZXcgRXJyb3IoJ0xvY2FsRnVuY3Rpb25DYWNoZS5zZXQgLSBleHBlY3RlZCAicmVmIiBhcmd1bWVudC4nKTt0aGlzLl9pbWFnZUNhY2hlLmhhcyhlKXx8dGhpcy5faW1hZ2VDYWNoZS5wdXQoZSx0KX19XSkscn0ocCk7dC5Mb2NhbEZ1bmN0aW9uQ2FjaGU9eTt2YXIgbT1mdW5jdGlvbihlKXtvKHIsZSk7dmFyIHQ9YyhyKTtmdW5jdGlvbiByKCl7cmV0dXJuIGYodGhpcyxyKSx0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gZChyLFt7a2V5OiJzZXQiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpudWxsLHI9YXJndW1lbnRzLmxlbmd0aD4yP2FyZ3VtZW50c1syXTp2b2lkIDA7aWYoInN0cmluZyIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcignTG9jYWxHU3RhdGVDYWNoZS5zZXQgLSBleHBlY3RlZCAibmFtZSIgYXJndW1lbnQuJyk7aWYodCl7aWYodGhpcy5faW1hZ2VDYWNoZS5oYXModCkpcmV0dXJuO3JldHVybiB0aGlzLl9uYW1lUmVmTWFwLnNldChlLHQpLHZvaWQgdGhpcy5faW1hZ2VDYWNoZS5wdXQodCxyKX10aGlzLl9pbWFnZU1hcC5oYXMoZSl8fHRoaXMuX2ltYWdlTWFwLnNldChlLHIpfX1dKSxyfShwKTt0LkxvY2FsR1N0YXRlQ2FjaGU9bTt2YXIgYj1mdW5jdGlvbihlKXtvKHIsZSk7dmFyIHQ9YyhyKTtmdW5jdGlvbiByKGUpe3JldHVybiBmKHRoaXMsciksdC5jYWxsKHRoaXMse29ubHlSZWZzOiEwfSl9cmV0dXJuIGQocixbe2tleToic2V0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwLHQ9YXJndW1lbnRzLmxlbmd0aD4yP2FyZ3VtZW50c1syXTp2b2lkIDA7aWYoIWUpdGhyb3cgbmV3IEVycm9yKCdMb2NhbFRpbGluZ1BhdHRlcm5DYWNoZS5zZXQgLSBleHBlY3RlZCAicmVmIiBhcmd1bWVudC4nKTt0aGlzLl9pbWFnZUNhY2hlLmhhcyhlKXx8dGhpcy5faW1hZ2VDYWNoZS5wdXQoZSx0KX19XSkscn0ocCk7dC5Mb2NhbFRpbGluZ1BhdHRlcm5DYWNoZT1iO3ZhciB3PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe2YodGhpcyxlKSx0aGlzLl9yZWZDYWNoZT1uZXcgYS5SZWZTZXRDYWNoZSx0aGlzLl9pbWFnZUNhY2hlPW5ldyBhLlJlZlNldENhY2hlfXJldHVybiBkKGUsW3trZXk6Il9ieXRlU2l6ZSIsZ2V0OmZ1bmN0aW9uKCl7dmFyIGUsdD0wLHI9ZnVuY3Rpb24oZSx0KXt2YXIgcj0idW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlWyJAQGl0ZXJhdG9yIl07aWYoIXIpe2lmKEFycmF5LmlzQXJyYXkoZSl8fChyPWZ1bmN0aW9uKGUsdCl7aWYoZSl7aWYoInN0cmluZyI9PXR5cGVvZiBlKXJldHVybiBpKGUsdCk7dmFyIHI9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO3JldHVybiJPYmplY3QiPT09ciYmZS5jb25zdHJ1Y3RvciYmKHI9ZS5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PXJ8fCJTZXQiPT09cj9BcnJheS5mcm9tKGUpOiJBcmd1bWVudHMiPT09cnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3Qocik/aShlLHQpOnZvaWQgMH19KGUpKXx8dCYmZSYmIm51bWJlciI9PXR5cGVvZiBlLmxlbmd0aCl7ciYmKGU9cik7dmFyIG49MCxhPWZ1bmN0aW9uKCl7fTtyZXR1cm57czphLG46ZnVuY3Rpb24oKXtyZXR1cm4gbj49ZS5sZW5ndGg/e2RvbmU6ITB9Ontkb25lOiExLHZhbHVlOmVbbisrXX19LGU6ZnVuY3Rpb24oZSl7dGhyb3cgZX0sZjphfX10aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gaXRlcmF0ZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9dmFyIG8scz0hMCxjPSExO3JldHVybntzOmZ1bmN0aW9uKCl7cj1yLmNhbGwoZSl9LG46ZnVuY3Rpb24oKXt2YXIgZT1yLm5leHQoKTtyZXR1cm4gcz1lLmRvbmUsZX0sZTpmdW5jdGlvbihlKXtjPSEwLG89ZX0sZjpmdW5jdGlvbigpe3RyeXtzfHxudWxsPT1yLnJldHVybnx8ci5yZXR1cm4oKX1maW5hbGx5e2lmKGMpdGhyb3cgb319fX0odGhpcy5faW1hZ2VDYWNoZSk7dHJ5e2ZvcihyLnMoKTshKGU9ci5uKCkpLmRvbmU7KXQrPWUudmFsdWUuYnl0ZVNpemV9Y2F0Y2goZSl7ci5lKGUpfWZpbmFsbHl7ci5mKCl9cmV0dXJuIHR9fSx7a2V5OiJfY2FjaGVMaW1pdFJlYWNoZWQiLGdldDpmdW5jdGlvbigpe3JldHVybiEodGhpcy5faW1hZ2VDYWNoZS5zaXplPGUuTUlOX0lNQUdFU19UT19DQUNIRXx8dGhpcy5fYnl0ZVNpemU8ZS5NQVhfQllURV9TSVpFKX19LHtrZXk6InNob3VsZENhY2hlIix2YWx1ZTpmdW5jdGlvbih0LHIpe3ZhciBuPXRoaXMuX3JlZkNhY2hlLmdldCh0KTtyZXR1cm4hKChuP24uc2l6ZSsobi5oYXMocik/MDoxKToxKTxlLk5VTV9QQUdFU19USFJFU0hPTER8fCF0aGlzLl9pbWFnZUNhY2hlLmhhcyh0KSYmdGhpcy5fY2FjaGVMaW1pdFJlYWNoZWQpfX0se2tleToiYWRkUGFnZUluZGV4Iix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciByPXRoaXMuX3JlZkNhY2hlLmdldChlKTtyfHwocj1uZXcgU2V0LHRoaXMuX3JlZkNhY2hlLnB1dChlLHIpKSxyLmFkZCh0KX19LHtrZXk6ImFkZEJ5dGVTaXplIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciByPXRoaXMuX2ltYWdlQ2FjaGUuZ2V0KGUpO3ImJihyLmJ5dGVTaXplfHwoci5ieXRlU2l6ZT10KSl9fSx7a2V5OiJnZXREYXRhIix2YWx1ZTpmdW5jdGlvbih0LHIpe3ZhciBuPXRoaXMuX3JlZkNhY2hlLmdldCh0KTtpZighbilyZXR1cm4gbnVsbDtpZihuLnNpemU8ZS5OVU1fUEFHRVNfVEhSRVNIT0xEKXJldHVybiBudWxsO3ZhciBhPXRoaXMuX2ltYWdlQ2FjaGUuZ2V0KHQpO3JldHVybiBhPyhuLmFkZChyKSxhKTpudWxsfX0se2tleToic2V0RGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtpZighdGhpcy5fcmVmQ2FjaGUuaGFzKGUpKXRocm93IG5ldyBFcnJvcignR2xvYmFsSW1hZ2VDYWNoZS5zZXREYXRhIC0gZXhwZWN0ZWQgImFkZFBhZ2VJbmRleCIgdG8gaGF2ZSBiZWVuIGNhbGxlZC4nKTt0aGlzLl9pbWFnZUNhY2hlLmhhcyhlKXx8KHRoaXMuX2NhY2hlTGltaXRSZWFjaGVkPygwLG4ud2FybikoIkdsb2JhbEltYWdlQ2FjaGUuc2V0RGF0YSAtIGNhY2hlIGxpbWl0IHJlYWNoZWQuIik6dGhpcy5faW1hZ2VDYWNoZS5wdXQoZSx0KSl9fSx7a2V5OiJjbGVhciIsdmFsdWU6ZnVuY3Rpb24oKXthcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSYmYXJndW1lbnRzWzBdfHx0aGlzLl9yZWZDYWNoZS5jbGVhcigpLHRoaXMuX2ltYWdlQ2FjaGUuY2xlYXIoKX19XSxbe2tleToiTlVNX1BBR0VTX1RIUkVTSE9MRCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsIk5VTV9QQUdFU19USFJFU0hPTEQiLDIpfX0se2tleToiTUlOX0lNQUdFU19UT19DQUNIRSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsIk1JTl9JTUFHRVNfVE9fQ0FDSEUiLDEwKX19LHtrZXk6Ik1BWF9CWVRFX1NJWkUiLGdldDpmdW5jdGlvbigpe3JldHVybigwLG4uc2hhZG93KSh0aGlzLCJNQVhfQllURV9TSVpFIiw0ZTcpfX1dKSxlfSgpO3QuR2xvYmFsSW1hZ2VDYWNoZT13fSwoZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuYmlkaT1mdW5jdGlvbihlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06LTEscj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXSYmYXJndW1lbnRzWzJdLHA9ITAsZz1lLmxlbmd0aDtpZigwPT09Z3x8cilyZXR1cm4gZihlLHAscik7aC5sZW5ndGg9ZyxkLmxlbmd0aD1nO3ZhciB2LHksbT0wO2Zvcih2PTA7djxnOysrdil7aFt2XT1lLmNoYXJBdCh2KTt2YXIgYj1lLmNoYXJDb2RlQXQodiksdz0iTCI7Yjw9MjU1P3c9YVtiXToxNDI0PD1iJiZiPD0xNTI0P3c9IlIiOjE1MzY8PWImJmI8PTE3OTE/KHc9aVsyNTUmYl0pfHwoMCxuLndhcm4pKCJCaWRpOiBpbnZhbGlkIFVuaWNvZGUgY2hhcmFjdGVyICIrYi50b1N0cmluZygxNikpOjE3OTI8PWImJmI8PTIyMjAmJih3PSJBTCIpLCJSIiE9PXcmJiJBTCIhPT13JiYiQU4iIT09d3x8bSsrLGRbdl09d31pZigwPT09bSlyZXR1cm4gZihlLHA9ITApOy0xPT09dCYmKG0vZzwuMyYmZz40PyhwPSEwLHQ9MCk6KHA9ITEsdD0xKSk7dmFyIGs9W107Zm9yKHY9MDt2PGc7Kyt2KWtbdl09dDt2YXIgUyx4PW8odCk/IlIiOiJMIixPPXgsQT1PLEM9Tztmb3Iodj0wO3Y8ZzsrK3YpIk5TTSI9PT1kW3ZdP2Rbdl09QzpDPWRbdl07Zm9yKEM9Tyx2PTA7djxnOysrdikiRU4iPT09KFM9ZFt2XSk/ZFt2XT0iQUwiPT09Qz8iQU4iOiJFTiI6IlIiIT09UyYmIkwiIT09UyYmIkFMIiE9PVN8fChDPVMpO2Zvcih2PTA7djxnOysrdikiQUwiPT09KFM9ZFt2XSkmJihkW3ZdPSJSIik7Zm9yKHY9MTt2PGctMTsrK3YpIkVTIj09PWRbdl0mJiJFTiI9PT1kW3YtMV0mJiJFTiI9PT1kW3YrMV0mJihkW3ZdPSJFTiIpLCJDUyIhPT1kW3ZdfHwiRU4iIT09ZFt2LTFdJiYiQU4iIT09ZFt2LTFdfHxkW3YrMV0hPT1kW3YtMV18fChkW3ZdPWRbdi0xXSk7Zm9yKHY9MDt2PGc7Kyt2KWlmKCJFTiI9PT1kW3ZdKXtmb3IodmFyIEY9di0xO0Y+PTAmJiJFVCI9PT1kW0ZdOy0tRilkW0ZdPSJFTiI7Zm9yKHZhciBQPXYrMTtQPGcmJiJFVCI9PT1kW1BdOysrUClkW1BdPSJFTiJ9Zm9yKHY9MDt2PGc7Kyt2KSJXUyIhPT0oUz1kW3ZdKSYmIkVTIiE9PVMmJiJFVCIhPT1TJiYiQ1MiIT09U3x8KGRbdl09Ik9OIik7Zm9yKEM9Tyx2PTA7djxnOysrdikiRU4iPT09KFM9ZFt2XSk/ZFt2XT0iTCI9PT1DPyJMIjoiRU4iOiJSIiE9PVMmJiJMIiE9PVN8fChDPVMpO2Zvcih2PTA7djxnOysrdilpZigiT04iPT09ZFt2XSl7dmFyIFQ9YyhkLHYrMSwiT04iKSxJPU87dj4wJiYoST1kW3YtMV0pO3ZhciBFPUE7VCsxPGcmJihFPWRbVCsxXSksIkwiIT09SSYmKEk9IlIiKSwiTCIhPT1FJiYoRT0iUiIpLEk9PT1FJiZ1KGQsdixULEkpLHY9VC0xfWZvcih2PTA7djxnOysrdikiT04iPT09ZFt2XSYmKGRbdl09eCk7Zm9yKHY9MDt2PGc7Kyt2KVM9ZFt2XSxzKGtbdl0pPyJSIj09PVM/a1t2XSs9MToiQU4iIT09UyYmIkVOIiE9PVN8fChrW3ZdKz0yKToiTCIhPT1TJiYiQU4iIT09UyYmIkVOIiE9PVN8fChrW3ZdKz0xKTt2YXIgaixNPS0xLF89OTk7Zm9yKHY9MCx5PWsubGVuZ3RoO3Y8eTsrK3YpTTwoaj1rW3ZdKSYmKE09aiksXz5qJiZvKGopJiYoXz1qKTtmb3Ioaj1NO2o+PV87LS1qKXt2YXIgTD0tMTtmb3Iodj0wLHk9ay5sZW5ndGg7djx5OysrdilrW3ZdPGo/TD49MCYmKGwoaCxMLHYpLEw9LTEpOkw8MCYmKEw9dik7TD49MCYmbChoLEwsay5sZW5ndGgpfWZvcih2PTAseT1oLmxlbmd0aDt2PHk7Kyt2KXt2YXIgUj1oW3ZdOyI8IiE9PVImJiI+IiE9PVJ8fChoW3ZdPSIiKX1yZXR1cm4gZihoLmpvaW4oIiIpLHApfTt2YXIgbj1yKDIpLGE9WyJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJTIiwiQiIsIlMiLCJXUyIsIkIiLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQiIsIkIiLCJCIiwiUyIsIldTIiwiT04iLCJPTiIsIkVUIiwiRVQiLCJFVCIsIk9OIiwiT04iLCJPTiIsIk9OIiwiT04iLCJFUyIsIkNTIiwiRVMiLCJDUyIsIkNTIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJDUyIsIk9OIiwiT04iLCJPTiIsIk9OIiwiT04iLCJPTiIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiT04iLCJPTiIsIk9OIiwiT04iLCJPTiIsIk9OIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJPTiIsIk9OIiwiT04iLCJPTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkIiLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQ1MiLCJPTiIsIkVUIiwiRVQiLCJFVCIsIkVUIiwiT04iLCJPTiIsIk9OIiwiT04iLCJMIiwiT04iLCJPTiIsIkJOIiwiT04iLCJPTiIsIkVUIiwiRVQiLCJFTiIsIkVOIiwiT04iLCJMIiwiT04iLCJPTiIsIk9OIiwiRU4iLCJMIiwiT04iLCJPTiIsIk9OIiwiT04iLCJPTiIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiT04iLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiT04iLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCJdLGk9WyJBTiIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJPTiIsIk9OIiwiQUwiLCJFVCIsIkVUIiwiQUwiLCJDUyIsIkFMIiwiT04iLCJPTiIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIkFMIiwiQUwiLCIiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIkVUIiwiQU4iLCJBTiIsIkFMIiwiQUwiLCJBTCIsIk5TTSIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJBTiIsIk9OIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiQUwiLCJBTCIsIk5TTSIsIk5TTSIsIk9OIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiQUwiLCJBTCIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIl07ZnVuY3Rpb24gbyhlKXtyZXR1cm4gMCE9KDEmZSl9ZnVuY3Rpb24gcyhlKXtyZXR1cm4gMD09KDEmZSl9ZnVuY3Rpb24gYyhlLHQscil7dmFyIG4sYTtmb3Iobj10LGE9ZS5sZW5ndGg7bjxhOysrbilpZihlW25dIT09cilyZXR1cm4gbjtyZXR1cm4gbn1mdW5jdGlvbiB1KGUsdCxyLG4pe2Zvcih2YXIgYT10O2E8cjsrK2EpZVthXT1ufWZ1bmN0aW9uIGwoZSx0LHIpe2Zvcih2YXIgbj10LGE9ci0xO248YTsrK24sLS1hKXt2YXIgaT1lW25dO2Vbbl09ZVthXSxlW2FdPWl9fWZ1bmN0aW9uIGYoZSx0KXt2YXIgcj0ibHRyIjtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0mJmFyZ3VtZW50c1syXT9yPSJ0dGIiOnR8fChyPSJydGwiKSx7c3RyOmUsZGlyOnJ9fXZhciBoPVtdLGQ9W119LChlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5NdXJtdXJIYXNoM182ND12b2lkIDA7dmFyIG49cigyKTtmdW5jdGlvbiBhKGUpe3JldHVybiBhPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSxhKGUpfWZ1bmN0aW9uIGkoZSx0KXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIG49dFtyXTtuLmVudW1lcmFibGU9bi5lbnVtZXJhYmxlfHwhMSxuLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gbiYmKG4ud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCh2b2lkIDAsaT1mdW5jdGlvbihlLHQpe2lmKCJvYmplY3QiIT09YShlKXx8bnVsbD09PWUpcmV0dXJuIGU7dmFyIHI9ZVtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PXIpe3ZhciBuPXIuY2FsbChlLCJzdHJpbmciKTtpZigib2JqZWN0IiE9PWEobikpcmV0dXJuIG47dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4gU3RyaW5nKGUpfShuLmtleSksInN5bWJvbCI9PT1hKGkpP2k6U3RyaW5nKGkpKSxuKX12YXIgaX12YXIgbz0zMjg1Mzc3NTIwLHM9NDI5NDkwMTc2MCxjPTY1NTM1LHU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQpeyFmdW5jdGlvbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGUpLHRoaXMuaDE9dD80Mjk0OTY3Mjk1JnQ6byx0aGlzLmgyPXQ/NDI5NDk2NzI5NSZ0Om99dmFyIHQscjtyZXR1cm4gdD1lLChyPVt7a2V5OiJ1cGRhdGUiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0LHI7aWYoInN0cmluZyI9PXR5cGVvZiBlKXt0PW5ldyBVaW50OEFycmF5KDIqZS5sZW5ndGgpLHI9MDtmb3IodmFyIGE9MCxpPWUubGVuZ3RoO2E8aTthKyspe3ZhciBvPWUuY2hhckNvZGVBdChhKTtvPD0yNTU/dFtyKytdPW86KHRbcisrXT1vPj4+OCx0W3IrK109MjU1Jm8pfX1lbHNle2lmKCEoMCxuLmlzQXJyYXlCdWZmZXIpKGUpKXRocm93IG5ldyBFcnJvcigiV3JvbmcgZGF0YSBmb3JtYXQgaW4gTXVybXVySGFzaDNfNjRfdXBkYXRlLiBJbnB1dCBtdXN0IGJlIGEgc3RyaW5nIG9yIGFycmF5LiIpO3I9KHQ9ZS5zbGljZSgpKS5ieXRlTGVuZ3RofWZvcih2YXIgdT1yPj4yLGw9ci00KnUsZj1uZXcgVWludDMyQXJyYXkodC5idWZmZXIsMCx1KSxoPTAsZD0wLHA9dGhpcy5oMSxnPXRoaXMuaDIsdj0zNDMyOTE4MzUzLHk9NDYxODQ1OTA3LG09MTE2MDEsYj0xMzcxNSx3PTA7dzx1O3crKykxJnc/cD01KihwPShwXj1oPShoPShoPShoPWZbd10pKnYmc3xoKm0mYyk8PDE1fGg+Pj4xNykqeSZzfGgqYiZjKTw8MTN8cD4+PjE5KSszODY0MjkyMTk2Omc9NSooZz0oZ149ZD0oZD0oZD0oZD1mW3ddKSp2JnN8ZCptJmMpPDwxNXxkPj4+MTcpKnkmc3xkKmImYyk8PDEzfGc+Pj4xOSkrMzg2NDI5MjE5Njtzd2l0Y2goaD0wLGwpe2Nhc2UgMzpoXj10WzQqdSsyXTw8MTY7Y2FzZSAyOmhePXRbNCp1KzFdPDw4O2Nhc2UgMTpoPShoPShoPShoXj10WzQqdV0pKnYmc3xoKm0mYyk8PDE1fGg+Pj4xNykqeSZzfGgqYiZjLDEmdT9wXj1oOmdePWh9dGhpcy5oMT1wLHRoaXMuaDI9Z319LHtrZXk6ImhleGRpZ2VzdCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmgxLHQ9dGhpcy5oMjtyZXR1cm4gZT0zOTgxODA2Nzk3KihlXj10Pj4+MSkmc3wzNjA0NSplJmMsZT00NDQ5ODQ0MDMqKGVePSh0PTQyODM1NDM1MTEqdCZzfCgyOTUwMTYzNzk3Kih0PDwxNnxlPj4+MTYpJnMpPj4+MTYpPj4+MSkmc3w2MDQ5OSplJmMsKChlXj0odD0zMzAxODgyMzY2KnQmc3woMzEyMDQzNzg5MyoodDw8MTZ8ZT4+PjE2KSZzKT4+PjE2KT4+PjEpPj4+MCkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDgsIjAiKSsodD4+PjApLnRvU3RyaW5nKDE2KS5wYWRTdGFydCg4LCIwIil9fV0pJiZpKHQucHJvdG90eXBlLHIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGV9KCk7dC5NdXJtdXJIYXNoM182ND11fSwoZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuT3BlcmF0b3JMaXN0PXZvaWQgMDt2YXIgbj1yKDIpO2Z1bmN0aW9uIGEoZSx0KXt2YXIgcj0idW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlWyJAQGl0ZXJhdG9yIl07aWYoIXIpe2lmKEFycmF5LmlzQXJyYXkoZSl8fChyPWZ1bmN0aW9uKGUsdCl7aWYoZSl7aWYoInN0cmluZyI9PXR5cGVvZiBlKXJldHVybiBpKGUsdCk7dmFyIHI9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO3JldHVybiJPYmplY3QiPT09ciYmZS5jb25zdHJ1Y3RvciYmKHI9ZS5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PXJ8fCJTZXQiPT09cj9BcnJheS5mcm9tKGUpOiJBcmd1bWVudHMiPT09cnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3Qocik/aShlLHQpOnZvaWQgMH19KGUpKXx8dCYmZSYmIm51bWJlciI9PXR5cGVvZiBlLmxlbmd0aCl7ciYmKGU9cik7dmFyIG49MCxhPWZ1bmN0aW9uKCl7fTtyZXR1cm57czphLG46ZnVuY3Rpb24oKXtyZXR1cm4gbj49ZS5sZW5ndGg/e2RvbmU6ITB9Ontkb25lOiExLHZhbHVlOmVbbisrXX19LGU6ZnVuY3Rpb24oZSl7dGhyb3cgZX0sZjphfX10aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gaXRlcmF0ZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9dmFyIG8scz0hMCxjPSExO3JldHVybntzOmZ1bmN0aW9uKCl7cj1yLmNhbGwoZSl9LG46ZnVuY3Rpb24oKXt2YXIgZT1yLm5leHQoKTtyZXR1cm4gcz1lLmRvbmUsZX0sZTpmdW5jdGlvbihlKXtjPSEwLG89ZX0sZjpmdW5jdGlvbigpe3RyeXtzfHxudWxsPT1yLnJldHVybnx8ci5yZXR1cm4oKX1maW5hbGx5e2lmKGMpdGhyb3cgb319fX1mdW5jdGlvbiBpKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciByPTAsbj1uZXcgQXJyYXkodCk7cjx0O3IrKyluW3JdPWVbcl07cmV0dXJuIG59ZnVuY3Rpb24gbyhlLHQpe3JldHVybiBvPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuX19wcm90b19fPXQsZX0sbyhlLHQpfWZ1bmN0aW9uIHMoZSl7cmV0dXJuIHM9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSl9LHMoZSl9ZnVuY3Rpb24gYyhlKXtyZXR1cm4gYz0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZX0sYyhlKX1mdW5jdGlvbiB1KGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gbChlLHQpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgbj10W3JdO24uZW51bWVyYWJsZT1uLmVudW1lcmFibGV8fCExLG4uY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBuJiYobi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsKHZvaWQgMCxhPWZ1bmN0aW9uKGUsdCl7aWYoIm9iamVjdCIhPT1jKGUpfHxudWxsPT09ZSlyZXR1cm4gZTt2YXIgcj1lW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09cil7dmFyIG49ci5jYWxsKGUsInN0cmluZyIpO2lmKCJvYmplY3QiIT09YyhuKSlyZXR1cm4gbjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybiBTdHJpbmcoZSl9KG4ua2V5KSwic3ltYm9sIj09PWMoYSk/YTpTdHJpbmcoYSkpLG4pfXZhciBhfWZ1bmN0aW9uIGYoZSx0LHIpe3JldHVybiB0JiZsKGUucHJvdG90eXBlLHQpLHImJmwoZSxyKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxlfWZ1bmN0aW9uIGgoZSx0LHIsbixhKXtmb3IodmFyIGk9ZSxvPTAscz10Lmxlbmd0aC0xO288cztvKyspe3ZhciBjPXRbb107aT1pW2NdfHwoaVtjXT1bXSl9aVt0LmF0KC0xKV09e2NoZWNrRm46cixpdGVyYXRlRm46bixwcm9jZXNzRm46YX19dmFyIGQ9W107aChkLFtuLk9QUy5zYXZlLG4uT1BTLnRyYW5zZm9ybSxuLk9QUy5wYWludElubGluZUltYWdlWE9iamVjdCxuLk9QUy5yZXN0b3JlXSxudWxsLChmdW5jdGlvbihlLHQpe3ZhciByPWUuZm5BcnJheSxhPSh0LShlLmlDdXJyLTMpKSU0O3N3aXRjaChhKXtjYXNlIDA6cmV0dXJuIHJbdF09PT1uLk9QUy5zYXZlO2Nhc2UgMTpyZXR1cm4gclt0XT09PW4uT1BTLnRyYW5zZm9ybTtjYXNlIDI6cmV0dXJuIHJbdF09PT1uLk9QUy5wYWludElubGluZUltYWdlWE9iamVjdDtjYXNlIDM6cmV0dXJuIHJbdF09PT1uLk9QUy5yZXN0b3JlfXRocm93IG5ldyBFcnJvcigiaXRlcmF0ZUlubGluZUltYWdlR3JvdXAgLSBpbnZhbGlkIHBvczogIi5jb25jYXQoYSkpfSksKGZ1bmN0aW9uKGUsdCl7dmFyIHI9ZS5mbkFycmF5LGE9ZS5hcmdzQXJyYXksaT1lLmlDdXJyLG89aS0zLHM9aS0yLGM9aS0xLHU9TWF0aC5taW4oTWF0aC5mbG9vcigodC1vKS80KSwyMDApO2lmKHU8MTApcmV0dXJuIHQtKHQtbyklNDtmb3IodmFyIGw9MCxmPVtdLGg9MCxkPTEscD0xLGc9MDtnPHU7ZysrKXt2YXIgdj1hW3MrKGc8PDIpXSx5PWFbYysoZzw8MildWzBdO2QreS53aWR0aD4xZTMmJihsPU1hdGgubWF4KGwsZCkscCs9aCsyLGQ9MCxoPTApLGYucHVzaCh7dHJhbnNmb3JtOnYseDpkLHk6cCx3Onkud2lkdGgsaDp5LmhlaWdodH0pLGQrPXkud2lkdGgrMixoPU1hdGgubWF4KGgseS5oZWlnaHQpfWZvcih2YXIgbT1NYXRoLm1heChsLGQpKzEsYj1wK2grMSx3PW5ldyBVaW50OEFycmF5KG0qYio0KSxrPW08PDIsUz0wO1M8dTtTKyspe3ZhciB4PWFbYysoUzw8MildWzBdLmRhdGEsTz1mW1NdLnc8PDIsQT0wLEM9ZltTXS54K2ZbU10ueSptPDwyO3cuc2V0KHguc3ViYXJyYXkoMCxPKSxDLWspO2Zvcih2YXIgRj0wLFA9ZltTXS5oO0Y8UDtGKyspdy5zZXQoeC5zdWJhcnJheShBLEErTyksQyksQSs9TyxDKz1rO2Zvcih3LnNldCh4LnN1YmFycmF5KEEtTyxBKSxDKTtDPj0wOyl4W0MtNF09eFtDXSx4W0MtM109eFtDKzFdLHhbQy0yXT14W0MrMl0seFtDLTFdPXhbQyszXSx4W0MrT109eFtDK08tNF0seFtDK08rMV09eFtDK08tM10seFtDK08rMl09eFtDK08tMl0seFtDK08rM109eFtDK08tMV0sQy09a31yZXR1cm4gci5zcGxpY2Uobyw0KnUsbi5PUFMucGFpbnRJbmxpbmVJbWFnZVhPYmplY3RHcm91cCksYS5zcGxpY2Uobyw0KnUsW3t3aWR0aDptLGhlaWdodDpiLGtpbmQ6bi5JbWFnZUtpbmQuUkdCQV8zMkJQUCxkYXRhOnd9LGZdKSxvKzF9KSksaChkLFtuLk9QUy5zYXZlLG4uT1BTLnRyYW5zZm9ybSxuLk9QUy5wYWludEltYWdlTWFza1hPYmplY3Qsbi5PUFMucmVzdG9yZV0sbnVsbCwoZnVuY3Rpb24oZSx0KXt2YXIgcj1lLmZuQXJyYXksYT0odC0oZS5pQ3Vyci0zKSklNDtzd2l0Y2goYSl7Y2FzZSAwOnJldHVybiByW3RdPT09bi5PUFMuc2F2ZTtjYXNlIDE6cmV0dXJuIHJbdF09PT1uLk9QUy50cmFuc2Zvcm07Y2FzZSAyOnJldHVybiByW3RdPT09bi5PUFMucGFpbnRJbWFnZU1hc2tYT2JqZWN0O2Nhc2UgMzpyZXR1cm4gclt0XT09PW4uT1BTLnJlc3RvcmV9dGhyb3cgbmV3IEVycm9yKCJpdGVyYXRlSW1hZ2VNYXNrR3JvdXAgLSBpbnZhbGlkIHBvczogIi5jb25jYXQoYSkpfSksKGZ1bmN0aW9uKGUsdCl7dmFyIHI9ZS5mbkFycmF5LGE9ZS5hcmdzQXJyYXksaT1lLmlDdXJyLG89aS0zLHM9aS0yLGM9aS0xLHU9TWF0aC5mbG9vcigodC1vKS80KTtpZih1PDEwKXJldHVybiB0LSh0LW8pJTQ7dmFyIGwsZixoPSExLGQ9YVtjXVswXSxwPWFbc11bMF0sZz1hW3NdWzFdLHY9YVtzXVsyXSx5PWFbc11bM107aWYoZz09PXYpe2g9ITAsbD1zKzQ7Zm9yKHZhciBtPWMrNCxiPTE7Yjx1O2IrKyxsKz00LG0rPTQpaWYoZj1hW2xdLGFbbV1bMF0hPT1kfHxmWzBdIT09cHx8ZlsxXSE9PWd8fGZbMl0hPT12fHxmWzNdIT09eSl7YjwxMD9oPSExOnU9YjticmVha319aWYoaCl7dT1NYXRoLm1pbih1LDFlMyk7dmFyIHc9bmV3IEZsb2F0MzJBcnJheSgyKnUpO2w9cztmb3IodmFyIGs9MDtrPHU7aysrLGwrPTQpZj1hW2xdLHdbazw8MV09Zls0XSx3WzErKGs8PDEpXT1mWzVdO3Iuc3BsaWNlKG8sNCp1LG4uT1BTLnBhaW50SW1hZ2VNYXNrWE9iamVjdFJlcGVhdCksYS5zcGxpY2Uobyw0KnUsW2QscCxnLHYseSx3XSl9ZWxzZXt1PU1hdGgubWluKHUsMTAwKTtmb3IodmFyIFM9W10seD0wO3g8dTt4Kyspe2Y9YVtzKyh4PDwyKV07dmFyIE89YVtjKyh4PDwyKV1bMF07Uy5wdXNoKHtkYXRhOk8uZGF0YSx3aWR0aDpPLndpZHRoLGhlaWdodDpPLmhlaWdodCxpbnRlcnBvbGF0ZTpPLmludGVycG9sYXRlLGNvdW50Ok8uY291bnQsdHJhbnNmb3JtOmZ9KX1yLnNwbGljZShvLDQqdSxuLk9QUy5wYWludEltYWdlTWFza1hPYmplY3RHcm91cCksYS5zcGxpY2Uobyw0KnUsW1NdKX1yZXR1cm4gbysxfSkpLGgoZCxbbi5PUFMuc2F2ZSxuLk9QUy50cmFuc2Zvcm0sbi5PUFMucGFpbnRJbWFnZVhPYmplY3Qsbi5PUFMucmVzdG9yZV0sKGZ1bmN0aW9uKGUpe3ZhciB0PWUuYXJnc0FycmF5LHI9ZS5pQ3Vyci0yO3JldHVybiAwPT09dFtyXVsxXSYmMD09PXRbcl1bMl19KSwoZnVuY3Rpb24oZSx0KXt2YXIgcj1lLmZuQXJyYXksYT1lLmFyZ3NBcnJheSxpPSh0LShlLmlDdXJyLTMpKSU0O3N3aXRjaChpKXtjYXNlIDA6cmV0dXJuIHJbdF09PT1uLk9QUy5zYXZlO2Nhc2UgMTppZihyW3RdIT09bi5PUFMudHJhbnNmb3JtKXJldHVybiExO3ZhciBvPWUuaUN1cnItMixzPWFbb11bMF0sYz1hW29dWzNdO3JldHVybiBhW3RdWzBdPT09cyYmMD09PWFbdF1bMV0mJjA9PT1hW3RdWzJdJiZhW3RdWzNdPT09YztjYXNlIDI6aWYoclt0XSE9PW4uT1BTLnBhaW50SW1hZ2VYT2JqZWN0KXJldHVybiExO3ZhciB1PWFbZS5pQ3Vyci0xXVswXTtyZXR1cm4gYVt0XVswXT09PXU7Y2FzZSAzOnJldHVybiByW3RdPT09bi5PUFMucmVzdG9yZX10aHJvdyBuZXcgRXJyb3IoIml0ZXJhdGVJbWFnZUdyb3VwIC0gaW52YWxpZCBwb3M6ICIuY29uY2F0KGkpKX0pLChmdW5jdGlvbihlLHQpe3ZhciByPWUuZm5BcnJheSxhPWUuYXJnc0FycmF5LGk9ZS5pQ3VycixvPWktMyxzPWktMixjPWFbaS0xXVswXSx1PWFbc11bMF0sbD1hW3NdWzNdLGY9TWF0aC5taW4oTWF0aC5mbG9vcigodC1vKS80KSwxZTMpO2lmKGY8MylyZXR1cm4gdC0odC1vKSU0O2Zvcih2YXIgaD1uZXcgRmxvYXQzMkFycmF5KDIqZiksZD1zLHA9MDtwPGY7cCsrLGQrPTQpe3ZhciBnPWFbZF07aFtwPDwxXT1nWzRdLGhbMSsocDw8MSldPWdbNV19dmFyIHY9W2MsdSxsLGhdO3JldHVybiByLnNwbGljZShvLDQqZixuLk9QUy5wYWludEltYWdlWE9iamVjdFJlcGVhdCksYS5zcGxpY2Uobyw0KmYsdiksbysxfSkpLGgoZCxbbi5PUFMuYmVnaW5UZXh0LG4uT1BTLnNldEZvbnQsbi5PUFMuc2V0VGV4dE1hdHJpeCxuLk9QUy5zaG93VGV4dCxuLk9QUy5lbmRUZXh0XSxudWxsLChmdW5jdGlvbihlLHQpe3ZhciByPWUuZm5BcnJheSxhPWUuYXJnc0FycmF5LGk9KHQtKGUuaUN1cnItNCkpJTU7c3dpdGNoKGkpe2Nhc2UgMDpyZXR1cm4gclt0XT09PW4uT1BTLmJlZ2luVGV4dDtjYXNlIDE6cmV0dXJuIHJbdF09PT1uLk9QUy5zZXRGb250O2Nhc2UgMjpyZXR1cm4gclt0XT09PW4uT1BTLnNldFRleHRNYXRyaXg7Y2FzZSAzOmlmKHJbdF0hPT1uLk9QUy5zaG93VGV4dClyZXR1cm4hMTt2YXIgbz1lLmlDdXJyLTMscz1hW29dWzBdLGM9YVtvXVsxXTtyZXR1cm4gYVt0XVswXT09PXMmJmFbdF1bMV09PT1jO2Nhc2UgNDpyZXR1cm4gclt0XT09PW4uT1BTLmVuZFRleHR9dGhyb3cgbmV3IEVycm9yKCJpdGVyYXRlU2hvd1RleHRHcm91cCAtIGludmFsaWQgcG9zOiAiLmNvbmNhdChpKSl9KSwoZnVuY3Rpb24oZSx0KXt2YXIgcj1lLmZuQXJyYXksbj1lLmFyZ3NBcnJheSxhPWUuaUN1cnIsaT1hLTQsbz1hLTMscz1hLTIsYz1hLTEsdT1hLGw9bltvXVswXSxmPW5bb11bMV0saD1NYXRoLm1pbihNYXRoLmZsb29yKCh0LWkpLzUpLDFlMyk7aWYoaDwzKXJldHVybiB0LSh0LWkpJTU7dmFyIGQ9aTtpPj00JiZyW2ktNF09PT1yW29dJiZyW2ktM109PT1yW3NdJiZyW2ktMl09PT1yW2NdJiZyW2ktMV09PT1yW3VdJiZuW2ktNF1bMF09PT1sJiZuW2ktNF1bMV09PT1mJiYoaCsrLGQtPTUpO2Zvcih2YXIgcD1kKzQsZz0xO2c8aDtnKyspci5zcGxpY2UocCwzKSxuLnNwbGljZShwLDMpLHArPTI7cmV0dXJuIHArMX0pKTt2YXIgcD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCl7dSh0aGlzLGUpLHRoaXMucXVldWU9dH1yZXR1cm4gZihlLFt7a2V5OiJfb3B0aW1pemUiLHZhbHVlOmZ1bmN0aW9uKCl7fX0se2tleToicHVzaCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt0aGlzLnF1ZXVlLmZuQXJyYXkucHVzaChlKSx0aGlzLnF1ZXVlLmFyZ3NBcnJheS5wdXNoKHQpLHRoaXMuX29wdGltaXplKCl9fSx7a2V5OiJmbHVzaCIsdmFsdWU6ZnVuY3Rpb24oKXt9fSx7a2V5OiJyZXNldCIsdmFsdWU6ZnVuY3Rpb24oKXt9fV0pLGV9KCksZz1mdW5jdGlvbihlKXshZnVuY3Rpb24oZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksdCYmbyhlLHQpfShhLGUpO3ZhciB0LHIsbj0odD1hLHI9ZnVuY3Rpb24oKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdClyZXR1cm4hMTtpZihSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLChmdW5jdGlvbigpe30pKSksITB9Y2F0Y2goZSl7cmV0dXJuITF9fSgpLGZ1bmN0aW9uKCl7dmFyIGUsbj1zKHQpO2lmKHIpe3ZhciBhPXModGhpcykuY29uc3RydWN0b3I7ZT1SZWZsZWN0LmNvbnN0cnVjdChuLGFyZ3VtZW50cyxhKX1lbHNlIGU9bi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYodCYmKCJvYmplY3QiPT09Yyh0KXx8ImZ1bmN0aW9uIj09dHlwZW9mIHQpKXJldHVybiB0O2lmKHZvaWQgMCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24oZSl7aWYodm9pZCAwPT09ZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBlfShlKX0odGhpcyxlKX0pO2Z1bmN0aW9uIGEoZSl7dmFyIHQ7cmV0dXJuIHUodGhpcyxhKSwodD1uLmNhbGwodGhpcyxlKSkuc3RhdGU9bnVsbCx0LmNvbnRleHQ9e2lDdXJyOjAsZm5BcnJheTplLmZuQXJyYXksYXJnc0FycmF5OmUuYXJnc0FycmF5fSx0Lm1hdGNoPW51bGwsdC5sYXN0UHJvY2Vzc2VkPTAsdH1yZXR1cm4gZihhLFt7a2V5OiJfb3B0aW1pemUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5xdWV1ZS5mbkFycmF5LHQ9dGhpcy5sYXN0UHJvY2Vzc2VkLHI9ZS5sZW5ndGgsbj10aGlzLnN0YXRlLGE9dGhpcy5tYXRjaDtpZihufHxhfHx0KzEhPT1yfHxkW2VbdF1dKXtmb3IodmFyIGk9dGhpcy5jb250ZXh0O3Q8cjspe2lmKGEpe2lmKCgwLGEuaXRlcmF0ZUZuKShpLHQpKXt0Kys7Y29udGludWV9aWYodD0oMCxhLnByb2Nlc3NGbikoaSx0KzEpLGE9bnVsbCxuPW51bGwsdD49KHI9ZS5sZW5ndGgpKWJyZWFrfShuPShufHxkKVtlW3RdXSkmJiFBcnJheS5pc0FycmF5KG4pPyhpLmlDdXJyPXQsdCsrLCFuLmNoZWNrRm58fCgwLG4uY2hlY2tGbikoaSk/KGE9bixuPW51bGwpOm49bnVsbCk6dCsrfXRoaXMuc3RhdGU9bix0aGlzLm1hdGNoPWEsdGhpcy5sYXN0UHJvY2Vzc2VkPXR9ZWxzZSB0aGlzLmxhc3RQcm9jZXNzZWQ9cn19LHtrZXk6ImZsdXNoIix2YWx1ZTpmdW5jdGlvbigpe2Zvcig7dGhpcy5tYXRjaDspe3ZhciBlPXRoaXMucXVldWUuZm5BcnJheS5sZW5ndGg7dGhpcy5sYXN0UHJvY2Vzc2VkPSgwLHRoaXMubWF0Y2gucHJvY2Vzc0ZuKSh0aGlzLmNvbnRleHQsZSksdGhpcy5tYXRjaD1udWxsLHRoaXMuc3RhdGU9bnVsbCx0aGlzLl9vcHRpbWl6ZSgpfX19LHtrZXk6InJlc2V0Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuc3RhdGU9bnVsbCx0aGlzLm1hdGNoPW51bGwsdGhpcy5sYXN0UHJvY2Vzc2VkPTB9fV0pLGF9KHApLHY9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOjAscj1hcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMDt1KHRoaXMsZSksdGhpcy5fc3RyZWFtU2luaz1yLHRoaXMuZm5BcnJheT1bXSx0aGlzLmFyZ3NBcnJheT1bXSwhcnx8dCZuLlJlbmRlcmluZ0ludGVudEZsYWcuT1BMSVNUP3RoaXMub3B0aW1pemVyPW5ldyBwKHRoaXMpOnRoaXMub3B0aW1pemVyPW5ldyBnKHRoaXMpLHRoaXMuZGVwZW5kZW5jaWVzPW5ldyBTZXQsdGhpcy5fdG90YWxMZW5ndGg9MCx0aGlzLndlaWdodD0wLHRoaXMuX3Jlc29sdmVkPXI/bnVsbDpQcm9taXNlLnJlc29sdmUoKX1yZXR1cm4gZihlLFt7a2V5OiJsZW5ndGgiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmFyZ3NBcnJheS5sZW5ndGh9fSx7a2V5OiJyZWFkeSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Jlc29sdmVkfHx0aGlzLl9zdHJlYW1TaW5rLnJlYWR5fX0se2tleToidG90YWxMZW5ndGgiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl90b3RhbExlbmd0aCt0aGlzLmxlbmd0aH19LHtrZXk6ImFkZE9wIix2YWx1ZTpmdW5jdGlvbih0LHIpe3RoaXMub3B0aW1pemVyLnB1c2godCxyKSx0aGlzLndlaWdodCsrLHRoaXMuX3N0cmVhbVNpbmsmJih0aGlzLndlaWdodD49ZS5DSFVOS19TSVpFfHx0aGlzLndlaWdodD49ZS5DSFVOS19TSVpFX0FCT1VUJiYodD09PW4uT1BTLnJlc3RvcmV8fHQ9PT1uLk9QUy5lbmRUZXh0KSkmJnRoaXMuZmx1c2goKX19LHtrZXk6ImFkZEltYWdlT3BzIix2YWx1ZTpmdW5jdGlvbihlLHQscil7dm9pZCAwIT09ciYmdGhpcy5hZGRPcChuLk9QUy5iZWdpbk1hcmtlZENvbnRlbnRQcm9wcyxbIk9DIixyXSksdGhpcy5hZGRPcChlLHQpLHZvaWQgMCE9PXImJnRoaXMuYWRkT3Aobi5PUFMuZW5kTWFya2VkQ29udGVudCxbXSl9fSx7a2V5OiJhZGREZXBlbmRlbmN5Iix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLmRlcGVuZGVuY2llcy5oYXMoZSl8fCh0aGlzLmRlcGVuZGVuY2llcy5hZGQoZSksdGhpcy5hZGRPcChuLk9QUy5kZXBlbmRlbmN5LFtlXSkpfX0se2tleToiYWRkRGVwZW5kZW5jaWVzIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdCxyPWEoZSk7dHJ5e2ZvcihyLnMoKTshKHQ9ci5uKCkpLmRvbmU7KXt2YXIgbj10LnZhbHVlO3RoaXMuYWRkRGVwZW5kZW5jeShuKX19Y2F0Y2goZSl7ci5lKGUpfWZpbmFsbHl7ci5mKCl9fX0se2tleToiYWRkT3BMaXN0Iix2YWx1ZTpmdW5jdGlvbih0KXtpZih0IGluc3RhbmNlb2YgZSl7dmFyIHIsaT1hKHQuZGVwZW5kZW5jaWVzKTt0cnl7Zm9yKGkucygpOyEocj1pLm4oKSkuZG9uZTspe3ZhciBvPXIudmFsdWU7dGhpcy5kZXBlbmRlbmNpZXMuYWRkKG8pfX1jYXRjaChlKXtpLmUoZSl9ZmluYWxseXtpLmYoKX1mb3IodmFyIHM9MCxjPXQubGVuZ3RoO3M8YztzKyspdGhpcy5hZGRPcCh0LmZuQXJyYXlbc10sdC5hcmdzQXJyYXlbc10pfWVsc2UoMCxuLndhcm4pKCdhZGRPcExpc3QgLSBpZ25vcmluZyBpbnZhbGlkICJvcExpc3QiIHBhcmFtZXRlci4nKX19LHtrZXk6ImdldElSIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybntmbkFycmF5OnRoaXMuZm5BcnJheSxhcmdzQXJyYXk6dGhpcy5hcmdzQXJyYXksbGVuZ3RoOnRoaXMubGVuZ3RofX19LHtrZXk6Il90cmFuc2ZlcnMiLGdldDpmdW5jdGlvbigpe2Zvcih2YXIgZT1bXSx0PXRoaXMuZm5BcnJheSxyPXRoaXMuYXJnc0FycmF5LGE9dGhpcy5sZW5ndGgsaT0wO2k8YTtpKyspc3dpdGNoKHRbaV0pe2Nhc2Ugbi5PUFMucGFpbnRJbmxpbmVJbWFnZVhPYmplY3Q6Y2FzZSBuLk9QUy5wYWludElubGluZUltYWdlWE9iamVjdEdyb3VwOmNhc2Ugbi5PUFMucGFpbnRJbWFnZU1hc2tYT2JqZWN0OnZhciBvPXJbaV1bMF07IW8uY2FjaGVkJiZvLmRhdGEmJm8uZGF0YS5idWZmZXIgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlciYmZS5wdXNoKG8uZGF0YS5idWZmZXIpfXJldHVybiBlfX0se2tleToiZmx1c2giLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0mJmFyZ3VtZW50c1swXSx0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpudWxsO3RoaXMub3B0aW1pemVyLmZsdXNoKCk7dmFyIHI9dGhpcy5sZW5ndGg7dGhpcy5fdG90YWxMZW5ndGgrPXIsdGhpcy5fc3RyZWFtU2luay5lbnF1ZXVlKHtmbkFycmF5OnRoaXMuZm5BcnJheSxhcmdzQXJyYXk6dGhpcy5hcmdzQXJyYXksbGFzdENodW5rOmUsc2VwYXJhdGVBbm5vdHM6dCxsZW5ndGg6cn0sMSx0aGlzLl90cmFuc2ZlcnMpLHRoaXMuZGVwZW5kZW5jaWVzLmNsZWFyKCksdGhpcy5mbkFycmF5Lmxlbmd0aD0wLHRoaXMuYXJnc0FycmF5Lmxlbmd0aD0wLHRoaXMud2VpZ2h0PTAsdGhpcy5vcHRpbWl6ZXIucmVzZXQoKX19XSxbe2tleToiQ0hVTktfU0laRSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsIkNIVU5LX1NJWkUiLDFlMyl9fSx7a2V5OiJDSFVOS19TSVpFX0FCT1VUIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywiQ0hVTktfU0laRV9BQk9VVCIsdGhpcy5DSFVOS19TSVpFLTUpfX1dKSxlfSgpO3QuT3BlcmF0b3JMaXN0PXZ9LChlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5QREZJbWFnZT12b2lkIDA7dmFyIG49cigyKSxhPXIoMTkzKSxpPXIoMTM2KSxvPXIoMTQzKSxzPXIoMTQ4KSxjPXIoMTU2KSx1PXIoMTU5KSxsPXIoMTM0KTtmdW5jdGlvbiBmKGUpe3JldHVybiBmPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSxmKGUpfWZ1bmN0aW9uIGgoKXtoPWZ1bmN0aW9uKCl7cmV0dXJuIGV9O3ZhciBlPXt9LHQ9T2JqZWN0LnByb3RvdHlwZSxyPXQuaGFzT3duUHJvcGVydHksbj1PYmplY3QuZGVmaW5lUHJvcGVydHl8fGZ1bmN0aW9uKGUsdCxyKXtlW3RdPXIudmFsdWV9LGE9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbD9TeW1ib2w6e30saT1hLml0ZXJhdG9yfHwiQEBpdGVyYXRvciIsbz1hLmFzeW5jSXRlcmF0b3J8fCJAQGFzeW5jSXRlcmF0b3IiLHM9YS50b1N0cmluZ1RhZ3x8IkBAdG9TdHJpbmdUYWciO2Z1bmN0aW9uIGMoZSx0LHIpe3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpyLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSksZVt0XX10cnl7Yyh7fSwiIil9Y2F0Y2goZSl7Yz1mdW5jdGlvbihlLHQscil7cmV0dXJuIGVbdF09cn19ZnVuY3Rpb24gdShlLHQscixhKXt2YXIgaT10JiZ0LnByb3RvdHlwZSBpbnN0YW5jZW9mIHA/dDpwLG89T2JqZWN0LmNyZWF0ZShpLnByb3RvdHlwZSkscz1uZXcgRihhfHxbXSk7cmV0dXJuIG4obywiX2ludm9rZSIse3ZhbHVlOngoZSxyLHMpfSksb31mdW5jdGlvbiBsKGUsdCxyKXt0cnl7cmV0dXJue3R5cGU6Im5vcm1hbCIsYXJnOmUuY2FsbCh0LHIpfX1jYXRjaChlKXtyZXR1cm57dHlwZToidGhyb3ciLGFyZzplfX19ZS53cmFwPXU7dmFyIGQ9e307ZnVuY3Rpb24gcCgpe31mdW5jdGlvbiBnKCl7fWZ1bmN0aW9uIHYoKXt9dmFyIHk9e307Yyh5LGksKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSk7dmFyIG09T2JqZWN0LmdldFByb3RvdHlwZU9mLGI9bSYmbShtKFAoW10pKSk7YiYmYiE9PXQmJnIuY2FsbChiLGkpJiYoeT1iKTt2YXIgdz12LnByb3RvdHlwZT1wLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHkpO2Z1bmN0aW9uIGsoZSl7WyJuZXh0IiwidGhyb3ciLCJyZXR1cm4iXS5mb3JFYWNoKChmdW5jdGlvbih0KXtjKGUsdCwoZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX2ludm9rZSh0LGUpfSkpfSkpfWZ1bmN0aW9uIFMoZSx0KXtmdW5jdGlvbiBhKG4saSxvLHMpe3ZhciBjPWwoZVtuXSxlLGkpO2lmKCJ0aHJvdyIhPT1jLnR5cGUpe3ZhciB1PWMuYXJnLGg9dS52YWx1ZTtyZXR1cm4gaCYmIm9iamVjdCI9PWYoaCkmJnIuY2FsbChoLCJfX2F3YWl0Iik/dC5yZXNvbHZlKGguX19hd2FpdCkudGhlbigoZnVuY3Rpb24oZSl7YSgibmV4dCIsZSxvLHMpfSksKGZ1bmN0aW9uKGUpe2EoInRocm93IixlLG8scyl9KSk6dC5yZXNvbHZlKGgpLnRoZW4oKGZ1bmN0aW9uKGUpe3UudmFsdWU9ZSxvKHUpfSksKGZ1bmN0aW9uKGUpe3JldHVybiBhKCJ0aHJvdyIsZSxvLHMpfSkpfXMoYy5hcmcpfXZhciBpO24odGhpcywiX2ludm9rZSIse3ZhbHVlOmZ1bmN0aW9uKGUscil7ZnVuY3Rpb24gbigpe3JldHVybiBuZXcgdCgoZnVuY3Rpb24odCxuKXthKGUscix0LG4pfSkpfXJldHVybiBpPWk/aS50aGVuKG4sbik6bigpfX0pfWZ1bmN0aW9uIHgoZSx0LHIpe3ZhciBuPSJzdXNwZW5kZWRTdGFydCI7cmV0dXJuIGZ1bmN0aW9uKGEsaSl7aWYoImV4ZWN1dGluZyI9PT1uKXRocm93IG5ldyBFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgcnVubmluZyIpO2lmKCJjb21wbGV0ZWQiPT09bil7aWYoInRocm93Ij09PWEpdGhyb3cgaTtyZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9fWZvcihyLm1ldGhvZD1hLHIuYXJnPWk7Oyl7dmFyIG89ci5kZWxlZ2F0ZTtpZihvKXt2YXIgcz1PKG8scik7aWYocyl7aWYocz09PWQpY29udGludWU7cmV0dXJuIHN9fWlmKCJuZXh0Ij09PXIubWV0aG9kKXIuc2VudD1yLl9zZW50PXIuYXJnO2Vsc2UgaWYoInRocm93Ij09PXIubWV0aG9kKXtpZigic3VzcGVuZGVkU3RhcnQiPT09bil0aHJvdyBuPSJjb21wbGV0ZWQiLHIuYXJnO3IuZGlzcGF0Y2hFeGNlcHRpb24oci5hcmcpfWVsc2UicmV0dXJuIj09PXIubWV0aG9kJiZyLmFicnVwdCgicmV0dXJuIixyLmFyZyk7bj0iZXhlY3V0aW5nIjt2YXIgYz1sKGUsdCxyKTtpZigibm9ybWFsIj09PWMudHlwZSl7aWYobj1yLmRvbmU/ImNvbXBsZXRlZCI6InN1c3BlbmRlZFlpZWxkIixjLmFyZz09PWQpY29udGludWU7cmV0dXJue3ZhbHVlOmMuYXJnLGRvbmU6ci5kb25lfX0idGhyb3ciPT09Yy50eXBlJiYobj0iY29tcGxldGVkIixyLm1ldGhvZD0idGhyb3ciLHIuYXJnPWMuYXJnKX19fWZ1bmN0aW9uIE8oZSx0KXt2YXIgcj10Lm1ldGhvZCxuPWUuaXRlcmF0b3Jbcl07aWYodm9pZCAwPT09bilyZXR1cm4gdC5kZWxlZ2F0ZT1udWxsLCJ0aHJvdyI9PT1yJiZlLml0ZXJhdG9yLnJldHVybiYmKHQubWV0aG9kPSJyZXR1cm4iLHQuYXJnPXZvaWQgMCxPKGUsdCksInRocm93Ij09PXQubWV0aG9kKXx8InJldHVybiIhPT1yJiYodC5tZXRob2Q9InRocm93Iix0LmFyZz1uZXcgVHlwZUVycm9yKCJUaGUgaXRlcmF0b3IgZG9lcyBub3QgcHJvdmlkZSBhICciK3IrIicgbWV0aG9kIikpLGQ7dmFyIGE9bChuLGUuaXRlcmF0b3IsdC5hcmcpO2lmKCJ0aHJvdyI9PT1hLnR5cGUpcmV0dXJuIHQubWV0aG9kPSJ0aHJvdyIsdC5hcmc9YS5hcmcsdC5kZWxlZ2F0ZT1udWxsLGQ7dmFyIGk9YS5hcmc7cmV0dXJuIGk/aS5kb25lPyh0W2UucmVzdWx0TmFtZV09aS52YWx1ZSx0Lm5leHQ9ZS5uZXh0TG9jLCJyZXR1cm4iIT09dC5tZXRob2QmJih0Lm1ldGhvZD0ibmV4dCIsdC5hcmc9dm9pZCAwKSx0LmRlbGVnYXRlPW51bGwsZCk6aToodC5tZXRob2Q9InRocm93Iix0LmFyZz1uZXcgVHlwZUVycm9yKCJpdGVyYXRvciByZXN1bHQgaXMgbm90IGFuIG9iamVjdCIpLHQuZGVsZWdhdGU9bnVsbCxkKX1mdW5jdGlvbiBBKGUpe3ZhciB0PXt0cnlMb2M6ZVswXX07MSBpbiBlJiYodC5jYXRjaExvYz1lWzFdKSwyIGluIGUmJih0LmZpbmFsbHlMb2M9ZVsyXSx0LmFmdGVyTG9jPWVbM10pLHRoaXMudHJ5RW50cmllcy5wdXNoKHQpfWZ1bmN0aW9uIEMoZSl7dmFyIHQ9ZS5jb21wbGV0aW9ufHx7fTt0LnR5cGU9Im5vcm1hbCIsZGVsZXRlIHQuYXJnLGUuY29tcGxldGlvbj10fWZ1bmN0aW9uIEYoZSl7dGhpcy50cnlFbnRyaWVzPVt7dHJ5TG9jOiJyb290In1dLGUuZm9yRWFjaChBLHRoaXMpLHRoaXMucmVzZXQoITApfWZ1bmN0aW9uIFAoZSl7aWYoZSl7dmFyIHQ9ZVtpXTtpZih0KXJldHVybiB0LmNhbGwoZSk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGUubmV4dClyZXR1cm4gZTtpZighaXNOYU4oZS5sZW5ndGgpKXt2YXIgbj0tMSxhPWZ1bmN0aW9uIHQoKXtmb3IoOysrbjxlLmxlbmd0aDspaWYoci5jYWxsKGUsbikpcmV0dXJuIHQudmFsdWU9ZVtuXSx0LmRvbmU9ITEsdDtyZXR1cm4gdC52YWx1ZT12b2lkIDAsdC5kb25lPSEwLHR9O3JldHVybiBhLm5leHQ9YX19cmV0dXJue25leHQ6VH19ZnVuY3Rpb24gVCgpe3JldHVybnt2YWx1ZTp2b2lkIDAsZG9uZTohMH19cmV0dXJuIGcucHJvdG90eXBlPXYsbih3LCJjb25zdHJ1Y3RvciIse3ZhbHVlOnYsY29uZmlndXJhYmxlOiEwfSksbih2LCJjb25zdHJ1Y3RvciIse3ZhbHVlOmcsY29uZmlndXJhYmxlOiEwfSksZy5kaXNwbGF5TmFtZT1jKHYscywiR2VuZXJhdG9yRnVuY3Rpb24iKSxlLmlzR2VuZXJhdG9yRnVuY3Rpb249ZnVuY3Rpb24oZSl7dmFyIHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGUmJmUuY29uc3RydWN0b3I7cmV0dXJuISF0JiYodD09PWd8fCJHZW5lcmF0b3JGdW5jdGlvbiI9PT0odC5kaXNwbGF5TmFtZXx8dC5uYW1lKSl9LGUubWFyaz1mdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZihlLHYpOihlLl9fcHJvdG9fXz12LGMoZSxzLCJHZW5lcmF0b3JGdW5jdGlvbiIpKSxlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHcpLGV9LGUuYXdyYXA9ZnVuY3Rpb24oZSl7cmV0dXJue19fYXdhaXQ6ZX19LGsoUy5wcm90b3R5cGUpLGMoUy5wcm90b3R5cGUsbywoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSxlLkFzeW5jSXRlcmF0b3I9UyxlLmFzeW5jPWZ1bmN0aW9uKHQscixuLGEsaSl7dm9pZCAwPT09aSYmKGk9UHJvbWlzZSk7dmFyIG89bmV3IFModSh0LHIsbixhKSxpKTtyZXR1cm4gZS5pc0dlbmVyYXRvckZ1bmN0aW9uKHIpP286by5uZXh0KCkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIGUuZG9uZT9lLnZhbHVlOm8ubmV4dCgpfSkpfSxrKHcpLGModyxzLCJHZW5lcmF0b3IiKSxjKHcsaSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSxjKHcsInRvU3RyaW5nIiwoZnVuY3Rpb24oKXtyZXR1cm4iW29iamVjdCBHZW5lcmF0b3JdIn0pKSxlLmtleXM9ZnVuY3Rpb24oZSl7dmFyIHQ9T2JqZWN0KGUpLHI9W107Zm9yKHZhciBuIGluIHQpci5wdXNoKG4pO3JldHVybiByLnJldmVyc2UoKSxmdW5jdGlvbiBlKCl7Zm9yKDtyLmxlbmd0aDspe3ZhciBuPXIucG9wKCk7aWYobiBpbiB0KXJldHVybiBlLnZhbHVlPW4sZS5kb25lPSExLGV9cmV0dXJuIGUuZG9uZT0hMCxlfX0sZS52YWx1ZXM9UCxGLnByb3RvdHlwZT17Y29uc3RydWN0b3I6RixyZXNldDpmdW5jdGlvbihlKXtpZih0aGlzLnByZXY9MCx0aGlzLm5leHQ9MCx0aGlzLnNlbnQ9dGhpcy5fc2VudD12b2lkIDAsdGhpcy5kb25lPSExLHRoaXMuZGVsZWdhdGU9bnVsbCx0aGlzLm1ldGhvZD0ibmV4dCIsdGhpcy5hcmc9dm9pZCAwLHRoaXMudHJ5RW50cmllcy5mb3JFYWNoKEMpLCFlKWZvcih2YXIgdCBpbiB0aGlzKSJ0Ij09PXQuY2hhckF0KDApJiZyLmNhbGwodGhpcyx0KSYmIWlzTmFOKCt0LnNsaWNlKDEpKSYmKHRoaXNbdF09dm9pZCAwKX0sc3RvcDpmdW5jdGlvbigpe3RoaXMuZG9uZT0hMDt2YXIgZT10aGlzLnRyeUVudHJpZXNbMF0uY29tcGxldGlvbjtpZigidGhyb3ciPT09ZS50eXBlKXRocm93IGUuYXJnO3JldHVybiB0aGlzLnJ2YWx9LGRpc3BhdGNoRXhjZXB0aW9uOmZ1bmN0aW9uKGUpe2lmKHRoaXMuZG9uZSl0aHJvdyBlO3ZhciB0PXRoaXM7ZnVuY3Rpb24gbihyLG4pe3JldHVybiBvLnR5cGU9InRocm93IixvLmFyZz1lLHQubmV4dD1yLG4mJih0Lm1ldGhvZD0ibmV4dCIsdC5hcmc9dm9pZCAwKSwhIW59Zm9yKHZhciBhPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTthPj0wOy0tYSl7dmFyIGk9dGhpcy50cnlFbnRyaWVzW2FdLG89aS5jb21wbGV0aW9uO2lmKCJyb290Ij09PWkudHJ5TG9jKXJldHVybiBuKCJlbmQiKTtpZihpLnRyeUxvYzw9dGhpcy5wcmV2KXt2YXIgcz1yLmNhbGwoaSwiY2F0Y2hMb2MiKSxjPXIuY2FsbChpLCJmaW5hbGx5TG9jIik7aWYocyYmYyl7aWYodGhpcy5wcmV2PGkuY2F0Y2hMb2MpcmV0dXJuIG4oaS5jYXRjaExvYywhMCk7aWYodGhpcy5wcmV2PGkuZmluYWxseUxvYylyZXR1cm4gbihpLmZpbmFsbHlMb2MpfWVsc2UgaWYocyl7aWYodGhpcy5wcmV2PGkuY2F0Y2hMb2MpcmV0dXJuIG4oaS5jYXRjaExvYywhMCl9ZWxzZXtpZighYyl0aHJvdyBuZXcgRXJyb3IoInRyeSBzdGF0ZW1lbnQgd2l0aG91dCBjYXRjaCBvciBmaW5hbGx5Iik7aWYodGhpcy5wcmV2PGkuZmluYWxseUxvYylyZXR1cm4gbihpLmZpbmFsbHlMb2MpfX19fSxhYnJ1cHQ6ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO24+PTA7LS1uKXt2YXIgYT10aGlzLnRyeUVudHJpZXNbbl07aWYoYS50cnlMb2M8PXRoaXMucHJldiYmci5jYWxsKGEsImZpbmFsbHlMb2MiKSYmdGhpcy5wcmV2PGEuZmluYWxseUxvYyl7dmFyIGk9YTticmVha319aSYmKCJicmVhayI9PT1lfHwiY29udGludWUiPT09ZSkmJmkudHJ5TG9jPD10JiZ0PD1pLmZpbmFsbHlMb2MmJihpPW51bGwpO3ZhciBvPWk/aS5jb21wbGV0aW9uOnt9O3JldHVybiBvLnR5cGU9ZSxvLmFyZz10LGk/KHRoaXMubWV0aG9kPSJuZXh0Iix0aGlzLm5leHQ9aS5maW5hbGx5TG9jLGQpOnRoaXMuY29tcGxldGUobyl9LGNvbXBsZXRlOmZ1bmN0aW9uKGUsdCl7aWYoInRocm93Ij09PWUudHlwZSl0aHJvdyBlLmFyZztyZXR1cm4iYnJlYWsiPT09ZS50eXBlfHwiY29udGludWUiPT09ZS50eXBlP3RoaXMubmV4dD1lLmFyZzoicmV0dXJuIj09PWUudHlwZT8odGhpcy5ydmFsPXRoaXMuYXJnPWUuYXJnLHRoaXMubWV0aG9kPSJyZXR1cm4iLHRoaXMubmV4dD0iZW5kIik6Im5vcm1hbCI9PT1lLnR5cGUmJnQmJih0aGlzLm5leHQ9dCksZH0sZmluaXNoOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7dD49MDstLXQpe3ZhciByPXRoaXMudHJ5RW50cmllc1t0XTtpZihyLmZpbmFsbHlMb2M9PT1lKXJldHVybiB0aGlzLmNvbXBsZXRlKHIuY29tcGxldGlvbixyLmFmdGVyTG9jKSxDKHIpLGR9fSxjYXRjaDpmdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO3Q+PTA7LS10KXt2YXIgcj10aGlzLnRyeUVudHJpZXNbdF07aWYoci50cnlMb2M9PT1lKXt2YXIgbj1yLmNvbXBsZXRpb247aWYoInRocm93Ij09PW4udHlwZSl7dmFyIGE9bi5hcmc7QyhyKX1yZXR1cm4gYX19dGhyb3cgbmV3IEVycm9yKCJpbGxlZ2FsIGNhdGNoIGF0dGVtcHQiKX0sZGVsZWdhdGVZaWVsZDpmdW5jdGlvbihlLHQscil7cmV0dXJuIHRoaXMuZGVsZWdhdGU9e2l0ZXJhdG9yOlAoZSkscmVzdWx0TmFtZTp0LG5leHRMb2M6cn0sIm5leHQiPT09dGhpcy5tZXRob2QmJih0aGlzLmFyZz12b2lkIDApLGR9fSxlfWZ1bmN0aW9uIGQoZSx0LHIsbixhLGksbyl7dHJ5e3ZhciBzPWVbaV0obyksYz1zLnZhbHVlfWNhdGNoKGUpe3JldHVybiB2b2lkIHIoZSl9cy5kb25lP3QoYyk6UHJvbWlzZS5yZXNvbHZlKGMpLnRoZW4obixhKX1mdW5jdGlvbiBwKGUsdCl7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBuPXRbcl07bi5lbnVtZXJhYmxlPW4uZW51bWVyYWJsZXx8ITEsbi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIG4mJihuLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwodm9pZCAwLGE9ZnVuY3Rpb24oZSx0KXtpZigib2JqZWN0IiE9PWYoZSl8fG51bGw9PT1lKXJldHVybiBlO3ZhciByPWVbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1yKXt2YXIgbj1yLmNhbGwoZSwic3RyaW5nIik7aWYoIm9iamVjdCIhPT1mKG4pKXJldHVybiBuO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuIFN0cmluZyhlKX0obi5rZXkpLCJzeW1ib2wiPT09ZihhKT9hOlN0cmluZyhhKSksbil9dmFyIGF9ZnVuY3Rpb24gZyhlLHQscixuKXtyZXR1cm4oZT10K2Uqcik8MD9lPTA6ZT5uJiYoZT1uKSxlfWZ1bmN0aW9uIHYoZSx0LHIsbixhLGkpe3ZhciBvLHM9YSppO289dDw9OD9uZXcgVWludDhBcnJheShzKTp0PD0xNj9uZXcgVWludDE2QXJyYXkocyk6bmV3IFVpbnQzMkFycmF5KHMpO3ZhciBjLHUsbCxmLGg9ci9hLGQ9bi9pLHA9MCxnPW5ldyBVaW50MTZBcnJheShhKSx2PXI7Zm9yKGM9MDtjPGE7YysrKWdbY109TWF0aC5mbG9vcihjKmgpO2ZvcihjPTA7YzxpO2MrKylmb3IobD1NYXRoLmZsb29yKGMqZCkqdix1PTA7dTxhO3UrKylmPWwrZ1t1XSxvW3ArK109ZVtmXTtyZXR1cm4gb312YXIgeT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCl7dmFyIHI9dC54cmVmLGE9dC5yZXMscz10LmltYWdlLGM9dC5pc0lubGluZSxmPXZvaWQgMCE9PWMmJmMsaD10LnNtYXNrLGQ9dm9pZCAwPT09aD9udWxsOmgscD10Lm1hc2ssZz12b2lkIDA9PT1wP251bGw6cCx2PXQuaXNNYXNrLHk9dm9pZCAwIT09diYmdixtPXQucGRmRnVuY3Rpb25GYWN0b3J5LGI9dC5sb2NhbENvbG9yU3BhY2VDYWNoZTshZnVuY3Rpb24oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxlKSx0aGlzLmltYWdlPXM7dmFyIHcsaz1zLmRpY3QsUz1rLmdldCgiRiIsIkZpbHRlciIpO2lmKFMgaW5zdGFuY2VvZiBsLk5hbWUpdz1TLm5hbWU7ZWxzZSBpZihBcnJheS5pc0FycmF5KFMpKXt2YXIgeD1yLmZldGNoSWZSZWYoU1swXSk7eCBpbnN0YW5jZW9mIGwuTmFtZSYmKHc9eC5uYW1lKX1zd2l0Y2godyl7Y2FzZSJKUFhEZWNvZGUiOnZhciBPPW5ldyB1LkpweEltYWdlO08ucGFyc2VJbWFnZVByb3BlcnRpZXMocy5zdHJlYW0pLHMuc3RyZWFtLnJlc2V0KCkscy53aWR0aD1PLndpZHRoLHMuaGVpZ2h0PU8uaGVpZ2h0LHMuYml0c1BlckNvbXBvbmVudD1PLmJpdHNQZXJDb21wb25lbnQscy5udW1Db21wcz1PLmNvbXBvbmVudHNDb3VudDticmVhaztjYXNlIkpCSUcyRGVjb2RlIjpzLmJpdHNQZXJDb21wb25lbnQ9MSxzLm51bUNvbXBzPTF9dmFyIEE9ay5nZXQoIlciLCJXaWR0aCIpLEM9ay5nZXQoIkgiLCJIZWlnaHQiKTtpZihOdW1iZXIuaXNJbnRlZ2VyKHMud2lkdGgpJiZzLndpZHRoPjAmJk51bWJlci5pc0ludGVnZXIocy5oZWlnaHQpJiZzLmhlaWdodD4wJiYocy53aWR0aCE9PUF8fHMuaGVpZ2h0IT09QykmJigoMCxuLndhcm4pKCJQREZJbWFnZSAtIHVzaW5nIHRoZSBXaWR0aC9IZWlnaHQgb2YgdGhlIGltYWdlIGRhdGEsIHJhdGhlciB0aGFuIHRoZSBpbWFnZSBkaWN0aW9uYXJ5LiIpLEE9cy53aWR0aCxDPXMuaGVpZ2h0KSxBPDF8fEM8MSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiSW52YWxpZCBpbWFnZSB3aWR0aDogIi5jb25jYXQoQSwiIG9yIGhlaWdodDogIikuY29uY2F0KEMpKTt0aGlzLndpZHRoPUEsdGhpcy5oZWlnaHQ9Qyx0aGlzLmludGVycG9sYXRlPWsuZ2V0KCJJIiwiSW50ZXJwb2xhdGUiKSx0aGlzLmltYWdlTWFzaz1rLmdldCgiSU0iLCJJbWFnZU1hc2siKXx8ITEsdGhpcy5tYXR0ZT1rLmdldCgiTWF0dGUiKXx8ITE7dmFyIEY9cy5iaXRzUGVyQ29tcG9uZW50O2lmKCFGJiYhKEY9ay5nZXQoIkJQQyIsIkJpdHNQZXJDb21wb25lbnQiKSkpe2lmKCF0aGlzLmltYWdlTWFzayl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiQml0cyBwZXIgY29tcG9uZW50IG1pc3NpbmcgaW4gaW1hZ2U6ICIuY29uY2F0KHRoaXMuaW1hZ2VNYXNrKSk7Rj0xfWlmKHRoaXMuYnBjPUYsIXRoaXMuaW1hZ2VNYXNrKXt2YXIgUD1rLmdldFJhdygiQ1MiKXx8ay5nZXRSYXcoIkNvbG9yU3BhY2UiKTtpZighUClzd2l0Y2goKDAsbi5pbmZvKSgiSlBYIGltYWdlcyAod2hpY2ggZG8gbm90IHJlcXVpcmUgY29sb3Igc3BhY2VzKSIpLHMubnVtQ29tcHMpe2Nhc2UgMTpQPWwuTmFtZS5nZXQoIkRldmljZUdyYXkiKTticmVhaztjYXNlIDM6UD1sLk5hbWUuZ2V0KCJEZXZpY2VSR0IiKTticmVhaztjYXNlIDQ6UD1sLk5hbWUuZ2V0KCJEZXZpY2VDTVlLIik7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIkpQWCBpbWFnZXMgd2l0aCAiLmNvbmNhdChzLm51bUNvbXBzLCIgY29sb3IgY29tcG9uZW50cyBub3Qgc3VwcG9ydGVkLiIpKX10aGlzLmNvbG9yU3BhY2U9by5Db2xvclNwYWNlLnBhcnNlKHtjczpQLHhyZWY6cixyZXNvdXJjZXM6Zj9hOm51bGwscGRmRnVuY3Rpb25GYWN0b3J5Om0sbG9jYWxDb2xvclNwYWNlQ2FjaGU6Yn0pLHRoaXMubnVtQ29tcHM9dGhpcy5jb2xvclNwYWNlLm51bUNvbXBzfWlmKHRoaXMuZGVjb2RlPWsuZ2V0QXJyYXkoIkQiLCJEZWNvZGUiKSx0aGlzLm5lZWRzRGVjb2RlPSExLHRoaXMuZGVjb2RlJiYodGhpcy5jb2xvclNwYWNlJiYhdGhpcy5jb2xvclNwYWNlLmlzRGVmYXVsdERlY29kZSh0aGlzLmRlY29kZSxGKXx8eSYmIW8uQ29sb3JTcGFjZS5pc0RlZmF1bHREZWNvZGUodGhpcy5kZWNvZGUsMSkpKXt0aGlzLm5lZWRzRGVjb2RlPSEwO3ZhciBUPSgxPDxGKS0xO3RoaXMuZGVjb2RlQ29lZmZpY2llbnRzPVtdLHRoaXMuZGVjb2RlQWRkZW5kcz1bXTtmb3IodmFyIEk9dGhpcy5jb2xvclNwYWNlJiYiSW5kZXhlZCI9PT10aGlzLmNvbG9yU3BhY2UubmFtZSxFPTAsaj0wO0U8dGhpcy5kZWNvZGUubGVuZ3RoO0UrPTIsKytqKXt2YXIgTT10aGlzLmRlY29kZVtFXSxfPXRoaXMuZGVjb2RlW0UrMV07dGhpcy5kZWNvZGVDb2VmZmljaWVudHNbal09ST8oXy1NKS9UOl8tTSx0aGlzLmRlY29kZUFkZGVuZHNbal09ST9NOlQqTX19ZD90aGlzLnNtYXNrPW5ldyBlKHt4cmVmOnIscmVzOmEsaW1hZ2U6ZCxpc0lubGluZTpmLHBkZkZ1bmN0aW9uRmFjdG9yeTptLGxvY2FsQ29sb3JTcGFjZUNhY2hlOmJ9KTpnJiYoZyBpbnN0YW5jZW9mIGkuQmFzZVN0cmVhbT9nLmRpY3QuZ2V0KCJJTSIsIkltYWdlTWFzayIpP3RoaXMubWFzaz1uZXcgZSh7eHJlZjpyLHJlczphLGltYWdlOmcsaXNJbmxpbmU6Zixpc01hc2s6ITAscGRmRnVuY3Rpb25GYWN0b3J5Om0sbG9jYWxDb2xvclNwYWNlQ2FjaGU6Yn0pOigwLG4ud2FybikoIklnbm9yaW5nIC9NYXNrIGluIGltYWdlIHdpdGhvdXQgL0ltYWdlTWFzay4iKTp0aGlzLm1hc2s9Zyl9dmFyIHQscixmLHksbTtyZXR1cm4gdD1lLHI9W3trZXk6ImRyYXdXaWR0aCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIE1hdGgubWF4KHRoaXMud2lkdGgsdGhpcy5zbWFzayYmdGhpcy5zbWFzay53aWR0aHx8MCx0aGlzLm1hc2smJnRoaXMubWFzay53aWR0aHx8MCl9fSx7a2V5OiJkcmF3SGVpZ2h0IixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5tYXgodGhpcy5oZWlnaHQsdGhpcy5zbWFzayYmdGhpcy5zbWFzay5oZWlnaHR8fDAsdGhpcy5tYXNrJiZ0aGlzLm1hc2suaGVpZ2h0fHwwKX19LHtrZXk6ImRlY29kZUJ1ZmZlciIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQscixuPXRoaXMuYnBjLGE9dGhpcy5udW1Db21wcyxpPXRoaXMuZGVjb2RlQWRkZW5kcyxvPXRoaXMuZGVjb2RlQ29lZmZpY2llbnRzLHM9KDE8PG4pLTE7aWYoMSE9PW4pe3ZhciBjPTA7Zm9yKHQ9MCxyPXRoaXMud2lkdGgqdGhpcy5oZWlnaHQ7dDxyO3QrKylmb3IodmFyIHU9MDt1PGE7dSsrKWVbY109ZyhlW2NdLGlbdV0sb1t1XSxzKSxjKyt9ZWxzZSBmb3IodD0wLHI9ZS5sZW5ndGg7dDxyO3QrKyllW3RdPSshZVt0XX19LHtrZXk6ImdldENvbXBvbmVudHMiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuYnBjO2lmKDg9PT10KXJldHVybiBlO3ZhciByLG49dGhpcy53aWR0aCxhPXRoaXMuaGVpZ2h0LGk9dGhpcy5udW1Db21wcyxvPW4qYSppLHM9MDtyPXQ8PTg/bmV3IFVpbnQ4QXJyYXkobyk6dDw9MTY/bmV3IFVpbnQxNkFycmF5KG8pOm5ldyBVaW50MzJBcnJheShvKTt2YXIgYyx1LGw9bippLGY9KDE8PHQpLTEsaD0wO2lmKDE9PT10KWZvcih2YXIgZCxwLGcsdj0wO3Y8YTt2Kyspe2ZvcihwPWgrKC04JmwpLGc9aCtsO2g8cDspdT1lW3MrK10scltoXT11Pj43JjEscltoKzFdPXU+PjYmMSxyW2grMl09dT4+NSYxLHJbaCszXT11Pj40JjEscltoKzRdPXU+PjMmMSxyW2grNV09dT4+MiYxLHJbaCs2XT11Pj4xJjEscltoKzddPTEmdSxoKz04O2lmKGg8Zylmb3IodT1lW3MrK10sZD0xMjg7aDxnOylyW2grK109KyEhKHUmZCksZD4+PTF9ZWxzZXt2YXIgeT0wO2Zvcih1PTAsaD0wLGM9bztoPGM7KytoKXtmb3IoaCVsPT0wJiYodT0wLHk9MCk7eTx0Oyl1PXU8PDh8ZVtzKytdLHkrPTg7dmFyIG09eS10LGI9dT4+bTtiPDA/Yj0wOmI+ZiYmKGI9ZikscltoXT1iLHUmPSgxPDxtKS0xLHk9bX19cmV0dXJuIHJ9fSx7a2V5OiJmaWxsT3BhY2l0eSIsdmFsdWU6ZnVuY3Rpb24odCxyLGEsaSxvKXt2YXIgcyxjLHUsbCxmLGgsZD10aGlzLnNtYXNrLHA9dGhpcy5tYXNrO2lmKGQpYz1kLndpZHRoLHU9ZC5oZWlnaHQscz1uZXcgVWludDhDbGFtcGVkQXJyYXkoYyp1KSxkLmZpbGxHcmF5QnVmZmVyKHMpLGM9PT1yJiZ1PT09YXx8KHM9dihzLGQuYnBjLGMsdSxyLGEpKTtlbHNlIGlmKHApaWYocCBpbnN0YW5jZW9mIGUpe2ZvcihjPXAud2lkdGgsdT1wLmhlaWdodCxzPW5ldyBVaW50OENsYW1wZWRBcnJheShjKnUpLHAubnVtQ29tcHM9MSxwLmZpbGxHcmF5QnVmZmVyKHMpLGw9MCxmPWMqdTtsPGY7KytsKXNbbF09MjU1LXNbbF07Yz09PXImJnU9PT1hfHwocz12KHMscC5icGMsYyx1LHIsYSkpfWVsc2V7aWYoIUFycmF5LmlzQXJyYXkocCkpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIlVua25vd24gbWFzayBmb3JtYXQuIik7cz1uZXcgVWludDhDbGFtcGVkQXJyYXkociphKTt2YXIgZz10aGlzLm51bUNvbXBzO2ZvcihsPTAsZj1yKmE7bDxmOysrbCl7dmFyIHk9MCxtPWwqZztmb3IoaD0wO2g8ZzsrK2gpe3ZhciBiPW9bbStoXSx3PTIqaDtpZihiPHBbd118fGI+cFt3KzFdKXt5PTI1NTticmVha319c1tsXT15fX1pZihzKWZvcihsPTAsaD0zLGY9cippO2w8ZjsrK2wsaCs9NCl0W2hdPXNbbF07ZWxzZSBmb3IobD0wLGg9MyxmPXIqaTtsPGY7KytsLGgrPTQpdFtoXT0yNTV9fSx7a2V5OiJ1bmRvUHJlYmxlbmQiLHZhbHVlOmZ1bmN0aW9uKGUsdCxyKXt2YXIgbj10aGlzLnNtYXNrJiZ0aGlzLnNtYXNrLm1hdHRlO2lmKG4pZm9yKHZhciBhPXRoaXMuY29sb3JTcGFjZS5nZXRSZ2IobiwwKSxpPWFbMF0sbz1hWzFdLHM9YVsyXSxjPXQqcio0LHU9MDt1PGM7dSs9NCl7dmFyIGw9ZVt1KzNdO2lmKDAhPT1sKXt2YXIgZj0yNTUvbDtlW3VdPShlW3VdLWkpKmYraSxlW3UrMV09KGVbdSsxXS1vKSpmK28sZVt1KzJdPShlW3UrMl0tcykqZitzfWVsc2UgZVt1XT0yNTUsZVt1KzFdPTI1NSxlW3UrMl09MjU1fX19LHtrZXk6ImNyZWF0ZUltYWdlRGF0YSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSYmYXJndW1lbnRzWzBdLHQ9dGhpcy5kcmF3V2lkdGgscj10aGlzLmRyYXdIZWlnaHQsYT17d2lkdGg6dCxoZWlnaHQ6cixpbnRlcnBvbGF0ZTp0aGlzLmludGVycG9sYXRlLGtpbmQ6MCxkYXRhOm51bGx9LGk9dGhpcy5udW1Db21wcyxvPXRoaXMud2lkdGgscz10aGlzLmhlaWdodCx1PXRoaXMuYnBjLGw9byppKnUrNz4+MztpZighZSl7dmFyIGY7aWYoIkRldmljZUdyYXkiPT09dGhpcy5jb2xvclNwYWNlLm5hbWUmJjE9PT11P2Y9bi5JbWFnZUtpbmQuR1JBWVNDQUxFXzFCUFA6IkRldmljZVJHQiIhPT10aGlzLmNvbG9yU3BhY2UubmFtZXx8OCE9PXV8fHRoaXMubmVlZHNEZWNvZGV8fChmPW4uSW1hZ2VLaW5kLlJHQl8yNEJQUCksZiYmIXRoaXMuc21hc2smJiF0aGlzLm1hc2smJnQ9PT1vJiZyPT09cyl7aWYoYS5raW5kPWYsYS5kYXRhPXRoaXMuZ2V0SW1hZ2VCeXRlcyhzKmwse30pLHRoaXMubmVlZHNEZWNvZGUpeygwLG4uYXNzZXJ0KShmPT09bi5JbWFnZUtpbmQuR1JBWVNDQUxFXzFCUFAsIlBERkltYWdlLmNyZWF0ZUltYWdlRGF0YTogVGhlIGltYWdlIG11c3QgYmUgZ3JheXNjYWxlLiIpO2Zvcih2YXIgaD1hLmRhdGEsZD0wLHA9aC5sZW5ndGg7ZDxwO2QrKyloW2RdXj0yNTV9cmV0dXJuIGF9aWYodGhpcy5pbWFnZSBpbnN0YW5jZW9mIGMuSnBlZ1N0cmVhbSYmIXRoaXMuc21hc2smJiF0aGlzLm1hc2spe3ZhciBnPXMqbDtzd2l0Y2godGhpcy5jb2xvclNwYWNlLm5hbWUpe2Nhc2UiRGV2aWNlR3JheSI6Zyo9MztjYXNlIkRldmljZVJHQiI6Y2FzZSJEZXZpY2VDTVlLIjpyZXR1cm4gYS5raW5kPW4uSW1hZ2VLaW5kLlJHQl8yNEJQUCxhLmRhdGE9dGhpcy5nZXRJbWFnZUJ5dGVzKGcse2RyYXdXaWR0aDp0LGRyYXdIZWlnaHQ6cixmb3JjZVJHQjohMH0pLGF9fX12YXIgdix5LG09dGhpcy5nZXRJbWFnZUJ5dGVzKHMqbCx7aW50ZXJuYWw6ITB9KSxiPTB8bS5sZW5ndGgvbCpyL3Msdz10aGlzLmdldENvbXBvbmVudHMobSk7cmV0dXJuIGV8fHRoaXMuc21hc2t8fHRoaXMubWFzaz8oYS5raW5kPW4uSW1hZ2VLaW5kLlJHQkFfMzJCUFAsYS5kYXRhPW5ldyBVaW50OENsYW1wZWRBcnJheSh0KnIqNCksdj0xLHk9ITAsdGhpcy5maWxsT3BhY2l0eShhLmRhdGEsdCxyLGIsdykpOihhLmtpbmQ9bi5JbWFnZUtpbmQuUkdCXzI0QlBQLGEuZGF0YT1uZXcgVWludDhDbGFtcGVkQXJyYXkodCpyKjMpLHY9MCx5PSExKSx0aGlzLm5lZWRzRGVjb2RlJiZ0aGlzLmRlY29kZUJ1ZmZlcih3KSx0aGlzLmNvbG9yU3BhY2UuZmlsbFJnYihhLmRhdGEsbyxzLHQscixiLHUsdyx2KSx5JiZ0aGlzLnVuZG9QcmVibGVuZChhLmRhdGEsdCxiKSxhfX0se2tleToiZmlsbEdyYXlCdWZmZXIiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMubnVtQ29tcHM7aWYoMSE9PXQpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIlJlYWRpbmcgZ3JheSBzY2FsZSBmcm9tIGEgY29sb3IgaW1hZ2U6ICIuY29uY2F0KHQpKTt2YXIgcixhLGk9dGhpcy53aWR0aCxvPXRoaXMuaGVpZ2h0LHM9dGhpcy5icGMsYz1pKnQqcys3Pj4zLHU9dGhpcy5nZXRJbWFnZUJ5dGVzKG8qYyx7aW50ZXJuYWw6ITB9KSxsPXRoaXMuZ2V0Q29tcG9uZW50cyh1KTtpZigxIT09cyl7dGhpcy5uZWVkc0RlY29kZSYmdGhpcy5kZWNvZGVCdWZmZXIobCksYT1pKm87dmFyIGY9MjU1LygoMTw8cyktMSk7Zm9yKHI9MDtyPGE7KytyKWVbcl09ZipsW3JdfWVsc2UgaWYoYT1pKm8sdGhpcy5uZWVkc0RlY29kZSlmb3Iocj0wO3I8YTsrK3IpZVtyXT1sW3JdLTEmMjU1O2Vsc2UgZm9yKHI9MDtyPGE7KytyKWVbcl09MjU1Ji1sW3JdfX0se2tleToiZ2V0SW1hZ2VCeXRlcyIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgcj10LmRyYXdXaWR0aCxhPXQuZHJhd0hlaWdodCxpPXQuZm9yY2VSR0Isbz12b2lkIDAhPT1pJiZpLGM9dC5pbnRlcm5hbCx1PXZvaWQgMCE9PWMmJmM7dGhpcy5pbWFnZS5yZXNldCgpLHRoaXMuaW1hZ2UuZHJhd1dpZHRoPXJ8fHRoaXMud2lkdGgsdGhpcy5pbWFnZS5kcmF3SGVpZ2h0PWF8fHRoaXMuaGVpZ2h0LHRoaXMuaW1hZ2UuZm9yY2VSR0I9ISFvO3ZhciBsPXRoaXMuaW1hZ2UuZ2V0Qnl0ZXMoZSk7cmV0dXJuIHV8fHRoaXMuaW1hZ2UgaW5zdGFuY2VvZiBzLkRlY29kZVN0cmVhbT9sOigoMCxuLmFzc2VydCkobCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXksJ1BERkltYWdlLmdldEltYWdlQnl0ZXM6IFVuc3VwcG9ydGVkICJpbWFnZUJ5dGVzIiB0eXBlLicpLG5ldyBVaW50OEFycmF5KGwpKX19XSxmPVt7a2V5OiJidWlsZEltYWdlIix2YWx1ZTooeT1oKCkubWFyaygoZnVuY3Rpb24gdChyKXt2YXIgYSxvLHMsYyx1LGwsZixkLHAsZyx2LHk7cmV0dXJuIGgoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gYT1yLnhyZWYsbz1yLnJlcyxzPXIuaW1hZ2UsYz1yLmlzSW5saW5lLHU9dm9pZCAwIT09YyYmYyxsPXIucGRmRnVuY3Rpb25GYWN0b3J5LGY9ci5sb2NhbENvbG9yU3BhY2VDYWNoZSxkPXMscD1udWxsLGc9bnVsbCx2PXMuZGljdC5nZXQoIlNNYXNrIikseT1zLmRpY3QuZ2V0KCJNYXNrIiksdj92IGluc3RhbmNlb2YgaS5CYXNlU3RyZWFtP3A9djooMCxuLndhcm4pKCJVbnN1cHBvcnRlZCAvU01hc2sgZm9ybWF0LiIpOnkmJih5IGluc3RhbmNlb2YgaS5CYXNlU3RyZWFtfHxBcnJheS5pc0FycmF5KHkpP2c9eTooMCxuLndhcm4pKCJVbnN1cHBvcnRlZCAvTWFzayBmb3JtYXQuIikpLHQuYWJydXB0KCJyZXR1cm4iLG5ldyBlKHt4cmVmOmEscmVzOm8saW1hZ2U6ZCxpc0lubGluZTp1LHNtYXNrOnAsbWFzazpnLHBkZkZ1bmN0aW9uRmFjdG9yeTpsLGxvY2FsQ29sb3JTcGFjZUNhY2hlOmZ9KSk7Y2FzZSA4OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCl9KSksbT1mdW5jdGlvbigpe3ZhciBlPXRoaXMsdD1hcmd1bWVudHM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihyLG4pe3ZhciBhPXkuYXBwbHkoZSx0KTtmdW5jdGlvbiBpKGUpe2QoYSxyLG4saSxvLCJuZXh0IixlKX1mdW5jdGlvbiBvKGUpe2QoYSxyLG4saSxvLCJ0aHJvdyIsZSl9aSh2b2lkIDApfSkpfSxmdW5jdGlvbihlKXtyZXR1cm4gbS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KX0se2tleToiY3JlYXRlUmF3TWFzayIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQscixuPWUuaW1nQXJyYXksYT1lLndpZHRoLGk9ZS5oZWlnaHQsbz1lLmltYWdlSXNGcm9tRGVjb2RlU3RyZWFtLHM9ZS5pbnZlcnNlRGVjb2RlLGM9ZS5pbnRlcnBvbGF0ZSx1PShhKzc+PjMpKmksbD1uLmJ5dGVMZW5ndGg7aWYoIW98fHMmJnUhPT1sP3M/KCh0PW5ldyBVaW50OEFycmF5KHUpKS5zZXQobiksdC5maWxsKDI1NSxsKSk6dD1uZXcgVWludDhBcnJheShuKTp0PW4scylmb3Iocj0wO3I8bDtyKyspdFtyXV49MjU1O3JldHVybntkYXRhOnQsd2lkdGg6YSxoZWlnaHQ6aSxpbnRlcnBvbGF0ZTpjfX19LHtrZXk6ImNyZWF0ZU1hc2siLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWUuaW1nQXJyYXkscj1lLndpZHRoLGk9ZS5oZWlnaHQsbz1lLmltYWdlSXNGcm9tRGVjb2RlU3RyZWFtLHM9ZS5pbnZlcnNlRGVjb2RlLGM9ZS5pbnRlcnBvbGF0ZSx1PWUuaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQsbD12b2lkIDA9PT11fHx1LGY9MT09PXImJjE9PT1pJiZzPT09KDA9PT10Lmxlbmd0aHx8ISEoMTI4JnRbMF0pKTtpZihmKXJldHVybntpc1NpbmdsZU9wYXF1ZVBpeGVsOmZ9O2lmKGwmJm4uRmVhdHVyZVRlc3QuaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQpe3ZhciBoPW5ldyBPZmZzY3JlZW5DYW52YXMocixpKSxkPWguZ2V0Q29udGV4dCgiMmQiKSxwPWQuY3JlYXRlSW1hZ2VEYXRhKHIsaSk7cmV0dXJuKDAsYS5hcHBseU1hc2tJbWFnZURhdGEpKHtzcmM6dCxkZXN0OnAuZGF0YSx3aWR0aDpyLGhlaWdodDppLGludmVyc2VEZWNvZGU6c30pLGQucHV0SW1hZ2VEYXRhKHAsMCwwKSx7ZGF0YTpudWxsLHdpZHRoOnIsaGVpZ2h0OmksaW50ZXJwb2xhdGU6YyxiaXRtYXA6aC50cmFuc2ZlclRvSW1hZ2VCaXRtYXAoKX19cmV0dXJuIHRoaXMuY3JlYXRlUmF3TWFzayh7aW1nQXJyYXk6dCx3aWR0aDpyLGhlaWdodDppLGludmVyc2VEZWNvZGU6cyxpbWFnZUlzRnJvbURlY29kZVN0cmVhbTpvLGludGVycG9sYXRlOmN9KX19XSxyJiZwKHQucHJvdG90eXBlLHIpLGYmJnAodCxmKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxlfSgpO3QuUERGSW1hZ2U9eX0sKGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LmFwcGx5TWFza0ltYWdlRGF0YT1mdW5jdGlvbihlKXt2YXIgdCxyPWUuc3JjLGk9ZS5zcmNQb3Msbz12b2lkIDA9PT1pPzA6aSxzPWUuZGVzdCxjPWUuZGVzdFBvcyx1PXZvaWQgMD09PWM/MDpjLGw9ZS53aWR0aCxmPWUuaGVpZ2h0LGg9ZS5pbnZlcnNlRGVjb2RlLGQ9dm9pZCAwIT09aCYmaCxwPW4uRmVhdHVyZVRlc3QuaXNMaXR0bGVFbmRpYW4/NDI3ODE5MDA4MDoyNTUsZz1mdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfSh0PWQ/WzAscF06W3AsMF0pfHxmdW5jdGlvbihlLHQpe3ZhciByPW51bGw9PWU/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9cil7dmFyIG4sYSxpLG8scz1bXSxjPSEwLHU9ITE7dHJ5e2ZvcihpPShyPXIuY2FsbChlKSkubmV4dDshKGM9KG49aS5jYWxsKHIpKS5kb25lKSYmKHMucHVzaChuLnZhbHVlKSwyIT09cy5sZW5ndGgpO2M9ITApO31jYXRjaChlKXt1PSEwLGE9ZX1maW5hbGx5e3RyeXtpZighYyYmbnVsbCE9ci5yZXR1cm4mJihvPXIucmV0dXJuKCksT2JqZWN0KG8pIT09bykpcmV0dXJufWZpbmFsbHl7aWYodSl0aHJvdyBhfX1yZXR1cm4gc319KHQpfHxmdW5jdGlvbihlLHQpe2lmKGUpe2lmKCJzdHJpbmciPT10eXBlb2YgZSlyZXR1cm4gYShlLDIpO3ZhciByPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtyZXR1cm4iT2JqZWN0Ij09PXImJmUuY29uc3RydWN0b3ImJihyPWUuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1yfHwiU2V0Ij09PXI/QXJyYXkuZnJvbShlKToiQXJndW1lbnRzIj09PXJ8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KHIpP2EoZSwyKTp2b2lkIDB9fSh0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpLHY9Z1swXSx5PWdbMV0sbT1sPj4zLGI9NyZsLHc9ci5sZW5ndGg7cz1uZXcgVWludDMyQXJyYXkocy5idWZmZXIpO2Zvcih2YXIgaz0wO2s8ZjtrKyspe2Zvcih2YXIgUz1vK207bzxTO28rKyl7dmFyIHg9bzx3P3Jbb106MjU1O3NbdSsrXT0xMjgmeD95OnYsc1t1KytdPTY0Jng/eTp2LHNbdSsrXT0zMiZ4P3k6dixzW3UrK109MTYmeD95OnYsc1t1KytdPTgmeD95OnYsc1t1KytdPTQmeD95OnYsc1t1KytdPTImeD95OnYsc1t1KytdPTEmeD95OnZ9aWYoMCE9PWIpZm9yKHZhciBPPW88dz9yW28rK106MjU1LEE9MDtBPGI7QSsrKXNbdSsrXT1PJjE8PDctQT95OnZ9cmV0dXJue3NyY1BvczpvLGRlc3RQb3M6dX19O3ZhciBuPXIoMik7ZnVuY3Rpb24gYShlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgcj0wLG49bmV3IEFycmF5KHQpO3I8dDtyKyspbltyXT1lW3JdO3JldHVybiBufX0sKGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LmluY3JlbWVudGFsVXBkYXRlPWZ1bmN0aW9uKGUpe3ZhciB0PWUub3JpZ2luYWxEYXRhLHI9ZS54cmVmSW5mbyxzPWUubmV3UmVmcyx1PWUueHJlZixoPXZvaWQgMD09PXU/bnVsbDp1LGc9ZS5oYXNYZmEsdj12b2lkIDAhPT1nJiZnLGI9ZS54ZmFEYXRhc2V0c1JlZix3PXZvaWQgMD09PWI/bnVsbDpiLGs9ZS5oYXNYZmFEYXRhc2V0c0VudHJ5LFM9dm9pZCAwIT09ayYmayx4PWUubmVlZEFwcGVhcmFuY2VzLE89ZS5hY3JvRm9ybVJlZixBPXZvaWQgMD09PU8/bnVsbDpPLEM9ZS5hY3JvRm9ybSxGPXZvaWQgMD09PUM/bnVsbDpDLFA9ZS54ZmFEYXRhLFQ9dm9pZCAwPT09UD9udWxsOlA7KGZ1bmN0aW9uKGUpe3ZhciB0PWUueHJlZixyPWUuYWNyb0Zvcm0saT1lLmFjcm9Gb3JtUmVmLG89ZS5oYXNYZmEscz1lLmhhc1hmYURhdGFzZXRzRW50cnksYz1lLnhmYURhdGFzZXRzUmVmLHU9ZS5uZWVkQXBwZWFyYW5jZXMsZj1lLm5ld1JlZnM7aWYoIW98fHN8fGN8fCgwLG4ud2FybikoIlhGQSAtIENhbm5vdCBzYXZlIGl0IiksdXx8byYmYyl7dmFyIGgscD1uZXcgYS5EaWN0KHQpLGc9bChyLmdldEtleXMoKSk7dHJ5e2ZvcihnLnMoKTshKGg9Zy5uKCkpLmRvbmU7KXt2YXIgdj1oLnZhbHVlO3Auc2V0KHYsci5nZXRSYXcodikpfX1jYXRjaChlKXtnLmUoZSl9ZmluYWxseXtnLmYoKX1pZihvJiYhcyl7dmFyIHk9ci5nZXQoIlhGQSIpLnNsaWNlKCk7eS5zcGxpY2UoMiwwLCJkYXRhc2V0cyIpLHkuc3BsaWNlKDMsMCxjKSxwLnNldCgiWEZBIix5KX11JiZwLnNldCgiTmVlZEFwcGVhcmFuY2VzIiwhMCk7dmFyIG09dC5lbmNyeXB0LGI9bnVsbDttJiYoYj1tLmNyZWF0ZUNpcGhlclRyYW5zZm9ybShpLm51bSxpLmdlbikpO3ZhciB3PVtdO2QoaSxwLHcsYiksZi5wdXNoKHtyZWY6aSxkYXRhOncuam9pbigiIil9KX19KSh7eHJlZjpoLGFjcm9Gb3JtOkYsYWNyb0Zvcm1SZWY6QSxoYXNYZmE6dixoYXNYZmFEYXRhc2V0c0VudHJ5OlMseGZhRGF0YXNldHNSZWY6dyxuZWVkQXBwZWFyYW5jZXM6eCxuZXdSZWZzOnN9KSx2JiZmdW5jdGlvbihlKXt2YXIgdD1lLnhmYURhdGEscj1lLnhmYURhdGFzZXRzUmVmLGE9ZS5uZXdSZWZzLHM9ZS54cmVmO251bGw9PT10JiYodD1mdW5jdGlvbihlLHQpe3ZhciByLGE9bmV3IG8uU2ltcGxlWE1MUGFyc2VyKHtoYXNBdHRyaWJ1dGVzOiEwfSkucGFyc2VGcm9tU3RyaW5nKGUpLHM9bCh0KTt0cnl7Zm9yKHMucygpOyEocj1zLm4oKSkuZG9uZTspe3ZhciBjPXIudmFsdWUueGZhO2lmKGMpe3ZhciB1PWMucGF0aCxmPWMudmFsdWU7aWYodSl7dmFyIGg9YS5kb2N1bWVudEVsZW1lbnQuc2VhcmNoTm9kZSgoMCxpLnBhcnNlWEZBUGF0aCkodSksMCk7aD9BcnJheS5pc0FycmF5KGYpP2guY2hpbGROb2Rlcz1mLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBvLlNpbXBsZURPTU5vZGUoInZhbHVlIixlKX0pKTpoLmNoaWxkTm9kZXM9W25ldyBvLlNpbXBsZURPTU5vZGUoIiN0ZXh0IixmKV06KDAsbi53YXJuKSgiTm9kZSBub3QgZm91bmQgZm9yIHBhdGg6ICIuY29uY2F0KHUpKX19fX1jYXRjaChlKXtzLmUoZSl9ZmluYWxseXtzLmYoKX12YXIgZD1bXTtyZXR1cm4gYS5kb2N1bWVudEVsZW1lbnQuZHVtcChkKSxkLmpvaW4oIiIpfShzLmZldGNoSWZSZWYocikuZ2V0U3RyaW5nKCksYSkpO3ZhciBjPXMuZW5jcnlwdDtjJiYodD1jLmNyZWF0ZUNpcGhlclRyYW5zZm9ybShyLm51bSxyLmdlbikuZW5jcnlwdFN0cmluZyh0KSk7dmFyIHU9IiIuY29uY2F0KHIubnVtLCIgIikuY29uY2F0KHIuZ2VuLCIgb2JqXG4iKSsiPDwgL1R5cGUgL0VtYmVkZGVkRmlsZSAvTGVuZ3RoICIuY29uY2F0KHQubGVuZ3RoLCI+Plxuc3RyZWFtXG4iKSt0KyJcbmVuZHN0cmVhbVxuZW5kb2JqXG4iO2EucHVzaCh7cmVmOnIsZGF0YTp1fSl9KHt4ZmFEYXRhOlQseGZhRGF0YXNldHNSZWY6dyxuZXdSZWZzOnMseHJlZjpofSk7dmFyIEksRSxqPW5ldyBhLkRpY3QobnVsbCksTT1yLm5ld1JlZixfPXQuYXQoLTEpOzEwPT09X3x8MTM9PT1fPyhJPVtdLEU9dC5sZW5ndGgpOihJPVsiXG4iXSxFPXQubGVuZ3RoKzEpLGouc2V0KCJTaXplIixNLm51bSsxKSxqLnNldCgiUHJldiIsci5zdGFydFhSZWYpLGouc2V0KCJUeXBlIixhLk5hbWUuZ2V0KCJYUmVmIikpLG51bGwhPT1yLnJvb3RSZWYmJmouc2V0KCJSb290IixyLnJvb3RSZWYpLG51bGwhPT1yLmluZm9SZWYmJmouc2V0KCJJbmZvIixyLmluZm9SZWYpLG51bGwhPT1yLmVuY3J5cHRSZWYmJmouc2V0KCJFbmNyeXB0IixyLmVuY3J5cHRSZWYpLHMucHVzaCh7cmVmOk0sZGF0YToiIn0pO3ZhciBMLFI9W1swLDEsNjU1MzVdXSxOPVswLDFdLEQ9MCxCPWwocz1zLnNvcnQoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUucmVmLm51bS10LnJlZi5udW19KSkpO3RyeXtmb3IoQi5zKCk7IShMPUIubigpKS5kb25lOyl7dmFyIFU9TC52YWx1ZSwkPVUucmVmLFg9VS5kYXRhO0Q9TWF0aC5tYXgoRCxFKSxSLnB1c2goWzEsRSxNYXRoLm1pbigkLmdlbiw2NTUzNSldKSxFKz1YLmxlbmd0aCxOLnB1c2goJC5udW0sMSksSS5wdXNoKFgpfX1jYXRjaChlKXtCLmUoZSl9ZmluYWxseXtCLmYoKX1pZihqLnNldCgiSW5kZXgiLE4pLEFycmF5LmlzQXJyYXkoci5maWxlSWRzKSYmci5maWxlSWRzLmxlbmd0aD4wKXt2YXIgSD1mdW5jdGlvbihlLHQpe2Zvcih2YXIgcj1NYXRoLmZsb29yKERhdGUubm93KCkvMWUzKSxhPXQuZmlsZW5hbWV8fCIiLGk9W3IudG9TdHJpbmcoKSxhLGUudG9TdHJpbmcoKV0sbz1pLnJlZHVjZSgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSt0Lmxlbmd0aH0pLDApLHM9MCx1PU9iamVjdC52YWx1ZXModC5pbmZvKTtzPHUubGVuZ3RoO3MrKyl7dmFyIGw9dVtzXTtpLnB1c2gobCksbys9bC5sZW5ndGh9Zm9yKHZhciBmPW5ldyBVaW50OEFycmF5KG8pLGg9MCxkPTAscD1pO2Q8cC5sZW5ndGg7ZCsrKXt2YXIgZz1wW2RdO20oZyxoLGYpLGgrPWcubGVuZ3RofXJldHVybigwLG4uYnl0ZXNUb1N0cmluZykoKDAsYy5jYWxjdWxhdGVNRDUpKGYpKX0oRSxyKTtqLnNldCgiSUQiLFtyLmZpbGVJZHNbMF0sSF0pfXZhciBxPVsxLE1hdGguY2VpbChNYXRoLmxvZzIoRCkvOCksMl0sRz0ocVswXStxWzFdK3FbMl0pKlIubGVuZ3RoO2ouc2V0KCJXIixxKSxqLnNldCgiTGVuZ3RoIixHKSxJLnB1c2goIiIuY29uY2F0KE0ubnVtLCIgIikuY29uY2F0KE0uZ2VuLCIgb2JqXG4iKSkscChqLEksbnVsbCksSS5wdXNoKCIgc3RyZWFtXG4iKTt2YXIgej1JLnJlZHVjZSgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSt0Lmxlbmd0aH0pLDApLFc9IlxuZW5kc3RyZWFtXG5lbmRvYmpcbnN0YXJ0eHJlZlxuIi5jb25jYXQoRSwiXG4lJUVPRlxuIiksVj1uZXcgVWludDhBcnJheSh0Lmxlbmd0aCt6K0crVy5sZW5ndGgpO1Yuc2V0KHQpO3ZhciBZLEssSj10Lmxlbmd0aCxaPWwoSSk7dHJ5e2ZvcihaLnMoKTshKFk9Wi5uKCkpLmRvbmU7KXt2YXIgUT1ZLnZhbHVlO20oUSxKLFYpLEorPVEubGVuZ3RofX1jYXRjaChlKXtaLmUoZSl9ZmluYWxseXtaLmYoKX1mb3IodmFyIGVlPTAsdGU9UjtlZTx0ZS5sZW5ndGg7ZWUrKyl7dmFyIHJlPSgzLGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KEs9dGVbZWVdKXx8ZnVuY3Rpb24oZSx0KXt2YXIgcj1udWxsPT1lP251bGw6InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVsiQEBpdGVyYXRvciJdO2lmKG51bGwhPXIpe3ZhciBuLGEsaSxvLHM9W10sYz0hMCx1PSExO3RyeXtmb3IoaT0ocj1yLmNhbGwoZSkpLm5leHQsMDshKGM9KG49aS5jYWxsKHIpKS5kb25lKSYmKHMucHVzaChuLnZhbHVlKSwzIT09cy5sZW5ndGgpO2M9ITApO31jYXRjaChlKXt1PSEwLGE9ZX1maW5hbGx5e3RyeXtpZighYyYmbnVsbCE9ci5yZXR1cm4mJihvPXIucmV0dXJuKCksT2JqZWN0KG8pIT09bykpcmV0dXJufWZpbmFsbHl7aWYodSl0aHJvdyBhfX1yZXR1cm4gc319KEspfHxmKEssMyl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKSksbmU9cmVbMF0sYWU9cmVbMV0saWU9cmVbMl07Sj15KG5lLHFbMF0sSixWKSxKPXkoYWUscVsxXSxKLFYpLEo9eShpZSxxWzJdLEosVil9cmV0dXJuIG0oVyxKLFYpLFZ9LHQud3JpdGVEaWN0PXAsdC53cml0ZU9iamVjdD1kO3ZhciBuPXIoMiksYT1yKDEzNCksaT1yKDEzNSksbz1yKDE5NSkscz1yKDEzNiksYz1yKDE5Nik7ZnVuY3Rpb24gdShlKXtyZXR1cm4gdT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZX0sdShlKX1mdW5jdGlvbiBsKGUsdCl7dmFyIHI9InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVsiQEBpdGVyYXRvciJdO2lmKCFyKXtpZihBcnJheS5pc0FycmF5KGUpfHwocj1mKGUpKXx8dCYmZSYmIm51bWJlciI9PXR5cGVvZiBlLmxlbmd0aCl7ciYmKGU9cik7dmFyIG49MCxhPWZ1bmN0aW9uKCl7fTtyZXR1cm57czphLG46ZnVuY3Rpb24oKXtyZXR1cm4gbj49ZS5sZW5ndGg/e2RvbmU6ITB9Ontkb25lOiExLHZhbHVlOmVbbisrXX19LGU6ZnVuY3Rpb24oZSl7dGhyb3cgZX0sZjphfX10aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gaXRlcmF0ZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9dmFyIGksbz0hMCxzPSExO3JldHVybntzOmZ1bmN0aW9uKCl7cj1yLmNhbGwoZSl9LG46ZnVuY3Rpb24oKXt2YXIgZT1yLm5leHQoKTtyZXR1cm4gbz1lLmRvbmUsZX0sZTpmdW5jdGlvbihlKXtzPSEwLGk9ZX0sZjpmdW5jdGlvbigpe3RyeXtvfHxudWxsPT1yLnJldHVybnx8ci5yZXR1cm4oKX1maW5hbGx5e2lmKHMpdGhyb3cgaX19fX1mdW5jdGlvbiBmKGUsdCl7aWYoZSl7aWYoInN0cmluZyI9PXR5cGVvZiBlKXJldHVybiBoKGUsdCk7dmFyIHI9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO3JldHVybiJPYmplY3QiPT09ciYmZS5jb25zdHJ1Y3RvciYmKHI9ZS5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PXJ8fCJTZXQiPT09cj9BcnJheS5mcm9tKGUpOiJBcmd1bWVudHMiPT09cnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3Qocik/aChlLHQpOnZvaWQgMH19ZnVuY3Rpb24gaChlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgcj0wLG49bmV3IEFycmF5KHQpO3I8dDtyKyspbltyXT1lW3JdO3JldHVybiBufWZ1bmN0aW9uIGQoZSx0LHIsbil7ci5wdXNoKCIiLmNvbmNhdChlLm51bSwiICIpLmNvbmNhdChlLmdlbiwiIG9ialxuIikpLHQgaW5zdGFuY2VvZiBhLkRpY3Q/cCh0LHIsbik6dCBpbnN0YW5jZW9mIHMuQmFzZVN0cmVhbSYmZyh0LHIsbiksci5wdXNoKCJcbmVuZG9ialxuIil9ZnVuY3Rpb24gcChlLHQscil7dC5wdXNoKCI8PCIpO3ZhciBuLGE9bChlLmdldEtleXMoKSk7dHJ5e2ZvcihhLnMoKTshKG49YS5uKCkpLmRvbmU7KXt2YXIgbz1uLnZhbHVlO3QucHVzaCgiIC8iLmNvbmNhdCgoMCxpLmVzY2FwZVBERk5hbWUpKG8pLCIgIikpLHYoZS5nZXRSYXcobyksdCxyKX19Y2F0Y2goZSl7YS5lKGUpfWZpbmFsbHl7YS5mKCl9dC5wdXNoKCI+PiIpfWZ1bmN0aW9uIGcoZSx0LHIpe3AoZS5kaWN0LHQsciksdC5wdXNoKCIgc3RyZWFtXG4iKTt2YXIgbj1lLmdldFN0cmluZygpO251bGwhPT1yJiYobj1yLmVuY3J5cHRTdHJpbmcobikpLHQucHVzaChuLCJcbmVuZHN0cmVhbSIpfWZ1bmN0aW9uIHYoZSx0LHIpe2UgaW5zdGFuY2VvZiBhLk5hbWU/dC5wdXNoKCIvIi5jb25jYXQoKDAsaS5lc2NhcGVQREZOYW1lKShlLm5hbWUpKSk6ZSBpbnN0YW5jZW9mIGEuUmVmP3QucHVzaCgiIi5jb25jYXQoZS5udW0sIiAiKS5jb25jYXQoZS5nZW4sIiBSIikpOkFycmF5LmlzQXJyYXkoZSk/ZnVuY3Rpb24oZSx0LHIpe3QucHVzaCgiWyIpO3ZhciBuLGE9ITAsaT1sKGUpO3RyeXtmb3IoaS5zKCk7IShuPWkubigpKS5kb25lOyl7dmFyIG89bi52YWx1ZTthP2E9ITE6dC5wdXNoKCIgIiksdihvLHQscil9fWNhdGNoKGUpe2kuZShlKX1maW5hbGx5e2kuZigpfXQucHVzaCgiXSIpfShlLHQscik6InN0cmluZyI9PXR5cGVvZiBlPyhudWxsIT09ciYmKGU9ci5lbmNyeXB0U3RyaW5nKGUpKSx0LnB1c2goIigiLmNvbmNhdCgoMCxpLmVzY2FwZVN0cmluZykoZSksIikiKSkpOiJudW1iZXIiPT10eXBlb2YgZT90LnB1c2goKDAsaS5udW1iZXJUb1N0cmluZykoZSkpOiJib29sZWFuIj09dHlwZW9mIGU/dC5wdXNoKGUudG9TdHJpbmcoKSk6ZSBpbnN0YW5jZW9mIGEuRGljdD9wKGUsdCxyKTplIGluc3RhbmNlb2Ygcy5CYXNlU3RyZWFtP2coZSx0LHIpOm51bGw9PT1lP3QucHVzaCgibnVsbCIpOigwLG4ud2FybikoIlVuaGFuZGxlZCB2YWx1ZSBpbiB3cml0ZXI6ICIuY29uY2F0KHUoZSksIiwgcGxlYXNlIGZpbGUgYSBidWcuIikpfWZ1bmN0aW9uIHkoZSx0LHIsbil7Zm9yKHZhciBhPXQrci0xO2E+ci0xO2EtLSluW2FdPTI1NSZlLGU+Pj04O3JldHVybiByK3R9ZnVuY3Rpb24gbShlLHQscil7Zm9yKHZhciBuPTAsYT1lLmxlbmd0aDtuPGE7bisrKXJbdCtuXT0yNTUmZS5jaGFyQ29kZUF0KG4pfX0sKGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LlhNTFBhcnNlckVycm9yQ29kZT10LlhNTFBhcnNlckJhc2U9dC5TaW1wbGVYTUxQYXJzZXI9dC5TaW1wbGVET01Ob2RlPXZvaWQgMDt2YXIgbj1yKDEzNSk7ZnVuY3Rpb24gYShlLHQpe3JldHVybiBhPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuX19wcm90b19fPXQsZX0sYShlLHQpfWZ1bmN0aW9uIGkoZSl7cmV0dXJuIGk9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSl9LGkoZSl9ZnVuY3Rpb24gbyhlLHQpe3ZhciByPSJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbIkBAaXRlcmF0b3IiXTtpZighcil7aWYoQXJyYXkuaXNBcnJheShlKXx8KHI9YyhlKSl8fHQmJmUmJiJudW1iZXIiPT10eXBlb2YgZS5sZW5ndGgpe3ImJihlPXIpO3ZhciBuPTAsYT1mdW5jdGlvbigpe307cmV0dXJue3M6YSxuOmZ1bmN0aW9uKCl7cmV0dXJuIG4+PWUubGVuZ3RoP3tkb25lOiEwfTp7ZG9uZTohMSx2YWx1ZTplW24rK119fSxlOmZ1bmN0aW9uKGUpe3Rocm93IGV9LGY6YX19dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGl0ZXJhdGUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfXZhciBpLG89ITAscz0hMTtyZXR1cm57czpmdW5jdGlvbigpe3I9ci5jYWxsKGUpfSxuOmZ1bmN0aW9uKCl7dmFyIGU9ci5uZXh0KCk7cmV0dXJuIG89ZS5kb25lLGV9LGU6ZnVuY3Rpb24oZSl7cz0hMCxpPWV9LGY6ZnVuY3Rpb24oKXt0cnl7b3x8bnVsbD09ci5yZXR1cm58fHIucmV0dXJuKCl9ZmluYWxseXtpZihzKXRocm93IGl9fX19ZnVuY3Rpb24gcyhlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgcj1udWxsPT1lP251bGw6InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVsiQEBpdGVyYXRvciJdO2lmKG51bGwhPXIpe3ZhciBuLGEsaSxvLHM9W10sYz0hMCx1PSExO3RyeXtpZihpPShyPXIuY2FsbChlKSkubmV4dCwwPT09dCl7aWYoT2JqZWN0KHIpIT09cilyZXR1cm47Yz0hMX1lbHNlIGZvcig7IShjPShuPWkuY2FsbChyKSkuZG9uZSkmJihzLnB1c2gobi52YWx1ZSkscy5sZW5ndGghPT10KTtjPSEwKTt9Y2F0Y2goZSl7dT0hMCxhPWV9ZmluYWxseXt0cnl7aWYoIWMmJm51bGwhPXIucmV0dXJuJiYobz1yLnJldHVybigpLE9iamVjdChvKSE9PW8pKXJldHVybn1maW5hbGx5e2lmKHUpdGhyb3cgYX19cmV0dXJuIHN9fShlLHQpfHxjKGUsdCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiBjKGUsdCl7aWYoZSl7aWYoInN0cmluZyI9PXR5cGVvZiBlKXJldHVybiB1KGUsdCk7dmFyIHI9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO3JldHVybiJPYmplY3QiPT09ciYmZS5jb25zdHJ1Y3RvciYmKHI9ZS5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PXJ8fCJTZXQiPT09cj9BcnJheS5mcm9tKGUpOiJBcmd1bWVudHMiPT09cnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3Qocik/dShlLHQpOnZvaWQgMH19ZnVuY3Rpb24gdShlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgcj0wLG49bmV3IEFycmF5KHQpO3I8dDtyKyspbltyXT1lW3JdO3JldHVybiBufWZ1bmN0aW9uIGwoZSl7cmV0dXJuIGw9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGV9LGwoZSl9ZnVuY3Rpb24gZihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIGgoZSx0KXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIG49dFtyXTtuLmVudW1lcmFibGU9bi5lbnVtZXJhYmxlfHwhMSxuLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gbiYmKG4ud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCh2b2lkIDAsYT1mdW5jdGlvbihlLHQpe2lmKCJvYmplY3QiIT09bChlKXx8bnVsbD09PWUpcmV0dXJuIGU7dmFyIHI9ZVtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PXIpe3ZhciBuPXIuY2FsbChlLCJzdHJpbmciKTtpZigib2JqZWN0IiE9PWwobikpcmV0dXJuIG47dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4gU3RyaW5nKGUpfShuLmtleSksInN5bWJvbCI9PT1sKGEpP2E6U3RyaW5nKGEpKSxuKX12YXIgYX1mdW5jdGlvbiBkKGUsdCxyKXtyZXR1cm4gdCYmaChlLnByb3RvdHlwZSx0KSxyJiZoKGUsciksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZX12YXIgcD17Tm9FcnJvcjowLEVuZE9mRG9jdW1lbnQ6LTEsVW50ZXJtaW5hdGVkQ2RhdDotMixVbnRlcm1pbmF0ZWRYbWxEZWNsYXJhdGlvbjotMyxVbnRlcm1pbmF0ZWREb2N0eXBlRGVjbGFyYXRpb246LTQsVW50ZXJtaW5hdGVkQ29tbWVudDotNSxNYWxmb3JtZWRFbGVtZW50Oi02LE91dE9mTWVtb3J5Oi03LFVudGVybWluYXRlZEF0dHJpYnV0ZVZhbHVlOi04LFVudGVybWluYXRlZEVsZW1lbnQ6LTksRWxlbWVudE5ldmVyQmVndW46LTEwfTtmdW5jdGlvbiBnKGUsdCl7dmFyIHI9ZVt0XTtyZXR1cm4iICI9PT1yfHwiXG4iPT09cnx8IlxyIj09PXJ8fCJcdCI9PT1yfXQuWE1MUGFyc2VyRXJyb3JDb2RlPXA7dmFyIHY9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7Zih0aGlzLGUpfXJldHVybiBkKGUsW3trZXk6Il9yZXNvbHZlRW50aXRpZXMiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7cmV0dXJuIGUucmVwbGFjZSgvJihbXjtdKyk7L2csKGZ1bmN0aW9uKGUscil7aWYoIiN4Ij09PXIuc3Vic3RyaW5nKDAsMikpcmV0dXJuIFN0cmluZy5mcm9tQ29kZVBvaW50KHBhcnNlSW50KHIuc3Vic3RyaW5nKDIpLDE2KSk7aWYoIiMiPT09ci5zdWJzdHJpbmcoMCwxKSlyZXR1cm4gU3RyaW5nLmZyb21Db2RlUG9pbnQocGFyc2VJbnQoci5zdWJzdHJpbmcoMSksMTApKTtzd2l0Y2gocil7Y2FzZSJsdCI6cmV0dXJuIjwiO2Nhc2UiZ3QiOnJldHVybiI+IjtjYXNlImFtcCI6cmV0dXJuIiYiO2Nhc2UicXVvdCI6cmV0dXJuJyInO2Nhc2UiYXBvcyI6cmV0dXJuIicifXJldHVybiB0Lm9uUmVzb2x2ZUVudGl0eShyKX0pKX19LHtrZXk6Il9wYXJzZUNvbnRlbnQiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIHI9W10sbj10O2Z1bmN0aW9uIGEoKXtmb3IoO248ZS5sZW5ndGgmJmcoZSxuKTspKytufWZvcig7bjxlLmxlbmd0aCYmIWcoZSxuKSYmIj4iIT09ZVtuXSYmIi8iIT09ZVtuXTspKytuO3ZhciBpPWUuc3Vic3RyaW5nKHQsbik7Zm9yKGEoKTtuPGUubGVuZ3RoJiYiPiIhPT1lW25dJiYiLyIhPT1lW25dJiYiPyIhPT1lW25dOyl7YSgpO2Zvcih2YXIgbyxzPSIiO248ZS5sZW5ndGgmJiFnKGUsbikmJiI9IiE9PWVbbl07KXMrPWVbbl0sKytuO2lmKGEoKSwiPSIhPT1lW25dKXJldHVybiBudWxsOysrbixhKCk7dmFyIGM9ZVtuXTtpZignIichPT1jJiYiJyIhPT1jKXJldHVybiBudWxsO3ZhciB1PWUuaW5kZXhPZihjLCsrbik7aWYodTwwKXJldHVybiBudWxsO289ZS5zdWJzdHJpbmcobix1KSxyLnB1c2goe25hbWU6cyx2YWx1ZTp0aGlzLl9yZXNvbHZlRW50aXRpZXMobyl9KSxuPXUrMSxhKCl9cmV0dXJue25hbWU6aSxhdHRyaWJ1dGVzOnIscGFyc2VkOm4tdH19fSx7a2V5OiJfcGFyc2VQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24iLHZhbHVlOmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPXQ7cjxlLmxlbmd0aCYmIWcoZSxyKSYmIj4iIT09ZVtyXSYmIj8iIT09ZVtyXSYmIi8iIT09ZVtyXTspKytyO3ZhciBuPWUuc3Vic3RyaW5nKHQscik7IWZ1bmN0aW9uKCl7Zm9yKDtyPGUubGVuZ3RoJiZnKGUscik7KSsrcn0oKTtmb3IodmFyIGE9cjtyPGUubGVuZ3RoJiYoIj8iIT09ZVtyXXx8Ij4iIT09ZVtyKzFdKTspKytyO3JldHVybntuYW1lOm4sdmFsdWU6ZS5zdWJzdHJpbmcoYSxyKSxwYXJzZWQ6ci10fX19LHtrZXk6InBhcnNlWG1sIix2YWx1ZTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoOyl7dmFyIHI9dDtpZigiPCI9PT1lW3RdKXt2YXIgbj12b2lkIDA7c3dpdGNoKGVbKytyXSl7Y2FzZSIvIjppZigrK3IsKG49ZS5pbmRleE9mKCI+IixyKSk8MClyZXR1cm4gdm9pZCB0aGlzLm9uRXJyb3IocC5VbnRlcm1pbmF0ZWRFbGVtZW50KTt0aGlzLm9uRW5kRWxlbWVudChlLnN1YnN0cmluZyhyLG4pKSxyPW4rMTticmVhaztjYXNlIj8iOisrcjt2YXIgYT10aGlzLl9wYXJzZVByb2Nlc3NpbmdJbnN0cnVjdGlvbihlLHIpO2lmKCI/PiIhPT1lLnN1YnN0cmluZyhyK2EucGFyc2VkLHIrYS5wYXJzZWQrMikpcmV0dXJuIHZvaWQgdGhpcy5vbkVycm9yKHAuVW50ZXJtaW5hdGVkWG1sRGVjbGFyYXRpb24pO3RoaXMub25QaShhLm5hbWUsYS52YWx1ZSkscis9YS5wYXJzZWQrMjticmVhaztjYXNlIiEiOmlmKCItLSI9PT1lLnN1YnN0cmluZyhyKzEsciszKSl7aWYoKG49ZS5pbmRleE9mKCItLVx4M2UiLHIrMykpPDApcmV0dXJuIHZvaWQgdGhpcy5vbkVycm9yKHAuVW50ZXJtaW5hdGVkQ29tbWVudCk7dGhpcy5vbkNvbW1lbnQoZS5zdWJzdHJpbmcociszLG4pKSxyPW4rM31lbHNlIGlmKCJbQ0RBVEFbIj09PWUuc3Vic3RyaW5nKHIrMSxyKzgpKXtpZigobj1lLmluZGV4T2YoIl1dPiIscis4KSk8MClyZXR1cm4gdm9pZCB0aGlzLm9uRXJyb3IocC5VbnRlcm1pbmF0ZWRDZGF0KTt0aGlzLm9uQ2RhdGEoZS5zdWJzdHJpbmcocis4LG4pKSxyPW4rM31lbHNle2lmKCJET0NUWVBFIiE9PWUuc3Vic3RyaW5nKHIrMSxyKzgpKXJldHVybiB2b2lkIHRoaXMub25FcnJvcihwLk1hbGZvcm1lZEVsZW1lbnQpO3ZhciBpPWUuaW5kZXhPZigiWyIscis4KSxvPSExO2lmKChuPWUuaW5kZXhPZigiPiIscis4KSk8MClyZXR1cm4gdm9pZCB0aGlzLm9uRXJyb3IocC5VbnRlcm1pbmF0ZWREb2N0eXBlRGVjbGFyYXRpb24pO2lmKGk+MCYmbj5pKXtpZigobj1lLmluZGV4T2YoIl0+IixyKzgpKTwwKXJldHVybiB2b2lkIHRoaXMub25FcnJvcihwLlVudGVybWluYXRlZERvY3R5cGVEZWNsYXJhdGlvbik7bz0hMH12YXIgcz1lLnN1YnN0cmluZyhyKzgsbisobz8xOjApKTt0aGlzLm9uRG9jdHlwZShzKSxyPW4rKG8/MjoxKX1icmVhaztkZWZhdWx0OnZhciBjPXRoaXMuX3BhcnNlQ29udGVudChlLHIpO2lmKG51bGw9PT1jKXJldHVybiB2b2lkIHRoaXMub25FcnJvcihwLk1hbGZvcm1lZEVsZW1lbnQpO3ZhciB1PSExO2lmKCIvPiI9PT1lLnN1YnN0cmluZyhyK2MucGFyc2VkLHIrYy5wYXJzZWQrMikpdT0hMDtlbHNlIGlmKCI+IiE9PWUuc3Vic3RyaW5nKHIrYy5wYXJzZWQscitjLnBhcnNlZCsxKSlyZXR1cm4gdm9pZCB0aGlzLm9uRXJyb3IocC5VbnRlcm1pbmF0ZWRFbGVtZW50KTt0aGlzLm9uQmVnaW5FbGVtZW50KGMubmFtZSxjLmF0dHJpYnV0ZXMsdSkscis9Yy5wYXJzZWQrKHU/MjoxKX19ZWxzZXtmb3IoO3I8ZS5sZW5ndGgmJiI8IiE9PWVbcl07KXIrKzt2YXIgbD1lLnN1YnN0cmluZyh0LHIpO3RoaXMub25UZXh0KHRoaXMuX3Jlc29sdmVFbnRpdGllcyhsKSl9dD1yfX19LHtrZXk6Im9uUmVzb2x2ZUVudGl0eSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIiYiLmNvbmNhdChlLCI7Iil9fSx7a2V5OiJvblBpIix2YWx1ZTpmdW5jdGlvbihlLHQpe319LHtrZXk6Im9uQ29tbWVudCIsdmFsdWU6ZnVuY3Rpb24oZSl7fX0se2tleToib25DZGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSl7fX0se2tleToib25Eb2N0eXBlIix2YWx1ZTpmdW5jdGlvbihlKXt9fSx7a2V5OiJvblRleHQiLHZhbHVlOmZ1bmN0aW9uKGUpe319LHtrZXk6Im9uQmVnaW5FbGVtZW50Iix2YWx1ZTpmdW5jdGlvbihlLHQscil7fX0se2tleToib25FbmRFbGVtZW50Iix2YWx1ZTpmdW5jdGlvbihlKXt9fSx7a2V5OiJvbkVycm9yIix2YWx1ZTpmdW5jdGlvbihlKXt9fV0pLGV9KCk7dC5YTUxQYXJzZXJCYXNlPXY7dmFyIHk9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQscil7Zih0aGlzLGUpLHRoaXMubm9kZU5hbWU9dCx0aGlzLm5vZGVWYWx1ZT1yLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJwYXJlbnROb2RlIix7dmFsdWU6bnVsbCx3cml0YWJsZTohMH0pfXJldHVybiBkKGUsW3trZXk6ImZpcnN0Q2hpbGQiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNoaWxkTm9kZXMmJnRoaXMuY2hpbGROb2Rlc1swXX19LHtrZXk6Im5leHRTaWJsaW5nIixnZXQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnBhcmVudE5vZGUuY2hpbGROb2RlcztpZihlKXt2YXIgdD1lLmluZGV4T2YodGhpcyk7aWYoLTEhPT10KXJldHVybiBlW3QrMV19fX0se2tleToidGV4dENvbnRlbnQiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNoaWxkTm9kZXM/dGhpcy5jaGlsZE5vZGVzLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUudGV4dENvbnRlbnR9KSkuam9pbigiIik6dGhpcy5ub2RlVmFsdWV8fCIifX0se2tleToiY2hpbGRyZW4iLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNoaWxkTm9kZXN8fFtdfX0se2tleToiaGFzQ2hpbGROb2RlcyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jaGlsZE5vZGVzJiZ0aGlzLmNoaWxkTm9kZXMubGVuZ3RoPjB9fSx7a2V5OiJzZWFyY2hOb2RlIix2YWx1ZTpmdW5jdGlvbihlLHQpe2lmKHQ+PWUubGVuZ3RoKXJldHVybiB0aGlzO2Zvcih2YXIgcj1lW3RdLG49W10sYT10aGlzOzspe2lmKHIubmFtZT09PWEubm9kZU5hbWUpe2lmKDAhPT1yLnBvcyl7aWYoMD09PW4ubGVuZ3RoKXJldHVybiBudWxsO3ZhciBpLGM9MCx1PW8ocyhuLnBvcCgpLDEpWzBdLmNoaWxkTm9kZXMpO3RyeXtmb3IodS5zKCk7IShpPXUubigpKS5kb25lOyl7dmFyIGw9aS52YWx1ZTtpZihyLm5hbWU9PT1sLm5vZGVOYW1lKXtpZihjPT09ci5wb3MpcmV0dXJuIGwuc2VhcmNoTm9kZShlLHQrMSk7YysrfX19Y2F0Y2goZSl7dS5lKGUpfWZpbmFsbHl7dS5mKCl9cmV0dXJuIGEuc2VhcmNoTm9kZShlLHQrMSl9dmFyIGY9YS5zZWFyY2hOb2RlKGUsdCsxKTtpZihudWxsIT09ZilyZXR1cm4gZn1pZihhLmNoaWxkTm9kZXMmJjAhPT1hLmNoaWxkTm9kZXMubGVuZ3RoKW4ucHVzaChbYSwwXSksYT1hLmNoaWxkTm9kZXNbMF07ZWxzZXtpZigwPT09bi5sZW5ndGgpcmV0dXJuIG51bGw7Zm9yKDswIT09bi5sZW5ndGg7KXt2YXIgaD1zKG4ucG9wKCksMiksZD1oWzBdLHA9aFsxXSsxO2lmKHA8ZC5jaGlsZE5vZGVzLmxlbmd0aCl7bi5wdXNoKFtkLHBdKSxhPWQuY2hpbGROb2Rlc1twXTticmVha319aWYoMD09PW4ubGVuZ3RoKXJldHVybiBudWxsfX19fSx7a2V5OiJkdW1wIix2YWx1ZTpmdW5jdGlvbihlKXtpZigiI3RleHQiIT09dGhpcy5ub2RlTmFtZSl7aWYoZS5wdXNoKCI8Ii5jb25jYXQodGhpcy5ub2RlTmFtZSkpLHRoaXMuYXR0cmlidXRlcyl7dmFyIHQscj1vKHRoaXMuYXR0cmlidXRlcyk7dHJ5e2ZvcihyLnMoKTshKHQ9ci5uKCkpLmRvbmU7KXt2YXIgYT10LnZhbHVlO2UucHVzaCgiICIuY29uY2F0KGEubmFtZSwnPSInKS5jb25jYXQoKDAsbi5lbmNvZGVUb1htbFN0cmluZykoYS52YWx1ZSksJyInKSl9fWNhdGNoKGUpe3IuZShlKX1maW5hbGx5e3IuZigpfX1pZih0aGlzLmhhc0NoaWxkTm9kZXMoKSl7ZS5wdXNoKCI+Iik7dmFyIGkscz1vKHRoaXMuY2hpbGROb2Rlcyk7dHJ5e2ZvcihzLnMoKTshKGk9cy5uKCkpLmRvbmU7KWkudmFsdWUuZHVtcChlKX1jYXRjaChlKXtzLmUoZSl9ZmluYWxseXtzLmYoKX1lLnB1c2goIjwvIi5jb25jYXQodGhpcy5ub2RlTmFtZSwiPiIpKX1lbHNlIHRoaXMubm9kZVZhbHVlP2UucHVzaCgiPiIuY29uY2F0KCgwLG4uZW5jb2RlVG9YbWxTdHJpbmcpKHRoaXMubm9kZVZhbHVlKSwiPC8iKS5jb25jYXQodGhpcy5ub2RlTmFtZSwiPiIpKTplLnB1c2goIi8+Iil9ZWxzZSBlLnB1c2goKDAsbi5lbmNvZGVUb1htbFN0cmluZykodGhpcy5ub2RlVmFsdWUpKX19XSksZX0oKTt0LlNpbXBsZURPTU5vZGU9eTt2YXIgbT1mdW5jdGlvbihlKXshZnVuY3Rpb24oZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksdCYmYShlLHQpfShjLGUpO3ZhciB0LHIsbj0odD1jLHI9ZnVuY3Rpb24oKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdClyZXR1cm4hMTtpZihSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLChmdW5jdGlvbigpe30pKSksITB9Y2F0Y2goZSl7cmV0dXJuITF9fSgpLGZ1bmN0aW9uKCl7dmFyIGUsbj1pKHQpO2lmKHIpe3ZhciBhPWkodGhpcykuY29uc3RydWN0b3I7ZT1SZWZsZWN0LmNvbnN0cnVjdChuLGFyZ3VtZW50cyxhKX1lbHNlIGU9bi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYodCYmKCJvYmplY3QiPT09bCh0KXx8ImZ1bmN0aW9uIj09dHlwZW9mIHQpKXJldHVybiB0O2lmKHZvaWQgMCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24oZSl7aWYodm9pZCAwPT09ZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBlfShlKX0odGhpcyxlKX0pO2Z1bmN0aW9uIGMoZSl7dmFyIHQscj1lLmhhc0F0dHJpYnV0ZXMsYT12b2lkIDAhPT1yJiZyLGk9ZS5sb3dlckNhc2VOYW1lLG89dm9pZCAwIT09aSYmaTtyZXR1cm4gZih0aGlzLGMpLCh0PW4uY2FsbCh0aGlzKSkuX2N1cnJlbnRGcmFnbWVudD1udWxsLHQuX3N0YWNrPW51bGwsdC5fZXJyb3JDb2RlPXAuTm9FcnJvcix0Ll9oYXNBdHRyaWJ1dGVzPWEsdC5fbG93ZXJDYXNlTmFtZT1vLHR9cmV0dXJuIGQoYyxbe2tleToicGFyc2VGcm9tU3RyaW5nIix2YWx1ZTpmdW5jdGlvbihlKXtpZih0aGlzLl9jdXJyZW50RnJhZ21lbnQ9W10sdGhpcy5fc3RhY2s9W10sdGhpcy5fZXJyb3JDb2RlPXAuTm9FcnJvcix0aGlzLnBhcnNlWG1sKGUpLHRoaXMuX2Vycm9yQ29kZT09PXAuTm9FcnJvcil7dmFyIHQ9cyh0aGlzLl9jdXJyZW50RnJhZ21lbnQsMSlbMF07aWYodClyZXR1cm57ZG9jdW1lbnRFbGVtZW50OnR9fX19LHtrZXk6Im9uVGV4dCIsdmFsdWU6ZnVuY3Rpb24oZSl7aWYoIWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0wLHI9ZS5sZW5ndGg7dDxyO3QrKylpZighZyhlLHQpKXJldHVybiExO3JldHVybiEwfShlKSl7dmFyIHQ9bmV3IHkoIiN0ZXh0IixlKTt0aGlzLl9jdXJyZW50RnJhZ21lbnQucHVzaCh0KX19fSx7a2V5OiJvbkNkYXRhIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1uZXcgeSgiI3RleHQiLGUpO3RoaXMuX2N1cnJlbnRGcmFnbWVudC5wdXNoKHQpfX0se2tleToib25CZWdpbkVsZW1lbnQiLHZhbHVlOmZ1bmN0aW9uKGUsdCxyKXt0aGlzLl9sb3dlckNhc2VOYW1lJiYoZT1lLnRvTG93ZXJDYXNlKCkpO3ZhciBuPW5ldyB5KGUpO24uY2hpbGROb2Rlcz1bXSx0aGlzLl9oYXNBdHRyaWJ1dGVzJiYobi5hdHRyaWJ1dGVzPXQpLHRoaXMuX2N1cnJlbnRGcmFnbWVudC5wdXNoKG4pLHJ8fCh0aGlzLl9zdGFjay5wdXNoKHRoaXMuX2N1cnJlbnRGcmFnbWVudCksdGhpcy5fY3VycmVudEZyYWdtZW50PW4uY2hpbGROb2Rlcyl9fSx7a2V5OiJvbkVuZEVsZW1lbnQiLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMuX2N1cnJlbnRGcmFnbWVudD10aGlzLl9zdGFjay5wb3AoKXx8W107dmFyIHQ9dGhpcy5fY3VycmVudEZyYWdtZW50LmF0KC0xKTtpZighdClyZXR1cm4gbnVsbDt2YXIgcixuPW8odC5jaGlsZE5vZGVzKTt0cnl7Zm9yKG4ucygpOyEocj1uLm4oKSkuZG9uZTspci52YWx1ZS5wYXJlbnROb2RlPXR9Y2F0Y2goZSl7bi5lKGUpfWZpbmFsbHl7bi5mKCl9cmV0dXJuIHR9fSx7a2V5OiJvbkVycm9yIix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLl9lcnJvckNvZGU9ZX19XSksY30odik7dC5TaW1wbGVYTUxQYXJzZXI9bX0sKGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LmNhbGN1bGF0ZVNIQTI1Nj10LmNhbGN1bGF0ZU1ENT10LlBERjIwPXQuUERGMTc9dC5DaXBoZXJUcmFuc2Zvcm1GYWN0b3J5PXQuQVJDRm91ckNpcGhlcj10LkFFUzI1NkNpcGhlcj10LkFFUzEyOENpcGhlcj12b2lkIDAsdC5jYWxjdWxhdGVTSEEzODQ9ayx0LmNhbGN1bGF0ZVNIQTUxMj12b2lkIDA7dmFyIG49cigyKSxhPXIoMTM0KSxpPXIoMTk3KTtmdW5jdGlvbiBvKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLHQmJnMoZSx0KX1mdW5jdGlvbiBzKGUsdCl7cmV0dXJuIHM9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5fX3Byb3RvX189dCxlfSxzKGUsdCl9ZnVuY3Rpb24gYyhlKXt2YXIgdD1mdW5jdGlvbigpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0KXJldHVybiExO2lmKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sKGZ1bmN0aW9uKCl7fSkpKSwhMH1jYXRjaChlKXtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHIsbj11KGUpO2lmKHQpe3ZhciBhPXUodGhpcykuY29uc3RydWN0b3I7cj1SZWZsZWN0LmNvbnN0cnVjdChuLGFyZ3VtZW50cyxhKX1lbHNlIHI9bi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYodCYmKCJvYmplY3QiPT09bCh0KXx8ImZ1bmN0aW9uIj09dHlwZW9mIHQpKXJldHVybiB0O2lmKHZvaWQgMCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24oZSl7aWYodm9pZCAwPT09ZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBlfShlKX0odGhpcyxyKX19ZnVuY3Rpb24gdShlKXtyZXR1cm4gdT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihlKXtyZXR1cm4gZS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihlKX0sdShlKX1mdW5jdGlvbiBsKGUpe3JldHVybiBsPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSxsKGUpfWZ1bmN0aW9uIGYoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBoKGUsdCl7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBuPXRbcl07bi5lbnVtZXJhYmxlPW4uZW51bWVyYWJsZXx8ITEsbi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIG4mJihuLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwodm9pZCAwLGE9ZnVuY3Rpb24oZSx0KXtpZigib2JqZWN0IiE9PWwoZSl8fG51bGw9PT1lKXJldHVybiBlO3ZhciByPWVbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1yKXt2YXIgbj1yLmNhbGwoZSwic3RyaW5nIik7aWYoIm9iamVjdCIhPT1sKG4pKXJldHVybiBuO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuIFN0cmluZyhlKX0obi5rZXkpLCJzeW1ib2wiPT09bChhKT9hOlN0cmluZyhhKSksbil9dmFyIGF9ZnVuY3Rpb24gZChlLHQscil7cmV0dXJuIHQmJmgoZS5wcm90b3R5cGUsdCksciYmaChlLHIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGV9dmFyIHA9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQpe2YodGhpcyxlKSx0aGlzLmE9MCx0aGlzLmI9MDtmb3IodmFyIHI9bmV3IFVpbnQ4QXJyYXkoMjU2KSxuPXQubGVuZ3RoLGE9MDthPDI1NjsrK2EpclthXT1hO2Zvcih2YXIgaT0wLG89MDtpPDI1NjsrK2kpe3ZhciBzPXJbaV07bz1vK3MrdFtpJW5dJjI1NSxyW2ldPXJbb10scltvXT1zfXRoaXMucz1yfXJldHVybiBkKGUsW3trZXk6ImVuY3J5cHRCbG9jayIsdmFsdWU6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMuYSxyPXRoaXMuYixuPXRoaXMucyxhPWUubGVuZ3RoLGk9bmV3IFVpbnQ4QXJyYXkoYSksbz0wO288YTsrK28pe3ZhciBzPW5bdD10KzEmMjU1XSxjPW5bcj1yK3MmMjU1XTtuW3RdPWMsbltyXT1zLGlbb109ZVtvXV5uW3MrYyYyNTVdfXJldHVybiB0aGlzLmE9dCx0aGlzLmI9cixpfX0se2tleToiZGVjcnlwdEJsb2NrIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5lbmNyeXB0QmxvY2soZSl9fSx7a2V5OiJlbmNyeXB0Iix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5lbmNyeXB0QmxvY2soZSl9fV0pLGV9KCk7dC5BUkNGb3VyQ2lwaGVyPXA7dmFyIGcsdix5PShnPW5ldyBVaW50OEFycmF5KFs3LDEyLDE3LDIyLDcsMTIsMTcsMjIsNywxMiwxNywyMiw3LDEyLDE3LDIyLDUsOSwxNCwyMCw1LDksMTQsMjAsNSw5LDE0LDIwLDUsOSwxNCwyMCw0LDExLDE2LDIzLDQsMTEsMTYsMjMsNCwxMSwxNiwyMyw0LDExLDE2LDIzLDYsMTAsMTUsMjEsNiwxMCwxNSwyMSw2LDEwLDE1LDIxLDYsMTAsMTUsMjFdKSx2PW5ldyBJbnQzMkFycmF5KFstNjgwODc2OTM2LC0zODk1NjQ1ODYsNjA2MTA1ODE5LC0xMDQ0NTI1MzMwLC0xNzY0MTg4OTcsMTIwMDA4MDQyNiwtMTQ3MzIzMTM0MSwtNDU3MDU5ODMsMTc3MDAzNTQxNiwtMTk1ODQxNDQxNywtNDIwNjMsLTE5OTA0MDQxNjIsMTgwNDYwMzY4MiwtNDAzNDExMDEsLTE1MDIwMDIyOTAsMTIzNjUzNTMyOSwtMTY1Nzk2NTEwLC0xMDY5NTAxNjMyLDY0MzcxNzcxMywtMzczODk3MzAyLC03MDE1NTg2OTEsMzgwMTYwODMsLTY2MDQ3ODMzNSwtNDA1NTM3ODQ4LDU2ODQ0NjQzOCwtMTAxOTgwMzY5MCwtMTg3MzYzOTYxLDExNjM1MzE1MDEsLTE0NDQ2ODE0NjcsLTUxNDAzNzg0LDE3MzUzMjg0NzMsLTE5MjY2MDc3MzQsLTM3ODU1OCwtMjAyMjU3NDQ2MywxODM5MDMwNTYyLC0zNTMwOTU1NiwtMTUzMDk5MjA2MCwxMjcyODkzMzUzLC0xNTU0OTc2MzIsLTEwOTQ3MzA2NDAsNjgxMjc5MTc0LC0zNTg1MzcyMjIsLTcyMjUyMTk3OSw3NjAyOTE4OSwtNjQwMzY0NDg3LC00MjE4MTU4MzUsNTMwNzQyNTIwLC05OTUzMzg2NTEsLTE5ODYzMDg0NCwxMTI2ODkxNDE1LC0xNDE2MzU0OTA1LC01NzQzNDA1NSwxNzAwNDg1NTcxLC0xODk0OTg2NjA2LC0xMDUxNTIzLC0yMDU0OTIyNzk5LDE4NzMzMTMzNTksLTMwNjExNzQ0LC0xNTYwMTk4MzgwLDEzMDkxNTE2NDksLTE0NTUyMzA3MCwtMTEyMDIxMDM3OSw3MTg3ODcyNTksLTM0MzQ4NTU1MV0pLGZ1bmN0aW9uKGUsdCxyKXt2YXIgbixhLGk9MTczMjU4NDE5MyxvPS0yNzE3MzM4Nzkscz0tMTczMjU4NDE5NCxjPTI3MTczMzg3OCx1PXIrNzImLTY0LGw9bmV3IFVpbnQ4QXJyYXkodSk7Zm9yKG49MDtuPHI7KytuKWxbbl09ZVt0KytdO2xbbisrXT0xMjg7Zm9yKHZhciBmPXUtODtuPGY7KWxbbisrXT0wO2xbbisrXT1yPDwzJjI1NSxsW24rK109cj4+NSYyNTUsbFtuKytdPXI+PjEzJjI1NSxsW24rK109cj4+MjEmMjU1LGxbbisrXT1yPj4+MjkmMjU1LGxbbisrXT0wLGxbbisrXT0wLGxbbisrXT0wO3ZhciBoPW5ldyBJbnQzMkFycmF5KDE2KTtmb3Iobj0wO248dTspe2ZvcihhPTA7YTwxNjsrK2Esbis9NCloW2FdPWxbbl18bFtuKzFdPDw4fGxbbisyXTw8MTZ8bFtuKzNdPDwyNDt2YXIgZD1pLHA9byx5PXMsbT1jLGI9dm9pZCAwLHc9dm9pZCAwO2ZvcihhPTA7YTw2NDsrK2Epe2E8MTY/KGI9cCZ5fH5wJm0sdz1hKTphPDMyPyhiPW0mcHx+bSZ5LHc9NSphKzEmMTUpOmE8NDg/KGI9cF55Xm0sdz0zKmErNSYxNSk6KGI9eV4ocHx+bSksdz03KmEmMTUpO3ZhciBrPW0sUz1kK2IrdlthXStoW3ddfDAseD1nW2FdO209eSx5PXAscD1wKyhTPDx4fFM+Pj4zMi14KXwwLGQ9a31pPWkrZHwwLG89bytwfDAscz1zK3l8MCxjPWMrbXwwfXJldHVybiBuZXcgVWludDhBcnJheShbMjU1JmksaT4+OCYyNTUsaT4+MTYmMjU1LGk+Pj4yNCYyNTUsMjU1Jm8sbz4+OCYyNTUsbz4+MTYmMjU1LG8+Pj4yNCYyNTUsMjU1JnMscz4+OCYyNTUscz4+MTYmMjU1LHM+Pj4yNCYyNTUsMjU1JmMsYz4+OCYyNTUsYz4+MTYmMjU1LGM+Pj4yNCYyNTVdKX0pO3QuY2FsY3VsYXRlTUQ1PXk7dmFyIG09ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQscil7Zih0aGlzLGUpLHRoaXMuaGlnaD0wfHQsdGhpcy5sb3c9MHxyfXJldHVybiBkKGUsW3trZXk6ImFuZCIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5oaWdoJj1lLmhpZ2gsdGhpcy5sb3cmPWUubG93fX0se2tleToieG9yIix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLmhpZ2hePWUuaGlnaCx0aGlzLmxvd149ZS5sb3d9fSx7a2V5OiJvciIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5oaWdofD1lLmhpZ2gsdGhpcy5sb3d8PWUubG93fX0se2tleToic2hpZnRSaWdodCIsdmFsdWU6ZnVuY3Rpb24oZSl7ZT49MzI/KHRoaXMubG93PXRoaXMuaGlnaD4+PmUtMzJ8MCx0aGlzLmhpZ2g9MCk6KHRoaXMubG93PXRoaXMubG93Pj4+ZXx0aGlzLmhpZ2g8PDMyLWUsdGhpcy5oaWdoPXRoaXMuaGlnaD4+PmV8MCl9fSx7a2V5OiJzaGlmdExlZnQiLHZhbHVlOmZ1bmN0aW9uKGUpe2U+PTMyPyh0aGlzLmhpZ2g9dGhpcy5sb3c8PGUtMzIsdGhpcy5sb3c9MCk6KHRoaXMuaGlnaD10aGlzLmhpZ2g8PGV8dGhpcy5sb3c+Pj4zMi1lLHRoaXMubG93PDw9ZSl9fSx7a2V5OiJyb3RhdGVSaWdodCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQscjszMiZlPyhyPXRoaXMubG93LHQ9dGhpcy5oaWdoKToodD10aGlzLmxvdyxyPXRoaXMuaGlnaCksZSY9MzEsdGhpcy5sb3c9dD4+PmV8cjw8MzItZSx0aGlzLmhpZ2g9cj4+PmV8dDw8MzItZX19LHtrZXk6Im5vdCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmhpZ2g9fnRoaXMuaGlnaCx0aGlzLmxvdz1+dGhpcy5sb3d9fSx7a2V5OiJhZGQiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PSh0aGlzLmxvdz4+PjApKyhlLmxvdz4+PjApLHI9KHRoaXMuaGlnaD4+PjApKyhlLmhpZ2g+Pj4wKTt0PjQyOTQ5NjcyOTUmJihyKz0xKSx0aGlzLmxvdz0wfHQsdGhpcy5oaWdoPTB8cn19LHtrZXk6ImNvcHlUbyIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtlW3RdPXRoaXMuaGlnaD4+PjI0JjI1NSxlW3QrMV09dGhpcy5oaWdoPj4xNiYyNTUsZVt0KzJdPXRoaXMuaGlnaD4+OCYyNTUsZVt0KzNdPTI1NSZ0aGlzLmhpZ2gsZVt0KzRdPXRoaXMubG93Pj4+MjQmMjU1LGVbdCs1XT10aGlzLmxvdz4+MTYmMjU1LGVbdCs2XT10aGlzLmxvdz4+OCYyNTUsZVt0KzddPTI1NSZ0aGlzLmxvd319LHtrZXk6ImFzc2lnbiIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5oaWdoPWUuaGlnaCx0aGlzLmxvdz1lLmxvd319XSksZX0oKSxiPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe3JldHVybiBlPj4+dHxlPDwzMi10fWZ1bmN0aW9uIHQoZSx0LHIpe3JldHVybiBlJnRefmUmcn1mdW5jdGlvbiByKGUsdCxyKXtyZXR1cm4gZSZ0XmUmcl50JnJ9ZnVuY3Rpb24gbih0KXtyZXR1cm4gZSh0LDIpXmUodCwxMyleZSh0LDIyKX1mdW5jdGlvbiBhKHQpe3JldHVybiBlKHQsNileZSh0LDExKV5lKHQsMjUpfWZ1bmN0aW9uIGkodCl7cmV0dXJuIGUodCw3KV5lKHQsMTgpXnQ+Pj4zfXZhciBvPVsxMTE2MzUyNDA4LDE4OTk0NDc0NDEsMzA0OTMyMzQ3MSwzOTIxMDA5NTczLDk2MTk4NzE2MywxNTA4OTcwOTkzLDI0NTM2MzU3NDgsMjg3MDc2MzIyMSwzNjI0MzgxMDgwLDMxMDU5ODQwMSw2MDcyMjUyNzgsMTQyNjg4MTk4NywxOTI1MDc4Mzg4LDIxNjIwNzgyMDYsMjYxNDg4ODEwMywzMjQ4MjIyNTgwLDM4MzUzOTA0MDEsNDAyMjIyNDc3NCwyNjQzNDcwNzgsNjA0ODA3NjI4LDc3MDI1NTk4MywxMjQ5MTUwMTIyLDE1NTUwODE2OTIsMTk5NjA2NDk4NiwyNTU0MjIwODgyLDI4MjE4MzQzNDksMjk1Mjk5NjgwOCwzMjEwMzEzNjcxLDMzMzY1NzE4OTEsMzU4NDUyODcxMSwxMTM5MjY5OTMsMzM4MjQxODk1LDY2NjMwNzIwNSw3NzM1Mjk5MTIsMTI5NDc1NzM3MiwxMzk2MTgyMjkxLDE2OTUxODM3MDAsMTk4NjY2MTA1MSwyMTc3MDI2MzUwLDI0NTY5NTYwMzcsMjczMDQ4NTkyMSwyODIwMzAyNDExLDMyNTk3MzA4MDAsMzM0NTc2NDc3MSwzNTE2MDY1ODE3LDM2MDAzNTI4MDQsNDA5NDU3MTkwOSwyNzU0MjMzNDQsNDMwMjI3NzM0LDUwNjk0ODYxNiw2NTkwNjA1NTYsODgzOTk3ODc3LDk1ODEzOTU3MSwxMzIyODIyMjE4LDE1MzcwMDIwNjMsMTc0Nzg3Mzc3OSwxOTU1NTYyMjIyLDIwMjQxMDQ4MTUsMjIyNzczMDQ1MiwyMzYxODUyNDI0LDI0Mjg0MzY0NzQsMjc1NjczNDE4NywzMjA0MDMxNDc5LDMzMjkzMjUyOThdO3JldHVybiBmdW5jdGlvbihzLGMsdSl7dmFyIGwsZixoPTE3NzkwMzM3MDMsZD0zMTQ0MTM0Mjc3LHA9MTAxMzkwNDI0MixnPTI3NzM0ODA3NjIsdj0xMzU5ODkzMTE5LHk9MjYwMDgyMjkyNCxtPTUyODczNDYzNSxiPTE1NDE0NTkyMjUsdz02NCpNYXRoLmNlaWwoKHUrOSkvNjQpLGs9bmV3IFVpbnQ4QXJyYXkodyk7Zm9yKGw9MDtsPHU7KytsKWtbbF09c1tjKytdO2tbbCsrXT0xMjg7Zm9yKHZhciBTPXctODtsPFM7KWtbbCsrXT0wO2tbbCsrXT0wLGtbbCsrXT0wLGtbbCsrXT0wLGtbbCsrXT11Pj4+MjkmMjU1LGtbbCsrXT11Pj4yMSYyNTUsa1tsKytdPXU+PjEzJjI1NSxrW2wrK109dT4+NSYyNTUsa1tsKytdPXU8PDMmMjU1O3ZhciB4LE89bmV3IFVpbnQzMkFycmF5KDY0KTtmb3IobD0wO2w8dzspe2ZvcihmPTA7ZjwxNjsrK2YpT1tmXT1rW2xdPDwyNHxrW2wrMV08PDE2fGtbbCsyXTw8OHxrW2wrM10sbCs9NDtmb3IoZj0xNjtmPDY0OysrZilPW2ZdPTB8KGUoeD1PW2YtMl0sMTcpXmUoeCwxOSleeD4+PjEwKStPW2YtN10raShPW2YtMTVdKStPW2YtMTZdO3ZhciBBPWgsQz1kLEY9cCxQPWcsVD12LEk9eSxFPW0saj1iLE09dm9pZCAwLF89dm9pZCAwO2ZvcihmPTA7Zjw2NDsrK2YpTT1qK2EoVCkrdChULEksRSkrb1tmXStPW2ZdLF89bihBKStyKEEsQyxGKSxqPUUsRT1JLEk9VCxUPVArTXwwLFA9RixGPUMsQz1BLEE9TStffDA7aD1oK0F8MCxkPWQrQ3wwLHA9cCtGfDAsZz1nK1B8MCx2PXYrVHwwLHk9eStJfDAsbT1tK0V8MCxiPWIranwwfXJldHVybiBuZXcgVWludDhBcnJheShbaD4+MjQmMjU1LGg+PjE2JjI1NSxoPj44JjI1NSwyNTUmaCxkPj4yNCYyNTUsZD4+MTYmMjU1LGQ+PjgmMjU1LDI1NSZkLHA+PjI0JjI1NSxwPj4xNiYyNTUscD4+OCYyNTUsMjU1JnAsZz4+MjQmMjU1LGc+PjE2JjI1NSxnPj44JjI1NSwyNTUmZyx2Pj4yNCYyNTUsdj4+MTYmMjU1LHY+PjgmMjU1LDI1NSZ2LHk+PjI0JjI1NSx5Pj4xNiYyNTUseT4+OCYyNTUsMjU1JnksbT4+MjQmMjU1LG0+PjE2JjI1NSxtPj44JjI1NSwyNTUmbSxiPj4yNCYyNTUsYj4+MTYmMjU1LGI+PjgmMjU1LDI1NSZiXSl9fSgpO3QuY2FsY3VsYXRlU0hBMjU2PWI7dmFyIHc9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCxyLG4sYSl7ZS5hc3NpZ24odCksZS5hbmQociksYS5hc3NpZ24odCksYS5ub3QoKSxhLmFuZChuKSxlLnhvcihhKX1mdW5jdGlvbiB0KGUsdCxyLG4sYSl7ZS5hc3NpZ24odCksZS5hbmQociksYS5hc3NpZ24odCksYS5hbmQobiksZS54b3IoYSksYS5hc3NpZ24ociksYS5hbmQobiksZS54b3IoYSl9ZnVuY3Rpb24gcihlLHQscil7ZS5hc3NpZ24odCksZS5yb3RhdGVSaWdodCgyOCksci5hc3NpZ24odCksci5yb3RhdGVSaWdodCgzNCksZS54b3Iociksci5hc3NpZ24odCksci5yb3RhdGVSaWdodCgzOSksZS54b3Iocil9ZnVuY3Rpb24gbihlLHQscil7ZS5hc3NpZ24odCksZS5yb3RhdGVSaWdodCgxNCksci5hc3NpZ24odCksci5yb3RhdGVSaWdodCgxOCksZS54b3Iociksci5hc3NpZ24odCksci5yb3RhdGVSaWdodCg0MSksZS54b3Iocil9ZnVuY3Rpb24gYShlLHQscil7ZS5hc3NpZ24odCksZS5yb3RhdGVSaWdodCgxKSxyLmFzc2lnbih0KSxyLnJvdGF0ZVJpZ2h0KDgpLGUueG9yKHIpLHIuYXNzaWduKHQpLHIuc2hpZnRSaWdodCg3KSxlLnhvcihyKX1mdW5jdGlvbiBpKGUsdCxyKXtlLmFzc2lnbih0KSxlLnJvdGF0ZVJpZ2h0KDE5KSxyLmFzc2lnbih0KSxyLnJvdGF0ZVJpZ2h0KDYxKSxlLnhvcihyKSxyLmFzc2lnbih0KSxyLnNoaWZ0UmlnaHQoNiksZS54b3Iocil9dmFyIG89W25ldyBtKDExMTYzNTI0MDgsMzYwOTc2NzQ1OCksbmV3IG0oMTg5OTQ0NzQ0MSw2MDI4OTE3MjUpLG5ldyBtKDMwNDkzMjM0NzEsMzk2NDQ4NDM5OSksbmV3IG0oMzkyMTAwOTU3MywyMTczMjk1NTQ4KSxuZXcgbSg5NjE5ODcxNjMsNDA4MTYyODQ3MiksbmV3IG0oMTUwODk3MDk5MywzMDUzODM0MjY1KSxuZXcgbSgyNDUzNjM1NzQ4LDI5Mzc2NzE1NzkpLG5ldyBtKDI4NzA3NjMyMjEsMzY2NDYwOTU2MCksbmV3IG0oMzYyNDM4MTA4MCwyNzM0ODgzMzk0KSxuZXcgbSgzMTA1OTg0MDEsMTE2NDk5NjU0MiksbmV3IG0oNjA3MjI1Mjc4LDEzMjM2MTA3NjQpLG5ldyBtKDE0MjY4ODE5ODcsMzU5MDMwNDk5NCksbmV3IG0oMTkyNTA3ODM4OCw0MDY4MTgyMzgzKSxuZXcgbSgyMTYyMDc4MjA2LDk5MTMzNjExMyksbmV3IG0oMjYxNDg4ODEwMyw2MzM4MDMzMTcpLG5ldyBtKDMyNDgyMjI1ODAsMzQ3OTc3NDg2OCksbmV3IG0oMzgzNTM5MDQwMSwyNjY2NjEzNDU4KSxuZXcgbSg0MDIyMjI0Nzc0LDk0NDcxMTEzOSksbmV3IG0oMjY0MzQ3MDc4LDIzNDEyNjI3NzMpLG5ldyBtKDYwNDgwNzYyOCwyMDA3ODAwOTMzKSxuZXcgbSg3NzAyNTU5ODMsMTQ5NTk5MDkwMSksbmV3IG0oMTI0OTE1MDEyMiwxODU2NDMxMjM1KSxuZXcgbSgxNTU1MDgxNjkyLDMxNzUyMTgxMzIpLG5ldyBtKDE5OTYwNjQ5ODYsMjE5ODk1MDgzNyksbmV3IG0oMjU1NDIyMDg4MiwzOTk5NzE5MzM5KSxuZXcgbSgyODIxODM0MzQ5LDc2Njc4NDAxNiksbmV3IG0oMjk1Mjk5NjgwOCwyNTY2NTk0ODc5KSxuZXcgbSgzMjEwMzEzNjcxLDMyMDMzMzc5NTYpLG5ldyBtKDMzMzY1NzE4OTEsMTAzNDQ1NzAyNiksbmV3IG0oMzU4NDUyODcxMSwyNDY2OTQ4OTAxKSxuZXcgbSgxMTM5MjY5OTMsMzc1ODMyNjM4MyksbmV3IG0oMzM4MjQxODk1LDE2ODcxNzkzNiksbmV3IG0oNjY2MzA3MjA1LDExODgxNzk5NjQpLG5ldyBtKDc3MzUyOTkxMiwxNTQ2MDQ1NzM0KSxuZXcgbSgxMjk0NzU3MzcyLDE1MjI4MDU0ODUpLG5ldyBtKDEzOTYxODIyOTEsMjY0MzgzMzgyMyksbmV3IG0oMTY5NTE4MzcwMCwyMzQzNTI3MzkwKSxuZXcgbSgxOTg2NjYxMDUxLDEwMTQ0Nzc0ODApLG5ldyBtKDIxNzcwMjYzNTAsMTIwNjc1OTE0MiksbmV3IG0oMjQ1Njk1NjAzNywzNDQwNzc2MjcpLG5ldyBtKDI3MzA0ODU5MjEsMTI5MDg2MzQ2MCksbmV3IG0oMjgyMDMwMjQxMSwzMTU4NDU0MjczKSxuZXcgbSgzMjU5NzMwODAwLDM1MDU5NTI2NTcpLG5ldyBtKDMzNDU3NjQ3NzEsMTA2MjE3MDA4KSxuZXcgbSgzNTE2MDY1ODE3LDM2MDYwMDgzNDQpLG5ldyBtKDM2MDAzNTI4MDQsMTQzMjcyNTc3NiksbmV3IG0oNDA5NDU3MTkwOSwxNDY3MDMxNTk0KSxuZXcgbSgyNzU0MjMzNDQsODUxMTY5NzIwKSxuZXcgbSg0MzAyMjc3MzQsMzEwMDgyMzc1MiksbmV3IG0oNTA2OTQ4NjE2LDEzNjMyNTgxOTUpLG5ldyBtKDY1OTA2MDU1NiwzNzUwNjg1NTkzKSxuZXcgbSg4ODM5OTc4NzcsMzc4NTA1MDI4MCksbmV3IG0oOTU4MTM5NTcxLDMzMTgzMDc0MjcpLG5ldyBtKDEzMjI4MjIyMTgsMzgxMjcyMzQwMyksbmV3IG0oMTUzNzAwMjA2MywyMDAzMDM0OTk1KSxuZXcgbSgxNzQ3ODczNzc5LDM2MDIwMzY4OTkpLG5ldyBtKDE5NTU1NjIyMjIsMTU3NTk5MDAxMiksbmV3IG0oMjAyNDEwNDgxNSwxMTI1NTkyOTI4KSxuZXcgbSgyMjI3NzMwNDUyLDI3MTY5MDQzMDYpLG5ldyBtKDIzNjE4NTI0MjQsNDQyNzc2MDQ0KSxuZXcgbSgyNDI4NDM2NDc0LDU5MzY5ODM0NCksbmV3IG0oMjc1NjczNDE4NywzNzMzMTEwMjQ5KSxuZXcgbSgzMjA0MDMxNDc5LDI5OTkzNTE1NzMpLG5ldyBtKDMzMjkzMjUyOTgsMzgxNTkyMDQyNyksbmV3IG0oMzM5MTU2OTYxNCwzOTI4MzgzOTAwKSxuZXcgbSgzNTE1MjY3MjcxLDU2NjI4MDcxMSksbmV3IG0oMzk0MDE4NzYwNiwzNDU0MDY5NTM0KSxuZXcgbSg0MTE4NjMwMjcxLDQwMDAyMzk5OTIpLG5ldyBtKDExNjQxODQ3NCwxOTE0MTM4NTU0KSxuZXcgbSgxNzQyOTI0MjEsMjczMTA1NTI3MCksbmV3IG0oMjg5MzgwMzU2LDMyMDM5OTMwMDYpLG5ldyBtKDQ2MDM5MzI2OSwzMjA2MjAzMTUpLG5ldyBtKDY4NTQ3MTczMyw1ODc0OTY4MzYpLG5ldyBtKDg1MjE0Mjk3MSwxMDg2NzkyODUxKSxuZXcgbSgxMDE3MDM2Mjk4LDM2NTU0MzEwMCksbmV3IG0oMTEyNjAwMDU4MCwyNjE4Mjk3Njc2KSxuZXcgbSgxMjg4MDMzNDcwLDM0MDk4NTUxNTgpLG5ldyBtKDE1MDE1MDU5NDgsNDIzNDUwOTg2NiksbmV3IG0oMTYwNzE2NzkxNSw5ODcxNjc0NjgpLG5ldyBtKDE4MTY0MDIzMTYsMTI0NjE4OTU5MSldO3JldHVybiBmdW5jdGlvbihzLGMsdSl7dmFyIGwsZixoLGQscCxnLHYseSxiPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdJiZhcmd1bWVudHNbM107Yj8obD1uZXcgbSgzNDE4MDcwMzY1LDMyMzgzNzEwMzIpLGY9bmV3IG0oMTY1NDI3MDI1MCw5MTQxNTA2NjMpLGg9bmV3IG0oMjQzODUyOTM3MCw4MTI3MDI5OTkpLGQ9bmV3IG0oMzU1NDYyMzYwLDQxNDQ5MTI2OTcpLHA9bmV3IG0oMTczMTQwNTQxNSw0MjkwNzc1ODU3KSxnPW5ldyBtKDIzOTQxODAyMzEsMTc1MDYwMzAyNSksdj1uZXcgbSgzNjc1MDA4NTI1LDE2OTQwNzY4MzkpLHk9bmV3IG0oMTIwMzA2MjgxMywzMjA0MDc1NDI4KSk6KGw9bmV3IG0oMTc3OTAzMzcwMyw0MDg5MjM1NzIwKSxmPW5ldyBtKDMxNDQxMzQyNzcsMjIyNzg3MzU5NSksaD1uZXcgbSgxMDEzOTA0MjQyLDQyNzExNzU3MjMpLGQ9bmV3IG0oMjc3MzQ4MDc2MiwxNTk1NzUwMTI5KSxwPW5ldyBtKDEzNTk4OTMxMTksMjkxNzU2NTEzNyksZz1uZXcgbSgyNjAwODIyOTI0LDcyNTUxMTE5OSksdj1uZXcgbSg1Mjg3MzQ2MzUsNDIxNTM4OTU0NykseT1uZXcgbSgxNTQxNDU5MjI1LDMyNzAzMzIwOSkpO3ZhciB3LGssUz0xMjgqTWF0aC5jZWlsKCh1KzE3KS8xMjgpLHg9bmV3IFVpbnQ4QXJyYXkoUyk7Zm9yKHc9MDt3PHU7Kyt3KXhbd109c1tjKytdO3hbdysrXT0xMjg7Zm9yKHZhciBPPVMtMTY7dzxPOyl4W3crK109MDt4W3crK109MCx4W3crK109MCx4W3crK109MCx4W3crK109MCx4W3crK109MCx4W3crK109MCx4W3crK109MCx4W3crK109MCx4W3crK109MCx4W3crK109MCx4W3crK109MCx4W3crK109dT4+PjI5JjI1NSx4W3crK109dT4+MjEmMjU1LHhbdysrXT11Pj4xMyYyNTUseFt3KytdPXU+PjUmMjU1LHhbdysrXT11PDwzJjI1NTt2YXIgQT1uZXcgQXJyYXkoODApO2Zvcih3PTA7dzw4MDt3KyspQVt3XT1uZXcgbSgwLDApO3ZhciBDLEYsUD1uZXcgbSgwLDApLFQ9bmV3IG0oMCwwKSxJPW5ldyBtKDAsMCksRT1uZXcgbSgwLDApLGo9bmV3IG0oMCwwKSxNPW5ldyBtKDAsMCksXz1uZXcgbSgwLDApLEw9bmV3IG0oMCwwKSxSPW5ldyBtKDAsMCksTj1uZXcgbSgwLDApLEQ9bmV3IG0oMCwwKSxCPW5ldyBtKDAsMCk7Zm9yKHc9MDt3PFM7KXtmb3Ioaz0wO2s8MTY7KytrKUFba10uaGlnaD14W3ddPDwyNHx4W3crMV08PDE2fHhbdysyXTw8OHx4W3crM10sQVtrXS5sb3c9eFt3KzRdPDwyNHx4W3crNV08PDE2fHhbdys2XTw8OHx4W3crN10sdys9ODtmb3Ioaz0xNjtrPDgwOysraylpKEM9QVtrXSxBW2stMl0sQiksQy5hZGQoQVtrLTddKSxhKEQsQVtrLTE1XSxCKSxDLmFkZChEKSxDLmFkZChBW2stMTZdKTtmb3IoUC5hc3NpZ24obCksVC5hc3NpZ24oZiksSS5hc3NpZ24oaCksRS5hc3NpZ24oZCksai5hc3NpZ24ocCksTS5hc3NpZ24oZyksXy5hc3NpZ24odiksTC5hc3NpZ24oeSksaz0wO2s8ODA7KytrKVIuYXNzaWduKEwpLG4oRCxqLEIpLFIuYWRkKEQpLGUoRCxqLE0sXyxCKSxSLmFkZChEKSxSLmFkZChvW2tdKSxSLmFkZChBW2tdKSxyKE4sUCxCKSx0KEQsUCxULEksQiksTi5hZGQoRCksQz1MLEw9XyxfPU0sTT1qLEUuYWRkKFIpLGo9RSxFPUksST1ULFQ9UCxDLmFzc2lnbihSKSxDLmFkZChOKSxQPUM7bC5hZGQoUCksZi5hZGQoVCksaC5hZGQoSSksZC5hZGQoRSkscC5hZGQoaiksZy5hZGQoTSksdi5hZGQoXykseS5hZGQoTCl9cmV0dXJuIGI/KEY9bmV3IFVpbnQ4QXJyYXkoNDgpLGwuY29weVRvKEYsMCksZi5jb3B5VG8oRiw4KSxoLmNvcHlUbyhGLDE2KSxkLmNvcHlUbyhGLDI0KSxwLmNvcHlUbyhGLDMyKSxnLmNvcHlUbyhGLDQwKSk6KEY9bmV3IFVpbnQ4QXJyYXkoNjQpLGwuY29weVRvKEYsMCksZi5jb3B5VG8oRiw4KSxoLmNvcHlUbyhGLDE2KSxkLmNvcHlUbyhGLDI0KSxwLmNvcHlUbyhGLDMyKSxnLmNvcHlUbyhGLDQwKSx2LmNvcHlUbyhGLDQ4KSx5LmNvcHlUbyhGLDU2KSksRn19KCk7ZnVuY3Rpb24gayhlLHQscil7cmV0dXJuIHcoZSx0LHIsITApfXQuY2FsY3VsYXRlU0hBNTEyPXc7dmFyIFM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7Zih0aGlzLGUpfXJldHVybiBkKGUsW3trZXk6ImRlY3J5cHRCbG9jayIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGV9fSx7a2V5OiJlbmNyeXB0Iix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gZX19XSksZX0oKSx4PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe2YodGhpcyxlKSx0aGlzLmNvbnN0cnVjdG9yPT09ZSYmKDAsbi51bnJlYWNoYWJsZSkoIkNhbm5vdCBpbml0aWFsaXplIEFFU0Jhc2VDaXBoZXIuIiksdGhpcy5fcz1uZXcgVWludDhBcnJheShbOTksMTI0LDExOSwxMjMsMjQyLDEwNywxMTEsMTk3LDQ4LDEsMTAzLDQzLDI1NCwyMTUsMTcxLDExOCwyMDIsMTMwLDIwMSwxMjUsMjUwLDg5LDcxLDI0MCwxNzMsMjEyLDE2MiwxNzUsMTU2LDE2NCwxMTQsMTkyLDE4MywyNTMsMTQ3LDM4LDU0LDYzLDI0NywyMDQsNTIsMTY1LDIyOSwyNDEsMTEzLDIxNiw0OSwyMSw0LDE5OSwzNSwxOTUsMjQsMTUwLDUsMTU0LDcsMTgsMTI4LDIyNiwyMzUsMzksMTc4LDExNyw5LDEzMSw0NCwyNiwyNywxMTAsOTAsMTYwLDgyLDU5LDIxNCwxNzksNDEsMjI3LDQ3LDEzMiw4MywyMDksMCwyMzcsMzIsMjUyLDE3Nyw5MSwxMDYsMjAzLDE5MCw1Nyw3NCw3Niw4OCwyMDcsMjA4LDIzOSwxNzAsMjUxLDY3LDc3LDUxLDEzMyw2OSwyNDksMiwxMjcsODAsNjAsMTU5LDE2OCw4MSwxNjMsNjQsMTQzLDE0NiwxNTcsNTYsMjQ1LDE4OCwxODIsMjE4LDMzLDE2LDI1NSwyNDMsMjEwLDIwNSwxMiwxOSwyMzYsOTUsMTUxLDY4LDIzLDE5NiwxNjcsMTI2LDYxLDEwMCw5MywyNSwxMTUsOTYsMTI5LDc5LDIyMCwzNCw0MiwxNDQsMTM2LDcwLDIzOCwxODQsMjAsMjIyLDk0LDExLDIxOSwyMjQsNTAsNTgsMTAsNzMsNiwzNiw5MiwxOTQsMjExLDE3Miw5OCwxNDUsMTQ5LDIyOCwxMjEsMjMxLDIwMCw1NSwxMDksMTQxLDIxMyw3OCwxNjksMTA4LDg2LDI0NCwyMzQsMTAxLDEyMiwxNzQsOCwxODYsMTIwLDM3LDQ2LDI4LDE2NiwxODAsMTk4LDIzMiwyMjEsMTE2LDMxLDc1LDE4OSwxMzksMTM4LDExMiw2MiwxODEsMTAyLDcyLDMsMjQ2LDE0LDk3LDUzLDg3LDE4NSwxMzQsMTkzLDI5LDE1OCwyMjUsMjQ4LDE1MiwxNywxMDUsMjE3LDE0MiwxNDgsMTU1LDMwLDEzNSwyMzMsMjA2LDg1LDQwLDIyMywxNDAsMTYxLDEzNywxMywxOTEsMjMwLDY2LDEwNCw2NSwxNTMsNDUsMTUsMTc2LDg0LDE4NywyMl0pLHRoaXMuX2ludl9zPW5ldyBVaW50OEFycmF5KFs4Miw5LDEwNiwyMTMsNDgsNTQsMTY1LDU2LDE5MSw2NCwxNjMsMTU4LDEyOSwyNDMsMjE1LDI1MSwxMjQsMjI3LDU3LDEzMCwxNTUsNDcsMjU1LDEzNSw1MiwxNDIsNjcsNjgsMTk2LDIyMiwyMzMsMjAzLDg0LDEyMywxNDgsNTAsMTY2LDE5NCwzNSw2MSwyMzgsNzYsMTQ5LDExLDY2LDI1MCwxOTUsNzgsOCw0NiwxNjEsMTAyLDQwLDIxNywzNiwxNzgsMTE4LDkxLDE2Miw3MywxMDksMTM5LDIwOSwzNywxMTQsMjQ4LDI0NiwxMDAsMTM0LDEwNCwxNTIsMjIsMjEyLDE2NCw5MiwyMDQsOTMsMTAxLDE4MiwxNDYsMTA4LDExMiw3Miw4MCwyNTMsMjM3LDE4NSwyMTgsOTQsMjEsNzAsODcsMTY3LDE0MSwxNTcsMTMyLDE0NCwyMTYsMTcxLDAsMTQwLDE4OCwyMTEsMTAsMjQ3LDIyOCw4OCw1LDE4NCwxNzksNjksNiwyMDgsNDQsMzAsMTQzLDIwMiw2MywxNSwyLDE5MywxNzUsMTg5LDMsMSwxOSwxMzgsMTA3LDU4LDE0NSwxNyw2NSw3OSwxMDMsMjIwLDIzNCwxNTEsMjQyLDIwNywyMDYsMjQwLDE4MCwyMzAsMTE1LDE1MCwxNzIsMTE2LDM0LDIzMSwxNzMsNTMsMTMzLDIyNiwyNDksNTUsMjMyLDI4LDExNywyMjMsMTEwLDcxLDI0MSwyNiwxMTMsMjksNDEsMTk3LDEzNywxMTEsMTgzLDk4LDE0LDE3MCwyNCwxOTAsMjcsMjUyLDg2LDYyLDc1LDE5OCwyMTAsMTIxLDMyLDE1NCwyMTksMTkyLDI1NCwxMjAsMjA1LDkwLDI0NCwzMSwyMjEsMTY4LDUxLDEzNiw3LDE5OSw0OSwxNzcsMTgsMTYsODksMzksMTI4LDIzNiw5NSw5Niw4MSwxMjcsMTY5LDI1LDE4MSw3NCwxMyw0NSwyMjksMTIyLDE1OSwxNDcsMjAxLDE1NiwyMzksMTYwLDIyNCw1OSw3NywxNzQsNDIsMjQ1LDE3NiwyMDAsMjM1LDE4Nyw2MCwxMzEsODMsMTUzLDk3LDIzLDQzLDQsMTI2LDE4NiwxMTksMjE0LDM4LDIyNSwxMDUsMjAsOTksODUsMzMsMTIsMTI1XSksdGhpcy5fbWl4PW5ldyBVaW50MzJBcnJheShbMCwyMzU0NzQxODcsNDcwOTQ4Mzc0LDMwMzc2NTI3Nyw5NDE4OTY3NDgsOTA4OTMzNDE1LDYwNzUzMDU1NCw3MDg3ODA4NDksMTg4Mzc5MzQ5NiwyMTE4MjE0OTk1LDE4MTc4NjY4MzAsMTY0OTYzOTIzNywxMjE1MDYxMTA4LDExODEwNDUxMTksMTQxNzU2MTY5OCwxNTE3NzY3NTI5LDM3Njc1ODY5OTIsNDAwMzA2MTE3OSw0MjM2NDI5OTkwLDQwNjkyNDY4OTMsMzYzNTczMzY2MCwzNjAyNzcwMzI3LDMyOTkyNzg0NzQsMzQwMDUyODc2OSwyNDMwMTIyMjE2LDI2NjQ1NDM3MTUsMjM2MjA5MDIzOCwyMTkzODYyNjQ1LDI4MzUxMjMzOTYsMjgwMTEwNzQwNywzMDM1NTM1MDU4LDMxMzU3NDA4ODksMzY3ODEyNDkyMywzNTc2ODcwNTEyLDMzNDEzOTQyODUsMzM3NDM2MTcwMiwzODEwNDk2MzQzLDM5Nzc2NzUzNTYsNDI3OTA4MDI1Nyw0MDQzNjEwMTg2LDI4NzY0OTQ2MjcsMjc3NjI5MjkwNCwzMDc2NjM5MDI5LDMxMTA2NTA5NDIsMjQ3MjAxMTUzNSwyNjQwMjQzMjA0LDI0MDM3Mjg2NjUsMjE2OTMwMzA1OCwxMDAxMDg5OTk1LDg5OTgzNTU4NCw2NjY0NjQ3MzMsNjk5NDMyMTUwLDU5NzI3ODQ3LDIyNjkwNjg2MCw1MzA0MDA3NTMsMjk0OTMwNjgyLDEyNzMxNjg3ODcsMTE3Mjk2NzA2NCwxNDc1NDE4NTAxLDE1MDk0MzA0MTQsMTk0MjQzNTc3NSwyMTEwNjY3NDQ0LDE4NzYyNDE4MzMsMTY0MTgxNjIyNiwyOTEwMjE5NzY2LDI3NDMwMzQxMDksMjk3NjE1MTUyMCwzMjExNjIzMTQ3LDI1MDUyMDIxMzgsMjYwNjQ1Mzk2OSwyMzAyNjkwMjUyLDIyNjk3Mjg0NTUsMzcxMTgyOTQyMiwzNTQzNTk5MjY5LDMyNDA4OTQzOTIsMzQ3NTMxMzMzMSwzODQzNjk5MDc0LDM5NDM5MDY0NDEsNDE3ODA2MjIyOCw0MTQ0MDQ3Nzc1LDEzMDY5NjczNjYsMTEzOTc4MTcwOSwxMzc0OTg4MTEyLDE2MTA0NTk3MzksMTk3NTY4MzQzNCwyMDc2OTM1MjY1LDE3NzUyNzY5MjQsMTc0MjMxNTEyNywxMDM0ODY3OTk4LDg2NjYzNzg0NSw1NjYwMjE4OTYsODAwNDQwODM1LDkyOTg3Njk4LDE5MzE5NTA2NSw0Mjk0NTYxNjQsMzk1NDQxNzExLDE5ODQ4MTI2ODUsMjAxNzc3ODU2NiwxNzg0NjYzMTk1LDE2ODM0MDcyNDgsMTMxNTU2MjE0NSwxMDgwMDk0NjM0LDEzODM4NTYzMTEsMTU1MTAzNzg4NCwxMDEwMzk4MjksMTM1MDUwMjA2LDQzNzc1NzEyMywzMzc1NTM4NjQsMTA0MjM4NTY1Nyw4MDc5NjI2MTAsNTczODA0NzgzLDc0MjAzOTAxMiwyNTMxMDY3NDUzLDI1NjQwMzMzMzQsMjMyODgyODk3MSwyMjI3NTczMDI0LDI5MzU1NjY4NjUsMjcwMDA5OTM1NCwzMDAxNzU1NjU1LDMxNjg5MzcyMjgsMzg2ODU1MjgwNSwzOTAyNTYzMTgyLDQyMDMxODExNzEsNDEwMjk3NzkxMiwzNzM2MTY0OTM3LDM1MDE3NDE4OTAsMzI2NTQ3ODc1MSwzNDMzNzEyOTgwLDExMDYwNDE1OTEsMTM0MDQ2MzEwMCwxNTc2OTc2NjA5LDE0MDg3NDkwMzQsMjA0MzIxMTQ4MywyMDA5MTk1NDcyLDE3MDg4NDgzMzMsMTgwOTA1NDE1MCw4MzI4NzcyMzEsMTA2ODM1MTM5Niw3NjY5NDU0NjUsNTk5NzYyMzU0LDE1OTQxNzk4NywxMjY0NTQ2NjQsMzYxOTI5ODc3LDQ2MzE4MDE5MCwyNzA5MjYwODcxLDI5NDM2ODIzODAsMzE3ODEwNjk2MSwzMDA5ODc5Mzg2LDI1NzI2OTcxOTUsMjUzODY4MTE4NCwyMjM2MjI4NzMzLDIzMzY0MzQ1NTAsMzUwOTg3MTEzNSwzNzQ1MzQ1MzAwLDM0NDE4NTAzNzcsMzI3NDY2NzI2NiwzOTEwMTYxOTcxLDM4NzcxOTg2NDgsNDExMDU2ODQ4NSw0MjExODE4Nzk4LDI1OTc4MDY0NzYsMjQ5NzYwNDc0MywyMjYxMDg5MTc4LDIyOTUxMDEwNzMsMjczMzg1NjE2MCwyOTAyMDg3ODUxLDMyMDI0MzcwNDYsMjk2ODAxMTQ1MywzOTM2MjkxMjg0LDM4MzUwMzY4OTUsNDEzNjQ0MDc3MCw0MTY5NDA4MjAxLDM1MzU0ODY0NTYsMzcwMjY2NTQ1OSwzNDY3MTkyMzAyLDMyMzE3MjIyMTMsMjA1MTUxODc4MCwxOTUxMzE3MDQ3LDE3MTY4OTA0MTAsMTc1MDkwMjMwNSwxMTEzODE4Mzg0LDEyODIwNTAwNzUsMTU4NDUwNDU4MiwxMzUwMDc4OTg5LDE2ODgxMDg1Miw2NzU1NjQ2MywzNzEwNDkzMzAsNDA0MDE2NzYxLDg0MTczOTU5MiwxMDA4OTE4NTk1LDc3NTU1MDgxNCw1NDAwODA3MjUsMzk2OTU2MjM2OSwzODAxMzMyMjM0LDQwMzU0ODkwNDcsNDI2OTkwNzk5NiwzNTY5MjU1MjEzLDM2Njk0NjI1NjYsMzM2Njc1NDYxOSwzMzMyNzQwMTQ0LDI2MzEwNjU0MzMsMjQ2Mzg3OTc2MiwyMTYwMTE3MDcxLDIzOTU1ODg2NzYsMjc2NzY0NTU1NywyODY4ODk3NDA2LDMxMDIwMTE3NDcsMzA2OTA0OTk2MCwyMDIwMDg0OTcsMzM3NzgzNjIsMjcwMDQwNDg3LDUwNDQ1OTQzNiw4NzU0NTEyOTMsOTc1NjU4NjQ2LDY3NTAzOTYyNyw2NDEwMjUxNTIsMjA4NDcwNDIzMywxOTE3NTE4NTYyLDE2MTU4NjEyNDcsMTg1MTMzMjg1MiwxMTQ3NTUwNjYxLDEyNDg4MDI1MTAsMTQ4NDAwNTg0MywxNDUxMDQ0MDU2LDkzMzMwMTM3MCw5NjczMTE3MjksNzMzMTU2OTcyLDYzMjk1MzcwMywyNjAzODg5NTAsMjU5NjU5MTcsMzI4NjcxODA4LDQ5NjkwNjA1OSwxMjA2NDc3ODU4LDEyMzk0NDM3NTMsMTU0MzIwODUwMCwxNDQxOTUyNTc1LDIxNDQxNjE4MDYsMTkwODY5NDI3NywxNjc1NTc3ODgwLDE4NDI3NTk0NDMsMzYxMDM2OTIyNiwzNjQ0Mzc5NTg1LDM0MDgxMTk1MTYsMzMwNzkxNjI0Nyw0MDExMTkwNTAyLDM3NzY3Njc0NjksNDA3NzM4NDQzMiw0MjQ1NjE4NjgzLDI4MDk3NzExNTQsMjg0MjczNzA0OSwzMTQ0Mzk2NDIwLDMwNDMxNDA0OTUsMjY3MzcwNTE1MCwyNDM4MjM3NjIxLDIyMDMwMzIyMzIsMjM3MDIxMzc5NV0pLHRoaXMuX21peENvbD1uZXcgVWludDhBcnJheSgyNTYpO2Zvcih2YXIgdD0wO3Q8MjU2O3QrKyl0aGlzLl9taXhDb2xbdF09dDwxMjg/dDw8MTp0PDwxXjI3O3RoaXMuYnVmZmVyPW5ldyBVaW50OEFycmF5KDE2KSx0aGlzLmJ1ZmZlclBvc2l0aW9uPTB9cmV0dXJuIGQoZSxbe2tleToiX2V4cGFuZEtleSIsdmFsdWU6ZnVuY3Rpb24oZSl7KDAsbi51bnJlYWNoYWJsZSkoIkNhbm5vdCBjYWxsIGBfZXhwYW5kS2V5YCBvbiB0aGUgYmFzZSBjbGFzcyIpfX0se2tleToiX2RlY3J5cHQiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIHIsbixhLGk9bmV3IFVpbnQ4QXJyYXkoMTYpO2kuc2V0KGUpO2Zvcih2YXIgbz0wLHM9dGhpcy5fa2V5U2l6ZTtvPDE2OysrbywrK3MpaVtvXV49dFtzXTtmb3IodmFyIGM9dGhpcy5fY3ljbGVzT2ZSZXBldGl0aW9uLTE7Yz49MTstLWMpe3I9aVsxM10saVsxM109aVs5XSxpWzldPWlbNV0saVs1XT1pWzFdLGlbMV09cixyPWlbMTRdLG49aVsxMF0saVsxNF09aVs2XSxpWzEwXT1pWzJdLGlbNl09cixpWzJdPW4scj1pWzE1XSxuPWlbMTFdLGE9aVs3XSxpWzE1XT1pWzNdLGlbMTFdPXIsaVs3XT1uLGlbM109YTtmb3IodmFyIHU9MDt1PDE2OysrdSlpW3VdPXRoaXMuX2ludl9zW2lbdV1dO2Zvcih2YXIgbD0wLGY9MTYqYztsPDE2OysrbCwrK2YpaVtsXV49dFtmXTtmb3IodmFyIGg9MDtoPDE2O2grPTQpe3ZhciBkPXRoaXMuX21peFtpW2hdXSxwPXRoaXMuX21peFtpW2grMV1dLGc9dGhpcy5fbWl4W2lbaCsyXV0sdj10aGlzLl9taXhbaVtoKzNdXTtyPWRecD4+PjhecDw8MjReZz4+PjE2Xmc8PDE2XnY+Pj4yNF52PDw4LGlbaF09cj4+PjI0JjI1NSxpW2grMV09cj4+MTYmMjU1LGlbaCsyXT1yPj44JjI1NSxpW2grM109MjU1JnJ9fXI9aVsxM10saVsxM109aVs5XSxpWzldPWlbNV0saVs1XT1pWzFdLGlbMV09cixyPWlbMTRdLG49aVsxMF0saVsxNF09aVs2XSxpWzEwXT1pWzJdLGlbNl09cixpWzJdPW4scj1pWzE1XSxuPWlbMTFdLGE9aVs3XSxpWzE1XT1pWzNdLGlbMTFdPXIsaVs3XT1uLGlbM109YTtmb3IodmFyIHk9MDt5PDE2OysreSlpW3ldPXRoaXMuX2ludl9zW2lbeV1dLGlbeV1ePXRbeV07cmV0dXJuIGl9fSx7a2V5OiJfZW5jcnlwdCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgcixuLGEsaT10aGlzLl9zLG89bmV3IFVpbnQ4QXJyYXkoMTYpO28uc2V0KGUpO2Zvcih2YXIgcz0wO3M8MTY7KytzKW9bc11ePXRbc107Zm9yKHZhciBjPTE7Yzx0aGlzLl9jeWNsZXNPZlJlcGV0aXRpb247YysrKXtmb3IodmFyIHU9MDt1PDE2OysrdSlvW3VdPWlbb1t1XV07YT1vWzFdLG9bMV09b1s1XSxvWzVdPW9bOV0sb1s5XT1vWzEzXSxvWzEzXT1hLGE9b1syXSxuPW9bNl0sb1syXT1vWzEwXSxvWzZdPW9bMTRdLG9bMTBdPWEsb1sxNF09bixhPW9bM10sbj1vWzddLHI9b1sxMV0sb1szXT1vWzE1XSxvWzddPWEsb1sxMV09bixvWzE1XT1yO2Zvcih2YXIgbD0wO2w8MTY7bCs9NCl7dmFyIGY9b1tsKzBdLGg9b1tsKzFdLGQ9b1tsKzJdLHA9b1tsKzNdO3I9Zl5oXmRecCxvW2wrMF1ePXJedGhpcy5fbWl4Q29sW2ZeaF0sb1tsKzFdXj1yXnRoaXMuX21peENvbFtoXmRdLG9bbCsyXV49cl50aGlzLl9taXhDb2xbZF5wXSxvW2wrM11ePXJedGhpcy5fbWl4Q29sW3BeZl19Zm9yKHZhciBnPTAsdj0xNipjO2c8MTY7KytnLCsrdilvW2ddXj10W3ZdfWZvcih2YXIgeT0wO3k8MTY7Kyt5KW9beV09aVtvW3ldXTthPW9bMV0sb1sxXT1vWzVdLG9bNV09b1s5XSxvWzldPW9bMTNdLG9bMTNdPWEsYT1vWzJdLG49b1s2XSxvWzJdPW9bMTBdLG9bNl09b1sxNF0sb1sxMF09YSxvWzE0XT1uLGE9b1szXSxuPW9bN10scj1vWzExXSxvWzNdPW9bMTVdLG9bN109YSxvWzExXT1uLG9bMTVdPXI7Zm9yKHZhciBtPTAsYj10aGlzLl9rZXlTaXplO208MTY7KyttLCsrYilvW21dXj10W2JdO3JldHVybiBvfX0se2tleToiX2RlY3J5cHRCbG9jazIiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPWUubGVuZ3RoLG49dGhpcy5idWZmZXIsYT10aGlzLmJ1ZmZlclBvc2l0aW9uLGk9W10sbz10aGlzLml2LHM9MDtzPHI7KytzKWlmKG5bYV09ZVtzXSwhKCsrYTwxNikpe2Zvcih2YXIgYz10aGlzLl9kZWNyeXB0KG4sdGhpcy5fa2V5KSx1PTA7dTwxNjsrK3UpY1t1XV49b1t1XTtvPW4saS5wdXNoKGMpLG49bmV3IFVpbnQ4QXJyYXkoMTYpLGE9MH1pZih0aGlzLmJ1ZmZlcj1uLHRoaXMuYnVmZmVyTGVuZ3RoPWEsdGhpcy5pdj1vLDA9PT1pLmxlbmd0aClyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoMCk7dmFyIGw9MTYqaS5sZW5ndGg7aWYodCl7dmFyIGY9aS5hdCgtMSksaD1mWzE1XTtpZihoPD0xNil7Zm9yKHZhciBkPTE1LHA9MTYtaDtkPj1wOy0tZClpZihmW2RdIT09aCl7aD0wO2JyZWFrfWwtPWgsaVtpLmxlbmd0aC0xXT1mLnN1YmFycmF5KDAsMTYtaCl9fWZvcih2YXIgZz1uZXcgVWludDhBcnJheShsKSx2PTAseT0wLG09aS5sZW5ndGg7djxtOysrdix5Kz0xNilnLnNldChpW3ZdLHkpO3JldHVybiBnfX0se2tleToiZGVjcnlwdEJsb2NrIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciByPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTpudWxsLG49ZS5sZW5ndGgsYT10aGlzLmJ1ZmZlcixpPXRoaXMuYnVmZmVyUG9zaXRpb247aWYocil0aGlzLml2PXI7ZWxzZXtmb3IodmFyIG89MDtpPDE2JiZvPG47KytvLCsraSlhW2ldPWVbb107aWYoaTwxNilyZXR1cm4gdGhpcy5idWZmZXJMZW5ndGg9aSxuZXcgVWludDhBcnJheSgwKTt0aGlzLml2PWEsZT1lLnN1YmFycmF5KDE2KX1yZXR1cm4gdGhpcy5idWZmZXI9bmV3IFVpbnQ4QXJyYXkoMTYpLHRoaXMuYnVmZmVyTGVuZ3RoPTAsdGhpcy5kZWNyeXB0QmxvY2s9dGhpcy5fZGVjcnlwdEJsb2NrMix0aGlzLmRlY3J5cHRCbG9jayhlLHQpfX0se2tleToiZW5jcnlwdCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgcj1lLmxlbmd0aCxuPXRoaXMuYnVmZmVyLGE9dGhpcy5idWZmZXJQb3NpdGlvbixpPVtdO3R8fCh0PW5ldyBVaW50OEFycmF5KDE2KSk7Zm9yKHZhciBvPTA7bzxyOysrbylpZihuW2FdPWVbb10sISgrK2E8MTYpKXtmb3IodmFyIHM9MDtzPDE2OysrcyluW3NdXj10W3NdO3ZhciBjPXRoaXMuX2VuY3J5cHQobix0aGlzLl9rZXkpO3Q9YyxpLnB1c2goYyksbj1uZXcgVWludDhBcnJheSgxNiksYT0wfWlmKHRoaXMuYnVmZmVyPW4sdGhpcy5idWZmZXJMZW5ndGg9YSx0aGlzLml2PXQsMD09PWkubGVuZ3RoKXJldHVybiBuZXcgVWludDhBcnJheSgwKTtmb3IodmFyIHU9MTYqaS5sZW5ndGgsbD1uZXcgVWludDhBcnJheSh1KSxmPTAsaD0wLGQ9aS5sZW5ndGg7ZjxkOysrZixoKz0xNilsLnNldChpW2ZdLGgpO3JldHVybiBsfX1dKSxlfSgpLE89ZnVuY3Rpb24oZSl7byhyLGUpO3ZhciB0PWMocik7ZnVuY3Rpb24gcihlKXt2YXIgbjtyZXR1cm4gZih0aGlzLHIpLChuPXQuY2FsbCh0aGlzKSkuX2N5Y2xlc09mUmVwZXRpdGlvbj0xMCxuLl9rZXlTaXplPTE2MCxuLl9yY29uPW5ldyBVaW50OEFycmF5KFsxNDEsMSwyLDQsOCwxNiwzMiw2NCwxMjgsMjcsNTQsMTA4LDIxNiwxNzEsNzcsMTU0LDQ3LDk0LDE4OCw5OSwxOTgsMTUxLDUzLDEwNiwyMTIsMTc5LDEyNSwyNTAsMjM5LDE5NywxNDUsNTcsMTE0LDIyOCwyMTEsMTg5LDk3LDE5NCwxNTksMzcsNzQsMTQ4LDUxLDEwMiwyMDQsMTMxLDI5LDU4LDExNiwyMzIsMjAzLDE0MSwxLDIsNCw4LDE2LDMyLDY0LDEyOCwyNyw1NCwxMDgsMjE2LDE3MSw3NywxNTQsNDcsOTQsMTg4LDk5LDE5OCwxNTEsNTMsMTA2LDIxMiwxNzksMTI1LDI1MCwyMzksMTk3LDE0NSw1NywxMTQsMjI4LDIxMSwxODksOTcsMTk0LDE1OSwzNyw3NCwxNDgsNTEsMTAyLDIwNCwxMzEsMjksNTgsMTE2LDIzMiwyMDMsMTQxLDEsMiw0LDgsMTYsMzIsNjQsMTI4LDI3LDU0LDEwOCwyMTYsMTcxLDc3LDE1NCw0Nyw5NCwxODgsOTksMTk4LDE1MSw1MywxMDYsMjEyLDE3OSwxMjUsMjUwLDIzOSwxOTcsMTQ1LDU3LDExNCwyMjgsMjExLDE4OSw5NywxOTQsMTU5LDM3LDc0LDE0OCw1MSwxMDIsMjA0LDEzMSwyOSw1OCwxMTYsMjMyLDIwMywxNDEsMSwyLDQsOCwxNiwzMiw2NCwxMjgsMjcsNTQsMTA4LDIxNiwxNzEsNzcsMTU0LDQ3LDk0LDE4OCw5OSwxOTgsMTUxLDUzLDEwNiwyMTIsMTc5LDEyNSwyNTAsMjM5LDE5NywxNDUsNTcsMTE0LDIyOCwyMTEsMTg5LDk3LDE5NCwxNTksMzcsNzQsMTQ4LDUxLDEwMiwyMDQsMTMxLDI5LDU4LDExNiwyMzIsMjAzLDE0MSwxLDIsNCw4LDE2LDMyLDY0LDEyOCwyNyw1NCwxMDgsMjE2LDE3MSw3NywxNTQsNDcsOTQsMTg4LDk5LDE5OCwxNTEsNTMsMTA2LDIxMiwxNzksMTI1LDI1MCwyMzksMTk3LDE0NSw1NywxMTQsMjI4LDIxMSwxODksOTcsMTk0LDE1OSwzNyw3NCwxNDgsNTEsMTAyLDIwNCwxMzEsMjksNTgsMTE2LDIzMiwyMDMsMTQxXSksbi5fa2V5PW4uX2V4cGFuZEtleShlKSxufXJldHVybiBkKHIsW3trZXk6Il9leHBhbmRLZXkiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX3Mscj10aGlzLl9yY29uLG49bmV3IFVpbnQ4QXJyYXkoMTc2KTtuLnNldChlKTtmb3IodmFyIGE9MTYsaT0xO2E8MTc2OysraSl7dmFyIG89blthLTNdLHM9blthLTJdLGM9blthLTFdLHU9blthLTRdO289dFtvXSxzPXRbc10sYz10W2NdLHU9dFt1XSxvXj1yW2ldO2Zvcih2YXIgbD0wO2w8NDsrK2wpblthXT1vXj1uW2EtMTZdLG5bKythXT1zXj1uW2EtMTZdLG5bKythXT1jXj1uW2EtMTZdLG5bKythXT11Xj1uW2EtMTZdLGErK31yZXR1cm4gbn19XSkscn0oeCk7dC5BRVMxMjhDaXBoZXI9Tzt2YXIgQT1mdW5jdGlvbihlKXtvKHIsZSk7dmFyIHQ9YyhyKTtmdW5jdGlvbiByKGUpe3ZhciBuO3JldHVybiBmKHRoaXMsciksKG49dC5jYWxsKHRoaXMpKS5fY3ljbGVzT2ZSZXBldGl0aW9uPTE0LG4uX2tleVNpemU9MjI0LG4uX2tleT1uLl9leHBhbmRLZXkoZSksbn1yZXR1cm4gZChyLFt7a2V5OiJfZXhwYW5kS2V5Iix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLl9zLHI9bmV3IFVpbnQ4QXJyYXkoMjQwKTtyLnNldChlKTtmb3IodmFyIG4sYSxpLG8scz0xLGM9MzIsdT0xO2M8MjQwOysrdSl7YyUzMj09MTY/KG49dFtuXSxhPXRbYV0saT10W2ldLG89dFtvXSk6YyUzMj09MCYmKG49cltjLTNdLGE9cltjLTJdLGk9cltjLTFdLG89cltjLTRdLG49dFtuXSxhPXRbYV0saT10W2ldLG89dFtvXSxuXj1zLChzPDw9MSk+PTI1NiYmKHM9MjU1JigyN15zKSkpO2Zvcih2YXIgbD0wO2w8NDsrK2wpcltjXT1uXj1yW2MtMzJdLHJbKytjXT1hXj1yW2MtMzJdLHJbKytjXT1pXj1yW2MtMzJdLHJbKytjXT1vXj1yW2MtMzJdLGMrK31yZXR1cm4gcn19XSkscn0oeCk7dC5BRVMyNTZDaXBoZXI9QTt2YXIgQz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXtmKHRoaXMsZSl9cmV0dXJuIGQoZSxbe2tleToiY2hlY2tPd25lclBhc3N3b3JkIix2YWx1ZTpmdW5jdGlvbihlLHQscixhKXt2YXIgaT1uZXcgVWludDhBcnJheShlLmxlbmd0aCs1Nik7aS5zZXQoZSwwKSxpLnNldCh0LGUubGVuZ3RoKSxpLnNldChyLGUubGVuZ3RoK3QubGVuZ3RoKTt2YXIgbz1iKGksMCxpLmxlbmd0aCk7cmV0dXJuKDAsbi5pc0FycmF5RXF1YWwpKG8sYSl9fSx7a2V5OiJjaGVja1VzZXJQYXNzd29yZCIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIpe3ZhciBhPW5ldyBVaW50OEFycmF5KGUubGVuZ3RoKzgpO2Euc2V0KGUsMCksYS5zZXQodCxlLmxlbmd0aCk7dmFyIGk9YihhLDAsYS5sZW5ndGgpO3JldHVybigwLG4uaXNBcnJheUVxdWFsKShpLHIpfX0se2tleToiZ2V0T3duZXJLZXkiLHZhbHVlOmZ1bmN0aW9uKGUsdCxyLG4pe3ZhciBhPW5ldyBVaW50OEFycmF5KGUubGVuZ3RoKzU2KTthLnNldChlLDApLGEuc2V0KHQsZS5sZW5ndGgpLGEuc2V0KHIsZS5sZW5ndGgrdC5sZW5ndGgpO3ZhciBpPWIoYSwwLGEubGVuZ3RoKTtyZXR1cm4gbmV3IEEoaSkuZGVjcnlwdEJsb2NrKG4sITEsbmV3IFVpbnQ4QXJyYXkoMTYpKX19LHtrZXk6ImdldFVzZXJLZXkiLHZhbHVlOmZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1uZXcgVWludDhBcnJheShlLmxlbmd0aCs4KTtuLnNldChlLDApLG4uc2V0KHQsZS5sZW5ndGgpO3ZhciBhPWIobiwwLG4ubGVuZ3RoKTtyZXR1cm4gbmV3IEEoYSkuZGVjcnlwdEJsb2NrKHIsITEsbmV3IFVpbnQ4QXJyYXkoMTYpKX19XSksZX0oKTt0LlBERjE3PUM7dmFyIEY9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCxyKXtmb3IodmFyIG49Yih0LDAsdC5sZW5ndGgpLnN1YmFycmF5KDAsMzIpLGE9WzBdLGk9MDtpPDY0fHxhLmF0KC0xKT5pLTMyOyl7dmFyIG89ZS5sZW5ndGgrbi5sZW5ndGgrci5sZW5ndGgscz1uZXcgVWludDhBcnJheShvKSxjPTA7cy5zZXQoZSxjKSxjKz1lLmxlbmd0aCxzLnNldChuLGMpLGMrPW4ubGVuZ3RoLHMuc2V0KHIsYyk7Zm9yKHZhciB1PW5ldyBVaW50OEFycmF5KDY0Km8pLGw9MCxmPTA7bDw2NDtsKyssZis9byl1LnNldChzLGYpO3ZhciBoPShhPW5ldyBPKG4uc3ViYXJyYXkoMCwxNikpLmVuY3J5cHQodSxuLnN1YmFycmF5KDE2LDMyKSkpLnNsaWNlKDAsMTYpLnJlZHVjZSgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSt0fSksMCklMzswPT09aD9uPWIoYSwwLGEubGVuZ3RoKToxPT09aD9uPWsoYSwwLGEubGVuZ3RoKToyPT09aCYmKG49dyhhLDAsYS5sZW5ndGgpKSxpKyt9cmV0dXJuIG4uc3ViYXJyYXkoMCwzMil9cmV0dXJuIGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe2YodGhpcyx0KX1yZXR1cm4gZCh0LFt7a2V5OiJoYXNoIix2YWx1ZTpmdW5jdGlvbih0LHIsbil7cmV0dXJuIGUodCxyLG4pfX0se2tleToiY2hlY2tPd25lclBhc3N3b3JkIix2YWx1ZTpmdW5jdGlvbih0LHIsYSxpKXt2YXIgbz1uZXcgVWludDhBcnJheSh0Lmxlbmd0aCs1Nik7by5zZXQodCwwKSxvLnNldChyLHQubGVuZ3RoKSxvLnNldChhLHQubGVuZ3RoK3IubGVuZ3RoKTt2YXIgcz1lKHQsbyxhKTtyZXR1cm4oMCxuLmlzQXJyYXlFcXVhbCkocyxpKX19LHtrZXk6ImNoZWNrVXNlclBhc3N3b3JkIix2YWx1ZTpmdW5jdGlvbih0LHIsYSl7dmFyIGk9bmV3IFVpbnQ4QXJyYXkodC5sZW5ndGgrOCk7aS5zZXQodCwwKSxpLnNldChyLHQubGVuZ3RoKTt2YXIgbz1lKHQsaSxbXSk7cmV0dXJuKDAsbi5pc0FycmF5RXF1YWwpKG8sYSl9fSx7a2V5OiJnZXRPd25lcktleSIsdmFsdWU6ZnVuY3Rpb24odCxyLG4sYSl7dmFyIGk9bmV3IFVpbnQ4QXJyYXkodC5sZW5ndGgrNTYpO2kuc2V0KHQsMCksaS5zZXQocix0Lmxlbmd0aCksaS5zZXQobix0Lmxlbmd0aCtyLmxlbmd0aCk7dmFyIG89ZSh0LGksbik7cmV0dXJuIG5ldyBBKG8pLmRlY3J5cHRCbG9jayhhLCExLG5ldyBVaW50OEFycmF5KDE2KSl9fSx7a2V5OiJnZXRVc2VyS2V5Iix2YWx1ZTpmdW5jdGlvbih0LHIsbil7dmFyIGE9bmV3IFVpbnQ4QXJyYXkodC5sZW5ndGgrOCk7YS5zZXQodCwwKSxhLnNldChyLHQubGVuZ3RoKTt2YXIgaT1lKHQsYSxbXSk7cmV0dXJuIG5ldyBBKGkpLmRlY3J5cHRCbG9jayhuLCExLG5ldyBVaW50OEFycmF5KDE2KSl9fV0pLHR9KCl9KCk7dC5QREYyMD1GO3ZhciBQPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0LHIpe2YodGhpcyxlKSx0aGlzLlN0cmluZ0NpcGhlckNvbnN0cnVjdG9yPXQsdGhpcy5TdHJlYW1DaXBoZXJDb25zdHJ1Y3Rvcj1yfXJldHVybiBkKGUsW3trZXk6ImNyZWF0ZVN0cmVhbSIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgcj1uZXcgdGhpcy5TdHJlYW1DaXBoZXJDb25zdHJ1Y3RvcjtyZXR1cm4gbmV3IGkuRGVjcnlwdFN0cmVhbShlLHQsKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHIuZGVjcnlwdEJsb2NrKGUsdCl9KSl9fSx7a2V5OiJkZWNyeXB0U3RyaW5nIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1uZXcgdGhpcy5TdHJpbmdDaXBoZXJDb25zdHJ1Y3RvcixyPSgwLG4uc3RyaW5nVG9CeXRlcykoZSk7cmV0dXJuIHI9dC5kZWNyeXB0QmxvY2sociwhMCksKDAsbi5ieXRlc1RvU3RyaW5nKShyKX19LHtrZXk6ImVuY3J5cHRTdHJpbmciLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PW5ldyB0aGlzLlN0cmluZ0NpcGhlckNvbnN0cnVjdG9yO2lmKHQgaW5zdGFuY2VvZiB4KXt2YXIgcj0xNi1lLmxlbmd0aCUxNjtlKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHIpLnJlcGVhdChyKTt2YXIgYT1uZXcgVWludDhBcnJheSgxNik7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBjcnlwdG8pY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhhKTtlbHNlIGZvcih2YXIgaT0wO2k8MTY7aSsrKWFbaV09TWF0aC5mbG9vcigyNTYqTWF0aC5yYW5kb20oKSk7dmFyIG89KDAsbi5zdHJpbmdUb0J5dGVzKShlKTtvPXQuZW5jcnlwdChvLGEpO3ZhciBzPW5ldyBVaW50OEFycmF5KDE2K28ubGVuZ3RoKTtyZXR1cm4gcy5zZXQoYSkscy5zZXQobywxNiksKDAsbi5ieXRlc1RvU3RyaW5nKShzKX12YXIgYz0oMCxuLnN0cmluZ1RvQnl0ZXMpKGUpO3JldHVybiBjPXQuZW5jcnlwdChjKSwoMCxuLmJ5dGVzVG9TdHJpbmcpKGMpfX1dKSxlfSgpLFQ9ZnVuY3Rpb24oKXt2YXIgZT1uZXcgVWludDhBcnJheShbNDAsMTkxLDc4LDk0LDc4LDExNywxMzgsNjUsMTAwLDAsNzgsODYsMjU1LDI1MCwxLDgsNDYsNDYsMCwxODIsMjA4LDEwNCw2MiwxMjgsNDcsMTIsMTY5LDI1NCwxMDAsODMsMTA1LDEyMl0pO2Z1bmN0aW9uIHQodCxyLG4sYSxpLG8scyxjKXt2YXIgdSxsLGY9NDArbi5sZW5ndGgrdC5sZW5ndGgsaD1uZXcgVWludDhBcnJheShmKSxkPTA7aWYocilmb3IobD1NYXRoLm1pbigzMixyLmxlbmd0aCk7ZDxsOysrZCloW2RdPXJbZF07Zm9yKHU9MDtkPDMyOyloW2QrK109ZVt1KytdO2Zvcih1PTAsbD1uLmxlbmd0aDt1PGw7Kyt1KWhbZCsrXT1uW3VdO2ZvcihoW2QrK109MjU1JmksaFtkKytdPWk+PjgmMjU1LGhbZCsrXT1pPj4xNiYyNTUsaFtkKytdPWk+Pj4yNCYyNTUsdT0wLGw9dC5sZW5ndGg7dTxsOysrdSloW2QrK109dFt1XTtvPj00JiYhYyYmKGhbZCsrXT0yNTUsaFtkKytdPTI1NSxoW2QrK109MjU1LGhbZCsrXT0yNTUpO3ZhciBnPXkoaCwwLGQpLHY9cz4+MztpZihvPj0zKWZvcih1PTA7dTw1MDsrK3UpZz15KGcsMCx2KTt2YXIgbSxiPWcuc3ViYXJyYXkoMCx2KTtpZihvPj0zKXtmb3IoZD0wO2Q8MzI7KytkKWhbZF09ZVtkXTtmb3IodT0wLGw9dC5sZW5ndGg7dTxsOysrdSloW2QrK109dFt1XTttPW5ldyBwKGIpLmVuY3J5cHRCbG9jayh5KGgsMCxkKSksbD1iLmxlbmd0aDt2YXIgdz1uZXcgVWludDhBcnJheShsKTtmb3IodT0xO3U8PTE5OysrdSl7Zm9yKHZhciBrPTA7azxsOysrayl3W2tdPWJba11edTttPW5ldyBwKHcpLmVuY3J5cHRCbG9jayhtKX1mb3IodT0wLGw9bS5sZW5ndGg7dTxsOysrdSlpZihhW3VdIT09bVt1XSlyZXR1cm4gbnVsbH1lbHNlIGZvcih1PTAsbD0obT1uZXcgcChiKS5lbmNyeXB0QmxvY2soZSkpLmxlbmd0aDt1PGw7Kyt1KWlmKGFbdV0hPT1tW3VdKXJldHVybiBudWxsO3JldHVybiBifXZhciByPWEuTmFtZS5nZXQoIklkZW50aXR5Iik7ZnVuY3Rpb24gaShlLHQscil7dmFyIG4sYT1hcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXSYmYXJndW1lbnRzWzNdLGk9bmV3IFVpbnQ4QXJyYXkoci5sZW5ndGgrOSksbz1yLmxlbmd0aDtmb3Iobj0wO248bzsrK24paVtuXT1yW25dO3JldHVybiBpW24rK109MjU1JmUsaVtuKytdPWU+PjgmMjU1LGlbbisrXT1lPj4xNiYyNTUsaVtuKytdPTI1NSZ0LGlbbisrXT10Pj44JjI1NSxhJiYoaVtuKytdPTExNSxpW24rK109NjUsaVtuKytdPTEwOCxpW24rK109ODQpLHkoaSwwLG4pLnN1YmFycmF5KDAsTWF0aC5taW4oci5sZW5ndGgrNSwxNikpfWZ1bmN0aW9uIG8oZSx0LHIsbyxzKXtpZighKHQgaW5zdGFuY2VvZiBhLk5hbWUpKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJJbnZhbGlkIGNyeXB0IGZpbHRlciBuYW1lLiIpO3ZhciBjLHU9ZS5nZXQodC5uYW1lKTtpZihudWxsIT11JiYoYz11LmdldCgiQ0ZNIikpLCFjfHwiTm9uZSI9PT1jLm5hbWUpcmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBTfTtpZigiVjIiPT09Yy5uYW1lKXJldHVybiBmdW5jdGlvbigpe3JldHVybiBuZXcgcChpKHIsbyxzLCExKSl9O2lmKCJBRVNWMiI9PT1jLm5hbWUpcmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBPKGkocixvLHMsITApKX07aWYoIkFFU1YzIj09PWMubmFtZSlyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEEocyl9O3Rocm93IG5ldyBuLkZvcm1hdEVycm9yKCJVbmtub3duIGNyeXB0byBtZXRob2QiKX12YXIgcz1mdW5jdGlvbigpe2Z1bmN0aW9uIHMoaSxvLGMpe2YodGhpcyxzKTt2YXIgdT1pLmdldCgiRmlsdGVyIik7aWYoISgwLGEuaXNOYW1lKSh1LCJTdGFuZGFyZCIpKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJ1bmtub3duIGVuY3J5cHRpb24gbWV0aG9kIik7dGhpcy5maWx0ZXJOYW1lPXUubmFtZSx0aGlzLmRpY3Q9aTt2YXIgbD1pLmdldCgiViIpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGwpfHwxIT09bCYmMiE9PWwmJjQhPT1sJiY1IT09bCl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigidW5zdXBwb3J0ZWQgZW5jcnlwdGlvbiBhbGdvcml0aG0iKTt0aGlzLmFsZ29yaXRobT1sO3ZhciBoPWkuZ2V0KCJMZW5ndGgiKTtpZighaClpZihsPD0zKWg9NDA7ZWxzZXt2YXIgZD1pLmdldCgiQ0YiKSxnPWkuZ2V0KCJTdG1GIik7aWYoZCBpbnN0YW5jZW9mIGEuRGljdCYmZyBpbnN0YW5jZW9mIGEuTmFtZSl7ZC5zdXBwcmVzc0VuY3J5cHRpb249ITA7dmFyIHY9ZC5nZXQoZy5uYW1lKTsoaD12JiZ2LmdldCgiTGVuZ3RoIil8fDEyOCk8NDAmJihoPDw9Myl9fWlmKCFOdW1iZXIuaXNJbnRlZ2VyKGgpfHxoPDQwfHxoJTghPTApdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoImludmFsaWQga2V5IGxlbmd0aCIpO3ZhciBtPSgwLG4uc3RyaW5nVG9CeXRlcykoaS5nZXQoIk8iKSkuc3ViYXJyYXkoMCwzMiksYj0oMCxuLnN0cmluZ1RvQnl0ZXMpKGkuZ2V0KCJVIikpLnN1YmFycmF5KDAsMzIpLHc9aS5nZXQoIlAiKSxrPWkuZ2V0KCJSIiksUz0oND09PWx8fDU9PT1sKSYmITEhPT1pLmdldCgiRW5jcnlwdE1ldGFkYXRhIik7dGhpcy5lbmNyeXB0TWV0YWRhdGE9Uzt2YXIgeCxPLEE9KDAsbi5zdHJpbmdUb0J5dGVzKShvKTtpZihjKXtpZig2PT09ayl0cnl7Yz0oMCxuLnV0ZjhTdHJpbmdUb1N0cmluZykoYyl9Y2F0Y2goZSl7KDAsbi53YXJuKSgiQ2lwaGVyVHJhbnNmb3JtRmFjdG9yeTogVW5hYmxlIHRvIGNvbnZlcnQgVVRGOCBlbmNvZGVkIHBhc3N3b3JkLiIpfXg9KDAsbi5zdHJpbmdUb0J5dGVzKShjKX1pZig1IT09bClPPXQoQSx4LG0sYix3LGssaCxTKTtlbHNle3ZhciBQPSgwLG4uc3RyaW5nVG9CeXRlcykoaS5nZXQoIk8iKSkuc3ViYXJyYXkoMzIsNDApLFQ9KDAsbi5zdHJpbmdUb0J5dGVzKShpLmdldCgiTyIpKS5zdWJhcnJheSg0MCw0OCksST0oMCxuLnN0cmluZ1RvQnl0ZXMpKGkuZ2V0KCJVIikpLnN1YmFycmF5KDAsNDgpLEU9KDAsbi5zdHJpbmdUb0J5dGVzKShpLmdldCgiVSIpKS5zdWJhcnJheSgzMiw0MCksaj0oMCxuLnN0cmluZ1RvQnl0ZXMpKGkuZ2V0KCJVIikpLnN1YmFycmF5KDQwLDQ4KSxNPSgwLG4uc3RyaW5nVG9CeXRlcykoaS5nZXQoIk9FIikpLF89KDAsbi5zdHJpbmdUb0J5dGVzKShpLmdldCgiVUUiKSk7KDAsbi5zdHJpbmdUb0J5dGVzKShpLmdldCgiUGVybXMiKSksTz1mdW5jdGlvbihlLHQscixuLGEsaSxvLHMsYyx1LGwsZil7aWYodCl7dmFyIGg9TWF0aC5taW4oMTI3LHQubGVuZ3RoKTt0PXQuc3ViYXJyYXkoMCxoKX1lbHNlIHQ9W107dmFyIGQ7cmV0dXJuKGQ9Nj09PWU/bmV3IEY6bmV3IEMpLmNoZWNrVXNlclBhc3N3b3JkKHQscyxvKT9kLmdldFVzZXJLZXkodCxjLGwpOnQubGVuZ3RoJiZkLmNoZWNrT3duZXJQYXNzd29yZCh0LG4saSxyKT9kLmdldE93bmVyS2V5KHQsYSxpLHUpOm51bGx9KGsseCxtLFAsVCxJLGIsRSxqLE0sXyl9aWYoIU8mJiFjKXRocm93IG5ldyBuLlBhc3N3b3JkRXhjZXB0aW9uKCJObyBwYXNzd29yZCBnaXZlbiIsbi5QYXNzd29yZFJlc3BvbnNlcy5ORUVEX1BBU1NXT1JEKTtpZighTyYmYyl7dmFyIEw9ZnVuY3Rpb24odCxyLG4sYSl7Zm9yKHZhciBpPW5ldyBVaW50OEFycmF5KDMyKSxvPTAscz1NYXRoLm1pbigzMix0Lmxlbmd0aCk7bzxzOysrbylpW29dPXRbb107Zm9yKHZhciBjPTA7bzwzMjspaVtvKytdPWVbYysrXTt2YXIgdSxsPXkoaSwwLG8pLGY9YT4+MztpZihuPj0zKWZvcihjPTA7Yzw1MDsrK2MpbD15KGwsMCxsLmxlbmd0aCk7aWYobj49Myl7dT1yO3ZhciBoPW5ldyBVaW50OEFycmF5KGYpO2ZvcihjPTE5O2M+PTA7Yy0tKXtmb3IodmFyIGQ9MDtkPGY7KytkKWhbZF09bFtkXV5jO3U9bmV3IHAoaCkuZW5jcnlwdEJsb2NrKHUpfX1lbHNlIHU9bmV3IHAobC5zdWJhcnJheSgwLGYpKS5lbmNyeXB0QmxvY2socik7cmV0dXJuIHV9KHgsbSxrLGgpO089dChBLEwsbSxiLHcsayxoLFMpfWlmKCFPKXRocm93IG5ldyBuLlBhc3N3b3JkRXhjZXB0aW9uKCJJbmNvcnJlY3QgUGFzc3dvcmQiLG4uUGFzc3dvcmRSZXNwb25zZXMuSU5DT1JSRUNUX1BBU1NXT1JEKTtpZih0aGlzLmVuY3J5cHRpb25LZXk9TyxsPj00KXt2YXIgUj1pLmdldCgiQ0YiKTtSIGluc3RhbmNlb2YgYS5EaWN0JiYoUi5zdXBwcmVzc0VuY3J5cHRpb249ITApLHRoaXMuY2Y9Uix0aGlzLnN0bWY9aS5nZXQoIlN0bUYiKXx8cix0aGlzLnN0cmY9aS5nZXQoIlN0ckYiKXx8cix0aGlzLmVmZj1pLmdldCgiRUZGIil8fHRoaXMuc3RtZn19cmV0dXJuIGQocyxbe2tleToiY3JlYXRlQ2lwaGVyVHJhbnNmb3JtIix2YWx1ZTpmdW5jdGlvbihlLHQpe2lmKDQ9PT10aGlzLmFsZ29yaXRobXx8NT09PXRoaXMuYWxnb3JpdGhtKXJldHVybiBuZXcgUChvKHRoaXMuY2YsdGhpcy5zdHJmLGUsdCx0aGlzLmVuY3J5cHRpb25LZXkpLG8odGhpcy5jZix0aGlzLnN0bWYsZSx0LHRoaXMuZW5jcnlwdGlvbktleSkpO3ZhciByPWkoZSx0LHRoaXMuZW5jcnlwdGlvbktleSwhMSksbj1mdW5jdGlvbigpe3JldHVybiBuZXcgcChyKX07cmV0dXJuIG5ldyBQKG4sbil9fV0pLHN9KCk7cmV0dXJuIHN9KCk7dC5DaXBoZXJUcmFuc2Zvcm1GYWN0b3J5PVR9LChlLHQscik9PntmdW5jdGlvbiBuKGUpe3JldHVybiBuPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSxuKGUpfWZ1bmN0aW9uIGEoZSx0KXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIGE9dFtyXTthLmVudW1lcmFibGU9YS5lbnVtZXJhYmxlfHwhMSxhLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gYSYmKGEud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCh2b2lkIDAsaT1mdW5jdGlvbihlLHQpe2lmKCJvYmplY3QiIT09bihlKXx8bnVsbD09PWUpcmV0dXJuIGU7dmFyIHI9ZVtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PXIpe3ZhciBhPXIuY2FsbChlLCJzdHJpbmciKTtpZigib2JqZWN0IiE9PW4oYSkpcmV0dXJuIGE7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4gU3RyaW5nKGUpfShhLmtleSksInN5bWJvbCI9PT1uKGkpP2k6U3RyaW5nKGkpKSxhKX12YXIgaX1mdW5jdGlvbiBpKGUsdCl7cmV0dXJuIGk9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5fX3Byb3RvX189dCxlfSxpKGUsdCl9ZnVuY3Rpb24gbyhlKXtyZXR1cm4gbz1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihlKXtyZXR1cm4gZS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihlKX0sbyhlKX1PYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5EZWNyeXB0U3RyZWFtPXZvaWQgMDt2YXIgcz1mdW5jdGlvbihlKXshZnVuY3Rpb24oZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksdCYmaShlLHQpfShsLGUpO3ZhciB0LHIscyxjLHU9KHM9bCxjPWZ1bmN0aW9uKCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3QpcmV0dXJuITE7aWYoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSwoZnVuY3Rpb24oKXt9KSkpLCEwfWNhdGNoKGUpe3JldHVybiExfX0oKSxmdW5jdGlvbigpe3ZhciBlLHQ9byhzKTtpZihjKXt2YXIgcj1vKHRoaXMpLmNvbnN0cnVjdG9yO2U9UmVmbGVjdC5jb25zdHJ1Y3QodCxhcmd1bWVudHMscil9ZWxzZSBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBmdW5jdGlvbihlLHQpe2lmKHQmJigib2JqZWN0Ij09PW4odCl8fCJmdW5jdGlvbiI9PXR5cGVvZiB0KSlyZXR1cm4gdDtpZih2b2lkIDAhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKHZvaWQgMD09PWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZX0oZSl9KHRoaXMsZSl9KTtmdW5jdGlvbiBsKGUsdCxyKXt2YXIgbjtyZXR1cm4gZnVuY3Rpb24oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxsKSwobj11LmNhbGwodGhpcyx0KSkuc3RyPWUsbi5kaWN0PWUuZGljdCxuLmRlY3J5cHQ9cixuLm5leHRDaHVuaz1udWxsLG4uaW5pdGlhbGl6ZWQ9ITEsbn1yZXR1cm4gdD1sLChyPVt7a2V5OiJyZWFkQmxvY2siLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU7aWYodGhpcy5pbml0aWFsaXplZD9lPXRoaXMubmV4dENodW5rOihlPXRoaXMuc3RyLmdldEJ5dGVzKDUxMiksdGhpcy5pbml0aWFsaXplZD0hMCksZSYmMCE9PWUubGVuZ3RoKXt0aGlzLm5leHRDaHVuaz10aGlzLnN0ci5nZXRCeXRlcyg1MTIpO3ZhciB0PXRoaXMubmV4dENodW5rJiZ0aGlzLm5leHRDaHVuay5sZW5ndGg+MDtlPSgwLHRoaXMuZGVjcnlwdCkoZSwhdCk7dmFyIHI9dGhpcy5idWZmZXJMZW5ndGgsbj1yK2UubGVuZ3RoO3RoaXMuZW5zdXJlQnVmZmVyKG4pLnNldChlLHIpLHRoaXMuYnVmZmVyTGVuZ3RoPW59ZWxzZSB0aGlzLmVvZj0hMH19XSkmJmEodC5wcm90b3R5cGUsciksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksbH0ocigxNDgpLkRlY29kZVN0cmVhbSk7dC5EZWNyeXB0U3RyZWFtPXN9LChlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5DYXRhbG9nPXZvaWQgMDt2YXIgbj1yKDEzNSksYT1yKDIpLGk9cigxMzQpLG89cigxOTkpLHM9cigxMzYpLGM9cigyMDApLHU9cigxNDMpLGw9cigyMDEpLGY9cigxODgpLGg9cigyMDIpLGQ9cigyMDMpO2Z1bmN0aW9uIHAoZSl7cmV0dXJuIHA9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGV9LHAoZSl9ZnVuY3Rpb24gZygpe2c9ZnVuY3Rpb24oKXtyZXR1cm4gZX07dmFyIGU9e30sdD1PYmplY3QucHJvdG90eXBlLHI9dC5oYXNPd25Qcm9wZXJ0eSxuPU9iamVjdC5kZWZpbmVQcm9wZXJ0eXx8ZnVuY3Rpb24oZSx0LHIpe2VbdF09ci52YWx1ZX0sYT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sP1N5bWJvbDp7fSxpPWEuaXRlcmF0b3J8fCJAQGl0ZXJhdG9yIixvPWEuYXN5bmNJdGVyYXRvcnx8IkBAYXN5bmNJdGVyYXRvciIscz1hLnRvU3RyaW5nVGFnfHwiQEB0b1N0cmluZ1RhZyI7ZnVuY3Rpb24gYyhlLHQscil7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOnIsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KSxlW3RdfXRyeXtjKHt9LCIiKX1jYXRjaChlKXtjPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZVt0XT1yfX1mdW5jdGlvbiB1KGUsdCxyLGEpe3ZhciBpPXQmJnQucHJvdG90eXBlIGluc3RhbmNlb2YgaD90Omgsbz1PYmplY3QuY3JlYXRlKGkucHJvdG90eXBlKSxzPW5ldyBGKGF8fFtdKTtyZXR1cm4gbihvLCJfaW52b2tlIix7dmFsdWU6eChlLHIscyl9KSxvfWZ1bmN0aW9uIGwoZSx0LHIpe3RyeXtyZXR1cm57dHlwZToibm9ybWFsIixhcmc6ZS5jYWxsKHQscil9fWNhdGNoKGUpe3JldHVybnt0eXBlOiJ0aHJvdyIsYXJnOmV9fX1lLndyYXA9dTt2YXIgZj17fTtmdW5jdGlvbiBoKCl7fWZ1bmN0aW9uIGQoKXt9ZnVuY3Rpb24gdigpe312YXIgeT17fTtjKHksaSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKTt2YXIgbT1PYmplY3QuZ2V0UHJvdG90eXBlT2YsYj1tJiZtKG0oUChbXSkpKTtiJiZiIT09dCYmci5jYWxsKGIsaSkmJih5PWIpO3ZhciB3PXYucHJvdG90eXBlPWgucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoeSk7ZnVuY3Rpb24gayhlKXtbIm5leHQiLCJ0aHJvdyIsInJldHVybiJdLmZvckVhY2goKGZ1bmN0aW9uKHQpe2MoZSx0LChmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5faW52b2tlKHQsZSl9KSl9KSl9ZnVuY3Rpb24gUyhlLHQpe2Z1bmN0aW9uIGEobixpLG8scyl7dmFyIGM9bChlW25dLGUsaSk7aWYoInRocm93IiE9PWMudHlwZSl7dmFyIHU9Yy5hcmcsZj11LnZhbHVlO3JldHVybiBmJiYib2JqZWN0Ij09cChmKSYmci5jYWxsKGYsIl9fYXdhaXQiKT90LnJlc29sdmUoZi5fX2F3YWl0KS50aGVuKChmdW5jdGlvbihlKXthKCJuZXh0IixlLG8scyl9KSwoZnVuY3Rpb24oZSl7YSgidGhyb3ciLGUsbyxzKX0pKTp0LnJlc29sdmUoZikudGhlbigoZnVuY3Rpb24oZSl7dS52YWx1ZT1lLG8odSl9KSwoZnVuY3Rpb24oZSl7cmV0dXJuIGEoInRocm93IixlLG8scyl9KSl9cyhjLmFyZyl9dmFyIGk7bih0aGlzLCJfaW52b2tlIix7dmFsdWU6ZnVuY3Rpb24oZSxyKXtmdW5jdGlvbiBuKCl7cmV0dXJuIG5ldyB0KChmdW5jdGlvbih0LG4pe2EoZSxyLHQsbil9KSl9cmV0dXJuIGk9aT9pLnRoZW4obixuKTpuKCl9fSl9ZnVuY3Rpb24geChlLHQscil7dmFyIG49InN1c3BlbmRlZFN0YXJ0IjtyZXR1cm4gZnVuY3Rpb24oYSxpKXtpZigiZXhlY3V0aW5nIj09PW4pdGhyb3cgbmV3IEVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nIik7aWYoImNvbXBsZXRlZCI9PT1uKXtpZigidGhyb3ciPT09YSl0aHJvdyBpO3JldHVybnt2YWx1ZTp2b2lkIDAsZG9uZTohMH19Zm9yKHIubWV0aG9kPWEsci5hcmc9aTs7KXt2YXIgbz1yLmRlbGVnYXRlO2lmKG8pe3ZhciBzPU8obyxyKTtpZihzKXtpZihzPT09Ziljb250aW51ZTtyZXR1cm4gc319aWYoIm5leHQiPT09ci5tZXRob2Qpci5zZW50PXIuX3NlbnQ9ci5hcmc7ZWxzZSBpZigidGhyb3ciPT09ci5tZXRob2Qpe2lmKCJzdXNwZW5kZWRTdGFydCI9PT1uKXRocm93IG49ImNvbXBsZXRlZCIsci5hcmc7ci5kaXNwYXRjaEV4Y2VwdGlvbihyLmFyZyl9ZWxzZSJyZXR1cm4iPT09ci5tZXRob2QmJnIuYWJydXB0KCJyZXR1cm4iLHIuYXJnKTtuPSJleGVjdXRpbmciO3ZhciBjPWwoZSx0LHIpO2lmKCJub3JtYWwiPT09Yy50eXBlKXtpZihuPXIuZG9uZT8iY29tcGxldGVkIjoic3VzcGVuZGVkWWllbGQiLGMuYXJnPT09Ziljb250aW51ZTtyZXR1cm57dmFsdWU6Yy5hcmcsZG9uZTpyLmRvbmV9fSJ0aHJvdyI9PT1jLnR5cGUmJihuPSJjb21wbGV0ZWQiLHIubWV0aG9kPSJ0aHJvdyIsci5hcmc9Yy5hcmcpfX19ZnVuY3Rpb24gTyhlLHQpe3ZhciByPXQubWV0aG9kLG49ZS5pdGVyYXRvcltyXTtpZih2b2lkIDA9PT1uKXJldHVybiB0LmRlbGVnYXRlPW51bGwsInRocm93Ij09PXImJmUuaXRlcmF0b3IucmV0dXJuJiYodC5tZXRob2Q9InJldHVybiIsdC5hcmc9dm9pZCAwLE8oZSx0KSwidGhyb3ciPT09dC5tZXRob2QpfHwicmV0dXJuIiE9PXImJih0Lm1ldGhvZD0idGhyb3ciLHQuYXJnPW5ldyBUeXBlRXJyb3IoIlRoZSBpdGVyYXRvciBkb2VzIG5vdCBwcm92aWRlIGEgJyIrcisiJyBtZXRob2QiKSksZjt2YXIgYT1sKG4sZS5pdGVyYXRvcix0LmFyZyk7aWYoInRocm93Ij09PWEudHlwZSlyZXR1cm4gdC5tZXRob2Q9InRocm93Iix0LmFyZz1hLmFyZyx0LmRlbGVnYXRlPW51bGwsZjt2YXIgaT1hLmFyZztyZXR1cm4gaT9pLmRvbmU/KHRbZS5yZXN1bHROYW1lXT1pLnZhbHVlLHQubmV4dD1lLm5leHRMb2MsInJldHVybiIhPT10Lm1ldGhvZCYmKHQubWV0aG9kPSJuZXh0Iix0LmFyZz12b2lkIDApLHQuZGVsZWdhdGU9bnVsbCxmKTppOih0Lm1ldGhvZD0idGhyb3ciLHQuYXJnPW5ldyBUeXBlRXJyb3IoIml0ZXJhdG9yIHJlc3VsdCBpcyBub3QgYW4gb2JqZWN0IiksdC5kZWxlZ2F0ZT1udWxsLGYpfWZ1bmN0aW9uIEEoZSl7dmFyIHQ9e3RyeUxvYzplWzBdfTsxIGluIGUmJih0LmNhdGNoTG9jPWVbMV0pLDIgaW4gZSYmKHQuZmluYWxseUxvYz1lWzJdLHQuYWZ0ZXJMb2M9ZVszXSksdGhpcy50cnlFbnRyaWVzLnB1c2godCl9ZnVuY3Rpb24gQyhlKXt2YXIgdD1lLmNvbXBsZXRpb258fHt9O3QudHlwZT0ibm9ybWFsIixkZWxldGUgdC5hcmcsZS5jb21wbGV0aW9uPXR9ZnVuY3Rpb24gRihlKXt0aGlzLnRyeUVudHJpZXM9W3t0cnlMb2M6InJvb3QifV0sZS5mb3JFYWNoKEEsdGhpcyksdGhpcy5yZXNldCghMCl9ZnVuY3Rpb24gUChlKXtpZihlKXt2YXIgdD1lW2ldO2lmKHQpcmV0dXJuIHQuY2FsbChlKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgZS5uZXh0KXJldHVybiBlO2lmKCFpc05hTihlLmxlbmd0aCkpe3ZhciBuPS0xLGE9ZnVuY3Rpb24gdCgpe2Zvcig7KytuPGUubGVuZ3RoOylpZihyLmNhbGwoZSxuKSlyZXR1cm4gdC52YWx1ZT1lW25dLHQuZG9uZT0hMSx0O3JldHVybiB0LnZhbHVlPXZvaWQgMCx0LmRvbmU9ITAsdH07cmV0dXJuIGEubmV4dD1hfX1yZXR1cm57bmV4dDpUfX1mdW5jdGlvbiBUKCl7cmV0dXJue3ZhbHVlOnZvaWQgMCxkb25lOiEwfX1yZXR1cm4gZC5wcm90b3R5cGU9dixuKHcsImNvbnN0cnVjdG9yIix7dmFsdWU6dixjb25maWd1cmFibGU6ITB9KSxuKHYsImNvbnN0cnVjdG9yIix7dmFsdWU6ZCxjb25maWd1cmFibGU6ITB9KSxkLmRpc3BsYXlOYW1lPWModixzLCJHZW5lcmF0b3JGdW5jdGlvbiIpLGUuaXNHZW5lcmF0b3JGdW5jdGlvbj1mdW5jdGlvbihlKXt2YXIgdD0iZnVuY3Rpb24iPT10eXBlb2YgZSYmZS5jb25zdHJ1Y3RvcjtyZXR1cm4hIXQmJih0PT09ZHx8IkdlbmVyYXRvckZ1bmN0aW9uIj09PSh0LmRpc3BsYXlOYW1lfHx0Lm5hbWUpKX0sZS5tYXJrPWZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsdik6KGUuX19wcm90b19fPXYsYyhlLHMsIkdlbmVyYXRvckZ1bmN0aW9uIikpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodyksZX0sZS5hd3JhcD1mdW5jdGlvbihlKXtyZXR1cm57X19hd2FpdDplfX0sayhTLnByb3RvdHlwZSksYyhTLnByb3RvdHlwZSxvLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpLGUuQXN5bmNJdGVyYXRvcj1TLGUuYXN5bmM9ZnVuY3Rpb24odCxyLG4sYSxpKXt2b2lkIDA9PT1pJiYoaT1Qcm9taXNlKTt2YXIgbz1uZXcgUyh1KHQscixuLGEpLGkpO3JldHVybiBlLmlzR2VuZXJhdG9yRnVuY3Rpb24ocik/bzpvLm5leHQoKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gZS5kb25lP2UudmFsdWU6by5uZXh0KCl9KSl9LGsodyksYyh3LHMsIkdlbmVyYXRvciIpLGModyxpLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpLGModywidG9TdHJpbmciLChmdW5jdGlvbigpe3JldHVybiJbb2JqZWN0IEdlbmVyYXRvcl0ifSkpLGUua2V5cz1mdW5jdGlvbihlKXt2YXIgdD1PYmplY3QoZSkscj1bXTtmb3IodmFyIG4gaW4gdClyLnB1c2gobik7cmV0dXJuIHIucmV2ZXJzZSgpLGZ1bmN0aW9uIGUoKXtmb3IoO3IubGVuZ3RoOyl7dmFyIG49ci5wb3AoKTtpZihuIGluIHQpcmV0dXJuIGUudmFsdWU9bixlLmRvbmU9ITEsZX1yZXR1cm4gZS5kb25lPSEwLGV9fSxlLnZhbHVlcz1QLEYucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpGLHJlc2V0OmZ1bmN0aW9uKGUpe2lmKHRoaXMucHJldj0wLHRoaXMubmV4dD0wLHRoaXMuc2VudD10aGlzLl9zZW50PXZvaWQgMCx0aGlzLmRvbmU9ITEsdGhpcy5kZWxlZ2F0ZT1udWxsLHRoaXMubWV0aG9kPSJuZXh0Iix0aGlzLmFyZz12b2lkIDAsdGhpcy50cnlFbnRyaWVzLmZvckVhY2goQyksIWUpZm9yKHZhciB0IGluIHRoaXMpInQiPT09dC5jaGFyQXQoMCkmJnIuY2FsbCh0aGlzLHQpJiYhaXNOYU4oK3Quc2xpY2UoMSkpJiYodGhpc1t0XT12b2lkIDApfSxzdG9wOmZ1bmN0aW9uKCl7dGhpcy5kb25lPSEwO3ZhciBlPXRoaXMudHJ5RW50cmllc1swXS5jb21wbGV0aW9uO2lmKCJ0aHJvdyI9PT1lLnR5cGUpdGhyb3cgZS5hcmc7cmV0dXJuIHRoaXMucnZhbH0sZGlzcGF0Y2hFeGNlcHRpb246ZnVuY3Rpb24oZSl7aWYodGhpcy5kb25lKXRocm93IGU7dmFyIHQ9dGhpcztmdW5jdGlvbiBuKHIsbil7cmV0dXJuIG8udHlwZT0idGhyb3ciLG8uYXJnPWUsdC5uZXh0PXIsbiYmKHQubWV0aG9kPSJuZXh0Iix0LmFyZz12b2lkIDApLCEhbn1mb3IodmFyIGE9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2E+PTA7LS1hKXt2YXIgaT10aGlzLnRyeUVudHJpZXNbYV0sbz1pLmNvbXBsZXRpb247aWYoInJvb3QiPT09aS50cnlMb2MpcmV0dXJuIG4oImVuZCIpO2lmKGkudHJ5TG9jPD10aGlzLnByZXYpe3ZhciBzPXIuY2FsbChpLCJjYXRjaExvYyIpLGM9ci5jYWxsKGksImZpbmFsbHlMb2MiKTtpZihzJiZjKXtpZih0aGlzLnByZXY8aS5jYXRjaExvYylyZXR1cm4gbihpLmNhdGNoTG9jLCEwKTtpZih0aGlzLnByZXY8aS5maW5hbGx5TG9jKXJldHVybiBuKGkuZmluYWxseUxvYyl9ZWxzZSBpZihzKXtpZih0aGlzLnByZXY8aS5jYXRjaExvYylyZXR1cm4gbihpLmNhdGNoTG9jLCEwKX1lbHNle2lmKCFjKXRocm93IG5ldyBFcnJvcigidHJ5IHN0YXRlbWVudCB3aXRob3V0IGNhdGNoIG9yIGZpbmFsbHkiKTtpZih0aGlzLnByZXY8aS5maW5hbGx5TG9jKXJldHVybiBuKGkuZmluYWxseUxvYyl9fX19LGFicnVwdDpmdW5jdGlvbihlLHQpe2Zvcih2YXIgbj10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7bj49MDstLW4pe3ZhciBhPXRoaXMudHJ5RW50cmllc1tuXTtpZihhLnRyeUxvYzw9dGhpcy5wcmV2JiZyLmNhbGwoYSwiZmluYWxseUxvYyIpJiZ0aGlzLnByZXY8YS5maW5hbGx5TG9jKXt2YXIgaT1hO2JyZWFrfX1pJiYoImJyZWFrIj09PWV8fCJjb250aW51ZSI9PT1lKSYmaS50cnlMb2M8PXQmJnQ8PWkuZmluYWxseUxvYyYmKGk9bnVsbCk7dmFyIG89aT9pLmNvbXBsZXRpb246e307cmV0dXJuIG8udHlwZT1lLG8uYXJnPXQsaT8odGhpcy5tZXRob2Q9Im5leHQiLHRoaXMubmV4dD1pLmZpbmFsbHlMb2MsZik6dGhpcy5jb21wbGV0ZShvKX0sY29tcGxldGU6ZnVuY3Rpb24oZSx0KXtpZigidGhyb3ciPT09ZS50eXBlKXRocm93IGUuYXJnO3JldHVybiJicmVhayI9PT1lLnR5cGV8fCJjb250aW51ZSI9PT1lLnR5cGU/dGhpcy5uZXh0PWUuYXJnOiJyZXR1cm4iPT09ZS50eXBlPyh0aGlzLnJ2YWw9dGhpcy5hcmc9ZS5hcmcsdGhpcy5tZXRob2Q9InJldHVybiIsdGhpcy5uZXh0PSJlbmQiKToibm9ybWFsIj09PWUudHlwZSYmdCYmKHRoaXMubmV4dD10KSxmfSxmaW5pc2g6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTt0Pj0wOy0tdCl7dmFyIHI9dGhpcy50cnlFbnRyaWVzW3RdO2lmKHIuZmluYWxseUxvYz09PWUpcmV0dXJuIHRoaXMuY29tcGxldGUoci5jb21wbGV0aW9uLHIuYWZ0ZXJMb2MpLEMociksZn19LGNhdGNoOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7dD49MDstLXQpe3ZhciByPXRoaXMudHJ5RW50cmllc1t0XTtpZihyLnRyeUxvYz09PWUpe3ZhciBuPXIuY29tcGxldGlvbjtpZigidGhyb3ciPT09bi50eXBlKXt2YXIgYT1uLmFyZztDKHIpfXJldHVybiBhfX10aHJvdyBuZXcgRXJyb3IoImlsbGVnYWwgY2F0Y2ggYXR0ZW1wdCIpfSxkZWxlZ2F0ZVlpZWxkOmZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZT17aXRlcmF0b3I6UChlKSxyZXN1bHROYW1lOnQsbmV4dExvYzpyfSwibmV4dCI9PT10aGlzLm1ldGhvZCYmKHRoaXMuYXJnPXZvaWQgMCksZn19LGV9ZnVuY3Rpb24gdihlLHQscixuLGEsaSxvKXt0cnl7dmFyIHM9ZVtpXShvKSxjPXMudmFsdWV9Y2F0Y2goZSl7cmV0dXJuIHZvaWQgcihlKX1zLmRvbmU/dChjKTpQcm9taXNlLnJlc29sdmUoYykudGhlbihuLGEpfWZ1bmN0aW9uIHkoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxyPWFyZ3VtZW50cztyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKG4sYSl7dmFyIGk9ZS5hcHBseSh0LHIpO2Z1bmN0aW9uIG8oZSl7dihpLG4sYSxvLHMsIm5leHQiLGUpfWZ1bmN0aW9uIHMoZSl7dihpLG4sYSxvLHMsInRocm93IixlKX1vKHZvaWQgMCl9KSl9fWZ1bmN0aW9uIG0oZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIHI9bnVsbD09ZT9udWxsOiJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbIkBAaXRlcmF0b3IiXTtpZihudWxsIT1yKXt2YXIgbixhLGksbyxzPVtdLGM9ITAsdT0hMTt0cnl7aWYoaT0ocj1yLmNhbGwoZSkpLm5leHQsMD09PXQpe2lmKE9iamVjdChyKSE9PXIpcmV0dXJuO2M9ITF9ZWxzZSBmb3IoOyEoYz0obj1pLmNhbGwocikpLmRvbmUpJiYocy5wdXNoKG4udmFsdWUpLHMubGVuZ3RoIT09dCk7Yz0hMCk7fWNhdGNoKGUpe3U9ITAsYT1lfWZpbmFsbHl7dHJ5e2lmKCFjJiZudWxsIT1yLnJldHVybiYmKG89ci5yZXR1cm4oKSxPYmplY3QobykhPT1vKSlyZXR1cm59ZmluYWxseXtpZih1KXRocm93IGF9fXJldHVybiBzfX0oZSx0KXx8dyhlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gYihlLHQpe3ZhciByPSJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbIkBAaXRlcmF0b3IiXTtpZighcil7aWYoQXJyYXkuaXNBcnJheShlKXx8KHI9dyhlKSl8fHQmJmUmJiJudW1iZXIiPT10eXBlb2YgZS5sZW5ndGgpe3ImJihlPXIpO3ZhciBuPTAsYT1mdW5jdGlvbigpe307cmV0dXJue3M6YSxuOmZ1bmN0aW9uKCl7cmV0dXJuIG4+PWUubGVuZ3RoP3tkb25lOiEwfTp7ZG9uZTohMSx2YWx1ZTplW24rK119fSxlOmZ1bmN0aW9uKGUpe3Rocm93IGV9LGY6YX19dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGl0ZXJhdGUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfXZhciBpLG89ITAscz0hMTtyZXR1cm57czpmdW5jdGlvbigpe3I9ci5jYWxsKGUpfSxuOmZ1bmN0aW9uKCl7dmFyIGU9ci5uZXh0KCk7cmV0dXJuIG89ZS5kb25lLGV9LGU6ZnVuY3Rpb24oZSl7cz0hMCxpPWV9LGY6ZnVuY3Rpb24oKXt0cnl7b3x8bnVsbD09ci5yZXR1cm58fHIucmV0dXJuKCl9ZmluYWxseXtpZihzKXRocm93IGl9fX19ZnVuY3Rpb24gdyhlLHQpe2lmKGUpe2lmKCJzdHJpbmciPT10eXBlb2YgZSlyZXR1cm4gayhlLHQpO3ZhciByPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtyZXR1cm4iT2JqZWN0Ij09PXImJmUuY29uc3RydWN0b3ImJihyPWUuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1yfHwiU2V0Ij09PXI/QXJyYXkuZnJvbShlKToiQXJndW1lbnRzIj09PXJ8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KHIpP2soZSx0KTp2b2lkIDB9fWZ1bmN0aW9uIGsoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIHI9MCxuPW5ldyBBcnJheSh0KTtyPHQ7cisrKW5bcl09ZVtyXTtyZXR1cm4gbn1mdW5jdGlvbiBTKGUsdCl7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBuPXRbcl07bi5lbnVtZXJhYmxlPW4uZW51bWVyYWJsZXx8ITEsbi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIG4mJihuLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwodm9pZCAwLGE9ZnVuY3Rpb24oZSx0KXtpZigib2JqZWN0IiE9PXAoZSl8fG51bGw9PT1lKXJldHVybiBlO3ZhciByPWVbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1yKXt2YXIgbj1yLmNhbGwoZSwic3RyaW5nIik7aWYoIm9iamVjdCIhPT1wKG4pKXJldHVybiBuO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuIFN0cmluZyhlKX0obi5rZXkpLCJzeW1ib2wiPT09cChhKT9hOlN0cmluZyhhKSksbil9dmFyIGF9ZnVuY3Rpb24geChlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIGkuRGljdCYmKGU9ZS5nZXQoIkQiKSksQXJyYXkuaXNBcnJheShlKT9lOm51bGx9dmFyIE89ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQscil7aWYoZnVuY3Rpb24oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxlKSx0aGlzLnBkZk1hbmFnZXI9dCx0aGlzLnhyZWY9cix0aGlzLl9jYXREaWN0PXIuZ2V0Q2F0YWxvZ09iaigpLCEodGhpcy5fY2F0RGljdCBpbnN0YW5jZW9mIGkuRGljdCkpdGhyb3cgbmV3IGEuRm9ybWF0RXJyb3IoIkNhdGFsb2cgb2JqZWN0IGlzIG5vdCBhIGRpY3Rpb25hcnkuIik7dGhpcy50b3BsZXZlbFBhZ2VzRGljdCx0aGlzLl9hY3R1YWxOdW1QYWdlcz1udWxsLHRoaXMuZm9udENhY2hlPW5ldyBpLlJlZlNldENhY2hlLHRoaXMuYnVpbHRJbkNNYXBDYWNoZT1uZXcgTWFwLHRoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlPW5ldyBNYXAsdGhpcy5nbG9iYWxJbWFnZUNhY2hlPW5ldyBmLkdsb2JhbEltYWdlQ2FjaGUsdGhpcy5wYWdlS2lkc0NvdW50Q2FjaGU9bmV3IGkuUmVmU2V0Q2FjaGUsdGhpcy5wYWdlSW5kZXhDYWNoZT1uZXcgaS5SZWZTZXRDYWNoZSx0aGlzLm5vbkJsZW5kTW9kZXNTZXQ9bmV3IGkuUmVmU2V0fXZhciB0LHIsdixPLEEsQyxGO3JldHVybiB0PWUscj1be2tleToidmVyc2lvbiIsZ2V0OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fY2F0RGljdC5nZXQoIlZlcnNpb24iKTtpZihlIGluc3RhbmNlb2YgaS5OYW1lKXtpZihuLlBERl9WRVJTSU9OX1JFR0VYUC50ZXN0KGUubmFtZSkpcmV0dXJuKDAsYS5zaGFkb3cpKHRoaXMsInZlcnNpb24iLGUubmFtZSk7KDAsYS53YXJuKSgiSW52YWxpZCBQREYgY2F0YWxvZyB2ZXJzaW9uOiAiLmNvbmNhdChlLm5hbWUpKX1yZXR1cm4oMCxhLnNoYWRvdykodGhpcywidmVyc2lvbiIsbnVsbCl9fSx7a2V5OiJsYW5nIixnZXQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9jYXREaWN0LmdldCgiTGFuZyIpO3JldHVybigwLGEuc2hhZG93KSh0aGlzLCJsYW5nIiwic3RyaW5nIj09dHlwZW9mIGU/KDAsYS5zdHJpbmdUb1BERlN0cmluZykoZSk6bnVsbCl9fSx7a2V5OiJuZWVkc1JlbmRlcmluZyIsZ2V0OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fY2F0RGljdC5nZXQoIk5lZWRzUmVuZGVyaW5nIik7cmV0dXJuKDAsYS5zaGFkb3cpKHRoaXMsIm5lZWRzUmVuZGVyaW5nIiwiYm9vbGVhbiI9PXR5cGVvZiBlJiZlKX19LHtrZXk6ImNvbGxlY3Rpb24iLGdldDpmdW5jdGlvbigpe3ZhciBlPW51bGw7dHJ5e3ZhciB0PXRoaXMuX2NhdERpY3QuZ2V0KCJDb2xsZWN0aW9uIik7dCBpbnN0YW5jZW9mIGkuRGljdCYmdC5zaXplPjAmJihlPXQpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBuLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7KDAsYS5pbmZvKSgiQ2Fubm90IGZldGNoIENvbGxlY3Rpb24gZW50cnk7IGFzc3VtaW5nIG5vIGNvbGxlY3Rpb24gaXMgcHJlc2VudC4iKX1yZXR1cm4oMCxhLnNoYWRvdykodGhpcywiY29sbGVjdGlvbiIsZSl9fSx7a2V5OiJhY3JvRm9ybSIsZ2V0OmZ1bmN0aW9uKCl7dmFyIGU9bnVsbDt0cnl7dmFyIHQ9dGhpcy5fY2F0RGljdC5nZXQoIkFjcm9Gb3JtIik7dCBpbnN0YW5jZW9mIGkuRGljdCYmdC5zaXplPjAmJihlPXQpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBuLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7KDAsYS5pbmZvKSgiQ2Fubm90IGZldGNoIEFjcm9Gb3JtIGVudHJ5OyBhc3N1bWluZyBubyBmb3JtcyBhcmUgcHJlc2VudC4iKX1yZXR1cm4oMCxhLnNoYWRvdykodGhpcywiYWNyb0Zvcm0iLGUpfX0se2tleToiYWNyb0Zvcm1SZWYiLGdldDpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX2NhdERpY3QuZ2V0UmF3KCJBY3JvRm9ybSIpO3JldHVybigwLGEuc2hhZG93KSh0aGlzLCJhY3JvRm9ybVJlZiIsZSBpbnN0YW5jZW9mIGkuUmVmP2U6bnVsbCl9fSx7a2V5OiJtZXRhZGF0YSIsZ2V0OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fY2F0RGljdC5nZXRSYXcoIk1ldGFkYXRhIik7aWYoIShlIGluc3RhbmNlb2YgaS5SZWYpKXJldHVybigwLGEuc2hhZG93KSh0aGlzLCJtZXRhZGF0YSIsbnVsbCk7dmFyIHQ9bnVsbDt0cnl7dmFyIHI9ISh0aGlzLnhyZWYuZW5jcnlwdCYmdGhpcy54cmVmLmVuY3J5cHQuZW5jcnlwdE1ldGFkYXRhKSxvPXRoaXMueHJlZi5mZXRjaChlLHIpO2lmKG8gaW5zdGFuY2VvZiBzLkJhc2VTdHJlYW0mJm8uZGljdCBpbnN0YW5jZW9mIGkuRGljdCl7dmFyIGM9by5kaWN0LmdldCgiVHlwZSIpLHU9by5kaWN0LmdldCgiU3VidHlwZSIpO2lmKCgwLGkuaXNOYW1lKShjLCJNZXRhZGF0YSIpJiYoMCxpLmlzTmFtZSkodSwiWE1MIikpe3ZhciBsPSgwLGEuc3RyaW5nVG9VVEY4U3RyaW5nKShvLmdldFN0cmluZygpKTtsJiYodD1uZXcgaC5NZXRhZGF0YVBhcnNlcihsKS5zZXJpYWxpemFibGUpfX19Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIG4uTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTsoMCxhLmluZm8pKCdTa2lwcGluZyBpbnZhbGlkIE1ldGFkYXRhOiAiJy5jb25jYXQoZSwnIi4nKSl9cmV0dXJuKDAsYS5zaGFkb3cpKHRoaXMsIm1ldGFkYXRhIix0KX19LHtrZXk6Im1hcmtJbmZvIixnZXQ6ZnVuY3Rpb24oKXt2YXIgZT1udWxsO3RyeXtlPXRoaXMuX3JlYWRNYXJrSW5mbygpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBuLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7KDAsYS53YXJuKSgiVW5hYmxlIHRvIHJlYWQgbWFyayBpbmZvLiIpfXJldHVybigwLGEuc2hhZG93KSh0aGlzLCJtYXJrSW5mbyIsZSl9fSx7a2V5OiJfcmVhZE1hcmtJbmZvIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX2NhdERpY3QuZ2V0KCJNYXJrSW5mbyIpO2lmKCEoZSBpbnN0YW5jZW9mIGkuRGljdCkpcmV0dXJuIG51bGw7dmFyIHQ9e01hcmtlZDohMSxVc2VyUHJvcGVydGllczohMSxTdXNwZWN0czohMX07Zm9yKHZhciByIGluIHQpe3ZhciBuPWUuZ2V0KHIpOyJib29sZWFuIj09dHlwZW9mIG4mJih0W3JdPW4pfXJldHVybiB0fX0se2tleToic3RydWN0VHJlZVJvb3QiLGdldDpmdW5jdGlvbigpe3ZhciBlPW51bGw7dHJ5e2U9dGhpcy5fcmVhZFN0cnVjdFRyZWVSb290KCl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIG4uTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTsoMCxhLndhcm4pKCJVbmFibGUgcmVhZCB0byBzdHJ1Y3RUcmVlUm9vdCBpbmZvLiIpfXJldHVybigwLGEuc2hhZG93KSh0aGlzLCJzdHJ1Y3RUcmVlUm9vdCIsZSl9fSx7a2V5OiJfcmVhZFN0cnVjdFRyZWVSb290Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX2NhdERpY3QuZ2V0KCJTdHJ1Y3RUcmVlUm9vdCIpO2lmKCEoZSBpbnN0YW5jZW9mIGkuRGljdCkpcmV0dXJuIG51bGw7dmFyIHQ9bmV3IGQuU3RydWN0VHJlZVJvb3QoZSk7cmV0dXJuIHQuaW5pdCgpLHR9fSx7a2V5OiJ0b3BsZXZlbFBhZ2VzRGljdCIsZ2V0OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fY2F0RGljdC5nZXQoIlBhZ2VzIik7aWYoIShlIGluc3RhbmNlb2YgaS5EaWN0KSl0aHJvdyBuZXcgYS5Gb3JtYXRFcnJvcigiSW52YWxpZCB0b3AtbGV2ZWwgcGFnZXMgZGljdGlvbmFyeS4iKTtyZXR1cm4oMCxhLnNoYWRvdykodGhpcywidG9wbGV2ZWxQYWdlc0RpY3QiLGUpfX0se2tleToiZG9jdW1lbnRPdXRsaW5lIixnZXQ6ZnVuY3Rpb24oKXt2YXIgZT1udWxsO3RyeXtlPXRoaXMuX3JlYWREb2N1bWVudE91dGxpbmUoKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2Ygbi5NaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlOygwLGEud2FybikoIlVuYWJsZSB0byByZWFkIGRvY3VtZW50IG91dGxpbmUuIil9cmV0dXJuKDAsYS5zaGFkb3cpKHRoaXMsImRvY3VtZW50T3V0bGluZSIsZSl9fSx7a2V5OiJfcmVhZERvY3VtZW50T3V0bGluZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9jYXREaWN0LmdldCgiT3V0bGluZXMiKTtpZighKHQgaW5zdGFuY2VvZiBpLkRpY3QpKXJldHVybiBudWxsO2lmKCEoKHQ9dC5nZXRSYXcoIkZpcnN0IikpaW5zdGFuY2VvZiBpLlJlZikpcmV0dXJuIG51bGw7dmFyIHI9e2l0ZW1zOltdfSxuPVt7b2JqOnQscGFyZW50OnJ9XSxvPW5ldyBpLlJlZlNldDtvLnB1dCh0KTtmb3IodmFyIHM9dGhpcy54cmVmLGM9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDMpO24ubGVuZ3RoPjA7KXt2YXIgbD1uLnNoaWZ0KCksZj1zLmZldGNoSWZSZWYobC5vYmopO2lmKG51bGwhPT1mKXtpZighZi5oYXMoIlRpdGxlIikpdGhyb3cgbmV3IGEuRm9ybWF0RXJyb3IoIkludmFsaWQgb3V0bGluZSBpdGVtIGVuY291bnRlcmVkLiIpO3ZhciBoPXt1cmw6bnVsbCxkZXN0Om51bGwsYWN0aW9uOm51bGx9O2UucGFyc2VEZXN0RGljdGlvbmFyeSh7ZGVzdERpY3Q6ZixyZXN1bHRPYmo6aCxkb2NCYXNlVXJsOnRoaXMucGRmTWFuYWdlci5kb2NCYXNlVXJsLGRvY0F0dGFjaG1lbnRzOnRoaXMuYXR0YWNobWVudHN9KTt2YXIgZD1mLmdldCgiVGl0bGUiKSxwPWYuZ2V0KCJGIil8fDAsZz1mLmdldEFycmF5KCJDIiksdj1mLmdldCgiQ291bnQiKSx5PWM7IUFycmF5LmlzQXJyYXkoZyl8fDMhPT1nLmxlbmd0aHx8MD09PWdbMF0mJjA9PT1nWzFdJiYwPT09Z1syXXx8KHk9dS5Db2xvclNwYWNlLnNpbmdsZXRvbnMucmdiLmdldFJnYihnLDApKTt2YXIgbT17YWN0aW9uOmguYWN0aW9uLGF0dGFjaG1lbnQ6aC5hdHRhY2htZW50LGRlc3Q6aC5kZXN0LHVybDpoLnVybCx1bnNhZmVVcmw6aC51bnNhZmVVcmwsbmV3V2luZG93OmgubmV3V2luZG93LHNldE9DR1N0YXRlOmguc2V0T0NHU3RhdGUsdGl0bGU6KDAsYS5zdHJpbmdUb1BERlN0cmluZykoZCksY29sb3I6eSxjb3VudDpOdW1iZXIuaXNJbnRlZ2VyKHYpP3Y6dm9pZCAwLGJvbGQ6ISEoMiZwKSxpdGFsaWM6ISEoMSZwKSxpdGVtczpbXX07bC5wYXJlbnQuaXRlbXMucHVzaChtKSwodD1mLmdldFJhdygiRmlyc3QiKSlpbnN0YW5jZW9mIGkuUmVmJiYhby5oYXModCkmJihuLnB1c2goe29iajp0LHBhcmVudDptfSksby5wdXQodCkpLCh0PWYuZ2V0UmF3KCJOZXh0IikpaW5zdGFuY2VvZiBpLlJlZiYmIW8uaGFzKHQpJiYobi5wdXNoKHtvYmo6dCxwYXJlbnQ6bC5wYXJlbnR9KSxvLnB1dCh0KSl9fXJldHVybiByLml0ZW1zLmxlbmd0aD4wP3IuaXRlbXM6bnVsbH19LHtrZXk6InBlcm1pc3Npb25zIixnZXQ6ZnVuY3Rpb24oKXt2YXIgZT1udWxsO3RyeXtlPXRoaXMuX3JlYWRQZXJtaXNzaW9ucygpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBuLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7KDAsYS53YXJuKSgiVW5hYmxlIHRvIHJlYWQgcGVybWlzc2lvbnMuIil9cmV0dXJuKDAsYS5zaGFkb3cpKHRoaXMsInBlcm1pc3Npb25zIixlKX19LHtrZXk6Il9yZWFkUGVybWlzc2lvbnMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy54cmVmLnRyYWlsZXIuZ2V0KCJFbmNyeXB0Iik7aWYoIShlIGluc3RhbmNlb2YgaS5EaWN0KSlyZXR1cm4gbnVsbDt2YXIgdD1lLmdldCgiUCIpO2lmKCJudW1iZXIiIT10eXBlb2YgdClyZXR1cm4gbnVsbDt0Kz1NYXRoLnBvdygyLDMyKTt2YXIgcj1bXTtmb3IodmFyIG4gaW4gYS5QZXJtaXNzaW9uRmxhZyl7dmFyIG89YS5QZXJtaXNzaW9uRmxhZ1tuXTt0Jm8mJnIucHVzaChvKX1yZXR1cm4gcn19LHtrZXk6Im9wdGlvbmFsQ29udGVudENvbmZpZyIsZ2V0OmZ1bmN0aW9uKCl7dmFyIGU9bnVsbDt0cnl7dmFyIHQ9dGhpcy5fY2F0RGljdC5nZXQoIk9DUHJvcGVydGllcyIpO2lmKCF0KXJldHVybigwLGEuc2hhZG93KSh0aGlzLCJvcHRpb25hbENvbnRlbnRDb25maWciLG51bGwpO3ZhciByPXQuZ2V0KCJEIik7aWYoIXIpcmV0dXJuKDAsYS5zaGFkb3cpKHRoaXMsIm9wdGlvbmFsQ29udGVudENvbmZpZyIsbnVsbCk7dmFyIG89dC5nZXQoIk9DR3MiKTtpZighQXJyYXkuaXNBcnJheShvKSlyZXR1cm4oMCxhLnNoYWRvdykodGhpcywib3B0aW9uYWxDb250ZW50Q29uZmlnIixudWxsKTt2YXIgcyxjPVtdLHU9W10sbD1iKG8pO3RyeXtmb3IobC5zKCk7IShzPWwubigpKS5kb25lOyl7dmFyIGY9cy52YWx1ZTtpZihmIGluc3RhbmNlb2YgaS5SZWYpe3UucHVzaChmKTt2YXIgaD10aGlzLnhyZWYuZmV0Y2hJZlJlZihmKTtjLnB1c2goe2lkOmYudG9TdHJpbmcoKSxuYW1lOiJzdHJpbmciPT10eXBlb2YgaC5nZXQoIk5hbWUiKT8oMCxhLnN0cmluZ1RvUERGU3RyaW5nKShoLmdldCgiTmFtZSIpKTpudWxsLGludGVudDoic3RyaW5nIj09dHlwZW9mIGguZ2V0KCJJbnRlbnQiKT8oMCxhLnN0cmluZ1RvUERGU3RyaW5nKShoLmdldCgiSW50ZW50IikpOm51bGx9KX19fWNhdGNoKGUpe2wuZShlKX1maW5hbGx5e2wuZigpfShlPXRoaXMuX3JlYWRPcHRpb25hbENvbnRlbnRDb25maWcocix1KSkuZ3JvdXBzPWN9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIG4uTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTsoMCxhLndhcm4pKCJVbmFibGUgdG8gcmVhZCBvcHRpb25hbCBjb250ZW50IGNvbmZpZzogIi5jb25jYXQoZSkpfXJldHVybigwLGEuc2hhZG93KSh0aGlzLCJvcHRpb25hbENvbnRlbnRDb25maWciLGUpfX0se2tleToiX3JlYWRPcHRpb25hbENvbnRlbnRDb25maWciLHZhbHVlOmZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gcihlKXt2YXIgcj1bXTtpZihBcnJheS5pc0FycmF5KGUpKXt2YXIgbixhPWIoZSk7dHJ5e2ZvcihhLnMoKTshKG49YS5uKCkpLmRvbmU7KXt2YXIgbz1uLnZhbHVlO28gaW5zdGFuY2VvZiBpLlJlZiYmdC5pbmNsdWRlcyhvKSYmci5wdXNoKG8udG9TdHJpbmcoKSl9fWNhdGNoKGUpe2EuZShlKX1maW5hbGx5e2EuZigpfX1yZXR1cm4gcn1mdW5jdGlvbiBuKGUpe3ZhciByPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTowO2lmKCFBcnJheS5pc0FycmF5KGUpKXJldHVybiBudWxsO3ZhciBuLGE9W10scz1iKGUpO3RyeXtmb3Iocy5zKCk7IShuPXMubigpKS5kb25lOyl7dmFyIHU9bi52YWx1ZTtpZih1IGluc3RhbmNlb2YgaS5SZWYmJnQuaW5jbHVkZXModSkpYy5wdXQodSksYS5wdXNoKHUudG9TdHJpbmcoKSk7ZWxzZXt2YXIgbD1vKHUscik7bCYmYS5wdXNoKGwpfX19Y2F0Y2goZSl7cy5lKGUpfWZpbmFsbHl7cy5mKCl9aWYocj4wKXJldHVybiBhO3ZhciBmLGg9W10sZD1iKHQpO3RyeXtmb3IoZC5zKCk7IShmPWQubigpKS5kb25lOyl7dmFyIHA9Zi52YWx1ZTtjLmhhcyhwKXx8aC5wdXNoKHAudG9TdHJpbmcoKSl9fWNhdGNoKGUpe2QuZShlKX1maW5hbGx5e2QuZigpfXJldHVybiBoLmxlbmd0aCYmYS5wdXNoKHtuYW1lOm51bGwsb3JkZXI6aH0pLGF9ZnVuY3Rpb24gbyhlLHQpe2lmKCsrdD51KXJldHVybigwLGEud2FybikoInBhcnNlTmVzdGVkT3JkZXIgLSByZWFjaGVkIE1BWF9ORVNURURfTEVWRUxTLiIpLG51bGw7dmFyIHI9cy5mZXRjaElmUmVmKGUpO2lmKCFBcnJheS5pc0FycmF5KHIpKXJldHVybiBudWxsO3ZhciBpPXMuZmV0Y2hJZlJlZihyWzBdKTtpZigic3RyaW5nIiE9dHlwZW9mIGkpcmV0dXJuIG51bGw7dmFyIG89bihyLnNsaWNlKDEpLHQpO3JldHVybiBvJiZvLmxlbmd0aD97bmFtZTooMCxhLnN0cmluZ1RvUERGU3RyaW5nKShpKSxvcmRlcjpvfTpudWxsfXZhciBzPXRoaXMueHJlZixjPW5ldyBpLlJlZlNldCx1PTEwO3JldHVybntuYW1lOiJzdHJpbmciPT10eXBlb2YgZS5nZXQoIk5hbWUiKT8oMCxhLnN0cmluZ1RvUERGU3RyaW5nKShlLmdldCgiTmFtZSIpKTpudWxsLGNyZWF0b3I6InN0cmluZyI9PXR5cGVvZiBlLmdldCgiQ3JlYXRvciIpPygwLGEuc3RyaW5nVG9QREZTdHJpbmcpKGUuZ2V0KCJDcmVhdG9yIikpOm51bGwsYmFzZVN0YXRlOmUuZ2V0KCJCYXNlU3RhdGUiKWluc3RhbmNlb2YgaS5OYW1lP2UuZ2V0KCJCYXNlU3RhdGUiKS5uYW1lOm51bGwsb246cihlLmdldCgiT04iKSksb2ZmOnIoZS5nZXQoIk9GRiIpKSxvcmRlcjpuKGUuZ2V0KCJPcmRlciIpKSxncm91cHM6bnVsbH19fSx7a2V5OiJzZXRBY3R1YWxOdW1QYWdlcyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06bnVsbDt0aGlzLl9hY3R1YWxOdW1QYWdlcz1lfX0se2tleToiaGFzQWN0dWFsTnVtUGFnZXMiLGdldDpmdW5jdGlvbigpe3JldHVybiBudWxsIT09dGhpcy5fYWN0dWFsTnVtUGFnZXN9fSx7a2V5OiJfcGFnZXNDb3VudCIsZ2V0OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy50b3BsZXZlbFBhZ2VzRGljdC5nZXQoIkNvdW50Iik7aWYoIU51bWJlci5pc0ludGVnZXIoZSkpdGhyb3cgbmV3IGEuRm9ybWF0RXJyb3IoIlBhZ2UgY291bnQgaW4gdG9wLWxldmVsIHBhZ2VzIGRpY3Rpb25hcnkgaXMgbm90IGFuIGludGVnZXIuIik7cmV0dXJuKDAsYS5zaGFkb3cpKHRoaXMsIl9wYWdlc0NvdW50IixlKX19LHtrZXk6Im51bVBhZ2VzIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5oYXNBY3R1YWxOdW1QYWdlcz90aGlzLl9hY3R1YWxOdW1QYWdlczp0aGlzLl9wYWdlc0NvdW50fX0se2tleToiZGVzdGluYXRpb25zIixnZXQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9yZWFkRGVzdHMoKSx0PU9iamVjdC5jcmVhdGUobnVsbCk7aWYoZSBpbnN0YW5jZW9mIG8uTmFtZVRyZWUpe3ZhciByLG49YihlLmdldEFsbCgpKTt0cnl7Zm9yKG4ucygpOyEocj1uLm4oKSkuZG9uZTspe3ZhciBzPW0oci52YWx1ZSwyKSxjPXNbMF0sdT14KHNbMV0pO3UmJih0WygwLGEuc3RyaW5nVG9QREZTdHJpbmcpKGMpXT11KX19Y2F0Y2goZSl7bi5lKGUpfWZpbmFsbHl7bi5mKCl9fWVsc2UgZSBpbnN0YW5jZW9mIGkuRGljdCYmZS5mb3JFYWNoKChmdW5jdGlvbihlLHIpe3ZhciBuPXgocik7biYmKHRbZV09bil9KSk7cmV0dXJuKDAsYS5zaGFkb3cpKHRoaXMsImRlc3RpbmF0aW9ucyIsdCl9fSx7a2V5OiJnZXREZXN0aW5hdGlvbiIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fcmVhZERlc3RzKCk7aWYodCBpbnN0YW5jZW9mIG8uTmFtZVRyZWUpe3ZhciByPXgodC5nZXQoZSkpO2lmKHIpcmV0dXJuIHI7dmFyIG49dGhpcy5kZXN0aW5hdGlvbnNbZV07aWYobilyZXR1cm4oMCxhLndhcm4pKCdGb3VuZCAiJy5jb25jYXQoZSwnIiBhdCBhbiBpbmNvcnJlY3QgcG9zaXRpb24gaW4gdGhlIE5hbWVUcmVlLicpKSxufWVsc2UgaWYodCBpbnN0YW5jZW9mIGkuRGljdCl7dmFyIHM9eCh0LmdldChlKSk7aWYocylyZXR1cm4gc31yZXR1cm4gbnVsbH19LHtrZXk6Il9yZWFkRGVzdHMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fY2F0RGljdC5nZXQoIk5hbWVzIik7cmV0dXJuIGUmJmUuaGFzKCJEZXN0cyIpP25ldyBvLk5hbWVUcmVlKGUuZ2V0UmF3KCJEZXN0cyIpLHRoaXMueHJlZik6dGhpcy5fY2F0RGljdC5oYXMoIkRlc3RzIik/dGhpcy5fY2F0RGljdC5nZXQoIkRlc3RzIik6dm9pZCAwfX0se2tleToicGFnZUxhYmVscyIsZ2V0OmZ1bmN0aW9uKCl7dmFyIGU9bnVsbDt0cnl7ZT10aGlzLl9yZWFkUGFnZUxhYmVscygpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBuLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7KDAsYS53YXJuKSgiVW5hYmxlIHRvIHJlYWQgcGFnZSBsYWJlbHMuIil9cmV0dXJuKDAsYS5zaGFkb3cpKHRoaXMsInBhZ2VMYWJlbHMiLGUpfX0se2tleToiX3JlYWRQYWdlTGFiZWxzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX2NhdERpY3QuZ2V0UmF3KCJQYWdlTGFiZWxzIik7aWYoIWUpcmV0dXJuIG51bGw7Zm9yKHZhciB0PW5ldyBBcnJheSh0aGlzLm51bVBhZ2VzKSxyPW51bGwscz0iIixjPW5ldyBvLk51bWJlclRyZWUoZSx0aGlzLnhyZWYpLmdldEFsbCgpLHU9IiIsbD0xLGY9MCxoPXRoaXMubnVtUGFnZXM7ZjxoO2YrKyl7dmFyIGQ9Yy5nZXQoZik7aWYodm9pZCAwIT09ZCl7aWYoIShkIGluc3RhbmNlb2YgaS5EaWN0KSl0aHJvdyBuZXcgYS5Gb3JtYXRFcnJvcigiUGFnZUxhYmVsIGlzIG5vdCBhIGRpY3Rpb25hcnkuIik7aWYoZC5oYXMoIlR5cGUiKSYmISgwLGkuaXNOYW1lKShkLmdldCgiVHlwZSIpLCJQYWdlTGFiZWwiKSl0aHJvdyBuZXcgYS5Gb3JtYXRFcnJvcigiSW52YWxpZCB0eXBlIGluIFBhZ2VMYWJlbCBkaWN0aW9uYXJ5LiIpO2lmKGQuaGFzKCJTIikpe3ZhciBwPWQuZ2V0KCJTIik7aWYoIShwIGluc3RhbmNlb2YgaS5OYW1lKSl0aHJvdyBuZXcgYS5Gb3JtYXRFcnJvcigiSW52YWxpZCBzdHlsZSBpbiBQYWdlTGFiZWwgZGljdGlvbmFyeS4iKTtyPXAubmFtZX1lbHNlIHI9bnVsbDtpZihkLmhhcygiUCIpKXt2YXIgZz1kLmdldCgiUCIpO2lmKCJzdHJpbmciIT10eXBlb2YgZyl0aHJvdyBuZXcgYS5Gb3JtYXRFcnJvcigiSW52YWxpZCBwcmVmaXggaW4gUGFnZUxhYmVsIGRpY3Rpb25hcnkuIik7cz0oMCxhLnN0cmluZ1RvUERGU3RyaW5nKShnKX1lbHNlIHM9IiI7aWYoZC5oYXMoIlN0Iikpe3ZhciB2PWQuZ2V0KCJTdCIpO2lmKCEoTnVtYmVyLmlzSW50ZWdlcih2KSYmdj49MSkpdGhyb3cgbmV3IGEuRm9ybWF0RXJyb3IoIkludmFsaWQgc3RhcnQgaW4gUGFnZUxhYmVsIGRpY3Rpb25hcnkuIik7bD12fWVsc2UgbD0xfXN3aXRjaChyKXtjYXNlIkQiOnU9bDticmVhaztjYXNlIlIiOmNhc2UiciI6dT0oMCxuLnRvUm9tYW5OdW1lcmFscykobCwiciI9PT1yKTticmVhaztjYXNlIkEiOmNhc2UiYSI6dmFyIHk9ImEiPT09cj85Nzo2NSxtPWwtMTt1PVN0cmluZy5mcm9tQ2hhckNvZGUoeSttJTI2KS5yZXBlYXQoTWF0aC5mbG9vcihtLzI2KSsxKTticmVhaztkZWZhdWx0OmlmKHIpdGhyb3cgbmV3IGEuRm9ybWF0RXJyb3IoJ0ludmFsaWQgc3R5bGUgIicuY29uY2F0KHIsJyIgaW4gUGFnZUxhYmVsIGRpY3Rpb25hcnkuJykpO3U9IiJ9dFtmXT1zK3UsbCsrfXJldHVybiB0fX0se2tleToicGFnZUxheW91dCIsZ2V0OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fY2F0RGljdC5nZXQoIlBhZ2VMYXlvdXQiKSx0PSIiO2lmKGUgaW5zdGFuY2VvZiBpLk5hbWUpc3dpdGNoKGUubmFtZSl7Y2FzZSJTaW5nbGVQYWdlIjpjYXNlIk9uZUNvbHVtbiI6Y2FzZSJUd29Db2x1bW5MZWZ0IjpjYXNlIlR3b0NvbHVtblJpZ2h0IjpjYXNlIlR3b1BhZ2VMZWZ0IjpjYXNlIlR3b1BhZ2VSaWdodCI6dD1lLm5hbWV9cmV0dXJuKDAsYS5zaGFkb3cpKHRoaXMsInBhZ2VMYXlvdXQiLHQpfX0se2tleToicGFnZU1vZGUiLGdldDpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX2NhdERpY3QuZ2V0KCJQYWdlTW9kZSIpLHQ9IlVzZU5vbmUiO2lmKGUgaW5zdGFuY2VvZiBpLk5hbWUpc3dpdGNoKGUubmFtZSl7Y2FzZSJVc2VOb25lIjpjYXNlIlVzZU91dGxpbmVzIjpjYXNlIlVzZVRodW1icyI6Y2FzZSJGdWxsU2NyZWVuIjpjYXNlIlVzZU9DIjpjYXNlIlVzZUF0dGFjaG1lbnRzIjp0PWUubmFtZX1yZXR1cm4oMCxhLnNoYWRvdykodGhpcywicGFnZU1vZGUiLHQpfX0se2tleToidmlld2VyUHJlZmVyZW5jZXMiLGdldDpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD10aGlzLl9jYXREaWN0LmdldCgiVmlld2VyUHJlZmVyZW5jZXMiKTtpZighKHQgaW5zdGFuY2VvZiBpLkRpY3QpKXJldHVybigwLGEuc2hhZG93KSh0aGlzLCJ2aWV3ZXJQcmVmZXJlbmNlcyIsbnVsbCk7dmFyIHIsbj1udWxsLG89Yih0LmdldEtleXMoKSk7dHJ5e2ZvcihvLnMoKTshKHI9by5uKCkpLmRvbmU7KXt2YXIgcz1yLnZhbHVlLGM9dC5nZXQocyksdT12b2lkIDA7c3dpdGNoKHMpe2Nhc2UiSGlkZVRvb2xiYXIiOmNhc2UiSGlkZU1lbnViYXIiOmNhc2UiSGlkZVdpbmRvd1VJIjpjYXNlIkZpdFdpbmRvdyI6Y2FzZSJDZW50ZXJXaW5kb3ciOmNhc2UiRGlzcGxheURvY1RpdGxlIjpjYXNlIlBpY2tUcmF5QnlQREZTaXplIjoiYm9vbGVhbiI9PXR5cGVvZiBjJiYodT1jKTticmVhaztjYXNlIk5vbkZ1bGxTY3JlZW5QYWdlTW9kZSI6aWYoYyBpbnN0YW5jZW9mIGkuTmFtZSlzd2l0Y2goYy5uYW1lKXtjYXNlIlVzZU5vbmUiOmNhc2UiVXNlT3V0bGluZXMiOmNhc2UiVXNlVGh1bWJzIjpjYXNlIlVzZU9DIjp1PWMubmFtZTticmVhaztkZWZhdWx0OnU9IlVzZU5vbmUifWJyZWFrO2Nhc2UiRGlyZWN0aW9uIjppZihjIGluc3RhbmNlb2YgaS5OYW1lKXN3aXRjaChjLm5hbWUpe2Nhc2UiTDJSIjpjYXNlIlIyTCI6dT1jLm5hbWU7YnJlYWs7ZGVmYXVsdDp1PSJMMlIifWJyZWFrO2Nhc2UiVmlld0FyZWEiOmNhc2UiVmlld0NsaXAiOmNhc2UiUHJpbnRBcmVhIjpjYXNlIlByaW50Q2xpcCI6aWYoYyBpbnN0YW5jZW9mIGkuTmFtZSlzd2l0Y2goYy5uYW1lKXtjYXNlIk1lZGlhQm94IjpjYXNlIkNyb3BCb3giOmNhc2UiQmxlZWRCb3giOmNhc2UiVHJpbUJveCI6Y2FzZSJBcnRCb3giOnU9Yy5uYW1lO2JyZWFrO2RlZmF1bHQ6dT0iQ3JvcEJveCJ9YnJlYWs7Y2FzZSJQcmludFNjYWxpbmciOmlmKGMgaW5zdGFuY2VvZiBpLk5hbWUpc3dpdGNoKGMubmFtZSl7Y2FzZSJOb25lIjpjYXNlIkFwcERlZmF1bHQiOnU9Yy5uYW1lO2JyZWFrO2RlZmF1bHQ6dT0iQXBwRGVmYXVsdCJ9YnJlYWs7Y2FzZSJEdXBsZXgiOmlmKGMgaW5zdGFuY2VvZiBpLk5hbWUpc3dpdGNoKGMubmFtZSl7Y2FzZSJTaW1wbGV4IjpjYXNlIkR1cGxleEZsaXBTaG9ydEVkZ2UiOmNhc2UiRHVwbGV4RmxpcExvbmdFZGdlIjp1PWMubmFtZTticmVhaztkZWZhdWx0OnU9Ik5vbmUifWJyZWFrO2Nhc2UiUHJpbnRQYWdlUmFuZ2UiOkFycmF5LmlzQXJyYXkoYykmJmMubGVuZ3RoJTI9PTAmJmMuZXZlcnkoKGZ1bmN0aW9uKHQscixuKXtyZXR1cm4gTnVtYmVyLmlzSW50ZWdlcih0KSYmdD4wJiYoMD09PXJ8fHQ+PW5bci0xXSkmJnQ8PWUubnVtUGFnZXN9KSkmJih1PWMpO2JyZWFrO2Nhc2UiTnVtQ29waWVzIjpOdW1iZXIuaXNJbnRlZ2VyKGMpJiZjPjAmJih1PWMpO2JyZWFrO2RlZmF1bHQ6KDAsYS53YXJuKSgiSWdub3Jpbmcgbm9uLXN0YW5kYXJkIGtleSBpbiBWaWV3ZXJQcmVmZXJlbmNlczogIi5jb25jYXQocywiLiIpKTtjb250aW51ZX12b2lkIDAhPT11PyhufHwobj1PYmplY3QuY3JlYXRlKG51bGwpKSxuW3NdPXUpOigwLGEud2FybikoJ0JhZCB2YWx1ZSwgZm9yIGtleSAiJy5jb25jYXQocywnIiwgaW4gVmlld2VyUHJlZmVyZW5jZXM6ICcpLmNvbmNhdChjLCIuIikpfX1jYXRjaChlKXtvLmUoZSl9ZmluYWxseXtvLmYoKX1yZXR1cm4oMCxhLnNoYWRvdykodGhpcywidmlld2VyUHJlZmVyZW5jZXMiLG4pfX0se2tleToib3BlbkFjdGlvbiIsZ2V0OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fY2F0RGljdC5nZXQoIk9wZW5BY3Rpb24iKSxyPU9iamVjdC5jcmVhdGUobnVsbCk7aWYodCBpbnN0YW5jZW9mIGkuRGljdCl7dmFyIG49bmV3IGkuRGljdCh0aGlzLnhyZWYpO24uc2V0KCJBIix0KTt2YXIgbz17dXJsOm51bGwsZGVzdDpudWxsLGFjdGlvbjpudWxsfTtlLnBhcnNlRGVzdERpY3Rpb25hcnkoe2Rlc3REaWN0Om4scmVzdWx0T2JqOm99KSxBcnJheS5pc0FycmF5KG8uZGVzdCk/ci5kZXN0PW8uZGVzdDpvLmFjdGlvbiYmKHIuYWN0aW9uPW8uYWN0aW9uKX1lbHNlIEFycmF5LmlzQXJyYXkodCkmJihyLmRlc3Q9dCk7cmV0dXJuKDAsYS5zaGFkb3cpKHRoaXMsIm9wZW5BY3Rpb24iLCgwLGEub2JqZWN0U2l6ZSkocik+MD9yOm51bGwpfX0se2tleToiYXR0YWNobWVudHMiLGdldDpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX2NhdERpY3QuZ2V0KCJOYW1lcyIpLHQ9bnVsbDtpZihlIGluc3RhbmNlb2YgaS5EaWN0JiZlLmhhcygiRW1iZWRkZWRGaWxlcyIpKXt2YXIgcixuPWIobmV3IG8uTmFtZVRyZWUoZS5nZXRSYXcoIkVtYmVkZGVkRmlsZXMiKSx0aGlzLnhyZWYpLmdldEFsbCgpKTt0cnl7Zm9yKG4ucygpOyEocj1uLm4oKSkuZG9uZTspe3ZhciBzPW0oci52YWx1ZSwyKSxjPXNbMF0sdT1zWzFdLGY9bmV3IGwuRmlsZVNwZWModSx0aGlzLnhyZWYpO3R8fCh0PU9iamVjdC5jcmVhdGUobnVsbCkpLHRbKDAsYS5zdHJpbmdUb1BERlN0cmluZykoYyldPWYuc2VyaWFsaXphYmxlfX1jYXRjaChlKXtuLmUoZSl9ZmluYWxseXtuLmYoKX19cmV0dXJuKDAsYS5zaGFkb3cpKHRoaXMsImF0dGFjaG1lbnRzIix0KX19LHtrZXk6InhmYUltYWdlcyIsZ2V0OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fY2F0RGljdC5nZXQoIk5hbWVzIiksdD1udWxsO2lmKGUgaW5zdGFuY2VvZiBpLkRpY3QmJmUuaGFzKCJYRkFJbWFnZXMiKSl7dmFyIHIsbj1iKG5ldyBvLk5hbWVUcmVlKGUuZ2V0UmF3KCJYRkFJbWFnZXMiKSx0aGlzLnhyZWYpLmdldEFsbCgpKTt0cnl7Zm9yKG4ucygpOyEocj1uLm4oKSkuZG9uZTspe3ZhciBzPW0oci52YWx1ZSwyKSxjPXNbMF0sdT1zWzFdO3R8fCh0PW5ldyBpLkRpY3QodGhpcy54cmVmKSksdC5zZXQoKDAsYS5zdHJpbmdUb1BERlN0cmluZykoYyksdSl9fWNhdGNoKGUpe24uZShlKX1maW5hbGx5e24uZigpfX1yZXR1cm4oMCxhLnNoYWRvdykodGhpcywieGZhSW1hZ2VzIix0KX19LHtrZXk6Il9jb2xsZWN0SmF2YVNjcmlwdCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9jYXREaWN0LmdldCgiTmFtZXMiKSx0PW51bGw7ZnVuY3Rpb24gcihlLHIpe2lmKHIgaW5zdGFuY2VvZiBpLkRpY3QmJigwLGkuaXNOYW1lKShyLmdldCgiUyIpLCJKYXZhU2NyaXB0Iikpe3ZhciBuPXIuZ2V0KCJKUyIpO2lmKG4gaW5zdGFuY2VvZiBzLkJhc2VTdHJlYW0pbj1uLmdldFN0cmluZygpO2Vsc2UgaWYoInN0cmluZyIhPXR5cGVvZiBuKXJldHVybjtudWxsPT09dCYmKHQ9bmV3IE1hcCksbj0oMCxhLnN0cmluZ1RvUERGU3RyaW5nKShuKS5yZXBsYWNlKC9cdTAwMDAvZywiIiksdC5zZXQoZSxuKX19aWYoZSBpbnN0YW5jZW9mIGkuRGljdCYmZS5oYXMoIkphdmFTY3JpcHQiKSl7dmFyIG4sYz1iKG5ldyBvLk5hbWVUcmVlKGUuZ2V0UmF3KCJKYXZhU2NyaXB0IiksdGhpcy54cmVmKS5nZXRBbGwoKSk7dHJ5e2ZvcihjLnMoKTshKG49Yy5uKCkpLmRvbmU7KXt2YXIgdT1tKG4udmFsdWUsMiksbD11WzBdLGY9dVsxXTtyKCgwLGEuc3RyaW5nVG9QREZTdHJpbmcpKGwpLGYpfX1jYXRjaChlKXtjLmUoZSl9ZmluYWxseXtjLmYoKX19dmFyIGg9dGhpcy5fY2F0RGljdC5nZXQoIk9wZW5BY3Rpb24iKTtyZXR1cm4gaCYmcigiT3BlbkFjdGlvbiIsaCksdH19LHtrZXk6ImphdmFTY3JpcHQiLGdldDpmdW5jdGlvbigpe3ZhciBlLHQ9dGhpcy5fY29sbGVjdEphdmFTY3JpcHQoKTtyZXR1cm4oMCxhLnNoYWRvdykodGhpcywiamF2YVNjcmlwdCIsdD9mdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBrKGUpfShlPXQudmFsdWVzKCkpfHxmdW5jdGlvbihlKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmbnVsbCE9ZVtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT1lWyJAQGl0ZXJhdG9yIl0pcmV0dXJuIEFycmF5LmZyb20oZSl9KGUpfHx3KGUpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpOm51bGwpfX0se2tleToianNBY3Rpb25zIixnZXQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9jb2xsZWN0SmF2YVNjcmlwdCgpLHQ9KDAsbi5jb2xsZWN0QWN0aW9ucykodGhpcy54cmVmLHRoaXMuX2NhdERpY3QsYS5Eb2N1bWVudEFjdGlvbkV2ZW50VHlwZSk7aWYoZSl7dHx8KHQ9T2JqZWN0LmNyZWF0ZShudWxsKSk7dmFyIHIsaT1iKGUpO3RyeXtmb3IoaS5zKCk7IShyPWkubigpKS5kb25lOyl7dmFyIG89bShyLnZhbHVlLDIpLHM9b1swXSxjPW9bMV07cyBpbiB0P3Rbc10ucHVzaChjKTp0W3NdPVtjXX19Y2F0Y2goZSl7aS5lKGUpfWZpbmFsbHl7aS5mKCl9fXJldHVybigwLGEuc2hhZG93KSh0aGlzLCJqc0FjdGlvbnMiLHQpfX0se2tleToiZm9udEZhbGxiYWNrIix2YWx1ZTooRj15KGcoKS5tYXJrKChmdW5jdGlvbiBlKHQscil7dmFyIG4sYSxpLG87cmV0dXJuIGcoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsUHJvbWlzZS5hbGwodGhpcy5mb250Q2FjaGUpO2Nhc2UgMjpuPWUuc2VudCxhPWIobiksZS5wcmV2PTQsYS5zKCk7Y2FzZSA2OmlmKChpPWEubigpKS5kb25lKXtlLm5leHQ9MTM7YnJlYWt9aWYoKG89aS52YWx1ZSkubG9hZGVkTmFtZSE9PXQpe2UubmV4dD0xMTticmVha31yZXR1cm4gby5mYWxsYmFjayhyKSxlLmFicnVwdCgicmV0dXJuIik7Y2FzZSAxMTplLm5leHQ9NjticmVhaztjYXNlIDEzOmUubmV4dD0xODticmVhaztjYXNlIDE1OmUucHJldj0xNSxlLnQwPWUuY2F0Y2goNCksYS5lKGUudDApO2Nhc2UgMTg6cmV0dXJuIGUucHJldj0xOCxhLmYoKSxlLmZpbmlzaCgxOCk7Y2FzZSAyMTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyxbWzQsMTUsMTgsMjFdXSl9KSkpLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIEYuYXBwbHkodGhpcyxhcmd1bWVudHMpfSl9LHtrZXk6ImNsZWFudXAiLHZhbHVlOihDPXkoZygpLm1hcmsoKGZ1bmN0aW9uIGUoKXt2YXIgdCxyLG4sYSxpPWFyZ3VtZW50cztyZXR1cm4gZygpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiB0PWkubGVuZ3RoPjAmJnZvaWQgMCE9PWlbMF0mJmlbMF0sKDAsYy5jbGVhckdsb2JhbENhY2hlcykoKSx0aGlzLmdsb2JhbEltYWdlQ2FjaGUuY2xlYXIodCksdGhpcy5wYWdlS2lkc0NvdW50Q2FjaGUuY2xlYXIoKSx0aGlzLnBhZ2VJbmRleENhY2hlLmNsZWFyKCksdGhpcy5ub25CbGVuZE1vZGVzU2V0LmNsZWFyKCksZS5uZXh0PTgsUHJvbWlzZS5hbGwodGhpcy5mb250Q2FjaGUpO2Nhc2UgODpyPWUuc2VudCxuPWIocik7dHJ5e2ZvcihuLnMoKTshKGE9bi5uKCkpLmRvbmU7KWRlbGV0ZSBhLnZhbHVlLmRpY3QuY2FjaGVLZXl9Y2F0Y2goZSl7bi5lKGUpfWZpbmFsbHl7bi5mKCl9dGhpcy5mb250Q2FjaGUuY2xlYXIoKSx0aGlzLmJ1aWx0SW5DTWFwQ2FjaGUuY2xlYXIoKSx0aGlzLnN0YW5kYXJkRm9udERhdGFDYWNoZS5jbGVhcigpO2Nhc2UgMTQ6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKSxmdW5jdGlvbigpe3JldHVybiBDLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pfSx7a2V5OiJnZXRQYWdlRGljdCIsdmFsdWU6KEE9eShnKCkubWFyaygoZnVuY3Rpb24gZSh0KXt2YXIgcixuLG8scyxjLHUsbCxmLGgsZCxwLHYseSxtLGIsdztyZXR1cm4gZygpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnI9W3RoaXMudG9wbGV2ZWxQYWdlc0RpY3RdLG49bmV3IGkuUmVmU2V0LChvPXRoaXMuX2NhdERpY3QuZ2V0UmF3KCJQYWdlcyIpKWluc3RhbmNlb2YgaS5SZWYmJm4ucHV0KG8pLHM9dGhpcy54cmVmLGM9dGhpcy5wYWdlS2lkc0NvdW50Q2FjaGUsdT10aGlzLnBhZ2VJbmRleENhY2hlLGw9MDtjYXNlIDY6aWYoIXIubGVuZ3RoKXtlLm5leHQ9Njc7YnJlYWt9aWYoISgoZj1yLnBvcCgpKWluc3RhbmNlb2YgaS5SZWYpKXtlLm5leHQ9MzQ7YnJlYWt9aWYoISgoaD1jLmdldChmKSk+PTAmJmwraDw9dCkpe2UubmV4dD0xMzticmVha31yZXR1cm4gbCs9aCxlLmFicnVwdCgiY29udGludWUiLDYpO2Nhc2UgMTM6aWYoIW4uaGFzKGYpKXtlLm5leHQ9MTU7YnJlYWt9dGhyb3cgbmV3IGEuRm9ybWF0RXJyb3IoIlBhZ2VzIHRyZWUgY29udGFpbnMgY2lyY3VsYXIgcmVmZXJlbmNlLiIpO2Nhc2UgMTU6cmV0dXJuIG4ucHV0KGYpLGUubmV4dD0xOCxzLmZldGNoQXN5bmMoZik7Y2FzZSAxODppZighKChkPWUuc2VudClpbnN0YW5jZW9mIGkuRGljdCkpe2UubmV4dD0zMjticmVha31pZighKChwPWQuZ2V0UmF3KCJUeXBlIikpaW5zdGFuY2VvZiBpLlJlZikpe2UubmV4dD0yNTticmVha31yZXR1cm4gZS5uZXh0PTI0LHMuZmV0Y2hBc3luYyhwKTtjYXNlIDI0OnA9ZS5zZW50O2Nhc2UgMjU6aWYoISgwLGkuaXNOYW1lKShwLCJQYWdlIikmJmQuaGFzKCJLaWRzIikpe2UubmV4dD0zMjticmVha31pZihjLmhhcyhmKXx8Yy5wdXQoZiwxKSx1LmhhcyhmKXx8dS5wdXQoZixsKSxsIT09dCl7ZS5uZXh0PTMwO2JyZWFrfXJldHVybiBlLmFicnVwdCgicmV0dXJuIixbZCxmXSk7Y2FzZSAzMDpyZXR1cm4gbCsrLGUuYWJydXB0KCJjb250aW51ZSIsNik7Y2FzZSAzMjpyZXR1cm4gci5wdXNoKGQpLGUuYWJydXB0KCJjb250aW51ZSIsNik7Y2FzZSAzNDppZihmIGluc3RhbmNlb2YgaS5EaWN0KXtlLm5leHQ9MzY7YnJlYWt9dGhyb3cgbmV3IGEuRm9ybWF0RXJyb3IoIlBhZ2UgZGljdGlvbmFyeSBraWQgcmVmZXJlbmNlIHBvaW50cyB0byB3cm9uZyB0eXBlIG9mIG9iamVjdC4iKTtjYXNlIDM2OmlmKHY9Zi5vYmpJZCwhKCh5PWYuZ2V0UmF3KCJDb3VudCIpKWluc3RhbmNlb2YgaS5SZWYpKXtlLm5leHQ9NDI7YnJlYWt9cmV0dXJuIGUubmV4dD00MSxzLmZldGNoQXN5bmMoeSk7Y2FzZSA0MTp5PWUuc2VudDtjYXNlIDQyOmlmKCEoTnVtYmVyLmlzSW50ZWdlcih5KSYmeT49MCkpe2UubmV4dD00NzticmVha31pZih2JiYhYy5oYXModikmJmMucHV0KHYseSksIShsK3k8PXQpKXtlLm5leHQ9NDc7YnJlYWt9cmV0dXJuIGwrPXksZS5hYnJ1cHQoImNvbnRpbnVlIiw2KTtjYXNlIDQ3OmlmKCEoKG09Zi5nZXRSYXcoIktpZHMiKSlpbnN0YW5jZW9mIGkuUmVmKSl7ZS5uZXh0PTUyO2JyZWFrfXJldHVybiBlLm5leHQ9NTEscy5mZXRjaEFzeW5jKG0pO2Nhc2UgNTE6bT1lLnNlbnQ7Y2FzZSA1MjppZihBcnJheS5pc0FycmF5KG0pKXtlLm5leHQ9NjQ7YnJlYWt9aWYoISgoYj1mLmdldFJhdygiVHlwZSIpKWluc3RhbmNlb2YgaS5SZWYpKXtlLm5leHQ9NTg7YnJlYWt9cmV0dXJuIGUubmV4dD01NyxzLmZldGNoQXN5bmMoYik7Y2FzZSA1NzpiPWUuc2VudDtjYXNlIDU4OmlmKCEoMCxpLmlzTmFtZSkoYiwiUGFnZSIpJiZmLmhhcygiS2lkcyIpKXtlLm5leHQ9NjM7YnJlYWt9aWYobCE9PXQpe2UubmV4dD02MTticmVha31yZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsW2YsbnVsbF0pO2Nhc2UgNjE6cmV0dXJuIGwrKyxlLmFicnVwdCgiY29udGludWUiLDYpO2Nhc2UgNjM6dGhyb3cgbmV3IGEuRm9ybWF0RXJyb3IoIlBhZ2UgZGljdGlvbmFyeSBraWRzIG9iamVjdCBpcyBub3QgYW4gYXJyYXkuIik7Y2FzZSA2NDpmb3Iodz1tLmxlbmd0aC0xO3c+PTA7dy0tKXIucHVzaChtW3ddKTtlLm5leHQ9NjticmVhaztjYXNlIDY3OnRocm93IG5ldyBFcnJvcigiUGFnZSBpbmRleCAiLmNvbmNhdCh0LCIgbm90IGZvdW5kLiIpKTtjYXNlIDY4OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSksZnVuY3Rpb24oZSl7cmV0dXJuIEEuYXBwbHkodGhpcyxhcmd1bWVudHMpfSl9LHtrZXk6ImdldEFsbFBhZ2VEaWN0cyIsdmFsdWU6KE89eShnKCkubWFyaygoZnVuY3Rpb24gZSgpe3ZhciB0LHIsbyxzLGMsdSxsLGYsaCxkLHAsdix5LG0sYix3LGssUyx4PWFyZ3VtZW50cztyZXR1cm4gZygpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnA9ZnVuY3Rpb24oZSl7aWYoZSBpbnN0YW5jZW9mIG4uWFJlZkVudHJ5RXhjZXB0aW9uJiYhdCl0aHJvdyBlO3QmJnImJjA9PT1oJiYoKDAsYS53YXJuKSgnZ2V0QWxsUGFnZURpY3RzIC0gU2tpcHBpbmcgaW52YWxpZCBmaXJzdCBwYWdlOiAiJy5jb25jYXQoZSwnIi4nKSksZT1pLkRpY3QuZW1wdHkpLHUuc2V0KGgrKyxbZSxudWxsXSl9LGQ9ZnVuY3Rpb24oZSx0KXt0JiYhZi5oYXModCkmJmYucHV0KHQsaCksdS5zZXQoaCsrLFtlLHRdKX0sdD14Lmxlbmd0aD4wJiZ2b2lkIDAhPT14WzBdJiZ4WzBdLHI9dGhpcy5wZGZNYW5hZ2VyLmV2YWx1YXRvck9wdGlvbnMuaWdub3JlRXJyb3JzLG89W3tjdXJyZW50Tm9kZTp0aGlzLnRvcGxldmVsUGFnZXNEaWN0LHBvc0luS2lkczowfV0scz1uZXcgaS5SZWZTZXQsKGM9dGhpcy5fY2F0RGljdC5nZXRSYXcoIlBhZ2VzIikpaW5zdGFuY2VvZiBpLlJlZiYmcy5wdXQoYyksdT1uZXcgTWFwLGw9dGhpcy54cmVmLGY9dGhpcy5wYWdlSW5kZXhDYWNoZSxoPTA7Y2FzZSAxMDppZighKG8ubGVuZ3RoPjApKXtlLm5leHQ9NzA7YnJlYWt9aWYodj1vLmF0KC0xKSx5PXYuY3VycmVudE5vZGUsbT12LnBvc0luS2lkcywhKChiPXkuZ2V0UmF3KCJLaWRzIikpaW5zdGFuY2VvZiBpLlJlZikpe2UubmV4dD0yNTticmVha31yZXR1cm4gZS5wcmV2PTE1LGUubmV4dD0xOCxsLmZldGNoQXN5bmMoYik7Y2FzZSAxODpiPWUuc2VudCxlLm5leHQ9MjU7YnJlYWs7Y2FzZSAyMTpyZXR1cm4gZS5wcmV2PTIxLGUudDA9ZS5jYXRjaCgxNSkscChlLnQwKSxlLmFicnVwdCgiYnJlYWsiLDcwKTtjYXNlIDI1OmlmKEFycmF5LmlzQXJyYXkoYikpe2UubmV4dD0yODticmVha31yZXR1cm4gcChuZXcgYS5Gb3JtYXRFcnJvcigiUGFnZSBkaWN0aW9uYXJ5IGtpZHMgb2JqZWN0IGlzIG5vdCBhbiBhcnJheS4iKSksZS5hYnJ1cHQoImJyZWFrIiw3MCk7Y2FzZSAyODppZighKG0+PWIubGVuZ3RoKSl7ZS5uZXh0PTMxO2JyZWFrfXJldHVybiBvLnBvcCgpLGUuYWJydXB0KCJjb250aW51ZSIsMTApO2Nhc2UgMzE6aWYodz1iW21dLGs9dm9pZCAwLCEodyBpbnN0YW5jZW9mIGkuUmVmKSl7ZS5uZXh0PTUwO2JyZWFrfWlmKCFzLmhhcyh3KSl7ZS5uZXh0PTM3O2JyZWFrfXJldHVybiBwKG5ldyBhLkZvcm1hdEVycm9yKCJQYWdlcyB0cmVlIGNvbnRhaW5zIGNpcmN1bGFyIHJlZmVyZW5jZS4iKSksZS5hYnJ1cHQoImJyZWFrIiw3MCk7Y2FzZSAzNzpyZXR1cm4gcy5wdXQodyksZS5wcmV2PTM4LGUubmV4dD00MSxsLmZldGNoQXN5bmModyk7Y2FzZSA0MTprPWUuc2VudCxlLm5leHQ9NDg7YnJlYWs7Y2FzZSA0NDpyZXR1cm4gZS5wcmV2PTQ0LGUudDE9ZS5jYXRjaCgzOCkscChlLnQxKSxlLmFicnVwdCgiYnJlYWsiLDcwKTtjYXNlIDQ4OmUubmV4dD01MTticmVhaztjYXNlIDUwOms9dztjYXNlIDUxOmlmKGsgaW5zdGFuY2VvZiBpLkRpY3Qpe2UubmV4dD01NDticmVha31yZXR1cm4gcChuZXcgYS5Gb3JtYXRFcnJvcigiUGFnZSBkaWN0aW9uYXJ5IGtpZCByZWZlcmVuY2UgcG9pbnRzIHRvIHdyb25nIHR5cGUgb2Ygb2JqZWN0LiIpKSxlLmFicnVwdCgiYnJlYWsiLDcwKTtjYXNlIDU0OmlmKCEoKFM9ay5nZXRSYXcoIlR5cGUiKSlpbnN0YW5jZW9mIGkuUmVmKSl7ZS5uZXh0PTY2O2JyZWFrfXJldHVybiBlLnByZXY9NTYsZS5uZXh0PTU5LGwuZmV0Y2hBc3luYyhTKTtjYXNlIDU5OlM9ZS5zZW50LGUubmV4dD02NjticmVhaztjYXNlIDYyOnJldHVybiBlLnByZXY9NjIsZS50Mj1lLmNhdGNoKDU2KSxwKGUudDIpLGUuYWJydXB0KCJicmVhayIsNzApO2Nhc2UgNjY6KDAsaS5pc05hbWUpKFMsIlBhZ2UiKXx8IWsuaGFzKCJLaWRzIik/ZChrLHcgaW5zdGFuY2VvZiBpLlJlZj93Om51bGwpOm8ucHVzaCh7Y3VycmVudE5vZGU6ayxwb3NJbktpZHM6MH0pLHYucG9zSW5LaWRzKyssZS5uZXh0PTEwO2JyZWFrO2Nhc2UgNzA6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHUpO2Nhc2UgNzE6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMsW1sxNSwyMV0sWzM4LDQ0XSxbNTYsNjJdXSl9KSkpLGZ1bmN0aW9uKCl7cmV0dXJuIE8uYXBwbHkodGhpcyxhcmd1bWVudHMpfSl9LHtrZXk6ImdldFBhZ2VJbmRleCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxyPXRoaXMucGFnZUluZGV4Q2FjaGUuZ2V0KGUpO2lmKHZvaWQgMCE9PXIpcmV0dXJuIFByb21pc2UucmVzb2x2ZShyKTt2YXIgbj10aGlzLnhyZWYsbz0wO3JldHVybiBmdW5jdGlvbiByKHMpe3JldHVybiBmdW5jdGlvbih0KXt2YXIgcixvPTA7cmV0dXJuIG4uZmV0Y2hBc3luYyh0KS50aGVuKChmdW5jdGlvbihuKXtpZigoMCxpLmlzUmVmc0VxdWFsKSh0LGUpJiYhKDAsaS5pc0RpY3QpKG4sIlBhZ2UiKSYmIShuIGluc3RhbmNlb2YgaS5EaWN0JiYhbi5oYXMoIlR5cGUiKSYmbi5oYXMoIkNvbnRlbnRzIikpKXRocm93IG5ldyBhLkZvcm1hdEVycm9yKCJUaGUgcmVmZXJlbmNlIGRvZXMgbm90IHBvaW50IHRvIGEgL1BhZ2UgZGljdGlvbmFyeS4iKTtpZighbilyZXR1cm4gbnVsbDtpZighKG4gaW5zdGFuY2VvZiBpLkRpY3QpKXRocm93IG5ldyBhLkZvcm1hdEVycm9yKCJOb2RlIG11c3QgYmUgYSBkaWN0aW9uYXJ5LiIpO3JldHVybiByPW4uZ2V0UmF3KCJQYXJlbnQiKSxuLmdldEFzeW5jKCJQYXJlbnQiKX0pKS50aGVuKChmdW5jdGlvbihlKXtpZighZSlyZXR1cm4gbnVsbDtpZighKGUgaW5zdGFuY2VvZiBpLkRpY3QpKXRocm93IG5ldyBhLkZvcm1hdEVycm9yKCJQYXJlbnQgbXVzdCBiZSBhIGRpY3Rpb25hcnkuIik7cmV0dXJuIGUuZ2V0QXN5bmMoIktpZHMiKX0pKS50aGVuKChmdW5jdGlvbihlKXtpZighZSlyZXR1cm4gbnVsbDt2YXIgcyxjPVtdLHU9ITEsbD1iKGUpO3RyeXtmb3IobC5zKCk7IShzPWwubigpKS5kb25lOyl7dmFyIGY9cy52YWx1ZTtpZighKGYgaW5zdGFuY2VvZiBpLlJlZikpdGhyb3cgbmV3IGEuRm9ybWF0RXJyb3IoIktpZCBtdXN0IGJlIGEgcmVmZXJlbmNlLiIpO2lmKCgwLGkuaXNSZWZzRXF1YWwpKGYsdCkpe3U9ITA7YnJlYWt9Yy5wdXNoKG4uZmV0Y2hBc3luYyhmKS50aGVuKChmdW5jdGlvbihlKXtpZighKGUgaW5zdGFuY2VvZiBpLkRpY3QpKXRocm93IG5ldyBhLkZvcm1hdEVycm9yKCJLaWQgbm9kZSBtdXN0IGJlIGEgZGljdGlvbmFyeS4iKTtlLmhhcygiQ291bnQiKT9vKz1lLmdldCgiQ291bnQiKTpvKyt9KSkpfX1jYXRjaChlKXtsLmUoZSl9ZmluYWxseXtsLmYoKX1pZighdSl0aHJvdyBuZXcgYS5Gb3JtYXRFcnJvcigiS2lkIHJlZmVyZW5jZSBub3QgZm91bmQgaW4gcGFyZW50J3Mga2lkcy4iKTtyZXR1cm4gUHJvbWlzZS5hbGwoYykudGhlbigoZnVuY3Rpb24oKXtyZXR1cm5bbyxyXX0pKX0pKX0ocykudGhlbigoZnVuY3Rpb24obil7aWYoIW4pcmV0dXJuIHQucGFnZUluZGV4Q2FjaGUucHV0KGUsbyksbzt2YXIgYT1tKG4sMiksaT1hWzBdLHM9YVsxXTtyZXR1cm4gbys9aSxyKHMpfSkpfShlKX19LHtrZXk6ImJhc2VVcmwiLGdldDpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX2NhdERpY3QuZ2V0KCJVUkkiKTtpZihlIGluc3RhbmNlb2YgaS5EaWN0KXt2YXIgdD1lLmdldCgiQmFzZSIpO2lmKCJzdHJpbmciPT10eXBlb2YgdCl7dmFyIHI9KDAsYS5jcmVhdGVWYWxpZEFic29sdXRlVXJsKSh0LG51bGwse3RyeUNvbnZlcnRFbmNvZGluZzohMH0pO2lmKHIpcmV0dXJuKDAsYS5zaGFkb3cpKHRoaXMsImJhc2VVcmwiLHIuaHJlZil9fXJldHVybigwLGEuc2hhZG93KSh0aGlzLCJiYXNlVXJsIixudWxsKX19XSx2PVt7a2V5OiJwYXJzZURlc3REaWN0aW9uYXJ5Iix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1lLmRlc3REaWN0O2lmKHQgaW5zdGFuY2VvZiBpLkRpY3Qpe3ZhciByPWUucmVzdWx0T2JqO2lmKCJvYmplY3QiPT09cChyKSl7dmFyIG8sYyx1PWUuZG9jQmFzZVVybHx8bnVsbCxsPWUuZG9jQXR0YWNobWVudHN8fG51bGwsZj10LmdldCgiQSIpO2lmKGYgaW5zdGFuY2VvZiBpLkRpY3R8fCh0LmhhcygiRGVzdCIpP2Y9dC5nZXQoIkRlc3QiKTooZj10LmdldCgiQUEiKSlpbnN0YW5jZW9mIGkuRGljdCYmKGYuaGFzKCJEIik/Zj1mLmdldCgiRCIpOmYuaGFzKCJVIikmJihmPWYuZ2V0KCJVIikpKSksZiBpbnN0YW5jZW9mIGkuRGljdCl7dmFyIGg9Zi5nZXQoIlMiKTtpZighKGggaW5zdGFuY2VvZiBpLk5hbWUpKXJldHVybiB2b2lkKDAsYS53YXJuKSgicGFyc2VEZXN0RGljdGlvbmFyeTogSW52YWxpZCB0eXBlIGluIEFjdGlvbiBkaWN0aW9uYXJ5LiIpO3ZhciBkPWgubmFtZTtzd2l0Y2goZCl7Y2FzZSJSZXNldEZvcm0iOnZhciBnLHY9Zi5nZXQoIkZsYWdzIikseT0wPT0oMSYoIm51bWJlciI9PXR5cGVvZiB2P3Y6MCkpLG09W10sdz1bXSxrPWIoZi5nZXQoIkZpZWxkcyIpfHxbXSk7dHJ5e2ZvcihrLnMoKTshKGc9ay5uKCkpLmRvbmU7KXt2YXIgUz1nLnZhbHVlO1MgaW5zdGFuY2VvZiBpLlJlZj93LnB1c2goUy50b1N0cmluZygpKToic3RyaW5nIj09dHlwZW9mIFMmJm0ucHVzaCgoMCxhLnN0cmluZ1RvUERGU3RyaW5nKShTKSl9fWNhdGNoKGUpe2suZShlKX1maW5hbGx5e2suZigpfXIucmVzZXRGb3JtPXtmaWVsZHM6bSxyZWZzOncsaW5jbHVkZTp5fTticmVhaztjYXNlIlVSSSI6KG89Zi5nZXQoIlVSSSIpKWluc3RhbmNlb2YgaS5OYW1lJiYobz0iLyIrby5uYW1lKTticmVhaztjYXNlIkdvVG8iOmM9Zi5nZXQoIkQiKTticmVhaztjYXNlIkxhdW5jaCI6Y2FzZSJHb1RvUiI6dmFyIHg9Zi5nZXQoIkYiKTt4IGluc3RhbmNlb2YgaS5EaWN0P289eC5nZXQoIkYiKXx8bnVsbDoic3RyaW5nIj09dHlwZW9mIHgmJihvPXgpO3ZhciBPPWYuZ2V0KCJEIik7aWYoTyYmKE8gaW5zdGFuY2VvZiBpLk5hbWUmJihPPU8ubmFtZSksInN0cmluZyI9PXR5cGVvZiBvKSl7dmFyIEE9by5zcGxpdCgiIyIpWzBdOyJzdHJpbmciPT10eXBlb2YgTz9vPUErIiMiK086QXJyYXkuaXNBcnJheShPKSYmKG89QSsiIyIrSlNPTi5zdHJpbmdpZnkoTykpfXZhciBDPWYuZ2V0KCJOZXdXaW5kb3ciKTsiYm9vbGVhbiI9PXR5cGVvZiBDJiYoci5uZXdXaW5kb3c9Qyk7YnJlYWs7Y2FzZSJHb1RvRSI6dmFyIEYsUD1mLmdldCgiVCIpO2lmKGwmJlAgaW5zdGFuY2VvZiBpLkRpY3Qpe3ZhciBUPVAuZ2V0KCJSIiksST1QLmdldCgiTiIpOygwLGkuaXNOYW1lKShULCJDIikmJiJzdHJpbmciPT10eXBlb2YgSSYmKEY9bFsoMCxhLnN0cmluZ1RvUERGU3RyaW5nKShJKV0pfUY/ci5hdHRhY2htZW50PUY6KDAsYS53YXJuKSgncGFyc2VEZXN0RGljdGlvbmFyeSAtIHVuaW1wbGVtZW50ZWQgIkdvVG9FIiBhY3Rpb24uJyk7YnJlYWs7Y2FzZSJOYW1lZCI6dmFyIEU9Zi5nZXQoIk4iKTtFIGluc3RhbmNlb2YgaS5OYW1lJiYoci5hY3Rpb249RS5uYW1lKTticmVhaztjYXNlIlNldE9DR1N0YXRlIjp2YXIgaj1mLmdldCgiU3RhdGUiKSxNPWYuZ2V0KCJQcmVzZXJ2ZVJCIik7aWYoIUFycmF5LmlzQXJyYXkoail8fDA9PT1qLmxlbmd0aClicmVhazt2YXIgXyxMPVtdLFI9YihqKTt0cnl7Zm9yKFIucygpOyEoXz1SLm4oKSkuZG9uZTspe3ZhciBOPV8udmFsdWU7aWYoTiBpbnN0YW5jZW9mIGkuTmFtZSlzd2l0Y2goTi5uYW1lKXtjYXNlIk9OIjpjYXNlIk9GRiI6Y2FzZSJUb2dnbGUiOkwucHVzaChOLm5hbWUpfWVsc2UgTiBpbnN0YW5jZW9mIGkuUmVmJiZMLnB1c2goTi50b1N0cmluZygpKX19Y2F0Y2goZSl7Ui5lKGUpfWZpbmFsbHl7Ui5mKCl9aWYoTC5sZW5ndGghPT1qLmxlbmd0aClicmVhaztyLnNldE9DR1N0YXRlPXtzdGF0ZTpMLHByZXNlcnZlUkI6ImJvb2xlYW4iIT10eXBlb2YgTXx8TX07YnJlYWs7Y2FzZSJKYXZhU2NyaXB0Ijp2YXIgRCxCPWYuZ2V0KCJKUyIpO0IgaW5zdGFuY2VvZiBzLkJhc2VTdHJlYW0/RD1CLmdldFN0cmluZygpOiJzdHJpbmciPT10eXBlb2YgQiYmKEQ9Qik7dmFyIFU9RCYmKDAsbi5yZWNvdmVySnNVUkwpKCgwLGEuc3RyaW5nVG9QREZTdHJpbmcpKEQpKTtpZihVKXtvPVUudXJsLHIubmV3V2luZG93PVUubmV3V2luZG93O2JyZWFrfWRlZmF1bHQ6aWYoIkphdmFTY3JpcHQiPT09ZHx8IlN1Ym1pdEZvcm0iPT09ZClicmVhazsoMCxhLndhcm4pKCdwYXJzZURlc3REaWN0aW9uYXJ5IC0gdW5zdXBwb3J0ZWQgYWN0aW9uOiAiJy5jb25jYXQoZCwnIi4nKSl9fWVsc2UgdC5oYXMoIkRlc3QiKSYmKGM9dC5nZXQoIkRlc3QiKSk7aWYoInN0cmluZyI9PXR5cGVvZiBvKXt2YXIgJD0oMCxhLmNyZWF0ZVZhbGlkQWJzb2x1dGVVcmwpKG8sdSx7YWRkRGVmYXVsdFByb3RvY29sOiEwLHRyeUNvbnZlcnRFbmNvZGluZzohMH0pOyQmJihyLnVybD0kLmhyZWYpLHIudW5zYWZlVXJsPW99YyYmKGMgaW5zdGFuY2VvZiBpLk5hbWUmJihjPWMubmFtZSksInN0cmluZyI9PXR5cGVvZiBjP3IuZGVzdD0oMCxhLnN0cmluZ1RvUERGU3RyaW5nKShjKTpBcnJheS5pc0FycmF5KGMpJiYoci5kZXN0PWMpKX1lbHNlKDAsYS53YXJuKSgicGFyc2VEZXN0RGljdGlvbmFyeTogYHJlc3VsdE9iamAgbXVzdCBiZSBhbiBvYmplY3QuIil9ZWxzZSgwLGEud2FybikoInBhcnNlRGVzdERpY3Rpb25hcnk6IGBkZXN0RGljdGAgbXVzdCBiZSBhIGRpY3Rpb25hcnkuIil9fV0sciYmUyh0LnByb3RvdHlwZSxyKSx2JiZTKHQsdiksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZX0oKTt0LkNhdGFsb2c9T30sKGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0Lk51bWJlclRyZWU9dC5OYW1lVHJlZT12b2lkIDA7dmFyIG49cigxMzQpLGE9cigyKTtmdW5jdGlvbiBpKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLHQmJm8oZSx0KX1mdW5jdGlvbiBvKGUsdCl7cmV0dXJuIG89T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5fX3Byb3RvX189dCxlfSxvKGUsdCl9ZnVuY3Rpb24gcyhlKXt2YXIgdD1mdW5jdGlvbigpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0KXJldHVybiExO2lmKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sKGZ1bmN0aW9uKCl7fSkpKSwhMH1jYXRjaChlKXtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHIsbj1jKGUpO2lmKHQpe3ZhciBhPWModGhpcykuY29uc3RydWN0b3I7cj1SZWZsZWN0LmNvbnN0cnVjdChuLGFyZ3VtZW50cyxhKX1lbHNlIHI9bi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYodCYmKCJvYmplY3QiPT09dSh0KXx8ImZ1bmN0aW9uIj09dHlwZW9mIHQpKXJldHVybiB0O2lmKHZvaWQgMCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24oZSl7aWYodm9pZCAwPT09ZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBlfShlKX0odGhpcyxyKX19ZnVuY3Rpb24gYyhlKXtyZXR1cm4gYz1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihlKXtyZXR1cm4gZS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihlKX0sYyhlKX1mdW5jdGlvbiB1KGUpe3JldHVybiB1PSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSx1KGUpfWZ1bmN0aW9uIGwoZSx0KXt2YXIgcj0idW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlWyJAQGl0ZXJhdG9yIl07aWYoIXIpe2lmKEFycmF5LmlzQXJyYXkoZSl8fChyPWZ1bmN0aW9uKGUsdCl7aWYoZSl7aWYoInN0cmluZyI9PXR5cGVvZiBlKXJldHVybiBmKGUsdCk7dmFyIHI9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO3JldHVybiJPYmplY3QiPT09ciYmZS5jb25zdHJ1Y3RvciYmKHI9ZS5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PXJ8fCJTZXQiPT09cj9BcnJheS5mcm9tKGUpOiJBcmd1bWVudHMiPT09cnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3Qocik/ZihlLHQpOnZvaWQgMH19KGUpKXx8dCYmZSYmIm51bWJlciI9PXR5cGVvZiBlLmxlbmd0aCl7ciYmKGU9cik7dmFyIG49MCxhPWZ1bmN0aW9uKCl7fTtyZXR1cm57czphLG46ZnVuY3Rpb24oKXtyZXR1cm4gbj49ZS5sZW5ndGg/e2RvbmU6ITB9Ontkb25lOiExLHZhbHVlOmVbbisrXX19LGU6ZnVuY3Rpb24oZSl7dGhyb3cgZX0sZjphfX10aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gaXRlcmF0ZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9dmFyIGksbz0hMCxzPSExO3JldHVybntzOmZ1bmN0aW9uKCl7cj1yLmNhbGwoZSl9LG46ZnVuY3Rpb24oKXt2YXIgZT1yLm5leHQoKTtyZXR1cm4gbz1lLmRvbmUsZX0sZTpmdW5jdGlvbihlKXtzPSEwLGk9ZX0sZjpmdW5jdGlvbigpe3RyeXtvfHxudWxsPT1yLnJldHVybnx8ci5yZXR1cm4oKX1maW5hbGx5e2lmKHMpdGhyb3cgaX19fX1mdW5jdGlvbiBmKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciByPTAsbj1uZXcgQXJyYXkodCk7cjx0O3IrKyluW3JdPWVbcl07cmV0dXJuIG59ZnVuY3Rpb24gaChlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIGQoZSx0KXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIG49dFtyXTtuLmVudW1lcmFibGU9bi5lbnVtZXJhYmxlfHwhMSxuLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gbiYmKG4ud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCh2b2lkIDAsYT1mdW5jdGlvbihlLHQpe2lmKCJvYmplY3QiIT09dShlKXx8bnVsbD09PWUpcmV0dXJuIGU7dmFyIHI9ZVtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PXIpe3ZhciBuPXIuY2FsbChlLCJzdHJpbmciKTtpZigib2JqZWN0IiE9PXUobikpcmV0dXJuIG47dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4gU3RyaW5nKGUpfShuLmtleSksInN5bWJvbCI9PT11KGEpP2E6U3RyaW5nKGEpKSxuKX12YXIgYX1mdW5jdGlvbiBwKGUsdCxyKXtyZXR1cm4gdCYmZChlLnByb3RvdHlwZSx0KSxyJiZkKGUsciksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZX12YXIgZz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCxyLG4pe2godGhpcyxlKSx0aGlzLmNvbnN0cnVjdG9yPT09ZSYmKDAsYS51bnJlYWNoYWJsZSkoIkNhbm5vdCBpbml0aWFsaXplIE5hbWVPck51bWJlclRyZWUuIiksdGhpcy5yb290PXQsdGhpcy54cmVmPXIsdGhpcy5fdHlwZT1ufXJldHVybiBwKGUsW3trZXk6ImdldEFsbCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgTWFwO2lmKCF0aGlzLnJvb3QpcmV0dXJuIGU7dmFyIHQ9dGhpcy54cmVmLHI9bmV3IG4uUmVmU2V0O3IucHV0KHRoaXMucm9vdCk7Zm9yKHZhciBpPVt0aGlzLnJvb3RdO2kubGVuZ3RoPjA7KXt2YXIgbz10LmZldGNoSWZSZWYoaS5zaGlmdCgpKTtpZihvIGluc3RhbmNlb2Ygbi5EaWN0KWlmKG8uaGFzKCJLaWRzIikpe3ZhciBzPW8uZ2V0KCJLaWRzIik7aWYoIUFycmF5LmlzQXJyYXkocykpY29udGludWU7dmFyIGMsdT1sKHMpO3RyeXtmb3IodS5zKCk7IShjPXUubigpKS5kb25lOyl7dmFyIGY9Yy52YWx1ZTtpZihyLmhhcyhmKSl0aHJvdyBuZXcgYS5Gb3JtYXRFcnJvcignRHVwbGljYXRlIGVudHJ5IGluICInLmNvbmNhdCh0aGlzLl90eXBlLCciIHRyZWUuJykpO2kucHVzaChmKSxyLnB1dChmKX19Y2F0Y2goZSl7dS5lKGUpfWZpbmFsbHl7dS5mKCl9fWVsc2V7dmFyIGg9by5nZXQodGhpcy5fdHlwZSk7aWYoQXJyYXkuaXNBcnJheShoKSlmb3IodmFyIGQ9MCxwPWgubGVuZ3RoO2Q8cDtkKz0yKWUuc2V0KHQuZmV0Y2hJZlJlZihoW2RdKSx0LmZldGNoSWZSZWYoaFtkKzFdKSl9fXJldHVybiBlfX0se2tleToiZ2V0Iix2YWx1ZTpmdW5jdGlvbihlKXtpZighdGhpcy5yb290KXJldHVybiBudWxsO2Zvcih2YXIgdD10aGlzLnhyZWYscj10LmZldGNoSWZSZWYodGhpcy5yb290KSxuPTA7ci5oYXMoIktpZHMiKTspe2lmKCsrbj4xMClyZXR1cm4oMCxhLndhcm4pKCdTZWFyY2ggZGVwdGggbGltaXQgcmVhY2hlZCBmb3IgIicuY29uY2F0KHRoaXMuX3R5cGUsJyIgdHJlZS4nKSksbnVsbDt2YXIgaT1yLmdldCgiS2lkcyIpO2lmKCFBcnJheS5pc0FycmF5KGkpKXJldHVybiBudWxsO2Zvcih2YXIgbz0wLHM9aS5sZW5ndGgtMTtvPD1zOyl7dmFyIGM9bytzPj4xLHU9dC5mZXRjaElmUmVmKGlbY10pLGw9dS5nZXQoIkxpbWl0cyIpO2lmKGU8dC5mZXRjaElmUmVmKGxbMF0pKXM9Yy0xO2Vsc2V7aWYoIShlPnQuZmV0Y2hJZlJlZihsWzFdKSkpe3I9dTticmVha31vPWMrMX19aWYobz5zKXJldHVybiBudWxsfXZhciBmPXIuZ2V0KHRoaXMuX3R5cGUpO2lmKEFycmF5LmlzQXJyYXkoZikpZm9yKHZhciBoPTAsZD1mLmxlbmd0aC0yO2g8PWQ7KXt2YXIgcD1oK2Q+PjEsZz1wKygxJnApLHY9dC5mZXRjaElmUmVmKGZbZ10pO2lmKGU8dilkPWctMjtlbHNle2lmKCEoZT52KSlyZXR1cm4gdC5mZXRjaElmUmVmKGZbZysxXSk7aD1nKzJ9fXJldHVybiBudWxsfX1dKSxlfSgpLHY9ZnVuY3Rpb24oZSl7aShyLGUpO3ZhciB0PXMocik7ZnVuY3Rpb24gcihlLG4pe3JldHVybiBoKHRoaXMsciksdC5jYWxsKHRoaXMsZSxuLCJOYW1lcyIpfXJldHVybiBwKHIpfShnKTt0Lk5hbWVUcmVlPXY7dmFyIHk9ZnVuY3Rpb24oZSl7aShyLGUpO3ZhciB0PXMocik7ZnVuY3Rpb24gcihlLG4pe3JldHVybiBoKHRoaXMsciksdC5jYWxsKHRoaXMsZSxuLCJOdW1zIil9cmV0dXJuIHAocil9KGcpO3QuTnVtYmVyVHJlZT15fSwoZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuY2xlYXJHbG9iYWxDYWNoZXM9ZnVuY3Rpb24oKXsoMCxuLmNsZWFyUHJpbWl0aXZlQ2FjaGVzKSgpLCgwLGEuY2xlYXJVbmljb2RlQ2FjaGVzKSgpfTt2YXIgbj1yKDEzNCksYT1yKDE2OSl9LChlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5GaWxlU3BlYz12b2lkIDA7dmFyIG49cigyKSxhPXIoMTM2KSxpPXIoMTM0KTtmdW5jdGlvbiBvKGUpe3JldHVybiBvPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSxvKGUpfWZ1bmN0aW9uIHMoZSx0KXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIG49dFtyXTtuLmVudW1lcmFibGU9bi5lbnVtZXJhYmxlfHwhMSxuLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gbiYmKG4ud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCh2b2lkIDAsYT1mdW5jdGlvbihlLHQpe2lmKCJvYmplY3QiIT09byhlKXx8bnVsbD09PWUpcmV0dXJuIGU7dmFyIHI9ZVtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PXIpe3ZhciBuPXIuY2FsbChlLCJzdHJpbmciKTtpZigib2JqZWN0IiE9PW8obikpcmV0dXJuIG47dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4gU3RyaW5nKGUpfShuLmtleSksInN5bWJvbCI9PT1vKGEpP2E6U3RyaW5nKGEpKSxuKX12YXIgYX1mdW5jdGlvbiBjKGUpe3JldHVybiBlLmhhcygiVUYiKT9lLmdldCgiVUYiKTplLmhhcygiRiIpP2UuZ2V0KCJGIik6ZS5oYXMoIlVuaXgiKT9lLmdldCgiVW5peCIpOmUuaGFzKCJNYWMiKT9lLmdldCgiTWFjIik6ZS5oYXMoIkRPUyIpP2UuZ2V0KCJET1MiKTpudWxsfXZhciB1PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0LHIpeyFmdW5jdGlvbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGUpLHQgaW5zdGFuY2VvZiBpLkRpY3QmJih0aGlzLnhyZWY9cix0aGlzLnJvb3Q9dCx0LmhhcygiRlMiKSYmKHRoaXMuZnM9dC5nZXQoIkZTIikpLHRoaXMuZGVzY3JpcHRpb249dC5oYXMoIkRlc2MiKT8oMCxuLnN0cmluZ1RvUERGU3RyaW5nKSh0LmdldCgiRGVzYyIpKToiIix0LmhhcygiUkYiKSYmKDAsbi53YXJuKSgiUmVsYXRlZCBmaWxlIHNwZWNpZmljYXRpb25zIGFyZSBub3Qgc3VwcG9ydGVkIiksdGhpcy5jb250ZW50QXZhaWxhYmxlPSEwLHQuaGFzKCJFRiIpfHwodGhpcy5jb250ZW50QXZhaWxhYmxlPSExLCgwLG4ud2FybikoIk5vbi1lbWJlZGRlZCBmaWxlIHNwZWNpZmljYXRpb25zIGFyZSBub3Qgc3VwcG9ydGVkIikpKX12YXIgdCxyO3JldHVybiB0PWUsKHI9W3trZXk6ImZpbGVuYW1lIixnZXQ6ZnVuY3Rpb24oKXtpZighdGhpcy5fZmlsZW5hbWUmJnRoaXMucm9vdCl7dmFyIGU9Yyh0aGlzLnJvb3QpfHwidW5uYW1lZCI7dGhpcy5fZmlsZW5hbWU9KDAsbi5zdHJpbmdUb1BERlN0cmluZykoZSkucmVwbGFjZSgvXFxcXC9nLCJcXCIpLnJlcGxhY2UoL1xcXC8vZywiLyIpLnJlcGxhY2UoL1xcL2csIi8iKX1yZXR1cm4gdGhpcy5fZmlsZW5hbWV9fSx7a2V5OiJjb250ZW50IixnZXQ6ZnVuY3Rpb24oKXtpZighdGhpcy5jb250ZW50QXZhaWxhYmxlKXJldHVybiBudWxsOyF0aGlzLmNvbnRlbnRSZWYmJnRoaXMucm9vdCYmKHRoaXMuY29udGVudFJlZj1jKHRoaXMucm9vdC5nZXQoIkVGIikpKTt2YXIgZT1udWxsO2lmKHRoaXMuY29udGVudFJlZil7dmFyIHQ9dGhpcy54cmVmLmZldGNoSWZSZWYodGhpcy5jb250ZW50UmVmKTt0IGluc3RhbmNlb2YgYS5CYXNlU3RyZWFtP2U9dC5nZXRCeXRlcygpOigwLG4ud2FybikoIkVtYmVkZGVkIGZpbGUgc3BlY2lmaWNhdGlvbiBwb2ludHMgdG8gbm9uLWV4aXN0aW5nL2ludmFsaWQgY29udGVudCIpfWVsc2UoMCxuLndhcm4pKCJFbWJlZGRlZCBmaWxlIHNwZWNpZmljYXRpb24gZG9lcyBub3QgaGF2ZSBhIGNvbnRlbnQiKTtyZXR1cm4gZX19LHtrZXk6InNlcmlhbGl6YWJsZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJue2ZpbGVuYW1lOnRoaXMuZmlsZW5hbWUsY29udGVudDp0aGlzLmNvbnRlbnR9fX1dKSYmcyh0LnByb3RvdHlwZSxyKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxlfSgpO3QuRmlsZVNwZWM9dX0sKGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0Lk1ldGFkYXRhUGFyc2VyPXZvaWQgMDt2YXIgbj1yKDE5NSk7ZnVuY3Rpb24gYShlKXtyZXR1cm4gYT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZX0sYShlKX1mdW5jdGlvbiBpKGUsdCl7dmFyIHI9InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVsiQEBpdGVyYXRvciJdO2lmKCFyKXtpZihBcnJheS5pc0FycmF5KGUpfHwocj1vKGUpKXx8dCYmZSYmIm51bWJlciI9PXR5cGVvZiBlLmxlbmd0aCl7ciYmKGU9cik7dmFyIG49MCxhPWZ1bmN0aW9uKCl7fTtyZXR1cm57czphLG46ZnVuY3Rpb24oKXtyZXR1cm4gbj49ZS5sZW5ndGg/e2RvbmU6ITB9Ontkb25lOiExLHZhbHVlOmVbbisrXX19LGU6ZnVuY3Rpb24oZSl7dGhyb3cgZX0sZjphfX10aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gaXRlcmF0ZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9dmFyIGkscz0hMCxjPSExO3JldHVybntzOmZ1bmN0aW9uKCl7cj1yLmNhbGwoZSl9LG46ZnVuY3Rpb24oKXt2YXIgZT1yLm5leHQoKTtyZXR1cm4gcz1lLmRvbmUsZX0sZTpmdW5jdGlvbihlKXtjPSEwLGk9ZX0sZjpmdW5jdGlvbigpe3RyeXtzfHxudWxsPT1yLnJldHVybnx8ci5yZXR1cm4oKX1maW5hbGx5e2lmKGMpdGhyb3cgaX19fX1mdW5jdGlvbiBvKGUsdCl7aWYoZSl7aWYoInN0cmluZyI9PXR5cGVvZiBlKXJldHVybiBzKGUsdCk7dmFyIHI9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO3JldHVybiJPYmplY3QiPT09ciYmZS5jb25zdHJ1Y3RvciYmKHI9ZS5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PXJ8fCJTZXQiPT09cj9BcnJheS5mcm9tKGUpOiJBcmd1bWVudHMiPT09cnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3Qocik/cyhlLHQpOnZvaWQgMH19ZnVuY3Rpb24gcyhlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgcj0wLG49bmV3IEFycmF5KHQpO3I8dDtyKyspbltyXT1lW3JdO3JldHVybiBufWZ1bmN0aW9uIGMoZSx0KXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIG49dFtyXTtuLmVudW1lcmFibGU9bi5lbnVtZXJhYmxlfHwhMSxuLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gbiYmKG4ud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCh2b2lkIDAsaT1mdW5jdGlvbihlLHQpe2lmKCJvYmplY3QiIT09YShlKXx8bnVsbD09PWUpcmV0dXJuIGU7dmFyIHI9ZVtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PXIpe3ZhciBuPXIuY2FsbChlLCJzdHJpbmciKTtpZigib2JqZWN0IiE9PWEobikpcmV0dXJuIG47dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4gU3RyaW5nKGUpfShuLmtleSksInN5bWJvbCI9PT1hKGkpP2k6U3RyaW5nKGkpKSxuKX12YXIgaX12YXIgdT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCl7IWZ1bmN0aW9uKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsZSksdD10aGlzLl9yZXBhaXIodCk7dmFyIHI9bmV3IG4uU2ltcGxlWE1MUGFyc2VyKHtsb3dlckNhc2VOYW1lOiEwfSkucGFyc2VGcm9tU3RyaW5nKHQpO3RoaXMuX21ldGFkYXRhTWFwPW5ldyBNYXAsdGhpcy5fZGF0YT10LHImJnRoaXMuX3BhcnNlKHIpfXZhciB0LHI7cmV0dXJuIHQ9ZSwocj1be2tleToiX3JlcGFpciIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZSgvXltePF0rLywiIikucmVwbGFjZSgvPlxcMzc2XFwzNzcoW148XSspL2csKGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPXQucmVwbGFjZSgvXFwoWzAtM10pKFswLTddKShbMC03XSkvZywoZnVuY3Rpb24oZSx0LHIsbil7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoNjQqdCs4KnIrMSpuKX0pKS5yZXBsYWNlKC8mKGFtcHxhcG9zfGd0fGx0fHF1b3QpOy9nLChmdW5jdGlvbihlLHQpe3N3aXRjaCh0KXtjYXNlImFtcCI6cmV0dXJuIiYiO2Nhc2UiYXBvcyI6cmV0dXJuIiciO2Nhc2UiZ3QiOnJldHVybiI+IjtjYXNlImx0IjpyZXR1cm4iPCI7Y2FzZSJxdW90IjpyZXR1cm4nIid9dGhyb3cgbmV3IEVycm9yKCJfcmVwYWlyOiAiLmNvbmNhdCh0LCIgaXNuJ3QgZGVmaW5lZC4iKSl9KSksbj1bXSxhPTAsaT1yLmxlbmd0aDthPGk7YSs9Mil7dmFyIG89MjU2KnIuY2hhckNvZGVBdChhKStyLmNoYXJDb2RlQXQoYSsxKTtvPj0zMiYmbzwxMjcmJjYwIT09byYmNjIhPT1vJiYzOCE9PW8/bi5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUobykpOm4ucHVzaCgiJiN4IisoNjU1MzYrbykudG9TdHJpbmcoMTYpLnN1YnN0cmluZygxKSsiOyIpfXJldHVybiI+IituLmpvaW4oIiIpfSkpfX0se2tleToiX2dldFNlcXVlbmNlIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1lLm5vZGVOYW1lO3JldHVybiJyZGY6YmFnIiE9PXQmJiJyZGY6c2VxIiE9PXQmJiJyZGY6YWx0IiE9PXQ/bnVsbDplLmNoaWxkTm9kZXMuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4icmRmOmxpIj09PWUubm9kZU5hbWV9KSl9fSx7a2V5OiJfcGFyc2VBcnJheSIsdmFsdWU6ZnVuY3Rpb24oZSl7aWYoZS5oYXNDaGlsZE5vZGVzKCkpe3ZhciB0PShuPWUuY2hpbGROb2RlcyxhPTEsZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0obil8fGZ1bmN0aW9uKGUsdCl7dmFyIHI9bnVsbD09ZT9udWxsOiJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbIkBAaXRlcmF0b3IiXTtpZihudWxsIT1yKXt2YXIgbixhLGksbyxzPVtdLGM9ITAsdT0hMTt0cnl7aWYoaT0ocj1yLmNhbGwoZSkpLm5leHQsMD09PXQpe2lmKE9iamVjdChyKSE9PXIpcmV0dXJuO2M9ITF9ZWxzZSBmb3IoOyEoYz0obj1pLmNhbGwocikpLmRvbmUpJiYocy5wdXNoKG4udmFsdWUpLHMubGVuZ3RoIT09dCk7Yz0hMCk7fWNhdGNoKGUpe3U9ITAsYT1lfWZpbmFsbHl7dHJ5e2lmKCFjJiZudWxsIT1yLnJldHVybiYmKG89ci5yZXR1cm4oKSxPYmplY3QobykhPT1vKSlyZXR1cm59ZmluYWxseXtpZih1KXRocm93IGF9fXJldHVybiBzfX0obixhKXx8byhuLGEpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCkpWzBdLHI9dGhpcy5fZ2V0U2VxdWVuY2UodCl8fFtdO3RoaXMuX21ldGFkYXRhTWFwLnNldChlLm5vZGVOYW1lLHIubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZS50ZXh0Q29udGVudC50cmltKCl9KSkpfXZhciBuLGF9fSx7a2V5OiJfcGFyc2UiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWUuZG9jdW1lbnRFbGVtZW50O2lmKCJyZGY6cmRmIiE9PXQubm9kZU5hbWUpZm9yKHQ9dC5maXJzdENoaWxkO3QmJiJyZGY6cmRmIiE9PXQubm9kZU5hbWU7KXQ9dC5uZXh0U2libGluZztpZih0JiYicmRmOnJkZiI9PT10Lm5vZGVOYW1lJiZ0Lmhhc0NoaWxkTm9kZXMoKSl7dmFyIHIsbj1pKHQuY2hpbGROb2Rlcyk7dHJ5e2ZvcihuLnMoKTshKHI9bi5uKCkpLmRvbmU7KXt2YXIgYT1yLnZhbHVlO2lmKCJyZGY6ZGVzY3JpcHRpb24iPT09YS5ub2RlTmFtZSl7dmFyIG8scz1pKGEuY2hpbGROb2Rlcyk7dHJ5e2ZvcihzLnMoKTshKG89cy5uKCkpLmRvbmU7KXt2YXIgYz1vLnZhbHVlLHU9Yy5ub2RlTmFtZTtzd2l0Y2godSl7Y2FzZSIjdGV4dCI6Y29udGludWU7Y2FzZSJkYzpjcmVhdG9yIjpjYXNlImRjOnN1YmplY3QiOnRoaXMuX3BhcnNlQXJyYXkoYyk7Y29udGludWV9dGhpcy5fbWV0YWRhdGFNYXAuc2V0KHUsYy50ZXh0Q29udGVudC50cmltKCkpfX1jYXRjaChlKXtzLmUoZSl9ZmluYWxseXtzLmYoKX19fX1jYXRjaChlKXtuLmUoZSl9ZmluYWxseXtuLmYoKX19fX0se2tleToic2VyaWFsaXphYmxlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm57cGFyc2VkRGF0YTp0aGlzLl9tZXRhZGF0YU1hcCxyYXdEYXRhOnRoaXMuX2RhdGF9fX1dKSYmYyh0LnByb3RvdHlwZSxyKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxlfSgpO3QuTWV0YWRhdGFQYXJzZXI9dX0sKGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LlN0cnVjdFRyZWVSb290PXQuU3RydWN0VHJlZVBhZ2U9dm9pZCAwO3ZhciBuPXIoMTM0KSxhPXIoMiksaT1yKDE5OSk7ZnVuY3Rpb24gbyhlLHQpe3ZhciByPSJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbIkBAaXRlcmF0b3IiXTtpZighcil7aWYoQXJyYXkuaXNBcnJheShlKXx8KHI9ZnVuY3Rpb24oZSx0KXtpZihlKXtpZigic3RyaW5nIj09dHlwZW9mIGUpcmV0dXJuIHMoZSx0KTt2YXIgcj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7cmV0dXJuIk9iamVjdCI9PT1yJiZlLmNvbnN0cnVjdG9yJiYocj1lLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09cnx8IlNldCI9PT1yP0FycmF5LmZyb20oZSk6IkFyZ3VtZW50cyI9PT1yfHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChyKT9zKGUsdCk6dm9pZCAwfX0oZSkpfHx0JiZlJiYibnVtYmVyIj09dHlwZW9mIGUubGVuZ3RoKXtyJiYoZT1yKTt2YXIgbj0wLGE9ZnVuY3Rpb24oKXt9O3JldHVybntzOmEsbjpmdW5jdGlvbigpe3JldHVybiBuPj1lLmxlbmd0aD97ZG9uZTohMH06e2RvbmU6ITEsdmFsdWU6ZVtuKytdfX0sZTpmdW5jdGlvbihlKXt0aHJvdyBlfSxmOmF9fXRocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBpdGVyYXRlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX12YXIgaSxvPSEwLGM9ITE7cmV0dXJue3M6ZnVuY3Rpb24oKXtyPXIuY2FsbChlKX0sbjpmdW5jdGlvbigpe3ZhciBlPXIubmV4dCgpO3JldHVybiBvPWUuZG9uZSxlfSxlOmZ1bmN0aW9uKGUpe2M9ITAsaT1lfSxmOmZ1bmN0aW9uKCl7dHJ5e298fG51bGw9PXIucmV0dXJufHxyLnJldHVybigpfWZpbmFsbHl7aWYoYyl0aHJvdyBpfX19fWZ1bmN0aW9uIHMoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIHI9MCxuPW5ldyBBcnJheSh0KTtyPHQ7cisrKW5bcl09ZVtyXTtyZXR1cm4gbn1mdW5jdGlvbiBjKGUpe3JldHVybiBjPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSxjKGUpfWZ1bmN0aW9uIHUoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBsKGUsdCl7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBuPXRbcl07bi5lbnVtZXJhYmxlPW4uZW51bWVyYWJsZXx8ITEsbi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIG4mJihuLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwodm9pZCAwLGE9ZnVuY3Rpb24oZSx0KXtpZigib2JqZWN0IiE9PWMoZSl8fG51bGw9PT1lKXJldHVybiBlO3ZhciByPWVbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1yKXt2YXIgbj1yLmNhbGwoZSwic3RyaW5nIik7aWYoIm9iamVjdCIhPT1jKG4pKXJldHVybiBuO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuIFN0cmluZyhlKX0obi5rZXkpLCJzeW1ib2wiPT09YyhhKT9hOlN0cmluZyhhKSksbil9dmFyIGF9ZnVuY3Rpb24gZihlLHQscil7cmV0dXJuIHQmJmwoZS5wcm90b3R5cGUsdCksciYmbChlLHIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGV9dmFyIGg9IlBBR0VfQ09OVEVOVCIsZD0iU1RSRUFNX0NPTlRFTlQiLHA9Ik9CSkVDVCIsZz0iRUxFTUVOVCIsdj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCl7dSh0aGlzLGUpLHRoaXMuZGljdD10LHRoaXMucm9sZU1hcD1uZXcgTWFwfXJldHVybiBmKGUsW3trZXk6ImluaXQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5yZWFkUm9sZU1hcCgpfX0se2tleToicmVhZFJvbGVNYXAiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PXRoaXMuZGljdC5nZXQoIlJvbGVNYXAiKTt0IGluc3RhbmNlb2Ygbi5EaWN0JiZ0LmZvckVhY2goKGZ1bmN0aW9uKHQscil7ciBpbnN0YW5jZW9mIG4uTmFtZSYmZS5yb2xlTWFwLnNldCh0LHIubmFtZSl9KSl9fV0pLGV9KCk7dC5TdHJ1Y3RUcmVlUm9vdD12O3ZhciB5PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0LHIpe3UodGhpcyxlKSx0aGlzLnRyZWU9dCx0aGlzLmRpY3Q9cix0aGlzLmtpZHM9W10sdGhpcy5wYXJzZUtpZHMoKX1yZXR1cm4gZihlLFt7a2V5OiJyb2xlIixnZXQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmRpY3QuZ2V0KCJTIiksdD1lIGluc3RhbmNlb2Ygbi5OYW1lP2UubmFtZToiIixyPXRoaXMudHJlZS5yb290O3JldHVybiByLnJvbGVNYXAuaGFzKHQpP3Iucm9sZU1hcC5nZXQodCk6dH19LHtrZXk6InBhcnNlS2lkcyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT1udWxsLHQ9dGhpcy5kaWN0LmdldFJhdygiUGciKTt0IGluc3RhbmNlb2Ygbi5SZWYmJihlPXQudG9TdHJpbmcoKSk7dmFyIHI9dGhpcy5kaWN0LmdldCgiSyIpO2lmKEFycmF5LmlzQXJyYXkocikpe3ZhciBhLGk9byhyKTt0cnl7Zm9yKGkucygpOyEoYT1pLm4oKSkuZG9uZTspe3ZhciBzPWEudmFsdWUsYz10aGlzLnBhcnNlS2lkKGUscyk7YyYmdGhpcy5raWRzLnB1c2goYyl9fWNhdGNoKGUpe2kuZShlKX1maW5hbGx5e2kuZigpfX1lbHNle3ZhciB1PXRoaXMucGFyc2VLaWQoZSxyKTt1JiZ0aGlzLmtpZHMucHVzaCh1KX19fSx7a2V5OiJwYXJzZUtpZCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtpZihOdW1iZXIuaXNJbnRlZ2VyKHQpKXJldHVybiB0aGlzLnRyZWUucGFnZURpY3Qub2JqSWQhPT1lP251bGw6bmV3IG0oe3R5cGU6aCxtY2lkOnQscGFnZU9iaklkOmV9KTt2YXIgcj1udWxsO2lmKHQgaW5zdGFuY2VvZiBuLlJlZj9yPXRoaXMuZGljdC54cmVmLmZldGNoKHQpOnQgaW5zdGFuY2VvZiBuLkRpY3QmJihyPXQpLCFyKXJldHVybiBudWxsO3ZhciBhPXIuZ2V0UmF3KCJQZyIpO2EgaW5zdGFuY2VvZiBuLlJlZiYmKGU9YS50b1N0cmluZygpKTt2YXIgaT1yLmdldCgiVHlwZSIpaW5zdGFuY2VvZiBuLk5hbWU/ci5nZXQoIlR5cGUiKS5uYW1lOm51bGw7cmV0dXJuIk1DUiI9PT1pP3RoaXMudHJlZS5wYWdlRGljdC5vYmpJZCE9PWU/bnVsbDpuZXcgbSh7dHlwZTpkLHJlZk9iaklkOnIuZ2V0UmF3KCJTdG0iKWluc3RhbmNlb2Ygbi5SZWY/ci5nZXRSYXcoIlN0bSIpLnRvU3RyaW5nKCk6bnVsbCxwYWdlT2JqSWQ6ZSxtY2lkOnIuZ2V0KCJNQ0lEIil9KToiT0JKUiI9PT1pP3RoaXMudHJlZS5wYWdlRGljdC5vYmpJZCE9PWU/bnVsbDpuZXcgbSh7dHlwZTpwLHJlZk9iaklkOnIuZ2V0UmF3KCJPYmoiKWluc3RhbmNlb2Ygbi5SZWY/ci5nZXRSYXcoIk9iaiIpLnRvU3RyaW5nKCk6bnVsbCxwYWdlT2JqSWQ6ZX0pOm5ldyBtKHt0eXBlOmcsZGljdDpyfSl9fV0pLGV9KCksbT1mKChmdW5jdGlvbiBlKHQpe3ZhciByPXQudHlwZSxuPXQuZGljdCxhPXZvaWQgMD09PW4/bnVsbDpuLGk9dC5tY2lkLG89dm9pZCAwPT09aT9udWxsOmkscz10LnBhZ2VPYmpJZCxjPXZvaWQgMD09PXM/bnVsbDpzLGw9dC5yZWZPYmpJZCxmPXZvaWQgMD09PWw/bnVsbDpsO3UodGhpcyxlKSx0aGlzLnR5cGU9cix0aGlzLmRpY3Q9YSx0aGlzLm1jaWQ9byx0aGlzLnBhZ2VPYmpJZD1jLHRoaXMucmVmT2JqSWQ9Zix0aGlzLnBhcmVudE5vZGU9bnVsbH0pKSxiPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0LHIpe3UodGhpcyxlKSx0aGlzLnJvb3Q9dCx0aGlzLnJvb3REaWN0PXQ/dC5kaWN0Om51bGwsdGhpcy5wYWdlRGljdD1yLHRoaXMubm9kZXM9W119cmV0dXJuIGYoZSxbe2tleToicGFyc2UiLHZhbHVlOmZ1bmN0aW9uKCl7aWYodGhpcy5yb290JiZ0aGlzLnJvb3REaWN0KXt2YXIgZT10aGlzLnJvb3REaWN0LmdldCgiUGFyZW50VHJlZSIpO2lmKGUpe3ZhciB0PXRoaXMucGFnZURpY3QuZ2V0KCJTdHJ1Y3RQYXJlbnRzIik7aWYoTnVtYmVyLmlzSW50ZWdlcih0KSl7dmFyIHI9bmV3IGkuTnVtYmVyVHJlZShlLHRoaXMucm9vdERpY3QueHJlZikuZ2V0KHQpO2lmKEFycmF5LmlzQXJyYXkocikpe3ZhciBhLHM9bmV3IE1hcCxjPW8ocik7dHJ5e2ZvcihjLnMoKTshKGE9Yy5uKCkpLmRvbmU7KXt2YXIgdT1hLnZhbHVlO3UgaW5zdGFuY2VvZiBuLlJlZiYmdGhpcy5hZGROb2RlKHRoaXMucm9vdERpY3QueHJlZi5mZXRjaCh1KSxzKX19Y2F0Y2goZSl7Yy5lKGUpfWZpbmFsbHl7Yy5mKCl9fX19fX19LHtrZXk6ImFkZE5vZGUiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIHI9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOjA7aWYocj40MClyZXR1cm4oMCxhLndhcm4pKCJTdHJ1Y3RUcmVlIE1BWF9ERVBUSCByZWFjaGVkLiIpLG51bGw7aWYodC5oYXMoZSkpcmV0dXJuIHQuZ2V0KGUpO3ZhciBpPW5ldyB5KHRoaXMsZSk7dC5zZXQoZSxpKTt2YXIgcz1lLmdldCgiUCIpO2lmKCFzfHwoMCxuLmlzTmFtZSkocy5nZXQoIlR5cGUiKSwiU3RydWN0VHJlZVJvb3QiKSlyZXR1cm4gdGhpcy5hZGRUb3BMZXZlbE5vZGUoZSxpKXx8dC5kZWxldGUoZSksaTt2YXIgYz10aGlzLmFkZE5vZGUocyx0LHIrMSk7aWYoIWMpcmV0dXJuIGk7dmFyIHUsbD0hMSxmPW8oYy5raWRzKTt0cnl7Zm9yKGYucygpOyEodT1mLm4oKSkuZG9uZTspe3ZhciBoPXUudmFsdWU7aC50eXBlPT09ZyYmaC5kaWN0PT09ZSYmKGgucGFyZW50Tm9kZT1pLGw9ITApfX1jYXRjaChlKXtmLmUoZSl9ZmluYWxseXtmLmYoKX1yZXR1cm4gbHx8dC5kZWxldGUoZSksaX19LHtrZXk6ImFkZFRvcExldmVsTm9kZSIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzLnJvb3REaWN0LmdldCgiSyIpO2lmKCFyKXJldHVybiExO2lmKHIgaW5zdGFuY2VvZiBuLkRpY3QpcmV0dXJuIHIub2JqSWQ9PT1lLm9iaklkJiYodGhpcy5ub2Rlc1swXT10LCEwKTtpZighQXJyYXkuaXNBcnJheShyKSlyZXR1cm4hMDtmb3IodmFyIGE9ITEsaT0wO2k8ci5sZW5ndGg7aSsrKXt2YXIgbz1yW2ldO28mJm8udG9TdHJpbmcoKT09PWUub2JqSWQmJih0aGlzLm5vZGVzW2ldPXQsYT0hMCl9cmV0dXJuIGF9fSx7a2V5OiJzZXJpYWxpemFibGUiLGdldDpmdW5jdGlvbigpe2Z1bmN0aW9uIGUodCxyKXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06MDtpZihuPjQwKSgwLGEud2FybikoIlN0cnVjdFRyZWUgdG9vIGRlZXAgdG8gYmUgZnVsbHkgc2VyaWFsaXplZC4iKTtlbHNle3ZhciBpPU9iamVjdC5jcmVhdGUobnVsbCk7aS5yb2xlPXQucm9sZSxpLmNoaWxkcmVuPVtdLHIuY2hpbGRyZW4ucHVzaChpKTt2YXIgcz10LmRpY3QuZ2V0KCJBbHQiKTsic3RyaW5nIj09dHlwZW9mIHMmJihpLmFsdD0oMCxhLnN0cmluZ1RvUERGU3RyaW5nKShzKSk7dmFyIGM9dC5kaWN0LmdldCgiTGFuZyIpOyJzdHJpbmciPT10eXBlb2YgYyYmKGkubGFuZz0oMCxhLnN0cmluZ1RvUERGU3RyaW5nKShjKSk7dmFyIHUsbD1vKHQua2lkcyk7dHJ5e2ZvcihsLnMoKTshKHU9bC5uKCkpLmRvbmU7KXt2YXIgZj11LnZhbHVlLHY9Zi50eXBlPT09Zz9mLnBhcmVudE5vZGU6bnVsbDt2P2UodixpLG4rMSk6Zi50eXBlPT09aHx8Zi50eXBlPT09ZD9pLmNoaWxkcmVuLnB1c2goe3R5cGU6ImNvbnRlbnQiLGlkOiJwYWdlIi5jb25jYXQoZi5wYWdlT2JqSWQsIl9tY2lkIikuY29uY2F0KGYubWNpZCl9KTpmLnR5cGU9PT1wJiZpLmNoaWxkcmVuLnB1c2goe3R5cGU6Im9iamVjdCIsaWQ6Zi5yZWZPYmpJZH0pfX1jYXRjaChlKXtsLmUoZSl9ZmluYWxseXtsLmYoKX19fXZhciB0PU9iamVjdC5jcmVhdGUobnVsbCk7dC5jaGlsZHJlbj1bXSx0LnJvbGU9IlJvb3QiO3ZhciByLG49byh0aGlzLm5vZGVzKTt0cnl7Zm9yKG4ucygpOyEocj1uLm4oKSkuZG9uZTspe3ZhciBpPXIudmFsdWU7aSYmZShpLHQpfX1jYXRjaChlKXtuLmUoZSl9ZmluYWxseXtuLmYoKX1yZXR1cm4gdH19XSksZX0oKTt0LlN0cnVjdFRyZWVQYWdlPWJ9LChlLHQscik9PntmdW5jdGlvbiBuKGUpe3JldHVybiBuPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSxuKGUpfU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0Lk9iamVjdExvYWRlcj12b2lkIDA7dmFyIGE9cigxMzQpLGk9cigxMzYpLG89cigxMzUpLHM9cigyKTtmdW5jdGlvbiBjKCl7Yz1mdW5jdGlvbigpe3JldHVybiBlfTt2YXIgZT17fSx0PU9iamVjdC5wcm90b3R5cGUscj10Lmhhc093blByb3BlcnR5LGE9T2JqZWN0LmRlZmluZVByb3BlcnR5fHxmdW5jdGlvbihlLHQscil7ZVt0XT1yLnZhbHVlfSxpPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2w/U3ltYm9sOnt9LG89aS5pdGVyYXRvcnx8IkBAaXRlcmF0b3IiLHM9aS5hc3luY0l0ZXJhdG9yfHwiQEBhc3luY0l0ZXJhdG9yIix1PWkudG9TdHJpbmdUYWd8fCJAQHRvU3RyaW5nVGFnIjtmdW5jdGlvbiBsKGUsdCxyKXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6cixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pLGVbdF19dHJ5e2woe30sIiIpfWNhdGNoKGUpe2w9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlW3RdPXJ9fWZ1bmN0aW9uIGYoZSx0LHIsbil7dmFyIGk9dCYmdC5wcm90b3R5cGUgaW5zdGFuY2VvZiBwP3Q6cCxvPU9iamVjdC5jcmVhdGUoaS5wcm90b3R5cGUpLHM9bmV3IEYobnx8W10pO3JldHVybiBhKG8sIl9pbnZva2UiLHt2YWx1ZTp4KGUscixzKX0pLG99ZnVuY3Rpb24gaChlLHQscil7dHJ5e3JldHVybnt0eXBlOiJub3JtYWwiLGFyZzplLmNhbGwodCxyKX19Y2F0Y2goZSl7cmV0dXJue3R5cGU6InRocm93Iixhcmc6ZX19fWUud3JhcD1mO3ZhciBkPXt9O2Z1bmN0aW9uIHAoKXt9ZnVuY3Rpb24gZygpe31mdW5jdGlvbiB2KCl7fXZhciB5PXt9O2woeSxvLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpO3ZhciBtPU9iamVjdC5nZXRQcm90b3R5cGVPZixiPW0mJm0obShQKFtdKSkpO2ImJmIhPT10JiZyLmNhbGwoYixvKSYmKHk9Yik7dmFyIHc9di5wcm90b3R5cGU9cC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh5KTtmdW5jdGlvbiBrKGUpe1sibmV4dCIsInRocm93IiwicmV0dXJuIl0uZm9yRWFjaCgoZnVuY3Rpb24odCl7bChlLHQsKGZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9pbnZva2UodCxlKX0pKX0pKX1mdW5jdGlvbiBTKGUsdCl7ZnVuY3Rpb24gaShhLG8scyxjKXt2YXIgdT1oKGVbYV0sZSxvKTtpZigidGhyb3ciIT09dS50eXBlKXt2YXIgbD11LmFyZyxmPWwudmFsdWU7cmV0dXJuIGYmJiJvYmplY3QiPT1uKGYpJiZyLmNhbGwoZiwiX19hd2FpdCIpP3QucmVzb2x2ZShmLl9fYXdhaXQpLnRoZW4oKGZ1bmN0aW9uKGUpe2koIm5leHQiLGUscyxjKX0pLChmdW5jdGlvbihlKXtpKCJ0aHJvdyIsZSxzLGMpfSkpOnQucmVzb2x2ZShmKS50aGVuKChmdW5jdGlvbihlKXtsLnZhbHVlPWUscyhsKX0pLChmdW5jdGlvbihlKXtyZXR1cm4gaSgidGhyb3ciLGUscyxjKX0pKX1jKHUuYXJnKX12YXIgbzthKHRoaXMsIl9pbnZva2UiLHt2YWx1ZTpmdW5jdGlvbihlLHIpe2Z1bmN0aW9uIG4oKXtyZXR1cm4gbmV3IHQoKGZ1bmN0aW9uKHQsbil7aShlLHIsdCxuKX0pKX1yZXR1cm4gbz1vP28udGhlbihuLG4pOm4oKX19KX1mdW5jdGlvbiB4KGUsdCxyKXt2YXIgbj0ic3VzcGVuZGVkU3RhcnQiO3JldHVybiBmdW5jdGlvbihhLGkpe2lmKCJleGVjdXRpbmciPT09bil0aHJvdyBuZXcgRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmciKTtpZigiY29tcGxldGVkIj09PW4pe2lmKCJ0aHJvdyI9PT1hKXRocm93IGk7cmV0dXJue3ZhbHVlOnZvaWQgMCxkb25lOiEwfX1mb3Ioci5tZXRob2Q9YSxyLmFyZz1pOzspe3ZhciBvPXIuZGVsZWdhdGU7aWYobyl7dmFyIHM9TyhvLHIpO2lmKHMpe2lmKHM9PT1kKWNvbnRpbnVlO3JldHVybiBzfX1pZigibmV4dCI9PT1yLm1ldGhvZClyLnNlbnQ9ci5fc2VudD1yLmFyZztlbHNlIGlmKCJ0aHJvdyI9PT1yLm1ldGhvZCl7aWYoInN1c3BlbmRlZFN0YXJ0Ij09PW4pdGhyb3cgbj0iY29tcGxldGVkIixyLmFyZztyLmRpc3BhdGNoRXhjZXB0aW9uKHIuYXJnKX1lbHNlInJldHVybiI9PT1yLm1ldGhvZCYmci5hYnJ1cHQoInJldHVybiIsci5hcmcpO249ImV4ZWN1dGluZyI7dmFyIGM9aChlLHQscik7aWYoIm5vcm1hbCI9PT1jLnR5cGUpe2lmKG49ci5kb25lPyJjb21wbGV0ZWQiOiJzdXNwZW5kZWRZaWVsZCIsYy5hcmc9PT1kKWNvbnRpbnVlO3JldHVybnt2YWx1ZTpjLmFyZyxkb25lOnIuZG9uZX19InRocm93Ij09PWMudHlwZSYmKG49ImNvbXBsZXRlZCIsci5tZXRob2Q9InRocm93IixyLmFyZz1jLmFyZyl9fX1mdW5jdGlvbiBPKGUsdCl7dmFyIHI9dC5tZXRob2Qsbj1lLml0ZXJhdG9yW3JdO2lmKHZvaWQgMD09PW4pcmV0dXJuIHQuZGVsZWdhdGU9bnVsbCwidGhyb3ciPT09ciYmZS5pdGVyYXRvci5yZXR1cm4mJih0Lm1ldGhvZD0icmV0dXJuIix0LmFyZz12b2lkIDAsTyhlLHQpLCJ0aHJvdyI9PT10Lm1ldGhvZCl8fCJyZXR1cm4iIT09ciYmKHQubWV0aG9kPSJ0aHJvdyIsdC5hcmc9bmV3IFR5cGVFcnJvcigiVGhlIGl0ZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgYSAnIityKyInIG1ldGhvZCIpKSxkO3ZhciBhPWgobixlLml0ZXJhdG9yLHQuYXJnKTtpZigidGhyb3ciPT09YS50eXBlKXJldHVybiB0Lm1ldGhvZD0idGhyb3ciLHQuYXJnPWEuYXJnLHQuZGVsZWdhdGU9bnVsbCxkO3ZhciBpPWEuYXJnO3JldHVybiBpP2kuZG9uZT8odFtlLnJlc3VsdE5hbWVdPWkudmFsdWUsdC5uZXh0PWUubmV4dExvYywicmV0dXJuIiE9PXQubWV0aG9kJiYodC5tZXRob2Q9Im5leHQiLHQuYXJnPXZvaWQgMCksdC5kZWxlZ2F0ZT1udWxsLGQpOmk6KHQubWV0aG9kPSJ0aHJvdyIsdC5hcmc9bmV3IFR5cGVFcnJvcigiaXRlcmF0b3IgcmVzdWx0IGlzIG5vdCBhbiBvYmplY3QiKSx0LmRlbGVnYXRlPW51bGwsZCl9ZnVuY3Rpb24gQShlKXt2YXIgdD17dHJ5TG9jOmVbMF19OzEgaW4gZSYmKHQuY2F0Y2hMb2M9ZVsxXSksMiBpbiBlJiYodC5maW5hbGx5TG9jPWVbMl0sdC5hZnRlckxvYz1lWzNdKSx0aGlzLnRyeUVudHJpZXMucHVzaCh0KX1mdW5jdGlvbiBDKGUpe3ZhciB0PWUuY29tcGxldGlvbnx8e307dC50eXBlPSJub3JtYWwiLGRlbGV0ZSB0LmFyZyxlLmNvbXBsZXRpb249dH1mdW5jdGlvbiBGKGUpe3RoaXMudHJ5RW50cmllcz1be3RyeUxvYzoicm9vdCJ9XSxlLmZvckVhY2goQSx0aGlzKSx0aGlzLnJlc2V0KCEwKX1mdW5jdGlvbiBQKGUpe2lmKGUpe3ZhciB0PWVbb107aWYodClyZXR1cm4gdC5jYWxsKGUpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBlLm5leHQpcmV0dXJuIGU7aWYoIWlzTmFOKGUubGVuZ3RoKSl7dmFyIG49LTEsYT1mdW5jdGlvbiB0KCl7Zm9yKDsrK248ZS5sZW5ndGg7KWlmKHIuY2FsbChlLG4pKXJldHVybiB0LnZhbHVlPWVbbl0sdC5kb25lPSExLHQ7cmV0dXJuIHQudmFsdWU9dm9pZCAwLHQuZG9uZT0hMCx0fTtyZXR1cm4gYS5uZXh0PWF9fXJldHVybntuZXh0OlR9fWZ1bmN0aW9uIFQoKXtyZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9fXJldHVybiBnLnByb3RvdHlwZT12LGEodywiY29uc3RydWN0b3IiLHt2YWx1ZTp2LGNvbmZpZ3VyYWJsZTohMH0pLGEodiwiY29uc3RydWN0b3IiLHt2YWx1ZTpnLGNvbmZpZ3VyYWJsZTohMH0pLGcuZGlzcGxheU5hbWU9bCh2LHUsIkdlbmVyYXRvckZ1bmN0aW9uIiksZS5pc0dlbmVyYXRvckZ1bmN0aW9uPWZ1bmN0aW9uKGUpe3ZhciB0PSJmdW5jdGlvbiI9PXR5cGVvZiBlJiZlLmNvbnN0cnVjdG9yO3JldHVybiEhdCYmKHQ9PT1nfHwiR2VuZXJhdG9yRnVuY3Rpb24iPT09KHQuZGlzcGxheU5hbWV8fHQubmFtZSkpfSxlLm1hcms9ZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YoZSx2KTooZS5fX3Byb3RvX189dixsKGUsdSwiR2VuZXJhdG9yRnVuY3Rpb24iKSksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh3KSxlfSxlLmF3cmFwPWZ1bmN0aW9uKGUpe3JldHVybntfX2F3YWl0OmV9fSxrKFMucHJvdG90eXBlKSxsKFMucHJvdG90eXBlLHMsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSksZS5Bc3luY0l0ZXJhdG9yPVMsZS5hc3luYz1mdW5jdGlvbih0LHIsbixhLGkpe3ZvaWQgMD09PWkmJihpPVByb21pc2UpO3ZhciBvPW5ldyBTKGYodCxyLG4sYSksaSk7cmV0dXJuIGUuaXNHZW5lcmF0b3JGdW5jdGlvbihyKT9vOm8ubmV4dCgpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBlLmRvbmU/ZS52YWx1ZTpvLm5leHQoKX0pKX0sayh3KSxsKHcsdSwiR2VuZXJhdG9yIiksbCh3LG8sKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSksbCh3LCJ0b1N0cmluZyIsKGZ1bmN0aW9uKCl7cmV0dXJuIltvYmplY3QgR2VuZXJhdG9yXSJ9KSksZS5rZXlzPWZ1bmN0aW9uKGUpe3ZhciB0PU9iamVjdChlKSxyPVtdO2Zvcih2YXIgbiBpbiB0KXIucHVzaChuKTtyZXR1cm4gci5yZXZlcnNlKCksZnVuY3Rpb24gZSgpe2Zvcig7ci5sZW5ndGg7KXt2YXIgbj1yLnBvcCgpO2lmKG4gaW4gdClyZXR1cm4gZS52YWx1ZT1uLGUuZG9uZT0hMSxlfXJldHVybiBlLmRvbmU9ITAsZX19LGUudmFsdWVzPVAsRi5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOkYscmVzZXQ6ZnVuY3Rpb24oZSl7aWYodGhpcy5wcmV2PTAsdGhpcy5uZXh0PTAsdGhpcy5zZW50PXRoaXMuX3NlbnQ9dm9pZCAwLHRoaXMuZG9uZT0hMSx0aGlzLmRlbGVnYXRlPW51bGwsdGhpcy5tZXRob2Q9Im5leHQiLHRoaXMuYXJnPXZvaWQgMCx0aGlzLnRyeUVudHJpZXMuZm9yRWFjaChDKSwhZSlmb3IodmFyIHQgaW4gdGhpcykidCI9PT10LmNoYXJBdCgwKSYmci5jYWxsKHRoaXMsdCkmJiFpc05hTigrdC5zbGljZSgxKSkmJih0aGlzW3RdPXZvaWQgMCl9LHN0b3A6ZnVuY3Rpb24oKXt0aGlzLmRvbmU9ITA7dmFyIGU9dGhpcy50cnlFbnRyaWVzWzBdLmNvbXBsZXRpb247aWYoInRocm93Ij09PWUudHlwZSl0aHJvdyBlLmFyZztyZXR1cm4gdGhpcy5ydmFsfSxkaXNwYXRjaEV4Y2VwdGlvbjpmdW5jdGlvbihlKXtpZih0aGlzLmRvbmUpdGhyb3cgZTt2YXIgdD10aGlzO2Z1bmN0aW9uIG4ocixuKXtyZXR1cm4gby50eXBlPSJ0aHJvdyIsby5hcmc9ZSx0Lm5leHQ9cixuJiYodC5tZXRob2Q9Im5leHQiLHQuYXJnPXZvaWQgMCksISFufWZvcih2YXIgYT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7YT49MDstLWEpe3ZhciBpPXRoaXMudHJ5RW50cmllc1thXSxvPWkuY29tcGxldGlvbjtpZigicm9vdCI9PT1pLnRyeUxvYylyZXR1cm4gbigiZW5kIik7aWYoaS50cnlMb2M8PXRoaXMucHJldil7dmFyIHM9ci5jYWxsKGksImNhdGNoTG9jIiksYz1yLmNhbGwoaSwiZmluYWxseUxvYyIpO2lmKHMmJmMpe2lmKHRoaXMucHJldjxpLmNhdGNoTG9jKXJldHVybiBuKGkuY2F0Y2hMb2MsITApO2lmKHRoaXMucHJldjxpLmZpbmFsbHlMb2MpcmV0dXJuIG4oaS5maW5hbGx5TG9jKX1lbHNlIGlmKHMpe2lmKHRoaXMucHJldjxpLmNhdGNoTG9jKXJldHVybiBuKGkuY2F0Y2hMb2MsITApfWVsc2V7aWYoIWMpdGhyb3cgbmV3IEVycm9yKCJ0cnkgc3RhdGVtZW50IHdpdGhvdXQgY2F0Y2ggb3IgZmluYWxseSIpO2lmKHRoaXMucHJldjxpLmZpbmFsbHlMb2MpcmV0dXJuIG4oaS5maW5hbGx5TG9jKX19fX0sYWJydXB0OmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtuPj0wOy0tbil7dmFyIGE9dGhpcy50cnlFbnRyaWVzW25dO2lmKGEudHJ5TG9jPD10aGlzLnByZXYmJnIuY2FsbChhLCJmaW5hbGx5TG9jIikmJnRoaXMucHJldjxhLmZpbmFsbHlMb2Mpe3ZhciBpPWE7YnJlYWt9fWkmJigiYnJlYWsiPT09ZXx8ImNvbnRpbnVlIj09PWUpJiZpLnRyeUxvYzw9dCYmdDw9aS5maW5hbGx5TG9jJiYoaT1udWxsKTt2YXIgbz1pP2kuY29tcGxldGlvbjp7fTtyZXR1cm4gby50eXBlPWUsby5hcmc9dCxpPyh0aGlzLm1ldGhvZD0ibmV4dCIsdGhpcy5uZXh0PWkuZmluYWxseUxvYyxkKTp0aGlzLmNvbXBsZXRlKG8pfSxjb21wbGV0ZTpmdW5jdGlvbihlLHQpe2lmKCJ0aHJvdyI9PT1lLnR5cGUpdGhyb3cgZS5hcmc7cmV0dXJuImJyZWFrIj09PWUudHlwZXx8ImNvbnRpbnVlIj09PWUudHlwZT90aGlzLm5leHQ9ZS5hcmc6InJldHVybiI9PT1lLnR5cGU/KHRoaXMucnZhbD10aGlzLmFyZz1lLmFyZyx0aGlzLm1ldGhvZD0icmV0dXJuIix0aGlzLm5leHQ9ImVuZCIpOiJub3JtYWwiPT09ZS50eXBlJiZ0JiYodGhpcy5uZXh0PXQpLGR9LGZpbmlzaDpmdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO3Q+PTA7LS10KXt2YXIgcj10aGlzLnRyeUVudHJpZXNbdF07aWYoci5maW5hbGx5TG9jPT09ZSlyZXR1cm4gdGhpcy5jb21wbGV0ZShyLmNvbXBsZXRpb24sci5hZnRlckxvYyksQyhyKSxkfX0sY2F0Y2g6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTt0Pj0wOy0tdCl7dmFyIHI9dGhpcy50cnlFbnRyaWVzW3RdO2lmKHIudHJ5TG9jPT09ZSl7dmFyIG49ci5jb21wbGV0aW9uO2lmKCJ0aHJvdyI9PT1uLnR5cGUpe3ZhciBhPW4uYXJnO0Mocil9cmV0dXJuIGF9fXRocm93IG5ldyBFcnJvcigiaWxsZWdhbCBjYXRjaCBhdHRlbXB0Iil9LGRlbGVnYXRlWWllbGQ6ZnVuY3Rpb24oZSx0LHIpe3JldHVybiB0aGlzLmRlbGVnYXRlPXtpdGVyYXRvcjpQKGUpLHJlc3VsdE5hbWU6dCxuZXh0TG9jOnJ9LCJuZXh0Ij09PXRoaXMubWV0aG9kJiYodGhpcy5hcmc9dm9pZCAwKSxkfX0sZX1mdW5jdGlvbiB1KGUsdCxyLG4sYSxpLG8pe3RyeXt2YXIgcz1lW2ldKG8pLGM9cy52YWx1ZX1jYXRjaChlKXtyZXR1cm4gdm9pZCByKGUpfXMuZG9uZT90KGMpOlByb21pc2UucmVzb2x2ZShjKS50aGVuKG4sYSl9ZnVuY3Rpb24gbChlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdD10aGlzLHI9YXJndW1lbnRzO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24obixhKXt2YXIgaT1lLmFwcGx5KHQscik7ZnVuY3Rpb24gbyhlKXt1KGksbixhLG8scywibmV4dCIsZSl9ZnVuY3Rpb24gcyhlKXt1KGksbixhLG8scywidGhyb3ciLGUpfW8odm9pZCAwKX0pKX19ZnVuY3Rpb24gZihlLHQpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgYT10W3JdO2EuZW51bWVyYWJsZT1hLmVudW1lcmFibGV8fCExLGEuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBhJiYoYS53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsKHZvaWQgMCxpPWZ1bmN0aW9uKGUsdCl7aWYoIm9iamVjdCIhPT1uKGUpfHxudWxsPT09ZSlyZXR1cm4gZTt2YXIgcj1lW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09cil7dmFyIGE9ci5jYWxsKGUsInN0cmluZyIpO2lmKCJvYmplY3QiIT09bihhKSlyZXR1cm4gYTt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybiBTdHJpbmcoZSl9KGEua2V5KSwic3ltYm9sIj09PW4oaSk/aTpTdHJpbmcoaSkpLGEpfXZhciBpfWZ1bmN0aW9uIGgoZSx0KXt2YXIgcj0idW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlWyJAQGl0ZXJhdG9yIl07aWYoIXIpe2lmKEFycmF5LmlzQXJyYXkoZSl8fChyPWZ1bmN0aW9uKGUsdCl7aWYoZSl7aWYoInN0cmluZyI9PXR5cGVvZiBlKXJldHVybiBkKGUsdCk7dmFyIHI9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO3JldHVybiJPYmplY3QiPT09ciYmZS5jb25zdHJ1Y3RvciYmKHI9ZS5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PXJ8fCJTZXQiPT09cj9BcnJheS5mcm9tKGUpOiJBcmd1bWVudHMiPT09cnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3Qocik/ZChlLHQpOnZvaWQgMH19KGUpKXx8dCYmZSYmIm51bWJlciI9PXR5cGVvZiBlLmxlbmd0aCl7ciYmKGU9cik7dmFyIG49MCxhPWZ1bmN0aW9uKCl7fTtyZXR1cm57czphLG46ZnVuY3Rpb24oKXtyZXR1cm4gbj49ZS5sZW5ndGg/e2RvbmU6ITB9Ontkb25lOiExLHZhbHVlOmVbbisrXX19LGU6ZnVuY3Rpb24oZSl7dGhyb3cgZX0sZjphfX10aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gaXRlcmF0ZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9dmFyIGksbz0hMCxzPSExO3JldHVybntzOmZ1bmN0aW9uKCl7cj1yLmNhbGwoZSl9LG46ZnVuY3Rpb24oKXt2YXIgZT1yLm5leHQoKTtyZXR1cm4gbz1lLmRvbmUsZX0sZTpmdW5jdGlvbihlKXtzPSEwLGk9ZX0sZjpmdW5jdGlvbigpe3RyeXtvfHxudWxsPT1yLnJldHVybnx8ci5yZXR1cm4oKX1maW5hbGx5e2lmKHMpdGhyb3cgaX19fX1mdW5jdGlvbiBkKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciByPTAsbj1uZXcgQXJyYXkodCk7cjx0O3IrKyluW3JdPWVbcl07cmV0dXJuIG59ZnVuY3Rpb24gcChlLHQpe2lmKGUgaW5zdGFuY2VvZiBhLkRpY3QpZT1lLmdldFJhd1ZhbHVlcygpO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIGkuQmFzZVN0cmVhbSllPWUuZGljdC5nZXRSYXdWYWx1ZXMoKTtlbHNlIGlmKCFBcnJheS5pc0FycmF5KGUpKXJldHVybjt2YXIgcixuLG89aChlKTt0cnl7Zm9yKG8ucygpOyEocj1vLm4oKSkuZG9uZTspe3ZhciBzPXIudmFsdWU7KChuPXMpaW5zdGFuY2VvZiBhLlJlZnx8biBpbnN0YW5jZW9mIGEuRGljdHx8biBpbnN0YW5jZW9mIGkuQmFzZVN0cmVhbXx8QXJyYXkuaXNBcnJheShuKSkmJnQucHVzaChzKX19Y2F0Y2goZSl7by5lKGUpfWZpbmFsbHl7by5mKCl9fXZhciBnPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0LHIsbil7IWZ1bmN0aW9uKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsZSksdGhpcy5kaWN0PXQsdGhpcy5rZXlzPXIsdGhpcy54cmVmPW4sdGhpcy5yZWZTZXQ9bnVsbH12YXIgdCxyLG4sdTtyZXR1cm4gdD1lLHI9W3trZXk6ImxvYWQiLHZhbHVlOih1PWwoYygpLm1hcmsoKGZ1bmN0aW9uIGUoKXt2YXIgdCxyLG4saSxvLHMsdTtyZXR1cm4gYygpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOmlmKCF0aGlzLnhyZWYuc3RyZWFtLmlzRGF0YUxvYWRlZCl7ZS5uZXh0PTI7YnJlYWt9cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHZvaWQgMCk7Y2FzZSAyOnQ9dGhpcy5rZXlzLHI9dGhpcy5kaWN0LHRoaXMucmVmU2V0PW5ldyBhLlJlZlNldCxuPVtdLGk9aCh0KTt0cnl7Zm9yKGkucygpOyEobz1pLm4oKSkuZG9uZTspcz1vLnZhbHVlLHZvaWQgMCE9PSh1PXIuZ2V0UmF3KHMpKSYmbi5wdXNoKHUpfWNhdGNoKGUpe2kuZShlKX1maW5hbGx5e2kuZigpfXJldHVybiBlLmFicnVwdCgicmV0dXJuIix0aGlzLl93YWxrKG4pKTtjYXNlIDg6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKSxmdW5jdGlvbigpe3JldHVybiB1LmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pfSx7a2V5OiJfd2FsayIsdmFsdWU6KG49bChjKCkubWFyaygoZnVuY3Rpb24gZSh0KXt2YXIgcixuLHUsbCxmLGQsZyx2LHksbSxiLHc7cmV0dXJuIGMoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyPVtdLG49W107Y2FzZSAyOmlmKCF0Lmxlbmd0aCl7ZS5uZXh0PTQ4O2JyZWFrfWlmKCEoKHU9dC5wb3AoKSlpbnN0YW5jZW9mIGEuUmVmKSl7ZS5uZXh0PTIxO2JyZWFrfWlmKCF0aGlzLnJlZlNldC5oYXModSkpe2UubmV4dD03O2JyZWFrfXJldHVybiBlLmFicnVwdCgiY29udGludWUiLDIpO2Nhc2UgNzplLnByZXY9Nyx0aGlzLnJlZlNldC5wdXQodSksdT10aGlzLnhyZWYuZmV0Y2godSksZS5uZXh0PTIxO2JyZWFrO2Nhc2UgMTI6aWYoZS5wcmV2PTEyLGUudDA9ZS5jYXRjaCg3KSxlLnQwIGluc3RhbmNlb2Ygby5NaXNzaW5nRGF0YUV4Y2VwdGlvbil7ZS5uZXh0PTE5O2JyZWFrfXJldHVybigwLHMud2FybikoJ09iamVjdExvYWRlci5fd2FsayAtIHJlcXVlc3RpbmcgYWxsIGRhdGE6ICInLmNvbmNhdChlLnQwLCciLicpKSx0aGlzLnJlZlNldD1udWxsLGw9dGhpcy54cmVmLnN0cmVhbS5tYW5hZ2VyLGUuYWJydXB0KCJyZXR1cm4iLGwucmVxdWVzdEFsbENodW5rcygpKTtjYXNlIDE5OnIucHVzaCh1KSxuLnB1c2goe2JlZ2luOmUudDAuYmVnaW4sZW5kOmUudDAuZW5kfSk7Y2FzZSAyMTppZighKHUgaW5zdGFuY2VvZiBpLkJhc2VTdHJlYW0pKXtlLm5leHQ9NDU7YnJlYWt9aWYoIShmPXUuZ2V0QmFzZVN0cmVhbXMoKSkpe2UubmV4dD00NTticmVha31kPSExLGc9aChmKSxlLnByZXY9MjYsZy5zKCk7Y2FzZSAyODppZigodj1nLm4oKSkuZG9uZSl7ZS5uZXh0PTM2O2JyZWFrfWlmKCEoeT12LnZhbHVlKS5pc0RhdGFMb2FkZWQpe2UubmV4dD0zMjticmVha31yZXR1cm4gZS5hYnJ1cHQoImNvbnRpbnVlIiwzNCk7Y2FzZSAzMjpkPSEwLG4ucHVzaCh7YmVnaW46eS5zdGFydCxlbmQ6eS5lbmR9KTtjYXNlIDM0OmUubmV4dD0yODticmVhaztjYXNlIDM2OmUubmV4dD00MTticmVhaztjYXNlIDM4OmUucHJldj0zOCxlLnQxPWUuY2F0Y2goMjYpLGcuZShlLnQxKTtjYXNlIDQxOnJldHVybiBlLnByZXY9NDEsZy5mKCksZS5maW5pc2goNDEpO2Nhc2UgNDQ6ZCYmci5wdXNoKHUpO2Nhc2UgNDU6cCh1LHQpLGUubmV4dD0yO2JyZWFrO2Nhc2UgNDg6aWYoIW4ubGVuZ3RoKXtlLm5leHQ9NTQ7YnJlYWt9cmV0dXJuIGUubmV4dD01MSx0aGlzLnhyZWYuc3RyZWFtLm1hbmFnZXIucmVxdWVzdFJhbmdlcyhuKTtjYXNlIDUxOm09aChyKTt0cnl7Zm9yKG0ucygpOyEoYj1tLm4oKSkuZG9uZTspKHc9Yi52YWx1ZSlpbnN0YW5jZW9mIGEuUmVmJiZ0aGlzLnJlZlNldC5yZW1vdmUodyl9Y2F0Y2goZSl7bS5lKGUpfWZpbmFsbHl7bS5mKCl9cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHRoaXMuX3dhbGsocikpO2Nhc2UgNTQ6cmV0dXJuIHRoaXMucmVmU2V0PW51bGwsZS5hYnJ1cHQoInJldHVybiIsdm9pZCAwKTtjYXNlIDU2OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzLFtbNywxMl0sWzI2LDM4LDQxLDQ0XV0pfSkpKSxmdW5jdGlvbihlKXtyZXR1cm4gbi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KX1dLHImJmYodC5wcm90b3R5cGUsciksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZX0oKTt0Lk9iamVjdExvYWRlcj1nfSwoZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuWEZBRmFjdG9yeT12b2lkIDA7dmFyIG49cigyMDYpLGE9cigyMTApLGk9cigyMTYpLG89cigyMTQpLHM9cigyMDcpLGM9cigyKSx1PXIoMjE3KSxsPXIoMjI3KTtmdW5jdGlvbiBmKGUpe3JldHVybiBmPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSxmKGUpfWZ1bmN0aW9uIGgoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIHI9MCxuPW5ldyBBcnJheSh0KTtyPHQ7cisrKW5bcl09ZVtyXTtyZXR1cm4gbn1mdW5jdGlvbiBkKCl7ZD1mdW5jdGlvbigpe3JldHVybiBlfTt2YXIgZT17fSx0PU9iamVjdC5wcm90b3R5cGUscj10Lmhhc093blByb3BlcnR5LG49T2JqZWN0LmRlZmluZVByb3BlcnR5fHxmdW5jdGlvbihlLHQscil7ZVt0XT1yLnZhbHVlfSxhPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2w/U3ltYm9sOnt9LGk9YS5pdGVyYXRvcnx8IkBAaXRlcmF0b3IiLG89YS5hc3luY0l0ZXJhdG9yfHwiQEBhc3luY0l0ZXJhdG9yIixzPWEudG9TdHJpbmdUYWd8fCJAQHRvU3RyaW5nVGFnIjtmdW5jdGlvbiBjKGUsdCxyKXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6cixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pLGVbdF19dHJ5e2Moe30sIiIpfWNhdGNoKGUpe2M9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlW3RdPXJ9fWZ1bmN0aW9uIHUoZSx0LHIsYSl7dmFyIGk9dCYmdC5wcm90b3R5cGUgaW5zdGFuY2VvZiBwP3Q6cCxvPU9iamVjdC5jcmVhdGUoaS5wcm90b3R5cGUpLHM9bmV3IEYoYXx8W10pO3JldHVybiBuKG8sIl9pbnZva2UiLHt2YWx1ZTp4KGUscixzKX0pLG99ZnVuY3Rpb24gbChlLHQscil7dHJ5e3JldHVybnt0eXBlOiJub3JtYWwiLGFyZzplLmNhbGwodCxyKX19Y2F0Y2goZSl7cmV0dXJue3R5cGU6InRocm93Iixhcmc6ZX19fWUud3JhcD11O3ZhciBoPXt9O2Z1bmN0aW9uIHAoKXt9ZnVuY3Rpb24gZygpe31mdW5jdGlvbiB2KCl7fXZhciB5PXt9O2MoeSxpLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpO3ZhciBtPU9iamVjdC5nZXRQcm90b3R5cGVPZixiPW0mJm0obShQKFtdKSkpO2ImJmIhPT10JiZyLmNhbGwoYixpKSYmKHk9Yik7dmFyIHc9di5wcm90b3R5cGU9cC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh5KTtmdW5jdGlvbiBrKGUpe1sibmV4dCIsInRocm93IiwicmV0dXJuIl0uZm9yRWFjaCgoZnVuY3Rpb24odCl7YyhlLHQsKGZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9pbnZva2UodCxlKX0pKX0pKX1mdW5jdGlvbiBTKGUsdCl7ZnVuY3Rpb24gYShuLGksbyxzKXt2YXIgYz1sKGVbbl0sZSxpKTtpZigidGhyb3ciIT09Yy50eXBlKXt2YXIgdT1jLmFyZyxoPXUudmFsdWU7cmV0dXJuIGgmJiJvYmplY3QiPT1mKGgpJiZyLmNhbGwoaCwiX19hd2FpdCIpP3QucmVzb2x2ZShoLl9fYXdhaXQpLnRoZW4oKGZ1bmN0aW9uKGUpe2EoIm5leHQiLGUsbyxzKX0pLChmdW5jdGlvbihlKXthKCJ0aHJvdyIsZSxvLHMpfSkpOnQucmVzb2x2ZShoKS50aGVuKChmdW5jdGlvbihlKXt1LnZhbHVlPWUsbyh1KX0pLChmdW5jdGlvbihlKXtyZXR1cm4gYSgidGhyb3ciLGUsbyxzKX0pKX1zKGMuYXJnKX12YXIgaTtuKHRoaXMsIl9pbnZva2UiLHt2YWx1ZTpmdW5jdGlvbihlLHIpe2Z1bmN0aW9uIG4oKXtyZXR1cm4gbmV3IHQoKGZ1bmN0aW9uKHQsbil7YShlLHIsdCxuKX0pKX1yZXR1cm4gaT1pP2kudGhlbihuLG4pOm4oKX19KX1mdW5jdGlvbiB4KGUsdCxyKXt2YXIgbj0ic3VzcGVuZGVkU3RhcnQiO3JldHVybiBmdW5jdGlvbihhLGkpe2lmKCJleGVjdXRpbmciPT09bil0aHJvdyBuZXcgRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmciKTtpZigiY29tcGxldGVkIj09PW4pe2lmKCJ0aHJvdyI9PT1hKXRocm93IGk7cmV0dXJue3ZhbHVlOnZvaWQgMCxkb25lOiEwfX1mb3Ioci5tZXRob2Q9YSxyLmFyZz1pOzspe3ZhciBvPXIuZGVsZWdhdGU7aWYobyl7dmFyIHM9TyhvLHIpO2lmKHMpe2lmKHM9PT1oKWNvbnRpbnVlO3JldHVybiBzfX1pZigibmV4dCI9PT1yLm1ldGhvZClyLnNlbnQ9ci5fc2VudD1yLmFyZztlbHNlIGlmKCJ0aHJvdyI9PT1yLm1ldGhvZCl7aWYoInN1c3BlbmRlZFN0YXJ0Ij09PW4pdGhyb3cgbj0iY29tcGxldGVkIixyLmFyZztyLmRpc3BhdGNoRXhjZXB0aW9uKHIuYXJnKX1lbHNlInJldHVybiI9PT1yLm1ldGhvZCYmci5hYnJ1cHQoInJldHVybiIsci5hcmcpO249ImV4ZWN1dGluZyI7dmFyIGM9bChlLHQscik7aWYoIm5vcm1hbCI9PT1jLnR5cGUpe2lmKG49ci5kb25lPyJjb21wbGV0ZWQiOiJzdXNwZW5kZWRZaWVsZCIsYy5hcmc9PT1oKWNvbnRpbnVlO3JldHVybnt2YWx1ZTpjLmFyZyxkb25lOnIuZG9uZX19InRocm93Ij09PWMudHlwZSYmKG49ImNvbXBsZXRlZCIsci5tZXRob2Q9InRocm93IixyLmFyZz1jLmFyZyl9fX1mdW5jdGlvbiBPKGUsdCl7dmFyIHI9dC5tZXRob2Qsbj1lLml0ZXJhdG9yW3JdO2lmKHZvaWQgMD09PW4pcmV0dXJuIHQuZGVsZWdhdGU9bnVsbCwidGhyb3ciPT09ciYmZS5pdGVyYXRvci5yZXR1cm4mJih0Lm1ldGhvZD0icmV0dXJuIix0LmFyZz12b2lkIDAsTyhlLHQpLCJ0aHJvdyI9PT10Lm1ldGhvZCl8fCJyZXR1cm4iIT09ciYmKHQubWV0aG9kPSJ0aHJvdyIsdC5hcmc9bmV3IFR5cGVFcnJvcigiVGhlIGl0ZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgYSAnIityKyInIG1ldGhvZCIpKSxoO3ZhciBhPWwobixlLml0ZXJhdG9yLHQuYXJnKTtpZigidGhyb3ciPT09YS50eXBlKXJldHVybiB0Lm1ldGhvZD0idGhyb3ciLHQuYXJnPWEuYXJnLHQuZGVsZWdhdGU9bnVsbCxoO3ZhciBpPWEuYXJnO3JldHVybiBpP2kuZG9uZT8odFtlLnJlc3VsdE5hbWVdPWkudmFsdWUsdC5uZXh0PWUubmV4dExvYywicmV0dXJuIiE9PXQubWV0aG9kJiYodC5tZXRob2Q9Im5leHQiLHQuYXJnPXZvaWQgMCksdC5kZWxlZ2F0ZT1udWxsLGgpOmk6KHQubWV0aG9kPSJ0aHJvdyIsdC5hcmc9bmV3IFR5cGVFcnJvcigiaXRlcmF0b3IgcmVzdWx0IGlzIG5vdCBhbiBvYmplY3QiKSx0LmRlbGVnYXRlPW51bGwsaCl9ZnVuY3Rpb24gQShlKXt2YXIgdD17dHJ5TG9jOmVbMF19OzEgaW4gZSYmKHQuY2F0Y2hMb2M9ZVsxXSksMiBpbiBlJiYodC5maW5hbGx5TG9jPWVbMl0sdC5hZnRlckxvYz1lWzNdKSx0aGlzLnRyeUVudHJpZXMucHVzaCh0KX1mdW5jdGlvbiBDKGUpe3ZhciB0PWUuY29tcGxldGlvbnx8e307dC50eXBlPSJub3JtYWwiLGRlbGV0ZSB0LmFyZyxlLmNvbXBsZXRpb249dH1mdW5jdGlvbiBGKGUpe3RoaXMudHJ5RW50cmllcz1be3RyeUxvYzoicm9vdCJ9XSxlLmZvckVhY2goQSx0aGlzKSx0aGlzLnJlc2V0KCEwKX1mdW5jdGlvbiBQKGUpe2lmKGUpe3ZhciB0PWVbaV07aWYodClyZXR1cm4gdC5jYWxsKGUpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBlLm5leHQpcmV0dXJuIGU7aWYoIWlzTmFOKGUubGVuZ3RoKSl7dmFyIG49LTEsYT1mdW5jdGlvbiB0KCl7Zm9yKDsrK248ZS5sZW5ndGg7KWlmKHIuY2FsbChlLG4pKXJldHVybiB0LnZhbHVlPWVbbl0sdC5kb25lPSExLHQ7cmV0dXJuIHQudmFsdWU9dm9pZCAwLHQuZG9uZT0hMCx0fTtyZXR1cm4gYS5uZXh0PWF9fXJldHVybntuZXh0OlR9fWZ1bmN0aW9uIFQoKXtyZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9fXJldHVybiBnLnByb3RvdHlwZT12LG4odywiY29uc3RydWN0b3IiLHt2YWx1ZTp2LGNvbmZpZ3VyYWJsZTohMH0pLG4odiwiY29uc3RydWN0b3IiLHt2YWx1ZTpnLGNvbmZpZ3VyYWJsZTohMH0pLGcuZGlzcGxheU5hbWU9Yyh2LHMsIkdlbmVyYXRvckZ1bmN0aW9uIiksZS5pc0dlbmVyYXRvckZ1bmN0aW9uPWZ1bmN0aW9uKGUpe3ZhciB0PSJmdW5jdGlvbiI9PXR5cGVvZiBlJiZlLmNvbnN0cnVjdG9yO3JldHVybiEhdCYmKHQ9PT1nfHwiR2VuZXJhdG9yRnVuY3Rpb24iPT09KHQuZGlzcGxheU5hbWV8fHQubmFtZSkpfSxlLm1hcms9ZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YoZSx2KTooZS5fX3Byb3RvX189dixjKGUscywiR2VuZXJhdG9yRnVuY3Rpb24iKSksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh3KSxlfSxlLmF3cmFwPWZ1bmN0aW9uKGUpe3JldHVybntfX2F3YWl0OmV9fSxrKFMucHJvdG90eXBlKSxjKFMucHJvdG90eXBlLG8sKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSksZS5Bc3luY0l0ZXJhdG9yPVMsZS5hc3luYz1mdW5jdGlvbih0LHIsbixhLGkpe3ZvaWQgMD09PWkmJihpPVByb21pc2UpO3ZhciBvPW5ldyBTKHUodCxyLG4sYSksaSk7cmV0dXJuIGUuaXNHZW5lcmF0b3JGdW5jdGlvbihyKT9vOm8ubmV4dCgpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBlLmRvbmU/ZS52YWx1ZTpvLm5leHQoKX0pKX0sayh3KSxjKHcscywiR2VuZXJhdG9yIiksYyh3LGksKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSksYyh3LCJ0b1N0cmluZyIsKGZ1bmN0aW9uKCl7cmV0dXJuIltvYmplY3QgR2VuZXJhdG9yXSJ9KSksZS5rZXlzPWZ1bmN0aW9uKGUpe3ZhciB0PU9iamVjdChlKSxyPVtdO2Zvcih2YXIgbiBpbiB0KXIucHVzaChuKTtyZXR1cm4gci5yZXZlcnNlKCksZnVuY3Rpb24gZSgpe2Zvcig7ci5sZW5ndGg7KXt2YXIgbj1yLnBvcCgpO2lmKG4gaW4gdClyZXR1cm4gZS52YWx1ZT1uLGUuZG9uZT0hMSxlfXJldHVybiBlLmRvbmU9ITAsZX19LGUudmFsdWVzPVAsRi5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOkYscmVzZXQ6ZnVuY3Rpb24oZSl7aWYodGhpcy5wcmV2PTAsdGhpcy5uZXh0PTAsdGhpcy5zZW50PXRoaXMuX3NlbnQ9dm9pZCAwLHRoaXMuZG9uZT0hMSx0aGlzLmRlbGVnYXRlPW51bGwsdGhpcy5tZXRob2Q9Im5leHQiLHRoaXMuYXJnPXZvaWQgMCx0aGlzLnRyeUVudHJpZXMuZm9yRWFjaChDKSwhZSlmb3IodmFyIHQgaW4gdGhpcykidCI9PT10LmNoYXJBdCgwKSYmci5jYWxsKHRoaXMsdCkmJiFpc05hTigrdC5zbGljZSgxKSkmJih0aGlzW3RdPXZvaWQgMCl9LHN0b3A6ZnVuY3Rpb24oKXt0aGlzLmRvbmU9ITA7dmFyIGU9dGhpcy50cnlFbnRyaWVzWzBdLmNvbXBsZXRpb247aWYoInRocm93Ij09PWUudHlwZSl0aHJvdyBlLmFyZztyZXR1cm4gdGhpcy5ydmFsfSxkaXNwYXRjaEV4Y2VwdGlvbjpmdW5jdGlvbihlKXtpZih0aGlzLmRvbmUpdGhyb3cgZTt2YXIgdD10aGlzO2Z1bmN0aW9uIG4ocixuKXtyZXR1cm4gby50eXBlPSJ0aHJvdyIsby5hcmc9ZSx0Lm5leHQ9cixuJiYodC5tZXRob2Q9Im5leHQiLHQuYXJnPXZvaWQgMCksISFufWZvcih2YXIgYT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7YT49MDstLWEpe3ZhciBpPXRoaXMudHJ5RW50cmllc1thXSxvPWkuY29tcGxldGlvbjtpZigicm9vdCI9PT1pLnRyeUxvYylyZXR1cm4gbigiZW5kIik7aWYoaS50cnlMb2M8PXRoaXMucHJldil7dmFyIHM9ci5jYWxsKGksImNhdGNoTG9jIiksYz1yLmNhbGwoaSwiZmluYWxseUxvYyIpO2lmKHMmJmMpe2lmKHRoaXMucHJldjxpLmNhdGNoTG9jKXJldHVybiBuKGkuY2F0Y2hMb2MsITApO2lmKHRoaXMucHJldjxpLmZpbmFsbHlMb2MpcmV0dXJuIG4oaS5maW5hbGx5TG9jKX1lbHNlIGlmKHMpe2lmKHRoaXMucHJldjxpLmNhdGNoTG9jKXJldHVybiBuKGkuY2F0Y2hMb2MsITApfWVsc2V7aWYoIWMpdGhyb3cgbmV3IEVycm9yKCJ0cnkgc3RhdGVtZW50IHdpdGhvdXQgY2F0Y2ggb3IgZmluYWxseSIpO2lmKHRoaXMucHJldjxpLmZpbmFsbHlMb2MpcmV0dXJuIG4oaS5maW5hbGx5TG9jKX19fX0sYWJydXB0OmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtuPj0wOy0tbil7dmFyIGE9dGhpcy50cnlFbnRyaWVzW25dO2lmKGEudHJ5TG9jPD10aGlzLnByZXYmJnIuY2FsbChhLCJmaW5hbGx5TG9jIikmJnRoaXMucHJldjxhLmZpbmFsbHlMb2Mpe3ZhciBpPWE7YnJlYWt9fWkmJigiYnJlYWsiPT09ZXx8ImNvbnRpbnVlIj09PWUpJiZpLnRyeUxvYzw9dCYmdDw9aS5maW5hbGx5TG9jJiYoaT1udWxsKTt2YXIgbz1pP2kuY29tcGxldGlvbjp7fTtyZXR1cm4gby50eXBlPWUsby5hcmc9dCxpPyh0aGlzLm1ldGhvZD0ibmV4dCIsdGhpcy5uZXh0PWkuZmluYWxseUxvYyxoKTp0aGlzLmNvbXBsZXRlKG8pfSxjb21wbGV0ZTpmdW5jdGlvbihlLHQpe2lmKCJ0aHJvdyI9PT1lLnR5cGUpdGhyb3cgZS5hcmc7cmV0dXJuImJyZWFrIj09PWUudHlwZXx8ImNvbnRpbnVlIj09PWUudHlwZT90aGlzLm5leHQ9ZS5hcmc6InJldHVybiI9PT1lLnR5cGU/KHRoaXMucnZhbD10aGlzLmFyZz1lLmFyZyx0aGlzLm1ldGhvZD0icmV0dXJuIix0aGlzLm5leHQ9ImVuZCIpOiJub3JtYWwiPT09ZS50eXBlJiZ0JiYodGhpcy5uZXh0PXQpLGh9LGZpbmlzaDpmdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO3Q+PTA7LS10KXt2YXIgcj10aGlzLnRyeUVudHJpZXNbdF07aWYoci5maW5hbGx5TG9jPT09ZSlyZXR1cm4gdGhpcy5jb21wbGV0ZShyLmNvbXBsZXRpb24sci5hZnRlckxvYyksQyhyKSxofX0sY2F0Y2g6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTt0Pj0wOy0tdCl7dmFyIHI9dGhpcy50cnlFbnRyaWVzW3RdO2lmKHIudHJ5TG9jPT09ZSl7dmFyIG49ci5jb21wbGV0aW9uO2lmKCJ0aHJvdyI9PT1uLnR5cGUpe3ZhciBhPW4uYXJnO0Mocil9cmV0dXJuIGF9fXRocm93IG5ldyBFcnJvcigiaWxsZWdhbCBjYXRjaCBhdHRlbXB0Iil9LGRlbGVnYXRlWWllbGQ6ZnVuY3Rpb24oZSx0LHIpe3JldHVybiB0aGlzLmRlbGVnYXRlPXtpdGVyYXRvcjpQKGUpLHJlc3VsdE5hbWU6dCxuZXh0TG9jOnJ9LCJuZXh0Ij09PXRoaXMubWV0aG9kJiYodGhpcy5hcmc9dm9pZCAwKSxofX0sZX1mdW5jdGlvbiBwKGUsdCxyLG4sYSxpLG8pe3RyeXt2YXIgcz1lW2ldKG8pLGM9cy52YWx1ZX1jYXRjaChlKXtyZXR1cm4gdm9pZCByKGUpfXMuZG9uZT90KGMpOlByb21pc2UucmVzb2x2ZShjKS50aGVuKG4sYSl9ZnVuY3Rpb24gZyhlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdD10aGlzLHI9YXJndW1lbnRzO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24obixhKXt2YXIgaT1lLmFwcGx5KHQscik7ZnVuY3Rpb24gbyhlKXtwKGksbixhLG8scywibmV4dCIsZSl9ZnVuY3Rpb24gcyhlKXtwKGksbixhLG8scywidGhyb3ciLGUpfW8odm9pZCAwKX0pKX19ZnVuY3Rpb24gdihlLHQpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgbj10W3JdO24uZW51bWVyYWJsZT1uLmVudW1lcmFibGV8fCExLG4uY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBuJiYobi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsKHZvaWQgMCxhPWZ1bmN0aW9uKGUsdCl7aWYoIm9iamVjdCIhPT1mKGUpfHxudWxsPT09ZSlyZXR1cm4gZTt2YXIgcj1lW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09cil7dmFyIG49ci5jYWxsKGUsInN0cmluZyIpO2lmKCJvYmplY3QiIT09ZihuKSlyZXR1cm4gbjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybiBTdHJpbmcoZSl9KG4ua2V5KSwic3ltYm9sIj09PWYoYSk/YTpTdHJpbmcoYSkpLG4pfXZhciBhfXZhciB5PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0KXshZnVuY3Rpb24oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxlKTt0cnl7dGhpcy5yb290PShuZXcgdS5YRkFQYXJzZXIpLnBhcnNlKGUuX2NyZWF0ZURvY3VtZW50KHQpKTt2YXIgcj1uZXcgYS5CaW5kZXIodGhpcy5yb290KTt0aGlzLmZvcm09ci5iaW5kKCksdGhpcy5kYXRhSGFuZGxlcj1uZXcgaS5EYXRhSGFuZGxlcih0aGlzLnJvb3Qsci5nZXREYXRhKCkpLHRoaXMuZm9ybVtuLiRnbG9iYWxEYXRhXS50ZW1wbGF0ZT10aGlzLmZvcm19Y2F0Y2goZSl7KDAsYy53YXJuKSgiWEZBIC0gYW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIHBhcnNpbmcgYW5kIGJpbmRpbmc6ICIuY29uY2F0KGUpKX19dmFyIHQscixmLHAseSxtO3JldHVybiB0PWUscj1be2tleToiaXNWYWxpZCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yb290JiZ0aGlzLmZvcm19fSx7a2V5OiJfY3JlYXRlUGFnZXNIZWxwZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5mb3JtW24uJHRvUGFnZXNdKCk7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbih0LHIpe3NldFRpbWVvdXQoKGZ1bmN0aW9uIG4oKXt0cnl7dmFyIGE9ZS5uZXh0KCk7YS5kb25lP3QoYS52YWx1ZSk6c2V0VGltZW91dChuLDApfWNhdGNoKGUpe3IoZSl9fSksMCl9KSl9fSx7a2V5OiJfY3JlYXRlUGFnZXMiLHZhbHVlOihtPWcoZCgpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gZCgpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLnByZXY9MCxlLm5leHQ9Myx0aGlzLl9jcmVhdGVQYWdlc0hlbHBlcigpO2Nhc2UgMzp0aGlzLnBhZ2VzPWUuc2VudCx0aGlzLmRpbXM9dGhpcy5wYWdlcy5jaGlsZHJlbi5tYXAoKGZ1bmN0aW9uKGUpe3ZhciB0PWUuYXR0cmlidXRlcy5zdHlsZSxyPXQud2lkdGgsbj10LmhlaWdodDtyZXR1cm5bMCwwLHBhcnNlSW50KHIpLHBhcnNlSW50KG4pXX0pKSxlLm5leHQ9MTA7YnJlYWs7Y2FzZSA3OmUucHJldj03LGUudDA9ZS5jYXRjaCgwKSwoMCxjLndhcm4pKCJYRkEgLSBhbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgbGF5b3V0OiAiLmNvbmNhdChlLnQwKSk7Y2FzZSAxMDpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyxbWzAsN11dKX0pKSksZnVuY3Rpb24oKXtyZXR1cm4gbS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KX0se2tleToiZ2V0Qm91bmRpbmdCb3giLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmRpbXNbZV19fSx7a2V5OiJnZXROdW1QYWdlcyIsdmFsdWU6KHk9ZyhkKCkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiBkKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6aWYodGhpcy5wYWdlcyl7ZS5uZXh0PTM7YnJlYWt9cmV0dXJuIGUubmV4dD0zLHRoaXMuX2NyZWF0ZVBhZ2VzKCk7Y2FzZSAzOnJldHVybiBlLmFicnVwdCgicmV0dXJuIix0aGlzLmRpbXMubGVuZ3RoKTtjYXNlIDQ6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKSxmdW5jdGlvbigpe3JldHVybiB5LmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pfSx7a2V5OiJzZXRJbWFnZXMiLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMuZm9ybVtuLiRnbG9iYWxEYXRhXS5pbWFnZXM9ZX19LHtrZXk6InNldEZvbnRzIix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLmZvcm1bbi4kZ2xvYmFsRGF0YV0uZm9udEZpbmRlcj1uZXcgby5Gb250RmluZGVyKGUpO3ZhciB0LHI9W10sYT1mdW5jdGlvbihlLHQpe3ZhciByPSJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbIkBAaXRlcmF0b3IiXTtpZighcil7aWYoQXJyYXkuaXNBcnJheShlKXx8KHI9ZnVuY3Rpb24oZSx0KXtpZihlKXtpZigic3RyaW5nIj09dHlwZW9mIGUpcmV0dXJuIGgoZSx0KTt2YXIgcj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7cmV0dXJuIk9iamVjdCI9PT1yJiZlLmNvbnN0cnVjdG9yJiYocj1lLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09cnx8IlNldCI9PT1yP0FycmF5LmZyb20oZSk6IkFyZ3VtZW50cyI9PT1yfHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChyKT9oKGUsdCk6dm9pZCAwfX0oZSkpfHx0JiZlJiYibnVtYmVyIj09dHlwZW9mIGUubGVuZ3RoKXtyJiYoZT1yKTt2YXIgbj0wLGE9ZnVuY3Rpb24oKXt9O3JldHVybntzOmEsbjpmdW5jdGlvbigpe3JldHVybiBuPj1lLmxlbmd0aD97ZG9uZTohMH06e2RvbmU6ITEsdmFsdWU6ZVtuKytdfX0sZTpmdW5jdGlvbihlKXt0aHJvdyBlfSxmOmF9fXRocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBpdGVyYXRlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX12YXIgaSxvPSEwLHM9ITE7cmV0dXJue3M6ZnVuY3Rpb24oKXtyPXIuY2FsbChlKX0sbjpmdW5jdGlvbigpe3ZhciBlPXIubmV4dCgpO3JldHVybiBvPWUuZG9uZSxlfSxlOmZ1bmN0aW9uKGUpe3M9ITAsaT1lfSxmOmZ1bmN0aW9uKCl7dHJ5e298fG51bGw9PXIucmV0dXJufHxyLnJldHVybigpfWZpbmFsbHl7aWYocyl0aHJvdyBpfX19fSh0aGlzLmZvcm1bbi4kZ2xvYmFsRGF0YV0udXNlZFR5cGVmYWNlcyk7dHJ5e2ZvcihhLnMoKTshKHQ9YS5uKCkpLmRvbmU7KXt2YXIgaT10LnZhbHVlO2k9KDAscy5zdHJpcFF1b3RlcykoaSksdGhpcy5mb3JtW24uJGdsb2JhbERhdGFdLmZvbnRGaW5kZXIuZmluZChpKXx8ci5wdXNoKGkpfX1jYXRjaChlKXthLmUoZSl9ZmluYWxseXthLmYoKX1yZXR1cm4gci5sZW5ndGg+MD9yOm51bGx9fSx7a2V5OiJhcHBlbmRGb250cyIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt0aGlzLmZvcm1bbi4kZ2xvYmFsRGF0YV0uZm9udEZpbmRlci5hZGQoZSx0KX19LHtrZXk6ImdldFBhZ2VzIix2YWx1ZToocD1nKGQoKS5tYXJrKChmdW5jdGlvbiBlKCl7dmFyIHQ7cmV0dXJuIGQoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDppZih0aGlzLnBhZ2VzKXtlLm5leHQ9MzticmVha31yZXR1cm4gZS5uZXh0PTMsdGhpcy5fY3JlYXRlUGFnZXMoKTtjYXNlIDM6cmV0dXJuIHQ9dGhpcy5wYWdlcyx0aGlzLnBhZ2VzPW51bGwsZS5hYnJ1cHQoInJldHVybiIsdCk7Y2FzZSA2OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSksZnVuY3Rpb24oKXtyZXR1cm4gcC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KX0se2tleToic2VyaWFsaXplRGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZGF0YUhhbmRsZXIuc2VyaWFsaXplKGUpfX1dLGY9W3trZXk6Il9jcmVhdGVEb2N1bWVudCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGVbIi94ZHA6eGRwIl0/T2JqZWN0LnZhbHVlcyhlKS5qb2luKCIiKTplWyJ4ZHA6eGRwIl19fSx7a2V5OiJnZXRSaWNoVGV4dEFzSHRtbCIsdmFsdWU6ZnVuY3Rpb24oZSl7aWYoIWV8fCJzdHJpbmciIT10eXBlb2YgZSlyZXR1cm4gbnVsbDt0cnl7dmFyIHQ9bmV3IHUuWEZBUGFyc2VyKGwuWGh0bWxOYW1lc3BhY2UsITApLnBhcnNlKGUpO2lmKCFbImJvZHkiLCJ4aHRtbCJdLmluY2x1ZGVzKHRbbi4kbm9kZU5hbWVdKSl7dmFyIHI9bC5YaHRtbE5hbWVzcGFjZS5ib2R5KHt9KTtyW24uJGFwcGVuZENoaWxkXSh0KSx0PXJ9dmFyIGE9dFtuLiR0b0hUTUxdKCk7aWYoIWEuc3VjY2VzcylyZXR1cm4gbnVsbDt2YXIgaT1hLmh0bWwsbz1pLmF0dHJpYnV0ZXM7cmV0dXJuIG8mJihvLmNsYXNzJiYoby5jbGFzcz1vLmNsYXNzLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIWUuc3RhcnRzV2l0aCgieGZhIil9KSkpLG8uZGlyPSJhdXRvIikse2h0bWw6aSxzdHI6dFtuLiR0ZXh0XSgpfX1jYXRjaChlKXsoMCxjLndhcm4pKCJYRkEgLSBhbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgcGFyc2luZyBvZiByaWNoIHRleHQ6ICIuY29uY2F0KGUpKX1yZXR1cm4gbnVsbH19XSxyJiZ2KHQucHJvdG90eXBlLHIpLGYmJnYodCxmKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxlfSgpO3QuWEZBRmFjdG9yeT15fSwoZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuWG1sT2JqZWN0PXQuWEZBT2JqZWN0QXJyYXk9dC5YRkFPYmplY3Q9dC5YRkFBdHRyaWJ1dGU9dC5TdHJpbmdPYmplY3Q9dC5PcHRpb25PYmplY3Q9dC5PcHRpb24xMD10Lk9wdGlvbjAxPXQuSW50ZWdlck9iamVjdD10LkNvbnRlbnRPYmplY3Q9dC4kdWlkPXQuJHRvU3R5bGU9dC4kdG9TdHJpbmc9dC4kdG9QYWdlcz10LiR0b0hUTUw9dC4kdGV4dD10LiR0YWJJbmRleD10LiRzZXRWYWx1ZT10LiRzZXRTZXRBdHRyaWJ1dGVzPXQuJHNldElkPXQuJHNlYXJjaE5vZGU9dC4kcm9vdD10LiRyZXNvbHZlUHJvdG90eXBlcz10LiRyZW1vdmVDaGlsZD10LiRwdXNoUGFyYT10LiRwdXNoR2x5cGhzPXQuJHBvcFBhcmE9dC4kb25UZXh0PXQuJG9uQ2hpbGRDaGVjaz10LiRvbkNoaWxkPXQuJG5zQXR0cmlidXRlcz10LiRub2RlTmFtZT10LiRuYW1lc3BhY2VJZD10LiRpc1VzYWJsZT10LiRpc1RyYW5zcGFyZW50PXQuJGlzVGhlcmVNb3JlV2lkdGg9dC4kaXNTcGxpdHRhYmxlPXQuJGlzTnNBZ25vc3RpYz10LiRpc0Rlc2NlbmRlbnQ9dC4kaXNEYXRhVmFsdWU9dC4kaXNDREFUQVhtbD10LiRpc0JpbmRhYmxlPXQuJGluc2VydEF0PXQuJGluZGV4T2Y9dC4kaWRzPXQuJGhhc1NldHRhYmxlVmFsdWU9dC4kZ2xvYmFsRGF0YT10LiRnZXRUZW1wbGF0ZVJvb3Q9dC4kZ2V0U3ViZm9ybVBhcmVudD10LiRnZXRSZWFsQ2hpbGRyZW5CeU5hbWVJdD10LiRnZXRQYXJlbnQ9dC4kZ2V0TmV4dFBhZ2U9dC4kZ2V0RXh0cmE9dC4kZ2V0RGF0YVZhbHVlPXQuJGdldENvbnRhaW5lZENoaWxkcmVuPXQuJGdldENoaWxkcmVuQnlOYW1lSXQ9dC4kZ2V0Q2hpbGRyZW5CeU5hbWU9dC4kZ2V0Q2hpbGRyZW5CeUNsYXNzPXQuJGdldENoaWxkcmVuPXQuJGdldEF2YWlsYWJsZVNwYWNlPXQuJGdldEF0dHJpYnV0ZXM9dC4kZ2V0QXR0cmlidXRlSXQ9dC4kZmx1c2hIVE1MPXQuJGZpbmFsaXplPXQuJGV4dHJhPXQuJGR1bXA9dC4kZGF0YT10LiRjb250ZW50PXQuJGNvbnN1bWVkPXQuJGNsb25lPXQuJGNsZWFudXA9dC4kY2xlYW5QYWdlPXQuJGNsZWFuPXQuJGNoaWxkcmVuVG9IVE1MPXQuJGFwcGVuZENoaWxkPXQuJGFkZEhUTUw9dC4kYWNjZXB0V2hpdGVzcGFjZT12b2lkIDA7dmFyIG49cigyMDcpLGE9cigyKSxpPXIoMTM1KSxvPXIoMjA4KSxzPXIoMjA5KTtmdW5jdGlvbiBjKCl7cmV0dXJuIGM9InVuZGVmaW5lZCIhPXR5cGVvZiBSZWZsZWN0JiZSZWZsZWN0LmdldD9SZWZsZWN0LmdldC5iaW5kKCk6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPWZ1bmN0aW9uKGUsdCl7Zm9yKDshT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsdCkmJm51bGwhPT0oZT1wKGUpKTspO3JldHVybiBlfShlLHQpO2lmKG4pe3ZhciBhPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KTtyZXR1cm4gYS5nZXQ/YS5nZXQuY2FsbChhcmd1bWVudHMubGVuZ3RoPDM/ZTpyKTphLnZhbHVlfX0sYy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gdShlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgcj1udWxsPT1lP251bGw6InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVsiQEBpdGVyYXRvciJdO2lmKG51bGwhPXIpe3ZhciBuLGEsaSxvLHM9W10sYz0hMCx1PSExO3RyeXtpZihpPShyPXIuY2FsbChlKSkubmV4dCwwPT09dCl7aWYoT2JqZWN0KHIpIT09cilyZXR1cm47Yz0hMX1lbHNlIGZvcig7IShjPShuPWkuY2FsbChyKSkuZG9uZSkmJihzLnB1c2gobi52YWx1ZSkscy5sZW5ndGghPT10KTtjPSEwKTt9Y2F0Y2goZSl7dT0hMCxhPWV9ZmluYWxseXt0cnl7aWYoIWMmJm51bGwhPXIucmV0dXJuJiYobz1yLnJldHVybigpLE9iamVjdChvKSE9PW8pKXJldHVybn1maW5hbGx5e2lmKHUpdGhyb3cgYX19cmV0dXJuIHN9fShlLHQpfHxtKGUsdCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiBsKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLHQmJmYoZSx0KX1mdW5jdGlvbiBmKGUsdCl7cmV0dXJuIGY9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5fX3Byb3RvX189dCxlfSxmKGUsdCl9ZnVuY3Rpb24gaChlKXt2YXIgdD1mdW5jdGlvbigpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0KXJldHVybiExO2lmKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sKGZ1bmN0aW9uKCl7fSkpKSwhMH1jYXRjaChlKXtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHIsbj1wKGUpO2lmKHQpe3ZhciBhPXAodGhpcykuY29uc3RydWN0b3I7cj1SZWZsZWN0LmNvbnN0cnVjdChuLGFyZ3VtZW50cyxhKX1lbHNlIHI9bi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYodCYmKCJvYmplY3QiPT09Zyh0KXx8ImZ1bmN0aW9uIj09dHlwZW9mIHQpKXJldHVybiB0O2lmKHZvaWQgMCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZChlKX0odGhpcyxyKX19ZnVuY3Rpb24gZChlKXtpZih2b2lkIDA9PT1lKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGV9ZnVuY3Rpb24gcChlKXtyZXR1cm4gcD1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihlKXtyZXR1cm4gZS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihlKX0scChlKX1mdW5jdGlvbiBnKGUpe3JldHVybiBnPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSxnKGUpfWZ1bmN0aW9uIHYoKXt2PWZ1bmN0aW9uKCl7cmV0dXJuIGV9O3ZhciBlPXt9LHQ9T2JqZWN0LnByb3RvdHlwZSxyPXQuaGFzT3duUHJvcGVydHksbj1PYmplY3QuZGVmaW5lUHJvcGVydHl8fGZ1bmN0aW9uKGUsdCxyKXtlW3RdPXIudmFsdWV9LGE9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbD9TeW1ib2w6e30saT1hLml0ZXJhdG9yfHwiQEBpdGVyYXRvciIsbz1hLmFzeW5jSXRlcmF0b3J8fCJAQGFzeW5jSXRlcmF0b3IiLHM9YS50b1N0cmluZ1RhZ3x8IkBAdG9TdHJpbmdUYWciO2Z1bmN0aW9uIGMoZSx0LHIpe3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpyLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSksZVt0XX10cnl7Yyh7fSwiIil9Y2F0Y2goZSl7Yz1mdW5jdGlvbihlLHQscil7cmV0dXJuIGVbdF09cn19ZnVuY3Rpb24gdShlLHQscixhKXt2YXIgaT10JiZ0LnByb3RvdHlwZSBpbnN0YW5jZW9mIGg/dDpoLG89T2JqZWN0LmNyZWF0ZShpLnByb3RvdHlwZSkscz1uZXcgRihhfHxbXSk7cmV0dXJuIG4obywiX2ludm9rZSIse3ZhbHVlOngoZSxyLHMpfSksb31mdW5jdGlvbiBsKGUsdCxyKXt0cnl7cmV0dXJue3R5cGU6Im5vcm1hbCIsYXJnOmUuY2FsbCh0LHIpfX1jYXRjaChlKXtyZXR1cm57dHlwZToidGhyb3ciLGFyZzplfX19ZS53cmFwPXU7dmFyIGY9e307ZnVuY3Rpb24gaCgpe31mdW5jdGlvbiBkKCl7fWZ1bmN0aW9uIHAoKXt9dmFyIHk9e307Yyh5LGksKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSk7dmFyIG09T2JqZWN0LmdldFByb3RvdHlwZU9mLGI9bSYmbShtKFAoW10pKSk7YiYmYiE9PXQmJnIuY2FsbChiLGkpJiYoeT1iKTt2YXIgdz1wLnByb3RvdHlwZT1oLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHkpO2Z1bmN0aW9uIGsoZSl7WyJuZXh0IiwidGhyb3ciLCJyZXR1cm4iXS5mb3JFYWNoKChmdW5jdGlvbih0KXtjKGUsdCwoZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX2ludm9rZSh0LGUpfSkpfSkpfWZ1bmN0aW9uIFMoZSx0KXtmdW5jdGlvbiBhKG4saSxvLHMpe3ZhciBjPWwoZVtuXSxlLGkpO2lmKCJ0aHJvdyIhPT1jLnR5cGUpe3ZhciB1PWMuYXJnLGY9dS52YWx1ZTtyZXR1cm4gZiYmIm9iamVjdCI9PWcoZikmJnIuY2FsbChmLCJfX2F3YWl0Iik/dC5yZXNvbHZlKGYuX19hd2FpdCkudGhlbigoZnVuY3Rpb24oZSl7YSgibmV4dCIsZSxvLHMpfSksKGZ1bmN0aW9uKGUpe2EoInRocm93IixlLG8scyl9KSk6dC5yZXNvbHZlKGYpLnRoZW4oKGZ1bmN0aW9uKGUpe3UudmFsdWU9ZSxvKHUpfSksKGZ1bmN0aW9uKGUpe3JldHVybiBhKCJ0aHJvdyIsZSxvLHMpfSkpfXMoYy5hcmcpfXZhciBpO24odGhpcywiX2ludm9rZSIse3ZhbHVlOmZ1bmN0aW9uKGUscil7ZnVuY3Rpb24gbigpe3JldHVybiBuZXcgdCgoZnVuY3Rpb24odCxuKXthKGUscix0LG4pfSkpfXJldHVybiBpPWk/aS50aGVuKG4sbik6bigpfX0pfWZ1bmN0aW9uIHgoZSx0LHIpe3ZhciBuPSJzdXNwZW5kZWRTdGFydCI7cmV0dXJuIGZ1bmN0aW9uKGEsaSl7aWYoImV4ZWN1dGluZyI9PT1uKXRocm93IG5ldyBFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgcnVubmluZyIpO2lmKCJjb21wbGV0ZWQiPT09bil7aWYoInRocm93Ij09PWEpdGhyb3cgaTtyZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9fWZvcihyLm1ldGhvZD1hLHIuYXJnPWk7Oyl7dmFyIG89ci5kZWxlZ2F0ZTtpZihvKXt2YXIgcz1PKG8scik7aWYocyl7aWYocz09PWYpY29udGludWU7cmV0dXJuIHN9fWlmKCJuZXh0Ij09PXIubWV0aG9kKXIuc2VudD1yLl9zZW50PXIuYXJnO2Vsc2UgaWYoInRocm93Ij09PXIubWV0aG9kKXtpZigic3VzcGVuZGVkU3RhcnQiPT09bil0aHJvdyBuPSJjb21wbGV0ZWQiLHIuYXJnO3IuZGlzcGF0Y2hFeGNlcHRpb24oci5hcmcpfWVsc2UicmV0dXJuIj09PXIubWV0aG9kJiZyLmFicnVwdCgicmV0dXJuIixyLmFyZyk7bj0iZXhlY3V0aW5nIjt2YXIgYz1sKGUsdCxyKTtpZigibm9ybWFsIj09PWMudHlwZSl7aWYobj1yLmRvbmU/ImNvbXBsZXRlZCI6InN1c3BlbmRlZFlpZWxkIixjLmFyZz09PWYpY29udGludWU7cmV0dXJue3ZhbHVlOmMuYXJnLGRvbmU6ci5kb25lfX0idGhyb3ciPT09Yy50eXBlJiYobj0iY29tcGxldGVkIixyLm1ldGhvZD0idGhyb3ciLHIuYXJnPWMuYXJnKX19fWZ1bmN0aW9uIE8oZSx0KXt2YXIgcj10Lm1ldGhvZCxuPWUuaXRlcmF0b3Jbcl07aWYodm9pZCAwPT09bilyZXR1cm4gdC5kZWxlZ2F0ZT1udWxsLCJ0aHJvdyI9PT1yJiZlLml0ZXJhdG9yLnJldHVybiYmKHQubWV0aG9kPSJyZXR1cm4iLHQuYXJnPXZvaWQgMCxPKGUsdCksInRocm93Ij09PXQubWV0aG9kKXx8InJldHVybiIhPT1yJiYodC5tZXRob2Q9InRocm93Iix0LmFyZz1uZXcgVHlwZUVycm9yKCJUaGUgaXRlcmF0b3IgZG9lcyBub3QgcHJvdmlkZSBhICciK3IrIicgbWV0aG9kIikpLGY7dmFyIGE9bChuLGUuaXRlcmF0b3IsdC5hcmcpO2lmKCJ0aHJvdyI9PT1hLnR5cGUpcmV0dXJuIHQubWV0aG9kPSJ0aHJvdyIsdC5hcmc9YS5hcmcsdC5kZWxlZ2F0ZT1udWxsLGY7dmFyIGk9YS5hcmc7cmV0dXJuIGk/aS5kb25lPyh0W2UucmVzdWx0TmFtZV09aS52YWx1ZSx0Lm5leHQ9ZS5uZXh0TG9jLCJyZXR1cm4iIT09dC5tZXRob2QmJih0Lm1ldGhvZD0ibmV4dCIsdC5hcmc9dm9pZCAwKSx0LmRlbGVnYXRlPW51bGwsZik6aToodC5tZXRob2Q9InRocm93Iix0LmFyZz1uZXcgVHlwZUVycm9yKCJpdGVyYXRvciByZXN1bHQgaXMgbm90IGFuIG9iamVjdCIpLHQuZGVsZWdhdGU9bnVsbCxmKX1mdW5jdGlvbiBBKGUpe3ZhciB0PXt0cnlMb2M6ZVswXX07MSBpbiBlJiYodC5jYXRjaExvYz1lWzFdKSwyIGluIGUmJih0LmZpbmFsbHlMb2M9ZVsyXSx0LmFmdGVyTG9jPWVbM10pLHRoaXMudHJ5RW50cmllcy5wdXNoKHQpfWZ1bmN0aW9uIEMoZSl7dmFyIHQ9ZS5jb21wbGV0aW9ufHx7fTt0LnR5cGU9Im5vcm1hbCIsZGVsZXRlIHQuYXJnLGUuY29tcGxldGlvbj10fWZ1bmN0aW9uIEYoZSl7dGhpcy50cnlFbnRyaWVzPVt7dHJ5TG9jOiJyb290In1dLGUuZm9yRWFjaChBLHRoaXMpLHRoaXMucmVzZXQoITApfWZ1bmN0aW9uIFAoZSl7aWYoZSl7dmFyIHQ9ZVtpXTtpZih0KXJldHVybiB0LmNhbGwoZSk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGUubmV4dClyZXR1cm4gZTtpZighaXNOYU4oZS5sZW5ndGgpKXt2YXIgbj0tMSxhPWZ1bmN0aW9uIHQoKXtmb3IoOysrbjxlLmxlbmd0aDspaWYoci5jYWxsKGUsbikpcmV0dXJuIHQudmFsdWU9ZVtuXSx0LmRvbmU9ITEsdDtyZXR1cm4gdC52YWx1ZT12b2lkIDAsdC5kb25lPSEwLHR9O3JldHVybiBhLm5leHQ9YX19cmV0dXJue25leHQ6VH19ZnVuY3Rpb24gVCgpe3JldHVybnt2YWx1ZTp2b2lkIDAsZG9uZTohMH19cmV0dXJuIGQucHJvdG90eXBlPXAsbih3LCJjb25zdHJ1Y3RvciIse3ZhbHVlOnAsY29uZmlndXJhYmxlOiEwfSksbihwLCJjb25zdHJ1Y3RvciIse3ZhbHVlOmQsY29uZmlndXJhYmxlOiEwfSksZC5kaXNwbGF5TmFtZT1jKHAscywiR2VuZXJhdG9yRnVuY3Rpb24iKSxlLmlzR2VuZXJhdG9yRnVuY3Rpb249ZnVuY3Rpb24oZSl7dmFyIHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGUmJmUuY29uc3RydWN0b3I7cmV0dXJuISF0JiYodD09PWR8fCJHZW5lcmF0b3JGdW5jdGlvbiI9PT0odC5kaXNwbGF5TmFtZXx8dC5uYW1lKSl9LGUubWFyaz1mdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZihlLHApOihlLl9fcHJvdG9fXz1wLGMoZSxzLCJHZW5lcmF0b3JGdW5jdGlvbiIpKSxlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHcpLGV9LGUuYXdyYXA9ZnVuY3Rpb24oZSl7cmV0dXJue19fYXdhaXQ6ZX19LGsoUy5wcm90b3R5cGUpLGMoUy5wcm90b3R5cGUsbywoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSxlLkFzeW5jSXRlcmF0b3I9UyxlLmFzeW5jPWZ1bmN0aW9uKHQscixuLGEsaSl7dm9pZCAwPT09aSYmKGk9UHJvbWlzZSk7dmFyIG89bmV3IFModSh0LHIsbixhKSxpKTtyZXR1cm4gZS5pc0dlbmVyYXRvckZ1bmN0aW9uKHIpP286by5uZXh0KCkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIGUuZG9uZT9lLnZhbHVlOm8ubmV4dCgpfSkpfSxrKHcpLGModyxzLCJHZW5lcmF0b3IiKSxjKHcsaSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSxjKHcsInRvU3RyaW5nIiwoZnVuY3Rpb24oKXtyZXR1cm4iW29iamVjdCBHZW5lcmF0b3JdIn0pKSxlLmtleXM9ZnVuY3Rpb24oZSl7dmFyIHQ9T2JqZWN0KGUpLHI9W107Zm9yKHZhciBuIGluIHQpci5wdXNoKG4pO3JldHVybiByLnJldmVyc2UoKSxmdW5jdGlvbiBlKCl7Zm9yKDtyLmxlbmd0aDspe3ZhciBuPXIucG9wKCk7aWYobiBpbiB0KXJldHVybiBlLnZhbHVlPW4sZS5kb25lPSExLGV9cmV0dXJuIGUuZG9uZT0hMCxlfX0sZS52YWx1ZXM9UCxGLnByb3RvdHlwZT17Y29uc3RydWN0b3I6RixyZXNldDpmdW5jdGlvbihlKXtpZih0aGlzLnByZXY9MCx0aGlzLm5leHQ9MCx0aGlzLnNlbnQ9dGhpcy5fc2VudD12b2lkIDAsdGhpcy5kb25lPSExLHRoaXMuZGVsZWdhdGU9bnVsbCx0aGlzLm1ldGhvZD0ibmV4dCIsdGhpcy5hcmc9dm9pZCAwLHRoaXMudHJ5RW50cmllcy5mb3JFYWNoKEMpLCFlKWZvcih2YXIgdCBpbiB0aGlzKSJ0Ij09PXQuY2hhckF0KDApJiZyLmNhbGwodGhpcyx0KSYmIWlzTmFOKCt0LnNsaWNlKDEpKSYmKHRoaXNbdF09dm9pZCAwKX0sc3RvcDpmdW5jdGlvbigpe3RoaXMuZG9uZT0hMDt2YXIgZT10aGlzLnRyeUVudHJpZXNbMF0uY29tcGxldGlvbjtpZigidGhyb3ciPT09ZS50eXBlKXRocm93IGUuYXJnO3JldHVybiB0aGlzLnJ2YWx9LGRpc3BhdGNoRXhjZXB0aW9uOmZ1bmN0aW9uKGUpe2lmKHRoaXMuZG9uZSl0aHJvdyBlO3ZhciB0PXRoaXM7ZnVuY3Rpb24gbihyLG4pe3JldHVybiBvLnR5cGU9InRocm93IixvLmFyZz1lLHQubmV4dD1yLG4mJih0Lm1ldGhvZD0ibmV4dCIsdC5hcmc9dm9pZCAwKSwhIW59Zm9yKHZhciBhPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTthPj0wOy0tYSl7dmFyIGk9dGhpcy50cnlFbnRyaWVzW2FdLG89aS5jb21wbGV0aW9uO2lmKCJyb290Ij09PWkudHJ5TG9jKXJldHVybiBuKCJlbmQiKTtpZihpLnRyeUxvYzw9dGhpcy5wcmV2KXt2YXIgcz1yLmNhbGwoaSwiY2F0Y2hMb2MiKSxjPXIuY2FsbChpLCJmaW5hbGx5TG9jIik7aWYocyYmYyl7aWYodGhpcy5wcmV2PGkuY2F0Y2hMb2MpcmV0dXJuIG4oaS5jYXRjaExvYywhMCk7aWYodGhpcy5wcmV2PGkuZmluYWxseUxvYylyZXR1cm4gbihpLmZpbmFsbHlMb2MpfWVsc2UgaWYocyl7aWYodGhpcy5wcmV2PGkuY2F0Y2hMb2MpcmV0dXJuIG4oaS5jYXRjaExvYywhMCl9ZWxzZXtpZighYyl0aHJvdyBuZXcgRXJyb3IoInRyeSBzdGF0ZW1lbnQgd2l0aG91dCBjYXRjaCBvciBmaW5hbGx5Iik7aWYodGhpcy5wcmV2PGkuZmluYWxseUxvYylyZXR1cm4gbihpLmZpbmFsbHlMb2MpfX19fSxhYnJ1cHQ6ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO24+PTA7LS1uKXt2YXIgYT10aGlzLnRyeUVudHJpZXNbbl07aWYoYS50cnlMb2M8PXRoaXMucHJldiYmci5jYWxsKGEsImZpbmFsbHlMb2MiKSYmdGhpcy5wcmV2PGEuZmluYWxseUxvYyl7dmFyIGk9YTticmVha319aSYmKCJicmVhayI9PT1lfHwiY29udGludWUiPT09ZSkmJmkudHJ5TG9jPD10JiZ0PD1pLmZpbmFsbHlMb2MmJihpPW51bGwpO3ZhciBvPWk/aS5jb21wbGV0aW9uOnt9O3JldHVybiBvLnR5cGU9ZSxvLmFyZz10LGk/KHRoaXMubWV0aG9kPSJuZXh0Iix0aGlzLm5leHQ9aS5maW5hbGx5TG9jLGYpOnRoaXMuY29tcGxldGUobyl9LGNvbXBsZXRlOmZ1bmN0aW9uKGUsdCl7aWYoInRocm93Ij09PWUudHlwZSl0aHJvdyBlLmFyZztyZXR1cm4iYnJlYWsiPT09ZS50eXBlfHwiY29udGludWUiPT09ZS50eXBlP3RoaXMubmV4dD1lLmFyZzoicmV0dXJuIj09PWUudHlwZT8odGhpcy5ydmFsPXRoaXMuYXJnPWUuYXJnLHRoaXMubWV0aG9kPSJyZXR1cm4iLHRoaXMubmV4dD0iZW5kIik6Im5vcm1hbCI9PT1lLnR5cGUmJnQmJih0aGlzLm5leHQ9dCksZn0sZmluaXNoOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7dD49MDstLXQpe3ZhciByPXRoaXMudHJ5RW50cmllc1t0XTtpZihyLmZpbmFsbHlMb2M9PT1lKXJldHVybiB0aGlzLmNvbXBsZXRlKHIuY29tcGxldGlvbixyLmFmdGVyTG9jKSxDKHIpLGZ9fSxjYXRjaDpmdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO3Q+PTA7LS10KXt2YXIgcj10aGlzLnRyeUVudHJpZXNbdF07aWYoci50cnlMb2M9PT1lKXt2YXIgbj1yLmNvbXBsZXRpb247aWYoInRocm93Ij09PW4udHlwZSl7dmFyIGE9bi5hcmc7QyhyKX1yZXR1cm4gYX19dGhyb3cgbmV3IEVycm9yKCJpbGxlZ2FsIGNhdGNoIGF0dGVtcHQiKX0sZGVsZWdhdGVZaWVsZDpmdW5jdGlvbihlLHQscil7cmV0dXJuIHRoaXMuZGVsZWdhdGU9e2l0ZXJhdG9yOlAoZSkscmVzdWx0TmFtZTp0LG5leHRMb2M6cn0sIm5leHQiPT09dGhpcy5tZXRob2QmJih0aGlzLmFyZz12b2lkIDApLGZ9fSxlfWZ1bmN0aW9uIHkoZSx0KXt2YXIgcj0idW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlWyJAQGl0ZXJhdG9yIl07aWYoIXIpe2lmKEFycmF5LmlzQXJyYXkoZSl8fChyPW0oZSkpfHx0JiZlJiYibnVtYmVyIj09dHlwZW9mIGUubGVuZ3RoKXtyJiYoZT1yKTt2YXIgbj0wLGE9ZnVuY3Rpb24oKXt9O3JldHVybntzOmEsbjpmdW5jdGlvbigpe3JldHVybiBuPj1lLmxlbmd0aD97ZG9uZTohMH06e2RvbmU6ITEsdmFsdWU6ZVtuKytdfX0sZTpmdW5jdGlvbihlKXt0aHJvdyBlfSxmOmF9fXRocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBpdGVyYXRlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX12YXIgaSxvPSEwLHM9ITE7cmV0dXJue3M6ZnVuY3Rpb24oKXtyPXIuY2FsbChlKX0sbjpmdW5jdGlvbigpe3ZhciBlPXIubmV4dCgpO3JldHVybiBvPWUuZG9uZSxlfSxlOmZ1bmN0aW9uKGUpe3M9ITAsaT1lfSxmOmZ1bmN0aW9uKCl7dHJ5e298fG51bGw9PXIucmV0dXJufHxyLnJldHVybigpfWZpbmFsbHl7aWYocyl0aHJvdyBpfX19fWZ1bmN0aW9uIG0oZSx0KXtpZihlKXtpZigic3RyaW5nIj09dHlwZW9mIGUpcmV0dXJuIGIoZSx0KTt2YXIgcj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7cmV0dXJuIk9iamVjdCI9PT1yJiZlLmNvbnN0cnVjdG9yJiYocj1lLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09cnx8IlNldCI9PT1yP0FycmF5LmZyb20oZSk6IkFyZ3VtZW50cyI9PT1yfHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChyKT9iKGUsdCk6dm9pZCAwfX1mdW5jdGlvbiBiKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciByPTAsbj1uZXcgQXJyYXkodCk7cjx0O3IrKyluW3JdPWVbcl07cmV0dXJuIG59ZnVuY3Rpb24gdyhlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIGsoZSx0KXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIG49dFtyXTtuLmVudW1lcmFibGU9bi5lbnVtZXJhYmxlfHwhMSxuLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gbiYmKG4ud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCh2b2lkIDAsYT1mdW5jdGlvbihlLHQpe2lmKCJvYmplY3QiIT09ZyhlKXx8bnVsbD09PWUpcmV0dXJuIGU7dmFyIHI9ZVtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PXIpe3ZhciBuPXIuY2FsbChlLCJzdHJpbmciKTtpZigib2JqZWN0IiE9PWcobikpcmV0dXJuIG47dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4gU3RyaW5nKGUpfShuLmtleSksInN5bWJvbCI9PT1nKGEpP2E6U3RyaW5nKGEpKSxuKX12YXIgYX1mdW5jdGlvbiBTKGUsdCxyKXtyZXR1cm4gdCYmayhlLnByb3RvdHlwZSx0KSxyJiZrKGUsciksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZX12YXIgeD1TeW1ib2woKTt0LiRhY2NlcHRXaGl0ZXNwYWNlPXg7dmFyIE89U3ltYm9sKCk7dC4kYWRkSFRNTD1PO3ZhciBBPVN5bWJvbCgpO3QuJGFwcGVuZENoaWxkPUE7dmFyIEM9U3ltYm9sKCk7dC4kY2hpbGRyZW5Ub0hUTUw9Qzt2YXIgRj1TeW1ib2woKTt0LiRjbGVhbj1GO3ZhciBQPVN5bWJvbCgpO3QuJGNsZWFuUGFnZT1QO3ZhciBUPVN5bWJvbCgpO3QuJGNsZWFudXA9VDt2YXIgST1TeW1ib2woKTt0LiRjbG9uZT1JO3ZhciBFPVN5bWJvbCgpO3QuJGNvbnN1bWVkPUU7dmFyIGo9U3ltYm9sKCJjb250ZW50Iik7dC4kY29udGVudD1qO3ZhciBNPVN5bWJvbCgiZGF0YSIpO3QuJGRhdGE9TTt2YXIgXz1TeW1ib2woKTt0LiRkdW1wPV87dmFyIEw9U3ltYm9sKCJleHRyYSIpO3QuJGV4dHJhPUw7dmFyIFI9U3ltYm9sKCk7dC4kZmluYWxpemU9Ujt2YXIgTj1TeW1ib2woKTt0LiRmbHVzaEhUTUw9Tjt2YXIgRD1TeW1ib2woKTt0LiRnZXRBdHRyaWJ1dGVJdD1EO3ZhciBCPVN5bWJvbCgpO3QuJGdldEF0dHJpYnV0ZXM9Qjt2YXIgVT1TeW1ib2woKTt0LiRnZXRBdmFpbGFibGVTcGFjZT1VO3ZhciAkPVN5bWJvbCgpO3QuJGdldENoaWxkcmVuQnlDbGFzcz0kO3ZhciBYPVN5bWJvbCgpO3QuJGdldENoaWxkcmVuQnlOYW1lPVg7dmFyIEg9U3ltYm9sKCk7dC4kZ2V0Q2hpbGRyZW5CeU5hbWVJdD1IO3ZhciBxPVN5bWJvbCgpO3QuJGdldERhdGFWYWx1ZT1xO3ZhciBHPVN5bWJvbCgpO3QuJGdldEV4dHJhPUc7dmFyIHo9U3ltYm9sKCk7dC4kZ2V0UmVhbENoaWxkcmVuQnlOYW1lSXQ9ejt2YXIgVz1TeW1ib2woKTt0LiRnZXRDaGlsZHJlbj1XO3ZhciBWPVN5bWJvbCgpO3QuJGdldENvbnRhaW5lZENoaWxkcmVuPVY7dmFyIFk9U3ltYm9sKCk7dC4kZ2V0TmV4dFBhZ2U9WTt2YXIgSz1TeW1ib2woKTt0LiRnZXRTdWJmb3JtUGFyZW50PUs7dmFyIEo9U3ltYm9sKCk7dC4kZ2V0UGFyZW50PUo7dmFyIFo9U3ltYm9sKCk7dC4kZ2V0VGVtcGxhdGVSb290PVo7dmFyIFE9U3ltYm9sKCk7dC4kZ2xvYmFsRGF0YT1RO3ZhciBlZT1TeW1ib2woKTt0LiRoYXNTZXR0YWJsZVZhbHVlPWVlO3ZhciB0ZT1TeW1ib2woKTt0LiRpZHM9dGU7dmFyIHJlPVN5bWJvbCgpO3QuJGluZGV4T2Y9cmU7dmFyIG5lPVN5bWJvbCgpO3QuJGluc2VydEF0PW5lO3ZhciBhZT1TeW1ib2woKTt0LiRpc0NEQVRBWG1sPWFlO3ZhciBpZT1TeW1ib2woKTt0LiRpc0JpbmRhYmxlPWllO3ZhciBvZT1TeW1ib2woKTt0LiRpc0RhdGFWYWx1ZT1vZTt2YXIgc2U9U3ltYm9sKCk7dC4kaXNEZXNjZW5kZW50PXNlO3ZhciBjZT1TeW1ib2woKTt0LiRpc05zQWdub3N0aWM9Y2U7dmFyIHVlPVN5bWJvbCgpO3QuJGlzU3BsaXR0YWJsZT11ZTt2YXIgbGU9U3ltYm9sKCk7dC4kaXNUaGVyZU1vcmVXaWR0aD1sZTt2YXIgZmU9U3ltYm9sKCk7dC4kaXNUcmFuc3BhcmVudD1mZTt2YXIgaGU9U3ltYm9sKCk7dC4kaXNVc2FibGU9aGU7dmFyIGRlPVN5bWJvbCgpLHBlPVN5bWJvbCgibmFtZXNwYWNlSWQiKTt0LiRuYW1lc3BhY2VJZD1wZTt2YXIgZ2U9U3ltYm9sKCJub2RlTmFtZSIpO3QuJG5vZGVOYW1lPWdlO3ZhciB2ZT1TeW1ib2woKTt0LiRuc0F0dHJpYnV0ZXM9dmU7dmFyIHllPVN5bWJvbCgpO3QuJG9uQ2hpbGQ9eWU7dmFyIG1lPVN5bWJvbCgpO3QuJG9uQ2hpbGRDaGVjaz1tZTt2YXIgYmU9U3ltYm9sKCk7dC4kb25UZXh0PWJlO3ZhciB3ZT1TeW1ib2woKTt0LiRwdXNoR2x5cGhzPXdlO3ZhciBrZT1TeW1ib2woKTt0LiRwb3BQYXJhPWtlO3ZhciBTZT1TeW1ib2woKTt0LiRwdXNoUGFyYT1TZTt2YXIgeGU9U3ltYm9sKCk7dC4kcmVtb3ZlQ2hpbGQ9eGU7dmFyIE9lPVN5bWJvbCgicm9vdCIpO3QuJHJvb3Q9T2U7dmFyIEFlPVN5bWJvbCgpO3QuJHJlc29sdmVQcm90b3R5cGVzPUFlO3ZhciBDZT1TeW1ib2woKTt0LiRzZWFyY2hOb2RlPUNlO3ZhciBGZT1TeW1ib2woKTt0LiRzZXRJZD1GZTt2YXIgUGU9U3ltYm9sKCk7dC4kc2V0U2V0QXR0cmlidXRlcz1QZTt2YXIgVGU9U3ltYm9sKCk7dC4kc2V0VmFsdWU9VGU7dmFyIEllPVN5bWJvbCgpO3QuJHRhYkluZGV4PUllO3ZhciBFZT1TeW1ib2woKTt0LiR0ZXh0PUVlO3ZhciBqZT1TeW1ib2woKTt0LiR0b1BhZ2VzPWplO3ZhciBNZT1TeW1ib2woKTt0LiR0b0hUTUw9TWU7dmFyIF9lPVN5bWJvbCgpO3QuJHRvU3RyaW5nPV9lO3ZhciBMZT1TeW1ib2woKTt0LiR0b1N0eWxlPUxlO3ZhciBSZT1TeW1ib2woInVpZCIpO3QuJHVpZD1SZTt2YXIgTmU9U3ltYm9sKCksRGU9U3ltYm9sKCksQmU9U3ltYm9sKCksVWU9U3ltYm9sKCJfY2hpbGRyZW4iKSwkZT1TeW1ib2woKSxYZT1TeW1ib2woKSxIZT1TeW1ib2woKSxxZT1TeW1ib2woKSxHZT1TeW1ib2woKSx6ZT1TeW1ib2woKSxXZT1TeW1ib2woKSxWZT1TeW1ib2woKSxZZT1TeW1ib2woKSxLZT1TeW1ib2woInBhcmVudCIpLEplPVN5bWJvbCgpLFplPVN5bWJvbCgpLFFlPVN5bWJvbCgpLGV0PTAsdHQ9by5OYW1lc3BhY2VJZHMuZGF0YXNldHMuaWQscnQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQscil7dmFyIG49YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0mJmFyZ3VtZW50c1syXTt3KHRoaXMsZSksdGhpc1twZV09dCx0aGlzW2dlXT1yLHRoaXNbV2VdPW4sdGhpc1tLZV09bnVsbCx0aGlzW1VlXT1bXSx0aGlzW1JlXT0iIi5jb25jYXQocikuY29uY2F0KGV0KyspLHRoaXNbUV09bnVsbH1yZXR1cm4gUyhlLFt7a2V5OnllLHZhbHVlOmZ1bmN0aW9uKGUpe2lmKCF0aGlzW1dlXXx8IXRoaXNbbWVdKGUpKXJldHVybiExO3ZhciB0PWVbZ2VdLHI9dGhpc1t0XTtpZighKHIgaW5zdGFuY2VvZiBudCkpcmV0dXJuIG51bGwhPT1yJiZ0aGlzW3hlXShyKSx0aGlzW3RdPWUsdGhpc1tBXShlKSwhMDtpZihyLnB1c2goZSkpcmV0dXJuIHRoaXNbQV0oZSksITA7dmFyIG49IiI7cmV0dXJuIHRoaXMuaWQ/bj0iIChpZDogIi5jb25jYXQodGhpcy5pZCwiKSIpOnRoaXMubmFtZSYmKG49IiAobmFtZTogIi5jb25jYXQodGhpcy5uYW1lLCIgIikuY29uY2F0KHRoaXMuaC52YWx1ZSwiKSIpKSwoMCxhLndhcm4pKCdYRkEgLSBub2RlICInLmNvbmNhdCh0aGlzW2dlXSwnIicpLmNvbmNhdChuLCcgaGFzIGFscmVhZHkgZW5vdWdoICInKS5jb25jYXQodCwnIiEnKSksITF9fSx7a2V5Om1lLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmhhc093blByb3BlcnR5KGVbZ2VdKSYmZVtwZV09PT10aGlzW3BlXX19LHtrZXk6Y2UsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4hMX19LHtrZXk6eCx2YWx1ZTpmdW5jdGlvbigpe3JldHVybiExfX0se2tleTphZSx2YWx1ZTpmdW5jdGlvbigpe3JldHVybiExfX0se2tleTppZSx2YWx1ZTpmdW5jdGlvbigpe3JldHVybiExfX0se2tleTprZSx2YWx1ZTpmdW5jdGlvbigpe3RoaXMucGFyYSYmdGhpc1taXSgpW0xdLnBhcmFTdGFjay5wb3AoKX19LHtrZXk6U2UsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzW1pdKClbTF0ucGFyYVN0YWNrLnB1c2godGhpcy5wYXJhKX19LHtrZXk6RmUsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5pZCYmdGhpc1twZV09PT1vLk5hbWVzcGFjZUlkcy50ZW1wbGF0ZS5pZCYmZS5zZXQodGhpcy5pZCx0aGlzKX19LHtrZXk6Wix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzW1FdLnRlbXBsYXRlfX0se2tleTp1ZSx2YWx1ZTpmdW5jdGlvbigpe3JldHVybiExfX0se2tleTpsZSx2YWx1ZTpmdW5jdGlvbigpe3JldHVybiExfX0se2tleTpBLHZhbHVlOmZ1bmN0aW9uKGUpe2VbS2VdPXRoaXMsdGhpc1tVZV0ucHVzaChlKSwhZVtRXSYmdGhpc1tRXSYmKGVbUV09dGhpc1tRXSl9fSx7a2V5OnhlLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXNbVWVdLmluZGV4T2YoZSk7dGhpc1tVZV0uc3BsaWNlKHQsMSl9fSx7a2V5OmVlLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaGFzT3duUHJvcGVydHkoInZhbHVlIil9fSx7a2V5OlRlLHZhbHVlOmZ1bmN0aW9uKGUpe319LHtrZXk6YmUsdmFsdWU6ZnVuY3Rpb24oZSl7fX0se2tleTpSLHZhbHVlOmZ1bmN0aW9uKCl7fX0se2tleTpGLHZhbHVlOmZ1bmN0aW9uKGUpe2RlbGV0ZSB0aGlzW1dlXSx0aGlzW1RdJiYoZS5jbGVhbih0aGlzW1RdKSxkZWxldGUgdGhpc1tUXSl9fSx7a2V5OnJlLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzW1VlXS5pbmRleE9mKGUpfX0se2tleTpuZSx2YWx1ZTpmdW5jdGlvbihlLHQpe3RbS2VdPXRoaXMsdGhpc1tVZV0uc3BsaWNlKGUsMCx0KSwhdFtRXSYmdGhpc1tRXSYmKHRbUV09dGhpc1tRXSl9fSx7a2V5OmZlLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMubmFtZX19LHtrZXk6ZGUsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4iIn19LHtrZXk6RWUsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gMD09PXRoaXNbVWVdLmxlbmd0aD90aGlzW2pdOnRoaXNbVWVdLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGVbRWVdKCl9KSkuam9pbigiIil9fSx7a2V5OkJlLGdldDpmdW5jdGlvbigpe3ZhciB0PU9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKTtpZighdC5fYXR0cmlidXRlcyl7dmFyIHIsbj10Ll9hdHRyaWJ1dGVzPW5ldyBTZXQsaT15KE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMpKTt0cnl7Zm9yKGkucygpOyEocj1pLm4oKSkuZG9uZTspe3ZhciBvPXIudmFsdWU7aWYobnVsbD09PXRoaXNbb118fHRoaXNbb11pbnN0YW5jZW9mIGV8fHRoaXNbb11pbnN0YW5jZW9mIG50KWJyZWFrO24uYWRkKG8pfX1jYXRjaChlKXtpLmUoZSl9ZmluYWxseXtpLmYoKX19cmV0dXJuKDAsYS5zaGFkb3cpKHRoaXMsQmUsdC5fYXR0cmlidXRlcyl9fSx7a2V5OnNlLHZhbHVlOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD10aGlzO3Q7KXtpZih0PT09ZSlyZXR1cm4hMDt0PXRbSl0oKX1yZXR1cm4hMX19LHtrZXk6Six2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzW0tlXX19LHtrZXk6Syx2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzW0pdKCl9fSx7a2V5OlcsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06bnVsbDtyZXR1cm4gZT90aGlzW2VdOnRoaXNbVWVdfX0se2tleTpfLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzW2pdJiYodC4kY29udGVudD10aGlzW2pdKTt2YXIgcixuPXkoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpO3RyeXtmb3Iobi5zKCk7IShyPW4ubigpKS5kb25lOyl7dmFyIGE9ci52YWx1ZSxpPXRoaXNbYV07bnVsbCE9PWkmJihpIGluc3RhbmNlb2YgZT90W2FdPWlbX10oKTppIGluc3RhbmNlb2YgbnQ/aS5pc0VtcHR5KCl8fCh0W2FdPWkuZHVtcCgpKTp0W2FdPWkpfX1jYXRjaChlKXtuLmUoZSl9ZmluYWxseXtuLmYoKX1yZXR1cm4gdH19LHtrZXk6TGUsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH19LHtrZXk6TWUsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gbi5IVE1MUmVzdWx0LkVNUFRZfX0se2tleTpWLHZhbHVlOnYoKS5tYXJrKChmdW5jdGlvbiBlKCl7dmFyIHQscixuO3JldHVybiB2KCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6dD15KHRoaXNbV10oKSksZS5wcmV2PTEsdC5zKCk7Y2FzZSAzOmlmKChyPXQubigpKS5kb25lKXtlLm5leHQ9OTticmVha31yZXR1cm4gbj1yLnZhbHVlLGUubmV4dD03LG47Y2FzZSA3OmUubmV4dD0zO2JyZWFrO2Nhc2UgOTplLm5leHQ9MTQ7YnJlYWs7Y2FzZSAxMTplLnByZXY9MTEsZS50MD1lLmNhdGNoKDEpLHQuZShlLnQwKTtjYXNlIDE0OnJldHVybiBlLnByZXY9MTQsdC5mKCksZS5maW5pc2goMTQpO2Nhc2UgMTc6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMsW1sxLDExLDE0LDE3XV0pfSkpfSx7a2V5OnFlLHZhbHVlOnYoKS5tYXJrKChmdW5jdGlvbiBlKHQscil7dmFyIG4sYSxpLG8scztyZXR1cm4gdigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOm49eSh0aGlzW1ZdKCkpLGUucHJldj0xLG4ucygpO2Nhc2UgMzppZigoYT1uLm4oKSkuZG9uZSl7ZS5uZXh0PTEzO2JyZWFrfWlmKGk9YS52YWx1ZSx0JiZyIT09dC5oYXMoaVtnZV0pKXtlLm5leHQ9MTE7YnJlYWt9cmV0dXJuIG89dGhpc1tVXSgpLChzPWlbTWVdKG8pKS5zdWNjZXNzfHwodGhpc1tMXS5mYWlsaW5nTm9kZT1pKSxlLm5leHQ9MTEscztjYXNlIDExOmUubmV4dD0zO2JyZWFrO2Nhc2UgMTM6ZS5uZXh0PTE4O2JyZWFrO2Nhc2UgMTU6ZS5wcmV2PTE1LGUudDA9ZS5jYXRjaCgxKSxuLmUoZS50MCk7Y2FzZSAxODpyZXR1cm4gZS5wcmV2PTE4LG4uZigpLGUuZmluaXNoKDE4KTtjYXNlIDIxOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzLFtbMSwxNSwxOCwyMV1dKX0pKX0se2tleTpOLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9fSx7a2V5Ok8sdmFsdWU6ZnVuY3Rpb24oZSx0KXt0aGlzW0xdLmNoaWxkcmVuLnB1c2goZSl9fSx7a2V5OlUsdmFsdWU6ZnVuY3Rpb24oKXt9fSx7a2V5OkMsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5maWx0ZXIscj12b2lkIDA9PT10P251bGw6dCxhPWUuaW5jbHVkZSxpPXZvaWQgMD09PWF8fGE7aWYodGhpc1tMXS5nZW5lcmF0b3Ipe3ZhciBvPXRoaXNbVV0oKSxzPXRoaXNbTF0uZmFpbGluZ05vZGVbTWVdKG8pO2lmKCFzLnN1Y2Nlc3MpcmV0dXJuIHM7cy5odG1sJiZ0aGlzW09dKHMuaHRtbCxzLmJib3gpLGRlbGV0ZSB0aGlzW0xdLmZhaWxpbmdOb2RlfWVsc2UgdGhpc1tMXS5nZW5lcmF0b3I9dGhpc1txZV0ocixpKTtmb3IoOzspe3ZhciBjPXRoaXNbTF0uZ2VuZXJhdG9yLm5leHQoKTtpZihjLmRvbmUpYnJlYWs7dmFyIHU9Yy52YWx1ZTtpZighdS5zdWNjZXNzKXJldHVybiB1O3UuaHRtbCYmdGhpc1tPXSh1Lmh0bWwsdS5iYm94KX1yZXR1cm4gdGhpc1tMXS5nZW5lcmF0b3I9bnVsbCxuLkhUTUxSZXN1bHQuRU1QVFl9fSx7a2V5OlBlLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXNbWmVdPW5ldyBTZXQoT2JqZWN0LmtleXMoZSkpfX0se2tleTp6ZSx2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdCxyPXRoaXNbQmVdLG49dGhpc1taZV07cmV0dXJuKHQ9ZSxmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBiKGUpfSh0KXx8ZnVuY3Rpb24oZSl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJm51bGwhPWVbU3ltYm9sLml0ZXJhdG9yXXx8bnVsbCE9ZVsiQEBpdGVyYXRvciJdKXJldHVybiBBcnJheS5mcm9tKGUpfSh0KXx8bSh0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKSkuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gci5oYXMoZSkmJiFuLmhhcyhlKX0pKX19LHtrZXk6QWUsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQscj1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06bmV3IFNldCxuPXkodGhpc1tVZV0pO3RyeXtmb3Iobi5zKCk7ISh0PW4ubigpKS5kb25lOyl0LnZhbHVlW0plXShlLHIpfWNhdGNoKGUpe24uZShlKX1maW5hbGx5e24uZigpfX19LHtrZXk6SmUsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzW0dlXShlLHQpO3I/dGhpc1tOZV0ocixlLHQpOnRoaXNbQWVdKGUsdCl9fSx7a2V5OkdlLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIHI9dGhpcy51c2Usbj10aGlzLnVzZWhyZWY7aWYoIXImJiFuKXJldHVybiBudWxsO3ZhciBpPW51bGwsbz1udWxsLGM9bnVsbCx1PXI7aWYobj8odT1uLG4uc3RhcnRzV2l0aCgiI3NvbSgiKSYmbi5lbmRzV2l0aCgiKSIpP289bi5zbGljZSg1LG4ubGVuZ3RoLTEpOm4uc3RhcnRzV2l0aCgiLiNzb20oIikmJm4uZW5kc1dpdGgoIikiKT9vPW4uc2xpY2UoNixuLmxlbmd0aC0xKTpuLnN0YXJ0c1dpdGgoIiMiKT9jPW4uc2xpY2UoMSk6bi5zdGFydHNXaXRoKCIuIyIpJiYoYz1uLnNsaWNlKDIpKSk6ci5zdGFydHNXaXRoKCIjIik/Yz1yLnNsaWNlKDEpOm89cix0aGlzLnVzZT10aGlzLnVzZWhyZWY9IiIsYz9pPWUuZ2V0KGMpOihpPSgwLHMuc2VhcmNoTm9kZSkoZS5nZXQoT2UpLHRoaXMsbywhMCwhMSkpJiYoaT1pWzBdKSwhaSlyZXR1cm4oMCxhLndhcm4pKCJYRkEgLSBJbnZhbGlkIHByb3RvdHlwZSByZWZlcmVuY2U6ICIuY29uY2F0KHUsIi4iKSksbnVsbDtpZihpW2dlXSE9PXRoaXNbZ2VdKXJldHVybigwLGEud2FybikoIlhGQSAtIEluY29tcGF0aWJsZSBwcm90b3R5cGU6ICIuY29uY2F0KGlbZ2VdLCIgIT09ICIpLmNvbmNhdCh0aGlzW2dlXSwiLiIpKSxudWxsO2lmKHQuaGFzKGkpKXJldHVybigwLGEud2FybikoIlhGQSAtIEN5Y2xlIGRldGVjdGVkIGluIHByb3RvdHlwZXMgdXNlLiIpLG51bGw7dC5hZGQoaSk7dmFyIGw9aVtHZV0oZSx0KTtyZXR1cm4gbCYmaVtOZV0obCxlLHQpLGlbQWVdKGUsdCksdC5kZWxldGUoaSksaX19LHtrZXk6TmUsdmFsdWU6ZnVuY3Rpb24oZSx0LHIpe2lmKHIuaGFzKGUpKSgwLGEud2FybikoIlhGQSAtIEN5Y2xlIGRldGVjdGVkIGluIHByb3RvdHlwZXMgdXNlLiIpO2Vsc2V7IXRoaXNbal0mJmVbal0mJih0aGlzW2pdPWVbal0pLG5ldyBTZXQocikuYWRkKGUpO3ZhciBuLGk9eSh0aGlzW3plXShlW1plXSkpO3RyeXtmb3IoaS5zKCk7IShuPWkubigpKS5kb25lOyl7dmFyIG89bi52YWx1ZTt0aGlzW29dPWVbb10sdGhpc1taZV0mJnRoaXNbWmVdLmFkZChvKX19Y2F0Y2goZSl7aS5lKGUpfWZpbmFsbHl7aS5mKCl9dmFyIHMsYz15KE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMpKTt0cnl7Zm9yKGMucygpOyEocz1jLm4oKSkuZG9uZTspe3ZhciB1PXMudmFsdWU7aWYoIXRoaXNbQmVdLmhhcyh1KSl7dmFyIGw9dGhpc1t1XSxmPWVbdV07aWYobCBpbnN0YW5jZW9mIG50KXt2YXIgaCxkPXkobFtVZV0pO3RyeXtmb3IoZC5zKCk7IShoPWQubigpKS5kb25lOyloLnZhbHVlW0plXSh0LHIpfWNhdGNoKGUpe2QuZShlKX1maW5hbGx5e2QuZigpfWZvcih2YXIgcD1sW1VlXS5sZW5ndGgsZz1mW1VlXS5sZW5ndGg7cDxnO3ArKyl7dmFyIHY9ZVtVZV1bcF1bSV0oKTtpZighbC5wdXNoKHYpKWJyZWFrO3ZbS2VdPXRoaXMsdGhpc1tVZV0ucHVzaCh2KSx2W0plXSh0LHIpfX1lbHNlIGlmKG51bGw9PT1sKXtpZihudWxsIT09Zil7dmFyIG09ZltJXSgpO21bS2VdPXRoaXMsdGhpc1t1XT1tLHRoaXNbVWVdLnB1c2gobSksbVtKZV0odCxyKX19ZWxzZSBsW0FlXSh0LHIpLGYmJmxbTmVdKGYsdCxyKX19fWNhdGNoKGUpe2MuZShlKX1maW5hbGx5e2MuZigpfX19fSx7a2V5OkksdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdCxyPU9iamVjdC5jcmVhdGUoT2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpKSxuPXkoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh0aGlzKSk7dHJ5e2ZvcihuLnMoKTshKHQ9bi5uKCkpLmRvbmU7KXt2YXIgaT10LnZhbHVlO3RyeXtyW2ldPXRoaXNbaV19Y2F0Y2goZSl7KDAsYS5zaGFkb3cpKHIsaSx0aGlzW2ldKX19fWNhdGNoKGUpe24uZShlKX1maW5hbGx5e24uZigpfXJbUmVdPSIiLmNvbmNhdChyW2dlXSkuY29uY2F0KGV0KyspLHJbVWVdPVtdO3ZhciBvLHM9eShPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSk7dHJ5e2ZvcihzLnMoKTshKG89cy5uKCkpLmRvbmU7KXt2YXIgYz1vLnZhbHVlO2lmKHRoaXNbQmVdLmhhcyhjKSlyW2NdPWVbJGVdKHRoaXNbY10pO2Vsc2V7dmFyIHU9dGhpc1tjXTtyW2NdPXUgaW5zdGFuY2VvZiBudD9uZXcgbnQodVtWZV0pOm51bGx9fX1jYXRjaChlKXtzLmUoZSl9ZmluYWxseXtzLmYoKX12YXIgbCxmPXkodGhpc1tVZV0pO3RyeXtmb3IoZi5zKCk7IShsPWYubigpKS5kb25lOyl7dmFyIGg9bC52YWx1ZSxkPWhbZ2VdLHA9aFtJXSgpO3JbVWVdLnB1c2gocCkscFtLZV09cixudWxsPT09cltkXT9yW2RdPXA6cltkXVtVZV0ucHVzaChwKX19Y2F0Y2goZSl7Zi5lKGUpfWZpbmFsbHl7Zi5mKCl9cmV0dXJuIHJ9fSx7a2V5OlcsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06bnVsbDtyZXR1cm4gZT90aGlzW1VlXS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiB0W2dlXT09PWV9KSk6dGhpc1tVZV19fSx7a2V5OiQsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXNbZV19fSx7a2V5OlgsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgcj0hKGFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdKXx8YXJndW1lbnRzWzJdO3JldHVybiBBcnJheS5mcm9tKHRoaXNbSF0oZSx0LHIpKX19LHtrZXk6SCx2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciByPXRoaXMsbj0hKGFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdKXx8YXJndW1lbnRzWzJdO3JldHVybiB2KCkubWFyaygoZnVuY3Rpb24gYSgpe3ZhciBpLG8scztyZXR1cm4gdigpLndyYXAoKGZ1bmN0aW9uKGEpe2Zvcig7Oylzd2l0Y2goYS5wcmV2PWEubmV4dCl7Y2FzZSAwOmlmKCJwYXJlbnQiIT09ZSl7YS5uZXh0PTQ7YnJlYWt9cmV0dXJuIGEubmV4dD0zLHJbS2VdO2Nhc2UgMzpyZXR1cm4gYS5hYnJ1cHQoInJldHVybiIpO2Nhc2UgNDppPXkocltVZV0pLGEucHJldj01LGkucygpO2Nhc2UgNzppZigobz1pLm4oKSkuZG9uZSl7YS5uZXh0PTE5O2JyZWFrfWlmKChzPW8udmFsdWUpW2dlXSE9PWUpe2EubmV4dD0xMjticmVha31yZXR1cm4gYS5uZXh0PTEyLHM7Y2FzZSAxMjppZihzLm5hbWUhPT1lKXthLm5leHQ9MTU7YnJlYWt9cmV0dXJuIGEubmV4dD0xNSxzO2Nhc2UgMTU6aWYoIXQmJiFzW2ZlXSgpKXthLm5leHQ9MTc7YnJlYWt9cmV0dXJuIGEuZGVsZWdhdGVZaWVsZChzW0hdKGUsdCwhMSksInQwIiwxNyk7Y2FzZSAxNzphLm5leHQ9NzticmVhaztjYXNlIDE5OmEubmV4dD0yNDticmVhaztjYXNlIDIxOmEucHJldj0yMSxhLnQxPWEuY2F0Y2goNSksaS5lKGEudDEpO2Nhc2UgMjQ6cmV0dXJuIGEucHJldj0yNCxpLmYoKSxhLmZpbmlzaCgyNCk7Y2FzZSAyNzppZighbnx8IXJbQmVdLmhhcyhlKSl7YS5uZXh0PTMwO2JyZWFrfXJldHVybiBhLm5leHQ9MzAsbmV3IGF0KHIsZSxyW2VdKTtjYXNlIDMwOmNhc2UiZW5kIjpyZXR1cm4gYS5zdG9wKCl9fSksYSxudWxsLFtbNSwyMSwyNCwyN11dKX0pKSgpfX1dLFt7a2V5OiRlLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiBBcnJheS5pc0FycmF5KHQpP3QubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gZVskZV0odCl9KSk6Im9iamVjdCI9PT1nKHQpJiZudWxsIT09dD9PYmplY3QuYXNzaWduKHt9LHQpOnR9fV0pLGV9KCk7dC5YRkFPYmplY3Q9cnQ7dmFyIG50PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXToxLzA7dyh0aGlzLGUpLHRoaXNbVmVdPXQsdGhpc1tVZV09W119cmV0dXJuIFMoZSxbe2tleToicHVzaCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXNbVWVdLmxlbmd0aDw9dGhpc1tWZV0/KHRoaXNbVWVdLnB1c2goZSksITApOigoMCxhLndhcm4pKCdYRkEgLSBub2RlICInLmNvbmNhdChlW2dlXSwnIiBhY2NlcHRzIG5vIG1vcmUgdGhhbiAnKS5jb25jYXQodGhpc1tWZV0sIiBjaGlsZHJlbiIpKSwhMSl9fSx7a2V5OiJpc0VtcHR5Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiAwPT09dGhpc1tVZV0ubGVuZ3RofX0se2tleToiZHVtcCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gMT09PXRoaXNbVWVdLmxlbmd0aD90aGlzW1VlXVswXVtfXSgpOnRoaXNbVWVdLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGVbX10oKX0pKX19LHtrZXk6SSx2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PW5ldyBlKHRoaXNbVmVdKTtyZXR1cm4gdFtVZV09dGhpc1tVZV0ubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZVtJXSgpfSkpLHR9fSx7a2V5OiJjaGlsZHJlbiIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXNbVWVdfX0se2tleToiY2xlYXIiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpc1tVZV0ubGVuZ3RoPTB9fV0pLGV9KCk7dC5YRkFPYmplY3RBcnJheT1udDt2YXIgYXQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQscixuKXt3KHRoaXMsZSksdGhpc1tLZV09dCx0aGlzW2dlXT1yLHRoaXNbal09bix0aGlzW0VdPSExLHRoaXNbUmVdPSJhdHRyaWJ1dGUiLmNvbmNhdChldCsrKX1yZXR1cm4gUyhlLFt7a2V5OkosdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc1tLZV19fSx7a2V5Om9lLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuITB9fSx7a2V5OnEsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc1tqXS50cmltKCl9fSx7a2V5OlRlLHZhbHVlOmZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCl7cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiB0LnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIGUudG9TdHJpbmcoKX0sdH0oKGZ1bmN0aW9uKGUpe2U9ZS52YWx1ZXx8IiIsdGhpc1tqXT1lLnRvU3RyaW5nKCl9KSl9LHtrZXk6RWUsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc1tqXX19LHtrZXk6c2UsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXNbS2VdPT09ZXx8dGhpc1tLZV1bc2VdKGUpfX1dKSxlfSgpO3QuWEZBQXR0cmlidXRlPWF0O3ZhciBpdD1mdW5jdGlvbihlKXtsKHIsZSk7dmFyIHQ9aChyKTtmdW5jdGlvbiByKGUsbil7dmFyIGEsaT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06e307aWYodyh0aGlzLHIpLChhPXQuY2FsbCh0aGlzLGUsbikpW2pdPSIiLGFbWGVdPW51bGwsIiN0ZXh0IiE9PW4pe3ZhciBvPW5ldyBNYXA7YVtEZV09bztmb3IodmFyIHM9MCxjPU9iamVjdC5lbnRyaWVzKGkpO3M8Yy5sZW5ndGg7cysrKXt2YXIgbD11KGNbc10sMiksZj1sWzBdLGg9bFsxXTtvLnNldChmLG5ldyBhdChkKGEpLGYsaCkpfWlmKGkuaGFzT3duUHJvcGVydHkodmUpKXt2YXIgcD1pW3ZlXS54ZmEuZGF0YU5vZGU7dm9pZCAwIT09cCYmKCJkYXRhR3JvdXAiPT09cD9hW1hlXT0hMToiZGF0YVZhbHVlIj09PXAmJihhW1hlXT0hMCkpfX1yZXR1cm4gYVtFXT0hMSxhfXJldHVybiBTKHIsW3trZXk6X2UsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpc1tnZV07aWYoIiN0ZXh0IiE9PXQpe3ZhciByPSgwLGEudXRmOFN0cmluZ1RvU3RyaW5nKSh0KSxuPXRoaXNbcGVdPT09dHQ/InhmYToiOiIiO2UucHVzaCgiPCIuY29uY2F0KG4pLmNvbmNhdChyKSk7dmFyIG8scz15KHRoaXNbRGVdLmVudHJpZXMoKSk7dHJ5e2ZvcihzLnMoKTshKG89cy5uKCkpLmRvbmU7KXt2YXIgYz11KG8udmFsdWUsMiksbD1jWzBdLGY9Y1sxXSxoPSgwLGEudXRmOFN0cmluZ1RvU3RyaW5nKShsKTtlLnB1c2goIiAiLmNvbmNhdChoLCc9IicpLmNvbmNhdCgoMCxpLmVuY29kZVRvWG1sU3RyaW5nKShmW2pdKSwnIicpKX19Y2F0Y2goZSl7cy5lKGUpfWZpbmFsbHl7cy5mKCl9aWYobnVsbCE9PXRoaXNbWGVdJiYodGhpc1tYZV0/ZS5wdXNoKCcgeGZhOmRhdGFOb2RlPSJkYXRhVmFsdWUiJyk6ZS5wdXNoKCcgeGZhOmRhdGFOb2RlPSJkYXRhR3JvdXAiJykpLHRoaXNbal18fDAhPT10aGlzW1VlXS5sZW5ndGgpe2lmKGUucHVzaCgiPiIpLHRoaXNbal0pInN0cmluZyI9PXR5cGVvZiB0aGlzW2pdP2UucHVzaCgoMCxpLmVuY29kZVRvWG1sU3RyaW5nKSh0aGlzW2pdKSk6dGhpc1tqXVtfZV0oZSk7ZWxzZXt2YXIgZCxwPXkodGhpc1tVZV0pO3RyeXtmb3IocC5zKCk7IShkPXAubigpKS5kb25lOylkLnZhbHVlW19lXShlKX1jYXRjaChlKXtwLmUoZSl9ZmluYWxseXtwLmYoKX19ZS5wdXNoKCI8LyIuY29uY2F0KG4pLmNvbmNhdChyLCI+IikpfWVsc2UgZS5wdXNoKCIvPiIpfWVsc2UgZS5wdXNoKCgwLGkuZW5jb2RlVG9YbWxTdHJpbmcpKHRoaXNbal0pKX19LHtrZXk6eWUsdmFsdWU6ZnVuY3Rpb24oZSl7aWYodGhpc1tqXSl7dmFyIHQ9bmV3IHIodGhpc1twZV0sIiN0ZXh0Iik7dGhpc1tBXSh0KSx0W2pdPXRoaXNbal0sdGhpc1tqXT0iIn1yZXR1cm4gdGhpc1tBXShlKSwhMH19LHtrZXk6YmUsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpc1tqXSs9ZX19LHtrZXk6Uix2YWx1ZTpmdW5jdGlvbigpe2lmKHRoaXNbal0mJnRoaXNbVWVdLmxlbmd0aD4wKXt2YXIgZT1uZXcgcih0aGlzW3BlXSwiI3RleHQiKTt0aGlzW0FdKGUpLGVbal09dGhpc1tqXSxkZWxldGUgdGhpc1tqXX19fSx7a2V5Ok1lLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIiN0ZXh0Ij09PXRoaXNbZ2VdP24uSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiIjdGV4dCIsdmFsdWU6dGhpc1tqXX0pOm4uSFRNTFJlc3VsdC5FTVBUWX19LHtrZXk6Vyx2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpudWxsO3JldHVybiBlP3RoaXNbVWVdLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIHRbZ2VdPT09ZX0pKTp0aGlzW1VlXX19LHtrZXk6Qix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzW0RlXX19LHtrZXk6JCx2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzW0RlXS5nZXQoZSk7cmV0dXJuIHZvaWQgMCE9PXQ/dDp0aGlzW1ddKGUpfX0se2tleTpILHZhbHVlOnYoKS5tYXJrKChmdW5jdGlvbihlLHQpe3ZhciByLG4sYSxpO3JldHVybiB2KCkud3JhcCgoZnVuY3Rpb24obyl7Zm9yKDs7KXN3aXRjaChvLnByZXY9by5uZXh0KXtjYXNlIDA6aWYoIShyPXRoaXNbRGVdLmdldChlKSkpe28ubmV4dD00O2JyZWFrfXJldHVybiBvLm5leHQ9NCxyO2Nhc2UgNDpuPXkodGhpc1tVZV0pLG8ucHJldj01LG4ucygpO2Nhc2UgNzppZigoYT1uLm4oKSkuZG9uZSl7by5uZXh0PTE2O2JyZWFrfWlmKChpPWEudmFsdWUpW2dlXSE9PWUpe28ubmV4dD0xMjticmVha31yZXR1cm4gby5uZXh0PTEyLGk7Y2FzZSAxMjppZighdCl7by5uZXh0PTE0O2JyZWFrfXJldHVybiBvLmRlbGVnYXRlWWllbGQoaVtIXShlLHQpLCJ0MCIsMTQpO2Nhc2UgMTQ6by5uZXh0PTc7YnJlYWs7Y2FzZSAxNjpvLm5leHQ9MjE7YnJlYWs7Y2FzZSAxODpvLnByZXY9MTgsby50MT1vLmNhdGNoKDUpLG4uZShvLnQxKTtjYXNlIDIxOnJldHVybiBvLnByZXY9MjEsbi5mKCksby5maW5pc2goMjEpO2Nhc2UgMjQ6Y2FzZSJlbmQiOnJldHVybiBvLnN0b3AoKX19KSxyLHRoaXMsW1s1LDE4LDIxLDI0XV0pfSkpfSx7a2V5OkQsdmFsdWU6digpLm1hcmsoKGZ1bmN0aW9uKGUsdCl7dmFyIHIsbixhLGk7cmV0dXJuIHYoKS53cmFwKChmdW5jdGlvbihvKXtmb3IoOzspc3dpdGNoKG8ucHJldj1vLm5leHQpe2Nhc2UgMDppZighKHI9dGhpc1tEZV0uZ2V0KGUpKXx8dCYmcltFXSl7by5uZXh0PTQ7YnJlYWt9cmV0dXJuIG8ubmV4dD00LHI7Y2FzZSA0Om49eSh0aGlzW1VlXSksby5wcmV2PTUsbi5zKCk7Y2FzZSA3OmlmKChhPW4ubigpKS5kb25lKXtvLm5leHQ9MTI7YnJlYWt9cmV0dXJuIGk9YS52YWx1ZSxvLmRlbGVnYXRlWWllbGQoaVtEXShlLHQpLCJ0MCIsMTApO2Nhc2UgMTA6by5uZXh0PTc7YnJlYWs7Y2FzZSAxMjpvLm5leHQ9MTc7YnJlYWs7Y2FzZSAxNDpvLnByZXY9MTQsby50MT1vLmNhdGNoKDUpLG4uZShvLnQxKTtjYXNlIDE3OnJldHVybiBvLnByZXY9MTcsbi5mKCksby5maW5pc2goMTcpO2Nhc2UgMjA6Y2FzZSJlbmQiOnJldHVybiBvLnN0b3AoKX19KSxyLHRoaXMsW1s1LDE0LDE3LDIwXV0pfSkpfSx7a2V5OnosdmFsdWU6digpLm1hcmsoKGZ1bmN0aW9uIGUodCxyLG4pe3ZhciBhLGksbztyZXR1cm4gdigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOmE9eSh0aGlzW1VlXSksZS5wcmV2PTEsYS5zKCk7Y2FzZSAzOmlmKChpPWEubigpKS5kb25lKXtlLm5leHQ9MTI7YnJlYWt9aWYoKG89aS52YWx1ZSlbZ2VdIT09dHx8biYmb1tFXSl7ZS5uZXh0PTg7YnJlYWt9cmV0dXJuIGUubmV4dD04LG87Y2FzZSA4OmlmKCFyKXtlLm5leHQ9MTA7YnJlYWt9cmV0dXJuIGUuZGVsZWdhdGVZaWVsZChvW3pdKHQscixuKSwidDAiLDEwKTtjYXNlIDEwOmUubmV4dD0zO2JyZWFrO2Nhc2UgMTI6ZS5uZXh0PTE3O2JyZWFrO2Nhc2UgMTQ6ZS5wcmV2PTE0LGUudDE9ZS5jYXRjaCgxKSxhLmUoZS50MSk7Y2FzZSAxNzpyZXR1cm4gZS5wcmV2PTE3LGEuZigpLGUuZmluaXNoKDE3KTtjYXNlIDIwOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzLFtbMSwxNCwxNywyMF1dKX0pKX0se2tleTpvZSx2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBudWxsPT09dGhpc1tYZV0/MD09PXRoaXNbVWVdLmxlbmd0aHx8dGhpc1tVZV1bMF1bcGVdPT09by5OYW1lc3BhY2VJZHMueGh0bWwuaWQ6dGhpc1tYZV19fSx7a2V5OnEsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbD09PXRoaXNbWGVdPzA9PT10aGlzW1VlXS5sZW5ndGg/dGhpc1tqXS50cmltKCk6dGhpc1tVZV1bMF1bcGVdPT09by5OYW1lc3BhY2VJZHMueGh0bWwuaWQ/dGhpc1tVZV1bMF1bRWVdKCkudHJpbSgpOm51bGw6dGhpc1tqXS50cmltKCl9fSx7a2V5OlRlLHZhbHVlOmZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCl7cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiB0LnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIGUudG9TdHJpbmcoKX0sdH0oKGZ1bmN0aW9uKGUpe2U9ZS52YWx1ZXx8IiIsdGhpc1tqXT1lLnRvU3RyaW5nKCl9KSl9LHtrZXk6Xyx2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdJiZhcmd1bWVudHNbMF0sdD1PYmplY3QuY3JlYXRlKG51bGwpO2UmJih0LiRucz10aGlzW3BlXSksdGhpc1tqXSYmKHQuJGNvbnRlbnQ9dGhpc1tqXSksdC4kbmFtZT10aGlzW2dlXSx0LmNoaWxkcmVuPVtdO3ZhciByLG49eSh0aGlzW1VlXSk7dHJ5e2ZvcihuLnMoKTshKHI9bi5uKCkpLmRvbmU7KXt2YXIgYT1yLnZhbHVlO3QuY2hpbGRyZW4ucHVzaChhW19dKGUpKX19Y2F0Y2goZSl7bi5lKGUpfWZpbmFsbHl7bi5mKCl9dC5hdHRyaWJ1dGVzPU9iamVjdC5jcmVhdGUobnVsbCk7dmFyIGksbz15KHRoaXNbRGVdKTt0cnl7Zm9yKG8ucygpOyEoaT1vLm4oKSkuZG9uZTspe3ZhciBzPXUoaS52YWx1ZSwyKSxjPXNbMF0sbD1zWzFdO3QuYXR0cmlidXRlc1tjXT1sW2pdfX1jYXRjaChlKXtvLmUoZSl9ZmluYWxseXtvLmYoKX1yZXR1cm4gdH19XSkscn0ocnQpO3QuWG1sT2JqZWN0PWl0O3ZhciBvdD1mdW5jdGlvbihlKXtsKHIsZSk7dmFyIHQ9aChyKTtmdW5jdGlvbiByKGUsbil7dmFyIGE7cmV0dXJuIHcodGhpcyxyKSwoYT10LmNhbGwodGhpcyxlLG4pKVtqXT0iIixhfXJldHVybiBTKHIsW3trZXk6YmUsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpc1tqXSs9ZX19LHtrZXk6Uix2YWx1ZTpmdW5jdGlvbigpe319XSkscn0ocnQpO3QuQ29udGVudE9iamVjdD1vdDt2YXIgc3Q9ZnVuY3Rpb24oZSl7bChyLGUpO3ZhciB0PWgocik7ZnVuY3Rpb24gcihlLG4sYSl7dmFyIGk7cmV0dXJuIHcodGhpcyxyKSwoaT10LmNhbGwodGhpcyxlLG4pKVtZZV09YSxpfXJldHVybiBTKHIsW3trZXk6Uix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXM7dGhpc1tqXT0oMCxuLmdldEtleXdvcmQpKHtkYXRhOnRoaXNbal0sZGVmYXVsdFZhbHVlOnRoaXNbWWVdWzBdLHZhbGlkYXRlOmZ1bmN0aW9uKHQpe3JldHVybiBlW1llXS5pbmNsdWRlcyh0KX19KX19LHtrZXk6Rix2YWx1ZTpmdW5jdGlvbihlKXtjKHAoci5wcm90b3R5cGUpLEYsdGhpcykuY2FsbCh0aGlzLGUpLGRlbGV0ZSB0aGlzW1llXX19XSkscn0ob3QpO3QuT3B0aW9uT2JqZWN0PXN0O3ZhciBjdD1mdW5jdGlvbihlKXtsKHIsZSk7dmFyIHQ9aChyKTtmdW5jdGlvbiByKCl7cmV0dXJuIHcodGhpcyxyKSx0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gUyhyLFt7a2V5OlIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzW2pdPXRoaXNbal0udHJpbSgpfX1dKSxyfShvdCk7dC5TdHJpbmdPYmplY3Q9Y3Q7dmFyIHV0PWZ1bmN0aW9uKGUpe2wocixlKTt2YXIgdD1oKHIpO2Z1bmN0aW9uIHIoZSxuLGEsaSl7dmFyIG87cmV0dXJuIHcodGhpcyxyKSwobz10LmNhbGwodGhpcyxlLG4pKVtIZV09YSxvW1FlXT1pLG99cmV0dXJuIFMocixbe2tleTpSLHZhbHVlOmZ1bmN0aW9uKCl7dGhpc1tqXT0oMCxuLmdldEludGVnZXIpKHtkYXRhOnRoaXNbal0sZGVmYXVsdFZhbHVlOnRoaXNbSGVdLHZhbGlkYXRlOnRoaXNbUWVdfSl9fSx7a2V5OkYsdmFsdWU6ZnVuY3Rpb24oZSl7YyhwKHIucHJvdG90eXBlKSxGLHRoaXMpLmNhbGwodGhpcyxlKSxkZWxldGUgdGhpc1tIZV0sZGVsZXRlIHRoaXNbUWVdfX1dKSxyfShvdCk7dC5JbnRlZ2VyT2JqZWN0PXV0O3ZhciBsdD1mdW5jdGlvbihlKXtsKHIsZSk7dmFyIHQ9aChyKTtmdW5jdGlvbiByKGUsbil7cmV0dXJuIHcodGhpcyxyKSx0LmNhbGwodGhpcyxlLG4sMCwoZnVuY3Rpb24oZSl7cmV0dXJuIDE9PT1lfSkpfXJldHVybiBTKHIpfSh1dCk7dC5PcHRpb24wMT1sdDt2YXIgZnQ9ZnVuY3Rpb24oZSl7bChyLGUpO3ZhciB0PWgocik7ZnVuY3Rpb24gcihlLG4pe3JldHVybiB3KHRoaXMsciksdC5jYWxsKHRoaXMsZSxuLDEsKGZ1bmN0aW9uKGUpe3JldHVybiAwPT09ZX0pKX1yZXR1cm4gUyhyKX0odXQpO3QuT3B0aW9uMTA9ZnR9LChlLHQscik9PntmdW5jdGlvbiBuKGUpe3JldHVybiBuPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSxuKGUpfU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LkhUTUxSZXN1bHQ9dm9pZCAwLHQuZ2V0QkJveD1mdW5jdGlvbihlKXt2YXIgdD0tMTtpZighZSlyZXR1cm57eDp0LHk6dCx3aWR0aDp0LGhlaWdodDp0fTt2YXIgcj1lLnRyaW0oKS5zcGxpdCgvXHMqLFxzKi8pLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGYoZSwiLTEiKX0pKTtpZihyLmxlbmd0aDw0fHxyWzJdPDB8fHJbM108MClyZXR1cm57eDp0LHk6dCx3aWR0aDp0LGhlaWdodDp0fTt2YXIgbj1vKHIsNCk7cmV0dXJue3g6blswXSx5Om5bMV0sd2lkdGg6blsyXSxoZWlnaHQ6blszXX19LHQuZ2V0Q29sb3I9ZnVuY3Rpb24oZSl7dmFyIHQ9byhhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06WzAsMCwwXSwzKSxyPXRbMF0sbj10WzFdLGE9dFsyXTtpZighZSlyZXR1cm57cixnOm4sYjphfTt2YXIgaT1lLnRyaW0oKS5zcGxpdCgvXHMqLFxzKi8pLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGgubWluKE1hdGgubWF4KDAscGFyc2VJbnQoZS50cmltKCksMTApKSwyNTUpfSkpLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGlzTmFOKGUpPzA6ZX0pKTtpZihpLmxlbmd0aDwzKXJldHVybntyLGc6bixiOmF9O3ZhciBzPW8oaSwzKTtyZXR1cm57cjpyPXNbMF0sZzpuPXNbMV0sYjphPXNbMl19fSx0LmdldEZsb2F0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuZGF0YSxyPWUuZGVmYXVsdFZhbHVlLG49ZS52YWxpZGF0ZTtpZighdClyZXR1cm4gcjt0PXQudHJpbSgpO3ZhciBhPXBhcnNlRmxvYXQodCk7cmV0dXJuIWlzTmFOKGEpJiZuKGEpP2E6cn0sdC5nZXRJbnRlZ2VyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuZGF0YSxyPWUuZGVmYXVsdFZhbHVlLG49ZS52YWxpZGF0ZTtpZighdClyZXR1cm4gcjt0PXQudHJpbSgpO3ZhciBhPXBhcnNlSW50KHQsMTApO3JldHVybiFpc05hTihhKSYmbihhKT9hOnJ9LHQuZ2V0S2V5d29yZD1sLHQuZ2V0TWVhc3VyZW1lbnQ9Zix0LmdldFJhdGlvPWZ1bmN0aW9uKGUpe2lmKCFlKXJldHVybntudW06MSxkZW46MX07dmFyIHQ9ZS50cmltKCkuc3BsaXQoL1xzKjpccyovKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBwYXJzZUZsb2F0KGUpfSkpLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIWlzTmFOKGUpfSkpO2lmKDE9PT10Lmxlbmd0aCYmdC5wdXNoKDEpLDA9PT10Lmxlbmd0aClyZXR1cm57bnVtOjEsZGVuOjF9O3ZhciByPW8odCwyKTtyZXR1cm57bnVtOnJbMF0sZGVuOnJbMV19fSx0LmdldFJlbGV2YW50PWZ1bmN0aW9uKGUpe3JldHVybiBlP2UudHJpbSgpLnNwbGl0KC9ccysvKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybntleGNsdWRlZDoiLSI9PT1lWzBdLHZpZXduYW1lOmUuc3Vic3RyaW5nKDEpfX0pKTpbXX0sdC5nZXRTdHJpbmdPcHRpb249ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbCh7ZGF0YTplLGRlZmF1bHRWYWx1ZTp0WzBdLHZhbGlkYXRlOmZ1bmN0aW9uKGUpe3JldHVybiB0LmluY2x1ZGVzKGUpfX0pfSx0LnN0cmlwUXVvdGVzPWZ1bmN0aW9uKGUpe3JldHVybiBlLnN0YXJ0c1dpdGgoIiciKXx8ZS5zdGFydHNXaXRoKCciJyk/ZS5zbGljZSgxLGUubGVuZ3RoLTEpOmV9O3ZhciBhPXIoMik7ZnVuY3Rpb24gaShlLHQpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgYT10W3JdO2EuZW51bWVyYWJsZT1hLmVudW1lcmFibGV8fCExLGEuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBhJiYoYS53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsKHZvaWQgMCxpPWZ1bmN0aW9uKGUsdCl7aWYoIm9iamVjdCIhPT1uKGUpfHxudWxsPT09ZSlyZXR1cm4gZTt2YXIgcj1lW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09cil7dmFyIGE9ci5jYWxsKGUsInN0cmluZyIpO2lmKCJvYmplY3QiIT09bihhKSlyZXR1cm4gYTt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybiBTdHJpbmcoZSl9KGEua2V5KSwic3ltYm9sIj09PW4oaSk/aTpTdHJpbmcoaSkpLGEpfXZhciBpfWZ1bmN0aW9uIG8oZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIHI9bnVsbD09ZT9udWxsOiJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbIkBAaXRlcmF0b3IiXTtpZihudWxsIT1yKXt2YXIgbixhLGksbyxzPVtdLGM9ITAsdT0hMTt0cnl7aWYoaT0ocj1yLmNhbGwoZSkpLm5leHQsMD09PXQpe2lmKE9iamVjdChyKSE9PXIpcmV0dXJuO2M9ITF9ZWxzZSBmb3IoOyEoYz0obj1pLmNhbGwocikpLmRvbmUpJiYocy5wdXNoKG4udmFsdWUpLHMubGVuZ3RoIT09dCk7Yz0hMCk7fWNhdGNoKGUpe3U9ITAsYT1lfWZpbmFsbHl7dHJ5e2lmKCFjJiZudWxsIT1yLnJldHVybiYmKG89ci5yZXR1cm4oKSxPYmplY3QobykhPT1vKSlyZXR1cm59ZmluYWxseXtpZih1KXRocm93IGF9fXJldHVybiBzfX0oZSx0KXx8ZnVuY3Rpb24oZSx0KXtpZihlKXtpZigic3RyaW5nIj09dHlwZW9mIGUpcmV0dXJuIHMoZSx0KTt2YXIgcj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7cmV0dXJuIk9iamVjdCI9PT1yJiZlLmNvbnN0cnVjdG9yJiYocj1lLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09cnx8IlNldCI9PT1yP0FycmF5LmZyb20oZSk6IkFyZ3VtZW50cyI9PT1yfHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChyKT9zKGUsdCk6dm9pZCAwfX0oZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIHMoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIHI9MCxuPW5ldyBBcnJheSh0KTtyPHQ7cisrKW5bcl09ZVtyXTtyZXR1cm4gbn12YXIgYz17cHQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LGNtOmZ1bmN0aW9uKGUpe3JldHVybiBlLzIuNTQqNzJ9LG1tOmZ1bmN0aW9uKGUpe3JldHVybiBlLzI1LjQqNzJ9LGluOmZ1bmN0aW9uKGUpe3JldHVybiA3MiplfSxweDpmdW5jdGlvbihlKXtyZXR1cm4gZX19LHU9LyhbKy1dP1xkK1wuP1xkKikoLiopLztmdW5jdGlvbiBsKGUpe3ZhciB0PWUuZGF0YSxyPWUuZGVmYXVsdFZhbHVlLG49ZS52YWxpZGF0ZTtyZXR1cm4gdCYmbih0PXQudHJpbSgpKT90OnJ9ZnVuY3Rpb24gZihlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06IjAiO2lmKHQ9dHx8IjAiLCFlKXJldHVybiBmKHQpO3ZhciByPWUudHJpbSgpLm1hdGNoKHUpO2lmKCFyKXJldHVybiBmKHQpO3ZhciBuPW8ociwzKSxhPW5bMV0saT1uWzJdLHM9cGFyc2VGbG9hdChhKTtpZihpc05hTihzKSlyZXR1cm4gZih0KTtpZigwPT09cylyZXR1cm4gMDt2YXIgbD1jW2ldO3JldHVybiBsP2wocyk6c312YXIgaD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCxyLG4sYSl7IWZ1bmN0aW9uKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsZSksdGhpcy5zdWNjZXNzPXQsdGhpcy5odG1sPXIsdGhpcy5iYm94PW4sdGhpcy5icmVha05vZGU9YX12YXIgdCxyLG47cmV0dXJuIHQ9ZSxuPVt7a2V5OiJGQUlMVVJFIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4oMCxhLnNoYWRvdykodGhpcywiRkFJTFVSRSIsbmV3IGUoITEsbnVsbCxudWxsLG51bGwpKX19LHtrZXk6IkVNUFRZIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4oMCxhLnNoYWRvdykodGhpcywiRU1QVFkiLG5ldyBlKCEwLG51bGwsbnVsbCxudWxsKSl9fSx7a2V5OiJicmVha05vZGUiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgZSghMSxudWxsLG51bGwsdCl9fSx7a2V5OiJzdWNjZXNzIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IGUoITAsdCxhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06bnVsbCxudWxsKX19XSwocj1be2tleToiaXNCcmVhayIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuYnJlYWtOb2RlfX1dKSYmaSh0LnByb3RvdHlwZSxyKSxuJiZpKHQsbiksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZX0oKTt0LkhUTUxSZXN1bHQ9aH0sKGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5OYW1lc3BhY2VJZHM9dC4kYnVpbGRYRkFPYmplY3Q9dm9pZCAwO3ZhciByPVN5bWJvbCgpO3QuJGJ1aWxkWEZBT2JqZWN0PXIsdC5OYW1lc3BhY2VJZHM9e2NvbmZpZzp7aWQ6MCxjaGVjazpmdW5jdGlvbihlKXtyZXR1cm4gZS5zdGFydHNXaXRoKCJodHRwOi8vd3d3LnhmYS5vcmcvc2NoZW1hL3hjaS8iKX19LGNvbm5lY3Rpb25TZXQ6e2lkOjEsY2hlY2s6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtY29ubmVjdGlvbi1zZXQvIil9fSxkYXRhc2V0czp7aWQ6MixjaGVjazpmdW5jdGlvbihlKXtyZXR1cm4gZS5zdGFydHNXaXRoKCJodHRwOi8vd3d3LnhmYS5vcmcvc2NoZW1hL3hmYS1kYXRhLyIpfX0sZm9ybTp7aWQ6MyxjaGVjazpmdW5jdGlvbihlKXtyZXR1cm4gZS5zdGFydHNXaXRoKCJodHRwOi8vd3d3LnhmYS5vcmcvc2NoZW1hL3hmYS1mb3JtLyIpfX0sbG9jYWxlU2V0OntpZDo0LGNoZWNrOmZ1bmN0aW9uKGUpe3JldHVybiBlLnN0YXJ0c1dpdGgoImh0dHA6Ly93d3cueGZhLm9yZy9zY2hlbWEveGZhLWxvY2FsZS1zZXQvIil9fSxwZGY6e2lkOjUsY2hlY2s6ZnVuY3Rpb24oZSl7cmV0dXJuImh0dHA6Ly9ucy5hZG9iZS5jb20veGRwL3BkZi8iPT09ZX19LHNpZ25hdHVyZTp7aWQ6NixjaGVjazpmdW5jdGlvbihlKXtyZXR1cm4iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI9PT1lfX0sc291cmNlU2V0OntpZDo3LGNoZWNrOmZ1bmN0aW9uKGUpe3JldHVybiBlLnN0YXJ0c1dpdGgoImh0dHA6Ly93d3cueGZhLm9yZy9zY2hlbWEveGZhLXNvdXJjZS1zZXQvIil9fSxzdHlsZXNoZWV0OntpZDo4LGNoZWNrOmZ1bmN0aW9uKGUpe3JldHVybiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L1hTTC9UcmFuc2Zvcm0iPT09ZX19LHRlbXBsYXRlOntpZDo5LGNoZWNrOmZ1bmN0aW9uKGUpe3JldHVybiBlLnN0YXJ0c1dpdGgoImh0dHA6Ly93d3cueGZhLm9yZy9zY2hlbWEveGZhLXRlbXBsYXRlLyIpfX0seGRjOntpZDoxMCxjaGVjazpmdW5jdGlvbihlKXtyZXR1cm4gZS5zdGFydHNXaXRoKCJodHRwOi8vd3d3LnhmYS5vcmcvc2NoZW1hL3hkYy8iKX19LHhkcDp7aWQ6MTEsY2hlY2s6ZnVuY3Rpb24oZSl7cmV0dXJuImh0dHA6Ly9ucy5hZG9iZS5jb20veGRwLyI9PT1lfX0seGZkZjp7aWQ6MTIsY2hlY2s6ZnVuY3Rpb24oZSl7cmV0dXJuImh0dHA6Ly9ucy5hZG9iZS5jb20veGZkZi8iPT09ZX19LHhodG1sOntpZDoxMyxjaGVjazpmdW5jdGlvbihlKXtyZXR1cm4iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI9PT1lfX0seG1wbWV0YTp7aWQ6MTQsY2hlY2s6ZnVuY3Rpb24oZSl7cmV0dXJuImh0dHA6Ly9ucy5hZG9iZS5jb20veG1wbWV0YS8iPT09ZX19fX0sKGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LmNyZWF0ZURhdGFOb2RlPWZ1bmN0aW9uKGUsdCxyKXt2YXIgYT15KHIpO2lmKCFhKXJldHVybiBudWxsO2lmKGEuc29tZSgoZnVuY3Rpb24oZSl7cmV0dXJuIGUub3BlcmF0b3I9PT1kLmRvdERvdH0pKSlyZXR1cm4gbnVsbDt2YXIgbz1wLmdldChhWzBdLm5hbWUpLHM9MDtvPyhlPW8oZSx0KSxzPTEpOmU9dHx8ZTtmb3IodmFyIGM9YS5sZW5ndGg7czxjO3MrKyl7dmFyIHU9YVtzXSxsPXUubmFtZSxmPXUub3BlcmF0b3IsaD11LmluZGV4O2lmKCFpc0Zpbml0ZShoKSlyZXR1cm4gYVtzXS5pbmRleD0wLG0oZSxhLnNsaWNlKHMpKTt2YXIgZz12b2lkIDA7c3dpdGNoKGYpe2Nhc2UgZC5kb3Q6Zz1lW24uJGdldENoaWxkcmVuQnlOYW1lXShsLCExKTticmVhaztjYXNlIGQuZG90RG90Omc9ZVtuLiRnZXRDaGlsZHJlbkJ5TmFtZV0obCwhMCk7YnJlYWs7Y2FzZSBkLmRvdEhhc2g6Zz0oZz1lW24uJGdldENoaWxkcmVuQnlDbGFzc10obCkpaW5zdGFuY2VvZiBuLlhGQU9iamVjdEFycmF5P2cuY2hpbGRyZW46W2ddfWlmKDA9PT1nLmxlbmd0aClyZXR1cm4gbShlLGEuc2xpY2UocykpO2lmKCEoaDxnLmxlbmd0aCkpcmV0dXJuIGFbc10uaW5kZXg9aC1nLmxlbmd0aCxtKGUsYS5zbGljZShzKSk7dmFyIHY9Z1toXTtpZighKHYgaW5zdGFuY2VvZiBuLlhGQU9iamVjdCkpcmV0dXJuKDAsaS53YXJuKSgiWEZBIC0gQ2Fubm90IGNyZWF0ZSBhIG5vZGUuIiksbnVsbDtlPXZ9cmV0dXJuIG51bGx9LHQuc2VhcmNoTm9kZT1mdW5jdGlvbihlLHQscil7dmFyIGE9IShhcmd1bWVudHMubGVuZ3RoPjQmJnZvaWQgMCE9PWFyZ3VtZW50c1s0XSl8fGFyZ3VtZW50c1s0XSxpPXkociwhKGFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdKXx8YXJndW1lbnRzWzNdKTtpZighaSlyZXR1cm4gbnVsbDt2YXIgYyx1PXAuZ2V0KGlbMF0ubmFtZSksbD0wO3U/KGM9ITAsZT1bdShlLHQpXSxsPTEpOihjPW51bGw9PT10LGU9W3R8fGVdKTtmb3IodmFyIGY9ZnVuY3Rpb24ocil7dmFyIHMsdT1pW2xdLGY9dS5uYW1lLGg9dS5jYWNoZU5hbWUscD11Lm9wZXJhdG9yLHY9dS5pbmRleCx5PVtdLG09byhlKTt0cnl7Zm9yKG0ucygpOyEocz1tLm4oKSkuZG9uZTspe3ZhciBiPXMudmFsdWU7aWYoYiBpbnN0YW5jZW9mIG4uWEZBT2JqZWN0KXt2YXIgdz12b2lkIDAsaz12b2lkIDA7aWYoYSYmKChrPWcuZ2V0KGIpKXx8KGs9bmV3IE1hcCxnLnNldChiLGspKSx3PWsuZ2V0KGgpKSwhdyl7c3dpdGNoKHApe2Nhc2UgZC5kb3Q6dz1iW24uJGdldENoaWxkcmVuQnlOYW1lXShmLCExKTticmVhaztjYXNlIGQuZG90RG90Onc9YltuLiRnZXRDaGlsZHJlbkJ5TmFtZV0oZiwhMCk7YnJlYWs7Y2FzZSBkLmRvdEhhc2g6dz0odz1iW24uJGdldENoaWxkcmVuQnlDbGFzc10oZikpaW5zdGFuY2VvZiBuLlhGQU9iamVjdEFycmF5P3cuY2hpbGRyZW46W3ddfWEmJmsuc2V0KGgsdyl9dy5sZW5ndGg+MCYmeS5wdXNoKHcpfX19Y2F0Y2goZSl7bS5lKGUpfWZpbmFsbHl7bS5mKCl9aWYoMD09PXkubGVuZ3RoJiYhYyYmMD09PWwpe3ZhciBTPXRbbi4kZ2V0UGFyZW50XSgpO3JldHVybih0PVMpPyhsPS0xLGU9W3RdLCJjb250aW51ZSIpOnt2Om51bGx9fWU9aXNGaW5pdGUodik/eS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiB2PGUubGVuZ3RofSkpLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGVbdl19KSk6eS5mbGF0KCl9LGg9aS5sZW5ndGg7bDxoO2wrKyl7dmFyIHY9ZigpO2lmKCJjb250aW51ZSIhPT12JiYib2JqZWN0Ij09PXModikpcmV0dXJuIHYudn1yZXR1cm4gMD09PWUubGVuZ3RoP251bGw6ZX07dmFyIG49cigyMDYpLGE9cigyMDgpLGk9cigyKTtmdW5jdGlvbiBvKGUsdCl7dmFyIHI9InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVsiQEBpdGVyYXRvciJdO2lmKCFyKXtpZihBcnJheS5pc0FycmF5KGUpfHwocj11KGUpKXx8dCYmZSYmIm51bWJlciI9PXR5cGVvZiBlLmxlbmd0aCl7ciYmKGU9cik7dmFyIG49MCxhPWZ1bmN0aW9uKCl7fTtyZXR1cm57czphLG46ZnVuY3Rpb24oKXtyZXR1cm4gbj49ZS5sZW5ndGg/e2RvbmU6ITB9Ontkb25lOiExLHZhbHVlOmVbbisrXX19LGU6ZnVuY3Rpb24oZSl7dGhyb3cgZX0sZjphfX10aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gaXRlcmF0ZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9dmFyIGksbz0hMCxzPSExO3JldHVybntzOmZ1bmN0aW9uKCl7cj1yLmNhbGwoZSl9LG46ZnVuY3Rpb24oKXt2YXIgZT1yLm5leHQoKTtyZXR1cm4gbz1lLmRvbmUsZX0sZTpmdW5jdGlvbihlKXtzPSEwLGk9ZX0sZjpmdW5jdGlvbigpe3RyeXtvfHxudWxsPT1yLnJldHVybnx8ci5yZXR1cm4oKX1maW5hbGx5e2lmKHMpdGhyb3cgaX19fX1mdW5jdGlvbiBzKGUpe3JldHVybiBzPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSxzKGUpfWZ1bmN0aW9uIGMoZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIHI9bnVsbD09ZT9udWxsOiJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbIkBAaXRlcmF0b3IiXTtpZihudWxsIT1yKXt2YXIgbixhLGksbyxzPVtdLGM9ITAsdT0hMTt0cnl7aWYoaT0ocj1yLmNhbGwoZSkpLm5leHQsMD09PXQpe2lmKE9iamVjdChyKSE9PXIpcmV0dXJuO2M9ITF9ZWxzZSBmb3IoOyEoYz0obj1pLmNhbGwocikpLmRvbmUpJiYocy5wdXNoKG4udmFsdWUpLHMubGVuZ3RoIT09dCk7Yz0hMCk7fWNhdGNoKGUpe3U9ITAsYT1lfWZpbmFsbHl7dHJ5e2lmKCFjJiZudWxsIT1yLnJldHVybiYmKG89ci5yZXR1cm4oKSxPYmplY3QobykhPT1vKSlyZXR1cm59ZmluYWxseXtpZih1KXRocm93IGF9fXJldHVybiBzfX0oZSx0KXx8dShlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gdShlLHQpe2lmKGUpe2lmKCJzdHJpbmciPT10eXBlb2YgZSlyZXR1cm4gbChlLHQpO3ZhciByPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtyZXR1cm4iT2JqZWN0Ij09PXImJmUuY29uc3RydWN0b3ImJihyPWUuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1yfHwiU2V0Ij09PXI/QXJyYXkuZnJvbShlKToiQXJndW1lbnRzIj09PXJ8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KHIpP2woZSx0KTp2b2lkIDB9fWZ1bmN0aW9uIGwoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIHI9MCxuPW5ldyBBcnJheSh0KTtyPHQ7cisrKW5bcl09ZVtyXTtyZXR1cm4gbn12YXIgZj0vXlteLltdKy8saD0vXlteXF1dKy8sZD17ZG90OjAsZG90RG90OjEsZG90SGFzaDoyLGRvdEJyYWNrZXQ6Myxkb3RQYXJlbjo0fSxwPW5ldyBNYXAoW1siJGRhdGEiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuZGF0YXNldHM/ZS5kYXRhc2V0cy5kYXRhOmV9XSxbIiRyZWNvcmQiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuKGUuZGF0YXNldHM/ZS5kYXRhc2V0cy5kYXRhOmUpW24uJGdldENoaWxkcmVuXSgpWzBdfV0sWyIkdGVtcGxhdGUiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUudGVtcGxhdGV9XSxbIiRjb25uZWN0aW9uU2V0IixmdW5jdGlvbihlLHQpe3JldHVybiBlLmNvbm5lY3Rpb25TZXR9XSxbIiRmb3JtIixmdW5jdGlvbihlLHQpe3JldHVybiBlLmZvcm19XSxbIiRsYXlvdXQiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUubGF5b3V0fV0sWyIkaG9zdCIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5ob3N0fV0sWyIkZGF0YVdpbmRvdyIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5kYXRhV2luZG93fV0sWyIkZXZlbnQiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuZXZlbnR9XSxbIiEiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuZGF0YXNldHN9XSxbIiR4ZmEiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGV9XSxbInhmYSIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gZX1dLFsiJCIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gdH1dXSksZz1uZXcgV2Vha01hcCx2PWEuTmFtZXNwYWNlSWRzLmRhdGFzZXRzLmlkO2Z1bmN0aW9uIHkoZSx0KXt2YXIgcj0hKGFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdKXx8YXJndW1lbnRzWzJdLG49ZS5tYXRjaChmKTtpZighbilyZXR1cm4gbnVsbDtmb3IodmFyIGEsbz1jKG4sMSlbMF0scz1be25hbWU6byxjYWNoZU5hbWU6Ii4iK28saW5kZXg6MCxqczpudWxsLGZvcm1DYWxjOm51bGwsb3BlcmF0b3I6ZC5kb3R9XSx1PW8ubGVuZ3RoO3U8ZS5sZW5ndGg7KXt2YXIgbD11O2lmKCJbIiE9PWUuY2hhckF0KHUrKykpe3ZhciBwPXZvaWQgMDtzd2l0Y2goZS5jaGFyQXQodSkpe2Nhc2UiLiI6aWYoIXQpcmV0dXJuIG51bGw7dSsrLHA9ZC5kb3REb3Q7YnJlYWs7Y2FzZSIjIjp1KysscD1kLmRvdEhhc2g7YnJlYWs7Y2FzZSJbIjppZihyKXJldHVybigwLGkud2FybikoIlhGQSAtIFNPTSBleHByZXNzaW9uIGNvbnRhaW5zIGEgRm9ybUNhbGMgc3ViZXhwcmVzc2lvbiB3aGljaCBpcyBub3Qgc3VwcG9ydGVkIGZvciBub3cuIiksbnVsbDtwPWQuZG90QnJhY2tldDticmVhaztjYXNlIigiOmlmKHIpcmV0dXJuKDAsaS53YXJuKSgiWEZBIC0gU09NIGV4cHJlc3Npb24gY29udGFpbnMgYSBKYXZhU2NyaXB0IHN1YmV4cHJlc3Npb24gd2hpY2ggaXMgbm90IHN1cHBvcnRlZCBmb3Igbm93LiIpLG51bGw7cD1kLmRvdFBhcmVuO2JyZWFrO2RlZmF1bHQ6cD1kLmRvdH1pZighKG49ZS5zbGljZSh1KS5tYXRjaChmKSkpYnJlYWs7dSs9KG89YyhuLDEpWzBdKS5sZW5ndGgscy5wdXNoKHtuYW1lOm8sY2FjaGVOYW1lOmUuc2xpY2UobCx1KSxvcGVyYXRvcjpwLGluZGV4OjAsanM6bnVsbCxmb3JtQ2FsYzpudWxsfSl9ZWxzZXtpZighKG49ZS5zbGljZSh1KS5tYXRjaChoKSkpcmV0dXJuKDAsaS53YXJuKSgiWEZBIC0gSW52YWxpZCBpbmRleCBpbiBTT00gZXhwcmVzc2lvbiIpLG51bGw7cy5hdCgtMSkuaW5kZXg9IioiPT09KGE9KGE9blswXSkudHJpbSgpKT8xLzA6cGFyc2VJbnQoYSwxMCl8fDAsdSs9blswXS5sZW5ndGgrMX19cmV0dXJuIHN9ZnVuY3Rpb24gbShlLHQpe3ZhciByLGE9bnVsbCxpPW8odCk7dHJ5e2ZvcihpLnMoKTshKHI9aS5uKCkpLmRvbmU7KXtmb3IodmFyIHM9ci52YWx1ZSxjPXMubmFtZSx1PXMuaW5kZXgsbD0wLGY9aXNGaW5pdGUodSk/dTowO2w8PWY7bCsrKXt2YXIgaD1lW24uJG5hbWVzcGFjZUlkXT09PXY/LTE6ZVtuLiRuYW1lc3BhY2VJZF07YT1uZXcgbi5YbWxPYmplY3QoaCxjKSxlW24uJGFwcGVuZENoaWxkXShhKX1lPWF9fWNhdGNoKGUpe2kuZShlKX1maW5hbGx5e2kuZigpfXJldHVybiBhfX0sKGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LkJpbmRlcj12b2lkIDA7dmFyIG49cigyMDYpLGE9cigyMTEpLGk9cigyMDkpLG89cigyMDgpLHM9cigyKTtmdW5jdGlvbiBjKGUpe3JldHVybiBjPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSxjKGUpfWZ1bmN0aW9uIHUoZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIHI9bnVsbD09ZT9udWxsOiJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbIkBAaXRlcmF0b3IiXTtpZihudWxsIT1yKXt2YXIgbixhLGksbyxzPVtdLGM9ITAsdT0hMTt0cnl7aWYoaT0ocj1yLmNhbGwoZSkpLm5leHQsMD09PXQpe2lmKE9iamVjdChyKSE9PXIpcmV0dXJuO2M9ITF9ZWxzZSBmb3IoOyEoYz0obj1pLmNhbGwocikpLmRvbmUpJiYocy5wdXNoKG4udmFsdWUpLHMubGVuZ3RoIT09dCk7Yz0hMCk7fWNhdGNoKGUpe3U9ITAsYT1lfWZpbmFsbHl7dHJ5e2lmKCFjJiZudWxsIT1yLnJldHVybiYmKG89ci5yZXR1cm4oKSxPYmplY3QobykhPT1vKSlyZXR1cm59ZmluYWxseXtpZih1KXRocm93IGF9fXJldHVybiBzfX0oZSx0KXx8ZihlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gbChlLHQpe3ZhciByPSJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbIkBAaXRlcmF0b3IiXTtpZighcil7aWYoQXJyYXkuaXNBcnJheShlKXx8KHI9ZihlKSl8fHQmJmUmJiJudW1iZXIiPT10eXBlb2YgZS5sZW5ndGgpe3ImJihlPXIpO3ZhciBuPTAsYT1mdW5jdGlvbigpe307cmV0dXJue3M6YSxuOmZ1bmN0aW9uKCl7cmV0dXJuIG4+PWUubGVuZ3RoP3tkb25lOiEwfTp7ZG9uZTohMSx2YWx1ZTplW24rK119fSxlOmZ1bmN0aW9uKGUpe3Rocm93IGV9LGY6YX19dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGl0ZXJhdGUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfXZhciBpLG89ITAscz0hMTtyZXR1cm57czpmdW5jdGlvbigpe3I9ci5jYWxsKGUpfSxuOmZ1bmN0aW9uKCl7dmFyIGU9ci5uZXh0KCk7cmV0dXJuIG89ZS5kb25lLGV9LGU6ZnVuY3Rpb24oZSl7cz0hMCxpPWV9LGY6ZnVuY3Rpb24oKXt0cnl7b3x8bnVsbD09ci5yZXR1cm58fHIucmV0dXJuKCl9ZmluYWxseXtpZihzKXRocm93IGl9fX19ZnVuY3Rpb24gZihlLHQpe2lmKGUpe2lmKCJzdHJpbmciPT10eXBlb2YgZSlyZXR1cm4gaChlLHQpO3ZhciByPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtyZXR1cm4iT2JqZWN0Ij09PXImJmUuY29uc3RydWN0b3ImJihyPWUuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1yfHwiU2V0Ij09PXI/QXJyYXkuZnJvbShlKToiQXJndW1lbnRzIj09PXJ8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KHIpP2goZSx0KTp2b2lkIDB9fWZ1bmN0aW9uIGgoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIHI9MCxuPW5ldyBBcnJheSh0KTtyPHQ7cisrKW5bcl09ZVtyXTtyZXR1cm4gbn1mdW5jdGlvbiBkKGUsdCl7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBuPXRbcl07bi5lbnVtZXJhYmxlPW4uZW51bWVyYWJsZXx8ITEsbi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIG4mJihuLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwodm9pZCAwLGE9ZnVuY3Rpb24oZSx0KXtpZigib2JqZWN0IiE9PWMoZSl8fG51bGw9PT1lKXJldHVybiBlO3ZhciByPWVbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1yKXt2YXIgbj1yLmNhbGwoZSwic3RyaW5nIik7aWYoIm9iamVjdCIhPT1jKG4pKXJldHVybiBuO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuIFN0cmluZyhlKX0obi5rZXkpLCJzeW1ib2wiPT09YyhhKT9hOlN0cmluZyhhKSksbil9dmFyIGF9dmFyIHA9by5OYW1lc3BhY2VJZHMuZGF0YXNldHMuaWQ7ZnVuY3Rpb24gZyhlKXt2YXIgdD1uZXcgYS5UZXh0KHt9KTtyZXR1cm4gdFtuLiRjb250ZW50XT1lLHR9dmFyIHY9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQpeyFmdW5jdGlvbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGUpLHRoaXMucm9vdD10LHRoaXMuZGF0YXNldHM9dC5kYXRhc2V0cyx0LmRhdGFzZXRzJiZ0LmRhdGFzZXRzLmRhdGE/dGhpcy5kYXRhPXQuZGF0YXNldHMuZGF0YTp0aGlzLmRhdGE9bmV3IG4uWG1sT2JqZWN0KG8uTmFtZXNwYWNlSWRzLmRhdGFzZXRzLmlkLCJkYXRhIiksdGhpcy5lbXB0eU1lcmdlPTA9PT10aGlzLmRhdGFbbi4kZ2V0Q2hpbGRyZW5dKCkubGVuZ3RoLHRoaXMucm9vdC5mb3JtPXRoaXMuZm9ybT10LnRlbXBsYXRlW24uJGNsb25lXSgpfXZhciB0LHI7cmV0dXJuIHQ9ZSwocj1be2tleToiX2lzQ29uc3VtZURhdGEiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuZW1wdHlNZXJnZSYmdGhpcy5fbWVyZ2VNb2RlfX0se2tleToiX2lzTWF0Y2hUZW1wbGF0ZSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5faXNDb25zdW1lRGF0YSgpfX0se2tleToiYmluZCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYmluZEVsZW1lbnQodGhpcy5mb3JtLHRoaXMuZGF0YSksdGhpcy5mb3JtfX0se2tleToiZ2V0RGF0YSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kYXRhfX0se2tleToiX2JpbmRWYWx1ZSIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIpe2lmKGVbbi4kZGF0YV09dCxlW24uJGhhc1NldHRhYmxlVmFsdWVdKCkpaWYodFtuLiRpc0RhdGFWYWx1ZV0oKSl7dmFyIGk9dFtuLiRnZXREYXRhVmFsdWVdKCk7ZVtuLiRzZXRWYWx1ZV0oZyhpKSl9ZWxzZSBpZihlIGluc3RhbmNlb2YgYS5GaWVsZCYmZS51aSYmZS51aS5jaG9pY2VMaXN0JiYibXVsdGlTZWxlY3QiPT09ZS51aS5jaG9pY2VMaXN0Lm9wZW4pe3ZhciBvPXRbbi4kZ2V0Q2hpbGRyZW5dKCkubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZVtuLiRjb250ZW50XS50cmltKCl9KSkuam9pbigiXG4iKTtlW24uJHNldFZhbHVlXShnKG8pKX1lbHNlIHRoaXMuX2lzQ29uc3VtZURhdGEoKSYmKDAscy53YXJuKSgiWEZBIC0gTm9kZXMgaGF2ZW4ndCB0aGUgc2FtZSB0eXBlLiIpO2Vsc2UhdFtuLiRpc0RhdGFWYWx1ZV0oKXx8dGhpcy5faXNNYXRjaFRlbXBsYXRlKCk/dGhpcy5fYmluZEVsZW1lbnQoZSx0KTooMCxzLndhcm4pKCJYRkEgLSBOb2RlcyBoYXZlbid0IHRoZSBzYW1lIHR5cGUuIil9fSx7a2V5OiJfZmluZERhdGFCeU5hbWVUb0NvbnN1bWUiLHZhbHVlOmZ1bmN0aW9uKGUsdCxyLGEpe2lmKCFlKXJldHVybiBudWxsO2Zvcih2YXIgaSxzLGM9MDtjPDM7YysrKXtmb3IoaT1yW24uJGdldFJlYWxDaGlsZHJlbkJ5TmFtZUl0XShlLCExLCEwKTtzPWkubmV4dCgpLnZhbHVlOylpZih0PT09c1tuLiRpc0RhdGFWYWx1ZV0oKSlyZXR1cm4gcztpZihyW24uJG5hbWVzcGFjZUlkXT09PW8uTmFtZXNwYWNlSWRzLmRhdGFzZXRzLmlkJiYiZGF0YSI9PT1yW24uJG5vZGVOYW1lXSlicmVhaztyPXJbbi4kZ2V0UGFyZW50XSgpfXJldHVybiBhJiYoKHM9KGk9dGhpcy5kYXRhW24uJGdldFJlYWxDaGlsZHJlbkJ5TmFtZUl0XShlLCEwLCExKSkubmV4dCgpLnZhbHVlKXx8KHM9KGk9dGhpcy5kYXRhW24uJGdldEF0dHJpYnV0ZUl0XShlLCEwKSkubmV4dCgpLnZhbHVlKSYmc1tuLiRpc0RhdGFWYWx1ZV0oKSk/czpudWxsfX0se2tleToiX3NldFByb3BlcnRpZXMiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7aWYoZS5oYXNPd25Qcm9wZXJ0eSgic2V0UHJvcGVydHkiKSl7dmFyIHIsbz1sKGUuc2V0UHJvcGVydHkuY2hpbGRyZW4pO3RyeXtmb3Ioby5zKCk7IShyPW8ubigpKS5kb25lOyl7dmFyIGM9ci52YWx1ZSxmPWMucmVmLGg9Yy50YXJnZXQ7aWYoIWMuY29ubmVjdGlvbiYmZil7dmFyIGQ9KDAsaS5zZWFyY2hOb2RlKSh0aGlzLnJvb3QsdCxmLCExLCExKTtpZihkKXt2YXIgcD11KGQsMSlbMF07aWYocFtuLiRpc0Rlc2NlbmRlbnRdKHRoaXMuZGF0YSkpe3ZhciBnPSgwLGkuc2VhcmNoTm9kZSkodGhpcy5yb290LGUsaCwhMSwhMSk7aWYoZyl7dmFyIHY9dShnLDEpWzBdO2lmKHZbbi4kaXNEZXNjZW5kZW50XShlKSl7dmFyIHk9dltuLiRnZXRQYXJlbnRdKCk7aWYodiBpbnN0YW5jZW9mIGEuU2V0UHJvcGVydHl8fHkgaW5zdGFuY2VvZiBhLlNldFByb3BlcnR5KSgwLHMud2FybikoIlhGQSAtIEludmFsaWQgdGFyZ2V0OiBjYW5ub3QgYmUgYSBzZXRQcm9wZXJ0eSBvciBvbmUgb2YgaXRzIHByb3BlcnRpZXMuIik7ZWxzZSBpZih2IGluc3RhbmNlb2YgYS5CaW5kSXRlbXN8fHkgaW5zdGFuY2VvZiBhLkJpbmRJdGVtcykoMCxzLndhcm4pKCJYRkEgLSBJbnZhbGlkIHRhcmdldDogY2Fubm90IGJlIGEgYmluZEl0ZW1zIG9yIG9uZSBvZiBpdHMgcHJvcGVydGllcy4iKTtlbHNle3ZhciBtPXBbbi4kdGV4dF0oKSxiPXZbbi4kbm9kZU5hbWVdO2lmKHYgaW5zdGFuY2VvZiBuLlhGQUF0dHJpYnV0ZSl7dmFyIHc9T2JqZWN0LmNyZWF0ZShudWxsKTt3W2JdPW07dmFyIGs9UmVmbGVjdC5jb25zdHJ1Y3QoT2JqZWN0LmdldFByb3RvdHlwZU9mKHkpLmNvbnN0cnVjdG9yLFt3XSk7eVtiXT1rW2JdfWVsc2Ugdi5oYXNPd25Qcm9wZXJ0eShuLiRjb250ZW50KT8odltuLiRkYXRhXT1wLHZbbi4kY29udGVudF09bSx2W24uJGZpbmFsaXplXSgpKTooMCxzLndhcm4pKCJYRkEgLSBJbnZhbGlkIG5vZGUgdG8gdXNlIGluIHNldFByb3BlcnR5Iil9fWVsc2UoMCxzLndhcm4pKCJYRkEgLSBJbnZhbGlkIHRhcmdldDogbXVzdCBiZSBhIHByb3BlcnR5IG9yIHN1YnByb3BlcnR5LiIpfWVsc2UoMCxzLndhcm4pKCJYRkEgLSBJbnZhbGlkIHRhcmdldDogIi5jb25jYXQoaCwiLiIpKX1lbHNlKDAscy53YXJuKSgiWEZBIC0gSW52YWxpZCBub2RlOiBtdXN0IGJlIGEgZGF0YSBub2RlLiIpfWVsc2UoMCxzLndhcm4pKCJYRkEgLSBJbnZhbGlkIHJlZmVyZW5jZTogIi5jb25jYXQoZiwiLiIpKX19fWNhdGNoKGUpe28uZShlKX1maW5hbGx5e28uZigpfX19fSx7a2V5OiJfYmluZEl0ZW1zIix2YWx1ZTpmdW5jdGlvbihlLHQpe2lmKGUuaGFzT3duUHJvcGVydHkoIml0ZW1zIikmJmUuaGFzT3duUHJvcGVydHkoImJpbmRJdGVtcyIpJiYhZS5iaW5kSXRlbXMuaXNFbXB0eSgpKXt2YXIgcixvPWwoZS5pdGVtcy5jaGlsZHJlbik7dHJ5e2ZvcihvLnMoKTshKHI9by5uKCkpLmRvbmU7KXt2YXIgYz1yLnZhbHVlO2Vbbi4kcmVtb3ZlQ2hpbGRdKGMpfX1jYXRjaChlKXtvLmUoZSl9ZmluYWxseXtvLmYoKX1lLml0ZW1zLmNsZWFyKCk7dmFyIGY9bmV3IGEuSXRlbXMoe30pLGg9bmV3IGEuSXRlbXMoe30pO2Vbbi4kYXBwZW5kQ2hpbGRdKGYpLGUuaXRlbXMucHVzaChmKSxlW24uJGFwcGVuZENoaWxkXShoKSxlLml0ZW1zLnB1c2goaCk7dmFyIGQscD1sKGUuYmluZEl0ZW1zLmNoaWxkcmVuKTt0cnl7Zm9yKHAucygpOyEoZD1wLm4oKSkuZG9uZTspe3ZhciB2PWQudmFsdWUseT12LnJlZixtPXYubGFiZWxSZWYsYj12LnZhbHVlUmVmO2lmKCF2LmNvbm5lY3Rpb24mJnkpe3ZhciB3PSgwLGkuc2VhcmNoTm9kZSkodGhpcy5yb290LHQseSwhMSwhMSk7aWYodyl7dmFyIGssUz1sKHcpO3RyeXtmb3IoUy5zKCk7IShrPVMubigpKS5kb25lOyl7dmFyIHg9ay52YWx1ZTtpZih4W24uJGlzRGVzY2VuZGVudF0odGhpcy5kYXRhc2V0cykpe3ZhciBPPSgwLGkuc2VhcmNoTm9kZSkodGhpcy5yb290LHgsbSwhMCwhMSk7aWYoTyl7dmFyIEE9dShPLDEpWzBdO2lmKEFbbi4kaXNEZXNjZW5kZW50XSh0aGlzLmRhdGFzZXRzKSl7dmFyIEM9KDAsaS5zZWFyY2hOb2RlKSh0aGlzLnJvb3QseCxiLCEwLCExKTtpZihDKXt2YXIgRj11KEMsMSlbMF07aWYoRltuLiRpc0Rlc2NlbmRlbnRdKHRoaXMuZGF0YXNldHMpKXt2YXIgUD1nKEFbbi4kdGV4dF0oKSksVD1nKEZbbi4kdGV4dF0oKSk7ZltuLiRhcHBlbmRDaGlsZF0oUCksZi50ZXh0LnB1c2goUCksaFtuLiRhcHBlbmRDaGlsZF0oVCksaC50ZXh0LnB1c2goVCl9ZWxzZSgwLHMud2FybikoIlhGQSAtIEludmFsaWQgdmFsdWU6IG11c3QgYmUgYSBkYXRhc2V0cyBjaGlsZC4iKX1lbHNlKDAscy53YXJuKSgiWEZBIC0gSW52YWxpZCB2YWx1ZTogIi5jb25jYXQoYiwiLiIpKX1lbHNlKDAscy53YXJuKSgiWEZBIC0gSW52YWxpZCBsYWJlbDogbXVzdCBiZSBhIGRhdGFzZXRzIGNoaWxkLiIpfWVsc2UoMCxzLndhcm4pKCJYRkEgLSBJbnZhbGlkIGxhYmVsOiAiLmNvbmNhdChtLCIuIikpfWVsc2UoMCxzLndhcm4pKCJYRkEgLSBJbnZhbGlkIHJlZiAoIi5jb25jYXQoeSwiKTogbXVzdCBiZSBhIGRhdGFzZXRzIGNoaWxkLiIpKX19Y2F0Y2goZSl7Uy5lKGUpfWZpbmFsbHl7Uy5mKCl9fWVsc2UoMCxzLndhcm4pKCJYRkEgLSBJbnZhbGlkIHJlZmVyZW5jZTogIi5jb25jYXQoeSwiLiIpKX19fWNhdGNoKGUpe3AuZShlKX1maW5hbGx5e3AuZigpfX19fSx7a2V5OiJfYmluZE9jY3VycmVuY2VzIix2YWx1ZTpmdW5jdGlvbihlLHQscil7dmFyIGE7aWYodC5sZW5ndGg+MSYmKChhPWVbbi4kY2xvbmVdKCkpW24uJHJlbW92ZUNoaWxkXShhLm9jY3VyKSxhLm9jY3VyPW51bGwpLHRoaXMuX2JpbmRWYWx1ZShlLHRbMF0sciksdGhpcy5fc2V0UHJvcGVydGllcyhlLHRbMF0pLHRoaXMuX2JpbmRJdGVtcyhlLHRbMF0pLDEhPT10Lmxlbmd0aClmb3IodmFyIGk9ZVtuLiRnZXRQYXJlbnRdKCksbz1lW24uJG5vZGVOYW1lXSxzPWlbbi4kaW5kZXhPZl0oZSksYz0xLHU9dC5sZW5ndGg7Yzx1O2MrKyl7dmFyIGw9dFtjXSxmPWFbbi4kY2xvbmVdKCk7aVtvXS5wdXNoKGYpLGlbbi4kaW5zZXJ0QXRdKHMrYyxmKSx0aGlzLl9iaW5kVmFsdWUoZixsLHIpLHRoaXMuX3NldFByb3BlcnRpZXMoZixsKSx0aGlzLl9iaW5kSXRlbXMoZixsKX19fSx7a2V5OiJfY3JlYXRlT2NjdXJyZW5jZXMiLHZhbHVlOmZ1bmN0aW9uKGUpe2lmKHRoaXMuZW1wdHlNZXJnZSl7dmFyIHQ9ZS5vY2N1cjtpZih0JiYhKHQuaW5pdGlhbDw9MSkpe3ZhciByPWVbbi4kZ2V0UGFyZW50XSgpLGE9ZVtuLiRub2RlTmFtZV07aWYoclthXWluc3RhbmNlb2Ygbi5YRkFPYmplY3RBcnJheSl7dmFyIGk7aT1lLm5hbWU/clthXS5jaGlsZHJlbi5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lm5hbWU9PT1lLm5hbWV9KSkubGVuZ3RoOnJbYV0uY2hpbGRyZW4ubGVuZ3RoO3ZhciBvPXJbbi4kaW5kZXhPZl0oZSkrMSxzPXQuaW5pdGlhbC1pO2lmKHMpe3ZhciBjPWVbbi4kY2xvbmVdKCk7Y1tuLiRyZW1vdmVDaGlsZF0oYy5vY2N1ciksYy5vY2N1cj1udWxsLHJbYV0ucHVzaChjKSxyW24uJGluc2VydEF0XShvLGMpO2Zvcih2YXIgdT0xO3U8czt1Kyspe3ZhciBsPWNbbi4kY2xvbmVdKCk7clthXS5wdXNoKGwpLHJbbi4kaW5zZXJ0QXRdKG8rdSxsKX19fX19fX0se2tleToiX2dldE9jY3VySW5mbyIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5uYW1lLHI9ZS5vY2N1cjtpZighcnx8IXQpcmV0dXJuWzEsMV07dmFyIG49LTE9PT1yLm1heD8xLzA6ci5tYXg7cmV0dXJuW3IubWluLG5dfX0se2tleToiX3NldEFuZEJpbmQiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dGhpcy5fc2V0UHJvcGVydGllcyhlLHQpLHRoaXMuX2JpbmRJdGVtcyhlLHQpLHRoaXMuX2JpbmRFbGVtZW50KGUsdCl9fSx7a2V5OiJfYmluZEVsZW1lbnQiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIHI9W107dGhpcy5fY3JlYXRlT2NjdXJyZW5jZXMoZSk7dmFyIGEsbz1sKGVbbi4kZ2V0Q2hpbGRyZW5dKCkpO3RyeXtmb3Ioby5zKCk7IShhPW8ubigpKS5kb25lOyl7dmFyIGM9YS52YWx1ZTtpZighY1tuLiRkYXRhXSlpZih2b2lkIDAhPT10aGlzLl9tZXJnZU1vZGV8fCJzdWJmb3JtIiE9PWNbbi4kbm9kZU5hbWVdKXtpZihjW24uJGlzQmluZGFibGVdKCkpe3ZhciBmPSExLGg9bnVsbCxkPW51bGwsZz1udWxsO2lmKGMuYmluZCl7c3dpdGNoKGMuYmluZC5tYXRjaCl7Y2FzZSJub25lIjp0aGlzLl9zZXRBbmRCaW5kKGMsdCk7Y29udGludWU7Y2FzZSJnbG9iYWwiOmY9ITA7YnJlYWs7Y2FzZSJkYXRhUmVmIjppZighYy5iaW5kLnJlZil7KDAscy53YXJuKSgiWEZBIC0gcmVmIGlzIGVtcHR5IGluIG5vZGUgIi5jb25jYXQoY1tuLiRub2RlTmFtZV0sIi4iKSksdGhpcy5fc2V0QW5kQmluZChjLHQpO2NvbnRpbnVlfWQ9Yy5iaW5kLnJlZn1jLmJpbmQucGljdHVyZSYmKGg9Yy5iaW5kLnBpY3R1cmVbbi4kY29udGVudF0pfXZhciB2PXUodGhpcy5fZ2V0T2NjdXJJbmZvKGMpLDIpLHk9dlswXSxtPXZbMV07aWYoZCl7aWYobnVsbD09PShnPSgwLGkuc2VhcmNoTm9kZSkodGhpcy5yb290LHQsZCwhMCwhMSkpKXtpZighKGc9KDAsaS5jcmVhdGVEYXRhTm9kZSkodGhpcy5kYXRhLHQsZCkpKWNvbnRpbnVlO3RoaXMuX2lzQ29uc3VtZURhdGEoKSYmKGdbbi4kY29uc3VtZWRdPSEwKSx0aGlzLl9zZXRBbmRCaW5kKGMsZyk7Y29udGludWV9dGhpcy5faXNDb25zdW1lRGF0YSgpJiYoZz1nLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIWVbbi4kY29uc3VtZWRdfSkpKSxnLmxlbmd0aD5tP2c9Zy5zbGljZSgwLG0pOjA9PT1nLmxlbmd0aCYmKGc9bnVsbCksZyYmdGhpcy5faXNDb25zdW1lRGF0YSgpJiZnLmZvckVhY2goKGZ1bmN0aW9uKGUpe2Vbbi4kY29uc3VtZWRdPSEwfSkpfWVsc2V7aWYoIWMubmFtZSl7dGhpcy5fc2V0QW5kQmluZChjLHQpO2NvbnRpbnVlfWlmKHRoaXMuX2lzQ29uc3VtZURhdGEoKSl7Zm9yKHZhciBiPVtdO2IubGVuZ3RoPG07KXt2YXIgdz10aGlzLl9maW5kRGF0YUJ5TmFtZVRvQ29uc3VtZShjLm5hbWUsY1tuLiRoYXNTZXR0YWJsZVZhbHVlXSgpLHQsZik7aWYoIXcpYnJlYWs7d1tuLiRjb25zdW1lZF09ITAsYi5wdXNoKHcpfWc9Yi5sZW5ndGg+MD9iOm51bGx9ZWxzZXtpZighKGc9dFtuLiRnZXRSZWFsQ2hpbGRyZW5CeU5hbWVJdF0oYy5uYW1lLCExLHRoaXMuZW1wdHlNZXJnZSkubmV4dCgpLnZhbHVlKSl7aWYoMD09PXkpe3IucHVzaChjKTtjb250aW51ZX12YXIgaz10W24uJG5hbWVzcGFjZUlkXT09PXA/LTE6dFtuLiRuYW1lc3BhY2VJZF07Zz1jW24uJGRhdGFdPW5ldyBuLlhtbE9iamVjdChrLGMubmFtZSksdGhpcy5lbXB0eU1lcmdlJiYoZ1tuLiRjb25zdW1lZF09ITApLHRbbi4kYXBwZW5kQ2hpbGRdKGcpLHRoaXMuX3NldEFuZEJpbmQoYyxnKTtjb250aW51ZX10aGlzLmVtcHR5TWVyZ2UmJihnW24uJGNvbnN1bWVkXT0hMCksZz1bZ119fWc/dGhpcy5fYmluZE9jY3VycmVuY2VzKGMsZyxoKTp5PjA/dGhpcy5fc2V0QW5kQmluZChjLHQpOnIucHVzaChjKX19ZWxzZXt0aGlzLl9tZXJnZU1vZGU9ImNvbnN1bWVEYXRhIj09PWMubWVyZ2VNb2RlO3ZhciBTPXRbbi4kZ2V0Q2hpbGRyZW5dKCk7aWYoUy5sZW5ndGg+MCl0aGlzLl9iaW5kT2NjdXJyZW5jZXMoYyxbU1swXV0sbnVsbCk7ZWxzZSBpZih0aGlzLmVtcHR5TWVyZ2Upe3ZhciB4PXRbbi4kbmFtZXNwYWNlSWRdPT09cD8tMTp0W24uJG5hbWVzcGFjZUlkXSxPPWNbbi4kZGF0YV09bmV3IG4uWG1sT2JqZWN0KHgsYy5uYW1lfHwicm9vdCIpO3Rbbi4kYXBwZW5kQ2hpbGRdKE8pLHRoaXMuX2JpbmRFbGVtZW50KGMsTyl9fX19Y2F0Y2goZSl7by5lKGUpfWZpbmFsbHl7by5mKCl9ci5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gZVtuLiRnZXRQYXJlbnRdKClbbi4kcmVtb3ZlQ2hpbGRdKGUpfSkpfX1dKSYmZCh0LnByb3RvdHlwZSxyKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxlfSgpO3QuQmluZGVyPXZ9LChlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5WYWx1ZT10LlRleHQ9dC5UZW1wbGF0ZU5hbWVzcGFjZT10LlRlbXBsYXRlPXQuU2V0UHJvcGVydHk9dC5JdGVtcz10LkZpZWxkPXQuQmluZEl0ZW1zPXZvaWQgMDt2YXIgbj1yKDIwNiksYT1yKDIwOCksaT1yKDIxMiksbz1yKDIxMykscz1yKDIwNyksYz1yKDIpLHU9cigyMTQpLGw9cigxMzUpLGY9cigyMDkpO2Z1bmN0aW9uIGgoZSl7cmV0dXJuIGg9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGV9LGgoZSl9ZnVuY3Rpb24gZCgpe3JldHVybiBkPSJ1bmRlZmluZWQiIT10eXBlb2YgUmVmbGVjdCYmUmVmbGVjdC5nZXQ/UmVmbGVjdC5nZXQuYmluZCgpOmZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1mdW5jdGlvbihlLHQpe2Zvcig7IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHQpJiZudWxsIT09KGU9ayhlKSk7KTtyZXR1cm4gZX0oZSx0KTtpZihuKXt2YXIgYT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCk7cmV0dXJuIGEuZ2V0P2EuZ2V0LmNhbGwoYXJndW1lbnRzLmxlbmd0aDwzP2U6cik6YS52YWx1ZX19LGQuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIHAoZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIHI9bnVsbD09ZT9udWxsOiJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbIkBAaXRlcmF0b3IiXTtpZihudWxsIT1yKXt2YXIgbixhLGksbyxzPVtdLGM9ITAsdT0hMTt0cnl7aWYoaT0ocj1yLmNhbGwoZSkpLm5leHQsMD09PXQpe2lmKE9iamVjdChyKSE9PXIpcmV0dXJuO2M9ITF9ZWxzZSBmb3IoOyEoYz0obj1pLmNhbGwocikpLmRvbmUpJiYocy5wdXNoKG4udmFsdWUpLHMubGVuZ3RoIT09dCk7Yz0hMCk7fWNhdGNoKGUpe3U9ITAsYT1lfWZpbmFsbHl7dHJ5e2lmKCFjJiZudWxsIT1yLnJldHVybiYmKG89ci5yZXR1cm4oKSxPYmplY3QobykhPT1vKSlyZXR1cm59ZmluYWxseXtpZih1KXRocm93IGF9fXJldHVybiBzfX0oZSx0KXx8QShlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gZyhlLHQpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgbj10W3JdO24uZW51bWVyYWJsZT1uLmVudW1lcmFibGV8fCExLG4uY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBuJiYobi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsKHZvaWQgMCxhPWZ1bmN0aW9uKGUsdCl7aWYoIm9iamVjdCIhPT1oKGUpfHxudWxsPT09ZSlyZXR1cm4gZTt2YXIgcj1lW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09cil7dmFyIG49ci5jYWxsKGUsInN0cmluZyIpO2lmKCJvYmplY3QiIT09aChuKSlyZXR1cm4gbjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybiBTdHJpbmcoZSl9KG4ua2V5KSwic3ltYm9sIj09PWgoYSk/YTpTdHJpbmcoYSkpLG4pfXZhciBhfWZ1bmN0aW9uIHYoZSx0LHIpe3JldHVybiB0JiZnKGUucHJvdG90eXBlLHQpLHImJmcoZSxyKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxlfWZ1bmN0aW9uIHkoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBtKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLHQmJmIoZSx0KX1mdW5jdGlvbiBiKGUsdCl7cmV0dXJuIGI9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5fX3Byb3RvX189dCxlfSxiKGUsdCl9ZnVuY3Rpb24gdyhlKXt2YXIgdD1mdW5jdGlvbigpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0KXJldHVybiExO2lmKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sKGZ1bmN0aW9uKCl7fSkpKSwhMH1jYXRjaChlKXtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHIsbj1rKGUpO2lmKHQpe3ZhciBhPWsodGhpcykuY29uc3RydWN0b3I7cj1SZWZsZWN0LmNvbnN0cnVjdChuLGFyZ3VtZW50cyxhKX1lbHNlIHI9bi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYodCYmKCJvYmplY3QiPT09aCh0KXx8ImZ1bmN0aW9uIj09dHlwZW9mIHQpKXJldHVybiB0O2lmKHZvaWQgMCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24oZSl7aWYodm9pZCAwPT09ZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBlfShlKX0odGhpcyxyKX19ZnVuY3Rpb24gayhlKXtyZXR1cm4gaz1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihlKXtyZXR1cm4gZS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihlKX0sayhlKX1mdW5jdGlvbiBTKCl7Uz1mdW5jdGlvbigpe3JldHVybiBlfTt2YXIgZT17fSx0PU9iamVjdC5wcm90b3R5cGUscj10Lmhhc093blByb3BlcnR5LG49T2JqZWN0LmRlZmluZVByb3BlcnR5fHxmdW5jdGlvbihlLHQscil7ZVt0XT1yLnZhbHVlfSxhPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2w/U3ltYm9sOnt9LGk9YS5pdGVyYXRvcnx8IkBAaXRlcmF0b3IiLG89YS5hc3luY0l0ZXJhdG9yfHwiQEBhc3luY0l0ZXJhdG9yIixzPWEudG9TdHJpbmdUYWd8fCJAQHRvU3RyaW5nVGFnIjtmdW5jdGlvbiBjKGUsdCxyKXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6cixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pLGVbdF19dHJ5e2Moe30sIiIpfWNhdGNoKGUpe2M9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlW3RdPXJ9fWZ1bmN0aW9uIHUoZSx0LHIsYSl7dmFyIGk9dCYmdC5wcm90b3R5cGUgaW5zdGFuY2VvZiBkP3Q6ZCxvPU9iamVjdC5jcmVhdGUoaS5wcm90b3R5cGUpLHM9bmV3IEYoYXx8W10pO3JldHVybiBuKG8sIl9pbnZva2UiLHt2YWx1ZTp4KGUscixzKX0pLG99ZnVuY3Rpb24gbChlLHQscil7dHJ5e3JldHVybnt0eXBlOiJub3JtYWwiLGFyZzplLmNhbGwodCxyKX19Y2F0Y2goZSl7cmV0dXJue3R5cGU6InRocm93Iixhcmc6ZX19fWUud3JhcD11O3ZhciBmPXt9O2Z1bmN0aW9uIGQoKXt9ZnVuY3Rpb24gcCgpe31mdW5jdGlvbiBnKCl7fXZhciB2PXt9O2ModixpLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpO3ZhciB5PU9iamVjdC5nZXRQcm90b3R5cGVPZixtPXkmJnkoeShQKFtdKSkpO20mJm0hPT10JiZyLmNhbGwobSxpKSYmKHY9bSk7dmFyIGI9Zy5wcm90b3R5cGU9ZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh2KTtmdW5jdGlvbiB3KGUpe1sibmV4dCIsInRocm93IiwicmV0dXJuIl0uZm9yRWFjaCgoZnVuY3Rpb24odCl7YyhlLHQsKGZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9pbnZva2UodCxlKX0pKX0pKX1mdW5jdGlvbiBrKGUsdCl7ZnVuY3Rpb24gYShuLGksbyxzKXt2YXIgYz1sKGVbbl0sZSxpKTtpZigidGhyb3ciIT09Yy50eXBlKXt2YXIgdT1jLmFyZyxmPXUudmFsdWU7cmV0dXJuIGYmJiJvYmplY3QiPT1oKGYpJiZyLmNhbGwoZiwiX19hd2FpdCIpP3QucmVzb2x2ZShmLl9fYXdhaXQpLnRoZW4oKGZ1bmN0aW9uKGUpe2EoIm5leHQiLGUsbyxzKX0pLChmdW5jdGlvbihlKXthKCJ0aHJvdyIsZSxvLHMpfSkpOnQucmVzb2x2ZShmKS50aGVuKChmdW5jdGlvbihlKXt1LnZhbHVlPWUsbyh1KX0pLChmdW5jdGlvbihlKXtyZXR1cm4gYSgidGhyb3ciLGUsbyxzKX0pKX1zKGMuYXJnKX12YXIgaTtuKHRoaXMsIl9pbnZva2UiLHt2YWx1ZTpmdW5jdGlvbihlLHIpe2Z1bmN0aW9uIG4oKXtyZXR1cm4gbmV3IHQoKGZ1bmN0aW9uKHQsbil7YShlLHIsdCxuKX0pKX1yZXR1cm4gaT1pP2kudGhlbihuLG4pOm4oKX19KX1mdW5jdGlvbiB4KGUsdCxyKXt2YXIgbj0ic3VzcGVuZGVkU3RhcnQiO3JldHVybiBmdW5jdGlvbihhLGkpe2lmKCJleGVjdXRpbmciPT09bil0aHJvdyBuZXcgRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmciKTtpZigiY29tcGxldGVkIj09PW4pe2lmKCJ0aHJvdyI9PT1hKXRocm93IGk7cmV0dXJue3ZhbHVlOnZvaWQgMCxkb25lOiEwfX1mb3Ioci5tZXRob2Q9YSxyLmFyZz1pOzspe3ZhciBvPXIuZGVsZWdhdGU7aWYobyl7dmFyIHM9TyhvLHIpO2lmKHMpe2lmKHM9PT1mKWNvbnRpbnVlO3JldHVybiBzfX1pZigibmV4dCI9PT1yLm1ldGhvZClyLnNlbnQ9ci5fc2VudD1yLmFyZztlbHNlIGlmKCJ0aHJvdyI9PT1yLm1ldGhvZCl7aWYoInN1c3BlbmRlZFN0YXJ0Ij09PW4pdGhyb3cgbj0iY29tcGxldGVkIixyLmFyZztyLmRpc3BhdGNoRXhjZXB0aW9uKHIuYXJnKX1lbHNlInJldHVybiI9PT1yLm1ldGhvZCYmci5hYnJ1cHQoInJldHVybiIsci5hcmcpO249ImV4ZWN1dGluZyI7dmFyIGM9bChlLHQscik7aWYoIm5vcm1hbCI9PT1jLnR5cGUpe2lmKG49ci5kb25lPyJjb21wbGV0ZWQiOiJzdXNwZW5kZWRZaWVsZCIsYy5hcmc9PT1mKWNvbnRpbnVlO3JldHVybnt2YWx1ZTpjLmFyZyxkb25lOnIuZG9uZX19InRocm93Ij09PWMudHlwZSYmKG49ImNvbXBsZXRlZCIsci5tZXRob2Q9InRocm93IixyLmFyZz1jLmFyZyl9fX1mdW5jdGlvbiBPKGUsdCl7dmFyIHI9dC5tZXRob2Qsbj1lLml0ZXJhdG9yW3JdO2lmKHZvaWQgMD09PW4pcmV0dXJuIHQuZGVsZWdhdGU9bnVsbCwidGhyb3ciPT09ciYmZS5pdGVyYXRvci5yZXR1cm4mJih0Lm1ldGhvZD0icmV0dXJuIix0LmFyZz12b2lkIDAsTyhlLHQpLCJ0aHJvdyI9PT10Lm1ldGhvZCl8fCJyZXR1cm4iIT09ciYmKHQubWV0aG9kPSJ0aHJvdyIsdC5hcmc9bmV3IFR5cGVFcnJvcigiVGhlIGl0ZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgYSAnIityKyInIG1ldGhvZCIpKSxmO3ZhciBhPWwobixlLml0ZXJhdG9yLHQuYXJnKTtpZigidGhyb3ciPT09YS50eXBlKXJldHVybiB0Lm1ldGhvZD0idGhyb3ciLHQuYXJnPWEuYXJnLHQuZGVsZWdhdGU9bnVsbCxmO3ZhciBpPWEuYXJnO3JldHVybiBpP2kuZG9uZT8odFtlLnJlc3VsdE5hbWVdPWkudmFsdWUsdC5uZXh0PWUubmV4dExvYywicmV0dXJuIiE9PXQubWV0aG9kJiYodC5tZXRob2Q9Im5leHQiLHQuYXJnPXZvaWQgMCksdC5kZWxlZ2F0ZT1udWxsLGYpOmk6KHQubWV0aG9kPSJ0aHJvdyIsdC5hcmc9bmV3IFR5cGVFcnJvcigiaXRlcmF0b3IgcmVzdWx0IGlzIG5vdCBhbiBvYmplY3QiKSx0LmRlbGVnYXRlPW51bGwsZil9ZnVuY3Rpb24gQShlKXt2YXIgdD17dHJ5TG9jOmVbMF19OzEgaW4gZSYmKHQuY2F0Y2hMb2M9ZVsxXSksMiBpbiBlJiYodC5maW5hbGx5TG9jPWVbMl0sdC5hZnRlckxvYz1lWzNdKSx0aGlzLnRyeUVudHJpZXMucHVzaCh0KX1mdW5jdGlvbiBDKGUpe3ZhciB0PWUuY29tcGxldGlvbnx8e307dC50eXBlPSJub3JtYWwiLGRlbGV0ZSB0LmFyZyxlLmNvbXBsZXRpb249dH1mdW5jdGlvbiBGKGUpe3RoaXMudHJ5RW50cmllcz1be3RyeUxvYzoicm9vdCJ9XSxlLmZvckVhY2goQSx0aGlzKSx0aGlzLnJlc2V0KCEwKX1mdW5jdGlvbiBQKGUpe2lmKGUpe3ZhciB0PWVbaV07aWYodClyZXR1cm4gdC5jYWxsKGUpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBlLm5leHQpcmV0dXJuIGU7aWYoIWlzTmFOKGUubGVuZ3RoKSl7dmFyIG49LTEsYT1mdW5jdGlvbiB0KCl7Zm9yKDsrK248ZS5sZW5ndGg7KWlmKHIuY2FsbChlLG4pKXJldHVybiB0LnZhbHVlPWVbbl0sdC5kb25lPSExLHQ7cmV0dXJuIHQudmFsdWU9dm9pZCAwLHQuZG9uZT0hMCx0fTtyZXR1cm4gYS5uZXh0PWF9fXJldHVybntuZXh0OlR9fWZ1bmN0aW9uIFQoKXtyZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9fXJldHVybiBwLnByb3RvdHlwZT1nLG4oYiwiY29uc3RydWN0b3IiLHt2YWx1ZTpnLGNvbmZpZ3VyYWJsZTohMH0pLG4oZywiY29uc3RydWN0b3IiLHt2YWx1ZTpwLGNvbmZpZ3VyYWJsZTohMH0pLHAuZGlzcGxheU5hbWU9YyhnLHMsIkdlbmVyYXRvckZ1bmN0aW9uIiksZS5pc0dlbmVyYXRvckZ1bmN0aW9uPWZ1bmN0aW9uKGUpe3ZhciB0PSJmdW5jdGlvbiI9PXR5cGVvZiBlJiZlLmNvbnN0cnVjdG9yO3JldHVybiEhdCYmKHQ9PT1wfHwiR2VuZXJhdG9yRnVuY3Rpb24iPT09KHQuZGlzcGxheU5hbWV8fHQubmFtZSkpfSxlLm1hcms9ZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YoZSxnKTooZS5fX3Byb3RvX189ZyxjKGUscywiR2VuZXJhdG9yRnVuY3Rpb24iKSksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShiKSxlfSxlLmF3cmFwPWZ1bmN0aW9uKGUpe3JldHVybntfX2F3YWl0OmV9fSx3KGsucHJvdG90eXBlKSxjKGsucHJvdG90eXBlLG8sKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSksZS5Bc3luY0l0ZXJhdG9yPWssZS5hc3luYz1mdW5jdGlvbih0LHIsbixhLGkpe3ZvaWQgMD09PWkmJihpPVByb21pc2UpO3ZhciBvPW5ldyBrKHUodCxyLG4sYSksaSk7cmV0dXJuIGUuaXNHZW5lcmF0b3JGdW5jdGlvbihyKT9vOm8ubmV4dCgpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBlLmRvbmU/ZS52YWx1ZTpvLm5leHQoKX0pKX0sdyhiKSxjKGIscywiR2VuZXJhdG9yIiksYyhiLGksKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSksYyhiLCJ0b1N0cmluZyIsKGZ1bmN0aW9uKCl7cmV0dXJuIltvYmplY3QgR2VuZXJhdG9yXSJ9KSksZS5rZXlzPWZ1bmN0aW9uKGUpe3ZhciB0PU9iamVjdChlKSxyPVtdO2Zvcih2YXIgbiBpbiB0KXIucHVzaChuKTtyZXR1cm4gci5yZXZlcnNlKCksZnVuY3Rpb24gZSgpe2Zvcig7ci5sZW5ndGg7KXt2YXIgbj1yLnBvcCgpO2lmKG4gaW4gdClyZXR1cm4gZS52YWx1ZT1uLGUuZG9uZT0hMSxlfXJldHVybiBlLmRvbmU9ITAsZX19LGUudmFsdWVzPVAsRi5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOkYscmVzZXQ6ZnVuY3Rpb24oZSl7aWYodGhpcy5wcmV2PTAsdGhpcy5uZXh0PTAsdGhpcy5zZW50PXRoaXMuX3NlbnQ9dm9pZCAwLHRoaXMuZG9uZT0hMSx0aGlzLmRlbGVnYXRlPW51bGwsdGhpcy5tZXRob2Q9Im5leHQiLHRoaXMuYXJnPXZvaWQgMCx0aGlzLnRyeUVudHJpZXMuZm9yRWFjaChDKSwhZSlmb3IodmFyIHQgaW4gdGhpcykidCI9PT10LmNoYXJBdCgwKSYmci5jYWxsKHRoaXMsdCkmJiFpc05hTigrdC5zbGljZSgxKSkmJih0aGlzW3RdPXZvaWQgMCl9LHN0b3A6ZnVuY3Rpb24oKXt0aGlzLmRvbmU9ITA7dmFyIGU9dGhpcy50cnlFbnRyaWVzWzBdLmNvbXBsZXRpb247aWYoInRocm93Ij09PWUudHlwZSl0aHJvdyBlLmFyZztyZXR1cm4gdGhpcy5ydmFsfSxkaXNwYXRjaEV4Y2VwdGlvbjpmdW5jdGlvbihlKXtpZih0aGlzLmRvbmUpdGhyb3cgZTt2YXIgdD10aGlzO2Z1bmN0aW9uIG4ocixuKXtyZXR1cm4gby50eXBlPSJ0aHJvdyIsby5hcmc9ZSx0Lm5leHQ9cixuJiYodC5tZXRob2Q9Im5leHQiLHQuYXJnPXZvaWQgMCksISFufWZvcih2YXIgYT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7YT49MDstLWEpe3ZhciBpPXRoaXMudHJ5RW50cmllc1thXSxvPWkuY29tcGxldGlvbjtpZigicm9vdCI9PT1pLnRyeUxvYylyZXR1cm4gbigiZW5kIik7aWYoaS50cnlMb2M8PXRoaXMucHJldil7dmFyIHM9ci5jYWxsKGksImNhdGNoTG9jIiksYz1yLmNhbGwoaSwiZmluYWxseUxvYyIpO2lmKHMmJmMpe2lmKHRoaXMucHJldjxpLmNhdGNoTG9jKXJldHVybiBuKGkuY2F0Y2hMb2MsITApO2lmKHRoaXMucHJldjxpLmZpbmFsbHlMb2MpcmV0dXJuIG4oaS5maW5hbGx5TG9jKX1lbHNlIGlmKHMpe2lmKHRoaXMucHJldjxpLmNhdGNoTG9jKXJldHVybiBuKGkuY2F0Y2hMb2MsITApfWVsc2V7aWYoIWMpdGhyb3cgbmV3IEVycm9yKCJ0cnkgc3RhdGVtZW50IHdpdGhvdXQgY2F0Y2ggb3IgZmluYWxseSIpO2lmKHRoaXMucHJldjxpLmZpbmFsbHlMb2MpcmV0dXJuIG4oaS5maW5hbGx5TG9jKX19fX0sYWJydXB0OmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtuPj0wOy0tbil7dmFyIGE9dGhpcy50cnlFbnRyaWVzW25dO2lmKGEudHJ5TG9jPD10aGlzLnByZXYmJnIuY2FsbChhLCJmaW5hbGx5TG9jIikmJnRoaXMucHJldjxhLmZpbmFsbHlMb2Mpe3ZhciBpPWE7YnJlYWt9fWkmJigiYnJlYWsiPT09ZXx8ImNvbnRpbnVlIj09PWUpJiZpLnRyeUxvYzw9dCYmdDw9aS5maW5hbGx5TG9jJiYoaT1udWxsKTt2YXIgbz1pP2kuY29tcGxldGlvbjp7fTtyZXR1cm4gby50eXBlPWUsby5hcmc9dCxpPyh0aGlzLm1ldGhvZD0ibmV4dCIsdGhpcy5uZXh0PWkuZmluYWxseUxvYyxmKTp0aGlzLmNvbXBsZXRlKG8pfSxjb21wbGV0ZTpmdW5jdGlvbihlLHQpe2lmKCJ0aHJvdyI9PT1lLnR5cGUpdGhyb3cgZS5hcmc7cmV0dXJuImJyZWFrIj09PWUudHlwZXx8ImNvbnRpbnVlIj09PWUudHlwZT90aGlzLm5leHQ9ZS5hcmc6InJldHVybiI9PT1lLnR5cGU/KHRoaXMucnZhbD10aGlzLmFyZz1lLmFyZyx0aGlzLm1ldGhvZD0icmV0dXJuIix0aGlzLm5leHQ9ImVuZCIpOiJub3JtYWwiPT09ZS50eXBlJiZ0JiYodGhpcy5uZXh0PXQpLGZ9LGZpbmlzaDpmdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO3Q+PTA7LS10KXt2YXIgcj10aGlzLnRyeUVudHJpZXNbdF07aWYoci5maW5hbGx5TG9jPT09ZSlyZXR1cm4gdGhpcy5jb21wbGV0ZShyLmNvbXBsZXRpb24sci5hZnRlckxvYyksQyhyKSxmfX0sY2F0Y2g6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTt0Pj0wOy0tdCl7dmFyIHI9dGhpcy50cnlFbnRyaWVzW3RdO2lmKHIudHJ5TG9jPT09ZSl7dmFyIG49ci5jb21wbGV0aW9uO2lmKCJ0aHJvdyI9PT1uLnR5cGUpe3ZhciBhPW4uYXJnO0Mocil9cmV0dXJuIGF9fXRocm93IG5ldyBFcnJvcigiaWxsZWdhbCBjYXRjaCBhdHRlbXB0Iil9LGRlbGVnYXRlWWllbGQ6ZnVuY3Rpb24oZSx0LHIpe3JldHVybiB0aGlzLmRlbGVnYXRlPXtpdGVyYXRvcjpQKGUpLHJlc3VsdE5hbWU6dCxuZXh0TG9jOnJ9LCJuZXh0Ij09PXRoaXMubWV0aG9kJiYodGhpcy5hcmc9dm9pZCAwKSxmfX0sZX12YXIgeD1TKCkubWFyayhMKTtmdW5jdGlvbiBPKGUsdCl7dmFyIHI9InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVsiQEBpdGVyYXRvciJdO2lmKCFyKXtpZihBcnJheS5pc0FycmF5KGUpfHwocj1BKGUpKXx8dCYmZSYmIm51bWJlciI9PXR5cGVvZiBlLmxlbmd0aCl7ciYmKGU9cik7dmFyIG49MCxhPWZ1bmN0aW9uKCl7fTtyZXR1cm57czphLG46ZnVuY3Rpb24oKXtyZXR1cm4gbj49ZS5sZW5ndGg/e2RvbmU6ITB9Ontkb25lOiExLHZhbHVlOmVbbisrXX19LGU6ZnVuY3Rpb24oZSl7dGhyb3cgZX0sZjphfX10aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gaXRlcmF0ZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9dmFyIGksbz0hMCxzPSExO3JldHVybntzOmZ1bmN0aW9uKCl7cj1yLmNhbGwoZSl9LG46ZnVuY3Rpb24oKXt2YXIgZT1yLm5leHQoKTtyZXR1cm4gbz1lLmRvbmUsZX0sZTpmdW5jdGlvbihlKXtzPSEwLGk9ZX0sZjpmdW5jdGlvbigpe3RyeXtvfHxudWxsPT1yLnJldHVybnx8ci5yZXR1cm4oKX1maW5hbGx5e2lmKHMpdGhyb3cgaX19fX1mdW5jdGlvbiBBKGUsdCl7aWYoZSl7aWYoInN0cmluZyI9PXR5cGVvZiBlKXJldHVybiBDKGUsdCk7dmFyIHI9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO3JldHVybiJPYmplY3QiPT09ciYmZS5jb25zdHJ1Y3RvciYmKHI9ZS5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PXJ8fCJTZXQiPT09cj9BcnJheS5mcm9tKGUpOiJBcmd1bWVudHMiPT09cnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3Qocik/QyhlLHQpOnZvaWQgMH19ZnVuY3Rpb24gQyhlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgcj0wLG49bmV3IEFycmF5KHQpO3I8dDtyKyspbltyXT1lW3JdO3JldHVybiBufXZhciBGPWEuTmFtZXNwYWNlSWRzLnRlbXBsYXRlLmlkLFA9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIixUPS9eSChcZCspJC8sST1uZXcgU2V0KFsiaW1hZ2UvZ2lmIiwiaW1hZ2UvanBlZyIsImltYWdlL2pwZyIsImltYWdlL3BqcGVnIiwiaW1hZ2UvcG5nIiwiaW1hZ2UvYXBuZyIsImltYWdlL3gtcG5nIiwiaW1hZ2UvYm1wIiwiaW1hZ2UveC1tcy1ibXAiLCJpbWFnZS90aWZmIiwiaW1hZ2UvdGlmIiwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIl0pLEU9W1tbNjYsNzddLCJpbWFnZS9ibXAiXSxbWzI1NSwyMTYsMjU1XSwiaW1hZ2UvanBlZyJdLFtbNzMsNzMsNDIsMF0sImltYWdlL3RpZmYiXSxbWzc3LDc3LDAsNDJdLCJpbWFnZS90aWZmIl0sW1s3MSw3Myw3MCw1Niw1Nyw5N10sImltYWdlL2dpZiJdLFtbMTM3LDgwLDc4LDcxLDEzLDEwLDI2LDEwXSwiaW1hZ2UvcG5nIl1dO2Z1bmN0aW9uIGooZSl7aWYoIWV8fCFlLmJvcmRlcilyZXR1cm57dzowLGg6MH07dmFyIHQ9ZS5ib3JkZXJbbi4kZ2V0RXh0cmFdKCk7cmV0dXJuIHQ/e3c6dC53aWR0aHNbMF0rdC53aWR0aHNbMl0rdC5pbnNldHNbMF0rdC5pbnNldHNbMl0saDp0LndpZHRoc1sxXSt0LndpZHRoc1szXSt0Lmluc2V0c1sxXSt0Lmluc2V0c1szXX06e3c6MCxoOjB9fWZ1bmN0aW9uIE0oZSl7cmV0dXJuIGUubWFyZ2luJiYoZS5tYXJnaW4udG9wSW5zZXR8fGUubWFyZ2luLnJpZ2h0SW5zZXR8fGUubWFyZ2luLmJvdHRvbUluc2V0fHxlLm1hcmdpbi5sZWZ0SW5zZXQpfWZ1bmN0aW9uIF8oZSx0KXtpZighZS52YWx1ZSl7dmFyIHI9bmV3IFZ0KHt9KTtlW24uJGFwcGVuZENoaWxkXShyKSxlLnZhbHVlPXJ9ZS52YWx1ZVtuLiRzZXRWYWx1ZV0odCl9ZnVuY3Rpb24gTChlKXt2YXIgdCxyLGE7cmV0dXJuIFMoKS53cmFwKChmdW5jdGlvbihpKXtmb3IoOzspc3dpdGNoKGkucHJldj1pLm5leHQpe2Nhc2UgMDp0PU8oZVtuLiRnZXRDaGlsZHJlbl0oKSksaS5wcmV2PTEsdC5zKCk7Y2FzZSAzOmlmKChyPXQubigpKS5kb25lKXtpLm5leHQ9MTI7YnJlYWt9aWYoISgoYT1yLnZhbHVlKWluc3RhbmNlb2YgX3QpKXtpLm5leHQ9ODticmVha31yZXR1cm4gaS5kZWxlZ2F0ZVlpZWxkKGFbbi4kZ2V0Q29udGFpbmVkQ2hpbGRyZW5dKCksInQwIiw3KTtjYXNlIDc6cmV0dXJuIGkuYWJydXB0KCJjb250aW51ZSIsMTApO2Nhc2UgODpyZXR1cm4gaS5uZXh0PTEwLGE7Y2FzZSAxMDppLm5leHQ9MzticmVhaztjYXNlIDEyOmkubmV4dD0xNzticmVhaztjYXNlIDE0OmkucHJldj0xNCxpLnQxPWkuY2F0Y2goMSksdC5lKGkudDEpO2Nhc2UgMTc6cmV0dXJuIGkucHJldj0xNyx0LmYoKSxpLmZpbmlzaCgxNyk7Y2FzZSAyMDpjYXNlImVuZCI6cmV0dXJuIGkuc3RvcCgpfX0pLHgsbnVsbCxbWzEsMTQsMTcsMjBdXSl9ZnVuY3Rpb24gUihlKXtyZXR1cm4gZS52YWxpZGF0ZSYmImVycm9yIj09PWUudmFsaWRhdGUubnVsbFRlc3R9ZnVuY3Rpb24gTihlKXtmb3IoO2U7KXtpZighZS50cmF2ZXJzYWwpcmV0dXJuIHZvaWQoZVtuLiR0YWJJbmRleF09ZVtuLiRnZXRQYXJlbnRdKClbbi4kdGFiSW5kZXhdKTtpZihlW24uJHRhYkluZGV4XSlyZXR1cm47dmFyIHQscj1udWxsLGE9TyhlLnRyYXZlcnNhbFtuLiRnZXRDaGlsZHJlbl0oKSk7dHJ5e2ZvcihhLnMoKTshKHQ9YS5uKCkpLmRvbmU7KXt2YXIgaT10LnZhbHVlO2lmKCJuZXh0Ij09PWkub3BlcmF0aW9uKXtyPWk7YnJlYWt9fX1jYXRjaChlKXthLmUoZSl9ZmluYWxseXthLmYoKX1pZighcnx8IXIucmVmKXJldHVybiB2b2lkKGVbbi4kdGFiSW5kZXhdPWVbbi4kZ2V0UGFyZW50XSgpW24uJHRhYkluZGV4XSk7dmFyIG89ZVtuLiRnZXRUZW1wbGF0ZVJvb3RdKCk7ZVtuLiR0YWJJbmRleF09KytvW24uJHRhYkluZGV4XTt2YXIgcz1vW24uJHNlYXJjaE5vZGVdKHIucmVmLGUpO2lmKCFzKXJldHVybjtlPXNbMF19fWZ1bmN0aW9uIEQoZSx0KXt2YXIgcj1lLmFzc2lzdDtpZihyKXt2YXIgYT1yW24uJHRvSFRNTF0oKTthJiYodC50aXRsZT1hKTt2YXIgaT1yLnJvbGUubWF0Y2goVCk7aWYoaSl7dmFyIG89aVsxXTt0LnJvbGU9ImhlYWRpbmciLHRbImFyaWEtbGV2ZWwiXT1vfX1pZigidGFibGUiPT09ZS5sYXlvdXQpdC5yb2xlPSJ0YWJsZSI7ZWxzZSBpZigicm93Ij09PWUubGF5b3V0KXQucm9sZT0icm93IjtlbHNle3ZhciBzPWVbbi4kZ2V0UGFyZW50XSgpOyJyb3ciPT09cy5sYXlvdXQmJihzLmFzc2lzdCYmIlRIIj09PXMuYXNzaXN0LnJvbGU/dC5yb2xlPSJjb2x1bW5oZWFkZXIiOnQucm9sZT0iY2VsbCIpfX1mdW5jdGlvbiBCKGUpe2lmKCFlLmFzc2lzdClyZXR1cm4gbnVsbDt2YXIgdD1lLmFzc2lzdDtyZXR1cm4gdC5zcGVhayYmIiIhPT10LnNwZWFrW24uJGNvbnRlbnRdP3Quc3BlYWtbbi4kY29udGVudF06dC50b29sVGlwP3QudG9vbFRpcFtuLiRjb250ZW50XTpudWxsfWZ1bmN0aW9uIFUoZSl7cmV0dXJuIHMuSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhUmljaCJdLHN0eWxlOk9iamVjdC5jcmVhdGUobnVsbCl9LGNoaWxkcmVuOlt7bmFtZToic3BhbiIsYXR0cmlidXRlczp7c3R5bGU6T2JqZWN0LmNyZWF0ZShudWxsKX0sdmFsdWU6ZX1dfSl9ZnVuY3Rpb24gJChlKXt2YXIgdD1lW24uJGdldFRlbXBsYXRlUm9vdF0oKTtudWxsPT09dFtuLiRleHRyYV0uZmlyc3RVbnNwbGl0dGFibGUmJih0W24uJGV4dHJhXS5maXJzdFVuc3BsaXR0YWJsZT1lLHRbbi4kZXh0cmFdLm5vTGF5b3V0RmFpbHVyZT0hMCl9ZnVuY3Rpb24gWChlKXt2YXIgdD1lW24uJGdldFRlbXBsYXRlUm9vdF0oKTt0W24uJGV4dHJhXS5maXJzdFVuc3BsaXR0YWJsZT09PWUmJih0W24uJGV4dHJhXS5ub0xheW91dEZhaWx1cmU9ITEpfWZ1bmN0aW9uIEgoZSl7aWYoZVtuLiRleHRyYV0pcmV0dXJuITE7aWYoZVtuLiRleHRyYV09T2JqZWN0LmNyZWF0ZShudWxsKSwiYXV0byI9PT1lLnRhcmdldFR5cGUpcmV0dXJuITE7dmFyIHQ9ZVtuLiRnZXRUZW1wbGF0ZVJvb3RdKCkscj1udWxsO2lmKGUudGFyZ2V0KXtpZighKHI9dFtuLiRzZWFyY2hOb2RlXShlLnRhcmdldCxlW24uJGdldFBhcmVudF0oKSkpKXJldHVybiExO3I9clswXX12YXIgYT10W24uJGV4dHJhXSxpPWEuY3VycmVudFBhZ2VBcmVhLG89YS5jdXJyZW50Q29udGVudEFyZWE7aWYoInBhZ2VBcmVhIj09PWUudGFyZ2V0VHlwZSlyZXR1cm4gciBpbnN0YW5jZW9mIGR0fHwocj1udWxsKSxlLnN0YXJ0TmV3PyhlW24uJGV4dHJhXS50YXJnZXQ9cnx8aSwhMCk6ISghcnx8cj09PWl8fChlW24uJGV4dHJhXS50YXJnZXQ9ciwwKSk7ciBpbnN0YW5jZW9mIHBlfHwocj1udWxsKTt2YXIgcyxjPXImJnJbbi4kZ2V0UGFyZW50XSgpLHU9YztpZihlLnN0YXJ0TmV3KWlmKHIpe3ZhciBsPWMuY29udGVudEFyZWEuY2hpbGRyZW4sZj1sLmluZGV4T2YobyksaD1sLmluZGV4T2Yocik7LTEhPT1mJiZmPGgmJih1PW51bGwpLHM9aC0xfWVsc2Ugcz1pLmNvbnRlbnRBcmVhLmNoaWxkcmVuLmluZGV4T2Yobyk7ZWxzZXtpZighcnx8cj09PW8pcmV0dXJuITE7cz1jLmNvbnRlbnRBcmVhLmNoaWxkcmVuLmluZGV4T2YociktMSx1PWM9PT1pP251bGw6Y31yZXR1cm4gZVtuLiRleHRyYV0udGFyZ2V0PXUsZVtuLiRleHRyYV0uaW5kZXg9cywhMH1mdW5jdGlvbiBxKGUsdCxyKXt2YXIgYT1lW24uJGdldFRlbXBsYXRlUm9vdF0oKSxpPWFbbi4kZXh0cmFdLm5vTGF5b3V0RmFpbHVyZSxvPXRbbi4kZ2V0U3ViZm9ybVBhcmVudF07dFtuLiRnZXRTdWJmb3JtUGFyZW50XT1mdW5jdGlvbigpe3JldHVybiBlfSxhW24uJGV4dHJhXS5ub0xheW91dEZhaWx1cmU9ITA7dmFyIHM9dFtuLiR0b0hUTUxdKHIpO2Vbbi4kYWRkSFRNTF0ocy5odG1sLHMuYmJveCksYVtuLiRleHRyYV0ubm9MYXlvdXRGYWlsdXJlPWksdFtuLiRnZXRTdWJmb3JtUGFyZW50XT1vfXZhciBHPWZ1bmN0aW9uKGUpe20ocixlKTt2YXIgdD13KHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG47cmV0dXJuIHkodGhpcyxyKSwobj10LmNhbGwodGhpcyxGLCJhcHBlYXJhbmNlRmlsdGVyIikpLmlkPWUuaWR8fCIiLG4udHlwZT0oMCxzLmdldFN0cmluZ09wdGlvbikoZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKSxuLnVzZT1lLnVzZXx8IiIsbi51c2VocmVmPWUudXNlaHJlZnx8IiIsbn1yZXR1cm4gdihyKX0obi5TdHJpbmdPYmplY3QpLHo9ZnVuY3Rpb24oZSl7bShyLGUpO3ZhciB0PXcocik7ZnVuY3Rpb24gcihlKXt2YXIgbjtyZXR1cm4geSh0aGlzLHIpLChuPXQuY2FsbCh0aGlzLEYsImFyYyIsITApKS5jaXJjdWxhcj0oMCxzLmdldEludGVnZXIpKHtkYXRhOmUuY2lyY3VsYXIsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuIDE9PT1lfX0pLG4uaGFuZD0oMCxzLmdldFN0cmluZ09wdGlvbikoZS5oYW5kLFsiZXZlbiIsImxlZnQiLCJyaWdodCJdKSxuLmlkPWUuaWR8fCIiLG4uc3RhcnRBbmdsZT0oMCxzLmdldEZsb2F0KSh7ZGF0YTplLnN0YXJ0QW5nbGUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuITB9fSksbi5zd2VlcEFuZ2xlPSgwLHMuZ2V0RmxvYXQpKHtkYXRhOmUuc3dlZXBBbmdsZSxkZWZhdWx0VmFsdWU6MzYwLHZhbGlkYXRlOmZ1bmN0aW9uKGUpe3JldHVybiEwfX0pLG4udXNlPWUudXNlfHwiIixuLnVzZWhyZWY9ZS51c2VocmVmfHwiIixuLmVkZ2U9bnVsbCxuLmZpbGw9bnVsbCxufXJldHVybiB2KHIsW3trZXk6bi4kdG9IVE1MLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGUsdD10aGlzLmVkZ2V8fG5ldyBBZSh7fSkscj10W24uJHRvU3R5bGVdKCksYT1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXMuZmlsbCYmInZpc2libGUiPT09dGhpcy5maWxsLnByZXNlbmNlP09iamVjdC5hc3NpZ24oYSx0aGlzLmZpbGxbbi4kdG9TdHlsZV0oKSk6YS5maWxsPSJ0cmFuc3BhcmVudCIsYS5zdHJva2VXaWR0aD0oMCxvLm1lYXN1cmVUb1N0cmluZykoInZpc2libGUiPT09dC5wcmVzZW5jZT90LnRoaWNrbmVzczowKSxhLnN0cm9rZT1yLmNvbG9yO3ZhciBpPXt4bWxuczpQLHN0eWxlOnt3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIixvdmVyZmxvdzoidmlzaWJsZSJ9fTtpZigzNjA9PT10aGlzLnN3ZWVwQW5nbGUpZT17bmFtZToiZWxsaXBzZSIsYXR0cmlidXRlczp7eG1sbnM6UCxjeDoiNTAlIixjeToiNTAlIixyeDoiNTAlIixyeToiNTAlIixzdHlsZTphfX07ZWxzZXt2YXIgYz10aGlzLnN0YXJ0QW5nbGUqTWF0aC5QSS8xODAsdT10aGlzLnN3ZWVwQW5nbGUqTWF0aC5QSS8xODAsbD10aGlzLnN3ZWVwQW5nbGU+MTgwPzE6MCxmPTUwKigxK01hdGguY29zKGMpKSxoPTUwKigxLU1hdGguc2luKGMpKSxkPTUwKigxK01hdGguY29zKGMrdSkpLHA9NTAqKDEtTWF0aC5zaW4oYyt1KSk7ZT17bmFtZToicGF0aCIsYXR0cmlidXRlczp7eG1sbnM6UCxkOiJNICIuY29uY2F0KGYsIiAiKS5jb25jYXQoaCwiIEEgNTAgNTAgMCAiKS5jb25jYXQobCwiIDAgIikuY29uY2F0KGQsIiAiKS5jb25jYXQocCksdmVjdG9yRWZmZWN0OiJub24tc2NhbGluZy1zdHJva2UiLHN0eWxlOmF9fSxPYmplY3QuYXNzaWduKGkse3ZpZXdCb3g6IjAgMCAxMDAgMTAwIixwcmVzZXJ2ZUFzcGVjdFJhdGlvOiJub25lIn0pfXZhciBnPXtuYW1lOiJzdmciLGNoaWxkcmVuOltlXSxhdHRyaWJ1dGVzOml9O3JldHVybiBNKHRoaXNbbi4kZ2V0UGFyZW50XSgpW24uJGdldFBhcmVudF0oKSk/cy5IVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImRpdiIsYXR0cmlidXRlczp7c3R5bGU6e2Rpc3BsYXk6ImlubGluZSIsd2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSJ9fSxjaGlsZHJlbjpbZ119KTooZy5hdHRyaWJ1dGVzLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIscy5IVE1MUmVzdWx0LnN1Y2Nlc3MoZykpfX1dKSxyfShuLlhGQU9iamVjdCksVz1mdW5jdGlvbihlKXttKHIsZSk7dmFyIHQ9dyhyKTtmdW5jdGlvbiByKGUpe3ZhciBhO3JldHVybiB5KHRoaXMsciksKGE9dC5jYWxsKHRoaXMsRiwiYXJlYSIsITApKS5jb2xTcGFuPSgwLHMuZ2V0SW50ZWdlcikoe2RhdGE6ZS5jb2xTcGFuLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmZ1bmN0aW9uKGUpe3JldHVybiBlPj0xfHwtMT09PWV9fSksYS5pZD1lLmlkfHwiIixhLm5hbWU9ZS5uYW1lfHwiIixhLnJlbGV2YW50PSgwLHMuZ2V0UmVsZXZhbnQpKGUucmVsZXZhbnQpLGEudXNlPWUudXNlfHwiIixhLnVzZWhyZWY9ZS51c2VocmVmfHwiIixhLng9KDAscy5nZXRNZWFzdXJlbWVudCkoZS54LCIwcHQiKSxhLnk9KDAscy5nZXRNZWFzdXJlbWVudCkoZS55LCIwcHQiKSxhLmRlc2M9bnVsbCxhLmV4dHJhcz1udWxsLGEuYXJlYT1uZXcgbi5YRkFPYmplY3RBcnJheSxhLmRyYXc9bmV3IG4uWEZBT2JqZWN0QXJyYXksYS5leE9iamVjdD1uZXcgbi5YRkFPYmplY3RBcnJheSxhLmV4Y2xHcm91cD1uZXcgbi5YRkFPYmplY3RBcnJheSxhLmZpZWxkPW5ldyBuLlhGQU9iamVjdEFycmF5LGEuc3ViZm9ybT1uZXcgbi5YRkFPYmplY3RBcnJheSxhLnN1YmZvcm1TZXQ9bmV3IG4uWEZBT2JqZWN0QXJyYXksYX1yZXR1cm4gdihyLFt7a2V5Om4uJGdldENvbnRhaW5lZENoaWxkcmVuLHZhbHVlOlMoKS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIFMoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5kZWxlZ2F0ZVlpZWxkKEwodGhpcyksInQwIiwxKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpfSx7a2V5Om4uJGlzVHJhbnNwYXJlbnQsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4hMH19LHtrZXk6bi4kaXNCaW5kYWJsZSx2YWx1ZTpmdW5jdGlvbigpe3JldHVybiEwfX0se2tleTpuLiRhZGRIVE1MLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIHI9cCh0LDQpLGE9clswXSxpPXJbMV0sbz1yWzJdLHM9clszXTt0aGlzW24uJGV4dHJhXS53aWR0aD1NYXRoLm1heCh0aGlzW24uJGV4dHJhXS53aWR0aCxhK28pLHRoaXNbbi4kZXh0cmFdLmhlaWdodD1NYXRoLm1heCh0aGlzW24uJGV4dHJhXS5oZWlnaHQsaStzKSx0aGlzW24uJGV4dHJhXS5jaGlsZHJlbi5wdXNoKGUpfX0se2tleTpuLiRnZXRBdmFpbGFibGVTcGFjZSx2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzW24uJGV4dHJhXS5hdmFpbGFibGVTcGFjZX19LHtrZXk6bi4kdG9IVE1MLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PSgwLG8udG9TdHlsZSkodGhpcywicG9zaXRpb24iKSxyPXtzdHlsZTp0LGlkOnRoaXNbbi4kdWlkXSxjbGFzczpbInhmYUFyZWEiXX07KDAsby5pc1ByaW50T25seSkodGhpcykmJnIuY2xhc3MucHVzaCgieGZhUHJpbnRPbmx5IiksdGhpcy5uYW1lJiYoci54ZmFOYW1lPXRoaXMubmFtZSk7dmFyIGE9W107dGhpc1tuLiRleHRyYV09e2NoaWxkcmVuOmEsd2lkdGg6MCxoZWlnaHQ6MCxhdmFpbGFibGVTcGFjZTplfTt2YXIgaT10aGlzW24uJGNoaWxkcmVuVG9IVE1MXSh7ZmlsdGVyOm5ldyBTZXQoWyJhcmVhIiwiZHJhdyIsImZpZWxkIiwiZXhjbEdyb3VwIiwic3ViZm9ybSIsInN1YmZvcm1TZXQiXSksaW5jbHVkZTohMH0pO2lmKCFpLnN1Y2Nlc3MpcmV0dXJuIGkuaXNCcmVhaygpP2k6KGRlbGV0ZSB0aGlzW24uJGV4dHJhXSxzLkhUTUxSZXN1bHQuRkFJTFVSRSk7dC53aWR0aD0oMCxvLm1lYXN1cmVUb1N0cmluZykodGhpc1tuLiRleHRyYV0ud2lkdGgpLHQuaGVpZ2h0PSgwLG8ubWVhc3VyZVRvU3RyaW5nKSh0aGlzW24uJGV4dHJhXS5oZWlnaHQpO3ZhciBjPXtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6cixjaGlsZHJlbjphfSx1PVt0aGlzLngsdGhpcy55LHRoaXNbbi4kZXh0cmFdLndpZHRoLHRoaXNbbi4kZXh0cmFdLmhlaWdodF07cmV0dXJuIGRlbGV0ZSB0aGlzW24uJGV4dHJhXSxzLkhUTUxSZXN1bHQuc3VjY2VzcyhjLHUpfX1dKSxyfShuLlhGQU9iamVjdCksVj1mdW5jdGlvbihlKXttKHIsZSk7dmFyIHQ9dyhyKTtmdW5jdGlvbiByKGUpe3ZhciBuO3JldHVybiB5KHRoaXMsciksKG49dC5jYWxsKHRoaXMsRiwiYXNzaXN0IiwhMCkpLmlkPWUuaWR8fCIiLG4ucm9sZT1lLnJvbGV8fCIiLG4udXNlPWUudXNlfHwiIixuLnVzZWhyZWY9ZS51c2VocmVmfHwiIixuLnNwZWFrPW51bGwsbi50b29sVGlwPW51bGwsbn1yZXR1cm4gdihyLFt7a2V5Om4uJHRvSFRNTCx2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRvb2xUaXAmJnRoaXMudG9vbFRpcFtuLiRjb250ZW50XT90aGlzLnRvb2xUaXBbbi4kY29udGVudF06bnVsbH19XSkscn0obi5YRkFPYmplY3QpLFk9ZnVuY3Rpb24oZSl7bShyLGUpO3ZhciB0PXcocik7ZnVuY3Rpb24gcihlKXt2YXIgbjtyZXR1cm4geSh0aGlzLHIpLChuPXQuY2FsbCh0aGlzLEYsImJhcmNvZGUiLCEwKSkuY2hhckVuY29kaW5nPSgwLHMuZ2V0S2V5d29yZCkoe2RhdGE6ZS5jaGFyRW5jb2Rpbmc/ZS5jaGFyRW5jb2RpbmcudG9Mb3dlckNhc2UoKToiIixkZWZhdWx0VmFsdWU6IiIsdmFsaWRhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuWyJ1dGYtOCIsImJpZy1maXZlIiwiZm9udHNwZWNpZmljIiwiZ2JrIiwiZ2ItMTgwMzAiLCJnYi0yMzEyIiwia3NjLTU2MDEiLCJub25lIiwic2hpZnQtamlzIiwidWNzLTIiLCJ1dGYtMTYiXS5pbmNsdWRlcyhlKXx8ZS5tYXRjaCgvaXNvLTg4NTktXGR7Mn0vKX19KSxuLmNoZWNrc3VtPSgwLHMuZ2V0U3RyaW5nT3B0aW9uKShlLmNoZWNrc3VtLFsibm9uZSIsIjFtb2QxMCIsIjFtb2QxMF8xbW9kMTEiLCIybW9kMTAiLCJhdXRvIl0pLG4uZGF0YUNvbHVtbkNvdW50PSgwLHMuZ2V0SW50ZWdlcikoe2RhdGE6ZS5kYXRhQ29sdW1uQ291bnQsZGVmYXVsdFZhbHVlOi0xLHZhbGlkYXRlOmZ1bmN0aW9uKGUpe3JldHVybiBlPj0wfX0pLG4uZGF0YUxlbmd0aD0oMCxzLmdldEludGVnZXIpKHtkYXRhOmUuZGF0YUxlbmd0aCxkZWZhdWx0VmFsdWU6LTEsdmFsaWRhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuIGU+PTB9fSksbi5kYXRhUHJlcD0oMCxzLmdldFN0cmluZ09wdGlvbikoZS5kYXRhUHJlcCxbIm5vbmUiLCJmbGF0ZUNvbXByZXNzIl0pLG4uZGF0YVJvd0NvdW50PSgwLHMuZ2V0SW50ZWdlcikoe2RhdGE6ZS5kYXRhUm93Q291bnQsZGVmYXVsdFZhbHVlOi0xLHZhbGlkYXRlOmZ1bmN0aW9uKGUpe3JldHVybiBlPj0wfX0pLG4uZW5kQ2hhcj1lLmVuZENoYXJ8fCIiLG4uZXJyb3JDb3JyZWN0aW9uTGV2ZWw9KDAscy5nZXRJbnRlZ2VyKSh7ZGF0YTplLmVycm9yQ29ycmVjdGlvbkxldmVsLGRlZmF1bHRWYWx1ZTotMSx2YWxpZGF0ZTpmdW5jdGlvbihlKXtyZXR1cm4gZT49MCYmZTw9OH19KSxuLmlkPWUuaWR8fCIiLG4ubW9kdWxlSGVpZ2h0PSgwLHMuZ2V0TWVhc3VyZW1lbnQpKGUubW9kdWxlSGVpZ2h0LCI1bW0iKSxuLm1vZHVsZVdpZHRoPSgwLHMuZ2V0TWVhc3VyZW1lbnQpKGUubW9kdWxlV2lkdGgsIjAuMjVtbSIpLG4ucHJpbnRDaGVja0RpZ2l0PSgwLHMuZ2V0SW50ZWdlcikoe2RhdGE6ZS5wcmludENoZWNrRGlnaXQsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuIDE9PT1lfX0pLG4ucm93Q29sdW1uUmF0aW89KDAscy5nZXRSYXRpbykoZS5yb3dDb2x1bW5SYXRpbyksbi5zdGFydENoYXI9ZS5zdGFydENoYXJ8fCIiLG4udGV4dExvY2F0aW9uPSgwLHMuZ2V0U3RyaW5nT3B0aW9uKShlLnRleHRMb2NhdGlvbixbImJlbG93IiwiYWJvdmUiLCJhYm92ZUVtYmVkZGVkIiwiYmVsb3dFbWJlZGRlZCIsIm5vbmUiXSksbi50cnVuY2F0ZT0oMCxzLmdldEludGVnZXIpKHtkYXRhOmUudHJ1bmNhdGUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuIDE9PT1lfX0pLG4udHlwZT0oMCxzLmdldFN0cmluZ09wdGlvbikoZS50eXBlP2UudHlwZS50b0xvd2VyQ2FzZSgpOiIiLFsiYXp0ZWMiLCJjb2RhYmFyIiwiY29kZTJvZjVpbmR1c3RyaWFsIiwiY29kZTJvZjVpbnRlcmxlYXZlZCIsImNvZGUyb2Y1bWF0cml4IiwiY29kZTJvZjVzdGFuZGFyZCIsImNvZGUzb2Y5IiwiY29kZTNvZjlleHRlbmRlZCIsImNvZGUxMSIsImNvZGU0OSIsImNvZGU5MyIsImNvZGUxMjgiLCJjb2RlMTI4YSIsImNvZGUxMjhiIiwiY29kZTEyOGMiLCJjb2RlMTI4c3NjYyIsImRhdGFtYXRyaXgiLCJlYW44IiwiZWFuOGFkZDIiLCJlYW44YWRkNSIsImVhbjEzIiwiZWFuMTNhZGQyIiwiZWFuMTNhZGQ1IiwiZWFuMTNwd2NkIiwiZmltIiwibG9nbWFycyIsIm1heGljb2RlIiwibXNpIiwicGRmNDE3IiwicGRmNDE3bWFjcm8iLCJwbGVzc2V5IiwicG9zdGF1c2N1c3QyIiwicG9zdGF1c2N1c3QzIiwicG9zdGF1c3JlcGx5cGFpZCIsInBvc3RhdXNzdGFuZGFyZCIsInBvc3R1a3JtNHNjYyIsInBvc3R1c2RwYmMiLCJwb3N0dXNpbWIiLCJwb3N0dXNzdGFuZGFyZCIsInBvc3R1czV6aXAiLCJxcmNvZGUiLCJyZmlkIiwicnNzMTQiLCJyc3MxNGV4cGFuZGVkIiwicnNzMTRsaW1pdGVkIiwicnNzMTRzdGFja2VkIiwicnNzMTRzdGFja2Vkb21uaSIsInJzczE0dHJ1bmNhdGVkIiwidGVsZXBlbiIsInVjYzEyOCIsInVjYzEyOHJhbmRvbSIsInVjYzEyOHNzY2MiLCJ1cGNhIiwidXBjYWFkZDIiLCJ1cGNhYWRkNSIsInVwY2Fwd2NkIiwidXBjZSIsInVwY2VhZGQyIiwidXBjZWFkZDUiLCJ1cGNlYW4yIiwidXBjZWFuNSIsInVwc21heGljb2RlIl0pLG4udXBzTW9kZT0oMCxzLmdldFN0cmluZ09wdGlvbikoZS51cHNNb2RlLFsidXNDYXJyaWVyIiwiaW50ZXJuYXRpb25hbENhcnJpZXIiLCJzZWN1cmVTeW1ib2wiLCJzdGFuZGFyZFN5bWJvbCJdKSxuLnVzZT1lLnVzZXx8IiIsbi51c2VocmVmPWUudXNlaHJlZnx8IiIsbi53aWRlTmFycm93UmF0aW89KDAscy5nZXRSYXRpbykoZS53aWRlTmFycm93UmF0aW8pLG4uZW5jcnlwdD1udWxsLG4uZXh0cmFzPW51bGwsbn1yZXR1cm4gdihyKX0obi5YRkFPYmplY3QpLEs9ZnVuY3Rpb24oZSl7bShyLGUpO3ZhciB0PXcocik7ZnVuY3Rpb24gcihlKXt2YXIgbjtyZXR1cm4geSh0aGlzLHIpLChuPXQuY2FsbCh0aGlzLEYsImJpbmQiLCEwKSkubWF0Y2g9KDAscy5nZXRTdHJpbmdPcHRpb24pKGUubWF0Y2gsWyJvbmNlIiwiZGF0YVJlZiIsImdsb2JhbCIsIm5vbmUiXSksbi5yZWY9ZS5yZWZ8fCIiLG4ucGljdHVyZT1udWxsLG59cmV0dXJuIHYocil9KG4uWEZBT2JqZWN0KSxKPWZ1bmN0aW9uKGUpe20ocixlKTt2YXIgdD13KHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG47cmV0dXJuIHkodGhpcyxyKSwobj10LmNhbGwodGhpcyxGLCJiaW5kSXRlbXMiKSkuY29ubmVjdGlvbj1lLmNvbm5lY3Rpb258fCIiLG4ubGFiZWxSZWY9ZS5sYWJlbFJlZnx8IiIsbi5yZWY9ZS5yZWZ8fCIiLG4udmFsdWVSZWY9ZS52YWx1ZVJlZnx8IiIsbn1yZXR1cm4gdihyKX0obi5YRkFPYmplY3QpO3QuQmluZEl0ZW1zPUo7dmFyIFo9ZnVuY3Rpb24oZSl7bShyLGUpO3ZhciB0PXcocik7ZnVuY3Rpb24gcihlKXt2YXIgbjtyZXR1cm4geSh0aGlzLHIpLChuPXQuY2FsbCh0aGlzLEYsImJvb2tlbmQiKSkuaWQ9ZS5pZHx8IiIsbi5sZWFkZXI9ZS5sZWFkZXJ8fCIiLG4udHJhaWxlcj1lLnRyYWlsZXJ8fCIiLG4udXNlPWUudXNlfHwiIixuLnVzZWhyZWY9ZS51c2VocmVmfHwiIixufXJldHVybiB2KHIpfShuLlhGQU9iamVjdCksUT1mdW5jdGlvbihlKXttKHIsZSk7dmFyIHQ9dyhyKTtmdW5jdGlvbiByKGUpe3ZhciBuO3JldHVybiB5KHRoaXMsciksKG49dC5jYWxsKHRoaXMsRiwiYm9vbGVhbiIpKS5pZD1lLmlkfHwiIixuLm5hbWU9ZS5uYW1lfHwiIixuLnVzZT1lLnVzZXx8IiIsbi51c2VocmVmPWUudXNlaHJlZnx8IiIsbn1yZXR1cm4gdihyLFt7a2V5Om4uJHRvSFRNTCx2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gVSgxPT09dGhpc1tuLiRjb250ZW50XT8iMSI6IjAiKX19XSkscn0obi5PcHRpb24wMSksZWU9ZnVuY3Rpb24oZSl7bShyLGUpO3ZhciB0PXcocik7ZnVuY3Rpb24gcihlKXt2YXIgYTtyZXR1cm4geSh0aGlzLHIpLChhPXQuY2FsbCh0aGlzLEYsImJvcmRlciIsITApKS5icmVhaz0oMCxzLmdldFN0cmluZ09wdGlvbikoZS5icmVhayxbImNsb3NlIiwib3BlbiJdKSxhLmhhbmQ9KDAscy5nZXRTdHJpbmdPcHRpb24pKGUuaGFuZCxbImV2ZW4iLCJsZWZ0IiwicmlnaHQiXSksYS5pZD1lLmlkfHwiIixhLnByZXNlbmNlPSgwLHMuZ2V0U3RyaW5nT3B0aW9uKShlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pLGEucmVsZXZhbnQ9KDAscy5nZXRSZWxldmFudCkoZS5yZWxldmFudCksYS51c2U9ZS51c2V8fCIiLGEudXNlaHJlZj1lLnVzZWhyZWZ8fCIiLGEuY29ybmVyPW5ldyBuLlhGQU9iamVjdEFycmF5KDQpLGEuZWRnZT1uZXcgbi5YRkFPYmplY3RBcnJheSg0KSxhLmV4dHJhcz1udWxsLGEuZmlsbD1udWxsLGEubWFyZ2luPW51bGwsYX1yZXR1cm4gdihyLFt7a2V5Om4uJGdldEV4dHJhLHZhbHVlOmZ1bmN0aW9uKCl7aWYoIXRoaXNbbi4kZXh0cmFdKXt2YXIgZT10aGlzLmVkZ2UuY2hpbGRyZW4uc2xpY2UoKTtpZihlLmxlbmd0aDw0KWZvcih2YXIgdD1lLmF0KC0xKXx8bmV3IEFlKHt9KSxyPWUubGVuZ3RoO3I8NDtyKyspZS5wdXNoKHQpO3ZhciBhPWUubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZS50aGlja25lc3N9KSksaT1bMCwwLDAsMF07dGhpcy5tYXJnaW4mJihpWzBdPXRoaXMubWFyZ2luLnRvcEluc2V0LGlbMV09dGhpcy5tYXJnaW4ucmlnaHRJbnNldCxpWzJdPXRoaXMubWFyZ2luLmJvdHRvbUluc2V0LGlbM109dGhpcy5tYXJnaW4ubGVmdEluc2V0KSx0aGlzW24uJGV4dHJhXT17d2lkdGhzOmEsaW5zZXRzOmksZWRnZXM6ZX19cmV0dXJuIHRoaXNbbi4kZXh0cmFdfX0se2tleTpuLiR0b1N0eWxlLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpc1tuLiRnZXRFeHRyYV0oKS5lZGdlcy5tYXAoKGZ1bmN0aW9uKGUpe3ZhciB0PWVbbi4kdG9TdHlsZV0oKTtyZXR1cm4gdC5jb2xvcj10LmNvbG9yfHwiIzAwMDAwMCIsdH0pKSx0PU9iamVjdC5jcmVhdGUobnVsbCk7aWYodGhpcy5tYXJnaW4mJk9iamVjdC5hc3NpZ24odCx0aGlzLm1hcmdpbltuLiR0b1N0eWxlXSgpKSx0aGlzLmZpbGwmJiJ2aXNpYmxlIj09PXRoaXMuZmlsbC5wcmVzZW5jZSYmT2JqZWN0LmFzc2lnbih0LHRoaXMuZmlsbFtuLiR0b1N0eWxlXSgpKSx0aGlzLmNvcm5lci5jaGlsZHJlbi5zb21lKChmdW5jdGlvbihlKXtyZXR1cm4gMCE9PWUucmFkaXVzfSkpKXt2YXIgcj10aGlzLmNvcm5lci5jaGlsZHJlbi5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlW24uJHRvU3R5bGVdKCl9KSk7aWYoMj09PXIubGVuZ3RofHwzPT09ci5sZW5ndGgpZm9yKHZhciBhPXIuYXQoLTEpLGk9ci5sZW5ndGg7aTw0O2krKylyLnB1c2goYSk7dC5ib3JkZXJSYWRpdXM9ci5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlLnJhZGl1c30pKS5qb2luKCIgIil9c3dpdGNoKHRoaXMucHJlc2VuY2Upe2Nhc2UiaW52aXNpYmxlIjpjYXNlImhpZGRlbiI6dC5ib3JkZXJTdHlsZT0iIjticmVhaztjYXNlImluYWN0aXZlIjp0LmJvcmRlclN0eWxlPSJub25lIjticmVhaztkZWZhdWx0OnQuYm9yZGVyU3R5bGU9ZS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlLnN0eWxlfSkpLmpvaW4oIiAiKX1yZXR1cm4gdC5ib3JkZXJXaWR0aD1lLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUud2lkdGh9KSkuam9pbigiICIpLHQuYm9yZGVyQ29sb3I9ZS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmNvbG9yfSkpLmpvaW4oIiAiKSx0fX1dKSxyfShuLlhGQU9iamVjdCksdGU9ZnVuY3Rpb24oZSl7bShyLGUpO3ZhciB0PXcocik7ZnVuY3Rpb24gcihlKXt2YXIgbjtyZXR1cm4geSh0aGlzLHIpLChuPXQuY2FsbCh0aGlzLEYsImJyZWFrIiwhMCkpLmFmdGVyPSgwLHMuZ2V0U3RyaW5nT3B0aW9uKShlLmFmdGVyLFsiYXV0byIsImNvbnRlbnRBcmVhIiwicGFnZUFyZWEiLCJwYWdlRXZlbiIsInBhZ2VPZGQiXSksbi5hZnRlclRhcmdldD1lLmFmdGVyVGFyZ2V0fHwiIixuLmJlZm9yZT0oMCxzLmdldFN0cmluZ09wdGlvbikoZS5iZWZvcmUsWyJhdXRvIiwiY29udGVudEFyZWEiLCJwYWdlQXJlYSIsInBhZ2VFdmVuIiwicGFnZU9kZCJdKSxuLmJlZm9yZVRhcmdldD1lLmJlZm9yZVRhcmdldHx8IiIsbi5ib29rZW5kTGVhZGVyPWUuYm9va2VuZExlYWRlcnx8IiIsbi5ib29rZW5kVHJhaWxlcj1lLmJvb2tlbmRUcmFpbGVyfHwiIixuLmlkPWUuaWR8fCIiLG4ub3ZlcmZsb3dMZWFkZXI9ZS5vdmVyZmxvd0xlYWRlcnx8IiIsbi5vdmVyZmxvd1RhcmdldD1lLm92ZXJmbG93VGFyZ2V0fHwiIixuLm92ZXJmbG93VHJhaWxlcj1lLm92ZXJmbG93VHJhaWxlcnx8IiIsbi5zdGFydE5ldz0oMCxzLmdldEludGVnZXIpKHtkYXRhOmUuc3RhcnROZXcsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuIDE9PT1lfX0pLG4udXNlPWUudXNlfHwiIixuLnVzZWhyZWY9ZS51c2VocmVmfHwiIixuLmV4dHJhcz1udWxsLG59cmV0dXJuIHYocil9KG4uWEZBT2JqZWN0KSxyZT1mdW5jdGlvbihlKXttKHIsZSk7dmFyIHQ9dyhyKTtmdW5jdGlvbiByKGUpe3ZhciBuO3JldHVybiB5KHRoaXMsciksKG49dC5jYWxsKHRoaXMsRiwiYnJlYWtBZnRlciIsITApKS5pZD1lLmlkfHwiIixuLmxlYWRlcj1lLmxlYWRlcnx8IiIsbi5zdGFydE5ldz0oMCxzLmdldEludGVnZXIpKHtkYXRhOmUuc3RhcnROZXcsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuIDE9PT1lfX0pLG4udGFyZ2V0PWUudGFyZ2V0fHwiIixuLnRhcmdldFR5cGU9KDAscy5nZXRTdHJpbmdPcHRpb24pKGUudGFyZ2V0VHlwZSxbImF1dG8iLCJjb250ZW50QXJlYSIsInBhZ2VBcmVhIl0pLG4udHJhaWxlcj1lLnRyYWlsZXJ8fCIiLG4udXNlPWUudXNlfHwiIixuLnVzZWhyZWY9ZS51c2VocmVmfHwiIixuLnNjcmlwdD1udWxsLG59cmV0dXJuIHYocil9KG4uWEZBT2JqZWN0KSxuZT1mdW5jdGlvbihlKXttKHIsZSk7dmFyIHQ9dyhyKTtmdW5jdGlvbiByKGUpe3ZhciBuO3JldHVybiB5KHRoaXMsciksKG49dC5jYWxsKHRoaXMsRiwiYnJlYWtCZWZvcmUiLCEwKSkuaWQ9ZS5pZHx8IiIsbi5sZWFkZXI9ZS5sZWFkZXJ8fCIiLG4uc3RhcnROZXc9KDAscy5nZXRJbnRlZ2VyKSh7ZGF0YTplLnN0YXJ0TmV3LGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmZ1bmN0aW9uKGUpe3JldHVybiAxPT09ZX19KSxuLnRhcmdldD1lLnRhcmdldHx8IiIsbi50YXJnZXRUeXBlPSgwLHMuZ2V0U3RyaW5nT3B0aW9uKShlLnRhcmdldFR5cGUsWyJhdXRvIiwiY29udGVudEFyZWEiLCJwYWdlQXJlYSJdKSxuLnRyYWlsZXI9ZS50cmFpbGVyfHwiIixuLnVzZT1lLnVzZXx8IiIsbi51c2VocmVmPWUudXNlaHJlZnx8IiIsbi5zY3JpcHQ9bnVsbCxufXJldHVybiB2KHIsW3trZXk6bi4kdG9IVE1MLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzW24uJGV4dHJhXT17fSxzLkhUTUxSZXN1bHQuRkFJTFVSRX19XSkscn0obi5YRkFPYmplY3QpLGFlPWZ1bmN0aW9uKGUpe20ocixlKTt2YXIgdD13KHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG47cmV0dXJuIHkodGhpcyxyKSwobj10LmNhbGwodGhpcyxGLCJidXR0b24iLCEwKSkuaGlnaGxpZ2h0PSgwLHMuZ2V0U3RyaW5nT3B0aW9uKShlLmhpZ2hsaWdodCxbImludmVydGVkIiwibm9uZSIsIm91dGxpbmUiLCJwdXNoIl0pLG4uaWQ9ZS5pZHx8IiIsbi51c2U9ZS51c2V8fCIiLG4udXNlaHJlZj1lLnVzZWhyZWZ8fCIiLG4uZXh0cmFzPW51bGwsbn1yZXR1cm4gdihyLFt7a2V5Om4uJHRvSFRNTCx2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdCxyPXRoaXNbbi4kZ2V0UGFyZW50XSgpW24uJGdldFBhcmVudF0oKSxhPXtuYW1lOiJidXR0b24iLGF0dHJpYnV0ZXM6e2lkOnRoaXNbbi4kdWlkXSxjbGFzczpbInhmYUJ1dHRvbiJdLHN0eWxlOnt9fSxjaGlsZHJlbjpbXX0saT1PKHIuZXZlbnQuY2hpbGRyZW4pO3RyeXtmb3IoaS5zKCk7ISh0PWkubigpKS5kb25lOyl7dmFyIGM9dC52YWx1ZTtpZigiY2xpY2siPT09Yy5hY3Rpdml0eSYmYy5zY3JpcHQpe3ZhciB1PSgwLGwucmVjb3ZlckpzVVJMKShjLnNjcmlwdFtuLiRjb250ZW50XSk7aWYodSl7dmFyIGY9KDAsby5maXhVUkwpKHUudXJsKTtmJiZhLmNoaWxkcmVuLnB1c2goe25hbWU6ImEiLGF0dHJpYnV0ZXM6e2lkOiJsaW5rIit0aGlzW24uJHVpZF0saHJlZjpmLG5ld1dpbmRvdzp1Lm5ld1dpbmRvdyxjbGFzczpbInhmYUxpbmsiXSxzdHlsZTp7fX0sY2hpbGRyZW46W119KX19fX1jYXRjaChlKXtpLmUoZSl9ZmluYWxseXtpLmYoKX1yZXR1cm4gcy5IVE1MUmVzdWx0LnN1Y2Nlc3MoYSl9fV0pLHJ9KG4uWEZBT2JqZWN0KSxpZT1mdW5jdGlvbihlKXttKHIsZSk7dmFyIHQ9dyhyKTtmdW5jdGlvbiByKGUpe3ZhciBuO3JldHVybiB5KHRoaXMsciksKG49dC5jYWxsKHRoaXMsRiwiY2FsY3VsYXRlIiwhMCkpLmlkPWUuaWR8fCIiLG4ub3ZlcnJpZGU9KDAscy5nZXRTdHJpbmdPcHRpb24pKGUub3ZlcnJpZGUsWyJkaXNhYmxlZCIsImVycm9yIiwiaWdub3JlIiwid2FybmluZyJdKSxuLnVzZT1lLnVzZXx8IiIsbi51c2VocmVmPWUudXNlaHJlZnx8IiIsbi5leHRyYXM9bnVsbCxuLm1lc3NhZ2U9bnVsbCxuLnNjcmlwdD1udWxsLG59cmV0dXJuIHYocil9KG4uWEZBT2JqZWN0KSxvZT1mdW5jdGlvbihlKXttKHIsZSk7dmFyIHQ9dyhyKTtmdW5jdGlvbiByKGUpe3ZhciBuO3JldHVybiB5KHRoaXMsciksKG49dC5jYWxsKHRoaXMsRiwiY2FwdGlvbiIsITApKS5pZD1lLmlkfHwiIixuLnBsYWNlbWVudD0oMCxzLmdldFN0cmluZ09wdGlvbikoZS5wbGFjZW1lbnQsWyJsZWZ0IiwiYm90dG9tIiwiaW5saW5lIiwicmlnaHQiLCJ0b3AiXSksbi5wcmVzZW5jZT0oMCxzLmdldFN0cmluZ09wdGlvbikoZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKSxuLnJlc2VydmU9TWF0aC5jZWlsKCgwLHMuZ2V0TWVhc3VyZW1lbnQpKGUucmVzZXJ2ZSkpLG4udXNlPWUudXNlfHwiIixuLnVzZWhyZWY9ZS51c2VocmVmfHwiIixuLmV4dHJhcz1udWxsLG4uZm9udD1udWxsLG4ubWFyZ2luPW51bGwsbi5wYXJhPW51bGwsbi52YWx1ZT1udWxsLG59cmV0dXJuIHYocixbe2tleTpuLiRzZXRWYWx1ZSx2YWx1ZTpmdW5jdGlvbihlKXtmdW5jdGlvbiB0KHQpe3JldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gdC50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiBlLnRvU3RyaW5nKCl9LHR9KChmdW5jdGlvbihlKXtfKHRoaXMsZSl9KSl9LHtrZXk6bi4kZ2V0RXh0cmEsdmFsdWU6ZnVuY3Rpb24oZSl7aWYoIXRoaXNbbi4kZXh0cmFdKXt2YXIgdD1lLndpZHRoLHI9ZS5oZWlnaHQ7c3dpdGNoKHRoaXMucGxhY2VtZW50KXtjYXNlImxlZnQiOmNhc2UicmlnaHQiOmNhc2UiaW5saW5lIjp0PXRoaXMucmVzZXJ2ZTw9MD90OnRoaXMucmVzZXJ2ZTticmVhaztjYXNlInRvcCI6Y2FzZSJib3R0b20iOnI9dGhpcy5yZXNlcnZlPD0wP3I6dGhpcy5yZXNlcnZlfXRoaXNbbi4kZXh0cmFdPSgwLG8ubGF5b3V0Tm9kZSkodGhpcyx7d2lkdGg6dCxoZWlnaHQ6cn0pfXJldHVybiB0aGlzW24uJGV4dHJhXX19LHtrZXk6bi4kdG9IVE1MLHZhbHVlOmZ1bmN0aW9uKGUpe2lmKCF0aGlzLnZhbHVlKXJldHVybiBzLkhUTUxSZXN1bHQuRU1QVFk7dGhpc1tuLiRwdXNoUGFyYV0oKTt2YXIgdD10aGlzLnZhbHVlW24uJHRvSFRNTF0oZSkuaHRtbDtpZighdClyZXR1cm4gdGhpc1tuLiRwb3BQYXJhXSgpLHMuSFRNTFJlc3VsdC5FTVBUWTt2YXIgcj10aGlzLnJlc2VydmU7aWYodGhpcy5yZXNlcnZlPD0wKXt2YXIgYT10aGlzW24uJGdldEV4dHJhXShlKSxpPWEudyxjPWEuaDtzd2l0Y2godGhpcy5wbGFjZW1lbnQpe2Nhc2UibGVmdCI6Y2FzZSJyaWdodCI6Y2FzZSJpbmxpbmUiOnRoaXMucmVzZXJ2ZT1pO2JyZWFrO2Nhc2UidG9wIjpjYXNlImJvdHRvbSI6dGhpcy5yZXNlcnZlPWN9fXZhciB1PVtdOyJzdHJpbmciPT10eXBlb2YgdD91LnB1c2goe25hbWU6IiN0ZXh0Iix2YWx1ZTp0fSk6dS5wdXNoKHQpO3ZhciBsPSgwLG8udG9TdHlsZSkodGhpcywiZm9udCIsIm1hcmdpbiIsInZpc2liaWxpdHkiKTtzd2l0Y2godGhpcy5wbGFjZW1lbnQpe2Nhc2UibGVmdCI6Y2FzZSJyaWdodCI6dGhpcy5yZXNlcnZlPjAmJihsLndpZHRoPSgwLG8ubWVhc3VyZVRvU3RyaW5nKSh0aGlzLnJlc2VydmUpKTticmVhaztjYXNlInRvcCI6Y2FzZSJib3R0b20iOnRoaXMucmVzZXJ2ZT4wJiYobC5oZWlnaHQ9KDAsby5tZWFzdXJlVG9TdHJpbmcpKHRoaXMucmVzZXJ2ZSkpfXJldHVybigwLG8uc2V0UGFyYSkodGhpcyxudWxsLHQpLHRoaXNbbi4kcG9wUGFyYV0oKSx0aGlzLnJlc2VydmU9cixzLkhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixhdHRyaWJ1dGVzOntzdHlsZTpsLGNsYXNzOlsieGZhQ2FwdGlvbiJdfSxjaGlsZHJlbjp1fSl9fV0pLHJ9KG4uWEZBT2JqZWN0KSxzZT1mdW5jdGlvbihlKXttKHIsZSk7dmFyIHQ9dyhyKTtmdW5jdGlvbiByKGUpe3ZhciBuO3JldHVybiB5KHRoaXMsciksKG49dC5jYWxsKHRoaXMsRiwiY2VydGlmaWNhdGUiKSkuaWQ9ZS5pZHx8IiIsbi5uYW1lPWUubmFtZXx8IiIsbi51c2U9ZS51c2V8fCIiLG4udXNlaHJlZj1lLnVzZWhyZWZ8fCIiLG59cmV0dXJuIHYocil9KG4uU3RyaW5nT2JqZWN0KSxjZT1mdW5jdGlvbihlKXttKHIsZSk7dmFyIHQ9dyhyKTtmdW5jdGlvbiByKGUpe3ZhciBuO3JldHVybiB5KHRoaXMsciksKG49dC5jYWxsKHRoaXMsRiwiY2VydGlmaWNhdGVzIiwhMCkpLmNyZWRlbnRpYWxTZXJ2ZXJQb2xpY3k9KDAscy5nZXRTdHJpbmdPcHRpb24pKGUuY3JlZGVudGlhbFNlcnZlclBvbGljeSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSksbi5pZD1lLmlkfHwiIixuLnVybD1lLnVybHx8IiIsbi51cmxQb2xpY3k9ZS51cmxQb2xpY3l8fCIiLG4udXNlPWUudXNlfHwiIixuLnVzZWhyZWY9ZS51c2VocmVmfHwiIixuLmVuY3J5cHRpb249bnVsbCxuLmlzc3VlcnM9bnVsbCxuLmtleVVzYWdlPW51bGwsbi5vaWRzPW51bGwsbi5zaWduaW5nPW51bGwsbi5zdWJqZWN0RE5zPW51bGwsbn1yZXR1cm4gdihyKX0obi5YRkFPYmplY3QpLHVlPWZ1bmN0aW9uKGUpe20ocixlKTt2YXIgdD13KHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG47cmV0dXJuIHkodGhpcyxyKSwobj10LmNhbGwodGhpcyxGLCJjaGVja0J1dHRvbiIsITApKS5pZD1lLmlkfHwiIixuLm1hcms9KDAscy5nZXRTdHJpbmdPcHRpb24pKGUubWFyayxbImRlZmF1bHQiLCJjaGVjayIsImNpcmNsZSIsImNyb3NzIiwiZGlhbW9uZCIsInNxdWFyZSIsInN0YXIiXSksbi5zaGFwZT0oMCxzLmdldFN0cmluZ09wdGlvbikoZS5zaGFwZSxbInNxdWFyZSIsInJvdW5kIl0pLG4uc2l6ZT0oMCxzLmdldE1lYXN1cmVtZW50KShlLnNpemUsIjEwcHQiKSxuLnVzZT1lLnVzZXx8IiIsbi51c2VocmVmPWUudXNlaHJlZnx8IiIsbi5ib3JkZXI9bnVsbCxuLmV4dHJhcz1udWxsLG4ubWFyZ2luPW51bGwsbn1yZXR1cm4gdihyLFt7a2V5Om4uJHRvSFRNTCx2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdCxyLGEsaT0oMCxvLnRvU3R5bGUpKCJtYXJnaW4iKSxjPSgwLG8ubWVhc3VyZVRvU3RyaW5nKSh0aGlzLnNpemUpO2kud2lkdGg9aS5oZWlnaHQ9Yzt2YXIgdSxsPXRoaXNbbi4kZ2V0UGFyZW50XSgpW24uJGdldFBhcmVudF0oKSxmPWwuaXRlbXMuY2hpbGRyZW4ubGVuZ3RoJiZsLml0ZW1zLmNoaWxkcmVuWzBdW24uJHRvSFRNTF0oKS5odG1sfHxbXSxoPXtvbjoodm9pZCAwIT09ZlswXT9mWzBdOiJvbiIpLnRvU3RyaW5nKCksb2ZmOih2b2lkIDAhPT1mWzFdP2ZbMV06Im9mZiIpLnRvU3RyaW5nKCl9LGQ9KGwudmFsdWUmJmwudmFsdWVbbi4kdGV4dF0oKXx8Im9mZiIpPT09aC5vbnx8dm9pZCAwLHA9bFtuLiRnZXRTdWJmb3JtUGFyZW50XSgpLGc9bFtuLiR1aWRdO3AgaW5zdGFuY2VvZiBSZT8oYT1wW24uJHVpZF0sdD0icmFkaW8iLHI9InhmYVJhZGlvIix1PXBbbi4kZGF0YV0mJnBbbi4kZGF0YV1bbi4kdWlkXXx8cFtuLiR1aWRdKToodD0iY2hlY2tib3giLHI9InhmYUNoZWNrYm94Iix1PWxbbi4kZGF0YV0mJmxbbi4kZGF0YV1bbi4kdWlkXXx8bFtuLiR1aWRdKTt2YXIgdj17bmFtZToiaW5wdXQiLGF0dHJpYnV0ZXM6e2NsYXNzOltyXSxzdHlsZTppLGZpZWxkSWQ6ZyxkYXRhSWQ6dSx0eXBlOnQsY2hlY2tlZDpkLHhmYU9uOmgub24seGZhT2ZmOmgub2ZmLCJhcmlhLWxhYmVsIjpCKGwpLCJhcmlhLXJlcXVpcmVkIjohMX19O3JldHVybiBhJiYodi5hdHRyaWJ1dGVzLm5hbWU9YSksUihsKSYmKHYuYXR0cmlidXRlc1siYXJpYS1yZXF1aXJlZCJdPSEwLHYuYXR0cmlidXRlcy5yZXF1aXJlZD0hMCkscy5IVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImxhYmVsIixhdHRyaWJ1dGVzOntjbGFzczpbInhmYUxhYmVsIl19LGNoaWxkcmVuOlt2XX0pfX1dKSxyfShuLlhGQU9iamVjdCksbGU9ZnVuY3Rpb24oZSl7bShyLGUpO3ZhciB0PXcocik7ZnVuY3Rpb24gcihlKXt2YXIgbjtyZXR1cm4geSh0aGlzLHIpLChuPXQuY2FsbCh0aGlzLEYsImNob2ljZUxpc3QiLCEwKSkuY29tbWl0T249KDAscy5nZXRTdHJpbmdPcHRpb24pKGUuY29tbWl0T24sWyJzZWxlY3QiLCJleGl0Il0pLG4uaWQ9ZS5pZHx8IiIsbi5vcGVuPSgwLHMuZ2V0U3RyaW5nT3B0aW9uKShlLm9wZW4sWyJ1c2VyQ29udHJvbCIsImFsd2F5cyIsIm11bHRpU2VsZWN0Iiwib25FbnRyeSJdKSxuLnRleHRFbnRyeT0oMCxzLmdldEludGVnZXIpKHtkYXRhOmUudGV4dEVudHJ5LGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmZ1bmN0aW9uKGUpe3JldHVybiAxPT09ZX19KSxuLnVzZT1lLnVzZXx8IiIsbi51c2VocmVmPWUudXNlaHJlZnx8IiIsbi5ib3JkZXI9bnVsbCxuLmV4dHJhcz1udWxsLG4ubWFyZ2luPW51bGwsbn1yZXR1cm4gdihyLFt7a2V5Om4uJHRvSFRNTCx2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD0oMCxvLnRvU3R5bGUpKHRoaXMsImJvcmRlciIsIm1hcmdpbiIpLHI9dGhpc1tuLiRnZXRQYXJlbnRdKClbbi4kZ2V0UGFyZW50XSgpLGE9ci5mb250JiZyLmZvbnQuc2l6ZXx8MTAsaT17Zm9udFNpemU6ImNhbGMoIi5jb25jYXQoYSwicHggKiB2YXIoLS1zY2FsZS1mYWN0b3IpKSIpfSxjPVtdO2lmKHIuaXRlbXMuY2hpbGRyZW4ubGVuZ3RoPjApe3ZhciB1PXIuaXRlbXMsbD0wLGY9MDsyPT09dS5jaGlsZHJlbi5sZW5ndGgmJihmPTEtKGw9dS5jaGlsZHJlblswXS5zYXZlKSk7Zm9yKHZhciBoPXUuY2hpbGRyZW5bbF1bbi4kdG9IVE1MXSgpLmh0bWwsZD11LmNoaWxkcmVuW2ZdW24uJHRvSFRNTF0oKS5odG1sLHA9ITEsZz1yLnZhbHVlJiZyLnZhbHVlW24uJHRleHRdKCl8fCIiLHY9MCx5PWgubGVuZ3RoO3Y8eTt2Kyspe3ZhciBtPXtuYW1lOiJvcHRpb24iLGF0dHJpYnV0ZXM6e3ZhbHVlOmRbdl18fGhbdl0sc3R5bGU6aX0sdmFsdWU6aFt2XX07ZFt2XT09PWcmJihtLmF0dHJpYnV0ZXMuc2VsZWN0ZWQ9cD0hMCksYy5wdXNoKG0pfXB8fGMuc3BsaWNlKDAsMCx7bmFtZToib3B0aW9uIixhdHRyaWJ1dGVzOntoaWRkZW46ITAsc2VsZWN0ZWQ6ITB9LHZhbHVlOiIgIn0pfXZhciBiPXtjbGFzczpbInhmYVNlbGVjdCJdLGZpZWxkSWQ6cltuLiR1aWRdLGRhdGFJZDpyW24uJGRhdGFdJiZyW24uJGRhdGFdW24uJHVpZF18fHJbbi4kdWlkXSxzdHlsZTp0LCJhcmlhLWxhYmVsIjpCKHIpLCJhcmlhLXJlcXVpcmVkIjohMX07cmV0dXJuIFIocikmJihiWyJhcmlhLXJlcXVpcmVkIl09ITAsYi5yZXF1aXJlZD0hMCksIm11bHRpU2VsZWN0Ij09PXRoaXMub3BlbiYmKGIubXVsdGlwbGU9ITApLHMuSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJsYWJlbCIsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFMYWJlbCJdfSxjaGlsZHJlbjpbe25hbWU6InNlbGVjdCIsY2hpbGRyZW46YyxhdHRyaWJ1dGVzOmJ9XX0pfX1dKSxyfShuLlhGQU9iamVjdCksZmU9ZnVuY3Rpb24oZSl7bShyLGUpO3ZhciB0PXcocik7ZnVuY3Rpb24gcihlKXt2YXIgbjtyZXR1cm4geSh0aGlzLHIpLChuPXQuY2FsbCh0aGlzLEYsImNvbG9yIiwhMCkpLmNTcGFjZT0oMCxzLmdldFN0cmluZ09wdGlvbikoZS5jU3BhY2UsWyJTUkdCIl0pLG4uaWQ9ZS5pZHx8IiIsbi51c2U9ZS51c2V8fCIiLG4udXNlaHJlZj1lLnVzZWhyZWZ8fCIiLG4udmFsdWU9ZS52YWx1ZT8oMCxzLmdldENvbG9yKShlLnZhbHVlKToiIixuLmV4dHJhcz1udWxsLG59cmV0dXJuIHYocixbe2tleTpuLiRoYXNTZXR0YWJsZVZhbHVlLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuITF9fSx7a2V5Om4uJHRvU3R5bGUsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52YWx1ZT9jLlV0aWwubWFrZUhleENvbG9yKHRoaXMudmFsdWUucix0aGlzLnZhbHVlLmcsdGhpcy52YWx1ZS5iKTpudWxsfX1dKSxyfShuLlhGQU9iamVjdCksaGU9ZnVuY3Rpb24oZSl7bShyLGUpO3ZhciB0PXcocik7ZnVuY3Rpb24gcihlKXt2YXIgbjtyZXR1cm4geSh0aGlzLHIpLChuPXQuY2FsbCh0aGlzLEYsImNvbWIiKSkuaWQ9ZS5pZHx8IiIsbi5udW1iZXJPZkNlbGxzPSgwLHMuZ2V0SW50ZWdlcikoe2RhdGE6ZS5udW1iZXJPZkNlbGxzLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmZ1bmN0aW9uKGUpe3JldHVybiBlPj0wfX0pLG4udXNlPWUudXNlfHwiIixuLnVzZWhyZWY9ZS51c2VocmVmfHwiIixufXJldHVybiB2KHIpfShuLlhGQU9iamVjdCksZGU9ZnVuY3Rpb24oZSl7bShyLGUpO3ZhciB0PXcocik7ZnVuY3Rpb24gcihlKXt2YXIgbjtyZXR1cm4geSh0aGlzLHIpLChuPXQuY2FsbCh0aGlzLEYsImNvbm5lY3QiLCEwKSkuY29ubmVjdGlvbj1lLmNvbm5lY3Rpb258fCIiLG4uaWQ9ZS5pZHx8IiIsbi5yZWY9ZS5yZWZ8fCIiLG4udXNhZ2U9KDAscy5nZXRTdHJpbmdPcHRpb24pKGUudXNhZ2UsWyJleHBvcnRBbmRJbXBvcnQiLCJleHBvcnRPbmx5IiwiaW1wb3J0T25seSJdKSxuLnVzZT1lLnVzZXx8IiIsbi51c2VocmVmPWUudXNlaHJlZnx8IiIsbi5waWN0dXJlPW51bGwsbn1yZXR1cm4gdihyKX0obi5YRkFPYmplY3QpLHBlPWZ1bmN0aW9uKGUpe20ocixlKTt2YXIgdD13KHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG47cmV0dXJuIHkodGhpcyxyKSwobj10LmNhbGwodGhpcyxGLCJjb250ZW50QXJlYSIsITApKS5oPSgwLHMuZ2V0TWVhc3VyZW1lbnQpKGUuaCksbi5pZD1lLmlkfHwiIixuLm5hbWU9ZS5uYW1lfHwiIixuLnJlbGV2YW50PSgwLHMuZ2V0UmVsZXZhbnQpKGUucmVsZXZhbnQpLG4udXNlPWUudXNlfHwiIixuLnVzZWhyZWY9ZS51c2VocmVmfHwiIixuLnc9KDAscy5nZXRNZWFzdXJlbWVudCkoZS53KSxuLng9KDAscy5nZXRNZWFzdXJlbWVudCkoZS54LCIwcHQiKSxuLnk9KDAscy5nZXRNZWFzdXJlbWVudCkoZS55LCIwcHQiKSxuLmRlc2M9bnVsbCxuLmV4dHJhcz1udWxsLG59cmV0dXJuIHYocixbe2tleTpuLiR0b0hUTUwsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9e2xlZnQ6KDAsby5tZWFzdXJlVG9TdHJpbmcpKHRoaXMueCksdG9wOigwLG8ubWVhc3VyZVRvU3RyaW5nKSh0aGlzLnkpLHdpZHRoOigwLG8ubWVhc3VyZVRvU3RyaW5nKSh0aGlzLncpLGhlaWdodDooMCxvLm1lYXN1cmVUb1N0cmluZykodGhpcy5oKX0scj1bInhmYUNvbnRlbnRhcmVhIl07cmV0dXJuKDAsby5pc1ByaW50T25seSkodGhpcykmJnIucHVzaCgieGZhUHJpbnRPbmx5Iikscy5IVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImRpdiIsY2hpbGRyZW46W10sYXR0cmlidXRlczp7c3R5bGU6dCxjbGFzczpyLGlkOnRoaXNbbi4kdWlkXX19KX19XSkscn0obi5YRkFPYmplY3QpLGdlPWZ1bmN0aW9uKGUpe20ocixlKTt2YXIgdD13KHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG47cmV0dXJuIHkodGhpcyxyKSwobj10LmNhbGwodGhpcyxGLCJjb3JuZXIiLCEwKSkuaWQ9ZS5pZHx8IiIsbi5pbnZlcnRlZD0oMCxzLmdldEludGVnZXIpKHtkYXRhOmUuaW52ZXJ0ZWQsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuIDE9PT1lfX0pLG4uam9pbj0oMCxzLmdldFN0cmluZ09wdGlvbikoZS5qb2luLFsic3F1YXJlIiwicm91bmQiXSksbi5wcmVzZW5jZT0oMCxzLmdldFN0cmluZ09wdGlvbikoZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKSxuLnJhZGl1cz0oMCxzLmdldE1lYXN1cmVtZW50KShlLnJhZGl1cyksbi5zdHJva2U9KDAscy5nZXRTdHJpbmdPcHRpb24pKGUuc3Ryb2tlLFsic29saWQiLCJkYXNoRG90IiwiZGFzaERvdERvdCIsImRhc2hlZCIsImRvdHRlZCIsImVtYm9zc2VkIiwiZXRjaGVkIiwibG93ZXJlZCIsInJhaXNlZCJdKSxuLnRoaWNrbmVzcz0oMCxzLmdldE1lYXN1cmVtZW50KShlLnRoaWNrbmVzcywiMC41cHQiKSxuLnVzZT1lLnVzZXx8IiIsbi51c2VocmVmPWUudXNlaHJlZnx8IiIsbi5jb2xvcj1udWxsLG4uZXh0cmFzPW51bGwsbn1yZXR1cm4gdihyLFt7a2V5Om4uJHRvU3R5bGUsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT0oMCxvLnRvU3R5bGUpKHRoaXMsInZpc2liaWxpdHkiKTtyZXR1cm4gZS5yYWRpdXM9KDAsby5tZWFzdXJlVG9TdHJpbmcpKCJzcXVhcmUiPT09dGhpcy5qb2luPzA6dGhpcy5yYWRpdXMpLGV9fV0pLHJ9KG4uWEZBT2JqZWN0KSx2ZT1mdW5jdGlvbihlKXttKHIsZSk7dmFyIHQ9dyhyKTtmdW5jdGlvbiByKGUpe3ZhciBuO3JldHVybiB5KHRoaXMsciksKG49dC5jYWxsKHRoaXMsRiwiZGF0ZSIpKS5pZD1lLmlkfHwiIixuLm5hbWU9ZS5uYW1lfHwiIixuLnVzZT1lLnVzZXx8IiIsbi51c2VocmVmPWUudXNlaHJlZnx8IiIsbn1yZXR1cm4gdihyLFt7a2V5Om4uJGZpbmFsaXplLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpc1tuLiRjb250ZW50XS50cmltKCk7dGhpc1tuLiRjb250ZW50XT1lP25ldyBEYXRlKGUpOm51bGx9fSx7a2V5Om4uJHRvSFRNTCx2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gVSh0aGlzW24uJGNvbnRlbnRdP3RoaXNbbi4kY29udGVudF0udG9TdHJpbmcoKToiIil9fV0pLHJ9KG4uQ29udGVudE9iamVjdCkseWU9ZnVuY3Rpb24oZSl7bShyLGUpO3ZhciB0PXcocik7ZnVuY3Rpb24gcihlKXt2YXIgbjtyZXR1cm4geSh0aGlzLHIpLChuPXQuY2FsbCh0aGlzLEYsImRhdGVUaW1lIikpLmlkPWUuaWR8fCIiLG4ubmFtZT1lLm5hbWV8fCIiLG4udXNlPWUudXNlfHwiIixuLnVzZWhyZWY9ZS51c2VocmVmfHwiIixufXJldHVybiB2KHIsW3trZXk6bi4kZmluYWxpemUsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzW24uJGNvbnRlbnRdLnRyaW0oKTt0aGlzW24uJGNvbnRlbnRdPWU/bmV3IERhdGUoZSk6bnVsbH19LHtrZXk6bi4kdG9IVE1MLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBVKHRoaXNbbi4kY29udGVudF0/dGhpc1tuLiRjb250ZW50XS50b1N0cmluZygpOiIiKX19XSkscn0obi5Db250ZW50T2JqZWN0KSxtZT1mdW5jdGlvbihlKXttKHIsZSk7dmFyIHQ9dyhyKTtmdW5jdGlvbiByKGUpe3ZhciBuO3JldHVybiB5KHRoaXMsciksKG49dC5jYWxsKHRoaXMsRiwiZGF0ZVRpbWVFZGl0IiwhMCkpLmhTY3JvbGxQb2xpY3k9KDAscy5nZXRTdHJpbmdPcHRpb24pKGUuaFNjcm9sbFBvbGljeSxbImF1dG8iLCJvZmYiLCJvbiJdKSxuLmlkPWUuaWR8fCIiLG4ucGlja2VyPSgwLHMuZ2V0U3RyaW5nT3B0aW9uKShlLnBpY2tlcixbImhvc3QiLCJub25lIl0pLG4udXNlPWUudXNlfHwiIixuLnVzZWhyZWY9ZS51c2VocmVmfHwiIixuLmJvcmRlcj1udWxsLG4uY29tYj1udWxsLG4uZXh0cmFzPW51bGwsbi5tYXJnaW49bnVsbCxufXJldHVybiB2KHIsW3trZXk6bi4kdG9IVE1MLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PSgwLG8udG9TdHlsZSkodGhpcywiYm9yZGVyIiwiZm9udCIsIm1hcmdpbiIpLHI9dGhpc1tuLiRnZXRQYXJlbnRdKClbbi4kZ2V0UGFyZW50XSgpLGE9e25hbWU6ImlucHV0IixhdHRyaWJ1dGVzOnt0eXBlOiJ0ZXh0IixmaWVsZElkOnJbbi4kdWlkXSxkYXRhSWQ6cltuLiRkYXRhXSYmcltuLiRkYXRhXVtuLiR1aWRdfHxyW24uJHVpZF0sY2xhc3M6WyJ4ZmFUZXh0ZmllbGQiXSxzdHlsZTp0LCJhcmlhLWxhYmVsIjpCKHIpLCJhcmlhLXJlcXVpcmVkIjohMX19O3JldHVybiBSKHIpJiYoYS5hdHRyaWJ1dGVzWyJhcmlhLXJlcXVpcmVkIl09ITAsYS5hdHRyaWJ1dGVzLnJlcXVpcmVkPSEwKSxzLkhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToibGFiZWwiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhTGFiZWwiXX0sY2hpbGRyZW46W2FdfSl9fV0pLHJ9KG4uWEZBT2JqZWN0KSxiZT1mdW5jdGlvbihlKXttKHIsZSk7dmFyIHQ9dyhyKTtmdW5jdGlvbiByKGUpe3ZhciBuO3JldHVybiB5KHRoaXMsciksKG49dC5jYWxsKHRoaXMsRiwiZGVjaW1hbCIpKS5mcmFjRGlnaXRzPSgwLHMuZ2V0SW50ZWdlcikoe2RhdGE6ZS5mcmFjRGlnaXRzLGRlZmF1bHRWYWx1ZToyLHZhbGlkYXRlOmZ1bmN0aW9uKGUpe3JldHVybiEwfX0pLG4uaWQ9ZS5pZHx8IiIsbi5sZWFkRGlnaXRzPSgwLHMuZ2V0SW50ZWdlcikoe2RhdGE6ZS5sZWFkRGlnaXRzLGRlZmF1bHRWYWx1ZTotMSx2YWxpZGF0ZTpmdW5jdGlvbihlKXtyZXR1cm4hMH19KSxuLm5hbWU9ZS5uYW1lfHwiIixuLnVzZT1lLnVzZXx8IiIsbi51c2VocmVmPWUudXNlaHJlZnx8IiIsbn1yZXR1cm4gdihyLFt7a2V5Om4uJGZpbmFsaXplLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9cGFyc2VGbG9hdCh0aGlzW24uJGNvbnRlbnRdLnRyaW0oKSk7dGhpc1tuLiRjb250ZW50XT1pc05hTihlKT9udWxsOmV9fSx7a2V5Om4uJHRvSFRNTCx2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gVShudWxsIT09dGhpc1tuLiRjb250ZW50XT90aGlzW24uJGNvbnRlbnRdLnRvU3RyaW5nKCk6IiIpfX1dKSxyfShuLkNvbnRlbnRPYmplY3QpLHdlPWZ1bmN0aW9uKGUpe20ocixlKTt2YXIgdD13KHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG47cmV0dXJuIHkodGhpcyxyKSwobj10LmNhbGwodGhpcyxGLCJkZWZhdWx0VWkiLCEwKSkuaWQ9ZS5pZHx8IiIsbi51c2U9ZS51c2V8fCIiLG4udXNlaHJlZj1lLnVzZWhyZWZ8fCIiLG4uZXh0cmFzPW51bGwsbn1yZXR1cm4gdihyKX0obi5YRkFPYmplY3QpLGtlPWZ1bmN0aW9uKGUpe20ocixlKTt2YXIgdD13KHIpO2Z1bmN0aW9uIHIoZSl7dmFyIGE7cmV0dXJuIHkodGhpcyxyKSwoYT10LmNhbGwodGhpcyxGLCJkZXNjIiwhMCkpLmlkPWUuaWR8fCIiLGEudXNlPWUudXNlfHwiIixhLnVzZWhyZWY9ZS51c2VocmVmfHwiIixhLmJvb2xlYW49bmV3IG4uWEZBT2JqZWN0QXJyYXksYS5kYXRlPW5ldyBuLlhGQU9iamVjdEFycmF5LGEuZGF0ZVRpbWU9bmV3IG4uWEZBT2JqZWN0QXJyYXksYS5kZWNpbWFsPW5ldyBuLlhGQU9iamVjdEFycmF5LGEuZXhEYXRhPW5ldyBuLlhGQU9iamVjdEFycmF5LGEuZmxvYXQ9bmV3IG4uWEZBT2JqZWN0QXJyYXksYS5pbWFnZT1uZXcgbi5YRkFPYmplY3RBcnJheSxhLmludGVnZXI9bmV3IG4uWEZBT2JqZWN0QXJyYXksYS50ZXh0PW5ldyBuLlhGQU9iamVjdEFycmF5LGEudGltZT1uZXcgbi5YRkFPYmplY3RBcnJheSxhfXJldHVybiB2KHIpfShuLlhGQU9iamVjdCksU2U9ZnVuY3Rpb24oZSl7bShyLGUpO3ZhciB0PXcocik7ZnVuY3Rpb24gcihlKXt2YXIgbjtyZXR1cm4geSh0aGlzLHIpLChuPXQuY2FsbCh0aGlzLEYsImRpZ2VzdE1ldGhvZCIsWyIiLCJTSEExIiwiU0hBMjU2IiwiU0hBNTEyIiwiUklQRU1EMTYwIl0pKS5pZD1lLmlkfHwiIixuLnVzZT1lLnVzZXx8IiIsbi51c2VocmVmPWUudXNlaHJlZnx8IiIsbn1yZXR1cm4gdihyKX0obi5PcHRpb25PYmplY3QpLHhlPWZ1bmN0aW9uKGUpe20ocixlKTt2YXIgdD13KHIpO2Z1bmN0aW9uIHIoZSl7dmFyIGE7cmV0dXJuIHkodGhpcyxyKSwoYT10LmNhbGwodGhpcyxGLCJkaWdlc3RNZXRob2RzIiwhMCkpLmlkPWUuaWR8fCIiLGEudHlwZT0oMCxzLmdldFN0cmluZ09wdGlvbikoZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKSxhLnVzZT1lLnVzZXx8IiIsYS51c2VocmVmPWUudXNlaHJlZnx8IiIsYS5kaWdlc3RNZXRob2Q9bmV3IG4uWEZBT2JqZWN0QXJyYXksYX1yZXR1cm4gdihyKX0obi5YRkFPYmplY3QpLE9lPWZ1bmN0aW9uKGUpe20ocixlKTt2YXIgdD13KHIpO2Z1bmN0aW9uIHIoZSl7dmFyIGE7cmV0dXJuIHkodGhpcyxyKSwoYT10LmNhbGwodGhpcyxGLCJkcmF3IiwhMCkpLmFuY2hvclR5cGU9KDAscy5nZXRTdHJpbmdPcHRpb24pKGUuYW5jaG9yVHlwZSxbInRvcExlZnQiLCJib3R0b21DZW50ZXIiLCJib3R0b21MZWZ0IiwiYm90dG9tUmlnaHQiLCJtaWRkbGVDZW50ZXIiLCJtaWRkbGVMZWZ0IiwibWlkZGxlUmlnaHQiLCJ0b3BDZW50ZXIiLCJ0b3BSaWdodCJdKSxhLmNvbFNwYW49KDAscy5nZXRJbnRlZ2VyKSh7ZGF0YTplLmNvbFNwYW4sZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuIGU+PTF8fC0xPT09ZX19KSxhLmg9ZS5oPygwLHMuZ2V0TWVhc3VyZW1lbnQpKGUuaCk6IiIsYS5oQWxpZ249KDAscy5nZXRTdHJpbmdPcHRpb24pKGUuaEFsaWduLFsibGVmdCIsImNlbnRlciIsImp1c3RpZnkiLCJqdXN0aWZ5QWxsIiwicmFkaXgiLCJyaWdodCJdKSxhLmlkPWUuaWR8fCIiLGEubG9jYWxlPWUubG9jYWxlfHwiIixhLm1heEg9KDAscy5nZXRNZWFzdXJlbWVudCkoZS5tYXhILCIwcHQiKSxhLm1heFc9KDAscy5nZXRNZWFzdXJlbWVudCkoZS5tYXhXLCIwcHQiKSxhLm1pbkg9KDAscy5nZXRNZWFzdXJlbWVudCkoZS5taW5ILCIwcHQiKSxhLm1pblc9KDAscy5nZXRNZWFzdXJlbWVudCkoZS5taW5XLCIwcHQiKSxhLm5hbWU9ZS5uYW1lfHwiIixhLnByZXNlbmNlPSgwLHMuZ2V0U3RyaW5nT3B0aW9uKShlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pLGEucmVsZXZhbnQ9KDAscy5nZXRSZWxldmFudCkoZS5yZWxldmFudCksYS5yb3RhdGU9KDAscy5nZXRJbnRlZ2VyKSh7ZGF0YTplLnJvdGF0ZSxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTpmdW5jdGlvbihlKXtyZXR1cm4gZSU5MD09MH19KSxhLnVzZT1lLnVzZXx8IiIsYS51c2VocmVmPWUudXNlaHJlZnx8IiIsYS53PWUudz8oMCxzLmdldE1lYXN1cmVtZW50KShlLncpOiIiLGEueD0oMCxzLmdldE1lYXN1cmVtZW50KShlLngsIjBwdCIpLGEueT0oMCxzLmdldE1lYXN1cmVtZW50KShlLnksIjBwdCIpLGEuYXNzaXN0PW51bGwsYS5ib3JkZXI9bnVsbCxhLmNhcHRpb249bnVsbCxhLmRlc2M9bnVsbCxhLmV4dHJhcz1udWxsLGEuZm9udD1udWxsLGEua2VlcD1udWxsLGEubWFyZ2luPW51bGwsYS5wYXJhPW51bGwsYS50cmF2ZXJzYWw9bnVsbCxhLnVpPW51bGwsYS52YWx1ZT1udWxsLGEuc2V0UHJvcGVydHk9bmV3IG4uWEZBT2JqZWN0QXJyYXksYX1yZXR1cm4gdihyLFt7a2V5Om4uJHNldFZhbHVlLHZhbHVlOmZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCl7cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiB0LnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIGUudG9TdHJpbmcoKX0sdH0oKGZ1bmN0aW9uKGUpe18odGhpcyxlKX0pKX0se2tleTpuLiR0b0hUTUwsdmFsdWU6ZnVuY3Rpb24oZSl7aWYoTih0aGlzKSwiaGlkZGVuIj09PXRoaXMucHJlc2VuY2V8fCJpbmFjdGl2ZSI9PT10aGlzLnByZXNlbmNlKXJldHVybiBzLkhUTUxSZXN1bHQuRU1QVFk7KDAsby5maXhEaW1lbnNpb25zKSh0aGlzKSx0aGlzW24uJHB1c2hQYXJhXSgpO3ZhciB0PXRoaXMudyxyPXRoaXMuaCxhPSgwLG8ubGF5b3V0Tm9kZSkodGhpcyxlKSxjPWEudyx1PWEuaCxsPWEuaXNCcm9rZW47aWYoYyYmIiI9PT10aGlzLncpe2lmKGwmJnRoaXNbbi4kZ2V0U3ViZm9ybVBhcmVudF0oKVtuLiRpc1RoZXJlTW9yZVdpZHRoXSgpKXJldHVybiB0aGlzW24uJHBvcFBhcmFdKCkscy5IVE1MUmVzdWx0LkZBSUxVUkU7dGhpcy53PWN9aWYodSYmIiI9PT10aGlzLmgmJih0aGlzLmg9dSksJCh0aGlzKSwhKDAsaS5jaGVja0RpbWVuc2lvbnMpKHRoaXMsZSkpcmV0dXJuIHRoaXMudz10LHRoaXMuaD1yLHRoaXNbbi4kcG9wUGFyYV0oKSxzLkhUTUxSZXN1bHQuRkFJTFVSRTtYKHRoaXMpO3ZhciBmPSgwLG8udG9TdHlsZSkodGhpcywiZm9udCIsImhBbGlnbiIsImRpbWVuc2lvbnMiLCJwb3NpdGlvbiIsInByZXNlbmNlIiwicm90YXRlIiwiYW5jaG9yVHlwZSIsImJvcmRlciIsIm1hcmdpbiIpOygwLG8uc2V0TWluTWF4RGltZW5zaW9ucykodGhpcyxmKSxmLm1hcmdpbiYmKGYucGFkZGluZz1mLm1hcmdpbixkZWxldGUgZi5tYXJnaW4pO3ZhciBoPVsieGZhRHJhdyJdO3RoaXMuZm9udCYmaC5wdXNoKCJ4ZmFGb250IiksKDAsby5pc1ByaW50T25seSkodGhpcykmJmgucHVzaCgieGZhUHJpbnRPbmx5Iik7dmFyIGQ9e3N0eWxlOmYsaWQ6dGhpc1tuLiR1aWRdLGNsYXNzOmh9O3RoaXMubmFtZSYmKGQueGZhTmFtZT10aGlzLm5hbWUpO3ZhciBwPXtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6ZCxjaGlsZHJlbjpbXX07RCh0aGlzLGQpO3ZhciBnPSgwLG8uY29tcHV0ZUJib3gpKHRoaXMscCxlKSx2PXRoaXMudmFsdWU/dGhpcy52YWx1ZVtuLiR0b0hUTUxdKGUpLmh0bWw6bnVsbDtyZXR1cm4gbnVsbD09PXY/KHRoaXMudz10LHRoaXMuaD1yLHRoaXNbbi4kcG9wUGFyYV0oKSxzLkhUTUxSZXN1bHQuc3VjY2VzcygoMCxvLmNyZWF0ZVdyYXBwZXIpKHRoaXMscCksZykpOihwLmNoaWxkcmVuLnB1c2godiksKDAsby5zZXRQYXJhKSh0aGlzLGYsdiksdGhpcy53PXQsdGhpcy5oPXIsdGhpc1tuLiRwb3BQYXJhXSgpLHMuSFRNTFJlc3VsdC5zdWNjZXNzKCgwLG8uY3JlYXRlV3JhcHBlcikodGhpcyxwKSxnKSl9fV0pLHJ9KG4uWEZBT2JqZWN0KSxBZT1mdW5jdGlvbihlKXttKHIsZSk7dmFyIHQ9dyhyKTtmdW5jdGlvbiByKGUpe3ZhciBuO3JldHVybiB5KHRoaXMsciksKG49dC5jYWxsKHRoaXMsRiwiZWRnZSIsITApKS5jYXA9KDAscy5nZXRTdHJpbmdPcHRpb24pKGUuY2FwLFsic3F1YXJlIiwiYnV0dCIsInJvdW5kIl0pLG4uaWQ9ZS5pZHx8IiIsbi5wcmVzZW5jZT0oMCxzLmdldFN0cmluZ09wdGlvbikoZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKSxuLnN0cm9rZT0oMCxzLmdldFN0cmluZ09wdGlvbikoZS5zdHJva2UsWyJzb2xpZCIsImRhc2hEb3QiLCJkYXNoRG90RG90IiwiZGFzaGVkIiwiZG90dGVkIiwiZW1ib3NzZWQiLCJldGNoZWQiLCJsb3dlcmVkIiwicmFpc2VkIl0pLG4udGhpY2tuZXNzPSgwLHMuZ2V0TWVhc3VyZW1lbnQpKGUudGhpY2tuZXNzLCIwLjVwdCIpLG4udXNlPWUudXNlfHwiIixuLnVzZWhyZWY9ZS51c2VocmVmfHwiIixuLmNvbG9yPW51bGwsbi5leHRyYXM9bnVsbCxufXJldHVybiB2KHIsW3trZXk6bi4kdG9TdHlsZSx2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPSgwLG8udG9TdHlsZSkodGhpcywidmlzaWJpbGl0eSIpO2lmKE9iamVjdC5hc3NpZ24oZSx7bGluZWNhcDp0aGlzLmNhcCx3aWR0aDooMCxvLm1lYXN1cmVUb1N0cmluZykodGhpcy50aGlja25lc3MpLGNvbG9yOnRoaXMuY29sb3I/dGhpcy5jb2xvcltuLiR0b1N0eWxlXSgpOiIjMDAwMDAwIixzdHlsZToiIn0pLCJ2aXNpYmxlIiE9PXRoaXMucHJlc2VuY2UpZS5zdHlsZT0ibm9uZSI7ZWxzZSBzd2l0Y2godGhpcy5zdHJva2Upe2Nhc2Uic29saWQiOmUuc3R5bGU9InNvbGlkIjticmVhaztjYXNlImRhc2hEb3QiOmNhc2UiZGFzaERvdERvdCI6Y2FzZSJkYXNoZWQiOmUuc3R5bGU9ImRhc2hlZCI7YnJlYWs7Y2FzZSJkb3R0ZWQiOmUuc3R5bGU9ImRvdHRlZCI7YnJlYWs7Y2FzZSJlbWJvc3NlZCI6ZS5zdHlsZT0icmlkZ2UiO2JyZWFrO2Nhc2UiZXRjaGVkIjplLnN0eWxlPSJncm9vdmUiO2JyZWFrO2Nhc2UibG93ZXJlZCI6ZS5zdHlsZT0iaW5zZXQiO2JyZWFrO2Nhc2UicmFpc2VkIjplLnN0eWxlPSJvdXRzZXQifXJldHVybiBlfX1dKSxyfShuLlhGQU9iamVjdCksQ2U9ZnVuY3Rpb24oZSl7bShyLGUpO3ZhciB0PXcocik7ZnVuY3Rpb24gcihlKXt2YXIgbjtyZXR1cm4geSh0aGlzLHIpLChuPXQuY2FsbCh0aGlzLEYsImVuY29kaW5nIixbImFkYmUueDUwOS5yc2Ffc2hhMSIsImFkYmUucGtjczcuZGV0YWNoZWQiLCJhZGJlLnBrY3M3LnNoYTEiXSkpLmlkPWUuaWR8fCIiLG4udXNlPWUudXNlfHwiIixuLnVzZWhyZWY9ZS51c2VocmVmfHwiIixufXJldHVybiB2KHIpfShuLk9wdGlvbk9iamVjdCksRmU9ZnVuY3Rpb24oZSl7bShyLGUpO3ZhciB0PXcocik7ZnVuY3Rpb24gcihlKXt2YXIgYTtyZXR1cm4geSh0aGlzLHIpLChhPXQuY2FsbCh0aGlzLEYsImVuY29kaW5ncyIsITApKS5pZD1lLmlkfHwiIixhLnR5cGU9KDAscy5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSksYS51c2U9ZS51c2V8fCIiLGEudXNlaHJlZj1lLnVzZWhyZWZ8fCIiLGEuZW5jb2Rpbmc9bmV3IG4uWEZBT2JqZWN0QXJyYXksYX1yZXR1cm4gdihyKX0obi5YRkFPYmplY3QpLFBlPWZ1bmN0aW9uKGUpe20ocixlKTt2YXIgdD13KHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG47cmV0dXJuIHkodGhpcyxyKSwobj10LmNhbGwodGhpcyxGLCJlbmNyeXB0IiwhMCkpLmlkPWUuaWR8fCIiLG4udXNlPWUudXNlfHwiIixuLnVzZWhyZWY9ZS51c2VocmVmfHwiIixuLmNlcnRpZmljYXRlPW51bGwsbn1yZXR1cm4gdihyKX0obi5YRkFPYmplY3QpLFRlPWZ1bmN0aW9uKGUpe20ocixlKTt2YXIgdD13KHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG47cmV0dXJuIHkodGhpcyxyKSwobj10LmNhbGwodGhpcyxGLCJlbmNyeXB0RGF0YSIsITApKS5pZD1lLmlkfHwiIixuLm9wZXJhdGlvbj0oMCxzLmdldFN0cmluZ09wdGlvbikoZS5vcGVyYXRpb24sWyJlbmNyeXB0IiwiZGVjcnlwdCJdKSxuLnRhcmdldD1lLnRhcmdldHx8IiIsbi51c2U9ZS51c2V8fCIiLG4udXNlaHJlZj1lLnVzZWhyZWZ8fCIiLG4uZmlsdGVyPW51bGwsbi5tYW5pZmVzdD1udWxsLG59cmV0dXJuIHYocil9KG4uWEZBT2JqZWN0KSxJZT1mdW5jdGlvbihlKXttKHIsZSk7dmFyIHQ9dyhyKTtmdW5jdGlvbiByKGUpe3ZhciBhO3JldHVybiB5KHRoaXMsciksKGE9dC5jYWxsKHRoaXMsRiwiZW5jcnlwdGlvbiIsITApKS5pZD1lLmlkfHwiIixhLnR5cGU9KDAscy5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSksYS51c2U9ZS51c2V8fCIiLGEudXNlaHJlZj1lLnVzZWhyZWZ8fCIiLGEuY2VydGlmaWNhdGU9bmV3IG4uWEZBT2JqZWN0QXJyYXksYX1yZXR1cm4gdihyKX0obi5YRkFPYmplY3QpLEVlPWZ1bmN0aW9uKGUpe20ocixlKTt2YXIgdD13KHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG47cmV0dXJuIHkodGhpcyxyKSwobj10LmNhbGwodGhpcyxGLCJlbmNyeXB0aW9uTWV0aG9kIixbIiIsIkFFUzI1Ni1DQkMiLCJUUklQTEVERVMtQ0JDIiwiQUVTMTI4LUNCQyIsIkFFUzE5Mi1DQkMiXSkpLmlkPWUuaWR8fCIiLG4udXNlPWUudXNlfHwiIixuLnVzZWhyZWY9ZS51c2VocmVmfHwiIixufXJldHVybiB2KHIpfShuLk9wdGlvbk9iamVjdCksamU9ZnVuY3Rpb24oZSl7bShyLGUpO3ZhciB0PXcocik7ZnVuY3Rpb24gcihlKXt2YXIgYTtyZXR1cm4geSh0aGlzLHIpLChhPXQuY2FsbCh0aGlzLEYsImVuY3J5cHRpb25NZXRob2RzIiwhMCkpLmlkPWUuaWR8fCIiLGEudHlwZT0oMCxzLmdldFN0cmluZ09wdGlvbikoZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKSxhLnVzZT1lLnVzZXx8IiIsYS51c2VocmVmPWUudXNlaHJlZnx8IiIsYS5lbmNyeXB0aW9uTWV0aG9kPW5ldyBuLlhGQU9iamVjdEFycmF5LGF9cmV0dXJuIHYocil9KG4uWEZBT2JqZWN0KSxNZT1mdW5jdGlvbihlKXttKHIsZSk7dmFyIHQ9dyhyKTtmdW5jdGlvbiByKGUpe3ZhciBuO3JldHVybiB5KHRoaXMsciksKG49dC5jYWxsKHRoaXMsRiwiZXZlbnQiLCEwKSkuYWN0aXZpdHk9KDAscy5nZXRTdHJpbmdPcHRpb24pKGUuYWN0aXZpdHksWyJjbGljayIsImNoYW5nZSIsImRvY0Nsb3NlIiwiZG9jUmVhZHkiLCJlbnRlciIsImV4aXQiLCJmdWxsIiwiaW5kZXhDaGFuZ2UiLCJpbml0aWFsaXplIiwibW91c2VEb3duIiwibW91c2VFbnRlciIsIm1vdXNlRXhpdCIsIm1vdXNlVXAiLCJwb3N0RXhlY3V0ZSIsInBvc3RPcGVuIiwicG9zdFByaW50IiwicG9zdFNhdmUiLCJwb3N0U2lnbiIsInBvc3RTdWJtaXQiLCJwcmVFeGVjdXRlIiwicHJlT3BlbiIsInByZVByaW50IiwicHJlU2F2ZSIsInByZVNpZ24iLCJwcmVTdWJtaXQiLCJyZWFkeSIsInZhbGlkYXRpb25TdGF0ZSJdKSxuLmlkPWUuaWR8fCIiLG4ubGlzdGVuPSgwLHMuZ2V0U3RyaW5nT3B0aW9uKShlLmxpc3RlbixbInJlZk9ubHkiLCJyZWZBbmREZXNjZW5kZW50cyJdKSxuLm5hbWU9ZS5uYW1lfHwiIixuLnJlZj1lLnJlZnx8IiIsbi51c2U9ZS51c2V8fCIiLG4udXNlaHJlZj1lLnVzZWhyZWZ8fCIiLG4uZXh0cmFzPW51bGwsbi5lbmNyeXB0RGF0YT1udWxsLG4uZXhlY3V0ZT1udWxsLG4uc2NyaXB0PW51bGwsbi5zaWduRGF0YT1udWxsLG4uc3VibWl0PW51bGwsbn1yZXR1cm4gdihyKX0obi5YRkFPYmplY3QpLF9lPWZ1bmN0aW9uKGUpe20ocixlKTt2YXIgdD13KHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG47cmV0dXJuIHkodGhpcyxyKSwobj10LmNhbGwodGhpcyxGLCJleERhdGEiKSkuY29udGVudFR5cGU9ZS5jb250ZW50VHlwZXx8IiIsbi5ocmVmPWUuaHJlZnx8IiIsbi5pZD1lLmlkfHwiIixuLm1heExlbmd0aD0oMCxzLmdldEludGVnZXIpKHtkYXRhOmUubWF4TGVuZ3RoLGRlZmF1bHRWYWx1ZTotMSx2YWxpZGF0ZTpmdW5jdGlvbihlKXtyZXR1cm4gZT49LTF9fSksbi5uYW1lPWUubmFtZXx8IiIsbi5yaWQ9ZS5yaWR8fCIiLG4udHJhbnNmZXJFbmNvZGluZz0oMCxzLmdldFN0cmluZ09wdGlvbikoZS50cmFuc2ZlckVuY29kaW5nLFsibm9uZSIsImJhc2U2NCIsInBhY2thZ2UiXSksbi51c2U9ZS51c2V8fCIiLG4udXNlaHJlZj1lLnVzZWhyZWZ8fCIiLG59cmV0dXJuIHYocixbe2tleTpuLiRpc0NEQVRBWG1sLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuInRleHQvaHRtbCI9PT10aGlzLmNvbnRlbnRUeXBlfX0se2tleTpuLiRvbkNoaWxkLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybigidGV4dC9odG1sIj09PXRoaXMuY29udGVudFR5cGUmJmVbbi4kbmFtZXNwYWNlSWRdPT09YS5OYW1lc3BhY2VJZHMueGh0bWwuaWR8fCJ0ZXh0L3htbCI9PT10aGlzLmNvbnRlbnRUeXBlKSYmKHRoaXNbbi4kY29udGVudF09ZSwhMCl9fSx7a2V5Om4uJHRvSFRNTCx2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4idGV4dC9odG1sIj09PXRoaXMuY29udGVudFR5cGUmJnRoaXNbbi4kY29udGVudF0/dGhpc1tuLiRjb250ZW50XVtuLiR0b0hUTUxdKGUpOnMuSFRNTFJlc3VsdC5FTVBUWX19XSkscn0obi5Db250ZW50T2JqZWN0KSxMZT1mdW5jdGlvbihlKXttKHIsZSk7dmFyIHQ9dyhyKTtmdW5jdGlvbiByKGUpe3ZhciBhO3JldHVybiB5KHRoaXMsciksKGE9dC5jYWxsKHRoaXMsRiwiZXhPYmplY3QiLCEwKSkuYXJjaGl2ZT1lLmFyY2hpdmV8fCIiLGEuY2xhc3NJZD1lLmNsYXNzSWR8fCIiLGEuY29kZUJhc2U9ZS5jb2RlQmFzZXx8IiIsYS5jb2RlVHlwZT1lLmNvZGVUeXBlfHwiIixhLmlkPWUuaWR8fCIiLGEubmFtZT1lLm5hbWV8fCIiLGEudXNlPWUudXNlfHwiIixhLnVzZWhyZWY9ZS51c2VocmVmfHwiIixhLmV4dHJhcz1udWxsLGEuYm9vbGVhbj1uZXcgbi5YRkFPYmplY3RBcnJheSxhLmRhdGU9bmV3IG4uWEZBT2JqZWN0QXJyYXksYS5kYXRlVGltZT1uZXcgbi5YRkFPYmplY3RBcnJheSxhLmRlY2ltYWw9bmV3IG4uWEZBT2JqZWN0QXJyYXksYS5leERhdGE9bmV3IG4uWEZBT2JqZWN0QXJyYXksYS5leE9iamVjdD1uZXcgbi5YRkFPYmplY3RBcnJheSxhLmZsb2F0PW5ldyBuLlhGQU9iamVjdEFycmF5LGEuaW1hZ2U9bmV3IG4uWEZBT2JqZWN0QXJyYXksYS5pbnRlZ2VyPW5ldyBuLlhGQU9iamVjdEFycmF5LGEudGV4dD1uZXcgbi5YRkFPYmplY3RBcnJheSxhLnRpbWU9bmV3IG4uWEZBT2JqZWN0QXJyYXksYX1yZXR1cm4gdihyKX0obi5YRkFPYmplY3QpLFJlPWZ1bmN0aW9uKGUpe20ocixlKTt2YXIgdD13KHIpO2Z1bmN0aW9uIHIoZSl7dmFyIGE7cmV0dXJuIHkodGhpcyxyKSwoYT10LmNhbGwodGhpcyxGLCJleGNsR3JvdXAiLCEwKSkuYWNjZXNzPSgwLHMuZ2V0U3RyaW5nT3B0aW9uKShlLmFjY2VzcyxbIm9wZW4iLCJub25JbnRlcmFjdGl2ZSIsInByb3RlY3RlZCIsInJlYWRPbmx5Il0pLGEuYWNjZXNzS2V5PWUuYWNjZXNzS2V5fHwiIixhLmFuY2hvclR5cGU9KDAscy5nZXRTdHJpbmdPcHRpb24pKGUuYW5jaG9yVHlwZSxbInRvcExlZnQiLCJib3R0b21DZW50ZXIiLCJib3R0b21MZWZ0IiwiYm90dG9tUmlnaHQiLCJtaWRkbGVDZW50ZXIiLCJtaWRkbGVMZWZ0IiwibWlkZGxlUmlnaHQiLCJ0b3BDZW50ZXIiLCJ0b3BSaWdodCJdKSxhLmNvbFNwYW49KDAscy5nZXRJbnRlZ2VyKSh7ZGF0YTplLmNvbFNwYW4sZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuIGU+PTF8fC0xPT09ZX19KSxhLmg9ZS5oPygwLHMuZ2V0TWVhc3VyZW1lbnQpKGUuaCk6IiIsYS5oQWxpZ249KDAscy5nZXRTdHJpbmdPcHRpb24pKGUuaEFsaWduLFsibGVmdCIsImNlbnRlciIsImp1c3RpZnkiLCJqdXN0aWZ5QWxsIiwicmFkaXgiLCJyaWdodCJdKSxhLmlkPWUuaWR8fCIiLGEubGF5b3V0PSgwLHMuZ2V0U3RyaW5nT3B0aW9uKShlLmxheW91dCxbInBvc2l0aW9uIiwibHItdGIiLCJybC1yb3ciLCJybC10YiIsInJvdyIsInRhYmxlIiwidGIiXSksYS5tYXhIPSgwLHMuZ2V0TWVhc3VyZW1lbnQpKGUubWF4SCwiMHB0IiksYS5tYXhXPSgwLHMuZ2V0TWVhc3VyZW1lbnQpKGUubWF4VywiMHB0IiksYS5taW5IPSgwLHMuZ2V0TWVhc3VyZW1lbnQpKGUubWluSCwiMHB0IiksYS5taW5XPSgwLHMuZ2V0TWVhc3VyZW1lbnQpKGUubWluVywiMHB0IiksYS5uYW1lPWUubmFtZXx8IiIsYS5wcmVzZW5jZT0oMCxzLmdldFN0cmluZ09wdGlvbikoZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKSxhLnJlbGV2YW50PSgwLHMuZ2V0UmVsZXZhbnQpKGUucmVsZXZhbnQpLGEudXNlPWUudXNlfHwiIixhLnVzZWhyZWY9ZS51c2VocmVmfHwiIixhLnc9ZS53PygwLHMuZ2V0TWVhc3VyZW1lbnQpKGUudyk6IiIsYS54PSgwLHMuZ2V0TWVhc3VyZW1lbnQpKGUueCwiMHB0IiksYS55PSgwLHMuZ2V0TWVhc3VyZW1lbnQpKGUueSwiMHB0IiksYS5hc3Npc3Q9bnVsbCxhLmJpbmQ9bnVsbCxhLmJvcmRlcj1udWxsLGEuY2FsY3VsYXRlPW51bGwsYS5jYXB0aW9uPW51bGwsYS5kZXNjPW51bGwsYS5leHRyYXM9bnVsbCxhLm1hcmdpbj1udWxsLGEucGFyYT1udWxsLGEudHJhdmVyc2FsPW51bGwsYS52YWxpZGF0ZT1udWxsLGEuY29ubmVjdD1uZXcgbi5YRkFPYmplY3RBcnJheSxhLmV2ZW50PW5ldyBuLlhGQU9iamVjdEFycmF5LGEuZmllbGQ9bmV3IG4uWEZBT2JqZWN0QXJyYXksYS5zZXRQcm9wZXJ0eT1uZXcgbi5YRkFPYmplY3RBcnJheSxhfXJldHVybiB2KHIsW3trZXk6bi4kaXNCaW5kYWJsZSx2YWx1ZTpmdW5jdGlvbigpe3JldHVybiEwfX0se2tleTpuLiRoYXNTZXR0YWJsZVZhbHVlLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuITB9fSx7a2V5Om4uJHNldFZhbHVlLHZhbHVlOmZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCl7cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiB0LnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIGUudG9TdHJpbmcoKX0sdH0oKGZ1bmN0aW9uKGUpe3ZhciB0LHI9Tyh0aGlzLmZpZWxkLmNoaWxkcmVuKTt0cnl7Zm9yKHIucygpOyEodD1yLm4oKSkuZG9uZTspe3ZhciBhPXQudmFsdWU7aWYoIWEudmFsdWUpe3ZhciBpPW5ldyBWdCh7fSk7YVtuLiRhcHBlbmRDaGlsZF0oaSksYS52YWx1ZT1pfWEudmFsdWVbbi4kc2V0VmFsdWVdKGUpfX1jYXRjaChlKXtyLmUoZSl9ZmluYWxseXtyLmYoKX19KSl9LHtrZXk6bi4kaXNUaGVyZU1vcmVXaWR0aCx2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmxheW91dC5lbmRzV2l0aCgiLXRiIikmJjA9PT10aGlzW24uJGV4dHJhXS5hdHRlbXB0JiZ0aGlzW24uJGV4dHJhXS5udW1iZXJJbkxpbmU+MHx8dGhpc1tuLiRnZXRQYXJlbnRdKClbbi4kaXNUaGVyZU1vcmVXaWR0aF0oKX19LHtrZXk6bi4kaXNTcGxpdHRhYmxlLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpc1tuLiRnZXRTdWJmb3JtUGFyZW50XSgpO3JldHVybiEhZVtuLiRpc1NwbGl0dGFibGVdKCkmJih2b2lkIDAhPT10aGlzW24uJGV4dHJhXS5faXNTcGxpdHRhYmxlP3RoaXNbbi4kZXh0cmFdLl9pc1NwbGl0dGFibGU6InBvc2l0aW9uIj09PXRoaXMubGF5b3V0fHx0aGlzLmxheW91dC5pbmNsdWRlcygicm93Iik/KHRoaXNbbi4kZXh0cmFdLl9pc1NwbGl0dGFibGU9ITEsITEpOiEoZS5sYXlvdXQmJmUubGF5b3V0LmVuZHNXaXRoKCItdGIiKSYmMCE9PWVbbi4kZXh0cmFdLm51bWJlckluTGluZXx8KHRoaXNbbi4kZXh0cmFdLl9pc1NwbGl0dGFibGU9ITAsMCkpKX19LHtrZXk6bi4kZmx1c2hIVE1MLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuKDAsaS5mbHVzaEhUTUwpKHRoaXMpfX0se2tleTpuLiRhZGRIVE1MLHZhbHVlOmZ1bmN0aW9uKGUsdCl7KDAsaS5hZGRIVE1MKSh0aGlzLGUsdCl9fSx7a2V5Om4uJGdldEF2YWlsYWJsZVNwYWNlLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuKDAsaS5nZXRBdmFpbGFibGVTcGFjZSkodGhpcyl9fSx7a2V5Om4uJHRvSFRNTCx2YWx1ZTpmdW5jdGlvbihlKXtpZihOKHRoaXMpLCJoaWRkZW4iPT09dGhpcy5wcmVzZW5jZXx8ImluYWN0aXZlIj09PXRoaXMucHJlc2VuY2V8fDA9PT10aGlzLmh8fDA9PT10aGlzLncpcmV0dXJuIHMuSFRNTFJlc3VsdC5FTVBUWTsoMCxvLmZpeERpbWVuc2lvbnMpKHRoaXMpO3ZhciB0PVtdLHI9e2lkOnRoaXNbbi4kdWlkXSxjbGFzczpbXX07KDAsby5zZXRBY2Nlc3MpKHRoaXMsci5jbGFzcyksdGhpc1tuLiRleHRyYV18fCh0aGlzW24uJGV4dHJhXT1PYmplY3QuY3JlYXRlKG51bGwpKSxPYmplY3QuYXNzaWduKHRoaXNbbi4kZXh0cmFdLHtjaGlsZHJlbjp0LGF0dHJpYnV0ZXM6cixhdHRlbXB0OjAsbGluZTpudWxsLG51bWJlckluTGluZTowLGF2YWlsYWJsZVNwYWNlOnt3aWR0aDpNYXRoLm1pbih0aGlzLnd8fDEvMCxlLndpZHRoKSxoZWlnaHQ6TWF0aC5taW4odGhpcy5ofHwxLzAsZS5oZWlnaHQpfSx3aWR0aDowLGhlaWdodDowLHByZXZIZWlnaHQ6MCxjdXJyZW50V2lkdGg6MH0pO3ZhciBhPXRoaXNbbi4kaXNTcGxpdHRhYmxlXSgpO2lmKGF8fCQodGhpcyksISgwLGkuY2hlY2tEaW1lbnNpb25zKSh0aGlzLGUpKXJldHVybiBzLkhUTUxSZXN1bHQuRkFJTFVSRTt2YXIgYz1uZXcgU2V0KFsiZmllbGQiXSk7aWYodGhpcy5sYXlvdXQuaW5jbHVkZXMoInJvdyIpKXt2YXIgdT10aGlzW24uJGdldFN1YmZvcm1QYXJlbnRdKCkuY29sdW1uV2lkdGhzO0FycmF5LmlzQXJyYXkodSkmJnUubGVuZ3RoPjAmJih0aGlzW24uJGV4dHJhXS5jb2x1bW5XaWR0aHM9dSx0aGlzW24uJGV4dHJhXS5jdXJyZW50Q29sdW1uPTApfXZhciBsPSgwLG8udG9TdHlsZSkodGhpcywiYW5jaG9yVHlwZSIsImRpbWVuc2lvbnMiLCJwb3NpdGlvbiIsInByZXNlbmNlIiwiYm9yZGVyIiwibWFyZ2luIiwiaEFsaWduIiksZj1bInhmYUV4Y2xncm91cCJdLGg9KDAsby5sYXlvdXRDbGFzcykodGhpcyk7aCYmZi5wdXNoKGgpLCgwLG8uaXNQcmludE9ubHkpKHRoaXMpJiZmLnB1c2goInhmYVByaW50T25seSIpLHIuc3R5bGU9bCxyLmNsYXNzPWYsdGhpcy5uYW1lJiYoci54ZmFOYW1lPXRoaXMubmFtZSksdGhpc1tuLiRwdXNoUGFyYV0oKTtmb3IodmFyIGQ9ImxyLXRiIj09PXRoaXMubGF5b3V0fHwicmwtdGIiPT09dGhpcy5sYXlvdXQscD1kPzI6MTt0aGlzW24uJGV4dHJhXS5hdHRlbXB0PHA7dGhpc1tuLiRleHRyYV0uYXR0ZW1wdCsrKXtkJiYxPT09dGhpc1tuLiRleHRyYV0uYXR0ZW1wdCYmKHRoaXNbbi4kZXh0cmFdLm51bWJlckluTGluZT0wKTt2YXIgZz10aGlzW24uJGNoaWxkcmVuVG9IVE1MXSh7ZmlsdGVyOmMsaW5jbHVkZTohMH0pO2lmKGcuc3VjY2VzcylicmVhaztpZihnLmlzQnJlYWsoKSlyZXR1cm4gdGhpc1tuLiRwb3BQYXJhXSgpLGc7aWYoZCYmMD09PXRoaXNbbi4kZXh0cmFdLmF0dGVtcHQmJjA9PT10aGlzW24uJGV4dHJhXS5udW1iZXJJbkxpbmUmJiF0aGlzW24uJGdldFRlbXBsYXRlUm9vdF0oKVtuLiRleHRyYV0ubm9MYXlvdXRGYWlsdXJlKXt0aGlzW24uJGV4dHJhXS5hdHRlbXB0PXA7YnJlYWt9fWlmKHRoaXNbbi4kcG9wUGFyYV0oKSxhfHxYKHRoaXMpLHRoaXNbbi4kZXh0cmFdLmF0dGVtcHQ9PT1wKXJldHVybiBhfHxkZWxldGUgdGhpc1tuLiRleHRyYV0scy5IVE1MUmVzdWx0LkZBSUxVUkU7dmFyIHY9MCx5PTA7dGhpcy5tYXJnaW4mJih2PXRoaXMubWFyZ2luLmxlZnRJbnNldCt0aGlzLm1hcmdpbi5yaWdodEluc2V0LHk9dGhpcy5tYXJnaW4udG9wSW5zZXQrdGhpcy5tYXJnaW4uYm90dG9tSW5zZXQpO3ZhciBtPU1hdGgubWF4KHRoaXNbbi4kZXh0cmFdLndpZHRoK3YsdGhpcy53fHwwKSxiPU1hdGgubWF4KHRoaXNbbi4kZXh0cmFdLmhlaWdodCt5LHRoaXMuaHx8MCksdz1bdGhpcy54LHRoaXMueSxtLGJdOyIiPT09dGhpcy53JiYobC53aWR0aD0oMCxvLm1lYXN1cmVUb1N0cmluZykobSkpLCIiPT09dGhpcy5oJiYobC5oZWlnaHQ9KDAsby5tZWFzdXJlVG9TdHJpbmcpKGIpKTt2YXIgaz17bmFtZToiZGl2IixhdHRyaWJ1dGVzOnIsY2hpbGRyZW46dH07cmV0dXJuIEQodGhpcyxyKSxkZWxldGUgdGhpc1tuLiRleHRyYV0scy5IVE1MUmVzdWx0LnN1Y2Nlc3MoKDAsby5jcmVhdGVXcmFwcGVyKSh0aGlzLGspLHcpfX1dKSxyfShuLlhGQU9iamVjdCksTmU9ZnVuY3Rpb24oZSl7bShyLGUpO3ZhciB0PXcocik7ZnVuY3Rpb24gcihlKXt2YXIgbjtyZXR1cm4geSh0aGlzLHIpLChuPXQuY2FsbCh0aGlzLEYsImV4ZWN1dGUiKSkuY29ubmVjdGlvbj1lLmNvbm5lY3Rpb258fCIiLG4uZXhlY3V0ZVR5cGU9KDAscy5nZXRTdHJpbmdPcHRpb24pKGUuZXhlY3V0ZVR5cGUsWyJpbXBvcnQiLCJyZW1lcmdlIl0pLG4uaWQ9ZS5pZHx8IiIsbi5ydW5BdD0oMCxzLmdldFN0cmluZ09wdGlvbikoZS5ydW5BdCxbImNsaWVudCIsImJvdGgiLCJzZXJ2ZXIiXSksbi51c2U9ZS51c2V8fCIiLG4udXNlaHJlZj1lLnVzZWhyZWZ8fCIiLG59cmV0dXJuIHYocil9KG4uWEZBT2JqZWN0KSxEZT1mdW5jdGlvbihlKXttKHIsZSk7dmFyIHQ9dyhyKTtmdW5jdGlvbiByKGUpe3ZhciBhO3JldHVybiB5KHRoaXMsciksKGE9dC5jYWxsKHRoaXMsRiwiZXh0cmFzIiwhMCkpLmlkPWUuaWR8fCIiLGEubmFtZT1lLm5hbWV8fCIiLGEudXNlPWUudXNlfHwiIixhLnVzZWhyZWY9ZS51c2VocmVmfHwiIixhLmJvb2xlYW49bmV3IG4uWEZBT2JqZWN0QXJyYXksYS5kYXRlPW5ldyBuLlhGQU9iamVjdEFycmF5LGEuZGF0ZVRpbWU9bmV3IG4uWEZBT2JqZWN0QXJyYXksYS5kZWNpbWFsPW5ldyBuLlhGQU9iamVjdEFycmF5LGEuZXhEYXRhPW5ldyBuLlhGQU9iamVjdEFycmF5LGEuZXh0cmFzPW5ldyBuLlhGQU9iamVjdEFycmF5LGEuZmxvYXQ9bmV3IG4uWEZBT2JqZWN0QXJyYXksYS5pbWFnZT1uZXcgbi5YRkFPYmplY3RBcnJheSxhLmludGVnZXI9bmV3IG4uWEZBT2JqZWN0QXJyYXksYS50ZXh0PW5ldyBuLlhGQU9iamVjdEFycmF5LGEudGltZT1uZXcgbi5YRkFPYmplY3RBcnJheSxhfXJldHVybiB2KHIpfShuLlhGQU9iamVjdCksQmU9ZnVuY3Rpb24oZSl7bShyLGUpO3ZhciB0PXcocik7ZnVuY3Rpb24gcihlKXt2YXIgYTtyZXR1cm4geSh0aGlzLHIpLChhPXQuY2FsbCh0aGlzLEYsImZpZWxkIiwhMCkpLmFjY2Vzcz0oMCxzLmdldFN0cmluZ09wdGlvbikoZS5hY2Nlc3MsWyJvcGVuIiwibm9uSW50ZXJhY3RpdmUiLCJwcm90ZWN0ZWQiLCJyZWFkT25seSJdKSxhLmFjY2Vzc0tleT1lLmFjY2Vzc0tleXx8IiIsYS5hbmNob3JUeXBlPSgwLHMuZ2V0U3RyaW5nT3B0aW9uKShlLmFuY2hvclR5cGUsWyJ0b3BMZWZ0IiwiYm90dG9tQ2VudGVyIiwiYm90dG9tTGVmdCIsImJvdHRvbVJpZ2h0IiwibWlkZGxlQ2VudGVyIiwibWlkZGxlTGVmdCIsIm1pZGRsZVJpZ2h0IiwidG9wQ2VudGVyIiwidG9wUmlnaHQiXSksYS5jb2xTcGFuPSgwLHMuZ2V0SW50ZWdlcikoe2RhdGE6ZS5jb2xTcGFuLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmZ1bmN0aW9uKGUpe3JldHVybiBlPj0xfHwtMT09PWV9fSksYS5oPWUuaD8oMCxzLmdldE1lYXN1cmVtZW50KShlLmgpOiIiLGEuaEFsaWduPSgwLHMuZ2V0U3RyaW5nT3B0aW9uKShlLmhBbGlnbixbImxlZnQiLCJjZW50ZXIiLCJqdXN0aWZ5IiwianVzdGlmeUFsbCIsInJhZGl4IiwicmlnaHQiXSksYS5pZD1lLmlkfHwiIixhLmxvY2FsZT1lLmxvY2FsZXx8IiIsYS5tYXhIPSgwLHMuZ2V0TWVhc3VyZW1lbnQpKGUubWF4SCwiMHB0IiksYS5tYXhXPSgwLHMuZ2V0TWVhc3VyZW1lbnQpKGUubWF4VywiMHB0IiksYS5taW5IPSgwLHMuZ2V0TWVhc3VyZW1lbnQpKGUubWluSCwiMHB0IiksYS5taW5XPSgwLHMuZ2V0TWVhc3VyZW1lbnQpKGUubWluVywiMHB0IiksYS5uYW1lPWUubmFtZXx8IiIsYS5wcmVzZW5jZT0oMCxzLmdldFN0cmluZ09wdGlvbikoZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKSxhLnJlbGV2YW50PSgwLHMuZ2V0UmVsZXZhbnQpKGUucmVsZXZhbnQpLGEucm90YXRlPSgwLHMuZ2V0SW50ZWdlcikoe2RhdGE6ZS5yb3RhdGUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuIGUlOTA9PTB9fSksYS51c2U9ZS51c2V8fCIiLGEudXNlaHJlZj1lLnVzZWhyZWZ8fCIiLGEudz1lLnc/KDAscy5nZXRNZWFzdXJlbWVudCkoZS53KToiIixhLng9KDAscy5nZXRNZWFzdXJlbWVudCkoZS54LCIwcHQiKSxhLnk9KDAscy5nZXRNZWFzdXJlbWVudCkoZS55LCIwcHQiKSxhLmFzc2lzdD1udWxsLGEuYmluZD1udWxsLGEuYm9yZGVyPW51bGwsYS5jYWxjdWxhdGU9bnVsbCxhLmNhcHRpb249bnVsbCxhLmRlc2M9bnVsbCxhLmV4dHJhcz1udWxsLGEuZm9udD1udWxsLGEuZm9ybWF0PW51bGwsYS5pdGVtcz1uZXcgbi5YRkFPYmplY3RBcnJheSgyKSxhLmtlZXA9bnVsbCxhLm1hcmdpbj1udWxsLGEucGFyYT1udWxsLGEudHJhdmVyc2FsPW51bGwsYS51aT1udWxsLGEudmFsaWRhdGU9bnVsbCxhLnZhbHVlPW51bGwsYS5iaW5kSXRlbXM9bmV3IG4uWEZBT2JqZWN0QXJyYXksYS5jb25uZWN0PW5ldyBuLlhGQU9iamVjdEFycmF5LGEuZXZlbnQ9bmV3IG4uWEZBT2JqZWN0QXJyYXksYS5zZXRQcm9wZXJ0eT1uZXcgbi5YRkFPYmplY3RBcnJheSxhfXJldHVybiB2KHIsW3trZXk6bi4kaXNCaW5kYWJsZSx2YWx1ZTpmdW5jdGlvbigpe3JldHVybiEwfX0se2tleTpuLiRzZXRWYWx1ZSx2YWx1ZTpmdW5jdGlvbihlKXtmdW5jdGlvbiB0KHQpe3JldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gdC50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiBlLnRvU3RyaW5nKCl9LHR9KChmdW5jdGlvbihlKXtfKHRoaXMsZSl9KSl9LHtrZXk6bi4kdG9IVE1MLHZhbHVlOmZ1bmN0aW9uKGUpe2lmKE4odGhpcyksIXRoaXMudWkpe3ZhciB0O3N3aXRjaCh0aGlzLnVpPW5ldyB6dCh7fSksdGhpcy51aVtuLiRnbG9iYWxEYXRhXT10aGlzW24uJGdsb2JhbERhdGFdLHRoaXNbbi4kYXBwZW5kQ2hpbGRdKHRoaXMudWkpLHRoaXMuaXRlbXMuY2hpbGRyZW4ubGVuZ3RoKXtjYXNlIDA6dD1uZXcgVXQoe30pLHRoaXMudWkudGV4dEVkaXQ9dDticmVhaztjYXNlIDE6dD1uZXcgdWUoe30pLHRoaXMudWkuY2hlY2tCdXR0b249dDticmVhaztjYXNlIDI6dD1uZXcgbGUoe30pLHRoaXMudWkuY2hvaWNlTGlzdD10fXRoaXMudWlbbi4kYXBwZW5kQ2hpbGRdKHQpfWlmKCF0aGlzLnVpfHwiaGlkZGVuIj09PXRoaXMucHJlc2VuY2V8fCJpbmFjdGl2ZSI9PT10aGlzLnByZXNlbmNlfHwwPT09dGhpcy5ofHwwPT09dGhpcy53KXJldHVybiBzLkhUTUxSZXN1bHQuRU1QVFk7dGhpcy5jYXB0aW9uJiZkZWxldGUgdGhpcy5jYXB0aW9uW24uJGV4dHJhXSx0aGlzW24uJHB1c2hQYXJhXSgpO3ZhciByPXRoaXMuY2FwdGlvbj90aGlzLmNhcHRpb25bbi4kdG9IVE1MXShlKS5odG1sOm51bGwsYT10aGlzLncsYz10aGlzLmgsbD0wLGY9MDt0aGlzLm1hcmdpbiYmKGw9dGhpcy5tYXJnaW4ubGVmdEluc2V0K3RoaXMubWFyZ2luLnJpZ2h0SW5zZXQsZj10aGlzLm1hcmdpbi50b3BJbnNldCt0aGlzLm1hcmdpbi5ib3R0b21JbnNldCk7dmFyIGg9bnVsbDtpZigiIj09PXRoaXMud3x8IiI9PT10aGlzLmgpe3ZhciBkPW51bGwsZz1udWxsLHY9MCx5PTA7aWYodGhpcy51aS5jaGVja0J1dHRvbil2PXk9dGhpcy51aS5jaGVja0J1dHRvbi5zaXplO2Vsc2V7dmFyIG09KDAsby5sYXlvdXROb2RlKSh0aGlzLGUpLGI9bS53LHc9bS5oO251bGwhPT1iPyh2PWIseT13KTp5PSgwLHUuZ2V0TWV0cmljcykodGhpcy5mb250LCEwKS5saW5lTm9HYXB9aWYodis9KGg9aih0aGlzLnVpW24uJGdldEV4dHJhXSgpKSkudyx5Kz1oLmgsdGhpcy5jYXB0aW9uKXt2YXIgaz10aGlzLmNhcHRpb25bbi4kZ2V0RXh0cmFdKGUpLFM9ay53LHg9ay5oO2lmKGsuaXNCcm9rZW4mJnRoaXNbbi4kZ2V0U3ViZm9ybVBhcmVudF0oKVtuLiRpc1RoZXJlTW9yZVdpZHRoXSgpKXJldHVybiB0aGlzW24uJHBvcFBhcmFdKCkscy5IVE1MUmVzdWx0LkZBSUxVUkU7c3dpdGNoKGQ9UyxnPXgsdGhpcy5jYXB0aW9uLnBsYWNlbWVudCl7Y2FzZSJsZWZ0IjpjYXNlInJpZ2h0IjpjYXNlImlubGluZSI6ZCs9djticmVhaztjYXNlInRvcCI6Y2FzZSJib3R0b20iOmcrPXl9fWVsc2UgZD12LGc9eTtkJiYiIj09PXRoaXMudyYmKGQrPWwsdGhpcy53PU1hdGgubWluKHRoaXMubWF4Vzw9MD8xLzA6dGhpcy5tYXhXLHRoaXMubWluVysxPGQ/ZDp0aGlzLm1pblcpKSxnJiYiIj09PXRoaXMuaCYmKGcrPWYsdGhpcy5oPU1hdGgubWluKHRoaXMubWF4SDw9MD8xLzA6dGhpcy5tYXhILHRoaXMubWluSCsxPGc/Zzp0aGlzLm1pbkgpKX1pZih0aGlzW24uJHBvcFBhcmFdKCksKDAsby5maXhEaW1lbnNpb25zKSh0aGlzKSwkKHRoaXMpLCEoMCxpLmNoZWNrRGltZW5zaW9ucykodGhpcyxlKSlyZXR1cm4gdGhpcy53PWEsdGhpcy5oPWMsdGhpc1tuLiRwb3BQYXJhXSgpLHMuSFRNTFJlc3VsdC5GQUlMVVJFO1godGhpcyk7dmFyIE89KDAsby50b1N0eWxlKSh0aGlzLCJmb250IiwiZGltZW5zaW9ucyIsInBvc2l0aW9uIiwicm90YXRlIiwiYW5jaG9yVHlwZSIsInByZXNlbmNlIiwibWFyZ2luIiwiaEFsaWduIik7KDAsby5zZXRNaW5NYXhEaW1lbnNpb25zKSh0aGlzLE8pO3ZhciBBPVsieGZhRmllbGQiXTt0aGlzLmZvbnQmJkEucHVzaCgieGZhRm9udCIpLCgwLG8uaXNQcmludE9ubHkpKHRoaXMpJiZBLnB1c2goInhmYVByaW50T25seSIpO3ZhciBDPXtzdHlsZTpPLGlkOnRoaXNbbi4kdWlkXSxjbGFzczpBfTtPLm1hcmdpbiYmKE8ucGFkZGluZz1PLm1hcmdpbixkZWxldGUgTy5tYXJnaW4pLCgwLG8uc2V0QWNjZXNzKSh0aGlzLEEpLHRoaXMubmFtZSYmKEMueGZhTmFtZT10aGlzLm5hbWUpO3ZhciBGPVtdLFA9e25hbWU6ImRpdiIsYXR0cmlidXRlczpDLGNoaWxkcmVuOkZ9O0QodGhpcyxDKTt2YXIgVD10aGlzLmJvcmRlcj90aGlzLmJvcmRlcltuLiR0b1N0eWxlXSgpOm51bGwsST0oMCxvLmNvbXB1dGVCYm94KSh0aGlzLFAsZSksRT10aGlzLnVpW24uJHRvSFRNTF0oKS5odG1sO2lmKCFFKXJldHVybiBPYmplY3QuYXNzaWduKE8sVCkscy5IVE1MUmVzdWx0LnN1Y2Nlc3MoKDAsby5jcmVhdGVXcmFwcGVyKSh0aGlzLFApLEkpO3RoaXNbbi4kdGFiSW5kZXhdJiYoRS5jaGlsZHJlbiYmRS5jaGlsZHJlblswXT9FLmNoaWxkcmVuWzBdLmF0dHJpYnV0ZXMudGFiaW5kZXg9dGhpc1tuLiR0YWJJbmRleF06RS5hdHRyaWJ1dGVzLnRhYmluZGV4PXRoaXNbbi4kdGFiSW5kZXhdKSxFLmF0dHJpYnV0ZXMuc3R5bGV8fChFLmF0dHJpYnV0ZXMuc3R5bGU9T2JqZWN0LmNyZWF0ZShudWxsKSk7dmFyIE09bnVsbDtpZih0aGlzLnVpLmJ1dHRvbj8oMT09PUUuY2hpbGRyZW4ubGVuZ3RoJiYoTT1wKEUuY2hpbGRyZW4uc3BsaWNlKDAsMSksMSlbMF0pLE9iamVjdC5hc3NpZ24oRS5hdHRyaWJ1dGVzLnN0eWxlLFQpKTpPYmplY3QuYXNzaWduKE8sVCksRi5wdXNoKEUpLHRoaXMudmFsdWUpaWYodGhpcy51aS5pbWFnZUVkaXQpRS5jaGlsZHJlbi5wdXNoKHRoaXMudmFsdWVbbi4kdG9IVE1MXSgpLmh0bWwpO2Vsc2UgaWYoIXRoaXMudWkuYnV0dG9uKXt2YXIgXz0iIjtpZih0aGlzLnZhbHVlLmV4RGF0YSlfPXRoaXMudmFsdWUuZXhEYXRhW24uJHRleHRdKCk7ZWxzZSBpZih0aGlzLnZhbHVlLnRleHQpXz10aGlzLnZhbHVlLnRleHRbbi4kZ2V0RXh0cmFdKCk7ZWxzZXt2YXIgTD10aGlzLnZhbHVlW24uJHRvSFRNTF0oKS5odG1sO251bGwhPT1MJiYoXz1MLmNoaWxkcmVuWzBdLnZhbHVlKX10aGlzLnVpLnRleHRFZGl0JiZ0aGlzLnZhbHVlLnRleHQmJnRoaXMudmFsdWUudGV4dC5tYXhDaGFycyYmKEUuY2hpbGRyZW5bMF0uYXR0cmlidXRlcy5tYXhMZW5ndGg9dGhpcy52YWx1ZS50ZXh0Lm1heENoYXJzKSxfJiYodGhpcy51aS5udW1lcmljRWRpdCYmKF89cGFyc2VGbG9hdChfKSxfPWlzTmFOKF8pPyIiOl8udG9TdHJpbmcoKSksInRleHRhcmVhIj09PUUuY2hpbGRyZW5bMF0ubmFtZT9FLmNoaWxkcmVuWzBdLmF0dHJpYnV0ZXMudGV4dENvbnRlbnQ9XzpFLmNoaWxkcmVuWzBdLmF0dHJpYnV0ZXMudmFsdWU9Xyl9aWYoIXRoaXMudWkuaW1hZ2VFZGl0JiZFLmNoaWxkcmVuJiZFLmNoaWxkcmVuWzBdJiZ0aGlzLmgpe2g9aHx8aih0aGlzLnVpW24uJGdldEV4dHJhXSgpKTt2YXIgUj0wO2lmKHRoaXMuY2FwdGlvbiYmWyJ0b3AiLCJib3R0b20iXS5pbmNsdWRlcyh0aGlzLmNhcHRpb24ucGxhY2VtZW50KSl7KFI9dGhpcy5jYXB0aW9uLnJlc2VydmUpPD0wJiYoUj10aGlzLmNhcHRpb25bbi4kZ2V0RXh0cmFdKGUpLmgpO3ZhciBCPXRoaXMuaC1SLWYtaC5oO0UuY2hpbGRyZW5bMF0uYXR0cmlidXRlcy5zdHlsZS5oZWlnaHQ9KDAsby5tZWFzdXJlVG9TdHJpbmcpKEIpfWVsc2UgRS5jaGlsZHJlblswXS5hdHRyaWJ1dGVzLnN0eWxlLmhlaWdodD0iMTAwJSJ9aWYoTSYmRS5jaGlsZHJlbi5wdXNoKE0pLCFyKXJldHVybiBFLmF0dHJpYnV0ZXMuY2xhc3MmJkUuYXR0cmlidXRlcy5jbGFzcy5wdXNoKCJ4ZmFMZWZ0IiksdGhpcy53PWEsdGhpcy5oPWMscy5IVE1MUmVzdWx0LnN1Y2Nlc3MoKDAsby5jcmVhdGVXcmFwcGVyKSh0aGlzLFApLEkpO2lmKHRoaXMudWkuYnV0dG9uKXJldHVybiBPLnBhZGRpbmcmJmRlbGV0ZSBPLnBhZGRpbmcsImRpdiI9PT1yLm5hbWUmJihyLm5hbWU9InNwYW4iKSxFLmNoaWxkcmVuLnB1c2gocikscy5IVE1MUmVzdWx0LnN1Y2Nlc3MoUCxJKTtzd2l0Y2godGhpcy51aS5jaGVja0J1dHRvbiYmKHIuYXR0cmlidXRlcy5jbGFzc1swXT0ieGZhQ2FwdGlvbkZvckNoZWNrQnV0dG9uIiksRS5hdHRyaWJ1dGVzLmNsYXNzfHwoRS5hdHRyaWJ1dGVzLmNsYXNzPVtdKSxFLmNoaWxkcmVuLnNwbGljZSgwLDAsciksdGhpcy5jYXB0aW9uLnBsYWNlbWVudCl7Y2FzZSJsZWZ0IjpjYXNlImlubGluZSI6RS5hdHRyaWJ1dGVzLmNsYXNzLnB1c2goInhmYUxlZnQiKTticmVhaztjYXNlInJpZ2h0IjpFLmF0dHJpYnV0ZXMuY2xhc3MucHVzaCgieGZhUmlnaHQiKTticmVhaztjYXNlInRvcCI6RS5hdHRyaWJ1dGVzLmNsYXNzLnB1c2goInhmYVRvcCIpO2JyZWFrO2Nhc2UiYm90dG9tIjpFLmF0dHJpYnV0ZXMuY2xhc3MucHVzaCgieGZhQm90dG9tIil9cmV0dXJuIHRoaXMudz1hLHRoaXMuaD1jLHMuSFRNTFJlc3VsdC5zdWNjZXNzKCgwLG8uY3JlYXRlV3JhcHBlcikodGhpcyxQKSxJKX19XSkscn0obi5YRkFPYmplY3QpO3QuRmllbGQ9QmU7dmFyIFVlPWZ1bmN0aW9uKGUpe20ocixlKTt2YXIgdD13KHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG47cmV0dXJuIHkodGhpcyxyKSwobj10LmNhbGwodGhpcyxGLCJmaWxsIiwhMCkpLmlkPWUuaWR8fCIiLG4ucHJlc2VuY2U9KDAscy5nZXRTdHJpbmdPcHRpb24pKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSksbi51c2U9ZS51c2V8fCIiLG4udXNlaHJlZj1lLnVzZWhyZWZ8fCIiLG4uY29sb3I9bnVsbCxuLmV4dHJhcz1udWxsLG4ubGluZWFyPW51bGwsbi5wYXR0ZXJuPW51bGwsbi5yYWRpYWw9bnVsbCxuLnNvbGlkPW51bGwsbi5zdGlwcGxlPW51bGwsbn1yZXR1cm4gdihyLFt7a2V5Om4uJHRvU3R5bGUsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzW24uJGdldFBhcmVudF0oKSx0PWVbbi4kZ2V0UGFyZW50XSgpW24uJGdldFBhcmVudF0oKSxyPU9iamVjdC5jcmVhdGUobnVsbCksYT0iY29sb3IiLGk9YTtlIGluc3RhbmNlb2YgZWUmJihhPSJiYWNrZ3JvdW5kLWNvbG9yIixpPSJiYWNrZ3JvdW5kIix0IGluc3RhbmNlb2YgenQmJihyLmJhY2tncm91bmRDb2xvcj0id2hpdGUiKSksKGUgaW5zdGFuY2VvZiB4dHx8ZSBpbnN0YW5jZW9mIHopJiYoYT1pPSJmaWxsIixyLmZpbGw9IndoaXRlIik7dmFyIG8scz1PKE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMpKTt0cnl7Zm9yKHMucygpOyEobz1zLm4oKSkuZG9uZTspe3ZhciBjPW8udmFsdWU7aWYoImV4dHJhcyIhPT1jJiYiY29sb3IiIT09Yyl7dmFyIHU9dGhpc1tjXTtpZih1IGluc3RhbmNlb2Ygbi5YRkFPYmplY3Qpe3ZhciBsPXVbbi4kdG9TdHlsZV0odGhpcy5jb2xvcik7cmV0dXJuIGwmJihyW2wuc3RhcnRzV2l0aCgiIyIpP2E6aV09bCkscn19fX1jYXRjaChlKXtzLmUoZSl9ZmluYWxseXtzLmYoKX1pZih0aGlzLmNvbG9yJiZ0aGlzLmNvbG9yLnZhbHVlKXt2YXIgZj10aGlzLmNvbG9yW24uJHRvU3R5bGVdKCk7cltmLnN0YXJ0c1dpdGgoIiMiKT9hOmldPWZ9cmV0dXJuIHJ9fV0pLHJ9KG4uWEZBT2JqZWN0KSwkZT1mdW5jdGlvbihlKXttKHIsZSk7dmFyIHQ9dyhyKTtmdW5jdGlvbiByKGUpe3ZhciBuO3JldHVybiB5KHRoaXMsciksKG49dC5jYWxsKHRoaXMsRiwiZmlsdGVyIiwhMCkpLmFkZFJldm9jYXRpb25JbmZvPSgwLHMuZ2V0U3RyaW5nT3B0aW9uKShlLmFkZFJldm9jYXRpb25JbmZvLFsiIiwicmVxdWlyZWQiLCJvcHRpb25hbCIsIm5vbmUiXSksbi5pZD1lLmlkfHwiIixuLm5hbWU9ZS5uYW1lfHwiIixuLnVzZT1lLnVzZXx8IiIsbi51c2VocmVmPWUudXNlaHJlZnx8IiIsbi52ZXJzaW9uPSgwLHMuZ2V0SW50ZWdlcikoe2RhdGE6bi52ZXJzaW9uLGRlZmF1bHRWYWx1ZTo1LHZhbGlkYXRlOmZ1bmN0aW9uKGUpe3JldHVybiBlPj0xJiZlPD01fX0pLG4uYXBwZWFyYW5jZUZpbHRlcj1udWxsLG4uY2VydGlmaWNhdGVzPW51bGwsbi5kaWdlc3RNZXRob2RzPW51bGwsbi5lbmNvZGluZ3M9bnVsbCxuLmVuY3J5cHRpb25NZXRob2RzPW51bGwsbi5oYW5kbGVyPW51bGwsbi5sb2NrRG9jdW1lbnQ9bnVsbCxuLm1kcD1udWxsLG4ucmVhc29ucz1udWxsLG4udGltZVN0YW1wPW51bGwsbn1yZXR1cm4gdihyKX0obi5YRkFPYmplY3QpLFhlPWZ1bmN0aW9uKGUpe20ocixlKTt2YXIgdD13KHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG47cmV0dXJuIHkodGhpcyxyKSwobj10LmNhbGwodGhpcyxGLCJmbG9hdCIpKS5pZD1lLmlkfHwiIixuLm5hbWU9ZS5uYW1lfHwiIixuLnVzZT1lLnVzZXx8IiIsbi51c2VocmVmPWUudXNlaHJlZnx8IiIsbn1yZXR1cm4gdihyLFt7a2V5Om4uJGZpbmFsaXplLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9cGFyc2VGbG9hdCh0aGlzW24uJGNvbnRlbnRdLnRyaW0oKSk7dGhpc1tuLiRjb250ZW50XT1pc05hTihlKT9udWxsOmV9fSx7a2V5Om4uJHRvSFRNTCx2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gVShudWxsIT09dGhpc1tuLiRjb250ZW50XT90aGlzW24uJGNvbnRlbnRdLnRvU3RyaW5nKCk6IiIpfX1dKSxyfShuLkNvbnRlbnRPYmplY3QpLEhlPWZ1bmN0aW9uKGUpe20ocixlKTt2YXIgdD13KHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG47cmV0dXJuIHkodGhpcyxyKSwobj10LmNhbGwodGhpcyxGLCJmb250IiwhMCkpLmJhc2VsaW5lU2hpZnQ9KDAscy5nZXRNZWFzdXJlbWVudCkoZS5iYXNlbGluZVNoaWZ0KSxuLmZvbnRIb3Jpem9udGFsU2NhbGU9KDAscy5nZXRGbG9hdCkoe2RhdGE6ZS5mb250SG9yaXpvbnRhbFNjYWxlLGRlZmF1bHRWYWx1ZToxMDAsdmFsaWRhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuIGU+PTB9fSksbi5mb250VmVydGljYWxTY2FsZT0oMCxzLmdldEZsb2F0KSh7ZGF0YTplLmZvbnRWZXJ0aWNhbFNjYWxlLGRlZmF1bHRWYWx1ZToxMDAsdmFsaWRhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuIGU+PTB9fSksbi5pZD1lLmlkfHwiIixuLmtlcm5pbmdNb2RlPSgwLHMuZ2V0U3RyaW5nT3B0aW9uKShlLmtlcm5pbmdNb2RlLFsibm9uZSIsInBhaXIiXSksbi5sZXR0ZXJTcGFjaW5nPSgwLHMuZ2V0TWVhc3VyZW1lbnQpKGUubGV0dGVyU3BhY2luZywiMCIpLG4ubGluZVRocm91Z2g9KDAscy5nZXRJbnRlZ2VyKSh7ZGF0YTplLmxpbmVUaHJvdWdoLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmZ1bmN0aW9uKGUpe3JldHVybiAxPT09ZXx8Mj09PWV9fSksbi5saW5lVGhyb3VnaFBlcmlvZD0oMCxzLmdldFN0cmluZ09wdGlvbikoZS5saW5lVGhyb3VnaFBlcmlvZCxbImFsbCIsIndvcmQiXSksbi5vdmVybGluZT0oMCxzLmdldEludGVnZXIpKHtkYXRhOmUub3ZlcmxpbmUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuIDE9PT1lfHwyPT09ZX19KSxuLm92ZXJsaW5lUGVyaW9kPSgwLHMuZ2V0U3RyaW5nT3B0aW9uKShlLm92ZXJsaW5lUGVyaW9kLFsiYWxsIiwid29yZCJdKSxuLnBvc3R1cmU9KDAscy5nZXRTdHJpbmdPcHRpb24pKGUucG9zdHVyZSxbIm5vcm1hbCIsIml0YWxpYyJdKSxuLnNpemU9KDAscy5nZXRNZWFzdXJlbWVudCkoZS5zaXplLCIxMHB0Iiksbi50eXBlZmFjZT1lLnR5cGVmYWNlfHwiQ291cmllciIsbi51bmRlcmxpbmU9KDAscy5nZXRJbnRlZ2VyKSh7ZGF0YTplLnVuZGVybGluZSxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTpmdW5jdGlvbihlKXtyZXR1cm4gMT09PWV8fDI9PT1lfX0pLG4udW5kZXJsaW5lUGVyaW9kPSgwLHMuZ2V0U3RyaW5nT3B0aW9uKShlLnVuZGVybGluZVBlcmlvZCxbImFsbCIsIndvcmQiXSksbi51c2U9ZS51c2V8fCIiLG4udXNlaHJlZj1lLnVzZWhyZWZ8fCIiLG4ud2VpZ2h0PSgwLHMuZ2V0U3RyaW5nT3B0aW9uKShlLndlaWdodCxbIm5vcm1hbCIsImJvbGQiXSksbi5leHRyYXM9bnVsbCxuLmZpbGw9bnVsbCxufXJldHVybiB2KHIsW3trZXk6bi4kY2xlYW4sdmFsdWU6ZnVuY3Rpb24oZSl7ZChrKHIucHJvdG90eXBlKSxuLiRjbGVhbix0aGlzKS5jYWxsKHRoaXMsZSksdGhpc1tuLiRnbG9iYWxEYXRhXS51c2VkVHlwZWZhY2VzLmFkZCh0aGlzLnR5cGVmYWNlKX19LHtrZXk6bi4kdG9TdHlsZSx2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPSgwLG8udG9TdHlsZSkodGhpcywiZmlsbCIpLHQ9ZS5jb2xvcjtyZXR1cm4gdCYmKCIjMDAwMDAwIj09PXQ/ZGVsZXRlIGUuY29sb3I6dC5zdGFydHNXaXRoKCIjIil8fChlLmJhY2tncm91bmQ9dCxlLmJhY2tncm91bmRDbGlwPSJ0ZXh0IixlLmNvbG9yPSJ0cmFuc3BhcmVudCIpKSx0aGlzLmJhc2VsaW5lU2hpZnQmJihlLnZlcnRpY2FsQWxpZ249KDAsby5tZWFzdXJlVG9TdHJpbmcpKHRoaXMuYmFzZWxpbmVTaGlmdCkpLGUuZm9udEtlcm5pbmc9Im5vbmUiPT09dGhpcy5rZXJuaW5nTW9kZT8ibm9uZSI6Im5vcm1hbCIsZS5sZXR0ZXJTcGFjaW5nPSgwLG8ubWVhc3VyZVRvU3RyaW5nKSh0aGlzLmxldHRlclNwYWNpbmcpLDAhPT10aGlzLmxpbmVUaHJvdWdoJiYoZS50ZXh0RGVjb3JhdGlvbj0ibGluZS10aHJvdWdoIiwyPT09dGhpcy5saW5lVGhyb3VnaCYmKGUudGV4dERlY29yYXRpb25TdHlsZT0iZG91YmxlIikpLDAhPT10aGlzLm92ZXJsaW5lJiYoZS50ZXh0RGVjb3JhdGlvbj0ib3ZlcmxpbmUiLDI9PT10aGlzLm92ZXJsaW5lJiYoZS50ZXh0RGVjb3JhdGlvblN0eWxlPSJkb3VibGUiKSksZS5mb250U3R5bGU9dGhpcy5wb3N0dXJlLGUuZm9udFNpemU9KDAsby5tZWFzdXJlVG9TdHJpbmcpKC45OSp0aGlzLnNpemUpLCgwLG8uc2V0Rm9udEZhbWlseSkodGhpcyx0aGlzLHRoaXNbbi4kZ2xvYmFsRGF0YV0uZm9udEZpbmRlcixlKSwwIT09dGhpcy51bmRlcmxpbmUmJihlLnRleHREZWNvcmF0aW9uPSJ1bmRlcmxpbmUiLDI9PT10aGlzLnVuZGVybGluZSYmKGUudGV4dERlY29yYXRpb25TdHlsZT0iZG91YmxlIikpLGUuZm9udFdlaWdodD10aGlzLndlaWdodCxlfX1dKSxyfShuLlhGQU9iamVjdCkscWU9ZnVuY3Rpb24oZSl7bShyLGUpO3ZhciB0PXcocik7ZnVuY3Rpb24gcihlKXt2YXIgbjtyZXR1cm4geSh0aGlzLHIpLChuPXQuY2FsbCh0aGlzLEYsImZvcm1hdCIsITApKS5pZD1lLmlkfHwiIixuLnVzZT1lLnVzZXx8IiIsbi51c2VocmVmPWUudXNlaHJlZnx8IiIsbi5leHRyYXM9bnVsbCxuLnBpY3R1cmU9bnVsbCxufXJldHVybiB2KHIpfShuLlhGQU9iamVjdCksR2U9ZnVuY3Rpb24oZSl7bShyLGUpO3ZhciB0PXcocik7ZnVuY3Rpb24gcihlKXt2YXIgbjtyZXR1cm4geSh0aGlzLHIpLChuPXQuY2FsbCh0aGlzLEYsImhhbmRsZXIiKSkuaWQ9ZS5pZHx8IiIsbi50eXBlPSgwLHMuZ2V0U3RyaW5nT3B0aW9uKShlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pLG4udXNlPWUudXNlfHwiIixuLnVzZWhyZWY9ZS51c2VocmVmfHwiIixufXJldHVybiB2KHIpfShuLlN0cmluZ09iamVjdCksemU9ZnVuY3Rpb24oZSl7bShyLGUpO3ZhciB0PXcocik7ZnVuY3Rpb24gcihlKXt2YXIgbjtyZXR1cm4geSh0aGlzLHIpLChuPXQuY2FsbCh0aGlzLEYsImh5cGhlbmF0aW9uIikpLmV4Y2x1ZGVBbGxDYXBzPSgwLHMuZ2V0SW50ZWdlcikoe2RhdGE6ZS5leGNsdWRlQWxsQ2FwcyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTpmdW5jdGlvbihlKXtyZXR1cm4gMT09PWV9fSksbi5leGNsdWRlSW5pdGlhbENhcD0oMCxzLmdldEludGVnZXIpKHtkYXRhOmUuZXhjbHVkZUluaXRpYWxDYXAsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuIDE9PT1lfX0pLG4uaHlwaGVuYXRlPSgwLHMuZ2V0SW50ZWdlcikoe2RhdGE6ZS5oeXBoZW5hdGUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuIDE9PT1lfX0pLG4uaWQ9ZS5pZHx8IiIsbi5wdXNoQ2hhcmFjdGVyQ291bnQ9KDAscy5nZXRJbnRlZ2VyKSh7ZGF0YTplLnB1c2hDaGFyYWN0ZXJDb3VudCxkZWZhdWx0VmFsdWU6Myx2YWxpZGF0ZTpmdW5jdGlvbihlKXtyZXR1cm4gZT49MH19KSxuLnJlbWFpbkNoYXJhY3RlckNvdW50PSgwLHMuZ2V0SW50ZWdlcikoe2RhdGE6ZS5yZW1haW5DaGFyYWN0ZXJDb3VudCxkZWZhdWx0VmFsdWU6Myx2YWxpZGF0ZTpmdW5jdGlvbihlKXtyZXR1cm4gZT49MH19KSxuLnVzZT1lLnVzZXx8IiIsbi51c2VocmVmPWUudXNlaHJlZnx8IiIsbi53b3JkQ2hhcmFjdGVyQ291bnQ9KDAscy5nZXRJbnRlZ2VyKSh7ZGF0YTplLndvcmRDaGFyYWN0ZXJDb3VudCxkZWZhdWx0VmFsdWU6Nyx2YWxpZGF0ZTpmdW5jdGlvbihlKXtyZXR1cm4gZT49MH19KSxufXJldHVybiB2KHIpfShuLlhGQU9iamVjdCksV2U9ZnVuY3Rpb24oZSl7bShyLGUpO3ZhciB0PXcocik7ZnVuY3Rpb24gcihlKXt2YXIgbjtyZXR1cm4geSh0aGlzLHIpLChuPXQuY2FsbCh0aGlzLEYsImltYWdlIikpLmFzcGVjdD0oMCxzLmdldFN0cmluZ09wdGlvbikoZS5hc3BlY3QsWyJmaXQiLCJhY3R1YWwiLCJoZWlnaHQiLCJub25lIiwid2lkdGgiXSksbi5jb250ZW50VHlwZT1lLmNvbnRlbnRUeXBlfHwiIixuLmhyZWY9ZS5ocmVmfHwiIixuLmlkPWUuaWR8fCIiLG4ubmFtZT1lLm5hbWV8fCIiLG4udHJhbnNmZXJFbmNvZGluZz0oMCxzLmdldFN0cmluZ09wdGlvbikoZS50cmFuc2ZlckVuY29kaW5nLFsiYmFzZTY0Iiwibm9uZSIsInBhY2thZ2UiXSksbi51c2U9ZS51c2V8fCIiLG4udXNlaHJlZj1lLnVzZWhyZWZ8fCIiLG59cmV0dXJuIHYocixbe2tleTpuLiR0b0hUTUwsdmFsdWU6ZnVuY3Rpb24oKXtpZih0aGlzLmNvbnRlbnRUeXBlJiYhSS5oYXModGhpcy5jb250ZW50VHlwZS50b0xvd2VyQ2FzZSgpKSlyZXR1cm4gcy5IVE1MUmVzdWx0LkVNUFRZO3ZhciBlPXRoaXNbbi4kZ2xvYmFsRGF0YV0uaW1hZ2VzJiZ0aGlzW24uJGdsb2JhbERhdGFdLmltYWdlcy5nZXQodGhpcy5ocmVmKTtpZighZSYmKHRoaXMuaHJlZnx8IXRoaXNbbi4kY29udGVudF0pKXJldHVybiBzLkhUTUxSZXN1bHQuRU1QVFk7aWYoZXx8ImJhc2U2NCIhPT10aGlzLnRyYW5zZmVyRW5jb2Rpbmd8fChlPSgwLGMuc3RyaW5nVG9CeXRlcykoYXRvYih0aGlzW24uJGNvbnRlbnRdKSkpLCFlKXJldHVybiBzLkhUTUxSZXN1bHQuRU1QVFk7aWYoIXRoaXMuY29udGVudFR5cGUpe2Zvcih2YXIgdD0wLHI9RTt0PHIubGVuZ3RoO3QrKyl7dmFyIGE9cChyW3RdLDIpLGk9YVswXSxvPWFbMV07aWYoZS5sZW5ndGg+aS5sZW5ndGgmJmkuZXZlcnkoKGZ1bmN0aW9uKHQscil7cmV0dXJuIHQ9PT1lW3JdfSkpKXt0aGlzLmNvbnRlbnRUeXBlPW87YnJlYWt9fWlmKCF0aGlzLmNvbnRlbnRUeXBlKXJldHVybiBzLkhUTUxSZXN1bHQuRU1QVFl9dmFyIHUsbD1uZXcgQmxvYihbZV0se3R5cGU6dGhpcy5jb250ZW50VHlwZX0pO3N3aXRjaCh0aGlzLmFzcGVjdCl7Y2FzZSJmaXQiOmNhc2UiYWN0dWFsIjpicmVhaztjYXNlImhlaWdodCI6dT17aGVpZ2h0OiIxMDAlIixvYmplY3RGaXQ6ImZpbGwifTticmVhaztjYXNlIm5vbmUiOnU9e3dpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUiLG9iamVjdEZpdDoiZmlsbCJ9O2JyZWFrO2Nhc2Uid2lkdGgiOnU9e3dpZHRoOiIxMDAlIixvYmplY3RGaXQ6ImZpbGwifX12YXIgZj10aGlzW24uJGdldFBhcmVudF0oKTtyZXR1cm4gcy5IVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImltZyIsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFJbWFnZSJdLHN0eWxlOnUsc3JjOlVSTC5jcmVhdGVPYmplY3RVUkwobCksYWx0OmY/QihmW24uJGdldFBhcmVudF0oKSk6bnVsbH19KX19XSkscn0obi5TdHJpbmdPYmplY3QpLFZlPWZ1bmN0aW9uKGUpe20ocixlKTt2YXIgdD13KHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG47cmV0dXJuIHkodGhpcyxyKSwobj10LmNhbGwodGhpcyxGLCJpbWFnZUVkaXQiLCEwKSkuZGF0YT0oMCxzLmdldFN0cmluZ09wdGlvbikoZS5kYXRhLFsibGluayIsImVtYmVkIl0pLG4uaWQ9ZS5pZHx8IiIsbi51c2U9ZS51c2V8fCIiLG4udXNlaHJlZj1lLnVzZWhyZWZ8fCIiLG4uYm9yZGVyPW51bGwsbi5leHRyYXM9bnVsbCxuLm1hcmdpbj1udWxsLG59cmV0dXJuIHYocixbe2tleTpuLiR0b0hUTUwsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuImVtYmVkIj09PXRoaXMuZGF0YT9zLkhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixjaGlsZHJlbjpbXSxhdHRyaWJ1dGVzOnt9fSk6cy5IVE1MUmVzdWx0LkVNUFRZfX1dKSxyfShuLlhGQU9iamVjdCksWWU9ZnVuY3Rpb24oZSl7bShyLGUpO3ZhciB0PXcocik7ZnVuY3Rpb24gcihlKXt2YXIgbjtyZXR1cm4geSh0aGlzLHIpLChuPXQuY2FsbCh0aGlzLEYsImludGVnZXIiKSkuaWQ9ZS5pZHx8IiIsbi5uYW1lPWUubmFtZXx8IiIsbi51c2U9ZS51c2V8fCIiLG4udXNlaHJlZj1lLnVzZWhyZWZ8fCIiLG59cmV0dXJuIHYocixbe2tleTpuLiRmaW5hbGl6ZSx2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXBhcnNlSW50KHRoaXNbbi4kY29udGVudF0udHJpbSgpLDEwKTt0aGlzW24uJGNvbnRlbnRdPWlzTmFOKGUpP251bGw6ZX19LHtrZXk6bi4kdG9IVE1MLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBVKG51bGwhPT10aGlzW24uJGNvbnRlbnRdP3RoaXNbbi4kY29udGVudF0udG9TdHJpbmcoKToiIil9fV0pLHJ9KG4uQ29udGVudE9iamVjdCksS2U9ZnVuY3Rpb24oZSl7bShyLGUpO3ZhciB0PXcocik7ZnVuY3Rpb24gcihlKXt2YXIgYTtyZXR1cm4geSh0aGlzLHIpLChhPXQuY2FsbCh0aGlzLEYsImlzc3VlcnMiLCEwKSkuaWQ9ZS5pZHx8IiIsYS50eXBlPSgwLHMuZ2V0U3RyaW5nT3B0aW9uKShlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pLGEudXNlPWUudXNlfHwiIixhLnVzZWhyZWY9ZS51c2VocmVmfHwiIixhLmNlcnRpZmljYXRlPW5ldyBuLlhGQU9iamVjdEFycmF5LGF9cmV0dXJuIHYocil9KG4uWEZBT2JqZWN0KSxKZT1mdW5jdGlvbihlKXttKHIsZSk7dmFyIHQ9dyhyKTtmdW5jdGlvbiByKGUpe3ZhciBhO3JldHVybiB5KHRoaXMsciksKGE9dC5jYWxsKHRoaXMsRiwiaXRlbXMiLCEwKSkuaWQ9ZS5pZHx8IiIsYS5uYW1lPWUubmFtZXx8IiIsYS5wcmVzZW5jZT0oMCxzLmdldFN0cmluZ09wdGlvbikoZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKSxhLnJlZj1lLnJlZnx8IiIsYS5zYXZlPSgwLHMuZ2V0SW50ZWdlcikoe2RhdGE6ZS5zYXZlLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmZ1bmN0aW9uKGUpe3JldHVybiAxPT09ZX19KSxhLnVzZT1lLnVzZXx8IiIsYS51c2VocmVmPWUudXNlaHJlZnx8IiIsYS5ib29sZWFuPW5ldyBuLlhGQU9iamVjdEFycmF5LGEuZGF0ZT1uZXcgbi5YRkFPYmplY3RBcnJheSxhLmRhdGVUaW1lPW5ldyBuLlhGQU9iamVjdEFycmF5LGEuZGVjaW1hbD1uZXcgbi5YRkFPYmplY3RBcnJheSxhLmV4RGF0YT1uZXcgbi5YRkFPYmplY3RBcnJheSxhLmZsb2F0PW5ldyBuLlhGQU9iamVjdEFycmF5LGEuaW1hZ2U9bmV3IG4uWEZBT2JqZWN0QXJyYXksYS5pbnRlZ2VyPW5ldyBuLlhGQU9iamVjdEFycmF5LGEudGV4dD1uZXcgbi5YRkFPYmplY3RBcnJheSxhLnRpbWU9bmV3IG4uWEZBT2JqZWN0QXJyYXksYX1yZXR1cm4gdihyLFt7a2V5Om4uJHRvSFRNTCx2YWx1ZTpmdW5jdGlvbigpe3ZhciBlLHQ9W10scj1PKHRoaXNbbi4kZ2V0Q2hpbGRyZW5dKCkpO3RyeXtmb3Ioci5zKCk7IShlPXIubigpKS5kb25lOyl7dmFyIGE9ZS52YWx1ZTt0LnB1c2goYVtuLiR0ZXh0XSgpKX19Y2F0Y2goZSl7ci5lKGUpfWZpbmFsbHl7ci5mKCl9cmV0dXJuIHMuSFRNTFJlc3VsdC5zdWNjZXNzKHQpfX1dKSxyfShuLlhGQU9iamVjdCk7dC5JdGVtcz1KZTt2YXIgWmU9ZnVuY3Rpb24oZSl7bShyLGUpO3ZhciB0PXcocik7ZnVuY3Rpb24gcihlKXt2YXIgbjt5KHRoaXMsciksKG49dC5jYWxsKHRoaXMsRiwia2VlcCIsITApKS5pZD1lLmlkfHwiIjt2YXIgYT1bIm5vbmUiLCJjb250ZW50QXJlYSIsInBhZ2VBcmVhIl07cmV0dXJuIG4uaW50YWN0PSgwLHMuZ2V0U3RyaW5nT3B0aW9uKShlLmludGFjdCxhKSxuLm5leHQ9KDAscy5nZXRTdHJpbmdPcHRpb24pKGUubmV4dCxhKSxuLnByZXZpb3VzPSgwLHMuZ2V0U3RyaW5nT3B0aW9uKShlLnByZXZpb3VzLGEpLG4udXNlPWUudXNlfHwiIixuLnVzZWhyZWY9ZS51c2VocmVmfHwiIixuLmV4dHJhcz1udWxsLG59cmV0dXJuIHYocil9KG4uWEZBT2JqZWN0KSxRZT1mdW5jdGlvbihlKXttKHIsZSk7dmFyIHQ9dyhyKTtmdW5jdGlvbiByKGUpe3ZhciBuO3kodGhpcyxyKTt2YXIgYT1bIiIsInllcyIsIm5vIl07cmV0dXJuKG49dC5jYWxsKHRoaXMsRiwia2V5VXNhZ2UiKSkuY3JsU2lnbj0oMCxzLmdldFN0cmluZ09wdGlvbikoZS5jcmxTaWduLGEpLG4uZGF0YUVuY2lwaGVybWVudD0oMCxzLmdldFN0cmluZ09wdGlvbikoZS5kYXRhRW5jaXBoZXJtZW50LGEpLG4uZGVjaXBoZXJPbmx5PSgwLHMuZ2V0U3RyaW5nT3B0aW9uKShlLmRlY2lwaGVyT25seSxhKSxuLmRpZ2l0YWxTaWduYXR1cmU9KDAscy5nZXRTdHJpbmdPcHRpb24pKGUuZGlnaXRhbFNpZ25hdHVyZSxhKSxuLmVuY2lwaGVyT25seT0oMCxzLmdldFN0cmluZ09wdGlvbikoZS5lbmNpcGhlck9ubHksYSksbi5pZD1lLmlkfHwiIixuLmtleUFncmVlbWVudD0oMCxzLmdldFN0cmluZ09wdGlvbikoZS5rZXlBZ3JlZW1lbnQsYSksbi5rZXlDZXJ0U2lnbj0oMCxzLmdldFN0cmluZ09wdGlvbikoZS5rZXlDZXJ0U2lnbixhKSxuLmtleUVuY2lwaGVybWVudD0oMCxzLmdldFN0cmluZ09wdGlvbikoZS5rZXlFbmNpcGhlcm1lbnQsYSksbi5ub25SZXB1ZGlhdGlvbj0oMCxzLmdldFN0cmluZ09wdGlvbikoZS5ub25SZXB1ZGlhdGlvbixhKSxuLnR5cGU9KDAscy5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSksbi51c2U9ZS51c2V8fCIiLG4udXNlaHJlZj1lLnVzZWhyZWZ8fCIiLG59cmV0dXJuIHYocil9KG4uWEZBT2JqZWN0KSxldD1mdW5jdGlvbihlKXttKHIsZSk7dmFyIHQ9dyhyKTtmdW5jdGlvbiByKGUpe3ZhciBuO3JldHVybiB5KHRoaXMsciksKG49dC5jYWxsKHRoaXMsRiwibGluZSIsITApKS5oYW5kPSgwLHMuZ2V0U3RyaW5nT3B0aW9uKShlLmhhbmQsWyJldmVuIiwibGVmdCIsInJpZ2h0Il0pLG4uaWQ9ZS5pZHx8IiIsbi5zbG9wZT0oMCxzLmdldFN0cmluZ09wdGlvbikoZS5zbG9wZSxbIlxcIiwiLyJdKSxuLnVzZT1lLnVzZXx8IiIsbi51c2VocmVmPWUudXNlaHJlZnx8IiIsbi5lZGdlPW51bGwsbn1yZXR1cm4gdihyLFt7a2V5Om4uJHRvSFRNTCx2YWx1ZTpmdW5jdGlvbigpe3ZhciBlLHQscixhLGk9dGhpc1tuLiRnZXRQYXJlbnRdKClbbi4kZ2V0UGFyZW50XSgpLGM9dGhpcy5lZGdlfHxuZXcgQWUoe30pLHU9Y1tuLiR0b1N0eWxlXSgpLGw9T2JqZWN0LmNyZWF0ZShudWxsKSxmPSJ2aXNpYmxlIj09PWMucHJlc2VuY2U/Yy50aGlja25lc3M6MDtsLnN0cm9rZVdpZHRoPSgwLG8ubWVhc3VyZVRvU3RyaW5nKShmKSxsLnN0cm9rZT11LmNvbG9yO3ZhciBoPSIxMDAlIixkPSIxMDAlIjtpLnc8PWY/KGU9IjUwJSIsdD0wLHI9IjUwJSIsYT0iMTAwJSIsaD1sLnN0cm9rZVdpZHRoKTppLmg8PWY/KGU9MCx0PSI1MCUiLHI9IjEwMCUiLGE9IjUwJSIsZD1sLnN0cm9rZVdpZHRoKToiXFwiPT09dGhpcy5zbG9wZT8oZT0wLHQ9MCxyPSIxMDAlIixhPSIxMDAlIik6KGU9MCx0PSIxMDAlIixyPSIxMDAlIixhPTApO3ZhciBwPXtuYW1lOiJzdmciLGNoaWxkcmVuOlt7bmFtZToibGluZSIsYXR0cmlidXRlczp7eG1sbnM6UCx4MTplLHkxOnQseDI6cix5MjphLHN0eWxlOmx9fV0sYXR0cmlidXRlczp7eG1sbnM6UCx3aWR0aDpoLGhlaWdodDpkLHN0eWxlOntvdmVyZmxvdzoidmlzaWJsZSJ9fX07cmV0dXJuIE0oaSk/cy5IVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImRpdiIsYXR0cmlidXRlczp7c3R5bGU6e2Rpc3BsYXk6ImlubGluZSIsd2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSJ9fSxjaGlsZHJlbjpbcF19KToocC5hdHRyaWJ1dGVzLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIscy5IVE1MUmVzdWx0LnN1Y2Nlc3MocCkpfX1dKSxyfShuLlhGQU9iamVjdCksdHQ9ZnVuY3Rpb24oZSl7bShyLGUpO3ZhciB0PXcocik7ZnVuY3Rpb24gcihlKXt2YXIgbjtyZXR1cm4geSh0aGlzLHIpLChuPXQuY2FsbCh0aGlzLEYsImxpbmVhciIsITApKS5pZD1lLmlkfHwiIixuLnR5cGU9KDAscy5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbInRvUmlnaHQiLCJ0b0JvdHRvbSIsInRvTGVmdCIsInRvVG9wIl0pLG4udXNlPWUudXNlfHwiIixuLnVzZWhyZWY9ZS51c2VocmVmfHwiIixuLmNvbG9yPW51bGwsbi5leHRyYXM9bnVsbCxufXJldHVybiB2KHIsW3trZXk6bi4kdG9TdHlsZSx2YWx1ZTpmdW5jdGlvbihlKXtlPWU/ZVtuLiR0b1N0eWxlXSgpOiIjRkZGRkZGIjt2YXIgdD10aGlzLnR5cGUucmVwbGFjZSgvKFtSQkxUXSkvLCIgJDEiKS50b0xvd2VyQ2FzZSgpLHI9dGhpcy5jb2xvcj90aGlzLmNvbG9yW24uJHRvU3R5bGVdKCk6IiMwMDAwMDAiO3JldHVybiJsaW5lYXItZ3JhZGllbnQoIi5jb25jYXQodCwiLCAiKS5jb25jYXQoZSwiLCAiKS5jb25jYXQociwiKSIpfX1dKSxyfShuLlhGQU9iamVjdCkscnQ9ZnVuY3Rpb24oZSl7bShyLGUpO3ZhciB0PXcocik7ZnVuY3Rpb24gcihlKXt2YXIgbjtyZXR1cm4geSh0aGlzLHIpLChuPXQuY2FsbCh0aGlzLEYsImxvY2tEb2N1bWVudCIpKS5pZD1lLmlkfHwiIixuLnR5cGU9KDAscy5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSksbi51c2U9ZS51c2V8fCIiLG4udXNlaHJlZj1lLnVzZWhyZWZ8fCIiLG59cmV0dXJuIHYocixbe2tleTpuLiRmaW5hbGl6ZSx2YWx1ZTpmdW5jdGlvbigpe3RoaXNbbi4kY29udGVudF09KDAscy5nZXRTdHJpbmdPcHRpb24pKHRoaXNbbi4kY29udGVudF0sWyJhdXRvIiwiMCIsIjEiXSl9fV0pLHJ9KG4uQ29udGVudE9iamVjdCksbnQ9ZnVuY3Rpb24oZSl7bShyLGUpO3ZhciB0PXcocik7ZnVuY3Rpb24gcihlKXt2YXIgYTtyZXR1cm4geSh0aGlzLHIpLChhPXQuY2FsbCh0aGlzLEYsIm1hbmlmZXN0IiwhMCkpLmFjdGlvbj0oMCxzLmdldFN0cmluZ09wdGlvbikoZS5hY3Rpb24sWyJpbmNsdWRlIiwiYWxsIiwiZXhjbHVkZSJdKSxhLmlkPWUuaWR8fCIiLGEubmFtZT1lLm5hbWV8fCIiLGEudXNlPWUudXNlfHwiIixhLnVzZWhyZWY9ZS51c2VocmVmfHwiIixhLmV4dHJhcz1udWxsLGEucmVmPW5ldyBuLlhGQU9iamVjdEFycmF5LGF9cmV0dXJuIHYocil9KG4uWEZBT2JqZWN0KSxhdD1mdW5jdGlvbihlKXttKHIsZSk7dmFyIHQ9dyhyKTtmdW5jdGlvbiByKGUpe3ZhciBuO3JldHVybiB5KHRoaXMsciksKG49dC5jYWxsKHRoaXMsRiwibWFyZ2luIiwhMCkpLmJvdHRvbUluc2V0PSgwLHMuZ2V0TWVhc3VyZW1lbnQpKGUuYm90dG9tSW5zZXQsIjAiKSxuLmlkPWUuaWR8fCIiLG4ubGVmdEluc2V0PSgwLHMuZ2V0TWVhc3VyZW1lbnQpKGUubGVmdEluc2V0LCIwIiksbi5yaWdodEluc2V0PSgwLHMuZ2V0TWVhc3VyZW1lbnQpKGUucmlnaHRJbnNldCwiMCIpLG4udG9wSW5zZXQ9KDAscy5nZXRNZWFzdXJlbWVudCkoZS50b3BJbnNldCwiMCIpLG4udXNlPWUudXNlfHwiIixuLnVzZWhyZWY9ZS51c2VocmVmfHwiIixuLmV4dHJhcz1udWxsLG59cmV0dXJuIHYocixbe2tleTpuLiR0b1N0eWxlLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJue21hcmdpbjooMCxvLm1lYXN1cmVUb1N0cmluZykodGhpcy50b3BJbnNldCkrIiAiKygwLG8ubWVhc3VyZVRvU3RyaW5nKSh0aGlzLnJpZ2h0SW5zZXQpKyIgIisoMCxvLm1lYXN1cmVUb1N0cmluZykodGhpcy5ib3R0b21JbnNldCkrIiAiKygwLG8ubWVhc3VyZVRvU3RyaW5nKSh0aGlzLmxlZnRJbnNldCl9fX1dKSxyfShuLlhGQU9iamVjdCksaXQ9ZnVuY3Rpb24oZSl7bShyLGUpO3ZhciB0PXcocik7ZnVuY3Rpb24gcihlKXt2YXIgbjtyZXR1cm4geSh0aGlzLHIpLChuPXQuY2FsbCh0aGlzLEYsIm1kcCIpKS5pZD1lLmlkfHwiIixuLnBlcm1pc3Npb25zPSgwLHMuZ2V0SW50ZWdlcikoe2RhdGE6ZS5wZXJtaXNzaW9ucyxkZWZhdWx0VmFsdWU6Mix2YWxpZGF0ZTpmdW5jdGlvbihlKXtyZXR1cm4gMT09PWV8fDM9PT1lfX0pLG4uc2lnbmF0dXJlVHlwZT0oMCxzLmdldFN0cmluZ09wdGlvbikoZS5zaWduYXR1cmVUeXBlLFsiZmlsbGVyIiwiYXV0aG9yIl0pLG4udXNlPWUudXNlfHwiIixuLnVzZWhyZWY9ZS51c2VocmVmfHwiIixufXJldHVybiB2KHIpfShuLlhGQU9iamVjdCksb3Q9ZnVuY3Rpb24oZSl7bShyLGUpO3ZhciB0PXcocik7ZnVuY3Rpb24gcihlKXt2YXIgbjtyZXR1cm4geSh0aGlzLHIpLChuPXQuY2FsbCh0aGlzLEYsIm1lZGl1bSIpKS5pZD1lLmlkfHwiIixuLmltYWdpbmdCQm94PSgwLHMuZ2V0QkJveCkoZS5pbWFnaW5nQkJveCksbi5sb25nPSgwLHMuZ2V0TWVhc3VyZW1lbnQpKGUubG9uZyksbi5vcmllbnRhdGlvbj0oMCxzLmdldFN0cmluZ09wdGlvbikoZS5vcmllbnRhdGlvbixbInBvcnRyYWl0IiwibGFuZHNjYXBlIl0pLG4uc2hvcnQ9KDAscy5nZXRNZWFzdXJlbWVudCkoZS5zaG9ydCksbi5zdG9jaz1lLnN0b2NrfHwiIixuLnRyYXlJbj0oMCxzLmdldFN0cmluZ09wdGlvbikoZS50cmF5SW4sWyJhdXRvIiwiZGVsZWdhdGUiLCJwYWdlRnJvbnQiXSksbi50cmF5T3V0PSgwLHMuZ2V0U3RyaW5nT3B0aW9uKShlLnRyYXlPdXQsWyJhdXRvIiwiZGVsZWdhdGUiXSksbi51c2U9ZS51c2V8fCIiLG4udXNlaHJlZj1lLnVzZWhyZWZ8fCIiLG59cmV0dXJuIHYocil9KG4uWEZBT2JqZWN0KSxzdD1mdW5jdGlvbihlKXttKHIsZSk7dmFyIHQ9dyhyKTtmdW5jdGlvbiByKGUpe3ZhciBhO3JldHVybiB5KHRoaXMsciksKGE9dC5jYWxsKHRoaXMsRiwibWVzc2FnZSIsITApKS5pZD1lLmlkfHwiIixhLnVzZT1lLnVzZXx8IiIsYS51c2VocmVmPWUudXNlaHJlZnx8IiIsYS50ZXh0PW5ldyBuLlhGQU9iamVjdEFycmF5LGF9cmV0dXJuIHYocil9KG4uWEZBT2JqZWN0KSxjdD1mdW5jdGlvbihlKXttKHIsZSk7dmFyIHQ9dyhyKTtmdW5jdGlvbiByKGUpe3ZhciBuO3JldHVybiB5KHRoaXMsciksKG49dC5jYWxsKHRoaXMsRiwibnVtZXJpY0VkaXQiLCEwKSkuaFNjcm9sbFBvbGljeT0oMCxzLmdldFN0cmluZ09wdGlvbikoZS5oU2Nyb2xsUG9saWN5LFsiYXV0byIsIm9mZiIsIm9uIl0pLG4uaWQ9ZS5pZHx8IiIsbi51c2U9ZS51c2V8fCIiLG4udXNlaHJlZj1lLnVzZWhyZWZ8fCIiLG4uYm9yZGVyPW51bGwsbi5jb21iPW51bGwsbi5leHRyYXM9bnVsbCxuLm1hcmdpbj1udWxsLG59cmV0dXJuIHYocixbe2tleTpuLiR0b0hUTUwsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9KDAsby50b1N0eWxlKSh0aGlzLCJib3JkZXIiLCJmb250IiwibWFyZ2luIikscj10aGlzW24uJGdldFBhcmVudF0oKVtuLiRnZXRQYXJlbnRdKCksYT17bmFtZToiaW5wdXQiLGF0dHJpYnV0ZXM6e3R5cGU6InRleHQiLGZpZWxkSWQ6cltuLiR1aWRdLGRhdGFJZDpyW24uJGRhdGFdJiZyW24uJGRhdGFdW24uJHVpZF18fHJbbi4kdWlkXSxjbGFzczpbInhmYVRleHRmaWVsZCJdLHN0eWxlOnQsImFyaWEtbGFiZWwiOkIociksImFyaWEtcmVxdWlyZWQiOiExfX07cmV0dXJuIFIocikmJihhLmF0dHJpYnV0ZXNbImFyaWEtcmVxdWlyZWQiXT0hMCxhLmF0dHJpYnV0ZXMucmVxdWlyZWQ9ITApLHMuSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJsYWJlbCIsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFMYWJlbCJdfSxjaGlsZHJlbjpbYV19KX19XSkscn0obi5YRkFPYmplY3QpLHV0PWZ1bmN0aW9uKGUpe20ocixlKTt2YXIgdD13KHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG47cmV0dXJuIHkodGhpcyxyKSwobj10LmNhbGwodGhpcyxGLCJvY2N1ciIsITApKS5pZD1lLmlkfHwiIixuLmluaXRpYWw9IiIhPT1lLmluaXRpYWw/KDAscy5nZXRJbnRlZ2VyKSh7ZGF0YTplLmluaXRpYWwsZGVmYXVsdFZhbHVlOiIiLHZhbGlkYXRlOmZ1bmN0aW9uKGUpe3JldHVybiEwfX0pOiIiLG4ubWF4PSIiIT09ZS5tYXg/KDAscy5nZXRJbnRlZ2VyKSh7ZGF0YTplLm1heCxkZWZhdWx0VmFsdWU6MSx2YWxpZGF0ZTpmdW5jdGlvbihlKXtyZXR1cm4hMH19KToiIixuLm1pbj0iIiE9PWUubWluPygwLHMuZ2V0SW50ZWdlcikoe2RhdGE6ZS5taW4sZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuITB9fSk6IiIsbi51c2U9ZS51c2V8fCIiLG4udXNlaHJlZj1lLnVzZWhyZWZ8fCIiLG4uZXh0cmFzPW51bGwsbn1yZXR1cm4gdihyLFt7a2V5Om4uJGNsZWFuLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpc1tuLiRnZXRQYXJlbnRdKCksdD10aGlzLm1pbjsiIj09PXRoaXMubWluJiYodGhpcy5taW49ZSBpbnN0YW5jZW9mIGR0fHxlIGluc3RhbmNlb2YgcHQ/MDoxKSwiIj09PXRoaXMubWF4JiYodGhpcy5tYXg9IiI9PT10P2UgaW5zdGFuY2VvZiBkdHx8ZSBpbnN0YW5jZW9mIHB0Py0xOjE6dGhpcy5taW4pLC0xIT09dGhpcy5tYXgmJnRoaXMubWF4PHRoaXMubWluJiYodGhpcy5tYXg9dGhpcy5taW4pLCIiPT09dGhpcy5pbml0aWFsJiYodGhpcy5pbml0aWFsPWUgaW5zdGFuY2VvZiBEdD8xOnRoaXMubWluKX19XSkscn0obi5YRkFPYmplY3QpLGx0PWZ1bmN0aW9uKGUpe20ocixlKTt2YXIgdD13KHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG47cmV0dXJuIHkodGhpcyxyKSwobj10LmNhbGwodGhpcyxGLCJvaWQiKSkuaWQ9ZS5pZHx8IiIsbi5uYW1lPWUubmFtZXx8IiIsbi51c2U9ZS51c2V8fCIiLG4udXNlaHJlZj1lLnVzZWhyZWZ8fCIiLG59cmV0dXJuIHYocil9KG4uU3RyaW5nT2JqZWN0KSxmdD1mdW5jdGlvbihlKXttKHIsZSk7dmFyIHQ9dyhyKTtmdW5jdGlvbiByKGUpe3ZhciBhO3JldHVybiB5KHRoaXMsciksKGE9dC5jYWxsKHRoaXMsRiwib2lkcyIsITApKS5pZD1lLmlkfHwiIixhLnR5cGU9KDAscy5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSksYS51c2U9ZS51c2V8fCIiLGEudXNlaHJlZj1lLnVzZWhyZWZ8fCIiLGEub2lkPW5ldyBuLlhGQU9iamVjdEFycmF5LGF9cmV0dXJuIHYocil9KG4uWEZBT2JqZWN0KSxodD1mdW5jdGlvbihlKXttKHIsZSk7dmFyIHQ9dyhyKTtmdW5jdGlvbiByKGUpe3ZhciBuO3JldHVybiB5KHRoaXMsciksKG49dC5jYWxsKHRoaXMsRiwib3ZlcmZsb3ciKSkuaWQ9ZS5pZHx8IiIsbi5sZWFkZXI9ZS5sZWFkZXJ8fCIiLG4udGFyZ2V0PWUudGFyZ2V0fHwiIixuLnRyYWlsZXI9ZS50cmFpbGVyfHwiIixuLnVzZT1lLnVzZXx8IiIsbi51c2VocmVmPWUudXNlaHJlZnx8IiIsbn1yZXR1cm4gdihyLFt7a2V5Om4uJGdldEV4dHJhLHZhbHVlOmZ1bmN0aW9uKCl7aWYoIXRoaXNbbi4kZXh0cmFdKXt2YXIgZT10aGlzW24uJGdldFBhcmVudF0oKSx0PXRoaXNbbi4kZ2V0VGVtcGxhdGVSb290XSgpLHI9dFtuLiRzZWFyY2hOb2RlXSh0aGlzLnRhcmdldCxlKSxhPXRbbi4kc2VhcmNoTm9kZV0odGhpcy5sZWFkZXIsZSksaT10W24uJHNlYXJjaE5vZGVdKHRoaXMudHJhaWxlcixlKTt0aGlzW24uJGV4dHJhXT17dGFyZ2V0OnImJnJbMF18fG51bGwsbGVhZGVyOmEmJmFbMF18fG51bGwsdHJhaWxlcjppJiZpWzBdfHxudWxsLGFkZExlYWRlcjohMSxhZGRUcmFpbGVyOiExfX1yZXR1cm4gdGhpc1tuLiRleHRyYV19fV0pLHJ9KG4uWEZBT2JqZWN0KSxkdD1mdW5jdGlvbihlKXttKHIsZSk7dmFyIHQ9dyhyKTtmdW5jdGlvbiByKGUpe3ZhciBhO3JldHVybiB5KHRoaXMsciksKGE9dC5jYWxsKHRoaXMsRiwicGFnZUFyZWEiLCEwKSkuYmxhbmtPck5vdEJsYW5rPSgwLHMuZ2V0U3RyaW5nT3B0aW9uKShlLmJsYW5rT3JOb3RCbGFuayxbImFueSIsImJsYW5rIiwibm90QmxhbmsiXSksYS5pZD1lLmlkfHwiIixhLmluaXRpYWxOdW1iZXI9KDAscy5nZXRJbnRlZ2VyKSh7ZGF0YTplLmluaXRpYWxOdW1iZXIsZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuITB9fSksYS5uYW1lPWUubmFtZXx8IiIsYS5udW1iZXJlZD0oMCxzLmdldEludGVnZXIpKHtkYXRhOmUubnVtYmVyZWQsZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuITB9fSksYS5vZGRPckV2ZW49KDAscy5nZXRTdHJpbmdPcHRpb24pKGUub2RkT3JFdmVuLFsiYW55IiwiZXZlbiIsIm9kZCJdKSxhLnBhZ2VQb3NpdGlvbj0oMCxzLmdldFN0cmluZ09wdGlvbikoZS5wYWdlUG9zaXRpb24sWyJhbnkiLCJmaXJzdCIsImxhc3QiLCJvbmx5IiwicmVzdCJdKSxhLnJlbGV2YW50PSgwLHMuZ2V0UmVsZXZhbnQpKGUucmVsZXZhbnQpLGEudXNlPWUudXNlfHwiIixhLnVzZWhyZWY9ZS51c2VocmVmfHwiIixhLmRlc2M9bnVsbCxhLmV4dHJhcz1udWxsLGEubWVkaXVtPW51bGwsYS5vY2N1cj1udWxsLGEuYXJlYT1uZXcgbi5YRkFPYmplY3RBcnJheSxhLmNvbnRlbnRBcmVhPW5ldyBuLlhGQU9iamVjdEFycmF5LGEuZHJhdz1uZXcgbi5YRkFPYmplY3RBcnJheSxhLmV4Y2xHcm91cD1uZXcgbi5YRkFPYmplY3RBcnJheSxhLmZpZWxkPW5ldyBuLlhGQU9iamVjdEFycmF5LGEuc3ViZm9ybT1uZXcgbi5YRkFPYmplY3RBcnJheSxhfXJldHVybiB2KHIsW3trZXk6bi4kaXNVc2FibGUsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc1tuLiRleHRyYV0/IXRoaXMub2NjdXJ8fC0xPT09dGhpcy5vY2N1ci5tYXh8fHRoaXNbbi4kZXh0cmFdLm51bWJlck9mVXNlPHRoaXMub2NjdXIubWF4Oih0aGlzW24uJGV4dHJhXT17bnVtYmVyT2ZVc2U6MH0sITApfX0se2tleTpuLiRjbGVhblBhZ2UsdmFsdWU6ZnVuY3Rpb24oKXtkZWxldGUgdGhpc1tuLiRleHRyYV19fSx7a2V5Om4uJGdldE5leHRQYWdlLHZhbHVlOmZ1bmN0aW9uKCl7dGhpc1tuLiRleHRyYV18fCh0aGlzW24uJGV4dHJhXT17bnVtYmVyT2ZVc2U6MH0pO3ZhciBlPXRoaXNbbi4kZ2V0UGFyZW50XSgpO3JldHVybiJvcmRlcmVkT2NjdXJyZW5jZSI9PT1lLnJlbGF0aW9uJiZ0aGlzW24uJGlzVXNhYmxlXSgpPyh0aGlzW24uJGV4dHJhXS5udW1iZXJPZlVzZSs9MSx0aGlzKTplW24uJGdldE5leHRQYWdlXSgpfX0se2tleTpuLiRnZXRBdmFpbGFibGVTcGFjZSx2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzW24uJGV4dHJhXS5zcGFjZXx8e3dpZHRoOjAsaGVpZ2h0OjB9fX0se2tleTpuLiR0b0hUTUwsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzW24uJGV4dHJhXXx8KHRoaXNbbi4kZXh0cmFdPXtudW1iZXJPZlVzZToxfSk7dmFyIGU9W107dGhpc1tuLiRleHRyYV0uY2hpbGRyZW49ZTt2YXIgdD1PYmplY3QuY3JlYXRlKG51bGwpO2lmKHRoaXMubWVkaXVtJiZ0aGlzLm1lZGl1bS5zaG9ydCYmdGhpcy5tZWRpdW0ubG9uZyl7aWYodC53aWR0aD0oMCxvLm1lYXN1cmVUb1N0cmluZykodGhpcy5tZWRpdW0uc2hvcnQpLHQuaGVpZ2h0PSgwLG8ubWVhc3VyZVRvU3RyaW5nKSh0aGlzLm1lZGl1bS5sb25nKSx0aGlzW24uJGV4dHJhXS5zcGFjZT17d2lkdGg6dGhpcy5tZWRpdW0uc2hvcnQsaGVpZ2h0OnRoaXMubWVkaXVtLmxvbmd9LCJsYW5kc2NhcGUiPT09dGhpcy5tZWRpdW0ub3JpZW50YXRpb24pe3ZhciByPXQud2lkdGg7dC53aWR0aD10LmhlaWdodCx0LmhlaWdodD1yLHRoaXNbbi4kZXh0cmFdLnNwYWNlPXt3aWR0aDp0aGlzLm1lZGl1bS5sb25nLGhlaWdodDp0aGlzLm1lZGl1bS5zaG9ydH19fWVsc2UoMCxjLndhcm4pKCJYRkEgLSBObyBtZWRpdW0gc3BlY2lmaWVkIGluIHBhZ2VBcmVhOiBwbGVhc2UgZmlsZSBhIGJ1Zy4iKTtyZXR1cm4gdGhpc1tuLiRjaGlsZHJlblRvSFRNTF0oe2ZpbHRlcjpuZXcgU2V0KFsiYXJlYSIsImRyYXciLCJmaWVsZCIsInN1YmZvcm0iXSksaW5jbHVkZTohMH0pLHRoaXNbbi4kY2hpbGRyZW5Ub0hUTUxdKHtmaWx0ZXI6bmV3IFNldChbImNvbnRlbnRBcmVhIl0pLGluY2x1ZGU6ITB9KSxzLkhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixjaGlsZHJlbjplLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhUGFnZSJdLGlkOnRoaXNbbi4kdWlkXSxzdHlsZTp0LHhmYU5hbWU6dGhpcy5uYW1lfX0pfX1dKSxyfShuLlhGQU9iamVjdCkscHQ9ZnVuY3Rpb24oZSl7bShyLGUpO3ZhciB0PXcocik7ZnVuY3Rpb24gcihlKXt2YXIgYTtyZXR1cm4geSh0aGlzLHIpLChhPXQuY2FsbCh0aGlzLEYsInBhZ2VTZXQiLCEwKSkuZHVwbGV4SW1wb3NpdGlvbj0oMCxzLmdldFN0cmluZ09wdGlvbikoZS5kdXBsZXhJbXBvc2l0aW9uLFsibG9uZ0VkZ2UiLCJzaG9ydEVkZ2UiXSksYS5pZD1lLmlkfHwiIixhLm5hbWU9ZS5uYW1lfHwiIixhLnJlbGF0aW9uPSgwLHMuZ2V0U3RyaW5nT3B0aW9uKShlLnJlbGF0aW9uLFsib3JkZXJlZE9jY3VycmVuY2UiLCJkdXBsZXhQYWdpbmF0ZWQiLCJzaW1wbGV4UGFnaW5hdGVkIl0pLGEucmVsZXZhbnQ9KDAscy5nZXRSZWxldmFudCkoZS5yZWxldmFudCksYS51c2U9ZS51c2V8fCIiLGEudXNlaHJlZj1lLnVzZWhyZWZ8fCIiLGEuZXh0cmFzPW51bGwsYS5vY2N1cj1udWxsLGEucGFnZUFyZWE9bmV3IG4uWEZBT2JqZWN0QXJyYXksYS5wYWdlU2V0PW5ldyBuLlhGQU9iamVjdEFycmF5LGF9cmV0dXJuIHYocixbe2tleTpuLiRjbGVhblBhZ2UsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZSx0PU8odGhpcy5wYWdlQXJlYS5jaGlsZHJlbik7dHJ5e2Zvcih0LnMoKTshKGU9dC5uKCkpLmRvbmU7KWUudmFsdWVbbi4kY2xlYW5QYWdlXSgpfWNhdGNoKGUpe3QuZShlKX1maW5hbGx5e3QuZigpfXZhciByLGE9Tyh0aGlzLnBhZ2VTZXQuY2hpbGRyZW4pO3RyeXtmb3IoYS5zKCk7IShyPWEubigpKS5kb25lOylyLnZhbHVlW24uJGNsZWFuUGFnZV0oKX1jYXRjaChlKXthLmUoZSl9ZmluYWxseXthLmYoKX19fSx7a2V5Om4uJGlzVXNhYmxlLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMub2NjdXJ8fC0xPT09dGhpcy5vY2N1ci5tYXh8fHRoaXNbbi4kZXh0cmFdLm51bWJlck9mVXNlPHRoaXMub2NjdXIubWF4fX0se2tleTpuLiRnZXROZXh0UGFnZSx2YWx1ZTpmdW5jdGlvbigpe2lmKHRoaXNbbi4kZXh0cmFdfHwodGhpc1tuLiRleHRyYV09e251bWJlck9mVXNlOjEscGFnZUluZGV4Oi0xLHBhZ2VTZXRJbmRleDotMX0pLCJvcmRlcmVkT2NjdXJyZW5jZSI9PT10aGlzLnJlbGF0aW9uKXtpZih0aGlzW24uJGV4dHJhXS5wYWdlSW5kZXgrMTx0aGlzLnBhZ2VBcmVhLmNoaWxkcmVuLmxlbmd0aClyZXR1cm4gdGhpc1tuLiRleHRyYV0ucGFnZUluZGV4Kz0xLHRoaXMucGFnZUFyZWEuY2hpbGRyZW5bdGhpc1tuLiRleHRyYV0ucGFnZUluZGV4XVtuLiRnZXROZXh0UGFnZV0oKTtpZih0aGlzW24uJGV4dHJhXS5wYWdlU2V0SW5kZXgrMTx0aGlzLnBhZ2VTZXQuY2hpbGRyZW4ubGVuZ3RoKXJldHVybiB0aGlzW24uJGV4dHJhXS5wYWdlU2V0SW5kZXgrPTEsdGhpcy5wYWdlU2V0LmNoaWxkcmVuW3RoaXNbbi4kZXh0cmFdLnBhZ2VTZXRJbmRleF1bbi4kZ2V0TmV4dFBhZ2VdKCk7aWYodGhpc1tuLiRpc1VzYWJsZV0oKSlyZXR1cm4gdGhpc1tuLiRleHRyYV0ubnVtYmVyT2ZVc2UrPTEsdGhpc1tuLiRleHRyYV0ucGFnZUluZGV4PS0xLHRoaXNbbi4kZXh0cmFdLnBhZ2VTZXRJbmRleD0tMSx0aGlzW24uJGdldE5leHRQYWdlXSgpO3ZhciBlPXRoaXNbbi4kZ2V0UGFyZW50XSgpO3JldHVybiBlIGluc3RhbmNlb2Ygcj9lW24uJGdldE5leHRQYWdlXSgpOih0aGlzW24uJGNsZWFuUGFnZV0oKSx0aGlzW24uJGdldE5leHRQYWdlXSgpKX12YXIgdD10aGlzW24uJGdldFRlbXBsYXRlUm9vdF0oKVtuLiRleHRyYV0ucGFnZU51bWJlcixhPXQlMj09MD8iZXZlbiI6Im9kZCIsaT0wPT09dD8iZmlyc3QiOiJyZXN0IixvPXRoaXMucGFnZUFyZWEuY2hpbGRyZW4uZmluZCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUub2RkT3JFdmVuPT09YSYmZS5wYWdlUG9zaXRpb249PT1pfSkpO3JldHVybiBvfHwoKG89dGhpcy5wYWdlQXJlYS5jaGlsZHJlbi5maW5kKChmdW5jdGlvbihlKXtyZXR1cm4iYW55Ij09PWUub2RkT3JFdmVuJiZlLnBhZ2VQb3NpdGlvbj09PWl9KSkpP286KG89dGhpcy5wYWdlQXJlYS5jaGlsZHJlbi5maW5kKChmdW5jdGlvbihlKXtyZXR1cm4iYW55Ij09PWUub2RkT3JFdmVuJiYiYW55Ij09PWUucGFnZVBvc2l0aW9ufSkpKXx8dGhpcy5wYWdlQXJlYS5jaGlsZHJlblswXSl9fV0pLHJ9KG4uWEZBT2JqZWN0KSxndD1mdW5jdGlvbihlKXttKHIsZSk7dmFyIHQ9dyhyKTtmdW5jdGlvbiByKGUpe3ZhciBuO3JldHVybiB5KHRoaXMsciksKG49dC5jYWxsKHRoaXMsRiwicGFyYSIsITApKS5oQWxpZ249KDAscy5nZXRTdHJpbmdPcHRpb24pKGUuaEFsaWduLFsibGVmdCIsImNlbnRlciIsImp1c3RpZnkiLCJqdXN0aWZ5QWxsIiwicmFkaXgiLCJyaWdodCJdKSxuLmlkPWUuaWR8fCIiLG4ubGluZUhlaWdodD1lLmxpbmVIZWlnaHQ/KDAscy5nZXRNZWFzdXJlbWVudCkoZS5saW5lSGVpZ2h0LCIwcHQiKToiIixuLm1hcmdpbkxlZnQ9ZS5tYXJnaW5MZWZ0PygwLHMuZ2V0TWVhc3VyZW1lbnQpKGUubWFyZ2luTGVmdCwiMHB0Iik6IiIsbi5tYXJnaW5SaWdodD1lLm1hcmdpblJpZ2h0PygwLHMuZ2V0TWVhc3VyZW1lbnQpKGUubWFyZ2luUmlnaHQsIjBwdCIpOiIiLG4ub3JwaGFucz0oMCxzLmdldEludGVnZXIpKHtkYXRhOmUub3JwaGFucyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTpmdW5jdGlvbihlKXtyZXR1cm4gZT49MH19KSxuLnByZXNlcnZlPWUucHJlc2VydmV8fCIiLG4ucmFkaXhPZmZzZXQ9ZS5yYWRpeE9mZnNldD8oMCxzLmdldE1lYXN1cmVtZW50KShlLnJhZGl4T2Zmc2V0LCIwcHQiKToiIixuLnNwYWNlQWJvdmU9ZS5zcGFjZUFib3ZlPygwLHMuZ2V0TWVhc3VyZW1lbnQpKGUuc3BhY2VBYm92ZSwiMHB0Iik6IiIsbi5zcGFjZUJlbG93PWUuc3BhY2VCZWxvdz8oMCxzLmdldE1lYXN1cmVtZW50KShlLnNwYWNlQmVsb3csIjBwdCIpOiIiLG4udGFiRGVmYXVsdD1lLnRhYkRlZmF1bHQ/KDAscy5nZXRNZWFzdXJlbWVudCkobi50YWJEZWZhdWx0KToiIixuLnRhYlN0b3BzPShlLnRhYlN0b3BzfHwiIikudHJpbSgpLnNwbGl0KC9ccysvKS5tYXAoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQlMj09MT8oMCxzLmdldE1lYXN1cmVtZW50KShlKTplfSkpLG4udGV4dEluZGVudD1lLnRleHRJbmRlbnQ/KDAscy5nZXRNZWFzdXJlbWVudCkoZS50ZXh0SW5kZW50LCIwcHQiKToiIixuLnVzZT1lLnVzZXx8IiIsbi51c2VocmVmPWUudXNlaHJlZnx8IiIsbi52QWxpZ249KDAscy5nZXRTdHJpbmdPcHRpb24pKGUudkFsaWduLFsidG9wIiwiYm90dG9tIiwibWlkZGxlIl0pLG4ud2lkb3dzPSgwLHMuZ2V0SW50ZWdlcikoe2RhdGE6ZS53aWRvd3MsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuIGU+PTB9fSksbi5oeXBoZW5hdGlvbj1udWxsLG59cmV0dXJuIHYocixbe2tleTpuLiR0b1N0eWxlLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9KDAsby50b1N0eWxlKSh0aGlzLCJoQWxpZ24iKTtyZXR1cm4iIiE9PXRoaXMubWFyZ2luTGVmdCYmKGUucGFkZGluZ0xlZnQ9KDAsby5tZWFzdXJlVG9TdHJpbmcpKHRoaXMubWFyZ2luTGVmdCkpLCIiIT09dGhpcy5tYXJnaW5SaWdodCYmKGUucGFkZGluZ2lnaHQ9KDAsby5tZWFzdXJlVG9TdHJpbmcpKHRoaXMubWFyZ2luUmlnaHQpKSwiIiE9PXRoaXMuc3BhY2VBYm92ZSYmKGUucGFkZGluZ1RvcD0oMCxvLm1lYXN1cmVUb1N0cmluZykodGhpcy5zcGFjZUFib3ZlKSksIiIhPT10aGlzLnNwYWNlQmVsb3cmJihlLnBhZGRpbmdCb3R0b209KDAsby5tZWFzdXJlVG9TdHJpbmcpKHRoaXMuc3BhY2VCZWxvdykpLCIiIT09dGhpcy50ZXh0SW5kZW50JiYoZS50ZXh0SW5kZW50PSgwLG8ubWVhc3VyZVRvU3RyaW5nKSh0aGlzLnRleHRJbmRlbnQpLCgwLG8uZml4VGV4dEluZGVudCkoZSkpLHRoaXMubGluZUhlaWdodD4wJiYoZS5saW5lSGVpZ2h0PSgwLG8ubWVhc3VyZVRvU3RyaW5nKSh0aGlzLmxpbmVIZWlnaHQpKSwiIiE9PXRoaXMudGFiRGVmYXVsdCYmKGUudGFiU2l6ZT0oMCxvLm1lYXN1cmVUb1N0cmluZykodGhpcy50YWJEZWZhdWx0KSksdGhpcy50YWJTdG9wcy5sZW5ndGgsdGhpcy5oeXBoZW5hdGF0aW9uJiZPYmplY3QuYXNzaWduKGUsdGhpcy5oeXBoZW5hdGF0aW9uW24uJHRvU3R5bGVdKCkpLGV9fV0pLHJ9KG4uWEZBT2JqZWN0KSx2dD1mdW5jdGlvbihlKXttKHIsZSk7dmFyIHQ9dyhyKTtmdW5jdGlvbiByKGUpe3ZhciBuO3JldHVybiB5KHRoaXMsciksKG49dC5jYWxsKHRoaXMsRiwicGFzc3dvcmRFZGl0IiwhMCkpLmhTY3JvbGxQb2xpY3k9KDAscy5nZXRTdHJpbmdPcHRpb24pKGUuaFNjcm9sbFBvbGljeSxbImF1dG8iLCJvZmYiLCJvbiJdKSxuLmlkPWUuaWR8fCIiLG4ucGFzc3dvcmRDaGFyPWUucGFzc3dvcmRDaGFyfHwiKiIsbi51c2U9ZS51c2V8fCIiLG4udXNlaHJlZj1lLnVzZWhyZWZ8fCIiLG4uYm9yZGVyPW51bGwsbi5leHRyYXM9bnVsbCxuLm1hcmdpbj1udWxsLG59cmV0dXJuIHYocil9KG4uWEZBT2JqZWN0KSx5dD1mdW5jdGlvbihlKXttKHIsZSk7dmFyIHQ9dyhyKTtmdW5jdGlvbiByKGUpe3ZhciBuO3JldHVybiB5KHRoaXMsciksKG49dC5jYWxsKHRoaXMsRiwicGF0dGVybiIsITApKS5pZD1lLmlkfHwiIixuLnR5cGU9KDAscy5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbImNyb3NzSGF0Y2giLCJjcm9zc0RpYWdvbmFsIiwiZGlhZ29uYWxMZWZ0IiwiZGlhZ29uYWxSaWdodCIsImhvcml6b250YWwiLCJ2ZXJ0aWNhbCJdKSxuLnVzZT1lLnVzZXx8IiIsbi51c2VocmVmPWUudXNlaHJlZnx8IiIsbi5jb2xvcj1udWxsLG4uZXh0cmFzPW51bGwsbn1yZXR1cm4gdihyLFt7a2V5Om4uJHRvU3R5bGUsdmFsdWU6ZnVuY3Rpb24oZSl7ZT1lP2Vbbi4kdG9TdHlsZV0oKToiI0ZGRkZGRiI7dmFyIHQ9dGhpcy5jb2xvcj90aGlzLmNvbG9yW24uJHRvU3R5bGVdKCk6IiMwMDAwMDAiLHI9InJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQiLGE9IiIuY29uY2F0KGUsIiwiKS5jb25jYXQoZSwiICIpLmNvbmNhdCg1LCJweCwiKS5jb25jYXQodCwiICIpLmNvbmNhdCg1LCJweCwiKS5jb25jYXQodCwiICIpLmNvbmNhdCgxMCwicHgiKTtzd2l0Y2godGhpcy50eXBlKXtjYXNlImNyb3NzSGF0Y2giOnJldHVybiIiLmNvbmNhdChyLCIodG8gdG9wLCIpLmNvbmNhdChhLCIpICIpLmNvbmNhdChyLCIodG8gcmlnaHQsIikuY29uY2F0KGEsIikiKTtjYXNlImNyb3NzRGlhZ29uYWwiOnJldHVybiIiLmNvbmNhdChyLCIoNDVkZWcsIikuY29uY2F0KGEsIikgIikuY29uY2F0KHIsIigtNDVkZWcsIikuY29uY2F0KGEsIikiKTtjYXNlImRpYWdvbmFsTGVmdCI6cmV0dXJuIiIuY29uY2F0KHIsIig0NWRlZywiKS5jb25jYXQoYSwiKSIpO2Nhc2UiZGlhZ29uYWxSaWdodCI6cmV0dXJuIiIuY29uY2F0KHIsIigtNDVkZWcsIikuY29uY2F0KGEsIikiKTtjYXNlImhvcml6b250YWwiOnJldHVybiIiLmNvbmNhdChyLCIodG8gdG9wLCIpLmNvbmNhdChhLCIpIik7Y2FzZSJ2ZXJ0aWNhbCI6cmV0dXJuIiIuY29uY2F0KHIsIih0byByaWdodCwiKS5jb25jYXQoYSwiKSIpfXJldHVybiIifX1dKSxyfShuLlhGQU9iamVjdCksbXQ9ZnVuY3Rpb24oZSl7bShyLGUpO3ZhciB0PXcocik7ZnVuY3Rpb24gcihlKXt2YXIgbjtyZXR1cm4geSh0aGlzLHIpLChuPXQuY2FsbCh0aGlzLEYsInBpY3R1cmUiKSkuaWQ9ZS5pZHx8IiIsbi51c2U9ZS51c2V8fCIiLG4udXNlaHJlZj1lLnVzZWhyZWZ8fCIiLG59cmV0dXJuIHYocil9KG4uU3RyaW5nT2JqZWN0KSxidD1mdW5jdGlvbihlKXttKHIsZSk7dmFyIHQ9dyhyKTtmdW5jdGlvbiByKGUpe3ZhciBhO3JldHVybiB5KHRoaXMsciksKGE9dC5jYWxsKHRoaXMsRiwicHJvdG8iLCEwKSkuYXBwZWFyYW5jZUZpbHRlcj1uZXcgbi5YRkFPYmplY3RBcnJheSxhLmFyYz1uZXcgbi5YRkFPYmplY3RBcnJheSxhLmFyZWE9bmV3IG4uWEZBT2JqZWN0QXJyYXksYS5hc3Npc3Q9bmV3IG4uWEZBT2JqZWN0QXJyYXksYS5iYXJjb2RlPW5ldyBuLlhGQU9iamVjdEFycmF5LGEuYmluZEl0ZW1zPW5ldyBuLlhGQU9iamVjdEFycmF5LGEuYm9va2VuZD1uZXcgbi5YRkFPYmplY3RBcnJheSxhLmJvb2xlYW49bmV3IG4uWEZBT2JqZWN0QXJyYXksYS5ib3JkZXI9bmV3IG4uWEZBT2JqZWN0QXJyYXksYS5icmVhaz1uZXcgbi5YRkFPYmplY3RBcnJheSxhLmJyZWFrQWZ0ZXI9bmV3IG4uWEZBT2JqZWN0QXJyYXksYS5icmVha0JlZm9yZT1uZXcgbi5YRkFPYmplY3RBcnJheSxhLmJ1dHRvbj1uZXcgbi5YRkFPYmplY3RBcnJheSxhLmNhbGN1bGF0ZT1uZXcgbi5YRkFPYmplY3RBcnJheSxhLmNhcHRpb249bmV3IG4uWEZBT2JqZWN0QXJyYXksYS5jZXJ0aWZpY2F0ZT1uZXcgbi5YRkFPYmplY3RBcnJheSxhLmNlcnRpZmljYXRlcz1uZXcgbi5YRkFPYmplY3RBcnJheSxhLmNoZWNrQnV0dG9uPW5ldyBuLlhGQU9iamVjdEFycmF5LGEuY2hvaWNlTGlzdD1uZXcgbi5YRkFPYmplY3RBcnJheSxhLmNvbG9yPW5ldyBuLlhGQU9iamVjdEFycmF5LGEuY29tYj1uZXcgbi5YRkFPYmplY3RBcnJheSxhLmNvbm5lY3Q9bmV3IG4uWEZBT2JqZWN0QXJyYXksYS5jb250ZW50QXJlYT1uZXcgbi5YRkFPYmplY3RBcnJheSxhLmNvcm5lcj1uZXcgbi5YRkFPYmplY3RBcnJheSxhLmRhdGU9bmV3IG4uWEZBT2JqZWN0QXJyYXksYS5kYXRlVGltZT1uZXcgbi5YRkFPYmplY3RBcnJheSxhLmRhdGVUaW1lRWRpdD1uZXcgbi5YRkFPYmplY3RBcnJheSxhLmRlY2ltYWw9bmV3IG4uWEZBT2JqZWN0QXJyYXksYS5kZWZhdWx0VWk9bmV3IG4uWEZBT2JqZWN0QXJyYXksYS5kZXNjPW5ldyBuLlhGQU9iamVjdEFycmF5LGEuZGlnZXN0TWV0aG9kPW5ldyBuLlhGQU9iamVjdEFycmF5LGEuZGlnZXN0TWV0aG9kcz1uZXcgbi5YRkFPYmplY3RBcnJheSxhLmRyYXc9bmV3IG4uWEZBT2JqZWN0QXJyYXksYS5lZGdlPW5ldyBuLlhGQU9iamVjdEFycmF5LGEuZW5jb2Rpbmc9bmV3IG4uWEZBT2JqZWN0QXJyYXksYS5lbmNvZGluZ3M9bmV3IG4uWEZBT2JqZWN0QXJyYXksYS5lbmNyeXB0PW5ldyBuLlhGQU9iamVjdEFycmF5LGEuZW5jcnlwdERhdGE9bmV3IG4uWEZBT2JqZWN0QXJyYXksYS5lbmNyeXB0aW9uPW5ldyBuLlhGQU9iamVjdEFycmF5LGEuZW5jcnlwdGlvbk1ldGhvZD1uZXcgbi5YRkFPYmplY3RBcnJheSxhLmVuY3J5cHRpb25NZXRob2RzPW5ldyBuLlhGQU9iamVjdEFycmF5LGEuZXZlbnQ9bmV3IG4uWEZBT2JqZWN0QXJyYXksYS5leERhdGE9bmV3IG4uWEZBT2JqZWN0QXJyYXksYS5leE9iamVjdD1uZXcgbi5YRkFPYmplY3RBcnJheSxhLmV4Y2xHcm91cD1uZXcgbi5YRkFPYmplY3RBcnJheSxhLmV4ZWN1dGU9bmV3IG4uWEZBT2JqZWN0QXJyYXksYS5leHRyYXM9bmV3IG4uWEZBT2JqZWN0QXJyYXksYS5maWVsZD1uZXcgbi5YRkFPYmplY3RBcnJheSxhLmZpbGw9bmV3IG4uWEZBT2JqZWN0QXJyYXksYS5maWx0ZXI9bmV3IG4uWEZBT2JqZWN0QXJyYXksYS5mbG9hdD1uZXcgbi5YRkFPYmplY3RBcnJheSxhLmZvbnQ9bmV3IG4uWEZBT2JqZWN0QXJyYXksYS5mb3JtYXQ9bmV3IG4uWEZBT2JqZWN0QXJyYXksYS5oYW5kbGVyPW5ldyBuLlhGQU9iamVjdEFycmF5LGEuaHlwaGVuYXRpb249bmV3IG4uWEZBT2JqZWN0QXJyYXksYS5pbWFnZT1uZXcgbi5YRkFPYmplY3RBcnJheSxhLmltYWdlRWRpdD1uZXcgbi5YRkFPYmplY3RBcnJheSxhLmludGVnZXI9bmV3IG4uWEZBT2JqZWN0QXJyYXksYS5pc3N1ZXJzPW5ldyBuLlhGQU9iamVjdEFycmF5LGEuaXRlbXM9bmV3IG4uWEZBT2JqZWN0QXJyYXksYS5rZWVwPW5ldyBuLlhGQU9iamVjdEFycmF5LGEua2V5VXNhZ2U9bmV3IG4uWEZBT2JqZWN0QXJyYXksYS5saW5lPW5ldyBuLlhGQU9iamVjdEFycmF5LGEubGluZWFyPW5ldyBuLlhGQU9iamVjdEFycmF5LGEubG9ja0RvY3VtZW50PW5ldyBuLlhGQU9iamVjdEFycmF5LGEubWFuaWZlc3Q9bmV3IG4uWEZBT2JqZWN0QXJyYXksYS5tYXJnaW49bmV3IG4uWEZBT2JqZWN0QXJyYXksYS5tZHA9bmV3IG4uWEZBT2JqZWN0QXJyYXksYS5tZWRpdW09bmV3IG4uWEZBT2JqZWN0QXJyYXksYS5tZXNzYWdlPW5ldyBuLlhGQU9iamVjdEFycmF5LGEubnVtZXJpY0VkaXQ9bmV3IG4uWEZBT2JqZWN0QXJyYXksYS5vY2N1cj1uZXcgbi5YRkFPYmplY3RBcnJheSxhLm9pZD1uZXcgbi5YRkFPYmplY3RBcnJheSxhLm9pZHM9bmV3IG4uWEZBT2JqZWN0QXJyYXksYS5vdmVyZmxvdz1uZXcgbi5YRkFPYmplY3RBcnJheSxhLnBhZ2VBcmVhPW5ldyBuLlhGQU9iamVjdEFycmF5LGEucGFnZVNldD1uZXcgbi5YRkFPYmplY3RBcnJheSxhLnBhcmE9bmV3IG4uWEZBT2JqZWN0QXJyYXksYS5wYXNzd29yZEVkaXQ9bmV3IG4uWEZBT2JqZWN0QXJyYXksYS5wYXR0ZXJuPW5ldyBuLlhGQU9iamVjdEFycmF5LGEucGljdHVyZT1uZXcgbi5YRkFPYmplY3RBcnJheSxhLnJhZGlhbD1uZXcgbi5YRkFPYmplY3RBcnJheSxhLnJlYXNvbj1uZXcgbi5YRkFPYmplY3RBcnJheSxhLnJlYXNvbnM9bmV3IG4uWEZBT2JqZWN0QXJyYXksYS5yZWN0YW5nbGU9bmV3IG4uWEZBT2JqZWN0QXJyYXksYS5yZWY9bmV3IG4uWEZBT2JqZWN0QXJyYXksYS5zY3JpcHQ9bmV3IG4uWEZBT2JqZWN0QXJyYXksYS5zZXRQcm9wZXJ0eT1uZXcgbi5YRkFPYmplY3RBcnJheSxhLnNpZ25EYXRhPW5ldyBuLlhGQU9iamVjdEFycmF5LGEuc2lnbmF0dXJlPW5ldyBuLlhGQU9iamVjdEFycmF5LGEuc2lnbmluZz1uZXcgbi5YRkFPYmplY3RBcnJheSxhLnNvbGlkPW5ldyBuLlhGQU9iamVjdEFycmF5LGEuc3BlYWs9bmV3IG4uWEZBT2JqZWN0QXJyYXksYS5zdGlwcGxlPW5ldyBuLlhGQU9iamVjdEFycmF5LGEuc3ViZm9ybT1uZXcgbi5YRkFPYmplY3RBcnJheSxhLnN1YmZvcm1TZXQ9bmV3IG4uWEZBT2JqZWN0QXJyYXksYS5zdWJqZWN0RE49bmV3IG4uWEZBT2JqZWN0QXJyYXksYS5zdWJqZWN0RE5zPW5ldyBuLlhGQU9iamVjdEFycmF5LGEuc3VibWl0PW5ldyBuLlhGQU9iamVjdEFycmF5LGEudGV4dD1uZXcgbi5YRkFPYmplY3RBcnJheSxhLnRleHRFZGl0PW5ldyBuLlhGQU9iamVjdEFycmF5LGEudGltZT1uZXcgbi5YRkFPYmplY3RBcnJheSxhLnRpbWVTdGFtcD1uZXcgbi5YRkFPYmplY3RBcnJheSxhLnRvb2xUaXA9bmV3IG4uWEZBT2JqZWN0QXJyYXksYS50cmF2ZXJzYWw9bmV3IG4uWEZBT2JqZWN0QXJyYXksYS50cmF2ZXJzZT1uZXcgbi5YRkFPYmplY3RBcnJheSxhLnVpPW5ldyBuLlhGQU9iamVjdEFycmF5LGEudmFsaWRhdGU9bmV3IG4uWEZBT2JqZWN0QXJyYXksYS52YWx1ZT1uZXcgbi5YRkFPYmplY3RBcnJheSxhLnZhcmlhYmxlcz1uZXcgbi5YRkFPYmplY3RBcnJheSxhfXJldHVybiB2KHIpfShuLlhGQU9iamVjdCksd3Q9ZnVuY3Rpb24oZSl7bShyLGUpO3ZhciB0PXcocik7ZnVuY3Rpb24gcihlKXt2YXIgbjtyZXR1cm4geSh0aGlzLHIpLChuPXQuY2FsbCh0aGlzLEYsInJhZGlhbCIsITApKS5pZD1lLmlkfHwiIixuLnR5cGU9KDAscy5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbInRvRWRnZSIsInRvQ2VudGVyIl0pLG4udXNlPWUudXNlfHwiIixuLnVzZWhyZWY9ZS51c2VocmVmfHwiIixuLmNvbG9yPW51bGwsbi5leHRyYXM9bnVsbCxufXJldHVybiB2KHIsW3trZXk6bi4kdG9TdHlsZSx2YWx1ZTpmdW5jdGlvbihlKXtlPWU/ZVtuLiR0b1N0eWxlXSgpOiIjRkZGRkZGIjt2YXIgdD10aGlzLmNvbG9yP3RoaXMuY29sb3Jbbi4kdG9TdHlsZV0oKToiIzAwMDAwMCIscj0idG9FZGdlIj09PXRoaXMudHlwZT8iIi5jb25jYXQoZSwiLCIpLmNvbmNhdCh0KToiIi5jb25jYXQodCwiLCIpLmNvbmNhdChlKTtyZXR1cm4icmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCBjZW50ZXIsICIuY29uY2F0KHIsIikiKX19XSkscn0obi5YRkFPYmplY3QpLGt0PWZ1bmN0aW9uKGUpe20ocixlKTt2YXIgdD13KHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG47cmV0dXJuIHkodGhpcyxyKSwobj10LmNhbGwodGhpcyxGLCJyZWFzb24iKSkuaWQ9ZS5pZHx8IiIsbi5uYW1lPWUubmFtZXx8IiIsbi51c2U9ZS51c2V8fCIiLG4udXNlaHJlZj1lLnVzZWhyZWZ8fCIiLG59cmV0dXJuIHYocil9KG4uU3RyaW5nT2JqZWN0KSxTdD1mdW5jdGlvbihlKXttKHIsZSk7dmFyIHQ9dyhyKTtmdW5jdGlvbiByKGUpe3ZhciBhO3JldHVybiB5KHRoaXMsciksKGE9dC5jYWxsKHRoaXMsRiwicmVhc29ucyIsITApKS5pZD1lLmlkfHwiIixhLnR5cGU9KDAscy5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSksYS51c2U9ZS51c2V8fCIiLGEudXNlaHJlZj1lLnVzZWhyZWZ8fCIiLGEucmVhc29uPW5ldyBuLlhGQU9iamVjdEFycmF5LGF9cmV0dXJuIHYocil9KG4uWEZBT2JqZWN0KSx4dD1mdW5jdGlvbihlKXttKHIsZSk7dmFyIHQ9dyhyKTtmdW5jdGlvbiByKGUpe3ZhciBhO3JldHVybiB5KHRoaXMsciksKGE9dC5jYWxsKHRoaXMsRiwicmVjdGFuZ2xlIiwhMCkpLmhhbmQ9KDAscy5nZXRTdHJpbmdPcHRpb24pKGUuaGFuZCxbImV2ZW4iLCJsZWZ0IiwicmlnaHQiXSksYS5pZD1lLmlkfHwiIixhLnVzZT1lLnVzZXx8IiIsYS51c2VocmVmPWUudXNlaHJlZnx8IiIsYS5jb3JuZXI9bmV3IG4uWEZBT2JqZWN0QXJyYXkoNCksYS5lZGdlPW5ldyBuLlhGQU9iamVjdEFycmF5KDQpLGEuZmlsbD1udWxsLGF9cmV0dXJuIHYocixbe2tleTpuLiR0b0hUTUwsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmVkZ2UuY2hpbGRyZW4ubGVuZ3RoP3RoaXMuZWRnZS5jaGlsZHJlblswXTpuZXcgQWUoe30pLHQ9ZVtuLiR0b1N0eWxlXSgpLHI9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLmZpbGwmJiJ2aXNpYmxlIj09PXRoaXMuZmlsbC5wcmVzZW5jZT9PYmplY3QuYXNzaWduKHIsdGhpcy5maWxsW24uJHRvU3R5bGVdKCkpOnIuZmlsbD0idHJhbnNwYXJlbnQiLHIuc3Ryb2tlV2lkdGg9KDAsby5tZWFzdXJlVG9TdHJpbmcpKCJ2aXNpYmxlIj09PWUucHJlc2VuY2U/ZS50aGlja25lc3M6MCksci5zdHJva2U9dC5jb2xvcjt2YXIgYT0odGhpcy5jb3JuZXIuY2hpbGRyZW4ubGVuZ3RoP3RoaXMuY29ybmVyLmNoaWxkcmVuWzBdOm5ldyBnZSh7fSkpW24uJHRvU3R5bGVdKCksaT17bmFtZToic3ZnIixjaGlsZHJlbjpbe25hbWU6InJlY3QiLGF0dHJpYnV0ZXM6e3htbG5zOlAsd2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSIseDowLHk6MCxyeDphLnJhZGl1cyxyeTphLnJhZGl1cyxzdHlsZTpyfX1dLGF0dHJpYnV0ZXM6e3htbG5zOlAsc3R5bGU6e292ZXJmbG93OiJ2aXNpYmxlIn0sd2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSJ9fTtyZXR1cm4gTSh0aGlzW24uJGdldFBhcmVudF0oKVtuLiRnZXRQYXJlbnRdKCkpP3MuSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e3N0eWxlOntkaXNwbGF5OiJpbmxpbmUiLHdpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUifX0sY2hpbGRyZW46W2ldfSk6KGkuYXR0cmlidXRlcy5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiLHMuSFRNTFJlc3VsdC5zdWNjZXNzKGkpKX19XSkscn0obi5YRkFPYmplY3QpLE90PWZ1bmN0aW9uKGUpe20ocixlKTt2YXIgdD13KHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG47cmV0dXJuIHkodGhpcyxyKSwobj10LmNhbGwodGhpcyxGLCJyZWYiKSkuaWQ9ZS5pZHx8IiIsbi51c2U9ZS51c2V8fCIiLG4udXNlaHJlZj1lLnVzZWhyZWZ8fCIiLG59cmV0dXJuIHYocil9KG4uU3RyaW5nT2JqZWN0KSxBdD1mdW5jdGlvbihlKXttKHIsZSk7dmFyIHQ9dyhyKTtmdW5jdGlvbiByKGUpe3ZhciBuO3JldHVybiB5KHRoaXMsciksKG49dC5jYWxsKHRoaXMsRiwic2NyaXB0IikpLmJpbmRpbmc9ZS5iaW5kaW5nfHwiIixuLmNvbnRlbnRUeXBlPWUuY29udGVudFR5cGV8fCIiLG4uaWQ9ZS5pZHx8IiIsbi5uYW1lPWUubmFtZXx8IiIsbi5ydW5BdD0oMCxzLmdldFN0cmluZ09wdGlvbikoZS5ydW5BdCxbImNsaWVudCIsImJvdGgiLCJzZXJ2ZXIiXSksbi51c2U9ZS51c2V8fCIiLG4udXNlaHJlZj1lLnVzZWhyZWZ8fCIiLG59cmV0dXJuIHYocil9KG4uU3RyaW5nT2JqZWN0KSxDdD1mdW5jdGlvbihlKXttKHIsZSk7dmFyIHQ9dyhyKTtmdW5jdGlvbiByKGUpe3ZhciBuO3JldHVybiB5KHRoaXMsciksKG49dC5jYWxsKHRoaXMsRiwic2V0UHJvcGVydHkiKSkuY29ubmVjdGlvbj1lLmNvbm5lY3Rpb258fCIiLG4ucmVmPWUucmVmfHwiIixuLnRhcmdldD1lLnRhcmdldHx8IiIsbn1yZXR1cm4gdihyKX0obi5YRkFPYmplY3QpO3QuU2V0UHJvcGVydHk9Q3Q7dmFyIEZ0PWZ1bmN0aW9uKGUpe20ocixlKTt2YXIgdD13KHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG47cmV0dXJuIHkodGhpcyxyKSwobj10LmNhbGwodGhpcyxGLCJzaWduRGF0YSIsITApKS5pZD1lLmlkfHwiIixuLm9wZXJhdGlvbj0oMCxzLmdldFN0cmluZ09wdGlvbikoZS5vcGVyYXRpb24sWyJzaWduIiwiY2xlYXIiLCJ2ZXJpZnkiXSksbi5yZWY9ZS5yZWZ8fCIiLG4udGFyZ2V0PWUudGFyZ2V0fHwiIixuLnVzZT1lLnVzZXx8IiIsbi51c2VocmVmPWUudXNlaHJlZnx8IiIsbi5maWx0ZXI9bnVsbCxuLm1hbmlmZXN0PW51bGwsbn1yZXR1cm4gdihyKX0obi5YRkFPYmplY3QpLFB0PWZ1bmN0aW9uKGUpe20ocixlKTt2YXIgdD13KHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG47cmV0dXJuIHkodGhpcyxyKSwobj10LmNhbGwodGhpcyxGLCJzaWduYXR1cmUiLCEwKSkuaWQ9ZS5pZHx8IiIsbi50eXBlPSgwLHMuZ2V0U3RyaW5nT3B0aW9uKShlLnR5cGUsWyJQREYxLjMiLCJQREYxLjYiXSksbi51c2U9ZS51c2V8fCIiLG4udXNlaHJlZj1lLnVzZWhyZWZ8fCIiLG4uYm9yZGVyPW51bGwsbi5leHRyYXM9bnVsbCxuLmZpbHRlcj1udWxsLG4ubWFuaWZlc3Q9bnVsbCxuLm1hcmdpbj1udWxsLG59cmV0dXJuIHYocil9KG4uWEZBT2JqZWN0KSxUdD1mdW5jdGlvbihlKXttKHIsZSk7dmFyIHQ9dyhyKTtmdW5jdGlvbiByKGUpe3ZhciBhO3JldHVybiB5KHRoaXMsciksKGE9dC5jYWxsKHRoaXMsRiwic2lnbmluZyIsITApKS5pZD1lLmlkfHwiIixhLnR5cGU9KDAscy5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSksYS51c2U9ZS51c2V8fCIiLGEudXNlaHJlZj1lLnVzZWhyZWZ8fCIiLGEuY2VydGlmaWNhdGU9bmV3IG4uWEZBT2JqZWN0QXJyYXksYX1yZXR1cm4gdihyKX0obi5YRkFPYmplY3QpLEl0PWZ1bmN0aW9uKGUpe20ocixlKTt2YXIgdD13KHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG47cmV0dXJuIHkodGhpcyxyKSwobj10LmNhbGwodGhpcyxGLCJzb2xpZCIsITApKS5pZD1lLmlkfHwiIixuLnVzZT1lLnVzZXx8IiIsbi51c2VocmVmPWUudXNlaHJlZnx8IiIsbi5leHRyYXM9bnVsbCxufXJldHVybiB2KHIsW3trZXk6bi4kdG9TdHlsZSx2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gZT9lW24uJHRvU3R5bGVdKCk6IiNGRkZGRkYifX1dKSxyfShuLlhGQU9iamVjdCksRXQ9ZnVuY3Rpb24oZSl7bShyLGUpO3ZhciB0PXcocik7ZnVuY3Rpb24gcihlKXt2YXIgbjtyZXR1cm4geSh0aGlzLHIpLChuPXQuY2FsbCh0aGlzLEYsInNwZWFrIikpLmRpc2FibGU9KDAscy5nZXRJbnRlZ2VyKSh7ZGF0YTplLmRpc2FibGUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuIDE9PT1lfX0pLG4uaWQ9ZS5pZHx8IiIsbi5wcmlvcml0eT0oMCxzLmdldFN0cmluZ09wdGlvbikoZS5wcmlvcml0eSxbImN1c3RvbSIsImNhcHRpb24iLCJuYW1lIiwidG9vbFRpcCJdKSxuLnJpZD1lLnJpZHx8IiIsbi51c2U9ZS51c2V8fCIiLG4udXNlaHJlZj1lLnVzZWhyZWZ8fCIiLG59cmV0dXJuIHYocil9KG4uU3RyaW5nT2JqZWN0KSxqdD1mdW5jdGlvbihlKXttKHIsZSk7dmFyIHQ9dyhyKTtmdW5jdGlvbiByKGUpe3ZhciBuO3JldHVybiB5KHRoaXMsciksKG49dC5jYWxsKHRoaXMsRiwic3RpcHBsZSIsITApKS5pZD1lLmlkfHwiIixuLnJhdGU9KDAscy5nZXRJbnRlZ2VyKSh7ZGF0YTplLnJhdGUsZGVmYXVsdFZhbHVlOjUwLHZhbGlkYXRlOmZ1bmN0aW9uKGUpe3JldHVybiBlPj0wJiZlPD0xMDB9fSksbi51c2U9ZS51c2V8fCIiLG4udXNlaHJlZj1lLnVzZWhyZWZ8fCIiLG4uY29sb3I9bnVsbCxuLmV4dHJhcz1udWxsLG59cmV0dXJuIHYocixbe2tleTpuLiR0b1N0eWxlLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMucmF0ZS8xMDA7cmV0dXJuIGMuVXRpbC5tYWtlSGV4Q29sb3IoTWF0aC5yb3VuZChlLnZhbHVlLnIqKDEtdCkrdGhpcy52YWx1ZS5yKnQpLE1hdGgucm91bmQoZS52YWx1ZS5nKigxLXQpK3RoaXMudmFsdWUuZyp0KSxNYXRoLnJvdW5kKGUudmFsdWUuYiooMS10KSt0aGlzLnZhbHVlLmIqdCkpfX1dKSxyfShuLlhGQU9iamVjdCksTXQ9ZnVuY3Rpb24oZSl7bShyLGUpO3ZhciB0PXcocik7ZnVuY3Rpb24gcihlKXt2YXIgYTtyZXR1cm4geSh0aGlzLHIpLChhPXQuY2FsbCh0aGlzLEYsInN1YmZvcm0iLCEwKSkuYWNjZXNzPSgwLHMuZ2V0U3RyaW5nT3B0aW9uKShlLmFjY2VzcyxbIm9wZW4iLCJub25JbnRlcmFjdGl2ZSIsInByb3RlY3RlZCIsInJlYWRPbmx5Il0pLGEuYWxsb3dNYWNybz0oMCxzLmdldEludGVnZXIpKHtkYXRhOmUuYWxsb3dNYWNybyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTpmdW5jdGlvbihlKXtyZXR1cm4gMT09PWV9fSksYS5hbmNob3JUeXBlPSgwLHMuZ2V0U3RyaW5nT3B0aW9uKShlLmFuY2hvclR5cGUsWyJ0b3BMZWZ0IiwiYm90dG9tQ2VudGVyIiwiYm90dG9tTGVmdCIsImJvdHRvbVJpZ2h0IiwibWlkZGxlQ2VudGVyIiwibWlkZGxlTGVmdCIsIm1pZGRsZVJpZ2h0IiwidG9wQ2VudGVyIiwidG9wUmlnaHQiXSksYS5jb2xTcGFuPSgwLHMuZ2V0SW50ZWdlcikoe2RhdGE6ZS5jb2xTcGFuLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmZ1bmN0aW9uKGUpe3JldHVybiBlPj0xfHwtMT09PWV9fSksYS5jb2x1bW5XaWR0aHM9KGUuY29sdW1uV2lkdGhzfHwiIikudHJpbSgpLnNwbGl0KC9ccysvKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiItMSI9PT1lPy0xOigwLHMuZ2V0TWVhc3VyZW1lbnQpKGUpfSkpLGEuaD1lLmg/KDAscy5nZXRNZWFzdXJlbWVudCkoZS5oKToiIixhLmhBbGlnbj0oMCxzLmdldFN0cmluZ09wdGlvbikoZS5oQWxpZ24sWyJsZWZ0IiwiY2VudGVyIiwianVzdGlmeSIsImp1c3RpZnlBbGwiLCJyYWRpeCIsInJpZ2h0Il0pLGEuaWQ9ZS5pZHx8IiIsYS5sYXlvdXQ9KDAscy5nZXRTdHJpbmdPcHRpb24pKGUubGF5b3V0LFsicG9zaXRpb24iLCJsci10YiIsInJsLXJvdyIsInJsLXRiIiwicm93IiwidGFibGUiLCJ0YiJdKSxhLmxvY2FsZT1lLmxvY2FsZXx8IiIsYS5tYXhIPSgwLHMuZ2V0TWVhc3VyZW1lbnQpKGUubWF4SCwiMHB0IiksYS5tYXhXPSgwLHMuZ2V0TWVhc3VyZW1lbnQpKGUubWF4VywiMHB0IiksYS5tZXJnZU1vZGU9KDAscy5nZXRTdHJpbmdPcHRpb24pKGUubWVyZ2VNb2RlLFsiY29uc3VtZURhdGEiLCJtYXRjaFRlbXBsYXRlIl0pLGEubWluSD0oMCxzLmdldE1lYXN1cmVtZW50KShlLm1pbkgsIjBwdCIpLGEubWluVz0oMCxzLmdldE1lYXN1cmVtZW50KShlLm1pblcsIjBwdCIpLGEubmFtZT1lLm5hbWV8fCIiLGEucHJlc2VuY2U9KDAscy5nZXRTdHJpbmdPcHRpb24pKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSksYS5yZWxldmFudD0oMCxzLmdldFJlbGV2YW50KShlLnJlbGV2YW50KSxhLnJlc3RvcmVTdGF0ZT0oMCxzLmdldFN0cmluZ09wdGlvbikoZS5yZXN0b3JlU3RhdGUsWyJtYW51YWwiLCJhdXRvIl0pLGEuc2NvcGU9KDAscy5nZXRTdHJpbmdPcHRpb24pKGUuc2NvcGUsWyJuYW1lIiwibm9uZSJdKSxhLnVzZT1lLnVzZXx8IiIsYS51c2VocmVmPWUudXNlaHJlZnx8IiIsYS53PWUudz8oMCxzLmdldE1lYXN1cmVtZW50KShlLncpOiIiLGEueD0oMCxzLmdldE1lYXN1cmVtZW50KShlLngsIjBwdCIpLGEueT0oMCxzLmdldE1lYXN1cmVtZW50KShlLnksIjBwdCIpLGEuYXNzaXN0PW51bGwsYS5iaW5kPW51bGwsYS5ib29rZW5kPW51bGwsYS5ib3JkZXI9bnVsbCxhLmJyZWFrPW51bGwsYS5jYWxjdWxhdGU9bnVsbCxhLmRlc2M9bnVsbCxhLmV4dHJhcz1udWxsLGEua2VlcD1udWxsLGEubWFyZ2luPW51bGwsYS5vY2N1cj1udWxsLGEub3ZlcmZsb3c9bnVsbCxhLnBhZ2VTZXQ9bnVsbCxhLnBhcmE9bnVsbCxhLnRyYXZlcnNhbD1udWxsLGEudmFsaWRhdGU9bnVsbCxhLnZhcmlhYmxlcz1udWxsLGEuYXJlYT1uZXcgbi5YRkFPYmplY3RBcnJheSxhLmJyZWFrQWZ0ZXI9bmV3IG4uWEZBT2JqZWN0QXJyYXksYS5icmVha0JlZm9yZT1uZXcgbi5YRkFPYmplY3RBcnJheSxhLmNvbm5lY3Q9bmV3IG4uWEZBT2JqZWN0QXJyYXksYS5kcmF3PW5ldyBuLlhGQU9iamVjdEFycmF5LGEuZXZlbnQ9bmV3IG4uWEZBT2JqZWN0QXJyYXksYS5leE9iamVjdD1uZXcgbi5YRkFPYmplY3RBcnJheSxhLmV4Y2xHcm91cD1uZXcgbi5YRkFPYmplY3RBcnJheSxhLmZpZWxkPW5ldyBuLlhGQU9iamVjdEFycmF5LGEucHJvdG89bmV3IG4uWEZBT2JqZWN0QXJyYXksYS5zZXRQcm9wZXJ0eT1uZXcgbi5YRkFPYmplY3RBcnJheSxhLnN1YmZvcm09bmV3IG4uWEZBT2JqZWN0QXJyYXksYS5zdWJmb3JtU2V0PW5ldyBuLlhGQU9iamVjdEFycmF5LGF9cmV0dXJuIHYocixbe2tleTpuLiRnZXRTdWJmb3JtUGFyZW50LHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpc1tuLiRnZXRQYXJlbnRdKCk7cmV0dXJuIGUgaW5zdGFuY2VvZiBfdD9lW24uJGdldFN1YmZvcm1QYXJlbnRdKCk6ZX19LHtrZXk6bi4kaXNCaW5kYWJsZSx2YWx1ZTpmdW5jdGlvbigpe3JldHVybiEwfX0se2tleTpuLiRpc1RoZXJlTW9yZVdpZHRoLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGF5b3V0LmVuZHNXaXRoKCItdGIiKSYmMD09PXRoaXNbbi4kZXh0cmFdLmF0dGVtcHQmJnRoaXNbbi4kZXh0cmFdLm51bWJlckluTGluZT4wfHx0aGlzW24uJGdldFBhcmVudF0oKVtuLiRpc1RoZXJlTW9yZVdpZHRoXSgpfX0se2tleTpuLiRnZXRDb250YWluZWRDaGlsZHJlbix2YWx1ZTpTKCkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiBTKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUuZGVsZWdhdGVZaWVsZChMKHRoaXMpLCJ0MCIsMSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKX0se2tleTpuLiRmbHVzaEhUTUwsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4oMCxpLmZsdXNoSFRNTCkodGhpcyl9fSx7a2V5Om4uJGFkZEhUTUwsdmFsdWU6ZnVuY3Rpb24oZSx0KXsoMCxpLmFkZEhUTUwpKHRoaXMsZSx0KX19LHtrZXk6bi4kZ2V0QXZhaWxhYmxlU3BhY2UsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4oMCxpLmdldEF2YWlsYWJsZVNwYWNlKSh0aGlzKX19LHtrZXk6bi4kaXNTcGxpdHRhYmxlLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpc1tuLiRnZXRTdWJmb3JtUGFyZW50XSgpO3JldHVybiEhZVtuLiRpc1NwbGl0dGFibGVdKCkmJih2b2lkIDAhPT10aGlzW24uJGV4dHJhXS5faXNTcGxpdHRhYmxlP3RoaXNbbi4kZXh0cmFdLl9pc1NwbGl0dGFibGU6InBvc2l0aW9uIj09PXRoaXMubGF5b3V0fHx0aGlzLmxheW91dC5pbmNsdWRlcygicm93Iil8fHRoaXMua2VlcCYmIm5vbmUiIT09dGhpcy5rZWVwLmludGFjdD8odGhpc1tuLiRleHRyYV0uX2lzU3BsaXR0YWJsZT0hMSwhMSk6IShlLmxheW91dCYmZS5sYXlvdXQuZW5kc1dpdGgoIi10YiIpJiYwIT09ZVtuLiRleHRyYV0ubnVtYmVySW5MaW5lfHwodGhpc1tuLiRleHRyYV0uX2lzU3BsaXR0YWJsZT0hMCwwKSkpfX0se2tleTpuLiR0b0hUTUwsdmFsdWU6ZnVuY3Rpb24oZSl7aWYoTih0aGlzKSx0aGlzLmJyZWFrKXtpZigiYXV0byIhPT10aGlzLmJyZWFrLmFmdGVyfHwiIiE9PXRoaXMuYnJlYWsuYWZ0ZXJUYXJnZXQpe3ZhciB0PW5ldyByZSh7dGFyZ2V0VHlwZTp0aGlzLmJyZWFrLmFmdGVyLHRhcmdldDp0aGlzLmJyZWFrLmFmdGVyVGFyZ2V0LHN0YXJ0TmV3OnRoaXMuYnJlYWsuc3RhcnROZXcudG9TdHJpbmcoKX0pO3Rbbi4kZ2xvYmFsRGF0YV09dGhpc1tuLiRnbG9iYWxEYXRhXSx0aGlzW24uJGFwcGVuZENoaWxkXSh0KSx0aGlzLmJyZWFrQWZ0ZXIucHVzaCh0KX1pZigiYXV0byIhPT10aGlzLmJyZWFrLmJlZm9yZXx8IiIhPT10aGlzLmJyZWFrLmJlZm9yZVRhcmdldCl7dmFyIHI9bmV3IG5lKHt0YXJnZXRUeXBlOnRoaXMuYnJlYWsuYmVmb3JlLHRhcmdldDp0aGlzLmJyZWFrLmJlZm9yZVRhcmdldCxzdGFydE5ldzp0aGlzLmJyZWFrLnN0YXJ0TmV3LnRvU3RyaW5nKCl9KTtyW24uJGdsb2JhbERhdGFdPXRoaXNbbi4kZ2xvYmFsRGF0YV0sdGhpc1tuLiRhcHBlbmRDaGlsZF0ociksdGhpcy5icmVha0JlZm9yZS5wdXNoKHIpfWlmKCIiIT09dGhpcy5icmVhay5vdmVyZmxvd1RhcmdldCl7dmFyIGE9bmV3IGh0KHt0YXJnZXQ6dGhpcy5icmVhay5vdmVyZmxvd1RhcmdldCxsZWFkZXI6dGhpcy5icmVhay5vdmVyZmxvd0xlYWRlcix0cmFpbGVyOnRoaXMuYnJlYWsub3ZlcmZsb3dUcmFpbGVyfSk7YVtuLiRnbG9iYWxEYXRhXT10aGlzW24uJGdsb2JhbERhdGFdLHRoaXNbbi4kYXBwZW5kQ2hpbGRdKGEpLHRoaXMub3ZlcmZsb3cucHVzaChhKX10aGlzW24uJHJlbW92ZUNoaWxkXSh0aGlzLmJyZWFrKSx0aGlzLmJyZWFrPW51bGx9aWYoImhpZGRlbiI9PT10aGlzLnByZXNlbmNlfHwiaW5hY3RpdmUiPT09dGhpcy5wcmVzZW5jZSlyZXR1cm4gcy5IVE1MUmVzdWx0LkVNUFRZO2lmKCh0aGlzLmJyZWFrQmVmb3JlLmNoaWxkcmVuLmxlbmd0aD4xfHx0aGlzLmJyZWFrQWZ0ZXIuY2hpbGRyZW4ubGVuZ3RoPjEpJiYoMCxjLndhcm4pKCJYRkEgLSBTZXZlcmFsIGJyZWFrQmVmb3JlIG9yIGJyZWFrQWZ0ZXIgaW4gc3ViZm9ybXM6IHBsZWFzZSBmaWxlIGEgYnVnLiIpLHRoaXMuYnJlYWtCZWZvcmUuY2hpbGRyZW4ubGVuZ3RoPj0xKXt2YXIgdT10aGlzLmJyZWFrQmVmb3JlLmNoaWxkcmVuWzBdO2lmKEgodSkpcmV0dXJuIHMuSFRNTFJlc3VsdC5icmVha05vZGUodSl9aWYodGhpc1tuLiRleHRyYV0mJnRoaXNbbi4kZXh0cmFdLmFmdGVyQnJlYWtBZnRlcilyZXR1cm4gcy5IVE1MUmVzdWx0LkVNUFRZOygwLG8uZml4RGltZW5zaW9ucykodGhpcyk7dmFyIGw9W10sZj17aWQ6dGhpc1tuLiR1aWRdLGNsYXNzOltdfTsoMCxvLnNldEFjY2VzcykodGhpcyxmLmNsYXNzKSx0aGlzW24uJGV4dHJhXXx8KHRoaXNbbi4kZXh0cmFdPU9iamVjdC5jcmVhdGUobnVsbCkpLE9iamVjdC5hc3NpZ24odGhpc1tuLiRleHRyYV0se2NoaWxkcmVuOmwsbGluZTpudWxsLGF0dHJpYnV0ZXM6ZixhdHRlbXB0OjAsbnVtYmVySW5MaW5lOjAsYXZhaWxhYmxlU3BhY2U6e3dpZHRoOk1hdGgubWluKHRoaXMud3x8MS8wLGUud2lkdGgpLGhlaWdodDpNYXRoLm1pbih0aGlzLmh8fDEvMCxlLmhlaWdodCl9LHdpZHRoOjAsaGVpZ2h0OjAscHJldkhlaWdodDowLGN1cnJlbnRXaWR0aDowfSk7dmFyIGg9dGhpc1tuLiRnZXRUZW1wbGF0ZVJvb3RdKCksZD1oW24uJGV4dHJhXS5ub0xheW91dEZhaWx1cmUscD10aGlzW24uJGlzU3BsaXR0YWJsZV0oKTtpZihwfHwkKHRoaXMpLCEoMCxpLmNoZWNrRGltZW5zaW9ucykodGhpcyxlKSlyZXR1cm4gcy5IVE1MUmVzdWx0LkZBSUxVUkU7dmFyIGc9bmV3IFNldChbImFyZWEiLCJkcmF3IiwiZXhjbEdyb3VwIiwiZmllbGQiLCJzdWJmb3JtIiwic3ViZm9ybVNldCJdKTtpZih0aGlzLmxheW91dC5pbmNsdWRlcygicm93Iikpe3ZhciB2PXRoaXNbbi4kZ2V0U3ViZm9ybVBhcmVudF0oKS5jb2x1bW5XaWR0aHM7QXJyYXkuaXNBcnJheSh2KSYmdi5sZW5ndGg+MCYmKHRoaXNbbi4kZXh0cmFdLmNvbHVtbldpZHRocz12LHRoaXNbbi4kZXh0cmFdLmN1cnJlbnRDb2x1bW49MCl9dmFyIHk9KDAsby50b1N0eWxlKSh0aGlzLCJhbmNob3JUeXBlIiwiZGltZW5zaW9ucyIsInBvc2l0aW9uIiwicHJlc2VuY2UiLCJib3JkZXIiLCJtYXJnaW4iLCJoQWxpZ24iKSxtPVsieGZhU3ViZm9ybSJdLGI9KDAsby5sYXlvdXRDbGFzcykodGhpcyk7aWYoYiYmbS5wdXNoKGIpLGYuc3R5bGU9eSxmLmNsYXNzPW0sdGhpcy5uYW1lJiYoZi54ZmFOYW1lPXRoaXMubmFtZSksdGhpcy5vdmVyZmxvdyl7dmFyIHc9dGhpcy5vdmVyZmxvd1tuLiRnZXRFeHRyYV0oKTt3LmFkZExlYWRlciYmKHcuYWRkTGVhZGVyPSExLHEodGhpcyx3LmxlYWRlcixlKSl9dGhpc1tuLiRwdXNoUGFyYV0oKTtmb3IodmFyIGs9ImxyLXRiIj09PXRoaXMubGF5b3V0fHwicmwtdGIiPT09dGhpcy5sYXlvdXQsUz1rPzI6MTt0aGlzW24uJGV4dHJhXS5hdHRlbXB0PFM7dGhpc1tuLiRleHRyYV0uYXR0ZW1wdCsrKXtrJiYxPT09dGhpc1tuLiRleHRyYV0uYXR0ZW1wdCYmKHRoaXNbbi4kZXh0cmFdLm51bWJlckluTGluZT0wKTt2YXIgeD10aGlzW24uJGNoaWxkcmVuVG9IVE1MXSh7ZmlsdGVyOmcsaW5jbHVkZTohMH0pO2lmKHguc3VjY2VzcylicmVhaztpZih4LmlzQnJlYWsoKSlyZXR1cm4gdGhpc1tuLiRwb3BQYXJhXSgpLHg7aWYoayYmMD09PXRoaXNbbi4kZXh0cmFdLmF0dGVtcHQmJjA9PT10aGlzW24uJGV4dHJhXS5udW1iZXJJbkxpbmUmJiFoW24uJGV4dHJhXS5ub0xheW91dEZhaWx1cmUpe3RoaXNbbi4kZXh0cmFdLmF0dGVtcHQ9UzticmVha319aWYodGhpc1tuLiRwb3BQYXJhXSgpLHB8fFgodGhpcyksaFtuLiRleHRyYV0ubm9MYXlvdXRGYWlsdXJlPWQsdGhpc1tuLiRleHRyYV0uYXR0ZW1wdD09PVMpcmV0dXJuIHRoaXMub3ZlcmZsb3cmJih0aGlzW24uJGdldFRlbXBsYXRlUm9vdF0oKVtuLiRleHRyYV0ub3ZlcmZsb3dOb2RlPXRoaXMub3ZlcmZsb3cpLHB8fGRlbGV0ZSB0aGlzW24uJGV4dHJhXSxzLkhUTUxSZXN1bHQuRkFJTFVSRTtpZih0aGlzLm92ZXJmbG93KXt2YXIgTz10aGlzLm92ZXJmbG93W24uJGdldEV4dHJhXSgpO08uYWRkVHJhaWxlciYmKE8uYWRkVHJhaWxlcj0hMSxxKHRoaXMsTy50cmFpbGVyLGUpKX12YXIgQT0wLEM9MDt0aGlzLm1hcmdpbiYmKEE9dGhpcy5tYXJnaW4ubGVmdEluc2V0K3RoaXMubWFyZ2luLnJpZ2h0SW5zZXQsQz10aGlzLm1hcmdpbi50b3BJbnNldCt0aGlzLm1hcmdpbi5ib3R0b21JbnNldCk7dmFyIEY9TWF0aC5tYXgodGhpc1tuLiRleHRyYV0ud2lkdGgrQSx0aGlzLnd8fDApLFA9TWF0aC5tYXgodGhpc1tuLiRleHRyYV0uaGVpZ2h0K0MsdGhpcy5ofHwwKSxUPVt0aGlzLngsdGhpcy55LEYsUF07aWYoIiI9PT10aGlzLncmJih5LndpZHRoPSgwLG8ubWVhc3VyZVRvU3RyaW5nKShGKSksIiI9PT10aGlzLmgmJih5LmhlaWdodD0oMCxvLm1lYXN1cmVUb1N0cmluZykoUCkpLCgiMHB4Ij09PXkud2lkdGh8fCIwcHgiPT09eS5oZWlnaHQpJiYwPT09bC5sZW5ndGgpcmV0dXJuIHMuSFRNTFJlc3VsdC5FTVBUWTt2YXIgST17bmFtZToiZGl2IixhdHRyaWJ1dGVzOmYsY2hpbGRyZW46bH07RCh0aGlzLGYpO3ZhciBFPXMuSFRNTFJlc3VsdC5zdWNjZXNzKCgwLG8uY3JlYXRlV3JhcHBlcikodGhpcyxJKSxUKTtpZih0aGlzLmJyZWFrQWZ0ZXIuY2hpbGRyZW4ubGVuZ3RoPj0xKXt2YXIgaj10aGlzLmJyZWFrQWZ0ZXIuY2hpbGRyZW5bMF07aWYoSChqKSlyZXR1cm4gdGhpc1tuLiRleHRyYV0uYWZ0ZXJCcmVha0FmdGVyPUUscy5IVE1MUmVzdWx0LmJyZWFrTm9kZShqKX1yZXR1cm4gZGVsZXRlIHRoaXNbbi4kZXh0cmFdLEV9fV0pLHJ9KG4uWEZBT2JqZWN0KSxfdD1mdW5jdGlvbihlKXttKHIsZSk7dmFyIHQ9dyhyKTtmdW5jdGlvbiByKGUpe3ZhciBhO3JldHVybiB5KHRoaXMsciksKGE9dC5jYWxsKHRoaXMsRiwic3ViZm9ybVNldCIsITApKS5pZD1lLmlkfHwiIixhLm5hbWU9ZS5uYW1lfHwiIixhLnJlbGF0aW9uPSgwLHMuZ2V0U3RyaW5nT3B0aW9uKShlLnJlbGF0aW9uLFsib3JkZXJlZCIsImNob2ljZSIsInVub3JkZXJlZCJdKSxhLnJlbGV2YW50PSgwLHMuZ2V0UmVsZXZhbnQpKGUucmVsZXZhbnQpLGEudXNlPWUudXNlfHwiIixhLnVzZWhyZWY9ZS51c2VocmVmfHwiIixhLmJvb2tlbmQ9bnVsbCxhLmJyZWFrPW51bGwsYS5kZXNjPW51bGwsYS5leHRyYXM9bnVsbCxhLm9jY3VyPW51bGwsYS5vdmVyZmxvdz1udWxsLGEuYnJlYWtBZnRlcj1uZXcgbi5YRkFPYmplY3RBcnJheSxhLmJyZWFrQmVmb3JlPW5ldyBuLlhGQU9iamVjdEFycmF5LGEuc3ViZm9ybT1uZXcgbi5YRkFPYmplY3RBcnJheSxhLnN1YmZvcm1TZXQ9bmV3IG4uWEZBT2JqZWN0QXJyYXksYX1yZXR1cm4gdihyLFt7a2V5Om4uJGdldENvbnRhaW5lZENoaWxkcmVuLHZhbHVlOlMoKS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIFMoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5kZWxlZ2F0ZVlpZWxkKEwodGhpcyksInQwIiwxKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpfSx7a2V5Om4uJGdldFN1YmZvcm1QYXJlbnQsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIGU9dGhpc1tuLiRnZXRQYXJlbnRdKCk7IShlIGluc3RhbmNlb2YgTXQpOyllPWVbbi4kZ2V0UGFyZW50XSgpO3JldHVybiBlfX0se2tleTpuLiRpc0JpbmRhYmxlLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuITB9fV0pLHJ9KG4uWEZBT2JqZWN0KSxMdD1mdW5jdGlvbihlKXttKHIsZSk7dmFyIHQ9dyhyKTtmdW5jdGlvbiByKGUpe3ZhciBuO3JldHVybiB5KHRoaXMsciksKG49dC5jYWxsKHRoaXMsRiwic3ViamVjdEROIikpLmRlbGltaXRlcj1lLmRlbGltaXRlcnx8IiwiLG4uaWQ9ZS5pZHx8IiIsbi5uYW1lPWUubmFtZXx8IiIsbi51c2U9ZS51c2V8fCIiLG4udXNlaHJlZj1lLnVzZWhyZWZ8fCIiLG59cmV0dXJuIHYocixbe2tleTpuLiRmaW5hbGl6ZSx2YWx1ZTpmdW5jdGlvbigpe3RoaXNbbi4kY29udGVudF09bmV3IE1hcCh0aGlzW24uJGNvbnRlbnRdLnNwbGl0KHRoaXMuZGVsaW1pdGVyKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybihlPWUuc3BsaXQoIj0iLDIpKVswXT1lWzBdLnRyaW0oKSxlfSkpKX19XSkscn0obi5Db250ZW50T2JqZWN0KSxSdD1mdW5jdGlvbihlKXttKHIsZSk7dmFyIHQ9dyhyKTtmdW5jdGlvbiByKGUpe3ZhciBhO3JldHVybiB5KHRoaXMsciksKGE9dC5jYWxsKHRoaXMsRiwic3ViamVjdEROcyIsITApKS5pZD1lLmlkfHwiIixhLnR5cGU9KDAscy5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSksYS51c2U9ZS51c2V8fCIiLGEudXNlaHJlZj1lLnVzZWhyZWZ8fCIiLGEuc3ViamVjdEROPW5ldyBuLlhGQU9iamVjdEFycmF5LGF9cmV0dXJuIHYocil9KG4uWEZBT2JqZWN0KSxOdD1mdW5jdGlvbihlKXttKHIsZSk7dmFyIHQ9dyhyKTtmdW5jdGlvbiByKGUpe3ZhciBhO3JldHVybiB5KHRoaXMsciksKGE9dC5jYWxsKHRoaXMsRiwic3VibWl0IiwhMCkpLmVtYmVkUERGPSgwLHMuZ2V0SW50ZWdlcikoe2RhdGE6ZS5lbWJlZFBERixkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTpmdW5jdGlvbihlKXtyZXR1cm4gMT09PWV9fSksYS5mb3JtYXQ9KDAscy5nZXRTdHJpbmdPcHRpb24pKGUuZm9ybWF0LFsieGRwIiwiZm9ybWRhdGEiLCJwZGYiLCJ1cmxlbmNvZGVkIiwieGZkIiwieG1sIl0pLGEuaWQ9ZS5pZHx8IiIsYS50YXJnZXQ9ZS50YXJnZXR8fCIiLGEudGV4dEVuY29kaW5nPSgwLHMuZ2V0S2V5d29yZCkoe2RhdGE6ZS50ZXh0RW5jb2Rpbmc/ZS50ZXh0RW5jb2RpbmcudG9Mb3dlckNhc2UoKToiIixkZWZhdWx0VmFsdWU6IiIsdmFsaWRhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuWyJ1dGYtOCIsImJpZy1maXZlIiwiZm9udHNwZWNpZmljIiwiZ2JrIiwiZ2ItMTgwMzAiLCJnYi0yMzEyIiwia3NjLTU2MDEiLCJub25lIiwic2hpZnQtamlzIiwidWNzLTIiLCJ1dGYtMTYiXS5pbmNsdWRlcyhlKXx8ZS5tYXRjaCgvaXNvLTg4NTktXGR7Mn0vKX19KSxhLnVzZT1lLnVzZXx8IiIsYS51c2VocmVmPWUudXNlaHJlZnx8IiIsYS54ZHBDb250ZW50PWUueGRwQ29udGVudHx8IiIsYS5lbmNyeXB0PW51bGwsYS5lbmNyeXB0RGF0YT1uZXcgbi5YRkFPYmplY3RBcnJheSxhLnNpZ25EYXRhPW5ldyBuLlhGQU9iamVjdEFycmF5LGF9cmV0dXJuIHYocil9KG4uWEZBT2JqZWN0KSxEdD1mdW5jdGlvbihlKXttKHIsZSk7dmFyIHQ9dyhyKTtmdW5jdGlvbiByKGUpe3ZhciBhO3JldHVybiB5KHRoaXMsciksKGE9dC5jYWxsKHRoaXMsRiwidGVtcGxhdGUiLCEwKSkuYmFzZVByb2ZpbGU9KDAscy5nZXRTdHJpbmdPcHRpb24pKGUuYmFzZVByb2ZpbGUsWyJmdWxsIiwiaW50ZXJhY3RpdmVGb3JtcyJdKSxhLmV4dHJhcz1udWxsLGEuc3ViZm9ybT1uZXcgbi5YRkFPYmplY3RBcnJheSxhfXJldHVybiB2KHIsW3trZXk6bi4kZmluYWxpemUsdmFsdWU6ZnVuY3Rpb24oKXswPT09dGhpcy5zdWJmb3JtLmNoaWxkcmVuLmxlbmd0aCYmKDAsYy53YXJuKSgiWEZBIC0gTm8gc3ViZm9ybXMgaW4gdGVtcGxhdGUgbm9kZS4iKSx0aGlzLnN1YmZvcm0uY2hpbGRyZW4ubGVuZ3RoPj0yJiYoMCxjLndhcm4pKCJYRkEgLSBTZXZlcmFsIHN1YmZvcm1zIGluIHRlbXBsYXRlIG5vZGU6IHBsZWFzZSBmaWxlIGEgYnVnLiIpLHRoaXNbbi4kdGFiSW5kZXhdPTVlM319LHtrZXk6bi4kaXNTcGxpdHRhYmxlLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuITB9fSx7a2V5Om4uJHNlYXJjaE5vZGUsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5zdGFydHNXaXRoKCIjIik/W3RoaXNbbi4kaWRzXS5nZXQoZS5zbGljZSgxKSldOigwLGYuc2VhcmNoTm9kZSkodGhpcyx0LGUsITAsITApfX0se2tleTpuLiR0b1BhZ2VzLHZhbHVlOlMoKS5tYXJrKChmdW5jdGlvbiBlKCl7dmFyIHQscixhLGksbyx1LGwsZixkLHAsZyx2LHksbSxiLHcsaz10aGlzO3JldHVybiBTKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6aWYodGhpcy5zdWJmb3JtLmNoaWxkcmVuLmxlbmd0aCl7ZS5uZXh0PTI7YnJlYWt9cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHMuSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGNoaWxkcmVuOltdfSkpO2Nhc2UgMjp0aGlzW24uJGV4dHJhXT17b3ZlcmZsb3dOb2RlOm51bGwsZmlyc3RVbnNwbGl0dGFibGU6bnVsbCxjdXJyZW50Q29udGVudEFyZWE6bnVsbCxjdXJyZW50UGFnZUFyZWE6bnVsbCxub0xheW91dEZhaWx1cmU6ITEscGFnZU51bWJlcjoxLHBhZ2VQb3NpdGlvbjoiZmlyc3QiLG9kZE9yRXZlbjoib2RkIixibGFua09yTm90Qmxhbms6Im5vbkJsYW5rIixwYXJhU3RhY2s6W119LCh0PXRoaXMuc3ViZm9ybS5jaGlsZHJlblswXSkucGFnZVNldFtuLiRjbGVhblBhZ2VdKCkscj10LnBhZ2VTZXQucGFnZUFyZWEuY2hpbGRyZW4sYT17bmFtZToiZGl2IixjaGlsZHJlbjpbXX0saT1udWxsLG89bnVsbCx1PW51bGwsdC5icmVha0JlZm9yZS5jaGlsZHJlbi5sZW5ndGg+PTE/KG89dC5icmVha0JlZm9yZS5jaGlsZHJlblswXSx1PW8udGFyZ2V0KTp0LnN1YmZvcm0uY2hpbGRyZW4ubGVuZ3RoPj0xJiZ0LnN1YmZvcm0uY2hpbGRyZW5bMF0uYnJlYWtCZWZvcmUuY2hpbGRyZW4ubGVuZ3RoPj0xPyhvPXQuc3ViZm9ybS5jaGlsZHJlblswXS5icmVha0JlZm9yZS5jaGlsZHJlblswXSx1PW8udGFyZ2V0KTp0LmJyZWFrJiZ0LmJyZWFrLmJlZm9yZVRhcmdldD8obz10LmJyZWFrLHU9by5iZWZvcmVUYXJnZXQpOnQuc3ViZm9ybS5jaGlsZHJlbi5sZW5ndGg+PTEmJnQuc3ViZm9ybS5jaGlsZHJlblswXS5icmVhayYmdC5zdWJmb3JtLmNoaWxkcmVuWzBdLmJyZWFrLmJlZm9yZVRhcmdldCYmKG89dC5zdWJmb3JtLmNoaWxkcmVuWzBdLmJyZWFrLHU9by5iZWZvcmVUYXJnZXQpLG8mJihsPXRoaXNbbi4kc2VhcmNoTm9kZV0odSxvW24uJGdldFBhcmVudF0oKSkpaW5zdGFuY2VvZiBkdCYmKGk9bCxvW24uJGV4dHJhXT17fSksaXx8KGk9clswXSksaVtuLiRleHRyYV09e251bWJlck9mVXNlOjF9LChmPWlbbi4kZ2V0UGFyZW50XSgpKVtuLiRleHRyYV09e251bWJlck9mVXNlOjEscGFnZUluZGV4OmYucGFnZUFyZWEuY2hpbGRyZW4uaW5kZXhPZihpKSxwYWdlU2V0SW5kZXg6MH0scD1udWxsLGc9bnVsbCx2PSEwLHk9MCxtPTAsYj1TKCkubWFyaygoZnVuY3Rpb24gZSgpe3ZhciByLG8scyx1LGwsZixoLGIsdyx4LE8sQSxDLEYsUDtyZXR1cm4gUygpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOmlmKHYpe2UubmV4dD03O2JyZWFrfWlmKGEuY2hpbGRyZW4ucG9wKCksMyE9Kyt5KXtlLm5leHQ9NTticmVha31yZXR1cm4oMCxjLndhcm4pKCJYRkEgLSBTb21ldGhpbmcgZ29lcyB3cm9uZzogcGxlYXNlIGZpbGUgYSBidWcuIiksZS5hYnJ1cHQoInJldHVybiIse3Y6YX0pO2Nhc2UgNTplLm5leHQ9ODticmVhaztjYXNlIDc6eT0wO2Nhc2UgODpkPW51bGwsa1tuLiRleHRyYV0uY3VycmVudFBhZ2VBcmVhPWkscj1pW24uJHRvSFRNTF0oKS5odG1sLGEuY2hpbGRyZW4ucHVzaChyKSxwJiYoa1tuLiRleHRyYV0ubm9MYXlvdXRGYWlsdXJlPSEwLHIuY2hpbGRyZW4ucHVzaChwW24uJHRvSFRNTF0oaVtuLiRleHRyYV0uc3BhY2UpLmh0bWwpLHA9bnVsbCksZyYmKGtbbi4kZXh0cmFdLm5vTGF5b3V0RmFpbHVyZT0hMCxyLmNoaWxkcmVuLnB1c2goZ1tuLiR0b0hUTUxdKGlbbi4kZXh0cmFdLnNwYWNlKS5odG1sKSxnPW51bGwpLG89aS5jb250ZW50QXJlYS5jaGlsZHJlbixzPXIuY2hpbGRyZW4uZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gZS5hdHRyaWJ1dGVzLmNsYXNzLmluY2x1ZGVzKCJ4ZmFDb250ZW50YXJlYSIpfSkpLHY9ITEsa1tuLiRleHRyYV0uZmlyc3RVbnNwbGl0dGFibGU9bnVsbCxrW24uJGV4dHJhXS5ub0xheW91dEZhaWx1cmU9ITEsdT1mdW5jdGlvbihlKXt2YXIgcj10W24uJGZsdXNoSFRNTF0oKTtyJiYodj12fHxyLmNoaWxkcmVuJiYwIT09ci5jaGlsZHJlbi5sZW5ndGgsc1tlXS5jaGlsZHJlbi5wdXNoKHIpKX0sbD1tLGY9by5sZW5ndGg7Y2FzZSAyMTppZighKGw8Zikpe2UubmV4dD01NjticmVha31pZihoPWtbbi4kZXh0cmFdLmN1cnJlbnRDb250ZW50QXJlYT1vW2xdLGI9e3dpZHRoOmgudyxoZWlnaHQ6aC5ofSxtPTAscCYmKHNbbF0uY2hpbGRyZW4ucHVzaChwW24uJHRvSFRNTF0oYikuaHRtbCkscD1udWxsKSxnJiYoc1tsXS5jaGlsZHJlbi5wdXNoKGdbbi4kdG9IVE1MXShiKS5odG1sKSxnPW51bGwpLCEodz10W24uJHRvSFRNTF0oYikpLnN1Y2Nlc3Mpe2UubmV4dD0zMTticmVha31yZXR1cm4gdy5odG1sPyh2PXZ8fHcuaHRtbC5jaGlsZHJlbiYmMCE9PXcuaHRtbC5jaGlsZHJlbi5sZW5ndGgsc1tsXS5jaGlsZHJlbi5wdXNoKHcuaHRtbCkpOiF2JiZhLmNoaWxkcmVuLmxlbmd0aD4xJiZhLmNoaWxkcmVuLnBvcCgpLGUuYWJydXB0KCJyZXR1cm4iLHt2OmF9KTtjYXNlIDMxOmlmKCF3LmlzQnJlYWsoKSl7ZS5uZXh0PTQwO2JyZWFrfWlmKHg9dy5icmVha05vZGUsdShsKSwiYXV0byIhPT14LnRhcmdldFR5cGUpe2UubmV4dD0zNjticmVha31yZXR1cm4gZS5hYnJ1cHQoImNvbnRpbnVlIiw1Myk7Y2FzZSAzNjpyZXR1cm4geC5sZWFkZXImJihwPShwPWtbbi4kc2VhcmNoTm9kZV0oeC5sZWFkZXIseFtuLiRnZXRQYXJlbnRdKCkpKT9wWzBdOm51bGwpLHgudHJhaWxlciYmKGc9KGc9a1tuLiRzZWFyY2hOb2RlXSh4LnRyYWlsZXIseFtuLiRnZXRQYXJlbnRdKCkpKT9nWzBdOm51bGwpLCJwYWdlQXJlYSI9PT14LnRhcmdldFR5cGU/KGQ9eFtuLiRleHRyYV0udGFyZ2V0LGw9MS8wKTp4W24uJGV4dHJhXS50YXJnZXQ/KGQ9eFtuLiRleHRyYV0udGFyZ2V0LG09eFtuLiRleHRyYV0uaW5kZXgrMSxsPTEvMCk6bD14W24uJGV4dHJhXS5pbmRleCxlLmFicnVwdCgiY29udGludWUiLDUzKTtjYXNlIDQwOmlmKCFrW24uJGV4dHJhXS5vdmVyZmxvd05vZGUpe2UubmV4dD01MjticmVha31yZXR1cm4gTz1rW24uJGV4dHJhXS5vdmVyZmxvd05vZGUsa1tuLiRleHRyYV0ub3ZlcmZsb3dOb2RlPW51bGwsQT1PW24uJGdldEV4dHJhXSgpLEM9QS50YXJnZXQsQS5hZGRMZWFkZXI9bnVsbCE9PUEubGVhZGVyLEEuYWRkVHJhaWxlcj1udWxsIT09QS50cmFpbGVyLHUobCksRj1sLGw9MS8wLEMgaW5zdGFuY2VvZiBkdD9kPUM6QyBpbnN0YW5jZW9mIHBlJiYoLTEhPT0oUD1vLmluZGV4T2YoQykpP1A+Rj9sPVAtMTptPVA6KGQ9Q1tuLiRnZXRQYXJlbnRdKCksbT1kLmNvbnRlbnRBcmVhLmNoaWxkcmVuLmluZGV4T2YoQykpKSxlLmFicnVwdCgiY29udGludWUiLDUzKTtjYXNlIDUyOnUobCk7Y2FzZSA1MzpsKyssZS5uZXh0PTIxO2JyZWFrO2Nhc2UgNTY6cmV0dXJuIGtbbi4kZXh0cmFdLnBhZ2VOdW1iZXIrPTEsZCYmKGRbbi4kaXNVc2FibGVdKCk/ZFtuLiRleHRyYV0ubnVtYmVyT2ZVc2UrPTE6ZD1udWxsKSxpPWR8fGlbbi4kZ2V0TmV4dFBhZ2VdKCksZS5uZXh0PTYxLG51bGw7Y2FzZSA2MTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpO2Nhc2UgMjI6cmV0dXJuIGUuZGVsZWdhdGVZaWVsZChiKCksInQwIiwyNCk7Y2FzZSAyNDppZigib2JqZWN0IiE9PWgodz1lLnQwKSl7ZS5uZXh0PTI3O2JyZWFrfXJldHVybiBlLmFicnVwdCgicmV0dXJuIix3LnYpO2Nhc2UgMjc6ZS5uZXh0PTIyO2JyZWFrO2Nhc2UgMjk6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpfV0pLHJ9KG4uWEZBT2JqZWN0KTt0LlRlbXBsYXRlPUR0O3ZhciBCdD1mdW5jdGlvbihlKXttKHIsZSk7dmFyIHQ9dyhyKTtmdW5jdGlvbiByKGUpe3ZhciBuO3JldHVybiB5KHRoaXMsciksKG49dC5jYWxsKHRoaXMsRiwidGV4dCIpKS5pZD1lLmlkfHwiIixuLm1heENoYXJzPSgwLHMuZ2V0SW50ZWdlcikoe2RhdGE6ZS5tYXhDaGFycyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTpmdW5jdGlvbihlKXtyZXR1cm4gZT49MH19KSxuLm5hbWU9ZS5uYW1lfHwiIixuLnJpZD1lLnJpZHx8IiIsbi51c2U9ZS51c2V8fCIiLG4udXNlaHJlZj1lLnVzZWhyZWZ8fCIiLG59cmV0dXJuIHYocixbe2tleTpuLiRhY2NlcHRXaGl0ZXNwYWNlLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuITB9fSx7a2V5Om4uJG9uQ2hpbGQsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGVbbi4kbmFtZXNwYWNlSWRdPT09YS5OYW1lc3BhY2VJZHMueGh0bWwuaWQ/KHRoaXNbbi4kY29udGVudF09ZSwhMCk6KCgwLGMud2FybikoIlhGQSAtIEludmFsaWQgY29udGVudCBpbiBUZXh0OiAiLmNvbmNhdChlW24uJG5vZGVOYW1lXSwiLiIpKSwhMSl9fSx7a2V5Om4uJG9uVGV4dCx2YWx1ZTpmdW5jdGlvbihlKXt0aGlzW24uJGNvbnRlbnRdaW5zdGFuY2VvZiBuLlhGQU9iamVjdHx8ZChrKHIucHJvdG90eXBlKSxuLiRvblRleHQsdGhpcykuY2FsbCh0aGlzLGUpfX0se2tleTpuLiRmaW5hbGl6ZSx2YWx1ZTpmdW5jdGlvbigpeyJzdHJpbmciPT10eXBlb2YgdGhpc1tuLiRjb250ZW50XSYmKHRoaXNbbi4kY29udGVudF09dGhpc1tuLiRjb250ZW50XS5yZXBsYWNlKC9cclxuL2csIlxuIikpfX0se2tleTpuLiRnZXRFeHRyYSx2YWx1ZTpmdW5jdGlvbigpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdGhpc1tuLiRjb250ZW50XT90aGlzW24uJGNvbnRlbnRdLnNwbGl0KC9bXHUyMDI5XHUyMDI4XG5dLykucmVkdWNlKChmdW5jdGlvbihlLHQpe3JldHVybiB0JiZlLnB1c2godCksZX0pLFtdKS5qb2luKCJcbiIpOnRoaXNbbi4kY29udGVudF1bbi4kdGV4dF0oKX19LHtrZXk6bi4kdG9IVE1MLHZhbHVlOmZ1bmN0aW9uKGUpe2lmKCJzdHJpbmciPT10eXBlb2YgdGhpc1tuLiRjb250ZW50XSl7dmFyIHQ9VSh0aGlzW24uJGNvbnRlbnRdKS5odG1sO3JldHVybiB0aGlzW24uJGNvbnRlbnRdLmluY2x1ZGVzKCJcdTIwMjkiKT8odC5uYW1lPSJkaXYiLHQuY2hpbGRyZW49W10sdGhpc1tuLiRjb250ZW50XS5zcGxpdCgiXHUyMDI5IikubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZS5zcGxpdCgvW1x1MjAyOFxuXS8pLnJlZHVjZSgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5wdXNoKHtuYW1lOiJzcGFuIix2YWx1ZTp0fSx7bmFtZToiYnIifSksZX0pLFtdKX0pKS5mb3JFYWNoKChmdW5jdGlvbihlKXt0LmNoaWxkcmVuLnB1c2goe25hbWU6InAiLGNoaWxkcmVuOmV9KX0pKSk6L1tcdTIwMjhcbl0vLnRlc3QodGhpc1tuLiRjb250ZW50XSkmJih0Lm5hbWU9ImRpdiIsdC5jaGlsZHJlbj1bXSx0aGlzW24uJGNvbnRlbnRdLnNwbGl0KC9bXHUyMDI4XG5dLykuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dC5jaGlsZHJlbi5wdXNoKHtuYW1lOiJzcGFuIix2YWx1ZTplfSx7bmFtZToiYnIifSl9KSkpLHMuSFRNTFJlc3VsdC5zdWNjZXNzKHQpfXJldHVybiB0aGlzW24uJGNvbnRlbnRdW24uJHRvSFRNTF0oZSl9fV0pLHJ9KG4uQ29udGVudE9iamVjdCk7dC5UZXh0PUJ0O3ZhciBVdD1mdW5jdGlvbihlKXttKHIsZSk7dmFyIHQ9dyhyKTtmdW5jdGlvbiByKGUpe3ZhciBuO3JldHVybiB5KHRoaXMsciksKG49dC5jYWxsKHRoaXMsRiwidGV4dEVkaXQiLCEwKSkuYWxsb3dSaWNoVGV4dD0oMCxzLmdldEludGVnZXIpKHtkYXRhOmUuYWxsb3dSaWNoVGV4dCxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTpmdW5jdGlvbihlKXtyZXR1cm4gMT09PWV9fSksbi5oU2Nyb2xsUG9saWN5PSgwLHMuZ2V0U3RyaW5nT3B0aW9uKShlLmhTY3JvbGxQb2xpY3ksWyJhdXRvIiwib2ZmIiwib24iXSksbi5pZD1lLmlkfHwiIixuLm11bHRpTGluZT0oMCxzLmdldEludGVnZXIpKHtkYXRhOmUubXVsdGlMaW5lLGRlZmF1bHRWYWx1ZToiIix2YWxpZGF0ZTpmdW5jdGlvbihlKXtyZXR1cm4gMD09PWV8fDE9PT1lfX0pLG4udXNlPWUudXNlfHwiIixuLnVzZWhyZWY9ZS51c2VocmVmfHwiIixuLnZTY3JvbGxQb2xpY3k9KDAscy5nZXRTdHJpbmdPcHRpb24pKGUudlNjcm9sbFBvbGljeSxbImF1dG8iLCJvZmYiLCJvbiJdKSxuLmJvcmRlcj1udWxsLG4uY29tYj1udWxsLG4uZXh0cmFzPW51bGwsbi5tYXJnaW49bnVsbCxufXJldHVybiB2KHIsW3trZXk6bi4kdG9IVE1MLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0LHI9KDAsby50b1N0eWxlKSh0aGlzLCJib3JkZXIiLCJmb250IiwibWFyZ2luIiksYT10aGlzW24uJGdldFBhcmVudF0oKVtuLiRnZXRQYXJlbnRdKCk7cmV0dXJuIiI9PT10aGlzLm11bHRpTGluZSYmKHRoaXMubXVsdGlMaW5lPWEgaW5zdGFuY2VvZiBPZT8xOjApLHQ9MT09PXRoaXMubXVsdGlMaW5lP3tuYW1lOiJ0ZXh0YXJlYSIsYXR0cmlidXRlczp7ZGF0YUlkOmFbbi4kZGF0YV0mJmFbbi4kZGF0YV1bbi4kdWlkXXx8YVtuLiR1aWRdLGZpZWxkSWQ6YVtuLiR1aWRdLGNsYXNzOlsieGZhVGV4dGZpZWxkIl0sc3R5bGU6ciwiYXJpYS1sYWJlbCI6QihhKSwiYXJpYS1yZXF1aXJlZCI6ITF9fTp7bmFtZToiaW5wdXQiLGF0dHJpYnV0ZXM6e3R5cGU6InRleHQiLGRhdGFJZDphW24uJGRhdGFdJiZhW24uJGRhdGFdW24uJHVpZF18fGFbbi4kdWlkXSxmaWVsZElkOmFbbi4kdWlkXSxjbGFzczpbInhmYVRleHRmaWVsZCJdLHN0eWxlOnIsImFyaWEtbGFiZWwiOkIoYSksImFyaWEtcmVxdWlyZWQiOiExfX0sUihhKSYmKHQuYXR0cmlidXRlc1siYXJpYS1yZXF1aXJlZCJdPSEwLHQuYXR0cmlidXRlcy5yZXF1aXJlZD0hMCkscy5IVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImxhYmVsIixhdHRyaWJ1dGVzOntjbGFzczpbInhmYUxhYmVsIl19LGNoaWxkcmVuOlt0XX0pfX1dKSxyfShuLlhGQU9iamVjdCksJHQ9ZnVuY3Rpb24oZSl7bShyLGUpO3ZhciB0PXcocik7ZnVuY3Rpb24gcihlKXt2YXIgbjtyZXR1cm4geSh0aGlzLHIpLChuPXQuY2FsbCh0aGlzLEYsInRpbWUiKSkuaWQ9ZS5pZHx8IiIsbi5uYW1lPWUubmFtZXx8IiIsbi51c2U9ZS51c2V8fCIiLG4udXNlaHJlZj1lLnVzZWhyZWZ8fCIiLG59cmV0dXJuIHYocixbe2tleTpuLiRmaW5hbGl6ZSx2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXNbbi4kY29udGVudF0udHJpbSgpO3RoaXNbbi4kY29udGVudF09ZT9uZXcgRGF0ZShlKTpudWxsfX0se2tleTpuLiR0b0hUTUwsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIFUodGhpc1tuLiRjb250ZW50XT90aGlzW24uJGNvbnRlbnRdLnRvU3RyaW5nKCk6IiIpfX1dKSxyfShuLlN0cmluZ09iamVjdCksWHQ9ZnVuY3Rpb24oZSl7bShyLGUpO3ZhciB0PXcocik7ZnVuY3Rpb24gcihlKXt2YXIgbjtyZXR1cm4geSh0aGlzLHIpLChuPXQuY2FsbCh0aGlzLEYsInRpbWVTdGFtcCIpKS5pZD1lLmlkfHwiIixuLnNlcnZlcj1lLnNlcnZlcnx8IiIsbi50eXBlPSgwLHMuZ2V0U3RyaW5nT3B0aW9uKShlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pLG4udXNlPWUudXNlfHwiIixuLnVzZWhyZWY9ZS51c2VocmVmfHwiIixufXJldHVybiB2KHIpfShuLlhGQU9iamVjdCksSHQ9ZnVuY3Rpb24oZSl7bShyLGUpO3ZhciB0PXcocik7ZnVuY3Rpb24gcihlKXt2YXIgbjtyZXR1cm4geSh0aGlzLHIpLChuPXQuY2FsbCh0aGlzLEYsInRvb2xUaXAiKSkuaWQ9ZS5pZHx8IiIsbi5yaWQ9ZS5yaWR8fCIiLG4udXNlPWUudXNlfHwiIixuLnVzZWhyZWY9ZS51c2VocmVmfHwiIixufXJldHVybiB2KHIpfShuLlN0cmluZ09iamVjdCkscXQ9ZnVuY3Rpb24oZSl7bShyLGUpO3ZhciB0PXcocik7ZnVuY3Rpb24gcihlKXt2YXIgYTtyZXR1cm4geSh0aGlzLHIpLChhPXQuY2FsbCh0aGlzLEYsInRyYXZlcnNhbCIsITApKS5pZD1lLmlkfHwiIixhLnVzZT1lLnVzZXx8IiIsYS51c2VocmVmPWUudXNlaHJlZnx8IiIsYS5leHRyYXM9bnVsbCxhLnRyYXZlcnNlPW5ldyBuLlhGQU9iamVjdEFycmF5LGF9cmV0dXJuIHYocil9KG4uWEZBT2JqZWN0KSxHdD1mdW5jdGlvbihlKXttKHIsZSk7dmFyIHQ9dyhyKTtmdW5jdGlvbiByKGUpe3ZhciBuO3JldHVybiB5KHRoaXMsciksKG49dC5jYWxsKHRoaXMsRiwidHJhdmVyc2UiLCEwKSkuaWQ9ZS5pZHx8IiIsbi5vcGVyYXRpb249KDAscy5nZXRTdHJpbmdPcHRpb24pKGUub3BlcmF0aW9uLFsibmV4dCIsImJhY2siLCJkb3duIiwiZmlyc3QiLCJsZWZ0IiwicmlnaHQiLCJ1cCJdKSxuLnJlZj1lLnJlZnx8IiIsbi51c2U9ZS51c2V8fCIiLG4udXNlaHJlZj1lLnVzZWhyZWZ8fCIiLG4uZXh0cmFzPW51bGwsbi5zY3JpcHQ9bnVsbCxufXJldHVybiB2KHIsW3trZXk6Im5hbWUiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm9wZXJhdGlvbn19LHtrZXk6bi4kaXNUcmFuc3BhcmVudCx2YWx1ZTpmdW5jdGlvbigpe3JldHVybiExfX1dKSxyfShuLlhGQU9iamVjdCksenQ9ZnVuY3Rpb24oZSl7bShyLGUpO3ZhciB0PXcocik7ZnVuY3Rpb24gcihlKXt2YXIgbjtyZXR1cm4geSh0aGlzLHIpLChuPXQuY2FsbCh0aGlzLEYsInVpIiwhMCkpLmlkPWUuaWR8fCIiLG4udXNlPWUudXNlfHwiIixuLnVzZWhyZWY9ZS51c2VocmVmfHwiIixuLmV4dHJhcz1udWxsLG4ucGljdHVyZT1udWxsLG4uYmFyY29kZT1udWxsLG4uYnV0dG9uPW51bGwsbi5jaGVja0J1dHRvbj1udWxsLG4uY2hvaWNlTGlzdD1udWxsLG4uZGF0ZVRpbWVFZGl0PW51bGwsbi5kZWZhdWx0VWk9bnVsbCxuLmltYWdlRWRpdD1udWxsLG4ubnVtZXJpY0VkaXQ9bnVsbCxuLnBhc3N3b3JkRWRpdD1udWxsLG4uc2lnbmF0dXJlPW51bGwsbi50ZXh0RWRpdD1udWxsLG59cmV0dXJuIHYocixbe2tleTpuLiRnZXRFeHRyYSx2YWx1ZTpmdW5jdGlvbigpe2lmKHZvaWQgMD09PXRoaXNbbi4kZXh0cmFdKXt2YXIgZSx0PU8oT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpO3RyeXtmb3IodC5zKCk7IShlPXQubigpKS5kb25lOyl7dmFyIHI9ZS52YWx1ZTtpZigiZXh0cmFzIiE9PXImJiJwaWN0dXJlIiE9PXIpe3ZhciBhPXRoaXNbcl07aWYoYSBpbnN0YW5jZW9mIG4uWEZBT2JqZWN0KXJldHVybiB0aGlzW24uJGV4dHJhXT1hLGF9fX1jYXRjaChlKXt0LmUoZSl9ZmluYWxseXt0LmYoKX10aGlzW24uJGV4dHJhXT1udWxsfXJldHVybiB0aGlzW24uJGV4dHJhXX19LHtrZXk6bi4kdG9IVE1MLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXNbbi4kZ2V0RXh0cmFdKCk7cmV0dXJuIHQ/dFtuLiR0b0hUTUxdKGUpOnMuSFRNTFJlc3VsdC5FTVBUWX19XSkscn0obi5YRkFPYmplY3QpLFd0PWZ1bmN0aW9uKGUpe20ocixlKTt2YXIgdD13KHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG47cmV0dXJuIHkodGhpcyxyKSwobj10LmNhbGwodGhpcyxGLCJ2YWxpZGF0ZSIsITApKS5mb3JtYXRUZXN0PSgwLHMuZ2V0U3RyaW5nT3B0aW9uKShlLmZvcm1hdFRlc3QsWyJ3YXJuaW5nIiwiZGlzYWJsZWQiLCJlcnJvciJdKSxuLmlkPWUuaWR8fCIiLG4ubnVsbFRlc3Q9KDAscy5nZXRTdHJpbmdPcHRpb24pKGUubnVsbFRlc3QsWyJkaXNhYmxlZCIsImVycm9yIiwid2FybmluZyJdKSxuLnNjcmlwdFRlc3Q9KDAscy5nZXRTdHJpbmdPcHRpb24pKGUuc2NyaXB0VGVzdCxbImVycm9yIiwiZGlzYWJsZWQiLCJ3YXJuaW5nIl0pLG4udXNlPWUudXNlfHwiIixuLnVzZWhyZWY9ZS51c2VocmVmfHwiIixuLmV4dHJhcz1udWxsLG4ubWVzc2FnZT1udWxsLG4ucGljdHVyZT1udWxsLG4uc2NyaXB0PW51bGwsbn1yZXR1cm4gdihyKX0obi5YRkFPYmplY3QpLFZ0PWZ1bmN0aW9uKGUpe20ocixlKTt2YXIgdD13KHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG47cmV0dXJuIHkodGhpcyxyKSwobj10LmNhbGwodGhpcyxGLCJ2YWx1ZSIsITApKS5pZD1lLmlkfHwiIixuLm92ZXJyaWRlPSgwLHMuZ2V0SW50ZWdlcikoe2RhdGE6ZS5vdmVycmlkZSxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTpmdW5jdGlvbihlKXtyZXR1cm4gMT09PWV9fSksbi5yZWxldmFudD0oMCxzLmdldFJlbGV2YW50KShlLnJlbGV2YW50KSxuLnVzZT1lLnVzZXx8IiIsbi51c2VocmVmPWUudXNlaHJlZnx8IiIsbi5hcmM9bnVsbCxuLmJvb2xlYW49bnVsbCxuLmRhdGU9bnVsbCxuLmRhdGVUaW1lPW51bGwsbi5kZWNpbWFsPW51bGwsbi5leERhdGE9bnVsbCxuLmZsb2F0PW51bGwsbi5pbWFnZT1udWxsLG4uaW50ZWdlcj1udWxsLG4ubGluZT1udWxsLG4ucmVjdGFuZ2xlPW51bGwsbi50ZXh0PW51bGwsbi50aW1lPW51bGwsbn1yZXR1cm4gdihyLFt7a2V5Om4uJHNldFZhbHVlLHZhbHVlOmZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCl7cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiB0LnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIGUudG9TdHJpbmcoKX0sdH0oKGZ1bmN0aW9uKGUpe3ZhciB0PXRoaXNbbi4kZ2V0UGFyZW50XSgpO2lmKHQgaW5zdGFuY2VvZiBCZSYmdC51aSYmdC51aS5pbWFnZUVkaXQpcmV0dXJuIHRoaXMuaW1hZ2V8fCh0aGlzLmltYWdlPW5ldyBXZSh7fSksdGhpc1tuLiRhcHBlbmRDaGlsZF0odGhpcy5pbWFnZSkpLHZvaWQodGhpcy5pbWFnZVtuLiRjb250ZW50XT1lW24uJGNvbnRlbnRdKTt2YXIgcj1lW24uJG5vZGVOYW1lXTtpZihudWxsPT09dGhpc1tyXSl7dmFyIGEsaT1PKE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMpKTt0cnl7Zm9yKGkucygpOyEoYT1pLm4oKSkuZG9uZTspe3ZhciBvPWEudmFsdWUscz10aGlzW29dO3MgaW5zdGFuY2VvZiBuLlhGQU9iamVjdCYmKHRoaXNbb109bnVsbCx0aGlzW24uJHJlbW92ZUNoaWxkXShzKSl9fWNhdGNoKGUpe2kuZShlKX1maW5hbGx5e2kuZigpfXRoaXNbZVtuLiRub2RlTmFtZV1dPWUsdGhpc1tuLiRhcHBlbmRDaGlsZF0oZSl9ZWxzZSB0aGlzW3JdW24uJGNvbnRlbnRdPWVbbi4kY29udGVudF19KSl9LHtrZXk6bi4kdGV4dCx2YWx1ZTpmdW5jdGlvbigpe2lmKHRoaXMuZXhEYXRhKXJldHVybiJzdHJpbmciPT10eXBlb2YgdGhpcy5leERhdGFbbi4kY29udGVudF0/dGhpcy5leERhdGFbbi4kY29udGVudF0udHJpbSgpOnRoaXMuZXhEYXRhW24uJGNvbnRlbnRdW24uJHRleHRdKCkudHJpbSgpO3ZhciBlLHQ9TyhPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSk7dHJ5e2Zvcih0LnMoKTshKGU9dC5uKCkpLmRvbmU7KXt2YXIgcj1lLnZhbHVlO2lmKCJpbWFnZSIhPT1yKXt2YXIgYT10aGlzW3JdO2lmKGEgaW5zdGFuY2VvZiBuLlhGQU9iamVjdClyZXR1cm4oYVtuLiRjb250ZW50XXx8IiIpLnRvU3RyaW5nKCkudHJpbSgpfX19Y2F0Y2goZSl7dC5lKGUpfWZpbmFsbHl7dC5mKCl9cmV0dXJuIG51bGx9fSx7a2V5Om4uJHRvSFRNTCx2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdCxyPU8oT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpO3RyeXtmb3Ioci5zKCk7ISh0PXIubigpKS5kb25lOyl7dmFyIGE9dGhpc1t0LnZhbHVlXTtpZihhIGluc3RhbmNlb2Ygbi5YRkFPYmplY3QpcmV0dXJuIGFbbi4kdG9IVE1MXShlKX19Y2F0Y2goZSl7ci5lKGUpfWZpbmFsbHl7ci5mKCl9cmV0dXJuIHMuSFRNTFJlc3VsdC5FTVBUWX19XSkscn0obi5YRkFPYmplY3QpO3QuVmFsdWU9VnQ7dmFyIFl0PWZ1bmN0aW9uKGUpe20ocixlKTt2YXIgdD13KHIpO2Z1bmN0aW9uIHIoZSl7dmFyIGE7cmV0dXJuIHkodGhpcyxyKSwoYT10LmNhbGwodGhpcyxGLCJ2YXJpYWJsZXMiLCEwKSkuaWQ9ZS5pZHx8IiIsYS51c2U9ZS51c2V8fCIiLGEudXNlaHJlZj1lLnVzZWhyZWZ8fCIiLGEuYm9vbGVhbj1uZXcgbi5YRkFPYmplY3RBcnJheSxhLmRhdGU9bmV3IG4uWEZBT2JqZWN0QXJyYXksYS5kYXRlVGltZT1uZXcgbi5YRkFPYmplY3RBcnJheSxhLmRlY2ltYWw9bmV3IG4uWEZBT2JqZWN0QXJyYXksYS5leERhdGE9bmV3IG4uWEZBT2JqZWN0QXJyYXksYS5mbG9hdD1uZXcgbi5YRkFPYmplY3RBcnJheSxhLmltYWdlPW5ldyBuLlhGQU9iamVjdEFycmF5LGEuaW50ZWdlcj1uZXcgbi5YRkFPYmplY3RBcnJheSxhLm1hbmlmZXN0PW5ldyBuLlhGQU9iamVjdEFycmF5LGEuc2NyaXB0PW5ldyBuLlhGQU9iamVjdEFycmF5LGEudGV4dD1uZXcgbi5YRkFPYmplY3RBcnJheSxhLnRpbWU9bmV3IG4uWEZBT2JqZWN0QXJyYXksYX1yZXR1cm4gdihyLFt7a2V5Om4uJGlzVHJhbnNwYXJlbnQsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4hMH19XSkscn0obi5YRkFPYmplY3QpLEt0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe3kodGhpcyxlKX1yZXR1cm4gdihlLG51bGwsW3trZXk6YS4kYnVpbGRYRkFPYmplY3QsdmFsdWU6ZnVuY3Rpb24odCxyKXtpZihlLmhhc093blByb3BlcnR5KHQpKXt2YXIgYT1lW3RdKHIpO3JldHVybiBhW24uJHNldFNldEF0dHJpYnV0ZXNdKHIpLGF9fX0se2tleToiYXBwZWFyYW5jZUZpbHRlciIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBHKGUpfX0se2tleToiYXJjIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IHooZSl9fSx7a2V5OiJhcmVhIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IFcoZSl9fSx7a2V5OiJhc3Npc3QiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgVihlKX19LHtrZXk6ImJhcmNvZGUiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgWShlKX19LHtrZXk6ImJpbmQiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgSyhlKX19LHtrZXk6ImJpbmRJdGVtcyIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBKKGUpfX0se2tleToiYm9va2VuZCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBaKGUpfX0se2tleToiYm9vbGVhbiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBRKGUpfX0se2tleToiYm9yZGVyIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IGVlKGUpfX0se2tleToiYnJlYWsiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgdGUoZSl9fSx7a2V5OiJicmVha0FmdGVyIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IHJlKGUpfX0se2tleToiYnJlYWtCZWZvcmUiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgbmUoZSl9fSx7a2V5OiJidXR0b24iLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgYWUoZSl9fSx7a2V5OiJjYWxjdWxhdGUiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgaWUoZSl9fSx7a2V5OiJjYXB0aW9uIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IG9lKGUpfX0se2tleToiY2VydGlmaWNhdGUiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgc2UoZSl9fSx7a2V5OiJjZXJ0aWZpY2F0ZXMiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgY2UoZSl9fSx7a2V5OiJjaGVja0J1dHRvbiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyB1ZShlKX19LHtrZXk6ImNob2ljZUxpc3QiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgbGUoZSl9fSx7a2V5OiJjb2xvciIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBmZShlKX19LHtrZXk6ImNvbWIiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgaGUoZSl9fSx7a2V5OiJjb25uZWN0Iix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IGRlKGUpfX0se2tleToiY29udGVudEFyZWEiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgcGUoZSl9fSx7a2V5OiJjb3JuZXIiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgZ2UoZSl9fSx7a2V5OiJkYXRlIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IHZlKGUpfX0se2tleToiZGF0ZVRpbWUiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgeWUoZSl9fSx7a2V5OiJkYXRlVGltZUVkaXQiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgbWUoZSl9fSx7a2V5OiJkZWNpbWFsIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IGJlKGUpfX0se2tleToiZGVmYXVsdFVpIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IHdlKGUpfX0se2tleToiZGVzYyIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBrZShlKX19LHtrZXk6ImRpZ2VzdE1ldGhvZCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBTZShlKX19LHtrZXk6ImRpZ2VzdE1ldGhvZHMiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgeGUoZSl9fSx7a2V5OiJkcmF3Iix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IE9lKGUpfX0se2tleToiZWRnZSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBBZShlKX19LHtrZXk6ImVuY29kaW5nIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IENlKGUpfX0se2tleToiZW5jb2RpbmdzIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IEZlKGUpfX0se2tleToiZW5jcnlwdCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBQZShlKX19LHtrZXk6ImVuY3J5cHREYXRhIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IFRlKGUpfX0se2tleToiZW5jcnlwdGlvbiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBJZShlKX19LHtrZXk6ImVuY3J5cHRpb25NZXRob2QiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgRWUoZSl9fSx7a2V5OiJlbmNyeXB0aW9uTWV0aG9kcyIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBqZShlKX19LHtrZXk6ImV2ZW50Iix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IE1lKGUpfX0se2tleToiZXhEYXRhIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IF9lKGUpfX0se2tleToiZXhPYmplY3QiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgTGUoZSl9fSx7a2V5OiJleGNsR3JvdXAiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgUmUoZSl9fSx7a2V5OiJleGVjdXRlIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IE5lKGUpfX0se2tleToiZXh0cmFzIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IERlKGUpfX0se2tleToiZmllbGQiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgQmUoZSl9fSx7a2V5OiJmaWxsIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IFVlKGUpfX0se2tleToiZmlsdGVyIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3ICRlKGUpfX0se2tleToiZmxvYXQiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgWGUoZSl9fSx7a2V5OiJmb250Iix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IEhlKGUpfX0se2tleToiZm9ybWF0Iix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IHFlKGUpfX0se2tleToiaGFuZGxlciIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBHZShlKX19LHtrZXk6Imh5cGhlbmF0aW9uIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IHplKGUpfX0se2tleToiaW1hZ2UiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgV2UoZSl9fSx7a2V5OiJpbWFnZUVkaXQiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgVmUoZSl9fSx7a2V5OiJpbnRlZ2VyIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IFllKGUpfX0se2tleToiaXNzdWVycyIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBLZShlKX19LHtrZXk6Iml0ZW1zIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IEplKGUpfX0se2tleToia2VlcCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBaZShlKX19LHtrZXk6ImtleVVzYWdlIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IFFlKGUpfX0se2tleToibGluZSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBldChlKX19LHtrZXk6ImxpbmVhciIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyB0dChlKX19LHtrZXk6ImxvY2tEb2N1bWVudCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBydChlKX19LHtrZXk6Im1hbmlmZXN0Iix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IG50KGUpfX0se2tleToibWFyZ2luIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IGF0KGUpfX0se2tleToibWRwIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IGl0KGUpfX0se2tleToibWVkaXVtIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IG90KGUpfX0se2tleToibWVzc2FnZSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBzdChlKX19LHtrZXk6Im51bWVyaWNFZGl0Iix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IGN0KGUpfX0se2tleToib2NjdXIiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgdXQoZSl9fSx7a2V5OiJvaWQiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgbHQoZSl9fSx7a2V5OiJvaWRzIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IGZ0KGUpfX0se2tleToib3ZlcmZsb3ciLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgaHQoZSl9fSx7a2V5OiJwYWdlQXJlYSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBkdChlKX19LHtrZXk6InBhZ2VTZXQiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgcHQoZSl9fSx7a2V5OiJwYXJhIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IGd0KGUpfX0se2tleToicGFzc3dvcmRFZGl0Iix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IHZ0KGUpfX0se2tleToicGF0dGVybiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyB5dChlKX19LHtrZXk6InBpY3R1cmUiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgbXQoZSl9fSx7a2V5OiJwcm90byIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBidChlKX19LHtrZXk6InJhZGlhbCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyB3dChlKX19LHtrZXk6InJlYXNvbiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBrdChlKX19LHtrZXk6InJlYXNvbnMiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgU3QoZSl9fSx7a2V5OiJyZWN0YW5nbGUiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgeHQoZSl9fSx7a2V5OiJyZWYiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgT3QoZSl9fSx7a2V5OiJzY3JpcHQiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgQXQoZSl9fSx7a2V5OiJzZXRQcm9wZXJ0eSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBDdChlKX19LHtrZXk6InNpZ25EYXRhIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IEZ0KGUpfX0se2tleToic2lnbmF0dXJlIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IFB0KGUpfX0se2tleToic2lnbmluZyIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBUdChlKX19LHtrZXk6InNvbGlkIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IEl0KGUpfX0se2tleToic3BlYWsiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgRXQoZSl9fSx7a2V5OiJzdGlwcGxlIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IGp0KGUpfX0se2tleToic3ViZm9ybSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBNdChlKX19LHtrZXk6InN1YmZvcm1TZXQiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgX3QoZSl9fSx7a2V5OiJzdWJqZWN0RE4iLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgTHQoZSl9fSx7a2V5OiJzdWJqZWN0RE5zIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IFJ0KGUpfX0se2tleToic3VibWl0Iix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IE50KGUpfX0se2tleToidGVtcGxhdGUiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgRHQoZSl9fSx7a2V5OiJ0ZXh0Iix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IEJ0KGUpfX0se2tleToidGV4dEVkaXQiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgVXQoZSl9fSx7a2V5OiJ0aW1lIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3ICR0KGUpfX0se2tleToidGltZVN0YW1wIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IFh0KGUpfX0se2tleToidG9vbFRpcCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBIdChlKX19LHtrZXk6InRyYXZlcnNhbCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBxdChlKX19LHtrZXk6InRyYXZlcnNlIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IEd0KGUpfX0se2tleToidWkiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgenQoZSl9fSx7a2V5OiJ2YWxpZGF0ZSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBXdChlKX19LHtrZXk6InZhbHVlIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IFZ0KGUpfX0se2tleToidmFyaWFibGVzIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IFl0KGUpfX1dKSxlfSgpO3QuVGVtcGxhdGVOYW1lc3BhY2U9S3R9LChlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5hZGRIVE1MPWZ1bmN0aW9uKGUsdCxyKXt2YXIgcz1lW24uJGV4dHJhXSx1PXMuYXZhaWxhYmxlU3BhY2UsbD1pKHIsNCksZj1sWzBdLGg9bFsxXSxkPWxbMl0scD1sWzNdO3N3aXRjaChlLmxheW91dCl7Y2FzZSJwb3NpdGlvbiI6cy53aWR0aD1NYXRoLm1heChzLndpZHRoLGYrZCkscy5oZWlnaHQ9TWF0aC5tYXgocy5oZWlnaHQsaCtwKSxzLmNoaWxkcmVuLnB1c2godCk7YnJlYWs7Y2FzZSJsci10YiI6Y2FzZSJybC10YiI6cy5saW5lJiYxIT09cy5hdHRlbXB0fHwocy5saW5lPWMoZSxbXSkscy5jaGlsZHJlbi5wdXNoKHMubGluZSkscy5udW1iZXJJbkxpbmU9MCkscy5udW1iZXJJbkxpbmUrPTEscy5saW5lLmNoaWxkcmVuLnB1c2godCksMD09PXMuYXR0ZW1wdD8ocy5jdXJyZW50V2lkdGgrPWQscy5oZWlnaHQ9TWF0aC5tYXgocy5oZWlnaHQscy5wcmV2SGVpZ2h0K3ApKToocy5jdXJyZW50V2lkdGg9ZCxzLnByZXZIZWlnaHQ9cy5oZWlnaHQscy5oZWlnaHQrPXAscy5hdHRlbXB0PTApLHMud2lkdGg9TWF0aC5tYXgocy53aWR0aCxzLmN1cnJlbnRXaWR0aCk7YnJlYWs7Y2FzZSJybC1yb3ciOmNhc2Uicm93IjpzLmNoaWxkcmVuLnB1c2godCkscy53aWR0aCs9ZCxzLmhlaWdodD1NYXRoLm1heChzLmhlaWdodCxwKTt2YXIgZyx2PSgwLGEubWVhc3VyZVRvU3RyaW5nKShzLmhlaWdodCkseT1mdW5jdGlvbihlLHQpe3ZhciByPSJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbIkBAaXRlcmF0b3IiXTtpZighcil7aWYoQXJyYXkuaXNBcnJheShlKXx8KHI9byhlKSkpe3ImJihlPXIpO3ZhciBuPTAsYT1mdW5jdGlvbigpe307cmV0dXJue3M6YSxuOmZ1bmN0aW9uKCl7cmV0dXJuIG4+PWUubGVuZ3RoP3tkb25lOiEwfTp7ZG9uZTohMSx2YWx1ZTplW24rK119fSxlOmZ1bmN0aW9uKGUpe3Rocm93IGV9LGY6YX19dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGl0ZXJhdGUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfXZhciBpLHM9ITAsYz0hMTtyZXR1cm57czpmdW5jdGlvbigpe3I9ci5jYWxsKGUpfSxuOmZ1bmN0aW9uKCl7dmFyIGU9ci5uZXh0KCk7cmV0dXJuIHM9ZS5kb25lLGV9LGU6ZnVuY3Rpb24oZSl7Yz0hMCxpPWV9LGY6ZnVuY3Rpb24oKXt0cnl7c3x8bnVsbD09ci5yZXR1cm58fHIucmV0dXJuKCl9ZmluYWxseXtpZihjKXRocm93IGl9fX19KHMuY2hpbGRyZW4pO3RyeXtmb3IoeS5zKCk7IShnPXkubigpKS5kb25lOylnLnZhbHVlLmF0dHJpYnV0ZXMuc3R5bGUuaGVpZ2h0PXZ9Y2F0Y2goZSl7eS5lKGUpfWZpbmFsbHl7eS5mKCl9YnJlYWs7Y2FzZSJ0YWJsZSI6Y2FzZSJ0YiI6cy53aWR0aD1NYXRoLm1pbih1LndpZHRoLE1hdGgubWF4KHMud2lkdGgsZCkpLHMuaGVpZ2h0Kz1wLHMuY2hpbGRyZW4ucHVzaCh0KX19LHQuY2hlY2tEaW1lbnNpb25zPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09PWVbbi4kZ2V0VGVtcGxhdGVSb290XSgpW24uJGV4dHJhXS5maXJzdFVuc3BsaXR0YWJsZSlyZXR1cm4hMDtpZigwPT09ZS53fHwwPT09ZS5oKXJldHVybiEwO3ZhciByPWVbbi4kZ2V0U3ViZm9ybVBhcmVudF0oKSxhPXJbbi4kZXh0cmFdJiZyW24uJGV4dHJhXS5hdHRlbXB0fHwwLG89aShmdW5jdGlvbihlKXt2YXIgdCxyLG49IiI9PT1lLnc/TmFOOmUudyxhPSIiPT09ZS5oP05hTjplLmgsaT0wLG89MDtzd2l0Y2goZS5hbmNob3JUeXBlfHwiIil7Y2FzZSJib3R0b21DZW50ZXIiOmk9bi8yLG89YTticmVhaztjYXNlImJvdHRvbUxlZnQiOmk9MCxvPWE7YnJlYWs7Y2FzZSJib3R0b21SaWdodCI6aT1uLG89YTticmVhaztjYXNlIm1pZGRsZUNlbnRlciI6aT1uLzIsbz1hLzI7YnJlYWs7Y2FzZSJtaWRkbGVMZWZ0IjppPTAsbz1hLzI7YnJlYWs7Y2FzZSJtaWRkbGVSaWdodCI6aT1uLG89YS8yO2JyZWFrO2Nhc2UidG9wQ2VudGVyIjppPW4vMixvPTA7YnJlYWs7Y2FzZSJ0b3BSaWdodCI6aT1uLG89MH1zd2l0Y2goZS5yb3RhdGV8fDApe2Nhc2UgMDp0PS1pLHI9LW87YnJlYWs7Y2FzZSA5MDp0PS1vLHI9aTt2YXIgcz1bYSwtbl07bj1zWzBdLGE9c1sxXTticmVhaztjYXNlIDE4MDp0PWkscj1vO3ZhciBjPVstbiwtYV07bj1jWzBdLGE9Y1sxXTticmVhaztjYXNlIDI3MDp0PW8scj0taTt2YXIgdT1bLWEsbl07bj11WzBdLGE9dVsxXX1yZXR1cm5bZS54K3QrTWF0aC5taW4oMCxuKSxlLnkrcitNYXRoLm1pbigwLGEpLE1hdGguYWJzKG4pLE1hdGguYWJzKGEpXX0oZSksNCkscz1vWzFdLGM9b1syXSx1PW9bM107c3dpdGNoKHIubGF5b3V0KXtjYXNlImxyLXRiIjpjYXNlInJsLXRiIjpyZXR1cm4gMD09PWE/ZVtuLiRnZXRUZW1wbGF0ZVJvb3RdKClbbi4kZXh0cmFdLm5vTGF5b3V0RmFpbHVyZT8iIiE9PWUudz9NYXRoLnJvdW5kKGMtdC53aWR0aCk8PTI6dC53aWR0aD4yOiEoIiIhPT1lLmgmJk1hdGgucm91bmQodS10LmhlaWdodCk+MikmJigiIiE9PWUudz9NYXRoLnJvdW5kKGMtdC53aWR0aCk8PTJ8fDA9PT1yW24uJGV4dHJhXS5udW1iZXJJbkxpbmUmJnQuaGVpZ2h0PjI6dC53aWR0aD4yKTohIWVbbi4kZ2V0VGVtcGxhdGVSb290XSgpW24uJGV4dHJhXS5ub0xheW91dEZhaWx1cmV8fCEoIiIhPT1lLmgmJk1hdGgucm91bmQodS10LmhlaWdodCk+MikmJigiIj09PWUud3x8TWF0aC5yb3VuZChjLXQud2lkdGgpPD0yfHwhcltuLiRpc1RoZXJlTW9yZVdpZHRoXSgpKSYmdC5oZWlnaHQ+MjtjYXNlInRhYmxlIjpjYXNlInRiIjpyZXR1cm4hIWVbbi4kZ2V0VGVtcGxhdGVSb290XSgpW24uJGV4dHJhXS5ub0xheW91dEZhaWx1cmV8fCgiIj09PWUuaHx8ZVtuLiRpc1NwbGl0dGFibGVdKCk/KCIiPT09ZS53fHxNYXRoLnJvdW5kKGMtdC53aWR0aCk8PTJ8fCFyW24uJGlzVGhlcmVNb3JlV2lkdGhdKCkpJiZ0LmhlaWdodD4yOk1hdGgucm91bmQodS10LmhlaWdodCk8PTIpO2Nhc2UicG9zaXRpb24iOnJldHVybiEhZVtuLiRnZXRUZW1wbGF0ZVJvb3RdKClbbi4kZXh0cmFdLm5vTGF5b3V0RmFpbHVyZXx8IiI9PT1lLmh8fE1hdGgucm91bmQodStzLXQuaGVpZ2h0KTw9Mnx8dStzPmVbbi4kZ2V0VGVtcGxhdGVSb290XSgpW24uJGV4dHJhXS5jdXJyZW50Q29udGVudEFyZWEuaDtjYXNlInJsLXJvdyI6Y2FzZSJyb3ciOnJldHVybiEhZVtuLiRnZXRUZW1wbGF0ZVJvb3RdKClbbi4kZXh0cmFdLm5vTGF5b3V0RmFpbHVyZXx8IiI9PT1lLmh8fE1hdGgucm91bmQodS10LmhlaWdodCk8PTI7ZGVmYXVsdDpyZXR1cm4hMH19LHQuZmx1c2hIVE1MPWZ1bmN0aW9uKGUpe2lmKCFlW24uJGV4dHJhXSlyZXR1cm4gbnVsbDt2YXIgdD17bmFtZToiZGl2IixhdHRyaWJ1dGVzOmVbbi4kZXh0cmFdLmF0dHJpYnV0ZXMsY2hpbGRyZW46ZVtuLiRleHRyYV0uY2hpbGRyZW59O2lmKGVbbi4kZXh0cmFdLmZhaWxpbmdOb2RlKXt2YXIgcj1lW24uJGV4dHJhXS5mYWlsaW5nTm9kZVtuLiRmbHVzaEhUTUxdKCk7ciYmKGUubGF5b3V0LmVuZHNXaXRoKCItdGIiKT90LmNoaWxkcmVuLnB1c2goYyhlLFtyXSkpOnQuY2hpbGRyZW4ucHVzaChyKSl9cmV0dXJuIDA9PT10LmNoaWxkcmVuLmxlbmd0aD9udWxsOnR9LHQuZ2V0QXZhaWxhYmxlU3BhY2U9ZnVuY3Rpb24oZSl7dmFyIHQ9ZVtuLiRleHRyYV0uYXZhaWxhYmxlU3BhY2Uscj1lLm1hcmdpbj9lLm1hcmdpbi50b3BJbnNldCtlLm1hcmdpbi5ib3R0b21JbnNldDowLGE9ZS5tYXJnaW4/ZS5tYXJnaW4ubGVmdEluc2V0K2UubWFyZ2luLnJpZ2h0SW5zZXQ6MDtzd2l0Y2goZS5sYXlvdXQpe2Nhc2UibHItdGIiOmNhc2UicmwtdGIiOnJldHVybiAwPT09ZVtuLiRleHRyYV0uYXR0ZW1wdD97d2lkdGg6dC53aWR0aC1hLWVbbi4kZXh0cmFdLmN1cnJlbnRXaWR0aCxoZWlnaHQ6dC5oZWlnaHQtci1lW24uJGV4dHJhXS5wcmV2SGVpZ2h0fTp7d2lkdGg6dC53aWR0aC1hLGhlaWdodDp0LmhlaWdodC1yLWVbbi4kZXh0cmFdLmhlaWdodH07Y2FzZSJybC1yb3ciOmNhc2Uicm93IjpyZXR1cm57d2lkdGg6ZVtuLiRleHRyYV0uY29sdW1uV2lkdGhzLnNsaWNlKGVbbi4kZXh0cmFdLmN1cnJlbnRDb2x1bW4pLnJlZHVjZSgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSt0fSkpLGhlaWdodDp0LmhlaWdodC1hfTtjYXNlInRhYmxlIjpjYXNlInRiIjpyZXR1cm57d2lkdGg6dC53aWR0aC1hLGhlaWdodDp0LmhlaWdodC1yLWVbbi4kZXh0cmFdLmhlaWdodH07ZGVmYXVsdDpyZXR1cm4gdH19O3ZhciBuPXIoMjA2KSxhPXIoMjEzKTtmdW5jdGlvbiBpKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciByPW51bGw9PWU/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9cil7dmFyIG4sYSxpLG8scz1bXSxjPSEwLHU9ITE7dHJ5e2lmKGk9KHI9ci5jYWxsKGUpKS5uZXh0LDA9PT10KXtpZihPYmplY3QocikhPT1yKXJldHVybjtjPSExfWVsc2UgZm9yKDshKGM9KG49aS5jYWxsKHIpKS5kb25lKSYmKHMucHVzaChuLnZhbHVlKSxzLmxlbmd0aCE9PXQpO2M9ITApO31jYXRjaChlKXt1PSEwLGE9ZX1maW5hbGx5e3RyeXtpZighYyYmbnVsbCE9ci5yZXR1cm4mJihvPXIucmV0dXJuKCksT2JqZWN0KG8pIT09bykpcmV0dXJufWZpbmFsbHl7aWYodSl0aHJvdyBhfX1yZXR1cm4gc319KGUsdCl8fG8oZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIG8oZSx0KXtpZihlKXtpZigic3RyaW5nIj09dHlwZW9mIGUpcmV0dXJuIHMoZSx0KTt2YXIgcj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7cmV0dXJuIk9iamVjdCI9PT1yJiZlLmNvbnN0cnVjdG9yJiYocj1lLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09cnx8IlNldCI9PT1yP0FycmF5LmZyb20oZSk6IkFyZ3VtZW50cyI9PT1yfHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChyKT9zKGUsdCk6dm9pZCAwfX1mdW5jdGlvbiBzKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciByPTAsbj1uZXcgQXJyYXkodCk7cjx0O3IrKyluW3JdPWVbcl07cmV0dXJuIG59ZnVuY3Rpb24gYyhlLHQpe3JldHVybntuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e2NsYXNzOlsibHItdGIiPT09ZS5sYXlvdXQ/InhmYUxyIjoieGZhUmwiXX0sY2hpbGRyZW46dH19fSwoZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuY29tcHV0ZUJib3g9ZnVuY3Rpb24oZSx0LHIpe3ZhciBhO2lmKCIiIT09ZS53JiYiIiE9PWUuaClhPVtlLngsZS55LGUudyxlLmhdO2Vsc2V7aWYoIXIpcmV0dXJuIG51bGw7dmFyIGk9ZS53O2lmKCIiPT09aSl7aWYoMD09PWUubWF4Vyl7dmFyIG89ZVtuLiRnZXRTdWJmb3JtUGFyZW50XSgpO2k9InBvc2l0aW9uIj09PW8ubGF5b3V0JiYiIiE9PW8udz8wOmUubWluV31lbHNlIGk9TWF0aC5taW4oZS5tYXhXLHIud2lkdGgpO3QuYXR0cmlidXRlcy5zdHlsZS53aWR0aD11KGkpfXZhciBzPWUuaDtpZigiIj09PXMpe2lmKDA9PT1lLm1heEgpe3ZhciBjPWVbbi4kZ2V0U3ViZm9ybVBhcmVudF0oKTtzPSJwb3NpdGlvbiI9PT1jLmxheW91dCYmIiIhPT1jLmg/MDplLm1pbkh9ZWxzZSBzPU1hdGgubWluKGUubWF4SCxyLmhlaWdodCk7dC5hdHRyaWJ1dGVzLnN0eWxlLmhlaWdodD11KHMpfWE9W2UueCxlLnksaSxzXX1yZXR1cm4gYX0sdC5jcmVhdGVXcmFwcGVyPWZ1bmN0aW9uKGUsdCl7dmFyIHI9dC5hdHRyaWJ1dGVzLGE9ci5zdHlsZSxpPXtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhV3JhcHBlciJdLHN0eWxlOk9iamVjdC5jcmVhdGUobnVsbCl9LGNoaWxkcmVuOltdfTtpZihyLmNsYXNzLnB1c2goInhmYVdyYXBwZWQiKSxlLmJvcmRlcil7dmFyIG8scyxjPWUuYm9yZGVyW24uJGV4dHJhXSx1PWMud2lkdGhzLGw9Yy5pbnNldHMsZj1sWzBdLGQ9bFszXSxwPWxbMF0rbFsyXSxnPWxbMV0rbFszXTtzd2l0Y2goZS5ib3JkZXIuaGFuZCl7Y2FzZSJldmVuIjpmLT11WzBdLzIsZC09dVszXS8yLG89ImNhbGMoMTAwJSArICIuY29uY2F0KCh1WzFdK3VbM10pLzItZywicHgpIikscz0iY2FsYygxMDAlICsgIi5jb25jYXQoKHVbMF0rdVsyXSkvMi1wLCJweCkiKTticmVhaztjYXNlImxlZnQiOmYtPXVbMF0sZC09dVszXSxvPSJjYWxjKDEwMCUgKyAiLmNvbmNhdCh1WzFdK3VbM10tZywicHgpIikscz0iY2FsYygxMDAlICsgIi5jb25jYXQodVswXSt1WzJdLXAsInB4KSIpO2JyZWFrO2Nhc2UicmlnaHQiOm89Zz8iY2FsYygxMDAlIC0gIi5jb25jYXQoZywicHgpIik6IjEwMCUiLHM9cD8iY2FsYygxMDAlIC0gIi5jb25jYXQocCwicHgpIik6IjEwMCUifXZhciB2PVsieGZhQm9yZGVyIl07aChlLmJvcmRlcikmJnYucHVzaCgieGZhUHJpbnRPbmx5Iik7Zm9yKHZhciB5PXtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e2NsYXNzOnYsc3R5bGU6e3RvcDoiIi5jb25jYXQoZiwicHgiKSxsZWZ0OiIiLmNvbmNhdChkLCJweCIpLHdpZHRoOm8saGVpZ2h0OnN9fSxjaGlsZHJlbjpbXX0sbT0wLGI9WyJib3JkZXIiLCJib3JkZXJXaWR0aCIsImJvcmRlckNvbG9yIiwiYm9yZGVyUmFkaXVzIiwiYm9yZGVyU3R5bGUiXTttPGIubGVuZ3RoO20rKyl7dmFyIHc9YlttXTt2b2lkIDAhPT1hW3ddJiYoeS5hdHRyaWJ1dGVzLnN0eWxlW3ddPWFbd10sZGVsZXRlIGFbd10pfWkuY2hpbGRyZW4ucHVzaCh5LHQpfWVsc2UgaS5jaGlsZHJlbi5wdXNoKHQpO2Zvcih2YXIgaz0wLFM9WyJiYWNrZ3JvdW5kIiwiYmFja2dyb3VuZENsaXAiLCJ0b3AiLCJsZWZ0Iiwid2lkdGgiLCJoZWlnaHQiLCJtaW5XaWR0aCIsIm1pbkhlaWdodCIsIm1heFdpZHRoIiwibWF4SGVpZ2h0IiwidHJhbnNmb3JtIiwidHJhbnNmb3JtT3JpZ2luIiwidmlzaWJpbGl0eSJdO2s8Uy5sZW5ndGg7aysrKXt2YXIgeD1TW2tdO3ZvaWQgMCE9PWFbeF0mJihpLmF0dHJpYnV0ZXMuc3R5bGVbeF09YVt4XSxkZWxldGUgYVt4XSl9cmV0dXJuImFic29sdXRlIj09PWEucG9zaXRpb24/aS5hdHRyaWJ1dGVzLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSI6aS5hdHRyaWJ1dGVzLnN0eWxlLnBvc2l0aW9uPSJyZWxhdGl2ZSIsZGVsZXRlIGEucG9zaXRpb24sYS5hbGlnblNlbGYmJihpLmF0dHJpYnV0ZXMuc3R5bGUuYWxpZ25TZWxmPWEuYWxpZ25TZWxmLGRlbGV0ZSBhLmFsaWduU2VsZiksaX0sdC5maXhEaW1lbnNpb25zPWZ1bmN0aW9uKGUpe3ZhciB0PWVbbi4kZ2V0U3ViZm9ybVBhcmVudF0oKTtpZih0LmxheW91dCYmdC5sYXlvdXQuaW5jbHVkZXMoInJvdyIpKXt2YXIgcixhPXRbbi4kZXh0cmFdLGk9ZS5jb2xTcGFuO3I9LTE9PT1pP2EuY29sdW1uV2lkdGhzLnNsaWNlKGEuY3VycmVudENvbHVtbikucmVkdWNlKChmdW5jdGlvbihlLHQpe3JldHVybiBlK3R9KSwwKTphLmNvbHVtbldpZHRocy5zbGljZShhLmN1cnJlbnRDb2x1bW4sYS5jdXJyZW50Q29sdW1uK2kpLnJlZHVjZSgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSt0fSksMCksaXNOYU4ocil8fChlLnc9cil9dC5sYXlvdXQmJiJwb3NpdGlvbiIhPT10LmxheW91dCYmKGUueD1lLnk9MCksInRhYmxlIj09PWUubGF5b3V0JiYiIj09PWUudyYmQXJyYXkuaXNBcnJheShlLmNvbHVtbldpZHRocykmJihlLnc9ZS5jb2x1bW5XaWR0aHMucmVkdWNlKChmdW5jdGlvbihlLHQpe3JldHVybiBlK3R9KSwwKSl9LHQuZml4VGV4dEluZGVudD1mdW5jdGlvbihlKXt2YXIgdD0oMCxpLmdldE1lYXN1cmVtZW50KShlLnRleHRJbmRlbnQsIjBweCIpO2lmKCEodD49MCkpe3ZhciByPSJwYWRkaW5nIisoImxlZnQiPT0oInJpZ2h0Ij09PWUudGV4dEFsaWduPyJyaWdodCI6ImxlZnQiKT8iTGVmdCI6IlJpZ2h0Iiksbj0oMCxpLmdldE1lYXN1cmVtZW50KShlW3JdLCIwcHgiKTtlW3JdPSIiLmNvbmNhdChuLXQsInB4Iil9fSx0LmZpeFVSTD1mdW5jdGlvbihlKXt2YXIgdD0oMCxhLmNyZWF0ZVZhbGlkQWJzb2x1dGVVcmwpKGUsbnVsbCx7YWRkRGVmYXVsdFByb3RvY29sOiEwLHRyeUNvbnZlcnRFbmNvZGluZzohMH0pO3JldHVybiB0P3QuaHJlZjpudWxsfSx0LmlzUHJpbnRPbmx5PWgsdC5sYXlvdXRDbGFzcz1mdW5jdGlvbihlKXtzd2l0Y2goZS5sYXlvdXQpe2Nhc2UicG9zaXRpb24iOmRlZmF1bHQ6cmV0dXJuInhmYVBvc2l0aW9uIjtjYXNlImxyLXRiIjpyZXR1cm4ieGZhTHJUYiI7Y2FzZSJybC1yb3ciOnJldHVybiJ4ZmFSbFJvdyI7Y2FzZSJybC10YiI6cmV0dXJuInhmYVJsVGIiO2Nhc2Uicm93IjpyZXR1cm4ieGZhUm93IjtjYXNlInRhYmxlIjpyZXR1cm4ieGZhVGFibGUiO2Nhc2UidGIiOnJldHVybiJ4ZmFUYiJ9fSx0LmxheW91dE5vZGU9ZnVuY3Rpb24oZSx0KXt2YXIgcj1udWxsLGE9bnVsbCxpPSExO2lmKCghZS53fHwhZS5oKSYmZS52YWx1ZSl7dmFyIG89MCxzPTA7ZS5tYXJnaW4mJihvPWUubWFyZ2luLmxlZnRJbnNldCtlLm1hcmdpbi5yaWdodEluc2V0LHM9ZS5tYXJnaW4udG9wSW5zZXQrZS5tYXJnaW4uYm90dG9tSW5zZXQpO3ZhciBjPW51bGwsdT1udWxsO2UucGFyYSYmKHU9T2JqZWN0LmNyZWF0ZShudWxsKSxjPSIiPT09ZS5wYXJhLmxpbmVIZWlnaHQ/bnVsbDplLnBhcmEubGluZUhlaWdodCx1LnRvcD0iIj09PWUucGFyYS5zcGFjZUFib3ZlPzA6ZS5wYXJhLnNwYWNlQWJvdmUsdS5ib3R0b209IiI9PT1lLnBhcmEuc3BhY2VCZWxvdz8wOmUucGFyYS5zcGFjZUJlbG93LHUubGVmdD0iIj09PWUucGFyYS5tYXJnaW5MZWZ0PzA6ZS5wYXJhLm1hcmdpbkxlZnQsdS5yaWdodD0iIj09PWUucGFyYS5tYXJnaW5SaWdodD8wOmUucGFyYS5tYXJnaW5SaWdodCk7dmFyIGw9ZS5mb250O2lmKCFsKWZvcih2YXIgaD1lW24uJGdldFRlbXBsYXRlUm9vdF0oKSxkPWVbbi4kZ2V0UGFyZW50XSgpO2QmJmQhPT1oOyl7aWYoZC5mb250KXtsPWQuZm9udDticmVha31kPWRbbi4kZ2V0UGFyZW50XSgpfXZhciBwPShlLnd8fHQud2lkdGgpLW8sZz1lW24uJGdsb2JhbERhdGFdLmZvbnRGaW5kZXI7aWYoZS52YWx1ZS5leERhdGEmJmUudmFsdWUuZXhEYXRhW24uJGNvbnRlbnRdJiYidGV4dC9odG1sIj09PWUudmFsdWUuZXhEYXRhLmNvbnRlbnRUeXBlKXt2YXIgdj1mKGUudmFsdWUuZXhEYXRhW24uJGNvbnRlbnRdLGwsdSxjLGcscCk7YT12LndpZHRoLHI9di5oZWlnaHQsaT12LmlzQnJva2VufWVsc2V7dmFyIHk9ZS52YWx1ZVtuLiR0ZXh0XSgpO2lmKHkpe3ZhciBtPWYoeSxsLHUsYyxnLHApO2E9bS53aWR0aCxyPW0uaGVpZ2h0LGk9bS5pc0Jyb2tlbn19bnVsbD09PWF8fGUud3x8KGErPW8pLG51bGw9PT1yfHxlLmh8fChyKz1zKX1yZXR1cm57dzphLGg6cixpc0Jyb2tlbjppfX0sdC5tZWFzdXJlVG9TdHJpbmc9dSx0LnNldEFjY2Vzcz1mdW5jdGlvbihlLHQpe3N3aXRjaChlLmFjY2Vzcyl7Y2FzZSJub25JbnRlcmFjdGl2ZSI6dC5wdXNoKCJ4ZmFOb25JbnRlcmFjdGl2ZSIpO2JyZWFrO2Nhc2UicmVhZE9ubHkiOnQucHVzaCgieGZhUmVhZE9ubHkiKTticmVhaztjYXNlInByb3RlY3RlZCI6dC5wdXNoKCJ4ZmFEaXNhYmxlZCIpfX0sdC5zZXRGb250RmFtaWx5PWZ1bmN0aW9uKGUsdCxyLG4pe2lmKHIpe3ZhciBhPSgwLGkuc3RyaXBRdW90ZXMpKGUudHlwZWZhY2UpO24uZm9udEZhbWlseT0nIicuY29uY2F0KGEsJyInKTt2YXIgcz1yLmZpbmQoYSk7aWYocyl7dmFyIGM9cy5yZWd1bGFyLmNzc0ZvbnRJbmZvLmZvbnRGYW1pbHk7YyE9PWEmJihuLmZvbnRGYW1pbHk9JyInLmNvbmNhdChjLCciJykpO3ZhciB1PWQodCk7aWYodSYmIiIhPT11LmxpbmVIZWlnaHQpcmV0dXJuO2lmKG4ubGluZUhlaWdodClyZXR1cm47dmFyIGw9KDAsby5zZWxlY3RGb250KShlLHMpO2wmJihuLmxpbmVIZWlnaHQ9TWF0aC5tYXgoMS4yLGwubGluZUhlaWdodCkpfX1lbHNlIGRlbGV0ZSBuLmZvbnRGYW1pbHl9LHQuc2V0TWluTWF4RGltZW5zaW9ucz1mdW5jdGlvbihlLHQpeyJwb3NpdGlvbiI9PT1lW24uJGdldFN1YmZvcm1QYXJlbnRdKCkubGF5b3V0JiYoZS5taW5XPjAmJih0Lm1pbldpZHRoPXUoZS5taW5XKSksZS5tYXhXPjAmJih0Lm1heFdpZHRoPXUoZS5tYXhXKSksZS5taW5IPjAmJih0Lm1pbkhlaWdodD11KGUubWluSCkpLGUubWF4SD4wJiYodC5tYXhIZWlnaHQ9dShlLm1heEgpKSl9LHQuc2V0UGFyYT1mdW5jdGlvbihlLHQscil7aWYoci5hdHRyaWJ1dGVzLmNsYXNzJiZyLmF0dHJpYnV0ZXMuY2xhc3MuaW5jbHVkZXMoInhmYVJpY2giKSl7dCYmKCIiPT09ZS5oJiYodC5oZWlnaHQ9ImF1dG8iKSwiIj09PWUudyYmKHQud2lkdGg9ImF1dG8iKSk7dmFyIGE9ZChlKTtpZihhKXt2YXIgaT1yLmF0dHJpYnV0ZXMuc3R5bGU7c3dpdGNoKGkuZGlzcGxheT0iZmxleCIsaS5mbGV4RGlyZWN0aW9uPSJjb2x1bW4iLGEudkFsaWduKXtjYXNlInRvcCI6aS5qdXN0aWZ5Q29udGVudD0ic3RhcnQiO2JyZWFrO2Nhc2UiYm90dG9tIjppLmp1c3RpZnlDb250ZW50PSJlbmQiO2JyZWFrO2Nhc2UibWlkZGxlIjppLmp1c3RpZnlDb250ZW50PSJjZW50ZXIifWZvcih2YXIgbz1hW24uJHRvU3R5bGVdKCkscz0wLHU9T2JqZWN0LmVudHJpZXMobyk7czx1Lmxlbmd0aDtzKyspe3ZhciBsPSgyLGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KHA9dVtzXSl8fGZ1bmN0aW9uKGUsdCl7dmFyIHI9bnVsbD09ZT9udWxsOiJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbIkBAaXRlcmF0b3IiXTtpZihudWxsIT1yKXt2YXIgbixhLGksbyxzPVtdLGM9ITAsdT0hMTt0cnl7Zm9yKGk9KHI9ci5jYWxsKGUpKS5uZXh0LDA7IShjPShuPWkuY2FsbChyKSkuZG9uZSkmJihzLnB1c2gobi52YWx1ZSksMiE9PXMubGVuZ3RoKTtjPSEwKTt9Y2F0Y2goZSl7dT0hMCxhPWV9ZmluYWxseXt0cnl7aWYoIWMmJm51bGwhPXIucmV0dXJuJiYobz1yLnJldHVybigpLE9iamVjdChvKSE9PW8pKXJldHVybn1maW5hbGx5e2lmKHUpdGhyb3cgYX19cmV0dXJuIHN9fShwKXx8ZnVuY3Rpb24oZSx0KXtpZihlKXtpZigic3RyaW5nIj09dHlwZW9mIGUpcmV0dXJuIGMoZSwyKTt2YXIgcj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7cmV0dXJuIk9iamVjdCI9PT1yJiZlLmNvbnN0cnVjdG9yJiYocj1lLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09cnx8IlNldCI9PT1yP0FycmF5LmZyb20oZSk6IkFyZ3VtZW50cyI9PT1yfHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChyKT9jKGUsMik6dm9pZCAwfX0ocCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKSksZj1sWzBdLGg9bFsxXTtmIGluIGl8fChpW2ZdPWgpfX19dmFyIHB9LHQudG9TdHlsZT1mdW5jdGlvbihlKXtmb3IodmFyIHQ9T2JqZWN0LmNyZWF0ZShudWxsKSxyPWFyZ3VtZW50cy5sZW5ndGgsaT1uZXcgQXJyYXkocj4xP3ItMTowKSxvPTE7bzxyO28rKylpW28tMV09YXJndW1lbnRzW29dO2Zvcih2YXIgcz0wLGM9aTtzPGMubGVuZ3RoO3MrKyl7dmFyIHU9Y1tzXSxmPWVbdV07aWYobnVsbCE9PWYpaWYobC5oYXNPd25Qcm9wZXJ0eSh1KSlsW3VdKGUsdCk7ZWxzZSBpZihmIGluc3RhbmNlb2Ygbi5YRkFPYmplY3Qpe3ZhciBoPWZbbi4kdG9TdHlsZV0oKTtoP09iamVjdC5hc3NpZ24odCxoKTooMCxhLndhcm4pKCIoREVCVUcpIC0gWEZBIC0gc3R5bGUgZm9yICIuY29uY2F0KHUsIiBub3QgaW1wbGVtZW50ZWQgeWV0IikpfX1yZXR1cm4gdH07dmFyIG49cigyMDYpLGE9cigyKSxpPXIoMjA3KSxvPXIoMjE0KSxzPXIoMjE1KTtmdW5jdGlvbiBjKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciByPTAsbj1uZXcgQXJyYXkodCk7cjx0O3IrKyluW3JdPWVbcl07cmV0dXJuIG59ZnVuY3Rpb24gdShlKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGU/IjBweCI6TnVtYmVyLmlzSW50ZWdlcihlKT8iIi5jb25jYXQoZSwicHgiKToiIi5jb25jYXQoZS50b0ZpeGVkKDIpLCJweCIpfXZhciBsPXthbmNob3JUeXBlOmZ1bmN0aW9uKGUsdCl7dmFyIHI9ZVtuLiRnZXRTdWJmb3JtUGFyZW50XSgpO2lmKHImJighci5sYXlvdXR8fCJwb3NpdGlvbiI9PT1yLmxheW91dCkpc3dpdGNoKCJ0cmFuc2Zvcm0iaW4gdHx8KHQudHJhbnNmb3JtPSIiKSxlLmFuY2hvclR5cGUpe2Nhc2UiYm90dG9tQ2VudGVyIjp0LnRyYW5zZm9ybSs9InRyYW5zbGF0ZSgtNTAlLCAtMTAwJSkiO2JyZWFrO2Nhc2UiYm90dG9tTGVmdCI6dC50cmFuc2Zvcm0rPSJ0cmFuc2xhdGUoMCwtMTAwJSkiO2JyZWFrO2Nhc2UiYm90dG9tUmlnaHQiOnQudHJhbnNmb3JtKz0idHJhbnNsYXRlKC0xMDAlLC0xMDAlKSI7YnJlYWs7Y2FzZSJtaWRkbGVDZW50ZXIiOnQudHJhbnNmb3JtKz0idHJhbnNsYXRlKC01MCUsLTUwJSkiO2JyZWFrO2Nhc2UibWlkZGxlTGVmdCI6dC50cmFuc2Zvcm0rPSJ0cmFuc2xhdGUoMCwtNTAlKSI7YnJlYWs7Y2FzZSJtaWRkbGVSaWdodCI6dC50cmFuc2Zvcm0rPSJ0cmFuc2xhdGUoLTEwMCUsLTUwJSkiO2JyZWFrO2Nhc2UidG9wQ2VudGVyIjp0LnRyYW5zZm9ybSs9InRyYW5zbGF0ZSgtNTAlLDApIjticmVhaztjYXNlInRvcFJpZ2h0Ijp0LnRyYW5zZm9ybSs9InRyYW5zbGF0ZSgtMTAwJSwwKSJ9fSxkaW1lbnNpb25zOmZ1bmN0aW9uKGUsdCl7dmFyIHI9ZVtuLiRnZXRTdWJmb3JtUGFyZW50XSgpLGE9ZS53LGk9ZS5oO2lmKHIubGF5b3V0JiZyLmxheW91dC5pbmNsdWRlcygicm93Iikpe3ZhciBvLHM9cltuLiRleHRyYV0sYz1lLmNvbFNwYW47LTE9PT1jPyhvPXMuY29sdW1uV2lkdGhzLnNsaWNlKHMuY3VycmVudENvbHVtbikucmVkdWNlKChmdW5jdGlvbihlLHQpe3JldHVybiBlK3R9KSwwKSxzLmN1cnJlbnRDb2x1bW49MCk6KG89cy5jb2x1bW5XaWR0aHMuc2xpY2Uocy5jdXJyZW50Q29sdW1uLHMuY3VycmVudENvbHVtbitjKS5yZWR1Y2UoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUrdH0pLDApLHMuY3VycmVudENvbHVtbj0ocy5jdXJyZW50Q29sdW1uK2UuY29sU3Bhbiklcy5jb2x1bW5XaWR0aHMubGVuZ3RoKSxpc05hTihvKXx8KGE9ZS53PW8pfXQud2lkdGg9IiIhPT1hP3UoYSk6ImF1dG8iLHQuaGVpZ2h0PSIiIT09aT91KGkpOiJhdXRvIn0scG9zaXRpb246ZnVuY3Rpb24oZSx0KXt2YXIgcj1lW24uJGdldFN1YmZvcm1QYXJlbnRdKCk7ciYmci5sYXlvdXQmJiJwb3NpdGlvbiIhPT1yLmxheW91dHx8KHQucG9zaXRpb249ImFic29sdXRlIix0LmxlZnQ9dShlLngpLHQudG9wPXUoZS55KSl9LHJvdGF0ZTpmdW5jdGlvbihlLHQpe2Uucm90YXRlJiYoInRyYW5zZm9ybSJpbiB0fHwodC50cmFuc2Zvcm09IiIpLHQudHJhbnNmb3JtKz0icm90YXRlKC0iLmNvbmNhdChlLnJvdGF0ZSwiZGVnKSIpLHQudHJhbnNmb3JtT3JpZ2luPSJ0b3AgbGVmdCIpfSxwcmVzZW5jZTpmdW5jdGlvbihlLHQpe3N3aXRjaChlLnByZXNlbmNlKXtjYXNlImludmlzaWJsZSI6dC52aXNpYmlsaXR5PSJoaWRkZW4iO2JyZWFrO2Nhc2UiaGlkZGVuIjpjYXNlImluYWN0aXZlIjp0LmRpc3BsYXk9Im5vbmUifX0saEFsaWduOmZ1bmN0aW9uKGUsdCl7aWYoInBhcmEiPT09ZVtuLiRub2RlTmFtZV0pc3dpdGNoKGUuaEFsaWduKXtjYXNlImp1c3RpZnlBbGwiOnQudGV4dEFsaWduPSJqdXN0aWZ5LWFsbCI7YnJlYWs7Y2FzZSJyYWRpeCI6dC50ZXh0QWxpZ249ImxlZnQiO2JyZWFrO2RlZmF1bHQ6dC50ZXh0QWxpZ249ZS5oQWxpZ259ZWxzZSBzd2l0Y2goZS5oQWxpZ24pe2Nhc2UibGVmdCI6dC5hbGlnblNlbGY9InN0YXJ0IjticmVhaztjYXNlImNlbnRlciI6dC5hbGlnblNlbGY9ImNlbnRlciI7YnJlYWs7Y2FzZSJyaWdodCI6dC5hbGlnblNlbGY9ImVuZCJ9fSxtYXJnaW46ZnVuY3Rpb24oZSx0KXtlLm1hcmdpbiYmKHQubWFyZ2luPWUubWFyZ2luW24uJHRvU3R5bGVdKCkubWFyZ2luKX19O2Z1bmN0aW9uIGYoZSx0LHIsYSxpLG8pe3ZhciBjPW5ldyBzLlRleHRNZWFzdXJlKHQscixhLGkpO3JldHVybiJzdHJpbmciPT10eXBlb2YgZT9jLmFkZFN0cmluZyhlKTplW24uJHB1c2hHbHlwaHNdKGMpLGMuY29tcHV0ZShvKX1mdW5jdGlvbiBoKGUpe3JldHVybiBlLnJlbGV2YW50Lmxlbmd0aD4wJiYhZS5yZWxldmFudFswXS5leGNsdWRlZCYmInByaW50Ij09PWUucmVsZXZhbnRbMF0udmlld25hbWV9ZnVuY3Rpb24gZChlKXt2YXIgdD1lW24uJGdldFRlbXBsYXRlUm9vdF0oKVtuLiRleHRyYV0ucGFyYVN0YWNrO3JldHVybiB0Lmxlbmd0aD90LmF0KC0xKTpudWxsfX0sKGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LkZvbnRGaW5kZXI9dm9pZCAwLHQuZ2V0TWV0cmljcz1mdW5jdGlvbihlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSYmYXJndW1lbnRzWzFdLHI9bnVsbDtpZihlKXt2YXIgaT0oMCxhLnN0cmlwUXVvdGVzKShlLnR5cGVmYWNlKSxvPWVbbi4kZ2xvYmFsRGF0YV0uZm9udEZpbmRlci5maW5kKGkpO3I9ZChlLG8pfWlmKCFyKXJldHVybntsaW5lSGVpZ2h0OjEyLGxpbmVHYXA6MixsaW5lTm9HYXA6MTB9O3ZhciBzPWUuc2l6ZXx8MTAsYz1yLmxpbmVIZWlnaHQ/TWF0aC5tYXgodD8wOjEuMixyLmxpbmVIZWlnaHQpOjEuMix1PXZvaWQgMD09PXIubGluZUdhcD8uMjpyLmxpbmVHYXA7cmV0dXJue2xpbmVIZWlnaHQ6YypzLGxpbmVHYXA6dSpzLGxpbmVOb0dhcDpNYXRoLm1heCgxLGMtdSkqc319LHQuc2VsZWN0Rm9udD1kO3ZhciBuPXIoMjA2KSxhPXIoMjA3KSxpPXIoMik7ZnVuY3Rpb24gbyhlKXtyZXR1cm4gbz0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZX0sbyhlKX1mdW5jdGlvbiBzKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciByPW51bGw9PWU/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9cil7dmFyIG4sYSxpLG8scz1bXSxjPSEwLHU9ITE7dHJ5e2lmKGk9KHI9ci5jYWxsKGUpKS5uZXh0LDA9PT10KXtpZihPYmplY3QocikhPT1yKXJldHVybjtjPSExfWVsc2UgZm9yKDshKGM9KG49aS5jYWxsKHIpKS5kb25lKSYmKHMucHVzaChuLnZhbHVlKSxzLmxlbmd0aCE9PXQpO2M9ITApO31jYXRjaChlKXt1PSEwLGE9ZX1maW5hbGx5e3RyeXtpZighYyYmbnVsbCE9ci5yZXR1cm4mJihvPXIucmV0dXJuKCksT2JqZWN0KG8pIT09bykpcmV0dXJufWZpbmFsbHl7aWYodSl0aHJvdyBhfX1yZXR1cm4gc319KGUsdCl8fHUoZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIGMoZSx0KXt2YXIgcj0idW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlWyJAQGl0ZXJhdG9yIl07aWYoIXIpe2lmKEFycmF5LmlzQXJyYXkoZSl8fChyPXUoZSkpfHx0JiZlJiYibnVtYmVyIj09dHlwZW9mIGUubGVuZ3RoKXtyJiYoZT1yKTt2YXIgbj0wLGE9ZnVuY3Rpb24oKXt9O3JldHVybntzOmEsbjpmdW5jdGlvbigpe3JldHVybiBuPj1lLmxlbmd0aD97ZG9uZTohMH06e2RvbmU6ITEsdmFsdWU6ZVtuKytdfX0sZTpmdW5jdGlvbihlKXt0aHJvdyBlfSxmOmF9fXRocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBpdGVyYXRlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX12YXIgaSxvPSEwLHM9ITE7cmV0dXJue3M6ZnVuY3Rpb24oKXtyPXIuY2FsbChlKX0sbjpmdW5jdGlvbigpe3ZhciBlPXIubmV4dCgpO3JldHVybiBvPWUuZG9uZSxlfSxlOmZ1bmN0aW9uKGUpe3M9ITAsaT1lfSxmOmZ1bmN0aW9uKCl7dHJ5e298fG51bGw9PXIucmV0dXJufHxyLnJldHVybigpfWZpbmFsbHl7aWYocyl0aHJvdyBpfX19fWZ1bmN0aW9uIHUoZSx0KXtpZihlKXtpZigic3RyaW5nIj09dHlwZW9mIGUpcmV0dXJuIGwoZSx0KTt2YXIgcj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7cmV0dXJuIk9iamVjdCI9PT1yJiZlLmNvbnN0cnVjdG9yJiYocj1lLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09cnx8IlNldCI9PT1yP0FycmF5LmZyb20oZSk6IkFyZ3VtZW50cyI9PT1yfHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChyKT9sKGUsdCk6dm9pZCAwfX1mdW5jdGlvbiBsKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciByPTAsbj1uZXcgQXJyYXkodCk7cjx0O3IrKyluW3JdPWVbcl07cmV0dXJuIG59ZnVuY3Rpb24gZihlLHQpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgbj10W3JdO24uZW51bWVyYWJsZT1uLmVudW1lcmFibGV8fCExLG4uY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBuJiYobi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsKHZvaWQgMCxhPWZ1bmN0aW9uKGUsdCl7aWYoIm9iamVjdCIhPT1vKGUpfHxudWxsPT09ZSlyZXR1cm4gZTt2YXIgcj1lW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09cil7dmFyIG49ci5jYWxsKGUsInN0cmluZyIpO2lmKCJvYmplY3QiIT09byhuKSlyZXR1cm4gbjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybiBTdHJpbmcoZSl9KG4ua2V5KSwic3ltYm9sIj09PW8oYSk/YTpTdHJpbmcoYSkpLG4pfXZhciBhfXZhciBoPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0KXshZnVuY3Rpb24oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxlKSx0aGlzLmZvbnRzPW5ldyBNYXAsdGhpcy5jYWNoZT1uZXcgTWFwLHRoaXMud2FybmVkPW5ldyBTZXQsdGhpcy5kZWZhdWx0Rm9udD1udWxsLHRoaXMuYWRkKHQpfXZhciB0LHI7cmV0dXJuIHQ9ZSxyPVt7a2V5OiJhZGQiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0LHI9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOm51bGwsbj1jKGUpO3RyeXtmb3Iobi5zKCk7ISh0PW4ubigpKS5kb25lOyl7dmFyIGE9dC52YWx1ZTt0aGlzLmFkZFBkZkZvbnQoYSl9fWNhdGNoKGUpe24uZShlKX1maW5hbGx5e24uZigpfXZhciBpLG89Yyh0aGlzLmZvbnRzLnZhbHVlcygpKTt0cnl7Zm9yKG8ucygpOyEoaT1vLm4oKSkuZG9uZTspe3ZhciBzPWkudmFsdWU7cy5yZWd1bGFyfHwocy5yZWd1bGFyPXMuaXRhbGljfHxzLmJvbGR8fHMuYm9sZGl0YWxpYyl9fWNhdGNoKGUpe28uZShlKX1maW5hbGx5e28uZigpfWlmKHImJjAhPT1yLnNpemUpe3ZhciB1LGw9dGhpcy5mb250cy5nZXQoIlBkZkpTLUZhbGxiYWNrLVBkZkpTLVhGQSIpLGY9YyhyKTt0cnl7Zm9yKGYucygpOyEodT1mLm4oKSkuZG9uZTspe3ZhciBoPXUudmFsdWU7dGhpcy5mb250cy5zZXQoaCxsKX19Y2F0Y2goZSl7Zi5lKGUpfWZpbmFsbHl7Zi5mKCl9fX19LHtrZXk6ImFkZFBkZkZvbnQiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWUuY3NzRm9udEluZm8scj10LmZvbnRGYW1pbHksbj10aGlzLmZvbnRzLmdldChyKTtufHwobj1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMuZm9udHMuc2V0KHIsbiksdGhpcy5kZWZhdWx0Rm9udHx8KHRoaXMuZGVmYXVsdEZvbnQ9bikpO3ZhciBhPSIiLGk9cGFyc2VGbG9hdCh0LmZvbnRXZWlnaHQpOzAhPT1wYXJzZUZsb2F0KHQuaXRhbGljQW5nbGUpP2E9aT49NzAwPyJib2xkaXRhbGljIjoiaXRhbGljIjppPj03MDAmJihhPSJib2xkIiksYXx8KChlLm5hbWUuaW5jbHVkZXMoIkJvbGQiKXx8ZS5wc05hbWUmJmUucHNOYW1lLmluY2x1ZGVzKCJCb2xkIikpJiYoYT0iYm9sZCIpLChlLm5hbWUuaW5jbHVkZXMoIkl0YWxpYyIpfHxlLm5hbWUuZW5kc1dpdGgoIkl0Iil8fGUucHNOYW1lJiYoZS5wc05hbWUuaW5jbHVkZXMoIkl0YWxpYyIpfHxlLnBzTmFtZS5lbmRzV2l0aCgiSXQiKSkpJiYoYSs9Iml0YWxpYyIpKSxhfHwoYT0icmVndWxhciIpLG5bYV09ZX19LHtrZXk6ImdldERlZmF1bHQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGVmYXVsdEZvbnR9fSx7a2V5OiJmaW5kIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD0hKGFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdKXx8YXJndW1lbnRzWzFdLHI9dGhpcy5mb250cy5nZXQoZSl8fHRoaXMuY2FjaGUuZ2V0KGUpO2lmKHIpcmV0dXJuIHI7dmFyIG49Lyx8LXxffCB8Ym9sZGl0YWxpY3xib2xkfGl0YWxpY3xyZWd1bGFyfGl0L2dpLGE9ZS5yZXBsYWNlKG4sIiIpO2lmKHI9dGhpcy5mb250cy5nZXQoYSkpcmV0dXJuIHRoaXMuY2FjaGUuc2V0KGUscikscjthPWEudG9Mb3dlckNhc2UoKTt2YXIgbyx1PVtdLGw9Yyh0aGlzLmZvbnRzLmVudHJpZXMoKSk7dHJ5e2ZvcihsLnMoKTshKG89bC5uKCkpLmRvbmU7KXt2YXIgZj1zKG8udmFsdWUsMiksaD1mWzBdLGQ9ZlsxXTtoLnJlcGxhY2UobiwiIikudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKGEpJiZ1LnB1c2goZCl9fWNhdGNoKGUpe2wuZShlKX1maW5hbGx5e2wuZigpfWlmKDA9PT11Lmxlbmd0aCl7dmFyIHAsZz1jKHRoaXMuZm9udHMuZW50cmllcygpKTt0cnl7Zm9yKGcucygpOyEocD1nLm4oKSkuZG9uZTspe3ZhciB2PXMocC52YWx1ZSwyKVsxXTt2LnJlZ3VsYXIubmFtZSYmdi5yZWd1bGFyLm5hbWUucmVwbGFjZShuLCIiKS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoYSkmJnUucHVzaCh2KX19Y2F0Y2goZSl7Zy5lKGUpfWZpbmFsbHl7Zy5mKCl9fWlmKDA9PT11Lmxlbmd0aCl7YT1hLnJlcGxhY2UoL3BzbXR8bXQvZ2ksIiIpO3ZhciB5LG09Yyh0aGlzLmZvbnRzLmVudHJpZXMoKSk7dHJ5e2ZvcihtLnMoKTshKHk9bS5uKCkpLmRvbmU7KXt2YXIgYj1zKHkudmFsdWUsMiksdz1iWzBdLGs9YlsxXTt3LnJlcGxhY2UobiwiIikudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKGEpJiZ1LnB1c2goayl9fWNhdGNoKGUpe20uZShlKX1maW5hbGx5e20uZigpfX1pZigwPT09dS5sZW5ndGgpe3ZhciBTLHg9Yyh0aGlzLmZvbnRzLnZhbHVlcygpKTt0cnl7Zm9yKHgucygpOyEoUz14Lm4oKSkuZG9uZTspe3ZhciBPPVMudmFsdWU7Ty5yZWd1bGFyLm5hbWUmJk8ucmVndWxhci5uYW1lLnJlcGxhY2UobiwiIikudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKGEpJiZ1LnB1c2goTyl9fWNhdGNoKGUpe3guZShlKX1maW5hbGx5e3guZigpfX1yZXR1cm4gdS5sZW5ndGg+PTE/KDEhPT11Lmxlbmd0aCYmdCYmKDAsaS53YXJuKSgiWEZBIC0gVG9vIG1hbnkgY2hvaWNlcyB0byBndWVzcyB0aGUgY29ycmVjdCBmb250OiAiLmNvbmNhdChlKSksdGhpcy5jYWNoZS5zZXQoZSx1WzBdKSx1WzBdKToodCYmIXRoaXMud2FybmVkLmhhcyhlKSYmKHRoaXMud2FybmVkLmFkZChlKSwoMCxpLndhcm4pKCJYRkEgLSBDYW5ub3QgZmluZCB0aGUgZm9udDogIi5jb25jYXQoZSkpKSxudWxsKX19XSxyJiZmKHQucHJvdG90eXBlLHIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGV9KCk7ZnVuY3Rpb24gZChlLHQpe3JldHVybiJpdGFsaWMiPT09ZS5wb3N0dXJlPyJib2xkIj09PWUud2VpZ2h0P3QuYm9sZGl0YWxpYzp0Lml0YWxpYzoiYm9sZCI9PT1lLndlaWdodD90LmJvbGQ6dC5yZWd1bGFyfXQuRm9udEZpbmRlcj1ofSwoZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuVGV4dE1lYXN1cmU9dm9pZCAwO3ZhciBuPXIoMjE0KTtmdW5jdGlvbiBhKGUsdCl7dmFyIHI9InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVsiQEBpdGVyYXRvciJdO2lmKCFyKXtpZihBcnJheS5pc0FycmF5KGUpfHwocj1zKGUpKXx8dCYmZSYmIm51bWJlciI9PXR5cGVvZiBlLmxlbmd0aCl7ciYmKGU9cik7dmFyIG49MCxhPWZ1bmN0aW9uKCl7fTtyZXR1cm57czphLG46ZnVuY3Rpb24oKXtyZXR1cm4gbj49ZS5sZW5ndGg/e2RvbmU6ITB9Ontkb25lOiExLHZhbHVlOmVbbisrXX19LGU6ZnVuY3Rpb24oZSl7dGhyb3cgZX0sZjphfX10aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gaXRlcmF0ZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9dmFyIGksbz0hMCxjPSExO3JldHVybntzOmZ1bmN0aW9uKCl7cj1yLmNhbGwoZSl9LG46ZnVuY3Rpb24oKXt2YXIgZT1yLm5leHQoKTtyZXR1cm4gbz1lLmRvbmUsZX0sZTpmdW5jdGlvbihlKXtjPSEwLGk9ZX0sZjpmdW5jdGlvbigpe3RyeXtvfHxudWxsPT1yLnJldHVybnx8ci5yZXR1cm4oKX1maW5hbGx5e2lmKGMpdGhyb3cgaX19fX1mdW5jdGlvbiBpKGUpe3JldHVybiBpPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSxpKGUpfWZ1bmN0aW9uIG8oZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIHI9bnVsbD09ZT9udWxsOiJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbIkBAaXRlcmF0b3IiXTtpZihudWxsIT1yKXt2YXIgbixhLGksbyxzPVtdLGM9ITAsdT0hMTt0cnl7aWYoaT0ocj1yLmNhbGwoZSkpLm5leHQsMD09PXQpe2lmKE9iamVjdChyKSE9PXIpcmV0dXJuO2M9ITF9ZWxzZSBmb3IoOyEoYz0obj1pLmNhbGwocikpLmRvbmUpJiYocy5wdXNoKG4udmFsdWUpLHMubGVuZ3RoIT09dCk7Yz0hMCk7fWNhdGNoKGUpe3U9ITAsYT1lfWZpbmFsbHl7dHJ5e2lmKCFjJiZudWxsIT1yLnJldHVybiYmKG89ci5yZXR1cm4oKSxPYmplY3QobykhPT1vKSlyZXR1cm59ZmluYWxseXtpZih1KXRocm93IGF9fXJldHVybiBzfX0oZSx0KXx8cyhlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gcyhlLHQpe2lmKGUpe2lmKCJzdHJpbmciPT10eXBlb2YgZSlyZXR1cm4gYyhlLHQpO3ZhciByPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtyZXR1cm4iT2JqZWN0Ij09PXImJmUuY29uc3RydWN0b3ImJihyPWUuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1yfHwiU2V0Ij09PXI/QXJyYXkuZnJvbShlKToiQXJndW1lbnRzIj09PXJ8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KHIpP2MoZSx0KTp2b2lkIDB9fWZ1bmN0aW9uIGMoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIHI9MCxuPW5ldyBBcnJheSh0KTtyPHQ7cisrKW5bcl09ZVtyXTtyZXR1cm4gbn1mdW5jdGlvbiB1KGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gbChlLHQpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgbj10W3JdO24uZW51bWVyYWJsZT1uLmVudW1lcmFibGV8fCExLG4uY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBuJiYobi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsKHZvaWQgMCxhPWZ1bmN0aW9uKGUsdCl7aWYoIm9iamVjdCIhPT1pKGUpfHxudWxsPT09ZSlyZXR1cm4gZTt2YXIgcj1lW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09cil7dmFyIG49ci5jYWxsKGUsInN0cmluZyIpO2lmKCJvYmplY3QiIT09aShuKSlyZXR1cm4gbjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybiBTdHJpbmcoZSl9KG4ua2V5KSwic3ltYm9sIj09PWkoYSk/YTpTdHJpbmcoYSkpLG4pfXZhciBhfWZ1bmN0aW9uIGYoZSx0LHIpe3JldHVybiB0JiZsKGUucHJvdG90eXBlLHQpLHImJmwoZSxyKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxlfXZhciBoPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0LHIsYSxpKXtpZih1KHRoaXMsZSksdGhpcy5saW5lSGVpZ2h0PWEsdGhpcy5wYXJhTWFyZ2luPXJ8fHt0b3A6MCxib3R0b206MCxsZWZ0OjAscmlnaHQ6MH0sIXQpe3ZhciBzPW8odGhpcy5kZWZhdWx0Rm9udChpKSwyKTtyZXR1cm4gdGhpcy5wZGZGb250PXNbMF0sdm9pZCh0aGlzLnhmYUZvbnQ9c1sxXSl9dGhpcy54ZmFGb250PXt0eXBlZmFjZTp0LnR5cGVmYWNlLHBvc3R1cmU6dC5wb3N0dXJlLHdlaWdodDp0LndlaWdodCxzaXplOnQuc2l6ZSxsZXR0ZXJTcGFjaW5nOnQubGV0dGVyU3BhY2luZ307dmFyIGM9aS5maW5kKHQudHlwZWZhY2UpO2lmKCFjKXt2YXIgbD1vKHRoaXMuZGVmYXVsdEZvbnQoaSksMik7cmV0dXJuIHRoaXMucGRmRm9udD1sWzBdLHZvaWQodGhpcy54ZmFGb250PWxbMV0pfWlmKHRoaXMucGRmRm9udD0oMCxuLnNlbGVjdEZvbnQpKHQsYyksIXRoaXMucGRmRm9udCl7dmFyIGY9byh0aGlzLmRlZmF1bHRGb250KGkpLDIpO3RoaXMucGRmRm9udD1mWzBdLHRoaXMueGZhRm9udD1mWzFdfX1yZXR1cm4gZihlLFt7a2V5OiJkZWZhdWx0Rm9udCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5maW5kKCJIZWx2ZXRpY2EiLCExKXx8ZS5maW5kKCJNeXJpYWQgUHJvIiwhMSl8fGUuZmluZCgiQXJpYWwiLCExKXx8ZS5nZXREZWZhdWx0KCk7aWYodCYmdC5yZWd1bGFyKXt2YXIgcj10LnJlZ3VsYXI7cmV0dXJuW3Ise3R5cGVmYWNlOnIuY3NzRm9udEluZm8uZm9udEZhbWlseSxwb3N0dXJlOiJub3JtYWwiLHdlaWdodDoibm9ybWFsIixzaXplOjEwLGxldHRlclNwYWNpbmc6MH1dfXJldHVybltudWxsLHt0eXBlZmFjZToiQ291cmllciIscG9zdHVyZToibm9ybWFsIix3ZWlnaHQ6Im5vcm1hbCIsc2l6ZToxMCxsZXR0ZXJTcGFjaW5nOjB9XX19XSksZX0oKSxkPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0LHIsbixhKXt1KHRoaXMsZSksdGhpcy5mb250RmluZGVyPWEsdGhpcy5zdGFjaz1bbmV3IGgodCxyLG4sYSldfXJldHVybiBmKGUsW3trZXk6InB1c2hEYXRhIix2YWx1ZTpmdW5jdGlvbihlLHQscil7Zm9yKHZhciBuPXRoaXMuc3RhY2suYXQoLTEpLGE9MCxpPVsidHlwZWZhY2UiLCJwb3N0dXJlIiwid2VpZ2h0Iiwic2l6ZSIsImxldHRlclNwYWNpbmciXTthPGkubGVuZ3RoO2ErKyl7dmFyIG89aVthXTtlW29dfHwoZVtvXT1uLnhmYUZvbnRbb10pfWZvcih2YXIgcz0wLGM9WyJ0b3AiLCJib3R0b20iLCJsZWZ0IiwicmlnaHQiXTtzPGMubGVuZ3RoO3MrKyl7dmFyIHU9Y1tzXTtpc05hTih0W3VdKSYmKHRbdV09bi5wYXJhTWFyZ2luW3VdKX12YXIgbD1uZXcgaChlLHQscnx8bi5saW5lSGVpZ2h0LHRoaXMuZm9udEZpbmRlcik7bC5wZGZGb250fHwobC5wZGZGb250PW4ucGRmRm9udCksdGhpcy5zdGFjay5wdXNoKGwpfX0se2tleToicG9wRm9udCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnN0YWNrLnBvcCgpfX0se2tleToidG9wRm9udCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdGFjay5hdCgtMSl9fV0pLGV9KCkscD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCxyLG4sYSl7dSh0aGlzLGUpLHRoaXMuZ2x5cGhzPVtdLHRoaXMuZm9udFNlbGVjdG9yPW5ldyBkKHQscixuLGEpLHRoaXMuZXh0cmFIZWlnaHQ9MH1yZXR1cm4gZihlLFt7a2V5OiJwdXNoRGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIpe3RoaXMuZm9udFNlbGVjdG9yLnB1c2hEYXRhKGUsdCxyKX19LHtrZXk6InBvcEZvbnQiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmZvbnRTZWxlY3Rvci5wb3BGb250KCl9fSx7a2V5OiJhZGRQYXJhIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuZm9udFNlbGVjdG9yLnRvcEZvbnQoKTt0aGlzLmV4dHJhSGVpZ2h0Kz1lLnBhcmFNYXJnaW4udG9wK2UucGFyYU1hcmdpbi5ib3R0b219fSx7a2V5OiJhZGRTdHJpbmciLHZhbHVlOmZ1bmN0aW9uKGUpe2lmKGUpe3ZhciB0PXRoaXMuZm9udFNlbGVjdG9yLnRvcEZvbnQoKSxyPXQueGZhRm9udC5zaXplO2lmKHQucGRmRm9udCl7dmFyIG4saT10LnhmYUZvbnQubGV0dGVyU3BhY2luZyxvPXQucGRmRm9udCxzPW8ubGluZUhlaWdodHx8MS4yLGM9dC5saW5lSGVpZ2h0fHxNYXRoLm1heCgxLjIscykqcix1PXMtKHZvaWQgMD09PW8ubGluZUdhcD8uMjpvLmxpbmVHYXApLGw9TWF0aC5tYXgoMSx1KSpyLGY9ci8xZTMsaD1vLmRlZmF1bHRXaWR0aHx8by5jaGFyc1RvR2x5cGhzKCIgIilbMF0ud2lkdGgsZD1hKGUuc3BsaXQoL1tcdTIwMjlcbl0vKSk7dHJ5e2ZvcihkLnMoKTshKG49ZC5uKCkpLmRvbmU7KXt2YXIgcCxnPW4udmFsdWUsdj1vLmVuY29kZVN0cmluZyhnKS5qb2luKCIiKSx5PWEoby5jaGFyc1RvR2x5cGhzKHYpKTt0cnl7Zm9yKHkucygpOyEocD15Lm4oKSkuZG9uZTspe3ZhciBtPXAudmFsdWUsYj1tLndpZHRofHxoO3RoaXMuZ2x5cGhzLnB1c2goW2IqZitpLGMsbCxtLnVuaWNvZGUsITFdKX19Y2F0Y2goZSl7eS5lKGUpfWZpbmFsbHl7eS5mKCl9dGhpcy5nbHlwaHMucHVzaChbMCwwLDAsIlxuIiwhMF0pfX1jYXRjaChlKXtkLmUoZSl9ZmluYWxseXtkLmYoKX10aGlzLmdseXBocy5wb3AoKX1lbHNle3ZhciB3LGs9YShlLnNwbGl0KC9bXHUyMDI5XG5dLykpO3RyeXtmb3Ioay5zKCk7ISh3PWsubigpKS5kb25lOyl7dmFyIFMseD1hKHcudmFsdWUuc3BsaXQoIiIpKTt0cnl7Zm9yKHgucygpOyEoUz14Lm4oKSkuZG9uZTspe3ZhciBPPVMudmFsdWU7dGhpcy5nbHlwaHMucHVzaChbciwxLjIqcixyLE8sITFdKX19Y2F0Y2goZSl7eC5lKGUpfWZpbmFsbHl7eC5mKCl9dGhpcy5nbHlwaHMucHVzaChbMCwwLDAsIlxuIiwhMF0pfX1jYXRjaChlKXtrLmUoZSl9ZmluYWxseXtrLmYoKX10aGlzLmdseXBocy5wb3AoKX19fX0se2tleToiY29tcHV0ZSIsdmFsdWU6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PS0xLHI9MCxuPTAsYT0wLGk9MCxzPTAsYz0hMSx1PSEwLGw9MCxmPXRoaXMuZ2x5cGhzLmxlbmd0aDtsPGY7bCsrKXt2YXIgaD1vKHRoaXMuZ2x5cGhzW2xdLDUpLGQ9aFswXSxwPWhbMV0sZz1oWzJdLHY9IiAiPT09aFszXSx5PXU/ZzpwO2hbNF0/KG49TWF0aC5tYXgobixpKSxpPTAsYSs9cyxzPXksdD0tMSxyPTAsdT0hMSk6dj9pK2Q+ZT8obj1NYXRoLm1heChuLGkpLGk9MCxhKz1zLHM9eSx0PS0xLHI9MCxjPSEwLHU9ITEpOihzPU1hdGgubWF4KHkscykscj1pLGkrPWQsdD1sKTppK2Q+ZT8oYSs9cyxzPXksLTEhPT10PyhsPXQsbj1NYXRoLm1heChuLHIpLGk9MCx0PS0xLHI9MCk6KG49TWF0aC5tYXgobixpKSxpPWQpLGM9ITAsdT0hMSk6KGkrPWQscz1NYXRoLm1heCh5LHMpKX1yZXR1cm57d2lkdGg6MS4wMioobj1NYXRoLm1heChuLGkpKSxoZWlnaHQ6YSs9cyt0aGlzLmV4dHJhSGVpZ2h0LGlzQnJva2VuOmN9fX1dKSxlfSgpO3QuVGV4dE1lYXN1cmU9cH0sKGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LkRhdGFIYW5kbGVyPXZvaWQgMDt2YXIgbj1yKDIwNik7ZnVuY3Rpb24gYShlKXtyZXR1cm4gYT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZX0sYShlKX1mdW5jdGlvbiBpKGUsdCl7dmFyIHI9InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVsiQEBpdGVyYXRvciJdO2lmKCFyKXtpZihBcnJheS5pc0FycmF5KGUpfHwocj1zKGUpKXx8dCYmZSYmIm51bWJlciI9PXR5cGVvZiBlLmxlbmd0aCl7ciYmKGU9cik7dmFyIG49MCxhPWZ1bmN0aW9uKCl7fTtyZXR1cm57czphLG46ZnVuY3Rpb24oKXtyZXR1cm4gbj49ZS5sZW5ndGg/e2RvbmU6ITB9Ontkb25lOiExLHZhbHVlOmVbbisrXX19LGU6ZnVuY3Rpb24oZSl7dGhyb3cgZX0sZjphfX10aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gaXRlcmF0ZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9dmFyIGksbz0hMCxjPSExO3JldHVybntzOmZ1bmN0aW9uKCl7cj1yLmNhbGwoZSl9LG46ZnVuY3Rpb24oKXt2YXIgZT1yLm5leHQoKTtyZXR1cm4gbz1lLmRvbmUsZX0sZTpmdW5jdGlvbihlKXtjPSEwLGk9ZX0sZjpmdW5jdGlvbigpe3RyeXtvfHxudWxsPT1yLnJldHVybnx8ci5yZXR1cm4oKX1maW5hbGx5e2lmKGMpdGhyb3cgaX19fX1mdW5jdGlvbiBvKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciByPW51bGw9PWU/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9cil7dmFyIG4sYSxpLG8scz1bXSxjPSEwLHU9ITE7dHJ5e2lmKGk9KHI9ci5jYWxsKGUpKS5uZXh0LDA9PT10KXtpZihPYmplY3QocikhPT1yKXJldHVybjtjPSExfWVsc2UgZm9yKDshKGM9KG49aS5jYWxsKHIpKS5kb25lKSYmKHMucHVzaChuLnZhbHVlKSxzLmxlbmd0aCE9PXQpO2M9ITApO31jYXRjaChlKXt1PSEwLGE9ZX1maW5hbGx5e3RyeXtpZighYyYmbnVsbCE9ci5yZXR1cm4mJihvPXIucmV0dXJuKCksT2JqZWN0KG8pIT09bykpcmV0dXJufWZpbmFsbHl7aWYodSl0aHJvdyBhfX1yZXR1cm4gc319KGUsdCl8fHMoZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIHMoZSx0KXtpZihlKXtpZigic3RyaW5nIj09dHlwZW9mIGUpcmV0dXJuIGMoZSx0KTt2YXIgcj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7cmV0dXJuIk9iamVjdCI9PT1yJiZlLmNvbnN0cnVjdG9yJiYocj1lLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09cnx8IlNldCI9PT1yP0FycmF5LmZyb20oZSk6IkFyZ3VtZW50cyI9PT1yfHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChyKT9jKGUsdCk6dm9pZCAwfX1mdW5jdGlvbiBjKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciByPTAsbj1uZXcgQXJyYXkodCk7cjx0O3IrKyluW3JdPWVbcl07cmV0dXJuIG59ZnVuY3Rpb24gdShlLHQpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgbj10W3JdO24uZW51bWVyYWJsZT1uLmVudW1lcmFibGV8fCExLG4uY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBuJiYobi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsKHZvaWQgMCxpPWZ1bmN0aW9uKGUsdCl7aWYoIm9iamVjdCIhPT1hKGUpfHxudWxsPT09ZSlyZXR1cm4gZTt2YXIgcj1lW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09cil7dmFyIG49ci5jYWxsKGUsInN0cmluZyIpO2lmKCJvYmplY3QiIT09YShuKSlyZXR1cm4gbjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybiBTdHJpbmcoZSl9KG4ua2V5KSwic3ltYm9sIj09PWEoaSk/aTpTdHJpbmcoaSkpLG4pfXZhciBpfXZhciBsPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0LHIpeyFmdW5jdGlvbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGUpLHRoaXMuZGF0YT1yLHRoaXMuZGF0YXNldD10LmRhdGFzZXRzfHxudWxsfXZhciB0LHI7cmV0dXJuIHQ9ZSwocj1be2tleToic2VyaWFsaXplIix2YWx1ZTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9W1stMSx0aGlzLmRhdGFbbi4kZ2V0Q2hpbGRyZW5dKCldXTt0Lmxlbmd0aD4wOyl7dmFyIHI9dC5hdCgtMSksYT1vKHIsMikscz1hWzBdLGM9YVsxXTtpZihzKzEhPT1jLmxlbmd0aCl7dmFyIHU9Y1srK3JbMF1dLGw9ZS5nZXQodVtuLiR1aWRdKTtpZihsKXVbbi4kc2V0VmFsdWVdKGwpO2Vsc2V7dmFyIGYsaD1pKHVbbi4kZ2V0QXR0cmlidXRlc10oKS52YWx1ZXMoKSk7dHJ5e2ZvcihoLnMoKTshKGY9aC5uKCkpLmRvbmU7KXt2YXIgZD1mLnZhbHVlLHA9ZS5nZXQoZFtuLiR1aWRdKTtpZihwKXtkW24uJHNldFZhbHVlXShwKTticmVha319fWNhdGNoKGUpe2guZShlKX1maW5hbGx5e2guZigpfX12YXIgZz11W24uJGdldENoaWxkcmVuXSgpO2cubGVuZ3RoPjAmJnQucHVzaChbLTEsZ10pfWVsc2UgdC5wb3AoKX12YXIgdj1bJzx4ZmE6ZGF0YXNldHMgeG1sbnM6eGZhPSJodHRwOi8vd3d3LnhmYS5vcmcvc2NoZW1hL3hmYS1kYXRhLzEuMC8iPiddO2lmKHRoaXMuZGF0YXNldCl7dmFyIHksbT1pKHRoaXMuZGF0YXNldFtuLiRnZXRDaGlsZHJlbl0oKSk7dHJ5e2ZvcihtLnMoKTshKHk9bS5uKCkpLmRvbmU7KXt2YXIgYj15LnZhbHVlOyJkYXRhIiE9PWJbbi4kbm9kZU5hbWVdJiZiW24uJHRvU3RyaW5nXSh2KX19Y2F0Y2goZSl7bS5lKGUpfWZpbmFsbHl7bS5mKCl9fXJldHVybiB0aGlzLmRhdGFbbi4kdG9TdHJpbmddKHYpLHYucHVzaCgiPC94ZmE6ZGF0YXNldHM+Iiksdi5qb2luKCIiKX19XSkmJnUodC5wcm90b3R5cGUsciksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZX0oKTt0LkRhdGFIYW5kbGVyPWx9LChlLHQscik9PntmdW5jdGlvbiBuKGUpe3JldHVybiBuPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSxuKGUpfU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LlhGQVBhcnNlcj12b2lkIDA7dmFyIGE9cigyMDYpLGk9cigxOTUpLG89cigyMTgpLHM9cigyKTtmdW5jdGlvbiBjKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciByPW51bGw9PWU/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9cil7dmFyIG4sYSxpLG8scz1bXSxjPSEwLHU9ITE7dHJ5e2lmKGk9KHI9ci5jYWxsKGUpKS5uZXh0LDA9PT10KXtpZihPYmplY3QocikhPT1yKXJldHVybjtjPSExfWVsc2UgZm9yKDshKGM9KG49aS5jYWxsKHIpKS5kb25lKSYmKHMucHVzaChuLnZhbHVlKSxzLmxlbmd0aCE9PXQpO2M9ITApO31jYXRjaChlKXt1PSEwLGE9ZX1maW5hbGx5e3RyeXtpZighYyYmbnVsbCE9ci5yZXR1cm4mJihvPXIucmV0dXJuKCksT2JqZWN0KG8pIT09bykpcmV0dXJufWZpbmFsbHl7aWYodSl0aHJvdyBhfX1yZXR1cm4gc319KGUsdCl8fHUoZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIHUoZSx0KXtpZihlKXtpZigic3RyaW5nIj09dHlwZW9mIGUpcmV0dXJuIGwoZSx0KTt2YXIgcj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7cmV0dXJuIk9iamVjdCI9PT1yJiZlLmNvbnN0cnVjdG9yJiYocj1lLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09cnx8IlNldCI9PT1yP0FycmF5LmZyb20oZSk6IkFyZ3VtZW50cyI9PT1yfHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChyKT9sKGUsdCk6dm9pZCAwfX1mdW5jdGlvbiBsKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciByPTAsbj1uZXcgQXJyYXkodCk7cjx0O3IrKyluW3JdPWVbcl07cmV0dXJuIG59ZnVuY3Rpb24gZihlLHQpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgYT10W3JdO2EuZW51bWVyYWJsZT1hLmVudW1lcmFibGV8fCExLGEuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBhJiYoYS53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsKHZvaWQgMCxpPWZ1bmN0aW9uKGUsdCl7aWYoIm9iamVjdCIhPT1uKGUpfHxudWxsPT09ZSlyZXR1cm4gZTt2YXIgcj1lW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09cil7dmFyIGE9ci5jYWxsKGUsInN0cmluZyIpO2lmKCJvYmplY3QiIT09bihhKSlyZXR1cm4gYTt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybiBTdHJpbmcoZSl9KGEua2V5KSwic3ltYm9sIj09PW4oaSk/aTpTdHJpbmcoaSkpLGEpfXZhciBpfWZ1bmN0aW9uIGgoZSx0KXtyZXR1cm4gaD1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihlLHQpe3JldHVybiBlLl9fcHJvdG9fXz10LGV9LGgoZSx0KX1mdW5jdGlvbiBkKGUpe3JldHVybiBkPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGUpe3JldHVybiBlLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpfSxkKGUpfXZhciBwPWZ1bmN0aW9uKGUpeyFmdW5jdGlvbihlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSx0JiZoKGUsdCl9KHYsZSk7dmFyIHQscixsLHAsZz0obD12LHA9ZnVuY3Rpb24oKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdClyZXR1cm4hMTtpZihSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLChmdW5jdGlvbigpe30pKSksITB9Y2F0Y2goZSl7cmV0dXJuITF9fSgpLGZ1bmN0aW9uKCl7dmFyIGUsdD1kKGwpO2lmKHApe3ZhciByPWQodGhpcykuY29uc3RydWN0b3I7ZT1SZWZsZWN0LmNvbnN0cnVjdCh0LGFyZ3VtZW50cyxyKX1lbHNlIGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYodCYmKCJvYmplY3QiPT09bih0KXx8ImZ1bmN0aW9uIj09dHlwZW9mIHQpKXJldHVybiB0O2lmKHZvaWQgMCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24oZSl7aWYodm9pZCAwPT09ZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBlfShlKX0odGhpcyxlKX0pO2Z1bmN0aW9uIHYoKXt2YXIgZSx0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpudWxsLHI9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXTtyZXR1cm4gZnVuY3Rpb24oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyx2KSwoZT1nLmNhbGwodGhpcykpLl9idWlsZGVyPW5ldyBvLkJ1aWxkZXIodCksZS5fc3RhY2s9W10sZS5fZ2xvYmFsRGF0YT17dXNlZFR5cGVmYWNlczpuZXcgU2V0fSxlLl9pZHM9bmV3IE1hcCxlLl9jdXJyZW50PWUuX2J1aWxkZXIuYnVpbGRSb290KGUuX2lkcyksZS5fZXJyb3JDb2RlPWkuWE1MUGFyc2VyRXJyb3JDb2RlLk5vRXJyb3IsZS5fd2hpdGVSZWdleD0vXlxzKyQvLGUuX25ic3BzPS9ceGEwKy9nLGUuX3JpY2hUZXh0PXIsZX1yZXR1cm4gdD12LChyPVt7a2V5OiJwYXJzZSIsdmFsdWU6ZnVuY3Rpb24oZSl7aWYodGhpcy5wYXJzZVhtbChlKSx0aGlzLl9lcnJvckNvZGU9PT1pLlhNTFBhcnNlckVycm9yQ29kZS5Ob0Vycm9yKXJldHVybiB0aGlzLl9jdXJyZW50W2EuJGZpbmFsaXplXSgpLHRoaXMuX2N1cnJlbnQuZWxlbWVudH19LHtrZXk6Im9uVGV4dCIsdmFsdWU6ZnVuY3Rpb24oZSl7ZT1lLnJlcGxhY2UodGhpcy5fbmJzcHMsKGZ1bmN0aW9uKGUpe3JldHVybiBlLnNsaWNlKDEpKyIgIn0pKSx0aGlzLl9yaWNoVGV4dHx8dGhpcy5fY3VycmVudFthLiRhY2NlcHRXaGl0ZXNwYWNlXSgpP3RoaXMuX2N1cnJlbnRbYS4kb25UZXh0XShlLHRoaXMuX3JpY2hUZXh0KTp0aGlzLl93aGl0ZVJlZ2V4LnRlc3QoZSl8fHRoaXMuX2N1cnJlbnRbYS4kb25UZXh0XShlLnRyaW0oKSl9fSx7a2V5OiJvbkNkYXRhIix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLl9jdXJyZW50W2EuJG9uVGV4dF0oZSl9fSx7a2V5OiJfbWtBdHRyaWJ1dGVzIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciByLG49bnVsbCxpPW51bGwsbz1PYmplY3QuY3JlYXRlKHt9KSxjPWZ1bmN0aW9uKGUsdCl7dmFyIHI9InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVsiQEBpdGVyYXRvciJdO2lmKCFyKXtpZihBcnJheS5pc0FycmF5KGUpfHwocj11KGUpKSl7ciYmKGU9cik7dmFyIG49MCxhPWZ1bmN0aW9uKCl7fTtyZXR1cm57czphLG46ZnVuY3Rpb24oKXtyZXR1cm4gbj49ZS5sZW5ndGg/e2RvbmU6ITB9Ontkb25lOiExLHZhbHVlOmVbbisrXX19LGU6ZnVuY3Rpb24oZSl7dGhyb3cgZX0sZjphfX10aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gaXRlcmF0ZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9dmFyIGksbz0hMCxzPSExO3JldHVybntzOmZ1bmN0aW9uKCl7cj1yLmNhbGwoZSl9LG46ZnVuY3Rpb24oKXt2YXIgZT1yLm5leHQoKTtyZXR1cm4gbz1lLmRvbmUsZX0sZTpmdW5jdGlvbihlKXtzPSEwLGk9ZX0sZjpmdW5jdGlvbigpe3RyeXtvfHxudWxsPT1yLnJldHVybnx8ci5yZXR1cm4oKX1maW5hbGx5e2lmKHMpdGhyb3cgaX19fX0oZSk7dHJ5e2ZvcihjLnMoKTshKHI9Yy5uKCkpLmRvbmU7KXt2YXIgbD1yLnZhbHVlLGY9bC5uYW1lLGg9bC52YWx1ZTtpZigieG1sbnMiPT09ZiluPygwLHMud2FybikoIlhGQSAtIG11bHRpcGxlIG5hbWVzcGFjZSBkZWZpbml0aW9uIGluIDwiLmNvbmNhdCh0LCI+IikpOm49aDtlbHNlIGlmKGYuc3RhcnRzV2l0aCgieG1sbnM6Iikpe3ZhciBkPWYuc3Vic3RyaW5nKDYpO2l8fChpPVtdKSxpLnB1c2goe3ByZWZpeDpkLHZhbHVlOmh9KX1lbHNle3ZhciBwPWYuaW5kZXhPZigiOiIpO2lmKC0xPT09cClvW2ZdPWg7ZWxzZXt2YXIgZz1vW2EuJG5zQXR0cmlidXRlc107Z3x8KGc9b1thLiRuc0F0dHJpYnV0ZXNdPU9iamVjdC5jcmVhdGUobnVsbCkpO3ZhciB2PVtmLnNsaWNlKDAscCksZi5zbGljZShwKzEpXSx5PXZbMF0sbT12WzFdLGI9Z1t5XTtifHwoYj1nW3ldPU9iamVjdC5jcmVhdGUobnVsbCkpLGJbbV09aH19fX1jYXRjaChlKXtjLmUoZSl9ZmluYWxseXtjLmYoKX1yZXR1cm5bbixpLG9dfX0se2tleToiX2dldE5hbWVBbmRQcmVmaXgiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIHI9ZS5pbmRleE9mKCI6Iik7cmV0dXJuLTE9PT1yP1tlLG51bGxdOltlLnN1YnN0cmluZyhyKzEpLHQ/IiI6ZS5zdWJzdHJpbmcoMCxyKV19fSx7a2V5OiJvbkJlZ2luRWxlbWVudCIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPWModGhpcy5fbWtBdHRyaWJ1dGVzKHQsZSksMyksaT1uWzBdLG89blsxXSxzPW5bMl0sdT1jKHRoaXMuX2dldE5hbWVBbmRQcmVmaXgoZSx0aGlzLl9idWlsZGVyLmlzTnNBZ25vc3RpYygpKSwyKSxsPXVbMF0sZj11WzFdLGg9dGhpcy5fYnVpbGRlci5idWlsZCh7bnNQcmVmaXg6ZixuYW1lOmwsYXR0cmlidXRlczpzLG5hbWVzcGFjZTppLHByZWZpeGVzOm99KTtpZihoW2EuJGdsb2JhbERhdGFdPXRoaXMuX2dsb2JhbERhdGEscilyZXR1cm4gaFthLiRmaW5hbGl6ZV0oKSx0aGlzLl9jdXJyZW50W2EuJG9uQ2hpbGRdKGgpJiZoW2EuJHNldElkXSh0aGlzLl9pZHMpLHZvaWQgaFthLiRjbGVhbl0odGhpcy5fYnVpbGRlcik7dGhpcy5fc3RhY2sucHVzaCh0aGlzLl9jdXJyZW50KSx0aGlzLl9jdXJyZW50PWh9fSx7a2V5OiJvbkVuZEVsZW1lbnQiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX2N1cnJlbnQ7aWYodFthLiRpc0NEQVRBWG1sXSgpJiYic3RyaW5nIj09dHlwZW9mIHRbYS4kY29udGVudF0pe3ZhciByPW5ldyB2O3IuX2dsb2JhbERhdGE9dGhpcy5fZ2xvYmFsRGF0YTt2YXIgbj1yLnBhcnNlKHRbYS4kY29udGVudF0pO3RbYS4kY29udGVudF09bnVsbCx0W2EuJG9uQ2hpbGRdKG4pfXRbYS4kZmluYWxpemVdKCksdGhpcy5fY3VycmVudD10aGlzLl9zdGFjay5wb3AoKSx0aGlzLl9jdXJyZW50W2EuJG9uQ2hpbGRdKHQpJiZ0W2EuJHNldElkXSh0aGlzLl9pZHMpLHRbYS4kY2xlYW5dKHRoaXMuX2J1aWxkZXIpfX0se2tleToib25FcnJvciIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5fZXJyb3JDb2RlPWV9fV0pJiZmKHQucHJvdG90eXBlLHIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLHZ9KGkuWE1MUGFyc2VyQmFzZSk7dC5YRkFQYXJzZXI9cH0sKGUsdCxyKT0+e2Z1bmN0aW9uIG4oZSl7cmV0dXJuIG49ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGV9LG4oZSl9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuQnVpbGRlcj12b2lkIDA7dmFyIGE9cigyMDgpLGk9cigyMDYpLG89cigyMTkpLHM9cigyMTEpLGM9cigyMjgpLHU9cigyKTtmdW5jdGlvbiBsKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciByPW51bGw9PWU/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9cil7dmFyIG4sYSxpLG8scz1bXSxjPSEwLHU9ITE7dHJ5e2lmKGk9KHI9ci5jYWxsKGUpKS5uZXh0LDA9PT10KXtpZihPYmplY3QocikhPT1yKXJldHVybjtjPSExfWVsc2UgZm9yKDshKGM9KG49aS5jYWxsKHIpKS5kb25lKSYmKHMucHVzaChuLnZhbHVlKSxzLmxlbmd0aCE9PXQpO2M9ITApO31jYXRjaChlKXt1PSEwLGE9ZX1maW5hbGx5e3RyeXtpZighYyYmbnVsbCE9ci5yZXR1cm4mJihvPXIucmV0dXJuKCksT2JqZWN0KG8pIT09bykpcmV0dXJufWZpbmFsbHl7aWYodSl0aHJvdyBhfX1yZXR1cm4gc319KGUsdCl8fGYoZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIGYoZSx0KXtpZihlKXtpZigic3RyaW5nIj09dHlwZW9mIGUpcmV0dXJuIGgoZSx0KTt2YXIgcj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7cmV0dXJuIk9iamVjdCI9PT1yJiZlLmNvbnN0cnVjdG9yJiYocj1lLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09cnx8IlNldCI9PT1yP0FycmF5LmZyb20oZSk6IkFyZ3VtZW50cyI9PT1yfHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChyKT9oKGUsdCk6dm9pZCAwfX1mdW5jdGlvbiBoKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciByPTAsbj1uZXcgQXJyYXkodCk7cjx0O3IrKyluW3JdPWVbcl07cmV0dXJuIG59ZnVuY3Rpb24gZChlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIHAoZSx0KXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIGE9dFtyXTthLmVudW1lcmFibGU9YS5lbnVtZXJhYmxlfHwhMSxhLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gYSYmKGEud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCh2b2lkIDAsaT1mdW5jdGlvbihlLHQpe2lmKCJvYmplY3QiIT09bihlKXx8bnVsbD09PWUpcmV0dXJuIGU7dmFyIHI9ZVtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PXIpe3ZhciBhPXIuY2FsbChlLCJzdHJpbmciKTtpZigib2JqZWN0IiE9PW4oYSkpcmV0dXJuIGE7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4gU3RyaW5nKGUpfShhLmtleSksInN5bWJvbCI9PT1uKGkpP2k6U3RyaW5nKGkpKSxhKX12YXIgaX1mdW5jdGlvbiBnKGUsdCxyKXtyZXR1cm4gdCYmcChlLnByb3RvdHlwZSx0KSxyJiZwKGUsciksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZX1mdW5jdGlvbiB2KCl7cmV0dXJuIHY9InVuZGVmaW5lZCIhPXR5cGVvZiBSZWZsZWN0JiZSZWZsZWN0LmdldD9SZWZsZWN0LmdldC5iaW5kKCk6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPWZ1bmN0aW9uKGUsdCl7Zm9yKDshT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsdCkmJm51bGwhPT0oZT13KGUpKTspO3JldHVybiBlfShlLHQpO2lmKG4pe3ZhciBhPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KTtyZXR1cm4gYS5nZXQ/YS5nZXQuY2FsbChhcmd1bWVudHMubGVuZ3RoPDM/ZTpyKTphLnZhbHVlfX0sdi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24geShlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSx0JiZtKGUsdCl9ZnVuY3Rpb24gbShlLHQpe3JldHVybiBtPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuX19wcm90b19fPXQsZX0sbShlLHQpfWZ1bmN0aW9uIGIoZSl7dmFyIHQ9ZnVuY3Rpb24oKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdClyZXR1cm4hMTtpZihSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLChmdW5jdGlvbigpe30pKSksITB9Y2F0Y2goZSl7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciByLGE9dyhlKTtpZih0KXt2YXIgaT13KHRoaXMpLmNvbnN0cnVjdG9yO3I9UmVmbGVjdC5jb25zdHJ1Y3QoYSxhcmd1bWVudHMsaSl9ZWxzZSByPWEuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBmdW5jdGlvbihlLHQpe2lmKHQmJigib2JqZWN0Ij09PW4odCl8fCJmdW5jdGlvbiI9PXR5cGVvZiB0KSlyZXR1cm4gdDtpZih2b2lkIDAhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKHZvaWQgMD09PWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZX0oZSl9KHRoaXMscil9fWZ1bmN0aW9uIHcoZSl7cmV0dXJuIHc9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSl9LHcoZSl9dmFyIGs9ZnVuY3Rpb24oZSl7eShyLGUpO3ZhciB0PWIocik7ZnVuY3Rpb24gcihlKXt2YXIgbjtyZXR1cm4gZCh0aGlzLHIpLChuPXQuY2FsbCh0aGlzLC0xLCJyb290IixPYmplY3QuY3JlYXRlKG51bGwpKSkuZWxlbWVudD1udWxsLG5baS4kaWRzXT1lLG59cmV0dXJuIGcocixbe2tleTppLiRvbkNoaWxkLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmVsZW1lbnQ9ZSwhMH19LHtrZXk6aS4kZmluYWxpemUsdmFsdWU6ZnVuY3Rpb24oKXt2KHcoci5wcm90b3R5cGUpLGkuJGZpbmFsaXplLHRoaXMpLmNhbGwodGhpcyksdGhpcy5lbGVtZW50LnRlbXBsYXRlIGluc3RhbmNlb2Ygcy5UZW1wbGF0ZSYmKHRoaXNbaS4kaWRzXS5zZXQoaS4kcm9vdCx0aGlzLmVsZW1lbnQpLHRoaXMuZWxlbWVudC50ZW1wbGF0ZVtpLiRyZXNvbHZlUHJvdG90eXBlc10odGhpc1tpLiRpZHNdKSx0aGlzLmVsZW1lbnQudGVtcGxhdGVbaS4kaWRzXT10aGlzW2kuJGlkc10pfX1dKSxyfShpLlhGQU9iamVjdCksUz1mdW5jdGlvbihlKXt5KHIsZSk7dmFyIHQ9YihyKTtmdW5jdGlvbiByKCl7cmV0dXJuIGQodGhpcyxyKSx0LmNhbGwodGhpcywtMSwiIixPYmplY3QuY3JlYXRlKG51bGwpKX1yZXR1cm4gZyhyLFt7a2V5OmkuJG9uQ2hpbGQsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuITF9fV0pLHJ9KGkuWEZBT2JqZWN0KSx4PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe3ZhciB0LHI9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOm51bGw7ZCh0aGlzLGUpLHRoaXMuX25hbWVzcGFjZVN0YWNrPVtdLHRoaXMuX25zQWdub3N0aWNMZXZlbD0wLHRoaXMuX25hbWVzcGFjZVByZWZpeGVzPW5ldyBNYXAsdGhpcy5fbmFtZXNwYWNlcz1uZXcgTWFwLHRoaXMuX25leHROc0lkPU1hdGgubWF4LmFwcGx5KE1hdGgsZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gaChlKX0odD1PYmplY3QudmFsdWVzKGEuTmFtZXNwYWNlSWRzKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmlkfSkpKXx8ZnVuY3Rpb24oZSl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJm51bGwhPWVbU3ltYm9sLml0ZXJhdG9yXXx8bnVsbCE9ZVsiQEBpdGVyYXRvciJdKXJldHVybiBBcnJheS5mcm9tKGUpfSh0KXx8Zih0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKSksdGhpcy5fY3VycmVudE5hbWVzcGFjZT1yfHxuZXcgYy5Vbmtub3duTmFtZXNwYWNlKCsrdGhpcy5fbmV4dE5zSWQpfXJldHVybiBnKGUsW3trZXk6ImJ1aWxkUm9vdCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBrKGUpfX0se2tleToiYnVpbGQiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWUubnNQcmVmaXgscj1lLm5hbWUsbj1lLmF0dHJpYnV0ZXMscz1lLm5hbWVzcGFjZSxjPWUucHJlZml4ZXMsdT1udWxsIT09cztpZih1JiYodGhpcy5fbmFtZXNwYWNlU3RhY2sucHVzaCh0aGlzLl9jdXJyZW50TmFtZXNwYWNlKSx0aGlzLl9jdXJyZW50TmFtZXNwYWNlPXRoaXMuX3NlYXJjaE5hbWVzcGFjZShzKSksYyYmdGhpcy5fYWRkTmFtZXNwYWNlUHJlZml4KGMpLG4uaGFzT3duUHJvcGVydHkoaS4kbnNBdHRyaWJ1dGVzKSl7Zm9yKHZhciBmPW8uTmFtZXNwYWNlU2V0VXAuZGF0YXNldHMsaD1uW2kuJG5zQXR0cmlidXRlc10sZD1udWxsLHA9MCxnPU9iamVjdC5lbnRyaWVzKGgpO3A8Zy5sZW5ndGg7cCsrKXt2YXIgdj1sKGdbcF0sMikseT12WzBdLG09dlsxXTtpZih0aGlzLl9nZXROYW1lc3BhY2VUb1VzZSh5KT09PWYpe2Q9e3hmYTptfTticmVha319ZD9uW2kuJG5zQXR0cmlidXRlc109ZDpkZWxldGUgbltpLiRuc0F0dHJpYnV0ZXNdfXZhciBiPXRoaXMuX2dldE5hbWVzcGFjZVRvVXNlKHQpLHc9YiYmYlthLiRidWlsZFhGQU9iamVjdF0ocixuKXx8bmV3IFM7cmV0dXJuIHdbaS4kaXNOc0Fnbm9zdGljXSgpJiZ0aGlzLl9uc0Fnbm9zdGljTGV2ZWwrKywodXx8Y3x8d1tpLiRpc05zQWdub3N0aWNdKCkpJiYod1tpLiRjbGVhbnVwXT17aGFzTmFtZXNwYWNlOnUscHJlZml4ZXM6Yyxuc0Fnbm9zdGljOndbaS4kaXNOc0Fnbm9zdGljXSgpfSksd319LHtrZXk6ImlzTnNBZ25vc3RpYyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbnNBZ25vc3RpY0xldmVsPjB9fSx7a2V5OiJfc2VhcmNoTmFtZXNwYWNlIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLl9uYW1lc3BhY2VzLmdldChlKTtpZih0KXJldHVybiB0O2Zvcih2YXIgcj0wLG49T2JqZWN0LmVudHJpZXMoYS5OYW1lc3BhY2VJZHMpO3I8bi5sZW5ndGg7cisrKXt2YXIgaT1sKG5bcl0sMikscz1pWzBdO2lmKCgwLGlbMV0uY2hlY2spKGUpKXtpZih0PW8uTmFtZXNwYWNlU2V0VXBbc10pcmV0dXJuIHRoaXMuX25hbWVzcGFjZXMuc2V0KGUsdCksdDticmVha319cmV0dXJuIHQ9bmV3IGMuVW5rbm93bk5hbWVzcGFjZSgrK3RoaXMuX25leHROc0lkKSx0aGlzLl9uYW1lc3BhY2VzLnNldChlLHQpLHR9fSx7a2V5OiJfYWRkTmFtZXNwYWNlUHJlZml4Iix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdCxyPWZ1bmN0aW9uKGUsdCl7dmFyIHI9InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVsiQEBpdGVyYXRvciJdO2lmKCFyKXtpZihBcnJheS5pc0FycmF5KGUpfHwocj1mKGUpKSl7ciYmKGU9cik7dmFyIG49MCxhPWZ1bmN0aW9uKCl7fTtyZXR1cm57czphLG46ZnVuY3Rpb24oKXtyZXR1cm4gbj49ZS5sZW5ndGg/e2RvbmU6ITB9Ontkb25lOiExLHZhbHVlOmVbbisrXX19LGU6ZnVuY3Rpb24oZSl7dGhyb3cgZX0sZjphfX10aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gaXRlcmF0ZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9dmFyIGksbz0hMCxzPSExO3JldHVybntzOmZ1bmN0aW9uKCl7cj1yLmNhbGwoZSl9LG46ZnVuY3Rpb24oKXt2YXIgZT1yLm5leHQoKTtyZXR1cm4gbz1lLmRvbmUsZX0sZTpmdW5jdGlvbihlKXtzPSEwLGk9ZX0sZjpmdW5jdGlvbigpe3RyeXtvfHxudWxsPT1yLnJldHVybnx8ci5yZXR1cm4oKX1maW5hbGx5e2lmKHMpdGhyb3cgaX19fX0oZSk7dHJ5e2ZvcihyLnMoKTshKHQ9ci5uKCkpLmRvbmU7KXt2YXIgbj10LnZhbHVlLGE9bi5wcmVmaXgsaT1uLnZhbHVlLG89dGhpcy5fc2VhcmNoTmFtZXNwYWNlKGkpLHM9dGhpcy5fbmFtZXNwYWNlUHJlZml4ZXMuZ2V0KGEpO3N8fChzPVtdLHRoaXMuX25hbWVzcGFjZVByZWZpeGVzLnNldChhLHMpKSxzLnB1c2gobyl9fWNhdGNoKGUpe3IuZShlKX1maW5hbGx5e3IuZigpfX19LHtrZXk6Il9nZXROYW1lc3BhY2VUb1VzZSIsdmFsdWU6ZnVuY3Rpb24oZSl7aWYoIWUpcmV0dXJuIHRoaXMuX2N1cnJlbnROYW1lc3BhY2U7dmFyIHQ9dGhpcy5fbmFtZXNwYWNlUHJlZml4ZXMuZ2V0KGUpO3JldHVybiB0JiZ0Lmxlbmd0aD4wP3QuYXQoLTEpOigoMCx1Lndhcm4pKCJVbmtub3duIG5hbWVzcGFjZSBwcmVmaXg6ICIuY29uY2F0KGUsIi4iKSksbnVsbCl9fSx7a2V5OiJjbGVhbiIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxyPWUuaGFzTmFtZXNwYWNlLG49ZS5wcmVmaXhlcyxhPWUubnNBZ25vc3RpYztyJiYodGhpcy5fY3VycmVudE5hbWVzcGFjZT10aGlzLl9uYW1lc3BhY2VTdGFjay5wb3AoKSksbiYmbi5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgcj1lLnByZWZpeDt0Ll9uYW1lc3BhY2VQcmVmaXhlcy5nZXQocikucG9wKCl9KSksYSYmdGhpcy5fbnNBZ25vc3RpY0xldmVsLS19fV0pLGV9KCk7dC5CdWlsZGVyPXh9LChlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5OYW1lc3BhY2VTZXRVcD12b2lkIDA7dmFyIG49cigyMjApLGE9cigyMjEpLGk9cigyMjIpLG89cigyMjMpLHM9cigyMjQpLGM9cigyMjUpLHU9cigyMTEpLGw9cigyMjYpLGY9cigyMjcpLGg9e2NvbmZpZzpuLkNvbmZpZ05hbWVzcGFjZSxjb25uZWN0aW9uOmEuQ29ubmVjdGlvblNldE5hbWVzcGFjZSxkYXRhc2V0czppLkRhdGFzZXRzTmFtZXNwYWNlLGxvY2FsZVNldDpvLkxvY2FsZVNldE5hbWVzcGFjZSxzaWduYXR1cmU6cy5TaWduYXR1cmVOYW1lc3BhY2Usc3R5bGVzaGVldDpjLlN0eWxlc2hlZXROYW1lc3BhY2UsdGVtcGxhdGU6dS5UZW1wbGF0ZU5hbWVzcGFjZSx4ZHA6bC5YZHBOYW1lc3BhY2UseGh0bWw6Zi5YaHRtbE5hbWVzcGFjZX07dC5OYW1lc3BhY2VTZXRVcD1ofSwoZSx0LHIpPT57ZnVuY3Rpb24gbihlKXtyZXR1cm4gbj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZX0sbihlKX1PYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5Db25maWdOYW1lc3BhY2U9dm9pZCAwO3ZhciBhPXIoMjA4KSxpPXIoMjA2KSxvPXIoMjA3KSxzPXIoMik7ZnVuY3Rpb24gYyhlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgcj0wLG49bmV3IEFycmF5KHQpO3I8dDtyKyspbltyXT1lW3JdO3JldHVybiBufWZ1bmN0aW9uIHUoZSx0KXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIGE9dFtyXTthLmVudW1lcmFibGU9YS5lbnVtZXJhYmxlfHwhMSxhLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gYSYmKGEud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCh2b2lkIDAsaT1mdW5jdGlvbihlLHQpe2lmKCJvYmplY3QiIT09bihlKXx8bnVsbD09PWUpcmV0dXJuIGU7dmFyIHI9ZVtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PXIpe3ZhciBhPXIuY2FsbChlLCJzdHJpbmciKTtpZigib2JqZWN0IiE9PW4oYSkpcmV0dXJuIGE7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4gU3RyaW5nKGUpfShhLmtleSksInN5bWJvbCI9PT1uKGkpP2k6U3RyaW5nKGkpKSxhKX12YXIgaX1mdW5jdGlvbiBsKGUsdCxyKXtyZXR1cm4gdCYmdShlLnByb3RvdHlwZSx0KSxyJiZ1KGUsciksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZX1mdW5jdGlvbiBmKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gaChlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSx0JiZkKGUsdCl9ZnVuY3Rpb24gZChlLHQpe3JldHVybiBkPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuX19wcm90b19fPXQsZX0sZChlLHQpfWZ1bmN0aW9uIHAoZSl7dmFyIHQ9ZnVuY3Rpb24oKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdClyZXR1cm4hMTtpZihSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLChmdW5jdGlvbigpe30pKSksITB9Y2F0Y2goZSl7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciByLGE9ZyhlKTtpZih0KXt2YXIgaT1nKHRoaXMpLmNvbnN0cnVjdG9yO3I9UmVmbGVjdC5jb25zdHJ1Y3QoYSxhcmd1bWVudHMsaSl9ZWxzZSByPWEuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBmdW5jdGlvbihlLHQpe2lmKHQmJigib2JqZWN0Ij09PW4odCl8fCJmdW5jdGlvbiI9PXR5cGVvZiB0KSlyZXR1cm4gdDtpZih2b2lkIDAhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKHZvaWQgMD09PWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZX0oZSl9KHRoaXMscil9fWZ1bmN0aW9uIGcoZSl7cmV0dXJuIGc9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSl9LGcoZSl9dmFyIHY9YS5OYW1lc3BhY2VJZHMuY29uZmlnLmlkLHk9ZnVuY3Rpb24oZSl7aChyLGUpO3ZhciB0PXAocik7ZnVuY3Rpb24gcihlKXt2YXIgbjtyZXR1cm4gZih0aGlzLHIpLChuPXQuY2FsbCh0aGlzLHYsImFjcm9iYXQiLCEwKSkuYWNyb2JhdDc9bnVsbCxuLmF1dG9TYXZlPW51bGwsbi5jb21tb249bnVsbCxuLnZhbGlkYXRlPW51bGwsbi52YWxpZGF0ZUFwcHJvdmFsU2lnbmF0dXJlcz1udWxsLG4uc3VibWl0VXJsPW5ldyBpLlhGQU9iamVjdEFycmF5LG59cmV0dXJuIGwocil9KGkuWEZBT2JqZWN0KSxtPWZ1bmN0aW9uKGUpe2gocixlKTt2YXIgdD1wKHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG47cmV0dXJuIGYodGhpcyxyKSwobj10LmNhbGwodGhpcyx2LCJhY3JvYmF0NyIsITApKS5keW5hbWljUmVuZGVyPW51bGwsbn1yZXR1cm4gbChyKX0oaS5YRkFPYmplY3QpLGI9ZnVuY3Rpb24oZSl7aChyLGUpO3ZhciB0PXAocik7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZih0aGlzLHIpLHQuY2FsbCh0aGlzLHYsIkFEQkVfSlNDb25zb2xlIixbImRlbGVnYXRlIiwiRW5hYmxlIiwiRGlzYWJsZSJdKX1yZXR1cm4gbChyKX0oaS5PcHRpb25PYmplY3QpLHc9ZnVuY3Rpb24oZSl7aChyLGUpO3ZhciB0PXAocik7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZih0aGlzLHIpLHQuY2FsbCh0aGlzLHYsIkFEQkVfSlNEZWJ1Z2dlciIsWyJkZWxlZ2F0ZSIsIkVuYWJsZSIsIkRpc2FibGUiXSl9cmV0dXJuIGwocil9KGkuT3B0aW9uT2JqZWN0KSxrPWZ1bmN0aW9uKGUpe2gocixlKTt2YXIgdD1wKHIpO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGYodGhpcyxyKSx0LmNhbGwodGhpcyx2LCJhZGRTaWxlbnRQcmludCIpfXJldHVybiBsKHIpfShpLk9wdGlvbjAxKSxTPWZ1bmN0aW9uKGUpe2gocixlKTt2YXIgdD1wKHIpO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGYodGhpcyxyKSx0LmNhbGwodGhpcyx2LCJhZGRWaWV3ZXJQcmVmZXJlbmNlcyIpfXJldHVybiBsKHIpfShpLk9wdGlvbjAxKSx4PWZ1bmN0aW9uKGUpe2gocixlKTt2YXIgdD1wKHIpO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGYodGhpcyxyKSx0LmNhbGwodGhpcyx2LCJhZGp1c3REYXRhIil9cmV0dXJuIGwocil9KGkuT3B0aW9uMTApLE89ZnVuY3Rpb24oZSl7aChyLGUpO3ZhciB0PXAocik7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZih0aGlzLHIpLHQuY2FsbCh0aGlzLHYsImFkb2JlRXh0ZW5zaW9uTGV2ZWwiLDAsKGZ1bmN0aW9uKGUpe3JldHVybiBlPj0xJiZlPD04fSkpfXJldHVybiBsKHIpfShpLkludGVnZXJPYmplY3QpLEE9ZnVuY3Rpb24oZSl7aChyLGUpO3ZhciB0PXAocik7ZnVuY3Rpb24gcihlKXt2YXIgbjtyZXR1cm4gZih0aGlzLHIpLChuPXQuY2FsbCh0aGlzLHYsImFnZW50IiwhMCkpLm5hbWU9ZS5uYW1lP2UubmFtZS50cmltKCk6IiIsbi5jb21tb249bmV3IGkuWEZBT2JqZWN0QXJyYXksbn1yZXR1cm4gbChyKX0oaS5YRkFPYmplY3QpLEM9ZnVuY3Rpb24oZSl7aChyLGUpO3ZhciB0PXAocik7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZih0aGlzLHIpLHQuY2FsbCh0aGlzLHYsImFsd2F5c0VtYmVkIil9cmV0dXJuIGwocil9KGkuQ29udGVudE9iamVjdCksRj1mdW5jdGlvbihlKXtoKHIsZSk7dmFyIHQ9cChyKTtmdW5jdGlvbiByKGUpe3JldHVybiBmKHRoaXMsciksdC5jYWxsKHRoaXMsdiwiYW1kIil9cmV0dXJuIGwocil9KGkuU3RyaW5nT2JqZWN0KSxQPWZ1bmN0aW9uKGUpe2gocixlKTt2YXIgdD1wKHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG47cmV0dXJuIGYodGhpcyxyKSwobj10LmNhbGwodGhpcyx2LCJhcmVhIikpLmxldmVsPSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5sZXZlbCxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTpmdW5jdGlvbihlKXtyZXR1cm4gZT49MSYmZTw9M319KSxuLm5hbWU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUubmFtZSxbIiIsImJhcmNvZGUiLCJjb3JlaW5pdCIsImRldmljZURyaXZlciIsImZvbnQiLCJnZW5lcmFsIiwibGF5b3V0IiwibWVyZ2UiLCJzY3JpcHQiLCJzaWduYXR1cmUiLCJzb3VyY2VTZXQiLCJ0ZW1wbGF0ZUNhY2hlIl0pLG59cmV0dXJuIGwocil9KGkuWEZBT2JqZWN0KSxUPWZ1bmN0aW9uKGUpe2gocixlKTt2YXIgdD1wKHIpO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGYodGhpcyxyKSx0LmNhbGwodGhpcyx2LCJhdHRyaWJ1dGVzIixbInByZXNlcnZlIiwiZGVsZWdhdGUiLCJpZ25vcmUiXSl9cmV0dXJuIGwocil9KGkuT3B0aW9uT2JqZWN0KSxJPWZ1bmN0aW9uKGUpe2gocixlKTt2YXIgdD1wKHIpO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGYodGhpcyxyKSx0LmNhbGwodGhpcyx2LCJhdXRvU2F2ZSIsWyJkaXNhYmxlZCIsImVuYWJsZWQiXSl9cmV0dXJuIGwocil9KGkuT3B0aW9uT2JqZWN0KSxFPWZ1bmN0aW9uKGUpe2gocixlKTt2YXIgdD1wKHIpO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGYodGhpcyxyKSx0LmNhbGwodGhpcyx2LCJiYXNlIil9cmV0dXJuIGwocil9KGkuU3RyaW5nT2JqZWN0KSxqPWZ1bmN0aW9uKGUpe2gocixlKTt2YXIgdD1wKHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG47cmV0dXJuIGYodGhpcyxyKSwobj10LmNhbGwodGhpcyx2LCJiYXRjaE91dHB1dCIpKS5mb3JtYXQ9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuZm9ybWF0LFsibm9uZSIsImNvbmNhdCIsInppcCIsInppcENvbXByZXNzIl0pLG59cmV0dXJuIGwocil9KGkuWEZBT2JqZWN0KSxNPWZ1bmN0aW9uKGUpe2gocixlKTt2YXIgdD1wKHIpO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGYodGhpcyxyKSx0LmNhbGwodGhpcyx2LCJiZWhhdmlvck92ZXJyaWRlIil9cmV0dXJuIGwocixbe2tleTppLiRmaW5hbGl6ZSx2YWx1ZTpmdW5jdGlvbigpe3RoaXNbaS4kY29udGVudF09bmV3IE1hcCh0aGlzW2kuJGNvbnRlbnRdLnRyaW0oKS5zcGxpdCgvXHMrLykuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gZS5pbmNsdWRlcygiOiIpfSkpLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUuc3BsaXQoIjoiLDIpfSkpKX19XSkscn0oaS5Db250ZW50T2JqZWN0KSxfPWZ1bmN0aW9uKGUpe2gocixlKTt2YXIgdD1wKHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG47cmV0dXJuIGYodGhpcyxyKSwobj10LmNhbGwodGhpcyx2LCJjYWNoZSIsITApKS50ZW1wbGF0ZUNhY2hlPW51bGwsbn1yZXR1cm4gbChyKX0oaS5YRkFPYmplY3QpLEw9ZnVuY3Rpb24oZSl7aChyLGUpO3ZhciB0PXAocik7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZih0aGlzLHIpLHQuY2FsbCh0aGlzLHYsImNoYW5nZSIpfXJldHVybiBsKHIpfShpLk9wdGlvbjAxKSxSPWZ1bmN0aW9uKGUpe2gocixlKTt2YXIgdD1wKHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG47cmV0dXJuIGYodGhpcyxyKSwobj10LmNhbGwodGhpcyx2LCJjb21tb24iLCEwKSkuZGF0YT1udWxsLG4ubG9jYWxlPW51bGwsbi5sb2NhbGVTZXQ9bnVsbCxuLm1lc3NhZ2luZz1udWxsLG4uc3VwcHJlc3NCYW5uZXI9bnVsbCxuLnRlbXBsYXRlPW51bGwsbi52YWxpZGF0aW9uTWVzc2FnaW5nPW51bGwsbi52ZXJzaW9uQ29udHJvbD1udWxsLG4ubG9nPW5ldyBpLlhGQU9iamVjdEFycmF5LG59cmV0dXJuIGwocil9KGkuWEZBT2JqZWN0KSxOPWZ1bmN0aW9uKGUpe2gocixlKTt2YXIgdD1wKHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG47cmV0dXJuIGYodGhpcyxyKSwobj10LmNhbGwodGhpcyx2LCJjb21wcmVzcyIpKS5zY29wZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5zY29wZSxbImltYWdlT25seSIsImRvY3VtZW50Il0pLG59cmV0dXJuIGwocil9KGkuWEZBT2JqZWN0KSxEPWZ1bmN0aW9uKGUpe2gocixlKTt2YXIgdD1wKHIpO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGYodGhpcyxyKSx0LmNhbGwodGhpcyx2LCJjb21wcmVzc0xvZ2ljYWxTdHJ1Y3R1cmUiKX1yZXR1cm4gbChyKX0oaS5PcHRpb24wMSksQj1mdW5jdGlvbihlKXtoKHIsZSk7dmFyIHQ9cChyKTtmdW5jdGlvbiByKGUpe3JldHVybiBmKHRoaXMsciksdC5jYWxsKHRoaXMsdiwiY29tcHJlc3NPYmplY3RTdHJlYW0iKX1yZXR1cm4gbChyKX0oaS5PcHRpb24xMCksVT1mdW5jdGlvbihlKXtoKHIsZSk7dmFyIHQ9cChyKTtmdW5jdGlvbiByKGUpe3ZhciBuO3JldHVybiBmKHRoaXMsciksKG49dC5jYWxsKHRoaXMsdiwiY29tcHJlc3Npb24iLCEwKSkuY29tcHJlc3NMb2dpY2FsU3RydWN0dXJlPW51bGwsbi5jb21wcmVzc09iamVjdFN0cmVhbT1udWxsLG4ubGV2ZWw9bnVsbCxuLnR5cGU9bnVsbCxufXJldHVybiBsKHIpfShpLlhGQU9iamVjdCksJD1mdW5jdGlvbihlKXtoKHIsZSk7dmFyIHQ9cChyKTtmdW5jdGlvbiByKGUpe3ZhciBuO3JldHVybiBmKHRoaXMsciksKG49dC5jYWxsKHRoaXMsdiwiY29uZmlnIiwhMCkpLmFjcm9iYXQ9bnVsbCxuLnByZXNlbnQ9bnVsbCxuLnRyYWNlPW51bGwsbi5hZ2VudD1uZXcgaS5YRkFPYmplY3RBcnJheSxufXJldHVybiBsKHIpfShpLlhGQU9iamVjdCksWD1mdW5jdGlvbihlKXtoKHIsZSk7dmFyIHQ9cChyKTtmdW5jdGlvbiByKGUpe3JldHVybiBmKHRoaXMsciksdC5jYWxsKHRoaXMsdiwiY29uZm9ybWFuY2UiLFsiQSIsIkIiXSl9cmV0dXJuIGwocil9KGkuT3B0aW9uT2JqZWN0KSxIPWZ1bmN0aW9uKGUpe2gocixlKTt2YXIgdD1wKHIpO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGYodGhpcyxyKSx0LmNhbGwodGhpcyx2LCJjb250ZW50Q29weSIpfXJldHVybiBsKHIpfShpLk9wdGlvbjAxKSxxPWZ1bmN0aW9uKGUpe2gocixlKTt2YXIgdD1wKHIpO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGYodGhpcyxyKSx0LmNhbGwodGhpcyx2LCJjb3BpZXMiLDEsKGZ1bmN0aW9uKGUpe3JldHVybiBlPj0xfSkpfXJldHVybiBsKHIpfShpLkludGVnZXJPYmplY3QpLEc9ZnVuY3Rpb24oZSl7aChyLGUpO3ZhciB0PXAocik7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZih0aGlzLHIpLHQuY2FsbCh0aGlzLHYsImNyZWF0b3IiKX1yZXR1cm4gbChyKX0oaS5TdHJpbmdPYmplY3QpLHo9ZnVuY3Rpb24oZSl7aChyLGUpO3ZhciB0PXAocik7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZih0aGlzLHIpLHQuY2FsbCh0aGlzLHYsImN1cnJlbnRQYWdlIiwwLChmdW5jdGlvbihlKXtyZXR1cm4gZT49MH0pKX1yZXR1cm4gbChyKX0oaS5JbnRlZ2VyT2JqZWN0KSxXPWZ1bmN0aW9uKGUpe2gocixlKTt2YXIgdD1wKHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG47cmV0dXJuIGYodGhpcyxyKSwobj10LmNhbGwodGhpcyx2LCJkYXRhIiwhMCkpLmFkanVzdERhdGE9bnVsbCxuLmF0dHJpYnV0ZXM9bnVsbCxuLmluY3JlbWVudGFsTG9hZD1udWxsLG4ub3V0cHV0WFNMPW51bGwsbi5yYW5nZT1udWxsLG4ucmVjb3JkPW51bGwsbi5zdGFydE5vZGU9bnVsbCxuLnVyaT1udWxsLG4ud2luZG93PW51bGwsbi54c2w9bnVsbCxuLmV4Y2x1ZGVOUz1uZXcgaS5YRkFPYmplY3RBcnJheSxuLnRyYW5zZm9ybT1uZXcgaS5YRkFPYmplY3RBcnJheSxufXJldHVybiBsKHIpfShpLlhGQU9iamVjdCksVj1mdW5jdGlvbihlKXtoKHIsZSk7dmFyIHQ9cChyKTtmdW5jdGlvbiByKGUpe3ZhciBuO3JldHVybiBmKHRoaXMsciksKG49dC5jYWxsKHRoaXMsdiwiZGVidWciLCEwKSkudXJpPW51bGwsbn1yZXR1cm4gbChyKX0oaS5YRkFPYmplY3QpLFk9ZnVuY3Rpb24oZSl7aChyLGUpO3ZhciB0PXAocik7ZnVuY3Rpb24gcihlKXt2YXIgbjtyZXR1cm4gZih0aGlzLHIpLChuPXQuY2FsbCh0aGlzLHYsImRlZmF1bHRUeXBlZmFjZSIpKS53cml0aW5nU2NyaXB0PSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLndyaXRpbmdTY3JpcHQsWyIqIiwiQXJhYmljIiwiQ3lyaWxsaWMiLCJFYXN0RXVyb3BlYW5Sb21hbiIsIkdyZWVrIiwiSGVicmV3IiwiSmFwYW5lc2UiLCJLb3JlYW4iLCJSb21hbiIsIlNpbXBsaWZpZWRDaGluZXNlIiwiVGhhaSIsIlRyYWRpdGlvbmFsQ2hpbmVzZSIsIlZpZXRuYW1lc2UiXSksbn1yZXR1cm4gbChyKX0oaS5Db250ZW50T2JqZWN0KSxLPWZ1bmN0aW9uKGUpe2gocixlKTt2YXIgdD1wKHIpO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGYodGhpcyxyKSx0LmNhbGwodGhpcyx2LCJkZXN0aW5hdGlvbiIsWyJwZGYiLCJwY2wiLCJwcyIsIndlYkNsaWVudCIsInpwbCJdKX1yZXR1cm4gbChyKX0oaS5PcHRpb25PYmplY3QpLEo9ZnVuY3Rpb24oZSl7aChyLGUpO3ZhciB0PXAocik7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZih0aGlzLHIpLHQuY2FsbCh0aGlzLHYsImRvY3VtZW50QXNzZW1ibHkiKX1yZXR1cm4gbChyKX0oaS5PcHRpb24wMSksWj1mdW5jdGlvbihlKXtoKHIsZSk7dmFyIHQ9cChyKTtmdW5jdGlvbiByKGUpe3ZhciBuO3JldHVybiBmKHRoaXMsciksKG49dC5jYWxsKHRoaXMsdiwiZHJpdmVyIiwhMCkpLm5hbWU9ZS5uYW1lP2UubmFtZS50cmltKCk6IiIsbi5mb250SW5mbz1udWxsLG4ueGRjPW51bGwsbn1yZXR1cm4gbChyKX0oaS5YRkFPYmplY3QpLFE9ZnVuY3Rpb24oZSl7aChyLGUpO3ZhciB0PXAocik7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZih0aGlzLHIpLHQuY2FsbCh0aGlzLHYsImR1cGxleE9wdGlvbiIsWyJzaW1wbGV4IiwiZHVwbGV4RmxpcExvbmdFZGdlIiwiZHVwbGV4RmxpcFNob3J0RWRnZSJdKX1yZXR1cm4gbChyKX0oaS5PcHRpb25PYmplY3QpLGVlPWZ1bmN0aW9uKGUpe2gocixlKTt2YXIgdD1wKHIpO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGYodGhpcyxyKSx0LmNhbGwodGhpcyx2LCJkeW5hbWljUmVuZGVyIixbImZvcmJpZGRlbiIsInJlcXVpcmVkIl0pfXJldHVybiBsKHIpfShpLk9wdGlvbk9iamVjdCksdGU9ZnVuY3Rpb24oZSl7aChyLGUpO3ZhciB0PXAocik7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZih0aGlzLHIpLHQuY2FsbCh0aGlzLHYsImVtYmVkIil9cmV0dXJuIGwocil9KGkuT3B0aW9uMDEpLHJlPWZ1bmN0aW9uKGUpe2gocixlKTt2YXIgdD1wKHIpO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGYodGhpcyxyKSx0LmNhbGwodGhpcyx2LCJlbmNyeXB0Iil9cmV0dXJuIGwocil9KGkuT3B0aW9uMDEpLG5lPWZ1bmN0aW9uKGUpe2gocixlKTt2YXIgdD1wKHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG47cmV0dXJuIGYodGhpcyxyKSwobj10LmNhbGwodGhpcyx2LCJlbmNyeXB0aW9uIiwhMCkpLmVuY3J5cHQ9bnVsbCxuLmVuY3J5cHRpb25MZXZlbD1udWxsLG4ucGVybWlzc2lvbnM9bnVsbCxufXJldHVybiBsKHIpfShpLlhGQU9iamVjdCksYWU9ZnVuY3Rpb24oZSl7aChyLGUpO3ZhciB0PXAocik7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZih0aGlzLHIpLHQuY2FsbCh0aGlzLHYsImVuY3J5cHRpb25MZXZlbCIsWyI0MGJpdCIsIjEyOGJpdCJdKX1yZXR1cm4gbChyKX0oaS5PcHRpb25PYmplY3QpLGllPWZ1bmN0aW9uKGUpe2gocixlKTt2YXIgdD1wKHIpO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGYodGhpcyxyKSx0LmNhbGwodGhpcyx2LCJlbmZvcmNlIil9cmV0dXJuIGwocil9KGkuU3RyaW5nT2JqZWN0KSxvZT1mdW5jdGlvbihlKXtoKHIsZSk7dmFyIHQ9cChyKTtmdW5jdGlvbiByKGUpe3ZhciBuO3JldHVybiBmKHRoaXMsciksKG49dC5jYWxsKHRoaXMsdiwiZXF1YXRlIikpLmZvcmNlPSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5mb3JjZSxkZWZhdWx0VmFsdWU6MSx2YWxpZGF0ZTpmdW5jdGlvbihlKXtyZXR1cm4gMD09PWV9fSksbi5mcm9tPWUuZnJvbXx8IiIsbi50bz1lLnRvfHwiIixufXJldHVybiBsKHIpfShpLlhGQU9iamVjdCksc2U9ZnVuY3Rpb24oZSl7aChyLGUpO3ZhciB0PXAocik7ZnVuY3Rpb24gcihlKXt2YXIgbjtyZXR1cm4gZih0aGlzLHIpLChuPXQuY2FsbCh0aGlzLHYsImVxdWF0ZVJhbmdlIikpLmZyb209ZS5mcm9tfHwiIixuLnRvPWUudG98fCIiLG4uX3VuaWNvZGVSYW5nZT1lLnVuaWNvZGVSYW5nZXx8IiIsbn1yZXR1cm4gbChyLFt7a2V5OiJ1bmljb2RlUmFuZ2UiLGdldDpmdW5jdGlvbigpe3ZhciBlLHQ9W10scj0vVVwrKFswLTlhLWZBLUZdKykvLG49ZnVuY3Rpb24oZSx0KXt2YXIgcj0idW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlWyJAQGl0ZXJhdG9yIl07aWYoIXIpe2lmKEFycmF5LmlzQXJyYXkoZSl8fChyPWZ1bmN0aW9uKGUsdCl7aWYoZSl7aWYoInN0cmluZyI9PXR5cGVvZiBlKXJldHVybiBjKGUsdCk7dmFyIHI9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO3JldHVybiJPYmplY3QiPT09ciYmZS5jb25zdHJ1Y3RvciYmKHI9ZS5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PXJ8fCJTZXQiPT09cj9BcnJheS5mcm9tKGUpOiJBcmd1bWVudHMiPT09cnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3Qocik/YyhlLHQpOnZvaWQgMH19KGUpKXx8dCYmZSYmIm51bWJlciI9PXR5cGVvZiBlLmxlbmd0aCl7ciYmKGU9cik7dmFyIG49MCxhPWZ1bmN0aW9uKCl7fTtyZXR1cm57czphLG46ZnVuY3Rpb24oKXtyZXR1cm4gbj49ZS5sZW5ndGg/e2RvbmU6ITB9Ontkb25lOiExLHZhbHVlOmVbbisrXX19LGU6ZnVuY3Rpb24oZSl7dGhyb3cgZX0sZjphfX10aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gaXRlcmF0ZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9dmFyIGksbz0hMCxzPSExO3JldHVybntzOmZ1bmN0aW9uKCl7cj1yLmNhbGwoZSl9LG46ZnVuY3Rpb24oKXt2YXIgZT1yLm5leHQoKTtyZXR1cm4gbz1lLmRvbmUsZX0sZTpmdW5jdGlvbihlKXtzPSEwLGk9ZX0sZjpmdW5jdGlvbigpe3RyeXtvfHxudWxsPT1yLnJldHVybnx8ci5yZXR1cm4oKX1maW5hbGx5e2lmKHMpdGhyb3cgaX19fX0odGhpcy5fdW5pY29kZVJhbmdlLnNwbGl0KCIsIikubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZS50cmltKCl9KSkuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4hIWV9KSkpO3RyeXtmb3Iobi5zKCk7IShlPW4ubigpKS5kb25lOyl7dmFyIGE9ZS52YWx1ZTsxPT09KGE9YS5zcGxpdCgiLSIsMikubWFwKChmdW5jdGlvbihlKXt2YXIgdD1lLm1hdGNoKHIpO3JldHVybiB0P3BhcnNlSW50KHRbMV0sMTYpOjB9KSkpLmxlbmd0aCYmYS5wdXNoKGFbMF0pLHQucHVzaChhKX19Y2F0Y2goZSl7bi5lKGUpfWZpbmFsbHl7bi5mKCl9cmV0dXJuKDAscy5zaGFkb3cpKHRoaXMsInVuaWNvZGVSYW5nZSIsdCl9fV0pLHJ9KGkuWEZBT2JqZWN0KSxjZT1mdW5jdGlvbihlKXtoKHIsZSk7dmFyIHQ9cChyKTtmdW5jdGlvbiByKGUpe3JldHVybiBmKHRoaXMsciksdC5jYWxsKHRoaXMsdiwiZXhjbHVkZSIpfXJldHVybiBsKHIsW3trZXk6aS4kZmluYWxpemUsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzW2kuJGNvbnRlbnRdPXRoaXNbaS4kY29udGVudF0udHJpbSgpLnNwbGl0KC9ccysvKS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBlJiZbImNhbGN1bGF0ZSIsImNsb3NlIiwiZW50ZXIiLCJleGl0IiwiaW5pdGlhbGl6ZSIsInJlYWR5IiwidmFsaWRhdGUiXS5pbmNsdWRlcyhlKX0pKX19XSkscn0oaS5Db250ZW50T2JqZWN0KSx1ZT1mdW5jdGlvbihlKXtoKHIsZSk7dmFyIHQ9cChyKTtmdW5jdGlvbiByKGUpe3JldHVybiBmKHRoaXMsciksdC5jYWxsKHRoaXMsdiwiZXhjbHVkZU5TIil9cmV0dXJuIGwocil9KGkuU3RyaW5nT2JqZWN0KSxsZT1mdW5jdGlvbihlKXtoKHIsZSk7dmFyIHQ9cChyKTtmdW5jdGlvbiByKGUpe3JldHVybiBmKHRoaXMsciksdC5jYWxsKHRoaXMsdiwiZmxpcExhYmVsIixbInVzZVByaW50ZXJTZXR0aW5nIiwib24iLCJvZmYiXSl9cmV0dXJuIGwocil9KGkuT3B0aW9uT2JqZWN0KSxmZT1mdW5jdGlvbihlKXtoKHIsZSk7dmFyIHQ9cChyKTtmdW5jdGlvbiByKGUpe3ZhciBuO3JldHVybiBmKHRoaXMsciksKG49dC5jYWxsKHRoaXMsdiwiZm9udEluZm8iLCEwKSkuZW1iZWQ9bnVsbCxuLm1hcD1udWxsLG4uc3Vic2V0QmVsb3c9bnVsbCxuLmFsd2F5c0VtYmVkPW5ldyBpLlhGQU9iamVjdEFycmF5LG4uZGVmYXVsdFR5cGVmYWNlPW5ldyBpLlhGQU9iamVjdEFycmF5LG4ubmV2ZXJFbWJlZD1uZXcgaS5YRkFPYmplY3RBcnJheSxufXJldHVybiBsKHIpfShpLlhGQU9iamVjdCksaGU9ZnVuY3Rpb24oZSl7aChyLGUpO3ZhciB0PXAocik7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZih0aGlzLHIpLHQuY2FsbCh0aGlzLHYsImZvcm1GaWVsZEZpbGxpbmciKX1yZXR1cm4gbChyKX0oaS5PcHRpb24wMSksZGU9ZnVuY3Rpb24oZSl7aChyLGUpO3ZhciB0PXAocik7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZih0aGlzLHIpLHQuY2FsbCh0aGlzLHYsImdyb3VwUGFyZW50Iil9cmV0dXJuIGwocil9KGkuU3RyaW5nT2JqZWN0KSxwZT1mdW5jdGlvbihlKXtoKHIsZSk7dmFyIHQ9cChyKTtmdW5jdGlvbiByKGUpe3JldHVybiBmKHRoaXMsciksdC5jYWxsKHRoaXMsdiwiaWZFbXB0eSIsWyJkYXRhVmFsdWUiLCJkYXRhR3JvdXAiLCJpZ25vcmUiLCJyZW1vdmUiXSl9cmV0dXJuIGwocil9KGkuT3B0aW9uT2JqZWN0KSxnZT1mdW5jdGlvbihlKXtoKHIsZSk7dmFyIHQ9cChyKTtmdW5jdGlvbiByKGUpe3JldHVybiBmKHRoaXMsciksdC5jYWxsKHRoaXMsdiwiaW5jbHVkZVhEUENvbnRlbnQiKX1yZXR1cm4gbChyKX0oaS5TdHJpbmdPYmplY3QpLHZlPWZ1bmN0aW9uKGUpe2gocixlKTt2YXIgdD1wKHIpO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGYodGhpcyxyKSx0LmNhbGwodGhpcyx2LCJpbmNyZW1lbnRhbExvYWQiLFsibm9uZSIsImZvcndhcmRPbmx5Il0pfXJldHVybiBsKHIpfShpLk9wdGlvbk9iamVjdCkseWU9ZnVuY3Rpb24oZSl7aChyLGUpO3ZhciB0PXAocik7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZih0aGlzLHIpLHQuY2FsbCh0aGlzLHYsImluY3JlbWVudGFsTWVyZ2UiKX1yZXR1cm4gbChyKX0oaS5PcHRpb24wMSksbWU9ZnVuY3Rpb24oZSl7aChyLGUpO3ZhciB0PXAocik7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZih0aGlzLHIpLHQuY2FsbCh0aGlzLHYsImludGVyYWN0aXZlIil9cmV0dXJuIGwocil9KGkuT3B0aW9uMDEpLGJlPWZ1bmN0aW9uKGUpe2gocixlKTt2YXIgdD1wKHIpO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGYodGhpcyxyKSx0LmNhbGwodGhpcyx2LCJqb2ciLFsidXNlUHJpbnRlclNldHRpbmciLCJub25lIiwicGFnZVNldCJdKX1yZXR1cm4gbChyKX0oaS5PcHRpb25PYmplY3QpLHdlPWZ1bmN0aW9uKGUpe2gocixlKTt2YXIgdD1wKHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG47cmV0dXJuIGYodGhpcyxyKSwobj10LmNhbGwodGhpcyx2LCJsYWJlbFByaW50ZXIiLCEwKSkubmFtZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5uYW1lLFsienBsIiwiZHBsIiwiaXBsIiwidGNwbCJdKSxuLmJhdGNoT3V0cHV0PW51bGwsbi5mbGlwTGFiZWw9bnVsbCxuLmZvbnRJbmZvPW51bGwsbi54ZGM9bnVsbCxufXJldHVybiBsKHIpfShpLlhGQU9iamVjdCksa2U9ZnVuY3Rpb24oZSl7aChyLGUpO3ZhciB0PXAocik7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZih0aGlzLHIpLHQuY2FsbCh0aGlzLHYsImxheW91dCIsWyJwYWdpbmF0ZSIsInBhbmVsIl0pfXJldHVybiBsKHIpfShpLk9wdGlvbk9iamVjdCksU2U9ZnVuY3Rpb24oZSl7aChyLGUpO3ZhciB0PXAocik7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZih0aGlzLHIpLHQuY2FsbCh0aGlzLHYsImxldmVsIiwwLChmdW5jdGlvbihlKXtyZXR1cm4gZT4wfSkpfXJldHVybiBsKHIpfShpLkludGVnZXJPYmplY3QpLHhlPWZ1bmN0aW9uKGUpe2gocixlKTt2YXIgdD1wKHIpO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGYodGhpcyxyKSx0LmNhbGwodGhpcyx2LCJsaW5lYXJpemVkIil9cmV0dXJuIGwocil9KGkuT3B0aW9uMDEpLE9lPWZ1bmN0aW9uKGUpe2gocixlKTt2YXIgdD1wKHIpO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGYodGhpcyxyKSx0LmNhbGwodGhpcyx2LCJsb2NhbGUiKX1yZXR1cm4gbChyKX0oaS5TdHJpbmdPYmplY3QpLEFlPWZ1bmN0aW9uKGUpe2gocixlKTt2YXIgdD1wKHIpO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGYodGhpcyxyKSx0LmNhbGwodGhpcyx2LCJsb2NhbGVTZXQiKX1yZXR1cm4gbChyKX0oaS5TdHJpbmdPYmplY3QpLENlPWZ1bmN0aW9uKGUpe2gocixlKTt2YXIgdD1wKHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG47cmV0dXJuIGYodGhpcyxyKSwobj10LmNhbGwodGhpcyx2LCJsb2ciLCEwKSkubW9kZT1udWxsLG4udGhyZXNob2xkPW51bGwsbi50bz1udWxsLG4udXJpPW51bGwsbn1yZXR1cm4gbChyKX0oaS5YRkFPYmplY3QpLEZlPWZ1bmN0aW9uKGUpe2gocixlKTt2YXIgdD1wKHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG47cmV0dXJuIGYodGhpcyxyKSwobj10LmNhbGwodGhpcyx2LCJtYXAiLCEwKSkuZXF1YXRlPW5ldyBpLlhGQU9iamVjdEFycmF5LG4uZXF1YXRlUmFuZ2U9bmV3IGkuWEZBT2JqZWN0QXJyYXksbn1yZXR1cm4gbChyKX0oaS5YRkFPYmplY3QpLFBlPWZ1bmN0aW9uKGUpe2gocixlKTt2YXIgdD1wKHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG47cmV0dXJuIGYodGhpcyxyKSwobj10LmNhbGwodGhpcyx2LCJtZWRpdW1JbmZvIiwhMCkpLm1hcD1udWxsLG59cmV0dXJuIGwocil9KGkuWEZBT2JqZWN0KSxUZT1mdW5jdGlvbihlKXtoKHIsZSk7dmFyIHQ9cChyKTtmdW5jdGlvbiByKGUpe3ZhciBuO3JldHVybiBmKHRoaXMsciksKG49dC5jYWxsKHRoaXMsdiwibWVzc2FnZSIsITApKS5tc2dJZD1udWxsLG4uc2V2ZXJpdHk9bnVsbCxufXJldHVybiBsKHIpfShpLlhGQU9iamVjdCksSWU9ZnVuY3Rpb24oZSl7aChyLGUpO3ZhciB0PXAocik7ZnVuY3Rpb24gcihlKXt2YXIgbjtyZXR1cm4gZih0aGlzLHIpLChuPXQuY2FsbCh0aGlzLHYsIm1lc3NhZ2luZyIsITApKS5tZXNzYWdlPW5ldyBpLlhGQU9iamVjdEFycmF5LG59cmV0dXJuIGwocil9KGkuWEZBT2JqZWN0KSxFZT1mdW5jdGlvbihlKXtoKHIsZSk7dmFyIHQ9cChyKTtmdW5jdGlvbiByKGUpe3JldHVybiBmKHRoaXMsciksdC5jYWxsKHRoaXMsdiwibW9kZSIsWyJhcHBlbmQiLCJvdmVyd3JpdGUiXSl9cmV0dXJuIGwocil9KGkuT3B0aW9uT2JqZWN0KSxqZT1mdW5jdGlvbihlKXtoKHIsZSk7dmFyIHQ9cChyKTtmdW5jdGlvbiByKGUpe3JldHVybiBmKHRoaXMsciksdC5jYWxsKHRoaXMsdiwibW9kaWZ5QW5ub3RzIil9cmV0dXJuIGwocil9KGkuT3B0aW9uMDEpLE1lPWZ1bmN0aW9uKGUpe2gocixlKTt2YXIgdD1wKHIpO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGYodGhpcyxyKSx0LmNhbGwodGhpcyx2LCJtc2dJZCIsMSwoZnVuY3Rpb24oZSl7cmV0dXJuIGU+PTF9KSl9cmV0dXJuIGwocil9KGkuSW50ZWdlck9iamVjdCksX2U9ZnVuY3Rpb24oZSl7aChyLGUpO3ZhciB0PXAocik7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZih0aGlzLHIpLHQuY2FsbCh0aGlzLHYsIm5hbWVBdHRyIil9cmV0dXJuIGwocil9KGkuU3RyaW5nT2JqZWN0KSxMZT1mdW5jdGlvbihlKXtoKHIsZSk7dmFyIHQ9cChyKTtmdW5jdGlvbiByKGUpe3JldHVybiBmKHRoaXMsciksdC5jYWxsKHRoaXMsdiwibmV2ZXJFbWJlZCIpfXJldHVybiBsKHIpfShpLkNvbnRlbnRPYmplY3QpLFJlPWZ1bmN0aW9uKGUpe2gocixlKTt2YXIgdD1wKHIpO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGYodGhpcyxyKSx0LmNhbGwodGhpcyx2LCJudW1iZXJPZkNvcGllcyIsbnVsbCwoZnVuY3Rpb24oZSl7cmV0dXJuIGU+PTImJmU8PTV9KSl9cmV0dXJuIGwocil9KGkuSW50ZWdlck9iamVjdCksTmU9ZnVuY3Rpb24oZSl7aChyLGUpO3ZhciB0PXAocik7ZnVuY3Rpb24gcihlKXt2YXIgbjtyZXR1cm4gZih0aGlzLHIpLChuPXQuY2FsbCh0aGlzLHYsIm9wZW5BY3Rpb24iLCEwKSkuZGVzdGluYXRpb249bnVsbCxufXJldHVybiBsKHIpfShpLlhGQU9iamVjdCksRGU9ZnVuY3Rpb24oZSl7aChyLGUpO3ZhciB0PXAocik7ZnVuY3Rpb24gcihlKXt2YXIgbjtyZXR1cm4gZih0aGlzLHIpLChuPXQuY2FsbCh0aGlzLHYsIm91dHB1dCIsITApKS50bz1udWxsLG4udHlwZT1udWxsLG4udXJpPW51bGwsbn1yZXR1cm4gbChyKX0oaS5YRkFPYmplY3QpLEJlPWZ1bmN0aW9uKGUpe2gocixlKTt2YXIgdD1wKHIpO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGYodGhpcyxyKSx0LmNhbGwodGhpcyx2LCJvdXRwdXRCaW4iKX1yZXR1cm4gbChyKX0oaS5TdHJpbmdPYmplY3QpLFVlPWZ1bmN0aW9uKGUpe2gocixlKTt2YXIgdD1wKHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG47cmV0dXJuIGYodGhpcyxyKSwobj10LmNhbGwodGhpcyx2LCJvdXRwdXRYU0wiLCEwKSkudXJpPW51bGwsbn1yZXR1cm4gbChyKX0oaS5YRkFPYmplY3QpLCRlPWZ1bmN0aW9uKGUpe2gocixlKTt2YXIgdD1wKHIpO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGYodGhpcyxyKSx0LmNhbGwodGhpcyx2LCJvdmVycHJpbnQiLFsibm9uZSIsImJvdGgiLCJkcmF3IiwiZmllbGQiXSl9cmV0dXJuIGwocil9KGkuT3B0aW9uT2JqZWN0KSxYZT1mdW5jdGlvbihlKXtoKHIsZSk7dmFyIHQ9cChyKTtmdW5jdGlvbiByKGUpe3JldHVybiBmKHRoaXMsciksdC5jYWxsKHRoaXMsdiwicGFja2V0cyIpfXJldHVybiBsKHIsW3trZXk6aS4kZmluYWxpemUsdmFsdWU6ZnVuY3Rpb24oKXsiKiIhPT10aGlzW2kuJGNvbnRlbnRdJiYodGhpc1tpLiRjb250ZW50XT10aGlzW2kuJGNvbnRlbnRdLnRyaW0oKS5zcGxpdCgvXHMrLykuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm5bImNvbmZpZyIsImRhdGFzZXRzIiwidGVtcGxhdGUiLCJ4ZmRmIiwieHNsdCJdLmluY2x1ZGVzKGUpfSkpKX19XSkscn0oaS5TdHJpbmdPYmplY3QpLEhlPWZ1bmN0aW9uKGUpe2gocixlKTt2YXIgdD1wKHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG47cmV0dXJuIGYodGhpcyxyKSwobj10LmNhbGwodGhpcyx2LCJwYWdlT2Zmc2V0IikpLng9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLngsZGVmYXVsdFZhbHVlOiJ1c2VYRENTZXR0aW5nIix2YWxpZGF0ZTpmdW5jdGlvbihlKXtyZXR1cm4hMH19KSxuLnk9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLnksZGVmYXVsdFZhbHVlOiJ1c2VYRENTZXR0aW5nIix2YWxpZGF0ZTpmdW5jdGlvbihlKXtyZXR1cm4hMH19KSxufXJldHVybiBsKHIpfShpLlhGQU9iamVjdCkscWU9ZnVuY3Rpb24oZSl7aChyLGUpO3ZhciB0PXAocik7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZih0aGlzLHIpLHQuY2FsbCh0aGlzLHYsInBhZ2VSYW5nZSIpfXJldHVybiBsKHIsW3trZXk6aS4kZmluYWxpemUsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIGU9dGhpc1tpLiRjb250ZW50XS50cmltKCkuc3BsaXQoL1xzKy8pLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIHBhcnNlSW50KGUsMTApfSkpLHQ9W10scj0wLG49ZS5sZW5ndGg7cjxuO3IrPTIpdC5wdXNoKGUuc2xpY2UocixyKzIpKTt0aGlzW2kuJGNvbnRlbnRdPXR9fV0pLHJ9KGkuU3RyaW5nT2JqZWN0KSxHZT1mdW5jdGlvbihlKXtoKHIsZSk7dmFyIHQ9cChyKTtmdW5jdGlvbiByKGUpe3JldHVybiBmKHRoaXMsciksdC5jYWxsKHRoaXMsdiwicGFnaW5hdGlvbiIsWyJzaW1wbGV4IiwiZHVwbGV4U2hvcnRFZGdlIiwiZHVwbGV4TG9uZ0VkZ2UiXSl9cmV0dXJuIGwocil9KGkuT3B0aW9uT2JqZWN0KSx6ZT1mdW5jdGlvbihlKXtoKHIsZSk7dmFyIHQ9cChyKTtmdW5jdGlvbiByKGUpe3JldHVybiBmKHRoaXMsciksdC5jYWxsKHRoaXMsdiwicGFnaW5hdGlvbk92ZXJyaWRlIixbIm5vbmUiLCJmb3JjZUR1cGxleCIsImZvcmNlRHVwbGV4TG9uZ0VkZ2UiLCJmb3JjZUR1cGxleFNob3J0RWRnZSIsImZvcmNlU2ltcGxleCJdKX1yZXR1cm4gbChyKX0oaS5PcHRpb25PYmplY3QpLFdlPWZ1bmN0aW9uKGUpe2gocixlKTt2YXIgdD1wKHIpO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGYodGhpcyxyKSx0LmNhbGwodGhpcyx2LCJwYXJ0IiwxLChmdW5jdGlvbihlKXtyZXR1cm4hMX0pKX1yZXR1cm4gbChyKX0oaS5JbnRlZ2VyT2JqZWN0KSxWZT1mdW5jdGlvbihlKXtoKHIsZSk7dmFyIHQ9cChyKTtmdW5jdGlvbiByKGUpe3ZhciBuO3JldHVybiBmKHRoaXMsciksKG49dC5jYWxsKHRoaXMsdiwicGNsIiwhMCkpLm5hbWU9ZS5uYW1lfHwiIixuLmJhdGNoT3V0cHV0PW51bGwsbi5mb250SW5mbz1udWxsLG4uam9nPW51bGwsbi5tZWRpdW1JbmZvPW51bGwsbi5vdXRwdXRCaW49bnVsbCxuLnBhZ2VPZmZzZXQ9bnVsbCxuLnN0YXBsZT1udWxsLG4ueGRjPW51bGwsbn1yZXR1cm4gbChyKX0oaS5YRkFPYmplY3QpLFllPWZ1bmN0aW9uKGUpe2gocixlKTt2YXIgdD1wKHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG47cmV0dXJuIGYodGhpcyxyKSwobj10LmNhbGwodGhpcyx2LCJwZGYiLCEwKSkubmFtZT1lLm5hbWV8fCIiLG4uYWRvYmVFeHRlbnNpb25MZXZlbD1udWxsLG4uYmF0Y2hPdXRwdXQ9bnVsbCxuLmNvbXByZXNzaW9uPW51bGwsbi5jcmVhdG9yPW51bGwsbi5lbmNyeXB0aW9uPW51bGwsbi5mb250SW5mbz1udWxsLG4uaW50ZXJhY3RpdmU9bnVsbCxuLmxpbmVhcml6ZWQ9bnVsbCxuLm9wZW5BY3Rpb249bnVsbCxuLnBkZmE9bnVsbCxuLnByb2R1Y2VyPW51bGwsbi5yZW5kZXJQb2xpY3k9bnVsbCxuLnNjcmlwdE1vZGVsPW51bGwsbi5zaWxlbnRQcmludD1udWxsLG4uc3VibWl0Rm9ybWF0PW51bGwsbi50YWdnZWQ9bnVsbCxuLnZlcnNpb249bnVsbCxuLnZpZXdlclByZWZlcmVuY2VzPW51bGwsbi54ZGM9bnVsbCxufXJldHVybiBsKHIpfShpLlhGQU9iamVjdCksS2U9ZnVuY3Rpb24oZSl7aChyLGUpO3ZhciB0PXAocik7ZnVuY3Rpb24gcihlKXt2YXIgbjtyZXR1cm4gZih0aGlzLHIpLChuPXQuY2FsbCh0aGlzLHYsInBkZmEiLCEwKSkuYW1kPW51bGwsbi5jb25mb3JtYW5jZT1udWxsLG4uaW5jbHVkZVhEUENvbnRlbnQ9bnVsbCxuLnBhcnQ9bnVsbCxufXJldHVybiBsKHIpfShpLlhGQU9iamVjdCksSmU9ZnVuY3Rpb24oZSl7aChyLGUpO3ZhciB0PXAocik7ZnVuY3Rpb24gcihlKXt2YXIgbjtyZXR1cm4gZih0aGlzLHIpLChuPXQuY2FsbCh0aGlzLHYsInBlcm1pc3Npb25zIiwhMCkpLmFjY2Vzc2libGVDb250ZW50PW51bGwsbi5jaGFuZ2U9bnVsbCxuLmNvbnRlbnRDb3B5PW51bGwsbi5kb2N1bWVudEFzc2VtYmx5PW51bGwsbi5mb3JtRmllbGRGaWxsaW5nPW51bGwsbi5tb2RpZnlBbm5vdHM9bnVsbCxuLnBsYWludGV4dE1ldGFkYXRhPW51bGwsbi5wcmludD1udWxsLG4ucHJpbnRIaWdoUXVhbGl0eT1udWxsLG59cmV0dXJuIGwocil9KGkuWEZBT2JqZWN0KSxaZT1mdW5jdGlvbihlKXtoKHIsZSk7dmFyIHQ9cChyKTtmdW5jdGlvbiByKGUpe3JldHVybiBmKHRoaXMsciksdC5jYWxsKHRoaXMsdiwicGlja1RyYXlCeVBERlNpemUiKX1yZXR1cm4gbChyKX0oaS5PcHRpb24wMSksUWU9ZnVuY3Rpb24oZSl7aChyLGUpO3ZhciB0PXAocik7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZih0aGlzLHIpLHQuY2FsbCh0aGlzLHYsInBpY3R1cmUiKX1yZXR1cm4gbChyKX0oaS5TdHJpbmdPYmplY3QpLGV0PWZ1bmN0aW9uKGUpe2gocixlKTt2YXIgdD1wKHIpO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGYodGhpcyxyKSx0LmNhbGwodGhpcyx2LCJwbGFpbnRleHRNZXRhZGF0YSIpfXJldHVybiBsKHIpfShpLk9wdGlvbjAxKSx0dD1mdW5jdGlvbihlKXtoKHIsZSk7dmFyIHQ9cChyKTtmdW5jdGlvbiByKGUpe3JldHVybiBmKHRoaXMsciksdC5jYWxsKHRoaXMsdiwicHJlc2VuY2UiLFsicHJlc2VydmUiLCJkaXNzb2x2ZSIsImRpc3NvbHZlU3RydWN0dXJlIiwiaWdub3JlIiwicmVtb3ZlIl0pfXJldHVybiBsKHIpfShpLk9wdGlvbk9iamVjdCkscnQ9ZnVuY3Rpb24oZSl7aChyLGUpO3ZhciB0PXAocik7ZnVuY3Rpb24gcihlKXt2YXIgbjtyZXR1cm4gZih0aGlzLHIpLChuPXQuY2FsbCh0aGlzLHYsInByZXNlbnQiLCEwKSkuYmVoYXZpb3JPdmVycmlkZT1udWxsLG4uY2FjaGU9bnVsbCxuLmNvbW1vbj1udWxsLG4uY29waWVzPW51bGwsbi5kZXN0aW5hdGlvbj1udWxsLG4uaW5jcmVtZW50YWxNZXJnZT1udWxsLG4ubGF5b3V0PW51bGwsbi5vdXRwdXQ9bnVsbCxuLm92ZXJwcmludD1udWxsLG4ucGFnaW5hdGlvbj1udWxsLG4ucGFnaW5hdGlvbk92ZXJyaWRlPW51bGwsbi5zY3JpcHQ9bnVsbCxuLnZhbGlkYXRlPW51bGwsbi54ZHA9bnVsbCxuLmRyaXZlcj1uZXcgaS5YRkFPYmplY3RBcnJheSxuLmxhYmVsUHJpbnRlcj1uZXcgaS5YRkFPYmplY3RBcnJheSxuLnBjbD1uZXcgaS5YRkFPYmplY3RBcnJheSxuLnBkZj1uZXcgaS5YRkFPYmplY3RBcnJheSxuLnBzPW5ldyBpLlhGQU9iamVjdEFycmF5LG4uc3VibWl0VXJsPW5ldyBpLlhGQU9iamVjdEFycmF5LG4ud2ViQ2xpZW50PW5ldyBpLlhGQU9iamVjdEFycmF5LG4uenBsPW5ldyBpLlhGQU9iamVjdEFycmF5LG59cmV0dXJuIGwocil9KGkuWEZBT2JqZWN0KSxudD1mdW5jdGlvbihlKXtoKHIsZSk7dmFyIHQ9cChyKTtmdW5jdGlvbiByKGUpe3JldHVybiBmKHRoaXMsciksdC5jYWxsKHRoaXMsdiwicHJpbnQiKX1yZXR1cm4gbChyKX0oaS5PcHRpb24wMSksYXQ9ZnVuY3Rpb24oZSl7aChyLGUpO3ZhciB0PXAocik7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZih0aGlzLHIpLHQuY2FsbCh0aGlzLHYsInByaW50SGlnaFF1YWxpdHkiKX1yZXR1cm4gbChyKX0oaS5PcHRpb24wMSksaXQ9ZnVuY3Rpb24oZSl7aChyLGUpO3ZhciB0PXAocik7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZih0aGlzLHIpLHQuY2FsbCh0aGlzLHYsInByaW50U2NhbGluZyIsWyJhcHBkZWZhdWx0Iiwibm9TY2FsaW5nIl0pfXJldHVybiBsKHIpfShpLk9wdGlvbk9iamVjdCksb3Q9ZnVuY3Rpb24oZSl7aChyLGUpO3ZhciB0PXAocik7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZih0aGlzLHIpLHQuY2FsbCh0aGlzLHYsInByaW50ZXJOYW1lIil9cmV0dXJuIGwocil9KGkuU3RyaW5nT2JqZWN0KSxzdD1mdW5jdGlvbihlKXtoKHIsZSk7dmFyIHQ9cChyKTtmdW5jdGlvbiByKGUpe3JldHVybiBmKHRoaXMsciksdC5jYWxsKHRoaXMsdiwicHJvZHVjZXIiKX1yZXR1cm4gbChyKX0oaS5TdHJpbmdPYmplY3QpLGN0PWZ1bmN0aW9uKGUpe2gocixlKTt2YXIgdD1wKHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG47cmV0dXJuIGYodGhpcyxyKSwobj10LmNhbGwodGhpcyx2LCJwcyIsITApKS5uYW1lPWUubmFtZXx8IiIsbi5iYXRjaE91dHB1dD1udWxsLG4uZm9udEluZm89bnVsbCxuLmpvZz1udWxsLG4ubWVkaXVtSW5mbz1udWxsLG4ub3V0cHV0QmluPW51bGwsbi5zdGFwbGU9bnVsbCxuLnhkYz1udWxsLG59cmV0dXJuIGwocil9KGkuWEZBT2JqZWN0KSx1dD1mdW5jdGlvbihlKXtoKHIsZSk7dmFyIHQ9cChyKTtmdW5jdGlvbiByKGUpe3JldHVybiBmKHRoaXMsciksdC5jYWxsKHRoaXMsdiwicmFuZ2UiKX1yZXR1cm4gbChyLFt7a2V5OmkuJGZpbmFsaXplLHZhbHVlOmZ1bmN0aW9uKCl7dGhpc1tpLiRjb250ZW50XT10aGlzW2kuJGNvbnRlbnRdLnRyaW0oKS5zcGxpdCgvXHMqLFxzKi8sMikubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZS5zcGxpdCgiLSIpLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIHBhcnNlSW50KGUudHJpbSgpLDEwKX0pKX0pKS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmV2ZXJ5KChmdW5jdGlvbihlKXtyZXR1cm4haXNOYU4oZSl9KSl9KSkubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gMT09PWUubGVuZ3RoJiZlLnB1c2goZVswXSksZX0pKX19XSkscn0oaS5Db250ZW50T2JqZWN0KSxsdD1mdW5jdGlvbihlKXtoKHIsZSk7dmFyIHQ9cChyKTtmdW5jdGlvbiByKGUpe3JldHVybiBmKHRoaXMsciksdC5jYWxsKHRoaXMsdiwicmVjb3JkIil9cmV0dXJuIGwocixbe2tleTppLiRmaW5hbGl6ZSx2YWx1ZTpmdW5jdGlvbigpe3RoaXNbaS4kY29udGVudF09dGhpc1tpLiRjb250ZW50XS50cmltKCk7dmFyIGU9cGFyc2VJbnQodGhpc1tpLiRjb250ZW50XSwxMCk7IWlzTmFOKGUpJiZlPj0wJiYodGhpc1tpLiRjb250ZW50XT1lKX19XSkscn0oaS5Db250ZW50T2JqZWN0KSxmdD1mdW5jdGlvbihlKXtoKHIsZSk7dmFyIHQ9cChyKTtmdW5jdGlvbiByKGUpe3JldHVybiBmKHRoaXMsciksdC5jYWxsKHRoaXMsdiwicmVsZXZhbnQiKX1yZXR1cm4gbChyLFt7a2V5OmkuJGZpbmFsaXplLHZhbHVlOmZ1bmN0aW9uKCl7dGhpc1tpLiRjb250ZW50XT10aGlzW2kuJGNvbnRlbnRdLnRyaW0oKS5zcGxpdCgvXHMrLyl9fV0pLHJ9KGkuQ29udGVudE9iamVjdCksaHQ9ZnVuY3Rpb24oZSl7aChyLGUpO3ZhciB0PXAocik7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZih0aGlzLHIpLHQuY2FsbCh0aGlzLHYsInJlbmFtZSIpfXJldHVybiBsKHIsW3trZXk6aS4kZmluYWxpemUsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzW2kuJGNvbnRlbnRdPXRoaXNbaS4kY29udGVudF0udHJpbSgpLCh0aGlzW2kuJGNvbnRlbnRdLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aCgieG1sIil8fG5ldyBSZWdFeHAoIltcXHB7TH1fXVtcXHB7TH1cXGQuX1xccHtNfS1dKiIsInUiKS50ZXN0KHRoaXNbaS4kY29udGVudF0pKSYmKDAscy53YXJuKSgiWEZBIC0gUmVuYW1lOiBpbnZhbGlkIFhGQSBuYW1lIil9fV0pLHJ9KGkuQ29udGVudE9iamVjdCksZHQ9ZnVuY3Rpb24oZSl7aChyLGUpO3ZhciB0PXAocik7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZih0aGlzLHIpLHQuY2FsbCh0aGlzLHYsInJlbmRlclBvbGljeSIsWyJzZXJ2ZXIiLCJjbGllbnQiXSl9cmV0dXJuIGwocil9KGkuT3B0aW9uT2JqZWN0KSxwdD1mdW5jdGlvbihlKXtoKHIsZSk7dmFyIHQ9cChyKTtmdW5jdGlvbiByKGUpe3JldHVybiBmKHRoaXMsciksdC5jYWxsKHRoaXMsdiwicnVuU2NyaXB0cyIsWyJib3RoIiwiY2xpZW50Iiwibm9uZSIsInNlcnZlciJdKX1yZXR1cm4gbChyKX0oaS5PcHRpb25PYmplY3QpLGd0PWZ1bmN0aW9uKGUpe2gocixlKTt2YXIgdD1wKHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG47cmV0dXJuIGYodGhpcyxyKSwobj10LmNhbGwodGhpcyx2LCJzY3JpcHQiLCEwKSkuY3VycmVudFBhZ2U9bnVsbCxuLmV4Y2x1ZGU9bnVsbCxuLnJ1blNjcmlwdHM9bnVsbCxufXJldHVybiBsKHIpfShpLlhGQU9iamVjdCksdnQ9ZnVuY3Rpb24oZSl7aChyLGUpO3ZhciB0PXAocik7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZih0aGlzLHIpLHQuY2FsbCh0aGlzLHYsInNjcmlwdE1vZGVsIixbIlhGQSIsIm5vbmUiXSl9cmV0dXJuIGwocil9KGkuT3B0aW9uT2JqZWN0KSx5dD1mdW5jdGlvbihlKXtoKHIsZSk7dmFyIHQ9cChyKTtmdW5jdGlvbiByKGUpe3JldHVybiBmKHRoaXMsciksdC5jYWxsKHRoaXMsdiwic2V2ZXJpdHkiLFsiaWdub3JlIiwiZXJyb3IiLCJpbmZvcm1hdGlvbiIsInRyYWNlIiwid2FybmluZyJdKX1yZXR1cm4gbChyKX0oaS5PcHRpb25PYmplY3QpLG10PWZ1bmN0aW9uKGUpe2gocixlKTt2YXIgdD1wKHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG47cmV0dXJuIGYodGhpcyxyKSwobj10LmNhbGwodGhpcyx2LCJzaWxlbnRQcmludCIsITApKS5hZGRTaWxlbnRQcmludD1udWxsLG4ucHJpbnRlck5hbWU9bnVsbCxufXJldHVybiBsKHIpfShpLlhGQU9iamVjdCksYnQ9ZnVuY3Rpb24oZSl7aChyLGUpO3ZhciB0PXAocik7ZnVuY3Rpb24gcihlKXt2YXIgbjtyZXR1cm4gZih0aGlzLHIpLChuPXQuY2FsbCh0aGlzLHYsInN0YXBsZSIpKS5tb2RlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLm1vZGUsWyJ1c2VQcmludGVyU2V0dGluZyIsIm9uIiwib2ZmIl0pLG59cmV0dXJuIGwocil9KGkuWEZBT2JqZWN0KSx3dD1mdW5jdGlvbihlKXtoKHIsZSk7dmFyIHQ9cChyKTtmdW5jdGlvbiByKGUpe3JldHVybiBmKHRoaXMsciksdC5jYWxsKHRoaXMsdiwic3RhcnROb2RlIil9cmV0dXJuIGwocil9KGkuU3RyaW5nT2JqZWN0KSxrdD1mdW5jdGlvbihlKXtoKHIsZSk7dmFyIHQ9cChyKTtmdW5jdGlvbiByKGUpe3JldHVybiBmKHRoaXMsciksdC5jYWxsKHRoaXMsdiwic3RhcnRQYWdlIiwwLChmdW5jdGlvbihlKXtyZXR1cm4hMH0pKX1yZXR1cm4gbChyKX0oaS5JbnRlZ2VyT2JqZWN0KSxTdD1mdW5jdGlvbihlKXtoKHIsZSk7dmFyIHQ9cChyKTtmdW5jdGlvbiByKGUpe3JldHVybiBmKHRoaXMsciksdC5jYWxsKHRoaXMsdiwic3VibWl0Rm9ybWF0IixbImh0bWwiLCJkZWxlZ2F0ZSIsImZkZiIsInhtbCIsInBkZiJdKX1yZXR1cm4gbChyKX0oaS5PcHRpb25PYmplY3QpLHh0PWZ1bmN0aW9uKGUpe2gocixlKTt2YXIgdD1wKHIpO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGYodGhpcyxyKSx0LmNhbGwodGhpcyx2LCJzdWJtaXRVcmwiKX1yZXR1cm4gbChyKX0oaS5TdHJpbmdPYmplY3QpLE90PWZ1bmN0aW9uKGUpe2gocixlKTt2YXIgdD1wKHIpO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGYodGhpcyxyKSx0LmNhbGwodGhpcyx2LCJzdWJzZXRCZWxvdyIsMTAwLChmdW5jdGlvbihlKXtyZXR1cm4gZT49MCYmZTw9MTAwfSkpfXJldHVybiBsKHIpfShpLkludGVnZXJPYmplY3QpLEF0PWZ1bmN0aW9uKGUpe2gocixlKTt2YXIgdD1wKHIpO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGYodGhpcyxyKSx0LmNhbGwodGhpcyx2LCJzdXBwcmVzc0Jhbm5lciIpfXJldHVybiBsKHIpfShpLk9wdGlvbjAxKSxDdD1mdW5jdGlvbihlKXtoKHIsZSk7dmFyIHQ9cChyKTtmdW5jdGlvbiByKGUpe3JldHVybiBmKHRoaXMsciksdC5jYWxsKHRoaXMsdiwidGFnZ2VkIil9cmV0dXJuIGwocil9KGkuT3B0aW9uMDEpLEZ0PWZ1bmN0aW9uKGUpe2gocixlKTt2YXIgdD1wKHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG47cmV0dXJuIGYodGhpcyxyKSwobj10LmNhbGwodGhpcyx2LCJ0ZW1wbGF0ZSIsITApKS5iYXNlPW51bGwsbi5yZWxldmFudD1udWxsLG4uc3RhcnRQYWdlPW51bGwsbi51cmk9bnVsbCxuLnhzbD1udWxsLG59cmV0dXJuIGwocil9KGkuWEZBT2JqZWN0KSxQdD1mdW5jdGlvbihlKXtoKHIsZSk7dmFyIHQ9cChyKTtmdW5jdGlvbiByKGUpe3JldHVybiBmKHRoaXMsciksdC5jYWxsKHRoaXMsdiwidGhyZXNob2xkIixbInRyYWNlIiwiZXJyb3IiLCJpbmZvcm1hdGlvbiIsIndhcm5pbmciXSl9cmV0dXJuIGwocil9KGkuT3B0aW9uT2JqZWN0KSxUdD1mdW5jdGlvbihlKXtoKHIsZSk7dmFyIHQ9cChyKTtmdW5jdGlvbiByKGUpe3JldHVybiBmKHRoaXMsciksdC5jYWxsKHRoaXMsdiwidG8iLFsibnVsbCIsIm1lbW9yeSIsInN0ZGVyciIsInN0ZG91dCIsInN5c3RlbSIsInVyaSJdKX1yZXR1cm4gbChyKX0oaS5PcHRpb25PYmplY3QpLEl0PWZ1bmN0aW9uKGUpe2gocixlKTt2YXIgdD1wKHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG47cmV0dXJuIGYodGhpcyxyKSwobj10LmNhbGwodGhpcyx2LCJ0ZW1wbGF0ZUNhY2hlIikpLm1heEVudHJpZXM9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLm1heEVudHJpZXMsZGVmYXVsdFZhbHVlOjUsdmFsaWRhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuIGU+PTB9fSksbn1yZXR1cm4gbChyKX0oaS5YRkFPYmplY3QpLEV0PWZ1bmN0aW9uKGUpe2gocixlKTt2YXIgdD1wKHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG47cmV0dXJuIGYodGhpcyxyKSwobj10LmNhbGwodGhpcyx2LCJ0cmFjZSIsITApKS5hcmVhPW5ldyBpLlhGQU9iamVjdEFycmF5LG59cmV0dXJuIGwocil9KGkuWEZBT2JqZWN0KSxqdD1mdW5jdGlvbihlKXtoKHIsZSk7dmFyIHQ9cChyKTtmdW5jdGlvbiByKGUpe3ZhciBuO3JldHVybiBmKHRoaXMsciksKG49dC5jYWxsKHRoaXMsdiwidHJhbnNmb3JtIiwhMCkpLmdyb3VwUGFyZW50PW51bGwsbi5pZkVtcHR5PW51bGwsbi5uYW1lQXR0cj1udWxsLG4ucGljdHVyZT1udWxsLG4ucHJlc2VuY2U9bnVsbCxuLnJlbmFtZT1udWxsLG4ud2hpdGVzcGFjZT1udWxsLG59cmV0dXJuIGwocil9KGkuWEZBT2JqZWN0KSxNdD1mdW5jdGlvbihlKXtoKHIsZSk7dmFyIHQ9cChyKTtmdW5jdGlvbiByKGUpe3JldHVybiBmKHRoaXMsciksdC5jYWxsKHRoaXMsdiwidHlwZSIsWyJub25lIiwiYXNjaWk4NSIsImFzY2lpSGV4IiwiY2NpdHRmYXgiLCJmbGF0ZSIsImx6dyIsInJ1bkxlbmd0aCIsIm5hdGl2ZSIsInhkcCIsIm1lcmdlZFhEUCJdKX1yZXR1cm4gbChyKX0oaS5PcHRpb25PYmplY3QpLF90PWZ1bmN0aW9uKGUpe2gocixlKTt2YXIgdD1wKHIpO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGYodGhpcyxyKSx0LmNhbGwodGhpcyx2LCJ1cmkiKX1yZXR1cm4gbChyKX0oaS5TdHJpbmdPYmplY3QpLEx0PWZ1bmN0aW9uKGUpe2gocixlKTt2YXIgdD1wKHIpO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGYodGhpcyxyKSx0LmNhbGwodGhpcyx2LCJ2YWxpZGF0ZSIsWyJwcmVTdWJtaXQiLCJwcmVQcmludCIsInByZUV4ZWN1dGUiLCJwcmVTYXZlIl0pfXJldHVybiBsKHIpfShpLk9wdGlvbk9iamVjdCksUnQ9ZnVuY3Rpb24oZSl7aChyLGUpO3ZhciB0PXAocik7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZih0aGlzLHIpLHQuY2FsbCh0aGlzLHYsInZhbGlkYXRlQXBwcm92YWxTaWduYXR1cmVzIil9cmV0dXJuIGwocixbe2tleTppLiRmaW5hbGl6ZSx2YWx1ZTpmdW5jdGlvbigpe3RoaXNbaS4kY29udGVudF09dGhpc1tpLiRjb250ZW50XS50cmltKCkuc3BsaXQoL1xzKy8pLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuWyJkb2NSZWFkeSIsInBvc3RTaWduIl0uaW5jbHVkZXMoZSl9KSl9fV0pLHJ9KGkuQ29udGVudE9iamVjdCksTnQ9ZnVuY3Rpb24oZSl7aChyLGUpO3ZhciB0PXAocik7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZih0aGlzLHIpLHQuY2FsbCh0aGlzLHYsInZhbGlkYXRpb25NZXNzYWdpbmciLFsiYWxsTWVzc2FnZXNJbmRpdmlkdWFsbHkiLCJhbGxNZXNzYWdlc1RvZ2V0aGVyIiwiZmlyc3RNZXNzYWdlT25seSIsIm5vTWVzc2FnZXMiXSl9cmV0dXJuIGwocil9KGkuT3B0aW9uT2JqZWN0KSxEdD1mdW5jdGlvbihlKXtoKHIsZSk7dmFyIHQ9cChyKTtmdW5jdGlvbiByKGUpe3JldHVybiBmKHRoaXMsciksdC5jYWxsKHRoaXMsdiwidmVyc2lvbiIsWyIxLjciLCIxLjYiLCIxLjUiLCIxLjQiLCIxLjMiLCIxLjIiXSl9cmV0dXJuIGwocil9KGkuT3B0aW9uT2JqZWN0KSxCdD1mdW5jdGlvbihlKXtoKHIsZSk7dmFyIHQ9cChyKTtmdW5jdGlvbiByKGUpe3ZhciBuO3JldHVybiBmKHRoaXMsciksKG49dC5jYWxsKHRoaXMsdiwiVmVyc2lvbkNvbnRyb2wiKSkub3V0cHV0QmVsb3c9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUub3V0cHV0QmVsb3csWyJ3YXJuIiwiZXJyb3IiLCJ1cGRhdGUiXSksbi5zb3VyY2VBYm92ZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5zb3VyY2VBYm92ZSxbIndhcm4iLCJlcnJvciJdKSxuLnNvdXJjZUJlbG93PSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnNvdXJjZUJlbG93LFsidXBkYXRlIiwibWFpbnRhaW4iXSksbn1yZXR1cm4gbChyKX0oaS5YRkFPYmplY3QpLFV0PWZ1bmN0aW9uKGUpe2gocixlKTt2YXIgdD1wKHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG47cmV0dXJuIGYodGhpcyxyKSwobj10LmNhbGwodGhpcyx2LCJ2aWV3ZXJQcmVmZXJlbmNlcyIsITApKS5BREJFX0pTQ29uc29sZT1udWxsLG4uQURCRV9KU0RlYnVnZ2VyPW51bGwsbi5hZGRWaWV3ZXJQcmVmZXJlbmNlcz1udWxsLG4uZHVwbGV4T3B0aW9uPW51bGwsbi5lbmZvcmNlPW51bGwsbi5udW1iZXJPZkNvcGllcz1udWxsLG4ucGFnZVJhbmdlPW51bGwsbi5waWNrVHJheUJ5UERGU2l6ZT1udWxsLG4ucHJpbnRTY2FsaW5nPW51bGwsbn1yZXR1cm4gbChyKX0oaS5YRkFPYmplY3QpLCR0PWZ1bmN0aW9uKGUpe2gocixlKTt2YXIgdD1wKHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG47cmV0dXJuIGYodGhpcyxyKSwobj10LmNhbGwodGhpcyx2LCJ3ZWJDbGllbnQiLCEwKSkubmFtZT1lLm5hbWU/ZS5uYW1lLnRyaW0oKToiIixuLmZvbnRJbmZvPW51bGwsbi54ZGM9bnVsbCxufXJldHVybiBsKHIpfShpLlhGQU9iamVjdCksWHQ9ZnVuY3Rpb24oZSl7aChyLGUpO3ZhciB0PXAocik7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZih0aGlzLHIpLHQuY2FsbCh0aGlzLHYsIndoaXRlc3BhY2UiLFsicHJlc2VydmUiLCJsdHJpbSIsIm5vcm1hbGl6ZSIsInJ0cmltIiwidHJpbSJdKX1yZXR1cm4gbChyKX0oaS5PcHRpb25PYmplY3QpLEh0PWZ1bmN0aW9uKGUpe2gocixlKTt2YXIgdD1wKHIpO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGYodGhpcyxyKSx0LmNhbGwodGhpcyx2LCJ3aW5kb3ciKX1yZXR1cm4gbChyLFt7a2V5OmkuJGZpbmFsaXplLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpc1tpLiRjb250ZW50XS50cmltKCkuc3BsaXQoL1xzKixccyovLDIpLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIHBhcnNlSW50KGUsMTApfSkpO2Uuc29tZSgoZnVuY3Rpb24oZSl7cmV0dXJuIGlzTmFOKGUpfSkpP3RoaXNbaS4kY29udGVudF09WzAsMF06KDE9PT1lLmxlbmd0aCYmZS5wdXNoKGVbMF0pLHRoaXNbaS4kY29udGVudF09ZSl9fV0pLHJ9KGkuQ29udGVudE9iamVjdCkscXQ9ZnVuY3Rpb24oZSl7aChyLGUpO3ZhciB0PXAocik7ZnVuY3Rpb24gcihlKXt2YXIgbjtyZXR1cm4gZih0aGlzLHIpLChuPXQuY2FsbCh0aGlzLHYsInhkYyIsITApKS51cmk9bmV3IGkuWEZBT2JqZWN0QXJyYXksbi54c2w9bmV3IGkuWEZBT2JqZWN0QXJyYXksbn1yZXR1cm4gbChyKX0oaS5YRkFPYmplY3QpLEd0PWZ1bmN0aW9uKGUpe2gocixlKTt2YXIgdD1wKHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG47cmV0dXJuIGYodGhpcyxyKSwobj10LmNhbGwodGhpcyx2LCJ4ZHAiLCEwKSkucGFja2V0cz1udWxsLG59cmV0dXJuIGwocil9KGkuWEZBT2JqZWN0KSx6dD1mdW5jdGlvbihlKXtoKHIsZSk7dmFyIHQ9cChyKTtmdW5jdGlvbiByKGUpe3ZhciBuO3JldHVybiBmKHRoaXMsciksKG49dC5jYWxsKHRoaXMsdiwieHNsIiwhMCkpLmRlYnVnPW51bGwsbi51cmk9bnVsbCxufXJldHVybiBsKHIpfShpLlhGQU9iamVjdCksV3Q9ZnVuY3Rpb24oZSl7aChyLGUpO3ZhciB0PXAocik7ZnVuY3Rpb24gcihlKXt2YXIgbjtyZXR1cm4gZih0aGlzLHIpLChuPXQuY2FsbCh0aGlzLHYsInpwbCIsITApKS5uYW1lPWUubmFtZT9lLm5hbWUudHJpbSgpOiIiLG4uYmF0Y2hPdXRwdXQ9bnVsbCxuLmZsaXBMYWJlbD1udWxsLG4uZm9udEluZm89bnVsbCxuLnhkYz1udWxsLG59cmV0dXJuIGwocil9KGkuWEZBT2JqZWN0KSxWdD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXtmKHRoaXMsZSl9cmV0dXJuIGwoZSxudWxsLFt7a2V5OmEuJGJ1aWxkWEZBT2JqZWN0LHZhbHVlOmZ1bmN0aW9uKHQscil7aWYoZS5oYXNPd25Qcm9wZXJ0eSh0KSlyZXR1cm4gZVt0XShyKX19LHtrZXk6ImFjcm9iYXQiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgeShlKX19LHtrZXk6ImFjcm9iYXQ3Iix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IG0oZSl9fSx7a2V5OiJBREJFX0pTQ29uc29sZSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBiKGUpfX0se2tleToiQURCRV9KU0RlYnVnZ2VyIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IHcoZSl9fSx7a2V5OiJhZGRTaWxlbnRQcmludCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBrKGUpfX0se2tleToiYWRkVmlld2VyUHJlZmVyZW5jZXMiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgUyhlKX19LHtrZXk6ImFkanVzdERhdGEiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgeChlKX19LHtrZXk6ImFkb2JlRXh0ZW5zaW9uTGV2ZWwiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgTyhlKX19LHtrZXk6ImFnZW50Iix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IEEoZSl9fSx7a2V5OiJhbHdheXNFbWJlZCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBDKGUpfX0se2tleToiYW1kIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IEYoZSl9fSx7a2V5OiJhcmVhIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IFAoZSl9fSx7a2V5OiJhdHRyaWJ1dGVzIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IFQoZSl9fSx7a2V5OiJhdXRvU2F2ZSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBJKGUpfX0se2tleToiYmFzZSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBFKGUpfX0se2tleToiYmF0Y2hPdXRwdXQiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgaihlKX19LHtrZXk6ImJlaGF2aW9yT3ZlcnJpZGUiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgTShlKX19LHtrZXk6ImNhY2hlIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IF8oZSl9fSx7a2V5OiJjaGFuZ2UiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgTChlKX19LHtrZXk6ImNvbW1vbiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBSKGUpfX0se2tleToiY29tcHJlc3MiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgTihlKX19LHtrZXk6ImNvbXByZXNzTG9naWNhbFN0cnVjdHVyZSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBEKGUpfX0se2tleToiY29tcHJlc3NPYmplY3RTdHJlYW0iLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgQihlKX19LHtrZXk6ImNvbXByZXNzaW9uIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IFUoZSl9fSx7a2V5OiJjb25maWciLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgJChlKX19LHtrZXk6ImNvbmZvcm1hbmNlIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IFgoZSl9fSx7a2V5OiJjb250ZW50Q29weSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBIKGUpfX0se2tleToiY29waWVzIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IHEoZSl9fSx7a2V5OiJjcmVhdG9yIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IEcoZSl9fSx7a2V5OiJjdXJyZW50UGFnZSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyB6KGUpfX0se2tleToiZGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBXKGUpfX0se2tleToiZGVidWciLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgVihlKX19LHtrZXk6ImRlZmF1bHRUeXBlZmFjZSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBZKGUpfX0se2tleToiZGVzdGluYXRpb24iLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgSyhlKX19LHtrZXk6ImRvY3VtZW50QXNzZW1ibHkiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgSihlKX19LHtrZXk6ImRyaXZlciIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBaKGUpfX0se2tleToiZHVwbGV4T3B0aW9uIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IFEoZSl9fSx7a2V5OiJkeW5hbWljUmVuZGVyIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IGVlKGUpfX0se2tleToiZW1iZWQiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgdGUoZSl9fSx7a2V5OiJlbmNyeXB0Iix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IHJlKGUpfX0se2tleToiZW5jcnlwdGlvbiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBuZShlKX19LHtrZXk6ImVuY3J5cHRpb25MZXZlbCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBhZShlKX19LHtrZXk6ImVuZm9yY2UiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgaWUoZSl9fSx7a2V5OiJlcXVhdGUiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgb2UoZSl9fSx7a2V5OiJlcXVhdGVSYW5nZSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBzZShlKX19LHtrZXk6ImV4Y2x1ZGUiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgY2UoZSl9fSx7a2V5OiJleGNsdWRlTlMiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgdWUoZSl9fSx7a2V5OiJmbGlwTGFiZWwiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgbGUoZSl9fSx7a2V5OiJmb250SW5mbyIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBmZShlKX19LHtrZXk6ImZvcm1GaWVsZEZpbGxpbmciLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgaGUoZSl9fSx7a2V5OiJncm91cFBhcmVudCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBkZShlKX19LHtrZXk6ImlmRW1wdHkiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgcGUoZSl9fSx7a2V5OiJpbmNsdWRlWERQQ29udGVudCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBnZShlKX19LHtrZXk6ImluY3JlbWVudGFsTG9hZCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyB2ZShlKX19LHtrZXk6ImluY3JlbWVudGFsTWVyZ2UiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgeWUoZSl9fSx7a2V5OiJpbnRlcmFjdGl2ZSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBtZShlKX19LHtrZXk6ImpvZyIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBiZShlKX19LHtrZXk6ImxhYmVsUHJpbnRlciIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyB3ZShlKX19LHtrZXk6ImxheW91dCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBrZShlKX19LHtrZXk6ImxldmVsIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IFNlKGUpfX0se2tleToibGluZWFyaXplZCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyB4ZShlKX19LHtrZXk6ImxvY2FsZSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBPZShlKX19LHtrZXk6ImxvY2FsZVNldCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBBZShlKX19LHtrZXk6ImxvZyIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBDZShlKX19LHtrZXk6Im1hcCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBGZShlKX19LHtrZXk6Im1lZGl1bUluZm8iLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgUGUoZSl9fSx7a2V5OiJtZXNzYWdlIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IFRlKGUpfX0se2tleToibWVzc2FnaW5nIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IEllKGUpfX0se2tleToibW9kZSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBFZShlKX19LHtrZXk6Im1vZGlmeUFubm90cyIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBqZShlKX19LHtrZXk6Im1zZ0lkIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IE1lKGUpfX0se2tleToibmFtZUF0dHIiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgX2UoZSl9fSx7a2V5OiJuZXZlckVtYmVkIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IExlKGUpfX0se2tleToibnVtYmVyT2ZDb3BpZXMiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgUmUoZSl9fSx7a2V5OiJvcGVuQWN0aW9uIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IE5lKGUpfX0se2tleToib3V0cHV0Iix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IERlKGUpfX0se2tleToib3V0cHV0QmluIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IEJlKGUpfX0se2tleToib3V0cHV0WFNMIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IFVlKGUpfX0se2tleToib3ZlcnByaW50Iix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3ICRlKGUpfX0se2tleToicGFja2V0cyIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBYZShlKX19LHtrZXk6InBhZ2VPZmZzZXQiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgSGUoZSl9fSx7a2V5OiJwYWdlUmFuZ2UiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgcWUoZSl9fSx7a2V5OiJwYWdpbmF0aW9uIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IEdlKGUpfX0se2tleToicGFnaW5hdGlvbk92ZXJyaWRlIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IHplKGUpfX0se2tleToicGFydCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBXZShlKX19LHtrZXk6InBjbCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBWZShlKX19LHtrZXk6InBkZiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBZZShlKX19LHtrZXk6InBkZmEiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgS2UoZSl9fSx7a2V5OiJwZXJtaXNzaW9ucyIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBKZShlKX19LHtrZXk6InBpY2tUcmF5QnlQREZTaXplIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IFplKGUpfX0se2tleToicGljdHVyZSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBRZShlKX19LHtrZXk6InBsYWludGV4dE1ldGFkYXRhIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IGV0KGUpfX0se2tleToicHJlc2VuY2UiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgdHQoZSl9fSx7a2V5OiJwcmVzZW50Iix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IHJ0KGUpfX0se2tleToicHJpbnQiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgbnQoZSl9fSx7a2V5OiJwcmludEhpZ2hRdWFsaXR5Iix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IGF0KGUpfX0se2tleToicHJpbnRTY2FsaW5nIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IGl0KGUpfX0se2tleToicHJpbnRlck5hbWUiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgb3QoZSl9fSx7a2V5OiJwcm9kdWNlciIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBzdChlKX19LHtrZXk6InBzIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IGN0KGUpfX0se2tleToicmFuZ2UiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgdXQoZSl9fSx7a2V5OiJyZWNvcmQiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgbHQoZSl9fSx7a2V5OiJyZWxldmFudCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBmdChlKX19LHtrZXk6InJlbmFtZSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBodChlKX19LHtrZXk6InJlbmRlclBvbGljeSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBkdChlKX19LHtrZXk6InJ1blNjcmlwdHMiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgcHQoZSl9fSx7a2V5OiJzY3JpcHQiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgZ3QoZSl9fSx7a2V5OiJzY3JpcHRNb2RlbCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyB2dChlKX19LHtrZXk6InNldmVyaXR5Iix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IHl0KGUpfX0se2tleToic2lsZW50UHJpbnQiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgbXQoZSl9fSx7a2V5OiJzdGFwbGUiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgYnQoZSl9fSx7a2V5OiJzdGFydE5vZGUiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgd3QoZSl9fSx7a2V5OiJzdGFydFBhZ2UiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcga3QoZSl9fSx7a2V5OiJzdWJtaXRGb3JtYXQiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgU3QoZSl9fSx7a2V5OiJzdWJtaXRVcmwiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgeHQoZSl9fSx7a2V5OiJzdWJzZXRCZWxvdyIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBPdChlKX19LHtrZXk6InN1cHByZXNzQmFubmVyIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IEF0KGUpfX0se2tleToidGFnZ2VkIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IEN0KGUpfX0se2tleToidGVtcGxhdGUiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgRnQoZSl9fSx7a2V5OiJ0ZW1wbGF0ZUNhY2hlIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IEl0KGUpfX0se2tleToidGhyZXNob2xkIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IFB0KGUpfX0se2tleToidG8iLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgVHQoZSl9fSx7a2V5OiJ0cmFjZSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBFdChlKX19LHtrZXk6InRyYW5zZm9ybSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBqdChlKX19LHtrZXk6InR5cGUiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgTXQoZSl9fSx7a2V5OiJ1cmkiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgX3QoZSl9fSx7a2V5OiJ2YWxpZGF0ZSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBMdChlKX19LHtrZXk6InZhbGlkYXRlQXBwcm92YWxTaWduYXR1cmVzIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IFJ0KGUpfX0se2tleToidmFsaWRhdGlvbk1lc3NhZ2luZyIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBOdChlKX19LHtrZXk6InZlcnNpb24iLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgRHQoZSl9fSx7a2V5OiJ2ZXJzaW9uQ29udHJvbCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBCdChlKX19LHtrZXk6InZpZXdlclByZWZlcmVuY2VzIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IFV0KGUpfX0se2tleToid2ViQ2xpZW50Iix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3ICR0KGUpfX0se2tleToid2hpdGVzcGFjZSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBYdChlKX19LHtrZXk6IndpbmRvdyIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBIdChlKX19LHtrZXk6InhkYyIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBxdChlKX19LHtrZXk6InhkcCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBHdChlKX19LHtrZXk6InhzbCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyB6dChlKX19LHtrZXk6InpwbCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBXdChlKX19XSksZX0oKTt0LkNvbmZpZ05hbWVzcGFjZT1WdH0sKGUsdCxyKT0+e2Z1bmN0aW9uIG4oZSl7cmV0dXJuIG49ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGV9LG4oZSl9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuQ29ubmVjdGlvblNldE5hbWVzcGFjZT12b2lkIDA7dmFyIGE9cigyMDgpLGk9cigyMDYpO2Z1bmN0aW9uIG8oZSx0KXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIGE9dFtyXTthLmVudW1lcmFibGU9YS5lbnVtZXJhYmxlfHwhMSxhLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gYSYmKGEud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCh2b2lkIDAsaT1mdW5jdGlvbihlLHQpe2lmKCJvYmplY3QiIT09bihlKXx8bnVsbD09PWUpcmV0dXJuIGU7dmFyIHI9ZVtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PXIpe3ZhciBhPXIuY2FsbChlLCJzdHJpbmciKTtpZigib2JqZWN0IiE9PW4oYSkpcmV0dXJuIGE7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4gU3RyaW5nKGUpfShhLmtleSksInN5bWJvbCI9PT1uKGkpP2k6U3RyaW5nKGkpKSxhKX12YXIgaX1mdW5jdGlvbiBzKGUsdCxyKXtyZXR1cm4gdCYmbyhlLnByb3RvdHlwZSx0KSxyJiZvKGUsciksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZX1mdW5jdGlvbiBjKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gdShlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSx0JiZsKGUsdCl9ZnVuY3Rpb24gbChlLHQpe3JldHVybiBsPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuX19wcm90b19fPXQsZX0sbChlLHQpfWZ1bmN0aW9uIGYoZSl7dmFyIHQ9ZnVuY3Rpb24oKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdClyZXR1cm4hMTtpZihSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLChmdW5jdGlvbigpe30pKSksITB9Y2F0Y2goZSl7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciByLGE9aChlKTtpZih0KXt2YXIgaT1oKHRoaXMpLmNvbnN0cnVjdG9yO3I9UmVmbGVjdC5jb25zdHJ1Y3QoYSxhcmd1bWVudHMsaSl9ZWxzZSByPWEuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBmdW5jdGlvbihlLHQpe2lmKHQmJigib2JqZWN0Ij09PW4odCl8fCJmdW5jdGlvbiI9PXR5cGVvZiB0KSlyZXR1cm4gdDtpZih2b2lkIDAhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKHZvaWQgMD09PWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZX0oZSl9KHRoaXMscil9fWZ1bmN0aW9uIGgoZSl7cmV0dXJuIGg9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSl9LGgoZSl9dmFyIGQ9YS5OYW1lc3BhY2VJZHMuY29ubmVjdGlvblNldC5pZCxwPWZ1bmN0aW9uKGUpe3UocixlKTt2YXIgdD1mKHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG47cmV0dXJuIGModGhpcyxyKSwobj10LmNhbGwodGhpcyxkLCJjb25uZWN0aW9uU2V0IiwhMCkpLndzZGxDb25uZWN0aW9uPW5ldyBpLlhGQU9iamVjdEFycmF5LG4ueG1sQ29ubmVjdGlvbj1uZXcgaS5YRkFPYmplY3RBcnJheSxuLnhzZENvbm5lY3Rpb249bmV3IGkuWEZBT2JqZWN0QXJyYXksbn1yZXR1cm4gcyhyKX0oaS5YRkFPYmplY3QpLGc9ZnVuY3Rpb24oZSl7dShyLGUpO3ZhciB0PWYocik7ZnVuY3Rpb24gcihlKXt2YXIgbjtyZXR1cm4gYyh0aGlzLHIpLChuPXQuY2FsbCh0aGlzLGQsImVmZmVjdGl2ZUlucHV0UG9saWN5IikpLmlkPWUuaWR8fCIiLG4ubmFtZT1lLm5hbWV8fCIiLG4udXNlPWUudXNlfHwiIixuLnVzZWhyZWY9ZS51c2VocmVmfHwiIixufXJldHVybiBzKHIpfShpLlhGQU9iamVjdCksdj1mdW5jdGlvbihlKXt1KHIsZSk7dmFyIHQ9ZihyKTtmdW5jdGlvbiByKGUpe3ZhciBuO3JldHVybiBjKHRoaXMsciksKG49dC5jYWxsKHRoaXMsZCwiZWZmZWN0aXZlT3V0cHV0UG9saWN5IikpLmlkPWUuaWR8fCIiLG4ubmFtZT1lLm5hbWV8fCIiLG4udXNlPWUudXNlfHwiIixuLnVzZWhyZWY9ZS51c2VocmVmfHwiIixufXJldHVybiBzKHIpfShpLlhGQU9iamVjdCkseT1mdW5jdGlvbihlKXt1KHIsZSk7dmFyIHQ9ZihyKTtmdW5jdGlvbiByKGUpe3ZhciBuO3JldHVybiBjKHRoaXMsciksKG49dC5jYWxsKHRoaXMsZCwib3BlcmF0aW9uIikpLmlkPWUuaWR8fCIiLG4uaW5wdXQ9ZS5pbnB1dHx8IiIsbi5uYW1lPWUubmFtZXx8IiIsbi5vdXRwdXQ9ZS5vdXRwdXR8fCIiLG4udXNlPWUudXNlfHwiIixuLnVzZWhyZWY9ZS51c2VocmVmfHwiIixufXJldHVybiBzKHIpfShpLlN0cmluZ09iamVjdCksbT1mdW5jdGlvbihlKXt1KHIsZSk7dmFyIHQ9ZihyKTtmdW5jdGlvbiByKGUpe3ZhciBuO3JldHVybiBjKHRoaXMsciksKG49dC5jYWxsKHRoaXMsZCwicm9vdEVsZW1lbnQiKSkuaWQ9ZS5pZHx8IiIsbi5uYW1lPWUubmFtZXx8IiIsbi51c2U9ZS51c2V8fCIiLG4udXNlaHJlZj1lLnVzZWhyZWZ8fCIiLG59cmV0dXJuIHMocil9KGkuU3RyaW5nT2JqZWN0KSxiPWZ1bmN0aW9uKGUpe3UocixlKTt2YXIgdD1mKHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG47cmV0dXJuIGModGhpcyxyKSwobj10LmNhbGwodGhpcyxkLCJzb2FwQWN0aW9uIikpLmlkPWUuaWR8fCIiLG4ubmFtZT1lLm5hbWV8fCIiLG4udXNlPWUudXNlfHwiIixuLnVzZWhyZWY9ZS51c2VocmVmfHwiIixufXJldHVybiBzKHIpfShpLlN0cmluZ09iamVjdCksdz1mdW5jdGlvbihlKXt1KHIsZSk7dmFyIHQ9ZihyKTtmdW5jdGlvbiByKGUpe3ZhciBuO3JldHVybiBjKHRoaXMsciksKG49dC5jYWxsKHRoaXMsZCwic29hcEFkZHJlc3MiKSkuaWQ9ZS5pZHx8IiIsbi5uYW1lPWUubmFtZXx8IiIsbi51c2U9ZS51c2V8fCIiLG4udXNlaHJlZj1lLnVzZWhyZWZ8fCIiLG59cmV0dXJuIHMocil9KGkuU3RyaW5nT2JqZWN0KSxrPWZ1bmN0aW9uKGUpe3UocixlKTt2YXIgdD1mKHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG47cmV0dXJuIGModGhpcyxyKSwobj10LmNhbGwodGhpcyxkLCJ1cmkiKSkuaWQ9ZS5pZHx8IiIsbi5uYW1lPWUubmFtZXx8IiIsbi51c2U9ZS51c2V8fCIiLG4udXNlaHJlZj1lLnVzZWhyZWZ8fCIiLG59cmV0dXJuIHMocil9KGkuU3RyaW5nT2JqZWN0KSxTPWZ1bmN0aW9uKGUpe3UocixlKTt2YXIgdD1mKHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG47cmV0dXJuIGModGhpcyxyKSwobj10LmNhbGwodGhpcyxkLCJ3c2RsQWRkcmVzcyIpKS5pZD1lLmlkfHwiIixuLm5hbWU9ZS5uYW1lfHwiIixuLnVzZT1lLnVzZXx8IiIsbi51c2VocmVmPWUudXNlaHJlZnx8IiIsbn1yZXR1cm4gcyhyKX0oaS5TdHJpbmdPYmplY3QpLHg9ZnVuY3Rpb24oZSl7dShyLGUpO3ZhciB0PWYocik7ZnVuY3Rpb24gcihlKXt2YXIgbjtyZXR1cm4gYyh0aGlzLHIpLChuPXQuY2FsbCh0aGlzLGQsIndzZGxDb25uZWN0aW9uIiwhMCkpLmRhdGFEZXNjcmlwdGlvbj1lLmRhdGFEZXNjcmlwdGlvbnx8IiIsbi5uYW1lPWUubmFtZXx8IiIsbi5lZmZlY3RpdmVJbnB1dFBvbGljeT1udWxsLG4uZWZmZWN0aXZlT3V0cHV0UG9saWN5PW51bGwsbi5vcGVyYXRpb249bnVsbCxuLnNvYXBBY3Rpb249bnVsbCxuLnNvYXBBZGRyZXNzPW51bGwsbi53c2RsQWRkcmVzcz1udWxsLG59cmV0dXJuIHMocil9KGkuWEZBT2JqZWN0KSxPPWZ1bmN0aW9uKGUpe3UocixlKTt2YXIgdD1mKHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG47cmV0dXJuIGModGhpcyxyKSwobj10LmNhbGwodGhpcyxkLCJ4bWxDb25uZWN0aW9uIiwhMCkpLmRhdGFEZXNjcmlwdGlvbj1lLmRhdGFEZXNjcmlwdGlvbnx8IiIsbi5uYW1lPWUubmFtZXx8IiIsbi51cmk9bnVsbCxufXJldHVybiBzKHIpfShpLlhGQU9iamVjdCksQT1mdW5jdGlvbihlKXt1KHIsZSk7dmFyIHQ9ZihyKTtmdW5jdGlvbiByKGUpe3ZhciBuO3JldHVybiBjKHRoaXMsciksKG49dC5jYWxsKHRoaXMsZCwieHNkQ29ubmVjdGlvbiIsITApKS5kYXRhRGVzY3JpcHRpb249ZS5kYXRhRGVzY3JpcHRpb258fCIiLG4ubmFtZT1lLm5hbWV8fCIiLG4ucm9vdEVsZW1lbnQ9bnVsbCxuLnVyaT1udWxsLG59cmV0dXJuIHMocil9KGkuWEZBT2JqZWN0KSxDPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe2ModGhpcyxlKX1yZXR1cm4gcyhlLG51bGwsW3trZXk6YS4kYnVpbGRYRkFPYmplY3QsdmFsdWU6ZnVuY3Rpb24odCxyKXtpZihlLmhhc093blByb3BlcnR5KHQpKXJldHVybiBlW3RdKHIpfX0se2tleToiY29ubmVjdGlvblNldCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBwKGUpfX0se2tleToiZWZmZWN0aXZlSW5wdXRQb2xpY3kiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgZyhlKX19LHtrZXk6ImVmZmVjdGl2ZU91dHB1dFBvbGljeSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyB2KGUpfX0se2tleToib3BlcmF0aW9uIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IHkoZSl9fSx7a2V5OiJyb290RWxlbWVudCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBtKGUpfX0se2tleToic29hcEFjdGlvbiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBiKGUpfX0se2tleToic29hcEFkZHJlc3MiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgdyhlKX19LHtrZXk6InVyaSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBrKGUpfX0se2tleToid3NkbEFkZHJlc3MiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgUyhlKX19LHtrZXk6IndzZGxDb25uZWN0aW9uIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IHgoZSl9fSx7a2V5OiJ4bWxDb25uZWN0aW9uIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IE8oZSl9fSx7a2V5OiJ4c2RDb25uZWN0aW9uIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IEEoZSl9fV0pLGV9KCk7dC5Db25uZWN0aW9uU2V0TmFtZXNwYWNlPUN9LChlLHQscik9PntmdW5jdGlvbiBuKGUpe3JldHVybiBuPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSxuKGUpfU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LkRhdGFzZXRzTmFtZXNwYWNlPXZvaWQgMDt2YXIgYT1yKDIwNiksaT1yKDIwOCk7ZnVuY3Rpb24gbyhlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIHMoZSx0KXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIGE9dFtyXTthLmVudW1lcmFibGU9YS5lbnVtZXJhYmxlfHwhMSxhLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gYSYmKGEud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCh2b2lkIDAsaT1mdW5jdGlvbihlLHQpe2lmKCJvYmplY3QiIT09bihlKXx8bnVsbD09PWUpcmV0dXJuIGU7dmFyIHI9ZVtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PXIpe3ZhciBhPXIuY2FsbChlLCJzdHJpbmciKTtpZigib2JqZWN0IiE9PW4oYSkpcmV0dXJuIGE7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4gU3RyaW5nKGUpfShhLmtleSksInN5bWJvbCI9PT1uKGkpP2k6U3RyaW5nKGkpKSxhKX12YXIgaX1mdW5jdGlvbiBjKGUsdCxyKXtyZXR1cm4gdCYmcyhlLnByb3RvdHlwZSx0KSxyJiZzKGUsciksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZX1mdW5jdGlvbiB1KGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLHQmJmwoZSx0KX1mdW5jdGlvbiBsKGUsdCl7cmV0dXJuIGw9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5fX3Byb3RvX189dCxlfSxsKGUsdCl9ZnVuY3Rpb24gZihlKXt2YXIgdD1mdW5jdGlvbigpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0KXJldHVybiExO2lmKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sKGZ1bmN0aW9uKCl7fSkpKSwhMH1jYXRjaChlKXtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHIsYT1oKGUpO2lmKHQpe3ZhciBpPWgodGhpcykuY29uc3RydWN0b3I7cj1SZWZsZWN0LmNvbnN0cnVjdChhLGFyZ3VtZW50cyxpKX1lbHNlIHI9YS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYodCYmKCJvYmplY3QiPT09bih0KXx8ImZ1bmN0aW9uIj09dHlwZW9mIHQpKXJldHVybiB0O2lmKHZvaWQgMCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24oZSl7aWYodm9pZCAwPT09ZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBlfShlKX0odGhpcyxyKX19ZnVuY3Rpb24gaChlKXtyZXR1cm4gaD1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihlKXtyZXR1cm4gZS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihlKX0saChlKX12YXIgZD1pLk5hbWVzcGFjZUlkcy5kYXRhc2V0cy5pZCxwPWZ1bmN0aW9uKGUpe3UocixlKTt2YXIgdD1mKHIpO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIG8odGhpcyxyKSx0LmNhbGwodGhpcyxkLCJkYXRhIixlKX1yZXR1cm4gYyhyLFt7a2V5OmEuJGlzTnNBZ25vc3RpYyx2YWx1ZTpmdW5jdGlvbigpe3JldHVybiEwfX1dKSxyfShhLlhtbE9iamVjdCksZz1mdW5jdGlvbihlKXt1KHIsZSk7dmFyIHQ9ZihyKTtmdW5jdGlvbiByKGUpe3ZhciBuO3JldHVybiBvKHRoaXMsciksKG49dC5jYWxsKHRoaXMsZCwiZGF0YXNldHMiLCEwKSkuZGF0YT1udWxsLG4uU2lnbmF0dXJlPW51bGwsbn1yZXR1cm4gYyhyLFt7a2V5OmEuJG9uQ2hpbGQsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZVthLiRub2RlTmFtZV07KCJkYXRhIj09PXQmJmVbYS4kbmFtZXNwYWNlSWRdPT09ZHx8IlNpZ25hdHVyZSI9PT10JiZlW2EuJG5hbWVzcGFjZUlkXT09PWkuTmFtZXNwYWNlSWRzLnNpZ25hdHVyZS5pZCkmJih0aGlzW3RdPWUpLHRoaXNbYS4kYXBwZW5kQ2hpbGRdKGUpfX1dKSxyfShhLlhGQU9iamVjdCksdj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXtvKHRoaXMsZSl9cmV0dXJuIGMoZSxudWxsLFt7a2V5OmkuJGJ1aWxkWEZBT2JqZWN0LHZhbHVlOmZ1bmN0aW9uKHQscil7aWYoZS5oYXNPd25Qcm9wZXJ0eSh0KSlyZXR1cm4gZVt0XShyKX19LHtrZXk6ImRhdGFzZXRzIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IGcoZSl9fSx7a2V5OiJkYXRhIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IHAoZSl9fV0pLGV9KCk7dC5EYXRhc2V0c05hbWVzcGFjZT12fSwoZSx0LHIpPT57ZnVuY3Rpb24gbihlKXtyZXR1cm4gbj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZX0sbihlKX1PYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5Mb2NhbGVTZXROYW1lc3BhY2U9dm9pZCAwO3ZhciBhPXIoMjA4KSxpPXIoMjA2KSxvPXIoMjA3KTtmdW5jdGlvbiBzKGUsdCl7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBhPXRbcl07YS5lbnVtZXJhYmxlPWEuZW51bWVyYWJsZXx8ITEsYS5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGEmJihhLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwodm9pZCAwLGk9ZnVuY3Rpb24oZSx0KXtpZigib2JqZWN0IiE9PW4oZSl8fG51bGw9PT1lKXJldHVybiBlO3ZhciByPWVbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1yKXt2YXIgYT1yLmNhbGwoZSwic3RyaW5nIik7aWYoIm9iamVjdCIhPT1uKGEpKXJldHVybiBhO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuIFN0cmluZyhlKX0oYS5rZXkpLCJzeW1ib2wiPT09bihpKT9pOlN0cmluZyhpKSksYSl9dmFyIGl9ZnVuY3Rpb24gYyhlLHQscil7cmV0dXJuIHQmJnMoZS5wcm90b3R5cGUsdCksciYmcyhlLHIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGV9ZnVuY3Rpb24gdShlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIGwoZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksdCYmZihlLHQpfWZ1bmN0aW9uIGYoZSx0KXtyZXR1cm4gZj1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihlLHQpe3JldHVybiBlLl9fcHJvdG9fXz10LGV9LGYoZSx0KX1mdW5jdGlvbiBoKGUpe3ZhciB0PWZ1bmN0aW9uKCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3QpcmV0dXJuITE7aWYoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSwoZnVuY3Rpb24oKXt9KSkpLCEwfWNhdGNoKGUpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcixhPWQoZSk7aWYodCl7dmFyIGk9ZCh0aGlzKS5jb25zdHJ1Y3RvcjtyPVJlZmxlY3QuY29uc3RydWN0KGEsYXJndW1lbnRzLGkpfWVsc2Ugcj1hLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZnVuY3Rpb24oZSx0KXtpZih0JiYoIm9iamVjdCI9PT1uKHQpfHwiZnVuY3Rpb24iPT10eXBlb2YgdCkpcmV0dXJuIHQ7aWYodm9pZCAwIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBmdW5jdGlvbihlKXtpZih2b2lkIDA9PT1lKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGV9KGUpfSh0aGlzLHIpfX1mdW5jdGlvbiBkKGUpe3JldHVybiBkPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGUpe3JldHVybiBlLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpfSxkKGUpfXZhciBwPWEuTmFtZXNwYWNlSWRzLmxvY2FsZVNldC5pZCxnPWZ1bmN0aW9uKGUpe2wocixlKTt2YXIgdD1oKHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG47cmV0dXJuIHUodGhpcyxyKSwobj10LmNhbGwodGhpcyxwLCJjYWxlbmRhclN5bWJvbHMiLCEwKSkubmFtZT0iZ3JlZ29yaWFuIixuLmRheU5hbWVzPW5ldyBpLlhGQU9iamVjdEFycmF5KDIpLG4uZXJhTmFtZXM9bnVsbCxuLm1lcmlkaWVtTmFtZXM9bnVsbCxuLm1vbnRoTmFtZXM9bmV3IGkuWEZBT2JqZWN0QXJyYXkoMiksbn1yZXR1cm4gYyhyKX0oaS5YRkFPYmplY3QpLHY9ZnVuY3Rpb24oZSl7bChyLGUpO3ZhciB0PWgocik7ZnVuY3Rpb24gcihlKXt2YXIgbjtyZXR1cm4gdSh0aGlzLHIpLChuPXQuY2FsbCh0aGlzLHAsImN1cnJlbmN5U3ltYm9sIikpLm5hbWU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUubmFtZSxbInN5bWJvbCIsImlzb25hbWUiLCJkZWNpbWFsIl0pLG59cmV0dXJuIGMocil9KGkuU3RyaW5nT2JqZWN0KSx5PWZ1bmN0aW9uKGUpe2wocixlKTt2YXIgdD1oKHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG47cmV0dXJuIHUodGhpcyxyKSwobj10LmNhbGwodGhpcyxwLCJjdXJyZW5jeVN5bWJvbHMiLCEwKSkuY3VycmVuY3lTeW1ib2w9bmV3IGkuWEZBT2JqZWN0QXJyYXkoMyksbn1yZXR1cm4gYyhyKX0oaS5YRkFPYmplY3QpLG09ZnVuY3Rpb24oZSl7bChyLGUpO3ZhciB0PWgocik7ZnVuY3Rpb24gcihlKXt2YXIgbjtyZXR1cm4gdSh0aGlzLHIpLChuPXQuY2FsbCh0aGlzLHAsImRhdGVQYXR0ZXJuIikpLm5hbWU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUubmFtZSxbImZ1bGwiLCJsb25nIiwibWVkIiwic2hvcnQiXSksbn1yZXR1cm4gYyhyKX0oaS5TdHJpbmdPYmplY3QpLGI9ZnVuY3Rpb24oZSl7bChyLGUpO3ZhciB0PWgocik7ZnVuY3Rpb24gcihlKXt2YXIgbjtyZXR1cm4gdSh0aGlzLHIpLChuPXQuY2FsbCh0aGlzLHAsImRhdGVQYXR0ZXJucyIsITApKS5kYXRlUGF0dGVybj1uZXcgaS5YRkFPYmplY3RBcnJheSg0KSxufXJldHVybiBjKHIpfShpLlhGQU9iamVjdCksdz1mdW5jdGlvbihlKXtsKHIsZSk7dmFyIHQ9aChyKTtmdW5jdGlvbiByKGUpe3JldHVybiB1KHRoaXMsciksdC5jYWxsKHRoaXMscCwiZGF0ZVRpbWVTeW1ib2xzIil9cmV0dXJuIGMocil9KGkuQ29udGVudE9iamVjdCksaz1mdW5jdGlvbihlKXtsKHIsZSk7dmFyIHQ9aChyKTtmdW5jdGlvbiByKGUpe3JldHVybiB1KHRoaXMsciksdC5jYWxsKHRoaXMscCwiZGF5Iil9cmV0dXJuIGMocil9KGkuU3RyaW5nT2JqZWN0KSxTPWZ1bmN0aW9uKGUpe2wocixlKTt2YXIgdD1oKHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG47cmV0dXJuIHUodGhpcyxyKSwobj10LmNhbGwodGhpcyxwLCJkYXlOYW1lcyIsITApKS5hYmJyPSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5hYmJyLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmZ1bmN0aW9uKGUpe3JldHVybiAxPT09ZX19KSxuLmRheT1uZXcgaS5YRkFPYmplY3RBcnJheSg3KSxufXJldHVybiBjKHIpfShpLlhGQU9iamVjdCkseD1mdW5jdGlvbihlKXtsKHIsZSk7dmFyIHQ9aChyKTtmdW5jdGlvbiByKGUpe3JldHVybiB1KHRoaXMsciksdC5jYWxsKHRoaXMscCwiZXJhIil9cmV0dXJuIGMocil9KGkuU3RyaW5nT2JqZWN0KSxPPWZ1bmN0aW9uKGUpe2wocixlKTt2YXIgdD1oKHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG47cmV0dXJuIHUodGhpcyxyKSwobj10LmNhbGwodGhpcyxwLCJlcmFOYW1lcyIsITApKS5lcmE9bmV3IGkuWEZBT2JqZWN0QXJyYXkoMiksbn1yZXR1cm4gYyhyKX0oaS5YRkFPYmplY3QpLEE9ZnVuY3Rpb24oZSl7bChyLGUpO3ZhciB0PWgocik7ZnVuY3Rpb24gcihlKXt2YXIgbjtyZXR1cm4gdSh0aGlzLHIpLChuPXQuY2FsbCh0aGlzLHAsImxvY2FsZSIsITApKS5kZXNjPWUuZGVzY3x8IiIsbi5uYW1lPSJpc29uYW1lIixuLmNhbGVuZGFyU3ltYm9scz1udWxsLG4uY3VycmVuY3lTeW1ib2xzPW51bGwsbi5kYXRlUGF0dGVybnM9bnVsbCxuLmRhdGVUaW1lU3ltYm9scz1udWxsLG4ubnVtYmVyUGF0dGVybnM9bnVsbCxuLm51bWJlclN5bWJvbHM9bnVsbCxuLnRpbWVQYXR0ZXJucz1udWxsLG4udHlwZUZhY2VzPW51bGwsbn1yZXR1cm4gYyhyKX0oaS5YRkFPYmplY3QpLEM9ZnVuY3Rpb24oZSl7bChyLGUpO3ZhciB0PWgocik7ZnVuY3Rpb24gcihlKXt2YXIgbjtyZXR1cm4gdSh0aGlzLHIpLChuPXQuY2FsbCh0aGlzLHAsImxvY2FsZVNldCIsITApKS5sb2NhbGU9bmV3IGkuWEZBT2JqZWN0QXJyYXksbn1yZXR1cm4gYyhyKX0oaS5YRkFPYmplY3QpLEY9ZnVuY3Rpb24oZSl7bChyLGUpO3ZhciB0PWgocik7ZnVuY3Rpb24gcihlKXtyZXR1cm4gdSh0aGlzLHIpLHQuY2FsbCh0aGlzLHAsIm1lcmlkaWVtIil9cmV0dXJuIGMocil9KGkuU3RyaW5nT2JqZWN0KSxQPWZ1bmN0aW9uKGUpe2wocixlKTt2YXIgdD1oKHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG47cmV0dXJuIHUodGhpcyxyKSwobj10LmNhbGwodGhpcyxwLCJtZXJpZGllbU5hbWVzIiwhMCkpLm1lcmlkaWVtPW5ldyBpLlhGQU9iamVjdEFycmF5KDIpLG59cmV0dXJuIGMocil9KGkuWEZBT2JqZWN0KSxUPWZ1bmN0aW9uKGUpe2wocixlKTt2YXIgdD1oKHIpO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIHUodGhpcyxyKSx0LmNhbGwodGhpcyxwLCJtb250aCIpfXJldHVybiBjKHIpfShpLlN0cmluZ09iamVjdCksST1mdW5jdGlvbihlKXtsKHIsZSk7dmFyIHQ9aChyKTtmdW5jdGlvbiByKGUpe3ZhciBuO3JldHVybiB1KHRoaXMsciksKG49dC5jYWxsKHRoaXMscCwibW9udGhOYW1lcyIsITApKS5hYmJyPSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5hYmJyLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmZ1bmN0aW9uKGUpe3JldHVybiAxPT09ZX19KSxuLm1vbnRoPW5ldyBpLlhGQU9iamVjdEFycmF5KDEyKSxufXJldHVybiBjKHIpfShpLlhGQU9iamVjdCksRT1mdW5jdGlvbihlKXtsKHIsZSk7dmFyIHQ9aChyKTtmdW5jdGlvbiByKGUpe3ZhciBuO3JldHVybiB1KHRoaXMsciksKG49dC5jYWxsKHRoaXMscCwibnVtYmVyUGF0dGVybiIpKS5uYW1lPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLm5hbWUsWyJmdWxsIiwibG9uZyIsIm1lZCIsInNob3J0Il0pLG59cmV0dXJuIGMocil9KGkuU3RyaW5nT2JqZWN0KSxqPWZ1bmN0aW9uKGUpe2wocixlKTt2YXIgdD1oKHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG47cmV0dXJuIHUodGhpcyxyKSwobj10LmNhbGwodGhpcyxwLCJudW1iZXJQYXR0ZXJucyIsITApKS5udW1iZXJQYXR0ZXJuPW5ldyBpLlhGQU9iamVjdEFycmF5KDQpLG59cmV0dXJuIGMocil9KGkuWEZBT2JqZWN0KSxNPWZ1bmN0aW9uKGUpe2wocixlKTt2YXIgdD1oKHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG47cmV0dXJuIHUodGhpcyxyKSwobj10LmNhbGwodGhpcyxwLCJudW1iZXJTeW1ib2wiKSkubmFtZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5uYW1lLFsiZGVjaW1hbCIsImdyb3VwaW5nIiwicGVyY2VudCIsIm1pbnVzIiwiemVybyJdKSxufXJldHVybiBjKHIpfShpLlN0cmluZ09iamVjdCksXz1mdW5jdGlvbihlKXtsKHIsZSk7dmFyIHQ9aChyKTtmdW5jdGlvbiByKGUpe3ZhciBuO3JldHVybiB1KHRoaXMsciksKG49dC5jYWxsKHRoaXMscCwibnVtYmVyU3ltYm9scyIsITApKS5udW1iZXJTeW1ib2w9bmV3IGkuWEZBT2JqZWN0QXJyYXkoNSksbn1yZXR1cm4gYyhyKX0oaS5YRkFPYmplY3QpLEw9ZnVuY3Rpb24oZSl7bChyLGUpO3ZhciB0PWgocik7ZnVuY3Rpb24gcihlKXt2YXIgbjtyZXR1cm4gdSh0aGlzLHIpLChuPXQuY2FsbCh0aGlzLHAsInRpbWVQYXR0ZXJuIikpLm5hbWU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUubmFtZSxbImZ1bGwiLCJsb25nIiwibWVkIiwic2hvcnQiXSksbn1yZXR1cm4gYyhyKX0oaS5TdHJpbmdPYmplY3QpLFI9ZnVuY3Rpb24oZSl7bChyLGUpO3ZhciB0PWgocik7ZnVuY3Rpb24gcihlKXt2YXIgbjtyZXR1cm4gdSh0aGlzLHIpLChuPXQuY2FsbCh0aGlzLHAsInRpbWVQYXR0ZXJucyIsITApKS50aW1lUGF0dGVybj1uZXcgaS5YRkFPYmplY3RBcnJheSg0KSxufXJldHVybiBjKHIpfShpLlhGQU9iamVjdCksTj1mdW5jdGlvbihlKXtsKHIsZSk7dmFyIHQ9aChyKTtmdW5jdGlvbiByKGUpe3ZhciBuO3JldHVybiB1KHRoaXMsciksKG49dC5jYWxsKHRoaXMscCwidHlwZUZhY2UiLCEwKSkubmFtZT0iInxlLm5hbWUsbn1yZXR1cm4gYyhyKX0oaS5YRkFPYmplY3QpLEQ9ZnVuY3Rpb24oZSl7bChyLGUpO3ZhciB0PWgocik7ZnVuY3Rpb24gcihlKXt2YXIgbjtyZXR1cm4gdSh0aGlzLHIpLChuPXQuY2FsbCh0aGlzLHAsInR5cGVGYWNlcyIsITApKS50eXBlRmFjZT1uZXcgaS5YRkFPYmplY3RBcnJheSxufXJldHVybiBjKHIpfShpLlhGQU9iamVjdCksQj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXt1KHRoaXMsZSl9cmV0dXJuIGMoZSxudWxsLFt7a2V5OmEuJGJ1aWxkWEZBT2JqZWN0LHZhbHVlOmZ1bmN0aW9uKHQscil7aWYoZS5oYXNPd25Qcm9wZXJ0eSh0KSlyZXR1cm4gZVt0XShyKX19LHtrZXk6ImNhbGVuZGFyU3ltYm9scyIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBnKGUpfX0se2tleToiY3VycmVuY3lTeW1ib2wiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgdihlKX19LHtrZXk6ImN1cnJlbmN5U3ltYm9scyIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyB5KGUpfX0se2tleToiZGF0ZVBhdHRlcm4iLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgbShlKX19LHtrZXk6ImRhdGVQYXR0ZXJucyIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBiKGUpfX0se2tleToiZGF0ZVRpbWVTeW1ib2xzIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IHcoZSl9fSx7a2V5OiJkYXkiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgayhlKX19LHtrZXk6ImRheU5hbWVzIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IFMoZSl9fSx7a2V5OiJlcmEiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgeChlKX19LHtrZXk6ImVyYU5hbWVzIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IE8oZSl9fSx7a2V5OiJsb2NhbGUiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgQShlKX19LHtrZXk6ImxvY2FsZVNldCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBDKGUpfX0se2tleToibWVyaWRpZW0iLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgRihlKX19LHtrZXk6Im1lcmlkaWVtTmFtZXMiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgUChlKX19LHtrZXk6Im1vbnRoIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IFQoZSl9fSx7a2V5OiJtb250aE5hbWVzIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IEkoZSl9fSx7a2V5OiJudW1iZXJQYXR0ZXJuIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IEUoZSl9fSx7a2V5OiJudW1iZXJQYXR0ZXJucyIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBqKGUpfX0se2tleToibnVtYmVyU3ltYm9sIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IE0oZSl9fSx7a2V5OiJudW1iZXJTeW1ib2xzIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IF8oZSl9fSx7a2V5OiJ0aW1lUGF0dGVybiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBMKGUpfX0se2tleToidGltZVBhdHRlcm5zIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IFIoZSl9fSx7a2V5OiJ0eXBlRmFjZSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBOKGUpfX0se2tleToidHlwZUZhY2VzIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IEQoZSl9fV0pLGV9KCk7dC5Mb2NhbGVTZXROYW1lc3BhY2U9Qn0sKGUsdCxyKT0+e2Z1bmN0aW9uIG4oZSl7cmV0dXJuIG49ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGV9LG4oZSl9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuU2lnbmF0dXJlTmFtZXNwYWNlPXZvaWQgMDt2YXIgYT1yKDIwOCksaT1yKDIwNik7ZnVuY3Rpb24gbyhlLHQpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgYT10W3JdO2EuZW51bWVyYWJsZT1hLmVudW1lcmFibGV8fCExLGEuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBhJiYoYS53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsKHZvaWQgMCxpPWZ1bmN0aW9uKGUsdCl7aWYoIm9iamVjdCIhPT1uKGUpfHxudWxsPT09ZSlyZXR1cm4gZTt2YXIgcj1lW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09cil7dmFyIGE9ci5jYWxsKGUsInN0cmluZyIpO2lmKCJvYmplY3QiIT09bihhKSlyZXR1cm4gYTt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybiBTdHJpbmcoZSl9KGEua2V5KSwic3ltYm9sIj09PW4oaSk/aTpTdHJpbmcoaSkpLGEpfXZhciBpfWZ1bmN0aW9uIHMoZSx0LHIpe3JldHVybiB0JiZvKGUucHJvdG90eXBlLHQpLHImJm8oZSxyKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxlfWZ1bmN0aW9uIGMoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiB1KGUsdCl7cmV0dXJuIHU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5fX3Byb3RvX189dCxlfSx1KGUsdCl9ZnVuY3Rpb24gbChlKXtyZXR1cm4gbD1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihlKXtyZXR1cm4gZS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihlKX0sbChlKX12YXIgZj1hLk5hbWVzcGFjZUlkcy5zaWduYXR1cmUuaWQsaD1mdW5jdGlvbihlKXshZnVuY3Rpb24oZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksdCYmdShlLHQpfShpLGUpO3ZhciB0LHIsYT0odD1pLHI9ZnVuY3Rpb24oKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdClyZXR1cm4hMTtpZihSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLChmdW5jdGlvbigpe30pKSksITB9Y2F0Y2goZSl7cmV0dXJuITF9fSgpLGZ1bmN0aW9uKCl7dmFyIGUsYT1sKHQpO2lmKHIpe3ZhciBpPWwodGhpcykuY29uc3RydWN0b3I7ZT1SZWZsZWN0LmNvbnN0cnVjdChhLGFyZ3VtZW50cyxpKX1lbHNlIGU9YS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYodCYmKCJvYmplY3QiPT09bih0KXx8ImZ1bmN0aW9uIj09dHlwZW9mIHQpKXJldHVybiB0O2lmKHZvaWQgMCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24oZSl7aWYodm9pZCAwPT09ZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBlfShlKX0odGhpcyxlKX0pO2Z1bmN0aW9uIGkoZSl7cmV0dXJuIGModGhpcyxpKSxhLmNhbGwodGhpcyxmLCJzaWduYXR1cmUiLCEwKX1yZXR1cm4gcyhpKX0oaS5YRkFPYmplY3QpLGQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7Yyh0aGlzLGUpfXJldHVybiBzKGUsbnVsbCxbe2tleTphLiRidWlsZFhGQU9iamVjdCx2YWx1ZTpmdW5jdGlvbih0LHIpe2lmKGUuaGFzT3duUHJvcGVydHkodCkpcmV0dXJuIGVbdF0ocil9fSx7a2V5OiJzaWduYXR1cmUiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgaChlKX19XSksZX0oKTt0LlNpZ25hdHVyZU5hbWVzcGFjZT1kfSwoZSx0LHIpPT57ZnVuY3Rpb24gbihlKXtyZXR1cm4gbj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZX0sbihlKX1PYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5TdHlsZXNoZWV0TmFtZXNwYWNlPXZvaWQgMDt2YXIgYT1yKDIwOCksaT1yKDIwNik7ZnVuY3Rpb24gbyhlLHQpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgYT10W3JdO2EuZW51bWVyYWJsZT1hLmVudW1lcmFibGV8fCExLGEuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBhJiYoYS53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsKHZvaWQgMCxpPWZ1bmN0aW9uKGUsdCl7aWYoIm9iamVjdCIhPT1uKGUpfHxudWxsPT09ZSlyZXR1cm4gZTt2YXIgcj1lW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09cil7dmFyIGE9ci5jYWxsKGUsInN0cmluZyIpO2lmKCJvYmplY3QiIT09bihhKSlyZXR1cm4gYTt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybiBTdHJpbmcoZSl9KGEua2V5KSwic3ltYm9sIj09PW4oaSk/aTpTdHJpbmcoaSkpLGEpfXZhciBpfWZ1bmN0aW9uIHMoZSx0LHIpe3JldHVybiB0JiZvKGUucHJvdG90eXBlLHQpLHImJm8oZSxyKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxlfWZ1bmN0aW9uIGMoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiB1KGUsdCl7cmV0dXJuIHU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5fX3Byb3RvX189dCxlfSx1KGUsdCl9ZnVuY3Rpb24gbChlKXtyZXR1cm4gbD1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihlKXtyZXR1cm4gZS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihlKX0sbChlKX12YXIgZj1hLk5hbWVzcGFjZUlkcy5zdHlsZXNoZWV0LmlkLGg9ZnVuY3Rpb24oZSl7IWZ1bmN0aW9uKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLHQmJnUoZSx0KX0oaSxlKTt2YXIgdCxyLGE9KHQ9aSxyPWZ1bmN0aW9uKCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3QpcmV0dXJuITE7aWYoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSwoZnVuY3Rpb24oKXt9KSkpLCEwfWNhdGNoKGUpe3JldHVybiExfX0oKSxmdW5jdGlvbigpe3ZhciBlLGE9bCh0KTtpZihyKXt2YXIgaT1sKHRoaXMpLmNvbnN0cnVjdG9yO2U9UmVmbGVjdC5jb25zdHJ1Y3QoYSxhcmd1bWVudHMsaSl9ZWxzZSBlPWEuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBmdW5jdGlvbihlLHQpe2lmKHQmJigib2JqZWN0Ij09PW4odCl8fCJmdW5jdGlvbiI9PXR5cGVvZiB0KSlyZXR1cm4gdDtpZih2b2lkIDAhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKHZvaWQgMD09PWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZX0oZSl9KHRoaXMsZSl9KTtmdW5jdGlvbiBpKGUpe3JldHVybiBjKHRoaXMsaSksYS5jYWxsKHRoaXMsZiwic3R5bGVzaGVldCIsITApfXJldHVybiBzKGkpfShpLlhGQU9iamVjdCksZD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXtjKHRoaXMsZSl9cmV0dXJuIHMoZSxudWxsLFt7a2V5OmEuJGJ1aWxkWEZBT2JqZWN0LHZhbHVlOmZ1bmN0aW9uKHQscil7aWYoZS5oYXNPd25Qcm9wZXJ0eSh0KSlyZXR1cm4gZVt0XShyKX19LHtrZXk6InN0eWxlc2hlZXQiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgaChlKX19XSksZX0oKTt0LlN0eWxlc2hlZXROYW1lc3BhY2U9ZH0sKGUsdCxyKT0+e2Z1bmN0aW9uIG4oZSl7cmV0dXJuIG49ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGV9LG4oZSl9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuWGRwTmFtZXNwYWNlPXZvaWQgMDt2YXIgYT1yKDIwOCksaT1yKDIwNik7ZnVuY3Rpb24gbyhlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIHMoZSx0KXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIGE9dFtyXTthLmVudW1lcmFibGU9YS5lbnVtZXJhYmxlfHwhMSxhLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gYSYmKGEud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCh2b2lkIDAsaT1mdW5jdGlvbihlLHQpe2lmKCJvYmplY3QiIT09bihlKXx8bnVsbD09PWUpcmV0dXJuIGU7dmFyIHI9ZVtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PXIpe3ZhciBhPXIuY2FsbChlLCJzdHJpbmciKTtpZigib2JqZWN0IiE9PW4oYSkpcmV0dXJuIGE7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4gU3RyaW5nKGUpfShhLmtleSksInN5bWJvbCI9PT1uKGkpP2k6U3RyaW5nKGkpKSxhKX12YXIgaX1mdW5jdGlvbiBjKGUsdCxyKXtyZXR1cm4gdCYmcyhlLnByb3RvdHlwZSx0KSxyJiZzKGUsciksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZX1mdW5jdGlvbiB1KGUsdCl7cmV0dXJuIHU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5fX3Byb3RvX189dCxlfSx1KGUsdCl9ZnVuY3Rpb24gbChlKXtyZXR1cm4gbD1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihlKXtyZXR1cm4gZS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihlKX0sbChlKX12YXIgZj1hLk5hbWVzcGFjZUlkcy54ZHAuaWQsaD1mdW5jdGlvbihlKXshZnVuY3Rpb24oZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksdCYmdShlLHQpfShoLGUpO3ZhciB0LHIscz0odD1oLHI9ZnVuY3Rpb24oKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdClyZXR1cm4hMTtpZihSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLChmdW5jdGlvbigpe30pKSksITB9Y2F0Y2goZSl7cmV0dXJuITF9fSgpLGZ1bmN0aW9uKCl7dmFyIGUsYT1sKHQpO2lmKHIpe3ZhciBpPWwodGhpcykuY29uc3RydWN0b3I7ZT1SZWZsZWN0LmNvbnN0cnVjdChhLGFyZ3VtZW50cyxpKX1lbHNlIGU9YS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYodCYmKCJvYmplY3QiPT09bih0KXx8ImZ1bmN0aW9uIj09dHlwZW9mIHQpKXJldHVybiB0O2lmKHZvaWQgMCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24oZSl7aWYodm9pZCAwPT09ZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBlfShlKX0odGhpcyxlKX0pO2Z1bmN0aW9uIGgoZSl7dmFyIHQ7cmV0dXJuIG8odGhpcyxoKSwodD1zLmNhbGwodGhpcyxmLCJ4ZHAiLCEwKSkudXVpZD1lLnV1aWR8fCIiLHQudGltZVN0YW1wPWUudGltZVN0YW1wfHwiIix0LmNvbmZpZz1udWxsLHQuY29ubmVjdGlvblNldD1udWxsLHQuZGF0YXNldHM9bnVsbCx0LmxvY2FsZVNldD1udWxsLHQuc3R5bGVzaGVldD1uZXcgaS5YRkFPYmplY3RBcnJheSx0LnRlbXBsYXRlPW51bGwsdH1yZXR1cm4gYyhoLFt7a2V5OmkuJG9uQ2hpbGRDaGVjayx2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1hLk5hbWVzcGFjZUlkc1tlW2kuJG5vZGVOYW1lXV07cmV0dXJuIHQmJmVbaS4kbmFtZXNwYWNlSWRdPT09dC5pZH19XSksaH0oaS5YRkFPYmplY3QpLGQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7byh0aGlzLGUpfXJldHVybiBjKGUsbnVsbCxbe2tleTphLiRidWlsZFhGQU9iamVjdCx2YWx1ZTpmdW5jdGlvbih0LHIpe2lmKGUuaGFzT3duUHJvcGVydHkodCkpcmV0dXJuIGVbdF0ocil9fSx7a2V5OiJ4ZHAiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgaChlKX19XSksZX0oKTt0LlhkcE5hbWVzcGFjZT1kfSwoZSx0LHIpPT57ZnVuY3Rpb24gbihlKXtyZXR1cm4gbj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZX0sbihlKX1PYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5YaHRtbE5hbWVzcGFjZT12b2lkIDA7dmFyIGE9cigyMDYpLGk9cigyMDgpLG89cigyMTMpLHM9cigyMDcpO2Z1bmN0aW9uIGMoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiB1KGUsdCl7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBhPXRbcl07YS5lbnVtZXJhYmxlPWEuZW51bWVyYWJsZXx8ITEsYS5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGEmJihhLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwodm9pZCAwLGk9ZnVuY3Rpb24oZSx0KXtpZigib2JqZWN0IiE9PW4oZSl8fG51bGw9PT1lKXJldHVybiBlO3ZhciByPWVbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1yKXt2YXIgYT1yLmNhbGwoZSwic3RyaW5nIik7aWYoIm9iamVjdCIhPT1uKGEpKXJldHVybiBhO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuIFN0cmluZyhlKX0oYS5rZXkpLCJzeW1ib2wiPT09bihpKT9pOlN0cmluZyhpKSksYSl9dmFyIGl9ZnVuY3Rpb24gbChlLHQscil7cmV0dXJuIHQmJnUoZS5wcm90b3R5cGUsdCksciYmdShlLHIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGV9ZnVuY3Rpb24gZigpe3JldHVybiBmPSJ1bmRlZmluZWQiIT10eXBlb2YgUmVmbGVjdCYmUmVmbGVjdC5nZXQ/UmVmbGVjdC5nZXQuYmluZCgpOmZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1mdW5jdGlvbihlLHQpe2Zvcig7IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHQpJiZudWxsIT09KGU9ZyhlKSk7KTtyZXR1cm4gZX0oZSx0KTtpZihuKXt2YXIgYT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCk7cmV0dXJuIGEuZ2V0P2EuZ2V0LmNhbGwoYXJndW1lbnRzLmxlbmd0aDwzP2U6cik6YS52YWx1ZX19LGYuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIGgoZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksdCYmZChlLHQpfWZ1bmN0aW9uIGQoZSx0KXtyZXR1cm4gZD1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihlLHQpe3JldHVybiBlLl9fcHJvdG9fXz10LGV9LGQoZSx0KX1mdW5jdGlvbiBwKGUpe3ZhciB0PWZ1bmN0aW9uKCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3QpcmV0dXJuITE7aWYoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSwoZnVuY3Rpb24oKXt9KSkpLCEwfWNhdGNoKGUpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcixhPWcoZSk7aWYodCl7dmFyIGk9Zyh0aGlzKS5jb25zdHJ1Y3RvcjtyPVJlZmxlY3QuY29uc3RydWN0KGEsYXJndW1lbnRzLGkpfWVsc2Ugcj1hLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZnVuY3Rpb24oZSx0KXtpZih0JiYoIm9iamVjdCI9PT1uKHQpfHwiZnVuY3Rpb24iPT10eXBlb2YgdCkpcmV0dXJuIHQ7aWYodm9pZCAwIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBmdW5jdGlvbihlKXtpZih2b2lkIDA9PT1lKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGV9KGUpfSh0aGlzLHIpfX1mdW5jdGlvbiBnKGUpe3JldHVybiBnPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGUpe3JldHVybiBlLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpfSxnKGUpfWZ1bmN0aW9uIHYoZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIHI9bnVsbD09ZT9udWxsOiJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbIkBAaXRlcmF0b3IiXTtpZihudWxsIT1yKXt2YXIgbixhLGksbyxzPVtdLGM9ITAsdT0hMTt0cnl7aWYoaT0ocj1yLmNhbGwoZSkpLm5leHQsMD09PXQpe2lmKE9iamVjdChyKSE9PXIpcmV0dXJuO2M9ITF9ZWxzZSBmb3IoOyEoYz0obj1pLmNhbGwocikpLmRvbmUpJiYocy5wdXNoKG4udmFsdWUpLHMubGVuZ3RoIT09dCk7Yz0hMCk7fWNhdGNoKGUpe3U9ITAsYT1lfWZpbmFsbHl7dHJ5e2lmKCFjJiZudWxsIT1yLnJldHVybiYmKG89ci5yZXR1cm4oKSxPYmplY3QobykhPT1vKSlyZXR1cm59ZmluYWxseXtpZih1KXRocm93IGF9fXJldHVybiBzfX0oZSx0KXx8bShlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24geShlLHQpe3ZhciByPSJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbIkBAaXRlcmF0b3IiXTtpZighcil7aWYoQXJyYXkuaXNBcnJheShlKXx8KHI9bShlKSl8fHQmJmUmJiJudW1iZXIiPT10eXBlb2YgZS5sZW5ndGgpe3ImJihlPXIpO3ZhciBuPTAsYT1mdW5jdGlvbigpe307cmV0dXJue3M6YSxuOmZ1bmN0aW9uKCl7cmV0dXJuIG4+PWUubGVuZ3RoP3tkb25lOiEwfTp7ZG9uZTohMSx2YWx1ZTplW24rK119fSxlOmZ1bmN0aW9uKGUpe3Rocm93IGV9LGY6YX19dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGl0ZXJhdGUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfXZhciBpLG89ITAscz0hMTtyZXR1cm57czpmdW5jdGlvbigpe3I9ci5jYWxsKGUpfSxuOmZ1bmN0aW9uKCl7dmFyIGU9ci5uZXh0KCk7cmV0dXJuIG89ZS5kb25lLGV9LGU6ZnVuY3Rpb24oZSl7cz0hMCxpPWV9LGY6ZnVuY3Rpb24oKXt0cnl7b3x8bnVsbD09ci5yZXR1cm58fHIucmV0dXJuKCl9ZmluYWxseXtpZihzKXRocm93IGl9fX19ZnVuY3Rpb24gbShlLHQpe2lmKGUpe2lmKCJzdHJpbmciPT10eXBlb2YgZSlyZXR1cm4gYihlLHQpO3ZhciByPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtyZXR1cm4iT2JqZWN0Ij09PXImJmUuY29uc3RydWN0b3ImJihyPWUuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1yfHwiU2V0Ij09PXI/QXJyYXkuZnJvbShlKToiQXJndW1lbnRzIj09PXJ8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KHIpP2IoZSx0KTp2b2lkIDB9fWZ1bmN0aW9uIGIoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIHI9MCxuPW5ldyBBcnJheSh0KTtyPHQ7cisrKW5bcl09ZVtyXTtyZXR1cm4gbn12YXIgdz1pLk5hbWVzcGFjZUlkcy54aHRtbC5pZCxrPVN5bWJvbCgpLFM9bmV3IFNldChbImNvbG9yIiwiZm9udCIsImZvbnQtZmFtaWx5IiwiZm9udC1zaXplIiwiZm9udC1zdHJldGNoIiwiZm9udC1zdHlsZSIsImZvbnQtd2VpZ2h0IiwibWFyZ2luIiwibWFyZ2luLWJvdHRvbSIsIm1hcmdpbi1sZWZ0IiwibWFyZ2luLXJpZ2h0IiwibWFyZ2luLXRvcCIsImxldHRlci1zcGFjaW5nIiwibGluZS1oZWlnaHQiLCJvcnBoYW5zIiwicGFnZS1icmVhay1hZnRlciIsInBhZ2UtYnJlYWstYmVmb3JlIiwicGFnZS1icmVhay1pbnNpZGUiLCJ0YWItaW50ZXJ2YWwiLCJ0YWItc3RvcCIsInRleHQtYWxpZ24iLCJ0ZXh0LWRlY29yYXRpb24iLCJ0ZXh0LWluZGVudCIsInZlcnRpY2FsLWFsaWduIiwid2lkb3dzIiwia2VybmluZy1tb2RlIiwieGZhLWZvbnQtaG9yaXpvbnRhbC1zY2FsZSIsInhmYS1mb250LXZlcnRpY2FsLXNjYWxlIiwieGZhLXNwYWNlcnVuIiwieGZhLXRhYi1zdG9wcyJdKSx4PW5ldyBNYXAoW1sicGFnZS1icmVhay1hZnRlciIsImJyZWFrQWZ0ZXIiXSxbInBhZ2UtYnJlYWstYmVmb3JlIiwiYnJlYWtCZWZvcmUiXSxbInBhZ2UtYnJlYWstaW5zaWRlIiwiYnJlYWtJbnNpZGUiXSxbImtlcm5pbmctbW9kZSIsZnVuY3Rpb24oZSl7cmV0dXJuIm5vbmUiPT09ZT8ibm9uZSI6Im5vcm1hbCJ9XSxbInhmYS1mb250LWhvcml6b250YWwtc2NhbGUiLGZ1bmN0aW9uKGUpe3JldHVybiJzY2FsZVgoIi5jb25jYXQoTWF0aC5tYXgoMCxNYXRoLm1pbihwYXJzZUludChlKS8xMDApKS50b0ZpeGVkKDIpLCIpIil9XSxbInhmYS1mb250LXZlcnRpY2FsLXNjYWxlIixmdW5jdGlvbihlKXtyZXR1cm4ic2NhbGVZKCIuY29uY2F0KE1hdGgubWF4KDAsTWF0aC5taW4ocGFyc2VJbnQoZSkvMTAwKSkudG9GaXhlZCgyKSwiKSIpfV0sWyJ4ZmEtc3BhY2VydW4iLCIiXSxbInhmYS10YWItc3RvcHMiLCIiXSxbImZvbnQtc2l6ZSIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT10LmZvbnRTaXplPSgwLHMuZ2V0TWVhc3VyZW1lbnQpKGUpLCgwLG8ubWVhc3VyZVRvU3RyaW5nKSguOTkqZSl9XSxbImxldHRlci1zcGFjaW5nIixmdW5jdGlvbihlKXtyZXR1cm4oMCxvLm1lYXN1cmVUb1N0cmluZykoKDAscy5nZXRNZWFzdXJlbWVudCkoZSkpfV0sWyJsaW5lLWhlaWdodCIsZnVuY3Rpb24oZSl7cmV0dXJuKDAsby5tZWFzdXJlVG9TdHJpbmcpKCgwLHMuZ2V0TWVhc3VyZW1lbnQpKGUpKX1dLFsibWFyZ2luIixmdW5jdGlvbihlKXtyZXR1cm4oMCxvLm1lYXN1cmVUb1N0cmluZykoKDAscy5nZXRNZWFzdXJlbWVudCkoZSkpfV0sWyJtYXJnaW4tYm90dG9tIixmdW5jdGlvbihlKXtyZXR1cm4oMCxvLm1lYXN1cmVUb1N0cmluZykoKDAscy5nZXRNZWFzdXJlbWVudCkoZSkpfV0sWyJtYXJnaW4tbGVmdCIsZnVuY3Rpb24oZSl7cmV0dXJuKDAsby5tZWFzdXJlVG9TdHJpbmcpKCgwLHMuZ2V0TWVhc3VyZW1lbnQpKGUpKX1dLFsibWFyZ2luLXJpZ2h0IixmdW5jdGlvbihlKXtyZXR1cm4oMCxvLm1lYXN1cmVUb1N0cmluZykoKDAscy5nZXRNZWFzdXJlbWVudCkoZSkpfV0sWyJtYXJnaW4tdG9wIixmdW5jdGlvbihlKXtyZXR1cm4oMCxvLm1lYXN1cmVUb1N0cmluZykoKDAscy5nZXRNZWFzdXJlbWVudCkoZSkpfV0sWyJ0ZXh0LWluZGVudCIsZnVuY3Rpb24oZSl7cmV0dXJuKDAsby5tZWFzdXJlVG9TdHJpbmcpKCgwLHMuZ2V0TWVhc3VyZW1lbnQpKGUpKX1dLFsiZm9udC1mYW1pbHkiLGZ1bmN0aW9uKGUpe3JldHVybiBlfV0sWyJ2ZXJ0aWNhbC1hbGlnbiIsZnVuY3Rpb24oZSl7cmV0dXJuKDAsby5tZWFzdXJlVG9TdHJpbmcpKCgwLHMuZ2V0TWVhc3VyZW1lbnQpKGUpKX1dXSksTz0vXHMrL2csQT0vW1xyXG5dKy9nLEM9L1xyXG4/L2c7ZnVuY3Rpb24gRihlLHQscil7dmFyIG49T2JqZWN0LmNyZWF0ZShudWxsKTtpZighZSlyZXR1cm4gbjt2YXIgaSxjPU9iamVjdC5jcmVhdGUobnVsbCksdT15KGUuc3BsaXQoIjsiKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlLnNwbGl0KCI6IiwyKX0pKSk7dHJ5e2Zvcih1LnMoKTshKGk9dS5uKCkpLmRvbmU7KXt2YXIgbD12KGkudmFsdWUsMiksZj1sWzBdLGg9bFsxXSxkPXguZ2V0KGYpO2lmKCIiIT09ZCl7dmFyIHA9aDtkJiYocD0ic3RyaW5nIj09dHlwZW9mIGQ/ZDpkKGgsYykpLGYuZW5kc1dpdGgoInNjYWxlIik/bi50cmFuc2Zvcm0/bi50cmFuc2Zvcm09IiIuY29uY2F0KG5bZl0sIiAiKS5jb25jYXQocCk6bi50cmFuc2Zvcm09cDpuW2YucmVwbGFjZUFsbCgvLShbYS16QS1aXSkvZywoZnVuY3Rpb24oZSx0KXtyZXR1cm4gdC50b1VwcGVyQ2FzZSgpfSkpXT1wfX19Y2F0Y2goZSl7dS5lKGUpfWZpbmFsbHl7dS5mKCl9aWYobi5mb250RmFtaWx5JiYoMCxvLnNldEZvbnRGYW1pbHkpKHt0eXBlZmFjZTpuLmZvbnRGYW1pbHksd2VpZ2h0Om4uZm9udFdlaWdodHx8Im5vcm1hbCIscG9zdHVyZTpuLmZvbnRTdHlsZXx8Im5vcm1hbCIsc2l6ZTpjLmZvbnRTaXplfHwwfSx0LHRbYS4kZ2xvYmFsRGF0YV0uZm9udEZpbmRlcixuKSxyJiZuLnZlcnRpY2FsQWxpZ24mJiIwcHgiIT09bi52ZXJ0aWNhbEFsaWduJiZuLmZvbnRTaXplKXt2YXIgZz0oMCxzLmdldE1lYXN1cmVtZW50KShuLmZvbnRTaXplKTtuLmZvbnRTaXplPSgwLG8ubWVhc3VyZVRvU3RyaW5nKSguNTgzKmcpLG4udmVydGljYWxBbGlnbj0oMCxvLm1lYXN1cmVUb1N0cmluZykoTWF0aC5zaWduKCgwLHMuZ2V0TWVhc3VyZW1lbnQpKG4udmVydGljYWxBbGlnbikpKmcqLjMzMyl9cmV0dXJuIHImJm4uZm9udFNpemUmJihuLmZvbnRTaXplPSJjYWxjKCIuY29uY2F0KG4uZm9udFNpemUsIiAqIHZhcigtLXNjYWxlLWZhY3RvcikpIikpLCgwLG8uZml4VGV4dEluZGVudCkobiksbn12YXIgUD1uZXcgU2V0KFsiYm9keSIsImh0bWwiXSksVD1mdW5jdGlvbihlKXtoKHIsZSk7dmFyIHQ9cChyKTtmdW5jdGlvbiByKGUsbil7dmFyIGE7cmV0dXJuIGModGhpcyxyKSwoYT10LmNhbGwodGhpcyx3LG4pKVtrXT0hMSxhLnN0eWxlPWUuc3R5bGV8fCIiLGF9cmV0dXJuIGwocixbe2tleTphLiRjbGVhbix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdDtmKGcoci5wcm90b3R5cGUpLGEuJGNsZWFuLHRoaXMpLmNhbGwodGhpcyxlKSx0aGlzLnN0eWxlPSh0PXRoaXMpLnN0eWxlP3Quc3R5bGUudHJpbSgpLnNwbGl0KC9ccyo7XHMqLykuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4hIWV9KSkubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZS5zcGxpdCgvXHMqOlxzKi8sMil9KSkuZmlsdGVyKChmdW5jdGlvbihlKXt2YXIgcj12KGUsMiksbj1yWzBdLGk9clsxXTtyZXR1cm4iZm9udC1mYW1pbHkiPT09biYmdFthLiRnbG9iYWxEYXRhXS51c2VkVHlwZWZhY2VzLmFkZChpKSxTLmhhcyhuKX0pKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmpvaW4oIjoiKX0pKS5qb2luKCI7Iik6IiJ9fSx7a2V5OmEuJGFjY2VwdFdoaXRlc3BhY2UsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4hUC5oYXModGhpc1thLiRub2RlTmFtZV0pfX0se2tleTphLiRvblRleHQsdmFsdWU6ZnVuY3Rpb24oZSl7YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXT90aGlzW2tdPSEwOihlPWUucmVwbGFjZShBLCIiKSx0aGlzLnN0eWxlLmluY2x1ZGVzKCJ4ZmEtc3BhY2VydW46eWVzIil8fChlPWUucmVwbGFjZShPLCIgIikpKSxlJiYodGhpc1thLiRjb250ZW50XSs9ZSl9fSx7a2V5OmEuJHB1c2hHbHlwaHMsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQscj0hKGFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdKXx8YXJndW1lbnRzWzFdLG49T2JqZWN0LmNyZWF0ZShudWxsKSxpPXt0b3A6TmFOLGJvdHRvbTpOYU4sbGVmdDpOYU4scmlnaHQ6TmFOfSxvPW51bGwsYz15KHRoaXMuc3R5bGUuc3BsaXQoIjsiKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlLnNwbGl0KCI6IiwyKX0pKSk7dHJ5e2ZvcihjLnMoKTshKHQ9Yy5uKCkpLmRvbmU7KXt2YXIgdT12KHQudmFsdWUsMiksbD11WzBdLGY9dVsxXTtzd2l0Y2gobCl7Y2FzZSJmb250LWZhbWlseSI6bi50eXBlZmFjZT0oMCxzLnN0cmlwUXVvdGVzKShmKTticmVhaztjYXNlImZvbnQtc2l6ZSI6bi5zaXplPSgwLHMuZ2V0TWVhc3VyZW1lbnQpKGYpO2JyZWFrO2Nhc2UiZm9udC13ZWlnaHQiOm4ud2VpZ2h0PWY7YnJlYWs7Y2FzZSJmb250LXN0eWxlIjpuLnBvc3R1cmU9ZjticmVhaztjYXNlImxldHRlci1zcGFjaW5nIjpuLmxldHRlclNwYWNpbmc9KDAscy5nZXRNZWFzdXJlbWVudCkoZik7YnJlYWs7Y2FzZSJtYXJnaW4iOnZhciBoPWYuc3BsaXQoLyBcdC8pLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuKDAscy5nZXRNZWFzdXJlbWVudCkoZSl9KSk7c3dpdGNoKGgubGVuZ3RoKXtjYXNlIDE6aS50b3A9aS5ib3R0b209aS5sZWZ0PWkucmlnaHQ9aFswXTticmVhaztjYXNlIDI6aS50b3A9aS5ib3R0b209aFswXSxpLmxlZnQ9aS5yaWdodD1oWzFdO2JyZWFrO2Nhc2UgMzppLnRvcD1oWzBdLGkuYm90dG9tPWhbMl0saS5sZWZ0PWkucmlnaHQ9aFsxXTticmVhaztjYXNlIDQ6aS50b3A9aFswXSxpLmxlZnQ9aFsxXSxpLmJvdHRvbT1oWzJdLGkucmlnaHQ9aFszXX1icmVhaztjYXNlIm1hcmdpbi10b3AiOmkudG9wPSgwLHMuZ2V0TWVhc3VyZW1lbnQpKGYpO2JyZWFrO2Nhc2UibWFyZ2luLWJvdHRvbSI6aS5ib3R0b209KDAscy5nZXRNZWFzdXJlbWVudCkoZik7YnJlYWs7Y2FzZSJtYXJnaW4tbGVmdCI6aS5sZWZ0PSgwLHMuZ2V0TWVhc3VyZW1lbnQpKGYpO2JyZWFrO2Nhc2UibWFyZ2luLXJpZ2h0IjppLnJpZ2h0PSgwLHMuZ2V0TWVhc3VyZW1lbnQpKGYpO2JyZWFrO2Nhc2UibGluZS1oZWlnaHQiOm89KDAscy5nZXRNZWFzdXJlbWVudCkoZil9fX1jYXRjaChlKXtjLmUoZSl9ZmluYWxseXtjLmYoKX1pZihlLnB1c2hEYXRhKG4saSxvKSx0aGlzW2EuJGNvbnRlbnRdKWUuYWRkU3RyaW5nKHRoaXNbYS4kY29udGVudF0pO2Vsc2V7dmFyIGQscD15KHRoaXNbYS4kZ2V0Q2hpbGRyZW5dKCkpO3RyeXtmb3IocC5zKCk7IShkPXAubigpKS5kb25lOyl7dmFyIGc9ZC52YWx1ZTsiI3RleHQiIT09Z1thLiRub2RlTmFtZV0/Z1thLiRwdXNoR2x5cGhzXShlKTplLmFkZFN0cmluZyhnW2EuJGNvbnRlbnRdKX19Y2F0Y2goZSl7cC5lKGUpfWZpbmFsbHl7cC5mKCl9fXImJmUucG9wRm9udCgpfX0se2tleTphLiR0b0hUTUwsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQscj1bXTtyZXR1cm4gdGhpc1thLiRleHRyYV09e2NoaWxkcmVuOnJ9LHRoaXNbYS4kY2hpbGRyZW5Ub0hUTUxdKHt9KSwwIT09ci5sZW5ndGh8fHRoaXNbYS4kY29udGVudF0/KHQ9dGhpc1trXT90aGlzW2EuJGNvbnRlbnRdP3RoaXNbYS4kY29udGVudF0ucmVwbGFjZShDLCJcbiIpOnZvaWQgMDp0aGlzW2EuJGNvbnRlbnRdfHx2b2lkIDAscy5IVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6dGhpc1thLiRub2RlTmFtZV0sYXR0cmlidXRlczp7aHJlZjp0aGlzLmhyZWYsc3R5bGU6Rih0aGlzLnN0eWxlLHRoaXMsdGhpc1trXSl9LGNoaWxkcmVuOnIsdmFsdWU6dH0pKTpzLkhUTUxSZXN1bHQuRU1QVFl9fV0pLHJ9KGEuWG1sT2JqZWN0KSxJPWZ1bmN0aW9uKGUpe2gocixlKTt2YXIgdD1wKHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG47cmV0dXJuIGModGhpcyxyKSwobj10LmNhbGwodGhpcyxlLCJhIikpLmhyZWY9KDAsby5maXhVUkwpKGUuaHJlZil8fCIiLG59cmV0dXJuIGwocil9KFQpLEU9ZnVuY3Rpb24oZSl7aChyLGUpO3ZhciB0PXAocik7ZnVuY3Rpb24gcihlKXtyZXR1cm4gYyh0aGlzLHIpLHQuY2FsbCh0aGlzLGUsImIiKX1yZXR1cm4gbChyLFt7a2V5OmEuJHB1c2hHbHlwaHMsdmFsdWU6ZnVuY3Rpb24oZSl7ZS5wdXNoRm9udCh7d2VpZ2h0OiJib2xkIn0pLGYoZyhyLnByb3RvdHlwZSksYS4kcHVzaEdseXBocyx0aGlzKS5jYWxsKHRoaXMsZSksZS5wb3BGb250KCl9fV0pLHJ9KFQpLGo9ZnVuY3Rpb24oZSl7aChyLGUpO3ZhciB0PXAocik7ZnVuY3Rpb24gcihlKXtyZXR1cm4gYyh0aGlzLHIpLHQuY2FsbCh0aGlzLGUsImJvZHkiKX1yZXR1cm4gbChyLFt7a2V5OmEuJHRvSFRNTCx2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1mKGcoci5wcm90b3R5cGUpLGEuJHRvSFRNTCx0aGlzKS5jYWxsKHRoaXMsZSksbj10Lmh0bWw7cmV0dXJuIG4/KG4ubmFtZT0iZGl2IixuLmF0dHJpYnV0ZXMuY2xhc3M9WyJ4ZmFSaWNoIl0sdCk6cy5IVE1MUmVzdWx0LkVNUFRZfX1dKSxyfShUKSxNPWZ1bmN0aW9uKGUpe2gocixlKTt2YXIgdD1wKHIpO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGModGhpcyxyKSx0LmNhbGwodGhpcyxlLCJiciIpfXJldHVybiBsKHIsW3trZXk6YS4kdGV4dCx2YWx1ZTpmdW5jdGlvbigpe3JldHVybiJcbiJ9fSx7a2V5OmEuJHB1c2hHbHlwaHMsdmFsdWU6ZnVuY3Rpb24oZSl7ZS5hZGRTdHJpbmcoIlxuIil9fSx7a2V5OmEuJHRvSFRNTCx2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gcy5IVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImJyIn0pfX1dKSxyfShUKSxfPWZ1bmN0aW9uKGUpe2gocixlKTt2YXIgdD1wKHIpO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGModGhpcyxyKSx0LmNhbGwodGhpcyxlLCJodG1sIil9cmV0dXJuIGwocixbe2tleTphLiR0b0hUTUwsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9W107aWYodGhpc1thLiRleHRyYV09e2NoaWxkcmVuOnR9LHRoaXNbYS4kY2hpbGRyZW5Ub0hUTUxdKHt9KSwwPT09dC5sZW5ndGgpcmV0dXJuIHMuSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhUmljaCJdLHN0eWxlOnt9fSx2YWx1ZTp0aGlzW2EuJGNvbnRlbnRdfHwiIn0pO2lmKDE9PT10Lmxlbmd0aCl7dmFyIHI9dFswXTtpZihyLmF0dHJpYnV0ZXMmJnIuYXR0cmlidXRlcy5jbGFzcy5pbmNsdWRlcygieGZhUmljaCIpKXJldHVybiBzLkhUTUxSZXN1bHQuc3VjY2VzcyhyKX1yZXR1cm4gcy5IVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImRpdiIsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFSaWNoIl0sc3R5bGU6e319LGNoaWxkcmVuOnR9KX19XSkscn0oVCksTD1mdW5jdGlvbihlKXtoKHIsZSk7dmFyIHQ9cChyKTtmdW5jdGlvbiByKGUpe3JldHVybiBjKHRoaXMsciksdC5jYWxsKHRoaXMsZSwiaSIpfXJldHVybiBsKHIsW3trZXk6YS4kcHVzaEdseXBocyx2YWx1ZTpmdW5jdGlvbihlKXtlLnB1c2hGb250KHtwb3N0dXJlOiJpdGFsaWMifSksZihnKHIucHJvdG90eXBlKSxhLiRwdXNoR2x5cGhzLHRoaXMpLmNhbGwodGhpcyxlKSxlLnBvcEZvbnQoKX19XSkscn0oVCksUj1mdW5jdGlvbihlKXtoKHIsZSk7dmFyIHQ9cChyKTtmdW5jdGlvbiByKGUpe3JldHVybiBjKHRoaXMsciksdC5jYWxsKHRoaXMsZSwibGkiKX1yZXR1cm4gbChyKX0oVCksTj1mdW5jdGlvbihlKXtoKHIsZSk7dmFyIHQ9cChyKTtmdW5jdGlvbiByKGUpe3JldHVybiBjKHRoaXMsciksdC5jYWxsKHRoaXMsZSwib2wiKX1yZXR1cm4gbChyKX0oVCksRD1mdW5jdGlvbihlKXtoKHIsZSk7dmFyIHQ9cChyKTtmdW5jdGlvbiByKGUpe3JldHVybiBjKHRoaXMsciksdC5jYWxsKHRoaXMsZSwicCIpfXJldHVybiBsKHIsW3trZXk6YS4kcHVzaEdseXBocyx2YWx1ZTpmdW5jdGlvbihlKXtmKGcoci5wcm90b3R5cGUpLGEuJHB1c2hHbHlwaHMsdGhpcykuY2FsbCh0aGlzLGUsITEpLGUuYWRkU3RyaW5nKCJcbiIpLGUuYWRkUGFyYSgpLGUucG9wRm9udCgpfX0se2tleTphLiR0ZXh0LHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXNbYS4kZ2V0UGFyZW50XSgpW2EuJGdldENoaWxkcmVuXSgpLmF0KC0xKT09PXRoaXM/ZihnKHIucHJvdG90eXBlKSxhLiR0ZXh0LHRoaXMpLmNhbGwodGhpcyk6ZihnKHIucHJvdG90eXBlKSxhLiR0ZXh0LHRoaXMpLmNhbGwodGhpcykrIlxuIn19XSkscn0oVCksQj1mdW5jdGlvbihlKXtoKHIsZSk7dmFyIHQ9cChyKTtmdW5jdGlvbiByKGUpe3JldHVybiBjKHRoaXMsciksdC5jYWxsKHRoaXMsZSwic3BhbiIpfXJldHVybiBsKHIpfShUKSxVPWZ1bmN0aW9uKGUpe2gocixlKTt2YXIgdD1wKHIpO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGModGhpcyxyKSx0LmNhbGwodGhpcyxlLCJzdWIiKX1yZXR1cm4gbChyKX0oVCksJD1mdW5jdGlvbihlKXtoKHIsZSk7dmFyIHQ9cChyKTtmdW5jdGlvbiByKGUpe3JldHVybiBjKHRoaXMsciksdC5jYWxsKHRoaXMsZSwic3VwIil9cmV0dXJuIGwocil9KFQpLFg9ZnVuY3Rpb24oZSl7aChyLGUpO3ZhciB0PXAocik7ZnVuY3Rpb24gcihlKXtyZXR1cm4gYyh0aGlzLHIpLHQuY2FsbCh0aGlzLGUsInVsIil9cmV0dXJuIGwocil9KFQpLEg9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7Yyh0aGlzLGUpfXJldHVybiBsKGUsbnVsbCxbe2tleTppLiRidWlsZFhGQU9iamVjdCx2YWx1ZTpmdW5jdGlvbih0LHIpe2lmKGUuaGFzT3duUHJvcGVydHkodCkpcmV0dXJuIGVbdF0ocil9fSx7a2V5OiJhIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IEkoZSl9fSx7a2V5OiJiIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IEUoZSl9fSx7a2V5OiJib2R5Iix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IGooZSl9fSx7a2V5OiJiciIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBNKGUpfX0se2tleToiaHRtbCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBfKGUpfX0se2tleToiaSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBMKGUpfX0se2tleToibGkiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgUihlKX19LHtrZXk6Im9sIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IE4oZSl9fSx7a2V5OiJwIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IEQoZSl9fSx7a2V5OiJzcGFuIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IEIoZSl9fSx7a2V5OiJzdWIiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgVShlKX19LHtrZXk6InN1cCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyAkKGUpfX0se2tleToidWwiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgWChlKX19XSksZX0oKTt0LlhodG1sTmFtZXNwYWNlPUh9LChlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5Vbmtub3duTmFtZXNwYWNlPXZvaWQgMDt2YXIgbj1yKDIwOCksYT1yKDIwNik7ZnVuY3Rpb24gaShlKXtyZXR1cm4gaT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZX0saShlKX1mdW5jdGlvbiBvKGUsdCl7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBuPXRbcl07bi5lbnVtZXJhYmxlPW4uZW51bWVyYWJsZXx8ITEsbi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIG4mJihuLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwodm9pZCAwLGE9ZnVuY3Rpb24oZSx0KXtpZigib2JqZWN0IiE9PWkoZSl8fG51bGw9PT1lKXJldHVybiBlO3ZhciByPWVbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1yKXt2YXIgbj1yLmNhbGwoZSwic3RyaW5nIik7aWYoIm9iamVjdCIhPT1pKG4pKXJldHVybiBuO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuIFN0cmluZyhlKX0obi5rZXkpLCJzeW1ib2wiPT09aShhKT9hOlN0cmluZyhhKSksbil9dmFyIGF9dmFyIHM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQpeyFmdW5jdGlvbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGUpLHRoaXMubmFtZXNwYWNlSWQ9dH12YXIgdCxyO3JldHVybiB0PWUsKHI9W3trZXk6bi4kYnVpbGRYRkFPYmplY3QsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbmV3IGEuWG1sT2JqZWN0KHRoaXMubmFtZXNwYWNlSWQsZSx0KX19XSkmJm8odC5wcm90b3R5cGUsciksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZX0oKTt0LlVua25vd25OYW1lc3BhY2U9c30sKGUsdCxyKT0+e2Z1bmN0aW9uIG4oZSl7cmV0dXJuIG49ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGV9LG4oZSl9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuRGF0YXNldFJlYWRlcj12b2lkIDA7dmFyIGE9cigyKSxpPXIoMTM1KSxvPXIoMTk1KTtmdW5jdGlvbiBzKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gYyhlLHQpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgYT10W3JdO2EuZW51bWVyYWJsZT1hLmVudW1lcmFibGV8fCExLGEuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBhJiYoYS53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsKHZvaWQgMCxpPWZ1bmN0aW9uKGUsdCl7aWYoIm9iamVjdCIhPT1uKGUpfHxudWxsPT09ZSlyZXR1cm4gZTt2YXIgcj1lW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09cil7dmFyIGE9ci5jYWxsKGUsInN0cmluZyIpO2lmKCJvYmplY3QiIT09bihhKSlyZXR1cm4gYTt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybiBTdHJpbmcoZSl9KGEua2V5KSwic3ltYm9sIj09PW4oaSk/aTpTdHJpbmcoaSkpLGEpfXZhciBpfWZ1bmN0aW9uIHUoZSx0LHIpe3JldHVybiB0JiZjKGUucHJvdG90eXBlLHQpLHImJmMoZSxyKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxlfWZ1bmN0aW9uIGwoKXtyZXR1cm4gbD0idW5kZWZpbmVkIiE9dHlwZW9mIFJlZmxlY3QmJlJlZmxlY3QuZ2V0P1JlZmxlY3QuZ2V0LmJpbmQoKTpmdW5jdGlvbihlLHQscil7dmFyIG49ZnVuY3Rpb24oZSx0KXtmb3IoOyFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSx0KSYmbnVsbCE9PShlPWgoZSkpOyk7cmV0dXJuIGV9KGUsdCk7aWYobil7dmFyIGE9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHQpO3JldHVybiBhLmdldD9hLmdldC5jYWxsKGFyZ3VtZW50cy5sZW5ndGg8Mz9lOnIpOmEudmFsdWV9fSxsLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBmKGUsdCl7cmV0dXJuIGY9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5fX3Byb3RvX189dCxlfSxmKGUsdCl9ZnVuY3Rpb24gaChlKXtyZXR1cm4gaD1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihlKXtyZXR1cm4gZS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihlKX0saChlKX1mdW5jdGlvbiBkKGUpe3RyeXtyZXR1cm4oMCxhLnN0cmluZ1RvVVRGOFN0cmluZykoZSl9Y2F0Y2godCl7cmV0dXJuKDAsYS53YXJuKSgnVVRGLTggZGVjb2RpbmcgZmFpbGVkOiAiJy5jb25jYXQodCwnIi4nKSksZX19dmFyIHA9ZnVuY3Rpb24oZSl7IWZ1bmN0aW9uKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLHQmJmYoZSx0KX0oaSxlKTt2YXIgdCxyLGE9KHQ9aSxyPWZ1bmN0aW9uKCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3QpcmV0dXJuITE7aWYoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSwoZnVuY3Rpb24oKXt9KSkpLCEwfWNhdGNoKGUpe3JldHVybiExfX0oKSxmdW5jdGlvbigpe3ZhciBlLGE9aCh0KTtpZihyKXt2YXIgaT1oKHRoaXMpLmNvbnN0cnVjdG9yO2U9UmVmbGVjdC5jb25zdHJ1Y3QoYSxhcmd1bWVudHMsaSl9ZWxzZSBlPWEuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBmdW5jdGlvbihlLHQpe2lmKHQmJigib2JqZWN0Ij09PW4odCl8fCJmdW5jdGlvbiI9PXR5cGVvZiB0KSlyZXR1cm4gdDtpZih2b2lkIDAhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKHZvaWQgMD09PWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZX0oZSl9KHRoaXMsZSl9KTtmdW5jdGlvbiBpKGUpe3ZhciB0O3JldHVybiBzKHRoaXMsaSksKHQ9YS5jYWxsKHRoaXMsZSkpLm5vZGU9bnVsbCx0fXJldHVybiB1KGksW3trZXk6Im9uRW5kRWxlbWVudCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9bChoKGkucHJvdG90eXBlKSwib25FbmRFbGVtZW50Iix0aGlzKS5jYWxsKHRoaXMsZSk7aWYodCYmInhmYTpkYXRhc2V0cyI9PT1lKXRocm93IHRoaXMubm9kZT10LG5ldyBFcnJvcigiQWJvcnRpbmcgRGF0YXNldFhNTFBhcnNlci4iKX19XSksaX0oby5TaW1wbGVYTUxQYXJzZXIpLGc9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQpe2lmKHModGhpcyxlKSx0LmRhdGFzZXRzKXRoaXMubm9kZT1uZXcgby5TaW1wbGVYTUxQYXJzZXIoe2hhc0F0dHJpYnV0ZXM6ITB9KS5wYXJzZUZyb21TdHJpbmcodC5kYXRhc2V0cykuZG9jdW1lbnRFbGVtZW50O2Vsc2V7dmFyIHI9bmV3IHAoe2hhc0F0dHJpYnV0ZXM6ITB9KTt0cnl7ci5wYXJzZUZyb21TdHJpbmcodFsieGRwOnhkcCJdKX1jYXRjaChlKXt9dGhpcy5ub2RlPXIubm9kZX19cmV0dXJuIHUoZSxbe2tleToiZ2V0VmFsdWUiLHZhbHVlOmZ1bmN0aW9uKGUpe2lmKCF0aGlzLm5vZGV8fCFlKXJldHVybiIiO3ZhciB0PXRoaXMubm9kZS5zZWFyY2hOb2RlKCgwLGkucGFyc2VYRkFQYXRoKShlKSwwKTtpZighdClyZXR1cm4iIjt2YXIgcj10LmZpcnN0Q2hpbGQ7cmV0dXJuIHImJiJ2YWx1ZSI9PT1yLm5vZGVOYW1lP3QuY2hpbGRyZW4ubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZChlLnRleHRDb250ZW50KX0pKTpkKHQudGV4dENvbnRlbnQpfX1dKSxlfSgpO3QuRGF0YXNldFJlYWRlcj1nfSwoZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuWFJlZj12b2lkIDA7dmFyIG49cigyKSxhPXIoMTM0KSxpPXIoMTM1KSxvPXIoMTQ2KSxzPXIoMTM2KSxjPXIoMTk2KTtmdW5jdGlvbiB1KGUpe3JldHVybiB1PSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSx1KGUpfWZ1bmN0aW9uIGwoKXtsPWZ1bmN0aW9uKCl7cmV0dXJuIGV9O3ZhciBlPXt9LHQ9T2JqZWN0LnByb3RvdHlwZSxyPXQuaGFzT3duUHJvcGVydHksbj1PYmplY3QuZGVmaW5lUHJvcGVydHl8fGZ1bmN0aW9uKGUsdCxyKXtlW3RdPXIudmFsdWV9LGE9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbD9TeW1ib2w6e30saT1hLml0ZXJhdG9yfHwiQEBpdGVyYXRvciIsbz1hLmFzeW5jSXRlcmF0b3J8fCJAQGFzeW5jSXRlcmF0b3IiLHM9YS50b1N0cmluZ1RhZ3x8IkBAdG9TdHJpbmdUYWciO2Z1bmN0aW9uIGMoZSx0LHIpe3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpyLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSksZVt0XX10cnl7Yyh7fSwiIil9Y2F0Y2goZSl7Yz1mdW5jdGlvbihlLHQscil7cmV0dXJuIGVbdF09cn19ZnVuY3Rpb24gZihlLHQscixhKXt2YXIgaT10JiZ0LnByb3RvdHlwZSBpbnN0YW5jZW9mIHA/dDpwLG89T2JqZWN0LmNyZWF0ZShpLnByb3RvdHlwZSkscz1uZXcgRihhfHxbXSk7cmV0dXJuIG4obywiX2ludm9rZSIse3ZhbHVlOngoZSxyLHMpfSksb31mdW5jdGlvbiBoKGUsdCxyKXt0cnl7cmV0dXJue3R5cGU6Im5vcm1hbCIsYXJnOmUuY2FsbCh0LHIpfX1jYXRjaChlKXtyZXR1cm57dHlwZToidGhyb3ciLGFyZzplfX19ZS53cmFwPWY7dmFyIGQ9e307ZnVuY3Rpb24gcCgpe31mdW5jdGlvbiBnKCl7fWZ1bmN0aW9uIHYoKXt9dmFyIHk9e307Yyh5LGksKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSk7dmFyIG09T2JqZWN0LmdldFByb3RvdHlwZU9mLGI9bSYmbShtKFAoW10pKSk7YiYmYiE9PXQmJnIuY2FsbChiLGkpJiYoeT1iKTt2YXIgdz12LnByb3RvdHlwZT1wLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHkpO2Z1bmN0aW9uIGsoZSl7WyJuZXh0IiwidGhyb3ciLCJyZXR1cm4iXS5mb3JFYWNoKChmdW5jdGlvbih0KXtjKGUsdCwoZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX2ludm9rZSh0LGUpfSkpfSkpfWZ1bmN0aW9uIFMoZSx0KXtmdW5jdGlvbiBhKG4saSxvLHMpe3ZhciBjPWgoZVtuXSxlLGkpO2lmKCJ0aHJvdyIhPT1jLnR5cGUpe3ZhciBsPWMuYXJnLGY9bC52YWx1ZTtyZXR1cm4gZiYmIm9iamVjdCI9PXUoZikmJnIuY2FsbChmLCJfX2F3YWl0Iik/dC5yZXNvbHZlKGYuX19hd2FpdCkudGhlbigoZnVuY3Rpb24oZSl7YSgibmV4dCIsZSxvLHMpfSksKGZ1bmN0aW9uKGUpe2EoInRocm93IixlLG8scyl9KSk6dC5yZXNvbHZlKGYpLnRoZW4oKGZ1bmN0aW9uKGUpe2wudmFsdWU9ZSxvKGwpfSksKGZ1bmN0aW9uKGUpe3JldHVybiBhKCJ0aHJvdyIsZSxvLHMpfSkpfXMoYy5hcmcpfXZhciBpO24odGhpcywiX2ludm9rZSIse3ZhbHVlOmZ1bmN0aW9uKGUscil7ZnVuY3Rpb24gbigpe3JldHVybiBuZXcgdCgoZnVuY3Rpb24odCxuKXthKGUscix0LG4pfSkpfXJldHVybiBpPWk/aS50aGVuKG4sbik6bigpfX0pfWZ1bmN0aW9uIHgoZSx0LHIpe3ZhciBuPSJzdXNwZW5kZWRTdGFydCI7cmV0dXJuIGZ1bmN0aW9uKGEsaSl7aWYoImV4ZWN1dGluZyI9PT1uKXRocm93IG5ldyBFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgcnVubmluZyIpO2lmKCJjb21wbGV0ZWQiPT09bil7aWYoInRocm93Ij09PWEpdGhyb3cgaTtyZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9fWZvcihyLm1ldGhvZD1hLHIuYXJnPWk7Oyl7dmFyIG89ci5kZWxlZ2F0ZTtpZihvKXt2YXIgcz1PKG8scik7aWYocyl7aWYocz09PWQpY29udGludWU7cmV0dXJuIHN9fWlmKCJuZXh0Ij09PXIubWV0aG9kKXIuc2VudD1yLl9zZW50PXIuYXJnO2Vsc2UgaWYoInRocm93Ij09PXIubWV0aG9kKXtpZigic3VzcGVuZGVkU3RhcnQiPT09bil0aHJvdyBuPSJjb21wbGV0ZWQiLHIuYXJnO3IuZGlzcGF0Y2hFeGNlcHRpb24oci5hcmcpfWVsc2UicmV0dXJuIj09PXIubWV0aG9kJiZyLmFicnVwdCgicmV0dXJuIixyLmFyZyk7bj0iZXhlY3V0aW5nIjt2YXIgYz1oKGUsdCxyKTtpZigibm9ybWFsIj09PWMudHlwZSl7aWYobj1yLmRvbmU/ImNvbXBsZXRlZCI6InN1c3BlbmRlZFlpZWxkIixjLmFyZz09PWQpY29udGludWU7cmV0dXJue3ZhbHVlOmMuYXJnLGRvbmU6ci5kb25lfX0idGhyb3ciPT09Yy50eXBlJiYobj0iY29tcGxldGVkIixyLm1ldGhvZD0idGhyb3ciLHIuYXJnPWMuYXJnKX19fWZ1bmN0aW9uIE8oZSx0KXt2YXIgcj10Lm1ldGhvZCxuPWUuaXRlcmF0b3Jbcl07aWYodm9pZCAwPT09bilyZXR1cm4gdC5kZWxlZ2F0ZT1udWxsLCJ0aHJvdyI9PT1yJiZlLml0ZXJhdG9yLnJldHVybiYmKHQubWV0aG9kPSJyZXR1cm4iLHQuYXJnPXZvaWQgMCxPKGUsdCksInRocm93Ij09PXQubWV0aG9kKXx8InJldHVybiIhPT1yJiYodC5tZXRob2Q9InRocm93Iix0LmFyZz1uZXcgVHlwZUVycm9yKCJUaGUgaXRlcmF0b3IgZG9lcyBub3QgcHJvdmlkZSBhICciK3IrIicgbWV0aG9kIikpLGQ7dmFyIGE9aChuLGUuaXRlcmF0b3IsdC5hcmcpO2lmKCJ0aHJvdyI9PT1hLnR5cGUpcmV0dXJuIHQubWV0aG9kPSJ0aHJvdyIsdC5hcmc9YS5hcmcsdC5kZWxlZ2F0ZT1udWxsLGQ7dmFyIGk9YS5hcmc7cmV0dXJuIGk/aS5kb25lPyh0W2UucmVzdWx0TmFtZV09aS52YWx1ZSx0Lm5leHQ9ZS5uZXh0TG9jLCJyZXR1cm4iIT09dC5tZXRob2QmJih0Lm1ldGhvZD0ibmV4dCIsdC5hcmc9dm9pZCAwKSx0LmRlbGVnYXRlPW51bGwsZCk6aToodC5tZXRob2Q9InRocm93Iix0LmFyZz1uZXcgVHlwZUVycm9yKCJpdGVyYXRvciByZXN1bHQgaXMgbm90IGFuIG9iamVjdCIpLHQuZGVsZWdhdGU9bnVsbCxkKX1mdW5jdGlvbiBBKGUpe3ZhciB0PXt0cnlMb2M6ZVswXX07MSBpbiBlJiYodC5jYXRjaExvYz1lWzFdKSwyIGluIGUmJih0LmZpbmFsbHlMb2M9ZVsyXSx0LmFmdGVyTG9jPWVbM10pLHRoaXMudHJ5RW50cmllcy5wdXNoKHQpfWZ1bmN0aW9uIEMoZSl7dmFyIHQ9ZS5jb21wbGV0aW9ufHx7fTt0LnR5cGU9Im5vcm1hbCIsZGVsZXRlIHQuYXJnLGUuY29tcGxldGlvbj10fWZ1bmN0aW9uIEYoZSl7dGhpcy50cnlFbnRyaWVzPVt7dHJ5TG9jOiJyb290In1dLGUuZm9yRWFjaChBLHRoaXMpLHRoaXMucmVzZXQoITApfWZ1bmN0aW9uIFAoZSl7aWYoZSl7dmFyIHQ9ZVtpXTtpZih0KXJldHVybiB0LmNhbGwoZSk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGUubmV4dClyZXR1cm4gZTtpZighaXNOYU4oZS5sZW5ndGgpKXt2YXIgbj0tMSxhPWZ1bmN0aW9uIHQoKXtmb3IoOysrbjxlLmxlbmd0aDspaWYoci5jYWxsKGUsbikpcmV0dXJuIHQudmFsdWU9ZVtuXSx0LmRvbmU9ITEsdDtyZXR1cm4gdC52YWx1ZT12b2lkIDAsdC5kb25lPSEwLHR9O3JldHVybiBhLm5leHQ9YX19cmV0dXJue25leHQ6VH19ZnVuY3Rpb24gVCgpe3JldHVybnt2YWx1ZTp2b2lkIDAsZG9uZTohMH19cmV0dXJuIGcucHJvdG90eXBlPXYsbih3LCJjb25zdHJ1Y3RvciIse3ZhbHVlOnYsY29uZmlndXJhYmxlOiEwfSksbih2LCJjb25zdHJ1Y3RvciIse3ZhbHVlOmcsY29uZmlndXJhYmxlOiEwfSksZy5kaXNwbGF5TmFtZT1jKHYscywiR2VuZXJhdG9yRnVuY3Rpb24iKSxlLmlzR2VuZXJhdG9yRnVuY3Rpb249ZnVuY3Rpb24oZSl7dmFyIHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGUmJmUuY29uc3RydWN0b3I7cmV0dXJuISF0JiYodD09PWd8fCJHZW5lcmF0b3JGdW5jdGlvbiI9PT0odC5kaXNwbGF5TmFtZXx8dC5uYW1lKSl9LGUubWFyaz1mdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZihlLHYpOihlLl9fcHJvdG9fXz12LGMoZSxzLCJHZW5lcmF0b3JGdW5jdGlvbiIpKSxlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHcpLGV9LGUuYXdyYXA9ZnVuY3Rpb24oZSl7cmV0dXJue19fYXdhaXQ6ZX19LGsoUy5wcm90b3R5cGUpLGMoUy5wcm90b3R5cGUsbywoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSxlLkFzeW5jSXRlcmF0b3I9UyxlLmFzeW5jPWZ1bmN0aW9uKHQscixuLGEsaSl7dm9pZCAwPT09aSYmKGk9UHJvbWlzZSk7dmFyIG89bmV3IFMoZih0LHIsbixhKSxpKTtyZXR1cm4gZS5pc0dlbmVyYXRvckZ1bmN0aW9uKHIpP286by5uZXh0KCkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIGUuZG9uZT9lLnZhbHVlOm8ubmV4dCgpfSkpfSxrKHcpLGModyxzLCJHZW5lcmF0b3IiKSxjKHcsaSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSxjKHcsInRvU3RyaW5nIiwoZnVuY3Rpb24oKXtyZXR1cm4iW29iamVjdCBHZW5lcmF0b3JdIn0pKSxlLmtleXM9ZnVuY3Rpb24oZSl7dmFyIHQ9T2JqZWN0KGUpLHI9W107Zm9yKHZhciBuIGluIHQpci5wdXNoKG4pO3JldHVybiByLnJldmVyc2UoKSxmdW5jdGlvbiBlKCl7Zm9yKDtyLmxlbmd0aDspe3ZhciBuPXIucG9wKCk7aWYobiBpbiB0KXJldHVybiBlLnZhbHVlPW4sZS5kb25lPSExLGV9cmV0dXJuIGUuZG9uZT0hMCxlfX0sZS52YWx1ZXM9UCxGLnByb3RvdHlwZT17Y29uc3RydWN0b3I6RixyZXNldDpmdW5jdGlvbihlKXtpZih0aGlzLnByZXY9MCx0aGlzLm5leHQ9MCx0aGlzLnNlbnQ9dGhpcy5fc2VudD12b2lkIDAsdGhpcy5kb25lPSExLHRoaXMuZGVsZWdhdGU9bnVsbCx0aGlzLm1ldGhvZD0ibmV4dCIsdGhpcy5hcmc9dm9pZCAwLHRoaXMudHJ5RW50cmllcy5mb3JFYWNoKEMpLCFlKWZvcih2YXIgdCBpbiB0aGlzKSJ0Ij09PXQuY2hhckF0KDApJiZyLmNhbGwodGhpcyx0KSYmIWlzTmFOKCt0LnNsaWNlKDEpKSYmKHRoaXNbdF09dm9pZCAwKX0sc3RvcDpmdW5jdGlvbigpe3RoaXMuZG9uZT0hMDt2YXIgZT10aGlzLnRyeUVudHJpZXNbMF0uY29tcGxldGlvbjtpZigidGhyb3ciPT09ZS50eXBlKXRocm93IGUuYXJnO3JldHVybiB0aGlzLnJ2YWx9LGRpc3BhdGNoRXhjZXB0aW9uOmZ1bmN0aW9uKGUpe2lmKHRoaXMuZG9uZSl0aHJvdyBlO3ZhciB0PXRoaXM7ZnVuY3Rpb24gbihyLG4pe3JldHVybiBvLnR5cGU9InRocm93IixvLmFyZz1lLHQubmV4dD1yLG4mJih0Lm1ldGhvZD0ibmV4dCIsdC5hcmc9dm9pZCAwKSwhIW59Zm9yKHZhciBhPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTthPj0wOy0tYSl7dmFyIGk9dGhpcy50cnlFbnRyaWVzW2FdLG89aS5jb21wbGV0aW9uO2lmKCJyb290Ij09PWkudHJ5TG9jKXJldHVybiBuKCJlbmQiKTtpZihpLnRyeUxvYzw9dGhpcy5wcmV2KXt2YXIgcz1yLmNhbGwoaSwiY2F0Y2hMb2MiKSxjPXIuY2FsbChpLCJmaW5hbGx5TG9jIik7aWYocyYmYyl7aWYodGhpcy5wcmV2PGkuY2F0Y2hMb2MpcmV0dXJuIG4oaS5jYXRjaExvYywhMCk7aWYodGhpcy5wcmV2PGkuZmluYWxseUxvYylyZXR1cm4gbihpLmZpbmFsbHlMb2MpfWVsc2UgaWYocyl7aWYodGhpcy5wcmV2PGkuY2F0Y2hMb2MpcmV0dXJuIG4oaS5jYXRjaExvYywhMCl9ZWxzZXtpZighYyl0aHJvdyBuZXcgRXJyb3IoInRyeSBzdGF0ZW1lbnQgd2l0aG91dCBjYXRjaCBvciBmaW5hbGx5Iik7aWYodGhpcy5wcmV2PGkuZmluYWxseUxvYylyZXR1cm4gbihpLmZpbmFsbHlMb2MpfX19fSxhYnJ1cHQ6ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO24+PTA7LS1uKXt2YXIgYT10aGlzLnRyeUVudHJpZXNbbl07aWYoYS50cnlMb2M8PXRoaXMucHJldiYmci5jYWxsKGEsImZpbmFsbHlMb2MiKSYmdGhpcy5wcmV2PGEuZmluYWxseUxvYyl7dmFyIGk9YTticmVha319aSYmKCJicmVhayI9PT1lfHwiY29udGludWUiPT09ZSkmJmkudHJ5TG9jPD10JiZ0PD1pLmZpbmFsbHlMb2MmJihpPW51bGwpO3ZhciBvPWk/aS5jb21wbGV0aW9uOnt9O3JldHVybiBvLnR5cGU9ZSxvLmFyZz10LGk/KHRoaXMubWV0aG9kPSJuZXh0Iix0aGlzLm5leHQ9aS5maW5hbGx5TG9jLGQpOnRoaXMuY29tcGxldGUobyl9LGNvbXBsZXRlOmZ1bmN0aW9uKGUsdCl7aWYoInRocm93Ij09PWUudHlwZSl0aHJvdyBlLmFyZztyZXR1cm4iYnJlYWsiPT09ZS50eXBlfHwiY29udGludWUiPT09ZS50eXBlP3RoaXMubmV4dD1lLmFyZzoicmV0dXJuIj09PWUudHlwZT8odGhpcy5ydmFsPXRoaXMuYXJnPWUuYXJnLHRoaXMubWV0aG9kPSJyZXR1cm4iLHRoaXMubmV4dD0iZW5kIik6Im5vcm1hbCI9PT1lLnR5cGUmJnQmJih0aGlzLm5leHQ9dCksZH0sZmluaXNoOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7dD49MDstLXQpe3ZhciByPXRoaXMudHJ5RW50cmllc1t0XTtpZihyLmZpbmFsbHlMb2M9PT1lKXJldHVybiB0aGlzLmNvbXBsZXRlKHIuY29tcGxldGlvbixyLmFmdGVyTG9jKSxDKHIpLGR9fSxjYXRjaDpmdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO3Q+PTA7LS10KXt2YXIgcj10aGlzLnRyeUVudHJpZXNbdF07aWYoci50cnlMb2M9PT1lKXt2YXIgbj1yLmNvbXBsZXRpb247aWYoInRocm93Ij09PW4udHlwZSl7dmFyIGE9bi5hcmc7QyhyKX1yZXR1cm4gYX19dGhyb3cgbmV3IEVycm9yKCJpbGxlZ2FsIGNhdGNoIGF0dGVtcHQiKX0sZGVsZWdhdGVZaWVsZDpmdW5jdGlvbihlLHQscil7cmV0dXJuIHRoaXMuZGVsZWdhdGU9e2l0ZXJhdG9yOlAoZSkscmVzdWx0TmFtZTp0LG5leHRMb2M6cn0sIm5leHQiPT09dGhpcy5tZXRob2QmJih0aGlzLmFyZz12b2lkIDApLGR9fSxlfWZ1bmN0aW9uIGYoZSx0LHIsbixhLGksbyl7dHJ5e3ZhciBzPWVbaV0obyksYz1zLnZhbHVlfWNhdGNoKGUpe3JldHVybiB2b2lkIHIoZSl9cy5kb25lP3QoYyk6UHJvbWlzZS5yZXNvbHZlKGMpLnRoZW4obixhKX1mdW5jdGlvbiBoKGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciB0PXRoaXMscj1hcmd1bWVudHM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihuLGEpe3ZhciBpPWUuYXBwbHkodCxyKTtmdW5jdGlvbiBvKGUpe2YoaSxuLGEsbyxzLCJuZXh0IixlKX1mdW5jdGlvbiBzKGUpe2YoaSxuLGEsbyxzLCJ0aHJvdyIsZSl9byh2b2lkIDApfSkpfX1mdW5jdGlvbiBkKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciByPW51bGw9PWU/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9cil7dmFyIG4sYSxpLG8scz1bXSxjPSEwLHU9ITE7dHJ5e2lmKGk9KHI9ci5jYWxsKGUpKS5uZXh0LDA9PT10KXtpZihPYmplY3QocikhPT1yKXJldHVybjtjPSExfWVsc2UgZm9yKDshKGM9KG49aS5jYWxsKHIpKS5kb25lKSYmKHMucHVzaChuLnZhbHVlKSxzLmxlbmd0aCE9PXQpO2M9ITApO31jYXRjaChlKXt1PSEwLGE9ZX1maW5hbGx5e3RyeXtpZighYyYmbnVsbCE9ci5yZXR1cm4mJihvPXIucmV0dXJuKCksT2JqZWN0KG8pIT09bykpcmV0dXJufWZpbmFsbHl7aWYodSl0aHJvdyBhfX1yZXR1cm4gc319KGUsdCl8fGZ1bmN0aW9uKGUsdCl7aWYoZSl7aWYoInN0cmluZyI9PXR5cGVvZiBlKXJldHVybiBwKGUsdCk7dmFyIHI9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO3JldHVybiJPYmplY3QiPT09ciYmZS5jb25zdHJ1Y3RvciYmKHI9ZS5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PXJ8fCJTZXQiPT09cj9BcnJheS5mcm9tKGUpOiJBcmd1bWVudHMiPT09cnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3Qocik/cChlLHQpOnZvaWQgMH19KGUsdCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiBwKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciByPTAsbj1uZXcgQXJyYXkodCk7cjx0O3IrKyluW3JdPWVbcl07cmV0dXJuIG59ZnVuY3Rpb24gZyhlLHQpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgbj10W3JdO24uZW51bWVyYWJsZT1uLmVudW1lcmFibGV8fCExLG4uY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBuJiYobi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsKHZvaWQgMCxhPWZ1bmN0aW9uKGUsdCl7aWYoIm9iamVjdCIhPT11KGUpfHxudWxsPT09ZSlyZXR1cm4gZTt2YXIgcj1lW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09cil7dmFyIG49ci5jYWxsKGUsInN0cmluZyIpO2lmKCJvYmplY3QiIT09dShuKSlyZXR1cm4gbjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybiBTdHJpbmcoZSl9KG4ua2V5KSwic3ltYm9sIj09PXUoYSk/YTpTdHJpbmcoYSkpLG4pfXZhciBhfXZhciB2PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0LHIpeyFmdW5jdGlvbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGUpLHRoaXMuc3RyZWFtPXQsdGhpcy5wZGZNYW5hZ2VyPXIsdGhpcy5lbnRyaWVzPVtdLHRoaXMueHJlZnN0bXM9T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLl9jYWNoZU1hcD1uZXcgTWFwLHRoaXMuX3BlbmRpbmdSZWZzPW5ldyBhLlJlZlNldCx0aGlzLnN0YXRzPW5ldyBpLkRvY1N0YXRzKHIubXNnSGFuZGxlciksdGhpcy5fbmV3UGVyc2lzdGVudFJlZk51bT1udWxsLHRoaXMuX25ld1RlbXBvcmFyeVJlZk51bT1udWxsfXZhciB0LHIsdSxmO3JldHVybiB0PWUscj1be2tleToiZ2V0TmV3UGVyc2lzdGVudFJlZiIsdmFsdWU6ZnVuY3Rpb24oZSl7bnVsbD09PXRoaXMuX25ld1BlcnNpc3RlbnRSZWZOdW0mJih0aGlzLl9uZXdQZXJzaXN0ZW50UmVmTnVtPXRoaXMuZW50cmllcy5sZW5ndGh8fDEpO3ZhciB0PXRoaXMuX25ld1BlcnNpc3RlbnRSZWZOdW0rKztyZXR1cm4gdGhpcy5fY2FjaGVNYXAuc2V0KHQsZSksYS5SZWYuZ2V0KHQsMCl9fSx7a2V5OiJnZXROZXdUZW1wb3JhcnlSZWYiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PT10aGlzLl9uZXdUZW1wb3JhcnlSZWZOdW0mJih0aGlzLl9uZXdUZW1wb3JhcnlSZWZOdW09dGhpcy5lbnRyaWVzLmxlbmd0aHx8MSksYS5SZWYuZ2V0KHRoaXMuX25ld1RlbXBvcmFyeVJlZk51bSsrLDApfX0se2tleToicmVzZXROZXdUZW1wb3JhcnlSZWYiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5fbmV3VGVtcG9yYXJ5UmVmTnVtPW51bGx9fSx7a2V5OiJzZXRTdGFydFhSZWYiLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMuc3RhcnRYUmVmUXVldWU9W2VdfX0se2tleToicGFyc2UiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGUsdCxyLG89YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0mJmFyZ3VtZW50c1swXTtvPygoMCxuLndhcm4pKCJJbmRleGluZyBhbGwgUERGIG9iamVjdHMiKSxlPXRoaXMuaW5kZXhPYmplY3RzKCkpOmU9dGhpcy5yZWFkWFJlZigpLGUuYXNzaWduWHJlZih0aGlzKSx0aGlzLnRyYWlsZXI9ZTt0cnl7dD1lLmdldCgiRW5jcnlwdCIpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBpLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7KDAsbi53YXJuKSgnWFJlZi5wYXJzZSAtIEludmFsaWQgIkVuY3J5cHQiIHJlZmVyZW5jZTogIicuY29uY2F0KGUsJyIuJykpfWlmKHQgaW5zdGFuY2VvZiBhLkRpY3Qpe3ZhciBzPWUuZ2V0KCJJRCIpLHU9cyYmcy5sZW5ndGg/c1swXToiIjt0LnN1cHByZXNzRW5jcnlwdGlvbj0hMCx0aGlzLmVuY3J5cHQ9bmV3IGMuQ2lwaGVyVHJhbnNmb3JtRmFjdG9yeSh0LHUsdGhpcy5wZGZNYW5hZ2VyLnBhc3N3b3JkKX10cnl7cj1lLmdldCgiUm9vdCIpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBpLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7KDAsbi53YXJuKSgnWFJlZi5wYXJzZSAtIEludmFsaWQgIlJvb3QiIHJlZmVyZW5jZTogIicuY29uY2F0KGUsJyIuJykpfWlmKHIgaW5zdGFuY2VvZiBhLkRpY3QpdHJ5e2lmKHIuZ2V0KCJQYWdlcyIpaW5zdGFuY2VvZiBhLkRpY3QpcmV0dXJuIHZvaWQodGhpcy5yb290PXIpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBpLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7KDAsbi53YXJuKSgnWFJlZi5wYXJzZSAtIEludmFsaWQgIlBhZ2VzIiByZWZlcmVuY2U6ICInLmNvbmNhdChlLCciLicpKX1pZighbyl0aHJvdyBuZXcgaS5YUmVmUGFyc2VFeGNlcHRpb247dGhyb3cgbmV3IG4uSW52YWxpZFBERkV4Y2VwdGlvbigiSW52YWxpZCBSb290IHJlZmVyZW5jZS4iKX19LHtrZXk6InByb2Nlc3NYUmVmVGFibGUiLHZhbHVlOmZ1bmN0aW9uKGUpeyJ0YWJsZVN0YXRlImluIHRoaXN8fCh0aGlzLnRhYmxlU3RhdGU9e2VudHJ5TnVtOjAsc3RyZWFtUG9zOmUubGV4ZXIuc3RyZWFtLnBvcyxwYXJzZXJCdWYxOmUuYnVmMSxwYXJzZXJCdWYyOmUuYnVmMn0pO3ZhciB0PXRoaXMucmVhZFhSZWZUYWJsZShlKTtpZighKDAsYS5pc0NtZCkodCwidHJhaWxlciIpKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgdGFibGU6IGNvdWxkIG5vdCBmaW5kIHRyYWlsZXIgZGljdGlvbmFyeSIpO3ZhciByPWUuZ2V0T2JqKCk7aWYociBpbnN0YW5jZW9mIGEuRGljdHx8IXIuZGljdHx8KHI9ci5kaWN0KSwhKHIgaW5zdGFuY2VvZiBhLkRpY3QpKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgdGFibGU6IGNvdWxkIG5vdCBwYXJzZSB0cmFpbGVyIGRpY3Rpb25hcnkiKTtyZXR1cm4gZGVsZXRlIHRoaXMudGFibGVTdGF0ZSxyfX0se2tleToicmVhZFhSZWZUYWJsZSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQscj1lLmxleGVyLnN0cmVhbSxpPXRoaXMudGFibGVTdGF0ZTtmb3Ioci5wb3M9aS5zdHJlYW1Qb3MsZS5idWYxPWkucGFyc2VyQnVmMSxlLmJ1ZjI9aS5wYXJzZXJCdWYyOzspe2lmKCEoImZpcnN0RW50cnlOdW0iaW4gaSl8fCEoImVudHJ5Q291bnQiaW4gaSkpe2lmKCgwLGEuaXNDbWQpKHQ9ZS5nZXRPYmooKSwidHJhaWxlciIpKWJyZWFrO2kuZmlyc3RFbnRyeU51bT10LGkuZW50cnlDb3VudD1lLmdldE9iaigpfXZhciBvPWkuZmlyc3RFbnRyeU51bSxzPWkuZW50cnlDb3VudDtpZighTnVtYmVyLmlzSW50ZWdlcihvKXx8IU51bWJlci5pc0ludGVnZXIocykpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIkludmFsaWQgWFJlZiB0YWJsZTogd3JvbmcgdHlwZXMgaW4gc3Vic2VjdGlvbiBoZWFkZXIiKTtmb3IodmFyIGM9aS5lbnRyeU51bTtjPHM7YysrKXtpLnN0cmVhbVBvcz1yLnBvcyxpLmVudHJ5TnVtPWMsaS5wYXJzZXJCdWYxPWUuYnVmMSxpLnBhcnNlckJ1ZjI9ZS5idWYyO3ZhciB1PXt9O3Uub2Zmc2V0PWUuZ2V0T2JqKCksdS5nZW49ZS5nZXRPYmooKTt2YXIgbD1lLmdldE9iaigpO2lmKGwgaW5zdGFuY2VvZiBhLkNtZClzd2l0Y2gobC5jbWQpe2Nhc2UiZiI6dS5mcmVlPSEwO2JyZWFrO2Nhc2UibiI6dS51bmNvbXByZXNzZWQ9ITB9aWYoIU51bWJlci5pc0ludGVnZXIodS5vZmZzZXQpfHwhTnVtYmVyLmlzSW50ZWdlcih1Lmdlbil8fCF1LmZyZWUmJiF1LnVuY29tcHJlc3NlZCl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiSW52YWxpZCBlbnRyeSBpbiBYUmVmIHN1YnNlY3Rpb246ICIuY29uY2F0KG8sIiwgIikuY29uY2F0KHMpKTswPT09YyYmdS5mcmVlJiYxPT09byYmKG89MCksdGhpcy5lbnRyaWVzW2Mrb118fCh0aGlzLmVudHJpZXNbYytvXT11KX1pLmVudHJ5TnVtPTAsaS5zdHJlYW1Qb3M9ci5wb3MsaS5wYXJzZXJCdWYxPWUuYnVmMSxpLnBhcnNlckJ1ZjI9ZS5idWYyLGRlbGV0ZSBpLmZpcnN0RW50cnlOdW0sZGVsZXRlIGkuZW50cnlDb3VudH1pZih0aGlzLmVudHJpZXNbMF0mJiF0aGlzLmVudHJpZXNbMF0uZnJlZSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiSW52YWxpZCBYUmVmIHRhYmxlOiB1bmV4cGVjdGVkIGZpcnN0IG9iamVjdCIpO3JldHVybiB0fX0se2tleToicHJvY2Vzc1hSZWZTdHJlYW0iLHZhbHVlOmZ1bmN0aW9uKGUpe2lmKCEoInN0cmVhbVN0YXRlImluIHRoaXMpKXt2YXIgdD1lLmRpY3Qscj10LmdldCgiVyIpLG49dC5nZXQoIkluZGV4Iik7bnx8KG49WzAsdC5nZXQoIlNpemUiKV0pLHRoaXMuc3RyZWFtU3RhdGU9e2VudHJ5UmFuZ2VzOm4sYnl0ZVdpZHRoczpyLGVudHJ5TnVtOjAsc3RyZWFtUG9zOmUucG9zfX1yZXR1cm4gdGhpcy5yZWFkWFJlZlN0cmVhbShlKSxkZWxldGUgdGhpcy5zdHJlYW1TdGF0ZSxlLmRpY3R9fSx7a2V5OiJyZWFkWFJlZlN0cmVhbSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5zdHJlYW1TdGF0ZTtlLnBvcz10LnN0cmVhbVBvcztmb3IodmFyIHI9ZCh0LmJ5dGVXaWR0aHMsMyksYT1yWzBdLGk9clsxXSxvPXJbMl0scz10LmVudHJ5UmFuZ2VzO3MubGVuZ3RoPjA7KXt2YXIgYz1kKHMsMiksdT1jWzBdLGw9Y1sxXTtpZighTnVtYmVyLmlzSW50ZWdlcih1KXx8IU51bWJlci5pc0ludGVnZXIobCkpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIkludmFsaWQgWFJlZiByYW5nZSBmaWVsZHM6ICIuY29uY2F0KHUsIiwgIikuY29uY2F0KGwpKTtpZighTnVtYmVyLmlzSW50ZWdlcihhKXx8IU51bWJlci5pc0ludGVnZXIoaSl8fCFOdW1iZXIuaXNJbnRlZ2VyKG8pKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgZW50cnkgZmllbGRzIGxlbmd0aDogIi5jb25jYXQodSwiLCAiKS5jb25jYXQobCkpO2Zvcih2YXIgZj10LmVudHJ5TnVtO2Y8bDsrK2Ype3QuZW50cnlOdW09Zix0LnN0cmVhbVBvcz1lLnBvcztmb3IodmFyIGg9MCxwPTAsZz0wLHY9MDt2PGE7Kyt2KXt2YXIgeT1lLmdldEJ5dGUoKTtpZigtMT09PXkpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIkludmFsaWQgWFJlZiBieXRlV2lkdGhzICd0eXBlJy4iKTtoPWg8PDh8eX0wPT09YSYmKGg9MSk7Zm9yKHZhciBtPTA7bTxpOysrbSl7dmFyIGI9ZS5nZXRCeXRlKCk7aWYoLTE9PT1iKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgYnl0ZVdpZHRocyAnb2Zmc2V0Jy4iKTtwPXA8PDh8Yn1mb3IodmFyIHc9MDt3PG87Kyt3KXt2YXIgaz1lLmdldEJ5dGUoKTtpZigtMT09PWspdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIkludmFsaWQgWFJlZiBieXRlV2lkdGhzICdnZW5lcmF0aW9uJy4iKTtnPWc8PDh8a312YXIgUz17fTtzd2l0Y2goUy5vZmZzZXQ9cCxTLmdlbj1nLGgpe2Nhc2UgMDpTLmZyZWU9ITA7YnJlYWs7Y2FzZSAxOlMudW5jb21wcmVzc2VkPSEwO2JyZWFrO2Nhc2UgMjpicmVhaztkZWZhdWx0OnRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgZW50cnkgdHlwZTogIi5jb25jYXQoaCkpfXRoaXMuZW50cmllc1t1K2ZdfHwodGhpcy5lbnRyaWVzW3UrZl09Uyl9dC5lbnRyeU51bT0wLHQuc3RyZWFtUG9zPWUucG9zLHMuc3BsaWNlKDAsMil9fX0se2tleToiaW5kZXhPYmplY3RzIix2YWx1ZTpmdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXtmb3IodmFyIHI9IiIsbj1lW3RdOzEwIT09biYmMTMhPT1uJiY2MCE9PW4mJiEoKyt0Pj1lLmxlbmd0aCk7KXIrPVN0cmluZy5mcm9tQ2hhckNvZGUobiksbj1lW3RdO3JldHVybiByfWZ1bmN0aW9uIHQoZSx0LHIpe2Zvcih2YXIgbj1yLmxlbmd0aCxhPWUubGVuZ3RoLGk9MDt0PGE7KXtmb3IodmFyIG89MDtvPG4mJmVbdCtvXT09PXJbb107KSsrbztpZihvPj1uKWJyZWFrO3QrKyxpKyt9cmV0dXJuIGl9dmFyIHI9L1xiKGVuZG9ianxcZCtccytcZCtccytvYmp8eHJlZnx0cmFpbGVyKVxiL2cscz0vXGIoc3RhcnR4cmVmfFxkK1xzK1xkK1xzK29iailcYi9nLGM9L14oXGQrKVxzKyhcZCspXHMrb2JqXGIvLHU9bmV3IFVpbnQ4QXJyYXkoWzExNiwxMTQsOTcsMTA1LDEwOCwxMDEsMTE0XSksbD1uZXcgVWludDhBcnJheShbMTE1LDExNiw5NywxMTQsMTE2LDEyMCwxMTQsMTAxLDEwMl0pLGY9bmV3IFVpbnQ4QXJyYXkoWzQ3LDg4LDgyLDEwMSwxMDJdKTt0aGlzLmVudHJpZXMubGVuZ3RoPTAsdGhpcy5fY2FjaGVNYXAuY2xlYXIoKTt2YXIgaD10aGlzLnN0cmVhbTtoLnBvcz0wO2Zvcih2YXIgZCxwLGc9aC5nZXRCeXRlcygpLHY9KDAsbi5ieXRlc1RvU3RyaW5nKShnKSx5PWcubGVuZ3RoLG09aC5zdGFydCxiPVtdLHc9W107bTx5Oyl7dmFyIGs9Z1ttXTtpZig5IT09ayYmMTAhPT1rJiYxMyE9PWsmJjMyIT09aylpZigzNyE9PWspe3ZhciBTPWUoZyxtKSx4PXZvaWQgMDtpZihTLnN0YXJ0c1dpdGgoInhyZWYiKSYmKDQ9PT1TLmxlbmd0aHx8L1xzLy50ZXN0KFNbNF0pKSltKz10KGcsbSx1KSxiLnB1c2gobSksbSs9dChnLG0sbCk7ZWxzZSBpZih4PWMuZXhlYyhTKSl7dmFyIE89MHx4WzFdLEE9MHx4WzJdLEM9bStTLmxlbmd0aCxGPXZvaWQgMCxQPSExO2lmKHRoaXMuZW50cmllc1tPXSl7aWYodGhpcy5lbnRyaWVzW09dLmdlbj09PUEpdHJ5e25ldyBvLlBhcnNlcih7bGV4ZXI6bmV3IG8uTGV4ZXIoaC5tYWtlU3ViU3RyZWFtKEMpKX0pLmdldE9iaigpLFA9ITB9Y2F0Y2goZSl7ZSBpbnN0YW5jZW9mIGkuUGFyc2VyRU9GRXhjZXB0aW9uPygwLG4ud2FybikoImluZGV4T2JqZWN0cyAtLSBjaGVja2luZyBvYmplY3QgKCIuY29uY2F0KFMsJyk6ICInKS5jb25jYXQoZSwnIi4nKSk6UD0hMH19ZWxzZSBQPSEwO1AmJih0aGlzLmVudHJpZXNbT109e29mZnNldDptLWguc3RhcnQsZ2VuOkEsdW5jb21wcmVzc2VkOiEwfSksci5sYXN0SW5kZXg9Qzt2YXIgVD1yLmV4ZWModik7VD8oRj1yLmxhc3RJbmRleCsxLW0sImVuZG9iaiIhPT1UWzFdJiYoKDAsbi53YXJuKSgnaW5kZXhPYmplY3RzOiBGb3VuZCAiJy5jb25jYXQoVFsxXSwnIiBpbnNpZGUgb2YgYW5vdGhlciAib2JqIiwgJykrJ2NhdXNlZCBieSBtaXNzaW5nICJlbmRvYmoiIC0tIHRyeWluZyB0byByZWNvdmVyLicpLEYtPVRbMV0ubGVuZ3RoKzEpKTpGPXktbTt2YXIgST1nLnN1YmFycmF5KG0sbStGKSxFPXQoSSwwLGYpO0U8RiYmSVtFKzVdPDY0JiYody5wdXNoKG0taC5zdGFydCksdGhpcy54cmVmc3Rtc1ttLWguc3RhcnRdPTEpLG0rPUZ9ZWxzZSBpZihTLnN0YXJ0c1dpdGgoInRyYWlsZXIiKSYmKDc9PT1TLmxlbmd0aHx8L1xzLy50ZXN0KFNbN10pKSl7Yi5wdXNoKG0pO3ZhciBqPW0rUy5sZW5ndGgsTT12b2lkIDA7cy5sYXN0SW5kZXg9ajt2YXIgXz1zLmV4ZWModik7Xz8oTT1zLmxhc3RJbmRleCsxLW0sInN0YXJ0eHJlZiIhPT1fWzFdJiYoKDAsbi53YXJuKSgnaW5kZXhPYmplY3RzOiBGb3VuZCAiJy5jb25jYXQoX1sxXSwnIiBhZnRlciAidHJhaWxlciIsICcpKydjYXVzZWQgYnkgbWlzc2luZyAic3RhcnR4cmVmIiAtLSB0cnlpbmcgdG8gcmVjb3Zlci4nKSxNLT1fWzFdLmxlbmd0aCsxKSk6TT15LW0sbSs9TX1lbHNlIG0rPVMubGVuZ3RoKzF9ZWxzZSBkb3tpZigrK20+PXkpYnJlYWs7az1nW21dfXdoaWxlKDEwIT09ayYmMTMhPT1rKTtlbHNlKyttfWZvcih2YXIgTD0wLFI9dztMPFIubGVuZ3RoO0wrKyl7dmFyIE49UltMXTt0aGlzLnN0YXJ0WFJlZlF1ZXVlLnB1c2goTiksdGhpcy5yZWFkWFJlZighMCl9Zm9yKHZhciBEPTAsQj1bXS5jb25jYXQoYixbImdlbmVyYXRpb25GYWxsYmFjayJdLGIpO0Q8Qi5sZW5ndGg7RCsrKXt2YXIgVT1CW0RdO2lmKCJnZW5lcmF0aW9uRmFsbGJhY2siIT09VSl7aC5wb3M9VTt2YXIgJD1uZXcgby5QYXJzZXIoe2xleGVyOm5ldyBvLkxleGVyKGgpLHhyZWY6dGhpcyxhbGxvd1N0cmVhbXM6ITAscmVjb3ZlcnlNb2RlOiEwfSksWD0kLmdldE9iaigpO2lmKCgwLGEuaXNDbWQpKFgsInRyYWlsZXIiKSl7dmFyIEg9JC5nZXRPYmooKTtpZihIIGluc3RhbmNlb2YgYS5EaWN0KXt2YXIgcT0hMTt0cnl7dmFyIEc9SC5nZXQoIlJvb3QiKTtpZighKEcgaW5zdGFuY2VvZiBhLkRpY3QpKWNvbnRpbnVlO3ZhciB6PUcuZ2V0KCJQYWdlcyIpO2lmKCEoeiBpbnN0YW5jZW9mIGEuRGljdCkpY29udGludWU7dmFyIFc9ei5nZXQoIkNvdW50Iik7TnVtYmVyLmlzSW50ZWdlcihXKSYmKHE9ITApfWNhdGNoKGUpe3A9ZTtjb250aW51ZX1pZihxJiZILmhhcygiSUQiKSlyZXR1cm4gSDtkPUh9fX1lbHNle2lmKCFwKWJyZWFrO3RoaXMuX2dlbmVyYXRpb25GYWxsYmFjaz0hMH19aWYoZClyZXR1cm4gZDtpZih0aGlzLnRvcERpY3QpcmV0dXJuIHRoaXMudG9wRGljdDt0aHJvdyBuZXcgbi5JbnZhbGlkUERGRXhjZXB0aW9uKCJJbnZhbGlkIFBERiBzdHJ1Y3R1cmUuIil9fSx7a2V5OiJyZWFkWFJlZiIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0mJmFyZ3VtZW50c1swXSx0PXRoaXMuc3RyZWFtLHI9bmV3IFNldDt0aGlzLnN0YXJ0WFJlZlF1ZXVlLmxlbmd0aDspe3RyeXt2YXIgYz10aGlzLnN0YXJ0WFJlZlF1ZXVlWzBdO2lmKHIuaGFzKGMpKXsoMCxuLndhcm4pKCJyZWFkWFJlZiAtIHNraXBwaW5nIFhSZWYgdGFibGUgc2luY2UgaXQgd2FzIGFscmVhZHkgcGFyc2VkLiIpLHRoaXMuc3RhcnRYUmVmUXVldWUuc2hpZnQoKTtjb250aW51ZX1yLmFkZChjKSx0LnBvcz1jK3Quc3RhcnQ7dmFyIHU9bmV3IG8uUGFyc2VyKHtsZXhlcjpuZXcgby5MZXhlcih0KSx4cmVmOnRoaXMsYWxsb3dTdHJlYW1zOiEwfSksbD11LmdldE9iaigpLGY9dm9pZCAwO2lmKCgwLGEuaXNDbWQpKGwsInhyZWYiKSl7aWYoZj10aGlzLnByb2Nlc3NYUmVmVGFibGUodSksdGhpcy50b3BEaWN0fHwodGhpcy50b3BEaWN0PWYpLGw9Zi5nZXQoIlhSZWZTdG0iKSxOdW1iZXIuaXNJbnRlZ2VyKGwpKXt2YXIgaD1sO2ggaW4gdGhpcy54cmVmc3Rtc3x8KHRoaXMueHJlZnN0bXNbaF09MSx0aGlzLnN0YXJ0WFJlZlF1ZXVlLnB1c2goaCkpfX1lbHNle2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGwpKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgc3RyZWFtIGhlYWRlciIpO2lmKCEoTnVtYmVyLmlzSW50ZWdlcih1LmdldE9iaigpKSYmKDAsYS5pc0NtZCkodS5nZXRPYmooKSwib2JqIikmJihsPXUuZ2V0T2JqKCkpaW5zdGFuY2VvZiBzLkJhc2VTdHJlYW0pKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgc3RyZWFtIik7aWYoZj10aGlzLnByb2Nlc3NYUmVmU3RyZWFtKGwpLHRoaXMudG9wRGljdHx8KHRoaXMudG9wRGljdD1mKSwhZil0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiRmFpbGVkIHRvIHJlYWQgWFJlZiBzdHJlYW0iKX1sPWYuZ2V0KCJQcmV2IiksTnVtYmVyLmlzSW50ZWdlcihsKT90aGlzLnN0YXJ0WFJlZlF1ZXVlLnB1c2gobCk6bCBpbnN0YW5jZW9mIGEuUmVmJiZ0aGlzLnN0YXJ0WFJlZlF1ZXVlLnB1c2gobC5udW0pfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBpLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7KDAsbi5pbmZvKSgiKHdoaWxlIHJlYWRpbmcgWFJlZik6ICIrZSl9dGhpcy5zdGFydFhSZWZRdWV1ZS5zaGlmdCgpfWlmKHRoaXMudG9wRGljdClyZXR1cm4gdGhpcy50b3BEaWN0O2lmKCFlKXRocm93IG5ldyBpLlhSZWZQYXJzZUV4Y2VwdGlvbn19LHtrZXk6ImdldEVudHJ5Iix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLmVudHJpZXNbZV07cmV0dXJuIHQmJiF0LmZyZWUmJnQub2Zmc2V0P3Q6bnVsbH19LHtrZXk6ImZldGNoSWZSZWYiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdJiZhcmd1bWVudHNbMV07cmV0dXJuIGUgaW5zdGFuY2VvZiBhLlJlZj90aGlzLmZldGNoKGUsdCk6ZX19LHtrZXk6ImZldGNoIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSYmYXJndW1lbnRzWzFdO2lmKCEoZSBpbnN0YW5jZW9mIGEuUmVmKSl0aHJvdyBuZXcgRXJyb3IoInJlZiBvYmplY3QgaXMgbm90IGEgcmVmZXJlbmNlIik7dmFyIHI9ZS5udW0saT10aGlzLl9jYWNoZU1hcC5nZXQocik7aWYodm9pZCAwIT09aSlyZXR1cm4gaSBpbnN0YW5jZW9mIGEuRGljdCYmIWkub2JqSWQmJihpLm9iaklkPWUudG9TdHJpbmcoKSksaTt2YXIgbz10aGlzLmdldEVudHJ5KHIpO2lmKG51bGw9PT1vKXJldHVybiB0aGlzLl9jYWNoZU1hcC5zZXQocixvKSxvO2lmKHRoaXMuX3BlbmRpbmdSZWZzLmhhcyhlKSlyZXR1cm4gdGhpcy5fcGVuZGluZ1JlZnMucmVtb3ZlKGUpLCgwLG4ud2FybikoIklnbm9yaW5nIGNpcmN1bGFyIHJlZmVyZW5jZTogIi5jb25jYXQoZSwiLiIpKSxhLkNJUkNVTEFSX1JFRjt0aGlzLl9wZW5kaW5nUmVmcy5wdXQoZSk7dHJ5e289by51bmNvbXByZXNzZWQ/dGhpcy5mZXRjaFVuY29tcHJlc3NlZChlLG8sdCk6dGhpcy5mZXRjaENvbXByZXNzZWQoZSxvLHQpLHRoaXMuX3BlbmRpbmdSZWZzLnJlbW92ZShlKX1jYXRjaCh0KXt0aHJvdyB0aGlzLl9wZW5kaW5nUmVmcy5yZW1vdmUoZSksdH1yZXR1cm4gbyBpbnN0YW5jZW9mIGEuRGljdD9vLm9iaklkPWUudG9TdHJpbmcoKTpvIGluc3RhbmNlb2Ygcy5CYXNlU3RyZWFtJiYoby5kaWN0Lm9iaklkPWUudG9TdHJpbmcoKSksb319LHtrZXk6ImZldGNoVW5jb21wcmVzc2VkIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciByPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdJiZhcmd1bWVudHNbMl0sYz1lLmdlbix1PWUubnVtO2lmKHQuZ2VuIT09Yyl7dmFyIGw9IkluY29uc2lzdGVudCBnZW5lcmF0aW9uIGluIFhSZWY6ICIuY29uY2F0KGUpO2lmKHRoaXMuX2dlbmVyYXRpb25GYWxsYmFjayYmdC5nZW48YylyZXR1cm4oMCxuLndhcm4pKGwpLHRoaXMuZmV0Y2hVbmNvbXByZXNzZWQoYS5SZWYuZ2V0KHUsdC5nZW4pLHQscik7dGhyb3cgbmV3IGkuWFJlZkVudHJ5RXhjZXB0aW9uKGwpfXZhciBmPXRoaXMuc3RyZWFtLm1ha2VTdWJTdHJlYW0odC5vZmZzZXQrdGhpcy5zdHJlYW0uc3RhcnQpLGg9bmV3IG8uUGFyc2VyKHtsZXhlcjpuZXcgby5MZXhlcihmKSx4cmVmOnRoaXMsYWxsb3dTdHJlYW1zOiEwfSksZD1oLmdldE9iaigpLHA9aC5nZXRPYmooKSxnPWguZ2V0T2JqKCk7aWYoZCE9PXV8fHAhPT1jfHwhKGcgaW5zdGFuY2VvZiBhLkNtZCkpdGhyb3cgbmV3IGkuWFJlZkVudHJ5RXhjZXB0aW9uKCJCYWQgKHVuY29tcHJlc3NlZCkgWFJlZiBlbnRyeTogIi5jb25jYXQoZSkpO2lmKCJvYmoiIT09Zy5jbWQpe2lmKGcuY21kLnN0YXJ0c1dpdGgoIm9iaiIpJiYodT1wYXJzZUludChnLmNtZC5zdWJzdHJpbmcoMyksMTApLCFOdW1iZXIuaXNOYU4odSkpKXJldHVybiB1O3Rocm93IG5ldyBpLlhSZWZFbnRyeUV4Y2VwdGlvbigiQmFkICh1bmNvbXByZXNzZWQpIFhSZWYgZW50cnk6ICIuY29uY2F0KGUpKX1yZXR1cm4odD10aGlzLmVuY3J5cHQmJiFyP2guZ2V0T2JqKHRoaXMuZW5jcnlwdC5jcmVhdGVDaXBoZXJUcmFuc2Zvcm0odSxjKSk6aC5nZXRPYmooKSlpbnN0YW5jZW9mIHMuQmFzZVN0cmVhbXx8dGhpcy5fY2FjaGVNYXAuc2V0KHUsdCksdH19LHtrZXk6ImZldGNoQ29tcHJlc3NlZCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgcj10Lm9mZnNldCxjPXRoaXMuZmV0Y2goYS5SZWYuZ2V0KHIsMCkpO2lmKCEoYyBpbnN0YW5jZW9mIHMuQmFzZVN0cmVhbSkpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoImJhZCBPYmpTdG0gc3RyZWFtIik7dmFyIHU9Yy5kaWN0LmdldCgiRmlyc3QiKSxsPWMuZGljdC5nZXQoIk4iKTtpZighTnVtYmVyLmlzSW50ZWdlcih1KXx8IU51bWJlci5pc0ludGVnZXIobCkpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoImludmFsaWQgZmlyc3QgYW5kIG4gcGFyYW1ldGVycyBmb3IgT2JqU3RtIHN0cmVhbSIpO2Zvcih2YXIgZj1uZXcgby5QYXJzZXIoe2xleGVyOm5ldyBvLkxleGVyKGMpLHhyZWY6dGhpcyxhbGxvd1N0cmVhbXM6ITB9KSxoPW5ldyBBcnJheShsKSxkPW5ldyBBcnJheShsKSxwPTA7cDxsOysrcCl7dmFyIGc9Zi5nZXRPYmooKTtpZighTnVtYmVyLmlzSW50ZWdlcihnKSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiaW52YWxpZCBvYmplY3QgbnVtYmVyIGluIHRoZSBPYmpTdG0gc3RyZWFtOiAiLmNvbmNhdChnKSk7dmFyIHY9Zi5nZXRPYmooKTtpZighTnVtYmVyLmlzSW50ZWdlcih2KSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiaW52YWxpZCBvYmplY3Qgb2Zmc2V0IGluIHRoZSBPYmpTdG0gc3RyZWFtOiAiLmNvbmNhdCh2KSk7aFtwXT1nLGRbcF09dn1mb3IodmFyIHk9KGMuc3RhcnR8fDApK3UsbT1uZXcgQXJyYXkobCksYj0wO2I8bDsrK2Ipe3ZhciB3PWI8bC0xP2RbYisxXS1kW2JdOnZvaWQgMDtpZih3PDApdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIkludmFsaWQgb2Zmc2V0IGluIHRoZSBPYmpTdG0gc3RyZWFtLiIpO3ZhciBrPShmPW5ldyBvLlBhcnNlcih7bGV4ZXI6bmV3IG8uTGV4ZXIoYy5tYWtlU3ViU3RyZWFtKHkrZFtiXSx3LGMuZGljdCkpLHhyZWY6dGhpcyxhbGxvd1N0cmVhbXM6ITB9KSkuZ2V0T2JqKCk7aWYobVtiXT1rLCEoayBpbnN0YW5jZW9mIHMuQmFzZVN0cmVhbSkpe3ZhciBTPWhbYl0seD10aGlzLmVudHJpZXNbU107eCYmeC5vZmZzZXQ9PT1yJiZ4Lmdlbj09PWImJnRoaXMuX2NhY2hlTWFwLnNldChTLGspfX1pZih2b2lkIDA9PT0odD1tW3QuZ2VuXSkpdGhyb3cgbmV3IGkuWFJlZkVudHJ5RXhjZXB0aW9uKCJCYWQgKGNvbXByZXNzZWQpIFhSZWYgZW50cnk6ICIuY29uY2F0KGUpKTtyZXR1cm4gdH19LHtrZXk6ImZldGNoSWZSZWZBc3luYyIsdmFsdWU6KGY9aChsKCkubWFyaygoZnVuY3Rpb24gZSh0LHIpe3JldHVybiBsKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6aWYoISh0IGluc3RhbmNlb2YgYS5SZWYpKXtlLm5leHQ9MjticmVha31yZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsdGhpcy5mZXRjaEFzeW5jKHQscikpO2Nhc2UgMjpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsdCk7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSksZnVuY3Rpb24oZSx0KXtyZXR1cm4gZi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KX0se2tleToiZmV0Y2hBc3luYyIsdmFsdWU6KHU9aChsKCkubWFyaygoZnVuY3Rpb24gZSh0LHIpe3JldHVybiBsKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUucHJldj0wLGUuYWJydXB0KCJyZXR1cm4iLHRoaXMuZmV0Y2godCxyKSk7Y2FzZSA0OmlmKGUucHJldj00LGUudDA9ZS5jYXRjaCgwKSxlLnQwIGluc3RhbmNlb2YgaS5NaXNzaW5nRGF0YUV4Y2VwdGlvbil7ZS5uZXh0PTg7YnJlYWt9dGhyb3cgZS50MDtjYXNlIDg6cmV0dXJuIGUubmV4dD0xMCx0aGlzLnBkZk1hbmFnZXIucmVxdWVzdFJhbmdlKGUudDAuYmVnaW4sZS50MC5lbmQpO2Nhc2UgMTA6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHRoaXMuZmV0Y2hBc3luYyh0LHIpKTtjYXNlIDExOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzLFtbMCw0XV0pfSkpKSxmdW5jdGlvbihlLHQpe3JldHVybiB1LmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pfSx7a2V5OiJnZXRDYXRhbG9nT2JqIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJvb3R9fV0sciYmZyh0LnByb3RvdHlwZSxyKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxlfSgpO3QuWFJlZj12fSwoZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuTWVzc2FnZUhhbmRsZXI9dm9pZCAwO3ZhciBuPXIoMik7ZnVuY3Rpb24gYSgpe2E9ZnVuY3Rpb24oKXtyZXR1cm4gZX07dmFyIGU9e30sdD1PYmplY3QucHJvdG90eXBlLHI9dC5oYXNPd25Qcm9wZXJ0eSxuPU9iamVjdC5kZWZpbmVQcm9wZXJ0eXx8ZnVuY3Rpb24oZSx0LHIpe2VbdF09ci52YWx1ZX0saT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sP1N5bWJvbDp7fSxvPWkuaXRlcmF0b3J8fCJAQGl0ZXJhdG9yIixjPWkuYXN5bmNJdGVyYXRvcnx8IkBAYXN5bmNJdGVyYXRvciIsdT1pLnRvU3RyaW5nVGFnfHwiQEB0b1N0cmluZ1RhZyI7ZnVuY3Rpb24gbChlLHQscil7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOnIsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KSxlW3RdfXRyeXtsKHt9LCIiKX1jYXRjaChlKXtsPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZVt0XT1yfX1mdW5jdGlvbiBmKGUsdCxyLGEpe3ZhciBpPXQmJnQucHJvdG90eXBlIGluc3RhbmNlb2YgcD90OnAsbz1PYmplY3QuY3JlYXRlKGkucHJvdG90eXBlKSxzPW5ldyBGKGF8fFtdKTtyZXR1cm4gbihvLCJfaW52b2tlIix7dmFsdWU6eChlLHIscyl9KSxvfWZ1bmN0aW9uIGgoZSx0LHIpe3RyeXtyZXR1cm57dHlwZToibm9ybWFsIixhcmc6ZS5jYWxsKHQscil9fWNhdGNoKGUpe3JldHVybnt0eXBlOiJ0aHJvdyIsYXJnOmV9fX1lLndyYXA9Zjt2YXIgZD17fTtmdW5jdGlvbiBwKCl7fWZ1bmN0aW9uIGcoKXt9ZnVuY3Rpb24gdigpe312YXIgeT17fTtsKHksbywoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKTt2YXIgbT1PYmplY3QuZ2V0UHJvdG90eXBlT2YsYj1tJiZtKG0oUChbXSkpKTtiJiZiIT09dCYmci5jYWxsKGIsbykmJih5PWIpO3ZhciB3PXYucHJvdG90eXBlPXAucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoeSk7ZnVuY3Rpb24gayhlKXtbIm5leHQiLCJ0aHJvdyIsInJldHVybiJdLmZvckVhY2goKGZ1bmN0aW9uKHQpe2woZSx0LChmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5faW52b2tlKHQsZSl9KSl9KSl9ZnVuY3Rpb24gUyhlLHQpe2Z1bmN0aW9uIGEobixpLG8sYyl7dmFyIHU9aChlW25dLGUsaSk7aWYoInRocm93IiE9PXUudHlwZSl7dmFyIGw9dS5hcmcsZj1sLnZhbHVlO3JldHVybiBmJiYib2JqZWN0Ij09cyhmKSYmci5jYWxsKGYsIl9fYXdhaXQiKT90LnJlc29sdmUoZi5fX2F3YWl0KS50aGVuKChmdW5jdGlvbihlKXthKCJuZXh0IixlLG8sYyl9KSwoZnVuY3Rpb24oZSl7YSgidGhyb3ciLGUsbyxjKX0pKTp0LnJlc29sdmUoZikudGhlbigoZnVuY3Rpb24oZSl7bC52YWx1ZT1lLG8obCl9KSwoZnVuY3Rpb24oZSl7cmV0dXJuIGEoInRocm93IixlLG8sYyl9KSl9Yyh1LmFyZyl9dmFyIGk7bih0aGlzLCJfaW52b2tlIix7dmFsdWU6ZnVuY3Rpb24oZSxyKXtmdW5jdGlvbiBuKCl7cmV0dXJuIG5ldyB0KChmdW5jdGlvbih0LG4pe2EoZSxyLHQsbil9KSl9cmV0dXJuIGk9aT9pLnRoZW4obixuKTpuKCl9fSl9ZnVuY3Rpb24geChlLHQscil7dmFyIG49InN1c3BlbmRlZFN0YXJ0IjtyZXR1cm4gZnVuY3Rpb24oYSxpKXtpZigiZXhlY3V0aW5nIj09PW4pdGhyb3cgbmV3IEVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nIik7aWYoImNvbXBsZXRlZCI9PT1uKXtpZigidGhyb3ciPT09YSl0aHJvdyBpO3JldHVybnt2YWx1ZTp2b2lkIDAsZG9uZTohMH19Zm9yKHIubWV0aG9kPWEsci5hcmc9aTs7KXt2YXIgbz1yLmRlbGVnYXRlO2lmKG8pe3ZhciBzPU8obyxyKTtpZihzKXtpZihzPT09ZCljb250aW51ZTtyZXR1cm4gc319aWYoIm5leHQiPT09ci5tZXRob2Qpci5zZW50PXIuX3NlbnQ9ci5hcmc7ZWxzZSBpZigidGhyb3ciPT09ci5tZXRob2Qpe2lmKCJzdXNwZW5kZWRTdGFydCI9PT1uKXRocm93IG49ImNvbXBsZXRlZCIsci5hcmc7ci5kaXNwYXRjaEV4Y2VwdGlvbihyLmFyZyl9ZWxzZSJyZXR1cm4iPT09ci5tZXRob2QmJnIuYWJydXB0KCJyZXR1cm4iLHIuYXJnKTtuPSJleGVjdXRpbmciO3ZhciBjPWgoZSx0LHIpO2lmKCJub3JtYWwiPT09Yy50eXBlKXtpZihuPXIuZG9uZT8iY29tcGxldGVkIjoic3VzcGVuZGVkWWllbGQiLGMuYXJnPT09ZCljb250aW51ZTtyZXR1cm57dmFsdWU6Yy5hcmcsZG9uZTpyLmRvbmV9fSJ0aHJvdyI9PT1jLnR5cGUmJihuPSJjb21wbGV0ZWQiLHIubWV0aG9kPSJ0aHJvdyIsci5hcmc9Yy5hcmcpfX19ZnVuY3Rpb24gTyhlLHQpe3ZhciByPXQubWV0aG9kLG49ZS5pdGVyYXRvcltyXTtpZih2b2lkIDA9PT1uKXJldHVybiB0LmRlbGVnYXRlPW51bGwsInRocm93Ij09PXImJmUuaXRlcmF0b3IucmV0dXJuJiYodC5tZXRob2Q9InJldHVybiIsdC5hcmc9dm9pZCAwLE8oZSx0KSwidGhyb3ciPT09dC5tZXRob2QpfHwicmV0dXJuIiE9PXImJih0Lm1ldGhvZD0idGhyb3ciLHQuYXJnPW5ldyBUeXBlRXJyb3IoIlRoZSBpdGVyYXRvciBkb2VzIG5vdCBwcm92aWRlIGEgJyIrcisiJyBtZXRob2QiKSksZDt2YXIgYT1oKG4sZS5pdGVyYXRvcix0LmFyZyk7aWYoInRocm93Ij09PWEudHlwZSlyZXR1cm4gdC5tZXRob2Q9InRocm93Iix0LmFyZz1hLmFyZyx0LmRlbGVnYXRlPW51bGwsZDt2YXIgaT1hLmFyZztyZXR1cm4gaT9pLmRvbmU/KHRbZS5yZXN1bHROYW1lXT1pLnZhbHVlLHQubmV4dD1lLm5leHRMb2MsInJldHVybiIhPT10Lm1ldGhvZCYmKHQubWV0aG9kPSJuZXh0Iix0LmFyZz12b2lkIDApLHQuZGVsZWdhdGU9bnVsbCxkKTppOih0Lm1ldGhvZD0idGhyb3ciLHQuYXJnPW5ldyBUeXBlRXJyb3IoIml0ZXJhdG9yIHJlc3VsdCBpcyBub3QgYW4gb2JqZWN0IiksdC5kZWxlZ2F0ZT1udWxsLGQpfWZ1bmN0aW9uIEEoZSl7dmFyIHQ9e3RyeUxvYzplWzBdfTsxIGluIGUmJih0LmNhdGNoTG9jPWVbMV0pLDIgaW4gZSYmKHQuZmluYWxseUxvYz1lWzJdLHQuYWZ0ZXJMb2M9ZVszXSksdGhpcy50cnlFbnRyaWVzLnB1c2godCl9ZnVuY3Rpb24gQyhlKXt2YXIgdD1lLmNvbXBsZXRpb258fHt9O3QudHlwZT0ibm9ybWFsIixkZWxldGUgdC5hcmcsZS5jb21wbGV0aW9uPXR9ZnVuY3Rpb24gRihlKXt0aGlzLnRyeUVudHJpZXM9W3t0cnlMb2M6InJvb3QifV0sZS5mb3JFYWNoKEEsdGhpcyksdGhpcy5yZXNldCghMCl9ZnVuY3Rpb24gUChlKXtpZihlKXt2YXIgdD1lW29dO2lmKHQpcmV0dXJuIHQuY2FsbChlKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgZS5uZXh0KXJldHVybiBlO2lmKCFpc05hTihlLmxlbmd0aCkpe3ZhciBuPS0xLGE9ZnVuY3Rpb24gdCgpe2Zvcig7KytuPGUubGVuZ3RoOylpZihyLmNhbGwoZSxuKSlyZXR1cm4gdC52YWx1ZT1lW25dLHQuZG9uZT0hMSx0O3JldHVybiB0LnZhbHVlPXZvaWQgMCx0LmRvbmU9ITAsdH07cmV0dXJuIGEubmV4dD1hfX1yZXR1cm57bmV4dDpUfX1mdW5jdGlvbiBUKCl7cmV0dXJue3ZhbHVlOnZvaWQgMCxkb25lOiEwfX1yZXR1cm4gZy5wcm90b3R5cGU9dixuKHcsImNvbnN0cnVjdG9yIix7dmFsdWU6dixjb25maWd1cmFibGU6ITB9KSxuKHYsImNvbnN0cnVjdG9yIix7dmFsdWU6Zyxjb25maWd1cmFibGU6ITB9KSxnLmRpc3BsYXlOYW1lPWwodix1LCJHZW5lcmF0b3JGdW5jdGlvbiIpLGUuaXNHZW5lcmF0b3JGdW5jdGlvbj1mdW5jdGlvbihlKXt2YXIgdD0iZnVuY3Rpb24iPT10eXBlb2YgZSYmZS5jb25zdHJ1Y3RvcjtyZXR1cm4hIXQmJih0PT09Z3x8IkdlbmVyYXRvckZ1bmN0aW9uIj09PSh0LmRpc3BsYXlOYW1lfHx0Lm5hbWUpKX0sZS5tYXJrPWZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsdik6KGUuX19wcm90b19fPXYsbChlLHUsIkdlbmVyYXRvckZ1bmN0aW9uIikpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodyksZX0sZS5hd3JhcD1mdW5jdGlvbihlKXtyZXR1cm57X19hd2FpdDplfX0sayhTLnByb3RvdHlwZSksbChTLnByb3RvdHlwZSxjLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpLGUuQXN5bmNJdGVyYXRvcj1TLGUuYXN5bmM9ZnVuY3Rpb24odCxyLG4sYSxpKXt2b2lkIDA9PT1pJiYoaT1Qcm9taXNlKTt2YXIgbz1uZXcgUyhmKHQscixuLGEpLGkpO3JldHVybiBlLmlzR2VuZXJhdG9yRnVuY3Rpb24ocik/bzpvLm5leHQoKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gZS5kb25lP2UudmFsdWU6by5uZXh0KCl9KSl9LGsodyksbCh3LHUsIkdlbmVyYXRvciIpLGwodyxvLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpLGwodywidG9TdHJpbmciLChmdW5jdGlvbigpe3JldHVybiJbb2JqZWN0IEdlbmVyYXRvcl0ifSkpLGUua2V5cz1mdW5jdGlvbihlKXt2YXIgdD1PYmplY3QoZSkscj1bXTtmb3IodmFyIG4gaW4gdClyLnB1c2gobik7cmV0dXJuIHIucmV2ZXJzZSgpLGZ1bmN0aW9uIGUoKXtmb3IoO3IubGVuZ3RoOyl7dmFyIG49ci5wb3AoKTtpZihuIGluIHQpcmV0dXJuIGUudmFsdWU9bixlLmRvbmU9ITEsZX1yZXR1cm4gZS5kb25lPSEwLGV9fSxlLnZhbHVlcz1QLEYucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpGLHJlc2V0OmZ1bmN0aW9uKGUpe2lmKHRoaXMucHJldj0wLHRoaXMubmV4dD0wLHRoaXMuc2VudD10aGlzLl9zZW50PXZvaWQgMCx0aGlzLmRvbmU9ITEsdGhpcy5kZWxlZ2F0ZT1udWxsLHRoaXMubWV0aG9kPSJuZXh0Iix0aGlzLmFyZz12b2lkIDAsdGhpcy50cnlFbnRyaWVzLmZvckVhY2goQyksIWUpZm9yKHZhciB0IGluIHRoaXMpInQiPT09dC5jaGFyQXQoMCkmJnIuY2FsbCh0aGlzLHQpJiYhaXNOYU4oK3Quc2xpY2UoMSkpJiYodGhpc1t0XT12b2lkIDApfSxzdG9wOmZ1bmN0aW9uKCl7dGhpcy5kb25lPSEwO3ZhciBlPXRoaXMudHJ5RW50cmllc1swXS5jb21wbGV0aW9uO2lmKCJ0aHJvdyI9PT1lLnR5cGUpdGhyb3cgZS5hcmc7cmV0dXJuIHRoaXMucnZhbH0sZGlzcGF0Y2hFeGNlcHRpb246ZnVuY3Rpb24oZSl7aWYodGhpcy5kb25lKXRocm93IGU7dmFyIHQ9dGhpcztmdW5jdGlvbiBuKHIsbil7cmV0dXJuIG8udHlwZT0idGhyb3ciLG8uYXJnPWUsdC5uZXh0PXIsbiYmKHQubWV0aG9kPSJuZXh0Iix0LmFyZz12b2lkIDApLCEhbn1mb3IodmFyIGE9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2E+PTA7LS1hKXt2YXIgaT10aGlzLnRyeUVudHJpZXNbYV0sbz1pLmNvbXBsZXRpb247aWYoInJvb3QiPT09aS50cnlMb2MpcmV0dXJuIG4oImVuZCIpO2lmKGkudHJ5TG9jPD10aGlzLnByZXYpe3ZhciBzPXIuY2FsbChpLCJjYXRjaExvYyIpLGM9ci5jYWxsKGksImZpbmFsbHlMb2MiKTtpZihzJiZjKXtpZih0aGlzLnByZXY8aS5jYXRjaExvYylyZXR1cm4gbihpLmNhdGNoTG9jLCEwKTtpZih0aGlzLnByZXY8aS5maW5hbGx5TG9jKXJldHVybiBuKGkuZmluYWxseUxvYyl9ZWxzZSBpZihzKXtpZih0aGlzLnByZXY8aS5jYXRjaExvYylyZXR1cm4gbihpLmNhdGNoTG9jLCEwKX1lbHNle2lmKCFjKXRocm93IG5ldyBFcnJvcigidHJ5IHN0YXRlbWVudCB3aXRob3V0IGNhdGNoIG9yIGZpbmFsbHkiKTtpZih0aGlzLnByZXY8aS5maW5hbGx5TG9jKXJldHVybiBuKGkuZmluYWxseUxvYyl9fX19LGFicnVwdDpmdW5jdGlvbihlLHQpe2Zvcih2YXIgbj10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7bj49MDstLW4pe3ZhciBhPXRoaXMudHJ5RW50cmllc1tuXTtpZihhLnRyeUxvYzw9dGhpcy5wcmV2JiZyLmNhbGwoYSwiZmluYWxseUxvYyIpJiZ0aGlzLnByZXY8YS5maW5hbGx5TG9jKXt2YXIgaT1hO2JyZWFrfX1pJiYoImJyZWFrIj09PWV8fCJjb250aW51ZSI9PT1lKSYmaS50cnlMb2M8PXQmJnQ8PWkuZmluYWxseUxvYyYmKGk9bnVsbCk7dmFyIG89aT9pLmNvbXBsZXRpb246e307cmV0dXJuIG8udHlwZT1lLG8uYXJnPXQsaT8odGhpcy5tZXRob2Q9Im5leHQiLHRoaXMubmV4dD1pLmZpbmFsbHlMb2MsZCk6dGhpcy5jb21wbGV0ZShvKX0sY29tcGxldGU6ZnVuY3Rpb24oZSx0KXtpZigidGhyb3ciPT09ZS50eXBlKXRocm93IGUuYXJnO3JldHVybiJicmVhayI9PT1lLnR5cGV8fCJjb250aW51ZSI9PT1lLnR5cGU/dGhpcy5uZXh0PWUuYXJnOiJyZXR1cm4iPT09ZS50eXBlPyh0aGlzLnJ2YWw9dGhpcy5hcmc9ZS5hcmcsdGhpcy5tZXRob2Q9InJldHVybiIsdGhpcy5uZXh0PSJlbmQiKToibm9ybWFsIj09PWUudHlwZSYmdCYmKHRoaXMubmV4dD10KSxkfSxmaW5pc2g6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTt0Pj0wOy0tdCl7dmFyIHI9dGhpcy50cnlFbnRyaWVzW3RdO2lmKHIuZmluYWxseUxvYz09PWUpcmV0dXJuIHRoaXMuY29tcGxldGUoci5jb21wbGV0aW9uLHIuYWZ0ZXJMb2MpLEMociksZH19LGNhdGNoOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7dD49MDstLXQpe3ZhciByPXRoaXMudHJ5RW50cmllc1t0XTtpZihyLnRyeUxvYz09PWUpe3ZhciBuPXIuY29tcGxldGlvbjtpZigidGhyb3ciPT09bi50eXBlKXt2YXIgYT1uLmFyZztDKHIpfXJldHVybiBhfX10aHJvdyBuZXcgRXJyb3IoImlsbGVnYWwgY2F0Y2ggYXR0ZW1wdCIpfSxkZWxlZ2F0ZVlpZWxkOmZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZT17aXRlcmF0b3I6UChlKSxyZXN1bHROYW1lOnQsbmV4dExvYzpyfSwibmV4dCI9PT10aGlzLm1ldGhvZCYmKHRoaXMuYXJnPXZvaWQgMCksZH19LGV9ZnVuY3Rpb24gaShlLHQscixuLGEsaSxvKXt0cnl7dmFyIHM9ZVtpXShvKSxjPXMudmFsdWV9Y2F0Y2goZSl7cmV0dXJuIHZvaWQgcihlKX1zLmRvbmU/dChjKTpQcm9taXNlLnJlc29sdmUoYykudGhlbihuLGEpfWZ1bmN0aW9uIG8oZSx0KXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIG49dFtyXTtuLmVudW1lcmFibGU9bi5lbnVtZXJhYmxlfHwhMSxuLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gbiYmKG4ud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCh2b2lkIDAsYT1mdW5jdGlvbihlLHQpe2lmKCJvYmplY3QiIT09cyhlKXx8bnVsbD09PWUpcmV0dXJuIGU7dmFyIHI9ZVtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PXIpe3ZhciBuPXIuY2FsbChlLCJzdHJpbmciKTtpZigib2JqZWN0IiE9PXMobikpcmV0dXJuIG47dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4gU3RyaW5nKGUpfShuLmtleSksInN5bWJvbCI9PT1zKGEpP2E6U3RyaW5nKGEpKSxuKX12YXIgYX1mdW5jdGlvbiBzKGUpe3JldHVybiBzPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSxzKGUpfWZ1bmN0aW9uIGMoZSl7c3dpdGNoKGUgaW5zdGFuY2VvZiBFcnJvcnx8Im9iamVjdCI9PT1zKGUpJiZudWxsIT09ZXx8KDAsbi51bnJlYWNoYWJsZSkoJ3dyYXBSZWFzb246IEV4cGVjdGVkICJyZWFzb24iIHRvIGJlIGEgKHBvc3NpYmx5IGNsb25lZCkgRXJyb3IuJyksZS5uYW1lKXtjYXNlIkFib3J0RXhjZXB0aW9uIjpyZXR1cm4gbmV3IG4uQWJvcnRFeGNlcHRpb24oZS5tZXNzYWdlKTtjYXNlIk1pc3NpbmdQREZFeGNlcHRpb24iOnJldHVybiBuZXcgbi5NaXNzaW5nUERGRXhjZXB0aW9uKGUubWVzc2FnZSk7Y2FzZSJQYXNzd29yZEV4Y2VwdGlvbiI6cmV0dXJuIG5ldyBuLlBhc3N3b3JkRXhjZXB0aW9uKGUubWVzc2FnZSxlLmNvZGUpO2Nhc2UiVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9uIjpyZXR1cm4gbmV3IG4uVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9uKGUubWVzc2FnZSxlLnN0YXR1cyk7Y2FzZSJVbmtub3duRXJyb3JFeGNlcHRpb24iOnJldHVybiBuZXcgbi5Vbmtub3duRXJyb3JFeGNlcHRpb24oZS5tZXNzYWdlLGUuZGV0YWlscyk7ZGVmYXVsdDpyZXR1cm4gbmV3IG4uVW5rbm93bkVycm9yRXhjZXB0aW9uKGUubWVzc2FnZSxlLnRvU3RyaW5nKCkpfX12YXIgdT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCxyLG4pe3ZhciBhPXRoaXM7IWZ1bmN0aW9uKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsZSksdGhpcy5zb3VyY2VOYW1lPXQsdGhpcy50YXJnZXROYW1lPXIsdGhpcy5jb21PYmo9bix0aGlzLmNhbGxiYWNrSWQ9MSx0aGlzLnN0cmVhbUlkPTEsdGhpcy5zdHJlYW1TaW5rcz1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMuc3RyZWFtQ29udHJvbGxlcnM9T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLmNhbGxiYWNrQ2FwYWJpbGl0aWVzPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5hY3Rpb25IYW5kbGVyPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5fb25Db21PYmpPbk1lc3NhZ2U9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5kYXRhO2lmKHQudGFyZ2V0TmFtZT09PWEuc291cmNlTmFtZSlpZih0LnN0cmVhbSlhLl9wcm9jZXNzU3RyZWFtTWVzc2FnZSh0KTtlbHNlIGlmKHQuY2FsbGJhY2spe3ZhciByPXQuY2FsbGJhY2tJZCxpPWEuY2FsbGJhY2tDYXBhYmlsaXRpZXNbcl07aWYoIWkpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgcmVzb2x2ZSBjYWxsYmFjayAiLmNvbmNhdChyKSk7aWYoZGVsZXRlIGEuY2FsbGJhY2tDYXBhYmlsaXRpZXNbcl0sMT09PXQuY2FsbGJhY2spaS5yZXNvbHZlKHQuZGF0YSk7ZWxzZXtpZigyIT09dC5jYWxsYmFjayl0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgY2FsbGJhY2sgY2FzZSIpO2kucmVqZWN0KGModC5yZWFzb24pKX19ZWxzZXt2YXIgbz1hLmFjdGlvbkhhbmRsZXJbdC5hY3Rpb25dO2lmKCFvKXRocm93IG5ldyBFcnJvcigiVW5rbm93biBhY3Rpb24gZnJvbSB3b3JrZXI6ICIuY29uY2F0KHQuYWN0aW9uKSk7aWYodC5jYWxsYmFja0lkKXt2YXIgcz1hLnNvdXJjZU5hbWUsdT10LnNvdXJjZU5hbWU7bmV3IFByb21pc2UoKGZ1bmN0aW9uKGUpe2Uobyh0LmRhdGEpKX0pKS50aGVuKChmdW5jdGlvbihlKXtuLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOnMsdGFyZ2V0TmFtZTp1LGNhbGxiYWNrOjEsY2FsbGJhY2tJZDp0LmNhbGxiYWNrSWQsZGF0YTplfSl9KSwoZnVuY3Rpb24oZSl7bi5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpzLHRhcmdldE5hbWU6dSxjYWxsYmFjazoyLGNhbGxiYWNrSWQ6dC5jYWxsYmFja0lkLHJlYXNvbjpjKGUpfSl9KSl9ZWxzZSB0LnN0cmVhbUlkP2EuX2NyZWF0ZVN0cmVhbVNpbmsodCk6byh0LmRhdGEpfX0sbi5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIix0aGlzLl9vbkNvbU9iak9uTWVzc2FnZSl9dmFyIHQscixzLHU7cmV0dXJuIHQ9ZSxyPVt7a2V5OiJvbiIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzLmFjdGlvbkhhbmRsZXI7aWYocltlXSl0aHJvdyBuZXcgRXJyb3IoJ1RoZXJlIGlzIGFscmVhZHkgYW4gYWN0aW9uTmFtZSBjYWxsZWQgIicuY29uY2F0KGUsJyInKSk7cltlXT10fX0se2tleToic2VuZCIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIpe3RoaXMuY29tT2JqLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOnRoaXMuc291cmNlTmFtZSx0YXJnZXROYW1lOnRoaXMudGFyZ2V0TmFtZSxhY3Rpb246ZSxkYXRhOnR9LHIpfX0se2tleToic2VuZFdpdGhQcm9taXNlIix2YWx1ZTpmdW5jdGlvbihlLHQscil7dmFyIGE9dGhpcy5jYWxsYmFja0lkKyssaT0oMCxuLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpO3RoaXMuY2FsbGJhY2tDYXBhYmlsaXRpZXNbYV09aTt0cnl7dGhpcy5jb21PYmoucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6dGhpcy5zb3VyY2VOYW1lLHRhcmdldE5hbWU6dGhpcy50YXJnZXROYW1lLGFjdGlvbjplLGNhbGxiYWNrSWQ6YSxkYXRhOnR9LHIpfWNhdGNoKGUpe2kucmVqZWN0KGUpfXJldHVybiBpLnByb21pc2V9fSx7a2V5OiJzZW5kV2l0aFN0cmVhbSIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIsYSl7dmFyIGk9dGhpcyxvPXRoaXMuc3RyZWFtSWQrKyxzPXRoaXMuc291cmNlTmFtZSx1PXRoaXMudGFyZ2V0TmFtZSxsPXRoaXMuY29tT2JqO3JldHVybiBuZXcgUmVhZGFibGVTdHJlYW0oe3N0YXJ0OmZ1bmN0aW9uKHIpe3ZhciBjPSgwLG4uY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkpKCk7cmV0dXJuIGkuc3RyZWFtQ29udHJvbGxlcnNbb109e2NvbnRyb2xsZXI6cixzdGFydENhbGw6YyxwdWxsQ2FsbDpudWxsLGNhbmNlbENhbGw6bnVsbCxpc0Nsb3NlZDohMX0sbC5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpzLHRhcmdldE5hbWU6dSxhY3Rpb246ZSxzdHJlYW1JZDpvLGRhdGE6dCxkZXNpcmVkU2l6ZTpyLmRlc2lyZWRTaXplfSxhKSxjLnByb21pc2V9LHB1bGw6ZnVuY3Rpb24oZSl7dmFyIHQ9KDAsbi5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTtyZXR1cm4gaS5zdHJlYW1Db250cm9sbGVyc1tvXS5wdWxsQ2FsbD10LGwucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6cyx0YXJnZXROYW1lOnUsc3RyZWFtOjYsc3RyZWFtSWQ6byxkZXNpcmVkU2l6ZTplLmRlc2lyZWRTaXplfSksdC5wcm9taXNlfSxjYW5jZWw6ZnVuY3Rpb24oZSl7KDAsbi5hc3NlcnQpKGUgaW5zdGFuY2VvZiBFcnJvciwiY2FuY2VsIG11c3QgaGF2ZSBhIHZhbGlkIHJlYXNvbiIpO3ZhciB0PSgwLG4uY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkpKCk7cmV0dXJuIGkuc3RyZWFtQ29udHJvbGxlcnNbb10uY2FuY2VsQ2FsbD10LGkuc3RyZWFtQ29udHJvbGxlcnNbb10uaXNDbG9zZWQ9ITAsbC5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpzLHRhcmdldE5hbWU6dSxzdHJlYW06MSxzdHJlYW1JZDpvLHJlYXNvbjpjKGUpfSksdC5wcm9taXNlfX0scil9fSx7a2V5OiJfY3JlYXRlU3RyZWFtU2luayIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5zdHJlYW1JZCxyPXRoaXMuc291cmNlTmFtZSxhPWUuc291cmNlTmFtZSxpPXRoaXMuY29tT2JqLG89dGhpcyxzPXRoaXMuYWN0aW9uSGFuZGxlcltlLmFjdGlvbl0sdT17ZW5xdWV1ZTpmdW5jdGlvbihlKXt2YXIgbz1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06MSxzPWFyZ3VtZW50cy5sZW5ndGg+Mj9hcmd1bWVudHNbMl06dm9pZCAwO2lmKCF0aGlzLmlzQ2FuY2VsbGVkKXt2YXIgYz10aGlzLmRlc2lyZWRTaXplO3RoaXMuZGVzaXJlZFNpemUtPW8sYz4wJiZ0aGlzLmRlc2lyZWRTaXplPD0wJiYodGhpcy5zaW5rQ2FwYWJpbGl0eT0oMCxuLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpLHRoaXMucmVhZHk9dGhpcy5zaW5rQ2FwYWJpbGl0eS5wcm9taXNlKSxpLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOnIsdGFyZ2V0TmFtZTphLHN0cmVhbTo0LHN0cmVhbUlkOnQsY2h1bms6ZX0scyl9fSxjbG9zZTpmdW5jdGlvbigpe3RoaXMuaXNDYW5jZWxsZWR8fCh0aGlzLmlzQ2FuY2VsbGVkPSEwLGkucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6cix0YXJnZXROYW1lOmEsc3RyZWFtOjMsc3RyZWFtSWQ6dH0pLGRlbGV0ZSBvLnN0cmVhbVNpbmtzW3RdKX0sZXJyb3I6ZnVuY3Rpb24oZSl7KDAsbi5hc3NlcnQpKGUgaW5zdGFuY2VvZiBFcnJvciwiZXJyb3IgbXVzdCBoYXZlIGEgdmFsaWQgcmVhc29uIiksdGhpcy5pc0NhbmNlbGxlZHx8KHRoaXMuaXNDYW5jZWxsZWQ9ITAsaS5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpyLHRhcmdldE5hbWU6YSxzdHJlYW06NSxzdHJlYW1JZDp0LHJlYXNvbjpjKGUpfSkpfSxzaW5rQ2FwYWJpbGl0eTooMCxuLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpLG9uUHVsbDpudWxsLG9uQ2FuY2VsOm51bGwsaXNDYW5jZWxsZWQ6ITEsZGVzaXJlZFNpemU6ZS5kZXNpcmVkU2l6ZSxyZWFkeTpudWxsfTt1LnNpbmtDYXBhYmlsaXR5LnJlc29sdmUoKSx1LnJlYWR5PXUuc2lua0NhcGFiaWxpdHkucHJvbWlzZSx0aGlzLnN0cmVhbVNpbmtzW3RdPXUsbmV3IFByb21pc2UoKGZ1bmN0aW9uKHQpe3QocyhlLmRhdGEsdSkpfSkpLnRoZW4oKGZ1bmN0aW9uKCl7aS5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpyLHRhcmdldE5hbWU6YSxzdHJlYW06OCxzdHJlYW1JZDp0LHN1Y2Nlc3M6ITB9KX0pLChmdW5jdGlvbihlKXtpLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOnIsdGFyZ2V0TmFtZTphLHN0cmVhbTo4LHN0cmVhbUlkOnQscmVhc29uOmMoZSl9KX0pKX19LHtrZXk6Il9wcm9jZXNzU3RyZWFtTWVzc2FnZSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5zdHJlYW1JZCxyPXRoaXMuc291cmNlTmFtZSxhPWUuc291cmNlTmFtZSxpPXRoaXMuY29tT2JqLG89dGhpcy5zdHJlYW1Db250cm9sbGVyc1t0XSxzPXRoaXMuc3RyZWFtU2lua3NbdF07c3dpdGNoKGUuc3RyZWFtKXtjYXNlIDg6ZS5zdWNjZXNzP28uc3RhcnRDYWxsLnJlc29sdmUoKTpvLnN0YXJ0Q2FsbC5yZWplY3QoYyhlLnJlYXNvbikpO2JyZWFrO2Nhc2UgNzplLnN1Y2Nlc3M/by5wdWxsQ2FsbC5yZXNvbHZlKCk6by5wdWxsQ2FsbC5yZWplY3QoYyhlLnJlYXNvbikpO2JyZWFrO2Nhc2UgNjppZighcyl7aS5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpyLHRhcmdldE5hbWU6YSxzdHJlYW06NyxzdHJlYW1JZDp0LHN1Y2Nlc3M6ITB9KTticmVha31zLmRlc2lyZWRTaXplPD0wJiZlLmRlc2lyZWRTaXplPjAmJnMuc2lua0NhcGFiaWxpdHkucmVzb2x2ZSgpLHMuZGVzaXJlZFNpemU9ZS5kZXNpcmVkU2l6ZSxuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSl7ZShzLm9uUHVsbCYmcy5vblB1bGwoKSl9KSkudGhlbigoZnVuY3Rpb24oKXtpLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOnIsdGFyZ2V0TmFtZTphLHN0cmVhbTo3LHN0cmVhbUlkOnQsc3VjY2VzczohMH0pfSksKGZ1bmN0aW9uKGUpe2kucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6cix0YXJnZXROYW1lOmEsc3RyZWFtOjcsc3RyZWFtSWQ6dCxyZWFzb246YyhlKX0pfSkpO2JyZWFrO2Nhc2UgNDppZigoMCxuLmFzc2VydCkobywiZW5xdWV1ZSBzaG91bGQgaGF2ZSBzdHJlYW0gY29udHJvbGxlciIpLG8uaXNDbG9zZWQpYnJlYWs7by5jb250cm9sbGVyLmVucXVldWUoZS5jaHVuayk7YnJlYWs7Y2FzZSAzOmlmKCgwLG4uYXNzZXJ0KShvLCJjbG9zZSBzaG91bGQgaGF2ZSBzdHJlYW0gY29udHJvbGxlciIpLG8uaXNDbG9zZWQpYnJlYWs7by5pc0Nsb3NlZD0hMCxvLmNvbnRyb2xsZXIuY2xvc2UoKSx0aGlzLl9kZWxldGVTdHJlYW1Db250cm9sbGVyKG8sdCk7YnJlYWs7Y2FzZSA1OigwLG4uYXNzZXJ0KShvLCJlcnJvciBzaG91bGQgaGF2ZSBzdHJlYW0gY29udHJvbGxlciIpLG8uY29udHJvbGxlci5lcnJvcihjKGUucmVhc29uKSksdGhpcy5fZGVsZXRlU3RyZWFtQ29udHJvbGxlcihvLHQpO2JyZWFrO2Nhc2UgMjplLnN1Y2Nlc3M/by5jYW5jZWxDYWxsLnJlc29sdmUoKTpvLmNhbmNlbENhbGwucmVqZWN0KGMoZS5yZWFzb24pKSx0aGlzLl9kZWxldGVTdHJlYW1Db250cm9sbGVyKG8sdCk7YnJlYWs7Y2FzZSAxOmlmKCFzKWJyZWFrO25ldyBQcm9taXNlKChmdW5jdGlvbih0KXt0KHMub25DYW5jZWwmJnMub25DYW5jZWwoYyhlLnJlYXNvbikpKX0pKS50aGVuKChmdW5jdGlvbigpe2kucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6cix0YXJnZXROYW1lOmEsc3RyZWFtOjIsc3RyZWFtSWQ6dCxzdWNjZXNzOiEwfSl9KSwoZnVuY3Rpb24oZSl7aS5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpyLHRhcmdldE5hbWU6YSxzdHJlYW06MixzdHJlYW1JZDp0LHJlYXNvbjpjKGUpfSl9KSkscy5zaW5rQ2FwYWJpbGl0eS5yZWplY3QoYyhlLnJlYXNvbikpLHMuaXNDYW5jZWxsZWQ9ITAsZGVsZXRlIHRoaXMuc3RyZWFtU2lua3NbdF07YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgc3RyZWFtIGNhc2UiKX19fSx7a2V5OiJfZGVsZXRlU3RyZWFtQ29udHJvbGxlciIsdmFsdWU6KHM9YSgpLm1hcmsoKGZ1bmN0aW9uIGUodCxyKXtyZXR1cm4gYSgpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9MixQcm9taXNlLmFsbFNldHRsZWQoW3Quc3RhcnRDYWxsJiZ0LnN0YXJ0Q2FsbC5wcm9taXNlLHQucHVsbENhbGwmJnQucHVsbENhbGwucHJvbWlzZSx0LmNhbmNlbENhbGwmJnQuY2FuY2VsQ2FsbC5wcm9taXNlXSk7Y2FzZSAyOmRlbGV0ZSB0aGlzLnN0cmVhbUNvbnRyb2xsZXJzW3JdO2Nhc2UgMzpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSksdT1mdW5jdGlvbigpe3ZhciBlPXRoaXMsdD1hcmd1bWVudHM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihyLG4pe3ZhciBhPXMuYXBwbHkoZSx0KTtmdW5jdGlvbiBvKGUpe2koYSxyLG4sbyxjLCJuZXh0IixlKX1mdW5jdGlvbiBjKGUpe2koYSxyLG4sbyxjLCJ0aHJvdyIsZSl9byh2b2lkIDApfSkpfSxmdW5jdGlvbihlLHQpe3JldHVybiB1LmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pfSx7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuY29tT2JqLnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLHRoaXMuX29uQ29tT2JqT25NZXNzYWdlKX19XSxyJiZvKHQucHJvdG90eXBlLHIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGV9KCk7dC5NZXNzYWdlSGFuZGxlcj11fSwoZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuUERGV29ya2VyU3RyZWFtPXZvaWQgMDt2YXIgbj1yKDIpO2Z1bmN0aW9uIGEoKXthPWZ1bmN0aW9uKCl7cmV0dXJuIGV9O3ZhciBlPXt9LHQ9T2JqZWN0LnByb3RvdHlwZSxyPXQuaGFzT3duUHJvcGVydHksbj1PYmplY3QuZGVmaW5lUHJvcGVydHl8fGZ1bmN0aW9uKGUsdCxyKXtlW3RdPXIudmFsdWV9LGk9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbD9TeW1ib2w6e30sbz1pLml0ZXJhdG9yfHwiQEBpdGVyYXRvciIsYz1pLmFzeW5jSXRlcmF0b3J8fCJAQGFzeW5jSXRlcmF0b3IiLHU9aS50b1N0cmluZ1RhZ3x8IkBAdG9TdHJpbmdUYWciO2Z1bmN0aW9uIGwoZSx0LHIpe3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpyLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSksZVt0XX10cnl7bCh7fSwiIil9Y2F0Y2goZSl7bD1mdW5jdGlvbihlLHQscil7cmV0dXJuIGVbdF09cn19ZnVuY3Rpb24gZihlLHQscixhKXt2YXIgaT10JiZ0LnByb3RvdHlwZSBpbnN0YW5jZW9mIHA/dDpwLG89T2JqZWN0LmNyZWF0ZShpLnByb3RvdHlwZSkscz1uZXcgRihhfHxbXSk7cmV0dXJuIG4obywiX2ludm9rZSIse3ZhbHVlOngoZSxyLHMpfSksb31mdW5jdGlvbiBoKGUsdCxyKXt0cnl7cmV0dXJue3R5cGU6Im5vcm1hbCIsYXJnOmUuY2FsbCh0LHIpfX1jYXRjaChlKXtyZXR1cm57dHlwZToidGhyb3ciLGFyZzplfX19ZS53cmFwPWY7dmFyIGQ9e307ZnVuY3Rpb24gcCgpe31mdW5jdGlvbiBnKCl7fWZ1bmN0aW9uIHYoKXt9dmFyIHk9e307bCh5LG8sKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSk7dmFyIG09T2JqZWN0LmdldFByb3RvdHlwZU9mLGI9bSYmbShtKFAoW10pKSk7YiYmYiE9PXQmJnIuY2FsbChiLG8pJiYoeT1iKTt2YXIgdz12LnByb3RvdHlwZT1wLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHkpO2Z1bmN0aW9uIGsoZSl7WyJuZXh0IiwidGhyb3ciLCJyZXR1cm4iXS5mb3JFYWNoKChmdW5jdGlvbih0KXtsKGUsdCwoZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX2ludm9rZSh0LGUpfSkpfSkpfWZ1bmN0aW9uIFMoZSx0KXtmdW5jdGlvbiBhKG4saSxvLGMpe3ZhciB1PWgoZVtuXSxlLGkpO2lmKCJ0aHJvdyIhPT11LnR5cGUpe3ZhciBsPXUuYXJnLGY9bC52YWx1ZTtyZXR1cm4gZiYmIm9iamVjdCI9PXMoZikmJnIuY2FsbChmLCJfX2F3YWl0Iik/dC5yZXNvbHZlKGYuX19hd2FpdCkudGhlbigoZnVuY3Rpb24oZSl7YSgibmV4dCIsZSxvLGMpfSksKGZ1bmN0aW9uKGUpe2EoInRocm93IixlLG8sYyl9KSk6dC5yZXNvbHZlKGYpLnRoZW4oKGZ1bmN0aW9uKGUpe2wudmFsdWU9ZSxvKGwpfSksKGZ1bmN0aW9uKGUpe3JldHVybiBhKCJ0aHJvdyIsZSxvLGMpfSkpfWModS5hcmcpfXZhciBpO24odGhpcywiX2ludm9rZSIse3ZhbHVlOmZ1bmN0aW9uKGUscil7ZnVuY3Rpb24gbigpe3JldHVybiBuZXcgdCgoZnVuY3Rpb24odCxuKXthKGUscix0LG4pfSkpfXJldHVybiBpPWk/aS50aGVuKG4sbik6bigpfX0pfWZ1bmN0aW9uIHgoZSx0LHIpe3ZhciBuPSJzdXNwZW5kZWRTdGFydCI7cmV0dXJuIGZ1bmN0aW9uKGEsaSl7aWYoImV4ZWN1dGluZyI9PT1uKXRocm93IG5ldyBFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgcnVubmluZyIpO2lmKCJjb21wbGV0ZWQiPT09bil7aWYoInRocm93Ij09PWEpdGhyb3cgaTtyZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9fWZvcihyLm1ldGhvZD1hLHIuYXJnPWk7Oyl7dmFyIG89ci5kZWxlZ2F0ZTtpZihvKXt2YXIgcz1PKG8scik7aWYocyl7aWYocz09PWQpY29udGludWU7cmV0dXJuIHN9fWlmKCJuZXh0Ij09PXIubWV0aG9kKXIuc2VudD1yLl9zZW50PXIuYXJnO2Vsc2UgaWYoInRocm93Ij09PXIubWV0aG9kKXtpZigic3VzcGVuZGVkU3RhcnQiPT09bil0aHJvdyBuPSJjb21wbGV0ZWQiLHIuYXJnO3IuZGlzcGF0Y2hFeGNlcHRpb24oci5hcmcpfWVsc2UicmV0dXJuIj09PXIubWV0aG9kJiZyLmFicnVwdCgicmV0dXJuIixyLmFyZyk7bj0iZXhlY3V0aW5nIjt2YXIgYz1oKGUsdCxyKTtpZigibm9ybWFsIj09PWMudHlwZSl7aWYobj1yLmRvbmU/ImNvbXBsZXRlZCI6InN1c3BlbmRlZFlpZWxkIixjLmFyZz09PWQpY29udGludWU7cmV0dXJue3ZhbHVlOmMuYXJnLGRvbmU6ci5kb25lfX0idGhyb3ciPT09Yy50eXBlJiYobj0iY29tcGxldGVkIixyLm1ldGhvZD0idGhyb3ciLHIuYXJnPWMuYXJnKX19fWZ1bmN0aW9uIE8oZSx0KXt2YXIgcj10Lm1ldGhvZCxuPWUuaXRlcmF0b3Jbcl07aWYodm9pZCAwPT09bilyZXR1cm4gdC5kZWxlZ2F0ZT1udWxsLCJ0aHJvdyI9PT1yJiZlLml0ZXJhdG9yLnJldHVybiYmKHQubWV0aG9kPSJyZXR1cm4iLHQuYXJnPXZvaWQgMCxPKGUsdCksInRocm93Ij09PXQubWV0aG9kKXx8InJldHVybiIhPT1yJiYodC5tZXRob2Q9InRocm93Iix0LmFyZz1uZXcgVHlwZUVycm9yKCJUaGUgaXRlcmF0b3IgZG9lcyBub3QgcHJvdmlkZSBhICciK3IrIicgbWV0aG9kIikpLGQ7dmFyIGE9aChuLGUuaXRlcmF0b3IsdC5hcmcpO2lmKCJ0aHJvdyI9PT1hLnR5cGUpcmV0dXJuIHQubWV0aG9kPSJ0aHJvdyIsdC5hcmc9YS5hcmcsdC5kZWxlZ2F0ZT1udWxsLGQ7dmFyIGk9YS5hcmc7cmV0dXJuIGk/aS5kb25lPyh0W2UucmVzdWx0TmFtZV09aS52YWx1ZSx0Lm5leHQ9ZS5uZXh0TG9jLCJyZXR1cm4iIT09dC5tZXRob2QmJih0Lm1ldGhvZD0ibmV4dCIsdC5hcmc9dm9pZCAwKSx0LmRlbGVnYXRlPW51bGwsZCk6aToodC5tZXRob2Q9InRocm93Iix0LmFyZz1uZXcgVHlwZUVycm9yKCJpdGVyYXRvciByZXN1bHQgaXMgbm90IGFuIG9iamVjdCIpLHQuZGVsZWdhdGU9bnVsbCxkKX1mdW5jdGlvbiBBKGUpe3ZhciB0PXt0cnlMb2M6ZVswXX07MSBpbiBlJiYodC5jYXRjaExvYz1lWzFdKSwyIGluIGUmJih0LmZpbmFsbHlMb2M9ZVsyXSx0LmFmdGVyTG9jPWVbM10pLHRoaXMudHJ5RW50cmllcy5wdXNoKHQpfWZ1bmN0aW9uIEMoZSl7dmFyIHQ9ZS5jb21wbGV0aW9ufHx7fTt0LnR5cGU9Im5vcm1hbCIsZGVsZXRlIHQuYXJnLGUuY29tcGxldGlvbj10fWZ1bmN0aW9uIEYoZSl7dGhpcy50cnlFbnRyaWVzPVt7dHJ5TG9jOiJyb290In1dLGUuZm9yRWFjaChBLHRoaXMpLHRoaXMucmVzZXQoITApfWZ1bmN0aW9uIFAoZSl7aWYoZSl7dmFyIHQ9ZVtvXTtpZih0KXJldHVybiB0LmNhbGwoZSk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGUubmV4dClyZXR1cm4gZTtpZighaXNOYU4oZS5sZW5ndGgpKXt2YXIgbj0tMSxhPWZ1bmN0aW9uIHQoKXtmb3IoOysrbjxlLmxlbmd0aDspaWYoci5jYWxsKGUsbikpcmV0dXJuIHQudmFsdWU9ZVtuXSx0LmRvbmU9ITEsdDtyZXR1cm4gdC52YWx1ZT12b2lkIDAsdC5kb25lPSEwLHR9O3JldHVybiBhLm5leHQ9YX19cmV0dXJue25leHQ6VH19ZnVuY3Rpb24gVCgpe3JldHVybnt2YWx1ZTp2b2lkIDAsZG9uZTohMH19cmV0dXJuIGcucHJvdG90eXBlPXYsbih3LCJjb25zdHJ1Y3RvciIse3ZhbHVlOnYsY29uZmlndXJhYmxlOiEwfSksbih2LCJjb25zdHJ1Y3RvciIse3ZhbHVlOmcsY29uZmlndXJhYmxlOiEwfSksZy5kaXNwbGF5TmFtZT1sKHYsdSwiR2VuZXJhdG9yRnVuY3Rpb24iKSxlLmlzR2VuZXJhdG9yRnVuY3Rpb249ZnVuY3Rpb24oZSl7dmFyIHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGUmJmUuY29uc3RydWN0b3I7cmV0dXJuISF0JiYodD09PWd8fCJHZW5lcmF0b3JGdW5jdGlvbiI9PT0odC5kaXNwbGF5TmFtZXx8dC5uYW1lKSl9LGUubWFyaz1mdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZihlLHYpOihlLl9fcHJvdG9fXz12LGwoZSx1LCJHZW5lcmF0b3JGdW5jdGlvbiIpKSxlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHcpLGV9LGUuYXdyYXA9ZnVuY3Rpb24oZSl7cmV0dXJue19fYXdhaXQ6ZX19LGsoUy5wcm90b3R5cGUpLGwoUy5wcm90b3R5cGUsYywoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSxlLkFzeW5jSXRlcmF0b3I9UyxlLmFzeW5jPWZ1bmN0aW9uKHQscixuLGEsaSl7dm9pZCAwPT09aSYmKGk9UHJvbWlzZSk7dmFyIG89bmV3IFMoZih0LHIsbixhKSxpKTtyZXR1cm4gZS5pc0dlbmVyYXRvckZ1bmN0aW9uKHIpP286by5uZXh0KCkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIGUuZG9uZT9lLnZhbHVlOm8ubmV4dCgpfSkpfSxrKHcpLGwodyx1LCJHZW5lcmF0b3IiKSxsKHcsbywoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSxsKHcsInRvU3RyaW5nIiwoZnVuY3Rpb24oKXtyZXR1cm4iW29iamVjdCBHZW5lcmF0b3JdIn0pKSxlLmtleXM9ZnVuY3Rpb24oZSl7dmFyIHQ9T2JqZWN0KGUpLHI9W107Zm9yKHZhciBuIGluIHQpci5wdXNoKG4pO3JldHVybiByLnJldmVyc2UoKSxmdW5jdGlvbiBlKCl7Zm9yKDtyLmxlbmd0aDspe3ZhciBuPXIucG9wKCk7aWYobiBpbiB0KXJldHVybiBlLnZhbHVlPW4sZS5kb25lPSExLGV9cmV0dXJuIGUuZG9uZT0hMCxlfX0sZS52YWx1ZXM9UCxGLnByb3RvdHlwZT17Y29uc3RydWN0b3I6RixyZXNldDpmdW5jdGlvbihlKXtpZih0aGlzLnByZXY9MCx0aGlzLm5leHQ9MCx0aGlzLnNlbnQ9dGhpcy5fc2VudD12b2lkIDAsdGhpcy5kb25lPSExLHRoaXMuZGVsZWdhdGU9bnVsbCx0aGlzLm1ldGhvZD0ibmV4dCIsdGhpcy5hcmc9dm9pZCAwLHRoaXMudHJ5RW50cmllcy5mb3JFYWNoKEMpLCFlKWZvcih2YXIgdCBpbiB0aGlzKSJ0Ij09PXQuY2hhckF0KDApJiZyLmNhbGwodGhpcyx0KSYmIWlzTmFOKCt0LnNsaWNlKDEpKSYmKHRoaXNbdF09dm9pZCAwKX0sc3RvcDpmdW5jdGlvbigpe3RoaXMuZG9uZT0hMDt2YXIgZT10aGlzLnRyeUVudHJpZXNbMF0uY29tcGxldGlvbjtpZigidGhyb3ciPT09ZS50eXBlKXRocm93IGUuYXJnO3JldHVybiB0aGlzLnJ2YWx9LGRpc3BhdGNoRXhjZXB0aW9uOmZ1bmN0aW9uKGUpe2lmKHRoaXMuZG9uZSl0aHJvdyBlO3ZhciB0PXRoaXM7ZnVuY3Rpb24gbihyLG4pe3JldHVybiBvLnR5cGU9InRocm93IixvLmFyZz1lLHQubmV4dD1yLG4mJih0Lm1ldGhvZD0ibmV4dCIsdC5hcmc9dm9pZCAwKSwhIW59Zm9yKHZhciBhPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTthPj0wOy0tYSl7dmFyIGk9dGhpcy50cnlFbnRyaWVzW2FdLG89aS5jb21wbGV0aW9uO2lmKCJyb290Ij09PWkudHJ5TG9jKXJldHVybiBuKCJlbmQiKTtpZihpLnRyeUxvYzw9dGhpcy5wcmV2KXt2YXIgcz1yLmNhbGwoaSwiY2F0Y2hMb2MiKSxjPXIuY2FsbChpLCJmaW5hbGx5TG9jIik7aWYocyYmYyl7aWYodGhpcy5wcmV2PGkuY2F0Y2hMb2MpcmV0dXJuIG4oaS5jYXRjaExvYywhMCk7aWYodGhpcy5wcmV2PGkuZmluYWxseUxvYylyZXR1cm4gbihpLmZpbmFsbHlMb2MpfWVsc2UgaWYocyl7aWYodGhpcy5wcmV2PGkuY2F0Y2hMb2MpcmV0dXJuIG4oaS5jYXRjaExvYywhMCl9ZWxzZXtpZighYyl0aHJvdyBuZXcgRXJyb3IoInRyeSBzdGF0ZW1lbnQgd2l0aG91dCBjYXRjaCBvciBmaW5hbGx5Iik7aWYodGhpcy5wcmV2PGkuZmluYWxseUxvYylyZXR1cm4gbihpLmZpbmFsbHlMb2MpfX19fSxhYnJ1cHQ6ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO24+PTA7LS1uKXt2YXIgYT10aGlzLnRyeUVudHJpZXNbbl07aWYoYS50cnlMb2M8PXRoaXMucHJldiYmci5jYWxsKGEsImZpbmFsbHlMb2MiKSYmdGhpcy5wcmV2PGEuZmluYWxseUxvYyl7dmFyIGk9YTticmVha319aSYmKCJicmVhayI9PT1lfHwiY29udGludWUiPT09ZSkmJmkudHJ5TG9jPD10JiZ0PD1pLmZpbmFsbHlMb2MmJihpPW51bGwpO3ZhciBvPWk/aS5jb21wbGV0aW9uOnt9O3JldHVybiBvLnR5cGU9ZSxvLmFyZz10LGk/KHRoaXMubWV0aG9kPSJuZXh0Iix0aGlzLm5leHQ9aS5maW5hbGx5TG9jLGQpOnRoaXMuY29tcGxldGUobyl9LGNvbXBsZXRlOmZ1bmN0aW9uKGUsdCl7aWYoInRocm93Ij09PWUudHlwZSl0aHJvdyBlLmFyZztyZXR1cm4iYnJlYWsiPT09ZS50eXBlfHwiY29udGludWUiPT09ZS50eXBlP3RoaXMubmV4dD1lLmFyZzoicmV0dXJuIj09PWUudHlwZT8odGhpcy5ydmFsPXRoaXMuYXJnPWUuYXJnLHRoaXMubWV0aG9kPSJyZXR1cm4iLHRoaXMubmV4dD0iZW5kIik6Im5vcm1hbCI9PT1lLnR5cGUmJnQmJih0aGlzLm5leHQ9dCksZH0sZmluaXNoOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7dD49MDstLXQpe3ZhciByPXRoaXMudHJ5RW50cmllc1t0XTtpZihyLmZpbmFsbHlMb2M9PT1lKXJldHVybiB0aGlzLmNvbXBsZXRlKHIuY29tcGxldGlvbixyLmFmdGVyTG9jKSxDKHIpLGR9fSxjYXRjaDpmdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO3Q+PTA7LS10KXt2YXIgcj10aGlzLnRyeUVudHJpZXNbdF07aWYoci50cnlMb2M9PT1lKXt2YXIgbj1yLmNvbXBsZXRpb247aWYoInRocm93Ij09PW4udHlwZSl7dmFyIGE9bi5hcmc7QyhyKX1yZXR1cm4gYX19dGhyb3cgbmV3IEVycm9yKCJpbGxlZ2FsIGNhdGNoIGF0dGVtcHQiKX0sZGVsZWdhdGVZaWVsZDpmdW5jdGlvbihlLHQscil7cmV0dXJuIHRoaXMuZGVsZWdhdGU9e2l0ZXJhdG9yOlAoZSkscmVzdWx0TmFtZTp0LG5leHRMb2M6cn0sIm5leHQiPT09dGhpcy5tZXRob2QmJih0aGlzLmFyZz12b2lkIDApLGR9fSxlfWZ1bmN0aW9uIGkoZSx0LHIsbixhLGksbyl7dHJ5e3ZhciBzPWVbaV0obyksYz1zLnZhbHVlfWNhdGNoKGUpe3JldHVybiB2b2lkIHIoZSl9cy5kb25lP3QoYyk6UHJvbWlzZS5yZXNvbHZlKGMpLnRoZW4obixhKX1mdW5jdGlvbiBvKGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciB0PXRoaXMscj1hcmd1bWVudHM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihuLGEpe3ZhciBvPWUuYXBwbHkodCxyKTtmdW5jdGlvbiBzKGUpe2kobyxuLGEscyxjLCJuZXh0IixlKX1mdW5jdGlvbiBjKGUpe2kobyxuLGEscyxjLCJ0aHJvdyIsZSl9cyh2b2lkIDApfSkpfX1mdW5jdGlvbiBzKGUpe3JldHVybiBzPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSxzKGUpfWZ1bmN0aW9uIGMoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIHI9MCxuPW5ldyBBcnJheSh0KTtyPHQ7cisrKW5bcl09ZVtyXTtyZXR1cm4gbn1mdW5jdGlvbiB1KGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gbChlLHQpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgbj10W3JdO24uZW51bWVyYWJsZT1uLmVudW1lcmFibGV8fCExLG4uY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBuJiYobi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsKHZvaWQgMCxhPWZ1bmN0aW9uKGUsdCl7aWYoIm9iamVjdCIhPT1zKGUpfHxudWxsPT09ZSlyZXR1cm4gZTt2YXIgcj1lW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09cil7dmFyIG49ci5jYWxsKGUsInN0cmluZyIpO2lmKCJvYmplY3QiIT09cyhuKSlyZXR1cm4gbjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybiBTdHJpbmcoZSl9KG4ua2V5KSwic3ltYm9sIj09PXMoYSk/YTpTdHJpbmcoYSkpLG4pfXZhciBhfWZ1bmN0aW9uIGYoZSx0LHIpe3JldHVybiB0JiZsKGUucHJvdG90eXBlLHQpLHImJmwoZSxyKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxlfXZhciBoPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0KXt1KHRoaXMsZSksdGhpcy5fbXNnSGFuZGxlcj10LHRoaXMuX2NvbnRlbnRMZW5ndGg9bnVsbCx0aGlzLl9mdWxsUmVxdWVzdFJlYWRlcj1udWxsLHRoaXMuX3JhbmdlUmVxdWVzdFJlYWRlcnM9W119cmV0dXJuIGYoZSxbe2tleToiZ2V0RnVsbFJlYWRlciIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4oMCxuLmFzc2VydCkoIXRoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyLCJQREZXb3JrZXJTdHJlYW0uZ2V0RnVsbFJlYWRlciBjYW4gb25seSBiZSBjYWxsZWQgb25jZS4iKSx0aGlzLl9mdWxsUmVxdWVzdFJlYWRlcj1uZXcgZCh0aGlzLl9tc2dIYW5kbGVyKSx0aGlzLl9mdWxsUmVxdWVzdFJlYWRlcn19LHtrZXk6ImdldFJhbmdlUmVhZGVyIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciByPW5ldyBwKGUsdCx0aGlzLl9tc2dIYW5kbGVyKTtyZXR1cm4gdGhpcy5fcmFuZ2VSZXF1ZXN0UmVhZGVycy5wdXNoKHIpLHJ9fSx7a2V5OiJjYW5jZWxBbGxSZXF1ZXN0cyIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5fZnVsbFJlcXVlc3RSZWFkZXImJnRoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyLmNhbmNlbChlKTt2YXIgdCxyPWZ1bmN0aW9uKGUsdCl7dmFyIHI9InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVsiQEBpdGVyYXRvciJdO2lmKCFyKXtpZihBcnJheS5pc0FycmF5KGUpfHwocj1mdW5jdGlvbihlLHQpe2lmKGUpe2lmKCJzdHJpbmciPT10eXBlb2YgZSlyZXR1cm4gYyhlLHQpO3ZhciByPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtyZXR1cm4iT2JqZWN0Ij09PXImJmUuY29uc3RydWN0b3ImJihyPWUuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1yfHwiU2V0Ij09PXI/QXJyYXkuZnJvbShlKToiQXJndW1lbnRzIj09PXJ8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KHIpP2MoZSx0KTp2b2lkIDB9fShlKSl8fHQmJmUmJiJudW1iZXIiPT10eXBlb2YgZS5sZW5ndGgpe3ImJihlPXIpO3ZhciBuPTAsYT1mdW5jdGlvbigpe307cmV0dXJue3M6YSxuOmZ1bmN0aW9uKCl7cmV0dXJuIG4+PWUubGVuZ3RoP3tkb25lOiEwfTp7ZG9uZTohMSx2YWx1ZTplW24rK119fSxlOmZ1bmN0aW9uKGUpe3Rocm93IGV9LGY6YX19dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGl0ZXJhdGUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfXZhciBpLG89ITAscz0hMTtyZXR1cm57czpmdW5jdGlvbigpe3I9ci5jYWxsKGUpfSxuOmZ1bmN0aW9uKCl7dmFyIGU9ci5uZXh0KCk7cmV0dXJuIG89ZS5kb25lLGV9LGU6ZnVuY3Rpb24oZSl7cz0hMCxpPWV9LGY6ZnVuY3Rpb24oKXt0cnl7b3x8bnVsbD09ci5yZXR1cm58fHIucmV0dXJuKCl9ZmluYWxseXtpZihzKXRocm93IGl9fX19KHRoaXMuX3JhbmdlUmVxdWVzdFJlYWRlcnMuc2xpY2UoMCkpO3RyeXtmb3Ioci5zKCk7ISh0PXIubigpKS5kb25lOyl0LnZhbHVlLmNhbmNlbChlKX1jYXRjaChlKXtyLmUoZSl9ZmluYWxseXtyLmYoKX19fV0pLGV9KCk7dC5QREZXb3JrZXJTdHJlYW09aDt2YXIgZD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCl7dmFyIHI9dGhpczt1KHRoaXMsZSksdGhpcy5fbXNnSGFuZGxlcj10LHRoaXMub25Qcm9ncmVzcz1udWxsLHRoaXMuX2NvbnRlbnRMZW5ndGg9bnVsbCx0aGlzLl9pc1JhbmdlU3VwcG9ydGVkPSExLHRoaXMuX2lzU3RyZWFtaW5nU3VwcG9ydGVkPSExO3ZhciBuPXRoaXMuX21zZ0hhbmRsZXIuc2VuZFdpdGhTdHJlYW0oIkdldFJlYWRlciIpO3RoaXMuX3JlYWRlcj1uLmdldFJlYWRlcigpLHRoaXMuX2hlYWRlcnNSZWFkeT10aGlzLl9tc2dIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiUmVhZGVySGVhZGVyc1JlYWR5IikudGhlbigoZnVuY3Rpb24oZSl7ci5faXNTdHJlYW1pbmdTdXBwb3J0ZWQ9ZS5pc1N0cmVhbWluZ1N1cHBvcnRlZCxyLl9pc1JhbmdlU3VwcG9ydGVkPWUuaXNSYW5nZVN1cHBvcnRlZCxyLl9jb250ZW50TGVuZ3RoPWUuY29udGVudExlbmd0aH0pKX12YXIgdDtyZXR1cm4gZihlLFt7a2V5OiJoZWFkZXJzUmVhZHkiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9oZWFkZXJzUmVhZHl9fSx7a2V5OiJjb250ZW50TGVuZ3RoIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY29udGVudExlbmd0aH19LHtrZXk6ImlzU3RyZWFtaW5nU3VwcG9ydGVkIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faXNTdHJlYW1pbmdTdXBwb3J0ZWR9fSx7a2V5OiJpc1JhbmdlU3VwcG9ydGVkIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faXNSYW5nZVN1cHBvcnRlZH19LHtrZXk6InJlYWQiLHZhbHVlOih0PW8oYSgpLm1hcmsoKGZ1bmN0aW9uIGUoKXt2YXIgdCxyO3JldHVybiBhKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLHRoaXMuX3JlYWRlci5yZWFkKCk7Y2FzZSAyOmlmKHQ9ZS5zZW50LHI9dC52YWx1ZSwhdC5kb25lKXtlLm5leHQ9NzticmVha31yZXR1cm4gZS5hYnJ1cHQoInJldHVybiIse3ZhbHVlOnZvaWQgMCxkb25lOiEwfSk7Y2FzZSA3OnJldHVybiBlLmFicnVwdCgicmV0dXJuIix7dmFsdWU6ci5idWZmZXIsZG9uZTohMX0pO2Nhc2UgODpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpLGZ1bmN0aW9uKCl7cmV0dXJuIHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfSl9LHtrZXk6ImNhbmNlbCIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5fcmVhZGVyLmNhbmNlbChlKX19XSksZX0oKSxwPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0LHIsbil7dSh0aGlzLGUpLHRoaXMuX21zZ0hhbmRsZXI9bix0aGlzLm9uUHJvZ3Jlc3M9bnVsbDt2YXIgYT10aGlzLl9tc2dIYW5kbGVyLnNlbmRXaXRoU3RyZWFtKCJHZXRSYW5nZVJlYWRlciIse2JlZ2luOnQsZW5kOnJ9KTt0aGlzLl9yZWFkZXI9YS5nZXRSZWFkZXIoKX12YXIgdDtyZXR1cm4gZihlLFt7a2V5OiJpc1N0cmVhbWluZ1N1cHBvcnRlZCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuITF9fSx7a2V5OiJyZWFkIix2YWx1ZToodD1vKGEoKS5tYXJrKChmdW5jdGlvbiBlKCl7dmFyIHQscjtyZXR1cm4gYSgpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9yZWFkZXIucmVhZCgpO2Nhc2UgMjppZih0PWUuc2VudCxyPXQudmFsdWUsIXQuZG9uZSl7ZS5uZXh0PTc7YnJlYWt9cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHt2YWx1ZTp2b2lkIDAsZG9uZTohMH0pO2Nhc2UgNzpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIse3ZhbHVlOnIuYnVmZmVyLGRvbmU6ITF9KTtjYXNlIDg6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKSxmdW5jdGlvbigpe3JldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pfSx7a2V5OiJjYW5jZWwiLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMuX3JlYWRlci5jYW5jZWwoZSl9fV0pLGV9KCl9XSx0PXt9O2Z1bmN0aW9uIHIobil7dmFyIGE9dFtuXTtpZih2b2lkIDAhPT1hKXJldHVybiBhLmV4cG9ydHM7dmFyIGk9dFtuXT17ZXhwb3J0czp7fX07cmV0dXJuIGVbbl0oaSxpLmV4cG9ydHMsciksaS5leHBvcnRzfXIuZD0oZSx0KT0+e2Zvcih2YXIgbiBpbiB0KXIubyh0LG4pJiYhci5vKGUsbikmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4se2VudW1lcmFibGU6ITAsZ2V0OnRbbl19KX0sci5vPShlLHQpPT5PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSx0KSxyLnI9ZT0+eyJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZTeW1ib2wudG9TdHJpbmdUYWcmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9O3ZhciBuPXt9O3JldHVybigoKT0+e3ZhciBlPW47T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJXb3JrZXJNZXNzYWdlSGFuZGxlciIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHQuV29ya2VyTWVzc2FnZUhhbmRsZXJ9fSk7dmFyIHQ9cigxKX0pKCksbn0pKCksIm9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz10KCk6ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoInBkZmpzLWRpc3QvYnVpbGQvcGRmLndvcmtlciIsW10sdCk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP2V4cG9ydHNbInBkZmpzLWRpc3QvYnVpbGQvcGRmLndvcmtlciJdPXQoKTplWyJwZGZqcy1kaXN0L2J1aWxkL3BkZi53b3JrZXIiXT1lLnBkZmpzV29ya2VyPXQoKTs=",a="LyohIEZvciBsaWNlbnNlIGluZm9ybWF0aW9uIHBsZWFzZSBzZWUgcGRmLmpzLkxJQ0VOU0UudHh0ICovCnZhciBfX3dlYnBhY2tfZXhwb3J0c19fPXt9LHJvb3QsZmFjdG9yeTtyb290PWdsb2JhbFRoaXMsZmFjdG9yeT0oKT0+KCgpPT57dmFyIF9fd2VicGFja19tb2R1bGVzX189WywodCxlLHIpPT57ZnVuY3Rpb24gbih0KXtyZXR1cm4gZnVuY3Rpb24odCl7aWYoQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gYSh0KX0odCl8fGZ1bmN0aW9uKHQpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZudWxsIT10W1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPXRbIkBAaXRlcmF0b3IiXSlyZXR1cm4gQXJyYXkuZnJvbSh0KX0odCl8fGkodCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gaSh0LGUpe2lmKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gYSh0LGUpO3ZhciByPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KS5zbGljZSg4LC0xKTtyZXR1cm4iT2JqZWN0Ij09PXImJnQuY29uc3RydWN0b3ImJihyPXQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1yfHwiU2V0Ij09PXI/QXJyYXkuZnJvbSh0KToiQXJndW1lbnRzIj09PXJ8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KHIpP2EodCxlKTp2b2lkIDB9fWZ1bmN0aW9uIGEodCxlKXsobnVsbD09ZXx8ZT50Lmxlbmd0aCkmJihlPXQubGVuZ3RoKTtmb3IodmFyIHI9MCxuPW5ldyBBcnJheShlKTtyPGU7cisrKW5bcl09dFtyXTtyZXR1cm4gbn1mdW5jdGlvbiBvKHQpe3JldHVybiBvPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiB0fSxvKHQpfWZ1bmN0aW9uIHModCxlKXtmb3IodmFyIHI9MDtyPGUubGVuZ3RoO3IrKyl7dmFyIG49ZVtyXTtuLmVudW1lcmFibGU9bi5lbnVtZXJhYmxlfHwhMSxuLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gbiYmKG4ud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCh2b2lkIDAsaT1mdW5jdGlvbih0LGUpe2lmKCJvYmplY3QiIT09byh0KXx8bnVsbD09PXQpcmV0dXJuIHQ7dmFyIHI9dFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PXIpe3ZhciBuPXIuY2FsbCh0LCJzdHJpbmciKTtpZigib2JqZWN0IiE9PW8obikpcmV0dXJuIG47dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4gU3RyaW5nKHQpfShuLmtleSksInN5bWJvbCI9PT1vKGkpP2k6U3RyaW5nKGkpKSxuKX12YXIgaX1mdW5jdGlvbiBsKHQsZSxyKXtyZXR1cm4gZSYmcyh0LnByb3RvdHlwZSxlKSxyJiZzKHQsciksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksdH1mdW5jdGlvbiB1KHQsZSl7aWYoISh0IGluc3RhbmNlb2YgZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gYyh0LGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlJiZudWxsIT09ZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO3QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZSYmZS5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTp0LHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxlJiZoKHQsZSl9ZnVuY3Rpb24gaCh0LGUpe3JldHVybiBoPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuX19wcm90b19fPWUsdH0saCh0LGUpfWZ1bmN0aW9uIGYodCl7dmFyIGU9ZnVuY3Rpb24oKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdClyZXR1cm4hMTtpZihSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLChmdW5jdGlvbigpe30pKSksITB9Y2F0Y2godCl7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciByLG49ZCh0KTtpZihlKXt2YXIgaT1kKHRoaXMpLmNvbnN0cnVjdG9yO3I9UmVmbGVjdC5jb25zdHJ1Y3Qobixhcmd1bWVudHMsaSl9ZWxzZSByPW4uYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBmdW5jdGlvbih0LGUpe2lmKGUmJigib2JqZWN0Ij09PW8oZSl8fCJmdW5jdGlvbiI9PXR5cGVvZiBlKSlyZXR1cm4gZTtpZih2b2lkIDAhPT1lKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGZ1bmN0aW9uKHQpe2lmKHZvaWQgMD09PXQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gdH0odCl9KHRoaXMscil9fWZ1bmN0aW9uIGQodCl7cmV0dXJuIGQ9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24odCl7cmV0dXJuIHQuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YodCl9LGQodCl9T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGUuVmVyYm9zaXR5TGV2ZWw9ZS5VdGlsPWUuVW5rbm93bkVycm9yRXhjZXB0aW9uPWUuVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9uPWUuVU5TVVBQT1JURURfRkVBVFVSRVM9ZS5UZXh0UmVuZGVyaW5nTW9kZT1lLlN0cmVhbVR5cGU9ZS5SZW5kZXJpbmdJbnRlbnRGbGFnPWUuUGVybWlzc2lvbkZsYWc9ZS5QYXNzd29yZFJlc3BvbnNlcz1lLlBhc3N3b3JkRXhjZXB0aW9uPWUuUGFnZUFjdGlvbkV2ZW50VHlwZT1lLk9QUz1lLk1pc3NpbmdQREZFeGNlcHRpb249ZS5MSU5FX0ZBQ1RPUj1lLkxJTkVfREVTQ0VOVF9GQUNUT1I9ZS5JbnZhbGlkUERGRXhjZXB0aW9uPWUuSW1hZ2VLaW5kPWUuSURFTlRJVFlfTUFUUklYPWUuRm9ybWF0RXJyb3I9ZS5Gb250VHlwZT1lLkZlYXR1cmVUZXN0PWUuRk9OVF9JREVOVElUWV9NQVRSSVg9ZS5Eb2N1bWVudEFjdGlvbkV2ZW50VHlwZT1lLkNNYXBDb21wcmVzc2lvblR5cGU9ZS5CYXNlRXhjZXB0aW9uPWUuQkFTRUxJTkVfRkFDVE9SPWUuQW5ub3RhdGlvblR5cGU9ZS5Bbm5vdGF0aW9uU3RhdGVNb2RlbFR5cGU9ZS5Bbm5vdGF0aW9uUmV2aWV3U3RhdGU9ZS5Bbm5vdGF0aW9uUmVwbHlUeXBlPWUuQW5ub3RhdGlvbk1vZGU9ZS5Bbm5vdGF0aW9uTWFya2VkU3RhdGU9ZS5Bbm5vdGF0aW9uRmxhZz1lLkFubm90YXRpb25GaWVsZEZsYWc9ZS5Bbm5vdGF0aW9uRWRpdG9yVHlwZT1lLkFubm90YXRpb25FZGl0b3JQcmVmaXg9ZS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZT1lLkFubm90YXRpb25Cb3JkZXJTdHlsZVR5cGU9ZS5Bbm5vdGF0aW9uQWN0aW9uRXZlbnRUeXBlPWUuQWJvcnRFeGNlcHRpb249dm9pZCAwLGUuYXJyYXlCeXRlTGVuZ3RoPVQsZS5hcnJheXNUb0J5dGVzPWZ1bmN0aW9uKHQpe3ZhciBlPXQubGVuZ3RoO2lmKDE9PT1lJiZ0WzBdaW5zdGFuY2VvZiBVaW50OEFycmF5KXJldHVybiB0WzBdO2Zvcih2YXIgcj0wLG49MDtuPGU7bisrKXIrPVQodFtuXSk7Zm9yKHZhciBpPTAsYT1uZXcgVWludDhBcnJheShyKSxvPTA7bzxlO28rKyl7dmFyIHM9dFtvXTtzIGluc3RhbmNlb2YgVWludDhBcnJheXx8KHM9InN0cmluZyI9PXR5cGVvZiBzP1Aocyk6bmV3IFVpbnQ4QXJyYXkocykpO3ZhciBsPXMuYnl0ZUxlbmd0aDthLnNldChzLGkpLGkrPWx9cmV0dXJuIGF9LGUuYXNzZXJ0PWZ1bmN0aW9uKHQsZSl7dHx8bShlKX0sZS5ieXRlc1RvU3RyaW5nPWZ1bmN0aW9uKHQpeyJvYmplY3QiPT09byh0KSYmbnVsbCE9PXQmJnZvaWQgMCE9PXQubGVuZ3RofHxtKCJJbnZhbGlkIGFyZ3VtZW50IGZvciBieXRlc1RvU3RyaW5nIik7dmFyIGU9dC5sZW5ndGgscj04MTkyO2lmKGU8cilyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLHQpO2Zvcih2YXIgbj1bXSxpPTA7aTxlO2krPXIpe3ZhciBhPU1hdGgubWluKGkrcixlKSxzPXQuc3ViYXJyYXkoaSxhKTtuLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLHMpKX1yZXR1cm4gbi5qb2luKCIiKX0sZS5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eT1mdW5jdGlvbigpe3ZhciB0PU9iamVjdC5jcmVhdGUobnVsbCksZT0hMTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsInNldHRsZWQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZX19KSx0LnByb21pc2U9bmV3IFByb21pc2UoKGZ1bmN0aW9uKHIsbil7dC5yZXNvbHZlPWZ1bmN0aW9uKHQpe2U9ITAscih0KX0sdC5yZWplY3Q9ZnVuY3Rpb24odCl7ZT0hMCxuKHQpfX0pKSx0fSxlLmNyZWF0ZVZhbGlkQWJzb2x1dGVVcmw9ZnVuY3Rpb24odCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOm51bGwscj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06bnVsbDtpZighdClyZXR1cm4gbnVsbDt0cnl7aWYociYmInN0cmluZyI9PXR5cGVvZiB0KXtpZihyLmFkZERlZmF1bHRQcm90b2NvbCYmdC5zdGFydHNXaXRoKCJ3d3cuIikpe3ZhciBuPXQubWF0Y2goL1wuL2cpO24mJm4ubGVuZ3RoPj0yJiYodD0iaHR0cDovLyIuY29uY2F0KHQpKX1pZihyLnRyeUNvbnZlcnRFbmNvZGluZyl0cnl7dD1SKHQpfWNhdGNoKHQpe319dmFyIGk9ZT9uZXcgVVJMKHQsZSk6bmV3IFVSTCh0KTtpZihmdW5jdGlvbih0KXtpZighdClyZXR1cm4hMTtzd2l0Y2godC5wcm90b2NvbCl7Y2FzZSJodHRwOiI6Y2FzZSJodHRwczoiOmNhc2UiZnRwOiI6Y2FzZSJtYWlsdG86IjpjYXNlInRlbDoiOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fShpKSlyZXR1cm4gaX1jYXRjaCh0KXt9cmV0dXJuIG51bGx9LGUuZ2V0TW9kaWZpY2F0aW9uRGF0ZT1mdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpuZXcgRGF0ZTtyZXR1cm5bdC5nZXRVVENGdWxsWWVhcigpLnRvU3RyaW5nKCksKHQuZ2V0VVRDTW9udGgoKSsxKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKSx0LmdldFVUQ0RhdGUoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKSx0LmdldFVUQ0hvdXJzKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIiksdC5nZXRVVENNaW51dGVzKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIiksdC5nZXRVVENTZWNvbmRzKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIildLmpvaW4oIiIpfSxlLmdldFZlcmJvc2l0eUxldmVsPWZ1bmN0aW9uKCl7cmV0dXJuIHZ9LGUuaW5mbz1mdW5jdGlvbih0KXt2Pj1wLklORk9TJiZjb25zb2xlLmxvZygiSW5mbzogIi5jb25jYXQodCkpfSxlLmlzQXJyYXlCdWZmZXI9ZnVuY3Rpb24odCl7cmV0dXJuIm9iamVjdCI9PT1vKHQpJiZudWxsIT09dCYmdm9pZCAwIT09dC5ieXRlTGVuZ3RofSxlLmlzQXJyYXlFcXVhbD1mdW5jdGlvbih0LGUpe2lmKHQubGVuZ3RoIT09ZS5sZW5ndGgpcmV0dXJuITE7Zm9yKHZhciByPTAsbj10Lmxlbmd0aDtyPG47cisrKWlmKHRbcl0hPT1lW3JdKXJldHVybiExO3JldHVybiEwfSxlLm9iamVjdEZyb21NYXA9ZnVuY3Rpb24odCl7dmFyIGUscixuPU9iamVjdC5jcmVhdGUobnVsbCksYT1mdW5jdGlvbih0LGUpe3ZhciByPSJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZ0W1N5bWJvbC5pdGVyYXRvcl18fHRbIkBAaXRlcmF0b3IiXTtpZighcil7aWYoQXJyYXkuaXNBcnJheSh0KXx8KHI9aSh0KSkpe3ImJih0PXIpO3ZhciBuPTAsYT1mdW5jdGlvbigpe307cmV0dXJue3M6YSxuOmZ1bmN0aW9uKCl7cmV0dXJuIG4+PXQubGVuZ3RoP3tkb25lOiEwfTp7ZG9uZTohMSx2YWx1ZTp0W24rK119fSxlOmZ1bmN0aW9uKHQpe3Rocm93IHR9LGY6YX19dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGl0ZXJhdGUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfXZhciBvLHM9ITAsbD0hMTtyZXR1cm57czpmdW5jdGlvbigpe3I9ci5jYWxsKHQpfSxuOmZ1bmN0aW9uKCl7dmFyIHQ9ci5uZXh0KCk7cmV0dXJuIHM9dC5kb25lLHR9LGU6ZnVuY3Rpb24odCl7bD0hMCxvPXR9LGY6ZnVuY3Rpb24oKXt0cnl7c3x8bnVsbD09ci5yZXR1cm58fHIucmV0dXJuKCl9ZmluYWxseXtpZihsKXRocm93IG99fX19KHQpO3RyeXtmb3IoYS5zKCk7IShlPWEubigpKS5kb25lOyl7dmFyIG89KHI9ZS52YWx1ZSwyLGZ1bmN0aW9uKHQpe2lmKEFycmF5LmlzQXJyYXkodCkpcmV0dXJuIHR9KHIpfHxmdW5jdGlvbih0LGUpe3ZhciByPW51bGw9PXQ/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmdFtTeW1ib2wuaXRlcmF0b3JdfHx0WyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9cil7dmFyIG4saSxhLG8scz1bXSxsPSEwLHU9ITE7dHJ5e2ZvcihhPShyPXIuY2FsbCh0KSkubmV4dCwwOyEobD0obj1hLmNhbGwocikpLmRvbmUpJiYocy5wdXNoKG4udmFsdWUpLDIhPT1zLmxlbmd0aCk7bD0hMCk7fWNhdGNoKHQpe3U9ITAsaT10fWZpbmFsbHl7dHJ5e2lmKCFsJiZudWxsIT1yLnJldHVybiYmKG89ci5yZXR1cm4oKSxPYmplY3QobykhPT1vKSlyZXR1cm59ZmluYWxseXtpZih1KXRocm93IGl9fXJldHVybiBzfX0ocil8fGkociwyKXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpKSxzPW9bMF0sbD1vWzFdO25bc109bH19Y2F0Y2godCl7YS5lKHQpfWZpbmFsbHl7YS5mKCl9cmV0dXJuIG59LGUub2JqZWN0U2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmtleXModCkubGVuZ3RofSxlLnNldFZlcmJvc2l0eUxldmVsPWZ1bmN0aW9uKHQpe051bWJlci5pc0ludGVnZXIodCkmJih2PXQpfSxlLnNoYWRvdz1nLGUuc3RyaW5nMzI9ZnVuY3Rpb24odCl7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUodD4+MjQmMjU1LHQ+PjE2JjI1NSx0Pj44JjI1NSwyNTUmdCl9LGUuc3RyaW5nVG9CeXRlcz1QLGUuc3RyaW5nVG9QREZTdHJpbmc9ZnVuY3Rpb24odCl7dmFyIGU7aWYodFswXT49IsOvIiYmKCLDviI9PT10WzBdJiYiw78iPT09dFsxXT9lPSJ1dGYtMTZiZSI6IsO/Ij09PXRbMF0mJiLDviI9PT10WzFdP2U9InV0Zi0xNmxlIjoiw68iPT09dFswXSYmIsK7Ij09PXRbMV0mJiLCvyI9PT10WzJdJiYoZT0idXRmLTgiKSxlKSl0cnl7dmFyIHI9bmV3IFRleHREZWNvZGVyKGUse2ZhdGFsOiEwfSksbj1QKHQpO3JldHVybiByLmRlY29kZShuKX1jYXRjaCh0KXt5KCdzdHJpbmdUb1BERlN0cmluZzogIicuY29uY2F0KHQsJyIuJykpfWZvcih2YXIgaT1bXSxhPTAsbz10Lmxlbmd0aDthPG87YSsrKXt2YXIgcz1NW3QuY2hhckNvZGVBdChhKV07aS5wdXNoKHM/U3RyaW5nLmZyb21DaGFyQ29kZShzKTp0LmNoYXJBdChhKSl9cmV0dXJuIGkuam9pbigiIil9LGUuc3RyaW5nVG9VVEY4U3RyaW5nPVIsZS51bnJlYWNoYWJsZT1tLGUudXRmOFN0cmluZ1RvU3RyaW5nPWZ1bmN0aW9uKHQpe3JldHVybiB1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQodCkpfSxlLndhcm49eSxnbG9iYWxUaGlzLl9wZGZqc0NvbXBhdGliaWxpdHlDaGVja2VkfHwoZ2xvYmFsVGhpcy5fcGRmanNDb21wYXRpYmlsaXR5Q2hlY2tlZD0hMCxyKDIpKSxlLklERU5USVRZX01BVFJJWD1bMSwwLDAsMSwwLDBdLGUuRk9OVF9JREVOVElUWV9NQVRSSVg9Wy4wMDEsMCwwLC4wMDEsMCwwXSxlLkxJTkVfRkFDVE9SPTEuMzUsZS5MSU5FX0RFU0NFTlRfRkFDVE9SPS4zNSxlLkJBU0VMSU5FX0ZBQ1RPUj0uMjU5MjU5MjU5MjU5MjU5MjQsZS5SZW5kZXJpbmdJbnRlbnRGbGFnPXtBTlk6MSxESVNQTEFZOjIsUFJJTlQ6NCxTQVZFOjgsQU5OT1RBVElPTlNfRk9STVM6MTYsQU5OT1RBVElPTlNfU1RPUkFHRTozMixBTk5PVEFUSU9OU19ESVNBQkxFOjY0LE9QTElTVDoyNTZ9LGUuQW5ub3RhdGlvbk1vZGU9e0RJU0FCTEU6MCxFTkFCTEU6MSxFTkFCTEVfRk9STVM6MixFTkFCTEVfU1RPUkFHRTozfSxlLkFubm90YXRpb25FZGl0b3JQcmVmaXg9InBkZmpzX2ludGVybmFsX2VkaXRvcl8iLGUuQW5ub3RhdGlvbkVkaXRvclR5cGU9e0RJU0FCTEU6LTEsTk9ORTowLEZSRUVURVhUOjMsSU5LOjE1fSxlLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlPXtGUkVFVEVYVF9TSVpFOjEsRlJFRVRFWFRfQ09MT1I6MixGUkVFVEVYVF9PUEFDSVRZOjMsSU5LX0NPTE9SOjExLElOS19USElDS05FU1M6MTIsSU5LX09QQUNJVFk6MTN9LGUuUGVybWlzc2lvbkZsYWc9e1BSSU5UOjQsTU9ESUZZX0NPTlRFTlRTOjgsQ09QWToxNixNT0RJRllfQU5OT1RBVElPTlM6MzIsRklMTF9JTlRFUkFDVElWRV9GT1JNUzoyNTYsQ09QWV9GT1JfQUNDRVNTSUJJTElUWTo1MTIsQVNTRU1CTEU6MTAyNCxQUklOVF9ISUdIX1FVQUxJVFk6MjA0OH0sZS5UZXh0UmVuZGVyaW5nTW9kZT17RklMTDowLFNUUk9LRToxLEZJTExfU1RST0tFOjIsSU5WSVNJQkxFOjMsRklMTF9BRERfVE9fUEFUSDo0LFNUUk9LRV9BRERfVE9fUEFUSDo1LEZJTExfU1RST0tFX0FERF9UT19QQVRIOjYsQUREX1RPX1BBVEg6NyxGSUxMX1NUUk9LRV9NQVNLOjMsQUREX1RPX1BBVEhfRkxBRzo0fSxlLkltYWdlS2luZD17R1JBWVNDQUxFXzFCUFA6MSxSR0JfMjRCUFA6MixSR0JBXzMyQlBQOjN9LGUuQW5ub3RhdGlvblR5cGU9e1RFWFQ6MSxMSU5LOjIsRlJFRVRFWFQ6MyxMSU5FOjQsU1FVQVJFOjUsQ0lSQ0xFOjYsUE9MWUdPTjo3LFBPTFlMSU5FOjgsSElHSExJR0hUOjksVU5ERVJMSU5FOjEwLFNRVUlHR0xZOjExLFNUUklLRU9VVDoxMixTVEFNUDoxMyxDQVJFVDoxNCxJTks6MTUsUE9QVVA6MTYsRklMRUFUVEFDSE1FTlQ6MTcsU09VTkQ6MTgsTU9WSUU6MTksV0lER0VUOjIwLFNDUkVFTjoyMSxQUklOVEVSTUFSSzoyMixUUkFQTkVUOjIzLFdBVEVSTUFSSzoyNCxUSFJFRUQ6MjUsUkVEQUNUOjI2fSxlLkFubm90YXRpb25TdGF0ZU1vZGVsVHlwZT17TUFSS0VEOiJNYXJrZWQiLFJFVklFVzoiUmV2aWV3In0sZS5Bbm5vdGF0aW9uTWFya2VkU3RhdGU9e01BUktFRDoiTWFya2VkIixVTk1BUktFRDoiVW5tYXJrZWQifSxlLkFubm90YXRpb25SZXZpZXdTdGF0ZT17QUNDRVBURUQ6IkFjY2VwdGVkIixSRUpFQ1RFRDoiUmVqZWN0ZWQiLENBTkNFTExFRDoiQ2FuY2VsbGVkIixDT01QTEVURUQ6IkNvbXBsZXRlZCIsTk9ORToiTm9uZSJ9LGUuQW5ub3RhdGlvblJlcGx5VHlwZT17R1JPVVA6Ikdyb3VwIixSRVBMWToiUiJ9LGUuQW5ub3RhdGlvbkZsYWc9e0lOVklTSUJMRToxLEhJRERFTjoyLFBSSU5UOjQsTk9aT09NOjgsTk9ST1RBVEU6MTYsTk9WSUVXOjMyLFJFQURPTkxZOjY0LExPQ0tFRDoxMjgsVE9HR0xFTk9WSUVXOjI1NixMT0NLRURDT05URU5UUzo1MTJ9LGUuQW5ub3RhdGlvbkZpZWxkRmxhZz17UkVBRE9OTFk6MSxSRVFVSVJFRDoyLE5PRVhQT1JUOjQsTVVMVElMSU5FOjQwOTYsUEFTU1dPUkQ6ODE5MixOT1RPR0dMRVRPT0ZGOjE2Mzg0LFJBRElPOjMyNzY4LFBVU0hCVVRUT046NjU1MzYsQ09NQk86MTMxMDcyLEVESVQ6MjYyMTQ0LFNPUlQ6NTI0Mjg4LEZJTEVTRUxFQ1Q6MTA0ODU3NixNVUxUSVNFTEVDVDoyMDk3MTUyLERPTk9UU1BFTExDSEVDSzo0MTk0MzA0LERPTk9UU0NST0xMOjgzODg2MDgsQ09NQjoxNjc3NzIxNixSSUNIVEVYVDozMzU1NDQzMixSQURJT1NJTlVOSVNPTjozMzU1NDQzMixDT01NSVRPTlNFTENIQU5HRTo2NzEwODg2NH0sZS5Bbm5vdGF0aW9uQm9yZGVyU3R5bGVUeXBlPXtTT0xJRDoxLERBU0hFRDoyLEJFVkVMRUQ6MyxJTlNFVDo0LFVOREVSTElORTo1fSxlLkFubm90YXRpb25BY3Rpb25FdmVudFR5cGU9e0U6Ik1vdXNlIEVudGVyIixYOiJNb3VzZSBFeGl0IixEOiJNb3VzZSBEb3duIixVOiJNb3VzZSBVcCIsRm86IkZvY3VzIixCbDoiQmx1ciIsUE86IlBhZ2VPcGVuIixQQzoiUGFnZUNsb3NlIixQVjoiUGFnZVZpc2libGUiLFBJOiJQYWdlSW52aXNpYmxlIixLOiJLZXlzdHJva2UiLEY6IkZvcm1hdCIsVjoiVmFsaWRhdGUiLEM6IkNhbGN1bGF0ZSJ9LGUuRG9jdW1lbnRBY3Rpb25FdmVudFR5cGU9e1dDOiJXaWxsQ2xvc2UiLFdTOiJXaWxsU2F2ZSIsRFM6IkRpZFNhdmUiLFdQOiJXaWxsUHJpbnQiLERQOiJEaWRQcmludCJ9LGUuUGFnZUFjdGlvbkV2ZW50VHlwZT17TzoiUGFnZU9wZW4iLEM6IlBhZ2VDbG9zZSJ9LGUuU3RyZWFtVHlwZT17VU5LTk9XTjoiVU5LTk9XTiIsRkxBVEU6IkZMQVRFIixMWlc6IkxaVyIsRENUOiJEQ1QiLEpQWDoiSlBYIixKQklHOiJKQklHIixBODU6IkE4NSIsQUhYOiJBSFgiLENDRjoiQ0NGIixSTFg6IlJMWCJ9LGUuRm9udFR5cGU9e1VOS05PV046IlVOS05PV04iLFRZUEUxOiJUWVBFMSIsVFlQRTFTVEFOREFSRDoiVFlQRTFTVEFOREFSRCIsVFlQRTFDOiJUWVBFMUMiLENJREZPTlRUWVBFMDoiQ0lERk9OVFRZUEUwIixDSURGT05UVFlQRTBDOiJDSURGT05UVFlQRTBDIixUUlVFVFlQRToiVFJVRVRZUEUiLENJREZPTlRUWVBFMjoiQ0lERk9OVFRZUEUyIixUWVBFMzoiVFlQRTMiLE9QRU5UWVBFOiJPUEVOVFlQRSIsVFlQRTA6IlRZUEUwIixNTVRZUEUxOiJNTVRZUEUxIn07dmFyIHA9e0VSUk9SUzowLFdBUk5JTkdTOjEsSU5GT1M6NX07ZS5WZXJib3NpdHlMZXZlbD1wLGUuQ01hcENvbXByZXNzaW9uVHlwZT17Tk9ORTowLEJJTkFSWToxfSxlLk9QUz17ZGVwZW5kZW5jeToxLHNldExpbmVXaWR0aDoyLHNldExpbmVDYXA6MyxzZXRMaW5lSm9pbjo0LHNldE1pdGVyTGltaXQ6NSxzZXREYXNoOjYsc2V0UmVuZGVyaW5nSW50ZW50Ojcsc2V0RmxhdG5lc3M6OCxzZXRHU3RhdGU6OSxzYXZlOjEwLHJlc3RvcmU6MTEsdHJhbnNmb3JtOjEyLG1vdmVUbzoxMyxsaW5lVG86MTQsY3VydmVUbzoxNSxjdXJ2ZVRvMjoxNixjdXJ2ZVRvMzoxNyxjbG9zZVBhdGg6MTgscmVjdGFuZ2xlOjE5LHN0cm9rZToyMCxjbG9zZVN0cm9rZToyMSxmaWxsOjIyLGVvRmlsbDoyMyxmaWxsU3Ryb2tlOjI0LGVvRmlsbFN0cm9rZToyNSxjbG9zZUZpbGxTdHJva2U6MjYsY2xvc2VFT0ZpbGxTdHJva2U6MjcsZW5kUGF0aDoyOCxjbGlwOjI5LGVvQ2xpcDozMCxiZWdpblRleHQ6MzEsZW5kVGV4dDozMixzZXRDaGFyU3BhY2luZzozMyxzZXRXb3JkU3BhY2luZzozNCxzZXRIU2NhbGU6MzUsc2V0TGVhZGluZzozNixzZXRGb250OjM3LHNldFRleHRSZW5kZXJpbmdNb2RlOjM4LHNldFRleHRSaXNlOjM5LG1vdmVUZXh0OjQwLHNldExlYWRpbmdNb3ZlVGV4dDo0MSxzZXRUZXh0TWF0cml4OjQyLG5leHRMaW5lOjQzLHNob3dUZXh0OjQ0LHNob3dTcGFjZWRUZXh0OjQ1LG5leHRMaW5lU2hvd1RleHQ6NDYsbmV4dExpbmVTZXRTcGFjaW5nU2hvd1RleHQ6NDcsc2V0Q2hhcldpZHRoOjQ4LHNldENoYXJXaWR0aEFuZEJvdW5kczo0OSxzZXRTdHJva2VDb2xvclNwYWNlOjUwLHNldEZpbGxDb2xvclNwYWNlOjUxLHNldFN0cm9rZUNvbG9yOjUyLHNldFN0cm9rZUNvbG9yTjo1MyxzZXRGaWxsQ29sb3I6NTQsc2V0RmlsbENvbG9yTjo1NSxzZXRTdHJva2VHcmF5OjU2LHNldEZpbGxHcmF5OjU3LHNldFN0cm9rZVJHQkNvbG9yOjU4LHNldEZpbGxSR0JDb2xvcjo1OSxzZXRTdHJva2VDTVlLQ29sb3I6NjAsc2V0RmlsbENNWUtDb2xvcjo2MSxzaGFkaW5nRmlsbDo2MixiZWdpbklubGluZUltYWdlOjYzLGJlZ2luSW1hZ2VEYXRhOjY0LGVuZElubGluZUltYWdlOjY1LHBhaW50WE9iamVjdDo2NixtYXJrUG9pbnQ6NjcsbWFya1BvaW50UHJvcHM6NjgsYmVnaW5NYXJrZWRDb250ZW50OjY5LGJlZ2luTWFya2VkQ29udGVudFByb3BzOjcwLGVuZE1hcmtlZENvbnRlbnQ6NzEsYmVnaW5Db21wYXQ6NzIsZW5kQ29tcGF0OjczLHBhaW50Rm9ybVhPYmplY3RCZWdpbjo3NCxwYWludEZvcm1YT2JqZWN0RW5kOjc1LGJlZ2luR3JvdXA6NzYsZW5kR3JvdXA6NzcsYmVnaW5Bbm5vdGF0aW9uOjgwLGVuZEFubm90YXRpb246ODEscGFpbnRJbWFnZU1hc2tYT2JqZWN0OjgzLHBhaW50SW1hZ2VNYXNrWE9iamVjdEdyb3VwOjg0LHBhaW50SW1hZ2VYT2JqZWN0Ojg1LHBhaW50SW5saW5lSW1hZ2VYT2JqZWN0Ojg2LHBhaW50SW5saW5lSW1hZ2VYT2JqZWN0R3JvdXA6ODcscGFpbnRJbWFnZVhPYmplY3RSZXBlYXQ6ODgscGFpbnRJbWFnZU1hc2tYT2JqZWN0UmVwZWF0Ojg5LHBhaW50U29saWRDb2xvckltYWdlTWFzazo5MCxjb25zdHJ1Y3RQYXRoOjkxfSxlLlVOU1VQUE9SVEVEX0ZFQVRVUkVTPXtmb3JtczoiZm9ybXMiLGphdmFTY3JpcHQ6ImphdmFTY3JpcHQiLHNpZ25hdHVyZXM6InNpZ25hdHVyZXMiLHNtYXNrOiJzbWFzayIsc2hhZGluZ1BhdHRlcm46InNoYWRpbmdQYXR0ZXJuIixlcnJvclRpbGluZ1BhdHRlcm46ImVycm9yVGlsaW5nUGF0dGVybiIsZXJyb3JFeHRHU3RhdGU6ImVycm9yRXh0R1N0YXRlIixlcnJvclhPYmplY3Q6ImVycm9yWE9iamVjdCIsZXJyb3JGb250TG9hZFR5cGUzOiJlcnJvckZvbnRMb2FkVHlwZTMiLGVycm9yRm9udFN0YXRlOiJlcnJvckZvbnRTdGF0ZSIsZXJyb3JGb250TWlzc2luZzoiZXJyb3JGb250TWlzc2luZyIsZXJyb3JGb250VHJhbnNsYXRlOiJlcnJvckZvbnRUcmFuc2xhdGUiLGVycm9yQ29sb3JTcGFjZToiZXJyb3JDb2xvclNwYWNlIixlcnJvck9wZXJhdG9yTGlzdDoiZXJyb3JPcGVyYXRvckxpc3QiLGVycm9yRm9udFRvVW5pY29kZToiZXJyb3JGb250VG9Vbmljb2RlIixlcnJvckZvbnRMb2FkTmF0aXZlOiJlcnJvckZvbnRMb2FkTmF0aXZlIixlcnJvckZvbnRCdWlsZFBhdGg6ImVycm9yRm9udEJ1aWxkUGF0aCIsZXJyb3JGb250R2V0UGF0aDoiZXJyb3JGb250R2V0UGF0aCIsZXJyb3JNYXJrZWRDb250ZW50OiJlcnJvck1hcmtlZENvbnRlbnQiLGVycm9yQ29udGVudFN1YlN0cmVhbToiZXJyb3JDb250ZW50U3ViU3RyZWFtIn0sZS5QYXNzd29yZFJlc3BvbnNlcz17TkVFRF9QQVNTV09SRDoxLElOQ09SUkVDVF9QQVNTV09SRDoyfTt2YXIgdj1wLldBUk5JTkdTO2Z1bmN0aW9uIHkodCl7dj49cC5XQVJOSU5HUyYmY29uc29sZS5sb2coIldhcm5pbmc6ICIuY29uY2F0KHQpKX1mdW5jdGlvbiBtKHQpe3Rocm93IG5ldyBFcnJvcih0KX1mdW5jdGlvbiBnKHQsZSxyKXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXSYmYXJndW1lbnRzWzNdO3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLHt2YWx1ZTpyLGVudW1lcmFibGU6IW4sY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiExfSkscn12YXIgYj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSxyKXt0aGlzLmNvbnN0cnVjdG9yPT09dCYmbSgiQ2Fubm90IGluaXRpYWxpemUgQmFzZUV4Y2VwdGlvbi4iKSx0aGlzLm1lc3NhZ2U9ZSx0aGlzLm5hbWU9cn1yZXR1cm4gdC5wcm90b3R5cGU9bmV3IEVycm9yLHQuY29uc3RydWN0b3I9dCx0fSgpO2UuQmFzZUV4Y2VwdGlvbj1iO3ZhciBfPWZ1bmN0aW9uKHQpe2Mocix0KTt2YXIgZT1mKHIpO2Z1bmN0aW9uIHIodCxuKXt2YXIgaTtyZXR1cm4gdSh0aGlzLHIpLChpPWUuY2FsbCh0aGlzLHQsIlBhc3N3b3JkRXhjZXB0aW9uIikpLmNvZGU9bixpfXJldHVybiBsKHIpfShiKTtlLlBhc3N3b3JkRXhjZXB0aW9uPV87dmFyIHc9ZnVuY3Rpb24odCl7YyhyLHQpO3ZhciBlPWYocik7ZnVuY3Rpb24gcih0LG4pe3ZhciBpO3JldHVybiB1KHRoaXMsciksKGk9ZS5jYWxsKHRoaXMsdCwiVW5rbm93bkVycm9yRXhjZXB0aW9uIikpLmRldGFpbHM9bixpfXJldHVybiBsKHIpfShiKTtlLlVua25vd25FcnJvckV4Y2VwdGlvbj13O3ZhciBBPWZ1bmN0aW9uKHQpe2Mocix0KTt2YXIgZT1mKHIpO2Z1bmN0aW9uIHIodCl7cmV0dXJuIHUodGhpcyxyKSxlLmNhbGwodGhpcyx0LCJJbnZhbGlkUERGRXhjZXB0aW9uIil9cmV0dXJuIGwocil9KGIpO2UuSW52YWxpZFBERkV4Y2VwdGlvbj1BO3ZhciBrPWZ1bmN0aW9uKHQpe2Mocix0KTt2YXIgZT1mKHIpO2Z1bmN0aW9uIHIodCl7cmV0dXJuIHUodGhpcyxyKSxlLmNhbGwodGhpcyx0LCJNaXNzaW5nUERGRXhjZXB0aW9uIil9cmV0dXJuIGwocil9KGIpO2UuTWlzc2luZ1BERkV4Y2VwdGlvbj1rO3ZhciBTPWZ1bmN0aW9uKHQpe2Mocix0KTt2YXIgZT1mKHIpO2Z1bmN0aW9uIHIodCxuKXt2YXIgaTtyZXR1cm4gdSh0aGlzLHIpLChpPWUuY2FsbCh0aGlzLHQsIlVuZXhwZWN0ZWRSZXNwb25zZUV4Y2VwdGlvbiIpKS5zdGF0dXM9bixpfXJldHVybiBsKHIpfShiKTtlLlVuZXhwZWN0ZWRSZXNwb25zZUV4Y2VwdGlvbj1TO3ZhciB4PWZ1bmN0aW9uKHQpe2Mocix0KTt2YXIgZT1mKHIpO2Z1bmN0aW9uIHIodCl7cmV0dXJuIHUodGhpcyxyKSxlLmNhbGwodGhpcyx0LCJGb3JtYXRFcnJvciIpfXJldHVybiBsKHIpfShiKTtlLkZvcm1hdEVycm9yPXg7dmFyIEU9ZnVuY3Rpb24odCl7YyhyLHQpO3ZhciBlPWYocik7ZnVuY3Rpb24gcih0KXtyZXR1cm4gdSh0aGlzLHIpLGUuY2FsbCh0aGlzLHQsIkFib3J0RXhjZXB0aW9uIil9cmV0dXJuIGwocil9KGIpO2Z1bmN0aW9uIFAodCl7InN0cmluZyIhPXR5cGVvZiB0JiZtKCJJbnZhbGlkIGFyZ3VtZW50IGZvciBzdHJpbmdUb0J5dGVzIik7Zm9yKHZhciBlPXQubGVuZ3RoLHI9bmV3IFVpbnQ4QXJyYXkoZSksbj0wO248ZTsrK24pcltuXT0yNTUmdC5jaGFyQ29kZUF0KG4pO3JldHVybiByfWZ1bmN0aW9uIFQodCl7cmV0dXJuIHZvaWQgMCE9PXQubGVuZ3RoP3QubGVuZ3RoOnZvaWQgMCE9PXQuYnl0ZUxlbmd0aD90LmJ5dGVMZW5ndGg6dm9pZCBtKCJJbnZhbGlkIGFyZ3VtZW50IGZvciBhcnJheUJ5dGVMZW5ndGgiKX1lLkFib3J0RXhjZXB0aW9uPUU7dmFyIEM9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dSh0aGlzLHQpfXJldHVybiBsKHQsbnVsbCxbe2tleToiaXNMaXR0bGVFbmRpYW4iLGdldDpmdW5jdGlvbigpe3JldHVybiBnKHRoaXMsImlzTGl0dGxlRW5kaWFuIiwoKHQ9bmV3IFVpbnQ4QXJyYXkoNCkpWzBdPTEsMT09PW5ldyBVaW50MzJBcnJheSh0LmJ1ZmZlciwwLDEpWzBdKSk7dmFyIHR9fSx7a2V5OiJpc0V2YWxTdXBwb3J0ZWQiLGdldDpmdW5jdGlvbigpe3JldHVybiBnKHRoaXMsImlzRXZhbFN1cHBvcnRlZCIsZnVuY3Rpb24oKXt0cnl7cmV0dXJuIG5ldyBGdW5jdGlvbigiIiksITB9Y2F0Y2godCl7cmV0dXJuITF9fSgpKX19LHtrZXk6ImlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZyh0aGlzLCJpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZCIsInVuZGVmaW5lZCIhPXR5cGVvZiBPZmZzY3JlZW5DYW52YXMpfX0se2tleToicGxhdGZvcm0iLGdldDpmdW5jdGlvbigpe3JldHVybiJ1bmRlZmluZWQiPT10eXBlb2YgbmF2aWdhdG9yP2codGhpcywicGxhdGZvcm0iLHtpc1dpbjohMSxpc01hYzohMX0pOmcodGhpcywicGxhdGZvcm0iLHtpc1dpbjpuYXZpZ2F0b3IucGxhdGZvcm0uaW5jbHVkZXMoIldpbiIpLGlzTWFjOm5hdmlnYXRvci5wbGF0Zm9ybS5pbmNsdWRlcygiTWFjIil9KX19XSksdH0oKTtlLkZlYXR1cmVUZXN0PUM7dmFyIE89bihBcnJheSgyNTYpLmtleXMoKSkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC50b1N0cmluZygxNikucGFkU3RhcnQoMiwiMCIpfSkpLEY9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dSh0aGlzLHQpfXJldHVybiBsKHQsbnVsbCxbe2tleToibWFrZUhleENvbG9yIix2YWx1ZTpmdW5jdGlvbih0LGUscil7cmV0dXJuIiMiLmNvbmNhdChPW3RdKS5jb25jYXQoT1tlXSkuY29uY2F0KE9bcl0pfX0se2tleToic2NhbGVNaW5NYXgiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIHI7dFswXT8odFswXTwwJiYocj1lWzBdLGVbMF09ZVsxXSxlWzFdPXIpLGVbMF0qPXRbMF0sZVsxXSo9dFswXSx0WzNdPDAmJihyPWVbMl0sZVsyXT1lWzNdLGVbM109ciksZVsyXSo9dFszXSxlWzNdKj10WzNdKToocj1lWzBdLGVbMF09ZVsyXSxlWzJdPXIscj1lWzFdLGVbMV09ZVszXSxlWzNdPXIsdFsxXTwwJiYocj1lWzJdLGVbMl09ZVszXSxlWzNdPXIpLGVbMl0qPXRbMV0sZVszXSo9dFsxXSx0WzJdPDAmJihyPWVbMF0sZVswXT1lWzFdLGVbMV09ciksZVswXSo9dFsyXSxlWzFdKj10WzJdKSxlWzBdKz10WzRdLGVbMV0rPXRbNF0sZVsyXSs9dFs1XSxlWzNdKz10WzVdfX0se2tleToidHJhbnNmb3JtIix2YWx1ZTpmdW5jdGlvbih0LGUpe3JldHVyblt0WzBdKmVbMF0rdFsyXSplWzFdLHRbMV0qZVswXSt0WzNdKmVbMV0sdFswXSplWzJdK3RbMl0qZVszXSx0WzFdKmVbMl0rdFszXSplWzNdLHRbMF0qZVs0XSt0WzJdKmVbNV0rdFs0XSx0WzFdKmVbNF0rdFszXSplWzVdK3RbNV1dfX0se2tleToiYXBwbHlUcmFuc2Zvcm0iLHZhbHVlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuW3RbMF0qZVswXSt0WzFdKmVbMl0rZVs0XSx0WzBdKmVbMV0rdFsxXSplWzNdK2VbNV1dfX0se2tleToiYXBwbHlJbnZlcnNlVHJhbnNmb3JtIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciByPWVbMF0qZVszXS1lWzFdKmVbMl07cmV0dXJuWyh0WzBdKmVbM10tdFsxXSplWzJdK2VbMl0qZVs1XS1lWzRdKmVbM10pL3IsKC10WzBdKmVbMV0rdFsxXSplWzBdK2VbNF0qZVsxXS1lWzVdKmVbMF0pL3JdfX0se2tleToiZ2V0QXhpYWxBbGlnbmVkQm91bmRpbmdCb3giLHZhbHVlOmZ1bmN0aW9uKGUscil7dmFyIG49dC5hcHBseVRyYW5zZm9ybShlLHIpLGk9dC5hcHBseVRyYW5zZm9ybShlLnNsaWNlKDIsNCksciksYT10LmFwcGx5VHJhbnNmb3JtKFtlWzBdLGVbM11dLHIpLG89dC5hcHBseVRyYW5zZm9ybShbZVsyXSxlWzFdXSxyKTtyZXR1cm5bTWF0aC5taW4oblswXSxpWzBdLGFbMF0sb1swXSksTWF0aC5taW4oblsxXSxpWzFdLGFbMV0sb1sxXSksTWF0aC5tYXgoblswXSxpWzBdLGFbMF0sb1swXSksTWF0aC5tYXgoblsxXSxpWzFdLGFbMV0sb1sxXSldfX0se2tleToiaW52ZXJzZVRyYW5zZm9ybSIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dFswXSp0WzNdLXRbMV0qdFsyXTtyZXR1cm5bdFszXS9lLC10WzFdL2UsLXRbMl0vZSx0WzBdL2UsKHRbMl0qdFs1XS10WzRdKnRbM10pL2UsKHRbNF0qdFsxXS10WzVdKnRbMF0pL2VdfX0se2tleToic2luZ3VsYXJWYWx1ZURlY29tcG9zZTJkU2NhbGUiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPVt0WzBdLHRbMl0sdFsxXSx0WzNdXSxyPXRbMF0qZVswXSt0WzFdKmVbMl0sbj10WzBdKmVbMV0rdFsxXSplWzNdLGk9dFsyXSplWzBdK3RbM10qZVsyXSxhPXRbMl0qZVsxXSt0WzNdKmVbM10sbz0ocithKS8yLHM9TWF0aC5zcXJ0KE1hdGgucG93KHIrYSwyKS00KihyKmEtaSpuKSkvMixsPW8rc3x8MSx1PW8tc3x8MTtyZXR1cm5bTWF0aC5zcXJ0KGwpLE1hdGguc3FydCh1KV19fSx7a2V5OiJub3JtYWxpemVSZWN0Iix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LnNsaWNlKDApO3JldHVybiB0WzBdPnRbMl0mJihlWzBdPXRbMl0sZVsyXT10WzBdKSx0WzFdPnRbM10mJihlWzFdPXRbM10sZVszXT10WzFdKSxlfX0se2tleToiaW50ZXJzZWN0Iix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciByPU1hdGgubWF4KE1hdGgubWluKHRbMF0sdFsyXSksTWF0aC5taW4oZVswXSxlWzJdKSksbj1NYXRoLm1pbihNYXRoLm1heCh0WzBdLHRbMl0pLE1hdGgubWF4KGVbMF0sZVsyXSkpO2lmKHI+bilyZXR1cm4gbnVsbDt2YXIgaT1NYXRoLm1heChNYXRoLm1pbih0WzFdLHRbM10pLE1hdGgubWluKGVbMV0sZVszXSkpLGE9TWF0aC5taW4oTWF0aC5tYXgodFsxXSx0WzNdKSxNYXRoLm1heChlWzFdLGVbM10pKTtyZXR1cm4gaT5hP251bGw6W3IsaSxuLGFdfX0se2tleToiYmV6aWVyQm91bmRpbmdCb3giLHZhbHVlOmZ1bmN0aW9uKHQsZSxyLGksYSxvLHMsbCl7Zm9yKHZhciB1LGMsaCxmLGQscCx2LHksbT1bXSxnPVtbXSxbXV0sYj0wO2I8MjsrK2IpaWYoMD09PWI/KGM9Nip0LTEyKnIrNiphLHU9LTMqdCs5KnItOSphKzMqcyxoPTMqci0zKnQpOihjPTYqZS0xMippKzYqbyx1PS0zKmUrOSppLTkqbyszKmwsaD0zKmktMyplKSxNYXRoLmFicyh1KTwxZS0xMil7aWYoTWF0aC5hYnMoYyk8MWUtMTIpY29udGludWU7MDwoZj0taC9jKSYmZjwxJiZtLnB1c2goZil9ZWxzZSB2PWMqYy00KmgqdSx5PU1hdGguc3FydCh2KSx2PDB8fCgwPChkPSgtYyt5KS8oMip1KSkmJmQ8MSYmbS5wdXNoKGQpLDA8KHA9KC1jLXkpLygyKnUpKSYmcDwxJiZtLnB1c2gocCkpO2Zvcih2YXIgXyx3PW0ubGVuZ3RoLEE9dzt3LS07KV89MS0oZj1tW3ddKSxnWzBdW3ddPV8qXypfKnQrMypfKl8qZipyKzMqXypmKmYqYStmKmYqZipzLGdbMV1bd109XypfKl8qZSszKl8qXypmKmkrMypfKmYqZipvK2YqZipmKmw7cmV0dXJuIGdbMF1bQV09dCxnWzFdW0FdPWUsZ1swXVtBKzFdPXMsZ1sxXVtBKzFdPWwsZ1swXS5sZW5ndGg9Z1sxXS5sZW5ndGg9QSsyLFtNYXRoLm1pbi5hcHBseShNYXRoLG4oZ1swXSkpLE1hdGgubWluLmFwcGx5KE1hdGgsbihnWzFdKSksTWF0aC5tYXguYXBwbHkoTWF0aCxuKGdbMF0pKSxNYXRoLm1heC5hcHBseShNYXRoLG4oZ1sxXSkpXX19XSksdH0oKTtlLlV0aWw9Rjt2YXIgTT1bMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNzI4LDcxMSw3MTAsNzI5LDczMyw3MzEsNzMwLDczMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw4MjI2LDgyMjQsODIyNSw4MjMwLDgyMTIsODIxMSw0MDIsODI2MCw4MjQ5LDgyNTAsODcyMiw4MjQwLDgyMjIsODIyMCw4MjIxLDgyMTYsODIxNyw4MjE4LDg0ODIsNjQyNTcsNjQyNTgsMzIxLDMzOCwzNTIsMzc2LDM4MSwzMDUsMzIyLDMzOSwzNTMsMzgyLDAsODM2NF07ZnVuY3Rpb24gUih0KXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGVzY2FwZSh0KSl9fSwodCxlLHIpPT57dmFyIG49cigzKTshZ2xvYmFsVGhpcy5idG9hJiZuLmlzTm9kZUpTJiYoZ2xvYmFsVGhpcy5idG9hPWZ1bmN0aW9uKHQpe3JldHVybiBCdWZmZXIuZnJvbSh0LCJiaW5hcnkiKS50b1N0cmluZygiYmFzZTY0Iil9KSwhZ2xvYmFsVGhpcy5hdG9iJiZuLmlzTm9kZUpTJiYoZ2xvYmFsVGhpcy5hdG9iPWZ1bmN0aW9uKHQpe3JldHVybiBCdWZmZXIuZnJvbSh0LCJiYXNlNjQiKS50b1N0cmluZygiYmluYXJ5Iil9KSwhZ2xvYmFsVGhpcy5ET01NYXRyaXgmJm4uaXNOb2RlSlMmJihnbG9iYWxUaGlzLkRPTU1hdHJpeD1yZXF1aXJlKCJjYW52YXMiKS5ET01NYXRyaXgpLCFnbG9iYWxUaGlzLlJlYWRhYmxlU3RyZWFtJiZuLmlzTm9kZUpTJiYoZ2xvYmFsVGhpcy5SZWFkYWJsZVN0cmVhbT1yZXF1aXJlKCJ3ZWItc3RyZWFtcy1wb2x5ZmlsbC9kaXN0L3BvbnlmaWxsLmpzIikuUmVhZGFibGVTdHJlYW0pLEFycmF5LnByb3RvdHlwZS5hdHx8cig0KSxVaW50OEFycmF5LnByb3RvdHlwZS5hdHx8cig3OCksZ2xvYmFsVGhpcy5zdHJ1Y3R1cmVkQ2xvbmV8fHIoODgpfSwodCxlKT0+e2Z1bmN0aW9uIHIodCl7cmV0dXJuIHI9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LHIodCl9T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGUuaXNOb2RlSlM9dm9pZCAwO3ZhciBuPSEoIm9iamVjdCIhPT0oInVuZGVmaW5lZCI9PXR5cGVvZiBwcm9jZXNzPyJ1bmRlZmluZWQiOnIocHJvY2VzcykpfHxwcm9jZXNzKyIiIT0iW29iamVjdCBwcm9jZXNzXSJ8fHByb2Nlc3MudmVyc2lvbnMubnd8fHByb2Nlc3MudmVyc2lvbnMuZWxlY3Ryb24mJnByb2Nlc3MudHlwZSYmImJyb3dzZXIiIT09cHJvY2Vzcy50eXBlKTtlLmlzTm9kZUpTPW59LCh0LGUscik9PntyKDUpO3ZhciBuPXIoNzcpO3QuZXhwb3J0cz1uKCJBcnJheSIsImF0Iil9LCh0LGUscik9Pnt2YXIgbj1yKDYpLGk9cig0MyksYT1yKDY3KSxvPXIoNjUpLHM9cig3Mik7bih7dGFyZ2V0OiJBcnJheSIscHJvdG86ITB9LHthdDpmdW5jdGlvbih0KXt2YXIgZT1pKHRoaXMpLHI9YShlKSxuPW8odCkscz1uPj0wP246cituO3JldHVybiBzPDB8fHM+PXI/dm9pZCAwOmVbc119fSkscygiYXQiKX0sKHQsZSxyKT0+e3ZhciBuPXIoNyksaT1yKDgpLmYsYT1yKDQ3KSxvPXIoNTEpLHM9cig0MSksbD1yKDU5KSx1PXIoNzEpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByLGMsaCxmLGQscD10LnRhcmdldCx2PXQuZ2xvYmFsLHk9dC5zdGF0O2lmKHI9dj9uOnk/bltwXXx8cyhwLHt9KToobltwXXx8e30pLnByb3RvdHlwZSlmb3IoYyBpbiBlKXtpZihmPWVbY10saD10LmRvbnRDYWxsR2V0U2V0PyhkPWkocixjKSkmJmQudmFsdWU6cltjXSwhdSh2P2M6cCsoeT8iLiI6IiMiKStjLHQuZm9yY2VkKSYmdm9pZCAwIT09aCl7aWYodHlwZW9mIGY9PXR5cGVvZiBoKWNvbnRpbnVlO2woZixoKX0odC5zaGFtfHxoJiZoLnNoYW0pJiZhKGYsInNoYW0iLCEwKSxvKHIsYyxmLHQpfX19LHQ9Pnt2YXIgZT1mdW5jdGlvbih0KXtyZXR1cm4gdCYmdC5NYXRoPT1NYXRoJiZ0fTt0LmV4cG9ydHM9ZSgib2JqZWN0Ij09dHlwZW9mIGdsb2JhbFRoaXMmJmdsb2JhbFRoaXMpfHxlKCJvYmplY3QiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3cpfHxlKCJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZil8fGUoIm9iamVjdCI9PXR5cGVvZiBnbG9iYWwmJmdsb2JhbCl8fGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KCl8fEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCl9LCh0LGUscik9Pnt2YXIgbj1yKDkpLGk9cigxMSksYT1yKDEzKSxvPXIoMTQpLHM9cigxNSksbD1yKDIxKSx1PXIoNDIpLGM9cig0NSksaD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO2UuZj1uP2g6ZnVuY3Rpb24odCxlKXtpZih0PXModCksZT1sKGUpLGMpdHJ5e3JldHVybiBoKHQsZSl9Y2F0Y2godCl7fWlmKHUodCxlKSlyZXR1cm4gbyghaShhLmYsdCxlKSx0W2VdKX19LCh0LGUscik9Pnt2YXIgbj1yKDEwKTt0LmV4cG9ydHM9IW4oKGZ1bmN0aW9uKCl7cmV0dXJuIDchPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwxLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gN319KVsxXX0pKX0sdD0+e3QuZXhwb3J0cz1mdW5jdGlvbih0KXt0cnl7cmV0dXJuISF0KCl9Y2F0Y2godCl7cmV0dXJuITB9fX0sKHQsZSxyKT0+e3ZhciBuPXIoMTIpLGk9RnVuY3Rpb24ucHJvdG90eXBlLmNhbGw7dC5leHBvcnRzPW4/aS5iaW5kKGkpOmZ1bmN0aW9uKCl7cmV0dXJuIGkuYXBwbHkoaSxhcmd1bWVudHMpfX0sKHQsZSxyKT0+e3ZhciBuPXIoMTApO3QuZXhwb3J0cz0hbigoZnVuY3Rpb24oKXt2YXIgdD1mdW5jdGlvbigpe30uYmluZCgpO3JldHVybiJmdW5jdGlvbiIhPXR5cGVvZiB0fHx0Lmhhc093blByb3BlcnR5KCJwcm90b3R5cGUiKX0pKX0sKHQsZSk9Pnt2YXIgcj17fS5wcm9wZXJ0eUlzRW51bWVyYWJsZSxuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsaT1uJiYhci5jYWxsKHsxOjJ9LDEpO2UuZj1pP2Z1bmN0aW9uKHQpe3ZhciBlPW4odGhpcyx0KTtyZXR1cm4hIWUmJmUuZW51bWVyYWJsZX06cn0sdD0+e3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybntlbnVtZXJhYmxlOiEoMSZ0KSxjb25maWd1cmFibGU6ISgyJnQpLHdyaXRhYmxlOiEoNCZ0KSx2YWx1ZTplfX19LCh0LGUscik9Pnt2YXIgbj1yKDE2KSxpPXIoMTkpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gbihpKHQpKX19LCh0LGUscik9Pnt2YXIgbj1yKDE3KSxpPXIoMTApLGE9cigxOCksbz1PYmplY3Qscz1uKCIiLnNwbGl0KTt0LmV4cG9ydHM9aSgoZnVuY3Rpb24oKXtyZXR1cm4hbygieiIpLnByb3BlcnR5SXNFbnVtZXJhYmxlKDApfSkpP2Z1bmN0aW9uKHQpe3JldHVybiJTdHJpbmciPT1hKHQpP3ModCwiIik6byh0KX06b30sKHQsZSxyKT0+e3ZhciBuPXIoMTIpLGk9RnVuY3Rpb24ucHJvdG90eXBlLGE9aS5jYWxsLG89biYmaS5iaW5kLmJpbmQoYSxhKTt0LmV4cG9ydHM9bj9vOmZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBhLmFwcGx5KHQsYXJndW1lbnRzKX19fSwodCxlLHIpPT57dmFyIG49cigxNyksaT1uKHt9LnRvU3RyaW5nKSxhPW4oIiIuc2xpY2UpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gYShpKHQpLDgsLTEpfX0sKHQsZSxyKT0+e3ZhciBuPXIoMjApLGk9VHlwZUVycm9yO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtpZihuKHQpKXRocm93IGkoIkNhbid0IGNhbGwgbWV0aG9kIG9uICIrdCk7cmV0dXJuIHR9fSx0PT57dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10fX0sKHQsZSxyKT0+e3ZhciBuPXIoMjIpLGk9cigyNik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPW4odCwic3RyaW5nIik7cmV0dXJuIGkoZSk/ZTplKyIifX0sKHQsZSxyKT0+e3ZhciBuPXIoMTEpLGk9cigyMyksYT1yKDI2KSxvPXIoMzMpLHM9cigzNiksbD1yKDM3KSx1PVR5cGVFcnJvcixjPWwoInRvUHJpbWl0aXZlIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7aWYoIWkodCl8fGEodCkpcmV0dXJuIHQ7dmFyIHIsbD1vKHQsYyk7aWYobCl7aWYodm9pZCAwPT09ZSYmKGU9ImRlZmF1bHQiKSxyPW4obCx0LGUpLCFpKHIpfHxhKHIpKXJldHVybiByO3Rocm93IHUoIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZSIpfXJldHVybiB2b2lkIDA9PT1lJiYoZT0ibnVtYmVyIikscyh0LGUpfX0sKHQsZSxyKT0+e3ZhciBuPXIoMjQpLGk9cigyNSksYT1pLmFsbDt0LmV4cG9ydHM9aS5JU19IVE1MRERBP2Z1bmN0aW9uKHQpe3JldHVybiJvYmplY3QiPT10eXBlb2YgdD9udWxsIT09dDpuKHQpfHx0PT09YX06ZnVuY3Rpb24odCl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiB0P251bGwhPT10Om4odCl9fSwodCxlLHIpPT57dmFyIG49cigyNSksaT1uLmFsbDt0LmV4cG9ydHM9bi5JU19IVE1MRERBP2Z1bmN0aW9uKHQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0fHx0PT09aX06ZnVuY3Rpb24odCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHR9fSx0PT57dmFyIGU9Im9iamVjdCI9PXR5cGVvZiBkb2N1bWVudCYmZG9jdW1lbnQuYWxsLHI9dm9pZCAwPT09ZSYmdm9pZCAwIT09ZTt0LmV4cG9ydHM9e2FsbDplLElTX0hUTUxEREE6cn19LCh0LGUscik9Pnt2YXIgbj1yKDI3KSxpPXIoMjQpLGE9cigyOCksbz1yKDI5KSxzPU9iamVjdDt0LmV4cG9ydHM9bz9mdW5jdGlvbih0KXtyZXR1cm4ic3ltYm9sIj09dHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3ZhciBlPW4oIlN5bWJvbCIpO3JldHVybiBpKGUpJiZhKGUucHJvdG90eXBlLHModCkpfX0sKHQsZSxyKT0+e3ZhciBuPXIoNyksaT1yKDI0KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwyPyhyPW5bdF0saShyKT9yOnZvaWQgMCk6blt0XSYmblt0XVtlXTt2YXIgcn19LCh0LGUscik9Pnt2YXIgbj1yKDE3KTt0LmV4cG9ydHM9bih7fS5pc1Byb3RvdHlwZU9mKX0sKHQsZSxyKT0+e3ZhciBuPXIoMzApO3QuZXhwb3J0cz1uJiYhU3ltYm9sLnNoYW0mJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yfSwodCxlLHIpPT57dmFyIG49cigzMSksaT1yKDEwKTt0LmV4cG9ydHM9ISFPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYhaSgoZnVuY3Rpb24oKXt2YXIgdD1TeW1ib2woKTtyZXR1cm4hU3RyaW5nKHQpfHwhKE9iamVjdCh0KWluc3RhbmNlb2YgU3ltYm9sKXx8IVN5bWJvbC5zaGFtJiZuJiZuPDQxfSkpfSwodCxlLHIpPT57dmFyIG4saSxhPXIoNyksbz1yKDMyKSxzPWEucHJvY2VzcyxsPWEuRGVubyx1PXMmJnMudmVyc2lvbnN8fGwmJmwudmVyc2lvbixjPXUmJnUudjg7YyYmKGk9KG49Yy5zcGxpdCgiLiIpKVswXT4wJiZuWzBdPDQ/MTorKG5bMF0rblsxXSkpLCFpJiZvJiYoIShuPW8ubWF0Y2goL0VkZ2VcLyhcZCspLykpfHxuWzFdPj03NCkmJihuPW8ubWF0Y2goL0Nocm9tZVwvKFxkKykvKSkmJihpPStuWzFdKSx0LmV4cG9ydHM9aX0sKHQsZSxyKT0+e3ZhciBuPXIoMjcpO3QuZXhwb3J0cz1uKCJuYXZpZ2F0b3IiLCJ1c2VyQWdlbnQiKXx8IiJ9LCh0LGUscik9Pnt2YXIgbj1yKDM0KSxpPXIoMjApO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByPXRbZV07cmV0dXJuIGkocik/dm9pZCAwOm4ocil9fSwodCxlLHIpPT57dmFyIG49cigyNCksaT1yKDM1KSxhPVR5cGVFcnJvcjt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYobih0KSlyZXR1cm4gdDt0aHJvdyBhKGkodCkrIiBpcyBub3QgYSBmdW5jdGlvbiIpfX0sdD0+e3ZhciBlPVN0cmluZzt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dHJ5e3JldHVybiBlKHQpfWNhdGNoKHQpe3JldHVybiJPYmplY3QifX19LCh0LGUscik9Pnt2YXIgbj1yKDExKSxpPXIoMjQpLGE9cigyMyksbz1UeXBlRXJyb3I7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHIscztpZigic3RyaW5nIj09PWUmJmkocj10LnRvU3RyaW5nKSYmIWEocz1uKHIsdCkpKXJldHVybiBzO2lmKGkocj10LnZhbHVlT2YpJiYhYShzPW4ocix0KSkpcmV0dXJuIHM7aWYoInN0cmluZyIhPT1lJiZpKHI9dC50b1N0cmluZykmJiFhKHM9bihyLHQpKSlyZXR1cm4gczt0aHJvdyBvKCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWUiKX19LCh0LGUscik9Pnt2YXIgbj1yKDcpLGk9cigzOCksYT1yKDQyKSxvPXIoNDQpLHM9cigzMCksbD1yKDI5KSx1PWkoIndrcyIpLGM9bi5TeW1ib2wsaD1jJiZjLmZvcixmPWw/YzpjJiZjLndpdGhvdXRTZXR0ZXJ8fG87dC5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKCFhKHUsdCl8fCFzJiYic3RyaW5nIiE9dHlwZW9mIHVbdF0pe3ZhciBlPSJTeW1ib2wuIit0O3MmJmEoYyx0KT91W3RdPWNbdF06dVt0XT1sJiZoP2goZSk6ZihlKX1yZXR1cm4gdVt0XX19LCh0LGUscik9Pnt2YXIgbj1yKDM5KSxpPXIoNDApOyh0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gaVt0XXx8KGlbdF09dm9pZCAwIT09ZT9lOnt9KX0pKCJ2ZXJzaW9ucyIsW10pLnB1c2goe3ZlcnNpb246IjMuMjYuMSIsbW9kZTpuPyJwdXJlIjoiZ2xvYmFsIixjb3B5cmlnaHQ6IsKpIDIwMTQtMjAyMiBEZW5pcyBQdXNoa2FyZXYgKHpsb2lyb2NrLnJ1KSIsbGljZW5zZToiaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvYmxvYi92My4yNi4xL0xJQ0VOU0UiLHNvdXJjZToiaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMifSl9LHQ9Pnt0LmV4cG9ydHM9ITF9LCh0LGUscik9Pnt2YXIgbj1yKDcpLGk9cig0MSksYT0iX19jb3JlLWpzX3NoYXJlZF9fIixvPW5bYV18fGkoYSx7fSk7dC5leHBvcnRzPW99LCh0LGUscik9Pnt2YXIgbj1yKDcpLGk9T2JqZWN0LmRlZmluZVByb3BlcnR5O3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3RyeXtpKG4sdCx7dmFsdWU6ZSxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KX1jYXRjaChyKXtuW3RdPWV9cmV0dXJuIGV9fSwodCxlLHIpPT57dmFyIG49cigxNyksaT1yKDQzKSxhPW4oe30uaGFzT3duUHJvcGVydHkpO3QuZXhwb3J0cz1PYmplY3QuaGFzT3dufHxmdW5jdGlvbih0LGUpe3JldHVybiBhKGkodCksZSl9fSwodCxlLHIpPT57dmFyIG49cigxOSksaT1PYmplY3Q7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBpKG4odCkpfX0sKHQsZSxyKT0+e3ZhciBuPXIoMTcpLGk9MCxhPU1hdGgucmFuZG9tKCksbz1uKDEuLnRvU3RyaW5nKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIlN5bWJvbCgiKyh2b2lkIDA9PT10PyIiOnQpKyIpXyIrbygrK2krYSwzNil9fSwodCxlLHIpPT57dmFyIG49cig5KSxpPXIoMTApLGE9cig0Nik7dC5leHBvcnRzPSFuJiYhaSgoZnVuY3Rpb24oKXtyZXR1cm4gNyE9T2JqZWN0LmRlZmluZVByb3BlcnR5KGEoImRpdiIpLCJhIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDd9fSkuYX0pKX0sKHQsZSxyKT0+e3ZhciBuPXIoNyksaT1yKDIzKSxhPW4uZG9jdW1lbnQsbz1pKGEpJiZpKGEuY3JlYXRlRWxlbWVudCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBvP2EuY3JlYXRlRWxlbWVudCh0KTp7fX19LCh0LGUscik9Pnt2YXIgbj1yKDkpLGk9cig0OCksYT1yKDE0KTt0LmV4cG9ydHM9bj9mdW5jdGlvbih0LGUscil7cmV0dXJuIGkuZih0LGUsYSgxLHIpKX06ZnVuY3Rpb24odCxlLHIpe3JldHVybiB0W2VdPXIsdH19LCh0LGUscik9Pnt2YXIgbj1yKDkpLGk9cig0NSksYT1yKDQ5KSxvPXIoNTApLHM9cigyMSksbD1UeXBlRXJyb3IsdT1PYmplY3QuZGVmaW5lUHJvcGVydHksYz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLGg9ImVudW1lcmFibGUiLGY9ImNvbmZpZ3VyYWJsZSIsZD0id3JpdGFibGUiO2UuZj1uP2E/ZnVuY3Rpb24odCxlLHIpe2lmKG8odCksZT1zKGUpLG8ociksImZ1bmN0aW9uIj09dHlwZW9mIHQmJiJwcm90b3R5cGUiPT09ZSYmInZhbHVlImluIHImJmQgaW4gciYmIXJbZF0pe3ZhciBuPWModCxlKTtuJiZuW2RdJiYodFtlXT1yLnZhbHVlLHI9e2NvbmZpZ3VyYWJsZTpmIGluIHI/cltmXTpuW2ZdLGVudW1lcmFibGU6aCBpbiByP3JbaF06bltoXSx3cml0YWJsZTohMX0pfXJldHVybiB1KHQsZSxyKX06dTpmdW5jdGlvbih0LGUscil7aWYobyh0KSxlPXMoZSksbyhyKSxpKXRyeXtyZXR1cm4gdSh0LGUscil9Y2F0Y2godCl7fWlmKCJnZXQiaW4gcnx8InNldCJpbiByKXRocm93IGwoIkFjY2Vzc29ycyBub3Qgc3VwcG9ydGVkIik7cmV0dXJuInZhbHVlImluIHImJih0W2VdPXIudmFsdWUpLHR9fSwodCxlLHIpPT57dmFyIG49cig5KSxpPXIoMTApO3QuZXhwb3J0cz1uJiZpKChmdW5jdGlvbigpe3JldHVybiA0MiE9T2JqZWN0LmRlZmluZVByb3BlcnR5KChmdW5jdGlvbigpe30pLCJwcm90b3R5cGUiLHt2YWx1ZTo0Mix3cml0YWJsZTohMX0pLnByb3RvdHlwZX0pKX0sKHQsZSxyKT0+e3ZhciBuPXIoMjMpLGk9U3RyaW5nLGE9VHlwZUVycm9yO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtpZihuKHQpKXJldHVybiB0O3Rocm93IGEoaSh0KSsiIGlzIG5vdCBhbiBvYmplY3QiKX19LCh0LGUscik9Pnt2YXIgbj1yKDI0KSxpPXIoNDgpLGE9cig1Miksbz1yKDQxKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIscyl7c3x8KHM9e30pO3ZhciBsPXMuZW51bWVyYWJsZSx1PXZvaWQgMCE9PXMubmFtZT9zLm5hbWU6ZTtpZihuKHIpJiZhKHIsdSxzKSxzLmdsb2JhbClsP3RbZV09cjpvKGUscik7ZWxzZXt0cnl7cy51bnNhZmU/dFtlXSYmKGw9ITApOmRlbGV0ZSB0W2VdfWNhdGNoKHQpe31sP3RbZV09cjppLmYodCxlLHt2YWx1ZTpyLGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiFzLm5vbkNvbmZpZ3VyYWJsZSx3cml0YWJsZTohcy5ub25Xcml0YWJsZX0pfXJldHVybiB0fX0sKHQsZSxyKT0+e3ZhciBuPXIoMTApLGk9cigyNCksYT1yKDQyKSxvPXIoOSkscz1yKDUzKS5DT05GSUdVUkFCTEUsbD1yKDU0KSx1PXIoNTUpLGM9dS5lbmZvcmNlLGg9dS5nZXQsZj1PYmplY3QuZGVmaW5lUHJvcGVydHksZD1vJiYhbigoZnVuY3Rpb24oKXtyZXR1cm4gOCE9PWYoKGZ1bmN0aW9uKCl7fSksImxlbmd0aCIse3ZhbHVlOjh9KS5sZW5ndGh9KSkscD1TdHJpbmcoU3RyaW5nKS5zcGxpdCgiU3RyaW5nIiksdj10LmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpeyJTeW1ib2woIj09PVN0cmluZyhlKS5zbGljZSgwLDcpJiYoZT0iWyIrU3RyaW5nKGUpLnJlcGxhY2UoL15TeW1ib2xcKChbXildKilcKS8sIiQxIikrIl0iKSxyJiZyLmdldHRlciYmKGU9ImdldCAiK2UpLHImJnIuc2V0dGVyJiYoZT0ic2V0ICIrZSksKCFhKHQsIm5hbWUiKXx8cyYmdC5uYW1lIT09ZSkmJihvP2YodCwibmFtZSIse3ZhbHVlOmUsY29uZmlndXJhYmxlOiEwfSk6dC5uYW1lPWUpLGQmJnImJmEociwiYXJpdHkiKSYmdC5sZW5ndGghPT1yLmFyaXR5JiZmKHQsImxlbmd0aCIse3ZhbHVlOnIuYXJpdHl9KTt0cnl7ciYmYShyLCJjb25zdHJ1Y3RvciIpJiZyLmNvbnN0cnVjdG9yP28mJmYodCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KTp0LnByb3RvdHlwZSYmKHQucHJvdG90eXBlPXZvaWQgMCl9Y2F0Y2godCl7fXZhciBuPWModCk7cmV0dXJuIGEobiwic291cmNlIil8fChuLnNvdXJjZT1wLmpvaW4oInN0cmluZyI9PXR5cGVvZiBlP2U6IiIpKSx0fTtGdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmc9digoZnVuY3Rpb24oKXtyZXR1cm4gaSh0aGlzKSYmaCh0aGlzKS5zb3VyY2V8fGwodGhpcyl9KSwidG9TdHJpbmciKX0sKHQsZSxyKT0+e3ZhciBuPXIoOSksaT1yKDQyKSxhPUZ1bmN0aW9uLnByb3RvdHlwZSxvPW4mJk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iscz1pKGEsIm5hbWUiKSxsPXMmJiJzb21ldGhpbmciPT09ZnVuY3Rpb24oKXt9Lm5hbWUsdT1zJiYoIW58fG4mJm8oYSwibmFtZSIpLmNvbmZpZ3VyYWJsZSk7dC5leHBvcnRzPXtFWElTVFM6cyxQUk9QRVI6bCxDT05GSUdVUkFCTEU6dX19LCh0LGUscik9Pnt2YXIgbj1yKDE3KSxpPXIoMjQpLGE9cig0MCksbz1uKEZ1bmN0aW9uLnRvU3RyaW5nKTtpKGEuaW5zcGVjdFNvdXJjZSl8fChhLmluc3BlY3RTb3VyY2U9ZnVuY3Rpb24odCl7cmV0dXJuIG8odCl9KSx0LmV4cG9ydHM9YS5pbnNwZWN0U291cmNlfSwodCxlLHIpPT57dmFyIG4saSxhLG89cig1Nikscz1yKDcpLGw9cigyMyksdT1yKDQ3KSxjPXIoNDIpLGg9cig0MCksZj1yKDU3KSxkPXIoNTgpLHA9Ik9iamVjdCBhbHJlYWR5IGluaXRpYWxpemVkIix2PXMuVHlwZUVycm9yLHk9cy5XZWFrTWFwO2lmKG98fGguc3RhdGUpe3ZhciBtPWguc3RhdGV8fChoLnN0YXRlPW5ldyB5KTttLmdldD1tLmdldCxtLmhhcz1tLmhhcyxtLnNldD1tLnNldCxuPWZ1bmN0aW9uKHQsZSl7aWYobS5oYXModCkpdGhyb3cgdihwKTtyZXR1cm4gZS5mYWNhZGU9dCxtLnNldCh0LGUpLGV9LGk9ZnVuY3Rpb24odCl7cmV0dXJuIG0uZ2V0KHQpfHx7fX0sYT1mdW5jdGlvbih0KXtyZXR1cm4gbS5oYXModCl9fWVsc2V7dmFyIGc9Zigic3RhdGUiKTtkW2ddPSEwLG49ZnVuY3Rpb24odCxlKXtpZihjKHQsZykpdGhyb3cgdihwKTtyZXR1cm4gZS5mYWNhZGU9dCx1KHQsZyxlKSxlfSxpPWZ1bmN0aW9uKHQpe3JldHVybiBjKHQsZyk/dFtnXTp7fX0sYT1mdW5jdGlvbih0KXtyZXR1cm4gYyh0LGcpfX10LmV4cG9ydHM9e3NldDpuLGdldDppLGhhczphLGVuZm9yY2U6ZnVuY3Rpb24odCl7cmV0dXJuIGEodCk/aSh0KTpuKHQse30pfSxnZXR0ZXJGb3I6ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciByO2lmKCFsKGUpfHwocj1pKGUpKS50eXBlIT09dCl0aHJvdyB2KCJJbmNvbXBhdGlibGUgcmVjZWl2ZXIsICIrdCsiIHJlcXVpcmVkIik7cmV0dXJuIHJ9fX19LCh0LGUscik9Pnt2YXIgbj1yKDcpLGk9cigyNCksYT1uLldlYWtNYXA7dC5leHBvcnRzPWkoYSkmJi9uYXRpdmUgY29kZS8udGVzdChTdHJpbmcoYSkpfSwodCxlLHIpPT57dmFyIG49cigzOCksaT1yKDQ0KSxhPW4oImtleXMiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIGFbdF18fChhW3RdPWkodCkpfX0sdD0+e3QuZXhwb3J0cz17fX0sKHQsZSxyKT0+e3ZhciBuPXIoNDIpLGk9cig2MCksYT1yKDgpLG89cig0OCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXtmb3IodmFyIHM9aShlKSxsPW8uZix1PWEuZixjPTA7YzxzLmxlbmd0aDtjKyspe3ZhciBoPXNbY107bih0LGgpfHxyJiZuKHIsaCl8fGwodCxoLHUoZSxoKSl9fX0sKHQsZSxyKT0+e3ZhciBuPXIoMjcpLGk9cigxNyksYT1yKDYxKSxvPXIoNzApLHM9cig1MCksbD1pKFtdLmNvbmNhdCk7dC5leHBvcnRzPW4oIlJlZmxlY3QiLCJvd25LZXlzIil8fGZ1bmN0aW9uKHQpe3ZhciBlPWEuZihzKHQpKSxyPW8uZjtyZXR1cm4gcj9sKGUscih0KSk6ZX19LCh0LGUscik9Pnt2YXIgbj1yKDYyKSxpPXIoNjkpLmNvbmNhdCgibGVuZ3RoIiwicHJvdG90eXBlIik7ZS5mPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzfHxmdW5jdGlvbih0KXtyZXR1cm4gbih0LGkpfX0sKHQsZSxyKT0+e3ZhciBuPXIoMTcpLGk9cig0MiksYT1yKDE1KSxvPXIoNjMpLmluZGV4T2Yscz1yKDU4KSxsPW4oW10ucHVzaCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHIsbj1hKHQpLHU9MCxjPVtdO2ZvcihyIGluIG4pIWkocyxyKSYmaShuLHIpJiZsKGMscik7Zm9yKDtlLmxlbmd0aD51OylpKG4scj1lW3UrK10pJiYofm8oYyxyKXx8bChjLHIpKTtyZXR1cm4gY319LCh0LGUscik9Pnt2YXIgbj1yKDE1KSxpPXIoNjQpLGE9cig2Nyksbz1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSxyLG8pe3ZhciBzLGw9bihlKSx1PWEobCksYz1pKG8sdSk7aWYodCYmciE9cil7Zm9yKDt1PmM7KWlmKChzPWxbYysrXSkhPXMpcmV0dXJuITB9ZWxzZSBmb3IoO3U+YztjKyspaWYoKHR8fGMgaW4gbCkmJmxbY109PT1yKXJldHVybiB0fHxjfHwwO3JldHVybiF0JiYtMX19O3QuZXhwb3J0cz17aW5jbHVkZXM6byghMCksaW5kZXhPZjpvKCExKX19LCh0LGUscik9Pnt2YXIgbj1yKDY1KSxpPU1hdGgubWF4LGE9TWF0aC5taW47dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9bih0KTtyZXR1cm4gcjwwP2kocitlLDApOmEocixlKX19LCh0LGUscik9Pnt2YXIgbj1yKDY2KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9K3Q7cmV0dXJuIGUhPWV8fDA9PT1lPzA6bihlKX19LHQ9Pnt2YXIgZT1NYXRoLmNlaWwscj1NYXRoLmZsb29yO3QuZXhwb3J0cz1NYXRoLnRydW5jfHxmdW5jdGlvbih0KXt2YXIgbj0rdDtyZXR1cm4obj4wP3I6ZSkobil9fSwodCxlLHIpPT57dmFyIG49cig2OCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBuKHQubGVuZ3RoKX19LCh0LGUscik9Pnt2YXIgbj1yKDY1KSxpPU1hdGgubWluO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gdD4wP2kobih0KSw5MDA3MTk5MjU0NzQwOTkxKTowfX0sdD0+e3QuZXhwb3J0cz1bImNvbnN0cnVjdG9yIiwiaGFzT3duUHJvcGVydHkiLCJpc1Byb3RvdHlwZU9mIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJ0b0xvY2FsZVN0cmluZyIsInRvU3RyaW5nIiwidmFsdWVPZiJdfSwodCxlKT0+e2UuZj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzfSwodCxlLHIpPT57dmFyIG49cigxMCksaT1yKDI0KSxhPS8jfFwucHJvdG90eXBlXC4vLG89ZnVuY3Rpb24odCxlKXt2YXIgcj1sW3ModCldO3JldHVybiByPT1jfHxyIT11JiYoaShlKT9uKGUpOiEhZSl9LHM9by5ub3JtYWxpemU9ZnVuY3Rpb24odCl7cmV0dXJuIFN0cmluZyh0KS5yZXBsYWNlKGEsIi4iKS50b0xvd2VyQ2FzZSgpfSxsPW8uZGF0YT17fSx1PW8uTkFUSVZFPSJOIixjPW8uUE9MWUZJTEw9IlAiO3QuZXhwb3J0cz1vfSwodCxlLHIpPT57dmFyIG49cigzNyksaT1yKDczKSxhPXIoNDgpLmYsbz1uKCJ1bnNjb3BhYmxlcyIpLHM9QXJyYXkucHJvdG90eXBlO251bGw9PXNbb10mJmEocyxvLHtjb25maWd1cmFibGU6ITAsdmFsdWU6aShudWxsKX0pLHQuZXhwb3J0cz1mdW5jdGlvbih0KXtzW29dW3RdPSEwfX0sKHQsZSxyKT0+e3ZhciBuLGk9cig1MCksYT1yKDc0KSxvPXIoNjkpLHM9cig1OCksbD1yKDc2KSx1PXIoNDYpLGM9cig1NyksaD0icHJvdG90eXBlIixmPSJzY3JpcHQiLGQ9YygiSUVfUFJPVE8iKSxwPWZ1bmN0aW9uKCl7fSx2PWZ1bmN0aW9uKHQpe3JldHVybiI8IitmKyI+Iit0KyI8LyIrZisiPiJ9LHk9ZnVuY3Rpb24odCl7dC53cml0ZSh2KCIiKSksdC5jbG9zZSgpO3ZhciBlPXQucGFyZW50V2luZG93Lk9iamVjdDtyZXR1cm4gdD1udWxsLGV9LG09ZnVuY3Rpb24oKXt0cnl7bj1uZXcgQWN0aXZlWE9iamVjdCgiaHRtbGZpbGUiKX1jYXRjaCh0KXt9dmFyIHQsZSxyO209InVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudD9kb2N1bWVudC5kb21haW4mJm4/eShuKTooZT11KCJpZnJhbWUiKSxyPSJqYXZhIitmKyI6IixlLnN0eWxlLmRpc3BsYXk9Im5vbmUiLGwuYXBwZW5kQ2hpbGQoZSksZS5zcmM9U3RyaW5nKHIpLCh0PWUuY29udGVudFdpbmRvdy5kb2N1bWVudCkub3BlbigpLHQud3JpdGUodigiZG9jdW1lbnQuRj1PYmplY3QiKSksdC5jbG9zZSgpLHQuRik6eShuKTtmb3IodmFyIGk9by5sZW5ndGg7aS0tOylkZWxldGUgbVtoXVtvW2ldXTtyZXR1cm4gbSgpfTtzW2RdPSEwLHQuZXhwb3J0cz1PYmplY3QuY3JlYXRlfHxmdW5jdGlvbih0LGUpe3ZhciByO3JldHVybiBudWxsIT09dD8ocFtoXT1pKHQpLHI9bmV3IHAscFtoXT1udWxsLHJbZF09dCk6cj1tKCksdm9pZCAwPT09ZT9yOmEuZihyLGUpfX0sKHQsZSxyKT0+e3ZhciBuPXIoOSksaT1yKDQ5KSxhPXIoNDgpLG89cig1MCkscz1yKDE1KSxsPXIoNzUpO2UuZj1uJiYhaT9PYmplY3QuZGVmaW5lUHJvcGVydGllczpmdW5jdGlvbih0LGUpe28odCk7Zm9yKHZhciByLG49cyhlKSxpPWwoZSksdT1pLmxlbmd0aCxjPTA7dT5jOylhLmYodCxyPWlbYysrXSxuW3JdKTtyZXR1cm4gdH19LCh0LGUscik9Pnt2YXIgbj1yKDYyKSxpPXIoNjkpO3QuZXhwb3J0cz1PYmplY3Qua2V5c3x8ZnVuY3Rpb24odCl7cmV0dXJuIG4odCxpKX19LCh0LGUscik9Pnt2YXIgbj1yKDI3KTt0LmV4cG9ydHM9bigiZG9jdW1lbnQiLCJkb2N1bWVudEVsZW1lbnQiKX0sKHQsZSxyKT0+e3ZhciBuPXIoNyksaT1yKDE3KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gaShuW3RdLnByb3RvdHlwZVtlXSl9fSwodCxlLHIpPT57cig3OSl9LCh0LGUscik9Pnt2YXIgbj1yKDgwKSxpPXIoNjcpLGE9cig2NSksbz1uLmFUeXBlZEFycmF5OygwLG4uZXhwb3J0VHlwZWRBcnJheU1ldGhvZCkoImF0IiwoZnVuY3Rpb24odCl7dmFyIGU9byh0aGlzKSxyPWkoZSksbj1hKHQpLHM9bj49MD9uOnIrbjtyZXR1cm4gczwwfHxzPj1yP3ZvaWQgMDplW3NdfSkpfSwodCxlLHIpPT57dmFyIG4saSxhLG89cig4MSkscz1yKDkpLGw9cig3KSx1PXIoMjQpLGM9cigyMyksaD1yKDQyKSxmPXIoODIpLGQ9cigzNSkscD1yKDQ3KSx2PXIoNTEpLHk9cig0OCkuZixtPXIoMjgpLGc9cig4NCksYj1yKDg2KSxfPXIoMzcpLHc9cig0NCksQT1yKDU1KSxrPUEuZW5mb3JjZSxTPUEuZ2V0LHg9bC5JbnQ4QXJyYXksRT14JiZ4LnByb3RvdHlwZSxQPWwuVWludDhDbGFtcGVkQXJyYXksVD1QJiZQLnByb3RvdHlwZSxDPXgmJmcoeCksTz1FJiZnKEUpLEY9T2JqZWN0LnByb3RvdHlwZSxNPWwuVHlwZUVycm9yLFI9XygidG9TdHJpbmdUYWciKSxJPXcoIlRZUEVEX0FSUkFZX1RBRyIpLGo9IlR5cGVkQXJyYXlDb25zdHJ1Y3RvciIsTD1vJiYhIWImJiJPcGVyYSIhPT1mKGwub3BlcmEpLEQ9ITEsTj17SW50OEFycmF5OjEsVWludDhBcnJheToxLFVpbnQ4Q2xhbXBlZEFycmF5OjEsSW50MTZBcnJheToyLFVpbnQxNkFycmF5OjIsSW50MzJBcnJheTo0LFVpbnQzMkFycmF5OjQsRmxvYXQzMkFycmF5OjQsRmxvYXQ2NEFycmF5Ojh9LFU9e0JpZ0ludDY0QXJyYXk6OCxCaWdVaW50NjRBcnJheTo4fSxXPWZ1bmN0aW9uKHQpe3ZhciBlPWcodCk7aWYoYyhlKSl7dmFyIHI9UyhlKTtyZXR1cm4gciYmaChyLGopP3Jbal06VyhlKX19LEc9ZnVuY3Rpb24odCl7aWYoIWModCkpcmV0dXJuITE7dmFyIGU9Zih0KTtyZXR1cm4gaChOLGUpfHxoKFUsZSl9O2ZvcihuIGluIE4pKGE9KGk9bFtuXSkmJmkucHJvdG90eXBlKT9rKGEpW2pdPWk6TD0hMTtmb3IobiBpbiBVKShhPShpPWxbbl0pJiZpLnByb3RvdHlwZSkmJihrKGEpW2pdPWkpO2lmKCghTHx8IXUoQyl8fEM9PT1GdW5jdGlvbi5wcm90b3R5cGUpJiYoQz1mdW5jdGlvbigpe3Rocm93IE0oIkluY29ycmVjdCBpbnZvY2F0aW9uIil9LEwpKWZvcihuIGluIE4pbFtuXSYmYihsW25dLEMpO2lmKCghTHx8IU98fE89PT1GKSYmKE89Qy5wcm90b3R5cGUsTCkpZm9yKG4gaW4gTilsW25dJiZiKGxbbl0ucHJvdG90eXBlLE8pO2lmKEwmJmcoVCkhPT1PJiZiKFQsTykscyYmIWgoTyxSKSlmb3IobiBpbiBEPSEwLHkoTyxSLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYyh0aGlzKT90aGlzW0ldOnZvaWQgMH19KSxOKWxbbl0mJnAobFtuXSxJLG4pO3QuZXhwb3J0cz17TkFUSVZFX0FSUkFZX0JVRkZFUl9WSUVXUzpMLFRZUEVEX0FSUkFZX1RBRzpEJiZJLGFUeXBlZEFycmF5OmZ1bmN0aW9uKHQpe2lmKEcodCkpcmV0dXJuIHQ7dGhyb3cgTSgiVGFyZ2V0IGlzIG5vdCBhIHR5cGVkIGFycmF5Iil9LGFUeXBlZEFycmF5Q29uc3RydWN0b3I6ZnVuY3Rpb24odCl7aWYodSh0KSYmKCFifHxtKEMsdCkpKXJldHVybiB0O3Rocm93IE0oZCh0KSsiIGlzIG5vdCBhIHR5cGVkIGFycmF5IGNvbnN0cnVjdG9yIil9LGV4cG9ydFR5cGVkQXJyYXlNZXRob2Q6ZnVuY3Rpb24odCxlLHIsbil7aWYocyl7aWYocilmb3IodmFyIGkgaW4gTil7dmFyIGE9bFtpXTtpZihhJiZoKGEucHJvdG90eXBlLHQpKXRyeXtkZWxldGUgYS5wcm90b3R5cGVbdF19Y2F0Y2gocil7dHJ5e2EucHJvdG90eXBlW3RdPWV9Y2F0Y2godCl7fX19T1t0XSYmIXJ8fHYoTyx0LHI/ZTpMJiZFW3RdfHxlLG4pfX0sZXhwb3J0VHlwZWRBcnJheVN0YXRpY01ldGhvZDpmdW5jdGlvbih0LGUscil7dmFyIG4saTtpZihzKXtpZihiKXtpZihyKWZvcihuIGluIE4paWYoKGk9bFtuXSkmJmgoaSx0KSl0cnl7ZGVsZXRlIGlbdF19Y2F0Y2godCl7fWlmKENbdF0mJiFyKXJldHVybjt0cnl7cmV0dXJuIHYoQyx0LHI/ZTpMJiZDW3RdfHxlKX1jYXRjaCh0KXt9fWZvcihuIGluIE4pIShpPWxbbl0pfHxpW3RdJiYhcnx8dihpLHQsZSl9fSxnZXRUeXBlZEFycmF5Q29uc3RydWN0b3I6Vyxpc1ZpZXc6ZnVuY3Rpb24odCl7aWYoIWModCkpcmV0dXJuITE7dmFyIGU9Zih0KTtyZXR1cm4iRGF0YVZpZXciPT09ZXx8aChOLGUpfHxoKFUsZSl9LGlzVHlwZWRBcnJheTpHLFR5cGVkQXJyYXk6QyxUeXBlZEFycmF5UHJvdG90eXBlOk99fSx0PT57dC5leHBvcnRzPSJ1bmRlZmluZWQiIT10eXBlb2YgQXJyYXlCdWZmZXImJiJ1bmRlZmluZWQiIT10eXBlb2YgRGF0YVZpZXd9LCh0LGUscik9Pnt2YXIgbj1yKDgzKSxpPXIoMjQpLGE9cigxOCksbz1yKDM3KSgidG9TdHJpbmdUYWciKSxzPU9iamVjdCxsPSJBcmd1bWVudHMiPT1hKGZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50c30oKSk7dC5leHBvcnRzPW4/YTpmdW5jdGlvbih0KXt2YXIgZSxyLG47cmV0dXJuIHZvaWQgMD09PXQ/IlVuZGVmaW5lZCI6bnVsbD09PXQ/Ik51bGwiOiJzdHJpbmciPT10eXBlb2Yocj1mdW5jdGlvbih0LGUpe3RyeXtyZXR1cm4gdFtlXX1jYXRjaCh0KXt9fShlPXModCksbykpP3I6bD9hKGUpOiJPYmplY3QiPT0obj1hKGUpKSYmaShlLmNhbGxlZSk/IkFyZ3VtZW50cyI6bn19LCh0LGUscik9Pnt2YXIgbj17fTtuW3IoMzcpKCJ0b1N0cmluZ1RhZyIpXT0ieiIsdC5leHBvcnRzPSJbb2JqZWN0IHpdIj09PVN0cmluZyhuKX0sKHQsZSxyKT0+e3ZhciBuPXIoNDIpLGk9cigyNCksYT1yKDQzKSxvPXIoNTcpLHM9cig4NSksbD1vKCJJRV9QUk9UTyIpLHU9T2JqZWN0LGM9dS5wcm90b3R5cGU7dC5leHBvcnRzPXM/dS5nZXRQcm90b3R5cGVPZjpmdW5jdGlvbih0KXt2YXIgZT1hKHQpO2lmKG4oZSxsKSlyZXR1cm4gZVtsXTt2YXIgcj1lLmNvbnN0cnVjdG9yO3JldHVybiBpKHIpJiZlIGluc3RhbmNlb2Ygcj9yLnByb3RvdHlwZTplIGluc3RhbmNlb2YgdT9jOm51bGx9fSwodCxlLHIpPT57dmFyIG49cigxMCk7dC5leHBvcnRzPSFuKChmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLmNvbnN0cnVjdG9yPW51bGwsT2JqZWN0LmdldFByb3RvdHlwZU9mKG5ldyB0KSE9PXQucHJvdG90eXBlfSkpfSwodCxlLHIpPT57dmFyIG49cigxNyksaT1yKDUwKSxhPXIoODcpO3QuZXhwb3J0cz1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fCgiX19wcm90b19fImlue30/ZnVuY3Rpb24oKXt2YXIgdCxlPSExLHI9e307dHJ5eyh0PW4oT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihPYmplY3QucHJvdG90eXBlLCJfX3Byb3RvX18iKS5zZXQpKShyLFtdKSxlPXIgaW5zdGFuY2VvZiBBcnJheX1jYXRjaCh0KXt9cmV0dXJuIGZ1bmN0aW9uKHIsbil7cmV0dXJuIGkociksYShuKSxlP3QocixuKTpyLl9fcHJvdG9fXz1uLHJ9fSgpOnZvaWQgMCl9LCh0LGUscik9Pnt2YXIgbj1yKDI0KSxpPVN0cmluZyxhPVR5cGVFcnJvcjt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYoIm9iamVjdCI9PXR5cGVvZiB0fHxuKHQpKXJldHVybiB0O3Rocm93IGEoIkNhbid0IHNldCAiK2kodCkrIiBhcyBhIHByb3RvdHlwZSIpfX0sKHQsZSxyKT0+e3IoODkpLHIoOTYpLHIoOTgpLHIoMTIxKSxyKDEyMyk7dmFyIG49cigxMzIpO3QuZXhwb3J0cz1uLnN0cnVjdHVyZWRDbG9uZX0sKHQsZSxyKT0+e3ZhciBuPXIoMTUpLGk9cig3MiksYT1yKDkwKSxvPXIoNTUpLHM9cig0OCkuZixsPXIoOTEpLHU9cig5NSksYz1yKDM5KSxoPXIoOSksZj0iQXJyYXkgSXRlcmF0b3IiLGQ9by5zZXQscD1vLmdldHRlckZvcihmKTt0LmV4cG9ydHM9bChBcnJheSwiQXJyYXkiLChmdW5jdGlvbih0LGUpe2QodGhpcyx7dHlwZTpmLHRhcmdldDpuKHQpLGluZGV4OjAsa2luZDplfSl9KSwoZnVuY3Rpb24oKXt2YXIgdD1wKHRoaXMpLGU9dC50YXJnZXQscj10LmtpbmQsbj10LmluZGV4Kys7cmV0dXJuIWV8fG4+PWUubGVuZ3RoPyh0LnRhcmdldD12b2lkIDAsdSh2b2lkIDAsITApKTp1KCJrZXlzIj09cj9uOiJ2YWx1ZXMiPT1yP2Vbbl06W24sZVtuXV0sITEpfSksInZhbHVlcyIpO3ZhciB2PWEuQXJndW1lbnRzPWEuQXJyYXk7aWYoaSgia2V5cyIpLGkoInZhbHVlcyIpLGkoImVudHJpZXMiKSwhYyYmaCYmInZhbHVlcyIhPT12Lm5hbWUpdHJ5e3ModiwibmFtZSIse3ZhbHVlOiJ2YWx1ZXMifSl9Y2F0Y2godCl7fX0sdD0+e3QuZXhwb3J0cz17fX0sKHQsZSxyKT0+e3ZhciBuPXIoNiksaT1yKDExKSxhPXIoMzkpLG89cig1Mykscz1yKDI0KSxsPXIoOTIpLHU9cig4NCksYz1yKDg2KSxoPXIoOTQpLGY9cig0NyksZD1yKDUxKSxwPXIoMzcpLHY9cig5MCkseT1yKDkzKSxtPW8uUFJPUEVSLGc9by5DT05GSUdVUkFCTEUsYj15Lkl0ZXJhdG9yUHJvdG90eXBlLF89eS5CVUdHWV9TQUZBUklfSVRFUkFUT1JTLHc9cCgiaXRlcmF0b3IiKSxBPSJrZXlzIixrPSJ2YWx1ZXMiLFM9ImVudHJpZXMiLHg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc307dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLG8scCx5LEUpe2wocixlLG8pO3ZhciBQLFQsQyxPPWZ1bmN0aW9uKHQpe2lmKHQ9PT1wJiZqKXJldHVybiBqO2lmKCFfJiZ0IGluIFIpcmV0dXJuIFJbdF07c3dpdGNoKHQpe2Nhc2UgQTpjYXNlIGs6Y2FzZSBTOnJldHVybiBmdW5jdGlvbigpe3JldHVybiBuZXcgcih0aGlzLHQpfX1yZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHIodGhpcyl9fSxGPWUrIiBJdGVyYXRvciIsTT0hMSxSPXQucHJvdG90eXBlLEk9Ult3XXx8UlsiQEBpdGVyYXRvciJdfHxwJiZSW3BdLGo9IV8mJkl8fE8ocCksTD0iQXJyYXkiPT1lJiZSLmVudHJpZXN8fEk7aWYoTCYmKFA9dShMLmNhbGwobmV3IHQpKSkhPT1PYmplY3QucHJvdG90eXBlJiZQLm5leHQmJihhfHx1KFApPT09Ynx8KGM/YyhQLGIpOnMoUFt3XSl8fGQoUCx3LHgpKSxoKFAsRiwhMCwhMCksYSYmKHZbRl09eCkpLG0mJnA9PWsmJkkmJkkubmFtZSE9PWsmJighYSYmZz9mKFIsIm5hbWUiLGspOihNPSEwLGo9ZnVuY3Rpb24oKXtyZXR1cm4gaShJLHRoaXMpfSkpLHApaWYoVD17dmFsdWVzOk8oayksa2V5czp5P2o6TyhBKSxlbnRyaWVzOk8oUyl9LEUpZm9yKEMgaW4gVCkoX3x8TXx8IShDIGluIFIpKSYmZChSLEMsVFtDXSk7ZWxzZSBuKHt0YXJnZXQ6ZSxwcm90bzohMCxmb3JjZWQ6X3x8TX0sVCk7cmV0dXJuIGEmJiFFfHxSW3ddPT09anx8ZChSLHcsaix7bmFtZTpwfSksdltlXT1qLFR9fSwodCxlLHIpPT57dmFyIG49cig5MykuSXRlcmF0b3JQcm90b3R5cGUsaT1yKDczKSxhPXIoMTQpLG89cig5NCkscz1yKDkwKSxsPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9O3QuZXhwb3J0cz1mdW5jdGlvbih0LGUscix1KXt2YXIgYz1lKyIgSXRlcmF0b3IiO3JldHVybiB0LnByb3RvdHlwZT1pKG4se25leHQ6YSgrIXUscil9KSxvKHQsYywhMSwhMCksc1tjXT1sLHR9fSwodCxlLHIpPT57dmFyIG4saSxhLG89cigxMCkscz1yKDI0KSxsPXIoMjMpLHU9cig3MyksYz1yKDg0KSxoPXIoNTEpLGY9cigzNyksZD1yKDM5KSxwPWYoIml0ZXJhdG9yIiksdj0hMTtbXS5rZXlzJiYoIm5leHQiaW4oYT1bXS5rZXlzKCkpPyhpPWMoYyhhKSkpIT09T2JqZWN0LnByb3RvdHlwZSYmKG49aSk6dj0hMCksIWwobil8fG8oKGZ1bmN0aW9uKCl7dmFyIHQ9e307cmV0dXJuIG5bcF0uY2FsbCh0KSE9PXR9KSk/bj17fTpkJiYobj11KG4pKSxzKG5bcF0pfHxoKG4scCwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSx0LmV4cG9ydHM9e0l0ZXJhdG9yUHJvdG90eXBlOm4sQlVHR1lfU0FGQVJJX0lURVJBVE9SUzp2fX0sKHQsZSxyKT0+e3ZhciBuPXIoNDgpLmYsaT1yKDQyKSxhPXIoMzcpKCJ0b1N0cmluZ1RhZyIpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7dCYmIXImJih0PXQucHJvdG90eXBlKSx0JiYhaSh0LGEpJiZuKHQsYSx7Y29uZmlndXJhYmxlOiEwLHZhbHVlOmV9KX19LHQ9Pnt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm57dmFsdWU6dCxkb25lOmV9fX0sKHQsZSxyKT0+e3ZhciBuPXIoODMpLGk9cig1MSksYT1yKDk3KTtufHxpKE9iamVjdC5wcm90b3R5cGUsInRvU3RyaW5nIixhLHt1bnNhZmU6ITB9KX0sKHQsZSxyKT0+e3ZhciBuPXIoODMpLGk9cig4Mik7dC5leHBvcnRzPW4/e30udG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4iW29iamVjdCAiK2kodGhpcykrIl0ifX0sKHQsZSxyKT0+e3IoOTkpfSwodCxlLHIpPT57cigxMDApKCJNYXAiLChmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdCh0aGlzLGFyZ3VtZW50cy5sZW5ndGg/YXJndW1lbnRzWzBdOnZvaWQgMCl9fSkscigxMTgpKX0sKHQsZSxyKT0+e3ZhciBuPXIoNiksaT1yKDcpLGE9cigxNyksbz1yKDcxKSxzPXIoNTEpLGw9cigxMDEpLHU9cigxMDgpLGM9cigxMTUpLGg9cigyNCksZj1yKDIwKSxkPXIoMjMpLHA9cigxMCksdj1yKDExNikseT1yKDk0KSxtPXIoMTE3KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3ZhciBnPS0xIT09dC5pbmRleE9mKCJNYXAiKSxiPS0xIT09dC5pbmRleE9mKCJXZWFrIiksXz1nPyJzZXQiOiJhZGQiLHc9aVt0XSxBPXcmJncucHJvdG90eXBlLGs9dyxTPXt9LHg9ZnVuY3Rpb24odCl7dmFyIGU9YShBW3RdKTtzKEEsdCwiYWRkIj09dD9mdW5jdGlvbih0KXtyZXR1cm4gZSh0aGlzLDA9PT10PzA6dCksdGhpc306ImRlbGV0ZSI9PXQ/ZnVuY3Rpb24odCl7cmV0dXJuIShiJiYhZCh0KSkmJmUodGhpcywwPT09dD8wOnQpfToiZ2V0Ij09dD9mdW5jdGlvbih0KXtyZXR1cm4gYiYmIWQodCk/dm9pZCAwOmUodGhpcywwPT09dD8wOnQpfToiaGFzIj09dD9mdW5jdGlvbih0KXtyZXR1cm4hKGImJiFkKHQpKSYmZSh0aGlzLDA9PT10PzA6dCl9OmZ1bmN0aW9uKHQscil7cmV0dXJuIGUodGhpcywwPT09dD8wOnQsciksdGhpc30pfTtpZihvKHQsIWgodyl8fCEoYnx8QS5mb3JFYWNoJiYhcCgoZnVuY3Rpb24oKXsobmV3IHcpLmVudHJpZXMoKS5uZXh0KCl9KSkpKSlrPXIuZ2V0Q29uc3RydWN0b3IoZSx0LGcsXyksbC5lbmFibGUoKTtlbHNlIGlmKG8odCwhMCkpe3ZhciBFPW5ldyBrLFA9RVtfXShiP3t9Oi0wLDEpIT1FLFQ9cCgoZnVuY3Rpb24oKXtFLmhhcygxKX0pKSxDPXYoKGZ1bmN0aW9uKHQpe25ldyB3KHQpfSkpLE89IWImJnAoKGZ1bmN0aW9uKCl7Zm9yKHZhciB0PW5ldyB3LGU9NTtlLS07KXRbX10oZSxlKTtyZXR1cm4hdC5oYXMoLTApfSkpO0N8fCgoaz1lKChmdW5jdGlvbih0LGUpe2ModCxBKTt2YXIgcj1tKG5ldyB3LHQsayk7cmV0dXJuIGYoZSl8fHUoZSxyW19dLHt0aGF0OnIsQVNfRU5UUklFUzpnfSkscn0pKSkucHJvdG90eXBlPUEsQS5jb25zdHJ1Y3Rvcj1rKSwoVHx8TykmJih4KCJkZWxldGUiKSx4KCJoYXMiKSxnJiZ4KCJnZXQiKSksKE98fFApJiZ4KF8pLGImJkEuY2xlYXImJmRlbGV0ZSBBLmNsZWFyfXJldHVybiBTW3RdPWssbih7Z2xvYmFsOiEwLGNvbnN0cnVjdG9yOiEwLGZvcmNlZDprIT13fSxTKSx5KGssdCksYnx8ci5zZXRTdHJvbmcoayx0LGcpLGt9fSwodCxlLHIpPT57dmFyIG49cig2KSxpPXIoMTcpLGE9cig1OCksbz1yKDIzKSxzPXIoNDIpLGw9cig0OCkuZix1PXIoNjEpLGM9cigxMDIpLGg9cigxMDUpLGY9cig0NCksZD1yKDEwNykscD0hMSx2PWYoIm1ldGEiKSx5PTAsbT1mdW5jdGlvbih0KXtsKHQsdix7dmFsdWU6e29iamVjdElEOiJPIit5Kyssd2Vha0RhdGE6e319fSl9LGc9dC5leHBvcnRzPXtlbmFibGU6ZnVuY3Rpb24oKXtnLmVuYWJsZT1mdW5jdGlvbigpe30scD0hMDt2YXIgdD11LmYsZT1pKFtdLnNwbGljZSkscj17fTtyW3ZdPTEsdChyKS5sZW5ndGgmJih1LmY9ZnVuY3Rpb24ocil7Zm9yKHZhciBuPXQociksaT0wLGE9bi5sZW5ndGg7aTxhO2krKylpZihuW2ldPT09dil7ZShuLGksMSk7YnJlYWt9cmV0dXJuIG59LG4oe3RhcmdldDoiT2JqZWN0IixzdGF0OiEwLGZvcmNlZDohMH0se2dldE93blByb3BlcnR5TmFtZXM6Yy5mfSkpfSxmYXN0S2V5OmZ1bmN0aW9uKHQsZSl7aWYoIW8odCkpcmV0dXJuInN5bWJvbCI9PXR5cGVvZiB0P3Q6KCJzdHJpbmciPT10eXBlb2YgdD8iUyI6IlAiKSt0O2lmKCFzKHQsdikpe2lmKCFoKHQpKXJldHVybiJGIjtpZighZSlyZXR1cm4iRSI7bSh0KX1yZXR1cm4gdFt2XS5vYmplY3RJRH0sZ2V0V2Vha0RhdGE6ZnVuY3Rpb24odCxlKXtpZighcyh0LHYpKXtpZighaCh0KSlyZXR1cm4hMDtpZighZSlyZXR1cm4hMTttKHQpfXJldHVybiB0W3ZdLndlYWtEYXRhfSxvbkZyZWV6ZTpmdW5jdGlvbih0KXtyZXR1cm4gZCYmcCYmaCh0KSYmIXModCx2KSYmbSh0KSx0fX07YVt2XT0hMH0sKHQsZSxyKT0+e3ZhciBuPXIoMTgpLGk9cigxNSksYT1yKDYxKS5mLG89cigxMDMpLHM9Im9iamVjdCI9PXR5cGVvZiB3aW5kb3cmJndpbmRvdyYmT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXM/T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMod2luZG93KTpbXTt0LmV4cG9ydHMuZj1mdW5jdGlvbih0KXtyZXR1cm4gcyYmIldpbmRvdyI9PW4odCk/ZnVuY3Rpb24odCl7dHJ5e3JldHVybiBhKHQpfWNhdGNoKHQpe3JldHVybiBvKHMpfX0odCk6YShpKHQpKX19LCh0LGUscik9Pnt2YXIgbj1yKDY0KSxpPXIoNjcpLGE9cigxMDQpLG89QXJyYXkscz1NYXRoLm1heDt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe2Zvcih2YXIgbD1pKHQpLHU9bihlLGwpLGM9bih2b2lkIDA9PT1yP2w6cixsKSxoPW8ocyhjLXUsMCkpLGY9MDt1PGM7dSsrLGYrKylhKGgsZix0W3VdKTtyZXR1cm4gaC5sZW5ndGg9ZixofX0sKHQsZSxyKT0+e3ZhciBuPXIoMjEpLGk9cig0OCksYT1yKDE0KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3ZhciBvPW4oZSk7byBpbiB0P2kuZih0LG8sYSgwLHIpKTp0W29dPXJ9fSwodCxlLHIpPT57dmFyIG49cigxMCksaT1yKDIzKSxhPXIoMTgpLG89cigxMDYpLHM9T2JqZWN0LmlzRXh0ZW5zaWJsZSxsPW4oKGZ1bmN0aW9uKCl7cygxKX0pKTt0LmV4cG9ydHM9bHx8bz9mdW5jdGlvbih0KXtyZXR1cm4hIWkodCkmJighb3x8IkFycmF5QnVmZmVyIiE9YSh0KSkmJighc3x8cyh0KSl9OnN9LCh0LGUscik9Pnt2YXIgbj1yKDEwKTt0LmV4cG9ydHM9bigoZnVuY3Rpb24oKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgQXJyYXlCdWZmZXIpe3ZhciB0PW5ldyBBcnJheUJ1ZmZlcig4KTtPYmplY3QuaXNFeHRlbnNpYmxlKHQpJiZPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiYSIse3ZhbHVlOjh9KX19KSl9LCh0LGUscik9Pnt2YXIgbj1yKDEwKTt0LmV4cG9ydHM9IW4oKGZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdC5pc0V4dGVuc2libGUoT2JqZWN0LnByZXZlbnRFeHRlbnNpb25zKHt9KSl9KSl9LCh0LGUscik9Pnt2YXIgbj1yKDEwOSksaT1yKDExKSxhPXIoNTApLG89cigzNSkscz1yKDExMSksbD1yKDY3KSx1PXIoMjgpLGM9cigxMTIpLGg9cigxMTMpLGY9cigxMTQpLGQ9VHlwZUVycm9yLHA9ZnVuY3Rpb24odCxlKXt0aGlzLnN0b3BwZWQ9dCx0aGlzLnJlc3VsdD1lfSx2PXAucHJvdG90eXBlO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7dmFyIHksbSxnLGIsXyx3LEEsaz1yJiZyLnRoYXQsUz0hKCFyfHwhci5BU19FTlRSSUVTKSx4PSEoIXJ8fCFyLklTX1JFQ09SRCksRT0hKCFyfHwhci5JU19JVEVSQVRPUiksUD0hKCFyfHwhci5JTlRFUlJVUFRFRCksVD1uKGUsayksQz1mdW5jdGlvbih0KXtyZXR1cm4geSYmZih5LCJub3JtYWwiLHQpLG5ldyBwKCEwLHQpfSxPPWZ1bmN0aW9uKHQpe3JldHVybiBTPyhhKHQpLFA/VCh0WzBdLHRbMV0sQyk6VCh0WzBdLHRbMV0pKTpQP1QodCxDKTpUKHQpfTtpZih4KXk9dC5pdGVyYXRvcjtlbHNlIGlmKEUpeT10O2Vsc2V7aWYoIShtPWgodCkpKXRocm93IGQobyh0KSsiIGlzIG5vdCBpdGVyYWJsZSIpO2lmKHMobSkpe2ZvcihnPTAsYj1sKHQpO2I+ZztnKyspaWYoKF89Tyh0W2ddKSkmJnUodixfKSlyZXR1cm4gXztyZXR1cm4gbmV3IHAoITEpfXk9Yyh0LG0pfWZvcih3PXg/dC5uZXh0OnkubmV4dDshKEE9aSh3LHkpKS5kb25lOyl7dHJ5e189TyhBLnZhbHVlKX1jYXRjaCh0KXtmKHksInRocm93Iix0KX1pZigib2JqZWN0Ij09dHlwZW9mIF8mJl8mJnUodixfKSlyZXR1cm4gX31yZXR1cm4gbmV3IHAoITEpfX0sKHQsZSxyKT0+e3ZhciBuPXIoMTEwKSxpPXIoMzQpLGE9cigxMiksbz1uKG4uYmluZCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGkodCksdm9pZCAwPT09ZT90OmE/byh0LGUpOmZ1bmN0aW9uKCl7cmV0dXJuIHQuYXBwbHkoZSxhcmd1bWVudHMpfX19LCh0LGUscik9Pnt2YXIgbj1yKDE4KSxpPXIoMTcpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtpZigiRnVuY3Rpb24iPT09bih0KSlyZXR1cm4gaSh0KX19LCh0LGUscik9Pnt2YXIgbj1yKDM3KSxpPXIoOTApLGE9bigiaXRlcmF0b3IiKSxvPUFycmF5LnByb3RvdHlwZTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMCE9PXQmJihpLkFycmF5PT09dHx8b1thXT09PXQpfX0sKHQsZSxyKT0+e3ZhciBuPXIoMTEpLGk9cigzNCksYT1yKDUwKSxvPXIoMzUpLHM9cigxMTMpLGw9VHlwZUVycm9yO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByPWFyZ3VtZW50cy5sZW5ndGg8Mj9zKHQpOmU7aWYoaShyKSlyZXR1cm4gYShuKHIsdCkpO3Rocm93IGwobyh0KSsiIGlzIG5vdCBpdGVyYWJsZSIpfX0sKHQsZSxyKT0+e3ZhciBuPXIoODIpLGk9cigzMyksYT1yKDIwKSxvPXIoOTApLHM9cigzNykoIml0ZXJhdG9yIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKCFhKHQpKXJldHVybiBpKHQscyl8fGkodCwiQEBpdGVyYXRvciIpfHxvW24odCldfX0sKHQsZSxyKT0+e3ZhciBuPXIoMTEpLGk9cig1MCksYT1yKDMzKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3ZhciBvLHM7aSh0KTt0cnl7aWYoIShvPWEodCwicmV0dXJuIikpKXtpZigidGhyb3ciPT09ZSl0aHJvdyByO3JldHVybiByfW89bihvLHQpfWNhdGNoKHQpe3M9ITAsbz10fWlmKCJ0aHJvdyI9PT1lKXRocm93IHI7aWYocyl0aHJvdyBvO3JldHVybiBpKG8pLHJ9fSwodCxlLHIpPT57dmFyIG49cigyOCksaT1UeXBlRXJyb3I7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7aWYobihlLHQpKXJldHVybiB0O3Rocm93IGkoIkluY29ycmVjdCBpbnZvY2F0aW9uIil9fSwodCxlLHIpPT57dmFyIG49cigzNykoIml0ZXJhdG9yIiksaT0hMTt0cnl7dmFyIGE9MCxvPXtuZXh0OmZ1bmN0aW9uKCl7cmV0dXJue2RvbmU6ISFhKyt9fSxyZXR1cm46ZnVuY3Rpb24oKXtpPSEwfX07b1tuXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxBcnJheS5mcm9tKG8sKGZ1bmN0aW9uKCl7dGhyb3cgMn0pKX1jYXRjaCh0KXt9dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7aWYoIWUmJiFpKXJldHVybiExO3ZhciByPSExO3RyeXt2YXIgYT17fTthW25dPWZ1bmN0aW9uKCl7cmV0dXJue25leHQ6ZnVuY3Rpb24oKXtyZXR1cm57ZG9uZTpyPSEwfX19fSx0KGEpfWNhdGNoKHQpe31yZXR1cm4gcn19LCh0LGUscik9Pnt2YXIgbj1yKDI0KSxpPXIoMjMpLGE9cig4Nik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbyxzO3JldHVybiBhJiZuKG89ZS5jb25zdHJ1Y3RvcikmJm8hPT1yJiZpKHM9by5wcm90b3R5cGUpJiZzIT09ci5wcm90b3R5cGUmJmEodCxzKSx0fX0sKHQsZSxyKT0+e3ZhciBuPXIoNDgpLmYsaT1yKDczKSxhPXIoMTE5KSxvPXIoMTA5KSxzPXIoMTE1KSxsPXIoMjApLHU9cigxMDgpLGM9cig5MSksaD1yKDk1KSxmPXIoMTIwKSxkPXIoOSkscD1yKDEwMSkuZmFzdEtleSx2PXIoNTUpLHk9di5zZXQsbT12LmdldHRlckZvcjt0LmV4cG9ydHM9e2dldENvbnN0cnVjdG9yOmZ1bmN0aW9uKHQsZSxyLGMpe3ZhciBoPXQoKGZ1bmN0aW9uKHQsbil7cyh0LGYpLHkodCx7dHlwZTplLGluZGV4OmkobnVsbCksZmlyc3Q6dm9pZCAwLGxhc3Q6dm9pZCAwLHNpemU6MH0pLGR8fCh0LnNpemU9MCksbChuKXx8dShuLHRbY10se3RoYXQ6dCxBU19FTlRSSUVTOnJ9KX0pKSxmPWgucHJvdG90eXBlLHY9bShlKSxnPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbixpLGE9dih0KSxvPWIodCxlKTtyZXR1cm4gbz9vLnZhbHVlPXI6KGEubGFzdD1vPXtpbmRleDppPXAoZSwhMCksa2V5OmUsdmFsdWU6cixwcmV2aW91czpuPWEubGFzdCxuZXh0OnZvaWQgMCxyZW1vdmVkOiExfSxhLmZpcnN0fHwoYS5maXJzdD1vKSxuJiYobi5uZXh0PW8pLGQ/YS5zaXplKys6dC5zaXplKyssIkYiIT09aSYmKGEuaW5kZXhbaV09bykpLHR9LGI9ZnVuY3Rpb24odCxlKXt2YXIgcixuPXYodCksaT1wKGUpO2lmKCJGIiE9PWkpcmV0dXJuIG4uaW5kZXhbaV07Zm9yKHI9bi5maXJzdDtyO3I9ci5uZXh0KWlmKHIua2V5PT1lKXJldHVybiByfTtyZXR1cm4gYShmLHtjbGVhcjpmdW5jdGlvbigpe2Zvcih2YXIgdD12KHRoaXMpLGU9dC5pbmRleCxyPXQuZmlyc3Q7cjspci5yZW1vdmVkPSEwLHIucHJldmlvdXMmJihyLnByZXZpb3VzPXIucHJldmlvdXMubmV4dD12b2lkIDApLGRlbGV0ZSBlW3IuaW5kZXhdLHI9ci5uZXh0O3QuZmlyc3Q9dC5sYXN0PXZvaWQgMCxkP3Quc2l6ZT0wOnRoaXMuc2l6ZT0wfSxkZWxldGU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxyPXYoZSksbj1iKGUsdCk7aWYobil7dmFyIGk9bi5uZXh0LGE9bi5wcmV2aW91cztkZWxldGUgci5pbmRleFtuLmluZGV4XSxuLnJlbW92ZWQ9ITAsYSYmKGEubmV4dD1pKSxpJiYoaS5wcmV2aW91cz1hKSxyLmZpcnN0PT1uJiYoci5maXJzdD1pKSxyLmxhc3Q9PW4mJihyLmxhc3Q9YSksZD9yLnNpemUtLTplLnNpemUtLX1yZXR1cm4hIW59LGZvckVhY2g6ZnVuY3Rpb24odCl7Zm9yKHZhciBlLHI9dih0aGlzKSxuPW8odCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCk7ZT1lP2UubmV4dDpyLmZpcnN0Oylmb3IobihlLnZhbHVlLGUua2V5LHRoaXMpO2UmJmUucmVtb3ZlZDspZT1lLnByZXZpb3VzfSxoYXM6ZnVuY3Rpb24odCl7cmV0dXJuISFiKHRoaXMsdCl9fSksYShmLHI/e2dldDpmdW5jdGlvbih0KXt2YXIgZT1iKHRoaXMsdCk7cmV0dXJuIGUmJmUudmFsdWV9LHNldDpmdW5jdGlvbih0LGUpe3JldHVybiBnKHRoaXMsMD09PXQ/MDp0LGUpfX06e2FkZDpmdW5jdGlvbih0KXtyZXR1cm4gZyh0aGlzLHQ9MD09PXQ/MDp0LHQpfX0pLGQmJm4oZiwic2l6ZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB2KHRoaXMpLnNpemV9fSksaH0sc2V0U3Ryb25nOmZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1lKyIgSXRlcmF0b3IiLGk9bShlKSxhPW0obik7Yyh0LGUsKGZ1bmN0aW9uKHQsZSl7eSh0aGlzLHt0eXBlOm4sdGFyZ2V0OnQsc3RhdGU6aSh0KSxraW5kOmUsbGFzdDp2b2lkIDB9KX0pLChmdW5jdGlvbigpe2Zvcih2YXIgdD1hKHRoaXMpLGU9dC5raW5kLHI9dC5sYXN0O3ImJnIucmVtb3ZlZDspcj1yLnByZXZpb3VzO3JldHVybiB0LnRhcmdldCYmKHQubGFzdD1yPXI/ci5uZXh0OnQuc3RhdGUuZmlyc3QpP2goImtleXMiPT1lP3Iua2V5OiJ2YWx1ZXMiPT1lP3IudmFsdWU6W3Iua2V5LHIudmFsdWVdLCExKToodC50YXJnZXQ9dm9pZCAwLGgodm9pZCAwLCEwKSl9KSxyPyJlbnRyaWVzIjoidmFsdWVzIiwhciwhMCksZihlKX19fSwodCxlLHIpPT57dmFyIG49cig1MSk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXtmb3IodmFyIGkgaW4gZSluKHQsaSxlW2ldLHIpO3JldHVybiB0fX0sKHQsZSxyKT0+e3ZhciBuPXIoMjcpLGk9cig0OCksYT1yKDM3KSxvPXIoOSkscz1hKCJzcGVjaWVzIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPW4odCkscj1pLmY7byYmZSYmIWVbc10mJnIoZSxzLHtjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9fSl9fSwodCxlLHIpPT57cigxMjIpfSwodCxlLHIpPT57cigxMDApKCJTZXQiLChmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdCh0aGlzLGFyZ3VtZW50cy5sZW5ndGg/YXJndW1lbnRzWzBdOnZvaWQgMCl9fSkscigxMTgpKX0sKHQsZSxyKT0+e3ZhciBuLGk9cigzOSksYT1yKDYpLG89cig3KSxzPXIoMjcpLGw9cigxNyksdT1yKDEwKSxjPXIoNDQpLGg9cigyNCksZj1yKDEyNCksZD1yKDIwKSxwPXIoMjMpLHY9cigyNikseT1yKDEwOCksbT1yKDUwKSxnPXIoODIpLGI9cig0MiksXz1yKDEwNCksdz1yKDQ3KSxBPXIoNjcpLGs9cigxMjUpLFM9cigxMjYpLHg9cigxMjgpLEU9cigzMSksUD1yKDEyOSksVD1yKDEzMCksQz1yKDEzMSksTz1vLk9iamVjdCxGPW8uRGF0ZSxNPW8uRXJyb3IsUj1vLkV2YWxFcnJvcixJPW8uUmFuZ2VFcnJvcixqPW8uUmVmZXJlbmNlRXJyb3IsTD1vLlN5bnRheEVycm9yLEQ9by5UeXBlRXJyb3IsTj1vLlVSSUVycm9yLFU9by5QZXJmb3JtYW5jZU1hcmssVz1vLldlYkFzc2VtYmx5LEc9VyYmVy5Db21waWxlRXJyb3J8fE0sQj1XJiZXLkxpbmtFcnJvcnx8TSxxPVcmJlcuUnVudGltZUVycm9yfHxNLEg9cygiRE9NRXhjZXB0aW9uIiksej1zKCJTZXQiKSxWPXMoIk1hcCIpLFg9Vi5wcm90b3R5cGUsWT1sKFguaGFzKSxLPWwoWC5nZXQpLEo9bChYLnNldCksUT1sKHoucHJvdG90eXBlLmFkZCksJD1zKCJPYmplY3QiLCJrZXlzIiksWj1sKFtdLnB1c2gpLHR0PWwoKCEwKS52YWx1ZU9mKSxldD1sKDEuLnZhbHVlT2YpLHJ0PWwoIiIudmFsdWVPZiksbnQ9bChGLnByb3RvdHlwZS5nZXRUaW1lKSxpdD1jKCJzdHJ1Y3R1cmVkQ2xvbmUiKSxhdD0iRGF0YUNsb25lRXJyb3IiLG90PSJUcmFuc2ZlcnJpbmciLHN0PWZ1bmN0aW9uKHQpe3JldHVybiF1KChmdW5jdGlvbigpe3ZhciBlPW5ldyBvLlNldChbN10pLHI9dChlKSxuPXQoTyg3KSk7cmV0dXJuIHI9PWV8fCFyLmhhcyg3KXx8Im9iamVjdCIhPXR5cGVvZiBufHw3IT1ufSkpJiZ0fSxsdD1mdW5jdGlvbih0LGUpe3JldHVybiF1KChmdW5jdGlvbigpe3ZhciByPW5ldyBlLG49dCh7YTpyLGI6cn0pO3JldHVybiEobiYmbi5hPT09bi5iJiZuLmEgaW5zdGFuY2VvZiBlJiZuLmEuc3RhY2s9PT1yLnN0YWNrKX0pKX0sdXQ9by5zdHJ1Y3R1cmVkQ2xvbmUsY3Q9aXx8IWx0KHV0LE0pfHwhbHQodXQsSCl8fChuPXV0LCEhdSgoZnVuY3Rpb24oKXt2YXIgdD1uKG5ldyBvLkFnZ3JlZ2F0ZUVycm9yKFsxXSxpdCx7Y2F1c2U6M30pKTtyZXR1cm4iQWdncmVnYXRlRXJyb3IiIT10Lm5hbWV8fDEhPXQuZXJyb3JzWzBdfHx0Lm1lc3NhZ2UhPWl0fHwzIT10LmNhdXNlfSkpKSxodD0hdXQmJnN0KChmdW5jdGlvbih0KXtyZXR1cm4gbmV3IFUoaXQse2RldGFpbDp0fSkuZGV0YWlsfSkpLGZ0PXN0KHV0KXx8aHQsZHQ9ZnVuY3Rpb24odCl7dGhyb3cgbmV3IEgoIlVuY2xvbmVhYmxlIHR5cGU6ICIrdCxhdCl9LHB0PWZ1bmN0aW9uKHQsZSl7dGhyb3cgbmV3IEgoKGV8fCJDbG9uaW5nIikrIiBvZiAiK3QrIiBjYW5ub3QgYmUgcHJvcGVybHkgcG9seWZpbGxlZCBpbiB0aGlzIGVuZ2luZSIsYXQpfSx2dD1mdW5jdGlvbih0LGUpe2lmKHYodCkmJmR0KCJTeW1ib2wiKSwhcCh0KSlyZXR1cm4gdDtpZihlKXtpZihZKGUsdCkpcmV0dXJuIEsoZSx0KX1lbHNlIGU9bmV3IFY7dmFyIHIsbixpLGEsbCx1LGMsZixkLHksbT1nKHQpLGs9ITE7c3dpdGNoKG0pe2Nhc2UiQXJyYXkiOmk9W10saz0hMDticmVhaztjYXNlIk9iamVjdCI6aT17fSxrPSEwO2JyZWFrO2Nhc2UiTWFwIjppPW5ldyBWLGs9ITA7YnJlYWs7Y2FzZSJTZXQiOmk9bmV3IHosaz0hMDticmVhaztjYXNlIlJlZ0V4cCI6aT1uZXcgUmVnRXhwKHQuc291cmNlLFModCkpO2JyZWFrO2Nhc2UiRXJyb3IiOnN3aXRjaChuPXQubmFtZSl7Y2FzZSJBZ2dyZWdhdGVFcnJvciI6aT1zKCJBZ2dyZWdhdGVFcnJvciIpKFtdKTticmVhaztjYXNlIkV2YWxFcnJvciI6aT1SKCk7YnJlYWs7Y2FzZSJSYW5nZUVycm9yIjppPUkoKTticmVhaztjYXNlIlJlZmVyZW5jZUVycm9yIjppPWooKTticmVhaztjYXNlIlN5bnRheEVycm9yIjppPUwoKTticmVhaztjYXNlIlR5cGVFcnJvciI6aT1EKCk7YnJlYWs7Y2FzZSJVUklFcnJvciI6aT1OKCk7YnJlYWs7Y2FzZSJDb21waWxlRXJyb3IiOmk9RygpO2JyZWFrO2Nhc2UiTGlua0Vycm9yIjppPUIoKTticmVhaztjYXNlIlJ1bnRpbWVFcnJvciI6aT1xKCk7YnJlYWs7ZGVmYXVsdDppPU0oKX1rPSEwO2JyZWFrO2Nhc2UiRE9NRXhjZXB0aW9uIjppPW5ldyBIKHQubWVzc2FnZSx0Lm5hbWUpLGs9ITA7YnJlYWs7Y2FzZSJEYXRhVmlldyI6Y2FzZSJJbnQ4QXJyYXkiOmNhc2UiVWludDhBcnJheSI6Y2FzZSJVaW50OENsYW1wZWRBcnJheSI6Y2FzZSJJbnQxNkFycmF5IjpjYXNlIlVpbnQxNkFycmF5IjpjYXNlIkludDMyQXJyYXkiOmNhc2UiVWludDMyQXJyYXkiOmNhc2UiRmxvYXQzMkFycmF5IjpjYXNlIkZsb2F0NjRBcnJheSI6Y2FzZSJCaWdJbnQ2NEFycmF5IjpjYXNlIkJpZ1VpbnQ2NEFycmF5IjpyPW9bbV0scChyKXx8cHQobSksaT1uZXcgcih2dCh0LmJ1ZmZlcixlKSx0LmJ5dGVPZmZzZXQsIkRhdGFWaWV3Ij09PW0/dC5ieXRlTGVuZ3RoOnQubGVuZ3RoKTticmVhaztjYXNlIkRPTVF1YWQiOnRyeXtpPW5ldyBET01RdWFkKHZ0KHQucDEsZSksdnQodC5wMixlKSx2dCh0LnAzLGUpLHZ0KHQucDQsZSkpfWNhdGNoKGUpe2Z0P2k9ZnQodCk6cHQobSl9YnJlYWs7Y2FzZSJGaWxlTGlzdCI6aWYoYT1mdW5jdGlvbigpe3ZhciB0O3RyeXt0PW5ldyBvLkRhdGFUcmFuc2Zlcn1jYXRjaChlKXt0cnl7dD1uZXcgby5DbGlwYm9hcmRFdmVudCgiIikuY2xpcGJvYXJkRGF0YX1jYXRjaCh0KXt9fXJldHVybiB0JiZ0Lml0ZW1zJiZ0LmZpbGVzP3Q6bnVsbH0oKSl7Zm9yKGw9MCx1PUEodCk7bDx1O2wrKylhLml0ZW1zLmFkZCh2dCh0W2xdLGUpKTtpPWEuZmlsZXN9ZWxzZSBmdD9pPWZ0KHQpOnB0KG0pO2JyZWFrO2Nhc2UiSW1hZ2VEYXRhIjp0cnl7aT1uZXcgSW1hZ2VEYXRhKHZ0KHQuZGF0YSxlKSx0LndpZHRoLHQuaGVpZ2h0LHtjb2xvclNwYWNlOnQuY29sb3JTcGFjZX0pfWNhdGNoKGUpe2Z0P2k9ZnQodCk6cHQobSl9YnJlYWs7ZGVmYXVsdDppZihmdClpPWZ0KHQpO2Vsc2Ugc3dpdGNoKG0pe2Nhc2UiQmlnSW50IjppPU8odC52YWx1ZU9mKCkpO2JyZWFrO2Nhc2UiQm9vbGVhbiI6aT1PKHR0KHQpKTticmVhaztjYXNlIk51bWJlciI6aT1PKGV0KHQpKTticmVhaztjYXNlIlN0cmluZyI6aT1PKHJ0KHQpKTticmVhaztjYXNlIkRhdGUiOmk9bmV3IEYobnQodCkpO2JyZWFrO2Nhc2UiQXJyYXlCdWZmZXIiOihyPW8uRGF0YVZpZXcpfHwiZnVuY3Rpb24iPT10eXBlb2YgdC5zbGljZXx8cHQobSk7dHJ5e2lmKCJmdW5jdGlvbiI9PXR5cGVvZiB0LnNsaWNlKWk9dC5zbGljZSgwKTtlbHNlIGZvcih1PXQuYnl0ZUxlbmd0aCxpPW5ldyBBcnJheUJ1ZmZlcih1KSxkPW5ldyByKHQpLHk9bmV3IHIoaSksbD0wO2w8dTtsKyspeS5zZXRVaW50OChsLGQuZ2V0VWludDgobCkpfWNhdGNoKHQpe3Rocm93IG5ldyBIKCJBcnJheUJ1ZmZlciBpcyBkZXRhY2hlZCIsYXQpfWJyZWFrO2Nhc2UiU2hhcmVkQXJyYXlCdWZmZXIiOmk9dDticmVhaztjYXNlIkJsb2IiOnRyeXtpPXQuc2xpY2UoMCx0LnNpemUsdC50eXBlKX1jYXRjaCh0KXtwdChtKX1icmVhaztjYXNlIkRPTVBvaW50IjpjYXNlIkRPTVBvaW50UmVhZE9ubHkiOnI9b1ttXTt0cnl7aT1yLmZyb21Qb2ludD9yLmZyb21Qb2ludCh0KTpuZXcgcih0LngsdC55LHQueix0LncpfWNhdGNoKHQpe3B0KG0pfWJyZWFrO2Nhc2UiRE9NUmVjdCI6Y2FzZSJET01SZWN0UmVhZE9ubHkiOnI9b1ttXTt0cnl7aT1yLmZyb21SZWN0P3IuZnJvbVJlY3QodCk6bmV3IHIodC54LHQueSx0LndpZHRoLHQuaGVpZ2h0KX1jYXRjaCh0KXtwdChtKX1icmVhaztjYXNlIkRPTU1hdHJpeCI6Y2FzZSJET01NYXRyaXhSZWFkT25seSI6cj1vW21dO3RyeXtpPXIuZnJvbU1hdHJpeD9yLmZyb21NYXRyaXgodCk6bmV3IHIodCl9Y2F0Y2godCl7cHQobSl9YnJlYWs7Y2FzZSJBdWRpb0RhdGEiOmNhc2UiVmlkZW9GcmFtZSI6aCh0LmNsb25lKXx8cHQobSk7dHJ5e2k9dC5jbG9uZSgpfWNhdGNoKHQpe2R0KG0pfWJyZWFrO2Nhc2UiRmlsZSI6dHJ5e2k9bmV3IEZpbGUoW3RdLHQubmFtZSx0KX1jYXRjaCh0KXtwdChtKX1icmVhaztjYXNlIkNyb3BUYXJnZXQiOmNhc2UiQ3J5cHRvS2V5IjpjYXNlIkZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGUiOmNhc2UiRmlsZVN5c3RlbUZpbGVIYW5kbGUiOmNhc2UiRmlsZVN5c3RlbUhhbmRsZSI6Y2FzZSJHUFVDb21waWxhdGlvbkluZm8iOmNhc2UiR1BVQ29tcGlsYXRpb25NZXNzYWdlIjpjYXNlIkltYWdlQml0bWFwIjpjYXNlIlJUQ0NlcnRpZmljYXRlIjpjYXNlIldlYkFzc2VtYmx5Lk1vZHVsZSI6cHQobSk7ZGVmYXVsdDpkdChtKX19aWYoSihlLHQsaSksaylzd2l0Y2gobSl7Y2FzZSJBcnJheSI6Y2FzZSJPYmplY3QiOmZvcihjPSQodCksbD0wLHU9QShjKTtsPHU7bCsrKWY9Y1tsXSxfKGksZix2dCh0W2ZdLGUpKTticmVhaztjYXNlIk1hcCI6dC5mb3JFYWNoKChmdW5jdGlvbih0LHIpe0ooaSx2dChyLGUpLHZ0KHQsZSkpfSkpO2JyZWFrO2Nhc2UiU2V0Ijp0LmZvckVhY2goKGZ1bmN0aW9uKHQpe1EoaSx2dCh0LGUpKX0pKTticmVhaztjYXNlIkVycm9yIjp3KGksIm1lc3NhZ2UiLHZ0KHQubWVzc2FnZSxlKSksYih0LCJjYXVzZSIpJiZ3KGksImNhdXNlIix2dCh0LmNhdXNlLGUpKSwiQWdncmVnYXRlRXJyb3IiPT1uJiYoaS5lcnJvcnM9dnQodC5lcnJvcnMsZSkpO2Nhc2UiRE9NRXhjZXB0aW9uIjp4JiZ3KGksInN0YWNrIix2dCh0LnN0YWNrLGUpKX1yZXR1cm4gaX0seXQ9dXQmJiF1KChmdW5jdGlvbigpe2lmKFQmJkU+OTJ8fEMmJkU+OTR8fFAmJkU+OTcpcmV0dXJuITE7dmFyIHQ9bmV3IEFycmF5QnVmZmVyKDgpLGU9dXQodCx7dHJhbnNmZXI6W3RdfSk7cmV0dXJuIDAhPXQuYnl0ZUxlbmd0aHx8OCE9ZS5ieXRlTGVuZ3RofSkpO2Eoe2dsb2JhbDohMCxlbnVtZXJhYmxlOiEwLHNoYW06IXl0LGZvcmNlZDpjdH0se3N0cnVjdHVyZWRDbG9uZTpmdW5jdGlvbih0KXt2YXIgZSxyPWsoYXJndW1lbnRzLmxlbmd0aCwxKT4xJiYhZChhcmd1bWVudHNbMV0pP20oYXJndW1lbnRzWzFdKTp2b2lkIDAsbj1yP3IudHJhbnNmZXI6dm9pZCAwO3JldHVybiB2b2lkIDAhPT1uJiZmdW5jdGlvbih0LGUpe2lmKCFwKHQpKXRocm93IEQoIlRyYW5zZmVyIG9wdGlvbiBjYW5ub3QgYmUgY29udmVydGVkIHRvIGEgc2VxdWVuY2UiKTt2YXIgcj1bXTt5KHQsKGZ1bmN0aW9uKHQpe1oocixtKHQpKX0pKTt2YXIgbixpLGEscyxsLHUsYz0wLGQ9QShyKTtpZih5dClmb3Iocz11dChyLHt0cmFuc2ZlcjpyfSk7YzxkOylKKGUscltjXSxzW2MrK10pO2Vsc2UgZm9yKDtjPGQ7KXtpZihuPXJbYysrXSxZKGUsbikpdGhyb3cgbmV3IEgoIkR1cGxpY2F0ZSB0cmFuc2ZlcmFibGUiLGF0KTtzd2l0Y2goaT1nKG4pKXtjYXNlIkltYWdlQml0bWFwIjphPW8uT2Zmc2NyZWVuQ2FudmFzLGYoYSl8fHB0KGksb3QpO3RyeXsodT1uZXcgYShuLndpZHRoLG4uaGVpZ2h0KSkuZ2V0Q29udGV4dCgiYml0bWFwcmVuZGVyZXIiKS50cmFuc2ZlckZyb21JbWFnZUJpdG1hcChuKSxsPXUudHJhbnNmZXJUb0ltYWdlQml0bWFwKCl9Y2F0Y2godCl7fWJyZWFrO2Nhc2UiQXVkaW9EYXRhIjpjYXNlIlZpZGVvRnJhbWUiOmgobi5jbG9uZSkmJmgobi5jbG9zZSl8fHB0KGksb3QpO3RyeXtsPW4uY2xvbmUoKSxuLmNsb3NlKCl9Y2F0Y2godCl7fWJyZWFrO2Nhc2UiQXJyYXlCdWZmZXIiOmNhc2UiTWVkaWFTb3VyY2VIYW5kbGUiOmNhc2UiTWVzc2FnZVBvcnQiOmNhc2UiT2Zmc2NyZWVuQ2FudmFzIjpjYXNlIlJlYWRhYmxlU3RyZWFtIjpjYXNlIlRyYW5zZm9ybVN0cmVhbSI6Y2FzZSJXcml0YWJsZVN0cmVhbSI6cHQoaSxvdCl9aWYodm9pZCAwPT09bCl0aHJvdyBuZXcgSCgiVGhpcyBvYmplY3QgY2Fubm90IGJlIHRyYW5zZmVycmVkOiAiK2ksYXQpO0ooZSxuLGwpfX0obixlPW5ldyBWKSx2dCh0LGUpfX0pfSwodCxlLHIpPT57dmFyIG49cigxNyksaT1yKDEwKSxhPXIoMjQpLG89cig4Mikscz1yKDI3KSxsPXIoNTQpLHU9ZnVuY3Rpb24oKXt9LGM9W10saD1zKCJSZWZsZWN0IiwiY29uc3RydWN0IiksZj0vXlxzKig/OmNsYXNzfGZ1bmN0aW9uKVxiLyxkPW4oZi5leGVjKSxwPSFmLmV4ZWModSksdj1mdW5jdGlvbih0KXtpZighYSh0KSlyZXR1cm4hMTt0cnl7cmV0dXJuIGgodSxjLHQpLCEwfWNhdGNoKHQpe3JldHVybiExfX0seT1mdW5jdGlvbih0KXtpZighYSh0KSlyZXR1cm4hMTtzd2l0Y2gobyh0KSl7Y2FzZSJBc3luY0Z1bmN0aW9uIjpjYXNlIkdlbmVyYXRvckZ1bmN0aW9uIjpjYXNlIkFzeW5jR2VuZXJhdG9yRnVuY3Rpb24iOnJldHVybiExfXRyeXtyZXR1cm4gcHx8ISFkKGYsbCh0KSl9Y2F0Y2godCl7cmV0dXJuITB9fTt5LnNoYW09ITAsdC5leHBvcnRzPSFofHxpKChmdW5jdGlvbigpe3ZhciB0O3JldHVybiB2KHYuY2FsbCl8fCF2KE9iamVjdCl8fCF2KChmdW5jdGlvbigpe3Q9ITB9KSl8fHR9KSk/eTp2fSx0PT57dmFyIGU9VHlwZUVycm9yO3QuZXhwb3J0cz1mdW5jdGlvbih0LHIpe2lmKHQ8cil0aHJvdyBlKCJOb3QgZW5vdWdoIGFyZ3VtZW50cyIpO3JldHVybiB0fX0sKHQsZSxyKT0+e3ZhciBuPXIoMTEpLGk9cig0MiksYT1yKDI4KSxvPXIoMTI3KSxzPVJlZ0V4cC5wcm90b3R5cGU7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPXQuZmxhZ3M7cmV0dXJuIHZvaWQgMCE9PWV8fCJmbGFncyJpbiBzfHxpKHQsImZsYWdzIil8fCFhKHMsdCk/ZTpuKG8sdCl9fSwodCxlLHIpPT57dmFyIG49cig1MCk7dC5leHBvcnRzPWZ1bmN0aW9uKCl7dmFyIHQ9bih0aGlzKSxlPSIiO3JldHVybiB0Lmhhc0luZGljZXMmJihlKz0iZCIpLHQuZ2xvYmFsJiYoZSs9ImciKSx0Lmlnbm9yZUNhc2UmJihlKz0iaSIpLHQubXVsdGlsaW5lJiYoZSs9Im0iKSx0LmRvdEFsbCYmKGUrPSJzIiksdC51bmljb2RlJiYoZSs9InUiKSx0LnVuaWNvZGVTZXRzJiYoZSs9InYiKSx0LnN0aWNreSYmKGUrPSJ5IiksZX19LCh0LGUscik9Pnt2YXIgbj1yKDEwKSxpPXIoMTQpO3QuZXhwb3J0cz0hbigoZnVuY3Rpb24oKXt2YXIgdD1FcnJvcigiYSIpO3JldHVybiEoInN0YWNrImluIHQpfHwoT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsInN0YWNrIixpKDEsNykpLDchPT10LnN0YWNrKX0pKX0sKHQsZSxyKT0+e3ZhciBuPXIoMTMwKSxpPXIoMTMxKTt0LmV4cG9ydHM9IW4mJiFpJiYib2JqZWN0Ij09dHlwZW9mIHdpbmRvdyYmIm9iamVjdCI9PXR5cGVvZiBkb2N1bWVudH0sdD0+e3QuZXhwb3J0cz0ib2JqZWN0Ij09dHlwZW9mIERlbm8mJkRlbm8mJiJvYmplY3QiPT10eXBlb2YgRGVuby52ZXJzaW9ufSwodCxlLHIpPT57dmFyIG49cigxOCksaT1yKDcpO3QuZXhwb3J0cz0icHJvY2VzcyI9PW4oaS5wcm9jZXNzKX0sKHQsZSxyKT0+e3ZhciBuPXIoNyk7dC5leHBvcnRzPW59LChfX3VudXNlZF93ZWJwYWNrX21vZHVsZSxleHBvcnRzLF9fd19wZGZqc19yZXF1aXJlX18pPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGV4cG9ydHMuYnVpbGQ9ZXhwb3J0cy5SZW5kZXJUYXNrPWV4cG9ydHMuUERGV29ya2VyVXRpbD1leHBvcnRzLlBERldvcmtlcj1leHBvcnRzLlBERlBhZ2VQcm94eT1leHBvcnRzLlBERkRvY3VtZW50UHJveHk9ZXhwb3J0cy5QREZEb2N1bWVudExvYWRpbmdUYXNrPWV4cG9ydHMuUERGRGF0YVJhbmdlVHJhbnNwb3J0PWV4cG9ydHMuTG9vcGJhY2tQb3J0PWV4cG9ydHMuRGVmYXVsdFN0YW5kYXJkRm9udERhdGFGYWN0b3J5PWV4cG9ydHMuRGVmYXVsdENhbnZhc0ZhY3Rvcnk9ZXhwb3J0cy5EZWZhdWx0Q01hcFJlYWRlckZhY3Rvcnk9dm9pZCAwLGV4cG9ydHMuZ2V0RG9jdW1lbnQ9Z2V0RG9jdW1lbnQsZXhwb3J0cy5zZXRQREZOZXR3b3JrU3RyZWFtRmFjdG9yeT1zZXRQREZOZXR3b3JrU3RyZWFtRmFjdG9yeSxleHBvcnRzLnZlcnNpb249dm9pZCAwO3ZhciBfdXRpbD1fX3dfcGRmanNfcmVxdWlyZV9fKDEpLF9hbm5vdGF0aW9uX3N0b3JhZ2U9X193X3BkZmpzX3JlcXVpcmVfXygxMzQpLF9kaXNwbGF5X3V0aWxzPV9fd19wZGZqc19yZXF1aXJlX18oMTM3KSxfZm9udF9sb2FkZXI9X193X3BkZmpzX3JlcXVpcmVfXygxNDApLF9jYW52YXM9X193X3BkZmpzX3JlcXVpcmVfXygxNDEpLF93b3JrZXJfb3B0aW9ucz1fX3dfcGRmanNfcmVxdWlyZV9fKDE0NCksX2lzX25vZGU9X193X3BkZmpzX3JlcXVpcmVfXygzKSxfbWVzc2FnZV9oYW5kbGVyPV9fd19wZGZqc19yZXF1aXJlX18oMTQ1KSxfbWV0YWRhdGE9X193X3BkZmpzX3JlcXVpcmVfXygxNDYpLF9vcHRpb25hbF9jb250ZW50X2NvbmZpZz1fX3dfcGRmanNfcmVxdWlyZV9fKDE0NyksX3RyYW5zcG9ydF9zdHJlYW09X193X3BkZmpzX3JlcXVpcmVfXygxNDgpLF94ZmFfdGV4dD1fX3dfcGRmanNfcmVxdWlyZV9fKDE0OSk7ZnVuY3Rpb24gX2NsYXNzUHJpdmF0ZU1ldGhvZEluaXRTcGVjKHQsZSl7X2NoZWNrUHJpdmF0ZVJlZGVjbGFyYXRpb24odCxlKSxlLmFkZCh0KX1mdW5jdGlvbiBfY2xhc3NQcml2YXRlTWV0aG9kR2V0KHQsZSxyKXtpZighZS5oYXModCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvIGdldCBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiByfWZ1bmN0aW9uIF90b0NvbnN1bWFibGVBcnJheSh0KXtyZXR1cm4gX2FycmF5V2l0aG91dEhvbGVzKHQpfHxfaXRlcmFibGVUb0FycmF5KHQpfHxfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkodCl8fF9ub25JdGVyYWJsZVNwcmVhZCgpfWZ1bmN0aW9uIF9ub25JdGVyYWJsZVNwcmVhZCgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfWZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXkodCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJm51bGwhPXRbU3ltYm9sLml0ZXJhdG9yXXx8bnVsbCE9dFsiQEBpdGVyYXRvciJdKXJldHVybiBBcnJheS5mcm9tKHQpfWZ1bmN0aW9uIF9hcnJheVdpdGhvdXRIb2xlcyh0KXtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiBfYXJyYXlMaWtlVG9BcnJheSh0KX1mdW5jdGlvbiBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcih0LGUpe3ZhciByPSJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZ0W1N5bWJvbC5pdGVyYXRvcl18fHRbIkBAaXRlcmF0b3IiXTtpZighcil7aWYoQXJyYXkuaXNBcnJheSh0KXx8KHI9X3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KHQpKXx8ZSYmdCYmIm51bWJlciI9PXR5cGVvZiB0Lmxlbmd0aCl7ciYmKHQ9cik7dmFyIG49MCxpPWZ1bmN0aW9uKCl7fTtyZXR1cm57czppLG46ZnVuY3Rpb24oKXtyZXR1cm4gbj49dC5sZW5ndGg/e2RvbmU6ITB9Ontkb25lOiExLHZhbHVlOnRbbisrXX19LGU6ZnVuY3Rpb24odCl7dGhyb3cgdH0sZjppfX10aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gaXRlcmF0ZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9dmFyIGEsbz0hMCxzPSExO3JldHVybntzOmZ1bmN0aW9uKCl7cj1yLmNhbGwodCl9LG46ZnVuY3Rpb24oKXt2YXIgdD1yLm5leHQoKTtyZXR1cm4gbz10LmRvbmUsdH0sZTpmdW5jdGlvbih0KXtzPSEwLGE9dH0sZjpmdW5jdGlvbigpe3RyeXtvfHxudWxsPT1yLnJldHVybnx8ci5yZXR1cm4oKX1maW5hbGx5e2lmKHMpdGhyb3cgYX19fX1mdW5jdGlvbiBfcmVnZW5lcmF0b3JSdW50aW1lKCl7X3JlZ2VuZXJhdG9yUnVudGltZT1mdW5jdGlvbigpe3JldHVybiB0fTt2YXIgdD17fSxlPU9iamVjdC5wcm90b3R5cGUscj1lLmhhc093blByb3BlcnR5LG49T2JqZWN0LmRlZmluZVByb3BlcnR5fHxmdW5jdGlvbih0LGUscil7dFtlXT1yLnZhbHVlfSxpPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2w/U3ltYm9sOnt9LGE9aS5pdGVyYXRvcnx8IkBAaXRlcmF0b3IiLG89aS5hc3luY0l0ZXJhdG9yfHwiQEBhc3luY0l0ZXJhdG9yIixzPWkudG9TdHJpbmdUYWd8fCJAQHRvU3RyaW5nVGFnIjtmdW5jdGlvbiBsKHQsZSxyKXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7dmFsdWU6cixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pLHRbZV19dHJ5e2woe30sIiIpfWNhdGNoKHQpe2w9ZnVuY3Rpb24odCxlLHIpe3JldHVybiB0W2VdPXJ9fWZ1bmN0aW9uIHUodCxlLHIsaSl7dmFyIGE9ZSYmZS5wcm90b3R5cGUgaW5zdGFuY2VvZiBmP2U6ZixvPU9iamVjdC5jcmVhdGUoYS5wcm90b3R5cGUpLHM9bmV3IHgoaXx8W10pO3JldHVybiBuKG8sIl9pbnZva2UiLHt2YWx1ZTp3KHQscixzKX0pLG99ZnVuY3Rpb24gYyh0LGUscil7dHJ5e3JldHVybnt0eXBlOiJub3JtYWwiLGFyZzp0LmNhbGwoZSxyKX19Y2F0Y2godCl7cmV0dXJue3R5cGU6InRocm93Iixhcmc6dH19fXQud3JhcD11O3ZhciBoPXt9O2Z1bmN0aW9uIGYoKXt9ZnVuY3Rpb24gZCgpe31mdW5jdGlvbiBwKCl7fXZhciB2PXt9O2wodixhLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpO3ZhciB5PU9iamVjdC5nZXRQcm90b3R5cGVPZixtPXkmJnkoeShFKFtdKSkpO20mJm0hPT1lJiZyLmNhbGwobSxhKSYmKHY9bSk7dmFyIGc9cC5wcm90b3R5cGU9Zi5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh2KTtmdW5jdGlvbiBiKHQpe1sibmV4dCIsInRocm93IiwicmV0dXJuIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7bCh0LGUsKGZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9pbnZva2UoZSx0KX0pKX0pKX1mdW5jdGlvbiBfKHQsZSl7ZnVuY3Rpb24gaShuLGEsbyxzKXt2YXIgbD1jKHRbbl0sdCxhKTtpZigidGhyb3ciIT09bC50eXBlKXt2YXIgdT1sLmFyZyxoPXUudmFsdWU7cmV0dXJuIGgmJiJvYmplY3QiPT1fdHlwZW9mKGgpJiZyLmNhbGwoaCwiX19hd2FpdCIpP2UucmVzb2x2ZShoLl9fYXdhaXQpLnRoZW4oKGZ1bmN0aW9uKHQpe2koIm5leHQiLHQsbyxzKX0pLChmdW5jdGlvbih0KXtpKCJ0aHJvdyIsdCxvLHMpfSkpOmUucmVzb2x2ZShoKS50aGVuKChmdW5jdGlvbih0KXt1LnZhbHVlPXQsbyh1KX0pLChmdW5jdGlvbih0KXtyZXR1cm4gaSgidGhyb3ciLHQsbyxzKX0pKX1zKGwuYXJnKX12YXIgYTtuKHRoaXMsIl9pbnZva2UiLHt2YWx1ZTpmdW5jdGlvbih0LHIpe2Z1bmN0aW9uIG4oKXtyZXR1cm4gbmV3IGUoKGZ1bmN0aW9uKGUsbil7aSh0LHIsZSxuKX0pKX1yZXR1cm4gYT1hP2EudGhlbihuLG4pOm4oKX19KX1mdW5jdGlvbiB3KHQsZSxyKXt2YXIgbj0ic3VzcGVuZGVkU3RhcnQiO3JldHVybiBmdW5jdGlvbihpLGEpe2lmKCJleGVjdXRpbmciPT09bil0aHJvdyBuZXcgRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmciKTtpZigiY29tcGxldGVkIj09PW4pe2lmKCJ0aHJvdyI9PT1pKXRocm93IGE7cmV0dXJue3ZhbHVlOnZvaWQgMCxkb25lOiEwfX1mb3Ioci5tZXRob2Q9aSxyLmFyZz1hOzspe3ZhciBvPXIuZGVsZWdhdGU7aWYobyl7dmFyIHM9QShvLHIpO2lmKHMpe2lmKHM9PT1oKWNvbnRpbnVlO3JldHVybiBzfX1pZigibmV4dCI9PT1yLm1ldGhvZClyLnNlbnQ9ci5fc2VudD1yLmFyZztlbHNlIGlmKCJ0aHJvdyI9PT1yLm1ldGhvZCl7aWYoInN1c3BlbmRlZFN0YXJ0Ij09PW4pdGhyb3cgbj0iY29tcGxldGVkIixyLmFyZztyLmRpc3BhdGNoRXhjZXB0aW9uKHIuYXJnKX1lbHNlInJldHVybiI9PT1yLm1ldGhvZCYmci5hYnJ1cHQoInJldHVybiIsci5hcmcpO249ImV4ZWN1dGluZyI7dmFyIGw9Yyh0LGUscik7aWYoIm5vcm1hbCI9PT1sLnR5cGUpe2lmKG49ci5kb25lPyJjb21wbGV0ZWQiOiJzdXNwZW5kZWRZaWVsZCIsbC5hcmc9PT1oKWNvbnRpbnVlO3JldHVybnt2YWx1ZTpsLmFyZyxkb25lOnIuZG9uZX19InRocm93Ij09PWwudHlwZSYmKG49ImNvbXBsZXRlZCIsci5tZXRob2Q9InRocm93IixyLmFyZz1sLmFyZyl9fX1mdW5jdGlvbiBBKHQsZSl7dmFyIHI9ZS5tZXRob2Qsbj10Lml0ZXJhdG9yW3JdO2lmKHZvaWQgMD09PW4pcmV0dXJuIGUuZGVsZWdhdGU9bnVsbCwidGhyb3ciPT09ciYmdC5pdGVyYXRvci5yZXR1cm4mJihlLm1ldGhvZD0icmV0dXJuIixlLmFyZz12b2lkIDAsQSh0LGUpLCJ0aHJvdyI9PT1lLm1ldGhvZCl8fCJyZXR1cm4iIT09ciYmKGUubWV0aG9kPSJ0aHJvdyIsZS5hcmc9bmV3IFR5cGVFcnJvcigiVGhlIGl0ZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgYSAnIityKyInIG1ldGhvZCIpKSxoO3ZhciBpPWMobix0Lml0ZXJhdG9yLGUuYXJnKTtpZigidGhyb3ciPT09aS50eXBlKXJldHVybiBlLm1ldGhvZD0idGhyb3ciLGUuYXJnPWkuYXJnLGUuZGVsZWdhdGU9bnVsbCxoO3ZhciBhPWkuYXJnO3JldHVybiBhP2EuZG9uZT8oZVt0LnJlc3VsdE5hbWVdPWEudmFsdWUsZS5uZXh0PXQubmV4dExvYywicmV0dXJuIiE9PWUubWV0aG9kJiYoZS5tZXRob2Q9Im5leHQiLGUuYXJnPXZvaWQgMCksZS5kZWxlZ2F0ZT1udWxsLGgpOmE6KGUubWV0aG9kPSJ0aHJvdyIsZS5hcmc9bmV3IFR5cGVFcnJvcigiaXRlcmF0b3IgcmVzdWx0IGlzIG5vdCBhbiBvYmplY3QiKSxlLmRlbGVnYXRlPW51bGwsaCl9ZnVuY3Rpb24gayh0KXt2YXIgZT17dHJ5TG9jOnRbMF19OzEgaW4gdCYmKGUuY2F0Y2hMb2M9dFsxXSksMiBpbiB0JiYoZS5maW5hbGx5TG9jPXRbMl0sZS5hZnRlckxvYz10WzNdKSx0aGlzLnRyeUVudHJpZXMucHVzaChlKX1mdW5jdGlvbiBTKHQpe3ZhciBlPXQuY29tcGxldGlvbnx8e307ZS50eXBlPSJub3JtYWwiLGRlbGV0ZSBlLmFyZyx0LmNvbXBsZXRpb249ZX1mdW5jdGlvbiB4KHQpe3RoaXMudHJ5RW50cmllcz1be3RyeUxvYzoicm9vdCJ9XSx0LmZvckVhY2goayx0aGlzKSx0aGlzLnJlc2V0KCEwKX1mdW5jdGlvbiBFKHQpe2lmKHQpe3ZhciBlPXRbYV07aWYoZSlyZXR1cm4gZS5jYWxsKHQpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiB0Lm5leHQpcmV0dXJuIHQ7aWYoIWlzTmFOKHQubGVuZ3RoKSl7dmFyIG49LTEsaT1mdW5jdGlvbiBlKCl7Zm9yKDsrK248dC5sZW5ndGg7KWlmKHIuY2FsbCh0LG4pKXJldHVybiBlLnZhbHVlPXRbbl0sZS5kb25lPSExLGU7cmV0dXJuIGUudmFsdWU9dm9pZCAwLGUuZG9uZT0hMCxlfTtyZXR1cm4gaS5uZXh0PWl9fXJldHVybntuZXh0OlB9fWZ1bmN0aW9uIFAoKXtyZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9fXJldHVybiBkLnByb3RvdHlwZT1wLG4oZywiY29uc3RydWN0b3IiLHt2YWx1ZTpwLGNvbmZpZ3VyYWJsZTohMH0pLG4ocCwiY29uc3RydWN0b3IiLHt2YWx1ZTpkLGNvbmZpZ3VyYWJsZTohMH0pLGQuZGlzcGxheU5hbWU9bChwLHMsIkdlbmVyYXRvckZ1bmN0aW9uIiksdC5pc0dlbmVyYXRvckZ1bmN0aW9uPWZ1bmN0aW9uKHQpe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiB0JiZ0LmNvbnN0cnVjdG9yO3JldHVybiEhZSYmKGU9PT1kfHwiR2VuZXJhdG9yRnVuY3Rpb24iPT09KGUuZGlzcGxheU5hbWV8fGUubmFtZSkpfSx0Lm1hcms9ZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YodCxwKToodC5fX3Byb3RvX189cCxsKHQscywiR2VuZXJhdG9yRnVuY3Rpb24iKSksdC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShnKSx0fSx0LmF3cmFwPWZ1bmN0aW9uKHQpe3JldHVybntfX2F3YWl0OnR9fSxiKF8ucHJvdG90eXBlKSxsKF8ucHJvdG90eXBlLG8sKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSksdC5Bc3luY0l0ZXJhdG9yPV8sdC5hc3luYz1mdW5jdGlvbihlLHIsbixpLGEpe3ZvaWQgMD09PWEmJihhPVByb21pc2UpO3ZhciBvPW5ldyBfKHUoZSxyLG4saSksYSk7cmV0dXJuIHQuaXNHZW5lcmF0b3JGdW5jdGlvbihyKT9vOm8ubmV4dCgpLnRoZW4oKGZ1bmN0aW9uKHQpe3JldHVybiB0LmRvbmU/dC52YWx1ZTpvLm5leHQoKX0pKX0sYihnKSxsKGcscywiR2VuZXJhdG9yIiksbChnLGEsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSksbChnLCJ0b1N0cmluZyIsKGZ1bmN0aW9uKCl7cmV0dXJuIltvYmplY3QgR2VuZXJhdG9yXSJ9KSksdC5rZXlzPWZ1bmN0aW9uKHQpe3ZhciBlPU9iamVjdCh0KSxyPVtdO2Zvcih2YXIgbiBpbiBlKXIucHVzaChuKTtyZXR1cm4gci5yZXZlcnNlKCksZnVuY3Rpb24gdCgpe2Zvcig7ci5sZW5ndGg7KXt2YXIgbj1yLnBvcCgpO2lmKG4gaW4gZSlyZXR1cm4gdC52YWx1ZT1uLHQuZG9uZT0hMSx0fXJldHVybiB0LmRvbmU9ITAsdH19LHQudmFsdWVzPUUseC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOngscmVzZXQ6ZnVuY3Rpb24odCl7aWYodGhpcy5wcmV2PTAsdGhpcy5uZXh0PTAsdGhpcy5zZW50PXRoaXMuX3NlbnQ9dm9pZCAwLHRoaXMuZG9uZT0hMSx0aGlzLmRlbGVnYXRlPW51bGwsdGhpcy5tZXRob2Q9Im5leHQiLHRoaXMuYXJnPXZvaWQgMCx0aGlzLnRyeUVudHJpZXMuZm9yRWFjaChTKSwhdClmb3IodmFyIGUgaW4gdGhpcykidCI9PT1lLmNoYXJBdCgwKSYmci5jYWxsKHRoaXMsZSkmJiFpc05hTigrZS5zbGljZSgxKSkmJih0aGlzW2VdPXZvaWQgMCl9LHN0b3A6ZnVuY3Rpb24oKXt0aGlzLmRvbmU9ITA7dmFyIHQ9dGhpcy50cnlFbnRyaWVzWzBdLmNvbXBsZXRpb247aWYoInRocm93Ij09PXQudHlwZSl0aHJvdyB0LmFyZztyZXR1cm4gdGhpcy5ydmFsfSxkaXNwYXRjaEV4Y2VwdGlvbjpmdW5jdGlvbih0KXtpZih0aGlzLmRvbmUpdGhyb3cgdDt2YXIgZT10aGlzO2Z1bmN0aW9uIG4ocixuKXtyZXR1cm4gby50eXBlPSJ0aHJvdyIsby5hcmc9dCxlLm5leHQ9cixuJiYoZS5tZXRob2Q9Im5leHQiLGUuYXJnPXZvaWQgMCksISFufWZvcih2YXIgaT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7aT49MDstLWkpe3ZhciBhPXRoaXMudHJ5RW50cmllc1tpXSxvPWEuY29tcGxldGlvbjtpZigicm9vdCI9PT1hLnRyeUxvYylyZXR1cm4gbigiZW5kIik7aWYoYS50cnlMb2M8PXRoaXMucHJldil7dmFyIHM9ci5jYWxsKGEsImNhdGNoTG9jIiksbD1yLmNhbGwoYSwiZmluYWxseUxvYyIpO2lmKHMmJmwpe2lmKHRoaXMucHJldjxhLmNhdGNoTG9jKXJldHVybiBuKGEuY2F0Y2hMb2MsITApO2lmKHRoaXMucHJldjxhLmZpbmFsbHlMb2MpcmV0dXJuIG4oYS5maW5hbGx5TG9jKX1lbHNlIGlmKHMpe2lmKHRoaXMucHJldjxhLmNhdGNoTG9jKXJldHVybiBuKGEuY2F0Y2hMb2MsITApfWVsc2V7aWYoIWwpdGhyb3cgbmV3IEVycm9yKCJ0cnkgc3RhdGVtZW50IHdpdGhvdXQgY2F0Y2ggb3IgZmluYWxseSIpO2lmKHRoaXMucHJldjxhLmZpbmFsbHlMb2MpcmV0dXJuIG4oYS5maW5hbGx5TG9jKX19fX0sYWJydXB0OmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtuPj0wOy0tbil7dmFyIGk9dGhpcy50cnlFbnRyaWVzW25dO2lmKGkudHJ5TG9jPD10aGlzLnByZXYmJnIuY2FsbChpLCJmaW5hbGx5TG9jIikmJnRoaXMucHJldjxpLmZpbmFsbHlMb2Mpe3ZhciBhPWk7YnJlYWt9fWEmJigiYnJlYWsiPT09dHx8ImNvbnRpbnVlIj09PXQpJiZhLnRyeUxvYzw9ZSYmZTw9YS5maW5hbGx5TG9jJiYoYT1udWxsKTt2YXIgbz1hP2EuY29tcGxldGlvbjp7fTtyZXR1cm4gby50eXBlPXQsby5hcmc9ZSxhPyh0aGlzLm1ldGhvZD0ibmV4dCIsdGhpcy5uZXh0PWEuZmluYWxseUxvYyxoKTp0aGlzLmNvbXBsZXRlKG8pfSxjb21wbGV0ZTpmdW5jdGlvbih0LGUpe2lmKCJ0aHJvdyI9PT10LnR5cGUpdGhyb3cgdC5hcmc7cmV0dXJuImJyZWFrIj09PXQudHlwZXx8ImNvbnRpbnVlIj09PXQudHlwZT90aGlzLm5leHQ9dC5hcmc6InJldHVybiI9PT10LnR5cGU/KHRoaXMucnZhbD10aGlzLmFyZz10LmFyZyx0aGlzLm1ldGhvZD0icmV0dXJuIix0aGlzLm5leHQ9ImVuZCIpOiJub3JtYWwiPT09dC50eXBlJiZlJiYodGhpcy5uZXh0PWUpLGh9LGZpbmlzaDpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2U+PTA7LS1lKXt2YXIgcj10aGlzLnRyeUVudHJpZXNbZV07aWYoci5maW5hbGx5TG9jPT09dClyZXR1cm4gdGhpcy5jb21wbGV0ZShyLmNvbXBsZXRpb24sci5hZnRlckxvYyksUyhyKSxofX0sY2F0Y2g6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtlPj0wOy0tZSl7dmFyIHI9dGhpcy50cnlFbnRyaWVzW2VdO2lmKHIudHJ5TG9jPT09dCl7dmFyIG49ci5jb21wbGV0aW9uO2lmKCJ0aHJvdyI9PT1uLnR5cGUpe3ZhciBpPW4uYXJnO1Mocil9cmV0dXJuIGl9fXRocm93IG5ldyBFcnJvcigiaWxsZWdhbCBjYXRjaCBhdHRlbXB0Iil9LGRlbGVnYXRlWWllbGQ6ZnVuY3Rpb24odCxlLHIpe3JldHVybiB0aGlzLmRlbGVnYXRlPXtpdGVyYXRvcjpFKHQpLHJlc3VsdE5hbWU6ZSxuZXh0TG9jOnJ9LCJuZXh0Ij09PXRoaXMubWV0aG9kJiYodGhpcy5hcmc9dm9pZCAwKSxofX0sdH1mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2sodCxlKXtpZighKHQgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0LGUpe2Zvcih2YXIgcj0wO3I8ZS5sZW5ndGg7cisrKXt2YXIgbj1lW3JdO24uZW51bWVyYWJsZT1uLmVudW1lcmFibGV8fCExLG4uY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBuJiYobi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsX3RvUHJvcGVydHlLZXkobi5rZXkpLG4pfX1mdW5jdGlvbiBfY3JlYXRlQ2xhc3ModCxlLHIpe3JldHVybiBlJiZfZGVmaW5lUHJvcGVydGllcyh0LnByb3RvdHlwZSxlKSxyJiZfZGVmaW5lUHJvcGVydGllcyh0LHIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLHR9ZnVuY3Rpb24gX3RvUHJvcGVydHlLZXkodCl7dmFyIGU9X3RvUHJpbWl0aXZlKHQsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT09X3R5cGVvZihlKT9lOlN0cmluZyhlKX1mdW5jdGlvbiBfdG9QcmltaXRpdmUodCxlKXtpZigib2JqZWN0IiE9PV90eXBlb2YodCl8fG51bGw9PT10KXJldHVybiB0O3ZhciByPXRbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1yKXt2YXIgbj1yLmNhbGwodCxlfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09X3R5cGVvZihuKSlyZXR1cm4gbjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWU/U3RyaW5nOk51bWJlcikodCl9ZnVuY3Rpb24gX2NsYXNzUHJpdmF0ZUZpZWxkSW5pdFNwZWModCxlLHIpe19jaGVja1ByaXZhdGVSZWRlY2xhcmF0aW9uKHQsZSksZS5zZXQodCxyKX1mdW5jdGlvbiBfY2hlY2tQcml2YXRlUmVkZWNsYXJhdGlvbih0LGUpe2lmKGUuaGFzKHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBpbml0aWFsaXplIHRoZSBzYW1lIHByaXZhdGUgZWxlbWVudHMgdHdpY2Ugb24gYW4gb2JqZWN0Iil9ZnVuY3Rpb24gX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHQsZSxyKXtyZXR1cm4gX2NsYXNzQXBwbHlEZXNjcmlwdG9yU2V0KHQsX2NsYXNzRXh0cmFjdEZpZWxkRGVzY3JpcHRvcih0LGUsInNldCIpLHIpLHJ9ZnVuY3Rpb24gX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHQsZSl7cmV0dXJuIF9jbGFzc0FwcGx5RGVzY3JpcHRvckdldCh0LF9jbGFzc0V4dHJhY3RGaWVsZERlc2NyaXB0b3IodCxlLCJnZXQiKSl9ZnVuY3Rpb24gX2NsYXNzRXh0cmFjdEZpZWxkRGVzY3JpcHRvcih0LGUscil7aWYoIWUuaGFzKHQpKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byAiK3IrIiBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiBlLmdldCh0KX1mdW5jdGlvbiBfY2xhc3NTdGF0aWNQcml2YXRlRmllbGRTcGVjU2V0KHQsZSxyLG4pe3JldHVybiBfY2xhc3NDaGVja1ByaXZhdGVTdGF0aWNBY2Nlc3ModCxlKSxfY2xhc3NDaGVja1ByaXZhdGVTdGF0aWNGaWVsZERlc2NyaXB0b3Iociwic2V0IiksX2NsYXNzQXBwbHlEZXNjcmlwdG9yU2V0KHQscixuKSxufWZ1bmN0aW9uIF9jbGFzc0FwcGx5RGVzY3JpcHRvclNldCh0LGUscil7aWYoZS5zZXQpZS5zZXQuY2FsbCh0LHIpO2Vsc2V7aWYoIWUud3JpdGFibGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvIHNldCByZWFkIG9ubHkgcHJpdmF0ZSBmaWVsZCIpO2UudmFsdWU9cn19ZnVuY3Rpb24gX2NsYXNzU3RhdGljUHJpdmF0ZUZpZWxkU3BlY0dldCh0LGUscil7cmV0dXJuIF9jbGFzc0NoZWNrUHJpdmF0ZVN0YXRpY0FjY2Vzcyh0LGUpLF9jbGFzc0NoZWNrUHJpdmF0ZVN0YXRpY0ZpZWxkRGVzY3JpcHRvcihyLCJnZXQiKSxfY2xhc3NBcHBseURlc2NyaXB0b3JHZXQodCxyKX1mdW5jdGlvbiBfY2xhc3NDaGVja1ByaXZhdGVTdGF0aWNGaWVsZERlc2NyaXB0b3IodCxlKXtpZih2b2lkIDA9PT10KXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byAiK2UrIiBwcml2YXRlIHN0YXRpYyBmaWVsZCBiZWZvcmUgaXRzIGRlY2xhcmF0aW9uIil9ZnVuY3Rpb24gX2NsYXNzQ2hlY2tQcml2YXRlU3RhdGljQWNjZXNzKHQsZSl7aWYodCE9PWUpdGhyb3cgbmV3IFR5cGVFcnJvcigiUHJpdmF0ZSBzdGF0aWMgYWNjZXNzIG9mIHdyb25nIHByb3ZlbmFuY2UiKX1mdW5jdGlvbiBfY2xhc3NBcHBseURlc2NyaXB0b3JHZXQodCxlKXtyZXR1cm4gZS5nZXQ/ZS5nZXQuY2FsbCh0KTplLnZhbHVlfWZ1bmN0aW9uIGFzeW5jR2VuZXJhdG9yU3RlcCh0LGUscixuLGksYSxvKXt0cnl7dmFyIHM9dFthXShvKSxsPXMudmFsdWV9Y2F0Y2godCl7cmV0dXJuIHZvaWQgcih0KX1zLmRvbmU/ZShsKTpQcm9taXNlLnJlc29sdmUobCkudGhlbihuLGkpfWZ1bmN0aW9uIF9hc3luY1RvR2VuZXJhdG9yKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXRoaXMscj1hcmd1bWVudHM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihuLGkpe3ZhciBhPXQuYXBwbHkoZSxyKTtmdW5jdGlvbiBvKHQpe2FzeW5jR2VuZXJhdG9yU3RlcChhLG4saSxvLHMsIm5leHQiLHQpfWZ1bmN0aW9uIHModCl7YXN5bmNHZW5lcmF0b3JTdGVwKGEsbixpLG8scywidGhyb3ciLHQpfW8odm9pZCAwKX0pKX19ZnVuY3Rpb24gX3NsaWNlZFRvQXJyYXkodCxlKXtyZXR1cm4gX2FycmF5V2l0aEhvbGVzKHQpfHxfaXRlcmFibGVUb0FycmF5TGltaXQodCxlKXx8X3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KHQsZSl8fF9ub25JdGVyYWJsZVJlc3QoKX1mdW5jdGlvbiBfbm9uSXRlcmFibGVSZXN0KCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX1mdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkodCxlKXtpZih0KXtpZigic3RyaW5nIj09dHlwZW9mIHQpcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KHQsZSk7dmFyIHI9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpLnNsaWNlKDgsLTEpO3JldHVybiJPYmplY3QiPT09ciYmdC5jb25zdHJ1Y3RvciYmKHI9dC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PXJ8fCJTZXQiPT09cj9BcnJheS5mcm9tKHQpOiJBcmd1bWVudHMiPT09cnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3Qocik/X2FycmF5TGlrZVRvQXJyYXkodCxlKTp2b2lkIDB9fWZ1bmN0aW9uIF9hcnJheUxpa2VUb0FycmF5KHQsZSl7KG51bGw9PWV8fGU+dC5sZW5ndGgpJiYoZT10Lmxlbmd0aCk7Zm9yKHZhciByPTAsbj1uZXcgQXJyYXkoZSk7cjxlO3IrKyluW3JdPXRbcl07cmV0dXJuIG59ZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheUxpbWl0KHQsZSl7dmFyIHI9bnVsbD09dD9udWxsOiJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZ0W1N5bWJvbC5pdGVyYXRvcl18fHRbIkBAaXRlcmF0b3IiXTtpZihudWxsIT1yKXt2YXIgbixpLGEsbyxzPVtdLGw9ITAsdT0hMTt0cnl7aWYoYT0ocj1yLmNhbGwodCkpLm5leHQsMD09PWUpe2lmKE9iamVjdChyKSE9PXIpcmV0dXJuO2w9ITF9ZWxzZSBmb3IoOyEobD0obj1hLmNhbGwocikpLmRvbmUpJiYocy5wdXNoKG4udmFsdWUpLHMubGVuZ3RoIT09ZSk7bD0hMCk7fWNhdGNoKHQpe3U9ITAsaT10fWZpbmFsbHl7dHJ5e2lmKCFsJiZudWxsIT1yLnJldHVybiYmKG89ci5yZXR1cm4oKSxPYmplY3QobykhPT1vKSlyZXR1cm59ZmluYWxseXtpZih1KXRocm93IGl9fXJldHVybiBzfX1mdW5jdGlvbiBfYXJyYXlXaXRoSG9sZXModCl7aWYoQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gdH1mdW5jdGlvbiBfdHlwZW9mKHQpe3JldHVybiBfdHlwZW9mPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiB0fSxfdHlwZW9mKHQpfXZhciBERUZBVUxUX1JBTkdFX0NIVU5LX1NJWkU9NjU1MzYsUkVOREVSSU5HX0NBTkNFTExFRF9USU1FT1VUPTEwMCxEZWZhdWx0Q2FudmFzRmFjdG9yeT1fZGlzcGxheV91dGlscy5ET01DYW52YXNGYWN0b3J5O2V4cG9ydHMuRGVmYXVsdENhbnZhc0ZhY3Rvcnk9RGVmYXVsdENhbnZhc0ZhY3Rvcnk7dmFyIERlZmF1bHRDTWFwUmVhZGVyRmFjdG9yeT1fZGlzcGxheV91dGlscy5ET01DTWFwUmVhZGVyRmFjdG9yeTtleHBvcnRzLkRlZmF1bHRDTWFwUmVhZGVyRmFjdG9yeT1EZWZhdWx0Q01hcFJlYWRlckZhY3Rvcnk7dmFyIERlZmF1bHRTdGFuZGFyZEZvbnREYXRhRmFjdG9yeT1fZGlzcGxheV91dGlscy5ET01TdGFuZGFyZEZvbnREYXRhRmFjdG9yeSxjcmVhdGVQREZOZXR3b3JrU3RyZWFtO2lmKGV4cG9ydHMuRGVmYXVsdFN0YW5kYXJkRm9udERhdGFGYWN0b3J5PURlZmF1bHRTdGFuZGFyZEZvbnREYXRhRmFjdG9yeSxfaXNfbm9kZS5pc05vZGVKUyl7dmFyIF9yZXF1aXJlPV9fd19wZGZqc19yZXF1aXJlX18oMTUwKSxOb2RlQ2FudmFzRmFjdG9yeT1fcmVxdWlyZS5Ob2RlQ2FudmFzRmFjdG9yeSxOb2RlQ01hcFJlYWRlckZhY3Rvcnk9X3JlcXVpcmUuTm9kZUNNYXBSZWFkZXJGYWN0b3J5LE5vZGVTdGFuZGFyZEZvbnREYXRhRmFjdG9yeT1fcmVxdWlyZS5Ob2RlU3RhbmRhcmRGb250RGF0YUZhY3Rvcnk7ZXhwb3J0cy5EZWZhdWx0Q2FudmFzRmFjdG9yeT1EZWZhdWx0Q2FudmFzRmFjdG9yeT1Ob2RlQ2FudmFzRmFjdG9yeSxleHBvcnRzLkRlZmF1bHRDTWFwUmVhZGVyRmFjdG9yeT1EZWZhdWx0Q01hcFJlYWRlckZhY3Rvcnk9Tm9kZUNNYXBSZWFkZXJGYWN0b3J5LGV4cG9ydHMuRGVmYXVsdFN0YW5kYXJkRm9udERhdGFGYWN0b3J5PURlZmF1bHRTdGFuZGFyZEZvbnREYXRhRmFjdG9yeT1Ob2RlU3RhbmRhcmRGb250RGF0YUZhY3Rvcnl9ZnVuY3Rpb24gc2V0UERGTmV0d29ya1N0cmVhbUZhY3RvcnkodCl7Y3JlYXRlUERGTmV0d29ya1N0cmVhbT10fWZ1bmN0aW9uIGdldERvY3VtZW50KHQpe3ZhciBlLHI9bmV3IFBERkRvY3VtZW50TG9hZGluZ1Rhc2s7aWYoInN0cmluZyI9PXR5cGVvZiB0fHx0IGluc3RhbmNlb2YgVVJMKWU9e3VybDp0fTtlbHNlIGlmKCgwLF91dGlsLmlzQXJyYXlCdWZmZXIpKHQpKWU9e2RhdGE6dH07ZWxzZSBpZih0IGluc3RhbmNlb2YgUERGRGF0YVJhbmdlVHJhbnNwb3J0KWU9e3JhbmdlOnR9O2Vsc2V7aWYoIm9iamVjdCIhPT1fdHlwZW9mKHQpKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBwYXJhbWV0ZXIgaW4gZ2V0RG9jdW1lbnQsIG5lZWQgZWl0aGVyIHN0cmluZywgVVJMLCBUeXBlZEFycmF5LCBvciBwYXJhbWV0ZXIgb2JqZWN0LiIpO2lmKCF0LnVybCYmIXQuZGF0YSYmIXQucmFuZ2UpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHBhcmFtZXRlciBvYmplY3Q6IG5lZWQgZWl0aGVyIC5kYXRhLCAucmFuZ2Ugb3IgLnVybCIpO2U9dH12YXIgbj1PYmplY3QuY3JlYXRlKG51bGwpLGk9bnVsbCxhPW51bGw7Zm9yKHZhciBvIGluIGUpe3ZhciBzPWVbb107c3dpdGNoKG8pe2Nhc2UidXJsIjppZigidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyl0cnl7bltvXT1uZXcgVVJMKHMsd2luZG93LmxvY2F0aW9uKS5ocmVmO2NvbnRpbnVlfWNhdGNoKHQpeygwLF91dGlsLndhcm4pKCdDYW5ub3QgY3JlYXRlIHZhbGlkIFVSTDogIicuY29uY2F0KHQsJyIuJykpfWVsc2UgaWYoInN0cmluZyI9PXR5cGVvZiBzfHxzIGluc3RhbmNlb2YgVVJMKXtuW29dPXMudG9TdHJpbmcoKTtjb250aW51ZX10aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgUERGIHVybCBkYXRhOiBlaXRoZXIgc3RyaW5nIG9yIFVSTC1vYmplY3QgaXMgZXhwZWN0ZWQgaW4gdGhlIHVybCBwcm9wZXJ0eS4iKTtjYXNlInJhbmdlIjppPXM7Y29udGludWU7Y2FzZSJ3b3JrZXIiOmE9cztjb250aW51ZTtjYXNlImRhdGEiOmlmKF9pc19ub2RlLmlzTm9kZUpTJiYidW5kZWZpbmVkIiE9dHlwZW9mIEJ1ZmZlciYmcyBpbnN0YW5jZW9mIEJ1ZmZlciluW29dPW5ldyBVaW50OEFycmF5KHMpO2Vsc2V7aWYocyBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpYnJlYWs7aWYoInN0cmluZyI9PXR5cGVvZiBzKW5bb109KDAsX3V0aWwuc3RyaW5nVG9CeXRlcykocyk7ZWxzZSBpZigib2JqZWN0IiE9PV90eXBlb2Yocyl8fG51bGw9PT1zfHxpc05hTihzLmxlbmd0aCkpe2lmKCEoMCxfdXRpbC5pc0FycmF5QnVmZmVyKShzKSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgUERGIGJpbmFyeSBkYXRhOiBlaXRoZXIgVHlwZWRBcnJheSwgc3RyaW5nLCBvciBhcnJheS1saWtlIG9iamVjdCBpcyBleHBlY3RlZCBpbiB0aGUgZGF0YSBwcm9wZXJ0eS4iKTtuW29dPW5ldyBVaW50OEFycmF5KHMpfWVsc2UgbltvXT1uZXcgVWludDhBcnJheShzKX1jb250aW51ZX1uW29dPXN9aWYobi5DTWFwUmVhZGVyRmFjdG9yeT1uLkNNYXBSZWFkZXJGYWN0b3J5fHxEZWZhdWx0Q01hcFJlYWRlckZhY3Rvcnksbi5TdGFuZGFyZEZvbnREYXRhRmFjdG9yeT1uLlN0YW5kYXJkRm9udERhdGFGYWN0b3J5fHxEZWZhdWx0U3RhbmRhcmRGb250RGF0YUZhY3Rvcnksbi5pZ25vcmVFcnJvcnM9ITAhPT1uLnN0b3BBdEVycm9ycyxuLmZvbnRFeHRyYVByb3BlcnRpZXM9ITA9PT1uLmZvbnRFeHRyYVByb3BlcnRpZXMsbi5wZGZCdWc9ITA9PT1uLnBkZkJ1ZyxuLmVuYWJsZVhmYT0hMD09PW4uZW5hYmxlWGZhLCghTnVtYmVyLmlzSW50ZWdlcihuLnJhbmdlQ2h1bmtTaXplKXx8bi5yYW5nZUNodW5rU2l6ZTwxKSYmKG4ucmFuZ2VDaHVua1NpemU9REVGQVVMVF9SQU5HRV9DSFVOS19TSVpFKSwoInN0cmluZyIhPXR5cGVvZiBuLmRvY0Jhc2VVcmx8fCgwLF9kaXNwbGF5X3V0aWxzLmlzRGF0YVNjaGVtZSkobi5kb2NCYXNlVXJsKSkmJihuLmRvY0Jhc2VVcmw9bnVsbCksKCFOdW1iZXIuaXNJbnRlZ2VyKG4ubWF4SW1hZ2VTaXplKXx8bi5tYXhJbWFnZVNpemU8LTEpJiYobi5tYXhJbWFnZVNpemU9LTEpLCJzdHJpbmciIT10eXBlb2Ygbi5jTWFwVXJsJiYobi5jTWFwVXJsPW51bGwpLCJzdHJpbmciIT10eXBlb2Ygbi5zdGFuZGFyZEZvbnREYXRhVXJsJiYobi5zdGFuZGFyZEZvbnREYXRhVXJsPW51bGwpLCJib29sZWFuIiE9dHlwZW9mIG4udXNlV29ya2VyRmV0Y2gmJihuLnVzZVdvcmtlckZldGNoPW4uQ01hcFJlYWRlckZhY3Rvcnk9PT1fZGlzcGxheV91dGlscy5ET01DTWFwUmVhZGVyRmFjdG9yeSYmbi5TdGFuZGFyZEZvbnREYXRhRmFjdG9yeT09PV9kaXNwbGF5X3V0aWxzLkRPTVN0YW5kYXJkRm9udERhdGFGYWN0b3J5KSwiYm9vbGVhbiIhPXR5cGVvZiBuLmlzRXZhbFN1cHBvcnRlZCYmKG4uaXNFdmFsU3VwcG9ydGVkPSEwKSwiYm9vbGVhbiIhPXR5cGVvZiBuLmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkJiYobi5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZD0hX2lzX25vZGUuaXNOb2RlSlMpLCJib29sZWFuIiE9dHlwZW9mIG4uZGlzYWJsZUZvbnRGYWNlJiYobi5kaXNhYmxlRm9udEZhY2U9X2lzX25vZGUuaXNOb2RlSlMpLCJib29sZWFuIiE9dHlwZW9mIG4udXNlU3lzdGVtRm9udHMmJihuLnVzZVN5c3RlbUZvbnRzPSFfaXNfbm9kZS5pc05vZGVKUyYmIW4uZGlzYWJsZUZvbnRGYWNlKSwib2JqZWN0Ij09PV90eXBlb2Yobi5vd25lckRvY3VtZW50KSYmbnVsbCE9PW4ub3duZXJEb2N1bWVudHx8KG4ub3duZXJEb2N1bWVudD1nbG9iYWxUaGlzLmRvY3VtZW50KSwiYm9vbGVhbiIhPXR5cGVvZiBuLmRpc2FibGVSYW5nZSYmKG4uZGlzYWJsZVJhbmdlPSExKSwiYm9vbGVhbiIhPXR5cGVvZiBuLmRpc2FibGVTdHJlYW0mJihuLmRpc2FibGVTdHJlYW09ITEpLCJib29sZWFuIiE9dHlwZW9mIG4uZGlzYWJsZUF1dG9GZXRjaCYmKG4uZGlzYWJsZUF1dG9GZXRjaD0hMSksKDAsX3V0aWwuc2V0VmVyYm9zaXR5TGV2ZWwpKG4udmVyYm9zaXR5KSwhYSl7dmFyIGw9e3ZlcmJvc2l0eTpuLnZlcmJvc2l0eSxwb3J0Ol93b3JrZXJfb3B0aW9ucy5HbG9iYWxXb3JrZXJPcHRpb25zLndvcmtlclBvcnR9O2E9bC5wb3J0P1BERldvcmtlci5mcm9tUG9ydChsKTpuZXcgUERGV29ya2VyKGwpLHIuX3dvcmtlcj1hfXZhciB1PXIuZG9jSWQ7cmV0dXJuIGEucHJvbWlzZS50aGVuKChmdW5jdGlvbigpe2lmKHIuZGVzdHJveWVkKXRocm93IG5ldyBFcnJvcigiTG9hZGluZyBhYm9ydGVkIik7dmFyIHQ9X2ZldGNoRG9jdW1lbnQoYSxuLGksdSksZT1uZXcgUHJvbWlzZSgoZnVuY3Rpb24odCl7dmFyIGU7aT9lPW5ldyBfdHJhbnNwb3J0X3N0cmVhbS5QREZEYXRhVHJhbnNwb3J0U3RyZWFtKHtsZW5ndGg6bi5sZW5ndGgsaW5pdGlhbERhdGE6bi5pbml0aWFsRGF0YSxwcm9ncmVzc2l2ZURvbmU6bi5wcm9ncmVzc2l2ZURvbmUsY29udGVudERpc3Bvc2l0aW9uRmlsZW5hbWU6bi5jb250ZW50RGlzcG9zaXRpb25GaWxlbmFtZSxkaXNhYmxlUmFuZ2U6bi5kaXNhYmxlUmFuZ2UsZGlzYWJsZVN0cmVhbTpuLmRpc2FibGVTdHJlYW19LGkpOm4uZGF0YXx8KGU9Y3JlYXRlUERGTmV0d29ya1N0cmVhbSh7dXJsOm4udXJsLGxlbmd0aDpuLmxlbmd0aCxodHRwSGVhZGVyczpuLmh0dHBIZWFkZXJzLHdpdGhDcmVkZW50aWFsczpuLndpdGhDcmVkZW50aWFscyxyYW5nZUNodW5rU2l6ZTpuLnJhbmdlQ2h1bmtTaXplLGRpc2FibGVSYW5nZTpuLmRpc2FibGVSYW5nZSxkaXNhYmxlU3RyZWFtOm4uZGlzYWJsZVN0cmVhbX0pKSx0KGUpfSkpO3JldHVybiBQcm9taXNlLmFsbChbdCxlXSkudGhlbigoZnVuY3Rpb24odCl7dmFyIGU9X3NsaWNlZFRvQXJyYXkodCwyKSxpPWVbMF0sbz1lWzFdO2lmKHIuZGVzdHJveWVkKXRocm93IG5ldyBFcnJvcigiTG9hZGluZyBhYm9ydGVkIik7dmFyIHM9bmV3IF9tZXNzYWdlX2hhbmRsZXIuTWVzc2FnZUhhbmRsZXIodSxpLGEucG9ydCksbD1uZXcgV29ya2VyVHJhbnNwb3J0KHMscixvLG4pO3IuX3RyYW5zcG9ydD1sLHMuc2VuZCgiUmVhZHkiLG51bGwpfSkpfSkpLmNhdGNoKHIuX2NhcGFiaWxpdHkucmVqZWN0KSxyfWZ1bmN0aW9uIF9mZXRjaERvY3VtZW50KHQsZSxyLG4pe3JldHVybiBfZmV0Y2hEb2N1bWVudDIuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIF9mZXRjaERvY3VtZW50Migpe3JldHVybihfZmV0Y2hEb2N1bWVudDI9X2FzeW5jVG9HZW5lcmF0b3IoX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoKGZ1bmN0aW9uIHQoZSxyLG4saSl7dmFyIGE7cmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDppZighZS5kZXN0cm95ZWQpe3QubmV4dD0yO2JyZWFrfXRocm93IG5ldyBFcnJvcigiV29ya2VyIHdhcyBkZXN0cm95ZWQiKTtjYXNlIDI6cmV0dXJuIG4mJihyLmxlbmd0aD1uLmxlbmd0aCxyLmluaXRpYWxEYXRhPW4uaW5pdGlhbERhdGEsci5wcm9ncmVzc2l2ZURvbmU9bi5wcm9ncmVzc2l2ZURvbmUsci5jb250ZW50RGlzcG9zaXRpb25GaWxlbmFtZT1uLmNvbnRlbnREaXNwb3NpdGlvbkZpbGVuYW1lKSx0Lm5leHQ9NSxlLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiR2V0RG9jUmVxdWVzdCIse2RvY0lkOmksYXBpVmVyc2lvbjoiMy4yLjAiLGRhdGE6ci5kYXRhLHBhc3N3b3JkOnIucGFzc3dvcmQsZGlzYWJsZUF1dG9GZXRjaDpyLmRpc2FibGVBdXRvRmV0Y2gscmFuZ2VDaHVua1NpemU6ci5yYW5nZUNodW5rU2l6ZSxsZW5ndGg6ci5sZW5ndGgsZG9jQmFzZVVybDpyLmRvY0Jhc2VVcmwsZW5hYmxlWGZhOnIuZW5hYmxlWGZhLGV2YWx1YXRvck9wdGlvbnM6e21heEltYWdlU2l6ZTpyLm1heEltYWdlU2l6ZSxkaXNhYmxlRm9udEZhY2U6ci5kaXNhYmxlRm9udEZhY2UsaWdub3JlRXJyb3JzOnIuaWdub3JlRXJyb3JzLGlzRXZhbFN1cHBvcnRlZDpyLmlzRXZhbFN1cHBvcnRlZCxpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDpyLmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkLGZvbnRFeHRyYVByb3BlcnRpZXM6ci5mb250RXh0cmFQcm9wZXJ0aWVzLHVzZVN5c3RlbUZvbnRzOnIudXNlU3lzdGVtRm9udHMsY01hcFVybDpyLnVzZVdvcmtlckZldGNoP3IuY01hcFVybDpudWxsLHN0YW5kYXJkRm9udERhdGFVcmw6ci51c2VXb3JrZXJGZXRjaD9yLnN0YW5kYXJkRm9udERhdGFVcmw6bnVsbH19KTtjYXNlIDU6aWYoYT10LnNlbnQsci5kYXRhJiYoci5kYXRhPW51bGwpLCFlLmRlc3Ryb3llZCl7dC5uZXh0PTk7YnJlYWt9dGhyb3cgbmV3IEVycm9yKCJXb3JrZXIgd2FzIGRlc3Ryb3llZCIpO2Nhc2UgOTpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsYSk7Y2FzZSAxMDpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQpfSkpKSkuYXBwbHkodGhpcyxhcmd1bWVudHMpfXZhciBfb25VbnN1cHBvcnRlZEZlYXR1cmU9bmV3IFdlYWtNYXAsUERGRG9jdW1lbnRMb2FkaW5nVGFzaz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt2YXIgZSxyO19jbGFzc0NhbGxDaGVjayh0aGlzLHQpLF9jbGFzc1ByaXZhdGVGaWVsZEluaXRTcGVjKHRoaXMsX29uVW5zdXBwb3J0ZWRGZWF0dXJlLHt3cml0YWJsZTohMCx2YWx1ZTpudWxsfSksdGhpcy5fY2FwYWJpbGl0eT0oMCxfdXRpbC5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKSx0aGlzLl90cmFuc3BvcnQ9bnVsbCx0aGlzLl93b3JrZXI9bnVsbCx0aGlzLmRvY0lkPSJkIi5jb25jYXQoKF9jbGFzc1N0YXRpY1ByaXZhdGVGaWVsZFNwZWNTZXQodCx0LF9kb2NJZCwoZT1fY2xhc3NTdGF0aWNQcml2YXRlRmllbGRTcGVjR2V0KHQsdCxfZG9jSWQpLHI9ZSsrLGUpKSxyKSksdGhpcy5kZXN0cm95ZWQ9ITEsdGhpcy5vblBhc3N3b3JkPW51bGwsdGhpcy5vblByb2dyZXNzPW51bGx9dmFyIGU7cmV0dXJuIF9jcmVhdGVDbGFzcyh0LFt7a2V5OiJvblVuc3VwcG9ydGVkRmVhdHVyZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLF9vblVuc3VwcG9ydGVkRmVhdHVyZSl9LHNldDpmdW5jdGlvbih0KXsoMCxfZGlzcGxheV91dGlscy5kZXByZWNhdGVkKSgiVGhlIFBERkRvY3VtZW50TG9hZGluZ1Rhc2sgb25VbnN1cHBvcnRlZEZlYXR1cmUgcHJvcGVydHkgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUuIiksX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsX29uVW5zdXBwb3J0ZWRGZWF0dXJlLHQpfX0se2tleToicHJvbWlzZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NhcGFiaWxpdHkucHJvbWlzZX19LHtrZXk6ImRlc3Ryb3kiLHZhbHVlOihlPV9hc3luY1RvR2VuZXJhdG9yKF9yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIGU7cmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdGhpcy5kZXN0cm95ZWQ9ITAsdC5uZXh0PTMsbnVsbD09PShlPXRoaXMuX3RyYW5zcG9ydCl8fHZvaWQgMD09PWU/dm9pZCAwOmUuZGVzdHJveSgpO2Nhc2UgMzp0aGlzLl90cmFuc3BvcnQ9bnVsbCx0aGlzLl93b3JrZXImJih0aGlzLl93b3JrZXIuZGVzdHJveSgpLHRoaXMuX3dvcmtlcj1udWxsKTtjYXNlIDU6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKSxmdW5jdGlvbigpe3JldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pfV0pLHR9KCk7ZXhwb3J0cy5QREZEb2N1bWVudExvYWRpbmdUYXNrPVBERkRvY3VtZW50TG9hZGluZ1Rhc2s7dmFyIF9kb2NJZD17d3JpdGFibGU6ITAsdmFsdWU6MH0sUERGRGF0YVJhbmdlVHJhbnNwb3J0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLHIpe3ZhciBuPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdJiZhcmd1bWVudHNbMl0saT1hcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXT9hcmd1bWVudHNbM106bnVsbDtfY2xhc3NDYWxsQ2hlY2sodGhpcyx0KSx0aGlzLmxlbmd0aD1lLHRoaXMuaW5pdGlhbERhdGE9cix0aGlzLnByb2dyZXNzaXZlRG9uZT1uLHRoaXMuY29udGVudERpc3Bvc2l0aW9uRmlsZW5hbWU9aSx0aGlzLl9yYW5nZUxpc3RlbmVycz1bXSx0aGlzLl9wcm9ncmVzc0xpc3RlbmVycz1bXSx0aGlzLl9wcm9ncmVzc2l2ZVJlYWRMaXN0ZW5lcnM9W10sdGhpcy5fcHJvZ3Jlc3NpdmVEb25lTGlzdGVuZXJzPVtdLHRoaXMuX3JlYWR5Q2FwYWJpbGl0eT0oMCxfdXRpbC5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKX1yZXR1cm4gX2NyZWF0ZUNsYXNzKHQsW3trZXk6ImFkZFJhbmdlTGlzdGVuZXIiLHZhbHVlOmZ1bmN0aW9uKHQpe3RoaXMuX3JhbmdlTGlzdGVuZXJzLnB1c2godCl9fSx7a2V5OiJhZGRQcm9ncmVzc0xpc3RlbmVyIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLl9wcm9ncmVzc0xpc3RlbmVycy5wdXNoKHQpfX0se2tleToiYWRkUHJvZ3Jlc3NpdmVSZWFkTGlzdGVuZXIiLHZhbHVlOmZ1bmN0aW9uKHQpe3RoaXMuX3Byb2dyZXNzaXZlUmVhZExpc3RlbmVycy5wdXNoKHQpfX0se2tleToiYWRkUHJvZ3Jlc3NpdmVEb25lTGlzdGVuZXIiLHZhbHVlOmZ1bmN0aW9uKHQpe3RoaXMuX3Byb2dyZXNzaXZlRG9uZUxpc3RlbmVycy5wdXNoKHQpfX0se2tleToib25EYXRhUmFuZ2UiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIHIsbj1fY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcih0aGlzLl9yYW5nZUxpc3RlbmVycyk7dHJ5e2ZvcihuLnMoKTshKHI9bi5uKCkpLmRvbmU7KSgwLHIudmFsdWUpKHQsZSl9Y2F0Y2godCl7bi5lKHQpfWZpbmFsbHl7bi5mKCl9fX0se2tleToib25EYXRhUHJvZ3Jlc3MiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpczt0aGlzLl9yZWFkeUNhcGFiaWxpdHkucHJvbWlzZS50aGVuKChmdW5jdGlvbigpe3ZhciBuLGk9X2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIoci5fcHJvZ3Jlc3NMaXN0ZW5lcnMpO3RyeXtmb3IoaS5zKCk7IShuPWkubigpKS5kb25lOykoMCxuLnZhbHVlKSh0LGUpfWNhdGNoKHQpe2kuZSh0KX1maW5hbGx5e2kuZigpfX0pKX19LHtrZXk6Im9uRGF0YVByb2dyZXNzaXZlUmVhZCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0aGlzLl9yZWFkeUNhcGFiaWxpdHkucHJvbWlzZS50aGVuKChmdW5jdGlvbigpe3ZhciByLG49X2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIoZS5fcHJvZ3Jlc3NpdmVSZWFkTGlzdGVuZXJzKTt0cnl7Zm9yKG4ucygpOyEocj1uLm4oKSkuZG9uZTspKDAsci52YWx1ZSkodCl9Y2F0Y2godCl7bi5lKHQpfWZpbmFsbHl7bi5mKCl9fSkpfX0se2tleToib25EYXRhUHJvZ3Jlc3NpdmVEb25lIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5fcmVhZHlDYXBhYmlsaXR5LnByb21pc2UudGhlbigoZnVuY3Rpb24oKXt2YXIgZSxyPV9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyKHQuX3Byb2dyZXNzaXZlRG9uZUxpc3RlbmVycyk7dHJ5e2ZvcihyLnMoKTshKGU9ci5uKCkpLmRvbmU7KSgwLGUudmFsdWUpKCl9Y2F0Y2godCl7ci5lKHQpfWZpbmFsbHl7ci5mKCl9fSkpfX0se2tleToidHJhbnNwb3J0UmVhZHkiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5fcmVhZHlDYXBhYmlsaXR5LnJlc29sdmUoKX19LHtrZXk6InJlcXVlc3REYXRhUmFuZ2UiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7KDAsX3V0aWwudW5yZWFjaGFibGUpKCJBYnN0cmFjdCBtZXRob2QgUERGRGF0YVJhbmdlVHJhbnNwb3J0LnJlcXVlc3REYXRhUmFuZ2UiKX19LHtrZXk6ImFib3J0Iix2YWx1ZTpmdW5jdGlvbigpe319XSksdH0oKTtleHBvcnRzLlBERkRhdGFSYW5nZVRyYW5zcG9ydD1QREZEYXRhUmFuZ2VUcmFuc3BvcnQ7dmFyIFBERkRvY3VtZW50UHJveHk9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUscil7X2NsYXNzQ2FsbENoZWNrKHRoaXMsdCksdGhpcy5fcGRmSW5mbz1lLHRoaXMuX3RyYW5zcG9ydD1yfXJldHVybiBfY3JlYXRlQ2xhc3ModCxbe2tleToiYW5ub3RhdGlvblN0b3JhZ2UiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl90cmFuc3BvcnQuYW5ub3RhdGlvblN0b3JhZ2V9fSx7a2V5OiJudW1QYWdlcyIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BkZkluZm8ubnVtUGFnZXN9fSx7a2V5OiJmaW5nZXJwcmludHMiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wZGZJbmZvLmZpbmdlcnByaW50c319LHtrZXk6InN0YXRzIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4oMCxfZGlzcGxheV91dGlscy5kZXByZWNhdGVkKSgiVGhlIFBERkRvY3VtZW50UHJveHkgc3RhdHMgcHJvcGVydHkgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUuIiksdGhpcy5fdHJhbnNwb3J0LnN0YXRzfX0se2tleToiaXNQdXJlWGZhIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4oMCxfdXRpbC5zaGFkb3cpKHRoaXMsImlzUHVyZVhmYSIsISF0aGlzLl90cmFuc3BvcnQuX2h0bWxGb3JYZmEpfX0se2tleToiYWxsWGZhSHRtbCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3RyYW5zcG9ydC5faHRtbEZvclhmYX19LHtrZXk6ImdldFBhZ2UiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl90cmFuc3BvcnQuZ2V0UGFnZSh0KX19LHtrZXk6ImdldFBhZ2VJbmRleCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3RyYW5zcG9ydC5nZXRQYWdlSW5kZXgodCl9fSx7a2V5OiJnZXREZXN0aW5hdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3RyYW5zcG9ydC5nZXREZXN0aW5hdGlvbnMoKX19LHtrZXk6ImdldERlc3RpbmF0aW9uIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmdldERlc3RpbmF0aW9uKHQpfX0se2tleToiZ2V0UGFnZUxhYmVscyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmdldFBhZ2VMYWJlbHMoKX19LHtrZXk6ImdldFBhZ2VMYXlvdXQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3RyYW5zcG9ydC5nZXRQYWdlTGF5b3V0KCl9fSx7a2V5OiJnZXRQYWdlTW9kZSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmdldFBhZ2VNb2RlKCl9fSx7a2V5OiJnZXRWaWV3ZXJQcmVmZXJlbmNlcyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmdldFZpZXdlclByZWZlcmVuY2VzKCl9fSx7a2V5OiJnZXRPcGVuQWN0aW9uIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl90cmFuc3BvcnQuZ2V0T3BlbkFjdGlvbigpfX0se2tleToiZ2V0QXR0YWNobWVudHMiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3RyYW5zcG9ydC5nZXRBdHRhY2htZW50cygpfX0se2tleToiZ2V0SmF2YVNjcmlwdCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmdldEphdmFTY3JpcHQoKX19LHtrZXk6ImdldEpTQWN0aW9ucyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmdldERvY0pTQWN0aW9ucygpfX0se2tleToiZ2V0T3V0bGluZSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmdldE91dGxpbmUoKX19LHtrZXk6ImdldE9wdGlvbmFsQ29udGVudENvbmZpZyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmdldE9wdGlvbmFsQ29udGVudENvbmZpZygpfX0se2tleToiZ2V0UGVybWlzc2lvbnMiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3RyYW5zcG9ydC5nZXRQZXJtaXNzaW9ucygpfX0se2tleToiZ2V0TWV0YWRhdGEiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3RyYW5zcG9ydC5nZXRNZXRhZGF0YSgpfX0se2tleToiZ2V0TWFya0luZm8iLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3RyYW5zcG9ydC5nZXRNYXJrSW5mbygpfX0se2tleToiZ2V0RGF0YSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmdldERhdGEoKX19LHtrZXk6InNhdmVEb2N1bWVudCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LnNhdmVEb2N1bWVudCgpfX0se2tleToiZ2V0RG93bmxvYWRJbmZvIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl90cmFuc3BvcnQuZG93bmxvYWRJbmZvQ2FwYWJpbGl0eS5wcm9taXNlfX0se2tleToiY2xlYW51cCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSYmYXJndW1lbnRzWzBdO3JldHVybiB0aGlzLl90cmFuc3BvcnQuc3RhcnRDbGVhbnVwKHR8fHRoaXMuaXNQdXJlWGZhKX19LHtrZXk6ImRlc3Ryb3kiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubG9hZGluZ1Rhc2suZGVzdHJveSgpfX0se2tleToibG9hZGluZ1BhcmFtcyIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3RyYW5zcG9ydC5sb2FkaW5nUGFyYW1zfX0se2tleToibG9hZGluZ1Rhc2siLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl90cmFuc3BvcnQubG9hZGluZ1Rhc2t9fSx7a2V5OiJnZXRGaWVsZE9iamVjdHMiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3RyYW5zcG9ydC5nZXRGaWVsZE9iamVjdHMoKX19LHtrZXk6Imhhc0pTQWN0aW9ucyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0Lmhhc0pTQWN0aW9ucygpfX0se2tleToiZ2V0Q2FsY3VsYXRpb25PcmRlcklkcyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmdldENhbGN1bGF0aW9uT3JkZXJJZHMoKX19XSksdH0oKTtleHBvcnRzLlBERkRvY3VtZW50UHJveHk9UERGRG9jdW1lbnRQcm94eTt2YXIgUERGUGFnZVByb3h5PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLHIsbixpKXt2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjQmJnZvaWQgMCE9PWFyZ3VtZW50c1s0XSYmYXJndW1lbnRzWzRdO19jbGFzc0NhbGxDaGVjayh0aGlzLHQpLHRoaXMuX3BhZ2VJbmRleD1lLHRoaXMuX3BhZ2VJbmZvPXIsdGhpcy5fb3duZXJEb2N1bWVudD1pLHRoaXMuX3RyYW5zcG9ydD1uLHRoaXMuX3N0YXRzPWE/bmV3IF9kaXNwbGF5X3V0aWxzLlN0YXRUaW1lcjpudWxsLHRoaXMuX3BkZkJ1Zz1hLHRoaXMuY29tbW9uT2Jqcz1uLmNvbW1vbk9ianMsdGhpcy5vYmpzPW5ldyBQREZPYmplY3RzLHRoaXMuX2JpdG1hcHM9bmV3IFNldCx0aGlzLmNsZWFudXBBZnRlclJlbmRlcj0hMSx0aGlzLnBlbmRpbmdDbGVhbnVwPSExLHRoaXMuX2ludGVudFN0YXRlcz1uZXcgTWFwLHRoaXMuZGVzdHJveWVkPSExfXZhciBlO3JldHVybiBfY3JlYXRlQ2xhc3ModCxbe2tleToicGFnZU51bWJlciIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BhZ2VJbmRleCsxfX0se2tleToicm90YXRlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGFnZUluZm8ucm90YXRlfX0se2tleToicmVmIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGFnZUluZm8ucmVmfX0se2tleToidXNlclVuaXQiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wYWdlSW5mby51c2VyVW5pdH19LHtrZXk6InZpZXciLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wYWdlSW5mby52aWV3fX0se2tleToiZ2V0Vmlld3BvcnQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9LGU9dC5zY2FsZSxyPXQucm90YXRpb24sbj12b2lkIDA9PT1yP3RoaXMucm90YXRlOnIsaT10Lm9mZnNldFgsYT12b2lkIDA9PT1pPzA6aSxvPXQub2Zmc2V0WSxzPXZvaWQgMD09PW8/MDpvLGw9dC5kb250RmxpcCx1PXZvaWQgMCE9PWwmJmw7cmV0dXJuIG5ldyBfZGlzcGxheV91dGlscy5QYWdlVmlld3BvcnQoe3ZpZXdCb3g6dGhpcy52aWV3LHNjYWxlOmUscm90YXRpb246bixvZmZzZXRYOmEsb2Zmc2V0WTpzLGRvbnRGbGlwOnV9KX19LHtrZXk6ImdldEFubm90YXRpb25zIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PShhcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e30pLmludGVudCxlPXZvaWQgMD09PXQ/ImRpc3BsYXkiOnQscj10aGlzLl90cmFuc3BvcnQuZ2V0UmVuZGVyaW5nSW50ZW50KGUpO3JldHVybiB0aGlzLl90cmFuc3BvcnQuZ2V0QW5ub3RhdGlvbnModGhpcy5fcGFnZUluZGV4LHIucmVuZGVyaW5nSW50ZW50KX19LHtrZXk6ImdldEpTQWN0aW9ucyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmdldFBhZ2VKU0FjdGlvbnModGhpcy5fcGFnZUluZGV4KX19LHtrZXk6ImlzUHVyZVhmYSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuKDAsX3V0aWwuc2hhZG93KSh0aGlzLCJpc1B1cmVYZmEiLCEhdGhpcy5fdHJhbnNwb3J0Ll9odG1sRm9yWGZhKX19LHtrZXk6ImdldFhmYSIsdmFsdWU6KGU9X2FzeW5jVG9HZW5lcmF0b3IoX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgZTtyZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0LmFicnVwdCgicmV0dXJuIiwobnVsbD09PShlPXRoaXMuX3RyYW5zcG9ydC5faHRtbEZvclhmYSl8fHZvaWQgMD09PWU/dm9pZCAwOmUuY2hpbGRyZW5bdGhpcy5fcGFnZUluZGV4XSl8fG51bGwpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpLGZ1bmN0aW9uKCl7cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfSl9LHtrZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUscixuPXRoaXMsaT10LmNhbnZhc0NvbnRleHQsYT10LnZpZXdwb3J0LG89dC5pbnRlbnQscz12b2lkIDA9PT1vPyJkaXNwbGF5IjpvLGw9dC5hbm5vdGF0aW9uTW9kZSx1PXZvaWQgMD09PWw/X3V0aWwuQW5ub3RhdGlvbk1vZGUuRU5BQkxFOmwsYz10LnRyYW5zZm9ybSxoPXZvaWQgMD09PWM/bnVsbDpjLGY9dC5jYW52YXNGYWN0b3J5LGQ9dm9pZCAwPT09Zj9udWxsOmYscD10LmJhY2tncm91bmQsdj12b2lkIDA9PT1wP251bGw6cCx5PXQub3B0aW9uYWxDb250ZW50Q29uZmlnUHJvbWlzZSxtPXZvaWQgMD09PXk/bnVsbDp5LGc9dC5hbm5vdGF0aW9uQ2FudmFzTWFwLGI9dm9pZCAwPT09Zz9udWxsOmcsXz10LnBhZ2VDb2xvcnMsdz12b2lkIDA9PT1fP251bGw6XyxBPXQucHJpbnRBbm5vdGF0aW9uU3RvcmFnZSxrPXZvaWQgMD09PUE/bnVsbDpBO251bGw9PT0oZT10aGlzLl9zdGF0cyl8fHZvaWQgMD09PWV8fGUudGltZSgiT3ZlcmFsbCIpO3ZhciBTPXRoaXMuX3RyYW5zcG9ydC5nZXRSZW5kZXJpbmdJbnRlbnQocyx1LGspO3RoaXMucGVuZGluZ0NsZWFudXA9ITEsbXx8KG09dGhpcy5fdHJhbnNwb3J0LmdldE9wdGlvbmFsQ29udGVudENvbmZpZygpKTt2YXIgeD10aGlzLl9pbnRlbnRTdGF0ZXMuZ2V0KFMuY2FjaGVLZXkpO3h8fCh4PU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5faW50ZW50U3RhdGVzLnNldChTLmNhY2hlS2V5LHgpKSx4LnN0cmVhbVJlYWRlckNhbmNlbFRpbWVvdXQmJihjbGVhclRpbWVvdXQoeC5zdHJlYW1SZWFkZXJDYW5jZWxUaW1lb3V0KSx4LnN0cmVhbVJlYWRlckNhbmNlbFRpbWVvdXQ9bnVsbCk7dmFyIEUsUD1kfHxuZXcgRGVmYXVsdENhbnZhc0ZhY3Rvcnkoe293bmVyRG9jdW1lbnQ6dGhpcy5fb3duZXJEb2N1bWVudH0pLFQ9ISEoUy5yZW5kZXJpbmdJbnRlbnQmX3V0aWwuUmVuZGVyaW5nSW50ZW50RmxhZy5QUklOVCk7eC5kaXNwbGF5UmVhZHlDYXBhYmlsaXR5fHwoeC5kaXNwbGF5UmVhZHlDYXBhYmlsaXR5PSgwLF91dGlsLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpLHgub3BlcmF0b3JMaXN0PXtmbkFycmF5OltdLGFyZ3NBcnJheTpbXSxsYXN0Q2h1bms6ITEsc2VwYXJhdGVBbm5vdHM6bnVsbH0sbnVsbD09PShFPXRoaXMuX3N0YXRzKXx8dm9pZCAwPT09RXx8RS50aW1lKCJQYWdlIFJlcXVlc3QiKSx0aGlzLl9wdW1wT3BlcmF0b3JMaXN0KFMpKTt2YXIgQz1mdW5jdGlvbih0KXt2YXIgZSxyO3gucmVuZGVyVGFza3MuZGVsZXRlKE8pLChuLmNsZWFudXBBZnRlclJlbmRlcnx8VCkmJihuLnBlbmRpbmdDbGVhbnVwPSEwKSxuLl90cnlDbGVhbnVwKCksdD8oTy5jYXBhYmlsaXR5LnJlamVjdCh0KSxuLl9hYm9ydE9wZXJhdG9yTGlzdCh7aW50ZW50U3RhdGU6eCxyZWFzb246dCBpbnN0YW5jZW9mIEVycm9yP3Q6bmV3IEVycm9yKHQpfSkpOk8uY2FwYWJpbGl0eS5yZXNvbHZlKCksbnVsbD09PShlPW4uX3N0YXRzKXx8dm9pZCAwPT09ZXx8ZS50aW1lRW5kKCJSZW5kZXJpbmciKSxudWxsPT09KHI9bi5fc3RhdHMpfHx2b2lkIDA9PT1yfHxyLnRpbWVFbmQoIk92ZXJhbGwiKX0sTz1uZXcgSW50ZXJuYWxSZW5kZXJUYXNrKHtjYWxsYmFjazpDLHBhcmFtczp7Y2FudmFzQ29udGV4dDppLHZpZXdwb3J0OmEsdHJhbnNmb3JtOmgsYmFja2dyb3VuZDp2fSxvYmpzOnRoaXMub2Jqcyxjb21tb25PYmpzOnRoaXMuY29tbW9uT2Jqcyxhbm5vdGF0aW9uQ2FudmFzTWFwOmIsb3BlcmF0b3JMaXN0Ongub3BlcmF0b3JMaXN0LHBhZ2VJbmRleDp0aGlzLl9wYWdlSW5kZXgsY2FudmFzRmFjdG9yeTpQLHVzZVJlcXVlc3RBbmltYXRpb25GcmFtZTohVCxwZGZCdWc6dGhpcy5fcGRmQnVnLHBhZ2VDb2xvcnM6d30pOygocj14KS5yZW5kZXJUYXNrc3x8KHIucmVuZGVyVGFza3M9bmV3IFNldCkpLmFkZChPKTt2YXIgRj1PLnRhc2s7cmV0dXJuIFByb21pc2UuYWxsKFt4LmRpc3BsYXlSZWFkeUNhcGFiaWxpdHkucHJvbWlzZSxtXSkudGhlbigoZnVuY3Rpb24odCl7dmFyIGUscj1fc2xpY2VkVG9BcnJheSh0LDIpLGk9clswXSxhPXJbMV07bi5wZW5kaW5nQ2xlYW51cD9DKCk6KG51bGw9PT0oZT1uLl9zdGF0cyl8fHZvaWQgMD09PWV8fGUudGltZSgiUmVuZGVyaW5nIiksTy5pbml0aWFsaXplR3JhcGhpY3Moe3RyYW5zcGFyZW5jeTppLG9wdGlvbmFsQ29udGVudENvbmZpZzphfSksTy5vcGVyYXRvckxpc3RDaGFuZ2VkKCkpfSkpLmNhdGNoKEMpLEZ9fSx7a2V5OiJnZXRPcGVyYXRvckxpc3QiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQsZSxyLG49YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9LGk9bi5pbnRlbnQsYT12b2lkIDA9PT1pPyJkaXNwbGF5IjppLG89bi5hbm5vdGF0aW9uTW9kZSxzPXZvaWQgMD09PW8/X3V0aWwuQW5ub3RhdGlvbk1vZGUuRU5BQkxFOm8sbD1uLnByaW50QW5ub3RhdGlvblN0b3JhZ2UsdT12b2lkIDA9PT1sP251bGw6bCxjPXRoaXMuX3RyYW5zcG9ydC5nZXRSZW5kZXJpbmdJbnRlbnQoYSxzLHUsITApLGg9dGhpcy5faW50ZW50U3RhdGVzLmdldChjLmNhY2hlS2V5KTtyZXR1cm4gaHx8KGg9T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLl9pbnRlbnRTdGF0ZXMuc2V0KGMuY2FjaGVLZXksaCkpLGgub3BMaXN0UmVhZENhcGFiaWxpdHl8fCgodD1PYmplY3QuY3JlYXRlKG51bGwpKS5vcGVyYXRvckxpc3RDaGFuZ2VkPWZ1bmN0aW9uKCl7aC5vcGVyYXRvckxpc3QubGFzdENodW5rJiYoaC5vcExpc3RSZWFkQ2FwYWJpbGl0eS5yZXNvbHZlKGgub3BlcmF0b3JMaXN0KSxoLnJlbmRlclRhc2tzLmRlbGV0ZSh0KSl9LGgub3BMaXN0UmVhZENhcGFiaWxpdHk9KDAsX3V0aWwuY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkpKCksKChlPWgpLnJlbmRlclRhc2tzfHwoZS5yZW5kZXJUYXNrcz1uZXcgU2V0KSkuYWRkKHQpLGgub3BlcmF0b3JMaXN0PXtmbkFycmF5OltdLGFyZ3NBcnJheTpbXSxsYXN0Q2h1bms6ITEsc2VwYXJhdGVBbm5vdHM6bnVsbH0sbnVsbD09PShyPXRoaXMuX3N0YXRzKXx8dm9pZCAwPT09cnx8ci50aW1lKCJQYWdlIFJlcXVlc3QiKSx0aGlzLl9wdW1wT3BlcmF0b3JMaXN0KGMpKSxoLm9wTGlzdFJlYWRDYXBhYmlsaXR5LnByb21pc2V9fSx7a2V5OiJzdHJlYW1UZXh0Q29udGVudCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e30sZT10LmRpc2FibGVDb21iaW5lVGV4dEl0ZW1zLHI9dm9pZCAwIT09ZSYmZSxuPXQuaW5jbHVkZU1hcmtlZENvbnRlbnQsaT12b2lkIDAhPT1uJiZuO3JldHVybiB0aGlzLl90cmFuc3BvcnQubWVzc2FnZUhhbmRsZXIuc2VuZFdpdGhTdHJlYW0oIkdldFRleHRDb250ZW50Iix7cGFnZUluZGV4OnRoaXMuX3BhZ2VJbmRleCxjb21iaW5lVGV4dEl0ZW1zOiEwIT09cixpbmNsdWRlTWFya2VkQ29udGVudDohMD09PWl9LHtoaWdoV2F0ZXJNYXJrOjEwMCxzaXplOmZ1bmN0aW9uKHQpe3JldHVybiB0Lml0ZW1zLmxlbmd0aH19KX19LHtrZXk6ImdldFRleHRDb250ZW50Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7fTtpZih0aGlzLl90cmFuc3BvcnQuX2h0bWxGb3JYZmEpcmV0dXJuIHRoaXMuZ2V0WGZhKCkudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIF94ZmFfdGV4dC5YZmFUZXh0LnRleHRDb250ZW50KHQpfSkpO3ZhciBlPXRoaXMuc3RyZWFtVGV4dENvbnRlbnQodCk7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbih0LHIpe3ZhciBuPWUuZ2V0UmVhZGVyKCksaT17aXRlbXM6W10sc3R5bGVzOk9iamVjdC5jcmVhdGUobnVsbCl9OyFmdW5jdGlvbiBlKCl7bi5yZWFkKCkudGhlbigoZnVuY3Rpb24ocil7dmFyIG4sYT1yLnZhbHVlO3IuZG9uZT90KGkpOihPYmplY3QuYXNzaWduKGkuc3R5bGVzLGEuc3R5bGVzKSwobj1pLml0ZW1zKS5wdXNoLmFwcGx5KG4sX3RvQ29uc3VtYWJsZUFycmF5KGEuaXRlbXMpKSxlKCkpfSkscil9KCl9KSl9fSx7a2V5OiJnZXRTdHJ1Y3RUcmVlIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl90cmFuc3BvcnQuZ2V0U3RydWN0VHJlZSh0aGlzLl9wYWdlSW5kZXgpfX0se2tleToiX2Rlc3Ryb3kiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5kZXN0cm95ZWQ9ITA7dmFyIHQsZT1bXSxyPV9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyKHRoaXMuX2ludGVudFN0YXRlcy52YWx1ZXMoKSk7dHJ5e2ZvcihyLnMoKTshKHQ9ci5uKCkpLmRvbmU7KXt2YXIgbj10LnZhbHVlO2lmKHRoaXMuX2Fib3J0T3BlcmF0b3JMaXN0KHtpbnRlbnRTdGF0ZTpuLHJlYXNvbjpuZXcgRXJyb3IoIlBhZ2Ugd2FzIGRlc3Ryb3llZC4iKSxmb3JjZTohMH0pLCFuLm9wTGlzdFJlYWRDYXBhYmlsaXR5KXt2YXIgaSxhPV9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyKG4ucmVuZGVyVGFza3MpO3RyeXtmb3IoYS5zKCk7IShpPWEubigpKS5kb25lOyl7dmFyIG89aS52YWx1ZTtlLnB1c2goby5jb21wbGV0ZWQpLG8uY2FuY2VsKCl9fWNhdGNoKHQpe2EuZSh0KX1maW5hbGx5e2EuZigpfX19fWNhdGNoKHQpe3IuZSh0KX1maW5hbGx5e3IuZigpfXRoaXMub2Jqcy5jbGVhcigpO3ZhciBzLGw9X2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIodGhpcy5fYml0bWFwcyk7dHJ5e2ZvcihsLnMoKTshKHM9bC5uKCkpLmRvbmU7KXMudmFsdWUuY2xvc2UoKX1jYXRjaCh0KXtsLmUodCl9ZmluYWxseXtsLmYoKX1yZXR1cm4gdGhpcy5fYml0bWFwcy5jbGVhcigpLHRoaXMucGVuZGluZ0NsZWFudXA9ITEsUHJvbWlzZS5hbGwoZSl9fSx7a2V5OiJjbGVhbnVwIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdJiZhcmd1bWVudHNbMF07cmV0dXJuIHRoaXMucGVuZGluZ0NsZWFudXA9ITAsdGhpcy5fdHJ5Q2xlYW51cCh0KX19LHtrZXk6Il90cnlDbGVhbnVwIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdJiZhcmd1bWVudHNbMF07aWYoIXRoaXMucGVuZGluZ0NsZWFudXApcmV0dXJuITE7dmFyIGUscj1fY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcih0aGlzLl9pbnRlbnRTdGF0ZXMudmFsdWVzKCkpO3RyeXtmb3Ioci5zKCk7IShlPXIubigpKS5kb25lOyl7dmFyIG49ZS52YWx1ZSxpPW4ucmVuZGVyVGFza3MsYT1uLm9wZXJhdG9yTGlzdDtpZihpLnNpemU+MHx8IWEubGFzdENodW5rKXJldHVybiExfX1jYXRjaCh0KXtyLmUodCl9ZmluYWxseXtyLmYoKX10aGlzLl9pbnRlbnRTdGF0ZXMuY2xlYXIoKSx0aGlzLm9ianMuY2xlYXIoKSx0JiZ0aGlzLl9zdGF0cyYmKHRoaXMuX3N0YXRzPW5ldyBfZGlzcGxheV91dGlscy5TdGF0VGltZXIpO3ZhciBvLHM9X2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIodGhpcy5fYml0bWFwcyk7dHJ5e2ZvcihzLnMoKTshKG89cy5uKCkpLmRvbmU7KW8udmFsdWUuY2xvc2UoKX1jYXRjaCh0KXtzLmUodCl9ZmluYWxseXtzLmYoKX1yZXR1cm4gdGhpcy5fYml0bWFwcy5jbGVhcigpLHRoaXMucGVuZGluZ0NsZWFudXA9ITEsITB9fSx7a2V5OiJfc3RhcnRSZW5kZXJQYWdlIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciByLG4saT10aGlzLl9pbnRlbnRTdGF0ZXMuZ2V0KGUpO2kmJihudWxsPT09KHI9dGhpcy5fc3RhdHMpfHx2b2lkIDA9PT1yfHxyLnRpbWVFbmQoIlBhZ2UgUmVxdWVzdCIpLG51bGw9PT0obj1pLmRpc3BsYXlSZWFkeUNhcGFiaWxpdHkpfHx2b2lkIDA9PT1ufHxuLnJlc29sdmUodCkpfX0se2tleToiX3JlbmRlclBhZ2VDaHVuayIsdmFsdWU6ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9MCxuPXQubGVuZ3RoO3I8bjtyKyspZS5vcGVyYXRvckxpc3QuZm5BcnJheS5wdXNoKHQuZm5BcnJheVtyXSksZS5vcGVyYXRvckxpc3QuYXJnc0FycmF5LnB1c2godC5hcmdzQXJyYXlbcl0pO2Uub3BlcmF0b3JMaXN0Lmxhc3RDaHVuaz10Lmxhc3RDaHVuayxlLm9wZXJhdG9yTGlzdC5zZXBhcmF0ZUFubm90cz10LnNlcGFyYXRlQW5ub3RzO3ZhciBpLGE9X2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIoZS5yZW5kZXJUYXNrcyk7dHJ5e2ZvcihhLnMoKTshKGk9YS5uKCkpLmRvbmU7KWkudmFsdWUub3BlcmF0b3JMaXN0Q2hhbmdlZCgpfWNhdGNoKHQpe2EuZSh0KX1maW5hbGx5e2EuZigpfXQubGFzdENodW5rJiZ0aGlzLl90cnlDbGVhbnVwKCl9fSx7a2V5OiJfcHVtcE9wZXJhdG9yTGlzdCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxyPXQucmVuZGVyaW5nSW50ZW50LG49dC5jYWNoZUtleSxpPXQuYW5ub3RhdGlvblN0b3JhZ2VNYXAsYT10aGlzLl90cmFuc3BvcnQubWVzc2FnZUhhbmRsZXIuc2VuZFdpdGhTdHJlYW0oIkdldE9wZXJhdG9yTGlzdCIse3BhZ2VJbmRleDp0aGlzLl9wYWdlSW5kZXgsaW50ZW50OnIsY2FjaGVLZXk6bixhbm5vdGF0aW9uU3RvcmFnZTppfSkuZ2V0UmVhZGVyKCksbz10aGlzLl9pbnRlbnRTdGF0ZXMuZ2V0KG4pO28uc3RyZWFtUmVhZGVyPWEsZnVuY3Rpb24gdCgpe2EucmVhZCgpLnRoZW4oKGZ1bmN0aW9uKHIpe3ZhciBuPXIudmFsdWU7ci5kb25lP28uc3RyZWFtUmVhZGVyPW51bGw6ZS5fdHJhbnNwb3J0LmRlc3Ryb3llZHx8KGUuX3JlbmRlclBhZ2VDaHVuayhuLG8pLHQoKSl9KSwoZnVuY3Rpb24odCl7aWYoby5zdHJlYW1SZWFkZXI9bnVsbCwhZS5fdHJhbnNwb3J0LmRlc3Ryb3llZCl7aWYoby5vcGVyYXRvckxpc3Qpe28ub3BlcmF0b3JMaXN0Lmxhc3RDaHVuaz0hMDt2YXIgcixuPV9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyKG8ucmVuZGVyVGFza3MpO3RyeXtmb3Iobi5zKCk7IShyPW4ubigpKS5kb25lOylyLnZhbHVlLm9wZXJhdG9yTGlzdENoYW5nZWQoKX1jYXRjaCh0KXtuLmUodCl9ZmluYWxseXtuLmYoKX1lLl90cnlDbGVhbnVwKCl9aWYoby5kaXNwbGF5UmVhZHlDYXBhYmlsaXR5KW8uZGlzcGxheVJlYWR5Q2FwYWJpbGl0eS5yZWplY3QodCk7ZWxzZXtpZighby5vcExpc3RSZWFkQ2FwYWJpbGl0eSl0aHJvdyB0O28ub3BMaXN0UmVhZENhcGFiaWxpdHkucmVqZWN0KHQpfX19KSl9KCl9fSx7a2V5OiJfYWJvcnRPcGVyYXRvckxpc3QiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMscj10LmludGVudFN0YXRlLG49dC5yZWFzb24saT10LmZvcmNlLGE9dm9pZCAwIT09aSYmaTtpZihyLnN0cmVhbVJlYWRlcil7aWYoci5zdHJlYW1SZWFkZXJDYW5jZWxUaW1lb3V0JiYoY2xlYXJUaW1lb3V0KHIuc3RyZWFtUmVhZGVyQ2FuY2VsVGltZW91dCksci5zdHJlYW1SZWFkZXJDYW5jZWxUaW1lb3V0PW51bGwpLCFhKXtpZihyLnJlbmRlclRhc2tzLnNpemU+MClyZXR1cm47aWYobiBpbnN0YW5jZW9mIF9kaXNwbGF5X3V0aWxzLlJlbmRlcmluZ0NhbmNlbGxlZEV4Y2VwdGlvbil7dmFyIG89UkVOREVSSU5HX0NBTkNFTExFRF9USU1FT1VUO3JldHVybiBuLmV4dHJhRGVsYXk+MCYmbi5leHRyYURlbGF5PDFlMyYmKG8rPW4uZXh0cmFEZWxheSksdm9pZChyLnN0cmVhbVJlYWRlckNhbmNlbFRpbWVvdXQ9c2V0VGltZW91dCgoZnVuY3Rpb24oKXtyLnN0cmVhbVJlYWRlckNhbmNlbFRpbWVvdXQ9bnVsbCxlLl9hYm9ydE9wZXJhdG9yTGlzdCh7aW50ZW50U3RhdGU6cixyZWFzb246bixmb3JjZTohMH0pfSksbykpfX1pZihyLnN0cmVhbVJlYWRlci5jYW5jZWwobmV3IF91dGlsLkFib3J0RXhjZXB0aW9uKG4ubWVzc2FnZSkpLmNhdGNoKChmdW5jdGlvbigpe30pKSxyLnN0cmVhbVJlYWRlcj1udWxsLCF0aGlzLl90cmFuc3BvcnQuZGVzdHJveWVkKXt2YXIgcyxsPV9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyKHRoaXMuX2ludGVudFN0YXRlcyk7dHJ5e2ZvcihsLnMoKTshKHM9bC5uKCkpLmRvbmU7KXt2YXIgdT1fc2xpY2VkVG9BcnJheShzLnZhbHVlLDIpLGM9dVswXTtpZih1WzFdPT09cil7dGhpcy5faW50ZW50U3RhdGVzLmRlbGV0ZShjKTticmVha319fWNhdGNoKHQpe2wuZSh0KX1maW5hbGx5e2wuZigpfXRoaXMuY2xlYW51cCgpfX19fSx7a2V5OiJzdGF0cyIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3N0YXRzfX1dKSx0fSgpO2V4cG9ydHMuUERGUGFnZVByb3h5PVBERlBhZ2VQcm94eTt2YXIgX2xpc3RlbmVycz1uZXcgV2Vha01hcCxfZGVmZXJyZWQ9bmV3IFdlYWtNYXAsTG9vcGJhY2tQb3J0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe19jbGFzc0NhbGxDaGVjayh0aGlzLHQpLF9jbGFzc1ByaXZhdGVGaWVsZEluaXRTcGVjKHRoaXMsX2xpc3RlbmVycyx7d3JpdGFibGU6ITAsdmFsdWU6W119KSxfY2xhc3NQcml2YXRlRmllbGRJbml0U3BlYyh0aGlzLF9kZWZlcnJlZCx7d3JpdGFibGU6ITAsdmFsdWU6UHJvbWlzZS5yZXNvbHZlKCl9KX1yZXR1cm4gX2NyZWF0ZUNsYXNzKHQsW3trZXk6InBvc3RNZXNzYWdlIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciByPXRoaXMsbj17ZGF0YTpzdHJ1Y3R1cmVkQ2xvbmUodCxlKX07X2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsX2RlZmVycmVkKS50aGVuKChmdW5jdGlvbigpe3ZhciB0LGU9X2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIoX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHIsX2xpc3RlbmVycykpO3RyeXtmb3IoZS5zKCk7ISh0PWUubigpKS5kb25lOyl0LnZhbHVlLmNhbGwocixuKX1jYXRjaCh0KXtlLmUodCl9ZmluYWxseXtlLmYoKX19KSl9fSx7a2V5OiJhZGRFdmVudExpc3RlbmVyIix2YWx1ZTpmdW5jdGlvbih0LGUpe19jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLF9saXN0ZW5lcnMpLnB1c2goZSl9fSx7a2V5OiJyZW1vdmVFdmVudExpc3RlbmVyIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciByPV9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLF9saXN0ZW5lcnMpLmluZGV4T2YoZSk7X2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsX2xpc3RlbmVycykuc3BsaWNlKHIsMSl9fSx7a2V5OiJ0ZXJtaW5hdGUiLHZhbHVlOmZ1bmN0aW9uKCl7X2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsX2xpc3RlbmVycykubGVuZ3RoPTB9fV0pLHR9KCk7ZXhwb3J0cy5Mb29wYmFja1BvcnQ9TG9vcGJhY2tQb3J0O3ZhciBQREZXb3JrZXJVdGlsPXtpc1dvcmtlckRpc2FibGVkOiExLGZhbGxiYWNrV29ya2VyU3JjOm51bGwsZmFrZVdvcmtlcklkOjB9O2lmKGV4cG9ydHMuUERGV29ya2VyVXRpbD1QREZXb3JrZXJVdGlsLF9pc19ub2RlLmlzTm9kZUpTJiYiZnVuY3Rpb24iPT10eXBlb2YgcmVxdWlyZSlQREZXb3JrZXJVdGlsLmlzV29ya2VyRGlzYWJsZWQ9ITAsUERGV29ya2VyVXRpbC5mYWxsYmFja1dvcmtlclNyYz0iLi9wZGYud29ya2VyLmpzIjtlbHNlIGlmKCJvYmplY3QiPT09KCJ1bmRlZmluZWQiPT10eXBlb2YgZG9jdW1lbnQ/InVuZGVmaW5lZCI6X3R5cGVvZihkb2N1bWVudCkpKXt2YXIgX2RvY3VtZW50LF9kb2N1bWVudCRjdXJyZW50U2NyaSxwZGZqc0ZpbGVQYXRoPW51bGw9PT0oX2RvY3VtZW50PWRvY3VtZW50KXx8dm9pZCAwPT09X2RvY3VtZW50fHxudWxsPT09KF9kb2N1bWVudCRjdXJyZW50U2NyaT1fZG9jdW1lbnQuY3VycmVudFNjcmlwdCl8fHZvaWQgMD09PV9kb2N1bWVudCRjdXJyZW50U2NyaT92b2lkIDA6X2RvY3VtZW50JGN1cnJlbnRTY3JpLnNyYztwZGZqc0ZpbGVQYXRoJiYoUERGV29ya2VyVXRpbC5mYWxsYmFja1dvcmtlclNyYz1wZGZqc0ZpbGVQYXRoLnJlcGxhY2UoLyhcLig/Om1pblwuKT9qcykoXD8uKik/JC9pLCIud29ya2VyJDEkMiIpKX1QREZXb3JrZXJVdGlsLmlzU2FtZU9yaWdpbj1mdW5jdGlvbih0LGUpe3ZhciByO3RyeXtpZighKHI9bmV3IFVSTCh0KSkub3JpZ2lufHwibnVsbCI9PT1yLm9yaWdpbilyZXR1cm4hMX1jYXRjaCh0KXtyZXR1cm4hMX12YXIgbj1uZXcgVVJMKGUscik7cmV0dXJuIHIub3JpZ2luPT09bi5vcmlnaW59LFBERldvcmtlclV0aWwuY3JlYXRlQ0ROV3JhcHBlcj1mdW5jdGlvbih0KXt2YXIgZT0naW1wb3J0U2NyaXB0cygiJy5jb25jYXQodCwnIik7Jyk7cmV0dXJuIFVSTC5jcmVhdGVPYmplY3RVUkwobmV3IEJsb2IoW2VdKSl9O3ZhciBQREZXb3JrZXI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBQREZXb3JrZXIoKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e30sZT10Lm5hbWUscj12b2lkIDA9PT1lP251bGw6ZSxuPXQucG9ydCxpPXZvaWQgMD09PW4/bnVsbDpuLGE9dC52ZXJib3NpdHksbz12b2lkIDA9PT1hPygwLF91dGlsLmdldFZlcmJvc2l0eUxldmVsKSgpOmE7aWYoX2NsYXNzQ2FsbENoZWNrKHRoaXMsUERGV29ya2VyKSxpJiZfY2xhc3NTdGF0aWNQcml2YXRlRmllbGRTcGVjR2V0KFBERldvcmtlcixQREZXb3JrZXIsX3dvcmtlclBvcnRzKS5oYXMoaSkpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgdXNlIG1vcmUgdGhhbiBvbmUgUERGV29ya2VyIHBlciBwb3J0LiIpO2lmKHRoaXMubmFtZT1yLHRoaXMuZGVzdHJveWVkPSExLHRoaXMudmVyYm9zaXR5PW8sdGhpcy5fcmVhZHlDYXBhYmlsaXR5PSgwLF91dGlsLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpLHRoaXMuX3BvcnQ9bnVsbCx0aGlzLl93ZWJXb3JrZXI9bnVsbCx0aGlzLl9tZXNzYWdlSGFuZGxlcj1udWxsLGkpcmV0dXJuIF9jbGFzc1N0YXRpY1ByaXZhdGVGaWVsZFNwZWNHZXQoUERGV29ya2VyLFBERldvcmtlcixfd29ya2VyUG9ydHMpLnNldChpLHRoaXMpLHZvaWQgdGhpcy5faW5pdGlhbGl6ZUZyb21Qb3J0KGkpO3RoaXMuX2luaXRpYWxpemUoKX1yZXR1cm4gX2NyZWF0ZUNsYXNzKFBERldvcmtlcixbe2tleToicHJvbWlzZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JlYWR5Q2FwYWJpbGl0eS5wcm9taXNlfX0se2tleToicG9ydCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BvcnR9fSx7a2V5OiJtZXNzYWdlSGFuZGxlciIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21lc3NhZ2VIYW5kbGVyfX0se2tleToiX2luaXRpYWxpemVGcm9tUG9ydCIsdmFsdWU6ZnVuY3Rpb24odCl7dGhpcy5fcG9ydD10LHRoaXMuX21lc3NhZ2VIYW5kbGVyPW5ldyBfbWVzc2FnZV9oYW5kbGVyLk1lc3NhZ2VIYW5kbGVyKCJtYWluIiwid29ya2VyIix0KSx0aGlzLl9tZXNzYWdlSGFuZGxlci5vbigicmVhZHkiLChmdW5jdGlvbigpe30pKSx0aGlzLl9yZWFkeUNhcGFiaWxpdHkucmVzb2x2ZSgpLHRoaXMuX21lc3NhZ2VIYW5kbGVyLnNlbmQoImNvbmZpZ3VyZSIse3ZlcmJvc2l0eTp0aGlzLnZlcmJvc2l0eX0pfX0se2tleToiX2luaXRpYWxpemUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztpZighUERGV29ya2VyVXRpbC5pc1dvcmtlckRpc2FibGVkJiYhUERGV29ya2VyLl9tYWluVGhyZWFkV29ya2VyTWVzc2FnZUhhbmRsZXIpe3ZhciBlPVBERldvcmtlci53b3JrZXJTcmM7dHJ5e1BERldvcmtlclV0aWwuaXNTYW1lT3JpZ2luKHdpbmRvdy5sb2NhdGlvbi5ocmVmLGUpfHwoZT1QREZXb3JrZXJVdGlsLmNyZWF0ZUNETldyYXBwZXIobmV3IFVSTChlLHdpbmRvdy5sb2NhdGlvbikuaHJlZikpO3ZhciByPW5ldyBXb3JrZXIoZSksbj1uZXcgX21lc3NhZ2VfaGFuZGxlci5NZXNzYWdlSGFuZGxlcigibWFpbiIsIndvcmtlciIsciksaT1mdW5jdGlvbigpe3IucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZXJyb3IiLGEpLG4uZGVzdHJveSgpLHIudGVybWluYXRlKCksdC5kZXN0cm95ZWQ/dC5fcmVhZHlDYXBhYmlsaXR5LnJlamVjdChuZXcgRXJyb3IoIldvcmtlciB3YXMgZGVzdHJveWVkIikpOnQuX3NldHVwRmFrZVdvcmtlcigpfSxhPWZ1bmN0aW9uKCl7dC5fd2ViV29ya2VyfHxpKCl9O3IuYWRkRXZlbnRMaXN0ZW5lcigiZXJyb3IiLGEpLG4ub24oInRlc3QiLChmdW5jdGlvbihlKXtyLnJlbW92ZUV2ZW50TGlzdGVuZXIoImVycm9yIixhKSx0LmRlc3Ryb3llZD9pKCk6ZT8odC5fbWVzc2FnZUhhbmRsZXI9bix0Ll9wb3J0PXIsdC5fd2ViV29ya2VyPXIsdC5fcmVhZHlDYXBhYmlsaXR5LnJlc29sdmUoKSxuLnNlbmQoImNvbmZpZ3VyZSIse3ZlcmJvc2l0eTp0LnZlcmJvc2l0eX0pKToodC5fc2V0dXBGYWtlV29ya2VyKCksbi5kZXN0cm95KCksci50ZXJtaW5hdGUoKSl9KSksbi5vbigicmVhZHkiLChmdW5jdGlvbihlKXtpZihyLnJlbW92ZUV2ZW50TGlzdGVuZXIoImVycm9yIixhKSx0LmRlc3Ryb3llZClpKCk7ZWxzZSB0cnl7bygpfWNhdGNoKGUpe3QuX3NldHVwRmFrZVdvcmtlcigpfX0pKTt2YXIgbz1mdW5jdGlvbigpe3ZhciB0PW5ldyBVaW50OEFycmF5O24uc2VuZCgidGVzdCIsdCxbdC5idWZmZXJdKX07cmV0dXJuIHZvaWQgbygpfWNhdGNoKHQpeygwLF91dGlsLmluZm8pKCJUaGUgd29ya2VyIGhhcyBiZWVuIGRpc2FibGVkLiIpfX10aGlzLl9zZXR1cEZha2VXb3JrZXIoKX19LHtrZXk6Il9zZXR1cEZha2VXb3JrZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztQREZXb3JrZXJVdGlsLmlzV29ya2VyRGlzYWJsZWR8fCgoMCxfdXRpbC53YXJuKSgiU2V0dGluZyB1cCBmYWtlIHdvcmtlci4iKSxQREZXb3JrZXJVdGlsLmlzV29ya2VyRGlzYWJsZWQ9ITApLFBERldvcmtlci5fc2V0dXBGYWtlV29ya2VyR2xvYmFsLnRoZW4oKGZ1bmN0aW9uKGUpe2lmKHQuZGVzdHJveWVkKXQuX3JlYWR5Q2FwYWJpbGl0eS5yZWplY3QobmV3IEVycm9yKCJXb3JrZXIgd2FzIGRlc3Ryb3llZCIpKTtlbHNle3ZhciByPW5ldyBMb29wYmFja1BvcnQ7dC5fcG9ydD1yO3ZhciBuPSJmYWtlIi5jb25jYXQoUERGV29ya2VyVXRpbC5mYWtlV29ya2VySWQrKyksaT1uZXcgX21lc3NhZ2VfaGFuZGxlci5NZXNzYWdlSGFuZGxlcihuKyJfd29ya2VyIixuLHIpO2Uuc2V0dXAoaSxyKTt2YXIgYT1uZXcgX21lc3NhZ2VfaGFuZGxlci5NZXNzYWdlSGFuZGxlcihuLG4rIl93b3JrZXIiLHIpO3QuX21lc3NhZ2VIYW5kbGVyPWEsdC5fcmVhZHlDYXBhYmlsaXR5LnJlc29sdmUoKSxhLnNlbmQoImNvbmZpZ3VyZSIse3ZlcmJvc2l0eTp0LnZlcmJvc2l0eX0pfX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7dC5fcmVhZHlDYXBhYmlsaXR5LnJlamVjdChuZXcgRXJyb3IoJ1NldHRpbmcgdXAgZmFrZSB3b3JrZXIgZmFpbGVkOiAiJy5jb25jYXQoZS5tZXNzYWdlLCciLicpKSl9KSl9fSx7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZGVzdHJveWVkPSEwLHRoaXMuX3dlYldvcmtlciYmKHRoaXMuX3dlYldvcmtlci50ZXJtaW5hdGUoKSx0aGlzLl93ZWJXb3JrZXI9bnVsbCksX2NsYXNzU3RhdGljUHJpdmF0ZUZpZWxkU3BlY0dldChQREZXb3JrZXIsUERGV29ya2VyLF93b3JrZXJQb3J0cykuZGVsZXRlKHRoaXMuX3BvcnQpLHRoaXMuX3BvcnQ9bnVsbCx0aGlzLl9tZXNzYWdlSGFuZGxlciYmKHRoaXMuX21lc3NhZ2VIYW5kbGVyLmRlc3Ryb3koKSx0aGlzLl9tZXNzYWdlSGFuZGxlcj1udWxsKX19XSxbe2tleToiZnJvbVBvcnQiLHZhbHVlOmZ1bmN0aW9uKHQpe2lmKG51bGw9PXR8fCF0LnBvcnQpdGhyb3cgbmV3IEVycm9yKCJQREZXb3JrZXIuZnJvbVBvcnQgLSBpbnZhbGlkIG1ldGhvZCBzaWduYXR1cmUuIik7cmV0dXJuIF9jbGFzc1N0YXRpY1ByaXZhdGVGaWVsZFNwZWNHZXQodGhpcyxQREZXb3JrZXIsX3dvcmtlclBvcnRzKS5oYXModC5wb3J0KT9fY2xhc3NTdGF0aWNQcml2YXRlRmllbGRTcGVjR2V0KHRoaXMsUERGV29ya2VyLF93b3JrZXJQb3J0cykuZ2V0KHQucG9ydCk6bmV3IFBERldvcmtlcih0KX19LHtrZXk6IndvcmtlclNyYyIsZ2V0OmZ1bmN0aW9uKCl7aWYoX3dvcmtlcl9vcHRpb25zLkdsb2JhbFdvcmtlck9wdGlvbnMud29ya2VyU3JjKXJldHVybiBfd29ya2VyX29wdGlvbnMuR2xvYmFsV29ya2VyT3B0aW9ucy53b3JrZXJTcmM7aWYobnVsbCE9PVBERldvcmtlclV0aWwuZmFsbGJhY2tXb3JrZXJTcmMpcmV0dXJuIF9pc19ub2RlLmlzTm9kZUpTfHwoMCxfZGlzcGxheV91dGlscy5kZXByZWNhdGVkKSgnTm8gIkdsb2JhbFdvcmtlck9wdGlvbnMud29ya2VyU3JjIiBzcGVjaWZpZWQuJyksUERGV29ya2VyVXRpbC5mYWxsYmFja1dvcmtlclNyYzt0aHJvdyBuZXcgRXJyb3IoJ05vICJHbG9iYWxXb3JrZXJPcHRpb25zLndvcmtlclNyYyIgc3BlY2lmaWVkLicpfX0se2tleToiX21haW5UaHJlYWRXb3JrZXJNZXNzYWdlSGFuZGxlciIsZ2V0OmZ1bmN0aW9uKCl7dHJ5e3ZhciB0O3JldHVybihudWxsPT09KHQ9Z2xvYmFsVGhpcy5wZGZqc1dvcmtlcil8fHZvaWQgMD09PXQ/dm9pZCAwOnQuV29ya2VyTWVzc2FnZUhhbmRsZXIpfHxudWxsfWNhdGNoKHQpe3JldHVybiBudWxsfX19LHtrZXk6Il9zZXR1cEZha2VXb3JrZXJHbG9iYWwiLGdldDpmdW5jdGlvbiBnZXQoKXt2YXIgX3RoaXMxMD10aGlzLGxvYWRlcj1mdW5jdGlvbigpe3ZhciBfcmVmMTU9X2FzeW5jVG9HZW5lcmF0b3IoX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoKGZ1bmN0aW9uIF9jYWxsZWUzKCl7dmFyIG1haW5Xb3JrZXJNZXNzYWdlSGFuZGxlcix3b3JrZXI7cmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKChmdW5jdGlvbiBfY2FsbGVlMyQoX2NvbnRleHQzKXtmb3IoOzspc3dpdGNoKF9jb250ZXh0My5wcmV2PV9jb250ZXh0My5uZXh0KXtjYXNlIDA6aWYobWFpbldvcmtlck1lc3NhZ2VIYW5kbGVyPV90aGlzMTAuX21haW5UaHJlYWRXb3JrZXJNZXNzYWdlSGFuZGxlciwhbWFpbldvcmtlck1lc3NhZ2VIYW5kbGVyKXtfY29udGV4dDMubmV4dD0zO2JyZWFrfXJldHVybiBfY29udGV4dDMuYWJydXB0KCJyZXR1cm4iLG1haW5Xb3JrZXJNZXNzYWdlSGFuZGxlcik7Y2FzZSAzOmlmKCFfaXNfbm9kZS5pc05vZGVKU3x8ImZ1bmN0aW9uIiE9dHlwZW9mIHJlcXVpcmUpe19jb250ZXh0My5uZXh0PTY7YnJlYWt9cmV0dXJuIHdvcmtlcj1ldmFsKCJyZXF1aXJlIikoX3RoaXMxMC53b3JrZXJTcmMpLF9jb250ZXh0My5hYnJ1cHQoInJldHVybiIsd29ya2VyLldvcmtlck1lc3NhZ2VIYW5kbGVyKTtjYXNlIDY6cmV0dXJuIF9jb250ZXh0My5uZXh0PTgsKDAsX2Rpc3BsYXlfdXRpbHMubG9hZFNjcmlwdCkoX3RoaXMxMC53b3JrZXJTcmMpO2Nhc2UgODpyZXR1cm4gX2NvbnRleHQzLmFicnVwdCgicmV0dXJuIix3aW5kb3cucGRmanNXb3JrZXIuV29ya2VyTWVzc2FnZUhhbmRsZXIpO2Nhc2UgOTpjYXNlImVuZCI6cmV0dXJuIF9jb250ZXh0My5zdG9wKCl9fSksX2NhbGxlZTMpfSkpKTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gX3JlZjE1LmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KCk7cmV0dXJuKDAsX3V0aWwuc2hhZG93KSh0aGlzLCJfc2V0dXBGYWtlV29ya2VyR2xvYmFsIixsb2FkZXIoKSl9fV0pLFBERldvcmtlcn0oKTtleHBvcnRzLlBERldvcmtlcj1QREZXb3JrZXI7dmFyIF93b3JrZXJQb3J0cz17d3JpdGFibGU6ITAsdmFsdWU6bmV3IFdlYWtNYXB9LF9kb2NTdGF0cz1uZXcgV2Vha01hcCxfcGFnZUNhY2hlPW5ldyBXZWFrTWFwLF9wYWdlUHJvbWlzZXM9bmV3IFdlYWtNYXAsX21ldGFkYXRhUHJvbWlzZT1uZXcgV2Vha01hcCxXb3JrZXJUcmFuc3BvcnQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUscixuLGkpe19jbGFzc0NhbGxDaGVjayh0aGlzLHQpLF9jbGFzc1ByaXZhdGVGaWVsZEluaXRTcGVjKHRoaXMsX2RvY1N0YXRzLHt3cml0YWJsZTohMCx2YWx1ZTpudWxsfSksX2NsYXNzUHJpdmF0ZUZpZWxkSW5pdFNwZWModGhpcyxfcGFnZUNhY2hlLHt3cml0YWJsZTohMCx2YWx1ZTpuZXcgTWFwfSksX2NsYXNzUHJpdmF0ZUZpZWxkSW5pdFNwZWModGhpcyxfcGFnZVByb21pc2VzLHt3cml0YWJsZTohMCx2YWx1ZTpuZXcgTWFwfSksX2NsYXNzUHJpdmF0ZUZpZWxkSW5pdFNwZWModGhpcyxfbWV0YWRhdGFQcm9taXNlLHt3cml0YWJsZTohMCx2YWx1ZTpudWxsfSksdGhpcy5tZXNzYWdlSGFuZGxlcj1lLHRoaXMubG9hZGluZ1Rhc2s9cix0aGlzLmNvbW1vbk9ianM9bmV3IFBERk9iamVjdHMsdGhpcy5mb250TG9hZGVyPW5ldyBfZm9udF9sb2FkZXIuRm9udExvYWRlcih7b25VbnN1cHBvcnRlZEZlYXR1cmU6dGhpcy5fb25VbnN1cHBvcnRlZEZlYXR1cmUuYmluZCh0aGlzKSxvd25lckRvY3VtZW50Omkub3duZXJEb2N1bWVudCxzdHlsZUVsZW1lbnQ6aS5zdHlsZUVsZW1lbnR9KSx0aGlzLl9wYXJhbXM9aSxpLnVzZVdvcmtlckZldGNofHwodGhpcy5DTWFwUmVhZGVyRmFjdG9yeT1uZXcgaS5DTWFwUmVhZGVyRmFjdG9yeSh7YmFzZVVybDppLmNNYXBVcmwsaXNDb21wcmVzc2VkOmkuY01hcFBhY2tlZH0pLHRoaXMuU3RhbmRhcmRGb250RGF0YUZhY3Rvcnk9bmV3IGkuU3RhbmRhcmRGb250RGF0YUZhY3Rvcnkoe2Jhc2VVcmw6aS5zdGFuZGFyZEZvbnREYXRhVXJsfSkpLHRoaXMuZGVzdHJveWVkPSExLHRoaXMuZGVzdHJveUNhcGFiaWxpdHk9bnVsbCx0aGlzLl9wYXNzd29yZENhcGFiaWxpdHk9bnVsbCx0aGlzLl9uZXR3b3JrU3RyZWFtPW4sdGhpcy5fZnVsbFJlYWRlcj1udWxsLHRoaXMuX2xhc3RQcm9ncmVzcz1udWxsLHRoaXMuZG93bmxvYWRJbmZvQ2FwYWJpbGl0eT0oMCxfdXRpbC5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKSx0aGlzLnNldHVwTWVzc2FnZUhhbmRsZXIoKX12YXIgZTtyZXR1cm4gX2NyZWF0ZUNsYXNzKHQsW3trZXk6ImFubm90YXRpb25TdG9yYWdlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4oMCxfdXRpbC5zaGFkb3cpKHRoaXMsImFubm90YXRpb25TdG9yYWdlIixuZXcgX2Fubm90YXRpb25fc3RvcmFnZS5Bbm5vdGF0aW9uU3RvcmFnZSl9fSx7a2V5OiJzdGF0cyIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLF9kb2NTdGF0cyl9fSx7a2V5OiJnZXRSZW5kZXJpbmdJbnRlbnQiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpfdXRpbC5Bbm5vdGF0aW9uTW9kZS5FTkFCTEUscj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06bnVsbCxuPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdJiZhcmd1bWVudHNbM10saT1fdXRpbC5SZW5kZXJpbmdJbnRlbnRGbGFnLkRJU1BMQVksYT1udWxsO3N3aXRjaCh0KXtjYXNlImFueSI6aT1fdXRpbC5SZW5kZXJpbmdJbnRlbnRGbGFnLkFOWTticmVhaztjYXNlImRpc3BsYXkiOmJyZWFrO2Nhc2UicHJpbnQiOmk9X3V0aWwuUmVuZGVyaW5nSW50ZW50RmxhZy5QUklOVDticmVhaztkZWZhdWx0OigwLF91dGlsLndhcm4pKCJnZXRSZW5kZXJpbmdJbnRlbnQgLSBpbnZhbGlkIGludGVudDogIi5jb25jYXQodCkpfXN3aXRjaChlKXtjYXNlIF91dGlsLkFubm90YXRpb25Nb2RlLkRJU0FCTEU6aSs9X3V0aWwuUmVuZGVyaW5nSW50ZW50RmxhZy5BTk5PVEFUSU9OU19ESVNBQkxFO2JyZWFrO2Nhc2UgX3V0aWwuQW5ub3RhdGlvbk1vZGUuRU5BQkxFOmJyZWFrO2Nhc2UgX3V0aWwuQW5ub3RhdGlvbk1vZGUuRU5BQkxFX0ZPUk1TOmkrPV91dGlsLlJlbmRlcmluZ0ludGVudEZsYWcuQU5OT1RBVElPTlNfRk9STVM7YnJlYWs7Y2FzZSBfdXRpbC5Bbm5vdGF0aW9uTW9kZS5FTkFCTEVfU1RPUkFHRTphPSgoaSs9X3V0aWwuUmVuZGVyaW5nSW50ZW50RmxhZy5BTk5PVEFUSU9OU19TVE9SQUdFKSZfdXRpbC5SZW5kZXJpbmdJbnRlbnRGbGFnLlBSSU5UJiZyIGluc3RhbmNlb2YgX2Fubm90YXRpb25fc3RvcmFnZS5QcmludEFubm90YXRpb25TdG9yYWdlP3I6dGhpcy5hbm5vdGF0aW9uU3RvcmFnZSkuc2VyaWFsaXphYmxlO2JyZWFrO2RlZmF1bHQ6KDAsX3V0aWwud2FybikoImdldFJlbmRlcmluZ0ludGVudCAtIGludmFsaWQgYW5ub3RhdGlvbk1vZGU6ICIuY29uY2F0KGUpKX1yZXR1cm4gbiYmKGkrPV91dGlsLlJlbmRlcmluZ0ludGVudEZsYWcuT1BMSVNUKSx7cmVuZGVyaW5nSW50ZW50OmksY2FjaGVLZXk6IiIuY29uY2F0KGksIl8iKS5jb25jYXQoX2Fubm90YXRpb25fc3RvcmFnZS5Bbm5vdGF0aW9uU3RvcmFnZS5nZXRIYXNoKGEpKSxhbm5vdGF0aW9uU3RvcmFnZU1hcDphfX19LHtrZXk6ImRlc3Ryb3kiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztpZih0aGlzLmRlc3Ryb3lDYXBhYmlsaXR5KXJldHVybiB0aGlzLmRlc3Ryb3lDYXBhYmlsaXR5LnByb21pc2U7dGhpcy5kZXN0cm95ZWQ9ITAsdGhpcy5kZXN0cm95Q2FwYWJpbGl0eT0oMCxfdXRpbC5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKSx0aGlzLl9wYXNzd29yZENhcGFiaWxpdHkmJnRoaXMuX3Bhc3N3b3JkQ2FwYWJpbGl0eS5yZWplY3QobmV3IEVycm9yKCJXb3JrZXIgd2FzIGRlc3Ryb3llZCBkdXJpbmcgb25QYXNzd29yZCBjYWxsYmFjayIpKTt2YXIgZSxyPVtdLG49X2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIoX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsX3BhZ2VDYWNoZSkudmFsdWVzKCkpO3RyeXtmb3Iobi5zKCk7IShlPW4ubigpKS5kb25lOyl7dmFyIGk9ZS52YWx1ZTtyLnB1c2goaS5fZGVzdHJveSgpKX19Y2F0Y2godCl7bi5lKHQpfWZpbmFsbHl7bi5mKCl9X2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsX3BhZ2VDYWNoZSkuY2xlYXIoKSxfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcyxfcGFnZVByb21pc2VzKS5jbGVhcigpLHRoaXMuaGFzT3duUHJvcGVydHkoImFubm90YXRpb25TdG9yYWdlIikmJnRoaXMuYW5ub3RhdGlvblN0b3JhZ2UucmVzZXRNb2RpZmllZCgpO3ZhciBhPXRoaXMubWVzc2FnZUhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJUZXJtaW5hdGUiLG51bGwpO3JldHVybiByLnB1c2goYSksUHJvbWlzZS5hbGwocikudGhlbigoZnVuY3Rpb24oKXt0LmNvbW1vbk9ianMuY2xlYXIoKSx0LmZvbnRMb2FkZXIuY2xlYXIoKSxfY2xhc3NQcml2YXRlRmllbGRTZXQodCxfbWV0YWRhdGFQcm9taXNlLG51bGwpLHQuX2dldEZpZWxkT2JqZWN0c1Byb21pc2U9bnVsbCx0Ll9oYXNKU0FjdGlvbnNQcm9taXNlPW51bGwsdC5fbmV0d29ya1N0cmVhbSYmdC5fbmV0d29ya1N0cmVhbS5jYW5jZWxBbGxSZXF1ZXN0cyhuZXcgX3V0aWwuQWJvcnRFeGNlcHRpb24oIldvcmtlciB3YXMgdGVybWluYXRlZC4iKSksdC5tZXNzYWdlSGFuZGxlciYmKHQubWVzc2FnZUhhbmRsZXIuZGVzdHJveSgpLHQubWVzc2FnZUhhbmRsZXI9bnVsbCksdC5kZXN0cm95Q2FwYWJpbGl0eS5yZXNvbHZlKCl9KSx0aGlzLmRlc3Ryb3lDYXBhYmlsaXR5LnJlamVjdCksdGhpcy5kZXN0cm95Q2FwYWJpbGl0eS5wcm9taXNlfX0se2tleToic2V0dXBNZXNzYWdlSGFuZGxlciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy5tZXNzYWdlSGFuZGxlcixyPXRoaXMubG9hZGluZ1Rhc2s7ZS5vbigiR2V0UmVhZGVyIiwoZnVuY3Rpb24oZSxyKXsoMCxfdXRpbC5hc3NlcnQpKHQuX25ldHdvcmtTdHJlYW0sIkdldFJlYWRlciAtIG5vIGBJUERGU3RyZWFtYCBpbnN0YW5jZSBhdmFpbGFibGUuIiksdC5fZnVsbFJlYWRlcj10Ll9uZXR3b3JrU3RyZWFtLmdldEZ1bGxSZWFkZXIoKSx0Ll9mdWxsUmVhZGVyLm9uUHJvZ3Jlc3M9ZnVuY3Rpb24oZSl7dC5fbGFzdFByb2dyZXNzPXtsb2FkZWQ6ZS5sb2FkZWQsdG90YWw6ZS50b3RhbH19LHIub25QdWxsPWZ1bmN0aW9uKCl7dC5fZnVsbFJlYWRlci5yZWFkKCkudGhlbigoZnVuY3Rpb24odCl7dmFyIGU9dC52YWx1ZTt0LmRvbmU/ci5jbG9zZSgpOigoMCxfdXRpbC5hc3NlcnQpKCgwLF91dGlsLmlzQXJyYXlCdWZmZXIpKGUpLCJHZXRSZWFkZXIgLSBleHBlY3RlZCBhbiBBcnJheUJ1ZmZlci4iKSxyLmVucXVldWUobmV3IFVpbnQ4QXJyYXkoZSksMSxbZV0pKX0pKS5jYXRjaCgoZnVuY3Rpb24odCl7ci5lcnJvcih0KX0pKX0sci5vbkNhbmNlbD1mdW5jdGlvbihlKXt0Ll9mdWxsUmVhZGVyLmNhbmNlbChlKSxyLnJlYWR5LmNhdGNoKChmdW5jdGlvbihlKXtpZighdC5kZXN0cm95ZWQpdGhyb3cgZX0pKX19KSksZS5vbigiUmVhZGVySGVhZGVyc1JlYWR5IiwoZnVuY3Rpb24oZSl7dmFyIG49KDAsX3V0aWwuY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkpKCksaT10Ll9mdWxsUmVhZGVyO3JldHVybiBpLmhlYWRlcnNSZWFkeS50aGVuKChmdW5jdGlvbigpe3ZhciBlO2kuaXNTdHJlYW1pbmdTdXBwb3J0ZWQmJmkuaXNSYW5nZVN1cHBvcnRlZHx8KHQuX2xhc3RQcm9ncmVzcyYmKG51bGw9PT0oZT1yLm9uUHJvZ3Jlc3MpfHx2b2lkIDA9PT1lfHxlLmNhbGwocix0Ll9sYXN0UHJvZ3Jlc3MpKSxpLm9uUHJvZ3Jlc3M9ZnVuY3Rpb24odCl7dmFyIGU7bnVsbD09PShlPXIub25Qcm9ncmVzcyl8fHZvaWQgMD09PWV8fGUuY2FsbChyLHtsb2FkZWQ6dC5sb2FkZWQsdG90YWw6dC50b3RhbH0pfSksbi5yZXNvbHZlKHtpc1N0cmVhbWluZ1N1cHBvcnRlZDppLmlzU3RyZWFtaW5nU3VwcG9ydGVkLGlzUmFuZ2VTdXBwb3J0ZWQ6aS5pc1JhbmdlU3VwcG9ydGVkLGNvbnRlbnRMZW5ndGg6aS5jb250ZW50TGVuZ3RofSl9KSxuLnJlamVjdCksbi5wcm9taXNlfSkpLGUub24oIkdldFJhbmdlUmVhZGVyIiwoZnVuY3Rpb24oZSxyKXsoMCxfdXRpbC5hc3NlcnQpKHQuX25ldHdvcmtTdHJlYW0sIkdldFJhbmdlUmVhZGVyIC0gbm8gYElQREZTdHJlYW1gIGluc3RhbmNlIGF2YWlsYWJsZS4iKTt2YXIgbj10Ll9uZXR3b3JrU3RyZWFtLmdldFJhbmdlUmVhZGVyKGUuYmVnaW4sZS5lbmQpO24/KHIub25QdWxsPWZ1bmN0aW9uKCl7bi5yZWFkKCkudGhlbigoZnVuY3Rpb24odCl7dmFyIGU9dC52YWx1ZTt0LmRvbmU/ci5jbG9zZSgpOigoMCxfdXRpbC5hc3NlcnQpKCgwLF91dGlsLmlzQXJyYXlCdWZmZXIpKGUpLCJHZXRSYW5nZVJlYWRlciAtIGV4cGVjdGVkIGFuIEFycmF5QnVmZmVyLiIpLHIuZW5xdWV1ZShuZXcgVWludDhBcnJheShlKSwxLFtlXSkpfSkpLmNhdGNoKChmdW5jdGlvbih0KXtyLmVycm9yKHQpfSkpfSxyLm9uQ2FuY2VsPWZ1bmN0aW9uKGUpe24uY2FuY2VsKGUpLHIucmVhZHkuY2F0Y2goKGZ1bmN0aW9uKGUpe2lmKCF0LmRlc3Ryb3llZCl0aHJvdyBlfSkpfSk6ci5jbG9zZSgpfSkpLGUub24oIkdldERvYyIsKGZ1bmN0aW9uKGUpe3ZhciBuPWUucGRmSW5mbzt0Ll9udW1QYWdlcz1uLm51bVBhZ2VzLHQuX2h0bWxGb3JYZmE9bi5odG1sRm9yWGZhLGRlbGV0ZSBuLmh0bWxGb3JYZmEsci5fY2FwYWJpbGl0eS5yZXNvbHZlKG5ldyBQREZEb2N1bWVudFByb3h5KG4sdCkpfSkpLGUub24oIkRvY0V4Y2VwdGlvbiIsKGZ1bmN0aW9uKHQpe3ZhciBlO3N3aXRjaCh0Lm5hbWUpe2Nhc2UiUGFzc3dvcmRFeGNlcHRpb24iOmU9bmV3IF91dGlsLlBhc3N3b3JkRXhjZXB0aW9uKHQubWVzc2FnZSx0LmNvZGUpO2JyZWFrO2Nhc2UiSW52YWxpZFBERkV4Y2VwdGlvbiI6ZT1uZXcgX3V0aWwuSW52YWxpZFBERkV4Y2VwdGlvbih0Lm1lc3NhZ2UpO2JyZWFrO2Nhc2UiTWlzc2luZ1BERkV4Y2VwdGlvbiI6ZT1uZXcgX3V0aWwuTWlzc2luZ1BERkV4Y2VwdGlvbih0Lm1lc3NhZ2UpO2JyZWFrO2Nhc2UiVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9uIjplPW5ldyBfdXRpbC5VbmV4cGVjdGVkUmVzcG9uc2VFeGNlcHRpb24odC5tZXNzYWdlLHQuc3RhdHVzKTticmVhaztjYXNlIlVua25vd25FcnJvckV4Y2VwdGlvbiI6ZT1uZXcgX3V0aWwuVW5rbm93bkVycm9yRXhjZXB0aW9uKHQubWVzc2FnZSx0LmRldGFpbHMpO2JyZWFrO2RlZmF1bHQ6KDAsX3V0aWwudW5yZWFjaGFibGUpKCJEb2NFeGNlcHRpb24gLSBleHBlY3RlZCBhIHZhbGlkIEVycm9yLiIpfXIuX2NhcGFiaWxpdHkucmVqZWN0KGUpfSkpLGUub24oIlBhc3N3b3JkUmVxdWVzdCIsKGZ1bmN0aW9uKGUpe2lmKHQuX3Bhc3N3b3JkQ2FwYWJpbGl0eT0oMCxfdXRpbC5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKSxyLm9uUGFzc3dvcmQpdHJ5e3Iub25QYXNzd29yZCgoZnVuY3Rpb24oZSl7ZSBpbnN0YW5jZW9mIEVycm9yP3QuX3Bhc3N3b3JkQ2FwYWJpbGl0eS5yZWplY3QoZSk6dC5fcGFzc3dvcmRDYXBhYmlsaXR5LnJlc29sdmUoe3Bhc3N3b3JkOmV9KX0pLGUuY29kZSl9Y2F0Y2goZSl7dC5fcGFzc3dvcmRDYXBhYmlsaXR5LnJlamVjdChlKX1lbHNlIHQuX3Bhc3N3b3JkQ2FwYWJpbGl0eS5yZWplY3QobmV3IF91dGlsLlBhc3N3b3JkRXhjZXB0aW9uKGUubWVzc2FnZSxlLmNvZGUpKTtyZXR1cm4gdC5fcGFzc3dvcmRDYXBhYmlsaXR5LnByb21pc2V9KSksZS5vbigiRGF0YUxvYWRlZCIsKGZ1bmN0aW9uKGUpe3ZhciBuO251bGw9PT0obj1yLm9uUHJvZ3Jlc3MpfHx2b2lkIDA9PT1ufHxuLmNhbGwocix7bG9hZGVkOmUubGVuZ3RoLHRvdGFsOmUubGVuZ3RofSksdC5kb3dubG9hZEluZm9DYXBhYmlsaXR5LnJlc29sdmUoZSl9KSksZS5vbigiU3RhcnRSZW5kZXJQYWdlIiwoZnVuY3Rpb24oZSl7dC5kZXN0cm95ZWR8fF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0LF9wYWdlQ2FjaGUpLmdldChlLnBhZ2VJbmRleCkuX3N0YXJ0UmVuZGVyUGFnZShlLnRyYW5zcGFyZW5jeSxlLmNhY2hlS2V5KX0pKSxlLm9uKCJjb21tb25vYmoiLChmdW5jdGlvbihyKXt2YXIgbixpPV9zbGljZWRUb0FycmF5KHIsMyksYT1pWzBdLG89aVsxXSxzPWlbMl07aWYoIXQuZGVzdHJveWVkJiYhdC5jb21tb25PYmpzLmhhcyhhKSlzd2l0Y2gobyl7Y2FzZSJGb250Ijp2YXIgbD10Ll9wYXJhbXM7aWYoImVycm9yImluIHMpe3ZhciB1PXMuZXJyb3I7KDAsX3V0aWwud2FybikoIkVycm9yIGR1cmluZyBmb250IGxvYWRpbmc6ICIuY29uY2F0KHUpKSx0LmNvbW1vbk9ianMucmVzb2x2ZShhLHUpO2JyZWFrfXZhciBjPW51bGw7bC5wZGZCdWcmJm51bGwhPT0obj1nbG9iYWxUaGlzLkZvbnRJbnNwZWN0b3IpJiZ2b2lkIDAhPT1uJiZuLmVuYWJsZWQmJihjPXtyZWdpc3RlckZvbnQ6ZnVuY3Rpb24odCxlKXtnbG9iYWxUaGlzLkZvbnRJbnNwZWN0b3IuZm9udEFkZGVkKHQsZSl9fSk7dmFyIGg9bmV3IF9mb250X2xvYWRlci5Gb250RmFjZU9iamVjdChzLHtpc0V2YWxTdXBwb3J0ZWQ6bC5pc0V2YWxTdXBwb3J0ZWQsZGlzYWJsZUZvbnRGYWNlOmwuZGlzYWJsZUZvbnRGYWNlLGlnbm9yZUVycm9yczpsLmlnbm9yZUVycm9ycyxvblVuc3VwcG9ydGVkRmVhdHVyZTp0Ll9vblVuc3VwcG9ydGVkRmVhdHVyZS5iaW5kKHQpLGZvbnRSZWdpc3RyeTpjfSk7dC5mb250TG9hZGVyLmJpbmQoaCkuY2F0Y2goKGZ1bmN0aW9uKHQpe3JldHVybiBlLnNlbmRXaXRoUHJvbWlzZSgiRm9udEZhbGxiYWNrIix7aWQ6YX0pfSkpLmZpbmFsbHkoKGZ1bmN0aW9uKCl7IWwuZm9udEV4dHJhUHJvcGVydGllcyYmaC5kYXRhJiYoaC5kYXRhPW51bGwpLHQuY29tbW9uT2Jqcy5yZXNvbHZlKGEsaCl9KSk7YnJlYWs7Y2FzZSJGb250UGF0aCI6Y2FzZSJJbWFnZSI6dC5jb21tb25PYmpzLnJlc29sdmUoYSxzKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiR290IHVua25vd24gY29tbW9uIG9iamVjdCB0eXBlICIuY29uY2F0KG8pKX19KSksZS5vbigib2JqIiwoZnVuY3Rpb24oZSl7dmFyIHI9X3NsaWNlZFRvQXJyYXkoZSw0KSxuPXJbMF0saT1yWzFdLGE9clsyXSxvPXJbM107aWYoIXQuZGVzdHJveWVkKXt2YXIgcz1fY2xhc3NQcml2YXRlRmllbGRHZXQodCxfcGFnZUNhY2hlKS5nZXQoaSk7aWYoIXMub2Jqcy5oYXMobikpc3dpdGNoKGEpe2Nhc2UiSW1hZ2UiOmlmKHMub2Jqcy5yZXNvbHZlKG4sbyksbyl7dmFyIGw7aWYoby5iaXRtYXApe3ZhciB1PW8uYml0bWFwO2w9by53aWR0aCpvLmhlaWdodCo0LHMuX2JpdG1hcHMuYWRkKHUpfWVsc2V7dmFyIGM7bD0obnVsbD09PShjPW8uZGF0YSl8fHZvaWQgMD09PWM/dm9pZCAwOmMubGVuZ3RoKXx8MH1sPjhlNiYmKHMuY2xlYW51cEFmdGVyUmVuZGVyPSEwKX1icmVhaztjYXNlIlBhdHRlcm4iOnMub2Jqcy5yZXNvbHZlKG4sbyk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIkdvdCB1bmtub3duIG9iamVjdCB0eXBlICIuY29uY2F0KGEpKX19fSkpLGUub24oIkRvY1Byb2dyZXNzIiwoZnVuY3Rpb24oZSl7dmFyIG47dC5kZXN0cm95ZWR8fG51bGw9PT0obj1yLm9uUHJvZ3Jlc3MpfHx2b2lkIDA9PT1ufHxuLmNhbGwocix7bG9hZGVkOmUubG9hZGVkLHRvdGFsOmUudG90YWx9KX0pKSxlLm9uKCJEb2NTdGF0cyIsKGZ1bmN0aW9uKGUpe3QuZGVzdHJveWVkfHxfY2xhc3NQcml2YXRlRmllbGRTZXQodCxfZG9jU3RhdHMsT2JqZWN0LmZyZWV6ZSh7c3RyZWFtVHlwZXM6T2JqZWN0LmZyZWV6ZShlLnN0cmVhbVR5cGVzKSxmb250VHlwZXM6T2JqZWN0LmZyZWV6ZShlLmZvbnRUeXBlcyl9KSl9KSksZS5vbigiVW5zdXBwb3J0ZWRGZWF0dXJlIix0aGlzLl9vblVuc3VwcG9ydGVkRmVhdHVyZS5iaW5kKHRoaXMpKSxlLm9uKCJGZXRjaEJ1aWx0SW5DTWFwIiwoZnVuY3Rpb24oZSl7cmV0dXJuIHQuZGVzdHJveWVkP1Byb21pc2UucmVqZWN0KG5ldyBFcnJvcigiV29ya2VyIHdhcyBkZXN0cm95ZWQuIikpOnQuQ01hcFJlYWRlckZhY3Rvcnk/dC5DTWFwUmVhZGVyRmFjdG9yeS5mZXRjaChlKTpQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoIkNNYXBSZWFkZXJGYWN0b3J5IG5vdCBpbml0aWFsaXplZCwgc2VlIHRoZSBgdXNlV29ya2VyRmV0Y2hgIHBhcmFtZXRlci4iKSl9KSksZS5vbigiRmV0Y2hTdGFuZGFyZEZvbnREYXRhIiwoZnVuY3Rpb24oZSl7cmV0dXJuIHQuZGVzdHJveWVkP1Byb21pc2UucmVqZWN0KG5ldyBFcnJvcigiV29ya2VyIHdhcyBkZXN0cm95ZWQuIikpOnQuU3RhbmRhcmRGb250RGF0YUZhY3Rvcnk/dC5TdGFuZGFyZEZvbnREYXRhRmFjdG9yeS5mZXRjaChlKTpQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoIlN0YW5kYXJkRm9udERhdGFGYWN0b3J5IG5vdCBpbml0aWFsaXplZCwgc2VlIHRoZSBgdXNlV29ya2VyRmV0Y2hgIHBhcmFtZXRlci4iKSl9KSl9fSx7a2V5OiJfb25VbnN1cHBvcnRlZEZlYXR1cmUiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlLHIsbj10LmZlYXR1cmVJZDt0aGlzLmRlc3Ryb3llZHx8bnVsbD09PShlPShyPXRoaXMubG9hZGluZ1Rhc2spLm9uVW5zdXBwb3J0ZWRGZWF0dXJlKXx8dm9pZCAwPT09ZXx8ZS5jYWxsKHIsbil9fSx7a2V5OiJnZXREYXRhIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiR2V0RGF0YSIsbnVsbCl9fSx7a2V5OiJzYXZlRG9jdW1lbnQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQsZSxyPXRoaXM7cmV0dXJuIHRoaXMuYW5ub3RhdGlvblN0b3JhZ2Uuc2l6ZTw9MCYmKDAsX3V0aWwud2FybikoInNhdmVEb2N1bWVudCBjYWxsZWQgd2hpbGUgYGFubm90YXRpb25TdG9yYWdlYCBpcyBlbXB0eSwgcGxlYXNlIHVzZSB0aGUgZ2V0RGF0YS1tZXRob2QgaW5zdGVhZC4iKSx0aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiU2F2ZURvY3VtZW50Iix7aXNQdXJlWGZhOiEhdGhpcy5faHRtbEZvclhmYSxudW1QYWdlczp0aGlzLl9udW1QYWdlcyxhbm5vdGF0aW9uU3RvcmFnZTp0aGlzLmFubm90YXRpb25TdG9yYWdlLnNlcmlhbGl6YWJsZSxmaWxlbmFtZTpudWxsIT09KHQ9bnVsbD09PShlPXRoaXMuX2Z1bGxSZWFkZXIpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLmZpbGVuYW1lKSYmdm9pZCAwIT09dD90Om51bGx9KS5maW5hbGx5KChmdW5jdGlvbigpe3IuYW5ub3RhdGlvblN0b3JhZ2UucmVzZXRNb2RpZmllZCgpfSkpfX0se2tleToiZ2V0UGFnZSIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztpZighTnVtYmVyLmlzSW50ZWdlcih0KXx8dDw9MHx8dD50aGlzLl9udW1QYWdlcylyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCJJbnZhbGlkIHBhZ2UgcmVxdWVzdC4iKSk7dmFyIHI9dC0xLG49X2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsX3BhZ2VQcm9taXNlcykuZ2V0KHIpO2lmKG4pcmV0dXJuIG47dmFyIGk9dGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkdldFBhZ2UiLHtwYWdlSW5kZXg6cn0pLnRoZW4oKGZ1bmN0aW9uKHQpe2lmKGUuZGVzdHJveWVkKXRocm93IG5ldyBFcnJvcigiVHJhbnNwb3J0IGRlc3Ryb3llZCIpO3ZhciBuPW5ldyBQREZQYWdlUHJveHkocix0LGUsZS5fcGFyYW1zLm93bmVyRG9jdW1lbnQsZS5fcGFyYW1zLnBkZkJ1Zyk7cmV0dXJuIF9jbGFzc1ByaXZhdGVGaWVsZEdldChlLF9wYWdlQ2FjaGUpLnNldChyLG4pLG59KSk7cmV0dXJuIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLF9wYWdlUHJvbWlzZXMpLnNldChyLGkpLGl9fSx7a2V5OiJnZXRQYWdlSW5kZXgiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiJvYmplY3QiIT09X3R5cGVvZih0KXx8bnVsbD09PXR8fCFOdW1iZXIuaXNJbnRlZ2VyKHQubnVtKXx8dC5udW08MHx8IU51bWJlci5pc0ludGVnZXIodC5nZW4pfHx0LmdlbjwwP1Byb21pc2UucmVqZWN0KG5ldyBFcnJvcigiSW52YWxpZCBwYWdlSW5kZXggcmVxdWVzdC4iKSk6dGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkdldFBhZ2VJbmRleCIse251bTp0Lm51bSxnZW46dC5nZW59KX19LHtrZXk6ImdldEFubm90YXRpb25zIix2YWx1ZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiR2V0QW5ub3RhdGlvbnMiLHtwYWdlSW5kZXg6dCxpbnRlbnQ6ZX0pfX0se2tleToiZ2V0RmllbGRPYmplY3RzIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9nZXRGaWVsZE9iamVjdHNQcm9taXNlfHwodGhpcy5fZ2V0RmllbGRPYmplY3RzUHJvbWlzZT10aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiR2V0RmllbGRPYmplY3RzIixudWxsKSl9fSx7a2V5OiJoYXNKU0FjdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2hhc0pTQWN0aW9uc1Byb21pc2V8fCh0aGlzLl9oYXNKU0FjdGlvbnNQcm9taXNlPXRoaXMubWVzc2FnZUhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJIYXNKU0FjdGlvbnMiLG51bGwpKX19LHtrZXk6ImdldENhbGN1bGF0aW9uT3JkZXJJZHMiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWVzc2FnZUhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJHZXRDYWxjdWxhdGlvbk9yZGVySWRzIixudWxsKX19LHtrZXk6ImdldERlc3RpbmF0aW9ucyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkdldERlc3RpbmF0aW9ucyIsbnVsbCl9fSx7a2V5OiJnZXREZXN0aW5hdGlvbiIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuInN0cmluZyIhPXR5cGVvZiB0P1Byb21pc2UucmVqZWN0KG5ldyBFcnJvcigiSW52YWxpZCBkZXN0aW5hdGlvbiByZXF1ZXN0LiIpKTp0aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiR2V0RGVzdGluYXRpb24iLHtpZDp0fSl9fSx7a2V5OiJnZXRQYWdlTGFiZWxzIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiR2V0UGFnZUxhYmVscyIsbnVsbCl9fSx7a2V5OiJnZXRQYWdlTGF5b3V0Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiR2V0UGFnZUxheW91dCIsbnVsbCl9fSx7a2V5OiJnZXRQYWdlTW9kZSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkdldFBhZ2VNb2RlIixudWxsKX19LHtrZXk6ImdldFZpZXdlclByZWZlcmVuY2VzIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiR2V0Vmlld2VyUHJlZmVyZW5jZXMiLG51bGwpfX0se2tleToiZ2V0T3BlbkFjdGlvbiIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkdldE9wZW5BY3Rpb24iLG51bGwpfX0se2tleToiZ2V0QXR0YWNobWVudHMiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWVzc2FnZUhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJHZXRBdHRhY2htZW50cyIsbnVsbCl9fSx7a2V5OiJnZXRKYXZhU2NyaXB0Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiR2V0SmF2YVNjcmlwdCIsbnVsbCl9fSx7a2V5OiJnZXREb2NKU0FjdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWVzc2FnZUhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJHZXREb2NKU0FjdGlvbnMiLG51bGwpfX0se2tleToiZ2V0UGFnZUpTQWN0aW9ucyIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubWVzc2FnZUhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJHZXRQYWdlSlNBY3Rpb25zIix7cGFnZUluZGV4OnR9KX19LHtrZXk6ImdldFN0cnVjdFRyZWUiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiR2V0U3RydWN0VHJlZSIse3BhZ2VJbmRleDp0fSl9fSx7a2V5OiJnZXRPdXRsaW5lIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiR2V0T3V0bGluZSIsbnVsbCl9fSx7a2V5OiJnZXRPcHRpb25hbENvbnRlbnRDb25maWciLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWVzc2FnZUhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJHZXRPcHRpb25hbENvbnRlbnRDb25maWciLG51bGwpLnRoZW4oKGZ1bmN0aW9uKHQpe3JldHVybiBuZXcgX29wdGlvbmFsX2NvbnRlbnRfY29uZmlnLk9wdGlvbmFsQ29udGVudENvbmZpZyh0KX0pKX19LHtrZXk6ImdldFBlcm1pc3Npb25zIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiR2V0UGVybWlzc2lvbnMiLG51bGwpfX0se2tleToiZ2V0TWV0YWRhdGEiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztyZXR1cm4gX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsX21ldGFkYXRhUHJvbWlzZSl8fF9jbGFzc1ByaXZhdGVGaWVsZFNldCh0aGlzLF9tZXRhZGF0YVByb21pc2UsdGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkdldE1ldGFkYXRhIixudWxsKS50aGVuKChmdW5jdGlvbihlKXt2YXIgcixuLGksYTtyZXR1cm57aW5mbzplWzBdLG1ldGFkYXRhOmVbMV0/bmV3IF9tZXRhZGF0YS5NZXRhZGF0YShlWzFdKTpudWxsLGNvbnRlbnREaXNwb3NpdGlvbkZpbGVuYW1lOm51bGwhPT0ocj1udWxsPT09KG49dC5fZnVsbFJlYWRlcil8fHZvaWQgMD09PW4/dm9pZCAwOm4uZmlsZW5hbWUpJiZ2b2lkIDAhPT1yP3I6bnVsbCxjb250ZW50TGVuZ3RoOm51bGwhPT0oaT1udWxsPT09KGE9dC5fZnVsbFJlYWRlcil8fHZvaWQgMD09PWE/dm9pZCAwOmEuY29udGVudExlbmd0aCkmJnZvaWQgMCE9PWk/aTpudWxsfX0pKSl9fSx7a2V5OiJnZXRNYXJrSW5mbyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkdldE1hcmtJbmZvIixudWxsKX19LHtrZXk6InN0YXJ0Q2xlYW51cCIsdmFsdWU6KGU9X2FzeW5jVG9HZW5lcmF0b3IoX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgZSxyLG4saSxhPWFyZ3VtZW50cztyZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOmlmKGU9YS5sZW5ndGg+MCYmdm9pZCAwIT09YVswXSYmYVswXSwhdGhpcy5kZXN0cm95ZWQpe3QubmV4dD0zO2JyZWFrfXJldHVybiB0LmFicnVwdCgicmV0dXJuIik7Y2FzZSAzOnJldHVybiB0Lm5leHQ9NSx0aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiQ2xlYW51cCIsbnVsbCk7Y2FzZSA1OnI9X2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIoX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsX3BhZ2VDYWNoZSkudmFsdWVzKCkpLHQucHJldj02LHIucygpO2Nhc2UgODppZigobj1yLm4oKSkuZG9uZSl7dC5uZXh0PTE1O2JyZWFrfWlmKChpPW4udmFsdWUpLmNsZWFudXAoKSl7dC5uZXh0PTEzO2JyZWFrfXRocm93IG5ldyBFcnJvcigic3RhcnRDbGVhbnVwOiBQYWdlICIuY29uY2F0KGkucGFnZU51bWJlciwiIGlzIGN1cnJlbnRseSByZW5kZXJpbmcuIikpO2Nhc2UgMTM6dC5uZXh0PTg7YnJlYWs7Y2FzZSAxNTp0Lm5leHQ9MjA7YnJlYWs7Y2FzZSAxNzp0LnByZXY9MTcsdC50MD10LmNhdGNoKDYpLHIuZSh0LnQwKTtjYXNlIDIwOnJldHVybiB0LnByZXY9MjAsci5mKCksdC5maW5pc2goMjApO2Nhc2UgMjM6dGhpcy5jb21tb25PYmpzLmNsZWFyKCksZXx8dGhpcy5mb250TG9hZGVyLmNsZWFyKCksX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsX21ldGFkYXRhUHJvbWlzZSxudWxsKSx0aGlzLl9nZXRGaWVsZE9iamVjdHNQcm9taXNlPW51bGwsdGhpcy5faGFzSlNBY3Rpb25zUHJvbWlzZT1udWxsO2Nhc2UgMjg6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMsW1s2LDE3LDIwLDIzXV0pfSkpKSxmdW5jdGlvbigpe3JldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pfSx7a2V5OiJsb2FkaW5nUGFyYW1zIixnZXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9wYXJhbXM7cmV0dXJuKDAsX3V0aWwuc2hhZG93KSh0aGlzLCJsb2FkaW5nUGFyYW1zIix7ZGlzYWJsZUF1dG9GZXRjaDp0LmRpc2FibGVBdXRvRmV0Y2gsZW5hYmxlWGZhOnQuZW5hYmxlWGZhfSl9fV0pLHR9KCksX29ianM9bmV3IFdlYWtNYXAsX2Vuc3VyZU9iaj1uZXcgV2Vha1NldCxQREZPYmplY3RzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe19jbGFzc0NhbGxDaGVjayh0aGlzLHQpLF9jbGFzc1ByaXZhdGVNZXRob2RJbml0U3BlYyh0aGlzLF9lbnN1cmVPYmopLF9jbGFzc1ByaXZhdGVGaWVsZEluaXRTcGVjKHRoaXMsX29ianMse3dyaXRhYmxlOiEwLHZhbHVlOk9iamVjdC5jcmVhdGUobnVsbCl9KX1yZXR1cm4gX2NyZWF0ZUNsYXNzKHQsW3trZXk6ImdldCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOm51bGw7aWYoZSl7dmFyIHI9X2NsYXNzUHJpdmF0ZU1ldGhvZEdldCh0aGlzLF9lbnN1cmVPYmosX2Vuc3VyZU9iajIpLmNhbGwodGhpcyx0KTtyZXR1cm4gci5jYXBhYmlsaXR5LnByb21pc2UudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gZShyLmRhdGEpfSkpLG51bGx9dmFyIG49X2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsX29ianMpW3RdO2lmKG51bGw9PW58fCFuLmNhcGFiaWxpdHkuc2V0dGxlZCl0aHJvdyBuZXcgRXJyb3IoIlJlcXVlc3Rpbmcgb2JqZWN0IHRoYXQgaXNuJ3QgcmVzb2x2ZWQgeWV0ICIuY29uY2F0KHQsIi4iKSk7cmV0dXJuIG4uZGF0YX19LHtrZXk6ImhhcyIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9X2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsX29ianMpW3RdO3JldHVybihudWxsPT1lP3ZvaWQgMDplLmNhcGFiaWxpdHkuc2V0dGxlZCl8fCExfX0se2tleToicmVzb2x2ZSIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOm51bGwscj1fY2xhc3NQcml2YXRlTWV0aG9kR2V0KHRoaXMsX2Vuc3VyZU9iaixfZW5zdXJlT2JqMikuY2FsbCh0aGlzLHQpO3IuZGF0YT1lLHIuY2FwYWJpbGl0eS5yZXNvbHZlKCl9fSx7a2V5OiJjbGVhciIsdmFsdWU6ZnVuY3Rpb24oKXtfY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcyxfb2JqcyxPYmplY3QuY3JlYXRlKG51bGwpKX19XSksdH0oKTtmdW5jdGlvbiBfZW5zdXJlT2JqMih0KXtyZXR1cm4gX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsX29ianMpW3RdfHwoX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsX29ianMpW3RdPXtjYXBhYmlsaXR5OigwLF91dGlsLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpLGRhdGE6bnVsbH0pfXZhciBfaW50ZXJuYWxSZW5kZXJUYXNrPW5ldyBXZWFrTWFwLFJlbmRlclRhc2s9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe19jbGFzc0NhbGxDaGVjayh0aGlzLHQpLF9jbGFzc1ByaXZhdGVGaWVsZEluaXRTcGVjKHRoaXMsX2ludGVybmFsUmVuZGVyVGFzayx7d3JpdGFibGU6ITAsdmFsdWU6bnVsbH0pLF9jbGFzc1ByaXZhdGVGaWVsZFNldCh0aGlzLF9pbnRlcm5hbFJlbmRlclRhc2ssZSksdGhpcy5vbkNvbnRpbnVlPW51bGx9cmV0dXJuIF9jcmVhdGVDbGFzcyh0LFt7a2V5OiJwcm9taXNlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsX2ludGVybmFsUmVuZGVyVGFzaykuY2FwYWJpbGl0eS5wcm9taXNlfX0se2tleToiY2FuY2VsIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTowO19jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLF9pbnRlcm5hbFJlbmRlclRhc2spLmNhbmNlbChudWxsLHQpfX0se2tleToic2VwYXJhdGVBbm5vdHMiLGdldDpmdW5jdGlvbigpe3ZhciB0PV9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLF9pbnRlcm5hbFJlbmRlclRhc2spLm9wZXJhdG9yTGlzdC5zZXBhcmF0ZUFubm90cztpZighdClyZXR1cm4hMTt2YXIgZT1fY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcyxfaW50ZXJuYWxSZW5kZXJUYXNrKS5hbm5vdGF0aW9uQ2FudmFzTWFwO3JldHVybiB0LmZvcm18fHQuY2FudmFzJiYobnVsbD09ZT92b2lkIDA6ZS5zaXplKT4wfX1dKSx0fSgpO2V4cG9ydHMuUmVuZGVyVGFzaz1SZW5kZXJUYXNrO3ZhciBJbnRlcm5hbFJlbmRlclRhc2s9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe3ZhciByPWUuY2FsbGJhY2ssbj1lLnBhcmFtcyxpPWUub2JqcyxhPWUuY29tbW9uT2JqcyxvPWUuYW5ub3RhdGlvbkNhbnZhc01hcCxzPWUub3BlcmF0b3JMaXN0LGw9ZS5wYWdlSW5kZXgsdT1lLmNhbnZhc0ZhY3RvcnksYz1lLnVzZVJlcXVlc3RBbmltYXRpb25GcmFtZSxoPXZvaWQgMCE9PWMmJmMsZj1lLnBkZkJ1ZyxkPXZvaWQgMCE9PWYmJmYscD1lLnBhZ2VDb2xvcnMsdj12b2lkIDA9PT1wP251bGw6cDtfY2xhc3NDYWxsQ2hlY2sodGhpcyx0KSx0aGlzLmNhbGxiYWNrPXIsdGhpcy5wYXJhbXM9bix0aGlzLm9ianM9aSx0aGlzLmNvbW1vbk9ianM9YSx0aGlzLmFubm90YXRpb25DYW52YXNNYXA9byx0aGlzLm9wZXJhdG9yTGlzdElkeD1udWxsLHRoaXMub3BlcmF0b3JMaXN0PXMsdGhpcy5fcGFnZUluZGV4PWwsdGhpcy5jYW52YXNGYWN0b3J5PXUsdGhpcy5fcGRmQnVnPWQsdGhpcy5wYWdlQ29sb3JzPXYsdGhpcy5ydW5uaW5nPSExLHRoaXMuZ3JhcGhpY3NSZWFkeUNhbGxiYWNrPW51bGwsdGhpcy5ncmFwaGljc1JlYWR5PSExLHRoaXMuX3VzZVJlcXVlc3RBbmltYXRpb25GcmFtZT0hMD09PWgmJiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93LHRoaXMuY2FuY2VsbGVkPSExLHRoaXMuY2FwYWJpbGl0eT0oMCxfdXRpbC5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKSx0aGlzLnRhc2s9bmV3IFJlbmRlclRhc2sodGhpcyksdGhpcy5fY2FuY2VsQm91bmQ9dGhpcy5jYW5jZWwuYmluZCh0aGlzKSx0aGlzLl9jb250aW51ZUJvdW5kPXRoaXMuX2NvbnRpbnVlLmJpbmQodGhpcyksdGhpcy5fc2NoZWR1bGVOZXh0Qm91bmQ9dGhpcy5fc2NoZWR1bGVOZXh0LmJpbmQodGhpcyksdGhpcy5fbmV4dEJvdW5kPXRoaXMuX25leHQuYmluZCh0aGlzKSx0aGlzLl9jYW52YXM9bi5jYW52YXNDb250ZXh0LmNhbnZhc312YXIgZTtyZXR1cm4gX2NyZWF0ZUNsYXNzKHQsW3trZXk6ImNvbXBsZXRlZCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2FwYWJpbGl0eS5wcm9taXNlLmNhdGNoKChmdW5jdGlvbigpe30pKX19LHtrZXk6ImluaXRpYWxpemVHcmFwaGljcyIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHIsbixpPWUudHJhbnNwYXJlbmN5LGE9dm9pZCAwIT09aSYmaSxvPWUub3B0aW9uYWxDb250ZW50Q29uZmlnO2lmKCF0aGlzLmNhbmNlbGxlZCl7aWYodGhpcy5fY2FudmFzKXtpZihfY2xhc3NTdGF0aWNQcml2YXRlRmllbGRTcGVjR2V0KHQsdCxfY2FudmFzSW5Vc2UpLmhhcyh0aGlzLl9jYW52YXMpKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IHVzZSB0aGUgc2FtZSBjYW52YXMgZHVyaW5nIG11bHRpcGxlIHJlbmRlcigpIG9wZXJhdGlvbnMuIFVzZSBkaWZmZXJlbnQgY2FudmFzIG9yIGVuc3VyZSBwcmV2aW91cyBvcGVyYXRpb25zIHdlcmUgY2FuY2VsbGVkIG9yIGNvbXBsZXRlZC4iKTtfY2xhc3NTdGF0aWNQcml2YXRlRmllbGRTcGVjR2V0KHQsdCxfY2FudmFzSW5Vc2UpLmFkZCh0aGlzLl9jYW52YXMpfXRoaXMuX3BkZkJ1ZyYmbnVsbCE9PShyPWdsb2JhbFRoaXMuU3RlcHBlck1hbmFnZXIpJiZ2b2lkIDAhPT1yJiZyLmVuYWJsZWQmJih0aGlzLnN0ZXBwZXI9Z2xvYmFsVGhpcy5TdGVwcGVyTWFuYWdlci5jcmVhdGUodGhpcy5fcGFnZUluZGV4KSx0aGlzLnN0ZXBwZXIuaW5pdCh0aGlzLm9wZXJhdG9yTGlzdCksdGhpcy5zdGVwcGVyLm5leHRCcmVha1BvaW50PXRoaXMuc3RlcHBlci5nZXROZXh0QnJlYWtQb2ludCgpKTt2YXIgcz10aGlzLnBhcmFtcyxsPXMuY2FudmFzQ29udGV4dCx1PXMudmlld3BvcnQsYz1zLnRyYW5zZm9ybSxoPXMuYmFja2dyb3VuZDt0aGlzLmdmeD1uZXcgX2NhbnZhcy5DYW52YXNHcmFwaGljcyhsLHRoaXMuY29tbW9uT2Jqcyx0aGlzLm9ianMsdGhpcy5jYW52YXNGYWN0b3J5LHtvcHRpb25hbENvbnRlbnRDb25maWc6b30sdGhpcy5hbm5vdGF0aW9uQ2FudmFzTWFwLHRoaXMucGFnZUNvbG9ycyksdGhpcy5nZnguYmVnaW5EcmF3aW5nKHt0cmFuc2Zvcm06Yyx2aWV3cG9ydDp1LHRyYW5zcGFyZW5jeTphLGJhY2tncm91bmQ6aH0pLHRoaXMub3BlcmF0b3JMaXN0SWR4PTAsdGhpcy5ncmFwaGljc1JlYWR5PSEwLG51bGw9PT0obj10aGlzLmdyYXBoaWNzUmVhZHlDYWxsYmFjayl8fHZvaWQgMD09PW58fG4uY2FsbCh0aGlzKX19fSx7a2V5OiJjYW5jZWwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGUscj1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06bnVsbCxuPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTowO3RoaXMucnVubmluZz0hMSx0aGlzLmNhbmNlbGxlZD0hMCxudWxsPT09KGU9dGhpcy5nZngpfHx2b2lkIDA9PT1lfHxlLmVuZERyYXdpbmcoKSx0aGlzLl9jYW52YXMmJl9jbGFzc1N0YXRpY1ByaXZhdGVGaWVsZFNwZWNHZXQodCx0LF9jYW52YXNJblVzZSkuZGVsZXRlKHRoaXMuX2NhbnZhcyksdGhpcy5jYWxsYmFjayhyfHxuZXcgX2Rpc3BsYXlfdXRpbHMuUmVuZGVyaW5nQ2FuY2VsbGVkRXhjZXB0aW9uKCJSZW5kZXJpbmcgY2FuY2VsbGVkLCBwYWdlICIuY29uY2F0KHRoaXMuX3BhZ2VJbmRleCsxKSwiY2FudmFzIixuKSl9fSx7a2V5OiJvcGVyYXRvckxpc3RDaGFuZ2VkIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0O3RoaXMuZ3JhcGhpY3NSZWFkeT8obnVsbD09PSh0PXRoaXMuc3RlcHBlcil8fHZvaWQgMD09PXR8fHQudXBkYXRlT3BlcmF0b3JMaXN0KHRoaXMub3BlcmF0b3JMaXN0KSx0aGlzLnJ1bm5pbmd8fHRoaXMuX2NvbnRpbnVlKCkpOnRoaXMuZ3JhcGhpY3NSZWFkeUNhbGxiYWNrfHwodGhpcy5ncmFwaGljc1JlYWR5Q2FsbGJhY2s9dGhpcy5fY29udGludWVCb3VuZCl9fSx7a2V5OiJfY29udGludWUiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5ydW5uaW5nPSEwLHRoaXMuY2FuY2VsbGVkfHwodGhpcy50YXNrLm9uQ29udGludWU/dGhpcy50YXNrLm9uQ29udGludWUodGhpcy5fc2NoZWR1bGVOZXh0Qm91bmQpOnRoaXMuX3NjaGVkdWxlTmV4dCgpKX19LHtrZXk6Il9zY2hlZHVsZU5leHQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0aGlzLl91c2VSZXF1ZXN0QW5pbWF0aW9uRnJhbWU/d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSgoZnVuY3Rpb24oKXt0Ll9uZXh0Qm91bmQoKS5jYXRjaCh0Ll9jYW5jZWxCb3VuZCl9KSk6UHJvbWlzZS5yZXNvbHZlKCkudGhlbih0aGlzLl9uZXh0Qm91bmQpLmNhdGNoKHRoaXMuX2NhbmNlbEJvdW5kKX19LHtrZXk6Il9uZXh0Iix2YWx1ZTooZT1fYXN5bmNUb0dlbmVyYXRvcihfcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6aWYoIXRoaXMuY2FuY2VsbGVkKXtlLm5leHQ9MjticmVha31yZXR1cm4gZS5hYnJ1cHQoInJldHVybiIpO2Nhc2UgMjp0aGlzLm9wZXJhdG9yTGlzdElkeD10aGlzLmdmeC5leGVjdXRlT3BlcmF0b3JMaXN0KHRoaXMub3BlcmF0b3JMaXN0LHRoaXMub3BlcmF0b3JMaXN0SWR4LHRoaXMuX2NvbnRpbnVlQm91bmQsdGhpcy5zdGVwcGVyKSx0aGlzLm9wZXJhdG9yTGlzdElkeD09PXRoaXMub3BlcmF0b3JMaXN0LmFyZ3NBcnJheS5sZW5ndGgmJih0aGlzLnJ1bm5pbmc9ITEsdGhpcy5vcGVyYXRvckxpc3QubGFzdENodW5rJiYodGhpcy5nZnguZW5kRHJhd2luZygpLHRoaXMuX2NhbnZhcyYmX2NsYXNzU3RhdGljUHJpdmF0ZUZpZWxkU3BlY0dldCh0LHQsX2NhbnZhc0luVXNlKS5kZWxldGUodGhpcy5fY2FudmFzKSx0aGlzLmNhbGxiYWNrKCkpKTtjYXNlIDQ6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKSxmdW5jdGlvbigpe3JldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pfV0pLHR9KCksX2NhbnZhc0luVXNlPXt3cml0YWJsZTohMCx2YWx1ZTpuZXcgV2Vha1NldH0sdmVyc2lvbj0iMy4yLjAiO2V4cG9ydHMudmVyc2lvbj12ZXJzaW9uO3ZhciBidWlsZD0iIjtleHBvcnRzLmJ1aWxkPWJ1aWxkfSwodCxlLHIpPT57ZnVuY3Rpb24gbih0KXtyZXR1cm4gbj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgdH0sbih0KX1PYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZS5QcmludEFubm90YXRpb25TdG9yYWdlPWUuQW5ub3RhdGlvblN0b3JhZ2U9dm9pZCAwO3ZhciBpPXIoMSksYT1yKDEzNSksbz1yKDEzOSk7ZnVuY3Rpb24gcyh0LGUpe3JldHVybiBzPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuX19wcm90b19fPWUsdH0scyh0LGUpfWZ1bmN0aW9uIGwodCl7aWYodm9pZCAwPT09dCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiB0fWZ1bmN0aW9uIHUodCl7cmV0dXJuIHU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24odCl7cmV0dXJuIHQuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YodCl9LHUodCl9ZnVuY3Rpb24gYyh0LGUpe3JldHVybiBmdW5jdGlvbih0KXtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiB0fSh0KXx8ZnVuY3Rpb24odCxlKXt2YXIgcj1udWxsPT10P251bGw6InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJnRbU3ltYm9sLml0ZXJhdG9yXXx8dFsiQEBpdGVyYXRvciJdO2lmKG51bGwhPXIpe3ZhciBuLGksYSxvLHM9W10sbD0hMCx1PSExO3RyeXtpZihhPShyPXIuY2FsbCh0KSkubmV4dCwwPT09ZSl7aWYoT2JqZWN0KHIpIT09cilyZXR1cm47bD0hMX1lbHNlIGZvcig7IShsPShuPWEuY2FsbChyKSkuZG9uZSkmJihzLnB1c2gobi52YWx1ZSkscy5sZW5ndGghPT1lKTtsPSEwKTt9Y2F0Y2godCl7dT0hMCxpPXR9ZmluYWxseXt0cnl7aWYoIWwmJm51bGwhPXIucmV0dXJuJiYobz1yLnJldHVybigpLE9iamVjdChvKSE9PW8pKXJldHVybn1maW5hbGx5e2lmKHUpdGhyb3cgaX19cmV0dXJuIHN9fSh0LGUpfHxmKHQsZSl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiBoKHQsZSl7dmFyIHI9InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJnRbU3ltYm9sLml0ZXJhdG9yXXx8dFsiQEBpdGVyYXRvciJdO2lmKCFyKXtpZihBcnJheS5pc0FycmF5KHQpfHwocj1mKHQpKXx8ZSYmdCYmIm51bWJlciI9PXR5cGVvZiB0Lmxlbmd0aCl7ciYmKHQ9cik7dmFyIG49MCxpPWZ1bmN0aW9uKCl7fTtyZXR1cm57czppLG46ZnVuY3Rpb24oKXtyZXR1cm4gbj49dC5sZW5ndGg/e2RvbmU6ITB9Ontkb25lOiExLHZhbHVlOnRbbisrXX19LGU6ZnVuY3Rpb24odCl7dGhyb3cgdH0sZjppfX10aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gaXRlcmF0ZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9dmFyIGEsbz0hMCxzPSExO3JldHVybntzOmZ1bmN0aW9uKCl7cj1yLmNhbGwodCl9LG46ZnVuY3Rpb24oKXt2YXIgdD1yLm5leHQoKTtyZXR1cm4gbz10LmRvbmUsdH0sZTpmdW5jdGlvbih0KXtzPSEwLGE9dH0sZjpmdW5jdGlvbigpe3RyeXtvfHxudWxsPT1yLnJldHVybnx8ci5yZXR1cm4oKX1maW5hbGx5e2lmKHMpdGhyb3cgYX19fX1mdW5jdGlvbiBmKHQsZSl7aWYodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiBkKHQsZSk7dmFyIHI9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpLnNsaWNlKDgsLTEpO3JldHVybiJPYmplY3QiPT09ciYmdC5jb25zdHJ1Y3RvciYmKHI9dC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PXJ8fCJTZXQiPT09cj9BcnJheS5mcm9tKHQpOiJBcmd1bWVudHMiPT09cnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3Qocik/ZCh0LGUpOnZvaWQgMH19ZnVuY3Rpb24gZCh0LGUpeyhudWxsPT1lfHxlPnQubGVuZ3RoKSYmKGU9dC5sZW5ndGgpO2Zvcih2YXIgcj0wLG49bmV3IEFycmF5KGUpO3I8ZTtyKyspbltyXT10W3JdO3JldHVybiBufWZ1bmN0aW9uIHAodCxlKXtpZighKHQgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiB2KHQsZSl7Zm9yKHZhciByPTA7cjxlLmxlbmd0aDtyKyspe3ZhciBpPWVbcl07aS5lbnVtZXJhYmxlPWkuZW51bWVyYWJsZXx8ITEsaS5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGkmJihpLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwodm9pZCAwLGE9ZnVuY3Rpb24odCxlKXtpZigib2JqZWN0IiE9PW4odCl8fG51bGw9PT10KXJldHVybiB0O3ZhciByPXRbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1yKXt2YXIgaT1yLmNhbGwodCwic3RyaW5nIik7aWYoIm9iamVjdCIhPT1uKGkpKXJldHVybiBpO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuIFN0cmluZyh0KX0oaS5rZXkpLCJzeW1ib2wiPT09bihhKT9hOlN0cmluZyhhKSksaSl9dmFyIGF9ZnVuY3Rpb24geSh0LGUscil7cmV0dXJuIGUmJnYodC5wcm90b3R5cGUsZSksciYmdih0LHIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLHR9ZnVuY3Rpb24gbSh0LGUscil7Zyh0LGUpLGUuc2V0KHQscil9ZnVuY3Rpb24gZyh0LGUpe2lmKGUuaGFzKHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBpbml0aWFsaXplIHRoZSBzYW1lIHByaXZhdGUgZWxlbWVudHMgdHdpY2Ugb24gYW4gb2JqZWN0Iil9ZnVuY3Rpb24gYih0LGUscil7cmV0dXJuIGZ1bmN0aW9uKHQsZSxyKXtpZihlLnNldCllLnNldC5jYWxsKHQscik7ZWxzZXtpZighZS53cml0YWJsZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gc2V0IHJlYWQgb25seSBwcml2YXRlIGZpZWxkIik7ZS52YWx1ZT1yfX0odCx3KHQsZSwic2V0Iikscikscn1mdW5jdGlvbiBfKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUuZ2V0P2UuZ2V0LmNhbGwodCk6ZS52YWx1ZX0odCx3KHQsZSwiZ2V0IikpfWZ1bmN0aW9uIHcodCxlLHIpe2lmKCFlLmhhcyh0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gIityKyIgcHJpdmF0ZSBmaWVsZCBvbiBub24taW5zdGFuY2UiKTtyZXR1cm4gZS5nZXQodCl9dmFyIEE9bmV3IFdlYWtNYXAsaz1uZXcgV2Vha01hcCxTPW5ldyBXZWFrU2V0LHg9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dmFyIGU7cCh0aGlzLHQpLGcodGhpcyxlPVMpLGUuYWRkKHRoaXMpLG0odGhpcyxBLHt3cml0YWJsZTohMCx2YWx1ZTohMX0pLG0odGhpcyxrLHt3cml0YWJsZTohMCx2YWx1ZTpuZXcgTWFwfSksdGhpcy5vblNldE1vZGlmaWVkPW51bGwsdGhpcy5vblJlc2V0TW9kaWZpZWQ9bnVsbCx0aGlzLm9uQW5ub3RhdGlvbkVkaXRvcj1udWxsfXJldHVybiB5KHQsW3trZXk6ImdldFZhbHVlIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciByPV8odGhpcyxrKS5nZXQodCk7cmV0dXJuIHZvaWQgMD09PXI/ZTpPYmplY3QuYXNzaWduKGUscil9fSx7a2V5OiJnZXRSYXdWYWx1ZSIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIF8odGhpcyxrKS5nZXQodCl9fSx7a2V5OiJyZW1vdmUiLHZhbHVlOmZ1bmN0aW9uKHQpe2lmKF8odGhpcyxrKS5kZWxldGUodCksMD09PV8odGhpcyxrKS5zaXplJiZ0aGlzLnJlc2V0TW9kaWZpZWQoKSwiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5vbkFubm90YXRpb25FZGl0b3Ipe3ZhciBlLHI9aChfKHRoaXMsaykudmFsdWVzKCkpO3RyeXtmb3Ioci5zKCk7IShlPXIubigpKS5kb25lOylpZihlLnZhbHVlIGluc3RhbmNlb2YgYS5Bbm5vdGF0aW9uRWRpdG9yKXJldHVybn1jYXRjaCh0KXtyLmUodCl9ZmluYWxseXtyLmYoKX10aGlzLm9uQW5ub3RhdGlvbkVkaXRvcihudWxsKX19fSx7a2V5OiJzZXRWYWx1ZSIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgcj1fKHRoaXMsaykuZ2V0KHQpLG49ITE7aWYodm9pZCAwIT09cilmb3IodmFyIGk9MCxvPU9iamVjdC5lbnRyaWVzKGUpO2k8by5sZW5ndGg7aSsrKXt2YXIgcz1jKG9baV0sMiksbD1zWzBdLHU9c1sxXTtyW2xdIT09dSYmKG49ITAscltsXT11KX1lbHNlIG49ITAsXyh0aGlzLGspLnNldCh0LGUpO24mJmZ1bmN0aW9uKHQsZSxyKXtpZighZS5oYXModCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvIGdldCBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiByfSh0aGlzLFMsRSkuY2FsbCh0aGlzKSxlIGluc3RhbmNlb2YgYS5Bbm5vdGF0aW9uRWRpdG9yJiYiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5vbkFubm90YXRpb25FZGl0b3ImJnRoaXMub25Bbm5vdGF0aW9uRWRpdG9yKGUuY29uc3RydWN0b3IuX3R5cGUpfX0se2tleToiaGFzIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gXyh0aGlzLGspLmhhcyh0KX19LHtrZXk6ImdldEFsbCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gXyh0aGlzLGspLnNpemU+MD8oMCxpLm9iamVjdEZyb21NYXApKF8odGhpcyxrKSk6bnVsbH19LHtrZXk6InNpemUiLGdldDpmdW5jdGlvbigpe3JldHVybiBfKHRoaXMsaykuc2l6ZX19LHtrZXk6InJlc2V0TW9kaWZpZWQiLHZhbHVlOmZ1bmN0aW9uKCl7Xyh0aGlzLEEpJiYoYih0aGlzLEEsITEpLCJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLm9uUmVzZXRNb2RpZmllZCYmdGhpcy5vblJlc2V0TW9kaWZpZWQoKSl9fSx7a2V5OiJwcmludCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBUKHRoaXMpfX0se2tleToic2VyaWFsaXphYmxlIixnZXQ6ZnVuY3Rpb24oKXtpZigwPT09Xyh0aGlzLGspLnNpemUpcmV0dXJuIG51bGw7dmFyIHQsZT1uZXcgTWFwLHI9aChfKHRoaXMsaykpO3RyeXtmb3Ioci5zKCk7ISh0PXIubigpKS5kb25lOyl7dmFyIG49Yyh0LnZhbHVlLDIpLGk9blswXSxvPW5bMV0scz1vIGluc3RhbmNlb2YgYS5Bbm5vdGF0aW9uRWRpdG9yP28uc2VyaWFsaXplKCk6bztzJiZlLnNldChpLHMpfX1jYXRjaCh0KXtyLmUodCl9ZmluYWxseXtyLmYoKX1yZXR1cm4gZX19XSxbe2tleToiZ2V0SGFzaCIsdmFsdWU6ZnVuY3Rpb24odCl7aWYoIXQpcmV0dXJuIiI7dmFyIGUscj1uZXcgby5NdXJtdXJIYXNoM182NCxuPWgodCk7dHJ5e2ZvcihuLnMoKTshKGU9bi5uKCkpLmRvbmU7KXt2YXIgaT1jKGUudmFsdWUsMiksYT1pWzBdLHM9aVsxXTtyLnVwZGF0ZSgiIi5jb25jYXQoYSwiOiIpLmNvbmNhdChKU09OLnN0cmluZ2lmeShzKSkpfX1jYXRjaCh0KXtuLmUodCl9ZmluYWxseXtuLmYoKX1yZXR1cm4gci5oZXhkaWdlc3QoKX19XSksdH0oKTtmdW5jdGlvbiBFKCl7Xyh0aGlzLEEpfHwoYih0aGlzLEEsITApLCJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLm9uU2V0TW9kaWZpZWQmJnRoaXMub25TZXRNb2RpZmllZCgpKX1lLkFubm90YXRpb25TdG9yYWdlPXg7dmFyIFA9bmV3IFdlYWtNYXAsVD1mdW5jdGlvbih0KXshZnVuY3Rpb24odCxlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSYmbnVsbCE9PWUpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTt0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGUmJmUucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6dCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZSYmcyh0LGUpfShvLHQpO3ZhciBlLHIsYT0oZT1vLHI9ZnVuY3Rpb24oKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdClyZXR1cm4hMTtpZihSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLChmdW5jdGlvbigpe30pKSksITB9Y2F0Y2godCl7cmV0dXJuITF9fSgpLGZ1bmN0aW9uKCl7dmFyIHQsaT11KGUpO2lmKHIpe3ZhciBhPXUodGhpcykuY29uc3RydWN0b3I7dD1SZWZsZWN0LmNvbnN0cnVjdChpLGFyZ3VtZW50cyxhKX1lbHNlIHQ9aS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGZ1bmN0aW9uKHQsZSl7aWYoZSYmKCJvYmplY3QiPT09bihlKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGUpKXJldHVybiBlO2lmKHZvaWQgMCE9PWUpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gbCh0KX0odGhpcyx0KX0pO2Z1bmN0aW9uIG8odCl7dmFyIGU7cmV0dXJuIHAodGhpcyxvKSxtKGwoZT1hLmNhbGwodGhpcykpLFAse3dyaXRhYmxlOiEwLHZhbHVlOm51bGx9KSxiKGwoZSksUCxzdHJ1Y3R1cmVkQ2xvbmUodC5zZXJpYWxpemFibGUpKSxlfXJldHVybiB5KG8sW3trZXk6InByaW50IixnZXQ6ZnVuY3Rpb24oKXsoMCxpLnVucmVhY2hhYmxlKSgiU2hvdWxkIG5vdCBjYWxsIFByaW50QW5ub3RhdGlvblN0b3JhZ2UucHJpbnQiKX19LHtrZXk6InNlcmlhbGl6YWJsZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIF8odGhpcyxQKX19XSksb30oeCk7ZS5QcmludEFubm90YXRpb25TdG9yYWdlPVR9LCh0LGUscik9PntmdW5jdGlvbiBuKHQpe3JldHVybiBuPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiB0fSxuKHQpfU9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxlLkFubm90YXRpb25FZGl0b3I9dm9pZCAwO3ZhciBpPXIoMTM2KSxhPXIoMSk7ZnVuY3Rpb24gbyh0LGUpe3JldHVybiBmdW5jdGlvbih0KXtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiB0fSh0KXx8ZnVuY3Rpb24odCxlKXt2YXIgcj1udWxsPT10P251bGw6InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJnRbU3ltYm9sLml0ZXJhdG9yXXx8dFsiQEBpdGVyYXRvciJdO2lmKG51bGwhPXIpe3ZhciBuLGksYSxvLHM9W10sbD0hMCx1PSExO3RyeXtpZihhPShyPXIuY2FsbCh0KSkubmV4dCwwPT09ZSl7aWYoT2JqZWN0KHIpIT09cilyZXR1cm47bD0hMX1lbHNlIGZvcig7IShsPShuPWEuY2FsbChyKSkuZG9uZSkmJihzLnB1c2gobi52YWx1ZSkscy5sZW5ndGghPT1lKTtsPSEwKTt9Y2F0Y2godCl7dT0hMCxpPXR9ZmluYWxseXt0cnl7aWYoIWwmJm51bGwhPXIucmV0dXJuJiYobz1yLnJldHVybigpLE9iamVjdChvKSE9PW8pKXJldHVybn1maW5hbGx5e2lmKHUpdGhyb3cgaX19cmV0dXJuIHN9fSh0LGUpfHxmdW5jdGlvbih0LGUpe2lmKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gcyh0LGUpO3ZhciByPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KS5zbGljZSg4LC0xKTtyZXR1cm4iT2JqZWN0Ij09PXImJnQuY29uc3RydWN0b3ImJihyPXQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1yfHwiU2V0Ij09PXI/QXJyYXkuZnJvbSh0KToiQXJndW1lbnRzIj09PXJ8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KHIpP3ModCxlKTp2b2lkIDB9fSh0LGUpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gcyh0LGUpeyhudWxsPT1lfHxlPnQubGVuZ3RoKSYmKGU9dC5sZW5ndGgpO2Zvcih2YXIgcj0wLG49bmV3IEFycmF5KGUpO3I8ZTtyKyspbltyXT10W3JdO3JldHVybiBufWZ1bmN0aW9uIGwodCxlKXtmb3IodmFyIHI9MDtyPGUubGVuZ3RoO3IrKyl7dmFyIG49ZVtyXTtuLmVudW1lcmFibGU9bi5lbnVtZXJhYmxlfHwhMSxuLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gbiYmKG4ud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGMobi5rZXkpLG4pfX1mdW5jdGlvbiB1KHQsZSxyKXtyZXR1cm4oZT1jKGUpKWluIHQ/T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7dmFsdWU6cixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnRbZV09cix0fWZ1bmN0aW9uIGModCl7dmFyIGU9ZnVuY3Rpb24odCxlKXtpZigib2JqZWN0IiE9PW4odCl8fG51bGw9PT10KXJldHVybiB0O3ZhciByPXRbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1yKXt2YXIgaT1yLmNhbGwodCwic3RyaW5nIik7aWYoIm9iamVjdCIhPT1uKGkpKXJldHVybiBpO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuIFN0cmluZyh0KX0odCk7cmV0dXJuInN5bWJvbCI9PT1uKGUpP2U6U3RyaW5nKGUpfWZ1bmN0aW9uIGgodCxlLHIpeyFmdW5jdGlvbih0LGUpe2lmKGUuaGFzKHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBpbml0aWFsaXplIHRoZSBzYW1lIHByaXZhdGUgZWxlbWVudHMgdHdpY2Ugb24gYW4gb2JqZWN0Iil9KHQsZSksZS5zZXQodCxyKX1mdW5jdGlvbiBmKHQsZSxyKXtyZXR1cm4gZnVuY3Rpb24odCxlLHIpe2lmKGUuc2V0KWUuc2V0LmNhbGwodCxyKTtlbHNle2lmKCFlLndyaXRhYmxlKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byBzZXQgcmVhZCBvbmx5IHByaXZhdGUgZmllbGQiKTtlLnZhbHVlPXJ9fSh0LHAodCxlLCJzZXQiKSxyKSxyfWZ1bmN0aW9uIGQodCxlKXtyZXR1cm4gZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5nZXQ/ZS5nZXQuY2FsbCh0KTplLnZhbHVlfSh0LHAodCxlLCJnZXQiKSl9ZnVuY3Rpb24gcCh0LGUscil7aWYoIWUuaGFzKHQpKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byAiK3IrIiBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiBlLmdldCh0KX12YXIgdj1uZXcgV2Vha01hcCx5PW5ldyBXZWFrTWFwLG09bmV3IFdlYWtNYXAsZz1uZXcgV2Vha01hcCxiPW5ldyBXZWFrTWFwLF89bmV3IFdlYWtNYXAsdz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7IWZ1bmN0aW9uKHQsZSl7aWYoISh0IGluc3RhbmNlb2YgZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsdCksaCh0aGlzLHYse3dyaXRhYmxlOiEwLHZhbHVlOnRoaXMuZm9jdXNpbi5iaW5kKHRoaXMpfSksaCh0aGlzLHkse3dyaXRhYmxlOiEwLHZhbHVlOnRoaXMuZm9jdXNvdXQuYmluZCh0aGlzKX0pLGgodGhpcyxtLHt3cml0YWJsZTohMCx2YWx1ZTohMX0pLGgodGhpcyxnLHt3cml0YWJsZTohMCx2YWx1ZTohMX0pLGgodGhpcyxiLHt3cml0YWJsZTohMCx2YWx1ZTohMX0pLHUodGhpcywiX3VpTWFuYWdlciIsbnVsbCksaCh0aGlzLF8se3dyaXRhYmxlOiEwLHZhbHVlOnQuX3pJbmRleCsrfSksdGhpcy5jb25zdHJ1Y3Rvcj09PXQmJigwLGEudW5yZWFjaGFibGUpKCJDYW5ub3QgaW5pdGlhbGl6ZSBBbm5vdGF0aW9uRWRpdG9yLiIpLHRoaXMucGFyZW50PWUucGFyZW50LHRoaXMuaWQ9ZS5pZCx0aGlzLndpZHRoPXRoaXMuaGVpZ2h0PW51bGwsdGhpcy5wYWdlSW5kZXg9ZS5wYXJlbnQucGFnZUluZGV4LHRoaXMubmFtZT1lLm5hbWUsdGhpcy5kaXY9bnVsbCx0aGlzLl91aU1hbmFnZXI9ZS51aU1hbmFnZXI7dmFyIHI9dGhpcy5wYXJlbnQudmlld3BvcnQsbj1yLnJvdGF0aW9uLGk9ci5yYXdEaW1zLHM9aS5wYWdlV2lkdGgsbD1pLnBhZ2VIZWlnaHQsYz1pLnBhZ2VYLGY9aS5wYWdlWTt0aGlzLnJvdGF0aW9uPW4sdGhpcy5wYWdlRGltZW5zaW9ucz1bcyxsXSx0aGlzLnBhZ2VUcmFuc2xhdGlvbj1bYyxmXTt2YXIgZD1vKHRoaXMucGFyZW50RGltZW5zaW9ucywyKSxwPWRbMF0sdz1kWzFdO3RoaXMueD1lLngvcCx0aGlzLnk9ZS55L3csdGhpcy5pc0F0dGFjaGVkVG9ET009ITF9dmFyIGUscixuO3JldHVybiBlPXQsbj1be2tleToiX2RlZmF1bHRMaW5lQ29sb3IiLGdldDpmdW5jdGlvbigpe3JldHVybigwLGEuc2hhZG93KSh0aGlzLCJfZGVmYXVsdExpbmVDb2xvciIsdGhpcy5fY29sb3JNYW5hZ2VyLmdldEhleENvZGUoIkNhbnZhc1RleHQiKSl9fSx7a2V5OiJkZXNlcmlhbGl6ZSIsdmFsdWU6ZnVuY3Rpb24odCxlLHIpe3ZhciBuPW5ldyB0aGlzLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcih7cGFyZW50OmUsaWQ6ZS5nZXROZXh0SWQoKSx1aU1hbmFnZXI6cn0pO24ucm90YXRpb249dC5yb3RhdGlvbjt2YXIgaT1vKG4ucGFnZURpbWVuc2lvbnMsMiksYT1pWzBdLHM9aVsxXSxsPW8obi5nZXRSZWN0SW5DdXJyZW50Q29vcmRzKHQucmVjdCxzKSw0KSx1PWxbMF0sYz1sWzFdLGg9bFsyXSxmPWxbM107cmV0dXJuIG4ueD11L2Esbi55PWMvcyxuLndpZHRoPWgvYSxuLmhlaWdodD1mL3Msbn19XSwocj1be2tleToiYWRkQ29tbWFuZHMiLHZhbHVlOmZ1bmN0aW9uKHQpe3RoaXMuX3VpTWFuYWdlci5hZGRDb21tYW5kcyh0KX19LHtrZXk6ImN1cnJlbnRMYXllciIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3VpTWFuYWdlci5jdXJyZW50TGF5ZXJ9fSx7a2V5OiJzZXRJbkJhY2tncm91bmQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5kaXYuc3R5bGUuekluZGV4PTB9fSx7a2V5OiJzZXRJbkZvcmVncm91bmQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5kaXYuc3R5bGUuekluZGV4PWQodGhpcyxfKX19LHtrZXk6InNldFBhcmVudCIsdmFsdWU6ZnVuY3Rpb24odCl7bnVsbCE9PXQmJih0aGlzLnBhZ2VJbmRleD10LnBhZ2VJbmRleCx0aGlzLnBhZ2VEaW1lbnNpb25zPXQucGFnZURpbWVuc2lvbnMpLHRoaXMucGFyZW50PXR9fSx7a2V5OiJmb2N1c2luIix2YWx1ZTpmdW5jdGlvbih0KXtkKHRoaXMsbSk/Zih0aGlzLG0sITEpOnRoaXMucGFyZW50LnNldFNlbGVjdGVkKHRoaXMpfX0se2tleToiZm9jdXNvdXQiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlO2lmKHRoaXMuaXNBdHRhY2hlZFRvRE9NKXt2YXIgcj10LnJlbGF0ZWRUYXJnZXQ7bnVsbCE9ciYmci5jbG9zZXN0KCIjIi5jb25jYXQodGhpcy5pZCkpfHwodC5wcmV2ZW50RGVmYXVsdCgpLG51bGwhPT0oZT10aGlzLnBhcmVudCkmJnZvaWQgMCE9PWUmJmUuaXNNdWx0aXBsZVNlbGVjdGlvbnx8dGhpcy5jb21taXRPclJlbW92ZSgpKX19fSx7a2V5OiJjb21taXRPclJlbW92ZSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmlzRW1wdHkoKT90aGlzLnJlbW92ZSgpOnRoaXMuY29tbWl0KCl9fSx7a2V5OiJjb21taXQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5hZGRUb0Fubm90YXRpb25TdG9yYWdlKCl9fSx7a2V5OiJhZGRUb0Fubm90YXRpb25TdG9yYWdlIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX3VpTWFuYWdlci5hZGRUb0Fubm90YXRpb25TdG9yYWdlKHRoaXMpfX0se2tleToiZHJhZ3N0YXJ0Iix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnBhcmVudC5kaXYuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7dGhpcy5zdGFydFg9dC5jbGllbnRYLWUueCx0aGlzLnN0YXJ0WT10LmNsaWVudFktZS55LHQuZGF0YVRyYW5zZmVyLnNldERhdGEoInRleHQvcGxhaW4iLHRoaXMuaWQpLHQuZGF0YVRyYW5zZmVyLmVmZmVjdEFsbG93ZWQ9Im1vdmUifX0se2tleToic2V0QXQiLHZhbHVlOmZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBpPW8odGhpcy5wYXJlbnREaW1lbnNpb25zLDIpLGE9aVswXSxzPWlbMV0sbD1vKHRoaXMuc2NyZWVuVG9QYWdlVHJhbnNsYXRpb24ocixuKSwyKTtyPWxbMF0sbj1sWzFdLHRoaXMueD0odCtyKS9hLHRoaXMueT0oZStuKS9zLHRoaXMuZGl2LnN0eWxlLmxlZnQ9IiIuY29uY2F0KDEwMCp0aGlzLngsIiUiKSx0aGlzLmRpdi5zdHlsZS50b3A9IiIuY29uY2F0KDEwMCp0aGlzLnksIiUiKX19LHtrZXk6InRyYW5zbGF0ZSIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgcj1vKHRoaXMucGFyZW50RGltZW5zaW9ucywyKSxuPXJbMF0saT1yWzFdLGE9byh0aGlzLnNjcmVlblRvUGFnZVRyYW5zbGF0aW9uKHQsZSksMik7dD1hWzBdLGU9YVsxXSx0aGlzLngrPXQvbix0aGlzLnkrPWUvaSx0aGlzLmRpdi5zdHlsZS5sZWZ0PSIiLmNvbmNhdCgxMDAqdGhpcy54LCIlIiksdGhpcy5kaXYuc3R5bGUudG9wPSIiLmNvbmNhdCgxMDAqdGhpcy55LCIlIil9fSx7a2V5OiJzY3JlZW5Ub1BhZ2VUcmFuc2xhdGlvbiIsdmFsdWU6ZnVuY3Rpb24odCxlKXtzd2l0Y2godGhpcy5wYXJlbnRSb3RhdGlvbil7Y2FzZSA5MDpyZXR1cm5bZSwtdF07Y2FzZSAxODA6cmV0dXJuWy10LC1lXTtjYXNlIDI3MDpyZXR1cm5bLWUsdF07ZGVmYXVsdDpyZXR1cm5bdCxlXX19fSx7a2V5OiJwYXJlbnRTY2FsZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3VpTWFuYWdlci52aWV3UGFyYW1ldGVycy5yZWFsU2NhbGV9fSx7a2V5OiJwYXJlbnRSb3RhdGlvbiIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3VpTWFuYWdlci52aWV3UGFyYW1ldGVycy5yb3RhdGlvbn19LHtrZXk6InBhcmVudERpbWVuc2lvbnMiLGdldDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX3VpTWFuYWdlci52aWV3UGFyYW1ldGVycy5yZWFsU2NhbGUsZT1vKHRoaXMucGFnZURpbWVuc2lvbnMsMik7cmV0dXJuW2VbMF0qdCxlWzFdKnRdfX0se2tleToic2V0RGltcyIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgcj1vKHRoaXMucGFyZW50RGltZW5zaW9ucywyKSxuPXJbMF0saT1yWzFdO3RoaXMuZGl2LnN0eWxlLndpZHRoPSIiLmNvbmNhdCgxMDAqdC9uLCIlIiksdGhpcy5kaXYuc3R5bGUuaGVpZ2h0PSIiLmNvbmNhdCgxMDAqZS9pLCIlIil9fSx7a2V5OiJmaXhEaW1zIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuZGl2LnN0eWxlLGU9dC5oZWlnaHQscj10LndpZHRoLG49ci5lbmRzV2l0aCgiJSIpLGk9ZS5lbmRzV2l0aCgiJSIpO2lmKCFufHwhaSl7dmFyIGE9byh0aGlzLnBhcmVudERpbWVuc2lvbnMsMikscz1hWzBdLGw9YVsxXTtufHwodC53aWR0aD0iIi5jb25jYXQoMTAwKnBhcnNlRmxvYXQocikvcywiJSIpKSxpfHwodC5oZWlnaHQ9IiIuY29uY2F0KDEwMCpwYXJzZUZsb2F0KGUpL2wsIiUiKSl9fX0se2tleToiZ2V0SW5pdGlhbFRyYW5zbGF0aW9uIix2YWx1ZTpmdW5jdGlvbigpe3JldHVyblswLDBdfX0se2tleToicmVuZGVyIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZGl2PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRoaXMuZGl2LnNldEF0dHJpYnV0ZSgiZGF0YS1lZGl0b3Itcm90YXRpb24iLCgzNjAtdGhpcy5yb3RhdGlvbiklMzYwKSx0aGlzLmRpdi5jbGFzc05hbWU9dGhpcy5uYW1lLHRoaXMuZGl2LnNldEF0dHJpYnV0ZSgiaWQiLHRoaXMuaWQpLHRoaXMuZGl2LnNldEF0dHJpYnV0ZSgidGFiSW5kZXgiLDApLHRoaXMuc2V0SW5Gb3JlZ3JvdW5kKCksdGhpcy5kaXYuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXNpbiIsZCh0aGlzLHYpKSx0aGlzLmRpdi5hZGRFdmVudExpc3RlbmVyKCJmb2N1c291dCIsZCh0aGlzLHkpKTt2YXIgdD1vKHRoaXMuZ2V0SW5pdGlhbFRyYW5zbGF0aW9uKCksMiksZT10WzBdLHI9dFsxXTtyZXR1cm4gdGhpcy50cmFuc2xhdGUoZSxyKSwoMCxpLmJpbmRFdmVudHMpKHRoaXMsdGhpcy5kaXYsWyJkcmFnc3RhcnQiLCJwb2ludGVyZG93biJdKSx0aGlzLmRpdn19LHtrZXk6InBvaW50ZXJkb3duIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1hLkZlYXR1cmVUZXN0LnBsYXRmb3JtLmlzTWFjOzAhPT10LmJ1dHRvbnx8dC5jdHJsS2V5JiZlP3QucHJldmVudERlZmF1bHQoKToodC5jdHJsS2V5JiYhZXx8dC5zaGlmdEtleXx8dC5tZXRhS2V5JiZlP3RoaXMucGFyZW50LnRvZ2dsZVNlbGVjdGVkKHRoaXMpOnRoaXMucGFyZW50LnNldFNlbGVjdGVkKHRoaXMpLGYodGhpcyxtLCEwKSl9fSx7a2V5OiJnZXRSZWN0Iix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciByPXRoaXMucGFyZW50U2NhbGUsbj1vKHRoaXMucGFnZURpbWVuc2lvbnMsMiksaT1uWzBdLGE9blsxXSxzPW8odGhpcy5wYWdlVHJhbnNsYXRpb24sMiksbD1zWzBdLHU9c1sxXSxjPXQvcixoPWUvcixmPXRoaXMueCppLGQ9dGhpcy55KmEscD10aGlzLndpZHRoKmksdj10aGlzLmhlaWdodCphO3N3aXRjaCh0aGlzLnJvdGF0aW9uKXtjYXNlIDA6cmV0dXJuW2YrYytsLGEtZC1oLXYrdSxmK2MrcCtsLGEtZC1oK3VdO2Nhc2UgOTA6cmV0dXJuW2YraCtsLGEtZCtjK3UsZitoK3YrbCxhLWQrYytwK3VdO2Nhc2UgMTgwOnJldHVybltmLWMtcCtsLGEtZCtoK3UsZi1jK2wsYS1kK2grdit1XTtjYXNlIDI3MDpyZXR1cm5bZi1oLXYrbCxhLWQtYy1wK3UsZi1oK2wsYS1kLWMrdV07ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgcm90YXRpb24iKX19fSx7a2V5OiJnZXRSZWN0SW5DdXJyZW50Q29vcmRzIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciByPW8odCw0KSxuPXJbMF0saT1yWzFdLGE9clsyXSxzPXJbM10sbD1hLW4sdT1zLWk7c3dpdGNoKHRoaXMucm90YXRpb24pe2Nhc2UgMDpyZXR1cm5bbixlLXMsbCx1XTtjYXNlIDkwOnJldHVybltuLGUtaSx1LGxdO2Nhc2UgMTgwOnJldHVyblthLGUtaSxsLHVdO2Nhc2UgMjcwOnJldHVyblthLGUtcyx1LGxdO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHJvdGF0aW9uIil9fX0se2tleToib25jZUFkZGVkIix2YWx1ZTpmdW5jdGlvbigpe319LHtrZXk6ImlzRW1wdHkiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuITF9fSx7a2V5OiJlbmFibGVFZGl0TW9kZSIsdmFsdWU6ZnVuY3Rpb24oKXtmKHRoaXMsYiwhMCl9fSx7a2V5OiJkaXNhYmxlRWRpdE1vZGUiLHZhbHVlOmZ1bmN0aW9uKCl7Zih0aGlzLGIsITEpfX0se2tleToiaXNJbkVkaXRNb2RlIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBkKHRoaXMsYil9fSx7a2V5OiJzaG91bGRHZXRLZXlib2FyZEV2ZW50cyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4hMX19LHtrZXk6Im5lZWRzVG9CZVJlYnVpbHQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGl2JiYhdGhpcy5pc0F0dGFjaGVkVG9ET019fSx7a2V5OiJyZWJ1aWxkIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0O251bGw9PT0odD10aGlzLmRpdil8fHZvaWQgMD09PXR8fHQuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXNpbiIsZCh0aGlzLHYpKX19LHtrZXk6InNlcmlhbGl6ZSIsdmFsdWU6ZnVuY3Rpb24oKXsoMCxhLnVucmVhY2hhYmxlKSgiQW4gZWRpdG9yIG11c3QgYmUgc2VyaWFsaXphYmxlIil9fSx7a2V5OiJyZW1vdmUiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5kaXYucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZm9jdXNpbiIsZCh0aGlzLHYpKSx0aGlzLmRpdi5yZW1vdmVFdmVudExpc3RlbmVyKCJmb2N1c291dCIsZCh0aGlzLHkpKSx0aGlzLmlzRW1wdHkoKXx8dGhpcy5jb21taXQoKSx0aGlzLnBhcmVudC5yZW1vdmUodGhpcyl9fSx7a2V5OiJzZWxlY3QiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ7bnVsbD09PSh0PXRoaXMuZGl2KXx8dm9pZCAwPT09dHx8dC5jbGFzc0xpc3QuYWRkKCJzZWxlY3RlZEVkaXRvciIpfX0se2tleToidW5zZWxlY3QiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ7bnVsbD09PSh0PXRoaXMuZGl2KXx8dm9pZCAwPT09dHx8dC5jbGFzc0xpc3QucmVtb3ZlKCJzZWxlY3RlZEVkaXRvciIpfX0se2tleToidXBkYXRlUGFyYW1zIix2YWx1ZTpmdW5jdGlvbih0LGUpe319LHtrZXk6ImRpc2FibGVFZGl0aW5nIix2YWx1ZTpmdW5jdGlvbigpe319LHtrZXk6ImVuYWJsZUVkaXRpbmciLHZhbHVlOmZ1bmN0aW9uKCl7fX0se2tleToicHJvcGVydGllc1RvVXBkYXRlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm57fX19LHtrZXk6ImNvbnRlbnREaXYiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRpdn19LHtrZXk6ImlzRWRpdGluZyIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGQodGhpcyxnKX0sc2V0OmZ1bmN0aW9uKHQpe2YodGhpcyxnLHQpLHQ/KHRoaXMucGFyZW50LnNldFNlbGVjdGVkKHRoaXMpLHRoaXMucGFyZW50LnNldEFjdGl2ZUVkaXRvcih0aGlzKSk6dGhpcy5wYXJlbnQuc2V0QWN0aXZlRWRpdG9yKG51bGwpfX1dKSYmbChlLnByb3RvdHlwZSxyKSxuJiZsKGUsbiksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksdH0oKTtlLkFubm90YXRpb25FZGl0b3I9dyx1KHcsIl9jb2xvck1hbmFnZXIiLG5ldyBpLkNvbG9yTWFuYWdlciksdSh3LCJfekluZGV4IiwxKX0sKHQsZSxyKT0+e2Z1bmN0aW9uIG4odCl7cmV0dXJuIG49ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LG4odCl9T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGUuS2V5Ym9hcmRNYW5hZ2VyPWUuQ29tbWFuZE1hbmFnZXI9ZS5Db2xvck1hbmFnZXI9ZS5Bbm5vdGF0aW9uRWRpdG9yVUlNYW5hZ2VyPXZvaWQgMCxlLmJpbmRFdmVudHM9ZnVuY3Rpb24odCxlLHIpe3ZhciBuLGk9XyhyKTt0cnl7Zm9yKGkucygpOyEobj1pLm4oKSkuZG9uZTspe3ZhciBhPW4udmFsdWU7ZS5hZGRFdmVudExpc3RlbmVyKGEsdFthXS5iaW5kKHQpKX19Y2F0Y2godCl7aS5lKHQpfWZpbmFsbHl7aS5mKCl9fSxlLm9wYWNpdHlUb0hleD1mdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5yb3VuZChNYXRoLm1pbigyNTUsTWF0aC5tYXgoMSwyNTUqdCkpKS50b1N0cmluZygxNikucGFkU3RhcnQoMiwiMCIpfTt2YXIgaT1yKDEpLGE9cigxMzcpO2Z1bmN0aW9uIG8odCl7cmV0dXJuIGZ1bmN0aW9uKHQpe2lmKEFycmF5LmlzQXJyYXkodCkpcmV0dXJuIEEodCl9KHQpfHxmdW5jdGlvbih0KXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmbnVsbCE9dFtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT10WyJAQGl0ZXJhdG9yIl0pcmV0dXJuIEFycmF5LmZyb20odCl9KHQpfHx3KHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIHModCxlLHIpe3JldHVybihlPXAoZSkpaW4gdD9PYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLHt2YWx1ZTpyLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6dFtlXT1yLHR9ZnVuY3Rpb24gbCh0LGUpe3JldHVybiBmdW5jdGlvbih0KXtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiB0fSh0KXx8ZnVuY3Rpb24odCxlKXt2YXIgcj1udWxsPT10P251bGw6InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJnRbU3ltYm9sLml0ZXJhdG9yXXx8dFsiQEBpdGVyYXRvciJdO2lmKG51bGwhPXIpe3ZhciBuLGksYSxvLHM9W10sbD0hMCx1PSExO3RyeXtpZihhPShyPXIuY2FsbCh0KSkubmV4dCwwPT09ZSl7aWYoT2JqZWN0KHIpIT09cilyZXR1cm47bD0hMX1lbHNlIGZvcig7IShsPShuPWEuY2FsbChyKSkuZG9uZSkmJihzLnB1c2gobi52YWx1ZSkscy5sZW5ndGghPT1lKTtsPSEwKTt9Y2F0Y2godCl7dT0hMCxpPXR9ZmluYWxseXt0cnl7aWYoIWwmJm51bGwhPXIucmV0dXJuJiYobz1yLnJldHVybigpLE9iamVjdChvKSE9PW8pKXJldHVybn1maW5hbGx5e2lmKHUpdGhyb3cgaX19cmV0dXJuIHN9fSh0LGUpfHx3KHQsZSl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiB1KHQsZSl7eSh0LGUpLGUuYWRkKHQpfWZ1bmN0aW9uIGModCxlLHIpe2lmKCFlLmhhcyh0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gZ2V0IHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7cmV0dXJuIHJ9ZnVuY3Rpb24gaCh0LGUpe2lmKCEodCBpbnN0YW5jZW9mIGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIGYodCxlKXtmb3IodmFyIHI9MDtyPGUubGVuZ3RoO3IrKyl7dmFyIG49ZVtyXTtuLmVudW1lcmFibGU9bi5lbnVtZXJhYmxlfHwhMSxuLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gbiYmKG4ud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LHAobi5rZXkpLG4pfX1mdW5jdGlvbiBkKHQsZSxyKXtyZXR1cm4gZSYmZih0LnByb3RvdHlwZSxlKSxyJiZmKHQsciksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksdH1mdW5jdGlvbiBwKHQpe3ZhciBlPWZ1bmN0aW9uKHQsZSl7aWYoIm9iamVjdCIhPT1uKHQpfHxudWxsPT09dClyZXR1cm4gdDt2YXIgcj10W1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09cil7dmFyIGk9ci5jYWxsKHQsInN0cmluZyIpO2lmKCJvYmplY3QiIT09bihpKSlyZXR1cm4gaTt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybiBTdHJpbmcodCl9KHQpO3JldHVybiJzeW1ib2wiPT09bihlKT9lOlN0cmluZyhlKX1mdW5jdGlvbiB2KHQsZSxyKXt5KHQsZSksZS5zZXQodCxyKX1mdW5jdGlvbiB5KHQsZSl7aWYoZS5oYXModCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGluaXRpYWxpemUgdGhlIHNhbWUgcHJpdmF0ZSBlbGVtZW50cyB0d2ljZSBvbiBhbiBvYmplY3QiKX1mdW5jdGlvbiBtKHQsZSxyKXtyZXR1cm4gZnVuY3Rpb24odCxlLHIpe2lmKGUuc2V0KWUuc2V0LmNhbGwodCxyKTtlbHNle2lmKCFlLndyaXRhYmxlKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byBzZXQgcmVhZCBvbmx5IHByaXZhdGUgZmllbGQiKTtlLnZhbHVlPXJ9fSh0LGIodCxlLCJzZXQiKSxyKSxyfWZ1bmN0aW9uIGcodCxlKXtyZXR1cm4gZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5nZXQ/ZS5nZXQuY2FsbCh0KTplLnZhbHVlfSh0LGIodCxlLCJnZXQiKSl9ZnVuY3Rpb24gYih0LGUscil7aWYoIWUuaGFzKHQpKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byAiK3IrIiBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiBlLmdldCh0KX1mdW5jdGlvbiBfKHQsZSl7dmFyIHI9InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJnRbU3ltYm9sLml0ZXJhdG9yXXx8dFsiQEBpdGVyYXRvciJdO2lmKCFyKXtpZihBcnJheS5pc0FycmF5KHQpfHwocj13KHQpKXx8ZSYmdCYmIm51bWJlciI9PXR5cGVvZiB0Lmxlbmd0aCl7ciYmKHQ9cik7dmFyIG49MCxpPWZ1bmN0aW9uKCl7fTtyZXR1cm57czppLG46ZnVuY3Rpb24oKXtyZXR1cm4gbj49dC5sZW5ndGg/e2RvbmU6ITB9Ontkb25lOiExLHZhbHVlOnRbbisrXX19LGU6ZnVuY3Rpb24odCl7dGhyb3cgdH0sZjppfX10aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gaXRlcmF0ZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9dmFyIGEsbz0hMCxzPSExO3JldHVybntzOmZ1bmN0aW9uKCl7cj1yLmNhbGwodCl9LG46ZnVuY3Rpb24oKXt2YXIgdD1yLm5leHQoKTtyZXR1cm4gbz10LmRvbmUsdH0sZTpmdW5jdGlvbih0KXtzPSEwLGE9dH0sZjpmdW5jdGlvbigpe3RyeXtvfHxudWxsPT1yLnJldHVybnx8ci5yZXR1cm4oKX1maW5hbGx5e2lmKHMpdGhyb3cgYX19fX1mdW5jdGlvbiB3KHQsZSl7aWYodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiBBKHQsZSk7dmFyIHI9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpLnNsaWNlKDgsLTEpO3JldHVybiJPYmplY3QiPT09ciYmdC5jb25zdHJ1Y3RvciYmKHI9dC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PXJ8fCJTZXQiPT09cj9BcnJheS5mcm9tKHQpOiJBcmd1bWVudHMiPT09cnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3Qocik/QSh0LGUpOnZvaWQgMH19ZnVuY3Rpb24gQSh0LGUpeyhudWxsPT1lfHxlPnQubGVuZ3RoKSYmKGU9dC5sZW5ndGgpO2Zvcih2YXIgcj0wLG49bmV3IEFycmF5KGUpO3I8ZTtyKyspbltyXT10W3JdO3JldHVybiBufXZhciBrPW5ldyBXZWFrTWFwLFM9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7aCh0aGlzLHQpLHYodGhpcyxrLHt3cml0YWJsZTohMCx2YWx1ZTowfSl9cmV0dXJuIGQodCxbe2tleToiZ2V0SWQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQsZTtyZXR1cm4iIi5jb25jYXQoaS5Bbm5vdGF0aW9uRWRpdG9yUHJlZml4KS5jb25jYXQoKG0odGhpcyxrLCh0PWcodGhpcyxrKSxlPXQrKyx0KSksZSkpfX1dKSx0fSgpLHg9bmV3IFdlYWtNYXAsRT1uZXcgV2Vha01hcCxQPW5ldyBXZWFrTWFwLFQ9bmV3IFdlYWtNYXAsQz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06MTI4O2godGhpcyx0KSx2KHRoaXMseCx7d3JpdGFibGU6ITAsdmFsdWU6W119KSx2KHRoaXMsRSx7d3JpdGFibGU6ITAsdmFsdWU6ITF9KSx2KHRoaXMsUCx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksdih0aGlzLFQse3dyaXRhYmxlOiEwLHZhbHVlOi0xfSksbSh0aGlzLFAsZSl9cmV0dXJuIGQodCxbe2tleToiYWRkIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmNtZCxyPXQudW5kbyxuPXQubXVzdEV4ZWMsaT10LnR5cGUsYT12b2lkIDA9PT1pP05hTjppLG89dC5vdmVyd3JpdGVJZlNhbWVUeXBlLHM9dm9pZCAwIT09byYmbyxsPXQua2VlcFVuZG8sdT12b2lkIDAhPT1sJiZsO2lmKG4mJmUoKSwhZyh0aGlzLEUpKXt2YXIgYz17Y21kOmUsdW5kbzpyLHR5cGU6YX07aWYoLTE9PT1nKHRoaXMsVCkpcmV0dXJuIGcodGhpcyx4KS5sZW5ndGg+MCYmKGcodGhpcyx4KS5sZW5ndGg9MCksbSh0aGlzLFQsMCksdm9pZCBnKHRoaXMseCkucHVzaChjKTtpZihzJiZnKHRoaXMseClbZyh0aGlzLFQpXS50eXBlPT09YSlyZXR1cm4gdSYmKGMudW5kbz1nKHRoaXMseClbZyh0aGlzLFQpXS51bmRvKSx2b2lkKGcodGhpcyx4KVtnKHRoaXMsVCldPWMpO3ZhciBoPWcodGhpcyxUKSsxO2g9PT1nKHRoaXMsUCk/Zyh0aGlzLHgpLnNwbGljZSgwLDEpOihtKHRoaXMsVCxoKSxoPGcodGhpcyx4KS5sZW5ndGgmJmcodGhpcyx4KS5zcGxpY2UoaCkpLGcodGhpcyx4KS5wdXNoKGMpfX19LHtrZXk6InVuZG8iLHZhbHVlOmZ1bmN0aW9uKCl7LTEhPT1nKHRoaXMsVCkmJihtKHRoaXMsRSwhMCksZyh0aGlzLHgpW2codGhpcyxUKV0udW5kbygpLG0odGhpcyxFLCExKSxtKHRoaXMsVCxnKHRoaXMsVCktMSkpfX0se2tleToicmVkbyIsdmFsdWU6ZnVuY3Rpb24oKXtnKHRoaXMsVCk8Zyh0aGlzLHgpLmxlbmd0aC0xJiYobSh0aGlzLFQsZyh0aGlzLFQpKzEpLG0odGhpcyxFLCEwKSxnKHRoaXMseClbZyh0aGlzLFQpXS5jbWQoKSxtKHRoaXMsRSwhMSkpfX0se2tleToiaGFzU29tZXRoaW5nVG9VbmRvIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybi0xIT09Zyh0aGlzLFQpfX0se2tleToiaGFzU29tZXRoaW5nVG9SZWRvIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBnKHRoaXMsVCk8Zyh0aGlzLHgpLmxlbmd0aC0xfX0se2tleToiZGVzdHJveSIsdmFsdWU6ZnVuY3Rpb24oKXttKHRoaXMseCxudWxsKX19XSksdH0oKTtlLkNvbW1hbmRNYW5hZ2VyPUM7dmFyIE89bmV3IFdlYWtTZXQsRj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7aCh0aGlzLHQpLHUodGhpcyxPKSx0aGlzLmJ1ZmZlcj1bXSx0aGlzLmNhbGxiYWNrcz1uZXcgTWFwLHRoaXMuYWxsS2V5cz1uZXcgU2V0O3ZhciByLG49aS5GZWF0dXJlVGVzdC5wbGF0Zm9ybS5pc01hYyxhPV8oZSk7dHJ5e2ZvcihhLnMoKTshKHI9YS5uKCkpLmRvbmU7KXt2YXIgbyxzPWwoci52YWx1ZSwyKSxjPXNbMF0sZj1zWzFdLGQ9XyhjKTt0cnl7Zm9yKGQucygpOyEobz1kLm4oKSkuZG9uZTspe3ZhciBwPW8udmFsdWUsdj1wLnN0YXJ0c1dpdGgoIm1hYysiKTtuJiZ2Pyh0aGlzLmNhbGxiYWNrcy5zZXQocC5zbGljZSg0KSxmKSx0aGlzLmFsbEtleXMuYWRkKHAuc3BsaXQoIisiKS5hdCgtMSkpKTpufHx2fHwodGhpcy5jYWxsYmFja3Muc2V0KHAsZiksdGhpcy5hbGxLZXlzLmFkZChwLnNwbGl0KCIrIikuYXQoLTEpKSl9fWNhdGNoKHQpe2QuZSh0KX1maW5hbGx5e2QuZigpfX19Y2F0Y2godCl7YS5lKHQpfWZpbmFsbHl7YS5mKCl9fXJldHVybiBkKHQsW3trZXk6ImV4ZWMiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7aWYodGhpcy5hbGxLZXlzLmhhcyhlLmtleSkpe3ZhciByPXRoaXMuY2FsbGJhY2tzLmdldChjKHRoaXMsTyxNKS5jYWxsKHRoaXMsZSkpO3ImJihyLmJpbmQodCkoKSxlLnN0b3BQcm9wYWdhdGlvbigpLGUucHJldmVudERlZmF1bHQoKSl9fX1dKSx0fSgpO2Z1bmN0aW9uIE0odCl7dC5hbHRLZXkmJnRoaXMuYnVmZmVyLnB1c2goImFsdCIpLHQuY3RybEtleSYmdGhpcy5idWZmZXIucHVzaCgiY3RybCIpLHQubWV0YUtleSYmdGhpcy5idWZmZXIucHVzaCgibWV0YSIpLHQuc2hpZnRLZXkmJnRoaXMuYnVmZmVyLnB1c2goInNoaWZ0IiksdGhpcy5idWZmZXIucHVzaCh0LmtleSk7dmFyIGU9dGhpcy5idWZmZXIuam9pbigiKyIpO3JldHVybiB0aGlzLmJ1ZmZlci5sZW5ndGg9MCxlfWUuS2V5Ym9hcmRNYW5hZ2VyPUY7dmFyIFI9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7aCh0aGlzLHQpfXJldHVybiBkKHQsW3trZXk6Il9jb2xvcnMiLGdldDpmdW5jdGlvbigpe3ZhciB0PW5ldyBNYXAoW1siQ2FudmFzVGV4dCIsbnVsbF0sWyJDYW52YXMiLG51bGxdXSk7cmV0dXJuKDAsYS5nZXRDb2xvclZhbHVlcykodCksKDAsaS5zaGFkb3cpKHRoaXMsIl9jb2xvcnMiLHQpfX0se2tleToiY29udmVydCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHI9KDAsYS5nZXRSR0IpKGUpO2lmKCF3aW5kb3cubWF0Y2hNZWRpYSgiKGZvcmNlZC1jb2xvcnM6IGFjdGl2ZSkiKS5tYXRjaGVzKXJldHVybiByO3ZhciBuLGk9Xyh0aGlzLl9jb2xvcnMpO3RyeXtmb3IoaS5zKCk7IShuPWkubigpKS5kb25lOyl7dmFyIG89bChuLnZhbHVlLDIpLHM9b1swXTtpZihvWzFdLmV2ZXJ5KChmdW5jdGlvbih0LGUpe3JldHVybiB0PT09cltlXX0pKSlyZXR1cm4gdC5fY29sb3JzTWFwcGluZy5nZXQocyl9fWNhdGNoKHQpe2kuZSh0KX1maW5hbGx5e2kuZigpfXJldHVybiByfX0se2tleToiZ2V0SGV4Q29kZSIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fY29sb3JzLmdldCh0KTtyZXR1cm4gZT9pLlV0aWwubWFrZUhleENvbG9yLmFwcGx5KGkuVXRpbCxvKGUpKTp0fX1dKSx0fSgpO2UuQ29sb3JNYW5hZ2VyPVIscyhSLCJfY29sb3JzTWFwcGluZyIsbmV3IE1hcChbWyJDYW52YXNUZXh0IixbMCwwLDBdXSxbIkNhbnZhcyIsWzI1NSwyNTUsMjU1XV1dKSk7dmFyIEk9bmV3IFdlYWtNYXAsaj1uZXcgV2Vha01hcCxMPW5ldyBXZWFrTWFwLEQ9bmV3IFdlYWtNYXAsTj1uZXcgV2Vha01hcCxVPW5ldyBXZWFrTWFwLFc9bmV3IFdlYWtNYXAsRz1uZXcgV2Vha01hcCxCPW5ldyBXZWFrTWFwLHE9bmV3IFdlYWtNYXAsSD1uZXcgV2Vha01hcCx6PW5ldyBXZWFrTWFwLFY9bmV3IFdlYWtNYXAsWD1uZXcgV2Vha01hcCxZPW5ldyBXZWFrTWFwLEs9bmV3IFdlYWtNYXAsSj1uZXcgV2Vha01hcCxRPW5ldyBXZWFrTWFwLCQ9bmV3IFdlYWtNYXAsWj1uZXcgV2Vha01hcCx0dD1uZXcgV2Vha01hcCxldD1uZXcgV2Vha01hcCxydD1uZXcgV2Vha01hcCxudD1uZXcgV2Vha1NldCxpdD1uZXcgV2Vha1NldCxhdD1uZXcgV2Vha1NldCxvdD1uZXcgV2Vha1NldCxzdD1uZXcgV2Vha1NldCxsdD1uZXcgV2Vha1NldCx1dD1uZXcgV2Vha1NldCxjdD1uZXcgV2Vha1NldCxodD1uZXcgV2Vha1NldCxmdD1uZXcgV2Vha1NldCxkdD1uZXcgV2Vha1NldCxwdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSxyLG4pe2godGhpcyx0KSx1KHRoaXMsZHQpLHUodGhpcyxmdCksdSh0aGlzLGh0KSx1KHRoaXMsY3QpLHUodGhpcyx1dCksdSh0aGlzLGx0KSx1KHRoaXMsc3QpLHUodGhpcyxvdCksdSh0aGlzLGF0KSx1KHRoaXMsaXQpLHUodGhpcyxudCksdih0aGlzLEkse3dyaXRhYmxlOiEwLHZhbHVlOm51bGx9KSx2KHRoaXMsaix7d3JpdGFibGU6ITAsdmFsdWU6bmV3IE1hcH0pLHYodGhpcyxMLHt3cml0YWJsZTohMCx2YWx1ZTpuZXcgTWFwfSksdih0aGlzLEQse3dyaXRhYmxlOiEwLHZhbHVlOm51bGx9KSx2KHRoaXMsTix7d3JpdGFibGU6ITAsdmFsdWU6bmV3IEN9KSx2KHRoaXMsVSx7d3JpdGFibGU6ITAsdmFsdWU6MH0pLHYodGhpcyxXLHt3cml0YWJsZTohMCx2YWx1ZTpudWxsfSksdih0aGlzLEcse3dyaXRhYmxlOiEwLHZhbHVlOm5ldyBTZXR9KSx2KHRoaXMsQix7d3JpdGFibGU6ITAsdmFsdWU6bnVsbH0pLHYodGhpcyxxLHt3cml0YWJsZTohMCx2YWx1ZTpuZXcgU30pLHYodGhpcyxILHt3cml0YWJsZTohMCx2YWx1ZTohMX0pLHYodGhpcyx6LHt3cml0YWJsZTohMCx2YWx1ZTppLkFubm90YXRpb25FZGl0b3JUeXBlLk5PTkV9KSx2KHRoaXMsVix7d3JpdGFibGU6ITAsdmFsdWU6bmV3IFNldH0pLHYodGhpcyxYLHt3cml0YWJsZTohMCx2YWx1ZTp0aGlzLmNvcHkuYmluZCh0aGlzKX0pLHYodGhpcyxZLHt3cml0YWJsZTohMCx2YWx1ZTp0aGlzLmN1dC5iaW5kKHRoaXMpfSksdih0aGlzLEsse3dyaXRhYmxlOiEwLHZhbHVlOnRoaXMucGFzdGUuYmluZCh0aGlzKX0pLHYodGhpcyxKLHt3cml0YWJsZTohMCx2YWx1ZTp0aGlzLmtleWRvd24uYmluZCh0aGlzKX0pLHYodGhpcyxRLHt3cml0YWJsZTohMCx2YWx1ZTp0aGlzLm9uRWRpdGluZ0FjdGlvbi5iaW5kKHRoaXMpfSksdih0aGlzLCQse3dyaXRhYmxlOiEwLHZhbHVlOnRoaXMub25QYWdlQ2hhbmdpbmcuYmluZCh0aGlzKX0pLHYodGhpcyxaLHt3cml0YWJsZTohMCx2YWx1ZTp0aGlzLm9uU2NhbGVDaGFuZ2luZy5iaW5kKHRoaXMpfSksdih0aGlzLHR0LHt3cml0YWJsZTohMCx2YWx1ZTp0aGlzLm9uUm90YXRpb25DaGFuZ2luZy5iaW5kKHRoaXMpfSksdih0aGlzLGV0LHt3cml0YWJsZTohMCx2YWx1ZTp7aXNFZGl0aW5nOiExLGlzRW1wdHk6ITAsaGFzU29tZXRoaW5nVG9VbmRvOiExLGhhc1NvbWV0aGluZ1RvUmVkbzohMSxoYXNTZWxlY3RlZEVkaXRvcjohMX19KSx2KHRoaXMscnQse3dyaXRhYmxlOiEwLHZhbHVlOm51bGx9KSxtKHRoaXMscnQsZSksbSh0aGlzLEIsciksZyh0aGlzLEIpLl9vbigiZWRpdGluZ2FjdGlvbiIsZyh0aGlzLFEpKSxnKHRoaXMsQikuX29uKCJwYWdlY2hhbmdpbmciLGcodGhpcywkKSksZyh0aGlzLEIpLl9vbigic2NhbGVjaGFuZ2luZyIsZyh0aGlzLFopKSxnKHRoaXMsQikuX29uKCJyb3RhdGlvbmNoYW5naW5nIixnKHRoaXMsdHQpKSxtKHRoaXMsRCxuKSx0aGlzLnZpZXdQYXJhbWV0ZXJzPXtyZWFsU2NhbGU6YS5QaXhlbHNQZXJJbmNoLlBERl9UT19DU1NfVU5JVFMscm90YXRpb246MH19cmV0dXJuIGQodCxbe2tleToiZGVzdHJveSIsdmFsdWU6ZnVuY3Rpb24oKXtjKHRoaXMsaXQseXQpLmNhbGwodGhpcyksZyh0aGlzLEIpLl9vZmYoImVkaXRpbmdhY3Rpb24iLGcodGhpcyxRKSksZyh0aGlzLEIpLl9vZmYoInBhZ2VjaGFuZ2luZyIsZyh0aGlzLCQpKSxnKHRoaXMsQikuX29mZigic2NhbGVjaGFuZ2luZyIsZyh0aGlzLFopKSxnKHRoaXMsQikuX29mZigicm90YXRpb25jaGFuZ2luZyIsZyh0aGlzLHR0KSk7dmFyIHQsZT1fKGcodGhpcyxMKS52YWx1ZXMoKSk7dHJ5e2ZvcihlLnMoKTshKHQ9ZS5uKCkpLmRvbmU7KXQudmFsdWUuZGVzdHJveSgpfWNhdGNoKHQpe2UuZSh0KX1maW5hbGx5e2UuZigpfWcodGhpcyxMKS5jbGVhcigpLGcodGhpcyxqKS5jbGVhcigpLGcodGhpcyxHKS5jbGVhcigpLG0odGhpcyxJLG51bGwpLGcodGhpcyxWKS5jbGVhcigpLGcodGhpcyxOKS5kZXN0cm95KCl9fSx7a2V5OiJvblBhZ2VDaGFuZ2luZyIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5wYWdlTnVtYmVyO20odGhpcyxVLGUtMSl9fSx7a2V5OiJmb2N1c01haW5Db250YWluZXIiLHZhbHVlOmZ1bmN0aW9uKCl7Zyh0aGlzLHJ0KS5mb2N1cygpfX0se2tleToiYWRkU2hvdWxkUmVzY2FsZSIsdmFsdWU6ZnVuY3Rpb24odCl7Zyh0aGlzLEcpLmFkZCh0KX19LHtrZXk6InJlbW92ZVNob3VsZFJlc2NhbGUiLHZhbHVlOmZ1bmN0aW9uKHQpe2codGhpcyxHKS5kZWxldGUodCl9fSx7a2V5OiJvblNjYWxlQ2hhbmdpbmciLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuc2NhbGU7dGhpcy5jb21taXRPclJlbW92ZSgpLHRoaXMudmlld1BhcmFtZXRlcnMucmVhbFNjYWxlPWUqYS5QaXhlbHNQZXJJbmNoLlBERl9UT19DU1NfVU5JVFM7dmFyIHIsbj1fKGcodGhpcyxHKSk7dHJ5e2ZvcihuLnMoKTshKHI9bi5uKCkpLmRvbmU7KXIudmFsdWUub25TY2FsZUNoYW5naW5nKCl9Y2F0Y2godCl7bi5lKHQpfWZpbmFsbHl7bi5mKCl9fX0se2tleToib25Sb3RhdGlvbkNoYW5naW5nIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LnBhZ2VzUm90YXRpb247dGhpcy5jb21taXRPclJlbW92ZSgpLHRoaXMudmlld1BhcmFtZXRlcnMucm90YXRpb249ZX19LHtrZXk6ImFkZFRvQW5ub3RhdGlvblN0b3JhZ2UiLHZhbHVlOmZ1bmN0aW9uKHQpe3QuaXNFbXB0eSgpfHwhZyh0aGlzLEQpfHxnKHRoaXMsRCkuaGFzKHQuaWQpfHxnKHRoaXMsRCkuc2V0VmFsdWUodC5pZCx0KX19LHtrZXk6ImNvcHkiLHZhbHVlOmZ1bmN0aW9uKHQpe2lmKHQucHJldmVudERlZmF1bHQoKSxnKHRoaXMsSSkmJmcodGhpcyxJKS5jb21taXRPclJlbW92ZSgpLHRoaXMuaGFzU2VsZWN0aW9uKXt2YXIgZSxyPVtdLG49XyhnKHRoaXMsVikpO3RyeXtmb3Iobi5zKCk7IShlPW4ubigpKS5kb25lOyl7dmFyIGk9ZS52YWx1ZTtpLmlzRW1wdHkoKXx8ci5wdXNoKGkuc2VyaWFsaXplKCkpfX1jYXRjaCh0KXtuLmUodCl9ZmluYWxseXtuLmYoKX0wIT09ci5sZW5ndGgmJnQuY2xpcGJvYXJkRGF0YS5zZXREYXRhKCJhcHBsaWNhdGlvbi9wZGZqcyIsSlNPTi5zdHJpbmdpZnkocikpfX19LHtrZXk6ImN1dCIsdmFsdWU6ZnVuY3Rpb24odCl7dGhpcy5jb3B5KHQpLHRoaXMuZGVsZXRlKCl9fSx7a2V5OiJwYXN0ZSIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0LnByZXZlbnREZWZhdWx0KCk7dmFyIHI9dC5jbGlwYm9hcmREYXRhLmdldERhdGEoImFwcGxpY2F0aW9uL3BkZmpzIik7aWYocil7dHJ5e3I9SlNPTi5wYXJzZShyKX1jYXRjaCh0KXtyZXR1cm4gdm9pZCgwLGkud2FybikoJ3Bhc3RlOiAiJy5jb25jYXQodC5tZXNzYWdlLCciLicpKX1pZihBcnJheS5pc0FycmF5KHIpKXt0aGlzLnVuc2VsZWN0QWxsKCk7dmFyIG49Zyh0aGlzLEwpLmdldChnKHRoaXMsVSkpO3RyeXt2YXIgYSxvPVtdLHM9XyhyKTt0cnl7Zm9yKHMucygpOyEoYT1zLm4oKSkuZG9uZTspe3ZhciBsPWEudmFsdWUsdT1uLmRlc2VyaWFsaXplKGwpO2lmKCF1KXJldHVybjtvLnB1c2godSl9fWNhdGNoKHQpe3MuZSh0KX1maW5hbGx5e3MuZigpfXRoaXMuYWRkQ29tbWFuZHMoe2NtZDpmdW5jdGlvbigpe2Zvcih2YXIgdD0wLHI9bzt0PHIubGVuZ3RoO3QrKyl7dmFyIG49clt0XTtjKGUsaHQsa3QpLmNhbGwoZSxuKX1jKGUsZHQseHQpLmNhbGwoZSxvKX0sdW5kbzpmdW5jdGlvbigpe2Zvcih2YXIgdD0wLGU9bzt0PGUubGVuZ3RoO3QrKyllW3RdLnJlbW92ZSgpfSxtdXN0RXhlYzohMH0pfWNhdGNoKHQpeygwLGkud2FybikoJ3Bhc3RlOiAiJy5jb25jYXQodC5tZXNzYWdlLCciLicpKX19fX19LHtrZXk6ImtleWRvd24iLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciByO251bGwhPT0ocj10aGlzLmdldEFjdGl2ZSgpKSYmdm9pZCAwIT09ciYmci5zaG91bGRHZXRLZXlib2FyZEV2ZW50cygpfHx0Ll9rZXlib2FyZE1hbmFnZXIuZXhlYyh0aGlzLGUpfX0se2tleToib25FZGl0aW5nQWN0aW9uIix2YWx1ZTpmdW5jdGlvbih0KXtbInVuZG8iLCJyZWRvIiwiZGVsZXRlIiwic2VsZWN0QWxsIl0uaW5jbHVkZXModC5uYW1lKSYmdGhpc1t0Lm5hbWVdKCl9fSx7a2V5OiJzZXRFZGl0aW5nU3RhdGUiLHZhbHVlOmZ1bmN0aW9uKHQpe3Q/KGModGhpcyxudCx2dCkuY2FsbCh0aGlzKSxjKHRoaXMsYXQsbXQpLmNhbGwodGhpcyksYyh0aGlzLHN0LGJ0KS5jYWxsKHRoaXMse2lzRWRpdGluZzpnKHRoaXMseikhPT1pLkFubm90YXRpb25FZGl0b3JUeXBlLk5PTkUsaXNFbXB0eTpjKHRoaXMsZnQsU3QpLmNhbGwodGhpcyksaGFzU29tZXRoaW5nVG9VbmRvOmcodGhpcyxOKS5oYXNTb21ldGhpbmdUb1VuZG8oKSxoYXNTb21ldGhpbmdUb1JlZG86Zyh0aGlzLE4pLmhhc1NvbWV0aGluZ1RvUmVkbygpLGhhc1NlbGVjdGVkRWRpdG9yOiExfSkpOihjKHRoaXMsaXQseXQpLmNhbGwodGhpcyksYyh0aGlzLG90LGd0KS5jYWxsKHRoaXMpLGModGhpcyxzdCxidCkuY2FsbCh0aGlzLHtpc0VkaXRpbmc6ITF9KSl9fSx7a2V5OiJyZWdpc3RlckVkaXRvclR5cGVzIix2YWx1ZTpmdW5jdGlvbih0KXtpZighZyh0aGlzLFcpKXttKHRoaXMsVyx0KTt2YXIgZSxyPV8oZyh0aGlzLFcpKTt0cnl7Zm9yKHIucygpOyEoZT1yLm4oKSkuZG9uZTspe3ZhciBuPWUudmFsdWU7Yyh0aGlzLGx0LF90KS5jYWxsKHRoaXMsbi5kZWZhdWx0UHJvcGVydGllc1RvVXBkYXRlKX19Y2F0Y2godCl7ci5lKHQpfWZpbmFsbHl7ci5mKCl9fX19LHtrZXk6ImdldElkIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBnKHRoaXMscSkuZ2V0SWQoKX19LHtrZXk6ImN1cnJlbnRMYXllciIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGcodGhpcyxMKS5nZXQoZyh0aGlzLFUpKX19LHtrZXk6ImN1cnJlbnRQYWdlSW5kZXgiLGdldDpmdW5jdGlvbigpe3JldHVybiBnKHRoaXMsVSl9fSx7a2V5OiJhZGRMYXllciIsdmFsdWU6ZnVuY3Rpb24odCl7Zyh0aGlzLEwpLnNldCh0LnBhZ2VJbmRleCx0KSxnKHRoaXMsSCk/dC5lbmFibGUoKTp0LmRpc2FibGUoKX19LHtrZXk6InJlbW92ZUxheWVyIix2YWx1ZTpmdW5jdGlvbih0KXtnKHRoaXMsTCkuZGVsZXRlKHQucGFnZUluZGV4KX19LHtrZXk6InVwZGF0ZU1vZGUiLHZhbHVlOmZ1bmN0aW9uKHQpe2lmKG0odGhpcyx6LHQpLHQ9PT1pLkFubm90YXRpb25FZGl0b3JUeXBlLk5PTkUpdGhpcy5zZXRFZGl0aW5nU3RhdGUoITEpLGModGhpcyxjdCxBdCkuY2FsbCh0aGlzKTtlbHNle3RoaXMuc2V0RWRpdGluZ1N0YXRlKCEwKSxjKHRoaXMsdXQsd3QpLmNhbGwodGhpcyk7dmFyIGUscj1fKGcodGhpcyxMKS52YWx1ZXMoKSk7dHJ5e2ZvcihyLnMoKTshKGU9ci5uKCkpLmRvbmU7KWUudmFsdWUudXBkYXRlTW9kZSh0KX1jYXRjaCh0KXtyLmUodCl9ZmluYWxseXtyLmYoKX19fX0se2tleToidXBkYXRlVG9vbGJhciIsdmFsdWU6ZnVuY3Rpb24odCl7dCE9PWcodGhpcyx6KSYmZyh0aGlzLEIpLmRpc3BhdGNoKCJzd2l0Y2hhbm5vdGF0aW9uZWRpdG9ybW9kZSIse3NvdXJjZTp0aGlzLG1vZGU6dH0pfX0se2tleToidXBkYXRlUGFyYW1zIix2YWx1ZTpmdW5jdGlvbih0LGUpe2lmKGcodGhpcyxXKSl7dmFyIHIsbj1fKGcodGhpcyxWKSk7dHJ5e2ZvcihuLnMoKTshKHI9bi5uKCkpLmRvbmU7KXIudmFsdWUudXBkYXRlUGFyYW1zKHQsZSl9Y2F0Y2godCl7bi5lKHQpfWZpbmFsbHl7bi5mKCl9dmFyIGksYT1fKGcodGhpcyxXKSk7dHJ5e2ZvcihhLnMoKTshKGk9YS5uKCkpLmRvbmU7KWkudmFsdWUudXBkYXRlRGVmYXVsdFBhcmFtcyh0LGUpfWNhdGNoKHQpe2EuZSh0KX1maW5hbGx5e2EuZigpfX19fSx7a2V5OiJnZXRFZGl0b3JzIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZSxyPVtdLG49XyhnKHRoaXMsaikudmFsdWVzKCkpO3RyeXtmb3Iobi5zKCk7IShlPW4ubigpKS5kb25lOyl7dmFyIGk9ZS52YWx1ZTtpLnBhZ2VJbmRleD09PXQmJnIucHVzaChpKX19Y2F0Y2godCl7bi5lKHQpfWZpbmFsbHl7bi5mKCl9cmV0dXJuIHJ9fSx7a2V5OiJnZXRFZGl0b3IiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiBnKHRoaXMsaikuZ2V0KHQpfX0se2tleToiYWRkRWRpdG9yIix2YWx1ZTpmdW5jdGlvbih0KXtnKHRoaXMsaikuc2V0KHQuaWQsdCl9fSx7a2V5OiJyZW1vdmVFZGl0b3IiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlO2codGhpcyxqKS5kZWxldGUodC5pZCksdGhpcy51bnNlbGVjdCh0KSxudWxsPT09KGU9Zyh0aGlzLEQpKXx8dm9pZCAwPT09ZXx8ZS5yZW1vdmUodC5pZCl9fSx7a2V5OiJzZXRBY3RpdmVFZGl0b3IiLHZhbHVlOmZ1bmN0aW9uKHQpe2codGhpcyxJKSE9PXQmJihtKHRoaXMsSSx0KSx0JiZjKHRoaXMsbHQsX3QpLmNhbGwodGhpcyx0LnByb3BlcnRpZXNUb1VwZGF0ZSkpfX0se2tleToidG9nZ2xlU2VsZWN0ZWQiLHZhbHVlOmZ1bmN0aW9uKHQpe2lmKGcodGhpcyxWKS5oYXModCkpcmV0dXJuIGcodGhpcyxWKS5kZWxldGUodCksdC51bnNlbGVjdCgpLHZvaWQgYyh0aGlzLHN0LGJ0KS5jYWxsKHRoaXMse2hhc1NlbGVjdGVkRWRpdG9yOnRoaXMuaGFzU2VsZWN0aW9ufSk7Zyh0aGlzLFYpLmFkZCh0KSx0LnNlbGVjdCgpLGModGhpcyxsdCxfdCkuY2FsbCh0aGlzLHQucHJvcGVydGllc1RvVXBkYXRlKSxjKHRoaXMsc3QsYnQpLmNhbGwodGhpcyx7aGFzU2VsZWN0ZWRFZGl0b3I6ITB9KX19LHtrZXk6InNldFNlbGVjdGVkIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZSxyPV8oZyh0aGlzLFYpKTt0cnl7Zm9yKHIucygpOyEoZT1yLm4oKSkuZG9uZTspe3ZhciBuPWUudmFsdWU7biE9PXQmJm4udW5zZWxlY3QoKX19Y2F0Y2godCl7ci5lKHQpfWZpbmFsbHl7ci5mKCl9Zyh0aGlzLFYpLmNsZWFyKCksZyh0aGlzLFYpLmFkZCh0KSx0LnNlbGVjdCgpLGModGhpcyxsdCxfdCkuY2FsbCh0aGlzLHQucHJvcGVydGllc1RvVXBkYXRlKSxjKHRoaXMsc3QsYnQpLmNhbGwodGhpcyx7aGFzU2VsZWN0ZWRFZGl0b3I6ITB9KX19LHtrZXk6ImlzU2VsZWN0ZWQiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiBnKHRoaXMsVikuaGFzKHQpfX0se2tleToidW5zZWxlY3QiLHZhbHVlOmZ1bmN0aW9uKHQpe3QudW5zZWxlY3QoKSxnKHRoaXMsVikuZGVsZXRlKHQpLGModGhpcyxzdCxidCkuY2FsbCh0aGlzLHtoYXNTZWxlY3RlZEVkaXRvcjp0aGlzLmhhc1NlbGVjdGlvbn0pfX0se2tleToiaGFzU2VsZWN0aW9uIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gMCE9PWcodGhpcyxWKS5zaXplfX0se2tleToidW5kbyIsdmFsdWU6ZnVuY3Rpb24oKXtnKHRoaXMsTikudW5kbygpLGModGhpcyxzdCxidCkuY2FsbCh0aGlzLHtoYXNTb21ldGhpbmdUb1VuZG86Zyh0aGlzLE4pLmhhc1NvbWV0aGluZ1RvVW5kbygpLGhhc1NvbWV0aGluZ1RvUmVkbzohMCxpc0VtcHR5OmModGhpcyxmdCxTdCkuY2FsbCh0aGlzKX0pfX0se2tleToicmVkbyIsdmFsdWU6ZnVuY3Rpb24oKXtnKHRoaXMsTikucmVkbygpLGModGhpcyxzdCxidCkuY2FsbCh0aGlzLHtoYXNTb21ldGhpbmdUb1VuZG86ITAsaGFzU29tZXRoaW5nVG9SZWRvOmcodGhpcyxOKS5oYXNTb21ldGhpbmdUb1JlZG8oKSxpc0VtcHR5OmModGhpcyxmdCxTdCkuY2FsbCh0aGlzKX0pfX0se2tleToiYWRkQ29tbWFuZHMiLHZhbHVlOmZ1bmN0aW9uKHQpe2codGhpcyxOKS5hZGQodCksYyh0aGlzLHN0LGJ0KS5jYWxsKHRoaXMse2hhc1NvbWV0aGluZ1RvVW5kbzohMCxoYXNTb21ldGhpbmdUb1JlZG86ITEsaXNFbXB0eTpjKHRoaXMsZnQsU3QpLmNhbGwodGhpcyl9KX19LHtrZXk6ImRlbGV0ZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO2lmKHRoaXMuY29tbWl0T3JSZW1vdmUoKSx0aGlzLmhhc1NlbGVjdGlvbil7dmFyIGU9byhnKHRoaXMsVikpO3RoaXMuYWRkQ29tbWFuZHMoe2NtZDpmdW5jdGlvbigpe3ZhciB0LHI9XyhlKTt0cnl7Zm9yKHIucygpOyEodD1yLm4oKSkuZG9uZTspdC52YWx1ZS5yZW1vdmUoKX1jYXRjaCh0KXtyLmUodCl9ZmluYWxseXtyLmYoKX19LHVuZG86ZnVuY3Rpb24oKXt2YXIgcixuPV8oZSk7dHJ5e2ZvcihuLnMoKTshKHI9bi5uKCkpLmRvbmU7KXt2YXIgaT1yLnZhbHVlO2ModCxodCxrdCkuY2FsbCh0LGkpfX1jYXRjaCh0KXtuLmUodCl9ZmluYWxseXtuLmYoKX19LG11c3RFeGVjOiEwfSl9fX0se2tleToiY29tbWl0T3JSZW1vdmUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ7bnVsbD09PSh0PWcodGhpcyxJKSl8fHZvaWQgMD09PXR8fHQuY29tbWl0T3JSZW1vdmUoKX19LHtrZXk6InNlbGVjdEFsbCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdCxlPV8oZyh0aGlzLFYpKTt0cnl7Zm9yKGUucygpOyEodD1lLm4oKSkuZG9uZTspdC52YWx1ZS5jb21taXQoKX1jYXRjaCh0KXtlLmUodCl9ZmluYWxseXtlLmYoKX1jKHRoaXMsZHQseHQpLmNhbGwodGhpcyxnKHRoaXMsaikudmFsdWVzKCkpfX0se2tleToidW5zZWxlY3RBbGwiLHZhbHVlOmZ1bmN0aW9uKCl7aWYoZyh0aGlzLEkpKWcodGhpcyxJKS5jb21taXRPclJlbW92ZSgpO2Vsc2UgaWYoMCE9PWcodGhpcyxWKS5zaXplKXt2YXIgdCxlPV8oZyh0aGlzLFYpKTt0cnl7Zm9yKGUucygpOyEodD1lLm4oKSkuZG9uZTspdC52YWx1ZS51bnNlbGVjdCgpfWNhdGNoKHQpe2UuZSh0KX1maW5hbGx5e2UuZigpfWcodGhpcyxWKS5jbGVhcigpLGModGhpcyxzdCxidCkuY2FsbCh0aGlzLHtoYXNTZWxlY3RlZEVkaXRvcjohMX0pfX19LHtrZXk6ImlzQWN0aXZlIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gZyh0aGlzLEkpPT09dH19LHtrZXk6ImdldEFjdGl2ZSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gZyh0aGlzLEkpfX0se2tleToiZ2V0TW9kZSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gZyh0aGlzLHopfX1dKSx0fSgpO2Z1bmN0aW9uIHZ0KCl7Zyh0aGlzLHJ0KS5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIixnKHRoaXMsSikpfWZ1bmN0aW9uIHl0KCl7Zyh0aGlzLHJ0KS5yZW1vdmVFdmVudExpc3RlbmVyKCJrZXlkb3duIixnKHRoaXMsSikpfWZ1bmN0aW9uIG10KCl7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY29weSIsZyh0aGlzLFgpKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJjdXQiLGcodGhpcyxZKSksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigicGFzdGUiLGcodGhpcyxLKSl9ZnVuY3Rpb24gZ3QoKXtkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJjb3B5IixnKHRoaXMsWCkpLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImN1dCIsZyh0aGlzLFkpKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJwYXN0ZSIsZyh0aGlzLEspKX1mdW5jdGlvbiBidCh0KXt2YXIgZT10aGlzO09iamVjdC5lbnRyaWVzKHQpLnNvbWUoKGZ1bmN0aW9uKHQpe3ZhciByPWwodCwyKSxuPXJbMF0saT1yWzFdO3JldHVybiBnKGUsZXQpW25dIT09aX0pKSYmZyh0aGlzLEIpLmRpc3BhdGNoKCJhbm5vdGF0aW9uZWRpdG9yc3RhdGVzY2hhbmdlZCIse3NvdXJjZTp0aGlzLGRldGFpbHM6T2JqZWN0LmFzc2lnbihnKHRoaXMsZXQpLHQpfSl9ZnVuY3Rpb24gX3QodCl7Zyh0aGlzLEIpLmRpc3BhdGNoKCJhbm5vdGF0aW9uZWRpdG9ycGFyYW1zY2hhbmdlZCIse3NvdXJjZTp0aGlzLGRldGFpbHM6dH0pfWZ1bmN0aW9uIHd0KCl7aWYoIWcodGhpcyxIKSl7bSh0aGlzLEgsITApO3ZhciB0LGU9XyhnKHRoaXMsTCkudmFsdWVzKCkpO3RyeXtmb3IoZS5zKCk7ISh0PWUubigpKS5kb25lOyl0LnZhbHVlLmVuYWJsZSgpfWNhdGNoKHQpe2UuZSh0KX1maW5hbGx5e2UuZigpfX19ZnVuY3Rpb24gQXQoKXtpZih0aGlzLnVuc2VsZWN0QWxsKCksZyh0aGlzLEgpKXttKHRoaXMsSCwhMSk7dmFyIHQsZT1fKGcodGhpcyxMKS52YWx1ZXMoKSk7dHJ5e2ZvcihlLnMoKTshKHQ9ZS5uKCkpLmRvbmU7KXQudmFsdWUuZGlzYWJsZSgpfWNhdGNoKHQpe2UuZSh0KX1maW5hbGx5e2UuZigpfX19ZnVuY3Rpb24ga3QodCl7dmFyIGU9Zyh0aGlzLEwpLmdldCh0LnBhZ2VJbmRleCk7ZT9lLmFkZE9yUmVidWlsZCh0KTp0aGlzLmFkZEVkaXRvcih0KX1mdW5jdGlvbiBTdCgpe2lmKDA9PT1nKHRoaXMsaikuc2l6ZSlyZXR1cm4hMDtpZigxPT09Zyh0aGlzLGopLnNpemUpe3ZhciB0LGU9XyhnKHRoaXMsaikudmFsdWVzKCkpO3RyeXtmb3IoZS5zKCk7ISh0PWUubigpKS5kb25lOylyZXR1cm4gdC52YWx1ZS5pc0VtcHR5KCl9Y2F0Y2godCl7ZS5lKHQpfWZpbmFsbHl7ZS5mKCl9fXJldHVybiExfWZ1bmN0aW9uIHh0KHQpe2codGhpcyxWKS5jbGVhcigpO3ZhciBlLHI9Xyh0KTt0cnl7Zm9yKHIucygpOyEoZT1yLm4oKSkuZG9uZTspe3ZhciBuPWUudmFsdWU7bi5pc0VtcHR5KCl8fChnKHRoaXMsVikuYWRkKG4pLG4uc2VsZWN0KCkpfX1jYXRjaCh0KXtyLmUodCl9ZmluYWxseXtyLmYoKX1jKHRoaXMsc3QsYnQpLmNhbGwodGhpcyx7aGFzU2VsZWN0ZWRFZGl0b3I6ITB9KX1lLkFubm90YXRpb25FZGl0b3JVSU1hbmFnZXI9cHQscyhwdCwiX2tleWJvYXJkTWFuYWdlciIsbmV3IEYoW1tbImN0cmwrYSIsIm1hYyttZXRhK2EiXSxwdC5wcm90b3R5cGUuc2VsZWN0QWxsXSxbWyJjdHJsK3oiLCJtYWMrbWV0YSt6Il0scHQucHJvdG90eXBlLnVuZG9dLFtbImN0cmwreSIsImN0cmwrc2hpZnQrWiIsIm1hYyttZXRhK3NoaWZ0K1oiXSxwdC5wcm90b3R5cGUucmVkb10sW1siQmFja3NwYWNlIiwiYWx0K0JhY2tzcGFjZSIsImN0cmwrQmFja3NwYWNlIiwic2hpZnQrQmFja3NwYWNlIiwibWFjK0JhY2tzcGFjZSIsIm1hYythbHQrQmFja3NwYWNlIiwibWFjK2N0cmwrQmFja3NwYWNlIiwiRGVsZXRlIiwiY3RybCtEZWxldGUiLCJzaGlmdCtEZWxldGUiXSxwdC5wcm90b3R5cGUuZGVsZXRlXSxbWyJFc2NhcGUiLCJtYWMrRXNjYXBlIl0scHQucHJvdG90eXBlLnVuc2VsZWN0QWxsXV0pKX0sKHQsZSxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxlLlN0YXRUaW1lcj1lLlJlbmRlcmluZ0NhbmNlbGxlZEV4Y2VwdGlvbj1lLlBpeGVsc1BlckluY2g9ZS5QYWdlVmlld3BvcnQ9ZS5QREZEYXRlU3RyaW5nPWUuRE9NU3RhbmRhcmRGb250RGF0YUZhY3Rvcnk9ZS5ET01TVkdGYWN0b3J5PWUuRE9NQ2FudmFzRmFjdG9yeT1lLkRPTUNNYXBSZWFkZXJGYWN0b3J5PWUuQW5ub3RhdGlvblByZWZpeD12b2lkIDAsZS5kZXByZWNhdGVkPWZ1bmN0aW9uKHQpe2NvbnNvbGUubG9nKCJEZXByZWNhdGVkIEFQSSB1c2FnZTogIit0KX0sZS5nZXRDb2xvclZhbHVlcz1mdW5jdGlvbih0KXt2YXIgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7ZS5zdHlsZS52aXNpYmlsaXR5PSJoaWRkZW4iLGRvY3VtZW50LmJvZHkuYXBwZW5kKGUpO3ZhciByLG49cyh0LmtleXMoKSk7dHJ5e2ZvcihuLnMoKTshKHI9bi5uKCkpLmRvbmU7KXt2YXIgaT1yLnZhbHVlO2Uuc3R5bGUuY29sb3I9aTt2YXIgYT13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlKS5jb2xvcjt0LnNldChpLEkoYSkpfX1jYXRjaCh0KXtuLmUodCl9ZmluYWxseXtuLmYoKX1lLnJlbW92ZSgpfSxlLmdldEN1cnJlbnRUcmFuc2Zvcm09ZnVuY3Rpb24odCl7dmFyIGU9dC5nZXRUcmFuc2Zvcm0oKTtyZXR1cm5bZS5hLGUuYixlLmMsZS5kLGUuZSxlLmZdfSxlLmdldEN1cnJlbnRUcmFuc2Zvcm1JbnZlcnNlPWZ1bmN0aW9uKHQpe3ZhciBlPXQuZ2V0VHJhbnNmb3JtKCkuaW52ZXJ0U2VsZigpO3JldHVybltlLmEsZS5iLGUuYyxlLmQsZS5lLGUuZl19LGUuZ2V0RmlsZW5hbWVGcm9tVXJsPWZ1bmN0aW9uKHQpe2lmKCEoYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXSkpe3ZhciBlPXQuc3BsaXQoL1sjP10vLDEpO3Q9KDEsZnVuY3Rpb24odCl7aWYoQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gdH0ocj1lKXx8ZnVuY3Rpb24odCxlKXt2YXIgcj1udWxsPT10P251bGw6InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJnRbU3ltYm9sLml0ZXJhdG9yXXx8dFsiQEBpdGVyYXRvciJdO2lmKG51bGwhPXIpe3ZhciBuLGksYSxvLHM9W10sbD0hMCx1PSExO3RyeXtmb3IoYT0ocj1yLmNhbGwodCkpLm5leHQsMDshKGw9KG49YS5jYWxsKHIpKS5kb25lKSYmKHMucHVzaChuLnZhbHVlKSwxIT09cy5sZW5ndGgpO2w9ITApO31jYXRjaCh0KXt1PSEwLGk9dH1maW5hbGx5e3RyeXtpZighbCYmbnVsbCE9ci5yZXR1cm4mJihvPXIucmV0dXJuKCksT2JqZWN0KG8pIT09bykpcmV0dXJufWZpbmFsbHl7aWYodSl0aHJvdyBpfX1yZXR1cm4gc319KHIpfHxsKHIsMSl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKSlbMF19dmFyIHI7cmV0dXJuIHQuc3Vic3RyaW5nKHQubGFzdEluZGV4T2YoIi8iKSsxKX0sZS5nZXRQZGZGaWxlbmFtZUZyb21Vcmw9ZnVuY3Rpb24odCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOiJkb2N1bWVudC5wZGYiO2lmKCJzdHJpbmciIT10eXBlb2YgdClyZXR1cm4gZTtpZihDKHQpKXJldHVybigwLGkud2FybikoJ2dldFBkZkZpbGVuYW1lRnJvbVVybDogaWdub3JlICJkYXRhOiItVVJMIGZvciBwZXJmb3JtYW5jZSByZWFzb25zLicpLGU7dmFyIHI9L1teLz8jPV0rXC5wZGZcYig/IS4qXC5wZGZcYikvaSxuPS9eKD86KD86W146XSs6KT9cL1wvW14vXSspPyhbXj8jXSopKFw/W14jXSopPygjLiopPyQvLmV4ZWModCksYT1yLmV4ZWMoblsxXSl8fHIuZXhlYyhuWzJdKXx8ci5leGVjKG5bM10pO2lmKGEmJihhPWFbMF0pLmluY2x1ZGVzKCIlIikpdHJ5e2E9ci5leGVjKGRlY29kZVVSSUNvbXBvbmVudChhKSlbMF19Y2F0Y2godCl7fXJldHVybiBhfHxlfSxlLmdldFJHQj1JLGUuZ2V0WGZhUGFnZVZpZXdwb3J0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9ZS5zY2FsZSxuPXZvaWQgMD09PXI/MTpyLGk9ZS5yb3RhdGlvbixhPXZvaWQgMD09PWk/MDppLG89dC5hdHRyaWJ1dGVzLnN0eWxlLHM9by53aWR0aCxsPW8uaGVpZ2h0LHU9WzAsMCxwYXJzZUludChzKSxwYXJzZUludChsKV07cmV0dXJuIG5ldyBQKHt2aWV3Qm94OnUsc2NhbGU6bixyb3RhdGlvbjphfSl9LGUuaXNEYXRhU2NoZW1lPUMsZS5pc1BkZkZpbGU9ZnVuY3Rpb24odCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0JiYvXC5wZGYkL2kudGVzdCh0KX0sZS5pc1ZhbGlkRmV0Y2hVcmw9TSxlLmxvYWRTY3JpcHQ9ZnVuY3Rpb24odCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXTtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKHIsbil7dmFyIGk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7aS5zcmM9dCxpLm9ubG9hZD1mdW5jdGlvbih0KXtlJiZpLnJlbW92ZSgpLHIodCl9LGkub25lcnJvcj1mdW5jdGlvbigpe24obmV3IEVycm9yKCJDYW5ub3QgbG9hZCBzY3JpcHQgYXQ6ICIuY29uY2F0KGkuc3JjKSkpfSwoZG9jdW1lbnQuaGVhZHx8ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KS5hcHBlbmQoaSl9KSl9LGUuc2V0TGF5ZXJEaW1lbnNpb25zPWZ1bmN0aW9uKHQsZSl7dmFyIHI9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0mJmFyZ3VtZW50c1syXSxuPSEoYXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10pfHxhcmd1bWVudHNbM107aWYoZSBpbnN0YW5jZW9mIFApe3ZhciBpPWUucmF3RGltcyxhPWkucGFnZVdpZHRoLG89aS5wYWdlSGVpZ2h0LHM9dC5zdHlsZSxsPSJjYWxjKHZhcigtLXNjYWxlLWZhY3RvcikgKiAiLmNvbmNhdChhLCJweCkiKSx1PSJjYWxjKHZhcigtLXNjYWxlLWZhY3RvcikgKiAiLmNvbmNhdChvLCJweCkiKTtyJiZlLnJvdGF0aW9uJTE4MCE9MD8ocy53aWR0aD11LHMuaGVpZ2h0PWwpOihzLndpZHRoPWwscy5oZWlnaHQ9dSl9biYmdC5zZXRBdHRyaWJ1dGUoImRhdGEtbWFpbi1yb3RhdGlvbiIsZS5yb3RhdGlvbil9O3ZhciBuPXIoMTM4KSxpPXIoMSk7ZnVuY3Rpb24gYSgpe2E9ZnVuY3Rpb24oKXtyZXR1cm4gdH07dmFyIHQ9e30sZT1PYmplY3QucHJvdG90eXBlLHI9ZS5oYXNPd25Qcm9wZXJ0eSxuPU9iamVjdC5kZWZpbmVQcm9wZXJ0eXx8ZnVuY3Rpb24odCxlLHIpe3RbZV09ci52YWx1ZX0saT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sP1N5bWJvbDp7fSxzPWkuaXRlcmF0b3J8fCJAQGl0ZXJhdG9yIixsPWkuYXN5bmNJdGVyYXRvcnx8IkBAYXN5bmNJdGVyYXRvciIsdT1pLnRvU3RyaW5nVGFnfHwiQEB0b1N0cmluZ1RhZyI7ZnVuY3Rpb24gYyh0LGUscil7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUse3ZhbHVlOnIsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KSx0W2VdfXRyeXtjKHt9LCIiKX1jYXRjaCh0KXtjPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdFtlXT1yfX1mdW5jdGlvbiBoKHQsZSxyLGkpe3ZhciBhPWUmJmUucHJvdG90eXBlIGluc3RhbmNlb2YgcD9lOnAsbz1PYmplY3QuY3JlYXRlKGEucHJvdG90eXBlKSxzPW5ldyBQKGl8fFtdKTtyZXR1cm4gbihvLCJfaW52b2tlIix7dmFsdWU6ayh0LHIscyl9KSxvfWZ1bmN0aW9uIGYodCxlLHIpe3RyeXtyZXR1cm57dHlwZToibm9ybWFsIixhcmc6dC5jYWxsKGUscil9fWNhdGNoKHQpe3JldHVybnt0eXBlOiJ0aHJvdyIsYXJnOnR9fX10LndyYXA9aDt2YXIgZD17fTtmdW5jdGlvbiBwKCl7fWZ1bmN0aW9uIHYoKXt9ZnVuY3Rpb24geSgpe312YXIgbT17fTtjKG0scywoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKTt2YXIgZz1PYmplY3QuZ2V0UHJvdG90eXBlT2YsYj1nJiZnKGcoVChbXSkpKTtiJiZiIT09ZSYmci5jYWxsKGIscykmJihtPWIpO3ZhciBfPXkucHJvdG90eXBlPXAucHJvdG90eXBlPU9iamVjdC5jcmVhdGUobSk7ZnVuY3Rpb24gdyh0KXtbIm5leHQiLCJ0aHJvdyIsInJldHVybiJdLmZvckVhY2goKGZ1bmN0aW9uKGUpe2ModCxlLChmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5faW52b2tlKGUsdCl9KSl9KSl9ZnVuY3Rpb24gQSh0LGUpe2Z1bmN0aW9uIGkobixhLHMsbCl7dmFyIHU9Zih0W25dLHQsYSk7aWYoInRocm93IiE9PXUudHlwZSl7dmFyIGM9dS5hcmcsaD1jLnZhbHVlO3JldHVybiBoJiYib2JqZWN0Ij09byhoKSYmci5jYWxsKGgsIl9fYXdhaXQiKT9lLnJlc29sdmUoaC5fX2F3YWl0KS50aGVuKChmdW5jdGlvbih0KXtpKCJuZXh0Iix0LHMsbCl9KSwoZnVuY3Rpb24odCl7aSgidGhyb3ciLHQscyxsKX0pKTplLnJlc29sdmUoaCkudGhlbigoZnVuY3Rpb24odCl7Yy52YWx1ZT10LHMoYyl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIGkoInRocm93Iix0LHMsbCl9KSl9bCh1LmFyZyl9dmFyIGE7bih0aGlzLCJfaW52b2tlIix7dmFsdWU6ZnVuY3Rpb24odCxyKXtmdW5jdGlvbiBuKCl7cmV0dXJuIG5ldyBlKChmdW5jdGlvbihlLG4pe2kodCxyLGUsbil9KSl9cmV0dXJuIGE9YT9hLnRoZW4obixuKTpuKCl9fSl9ZnVuY3Rpb24gayh0LGUscil7dmFyIG49InN1c3BlbmRlZFN0YXJ0IjtyZXR1cm4gZnVuY3Rpb24oaSxhKXtpZigiZXhlY3V0aW5nIj09PW4pdGhyb3cgbmV3IEVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nIik7aWYoImNvbXBsZXRlZCI9PT1uKXtpZigidGhyb3ciPT09aSl0aHJvdyBhO3JldHVybnt2YWx1ZTp2b2lkIDAsZG9uZTohMH19Zm9yKHIubWV0aG9kPWksci5hcmc9YTs7KXt2YXIgbz1yLmRlbGVnYXRlO2lmKG8pe3ZhciBzPVMobyxyKTtpZihzKXtpZihzPT09ZCljb250aW51ZTtyZXR1cm4gc319aWYoIm5leHQiPT09ci5tZXRob2Qpci5zZW50PXIuX3NlbnQ9ci5hcmc7ZWxzZSBpZigidGhyb3ciPT09ci5tZXRob2Qpe2lmKCJzdXNwZW5kZWRTdGFydCI9PT1uKXRocm93IG49ImNvbXBsZXRlZCIsci5hcmc7ci5kaXNwYXRjaEV4Y2VwdGlvbihyLmFyZyl9ZWxzZSJyZXR1cm4iPT09ci5tZXRob2QmJnIuYWJydXB0KCJyZXR1cm4iLHIuYXJnKTtuPSJleGVjdXRpbmciO3ZhciBsPWYodCxlLHIpO2lmKCJub3JtYWwiPT09bC50eXBlKXtpZihuPXIuZG9uZT8iY29tcGxldGVkIjoic3VzcGVuZGVkWWllbGQiLGwuYXJnPT09ZCljb250aW51ZTtyZXR1cm57dmFsdWU6bC5hcmcsZG9uZTpyLmRvbmV9fSJ0aHJvdyI9PT1sLnR5cGUmJihuPSJjb21wbGV0ZWQiLHIubWV0aG9kPSJ0aHJvdyIsci5hcmc9bC5hcmcpfX19ZnVuY3Rpb24gUyh0LGUpe3ZhciByPWUubWV0aG9kLG49dC5pdGVyYXRvcltyXTtpZih2b2lkIDA9PT1uKXJldHVybiBlLmRlbGVnYXRlPW51bGwsInRocm93Ij09PXImJnQuaXRlcmF0b3IucmV0dXJuJiYoZS5tZXRob2Q9InJldHVybiIsZS5hcmc9dm9pZCAwLFModCxlKSwidGhyb3ciPT09ZS5tZXRob2QpfHwicmV0dXJuIiE9PXImJihlLm1ldGhvZD0idGhyb3ciLGUuYXJnPW5ldyBUeXBlRXJyb3IoIlRoZSBpdGVyYXRvciBkb2VzIG5vdCBwcm92aWRlIGEgJyIrcisiJyBtZXRob2QiKSksZDt2YXIgaT1mKG4sdC5pdGVyYXRvcixlLmFyZyk7aWYoInRocm93Ij09PWkudHlwZSlyZXR1cm4gZS5tZXRob2Q9InRocm93IixlLmFyZz1pLmFyZyxlLmRlbGVnYXRlPW51bGwsZDt2YXIgYT1pLmFyZztyZXR1cm4gYT9hLmRvbmU/KGVbdC5yZXN1bHROYW1lXT1hLnZhbHVlLGUubmV4dD10Lm5leHRMb2MsInJldHVybiIhPT1lLm1ldGhvZCYmKGUubWV0aG9kPSJuZXh0IixlLmFyZz12b2lkIDApLGUuZGVsZWdhdGU9bnVsbCxkKTphOihlLm1ldGhvZD0idGhyb3ciLGUuYXJnPW5ldyBUeXBlRXJyb3IoIml0ZXJhdG9yIHJlc3VsdCBpcyBub3QgYW4gb2JqZWN0IiksZS5kZWxlZ2F0ZT1udWxsLGQpfWZ1bmN0aW9uIHgodCl7dmFyIGU9e3RyeUxvYzp0WzBdfTsxIGluIHQmJihlLmNhdGNoTG9jPXRbMV0pLDIgaW4gdCYmKGUuZmluYWxseUxvYz10WzJdLGUuYWZ0ZXJMb2M9dFszXSksdGhpcy50cnlFbnRyaWVzLnB1c2goZSl9ZnVuY3Rpb24gRSh0KXt2YXIgZT10LmNvbXBsZXRpb258fHt9O2UudHlwZT0ibm9ybWFsIixkZWxldGUgZS5hcmcsdC5jb21wbGV0aW9uPWV9ZnVuY3Rpb24gUCh0KXt0aGlzLnRyeUVudHJpZXM9W3t0cnlMb2M6InJvb3QifV0sdC5mb3JFYWNoKHgsdGhpcyksdGhpcy5yZXNldCghMCl9ZnVuY3Rpb24gVCh0KXtpZih0KXt2YXIgZT10W3NdO2lmKGUpcmV0dXJuIGUuY2FsbCh0KTtpZigiZnVuY3Rpb24iPT10eXBlb2YgdC5uZXh0KXJldHVybiB0O2lmKCFpc05hTih0Lmxlbmd0aCkpe3ZhciBuPS0xLGk9ZnVuY3Rpb24gZSgpe2Zvcig7KytuPHQubGVuZ3RoOylpZihyLmNhbGwodCxuKSlyZXR1cm4gZS52YWx1ZT10W25dLGUuZG9uZT0hMSxlO3JldHVybiBlLnZhbHVlPXZvaWQgMCxlLmRvbmU9ITAsZX07cmV0dXJuIGkubmV4dD1pfX1yZXR1cm57bmV4dDpDfX1mdW5jdGlvbiBDKCl7cmV0dXJue3ZhbHVlOnZvaWQgMCxkb25lOiEwfX1yZXR1cm4gdi5wcm90b3R5cGU9eSxuKF8sImNvbnN0cnVjdG9yIix7dmFsdWU6eSxjb25maWd1cmFibGU6ITB9KSxuKHksImNvbnN0cnVjdG9yIix7dmFsdWU6dixjb25maWd1cmFibGU6ITB9KSx2LmRpc3BsYXlOYW1lPWMoeSx1LCJHZW5lcmF0b3JGdW5jdGlvbiIpLHQuaXNHZW5lcmF0b3JGdW5jdGlvbj1mdW5jdGlvbih0KXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgdCYmdC5jb25zdHJ1Y3RvcjtyZXR1cm4hIWUmJihlPT09dnx8IkdlbmVyYXRvckZ1bmN0aW9uIj09PShlLmRpc3BsYXlOYW1lfHxlLm5hbWUpKX0sdC5tYXJrPWZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKHQseSk6KHQuX19wcm90b19fPXksYyh0LHUsIkdlbmVyYXRvckZ1bmN0aW9uIikpLHQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoXyksdH0sdC5hd3JhcD1mdW5jdGlvbih0KXtyZXR1cm57X19hd2FpdDp0fX0sdyhBLnByb3RvdHlwZSksYyhBLnByb3RvdHlwZSxsLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpLHQuQXN5bmNJdGVyYXRvcj1BLHQuYXN5bmM9ZnVuY3Rpb24oZSxyLG4saSxhKXt2b2lkIDA9PT1hJiYoYT1Qcm9taXNlKTt2YXIgbz1uZXcgQShoKGUscixuLGkpLGEpO3JldHVybiB0LmlzR2VuZXJhdG9yRnVuY3Rpb24ocik/bzpvLm5leHQoKS50aGVuKChmdW5jdGlvbih0KXtyZXR1cm4gdC5kb25lP3QudmFsdWU6by5uZXh0KCl9KSl9LHcoXyksYyhfLHUsIkdlbmVyYXRvciIpLGMoXyxzLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpLGMoXywidG9TdHJpbmciLChmdW5jdGlvbigpe3JldHVybiJbb2JqZWN0IEdlbmVyYXRvcl0ifSkpLHQua2V5cz1mdW5jdGlvbih0KXt2YXIgZT1PYmplY3QodCkscj1bXTtmb3IodmFyIG4gaW4gZSlyLnB1c2gobik7cmV0dXJuIHIucmV2ZXJzZSgpLGZ1bmN0aW9uIHQoKXtmb3IoO3IubGVuZ3RoOyl7dmFyIG49ci5wb3AoKTtpZihuIGluIGUpcmV0dXJuIHQudmFsdWU9bix0LmRvbmU9ITEsdH1yZXR1cm4gdC5kb25lPSEwLHR9fSx0LnZhbHVlcz1ULFAucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpQLHJlc2V0OmZ1bmN0aW9uKHQpe2lmKHRoaXMucHJldj0wLHRoaXMubmV4dD0wLHRoaXMuc2VudD10aGlzLl9zZW50PXZvaWQgMCx0aGlzLmRvbmU9ITEsdGhpcy5kZWxlZ2F0ZT1udWxsLHRoaXMubWV0aG9kPSJuZXh0Iix0aGlzLmFyZz12b2lkIDAsdGhpcy50cnlFbnRyaWVzLmZvckVhY2goRSksIXQpZm9yKHZhciBlIGluIHRoaXMpInQiPT09ZS5jaGFyQXQoMCkmJnIuY2FsbCh0aGlzLGUpJiYhaXNOYU4oK2Uuc2xpY2UoMSkpJiYodGhpc1tlXT12b2lkIDApfSxzdG9wOmZ1bmN0aW9uKCl7dGhpcy5kb25lPSEwO3ZhciB0PXRoaXMudHJ5RW50cmllc1swXS5jb21wbGV0aW9uO2lmKCJ0aHJvdyI9PT10LnR5cGUpdGhyb3cgdC5hcmc7cmV0dXJuIHRoaXMucnZhbH0sZGlzcGF0Y2hFeGNlcHRpb246ZnVuY3Rpb24odCl7aWYodGhpcy5kb25lKXRocm93IHQ7dmFyIGU9dGhpcztmdW5jdGlvbiBuKHIsbil7cmV0dXJuIG8udHlwZT0idGhyb3ciLG8uYXJnPXQsZS5uZXh0PXIsbiYmKGUubWV0aG9kPSJuZXh0IixlLmFyZz12b2lkIDApLCEhbn1mb3IodmFyIGk9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2k+PTA7LS1pKXt2YXIgYT10aGlzLnRyeUVudHJpZXNbaV0sbz1hLmNvbXBsZXRpb247aWYoInJvb3QiPT09YS50cnlMb2MpcmV0dXJuIG4oImVuZCIpO2lmKGEudHJ5TG9jPD10aGlzLnByZXYpe3ZhciBzPXIuY2FsbChhLCJjYXRjaExvYyIpLGw9ci5jYWxsKGEsImZpbmFsbHlMb2MiKTtpZihzJiZsKXtpZih0aGlzLnByZXY8YS5jYXRjaExvYylyZXR1cm4gbihhLmNhdGNoTG9jLCEwKTtpZih0aGlzLnByZXY8YS5maW5hbGx5TG9jKXJldHVybiBuKGEuZmluYWxseUxvYyl9ZWxzZSBpZihzKXtpZih0aGlzLnByZXY8YS5jYXRjaExvYylyZXR1cm4gbihhLmNhdGNoTG9jLCEwKX1lbHNle2lmKCFsKXRocm93IG5ldyBFcnJvcigidHJ5IHN0YXRlbWVudCB3aXRob3V0IGNhdGNoIG9yIGZpbmFsbHkiKTtpZih0aGlzLnByZXY8YS5maW5hbGx5TG9jKXJldHVybiBuKGEuZmluYWxseUxvYyl9fX19LGFicnVwdDpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7bj49MDstLW4pe3ZhciBpPXRoaXMudHJ5RW50cmllc1tuXTtpZihpLnRyeUxvYzw9dGhpcy5wcmV2JiZyLmNhbGwoaSwiZmluYWxseUxvYyIpJiZ0aGlzLnByZXY8aS5maW5hbGx5TG9jKXt2YXIgYT1pO2JyZWFrfX1hJiYoImJyZWFrIj09PXR8fCJjb250aW51ZSI9PT10KSYmYS50cnlMb2M8PWUmJmU8PWEuZmluYWxseUxvYyYmKGE9bnVsbCk7dmFyIG89YT9hLmNvbXBsZXRpb246e307cmV0dXJuIG8udHlwZT10LG8uYXJnPWUsYT8odGhpcy5tZXRob2Q9Im5leHQiLHRoaXMubmV4dD1hLmZpbmFsbHlMb2MsZCk6dGhpcy5jb21wbGV0ZShvKX0sY29tcGxldGU6ZnVuY3Rpb24odCxlKXtpZigidGhyb3ciPT09dC50eXBlKXRocm93IHQuYXJnO3JldHVybiJicmVhayI9PT10LnR5cGV8fCJjb250aW51ZSI9PT10LnR5cGU/dGhpcy5uZXh0PXQuYXJnOiJyZXR1cm4iPT09dC50eXBlPyh0aGlzLnJ2YWw9dGhpcy5hcmc9dC5hcmcsdGhpcy5tZXRob2Q9InJldHVybiIsdGhpcy5uZXh0PSJlbmQiKToibm9ybWFsIj09PXQudHlwZSYmZSYmKHRoaXMubmV4dD1lKSxkfSxmaW5pc2g6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtlPj0wOy0tZSl7dmFyIHI9dGhpcy50cnlFbnRyaWVzW2VdO2lmKHIuZmluYWxseUxvYz09PXQpcmV0dXJuIHRoaXMuY29tcGxldGUoci5jb21wbGV0aW9uLHIuYWZ0ZXJMb2MpLEUociksZH19LGNhdGNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7ZT49MDstLWUpe3ZhciByPXRoaXMudHJ5RW50cmllc1tlXTtpZihyLnRyeUxvYz09PXQpe3ZhciBuPXIuY29tcGxldGlvbjtpZigidGhyb3ciPT09bi50eXBlKXt2YXIgaT1uLmFyZztFKHIpfXJldHVybiBpfX10aHJvdyBuZXcgRXJyb3IoImlsbGVnYWwgY2F0Y2ggYXR0ZW1wdCIpfSxkZWxlZ2F0ZVlpZWxkOmZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZT17aXRlcmF0b3I6VCh0KSxyZXN1bHROYW1lOmUsbmV4dExvYzpyfSwibmV4dCI9PT10aGlzLm1ldGhvZCYmKHRoaXMuYXJnPXZvaWQgMCksZH19LHR9ZnVuY3Rpb24gbyh0KXtyZXR1cm4gbz0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgdH0sbyh0KX1mdW5jdGlvbiBzKHQsZSl7dmFyIHI9InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJnRbU3ltYm9sLml0ZXJhdG9yXXx8dFsiQEBpdGVyYXRvciJdO2lmKCFyKXtpZihBcnJheS5pc0FycmF5KHQpfHwocj1sKHQpKXx8ZSYmdCYmIm51bWJlciI9PXR5cGVvZiB0Lmxlbmd0aCl7ciYmKHQ9cik7dmFyIG49MCxpPWZ1bmN0aW9uKCl7fTtyZXR1cm57czppLG46ZnVuY3Rpb24oKXtyZXR1cm4gbj49dC5sZW5ndGg/e2RvbmU6ITB9Ontkb25lOiExLHZhbHVlOnRbbisrXX19LGU6ZnVuY3Rpb24odCl7dGhyb3cgdH0sZjppfX10aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gaXRlcmF0ZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9dmFyIGEsbz0hMCxzPSExO3JldHVybntzOmZ1bmN0aW9uKCl7cj1yLmNhbGwodCl9LG46ZnVuY3Rpb24oKXt2YXIgdD1yLm5leHQoKTtyZXR1cm4gbz10LmRvbmUsdH0sZTpmdW5jdGlvbih0KXtzPSEwLGE9dH0sZjpmdW5jdGlvbigpe3RyeXtvfHxudWxsPT1yLnJldHVybnx8ci5yZXR1cm4oKX1maW5hbGx5e2lmKHMpdGhyb3cgYX19fX1mdW5jdGlvbiBsKHQsZSl7aWYodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiB1KHQsZSk7dmFyIHI9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpLnNsaWNlKDgsLTEpO3JldHVybiJPYmplY3QiPT09ciYmdC5jb25zdHJ1Y3RvciYmKHI9dC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PXJ8fCJTZXQiPT09cj9BcnJheS5mcm9tKHQpOiJBcmd1bWVudHMiPT09cnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3Qocik/dSh0LGUpOnZvaWQgMH19ZnVuY3Rpb24gdSh0LGUpeyhudWxsPT1lfHxlPnQubGVuZ3RoKSYmKGU9dC5sZW5ndGgpO2Zvcih2YXIgcj0wLG49bmV3IEFycmF5KGUpO3I8ZTtyKyspbltyXT10W3JdO3JldHVybiBufWZ1bmN0aW9uIGModCxlLHIsbixpLGEsbyl7dHJ5e3ZhciBzPXRbYV0obyksbD1zLnZhbHVlfWNhdGNoKHQpe3JldHVybiB2b2lkIHIodCl9cy5kb25lP2UobCk6UHJvbWlzZS5yZXNvbHZlKGwpLnRoZW4obixpKX1mdW5jdGlvbiBoKHQsZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUmJm51bGwhPT1lKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7dC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlJiZlLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOnQsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGUmJmYodCxlKX1mdW5jdGlvbiBmKHQsZSl7cmV0dXJuIGY9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5fX3Byb3RvX189ZSx0fSxmKHQsZSl9ZnVuY3Rpb24gZCh0KXt2YXIgZT1mdW5jdGlvbigpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0KXJldHVybiExO2lmKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sKGZ1bmN0aW9uKCl7fSkpKSwhMH1jYXRjaCh0KXtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHIsbj1wKHQpO2lmKGUpe3ZhciBpPXAodGhpcykuY29uc3RydWN0b3I7cj1SZWZsZWN0LmNvbnN0cnVjdChuLGFyZ3VtZW50cyxpKX1lbHNlIHI9bi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGZ1bmN0aW9uKHQsZSl7aWYoZSYmKCJvYmplY3QiPT09byhlKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGUpKXJldHVybiBlO2lmKHZvaWQgMCE9PWUpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24odCl7aWYodm9pZCAwPT09dCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiB0fSh0KX0odGhpcyxyKX19ZnVuY3Rpb24gcCh0KXtyZXR1cm4gcD1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbih0KXtyZXR1cm4gdC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZih0KX0scCh0KX1mdW5jdGlvbiB2KHQsZSl7Zm9yKHZhciByPTA7cjxlLmxlbmd0aDtyKyspe3ZhciBuPWVbcl07bi5lbnVtZXJhYmxlPW4uZW51bWVyYWJsZXx8ITEsbi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIG4mJihuLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxiKG4ua2V5KSxuKX19ZnVuY3Rpb24geSh0LGUscil7cmV0dXJuIGUmJnYodC5wcm90b3R5cGUsZSksciYmdih0LHIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLHR9ZnVuY3Rpb24gbSh0LGUpe2lmKCEodCBpbnN0YW5jZW9mIGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIGcodCxlLHIpe3JldHVybihlPWIoZSkpaW4gdD9PYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLHt2YWx1ZTpyLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6dFtlXT1yLHR9ZnVuY3Rpb24gYih0KXt2YXIgZT1mdW5jdGlvbih0LGUpe2lmKCJvYmplY3QiIT09byh0KXx8bnVsbD09PXQpcmV0dXJuIHQ7dmFyIHI9dFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PXIpe3ZhciBuPXIuY2FsbCh0LCJzdHJpbmciKTtpZigib2JqZWN0IiE9PW8obikpcmV0dXJuIG47dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4gU3RyaW5nKHQpfSh0KTtyZXR1cm4ic3ltYm9sIj09PW8oZSk/ZTpTdHJpbmcoZSl9ZS5Bbm5vdGF0aW9uUHJlZml4PSJwZGZqc19pbnRlcm5hbF9pZF8iO3ZhciBfPXkoKGZ1bmN0aW9uIHQoKXttKHRoaXMsdCl9KSk7ZS5QaXhlbHNQZXJJbmNoPV8sZyhfLCJDU1MiLDk2KSxnKF8sIlBERiIsNzIpLGcoXywiUERGX1RPX0NTU19VTklUUyIsXy5DU1MvXy5QREYpO3ZhciB3PWZ1bmN0aW9uKHQpe2gocix0KTt2YXIgZT1kKHIpO2Z1bmN0aW9uIHIoKXt2YXIgdCxuPShhcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e30pLm93bmVyRG9jdW1lbnQsaT12b2lkIDA9PT1uP2dsb2JhbFRoaXMuZG9jdW1lbnQ6bjtyZXR1cm4gbSh0aGlzLHIpLCh0PWUuY2FsbCh0aGlzKSkuX2RvY3VtZW50PWksdH1yZXR1cm4geShyLFt7a2V5OiJfY3JlYXRlQ2FudmFzIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciByPXRoaXMuX2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpO3JldHVybiByLndpZHRoPXQsci5oZWlnaHQ9ZSxyfX1dKSxyfShuLkJhc2VDYW52YXNGYWN0b3J5KTtmdW5jdGlvbiBBKHQpe3JldHVybiBrLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBrKCl7dmFyIHQ7cmV0dXJuIHQ9YSgpLm1hcmsoKGZ1bmN0aW9uIHQoZSl7dmFyIHIsbixvPWFyZ3VtZW50cztyZXR1cm4gYSgpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOmlmKHI9by5sZW5ndGg+MSYmdm9pZCAwIT09b1sxXSYmb1sxXSwhTShlLGRvY3VtZW50LmJhc2VVUkkpKXt0Lm5leHQ9MjE7YnJlYWt9cmV0dXJuIHQubmV4dD00LGZldGNoKGUpO2Nhc2UgNDppZigobj10LnNlbnQpLm9rKXt0Lm5leHQ9NzticmVha310aHJvdyBuZXcgRXJyb3Iobi5zdGF0dXNUZXh0KTtjYXNlIDc6aWYoIXIpe3QubmV4dD0xNTticmVha31yZXR1cm4gdC50MT1VaW50OEFycmF5LHQubmV4dD0xMSxuLmFycmF5QnVmZmVyKCk7Y2FzZSAxMTp0LnQyPXQuc2VudCx0LnQwPW5ldyB0LnQxKHQudDIpLHQubmV4dD0yMDticmVhaztjYXNlIDE1OnJldHVybiB0LnQzPWkuc3RyaW5nVG9CeXRlcyx0Lm5leHQ9MTgsbi50ZXh0KCk7Y2FzZSAxODp0LnQ0PXQuc2VudCx0LnQwPSgwLHQudDMpKHQudDQpO2Nhc2UgMjA6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLHQudDApO2Nhc2UgMjE6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLG5ldyBQcm9taXNlKChmdW5jdGlvbih0LG4pe3ZhciBhPW5ldyBYTUxIdHRwUmVxdWVzdDthLm9wZW4oIkdFVCIsZSwhMCksciYmKGEucmVzcG9uc2VUeXBlPSJhcnJheWJ1ZmZlciIpLGEub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7aWYoYS5yZWFkeVN0YXRlPT09WE1MSHR0cFJlcXVlc3QuRE9ORSl7dmFyIGU7aWYoKDIwMD09PWEuc3RhdHVzfHwwPT09YS5zdGF0dXMpJiYociYmYS5yZXNwb25zZT9lPW5ldyBVaW50OEFycmF5KGEucmVzcG9uc2UpOiFyJiZhLnJlc3BvbnNlVGV4dCYmKGU9KDAsaS5zdHJpbmdUb0J5dGVzKShhLnJlc3BvbnNlVGV4dCkpLGUpKXJldHVybiB2b2lkIHQoZSk7bihuZXcgRXJyb3IoYS5zdGF0dXNUZXh0KSl9fSxhLnNlbmQobnVsbCl9KSkpO2Nhc2UgMjI6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0KX0pKSxrPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcyxyPWFyZ3VtZW50cztyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKG4saSl7dmFyIGE9dC5hcHBseShlLHIpO2Z1bmN0aW9uIG8odCl7YyhhLG4saSxvLHMsIm5leHQiLHQpfWZ1bmN0aW9uIHModCl7YyhhLG4saSxvLHMsInRocm93Iix0KX1vKHZvaWQgMCl9KSl9LGsuYXBwbHkodGhpcyxhcmd1bWVudHMpfWUuRE9NQ2FudmFzRmFjdG9yeT13O3ZhciBTPWZ1bmN0aW9uKHQpe2gocix0KTt2YXIgZT1kKHIpO2Z1bmN0aW9uIHIoKXtyZXR1cm4gbSh0aGlzLHIpLGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiB5KHIsW3trZXk6Il9mZXRjaERhdGEiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIEEodCx0aGlzLmlzQ29tcHJlc3NlZCkudGhlbigoZnVuY3Rpb24odCl7cmV0dXJue2NNYXBEYXRhOnQsY29tcHJlc3Npb25UeXBlOmV9fSkpfX1dKSxyfShuLkJhc2VDTWFwUmVhZGVyRmFjdG9yeSk7ZS5ET01DTWFwUmVhZGVyRmFjdG9yeT1TO3ZhciB4PWZ1bmN0aW9uKHQpe2gocix0KTt2YXIgZT1kKHIpO2Z1bmN0aW9uIHIoKXtyZXR1cm4gbSh0aGlzLHIpLGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiB5KHIsW3trZXk6Il9mZXRjaERhdGEiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiBBKHQsITApfX1dKSxyfShuLkJhc2VTdGFuZGFyZEZvbnREYXRhRmFjdG9yeSk7ZS5ET01TdGFuZGFyZEZvbnREYXRhRmFjdG9yeT14O3ZhciBFPWZ1bmN0aW9uKHQpe2gocix0KTt2YXIgZT1kKHIpO2Z1bmN0aW9uIHIoKXtyZXR1cm4gbSh0aGlzLHIpLGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiB5KHIsW3trZXk6Il9jcmVhdGVTVkciLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix0KX19XSkscn0obi5CYXNlU1ZHRmFjdG9yeSk7ZS5ET01TVkdGYWN0b3J5PUU7dmFyIFA9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe3ZhciByPWUudmlld0JveCxuPWUuc2NhbGUsaT1lLnJvdGF0aW9uLGE9ZS5vZmZzZXRYLG89dm9pZCAwPT09YT8wOmEscz1lLm9mZnNldFksbD12b2lkIDA9PT1zPzA6cyx1PWUuZG9udEZsaXAsYz12b2lkIDAhPT11JiZ1O20odGhpcyx0KSx0aGlzLnZpZXdCb3g9cix0aGlzLnNjYWxlPW4sdGhpcy5yb3RhdGlvbj1pLHRoaXMub2Zmc2V0WD1vLHRoaXMub2Zmc2V0WT1sO3ZhciBoLGYsZCxwLHYseSxnLGIsXz0oclsyXStyWzBdKS8yLHc9KHJbM10rclsxXSkvMjtzd2l0Y2goKGklPTM2MCk8MCYmKGkrPTM2MCksaSl7Y2FzZSAxODA6aD0tMSxmPTAsZD0wLHA9MTticmVhaztjYXNlIDkwOmg9MCxmPTEsZD0xLHA9MDticmVhaztjYXNlIDI3MDpoPTAsZj0tMSxkPS0xLHA9MDticmVhaztjYXNlIDA6aD0xLGY9MCxkPTAscD0tMTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiUGFnZVZpZXdwb3J0OiBJbnZhbGlkIHJvdGF0aW9uLCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgOTAgZGVncmVlcy4iKX1jJiYoZD0tZCxwPS1wKSwwPT09aD8odj1NYXRoLmFicyh3LXJbMV0pKm4rbyx5PU1hdGguYWJzKF8tclswXSkqbitsLGc9KHJbM10tclsxXSkqbixiPShyWzJdLXJbMF0pKm4pOih2PU1hdGguYWJzKF8tclswXSkqbitvLHk9TWF0aC5hYnMody1yWzFdKSpuK2wsZz0oclsyXS1yWzBdKSpuLGI9KHJbM10tclsxXSkqbiksdGhpcy50cmFuc2Zvcm09W2gqbixmKm4sZCpuLHAqbix2LWgqbipfLWQqbip3LHktZipuKl8tcCpuKnddLHRoaXMud2lkdGg9Zyx0aGlzLmhlaWdodD1ifXJldHVybiB5KHQsW3trZXk6InJhd0RpbXMiLGdldDpmdW5jdGlvbigpe3ZhciB0PXRoaXMudmlld0JveDtyZXR1cm4oMCxpLnNoYWRvdykodGhpcywicmF3RGltcyIse3BhZ2VXaWR0aDp0WzJdLXRbMF0scGFnZUhlaWdodDp0WzNdLXRbMV0scGFnZVg6dFswXSxwYWdlWTp0WzFdfSl9fSx7a2V5OiJjbG9uZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e30scj1lLnNjYWxlLG49dm9pZCAwPT09cj90aGlzLnNjYWxlOnIsaT1lLnJvdGF0aW9uLGE9dm9pZCAwPT09aT90aGlzLnJvdGF0aW9uOmksbz1lLm9mZnNldFgscz12b2lkIDA9PT1vP3RoaXMub2Zmc2V0WDpvLGw9ZS5vZmZzZXRZLHU9dm9pZCAwPT09bD90aGlzLm9mZnNldFk6bCxjPWUuZG9udEZsaXAsaD12b2lkIDAhPT1jJiZjO3JldHVybiBuZXcgdCh7dmlld0JveDp0aGlzLnZpZXdCb3guc2xpY2UoKSxzY2FsZTpuLHJvdGF0aW9uOmEsb2Zmc2V0WDpzLG9mZnNldFk6dSxkb250RmxpcDpofSl9fSx7a2V5OiJjb252ZXJ0VG9WaWV3cG9ydFBvaW50Iix2YWx1ZTpmdW5jdGlvbih0LGUpe3JldHVybiBpLlV0aWwuYXBwbHlUcmFuc2Zvcm0oW3QsZV0sdGhpcy50cmFuc2Zvcm0pfX0se2tleToiY29udmVydFRvVmlld3BvcnRSZWN0YW5nbGUiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPWkuVXRpbC5hcHBseVRyYW5zZm9ybShbdFswXSx0WzFdXSx0aGlzLnRyYW5zZm9ybSkscj1pLlV0aWwuYXBwbHlUcmFuc2Zvcm0oW3RbMl0sdFszXV0sdGhpcy50cmFuc2Zvcm0pO3JldHVybltlWzBdLGVbMV0sclswXSxyWzFdXX19LHtrZXk6ImNvbnZlcnRUb1BkZlBvaW50Iix2YWx1ZTpmdW5jdGlvbih0LGUpe3JldHVybiBpLlV0aWwuYXBwbHlJbnZlcnNlVHJhbnNmb3JtKFt0LGVdLHRoaXMudHJhbnNmb3JtKX19XSksdH0oKTtlLlBhZ2VWaWV3cG9ydD1QO3ZhciBUPWZ1bmN0aW9uKHQpe2gocix0KTt2YXIgZT1kKHIpO2Z1bmN0aW9uIHIodCxuKXt2YXIgaSxhPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTowO3JldHVybiBtKHRoaXMsciksKGk9ZS5jYWxsKHRoaXMsdCwiUmVuZGVyaW5nQ2FuY2VsbGVkRXhjZXB0aW9uIikpLnR5cGU9bixpLmV4dHJhRGVsYXk9YSxpfXJldHVybiB5KHIpfShpLkJhc2VFeGNlcHRpb24pO2Z1bmN0aW9uIEModCl7Zm9yKHZhciBlPXQubGVuZ3RoLHI9MDtyPGUmJiIiPT09dFtyXS50cmltKCk7KXIrKztyZXR1cm4iZGF0YToiPT09dC5zdWJzdHJpbmcocixyKzUpLnRvTG93ZXJDYXNlKCl9ZS5SZW5kZXJpbmdDYW5jZWxsZWRFeGNlcHRpb249VDt2YXIgTyxGPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe20odGhpcyx0KSxnKHRoaXMsInN0YXJ0ZWQiLE9iamVjdC5jcmVhdGUobnVsbCkpLGcodGhpcywidGltZXMiLFtdKX1yZXR1cm4geSh0LFt7a2V5OiJ0aW1lIix2YWx1ZTpmdW5jdGlvbih0KXt0IGluIHRoaXMuc3RhcnRlZCYmKDAsaS53YXJuKSgiVGltZXIgaXMgYWxyZWFkeSBydW5uaW5nIGZvciAiLmNvbmNhdCh0KSksdGhpcy5zdGFydGVkW3RdPURhdGUubm93KCl9fSx7a2V5OiJ0aW1lRW5kIix2YWx1ZTpmdW5jdGlvbih0KXt0IGluIHRoaXMuc3RhcnRlZHx8KDAsaS53YXJuKSgiVGltZXIgaGFzIG5vdCBiZWVuIHN0YXJ0ZWQgZm9yICIuY29uY2F0KHQpKSx0aGlzLnRpbWVzLnB1c2goe25hbWU6dCxzdGFydDp0aGlzLnN0YXJ0ZWRbdF0sZW5kOkRhdGUubm93KCl9KSxkZWxldGUgdGhpcy5zdGFydGVkW3RdfX0se2tleToidG9TdHJpbmciLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQsZT1bXSxyPTAsbj1zKHRoaXMudGltZXMpO3RyeXtmb3Iobi5zKCk7ISh0PW4ubigpKS5kb25lOyl7dmFyIGk9dC52YWx1ZS5uYW1lO3I9TWF0aC5tYXgoaS5sZW5ndGgscil9fWNhdGNoKHQpe24uZSh0KX1maW5hbGx5e24uZigpfXZhciBhLG89cyh0aGlzLnRpbWVzKTt0cnl7Zm9yKG8ucygpOyEoYT1vLm4oKSkuZG9uZTspe3ZhciBsPWEudmFsdWUsdT1sLm5hbWUsYz1sLnN0YXJ0LGg9bC5lbmQ7ZS5wdXNoKCIiLmNvbmNhdCh1LnBhZEVuZChyKSwiICIpLmNvbmNhdChoLWMsIm1zXG4iKSl9fWNhdGNoKHQpe28uZSh0KX1maW5hbGx5e28uZigpfXJldHVybiBlLmpvaW4oIiIpfX1dKSx0fSgpO2Z1bmN0aW9uIE0odCxlKXt0cnl7dmFyIHI9KGU/bmV3IFVSTCh0LGUpOm5ldyBVUkwodCkpLnByb3RvY29sO3JldHVybiJodHRwOiI9PT1yfHwiaHR0cHM6Ij09PXJ9Y2F0Y2godCl7cmV0dXJuITF9fWUuU3RhdFRpbWVyPUY7dmFyIFI9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7bSh0aGlzLHQpfXJldHVybiB5KHQsbnVsbCxbe2tleToidG9EYXRlT2JqZWN0Iix2YWx1ZTpmdW5jdGlvbih0KXtpZighdHx8InN0cmluZyIhPXR5cGVvZiB0KXJldHVybiBudWxsO098fChPPW5ldyBSZWdFeHAoIl5EOihcXGR7NH0pKFxcZHsyfSk/KFxcZHsyfSk/KFxcZHsyfSk/KFxcZHsyfSk/KFxcZHsyfSk/KFtafCt8LV0pPyhcXGR7Mn0pPyc/KFxcZHsyfSk/Jz8iKSk7dmFyIGU9Ty5leGVjKHQpO2lmKCFlKXJldHVybiBudWxsO3ZhciByPXBhcnNlSW50KGVbMV0sMTApLG49cGFyc2VJbnQoZVsyXSwxMCk7bj1uPj0xJiZuPD0xMj9uLTE6MDt2YXIgaT1wYXJzZUludChlWzNdLDEwKTtpPWk+PTEmJmk8PTMxP2k6MTt2YXIgYT1wYXJzZUludChlWzRdLDEwKTthPWE+PTAmJmE8PTIzP2E6MDt2YXIgbz1wYXJzZUludChlWzVdLDEwKTtvPW8+PTAmJm88PTU5P286MDt2YXIgcz1wYXJzZUludChlWzZdLDEwKTtzPXM+PTAmJnM8PTU5P3M6MDt2YXIgbD1lWzddfHwiWiIsdT1wYXJzZUludChlWzhdLDEwKTt1PXU+PTAmJnU8PTIzP3U6MDt2YXIgYz1wYXJzZUludChlWzldLDEwKXx8MDtyZXR1cm4gYz1jPj0wJiZjPD01OT9jOjAsIi0iPT09bD8oYSs9dSxvKz1jKToiKyI9PT1sJiYoYS09dSxvLT1jKSxuZXcgRGF0ZShEYXRlLlVUQyhyLG4saSxhLG8scykpfX1dKSx0fSgpO2Z1bmN0aW9uIEkodCl7aWYodC5zdGFydHNXaXRoKCIjIikpe3ZhciBlPXBhcnNlSW50KHQuc2xpY2UoMSksMTYpO3JldHVyblsoMTY3MTE2ODAmZSk+PjE2LCg2NTI4MCZlKT4+OCwyNTUmZV19cmV0dXJuIHQuc3RhcnRzV2l0aCgicmdiKCIpP3Quc2xpY2UoNCwtMSkuc3BsaXQoIiwiKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBwYXJzZUludCh0KX0pKTp0LnN0YXJ0c1dpdGgoInJnYmEoIik/dC5zbGljZSg1LC0xKS5zcGxpdCgiLCIpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHBhcnNlSW50KHQpfSkpLnNsaWNlKDAsMyk6KCgwLGkud2FybikoJ05vdCBhIHZhbGlkIGNvbG9yIGZvcm1hdDogIicuY29uY2F0KHQsJyInKSksWzAsMCwwXSl9ZS5QREZEYXRlU3RyaW5nPVJ9LCh0LGUscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZS5CYXNlU3RhbmRhcmRGb250RGF0YUZhY3Rvcnk9ZS5CYXNlU1ZHRmFjdG9yeT1lLkJhc2VDYW52YXNGYWN0b3J5PWUuQmFzZUNNYXBSZWFkZXJGYWN0b3J5PXZvaWQgMDt2YXIgbj1yKDEpO2Z1bmN0aW9uIGkoKXtpPWZ1bmN0aW9uKCl7cmV0dXJuIHR9O3ZhciB0PXt9LGU9T2JqZWN0LnByb3RvdHlwZSxyPWUuaGFzT3duUHJvcGVydHksbj1PYmplY3QuZGVmaW5lUHJvcGVydHl8fGZ1bmN0aW9uKHQsZSxyKXt0W2VdPXIudmFsdWV9LGE9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbD9TeW1ib2w6e30sbz1hLml0ZXJhdG9yfHwiQEBpdGVyYXRvciIsbD1hLmFzeW5jSXRlcmF0b3J8fCJAQGFzeW5jSXRlcmF0b3IiLHU9YS50b1N0cmluZ1RhZ3x8IkBAdG9TdHJpbmdUYWciO2Z1bmN0aW9uIGModCxlLHIpe3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLHt2YWx1ZTpyLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSksdFtlXX10cnl7Yyh7fSwiIil9Y2F0Y2godCl7Yz1mdW5jdGlvbih0LGUscil7cmV0dXJuIHRbZV09cn19ZnVuY3Rpb24gaCh0LGUscixpKXt2YXIgYT1lJiZlLnByb3RvdHlwZSBpbnN0YW5jZW9mIHA/ZTpwLG89T2JqZWN0LmNyZWF0ZShhLnByb3RvdHlwZSkscz1uZXcgUChpfHxbXSk7cmV0dXJuIG4obywiX2ludm9rZSIse3ZhbHVlOmsodCxyLHMpfSksb31mdW5jdGlvbiBmKHQsZSxyKXt0cnl7cmV0dXJue3R5cGU6Im5vcm1hbCIsYXJnOnQuY2FsbChlLHIpfX1jYXRjaCh0KXtyZXR1cm57dHlwZToidGhyb3ciLGFyZzp0fX19dC53cmFwPWg7dmFyIGQ9e307ZnVuY3Rpb24gcCgpe31mdW5jdGlvbiB2KCl7fWZ1bmN0aW9uIHkoKXt9dmFyIG09e307YyhtLG8sKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSk7dmFyIGc9T2JqZWN0LmdldFByb3RvdHlwZU9mLGI9ZyYmZyhnKFQoW10pKSk7YiYmYiE9PWUmJnIuY2FsbChiLG8pJiYobT1iKTt2YXIgXz15LnByb3RvdHlwZT1wLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKG0pO2Z1bmN0aW9uIHcodCl7WyJuZXh0IiwidGhyb3ciLCJyZXR1cm4iXS5mb3JFYWNoKChmdW5jdGlvbihlKXtjKHQsZSwoZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2ludm9rZShlLHQpfSkpfSkpfWZ1bmN0aW9uIEEodCxlKXtmdW5jdGlvbiBpKG4sYSxvLGwpe3ZhciB1PWYodFtuXSx0LGEpO2lmKCJ0aHJvdyIhPT11LnR5cGUpe3ZhciBjPXUuYXJnLGg9Yy52YWx1ZTtyZXR1cm4gaCYmIm9iamVjdCI9PXMoaCkmJnIuY2FsbChoLCJfX2F3YWl0Iik/ZS5yZXNvbHZlKGguX19hd2FpdCkudGhlbigoZnVuY3Rpb24odCl7aSgibmV4dCIsdCxvLGwpfSksKGZ1bmN0aW9uKHQpe2koInRocm93Iix0LG8sbCl9KSk6ZS5yZXNvbHZlKGgpLnRoZW4oKGZ1bmN0aW9uKHQpe2MudmFsdWU9dCxvKGMpfSksKGZ1bmN0aW9uKHQpe3JldHVybiBpKCJ0aHJvdyIsdCxvLGwpfSkpfWwodS5hcmcpfXZhciBhO24odGhpcywiX2ludm9rZSIse3ZhbHVlOmZ1bmN0aW9uKHQscil7ZnVuY3Rpb24gbigpe3JldHVybiBuZXcgZSgoZnVuY3Rpb24oZSxuKXtpKHQscixlLG4pfSkpfXJldHVybiBhPWE/YS50aGVuKG4sbik6bigpfX0pfWZ1bmN0aW9uIGsodCxlLHIpe3ZhciBuPSJzdXNwZW5kZWRTdGFydCI7cmV0dXJuIGZ1bmN0aW9uKGksYSl7aWYoImV4ZWN1dGluZyI9PT1uKXRocm93IG5ldyBFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgcnVubmluZyIpO2lmKCJjb21wbGV0ZWQiPT09bil7aWYoInRocm93Ij09PWkpdGhyb3cgYTtyZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9fWZvcihyLm1ldGhvZD1pLHIuYXJnPWE7Oyl7dmFyIG89ci5kZWxlZ2F0ZTtpZihvKXt2YXIgcz1TKG8scik7aWYocyl7aWYocz09PWQpY29udGludWU7cmV0dXJuIHN9fWlmKCJuZXh0Ij09PXIubWV0aG9kKXIuc2VudD1yLl9zZW50PXIuYXJnO2Vsc2UgaWYoInRocm93Ij09PXIubWV0aG9kKXtpZigic3VzcGVuZGVkU3RhcnQiPT09bil0aHJvdyBuPSJjb21wbGV0ZWQiLHIuYXJnO3IuZGlzcGF0Y2hFeGNlcHRpb24oci5hcmcpfWVsc2UicmV0dXJuIj09PXIubWV0aG9kJiZyLmFicnVwdCgicmV0dXJuIixyLmFyZyk7bj0iZXhlY3V0aW5nIjt2YXIgbD1mKHQsZSxyKTtpZigibm9ybWFsIj09PWwudHlwZSl7aWYobj1yLmRvbmU/ImNvbXBsZXRlZCI6InN1c3BlbmRlZFlpZWxkIixsLmFyZz09PWQpY29udGludWU7cmV0dXJue3ZhbHVlOmwuYXJnLGRvbmU6ci5kb25lfX0idGhyb3ciPT09bC50eXBlJiYobj0iY29tcGxldGVkIixyLm1ldGhvZD0idGhyb3ciLHIuYXJnPWwuYXJnKX19fWZ1bmN0aW9uIFModCxlKXt2YXIgcj1lLm1ldGhvZCxuPXQuaXRlcmF0b3Jbcl07aWYodm9pZCAwPT09bilyZXR1cm4gZS5kZWxlZ2F0ZT1udWxsLCJ0aHJvdyI9PT1yJiZ0Lml0ZXJhdG9yLnJldHVybiYmKGUubWV0aG9kPSJyZXR1cm4iLGUuYXJnPXZvaWQgMCxTKHQsZSksInRocm93Ij09PWUubWV0aG9kKXx8InJldHVybiIhPT1yJiYoZS5tZXRob2Q9InRocm93IixlLmFyZz1uZXcgVHlwZUVycm9yKCJUaGUgaXRlcmF0b3IgZG9lcyBub3QgcHJvdmlkZSBhICciK3IrIicgbWV0aG9kIikpLGQ7dmFyIGk9ZihuLHQuaXRlcmF0b3IsZS5hcmcpO2lmKCJ0aHJvdyI9PT1pLnR5cGUpcmV0dXJuIGUubWV0aG9kPSJ0aHJvdyIsZS5hcmc9aS5hcmcsZS5kZWxlZ2F0ZT1udWxsLGQ7dmFyIGE9aS5hcmc7cmV0dXJuIGE/YS5kb25lPyhlW3QucmVzdWx0TmFtZV09YS52YWx1ZSxlLm5leHQ9dC5uZXh0TG9jLCJyZXR1cm4iIT09ZS5tZXRob2QmJihlLm1ldGhvZD0ibmV4dCIsZS5hcmc9dm9pZCAwKSxlLmRlbGVnYXRlPW51bGwsZCk6YTooZS5tZXRob2Q9InRocm93IixlLmFyZz1uZXcgVHlwZUVycm9yKCJpdGVyYXRvciByZXN1bHQgaXMgbm90IGFuIG9iamVjdCIpLGUuZGVsZWdhdGU9bnVsbCxkKX1mdW5jdGlvbiB4KHQpe3ZhciBlPXt0cnlMb2M6dFswXX07MSBpbiB0JiYoZS5jYXRjaExvYz10WzFdKSwyIGluIHQmJihlLmZpbmFsbHlMb2M9dFsyXSxlLmFmdGVyTG9jPXRbM10pLHRoaXMudHJ5RW50cmllcy5wdXNoKGUpfWZ1bmN0aW9uIEUodCl7dmFyIGU9dC5jb21wbGV0aW9ufHx7fTtlLnR5cGU9Im5vcm1hbCIsZGVsZXRlIGUuYXJnLHQuY29tcGxldGlvbj1lfWZ1bmN0aW9uIFAodCl7dGhpcy50cnlFbnRyaWVzPVt7dHJ5TG9jOiJyb290In1dLHQuZm9yRWFjaCh4LHRoaXMpLHRoaXMucmVzZXQoITApfWZ1bmN0aW9uIFQodCl7aWYodCl7dmFyIGU9dFtvXTtpZihlKXJldHVybiBlLmNhbGwodCk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHQubmV4dClyZXR1cm4gdDtpZighaXNOYU4odC5sZW5ndGgpKXt2YXIgbj0tMSxpPWZ1bmN0aW9uIGUoKXtmb3IoOysrbjx0Lmxlbmd0aDspaWYoci5jYWxsKHQsbikpcmV0dXJuIGUudmFsdWU9dFtuXSxlLmRvbmU9ITEsZTtyZXR1cm4gZS52YWx1ZT12b2lkIDAsZS5kb25lPSEwLGV9O3JldHVybiBpLm5leHQ9aX19cmV0dXJue25leHQ6Q319ZnVuY3Rpb24gQygpe3JldHVybnt2YWx1ZTp2b2lkIDAsZG9uZTohMH19cmV0dXJuIHYucHJvdG90eXBlPXksbihfLCJjb25zdHJ1Y3RvciIse3ZhbHVlOnksY29uZmlndXJhYmxlOiEwfSksbih5LCJjb25zdHJ1Y3RvciIse3ZhbHVlOnYsY29uZmlndXJhYmxlOiEwfSksdi5kaXNwbGF5TmFtZT1jKHksdSwiR2VuZXJhdG9yRnVuY3Rpb24iKSx0LmlzR2VuZXJhdG9yRnVuY3Rpb249ZnVuY3Rpb24odCl7dmFyIGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQmJnQuY29uc3RydWN0b3I7cmV0dXJuISFlJiYoZT09PXZ8fCJHZW5lcmF0b3JGdW5jdGlvbiI9PT0oZS5kaXNwbGF5TmFtZXx8ZS5uYW1lKSl9LHQubWFyaz1mdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZih0LHkpOih0Ll9fcHJvdG9fXz15LGModCx1LCJHZW5lcmF0b3JGdW5jdGlvbiIpKSx0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKF8pLHR9LHQuYXdyYXA9ZnVuY3Rpb24odCl7cmV0dXJue19fYXdhaXQ6dH19LHcoQS5wcm90b3R5cGUpLGMoQS5wcm90b3R5cGUsbCwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSx0LkFzeW5jSXRlcmF0b3I9QSx0LmFzeW5jPWZ1bmN0aW9uKGUscixuLGksYSl7dm9pZCAwPT09YSYmKGE9UHJvbWlzZSk7dmFyIG89bmV3IEEoaChlLHIsbixpKSxhKTtyZXR1cm4gdC5pc0dlbmVyYXRvckZ1bmN0aW9uKHIpP286by5uZXh0KCkudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIHQuZG9uZT90LnZhbHVlOm8ubmV4dCgpfSkpfSx3KF8pLGMoXyx1LCJHZW5lcmF0b3IiKSxjKF8sbywoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSxjKF8sInRvU3RyaW5nIiwoZnVuY3Rpb24oKXtyZXR1cm4iW29iamVjdCBHZW5lcmF0b3JdIn0pKSx0LmtleXM9ZnVuY3Rpb24odCl7dmFyIGU9T2JqZWN0KHQpLHI9W107Zm9yKHZhciBuIGluIGUpci5wdXNoKG4pO3JldHVybiByLnJldmVyc2UoKSxmdW5jdGlvbiB0KCl7Zm9yKDtyLmxlbmd0aDspe3ZhciBuPXIucG9wKCk7aWYobiBpbiBlKXJldHVybiB0LnZhbHVlPW4sdC5kb25lPSExLHR9cmV0dXJuIHQuZG9uZT0hMCx0fX0sdC52YWx1ZXM9VCxQLnByb3RvdHlwZT17Y29uc3RydWN0b3I6UCxyZXNldDpmdW5jdGlvbih0KXtpZih0aGlzLnByZXY9MCx0aGlzLm5leHQ9MCx0aGlzLnNlbnQ9dGhpcy5fc2VudD12b2lkIDAsdGhpcy5kb25lPSExLHRoaXMuZGVsZWdhdGU9bnVsbCx0aGlzLm1ldGhvZD0ibmV4dCIsdGhpcy5hcmc9dm9pZCAwLHRoaXMudHJ5RW50cmllcy5mb3JFYWNoKEUpLCF0KWZvcih2YXIgZSBpbiB0aGlzKSJ0Ij09PWUuY2hhckF0KDApJiZyLmNhbGwodGhpcyxlKSYmIWlzTmFOKCtlLnNsaWNlKDEpKSYmKHRoaXNbZV09dm9pZCAwKX0sc3RvcDpmdW5jdGlvbigpe3RoaXMuZG9uZT0hMDt2YXIgdD10aGlzLnRyeUVudHJpZXNbMF0uY29tcGxldGlvbjtpZigidGhyb3ciPT09dC50eXBlKXRocm93IHQuYXJnO3JldHVybiB0aGlzLnJ2YWx9LGRpc3BhdGNoRXhjZXB0aW9uOmZ1bmN0aW9uKHQpe2lmKHRoaXMuZG9uZSl0aHJvdyB0O3ZhciBlPXRoaXM7ZnVuY3Rpb24gbihyLG4pe3JldHVybiBvLnR5cGU9InRocm93IixvLmFyZz10LGUubmV4dD1yLG4mJihlLm1ldGhvZD0ibmV4dCIsZS5hcmc9dm9pZCAwKSwhIW59Zm9yKHZhciBpPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtpPj0wOy0taSl7dmFyIGE9dGhpcy50cnlFbnRyaWVzW2ldLG89YS5jb21wbGV0aW9uO2lmKCJyb290Ij09PWEudHJ5TG9jKXJldHVybiBuKCJlbmQiKTtpZihhLnRyeUxvYzw9dGhpcy5wcmV2KXt2YXIgcz1yLmNhbGwoYSwiY2F0Y2hMb2MiKSxsPXIuY2FsbChhLCJmaW5hbGx5TG9jIik7aWYocyYmbCl7aWYodGhpcy5wcmV2PGEuY2F0Y2hMb2MpcmV0dXJuIG4oYS5jYXRjaExvYywhMCk7aWYodGhpcy5wcmV2PGEuZmluYWxseUxvYylyZXR1cm4gbihhLmZpbmFsbHlMb2MpfWVsc2UgaWYocyl7aWYodGhpcy5wcmV2PGEuY2F0Y2hMb2MpcmV0dXJuIG4oYS5jYXRjaExvYywhMCl9ZWxzZXtpZighbCl0aHJvdyBuZXcgRXJyb3IoInRyeSBzdGF0ZW1lbnQgd2l0aG91dCBjYXRjaCBvciBmaW5hbGx5Iik7aWYodGhpcy5wcmV2PGEuZmluYWxseUxvYylyZXR1cm4gbihhLmZpbmFsbHlMb2MpfX19fSxhYnJ1cHQ6ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO24+PTA7LS1uKXt2YXIgaT10aGlzLnRyeUVudHJpZXNbbl07aWYoaS50cnlMb2M8PXRoaXMucHJldiYmci5jYWxsKGksImZpbmFsbHlMb2MiKSYmdGhpcy5wcmV2PGkuZmluYWxseUxvYyl7dmFyIGE9aTticmVha319YSYmKCJicmVhayI9PT10fHwiY29udGludWUiPT09dCkmJmEudHJ5TG9jPD1lJiZlPD1hLmZpbmFsbHlMb2MmJihhPW51bGwpO3ZhciBvPWE/YS5jb21wbGV0aW9uOnt9O3JldHVybiBvLnR5cGU9dCxvLmFyZz1lLGE/KHRoaXMubWV0aG9kPSJuZXh0Iix0aGlzLm5leHQ9YS5maW5hbGx5TG9jLGQpOnRoaXMuY29tcGxldGUobyl9LGNvbXBsZXRlOmZ1bmN0aW9uKHQsZSl7aWYoInRocm93Ij09PXQudHlwZSl0aHJvdyB0LmFyZztyZXR1cm4iYnJlYWsiPT09dC50eXBlfHwiY29udGludWUiPT09dC50eXBlP3RoaXMubmV4dD10LmFyZzoicmV0dXJuIj09PXQudHlwZT8odGhpcy5ydmFsPXRoaXMuYXJnPXQuYXJnLHRoaXMubWV0aG9kPSJyZXR1cm4iLHRoaXMubmV4dD0iZW5kIik6Im5vcm1hbCI9PT10LnR5cGUmJmUmJih0aGlzLm5leHQ9ZSksZH0sZmluaXNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7ZT49MDstLWUpe3ZhciByPXRoaXMudHJ5RW50cmllc1tlXTtpZihyLmZpbmFsbHlMb2M9PT10KXJldHVybiB0aGlzLmNvbXBsZXRlKHIuY29tcGxldGlvbixyLmFmdGVyTG9jKSxFKHIpLGR9fSxjYXRjaDpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2U+PTA7LS1lKXt2YXIgcj10aGlzLnRyeUVudHJpZXNbZV07aWYoci50cnlMb2M9PT10KXt2YXIgbj1yLmNvbXBsZXRpb247aWYoInRocm93Ij09PW4udHlwZSl7dmFyIGk9bi5hcmc7RShyKX1yZXR1cm4gaX19dGhyb3cgbmV3IEVycm9yKCJpbGxlZ2FsIGNhdGNoIGF0dGVtcHQiKX0sZGVsZWdhdGVZaWVsZDpmdW5jdGlvbih0LGUscil7cmV0dXJuIHRoaXMuZGVsZWdhdGU9e2l0ZXJhdG9yOlQodCkscmVzdWx0TmFtZTplLG5leHRMb2M6cn0sIm5leHQiPT09dGhpcy5tZXRob2QmJih0aGlzLmFyZz12b2lkIDApLGR9fSx0fWZ1bmN0aW9uIGEodCxlLHIsbixpLGEsbyl7dHJ5e3ZhciBzPXRbYV0obyksbD1zLnZhbHVlfWNhdGNoKHQpe3JldHVybiB2b2lkIHIodCl9cy5kb25lP2UobCk6UHJvbWlzZS5yZXNvbHZlKGwpLnRoZW4obixpKX1mdW5jdGlvbiBvKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXRoaXMscj1hcmd1bWVudHM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihuLGkpe3ZhciBvPXQuYXBwbHkoZSxyKTtmdW5jdGlvbiBzKHQpe2EobyxuLGkscyxsLCJuZXh0Iix0KX1mdW5jdGlvbiBsKHQpe2EobyxuLGkscyxsLCJ0aHJvdyIsdCl9cyh2b2lkIDApfSkpfX1mdW5jdGlvbiBzKHQpe3JldHVybiBzPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiB0fSxzKHQpfWZ1bmN0aW9uIGwodCxlKXtpZighKHQgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiB1KHQsZSl7Zm9yKHZhciByPTA7cjxlLmxlbmd0aDtyKyspe3ZhciBuPWVbcl07bi5lbnVtZXJhYmxlPW4uZW51bWVyYWJsZXx8ITEsbi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIG4mJihuLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwodm9pZCAwLGk9ZnVuY3Rpb24odCxlKXtpZigib2JqZWN0IiE9PXModCl8fG51bGw9PT10KXJldHVybiB0O3ZhciByPXRbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1yKXt2YXIgbj1yLmNhbGwodCwic3RyaW5nIik7aWYoIm9iamVjdCIhPT1zKG4pKXJldHVybiBuO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuIFN0cmluZyh0KX0obi5rZXkpLCJzeW1ib2wiPT09cyhpKT9pOlN0cmluZyhpKSksbil9dmFyIGl9ZnVuY3Rpb24gYyh0LGUscil7cmV0dXJuIGUmJnUodC5wcm90b3R5cGUsZSksciYmdSh0LHIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLHR9dmFyIGg9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7bCh0aGlzLHQpLHRoaXMuY29uc3RydWN0b3I9PT10JiYoMCxuLnVucmVhY2hhYmxlKSgiQ2Fubm90IGluaXRpYWxpemUgQmFzZUNhbnZhc0ZhY3RvcnkuIil9cmV0dXJuIGModCxbe2tleToiY3JlYXRlIix2YWx1ZTpmdW5jdGlvbih0LGUpe2lmKHQ8PTB8fGU8PTApdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGNhbnZhcyBzaXplIik7dmFyIHI9dGhpcy5fY3JlYXRlQ2FudmFzKHQsZSk7cmV0dXJue2NhbnZhczpyLGNvbnRleHQ6ci5nZXRDb250ZXh0KCIyZCIpfX19LHtrZXk6InJlc2V0Iix2YWx1ZTpmdW5jdGlvbih0LGUscil7aWYoIXQuY2FudmFzKXRocm93IG5ldyBFcnJvcigiQ2FudmFzIGlzIG5vdCBzcGVjaWZpZWQiKTtpZihlPD0wfHxyPD0wKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBjYW52YXMgc2l6ZSIpO3QuY2FudmFzLndpZHRoPWUsdC5jYW52YXMuaGVpZ2h0PXJ9fSx7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbih0KXtpZighdC5jYW52YXMpdGhyb3cgbmV3IEVycm9yKCJDYW52YXMgaXMgbm90IHNwZWNpZmllZCIpO3QuY2FudmFzLndpZHRoPTAsdC5jYW52YXMuaGVpZ2h0PTAsdC5jYW52YXM9bnVsbCx0LmNvbnRleHQ9bnVsbH19LHtrZXk6Il9jcmVhdGVDYW52YXMiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7KDAsbi51bnJlYWNoYWJsZSkoIkFic3RyYWN0IG1ldGhvZCBgX2NyZWF0ZUNhbnZhc2AgY2FsbGVkLiIpfX1dKSx0fSgpO2UuQmFzZUNhbnZhc0ZhY3Rvcnk9aDt2YXIgZj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7dmFyIHI9ZS5iYXNlVXJsLGk9dm9pZCAwPT09cj9udWxsOnIsYT1lLmlzQ29tcHJlc3NlZCxvPXZvaWQgMCE9PWEmJmE7bCh0aGlzLHQpLHRoaXMuY29uc3RydWN0b3I9PT10JiYoMCxuLnVucmVhY2hhYmxlKSgiQ2Fubm90IGluaXRpYWxpemUgQmFzZUNNYXBSZWFkZXJGYWN0b3J5LiIpLHRoaXMuYmFzZVVybD1pLHRoaXMuaXNDb21wcmVzc2VkPW99dmFyIGU7cmV0dXJuIGModCxbe2tleToiZmV0Y2giLHZhbHVlOihlPW8oaSgpLm1hcmsoKGZ1bmN0aW9uIHQoZSl7dmFyIHIsYSxvLHM9dGhpcztyZXR1cm4gaSgpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOmlmKHI9ZS5uYW1lLHRoaXMuYmFzZVVybCl7dC5uZXh0PTM7YnJlYWt9dGhyb3cgbmV3IEVycm9yKCdUaGUgQ01hcCAiYmFzZVVybCIgcGFyYW1ldGVyIG11c3QgYmUgc3BlY2lmaWVkLCBlbnN1cmUgdGhhdCB0aGUgImNNYXBVcmwiIGFuZCAiY01hcFBhY2tlZCIgQVBJIHBhcmFtZXRlcnMgYXJlIHByb3ZpZGVkLicpO2Nhc2UgMzppZihyKXt0Lm5leHQ9NTticmVha310aHJvdyBuZXcgRXJyb3IoIkNNYXAgbmFtZSBtdXN0IGJlIHNwZWNpZmllZC4iKTtjYXNlIDU6cmV0dXJuIGE9dGhpcy5iYXNlVXJsK3IrKHRoaXMuaXNDb21wcmVzc2VkPyIuYmNtYXAiOiIiKSxvPXRoaXMuaXNDb21wcmVzc2VkP24uQ01hcENvbXByZXNzaW9uVHlwZS5CSU5BUlk6bi5DTWFwQ29tcHJlc3Npb25UeXBlLk5PTkUsdC5hYnJ1cHQoInJldHVybiIsdGhpcy5fZmV0Y2hEYXRhKGEsbykuY2F0Y2goKGZ1bmN0aW9uKHQpe3Rocm93IG5ldyBFcnJvcigiVW5hYmxlIHRvIGxvYWQgIi5jb25jYXQocy5pc0NvbXByZXNzZWQ/ImJpbmFyeSAiOiIiLCJDTWFwIGF0OiAiKS5jb25jYXQoYSkpfSkpKTtjYXNlIDg6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKSxmdW5jdGlvbih0KXtyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KX0se2tleToiX2ZldGNoRGF0YSIsdmFsdWU6ZnVuY3Rpb24odCxlKXsoMCxuLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGBfZmV0Y2hEYXRhYCBjYWxsZWQuIil9fV0pLHR9KCk7ZS5CYXNlQ01hcFJlYWRlckZhY3Rvcnk9Zjt2YXIgZD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7dmFyIHI9ZS5iYXNlVXJsLGk9dm9pZCAwPT09cj9udWxsOnI7bCh0aGlzLHQpLHRoaXMuY29uc3RydWN0b3I9PT10JiYoMCxuLnVucmVhY2hhYmxlKSgiQ2Fubm90IGluaXRpYWxpemUgQmFzZVN0YW5kYXJkRm9udERhdGFGYWN0b3J5LiIpLHRoaXMuYmFzZVVybD1pfXZhciBlO3JldHVybiBjKHQsW3trZXk6ImZldGNoIix2YWx1ZTooZT1vKGkoKS5tYXJrKChmdW5jdGlvbiB0KGUpe3ZhciByLG47cmV0dXJuIGkoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDppZihyPWUuZmlsZW5hbWUsdGhpcy5iYXNlVXJsKXt0Lm5leHQ9MzticmVha310aHJvdyBuZXcgRXJyb3IoJ1RoZSBzdGFuZGFyZCBmb250ICJiYXNlVXJsIiBwYXJhbWV0ZXIgbXVzdCBiZSBzcGVjaWZpZWQsIGVuc3VyZSB0aGF0IHRoZSAic3RhbmRhcmRGb250RGF0YVVybCIgQVBJIHBhcmFtZXRlciBpcyBwcm92aWRlZC4nKTtjYXNlIDM6aWYocil7dC5uZXh0PTU7YnJlYWt9dGhyb3cgbmV3IEVycm9yKCJGb250IGZpbGVuYW1lIG11c3QgYmUgc3BlY2lmaWVkLiIpO2Nhc2UgNTpyZXR1cm4gbj0iIi5jb25jYXQodGhpcy5iYXNlVXJsKS5jb25jYXQociksdC5hYnJ1cHQoInJldHVybiIsdGhpcy5fZmV0Y2hEYXRhKG4pLmNhdGNoKChmdW5jdGlvbih0KXt0aHJvdyBuZXcgRXJyb3IoIlVuYWJsZSB0byBsb2FkIGZvbnQgZGF0YSBhdDogIi5jb25jYXQobikpfSkpKTtjYXNlIDc6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKSxmdW5jdGlvbih0KXtyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KX0se2tleToiX2ZldGNoRGF0YSIsdmFsdWU6ZnVuY3Rpb24odCl7KDAsbi51bnJlYWNoYWJsZSkoIkFic3RyYWN0IG1ldGhvZCBgX2ZldGNoRGF0YWAgY2FsbGVkLiIpfX1dKSx0fSgpO2UuQmFzZVN0YW5kYXJkRm9udERhdGFGYWN0b3J5PWQ7dmFyIHA9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7bCh0aGlzLHQpLHRoaXMuY29uc3RydWN0b3I9PT10JiYoMCxuLnVucmVhY2hhYmxlKSgiQ2Fubm90IGluaXRpYWxpemUgQmFzZVNWR0ZhY3RvcnkuIil9cmV0dXJuIGModCxbe2tleToiY3JlYXRlIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciByPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdJiZhcmd1bWVudHNbMl07aWYodDw9MHx8ZTw9MCl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgU1ZHIGRpbWVuc2lvbnMiKTt2YXIgbj10aGlzLl9jcmVhdGVTVkcoInN2ZzpzdmciKTtyZXR1cm4gbi5zZXRBdHRyaWJ1dGUoInZlcnNpb24iLCIxLjEiKSxyfHwobi5zZXRBdHRyaWJ1dGUoIndpZHRoIiwiIi5jb25jYXQodCwicHgiKSksbi5zZXRBdHRyaWJ1dGUoImhlaWdodCIsIiIuY29uY2F0KGUsInB4IikpKSxuLnNldEF0dHJpYnV0ZSgicHJlc2VydmVBc3BlY3RSYXRpbyIsIm5vbmUiKSxuLnNldEF0dHJpYnV0ZSgidmlld0JveCIsIjAgMCAiLmNvbmNhdCh0LCIgIikuY29uY2F0KGUpKSxufX0se2tleToiY3JlYXRlRWxlbWVudCIsdmFsdWU6ZnVuY3Rpb24odCl7aWYoInN0cmluZyIhPXR5cGVvZiB0KXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBTVkcgZWxlbWVudCB0eXBlIik7cmV0dXJuIHRoaXMuX2NyZWF0ZVNWRyh0KX19LHtrZXk6Il9jcmVhdGVTVkciLHZhbHVlOmZ1bmN0aW9uKHQpeygwLG4udW5yZWFjaGFibGUpKCJBYnN0cmFjdCBtZXRob2QgYF9jcmVhdGVTVkdgIGNhbGxlZC4iKX19XSksdH0oKTtlLkJhc2VTVkdGYWN0b3J5PXB9LCh0LGUscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZS5NdXJtdXJIYXNoM182ND12b2lkIDA7dmFyIG49cigxKTtmdW5jdGlvbiBpKHQpe3JldHVybiBpPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiB0fSxpKHQpfWZ1bmN0aW9uIGEodCxlKXtmb3IodmFyIHI9MDtyPGUubGVuZ3RoO3IrKyl7dmFyIG49ZVtyXTtuLmVudW1lcmFibGU9bi5lbnVtZXJhYmxlfHwhMSxuLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gbiYmKG4ud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCh2b2lkIDAsYT1mdW5jdGlvbih0LGUpe2lmKCJvYmplY3QiIT09aSh0KXx8bnVsbD09PXQpcmV0dXJuIHQ7dmFyIHI9dFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PXIpe3ZhciBuPXIuY2FsbCh0LCJzdHJpbmciKTtpZigib2JqZWN0IiE9PWkobikpcmV0dXJuIG47dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4gU3RyaW5nKHQpfShuLmtleSksInN5bWJvbCI9PT1pKGEpP2E6U3RyaW5nKGEpKSxuKX12YXIgYX12YXIgbz0zMjg1Mzc3NTIwLHM9NDI5NDkwMTc2MCxsPTY1NTM1LHU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpeyFmdW5jdGlvbih0LGUpe2lmKCEodCBpbnN0YW5jZW9mIGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLHQpLHRoaXMuaDE9ZT80Mjk0OTY3Mjk1JmU6byx0aGlzLmgyPWU/NDI5NDk2NzI5NSZlOm99dmFyIGUscjtyZXR1cm4gZT10LChyPVt7a2V5OiJ1cGRhdGUiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlLHI7aWYoInN0cmluZyI9PXR5cGVvZiB0KXtlPW5ldyBVaW50OEFycmF5KDIqdC5sZW5ndGgpLHI9MDtmb3IodmFyIGk9MCxhPXQubGVuZ3RoO2k8YTtpKyspe3ZhciBvPXQuY2hhckNvZGVBdChpKTtvPD0yNTU/ZVtyKytdPW86KGVbcisrXT1vPj4+OCxlW3IrK109MjU1Jm8pfX1lbHNle2lmKCEoMCxuLmlzQXJyYXlCdWZmZXIpKHQpKXRocm93IG5ldyBFcnJvcigiV3JvbmcgZGF0YSBmb3JtYXQgaW4gTXVybXVySGFzaDNfNjRfdXBkYXRlLiBJbnB1dCBtdXN0IGJlIGEgc3RyaW5nIG9yIGFycmF5LiIpO3I9KGU9dC5zbGljZSgpKS5ieXRlTGVuZ3RofWZvcih2YXIgdT1yPj4yLGM9ci00KnUsaD1uZXcgVWludDMyQXJyYXkoZS5idWZmZXIsMCx1KSxmPTAsZD0wLHA9dGhpcy5oMSx2PXRoaXMuaDIseT0zNDMyOTE4MzUzLG09NDYxODQ1OTA3LGc9MTE2MDEsYj0xMzcxNSxfPTA7Xzx1O18rKykxJl8/cD01KihwPShwXj1mPShmPShmPShmPWhbX10pKnkmc3xmKmcmbCk8PDE1fGY+Pj4xNykqbSZzfGYqYiZsKTw8MTN8cD4+PjE5KSszODY0MjkyMTk2OnY9NSoodj0odl49ZD0oZD0oZD0oZD1oW19dKSp5JnN8ZCpnJmwpPDwxNXxkPj4+MTcpKm0mc3xkKmImbCk8PDEzfHY+Pj4xOSkrMzg2NDI5MjE5Njtzd2l0Y2goZj0wLGMpe2Nhc2UgMzpmXj1lWzQqdSsyXTw8MTY7Y2FzZSAyOmZePWVbNCp1KzFdPDw4O2Nhc2UgMTpmPShmPShmPShmXj1lWzQqdV0pKnkmc3xmKmcmbCk8PDE1fGY+Pj4xNykqbSZzfGYqYiZsLDEmdT9wXj1mOnZePWZ9dGhpcy5oMT1wLHRoaXMuaDI9dn19LHtrZXk6ImhleGRpZ2VzdCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmgxLGU9dGhpcy5oMjtyZXR1cm4gdD0zOTgxODA2Nzk3Kih0Xj1lPj4+MSkmc3wzNjA0NSp0JmwsdD00NDQ5ODQ0MDMqKHRePShlPTQyODM1NDM1MTEqZSZzfCgyOTUwMTYzNzk3KihlPDwxNnx0Pj4+MTYpJnMpPj4+MTYpPj4+MSkmc3w2MDQ5OSp0JmwsKCh0Xj0oZT0zMzAxODgyMzY2KmUmc3woMzEyMDQzNzg5MyooZTw8MTZ8dD4+PjE2KSZzKT4+PjE2KT4+PjEpPj4+MCkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDgsIjAiKSsoZT4+PjApLnRvU3RyaW5nKDE2KS5wYWRTdGFydCg4LCIwIil9fV0pJiZhKGUucHJvdG90eXBlLHIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLHR9KCk7ZS5NdXJtdXJIYXNoM182ND11fSwodCxlLHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGUuRm9udExvYWRlcj1lLkZvbnRGYWNlT2JqZWN0PXZvaWQgMDt2YXIgbj1yKDEpLGk9cigzKTtmdW5jdGlvbiBhKHQpe3JldHVybiBhPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiB0fSxhKHQpfWZ1bmN0aW9uIG8oKXtvPWZ1bmN0aW9uKCl7cmV0dXJuIHR9O3ZhciB0PXt9LGU9T2JqZWN0LnByb3RvdHlwZSxyPWUuaGFzT3duUHJvcGVydHksbj1PYmplY3QuZGVmaW5lUHJvcGVydHl8fGZ1bmN0aW9uKHQsZSxyKXt0W2VdPXIudmFsdWV9LGk9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbD9TeW1ib2w6e30scz1pLml0ZXJhdG9yfHwiQEBpdGVyYXRvciIsbD1pLmFzeW5jSXRlcmF0b3J8fCJAQGFzeW5jSXRlcmF0b3IiLHU9aS50b1N0cmluZ1RhZ3x8IkBAdG9TdHJpbmdUYWciO2Z1bmN0aW9uIGModCxlLHIpe3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLHt2YWx1ZTpyLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSksdFtlXX10cnl7Yyh7fSwiIil9Y2F0Y2godCl7Yz1mdW5jdGlvbih0LGUscil7cmV0dXJuIHRbZV09cn19ZnVuY3Rpb24gaCh0LGUscixpKXt2YXIgYT1lJiZlLnByb3RvdHlwZSBpbnN0YW5jZW9mIHA/ZTpwLG89T2JqZWN0LmNyZWF0ZShhLnByb3RvdHlwZSkscz1uZXcgUChpfHxbXSk7cmV0dXJuIG4obywiX2ludm9rZSIse3ZhbHVlOmsodCxyLHMpfSksb31mdW5jdGlvbiBmKHQsZSxyKXt0cnl7cmV0dXJue3R5cGU6Im5vcm1hbCIsYXJnOnQuY2FsbChlLHIpfX1jYXRjaCh0KXtyZXR1cm57dHlwZToidGhyb3ciLGFyZzp0fX19dC53cmFwPWg7dmFyIGQ9e307ZnVuY3Rpb24gcCgpe31mdW5jdGlvbiB2KCl7fWZ1bmN0aW9uIHkoKXt9dmFyIG09e307YyhtLHMsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSk7dmFyIGc9T2JqZWN0LmdldFByb3RvdHlwZU9mLGI9ZyYmZyhnKFQoW10pKSk7YiYmYiE9PWUmJnIuY2FsbChiLHMpJiYobT1iKTt2YXIgXz15LnByb3RvdHlwZT1wLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKG0pO2Z1bmN0aW9uIHcodCl7WyJuZXh0IiwidGhyb3ciLCJyZXR1cm4iXS5mb3JFYWNoKChmdW5jdGlvbihlKXtjKHQsZSwoZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2ludm9rZShlLHQpfSkpfSkpfWZ1bmN0aW9uIEEodCxlKXtmdW5jdGlvbiBpKG4sbyxzLGwpe3ZhciB1PWYodFtuXSx0LG8pO2lmKCJ0aHJvdyIhPT11LnR5cGUpe3ZhciBjPXUuYXJnLGg9Yy52YWx1ZTtyZXR1cm4gaCYmIm9iamVjdCI9PWEoaCkmJnIuY2FsbChoLCJfX2F3YWl0Iik/ZS5yZXNvbHZlKGguX19hd2FpdCkudGhlbigoZnVuY3Rpb24odCl7aSgibmV4dCIsdCxzLGwpfSksKGZ1bmN0aW9uKHQpe2koInRocm93Iix0LHMsbCl9KSk6ZS5yZXNvbHZlKGgpLnRoZW4oKGZ1bmN0aW9uKHQpe2MudmFsdWU9dCxzKGMpfSksKGZ1bmN0aW9uKHQpe3JldHVybiBpKCJ0aHJvdyIsdCxzLGwpfSkpfWwodS5hcmcpfXZhciBvO24odGhpcywiX2ludm9rZSIse3ZhbHVlOmZ1bmN0aW9uKHQscil7ZnVuY3Rpb24gbigpe3JldHVybiBuZXcgZSgoZnVuY3Rpb24oZSxuKXtpKHQscixlLG4pfSkpfXJldHVybiBvPW8/by50aGVuKG4sbik6bigpfX0pfWZ1bmN0aW9uIGsodCxlLHIpe3ZhciBuPSJzdXNwZW5kZWRTdGFydCI7cmV0dXJuIGZ1bmN0aW9uKGksYSl7aWYoImV4ZWN1dGluZyI9PT1uKXRocm93IG5ldyBFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgcnVubmluZyIpO2lmKCJjb21wbGV0ZWQiPT09bil7aWYoInRocm93Ij09PWkpdGhyb3cgYTtyZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9fWZvcihyLm1ldGhvZD1pLHIuYXJnPWE7Oyl7dmFyIG89ci5kZWxlZ2F0ZTtpZihvKXt2YXIgcz1TKG8scik7aWYocyl7aWYocz09PWQpY29udGludWU7cmV0dXJuIHN9fWlmKCJuZXh0Ij09PXIubWV0aG9kKXIuc2VudD1yLl9zZW50PXIuYXJnO2Vsc2UgaWYoInRocm93Ij09PXIubWV0aG9kKXtpZigic3VzcGVuZGVkU3RhcnQiPT09bil0aHJvdyBuPSJjb21wbGV0ZWQiLHIuYXJnO3IuZGlzcGF0Y2hFeGNlcHRpb24oci5hcmcpfWVsc2UicmV0dXJuIj09PXIubWV0aG9kJiZyLmFicnVwdCgicmV0dXJuIixyLmFyZyk7bj0iZXhlY3V0aW5nIjt2YXIgbD1mKHQsZSxyKTtpZigibm9ybWFsIj09PWwudHlwZSl7aWYobj1yLmRvbmU/ImNvbXBsZXRlZCI6InN1c3BlbmRlZFlpZWxkIixsLmFyZz09PWQpY29udGludWU7cmV0dXJue3ZhbHVlOmwuYXJnLGRvbmU6ci5kb25lfX0idGhyb3ciPT09bC50eXBlJiYobj0iY29tcGxldGVkIixyLm1ldGhvZD0idGhyb3ciLHIuYXJnPWwuYXJnKX19fWZ1bmN0aW9uIFModCxlKXt2YXIgcj1lLm1ldGhvZCxuPXQuaXRlcmF0b3Jbcl07aWYodm9pZCAwPT09bilyZXR1cm4gZS5kZWxlZ2F0ZT1udWxsLCJ0aHJvdyI9PT1yJiZ0Lml0ZXJhdG9yLnJldHVybiYmKGUubWV0aG9kPSJyZXR1cm4iLGUuYXJnPXZvaWQgMCxTKHQsZSksInRocm93Ij09PWUubWV0aG9kKXx8InJldHVybiIhPT1yJiYoZS5tZXRob2Q9InRocm93IixlLmFyZz1uZXcgVHlwZUVycm9yKCJUaGUgaXRlcmF0b3IgZG9lcyBub3QgcHJvdmlkZSBhICciK3IrIicgbWV0aG9kIikpLGQ7dmFyIGk9ZihuLHQuaXRlcmF0b3IsZS5hcmcpO2lmKCJ0aHJvdyI9PT1pLnR5cGUpcmV0dXJuIGUubWV0aG9kPSJ0aHJvdyIsZS5hcmc9aS5hcmcsZS5kZWxlZ2F0ZT1udWxsLGQ7dmFyIGE9aS5hcmc7cmV0dXJuIGE/YS5kb25lPyhlW3QucmVzdWx0TmFtZV09YS52YWx1ZSxlLm5leHQ9dC5uZXh0TG9jLCJyZXR1cm4iIT09ZS5tZXRob2QmJihlLm1ldGhvZD0ibmV4dCIsZS5hcmc9dm9pZCAwKSxlLmRlbGVnYXRlPW51bGwsZCk6YTooZS5tZXRob2Q9InRocm93IixlLmFyZz1uZXcgVHlwZUVycm9yKCJpdGVyYXRvciByZXN1bHQgaXMgbm90IGFuIG9iamVjdCIpLGUuZGVsZWdhdGU9bnVsbCxkKX1mdW5jdGlvbiB4KHQpe3ZhciBlPXt0cnlMb2M6dFswXX07MSBpbiB0JiYoZS5jYXRjaExvYz10WzFdKSwyIGluIHQmJihlLmZpbmFsbHlMb2M9dFsyXSxlLmFmdGVyTG9jPXRbM10pLHRoaXMudHJ5RW50cmllcy5wdXNoKGUpfWZ1bmN0aW9uIEUodCl7dmFyIGU9dC5jb21wbGV0aW9ufHx7fTtlLnR5cGU9Im5vcm1hbCIsZGVsZXRlIGUuYXJnLHQuY29tcGxldGlvbj1lfWZ1bmN0aW9uIFAodCl7dGhpcy50cnlFbnRyaWVzPVt7dHJ5TG9jOiJyb290In1dLHQuZm9yRWFjaCh4LHRoaXMpLHRoaXMucmVzZXQoITApfWZ1bmN0aW9uIFQodCl7aWYodCl7dmFyIGU9dFtzXTtpZihlKXJldHVybiBlLmNhbGwodCk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHQubmV4dClyZXR1cm4gdDtpZighaXNOYU4odC5sZW5ndGgpKXt2YXIgbj0tMSxpPWZ1bmN0aW9uIGUoKXtmb3IoOysrbjx0Lmxlbmd0aDspaWYoci5jYWxsKHQsbikpcmV0dXJuIGUudmFsdWU9dFtuXSxlLmRvbmU9ITEsZTtyZXR1cm4gZS52YWx1ZT12b2lkIDAsZS5kb25lPSEwLGV9O3JldHVybiBpLm5leHQ9aX19cmV0dXJue25leHQ6Q319ZnVuY3Rpb24gQygpe3JldHVybnt2YWx1ZTp2b2lkIDAsZG9uZTohMH19cmV0dXJuIHYucHJvdG90eXBlPXksbihfLCJjb25zdHJ1Y3RvciIse3ZhbHVlOnksY29uZmlndXJhYmxlOiEwfSksbih5LCJjb25zdHJ1Y3RvciIse3ZhbHVlOnYsY29uZmlndXJhYmxlOiEwfSksdi5kaXNwbGF5TmFtZT1jKHksdSwiR2VuZXJhdG9yRnVuY3Rpb24iKSx0LmlzR2VuZXJhdG9yRnVuY3Rpb249ZnVuY3Rpb24odCl7dmFyIGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQmJnQuY29uc3RydWN0b3I7cmV0dXJuISFlJiYoZT09PXZ8fCJHZW5lcmF0b3JGdW5jdGlvbiI9PT0oZS5kaXNwbGF5TmFtZXx8ZS5uYW1lKSl9LHQubWFyaz1mdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZih0LHkpOih0Ll9fcHJvdG9fXz15LGModCx1LCJHZW5lcmF0b3JGdW5jdGlvbiIpKSx0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKF8pLHR9LHQuYXdyYXA9ZnVuY3Rpb24odCl7cmV0dXJue19fYXdhaXQ6dH19LHcoQS5wcm90b3R5cGUpLGMoQS5wcm90b3R5cGUsbCwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSx0LkFzeW5jSXRlcmF0b3I9QSx0LmFzeW5jPWZ1bmN0aW9uKGUscixuLGksYSl7dm9pZCAwPT09YSYmKGE9UHJvbWlzZSk7dmFyIG89bmV3IEEoaChlLHIsbixpKSxhKTtyZXR1cm4gdC5pc0dlbmVyYXRvckZ1bmN0aW9uKHIpP286by5uZXh0KCkudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIHQuZG9uZT90LnZhbHVlOm8ubmV4dCgpfSkpfSx3KF8pLGMoXyx1LCJHZW5lcmF0b3IiKSxjKF8scywoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSxjKF8sInRvU3RyaW5nIiwoZnVuY3Rpb24oKXtyZXR1cm4iW29iamVjdCBHZW5lcmF0b3JdIn0pKSx0LmtleXM9ZnVuY3Rpb24odCl7dmFyIGU9T2JqZWN0KHQpLHI9W107Zm9yKHZhciBuIGluIGUpci5wdXNoKG4pO3JldHVybiByLnJldmVyc2UoKSxmdW5jdGlvbiB0KCl7Zm9yKDtyLmxlbmd0aDspe3ZhciBuPXIucG9wKCk7aWYobiBpbiBlKXJldHVybiB0LnZhbHVlPW4sdC5kb25lPSExLHR9cmV0dXJuIHQuZG9uZT0hMCx0fX0sdC52YWx1ZXM9VCxQLnByb3RvdHlwZT17Y29uc3RydWN0b3I6UCxyZXNldDpmdW5jdGlvbih0KXtpZih0aGlzLnByZXY9MCx0aGlzLm5leHQ9MCx0aGlzLnNlbnQ9dGhpcy5fc2VudD12b2lkIDAsdGhpcy5kb25lPSExLHRoaXMuZGVsZWdhdGU9bnVsbCx0aGlzLm1ldGhvZD0ibmV4dCIsdGhpcy5hcmc9dm9pZCAwLHRoaXMudHJ5RW50cmllcy5mb3JFYWNoKEUpLCF0KWZvcih2YXIgZSBpbiB0aGlzKSJ0Ij09PWUuY2hhckF0KDApJiZyLmNhbGwodGhpcyxlKSYmIWlzTmFOKCtlLnNsaWNlKDEpKSYmKHRoaXNbZV09dm9pZCAwKX0sc3RvcDpmdW5jdGlvbigpe3RoaXMuZG9uZT0hMDt2YXIgdD10aGlzLnRyeUVudHJpZXNbMF0uY29tcGxldGlvbjtpZigidGhyb3ciPT09dC50eXBlKXRocm93IHQuYXJnO3JldHVybiB0aGlzLnJ2YWx9LGRpc3BhdGNoRXhjZXB0aW9uOmZ1bmN0aW9uKHQpe2lmKHRoaXMuZG9uZSl0aHJvdyB0O3ZhciBlPXRoaXM7ZnVuY3Rpb24gbihyLG4pe3JldHVybiBvLnR5cGU9InRocm93IixvLmFyZz10LGUubmV4dD1yLG4mJihlLm1ldGhvZD0ibmV4dCIsZS5hcmc9dm9pZCAwKSwhIW59Zm9yKHZhciBpPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtpPj0wOy0taSl7dmFyIGE9dGhpcy50cnlFbnRyaWVzW2ldLG89YS5jb21wbGV0aW9uO2lmKCJyb290Ij09PWEudHJ5TG9jKXJldHVybiBuKCJlbmQiKTtpZihhLnRyeUxvYzw9dGhpcy5wcmV2KXt2YXIgcz1yLmNhbGwoYSwiY2F0Y2hMb2MiKSxsPXIuY2FsbChhLCJmaW5hbGx5TG9jIik7aWYocyYmbCl7aWYodGhpcy5wcmV2PGEuY2F0Y2hMb2MpcmV0dXJuIG4oYS5jYXRjaExvYywhMCk7aWYodGhpcy5wcmV2PGEuZmluYWxseUxvYylyZXR1cm4gbihhLmZpbmFsbHlMb2MpfWVsc2UgaWYocyl7aWYodGhpcy5wcmV2PGEuY2F0Y2hMb2MpcmV0dXJuIG4oYS5jYXRjaExvYywhMCl9ZWxzZXtpZighbCl0aHJvdyBuZXcgRXJyb3IoInRyeSBzdGF0ZW1lbnQgd2l0aG91dCBjYXRjaCBvciBmaW5hbGx5Iik7aWYodGhpcy5wcmV2PGEuZmluYWxseUxvYylyZXR1cm4gbihhLmZpbmFsbHlMb2MpfX19fSxhYnJ1cHQ6ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO24+PTA7LS1uKXt2YXIgaT10aGlzLnRyeUVudHJpZXNbbl07aWYoaS50cnlMb2M8PXRoaXMucHJldiYmci5jYWxsKGksImZpbmFsbHlMb2MiKSYmdGhpcy5wcmV2PGkuZmluYWxseUxvYyl7dmFyIGE9aTticmVha319YSYmKCJicmVhayI9PT10fHwiY29udGludWUiPT09dCkmJmEudHJ5TG9jPD1lJiZlPD1hLmZpbmFsbHlMb2MmJihhPW51bGwpO3ZhciBvPWE/YS5jb21wbGV0aW9uOnt9O3JldHVybiBvLnR5cGU9dCxvLmFyZz1lLGE/KHRoaXMubWV0aG9kPSJuZXh0Iix0aGlzLm5leHQ9YS5maW5hbGx5TG9jLGQpOnRoaXMuY29tcGxldGUobyl9LGNvbXBsZXRlOmZ1bmN0aW9uKHQsZSl7aWYoInRocm93Ij09PXQudHlwZSl0aHJvdyB0LmFyZztyZXR1cm4iYnJlYWsiPT09dC50eXBlfHwiY29udGludWUiPT09dC50eXBlP3RoaXMubmV4dD10LmFyZzoicmV0dXJuIj09PXQudHlwZT8odGhpcy5ydmFsPXRoaXMuYXJnPXQuYXJnLHRoaXMubWV0aG9kPSJyZXR1cm4iLHRoaXMubmV4dD0iZW5kIik6Im5vcm1hbCI9PT10LnR5cGUmJmUmJih0aGlzLm5leHQ9ZSksZH0sZmluaXNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7ZT49MDstLWUpe3ZhciByPXRoaXMudHJ5RW50cmllc1tlXTtpZihyLmZpbmFsbHlMb2M9PT10KXJldHVybiB0aGlzLmNvbXBsZXRlKHIuY29tcGxldGlvbixyLmFmdGVyTG9jKSxFKHIpLGR9fSxjYXRjaDpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2U+PTA7LS1lKXt2YXIgcj10aGlzLnRyeUVudHJpZXNbZV07aWYoci50cnlMb2M9PT10KXt2YXIgbj1yLmNvbXBsZXRpb247aWYoInRocm93Ij09PW4udHlwZSl7dmFyIGk9bi5hcmc7RShyKX1yZXR1cm4gaX19dGhyb3cgbmV3IEVycm9yKCJpbGxlZ2FsIGNhdGNoIGF0dGVtcHQiKX0sZGVsZWdhdGVZaWVsZDpmdW5jdGlvbih0LGUscil7cmV0dXJuIHRoaXMuZGVsZWdhdGU9e2l0ZXJhdG9yOlQodCkscmVzdWx0TmFtZTplLG5leHRMb2M6cn0sIm5leHQiPT09dGhpcy5tZXRob2QmJih0aGlzLmFyZz12b2lkIDApLGR9fSx0fWZ1bmN0aW9uIHModCxlLHIsbixpLGEsbyl7dHJ5e3ZhciBzPXRbYV0obyksbD1zLnZhbHVlfWNhdGNoKHQpe3JldHVybiB2b2lkIHIodCl9cy5kb25lP2UobCk6UHJvbWlzZS5yZXNvbHZlKGwpLnRoZW4obixpKX1mdW5jdGlvbiBsKHQsZSl7dmFyIHI9InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJnRbU3ltYm9sLml0ZXJhdG9yXXx8dFsiQEBpdGVyYXRvciJdO2lmKCFyKXtpZihBcnJheS5pc0FycmF5KHQpfHwocj1mdW5jdGlvbih0LGUpe2lmKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gdSh0LGUpO3ZhciByPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KS5zbGljZSg4LC0xKTtyZXR1cm4iT2JqZWN0Ij09PXImJnQuY29uc3RydWN0b3ImJihyPXQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1yfHwiU2V0Ij09PXI/QXJyYXkuZnJvbSh0KToiQXJndW1lbnRzIj09PXJ8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KHIpP3UodCxlKTp2b2lkIDB9fSh0KSl8fGUmJnQmJiJudW1iZXIiPT10eXBlb2YgdC5sZW5ndGgpe3ImJih0PXIpO3ZhciBuPTAsaT1mdW5jdGlvbigpe307cmV0dXJue3M6aSxuOmZ1bmN0aW9uKCl7cmV0dXJuIG4+PXQubGVuZ3RoP3tkb25lOiEwfTp7ZG9uZTohMSx2YWx1ZTp0W24rK119fSxlOmZ1bmN0aW9uKHQpe3Rocm93IHR9LGY6aX19dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGl0ZXJhdGUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfXZhciBhLG89ITAscz0hMTtyZXR1cm57czpmdW5jdGlvbigpe3I9ci5jYWxsKHQpfSxuOmZ1bmN0aW9uKCl7dmFyIHQ9ci5uZXh0KCk7cmV0dXJuIG89dC5kb25lLHR9LGU6ZnVuY3Rpb24odCl7cz0hMCxhPXR9LGY6ZnVuY3Rpb24oKXt0cnl7b3x8bnVsbD09ci5yZXR1cm58fHIucmV0dXJuKCl9ZmluYWxseXtpZihzKXRocm93IGF9fX19ZnVuY3Rpb24gdSh0LGUpeyhudWxsPT1lfHxlPnQubGVuZ3RoKSYmKGU9dC5sZW5ndGgpO2Zvcih2YXIgcj0wLG49bmV3IEFycmF5KGUpO3I8ZTtyKyspbltyXT10W3JdO3JldHVybiBufWZ1bmN0aW9uIGModCxlKXtpZighKHQgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBoKHQsZSl7Zm9yKHZhciByPTA7cjxlLmxlbmd0aDtyKyspe3ZhciBuPWVbcl07bi5lbnVtZXJhYmxlPW4uZW51bWVyYWJsZXx8ITEsbi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIG4mJihuLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwodm9pZCAwLGk9ZnVuY3Rpb24odCxlKXtpZigib2JqZWN0IiE9PWEodCl8fG51bGw9PT10KXJldHVybiB0O3ZhciByPXRbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1yKXt2YXIgbj1yLmNhbGwodCwic3RyaW5nIik7aWYoIm9iamVjdCIhPT1hKG4pKXJldHVybiBuO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuIFN0cmluZyh0KX0obi5rZXkpLCJzeW1ib2wiPT09YShpKT9pOlN0cmluZyhpKSksbil9dmFyIGl9ZnVuY3Rpb24gZih0LGUscil7cmV0dXJuIGUmJmgodC5wcm90b3R5cGUsZSksciYmaCh0LHIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLHR9dmFyIGQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe3ZhciByPWUub25VbnN1cHBvcnRlZEZlYXR1cmUsbj1lLm93bmVyRG9jdW1lbnQsaT12b2lkIDA9PT1uP2dsb2JhbFRoaXMuZG9jdW1lbnQ6bjtlLnN0eWxlRWxlbWVudCxjKHRoaXMsdCksdGhpcy5fb25VbnN1cHBvcnRlZEZlYXR1cmU9cix0aGlzLl9kb2N1bWVudD1pLHRoaXMubmF0aXZlRm9udEZhY2VzPVtdLHRoaXMuc3R5bGVFbGVtZW50PW51bGwsdGhpcy5sb2FkaW5nUmVxdWVzdHM9W10sdGhpcy5sb2FkVGVzdEZvbnRJZD0wfXZhciBlLHI7cmV0dXJuIGYodCxbe2tleToiYWRkTmF0aXZlRm9udEZhY2UiLHZhbHVlOmZ1bmN0aW9uKHQpe3RoaXMubmF0aXZlRm9udEZhY2VzLnB1c2godCksdGhpcy5fZG9jdW1lbnQuZm9udHMuYWRkKHQpfX0se2tleToiaW5zZXJ0UnVsZSIsdmFsdWU6ZnVuY3Rpb24odCl7dGhpcy5zdHlsZUVsZW1lbnR8fCh0aGlzLnN0eWxlRWxlbWVudD10aGlzLl9kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpLHRoaXMuX2RvY3VtZW50LmRvY3VtZW50RWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdLmFwcGVuZCh0aGlzLnN0eWxlRWxlbWVudCkpO3ZhciBlPXRoaXMuc3R5bGVFbGVtZW50LnNoZWV0O2UuaW5zZXJ0UnVsZSh0LGUuY3NzUnVsZXMubGVuZ3RoKX19LHtrZXk6ImNsZWFyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0LGU9bCh0aGlzLm5hdGl2ZUZvbnRGYWNlcyk7dHJ5e2ZvcihlLnMoKTshKHQ9ZS5uKCkpLmRvbmU7KXt2YXIgcj10LnZhbHVlO3RoaXMuX2RvY3VtZW50LmZvbnRzLmRlbGV0ZShyKX19Y2F0Y2godCl7ZS5lKHQpfWZpbmFsbHl7ZS5mKCl9dGhpcy5uYXRpdmVGb250RmFjZXMubGVuZ3RoPTAsdGhpcy5zdHlsZUVsZW1lbnQmJih0aGlzLnN0eWxlRWxlbWVudC5yZW1vdmUoKSx0aGlzLnN0eWxlRWxlbWVudD1udWxsKX19LHtrZXk6ImJpbmQiLHZhbHVlOihlPW8oKS5tYXJrKChmdW5jdGlvbiB0KGUpe3ZhciByLGksYT10aGlzO3JldHVybiBvKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6aWYoIWUuYXR0YWNoZWQmJiFlLm1pc3NpbmdGaWxlKXt0Lm5leHQ9MjticmVha31yZXR1cm4gdC5hYnJ1cHQoInJldHVybiIpO2Nhc2UgMjppZihlLmF0dGFjaGVkPSEwLCF0aGlzLmlzRm9udExvYWRpbmdBUElTdXBwb3J0ZWQpe3QubmV4dD0xOTticmVha31pZighKHI9ZS5jcmVhdGVOYXRpdmVGb250RmFjZSgpKSl7dC5uZXh0PTE4O2JyZWFrfXJldHVybiB0aGlzLmFkZE5hdGl2ZUZvbnRGYWNlKHIpLHQucHJldj03LHQubmV4dD0xMCxyLmxvYWRlZDtjYXNlIDEwOnQubmV4dD0xODticmVhaztjYXNlIDEyOnRocm93IHQucHJldj0xMix0LnQwPXQuY2F0Y2goNyksdGhpcy5fb25VbnN1cHBvcnRlZEZlYXR1cmUoe2ZlYXR1cmVJZDpuLlVOU1VQUE9SVEVEX0ZFQVRVUkVTLmVycm9yRm9udExvYWROYXRpdmV9KSwoMCxuLndhcm4pKCJGYWlsZWQgdG8gbG9hZCBmb250ICciLmNvbmNhdChyLmZhbWlseSwiJzogJyIpLmNvbmNhdCh0LnQwLCInLiIpKSxlLmRpc2FibGVGb250RmFjZT0hMCx0LnQwO2Nhc2UgMTg6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iKTtjYXNlIDE5OmlmKCEoaT1lLmNyZWF0ZUZvbnRGYWNlUnVsZSgpKSl7dC5uZXh0PTI2O2JyZWFrfWlmKHRoaXMuaW5zZXJ0UnVsZShpKSwhdGhpcy5pc1N5bmNGb250TG9hZGluZ1N1cHBvcnRlZCl7dC5uZXh0PTI0O2JyZWFrfXJldHVybiB0LmFicnVwdCgicmV0dXJuIik7Y2FzZSAyNDpyZXR1cm4gdC5uZXh0PTI2LG5ldyBQcm9taXNlKChmdW5jdGlvbih0KXt2YXIgcj1hLl9xdWV1ZUxvYWRpbmdDYWxsYmFjayh0KTthLl9wcmVwYXJlRm9udExvYWRFdmVudChlLHIpfSkpO2Nhc2UgMjY6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMsW1s3LDEyXV0pfSkpLHI9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLHI9YXJndW1lbnRzO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24obixpKXt2YXIgYT1lLmFwcGx5KHQscik7ZnVuY3Rpb24gbyh0KXtzKGEsbixpLG8sbCwibmV4dCIsdCl9ZnVuY3Rpb24gbCh0KXtzKGEsbixpLG8sbCwidGhyb3ciLHQpfW8odm9pZCAwKX0pKX0sZnVuY3Rpb24odCl7cmV0dXJuIHIuYXBwbHkodGhpcyxhcmd1bWVudHMpfSl9LHtrZXk6ImlzRm9udExvYWRpbmdBUElTdXBwb3J0ZWQiLGdldDpmdW5jdGlvbigpe3ZhciB0LGU9IShudWxsPT09KHQ9dGhpcy5fZG9jdW1lbnQpfHx2b2lkIDA9PT10fHwhdC5mb250cyk7cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsImlzRm9udExvYWRpbmdBUElTdXBwb3J0ZWQiLGUpfX0se2tleToiaXNTeW5jRm9udExvYWRpbmdTdXBwb3J0ZWQiLGdldDpmdW5jdGlvbigpe3ZhciB0PSExO3JldHVybihpLmlzTm9kZUpTfHwidW5kZWZpbmVkIiE9dHlwZW9mIG5hdmlnYXRvciYmL01vemlsbGFcLzUuMC4qP3J2OlxkKy4qPyBHZWNrby8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSkmJih0PSEwKSwoMCxuLnNoYWRvdykodGhpcywiaXNTeW5jRm9udExvYWRpbmdTdXBwb3J0ZWQiLHQpfX0se2tleToiX3F1ZXVlTG9hZGluZ0NhbGxiYWNrIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmxvYWRpbmdSZXF1ZXN0cyxyPXtkb25lOiExLGNvbXBsZXRlOmZ1bmN0aW9uKCl7Zm9yKCgwLG4uYXNzZXJ0KSghci5kb25lLCJjb21wbGV0ZVJlcXVlc3QoKSBjYW5ub3QgYmUgY2FsbGVkIHR3aWNlLiIpLHIuZG9uZT0hMDtlLmxlbmd0aD4wJiZlWzBdLmRvbmU7KXt2YXIgdD1lLnNoaWZ0KCk7c2V0VGltZW91dCh0LmNhbGxiYWNrLDApfX0sY2FsbGJhY2s6dH07cmV0dXJuIGUucHVzaChyKSxyfX0se2tleToiX2xvYWRUZXN0Rm9udCIsZ2V0OmZ1bmN0aW9uKCl7dmFyIHQ9YXRvYigiVDFSVVR3QUxBSUFBQXdBd1EwWkdJREh0Wmc0QUFBT1lBQUFBZ1VaR1ZFMWxrelp3QUFBRUhBQUFBQnhIUkVWR0FCUUFGUUFBQkRnQUFBQWVUMU12TWxZTll3a0FBQUVnQUFBQVlHTnRZWEFCRFFMVUFBQUNOQUFBQVVKb1pXRmsveFZGRFFBQUFMd0FBQUEyYUdobFlRZGtBK29BQUFEMEFBQUFKR2h0ZEhnRDZBQUFBQUFFV0FBQUFBWnRZWGh3QUFKUUFBQUFBUmdBQUFBR2JtRnRaVmptZEg0QUFBR0FBQUFBc1hCdmMzVC9oZ0F6QUFBRGVBQUFBQ0FBQVFBQUFBRUFBTFpSRnNSZkR6ejFBQXNENkFBQUFBRE9CT1RMQUFBQUFNNEtIRHdBQUFBQUErZ0RJUUFBQUFnQUFnQUFBQUFBQUFBQkFBQURJUUFBQUZvRDZBQUFBQUFENkFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQVFBQVVBQUFBZ0FBQUFRRDZBSDBBQVVBQUFLS0Fyd0FBQUNNQW9vQ3ZBQUFBZUFBTVFFQ0FBQUNBQVlKQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFBQUFBQUFGQm1SV1FBd0FBdUFDNERJUDg0QUZvRElRQUFBQUFBQVFBQUFBQUFBQUFBQUNBQUlBQUJBQUFBRGdDdUFBRUFBQUFBQUFBQUFRQUFBQUVBQUFBQUFBRUFBUUFBQUFFQUFBQUFBQUlBQVFBQUFBRUFBQUFBQUFNQUFRQUFBQUVBQUFBQUFBUUFBUUFBQUFFQUFBQUFBQVVBQVFBQUFBRUFBQUFBQUFZQUFRQUFBQU1BQVFRSkFBQUFBZ0FCQUFNQUFRUUpBQUVBQWdBQkFBTUFBUVFKQUFJQUFnQUJBQU1BQVFRSkFBTUFBZ0FCQUFNQUFRUUpBQVFBQWdBQkFBTUFBUVFKQUFVQUFnQUJBQU1BQVFRSkFBWUFBZ0FCV0FCWUFBQUFBQUFBQXdBQUFBTUFBQUFjQUFFQUFBQUFBRHdBQXdBQkFBQUFIQUFFQUNBQUFBQUVBQVFBQVFBQUFDNy8vd0FBQUM3Ly8vL1RBQUVBQUFBQUFBQUJCZ0FBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU1BQUFBQUFBRC9nd0F5QUFBQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFBUUVBQUVCQVFKWUFBRUJBU0g0RHdENEd3SEVBdmdjQS9nWEJJd01BWXVMK256NXRRWGtENWozQ0JMbkVRQUNBUUVCSVZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlBQUFCQVFBQUR3QUNBUUVFRS90M0RvdjZmQUg2ZkFUK2ZQcDgrbndIRG9zTUN2bTFDdm0xREF6NmZCUUFBQUFBQUFBQkFBQUFBTW1KYnpFQUFBQUF6Z1RqRlFBQUFBRE9CT1FwQUFFQUFBQUFBQUFBREFBVUFBUUFBQUFCQUFBQUFnQUJBQUFBQUFBQUFBQUQ2QUFBQUFBQUFBPT0iKTtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywiX2xvYWRUZXN0Rm9udCIsdCl9fSx7a2V5OiJfcHJlcGFyZUZvbnRMb2FkRXZlbnQiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gcih0LGUpe3JldHVybiB0LmNoYXJDb2RlQXQoZSk8PDI0fHQuY2hhckNvZGVBdChlKzEpPDwxNnx0LmNoYXJDb2RlQXQoZSsyKTw8OHwyNTUmdC5jaGFyQ29kZUF0KGUrMyl9ZnVuY3Rpb24gaSh0LGUscixuKXtyZXR1cm4gdC5zdWJzdHJpbmcoMCxlKStuK3Quc3Vic3RyaW5nKGUrcil9dmFyIGEsbyxzPXRoaXMuX2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpO3Mud2lkdGg9MSxzLmhlaWdodD0xO3ZhciBsPXMuZ2V0Q29udGV4dCgiMmQiKSx1PTAsYz0ibHQiLmNvbmNhdChEYXRlLm5vdygpKS5jb25jYXQodGhpcy5sb2FkVGVzdEZvbnRJZCsrKSxoPXRoaXMuX2xvYWRUZXN0Rm9udCxmPTE0ODIxODQ3OTIsZD1yKGg9aShoLDk3NixjLmxlbmd0aCxjKSwxNik7Zm9yKGE9MCxvPWMubGVuZ3RoLTM7YTxvO2ErPTQpZD1kLWYrcihjLGEpfDA7YTxjLmxlbmd0aCYmKGQ9ZC1mK3IoYysiWFhYIixhKXwwKSxoPWkoaCwxNiw0LCgwLG4uc3RyaW5nMzIpKGQpKTt2YXIgcD0idXJsKGRhdGE6Zm9udC9vcGVudHlwZTtiYXNlNjQsIi5jb25jYXQoYnRvYShoKSwiKTsiKSx2PSdAZm9udC1mYWNlIHtmb250LWZhbWlseToiJy5jb25jYXQoYywnIjtzcmM6JykuY29uY2F0KHAsIn0iKTt0aGlzLmluc2VydFJ1bGUodik7dmFyIHk9dGhpcy5fZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7eS5zdHlsZS52aXNpYmlsaXR5PSJoaWRkZW4iLHkuc3R5bGUud2lkdGg9eS5zdHlsZS5oZWlnaHQ9IjEwcHgiLHkuc3R5bGUucG9zaXRpb249ImFic29sdXRlIix5LnN0eWxlLnRvcD15LnN0eWxlLmxlZnQ9IjBweCI7Zm9yKHZhciBtPTAsZz1bdC5sb2FkZWROYW1lLGNdO208Zy5sZW5ndGg7bSsrKXt2YXIgYj1nW21dLF89dGhpcy5fZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpO18udGV4dENvbnRlbnQ9IkhpIixfLnN0eWxlLmZvbnRGYW1pbHk9Yix5LmFwcGVuZChfKX10aGlzLl9kb2N1bWVudC5ib2R5LmFwcGVuZCh5KSxmdW5jdGlvbiB0KGUscil7aWYoKyt1PjMwKXJldHVybigwLG4ud2FybikoIkxvYWQgdGVzdCBmb250IG5ldmVyIGxvYWRlZC4iKSx2b2lkIHIoKTtsLmZvbnQ9IjMwcHggIitlLGwuZmlsbFRleHQoIi4iLDAsMjApLGwuZ2V0SW1hZ2VEYXRhKDAsMCwxLDEpLmRhdGFbM10+MD9yKCk6c2V0VGltZW91dCh0LmJpbmQobnVsbCxlLHIpKX0oYywoZnVuY3Rpb24oKXt5LnJlbW92ZSgpLGUuY29tcGxldGUoKX0pKX19XSksdH0oKTtlLkZvbnRMb2FkZXI9ZDt2YXIgcD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSxyKXt2YXIgbj1yLmlzRXZhbFN1cHBvcnRlZCxpPXZvaWQgMD09PW58fG4sYT1yLmRpc2FibGVGb250RmFjZSxvPXZvaWQgMCE9PWEmJmEscz1yLmlnbm9yZUVycm9ycyxsPXZvaWQgMCE9PXMmJnMsdT1yLm9uVW5zdXBwb3J0ZWRGZWF0dXJlLGg9ci5mb250UmVnaXN0cnksZj12b2lkIDA9PT1oP251bGw6aDtmb3IodmFyIGQgaW4gYyh0aGlzLHQpLHRoaXMuY29tcGlsZWRHbHlwaHM9T2JqZWN0LmNyZWF0ZShudWxsKSxlKXRoaXNbZF09ZVtkXTt0aGlzLmlzRXZhbFN1cHBvcnRlZD0hMSE9PWksdGhpcy5kaXNhYmxlRm9udEZhY2U9ITA9PT1vLHRoaXMuaWdub3JlRXJyb3JzPSEwPT09bCx0aGlzLl9vblVuc3VwcG9ydGVkRmVhdHVyZT11LHRoaXMuZm9udFJlZ2lzdHJ5PWZ9cmV0dXJuIGYodCxbe2tleToiY3JlYXRlTmF0aXZlRm9udEZhY2UiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQsZTtpZighdGhpcy5kYXRhfHx0aGlzLmRpc2FibGVGb250RmFjZSlyZXR1cm4gbnVsbDtpZih0aGlzLmNzc0ZvbnRJbmZvKXt2YXIgcj17d2VpZ2h0OnRoaXMuY3NzRm9udEluZm8uZm9udFdlaWdodH07dGhpcy5jc3NGb250SW5mby5pdGFsaWNBbmdsZSYmKHIuc3R5bGU9Im9ibGlxdWUgIi5jb25jYXQodGhpcy5jc3NGb250SW5mby5pdGFsaWNBbmdsZSwiZGVnIikpLGU9bmV3IEZvbnRGYWNlKHRoaXMuY3NzRm9udEluZm8uZm9udEZhbWlseSx0aGlzLmRhdGEscil9ZWxzZSBlPW5ldyBGb250RmFjZSh0aGlzLmxvYWRlZE5hbWUsdGhpcy5kYXRhLHt9KTtyZXR1cm4gbnVsbD09PSh0PXRoaXMuZm9udFJlZ2lzdHJ5KXx8dm9pZCAwPT09dHx8dC5yZWdpc3RlckZvbnQodGhpcyksZX19LHtrZXk6ImNyZWF0ZUZvbnRGYWNlUnVsZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdDtpZighdGhpcy5kYXRhfHx0aGlzLmRpc2FibGVGb250RmFjZSlyZXR1cm4gbnVsbDt2YXIgZSxyPSgwLG4uYnl0ZXNUb1N0cmluZykodGhpcy5kYXRhKSxpPSJ1cmwoZGF0YToiLmNvbmNhdCh0aGlzLm1pbWV0eXBlLCI7YmFzZTY0LCIpLmNvbmNhdChidG9hKHIpLCIpOyIpO2lmKHRoaXMuY3NzRm9udEluZm8pe3ZhciBhPSJmb250LXdlaWdodDogIi5jb25jYXQodGhpcy5jc3NGb250SW5mby5mb250V2VpZ2h0LCI7Iik7dGhpcy5jc3NGb250SW5mby5pdGFsaWNBbmdsZSYmKGErPSJmb250LXN0eWxlOiBvYmxpcXVlICIuY29uY2F0KHRoaXMuY3NzRm9udEluZm8uaXRhbGljQW5nbGUsImRlZzsiKSksZT0nQGZvbnQtZmFjZSB7Zm9udC1mYW1pbHk6IicuY29uY2F0KHRoaXMuY3NzRm9udEluZm8uZm9udEZhbWlseSwnIjsnKS5jb25jYXQoYSwic3JjOiIpLmNvbmNhdChpLCJ9Iil9ZWxzZSBlPSdAZm9udC1mYWNlIHtmb250LWZhbWlseToiJy5jb25jYXQodGhpcy5sb2FkZWROYW1lLCciO3NyYzonKS5jb25jYXQoaSwifSIpO3JldHVybiBudWxsPT09KHQ9dGhpcy5mb250UmVnaXN0cnkpfHx2b2lkIDA9PT10fHx0LnJlZ2lzdGVyRm9udCh0aGlzLGkpLGV9fSx7a2V5OiJnZXRQYXRoR2VuZXJhdG9yIix2YWx1ZTpmdW5jdGlvbih0LGUpe2lmKHZvaWQgMCE9PXRoaXMuY29tcGlsZWRHbHlwaHNbZV0pcmV0dXJuIHRoaXMuY29tcGlsZWRHbHlwaHNbZV07dmFyIHI7dHJ5e3I9dC5nZXQodGhpcy5sb2FkZWROYW1lKyJfcGF0aF8iK2UpfWNhdGNoKHQpe2lmKCF0aGlzLmlnbm9yZUVycm9ycyl0aHJvdyB0O3JldHVybiB0aGlzLl9vblVuc3VwcG9ydGVkRmVhdHVyZSh7ZmVhdHVyZUlkOm4uVU5TVVBQT1JURURfRkVBVFVSRVMuZXJyb3JGb250R2V0UGF0aH0pLCgwLG4ud2FybikoJ2dldFBhdGhHZW5lcmF0b3IgLSBpZ25vcmluZyBjaGFyYWN0ZXI6ICInLmNvbmNhdCh0LCciLicpKSx0aGlzLmNvbXBpbGVkR2x5cGhzW2VdPWZ1bmN0aW9uKHQsZSl7fX1pZih0aGlzLmlzRXZhbFN1cHBvcnRlZCYmbi5GZWF0dXJlVGVzdC5pc0V2YWxTdXBwb3J0ZWQpe3ZhciBpLGE9W10sbz1sKHIpO3RyeXtmb3Ioby5zKCk7IShpPW8ubigpKS5kb25lOyl7dmFyIHM9aS52YWx1ZSx1PXZvaWQgMCE9PXMuYXJncz9zLmFyZ3Muam9pbigiLCIpOiIiO2EucHVzaCgiYy4iLHMuY21kLCIoIix1LCIpO1xuIil9fWNhdGNoKHQpe28uZSh0KX1maW5hbGx5e28uZigpfXJldHVybiB0aGlzLmNvbXBpbGVkR2x5cGhzW2VdPW5ldyBGdW5jdGlvbigiYyIsInNpemUiLGEuam9pbigiIikpfXJldHVybiB0aGlzLmNvbXBpbGVkR2x5cGhzW2VdPWZ1bmN0aW9uKHQsZSl7dmFyIG4saT1sKHIpO3RyeXtmb3IoaS5zKCk7IShuPWkubigpKS5kb25lOyl7dmFyIGE9bi52YWx1ZTsic2NhbGUiPT09YS5jbWQmJihhLmFyZ3M9W2UsLWVdKSx0W2EuY21kXS5hcHBseSh0LGEuYXJncyl9fWNhdGNoKHQpe2kuZSh0KX1maW5hbGx5e2kuZigpfX19fV0pLHR9KCk7ZS5Gb250RmFjZU9iamVjdD1wfSwodCxlLHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGUuQ2FudmFzR3JhcGhpY3M9dm9pZCAwO3ZhciBuPXIoMSksaT1yKDEzNyksYT1yKDE0Miksbz1yKDE0Mykscz1yKDMpO2Z1bmN0aW9uIGwodCl7cmV0dXJuIGZ1bmN0aW9uKHQpe2lmKEFycmF5LmlzQXJyYXkodCkpcmV0dXJuIGQodCl9KHQpfHxmdW5jdGlvbih0KXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmbnVsbCE9dFtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT10WyJAQGl0ZXJhdG9yIl0pcmV0dXJuIEFycmF5LmZyb20odCl9KHQpfHxmKHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIHUodCxlLHIpe2lmKCFlLmhhcyh0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gZ2V0IHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7cmV0dXJuIHJ9ZnVuY3Rpb24gYyh0LGUpe3ZhciByPSJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZ0W1N5bWJvbC5pdGVyYXRvcl18fHRbIkBAaXRlcmF0b3IiXTtpZighcil7aWYoQXJyYXkuaXNBcnJheSh0KXx8KHI9Zih0KSl8fGUmJnQmJiJudW1iZXIiPT10eXBlb2YgdC5sZW5ndGgpe3ImJih0PXIpO3ZhciBuPTAsaT1mdW5jdGlvbigpe307cmV0dXJue3M6aSxuOmZ1bmN0aW9uKCl7cmV0dXJuIG4+PXQubGVuZ3RoP3tkb25lOiEwfTp7ZG9uZTohMSx2YWx1ZTp0W24rK119fSxlOmZ1bmN0aW9uKHQpe3Rocm93IHR9LGY6aX19dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGl0ZXJhdGUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfXZhciBhLG89ITAscz0hMTtyZXR1cm57czpmdW5jdGlvbigpe3I9ci5jYWxsKHQpfSxuOmZ1bmN0aW9uKCl7dmFyIHQ9ci5uZXh0KCk7cmV0dXJuIG89dC5kb25lLHR9LGU6ZnVuY3Rpb24odCl7cz0hMCxhPXR9LGY6ZnVuY3Rpb24oKXt0cnl7b3x8bnVsbD09ci5yZXR1cm58fHIucmV0dXJuKCl9ZmluYWxseXtpZihzKXRocm93IGF9fX19ZnVuY3Rpb24gaCh0LGUpe3JldHVybiBmdW5jdGlvbih0KXtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiB0fSh0KXx8ZnVuY3Rpb24odCxlKXt2YXIgcj1udWxsPT10P251bGw6InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJnRbU3ltYm9sLml0ZXJhdG9yXXx8dFsiQEBpdGVyYXRvciJdO2lmKG51bGwhPXIpe3ZhciBuLGksYSxvLHM9W10sbD0hMCx1PSExO3RyeXtpZihhPShyPXIuY2FsbCh0KSkubmV4dCwwPT09ZSl7aWYoT2JqZWN0KHIpIT09cilyZXR1cm47bD0hMX1lbHNlIGZvcig7IShsPShuPWEuY2FsbChyKSkuZG9uZSkmJihzLnB1c2gobi52YWx1ZSkscy5sZW5ndGghPT1lKTtsPSEwKTt9Y2F0Y2godCl7dT0hMCxpPXR9ZmluYWxseXt0cnl7aWYoIWwmJm51bGwhPXIucmV0dXJuJiYobz1yLnJldHVybigpLE9iamVjdChvKSE9PW8pKXJldHVybn1maW5hbGx5e2lmKHUpdGhyb3cgaX19cmV0dXJuIHN9fSh0LGUpfHxmKHQsZSl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiBmKHQsZSl7aWYodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiBkKHQsZSk7dmFyIHI9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpLnNsaWNlKDgsLTEpO3JldHVybiJPYmplY3QiPT09ciYmdC5jb25zdHJ1Y3RvciYmKHI9dC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PXJ8fCJTZXQiPT09cj9BcnJheS5mcm9tKHQpOiJBcmd1bWVudHMiPT09cnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3Qocik/ZCh0LGUpOnZvaWQgMH19ZnVuY3Rpb24gZCh0LGUpeyhudWxsPT1lfHxlPnQubGVuZ3RoKSYmKGU9dC5sZW5ndGgpO2Zvcih2YXIgcj0wLG49bmV3IEFycmF5KGUpO3I8ZTtyKyspbltyXT10W3JdO3JldHVybiBufWZ1bmN0aW9uIHAodCl7cmV0dXJuIHA9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LHAodCl9ZnVuY3Rpb24gdih0LGUpe2lmKCEodCBpbnN0YW5jZW9mIGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIHkodCxlKXtmb3IodmFyIHI9MDtyPGUubGVuZ3RoO3IrKyl7dmFyIG49ZVtyXTtuLmVudW1lcmFibGU9bi5lbnVtZXJhYmxlfHwhMSxuLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gbiYmKG4ud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCh2b2lkIDAsaT1mdW5jdGlvbih0LGUpe2lmKCJvYmplY3QiIT09cCh0KXx8bnVsbD09PXQpcmV0dXJuIHQ7dmFyIHI9dFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PXIpe3ZhciBuPXIuY2FsbCh0LCJzdHJpbmciKTtpZigib2JqZWN0IiE9PXAobikpcmV0dXJuIG47dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4gU3RyaW5nKHQpfShuLmtleSksInN5bWJvbCI9PT1wKGkpP2k6U3RyaW5nKGkpKSxuKX12YXIgaX1mdW5jdGlvbiBtKHQsZSxyKXtyZXR1cm4gZSYmeSh0LnByb3RvdHlwZSxlKSxyJiZ5KHQsciksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksdH12YXIgZz00MDk2LGI9cy5pc05vZGVKUyYmInVuZGVmaW5lZCI9PXR5cGVvZiBQYXRoMkQ/LTE6MWUzLF89MTYsdz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7dih0aGlzLHQpLHRoaXMuY2FudmFzRmFjdG9yeT1lLHRoaXMuY2FjaGU9T2JqZWN0LmNyZWF0ZShudWxsKX1yZXR1cm4gbSh0LFt7a2V5OiJnZXRDYW52YXMiLHZhbHVlOmZ1bmN0aW9uKHQsZSxyKXt2YXIgbjtyZXR1cm4gdm9pZCAwIT09dGhpcy5jYWNoZVt0XT8obj10aGlzLmNhY2hlW3RdLHRoaXMuY2FudmFzRmFjdG9yeS5yZXNldChuLGUscikpOihuPXRoaXMuY2FudmFzRmFjdG9yeS5jcmVhdGUoZSxyKSx0aGlzLmNhY2hlW3RdPW4pLG59fSx7a2V5OiJkZWxldGUiLHZhbHVlOmZ1bmN0aW9uKHQpe2RlbGV0ZSB0aGlzLmNhY2hlW3RdfX0se2tleToiY2xlYXIiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciB0IGluIHRoaXMuY2FjaGUpe3ZhciBlPXRoaXMuY2FjaGVbdF07dGhpcy5jYW52YXNGYWN0b3J5LmRlc3Ryb3koZSksZGVsZXRlIHRoaXMuY2FjaGVbdF19fX1dKSx0fSgpO2Z1bmN0aW9uIEEodCxlLHIsbixhLG8scyxsLHUsYyl7dmFyIGY9aCgoMCxpLmdldEN1cnJlbnRUcmFuc2Zvcm0pKHQpLDYpLGQ9ZlswXSxwPWZbMV0sdj1mWzJdLHk9ZlszXSxtPWZbNF0sZz1mWzVdO2lmKDA9PT1wJiYwPT09dil7dmFyIGI9cypkK20sXz1NYXRoLnJvdW5kKGIpLHc9bCp5K2csQT1NYXRoLnJvdW5kKHcpLGs9KHMrdSkqZCttLFM9TWF0aC5hYnMoTWF0aC5yb3VuZChrKS1fKXx8MSx4PShsK2MpKnkrZyxFPU1hdGguYWJzKE1hdGgucm91bmQoeCktQSl8fDE7cmV0dXJuIHQuc2V0VHJhbnNmb3JtKE1hdGguc2lnbihkKSwwLDAsTWF0aC5zaWduKHkpLF8sQSksdC5kcmF3SW1hZ2UoZSxyLG4sYSxvLDAsMCxTLEUpLHQuc2V0VHJhbnNmb3JtKGQscCx2LHksbSxnKSxbUyxFXX1pZigwPT09ZCYmMD09PXkpe3ZhciBQPWwqdittLFQ9TWF0aC5yb3VuZChQKSxDPXMqcCtnLE89TWF0aC5yb3VuZChDKSxGPShsK2MpKnYrbSxNPU1hdGguYWJzKE1hdGgucm91bmQoRiktVCl8fDEsUj0ocyt1KSpwK2csST1NYXRoLmFicyhNYXRoLnJvdW5kKFIpLU8pfHwxO3JldHVybiB0LnNldFRyYW5zZm9ybSgwLE1hdGguc2lnbihwKSxNYXRoLnNpZ24odiksMCxULE8pLHQuZHJhd0ltYWdlKGUscixuLGEsbywwLDAsSSxNKSx0LnNldFRyYW5zZm9ybShkLHAsdix5LG0sZyksW0ksTV19cmV0dXJuIHQuZHJhd0ltYWdlKGUscixuLGEsbyxzLGwsdSxjKSxbTWF0aC5oeXBvdChkLHApKnUsTWF0aC5oeXBvdCh2LHkpKmNdfXZhciBrPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLHIpe3YodGhpcyx0KSx0aGlzLmFscGhhSXNTaGFwZT0hMSx0aGlzLmZvbnRTaXplPTAsdGhpcy5mb250U2l6ZVNjYWxlPTEsdGhpcy50ZXh0TWF0cml4PW4uSURFTlRJVFlfTUFUUklYLHRoaXMudGV4dE1hdHJpeFNjYWxlPTEsdGhpcy5mb250TWF0cml4PW4uRk9OVF9JREVOVElUWV9NQVRSSVgsdGhpcy5sZWFkaW5nPTAsdGhpcy54PTAsdGhpcy55PTAsdGhpcy5saW5lWD0wLHRoaXMubGluZVk9MCx0aGlzLmNoYXJTcGFjaW5nPTAsdGhpcy53b3JkU3BhY2luZz0wLHRoaXMudGV4dEhTY2FsZT0xLHRoaXMudGV4dFJlbmRlcmluZ01vZGU9bi5UZXh0UmVuZGVyaW5nTW9kZS5GSUxMLHRoaXMudGV4dFJpc2U9MCx0aGlzLmZpbGxDb2xvcj0iIzAwMDAwMCIsdGhpcy5zdHJva2VDb2xvcj0iIzAwMDAwMCIsdGhpcy5wYXR0ZXJuRmlsbD0hMSx0aGlzLmZpbGxBbHBoYT0xLHRoaXMuc3Ryb2tlQWxwaGE9MSx0aGlzLmxpbmVXaWR0aD0xLHRoaXMuYWN0aXZlU01hc2s9bnVsbCx0aGlzLnRyYW5zZmVyTWFwcz1udWxsLHRoaXMuc3RhcnROZXdQYXRoQW5kQ2xpcEJveChbMCwwLGUscl0pfXJldHVybiBtKHQsW3trZXk6ImNsb25lIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PU9iamVjdC5jcmVhdGUodGhpcyk7cmV0dXJuIHQuY2xpcEJveD10aGlzLmNsaXBCb3guc2xpY2UoKSx0fX0se2tleToic2V0Q3VycmVudFBvaW50Iix2YWx1ZTpmdW5jdGlvbih0LGUpe3RoaXMueD10LHRoaXMueT1lfX0se2tleToidXBkYXRlUGF0aE1pbk1heCIsdmFsdWU6ZnVuY3Rpb24odCxlLHIpe3ZhciBpPWgobi5VdGlsLmFwcGx5VHJhbnNmb3JtKFtlLHJdLHQpLDIpO2U9aVswXSxyPWlbMV0sdGhpcy5taW5YPU1hdGgubWluKHRoaXMubWluWCxlKSx0aGlzLm1pblk9TWF0aC5taW4odGhpcy5taW5ZLHIpLHRoaXMubWF4WD1NYXRoLm1heCh0aGlzLm1heFgsZSksdGhpcy5tYXhZPU1hdGgubWF4KHRoaXMubWF4WSxyKX19LHtrZXk6InVwZGF0ZVJlY3RNaW5NYXgiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIHI9bi5VdGlsLmFwcGx5VHJhbnNmb3JtKGUsdCksaT1uLlV0aWwuYXBwbHlUcmFuc2Zvcm0oZS5zbGljZSgyKSx0KTt0aGlzLm1pblg9TWF0aC5taW4odGhpcy5taW5YLHJbMF0saVswXSksdGhpcy5taW5ZPU1hdGgubWluKHRoaXMubWluWSxyWzFdLGlbMV0pLHRoaXMubWF4WD1NYXRoLm1heCh0aGlzLm1heFgsclswXSxpWzBdKSx0aGlzLm1heFk9TWF0aC5tYXgodGhpcy5tYXhZLHJbMV0saVsxXSl9fSx7a2V5OiJ1cGRhdGVTY2FsaW5nUGF0aE1pbk1heCIsdmFsdWU6ZnVuY3Rpb24odCxlKXtuLlV0aWwuc2NhbGVNaW5NYXgodCxlKSx0aGlzLm1pblg9TWF0aC5taW4odGhpcy5taW5YLGVbMF0pLHRoaXMubWF4WD1NYXRoLm1heCh0aGlzLm1heFgsZVsxXSksdGhpcy5taW5ZPU1hdGgubWluKHRoaXMubWluWSxlWzJdKSx0aGlzLm1heFk9TWF0aC5tYXgodGhpcy5tYXhZLGVbM10pfX0se2tleToidXBkYXRlQ3VydmVQYXRoTWluTWF4Iix2YWx1ZTpmdW5jdGlvbih0LGUscixpLGEsbyxzLGwsdSxjKXt2YXIgaD1uLlV0aWwuYmV6aWVyQm91bmRpbmdCb3goZSxyLGksYSxvLHMsbCx1KTtpZihjKXJldHVybiBjWzBdPU1hdGgubWluKGNbMF0saFswXSxoWzJdKSxjWzFdPU1hdGgubWF4KGNbMV0saFswXSxoWzJdKSxjWzJdPU1hdGgubWluKGNbMl0saFsxXSxoWzNdKSx2b2lkKGNbM109TWF0aC5tYXgoY1szXSxoWzFdLGhbM10pKTt0aGlzLnVwZGF0ZVJlY3RNaW5NYXgodCxoKX19LHtrZXk6ImdldFBhdGhCb3VuZGluZ0JveCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06YS5QYXRoVHlwZS5GSUxMLGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOm51bGwscj1bdGhpcy5taW5YLHRoaXMubWluWSx0aGlzLm1heFgsdGhpcy5tYXhZXTtpZih0PT09YS5QYXRoVHlwZS5TVFJPS0Upe2V8fCgwLG4udW5yZWFjaGFibGUpKCJTdHJva2UgYm91bmRpbmcgYm94IG11c3QgaW5jbHVkZSB0cmFuc2Zvcm0uIik7dmFyIGk9bi5VdGlsLnNpbmd1bGFyVmFsdWVEZWNvbXBvc2UyZFNjYWxlKGUpLG89aVswXSp0aGlzLmxpbmVXaWR0aC8yLHM9aVsxXSp0aGlzLmxpbmVXaWR0aC8yO3JbMF0tPW8sclsxXS09cyxyWzJdKz1vLHJbM10rPXN9cmV0dXJuIHJ9fSx7a2V5OiJ1cGRhdGVDbGlwRnJvbVBhdGgiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9bi5VdGlsLmludGVyc2VjdCh0aGlzLmNsaXBCb3gsdGhpcy5nZXRQYXRoQm91bmRpbmdCb3goKSk7dGhpcy5zdGFydE5ld1BhdGhBbmRDbGlwQm94KHR8fFswLDAsMCwwXSl9fSx7a2V5OiJpc0VtcHR5Q2xpcCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5taW5YPT09MS8wfX0se2tleToic3RhcnROZXdQYXRoQW5kQ2xpcEJveCIsdmFsdWU6ZnVuY3Rpb24odCl7dGhpcy5jbGlwQm94PXQsdGhpcy5taW5YPTEvMCx0aGlzLm1pblk9MS8wLHRoaXMubWF4WD0wLHRoaXMubWF4WT0wfX0se2tleToiZ2V0Q2xpcHBlZFBhdGhCb3VuZGluZ0JveCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06YS5QYXRoVHlwZS5GSUxMLGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOm51bGw7cmV0dXJuIG4uVXRpbC5pbnRlcnNlY3QodGhpcy5jbGlwQm94LHRoaXMuZ2V0UGF0aEJvdW5kaW5nQm94KHQsZSkpfX1dKSx0fSgpO2Z1bmN0aW9uIFModCxlKXt2YXIgcj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06bnVsbDtpZigidW5kZWZpbmVkIiE9dHlwZW9mIEltYWdlRGF0YSYmZSBpbnN0YW5jZW9mIEltYWdlRGF0YSl0LnB1dEltYWdlRGF0YShlLDAsMCk7ZWxzZXt2YXIgaSxhLG8scyxsLHUsYyxoLGYsZD1lLmhlaWdodCxwPWUud2lkdGgsdj1kJV8seT0oZC12KS9fLG09MD09PXY/eTp5KzEsZz10LmNyZWF0ZUltYWdlRGF0YShwLF8pLGI9MCx3PWUuZGF0YSxBPWcuZGF0YTtpZihyKXN3aXRjaChyLmxlbmd0aCl7Y2FzZSAxOnU9clswXSxjPXJbMF0saD1yWzBdLGY9clswXTticmVhaztjYXNlIDQ6dT1yWzBdLGM9clsxXSxoPXJbMl0sZj1yWzNdfWlmKGUua2luZD09PW4uSW1hZ2VLaW5kLkdSQVlTQ0FMRV8xQlBQKXt2YXIgaz13LmJ5dGVMZW5ndGgsUz1uZXcgVWludDMyQXJyYXkoQS5idWZmZXIsMCxBLmJ5dGVMZW5ndGg+PjIpLHg9Uy5sZW5ndGgsRT1wKzc+PjMsUD00Mjk0OTY3Mjk1LFQ9bi5GZWF0dXJlVGVzdC5pc0xpdHRsZUVuZGlhbj80Mjc4MTkwMDgwOjI1NTtpZihmJiYyNTU9PT1mWzBdJiYwPT09ZlsyNTVdKXt2YXIgQz1bVCxQXTtQPUNbMF0sVD1DWzFdfWZvcihhPTA7YTxtO2ErKyl7Zm9yKHM9YTx5P186dixpPTAsbz0wO288cztvKyspe2Zvcih2YXIgTz1rLWIsRj0wLE09Tz5FP3A6OCpPLTcsUj0tOCZNLEk9MCxqPTA7RjxSO0YrPTgpaj13W2IrK10sU1tpKytdPTEyOCZqP1A6VCxTW2krK109NjQmaj9QOlQsU1tpKytdPTMyJmo/UDpULFNbaSsrXT0xNiZqP1A6VCxTW2krK109OCZqP1A6VCxTW2krK109NCZqP1A6VCxTW2krK109MiZqP1A6VCxTW2krK109MSZqP1A6VDtmb3IoO0Y8TTtGKyspMD09PUkmJihqPXdbYisrXSxJPTEyOCksU1tpKytdPWomST9QOlQsST4+PTF9Zm9yKDtpPHg7KVNbaSsrXT0wO3QucHV0SW1hZ2VEYXRhKGcsMCxhKl8pfX1lbHNlIGlmKGUua2luZD09PW4uSW1hZ2VLaW5kLlJHQkFfMzJCUFApe3ZhciBMPSEhKHV8fGN8fGgpO2ZvcihvPTAsbD1wKl8qNCxhPTA7YTx5O2ErKyl7aWYoQS5zZXQody5zdWJhcnJheShiLGIrbCkpLGIrPWwsTClmb3IodmFyIEQ9MDtEPGw7RCs9NCl1JiYoQVtEKzBdPXVbQVtEKzBdXSksYyYmKEFbRCsxXT1jW0FbRCsxXV0pLGgmJihBW0QrMl09aFtBW0QrMl1dKTt0LnB1dEltYWdlRGF0YShnLDAsbyksbys9X31pZihhPG0pe2lmKGw9cCp2KjQsQS5zZXQody5zdWJhcnJheShiLGIrbCkpLEwpZm9yKHZhciBOPTA7TjxsO04rPTQpdSYmKEFbTiswXT11W0FbTiswXV0pLGMmJihBW04rMV09Y1tBW04rMV1dKSxoJiYoQVtOKzJdPWhbQVtOKzJdXSk7dC5wdXRJbWFnZURhdGEoZywwLG8pfX1lbHNle2lmKGUua2luZCE9PW4uSW1hZ2VLaW5kLlJHQl8yNEJQUCl0aHJvdyBuZXcgRXJyb3IoImJhZCBpbWFnZSBraW5kOiAiLmNvbmNhdChlLmtpbmQpKTt2YXIgVT0hISh1fHxjfHxoKTtmb3IobD1wKihzPV8pLGE9MDthPG07YSsrKXtmb3IoYT49eSYmKGw9cCoocz12KSksaT0wLG89bDtvLS07KUFbaSsrXT13W2IrK10sQVtpKytdPXdbYisrXSxBW2krK109d1tiKytdLEFbaSsrXT0yNTU7aWYoVSlmb3IodmFyIFc9MDtXPGk7Vys9NCl1JiYoQVtXKzBdPXVbQVtXKzBdXSksYyYmKEFbVysxXT1jW0FbVysxXV0pLGgmJihBW1crMl09aFtBW1crMl1dKTt0LnB1dEltYWdlRGF0YShnLDAsYSpfKX19fX1mdW5jdGlvbiB4KHQsZSl7aWYoZS5iaXRtYXApdC5kcmF3SW1hZ2UoZS5iaXRtYXAsMCwwKTtlbHNlIGZvcih2YXIgcj1lLmhlaWdodCxuPWUud2lkdGgsaT1yJV8sYT0oci1pKS9fLHM9MD09PWk/YTphKzEsbD10LmNyZWF0ZUltYWdlRGF0YShuLF8pLHU9MCxjPWUuZGF0YSxoPWwuZGF0YSxmPTA7ZjxzO2YrKyl7dmFyIGQ9ZjxhP186aTt1PSgwLG8uYXBwbHlNYXNrSW1hZ2VEYXRhKSh7c3JjOmMsc3JjUG9zOnUsZGVzdDpoLHdpZHRoOm4saGVpZ2h0OmR9KS5zcmNQb3MsdC5wdXRJbWFnZURhdGEobCwwLGYqXyl9fWZ1bmN0aW9uIEUodCxlKXtmb3IodmFyIHI9MCxuPVsic3Ryb2tlU3R5bGUiLCJmaWxsU3R5bGUiLCJmaWxsUnVsZSIsImdsb2JhbEFscGhhIiwibGluZVdpZHRoIiwibGluZUNhcCIsImxpbmVKb2luIiwibWl0ZXJMaW1pdCIsImdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiIsImZvbnQiXTtyPG4ubGVuZ3RoO3IrKyl7dmFyIGk9bltyXTt2b2lkIDAhPT10W2ldJiYoZVtpXT10W2ldKX12b2lkIDAhPT10LnNldExpbmVEYXNoJiYoZS5zZXRMaW5lRGFzaCh0LmdldExpbmVEYXNoKCkpLGUubGluZURhc2hPZmZzZXQ9dC5saW5lRGFzaE9mZnNldCl9ZnVuY3Rpb24gUCh0LGUpe3Quc3Ryb2tlU3R5bGU9dC5maWxsU3R5bGU9ZXx8IiMwMDAwMDAiLHQuZmlsbFJ1bGU9Im5vbnplcm8iLHQuZ2xvYmFsQWxwaGE9MSx0LmxpbmVXaWR0aD0xLHQubGluZUNhcD0iYnV0dCIsdC5saW5lSm9pbj0ibWl0ZXIiLHQubWl0ZXJMaW1pdD0xMCx0Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbj0ic291cmNlLW92ZXIiLHQuZm9udD0iMTBweCBzYW5zLXNlcmlmIix2b2lkIDAhPT10LnNldExpbmVEYXNoJiYodC5zZXRMaW5lRGFzaChbXSksdC5saW5lRGFzaE9mZnNldD0wKX1mdW5jdGlvbiBUKHQsZSxyLG4pe2Zvcih2YXIgaT10Lmxlbmd0aCxhPTM7YTxpO2ErPTQpe3ZhciBvPXRbYV07aWYoMD09PW8pdFthLTNdPWUsdFthLTJdPXIsdFthLTFdPW47ZWxzZSBpZihvPDI1NSl7dmFyIHM9MjU1LW87dFthLTNdPXRbYS0zXSpvK2Uqcz4+OCx0W2EtMl09dFthLTJdKm8rcipzPj44LHRbYS0xXT10W2EtMV0qbytuKnM+Pjh9fX1mdW5jdGlvbiBDKHQsZSxyKXtmb3IodmFyIG49dC5sZW5ndGgsaT0zO2k8bjtpKz00KXt2YXIgYT1yP3JbdFtpXV06dFtpXTtlW2ldPWVbaV0qYSouMDAzOTIxNTY4NjI3NDUwOTh8MH19ZnVuY3Rpb24gTyh0LGUscil7Zm9yKHZhciBuPXQubGVuZ3RoLGk9MztpPG47aSs9NCl7dmFyIGE9NzcqdFtpLTNdKzE1Mip0W2ktMl0rMjgqdFtpLTFdO2VbaV09cj9lW2ldKnJbYT4+OF0+Pjg6ZVtpXSphPj4xNn19ZnVuY3Rpb24gRih0LGUpe3ZhciByPW4uVXRpbC5zaW5ndWxhclZhbHVlRGVjb21wb3NlMmRTY2FsZSh0KTtyWzBdPU1hdGguZnJvdW5kKHJbMF0pLHJbMV09TWF0aC5mcm91bmQoclsxXSk7dmFyIGE9TWF0aC5mcm91bmQoKGdsb2JhbFRoaXMuZGV2aWNlUGl4ZWxSYXRpb3x8MSkqaS5QaXhlbHNQZXJJbmNoLlBERl9UT19DU1NfVU5JVFMpO3JldHVybiB2b2lkIDAhPT1lP2U6clswXTw9YXx8clsxXTw9YX12YXIgTT1bImJ1dHQiLCJyb3VuZCIsInNxdWFyZSJdLFI9WyJtaXRlciIsInJvdW5kIiwiYmV2ZWwiXSxJPXt9LGo9e30sTD1uZXcgV2Vha1NldCxEPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLHIsbixpLGEsbyxzKXt2YXIgbCx1LGM9YS5vcHRpb25hbENvbnRlbnRDb25maWcsaD1hLm1hcmtlZENvbnRlbnRTdGFjayxmPXZvaWQgMD09PWg/bnVsbDpoO3YodGhpcyx0KSxmdW5jdGlvbih0LGUpe2lmKGUuaGFzKHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBpbml0aWFsaXplIHRoZSBzYW1lIHByaXZhdGUgZWxlbWVudHMgdHdpY2Ugb24gYW4gb2JqZWN0Iil9KGw9dGhpcyx1PUwpLHUuYWRkKGwpLHRoaXMuY3R4PWUsdGhpcy5jdXJyZW50PW5ldyBrKHRoaXMuY3R4LmNhbnZhcy53aWR0aCx0aGlzLmN0eC5jYW52YXMuaGVpZ2h0KSx0aGlzLnN0YXRlU3RhY2s9W10sdGhpcy5wZW5kaW5nQ2xpcD1udWxsLHRoaXMucGVuZGluZ0VPRmlsbD0hMSx0aGlzLnJlcz1udWxsLHRoaXMueG9ianM9bnVsbCx0aGlzLmNvbW1vbk9ianM9cix0aGlzLm9ianM9bix0aGlzLmNhbnZhc0ZhY3Rvcnk9aSx0aGlzLmdyb3VwU3RhY2s9W10sdGhpcy5wcm9jZXNzaW5nVHlwZTM9bnVsbCx0aGlzLmJhc2VUcmFuc2Zvcm09bnVsbCx0aGlzLmJhc2VUcmFuc2Zvcm1TdGFjaz1bXSx0aGlzLmdyb3VwTGV2ZWw9MCx0aGlzLnNtYXNrU3RhY2s9W10sdGhpcy5zbWFza0NvdW50ZXI9MCx0aGlzLnRlbXBTTWFzaz1udWxsLHRoaXMuc3VzcGVuZGVkQ3R4PW51bGwsdGhpcy5jb250ZW50VmlzaWJsZT0hMCx0aGlzLm1hcmtlZENvbnRlbnRTdGFjaz1mfHxbXSx0aGlzLm9wdGlvbmFsQ29udGVudENvbmZpZz1jLHRoaXMuY2FjaGVkQ2FudmFzZXM9bmV3IHcodGhpcy5jYW52YXNGYWN0b3J5KSx0aGlzLmNhY2hlZFBhdHRlcm5zPW5ldyBNYXAsdGhpcy5hbm5vdGF0aW9uQ2FudmFzTWFwPW8sdGhpcy52aWV3cG9ydFNjYWxlPTEsdGhpcy5vdXRwdXRTY2FsZVg9MSx0aGlzLm91dHB1dFNjYWxlWT0xLHRoaXMuYmFja2dyb3VuZENvbG9yPShudWxsPT1zP3ZvaWQgMDpzLmJhY2tncm91bmQpfHxudWxsLHRoaXMuZm9yZWdyb3VuZENvbG9yPShudWxsPT1zP3ZvaWQgMDpzLmZvcmVncm91bmQpfHxudWxsLHRoaXMuX2NhY2hlZFNjYWxlRm9yU3Ryb2tpbmc9bnVsbCx0aGlzLl9jYWNoZWRHZXRTaW5nbGVQaXhlbFdpZHRoPW51bGwsdGhpcy5fY2FjaGVkQml0bWFwc01hcD1uZXcgTWFwfXJldHVybiBtKHQsW3trZXk6ImdldE9iamVjdCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOm51bGw7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0P3Quc3RhcnRzV2l0aCgiZ18iKT90aGlzLmNvbW1vbk9ianMuZ2V0KHQpOnRoaXMub2Jqcy5nZXQodCk6ZX19LHtrZXk6ImJlZ2luRHJhd2luZyIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUscixuPXQudHJhbnNmb3JtLGE9dC52aWV3cG9ydCxvPXQudHJhbnNwYXJlbmN5LHM9dm9pZCAwIT09byYmbyx1PXQuYmFja2dyb3VuZCxjPXZvaWQgMD09PXU/bnVsbDp1LGY9dGhpcy5jdHguY2FudmFzLndpZHRoLGQ9dGhpcy5jdHguY2FudmFzLmhlaWdodCxwPWN8fCIjZmZmZmZmIjtpZih0aGlzLmN0eC5zYXZlKCksdGhpcy5mb3JlZ3JvdW5kQ29sb3ImJnRoaXMuYmFja2dyb3VuZENvbG9yKXt0aGlzLmN0eC5maWxsU3R5bGU9dGhpcy5mb3JlZ3JvdW5kQ29sb3I7dmFyIHY9dGhpcy5mb3JlZ3JvdW5kQ29sb3I9dGhpcy5jdHguZmlsbFN0eWxlO3RoaXMuY3R4LmZpbGxTdHlsZT10aGlzLmJhY2tncm91bmRDb2xvcjt2YXIgeSxtLGc9dGhpcy5iYWNrZ3JvdW5kQ29sb3I9dGhpcy5jdHguZmlsbFN0eWxlO2lmKHRoaXMuY3R4LmZpbGxTdHlsZT1wLHk9InN0cmluZyI9PXR5cGVvZihtPXRoaXMuY3R4LmZpbGxTdHlsZSkmJi9eI1swLTlBLUZhLWZdezZ9JC8udGVzdChtKSwiIzAwMDAwMCI9PT12JiYiI2ZmZmZmZiI9PT1nfHx2PT09Z3x8IXkpdGhpcy5mb3JlZ3JvdW5kQ29sb3I9dGhpcy5iYWNrZ3JvdW5kQ29sb3I9bnVsbDtlbHNle3ZhciBiPWgoKDAsaS5nZXRSR0IpKG0pLDMpLF89YlswXSx3PWJbMV0sQT1iWzJdLGs9ZnVuY3Rpb24odCl7cmV0dXJuKHQvPTI1NSk8PS4wMzkyOD90LzEyLjkyOk1hdGgucG93KCh0Ky4wNTUpLzEuMDU1LDIuNCl9LFM9TWF0aC5yb3VuZCguMjEyNiprKF8pKy43MTUyKmsodykrLjA3MjIqayhBKSk7dGhpcy5zZWxlY3RDb2xvcj1mdW5jdGlvbih0LGUscil7dmFyIG49LjIxMjYqayh0KSsuNzE1MiprKGUpKy4wNzIyKmsocik7cmV0dXJuIE1hdGgucm91bmQobik9PT1TP2c6dn19fWlmKHRoaXMuY3R4LmZpbGxTdHlsZT10aGlzLmJhY2tncm91bmRDb2xvcnx8cCx0aGlzLmN0eC5maWxsUmVjdCgwLDAsZixkKSx0aGlzLmN0eC5yZXN0b3JlKCkscyl7dmFyIHgsRT10aGlzLmNhY2hlZENhbnZhc2VzLmdldENhbnZhcygidHJhbnNwYXJlbnQiLGYsZCk7dGhpcy5jb21wb3NpdGVDdHg9dGhpcy5jdHgsdGhpcy50cmFuc3BhcmVudENhbnZhcz1FLmNhbnZhcyx0aGlzLmN0eD1FLmNvbnRleHQsdGhpcy5jdHguc2F2ZSgpLCh4PXRoaXMuY3R4KS50cmFuc2Zvcm0uYXBwbHkoeCxsKCgwLGkuZ2V0Q3VycmVudFRyYW5zZm9ybSkodGhpcy5jb21wb3NpdGVDdHgpKSl9dGhpcy5jdHguc2F2ZSgpLFAodGhpcy5jdHgsdGhpcy5mb3JlZ3JvdW5kQ29sb3IpLG4mJigocj10aGlzLmN0eCkudHJhbnNmb3JtLmFwcGx5KHIsbChuKSksdGhpcy5vdXRwdXRTY2FsZVg9blswXSx0aGlzLm91dHB1dFNjYWxlWT1uWzBdKSwoZT10aGlzLmN0eCkudHJhbnNmb3JtLmFwcGx5KGUsbChhLnRyYW5zZm9ybSkpLHRoaXMudmlld3BvcnRTY2FsZT1hLnNjYWxlLHRoaXMuYmFzZVRyYW5zZm9ybT0oMCxpLmdldEN1cnJlbnRUcmFuc2Zvcm0pKHRoaXMuY3R4KX19LHtrZXk6ImV4ZWN1dGVPcGVyYXRvckxpc3QiLHZhbHVlOmZ1bmN0aW9uKHQsZSxyLGkpe3ZhciBhPXQuYXJnc0FycmF5LG89dC5mbkFycmF5LHM9ZXx8MCxsPWEubGVuZ3RoO2lmKGw9PT1zKXJldHVybiBzO2Zvcih2YXIgdSxoPWwtcz4xMCYmImZ1bmN0aW9uIj09dHlwZW9mIHIsZj1oP0RhdGUubm93KCkrMTU6MCxkPTAscD10aGlzLmNvbW1vbk9ianMsdj10aGlzLm9ianM7Oyl7aWYodm9pZCAwIT09aSYmcz09PWkubmV4dEJyZWFrUG9pbnQpcmV0dXJuIGkuYnJlYWtJdChzLHIpLHM7aWYoKHU9b1tzXSkhPT1uLk9QUy5kZXBlbmRlbmN5KXRoaXNbdV0uYXBwbHkodGhpcyxhW3NdKTtlbHNle3ZhciB5LG09YyhhW3NdKTt0cnl7Zm9yKG0ucygpOyEoeT1tLm4oKSkuZG9uZTspe3ZhciBnPXkudmFsdWUsYj1nLnN0YXJ0c1dpdGgoImdfIik/cDp2O2lmKCFiLmhhcyhnKSlyZXR1cm4gYi5nZXQoZyxyKSxzfX1jYXRjaCh0KXttLmUodCl9ZmluYWxseXttLmYoKX19aWYoKytzPT09bClyZXR1cm4gcztpZihoJiYrK2Q+MTApe2lmKERhdGUubm93KCk+ZilyZXR1cm4gcigpLHM7ZD0wfX19fSx7a2V5OiJlbmREcmF3aW5nIix2YWx1ZTpmdW5jdGlvbigpe3UodGhpcyxMLE4pLmNhbGwodGhpcyksdGhpcy5jYWNoZWRDYW52YXNlcy5jbGVhcigpLHRoaXMuY2FjaGVkUGF0dGVybnMuY2xlYXIoKTt2YXIgdCxlPWModGhpcy5fY2FjaGVkQml0bWFwc01hcC52YWx1ZXMoKSk7dHJ5e2ZvcihlLnMoKTshKHQ9ZS5uKCkpLmRvbmU7KXt2YXIgcixuPXQudmFsdWUsaT1jKG4udmFsdWVzKCkpO3RyeXtmb3IoaS5zKCk7IShyPWkubigpKS5kb25lOyl7dmFyIGE9ci52YWx1ZTsidW5kZWZpbmVkIiE9dHlwZW9mIEhUTUxDYW52YXNFbGVtZW50JiZhIGluc3RhbmNlb2YgSFRNTENhbnZhc0VsZW1lbnQmJihhLndpZHRoPWEuaGVpZ2h0PTApfX1jYXRjaCh0KXtpLmUodCl9ZmluYWxseXtpLmYoKX1uLmNsZWFyKCl9fWNhdGNoKHQpe2UuZSh0KX1maW5hbGx5e2UuZigpfXRoaXMuX2NhY2hlZEJpdG1hcHNNYXAuY2xlYXIoKX19LHtrZXk6Il9zY2FsZUltYWdlIix2YWx1ZTpmdW5jdGlvbih0LGUpe2Zvcih2YXIgcixuLGk9dC53aWR0aCxhPXQuaGVpZ2h0LG89TWF0aC5tYXgoTWF0aC5oeXBvdChlWzBdLGVbMV0pLDEpLHM9TWF0aC5tYXgoTWF0aC5oeXBvdChlWzJdLGVbM10pLDEpLGw9aSx1PWEsYz0icHJlc2NhbGUxIjtvPjImJmw+MXx8cz4yJiZ1PjE7KXt2YXIgaD1sLGY9dTtvPjImJmw+MSYmKG8vPWwvKGg9TWF0aC5jZWlsKGwvMikpKSxzPjImJnU+MSYmKHMvPXUvKGY9TWF0aC5jZWlsKHUvMikpKSwobj0ocj10aGlzLmNhY2hlZENhbnZhc2VzLmdldENhbnZhcyhjLGgsZikpLmNvbnRleHQpLmNsZWFyUmVjdCgwLDAsaCxmKSxuLmRyYXdJbWFnZSh0LDAsMCxsLHUsMCwwLGgsZiksdD1yLmNhbnZhcyxsPWgsdT1mLGM9InByZXNjYWxlMSI9PT1jPyJwcmVzY2FsZTIiOiJwcmVzY2FsZTEifXJldHVybntpbWc6dCxwYWludFdpZHRoOmwscGFpbnRIZWlnaHQ6dX19fSx7a2V5OiJfY3JlYXRlTWFza0NhbnZhcyIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUscixvLHMsdT10aGlzLmN0eCxjPXQud2lkdGgsaD10LmhlaWdodCxmPXRoaXMuY3VycmVudC5maWxsQ29sb3IsZD10aGlzLmN1cnJlbnQucGF0dGVybkZpbGwscD0oMCxpLmdldEN1cnJlbnRUcmFuc2Zvcm0pKHUpO2lmKCh0LmJpdG1hcHx8dC5kYXRhKSYmdC5jb3VudD4xKXt2YXIgdj10LmJpdG1hcHx8dC5kYXRhLmJ1ZmZlcjtyPUpTT04uc3RyaW5naWZ5KGQ/cDpbcC5zbGljZSgwLDQpLGZdKSwoZT10aGlzLl9jYWNoZWRCaXRtYXBzTWFwLmdldCh2KSl8fChlPW5ldyBNYXAsdGhpcy5fY2FjaGVkQml0bWFwc01hcC5zZXQodixlKSk7dmFyIHk9ZS5nZXQocik7aWYoeSYmIWQpcmV0dXJue2NhbnZhczp5LG9mZnNldFg6TWF0aC5yb3VuZChNYXRoLm1pbihwWzBdLHBbMl0pK3BbNF0pLG9mZnNldFk6TWF0aC5yb3VuZChNYXRoLm1pbihwWzFdLHBbM10pK3BbNV0pfTtvPXl9b3x8eCgocz10aGlzLmNhY2hlZENhbnZhc2VzLmdldENhbnZhcygibWFza0NhbnZhcyIsYyxoKSkuY29udGV4dCx0KTt2YXIgbT1uLlV0aWwudHJhbnNmb3JtKHAsWzEvYywwLDAsLTEvaCwwLDBdKTttPW4uVXRpbC50cmFuc2Zvcm0obSxbMSwwLDAsMSwwLC1oXSk7dmFyIGc9bi5VdGlsLmFwcGx5VHJhbnNmb3JtKFswLDBdLG0pLGI9bi5VdGlsLmFwcGx5VHJhbnNmb3JtKFtjLGhdLG0pLF89bi5VdGlsLm5vcm1hbGl6ZVJlY3QoW2dbMF0sZ1sxXSxiWzBdLGJbMV1dKSx3PU1hdGgucm91bmQoX1syXS1fWzBdKXx8MSxrPU1hdGgucm91bmQoX1szXS1fWzFdKXx8MSxTPXRoaXMuY2FjaGVkQ2FudmFzZXMuZ2V0Q2FudmFzKCJmaWxsQ2FudmFzIix3LGspLEU9Uy5jb250ZXh0LFA9TWF0aC5taW4oZ1swXSxiWzBdKSxUPU1hdGgubWluKGdbMV0sYlsxXSk7RS50cmFuc2xhdGUoLVAsLVQpLEUudHJhbnNmb3JtLmFwcGx5KEUsbChtKSksb3x8KG89KG89dGhpcy5fc2NhbGVJbWFnZShzLmNhbnZhcywoMCxpLmdldEN1cnJlbnRUcmFuc2Zvcm1JbnZlcnNlKShFKSkpLmltZyxlJiZkJiZlLnNldChyLG8pKSxFLmltYWdlU21vb3RoaW5nRW5hYmxlZD1GKCgwLGkuZ2V0Q3VycmVudFRyYW5zZm9ybSkoRSksdC5pbnRlcnBvbGF0ZSksQShFLG8sMCwwLG8ud2lkdGgsby5oZWlnaHQsMCwwLGMsaCksRS5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb249InNvdXJjZS1pbiI7dmFyIEM9bi5VdGlsLnRyYW5zZm9ybSgoMCxpLmdldEN1cnJlbnRUcmFuc2Zvcm1JbnZlcnNlKShFKSxbMSwwLDAsMSwtUCwtVF0pO3JldHVybiBFLmZpbGxTdHlsZT1kP2YuZ2V0UGF0dGVybih1LHRoaXMsQyxhLlBhdGhUeXBlLkZJTEwpOmYsRS5maWxsUmVjdCgwLDAsYyxoKSxlJiYhZCYmKHRoaXMuY2FjaGVkQ2FudmFzZXMuZGVsZXRlKCJmaWxsQ2FudmFzIiksZS5zZXQocixTLmNhbnZhcykpLHtjYW52YXM6Uy5jYW52YXMsb2Zmc2V0WDpNYXRoLnJvdW5kKFApLG9mZnNldFk6TWF0aC5yb3VuZChUKX19fSx7a2V5OiJzZXRMaW5lV2lkdGgiLHZhbHVlOmZ1bmN0aW9uKHQpe3QhPT10aGlzLmN1cnJlbnQubGluZVdpZHRoJiYodGhpcy5fY2FjaGVkU2NhbGVGb3JTdHJva2luZz1udWxsKSx0aGlzLmN1cnJlbnQubGluZVdpZHRoPXQsdGhpcy5jdHgubGluZVdpZHRoPXR9fSx7a2V5OiJzZXRMaW5lQ2FwIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLmN0eC5saW5lQ2FwPU1bdF19fSx7a2V5OiJzZXRMaW5lSm9pbiIsdmFsdWU6ZnVuY3Rpb24odCl7dGhpcy5jdHgubGluZUpvaW49Ult0XX19LHtrZXk6InNldE1pdGVyTGltaXQiLHZhbHVlOmZ1bmN0aW9uKHQpe3RoaXMuY3R4Lm1pdGVyTGltaXQ9dH19LHtrZXk6InNldERhc2giLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5jdHg7dm9pZCAwIT09ci5zZXRMaW5lRGFzaCYmKHIuc2V0TGluZURhc2godCksci5saW5lRGFzaE9mZnNldD1lKX19LHtrZXk6InNldFJlbmRlcmluZ0ludGVudCIsdmFsdWU6ZnVuY3Rpb24odCl7fX0se2tleToic2V0RmxhdG5lc3MiLHZhbHVlOmZ1bmN0aW9uKHQpe319LHtrZXk6InNldEdTdGF0ZSIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUscj1jKHQpO3RyeXtmb3Ioci5zKCk7IShlPXIubigpKS5kb25lOyl7dmFyIG49aChlLnZhbHVlLDIpLGk9blswXSxhPW5bMV07c3dpdGNoKGkpe2Nhc2UiTFciOnRoaXMuc2V0TGluZVdpZHRoKGEpO2JyZWFrO2Nhc2UiTEMiOnRoaXMuc2V0TGluZUNhcChhKTticmVhaztjYXNlIkxKIjp0aGlzLnNldExpbmVKb2luKGEpO2JyZWFrO2Nhc2UiTUwiOnRoaXMuc2V0TWl0ZXJMaW1pdChhKTticmVhaztjYXNlIkQiOnRoaXMuc2V0RGFzaChhWzBdLGFbMV0pO2JyZWFrO2Nhc2UiUkkiOnRoaXMuc2V0UmVuZGVyaW5nSW50ZW50KGEpO2JyZWFrO2Nhc2UiRkwiOnRoaXMuc2V0RmxhdG5lc3MoYSk7YnJlYWs7Y2FzZSJGb250Ijp0aGlzLnNldEZvbnQoYVswXSxhWzFdKTticmVhaztjYXNlIkNBIjp0aGlzLmN1cnJlbnQuc3Ryb2tlQWxwaGE9YTticmVhaztjYXNlImNhIjp0aGlzLmN1cnJlbnQuZmlsbEFscGhhPWEsdGhpcy5jdHguZ2xvYmFsQWxwaGE9YTticmVhaztjYXNlIkJNIjp0aGlzLmN0eC5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb249YTticmVhaztjYXNlIlNNYXNrIjp0aGlzLmN1cnJlbnQuYWN0aXZlU01hc2s9YT90aGlzLnRlbXBTTWFzazpudWxsLHRoaXMudGVtcFNNYXNrPW51bGwsdGhpcy5jaGVja1NNYXNrU3RhdGUoKTticmVhaztjYXNlIlRSIjp0aGlzLmN1cnJlbnQudHJhbnNmZXJNYXBzPWF9fX1jYXRjaCh0KXtyLmUodCl9ZmluYWxseXtyLmYoKX19fSx7a2V5OiJpblNNYXNrTW9kZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLnN1c3BlbmRlZEN0eH19LHtrZXk6ImNoZWNrU01hc2tTdGF0ZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmluU01hc2tNb2RlO3RoaXMuY3VycmVudC5hY3RpdmVTTWFzayYmIXQ/dGhpcy5iZWdpblNNYXNrTW9kZSgpOiF0aGlzLmN1cnJlbnQuYWN0aXZlU01hc2smJnQmJnRoaXMuZW5kU01hc2tNb2RlKCl9fSx7a2V5OiJiZWdpblNNYXNrTW9kZSIsdmFsdWU6ZnVuY3Rpb24oKXtpZih0aGlzLmluU01hc2tNb2RlKXRocm93IG5ldyBFcnJvcigiYmVnaW5TTWFza01vZGUgY2FsbGVkIHdoaWxlIGFscmVhZHkgaW4gc21hc2sgbW9kZSIpO3ZhciB0PXRoaXMuY3R4LmNhbnZhcy53aWR0aCxlPXRoaXMuY3R4LmNhbnZhcy5oZWlnaHQscj0ic21hc2tHcm91cEF0Iit0aGlzLmdyb3VwTGV2ZWwsbj10aGlzLmNhY2hlZENhbnZhc2VzLmdldENhbnZhcyhyLHQsZSk7dGhpcy5zdXNwZW5kZWRDdHg9dGhpcy5jdHgsdGhpcy5jdHg9bi5jb250ZXh0O3ZhciBhPXRoaXMuY3R4O2Euc2V0VHJhbnNmb3JtLmFwcGx5KGEsbCgoMCxpLmdldEN1cnJlbnRUcmFuc2Zvcm0pKHRoaXMuc3VzcGVuZGVkQ3R4KSkpLEUodGhpcy5zdXNwZW5kZWRDdHgsYSksZnVuY3Rpb24odCxlKXtpZih0Ll9yZW1vdmVNaXJyb3JpbmcpdGhyb3cgbmV3IEVycm9yKCJDb250ZXh0IGlzIGFscmVhZHkgZm9yd2FyZGluZyBvcGVyYXRpb25zLiIpO3QuX19vcmlnaW5hbFNhdmU9dC5zYXZlLHQuX19vcmlnaW5hbFJlc3RvcmU9dC5yZXN0b3JlLHQuX19vcmlnaW5hbFJvdGF0ZT10LnJvdGF0ZSx0Ll9fb3JpZ2luYWxTY2FsZT10LnNjYWxlLHQuX19vcmlnaW5hbFRyYW5zbGF0ZT10LnRyYW5zbGF0ZSx0Ll9fb3JpZ2luYWxUcmFuc2Zvcm09dC50cmFuc2Zvcm0sdC5fX29yaWdpbmFsU2V0VHJhbnNmb3JtPXQuc2V0VHJhbnNmb3JtLHQuX19vcmlnaW5hbFJlc2V0VHJhbnNmb3JtPXQucmVzZXRUcmFuc2Zvcm0sdC5fX29yaWdpbmFsQ2xpcD10LmNsaXAsdC5fX29yaWdpbmFsTW92ZVRvPXQubW92ZVRvLHQuX19vcmlnaW5hbExpbmVUbz10LmxpbmVUbyx0Ll9fb3JpZ2luYWxCZXppZXJDdXJ2ZVRvPXQuYmV6aWVyQ3VydmVUbyx0Ll9fb3JpZ2luYWxSZWN0PXQucmVjdCx0Ll9fb3JpZ2luYWxDbG9zZVBhdGg9dC5jbG9zZVBhdGgsdC5fX29yaWdpbmFsQmVnaW5QYXRoPXQuYmVnaW5QYXRoLHQuX3JlbW92ZU1pcnJvcmluZz1mdW5jdGlvbigpe3Quc2F2ZT10Ll9fb3JpZ2luYWxTYXZlLHQucmVzdG9yZT10Ll9fb3JpZ2luYWxSZXN0b3JlLHQucm90YXRlPXQuX19vcmlnaW5hbFJvdGF0ZSx0LnNjYWxlPXQuX19vcmlnaW5hbFNjYWxlLHQudHJhbnNsYXRlPXQuX19vcmlnaW5hbFRyYW5zbGF0ZSx0LnRyYW5zZm9ybT10Ll9fb3JpZ2luYWxUcmFuc2Zvcm0sdC5zZXRUcmFuc2Zvcm09dC5fX29yaWdpbmFsU2V0VHJhbnNmb3JtLHQucmVzZXRUcmFuc2Zvcm09dC5fX29yaWdpbmFsUmVzZXRUcmFuc2Zvcm0sdC5jbGlwPXQuX19vcmlnaW5hbENsaXAsdC5tb3ZlVG89dC5fX29yaWdpbmFsTW92ZVRvLHQubGluZVRvPXQuX19vcmlnaW5hbExpbmVUbyx0LmJlemllckN1cnZlVG89dC5fX29yaWdpbmFsQmV6aWVyQ3VydmVUbyx0LnJlY3Q9dC5fX29yaWdpbmFsUmVjdCx0LmNsb3NlUGF0aD10Ll9fb3JpZ2luYWxDbG9zZVBhdGgsdC5iZWdpblBhdGg9dC5fX29yaWdpbmFsQmVnaW5QYXRoLGRlbGV0ZSB0Ll9yZW1vdmVNaXJyb3Jpbmd9LHQuc2F2ZT1mdW5jdGlvbigpe2Uuc2F2ZSgpLHRoaXMuX19vcmlnaW5hbFNhdmUoKX0sdC5yZXN0b3JlPWZ1bmN0aW9uKCl7ZS5yZXN0b3JlKCksdGhpcy5fX29yaWdpbmFsUmVzdG9yZSgpfSx0LnRyYW5zbGF0ZT1mdW5jdGlvbih0LHIpe2UudHJhbnNsYXRlKHQsciksdGhpcy5fX29yaWdpbmFsVHJhbnNsYXRlKHQscil9LHQuc2NhbGU9ZnVuY3Rpb24odCxyKXtlLnNjYWxlKHQsciksdGhpcy5fX29yaWdpbmFsU2NhbGUodCxyKX0sdC50cmFuc2Zvcm09ZnVuY3Rpb24odCxyLG4saSxhLG8pe2UudHJhbnNmb3JtKHQscixuLGksYSxvKSx0aGlzLl9fb3JpZ2luYWxUcmFuc2Zvcm0odCxyLG4saSxhLG8pfSx0LnNldFRyYW5zZm9ybT1mdW5jdGlvbih0LHIsbixpLGEsbyl7ZS5zZXRUcmFuc2Zvcm0odCxyLG4saSxhLG8pLHRoaXMuX19vcmlnaW5hbFNldFRyYW5zZm9ybSh0LHIsbixpLGEsbyl9LHQucmVzZXRUcmFuc2Zvcm09ZnVuY3Rpb24oKXtlLnJlc2V0VHJhbnNmb3JtKCksdGhpcy5fX29yaWdpbmFsUmVzZXRUcmFuc2Zvcm0oKX0sdC5yb3RhdGU9ZnVuY3Rpb24odCl7ZS5yb3RhdGUodCksdGhpcy5fX29yaWdpbmFsUm90YXRlKHQpfSx0LmNsaXA9ZnVuY3Rpb24odCl7ZS5jbGlwKHQpLHRoaXMuX19vcmlnaW5hbENsaXAodCl9LHQubW92ZVRvPWZ1bmN0aW9uKHQscil7ZS5tb3ZlVG8odCxyKSx0aGlzLl9fb3JpZ2luYWxNb3ZlVG8odCxyKX0sdC5saW5lVG89ZnVuY3Rpb24odCxyKXtlLmxpbmVUbyh0LHIpLHRoaXMuX19vcmlnaW5hbExpbmVUbyh0LHIpfSx0LmJlemllckN1cnZlVG89ZnVuY3Rpb24odCxyLG4saSxhLG8pe2UuYmV6aWVyQ3VydmVUbyh0LHIsbixpLGEsbyksdGhpcy5fX29yaWdpbmFsQmV6aWVyQ3VydmVUbyh0LHIsbixpLGEsbyl9LHQucmVjdD1mdW5jdGlvbih0LHIsbixpKXtlLnJlY3QodCxyLG4saSksdGhpcy5fX29yaWdpbmFsUmVjdCh0LHIsbixpKX0sdC5jbG9zZVBhdGg9ZnVuY3Rpb24oKXtlLmNsb3NlUGF0aCgpLHRoaXMuX19vcmlnaW5hbENsb3NlUGF0aCgpfSx0LmJlZ2luUGF0aD1mdW5jdGlvbigpe2UuYmVnaW5QYXRoKCksdGhpcy5fX29yaWdpbmFsQmVnaW5QYXRoKCl9fShhLHRoaXMuc3VzcGVuZGVkQ3R4KSx0aGlzLnNldEdTdGF0ZShbWyJCTSIsInNvdXJjZS1vdmVyIl0sWyJjYSIsMV0sWyJDQSIsMV1dKX19LHtrZXk6ImVuZFNNYXNrTW9kZSIsdmFsdWU6ZnVuY3Rpb24oKXtpZighdGhpcy5pblNNYXNrTW9kZSl0aHJvdyBuZXcgRXJyb3IoImVuZFNNYXNrTW9kZSBjYWxsZWQgd2hpbGUgbm90IGluIHNtYXNrIG1vZGUiKTt0aGlzLmN0eC5fcmVtb3ZlTWlycm9yaW5nKCksRSh0aGlzLmN0eCx0aGlzLnN1c3BlbmRlZEN0eCksdGhpcy5jdHg9dGhpcy5zdXNwZW5kZWRDdHgsdGhpcy5zdXNwZW5kZWRDdHg9bnVsbH19LHtrZXk6ImNvbXBvc2UiLHZhbHVlOmZ1bmN0aW9uKHQpe2lmKHRoaXMuY3VycmVudC5hY3RpdmVTTWFzayl7dD8odFswXT1NYXRoLmZsb29yKHRbMF0pLHRbMV09TWF0aC5mbG9vcih0WzFdKSx0WzJdPU1hdGguY2VpbCh0WzJdKSx0WzNdPU1hdGguY2VpbCh0WzNdKSk6dD1bMCwwLHRoaXMuY3R4LmNhbnZhcy53aWR0aCx0aGlzLmN0eC5jYW52YXMuaGVpZ2h0XTt2YXIgZT10aGlzLmN1cnJlbnQuYWN0aXZlU01hc2s7KGZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBpPW5bMF0sYT1uWzFdLG89blsyXS1pLHM9blszXS1hOzAhPT1vJiYwIT09cyYmKGZ1bmN0aW9uKHQsZSxyLG4saSxhLG8scyxsLHUsYyl7dmFyIGgsZj0hIWEsZD1mP2FbMF06MCxwPWY/YVsxXTowLHY9Zj9hWzJdOjA7aD0iTHVtaW5vc2l0eSI9PT1pP086Qztmb3IodmFyIHk9TWF0aC5taW4obixNYXRoLmNlaWwoMTA0ODU3Ni9yKSksbT0wO208bjttKz15KXt2YXIgZz1NYXRoLm1pbih5LG4tbSksYj10LmdldEltYWdlRGF0YShzLXUsbSsobC1jKSxyLGcpLF89ZS5nZXRJbWFnZURhdGEocyxtK2wscixnKTtmJiZUKGIuZGF0YSxkLHAsdiksaChiLmRhdGEsXy5kYXRhLG8pLGUucHV0SW1hZ2VEYXRhKF8scyxtK2wpfX0oZS5jb250ZXh0LHIsbyxzLGUuc3VidHlwZSxlLmJhY2tkcm9wLGUudHJhbnNmZXJNYXAsaSxhLGUub2Zmc2V0WCxlLm9mZnNldFkpLHQuc2F2ZSgpLHQuZ2xvYmFsQWxwaGE9MSx0Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbj0ic291cmNlLW92ZXIiLHQuc2V0VHJhbnNmb3JtKDEsMCwwLDEsMCwwKSx0LmRyYXdJbWFnZShyLmNhbnZhcywwLDApLHQucmVzdG9yZSgpKX0pKHRoaXMuc3VzcGVuZGVkQ3R4LGUsdGhpcy5jdHgsdCksdGhpcy5jdHguc2F2ZSgpLHRoaXMuY3R4LnNldFRyYW5zZm9ybSgxLDAsMCwxLDAsMCksdGhpcy5jdHguY2xlYXJSZWN0KDAsMCx0aGlzLmN0eC5jYW52YXMud2lkdGgsdGhpcy5jdHguY2FudmFzLmhlaWdodCksdGhpcy5jdHgucmVzdG9yZSgpfX19LHtrZXk6InNhdmUiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5pblNNYXNrTW9kZT8oRSh0aGlzLmN0eCx0aGlzLnN1c3BlbmRlZEN0eCksdGhpcy5zdXNwZW5kZWRDdHguc2F2ZSgpKTp0aGlzLmN0eC5zYXZlKCk7dmFyIHQ9dGhpcy5jdXJyZW50O3RoaXMuc3RhdGVTdGFjay5wdXNoKHQpLHRoaXMuY3VycmVudD10LmNsb25lKCl9fSx7a2V5OiJyZXN0b3JlIix2YWx1ZTpmdW5jdGlvbigpezA9PT10aGlzLnN0YXRlU3RhY2subGVuZ3RoJiZ0aGlzLmluU01hc2tNb2RlJiZ0aGlzLmVuZFNNYXNrTW9kZSgpLDAhPT10aGlzLnN0YXRlU3RhY2subGVuZ3RoJiYodGhpcy5jdXJyZW50PXRoaXMuc3RhdGVTdGFjay5wb3AoKSx0aGlzLmluU01hc2tNb2RlPyh0aGlzLnN1c3BlbmRlZEN0eC5yZXN0b3JlKCksRSh0aGlzLnN1c3BlbmRlZEN0eCx0aGlzLmN0eCkpOnRoaXMuY3R4LnJlc3RvcmUoKSx0aGlzLmNoZWNrU01hc2tTdGF0ZSgpLHRoaXMucGVuZGluZ0NsaXA9bnVsbCx0aGlzLl9jYWNoZWRTY2FsZUZvclN0cm9raW5nPW51bGwsdGhpcy5fY2FjaGVkR2V0U2luZ2xlUGl4ZWxXaWR0aD1udWxsKX19LHtrZXk6InRyYW5zZm9ybSIsdmFsdWU6ZnVuY3Rpb24odCxlLHIsbixpLGEpe3RoaXMuY3R4LnRyYW5zZm9ybSh0LGUscixuLGksYSksdGhpcy5fY2FjaGVkU2NhbGVGb3JTdHJva2luZz1udWxsLHRoaXMuX2NhY2hlZEdldFNpbmdsZVBpeGVsV2lkdGg9bnVsbH19LHtrZXk6ImNvbnN0cnVjdFBhdGgiLHZhbHVlOmZ1bmN0aW9uKHQsZSxyKXtmb3IodmFyIGEsbyxzPXRoaXMuY3R4LGw9dGhpcy5jdXJyZW50LHU9bC54LGM9bC55LGg9KDAsaS5nZXRDdXJyZW50VHJhbnNmb3JtKShzKSxmPTA9PT1oWzBdJiYwPT09aFszXXx8MD09PWhbMV0mJjA9PT1oWzJdLGQ9Zj9yLnNsaWNlKDApOm51bGwscD0wLHY9MCx5PXQubGVuZ3RoO3A8eTtwKyspc3dpdGNoKDB8dFtwXSl7Y2FzZSBuLk9QUy5yZWN0YW5nbGU6dT1lW3YrK10sYz1lW3YrK107dmFyIG09ZVt2KytdLGc9ZVt2KytdLGI9dSttLF89YytnO3MubW92ZVRvKHUsYyksMD09PW18fDA9PT1nP3MubGluZVRvKGIsXyk6KHMubGluZVRvKGIsYykscy5saW5lVG8oYixfKSxzLmxpbmVUbyh1LF8pKSxmfHxsLnVwZGF0ZVJlY3RNaW5NYXgoaCxbdSxjLGIsX10pLHMuY2xvc2VQYXRoKCk7YnJlYWs7Y2FzZSBuLk9QUy5tb3ZlVG86dT1lW3YrK10sYz1lW3YrK10scy5tb3ZlVG8odSxjKSxmfHxsLnVwZGF0ZVBhdGhNaW5NYXgoaCx1LGMpO2JyZWFrO2Nhc2Ugbi5PUFMubGluZVRvOnU9ZVt2KytdLGM9ZVt2KytdLHMubGluZVRvKHUsYyksZnx8bC51cGRhdGVQYXRoTWluTWF4KGgsdSxjKTticmVhaztjYXNlIG4uT1BTLmN1cnZlVG86YT11LG89Yyx1PWVbdis0XSxjPWVbdis1XSxzLmJlemllckN1cnZlVG8oZVt2XSxlW3YrMV0sZVt2KzJdLGVbdiszXSx1LGMpLGwudXBkYXRlQ3VydmVQYXRoTWluTWF4KGgsYSxvLGVbdl0sZVt2KzFdLGVbdisyXSxlW3YrM10sdSxjLGQpLHYrPTY7YnJlYWs7Y2FzZSBuLk9QUy5jdXJ2ZVRvMjphPXUsbz1jLHMuYmV6aWVyQ3VydmVUbyh1LGMsZVt2XSxlW3YrMV0sZVt2KzJdLGVbdiszXSksbC51cGRhdGVDdXJ2ZVBhdGhNaW5NYXgoaCxhLG8sdSxjLGVbdl0sZVt2KzFdLGVbdisyXSxlW3YrM10sZCksdT1lW3YrMl0sYz1lW3YrM10sdis9NDticmVhaztjYXNlIG4uT1BTLmN1cnZlVG8zOmE9dSxvPWMsdT1lW3YrMl0sYz1lW3YrM10scy5iZXppZXJDdXJ2ZVRvKGVbdl0sZVt2KzFdLHUsYyx1LGMpLGwudXBkYXRlQ3VydmVQYXRoTWluTWF4KGgsYSxvLGVbdl0sZVt2KzFdLHUsYyx1LGMsZCksdis9NDticmVhaztjYXNlIG4uT1BTLmNsb3NlUGF0aDpzLmNsb3NlUGF0aCgpfWYmJmwudXBkYXRlU2NhbGluZ1BhdGhNaW5NYXgoaCxkKSxsLnNldEN1cnJlbnRQb2ludCh1LGMpfX0se2tleToiY2xvc2VQYXRoIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuY3R4LmNsb3NlUGF0aCgpfX0se2tleToic3Ryb2tlIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PSEoYXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0pfHxhcmd1bWVudHNbMF0sZT10aGlzLmN0eCxyPXRoaXMuY3VycmVudC5zdHJva2VDb2xvcjtlLmdsb2JhbEFscGhhPXRoaXMuY3VycmVudC5zdHJva2VBbHBoYSx0aGlzLmNvbnRlbnRWaXNpYmxlJiYoIm9iamVjdCI9PT1wKHIpJiZudWxsIT1yJiZyLmdldFBhdHRlcm4/KGUuc2F2ZSgpLGUuc3Ryb2tlU3R5bGU9ci5nZXRQYXR0ZXJuKGUsdGhpcywoMCxpLmdldEN1cnJlbnRUcmFuc2Zvcm1JbnZlcnNlKShlKSxhLlBhdGhUeXBlLlNUUk9LRSksdGhpcy5yZXNjYWxlQW5kU3Ryb2tlKCExKSxlLnJlc3RvcmUoKSk6dGhpcy5yZXNjYWxlQW5kU3Ryb2tlKCEwKSksdCYmdGhpcy5jb25zdW1lUGF0aCh0aGlzLmN1cnJlbnQuZ2V0Q2xpcHBlZFBhdGhCb3VuZGluZ0JveCgpKSxlLmdsb2JhbEFscGhhPXRoaXMuY3VycmVudC5maWxsQWxwaGF9fSx7a2V5OiJjbG9zZVN0cm9rZSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmNsb3NlUGF0aCgpLHRoaXMuc3Ryb2tlKCl9fSx7a2V5OiJmaWxsIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PSEoYXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0pfHxhcmd1bWVudHNbMF0sZT10aGlzLmN0eCxyPXRoaXMuY3VycmVudC5maWxsQ29sb3Isbj0hMTt0aGlzLmN1cnJlbnQucGF0dGVybkZpbGwmJihlLnNhdmUoKSxlLmZpbGxTdHlsZT1yLmdldFBhdHRlcm4oZSx0aGlzLCgwLGkuZ2V0Q3VycmVudFRyYW5zZm9ybUludmVyc2UpKGUpLGEuUGF0aFR5cGUuRklMTCksbj0hMCk7dmFyIG89dGhpcy5jdXJyZW50LmdldENsaXBwZWRQYXRoQm91bmRpbmdCb3goKTt0aGlzLmNvbnRlbnRWaXNpYmxlJiZudWxsIT09byYmKHRoaXMucGVuZGluZ0VPRmlsbD8oZS5maWxsKCJldmVub2RkIiksdGhpcy5wZW5kaW5nRU9GaWxsPSExKTplLmZpbGwoKSksbiYmZS5yZXN0b3JlKCksdCYmdGhpcy5jb25zdW1lUGF0aChvKX19LHtrZXk6ImVvRmlsbCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnBlbmRpbmdFT0ZpbGw9ITAsdGhpcy5maWxsKCl9fSx7a2V5OiJmaWxsU3Ryb2tlIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZmlsbCghMSksdGhpcy5zdHJva2UoITEpLHRoaXMuY29uc3VtZVBhdGgoKX19LHtrZXk6ImVvRmlsbFN0cm9rZSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnBlbmRpbmdFT0ZpbGw9ITAsdGhpcy5maWxsU3Ryb2tlKCl9fSx7a2V5OiJjbG9zZUZpbGxTdHJva2UiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5jbG9zZVBhdGgoKSx0aGlzLmZpbGxTdHJva2UoKX19LHtrZXk6ImNsb3NlRU9GaWxsU3Ryb2tlIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMucGVuZGluZ0VPRmlsbD0hMCx0aGlzLmNsb3NlUGF0aCgpLHRoaXMuZmlsbFN0cm9rZSgpfX0se2tleToiZW5kUGF0aCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmNvbnN1bWVQYXRoKCl9fSx7a2V5OiJjbGlwIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMucGVuZGluZ0NsaXA9SX19LHtrZXk6ImVvQ2xpcCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnBlbmRpbmdDbGlwPWp9fSx7a2V5OiJiZWdpblRleHQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5jdXJyZW50LnRleHRNYXRyaXg9bi5JREVOVElUWV9NQVRSSVgsdGhpcy5jdXJyZW50LnRleHRNYXRyaXhTY2FsZT0xLHRoaXMuY3VycmVudC54PXRoaXMuY3VycmVudC5saW5lWD0wLHRoaXMuY3VycmVudC55PXRoaXMuY3VycmVudC5saW5lWT0wfX0se2tleToiZW5kVGV4dCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnBlbmRpbmdUZXh0UGF0aHMsZT10aGlzLmN0eDtpZih2b2lkIDAhPT10KXtlLnNhdmUoKSxlLmJlZ2luUGF0aCgpO3ZhciByLG49Yyh0KTt0cnl7Zm9yKG4ucygpOyEocj1uLm4oKSkuZG9uZTspe3ZhciBpPXIudmFsdWU7ZS5zZXRUcmFuc2Zvcm0uYXBwbHkoZSxsKGkudHJhbnNmb3JtKSksZS50cmFuc2xhdGUoaS54LGkueSksaS5hZGRUb1BhdGgoZSxpLmZvbnRTaXplKX19Y2F0Y2godCl7bi5lKHQpfWZpbmFsbHl7bi5mKCl9ZS5yZXN0b3JlKCksZS5jbGlwKCksZS5iZWdpblBhdGgoKSxkZWxldGUgdGhpcy5wZW5kaW5nVGV4dFBhdGhzfWVsc2UgZS5iZWdpblBhdGgoKX19LHtrZXk6InNldENoYXJTcGFjaW5nIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLmN1cnJlbnQuY2hhclNwYWNpbmc9dH19LHtrZXk6InNldFdvcmRTcGFjaW5nIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLmN1cnJlbnQud29yZFNwYWNpbmc9dH19LHtrZXk6InNldEhTY2FsZSIsdmFsdWU6ZnVuY3Rpb24odCl7dGhpcy5jdXJyZW50LnRleHRIU2NhbGU9dC8xMDB9fSx7a2V5OiJzZXRMZWFkaW5nIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLmN1cnJlbnQubGVhZGluZz0tdH19LHtrZXk6InNldEZvbnQiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5jb21tb25PYmpzLmdldCh0KSxpPXRoaXMuY3VycmVudDtpZighcil0aHJvdyBuZXcgRXJyb3IoIkNhbid0IGZpbmQgZm9udCBmb3IgIi5jb25jYXQodCkpO2lmKGkuZm9udE1hdHJpeD1yLmZvbnRNYXRyaXh8fG4uRk9OVF9JREVOVElUWV9NQVRSSVgsMCE9PWkuZm9udE1hdHJpeFswXSYmMCE9PWkuZm9udE1hdHJpeFszXXx8KDAsbi53YXJuKSgiSW52YWxpZCBmb250IG1hdHJpeCBmb3IgZm9udCAiK3QpLGU8MD8oZT0tZSxpLmZvbnREaXJlY3Rpb249LTEpOmkuZm9udERpcmVjdGlvbj0xLHRoaXMuY3VycmVudC5mb250PXIsdGhpcy5jdXJyZW50LmZvbnRTaXplPWUsIXIuaXNUeXBlM0ZvbnQpe3ZhciBhPXIubG9hZGVkTmFtZXx8InNhbnMtc2VyaWYiLG89Im5vcm1hbCI7ci5ibGFjaz9vPSI5MDAiOnIuYm9sZCYmKG89ImJvbGQiKTt2YXIgcz1yLml0YWxpYz8iaXRhbGljIjoibm9ybWFsIixsPSciJy5jb25jYXQoYSwnIiwgJykuY29uY2F0KHIuZmFsbGJhY2tOYW1lKSx1PWU7ZTwxNj91PTE2OmU+MTAwJiYodT0xMDApLHRoaXMuY3VycmVudC5mb250U2l6ZVNjYWxlPWUvdSx0aGlzLmN0eC5mb250PSIiLmNvbmNhdChzLCIgIikuY29uY2F0KG8sIiAiKS5jb25jYXQodSwicHggIikuY29uY2F0KGwpfX19LHtrZXk6InNldFRleHRSZW5kZXJpbmdNb2RlIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLmN1cnJlbnQudGV4dFJlbmRlcmluZ01vZGU9dH19LHtrZXk6InNldFRleHRSaXNlIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLmN1cnJlbnQudGV4dFJpc2U9dH19LHtrZXk6Im1vdmVUZXh0Iix2YWx1ZTpmdW5jdGlvbih0LGUpe3RoaXMuY3VycmVudC54PXRoaXMuY3VycmVudC5saW5lWCs9dCx0aGlzLmN1cnJlbnQueT10aGlzLmN1cnJlbnQubGluZVkrPWV9fSx7a2V5OiJzZXRMZWFkaW5nTW92ZVRleHQiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dGhpcy5zZXRMZWFkaW5nKC1lKSx0aGlzLm1vdmVUZXh0KHQsZSl9fSx7a2V5OiJzZXRUZXh0TWF0cml4Iix2YWx1ZTpmdW5jdGlvbih0LGUscixuLGksYSl7dGhpcy5jdXJyZW50LnRleHRNYXRyaXg9W3QsZSxyLG4saSxhXSx0aGlzLmN1cnJlbnQudGV4dE1hdHJpeFNjYWxlPU1hdGguaHlwb3QodCxlKSx0aGlzLmN1cnJlbnQueD10aGlzLmN1cnJlbnQubGluZVg9MCx0aGlzLmN1cnJlbnQueT10aGlzLmN1cnJlbnQubGluZVk9MH19LHtrZXk6Im5leHRMaW5lIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMubW92ZVRleHQoMCx0aGlzLmN1cnJlbnQubGVhZGluZyl9fSx7a2V5OiJwYWludENoYXIiLHZhbHVlOmZ1bmN0aW9uKHQsZSxyLGEpe3ZhciBvLHM9dGhpcy5jdHgsdT10aGlzLmN1cnJlbnQsYz11LmZvbnQsaD11LnRleHRSZW5kZXJpbmdNb2RlLGY9dS5mb250U2l6ZS91LmZvbnRTaXplU2NhbGUsZD1oJm4uVGV4dFJlbmRlcmluZ01vZGUuRklMTF9TVFJPS0VfTUFTSyxwPSEhKGgmbi5UZXh0UmVuZGVyaW5nTW9kZS5BRERfVE9fUEFUSF9GTEFHKSx2PXUucGF0dGVybkZpbGwmJiFjLm1pc3NpbmdGaWxlOyhjLmRpc2FibGVGb250RmFjZXx8cHx8dikmJihvPWMuZ2V0UGF0aEdlbmVyYXRvcih0aGlzLmNvbW1vbk9ianMsdCkpLGMuZGlzYWJsZUZvbnRGYWNlfHx2PyhzLnNhdmUoKSxzLnRyYW5zbGF0ZShlLHIpLHMuYmVnaW5QYXRoKCksbyhzLGYpLGEmJnMuc2V0VHJhbnNmb3JtLmFwcGx5KHMsbChhKSksZCE9PW4uVGV4dFJlbmRlcmluZ01vZGUuRklMTCYmZCE9PW4uVGV4dFJlbmRlcmluZ01vZGUuRklMTF9TVFJPS0V8fHMuZmlsbCgpLGQhPT1uLlRleHRSZW5kZXJpbmdNb2RlLlNUUk9LRSYmZCE9PW4uVGV4dFJlbmRlcmluZ01vZGUuRklMTF9TVFJPS0V8fHMuc3Ryb2tlKCkscy5yZXN0b3JlKCkpOihkIT09bi5UZXh0UmVuZGVyaW5nTW9kZS5GSUxMJiZkIT09bi5UZXh0UmVuZGVyaW5nTW9kZS5GSUxMX1NUUk9LRXx8cy5maWxsVGV4dCh0LGUsciksZCE9PW4uVGV4dFJlbmRlcmluZ01vZGUuU1RST0tFJiZkIT09bi5UZXh0UmVuZGVyaW5nTW9kZS5GSUxMX1NUUk9LRXx8cy5zdHJva2VUZXh0KHQsZSxyKSkscCYmKHRoaXMucGVuZGluZ1RleHRQYXRoc3x8KHRoaXMucGVuZGluZ1RleHRQYXRocz1bXSkpLnB1c2goe3RyYW5zZm9ybTooMCxpLmdldEN1cnJlbnRUcmFuc2Zvcm0pKHMpLHg6ZSx5OnIsZm9udFNpemU6ZixhZGRUb1BhdGg6b30pfX0se2tleToiaXNGb250U3VicGl4ZWxBQUVuYWJsZWQiLGdldDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuY2FjaGVkQ2FudmFzZXMuZ2V0Q2FudmFzKCJpc0ZvbnRTdWJwaXhlbEFBRW5hYmxlZCIsMTAsMTApLmNvbnRleHQ7dC5zY2FsZSgxLjUsMSksdC5maWxsVGV4dCgiSSIsMCwxMCk7Zm9yKHZhciBlPXQuZ2V0SW1hZ2VEYXRhKDAsMCwxMCwxMCkuZGF0YSxyPSExLGk9MztpPGUubGVuZ3RoO2krPTQpaWYoZVtpXT4wJiZlW2ldPDI1NSl7cj0hMDticmVha31yZXR1cm4oMCxuLnNoYWRvdykodGhpcywiaXNGb250U3VicGl4ZWxBQUVuYWJsZWQiLHIpfX0se2tleToic2hvd1RleHQiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuY3VycmVudCxyPWUuZm9udDtpZihyLmlzVHlwZTNGb250KXJldHVybiB0aGlzLnNob3dUeXBlM1RleHQodCk7dmFyIG89ZS5mb250U2l6ZTtpZigwIT09byl7dmFyIHMsdT10aGlzLmN0eCxoPWUuZm9udFNpemVTY2FsZSxmPWUuY2hhclNwYWNpbmcsZD1lLndvcmRTcGFjaW5nLHA9ZS5mb250RGlyZWN0aW9uLHY9ZS50ZXh0SFNjYWxlKnAseT10Lmxlbmd0aCxtPXIudmVydGljYWwsZz1tPzE6LTEsYj1yLmRlZmF1bHRWTWV0cmljcyxfPW8qZS5mb250TWF0cml4WzBdLHc9ZS50ZXh0UmVuZGVyaW5nTW9kZT09PW4uVGV4dFJlbmRlcmluZ01vZGUuRklMTCYmIXIuZGlzYWJsZUZvbnRGYWNlJiYhZS5wYXR0ZXJuRmlsbDtpZih1LnNhdmUoKSx1LnRyYW5zZm9ybS5hcHBseSh1LGwoZS50ZXh0TWF0cml4KSksdS50cmFuc2xhdGUoZS54LGUueStlLnRleHRSaXNlKSxwPjA/dS5zY2FsZSh2LC0xKTp1LnNjYWxlKHYsMSksZS5wYXR0ZXJuRmlsbCl7dS5zYXZlKCk7dmFyIEE9ZS5maWxsQ29sb3IuZ2V0UGF0dGVybih1LHRoaXMsKDAsaS5nZXRDdXJyZW50VHJhbnNmb3JtSW52ZXJzZSkodSksYS5QYXRoVHlwZS5GSUxMKTtzPSgwLGkuZ2V0Q3VycmVudFRyYW5zZm9ybSkodSksdS5yZXN0b3JlKCksdS5maWxsU3R5bGU9QX12YXIgaz1lLmxpbmVXaWR0aCxTPWUudGV4dE1hdHJpeFNjYWxlO2lmKDA9PT1TfHwwPT09ayl7dmFyIHg9ZS50ZXh0UmVuZGVyaW5nTW9kZSZuLlRleHRSZW5kZXJpbmdNb2RlLkZJTExfU1RST0tFX01BU0s7eCE9PW4uVGV4dFJlbmRlcmluZ01vZGUuU1RST0tFJiZ4IT09bi5UZXh0UmVuZGVyaW5nTW9kZS5GSUxMX1NUUk9LRXx8KGs9dGhpcy5nZXRTaW5nbGVQaXhlbFdpZHRoKCkpfWVsc2Ugay89UztpZigxIT09aCYmKHUuc2NhbGUoaCxoKSxrLz1oKSx1LmxpbmVXaWR0aD1rLHIuaXNJbnZhbGlkUERGanNGb250KXt2YXIgRSxQPVtdLFQ9MCxDPWModCk7dHJ5e2ZvcihDLnMoKTshKEU9Qy5uKCkpLmRvbmU7KXt2YXIgTz1FLnZhbHVlO1AucHVzaChPLnVuaWNvZGUpLFQrPU8ud2lkdGh9fWNhdGNoKHQpe0MuZSh0KX1maW5hbGx5e0MuZigpfXJldHVybiB1LmZpbGxUZXh0KFAuam9pbigiIiksMCwwKSxlLngrPVQqXyp2LHUucmVzdG9yZSgpLHZvaWQgdGhpcy5jb21wb3NlKCl9dmFyIEYsTT0wO2ZvcihGPTA7Rjx5OysrRil7dmFyIFI9dFtGXTtpZigibnVtYmVyIiE9dHlwZW9mIFIpe3ZhciBJPSExLGo9KFIuaXNTcGFjZT9kOjApK2YsTD1SLmZvbnRDaGFyLEQ9Ui5hY2NlbnQsTj12b2lkIDAsVT12b2lkIDAsVz1SLndpZHRoO2lmKG0pe3ZhciBHPVIudm1ldHJpY3x8YixCPS0oUi52bWV0cmljP0dbMV06LjUqVykqXyxxPUdbMl0qXztXPUc/LUdbMF06VyxOPUIvaCxVPShNK3EpL2h9ZWxzZSBOPU0vaCxVPTA7aWYoci5yZW1lYXN1cmUmJlc+MCl7dmFyIEg9MWUzKnUubWVhc3VyZVRleHQoTCkud2lkdGgvbypoO2lmKFc8SCYmdGhpcy5pc0ZvbnRTdWJwaXhlbEFBRW5hYmxlZCl7dmFyIHo9Vy9IO0k9ITAsdS5zYXZlKCksdS5zY2FsZSh6LDEpLE4vPXp9ZWxzZSBXIT09SCYmKE4rPShXLUgpLzJlMypvL2gpfWlmKHRoaXMuY29udGVudFZpc2libGUmJihSLmlzSW5Gb250fHxyLm1pc3NpbmdGaWxlKSlpZih3JiYhRCl1LmZpbGxUZXh0KEwsTixVKTtlbHNlIGlmKHRoaXMucGFpbnRDaGFyKEwsTixVLHMpLEQpe3ZhciBWPU4rbypELm9mZnNldC54L2gsWD1VLW8qRC5vZmZzZXQueS9oO3RoaXMucGFpbnRDaGFyKEQuZm9udENoYXIsVixYLHMpfU0rPW0/VypfLWoqcDpXKl8raipwLEkmJnUucmVzdG9yZSgpfWVsc2UgTSs9ZypSKm8vMWUzfW0/ZS55LT1NOmUueCs9TSp2LHUucmVzdG9yZSgpLHRoaXMuY29tcG9zZSgpfX19LHtrZXk6InNob3dUeXBlM1RleHQiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlLHIsaSxhLG89dGhpcy5jdHgscz10aGlzLmN1cnJlbnQsdT1zLmZvbnQsYz1zLmZvbnRTaXplLGg9cy5mb250RGlyZWN0aW9uLGY9dS52ZXJ0aWNhbD8xOi0xLGQ9cy5jaGFyU3BhY2luZyxwPXMud29yZFNwYWNpbmcsdj1zLnRleHRIU2NhbGUqaCx5PXMuZm9udE1hdHJpeHx8bi5GT05UX0lERU5USVRZX01BVFJJWCxtPXQubGVuZ3RoO2lmKHMudGV4dFJlbmRlcmluZ01vZGUhPT1uLlRleHRSZW5kZXJpbmdNb2RlLklOVklTSUJMRSYmMCE9PWMpe2Zvcih0aGlzLl9jYWNoZWRTY2FsZUZvclN0cm9raW5nPW51bGwsdGhpcy5fY2FjaGVkR2V0U2luZ2xlUGl4ZWxXaWR0aD1udWxsLG8uc2F2ZSgpLG8udHJhbnNmb3JtLmFwcGx5KG8sbChzLnRleHRNYXRyaXgpKSxvLnRyYW5zbGF0ZShzLngscy55KSxvLnNjYWxlKHYsaCksZT0wO2U8bTsrK2UpaWYoIm51bWJlciIhPXR5cGVvZihyPXRbZV0pKXt2YXIgZz0oci5pc1NwYWNlP3A6MCkrZCxiPXUuY2hhclByb2NPcGVyYXRvckxpc3Rbci5vcGVyYXRvckxpc3RJZF07Yj8odGhpcy5jb250ZW50VmlzaWJsZSYmKHRoaXMucHJvY2Vzc2luZ1R5cGUzPXIsdGhpcy5zYXZlKCksby5zY2FsZShjLGMpLG8udHJhbnNmb3JtLmFwcGx5KG8sbCh5KSksdGhpcy5leGVjdXRlT3BlcmF0b3JMaXN0KGIpLHRoaXMucmVzdG9yZSgpKSxpPW4uVXRpbC5hcHBseVRyYW5zZm9ybShbci53aWR0aCwwXSx5KVswXSpjK2csby50cmFuc2xhdGUoaSwwKSxzLngrPWkqdik6KDAsbi53YXJuKSgnVHlwZTMgY2hhcmFjdGVyICInLmNvbmNhdChyLm9wZXJhdG9yTGlzdElkLCciIGlzIG5vdCBhdmFpbGFibGUuJykpfWVsc2UgYT1mKnIqYy8xZTMsdGhpcy5jdHgudHJhbnNsYXRlKGEsMCkscy54Kz1hKnY7by5yZXN0b3JlKCksdGhpcy5wcm9jZXNzaW5nVHlwZTM9bnVsbH19fSx7a2V5OiJzZXRDaGFyV2lkdGgiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7fX0se2tleToic2V0Q2hhcldpZHRoQW5kQm91bmRzIix2YWx1ZTpmdW5jdGlvbih0LGUscixuLGksYSl7dGhpcy5jdHgucmVjdChyLG4saS1yLGEtbiksdGhpcy5jdHguY2xpcCgpLHRoaXMuZW5kUGF0aCgpfX0se2tleToiZ2V0Q29sb3JOX1BhdHRlcm4iLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciByLG49dGhpcztpZigiVGlsaW5nUGF0dGVybiI9PT1lWzBdKXt2YXIgbz1lWzFdLHM9dGhpcy5iYXNlVHJhbnNmb3JtfHwoMCxpLmdldEN1cnJlbnRUcmFuc2Zvcm0pKHRoaXMuY3R4KSxsPXtjcmVhdGVDYW52YXNHcmFwaGljczpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IHQoZSxuLmNvbW1vbk9ianMsbi5vYmpzLG4uY2FudmFzRmFjdG9yeSx7b3B0aW9uYWxDb250ZW50Q29uZmlnOm4ub3B0aW9uYWxDb250ZW50Q29uZmlnLG1hcmtlZENvbnRlbnRTdGFjazpuLm1hcmtlZENvbnRlbnRTdGFja30pfX07cj1uZXcgYS5UaWxpbmdQYXR0ZXJuKGUsbyx0aGlzLmN0eCxsLHMpfWVsc2Ugcj10aGlzLl9nZXRQYXR0ZXJuKGVbMV0sZVsyXSk7cmV0dXJuIHJ9fSx7a2V5OiJzZXRTdHJva2VDb2xvck4iLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5jdXJyZW50LnN0cm9rZUNvbG9yPXRoaXMuZ2V0Q29sb3JOX1BhdHRlcm4oYXJndW1lbnRzKX19LHtrZXk6InNldEZpbGxDb2xvck4iLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5jdXJyZW50LmZpbGxDb2xvcj10aGlzLmdldENvbG9yTl9QYXR0ZXJuKGFyZ3VtZW50cyksdGhpcy5jdXJyZW50LnBhdHRlcm5GaWxsPSEwfX0se2tleToic2V0U3Ryb2tlUkdCQ29sb3IiLHZhbHVlOmZ1bmN0aW9uKHQsZSxyKXt2YXIgaSxhPShudWxsPT09KGk9dGhpcy5zZWxlY3RDb2xvcil8fHZvaWQgMD09PWk/dm9pZCAwOmkuY2FsbCh0aGlzLHQsZSxyKSl8fG4uVXRpbC5tYWtlSGV4Q29sb3IodCxlLHIpO3RoaXMuY3R4LnN0cm9rZVN0eWxlPWEsdGhpcy5jdXJyZW50LnN0cm9rZUNvbG9yPWF9fSx7a2V5OiJzZXRGaWxsUkdCQ29sb3IiLHZhbHVlOmZ1bmN0aW9uKHQsZSxyKXt2YXIgaSxhPShudWxsPT09KGk9dGhpcy5zZWxlY3RDb2xvcil8fHZvaWQgMD09PWk/dm9pZCAwOmkuY2FsbCh0aGlzLHQsZSxyKSl8fG4uVXRpbC5tYWtlSGV4Q29sb3IodCxlLHIpO3RoaXMuY3R4LmZpbGxTdHlsZT1hLHRoaXMuY3VycmVudC5maWxsQ29sb3I9YSx0aGlzLmN1cnJlbnQucGF0dGVybkZpbGw9ITF9fSx7a2V5OiJfZ2V0UGF0dGVybiIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUscj1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06bnVsbDtyZXR1cm4gdGhpcy5jYWNoZWRQYXR0ZXJucy5oYXModCk/ZT10aGlzLmNhY2hlZFBhdHRlcm5zLmdldCh0KTooZT0oMCxhLmdldFNoYWRpbmdQYXR0ZXJuKSh0aGlzLm9ianMuZ2V0KHQpKSx0aGlzLmNhY2hlZFBhdHRlcm5zLnNldCh0LGUpKSxyJiYoZS5tYXRyaXg9ciksZX19LHtrZXk6InNoYWRpbmdGaWxsIix2YWx1ZTpmdW5jdGlvbih0KXtpZih0aGlzLmNvbnRlbnRWaXNpYmxlKXt2YXIgZT10aGlzLmN0eDt0aGlzLnNhdmUoKTt2YXIgcj10aGlzLl9nZXRQYXR0ZXJuKHQpO2UuZmlsbFN0eWxlPXIuZ2V0UGF0dGVybihlLHRoaXMsKDAsaS5nZXRDdXJyZW50VHJhbnNmb3JtSW52ZXJzZSkoZSksYS5QYXRoVHlwZS5TSEFESU5HKTt2YXIgbz0oMCxpLmdldEN1cnJlbnRUcmFuc2Zvcm1JbnZlcnNlKShlKTtpZihvKXt2YXIgcz1lLmNhbnZhcyxsPXMud2lkdGgsdT1zLmhlaWdodCxjPW4uVXRpbC5hcHBseVRyYW5zZm9ybShbMCwwXSxvKSxoPW4uVXRpbC5hcHBseVRyYW5zZm9ybShbMCx1XSxvKSxmPW4uVXRpbC5hcHBseVRyYW5zZm9ybShbbCwwXSxvKSxkPW4uVXRpbC5hcHBseVRyYW5zZm9ybShbbCx1XSxvKSxwPU1hdGgubWluKGNbMF0saFswXSxmWzBdLGRbMF0pLHY9TWF0aC5taW4oY1sxXSxoWzFdLGZbMV0sZFsxXSkseT1NYXRoLm1heChjWzBdLGhbMF0sZlswXSxkWzBdKSxtPU1hdGgubWF4KGNbMV0saFsxXSxmWzFdLGRbMV0pO3RoaXMuY3R4LmZpbGxSZWN0KHAsdix5LXAsbS12KX1lbHNlIHRoaXMuY3R4LmZpbGxSZWN0KC0xZTEwLC0xZTEwLDJlMTAsMmUxMCk7dGhpcy5jb21wb3NlKHRoaXMuY3VycmVudC5nZXRDbGlwcGVkUGF0aEJvdW5kaW5nQm94KCkpLHRoaXMucmVzdG9yZSgpfX19LHtrZXk6ImJlZ2luSW5saW5lSW1hZ2UiLHZhbHVlOmZ1bmN0aW9uKCl7KDAsbi51bnJlYWNoYWJsZSkoIlNob3VsZCBub3QgY2FsbCBiZWdpbklubGluZUltYWdlIil9fSx7a2V5OiJiZWdpbkltYWdlRGF0YSIsdmFsdWU6ZnVuY3Rpb24oKXsoMCxuLnVucmVhY2hhYmxlKSgiU2hvdWxkIG5vdCBjYWxsIGJlZ2luSW1hZ2VEYXRhIil9fSx7a2V5OiJwYWludEZvcm1YT2JqZWN0QmVnaW4iLHZhbHVlOmZ1bmN0aW9uKHQsZSl7aWYodGhpcy5jb250ZW50VmlzaWJsZSYmKHRoaXMuc2F2ZSgpLHRoaXMuYmFzZVRyYW5zZm9ybVN0YWNrLnB1c2godGhpcy5iYXNlVHJhbnNmb3JtKSxBcnJheS5pc0FycmF5KHQpJiY2PT09dC5sZW5ndGgmJnRoaXMudHJhbnNmb3JtLmFwcGx5KHRoaXMsbCh0KSksdGhpcy5iYXNlVHJhbnNmb3JtPSgwLGkuZ2V0Q3VycmVudFRyYW5zZm9ybSkodGhpcy5jdHgpLGUpKXt2YXIgcj1lWzJdLWVbMF0sbj1lWzNdLWVbMV07dGhpcy5jdHgucmVjdChlWzBdLGVbMV0scixuKSx0aGlzLmN1cnJlbnQudXBkYXRlUmVjdE1pbk1heCgoMCxpLmdldEN1cnJlbnRUcmFuc2Zvcm0pKHRoaXMuY3R4KSxlKSx0aGlzLmNsaXAoKSx0aGlzLmVuZFBhdGgoKX19fSx7a2V5OiJwYWludEZvcm1YT2JqZWN0RW5kIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuY29udGVudFZpc2libGUmJih0aGlzLnJlc3RvcmUoKSx0aGlzLmJhc2VUcmFuc2Zvcm09dGhpcy5iYXNlVHJhbnNmb3JtU3RhY2sucG9wKCkpfX0se2tleToiYmVnaW5Hcm91cCIsdmFsdWU6ZnVuY3Rpb24odCl7aWYodGhpcy5jb250ZW50VmlzaWJsZSl7dGhpcy5zYXZlKCksdGhpcy5pblNNYXNrTW9kZSYmKHRoaXMuZW5kU01hc2tNb2RlKCksdGhpcy5jdXJyZW50LmFjdGl2ZVNNYXNrPW51bGwpO3ZhciBlPXRoaXMuY3R4O3QuaXNvbGF0ZWR8fCgwLG4uaW5mbykoIlRPRE86IFN1cHBvcnQgbm9uLWlzb2xhdGVkIGdyb3Vwcy4iKSx0Lmtub2Nrb3V0JiYoMCxuLndhcm4pKCJLbm9ja291dCBncm91cHMgbm90IHN1cHBvcnRlZC4iKTt2YXIgcj0oMCxpLmdldEN1cnJlbnRUcmFuc2Zvcm0pKGUpO2lmKHQubWF0cml4JiZlLnRyYW5zZm9ybS5hcHBseShlLGwodC5tYXRyaXgpKSwhdC5iYm94KXRocm93IG5ldyBFcnJvcigiQm91bmRpbmcgYm94IGlzIHJlcXVpcmVkLiIpO3ZhciBhPW4uVXRpbC5nZXRBeGlhbEFsaWduZWRCb3VuZGluZ0JveCh0LmJib3gsKDAsaS5nZXRDdXJyZW50VHJhbnNmb3JtKShlKSksbz1bMCwwLGUuY2FudmFzLndpZHRoLGUuY2FudmFzLmhlaWdodF07YT1uLlV0aWwuaW50ZXJzZWN0KGEsbyl8fFswLDAsMCwwXTt2YXIgcz1NYXRoLmZsb29yKGFbMF0pLHU9TWF0aC5mbG9vcihhWzFdKSxjPU1hdGgubWF4KE1hdGguY2VpbChhWzJdKS1zLDEpLGg9TWF0aC5tYXgoTWF0aC5jZWlsKGFbM10pLXUsMSksZj0xLGQ9MTtjPmcmJihmPWMvZyxjPWcpLGg+ZyYmKGQ9aC9nLGg9ZyksdGhpcy5jdXJyZW50LnN0YXJ0TmV3UGF0aEFuZENsaXBCb3goWzAsMCxjLGhdKTt2YXIgcD0iZ3JvdXBBdCIrdGhpcy5ncm91cExldmVsO3Quc21hc2smJihwKz0iX3NtYXNrXyIrdGhpcy5zbWFza0NvdW50ZXIrKyUyKTt2YXIgdj10aGlzLmNhY2hlZENhbnZhc2VzLmdldENhbnZhcyhwLGMsaCkseT12LmNvbnRleHQ7eS5zY2FsZSgxL2YsMS9kKSx5LnRyYW5zbGF0ZSgtcywtdSkseS50cmFuc2Zvcm0uYXBwbHkoeSxsKHIpKSx0LnNtYXNrP3RoaXMuc21hc2tTdGFjay5wdXNoKHtjYW52YXM6di5jYW52YXMsY29udGV4dDp5LG9mZnNldFg6cyxvZmZzZXRZOnUsc2NhbGVYOmYsc2NhbGVZOmQsc3VidHlwZTp0LnNtYXNrLnN1YnR5cGUsYmFja2Ryb3A6dC5zbWFzay5iYWNrZHJvcCx0cmFuc2Zlck1hcDp0LnNtYXNrLnRyYW5zZmVyTWFwfHxudWxsLHN0YXJ0VHJhbnNmb3JtSW52ZXJzZTpudWxsfSk6KGUuc2V0VHJhbnNmb3JtKDEsMCwwLDEsMCwwKSxlLnRyYW5zbGF0ZShzLHUpLGUuc2NhbGUoZixkKSxlLnNhdmUoKSksRShlLHkpLHRoaXMuY3R4PXksdGhpcy5zZXRHU3RhdGUoW1siQk0iLCJzb3VyY2Utb3ZlciJdLFsiY2EiLDFdLFsiQ0EiLDFdXSksdGhpcy5ncm91cFN0YWNrLnB1c2goZSksdGhpcy5ncm91cExldmVsKyt9fX0se2tleToiZW5kR3JvdXAiLHZhbHVlOmZ1bmN0aW9uKHQpe2lmKHRoaXMuY29udGVudFZpc2libGUpe3RoaXMuZ3JvdXBMZXZlbC0tO3ZhciBlPXRoaXMuY3R4LHI9dGhpcy5ncm91cFN0YWNrLnBvcCgpO2lmKHRoaXMuY3R4PXIsdGhpcy5jdHguaW1hZ2VTbW9vdGhpbmdFbmFibGVkPSExLHQuc21hc2spdGhpcy50ZW1wU01hc2s9dGhpcy5zbWFza1N0YWNrLnBvcCgpLHRoaXMucmVzdG9yZSgpO2Vsc2V7dmFyIGE7dGhpcy5jdHgucmVzdG9yZSgpO3ZhciBvPSgwLGkuZ2V0Q3VycmVudFRyYW5zZm9ybSkodGhpcy5jdHgpO3RoaXMucmVzdG9yZSgpLHRoaXMuY3R4LnNhdmUoKSwoYT10aGlzLmN0eCkuc2V0VHJhbnNmb3JtLmFwcGx5KGEsbChvKSk7dmFyIHM9bi5VdGlsLmdldEF4aWFsQWxpZ25lZEJvdW5kaW5nQm94KFswLDAsZS5jYW52YXMud2lkdGgsZS5jYW52YXMuaGVpZ2h0XSxvKTt0aGlzLmN0eC5kcmF3SW1hZ2UoZS5jYW52YXMsMCwwKSx0aGlzLmN0eC5yZXN0b3JlKCksdGhpcy5jb21wb3NlKHMpfX19fSx7a2V5OiJiZWdpbkFubm90YXRpb24iLHZhbHVlOmZ1bmN0aW9uKHQsZSxyLGEsbyl7dmFyIHM7aWYodSh0aGlzLEwsTikuY2FsbCh0aGlzKSxQKHRoaXMuY3R4LHRoaXMuZm9yZWdyb3VuZENvbG9yKSx0aGlzLmN0eC5zYXZlKCksdGhpcy5zYXZlKCksdGhpcy5iYXNlVHJhbnNmb3JtJiYocz10aGlzLmN0eCkuc2V0VHJhbnNmb3JtLmFwcGx5KHMsbCh0aGlzLmJhc2VUcmFuc2Zvcm0pKSxBcnJheS5pc0FycmF5KGUpJiY0PT09ZS5sZW5ndGgpe3ZhciBjPWVbMl0tZVswXSxmPWVbM10tZVsxXTtpZihvJiZ0aGlzLmFubm90YXRpb25DYW52YXNNYXApeyhyPXIuc2xpY2UoKSlbNF0tPWVbMF0scls1XS09ZVsxXSwoZT1lLnNsaWNlKCkpWzBdPWVbMV09MCxlWzJdPWMsZVszXT1mO3ZhciBkPWgobi5VdGlsLnNpbmd1bGFyVmFsdWVEZWNvbXBvc2UyZFNjYWxlKCgwLGkuZ2V0Q3VycmVudFRyYW5zZm9ybSkodGhpcy5jdHgpKSwyKSxwPWRbMF0sdj1kWzFdLHk9dGhpcy52aWV3cG9ydFNjYWxlLG09TWF0aC5jZWlsKGMqdGhpcy5vdXRwdXRTY2FsZVgqeSksZz1NYXRoLmNlaWwoZip0aGlzLm91dHB1dFNjYWxlWSp5KTt0aGlzLmFubm90YXRpb25DYW52YXM9dGhpcy5jYW52YXNGYWN0b3J5LmNyZWF0ZShtLGcpO3ZhciBiPXRoaXMuYW5ub3RhdGlvbkNhbnZhcyxfPWIuY2FudmFzLHc9Yi5jb250ZXh0O3RoaXMuYW5ub3RhdGlvbkNhbnZhc01hcC5zZXQodCxfKSx0aGlzLmFubm90YXRpb25DYW52YXMuc2F2ZWRDdHg9dGhpcy5jdHgsdGhpcy5jdHg9dyx0aGlzLmN0eC5zZXRUcmFuc2Zvcm0ocCwwLDAsLXYsMCxmKnYpLFAodGhpcy5jdHgsdGhpcy5mb3JlZ3JvdW5kQ29sb3IpfWVsc2UgUCh0aGlzLmN0eCx0aGlzLmZvcmVncm91bmRDb2xvciksdGhpcy5jdHgucmVjdChlWzBdLGVbMV0sYyxmKSx0aGlzLmN0eC5jbGlwKCksdGhpcy5lbmRQYXRoKCl9dGhpcy5jdXJyZW50PW5ldyBrKHRoaXMuY3R4LmNhbnZhcy53aWR0aCx0aGlzLmN0eC5jYW52YXMuaGVpZ2h0KSx0aGlzLnRyYW5zZm9ybS5hcHBseSh0aGlzLGwocikpLHRoaXMudHJhbnNmb3JtLmFwcGx5KHRoaXMsbChhKSl9fSx7a2V5OiJlbmRBbm5vdGF0aW9uIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuYW5ub3RhdGlvbkNhbnZhcyYmKHRoaXMuY3R4PXRoaXMuYW5ub3RhdGlvbkNhbnZhcy5zYXZlZEN0eCxkZWxldGUgdGhpcy5hbm5vdGF0aW9uQ2FudmFzLnNhdmVkQ3R4LGRlbGV0ZSB0aGlzLmFubm90YXRpb25DYW52YXMpfX0se2tleToicGFpbnRJbWFnZU1hc2tYT2JqZWN0Iix2YWx1ZTpmdW5jdGlvbih0KXtpZih0aGlzLmNvbnRlbnRWaXNpYmxlKXt2YXIgZT10LmNvdW50Oyh0PXRoaXMuZ2V0T2JqZWN0KHQuZGF0YSx0KSkuY291bnQ9ZTt2YXIgcj10aGlzLmN0eCxuPXRoaXMucHJvY2Vzc2luZ1R5cGUzO2lmKG4mJih2b2lkIDA9PT1uLmNvbXBpbGVkJiYobi5jb21waWxlZD1mdW5jdGlvbih0KXt2YXIgZT10LndpZHRoLHI9dC5oZWlnaHQ7aWYoZT5ifHxyPmIpcmV0dXJuIG51bGw7dmFyIG4saSxhLG8scz1uZXcgVWludDhBcnJheShbMCwyLDQsMCwxLDAsNSw0LDgsMTAsMCw4LDAsMiwxLDBdKSxsPWUrMSx1PW5ldyBVaW50OEFycmF5KGwqKHIrMSkpLGg9ZSs3Ji04LGY9bmV3IFVpbnQ4QXJyYXkoaCpyKSxkPTAscD1jKHQuZGF0YSk7dHJ5e2ZvcihwLnMoKTshKG89cC5uKCkpLmRvbmU7KWZvcih2YXIgdj1vLnZhbHVlLHk9MTI4O3k+MDspZltkKytdPXYmeT8wOjI1NSx5Pj49MX1jYXRjaCh0KXtwLmUodCl9ZmluYWxseXtwLmYoKX12YXIgbT0wO2ZvcigwIT09ZltkPTBdJiYodVswXT0xLCsrbSksaT0xO2k8ZTtpKyspZltkXSE9PWZbZCsxXSYmKHVbaV09ZltkXT8yOjEsKyttKSxkKys7Zm9yKDAhPT1mW2RdJiYodVtpXT0yLCsrbSksbj0xO248cjtuKyspe2E9bipsLGZbKGQ9bipoKS1oXSE9PWZbZF0mJih1W2FdPWZbZF0/MTo4LCsrbSk7dmFyIGc9KGZbZF0/NDowKSsoZltkLWhdPzg6MCk7Zm9yKGk9MTtpPGU7aSsrKXNbZz0oZz4+MikrKGZbZCsxXT80OjApKyhmW2QtaCsxXT84OjApXSYmKHVbYStpXT1zW2ddLCsrbSksZCsrO2lmKGZbZC1oXSE9PWZbZF0mJih1W2EraV09ZltkXT8yOjQsKyttKSxtPjFlMylyZXR1cm4gbnVsbH1mb3IoYT1uKmwsMCE9PWZbZD1oKihyLTEpXSYmKHVbYV09OCwrK20pLGk9MTtpPGU7aSsrKWZbZF0hPT1mW2QrMV0mJih1W2EraV09ZltkXT80OjgsKyttKSxkKys7aWYoMCE9PWZbZF0mJih1W2EraV09NCwrK20pLG0+MWUzKXJldHVybiBudWxsO3ZhciBfPW5ldyBJbnQzMkFycmF5KFswLGwsLTEsMCwtbCwwLDAsMCwxXSksdz1uZXcgUGF0aDJEO2ZvcihuPTA7bSYmbjw9cjtuKyspe2Zvcih2YXIgQT1uKmwsaz1BK2U7QTxrJiYhdVtBXTspQSsrO2lmKEEhPT1rKXt3Lm1vdmVUbyhBJWwsbik7dmFyIFM9QSx4PXVbQV07ZG97dmFyIEU9X1t4XTtkb3tBKz1FfXdoaWxlKCF1W0FdKTt2YXIgUD11W0FdOzUhPT1QJiYxMCE9PVA/KHg9UCx1W0FdPTApOih4PVAmNTEqeD4+NCx1W0FdJj14Pj4yfHg8PDIpLHcubGluZVRvKEElbCxBL2x8MCksdVtBXXx8LS1tfXdoaWxlKFMhPT1BKTstLW59fXJldHVybiBmPW51bGwsdT1udWxsLGZ1bmN0aW9uKHQpe3Quc2F2ZSgpLHQuc2NhbGUoMS9lLC0xL3IpLHQudHJhbnNsYXRlKDAsLXIpLHQuZmlsbCh3KSx0LmJlZ2luUGF0aCgpLHQucmVzdG9yZSgpfX0odCkpLG4uY29tcGlsZWQpKW4uY29tcGlsZWQocik7ZWxzZXt2YXIgaT10aGlzLl9jcmVhdGVNYXNrQ2FudmFzKHQpLGE9aS5jYW52YXM7ci5zYXZlKCksci5zZXRUcmFuc2Zvcm0oMSwwLDAsMSwwLDApLHIuZHJhd0ltYWdlKGEsaS5vZmZzZXRYLGkub2Zmc2V0WSksci5yZXN0b3JlKCksdGhpcy5jb21wb3NlKCl9fX19LHtrZXk6InBhaW50SW1hZ2VNYXNrWE9iamVjdFJlcGVhdCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgcj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06MCxhPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXTowLG89YXJndW1lbnRzLmxlbmd0aD40P2FyZ3VtZW50c1s0XTp2b2lkIDAscz1hcmd1bWVudHMubGVuZ3RoPjU/YXJndW1lbnRzWzVdOnZvaWQgMDtpZih0aGlzLmNvbnRlbnRWaXNpYmxlKXt0PXRoaXMuZ2V0T2JqZWN0KHQuZGF0YSx0KTt2YXIgbD10aGlzLmN0eDtsLnNhdmUoKTt2YXIgdT0oMCxpLmdldEN1cnJlbnRUcmFuc2Zvcm0pKGwpO2wudHJhbnNmb3JtKGUscixhLG8sMCwwKTt2YXIgYz10aGlzLl9jcmVhdGVNYXNrQ2FudmFzKHQpO2wuc2V0VHJhbnNmb3JtKDEsMCwwLDEsYy5vZmZzZXRYLXVbNF0sYy5vZmZzZXRZLXVbNV0pO2Zvcih2YXIgZj0wLGQ9cy5sZW5ndGg7ZjxkO2YrPTIpe3ZhciBwPW4uVXRpbC50cmFuc2Zvcm0odSxbZSxyLGEsbyxzW2ZdLHNbZisxXV0pLHY9aChuLlV0aWwuYXBwbHlUcmFuc2Zvcm0oWzAsMF0scCksMikseT12WzBdLG09dlsxXTtsLmRyYXdJbWFnZShjLmNhbnZhcyx5LG0pfWwucmVzdG9yZSgpLHRoaXMuY29tcG9zZSgpfX19LHtrZXk6InBhaW50SW1hZ2VNYXNrWE9iamVjdEdyb3VwIix2YWx1ZTpmdW5jdGlvbih0KXtpZih0aGlzLmNvbnRlbnRWaXNpYmxlKXt2YXIgZSxyPXRoaXMuY3R4LG49dGhpcy5jdXJyZW50LmZpbGxDb2xvcixvPXRoaXMuY3VycmVudC5wYXR0ZXJuRmlsbCxzPWModCk7dHJ5e2ZvcihzLnMoKTshKGU9cy5uKCkpLmRvbmU7KXt2YXIgdT1lLnZhbHVlLGg9dS5kYXRhLGY9dS53aWR0aCxkPXUuaGVpZ2h0LHA9dS50cmFuc2Zvcm0sdj10aGlzLmNhY2hlZENhbnZhc2VzLmdldENhbnZhcygibWFza0NhbnZhcyIsZixkKSx5PXYuY29udGV4dDt5LnNhdmUoKSx4KHksdGhpcy5nZXRPYmplY3QoaCx1KSkseS5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb249InNvdXJjZS1pbiIseS5maWxsU3R5bGU9bz9uLmdldFBhdHRlcm4oeSx0aGlzLCgwLGkuZ2V0Q3VycmVudFRyYW5zZm9ybUludmVyc2UpKHIpLGEuUGF0aFR5cGUuRklMTCk6bix5LmZpbGxSZWN0KDAsMCxmLGQpLHkucmVzdG9yZSgpLHIuc2F2ZSgpLHIudHJhbnNmb3JtLmFwcGx5KHIsbChwKSksci5zY2FsZSgxLC0xKSxBKHIsdi5jYW52YXMsMCwwLGYsZCwwLC0xLDEsMSksci5yZXN0b3JlKCl9fWNhdGNoKHQpe3MuZSh0KX1maW5hbGx5e3MuZigpfXRoaXMuY29tcG9zZSgpfX19LHtrZXk6InBhaW50SW1hZ2VYT2JqZWN0Iix2YWx1ZTpmdW5jdGlvbih0KXtpZih0aGlzLmNvbnRlbnRWaXNpYmxlKXt2YXIgZT10aGlzLmdldE9iamVjdCh0KTtlP3RoaXMucGFpbnRJbmxpbmVJbWFnZVhPYmplY3QoZSk6KDAsbi53YXJuKSgiRGVwZW5kZW50IGltYWdlIGlzbid0IHJlYWR5IHlldCIpfX19LHtrZXk6InBhaW50SW1hZ2VYT2JqZWN0UmVwZWF0Iix2YWx1ZTpmdW5jdGlvbih0LGUscixpKXtpZih0aGlzLmNvbnRlbnRWaXNpYmxlKXt2YXIgYT10aGlzLmdldE9iamVjdCh0KTtpZihhKXtmb3IodmFyIG89YS53aWR0aCxzPWEuaGVpZ2h0LGw9W10sdT0wLGM9aS5sZW5ndGg7dTxjO3UrPTIpbC5wdXNoKHt0cmFuc2Zvcm06W2UsMCwwLHIsaVt1XSxpW3UrMV1dLHg6MCx5OjAsdzpvLGg6c30pO3RoaXMucGFpbnRJbmxpbmVJbWFnZVhPYmplY3RHcm91cChhLGwpfWVsc2UoMCxuLndhcm4pKCJEZXBlbmRlbnQgaW1hZ2UgaXNuJ3QgcmVhZHkgeWV0Iil9fX0se2tleToicGFpbnRJbmxpbmVJbWFnZVhPYmplY3QiLHZhbHVlOmZ1bmN0aW9uKHQpe2lmKHRoaXMuY29udGVudFZpc2libGUpe3ZhciBlLHI9dC53aWR0aCxuPXQuaGVpZ2h0LGE9dGhpcy5jdHg7aWYodGhpcy5zYXZlKCksYS5zY2FsZSgxL3IsLTEvbiksImZ1bmN0aW9uIj09dHlwZW9mIEhUTUxFbGVtZW50JiZ0IGluc3RhbmNlb2YgSFRNTEVsZW1lbnR8fCF0LmRhdGEpZT10O2Vsc2V7dmFyIG89dGhpcy5jYWNoZWRDYW52YXNlcy5nZXRDYW52YXMoImlubGluZUltYWdlIixyLG4pO1Moby5jb250ZXh0LHQsdGhpcy5jdXJyZW50LnRyYW5zZmVyTWFwcyksZT1vLmNhbnZhc312YXIgcz10aGlzLl9zY2FsZUltYWdlKGUsKDAsaS5nZXRDdXJyZW50VHJhbnNmb3JtSW52ZXJzZSkoYSkpO2EuaW1hZ2VTbW9vdGhpbmdFbmFibGVkPUYoKDAsaS5nZXRDdXJyZW50VHJhbnNmb3JtKShhKSx0LmludGVycG9sYXRlKSxBKGEscy5pbWcsMCwwLHMucGFpbnRXaWR0aCxzLnBhaW50SGVpZ2h0LDAsLW4scixuKSx0aGlzLmNvbXBvc2UoKSx0aGlzLnJlc3RvcmUoKX19fSx7a2V5OiJwYWludElubGluZUltYWdlWE9iamVjdEdyb3VwIix2YWx1ZTpmdW5jdGlvbih0LGUpe2lmKHRoaXMuY29udGVudFZpc2libGUpe3ZhciByPXRoaXMuY3R4LG49dC53aWR0aCxpPXQuaGVpZ2h0LGE9dGhpcy5jYWNoZWRDYW52YXNlcy5nZXRDYW52YXMoImlubGluZUltYWdlIixuLGkpO1MoYS5jb250ZXh0LHQsdGhpcy5jdXJyZW50LnRyYW5zZmVyTWFwcyk7dmFyIG8scz1jKGUpO3RyeXtmb3Iocy5zKCk7IShvPXMubigpKS5kb25lOyl7dmFyIHU9by52YWx1ZTtyLnNhdmUoKSxyLnRyYW5zZm9ybS5hcHBseShyLGwodS50cmFuc2Zvcm0pKSxyLnNjYWxlKDEsLTEpLEEocixhLmNhbnZhcyx1LngsdS55LHUudyx1LmgsMCwtMSwxLDEpLHIucmVzdG9yZSgpfX1jYXRjaCh0KXtzLmUodCl9ZmluYWxseXtzLmYoKX10aGlzLmNvbXBvc2UoKX19fSx7a2V5OiJwYWludFNvbGlkQ29sb3JJbWFnZU1hc2siLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5jb250ZW50VmlzaWJsZSYmKHRoaXMuY3R4LmZpbGxSZWN0KDAsMCwxLDEpLHRoaXMuY29tcG9zZSgpKX19LHtrZXk6Im1hcmtQb2ludCIsdmFsdWU6ZnVuY3Rpb24odCl7fX0se2tleToibWFya1BvaW50UHJvcHMiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7fX0se2tleToiYmVnaW5NYXJrZWRDb250ZW50Iix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLm1hcmtlZENvbnRlbnRTdGFjay5wdXNoKHt2aXNpYmxlOiEwfSl9fSx7a2V5OiJiZWdpbk1hcmtlZENvbnRlbnRQcm9wcyIsdmFsdWU6ZnVuY3Rpb24odCxlKXsiT0MiPT09dD90aGlzLm1hcmtlZENvbnRlbnRTdGFjay5wdXNoKHt2aXNpYmxlOnRoaXMub3B0aW9uYWxDb250ZW50Q29uZmlnLmlzVmlzaWJsZShlKX0pOnRoaXMubWFya2VkQ29udGVudFN0YWNrLnB1c2goe3Zpc2libGU6ITB9KSx0aGlzLmNvbnRlbnRWaXNpYmxlPXRoaXMuaXNDb250ZW50VmlzaWJsZSgpfX0se2tleToiZW5kTWFya2VkQ29udGVudCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLm1hcmtlZENvbnRlbnRTdGFjay5wb3AoKSx0aGlzLmNvbnRlbnRWaXNpYmxlPXRoaXMuaXNDb250ZW50VmlzaWJsZSgpfX0se2tleToiYmVnaW5Db21wYXQiLHZhbHVlOmZ1bmN0aW9uKCl7fX0se2tleToiZW5kQ29tcGF0Iix2YWx1ZTpmdW5jdGlvbigpe319LHtrZXk6ImNvbnN1bWVQYXRoIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmN1cnJlbnQuaXNFbXB0eUNsaXAoKTt0aGlzLnBlbmRpbmdDbGlwJiZ0aGlzLmN1cnJlbnQudXBkYXRlQ2xpcEZyb21QYXRoKCksdGhpcy5wZW5kaW5nQ2xpcHx8dGhpcy5jb21wb3NlKHQpO3ZhciByPXRoaXMuY3R4O3RoaXMucGVuZGluZ0NsaXAmJihlfHwodGhpcy5wZW5kaW5nQ2xpcD09PWo/ci5jbGlwKCJldmVub2RkIik6ci5jbGlwKCkpLHRoaXMucGVuZGluZ0NsaXA9bnVsbCksdGhpcy5jdXJyZW50LnN0YXJ0TmV3UGF0aEFuZENsaXBCb3godGhpcy5jdXJyZW50LmNsaXBCb3gpLHIuYmVnaW5QYXRoKCl9fSx7a2V5OiJnZXRTaW5nbGVQaXhlbFdpZHRoIix2YWx1ZTpmdW5jdGlvbigpe2lmKCF0aGlzLl9jYWNoZWRHZXRTaW5nbGVQaXhlbFdpZHRoKXt2YXIgdD0oMCxpLmdldEN1cnJlbnRUcmFuc2Zvcm0pKHRoaXMuY3R4KTtpZigwPT09dFsxXSYmMD09PXRbMl0pdGhpcy5fY2FjaGVkR2V0U2luZ2xlUGl4ZWxXaWR0aD0xL01hdGgubWluKE1hdGguYWJzKHRbMF0pLE1hdGguYWJzKHRbM10pKTtlbHNle3ZhciBlPU1hdGguYWJzKHRbMF0qdFszXS10WzJdKnRbMV0pLHI9TWF0aC5oeXBvdCh0WzBdLHRbMl0pLG49TWF0aC5oeXBvdCh0WzFdLHRbM10pO3RoaXMuX2NhY2hlZEdldFNpbmdsZVBpeGVsV2lkdGg9TWF0aC5tYXgocixuKS9lfX1yZXR1cm4gdGhpcy5fY2FjaGVkR2V0U2luZ2xlUGl4ZWxXaWR0aH19LHtrZXk6ImdldFNjYWxlRm9yU3Ryb2tpbmciLHZhbHVlOmZ1bmN0aW9uKCl7aWYoIXRoaXMuX2NhY2hlZFNjYWxlRm9yU3Ryb2tpbmcpe3ZhciB0LGUscj10aGlzLmN1cnJlbnQubGluZVdpZHRoLG49KDAsaS5nZXRDdXJyZW50VHJhbnNmb3JtKSh0aGlzLmN0eCk7aWYoMD09PW5bMV0mJjA9PT1uWzJdKXt2YXIgYT1NYXRoLmFicyhuWzBdKSxvPU1hdGguYWJzKG5bM10pO2lmKDA9PT1yKXQ9MS9hLGU9MS9vO2Vsc2V7dmFyIHM9YSpyLGw9bypyO3Q9czwxPzEvczoxLGU9bDwxPzEvbDoxfX1lbHNle3ZhciB1PU1hdGguYWJzKG5bMF0qblszXS1uWzJdKm5bMV0pLGM9TWF0aC5oeXBvdChuWzBdLG5bMV0pLGg9TWF0aC5oeXBvdChuWzJdLG5bM10pO2lmKDA9PT1yKXQ9aC91LGU9Yy91O2Vsc2V7dmFyIGY9cip1O3Q9aD5mP2gvZjoxLGU9Yz5mP2MvZjoxfX10aGlzLl9jYWNoZWRTY2FsZUZvclN0cm9raW5nPVt0LGVdfXJldHVybiB0aGlzLl9jYWNoZWRTY2FsZUZvclN0cm9raW5nfX0se2tleToicmVzY2FsZUFuZFN0cm9rZSIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5jdHgscj10aGlzLmN1cnJlbnQubGluZVdpZHRoLG49aCh0aGlzLmdldFNjYWxlRm9yU3Ryb2tpbmcoKSwyKSxhPW5bMF0sbz1uWzFdO2lmKGUubGluZVdpZHRoPXJ8fDEsMSE9PWF8fDEhPT1vKXt2YXIgcyx1LGM7dCYmKHM9KDAsaS5nZXRDdXJyZW50VHJhbnNmb3JtKShlKSx1PWUuZ2V0TGluZURhc2goKS5zbGljZSgpLGM9ZS5saW5lRGFzaE9mZnNldCksZS5zY2FsZShhLG8pO3ZhciBmPU1hdGgubWF4KGEsbyk7ZS5zZXRMaW5lRGFzaChlLmdldExpbmVEYXNoKCkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC9mfSkpKSxlLmxpbmVEYXNoT2Zmc2V0Lz1mLGUuc3Ryb2tlKCksdCYmKGUuc2V0VHJhbnNmb3JtLmFwcGx5KGUsbChzKSksZS5zZXRMaW5lRGFzaCh1KSxlLmxpbmVEYXNoT2Zmc2V0PWMpfWVsc2UgZS5zdHJva2UoKX19LHtrZXk6ImlzQ29udGVudFZpc2libGUiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMubWFya2VkQ29udGVudFN0YWNrLmxlbmd0aC0xO3Q+PTA7dC0tKWlmKCF0aGlzLm1hcmtlZENvbnRlbnRTdGFja1t0XS52aXNpYmxlKXJldHVybiExO3JldHVybiEwfX1dKSx0fSgpO2Z1bmN0aW9uIE4oKXtmb3IoO3RoaXMuc3RhdGVTdGFjay5sZW5ndGh8fHRoaXMuaW5TTWFza01vZGU7KXRoaXMucmVzdG9yZSgpO3RoaXMuY3R4LnJlc3RvcmUoKSx0aGlzLnRyYW5zcGFyZW50Q2FudmFzJiYodGhpcy5jdHg9dGhpcy5jb21wb3NpdGVDdHgsdGhpcy5jdHguc2F2ZSgpLHRoaXMuY3R4LnNldFRyYW5zZm9ybSgxLDAsMCwxLDAsMCksdGhpcy5jdHguZHJhd0ltYWdlKHRoaXMudHJhbnNwYXJlbnRDYW52YXMsMCwwKSx0aGlzLmN0eC5yZXN0b3JlKCksdGhpcy50cmFuc3BhcmVudENhbnZhcz1udWxsKX1mb3IodmFyIFUgaW4gZS5DYW52YXNHcmFwaGljcz1ELG4uT1BTKXZvaWQgMCE9PUQucHJvdG90eXBlW1VdJiYoRC5wcm90b3R5cGVbbi5PUFNbVV1dPUQucHJvdG90eXBlW1VdKX0sKHQsZSxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxlLlRpbGluZ1BhdHRlcm49ZS5QYXRoVHlwZT12b2lkIDAsZS5nZXRTaGFkaW5nUGF0dGVybj1mdW5jdGlvbih0KXtzd2l0Y2godFswXSl7Y2FzZSJSYWRpYWxBeGlhbCI6cmV0dXJuIG5ldyB3KHQpO2Nhc2UiTWVzaCI6cmV0dXJuIG5ldyBTKHQpO2Nhc2UiRHVtbXkiOnJldHVybiBuZXcgeH10aHJvdyBuZXcgRXJyb3IoIlVua25vd24gSVIgdHlwZTogIi5jb25jYXQodFswXSkpfTt2YXIgbj1yKDEpLGk9cigxMzcpLGE9cigzKTtmdW5jdGlvbiBvKHQpe3JldHVybiBmdW5jdGlvbih0KXtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiB1KHQpfSh0KXx8ZnVuY3Rpb24odCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJm51bGwhPXRbU3ltYm9sLml0ZXJhdG9yXXx8bnVsbCE9dFsiQEBpdGVyYXRvciJdKXJldHVybiBBcnJheS5mcm9tKHQpfSh0KXx8bCh0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiBzKHQsZSl7dmFyIHI9InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJnRbU3ltYm9sLml0ZXJhdG9yXXx8dFsiQEBpdGVyYXRvciJdO2lmKCFyKXtpZihBcnJheS5pc0FycmF5KHQpfHwocj1sKHQpKXx8ZSYmdCYmIm51bWJlciI9PXR5cGVvZiB0Lmxlbmd0aCl7ciYmKHQ9cik7dmFyIG49MCxpPWZ1bmN0aW9uKCl7fTtyZXR1cm57czppLG46ZnVuY3Rpb24oKXtyZXR1cm4gbj49dC5sZW5ndGg/e2RvbmU6ITB9Ontkb25lOiExLHZhbHVlOnRbbisrXX19LGU6ZnVuY3Rpb24odCl7dGhyb3cgdH0sZjppfX10aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gaXRlcmF0ZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9dmFyIGEsbz0hMCxzPSExO3JldHVybntzOmZ1bmN0aW9uKCl7cj1yLmNhbGwodCl9LG46ZnVuY3Rpb24oKXt2YXIgdD1yLm5leHQoKTtyZXR1cm4gbz10LmRvbmUsdH0sZTpmdW5jdGlvbih0KXtzPSEwLGE9dH0sZjpmdW5jdGlvbigpe3RyeXtvfHxudWxsPT1yLnJldHVybnx8ci5yZXR1cm4oKX1maW5hbGx5e2lmKHMpdGhyb3cgYX19fX1mdW5jdGlvbiBsKHQsZSl7aWYodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiB1KHQsZSk7dmFyIHI9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpLnNsaWNlKDgsLTEpO3JldHVybiJPYmplY3QiPT09ciYmdC5jb25zdHJ1Y3RvciYmKHI9dC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PXJ8fCJTZXQiPT09cj9BcnJheS5mcm9tKHQpOiJBcmd1bWVudHMiPT09cnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3Qocik/dSh0LGUpOnZvaWQgMH19ZnVuY3Rpb24gdSh0LGUpeyhudWxsPT1lfHxlPnQubGVuZ3RoKSYmKGU9dC5sZW5ndGgpO2Zvcih2YXIgcj0wLG49bmV3IEFycmF5KGUpO3I8ZTtyKyspbltyXT10W3JdO3JldHVybiBufWZ1bmN0aW9uIGModCxlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSYmbnVsbCE9PWUpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTt0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGUmJmUucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6dCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZSYmaCh0LGUpfWZ1bmN0aW9uIGgodCxlKXtyZXR1cm4gaD1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbih0LGUpe3JldHVybiB0Ll9fcHJvdG9fXz1lLHR9LGgodCxlKX1mdW5jdGlvbiBmKHQpe3ZhciBlPWZ1bmN0aW9uKCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3QpcmV0dXJuITE7aWYoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSwoZnVuY3Rpb24oKXt9KSkpLCEwfWNhdGNoKHQpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcixuPWQodCk7aWYoZSl7dmFyIGk9ZCh0aGlzKS5jb25zdHJ1Y3RvcjtyPVJlZmxlY3QuY29uc3RydWN0KG4sYXJndW1lbnRzLGkpfWVsc2Ugcj1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZnVuY3Rpb24odCxlKXtpZihlJiYoIm9iamVjdCI9PT1wKGUpfHwiZnVuY3Rpb24iPT10eXBlb2YgZSkpcmV0dXJuIGU7aWYodm9pZCAwIT09ZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBmdW5jdGlvbih0KXtpZih2b2lkIDA9PT10KXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIHR9KHQpfSh0aGlzLHIpfX1mdW5jdGlvbiBkKHQpe3JldHVybiBkPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKHQpe3JldHVybiB0Ll9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpfSxkKHQpfWZ1bmN0aW9uIHAodCl7cmV0dXJuIHA9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LHAodCl9ZnVuY3Rpb24gdih0LGUpe2lmKCEodCBpbnN0YW5jZW9mIGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIHkodCxlKXtmb3IodmFyIHI9MDtyPGUubGVuZ3RoO3IrKyl7dmFyIG49ZVtyXTtuLmVudW1lcmFibGU9bi5lbnVtZXJhYmxlfHwhMSxuLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gbiYmKG4ud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCh2b2lkIDAsaT1mdW5jdGlvbih0LGUpe2lmKCJvYmplY3QiIT09cCh0KXx8bnVsbD09PXQpcmV0dXJuIHQ7dmFyIHI9dFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PXIpe3ZhciBuPXIuY2FsbCh0LCJzdHJpbmciKTtpZigib2JqZWN0IiE9PXAobikpcmV0dXJuIG47dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4gU3RyaW5nKHQpfShuLmtleSksInN5bWJvbCI9PT1wKGkpP2k6U3RyaW5nKGkpKSxuKX12YXIgaX1mdW5jdGlvbiBtKHQsZSxyKXtyZXR1cm4gZSYmeSh0LnByb3RvdHlwZSxlKSxyJiZ5KHQsciksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksdH12YXIgZz17RklMTDoiRmlsbCIsU1RST0tFOiJTdHJva2UiLFNIQURJTkc6IlNoYWRpbmcifTtmdW5jdGlvbiBiKHQsZSl7aWYoZSYmIWEuaXNOb2RlSlMpe3ZhciByPWVbMl0tZVswXSxuPWVbM10tZVsxXSxpPW5ldyBQYXRoMkQ7aS5yZWN0KGVbMF0sZVsxXSxyLG4pLHQuY2xpcChpKX19ZS5QYXRoVHlwZT1nO3ZhciBfPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3YodGhpcyx0KSx0aGlzLmNvbnN0cnVjdG9yPT09dCYmKDAsbi51bnJlYWNoYWJsZSkoIkNhbm5vdCBpbml0aWFsaXplIEJhc2VTaGFkaW5nUGF0dGVybi4iKX1yZXR1cm4gbSh0LFt7a2V5OiJnZXRQYXR0ZXJuIix2YWx1ZTpmdW5jdGlvbigpeygwLG4udW5yZWFjaGFibGUpKCJBYnN0cmFjdCBtZXRob2QgYGdldFBhdHRlcm5gIGNhbGxlZC4iKX19XSksdH0oKSx3PWZ1bmN0aW9uKHQpe2Mocix0KTt2YXIgZT1mKHIpO2Z1bmN0aW9uIHIodCl7dmFyIG47cmV0dXJuIHYodGhpcyxyKSwobj1lLmNhbGwodGhpcykpLl90eXBlPXRbMV0sbi5fYmJveD10WzJdLG4uX2NvbG9yU3RvcHM9dFszXSxuLl9wMD10WzRdLG4uX3AxPXRbNV0sbi5fcjA9dFs2XSxuLl9yMT10WzddLG4ubWF0cml4PW51bGwsbn1yZXR1cm4gbShyLFt7a2V5OiJfY3JlYXRlR3JhZGllbnQiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlOyJheGlhbCI9PT10aGlzLl90eXBlP2U9dC5jcmVhdGVMaW5lYXJHcmFkaWVudCh0aGlzLl9wMFswXSx0aGlzLl9wMFsxXSx0aGlzLl9wMVswXSx0aGlzLl9wMVsxXSk6InJhZGlhbCI9PT10aGlzLl90eXBlJiYoZT10LmNyZWF0ZVJhZGlhbEdyYWRpZW50KHRoaXMuX3AwWzBdLHRoaXMuX3AwWzFdLHRoaXMuX3IwLHRoaXMuX3AxWzBdLHRoaXMuX3AxWzFdLHRoaXMuX3IxKSk7dmFyIHIsbj1zKHRoaXMuX2NvbG9yU3RvcHMpO3RyeXtmb3Iobi5zKCk7IShyPW4ubigpKS5kb25lOyl7dmFyIGk9ci52YWx1ZTtlLmFkZENvbG9yU3RvcChpWzBdLGlbMV0pfX1jYXRjaCh0KXtuLmUodCl9ZmluYWxseXtuLmYoKX1yZXR1cm4gZX19LHtrZXk6ImdldFBhdHRlcm4iLHZhbHVlOmZ1bmN0aW9uKHQsZSxyLGEpe3ZhciBzO2lmKGE9PT1nLlNUUk9LRXx8YT09PWcuRklMTCl7dmFyIGw9ZS5jdXJyZW50LmdldENsaXBwZWRQYXRoQm91bmRpbmdCb3goYSwoMCxpLmdldEN1cnJlbnRUcmFuc2Zvcm0pKHQpKXx8WzAsMCwwLDBdLHU9TWF0aC5jZWlsKGxbMl0tbFswXSl8fDEsYz1NYXRoLmNlaWwobFszXS1sWzFdKXx8MSxoPWUuY2FjaGVkQ2FudmFzZXMuZ2V0Q2FudmFzKCJwYXR0ZXJuIix1LGMsITApLGY9aC5jb250ZXh0O2YuY2xlYXJSZWN0KDAsMCxmLmNhbnZhcy53aWR0aCxmLmNhbnZhcy5oZWlnaHQpLGYuYmVnaW5QYXRoKCksZi5yZWN0KDAsMCxmLmNhbnZhcy53aWR0aCxmLmNhbnZhcy5oZWlnaHQpLGYudHJhbnNsYXRlKC1sWzBdLC1sWzFdKSxyPW4uVXRpbC50cmFuc2Zvcm0ocixbMSwwLDAsMSxsWzBdLGxbMV1dKSxmLnRyYW5zZm9ybS5hcHBseShmLG8oZS5iYXNlVHJhbnNmb3JtKSksdGhpcy5tYXRyaXgmJmYudHJhbnNmb3JtLmFwcGx5KGYsbyh0aGlzLm1hdHJpeCkpLGIoZix0aGlzLl9iYm94KSxmLmZpbGxTdHlsZT10aGlzLl9jcmVhdGVHcmFkaWVudChmKSxmLmZpbGwoKSxzPXQuY3JlYXRlUGF0dGVybihoLmNhbnZhcywibm8tcmVwZWF0Iik7dmFyIGQ9bmV3IERPTU1hdHJpeChyKTtzLnNldFRyYW5zZm9ybShkKX1lbHNlIGIodCx0aGlzLl9iYm94KSxzPXRoaXMuX2NyZWF0ZUdyYWRpZW50KHQpO3JldHVybiBzfX1dKSxyfShfKTtmdW5jdGlvbiBBKHQsZSxyLG4saSxhLG8scyl7dmFyIGwsdT1lLmNvb3JkcyxjPWUuY29sb3JzLGg9dC5kYXRhLGY9NCp0LndpZHRoO3VbcisxXT51W24rMV0mJihsPXIscj1uLG49bCxsPWEsYT1vLG89bCksdVtuKzFdPnVbaSsxXSYmKGw9bixuPWksaT1sLGw9byxvPXMscz1sKSx1W3IrMV0+dVtuKzFdJiYobD1yLHI9bixuPWwsbD1hLGE9byxvPWwpO3ZhciBkPSh1W3JdK2Uub2Zmc2V0WCkqZS5zY2FsZVgscD0odVtyKzFdK2Uub2Zmc2V0WSkqZS5zY2FsZVksdj0odVtuXStlLm9mZnNldFgpKmUuc2NhbGVYLHk9KHVbbisxXStlLm9mZnNldFkpKmUuc2NhbGVZLG09KHVbaV0rZS5vZmZzZXRYKSplLnNjYWxlWCxnPSh1W2krMV0rZS5vZmZzZXRZKSplLnNjYWxlWTtpZighKHA+PWcpKWZvcih2YXIgYixfLHcsQSxrLFMseCxFLFA9Y1thXSxUPWNbYSsxXSxDPWNbYSsyXSxPPWNbb10sRj1jW28rMV0sTT1jW28rMl0sUj1jW3NdLEk9Y1tzKzFdLGo9Y1tzKzJdLEw9TWF0aC5yb3VuZChwKSxEPU1hdGgucm91bmQoZyksTj1MO048PUQ7TisrKXtpZihOPHkpe3ZhciBVO2I9ZC0oZC12KSooVT1OPHA/MDoocC1OKS8ocC15KSksXz1QLShQLU8pKlUsdz1ULShULUYpKlUsQT1DLShDLU0pKlV9ZWxzZXt2YXIgVztiPXYtKHYtbSkqKFc9Tj5nPzE6eT09PWc/MDooeS1OKS8oeS1nKSksXz1PLShPLVIpKlcsdz1GLShGLUkpKlcsQT1NLShNLWopKld9dmFyIEc9dm9pZCAwO2s9ZC0oZC1tKSooRz1OPHA/MDpOPmc/MToocC1OKS8ocC1nKSksUz1QLShQLVIpKkcseD1ULShULUkpKkcsRT1DLShDLWopKkc7Zm9yKHZhciBCPU1hdGgucm91bmQoTWF0aC5taW4oYixrKSkscT1NYXRoLnJvdW5kKE1hdGgubWF4KGIsaykpLEg9ZipOKzQqQix6PUI7ejw9cTt6KyspKEc9KGIteikvKGItaykpPDA/Rz0wOkc+MSYmKEc9MSksaFtIKytdPV8tKF8tUykqR3wwLGhbSCsrXT13LSh3LXgpKkd8MCxoW0grK109QS0oQS1FKSpHfDAsaFtIKytdPTI1NX19ZnVuY3Rpb24gayh0LGUscil7dmFyIG4saSxhPWUuY29vcmRzLG89ZS5jb2xvcnM7c3dpdGNoKGUudHlwZSl7Y2FzZSJsYXR0aWNlIjp2YXIgcz1lLnZlcnRpY2VzUGVyUm93LGw9TWF0aC5mbG9vcihhLmxlbmd0aC9zKS0xLHU9cy0xO2ZvcihuPTA7bjxsO24rKylmb3IodmFyIGM9bipzLGg9MDtoPHU7aCsrLGMrKylBKHQscixhW2NdLGFbYysxXSxhW2Mrc10sb1tjXSxvW2MrMV0sb1tjK3NdKSxBKHQscixhW2MrcysxXSxhW2MrMV0sYVtjK3NdLG9bYytzKzFdLG9bYysxXSxvW2Mrc10pO2JyZWFrO2Nhc2UidHJpYW5nbGVzIjpmb3Iobj0wLGk9YS5sZW5ndGg7bjxpO24rPTMpQSh0LHIsYVtuXSxhW24rMV0sYVtuKzJdLG9bbl0sb1tuKzFdLG9bbisyXSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoImlsbGVnYWwgZmlndXJlIil9fXZhciBTPWZ1bmN0aW9uKHQpe2Mocix0KTt2YXIgZT1mKHIpO2Z1bmN0aW9uIHIodCl7dmFyIG47cmV0dXJuIHYodGhpcyxyKSwobj1lLmNhbGwodGhpcykpLl9jb29yZHM9dFsyXSxuLl9jb2xvcnM9dFszXSxuLl9maWd1cmVzPXRbNF0sbi5fYm91bmRzPXRbNV0sbi5fYmJveD10WzddLG4uX2JhY2tncm91bmQ9dFs4XSxuLm1hdHJpeD1udWxsLG59cmV0dXJuIG0ocixbe2tleToiX2NyZWF0ZU1lc2hDYW52YXMiLHZhbHVlOmZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1NYXRoLmZsb29yKHRoaXMuX2JvdW5kc1swXSksaT1NYXRoLmZsb29yKHRoaXMuX2JvdW5kc1sxXSksYT1NYXRoLmNlaWwodGhpcy5fYm91bmRzWzJdKS1uLG89TWF0aC5jZWlsKHRoaXMuX2JvdW5kc1szXSktaSxsPU1hdGgubWluKE1hdGguY2VpbChNYXRoLmFicyhhKnRbMF0qMS4xKSksM2UzKSx1PU1hdGgubWluKE1hdGguY2VpbChNYXRoLmFicyhvKnRbMV0qMS4xKSksM2UzKSxjPWEvbCxoPW8vdSxmPXtjb29yZHM6dGhpcy5fY29vcmRzLGNvbG9yczp0aGlzLl9jb2xvcnMsb2Zmc2V0WDotbixvZmZzZXRZOi1pLHNjYWxlWDoxL2Msc2NhbGVZOjEvaH0sZD1sKzQscD11KzQsdj1yLmdldENhbnZhcygibWVzaCIsZCxwLCExKSx5PXYuY29udGV4dCxtPXkuY3JlYXRlSW1hZ2VEYXRhKGwsdSk7aWYoZSlmb3IodmFyIGc9bS5kYXRhLGI9MCxfPWcubGVuZ3RoO2I8XztiKz00KWdbYl09ZVswXSxnW2IrMV09ZVsxXSxnW2IrMl09ZVsyXSxnW2IrM109MjU1O3ZhciB3LEE9cyh0aGlzLl9maWd1cmVzKTt0cnl7Zm9yKEEucygpOyEodz1BLm4oKSkuZG9uZTspayhtLHcudmFsdWUsZil9Y2F0Y2godCl7QS5lKHQpfWZpbmFsbHl7QS5mKCl9cmV0dXJuIHkucHV0SW1hZ2VEYXRhKG0sMiwyKSx7Y2FudmFzOnYuY2FudmFzLG9mZnNldFg6bi0yKmMsb2Zmc2V0WTppLTIqaCxzY2FsZVg6YyxzY2FsZVk6aH19fSx7a2V5OiJnZXRQYXR0ZXJuIix2YWx1ZTpmdW5jdGlvbih0LGUscixhKXt2YXIgcztpZihiKHQsdGhpcy5fYmJveCksYT09PWcuU0hBRElORylzPW4uVXRpbC5zaW5ndWxhclZhbHVlRGVjb21wb3NlMmRTY2FsZSgoMCxpLmdldEN1cnJlbnRUcmFuc2Zvcm0pKHQpKTtlbHNlIGlmKHM9bi5VdGlsLnNpbmd1bGFyVmFsdWVEZWNvbXBvc2UyZFNjYWxlKGUuYmFzZVRyYW5zZm9ybSksdGhpcy5tYXRyaXgpe3ZhciBsPW4uVXRpbC5zaW5ndWxhclZhbHVlRGVjb21wb3NlMmRTY2FsZSh0aGlzLm1hdHJpeCk7cz1bc1swXSpsWzBdLHNbMV0qbFsxXV19dmFyIHU9dGhpcy5fY3JlYXRlTWVzaENhbnZhcyhzLGE9PT1nLlNIQURJTkc/bnVsbDp0aGlzLl9iYWNrZ3JvdW5kLGUuY2FjaGVkQ2FudmFzZXMpO3JldHVybiBhIT09Zy5TSEFESU5HJiYodC5zZXRUcmFuc2Zvcm0uYXBwbHkodCxvKGUuYmFzZVRyYW5zZm9ybSkpLHRoaXMubWF0cml4JiZ0LnRyYW5zZm9ybS5hcHBseSh0LG8odGhpcy5tYXRyaXgpKSksdC50cmFuc2xhdGUodS5vZmZzZXRYLHUub2Zmc2V0WSksdC5zY2FsZSh1LnNjYWxlWCx1LnNjYWxlWSksdC5jcmVhdGVQYXR0ZXJuKHUuY2FudmFzLCJuby1yZXBlYXQiKX19XSkscn0oXykseD1mdW5jdGlvbih0KXtjKHIsdCk7dmFyIGU9ZihyKTtmdW5jdGlvbiByKCl7cmV0dXJuIHYodGhpcyxyKSxlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gbShyLFt7a2V5OiJnZXRQYXR0ZXJuIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiJob3RwaW5rIn19XSkscn0oXyksRT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSxyLG4saSxhKXt2KHRoaXMsdCksdGhpcy5vcGVyYXRvckxpc3Q9ZVsyXSx0aGlzLm1hdHJpeD1lWzNdfHxbMSwwLDAsMSwwLDBdLHRoaXMuYmJveD1lWzRdLHRoaXMueHN0ZXA9ZVs1XSx0aGlzLnlzdGVwPWVbNl0sdGhpcy5wYWludFR5cGU9ZVs3XSx0aGlzLnRpbGluZ1R5cGU9ZVs4XSx0aGlzLmNvbG9yPXIsdGhpcy5jdHg9bix0aGlzLmNhbnZhc0dyYXBoaWNzRmFjdG9yeT1pLHRoaXMuYmFzZVRyYW5zZm9ybT1hfXJldHVybiBtKHQsW3trZXk6ImNyZWF0ZVBhdHRlcm5DYW52YXMiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMub3BlcmF0b3JMaXN0LHI9dGhpcy5iYm94LGE9dGhpcy54c3RlcCxvPXRoaXMueXN0ZXAscz10aGlzLnBhaW50VHlwZSxsPXRoaXMudGlsaW5nVHlwZSx1PXRoaXMuY29sb3IsYz10aGlzLmNhbnZhc0dyYXBoaWNzRmFjdG9yeTsoMCxuLmluZm8pKCJUaWxpbmdUeXBlOiAiK2wpO3ZhciBoPXJbMF0sZj1yWzFdLGQ9clsyXSxwPXJbM10sdj1uLlV0aWwuc2luZ3VsYXJWYWx1ZURlY29tcG9zZTJkU2NhbGUodGhpcy5tYXRyaXgpLHk9bi5VdGlsLnNpbmd1bGFyVmFsdWVEZWNvbXBvc2UyZFNjYWxlKHRoaXMuYmFzZVRyYW5zZm9ybSksbT1bdlswXSp5WzBdLHZbMV0qeVsxXV0sZz10aGlzLmdldFNpemVBbmRTY2FsZShhLHRoaXMuY3R4LmNhbnZhcy53aWR0aCxtWzBdKSxiPXRoaXMuZ2V0U2l6ZUFuZFNjYWxlKG8sdGhpcy5jdHguY2FudmFzLmhlaWdodCxtWzFdKSxfPXQuY2FjaGVkQ2FudmFzZXMuZ2V0Q2FudmFzKCJwYXR0ZXJuIixnLnNpemUsYi5zaXplLCEwKSx3PV8uY29udGV4dCxBPWMuY3JlYXRlQ2FudmFzR3JhcGhpY3Modyk7QS5ncm91cExldmVsPXQuZ3JvdXBMZXZlbCx0aGlzLnNldEZpbGxBbmRTdHJva2VTdHlsZVRvQ29udGV4dChBLHMsdSk7dmFyIGs9aCxTPWYseD1kLEU9cDtyZXR1cm4gaDwwJiYoaz0wLHgrPU1hdGguYWJzKGgpKSxmPDAmJihTPTAsRSs9TWF0aC5hYnMoZikpLHcudHJhbnNsYXRlKC1nLnNjYWxlKmssLWIuc2NhbGUqUyksQS50cmFuc2Zvcm0oZy5zY2FsZSwwLDAsYi5zY2FsZSwwLDApLHcuc2F2ZSgpLHRoaXMuY2xpcEJib3goQSxrLFMseCxFKSxBLmJhc2VUcmFuc2Zvcm09KDAsaS5nZXRDdXJyZW50VHJhbnNmb3JtKShBLmN0eCksQS5leGVjdXRlT3BlcmF0b3JMaXN0KGUpLEEuZW5kRHJhd2luZygpLHtjYW52YXM6Xy5jYW52YXMsc2NhbGVYOmcuc2NhbGUsc2NhbGVZOmIuc2NhbGUsb2Zmc2V0WDprLG9mZnNldFk6U319fSx7a2V5OiJnZXRTaXplQW5kU2NhbGUiLHZhbHVlOmZ1bmN0aW9uKGUscixuKXtlPU1hdGguYWJzKGUpO3ZhciBpPU1hdGgubWF4KHQuTUFYX1BBVFRFUk5fU0laRSxyKSxhPU1hdGguY2VpbChlKm4pO3JldHVybiBhPj1pP2E9aTpuPWEvZSx7c2NhbGU6bixzaXplOmF9fX0se2tleToiY2xpcEJib3giLHZhbHVlOmZ1bmN0aW9uKHQsZSxyLG4sYSl7dmFyIG89bi1lLHM9YS1yO3QuY3R4LnJlY3QoZSxyLG8scyksdC5jdXJyZW50LnVwZGF0ZVJlY3RNaW5NYXgoKDAsaS5nZXRDdXJyZW50VHJhbnNmb3JtKSh0LmN0eCksW2UscixuLGFdKSx0LmNsaXAoKSx0LmVuZFBhdGgoKX19LHtrZXk6InNldEZpbGxBbmRTdHJva2VTdHlsZVRvQ29udGV4dCIsdmFsdWU6ZnVuY3Rpb24odCxlLHIpe3ZhciBpPXQuY3R4LGE9dC5jdXJyZW50O3N3aXRjaChlKXtjYXNlIDE6dmFyIG89dGhpcy5jdHg7aS5maWxsU3R5bGU9by5maWxsU3R5bGUsaS5zdHJva2VTdHlsZT1vLnN0cm9rZVN0eWxlLGEuZmlsbENvbG9yPW8uZmlsbFN0eWxlLGEuc3Ryb2tlQ29sb3I9by5zdHJva2VTdHlsZTticmVhaztjYXNlIDI6dmFyIHM9bi5VdGlsLm1ha2VIZXhDb2xvcihyWzBdLHJbMV0sclsyXSk7aS5maWxsU3R5bGU9cyxpLnN0cm9rZVN0eWxlPXMsYS5maWxsQ29sb3I9cyxhLnN0cm9rZUNvbG9yPXM7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiVW5zdXBwb3J0ZWQgcGFpbnQgdHlwZTogIi5jb25jYXQoZSkpfX19LHtrZXk6ImdldFBhdHRlcm4iLHZhbHVlOmZ1bmN0aW9uKHQsZSxyLGkpe3ZhciBhPXI7aSE9PWcuU0hBRElORyYmKGE9bi5VdGlsLnRyYW5zZm9ybShhLGUuYmFzZVRyYW5zZm9ybSksdGhpcy5tYXRyaXgmJihhPW4uVXRpbC50cmFuc2Zvcm0oYSx0aGlzLm1hdHJpeCkpKTt2YXIgbz10aGlzLmNyZWF0ZVBhdHRlcm5DYW52YXMoZSkscz1uZXcgRE9NTWF0cml4KGEpO3M9KHM9cy50cmFuc2xhdGUoby5vZmZzZXRYLG8ub2Zmc2V0WSkpLnNjYWxlKDEvby5zY2FsZVgsMS9vLnNjYWxlWSk7dmFyIGw9dC5jcmVhdGVQYXR0ZXJuKG8uY2FudmFzLCJyZXBlYXQiKTtyZXR1cm4gbC5zZXRUcmFuc2Zvcm0ocyksbH19XSxbe2tleToiTUFYX1BBVFRFUk5fU0laRSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsIk1BWF9QQVRURVJOX1NJWkUiLDNlMyl9fV0pLHR9KCk7ZS5UaWxpbmdQYXR0ZXJuPUV9LCh0LGUscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZS5hcHBseU1hc2tJbWFnZURhdGE9ZnVuY3Rpb24odCl7dmFyIGUscj10LnNyYyxhPXQuc3JjUG9zLG89dm9pZCAwPT09YT8wOmEscz10LmRlc3QsbD10LmRlc3RQb3MsdT12b2lkIDA9PT1sPzA6bCxjPXQud2lkdGgsaD10LmhlaWdodCxmPXQuaW52ZXJzZURlY29kZSxkPXZvaWQgMCE9PWYmJmYscD1uLkZlYXR1cmVUZXN0LmlzTGl0dGxlRW5kaWFuPzQyNzgxOTAwODA6MjU1LHY9ZnVuY3Rpb24odCl7aWYoQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gdH0oZT1kP1swLHBdOltwLDBdKXx8ZnVuY3Rpb24odCxlKXt2YXIgcj1udWxsPT10P251bGw6InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJnRbU3ltYm9sLml0ZXJhdG9yXXx8dFsiQEBpdGVyYXRvciJdO2lmKG51bGwhPXIpe3ZhciBuLGksYSxvLHM9W10sbD0hMCx1PSExO3RyeXtmb3IoYT0ocj1yLmNhbGwodCkpLm5leHQ7IShsPShuPWEuY2FsbChyKSkuZG9uZSkmJihzLnB1c2gobi52YWx1ZSksMiE9PXMubGVuZ3RoKTtsPSEwKTt9Y2F0Y2godCl7dT0hMCxpPXR9ZmluYWxseXt0cnl7aWYoIWwmJm51bGwhPXIucmV0dXJuJiYobz1yLnJldHVybigpLE9iamVjdChvKSE9PW8pKXJldHVybn1maW5hbGx5e2lmKHUpdGhyb3cgaX19cmV0dXJuIHN9fShlKXx8ZnVuY3Rpb24odCxlKXtpZih0KXtpZigic3RyaW5nIj09dHlwZW9mIHQpcmV0dXJuIGkodCwyKTt2YXIgcj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCkuc2xpY2UoOCwtMSk7cmV0dXJuIk9iamVjdCI9PT1yJiZ0LmNvbnN0cnVjdG9yJiYocj10LmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09cnx8IlNldCI9PT1yP0FycmF5LmZyb20odCk6IkFyZ3VtZW50cyI9PT1yfHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChyKT9pKHQsMik6dm9pZCAwfX0oZSl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKSx5PXZbMF0sbT12WzFdLGc9Yz4+MyxiPTcmYyxfPXIubGVuZ3RoO3M9bmV3IFVpbnQzMkFycmF5KHMuYnVmZmVyKTtmb3IodmFyIHc9MDt3PGg7dysrKXtmb3IodmFyIEE9bytnO288QTtvKyspe3ZhciBrPW88Xz9yW29dOjI1NTtzW3UrK109MTI4Jms/bTp5LHNbdSsrXT02NCZrP206eSxzW3UrK109MzImaz9tOnksc1t1KytdPTE2Jms/bTp5LHNbdSsrXT04Jms/bTp5LHNbdSsrXT00Jms/bTp5LHNbdSsrXT0yJms/bTp5LHNbdSsrXT0xJms/bTp5fWlmKDAhPT1iKWZvcih2YXIgUz1vPF8/cltvKytdOjI1NSx4PTA7eDxiO3grKylzW3UrK109UyYxPDw3LXg/bTp5fXJldHVybntzcmNQb3M6byxkZXN0UG9zOnV9fTt2YXIgbj1yKDEpO2Z1bmN0aW9uIGkodCxlKXsobnVsbD09ZXx8ZT50Lmxlbmd0aCkmJihlPXQubGVuZ3RoKTtmb3IodmFyIHI9MCxuPW5ldyBBcnJheShlKTtyPGU7cisrKW5bcl09dFtyXTtyZXR1cm4gbn19LCh0LGUpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGUuR2xvYmFsV29ya2VyT3B0aW9ucz12b2lkIDA7dmFyIHI9T2JqZWN0LmNyZWF0ZShudWxsKTtlLkdsb2JhbFdvcmtlck9wdGlvbnM9cixyLndvcmtlclBvcnQ9dm9pZCAwPT09ci53b3JrZXJQb3J0P251bGw6ci53b3JrZXJQb3J0LHIud29ya2VyU3JjPXZvaWQgMD09PXIud29ya2VyU3JjPyIiOnIud29ya2VyU3JjfSwodCxlLHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGUuTWVzc2FnZUhhbmRsZXI9dm9pZCAwO3ZhciBuPXIoMSk7ZnVuY3Rpb24gaSgpe2k9ZnVuY3Rpb24oKXtyZXR1cm4gdH07dmFyIHQ9e30sZT1PYmplY3QucHJvdG90eXBlLHI9ZS5oYXNPd25Qcm9wZXJ0eSxuPU9iamVjdC5kZWZpbmVQcm9wZXJ0eXx8ZnVuY3Rpb24odCxlLHIpe3RbZV09ci52YWx1ZX0sYT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sP1N5bWJvbDp7fSxvPWEuaXRlcmF0b3J8fCJAQGl0ZXJhdG9yIixsPWEuYXN5bmNJdGVyYXRvcnx8IkBAYXN5bmNJdGVyYXRvciIsdT1hLnRvU3RyaW5nVGFnfHwiQEB0b1N0cmluZ1RhZyI7ZnVuY3Rpb24gYyh0LGUscil7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUse3ZhbHVlOnIsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KSx0W2VdfXRyeXtjKHt9LCIiKX1jYXRjaCh0KXtjPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdFtlXT1yfX1mdW5jdGlvbiBoKHQsZSxyLGkpe3ZhciBhPWUmJmUucHJvdG90eXBlIGluc3RhbmNlb2YgcD9lOnAsbz1PYmplY3QuY3JlYXRlKGEucHJvdG90eXBlKSxzPW5ldyBQKGl8fFtdKTtyZXR1cm4gbihvLCJfaW52b2tlIix7dmFsdWU6ayh0LHIscyl9KSxvfWZ1bmN0aW9uIGYodCxlLHIpe3RyeXtyZXR1cm57dHlwZToibm9ybWFsIixhcmc6dC5jYWxsKGUscil9fWNhdGNoKHQpe3JldHVybnt0eXBlOiJ0aHJvdyIsYXJnOnR9fX10LndyYXA9aDt2YXIgZD17fTtmdW5jdGlvbiBwKCl7fWZ1bmN0aW9uIHYoKXt9ZnVuY3Rpb24geSgpe312YXIgbT17fTtjKG0sbywoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKTt2YXIgZz1PYmplY3QuZ2V0UHJvdG90eXBlT2YsYj1nJiZnKGcoVChbXSkpKTtiJiZiIT09ZSYmci5jYWxsKGIsbykmJihtPWIpO3ZhciBfPXkucHJvdG90eXBlPXAucHJvdG90eXBlPU9iamVjdC5jcmVhdGUobSk7ZnVuY3Rpb24gdyh0KXtbIm5leHQiLCJ0aHJvdyIsInJldHVybiJdLmZvckVhY2goKGZ1bmN0aW9uKGUpe2ModCxlLChmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5faW52b2tlKGUsdCl9KSl9KSl9ZnVuY3Rpb24gQSh0LGUpe2Z1bmN0aW9uIGkobixhLG8sbCl7dmFyIHU9Zih0W25dLHQsYSk7aWYoInRocm93IiE9PXUudHlwZSl7dmFyIGM9dS5hcmcsaD1jLnZhbHVlO3JldHVybiBoJiYib2JqZWN0Ij09cyhoKSYmci5jYWxsKGgsIl9fYXdhaXQiKT9lLnJlc29sdmUoaC5fX2F3YWl0KS50aGVuKChmdW5jdGlvbih0KXtpKCJuZXh0Iix0LG8sbCl9KSwoZnVuY3Rpb24odCl7aSgidGhyb3ciLHQsbyxsKX0pKTplLnJlc29sdmUoaCkudGhlbigoZnVuY3Rpb24odCl7Yy52YWx1ZT10LG8oYyl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIGkoInRocm93Iix0LG8sbCl9KSl9bCh1LmFyZyl9dmFyIGE7bih0aGlzLCJfaW52b2tlIix7dmFsdWU6ZnVuY3Rpb24odCxyKXtmdW5jdGlvbiBuKCl7cmV0dXJuIG5ldyBlKChmdW5jdGlvbihlLG4pe2kodCxyLGUsbil9KSl9cmV0dXJuIGE9YT9hLnRoZW4obixuKTpuKCl9fSl9ZnVuY3Rpb24gayh0LGUscil7dmFyIG49InN1c3BlbmRlZFN0YXJ0IjtyZXR1cm4gZnVuY3Rpb24oaSxhKXtpZigiZXhlY3V0aW5nIj09PW4pdGhyb3cgbmV3IEVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nIik7aWYoImNvbXBsZXRlZCI9PT1uKXtpZigidGhyb3ciPT09aSl0aHJvdyBhO3JldHVybnt2YWx1ZTp2b2lkIDAsZG9uZTohMH19Zm9yKHIubWV0aG9kPWksci5hcmc9YTs7KXt2YXIgbz1yLmRlbGVnYXRlO2lmKG8pe3ZhciBzPVMobyxyKTtpZihzKXtpZihzPT09ZCljb250aW51ZTtyZXR1cm4gc319aWYoIm5leHQiPT09ci5tZXRob2Qpci5zZW50PXIuX3NlbnQ9ci5hcmc7ZWxzZSBpZigidGhyb3ciPT09ci5tZXRob2Qpe2lmKCJzdXNwZW5kZWRTdGFydCI9PT1uKXRocm93IG49ImNvbXBsZXRlZCIsci5hcmc7ci5kaXNwYXRjaEV4Y2VwdGlvbihyLmFyZyl9ZWxzZSJyZXR1cm4iPT09ci5tZXRob2QmJnIuYWJydXB0KCJyZXR1cm4iLHIuYXJnKTtuPSJleGVjdXRpbmciO3ZhciBsPWYodCxlLHIpO2lmKCJub3JtYWwiPT09bC50eXBlKXtpZihuPXIuZG9uZT8iY29tcGxldGVkIjoic3VzcGVuZGVkWWllbGQiLGwuYXJnPT09ZCljb250aW51ZTtyZXR1cm57dmFsdWU6bC5hcmcsZG9uZTpyLmRvbmV9fSJ0aHJvdyI9PT1sLnR5cGUmJihuPSJjb21wbGV0ZWQiLHIubWV0aG9kPSJ0aHJvdyIsci5hcmc9bC5hcmcpfX19ZnVuY3Rpb24gUyh0LGUpe3ZhciByPWUubWV0aG9kLG49dC5pdGVyYXRvcltyXTtpZih2b2lkIDA9PT1uKXJldHVybiBlLmRlbGVnYXRlPW51bGwsInRocm93Ij09PXImJnQuaXRlcmF0b3IucmV0dXJuJiYoZS5tZXRob2Q9InJldHVybiIsZS5hcmc9dm9pZCAwLFModCxlKSwidGhyb3ciPT09ZS5tZXRob2QpfHwicmV0dXJuIiE9PXImJihlLm1ldGhvZD0idGhyb3ciLGUuYXJnPW5ldyBUeXBlRXJyb3IoIlRoZSBpdGVyYXRvciBkb2VzIG5vdCBwcm92aWRlIGEgJyIrcisiJyBtZXRob2QiKSksZDt2YXIgaT1mKG4sdC5pdGVyYXRvcixlLmFyZyk7aWYoInRocm93Ij09PWkudHlwZSlyZXR1cm4gZS5tZXRob2Q9InRocm93IixlLmFyZz1pLmFyZyxlLmRlbGVnYXRlPW51bGwsZDt2YXIgYT1pLmFyZztyZXR1cm4gYT9hLmRvbmU/KGVbdC5yZXN1bHROYW1lXT1hLnZhbHVlLGUubmV4dD10Lm5leHRMb2MsInJldHVybiIhPT1lLm1ldGhvZCYmKGUubWV0aG9kPSJuZXh0IixlLmFyZz12b2lkIDApLGUuZGVsZWdhdGU9bnVsbCxkKTphOihlLm1ldGhvZD0idGhyb3ciLGUuYXJnPW5ldyBUeXBlRXJyb3IoIml0ZXJhdG9yIHJlc3VsdCBpcyBub3QgYW4gb2JqZWN0IiksZS5kZWxlZ2F0ZT1udWxsLGQpfWZ1bmN0aW9uIHgodCl7dmFyIGU9e3RyeUxvYzp0WzBdfTsxIGluIHQmJihlLmNhdGNoTG9jPXRbMV0pLDIgaW4gdCYmKGUuZmluYWxseUxvYz10WzJdLGUuYWZ0ZXJMb2M9dFszXSksdGhpcy50cnlFbnRyaWVzLnB1c2goZSl9ZnVuY3Rpb24gRSh0KXt2YXIgZT10LmNvbXBsZXRpb258fHt9O2UudHlwZT0ibm9ybWFsIixkZWxldGUgZS5hcmcsdC5jb21wbGV0aW9uPWV9ZnVuY3Rpb24gUCh0KXt0aGlzLnRyeUVudHJpZXM9W3t0cnlMb2M6InJvb3QifV0sdC5mb3JFYWNoKHgsdGhpcyksdGhpcy5yZXNldCghMCl9ZnVuY3Rpb24gVCh0KXtpZih0KXt2YXIgZT10W29dO2lmKGUpcmV0dXJuIGUuY2FsbCh0KTtpZigiZnVuY3Rpb24iPT10eXBlb2YgdC5uZXh0KXJldHVybiB0O2lmKCFpc05hTih0Lmxlbmd0aCkpe3ZhciBuPS0xLGk9ZnVuY3Rpb24gZSgpe2Zvcig7KytuPHQubGVuZ3RoOylpZihyLmNhbGwodCxuKSlyZXR1cm4gZS52YWx1ZT10W25dLGUuZG9uZT0hMSxlO3JldHVybiBlLnZhbHVlPXZvaWQgMCxlLmRvbmU9ITAsZX07cmV0dXJuIGkubmV4dD1pfX1yZXR1cm57bmV4dDpDfX1mdW5jdGlvbiBDKCl7cmV0dXJue3ZhbHVlOnZvaWQgMCxkb25lOiEwfX1yZXR1cm4gdi5wcm90b3R5cGU9eSxuKF8sImNvbnN0cnVjdG9yIix7dmFsdWU6eSxjb25maWd1cmFibGU6ITB9KSxuKHksImNvbnN0cnVjdG9yIix7dmFsdWU6dixjb25maWd1cmFibGU6ITB9KSx2LmRpc3BsYXlOYW1lPWMoeSx1LCJHZW5lcmF0b3JGdW5jdGlvbiIpLHQuaXNHZW5lcmF0b3JGdW5jdGlvbj1mdW5jdGlvbih0KXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgdCYmdC5jb25zdHJ1Y3RvcjtyZXR1cm4hIWUmJihlPT09dnx8IkdlbmVyYXRvckZ1bmN0aW9uIj09PShlLmRpc3BsYXlOYW1lfHxlLm5hbWUpKX0sdC5tYXJrPWZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKHQseSk6KHQuX19wcm90b19fPXksYyh0LHUsIkdlbmVyYXRvckZ1bmN0aW9uIikpLHQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoXyksdH0sdC5hd3JhcD1mdW5jdGlvbih0KXtyZXR1cm57X19hd2FpdDp0fX0sdyhBLnByb3RvdHlwZSksYyhBLnByb3RvdHlwZSxsLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpLHQuQXN5bmNJdGVyYXRvcj1BLHQuYXN5bmM9ZnVuY3Rpb24oZSxyLG4saSxhKXt2b2lkIDA9PT1hJiYoYT1Qcm9taXNlKTt2YXIgbz1uZXcgQShoKGUscixuLGkpLGEpO3JldHVybiB0LmlzR2VuZXJhdG9yRnVuY3Rpb24ocik/bzpvLm5leHQoKS50aGVuKChmdW5jdGlvbih0KXtyZXR1cm4gdC5kb25lP3QudmFsdWU6by5uZXh0KCl9KSl9LHcoXyksYyhfLHUsIkdlbmVyYXRvciIpLGMoXyxvLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpLGMoXywidG9TdHJpbmciLChmdW5jdGlvbigpe3JldHVybiJbb2JqZWN0IEdlbmVyYXRvcl0ifSkpLHQua2V5cz1mdW5jdGlvbih0KXt2YXIgZT1PYmplY3QodCkscj1bXTtmb3IodmFyIG4gaW4gZSlyLnB1c2gobik7cmV0dXJuIHIucmV2ZXJzZSgpLGZ1bmN0aW9uIHQoKXtmb3IoO3IubGVuZ3RoOyl7dmFyIG49ci5wb3AoKTtpZihuIGluIGUpcmV0dXJuIHQudmFsdWU9bix0LmRvbmU9ITEsdH1yZXR1cm4gdC5kb25lPSEwLHR9fSx0LnZhbHVlcz1ULFAucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpQLHJlc2V0OmZ1bmN0aW9uKHQpe2lmKHRoaXMucHJldj0wLHRoaXMubmV4dD0wLHRoaXMuc2VudD10aGlzLl9zZW50PXZvaWQgMCx0aGlzLmRvbmU9ITEsdGhpcy5kZWxlZ2F0ZT1udWxsLHRoaXMubWV0aG9kPSJuZXh0Iix0aGlzLmFyZz12b2lkIDAsdGhpcy50cnlFbnRyaWVzLmZvckVhY2goRSksIXQpZm9yKHZhciBlIGluIHRoaXMpInQiPT09ZS5jaGFyQXQoMCkmJnIuY2FsbCh0aGlzLGUpJiYhaXNOYU4oK2Uuc2xpY2UoMSkpJiYodGhpc1tlXT12b2lkIDApfSxzdG9wOmZ1bmN0aW9uKCl7dGhpcy5kb25lPSEwO3ZhciB0PXRoaXMudHJ5RW50cmllc1swXS5jb21wbGV0aW9uO2lmKCJ0aHJvdyI9PT10LnR5cGUpdGhyb3cgdC5hcmc7cmV0dXJuIHRoaXMucnZhbH0sZGlzcGF0Y2hFeGNlcHRpb246ZnVuY3Rpb24odCl7aWYodGhpcy5kb25lKXRocm93IHQ7dmFyIGU9dGhpcztmdW5jdGlvbiBuKHIsbil7cmV0dXJuIG8udHlwZT0idGhyb3ciLG8uYXJnPXQsZS5uZXh0PXIsbiYmKGUubWV0aG9kPSJuZXh0IixlLmFyZz12b2lkIDApLCEhbn1mb3IodmFyIGk9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2k+PTA7LS1pKXt2YXIgYT10aGlzLnRyeUVudHJpZXNbaV0sbz1hLmNvbXBsZXRpb247aWYoInJvb3QiPT09YS50cnlMb2MpcmV0dXJuIG4oImVuZCIpO2lmKGEudHJ5TG9jPD10aGlzLnByZXYpe3ZhciBzPXIuY2FsbChhLCJjYXRjaExvYyIpLGw9ci5jYWxsKGEsImZpbmFsbHlMb2MiKTtpZihzJiZsKXtpZih0aGlzLnByZXY8YS5jYXRjaExvYylyZXR1cm4gbihhLmNhdGNoTG9jLCEwKTtpZih0aGlzLnByZXY8YS5maW5hbGx5TG9jKXJldHVybiBuKGEuZmluYWxseUxvYyl9ZWxzZSBpZihzKXtpZih0aGlzLnByZXY8YS5jYXRjaExvYylyZXR1cm4gbihhLmNhdGNoTG9jLCEwKX1lbHNle2lmKCFsKXRocm93IG5ldyBFcnJvcigidHJ5IHN0YXRlbWVudCB3aXRob3V0IGNhdGNoIG9yIGZpbmFsbHkiKTtpZih0aGlzLnByZXY8YS5maW5hbGx5TG9jKXJldHVybiBuKGEuZmluYWxseUxvYyl9fX19LGFicnVwdDpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7bj49MDstLW4pe3ZhciBpPXRoaXMudHJ5RW50cmllc1tuXTtpZihpLnRyeUxvYzw9dGhpcy5wcmV2JiZyLmNhbGwoaSwiZmluYWxseUxvYyIpJiZ0aGlzLnByZXY8aS5maW5hbGx5TG9jKXt2YXIgYT1pO2JyZWFrfX1hJiYoImJyZWFrIj09PXR8fCJjb250aW51ZSI9PT10KSYmYS50cnlMb2M8PWUmJmU8PWEuZmluYWxseUxvYyYmKGE9bnVsbCk7dmFyIG89YT9hLmNvbXBsZXRpb246e307cmV0dXJuIG8udHlwZT10LG8uYXJnPWUsYT8odGhpcy5tZXRob2Q9Im5leHQiLHRoaXMubmV4dD1hLmZpbmFsbHlMb2MsZCk6dGhpcy5jb21wbGV0ZShvKX0sY29tcGxldGU6ZnVuY3Rpb24odCxlKXtpZigidGhyb3ciPT09dC50eXBlKXRocm93IHQuYXJnO3JldHVybiJicmVhayI9PT10LnR5cGV8fCJjb250aW51ZSI9PT10LnR5cGU/dGhpcy5uZXh0PXQuYXJnOiJyZXR1cm4iPT09dC50eXBlPyh0aGlzLnJ2YWw9dGhpcy5hcmc9dC5hcmcsdGhpcy5tZXRob2Q9InJldHVybiIsdGhpcy5uZXh0PSJlbmQiKToibm9ybWFsIj09PXQudHlwZSYmZSYmKHRoaXMubmV4dD1lKSxkfSxmaW5pc2g6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtlPj0wOy0tZSl7dmFyIHI9dGhpcy50cnlFbnRyaWVzW2VdO2lmKHIuZmluYWxseUxvYz09PXQpcmV0dXJuIHRoaXMuY29tcGxldGUoci5jb21wbGV0aW9uLHIuYWZ0ZXJMb2MpLEUociksZH19LGNhdGNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7ZT49MDstLWUpe3ZhciByPXRoaXMudHJ5RW50cmllc1tlXTtpZihyLnRyeUxvYz09PXQpe3ZhciBuPXIuY29tcGxldGlvbjtpZigidGhyb3ciPT09bi50eXBlKXt2YXIgaT1uLmFyZztFKHIpfXJldHVybiBpfX10aHJvdyBuZXcgRXJyb3IoImlsbGVnYWwgY2F0Y2ggYXR0ZW1wdCIpfSxkZWxlZ2F0ZVlpZWxkOmZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZT17aXRlcmF0b3I6VCh0KSxyZXN1bHROYW1lOmUsbmV4dExvYzpyfSwibmV4dCI9PT10aGlzLm1ldGhvZCYmKHRoaXMuYXJnPXZvaWQgMCksZH19LHR9ZnVuY3Rpb24gYSh0LGUscixuLGksYSxvKXt0cnl7dmFyIHM9dFthXShvKSxsPXMudmFsdWV9Y2F0Y2godCl7cmV0dXJuIHZvaWQgcih0KX1zLmRvbmU/ZShsKTpQcm9taXNlLnJlc29sdmUobCkudGhlbihuLGkpfWZ1bmN0aW9uIG8odCxlKXtmb3IodmFyIHI9MDtyPGUubGVuZ3RoO3IrKyl7dmFyIG49ZVtyXTtuLmVudW1lcmFibGU9bi5lbnVtZXJhYmxlfHwhMSxuLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gbiYmKG4ud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCh2b2lkIDAsaT1mdW5jdGlvbih0LGUpe2lmKCJvYmplY3QiIT09cyh0KXx8bnVsbD09PXQpcmV0dXJuIHQ7dmFyIHI9dFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PXIpe3ZhciBuPXIuY2FsbCh0LCJzdHJpbmciKTtpZigib2JqZWN0IiE9PXMobikpcmV0dXJuIG47dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4gU3RyaW5nKHQpfShuLmtleSksInN5bWJvbCI9PT1zKGkpP2k6U3RyaW5nKGkpKSxuKX12YXIgaX1mdW5jdGlvbiBzKHQpe3JldHVybiBzPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiB0fSxzKHQpfWZ1bmN0aW9uIGwodCl7c3dpdGNoKHQgaW5zdGFuY2VvZiBFcnJvcnx8Im9iamVjdCI9PT1zKHQpJiZudWxsIT09dHx8KDAsbi51bnJlYWNoYWJsZSkoJ3dyYXBSZWFzb246IEV4cGVjdGVkICJyZWFzb24iIHRvIGJlIGEgKHBvc3NpYmx5IGNsb25lZCkgRXJyb3IuJyksdC5uYW1lKXtjYXNlIkFib3J0RXhjZXB0aW9uIjpyZXR1cm4gbmV3IG4uQWJvcnRFeGNlcHRpb24odC5tZXNzYWdlKTtjYXNlIk1pc3NpbmdQREZFeGNlcHRpb24iOnJldHVybiBuZXcgbi5NaXNzaW5nUERGRXhjZXB0aW9uKHQubWVzc2FnZSk7Y2FzZSJQYXNzd29yZEV4Y2VwdGlvbiI6cmV0dXJuIG5ldyBuLlBhc3N3b3JkRXhjZXB0aW9uKHQubWVzc2FnZSx0LmNvZGUpO2Nhc2UiVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9uIjpyZXR1cm4gbmV3IG4uVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9uKHQubWVzc2FnZSx0LnN0YXR1cyk7Y2FzZSJVbmtub3duRXJyb3JFeGNlcHRpb24iOnJldHVybiBuZXcgbi5Vbmtub3duRXJyb3JFeGNlcHRpb24odC5tZXNzYWdlLHQuZGV0YWlscyk7ZGVmYXVsdDpyZXR1cm4gbmV3IG4uVW5rbm93bkVycm9yRXhjZXB0aW9uKHQubWVzc2FnZSx0LnRvU3RyaW5nKCkpfX12YXIgdT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSxyLG4pe3ZhciBpPXRoaXM7IWZ1bmN0aW9uKHQsZSl7aWYoISh0IGluc3RhbmNlb2YgZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsdCksdGhpcy5zb3VyY2VOYW1lPWUsdGhpcy50YXJnZXROYW1lPXIsdGhpcy5jb21PYmo9bix0aGlzLmNhbGxiYWNrSWQ9MSx0aGlzLnN0cmVhbUlkPTEsdGhpcy5zdHJlYW1TaW5rcz1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMuc3RyZWFtQ29udHJvbGxlcnM9T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLmNhbGxiYWNrQ2FwYWJpbGl0aWVzPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5hY3Rpb25IYW5kbGVyPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5fb25Db21PYmpPbk1lc3NhZ2U9ZnVuY3Rpb24odCl7dmFyIGU9dC5kYXRhO2lmKGUudGFyZ2V0TmFtZT09PWkuc291cmNlTmFtZSlpZihlLnN0cmVhbSlpLl9wcm9jZXNzU3RyZWFtTWVzc2FnZShlKTtlbHNlIGlmKGUuY2FsbGJhY2spe3ZhciByPWUuY2FsbGJhY2tJZCxhPWkuY2FsbGJhY2tDYXBhYmlsaXRpZXNbcl07aWYoIWEpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgcmVzb2x2ZSBjYWxsYmFjayAiLmNvbmNhdChyKSk7aWYoZGVsZXRlIGkuY2FsbGJhY2tDYXBhYmlsaXRpZXNbcl0sMT09PWUuY2FsbGJhY2spYS5yZXNvbHZlKGUuZGF0YSk7ZWxzZXtpZigyIT09ZS5jYWxsYmFjayl0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgY2FsbGJhY2sgY2FzZSIpO2EucmVqZWN0KGwoZS5yZWFzb24pKX19ZWxzZXt2YXIgbz1pLmFjdGlvbkhhbmRsZXJbZS5hY3Rpb25dO2lmKCFvKXRocm93IG5ldyBFcnJvcigiVW5rbm93biBhY3Rpb24gZnJvbSB3b3JrZXI6ICIuY29uY2F0KGUuYWN0aW9uKSk7aWYoZS5jYWxsYmFja0lkKXt2YXIgcz1pLnNvdXJjZU5hbWUsdT1lLnNvdXJjZU5hbWU7bmV3IFByb21pc2UoKGZ1bmN0aW9uKHQpe3QobyhlLmRhdGEpKX0pKS50aGVuKChmdW5jdGlvbih0KXtuLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOnMsdGFyZ2V0TmFtZTp1LGNhbGxiYWNrOjEsY2FsbGJhY2tJZDplLmNhbGxiYWNrSWQsZGF0YTp0fSl9KSwoZnVuY3Rpb24odCl7bi5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpzLHRhcmdldE5hbWU6dSxjYWxsYmFjazoyLGNhbGxiYWNrSWQ6ZS5jYWxsYmFja0lkLHJlYXNvbjpsKHQpfSl9KSl9ZWxzZSBlLnN0cmVhbUlkP2kuX2NyZWF0ZVN0cmVhbVNpbmsoZSk6byhlLmRhdGEpfX0sbi5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIix0aGlzLl9vbkNvbU9iak9uTWVzc2FnZSl9dmFyIGUscixzLHU7cmV0dXJuIGU9dCxyPVt7a2V5OiJvbiIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLmFjdGlvbkhhbmRsZXI7aWYoclt0XSl0aHJvdyBuZXcgRXJyb3IoJ1RoZXJlIGlzIGFscmVhZHkgYW4gYWN0aW9uTmFtZSBjYWxsZWQgIicuY29uY2F0KHQsJyInKSk7clt0XT1lfX0se2tleToic2VuZCIsdmFsdWU6ZnVuY3Rpb24odCxlLHIpe3RoaXMuY29tT2JqLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOnRoaXMuc291cmNlTmFtZSx0YXJnZXROYW1lOnRoaXMudGFyZ2V0TmFtZSxhY3Rpb246dCxkYXRhOmV9LHIpfX0se2tleToic2VuZFdpdGhQcm9taXNlIix2YWx1ZTpmdW5jdGlvbih0LGUscil7dmFyIGk9dGhpcy5jYWxsYmFja0lkKyssYT0oMCxuLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpO3RoaXMuY2FsbGJhY2tDYXBhYmlsaXRpZXNbaV09YTt0cnl7dGhpcy5jb21PYmoucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6dGhpcy5zb3VyY2VOYW1lLHRhcmdldE5hbWU6dGhpcy50YXJnZXROYW1lLGFjdGlvbjp0LGNhbGxiYWNrSWQ6aSxkYXRhOmV9LHIpfWNhdGNoKHQpe2EucmVqZWN0KHQpfXJldHVybiBhLnByb21pc2V9fSx7a2V5OiJzZW5kV2l0aFN0cmVhbSIsdmFsdWU6ZnVuY3Rpb24odCxlLHIsaSl7dmFyIGE9dGhpcyxvPXRoaXMuc3RyZWFtSWQrKyxzPXRoaXMuc291cmNlTmFtZSx1PXRoaXMudGFyZ2V0TmFtZSxjPXRoaXMuY29tT2JqO3JldHVybiBuZXcgUmVhZGFibGVTdHJlYW0oe3N0YXJ0OmZ1bmN0aW9uKHIpe3ZhciBsPSgwLG4uY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkpKCk7cmV0dXJuIGEuc3RyZWFtQ29udHJvbGxlcnNbb109e2NvbnRyb2xsZXI6cixzdGFydENhbGw6bCxwdWxsQ2FsbDpudWxsLGNhbmNlbENhbGw6bnVsbCxpc0Nsb3NlZDohMX0sYy5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpzLHRhcmdldE5hbWU6dSxhY3Rpb246dCxzdHJlYW1JZDpvLGRhdGE6ZSxkZXNpcmVkU2l6ZTpyLmRlc2lyZWRTaXplfSxpKSxsLnByb21pc2V9LHB1bGw6ZnVuY3Rpb24odCl7dmFyIGU9KDAsbi5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTtyZXR1cm4gYS5zdHJlYW1Db250cm9sbGVyc1tvXS5wdWxsQ2FsbD1lLGMucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6cyx0YXJnZXROYW1lOnUsc3RyZWFtOjYsc3RyZWFtSWQ6byxkZXNpcmVkU2l6ZTp0LmRlc2lyZWRTaXplfSksZS5wcm9taXNlfSxjYW5jZWw6ZnVuY3Rpb24odCl7KDAsbi5hc3NlcnQpKHQgaW5zdGFuY2VvZiBFcnJvciwiY2FuY2VsIG11c3QgaGF2ZSBhIHZhbGlkIHJlYXNvbiIpO3ZhciBlPSgwLG4uY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkpKCk7cmV0dXJuIGEuc3RyZWFtQ29udHJvbGxlcnNbb10uY2FuY2VsQ2FsbD1lLGEuc3RyZWFtQ29udHJvbGxlcnNbb10uaXNDbG9zZWQ9ITAsYy5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpzLHRhcmdldE5hbWU6dSxzdHJlYW06MSxzdHJlYW1JZDpvLHJlYXNvbjpsKHQpfSksZS5wcm9taXNlfX0scil9fSx7a2V5OiJfY3JlYXRlU3RyZWFtU2luayIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5zdHJlYW1JZCxyPXRoaXMuc291cmNlTmFtZSxpPXQuc291cmNlTmFtZSxhPXRoaXMuY29tT2JqLG89dGhpcyxzPXRoaXMuYWN0aW9uSGFuZGxlclt0LmFjdGlvbl0sdT17ZW5xdWV1ZTpmdW5jdGlvbih0KXt2YXIgbz1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06MSxzPWFyZ3VtZW50cy5sZW5ndGg+Mj9hcmd1bWVudHNbMl06dm9pZCAwO2lmKCF0aGlzLmlzQ2FuY2VsbGVkKXt2YXIgbD10aGlzLmRlc2lyZWRTaXplO3RoaXMuZGVzaXJlZFNpemUtPW8sbD4wJiZ0aGlzLmRlc2lyZWRTaXplPD0wJiYodGhpcy5zaW5rQ2FwYWJpbGl0eT0oMCxuLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpLHRoaXMucmVhZHk9dGhpcy5zaW5rQ2FwYWJpbGl0eS5wcm9taXNlKSxhLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOnIsdGFyZ2V0TmFtZTppLHN0cmVhbTo0LHN0cmVhbUlkOmUsY2h1bms6dH0scyl9fSxjbG9zZTpmdW5jdGlvbigpe3RoaXMuaXNDYW5jZWxsZWR8fCh0aGlzLmlzQ2FuY2VsbGVkPSEwLGEucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6cix0YXJnZXROYW1lOmksc3RyZWFtOjMsc3RyZWFtSWQ6ZX0pLGRlbGV0ZSBvLnN0cmVhbVNpbmtzW2VdKX0sZXJyb3I6ZnVuY3Rpb24odCl7KDAsbi5hc3NlcnQpKHQgaW5zdGFuY2VvZiBFcnJvciwiZXJyb3IgbXVzdCBoYXZlIGEgdmFsaWQgcmVhc29uIiksdGhpcy5pc0NhbmNlbGxlZHx8KHRoaXMuaXNDYW5jZWxsZWQ9ITAsYS5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpyLHRhcmdldE5hbWU6aSxzdHJlYW06NSxzdHJlYW1JZDplLHJlYXNvbjpsKHQpfSkpfSxzaW5rQ2FwYWJpbGl0eTooMCxuLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpLG9uUHVsbDpudWxsLG9uQ2FuY2VsOm51bGwsaXNDYW5jZWxsZWQ6ITEsZGVzaXJlZFNpemU6dC5kZXNpcmVkU2l6ZSxyZWFkeTpudWxsfTt1LnNpbmtDYXBhYmlsaXR5LnJlc29sdmUoKSx1LnJlYWR5PXUuc2lua0NhcGFiaWxpdHkucHJvbWlzZSx0aGlzLnN0cmVhbVNpbmtzW2VdPXUsbmV3IFByb21pc2UoKGZ1bmN0aW9uKGUpe2Uocyh0LmRhdGEsdSkpfSkpLnRoZW4oKGZ1bmN0aW9uKCl7YS5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpyLHRhcmdldE5hbWU6aSxzdHJlYW06OCxzdHJlYW1JZDplLHN1Y2Nlc3M6ITB9KX0pLChmdW5jdGlvbih0KXthLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOnIsdGFyZ2V0TmFtZTppLHN0cmVhbTo4LHN0cmVhbUlkOmUscmVhc29uOmwodCl9KX0pKX19LHtrZXk6Il9wcm9jZXNzU3RyZWFtTWVzc2FnZSIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5zdHJlYW1JZCxyPXRoaXMuc291cmNlTmFtZSxpPXQuc291cmNlTmFtZSxhPXRoaXMuY29tT2JqLG89dGhpcy5zdHJlYW1Db250cm9sbGVyc1tlXSxzPXRoaXMuc3RyZWFtU2lua3NbZV07c3dpdGNoKHQuc3RyZWFtKXtjYXNlIDg6dC5zdWNjZXNzP28uc3RhcnRDYWxsLnJlc29sdmUoKTpvLnN0YXJ0Q2FsbC5yZWplY3QobCh0LnJlYXNvbikpO2JyZWFrO2Nhc2UgNzp0LnN1Y2Nlc3M/by5wdWxsQ2FsbC5yZXNvbHZlKCk6by5wdWxsQ2FsbC5yZWplY3QobCh0LnJlYXNvbikpO2JyZWFrO2Nhc2UgNjppZighcyl7YS5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpyLHRhcmdldE5hbWU6aSxzdHJlYW06NyxzdHJlYW1JZDplLHN1Y2Nlc3M6ITB9KTticmVha31zLmRlc2lyZWRTaXplPD0wJiZ0LmRlc2lyZWRTaXplPjAmJnMuc2lua0NhcGFiaWxpdHkucmVzb2x2ZSgpLHMuZGVzaXJlZFNpemU9dC5kZXNpcmVkU2l6ZSxuZXcgUHJvbWlzZSgoZnVuY3Rpb24odCl7dChzLm9uUHVsbCYmcy5vblB1bGwoKSl9KSkudGhlbigoZnVuY3Rpb24oKXthLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOnIsdGFyZ2V0TmFtZTppLHN0cmVhbTo3LHN0cmVhbUlkOmUsc3VjY2VzczohMH0pfSksKGZ1bmN0aW9uKHQpe2EucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6cix0YXJnZXROYW1lOmksc3RyZWFtOjcsc3RyZWFtSWQ6ZSxyZWFzb246bCh0KX0pfSkpO2JyZWFrO2Nhc2UgNDppZigoMCxuLmFzc2VydCkobywiZW5xdWV1ZSBzaG91bGQgaGF2ZSBzdHJlYW0gY29udHJvbGxlciIpLG8uaXNDbG9zZWQpYnJlYWs7by5jb250cm9sbGVyLmVucXVldWUodC5jaHVuayk7YnJlYWs7Y2FzZSAzOmlmKCgwLG4uYXNzZXJ0KShvLCJjbG9zZSBzaG91bGQgaGF2ZSBzdHJlYW0gY29udHJvbGxlciIpLG8uaXNDbG9zZWQpYnJlYWs7by5pc0Nsb3NlZD0hMCxvLmNvbnRyb2xsZXIuY2xvc2UoKSx0aGlzLl9kZWxldGVTdHJlYW1Db250cm9sbGVyKG8sZSk7YnJlYWs7Y2FzZSA1OigwLG4uYXNzZXJ0KShvLCJlcnJvciBzaG91bGQgaGF2ZSBzdHJlYW0gY29udHJvbGxlciIpLG8uY29udHJvbGxlci5lcnJvcihsKHQucmVhc29uKSksdGhpcy5fZGVsZXRlU3RyZWFtQ29udHJvbGxlcihvLGUpO2JyZWFrO2Nhc2UgMjp0LnN1Y2Nlc3M/by5jYW5jZWxDYWxsLnJlc29sdmUoKTpvLmNhbmNlbENhbGwucmVqZWN0KGwodC5yZWFzb24pKSx0aGlzLl9kZWxldGVTdHJlYW1Db250cm9sbGVyKG8sZSk7YnJlYWs7Y2FzZSAxOmlmKCFzKWJyZWFrO25ldyBQcm9taXNlKChmdW5jdGlvbihlKXtlKHMub25DYW5jZWwmJnMub25DYW5jZWwobCh0LnJlYXNvbikpKX0pKS50aGVuKChmdW5jdGlvbigpe2EucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6cix0YXJnZXROYW1lOmksc3RyZWFtOjIsc3RyZWFtSWQ6ZSxzdWNjZXNzOiEwfSl9KSwoZnVuY3Rpb24odCl7YS5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpyLHRhcmdldE5hbWU6aSxzdHJlYW06MixzdHJlYW1JZDplLHJlYXNvbjpsKHQpfSl9KSkscy5zaW5rQ2FwYWJpbGl0eS5yZWplY3QobCh0LnJlYXNvbikpLHMuaXNDYW5jZWxsZWQ9ITAsZGVsZXRlIHRoaXMuc3RyZWFtU2lua3NbZV07YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgc3RyZWFtIGNhc2UiKX19fSx7a2V5OiJfZGVsZXRlU3RyZWFtQ29udHJvbGxlciIsdmFsdWU6KHM9aSgpLm1hcmsoKGZ1bmN0aW9uIHQoZSxyKXtyZXR1cm4gaSgpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9MixQcm9taXNlLmFsbFNldHRsZWQoW2Uuc3RhcnRDYWxsJiZlLnN0YXJ0Q2FsbC5wcm9taXNlLGUucHVsbENhbGwmJmUucHVsbENhbGwucHJvbWlzZSxlLmNhbmNlbENhbGwmJmUuY2FuY2VsQ2FsbC5wcm9taXNlXSk7Y2FzZSAyOmRlbGV0ZSB0aGlzLnN0cmVhbUNvbnRyb2xsZXJzW3JdO2Nhc2UgMzpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSksdT1mdW5jdGlvbigpe3ZhciB0PXRoaXMsZT1hcmd1bWVudHM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihyLG4pe3ZhciBpPXMuYXBwbHkodCxlKTtmdW5jdGlvbiBvKHQpe2EoaSxyLG4sbyxsLCJuZXh0Iix0KX1mdW5jdGlvbiBsKHQpe2EoaSxyLG4sbyxsLCJ0aHJvdyIsdCl9byh2b2lkIDApfSkpfSxmdW5jdGlvbih0LGUpe3JldHVybiB1LmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pfSx7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuY29tT2JqLnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLHRoaXMuX29uQ29tT2JqT25NZXNzYWdlKX19XSxyJiZvKGUucHJvdG90eXBlLHIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLHR9KCk7ZS5NZXNzYWdlSGFuZGxlcj11fSwodCxlLHIpPT57ZnVuY3Rpb24gbih0KXtyZXR1cm4gbj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgdH0sbih0KX1PYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZS5NZXRhZGF0YT12b2lkIDA7dmFyIGk9cigxKTtmdW5jdGlvbiBhKHQsZSl7Zm9yKHZhciByPTA7cjxlLmxlbmd0aDtyKyspe3ZhciBpPWVbcl07aS5lbnVtZXJhYmxlPWkuZW51bWVyYWJsZXx8ITEsaS5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGkmJihpLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwodm9pZCAwLGE9ZnVuY3Rpb24odCxlKXtpZigib2JqZWN0IiE9PW4odCl8fG51bGw9PT10KXJldHVybiB0O3ZhciByPXRbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1yKXt2YXIgaT1yLmNhbGwodCwic3RyaW5nIik7aWYoIm9iamVjdCIhPT1uKGkpKXJldHVybiBpO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuIFN0cmluZyh0KX0oaS5rZXkpLCJzeW1ib2wiPT09bihhKT9hOlN0cmluZyhhKSksaSl9dmFyIGF9ZnVuY3Rpb24gbyh0LGUscil7IWZ1bmN0aW9uKHQsZSl7aWYoZS5oYXModCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGluaXRpYWxpemUgdGhlIHNhbWUgcHJpdmF0ZSBlbGVtZW50cyB0d2ljZSBvbiBhbiBvYmplY3QiKX0odCxlKSxlLnNldCh0LHIpfWZ1bmN0aW9uIHModCxlKXtyZXR1cm4gZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5nZXQ/ZS5nZXQuY2FsbCh0KTplLnZhbHVlfSh0LHUodCxlLCJnZXQiKSl9ZnVuY3Rpb24gbCh0LGUscil7cmV0dXJuIGZ1bmN0aW9uKHQsZSxyKXtpZihlLnNldCllLnNldC5jYWxsKHQscik7ZWxzZXtpZighZS53cml0YWJsZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gc2V0IHJlYWQgb25seSBwcml2YXRlIGZpZWxkIik7ZS52YWx1ZT1yfX0odCx1KHQsZSwic2V0Iikscikscn1mdW5jdGlvbiB1KHQsZSxyKXtpZighZS5oYXModCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvICIrcisiIHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7cmV0dXJuIGUuZ2V0KHQpfXZhciBjPW5ldyBXZWFrTWFwLGg9bmV3IFdlYWtNYXAsZj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7dmFyIHI9ZS5wYXJzZWREYXRhLG49ZS5yYXdEYXRhOyFmdW5jdGlvbih0LGUpe2lmKCEodCBpbnN0YW5jZW9mIGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLHQpLG8odGhpcyxjLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxvKHRoaXMsaCx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksbCh0aGlzLGMsciksbCh0aGlzLGgsbil9dmFyIGUscjtyZXR1cm4gZT10LChyPVt7a2V5OiJnZXRSYXciLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHModGhpcyxoKX19LHtrZXk6ImdldCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU7cmV0dXJuIG51bGwhPT0oZT1zKHRoaXMsYykuZ2V0KHQpKSYmdm9pZCAwIT09ZT9lOm51bGx9fSx7a2V5OiJnZXRBbGwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuKDAsaS5vYmplY3RGcm9tTWFwKShzKHRoaXMsYykpfX0se2tleToiaGFzIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gcyh0aGlzLGMpLmhhcyh0KX19XSkmJmEoZS5wcm90b3R5cGUsciksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksdH0oKTtlLk1ldGFkYXRhPWZ9LCh0LGUscik9PntmdW5jdGlvbiBuKHQpe3JldHVybiBuPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiB0fSxuKHQpfU9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxlLk9wdGlvbmFsQ29udGVudENvbmZpZz12b2lkIDA7dmFyIGk9cigxKSxhPXIoMTM5KTtmdW5jdGlvbiBvKHQsZSl7dmFyIHI9InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJnRbU3ltYm9sLml0ZXJhdG9yXXx8dFsiQEBpdGVyYXRvciJdO2lmKCFyKXtpZihBcnJheS5pc0FycmF5KHQpfHwocj1zKHQpKXx8ZSYmdCYmIm51bWJlciI9PXR5cGVvZiB0Lmxlbmd0aCl7ciYmKHQ9cik7dmFyIG49MCxpPWZ1bmN0aW9uKCl7fTtyZXR1cm57czppLG46ZnVuY3Rpb24oKXtyZXR1cm4gbj49dC5sZW5ndGg/e2RvbmU6ITB9Ontkb25lOiExLHZhbHVlOnRbbisrXX19LGU6ZnVuY3Rpb24odCl7dGhyb3cgdH0sZjppfX10aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gaXRlcmF0ZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9dmFyIGEsbz0hMCxsPSExO3JldHVybntzOmZ1bmN0aW9uKCl7cj1yLmNhbGwodCl9LG46ZnVuY3Rpb24oKXt2YXIgdD1yLm5leHQoKTtyZXR1cm4gbz10LmRvbmUsdH0sZTpmdW5jdGlvbih0KXtsPSEwLGE9dH0sZjpmdW5jdGlvbigpe3RyeXtvfHxudWxsPT1yLnJldHVybnx8ci5yZXR1cm4oKX1maW5hbGx5e2lmKGwpdGhyb3cgYX19fX1mdW5jdGlvbiBzKHQsZSl7aWYodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiBsKHQsZSk7dmFyIHI9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpLnNsaWNlKDgsLTEpO3JldHVybiJPYmplY3QiPT09ciYmdC5jb25zdHJ1Y3RvciYmKHI9dC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PXJ8fCJTZXQiPT09cj9BcnJheS5mcm9tKHQpOiJBcmd1bWVudHMiPT09cnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3Qocik/bCh0LGUpOnZvaWQgMH19ZnVuY3Rpb24gbCh0LGUpeyhudWxsPT1lfHxlPnQubGVuZ3RoKSYmKGU9dC5sZW5ndGgpO2Zvcih2YXIgcj0wLG49bmV3IEFycmF5KGUpO3I8ZTtyKyspbltyXT10W3JdO3JldHVybiBufWZ1bmN0aW9uIHUodCxlLHIpe2lmKCFlLmhhcyh0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gZ2V0IHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7cmV0dXJuIHJ9ZnVuY3Rpb24gYyh0LGUpe2lmKCEodCBpbnN0YW5jZW9mIGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIGgodCxlKXtmb3IodmFyIHI9MDtyPGUubGVuZ3RoO3IrKyl7dmFyIGk9ZVtyXTtpLmVudW1lcmFibGU9aS5lbnVtZXJhYmxlfHwhMSxpLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gaSYmKGkud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCh2b2lkIDAsYT1mdW5jdGlvbih0LGUpe2lmKCJvYmplY3QiIT09bih0KXx8bnVsbD09PXQpcmV0dXJuIHQ7dmFyIHI9dFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PXIpe3ZhciBpPXIuY2FsbCh0LCJzdHJpbmciKTtpZigib2JqZWN0IiE9PW4oaSkpcmV0dXJuIGk7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4gU3RyaW5nKHQpfShpLmtleSksInN5bWJvbCI9PT1uKGEpP2E6U3RyaW5nKGEpKSxpKX12YXIgYX1mdW5jdGlvbiBmKHQsZSxyKXtyZXR1cm4gZSYmaCh0LnByb3RvdHlwZSxlKSxyJiZoKHQsciksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksdH1mdW5jdGlvbiBkKHQsZSxyKXtwKHQsZSksZS5zZXQodCxyKX1mdW5jdGlvbiBwKHQsZSl7aWYoZS5oYXModCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGluaXRpYWxpemUgdGhlIHNhbWUgcHJpdmF0ZSBlbGVtZW50cyB0d2ljZSBvbiBhbiBvYmplY3QiKX1mdW5jdGlvbiB2KHQsZSxyKXtyZXR1cm4gZnVuY3Rpb24odCxlLHIpe2lmKGUuc2V0KWUuc2V0LmNhbGwodCxyKTtlbHNle2lmKCFlLndyaXRhYmxlKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byBzZXQgcmVhZCBvbmx5IHByaXZhdGUgZmllbGQiKTtlLnZhbHVlPXJ9fSh0LG0odCxlLCJzZXQiKSxyKSxyfWZ1bmN0aW9uIHkodCxlKXtyZXR1cm4gZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5nZXQ/ZS5nZXQuY2FsbCh0KTplLnZhbHVlfSh0LG0odCxlLCJnZXQiKSl9ZnVuY3Rpb24gbSh0LGUscil7aWYoIWUuaGFzKHQpKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byAiK3IrIiBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiBlLmdldCh0KX12YXIgZz1TeW1ib2woIklOVEVSTkFMIiksYj1uZXcgV2Vha01hcCxfPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLHIpe2ModGhpcyx0KSxkKHRoaXMsYix7d3JpdGFibGU6ITAsdmFsdWU6ITB9KSx0aGlzLm5hbWU9ZSx0aGlzLmludGVudD1yfXJldHVybiBmKHQsW3trZXk6InZpc2libGUiLGdldDpmdW5jdGlvbigpe3JldHVybiB5KHRoaXMsYil9fSx7a2V5OiJfc2V0VmlzaWJsZSIsdmFsdWU6ZnVuY3Rpb24odCxlKXt0IT09ZyYmKDAsaS51bnJlYWNoYWJsZSkoIkludGVybmFsIG1ldGhvZCBgX3NldFZpc2libGVgIGNhbGxlZC4iKSx2KHRoaXMsYixlKX19XSksdH0oKSx3PW5ldyBXZWFrTWFwLEE9bmV3IFdlYWtNYXAsaz1uZXcgV2Vha01hcCxTPW5ldyBXZWFrTWFwLHg9bmV3IFdlYWtTZXQsRT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7dmFyIHI7aWYoYyh0aGlzLHQpLHAodGhpcyxyPXgpLHIuYWRkKHRoaXMpLGQodGhpcyx3LHt3cml0YWJsZTohMCx2YWx1ZTpudWxsfSksZCh0aGlzLEEse3dyaXRhYmxlOiEwLHZhbHVlOm5ldyBNYXB9KSxkKHRoaXMsayx7d3JpdGFibGU6ITAsdmFsdWU6bnVsbH0pLGQodGhpcyxTLHt3cml0YWJsZTohMCx2YWx1ZTpudWxsfSksdGhpcy5uYW1lPW51bGwsdGhpcy5jcmVhdG9yPW51bGwsbnVsbCE9PWUpe3RoaXMubmFtZT1lLm5hbWUsdGhpcy5jcmVhdG9yPWUuY3JlYXRvcix2KHRoaXMsUyxlLm9yZGVyKTt2YXIgbixpPW8oZS5ncm91cHMpO3RyeXtmb3IoaS5zKCk7IShuPWkubigpKS5kb25lOyl7dmFyIGE9bi52YWx1ZTt5KHRoaXMsQSkuc2V0KGEuaWQsbmV3IF8oYS5uYW1lLGEuaW50ZW50KSl9fWNhdGNoKHQpe2kuZSh0KX1maW5hbGx5e2kuZigpfWlmKCJPRkYiPT09ZS5iYXNlU3RhdGUpe3ZhciBzLGw9byh5KHRoaXMsQSkudmFsdWVzKCkpO3RyeXtmb3IobC5zKCk7IShzPWwubigpKS5kb25lOylzLnZhbHVlLl9zZXRWaXNpYmxlKGcsITEpfWNhdGNoKHQpe2wuZSh0KX1maW5hbGx5e2wuZigpfX12YXIgdSxoPW8oZS5vbik7dHJ5e2ZvcihoLnMoKTshKHU9aC5uKCkpLmRvbmU7KXt2YXIgZj11LnZhbHVlO3kodGhpcyxBKS5nZXQoZikuX3NldFZpc2libGUoZywhMCl9fWNhdGNoKHQpe2guZSh0KX1maW5hbGx5e2guZigpfXZhciBtLGI9byhlLm9mZik7dHJ5e2ZvcihiLnMoKTshKG09Yi5uKCkpLmRvbmU7KXt2YXIgRT1tLnZhbHVlO3kodGhpcyxBKS5nZXQoRSkuX3NldFZpc2libGUoZywhMSl9fWNhdGNoKHQpe2IuZSh0KX1maW5hbGx5e2IuZigpfXYodGhpcyxrLHRoaXMuZ2V0SGFzaCgpKX19cmV0dXJuIGYodCxbe2tleToiaXNWaXNpYmxlIix2YWx1ZTpmdW5jdGlvbih0KXtpZigwPT09eSh0aGlzLEEpLnNpemUpcmV0dXJuITA7aWYoIXQpcmV0dXJuKDAsaS53YXJuKSgiT3B0aW9uYWwgY29udGVudCBncm91cCBub3QgZGVmaW5lZC4iKSwhMDtpZigiT0NHIj09PXQudHlwZSlyZXR1cm4geSh0aGlzLEEpLmhhcyh0LmlkKT95KHRoaXMsQSkuZ2V0KHQuaWQpLnZpc2libGU6KCgwLGkud2FybikoIk9wdGlvbmFsIGNvbnRlbnQgZ3JvdXAgbm90IGZvdW5kOiAiLmNvbmNhdCh0LmlkKSksITApO2lmKCJPQ01EIj09PXQudHlwZSl7aWYodC5leHByZXNzaW9uKXJldHVybiB1KHRoaXMseCxQKS5jYWxsKHRoaXMsdC5leHByZXNzaW9uKTtpZighdC5wb2xpY3l8fCJBbnlPbiI9PT10LnBvbGljeSl7dmFyIGUscj1vKHQuaWRzKTt0cnl7Zm9yKHIucygpOyEoZT1yLm4oKSkuZG9uZTspe3ZhciBuPWUudmFsdWU7aWYoIXkodGhpcyxBKS5oYXMobikpcmV0dXJuKDAsaS53YXJuKSgiT3B0aW9uYWwgY29udGVudCBncm91cCBub3QgZm91bmQ6ICIuY29uY2F0KG4pKSwhMDtpZih5KHRoaXMsQSkuZ2V0KG4pLnZpc2libGUpcmV0dXJuITB9fWNhdGNoKHQpe3IuZSh0KX1maW5hbGx5e3IuZigpfXJldHVybiExfWlmKCJBbGxPbiI9PT10LnBvbGljeSl7dmFyIGEscz1vKHQuaWRzKTt0cnl7Zm9yKHMucygpOyEoYT1zLm4oKSkuZG9uZTspe3ZhciBsPWEudmFsdWU7aWYoIXkodGhpcyxBKS5oYXMobCkpcmV0dXJuKDAsaS53YXJuKSgiT3B0aW9uYWwgY29udGVudCBncm91cCBub3QgZm91bmQ6ICIuY29uY2F0KGwpKSwhMDtpZigheSh0aGlzLEEpLmdldChsKS52aXNpYmxlKXJldHVybiExfX1jYXRjaCh0KXtzLmUodCl9ZmluYWxseXtzLmYoKX1yZXR1cm4hMH1pZigiQW55T2ZmIj09PXQucG9saWN5KXt2YXIgYyxoPW8odC5pZHMpO3RyeXtmb3IoaC5zKCk7IShjPWgubigpKS5kb25lOyl7dmFyIGY9Yy52YWx1ZTtpZigheSh0aGlzLEEpLmhhcyhmKSlyZXR1cm4oMCxpLndhcm4pKCJPcHRpb25hbCBjb250ZW50IGdyb3VwIG5vdCBmb3VuZDogIi5jb25jYXQoZikpLCEwO2lmKCF5KHRoaXMsQSkuZ2V0KGYpLnZpc2libGUpcmV0dXJuITB9fWNhdGNoKHQpe2guZSh0KX1maW5hbGx5e2guZigpfXJldHVybiExfWlmKCJBbGxPZmYiPT09dC5wb2xpY3kpe3ZhciBkLHA9byh0Lmlkcyk7dHJ5e2ZvcihwLnMoKTshKGQ9cC5uKCkpLmRvbmU7KXt2YXIgdj1kLnZhbHVlO2lmKCF5KHRoaXMsQSkuaGFzKHYpKXJldHVybigwLGkud2FybikoIk9wdGlvbmFsIGNvbnRlbnQgZ3JvdXAgbm90IGZvdW5kOiAiLmNvbmNhdCh2KSksITA7aWYoeSh0aGlzLEEpLmdldCh2KS52aXNpYmxlKXJldHVybiExfX1jYXRjaCh0KXtwLmUodCl9ZmluYWxseXtwLmYoKX1yZXR1cm4hMH1yZXR1cm4oMCxpLndhcm4pKCJVbmtub3duIG9wdGlvbmFsIGNvbnRlbnQgcG9saWN5ICIuY29uY2F0KHQucG9saWN5LCIuIikpLCEwfXJldHVybigwLGkud2FybikoIlVua25vd24gZ3JvdXAgdHlwZSAiLmNvbmNhdCh0LnR5cGUsIi4iKSksITB9fSx7a2V5OiJzZXRWaXNpYmlsaXR5Iix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT0hKGFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdKXx8YXJndW1lbnRzWzFdO3kodGhpcyxBKS5oYXModCk/KHkodGhpcyxBKS5nZXQodCkuX3NldFZpc2libGUoZywhIWUpLHYodGhpcyx3LG51bGwpKTooMCxpLndhcm4pKCJPcHRpb25hbCBjb250ZW50IGdyb3VwIG5vdCBmb3VuZDogIi5jb25jYXQodCkpfX0se2tleToiaGFzSW5pdGlhbFZpc2liaWxpdHkiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldEhhc2goKT09PXkodGhpcyxrKX19LHtrZXk6ImdldE9yZGVyIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB5KHRoaXMsQSkuc2l6ZT95KHRoaXMsUyk/eSh0aGlzLFMpLnNsaWNlKCk6ZnVuY3Rpb24odCl7aWYoQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gbCh0KX0odD15KHRoaXMsQSkua2V5cygpKXx8ZnVuY3Rpb24odCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJm51bGwhPXRbU3ltYm9sLml0ZXJhdG9yXXx8bnVsbCE9dFsiQEBpdGVyYXRvciJdKXJldHVybiBBcnJheS5mcm9tKHQpfSh0KXx8cyh0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKTpudWxsO3ZhciB0fX0se2tleToiZ2V0R3JvdXBzIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB5KHRoaXMsQSkuc2l6ZT4wPygwLGkub2JqZWN0RnJvbU1hcCkoeSh0aGlzLEEpKTpudWxsfX0se2tleToiZ2V0R3JvdXAiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB5KHRoaXMsQSkuZ2V0KHQpfHxudWxsfX0se2tleToiZ2V0SGFzaCIsdmFsdWU6ZnVuY3Rpb24oKXtpZihudWxsIT09eSh0aGlzLHcpKXJldHVybiB5KHRoaXMsdyk7dmFyIHQsZSxyLG49bmV3IGEuTXVybXVySGFzaDNfNjQsaT1vKHkodGhpcyxBKSk7dHJ5e2ZvcihpLnMoKTshKHQ9aS5uKCkpLmRvbmU7KXt2YXIgbD0oZT10LnZhbHVlLHI9MixmdW5jdGlvbih0KXtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiB0fShlKXx8ZnVuY3Rpb24odCxlKXt2YXIgcj1udWxsPT10P251bGw6InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJnRbU3ltYm9sLml0ZXJhdG9yXXx8dFsiQEBpdGVyYXRvciJdO2lmKG51bGwhPXIpe3ZhciBuLGksYSxvLHM9W10sbD0hMCx1PSExO3RyeXtpZihhPShyPXIuY2FsbCh0KSkubmV4dCwwPT09ZSl7aWYoT2JqZWN0KHIpIT09cilyZXR1cm47bD0hMX1lbHNlIGZvcig7IShsPShuPWEuY2FsbChyKSkuZG9uZSkmJihzLnB1c2gobi52YWx1ZSkscy5sZW5ndGghPT1lKTtsPSEwKTt9Y2F0Y2godCl7dT0hMCxpPXR9ZmluYWxseXt0cnl7aWYoIWwmJm51bGwhPXIucmV0dXJuJiYobz1yLnJldHVybigpLE9iamVjdChvKSE9PW8pKXJldHVybn1maW5hbGx5e2lmKHUpdGhyb3cgaX19cmV0dXJuIHN9fShlLHIpfHxzKGUscil8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKSksdT1sWzBdLGM9bFsxXTtuLnVwZGF0ZSgiIi5jb25jYXQodSwiOiIpLmNvbmNhdChjLnZpc2libGUpKX19Y2F0Y2godCl7aS5lKHQpfWZpbmFsbHl7aS5mKCl9cmV0dXJuIHYodGhpcyx3LG4uaGV4ZGlnZXN0KCkpfX1dKSx0fSgpO2Z1bmN0aW9uIFAodCl7dmFyIGU9dC5sZW5ndGg7aWYoZTwyKXJldHVybiEwO2Zvcih2YXIgcj10WzBdLG49MTtuPGU7bisrKXt2YXIgYT10W25dLG89dm9pZCAwO2lmKEFycmF5LmlzQXJyYXkoYSkpbz11KHRoaXMseCxQKS5jYWxsKHRoaXMsYSk7ZWxzZXtpZigheSh0aGlzLEEpLmhhcyhhKSlyZXR1cm4oMCxpLndhcm4pKCJPcHRpb25hbCBjb250ZW50IGdyb3VwIG5vdCBmb3VuZDogIi5jb25jYXQoYSkpLCEwO289eSh0aGlzLEEpLmdldChhKS52aXNpYmxlfXN3aXRjaChyKXtjYXNlIkFuZCI6aWYoIW8pcmV0dXJuITE7YnJlYWs7Y2FzZSJPciI6aWYobylyZXR1cm4hMDticmVhaztjYXNlIk5vdCI6cmV0dXJuIW87ZGVmYXVsdDpyZXR1cm4hMH19cmV0dXJuIkFuZCI9PT1yfWUuT3B0aW9uYWxDb250ZW50Q29uZmlnPUV9LCh0LGUscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZS5QREZEYXRhVHJhbnNwb3J0U3RyZWFtPXZvaWQgMDt2YXIgbj1yKDEpLGk9cigxMzcpO2Z1bmN0aW9uIGEoKXthPWZ1bmN0aW9uKCl7cmV0dXJuIHR9O3ZhciB0PXt9LGU9T2JqZWN0LnByb3RvdHlwZSxyPWUuaGFzT3duUHJvcGVydHksbj1PYmplY3QuZGVmaW5lUHJvcGVydHl8fGZ1bmN0aW9uKHQsZSxyKXt0W2VdPXIudmFsdWV9LGk9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbD9TeW1ib2w6e30sbz1pLml0ZXJhdG9yfHwiQEBpdGVyYXRvciIscz1pLmFzeW5jSXRlcmF0b3J8fCJAQGFzeW5jSXRlcmF0b3IiLHU9aS50b1N0cmluZ1RhZ3x8IkBAdG9TdHJpbmdUYWciO2Z1bmN0aW9uIGModCxlLHIpe3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLHt2YWx1ZTpyLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSksdFtlXX10cnl7Yyh7fSwiIil9Y2F0Y2godCl7Yz1mdW5jdGlvbih0LGUscil7cmV0dXJuIHRbZV09cn19ZnVuY3Rpb24gaCh0LGUscixpKXt2YXIgYT1lJiZlLnByb3RvdHlwZSBpbnN0YW5jZW9mIHA/ZTpwLG89T2JqZWN0LmNyZWF0ZShhLnByb3RvdHlwZSkscz1uZXcgUChpfHxbXSk7cmV0dXJuIG4obywiX2ludm9rZSIse3ZhbHVlOmsodCxyLHMpfSksb31mdW5jdGlvbiBmKHQsZSxyKXt0cnl7cmV0dXJue3R5cGU6Im5vcm1hbCIsYXJnOnQuY2FsbChlLHIpfX1jYXRjaCh0KXtyZXR1cm57dHlwZToidGhyb3ciLGFyZzp0fX19dC53cmFwPWg7dmFyIGQ9e307ZnVuY3Rpb24gcCgpe31mdW5jdGlvbiB2KCl7fWZ1bmN0aW9uIHkoKXt9dmFyIG09e307YyhtLG8sKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSk7dmFyIGc9T2JqZWN0LmdldFByb3RvdHlwZU9mLGI9ZyYmZyhnKFQoW10pKSk7YiYmYiE9PWUmJnIuY2FsbChiLG8pJiYobT1iKTt2YXIgXz15LnByb3RvdHlwZT1wLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKG0pO2Z1bmN0aW9uIHcodCl7WyJuZXh0IiwidGhyb3ciLCJyZXR1cm4iXS5mb3JFYWNoKChmdW5jdGlvbihlKXtjKHQsZSwoZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2ludm9rZShlLHQpfSkpfSkpfWZ1bmN0aW9uIEEodCxlKXtmdW5jdGlvbiBpKG4sYSxvLHMpe3ZhciB1PWYodFtuXSx0LGEpO2lmKCJ0aHJvdyIhPT11LnR5cGUpe3ZhciBjPXUuYXJnLGg9Yy52YWx1ZTtyZXR1cm4gaCYmIm9iamVjdCI9PWwoaCkmJnIuY2FsbChoLCJfX2F3YWl0Iik/ZS5yZXNvbHZlKGguX19hd2FpdCkudGhlbigoZnVuY3Rpb24odCl7aSgibmV4dCIsdCxvLHMpfSksKGZ1bmN0aW9uKHQpe2koInRocm93Iix0LG8scyl9KSk6ZS5yZXNvbHZlKGgpLnRoZW4oKGZ1bmN0aW9uKHQpe2MudmFsdWU9dCxvKGMpfSksKGZ1bmN0aW9uKHQpe3JldHVybiBpKCJ0aHJvdyIsdCxvLHMpfSkpfXModS5hcmcpfXZhciBhO24odGhpcywiX2ludm9rZSIse3ZhbHVlOmZ1bmN0aW9uKHQscil7ZnVuY3Rpb24gbigpe3JldHVybiBuZXcgZSgoZnVuY3Rpb24oZSxuKXtpKHQscixlLG4pfSkpfXJldHVybiBhPWE/YS50aGVuKG4sbik6bigpfX0pfWZ1bmN0aW9uIGsodCxlLHIpe3ZhciBuPSJzdXNwZW5kZWRTdGFydCI7cmV0dXJuIGZ1bmN0aW9uKGksYSl7aWYoImV4ZWN1dGluZyI9PT1uKXRocm93IG5ldyBFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgcnVubmluZyIpO2lmKCJjb21wbGV0ZWQiPT09bil7aWYoInRocm93Ij09PWkpdGhyb3cgYTtyZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9fWZvcihyLm1ldGhvZD1pLHIuYXJnPWE7Oyl7dmFyIG89ci5kZWxlZ2F0ZTtpZihvKXt2YXIgcz1TKG8scik7aWYocyl7aWYocz09PWQpY29udGludWU7cmV0dXJuIHN9fWlmKCJuZXh0Ij09PXIubWV0aG9kKXIuc2VudD1yLl9zZW50PXIuYXJnO2Vsc2UgaWYoInRocm93Ij09PXIubWV0aG9kKXtpZigic3VzcGVuZGVkU3RhcnQiPT09bil0aHJvdyBuPSJjb21wbGV0ZWQiLHIuYXJnO3IuZGlzcGF0Y2hFeGNlcHRpb24oci5hcmcpfWVsc2UicmV0dXJuIj09PXIubWV0aG9kJiZyLmFicnVwdCgicmV0dXJuIixyLmFyZyk7bj0iZXhlY3V0aW5nIjt2YXIgbD1mKHQsZSxyKTtpZigibm9ybWFsIj09PWwudHlwZSl7aWYobj1yLmRvbmU/ImNvbXBsZXRlZCI6InN1c3BlbmRlZFlpZWxkIixsLmFyZz09PWQpY29udGludWU7cmV0dXJue3ZhbHVlOmwuYXJnLGRvbmU6ci5kb25lfX0idGhyb3ciPT09bC50eXBlJiYobj0iY29tcGxldGVkIixyLm1ldGhvZD0idGhyb3ciLHIuYXJnPWwuYXJnKX19fWZ1bmN0aW9uIFModCxlKXt2YXIgcj1lLm1ldGhvZCxuPXQuaXRlcmF0b3Jbcl07aWYodm9pZCAwPT09bilyZXR1cm4gZS5kZWxlZ2F0ZT1udWxsLCJ0aHJvdyI9PT1yJiZ0Lml0ZXJhdG9yLnJldHVybiYmKGUubWV0aG9kPSJyZXR1cm4iLGUuYXJnPXZvaWQgMCxTKHQsZSksInRocm93Ij09PWUubWV0aG9kKXx8InJldHVybiIhPT1yJiYoZS5tZXRob2Q9InRocm93IixlLmFyZz1uZXcgVHlwZUVycm9yKCJUaGUgaXRlcmF0b3IgZG9lcyBub3QgcHJvdmlkZSBhICciK3IrIicgbWV0aG9kIikpLGQ7dmFyIGk9ZihuLHQuaXRlcmF0b3IsZS5hcmcpO2lmKCJ0aHJvdyI9PT1pLnR5cGUpcmV0dXJuIGUubWV0aG9kPSJ0aHJvdyIsZS5hcmc9aS5hcmcsZS5kZWxlZ2F0ZT1udWxsLGQ7dmFyIGE9aS5hcmc7cmV0dXJuIGE/YS5kb25lPyhlW3QucmVzdWx0TmFtZV09YS52YWx1ZSxlLm5leHQ9dC5uZXh0TG9jLCJyZXR1cm4iIT09ZS5tZXRob2QmJihlLm1ldGhvZD0ibmV4dCIsZS5hcmc9dm9pZCAwKSxlLmRlbGVnYXRlPW51bGwsZCk6YTooZS5tZXRob2Q9InRocm93IixlLmFyZz1uZXcgVHlwZUVycm9yKCJpdGVyYXRvciByZXN1bHQgaXMgbm90IGFuIG9iamVjdCIpLGUuZGVsZWdhdGU9bnVsbCxkKX1mdW5jdGlvbiB4KHQpe3ZhciBlPXt0cnlMb2M6dFswXX07MSBpbiB0JiYoZS5jYXRjaExvYz10WzFdKSwyIGluIHQmJihlLmZpbmFsbHlMb2M9dFsyXSxlLmFmdGVyTG9jPXRbM10pLHRoaXMudHJ5RW50cmllcy5wdXNoKGUpfWZ1bmN0aW9uIEUodCl7dmFyIGU9dC5jb21wbGV0aW9ufHx7fTtlLnR5cGU9Im5vcm1hbCIsZGVsZXRlIGUuYXJnLHQuY29tcGxldGlvbj1lfWZ1bmN0aW9uIFAodCl7dGhpcy50cnlFbnRyaWVzPVt7dHJ5TG9jOiJyb290In1dLHQuZm9yRWFjaCh4LHRoaXMpLHRoaXMucmVzZXQoITApfWZ1bmN0aW9uIFQodCl7aWYodCl7dmFyIGU9dFtvXTtpZihlKXJldHVybiBlLmNhbGwodCk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHQubmV4dClyZXR1cm4gdDtpZighaXNOYU4odC5sZW5ndGgpKXt2YXIgbj0tMSxpPWZ1bmN0aW9uIGUoKXtmb3IoOysrbjx0Lmxlbmd0aDspaWYoci5jYWxsKHQsbikpcmV0dXJuIGUudmFsdWU9dFtuXSxlLmRvbmU9ITEsZTtyZXR1cm4gZS52YWx1ZT12b2lkIDAsZS5kb25lPSEwLGV9O3JldHVybiBpLm5leHQ9aX19cmV0dXJue25leHQ6Q319ZnVuY3Rpb24gQygpe3JldHVybnt2YWx1ZTp2b2lkIDAsZG9uZTohMH19cmV0dXJuIHYucHJvdG90eXBlPXksbihfLCJjb25zdHJ1Y3RvciIse3ZhbHVlOnksY29uZmlndXJhYmxlOiEwfSksbih5LCJjb25zdHJ1Y3RvciIse3ZhbHVlOnYsY29uZmlndXJhYmxlOiEwfSksdi5kaXNwbGF5TmFtZT1jKHksdSwiR2VuZXJhdG9yRnVuY3Rpb24iKSx0LmlzR2VuZXJhdG9yRnVuY3Rpb249ZnVuY3Rpb24odCl7dmFyIGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQmJnQuY29uc3RydWN0b3I7cmV0dXJuISFlJiYoZT09PXZ8fCJHZW5lcmF0b3JGdW5jdGlvbiI9PT0oZS5kaXNwbGF5TmFtZXx8ZS5uYW1lKSl9LHQubWFyaz1mdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZih0LHkpOih0Ll9fcHJvdG9fXz15LGModCx1LCJHZW5lcmF0b3JGdW5jdGlvbiIpKSx0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKF8pLHR9LHQuYXdyYXA9ZnVuY3Rpb24odCl7cmV0dXJue19fYXdhaXQ6dH19LHcoQS5wcm90b3R5cGUpLGMoQS5wcm90b3R5cGUscywoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSx0LkFzeW5jSXRlcmF0b3I9QSx0LmFzeW5jPWZ1bmN0aW9uKGUscixuLGksYSl7dm9pZCAwPT09YSYmKGE9UHJvbWlzZSk7dmFyIG89bmV3IEEoaChlLHIsbixpKSxhKTtyZXR1cm4gdC5pc0dlbmVyYXRvckZ1bmN0aW9uKHIpP286by5uZXh0KCkudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIHQuZG9uZT90LnZhbHVlOm8ubmV4dCgpfSkpfSx3KF8pLGMoXyx1LCJHZW5lcmF0b3IiKSxjKF8sbywoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSxjKF8sInRvU3RyaW5nIiwoZnVuY3Rpb24oKXtyZXR1cm4iW29iamVjdCBHZW5lcmF0b3JdIn0pKSx0LmtleXM9ZnVuY3Rpb24odCl7dmFyIGU9T2JqZWN0KHQpLHI9W107Zm9yKHZhciBuIGluIGUpci5wdXNoKG4pO3JldHVybiByLnJldmVyc2UoKSxmdW5jdGlvbiB0KCl7Zm9yKDtyLmxlbmd0aDspe3ZhciBuPXIucG9wKCk7aWYobiBpbiBlKXJldHVybiB0LnZhbHVlPW4sdC5kb25lPSExLHR9cmV0dXJuIHQuZG9uZT0hMCx0fX0sdC52YWx1ZXM9VCxQLnByb3RvdHlwZT17Y29uc3RydWN0b3I6UCxyZXNldDpmdW5jdGlvbih0KXtpZih0aGlzLnByZXY9MCx0aGlzLm5leHQ9MCx0aGlzLnNlbnQ9dGhpcy5fc2VudD12b2lkIDAsdGhpcy5kb25lPSExLHRoaXMuZGVsZWdhdGU9bnVsbCx0aGlzLm1ldGhvZD0ibmV4dCIsdGhpcy5hcmc9dm9pZCAwLHRoaXMudHJ5RW50cmllcy5mb3JFYWNoKEUpLCF0KWZvcih2YXIgZSBpbiB0aGlzKSJ0Ij09PWUuY2hhckF0KDApJiZyLmNhbGwodGhpcyxlKSYmIWlzTmFOKCtlLnNsaWNlKDEpKSYmKHRoaXNbZV09dm9pZCAwKX0sc3RvcDpmdW5jdGlvbigpe3RoaXMuZG9uZT0hMDt2YXIgdD10aGlzLnRyeUVudHJpZXNbMF0uY29tcGxldGlvbjtpZigidGhyb3ciPT09dC50eXBlKXRocm93IHQuYXJnO3JldHVybiB0aGlzLnJ2YWx9LGRpc3BhdGNoRXhjZXB0aW9uOmZ1bmN0aW9uKHQpe2lmKHRoaXMuZG9uZSl0aHJvdyB0O3ZhciBlPXRoaXM7ZnVuY3Rpb24gbihyLG4pe3JldHVybiBvLnR5cGU9InRocm93IixvLmFyZz10LGUubmV4dD1yLG4mJihlLm1ldGhvZD0ibmV4dCIsZS5hcmc9dm9pZCAwKSwhIW59Zm9yKHZhciBpPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtpPj0wOy0taSl7dmFyIGE9dGhpcy50cnlFbnRyaWVzW2ldLG89YS5jb21wbGV0aW9uO2lmKCJyb290Ij09PWEudHJ5TG9jKXJldHVybiBuKCJlbmQiKTtpZihhLnRyeUxvYzw9dGhpcy5wcmV2KXt2YXIgcz1yLmNhbGwoYSwiY2F0Y2hMb2MiKSxsPXIuY2FsbChhLCJmaW5hbGx5TG9jIik7aWYocyYmbCl7aWYodGhpcy5wcmV2PGEuY2F0Y2hMb2MpcmV0dXJuIG4oYS5jYXRjaExvYywhMCk7aWYodGhpcy5wcmV2PGEuZmluYWxseUxvYylyZXR1cm4gbihhLmZpbmFsbHlMb2MpfWVsc2UgaWYocyl7aWYodGhpcy5wcmV2PGEuY2F0Y2hMb2MpcmV0dXJuIG4oYS5jYXRjaExvYywhMCl9ZWxzZXtpZighbCl0aHJvdyBuZXcgRXJyb3IoInRyeSBzdGF0ZW1lbnQgd2l0aG91dCBjYXRjaCBvciBmaW5hbGx5Iik7aWYodGhpcy5wcmV2PGEuZmluYWxseUxvYylyZXR1cm4gbihhLmZpbmFsbHlMb2MpfX19fSxhYnJ1cHQ6ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO24+PTA7LS1uKXt2YXIgaT10aGlzLnRyeUVudHJpZXNbbl07aWYoaS50cnlMb2M8PXRoaXMucHJldiYmci5jYWxsKGksImZpbmFsbHlMb2MiKSYmdGhpcy5wcmV2PGkuZmluYWxseUxvYyl7dmFyIGE9aTticmVha319YSYmKCJicmVhayI9PT10fHwiY29udGludWUiPT09dCkmJmEudHJ5TG9jPD1lJiZlPD1hLmZpbmFsbHlMb2MmJihhPW51bGwpO3ZhciBvPWE/YS5jb21wbGV0aW9uOnt9O3JldHVybiBvLnR5cGU9dCxvLmFyZz1lLGE/KHRoaXMubWV0aG9kPSJuZXh0Iix0aGlzLm5leHQ9YS5maW5hbGx5TG9jLGQpOnRoaXMuY29tcGxldGUobyl9LGNvbXBsZXRlOmZ1bmN0aW9uKHQsZSl7aWYoInRocm93Ij09PXQudHlwZSl0aHJvdyB0LmFyZztyZXR1cm4iYnJlYWsiPT09dC50eXBlfHwiY29udGludWUiPT09dC50eXBlP3RoaXMubmV4dD10LmFyZzoicmV0dXJuIj09PXQudHlwZT8odGhpcy5ydmFsPXRoaXMuYXJnPXQuYXJnLHRoaXMubWV0aG9kPSJyZXR1cm4iLHRoaXMubmV4dD0iZW5kIik6Im5vcm1hbCI9PT10LnR5cGUmJmUmJih0aGlzLm5leHQ9ZSksZH0sZmluaXNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7ZT49MDstLWUpe3ZhciByPXRoaXMudHJ5RW50cmllc1tlXTtpZihyLmZpbmFsbHlMb2M9PT10KXJldHVybiB0aGlzLmNvbXBsZXRlKHIuY29tcGxldGlvbixyLmFmdGVyTG9jKSxFKHIpLGR9fSxjYXRjaDpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2U+PTA7LS1lKXt2YXIgcj10aGlzLnRyeUVudHJpZXNbZV07aWYoci50cnlMb2M9PT10KXt2YXIgbj1yLmNvbXBsZXRpb247aWYoInRocm93Ij09PW4udHlwZSl7dmFyIGk9bi5hcmc7RShyKX1yZXR1cm4gaX19dGhyb3cgbmV3IEVycm9yKCJpbGxlZ2FsIGNhdGNoIGF0dGVtcHQiKX0sZGVsZWdhdGVZaWVsZDpmdW5jdGlvbih0LGUscil7cmV0dXJuIHRoaXMuZGVsZWdhdGU9e2l0ZXJhdG9yOlQodCkscmVzdWx0TmFtZTplLG5leHRMb2M6cn0sIm5leHQiPT09dGhpcy5tZXRob2QmJih0aGlzLmFyZz12b2lkIDApLGR9fSx0fWZ1bmN0aW9uIG8odCxlLHIsbixpLGEsbyl7dHJ5e3ZhciBzPXRbYV0obyksbD1zLnZhbHVlfWNhdGNoKHQpe3JldHVybiB2b2lkIHIodCl9cy5kb25lP2UobCk6UHJvbWlzZS5yZXNvbHZlKGwpLnRoZW4obixpKX1mdW5jdGlvbiBzKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXRoaXMscj1hcmd1bWVudHM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihuLGkpe3ZhciBhPXQuYXBwbHkoZSxyKTtmdW5jdGlvbiBzKHQpe28oYSxuLGkscyxsLCJuZXh0Iix0KX1mdW5jdGlvbiBsKHQpe28oYSxuLGkscyxsLCJ0aHJvdyIsdCl9cyh2b2lkIDApfSkpfX1mdW5jdGlvbiBsKHQpe3JldHVybiBsPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiB0fSxsKHQpfWZ1bmN0aW9uIHUodCxlKXt2YXIgcj0idW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmdFtTeW1ib2wuaXRlcmF0b3JdfHx0WyJAQGl0ZXJhdG9yIl07aWYoIXIpe2lmKEFycmF5LmlzQXJyYXkodCl8fChyPWZ1bmN0aW9uKHQsZSl7aWYodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiBjKHQsZSk7dmFyIHI9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpLnNsaWNlKDgsLTEpO3JldHVybiJPYmplY3QiPT09ciYmdC5jb25zdHJ1Y3RvciYmKHI9dC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PXJ8fCJTZXQiPT09cj9BcnJheS5mcm9tKHQpOiJBcmd1bWVudHMiPT09cnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3Qocik/Yyh0LGUpOnZvaWQgMH19KHQpKXx8ZSYmdCYmIm51bWJlciI9PXR5cGVvZiB0Lmxlbmd0aCl7ciYmKHQ9cik7dmFyIG49MCxpPWZ1bmN0aW9uKCl7fTtyZXR1cm57czppLG46ZnVuY3Rpb24oKXtyZXR1cm4gbj49dC5sZW5ndGg/e2RvbmU6ITB9Ontkb25lOiExLHZhbHVlOnRbbisrXX19LGU6ZnVuY3Rpb24odCl7dGhyb3cgdH0sZjppfX10aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gaXRlcmF0ZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9dmFyIGEsbz0hMCxzPSExO3JldHVybntzOmZ1bmN0aW9uKCl7cj1yLmNhbGwodCl9LG46ZnVuY3Rpb24oKXt2YXIgdD1yLm5leHQoKTtyZXR1cm4gbz10LmRvbmUsdH0sZTpmdW5jdGlvbih0KXtzPSEwLGE9dH0sZjpmdW5jdGlvbigpe3RyeXtvfHxudWxsPT1yLnJldHVybnx8ci5yZXR1cm4oKX1maW5hbGx5e2lmKHMpdGhyb3cgYX19fX1mdW5jdGlvbiBjKHQsZSl7KG51bGw9PWV8fGU+dC5sZW5ndGgpJiYoZT10Lmxlbmd0aCk7Zm9yKHZhciByPTAsbj1uZXcgQXJyYXkoZSk7cjxlO3IrKyluW3JdPXRbcl07cmV0dXJuIG59ZnVuY3Rpb24gaCh0LGUpe2lmKCEodCBpbnN0YW5jZW9mIGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIGYodCxlKXtmb3IodmFyIHI9MDtyPGUubGVuZ3RoO3IrKyl7dmFyIG49ZVtyXTtuLmVudW1lcmFibGU9bi5lbnVtZXJhYmxlfHwhMSxuLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gbiYmKG4ud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCh2b2lkIDAsaT1mdW5jdGlvbih0LGUpe2lmKCJvYmplY3QiIT09bCh0KXx8bnVsbD09PXQpcmV0dXJuIHQ7dmFyIHI9dFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PXIpe3ZhciBuPXIuY2FsbCh0LCJzdHJpbmciKTtpZigib2JqZWN0IiE9PWwobikpcmV0dXJuIG47dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4gU3RyaW5nKHQpfShuLmtleSksInN5bWJvbCI9PT1sKGkpP2k6U3RyaW5nKGkpKSxuKX12YXIgaX1mdW5jdGlvbiBkKHQsZSxyKXtyZXR1cm4gZSYmZih0LnByb3RvdHlwZSxlKSxyJiZmKHQsciksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksdH12YXIgcD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSxyKXt2YXIgaT10aGlzO2godGhpcyx0KSwoMCxuLmFzc2VydCkociwnUERGRGF0YVRyYW5zcG9ydFN0cmVhbSAtIG1pc3NpbmcgcmVxdWlyZWQgInBkZkRhdGFSYW5nZVRyYW5zcG9ydCIgYXJndW1lbnQuJyksdGhpcy5fcXVldWVkQ2h1bmtzPVtdLHRoaXMuX3Byb2dyZXNzaXZlRG9uZT1lLnByb2dyZXNzaXZlRG9uZXx8ITEsdGhpcy5fY29udGVudERpc3Bvc2l0aW9uRmlsZW5hbWU9ZS5jb250ZW50RGlzcG9zaXRpb25GaWxlbmFtZXx8bnVsbDt2YXIgYT1lLmluaXRpYWxEYXRhO2lmKChudWxsPT1hP3ZvaWQgMDphLmxlbmd0aCk+MCl7dmFyIG89bmV3IFVpbnQ4QXJyYXkoYSkuYnVmZmVyO3RoaXMuX3F1ZXVlZENodW5rcy5wdXNoKG8pfXRoaXMuX3BkZkRhdGFSYW5nZVRyYW5zcG9ydD1yLHRoaXMuX2lzU3RyZWFtaW5nU3VwcG9ydGVkPSFlLmRpc2FibGVTdHJlYW0sdGhpcy5faXNSYW5nZVN1cHBvcnRlZD0hZS5kaXNhYmxlUmFuZ2UsdGhpcy5fY29udGVudExlbmd0aD1lLmxlbmd0aCx0aGlzLl9mdWxsUmVxdWVzdFJlYWRlcj1udWxsLHRoaXMuX3JhbmdlUmVhZGVycz1bXSx0aGlzLl9wZGZEYXRhUmFuZ2VUcmFuc3BvcnQuYWRkUmFuZ2VMaXN0ZW5lcigoZnVuY3Rpb24odCxlKXtpLl9vblJlY2VpdmVEYXRhKHtiZWdpbjp0LGNodW5rOmV9KX0pKSx0aGlzLl9wZGZEYXRhUmFuZ2VUcmFuc3BvcnQuYWRkUHJvZ3Jlc3NMaXN0ZW5lcigoZnVuY3Rpb24odCxlKXtpLl9vblByb2dyZXNzKHtsb2FkZWQ6dCx0b3RhbDplfSl9KSksdGhpcy5fcGRmRGF0YVJhbmdlVHJhbnNwb3J0LmFkZFByb2dyZXNzaXZlUmVhZExpc3RlbmVyKChmdW5jdGlvbih0KXtpLl9vblJlY2VpdmVEYXRhKHtjaHVuazp0fSl9KSksdGhpcy5fcGRmRGF0YVJhbmdlVHJhbnNwb3J0LmFkZFByb2dyZXNzaXZlRG9uZUxpc3RlbmVyKChmdW5jdGlvbigpe2kuX29uUHJvZ3Jlc3NpdmVEb25lKCl9KSksdGhpcy5fcGRmRGF0YVJhbmdlVHJhbnNwb3J0LnRyYW5zcG9ydFJlYWR5KCl9cmV0dXJuIGQodCxbe2tleToiX29uUmVjZWl2ZURhdGEiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPW5ldyBVaW50OEFycmF5KHQuY2h1bmspLmJ1ZmZlcjtpZih2b2lkIDA9PT10LmJlZ2luKXRoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyP3RoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyLl9lbnF1ZXVlKGUpOnRoaXMuX3F1ZXVlZENodW5rcy5wdXNoKGUpO2Vsc2V7dmFyIHI9dGhpcy5fcmFuZ2VSZWFkZXJzLnNvbWUoKGZ1bmN0aW9uKHIpe3JldHVybiByLl9iZWdpbj09PXQuYmVnaW4mJihyLl9lbnF1ZXVlKGUpLCEwKX0pKTsoMCxuLmFzc2VydCkociwiX29uUmVjZWl2ZURhdGEgLSBubyBgUERGRGF0YVRyYW5zcG9ydFN0cmVhbVJhbmdlUmVhZGVyYCBpbnN0YW5jZSBmb3VuZC4iKX19fSx7a2V5OiJfcHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoIixnZXQ6ZnVuY3Rpb24oKXt2YXIgdCxlO3JldHVybiBudWxsIT09KHQ9bnVsbD09PShlPXRoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyKXx8dm9pZCAwPT09ZT92b2lkIDA6ZS5fbG9hZGVkKSYmdm9pZCAwIT09dD90OjB9fSx7a2V5OiJfb25Qcm9ncmVzcyIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUscixuLGk7dm9pZCAwPT09dC50b3RhbD9udWxsPT09KGU9dGhpcy5fcmFuZ2VSZWFkZXJzWzBdKXx8dm9pZCAwPT09ZXx8bnVsbD09PShyPWUub25Qcm9ncmVzcyl8fHZvaWQgMD09PXJ8fHIuY2FsbChlLHtsb2FkZWQ6dC5sb2FkZWR9KTpudWxsPT09KG49dGhpcy5fZnVsbFJlcXVlc3RSZWFkZXIpfHx2b2lkIDA9PT1ufHxudWxsPT09KGk9bi5vblByb2dyZXNzKXx8dm9pZCAwPT09aXx8aS5jYWxsKG4se2xvYWRlZDp0LmxvYWRlZCx0b3RhbDp0LnRvdGFsfSl9fSx7a2V5OiJfb25Qcm9ncmVzc2l2ZURvbmUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ7bnVsbD09PSh0PXRoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyKXx8dm9pZCAwPT09dHx8dC5wcm9ncmVzc2l2ZURvbmUoKSx0aGlzLl9wcm9ncmVzc2l2ZURvbmU9ITB9fSx7a2V5OiJfcmVtb3ZlUmFuZ2VSZWFkZXIiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3JhbmdlUmVhZGVycy5pbmRleE9mKHQpO2U+PTAmJnRoaXMuX3JhbmdlUmVhZGVycy5zcGxpY2UoZSwxKX19LHtrZXk6ImdldEZ1bGxSZWFkZXIiLHZhbHVlOmZ1bmN0aW9uKCl7KDAsbi5hc3NlcnQpKCF0aGlzLl9mdWxsUmVxdWVzdFJlYWRlciwiUERGRGF0YVRyYW5zcG9ydFN0cmVhbS5nZXRGdWxsUmVhZGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbmNlLiIpO3ZhciB0PXRoaXMuX3F1ZXVlZENodW5rcztyZXR1cm4gdGhpcy5fcXVldWVkQ2h1bmtzPW51bGwsbmV3IHYodGhpcyx0LHRoaXMuX3Byb2dyZXNzaXZlRG9uZSx0aGlzLl9jb250ZW50RGlzcG9zaXRpb25GaWxlbmFtZSl9fSx7a2V5OiJnZXRSYW5nZVJlYWRlciIsdmFsdWU6ZnVuY3Rpb24odCxlKXtpZihlPD10aGlzLl9wcm9ncmVzc2l2ZURhdGFMZW5ndGgpcmV0dXJuIG51bGw7dmFyIHI9bmV3IHkodGhpcyx0LGUpO3JldHVybiB0aGlzLl9wZGZEYXRhUmFuZ2VUcmFuc3BvcnQucmVxdWVzdERhdGFSYW5nZSh0LGUpLHRoaXMuX3JhbmdlUmVhZGVycy5wdXNoKHIpLHJ9fSx7a2V5OiJjYW5jZWxBbGxSZXF1ZXN0cyIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU7bnVsbD09PShlPXRoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyKXx8dm9pZCAwPT09ZXx8ZS5jYW5jZWwodCk7dmFyIHIsbj11KHRoaXMuX3JhbmdlUmVhZGVycy5zbGljZSgwKSk7dHJ5e2ZvcihuLnMoKTshKHI9bi5uKCkpLmRvbmU7KXIudmFsdWUuY2FuY2VsKHQpfWNhdGNoKHQpe24uZSh0KX1maW5hbGx5e24uZigpfXRoaXMuX3BkZkRhdGFSYW5nZVRyYW5zcG9ydC5hYm9ydCgpfX1dKSx0fSgpO2UuUERGRGF0YVRyYW5zcG9ydFN0cmVhbT1wO3ZhciB2PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLHIpe3ZhciBuPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdJiZhcmd1bWVudHNbMl0sYT1hcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXT9hcmd1bWVudHNbM106bnVsbDtoKHRoaXMsdCksdGhpcy5fc3RyZWFtPWUsdGhpcy5fZG9uZT1ufHwhMSx0aGlzLl9maWxlbmFtZT0oMCxpLmlzUGRmRmlsZSkoYSk/YTpudWxsLHRoaXMuX3F1ZXVlZENodW5rcz1yfHxbXSx0aGlzLl9sb2FkZWQ9MDt2YXIgbyxzPXUodGhpcy5fcXVldWVkQ2h1bmtzKTt0cnl7Zm9yKHMucygpOyEobz1zLm4oKSkuZG9uZTspe3ZhciBsPW8udmFsdWU7dGhpcy5fbG9hZGVkKz1sLmJ5dGVMZW5ndGh9fWNhdGNoKHQpe3MuZSh0KX1maW5hbGx5e3MuZigpfXRoaXMuX3JlcXVlc3RzPVtdLHRoaXMuX2hlYWRlcnNSZWFkeT1Qcm9taXNlLnJlc29sdmUoKSxlLl9mdWxsUmVxdWVzdFJlYWRlcj10aGlzLHRoaXMub25Qcm9ncmVzcz1udWxsfXZhciBlO3JldHVybiBkKHQsW3trZXk6Il9lbnF1ZXVlIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLl9kb25lfHwodGhpcy5fcmVxdWVzdHMubGVuZ3RoPjA/dGhpcy5fcmVxdWVzdHMuc2hpZnQoKS5yZXNvbHZlKHt2YWx1ZTp0LGRvbmU6ITF9KTp0aGlzLl9xdWV1ZWRDaHVua3MucHVzaCh0KSx0aGlzLl9sb2FkZWQrPXQuYnl0ZUxlbmd0aCl9fSx7a2V5OiJoZWFkZXJzUmVhZHkiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9oZWFkZXJzUmVhZHl9fSx7a2V5OiJmaWxlbmFtZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2ZpbGVuYW1lfX0se2tleToiaXNSYW5nZVN1cHBvcnRlZCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3N0cmVhbS5faXNSYW5nZVN1cHBvcnRlZH19LHtrZXk6ImlzU3RyZWFtaW5nU3VwcG9ydGVkIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3RyZWFtLl9pc1N0cmVhbWluZ1N1cHBvcnRlZH19LHtrZXk6ImNvbnRlbnRMZW5ndGgiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdHJlYW0uX2NvbnRlbnRMZW5ndGh9fSx7a2V5OiJyZWFkIix2YWx1ZTooZT1zKGEoKS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIGUscjtyZXR1cm4gYSgpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOmlmKCEodGhpcy5fcXVldWVkQ2h1bmtzLmxlbmd0aD4wKSl7dC5uZXh0PTM7YnJlYWt9cmV0dXJuIGU9dGhpcy5fcXVldWVkQ2h1bmtzLnNoaWZ0KCksdC5hYnJ1cHQoInJldHVybiIse3ZhbHVlOmUsZG9uZTohMX0pO2Nhc2UgMzppZighdGhpcy5fZG9uZSl7dC5uZXh0PTU7YnJlYWt9cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLHt2YWx1ZTp2b2lkIDAsZG9uZTohMH0pO2Nhc2UgNTpyZXR1cm4gcj0oMCxuLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpLHRoaXMuX3JlcXVlc3RzLnB1c2gociksdC5hYnJ1cHQoInJldHVybiIsci5wcm9taXNlKTtjYXNlIDg6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKSxmdW5jdGlvbigpe3JldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pfSx7a2V5OiJjYW5jZWwiLHZhbHVlOmZ1bmN0aW9uKHQpe3RoaXMuX2RvbmU9ITA7dmFyIGUscj11KHRoaXMuX3JlcXVlc3RzKTt0cnl7Zm9yKHIucygpOyEoZT1yLm4oKSkuZG9uZTspZS52YWx1ZS5yZXNvbHZlKHt2YWx1ZTp2b2lkIDAsZG9uZTohMH0pfWNhdGNoKHQpe3IuZSh0KX1maW5hbGx5e3IuZigpfXRoaXMuX3JlcXVlc3RzLmxlbmd0aD0wfX0se2tleToicHJvZ3Jlc3NpdmVEb25lIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX2RvbmV8fCh0aGlzLl9kb25lPSEwKX19XSksdH0oKSx5PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLHIsbil7aCh0aGlzLHQpLHRoaXMuX3N0cmVhbT1lLHRoaXMuX2JlZ2luPXIsdGhpcy5fZW5kPW4sdGhpcy5fcXVldWVkQ2h1bms9bnVsbCx0aGlzLl9yZXF1ZXN0cz1bXSx0aGlzLl9kb25lPSExLHRoaXMub25Qcm9ncmVzcz1udWxsfXZhciBlO3JldHVybiBkKHQsW3trZXk6Il9lbnF1ZXVlIix2YWx1ZTpmdW5jdGlvbih0KXtpZighdGhpcy5fZG9uZSl7aWYoMD09PXRoaXMuX3JlcXVlc3RzLmxlbmd0aCl0aGlzLl9xdWV1ZWRDaHVuaz10O2Vsc2V7dGhpcy5fcmVxdWVzdHMuc2hpZnQoKS5yZXNvbHZlKHt2YWx1ZTp0LGRvbmU6ITF9KTt2YXIgZSxyPXUodGhpcy5fcmVxdWVzdHMpO3RyeXtmb3Ioci5zKCk7IShlPXIubigpKS5kb25lOyllLnZhbHVlLnJlc29sdmUoe3ZhbHVlOnZvaWQgMCxkb25lOiEwfSl9Y2F0Y2godCl7ci5lKHQpfWZpbmFsbHl7ci5mKCl9dGhpcy5fcmVxdWVzdHMubGVuZ3RoPTB9dGhpcy5fZG9uZT0hMCx0aGlzLl9zdHJlYW0uX3JlbW92ZVJhbmdlUmVhZGVyKHRoaXMpfX19LHtrZXk6ImlzU3RyZWFtaW5nU3VwcG9ydGVkIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4hMX19LHtrZXk6InJlYWQiLHZhbHVlOihlPXMoYSgpLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgZSxyO3JldHVybiBhKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6aWYoIXRoaXMuX3F1ZXVlZENodW5rKXt0Lm5leHQ9NDticmVha31yZXR1cm4gZT10aGlzLl9xdWV1ZWRDaHVuayx0aGlzLl9xdWV1ZWRDaHVuaz1udWxsLHQuYWJydXB0KCJyZXR1cm4iLHt2YWx1ZTplLGRvbmU6ITF9KTtjYXNlIDQ6aWYoIXRoaXMuX2RvbmUpe3QubmV4dD02O2JyZWFrfXJldHVybiB0LmFicnVwdCgicmV0dXJuIix7dmFsdWU6dm9pZCAwLGRvbmU6ITB9KTtjYXNlIDY6cmV0dXJuIHI9KDAsbi5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKSx0aGlzLl9yZXF1ZXN0cy5wdXNoKHIpLHQuYWJydXB0KCJyZXR1cm4iLHIucHJvbWlzZSk7Y2FzZSA5OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSksZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KX0se2tleToiY2FuY2VsIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLl9kb25lPSEwO3ZhciBlLHI9dSh0aGlzLl9yZXF1ZXN0cyk7dHJ5e2ZvcihyLnMoKTshKGU9ci5uKCkpLmRvbmU7KWUudmFsdWUucmVzb2x2ZSh7dmFsdWU6dm9pZCAwLGRvbmU6ITB9KX1jYXRjaCh0KXtyLmUodCl9ZmluYWxseXtyLmYoKX10aGlzLl9yZXF1ZXN0cy5sZW5ndGg9MCx0aGlzLl9zdHJlYW0uX3JlbW92ZVJhbmdlUmVhZGVyKHRoaXMpfX1dKSx0fSgpfSwodCxlKT0+e2Z1bmN0aW9uIHIodCl7cmV0dXJuIHI9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LHIodCl9ZnVuY3Rpb24gbih0LGUpeyhudWxsPT1lfHxlPnQubGVuZ3RoKSYmKGU9dC5sZW5ndGgpO2Zvcih2YXIgcj0wLG49bmV3IEFycmF5KGUpO3I8ZTtyKyspbltyXT10W3JdO3JldHVybiBufWZ1bmN0aW9uIGkodCxlKXtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIGk9ZVtuXTtpLmVudW1lcmFibGU9aS5lbnVtZXJhYmxlfHwhMSxpLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gaSYmKGkud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCh2b2lkIDAsYT1mdW5jdGlvbih0LGUpe2lmKCJvYmplY3QiIT09cih0KXx8bnVsbD09PXQpcmV0dXJuIHQ7dmFyIG49dFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PW4pe3ZhciBpPW4uY2FsbCh0LCJzdHJpbmciKTtpZigib2JqZWN0IiE9PXIoaSkpcmV0dXJuIGk7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4gU3RyaW5nKHQpfShpLmtleSksInN5bWJvbCI9PT1yKGEpP2E6U3RyaW5nKGEpKSxpKX12YXIgYX1PYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZS5YZmFUZXh0PXZvaWQgMDt2YXIgYT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXshZnVuY3Rpb24odCxlKXtpZighKHQgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyx0KX12YXIgZSxyO3JldHVybiBlPXQscj1be2tleToidGV4dENvbnRlbnQiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciByPVtdLGk9e2l0ZW1zOnIsc3R5bGVzOk9iamVjdC5jcmVhdGUobnVsbCl9O3JldHVybiBmdW5jdGlvbiBlKGkpe3ZhciBhO2lmKGkpe3ZhciBvPW51bGwscz1pLm5hbWU7aWYoIiN0ZXh0Ij09PXMpbz1pLnZhbHVlO2Vsc2V7aWYoIXQuc2hvdWxkQnVpbGRUZXh0KHMpKXJldHVybjtudWxsIT1pJiZudWxsIT09KGE9aS5hdHRyaWJ1dGVzKSYmdm9pZCAwIT09YSYmYS50ZXh0Q29udGVudD9vPWkuYXR0cmlidXRlcy50ZXh0Q29udGVudDppLnZhbHVlJiYobz1pLnZhbHVlKX1pZihudWxsIT09byYmci5wdXNoKHtzdHI6b30pLGkuY2hpbGRyZW4pe3ZhciBsLHU9ZnVuY3Rpb24odCxlKXt2YXIgcj0idW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmdFtTeW1ib2wuaXRlcmF0b3JdfHx0WyJAQGl0ZXJhdG9yIl07aWYoIXIpe2lmKEFycmF5LmlzQXJyYXkodCl8fChyPWZ1bmN0aW9uKHQsZSl7aWYodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiBuKHQsZSk7dmFyIHI9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpLnNsaWNlKDgsLTEpO3JldHVybiJPYmplY3QiPT09ciYmdC5jb25zdHJ1Y3RvciYmKHI9dC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PXJ8fCJTZXQiPT09cj9BcnJheS5mcm9tKHQpOiJBcmd1bWVudHMiPT09cnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3Qocik/bih0LGUpOnZvaWQgMH19KHQpKXx8ZSYmdCYmIm51bWJlciI9PXR5cGVvZiB0Lmxlbmd0aCl7ciYmKHQ9cik7dmFyIGk9MCxhPWZ1bmN0aW9uKCl7fTtyZXR1cm57czphLG46ZnVuY3Rpb24oKXtyZXR1cm4gaT49dC5sZW5ndGg/e2RvbmU6ITB9Ontkb25lOiExLHZhbHVlOnRbaSsrXX19LGU6ZnVuY3Rpb24odCl7dGhyb3cgdH0sZjphfX10aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gaXRlcmF0ZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9dmFyIG8scz0hMCxsPSExO3JldHVybntzOmZ1bmN0aW9uKCl7cj1yLmNhbGwodCl9LG46ZnVuY3Rpb24oKXt2YXIgdD1yLm5leHQoKTtyZXR1cm4gcz10LmRvbmUsdH0sZTpmdW5jdGlvbih0KXtsPSEwLG89dH0sZjpmdW5jdGlvbigpe3RyeXtzfHxudWxsPT1yLnJldHVybnx8ci5yZXR1cm4oKX1maW5hbGx5e2lmKGwpdGhyb3cgb319fX0oaS5jaGlsZHJlbik7dHJ5e2Zvcih1LnMoKTshKGw9dS5uKCkpLmRvbmU7KWUobC52YWx1ZSl9Y2F0Y2godCl7dS5lKHQpfWZpbmFsbHl7dS5mKCl9fX19KGUpLGl9fSx7a2V5OiJzaG91bGRCdWlsZFRleHQiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiEoInRleHRhcmVhIj09PXR8fCJpbnB1dCI9PT10fHwib3B0aW9uIj09PXR8fCJzZWxlY3QiPT09dCl9fV0sbnVsbCYmaShlLnByb3RvdHlwZSxudWxsKSxyJiZpKGUsciksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksdH0oKTtlLlhmYVRleHQ9YX0sKHQsZSxyKT0+e2Z1bmN0aW9uIG4odCl7cmV0dXJuIG49ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LG4odCl9T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGUuTm9kZVN0YW5kYXJkRm9udERhdGFGYWN0b3J5PWUuTm9kZUNhbnZhc0ZhY3Rvcnk9ZS5Ob2RlQ01hcFJlYWRlckZhY3Rvcnk9dm9pZCAwO3ZhciBpPXIoMTM4KTtmdW5jdGlvbiBhKHQsZSl7aWYoISh0IGluc3RhbmNlb2YgZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gbyh0LGUpe2Zvcih2YXIgcj0wO3I8ZS5sZW5ndGg7cisrKXt2YXIgaT1lW3JdO2kuZW51bWVyYWJsZT1pLmVudW1lcmFibGV8fCExLGkuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBpJiYoaS53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsKHZvaWQgMCxhPWZ1bmN0aW9uKHQsZSl7aWYoIm9iamVjdCIhPT1uKHQpfHxudWxsPT09dClyZXR1cm4gdDt2YXIgcj10W1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09cil7dmFyIGk9ci5jYWxsKHQsInN0cmluZyIpO2lmKCJvYmplY3QiIT09bihpKSlyZXR1cm4gaTt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybiBTdHJpbmcodCl9KGkua2V5KSwic3ltYm9sIj09PW4oYSk/YTpTdHJpbmcoYSkpLGkpfXZhciBhfWZ1bmN0aW9uIHModCxlLHIpe3JldHVybiBlJiZvKHQucHJvdG90eXBlLGUpLHImJm8odCxyKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSx0fWZ1bmN0aW9uIGwodCxlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSYmbnVsbCE9PWUpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTt0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGUmJmUucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6dCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZSYmdSh0LGUpfWZ1bmN0aW9uIHUodCxlKXtyZXR1cm4gdT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbih0LGUpe3JldHVybiB0Ll9fcHJvdG9fXz1lLHR9LHUodCxlKX1mdW5jdGlvbiBjKHQpe3ZhciBlPWZ1bmN0aW9uKCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3QpcmV0dXJuITE7aWYoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSwoZnVuY3Rpb24oKXt9KSkpLCEwfWNhdGNoKHQpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcixpPWgodCk7aWYoZSl7dmFyIGE9aCh0aGlzKS5jb25zdHJ1Y3RvcjtyPVJlZmxlY3QuY29uc3RydWN0KGksYXJndW1lbnRzLGEpfWVsc2Ugcj1pLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZnVuY3Rpb24odCxlKXtpZihlJiYoIm9iamVjdCI9PT1uKGUpfHwiZnVuY3Rpb24iPT10eXBlb2YgZSkpcmV0dXJuIGU7aWYodm9pZCAwIT09ZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBmdW5jdGlvbih0KXtpZih2b2lkIDA9PT10KXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIHR9KHQpfSh0aGlzLHIpfX1mdW5jdGlvbiBoKHQpe3JldHVybiBoPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKHQpe3JldHVybiB0Ll9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpfSxoKHQpfXZhciBmPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSxyKXtyZXF1aXJlKCJmcyIpLnJlYWRGaWxlKHQsKGZ1bmN0aW9uKHQsbil7IXQmJm4/ZShuZXcgVWludDhBcnJheShuKSk6cihuZXcgRXJyb3IodCkpfSkpfSkpfSxkPWZ1bmN0aW9uKHQpe2wocix0KTt2YXIgZT1jKHIpO2Z1bmN0aW9uIHIoKXtyZXR1cm4gYSh0aGlzLHIpLGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiBzKHIsW3trZXk6Il9jcmVhdGVDYW52YXMiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHJlcXVpcmUoImNhbnZhcyIpLmNyZWF0ZUNhbnZhcyh0LGUpfX1dKSxyfShpLkJhc2VDYW52YXNGYWN0b3J5KTtlLk5vZGVDYW52YXNGYWN0b3J5PWQ7dmFyIHA9ZnVuY3Rpb24odCl7bChyLHQpO3ZhciBlPWMocik7ZnVuY3Rpb24gcigpe3JldHVybiBhKHRoaXMsciksZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIHMocixbe2tleToiX2ZldGNoRGF0YSIsdmFsdWU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZih0KS50aGVuKChmdW5jdGlvbih0KXtyZXR1cm57Y01hcERhdGE6dCxjb21wcmVzc2lvblR5cGU6ZX19KSl9fV0pLHJ9KGkuQmFzZUNNYXBSZWFkZXJGYWN0b3J5KTtlLk5vZGVDTWFwUmVhZGVyRmFjdG9yeT1wO3ZhciB2PWZ1bmN0aW9uKHQpe2wocix0KTt2YXIgZT1jKHIpO2Z1bmN0aW9uIHIoKXtyZXR1cm4gYSh0aGlzLHIpLGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiBzKHIsW3trZXk6Il9mZXRjaERhdGEiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiBmKHQpfX1dKSxyfShpLkJhc2VTdGFuZGFyZEZvbnREYXRhRmFjdG9yeSk7ZS5Ob2RlU3RhbmRhcmRGb250RGF0YUZhY3Rvcnk9dn0sKHQsZSxyKT0+e2Z1bmN0aW9uIG4odCl7cmV0dXJuIG49ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LG4odCl9T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGUuVGV4dExheWVyUmVuZGVyVGFzaz12b2lkIDAsZS5yZW5kZXJUZXh0TGF5ZXI9ZnVuY3Rpb24odCl7dC50ZXh0Q29udGVudFNvdXJjZXx8IXQudGV4dENvbnRlbnQmJiF0LnRleHRDb250ZW50U3RyZWFtfHwoKDAsYS5kZXByZWNhdGVkKSgiVGhlIFRleHRMYXllclJlbmRlciBgdGV4dENvbnRlbnRgL2B0ZXh0Q29udGVudFN0cmVhbWAgcGFyYW1ldGVycyB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIGZ1dHVyZSwgcGxlYXNlIHVzZSBgdGV4dENvbnRlbnRTb3VyY2VgIGluc3RlYWQuIiksdC50ZXh0Q29udGVudFNvdXJjZT10LnRleHRDb250ZW50fHx0LnRleHRDb250ZW50U3RyZWFtKTt2YXIgZT1uZXcgcCh0KTtyZXR1cm4gZS5fcmVuZGVyKCksZX0sZS51cGRhdGVUZXh0TGF5ZXI9ZnVuY3Rpb24odCl7dmFyIGU9dC5jb250YWluZXIscj10LnZpZXdwb3J0LG49dC50ZXh0RGl2cyxpPXQudGV4dERpdlByb3BlcnRpZXMsbz10LmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkLGw9dC5tdXN0Um90YXRlLHU9dm9pZCAwPT09bHx8bCxjPXQubXVzdFJlc2NhbGUsZj12b2lkIDA9PT1jfHxjO2lmKHUmJigwLGEuc2V0TGF5ZXJEaW1lbnNpb25zKShlLHtyb3RhdGlvbjpyLnJvdGF0aW9ufSksZil7dmFyIHAsdj1oKDAsbykseT17cHJldkZvbnRTaXplOm51bGwscHJldkZvbnRGYW1pbHk6bnVsbCxkaXY6bnVsbCxzY2FsZTpyLnNjYWxlKihnbG9iYWxUaGlzLmRldmljZVBpeGVsUmF0aW98fDEpLHByb3BlcnRpZXM6bnVsbCxjdHg6dn0sbT1zKG4pO3RyeXtmb3IobS5zKCk7IShwPW0ubigpKS5kb25lOyl7dmFyIGc9cC52YWx1ZTt5LnByb3BlcnRpZXM9aS5nZXQoZykseS5kaXY9ZyxkKHkpfX1jYXRjaCh0KXttLmUodCl9ZmluYWxseXttLmYoKX19fTt2YXIgaT1yKDEpLGE9cigxMzcpO2Z1bmN0aW9uIG8odCxlKXtmb3IodmFyIHI9MDtyPGUubGVuZ3RoO3IrKyl7dmFyIGk9ZVtyXTtpLmVudW1lcmFibGU9aS5lbnVtZXJhYmxlfHwhMSxpLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gaSYmKGkud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCh2b2lkIDAsYT1mdW5jdGlvbih0LGUpe2lmKCJvYmplY3QiIT09bih0KXx8bnVsbD09PXQpcmV0dXJuIHQ7dmFyIHI9dFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PXIpe3ZhciBpPXIuY2FsbCh0LCJzdHJpbmciKTtpZigib2JqZWN0IiE9PW4oaSkpcmV0dXJuIGk7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4gU3RyaW5nKHQpfShpLmtleSksInN5bWJvbCI9PT1uKGEpP2E6U3RyaW5nKGEpKSxpKX12YXIgYX1mdW5jdGlvbiBzKHQsZSl7dmFyIHI9InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJnRbU3ltYm9sLml0ZXJhdG9yXXx8dFsiQEBpdGVyYXRvciJdO2lmKCFyKXtpZihBcnJheS5pc0FycmF5KHQpfHwocj1mdW5jdGlvbih0LGUpe2lmKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gbCh0LGUpO3ZhciByPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KS5zbGljZSg4LC0xKTtyZXR1cm4iT2JqZWN0Ij09PXImJnQuY29uc3RydWN0b3ImJihyPXQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1yfHwiU2V0Ij09PXI/QXJyYXkuZnJvbSh0KToiQXJndW1lbnRzIj09PXJ8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KHIpP2wodCxlKTp2b2lkIDB9fSh0KSl8fGUmJnQmJiJudW1iZXIiPT10eXBlb2YgdC5sZW5ndGgpe3ImJih0PXIpO3ZhciBuPTAsaT1mdW5jdGlvbigpe307cmV0dXJue3M6aSxuOmZ1bmN0aW9uKCl7cmV0dXJuIG4+PXQubGVuZ3RoP3tkb25lOiEwfTp7ZG9uZTohMSx2YWx1ZTp0W24rK119fSxlOmZ1bmN0aW9uKHQpe3Rocm93IHR9LGY6aX19dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGl0ZXJhdGUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfXZhciBhLG89ITAscz0hMTtyZXR1cm57czpmdW5jdGlvbigpe3I9ci5jYWxsKHQpfSxuOmZ1bmN0aW9uKCl7dmFyIHQ9ci5uZXh0KCk7cmV0dXJuIG89dC5kb25lLHR9LGU6ZnVuY3Rpb24odCl7cz0hMCxhPXR9LGY6ZnVuY3Rpb24oKXt0cnl7b3x8bnVsbD09ci5yZXR1cm58fHIucmV0dXJuKCl9ZmluYWxseXtpZihzKXRocm93IGF9fX19ZnVuY3Rpb24gbCh0LGUpeyhudWxsPT1lfHxlPnQubGVuZ3RoKSYmKGU9dC5sZW5ndGgpO2Zvcih2YXIgcj0wLG49bmV3IEFycmF5KGUpO3I8ZTtyKyspbltyXT10W3JdO3JldHVybiBufXZhciB1PTMwLGM9bmV3IE1hcDtmdW5jdGlvbiBoKHQsZSl7dmFyIHI7aWYoZSYmaS5GZWF0dXJlVGVzdC5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZClyPW5ldyBPZmZzY3JlZW5DYW52YXModCx0KS5nZXRDb250ZXh0KCIyZCIse2FscGhhOiExfSk7ZWxzZXt2YXIgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTtuLndpZHRoPW4uaGVpZ2h0PXQscj1uLmdldENvbnRleHQoIjJkIix7YWxwaGE6ITF9KX1yZXR1cm4gcn1mdW5jdGlvbiBmKHQsZSxyKXt2YXIgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIiksYT17YW5nbGU6MCxjYW52YXNXaWR0aDowLGhhc1RleHQ6IiIhPT1lLnN0cixoYXNFT0w6ZS5oYXNFT0wsZm9udFNpemU6MH07dC5fdGV4dERpdnMucHVzaChuKTt2YXIgbz1pLlV0aWwudHJhbnNmb3JtKHQuX3RyYW5zZm9ybSxlLnRyYW5zZm9ybSkscz1NYXRoLmF0YW4yKG9bMV0sb1swXSksbD1yW2UuZm9udE5hbWVdO2wudmVydGljYWwmJihzKz1NYXRoLlBJLzIpO3ZhciBmLGQscD1NYXRoLmh5cG90KG9bMl0sb1szXSksdj1wKmZ1bmN0aW9uKHQsZSl7dmFyIHI9Yy5nZXQodCk7aWYocilyZXR1cm4gcjt2YXIgbj1oKHUsZSk7bi5mb250PSIiLmNvbmNhdCh1LCJweCAiKS5jb25jYXQodCk7dmFyIGk9bi5tZWFzdXJlVGV4dCgiIiksYT1pLmZvbnRCb3VuZGluZ0JveEFzY2VudCxvPU1hdGguYWJzKGkuZm9udEJvdW5kaW5nQm94RGVzY2VudCk7aWYoYSl7dmFyIHM9YS8oYStvKTtyZXR1cm4gYy5zZXQodCxzKSxuLmNhbnZhcy53aWR0aD1uLmNhbnZhcy5oZWlnaHQ9MCxzfW4uc3Ryb2tlU3R5bGU9InJlZCIsbi5jbGVhclJlY3QoMCwwLHUsdSksbi5zdHJva2VUZXh0KCJnIiwwLDApO3ZhciBsPW4uZ2V0SW1hZ2VEYXRhKDAsMCx1LHUpLmRhdGE7bz0wO2Zvcih2YXIgZj1sLmxlbmd0aC0xLTM7Zj49MDtmLT00KWlmKGxbZl0+MCl7bz1NYXRoLmNlaWwoZi80L3UpO2JyZWFrfW4uY2xlYXJSZWN0KDAsMCx1LHUpLG4uc3Ryb2tlVGV4dCgiQSIsMCx1KSxhPTA7Zm9yKHZhciBkPTAscD0obD1uLmdldEltYWdlRGF0YSgwLDAsdSx1KS5kYXRhKS5sZW5ndGg7ZDxwO2QrPTQpaWYobFtkXT4wKXthPXUtTWF0aC5mbG9vcihkLzQvdSk7YnJlYWt9aWYobi5jYW52YXMud2lkdGg9bi5jYW52YXMuaGVpZ2h0PTAsYSl7dmFyIHY9YS8oYStvKTtyZXR1cm4gYy5zZXQodCx2KSx2fXJldHVybiBjLnNldCh0LC44KSwuOH0obC5mb250RmFtaWx5LHQuX2lzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkKTswPT09cz8oZj1vWzRdLGQ9b1s1XS12KTooZj1vWzRdK3YqTWF0aC5zaW4ocyksZD1vWzVdLXYqTWF0aC5jb3MocykpO3ZhciB5PSJjYWxjKHZhcigtLXNjYWxlLWZhY3RvcikqIixtPW4uc3R5bGU7dC5fY29udGFpbmVyPT09dC5fcm9vdENvbnRhaW5lcj8obS5sZWZ0PSIiLmNvbmNhdCgoMTAwKmYvdC5fcGFnZVdpZHRoKS50b0ZpeGVkKDIpLCIlIiksbS50b3A9IiIuY29uY2F0KCgxMDAqZC90Ll9wYWdlSGVpZ2h0KS50b0ZpeGVkKDIpLCIlIikpOihtLmxlZnQ9IiIuY29uY2F0KHkpLmNvbmNhdChmLnRvRml4ZWQoMiksInB4KSIpLG0udG9wPSIiLmNvbmNhdCh5KS5jb25jYXQoZC50b0ZpeGVkKDIpLCJweCkiKSksbS5mb250U2l6ZT0iIi5jb25jYXQoeSkuY29uY2F0KHAudG9GaXhlZCgyKSwicHgpIiksbS5mb250RmFtaWx5PWwuZm9udEZhbWlseSxhLmZvbnRTaXplPXAsbi5zZXRBdHRyaWJ1dGUoInJvbGUiLCJwcmVzZW50YXRpb24iKSxuLnRleHRDb250ZW50PWUuc3RyLG4uZGlyPWUuZGlyLHQuX2ZvbnRJbnNwZWN0b3JFbmFibGVkJiYobi5kYXRhc2V0LmZvbnROYW1lPWUuZm9udE5hbWUpLDAhPT1zJiYoYS5hbmdsZT1zKigxODAvTWF0aC5QSSkpO3ZhciBnPSExO2lmKGUuc3RyLmxlbmd0aD4xKWc9ITA7ZWxzZSBpZigiICIhPT1lLnN0ciYmZS50cmFuc2Zvcm1bMF0hPT1lLnRyYW5zZm9ybVszXSl7dmFyIGI9TWF0aC5hYnMoZS50cmFuc2Zvcm1bMF0pLF89TWF0aC5hYnMoZS50cmFuc2Zvcm1bM10pO2IhPT1fJiZNYXRoLm1heChiLF8pL01hdGgubWluKGIsXyk+MS41JiYoZz0hMCl9ZyYmKGEuY2FudmFzV2lkdGg9bC52ZXJ0aWNhbD9lLmhlaWdodDplLndpZHRoKSx0Ll90ZXh0RGl2UHJvcGVydGllcy5zZXQobixhKSx0Ll9pc1JlYWRhYmxlU3RyZWFtJiZ0Ll9sYXlvdXRUZXh0KG4pfWZ1bmN0aW9uIGQodCl7dmFyIGU9dC5kaXYscj10LnNjYWxlLG49dC5wcm9wZXJ0aWVzLGk9dC5jdHgsYT10LnByZXZGb250U2l6ZSxvPXQucHJldkZvbnRGYW1pbHkscz1lLnN0eWxlLGw9IiI7aWYoMCE9PW4uY2FudmFzV2lkdGgmJm4uaGFzVGV4dCl7dmFyIHU9cy5mb250RmFtaWx5LGM9bi5jYW52YXNXaWR0aCxoPW4uZm9udFNpemU7YT09PWgmJm89PT11fHwoaS5mb250PSIiLmNvbmNhdChoKnIsInB4ICIpLmNvbmNhdCh1KSx0LnByZXZGb250U2l6ZT1oLHQucHJldkZvbnRGYW1pbHk9dSk7dmFyIGY9aS5tZWFzdXJlVGV4dChlLnRleHRDb250ZW50KS53aWR0aDtmPjAmJihsPSJzY2FsZVgoIi5jb25jYXQoYypyL2YsIikiKSl9MCE9PW4uYW5nbGUmJihsPSJyb3RhdGUoIi5jb25jYXQobi5hbmdsZSwiZGVnKSAiKS5jb25jYXQobCkpLGwubGVuZ3RoPjAmJihzLnRyYW5zZm9ybT1sKX12YXIgcD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7dmFyIHIsbj10aGlzLG89ZS50ZXh0Q29udGVudFNvdXJjZSxzPWUuY29udGFpbmVyLGw9ZS52aWV3cG9ydCx1PWUudGV4dERpdnMsYz1lLnRleHREaXZQcm9wZXJ0aWVzLGY9ZS50ZXh0Q29udGVudEl0ZW1zU3RyLGQ9ZS5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDshZnVuY3Rpb24odCxlKXtpZighKHQgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyx0KSx0aGlzLl90ZXh0Q29udGVudFNvdXJjZT1vLHRoaXMuX2lzUmVhZGFibGVTdHJlYW09byBpbnN0YW5jZW9mIFJlYWRhYmxlU3RyZWFtLHRoaXMuX2NvbnRhaW5lcj10aGlzLl9yb290Q29udGFpbmVyPXMsdGhpcy5fdGV4dERpdnM9dXx8W10sdGhpcy5fdGV4dENvbnRlbnRJdGVtc1N0cj1mfHxbXSx0aGlzLl9mb250SW5zcGVjdG9yRW5hYmxlZD0hKG51bGw9PT0ocj1nbG9iYWxUaGlzLkZvbnRJbnNwZWN0b3IpfHx2b2lkIDA9PT1yfHwhci5lbmFibGVkKSx0aGlzLl9yZWFkZXI9bnVsbCx0aGlzLl90ZXh0RGl2UHJvcGVydGllcz1jfHxuZXcgV2Vha01hcCx0aGlzLl9jYW5jZWxlZD0hMSx0aGlzLl9jYXBhYmlsaXR5PSgwLGkuY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkpKCksdGhpcy5fbGF5b3V0VGV4dFBhcmFtcz17cHJldkZvbnRTaXplOm51bGwscHJldkZvbnRGYW1pbHk6bnVsbCxkaXY6bnVsbCxzY2FsZTpsLnNjYWxlKihnbG9iYWxUaGlzLmRldmljZVBpeGVsUmF0aW98fDEpLHByb3BlcnRpZXM6bnVsbCxjdHg6aCgwLGQpfTt2YXIgcD1sLnJhd0RpbXMsdj1wLnBhZ2VXaWR0aCx5PXAucGFnZUhlaWdodCxtPXAucGFnZVgsZz1wLnBhZ2VZO3RoaXMuX3RyYW5zZm9ybT1bMSwwLDAsLTEsLW0sZyt5XSx0aGlzLl9wYWdlV2lkdGg9dix0aGlzLl9wYWdlSGVpZ2h0PXksKDAsYS5zZXRMYXllckRpbWVuc2lvbnMpKHMsbCksdGhpcy5fY2FwYWJpbGl0eS5wcm9taXNlLmZpbmFsbHkoKGZ1bmN0aW9uKCl7bi5fbGF5b3V0VGV4dFBhcmFtcz1udWxsfSkpLmNhdGNoKChmdW5jdGlvbigpe30pKX12YXIgZSxyO3JldHVybiBlPXQsKHI9W3trZXk6InByb21pc2UiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jYXBhYmlsaXR5LnByb21pc2V9fSx7a2V5OiJjYW5jZWwiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5fY2FuY2VsZWQ9ITAsdGhpcy5fcmVhZGVyJiYodGhpcy5fcmVhZGVyLmNhbmNlbChuZXcgaS5BYm9ydEV4Y2VwdGlvbigiVGV4dExheWVyIHRhc2sgY2FuY2VsbGVkLiIpKS5jYXRjaCgoZnVuY3Rpb24oKXt9KSksdGhpcy5fcmVhZGVyPW51bGwpLHRoaXMuX2NhcGFiaWxpdHkucmVqZWN0KG5ldyBpLkFib3J0RXhjZXB0aW9uKCJUZXh0TGF5ZXIgdGFzayBjYW5jZWxsZWQuIikpfX0se2tleToiX3Byb2Nlc3NJdGVtcyIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgcixuPXModCk7dHJ5e2ZvcihuLnMoKTshKHI9bi5uKCkpLmRvbmU7KXt2YXIgaT1yLnZhbHVlO2lmKHZvaWQgMCE9PWkuc3RyKXRoaXMuX3RleHRDb250ZW50SXRlbXNTdHIucHVzaChpLnN0ciksZih0aGlzLGksZSk7ZWxzZSBpZigiYmVnaW5NYXJrZWRDb250ZW50UHJvcHMiPT09aS50eXBlfHwiYmVnaW5NYXJrZWRDb250ZW50Ij09PWkudHlwZSl7dmFyIGE9dGhpcy5fY29udGFpbmVyO3RoaXMuX2NvbnRhaW5lcj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIiksdGhpcy5fY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoIm1hcmtlZENvbnRlbnQiKSxudWxsIT09aS5pZCYmdGhpcy5fY29udGFpbmVyLnNldEF0dHJpYnV0ZSgiaWQiLCIiLmNvbmNhdChpLmlkKSksYS5hcHBlbmQodGhpcy5fY29udGFpbmVyKX1lbHNlImVuZE1hcmtlZENvbnRlbnQiPT09aS50eXBlJiYodGhpcy5fY29udGFpbmVyPXRoaXMuX2NvbnRhaW5lci5wYXJlbnROb2RlKX19Y2F0Y2godCl7bi5lKHQpfWZpbmFsbHl7bi5mKCl9fX0se2tleToiX2xheW91dFRleHQiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2xheW91dFRleHRQYXJhbXMucHJvcGVydGllcz10aGlzLl90ZXh0RGl2UHJvcGVydGllcy5nZXQodCk7aWYodGhpcy5fbGF5b3V0VGV4dFBhcmFtcy5kaXY9dCxkKHRoaXMuX2xheW91dFRleHRQYXJhbXMpLGUuaGFzVGV4dCYmdGhpcy5fY29udGFpbmVyLmFwcGVuZCh0KSxlLmhhc0VPTCl7dmFyIHI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnIiKTtyLnNldEF0dHJpYnV0ZSgicm9sZSIsInByZXNlbnRhdGlvbiIpLHRoaXMuX2NvbnRhaW5lci5hcHBlbmQocil9fX0se2tleToiX3JlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9KDAsaS5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKSxyPU9iamVjdC5jcmVhdGUobnVsbCk7aWYodGhpcy5faXNSZWFkYWJsZVN0cmVhbSl0aGlzLl9yZWFkZXI9dGhpcy5fdGV4dENvbnRlbnRTb3VyY2UuZ2V0UmVhZGVyKCksZnVuY3Rpb24gbigpe3QuX3JlYWRlci5yZWFkKCkudGhlbigoZnVuY3Rpb24oaSl7dmFyIGE9aS52YWx1ZTtpLmRvbmU/ZS5yZXNvbHZlKCk6KE9iamVjdC5hc3NpZ24ocixhLnN0eWxlcyksdC5fcHJvY2Vzc0l0ZW1zKGEuaXRlbXMsciksbigpKX0pLGUucmVqZWN0KX0oKTtlbHNle2lmKCF0aGlzLl90ZXh0Q29udGVudFNvdXJjZSl0aHJvdyBuZXcgRXJyb3IoJ05vICJ0ZXh0Q29udGVudFNvdXJjZSIgcGFyYW1ldGVyIHNwZWNpZmllZC4nKTt2YXIgbj10aGlzLl90ZXh0Q29udGVudFNvdXJjZSxhPW4uaXRlbXMsbz1uLnN0eWxlczt0aGlzLl9wcm9jZXNzSXRlbXMoYSxvKSxlLnJlc29sdmUoKX1lLnByb21pc2UudGhlbigoZnVuY3Rpb24oKXtyPW51bGwsZnVuY3Rpb24odCl7aWYoIXQuX2NhbmNlbGVkKXt2YXIgZT10Ll90ZXh0RGl2cyxyPXQuX2NhcGFiaWxpdHk7aWYoZS5sZW5ndGg+MWU1KXIucmVzb2x2ZSgpO2Vsc2V7aWYoIXQuX2lzUmVhZGFibGVTdHJlYW0pe3ZhciBuLGk9cyhlKTt0cnl7Zm9yKGkucygpOyEobj1pLm4oKSkuZG9uZTspe3ZhciBhPW4udmFsdWU7dC5fbGF5b3V0VGV4dChhKX19Y2F0Y2godCl7aS5lKHQpfWZpbmFsbHl7aS5mKCl9fXIucmVzb2x2ZSgpfX19KHQpfSksdGhpcy5fY2FwYWJpbGl0eS5yZWplY3QpfX1dKSYmbyhlLnByb3RvdHlwZSxyKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSx0fSgpO2UuVGV4dExheWVyUmVuZGVyVGFzaz1wfSwodCxlLHIpPT57ZnVuY3Rpb24gbih0KXtyZXR1cm4gbj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgdH0sbih0KX1PYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZS5Bbm5vdGF0aW9uRWRpdG9yTGF5ZXI9dm9pZCAwO3ZhciBpPXIoMSksYT1yKDEzNiksbz1yKDE1Mykscz1yKDE1NCksbD1yKDEzNyk7ZnVuY3Rpb24gdSh0LGUpe3ZhciByPSJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZ0W1N5bWJvbC5pdGVyYXRvcl18fHRbIkBAaXRlcmF0b3IiXTtpZighcil7aWYoQXJyYXkuaXNBcnJheSh0KXx8KHI9ZnVuY3Rpb24odCxlKXtpZih0KXtpZigic3RyaW5nIj09dHlwZW9mIHQpcmV0dXJuIGModCxlKTt2YXIgcj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCkuc2xpY2UoOCwtMSk7cmV0dXJuIk9iamVjdCI9PT1yJiZ0LmNvbnN0cnVjdG9yJiYocj10LmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09cnx8IlNldCI9PT1yP0FycmF5LmZyb20odCk6IkFyZ3VtZW50cyI9PT1yfHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChyKT9jKHQsZSk6dm9pZCAwfX0odCkpfHxlJiZ0JiYibnVtYmVyIj09dHlwZW9mIHQubGVuZ3RoKXtyJiYodD1yKTt2YXIgbj0wLGk9ZnVuY3Rpb24oKXt9O3JldHVybntzOmksbjpmdW5jdGlvbigpe3JldHVybiBuPj10Lmxlbmd0aD97ZG9uZTohMH06e2RvbmU6ITEsdmFsdWU6dFtuKytdfX0sZTpmdW5jdGlvbih0KXt0aHJvdyB0fSxmOml9fXRocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBpdGVyYXRlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX12YXIgYSxvPSEwLHM9ITE7cmV0dXJue3M6ZnVuY3Rpb24oKXtyPXIuY2FsbCh0KX0sbjpmdW5jdGlvbigpe3ZhciB0PXIubmV4dCgpO3JldHVybiBvPXQuZG9uZSx0fSxlOmZ1bmN0aW9uKHQpe3M9ITAsYT10fSxmOmZ1bmN0aW9uKCl7dHJ5e298fG51bGw9PXIucmV0dXJufHxyLnJldHVybigpfWZpbmFsbHl7aWYocyl0aHJvdyBhfX19fWZ1bmN0aW9uIGModCxlKXsobnVsbD09ZXx8ZT50Lmxlbmd0aCkmJihlPXQubGVuZ3RoKTtmb3IodmFyIHI9MCxuPW5ldyBBcnJheShlKTtyPGU7cisrKW5bcl09dFtyXTtyZXR1cm4gbn1mdW5jdGlvbiBoKHQsZSl7Zm9yKHZhciByPTA7cjxlLmxlbmd0aDtyKyspe3ZhciBuPWVbcl07bi5lbnVtZXJhYmxlPW4uZW51bWVyYWJsZXx8ITEsbi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIG4mJihuLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxkKG4ua2V5KSxuKX19ZnVuY3Rpb24gZih0LGUpe3YodCxlKSxlLmFkZCh0KX1mdW5jdGlvbiBkKHQpe3ZhciBlPWZ1bmN0aW9uKHQsZSl7aWYoIm9iamVjdCIhPT1uKHQpfHxudWxsPT09dClyZXR1cm4gdDt2YXIgcj10W1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09cil7dmFyIGk9ci5jYWxsKHQsInN0cmluZyIpO2lmKCJvYmplY3QiIT09bihpKSlyZXR1cm4gaTt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybiBTdHJpbmcodCl9KHQpO3JldHVybiJzeW1ib2wiPT09bihlKT9lOlN0cmluZyhlKX1mdW5jdGlvbiBwKHQsZSxyKXt2KHQsZSksZS5zZXQodCxyKX1mdW5jdGlvbiB2KHQsZSl7aWYoZS5oYXModCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGluaXRpYWxpemUgdGhlIHNhbWUgcHJpdmF0ZSBlbGVtZW50cyB0d2ljZSBvbiBhbiBvYmplY3QiKX1mdW5jdGlvbiB5KHQsZSxyKXtpZighZS5oYXModCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvIGdldCBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiByfWZ1bmN0aW9uIG0odCxlKXtyZXR1cm4gZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5nZXQ/ZS5nZXQuY2FsbCh0KTplLnZhbHVlfSh0LGIodCxlLCJnZXQiKSl9ZnVuY3Rpb24gZyh0LGUscil7cmV0dXJuIGZ1bmN0aW9uKHQsZSxyKXtpZihlLnNldCllLnNldC5jYWxsKHQscik7ZWxzZXtpZighZS53cml0YWJsZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gc2V0IHJlYWQgb25seSBwcml2YXRlIGZpZWxkIik7ZS52YWx1ZT1yfX0odCxiKHQsZSwic2V0Iikscikscn1mdW5jdGlvbiBiKHQsZSxyKXtpZighZS5oYXModCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvICIrcisiIHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7cmV0dXJuIGUuZ2V0KHQpfXZhciBfLHcsQT1uZXcgV2Vha01hcCxrPW5ldyBXZWFrTWFwLFM9bmV3IFdlYWtNYXAseD1uZXcgV2Vha01hcCxFPW5ldyBXZWFrTWFwLFA9bmV3IFdlYWtNYXAsVD1uZXcgV2Vha01hcCxDPW5ldyBXZWFrTWFwLE89bmV3IFdlYWtTZXQsRj1uZXcgV2Vha1NldCxNPW5ldyBXZWFrU2V0LFI9bmV3IFdlYWtTZXQsST1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7IWZ1bmN0aW9uKHQsZSl7aWYoISh0IGluc3RhbmNlb2YgZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsdCksZih0aGlzLFIpLGYodGhpcyxNKSxmKHRoaXMsRiksZih0aGlzLE8pLHAodGhpcyxBLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxwKHRoaXMsayx7d3JpdGFibGU6ITAsdmFsdWU6ITF9KSxwKHRoaXMsUyx7d3JpdGFibGU6ITAsdmFsdWU6dGhpcy5wb2ludGVydXAuYmluZCh0aGlzKX0pLHAodGhpcyx4LHt3cml0YWJsZTohMCx2YWx1ZTp0aGlzLnBvaW50ZXJkb3duLmJpbmQodGhpcyl9KSxwKHRoaXMsRSx7d3JpdGFibGU6ITAsdmFsdWU6bmV3IE1hcH0pLHAodGhpcyxQLHt3cml0YWJsZTohMCx2YWx1ZTohMX0pLHAodGhpcyxULHt3cml0YWJsZTohMCx2YWx1ZTohMX0pLHAodGhpcyxDLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSx0Ll9pbml0aWFsaXplZHx8KHQuX2luaXRpYWxpemVkPSEwLG8uRnJlZVRleHRFZGl0b3IuaW5pdGlhbGl6ZShlLmwxMG4pLHMuSW5rRWRpdG9yLmluaXRpYWxpemUoZS5sMTBuKSksZS51aU1hbmFnZXIucmVnaXN0ZXJFZGl0b3JUeXBlcyhbby5GcmVlVGV4dEVkaXRvcixzLklua0VkaXRvcl0pLGcodGhpcyxDLGUudWlNYW5hZ2VyKSx0aGlzLnBhZ2VJbmRleD1lLnBhZ2VJbmRleCx0aGlzLmRpdj1lLmRpdixnKHRoaXMsQSxlLmFjY2Vzc2liaWxpdHlNYW5hZ2VyKSxtKHRoaXMsQykuYWRkTGF5ZXIodGhpcyl9dmFyIGUscjtyZXR1cm4gZT10LHI9W3trZXk6InVwZGF0ZVRvb2xiYXIiLHZhbHVlOmZ1bmN0aW9uKHQpe20odGhpcyxDKS51cGRhdGVUb29sYmFyKHQpfX0se2tleToidXBkYXRlTW9kZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06bSh0aGlzLEMpLmdldE1vZGUoKTt5KHRoaXMsUixOKS5jYWxsKHRoaXMpLHQ9PT1pLkFubm90YXRpb25FZGl0b3JUeXBlLklOSz8odGhpcy5hZGRJbmtFZGl0b3JJZk5lZWRlZCghMSksdGhpcy5kaXNhYmxlQ2xpY2soKSk6dGhpcy5lbmFibGVDbGljaygpLG0odGhpcyxDKS51bnNlbGVjdEFsbCgpLHRoaXMuZGl2LmNsYXNzTGlzdC50b2dnbGUoImZyZWVUZXh0RWRpdGluZyIsdD09PWkuQW5ub3RhdGlvbkVkaXRvclR5cGUuRlJFRVRFWFQpLHRoaXMuZGl2LmNsYXNzTGlzdC50b2dnbGUoImlua0VkaXRpbmciLHQ9PT1pLkFubm90YXRpb25FZGl0b3JUeXBlLklOSyl9fSx7a2V5OiJhZGRJbmtFZGl0b3JJZk5lZWRlZCIsdmFsdWU6ZnVuY3Rpb24odCl7aWYodHx8bSh0aGlzLEMpLmdldE1vZGUoKT09PWkuQW5ub3RhdGlvbkVkaXRvclR5cGUuSU5LKXtpZighdCl7dmFyIGUscj11KG0odGhpcyxFKS52YWx1ZXMoKSk7dHJ5e2ZvcihyLnMoKTshKGU9ci5uKCkpLmRvbmU7KXt2YXIgbj1lLnZhbHVlO2lmKG4uaXNFbXB0eSgpKXJldHVybiB2b2lkIG4uc2V0SW5CYWNrZ3JvdW5kKCl9fWNhdGNoKHQpe3IuZSh0KX1maW5hbGx5e3IuZigpfX15KHRoaXMsTSxEKS5jYWxsKHRoaXMse29mZnNldFg6MCxvZmZzZXRZOjB9KS5zZXRJbkJhY2tncm91bmQoKX19fSx7a2V5OiJzZXRFZGl0aW5nU3RhdGUiLHZhbHVlOmZ1bmN0aW9uKHQpe20odGhpcyxDKS5zZXRFZGl0aW5nU3RhdGUodCl9fSx7a2V5OiJhZGRDb21tYW5kcyIsdmFsdWU6ZnVuY3Rpb24odCl7bSh0aGlzLEMpLmFkZENvbW1hbmRzKHQpfX0se2tleToiZW5hYmxlIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZGl2LnN0eWxlLnBvaW50ZXJFdmVudHM9ImF1dG8iO3ZhciB0LGU9dShtKHRoaXMsRSkudmFsdWVzKCkpO3RyeXtmb3IoZS5zKCk7ISh0PWUubigpKS5kb25lOyl0LnZhbHVlLmVuYWJsZUVkaXRpbmcoKX1jYXRjaCh0KXtlLmUodCl9ZmluYWxseXtlLmYoKX19fSx7a2V5OiJkaXNhYmxlIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZGl2LnN0eWxlLnBvaW50ZXJFdmVudHM9Im5vbmUiO3ZhciB0LGU9dShtKHRoaXMsRSkudmFsdWVzKCkpO3RyeXtmb3IoZS5zKCk7ISh0PWUubigpKS5kb25lOyl0LnZhbHVlLmRpc2FibGVFZGl0aW5nKCl9Y2F0Y2godCl7ZS5lKHQpfWZpbmFsbHl7ZS5mKCl9fX0se2tleToic2V0QWN0aXZlRWRpdG9yIix2YWx1ZTpmdW5jdGlvbih0KXttKHRoaXMsQykuZ2V0QWN0aXZlKCkhPT10JiZtKHRoaXMsQykuc2V0QWN0aXZlRWRpdG9yKHQpfX0se2tleToiZW5hYmxlQ2xpY2siLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5kaXYuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcmRvd24iLG0odGhpcyx4KSksdGhpcy5kaXYuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcnVwIixtKHRoaXMsUykpfX0se2tleToiZGlzYWJsZUNsaWNrIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZGl2LnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJkb3duIixtKHRoaXMseCkpLHRoaXMuZGl2LnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJ1cCIsbSh0aGlzLFMpKX19LHtrZXk6ImF0dGFjaCIsdmFsdWU6ZnVuY3Rpb24odCl7bSh0aGlzLEUpLnNldCh0LmlkLHQpfX0se2tleToiZGV0YWNoIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZTttKHRoaXMsRSkuZGVsZXRlKHQuaWQpLG51bGw9PT0oZT1tKHRoaXMsQSkpfHx2b2lkIDA9PT1lfHxlLnJlbW92ZVBvaW50ZXJJblRleHRMYXllcih0LmNvbnRlbnREaXYpfX0se2tleToicmVtb3ZlIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzO20odGhpcyxDKS5yZW1vdmVFZGl0b3IodCksdGhpcy5kZXRhY2godCksdC5kaXYuc3R5bGUuZGlzcGxheT0ibm9uZSIsc2V0VGltZW91dCgoZnVuY3Rpb24oKXt0LmRpdi5zdHlsZS5kaXNwbGF5PSIiLHQuZGl2LnJlbW92ZSgpLHQuaXNBdHRhY2hlZFRvRE9NPSExLGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ9PT1kb2N1bWVudC5ib2R5JiZtKGUsQykuZm9jdXNNYWluQ29udGFpbmVyKCl9KSwwKSxtKHRoaXMsVCl8fHRoaXMuYWRkSW5rRWRpdG9ySWZOZWVkZWQoITEpfX0se2tleToiYWRkIix2YWx1ZTpmdW5jdGlvbih0KXtpZih5KHRoaXMsTyxqKS5jYWxsKHRoaXMsdCksbSh0aGlzLEMpLmFkZEVkaXRvcih0KSx0aGlzLmF0dGFjaCh0KSwhdC5pc0F0dGFjaGVkVG9ET00pe3ZhciBlPXQucmVuZGVyKCk7dGhpcy5kaXYuYXBwZW5kKGUpLHQuaXNBdHRhY2hlZFRvRE9NPSEwfXRoaXMubW92ZUVkaXRvckluRE9NKHQpLHQub25jZUFkZGVkKCksbSh0aGlzLEMpLmFkZFRvQW5ub3RhdGlvblN0b3JhZ2UodCl9fSx7a2V5OiJtb3ZlRWRpdG9ySW5ET00iLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlO251bGw9PT0oZT1tKHRoaXMsQSkpfHx2b2lkIDA9PT1lfHxlLm1vdmVFbGVtZW50SW5ET00odGhpcy5kaXYsdC5kaXYsdC5jb250ZW50RGl2LCEwKX19LHtrZXk6ImFkZE9yUmVidWlsZCIsdmFsdWU6ZnVuY3Rpb24odCl7dC5uZWVkc1RvQmVSZWJ1aWx0KCk/dC5yZWJ1aWxkKCk6dGhpcy5hZGQodCl9fSx7a2V5OiJhZGRBTmV3RWRpdG9yIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzO3RoaXMuYWRkQ29tbWFuZHMoe2NtZDpmdW5jdGlvbigpe2UuYWRkT3JSZWJ1aWxkKHQpfSx1bmRvOmZ1bmN0aW9uKCl7dC5yZW1vdmUoKX0sbXVzdEV4ZWM6ITB9KX19LHtrZXk6ImFkZFVuZG9hYmxlRWRpdG9yIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzO3RoaXMuYWRkQ29tbWFuZHMoe2NtZDpmdW5jdGlvbigpe2UuYWRkT3JSZWJ1aWxkKHQpfSx1bmRvOmZ1bmN0aW9uKCl7dC5yZW1vdmUoKX0sbXVzdEV4ZWM6ITF9KX19LHtrZXk6ImdldE5leHRJZCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gbSh0aGlzLEMpLmdldElkKCl9fSx7a2V5OiJkZXNlcmlhbGl6ZSIsdmFsdWU6ZnVuY3Rpb24odCl7c3dpdGNoKHQuYW5ub3RhdGlvblR5cGUpe2Nhc2UgaS5Bbm5vdGF0aW9uRWRpdG9yVHlwZS5GUkVFVEVYVDpyZXR1cm4gby5GcmVlVGV4dEVkaXRvci5kZXNlcmlhbGl6ZSh0LHRoaXMsbSh0aGlzLEMpKTtjYXNlIGkuQW5ub3RhdGlvbkVkaXRvclR5cGUuSU5LOnJldHVybiBzLklua0VkaXRvci5kZXNlcmlhbGl6ZSh0LHRoaXMsbSh0aGlzLEMpKX1yZXR1cm4gbnVsbH19LHtrZXk6InNldFNlbGVjdGVkIix2YWx1ZTpmdW5jdGlvbih0KXttKHRoaXMsQykuc2V0U2VsZWN0ZWQodCl9fSx7a2V5OiJ0b2dnbGVTZWxlY3RlZCIsdmFsdWU6ZnVuY3Rpb24odCl7bSh0aGlzLEMpLnRvZ2dsZVNlbGVjdGVkKHQpfX0se2tleToiaXNTZWxlY3RlZCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIG0odGhpcyxDKS5pc1NlbGVjdGVkKHQpfX0se2tleToidW5zZWxlY3QiLHZhbHVlOmZ1bmN0aW9uKHQpe20odGhpcyxDKS51bnNlbGVjdCh0KX19LHtrZXk6InBvaW50ZXJ1cCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9aS5GZWF0dXJlVGVzdC5wbGF0Zm9ybS5pc01hYzswIT09dC5idXR0b258fHQuY3RybEtleSYmZXx8dC50YXJnZXQ9PT10aGlzLmRpdiYmbSh0aGlzLFApJiYoZyh0aGlzLFAsITEpLG0odGhpcyxrKT95KHRoaXMsTSxEKS5jYWxsKHRoaXMsdCk6Zyh0aGlzLGssITApKX19LHtrZXk6InBvaW50ZXJkb3duIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1pLkZlYXR1cmVUZXN0LnBsYXRmb3JtLmlzTWFjO2lmKCEoMCE9PXQuYnV0dG9ufHx0LmN0cmxLZXkmJmUpJiZ0LnRhcmdldD09PXRoaXMuZGl2KXtnKHRoaXMsUCwhMCk7dmFyIHI9bSh0aGlzLEMpLmdldEFjdGl2ZSgpO2codGhpcyxrLCFyfHxyLmlzRW1wdHkoKSl9fX0se2tleToiZHJvcCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5kYXRhVHJhbnNmZXIuZ2V0RGF0YSgidGV4dC9wbGFpbiIpLHI9bSh0aGlzLEMpLmdldEVkaXRvcihlKTtpZihyKXt0LnByZXZlbnREZWZhdWx0KCksdC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdD0ibW92ZSIseSh0aGlzLE8saikuY2FsbCh0aGlzLHIpO3ZhciBuPXRoaXMuZGl2LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGk9dC5jbGllbnRYLW4ueCxhPXQuY2xpZW50WS1uLnk7ci50cmFuc2xhdGUoaS1yLnN0YXJ0WCxhLXIuc3RhcnRZKSx0aGlzLm1vdmVFZGl0b3JJbkRPTShyKSxyLmRpdi5mb2N1cygpfX19LHtrZXk6ImRyYWdvdmVyIix2YWx1ZTpmdW5jdGlvbih0KXt0LnByZXZlbnREZWZhdWx0KCl9fSx7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0OyhudWxsPT09KHQ9bSh0aGlzLEMpLmdldEFjdGl2ZSgpKXx8dm9pZCAwPT09dD92b2lkIDA6dC5wYXJlbnQpPT09dGhpcyYmbSh0aGlzLEMpLnNldEFjdGl2ZUVkaXRvcihudWxsKTt2YXIgZSxyPXUobSh0aGlzLEUpLnZhbHVlcygpKTt0cnl7Zm9yKHIucygpOyEoZT1yLm4oKSkuZG9uZTspe3ZhciBuLGk9ZS52YWx1ZTtudWxsPT09KG49bSh0aGlzLEEpKXx8dm9pZCAwPT09bnx8bi5yZW1vdmVQb2ludGVySW5UZXh0TGF5ZXIoaS5jb250ZW50RGl2KSxpLnNldFBhcmVudChudWxsKSxpLmlzQXR0YWNoZWRUb0RPTT0hMSxpLmRpdi5yZW1vdmUoKX19Y2F0Y2godCl7ci5lKHQpfWZpbmFsbHl7ci5mKCl9dGhpcy5kaXY9bnVsbCxtKHRoaXMsRSkuY2xlYXIoKSxtKHRoaXMsQykucmVtb3ZlTGF5ZXIodGhpcyl9fSx7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQudmlld3BvcnQ7dGhpcy52aWV3cG9ydD1lLCgwLGwuc2V0TGF5ZXJEaW1lbnNpb25zKSh0aGlzLmRpdixlKSwoMCxhLmJpbmRFdmVudHMpKHRoaXMsdGhpcy5kaXYsWyJkcmFnb3ZlciIsImRyb3AiXSk7dmFyIHIsbj11KG0odGhpcyxDKS5nZXRFZGl0b3JzKHRoaXMucGFnZUluZGV4KSk7dHJ5e2ZvcihuLnMoKTshKHI9bi5uKCkpLmRvbmU7KXt2YXIgaT1yLnZhbHVlO3RoaXMuYWRkKGkpfX1jYXRjaCh0KXtuLmUodCl9ZmluYWxseXtuLmYoKX10aGlzLnVwZGF0ZU1vZGUoKX19LHtrZXk6InVwZGF0ZSIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC52aWV3cG9ydDttKHRoaXMsQykuY29tbWl0T3JSZW1vdmUoKSx0aGlzLnZpZXdwb3J0PWUsKDAsbC5zZXRMYXllckRpbWVuc2lvbnMpKHRoaXMuZGl2LHtyb3RhdGlvbjplLnJvdGF0aW9ufSksdGhpcy51cGRhdGVNb2RlKCl9fSx7a2V5OiJwYWdlRGltZW5zaW9ucyIsZ2V0OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy52aWV3cG9ydC5yYXdEaW1zO3JldHVyblt0LnBhZ2VXaWR0aCx0LnBhZ2VIZWlnaHRdfX1dLHImJmgoZS5wcm90b3R5cGUsciksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksdH0oKTtmdW5jdGlvbiBqKHQpe3ZhciBlO3QucGFyZW50IT09dGhpcyYmKHRoaXMuYXR0YWNoKHQpLG51bGw9PT0oZT10LnBhcmVudCl8fHZvaWQgMD09PWV8fGUuZGV0YWNoKHQpLHQuc2V0UGFyZW50KHRoaXMpLHQuZGl2JiZ0LmlzQXR0YWNoZWRUb0RPTSYmKHQuZGl2LnJlbW92ZSgpLHRoaXMuZGl2LmFwcGVuZCh0LmRpdikpKX1mdW5jdGlvbiBMKHQpe3N3aXRjaChtKHRoaXMsQykuZ2V0TW9kZSgpKXtjYXNlIGkuQW5ub3RhdGlvbkVkaXRvclR5cGUuRlJFRVRFWFQ6cmV0dXJuIG5ldyBvLkZyZWVUZXh0RWRpdG9yKHQpO2Nhc2UgaS5Bbm5vdGF0aW9uRWRpdG9yVHlwZS5JTks6cmV0dXJuIG5ldyBzLklua0VkaXRvcih0KX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBEKHQpe3ZhciBlPXRoaXMuZ2V0TmV4dElkKCkscj15KHRoaXMsRixMKS5jYWxsKHRoaXMse3BhcmVudDp0aGlzLGlkOmUseDp0Lm9mZnNldFgseTp0Lm9mZnNldFksdWlNYW5hZ2VyOm0odGhpcyxDKX0pO3JldHVybiByJiZ0aGlzLmFkZChyKSxyfWZ1bmN0aW9uIE4oKXtnKHRoaXMsVCwhMCk7dmFyIHQsZT11KG0odGhpcyxFKS52YWx1ZXMoKSk7dHJ5e2ZvcihlLnMoKTshKHQ9ZS5uKCkpLmRvbmU7KXt2YXIgcj10LnZhbHVlO3IuaXNFbXB0eSgpJiZyLnJlbW92ZSgpfX1jYXRjaCh0KXtlLmUodCl9ZmluYWxseXtlLmYoKX1nKHRoaXMsVCwhMSl9ZS5Bbm5vdGF0aW9uRWRpdG9yTGF5ZXI9SSxfPUksKHc9ZCh3PSJfaW5pdGlhbGl6ZWQiKSlpbiBfP09iamVjdC5kZWZpbmVQcm9wZXJ0eShfLHcse3ZhbHVlOmZhbHNlLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6X1t3XT1mYWxzZX0sKHQsZSxyKT0+e2Z1bmN0aW9uIG4odCl7cmV0dXJuIG49ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LG4odCl9T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGUuRnJlZVRleHRFZGl0b3I9dm9pZCAwO3ZhciBpPXIoMSksYT1yKDEzNiksbz1yKDEzNSk7ZnVuY3Rpb24gcyh0LGUpe3ZhciByPSJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZ0W1N5bWJvbC5pdGVyYXRvcl18fHRbIkBAaXRlcmF0b3IiXTtpZighcil7aWYoQXJyYXkuaXNBcnJheSh0KXx8KHI9dSh0KSl8fGUmJnQmJiJudW1iZXIiPT10eXBlb2YgdC5sZW5ndGgpe3ImJih0PXIpO3ZhciBuPTAsaT1mdW5jdGlvbigpe307cmV0dXJue3M6aSxuOmZ1bmN0aW9uKCl7cmV0dXJuIG4+PXQubGVuZ3RoP3tkb25lOiEwfTp7ZG9uZTohMSx2YWx1ZTp0W24rK119fSxlOmZ1bmN0aW9uKHQpe3Rocm93IHR9LGY6aX19dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGl0ZXJhdGUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfXZhciBhLG89ITAscz0hMTtyZXR1cm57czpmdW5jdGlvbigpe3I9ci5jYWxsKHQpfSxuOmZ1bmN0aW9uKCl7dmFyIHQ9ci5uZXh0KCk7cmV0dXJuIG89dC5kb25lLHR9LGU6ZnVuY3Rpb24odCl7cz0hMCxhPXR9LGY6ZnVuY3Rpb24oKXt0cnl7b3x8bnVsbD09ci5yZXR1cm58fHIucmV0dXJuKCl9ZmluYWxseXtpZihzKXRocm93IGF9fX19ZnVuY3Rpb24gbCh0LGUpe3JldHVybiBmdW5jdGlvbih0KXtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiB0fSh0KXx8ZnVuY3Rpb24odCxlKXt2YXIgcj1udWxsPT10P251bGw6InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJnRbU3ltYm9sLml0ZXJhdG9yXXx8dFsiQEBpdGVyYXRvciJdO2lmKG51bGwhPXIpe3ZhciBuLGksYSxvLHM9W10sbD0hMCx1PSExO3RyeXtpZihhPShyPXIuY2FsbCh0KSkubmV4dCwwPT09ZSl7aWYoT2JqZWN0KHIpIT09cilyZXR1cm47bD0hMX1lbHNlIGZvcig7IShsPShuPWEuY2FsbChyKSkuZG9uZSkmJihzLnB1c2gobi52YWx1ZSkscy5sZW5ndGghPT1lKTtsPSEwKTt9Y2F0Y2godCl7dT0hMCxpPXR9ZmluYWxseXt0cnl7aWYoIWwmJm51bGwhPXIucmV0dXJuJiYobz1yLnJldHVybigpLE9iamVjdChvKSE9PW8pKXJldHVybn1maW5hbGx5e2lmKHUpdGhyb3cgaX19cmV0dXJuIHN9fSh0LGUpfHx1KHQsZSl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiB1KHQsZSl7aWYodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiBjKHQsZSk7dmFyIHI9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpLnNsaWNlKDgsLTEpO3JldHVybiJPYmplY3QiPT09ciYmdC5jb25zdHJ1Y3RvciYmKHI9dC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PXJ8fCJTZXQiPT09cj9BcnJheS5mcm9tKHQpOiJBcmd1bWVudHMiPT09cnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3Qocik/Yyh0LGUpOnZvaWQgMH19ZnVuY3Rpb24gYyh0LGUpeyhudWxsPT1lfHxlPnQubGVuZ3RoKSYmKGU9dC5sZW5ndGgpO2Zvcih2YXIgcj0wLG49bmV3IEFycmF5KGUpO3I8ZTtyKyspbltyXT10W3JdO3JldHVybiBufWZ1bmN0aW9uIGgodCxlKXt2YXIgcj1PYmplY3Qua2V5cyh0KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHQpO2UmJihuPW4uZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LGUpLmVudW1lcmFibGV9KSkpLHIucHVzaC5hcHBseShyLG4pfXJldHVybiByfWZ1bmN0aW9uIGYodCl7Zm9yKHZhciBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7dmFyIHI9bnVsbCE9YXJndW1lbnRzW2VdP2FyZ3VtZW50c1tlXTp7fTtlJTI/aChPYmplY3QociksITApLmZvckVhY2goKGZ1bmN0aW9uKGUpe2IodCxlLHJbZV0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMocikpOmgoT2JqZWN0KHIpKS5mb3JFYWNoKChmdW5jdGlvbihlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocixlKSl9KSl9cmV0dXJuIHR9ZnVuY3Rpb24gZCh0LGUpe2Zvcih2YXIgcj0wO3I8ZS5sZW5ndGg7cisrKXt2YXIgbj1lW3JdO24uZW51bWVyYWJsZT1uLmVudW1lcmFibGV8fCExLG4uY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBuJiYobi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXyhuLmtleSksbil9fWZ1bmN0aW9uIHAoKXtyZXR1cm4gcD0idW5kZWZpbmVkIiE9dHlwZW9mIFJlZmxlY3QmJlJlZmxlY3QuZ2V0P1JlZmxlY3QuZ2V0LmJpbmQoKTpmdW5jdGlvbih0LGUscil7dmFyIG49ZnVuY3Rpb24odCxlKXtmb3IoOyFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxlKSYmbnVsbCE9PSh0PW0odCkpOyk7cmV0dXJuIHR9KHQsZSk7aWYobil7dmFyIGk9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpO3JldHVybiBpLmdldD9pLmdldC5jYWxsKGFyZ3VtZW50cy5sZW5ndGg8Mz90OnIpOmkudmFsdWV9fSxwLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiB2KHQsZSl7cmV0dXJuIHY9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5fX3Byb3RvX189ZSx0fSx2KHQsZSl9ZnVuY3Rpb24geSh0KXtpZih2b2lkIDA9PT10KXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIHR9ZnVuY3Rpb24gbSh0KXtyZXR1cm4gbT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbih0KXtyZXR1cm4gdC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZih0KX0sbSh0KX1mdW5jdGlvbiBnKHQsZSl7QSh0LGUpLGUuYWRkKHQpfWZ1bmN0aW9uIGIodCxlLHIpe3JldHVybihlPV8oZSkpaW4gdD9PYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLHt2YWx1ZTpyLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6dFtlXT1yLHR9ZnVuY3Rpb24gXyh0KXt2YXIgZT1mdW5jdGlvbih0LGUpe2lmKCJvYmplY3QiIT09bih0KXx8bnVsbD09PXQpcmV0dXJuIHQ7dmFyIHI9dFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PXIpe3ZhciBpPXIuY2FsbCh0LCJzdHJpbmciKTtpZigib2JqZWN0IiE9PW4oaSkpcmV0dXJuIGk7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4gU3RyaW5nKHQpfSh0KTtyZXR1cm4ic3ltYm9sIj09PW4oZSk/ZTpTdHJpbmcoZSl9ZnVuY3Rpb24gdyh0LGUscil7QSh0LGUpLGUuc2V0KHQscil9ZnVuY3Rpb24gQSh0LGUpe2lmKGUuaGFzKHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBpbml0aWFsaXplIHRoZSBzYW1lIHByaXZhdGUgZWxlbWVudHMgdHdpY2Ugb24gYW4gb2JqZWN0Iil9ZnVuY3Rpb24gayh0LGUpe3JldHVybiBmdW5jdGlvbih0LGUpe3JldHVybiBlLmdldD9lLmdldC5jYWxsKHQpOmUudmFsdWV9KHQsRSh0LGUsImdldCIpKX1mdW5jdGlvbiBTKHQsZSxyKXtpZighZS5oYXModCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvIGdldCBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiByfWZ1bmN0aW9uIHgodCxlLHIpe3JldHVybiBmdW5jdGlvbih0LGUscil7aWYoZS5zZXQpZS5zZXQuY2FsbCh0LHIpO2Vsc2V7aWYoIWUud3JpdGFibGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvIHNldCByZWFkIG9ubHkgcHJpdmF0ZSBmaWVsZCIpO2UudmFsdWU9cn19KHQsRSh0LGUsInNldCIpLHIpLHJ9ZnVuY3Rpb24gRSh0LGUscil7aWYoIWUuaGFzKHQpKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byAiK3IrIiBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiBlLmdldCh0KX12YXIgUD1uZXcgV2Vha01hcCxUPW5ldyBXZWFrTWFwLEM9bmV3IFdlYWtNYXAsTz1uZXcgV2Vha01hcCxGPW5ldyBXZWFrTWFwLE09bmV3IFdlYWtNYXAsUj1uZXcgV2Vha01hcCxJPW5ldyBXZWFrTWFwLGo9bmV3IFdlYWtNYXAsTD1uZXcgV2Vha1NldCxEPW5ldyBXZWFrU2V0LE49bmV3IFdlYWtTZXQsVT1uZXcgV2Vha1NldCxXPWZ1bmN0aW9uKHQpeyFmdW5jdGlvbih0LGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlJiZudWxsIT09ZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO3QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZSYmZS5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTp0LHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxlJiZ2KHQsZSl9KEUsdCk7dmFyIGUscixoLGIsXyxBPShiPUUsXz1mdW5jdGlvbigpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0KXJldHVybiExO2lmKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sKGZ1bmN0aW9uKCl7fSkpKSwhMH1jYXRjaCh0KXtyZXR1cm4hMX19KCksZnVuY3Rpb24oKXt2YXIgdCxlPW0oYik7aWYoXyl7dmFyIHI9bSh0aGlzKS5jb25zdHJ1Y3Rvcjt0PVJlZmxlY3QuY29uc3RydWN0KGUsYXJndW1lbnRzLHIpfWVsc2UgdD1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZnVuY3Rpb24odCxlKXtpZihlJiYoIm9iamVjdCI9PT1uKGUpfHwiZnVuY3Rpb24iPT10eXBlb2YgZSkpcmV0dXJuIGU7aWYodm9pZCAwIT09ZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiB5KHQpfSh0aGlzLHQpfSk7ZnVuY3Rpb24gRSh0KXt2YXIgZTtyZXR1cm4gZnVuY3Rpb24odCxlKXtpZighKHQgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxFKSxnKHkoZT1BLmNhbGwodGhpcyxmKGYoe30sdCkse30se25hbWU6ImZyZWVUZXh0RWRpdG9yIn0pKSksVSksZyh5KGUpLE4pLGcoeShlKSxEKSxnKHkoZSksTCksdyh5KGUpLFAse3dyaXRhYmxlOiEwLHZhbHVlOmUuZWRpdG9yRGl2Qmx1ci5iaW5kKHkoZSkpfSksdyh5KGUpLFQse3dyaXRhYmxlOiEwLHZhbHVlOmUuZWRpdG9yRGl2Rm9jdXMuYmluZCh5KGUpKX0pLHcoeShlKSxDLHt3cml0YWJsZTohMCx2YWx1ZTplLmVkaXRvckRpdklucHV0LmJpbmQoeShlKSl9KSx3KHkoZSksTyx7d3JpdGFibGU6ITAsdmFsdWU6ZS5lZGl0b3JEaXZLZXlkb3duLmJpbmQoeShlKSl9KSx3KHkoZSksRix7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksdyh5KGUpLE0se3dyaXRhYmxlOiEwLHZhbHVlOiIifSksdyh5KGUpLFIse3dyaXRhYmxlOiEwLHZhbHVlOiIiLmNvbmNhdChlLmlkLCItZWRpdG9yIil9KSx3KHkoZSksSSx7d3JpdGFibGU6ITAsdmFsdWU6ITF9KSx3KHkoZSksaix7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSkseCh5KGUpLEYsdC5jb2xvcnx8RS5fZGVmYXVsdENvbG9yfHxvLkFubm90YXRpb25FZGl0b3IuX2RlZmF1bHRMaW5lQ29sb3IpLHgoeShlKSxqLHQuZm9udFNpemV8fEUuX2RlZmF1bHRGb250U2l6ZSksZX1yZXR1cm4gZT1FLGg9W3trZXk6ImluaXRpYWxpemUiLHZhbHVlOmZ1bmN0aW9uKHQpe3RoaXMuX2wxMG5Qcm9taXNlPW5ldyBNYXAoWyJmcmVlX3RleHQyX2RlZmF1bHRfY29udGVudCIsImVkaXRvcl9mcmVlX3RleHQyX2FyaWFfbGFiZWwiXS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybltlLHQuZ2V0KGUpXX0pKSk7dmFyIGU9Z2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpO3RoaXMuX2ludGVybmFsUGFkZGluZz1wYXJzZUZsb2F0KGUuZ2V0UHJvcGVydHlWYWx1ZSgiLS1mcmVldGV4dC1wYWRkaW5nIikpfX0se2tleToidXBkYXRlRGVmYXVsdFBhcmFtcyIsdmFsdWU6ZnVuY3Rpb24odCxlKXtzd2l0Y2godCl7Y2FzZSBpLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLkZSRUVURVhUX1NJWkU6RS5fZGVmYXVsdEZvbnRTaXplPWU7YnJlYWs7Y2FzZSBpLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLkZSRUVURVhUX0NPTE9SOkUuX2RlZmF1bHRDb2xvcj1lfX19LHtrZXk6ImRlZmF1bHRQcm9wZXJ0aWVzVG9VcGRhdGUiLGdldDpmdW5jdGlvbigpe3JldHVybltbaS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5GUkVFVEVYVF9TSVpFLEUuX2RlZmF1bHRGb250U2l6ZV0sW2kuQW5ub3RhdGlvbkVkaXRvclBhcmFtc1R5cGUuRlJFRVRFWFRfQ09MT1IsRS5fZGVmYXVsdENvbG9yfHxvLkFubm90YXRpb25FZGl0b3IuX2RlZmF1bHRMaW5lQ29sb3JdXX19LHtrZXk6ImRlc2VyaWFsaXplIix2YWx1ZTpmdW5jdGlvbih0LGUscil7dmFyIG4sYT1wKG0oRSksImRlc2VyaWFsaXplIix0aGlzKS5jYWxsKHRoaXMsdCxlLHIpO3JldHVybiB4KGEsaix0LmZvbnRTaXplKSx4KGEsRixpLlV0aWwubWFrZUhleENvbG9yLmFwcGx5KGkuVXRpbCxmdW5jdGlvbih0KXtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiBjKHQpfShuPXQuY29sb3IpfHxmdW5jdGlvbih0KXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmbnVsbCE9dFtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT10WyJAQGl0ZXJhdG9yIl0pcmV0dXJuIEFycmF5LmZyb20odCl9KG4pfHx1KG4pfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpKSkseChhLE0sdC52YWx1ZSksYX19XSwocj1be2tleToidXBkYXRlUGFyYW1zIix2YWx1ZTpmdW5jdGlvbih0LGUpe3N3aXRjaCh0KXtjYXNlIGkuQW5ub3RhdGlvbkVkaXRvclBhcmFtc1R5cGUuRlJFRVRFWFRfU0laRTpTKHRoaXMsTCxHKS5jYWxsKHRoaXMsZSk7YnJlYWs7Y2FzZSBpLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLkZSRUVURVhUX0NPTE9SOlModGhpcyxELEIpLmNhbGwodGhpcyxlKX19fSx7a2V5OiJwcm9wZXJ0aWVzVG9VcGRhdGUiLGdldDpmdW5jdGlvbigpe3JldHVybltbaS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5GUkVFVEVYVF9TSVpFLGsodGhpcyxqKV0sW2kuQW5ub3RhdGlvbkVkaXRvclBhcmFtc1R5cGUuRlJFRVRFWFRfQ09MT1Isayh0aGlzLEYpXV19fSx7a2V5OiJnZXRJbml0aWFsVHJhbnNsYXRpb24iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5wYXJlbnRTY2FsZTtyZXR1cm5bLUUuX2ludGVybmFsUGFkZGluZyp0LC0oRS5faW50ZXJuYWxQYWRkaW5nK2sodGhpcyxqKSkqdF19fSx7a2V5OiJyZWJ1aWxkIix2YWx1ZTpmdW5jdGlvbigpe3AobShFLnByb3RvdHlwZSksInJlYnVpbGQiLHRoaXMpLmNhbGwodGhpcyksbnVsbCE9PXRoaXMuZGl2JiYodGhpcy5pc0F0dGFjaGVkVG9ET018fHRoaXMucGFyZW50LmFkZCh0aGlzKSl9fSx7a2V5OiJlbmFibGVFZGl0TW9kZSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmlzSW5FZGl0TW9kZSgpfHwodGhpcy5wYXJlbnQuc2V0RWRpdGluZ1N0YXRlKCExKSx0aGlzLnBhcmVudC51cGRhdGVUb29sYmFyKGkuQW5ub3RhdGlvbkVkaXRvclR5cGUuRlJFRVRFWFQpLHAobShFLnByb3RvdHlwZSksImVuYWJsZUVkaXRNb2RlIix0aGlzKS5jYWxsKHRoaXMpLHRoaXMub3ZlcmxheURpdi5jbGFzc0xpc3QucmVtb3ZlKCJlbmFibGVkIiksdGhpcy5lZGl0b3JEaXYuY29udGVudEVkaXRhYmxlPSEwLHRoaXMuZGl2LmRyYWdnYWJsZT0hMSx0aGlzLmRpdi5yZW1vdmVBdHRyaWJ1dGUoImFyaWEtYWN0aXZlZGVzY2VuZGFudCIpLHRoaXMuZWRpdG9yRGl2LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLGsodGhpcyxPKSksdGhpcy5lZGl0b3JEaXYuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLGsodGhpcyxUKSksdGhpcy5lZGl0b3JEaXYuYWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsayh0aGlzLFApKSx0aGlzLmVkaXRvckRpdi5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsayh0aGlzLEMpKSl9fSx7a2V5OiJkaXNhYmxlRWRpdE1vZGUiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5pc0luRWRpdE1vZGUoKSYmKHRoaXMucGFyZW50LnNldEVkaXRpbmdTdGF0ZSghMCkscChtKEUucHJvdG90eXBlKSwiZGlzYWJsZUVkaXRNb2RlIix0aGlzKS5jYWxsKHRoaXMpLHRoaXMub3ZlcmxheURpdi5jbGFzc0xpc3QuYWRkKCJlbmFibGVkIiksdGhpcy5lZGl0b3JEaXYuY29udGVudEVkaXRhYmxlPSExLHRoaXMuZGl2LnNldEF0dHJpYnV0ZSgiYXJpYS1hY3RpdmVkZXNjZW5kYW50IixrKHRoaXMsUikpLHRoaXMuZGl2LmRyYWdnYWJsZT0hMCx0aGlzLmVkaXRvckRpdi5yZW1vdmVFdmVudExpc3RlbmVyKCJrZXlkb3duIixrKHRoaXMsTykpLHRoaXMuZWRpdG9yRGl2LnJlbW92ZUV2ZW50TGlzdGVuZXIoImZvY3VzIixrKHRoaXMsVCkpLHRoaXMuZWRpdG9yRGl2LnJlbW92ZUV2ZW50TGlzdGVuZXIoImJsdXIiLGsodGhpcyxQKSksdGhpcy5lZGl0b3JEaXYucmVtb3ZlRXZlbnRMaXN0ZW5lcigiaW5wdXQiLGsodGhpcyxDKSksdGhpcy5kaXYuZm9jdXMoe3ByZXZlbnRTY3JvbGw6ITB9KSx0aGlzLmlzRWRpdGluZz0hMSx0aGlzLnBhcmVudC5kaXYuY2xhc3NMaXN0LmFkZCgiZnJlZVRleHRFZGl0aW5nIikpfX0se2tleToiZm9jdXNpbiIsdmFsdWU6ZnVuY3Rpb24odCl7cChtKEUucHJvdG90eXBlKSwiZm9jdXNpbiIsdGhpcykuY2FsbCh0aGlzLHQpLHQudGFyZ2V0IT09dGhpcy5lZGl0b3JEaXYmJnRoaXMuZWRpdG9yRGl2LmZvY3VzKCl9fSx7a2V5OiJvbmNlQWRkZWQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy53aWR0aHx8KHRoaXMuZW5hYmxlRWRpdE1vZGUoKSx0aGlzLmVkaXRvckRpdi5mb2N1cygpKX19LHtrZXk6ImlzRW1wdHkiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuZWRpdG9yRGl2fHwiIj09PXRoaXMuZWRpdG9yRGl2LmlubmVyVGV4dC50cmltKCl9fSx7a2V5OiJyZW1vdmUiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5pc0VkaXRpbmc9ITEsdGhpcy5wYXJlbnQuc2V0RWRpdGluZ1N0YXRlKCEwKSx0aGlzLnBhcmVudC5kaXYuY2xhc3NMaXN0LmFkZCgiZnJlZVRleHRFZGl0aW5nIikscChtKEUucHJvdG90eXBlKSwicmVtb3ZlIix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToiY29tbWl0Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuaXNJbkVkaXRNb2RlKCkmJihwKG0oRS5wcm90b3R5cGUpLCJjb21taXQiLHRoaXMpLmNhbGwodGhpcyksayh0aGlzLEkpfHwoeCh0aGlzLEksITApLHRoaXMucGFyZW50LmFkZFVuZG9hYmxlRWRpdG9yKHRoaXMpKSx0aGlzLmRpc2FibGVFZGl0TW9kZSgpLHgodGhpcyxNLFModGhpcyxOLHEpLmNhbGwodGhpcykudHJpbUVuZCgpKSxTKHRoaXMsVSxIKS5jYWxsKHRoaXMpKX19LHtrZXk6InNob3VsZEdldEtleWJvYXJkRXZlbnRzIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmlzSW5FZGl0TW9kZSgpfX0se2tleToiZGJsY2xpY2siLHZhbHVlOmZ1bmN0aW9uKHQpe3RoaXMuZW5hYmxlRWRpdE1vZGUoKSx0aGlzLmVkaXRvckRpdi5mb2N1cygpfX0se2tleToia2V5ZG93biIsdmFsdWU6ZnVuY3Rpb24odCl7dC50YXJnZXQ9PT10aGlzLmRpdiYmIkVudGVyIj09PXQua2V5JiYodGhpcy5lbmFibGVFZGl0TW9kZSgpLHRoaXMuZWRpdG9yRGl2LmZvY3VzKCkpfX0se2tleToiZWRpdG9yRGl2S2V5ZG93biIsdmFsdWU6ZnVuY3Rpb24odCl7RS5fa2V5Ym9hcmRNYW5hZ2VyLmV4ZWModGhpcyx0KX19LHtrZXk6ImVkaXRvckRpdkZvY3VzIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLmlzRWRpdGluZz0hMH19LHtrZXk6ImVkaXRvckRpdkJsdXIiLHZhbHVlOmZ1bmN0aW9uKHQpe3RoaXMuaXNFZGl0aW5nPSExfX0se2tleToiZWRpdG9yRGl2SW5wdXQiLHZhbHVlOmZ1bmN0aW9uKHQpe3RoaXMucGFyZW50LmRpdi5jbGFzc0xpc3QudG9nZ2xlKCJmcmVlVGV4dEVkaXRpbmciLHRoaXMuaXNFbXB0eSgpKX19LHtrZXk6ImRpc2FibGVFZGl0aW5nIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZWRpdG9yRGl2LnNldEF0dHJpYnV0ZSgicm9sZSIsImNvbW1lbnQiKSx0aGlzLmVkaXRvckRpdi5yZW1vdmVBdHRyaWJ1dGUoImFyaWEtbXVsdGlsaW5lIil9fSx7a2V5OiJlbmFibGVFZGl0aW5nIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZWRpdG9yRGl2LnNldEF0dHJpYnV0ZSgicm9sZSIsInRleHRib3giKSx0aGlzLmVkaXRvckRpdi5zZXRBdHRyaWJ1dGUoImFyaWEtbXVsdGlsaW5lIiwhMCl9fSx7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQsZSxyPXRoaXM7aWYodGhpcy5kaXYpcmV0dXJuIHRoaXMuZGl2O3RoaXMud2lkdGgmJih0PXRoaXMueCxlPXRoaXMueSkscChtKEUucHJvdG90eXBlKSwicmVuZGVyIix0aGlzKS5jYWxsKHRoaXMpLHRoaXMuZWRpdG9yRGl2PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRoaXMuZWRpdG9yRGl2LmNsYXNzTmFtZT0iaW50ZXJuYWwiLHRoaXMuZWRpdG9yRGl2LnNldEF0dHJpYnV0ZSgiaWQiLGsodGhpcyxSKSksdGhpcy5lbmFibGVFZGl0aW5nKCksRS5fbDEwblByb21pc2UuZ2V0KCJlZGl0b3JfZnJlZV90ZXh0Ml9hcmlhX2xhYmVsIikudGhlbigoZnVuY3Rpb24odCl7dmFyIGU7cmV0dXJuIG51bGw9PT0oZT1yLmVkaXRvckRpdil8fHZvaWQgMD09PWU/dm9pZCAwOmUuc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIix0KX0pKSxFLl9sMTBuUHJvbWlzZS5nZXQoImZyZWVfdGV4dDJfZGVmYXVsdF9jb250ZW50IikudGhlbigoZnVuY3Rpb24odCl7dmFyIGU7cmV0dXJuIG51bGw9PT0oZT1yLmVkaXRvckRpdil8fHZvaWQgMD09PWU/dm9pZCAwOmUuc2V0QXR0cmlidXRlKCJkZWZhdWx0LWNvbnRlbnQiLHQpfSkpLHRoaXMuZWRpdG9yRGl2LmNvbnRlbnRFZGl0YWJsZT0hMDt2YXIgbj10aGlzLmVkaXRvckRpdi5zdHlsZTtpZihuLmZvbnRTaXplPSJjYWxjKCIuY29uY2F0KGsodGhpcyxqKSwicHggKiB2YXIoLS1zY2FsZS1mYWN0b3IpKSIpLG4uY29sb3I9ayh0aGlzLEYpLHRoaXMuZGl2LmFwcGVuZCh0aGlzLmVkaXRvckRpdiksdGhpcy5vdmVybGF5RGl2PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRoaXMub3ZlcmxheURpdi5jbGFzc0xpc3QuYWRkKCJvdmVybGF5IiwiZW5hYmxlZCIpLHRoaXMuZGl2LmFwcGVuZCh0aGlzLm92ZXJsYXlEaXYpLCgwLGEuYmluZEV2ZW50cykodGhpcyx0aGlzLmRpdixbImRibGNsaWNrIiwia2V5ZG93biJdKSx0aGlzLndpZHRoKXt2YXIgaT1sKHRoaXMucGFyZW50RGltZW5zaW9ucywyKSxvPWlbMF0sdT1pWzFdO3RoaXMuc2V0QXQodCpvLGUqdSx0aGlzLndpZHRoKm8sdGhpcy5oZWlnaHQqdSk7dmFyIGMsaD1zKGsodGhpcyxNKS5zcGxpdCgiXG4iKSk7dHJ5e2ZvcihoLnMoKTshKGM9aC5uKCkpLmRvbmU7KXt2YXIgZj1jLnZhbHVlLGQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7ZC5hcHBlbmQoZj9kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShmKTpkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJiciIpKSx0aGlzLmVkaXRvckRpdi5hcHBlbmQoZCl9fWNhdGNoKHQpe2guZSh0KX1maW5hbGx5e2guZigpfXRoaXMuZGl2LmRyYWdnYWJsZT0hMCx0aGlzLmVkaXRvckRpdi5jb250ZW50RWRpdGFibGU9ITF9ZWxzZSB0aGlzLmRpdi5kcmFnZ2FibGU9ITEsdGhpcy5lZGl0b3JEaXYuY29udGVudEVkaXRhYmxlPSEwO3JldHVybiB0aGlzLmRpdn19LHtrZXk6ImNvbnRlbnREaXYiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVkaXRvckRpdn19LHtrZXk6InNlcmlhbGl6ZSIsdmFsdWU6ZnVuY3Rpb24oKXtpZih0aGlzLmlzRW1wdHkoKSlyZXR1cm4gbnVsbDt2YXIgdD1FLl9pbnRlcm5hbFBhZGRpbmcqdGhpcy5wYXJlbnRTY2FsZSxlPXRoaXMuZ2V0UmVjdCh0LHQpLHI9by5Bbm5vdGF0aW9uRWRpdG9yLl9jb2xvck1hbmFnZXIuY29udmVydCh0aGlzLmlzQXR0YWNoZWRUb0RPTT9nZXRDb21wdXRlZFN0eWxlKHRoaXMuZWRpdG9yRGl2KS5jb2xvcjprKHRoaXMsRikpO3JldHVybnthbm5vdGF0aW9uVHlwZTppLkFubm90YXRpb25FZGl0b3JUeXBlLkZSRUVURVhULGNvbG9yOnIsZm9udFNpemU6ayh0aGlzLGopLHZhbHVlOmsodGhpcyxNKSxwYWdlSW5kZXg6dGhpcy5wYWdlSW5kZXgscmVjdDplLHJvdGF0aW9uOnRoaXMucm90YXRpb259fX1dKSYmZChlLnByb3RvdHlwZSxyKSxoJiZkKGUsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksRX0oby5Bbm5vdGF0aW9uRWRpdG9yKTtmdW5jdGlvbiBHKHQpe3ZhciBlPXRoaXMscj1mdW5jdGlvbih0KXtlLmVkaXRvckRpdi5zdHlsZS5mb250U2l6ZT0iY2FsYygiLmNvbmNhdCh0LCJweCAqIHZhcigtLXNjYWxlLWZhY3RvcikpIiksZS50cmFuc2xhdGUoMCwtKHQtayhlLGopKSplLnBhcmVudFNjYWxlKSx4KGUsaix0KSxTKGUsVSxIKS5jYWxsKGUpfSxuPWsodGhpcyxqKTt0aGlzLmFkZENvbW1hbmRzKHtjbWQ6ZnVuY3Rpb24oKXtyKHQpfSx1bmRvOmZ1bmN0aW9uKCl7cihuKX0sbXVzdEV4ZWM6ITAsdHlwZTppLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLkZSRUVURVhUX1NJWkUsb3ZlcndyaXRlSWZTYW1lVHlwZTohMCxrZWVwVW5kbzohMH0pfWZ1bmN0aW9uIEIodCl7dmFyIGU9dGhpcyxyPWsodGhpcyxGKTt0aGlzLmFkZENvbW1hbmRzKHtjbWQ6ZnVuY3Rpb24oKXt4KGUsRixlLmVkaXRvckRpdi5zdHlsZS5jb2xvcj10KX0sdW5kbzpmdW5jdGlvbigpe3goZSxGLGUuZWRpdG9yRGl2LnN0eWxlLmNvbG9yPXIpfSxtdXN0RXhlYzohMCx0eXBlOmkuQW5ub3RhdGlvbkVkaXRvclBhcmFtc1R5cGUuRlJFRVRFWFRfQ09MT1Isb3ZlcndyaXRlSWZTYW1lVHlwZTohMCxrZWVwVW5kbzohMH0pfWZ1bmN0aW9uIHEoKXt2YXIgdD10aGlzLmVkaXRvckRpdi5nZXRFbGVtZW50c0J5VGFnTmFtZSgiZGl2Iik7aWYoMD09PXQubGVuZ3RoKXJldHVybiB0aGlzLmVkaXRvckRpdi5pbm5lclRleHQ7dmFyIGUscj1bXSxuPXModCk7dHJ5e2ZvcihuLnMoKTshKGU9bi5uKCkpLmRvbmU7KXt2YXIgaT1lLnZhbHVlO3IucHVzaChpLmlubmVyVGV4dC5yZXBsYWNlKC9cclxuP3xcbi8sIiIpKX19Y2F0Y2godCl7bi5lKHQpfWZpbmFsbHl7bi5mKCl9cmV0dXJuIHIuam9pbigiXG4iKX1mdW5jdGlvbiBIKCl7dmFyIHQsZT1sKHRoaXMucGFyZW50RGltZW5zaW9ucywyKSxyPWVbMF0sbj1lWzFdO2lmKHRoaXMuaXNBdHRhY2hlZFRvRE9NKXQ9dGhpcy5kaXYuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7ZWxzZXt2YXIgaT10aGlzLmN1cnJlbnRMYXllcixhPXRoaXMuZGl2LG89YS5zdHlsZS5kaXNwbGF5O2Euc3R5bGUuZGlzcGxheT0iaGlkZGVuIixpLmRpdi5hcHBlbmQodGhpcy5kaXYpLHQ9YS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxhLnJlbW92ZSgpLGEuc3R5bGUuZGlzcGxheT1vfXRoaXMud2lkdGg9dC53aWR0aC9yLHRoaXMuaGVpZ2h0PXQuaGVpZ2h0L259ZS5GcmVlVGV4dEVkaXRvcj1XLGIoVywiX2ZyZWVUZXh0RGVmYXVsdENvbnRlbnQiLCIiKSxiKFcsIl9sMTBuUHJvbWlzZSIsdm9pZCAwKSxiKFcsIl9pbnRlcm5hbFBhZGRpbmciLDApLGIoVywiX2RlZmF1bHRDb2xvciIsbnVsbCksYihXLCJfZGVmYXVsdEZvbnRTaXplIiwxMCksYihXLCJfa2V5Ym9hcmRNYW5hZ2VyIixuZXcgYS5LZXlib2FyZE1hbmFnZXIoW1tbImN0cmwrRW50ZXIiLCJtYWMrbWV0YStFbnRlciIsIkVzY2FwZSIsIm1hYytFc2NhcGUiXSxXLnByb3RvdHlwZS5jb21taXRPclJlbW92ZV1dKSksYihXLCJfdHlwZSIsImZyZWV0ZXh0Iil9LCh0LGUscik9PntmdW5jdGlvbiBuKHQpe3JldHVybiBuPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiB0fSxuKHQpfU9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxlLklua0VkaXRvcj12b2lkIDAsT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsImZpdEN1cnZlIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gby5maXRDdXJ2ZX19KTt2YXIgaT1yKDEpLGE9cigxMzUpLG89cigxNTUpLHM9cigxMzYpO2Z1bmN0aW9uIGwodCxlKXt2YXIgcj0idW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmdFtTeW1ib2wuaXRlcmF0b3JdfHx0WyJAQGl0ZXJhdG9yIl07aWYoIXIpe2lmKEFycmF5LmlzQXJyYXkodCl8fChyPWgodCkpfHxlJiZ0JiYibnVtYmVyIj09dHlwZW9mIHQubGVuZ3RoKXtyJiYodD1yKTt2YXIgbj0wLGk9ZnVuY3Rpb24oKXt9O3JldHVybntzOmksbjpmdW5jdGlvbigpe3JldHVybiBuPj10Lmxlbmd0aD97ZG9uZTohMH06e2RvbmU6ITEsdmFsdWU6dFtuKytdfX0sZTpmdW5jdGlvbih0KXt0aHJvdyB0fSxmOml9fXRocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBpdGVyYXRlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX12YXIgYSxvPSEwLHM9ITE7cmV0dXJue3M6ZnVuY3Rpb24oKXtyPXIuY2FsbCh0KX0sbjpmdW5jdGlvbigpe3ZhciB0PXIubmV4dCgpO3JldHVybiBvPXQuZG9uZSx0fSxlOmZ1bmN0aW9uKHQpe3M9ITAsYT10fSxmOmZ1bmN0aW9uKCl7dHJ5e298fG51bGw9PXIucmV0dXJufHxyLnJldHVybigpfWZpbmFsbHl7aWYocyl0aHJvdyBhfX19fWZ1bmN0aW9uIHUodCl7cmV0dXJuIGZ1bmN0aW9uKHQpe2lmKEFycmF5LmlzQXJyYXkodCkpcmV0dXJuIGYodCl9KHQpfHxmdW5jdGlvbih0KXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmbnVsbCE9dFtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT10WyJAQGl0ZXJhdG9yIl0pcmV0dXJuIEFycmF5LmZyb20odCl9KHQpfHxoKHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIGModCxlKXtyZXR1cm4gZnVuY3Rpb24odCl7aWYoQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gdH0odCl8fGZ1bmN0aW9uKHQsZSl7dmFyIHI9bnVsbD09dD9udWxsOiJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZ0W1N5bWJvbC5pdGVyYXRvcl18fHRbIkBAaXRlcmF0b3IiXTtpZihudWxsIT1yKXt2YXIgbixpLGEsbyxzPVtdLGw9ITAsdT0hMTt0cnl7aWYoYT0ocj1yLmNhbGwodCkpLm5leHQsMD09PWUpe2lmKE9iamVjdChyKSE9PXIpcmV0dXJuO2w9ITF9ZWxzZSBmb3IoOyEobD0obj1hLmNhbGwocikpLmRvbmUpJiYocy5wdXNoKG4udmFsdWUpLHMubGVuZ3RoIT09ZSk7bD0hMCk7fWNhdGNoKHQpe3U9ITAsaT10fWZpbmFsbHl7dHJ5e2lmKCFsJiZudWxsIT1yLnJldHVybiYmKG89ci5yZXR1cm4oKSxPYmplY3QobykhPT1vKSlyZXR1cm59ZmluYWxseXtpZih1KXRocm93IGl9fXJldHVybiBzfX0odCxlKXx8aCh0LGUpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gaCh0LGUpe2lmKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gZih0LGUpO3ZhciByPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KS5zbGljZSg4LC0xKTtyZXR1cm4iT2JqZWN0Ij09PXImJnQuY29uc3RydWN0b3ImJihyPXQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1yfHwiU2V0Ij09PXI/QXJyYXkuZnJvbSh0KToiQXJndW1lbnRzIj09PXJ8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KHIpP2YodCxlKTp2b2lkIDB9fWZ1bmN0aW9uIGYodCxlKXsobnVsbD09ZXx8ZT50Lmxlbmd0aCkmJihlPXQubGVuZ3RoKTtmb3IodmFyIHI9MCxuPW5ldyBBcnJheShlKTtyPGU7cisrKW5bcl09dFtyXTtyZXR1cm4gbn1mdW5jdGlvbiBkKHQsZSl7dmFyIHI9T2JqZWN0LmtleXModCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG49T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh0KTtlJiYobj1uLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxlKS5lbnVtZXJhYmxlfSkpKSxyLnB1c2guYXBwbHkocixuKX1yZXR1cm4gcn1mdW5jdGlvbiBwKHQpe2Zvcih2YXIgZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe3ZhciByPW51bGwhPWFyZ3VtZW50c1tlXT9hcmd1bWVudHNbZV06e307ZSUyP2QoT2JqZWN0KHIpLCEwKS5mb3JFYWNoKChmdW5jdGlvbihlKXt3KHQsZSxyW2VdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyh0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHIpKTpkKE9iamVjdChyKSkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHIsZSkpfSkpfXJldHVybiB0fWZ1bmN0aW9uIHYodCxlKXtmb3IodmFyIHI9MDtyPGUubGVuZ3RoO3IrKyl7dmFyIG49ZVtyXTtuLmVudW1lcmFibGU9bi5lbnVtZXJhYmxlfHwhMSxuLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gbiYmKG4ud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LEEobi5rZXkpLG4pfX1mdW5jdGlvbiB5KCl7cmV0dXJuIHk9InVuZGVmaW5lZCIhPXR5cGVvZiBSZWZsZWN0JiZSZWZsZWN0LmdldD9SZWZsZWN0LmdldC5iaW5kKCk6ZnVuY3Rpb24odCxlLHIpe3ZhciBuPWZ1bmN0aW9uKHQsZSl7Zm9yKDshT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsZSkmJm51bGwhPT0odD1iKHQpKTspO3JldHVybiB0fSh0LGUpO2lmKG4pe3ZhciBpPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKTtyZXR1cm4gaS5nZXQ/aS5nZXQuY2FsbChhcmd1bWVudHMubGVuZ3RoPDM/dDpyKTppLnZhbHVlfX0seS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gbSh0LGUpe3JldHVybiBtPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuX19wcm90b19fPWUsdH0sbSh0LGUpfWZ1bmN0aW9uIGcodCl7aWYodm9pZCAwPT09dCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiB0fWZ1bmN0aW9uIGIodCl7cmV0dXJuIGI9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24odCl7cmV0dXJuIHQuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YodCl9LGIodCl9ZnVuY3Rpb24gXyh0LGUpe1ModCxlKSxlLmFkZCh0KX1mdW5jdGlvbiB3KHQsZSxyKXtyZXR1cm4oZT1BKGUpKWluIHQ/T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7dmFsdWU6cixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnRbZV09cix0fWZ1bmN0aW9uIEEodCl7dmFyIGU9ZnVuY3Rpb24odCxlKXtpZigib2JqZWN0IiE9PW4odCl8fG51bGw9PT10KXJldHVybiB0O3ZhciByPXRbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1yKXt2YXIgaT1yLmNhbGwodCwic3RyaW5nIik7aWYoIm9iamVjdCIhPT1uKGkpKXJldHVybiBpO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuIFN0cmluZyh0KX0odCk7cmV0dXJuInN5bWJvbCI9PT1uKGUpP2U6U3RyaW5nKGUpfWZ1bmN0aW9uIGsodCxlLHIpe1ModCxlKSxlLnNldCh0LHIpfWZ1bmN0aW9uIFModCxlKXtpZihlLmhhcyh0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfWZ1bmN0aW9uIHgodCxlLHIpe3JldHVybiBmdW5jdGlvbih0LGUpe2lmKHQhPT1lKXRocm93IG5ldyBUeXBlRXJyb3IoIlByaXZhdGUgc3RhdGljIGFjY2VzcyBvZiB3cm9uZyBwcm92ZW5hbmNlIil9KHQsZSkscn1mdW5jdGlvbiBFKHQsZSxyKXtyZXR1cm4gZnVuY3Rpb24odCxlLHIpe2lmKGUuc2V0KWUuc2V0LmNhbGwodCxyKTtlbHNle2lmKCFlLndyaXRhYmxlKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byBzZXQgcmVhZCBvbmx5IHByaXZhdGUgZmllbGQiKTtlLnZhbHVlPXJ9fSh0LFQodCxlLCJzZXQiKSxyKSxyfWZ1bmN0aW9uIFAodCxlKXtyZXR1cm4gZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5nZXQ/ZS5nZXQuY2FsbCh0KTplLnZhbHVlfSh0LFQodCxlLCJnZXQiKSl9ZnVuY3Rpb24gVCh0LGUscil7aWYoIWUuaGFzKHQpKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byAiK3IrIiBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiBlLmdldCh0KX1mdW5jdGlvbiBDKHQsZSxyKXtpZighZS5oYXModCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvIGdldCBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiByfXZhciBPPTE2LEY9MTAwLE09bmV3IFdlYWtNYXAsUj1uZXcgV2Vha01hcCxJPW5ldyBXZWFrTWFwLGo9bmV3IFdlYWtNYXAsTD1uZXcgV2Vha01hcCxEPW5ldyBXZWFrTWFwLE49bmV3IFdlYWtNYXAsVT1uZXcgV2Vha01hcCxXPW5ldyBXZWFrTWFwLEc9bmV3IFdlYWtNYXAsQj1uZXcgV2Vha01hcCxxPW5ldyBXZWFrTWFwLEg9bmV3IFdlYWtNYXAsej1uZXcgV2Vha01hcCxWPW5ldyBXZWFrU2V0LFg9bmV3IFdlYWtTZXQsWT1uZXcgV2Vha1NldCxLPW5ldyBXZWFrU2V0LEo9bmV3IFdlYWtTZXQsUT1uZXcgV2Vha1NldCwkPW5ldyBXZWFrU2V0LFo9bmV3IFdlYWtTZXQsdHQ9bmV3IFdlYWtTZXQsZXQ9bmV3IFdlYWtTZXQscnQ9bmV3IFdlYWtTZXQsbnQ9bmV3IFdlYWtTZXQsaXQ9bmV3IFdlYWtTZXQsYXQ9bmV3IFdlYWtTZXQsb3Q9bmV3IFdlYWtTZXQsc3Q9bmV3IFdlYWtTZXQsbHQ9bmV3IFdlYWtTZXQsdXQ9bmV3IFdlYWtTZXQsY3Q9bmV3IFdlYWtTZXQsaHQ9bmV3IFdlYWtTZXQsZnQ9bmV3IFdlYWtTZXQsZHQ9bmV3IFdlYWtTZXQscHQ9ZnVuY3Rpb24odCl7IWZ1bmN0aW9uKHQsZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUmJm51bGwhPT1lKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7dC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlJiZlLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOnQsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGUmJm0odCxlKX0oZCx0KTt2YXIgZSxyLG8scyxoLGY9KHM9ZCxoPWZ1bmN0aW9uKCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3QpcmV0dXJuITE7aWYoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSwoZnVuY3Rpb24oKXt9KSkpLCEwfWNhdGNoKHQpe3JldHVybiExfX0oKSxmdW5jdGlvbigpe3ZhciB0LGU9YihzKTtpZihoKXt2YXIgcj1iKHRoaXMpLmNvbnN0cnVjdG9yO3Q9UmVmbGVjdC5jb25zdHJ1Y3QoZSxhcmd1bWVudHMscil9ZWxzZSB0PWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBmdW5jdGlvbih0LGUpe2lmKGUmJigib2JqZWN0Ij09PW4oZSl8fCJmdW5jdGlvbiI9PXR5cGVvZiBlKSlyZXR1cm4gZTtpZih2b2lkIDAhPT1lKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGcodCl9KHRoaXMsdCl9KTtmdW5jdGlvbiBkKHQpe3ZhciBlO3JldHVybiBmdW5jdGlvbih0LGUpe2lmKCEodCBpbnN0YW5jZW9mIGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGQpLF8oZyhlPWYuY2FsbCh0aGlzLHAocCh7fSx0KSx7fSx7bmFtZToiaW5rRWRpdG9yIn0pKSksZHQpLF8oZyhlKSxmdCksXyhnKGUpLGh0KSxfKGcoZSksY3QpLF8oZyhlKSx1dCksXyhnKGUpLGx0KSxfKGcoZSksc3QpLF8oZyhlKSxvdCksXyhnKGUpLGF0KSxfKGcoZSksaXQpLF8oZyhlKSxudCksXyhnKGUpLHJ0KSxfKGcoZSksZXQpLF8oZyhlKSx0dCksXyhnKGUpLFopLF8oZyhlKSwkKSxfKGcoZSksUSksXyhnKGUpLEopLF8oZyhlKSxLKSxfKGcoZSksWSksXyhnKGUpLFgpLF8oZyhlKSxWKSxrKGcoZSksTSx7d3JpdGFibGU6ITAsdmFsdWU6MH0pLGsoZyhlKSxSLHt3cml0YWJsZTohMCx2YWx1ZTowfSksayhnKGUpLEkse3dyaXRhYmxlOiEwLHZhbHVlOjB9KSxrKGcoZSksaix7d3JpdGFibGU6ITAsdmFsdWU6ZS5jYW52YXNQb2ludGVybW92ZS5iaW5kKGcoZSkpfSksayhnKGUpLEwse3dyaXRhYmxlOiEwLHZhbHVlOmUuY2FudmFzUG9pbnRlcmxlYXZlLmJpbmQoZyhlKSl9KSxrKGcoZSksRCx7d3JpdGFibGU6ITAsdmFsdWU6ZS5jYW52YXNQb2ludGVydXAuYmluZChnKGUpKX0pLGsoZyhlKSxOLHt3cml0YWJsZTohMCx2YWx1ZTplLmNhbnZhc1BvaW50ZXJkb3duLmJpbmQoZyhlKSl9KSxrKGcoZSksVSx7d3JpdGFibGU6ITAsdmFsdWU6ITF9KSxrKGcoZSksVyx7d3JpdGFibGU6ITAsdmFsdWU6ITF9KSxrKGcoZSksRyx7d3JpdGFibGU6ITAsdmFsdWU6bnVsbH0pLGsoZyhlKSxCLHt3cml0YWJsZTohMCx2YWx1ZTpudWxsfSksayhnKGUpLHEse3dyaXRhYmxlOiEwLHZhbHVlOjB9KSxrKGcoZSksSCx7d3JpdGFibGU6ITAsdmFsdWU6MH0pLGsoZyhlKSx6LHt3cml0YWJsZTohMCx2YWx1ZTpudWxsfSksZS5jb2xvcj10LmNvbG9yfHxudWxsLGUudGhpY2tuZXNzPXQudGhpY2tuZXNzfHxudWxsLGUub3BhY2l0eT10Lm9wYWNpdHl8fG51bGwsZS5wYXRocz1bXSxlLmJlemllclBhdGgyRD1bXSxlLmN1cnJlbnRQYXRoPVtdLGUuc2NhbGVGYWN0b3I9MSxlLnRyYW5zbGF0aW9uWD1lLnRyYW5zbGF0aW9uWT0wLGUueD0wLGUueT0wLGV9cmV0dXJuIGU9ZCxvPVt7a2V5OiJpbml0aWFsaXplIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLl9sMTBuUHJvbWlzZT1uZXcgTWFwKFsiZWRpdG9yX2lua19jYW52YXNfYXJpYV9sYWJlbCIsImVkaXRvcl9pbmsyX2FyaWFfbGFiZWwiXS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybltlLHQuZ2V0KGUpXX0pKSl9fSx7a2V5OiJ1cGRhdGVEZWZhdWx0UGFyYW1zIix2YWx1ZTpmdW5jdGlvbih0LGUpe3N3aXRjaCh0KXtjYXNlIGkuQW5ub3RhdGlvbkVkaXRvclBhcmFtc1R5cGUuSU5LX1RISUNLTkVTUzpkLl9kZWZhdWx0VGhpY2tuZXNzPWU7YnJlYWs7Y2FzZSBpLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLklOS19DT0xPUjpkLl9kZWZhdWx0Q29sb3I9ZTticmVhaztjYXNlIGkuQW5ub3RhdGlvbkVkaXRvclBhcmFtc1R5cGUuSU5LX09QQUNJVFk6ZC5fZGVmYXVsdE9wYWNpdHk9ZS8xMDB9fX0se2tleToiZGVmYXVsdFByb3BlcnRpZXNUb1VwZGF0ZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuW1tpLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLklOS19USElDS05FU1MsZC5fZGVmYXVsdFRoaWNrbmVzc10sW2kuQW5ub3RhdGlvbkVkaXRvclBhcmFtc1R5cGUuSU5LX0NPTE9SLGQuX2RlZmF1bHRDb2xvcnx8YS5Bbm5vdGF0aW9uRWRpdG9yLl9kZWZhdWx0TGluZUNvbG9yXSxbaS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5JTktfT1BBQ0lUWSxNYXRoLnJvdW5kKDEwMCpkLl9kZWZhdWx0T3BhY2l0eSldXX19LHtrZXk6ImRlc2VyaWFsaXplIix2YWx1ZTpmdW5jdGlvbih0LGUscil7dmFyIG49eShiKGQpLCJkZXNlcmlhbGl6ZSIsdGhpcykuY2FsbCh0aGlzLHQsZSxyKTtuLnRoaWNrbmVzcz10LnRoaWNrbmVzcyxuLmNvbG9yPWkuVXRpbC5tYWtlSGV4Q29sb3IuYXBwbHkoaS5VdGlsLHUodC5jb2xvcikpLG4ub3BhY2l0eT10Lm9wYWNpdHk7dmFyIGE9YyhuLnBhZ2VEaW1lbnNpb25zLDIpLG89YVswXSxzPWFbMV0saD1uLndpZHRoKm8sZj1uLmhlaWdodCpzLHA9bi5wYXJlbnRTY2FsZSx2PXQudGhpY2tuZXNzLzI7RShuLE0saC9mKSxFKG4sVSwhMCksRShuLHEsTWF0aC5yb3VuZChoKSksRShuLEgsTWF0aC5yb3VuZChmKSk7dmFyIG0sZz1sKHQucGF0aHMpO3RyeXtmb3IoZy5zKCk7IShtPWcubigpKS5kb25lOyl7dmFyIF89bS52YWx1ZS5iZXppZXIsdz1bXTtuLnBhdGhzLnB1c2godyk7Zm9yKHZhciBBPXAqKF9bMF0tdiksaz1wKihmLV9bMV0tdiksUz0yLFA9Xy5sZW5ndGg7UzxQO1MrPTYpe3ZhciBUPXAqKF9bU10tdiksRj1wKihmLV9bUysxXS12KSxqPXAqKF9bUysyXS12KSxMPXAqKGYtX1tTKzNdLXYpLEQ9cCooX1tTKzRdLXYpLE49cCooZi1fW1MrNV0tdik7dy5wdXNoKFtbQSxrXSxbVCxGXSxbaixMXSxbRCxOXV0pLEE9RCxrPU59dmFyIFc9eCh0aGlzLGQsT3QpLmNhbGwodGhpcyx3KTtuLmJlemllclBhdGgyRC5wdXNoKFcpfX1jYXRjaCh0KXtnLmUodCl9ZmluYWxseXtnLmYoKX12YXIgRz1DKG4sY3QsSXQpLmNhbGwobik7cmV0dXJuIEUobixJLE1hdGgubWF4KE8sR1syXS1HWzBdKSksRShuLFIsTWF0aC5tYXgoTyxHWzNdLUdbMV0pKSxDKG4sYXQsVHQpLmNhbGwobixoLGYpLG59fV0sKHI9W3trZXk6InVwZGF0ZVBhcmFtcyIsdmFsdWU6ZnVuY3Rpb24odCxlKXtzd2l0Y2godCl7Y2FzZSBpLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLklOS19USElDS05FU1M6Qyh0aGlzLFYsdnQpLmNhbGwodGhpcyxlKTticmVhaztjYXNlIGkuQW5ub3RhdGlvbkVkaXRvclBhcmFtc1R5cGUuSU5LX0NPTE9SOkModGhpcyxYLHl0KS5jYWxsKHRoaXMsZSk7YnJlYWs7Y2FzZSBpLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLklOS19PUEFDSVRZOkModGhpcyxZLG10KS5jYWxsKHRoaXMsZSl9fX0se2tleToicHJvcGVydGllc1RvVXBkYXRlIixnZXQ6ZnVuY3Rpb24oKXt2YXIgdDtyZXR1cm5bW2kuQW5ub3RhdGlvbkVkaXRvclBhcmFtc1R5cGUuSU5LX1RISUNLTkVTUyx0aGlzLnRoaWNrbmVzc3x8ZC5fZGVmYXVsdFRoaWNrbmVzc10sW2kuQW5ub3RhdGlvbkVkaXRvclBhcmFtc1R5cGUuSU5LX0NPTE9SLHRoaXMuY29sb3J8fGQuX2RlZmF1bHRDb2xvcnx8YS5Bbm5vdGF0aW9uRWRpdG9yLl9kZWZhdWx0TGluZUNvbG9yXSxbaS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5JTktfT1BBQ0lUWSxNYXRoLnJvdW5kKDEwMCoobnVsbCE9PSh0PXRoaXMub3BhY2l0eSkmJnZvaWQgMCE9PXQ/dDpkLl9kZWZhdWx0T3BhY2l0eSkpXV19fSx7a2V5OiJyZWJ1aWxkIix2YWx1ZTpmdW5jdGlvbigpe3koYihkLnByb3RvdHlwZSksInJlYnVpbGQiLHRoaXMpLmNhbGwodGhpcyksbnVsbCE9PXRoaXMuZGl2JiYodGhpcy5jYW52YXN8fChDKHRoaXMscnQseHQpLmNhbGwodGhpcyksQyh0aGlzLG50LEV0KS5jYWxsKHRoaXMpKSx0aGlzLmlzQXR0YWNoZWRUb0RPTXx8KHRoaXMucGFyZW50LmFkZCh0aGlzKSxDKHRoaXMsaXQsUHQpLmNhbGwodGhpcykpLEModGhpcyxmdCxMdCkuY2FsbCh0aGlzKSl9fSx7a2V5OiJyZW1vdmUiLHZhbHVlOmZ1bmN0aW9uKCl7bnVsbCE9PXRoaXMuY2FudmFzJiYodGhpcy5pc0VtcHR5KCl8fHRoaXMuY29tbWl0KCksdGhpcy5jYW52YXMud2lkdGg9dGhpcy5jYW52YXMuaGVpZ2h0PTAsdGhpcy5jYW52YXMucmVtb3ZlKCksdGhpcy5jYW52YXM9bnVsbCxQKHRoaXMsQikuZGlzY29ubmVjdCgpLEUodGhpcyxCLG51bGwpLHkoYihkLnByb3RvdHlwZSksInJlbW92ZSIsdGhpcykuY2FsbCh0aGlzKSl9fSx7a2V5OiJzZXRQYXJlbnQiLHZhbHVlOmZ1bmN0aW9uKHQpeyF0aGlzLnBhcmVudCYmdD90aGlzLl91aU1hbmFnZXIucmVtb3ZlU2hvdWxkUmVzY2FsZSh0aGlzKTp0aGlzLnBhcmVudCYmbnVsbD09PXQmJnRoaXMuX3VpTWFuYWdlci5hZGRTaG91bGRSZXNjYWxlKHRoaXMpLHkoYihkLnByb3RvdHlwZSksInNldFBhcmVudCIsdGhpcykuY2FsbCh0aGlzLHQpfX0se2tleToib25TY2FsZUNoYW5naW5nIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWModGhpcy5wYXJlbnREaW1lbnNpb25zLDIpLGU9dFswXSxyPXRbMV0sbj10aGlzLndpZHRoKmUsaT10aGlzLmhlaWdodCpyO3RoaXMuc2V0RGltZW5zaW9ucyhuLGkpfX0se2tleToiZW5hYmxlRWRpdE1vZGUiLHZhbHVlOmZ1bmN0aW9uKCl7UCh0aGlzLFUpfHxudWxsPT09dGhpcy5jYW52YXN8fCh5KGIoZC5wcm90b3R5cGUpLCJlbmFibGVFZGl0TW9kZSIsdGhpcykuY2FsbCh0aGlzKSx0aGlzLmRpdi5kcmFnZ2FibGU9ITEsdGhpcy5jYW52YXMuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcmRvd24iLFAodGhpcyxOKSksdGhpcy5jYW52YXMuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcnVwIixQKHRoaXMsRCkpKX19LHtrZXk6ImRpc2FibGVFZGl0TW9kZSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmlzSW5FZGl0TW9kZSgpJiZudWxsIT09dGhpcy5jYW52YXMmJih5KGIoZC5wcm90b3R5cGUpLCJkaXNhYmxlRWRpdE1vZGUiLHRoaXMpLmNhbGwodGhpcyksdGhpcy5kaXYuZHJhZ2dhYmxlPSF0aGlzLmlzRW1wdHkoKSx0aGlzLmRpdi5jbGFzc0xpc3QucmVtb3ZlKCJlZGl0aW5nIiksdGhpcy5jYW52YXMucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9pbnRlcmRvd24iLFAodGhpcyxOKSksdGhpcy5jYW52YXMucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9pbnRlcnVwIixQKHRoaXMsRCkpKX19LHtrZXk6Im9uY2VBZGRlZCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmRpdi5kcmFnZ2FibGU9IXRoaXMuaXNFbXB0eSgpfX0se2tleToiaXNFbXB0eSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gMD09PXRoaXMucGF0aHMubGVuZ3RofHwxPT09dGhpcy5wYXRocy5sZW5ndGgmJjA9PT10aGlzLnBhdGhzWzBdLmxlbmd0aH19LHtrZXk6ImNvbW1pdCIsdmFsdWU6ZnVuY3Rpb24oKXtQKHRoaXMsVSl8fCh5KGIoZC5wcm90b3R5cGUpLCJjb21taXQiLHRoaXMpLmNhbGwodGhpcyksdGhpcy5pc0VkaXRpbmc9ITEsdGhpcy5kaXNhYmxlRWRpdE1vZGUoKSx0aGlzLnNldEluRm9yZWdyb3VuZCgpLEUodGhpcyxVLCEwKSx0aGlzLmRpdi5jbGFzc0xpc3QuYWRkKCJkaXNhYmxlZCIpLEModGhpcyxmdCxMdCkuY2FsbCh0aGlzLCEwKSx0aGlzLnBhcmVudC5hZGRJbmtFZGl0b3JJZk5lZWRlZCghMCksdGhpcy5wYXJlbnQubW92ZUVkaXRvckluRE9NKHRoaXMpLHRoaXMuZGl2LmZvY3VzKHtwcmV2ZW50U2Nyb2xsOiEwfSkpfX0se2tleToiZm9jdXNpbiIsdmFsdWU6ZnVuY3Rpb24odCl7eShiKGQucHJvdG90eXBlKSwiZm9jdXNpbiIsdGhpcykuY2FsbCh0aGlzLHQpLHRoaXMuZW5hYmxlRWRpdE1vZGUoKX19LHtrZXk6ImNhbnZhc1BvaW50ZXJkb3duIix2YWx1ZTpmdW5jdGlvbih0KXswPT09dC5idXR0b24mJnRoaXMuaXNJbkVkaXRNb2RlKCkmJiFQKHRoaXMsVSkmJih0aGlzLnNldEluRm9yZWdyb3VuZCgpLCJtb3VzZSIhPT10LnR5cGUmJnRoaXMuZGl2LmZvY3VzKCksdC5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLmNhbnZhcy5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVybGVhdmUiLFAodGhpcyxMKSksdGhpcy5jYW52YXMuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcm1vdmUiLFAodGhpcyxqKSksQyh0aGlzLFEsX3QpLmNhbGwodGhpcyx0Lm9mZnNldFgsdC5vZmZzZXRZKSl9fSx7a2V5OiJjYW52YXNQb2ludGVybW92ZSIsdmFsdWU6ZnVuY3Rpb24odCl7dC5zdG9wUHJvcGFnYXRpb24oKSxDKHRoaXMsJCx3dCkuY2FsbCh0aGlzLHQub2Zmc2V0WCx0Lm9mZnNldFkpfX0se2tleToiY2FudmFzUG9pbnRlcnVwIix2YWx1ZTpmdW5jdGlvbih0KXswPT09dC5idXR0b24mJnRoaXMuaXNJbkVkaXRNb2RlKCkmJjAhPT10aGlzLmN1cnJlbnRQYXRoLmxlbmd0aCYmKHQuc3RvcFByb3BhZ2F0aW9uKCksQyh0aGlzLGV0LFN0KS5jYWxsKHRoaXMsdCksdGhpcy5zZXRJbkJhY2tncm91bmQoKSl9fSx7a2V5OiJjYW52YXNQb2ludGVybGVhdmUiLHZhbHVlOmZ1bmN0aW9uKHQpe0ModGhpcyxldCxTdCkuY2FsbCh0aGlzLHQpLHRoaXMuc2V0SW5CYWNrZ3JvdW5kKCl9fSx7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQsZSxyPXRoaXM7aWYodGhpcy5kaXYpcmV0dXJuIHRoaXMuZGl2O3RoaXMud2lkdGgmJih0PXRoaXMueCxlPXRoaXMueSkseShiKGQucHJvdG90eXBlKSwicmVuZGVyIix0aGlzKS5jYWxsKHRoaXMpLGQuX2wxMG5Qcm9taXNlLmdldCgiZWRpdG9yX2luazJfYXJpYV9sYWJlbCIpLnRoZW4oKGZ1bmN0aW9uKHQpe3ZhciBlO3JldHVybiBudWxsPT09KGU9ci5kaXYpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIsdCl9KSk7dmFyIG49YyhDKHRoaXMsSyxndCkuY2FsbCh0aGlzKSw0KSxpPW5bMF0sYT1uWzFdLG89blsyXSxzPW5bM107aWYodGhpcy5zZXRBdChpLGEsMCwwKSx0aGlzLnNldERpbXMobyxzKSxDKHRoaXMscnQseHQpLmNhbGwodGhpcyksdGhpcy53aWR0aCl7dmFyIGw9Yyh0aGlzLnBhcmVudERpbWVuc2lvbnMsMiksdT1sWzBdLGg9bFsxXTt0aGlzLnNldEF0KHQqdSxlKmgsdGhpcy53aWR0aCp1LHRoaXMuaGVpZ2h0KmgpLEUodGhpcyxXLCEwKSxDKHRoaXMsaXQsUHQpLmNhbGwodGhpcyksdGhpcy5zZXREaW1zKHRoaXMud2lkdGgqdSx0aGlzLmhlaWdodCpoKSxDKHRoaXMsdHQsa3QpLmNhbGwodGhpcyksQyh0aGlzLGR0LER0KS5jYWxsKHRoaXMpLHRoaXMuZGl2LmNsYXNzTGlzdC5hZGQoImRpc2FibGVkIil9ZWxzZSB0aGlzLmRpdi5jbGFzc0xpc3QuYWRkKCJlZGl0aW5nIiksdGhpcy5lbmFibGVFZGl0TW9kZSgpO3JldHVybiBDKHRoaXMsbnQsRXQpLmNhbGwodGhpcyksdGhpcy5kaXZ9fSx7a2V5OiJzZXREaW1lbnNpb25zIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciByPU1hdGgucm91bmQodCksbj1NYXRoLnJvdW5kKGUpO2lmKFAodGhpcyxxKSE9PXJ8fFAodGhpcyxIKSE9PW4pe0UodGhpcyxxLHIpLEUodGhpcyxILG4pLHRoaXMuY2FudmFzLnN0eWxlLnZpc2liaWxpdHk9ImhpZGRlbiIsUCh0aGlzLE0pJiZNYXRoLmFicyhQKHRoaXMsTSktdC9lKT4uMDEmJihlPU1hdGguY2VpbCh0L1AodGhpcyxNKSksdGhpcy5zZXREaW1zKHQsZSkpO3ZhciBpPWModGhpcy5wYXJlbnREaW1lbnNpb25zLDIpLGE9aVswXSxvPWlbMV07dGhpcy53aWR0aD10L2EsdGhpcy5oZWlnaHQ9ZS9vLFAodGhpcyxVKSYmQyh0aGlzLGF0LFR0KS5jYWxsKHRoaXMsdCxlKSxDKHRoaXMsaXQsUHQpLmNhbGwodGhpcyksQyh0aGlzLHR0LGt0KS5jYWxsKHRoaXMpLHRoaXMuY2FudmFzLnN0eWxlLnZpc2liaWxpdHk9InZpc2libGUifX19LHtrZXk6InNlcmlhbGl6ZSIsdmFsdWU6ZnVuY3Rpb24oKXtpZih0aGlzLmlzRW1wdHkoKSlyZXR1cm4gbnVsbDt2YXIgdD10aGlzLmdldFJlY3QoMCwwKSxlPXRoaXMucm90YXRpb24lMTgwPT0wP3RbM10tdFsxXTp0WzJdLXRbMF0scj1hLkFubm90YXRpb25FZGl0b3IuX2NvbG9yTWFuYWdlci5jb252ZXJ0KHRoaXMuY3R4LnN0cm9rZVN0eWxlKTtyZXR1cm57YW5ub3RhdGlvblR5cGU6aS5Bbm5vdGF0aW9uRWRpdG9yVHlwZS5JTkssY29sb3I6cix0aGlja25lc3M6dGhpcy50aGlja25lc3Msb3BhY2l0eTp0aGlzLm9wYWNpdHkscGF0aHM6Qyh0aGlzLHN0LEZ0KS5jYWxsKHRoaXMsdGhpcy5zY2FsZUZhY3Rvci90aGlzLnBhcmVudFNjYWxlLHRoaXMudHJhbnNsYXRpb25YLHRoaXMudHJhbnNsYXRpb25ZLGUpLHBhZ2VJbmRleDp0aGlzLnBhZ2VJbmRleCxyZWN0OnQscm90YXRpb246dGhpcy5yb3RhdGlvbn19fV0pJiZ2KGUucHJvdG90eXBlLHIpLG8mJnYoZSxvKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxkfShhLkFubm90YXRpb25FZGl0b3IpO2Z1bmN0aW9uIHZ0KHQpe3ZhciBlPXRoaXMscj10aGlzLnRoaWNrbmVzczt0aGlzLmFkZENvbW1hbmRzKHtjbWQ6ZnVuY3Rpb24oKXtlLnRoaWNrbmVzcz10LEMoZSxmdCxMdCkuY2FsbChlKX0sdW5kbzpmdW5jdGlvbigpe2UudGhpY2tuZXNzPXIsQyhlLGZ0LEx0KS5jYWxsKGUpfSxtdXN0RXhlYzohMCx0eXBlOmkuQW5ub3RhdGlvbkVkaXRvclBhcmFtc1R5cGUuSU5LX1RISUNLTkVTUyxvdmVyd3JpdGVJZlNhbWVUeXBlOiEwLGtlZXBVbmRvOiEwfSl9ZnVuY3Rpb24geXQodCl7dmFyIGU9dGhpcyxyPXRoaXMuY29sb3I7dGhpcy5hZGRDb21tYW5kcyh7Y21kOmZ1bmN0aW9uKCl7ZS5jb2xvcj10LEMoZSx0dCxrdCkuY2FsbChlKX0sdW5kbzpmdW5jdGlvbigpe2UuY29sb3I9cixDKGUsdHQsa3QpLmNhbGwoZSl9LG11c3RFeGVjOiEwLHR5cGU6aS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5JTktfQ09MT1Isb3ZlcndyaXRlSWZTYW1lVHlwZTohMCxrZWVwVW5kbzohMH0pfWZ1bmN0aW9uIG10KHQpe3ZhciBlPXRoaXM7dC89MTAwO3ZhciByPXRoaXMub3BhY2l0eTt0aGlzLmFkZENvbW1hbmRzKHtjbWQ6ZnVuY3Rpb24oKXtlLm9wYWNpdHk9dCxDKGUsdHQsa3QpLmNhbGwoZSl9LHVuZG86ZnVuY3Rpb24oKXtlLm9wYWNpdHk9cixDKGUsdHQsa3QpLmNhbGwoZSl9LG11c3RFeGVjOiEwLHR5cGU6aS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5JTktfT1BBQ0lUWSxvdmVyd3JpdGVJZlNhbWVUeXBlOiEwLGtlZXBVbmRvOiEwfSl9ZnVuY3Rpb24gZ3QoKXt2YXIgdD10aGlzLnBhcmVudFJvdGF0aW9uLGU9Yyh0aGlzLnBhcmVudERpbWVuc2lvbnMsMikscj1lWzBdLG49ZVsxXTtzd2l0Y2godCl7Y2FzZSA5MDpyZXR1cm5bMCxuLG4scl07Y2FzZSAxODA6cmV0dXJuW3IsbixyLG5dO2Nhc2UgMjcwOnJldHVybltyLDAsbixyXTtkZWZhdWx0OnJldHVyblswLDAscixuXX19ZnVuY3Rpb24gYnQoKXt2YXIgdD10aGlzLmN0eCxlPXRoaXMuY29sb3Iscj10aGlzLm9wYWNpdHksbj10aGlzLnRoaWNrbmVzcyxpPXRoaXMucGFyZW50U2NhbGUsYT10aGlzLnNjYWxlRmFjdG9yO3QubGluZVdpZHRoPW4qaS9hLHQubGluZUNhcD0icm91bmQiLHQubGluZUpvaW49InJvdW5kIix0Lm1pdGVyTGltaXQ9MTAsdC5zdHJva2VTdHlsZT0iIi5jb25jYXQoZSkuY29uY2F0KCgwLHMub3BhY2l0eVRvSGV4KShyKSl9ZnVuY3Rpb24gX3QodCxlKXt2YXIgcixuPXRoaXM7dGhpcy5pc0VkaXRpbmc9ITAsUCh0aGlzLFcpfHwoRSh0aGlzLFcsITApLEModGhpcyxpdCxQdCkuY2FsbCh0aGlzKSx0aGlzLnRoaWNrbmVzc3x8KHRoaXMudGhpY2tuZXNzPXB0Ll9kZWZhdWx0VGhpY2tuZXNzKSx0aGlzLmNvbG9yfHwodGhpcy5jb2xvcj1wdC5fZGVmYXVsdENvbG9yfHxhLkFubm90YXRpb25FZGl0b3IuX2RlZmF1bHRMaW5lQ29sb3IpLG51bGwhPT0ocj10aGlzLm9wYWNpdHkpJiZ2b2lkIDAhPT1yfHwodGhpcy5vcGFjaXR5PXB0Ll9kZWZhdWx0T3BhY2l0eSkpLHRoaXMuY3VycmVudFBhdGgucHVzaChbdCxlXSksRSh0aGlzLEcsbnVsbCksQyh0aGlzLEosYnQpLmNhbGwodGhpcyksdGhpcy5jdHguYmVnaW5QYXRoKCksdGhpcy5jdHgubW92ZVRvKHQsZSksRSh0aGlzLHosKGZ1bmN0aW9uKCl7dmFyIHQ7UChuLHopJiYoUChuLEcpJiYobi5pc0VtcHR5KCk/KG4uY3R4LnNldFRyYW5zZm9ybSgxLDAsMCwxLDAsMCksbi5jdHguY2xlYXJSZWN0KDAsMCxuLmNhbnZhcy53aWR0aCxuLmNhbnZhcy5oZWlnaHQpKTpDKG4sdHQsa3QpLmNhbGwobiksKHQ9bi5jdHgpLmxpbmVUby5hcHBseSh0LHUoUChuLEcpKSksRShuLEcsbnVsbCksbi5jdHguc3Ryb2tlKCkpLHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoUChuLHopKSl9KSksd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShQKHRoaXMseikpfWZ1bmN0aW9uIHd0KHQsZSl7dmFyIHI9Yyh0aGlzLmN1cnJlbnRQYXRoLmF0KC0xKSwyKSxuPXJbMF0saT1yWzFdO3Q9PT1uJiZlPT09aXx8KHRoaXMuY3VycmVudFBhdGgucHVzaChbdCxlXSksRSh0aGlzLEcsW3QsZV0pKX1mdW5jdGlvbiBBdCh0LGUpe3ZhciByPXRoaXM7dGhpcy5jdHguY2xvc2VQYXRoKCksRSh0aGlzLHosbnVsbCksdD1NYXRoLm1pbihNYXRoLm1heCh0LDApLHRoaXMuY2FudmFzLndpZHRoKSxlPU1hdGgubWluKE1hdGgubWF4KGUsMCksdGhpcy5jYW52YXMuaGVpZ2h0KTt2YXIgbixpPWModGhpcy5jdXJyZW50UGF0aC5hdCgtMSksMiksYT1pWzBdLHM9aVsxXTtpZih0PT09YSYmZT09PXN8fHRoaXMuY3VycmVudFBhdGgucHVzaChbdCxlXSksMSE9PXRoaXMuY3VycmVudFBhdGgubGVuZ3RoKW49KDAsby5maXRDdXJ2ZSkodGhpcy5jdXJyZW50UGF0aCwzMCxudWxsKTtlbHNle3ZhciBsPVt0LGVdO249W1tsLGwuc2xpY2UoKSxsLnNsaWNlKCksbF1dfXZhciB1PXgocHQscHQsT3QpLmNhbGwocHQsbik7dGhpcy5jdXJyZW50UGF0aC5sZW5ndGg9MCx0aGlzLmFkZENvbW1hbmRzKHtjbWQ6ZnVuY3Rpb24oKXtyLnBhdGhzLnB1c2gobiksci5iZXppZXJQYXRoMkQucHVzaCh1KSxyLnJlYnVpbGQoKX0sdW5kbzpmdW5jdGlvbigpe3IucGF0aHMucG9wKCksci5iZXppZXJQYXRoMkQucG9wKCksMD09PXIucGF0aHMubGVuZ3RoP3IucmVtb3ZlKCk6KHIuY2FudmFzfHwoQyhyLHJ0LHh0KS5jYWxsKHIpLEMocixudCxFdCkuY2FsbChyKSksQyhyLGZ0LEx0KS5jYWxsKHIpKX0sbXVzdEV4ZWM6ITB9KX1mdW5jdGlvbiBrdCgpe2lmKHRoaXMuaXNFbXB0eSgpKUModGhpcyxvdCxDdCkuY2FsbCh0aGlzKTtlbHNle0ModGhpcyxKLGJ0KS5jYWxsKHRoaXMpO3ZhciB0PXRoaXMuY2FudmFzLGU9dGhpcy5jdHg7ZS5zZXRUcmFuc2Zvcm0oMSwwLDAsMSwwLDApLGUuY2xlYXJSZWN0KDAsMCx0LndpZHRoLHQuaGVpZ2h0KSxDKHRoaXMsb3QsQ3QpLmNhbGwodGhpcyk7dmFyIHIsbj1sKHRoaXMuYmV6aWVyUGF0aDJEKTt0cnl7Zm9yKG4ucygpOyEocj1uLm4oKSkuZG9uZTspe3ZhciBpPXIudmFsdWU7ZS5zdHJva2UoaSl9fWNhdGNoKHQpe24uZSh0KX1maW5hbGx5e24uZigpfX19ZnVuY3Rpb24gU3QodCl7Qyh0aGlzLFosQXQpLmNhbGwodGhpcyx0Lm9mZnNldFgsdC5vZmZzZXRZKSx0aGlzLmNhbnZhcy5yZW1vdmVFdmVudExpc3RlbmVyKCJwb2ludGVybGVhdmUiLFAodGhpcyxMKSksdGhpcy5jYW52YXMucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9pbnRlcm1vdmUiLFAodGhpcyxqKSksdGhpcy5hZGRUb0Fubm90YXRpb25TdG9yYWdlKCl9ZnVuY3Rpb24geHQoKXt2YXIgdD10aGlzO3RoaXMuY2FudmFzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpLHRoaXMuY2FudmFzLndpZHRoPXRoaXMuY2FudmFzLmhlaWdodD0wLHRoaXMuY2FudmFzLmNsYXNzTmFtZT0iaW5rRWRpdG9yQ2FudmFzIixwdC5fbDEwblByb21pc2UuZ2V0KCJlZGl0b3JfaW5rX2NhbnZhc19hcmlhX2xhYmVsIikudGhlbigoZnVuY3Rpb24oZSl7dmFyIHI7cmV0dXJuIG51bGw9PT0ocj10LmNhbnZhcyl8fHZvaWQgMD09PXI/dm9pZCAwOnIuc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIixlKX0pKSx0aGlzLmRpdi5hcHBlbmQodGhpcy5jYW52YXMpLHRoaXMuY3R4PXRoaXMuY2FudmFzLmdldENvbnRleHQoIjJkIil9ZnVuY3Rpb24gRXQoKXt2YXIgdD10aGlzLGU9bnVsbDtFKHRoaXMsQixuZXcgUmVzaXplT2JzZXJ2ZXIoKGZ1bmN0aW9uKHIpe3ZhciBuPXJbMF0uY29udGVudFJlY3Q7bi53aWR0aCYmbi5oZWlnaHQmJihudWxsIT09ZSYmY2xlYXJUaW1lb3V0KGUpLGU9c2V0VGltZW91dCgoZnVuY3Rpb24oKXt0LmZpeERpbXMoKSxlPW51bGx9KSxGKSx0LnNldERpbWVuc2lvbnMobi53aWR0aCxuLmhlaWdodCkpfSkpKSxQKHRoaXMsQikub2JzZXJ2ZSh0aGlzLmRpdil9ZnVuY3Rpb24gUHQoKXtpZihQKHRoaXMsVykpe3ZhciB0PWModGhpcy5wYXJlbnREaW1lbnNpb25zLDIpLGU9dFswXSxyPXRbMV07dGhpcy5jYW52YXMud2lkdGg9TWF0aC5jZWlsKHRoaXMud2lkdGgqZSksdGhpcy5jYW52YXMuaGVpZ2h0PU1hdGguY2VpbCh0aGlzLmhlaWdodCpyKSxDKHRoaXMsb3QsQ3QpLmNhbGwodGhpcyl9fWZ1bmN0aW9uIFR0KHQsZSl7dmFyIHI9Qyh0aGlzLGh0LGp0KS5jYWxsKHRoaXMpLG49KHQtcikvUCh0aGlzLEkpLGk9KGUtcikvUCh0aGlzLFIpO3RoaXMuc2NhbGVGYWN0b3I9TWF0aC5taW4obixpKX1mdW5jdGlvbiBDdCgpe3ZhciB0PUModGhpcyxodCxqdCkuY2FsbCh0aGlzKS8yO3RoaXMuY3R4LnNldFRyYW5zZm9ybSh0aGlzLnNjYWxlRmFjdG9yLDAsMCx0aGlzLnNjYWxlRmFjdG9yLHRoaXMudHJhbnNsYXRpb25YKnRoaXMuc2NhbGVGYWN0b3IrdCx0aGlzLnRyYW5zbGF0aW9uWSp0aGlzLnNjYWxlRmFjdG9yK3QpfWZ1bmN0aW9uIE90KHQpe2Zvcih2YXIgZT1uZXcgUGF0aDJELHI9MCxuPXQubGVuZ3RoO3I8bjtyKyspe3ZhciBpPWModFtyXSw0KSxhPWlbMF0sbz1pWzFdLHM9aVsyXSxsPWlbM107MD09PXImJmUubW92ZVRvLmFwcGx5KGUsdShhKSksZS5iZXppZXJDdXJ2ZVRvKG9bMF0sb1sxXSxzWzBdLHNbMV0sbFswXSxsWzFdKX1yZXR1cm4gZX1mdW5jdGlvbiBGdCh0LGUscixuKXt2YXIgaSxhLG8scz1bXSx1PXRoaXMudGhpY2tuZXNzLzIsaD1sKHRoaXMucGF0aHMpO3RyeXtmb3IoaC5zKCk7IShvPWgubigpKS5kb25lOyl7dmFyIGY9by52YWx1ZTtpPVtdLGE9W107Zm9yKHZhciBkPTAscD1mLmxlbmd0aDtkPHA7ZCsrKXt2YXIgdj1jKGZbZF0sNCkseT12WzBdLG09dlsxXSxnPXZbMl0sYj12WzNdLF89dCooeVswXStlKSt1LHc9bi10Kih5WzFdK3IpLXUsQT10KihtWzBdK2UpK3Usaz1uLXQqKG1bMV0rciktdSxTPXQqKGdbMF0rZSkrdSx4PW4tdCooZ1sxXStyKS11LEU9dCooYlswXStlKSt1LFA9bi10KihiWzFdK3IpLXU7MD09PWQmJihpLnB1c2goXyx3KSxhLnB1c2goXyx3KSksaS5wdXNoKEEsayxTLHgsRSxQKSxDKHRoaXMsbHQsTXQpLmNhbGwodGhpcyxfLHcsQSxrLFMseCxFLFAsNCxhKX1zLnB1c2goe2JlemllcjppLHBvaW50czphfSl9fWNhdGNoKHQpe2guZSh0KX1maW5hbGx5e2guZigpfXJldHVybiBzfWZ1bmN0aW9uIE10KHQsZSxyLG4saSxhLG8scyxsLHUpe2lmKEModGhpcyx1dCxSdCkuY2FsbCh0aGlzLHQsZSxyLG4saSxhLG8scykpdS5wdXNoKG8scyk7ZWxzZXtmb3IodmFyIGM9MTtjPGwtMTtjKyspe3ZhciBoPWMvbCxmPTEtaCxkPWgqdCtmKnIscD1oKmUrZipuLHY9aCpyK2YqaSx5PWgqbitmKmE7ZD1oKihkPWgqZCtmKnYpK2YqKHY9aCp2K2YqKGgqaStmKm8pKSxwPWgqKHA9aCpwK2YqeSkrZiooeT1oKnkrZiooaCphK2YqcykpLHUucHVzaChkLHApfXUucHVzaChvLHMpfX1mdW5jdGlvbiBSdCh0LGUscixuLGksYSxvLHMpe3ZhciBsPU1hdGgucG93KDMqci0yKnQtbywyKSx1PU1hdGgucG93KDMqbi0yKmUtcywyKSxjPU1hdGgucG93KDMqaS10LTIqbywyKSxoPU1hdGgucG93KDMqYS1lLTIqcywyKTtyZXR1cm4gTWF0aC5tYXgobCxjKStNYXRoLm1heCh1LGgpPD0xMH1mdW5jdGlvbiBJdCgpe3ZhciB0LGU9MS8wLHI9LTEvMCxuPTEvMCxhPS0xLzAsbz1sKHRoaXMucGF0aHMpO3RyeXtmb3Ioby5zKCk7ISh0PW8ubigpKS5kb25lOyl7dmFyIHMsaD1sKHQudmFsdWUpO3RyeXtmb3IoaC5zKCk7IShzPWgubigpKS5kb25lOyl7dmFyIGY9YyhzLnZhbHVlLDQpLGQ9ZlswXSxwPWZbMV0sdj1mWzJdLHk9ZlszXSxtPWkuVXRpbC5iZXppZXJCb3VuZGluZ0JveC5hcHBseShpLlV0aWwsdShkKS5jb25jYXQodShwKSx1KHYpLHUoeSkpKTtlPU1hdGgubWluKGUsbVswXSksbj1NYXRoLm1pbihuLG1bMV0pLHI9TWF0aC5tYXgocixtWzJdKSxhPU1hdGgubWF4KGEsbVszXSl9fWNhdGNoKHQpe2guZSh0KX1maW5hbGx5e2guZigpfX19Y2F0Y2godCl7by5lKHQpfWZpbmFsbHl7by5mKCl9cmV0dXJuW2UsbixyLGFdfWZ1bmN0aW9uIGp0KCl7cmV0dXJuIFAodGhpcyxVKT9NYXRoLmNlaWwodGhpcy50aGlja25lc3MqdGhpcy5wYXJlbnRTY2FsZSk6MH1mdW5jdGlvbiBMdCgpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdJiZhcmd1bWVudHNbMF07aWYoIXRoaXMuaXNFbXB0eSgpKWlmKFAodGhpcyxVKSl7dmFyIGU9Qyh0aGlzLGN0LEl0KS5jYWxsKHRoaXMpLHI9Qyh0aGlzLGh0LGp0KS5jYWxsKHRoaXMpO0UodGhpcyxJLE1hdGgubWF4KE8sZVsyXS1lWzBdKSksRSh0aGlzLFIsTWF0aC5tYXgoTyxlWzNdLWVbMV0pKTt2YXIgbj1NYXRoLmNlaWwocitQKHRoaXMsSSkqdGhpcy5zY2FsZUZhY3RvciksaT1NYXRoLmNlaWwocitQKHRoaXMsUikqdGhpcy5zY2FsZUZhY3RvciksYT1jKHRoaXMucGFyZW50RGltZW5zaW9ucywyKSxvPWFbMF0scz1hWzFdO3RoaXMud2lkdGg9bi9vLHRoaXMuaGVpZ2h0PWkvcyxFKHRoaXMsTSxuL2kpLEModGhpcyxkdCxEdCkuY2FsbCh0aGlzKTt2YXIgbD10aGlzLnRyYW5zbGF0aW9uWCx1PXRoaXMudHJhbnNsYXRpb25ZO3RoaXMudHJhbnNsYXRpb25YPS1lWzBdLHRoaXMudHJhbnNsYXRpb25ZPS1lWzFdLEModGhpcyxpdCxQdCkuY2FsbCh0aGlzKSxDKHRoaXMsdHQsa3QpLmNhbGwodGhpcyksRSh0aGlzLHEsbiksRSh0aGlzLEgsaSksdGhpcy5zZXREaW1zKG4saSk7dmFyIGg9dD9yL3RoaXMuc2NhbGVGYWN0b3IvMjowO3RoaXMudHJhbnNsYXRlKGwtdGhpcy50cmFuc2xhdGlvblgtaCx1LXRoaXMudHJhbnNsYXRpb25ZLWgpfWVsc2UgQyh0aGlzLHR0LGt0KS5jYWxsKHRoaXMpfWZ1bmN0aW9uIER0KCl7dmFyIHQ9dGhpcy5kaXYuc3R5bGU7UCh0aGlzLE0pPj0xPyh0Lm1pbkhlaWdodD0iIi5jb25jYXQoTywicHgiKSx0Lm1pbldpZHRoPSIiLmNvbmNhdChNYXRoLnJvdW5kKFAodGhpcyxNKSpPKSwicHgiKSk6KHQubWluV2lkdGg9IiIuY29uY2F0KE8sInB4IiksdC5taW5IZWlnaHQ9IiIuY29uY2F0KE1hdGgucm91bmQoTy9QKHRoaXMsTSkpLCJweCIpKX1lLklua0VkaXRvcj1wdCx3KHB0LCJfZGVmYXVsdENvbG9yIixudWxsKSx3KHB0LCJfZGVmYXVsdE9wYWNpdHkiLDEpLHcocHQsIl9kZWZhdWx0VGhpY2tuZXNzIiwxKSx3KHB0LCJfbDEwblByb21pc2UiLHZvaWQgMCksdyhwdCwiX3R5cGUiLCJpbmsiKX0sKHQsZSxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxlLmZpdEN1cnZlPXZvaWQgMDt2YXIgbj1yKDE1Nik7ZS5maXRDdXJ2ZT1ufSx0PT57ZnVuY3Rpb24gZSh0KXtyZXR1cm4gZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgdH0sZSh0KX1mdW5jdGlvbiByKHQsZSl7aWYoISh0IGluc3RhbmNlb2YgZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gbih0LHIpe2Zvcih2YXIgbj0wO248ci5sZW5ndGg7bisrKXt2YXIgaT1yW25dO2kuZW51bWVyYWJsZT1pLmVudW1lcmFibGV8fCExLGkuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBpJiYoaS53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsKHZvaWQgMCxhPWZ1bmN0aW9uKHQscil7aWYoIm9iamVjdCIhPT1lKHQpfHxudWxsPT09dClyZXR1cm4gdDt2YXIgbj10W1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09bil7dmFyIGk9bi5jYWxsKHQsInN0cmluZyIpO2lmKCJvYmplY3QiIT09ZShpKSlyZXR1cm4gaTt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybiBTdHJpbmcodCl9KGkua2V5KSwic3ltYm9sIj09PWUoYSk/YTpTdHJpbmcoYSkpLGkpfXZhciBhfWZ1bmN0aW9uIGkodCxlLHIpe3JldHVybiBlJiZuKHQucHJvdG90eXBlLGUpLHImJm4odCxyKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSx0fWZ1bmN0aW9uIGEodCxlKXtyZXR1cm4gZnVuY3Rpb24odCl7aWYoQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gdH0odCl8fGZ1bmN0aW9uKHQsZSl7dmFyIHI9bnVsbD09dD9udWxsOiJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZ0W1N5bWJvbC5pdGVyYXRvcl18fHRbIkBAaXRlcmF0b3IiXTtpZihudWxsIT1yKXt2YXIgbixpLGEsbyxzPVtdLGw9ITAsdT0hMTt0cnl7aWYoYT0ocj1yLmNhbGwodCkpLm5leHQsMD09PWUpe2lmKE9iamVjdChyKSE9PXIpcmV0dXJuO2w9ITF9ZWxzZSBmb3IoOyEobD0obj1hLmNhbGwocikpLmRvbmUpJiYocy5wdXNoKG4udmFsdWUpLHMubGVuZ3RoIT09ZSk7bD0hMCk7fWNhdGNoKHQpe3U9ITAsaT10fWZpbmFsbHl7dHJ5e2lmKCFsJiZudWxsIT1yLnJldHVybiYmKG89ci5yZXR1cm4oKSxPYmplY3QobykhPT1vKSlyZXR1cm59ZmluYWxseXtpZih1KXRocm93IGl9fXJldHVybiBzfX0odCxlKXx8byh0LGUpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gbyh0LGUpe2lmKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gcyh0LGUpO3ZhciByPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KS5zbGljZSg4LC0xKTtyZXR1cm4iT2JqZWN0Ij09PXImJnQuY29uc3RydWN0b3ImJihyPXQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1yfHwiU2V0Ij09PXI/QXJyYXkuZnJvbSh0KToiQXJndW1lbnRzIj09PXJ8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KHIpP3ModCxlKTp2b2lkIDB9fWZ1bmN0aW9uIHModCxlKXsobnVsbD09ZXx8ZT50Lmxlbmd0aCkmJihlPXQubGVuZ3RoKTtmb3IodmFyIHI9MCxuPW5ldyBBcnJheShlKTtyPGU7cisrKW5bcl09dFtyXTtyZXR1cm4gbn1mdW5jdGlvbiBsKHQsZSxyLG4saSl7dmFyIG8scyxoLGYsZCxwLHksbSxnLGIsXyx3LEE7aWYoMj09PXQubGVuZ3RoKXJldHVybiB3PXYudmVjdG9yTGVuKHYuc3VidHJhY3QodFswXSx0WzFdKSkvMyxbbz1bdFswXSx2LmFkZEFycmF5cyh0WzBdLHYubXVsSXRlbXMoZSx3KSksdi5hZGRBcnJheXModFsxXSx2Lm11bEl0ZW1zKHIsdykpLHRbMV1dXTtzPWZ1bmN0aW9uKHQpe3ZhciBlLHIsbixpPVtdO3JldHVybiB0LmZvckVhY2goKGZ1bmN0aW9uKHQsYSl7ZT1hP3Irdi52ZWN0b3JMZW4odi5zdWJ0cmFjdCh0LG4pKTowLGkucHVzaChlKSxyPWUsbj10fSkpLGk9aS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0L3J9KSl9KHQpO3ZhciBrPWEodSh0LHMscyxlLHIsaSksMyk7aWYobz1rWzBdLGY9a1sxXSxwPWtbMl0sMD09PWZ8fGY8bilyZXR1cm5bb107aWYoZjxuKm4pZm9yKGg9cyxkPWYseT1wLEE9MDtBPDIwO0ErKyl7dmFyIFM9YSh1KHQscyxoPWMobyx0LGgpLGUscixpKSwzKTtpZihvPVNbMF0sZj1TWzFdLHA9U1syXSxmPG4pcmV0dXJuW29dO2lmKHA9PT15KXt2YXIgeD1mL2Q7aWYoeD4uOTk5OSYmeDwxLjAwMDEpYnJlYWt9ZD1mLHk9cH1pZihfPVtdLChtPXYuc3VidHJhY3QodFtwLTFdLHRbcCsxXSkpLmV2ZXJ5KChmdW5jdGlvbih0KXtyZXR1cm4gMD09PXR9KSkpe3ZhciBFPVstKG09di5zdWJ0cmFjdCh0W3AtMV0sdFtwXSkpWzFdLG1bMF1dO21bMF09RVswXSxtWzFdPUVbMV19cmV0dXJuIGc9di5ub3JtYWxpemUobSksYj12Lm11bEl0ZW1zKGcsLTEpLChfPV8uY29uY2F0KGwodC5zbGljZSgwLHArMSksZSxnLG4saSkpKS5jb25jYXQobCh0LnNsaWNlKHApLGIscixuLGkpKX1mdW5jdGlvbiB1KHQsZSxyLG4saSxvKXt2YXIgcyxsLHU7cz1mdW5jdGlvbih0LGUscixuKXt2YXIgaSxhLG8scyxsLHUsYyxoLGYsZCxwLG0sZyxiLF8sdyxBLGs9dFswXSxTPXRbdC5sZW5ndGgtMV07Zm9yKGk9W2ssbnVsbCxudWxsLFNdLGE9di56ZXJvc19YeDJ4MihlLmxlbmd0aCksZz0wLGI9ZS5sZW5ndGg7ZzxiO2crKylBPTEtKHc9ZVtnXSksKG89YVtnXSlbMF09di5tdWxJdGVtcyhyLDMqdyooQSpBKSksb1sxXT12Lm11bEl0ZW1zKG4sMypBKih3KncpKTtmb3Iocz1bWzAsMF0sWzAsMF1dLGw9WzAsMF0sZz0wLGI9dC5sZW5ndGg7ZzxiO2crKyl3PWVbZ10sbz1hW2ddLHNbMF1bMF0rPXYuZG90KG9bMF0sb1swXSksc1swXVsxXSs9di5kb3Qob1swXSxvWzFdKSxzWzFdWzBdKz12LmRvdChvWzBdLG9bMV0pLHNbMV1bMV0rPXYuZG90KG9bMV0sb1sxXSksXz12LnN1YnRyYWN0KHRbZ10seS5xKFtrLGssUyxTXSx3KSksbFswXSs9di5kb3Qob1swXSxfKSxsWzFdKz12LmRvdChvWzFdLF8pO3JldHVybiB1PXNbMF1bMF0qc1sxXVsxXS1zWzFdWzBdKnNbMF1bMV0sYz1zWzBdWzBdKmxbMV0tc1sxXVswXSpsWzBdLGg9bFswXSpzWzFdWzFdLWxbMV0qc1swXVsxXSxkPTA9PT11PzA6Yy91LChmPTA9PT11PzA6aC91KTwocD0xZS02KihtPXYudmVjdG9yTGVuKHYuc3VidHJhY3QoayxTKSkpKXx8ZDxwPyhpWzFdPXYuYWRkQXJyYXlzKGssdi5tdWxJdGVtcyhyLG0vMykpLGlbMl09di5hZGRBcnJheXMoUyx2Lm11bEl0ZW1zKG4sbS8zKSkpOihpWzFdPXYuYWRkQXJyYXlzKGssdi5tdWxJdGVtcyhyLGYpKSxpWzJdPXYuYWRkQXJyYXlzKFMsdi5tdWxJdGVtcyhuLGQpKSksaX0odCxyLG4saSk7dmFyIGM9ZnVuY3Rpb24odCxlLHIpe3ZhciBuLGksYSxvLHMsbCx1LGM7aT0wLGE9TWF0aC5mbG9vcih0Lmxlbmd0aC8yKTt2YXIgaD1mKGUsMTApO2ZvcihzPTAsbD10Lmxlbmd0aDtzPGw7cysrKXU9dFtzXSxjPWQoMCxyW3NdLGgsMTApLChuPShvPXYuc3VidHJhY3QoeS5xKGUsYyksdSkpWzBdKm9bMF0rb1sxXSpvWzFdKT5pJiYoaT1uLGE9cyk7cmV0dXJuW2ksYV19KHQscyxlKSxoPWEoYywyKTtyZXR1cm4gbD1oWzBdLHU9aFsxXSxvJiZvKHtiZXo6cyxwb2ludHM6dCxwYXJhbXM6ZSxtYXhFcnI6bCxtYXhQb2ludDp1fSksW3MsbCx1XX1mdW5jdGlvbiBjKHQsZSxyKXtyZXR1cm4gci5tYXAoKGZ1bmN0aW9uKHIsbil7cmV0dXJuIGgodCxlW25dLHIpfSkpfWZ1bmN0aW9uIGgodCxlLHIpe3ZhciBuPXYuc3VidHJhY3QoeS5xKHQsciksZSksaT15LnFwcmltZSh0LHIpLGE9di5tdWxNYXRyaXgobixpKSxvPXYuc3VtKHYuc3F1YXJlSXRlbXMoaSkpKzIqdi5tdWxNYXRyaXgobix5LnFwcmltZXByaW1lKHQscikpO3JldHVybiAwPT09bz9yOnItYS9vfXZhciBmPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByLG49WzBdLGk9dFswXSxhPTAsbz0xO288PWU7bysrKXI9eS5xKHQsby9lKSxhKz12LnZlY3Rvckxlbih2LnN1YnRyYWN0KHIsaSkpLG4ucHVzaChhKSxpPXI7cmV0dXJuIG4ubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC9hfSkpfTtmdW5jdGlvbiBkKHQsZSxyLG4pe2lmKGU8MClyZXR1cm4gMDtpZihlPjEpcmV0dXJuIDE7Zm9yKHZhciBpLGEsbyxzLGw9MTtsPD1uO2wrKylpZihlPD1yW2xdKXtvPShsLTEpL24sYT1sL24scz0oZS0oaT1yW2wtMV0pKS8ocltsXS1pKSooYS1vKStvO2JyZWFrfXJldHVybiBzfWZ1bmN0aW9uIHAodCxlKXtyZXR1cm4gdi5ub3JtYWxpemUodi5zdWJ0cmFjdCh0LGUpKX12YXIgdj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXtyKHRoaXMsdCl9cmV0dXJuIGkodCxudWxsLFt7a2V5OiJ6ZXJvc19YeDJ4MiIsdmFsdWU6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPVtdO3QtLTspZS5wdXNoKFswLDBdKTtyZXR1cm4gZX19LHtrZXk6Im11bEl0ZW1zIix2YWx1ZTpmdW5jdGlvbih0LGUpe3JldHVybiB0Lm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQqZX0pKX19LHtrZXk6Im11bE1hdHJpeCIsdmFsdWU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5yZWR1Y2UoKGZ1bmN0aW9uKHQscixuKXtyZXR1cm4gdCtyKmVbbl19KSwwKX19LHtrZXk6InN1YnRyYWN0Iix2YWx1ZTpmdW5jdGlvbih0LGUpe3JldHVybiB0Lm1hcCgoZnVuY3Rpb24odCxyKXtyZXR1cm4gdC1lW3JdfSkpfX0se2tleToiYWRkQXJyYXlzIix2YWx1ZTpmdW5jdGlvbih0LGUpe3JldHVybiB0Lm1hcCgoZnVuY3Rpb24odCxyKXtyZXR1cm4gdCtlW3JdfSkpfX0se2tleToiYWRkSXRlbXMiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdCtlfSkpfX0se2tleToic3VtIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQrZX0pKX19LHtrZXk6ImRvdCIsdmFsdWU6ZnVuY3Rpb24oZSxyKXtyZXR1cm4gdC5tdWxNYXRyaXgoZSxyKX19LHtrZXk6InZlY3RvckxlbiIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGguaHlwb3QuYXBwbHkoTWF0aCxmdW5jdGlvbih0KXtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiBzKHQpfShlPXQpfHxmdW5jdGlvbih0KXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmbnVsbCE9dFtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT10WyJAQGl0ZXJhdG9yIl0pcmV0dXJuIEFycmF5LmZyb20odCl9KGUpfHxvKGUpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpKTt2YXIgZX19LHtrZXk6ImRpdkl0ZW1zIix2YWx1ZTpmdW5jdGlvbih0LGUpe3JldHVybiB0Lm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQvZX0pKX19LHtrZXk6InNxdWFyZUl0ZW1zIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0KnR9KSl9fSx7a2V5OiJub3JtYWxpemUiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmRpdkl0ZW1zKHQsdGhpcy52ZWN0b3JMZW4odCkpfX1dKSx0fSgpLHk9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7cih0aGlzLHQpfXJldHVybiBpKHQsbnVsbCxbe2tleToicSIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgcj0xLWUsbj12Lm11bEl0ZW1zKHRbMF0scipyKnIpLGk9di5tdWxJdGVtcyh0WzFdLDMqcipyKmUpLGE9di5tdWxJdGVtcyh0WzJdLDMqciplKmUpLG89di5tdWxJdGVtcyh0WzNdLGUqZSplKTtyZXR1cm4gdi5hZGRBcnJheXModi5hZGRBcnJheXMobixpKSx2LmFkZEFycmF5cyhhLG8pKX19LHtrZXk6InFwcmltZSIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgcj0xLWUsbj12Lm11bEl0ZW1zKHYuc3VidHJhY3QodFsxXSx0WzBdKSwzKnIqciksaT12Lm11bEl0ZW1zKHYuc3VidHJhY3QodFsyXSx0WzFdKSw2KnIqZSksYT12Lm11bEl0ZW1zKHYuc3VidHJhY3QodFszXSx0WzJdKSwzKmUqZSk7cmV0dXJuIHYuYWRkQXJyYXlzKHYuYWRkQXJyYXlzKG4saSksYSl9fSx7a2V5OiJxcHJpbWVwcmltZSIsdmFsdWU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdi5hZGRBcnJheXModi5tdWxJdGVtcyh2LmFkZEFycmF5cyh2LnN1YnRyYWN0KHRbMl0sdi5tdWxJdGVtcyh0WzFdLDIpKSx0WzBdKSw2KigxLWUpKSx2Lm11bEl0ZW1zKHYuYWRkQXJyYXlzKHYuc3VidHJhY3QodFszXSx2Lm11bEl0ZW1zKHRbMl0sMikpLHRbMV0pLDYqZSkpfX1dKSx0fSgpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7aWYoIUFycmF5LmlzQXJyYXkodCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiRmlyc3QgYXJndW1lbnQgc2hvdWxkIGJlIGFuIGFycmF5Iik7aWYodC5mb3JFYWNoKChmdW5jdGlvbihlKXtpZighQXJyYXkuaXNBcnJheShlKXx8ZS5zb21lKChmdW5jdGlvbih0KXtyZXR1cm4ibnVtYmVyIiE9dHlwZW9mIHR9KSl8fGUubGVuZ3RoIT09dFswXS5sZW5ndGgpdGhyb3cgRXJyb3IoIkVhY2ggcG9pbnQgc2hvdWxkIGJlIGFuIGFycmF5IG9mIG51bWJlcnMuIEVhY2ggcG9pbnQgc2hvdWxkIGhhdmUgdGhlIHNhbWUgYW1vdW50IG9mIG51bWJlcnMuIil9KSksKHQ9dC5maWx0ZXIoKGZ1bmN0aW9uKGUscil7cmV0dXJuIDA9PT1yfHwhZS5ldmVyeSgoZnVuY3Rpb24oZSxuKXtyZXR1cm4gZT09PXRbci0xXVtuXX0pKX0pKSkubGVuZ3RoPDIpcmV0dXJuW107dmFyIG49dC5sZW5ndGgsaT1wKHRbMV0sdFswXSksYT1wKHRbbi0yXSx0W24tMV0pO3JldHVybiBsKHQsaSxhLGUscil9LHQuZXhwb3J0cy5maXRDdWJpYz1sLHQuZXhwb3J0cy5jcmVhdGVUYW5nZW50PXB9LCh0LGUscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZS5Bbm5vdGF0aW9uTGF5ZXI9dm9pZCAwO3ZhciBuPXIoMSksaT1yKDEzNyksYT1yKDEzNCksbz1yKDE1OCkscz1yKDE1OSk7ZnVuY3Rpb24gbCh0LGUscil7cmV0dXJuIGZ1bmN0aW9uKHQsZSl7aWYodCE9PWUpdGhyb3cgbmV3IFR5cGVFcnJvcigiUHJpdmF0ZSBzdGF0aWMgYWNjZXNzIG9mIHdyb25nIHByb3ZlbmFuY2UiKX0odCxlKSxyfWZ1bmN0aW9uIHUoKXtyZXR1cm4gdT0idW5kZWZpbmVkIiE9dHlwZW9mIFJlZmxlY3QmJlJlZmxlY3QuZ2V0P1JlZmxlY3QuZ2V0LmJpbmQoKTpmdW5jdGlvbih0LGUscil7dmFyIG49ZnVuY3Rpb24odCxlKXtmb3IoOyFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxlKSYmbnVsbCE9PSh0PXYodCkpOyk7cmV0dXJuIHR9KHQsZSk7aWYobil7dmFyIGk9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpO3JldHVybiBpLmdldD9pLmdldC5jYWxsKGFyZ3VtZW50cy5sZW5ndGg8Mz90OnIpOmkudmFsdWV9fSx1LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBjKHQpe3JldHVybiBmdW5jdGlvbih0KXtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiB3KHQpfSh0KXx8ZnVuY3Rpb24odCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJm51bGwhPXRbU3ltYm9sLml0ZXJhdG9yXXx8bnVsbCE9dFsiQEBpdGVyYXRvciJdKXJldHVybiBBcnJheS5mcm9tKHQpfSh0KXx8Xyh0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiBoKHQsZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUmJm51bGwhPT1lKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7dC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlJiZlLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOnQsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGUmJmYodCxlKX1mdW5jdGlvbiBmKHQsZSl7cmV0dXJuIGY9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5fX3Byb3RvX189ZSx0fSxmKHQsZSl9ZnVuY3Rpb24gZCh0KXt2YXIgZT1mdW5jdGlvbigpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0KXJldHVybiExO2lmKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sKGZ1bmN0aW9uKCl7fSkpKSwhMH1jYXRjaCh0KXtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHIsbj12KHQpO2lmKGUpe3ZhciBpPXYodGhpcykuY29uc3RydWN0b3I7cj1SZWZsZWN0LmNvbnN0cnVjdChuLGFyZ3VtZW50cyxpKX1lbHNlIHI9bi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGZ1bmN0aW9uKHQsZSl7aWYoZSYmKCJvYmplY3QiPT09QShlKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGUpKXJldHVybiBlO2lmKHZvaWQgMCE9PWUpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gcCh0KX0odGhpcyxyKX19ZnVuY3Rpb24gcCh0KXtpZih2b2lkIDA9PT10KXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIHR9ZnVuY3Rpb24gdih0KXtyZXR1cm4gdj1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbih0KXtyZXR1cm4gdC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZih0KX0sdih0KX1mdW5jdGlvbiB5KHQsZSl7IWZ1bmN0aW9uKHQsZSl7aWYoZS5oYXModCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGluaXRpYWxpemUgdGhlIHNhbWUgcHJpdmF0ZSBlbGVtZW50cyB0d2ljZSBvbiBhbiBvYmplY3QiKX0odCxlKSxlLmFkZCh0KX1mdW5jdGlvbiBtKHQsZSxyKXtpZighZS5oYXModCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvIGdldCBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiByfWZ1bmN0aW9uIGcodCxlKXt2YXIgcj0idW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmdFtTeW1ib2wuaXRlcmF0b3JdfHx0WyJAQGl0ZXJhdG9yIl07aWYoIXIpe2lmKEFycmF5LmlzQXJyYXkodCl8fChyPV8odCkpfHxlJiZ0JiYibnVtYmVyIj09dHlwZW9mIHQubGVuZ3RoKXtyJiYodD1yKTt2YXIgbj0wLGk9ZnVuY3Rpb24oKXt9O3JldHVybntzOmksbjpmdW5jdGlvbigpe3JldHVybiBuPj10Lmxlbmd0aD97ZG9uZTohMH06e2RvbmU6ITEsdmFsdWU6dFtuKytdfX0sZTpmdW5jdGlvbih0KXt0aHJvdyB0fSxmOml9fXRocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBpdGVyYXRlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX12YXIgYSxvPSEwLHM9ITE7cmV0dXJue3M6ZnVuY3Rpb24oKXtyPXIuY2FsbCh0KX0sbjpmdW5jdGlvbigpe3ZhciB0PXIubmV4dCgpO3JldHVybiBvPXQuZG9uZSx0fSxlOmZ1bmN0aW9uKHQpe3M9ITAsYT10fSxmOmZ1bmN0aW9uKCl7dHJ5e298fG51bGw9PXIucmV0dXJufHxyLnJldHVybigpfWZpbmFsbHl7aWYocyl0aHJvdyBhfX19fWZ1bmN0aW9uIGIodCxlKXtyZXR1cm4gZnVuY3Rpb24odCl7aWYoQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gdH0odCl8fGZ1bmN0aW9uKHQsZSl7dmFyIHI9bnVsbD09dD9udWxsOiJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZ0W1N5bWJvbC5pdGVyYXRvcl18fHRbIkBAaXRlcmF0b3IiXTtpZihudWxsIT1yKXt2YXIgbixpLGEsbyxzPVtdLGw9ITAsdT0hMTt0cnl7aWYoYT0ocj1yLmNhbGwodCkpLm5leHQsMD09PWUpe2lmKE9iamVjdChyKSE9PXIpcmV0dXJuO2w9ITF9ZWxzZSBmb3IoOyEobD0obj1hLmNhbGwocikpLmRvbmUpJiYocy5wdXNoKG4udmFsdWUpLHMubGVuZ3RoIT09ZSk7bD0hMCk7fWNhdGNoKHQpe3U9ITAsaT10fWZpbmFsbHl7dHJ5e2lmKCFsJiZudWxsIT1yLnJldHVybiYmKG89ci5yZXR1cm4oKSxPYmplY3QobykhPT1vKSlyZXR1cm59ZmluYWxseXtpZih1KXRocm93IGl9fXJldHVybiBzfX0odCxlKXx8Xyh0LGUpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gXyh0LGUpe2lmKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gdyh0LGUpO3ZhciByPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KS5zbGljZSg4LC0xKTtyZXR1cm4iT2JqZWN0Ij09PXImJnQuY29uc3RydWN0b3ImJihyPXQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1yfHwiU2V0Ij09PXI/QXJyYXkuZnJvbSh0KToiQXJndW1lbnRzIj09PXJ8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KHIpP3codCxlKTp2b2lkIDB9fWZ1bmN0aW9uIHcodCxlKXsobnVsbD09ZXx8ZT50Lmxlbmd0aCkmJihlPXQubGVuZ3RoKTtmb3IodmFyIHI9MCxuPW5ldyBBcnJheShlKTtyPGU7cisrKW5bcl09dFtyXTtyZXR1cm4gbn1mdW5jdGlvbiBBKHQpe3JldHVybiBBPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiB0fSxBKHQpfWZ1bmN0aW9uIGsodCxlKXtpZighKHQgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBTKHQsZSl7Zm9yKHZhciByPTA7cjxlLmxlbmd0aDtyKyspe3ZhciBuPWVbcl07bi5lbnVtZXJhYmxlPW4uZW51bWVyYWJsZXx8ITEsbi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIG4mJihuLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxFKG4ua2V5KSxuKX19ZnVuY3Rpb24geCh0LGUscil7cmV0dXJuIGUmJlModC5wcm90b3R5cGUsZSksciYmUyh0LHIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLHR9ZnVuY3Rpb24gRSh0KXt2YXIgZT1mdW5jdGlvbih0LGUpe2lmKCJvYmplY3QiIT09QSh0KXx8bnVsbD09PXQpcmV0dXJuIHQ7dmFyIHI9dFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PXIpe3ZhciBuPXIuY2FsbCh0LCJzdHJpbmciKTtpZigib2JqZWN0IiE9PUEobikpcmV0dXJuIG47dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4gU3RyaW5nKHQpfSh0KTtyZXR1cm4ic3ltYm9sIj09PUEoZSk/ZTpTdHJpbmcoZSl9dmFyIFA9MWUzLFQ9bmV3IFdlYWtTZXQ7ZnVuY3Rpb24gQyh0KXtyZXR1cm57d2lkdGg6dFsyXS10WzBdLGhlaWdodDp0WzNdLXRbMV19fXZhciBPPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe2sodGhpcyx0KX1yZXR1cm4geCh0LG51bGwsW3trZXk6ImNyZWF0ZSIsdmFsdWU6ZnVuY3Rpb24odCl7c3dpdGNoKHQuZGF0YS5hbm5vdGF0aW9uVHlwZSl7Y2FzZSBuLkFubm90YXRpb25UeXBlLkxJTks6cmV0dXJuIG5ldyBJKHQpO2Nhc2Ugbi5Bbm5vdGF0aW9uVHlwZS5URVhUOnJldHVybiBuZXcgVyh0KTtjYXNlIG4uQW5ub3RhdGlvblR5cGUuV0lER0VUOnN3aXRjaCh0LmRhdGEuZmllbGRUeXBlKXtjYXNlIlR4IjpyZXR1cm4gbmV3IEIodCk7Y2FzZSJCdG4iOnJldHVybiB0LmRhdGEucmFkaW9CdXR0b24/bmV3IEgodCk6dC5kYXRhLmNoZWNrQm94P25ldyBxKHQpOm5ldyB6KHQpO2Nhc2UiQ2giOnJldHVybiBuZXcgVih0KX1yZXR1cm4gbmV3IEcodCk7Y2FzZSBuLkFubm90YXRpb25UeXBlLlBPUFVQOnJldHVybiBuZXcgWCh0KTtjYXNlIG4uQW5ub3RhdGlvblR5cGUuRlJFRVRFWFQ6cmV0dXJuIG5ldyBLKHQpO2Nhc2Ugbi5Bbm5vdGF0aW9uVHlwZS5MSU5FOnJldHVybiBuZXcgSih0KTtjYXNlIG4uQW5ub3RhdGlvblR5cGUuU1FVQVJFOnJldHVybiBuZXcgUSh0KTtjYXNlIG4uQW5ub3RhdGlvblR5cGUuQ0lSQ0xFOnJldHVybiBuZXcgJCh0KTtjYXNlIG4uQW5ub3RhdGlvblR5cGUuUE9MWUxJTkU6cmV0dXJuIG5ldyBaKHQpO2Nhc2Ugbi5Bbm5vdGF0aW9uVHlwZS5DQVJFVDpyZXR1cm4gbmV3IGV0KHQpO2Nhc2Ugbi5Bbm5vdGF0aW9uVHlwZS5JTks6cmV0dXJuIG5ldyBydCh0KTtjYXNlIG4uQW5ub3RhdGlvblR5cGUuUE9MWUdPTjpyZXR1cm4gbmV3IHR0KHQpO2Nhc2Ugbi5Bbm5vdGF0aW9uVHlwZS5ISUdITElHSFQ6cmV0dXJuIG5ldyBudCh0KTtjYXNlIG4uQW5ub3RhdGlvblR5cGUuVU5ERVJMSU5FOnJldHVybiBuZXcgaXQodCk7Y2FzZSBuLkFubm90YXRpb25UeXBlLlNRVUlHR0xZOnJldHVybiBuZXcgYXQodCk7Y2FzZSBuLkFubm90YXRpb25UeXBlLlNUUklLRU9VVDpyZXR1cm4gbmV3IG90KHQpO2Nhc2Ugbi5Bbm5vdGF0aW9uVHlwZS5TVEFNUDpyZXR1cm4gbmV3IHN0KHQpO2Nhc2Ugbi5Bbm5vdGF0aW9uVHlwZS5GSUxFQVRUQUNITUVOVDpyZXR1cm4gbmV3IGx0KHQpO2RlZmF1bHQ6cmV0dXJuIG5ldyBGKHQpfX19XSksdH0oKSxGPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXt2YXIgcj1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e30sbj1yLmlzUmVuZGVyYWJsZSxpPXZvaWQgMCE9PW4mJm4sYT1yLmlnbm9yZUJvcmRlcixvPXZvaWQgMCE9PWEmJmEscz1yLmNyZWF0ZVF1YWRyaWxhdGVyYWxzLGw9dm9pZCAwIT09cyYmcztrKHRoaXMsdCksdGhpcy5pc1JlbmRlcmFibGU9aSx0aGlzLmRhdGE9ZS5kYXRhLHRoaXMubGF5ZXI9ZS5sYXllcix0aGlzLnBhZ2U9ZS5wYWdlLHRoaXMudmlld3BvcnQ9ZS52aWV3cG9ydCx0aGlzLmxpbmtTZXJ2aWNlPWUubGlua1NlcnZpY2UsdGhpcy5kb3dubG9hZE1hbmFnZXI9ZS5kb3dubG9hZE1hbmFnZXIsdGhpcy5pbWFnZVJlc291cmNlc1BhdGg9ZS5pbWFnZVJlc291cmNlc1BhdGgsdGhpcy5yZW5kZXJGb3Jtcz1lLnJlbmRlckZvcm1zLHRoaXMuc3ZnRmFjdG9yeT1lLnN2Z0ZhY3RvcnksdGhpcy5hbm5vdGF0aW9uU3RvcmFnZT1lLmFubm90YXRpb25TdG9yYWdlLHRoaXMuZW5hYmxlU2NyaXB0aW5nPWUuZW5hYmxlU2NyaXB0aW5nLHRoaXMuaGFzSlNBY3Rpb25zPWUuaGFzSlNBY3Rpb25zLHRoaXMuX2ZpZWxkT2JqZWN0cz1lLmZpZWxkT2JqZWN0cyxpJiYodGhpcy5jb250YWluZXI9dGhpcy5fY3JlYXRlQ29udGFpbmVyKG8pKSxsJiYodGhpcy5xdWFkcmlsYXRlcmFscz10aGlzLl9jcmVhdGVRdWFkcmlsYXRlcmFscyhvKSl9cmV0dXJuIHgodCxbe2tleToiX2NyZWF0ZUNvbnRhaW5lciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSYmYXJndW1lbnRzWzBdLGU9dGhpcy5kYXRhLHI9dGhpcy5wYWdlLGk9dGhpcy52aWV3cG9ydCxhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNlY3Rpb24iKTthLnNldEF0dHJpYnV0ZSgiZGF0YS1hbm5vdGF0aW9uLWlkIixlLmlkKTt2YXIgbz1pLnJhd0RpbXMscz1vLnBhZ2VXaWR0aCxsPW8ucGFnZUhlaWdodCx1PW8ucGFnZVgsYz1vLnBhZ2VZLGg9QyhlLnJlY3QpLGY9aC53aWR0aCxkPWguaGVpZ2h0LHA9bi5VdGlsLm5vcm1hbGl6ZVJlY3QoW2UucmVjdFswXSxyLnZpZXdbM10tZS5yZWN0WzFdK3Iudmlld1sxXSxlLnJlY3RbMl0sci52aWV3WzNdLWUucmVjdFszXStyLnZpZXdbMV1dKTtpZighdCYmZS5ib3JkZXJTdHlsZS53aWR0aD4wKXthLnN0eWxlLmJvcmRlcldpZHRoPSIiLmNvbmNhdChlLmJvcmRlclN0eWxlLndpZHRoLCJweCIpO3ZhciB2PWUuYm9yZGVyU3R5bGUuaG9yaXpvbnRhbENvcm5lclJhZGl1cyx5PWUuYm9yZGVyU3R5bGUudmVydGljYWxDb3JuZXJSYWRpdXM7aWYodj4wfHx5PjApe3ZhciBtPSJjYWxjKCIuY29uY2F0KHYsInB4ICogdmFyKC0tc2NhbGUtZmFjdG9yKSkgLyBjYWxjKCIpLmNvbmNhdCh5LCJweCAqIHZhcigtLXNjYWxlLWZhY3RvcikpIik7YS5zdHlsZS5ib3JkZXJSYWRpdXM9bX1lbHNlIGlmKHRoaXMgaW5zdGFuY2VvZiBIKXt2YXIgZz0iY2FsYygiLmNvbmNhdChmLCJweCAqIHZhcigtLXNjYWxlLWZhY3RvcikpIC8gY2FsYygiKS5jb25jYXQoZCwicHggKiB2YXIoLS1zY2FsZS1mYWN0b3IpKSIpO2Euc3R5bGUuYm9yZGVyUmFkaXVzPWd9c3dpdGNoKGUuYm9yZGVyU3R5bGUuc3R5bGUpe2Nhc2Ugbi5Bbm5vdGF0aW9uQm9yZGVyU3R5bGVUeXBlLlNPTElEOmEuc3R5bGUuYm9yZGVyU3R5bGU9InNvbGlkIjticmVhaztjYXNlIG4uQW5ub3RhdGlvbkJvcmRlclN0eWxlVHlwZS5EQVNIRUQ6YS5zdHlsZS5ib3JkZXJTdHlsZT0iZGFzaGVkIjticmVhaztjYXNlIG4uQW5ub3RhdGlvbkJvcmRlclN0eWxlVHlwZS5CRVZFTEVEOigwLG4ud2FybikoIlVuaW1wbGVtZW50ZWQgYm9yZGVyIHN0eWxlOiBiZXZlbGVkIik7YnJlYWs7Y2FzZSBuLkFubm90YXRpb25Cb3JkZXJTdHlsZVR5cGUuSU5TRVQ6KDAsbi53YXJuKSgiVW5pbXBsZW1lbnRlZCBib3JkZXIgc3R5bGU6IGluc2V0Iik7YnJlYWs7Y2FzZSBuLkFubm90YXRpb25Cb3JkZXJTdHlsZVR5cGUuVU5ERVJMSU5FOmEuc3R5bGUuYm9yZGVyQm90dG9tU3R5bGU9InNvbGlkIn12YXIgYj1lLmJvcmRlckNvbG9yfHxudWxsO2I/YS5zdHlsZS5ib3JkZXJDb2xvcj1uLlV0aWwubWFrZUhleENvbG9yKDB8YlswXSwwfGJbMV0sMHxiWzJdKTphLnN0eWxlLmJvcmRlcldpZHRoPTB9YS5zdHlsZS5sZWZ0PSIiLmNvbmNhdCgxMDAqKHBbMF0tdSkvcywiJSIpLGEuc3R5bGUudG9wPSIiLmNvbmNhdCgxMDAqKHBbMV0tYykvbCwiJSIpO3ZhciBfPWUucm90YXRpb247cmV0dXJuIGUuaGFzT3duQ2FudmFzfHwwPT09Xz8oYS5zdHlsZS53aWR0aD0iIi5jb25jYXQoMTAwKmYvcywiJSIpLGEuc3R5bGUuaGVpZ2h0PSIiLmNvbmNhdCgxMDAqZC9sLCIlIikpOnRoaXMuc2V0Um90YXRpb24oXyxhKSxhfX0se2tleToic2V0Um90YXRpb24iLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlLHIsbj1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06dGhpcy5jb250YWluZXIsaT10aGlzLnZpZXdwb3J0LnJhd0RpbXMsYT1pLnBhZ2VXaWR0aCxvPWkucGFnZUhlaWdodCxzPUModGhpcy5kYXRhLnJlY3QpLGw9cy53aWR0aCx1PXMuaGVpZ2h0O3QlMTgwPT0wPyhlPTEwMCpsL2Escj0xMDAqdS9vKTooZT0xMDAqdS9hLHI9MTAwKmwvbyksbi5zdHlsZS53aWR0aD0iIi5jb25jYXQoZSwiJSIpLG4uc3R5bGUuaGVpZ2h0PSIiLmNvbmNhdChyLCIlIiksbi5zZXRBdHRyaWJ1dGUoImRhdGEtbWFpbi1yb3RhdGlvbiIsKDM2MC10KSUzNjApfX0se2tleToiX2NvbW1vbkFjdGlvbnMiLGdldDpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT1mdW5jdGlvbih0LGUscil7dmFyIG49ci5kZXRhaWxbdF07ci50YXJnZXQuc3R5bGVbZV09by5Db2xvckNvbnZlcnRlcnNbIiIuY29uY2F0KG5bMF0sIl9IVE1MIildKG4uc2xpY2UoMSkpfTtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywiX2NvbW1vbkFjdGlvbnMiLHtkaXNwbGF5OmZ1bmN0aW9uKGUpe3ZhciByPWUuZGV0YWlsLmRpc3BsYXklMj09MTt0LmNvbnRhaW5lci5zdHlsZS52aXNpYmlsaXR5PXI/ImhpZGRlbiI6InZpc2libGUiLHQuYW5ub3RhdGlvblN0b3JhZ2Uuc2V0VmFsdWUodC5kYXRhLmlkLHtoaWRkZW46cixwcmludDowPT09ZS5kZXRhaWwuZGlzcGxheXx8Mz09PWUuZGV0YWlsLmRpc3BsYXl9KX0scHJpbnQ6ZnVuY3Rpb24oZSl7dC5hbm5vdGF0aW9uU3RvcmFnZS5zZXRWYWx1ZSh0LmRhdGEuaWQse3ByaW50OmUuZGV0YWlsLnByaW50fSl9LGhpZGRlbjpmdW5jdGlvbihlKXt0LmNvbnRhaW5lci5zdHlsZS52aXNpYmlsaXR5PWUuZGV0YWlsLmhpZGRlbj8iaGlkZGVuIjoidmlzaWJsZSIsdC5hbm5vdGF0aW9uU3RvcmFnZS5zZXRWYWx1ZSh0LmRhdGEuaWQse2hpZGRlbjplLmRldGFpbC5oaWRkZW59KX0sZm9jdXM6ZnVuY3Rpb24odCl7c2V0VGltZW91dCgoZnVuY3Rpb24oKXtyZXR1cm4gdC50YXJnZXQuZm9jdXMoe3ByZXZlbnRTY3JvbGw6ITF9KX0pLDApfSx1c2VyTmFtZTpmdW5jdGlvbih0KXt0LnRhcmdldC50aXRsZT10LmRldGFpbC51c2VyTmFtZX0scmVhZG9ubHk6ZnVuY3Rpb24odCl7dC5kZXRhaWwucmVhZG9ubHk/dC50YXJnZXQuc2V0QXR0cmlidXRlKCJyZWFkb25seSIsIiIpOnQudGFyZ2V0LnJlbW92ZUF0dHJpYnV0ZSgicmVhZG9ubHkiKX0scmVxdWlyZWQ6ZnVuY3Rpb24oZSl7dC5fc2V0UmVxdWlyZWQoZS50YXJnZXQsZS5kZXRhaWwucmVxdWlyZWQpfSxiZ0NvbG9yOmZ1bmN0aW9uKHQpe2UoImJnQ29sb3IiLCJiYWNrZ3JvdW5kQ29sb3IiLHQpfSxmaWxsQ29sb3I6ZnVuY3Rpb24odCl7ZSgiZmlsbENvbG9yIiwiYmFja2dyb3VuZENvbG9yIix0KX0sZmdDb2xvcjpmdW5jdGlvbih0KXtlKCJmZ0NvbG9yIiwiY29sb3IiLHQpfSx0ZXh0Q29sb3I6ZnVuY3Rpb24odCl7ZSgidGV4dENvbG9yIiwiY29sb3IiLHQpfSxib3JkZXJDb2xvcjpmdW5jdGlvbih0KXtlKCJib3JkZXJDb2xvciIsImJvcmRlckNvbG9yIix0KX0sc3Ryb2tlQ29sb3I6ZnVuY3Rpb24odCl7ZSgic3Ryb2tlQ29sb3IiLCJib3JkZXJDb2xvciIsdCl9LHJvdGF0aW9uOmZ1bmN0aW9uKGUpe3ZhciByPWUuZGV0YWlsLnJvdGF0aW9uO3Quc2V0Um90YXRpb24ociksdC5hbm5vdGF0aW9uU3RvcmFnZS5zZXRWYWx1ZSh0LmRhdGEuaWQse3JvdGF0aW9uOnJ9KX19KX19LHtrZXk6Il9kaXNwYXRjaEV2ZW50RnJvbVNhbmRib3giLHZhbHVlOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPXRoaXMuX2NvbW1vbkFjdGlvbnMsbj0wLGk9T2JqZWN0LmtleXMoZS5kZXRhaWwpO248aS5sZW5ndGg7bisrKXt2YXIgYT1pW25dLG89dFthXXx8clthXTtudWxsPT1vfHxvKGUpfX19LHtrZXk6Il9zZXREZWZhdWx0UHJvcGVydGllc0Zyb21KUyIsdmFsdWU6ZnVuY3Rpb24odCl7aWYodGhpcy5lbmFibGVTY3JpcHRpbmcpe3ZhciBlPXRoaXMuYW5ub3RhdGlvblN0b3JhZ2UuZ2V0UmF3VmFsdWUodGhpcy5kYXRhLmlkKTtpZihlKWZvcih2YXIgcj10aGlzLl9jb21tb25BY3Rpb25zLG49MCxpPU9iamVjdC5lbnRyaWVzKGUpO248aS5sZW5ndGg7bisrKXt2YXIgYT1iKGlbbl0sMiksbz1hWzBdLHM9YVsxXSxsPXJbb107bCYmKGwoe2RldGFpbDp7W29dOnN9LHRhcmdldDp0fSksZGVsZXRlIGVbb10pfX19fSx7a2V5OiJfY3JlYXRlUXVhZHJpbGF0ZXJhbHMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0mJmFyZ3VtZW50c1swXTtpZighdGhpcy5kYXRhLnF1YWRQb2ludHMpcmV0dXJuIG51bGw7dmFyIGUscj1bXSxuPXRoaXMuZGF0YS5yZWN0LGk9Zyh0aGlzLmRhdGEucXVhZFBvaW50cyk7dHJ5e2ZvcihpLnMoKTshKGU9aS5uKCkpLmRvbmU7KXt2YXIgYT1lLnZhbHVlO3RoaXMuZGF0YS5yZWN0PVthWzJdLngsYVsyXS55LGFbMV0ueCxhWzFdLnldLHIucHVzaCh0aGlzLl9jcmVhdGVDb250YWluZXIodCkpfX1jYXRjaCh0KXtpLmUodCl9ZmluYWxseXtpLmYoKX1yZXR1cm4gdGhpcy5kYXRhLnJlY3Q9bixyfX0se2tleToiX2NyZWF0ZVBvcHVwIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciByPXRoaXMuY29udGFpbmVyO3RoaXMucXVhZHJpbGF0ZXJhbHMmJih0PXR8fHRoaXMucXVhZHJpbGF0ZXJhbHMscj10aGlzLnF1YWRyaWxhdGVyYWxzWzBdKSx0fHwoKHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpLmNsYXNzTmFtZT0icG9wdXBUcmlnZ2VyQXJlYSIsci5hcHBlbmQodCkpO3ZhciBuPW5ldyBZKHtjb250YWluZXI6cix0cmlnZ2VyOnQsY29sb3I6ZS5jb2xvcix0aXRsZU9iajplLnRpdGxlT2JqLG1vZGlmaWNhdGlvbkRhdGU6ZS5tb2RpZmljYXRpb25EYXRlLGNvbnRlbnRzT2JqOmUuY29udGVudHNPYmoscmljaFRleHQ6ZS5yaWNoVGV4dCxoaWRlV3JhcHBlcjohMH0pLnJlbmRlcigpO24uc3R5bGUubGVmdD0iMTAwJSIsci5hcHBlbmQobil9fSx7a2V5OiJfcmVuZGVyUXVhZHJpbGF0ZXJhbHMiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlLHI9Zyh0aGlzLnF1YWRyaWxhdGVyYWxzKTt0cnl7Zm9yKHIucygpOyEoZT1yLm4oKSkuZG9uZTspZS52YWx1ZS5jbGFzc05hbWU9dH1jYXRjaCh0KXtyLmUodCl9ZmluYWxseXtyLmYoKX1yZXR1cm4gdGhpcy5xdWFkcmlsYXRlcmFsc319LHtrZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXsoMCxuLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGBBbm5vdGF0aW9uRWxlbWVudC5yZW5kZXJgIGNhbGxlZCIpfX0se2tleToiX2dldEVsZW1lbnRzQnlOYW1lIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06bnVsbCxyPVtdO2lmKHRoaXMuX2ZpZWxkT2JqZWN0cyl7dmFyIGk9dGhpcy5fZmllbGRPYmplY3RzW3RdO2lmKGkpe3ZhciBhLG89ZyhpKTt0cnl7Zm9yKG8ucygpOyEoYT1vLm4oKSkuZG9uZTspe3ZhciBzPWEudmFsdWUsbD1zLnBhZ2UsdT1zLmlkLGM9cy5leHBvcnRWYWx1ZXM7aWYoLTEhPT1sJiZ1IT09ZSl7dmFyIGg9InN0cmluZyI9PXR5cGVvZiBjP2M6bnVsbCxmPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLWVsZW1lbnQtaWQ9IicuY29uY2F0KHUsJyJdJykpOyFmfHxULmhhcyhmKT9yLnB1c2goe2lkOnUsZXhwb3J0VmFsdWU6aCxkb21FbGVtZW50OmZ9KTooMCxuLndhcm4pKCJfZ2V0RWxlbWVudHNCeU5hbWUgLSBlbGVtZW50IG5vdCBhbGxvd2VkOiAiLmNvbmNhdCh1KSl9fX1jYXRjaCh0KXtvLmUodCl9ZmluYWxseXtvLmYoKX19cmV0dXJuIHJ9dmFyIGQscD1nKGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKHQpKTt0cnl7Zm9yKHAucygpOyEoZD1wLm4oKSkuZG9uZTspe3ZhciB2PWQudmFsdWUseT12LmV4cG9ydFZhbHVlLG09di5nZXRBdHRyaWJ1dGUoImRhdGEtZWxlbWVudC1pZCIpO20hPT1lJiZULmhhcyh2KSYmci5wdXNoKHtpZDptLGV4cG9ydFZhbHVlOnksZG9tRWxlbWVudDp2fSl9fWNhdGNoKHQpe3AuZSh0KX1maW5hbGx5e3AuZigpfXJldHVybiByfX1dKSx0fSgpLE09bmV3IFdlYWtTZXQsUj1uZXcgV2Vha1NldCxJPWZ1bmN0aW9uKHQpe2gocix0KTt2YXIgZT1kKHIpO2Z1bmN0aW9uIHIodCl7dmFyIG4saT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06bnVsbDtyZXR1cm4gayh0aGlzLHIpLHkocChuPWUuY2FsbCh0aGlzLHQse2lzUmVuZGVyYWJsZTohMCxpZ25vcmVCb3JkZXI6IShudWxsPT1pfHwhaS5pZ25vcmVCb3JkZXIpLGNyZWF0ZVF1YWRyaWxhdGVyYWxzOiEwfSkpLFIpLHkocChuKSxNKSxuLmlzVG9vbHRpcE9ubHk9dC5kYXRhLmlzVG9vbHRpcE9ubHksbn1yZXR1cm4geChyLFt7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5kYXRhLGU9dGhpcy5saW5rU2VydmljZSxyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTtyLnNldEF0dHJpYnV0ZSgiZGF0YS1lbGVtZW50LWlkIix0LmlkKTt2YXIgbj0hMTtyZXR1cm4gdC51cmw/KGUuYWRkTGlua0F0dHJpYnV0ZXMocix0LnVybCx0Lm5ld1dpbmRvdyksbj0hMCk6dC5hY3Rpb24/KHRoaXMuX2JpbmROYW1lZEFjdGlvbihyLHQuYWN0aW9uKSxuPSEwKTp0LmF0dGFjaG1lbnQ/KHRoaXMuX2JpbmRBdHRhY2htZW50KHIsdC5hdHRhY2htZW50KSxuPSEwKTp0LnNldE9DR1N0YXRlPyhtKHRoaXMsUixMKS5jYWxsKHRoaXMscix0LnNldE9DR1N0YXRlKSxuPSEwKTp0LmRlc3Q/KHRoaXMuX2JpbmRMaW5rKHIsdC5kZXN0KSxuPSEwKToodC5hY3Rpb25zJiYodC5hY3Rpb25zLkFjdGlvbnx8dC5hY3Rpb25zWyJNb3VzZSBVcCJdfHx0LmFjdGlvbnNbIk1vdXNlIERvd24iXSkmJnRoaXMuZW5hYmxlU2NyaXB0aW5nJiZ0aGlzLmhhc0pTQWN0aW9ucyYmKHRoaXMuX2JpbmRKU0FjdGlvbihyLHQpLG49ITApLHQucmVzZXRGb3JtPyh0aGlzLl9iaW5kUmVzZXRGb3JtQWN0aW9uKHIsdC5yZXNldEZvcm0pLG49ITApOnRoaXMuaXNUb29sdGlwT25seSYmIW4mJih0aGlzLl9iaW5kTGluayhyLCIiKSxuPSEwKSksdGhpcy5xdWFkcmlsYXRlcmFscz90aGlzLl9yZW5kZXJRdWFkcmlsYXRlcmFscygibGlua0Fubm90YXRpb24iKS5tYXAoKGZ1bmN0aW9uKHQsZSl7dmFyIG49MD09PWU/cjpyLmNsb25lTm9kZSgpO3JldHVybiB0LmFwcGVuZChuKSx0fSkpOih0aGlzLmNvbnRhaW5lci5jbGFzc05hbWU9ImxpbmtBbm5vdGF0aW9uIixuJiZ0aGlzLmNvbnRhaW5lci5hcHBlbmQociksdGhpcy5jb250YWluZXIpfX0se2tleToiX2JpbmRMaW5rIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciByPXRoaXM7dC5ocmVmPXRoaXMubGlua1NlcnZpY2UuZ2V0RGVzdGluYXRpb25IYXNoKGUpLHQub25jbGljaz1mdW5jdGlvbigpe3JldHVybiBlJiZyLmxpbmtTZXJ2aWNlLmdvVG9EZXN0aW5hdGlvbihlKSwhMX0sKGV8fCIiPT09ZSkmJm0odGhpcyxNLGopLmNhbGwodGhpcyl9fSx7a2V5OiJfYmluZE5hbWVkQWN0aW9uIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciByPXRoaXM7dC5ocmVmPXRoaXMubGlua1NlcnZpY2UuZ2V0QW5jaG9yVXJsKCIiKSx0Lm9uY2xpY2s9ZnVuY3Rpb24oKXtyZXR1cm4gci5saW5rU2VydmljZS5leGVjdXRlTmFtZWRBY3Rpb24oZSksITF9LG0odGhpcyxNLGopLmNhbGwodGhpcyl9fSx7a2V5OiJfYmluZEF0dGFjaG1lbnQiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpczt0LmhyZWY9dGhpcy5saW5rU2VydmljZS5nZXRBbmNob3JVcmwoIiIpLHQub25jbGljaz1mdW5jdGlvbigpe3ZhciB0O3JldHVybiBudWxsPT09KHQ9ci5kb3dubG9hZE1hbmFnZXIpfHx2b2lkIDA9PT10fHx0Lm9wZW5PckRvd25sb2FkRGF0YShyLmNvbnRhaW5lcixlLmNvbnRlbnQsZS5maWxlbmFtZSksITF9LG0odGhpcyxNLGopLmNhbGwodGhpcyl9fSx7a2V5OiJfYmluZEpTQWN0aW9uIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciByPXRoaXM7dC5ocmVmPXRoaXMubGlua1NlcnZpY2UuZ2V0QW5jaG9yVXJsKCIiKTtmb3IodmFyIG49bmV3IE1hcChbWyJBY3Rpb24iLCJvbmNsaWNrIl0sWyJNb3VzZSBVcCIsIm9ubW91c2V1cCJdLFsiTW91c2UgRG93biIsIm9ubW91c2Vkb3duIl1dKSxpPWZ1bmN0aW9uKCl7dmFyIGk9b1thXSxzPW4uZ2V0KGkpO2lmKCFzKXJldHVybiJjb250aW51ZSI7dFtzXT1mdW5jdGlvbigpe3ZhciB0O3JldHVybiBudWxsPT09KHQ9ci5saW5rU2VydmljZS5ldmVudEJ1cyl8fHZvaWQgMD09PXR8fHQuZGlzcGF0Y2goImRpc3BhdGNoZXZlbnRpbnNhbmRib3giLHtzb3VyY2U6cixkZXRhaWw6e2lkOmUuaWQsbmFtZTppfX0pLCExfX0sYT0wLG89T2JqZWN0LmtleXMoZS5hY3Rpb25zKTthPG8ubGVuZ3RoO2ErKylpKCk7dC5vbmNsaWNrfHwodC5vbmNsaWNrPWZ1bmN0aW9uKCl7cmV0dXJuITF9KSxtKHRoaXMsTSxqKS5jYWxsKHRoaXMpfX0se2tleToiX2JpbmRSZXNldEZvcm1BY3Rpb24iLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcyxpPXQub25jbGljaztpZihpfHwodC5ocmVmPXRoaXMubGlua1NlcnZpY2UuZ2V0QW5jaG9yVXJsKCIiKSksbSh0aGlzLE0saikuY2FsbCh0aGlzKSwhdGhpcy5fZmllbGRPYmplY3RzKXJldHVybigwLG4ud2FybikoJ19iaW5kUmVzZXRGb3JtQWN0aW9uIC0gInJlc2V0Rm9ybSIgYWN0aW9uIG5vdCBzdXBwb3J0ZWQsIGVuc3VyZSB0aGF0IHRoZSBgZmllbGRPYmplY3RzYCBwYXJhbWV0ZXIgaXMgcHJvdmlkZWQuJyksdm9pZChpfHwodC5vbmNsaWNrPWZ1bmN0aW9uKCl7cmV0dXJuITF9KSk7dC5vbmNsaWNrPWZ1bmN0aW9uKCl7bnVsbD09aXx8aSgpO3ZhciB0PWUuZmllbGRzLGE9ZS5yZWZzLG89ZS5pbmNsdWRlLHM9W107aWYoMCE9PXQubGVuZ3RofHwwIT09YS5sZW5ndGgpe3ZhciBsLHU9bmV3IFNldChhKSxoPWcodCk7dHJ5e2ZvcihoLnMoKTshKGw9aC5uKCkpLmRvbmU7KXt2YXIgZixkPWwudmFsdWUscD1nKHIuX2ZpZWxkT2JqZWN0c1tkXXx8W10pO3RyeXtmb3IocC5zKCk7IShmPXAubigpKS5kb25lOyl7dmFyIHY9Zi52YWx1ZS5pZDt1LmFkZCh2KX19Y2F0Y2godCl7cC5lKHQpfWZpbmFsbHl7cC5mKCl9fX1jYXRjaCh0KXtoLmUodCl9ZmluYWxseXtoLmYoKX1mb3IodmFyIHk9MCxtPU9iamVjdC52YWx1ZXMoci5fZmllbGRPYmplY3RzKTt5PG0ubGVuZ3RoO3krKyl7dmFyIGIsXz1nKG1beV0pO3RyeXtmb3IoXy5zKCk7IShiPV8ubigpKS5kb25lOyl7dmFyIHc9Yi52YWx1ZTt1Lmhhcyh3LmlkKT09PW8mJnMucHVzaCh3KX19Y2F0Y2godCl7Xy5lKHQpfWZpbmFsbHl7Xy5mKCl9fX1lbHNlIGZvcih2YXIgQT0wLGs9T2JqZWN0LnZhbHVlcyhyLl9maWVsZE9iamVjdHMpO0E8ay5sZW5ndGg7QSsrKXt2YXIgUz1rW0FdO3MucHVzaC5hcHBseShzLGMoUykpfWZvcih2YXIgeCxFPXIuYW5ub3RhdGlvblN0b3JhZ2UsUD1bXSxDPTAsTz1zO0M8Ty5sZW5ndGg7QysrKXt2YXIgRj1PW0NdLE09Ri5pZDtzd2l0Y2goUC5wdXNoKE0pLEYudHlwZSl7Y2FzZSJ0ZXh0Ijp2YXIgUj1GLmRlZmF1bHRWYWx1ZXx8IiI7RS5zZXRWYWx1ZShNLHt2YWx1ZTpSfSk7YnJlYWs7Y2FzZSJjaGVja2JveCI6Y2FzZSJyYWRpb2J1dHRvbiI6dmFyIEk9Ri5kZWZhdWx0VmFsdWU9PT1GLmV4cG9ydFZhbHVlcztFLnNldFZhbHVlKE0se3ZhbHVlOkl9KTticmVhaztjYXNlImNvbWJvYm94IjpjYXNlImxpc3Rib3giOnZhciBqPUYuZGVmYXVsdFZhbHVlfHwiIjtFLnNldFZhbHVlKE0se3ZhbHVlOmp9KTticmVhaztkZWZhdWx0OmNvbnRpbnVlfXZhciBMPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLWVsZW1lbnQtaWQ9IicuY29uY2F0KE0sJyJdJykpO0wmJihULmhhcyhMKT9MLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCJyZXNldGZvcm0iKSk6KDAsbi53YXJuKSgiX2JpbmRSZXNldEZvcm1BY3Rpb24gLSBlbGVtZW50IG5vdCBhbGxvd2VkOiAiLmNvbmNhdChNKSkpfXJldHVybiByLmVuYWJsZVNjcmlwdGluZyYmKG51bGw9PT0oeD1yLmxpbmtTZXJ2aWNlLmV2ZW50QnVzKXx8dm9pZCAwPT09eHx8eC5kaXNwYXRjaCgiZGlzcGF0Y2hldmVudGluc2FuZGJveCIse3NvdXJjZTpyLGRldGFpbDp7aWQ6ImFwcCIsaWRzOlAsbmFtZToiUmVzZXRGb3JtIn19KSksITF9fX1dKSxyfShGKTtmdW5jdGlvbiBqKCl7dGhpcy5jb250YWluZXIuc2V0QXR0cmlidXRlKCJkYXRhLWludGVybmFsLWxpbmsiLCIiKX1mdW5jdGlvbiBMKHQsZSl7dmFyIHI9dGhpczt0LmhyZWY9dGhpcy5saW5rU2VydmljZS5nZXRBbmNob3JVcmwoIiIpLHQub25jbGljaz1mdW5jdGlvbigpe3JldHVybiByLmxpbmtTZXJ2aWNlLmV4ZWN1dGVTZXRPQ0dTdGF0ZShlKSwhMX0sbSh0aGlzLE0saikuY2FsbCh0aGlzKX12YXIgRCxOLFUsVz1mdW5jdGlvbih0KXtoKHIsdCk7dmFyIGU9ZChyKTtmdW5jdGlvbiByKHQpe3ZhciBuLGksYTtrKHRoaXMscik7dmFyIG89ISEodC5kYXRhLmhhc1BvcHVwfHxudWxsIT09KG49dC5kYXRhLnRpdGxlT2JqKSYmdm9pZCAwIT09biYmbi5zdHJ8fG51bGwhPT0oaT10LmRhdGEuY29udGVudHNPYmopJiZ2b2lkIDAhPT1pJiZpLnN0cnx8bnVsbCE9PShhPXQuZGF0YS5yaWNoVGV4dCkmJnZvaWQgMCE9PWEmJmEuc3RyKTtyZXR1cm4gZS5jYWxsKHRoaXMsdCx7aXNSZW5kZXJhYmxlOm99KX1yZXR1cm4geChyLFt7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5jb250YWluZXIuY2xhc3NOYW1lPSJ0ZXh0QW5ub3RhdGlvbiI7dmFyIHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIik7cmV0dXJuIHQuc3JjPXRoaXMuaW1hZ2VSZXNvdXJjZXNQYXRoKyJhbm5vdGF0aW9uLSIrdGhpcy5kYXRhLm5hbWUudG9Mb3dlckNhc2UoKSsiLnN2ZyIsdC5hbHQ9Ilt7e3R5cGV9fSBBbm5vdGF0aW9uXSIsdC5kYXRhc2V0LmwxMG5JZD0idGV4dF9hbm5vdGF0aW9uX3R5cGUiLHQuZGF0YXNldC5sMTBuQXJncz1KU09OLnN0cmluZ2lmeSh7dHlwZTp0aGlzLmRhdGEubmFtZX0pLHRoaXMuZGF0YS5oYXNQb3B1cHx8dGhpcy5fY3JlYXRlUG9wdXAodCx0aGlzLmRhdGEpLHRoaXMuY29udGFpbmVyLmFwcGVuZCh0KSx0aGlzLmNvbnRhaW5lcn19XSkscn0oRiksRz1mdW5jdGlvbih0KXtoKHIsdCk7dmFyIGU9ZChyKTtmdW5jdGlvbiByKCl7cmV0dXJuIGsodGhpcyxyKSxlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4geChyLFt7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGF0YS5hbHRlcm5hdGl2ZVRleHQmJih0aGlzLmNvbnRhaW5lci50aXRsZT10aGlzLmRhdGEuYWx0ZXJuYXRpdmVUZXh0KSx0aGlzLmNvbnRhaW5lcn19LHtrZXk6Il9nZXRLZXlNb2RpZmllciIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9bi5GZWF0dXJlVGVzdC5wbGF0Zm9ybSxyPWUuaXNXaW4saT1lLmlzTWFjO3JldHVybiByJiZ0LmN0cmxLZXl8fGkmJnQubWV0YUtleX19LHtrZXk6Il9zZXRFdmVudExpc3RlbmVyIix2YWx1ZTpmdW5jdGlvbih0LGUscixuKXt2YXIgaT10aGlzO2UuaW5jbHVkZXMoIm1vdXNlIik/dC5hZGRFdmVudExpc3RlbmVyKGUsKGZ1bmN0aW9uKHQpe3ZhciBlO251bGw9PT0oZT1pLmxpbmtTZXJ2aWNlLmV2ZW50QnVzKXx8dm9pZCAwPT09ZXx8ZS5kaXNwYXRjaCgiZGlzcGF0Y2hldmVudGluc2FuZGJveCIse3NvdXJjZTppLGRldGFpbDp7aWQ6aS5kYXRhLmlkLG5hbWU6cix2YWx1ZTpuKHQpLHNoaWZ0OnQuc2hpZnRLZXksbW9kaWZpZXI6aS5fZ2V0S2V5TW9kaWZpZXIodCl9fSl9KSk6dC5hZGRFdmVudExpc3RlbmVyKGUsKGZ1bmN0aW9uKHQpe3ZhciBlO251bGw9PT0oZT1pLmxpbmtTZXJ2aWNlLmV2ZW50QnVzKXx8dm9pZCAwPT09ZXx8ZS5kaXNwYXRjaCgiZGlzcGF0Y2hldmVudGluc2FuZGJveCIse3NvdXJjZTppLGRldGFpbDp7aWQ6aS5kYXRhLmlkLG5hbWU6cix2YWx1ZTpuKHQpfX0pfSkpfX0se2tleToiX3NldEV2ZW50TGlzdGVuZXJzIix2YWx1ZTpmdW5jdGlvbih0LGUscil7dmFyIG4saT1nKGUpO3RyeXtmb3IoaS5zKCk7IShuPWkubigpKS5kb25lOyl7dmFyIGEsbz1iKG4udmFsdWUsMikscz1vWzBdLGw9b1sxXTsoIkFjdGlvbiI9PT1sfHxudWxsIT09KGE9dGhpcy5kYXRhLmFjdGlvbnMpJiZ2b2lkIDAhPT1hJiZhW2xdKSYmdGhpcy5fc2V0RXZlbnRMaXN0ZW5lcih0LHMsbCxyKX19Y2F0Y2godCl7aS5lKHQpfWZpbmFsbHl7aS5mKCl9fX0se2tleToiX3NldEJhY2tncm91bmRDb2xvciIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5kYXRhLmJhY2tncm91bmRDb2xvcnx8bnVsbDt0LnN0eWxlLmJhY2tncm91bmRDb2xvcj1udWxsPT09ZT8idHJhbnNwYXJlbnQiOm4uVXRpbC5tYWtlSGV4Q29sb3IoZVswXSxlWzFdLGVbMl0pfX0se2tleToiX3NldFRleHRTdHlsZSIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUscj10aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhLmZvbnRDb2xvcixpPXRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGEuZm9udFNpemV8fDksYT10LnN0eWxlLG89ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgucm91bmQoMTAqdCkvMTB9O2lmKHRoaXMuZGF0YS5tdWx0aUxpbmUpe3ZhciBzPU1hdGguYWJzKHRoaXMuZGF0YS5yZWN0WzNdLXRoaXMuZGF0YS5yZWN0WzFdLTIpLGw9cy8oTWF0aC5yb3VuZChzLyhuLkxJTkVfRkFDVE9SKmkpKXx8MSk7ZT1NYXRoLm1pbihpLG8obC9uLkxJTkVfRkFDVE9SKSl9ZWxzZXt2YXIgdT1NYXRoLmFicyh0aGlzLmRhdGEucmVjdFszXS10aGlzLmRhdGEucmVjdFsxXS0yKTtlPU1hdGgubWluKGksbyh1L24uTElORV9GQUNUT1IpKX1hLmZvbnRTaXplPSJjYWxjKCIuY29uY2F0KGUsInB4ICogdmFyKC0tc2NhbGUtZmFjdG9yKSkiKSxhLmNvbG9yPW4uVXRpbC5tYWtlSGV4Q29sb3IoclswXSxyWzFdLHJbMl0pLG51bGwhPT10aGlzLmRhdGEudGV4dEFsaWdubWVudCYmKGEudGV4dEFsaWduPVsibGVmdCIsImNlbnRlciIsInJpZ2h0Il1bdGhpcy5kYXRhLnRleHRBbGlnbm1lbnRdKX19LHtrZXk6Il9zZXRSZXF1aXJlZCIsdmFsdWU6ZnVuY3Rpb24odCxlKXtlP3Quc2V0QXR0cmlidXRlKCJyZXF1aXJlZCIsITApOnQucmVtb3ZlQXR0cmlidXRlKCJyZXF1aXJlZCIpLHQuc2V0QXR0cmlidXRlKCJhcmlhLXJlcXVpcmVkIixlKX19XSkscn0oRiksQj1mdW5jdGlvbih0KXtoKHIsdCk7dmFyIGU9ZChyKTtmdW5jdGlvbiByKHQpe2sodGhpcyxyKTt2YXIgbj10LnJlbmRlckZvcm1zfHwhdC5kYXRhLmhhc0FwcGVhcmFuY2UmJiEhdC5kYXRhLmZpZWxkVmFsdWU7cmV0dXJuIGUuY2FsbCh0aGlzLHQse2lzUmVuZGVyYWJsZTpufSl9cmV0dXJuIHgocixbe2tleToic2V0UHJvcGVydHlPblNpYmxpbmdzIix2YWx1ZTpmdW5jdGlvbih0LGUscixuKXt2YXIgaSxhPXRoaXMuYW5ub3RhdGlvblN0b3JhZ2Usbz1nKHRoaXMuX2dldEVsZW1lbnRzQnlOYW1lKHQubmFtZSx0LmlkKSk7dHJ5e2ZvcihvLnMoKTshKGk9by5uKCkpLmRvbmU7KXt2YXIgcz1pLnZhbHVlO3MuZG9tRWxlbWVudCYmKHMuZG9tRWxlbWVudFtlXT1yKSxhLnNldFZhbHVlKHMuaWQse1tuXTpyfSl9fWNhdGNoKHQpe28uZSh0KX1maW5hbGx5e28uZigpfX19LHtrZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy5hbm5vdGF0aW9uU3RvcmFnZSxyPXRoaXMuZGF0YS5pZDt0aGlzLmNvbnRhaW5lci5jbGFzc05hbWU9InRleHRXaWRnZXRBbm5vdGF0aW9uIjt2YXIgbj1udWxsO2lmKHRoaXMucmVuZGVyRm9ybXMpe3ZhciBpPWUuZ2V0VmFsdWUocix7dmFsdWU6dGhpcy5kYXRhLmZpZWxkVmFsdWV9KSxhPWkuZm9ybWF0dGVkVmFsdWV8fGkudmFsdWV8fCIiLG89ZS5nZXRWYWx1ZShyLHtjaGFyTGltaXQ6dGhpcy5kYXRhLm1heExlbn0pLmNoYXJMaW1pdDtvJiZhLmxlbmd0aD5vJiYoYT1hLnNsaWNlKDAsbykpO3ZhciBzPXt1c2VyVmFsdWU6YSxmb3JtYXR0ZWRWYWx1ZTpudWxsLGxhc3RDb21taXR0ZWRWYWx1ZTpudWxsLGNvbW1pdEtleToxfTt0aGlzLmRhdGEubXVsdGlMaW5lPygobj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZXh0YXJlYSIpKS50ZXh0Q29udGVudD1hLHRoaXMuZGF0YS5kb05vdFNjcm9sbCYmKG4uc3R5bGUub3ZlcmZsb3dZPSJoaWRkZW4iKSk6KChuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0IikpLnR5cGU9InRleHQiLG4uc2V0QXR0cmlidXRlKCJ2YWx1ZSIsYSksdGhpcy5kYXRhLmRvTm90U2Nyb2xsJiYobi5zdHlsZS5vdmVyZmxvd1g9ImhpZGRlbiIpKSxULmFkZChuKSxuLnNldEF0dHJpYnV0ZSgiZGF0YS1lbGVtZW50LWlkIixyKSxuLmRpc2FibGVkPXRoaXMuZGF0YS5yZWFkT25seSxuLm5hbWU9dGhpcy5kYXRhLmZpZWxkTmFtZSxuLnRhYkluZGV4PVAsdGhpcy5fc2V0UmVxdWlyZWQobix0aGlzLmRhdGEucmVxdWlyZWQpLG8mJihuLm1heExlbmd0aD1vKSxuLmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IiwoZnVuY3Rpb24oaSl7ZS5zZXRWYWx1ZShyLHt2YWx1ZTppLnRhcmdldC52YWx1ZX0pLHQuc2V0UHJvcGVydHlPblNpYmxpbmdzKG4sInZhbHVlIixpLnRhcmdldC52YWx1ZSwidmFsdWUiKX0pKSxuLmFkZEV2ZW50TGlzdGVuZXIoInJlc2V0Zm9ybSIsKGZ1bmN0aW9uKGUpe3ZhciByLGk9bnVsbCE9PShyPXQuZGF0YS5kZWZhdWx0RmllbGRWYWx1ZSkmJnZvaWQgMCE9PXI/cjoiIjtuLnZhbHVlPXMudXNlclZhbHVlPWkscy5mb3JtYXR0ZWRWYWx1ZT1udWxsfSkpO3ZhciBsPWZ1bmN0aW9uKHQpe3ZhciBlPXMuZm9ybWF0dGVkVmFsdWU7bnVsbCE9ZSYmKHQudGFyZ2V0LnZhbHVlPWUpLHQudGFyZ2V0LnNjcm9sbExlZnQ9MH07aWYodGhpcy5lbmFibGVTY3JpcHRpbmcmJnRoaXMuaGFzSlNBY3Rpb25zKXt2YXIgdTtuLmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIiwoZnVuY3Rpb24odCl7dmFyIGU9dC50YXJnZXQ7cy51c2VyVmFsdWUmJihlLnZhbHVlPXMudXNlclZhbHVlKSxzLmxhc3RDb21taXR0ZWRWYWx1ZT1lLnZhbHVlLHMuY29tbWl0S2V5PTF9KSksbi5hZGRFdmVudExpc3RlbmVyKCJ1cGRhdGVmcm9tc2FuZGJveCIsKGZ1bmN0aW9uKG4pe3ZhciBpPXt2YWx1ZTpmdW5jdGlvbih0KXt2YXIgbjtzLnVzZXJWYWx1ZT1udWxsIT09KG49dC5kZXRhaWwudmFsdWUpJiZ2b2lkIDAhPT1uP246IiIsZS5zZXRWYWx1ZShyLHt2YWx1ZTpzLnVzZXJWYWx1ZS50b1N0cmluZygpfSksdC50YXJnZXQudmFsdWU9cy51c2VyVmFsdWV9LGZvcm1hdHRlZFZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBuPXQuZGV0YWlsLmZvcm1hdHRlZFZhbHVlO3MuZm9ybWF0dGVkVmFsdWU9bixudWxsIT1uJiZ0LnRhcmdldCE9PWRvY3VtZW50LmFjdGl2ZUVsZW1lbnQmJih0LnRhcmdldC52YWx1ZT1uKSxlLnNldFZhbHVlKHIse2Zvcm1hdHRlZFZhbHVlOm59KX0sc2VsUmFuZ2U6ZnVuY3Rpb24odCl7dmFyIGU7KGU9dC50YXJnZXQpLnNldFNlbGVjdGlvblJhbmdlLmFwcGx5KGUsYyh0LmRldGFpbC5zZWxSYW5nZSkpfSxjaGFyTGltaXQ6ZnVuY3Rpb24obil7dmFyIGksYT1uLmRldGFpbC5jaGFyTGltaXQsbz1uLnRhcmdldDtpZigwIT09YSl7by5zZXRBdHRyaWJ1dGUoIm1heExlbmd0aCIsYSk7dmFyIGw9cy51c2VyVmFsdWU7IWx8fGwubGVuZ3RoPD1hfHwobD1sLnNsaWNlKDAsYSksby52YWx1ZT1zLnVzZXJWYWx1ZT1sLGUuc2V0VmFsdWUocix7dmFsdWU6bH0pLG51bGw9PT0oaT10LmxpbmtTZXJ2aWNlLmV2ZW50QnVzKXx8dm9pZCAwPT09aXx8aS5kaXNwYXRjaCgiZGlzcGF0Y2hldmVudGluc2FuZGJveCIse3NvdXJjZTp0LGRldGFpbDp7aWQ6cixuYW1lOiJLZXlzdHJva2UiLHZhbHVlOmwsd2lsbENvbW1pdDohMCxjb21taXRLZXk6MSxzZWxTdGFydDpvLnNlbGVjdGlvblN0YXJ0LHNlbEVuZDpvLnNlbGVjdGlvbkVuZH19KSl9ZWxzZSBvLnJlbW92ZUF0dHJpYnV0ZSgibWF4TGVuZ3RoIil9fTt0Ll9kaXNwYXRjaEV2ZW50RnJvbVNhbmRib3goaSxuKX0pKSxuLmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLChmdW5jdGlvbihlKXt2YXIgbjtzLmNvbW1pdEtleT0xO3ZhciBpPS0xO2lmKCJFc2NhcGUiPT09ZS5rZXk/aT0wOiJFbnRlciIhPT1lLmtleXx8dC5kYXRhLm11bHRpTGluZT8iVGFiIj09PWUua2V5JiYocy5jb21taXRLZXk9Myk6aT0yLC0xIT09aSl7dmFyIGE9ZS50YXJnZXQudmFsdWU7cy5sYXN0Q29tbWl0dGVkVmFsdWUhPT1hJiYocy5sYXN0Q29tbWl0dGVkVmFsdWU9YSxzLnVzZXJWYWx1ZT1hLG51bGw9PT0obj10LmxpbmtTZXJ2aWNlLmV2ZW50QnVzKXx8dm9pZCAwPT09bnx8bi5kaXNwYXRjaCgiZGlzcGF0Y2hldmVudGluc2FuZGJveCIse3NvdXJjZTp0LGRldGFpbDp7aWQ6cixuYW1lOiJLZXlzdHJva2UiLHZhbHVlOmEsd2lsbENvbW1pdDohMCxjb21taXRLZXk6aSxzZWxTdGFydDplLnRhcmdldC5zZWxlY3Rpb25TdGFydCxzZWxFbmQ6ZS50YXJnZXQuc2VsZWN0aW9uRW5kfX0pKX19KSk7dmFyIGg9bDtsPW51bGwsbi5hZGRFdmVudExpc3RlbmVyKCJibHVyIiwoZnVuY3Rpb24oZSl7aWYoZS5yZWxhdGVkVGFyZ2V0KXt2YXIgbixpPWUudGFyZ2V0LnZhbHVlO3MudXNlclZhbHVlPWkscy5sYXN0Q29tbWl0dGVkVmFsdWUhPT1pJiYobnVsbD09PShuPXQubGlua1NlcnZpY2UuZXZlbnRCdXMpfHx2b2lkIDA9PT1ufHxuLmRpc3BhdGNoKCJkaXNwYXRjaGV2ZW50aW5zYW5kYm94Iix7c291cmNlOnQsZGV0YWlsOntpZDpyLG5hbWU6IktleXN0cm9rZSIsdmFsdWU6aSx3aWxsQ29tbWl0OiEwLGNvbW1pdEtleTpzLmNvbW1pdEtleSxzZWxTdGFydDplLnRhcmdldC5zZWxlY3Rpb25TdGFydCxzZWxFbmQ6ZS50YXJnZXQuc2VsZWN0aW9uRW5kfX0pKSxoKGUpfX0pKSxudWxsIT09KHU9dGhpcy5kYXRhLmFjdGlvbnMpJiZ2b2lkIDAhPT11JiZ1LktleXN0cm9rZSYmbi5hZGRFdmVudExpc3RlbmVyKCJiZWZvcmVpbnB1dCIsKGZ1bmN0aW9uKGUpe3ZhciBuO3MubGFzdENvbW1pdHRlZFZhbHVlPW51bGw7dmFyIGk9ZS5kYXRhLGE9ZS50YXJnZXQsbz1hLnZhbHVlLGw9YS5zZWxlY3Rpb25TdGFydCx1PWEuc2VsZWN0aW9uRW5kLGM9bCxoPXU7c3dpdGNoKGUuaW5wdXRUeXBlKXtjYXNlImRlbGV0ZVdvcmRCYWNrd2FyZCI6dmFyIGY9by5zdWJzdHJpbmcoMCxsKS5tYXRjaCgvXHcqW15cd10qJC8pO2YmJihjLT1mWzBdLmxlbmd0aCk7YnJlYWs7Y2FzZSJkZWxldGVXb3JkRm9yd2FyZCI6dmFyIGQ9by5zdWJzdHJpbmcobCkubWF0Y2goL15bXlx3XSpcdyovKTtkJiYoaCs9ZFswXS5sZW5ndGgpO2JyZWFrO2Nhc2UiZGVsZXRlQ29udGVudEJhY2t3YXJkIjpsPT09dSYmKGMtPTEpO2JyZWFrO2Nhc2UiZGVsZXRlQ29udGVudEZvcndhcmQiOmw9PT11JiYoaCs9MSl9ZS5wcmV2ZW50RGVmYXVsdCgpLG51bGw9PT0obj10LmxpbmtTZXJ2aWNlLmV2ZW50QnVzKXx8dm9pZCAwPT09bnx8bi5kaXNwYXRjaCgiZGlzcGF0Y2hldmVudGluc2FuZGJveCIse3NvdXJjZTp0LGRldGFpbDp7aWQ6cixuYW1lOiJLZXlzdHJva2UiLHZhbHVlOm8sY2hhbmdlOml8fCIiLHdpbGxDb21taXQ6ITEsc2VsU3RhcnQ6YyxzZWxFbmQ6aH19KX0pKSx0aGlzLl9zZXRFdmVudExpc3RlbmVycyhuLFtbImZvY3VzIiwiRm9jdXMiXSxbImJsdXIiLCJCbHVyIl0sWyJtb3VzZWRvd24iLCJNb3VzZSBEb3duIl0sWyJtb3VzZWVudGVyIiwiTW91c2UgRW50ZXIiXSxbIm1vdXNlbGVhdmUiLCJNb3VzZSBFeGl0Il0sWyJtb3VzZXVwIiwiTW91c2UgVXAiXV0sKGZ1bmN0aW9uKHQpe3JldHVybiB0LnRhcmdldC52YWx1ZX0pKX1pZihsJiZuLmFkZEV2ZW50TGlzdGVuZXIoImJsdXIiLGwpLHRoaXMuZGF0YS5jb21iKXt2YXIgZj0odGhpcy5kYXRhLnJlY3RbMl0tdGhpcy5kYXRhLnJlY3RbMF0pL287bi5jbGFzc0xpc3QuYWRkKCJjb21iIiksbi5zdHlsZS5sZXR0ZXJTcGFjaW5nPSJjYWxjKCIuY29uY2F0KGYsInB4ICogdmFyKC0tc2NhbGUtZmFjdG9yKSAtIDFjaCkiKX19ZWxzZShuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKS50ZXh0Q29udGVudD10aGlzLmRhdGEuZmllbGRWYWx1ZSxuLnN0eWxlLnZlcnRpY2FsQWxpZ249Im1pZGRsZSIsbi5zdHlsZS5kaXNwbGF5PSJ0YWJsZS1jZWxsIjtyZXR1cm4gdGhpcy5fc2V0VGV4dFN0eWxlKG4pLHRoaXMuX3NldEJhY2tncm91bmRDb2xvcihuKSx0aGlzLl9zZXREZWZhdWx0UHJvcGVydGllc0Zyb21KUyhuKSx0aGlzLmNvbnRhaW5lci5hcHBlbmQobiksdGhpcy5jb250YWluZXJ9fV0pLHJ9KEcpLHE9ZnVuY3Rpb24odCl7aChyLHQpO3ZhciBlPWQocik7ZnVuY3Rpb24gcih0KXtyZXR1cm4gayh0aGlzLHIpLGUuY2FsbCh0aGlzLHQse2lzUmVuZGVyYWJsZTp0LnJlbmRlckZvcm1zfSl9cmV0dXJuIHgocixbe2tleToicmVuZGVyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLmFubm90YXRpb25TdG9yYWdlLHI9dGhpcy5kYXRhLG49ci5pZCxpPWUuZ2V0VmFsdWUobix7dmFsdWU6ci5leHBvcnRWYWx1ZT09PXIuZmllbGRWYWx1ZX0pLnZhbHVlOyJzdHJpbmciPT10eXBlb2YgaSYmKGk9Ik9mZiIhPT1pLGUuc2V0VmFsdWUobix7dmFsdWU6aX0pKSx0aGlzLmNvbnRhaW5lci5jbGFzc05hbWU9ImJ1dHRvbldpZGdldEFubm90YXRpb24gY2hlY2tCb3giO3ZhciBhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7cmV0dXJuIFQuYWRkKGEpLGEuc2V0QXR0cmlidXRlKCJkYXRhLWVsZW1lbnQtaWQiLG4pLGEuZGlzYWJsZWQ9ci5yZWFkT25seSx0aGlzLl9zZXRSZXF1aXJlZChhLHRoaXMuZGF0YS5yZXF1aXJlZCksYS50eXBlPSJjaGVja2JveCIsYS5uYW1lPXIuZmllbGROYW1lLGkmJmEuc2V0QXR0cmlidXRlKCJjaGVja2VkIiwhMCksYS5zZXRBdHRyaWJ1dGUoImV4cG9ydFZhbHVlIixyLmV4cG9ydFZhbHVlKSxhLnRhYkluZGV4PVAsYS5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLChmdW5jdGlvbihpKXt2YXIgYSxvPWkudGFyZ2V0LHM9by5uYW1lLGw9by5jaGVja2VkLHU9Zyh0Ll9nZXRFbGVtZW50c0J5TmFtZShzLG4pKTt0cnl7Zm9yKHUucygpOyEoYT11Lm4oKSkuZG9uZTspe3ZhciBjPWEudmFsdWUsaD1sJiZjLmV4cG9ydFZhbHVlPT09ci5leHBvcnRWYWx1ZTtjLmRvbUVsZW1lbnQmJihjLmRvbUVsZW1lbnQuY2hlY2tlZD1oKSxlLnNldFZhbHVlKGMuaWQse3ZhbHVlOmh9KX19Y2F0Y2godCl7dS5lKHQpfWZpbmFsbHl7dS5mKCl9ZS5zZXRWYWx1ZShuLHt2YWx1ZTpsfSl9KSksYS5hZGRFdmVudExpc3RlbmVyKCJyZXNldGZvcm0iLChmdW5jdGlvbih0KXt2YXIgZT1yLmRlZmF1bHRGaWVsZFZhbHVlfHwiT2ZmIjt0LnRhcmdldC5jaGVja2VkPWU9PT1yLmV4cG9ydFZhbHVlfSkpLHRoaXMuZW5hYmxlU2NyaXB0aW5nJiZ0aGlzLmhhc0pTQWN0aW9ucyYmKGEuYWRkRXZlbnRMaXN0ZW5lcigidXBkYXRlZnJvbXNhbmRib3giLChmdW5jdGlvbihyKXt2YXIgaT17dmFsdWU6ZnVuY3Rpb24odCl7dC50YXJnZXQuY2hlY2tlZD0iT2ZmIiE9PXQuZGV0YWlsLnZhbHVlLGUuc2V0VmFsdWUobix7dmFsdWU6dC50YXJnZXQuY2hlY2tlZH0pfX07dC5fZGlzcGF0Y2hFdmVudEZyb21TYW5kYm94KGkscil9KSksdGhpcy5fc2V0RXZlbnRMaXN0ZW5lcnMoYSxbWyJjaGFuZ2UiLCJWYWxpZGF0ZSJdLFsiY2hhbmdlIiwiQWN0aW9uIl0sWyJmb2N1cyIsIkZvY3VzIl0sWyJibHVyIiwiQmx1ciJdLFsibW91c2Vkb3duIiwiTW91c2UgRG93biJdLFsibW91c2VlbnRlciIsIk1vdXNlIEVudGVyIl0sWyJtb3VzZWxlYXZlIiwiTW91c2UgRXhpdCJdLFsibW91c2V1cCIsIk1vdXNlIFVwIl1dLChmdW5jdGlvbih0KXtyZXR1cm4gdC50YXJnZXQuY2hlY2tlZH0pKSksdGhpcy5fc2V0QmFja2dyb3VuZENvbG9yKGEpLHRoaXMuX3NldERlZmF1bHRQcm9wZXJ0aWVzRnJvbUpTKGEpLHRoaXMuY29udGFpbmVyLmFwcGVuZChhKSx0aGlzLmNvbnRhaW5lcn19XSkscn0oRyksSD1mdW5jdGlvbih0KXtoKHIsdCk7dmFyIGU9ZChyKTtmdW5jdGlvbiByKHQpe3JldHVybiBrKHRoaXMsciksZS5jYWxsKHRoaXMsdCx7aXNSZW5kZXJhYmxlOnQucmVuZGVyRm9ybXN9KX1yZXR1cm4geChyLFt7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0aGlzLmNvbnRhaW5lci5jbGFzc05hbWU9ImJ1dHRvbldpZGdldEFubm90YXRpb24gcmFkaW9CdXR0b24iO3ZhciBlPXRoaXMuYW5ub3RhdGlvblN0b3JhZ2Uscj10aGlzLmRhdGEsbj1yLmlkLGk9ZS5nZXRWYWx1ZShuLHt2YWx1ZTpyLmZpZWxkVmFsdWU9PT1yLmJ1dHRvblZhbHVlfSkudmFsdWU7InN0cmluZyI9PXR5cGVvZiBpJiYoaT1pIT09ci5idXR0b25WYWx1ZSxlLnNldFZhbHVlKG4se3ZhbHVlOml9KSk7dmFyIGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTtpZihULmFkZChhKSxhLnNldEF0dHJpYnV0ZSgiZGF0YS1lbGVtZW50LWlkIixuKSxhLmRpc2FibGVkPXIucmVhZE9ubHksdGhpcy5fc2V0UmVxdWlyZWQoYSx0aGlzLmRhdGEucmVxdWlyZWQpLGEudHlwZT0icmFkaW8iLGEubmFtZT1yLmZpZWxkTmFtZSxpJiZhLnNldEF0dHJpYnV0ZSgiY2hlY2tlZCIsITApLGEudGFiSW5kZXg9UCxhLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsKGZ1bmN0aW9uKHIpe3ZhciBpLGE9ci50YXJnZXQsbz1hLm5hbWUscz1hLmNoZWNrZWQsbD1nKHQuX2dldEVsZW1lbnRzQnlOYW1lKG8sbikpO3RyeXtmb3IobC5zKCk7IShpPWwubigpKS5kb25lOyl7dmFyIHU9aS52YWx1ZTtlLnNldFZhbHVlKHUuaWQse3ZhbHVlOiExfSl9fWNhdGNoKHQpe2wuZSh0KX1maW5hbGx5e2wuZigpfWUuc2V0VmFsdWUobix7dmFsdWU6c30pfSkpLGEuYWRkRXZlbnRMaXN0ZW5lcigicmVzZXRmb3JtIiwoZnVuY3Rpb24odCl7dmFyIGU9ci5kZWZhdWx0RmllbGRWYWx1ZTt0LnRhcmdldC5jaGVja2VkPW51bGwhPWUmJmU9PT1yLmJ1dHRvblZhbHVlfSkpLHRoaXMuZW5hYmxlU2NyaXB0aW5nJiZ0aGlzLmhhc0pTQWN0aW9ucyl7dmFyIG89ci5idXR0b25WYWx1ZTthLmFkZEV2ZW50TGlzdGVuZXIoInVwZGF0ZWZyb21zYW5kYm94IiwoZnVuY3Rpb24ocil7dmFyIGk9e3ZhbHVlOmZ1bmN0aW9uKHIpe3ZhciBpLGE9bz09PXIuZGV0YWlsLnZhbHVlLHM9Zyh0Ll9nZXRFbGVtZW50c0J5TmFtZShyLnRhcmdldC5uYW1lKSk7dHJ5e2ZvcihzLnMoKTshKGk9cy5uKCkpLmRvbmU7KXt2YXIgbD1pLnZhbHVlLHU9YSYmbC5pZD09PW47bC5kb21FbGVtZW50JiYobC5kb21FbGVtZW50LmNoZWNrZWQ9dSksZS5zZXRWYWx1ZShsLmlkLHt2YWx1ZTp1fSl9fWNhdGNoKHQpe3MuZSh0KX1maW5hbGx5e3MuZigpfX19O3QuX2Rpc3BhdGNoRXZlbnRGcm9tU2FuZGJveChpLHIpfSkpLHRoaXMuX3NldEV2ZW50TGlzdGVuZXJzKGEsW1siY2hhbmdlIiwiVmFsaWRhdGUiXSxbImNoYW5nZSIsIkFjdGlvbiJdLFsiZm9jdXMiLCJGb2N1cyJdLFsiYmx1ciIsIkJsdXIiXSxbIm1vdXNlZG93biIsIk1vdXNlIERvd24iXSxbIm1vdXNlZW50ZXIiLCJNb3VzZSBFbnRlciJdLFsibW91c2VsZWF2ZSIsIk1vdXNlIEV4aXQiXSxbIm1vdXNldXAiLCJNb3VzZSBVcCJdXSwoZnVuY3Rpb24odCl7cmV0dXJuIHQudGFyZ2V0LmNoZWNrZWR9KSl9cmV0dXJuIHRoaXMuX3NldEJhY2tncm91bmRDb2xvcihhKSx0aGlzLl9zZXREZWZhdWx0UHJvcGVydGllc0Zyb21KUyhhKSx0aGlzLmNvbnRhaW5lci5hcHBlbmQoYSksdGhpcy5jb250YWluZXJ9fV0pLHJ9KEcpLHo9ZnVuY3Rpb24odCl7aChyLHQpO3ZhciBlPWQocik7ZnVuY3Rpb24gcih0KXtyZXR1cm4gayh0aGlzLHIpLGUuY2FsbCh0aGlzLHQse2lnbm9yZUJvcmRlcjp0LmRhdGEuaGFzQXBwZWFyYW5jZX0pfXJldHVybiB4KHIsW3trZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dSh2KHIucHJvdG90eXBlKSwicmVuZGVyIix0aGlzKS5jYWxsKHRoaXMpO2UuY2xhc3NOYW1lPSJidXR0b25XaWRnZXRBbm5vdGF0aW9uIHB1c2hCdXR0b24iLHRoaXMuZGF0YS5hbHRlcm5hdGl2ZVRleHQmJihlLnRpdGxlPXRoaXMuZGF0YS5hbHRlcm5hdGl2ZVRleHQpO3ZhciBuPWUubGFzdENoaWxkO3JldHVybiB0aGlzLmVuYWJsZVNjcmlwdGluZyYmdGhpcy5oYXNKU0FjdGlvbnMmJm4mJih0aGlzLl9zZXREZWZhdWx0UHJvcGVydGllc0Zyb21KUyhuKSxuLmFkZEV2ZW50TGlzdGVuZXIoInVwZGF0ZWZyb21zYW5kYm94IiwoZnVuY3Rpb24oZSl7dC5fZGlzcGF0Y2hFdmVudEZyb21TYW5kYm94KHt9LGUpfSkpKSxlfX1dKSxyfShJKSxWPWZ1bmN0aW9uKHQpe2gocix0KTt2YXIgZT1kKHIpO2Z1bmN0aW9uIHIodCl7cmV0dXJuIGsodGhpcyxyKSxlLmNhbGwodGhpcyx0LHtpc1JlbmRlcmFibGU6dC5yZW5kZXJGb3Jtc30pfXJldHVybiB4KHIsW3trZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3RoaXMuY29udGFpbmVyLmNsYXNzTmFtZT0iY2hvaWNlV2lkZ2V0QW5ub3RhdGlvbiI7dmFyIGU9dGhpcy5hbm5vdGF0aW9uU3RvcmFnZSxyPXRoaXMuZGF0YS5pZCxuPWUuZ2V0VmFsdWUocix7dmFsdWU6dGhpcy5kYXRhLmZpZWxkVmFsdWV9KSxpPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIpO1QuYWRkKGkpLGkuc2V0QXR0cmlidXRlKCJkYXRhLWVsZW1lbnQtaWQiLHIpLGkuZGlzYWJsZWQ9dGhpcy5kYXRhLnJlYWRPbmx5LHRoaXMuX3NldFJlcXVpcmVkKGksdGhpcy5kYXRhLnJlcXVpcmVkKSxpLm5hbWU9dGhpcy5kYXRhLmZpZWxkTmFtZSxpLnRhYkluZGV4PVA7dmFyIGE9dGhpcy5kYXRhLmNvbWJvJiZ0aGlzLmRhdGEub3B0aW9ucy5sZW5ndGg+MDt0aGlzLmRhdGEuY29tYm98fChpLnNpemU9dGhpcy5kYXRhLm9wdGlvbnMubGVuZ3RoLHRoaXMuZGF0YS5tdWx0aVNlbGVjdCYmKGkubXVsdGlwbGU9ITApKSxpLmFkZEV2ZW50TGlzdGVuZXIoInJlc2V0Zm9ybSIsKGZ1bmN0aW9uKGUpe3ZhciByLG49dC5kYXRhLmRlZmF1bHRGaWVsZFZhbHVlLGE9ZyhpLm9wdGlvbnMpO3RyeXtmb3IoYS5zKCk7IShyPWEubigpKS5kb25lOyl7dmFyIG89ci52YWx1ZTtvLnNlbGVjdGVkPW8udmFsdWU9PT1ufX1jYXRjaCh0KXthLmUodCl9ZmluYWxseXthLmYoKX19KSk7dmFyIG8scz1nKHRoaXMuZGF0YS5vcHRpb25zKTt0cnl7Zm9yKHMucygpOyEobz1zLm4oKSkuZG9uZTspe3ZhciBsPW8udmFsdWUsdT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvcHRpb24iKTt1LnRleHRDb250ZW50PWwuZGlzcGxheVZhbHVlLHUudmFsdWU9bC5leHBvcnRWYWx1ZSxuLnZhbHVlLmluY2x1ZGVzKGwuZXhwb3J0VmFsdWUpJiYodS5zZXRBdHRyaWJ1dGUoInNlbGVjdGVkIiwhMCksYT0hMSksaS5hcHBlbmQodSl9fWNhdGNoKHQpe3MuZSh0KX1maW5hbGx5e3MuZigpfXZhciBjPW51bGw7aWYoYSl7dmFyIGg9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib3B0aW9uIik7aC52YWx1ZT0iICIsaC5zZXRBdHRyaWJ1dGUoImhpZGRlbiIsITApLGguc2V0QXR0cmlidXRlKCJzZWxlY3RlZCIsITApLGkucHJlcGVuZChoKSxjPWZ1bmN0aW9uKCl7aC5yZW1vdmUoKSxpLnJlbW92ZUV2ZW50TGlzdGVuZXIoImlucHV0IixjKSxjPW51bGx9LGkuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLGMpfXZhciBmPWZ1bmN0aW9uKHQpe3ZhciBlPXQ/InZhbHVlIjoidGV4dENvbnRlbnQiLHI9aS5vcHRpb25zO3JldHVybiBpLm11bHRpcGxlP0FycmF5LnByb3RvdHlwZS5maWx0ZXIuY2FsbChyLChmdW5jdGlvbih0KXtyZXR1cm4gdC5zZWxlY3RlZH0pKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0W2VdfSkpOi0xPT09ci5zZWxlY3RlZEluZGV4P251bGw6cltyLnNlbGVjdGVkSW5kZXhdW2VdfSxkPWYoITEpLHA9ZnVuY3Rpb24odCl7dmFyIGU9dC50YXJnZXQub3B0aW9ucztyZXR1cm4gQXJyYXkucHJvdG90eXBlLm1hcC5jYWxsKGUsKGZ1bmN0aW9uKHQpe3JldHVybntkaXNwbGF5VmFsdWU6dC50ZXh0Q29udGVudCxleHBvcnRWYWx1ZTp0LnZhbHVlfX0pKX07cmV0dXJuIHRoaXMuZW5hYmxlU2NyaXB0aW5nJiZ0aGlzLmhhc0pTQWN0aW9ucz8oaS5hZGRFdmVudExpc3RlbmVyKCJ1cGRhdGVmcm9tc2FuZGJveCIsKGZ1bmN0aW9uKG4pe3ZhciBhPXt2YWx1ZTpmdW5jdGlvbih0KXt2YXIgbjtudWxsPT09KG49Yyl8fHZvaWQgMD09PW58fG4oKTt2YXIgYSxvPXQuZGV0YWlsLnZhbHVlLHM9bmV3IFNldChBcnJheS5pc0FycmF5KG8pP286W29dKSxsPWcoaS5vcHRpb25zKTt0cnl7Zm9yKGwucygpOyEoYT1sLm4oKSkuZG9uZTspe3ZhciB1PWEudmFsdWU7dS5zZWxlY3RlZD1zLmhhcyh1LnZhbHVlKX19Y2F0Y2godCl7bC5lKHQpfWZpbmFsbHl7bC5mKCl9ZS5zZXRWYWx1ZShyLHt2YWx1ZTpmKCEwKX0pLGQ9ZighMSl9LG11bHRpcGxlU2VsZWN0aW9uOmZ1bmN0aW9uKHQpe2kubXVsdGlwbGU9ITB9LHJlbW92ZTpmdW5jdGlvbih0KXt2YXIgbj1pLm9wdGlvbnMsYT10LmRldGFpbC5yZW1vdmU7aWYoblthXS5zZWxlY3RlZD0hMSxpLnJlbW92ZShhKSxuLmxlbmd0aD4wKXt2YXIgbz1BcnJheS5wcm90b3R5cGUuZmluZEluZGV4LmNhbGwobiwoZnVuY3Rpb24odCl7cmV0dXJuIHQuc2VsZWN0ZWR9KSk7LTE9PT1vJiYoblswXS5zZWxlY3RlZD0hMCl9ZS5zZXRWYWx1ZShyLHt2YWx1ZTpmKCEwKSxpdGVtczpwKHQpfSksZD1mKCExKX0sY2xlYXI6ZnVuY3Rpb24odCl7Zm9yKDswIT09aS5sZW5ndGg7KWkucmVtb3ZlKDApO2Uuc2V0VmFsdWUocix7dmFsdWU6bnVsbCxpdGVtczpbXX0pLGQ9ZighMSl9LGluc2VydDpmdW5jdGlvbih0KXt2YXIgbj10LmRldGFpbC5pbnNlcnQsYT1uLmluZGV4LG89bi5kaXNwbGF5VmFsdWUscz1uLmV4cG9ydFZhbHVlLGw9aS5jaGlsZHJlblthXSx1PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpO3UudGV4dENvbnRlbnQ9byx1LnZhbHVlPXMsbD9sLmJlZm9yZSh1KTppLmFwcGVuZCh1KSxlLnNldFZhbHVlKHIse3ZhbHVlOmYoITApLGl0ZW1zOnAodCl9KSxkPWYoITEpfSxpdGVtczpmdW5jdGlvbih0KXtmb3IodmFyIG49dC5kZXRhaWwuaXRlbXM7MCE9PWkubGVuZ3RoOylpLnJlbW92ZSgwKTt2YXIgYSxvPWcobik7dHJ5e2ZvcihvLnMoKTshKGE9by5uKCkpLmRvbmU7KXt2YXIgcz1hLnZhbHVlLGw9cy5kaXNwbGF5VmFsdWUsdT1zLmV4cG9ydFZhbHVlLGM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib3B0aW9uIik7Yy50ZXh0Q29udGVudD1sLGMudmFsdWU9dSxpLmFwcGVuZChjKX19Y2F0Y2godCl7by5lKHQpfWZpbmFsbHl7by5mKCl9aS5vcHRpb25zLmxlbmd0aD4wJiYoaS5vcHRpb25zWzBdLnNlbGVjdGVkPSEwKSxlLnNldFZhbHVlKHIse3ZhbHVlOmYoITApLGl0ZW1zOnAodCl9KSxkPWYoITEpfSxpbmRpY2VzOmZ1bmN0aW9uKHQpe3ZhciBuLGk9bmV3IFNldCh0LmRldGFpbC5pbmRpY2VzKSxhPWcodC50YXJnZXQub3B0aW9ucyk7dHJ5e2ZvcihhLnMoKTshKG49YS5uKCkpLmRvbmU7KXt2YXIgbz1uLnZhbHVlO28uc2VsZWN0ZWQ9aS5oYXMoby5pbmRleCl9fWNhdGNoKHQpe2EuZSh0KX1maW5hbGx5e2EuZigpfWUuc2V0VmFsdWUocix7dmFsdWU6ZighMCl9KSxkPWYoITEpfSxlZGl0YWJsZTpmdW5jdGlvbih0KXt0LnRhcmdldC5kaXNhYmxlZD0hdC5kZXRhaWwuZWRpdGFibGV9fTt0Ll9kaXNwYXRjaEV2ZW50RnJvbVNhbmRib3goYSxuKX0pKSxpLmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IiwoZnVuY3Rpb24obil7dmFyIGksYT1mKCEwKTtlLnNldFZhbHVlKHIse3ZhbHVlOmF9KSxuLnByZXZlbnREZWZhdWx0KCksbnVsbD09PShpPXQubGlua1NlcnZpY2UuZXZlbnRCdXMpfHx2b2lkIDA9PT1pfHxpLmRpc3BhdGNoKCJkaXNwYXRjaGV2ZW50aW5zYW5kYm94Iix7c291cmNlOnQsZGV0YWlsOntpZDpyLG5hbWU6IktleXN0cm9rZSIsdmFsdWU6ZCxjaGFuZ2VFeDphLHdpbGxDb21taXQ6ITEsY29tbWl0S2V5OjEsa2V5RG93bjohMX19KX0pKSx0aGlzLl9zZXRFdmVudExpc3RlbmVycyhpLFtbImZvY3VzIiwiRm9jdXMiXSxbImJsdXIiLCJCbHVyIl0sWyJtb3VzZWRvd24iLCJNb3VzZSBEb3duIl0sWyJtb3VzZWVudGVyIiwiTW91c2UgRW50ZXIiXSxbIm1vdXNlbGVhdmUiLCJNb3VzZSBFeGl0Il0sWyJtb3VzZXVwIiwiTW91c2UgVXAiXSxbImlucHV0IiwiQWN0aW9uIl1dLChmdW5jdGlvbih0KXtyZXR1cm4gdC50YXJnZXQuY2hlY2tlZH0pKSk6aS5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsKGZ1bmN0aW9uKHQpe2Uuc2V0VmFsdWUocix7dmFsdWU6ZighMCl9KX0pKSx0aGlzLmRhdGEuY29tYm8mJnRoaXMuX3NldFRleHRTdHlsZShpKSx0aGlzLl9zZXRCYWNrZ3JvdW5kQ29sb3IoaSksdGhpcy5fc2V0RGVmYXVsdFByb3BlcnRpZXNGcm9tSlMoaSksdGhpcy5jb250YWluZXIuYXBwZW5kKGkpLHRoaXMuY29udGFpbmVyfX1dKSxyfShHKSxYPWZ1bmN0aW9uKHQpe2gocix0KTt2YXIgZT1kKHIpO2Z1bmN0aW9uIHIodCl7dmFyIG4saSxhO2sodGhpcyxyKTt2YXIgbz10LmRhdGEscz0hci5JR05PUkVfVFlQRVMuaGFzKG8ucGFyZW50VHlwZSkmJiEhKG51bGwhPT0obj1vLnRpdGxlT2JqKSYmdm9pZCAwIT09biYmbi5zdHJ8fG51bGwhPT0oaT1vLmNvbnRlbnRzT2JqKSYmdm9pZCAwIT09aSYmaS5zdHJ8fG51bGwhPT0oYT1vLnJpY2hUZXh0KSYmdm9pZCAwIT09YSYmYS5zdHIpO3JldHVybiBlLmNhbGwodGhpcyx0LHtpc1JlbmRlcmFibGU6c30pfXJldHVybiB4KHIsW3trZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmNvbnRhaW5lci5jbGFzc05hbWU9InBvcHVwQW5ub3RhdGlvbiI7dmFyIHQ9dGhpcy5sYXllci5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS1hbm5vdGF0aW9uLWlkPSInLmNvbmNhdCh0aGlzLmRhdGEucGFyZW50SWQsJyJdJykpO2lmKDA9PT10Lmxlbmd0aClyZXR1cm4gdGhpcy5jb250YWluZXI7dmFyIGU9bmV3IFkoe2NvbnRhaW5lcjp0aGlzLmNvbnRhaW5lcix0cmlnZ2VyOkFycmF5LmZyb20odCksY29sb3I6dGhpcy5kYXRhLmNvbG9yLHRpdGxlT2JqOnRoaXMuZGF0YS50aXRsZU9iaixtb2RpZmljYXRpb25EYXRlOnRoaXMuZGF0YS5tb2RpZmljYXRpb25EYXRlLGNvbnRlbnRzT2JqOnRoaXMuZGF0YS5jb250ZW50c09iaixyaWNoVGV4dDp0aGlzLmRhdGEucmljaFRleHR9KSxyPXRoaXMucGFnZSxpPW4uVXRpbC5ub3JtYWxpemVSZWN0KFt0aGlzLmRhdGEucGFyZW50UmVjdFswXSxyLnZpZXdbM10tdGhpcy5kYXRhLnBhcmVudFJlY3RbMV0rci52aWV3WzFdLHRoaXMuZGF0YS5wYXJlbnRSZWN0WzJdLHIudmlld1szXS10aGlzLmRhdGEucGFyZW50UmVjdFszXStyLnZpZXdbMV1dKSxhPWlbMF0rdGhpcy5kYXRhLnBhcmVudFJlY3RbMl0tdGhpcy5kYXRhLnBhcmVudFJlY3RbMF0sbz1pWzFdLHM9dGhpcy52aWV3cG9ydC5yYXdEaW1zLGw9cy5wYWdlV2lkdGgsdT1zLnBhZ2VIZWlnaHQsYz1zLnBhZ2VYLGg9cy5wYWdlWTtyZXR1cm4gdGhpcy5jb250YWluZXIuc3R5bGUubGVmdD0iIi5jb25jYXQoMTAwKihhLWMpL2wsIiUiKSx0aGlzLmNvbnRhaW5lci5zdHlsZS50b3A9IiIuY29uY2F0KDEwMCooby1oKS91LCIlIiksdGhpcy5jb250YWluZXIuYXBwZW5kKGUucmVuZGVyKCkpLHRoaXMuY29udGFpbmVyfX1dKSxyfShGKTtEPVgsTj0iSUdOT1JFX1RZUEVTIixVPW5ldyBTZXQoWyJMaW5lIiwiU3F1YXJlIiwiQ2lyY2xlIiwiUG9seUxpbmUiLCJQb2x5Z29uIiwiSW5rIl0pLChOPUUoTikpaW4gRD9PYmplY3QuZGVmaW5lUHJvcGVydHkoRCxOLHt2YWx1ZTpVLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6RFtOXT1VO3ZhciBZPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXtrKHRoaXMsdCksdGhpcy5jb250YWluZXI9ZS5jb250YWluZXIsdGhpcy50cmlnZ2VyPWUudHJpZ2dlcix0aGlzLmNvbG9yPWUuY29sb3IsdGhpcy50aXRsZU9iaj1lLnRpdGxlT2JqLHRoaXMubW9kaWZpY2F0aW9uRGF0ZT1lLm1vZGlmaWNhdGlvbkRhdGUsdGhpcy5jb250ZW50c09iaj1lLmNvbnRlbnRzT2JqLHRoaXMucmljaFRleHQ9ZS5yaWNoVGV4dCx0aGlzLmhpZGVXcmFwcGVyPWUuaGlkZVdyYXBwZXJ8fCExLHRoaXMucGlubmVkPSExfXJldHVybiB4KHQsW3trZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdCxlLHI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7ci5jbGFzc05hbWU9InBvcHVwV3JhcHBlciIsdGhpcy5oaWRlRWxlbWVudD10aGlzLmhpZGVXcmFwcGVyP3I6dGhpcy5jb250YWluZXIsdGhpcy5oaWRlRWxlbWVudC5oaWRkZW49ITA7dmFyIGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7YS5jbGFzc05hbWU9InBvcHVwIjt2YXIgbz10aGlzLmNvbG9yO2lmKG8pe3ZhciBsPS43KigyNTUtb1swXSkrb1swXSx1PS43KigyNTUtb1sxXSkrb1sxXSxjPS43KigyNTUtb1syXSkrb1syXTthLnN0eWxlLmJhY2tncm91bmRDb2xvcj1uLlV0aWwubWFrZUhleENvbG9yKDB8bCwwfHUsMHxjKX12YXIgaD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJoMSIpO2guZGlyPXRoaXMudGl0bGVPYmouZGlyLGgudGV4dENvbnRlbnQ9dGhpcy50aXRsZU9iai5zdHIsYS5hcHBlbmQoaCk7dmFyIGY9aS5QREZEYXRlU3RyaW5nLnRvRGF0ZU9iamVjdCh0aGlzLm1vZGlmaWNhdGlvbkRhdGUpO2lmKGYpe3ZhciBkPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTtkLmNsYXNzTmFtZT0icG9wdXBEYXRlIixkLnRleHRDb250ZW50PSJ7e2RhdGV9fSwge3t0aW1lfX0iLGQuZGF0YXNldC5sMTBuSWQ9ImFubm90YXRpb25fZGF0ZV9zdHJpbmciLGQuZGF0YXNldC5sMTBuQXJncz1KU09OLnN0cmluZ2lmeSh7ZGF0ZTpmLnRvTG9jYWxlRGF0ZVN0cmluZygpLHRpbWU6Zi50b0xvY2FsZVRpbWVTdHJpbmcoKX0pLGEuYXBwZW5kKGQpfWlmKG51bGw9PT0odD10aGlzLnJpY2hUZXh0KXx8dm9pZCAwPT09dHx8IXQuc3RyfHxudWxsIT09KGU9dGhpcy5jb250ZW50c09iaikmJnZvaWQgMCE9PWUmJmUuc3RyJiZ0aGlzLmNvbnRlbnRzT2JqLnN0ciE9PXRoaXMucmljaFRleHQuc3RyKXt2YXIgcD10aGlzLl9mb3JtYXRDb250ZW50cyh0aGlzLmNvbnRlbnRzT2JqKTthLmFwcGVuZChwKX1lbHNlIHMuWGZhTGF5ZXIucmVuZGVyKHt4ZmFIdG1sOnRoaXMucmljaFRleHQuaHRtbCxpbnRlbnQ6InJpY2hUZXh0IixkaXY6YX0pLGEubGFzdENoaWxkLmNsYXNzTmFtZT0icmljaFRleHQgcG9wdXBDb250ZW50IjtBcnJheS5pc0FycmF5KHRoaXMudHJpZ2dlcil8fCh0aGlzLnRyaWdnZXI9W3RoaXMudHJpZ2dlcl0pO3ZhciB2LHk9Zyh0aGlzLnRyaWdnZXIpO3RyeXtmb3IoeS5zKCk7ISh2PXkubigpKS5kb25lOyl7dmFyIG09di52YWx1ZTttLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIix0aGlzLl90b2dnbGUuYmluZCh0aGlzKSksbS5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW92ZXIiLHRoaXMuX3Nob3cuYmluZCh0aGlzLCExKSksbS5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW91dCIsdGhpcy5faGlkZS5iaW5kKHRoaXMsITEpKX19Y2F0Y2godCl7eS5lKHQpfWZpbmFsbHl7eS5mKCl9cmV0dXJuIGEuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLHRoaXMuX2hpZGUuYmluZCh0aGlzLCEwKSksci5hcHBlbmQoYSkscn19LHtrZXk6Il9mb3JtYXRDb250ZW50cyIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5zdHIscj10LmRpcixuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInAiKTtuLmNsYXNzTmFtZT0icG9wdXBDb250ZW50IixuLmRpcj1yO2Zvcih2YXIgaT1lLnNwbGl0KC8oPzpcclxuP3xcbikvKSxhPTAsbz1pLmxlbmd0aDthPG87KythKXt2YXIgcz1pW2FdO24uYXBwZW5kKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHMpKSxhPG8tMSYmbi5hcHBlbmQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnIiKSl9cmV0dXJuIG59fSx7a2V5OiJfdG9nZ2xlIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMucGlubmVkP3RoaXMuX2hpZGUoITApOnRoaXMuX3Nob3coITApfX0se2tleToiX3Nob3ciLHZhbHVlOmZ1bmN0aW9uKCl7YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0mJmFyZ3VtZW50c1swXSYmKHRoaXMucGlubmVkPSEwKSx0aGlzLmhpZGVFbGVtZW50LmhpZGRlbiYmKHRoaXMuaGlkZUVsZW1lbnQuaGlkZGVuPSExLHRoaXMuY29udGFpbmVyLnN0eWxlLnpJbmRleD1wYXJzZUludCh0aGlzLmNvbnRhaW5lci5zdHlsZS56SW5kZXgpKzFlMyl9fSx7a2V5OiJfaGlkZSIsdmFsdWU6ZnVuY3Rpb24oKXsoIShhcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSl8fGFyZ3VtZW50c1swXSkmJih0aGlzLnBpbm5lZD0hMSksdGhpcy5oaWRlRWxlbWVudC5oaWRkZW58fHRoaXMucGlubmVkfHwodGhpcy5oaWRlRWxlbWVudC5oaWRkZW49ITAsdGhpcy5jb250YWluZXIuc3R5bGUuekluZGV4PXBhcnNlSW50KHRoaXMuY29udGFpbmVyLnN0eWxlLnpJbmRleCktMWUzKX19XSksdH0oKSxLPWZ1bmN0aW9uKHQpe2gocix0KTt2YXIgZT1kKHIpO2Z1bmN0aW9uIHIodCl7dmFyIG4saSxhLG87ayh0aGlzLHIpO3ZhciBzPSEhKHQuZGF0YS5oYXNQb3B1cHx8bnVsbCE9PShuPXQuZGF0YS50aXRsZU9iaikmJnZvaWQgMCE9PW4mJm4uc3RyfHxudWxsIT09KGk9dC5kYXRhLmNvbnRlbnRzT2JqKSYmdm9pZCAwIT09aSYmaS5zdHJ8fG51bGwhPT0oYT10LmRhdGEucmljaFRleHQpJiZ2b2lkIDAhPT1hJiZhLnN0cik7cmV0dXJuKG89ZS5jYWxsKHRoaXMsdCx7aXNSZW5kZXJhYmxlOnMsaWdub3JlQm9yZGVyOiEwfSkpLnRleHRDb250ZW50PXQuZGF0YS50ZXh0Q29udGVudCxvfXJldHVybiB4KHIsW3trZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXtpZih0aGlzLmNvbnRhaW5lci5jbGFzc05hbWU9ImZyZWVUZXh0QW5ub3RhdGlvbiIsdGhpcy50ZXh0Q29udGVudCl7dmFyIHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7dC5jbGFzc05hbWU9ImFubm90YXRpb25UZXh0Q29udGVudCIsdC5zZXRBdHRyaWJ1dGUoInJvbGUiLCJjb21tZW50Iik7dmFyIGUscj1nKHRoaXMudGV4dENvbnRlbnQpO3RyeXtmb3Ioci5zKCk7IShlPXIubigpKS5kb25lOyl7dmFyIG49ZS52YWx1ZSxpPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTtpLnRleHRDb250ZW50PW4sdC5hcHBlbmQoaSl9fWNhdGNoKHQpe3IuZSh0KX1maW5hbGx5e3IuZigpfXRoaXMuY29udGFpbmVyLmFwcGVuZCh0KX1yZXR1cm4gdGhpcy5kYXRhLmhhc1BvcHVwfHx0aGlzLl9jcmVhdGVQb3B1cChudWxsLHRoaXMuZGF0YSksdGhpcy5jb250YWluZXJ9fV0pLHJ9KEYpLEo9ZnVuY3Rpb24odCl7aChyLHQpO3ZhciBlPWQocik7ZnVuY3Rpb24gcih0KXt2YXIgbixpLGE7ayh0aGlzLHIpO3ZhciBvPSEhKHQuZGF0YS5oYXNQb3B1cHx8bnVsbCE9PShuPXQuZGF0YS50aXRsZU9iaikmJnZvaWQgMCE9PW4mJm4uc3RyfHxudWxsIT09KGk9dC5kYXRhLmNvbnRlbnRzT2JqKSYmdm9pZCAwIT09aSYmaS5zdHJ8fG51bGwhPT0oYT10LmRhdGEucmljaFRleHQpJiZ2b2lkIDAhPT1hJiZhLnN0cik7cmV0dXJuIGUuY2FsbCh0aGlzLHQse2lzUmVuZGVyYWJsZTpvLGlnbm9yZUJvcmRlcjohMH0pfXJldHVybiB4KHIsW3trZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmNvbnRhaW5lci5jbGFzc05hbWU9ImxpbmVBbm5vdGF0aW9uIjt2YXIgdD10aGlzLmRhdGEsZT1DKHQucmVjdCkscj1lLndpZHRoLG49ZS5oZWlnaHQsaT10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlKHIsbiwhMCksYT10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudCgic3ZnOmxpbmUiKTtyZXR1cm4gYS5zZXRBdHRyaWJ1dGUoIngxIix0LnJlY3RbMl0tdC5saW5lQ29vcmRpbmF0ZXNbMF0pLGEuc2V0QXR0cmlidXRlKCJ5MSIsdC5yZWN0WzNdLXQubGluZUNvb3JkaW5hdGVzWzFdKSxhLnNldEF0dHJpYnV0ZSgieDIiLHQucmVjdFsyXS10LmxpbmVDb29yZGluYXRlc1syXSksYS5zZXRBdHRyaWJ1dGUoInkyIix0LnJlY3RbM10tdC5saW5lQ29vcmRpbmF0ZXNbM10pLGEuc2V0QXR0cmlidXRlKCJzdHJva2Utd2lkdGgiLHQuYm9yZGVyU3R5bGUud2lkdGh8fDEpLGEuc2V0QXR0cmlidXRlKCJzdHJva2UiLCJ0cmFuc3BhcmVudCIpLGEuc2V0QXR0cmlidXRlKCJmaWxsIiwidHJhbnNwYXJlbnQiKSxpLmFwcGVuZChhKSx0aGlzLmNvbnRhaW5lci5hcHBlbmQoaSksdGhpcy5fY3JlYXRlUG9wdXAoYSx0KSx0aGlzLmNvbnRhaW5lcn19XSkscn0oRiksUT1mdW5jdGlvbih0KXtoKHIsdCk7dmFyIGU9ZChyKTtmdW5jdGlvbiByKHQpe3ZhciBuLGksYTtrKHRoaXMscik7dmFyIG89ISEodC5kYXRhLmhhc1BvcHVwfHxudWxsIT09KG49dC5kYXRhLnRpdGxlT2JqKSYmdm9pZCAwIT09biYmbi5zdHJ8fG51bGwhPT0oaT10LmRhdGEuY29udGVudHNPYmopJiZ2b2lkIDAhPT1pJiZpLnN0cnx8bnVsbCE9PShhPXQuZGF0YS5yaWNoVGV4dCkmJnZvaWQgMCE9PWEmJmEuc3RyKTtyZXR1cm4gZS5jYWxsKHRoaXMsdCx7aXNSZW5kZXJhYmxlOm8saWdub3JlQm9yZGVyOiEwfSl9cmV0dXJuIHgocixbe2tleToicmVuZGVyIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuY29udGFpbmVyLmNsYXNzTmFtZT0ic3F1YXJlQW5ub3RhdGlvbiI7dmFyIHQ9dGhpcy5kYXRhLGU9Qyh0LnJlY3QpLHI9ZS53aWR0aCxuPWUuaGVpZ2h0LGk9dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZShyLG4sITApLGE9dC5ib3JkZXJTdHlsZS53aWR0aCxvPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KCJzdmc6cmVjdCIpO3JldHVybiBvLnNldEF0dHJpYnV0ZSgieCIsYS8yKSxvLnNldEF0dHJpYnV0ZSgieSIsYS8yKSxvLnNldEF0dHJpYnV0ZSgid2lkdGgiLHItYSksby5zZXRBdHRyaWJ1dGUoImhlaWdodCIsbi1hKSxvLnNldEF0dHJpYnV0ZSgic3Ryb2tlLXdpZHRoIixhfHwxKSxvLnNldEF0dHJpYnV0ZSgic3Ryb2tlIiwidHJhbnNwYXJlbnQiKSxvLnNldEF0dHJpYnV0ZSgiZmlsbCIsInRyYW5zcGFyZW50IiksaS5hcHBlbmQobyksdGhpcy5jb250YWluZXIuYXBwZW5kKGkpLHRoaXMuX2NyZWF0ZVBvcHVwKG8sdCksdGhpcy5jb250YWluZXJ9fV0pLHJ9KEYpLCQ9ZnVuY3Rpb24odCl7aChyLHQpO3ZhciBlPWQocik7ZnVuY3Rpb24gcih0KXt2YXIgbixpLGE7ayh0aGlzLHIpO3ZhciBvPSEhKHQuZGF0YS5oYXNQb3B1cHx8bnVsbCE9PShuPXQuZGF0YS50aXRsZU9iaikmJnZvaWQgMCE9PW4mJm4uc3RyfHxudWxsIT09KGk9dC5kYXRhLmNvbnRlbnRzT2JqKSYmdm9pZCAwIT09aSYmaS5zdHJ8fG51bGwhPT0oYT10LmRhdGEucmljaFRleHQpJiZ2b2lkIDAhPT1hJiZhLnN0cik7cmV0dXJuIGUuY2FsbCh0aGlzLHQse2lzUmVuZGVyYWJsZTpvLGlnbm9yZUJvcmRlcjohMH0pfXJldHVybiB4KHIsW3trZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmNvbnRhaW5lci5jbGFzc05hbWU9ImNpcmNsZUFubm90YXRpb24iO3ZhciB0PXRoaXMuZGF0YSxlPUModC5yZWN0KSxyPWUud2lkdGgsbj1lLmhlaWdodCxpPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGUocixuLCEwKSxhPXQuYm9yZGVyU3R5bGUud2lkdGgsbz10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudCgic3ZnOmVsbGlwc2UiKTtyZXR1cm4gby5zZXRBdHRyaWJ1dGUoImN4IixyLzIpLG8uc2V0QXR0cmlidXRlKCJjeSIsbi8yKSxvLnNldEF0dHJpYnV0ZSgicngiLHIvMi1hLzIpLG8uc2V0QXR0cmlidXRlKCJyeSIsbi8yLWEvMiksby5zZXRBdHRyaWJ1dGUoInN0cm9rZS13aWR0aCIsYXx8MSksby5zZXRBdHRyaWJ1dGUoInN0cm9rZSIsInRyYW5zcGFyZW50Iiksby5zZXRBdHRyaWJ1dGUoImZpbGwiLCJ0cmFuc3BhcmVudCIpLGkuYXBwZW5kKG8pLHRoaXMuY29udGFpbmVyLmFwcGVuZChpKSx0aGlzLl9jcmVhdGVQb3B1cChvLHQpLHRoaXMuY29udGFpbmVyfX1dKSxyfShGKSxaPWZ1bmN0aW9uKHQpe2gocix0KTt2YXIgZT1kKHIpO2Z1bmN0aW9uIHIodCl7dmFyIG4saSxhLG87ayh0aGlzLHIpO3ZhciBzPSEhKHQuZGF0YS5oYXNQb3B1cHx8bnVsbCE9PShuPXQuZGF0YS50aXRsZU9iaikmJnZvaWQgMCE9PW4mJm4uc3RyfHxudWxsIT09KGk9dC5kYXRhLmNvbnRlbnRzT2JqKSYmdm9pZCAwIT09aSYmaS5zdHJ8fG51bGwhPT0oYT10LmRhdGEucmljaFRleHQpJiZ2b2lkIDAhPT1hJiZhLnN0cik7cmV0dXJuKG89ZS5jYWxsKHRoaXMsdCx7aXNSZW5kZXJhYmxlOnMsaWdub3JlQm9yZGVyOiEwfSkpLmNvbnRhaW5lckNsYXNzTmFtZT0icG9seWxpbmVBbm5vdGF0aW9uIixvLnN2Z0VsZW1lbnROYW1lPSJzdmc6cG9seWxpbmUiLG99cmV0dXJuIHgocixbe2tleToicmVuZGVyIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuY29udGFpbmVyLmNsYXNzTmFtZT10aGlzLmNvbnRhaW5lckNsYXNzTmFtZTt2YXIgdCxlPXRoaXMuZGF0YSxyPUMoZS5yZWN0KSxuPXIud2lkdGgsaT1yLmhlaWdodCxhPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGUobixpLCEwKSxvPVtdLHM9ZyhlLnZlcnRpY2VzKTt0cnl7Zm9yKHMucygpOyEodD1zLm4oKSkuZG9uZTspe3ZhciBsPXQudmFsdWUsdT1sLngtZS5yZWN0WzBdLGM9ZS5yZWN0WzNdLWwueTtvLnB1c2godSsiLCIrYyl9fWNhdGNoKHQpe3MuZSh0KX1maW5hbGx5e3MuZigpfW89by5qb2luKCIgIik7dmFyIGg9dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQodGhpcy5zdmdFbGVtZW50TmFtZSk7cmV0dXJuIGguc2V0QXR0cmlidXRlKCJwb2ludHMiLG8pLGguc2V0QXR0cmlidXRlKCJzdHJva2Utd2lkdGgiLGUuYm9yZGVyU3R5bGUud2lkdGh8fDEpLGguc2V0QXR0cmlidXRlKCJzdHJva2UiLCJ0cmFuc3BhcmVudCIpLGguc2V0QXR0cmlidXRlKCJmaWxsIiwidHJhbnNwYXJlbnQiKSxhLmFwcGVuZChoKSx0aGlzLmNvbnRhaW5lci5hcHBlbmQoYSksdGhpcy5fY3JlYXRlUG9wdXAoaCxlKSx0aGlzLmNvbnRhaW5lcn19XSkscn0oRiksdHQ9ZnVuY3Rpb24odCl7aChyLHQpO3ZhciBlPWQocik7ZnVuY3Rpb24gcih0KXt2YXIgbjtyZXR1cm4gayh0aGlzLHIpLChuPWUuY2FsbCh0aGlzLHQpKS5jb250YWluZXJDbGFzc05hbWU9InBvbHlnb25Bbm5vdGF0aW9uIixuLnN2Z0VsZW1lbnROYW1lPSJzdmc6cG9seWdvbiIsbn1yZXR1cm4geChyKX0oWiksZXQ9ZnVuY3Rpb24odCl7aChyLHQpO3ZhciBlPWQocik7ZnVuY3Rpb24gcih0KXt2YXIgbixpLGE7ayh0aGlzLHIpO3ZhciBvPSEhKHQuZGF0YS5oYXNQb3B1cHx8bnVsbCE9PShuPXQuZGF0YS50aXRsZU9iaikmJnZvaWQgMCE9PW4mJm4uc3RyfHxudWxsIT09KGk9dC5kYXRhLmNvbnRlbnRzT2JqKSYmdm9pZCAwIT09aSYmaS5zdHJ8fG51bGwhPT0oYT10LmRhdGEucmljaFRleHQpJiZ2b2lkIDAhPT1hJiZhLnN0cik7cmV0dXJuIGUuY2FsbCh0aGlzLHQse2lzUmVuZGVyYWJsZTpvLGlnbm9yZUJvcmRlcjohMH0pfXJldHVybiB4KHIsW3trZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb250YWluZXIuY2xhc3NOYW1lPSJjYXJldEFubm90YXRpb24iLHRoaXMuZGF0YS5oYXNQb3B1cHx8dGhpcy5fY3JlYXRlUG9wdXAobnVsbCx0aGlzLmRhdGEpLHRoaXMuY29udGFpbmVyfX1dKSxyfShGKSxydD1mdW5jdGlvbih0KXtoKHIsdCk7dmFyIGU9ZChyKTtmdW5jdGlvbiByKHQpe3ZhciBuLGksYSxvO2sodGhpcyxyKTt2YXIgcz0hISh0LmRhdGEuaGFzUG9wdXB8fG51bGwhPT0obj10LmRhdGEudGl0bGVPYmopJiZ2b2lkIDAhPT1uJiZuLnN0cnx8bnVsbCE9PShpPXQuZGF0YS5jb250ZW50c09iaikmJnZvaWQgMCE9PWkmJmkuc3RyfHxudWxsIT09KGE9dC5kYXRhLnJpY2hUZXh0KSYmdm9pZCAwIT09YSYmYS5zdHIpO3JldHVybihvPWUuY2FsbCh0aGlzLHQse2lzUmVuZGVyYWJsZTpzLGlnbm9yZUJvcmRlcjohMH0pKS5jb250YWluZXJDbGFzc05hbWU9Imlua0Fubm90YXRpb24iLG8uc3ZnRWxlbWVudE5hbWU9InN2Zzpwb2x5bGluZSIsb31yZXR1cm4geChyLFt7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5jb250YWluZXIuY2xhc3NOYW1lPXRoaXMuY29udGFpbmVyQ2xhc3NOYW1lO3ZhciB0LGU9dGhpcy5kYXRhLHI9QyhlLnJlY3QpLG49ci53aWR0aCxpPXIuaGVpZ2h0LGE9dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZShuLGksITApLG89ZyhlLmlua0xpc3RzKTt0cnl7Zm9yKG8ucygpOyEodD1vLm4oKSkuZG9uZTspe3ZhciBzLGw9dC52YWx1ZSx1PVtdLGM9ZyhsKTt0cnl7Zm9yKGMucygpOyEocz1jLm4oKSkuZG9uZTspe3ZhciBoPXMudmFsdWUsZj1oLngtZS5yZWN0WzBdLGQ9ZS5yZWN0WzNdLWgueTt1LnB1c2goIiIuY29uY2F0KGYsIiwiKS5jb25jYXQoZCkpfX1jYXRjaCh0KXtjLmUodCl9ZmluYWxseXtjLmYoKX11PXUuam9pbigiICIpO3ZhciBwPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KHRoaXMuc3ZnRWxlbWVudE5hbWUpO3Auc2V0QXR0cmlidXRlKCJwb2ludHMiLHUpLHAuc2V0QXR0cmlidXRlKCJzdHJva2Utd2lkdGgiLGUuYm9yZGVyU3R5bGUud2lkdGh8fDEpLHAuc2V0QXR0cmlidXRlKCJzdHJva2UiLCJ0cmFuc3BhcmVudCIpLHAuc2V0QXR0cmlidXRlKCJmaWxsIiwidHJhbnNwYXJlbnQiKSx0aGlzLl9jcmVhdGVQb3B1cChwLGUpLGEuYXBwZW5kKHApfX1jYXRjaCh0KXtvLmUodCl9ZmluYWxseXtvLmYoKX1yZXR1cm4gdGhpcy5jb250YWluZXIuYXBwZW5kKGEpLHRoaXMuY29udGFpbmVyfX1dKSxyfShGKSxudD1mdW5jdGlvbih0KXtoKHIsdCk7dmFyIGU9ZChyKTtmdW5jdGlvbiByKHQpe3ZhciBuLGksYTtrKHRoaXMscik7dmFyIG89ISEodC5kYXRhLmhhc1BvcHVwfHxudWxsIT09KG49dC5kYXRhLnRpdGxlT2JqKSYmdm9pZCAwIT09biYmbi5zdHJ8fG51bGwhPT0oaT10LmRhdGEuY29udGVudHNPYmopJiZ2b2lkIDAhPT1pJiZpLnN0cnx8bnVsbCE9PShhPXQuZGF0YS5yaWNoVGV4dCkmJnZvaWQgMCE9PWEmJmEuc3RyKTtyZXR1cm4gZS5jYWxsKHRoaXMsdCx7aXNSZW5kZXJhYmxlOm8saWdub3JlQm9yZGVyOiEwLGNyZWF0ZVF1YWRyaWxhdGVyYWxzOiEwfSl9cmV0dXJuIHgocixbe2tleToicmVuZGVyIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRhdGEuaGFzUG9wdXB8fHRoaXMuX2NyZWF0ZVBvcHVwKG51bGwsdGhpcy5kYXRhKSx0aGlzLnF1YWRyaWxhdGVyYWxzP3RoaXMuX3JlbmRlclF1YWRyaWxhdGVyYWxzKCJoaWdobGlnaHRBbm5vdGF0aW9uIik6KHRoaXMuY29udGFpbmVyLmNsYXNzTmFtZT0iaGlnaGxpZ2h0QW5ub3RhdGlvbiIsdGhpcy5jb250YWluZXIpfX1dKSxyfShGKSxpdD1mdW5jdGlvbih0KXtoKHIsdCk7dmFyIGU9ZChyKTtmdW5jdGlvbiByKHQpe3ZhciBuLGksYTtrKHRoaXMscik7dmFyIG89ISEodC5kYXRhLmhhc1BvcHVwfHxudWxsIT09KG49dC5kYXRhLnRpdGxlT2JqKSYmdm9pZCAwIT09biYmbi5zdHJ8fG51bGwhPT0oaT10LmRhdGEuY29udGVudHNPYmopJiZ2b2lkIDAhPT1pJiZpLnN0cnx8bnVsbCE9PShhPXQuZGF0YS5yaWNoVGV4dCkmJnZvaWQgMCE9PWEmJmEuc3RyKTtyZXR1cm4gZS5jYWxsKHRoaXMsdCx7aXNSZW5kZXJhYmxlOm8saWdub3JlQm9yZGVyOiEwLGNyZWF0ZVF1YWRyaWxhdGVyYWxzOiEwfSl9cmV0dXJuIHgocixbe2tleToicmVuZGVyIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRhdGEuaGFzUG9wdXB8fHRoaXMuX2NyZWF0ZVBvcHVwKG51bGwsdGhpcy5kYXRhKSx0aGlzLnF1YWRyaWxhdGVyYWxzP3RoaXMuX3JlbmRlclF1YWRyaWxhdGVyYWxzKCJ1bmRlcmxpbmVBbm5vdGF0aW9uIik6KHRoaXMuY29udGFpbmVyLmNsYXNzTmFtZT0idW5kZXJsaW5lQW5ub3RhdGlvbiIsdGhpcy5jb250YWluZXIpfX1dKSxyfShGKSxhdD1mdW5jdGlvbih0KXtoKHIsdCk7dmFyIGU9ZChyKTtmdW5jdGlvbiByKHQpe3ZhciBuLGksYTtrKHRoaXMscik7dmFyIG89ISEodC5kYXRhLmhhc1BvcHVwfHxudWxsIT09KG49dC5kYXRhLnRpdGxlT2JqKSYmdm9pZCAwIT09biYmbi5zdHJ8fG51bGwhPT0oaT10LmRhdGEuY29udGVudHNPYmopJiZ2b2lkIDAhPT1pJiZpLnN0cnx8bnVsbCE9PShhPXQuZGF0YS5yaWNoVGV4dCkmJnZvaWQgMCE9PWEmJmEuc3RyKTtyZXR1cm4gZS5jYWxsKHRoaXMsdCx7aXNSZW5kZXJhYmxlOm8saWdub3JlQm9yZGVyOiEwLGNyZWF0ZVF1YWRyaWxhdGVyYWxzOiEwfSl9cmV0dXJuIHgocixbe2tleToicmVuZGVyIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRhdGEuaGFzUG9wdXB8fHRoaXMuX2NyZWF0ZVBvcHVwKG51bGwsdGhpcy5kYXRhKSx0aGlzLnF1YWRyaWxhdGVyYWxzP3RoaXMuX3JlbmRlclF1YWRyaWxhdGVyYWxzKCJzcXVpZ2dseUFubm90YXRpb24iKToodGhpcy5jb250YWluZXIuY2xhc3NOYW1lPSJzcXVpZ2dseUFubm90YXRpb24iLHRoaXMuY29udGFpbmVyKX19XSkscn0oRiksb3Q9ZnVuY3Rpb24odCl7aChyLHQpO3ZhciBlPWQocik7ZnVuY3Rpb24gcih0KXt2YXIgbixpLGE7ayh0aGlzLHIpO3ZhciBvPSEhKHQuZGF0YS5oYXNQb3B1cHx8bnVsbCE9PShuPXQuZGF0YS50aXRsZU9iaikmJnZvaWQgMCE9PW4mJm4uc3RyfHxudWxsIT09KGk9dC5kYXRhLmNvbnRlbnRzT2JqKSYmdm9pZCAwIT09aSYmaS5zdHJ8fG51bGwhPT0oYT10LmRhdGEucmljaFRleHQpJiZ2b2lkIDAhPT1hJiZhLnN0cik7cmV0dXJuIGUuY2FsbCh0aGlzLHQse2lzUmVuZGVyYWJsZTpvLGlnbm9yZUJvcmRlcjohMCxjcmVhdGVRdWFkcmlsYXRlcmFsczohMH0pfXJldHVybiB4KHIsW3trZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kYXRhLmhhc1BvcHVwfHx0aGlzLl9jcmVhdGVQb3B1cChudWxsLHRoaXMuZGF0YSksdGhpcy5xdWFkcmlsYXRlcmFscz90aGlzLl9yZW5kZXJRdWFkcmlsYXRlcmFscygic3RyaWtlb3V0QW5ub3RhdGlvbiIpOih0aGlzLmNvbnRhaW5lci5jbGFzc05hbWU9InN0cmlrZW91dEFubm90YXRpb24iLHRoaXMuY29udGFpbmVyKX19XSkscn0oRiksc3Q9ZnVuY3Rpb24odCl7aChyLHQpO3ZhciBlPWQocik7ZnVuY3Rpb24gcih0KXt2YXIgbixpLGE7ayh0aGlzLHIpO3ZhciBvPSEhKHQuZGF0YS5oYXNQb3B1cHx8bnVsbCE9PShuPXQuZGF0YS50aXRsZU9iaikmJnZvaWQgMCE9PW4mJm4uc3RyfHxudWxsIT09KGk9dC5kYXRhLmNvbnRlbnRzT2JqKSYmdm9pZCAwIT09aSYmaS5zdHJ8fG51bGwhPT0oYT10LmRhdGEucmljaFRleHQpJiZ2b2lkIDAhPT1hJiZhLnN0cik7cmV0dXJuIGUuY2FsbCh0aGlzLHQse2lzUmVuZGVyYWJsZTpvLGlnbm9yZUJvcmRlcjohMH0pfXJldHVybiB4KHIsW3trZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb250YWluZXIuY2xhc3NOYW1lPSJzdGFtcEFubm90YXRpb24iLHRoaXMuZGF0YS5oYXNQb3B1cHx8dGhpcy5fY3JlYXRlUG9wdXAobnVsbCx0aGlzLmRhdGEpLHRoaXMuY29udGFpbmVyfX1dKSxyfShGKSxsdD1mdW5jdGlvbih0KXtoKHIsdCk7dmFyIGU9ZChyKTtmdW5jdGlvbiByKHQpe3ZhciBuLGE7ayh0aGlzLHIpO3ZhciBvPShhPWUuY2FsbCh0aGlzLHQse2lzUmVuZGVyYWJsZTohMH0pKS5kYXRhLmZpbGUscz1vLmZpbGVuYW1lLGw9by5jb250ZW50O3JldHVybiBhLmZpbGVuYW1lPSgwLGkuZ2V0RmlsZW5hbWVGcm9tVXJsKShzLCEwKSxhLmNvbnRlbnQ9bCxudWxsPT09KG49YS5saW5rU2VydmljZS5ldmVudEJ1cyl8fHZvaWQgMD09PW58fG4uZGlzcGF0Y2goImZpbGVhdHRhY2htZW50YW5ub3RhdGlvbiIse3NvdXJjZTpwKGEpLGZpbGVuYW1lOnMsY29udGVudDpsfSksYX1yZXR1cm4geChyLFt7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQsZSxyO3JldHVybiB0aGlzLmNvbnRhaW5lci5jbGFzc05hbWU9ImZpbGVBdHRhY2htZW50QW5ub3RhdGlvbiIsdGhpcy5kYXRhLmhhc0FwcGVhcmFuY2U/cj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKToocj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKSkuc3JjPSIiLmNvbmNhdCh0aGlzLmltYWdlUmVzb3VyY2VzUGF0aCwiYW5ub3RhdGlvbi0iKS5jb25jYXQoL3BhcGVyY2xpcC9pLnRlc3QodGhpcy5kYXRhLm5hbWUpPyJwYXBlcmNsaXAiOiJwdXNocGluIiwiLnN2ZyIpLHIuY2xhc3NOYW1lPSJwb3B1cFRyaWdnZXJBcmVhIixyLmFkZEV2ZW50TGlzdGVuZXIoImRibGNsaWNrIix0aGlzLl9kb3dubG9hZC5iaW5kKHRoaXMpKSwhdGhpcy5kYXRhLmhhc1BvcHVwJiYobnVsbCE9PSh0PXRoaXMuZGF0YS50aXRsZU9iaikmJnZvaWQgMCE9PXQmJnQuc3RyfHxudWxsIT09KGU9dGhpcy5kYXRhLmNvbnRlbnRzT2JqKSYmdm9pZCAwIT09ZSYmZS5zdHJ8fHRoaXMuZGF0YS5yaWNoVGV4dCkmJnRoaXMuX2NyZWF0ZVBvcHVwKHIsdGhpcy5kYXRhKSx0aGlzLmNvbnRhaW5lci5hcHBlbmQociksdGhpcy5jb250YWluZXJ9fSx7a2V5OiJfZG93bmxvYWQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ7bnVsbD09PSh0PXRoaXMuZG93bmxvYWRNYW5hZ2VyKXx8dm9pZCAwPT09dHx8dC5vcGVuT3JEb3dubG9hZERhdGEodGhpcy5jb250YWluZXIsdGhpcy5jb250ZW50LHRoaXMuZmlsZW5hbWUpfX1dKSxyfShGKSx1dD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXtrKHRoaXMsdCl9cmV0dXJuIHgodCxudWxsLFt7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciByPWUuYW5ub3RhdGlvbnMsbz1lLmRpdixzPWUudmlld3BvcnQsdT1lLmFjY2Vzc2liaWxpdHlNYW5hZ2VyOygwLGkuc2V0TGF5ZXJEaW1lbnNpb25zKShvLHMpO3ZhciBjLGg9e2RhdGE6bnVsbCxsYXllcjpvLHBhZ2U6ZS5wYWdlLHZpZXdwb3J0OnMsbGlua1NlcnZpY2U6ZS5saW5rU2VydmljZSxkb3dubG9hZE1hbmFnZXI6ZS5kb3dubG9hZE1hbmFnZXIsaW1hZ2VSZXNvdXJjZXNQYXRoOmUuaW1hZ2VSZXNvdXJjZXNQYXRofHwiIixyZW5kZXJGb3JtczohMSE9PWUucmVuZGVyRm9ybXMsc3ZnRmFjdG9yeTpuZXcgaS5ET01TVkdGYWN0b3J5LGFubm90YXRpb25TdG9yYWdlOmUuYW5ub3RhdGlvblN0b3JhZ2V8fG5ldyBhLkFubm90YXRpb25TdG9yYWdlLGVuYWJsZVNjcmlwdGluZzohMD09PWUuZW5hYmxlU2NyaXB0aW5nLGhhc0pTQWN0aW9uczplLmhhc0pTQWN0aW9ucyxmaWVsZE9iamVjdHM6ZS5maWVsZE9iamVjdHN9LGY9MCxkPWcocik7dHJ5e2ZvcihkLnMoKTshKGM9ZC5uKCkpLmRvbmU7KXt2YXIgcD1jLnZhbHVlO2lmKHAuYW5ub3RhdGlvblR5cGUhPT1uLkFubm90YXRpb25UeXBlLlBPUFVQKXt2YXIgdj1DKHAucmVjdCkseT12LndpZHRoLG09di5oZWlnaHQ7aWYoeTw9MHx8bTw9MCljb250aW51ZX1oLmRhdGE9cDt2YXIgYj1PLmNyZWF0ZShoKTtpZihiLmlzUmVuZGVyYWJsZSl7dmFyIF89Yi5yZW5kZXIoKTtpZihwLmhpZGRlbiYmKF8uc3R5bGUudmlzaWJpbGl0eT0iaGlkZGVuIiksQXJyYXkuaXNBcnJheShfKSl7dmFyIHcsQT1nKF8pO3RyeXtmb3IoQS5zKCk7ISh3PUEubigpKS5kb25lOyl7dmFyIGs9dy52YWx1ZTtrLnN0eWxlLnpJbmRleD1mKyssbCh0LHQsY3QpLmNhbGwodCxrLHAuaWQsbyx1KX19Y2F0Y2godCl7QS5lKHQpfWZpbmFsbHl7QS5mKCl9fWVsc2UgXy5zdHlsZS56SW5kZXg9ZisrLGIgaW5zdGFuY2VvZiBYP28ucHJlcGVuZChfKTpsKHQsdCxjdCkuY2FsbCh0LF8scC5pZCxvLHUpfX19Y2F0Y2godCl7ZC5lKHQpfWZpbmFsbHl7ZC5mKCl9bCh0aGlzLHQsaHQpLmNhbGwodGhpcyxvLGUuYW5ub3RhdGlvbkNhbnZhc01hcCl9fSx7a2V5OiJ1cGRhdGUiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciByPWUuYW5ub3RhdGlvbkNhbnZhc01hcCxuPWUuZGl2LGE9ZS52aWV3cG9ydDsoMCxpLnNldExheWVyRGltZW5zaW9ucykobix7cm90YXRpb246YS5yb3RhdGlvbn0pLGwodGhpcyx0LGh0KS5jYWxsKHRoaXMsbixyKSxuLmhpZGRlbj0hMX19XSksdH0oKTtmdW5jdGlvbiBjdCh0LGUscixuKXt2YXIgYT10LmZpcnN0Q2hpbGR8fHQ7YS5pZD0iIi5jb25jYXQoaS5Bbm5vdGF0aW9uUHJlZml4KS5jb25jYXQoZSksci5hcHBlbmQodCksbnVsbD09bnx8bi5tb3ZlRWxlbWVudEluRE9NKHIsdCxhLCExKX1mdW5jdGlvbiBodCh0LGUpe2lmKGUpe3ZhciByLG49ZyhlKTt0cnl7Zm9yKG4ucygpOyEocj1uLm4oKSkuZG9uZTspe3ZhciBpPWIoci52YWx1ZSwyKSxhPWlbMF0sbz1pWzFdLHM9dC5xdWVyeVNlbGVjdG9yKCdbZGF0YS1hbm5vdGF0aW9uLWlkPSInLmNvbmNhdChhLCciXScpKTtpZihzKXt2YXIgbD1zLmZpcnN0Q2hpbGQ7bD8iQ0FOVkFTIj09PWwubm9kZU5hbWU/bC5yZXBsYWNlV2l0aChvKTpsLmJlZm9yZShvKTpzLmFwcGVuZChvKX19fWNhdGNoKHQpe24uZSh0KX1maW5hbGx5e24uZigpfWUuY2xlYXIoKX19ZS5Bbm5vdGF0aW9uTGF5ZXI9dXR9LCh0LGUpPT57ZnVuY3Rpb24gcih0KXtyZXR1cm4gcj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgdH0scih0KX1mdW5jdGlvbiBuKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe2lmKEFycmF5LmlzQXJyYXkodCkpcmV0dXJuIHR9KHQpfHxmdW5jdGlvbih0LGUpe3ZhciByPW51bGw9PXQ/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmdFtTeW1ib2wuaXRlcmF0b3JdfHx0WyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9cil7dmFyIG4saSxhLG8scz1bXSxsPSEwLHU9ITE7dHJ5e2lmKGE9KHI9ci5jYWxsKHQpKS5uZXh0LDA9PT1lKXtpZihPYmplY3QocikhPT1yKXJldHVybjtsPSExfWVsc2UgZm9yKDshKGw9KG49YS5jYWxsKHIpKS5kb25lKSYmKHMucHVzaChuLnZhbHVlKSxzLmxlbmd0aCE9PWUpO2w9ITApO31jYXRjaCh0KXt1PSEwLGk9dH1maW5hbGx5e3RyeXtpZighbCYmbnVsbCE9ci5yZXR1cm4mJihvPXIucmV0dXJuKCksT2JqZWN0KG8pIT09bykpcmV0dXJufWZpbmFsbHl7aWYodSl0aHJvdyBpfX1yZXR1cm4gc319KHQsZSl8fGZ1bmN0aW9uKHQsZSl7aWYodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiBpKHQsZSk7dmFyIHI9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpLnNsaWNlKDgsLTEpO3JldHVybiJPYmplY3QiPT09ciYmdC5jb25zdHJ1Y3RvciYmKHI9dC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PXJ8fCJTZXQiPT09cj9BcnJheS5mcm9tKHQpOiJBcmd1bWVudHMiPT09cnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3Qocik/aSh0LGUpOnZvaWQgMH19KHQsZSl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiBpKHQsZSl7KG51bGw9PWV8fGU+dC5sZW5ndGgpJiYoZT10Lmxlbmd0aCk7Zm9yKHZhciByPTAsbj1uZXcgQXJyYXkoZSk7cjxlO3IrKyluW3JdPXRbcl07cmV0dXJuIG59ZnVuY3Rpb24gYSh0LGUpe2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgaT1lW25dO2kuZW51bWVyYWJsZT1pLmVudW1lcmFibGV8fCExLGkuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBpJiYoaS53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsKHZvaWQgMCxhPWZ1bmN0aW9uKHQsZSl7aWYoIm9iamVjdCIhPT1yKHQpfHxudWxsPT09dClyZXR1cm4gdDt2YXIgbj10W1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09bil7dmFyIGk9bi5jYWxsKHQsInN0cmluZyIpO2lmKCJvYmplY3QiIT09cihpKSlyZXR1cm4gaTt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybiBTdHJpbmcodCl9KGkua2V5KSwic3ltYm9sIj09PXIoYSk/YTpTdHJpbmcoYSkpLGkpfXZhciBhfWZ1bmN0aW9uIG8odCl7cmV0dXJuIE1hdGguZmxvb3IoMjU1Kk1hdGgubWF4KDAsTWF0aC5taW4oMSx0KSkpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCIwIil9T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGUuQ29sb3JDb252ZXJ0ZXJzPXZvaWQgMDt2YXIgcz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXshZnVuY3Rpb24odCxlKXtpZighKHQgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyx0KX12YXIgZSxyO3JldHVybiBlPXQscj1be2tleToiQ01ZS19HIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1uKHQsNCkscj1lWzBdLGk9ZVsxXSxhPWVbMl0sbz1lWzNdO3JldHVyblsiRyIsMS1NYXRoLm1pbigxLC4zKnIrLjU5KmErLjExKmkrbyldfX0se2tleToiR19DTVlLIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm5bIkNNWUsiLDAsMCwwLDEtbih0LDEpWzBdXX19LHtrZXk6IkdfUkdCIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1uKHQsMSlbMF07cmV0dXJuWyJSR0IiLGUsZSxlXX19LHtrZXk6IkdfSFRNTCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9byhuKHQsMSlbMF0pO3JldHVybiIjIi5jb25jYXQoZSkuY29uY2F0KGUpLmNvbmNhdChlKX19LHtrZXk6IlJHQl9HIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1uKHQsMyk7cmV0dXJuWyJHIiwuMyplWzBdKy41OSplWzFdKy4xMSplWzJdXX19LHtrZXk6IlJHQl9IVE1MIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1uKHQsMykscj1lWzBdLGk9ZVsxXSxhPWVbMl0scz1vKHIpLGw9byhpKSx1PW8oYSk7cmV0dXJuIiMiLmNvbmNhdChzKS5jb25jYXQobCkuY29uY2F0KHUpfX0se2tleToiVF9IVE1MIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiIjMDAwMDAwMDAifX0se2tleToiQ01ZS19SR0IiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPW4odCw0KSxyPWVbMF0saT1lWzFdLGE9ZVsyXSxvPWVbM107cmV0dXJuWyJSR0IiLDEtTWF0aC5taW4oMSxyK28pLDEtTWF0aC5taW4oMSxhK28pLDEtTWF0aC5taW4oMSxpK28pXX19LHtrZXk6IkNNWUtfSFRNTCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5DTVlLX1JHQih0KS5zbGljZSgxKTtyZXR1cm4gdGhpcy5SR0JfSFRNTChlKX19LHtrZXk6IlJHQl9DTVlLIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1uKHQsMykscj0xLWVbMF0saT0xLWVbMV0sYT0xLWVbMl07cmV0dXJuWyJDTVlLIixyLGksYSxNYXRoLm1pbihyLGksYSldfX1dLG51bGwmJmEoZS5wcm90b3R5cGUsbnVsbCksciYmYShlLHIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLHR9KCk7ZS5Db2xvckNvbnZlcnRlcnM9c30sKHQsZSxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxlLlhmYUxheWVyPXZvaWQgMDt2YXIgbj1yKDE0OSk7ZnVuY3Rpb24gaSh0KXtyZXR1cm4gaT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgdH0saSh0KX1mdW5jdGlvbiBhKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe2lmKEFycmF5LmlzQXJyYXkodCkpcmV0dXJuIHR9KHQpfHxmdW5jdGlvbih0LGUpe3ZhciByPW51bGw9PXQ/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmdFtTeW1ib2wuaXRlcmF0b3JdfHx0WyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9cil7dmFyIG4saSxhLG8scz1bXSxsPSEwLHU9ITE7dHJ5e2lmKGE9KHI9ci5jYWxsKHQpKS5uZXh0LDA9PT1lKXtpZihPYmplY3QocikhPT1yKXJldHVybjtsPSExfWVsc2UgZm9yKDshKGw9KG49YS5jYWxsKHIpKS5kb25lKSYmKHMucHVzaChuLnZhbHVlKSxzLmxlbmd0aCE9PWUpO2w9ITApO31jYXRjaCh0KXt1PSEwLGk9dH1maW5hbGx5e3RyeXtpZighbCYmbnVsbCE9ci5yZXR1cm4mJihvPXIucmV0dXJuKCksT2JqZWN0KG8pIT09bykpcmV0dXJufWZpbmFsbHl7aWYodSl0aHJvdyBpfX1yZXR1cm4gc319KHQsZSl8fHModCxlKXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIG8odCxlKXt2YXIgcj0idW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmdFtTeW1ib2wuaXRlcmF0b3JdfHx0WyJAQGl0ZXJhdG9yIl07aWYoIXIpe2lmKEFycmF5LmlzQXJyYXkodCl8fChyPXModCkpfHxlJiZ0JiYibnVtYmVyIj09dHlwZW9mIHQubGVuZ3RoKXtyJiYodD1yKTt2YXIgbj0wLGk9ZnVuY3Rpb24oKXt9O3JldHVybntzOmksbjpmdW5jdGlvbigpe3JldHVybiBuPj10Lmxlbmd0aD97ZG9uZTohMH06e2RvbmU6ITEsdmFsdWU6dFtuKytdfX0sZTpmdW5jdGlvbih0KXt0aHJvdyB0fSxmOml9fXRocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBpdGVyYXRlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX12YXIgYSxvPSEwLGw9ITE7cmV0dXJue3M6ZnVuY3Rpb24oKXtyPXIuY2FsbCh0KX0sbjpmdW5jdGlvbigpe3ZhciB0PXIubmV4dCgpO3JldHVybiBvPXQuZG9uZSx0fSxlOmZ1bmN0aW9uKHQpe2w9ITAsYT10fSxmOmZ1bmN0aW9uKCl7dHJ5e298fG51bGw9PXIucmV0dXJufHxyLnJldHVybigpfWZpbmFsbHl7aWYobCl0aHJvdyBhfX19fWZ1bmN0aW9uIHModCxlKXtpZih0KXtpZigic3RyaW5nIj09dHlwZW9mIHQpcmV0dXJuIGwodCxlKTt2YXIgcj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCkuc2xpY2UoOCwtMSk7cmV0dXJuIk9iamVjdCI9PT1yJiZ0LmNvbnN0cnVjdG9yJiYocj10LmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09cnx8IlNldCI9PT1yP0FycmF5LmZyb20odCk6IkFyZ3VtZW50cyI9PT1yfHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChyKT9sKHQsZSk6dm9pZCAwfX1mdW5jdGlvbiBsKHQsZSl7KG51bGw9PWV8fGU+dC5sZW5ndGgpJiYoZT10Lmxlbmd0aCk7Zm9yKHZhciByPTAsbj1uZXcgQXJyYXkoZSk7cjxlO3IrKyluW3JdPXRbcl07cmV0dXJuIG59ZnVuY3Rpb24gdSh0LGUpe2Zvcih2YXIgcj0wO3I8ZS5sZW5ndGg7cisrKXt2YXIgbj1lW3JdO24uZW51bWVyYWJsZT1uLmVudW1lcmFibGV8fCExLG4uY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBuJiYobi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsKHZvaWQgMCxhPWZ1bmN0aW9uKHQsZSl7aWYoIm9iamVjdCIhPT1pKHQpfHxudWxsPT09dClyZXR1cm4gdDt2YXIgcj10W1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09cil7dmFyIG49ci5jYWxsKHQsInN0cmluZyIpO2lmKCJvYmplY3QiIT09aShuKSlyZXR1cm4gbjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybiBTdHJpbmcodCl9KG4ua2V5KSwic3ltYm9sIj09PWkoYSk/YTpTdHJpbmcoYSkpLG4pfXZhciBhfXZhciBjPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpeyFmdW5jdGlvbih0LGUpe2lmKCEodCBpbnN0YW5jZW9mIGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLHQpfXZhciBlLHI7cmV0dXJuIGU9dCxyPVt7a2V5OiJzZXR1cFN0b3JhZ2UiLHZhbHVlOmZ1bmN0aW9uKHQsZSxyLG4saSl7dmFyIGE9bi5nZXRWYWx1ZShlLHt2YWx1ZTpudWxsfSk7c3dpdGNoKHIubmFtZSl7Y2FzZSJ0ZXh0YXJlYSI6aWYobnVsbCE9PWEudmFsdWUmJih0LnRleHRDb250ZW50PWEudmFsdWUpLCJwcmludCI9PT1pKWJyZWFrO3QuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLChmdW5jdGlvbih0KXtuLnNldFZhbHVlKGUse3ZhbHVlOnQudGFyZ2V0LnZhbHVlfSl9KSk7YnJlYWs7Y2FzZSJpbnB1dCI6aWYoInJhZGlvIj09PXIuYXR0cmlidXRlcy50eXBlfHwiY2hlY2tib3giPT09ci5hdHRyaWJ1dGVzLnR5cGUpe2lmKGEudmFsdWU9PT1yLmF0dHJpYnV0ZXMueGZhT24/dC5zZXRBdHRyaWJ1dGUoImNoZWNrZWQiLCEwKTphLnZhbHVlPT09ci5hdHRyaWJ1dGVzLnhmYU9mZiYmdC5yZW1vdmVBdHRyaWJ1dGUoImNoZWNrZWQiKSwicHJpbnQiPT09aSlicmVhazt0LmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsKGZ1bmN0aW9uKHQpe24uc2V0VmFsdWUoZSx7dmFsdWU6dC50YXJnZXQuY2hlY2tlZD90LnRhcmdldC5nZXRBdHRyaWJ1dGUoInhmYU9uIik6dC50YXJnZXQuZ2V0QXR0cmlidXRlKCJ4ZmFPZmYiKX0pfSkpfWVsc2V7aWYobnVsbCE9PWEudmFsdWUmJnQuc2V0QXR0cmlidXRlKCJ2YWx1ZSIsYS52YWx1ZSksInByaW50Ij09PWkpYnJlYWs7dC5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsKGZ1bmN0aW9uKHQpe24uc2V0VmFsdWUoZSx7dmFsdWU6dC50YXJnZXQudmFsdWV9KX0pKX1icmVhaztjYXNlInNlbGVjdCI6aWYobnVsbCE9PWEudmFsdWUpe3ZhciBzLGw9byhyLmNoaWxkcmVuKTt0cnl7Zm9yKGwucygpOyEocz1sLm4oKSkuZG9uZTspe3ZhciB1PXMudmFsdWU7dS5hdHRyaWJ1dGVzLnZhbHVlPT09YS52YWx1ZSYmKHUuYXR0cmlidXRlcy5zZWxlY3RlZD0hMCl9fWNhdGNoKHQpe2wuZSh0KX1maW5hbGx5e2wuZigpfX10LmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IiwoZnVuY3Rpb24odCl7dmFyIHI9dC50YXJnZXQub3B0aW9ucyxpPS0xPT09ci5zZWxlY3RlZEluZGV4PyIiOnJbci5zZWxlY3RlZEluZGV4XS52YWx1ZTtuLnNldFZhbHVlKGUse3ZhbHVlOml9KX0pKX19fSx7a2V5OiJzZXRBdHRyaWJ1dGVzIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10Lmh0bWwscj10LmVsZW1lbnQsbj10LnN0b3JhZ2UsaT12b2lkIDA9PT1uP251bGw6bixvPXQuaW50ZW50LHM9dC5saW5rU2VydmljZSxsPXIuYXR0cmlidXRlcyx1PWUgaW5zdGFuY2VvZiBIVE1MQW5jaG9yRWxlbWVudDsicmFkaW8iPT09bC50eXBlJiYobC5uYW1lPSIiLmNvbmNhdChsLm5hbWUsIi0iKS5jb25jYXQobykpO2Zvcih2YXIgYz0wLGg9T2JqZWN0LmVudHJpZXMobCk7YzxoLmxlbmd0aDtjKyspe3ZhciBmPWEoaFtjXSwyKSxkPWZbMF0scD1mWzFdO2lmKG51bGwhPXApc3dpdGNoKGQpe2Nhc2UiY2xhc3MiOnAubGVuZ3RoJiZlLnNldEF0dHJpYnV0ZShkLHAuam9pbigiICIpKTticmVhaztjYXNlImRhdGFJZCI6YnJlYWs7Y2FzZSJpZCI6ZS5zZXRBdHRyaWJ1dGUoImRhdGEtZWxlbWVudC1pZCIscCk7YnJlYWs7Y2FzZSJzdHlsZSI6T2JqZWN0LmFzc2lnbihlLnN0eWxlLHApO2JyZWFrO2Nhc2UidGV4dENvbnRlbnQiOmUudGV4dENvbnRlbnQ9cDticmVhaztkZWZhdWx0OighdXx8ImhyZWYiIT09ZCYmIm5ld1dpbmRvdyIhPT1kKSYmZS5zZXRBdHRyaWJ1dGUoZCxwKX19dSYmcy5hZGRMaW5rQXR0cmlidXRlcyhlLGwuaHJlZixsLm5ld1dpbmRvdyksaSYmbC5kYXRhSWQmJnRoaXMuc2V0dXBTdG9yYWdlKGUsbC5kYXRhSWQscixpKX19LHtrZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5hbm5vdGF0aW9uU3RvcmFnZSxyPXQubGlua1NlcnZpY2UsaT10LnhmYUh0bWwscz10LmludGVudHx8ImRpc3BsYXkiLGw9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChpLm5hbWUpO2kuYXR0cmlidXRlcyYmdGhpcy5zZXRBdHRyaWJ1dGVzKHtodG1sOmwsZWxlbWVudDppLGludGVudDpzLGxpbmtTZXJ2aWNlOnJ9KTt2YXIgdT1bW2ksLTEsbF1dLGM9dC5kaXY7aWYoYy5hcHBlbmQobCksdC52aWV3cG9ydCl7dmFyIGg9Im1hdHJpeCgiLmNvbmNhdCh0LnZpZXdwb3J0LnRyYW5zZm9ybS5qb2luKCIsIiksIikiKTtjLnN0eWxlLnRyYW5zZm9ybT1ofSJyaWNoVGV4dCIhPT1zJiZjLnNldEF0dHJpYnV0ZSgiY2xhc3MiLCJ4ZmFMYXllciB4ZmFGb250Iik7Zm9yKHZhciBmPVtdO3UubGVuZ3RoPjA7KXt2YXIgZCxwLHY9YSh1LmF0KC0xKSwzKSx5PXZbMF0sbT12WzFdLGc9dlsyXTtpZihtKzEhPT15LmNoaWxkcmVuLmxlbmd0aCl7dmFyIGI9eS5jaGlsZHJlblsrK3UuYXQoLTEpWzFdXTtpZihudWxsIT09Yil7dmFyIF89Yi5uYW1lO2lmKCIjdGV4dCIhPT1fKXt2YXIgdz12b2lkIDA7aWYodz1udWxsIT09KGQ9YikmJnZvaWQgMCE9PWQmJm51bGwhPT0ocD1kLmF0dHJpYnV0ZXMpJiZ2b2lkIDAhPT1wJiZwLnhtbG5zP2RvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhiLmF0dHJpYnV0ZXMueG1sbnMsXyk6ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChfKSxnLmFwcGVuZCh3KSxiLmF0dHJpYnV0ZXMmJnRoaXMuc2V0QXR0cmlidXRlcyh7aHRtbDp3LGVsZW1lbnQ6YixzdG9yYWdlOmUsaW50ZW50OnMsbGlua1NlcnZpY2U6cn0pLGIuY2hpbGRyZW4mJmIuY2hpbGRyZW4ubGVuZ3RoPjApdS5wdXNoKFtiLC0xLHddKTtlbHNlIGlmKGIudmFsdWUpe3ZhciBBPWRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGIudmFsdWUpO24uWGZhVGV4dC5zaG91bGRCdWlsZFRleHQoXykmJmYucHVzaChBKSx3LmFwcGVuZChBKX19ZWxzZXt2YXIgaz1kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShiLnZhbHVlKTtmLnB1c2goayksZy5hcHBlbmQoayl9fX1lbHNlIHUucG9wKCl9dmFyIFMseD1vKGMucXVlcnlTZWxlY3RvckFsbCgiLnhmYU5vbkludGVyYWN0aXZlIGlucHV0LCAueGZhTm9uSW50ZXJhY3RpdmUgdGV4dGFyZWEiKSk7dHJ5e2Zvcih4LnMoKTshKFM9eC5uKCkpLmRvbmU7KVMudmFsdWUuc2V0QXR0cmlidXRlKCJyZWFkT25seSIsITApfWNhdGNoKHQpe3guZSh0KX1maW5hbGx5e3guZigpfXJldHVybnt0ZXh0RGl2czpmfX19LHtrZXk6InVwZGF0ZSIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9Im1hdHJpeCgiLmNvbmNhdCh0LnZpZXdwb3J0LnRyYW5zZm9ybS5qb2luKCIsIiksIikiKTt0LmRpdi5zdHlsZS50cmFuc2Zvcm09ZSx0LmRpdi5oaWRkZW49ITF9fV0sbnVsbCYmdShlLnByb3RvdHlwZSxudWxsKSxyJiZ1KGUsciksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksdH0oKTtlLlhmYUxheWVyPWN9LCh0LGUscik9PntmdW5jdGlvbiBuKHQpe3JldHVybiBuPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiB0fSxuKHQpfU9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxlLlNWR0dyYXBoaWNzPXZvaWQgMDt2YXIgaT1yKDEzNyksYT1yKDEpLG89cigzKTtmdW5jdGlvbiBzKHQpe3JldHVybiBmdW5jdGlvbih0KXtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiBoKHQpfSh0KXx8ZnVuY3Rpb24odCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJm51bGwhPXRbU3ltYm9sLml0ZXJhdG9yXXx8bnVsbCE9dFsiQEBpdGVyYXRvciJdKXJldHVybiBBcnJheS5mcm9tKHQpfSh0KXx8Yyh0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiBsKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe2lmKEFycmF5LmlzQXJyYXkodCkpcmV0dXJuIHR9KHQpfHxmdW5jdGlvbih0LGUpe3ZhciByPW51bGw9PXQ/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmdFtTeW1ib2wuaXRlcmF0b3JdfHx0WyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9cil7dmFyIG4saSxhLG8scz1bXSxsPSEwLHU9ITE7dHJ5e2lmKGE9KHI9ci5jYWxsKHQpKS5uZXh0LDA9PT1lKXtpZihPYmplY3QocikhPT1yKXJldHVybjtsPSExfWVsc2UgZm9yKDshKGw9KG49YS5jYWxsKHIpKS5kb25lKSYmKHMucHVzaChuLnZhbHVlKSxzLmxlbmd0aCE9PWUpO2w9ITApO31jYXRjaCh0KXt1PSEwLGk9dH1maW5hbGx5e3RyeXtpZighbCYmbnVsbCE9ci5yZXR1cm4mJihvPXIucmV0dXJuKCksT2JqZWN0KG8pIT09bykpcmV0dXJufWZpbmFsbHl7aWYodSl0aHJvdyBpfX1yZXR1cm4gc319KHQsZSl8fGModCxlKXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIHUodCxlKXt2YXIgcj0idW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmdFtTeW1ib2wuaXRlcmF0b3JdfHx0WyJAQGl0ZXJhdG9yIl07aWYoIXIpe2lmKEFycmF5LmlzQXJyYXkodCl8fChyPWModCkpfHxlJiZ0JiYibnVtYmVyIj09dHlwZW9mIHQubGVuZ3RoKXtyJiYodD1yKTt2YXIgbj0wLGk9ZnVuY3Rpb24oKXt9O3JldHVybntzOmksbjpmdW5jdGlvbigpe3JldHVybiBuPj10Lmxlbmd0aD97ZG9uZTohMH06e2RvbmU6ITEsdmFsdWU6dFtuKytdfX0sZTpmdW5jdGlvbih0KXt0aHJvdyB0fSxmOml9fXRocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBpdGVyYXRlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX12YXIgYSxvPSEwLHM9ITE7cmV0dXJue3M6ZnVuY3Rpb24oKXtyPXIuY2FsbCh0KX0sbjpmdW5jdGlvbigpe3ZhciB0PXIubmV4dCgpO3JldHVybiBvPXQuZG9uZSx0fSxlOmZ1bmN0aW9uKHQpe3M9ITAsYT10fSxmOmZ1bmN0aW9uKCl7dHJ5e298fG51bGw9PXIucmV0dXJufHxyLnJldHVybigpfWZpbmFsbHl7aWYocyl0aHJvdyBhfX19fWZ1bmN0aW9uIGModCxlKXtpZih0KXtpZigic3RyaW5nIj09dHlwZW9mIHQpcmV0dXJuIGgodCxlKTt2YXIgcj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCkuc2xpY2UoOCwtMSk7cmV0dXJuIk9iamVjdCI9PT1yJiZ0LmNvbnN0cnVjdG9yJiYocj10LmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09cnx8IlNldCI9PT1yP0FycmF5LmZyb20odCk6IkFyZ3VtZW50cyI9PT1yfHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChyKT9oKHQsZSk6dm9pZCAwfX1mdW5jdGlvbiBoKHQsZSl7KG51bGw9PWV8fGU+dC5sZW5ndGgpJiYoZT10Lmxlbmd0aCk7Zm9yKHZhciByPTAsbj1uZXcgQXJyYXkoZSk7cjxlO3IrKyluW3JdPXRbcl07cmV0dXJuIG59ZnVuY3Rpb24gZih0LGUpe2Zvcih2YXIgcj0wO3I8ZS5sZW5ndGg7cisrKXt2YXIgaT1lW3JdO2kuZW51bWVyYWJsZT1pLmVudW1lcmFibGV8fCExLGkuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBpJiYoaS53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsKHZvaWQgMCxhPWZ1bmN0aW9uKHQsZSl7aWYoIm9iamVjdCIhPT1uKHQpfHxudWxsPT09dClyZXR1cm4gdDt2YXIgcj10W1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09cil7dmFyIGk9ci5jYWxsKHQsInN0cmluZyIpO2lmKCJvYmplY3QiIT09bihpKSlyZXR1cm4gaTt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybiBTdHJpbmcodCl9KGkua2V5KSwic3ltYm9sIj09PW4oYSk/YTpTdHJpbmcoYSkpLGkpfXZhciBhfWZ1bmN0aW9uIGQodCxlLHIpe3JldHVybiBlJiZmKHQucHJvdG90eXBlLGUpLHImJmYodCxyKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSx0fWZ1bmN0aW9uIHAodCxlKXtpZighKHQgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX12YXIgdj1kKChmdW5jdGlvbiB0KCl7cCh0aGlzLHQpLCgwLGEudW5yZWFjaGFibGUpKCJOb3QgaW1wbGVtZW50ZWQ6IFNWR0dyYXBoaWNzIil9KSk7ZS5TVkdHcmFwaGljcz12O3ZhciB5PWZ1bmN0aW9uKHQpe2lmKE51bWJlci5pc0ludGVnZXIodCkpcmV0dXJuIHQudG9TdHJpbmcoKTt2YXIgZT10LnRvRml4ZWQoMTApLHI9ZS5sZW5ndGgtMTtpZigiMCIhPT1lW3JdKXJldHVybiBlO2Rve3ItLX13aGlsZSgiMCI9PT1lW3JdKTtyZXR1cm4gZS5zdWJzdHJpbmcoMCwiLiI9PT1lW3JdP3I6cisxKX0sbT1mdW5jdGlvbih0KXtpZigwPT09dFs0XSYmMD09PXRbNV0pe2lmKDA9PT10WzFdJiYwPT09dFsyXSlyZXR1cm4gMT09PXRbMF0mJjE9PT10WzNdPyIiOiJzY2FsZSgiLmNvbmNhdCh5KHRbMF0pLCIgIikuY29uY2F0KHkodFszXSksIikiKTtpZih0WzBdPT09dFszXSYmdFsxXT09PS10WzJdKXt2YXIgZT0xODAqTWF0aC5hY29zKHRbMF0pL01hdGguUEk7cmV0dXJuInJvdGF0ZSgiLmNvbmNhdCh5KGUpLCIpIil9fWVsc2UgaWYoMT09PXRbMF0mJjA9PT10WzFdJiYwPT09dFsyXSYmMT09PXRbM10pcmV0dXJuInRyYW5zbGF0ZSgiLmNvbmNhdCh5KHRbNF0pLCIgIikuY29uY2F0KHkodFs1XSksIikiKTtyZXR1cm4ibWF0cml4KCIuY29uY2F0KHkodFswXSksIiAiKS5jb25jYXQoeSh0WzFdKSwiICIpLmNvbmNhdCh5KHRbMl0pLCIgIikuY29uY2F0KHkodFszXSksIiAiKS5jb25jYXQoeSh0WzRdKSwiICIpKyIiLmNvbmNhdCh5KHRbNV0pLCIpIil9LGc9Im5vcm1hbCIsYj0ibm9ybWFsIixfPSIjMDAwMDAwIix3PVsiYnV0dCIsInJvdW5kIiwic3F1YXJlIl0sQT1bIm1pdGVyIiwicm91bmQiLCJiZXZlbCJdLGs9ZnVuY3Rpb24odCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOiIiLHI9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0mJmFyZ3VtZW50c1syXTtpZihVUkwuY3JlYXRlT2JqZWN0VVJMJiYidW5kZWZpbmVkIiE9dHlwZW9mIEJsb2ImJiFyKXJldHVybiBVUkwuY3JlYXRlT2JqZWN0VVJMKG5ldyBCbG9iKFt0XSx7dHlwZTplfSkpO2Zvcih2YXIgbj0iQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLz0iLGk9ImRhdGE6Ii5jb25jYXQoZSwiO2Jhc2U2NCwiKSxhPTAsbz10Lmxlbmd0aDthPG87YSs9Myl7dmFyIHM9MjU1JnRbYV0sbD0yNTUmdFthKzFdLHU9MjU1JnRbYSsyXTtpKz1uW3M+PjJdK25bKDMmcyk8PDR8bD4+NF0rblthKzE8bz8oMTUmbCk8PDJ8dT4+Njo2NF0rblthKzI8bz82MyZ1OjY0XX1yZXR1cm4gaX0sUz1mdW5jdGlvbigpe2Zvcih2YXIgdD1uZXcgVWludDhBcnJheShbMTM3LDgwLDc4LDcxLDEzLDEwLDI2LDEwXSksZT1uZXcgSW50MzJBcnJheSgyNTYpLHI9MDtyPDI1NjtyKyspe2Zvcih2YXIgbj1yLGk9MDtpPDg7aSsrKW49MSZuPzM5ODgyOTIzODRebj4+MSYyMTQ3NDgzNjQ3Om4+PjEmMjE0NzQ4MzY0NztlW3JdPW59ZnVuY3Rpb24gcyh0LHIsbixpKXt2YXIgYT1pLG89ci5sZW5ndGg7blthXT1vPj4yNCYyNTUsblthKzFdPW8+PjE2JjI1NSxuW2ErMl09bz4+OCYyNTUsblthKzNdPTI1NSZvLG5bYSs9NF09MjU1JnQuY2hhckNvZGVBdCgwKSxuW2ErMV09MjU1JnQuY2hhckNvZGVBdCgxKSxuW2ErMl09MjU1JnQuY2hhckNvZGVBdCgyKSxuW2ErM109MjU1JnQuY2hhckNvZGVBdCgzKSxhKz00LG4uc2V0KHIsYSk7dmFyIHM9ZnVuY3Rpb24odCxyLG4pe2Zvcih2YXIgaT0tMSxhPXI7YTxuO2ErKyl7dmFyIG89MjU1JihpXnRbYV0pO2k9aT4+PjheZVtvXX1yZXR1cm4tMV5pfShuLGkrNCxhKz1yLmxlbmd0aCk7blthXT1zPj4yNCYyNTUsblthKzFdPXM+PjE2JjI1NSxuW2ErMl09cz4+OCYyNTUsblthKzNdPTI1NSZzfWZ1bmN0aW9uIGwodCl7dmFyIGU9dC5sZW5ndGgscj02NTUzNSxuPU1hdGguY2VpbChlL3IpLGk9bmV3IFVpbnQ4QXJyYXkoMitlKzUqbis0KSxhPTA7aVthKytdPTEyMCxpW2ErK109MTU2O2Zvcih2YXIgbz0wO2U+cjspaVthKytdPTAsaVthKytdPTI1NSxpW2ErK109MjU1LGlbYSsrXT0wLGlbYSsrXT0wLGkuc2V0KHQuc3ViYXJyYXkobyxvK3IpLGEpLGErPXIsbys9cixlLT1yO2lbYSsrXT0xLGlbYSsrXT0yNTUmZSxpW2ErK109ZT4+OCYyNTUsaVthKytdPTI1NSZ+ZSxpW2ErK109KDY1NTM1Jn5lKT4+OCYyNTUsaS5zZXQodC5zdWJhcnJheShvKSxhKSxhKz10Lmxlbmd0aC1vO3ZhciBzPWZ1bmN0aW9uKHQsZSxyKXtmb3IodmFyIG49MSxpPTAsYT0wO2E8cjsrK2EpaT0oaSsobj0obisoMjU1JnRbYV0pKSU2NTUyMSkpJTY1NTIxO3JldHVybiBpPDwxNnxufSh0LDAsdC5sZW5ndGgpO3JldHVybiBpW2ErK109cz4+MjQmMjU1LGlbYSsrXT1zPj4xNiYyNTUsaVthKytdPXM+PjgmMjU1LGlbYSsrXT0yNTUmcyxpfXJldHVybiBmdW5jdGlvbihlLHIsbil7cmV0dXJuIGZ1bmN0aW9uKGUscixuLGkpe3ZhciB1LGMsaCxmPWUud2lkdGgsZD1lLmhlaWdodCxwPWUuZGF0YTtzd2l0Y2gocil7Y2FzZSBhLkltYWdlS2luZC5HUkFZU0NBTEVfMUJQUDpjPTAsdT0xLGg9Zis3Pj4zO2JyZWFrO2Nhc2UgYS5JbWFnZUtpbmQuUkdCXzI0QlBQOmM9Mix1PTgsaD0zKmY7YnJlYWs7Y2FzZSBhLkltYWdlS2luZC5SR0JBXzMyQlBQOmM9Nix1PTgsaD00KmY7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgZm9ybWF0Iil9Zm9yKHZhciB2PW5ldyBVaW50OEFycmF5KCgxK2gpKmQpLHk9MCxtPTAsZz0wO2c8ZDsrK2cpdlt5KytdPTAsdi5zZXQocC5zdWJhcnJheShtLG0raCkseSksbSs9aCx5Kz1oO2lmKHI9PT1hLkltYWdlS2luZC5HUkFZU0NBTEVfMUJQUCYmaSl7eT0wO2Zvcih2YXIgYj0wO2I8ZDtiKyspe3krKztmb3IodmFyIF89MDtfPGg7XysrKXZbeSsrXV49MjU1fX12YXIgdz1uZXcgVWludDhBcnJheShbZj4+MjQmMjU1LGY+PjE2JjI1NSxmPj44JjI1NSwyNTUmZixkPj4yNCYyNTUsZD4+MTYmMjU1LGQ+PjgmMjU1LDI1NSZkLHUsYywwLDAsMF0pLEE9ZnVuY3Rpb24odCl7aWYoIW8uaXNOb2RlSlMpcmV0dXJuIGwodCk7dHJ5e3ZhciBlO2U9cGFyc2VJbnQocHJvY2Vzcy52ZXJzaW9ucy5ub2RlKT49OD90OkJ1ZmZlci5mcm9tKHQpO3ZhciByPXJlcXVpcmUoInpsaWIiKS5kZWZsYXRlU3luYyhlLHtsZXZlbDo5fSk7cmV0dXJuIHIgaW5zdGFuY2VvZiBVaW50OEFycmF5P3I6bmV3IFVpbnQ4QXJyYXkocil9Y2F0Y2godCl7KDAsYS53YXJuKSgiTm90IGNvbXByZXNzaW5nIFBORyBiZWNhdXNlIHpsaWIuZGVmbGF0ZVN5bmMgaXMgdW5hdmFpbGFibGU6ICIrdCl9cmV0dXJuIGwodCl9KHYpLFM9dC5sZW5ndGgrMzYrdy5sZW5ndGgrQS5sZW5ndGgseD1uZXcgVWludDhBcnJheShTKSxFPTA7cmV0dXJuIHguc2V0KHQsRSkscygiSUhEUiIsdyx4LEUrPXQubGVuZ3RoKSxzKCJJREFUQSIsQSx4LEUrPTEyK3cubGVuZ3RoKSxFKz0xMitBLmxlbmd0aCxzKCJJRU5EIixuZXcgVWludDhBcnJheSgwKSx4LEUpLGsoeCwiaW1hZ2UvcG5nIixuKX0oZSx2b2lkIDA9PT1lLmtpbmQ/YS5JbWFnZUtpbmQuR1JBWVNDQUxFXzFCUFA6ZS5raW5kLHIsbil9fSgpLHg9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7cCh0aGlzLHQpLHRoaXMuZm9udFNpemVTY2FsZT0xLHRoaXMuZm9udFdlaWdodD1iLHRoaXMuZm9udFNpemU9MCx0aGlzLnRleHRNYXRyaXg9YS5JREVOVElUWV9NQVRSSVgsdGhpcy5mb250TWF0cml4PWEuRk9OVF9JREVOVElUWV9NQVRSSVgsdGhpcy5sZWFkaW5nPTAsdGhpcy50ZXh0UmVuZGVyaW5nTW9kZT1hLlRleHRSZW5kZXJpbmdNb2RlLkZJTEwsdGhpcy50ZXh0TWF0cml4U2NhbGU9MSx0aGlzLng9MCx0aGlzLnk9MCx0aGlzLmxpbmVYPTAsdGhpcy5saW5lWT0wLHRoaXMuY2hhclNwYWNpbmc9MCx0aGlzLndvcmRTcGFjaW5nPTAsdGhpcy50ZXh0SFNjYWxlPTEsdGhpcy50ZXh0UmlzZT0wLHRoaXMuZmlsbENvbG9yPV8sdGhpcy5zdHJva2VDb2xvcj0iIzAwMDAwMCIsdGhpcy5maWxsQWxwaGE9MSx0aGlzLnN0cm9rZUFscGhhPTEsdGhpcy5saW5lV2lkdGg9MSx0aGlzLmxpbmVKb2luPSIiLHRoaXMubGluZUNhcD0iIix0aGlzLm1pdGVyTGltaXQ9MCx0aGlzLmRhc2hBcnJheT1bXSx0aGlzLmRhc2hQaGFzZT0wLHRoaXMuZGVwZW5kZW5jaWVzPVtdLHRoaXMuYWN0aXZlQ2xpcFVybD1udWxsLHRoaXMuY2xpcEdyb3VwPW51bGwsdGhpcy5tYXNrSWQ9IiJ9cmV0dXJuIGQodCxbe2tleToiY2xvbmUiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdC5jcmVhdGUodGhpcyl9fSx7a2V5OiJzZXRDdXJyZW50UG9pbnQiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dGhpcy54PXQsdGhpcy55PWV9fV0pLHR9KCksRT0wLFA9MCxUPTA7ZS5TVkdHcmFwaGljcz12PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLHIpe3ZhciBuPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdJiZhcmd1bWVudHNbMl07Zm9yKHZhciBvIGluIHAodGhpcyx0KSwoMCxpLmRlcHJlY2F0ZWQpKCJUaGUgU1ZHIGJhY2stZW5kIGlzIG5vIGxvbmdlciBtYWludGFpbmVkIGFuZCAqbWF5KiBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUuIiksdGhpcy5zdmdGYWN0b3J5PW5ldyBpLkRPTVNWR0ZhY3RvcnksdGhpcy5jdXJyZW50PW5ldyB4LHRoaXMudHJhbnNmb3JtTWF0cml4PWEuSURFTlRJVFlfTUFUUklYLHRoaXMudHJhbnNmb3JtU3RhY2s9W10sdGhpcy5leHRyYVN0YWNrPVtdLHRoaXMuY29tbW9uT2Jqcz1lLHRoaXMub2Jqcz1yLHRoaXMucGVuZGluZ0NsaXA9bnVsbCx0aGlzLnBlbmRpbmdFT0ZpbGw9ITEsdGhpcy5lbWJlZEZvbnRzPSExLHRoaXMuZW1iZWRkZWRGb250cz1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMuY3NzU3R5bGU9bnVsbCx0aGlzLmZvcmNlRGF0YVNjaGVtYT0hIW4sdGhpcy5fb3BlcmF0b3JJZE1hcHBpbmc9W10sYS5PUFMpdGhpcy5fb3BlcmF0b3JJZE1hcHBpbmdbYS5PUFNbb11dPW99cmV0dXJuIGQodCxbe2tleToiZ2V0T2JqZWN0Iix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06bnVsbDtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQ/dC5zdGFydHNXaXRoKCJnXyIpP3RoaXMuY29tbW9uT2Jqcy5nZXQodCk6dGhpcy5vYmpzLmdldCh0KTplfX0se2tleToic2F2ZSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnRyYW5zZm9ybVN0YWNrLnB1c2godGhpcy50cmFuc2Zvcm1NYXRyaXgpO3ZhciB0PXRoaXMuY3VycmVudDt0aGlzLmV4dHJhU3RhY2sucHVzaCh0KSx0aGlzLmN1cnJlbnQ9dC5jbG9uZSgpfX0se2tleToicmVzdG9yZSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnRyYW5zZm9ybU1hdHJpeD10aGlzLnRyYW5zZm9ybVN0YWNrLnBvcCgpLHRoaXMuY3VycmVudD10aGlzLmV4dHJhU3RhY2sucG9wKCksdGhpcy5wZW5kaW5nQ2xpcD1udWxsLHRoaXMudGdycD1udWxsfX0se2tleToiZ3JvdXAiLHZhbHVlOmZ1bmN0aW9uKHQpe3RoaXMuc2F2ZSgpLHRoaXMuZXhlY3V0ZU9wVHJlZSh0KSx0aGlzLnJlc3RvcmUoKX19LHtrZXk6ImxvYWREZXBlbmRlbmNpZXMiLHZhbHVlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLHI9dC5mbkFycmF5LG49dC5hcmdzQXJyYXksaT0wLG89ci5sZW5ndGg7aTxvO2krKylpZihyW2ldPT09YS5PUFMuZGVwZW5kZW5jeSl7dmFyIHMsbD11KG5baV0pO3RyeXt2YXIgYz1mdW5jdGlvbigpe3ZhciB0PXMudmFsdWUscj10LnN0YXJ0c1dpdGgoImdfIik/ZS5jb21tb25PYmpzOmUub2JqcyxuPW5ldyBQcm9taXNlKChmdW5jdGlvbihlKXtyLmdldCh0LGUpfSkpO2UuY3VycmVudC5kZXBlbmRlbmNpZXMucHVzaChuKX07Zm9yKGwucygpOyEocz1sLm4oKSkuZG9uZTspYygpfWNhdGNoKHQpe2wuZSh0KX1maW5hbGx5e2wuZigpfX1yZXR1cm4gUHJvbWlzZS5hbGwodGhpcy5jdXJyZW50LmRlcGVuZGVuY2llcyl9fSx7a2V5OiJ0cmFuc2Zvcm0iLHZhbHVlOmZ1bmN0aW9uKHQsZSxyLG4saSxvKXt2YXIgcz1bdCxlLHIsbixpLG9dO3RoaXMudHJhbnNmb3JtTWF0cml4PWEuVXRpbC50cmFuc2Zvcm0odGhpcy50cmFuc2Zvcm1NYXRyaXgscyksdGhpcy50Z3JwPW51bGx9fSx7a2V5OiJnZXRTVkciLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpczt0aGlzLnZpZXdwb3J0PWU7dmFyIG49dGhpcy5faW5pdGlhbGl6ZShlKTtyZXR1cm4gdGhpcy5sb2FkRGVwZW5kZW5jaWVzKHQpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIHIudHJhbnNmb3JtTWF0cml4PWEuSURFTlRJVFlfTUFUUklYLHIuZXhlY3V0ZU9wVHJlZShyLmNvbnZlcnRPcExpc3QodCkpLG59KSl9fSx7a2V5OiJjb252ZXJ0T3BMaXN0Iix2YWx1ZTpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy5fb3BlcmF0b3JJZE1hcHBpbmcscj10LmFyZ3NBcnJheSxuPXQuZm5BcnJheSxpPVtdLGE9MCxvPW4ubGVuZ3RoO2E8bzthKyspe3ZhciBzPW5bYV07aS5wdXNoKHtmbklkOnMsZm46ZVtzXSxhcmdzOnJbYV19KX1yZXR1cm4gZnVuY3Rpb24odCl7dmFyIGUscj1bXSxuPVtdLGk9dSh0KTt0cnl7Zm9yKGkucygpOyEoZT1pLm4oKSkuZG9uZTspe3ZhciBhPWUudmFsdWU7InNhdmUiIT09YS5mbj8icmVzdG9yZSI9PT1hLmZuP3I9bi5wb3AoKTpyLnB1c2goYSk6KHIucHVzaCh7Zm5JZDo5MixmbjoiZ3JvdXAiLGl0ZW1zOltdfSksbi5wdXNoKHIpLHI9ci5hdCgtMSkuaXRlbXMpfX1jYXRjaCh0KXtpLmUodCl9ZmluYWxseXtpLmYoKX1yZXR1cm4gcn0oaSl9fSx7a2V5OiJleGVjdXRlT3BUcmVlIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZSxyPXUodCk7dHJ5e2ZvcihyLnMoKTshKGU9ci5uKCkpLmRvbmU7KXt2YXIgbj1lLnZhbHVlLGk9bi5mbixvPW4uZm5JZCxzPW4uYXJncztzd2l0Y2goMHxvKXtjYXNlIGEuT1BTLmJlZ2luVGV4dDp0aGlzLmJlZ2luVGV4dCgpO2JyZWFrO2Nhc2UgYS5PUFMuZGVwZW5kZW5jeTpicmVhaztjYXNlIGEuT1BTLnNldExlYWRpbmc6dGhpcy5zZXRMZWFkaW5nKHMpO2JyZWFrO2Nhc2UgYS5PUFMuc2V0TGVhZGluZ01vdmVUZXh0OnRoaXMuc2V0TGVhZGluZ01vdmVUZXh0KHNbMF0sc1sxXSk7YnJlYWs7Y2FzZSBhLk9QUy5zZXRGb250OnRoaXMuc2V0Rm9udChzKTticmVhaztjYXNlIGEuT1BTLnNob3dUZXh0OmNhc2UgYS5PUFMuc2hvd1NwYWNlZFRleHQ6dGhpcy5zaG93VGV4dChzWzBdKTticmVhaztjYXNlIGEuT1BTLmVuZFRleHQ6dGhpcy5lbmRUZXh0KCk7YnJlYWs7Y2FzZSBhLk9QUy5tb3ZlVGV4dDp0aGlzLm1vdmVUZXh0KHNbMF0sc1sxXSk7YnJlYWs7Y2FzZSBhLk9QUy5zZXRDaGFyU3BhY2luZzp0aGlzLnNldENoYXJTcGFjaW5nKHNbMF0pO2JyZWFrO2Nhc2UgYS5PUFMuc2V0V29yZFNwYWNpbmc6dGhpcy5zZXRXb3JkU3BhY2luZyhzWzBdKTticmVhaztjYXNlIGEuT1BTLnNldEhTY2FsZTp0aGlzLnNldEhTY2FsZShzWzBdKTticmVhaztjYXNlIGEuT1BTLnNldFRleHRNYXRyaXg6dGhpcy5zZXRUZXh0TWF0cml4KHNbMF0sc1sxXSxzWzJdLHNbM10sc1s0XSxzWzVdKTticmVhaztjYXNlIGEuT1BTLnNldFRleHRSaXNlOnRoaXMuc2V0VGV4dFJpc2Uoc1swXSk7YnJlYWs7Y2FzZSBhLk9QUy5zZXRUZXh0UmVuZGVyaW5nTW9kZTp0aGlzLnNldFRleHRSZW5kZXJpbmdNb2RlKHNbMF0pO2JyZWFrO2Nhc2UgYS5PUFMuc2V0TGluZVdpZHRoOnRoaXMuc2V0TGluZVdpZHRoKHNbMF0pO2JyZWFrO2Nhc2UgYS5PUFMuc2V0TGluZUpvaW46dGhpcy5zZXRMaW5lSm9pbihzWzBdKTticmVhaztjYXNlIGEuT1BTLnNldExpbmVDYXA6dGhpcy5zZXRMaW5lQ2FwKHNbMF0pO2JyZWFrO2Nhc2UgYS5PUFMuc2V0TWl0ZXJMaW1pdDp0aGlzLnNldE1pdGVyTGltaXQoc1swXSk7YnJlYWs7Y2FzZSBhLk9QUy5zZXRGaWxsUkdCQ29sb3I6dGhpcy5zZXRGaWxsUkdCQ29sb3Ioc1swXSxzWzFdLHNbMl0pO2JyZWFrO2Nhc2UgYS5PUFMuc2V0U3Ryb2tlUkdCQ29sb3I6dGhpcy5zZXRTdHJva2VSR0JDb2xvcihzWzBdLHNbMV0sc1syXSk7YnJlYWs7Y2FzZSBhLk9QUy5zZXRTdHJva2VDb2xvck46dGhpcy5zZXRTdHJva2VDb2xvck4ocyk7YnJlYWs7Y2FzZSBhLk9QUy5zZXRGaWxsQ29sb3JOOnRoaXMuc2V0RmlsbENvbG9yTihzKTticmVhaztjYXNlIGEuT1BTLnNoYWRpbmdGaWxsOnRoaXMuc2hhZGluZ0ZpbGwoc1swXSk7YnJlYWs7Y2FzZSBhLk9QUy5zZXREYXNoOnRoaXMuc2V0RGFzaChzWzBdLHNbMV0pO2JyZWFrO2Nhc2UgYS5PUFMuc2V0UmVuZGVyaW5nSW50ZW50OnRoaXMuc2V0UmVuZGVyaW5nSW50ZW50KHNbMF0pO2JyZWFrO2Nhc2UgYS5PUFMuc2V0RmxhdG5lc3M6dGhpcy5zZXRGbGF0bmVzcyhzWzBdKTticmVhaztjYXNlIGEuT1BTLnNldEdTdGF0ZTp0aGlzLnNldEdTdGF0ZShzWzBdKTticmVhaztjYXNlIGEuT1BTLmZpbGw6dGhpcy5maWxsKCk7YnJlYWs7Y2FzZSBhLk9QUy5lb0ZpbGw6dGhpcy5lb0ZpbGwoKTticmVhaztjYXNlIGEuT1BTLnN0cm9rZTp0aGlzLnN0cm9rZSgpO2JyZWFrO2Nhc2UgYS5PUFMuZmlsbFN0cm9rZTp0aGlzLmZpbGxTdHJva2UoKTticmVhaztjYXNlIGEuT1BTLmVvRmlsbFN0cm9rZTp0aGlzLmVvRmlsbFN0cm9rZSgpO2JyZWFrO2Nhc2UgYS5PUFMuY2xpcDp0aGlzLmNsaXAoIm5vbnplcm8iKTticmVhaztjYXNlIGEuT1BTLmVvQ2xpcDp0aGlzLmNsaXAoImV2ZW5vZGQiKTticmVhaztjYXNlIGEuT1BTLnBhaW50U29saWRDb2xvckltYWdlTWFzazp0aGlzLnBhaW50U29saWRDb2xvckltYWdlTWFzaygpO2JyZWFrO2Nhc2UgYS5PUFMucGFpbnRJbWFnZVhPYmplY3Q6dGhpcy5wYWludEltYWdlWE9iamVjdChzWzBdKTticmVhaztjYXNlIGEuT1BTLnBhaW50SW5saW5lSW1hZ2VYT2JqZWN0OnRoaXMucGFpbnRJbmxpbmVJbWFnZVhPYmplY3Qoc1swXSk7YnJlYWs7Y2FzZSBhLk9QUy5wYWludEltYWdlTWFza1hPYmplY3Q6dGhpcy5wYWludEltYWdlTWFza1hPYmplY3Qoc1swXSk7YnJlYWs7Y2FzZSBhLk9QUy5wYWludEZvcm1YT2JqZWN0QmVnaW46dGhpcy5wYWludEZvcm1YT2JqZWN0QmVnaW4oc1swXSxzWzFdKTticmVhaztjYXNlIGEuT1BTLnBhaW50Rm9ybVhPYmplY3RFbmQ6dGhpcy5wYWludEZvcm1YT2JqZWN0RW5kKCk7YnJlYWs7Y2FzZSBhLk9QUy5jbG9zZVBhdGg6dGhpcy5jbG9zZVBhdGgoKTticmVhaztjYXNlIGEuT1BTLmNsb3NlU3Ryb2tlOnRoaXMuY2xvc2VTdHJva2UoKTticmVhaztjYXNlIGEuT1BTLmNsb3NlRmlsbFN0cm9rZTp0aGlzLmNsb3NlRmlsbFN0cm9rZSgpO2JyZWFrO2Nhc2UgYS5PUFMuY2xvc2VFT0ZpbGxTdHJva2U6dGhpcy5jbG9zZUVPRmlsbFN0cm9rZSgpO2JyZWFrO2Nhc2UgYS5PUFMubmV4dExpbmU6dGhpcy5uZXh0TGluZSgpO2JyZWFrO2Nhc2UgYS5PUFMudHJhbnNmb3JtOnRoaXMudHJhbnNmb3JtKHNbMF0sc1sxXSxzWzJdLHNbM10sc1s0XSxzWzVdKTticmVhaztjYXNlIGEuT1BTLmNvbnN0cnVjdFBhdGg6dGhpcy5jb25zdHJ1Y3RQYXRoKHNbMF0sc1sxXSk7YnJlYWs7Y2FzZSBhLk9QUy5lbmRQYXRoOnRoaXMuZW5kUGF0aCgpO2JyZWFrO2Nhc2UgOTI6dGhpcy5ncm91cChuLml0ZW1zKTticmVhaztkZWZhdWx0OigwLGEud2FybikoIlVuaW1wbGVtZW50ZWQgb3BlcmF0b3IgIi5jb25jYXQoaSkpfX19Y2F0Y2godCl7ci5lKHQpfWZpbmFsbHl7ci5mKCl9fX0se2tleToic2V0V29yZFNwYWNpbmciLHZhbHVlOmZ1bmN0aW9uKHQpe3RoaXMuY3VycmVudC53b3JkU3BhY2luZz10fX0se2tleToic2V0Q2hhclNwYWNpbmciLHZhbHVlOmZ1bmN0aW9uKHQpe3RoaXMuY3VycmVudC5jaGFyU3BhY2luZz10fX0se2tleToibmV4dExpbmUiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5tb3ZlVGV4dCgwLHRoaXMuY3VycmVudC5sZWFkaW5nKX19LHtrZXk6InNldFRleHRNYXRyaXgiLHZhbHVlOmZ1bmN0aW9uKHQsZSxyLG4saSxhKXt2YXIgbz10aGlzLmN1cnJlbnQ7by50ZXh0TWF0cml4PW8ubGluZU1hdHJpeD1bdCxlLHIsbixpLGFdLG8udGV4dE1hdHJpeFNjYWxlPU1hdGguaHlwb3QodCxlKSxvLng9by5saW5lWD0wLG8ueT1vLmxpbmVZPTAsby54Y29vcmRzPVtdLG8ueWNvb3Jkcz1bXSxvLnRzcGFuPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KCJzdmc6dHNwYW4iKSxvLnRzcGFuLnNldEF0dHJpYnV0ZU5TKG51bGwsImZvbnQtZmFtaWx5IixvLmZvbnRGYW1pbHkpLG8udHNwYW4uc2V0QXR0cmlidXRlTlMobnVsbCwiZm9udC1zaXplIiwiIi5jb25jYXQoeShvLmZvbnRTaXplKSwicHgiKSksby50c3Bhbi5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ5Iix5KC1vLnkpKSxvLnR4dEVsZW1lbnQ9dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoInN2Zzp0ZXh0Iiksby50eHRFbGVtZW50LmFwcGVuZChvLnRzcGFuKX19LHtrZXk6ImJlZ2luVGV4dCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmN1cnJlbnQ7dC54PXQubGluZVg9MCx0Lnk9dC5saW5lWT0wLHQudGV4dE1hdHJpeD1hLklERU5USVRZX01BVFJJWCx0LmxpbmVNYXRyaXg9YS5JREVOVElUWV9NQVRSSVgsdC50ZXh0TWF0cml4U2NhbGU9MSx0LnRzcGFuPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KCJzdmc6dHNwYW4iKSx0LnR4dEVsZW1lbnQ9dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoInN2Zzp0ZXh0IiksdC50eHRncnA9dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoInN2ZzpnIiksdC54Y29vcmRzPVtdLHQueWNvb3Jkcz1bXX19LHtrZXk6Im1vdmVUZXh0Iix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciByPXRoaXMuY3VycmVudDtyLng9ci5saW5lWCs9dCxyLnk9ci5saW5lWSs9ZSxyLnhjb29yZHM9W10sci55Y29vcmRzPVtdLHIudHNwYW49dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoInN2Zzp0c3BhbiIpLHIudHNwYW4uc2V0QXR0cmlidXRlTlMobnVsbCwiZm9udC1mYW1pbHkiLHIuZm9udEZhbWlseSksci50c3Bhbi5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmb250LXNpemUiLCIiLmNvbmNhdCh5KHIuZm9udFNpemUpLCJweCIpKSxyLnRzcGFuLnNldEF0dHJpYnV0ZU5TKG51bGwsInkiLHkoLXIueSkpfX0se2tleToic2hvd1RleHQiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuY3VycmVudCxyPWUuZm9udCxuPWUuZm9udFNpemU7aWYoMCE9PW4pe3ZhciBpLG89ZS5mb250U2l6ZVNjYWxlLHM9ZS5jaGFyU3BhY2luZyxsPWUud29yZFNwYWNpbmcsYz1lLmZvbnREaXJlY3Rpb24saD1lLnRleHRIU2NhbGUqYyxmPXIudmVydGljYWwsZD1mPzE6LTEscD1yLmRlZmF1bHRWTWV0cmljcyx2PW4qZS5mb250TWF0cml4WzBdLHc9MCxBPXUodCk7dHJ5e2ZvcihBLnMoKTshKGk9QS5uKCkpLmRvbmU7KXt2YXIgaz1pLnZhbHVlO2lmKG51bGwhPT1rKWlmKCJudW1iZXIiIT10eXBlb2Ygayl7dmFyIFM9KGsuaXNTcGFjZT9sOjApK3MseD1rLmZvbnRDaGFyLEU9dm9pZCAwLFA9dm9pZCAwLFQ9ay53aWR0aDtpZihmKXt2YXIgQz12b2lkIDAsTz1rLnZtZXRyaWN8fHA7Qz0tKEM9ay52bWV0cmljP09bMV06LjUqVCkqdjt2YXIgRj1PWzJdKnY7VD1PPy1PWzBdOlQsRT1DL28sUD0odytGKS9vfWVsc2UgRT13L28sUD0wOyhrLmlzSW5Gb250fHxyLm1pc3NpbmdGaWxlKSYmKGUueGNvb3Jkcy5wdXNoKGUueCtFKSxmJiZlLnljb29yZHMucHVzaCgtZS55K1ApLGUudHNwYW4udGV4dENvbnRlbnQrPXgpLHcrPWY/VCp2LVMqYzpUKnYrUypjfWVsc2Ugdys9ZCprKm4vMWUzO2Vsc2Ugdys9YypsfX1jYXRjaCh0KXtBLmUodCl9ZmluYWxseXtBLmYoKX1lLnRzcGFuLnNldEF0dHJpYnV0ZU5TKG51bGwsIngiLGUueGNvb3Jkcy5tYXAoeSkuam9pbigiICIpKSxmP2UudHNwYW4uc2V0QXR0cmlidXRlTlMobnVsbCwieSIsZS55Y29vcmRzLm1hcCh5KS5qb2luKCIgIikpOmUudHNwYW4uc2V0QXR0cmlidXRlTlMobnVsbCwieSIseSgtZS55KSksZj9lLnktPXc6ZS54Kz13KmgsZS50c3Bhbi5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmb250LWZhbWlseSIsZS5mb250RmFtaWx5KSxlLnRzcGFuLnNldEF0dHJpYnV0ZU5TKG51bGwsImZvbnQtc2l6ZSIsIiIuY29uY2F0KHkoZS5mb250U2l6ZSksInB4IikpLGUuZm9udFN0eWxlIT09ZyYmZS50c3Bhbi5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmb250LXN0eWxlIixlLmZvbnRTdHlsZSksZS5mb250V2VpZ2h0IT09YiYmZS50c3Bhbi5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmb250LXdlaWdodCIsZS5mb250V2VpZ2h0KTt2YXIgTT1lLnRleHRSZW5kZXJpbmdNb2RlJmEuVGV4dFJlbmRlcmluZ01vZGUuRklMTF9TVFJPS0VfTUFTSztpZihNPT09YS5UZXh0UmVuZGVyaW5nTW9kZS5GSUxMfHxNPT09YS5UZXh0UmVuZGVyaW5nTW9kZS5GSUxMX1NUUk9LRT8oZS5maWxsQ29sb3IhPT1fJiZlLnRzcGFuLnNldEF0dHJpYnV0ZU5TKG51bGwsImZpbGwiLGUuZmlsbENvbG9yKSxlLmZpbGxBbHBoYTwxJiZlLnRzcGFuLnNldEF0dHJpYnV0ZU5TKG51bGwsImZpbGwtb3BhY2l0eSIsZS5maWxsQWxwaGEpKTplLnRleHRSZW5kZXJpbmdNb2RlPT09YS5UZXh0UmVuZGVyaW5nTW9kZS5BRERfVE9fUEFUSD9lLnRzcGFuLnNldEF0dHJpYnV0ZU5TKG51bGwsImZpbGwiLCJ0cmFuc3BhcmVudCIpOmUudHNwYW4uc2V0QXR0cmlidXRlTlMobnVsbCwiZmlsbCIsIm5vbmUiKSxNPT09YS5UZXh0UmVuZGVyaW5nTW9kZS5TVFJPS0V8fE09PT1hLlRleHRSZW5kZXJpbmdNb2RlLkZJTExfU1RST0tFKXt2YXIgUj0xLyhlLnRleHRNYXRyaXhTY2FsZXx8MSk7dGhpcy5fc2V0U3Ryb2tlQXR0cmlidXRlcyhlLnRzcGFuLFIpfXZhciBJPWUudGV4dE1hdHJpeDswIT09ZS50ZXh0UmlzZSYmKChJPUkuc2xpY2UoKSlbNV0rPWUudGV4dFJpc2UpLGUudHh0RWxlbWVudC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ0cmFuc2Zvcm0iLCIiLmNvbmNhdChtKEkpLCIgc2NhbGUoIikuY29uY2F0KHkoaCksIiwgLTEpIikpLGUudHh0RWxlbWVudC5zZXRBdHRyaWJ1dGVOUygiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIiwieG1sOnNwYWNlIiwicHJlc2VydmUiKSxlLnR4dEVsZW1lbnQuYXBwZW5kKGUudHNwYW4pLGUudHh0Z3JwLmFwcGVuZChlLnR4dEVsZW1lbnQpLHRoaXMuX2Vuc3VyZVRyYW5zZm9ybUdyb3VwKCkuYXBwZW5kKGUudHh0RWxlbWVudCl9fX0se2tleToic2V0TGVhZGluZ01vdmVUZXh0Iix2YWx1ZTpmdW5jdGlvbih0LGUpe3RoaXMuc2V0TGVhZGluZygtZSksdGhpcy5tb3ZlVGV4dCh0LGUpfX0se2tleToiYWRkRm9udFN0eWxlIix2YWx1ZTpmdW5jdGlvbih0KXtpZighdC5kYXRhKXRocm93IG5ldyBFcnJvcignYWRkRm9udFN0eWxlOiBObyBmb250IGRhdGEgYXZhaWxhYmxlLCBlbnN1cmUgdGhhdCB0aGUgImZvbnRFeHRyYVByb3BlcnRpZXMiIEFQSSBwYXJhbWV0ZXIgaXMgc2V0LicpO3RoaXMuY3NzU3R5bGV8fCh0aGlzLmNzc1N0eWxlPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KCJzdmc6c3R5bGUiKSx0aGlzLmNzc1N0eWxlLnNldEF0dHJpYnV0ZU5TKG51bGwsInR5cGUiLCJ0ZXh0L2NzcyIpLHRoaXMuZGVmcy5hcHBlbmQodGhpcy5jc3NTdHlsZSkpO3ZhciBlPWsodC5kYXRhLHQubWltZXR5cGUsdGhpcy5mb3JjZURhdGFTY2hlbWEpO3RoaXMuY3NzU3R5bGUudGV4dENvbnRlbnQrPSdAZm9udC1mYWNlIHsgZm9udC1mYW1pbHk6ICInLmNvbmNhdCh0LmxvYWRlZE5hbWUsJyI7JykrIiBzcmM6IHVybCgiLmNvbmNhdChlLCIpOyB9XG4iKX19LHtrZXk6InNldEZvbnQiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuY3VycmVudCxyPXRoaXMuY29tbW9uT2Jqcy5nZXQodFswXSksbj10WzFdO2UuZm9udD1yLCF0aGlzLmVtYmVkRm9udHN8fHIubWlzc2luZ0ZpbGV8fHRoaXMuZW1iZWRkZWRGb250c1tyLmxvYWRlZE5hbWVdfHwodGhpcy5hZGRGb250U3R5bGUociksdGhpcy5lbWJlZGRlZEZvbnRzW3IubG9hZGVkTmFtZV09ciksZS5mb250TWF0cml4PXIuZm9udE1hdHJpeHx8YS5GT05UX0lERU5USVRZX01BVFJJWDt2YXIgaT0ibm9ybWFsIjtyLmJsYWNrP2k9IjkwMCI6ci5ib2xkJiYoaT0iYm9sZCIpO3ZhciBvPXIuaXRhbGljPyJpdGFsaWMiOiJub3JtYWwiO248MD8obj0tbixlLmZvbnREaXJlY3Rpb249LTEpOmUuZm9udERpcmVjdGlvbj0xLGUuZm9udFNpemU9bixlLmZvbnRGYW1pbHk9ci5sb2FkZWROYW1lLGUuZm9udFdlaWdodD1pLGUuZm9udFN0eWxlPW8sZS50c3Bhbj10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudCgic3ZnOnRzcGFuIiksZS50c3Bhbi5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ5Iix5KC1lLnkpKSxlLnhjb29yZHM9W10sZS55Y29vcmRzPVtdfX0se2tleToiZW5kVGV4dCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdCxlPXRoaXMuY3VycmVudDtlLnRleHRSZW5kZXJpbmdNb2RlJmEuVGV4dFJlbmRlcmluZ01vZGUuQUREX1RPX1BBVEhfRkxBRyYmbnVsbCE9PSh0PWUudHh0RWxlbWVudCkmJnZvaWQgMCE9PXQmJnQuaGFzQ2hpbGROb2RlcygpJiYoZS5lbGVtZW50PWUudHh0RWxlbWVudCx0aGlzLmNsaXAoIm5vbnplcm8iKSx0aGlzLmVuZFBhdGgoKSl9fSx7a2V5OiJzZXRMaW5lV2lkdGgiLHZhbHVlOmZ1bmN0aW9uKHQpe3Q+MCYmKHRoaXMuY3VycmVudC5saW5lV2lkdGg9dCl9fSx7a2V5OiJzZXRMaW5lQ2FwIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLmN1cnJlbnQubGluZUNhcD13W3RdfX0se2tleToic2V0TGluZUpvaW4iLHZhbHVlOmZ1bmN0aW9uKHQpe3RoaXMuY3VycmVudC5saW5lSm9pbj1BW3RdfX0se2tleToic2V0TWl0ZXJMaW1pdCIsdmFsdWU6ZnVuY3Rpb24odCl7dGhpcy5jdXJyZW50Lm1pdGVyTGltaXQ9dH19LHtrZXk6InNldFN0cm9rZUFscGhhIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLmN1cnJlbnQuc3Ryb2tlQWxwaGE9dH19LHtrZXk6InNldFN0cm9rZVJHQkNvbG9yIix2YWx1ZTpmdW5jdGlvbih0LGUscil7dGhpcy5jdXJyZW50LnN0cm9rZUNvbG9yPWEuVXRpbC5tYWtlSGV4Q29sb3IodCxlLHIpfX0se2tleToic2V0RmlsbEFscGhhIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLmN1cnJlbnQuZmlsbEFscGhhPXR9fSx7a2V5OiJzZXRGaWxsUkdCQ29sb3IiLHZhbHVlOmZ1bmN0aW9uKHQsZSxyKXt0aGlzLmN1cnJlbnQuZmlsbENvbG9yPWEuVXRpbC5tYWtlSGV4Q29sb3IodCxlLHIpLHRoaXMuY3VycmVudC50c3Bhbj10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudCgic3ZnOnRzcGFuIiksdGhpcy5jdXJyZW50Lnhjb29yZHM9W10sdGhpcy5jdXJyZW50Lnljb29yZHM9W119fSx7a2V5OiJzZXRTdHJva2VDb2xvck4iLHZhbHVlOmZ1bmN0aW9uKHQpe3RoaXMuY3VycmVudC5zdHJva2VDb2xvcj10aGlzLl9tYWtlQ29sb3JOX1BhdHRlcm4odCl9fSx7a2V5OiJzZXRGaWxsQ29sb3JOIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLmN1cnJlbnQuZmlsbENvbG9yPXRoaXMuX21ha2VDb2xvck5fUGF0dGVybih0KX19LHtrZXk6InNoYWRpbmdGaWxsIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnZpZXdwb3J0LndpZHRoLHI9dGhpcy52aWV3cG9ydC5oZWlnaHQsbj1hLlV0aWwuaW52ZXJzZVRyYW5zZm9ybSh0aGlzLnRyYW5zZm9ybU1hdHJpeCksaT1hLlV0aWwuYXBwbHlUcmFuc2Zvcm0oWzAsMF0sbiksbz1hLlV0aWwuYXBwbHlUcmFuc2Zvcm0oWzAscl0sbikscz1hLlV0aWwuYXBwbHlUcmFuc2Zvcm0oW2UsMF0sbiksbD1hLlV0aWwuYXBwbHlUcmFuc2Zvcm0oW2Uscl0sbiksdT1NYXRoLm1pbihpWzBdLG9bMF0sc1swXSxsWzBdKSxjPU1hdGgubWluKGlbMV0sb1sxXSxzWzFdLGxbMV0pLGg9TWF0aC5tYXgoaVswXSxvWzBdLHNbMF0sbFswXSksZj1NYXRoLm1heChpWzFdLG9bMV0sc1sxXSxsWzFdKSxkPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KCJzdmc6cmVjdCIpO2Quc2V0QXR0cmlidXRlTlMobnVsbCwieCIsdSksZC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ5IixjKSxkLnNldEF0dHJpYnV0ZU5TKG51bGwsIndpZHRoIixoLXUpLGQuc2V0QXR0cmlidXRlTlMobnVsbCwiaGVpZ2h0IixmLWMpLGQuc2V0QXR0cmlidXRlTlMobnVsbCwiZmlsbCIsdGhpcy5fbWFrZVNoYWRpbmdQYXR0ZXJuKHQpKSx0aGlzLmN1cnJlbnQuZmlsbEFscGhhPDEmJmQuc2V0QXR0cmlidXRlTlMobnVsbCwiZmlsbC1vcGFjaXR5Iix0aGlzLmN1cnJlbnQuZmlsbEFscGhhKSx0aGlzLl9lbnN1cmVUcmFuc2Zvcm1Hcm91cCgpLmFwcGVuZChkKX19LHtrZXk6Il9tYWtlQ29sb3JOX1BhdHRlcm4iLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiJUaWxpbmdQYXR0ZXJuIj09PXRbMF0/dGhpcy5fbWFrZVRpbGluZ1BhdHRlcm4odCk6dGhpcy5fbWFrZVNoYWRpbmdQYXR0ZXJuKHQpfX0se2tleToiX21ha2VUaWxpbmdQYXR0ZXJuIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10WzFdLHI9dFsyXSxuPXRbM118fGEuSURFTlRJVFlfTUFUUklYLGk9bCh0WzRdLDQpLG89aVswXSx1PWlbMV0sYz1pWzJdLGg9aVszXSxmPXRbNV0sZD10WzZdLHA9dFs3XSx2PSJzaGFkaW5nIi5jb25jYXQoVCsrKSx5PWwoYS5VdGlsLm5vcm1hbGl6ZVJlY3QoW10uY29uY2F0KHMoYS5VdGlsLmFwcGx5VHJhbnNmb3JtKFtvLHVdLG4pKSxzKGEuVXRpbC5hcHBseVRyYW5zZm9ybShbYyxoXSxuKSkpKSw0KSxtPXlbMF0sZz15WzFdLGI9eVsyXSxfPXlbM10sdz1sKGEuVXRpbC5zaW5ndWxhclZhbHVlRGVjb21wb3NlMmRTY2FsZShuKSwyKSxBPWYqd1swXSxrPWQqd1sxXSxTPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KCJzdmc6cGF0dGVybiIpO1Muc2V0QXR0cmlidXRlTlMobnVsbCwiaWQiLHYpLFMuc2V0QXR0cmlidXRlTlMobnVsbCwicGF0dGVyblVuaXRzIiwidXNlclNwYWNlT25Vc2UiKSxTLnNldEF0dHJpYnV0ZU5TKG51bGwsIndpZHRoIixBKSxTLnNldEF0dHJpYnV0ZU5TKG51bGwsImhlaWdodCIsayksUy5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ4IiwiIi5jb25jYXQobSkpLFMuc2V0QXR0cmlidXRlTlMobnVsbCwieSIsIiIuY29uY2F0KGcpKTt2YXIgeD10aGlzLnN2ZyxFPXRoaXMudHJhbnNmb3JtTWF0cml4LFA9dGhpcy5jdXJyZW50LmZpbGxDb2xvcixDPXRoaXMuY3VycmVudC5zdHJva2VDb2xvcixPPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGUoYi1tLF8tZyk7aWYodGhpcy5zdmc9Tyx0aGlzLnRyYW5zZm9ybU1hdHJpeD1uLDI9PT1wKXt2YXIgRj1hLlV0aWwubWFrZUhleENvbG9yLmFwcGx5KGEuVXRpbCxzKGUpKTt0aGlzLmN1cnJlbnQuZmlsbENvbG9yPUYsdGhpcy5jdXJyZW50LnN0cm9rZUNvbG9yPUZ9cmV0dXJuIHRoaXMuZXhlY3V0ZU9wVHJlZSh0aGlzLmNvbnZlcnRPcExpc3QocikpLHRoaXMuc3ZnPXgsdGhpcy50cmFuc2Zvcm1NYXRyaXg9RSx0aGlzLmN1cnJlbnQuZmlsbENvbG9yPVAsdGhpcy5jdXJyZW50LnN0cm9rZUNvbG9yPUMsUy5hcHBlbmQoTy5jaGlsZE5vZGVzWzBdKSx0aGlzLmRlZnMuYXBwZW5kKFMpLCJ1cmwoIyIuY29uY2F0KHYsIikiKX19LHtrZXk6Il9tYWtlU2hhZGluZ1BhdHRlcm4iLHZhbHVlOmZ1bmN0aW9uKHQpe3N3aXRjaCgic3RyaW5nIj09dHlwZW9mIHQmJih0PXRoaXMub2Jqcy5nZXQodCkpLHRbMF0pe2Nhc2UiUmFkaWFsQXhpYWwiOnZhciBlLHI9InNoYWRpbmciLmNvbmNhdChUKyspLG49dFszXTtzd2l0Y2godFsxXSl7Y2FzZSJheGlhbCI6dmFyIGk9dFs0XSxvPXRbNV07KGU9dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoInN2ZzpsaW5lYXJHcmFkaWVudCIpKS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJpZCIsciksZS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJncmFkaWVudFVuaXRzIiwidXNlclNwYWNlT25Vc2UiKSxlLnNldEF0dHJpYnV0ZU5TKG51bGwsIngxIixpWzBdKSxlLnNldEF0dHJpYnV0ZU5TKG51bGwsInkxIixpWzFdKSxlLnNldEF0dHJpYnV0ZU5TKG51bGwsIngyIixvWzBdKSxlLnNldEF0dHJpYnV0ZU5TKG51bGwsInkyIixvWzFdKTticmVhaztjYXNlInJhZGlhbCI6dmFyIHM9dFs0XSxsPXRbNV0sYz10WzZdLGg9dFs3XTsoZT10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudCgic3ZnOnJhZGlhbEdyYWRpZW50IikpLnNldEF0dHJpYnV0ZU5TKG51bGwsImlkIixyKSxlLnNldEF0dHJpYnV0ZU5TKG51bGwsImdyYWRpZW50VW5pdHMiLCJ1c2VyU3BhY2VPblVzZSIpLGUuc2V0QXR0cmlidXRlTlMobnVsbCwiY3giLGxbMF0pLGUuc2V0QXR0cmlidXRlTlMobnVsbCwiY3kiLGxbMV0pLGUuc2V0QXR0cmlidXRlTlMobnVsbCwiciIsaCksZS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmeCIsc1swXSksZS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmeSIsc1sxXSksZS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmciIsYyk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gUmFkaWFsQXhpYWwgdHlwZTogIi5jb25jYXQodFsxXSkpfXZhciBmLGQ9dShuKTt0cnl7Zm9yKGQucygpOyEoZj1kLm4oKSkuZG9uZTspe3ZhciBwPWYudmFsdWUsdj10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudCgic3ZnOnN0b3AiKTt2LnNldEF0dHJpYnV0ZU5TKG51bGwsIm9mZnNldCIscFswXSksdi5zZXRBdHRyaWJ1dGVOUyhudWxsLCJzdG9wLWNvbG9yIixwWzFdKSxlLmFwcGVuZCh2KX19Y2F0Y2godCl7ZC5lKHQpfWZpbmFsbHl7ZC5mKCl9cmV0dXJuIHRoaXMuZGVmcy5hcHBlbmQoZSksInVybCgjIi5jb25jYXQociwiKSIpO2Nhc2UiTWVzaCI6cmV0dXJuKDAsYS53YXJuKSgiVW5pbXBsZW1lbnRlZCBwYXR0ZXJuIE1lc2giKSxudWxsO2Nhc2UiRHVtbXkiOnJldHVybiJob3RwaW5rIjtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5rbm93biBJUiB0eXBlOiAiLmNvbmNhdCh0WzBdKSl9fX0se2tleToic2V0RGFzaCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt0aGlzLmN1cnJlbnQuZGFzaEFycmF5PXQsdGhpcy5jdXJyZW50LmRhc2hQaGFzZT1lfX0se2tleToiY29uc3RydWN0UGF0aCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgcixuPXRoaXMuY3VycmVudCxpPW4ueCxvPW4ueSxzPVtdLGw9MCxjPXUodCk7dHJ5e2ZvcihjLnMoKTshKHI9Yy5uKCkpLmRvbmU7KXN3aXRjaCgwfHIudmFsdWUpe2Nhc2UgYS5PUFMucmVjdGFuZ2xlOmk9ZVtsKytdLG89ZVtsKytdO3ZhciBoPWVbbCsrXSxmPWVbbCsrXSxkPWkraCxwPW8rZjtzLnB1c2goIk0iLHkoaSkseShvKSwiTCIseShkKSx5KG8pLCJMIix5KGQpLHkocCksIkwiLHkoaSkseShwKSwiWiIpO2JyZWFrO2Nhc2UgYS5PUFMubW92ZVRvOmk9ZVtsKytdLG89ZVtsKytdLHMucHVzaCgiTSIseShpKSx5KG8pKTticmVhaztjYXNlIGEuT1BTLmxpbmVUbzppPWVbbCsrXSxvPWVbbCsrXSxzLnB1c2goIkwiLHkoaSkseShvKSk7YnJlYWs7Y2FzZSBhLk9QUy5jdXJ2ZVRvOmk9ZVtsKzRdLG89ZVtsKzVdLHMucHVzaCgiQyIseShlW2xdKSx5KGVbbCsxXSkseShlW2wrMl0pLHkoZVtsKzNdKSx5KGkpLHkobykpLGwrPTY7YnJlYWs7Y2FzZSBhLk9QUy5jdXJ2ZVRvMjpzLnB1c2goIkMiLHkoaSkseShvKSx5KGVbbF0pLHkoZVtsKzFdKSx5KGVbbCsyXSkseShlW2wrM10pKSxpPWVbbCsyXSxvPWVbbCszXSxsKz00O2JyZWFrO2Nhc2UgYS5PUFMuY3VydmVUbzM6aT1lW2wrMl0sbz1lW2wrM10scy5wdXNoKCJDIix5KGVbbF0pLHkoZVtsKzFdKSx5KGkpLHkobykseShpKSx5KG8pKSxsKz00O2JyZWFrO2Nhc2UgYS5PUFMuY2xvc2VQYXRoOnMucHVzaCgiWiIpfX1jYXRjaCh0KXtjLmUodCl9ZmluYWxseXtjLmYoKX1zPXMuam9pbigiICIpLG4ucGF0aCYmdC5sZW5ndGg+MCYmdFswXSE9PWEuT1BTLnJlY3RhbmdsZSYmdFswXSE9PWEuT1BTLm1vdmVUbz9zPW4ucGF0aC5nZXRBdHRyaWJ1dGVOUyhudWxsLCJkIikrczoobi5wYXRoPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KCJzdmc6cGF0aCIpLHRoaXMuX2Vuc3VyZVRyYW5zZm9ybUdyb3VwKCkuYXBwZW5kKG4ucGF0aCkpLG4ucGF0aC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJkIixzKSxuLnBhdGguc2V0QXR0cmlidXRlTlMobnVsbCwiZmlsbCIsIm5vbmUiKSxuLmVsZW1lbnQ9bi5wYXRoLG4uc2V0Q3VycmVudFBvaW50KGksbyl9fSx7a2V5OiJlbmRQYXRoIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuY3VycmVudDtpZih0LnBhdGg9bnVsbCx0aGlzLnBlbmRpbmdDbGlwKWlmKHQuZWxlbWVudCl7dmFyIGU9ImNsaXBwYXRoIi5jb25jYXQoRSsrKSxyPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KCJzdmc6Y2xpcFBhdGgiKTtyLnNldEF0dHJpYnV0ZU5TKG51bGwsImlkIixlKSxyLnNldEF0dHJpYnV0ZU5TKG51bGwsInRyYW5zZm9ybSIsbSh0aGlzLnRyYW5zZm9ybU1hdHJpeCkpO3ZhciBuPXQuZWxlbWVudC5jbG9uZU5vZGUoITApO2lmKCJldmVub2RkIj09PXRoaXMucGVuZGluZ0NsaXA/bi5zZXRBdHRyaWJ1dGVOUyhudWxsLCJjbGlwLXJ1bGUiLCJldmVub2RkIik6bi5zZXRBdHRyaWJ1dGVOUyhudWxsLCJjbGlwLXJ1bGUiLCJub256ZXJvIiksdGhpcy5wZW5kaW5nQ2xpcD1udWxsLHIuYXBwZW5kKG4pLHRoaXMuZGVmcy5hcHBlbmQociksdC5hY3RpdmVDbGlwVXJsKXt0LmNsaXBHcm91cD1udWxsO3ZhciBpLGE9dSh0aGlzLmV4dHJhU3RhY2spO3RyeXtmb3IoYS5zKCk7IShpPWEubigpKS5kb25lOylpLnZhbHVlLmNsaXBHcm91cD1udWxsfWNhdGNoKHQpe2EuZSh0KX1maW5hbGx5e2EuZigpfXIuc2V0QXR0cmlidXRlTlMobnVsbCwiY2xpcC1wYXRoIix0LmFjdGl2ZUNsaXBVcmwpfXQuYWN0aXZlQ2xpcFVybD0idXJsKCMiLmNvbmNhdChlLCIpIiksdGhpcy50Z3JwPW51bGx9ZWxzZSB0aGlzLnBlbmRpbmdDbGlwPW51bGx9fSx7a2V5OiJjbGlwIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLnBlbmRpbmdDbGlwPXR9fSx7a2V5OiJjbG9zZVBhdGgiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5jdXJyZW50O2lmKHQucGF0aCl7dmFyIGU9IiIuY29uY2F0KHQucGF0aC5nZXRBdHRyaWJ1dGVOUyhudWxsLCJkIiksIloiKTt0LnBhdGguc2V0QXR0cmlidXRlTlMobnVsbCwiZCIsZSl9fX0se2tleToic2V0TGVhZGluZyIsdmFsdWU6ZnVuY3Rpb24odCl7dGhpcy5jdXJyZW50LmxlYWRpbmc9LXR9fSx7a2V5OiJzZXRUZXh0UmlzZSIsdmFsdWU6ZnVuY3Rpb24odCl7dGhpcy5jdXJyZW50LnRleHRSaXNlPXR9fSx7a2V5OiJzZXRUZXh0UmVuZGVyaW5nTW9kZSIsdmFsdWU6ZnVuY3Rpb24odCl7dGhpcy5jdXJyZW50LnRleHRSZW5kZXJpbmdNb2RlPXR9fSx7a2V5OiJzZXRIU2NhbGUiLHZhbHVlOmZ1bmN0aW9uKHQpe3RoaXMuY3VycmVudC50ZXh0SFNjYWxlPXQvMTAwfX0se2tleToic2V0UmVuZGVyaW5nSW50ZW50Iix2YWx1ZTpmdW5jdGlvbih0KXt9fSx7a2V5OiJzZXRGbGF0bmVzcyIsdmFsdWU6ZnVuY3Rpb24odCl7fX0se2tleToic2V0R1N0YXRlIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZSxyPXUodCk7dHJ5e2ZvcihyLnMoKTshKGU9ci5uKCkpLmRvbmU7KXt2YXIgbj1sKGUudmFsdWUsMiksaT1uWzBdLG89blsxXTtzd2l0Y2goaSl7Y2FzZSJMVyI6dGhpcy5zZXRMaW5lV2lkdGgobyk7YnJlYWs7Y2FzZSJMQyI6dGhpcy5zZXRMaW5lQ2FwKG8pO2JyZWFrO2Nhc2UiTEoiOnRoaXMuc2V0TGluZUpvaW4obyk7YnJlYWs7Y2FzZSJNTCI6dGhpcy5zZXRNaXRlckxpbWl0KG8pO2JyZWFrO2Nhc2UiRCI6dGhpcy5zZXREYXNoKG9bMF0sb1sxXSk7YnJlYWs7Y2FzZSJSSSI6dGhpcy5zZXRSZW5kZXJpbmdJbnRlbnQobyk7YnJlYWs7Y2FzZSJGTCI6dGhpcy5zZXRGbGF0bmVzcyhvKTticmVhaztjYXNlIkZvbnQiOnRoaXMuc2V0Rm9udChvKTticmVhaztjYXNlIkNBIjp0aGlzLnNldFN0cm9rZUFscGhhKG8pO2JyZWFrO2Nhc2UiY2EiOnRoaXMuc2V0RmlsbEFscGhhKG8pO2JyZWFrO2RlZmF1bHQ6KDAsYS53YXJuKSgiVW5pbXBsZW1lbnRlZCBncmFwaGljIHN0YXRlIG9wZXJhdG9yICIuY29uY2F0KGkpKX19fWNhdGNoKHQpe3IuZSh0KX1maW5hbGx5e3IuZigpfX19LHtrZXk6ImZpbGwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5jdXJyZW50O3QuZWxlbWVudCYmKHQuZWxlbWVudC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmaWxsIix0LmZpbGxDb2xvciksdC5lbGVtZW50LnNldEF0dHJpYnV0ZU5TKG51bGwsImZpbGwtb3BhY2l0eSIsdC5maWxsQWxwaGEpLHRoaXMuZW5kUGF0aCgpKX19LHtrZXk6InN0cm9rZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmN1cnJlbnQ7dC5lbGVtZW50JiYodGhpcy5fc2V0U3Ryb2tlQXR0cmlidXRlcyh0LmVsZW1lbnQpLHQuZWxlbWVudC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmaWxsIiwibm9uZSIpLHRoaXMuZW5kUGF0aCgpKX19LHtrZXk6Il9zZXRTdHJva2VBdHRyaWJ1dGVzIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06MSxyPXRoaXMuY3VycmVudCxuPXIuZGFzaEFycmF5OzEhPT1lJiZuLmxlbmd0aD4wJiYobj1uLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIGUqdH0pKSksdC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJzdHJva2UiLHIuc3Ryb2tlQ29sb3IpLHQuc2V0QXR0cmlidXRlTlMobnVsbCwic3Ryb2tlLW9wYWNpdHkiLHIuc3Ryb2tlQWxwaGEpLHQuc2V0QXR0cmlidXRlTlMobnVsbCwic3Ryb2tlLW1pdGVybGltaXQiLHkoci5taXRlckxpbWl0KSksdC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJzdHJva2UtbGluZWNhcCIsci5saW5lQ2FwKSx0LnNldEF0dHJpYnV0ZU5TKG51bGwsInN0cm9rZS1saW5lam9pbiIsci5saW5lSm9pbiksdC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJzdHJva2Utd2lkdGgiLHkoZSpyLmxpbmVXaWR0aCkrInB4IiksdC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJzdHJva2UtZGFzaGFycmF5IixuLm1hcCh5KS5qb2luKCIgIikpLHQuc2V0QXR0cmlidXRlTlMobnVsbCwic3Ryb2tlLWRhc2hvZmZzZXQiLHkoZSpyLmRhc2hQaGFzZSkrInB4Iil9fSx7a2V5OiJlb0ZpbGwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ7bnVsbD09PSh0PXRoaXMuY3VycmVudC5lbGVtZW50KXx8dm9pZCAwPT09dHx8dC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmaWxsLXJ1bGUiLCJldmVub2RkIiksdGhpcy5maWxsKCl9fSx7a2V5OiJmaWxsU3Ryb2tlIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuc3Ryb2tlKCksdGhpcy5maWxsKCl9fSx7a2V5OiJlb0ZpbGxTdHJva2UiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ7bnVsbD09PSh0PXRoaXMuY3VycmVudC5lbGVtZW50KXx8dm9pZCAwPT09dHx8dC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmaWxsLXJ1bGUiLCJldmVub2RkIiksdGhpcy5maWxsU3Ryb2tlKCl9fSx7a2V5OiJjbG9zZVN0cm9rZSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmNsb3NlUGF0aCgpLHRoaXMuc3Ryb2tlKCl9fSx7a2V5OiJjbG9zZUZpbGxTdHJva2UiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5jbG9zZVBhdGgoKSx0aGlzLmZpbGxTdHJva2UoKX19LHtrZXk6ImNsb3NlRU9GaWxsU3Ryb2tlIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuY2xvc2VQYXRoKCksdGhpcy5lb0ZpbGxTdHJva2UoKX19LHtrZXk6InBhaW50U29saWRDb2xvckltYWdlTWFzayIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudCgic3ZnOnJlY3QiKTt0LnNldEF0dHJpYnV0ZU5TKG51bGwsIngiLCIwIiksdC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ5IiwiMCIpLHQuc2V0QXR0cmlidXRlTlMobnVsbCwid2lkdGgiLCIxcHgiKSx0LnNldEF0dHJpYnV0ZU5TKG51bGwsImhlaWdodCIsIjFweCIpLHQuc2V0QXR0cmlidXRlTlMobnVsbCwiZmlsbCIsdGhpcy5jdXJyZW50LmZpbGxDb2xvciksdGhpcy5fZW5zdXJlVHJhbnNmb3JtR3JvdXAoKS5hcHBlbmQodCl9fSx7a2V5OiJwYWludEltYWdlWE9iamVjdCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5nZXRPYmplY3QodCk7ZT90aGlzLnBhaW50SW5saW5lSW1hZ2VYT2JqZWN0KGUpOigwLGEud2FybikoIkRlcGVuZGVudCBpbWFnZSB3aXRoIG9iamVjdCBJRCAiLmNvbmNhdCh0LCIgaXMgbm90IHJlYWR5IHlldCIpKX19LHtrZXk6InBhaW50SW5saW5lSW1hZ2VYT2JqZWN0Iix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciByPXQud2lkdGgsbj10LmhlaWdodCxpPVModCx0aGlzLmZvcmNlRGF0YVNjaGVtYSwhIWUpLGE9dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoInN2ZzpyZWN0Iik7YS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ4IiwiMCIpLGEuc2V0QXR0cmlidXRlTlMobnVsbCwieSIsIjAiKSxhLnNldEF0dHJpYnV0ZU5TKG51bGwsIndpZHRoIix5KHIpKSxhLnNldEF0dHJpYnV0ZU5TKG51bGwsImhlaWdodCIseShuKSksdGhpcy5jdXJyZW50LmVsZW1lbnQ9YSx0aGlzLmNsaXAoIm5vbnplcm8iKTt2YXIgbz10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudCgic3ZnOmltYWdlIik7by5zZXRBdHRyaWJ1dGVOUygiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIsInhsaW5rOmhyZWYiLGkpLG8uc2V0QXR0cmlidXRlTlMobnVsbCwieCIsIjAiKSxvLnNldEF0dHJpYnV0ZU5TKG51bGwsInkiLHkoLW4pKSxvLnNldEF0dHJpYnV0ZU5TKG51bGwsIndpZHRoIix5KHIpKyJweCIpLG8uc2V0QXR0cmlidXRlTlMobnVsbCwiaGVpZ2h0Iix5KG4pKyJweCIpLG8uc2V0QXR0cmlidXRlTlMobnVsbCwidHJhbnNmb3JtIiwic2NhbGUoIi5jb25jYXQoeSgxL3IpLCIgIikuY29uY2F0KHkoLTEvbiksIikiKSksZT9lLmFwcGVuZChvKTp0aGlzLl9lbnN1cmVUcmFuc2Zvcm1Hcm91cCgpLmFwcGVuZChvKX19LHtrZXk6InBhaW50SW1hZ2VNYXNrWE9iamVjdCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5nZXRPYmplY3QodC5kYXRhLHQpO2lmKGUuYml0bWFwKSgwLGEud2FybikoInBhaW50SW1hZ2VNYXNrWE9iamVjdDogSW1hZ2VCaXRtYXAgc3VwcG9ydCBpcyBub3QgaW1wbGVtZW50ZWQsIGVuc3VyZSB0aGF0IHRoZSBgaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWRgIEFQSSBwYXJhbWV0ZXIgaXMgZGlzYWJsZWQuIik7ZWxzZXt2YXIgcj10aGlzLmN1cnJlbnQsbj1lLndpZHRoLGk9ZS5oZWlnaHQsbz1yLmZpbGxDb2xvcjtyLm1hc2tJZD0ibWFzayIuY29uY2F0KFArKyk7dmFyIHM9dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoInN2ZzptYXNrIik7cy5zZXRBdHRyaWJ1dGVOUyhudWxsLCJpZCIsci5tYXNrSWQpO3ZhciBsPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KCJzdmc6cmVjdCIpO2wuc2V0QXR0cmlidXRlTlMobnVsbCwieCIsIjAiKSxsLnNldEF0dHJpYnV0ZU5TKG51bGwsInkiLCIwIiksbC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ3aWR0aCIseShuKSksbC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJoZWlnaHQiLHkoaSkpLGwuc2V0QXR0cmlidXRlTlMobnVsbCwiZmlsbCIsbyksbC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJtYXNrIiwidXJsKCMiLmNvbmNhdChyLm1hc2tJZCwiKSIpKSx0aGlzLmRlZnMuYXBwZW5kKHMpLHRoaXMuX2Vuc3VyZVRyYW5zZm9ybUdyb3VwKCkuYXBwZW5kKGwpLHRoaXMucGFpbnRJbmxpbmVJbWFnZVhPYmplY3QoZSxzKX19fSx7a2V5OiJwYWludEZvcm1YT2JqZWN0QmVnaW4iLHZhbHVlOmZ1bmN0aW9uKHQsZSl7aWYoQXJyYXkuaXNBcnJheSh0KSYmNj09PXQubGVuZ3RoJiZ0aGlzLnRyYW5zZm9ybSh0WzBdLHRbMV0sdFsyXSx0WzNdLHRbNF0sdFs1XSksZSl7dmFyIHI9ZVsyXS1lWzBdLG49ZVszXS1lWzFdLGk9dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoInN2ZzpyZWN0Iik7aS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ4IixlWzBdKSxpLnNldEF0dHJpYnV0ZU5TKG51bGwsInkiLGVbMV0pLGkuc2V0QXR0cmlidXRlTlMobnVsbCwid2lkdGgiLHkocikpLGkuc2V0QXR0cmlidXRlTlMobnVsbCwiaGVpZ2h0Iix5KG4pKSx0aGlzLmN1cnJlbnQuZWxlbWVudD1pLHRoaXMuY2xpcCgibm9uemVybyIpLHRoaXMuZW5kUGF0aCgpfX19LHtrZXk6InBhaW50Rm9ybVhPYmplY3RFbmQiLHZhbHVlOmZ1bmN0aW9uKCl7fX0se2tleToiX2luaXRpYWxpemUiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGUodC53aWR0aCx0LmhlaWdodCkscj10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudCgic3ZnOmRlZnMiKTtlLmFwcGVuZChyKSx0aGlzLmRlZnM9cjt2YXIgbj10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudCgic3ZnOmciKTtyZXR1cm4gbi5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ0cmFuc2Zvcm0iLG0odC50cmFuc2Zvcm0pKSxlLmFwcGVuZChuKSx0aGlzLnN2Zz1uLGV9fSx7a2V5OiJfZW5zdXJlQ2xpcEdyb3VwIix2YWx1ZTpmdW5jdGlvbigpe2lmKCF0aGlzLmN1cnJlbnQuY2xpcEdyb3VwKXt2YXIgdD10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudCgic3ZnOmciKTt0LnNldEF0dHJpYnV0ZU5TKG51bGwsImNsaXAtcGF0aCIsdGhpcy5jdXJyZW50LmFjdGl2ZUNsaXBVcmwpLHRoaXMuc3ZnLmFwcGVuZCh0KSx0aGlzLmN1cnJlbnQuY2xpcEdyb3VwPXR9cmV0dXJuIHRoaXMuY3VycmVudC5jbGlwR3JvdXB9fSx7a2V5OiJfZW5zdXJlVHJhbnNmb3JtR3JvdXAiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudGdycHx8KHRoaXMudGdycD10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudCgic3ZnOmciKSx0aGlzLnRncnAuc2V0QXR0cmlidXRlTlMobnVsbCwidHJhbnNmb3JtIixtKHRoaXMudHJhbnNmb3JtTWF0cml4KSksdGhpcy5jdXJyZW50LmFjdGl2ZUNsaXBVcmw/dGhpcy5fZW5zdXJlQ2xpcEdyb3VwKCkuYXBwZW5kKHRoaXMudGdycCk6dGhpcy5zdmcuYXBwZW5kKHRoaXMudGdycCkpLHRoaXMudGdycH19XSksdH0oKX0sKHQsZSxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxlLlBERk5vZGVTdHJlYW09dm9pZCAwO3ZhciBuPXIoMSksaT1yKDE2Mik7ZnVuY3Rpb24gYSh0LGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlJiZudWxsIT09ZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO3QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZSYmZS5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTp0LHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxlJiZvKHQsZSl9ZnVuY3Rpb24gbyh0LGUpe3JldHVybiBvPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuX19wcm90b19fPWUsdH0sbyh0LGUpfWZ1bmN0aW9uIHModCl7dmFyIGU9ZnVuY3Rpb24oKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdClyZXR1cm4hMTtpZihSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLChmdW5jdGlvbigpe30pKSksITB9Y2F0Y2godCl7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciByLG49bCh0KTtpZihlKXt2YXIgaT1sKHRoaXMpLmNvbnN0cnVjdG9yO3I9UmVmbGVjdC5jb25zdHJ1Y3Qobixhcmd1bWVudHMsaSl9ZWxzZSByPW4uYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBmdW5jdGlvbih0LGUpe2lmKGUmJigib2JqZWN0Ij09PWYoZSl8fCJmdW5jdGlvbiI9PXR5cGVvZiBlKSlyZXR1cm4gZTtpZih2b2lkIDAhPT1lKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGZ1bmN0aW9uKHQpe2lmKHZvaWQgMD09PXQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gdH0odCl9KHRoaXMscil9fWZ1bmN0aW9uIGwodCl7cmV0dXJuIGw9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24odCl7cmV0dXJuIHQuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YodCl9LGwodCl9ZnVuY3Rpb24gdSgpe3U9ZnVuY3Rpb24oKXtyZXR1cm4gdH07dmFyIHQ9e30sZT1PYmplY3QucHJvdG90eXBlLHI9ZS5oYXNPd25Qcm9wZXJ0eSxuPU9iamVjdC5kZWZpbmVQcm9wZXJ0eXx8ZnVuY3Rpb24odCxlLHIpe3RbZV09ci52YWx1ZX0saT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sP1N5bWJvbDp7fSxhPWkuaXRlcmF0b3J8fCJAQGl0ZXJhdG9yIixvPWkuYXN5bmNJdGVyYXRvcnx8IkBAYXN5bmNJdGVyYXRvciIscz1pLnRvU3RyaW5nVGFnfHwiQEB0b1N0cmluZ1RhZyI7ZnVuY3Rpb24gbCh0LGUscil7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUse3ZhbHVlOnIsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KSx0W2VdfXRyeXtsKHt9LCIiKX1jYXRjaCh0KXtsPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdFtlXT1yfX1mdW5jdGlvbiBjKHQsZSxyLGkpe3ZhciBhPWUmJmUucHJvdG90eXBlIGluc3RhbmNlb2YgcD9lOnAsbz1PYmplY3QuY3JlYXRlKGEucHJvdG90eXBlKSxzPW5ldyBQKGl8fFtdKTtyZXR1cm4gbihvLCJfaW52b2tlIix7dmFsdWU6ayh0LHIscyl9KSxvfWZ1bmN0aW9uIGgodCxlLHIpe3RyeXtyZXR1cm57dHlwZToibm9ybWFsIixhcmc6dC5jYWxsKGUscil9fWNhdGNoKHQpe3JldHVybnt0eXBlOiJ0aHJvdyIsYXJnOnR9fX10LndyYXA9Yzt2YXIgZD17fTtmdW5jdGlvbiBwKCl7fWZ1bmN0aW9uIHYoKXt9ZnVuY3Rpb24geSgpe312YXIgbT17fTtsKG0sYSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKTt2YXIgZz1PYmplY3QuZ2V0UHJvdG90eXBlT2YsYj1nJiZnKGcoVChbXSkpKTtiJiZiIT09ZSYmci5jYWxsKGIsYSkmJihtPWIpO3ZhciBfPXkucHJvdG90eXBlPXAucHJvdG90eXBlPU9iamVjdC5jcmVhdGUobSk7ZnVuY3Rpb24gdyh0KXtbIm5leHQiLCJ0aHJvdyIsInJldHVybiJdLmZvckVhY2goKGZ1bmN0aW9uKGUpe2wodCxlLChmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5faW52b2tlKGUsdCl9KSl9KSl9ZnVuY3Rpb24gQSh0LGUpe2Z1bmN0aW9uIGkobixhLG8scyl7dmFyIGw9aCh0W25dLHQsYSk7aWYoInRocm93IiE9PWwudHlwZSl7dmFyIHU9bC5hcmcsYz11LnZhbHVlO3JldHVybiBjJiYib2JqZWN0Ij09ZihjKSYmci5jYWxsKGMsIl9fYXdhaXQiKT9lLnJlc29sdmUoYy5fX2F3YWl0KS50aGVuKChmdW5jdGlvbih0KXtpKCJuZXh0Iix0LG8scyl9KSwoZnVuY3Rpb24odCl7aSgidGhyb3ciLHQsbyxzKX0pKTplLnJlc29sdmUoYykudGhlbigoZnVuY3Rpb24odCl7dS52YWx1ZT10LG8odSl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIGkoInRocm93Iix0LG8scyl9KSl9cyhsLmFyZyl9dmFyIGE7bih0aGlzLCJfaW52b2tlIix7dmFsdWU6ZnVuY3Rpb24odCxyKXtmdW5jdGlvbiBuKCl7cmV0dXJuIG5ldyBlKChmdW5jdGlvbihlLG4pe2kodCxyLGUsbil9KSl9cmV0dXJuIGE9YT9hLnRoZW4obixuKTpuKCl9fSl9ZnVuY3Rpb24gayh0LGUscil7dmFyIG49InN1c3BlbmRlZFN0YXJ0IjtyZXR1cm4gZnVuY3Rpb24oaSxhKXtpZigiZXhlY3V0aW5nIj09PW4pdGhyb3cgbmV3IEVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nIik7aWYoImNvbXBsZXRlZCI9PT1uKXtpZigidGhyb3ciPT09aSl0aHJvdyBhO3JldHVybnt2YWx1ZTp2b2lkIDAsZG9uZTohMH19Zm9yKHIubWV0aG9kPWksci5hcmc9YTs7KXt2YXIgbz1yLmRlbGVnYXRlO2lmKG8pe3ZhciBzPVMobyxyKTtpZihzKXtpZihzPT09ZCljb250aW51ZTtyZXR1cm4gc319aWYoIm5leHQiPT09ci5tZXRob2Qpci5zZW50PXIuX3NlbnQ9ci5hcmc7ZWxzZSBpZigidGhyb3ciPT09ci5tZXRob2Qpe2lmKCJzdXNwZW5kZWRTdGFydCI9PT1uKXRocm93IG49ImNvbXBsZXRlZCIsci5hcmc7ci5kaXNwYXRjaEV4Y2VwdGlvbihyLmFyZyl9ZWxzZSJyZXR1cm4iPT09ci5tZXRob2QmJnIuYWJydXB0KCJyZXR1cm4iLHIuYXJnKTtuPSJleGVjdXRpbmciO3ZhciBsPWgodCxlLHIpO2lmKCJub3JtYWwiPT09bC50eXBlKXtpZihuPXIuZG9uZT8iY29tcGxldGVkIjoic3VzcGVuZGVkWWllbGQiLGwuYXJnPT09ZCljb250aW51ZTtyZXR1cm57dmFsdWU6bC5hcmcsZG9uZTpyLmRvbmV9fSJ0aHJvdyI9PT1sLnR5cGUmJihuPSJjb21wbGV0ZWQiLHIubWV0aG9kPSJ0aHJvdyIsci5hcmc9bC5hcmcpfX19ZnVuY3Rpb24gUyh0LGUpe3ZhciByPWUubWV0aG9kLG49dC5pdGVyYXRvcltyXTtpZih2b2lkIDA9PT1uKXJldHVybiBlLmRlbGVnYXRlPW51bGwsInRocm93Ij09PXImJnQuaXRlcmF0b3IucmV0dXJuJiYoZS5tZXRob2Q9InJldHVybiIsZS5hcmc9dm9pZCAwLFModCxlKSwidGhyb3ciPT09ZS5tZXRob2QpfHwicmV0dXJuIiE9PXImJihlLm1ldGhvZD0idGhyb3ciLGUuYXJnPW5ldyBUeXBlRXJyb3IoIlRoZSBpdGVyYXRvciBkb2VzIG5vdCBwcm92aWRlIGEgJyIrcisiJyBtZXRob2QiKSksZDt2YXIgaT1oKG4sdC5pdGVyYXRvcixlLmFyZyk7aWYoInRocm93Ij09PWkudHlwZSlyZXR1cm4gZS5tZXRob2Q9InRocm93IixlLmFyZz1pLmFyZyxlLmRlbGVnYXRlPW51bGwsZDt2YXIgYT1pLmFyZztyZXR1cm4gYT9hLmRvbmU/KGVbdC5yZXN1bHROYW1lXT1hLnZhbHVlLGUubmV4dD10Lm5leHRMb2MsInJldHVybiIhPT1lLm1ldGhvZCYmKGUubWV0aG9kPSJuZXh0IixlLmFyZz12b2lkIDApLGUuZGVsZWdhdGU9bnVsbCxkKTphOihlLm1ldGhvZD0idGhyb3ciLGUuYXJnPW5ldyBUeXBlRXJyb3IoIml0ZXJhdG9yIHJlc3VsdCBpcyBub3QgYW4gb2JqZWN0IiksZS5kZWxlZ2F0ZT1udWxsLGQpfWZ1bmN0aW9uIHgodCl7dmFyIGU9e3RyeUxvYzp0WzBdfTsxIGluIHQmJihlLmNhdGNoTG9jPXRbMV0pLDIgaW4gdCYmKGUuZmluYWxseUxvYz10WzJdLGUuYWZ0ZXJMb2M9dFszXSksdGhpcy50cnlFbnRyaWVzLnB1c2goZSl9ZnVuY3Rpb24gRSh0KXt2YXIgZT10LmNvbXBsZXRpb258fHt9O2UudHlwZT0ibm9ybWFsIixkZWxldGUgZS5hcmcsdC5jb21wbGV0aW9uPWV9ZnVuY3Rpb24gUCh0KXt0aGlzLnRyeUVudHJpZXM9W3t0cnlMb2M6InJvb3QifV0sdC5mb3JFYWNoKHgsdGhpcyksdGhpcy5yZXNldCghMCl9ZnVuY3Rpb24gVCh0KXtpZih0KXt2YXIgZT10W2FdO2lmKGUpcmV0dXJuIGUuY2FsbCh0KTtpZigiZnVuY3Rpb24iPT10eXBlb2YgdC5uZXh0KXJldHVybiB0O2lmKCFpc05hTih0Lmxlbmd0aCkpe3ZhciBuPS0xLGk9ZnVuY3Rpb24gZSgpe2Zvcig7KytuPHQubGVuZ3RoOylpZihyLmNhbGwodCxuKSlyZXR1cm4gZS52YWx1ZT10W25dLGUuZG9uZT0hMSxlO3JldHVybiBlLnZhbHVlPXZvaWQgMCxlLmRvbmU9ITAsZX07cmV0dXJuIGkubmV4dD1pfX1yZXR1cm57bmV4dDpDfX1mdW5jdGlvbiBDKCl7cmV0dXJue3ZhbHVlOnZvaWQgMCxkb25lOiEwfX1yZXR1cm4gdi5wcm90b3R5cGU9eSxuKF8sImNvbnN0cnVjdG9yIix7dmFsdWU6eSxjb25maWd1cmFibGU6ITB9KSxuKHksImNvbnN0cnVjdG9yIix7dmFsdWU6dixjb25maWd1cmFibGU6ITB9KSx2LmRpc3BsYXlOYW1lPWwoeSxzLCJHZW5lcmF0b3JGdW5jdGlvbiIpLHQuaXNHZW5lcmF0b3JGdW5jdGlvbj1mdW5jdGlvbih0KXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgdCYmdC5jb25zdHJ1Y3RvcjtyZXR1cm4hIWUmJihlPT09dnx8IkdlbmVyYXRvckZ1bmN0aW9uIj09PShlLmRpc3BsYXlOYW1lfHxlLm5hbWUpKX0sdC5tYXJrPWZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKHQseSk6KHQuX19wcm90b19fPXksbCh0LHMsIkdlbmVyYXRvckZ1bmN0aW9uIikpLHQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoXyksdH0sdC5hd3JhcD1mdW5jdGlvbih0KXtyZXR1cm57X19hd2FpdDp0fX0sdyhBLnByb3RvdHlwZSksbChBLnByb3RvdHlwZSxvLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpLHQuQXN5bmNJdGVyYXRvcj1BLHQuYXN5bmM9ZnVuY3Rpb24oZSxyLG4saSxhKXt2b2lkIDA9PT1hJiYoYT1Qcm9taXNlKTt2YXIgbz1uZXcgQShjKGUscixuLGkpLGEpO3JldHVybiB0LmlzR2VuZXJhdG9yRnVuY3Rpb24ocik/bzpvLm5leHQoKS50aGVuKChmdW5jdGlvbih0KXtyZXR1cm4gdC5kb25lP3QudmFsdWU6by5uZXh0KCl9KSl9LHcoXyksbChfLHMsIkdlbmVyYXRvciIpLGwoXyxhLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpLGwoXywidG9TdHJpbmciLChmdW5jdGlvbigpe3JldHVybiJbb2JqZWN0IEdlbmVyYXRvcl0ifSkpLHQua2V5cz1mdW5jdGlvbih0KXt2YXIgZT1PYmplY3QodCkscj1bXTtmb3IodmFyIG4gaW4gZSlyLnB1c2gobik7cmV0dXJuIHIucmV2ZXJzZSgpLGZ1bmN0aW9uIHQoKXtmb3IoO3IubGVuZ3RoOyl7dmFyIG49ci5wb3AoKTtpZihuIGluIGUpcmV0dXJuIHQudmFsdWU9bix0LmRvbmU9ITEsdH1yZXR1cm4gdC5kb25lPSEwLHR9fSx0LnZhbHVlcz1ULFAucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpQLHJlc2V0OmZ1bmN0aW9uKHQpe2lmKHRoaXMucHJldj0wLHRoaXMubmV4dD0wLHRoaXMuc2VudD10aGlzLl9zZW50PXZvaWQgMCx0aGlzLmRvbmU9ITEsdGhpcy5kZWxlZ2F0ZT1udWxsLHRoaXMubWV0aG9kPSJuZXh0Iix0aGlzLmFyZz12b2lkIDAsdGhpcy50cnlFbnRyaWVzLmZvckVhY2goRSksIXQpZm9yKHZhciBlIGluIHRoaXMpInQiPT09ZS5jaGFyQXQoMCkmJnIuY2FsbCh0aGlzLGUpJiYhaXNOYU4oK2Uuc2xpY2UoMSkpJiYodGhpc1tlXT12b2lkIDApfSxzdG9wOmZ1bmN0aW9uKCl7dGhpcy5kb25lPSEwO3ZhciB0PXRoaXMudHJ5RW50cmllc1swXS5jb21wbGV0aW9uO2lmKCJ0aHJvdyI9PT10LnR5cGUpdGhyb3cgdC5hcmc7cmV0dXJuIHRoaXMucnZhbH0sZGlzcGF0Y2hFeGNlcHRpb246ZnVuY3Rpb24odCl7aWYodGhpcy5kb25lKXRocm93IHQ7dmFyIGU9dGhpcztmdW5jdGlvbiBuKHIsbil7cmV0dXJuIG8udHlwZT0idGhyb3ciLG8uYXJnPXQsZS5uZXh0PXIsbiYmKGUubWV0aG9kPSJuZXh0IixlLmFyZz12b2lkIDApLCEhbn1mb3IodmFyIGk9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2k+PTA7LS1pKXt2YXIgYT10aGlzLnRyeUVudHJpZXNbaV0sbz1hLmNvbXBsZXRpb247aWYoInJvb3QiPT09YS50cnlMb2MpcmV0dXJuIG4oImVuZCIpO2lmKGEudHJ5TG9jPD10aGlzLnByZXYpe3ZhciBzPXIuY2FsbChhLCJjYXRjaExvYyIpLGw9ci5jYWxsKGEsImZpbmFsbHlMb2MiKTtpZihzJiZsKXtpZih0aGlzLnByZXY8YS5jYXRjaExvYylyZXR1cm4gbihhLmNhdGNoTG9jLCEwKTtpZih0aGlzLnByZXY8YS5maW5hbGx5TG9jKXJldHVybiBuKGEuZmluYWxseUxvYyl9ZWxzZSBpZihzKXtpZih0aGlzLnByZXY8YS5jYXRjaExvYylyZXR1cm4gbihhLmNhdGNoTG9jLCEwKX1lbHNle2lmKCFsKXRocm93IG5ldyBFcnJvcigidHJ5IHN0YXRlbWVudCB3aXRob3V0IGNhdGNoIG9yIGZpbmFsbHkiKTtpZih0aGlzLnByZXY8YS5maW5hbGx5TG9jKXJldHVybiBuKGEuZmluYWxseUxvYyl9fX19LGFicnVwdDpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7bj49MDstLW4pe3ZhciBpPXRoaXMudHJ5RW50cmllc1tuXTtpZihpLnRyeUxvYzw9dGhpcy5wcmV2JiZyLmNhbGwoaSwiZmluYWxseUxvYyIpJiZ0aGlzLnByZXY8aS5maW5hbGx5TG9jKXt2YXIgYT1pO2JyZWFrfX1hJiYoImJyZWFrIj09PXR8fCJjb250aW51ZSI9PT10KSYmYS50cnlMb2M8PWUmJmU8PWEuZmluYWxseUxvYyYmKGE9bnVsbCk7dmFyIG89YT9hLmNvbXBsZXRpb246e307cmV0dXJuIG8udHlwZT10LG8uYXJnPWUsYT8odGhpcy5tZXRob2Q9Im5leHQiLHRoaXMubmV4dD1hLmZpbmFsbHlMb2MsZCk6dGhpcy5jb21wbGV0ZShvKX0sY29tcGxldGU6ZnVuY3Rpb24odCxlKXtpZigidGhyb3ciPT09dC50eXBlKXRocm93IHQuYXJnO3JldHVybiJicmVhayI9PT10LnR5cGV8fCJjb250aW51ZSI9PT10LnR5cGU/dGhpcy5uZXh0PXQuYXJnOiJyZXR1cm4iPT09dC50eXBlPyh0aGlzLnJ2YWw9dGhpcy5hcmc9dC5hcmcsdGhpcy5tZXRob2Q9InJldHVybiIsdGhpcy5uZXh0PSJlbmQiKToibm9ybWFsIj09PXQudHlwZSYmZSYmKHRoaXMubmV4dD1lKSxkfSxmaW5pc2g6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtlPj0wOy0tZSl7dmFyIHI9dGhpcy50cnlFbnRyaWVzW2VdO2lmKHIuZmluYWxseUxvYz09PXQpcmV0dXJuIHRoaXMuY29tcGxldGUoci5jb21wbGV0aW9uLHIuYWZ0ZXJMb2MpLEUociksZH19LGNhdGNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7ZT49MDstLWUpe3ZhciByPXRoaXMudHJ5RW50cmllc1tlXTtpZihyLnRyeUxvYz09PXQpe3ZhciBuPXIuY29tcGxldGlvbjtpZigidGhyb3ciPT09bi50eXBlKXt2YXIgaT1uLmFyZztFKHIpfXJldHVybiBpfX10aHJvdyBuZXcgRXJyb3IoImlsbGVnYWwgY2F0Y2ggYXR0ZW1wdCIpfSxkZWxlZ2F0ZVlpZWxkOmZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZT17aXRlcmF0b3I6VCh0KSxyZXN1bHROYW1lOmUsbmV4dExvYzpyfSwibmV4dCI9PT10aGlzLm1ldGhvZCYmKHRoaXMuYXJnPXZvaWQgMCksZH19LHR9ZnVuY3Rpb24gYyh0LGUscixuLGksYSxvKXt0cnl7dmFyIHM9dFthXShvKSxsPXMudmFsdWV9Y2F0Y2godCl7cmV0dXJuIHZvaWQgcih0KX1zLmRvbmU/ZShsKTpQcm9taXNlLnJlc29sdmUobCkudGhlbihuLGkpfWZ1bmN0aW9uIGgodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dGhpcyxyPWFyZ3VtZW50cztyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKG4saSl7dmFyIGE9dC5hcHBseShlLHIpO2Z1bmN0aW9uIG8odCl7YyhhLG4saSxvLHMsIm5leHQiLHQpfWZ1bmN0aW9uIHModCl7YyhhLG4saSxvLHMsInRocm93Iix0KX1vKHZvaWQgMCl9KSl9fWZ1bmN0aW9uIGYodCl7cmV0dXJuIGY9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LGYodCl9ZnVuY3Rpb24gZCh0LGUpeyhudWxsPT1lfHxlPnQubGVuZ3RoKSYmKGU9dC5sZW5ndGgpO2Zvcih2YXIgcj0wLG49bmV3IEFycmF5KGUpO3I8ZTtyKyspbltyXT10W3JdO3JldHVybiBufWZ1bmN0aW9uIHAodCxlKXtpZighKHQgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiB2KHQsZSl7Zm9yKHZhciByPTA7cjxlLmxlbmd0aDtyKyspe3ZhciBuPWVbcl07bi5lbnVtZXJhYmxlPW4uZW51bWVyYWJsZXx8ITEsbi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIG4mJihuLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwodm9pZCAwLGk9ZnVuY3Rpb24odCxlKXtpZigib2JqZWN0IiE9PWYodCl8fG51bGw9PT10KXJldHVybiB0O3ZhciByPXRbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1yKXt2YXIgbj1yLmNhbGwodCwic3RyaW5nIik7aWYoIm9iamVjdCIhPT1mKG4pKXJldHVybiBuO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuIFN0cmluZyh0KX0obi5rZXkpLCJzeW1ib2wiPT09ZihpKT9pOlN0cmluZyhpKSksbil9dmFyIGl9ZnVuY3Rpb24geSh0LGUscil7cmV0dXJuIGUmJnYodC5wcm90b3R5cGUsZSksciYmdih0LHIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLHR9dmFyIG09cmVxdWlyZSgiZnMiKSxnPXJlcXVpcmUoImh0dHAiKSxiPXJlcXVpcmUoImh0dHBzIiksXz1yZXF1aXJlKCJ1cmwiKSx3PS9eZmlsZTpcL1wvXC9bYS16QS1aXTpcLy8sQT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7dmFyIHIsbjtwKHRoaXMsdCksdGhpcy5zb3VyY2U9ZSx0aGlzLnVybD0ocj1lLnVybCwiZmlsZToiPT09KG49Xy5wYXJzZShyKSkucHJvdG9jb2x8fG4uaG9zdD9uOi9eW2Etel06Wy9cXF0vaS50ZXN0KHIpP18ucGFyc2UoImZpbGU6Ly8vIi5jb25jYXQocikpOihuLmhvc3R8fChuLnByb3RvY29sPSJmaWxlOiIpLG4pKSx0aGlzLmlzSHR0cD0iaHR0cDoiPT09dGhpcy51cmwucHJvdG9jb2x8fCJodHRwczoiPT09dGhpcy51cmwucHJvdG9jb2wsdGhpcy5pc0ZzVXJsPSJmaWxlOiI9PT10aGlzLnVybC5wcm90b2NvbCx0aGlzLmh0dHBIZWFkZXJzPXRoaXMuaXNIdHRwJiZlLmh0dHBIZWFkZXJzfHx7fSx0aGlzLl9mdWxsUmVxdWVzdFJlYWRlcj1udWxsLHRoaXMuX3JhbmdlUmVxdWVzdFJlYWRlcnM9W119cmV0dXJuIHkodCxbe2tleToiX3Byb2dyZXNzaXZlRGF0YUxlbmd0aCIsZ2V0OmZ1bmN0aW9uKCl7dmFyIHQsZTtyZXR1cm4gbnVsbCE9PSh0PW51bGw9PT0oZT10aGlzLl9mdWxsUmVxdWVzdFJlYWRlcil8fHZvaWQgMD09PWU/dm9pZCAwOmUuX2xvYWRlZCkmJnZvaWQgMCE9PXQ/dDowfX0se2tleToiZ2V0RnVsbFJlYWRlciIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4oMCxuLmFzc2VydCkoIXRoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyLCJQREZOb2RlU3RyZWFtLmdldEZ1bGxSZWFkZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uY2UuIiksdGhpcy5fZnVsbFJlcXVlc3RSZWFkZXI9dGhpcy5pc0ZzVXJsP25ldyBUKHRoaXMpOm5ldyBFKHRoaXMpLHRoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyfX0se2tleToiZ2V0UmFuZ2VSZWFkZXIiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7aWYoZTw9dGhpcy5fcHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoKXJldHVybiBudWxsO3ZhciByPXRoaXMuaXNGc1VybD9uZXcgQyh0aGlzLHQsZSk6bmV3IFAodGhpcyx0LGUpO3JldHVybiB0aGlzLl9yYW5nZVJlcXVlc3RSZWFkZXJzLnB1c2gocikscn19LHtrZXk6ImNhbmNlbEFsbFJlcXVlc3RzIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZTtudWxsPT09KGU9dGhpcy5fZnVsbFJlcXVlc3RSZWFkZXIpfHx2b2lkIDA9PT1lfHxlLmNhbmNlbCh0KTt2YXIgcixuPWZ1bmN0aW9uKHQsZSl7dmFyIHI9InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJnRbU3ltYm9sLml0ZXJhdG9yXXx8dFsiQEBpdGVyYXRvciJdO2lmKCFyKXtpZihBcnJheS5pc0FycmF5KHQpfHwocj1mdW5jdGlvbih0LGUpe2lmKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gZCh0LGUpO3ZhciByPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KS5zbGljZSg4LC0xKTtyZXR1cm4iT2JqZWN0Ij09PXImJnQuY29uc3RydWN0b3ImJihyPXQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1yfHwiU2V0Ij09PXI/QXJyYXkuZnJvbSh0KToiQXJndW1lbnRzIj09PXJ8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KHIpP2QodCxlKTp2b2lkIDB9fSh0KSl8fGUmJnQmJiJudW1iZXIiPT10eXBlb2YgdC5sZW5ndGgpe3ImJih0PXIpO3ZhciBuPTAsaT1mdW5jdGlvbigpe307cmV0dXJue3M6aSxuOmZ1bmN0aW9uKCl7cmV0dXJuIG4+PXQubGVuZ3RoP3tkb25lOiEwfTp7ZG9uZTohMSx2YWx1ZTp0W24rK119fSxlOmZ1bmN0aW9uKHQpe3Rocm93IHR9LGY6aX19dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGl0ZXJhdGUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfXZhciBhLG89ITAscz0hMTtyZXR1cm57czpmdW5jdGlvbigpe3I9ci5jYWxsKHQpfSxuOmZ1bmN0aW9uKCl7dmFyIHQ9ci5uZXh0KCk7cmV0dXJuIG89dC5kb25lLHR9LGU6ZnVuY3Rpb24odCl7cz0hMCxhPXR9LGY6ZnVuY3Rpb24oKXt0cnl7b3x8bnVsbD09ci5yZXR1cm58fHIucmV0dXJuKCl9ZmluYWxseXtpZihzKXRocm93IGF9fX19KHRoaXMuX3JhbmdlUmVxdWVzdFJlYWRlcnMuc2xpY2UoMCkpO3RyeXtmb3Iobi5zKCk7IShyPW4ubigpKS5kb25lOylyLnZhbHVlLmNhbmNlbCh0KX1jYXRjaCh0KXtuLmUodCl9ZmluYWxseXtuLmYoKX19fV0pLHR9KCk7ZS5QREZOb2RlU3RyZWFtPUE7dmFyIGs9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe3AodGhpcyx0KSx0aGlzLl91cmw9ZS51cmwsdGhpcy5fZG9uZT0hMSx0aGlzLl9zdG9yZWRFcnJvcj1udWxsLHRoaXMub25Qcm9ncmVzcz1udWxsO3ZhciByPWUuc291cmNlO3RoaXMuX2NvbnRlbnRMZW5ndGg9ci5sZW5ndGgsdGhpcy5fbG9hZGVkPTAsdGhpcy5fZmlsZW5hbWU9bnVsbCx0aGlzLl9kaXNhYmxlUmFuZ2U9ci5kaXNhYmxlUmFuZ2V8fCExLHRoaXMuX3JhbmdlQ2h1bmtTaXplPXIucmFuZ2VDaHVua1NpemUsdGhpcy5fcmFuZ2VDaHVua1NpemV8fHRoaXMuX2Rpc2FibGVSYW5nZXx8KHRoaXMuX2Rpc2FibGVSYW5nZT0hMCksdGhpcy5faXNTdHJlYW1pbmdTdXBwb3J0ZWQ9IXIuZGlzYWJsZVN0cmVhbSx0aGlzLl9pc1JhbmdlU3VwcG9ydGVkPSFyLmRpc2FibGVSYW5nZSx0aGlzLl9yZWFkYWJsZVN0cmVhbT1udWxsLHRoaXMuX3JlYWRDYXBhYmlsaXR5PSgwLG4uY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkpKCksdGhpcy5faGVhZGVyc0NhcGFiaWxpdHk9KDAsbi5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKX12YXIgZTtyZXR1cm4geSh0LFt7a2V5OiJoZWFkZXJzUmVhZHkiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9oZWFkZXJzQ2FwYWJpbGl0eS5wcm9taXNlfX0se2tleToiZmlsZW5hbWUiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9maWxlbmFtZX19LHtrZXk6ImNvbnRlbnRMZW5ndGgiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jb250ZW50TGVuZ3RofX0se2tleToiaXNSYW5nZVN1cHBvcnRlZCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2lzUmFuZ2VTdXBwb3J0ZWR9fSx7a2V5OiJpc1N0cmVhbWluZ1N1cHBvcnRlZCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2lzU3RyZWFtaW5nU3VwcG9ydGVkfX0se2tleToicmVhZCIsdmFsdWU6KGU9aCh1KCkubWFyaygoZnVuY3Rpb24gdCgpe3ZhciBlLHIsaTtyZXR1cm4gdSgpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9yZWFkQ2FwYWJpbGl0eS5wcm9taXNlO2Nhc2UgMjppZighdGhpcy5fZG9uZSl7dC5uZXh0PTQ7YnJlYWt9cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLHt2YWx1ZTp2b2lkIDAsZG9uZTohMH0pO2Nhc2UgNDppZighdGhpcy5fc3RvcmVkRXJyb3Ipe3QubmV4dD02O2JyZWFrfXRocm93IHRoaXMuX3N0b3JlZEVycm9yO2Nhc2UgNjppZihudWxsIT09KHI9dGhpcy5fcmVhZGFibGVTdHJlYW0ucmVhZCgpKSl7dC5uZXh0PTEwO2JyZWFrfXJldHVybiB0aGlzLl9yZWFkQ2FwYWJpbGl0eT0oMCxuLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpLHQuYWJydXB0KCJyZXR1cm4iLHRoaXMucmVhZCgpKTtjYXNlIDEwOnJldHVybiB0aGlzLl9sb2FkZWQrPXIubGVuZ3RoLG51bGw9PT0oZT10aGlzLm9uUHJvZ3Jlc3MpfHx2b2lkIDA9PT1lfHxlLmNhbGwodGhpcyx7bG9hZGVkOnRoaXMuX2xvYWRlZCx0b3RhbDp0aGlzLl9jb250ZW50TGVuZ3RofSksaT1uZXcgVWludDhBcnJheShyKS5idWZmZXIsdC5hYnJ1cHQoInJldHVybiIse3ZhbHVlOmksZG9uZTohMX0pO2Nhc2UgMTQ6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKSxmdW5jdGlvbigpe3JldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pfSx7a2V5OiJjYW5jZWwiLHZhbHVlOmZ1bmN0aW9uKHQpe3RoaXMuX3JlYWRhYmxlU3RyZWFtP3RoaXMuX3JlYWRhYmxlU3RyZWFtLmRlc3Ryb3kodCk6dGhpcy5fZXJyb3IodCl9fSx7a2V5OiJfZXJyb3IiLHZhbHVlOmZ1bmN0aW9uKHQpe3RoaXMuX3N0b3JlZEVycm9yPXQsdGhpcy5fcmVhZENhcGFiaWxpdHkucmVzb2x2ZSgpfX0se2tleToiX3NldFJlYWRhYmxlU3RyZWFtIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzO3RoaXMuX3JlYWRhYmxlU3RyZWFtPXQsdC5vbigicmVhZGFibGUiLChmdW5jdGlvbigpe2UuX3JlYWRDYXBhYmlsaXR5LnJlc29sdmUoKX0pKSx0Lm9uKCJlbmQiLChmdW5jdGlvbigpe3QuZGVzdHJveSgpLGUuX2RvbmU9ITAsZS5fcmVhZENhcGFiaWxpdHkucmVzb2x2ZSgpfSkpLHQub24oImVycm9yIiwoZnVuY3Rpb24odCl7ZS5fZXJyb3IodCl9KSksIXRoaXMuX2lzU3RyZWFtaW5nU3VwcG9ydGVkJiZ0aGlzLl9pc1JhbmdlU3VwcG9ydGVkJiZ0aGlzLl9lcnJvcihuZXcgbi5BYm9ydEV4Y2VwdGlvbigic3RyZWFtaW5nIGlzIGRpc2FibGVkIikpLHRoaXMuX3N0b3JlZEVycm9yJiZ0aGlzLl9yZWFkYWJsZVN0cmVhbS5kZXN0cm95KHRoaXMuX3N0b3JlZEVycm9yKX19XSksdH0oKSxTPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXtwKHRoaXMsdCksdGhpcy5fdXJsPWUudXJsLHRoaXMuX2RvbmU9ITEsdGhpcy5fc3RvcmVkRXJyb3I9bnVsbCx0aGlzLm9uUHJvZ3Jlc3M9bnVsbCx0aGlzLl9sb2FkZWQ9MCx0aGlzLl9yZWFkYWJsZVN0cmVhbT1udWxsLHRoaXMuX3JlYWRDYXBhYmlsaXR5PSgwLG4uY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkpKCk7dmFyIHI9ZS5zb3VyY2U7dGhpcy5faXNTdHJlYW1pbmdTdXBwb3J0ZWQ9IXIuZGlzYWJsZVN0cmVhbX12YXIgZTtyZXR1cm4geSh0LFt7a2V5OiJpc1N0cmVhbWluZ1N1cHBvcnRlZCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2lzU3RyZWFtaW5nU3VwcG9ydGVkfX0se2tleToicmVhZCIsdmFsdWU6KGU9aCh1KCkubWFyaygoZnVuY3Rpb24gdCgpe3ZhciBlLHIsaTtyZXR1cm4gdSgpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9yZWFkQ2FwYWJpbGl0eS5wcm9taXNlO2Nhc2UgMjppZighdGhpcy5fZG9uZSl7dC5uZXh0PTQ7YnJlYWt9cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLHt2YWx1ZTp2b2lkIDAsZG9uZTohMH0pO2Nhc2UgNDppZighdGhpcy5fc3RvcmVkRXJyb3Ipe3QubmV4dD02O2JyZWFrfXRocm93IHRoaXMuX3N0b3JlZEVycm9yO2Nhc2UgNjppZihudWxsIT09KHI9dGhpcy5fcmVhZGFibGVTdHJlYW0ucmVhZCgpKSl7dC5uZXh0PTEwO2JyZWFrfXJldHVybiB0aGlzLl9yZWFkQ2FwYWJpbGl0eT0oMCxuLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpLHQuYWJydXB0KCJyZXR1cm4iLHRoaXMucmVhZCgpKTtjYXNlIDEwOnJldHVybiB0aGlzLl9sb2FkZWQrPXIubGVuZ3RoLG51bGw9PT0oZT10aGlzLm9uUHJvZ3Jlc3MpfHx2b2lkIDA9PT1lfHxlLmNhbGwodGhpcyx7bG9hZGVkOnRoaXMuX2xvYWRlZH0pLGk9bmV3IFVpbnQ4QXJyYXkocikuYnVmZmVyLHQuYWJydXB0KCJyZXR1cm4iLHt2YWx1ZTppLGRvbmU6ITF9KTtjYXNlIDE0OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSksZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KX0se2tleToiY2FuY2VsIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLl9yZWFkYWJsZVN0cmVhbT90aGlzLl9yZWFkYWJsZVN0cmVhbS5kZXN0cm95KHQpOnRoaXMuX2Vycm9yKHQpfX0se2tleToiX2Vycm9yIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLl9zdG9yZWRFcnJvcj10LHRoaXMuX3JlYWRDYXBhYmlsaXR5LnJlc29sdmUoKX19LHtrZXk6Il9zZXRSZWFkYWJsZVN0cmVhbSIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0aGlzLl9yZWFkYWJsZVN0cmVhbT10LHQub24oInJlYWRhYmxlIiwoZnVuY3Rpb24oKXtlLl9yZWFkQ2FwYWJpbGl0eS5yZXNvbHZlKCl9KSksdC5vbigiZW5kIiwoZnVuY3Rpb24oKXt0LmRlc3Ryb3koKSxlLl9kb25lPSEwLGUuX3JlYWRDYXBhYmlsaXR5LnJlc29sdmUoKX0pKSx0Lm9uKCJlcnJvciIsKGZ1bmN0aW9uKHQpe2UuX2Vycm9yKHQpfSkpLHRoaXMuX3N0b3JlZEVycm9yJiZ0aGlzLl9yZWFkYWJsZVN0cmVhbS5kZXN0cm95KHRoaXMuX3N0b3JlZEVycm9yKX19XSksdH0oKTtmdW5jdGlvbiB4KHQsZSl7cmV0dXJue3Byb3RvY29sOnQucHJvdG9jb2wsYXV0aDp0LmF1dGgsaG9zdDp0Lmhvc3RuYW1lLHBvcnQ6dC5wb3J0LHBhdGg6dC5wYXRoLG1ldGhvZDoiR0VUIixoZWFkZXJzOmV9fXZhciBFPWZ1bmN0aW9uKHQpe2Eocix0KTt2YXIgZT1zKHIpO2Z1bmN0aW9uIHIodCl7dmFyIGE7cCh0aGlzLHIpO3ZhciBvPWZ1bmN0aW9uKGUpe2lmKDQwND09PWUuc3RhdHVzQ29kZSl7dmFyIHI9bmV3IG4uTWlzc2luZ1BERkV4Y2VwdGlvbignTWlzc2luZyBQREYgIicuY29uY2F0KGEuX3VybCwnIi4nKSk7cmV0dXJuIGEuX3N0b3JlZEVycm9yPXIsdm9pZCBhLl9oZWFkZXJzQ2FwYWJpbGl0eS5yZWplY3Qocil9YS5faGVhZGVyc0NhcGFiaWxpdHkucmVzb2x2ZSgpLGEuX3NldFJlYWRhYmxlU3RyZWFtKGUpO3ZhciBvPWZ1bmN0aW9uKHQpe3JldHVybiBhLl9yZWFkYWJsZVN0cmVhbS5oZWFkZXJzW3QudG9Mb3dlckNhc2UoKV19LHM9KDAsaS52YWxpZGF0ZVJhbmdlUmVxdWVzdENhcGFiaWxpdGllcykoe2dldFJlc3BvbnNlSGVhZGVyOm8saXNIdHRwOnQuaXNIdHRwLHJhbmdlQ2h1bmtTaXplOmEuX3JhbmdlQ2h1bmtTaXplLGRpc2FibGVSYW5nZTphLl9kaXNhYmxlUmFuZ2V9KSxsPXMuYWxsb3dSYW5nZVJlcXVlc3RzLHU9cy5zdWdnZXN0ZWRMZW5ndGg7YS5faXNSYW5nZVN1cHBvcnRlZD1sLGEuX2NvbnRlbnRMZW5ndGg9dXx8YS5fY29udGVudExlbmd0aCxhLl9maWxlbmFtZT0oMCxpLmV4dHJhY3RGaWxlbmFtZUZyb21IZWFkZXIpKG8pfTtyZXR1cm4oYT1lLmNhbGwodGhpcyx0KSkuX3JlcXVlc3Q9bnVsbCwiaHR0cDoiPT09YS5fdXJsLnByb3RvY29sP2EuX3JlcXVlc3Q9Zy5yZXF1ZXN0KHgoYS5fdXJsLHQuaHR0cEhlYWRlcnMpLG8pOmEuX3JlcXVlc3Q9Yi5yZXF1ZXN0KHgoYS5fdXJsLHQuaHR0cEhlYWRlcnMpLG8pLGEuX3JlcXVlc3Qub24oImVycm9yIiwoZnVuY3Rpb24odCl7YS5fc3RvcmVkRXJyb3I9dCxhLl9oZWFkZXJzQ2FwYWJpbGl0eS5yZWplY3QodCl9KSksYS5fcmVxdWVzdC5lbmQoKSxhfXJldHVybiB5KHIpfShrKSxQPWZ1bmN0aW9uKHQpe2Eocix0KTt2YXIgZT1zKHIpO2Z1bmN0aW9uIHIodCxpLGEpe3ZhciBvO2Zvcih2YXIgcyBpbiBwKHRoaXMsciksKG89ZS5jYWxsKHRoaXMsdCkpLl9odHRwSGVhZGVycz17fSx0Lmh0dHBIZWFkZXJzKXt2YXIgbD10Lmh0dHBIZWFkZXJzW3NdO3ZvaWQgMCE9PWwmJihvLl9odHRwSGVhZGVyc1tzXT1sKX1vLl9odHRwSGVhZGVycy5SYW5nZT0iYnl0ZXM9Ii5jb25jYXQoaSwiLSIpLmNvbmNhdChhLTEpO3ZhciB1PWZ1bmN0aW9uKHQpe2lmKDQwNCE9PXQuc3RhdHVzQ29kZSlvLl9zZXRSZWFkYWJsZVN0cmVhbSh0KTtlbHNle3ZhciBlPW5ldyBuLk1pc3NpbmdQREZFeGNlcHRpb24oJ01pc3NpbmcgUERGICInLmNvbmNhdChvLl91cmwsJyIuJykpO28uX3N0b3JlZEVycm9yPWV9fTtyZXR1cm4gby5fcmVxdWVzdD1udWxsLCJodHRwOiI9PT1vLl91cmwucHJvdG9jb2w/by5fcmVxdWVzdD1nLnJlcXVlc3QoeChvLl91cmwsby5faHR0cEhlYWRlcnMpLHUpOm8uX3JlcXVlc3Q9Yi5yZXF1ZXN0KHgoby5fdXJsLG8uX2h0dHBIZWFkZXJzKSx1KSxvLl9yZXF1ZXN0Lm9uKCJlcnJvciIsKGZ1bmN0aW9uKHQpe28uX3N0b3JlZEVycm9yPXR9KSksby5fcmVxdWVzdC5lbmQoKSxvfXJldHVybiB5KHIpfShTKSxUPWZ1bmN0aW9uKHQpe2Eocix0KTt2YXIgZT1zKHIpO2Z1bmN0aW9uIHIodCl7dmFyIGk7cCh0aGlzLHIpLGk9ZS5jYWxsKHRoaXMsdCk7dmFyIGE9ZGVjb2RlVVJJQ29tcG9uZW50KGkuX3VybC5wYXRoKTtyZXR1cm4gdy50ZXN0KGkuX3VybC5ocmVmKSYmKGE9YS5yZXBsYWNlKC9eXC8vLCIiKSksbS5sc3RhdChhLChmdW5jdGlvbih0LGUpe2lmKHQpcmV0dXJuIkVOT0VOVCI9PT10LmNvZGUmJih0PW5ldyBuLk1pc3NpbmdQREZFeGNlcHRpb24oJ01pc3NpbmcgUERGICInLmNvbmNhdChhLCciLicpKSksaS5fc3RvcmVkRXJyb3I9dCx2b2lkIGkuX2hlYWRlcnNDYXBhYmlsaXR5LnJlamVjdCh0KTtpLl9jb250ZW50TGVuZ3RoPWUuc2l6ZSxpLl9zZXRSZWFkYWJsZVN0cmVhbShtLmNyZWF0ZVJlYWRTdHJlYW0oYSkpLGkuX2hlYWRlcnNDYXBhYmlsaXR5LnJlc29sdmUoKX0pKSxpfXJldHVybiB5KHIpfShrKSxDPWZ1bmN0aW9uKHQpe2Eocix0KTt2YXIgZT1zKHIpO2Z1bmN0aW9uIHIodCxuLGkpe3ZhciBhO3AodGhpcyxyKSxhPWUuY2FsbCh0aGlzLHQpO3ZhciBvPWRlY29kZVVSSUNvbXBvbmVudChhLl91cmwucGF0aCk7cmV0dXJuIHcudGVzdChhLl91cmwuaHJlZikmJihvPW8ucmVwbGFjZSgvXlwvLywiIikpLGEuX3NldFJlYWRhYmxlU3RyZWFtKG0uY3JlYXRlUmVhZFN0cmVhbShvLHtzdGFydDpuLGVuZDppLTF9KSksYX1yZXR1cm4geShyKX0oUyl9LCh0LGUscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZS5jcmVhdGVSZXNwb25zZVN0YXR1c0Vycm9yPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIDQwND09PXR8fDA9PT10JiZlLnN0YXJ0c1dpdGgoImZpbGU6Iik/bmV3IG4uTWlzc2luZ1BERkV4Y2VwdGlvbignTWlzc2luZyBQREYgIicrZSsnIi4nKTpuZXcgbi5VbmV4cGVjdGVkUmVzcG9uc2VFeGNlcHRpb24oIlVuZXhwZWN0ZWQgc2VydmVyIHJlc3BvbnNlICgiLmNvbmNhdCh0LCcpIHdoaWxlIHJldHJpZXZpbmcgUERGICInKS5jb25jYXQoZSwnIi4nKSx0KX0sZS5leHRyYWN0RmlsZW5hbWVGcm9tSGVhZGVyPWZ1bmN0aW9uKHQpe3ZhciBlPXQoIkNvbnRlbnQtRGlzcG9zaXRpb24iKTtpZihlKXt2YXIgcj0oMCxpLmdldEZpbGVuYW1lRnJvbUNvbnRlbnREaXNwb3NpdGlvbkhlYWRlcikoZSk7aWYoci5pbmNsdWRlcygiJSIpKXRyeXtyPWRlY29kZVVSSUNvbXBvbmVudChyKX1jYXRjaCh0KXt9aWYoKDAsYS5pc1BkZkZpbGUpKHIpKXJldHVybiByfXJldHVybiBudWxsfSxlLnZhbGlkYXRlUmFuZ2VSZXF1ZXN0Q2FwYWJpbGl0aWVzPWZ1bmN0aW9uKHQpe3ZhciBlPXQuZ2V0UmVzcG9uc2VIZWFkZXIscj10LmlzSHR0cCxuPXQucmFuZ2VDaHVua1NpemUsaT10LmRpc2FibGVSYW5nZSxhPXthbGxvd1JhbmdlUmVxdWVzdHM6ITEsc3VnZ2VzdGVkTGVuZ3RoOnZvaWQgMH0sbz1wYXJzZUludChlKCJDb250ZW50LUxlbmd0aCIpLDEwKTtyZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihvKT8oYS5zdWdnZXN0ZWRMZW5ndGg9byxvPD0yKm58fGl8fCFyfHwiYnl0ZXMiIT09ZSgiQWNjZXB0LVJhbmdlcyIpfHwiaWRlbnRpdHkiIT09KGUoIkNvbnRlbnQtRW5jb2RpbmciKXx8ImlkZW50aXR5Iil8fChhLmFsbG93UmFuZ2VSZXF1ZXN0cz0hMCksYSk6YX0sZS52YWxpZGF0ZVJlc3BvbnNlU3RhdHVzPWZ1bmN0aW9uKHQpe3JldHVybiAyMDA9PT10fHwyMDY9PT10fTt2YXIgbj1yKDEpLGk9cigxNjMpLGE9cigxMzcpfSwodCxlLHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGUuZ2V0RmlsZW5hbWVGcm9tQ29udGVudERpc3Bvc2l0aW9uSGVhZGVyPWZ1bmN0aW9uKHQpe3ZhciBlPSEwLHI9cygiZmlsZW5hbWVcXCoiLCJpIikuZXhlYyh0KTtpZihyKXt2YXIgYT1jKHI9clsxXSk7cmV0dXJuIHUoYT1mKGE9aChhPXVuZXNjYXBlKGEpKSkpfWlmKHI9ZnVuY3Rpb24odCl7Zm9yKHZhciBlLHI9W10sbj1zKCJmaWxlbmFtZVxcKigoPyEwXFxkKVxcZCspKFxcKj8pIiwiaWciKTtudWxsIT09KGU9bi5leGVjKHQpKTspe3ZhciBhPWkoZSw0KSxvPWFbMV0sbD1hWzJdLHU9YVszXTtpZigobz1wYXJzZUludChvLDEwKSlpbiByKXtpZigwPT09bylicmVha31lbHNlIHJbb109W2wsdV19Zm9yKHZhciBmPVtdLGQ9MDtkPHIubGVuZ3RoJiZkIGluIHI7KytkKXt2YXIgcD1pKHJbZF0sMiksdj1wWzBdLHk9cFsxXTt5PWMoeSksdiYmKHk9dW5lc2NhcGUoeSksMD09PWQmJih5PWgoeSkpKSxmLnB1c2goeSl9cmV0dXJuIGYuam9pbigiIil9KHQpKXJldHVybiB1KGYocikpO2lmKHI9cygiZmlsZW5hbWUiLCJpIikuZXhlYyh0KSl7dmFyIG89YyhyPXJbMV0pO3JldHVybiB1KG89ZihvKSl9ZnVuY3Rpb24gcyh0LGUpe3JldHVybiBuZXcgUmVnRXhwKCIoPzpefDspXFxzKiIrdCsnXFxzKj1cXHMqKFteIjtcXHNdW147XFxzXSp8Iig/OlteIlxcXFxdfFxcXFwiPykrIj8pJyxlKX1mdW5jdGlvbiBsKHQscil7aWYodCl7aWYoIS9eW1x4MDAtXHhGRl0rJC8udGVzdChyKSlyZXR1cm4gcjt0cnl7dmFyIGk9bmV3IFRleHREZWNvZGVyKHQse2ZhdGFsOiEwfSksYT0oMCxuLnN0cmluZ1RvQnl0ZXMpKHIpO3I9aS5kZWNvZGUoYSksZT0hMX1jYXRjaCh0KXt9fXJldHVybiByfWZ1bmN0aW9uIHUodCl7cmV0dXJuIGUmJi9bXHg4MC1ceGZmXS8udGVzdCh0KSYmKHQ9bCgidXRmLTgiLHQpLGUmJih0PWwoImlzby04ODU5LTEiLHQpKSksdH1mdW5jdGlvbiBjKHQpe2lmKHQuc3RhcnRzV2l0aCgnIicpKXtmb3IodmFyIGU9dC5zbGljZSgxKS5zcGxpdCgnXFwiJykscj0wO3I8ZS5sZW5ndGg7KytyKXt2YXIgbj1lW3JdLmluZGV4T2YoJyInKTstMSE9PW4mJihlW3JdPWVbcl0uc2xpY2UoMCxuKSxlLmxlbmd0aD1yKzEpLGVbcl09ZVtyXS5yZXBsYWNlKC9cXCguKS9nLCIkMSIpfXQ9ZS5qb2luKCciJyl9cmV0dXJuIHR9ZnVuY3Rpb24gaCh0KXt2YXIgZT10LmluZGV4T2YoIiciKTtyZXR1cm4tMT09PWU/dDpsKHQuc2xpY2UoMCxlKSx0LnNsaWNlKGUrMSkucmVwbGFjZSgvXlteJ10qJy8sIiIpKX1mdW5jdGlvbiBmKHQpe3JldHVybiF0LnN0YXJ0c1dpdGgoIj0/Iil8fC9bXHgwMC1ceDE5XHg4MC1ceGZmXS8udGVzdCh0KT90OnQucmVwbGFjZSgvPVw/KFtcdy1dKilcPyhbUXFCYl0pXD8oKD86W14/XXxcPyg/IT0pKSopXD89L2csKGZ1bmN0aW9uKHQsZSxyLG4pe2lmKCJxIj09PXJ8fCJRIj09PXIpcmV0dXJuIGwoZSxuPShuPW4ucmVwbGFjZSgvXy9nLCIgIikpLnJlcGxhY2UoLz0oWzAtOWEtZkEtRl17Mn0pL2csKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUocGFyc2VJbnQoZSwxNikpfSkpKTt0cnl7bj1hdG9iKG4pfWNhdGNoKHQpe31yZXR1cm4gbChlLG4pfSkpfXJldHVybiIifTt2YXIgbj1yKDEpO2Z1bmN0aW9uIGkodCxlKXtyZXR1cm4gZnVuY3Rpb24odCl7aWYoQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gdH0odCl8fGZ1bmN0aW9uKHQsZSl7dmFyIHI9bnVsbD09dD9udWxsOiJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZ0W1N5bWJvbC5pdGVyYXRvcl18fHRbIkBAaXRlcmF0b3IiXTtpZihudWxsIT1yKXt2YXIgbixpLGEsbyxzPVtdLGw9ITAsdT0hMTt0cnl7aWYoYT0ocj1yLmNhbGwodCkpLm5leHQsMD09PWUpe2lmKE9iamVjdChyKSE9PXIpcmV0dXJuO2w9ITF9ZWxzZSBmb3IoOyEobD0obj1hLmNhbGwocikpLmRvbmUpJiYocy5wdXNoKG4udmFsdWUpLHMubGVuZ3RoIT09ZSk7bD0hMCk7fWNhdGNoKHQpe3U9ITAsaT10fWZpbmFsbHl7dHJ5e2lmKCFsJiZudWxsIT1yLnJldHVybiYmKG89ci5yZXR1cm4oKSxPYmplY3QobykhPT1vKSlyZXR1cm59ZmluYWxseXtpZih1KXRocm93IGl9fXJldHVybiBzfX0odCxlKXx8ZnVuY3Rpb24odCxlKXtpZih0KXtpZigic3RyaW5nIj09dHlwZW9mIHQpcmV0dXJuIGEodCxlKTt2YXIgcj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCkuc2xpY2UoOCwtMSk7cmV0dXJuIk9iamVjdCI9PT1yJiZ0LmNvbnN0cnVjdG9yJiYocj10LmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09cnx8IlNldCI9PT1yP0FycmF5LmZyb20odCk6IkFyZ3VtZW50cyI9PT1yfHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChyKT9hKHQsZSk6dm9pZCAwfX0odCxlKXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIGEodCxlKXsobnVsbD09ZXx8ZT50Lmxlbmd0aCkmJihlPXQubGVuZ3RoKTtmb3IodmFyIHI9MCxuPW5ldyBBcnJheShlKTtyPGU7cisrKW5bcl09dFtyXTtyZXR1cm4gbn19LCh0LGUscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZS5QREZOZXR3b3JrU3RyZWFtPXZvaWQgMDt2YXIgbj1yKDEpLGk9cigxNjIpO2Z1bmN0aW9uIGEoKXthPWZ1bmN0aW9uKCl7cmV0dXJuIHR9O3ZhciB0PXt9LGU9T2JqZWN0LnByb3RvdHlwZSxyPWUuaGFzT3duUHJvcGVydHksbj1PYmplY3QuZGVmaW5lUHJvcGVydHl8fGZ1bmN0aW9uKHQsZSxyKXt0W2VdPXIudmFsdWV9LGk9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbD9TeW1ib2w6e30sbz1pLml0ZXJhdG9yfHwiQEBpdGVyYXRvciIscz1pLmFzeW5jSXRlcmF0b3J8fCJAQGFzeW5jSXRlcmF0b3IiLGw9aS50b1N0cmluZ1RhZ3x8IkBAdG9TdHJpbmdUYWciO2Z1bmN0aW9uIHUodCxlLHIpe3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLHt2YWx1ZTpyLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSksdFtlXX10cnl7dSh7fSwiIil9Y2F0Y2godCl7dT1mdW5jdGlvbih0LGUscil7cmV0dXJuIHRbZV09cn19ZnVuY3Rpb24gaCh0LGUscixpKXt2YXIgYT1lJiZlLnByb3RvdHlwZSBpbnN0YW5jZW9mIHA/ZTpwLG89T2JqZWN0LmNyZWF0ZShhLnByb3RvdHlwZSkscz1uZXcgUChpfHxbXSk7cmV0dXJuIG4obywiX2ludm9rZSIse3ZhbHVlOmsodCxyLHMpfSksb31mdW5jdGlvbiBmKHQsZSxyKXt0cnl7cmV0dXJue3R5cGU6Im5vcm1hbCIsYXJnOnQuY2FsbChlLHIpfX1jYXRjaCh0KXtyZXR1cm57dHlwZToidGhyb3ciLGFyZzp0fX19dC53cmFwPWg7dmFyIGQ9e307ZnVuY3Rpb24gcCgpe31mdW5jdGlvbiB2KCl7fWZ1bmN0aW9uIHkoKXt9dmFyIG09e307dShtLG8sKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSk7dmFyIGc9T2JqZWN0LmdldFByb3RvdHlwZU9mLGI9ZyYmZyhnKFQoW10pKSk7YiYmYiE9PWUmJnIuY2FsbChiLG8pJiYobT1iKTt2YXIgXz15LnByb3RvdHlwZT1wLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKG0pO2Z1bmN0aW9uIHcodCl7WyJuZXh0IiwidGhyb3ciLCJyZXR1cm4iXS5mb3JFYWNoKChmdW5jdGlvbihlKXt1KHQsZSwoZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2ludm9rZShlLHQpfSkpfSkpfWZ1bmN0aW9uIEEodCxlKXtmdW5jdGlvbiBpKG4sYSxvLHMpe3ZhciBsPWYodFtuXSx0LGEpO2lmKCJ0aHJvdyIhPT1sLnR5cGUpe3ZhciB1PWwuYXJnLGg9dS52YWx1ZTtyZXR1cm4gaCYmIm9iamVjdCI9PWMoaCkmJnIuY2FsbChoLCJfX2F3YWl0Iik/ZS5yZXNvbHZlKGguX19hd2FpdCkudGhlbigoZnVuY3Rpb24odCl7aSgibmV4dCIsdCxvLHMpfSksKGZ1bmN0aW9uKHQpe2koInRocm93Iix0LG8scyl9KSk6ZS5yZXNvbHZlKGgpLnRoZW4oKGZ1bmN0aW9uKHQpe3UudmFsdWU9dCxvKHUpfSksKGZ1bmN0aW9uKHQpe3JldHVybiBpKCJ0aHJvdyIsdCxvLHMpfSkpfXMobC5hcmcpfXZhciBhO24odGhpcywiX2ludm9rZSIse3ZhbHVlOmZ1bmN0aW9uKHQscil7ZnVuY3Rpb24gbigpe3JldHVybiBuZXcgZSgoZnVuY3Rpb24oZSxuKXtpKHQscixlLG4pfSkpfXJldHVybiBhPWE/YS50aGVuKG4sbik6bigpfX0pfWZ1bmN0aW9uIGsodCxlLHIpe3ZhciBuPSJzdXNwZW5kZWRTdGFydCI7cmV0dXJuIGZ1bmN0aW9uKGksYSl7aWYoImV4ZWN1dGluZyI9PT1uKXRocm93IG5ldyBFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgcnVubmluZyIpO2lmKCJjb21wbGV0ZWQiPT09bil7aWYoInRocm93Ij09PWkpdGhyb3cgYTtyZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9fWZvcihyLm1ldGhvZD1pLHIuYXJnPWE7Oyl7dmFyIG89ci5kZWxlZ2F0ZTtpZihvKXt2YXIgcz1TKG8scik7aWYocyl7aWYocz09PWQpY29udGludWU7cmV0dXJuIHN9fWlmKCJuZXh0Ij09PXIubWV0aG9kKXIuc2VudD1yLl9zZW50PXIuYXJnO2Vsc2UgaWYoInRocm93Ij09PXIubWV0aG9kKXtpZigic3VzcGVuZGVkU3RhcnQiPT09bil0aHJvdyBuPSJjb21wbGV0ZWQiLHIuYXJnO3IuZGlzcGF0Y2hFeGNlcHRpb24oci5hcmcpfWVsc2UicmV0dXJuIj09PXIubWV0aG9kJiZyLmFicnVwdCgicmV0dXJuIixyLmFyZyk7bj0iZXhlY3V0aW5nIjt2YXIgbD1mKHQsZSxyKTtpZigibm9ybWFsIj09PWwudHlwZSl7aWYobj1yLmRvbmU/ImNvbXBsZXRlZCI6InN1c3BlbmRlZFlpZWxkIixsLmFyZz09PWQpY29udGludWU7cmV0dXJue3ZhbHVlOmwuYXJnLGRvbmU6ci5kb25lfX0idGhyb3ciPT09bC50eXBlJiYobj0iY29tcGxldGVkIixyLm1ldGhvZD0idGhyb3ciLHIuYXJnPWwuYXJnKX19fWZ1bmN0aW9uIFModCxlKXt2YXIgcj1lLm1ldGhvZCxuPXQuaXRlcmF0b3Jbcl07aWYodm9pZCAwPT09bilyZXR1cm4gZS5kZWxlZ2F0ZT1udWxsLCJ0aHJvdyI9PT1yJiZ0Lml0ZXJhdG9yLnJldHVybiYmKGUubWV0aG9kPSJyZXR1cm4iLGUuYXJnPXZvaWQgMCxTKHQsZSksInRocm93Ij09PWUubWV0aG9kKXx8InJldHVybiIhPT1yJiYoZS5tZXRob2Q9InRocm93IixlLmFyZz1uZXcgVHlwZUVycm9yKCJUaGUgaXRlcmF0b3IgZG9lcyBub3QgcHJvdmlkZSBhICciK3IrIicgbWV0aG9kIikpLGQ7dmFyIGk9ZihuLHQuaXRlcmF0b3IsZS5hcmcpO2lmKCJ0aHJvdyI9PT1pLnR5cGUpcmV0dXJuIGUubWV0aG9kPSJ0aHJvdyIsZS5hcmc9aS5hcmcsZS5kZWxlZ2F0ZT1udWxsLGQ7dmFyIGE9aS5hcmc7cmV0dXJuIGE/YS5kb25lPyhlW3QucmVzdWx0TmFtZV09YS52YWx1ZSxlLm5leHQ9dC5uZXh0TG9jLCJyZXR1cm4iIT09ZS5tZXRob2QmJihlLm1ldGhvZD0ibmV4dCIsZS5hcmc9dm9pZCAwKSxlLmRlbGVnYXRlPW51bGwsZCk6YTooZS5tZXRob2Q9InRocm93IixlLmFyZz1uZXcgVHlwZUVycm9yKCJpdGVyYXRvciByZXN1bHQgaXMgbm90IGFuIG9iamVjdCIpLGUuZGVsZWdhdGU9bnVsbCxkKX1mdW5jdGlvbiB4KHQpe3ZhciBlPXt0cnlMb2M6dFswXX07MSBpbiB0JiYoZS5jYXRjaExvYz10WzFdKSwyIGluIHQmJihlLmZpbmFsbHlMb2M9dFsyXSxlLmFmdGVyTG9jPXRbM10pLHRoaXMudHJ5RW50cmllcy5wdXNoKGUpfWZ1bmN0aW9uIEUodCl7dmFyIGU9dC5jb21wbGV0aW9ufHx7fTtlLnR5cGU9Im5vcm1hbCIsZGVsZXRlIGUuYXJnLHQuY29tcGxldGlvbj1lfWZ1bmN0aW9uIFAodCl7dGhpcy50cnlFbnRyaWVzPVt7dHJ5TG9jOiJyb290In1dLHQuZm9yRWFjaCh4LHRoaXMpLHRoaXMucmVzZXQoITApfWZ1bmN0aW9uIFQodCl7aWYodCl7dmFyIGU9dFtvXTtpZihlKXJldHVybiBlLmNhbGwodCk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHQubmV4dClyZXR1cm4gdDtpZighaXNOYU4odC5sZW5ndGgpKXt2YXIgbj0tMSxpPWZ1bmN0aW9uIGUoKXtmb3IoOysrbjx0Lmxlbmd0aDspaWYoci5jYWxsKHQsbikpcmV0dXJuIGUudmFsdWU9dFtuXSxlLmRvbmU9ITEsZTtyZXR1cm4gZS52YWx1ZT12b2lkIDAsZS5kb25lPSEwLGV9O3JldHVybiBpLm5leHQ9aX19cmV0dXJue25leHQ6Q319ZnVuY3Rpb24gQygpe3JldHVybnt2YWx1ZTp2b2lkIDAsZG9uZTohMH19cmV0dXJuIHYucHJvdG90eXBlPXksbihfLCJjb25zdHJ1Y3RvciIse3ZhbHVlOnksY29uZmlndXJhYmxlOiEwfSksbih5LCJjb25zdHJ1Y3RvciIse3ZhbHVlOnYsY29uZmlndXJhYmxlOiEwfSksdi5kaXNwbGF5TmFtZT11KHksbCwiR2VuZXJhdG9yRnVuY3Rpb24iKSx0LmlzR2VuZXJhdG9yRnVuY3Rpb249ZnVuY3Rpb24odCl7dmFyIGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQmJnQuY29uc3RydWN0b3I7cmV0dXJuISFlJiYoZT09PXZ8fCJHZW5lcmF0b3JGdW5jdGlvbiI9PT0oZS5kaXNwbGF5TmFtZXx8ZS5uYW1lKSl9LHQubWFyaz1mdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZih0LHkpOih0Ll9fcHJvdG9fXz15LHUodCxsLCJHZW5lcmF0b3JGdW5jdGlvbiIpKSx0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKF8pLHR9LHQuYXdyYXA9ZnVuY3Rpb24odCl7cmV0dXJue19fYXdhaXQ6dH19LHcoQS5wcm90b3R5cGUpLHUoQS5wcm90b3R5cGUscywoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSx0LkFzeW5jSXRlcmF0b3I9QSx0LmFzeW5jPWZ1bmN0aW9uKGUscixuLGksYSl7dm9pZCAwPT09YSYmKGE9UHJvbWlzZSk7dmFyIG89bmV3IEEoaChlLHIsbixpKSxhKTtyZXR1cm4gdC5pc0dlbmVyYXRvckZ1bmN0aW9uKHIpP286by5uZXh0KCkudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIHQuZG9uZT90LnZhbHVlOm8ubmV4dCgpfSkpfSx3KF8pLHUoXyxsLCJHZW5lcmF0b3IiKSx1KF8sbywoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSx1KF8sInRvU3RyaW5nIiwoZnVuY3Rpb24oKXtyZXR1cm4iW29iamVjdCBHZW5lcmF0b3JdIn0pKSx0LmtleXM9ZnVuY3Rpb24odCl7dmFyIGU9T2JqZWN0KHQpLHI9W107Zm9yKHZhciBuIGluIGUpci5wdXNoKG4pO3JldHVybiByLnJldmVyc2UoKSxmdW5jdGlvbiB0KCl7Zm9yKDtyLmxlbmd0aDspe3ZhciBuPXIucG9wKCk7aWYobiBpbiBlKXJldHVybiB0LnZhbHVlPW4sdC5kb25lPSExLHR9cmV0dXJuIHQuZG9uZT0hMCx0fX0sdC52YWx1ZXM9VCxQLnByb3RvdHlwZT17Y29uc3RydWN0b3I6UCxyZXNldDpmdW5jdGlvbih0KXtpZih0aGlzLnByZXY9MCx0aGlzLm5leHQ9MCx0aGlzLnNlbnQ9dGhpcy5fc2VudD12b2lkIDAsdGhpcy5kb25lPSExLHRoaXMuZGVsZWdhdGU9bnVsbCx0aGlzLm1ldGhvZD0ibmV4dCIsdGhpcy5hcmc9dm9pZCAwLHRoaXMudHJ5RW50cmllcy5mb3JFYWNoKEUpLCF0KWZvcih2YXIgZSBpbiB0aGlzKSJ0Ij09PWUuY2hhckF0KDApJiZyLmNhbGwodGhpcyxlKSYmIWlzTmFOKCtlLnNsaWNlKDEpKSYmKHRoaXNbZV09dm9pZCAwKX0sc3RvcDpmdW5jdGlvbigpe3RoaXMuZG9uZT0hMDt2YXIgdD10aGlzLnRyeUVudHJpZXNbMF0uY29tcGxldGlvbjtpZigidGhyb3ciPT09dC50eXBlKXRocm93IHQuYXJnO3JldHVybiB0aGlzLnJ2YWx9LGRpc3BhdGNoRXhjZXB0aW9uOmZ1bmN0aW9uKHQpe2lmKHRoaXMuZG9uZSl0aHJvdyB0O3ZhciBlPXRoaXM7ZnVuY3Rpb24gbihyLG4pe3JldHVybiBvLnR5cGU9InRocm93IixvLmFyZz10LGUubmV4dD1yLG4mJihlLm1ldGhvZD0ibmV4dCIsZS5hcmc9dm9pZCAwKSwhIW59Zm9yKHZhciBpPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtpPj0wOy0taSl7dmFyIGE9dGhpcy50cnlFbnRyaWVzW2ldLG89YS5jb21wbGV0aW9uO2lmKCJyb290Ij09PWEudHJ5TG9jKXJldHVybiBuKCJlbmQiKTtpZihhLnRyeUxvYzw9dGhpcy5wcmV2KXt2YXIgcz1yLmNhbGwoYSwiY2F0Y2hMb2MiKSxsPXIuY2FsbChhLCJmaW5hbGx5TG9jIik7aWYocyYmbCl7aWYodGhpcy5wcmV2PGEuY2F0Y2hMb2MpcmV0dXJuIG4oYS5jYXRjaExvYywhMCk7aWYodGhpcy5wcmV2PGEuZmluYWxseUxvYylyZXR1cm4gbihhLmZpbmFsbHlMb2MpfWVsc2UgaWYocyl7aWYodGhpcy5wcmV2PGEuY2F0Y2hMb2MpcmV0dXJuIG4oYS5jYXRjaExvYywhMCl9ZWxzZXtpZighbCl0aHJvdyBuZXcgRXJyb3IoInRyeSBzdGF0ZW1lbnQgd2l0aG91dCBjYXRjaCBvciBmaW5hbGx5Iik7aWYodGhpcy5wcmV2PGEuZmluYWxseUxvYylyZXR1cm4gbihhLmZpbmFsbHlMb2MpfX19fSxhYnJ1cHQ6ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO24+PTA7LS1uKXt2YXIgaT10aGlzLnRyeUVudHJpZXNbbl07aWYoaS50cnlMb2M8PXRoaXMucHJldiYmci5jYWxsKGksImZpbmFsbHlMb2MiKSYmdGhpcy5wcmV2PGkuZmluYWxseUxvYyl7dmFyIGE9aTticmVha319YSYmKCJicmVhayI9PT10fHwiY29udGludWUiPT09dCkmJmEudHJ5TG9jPD1lJiZlPD1hLmZpbmFsbHlMb2MmJihhPW51bGwpO3ZhciBvPWE/YS5jb21wbGV0aW9uOnt9O3JldHVybiBvLnR5cGU9dCxvLmFyZz1lLGE/KHRoaXMubWV0aG9kPSJuZXh0Iix0aGlzLm5leHQ9YS5maW5hbGx5TG9jLGQpOnRoaXMuY29tcGxldGUobyl9LGNvbXBsZXRlOmZ1bmN0aW9uKHQsZSl7aWYoInRocm93Ij09PXQudHlwZSl0aHJvdyB0LmFyZztyZXR1cm4iYnJlYWsiPT09dC50eXBlfHwiY29udGludWUiPT09dC50eXBlP3RoaXMubmV4dD10LmFyZzoicmV0dXJuIj09PXQudHlwZT8odGhpcy5ydmFsPXRoaXMuYXJnPXQuYXJnLHRoaXMubWV0aG9kPSJyZXR1cm4iLHRoaXMubmV4dD0iZW5kIik6Im5vcm1hbCI9PT10LnR5cGUmJmUmJih0aGlzLm5leHQ9ZSksZH0sZmluaXNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7ZT49MDstLWUpe3ZhciByPXRoaXMudHJ5RW50cmllc1tlXTtpZihyLmZpbmFsbHlMb2M9PT10KXJldHVybiB0aGlzLmNvbXBsZXRlKHIuY29tcGxldGlvbixyLmFmdGVyTG9jKSxFKHIpLGR9fSxjYXRjaDpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2U+PTA7LS1lKXt2YXIgcj10aGlzLnRyeUVudHJpZXNbZV07aWYoci50cnlMb2M9PT10KXt2YXIgbj1yLmNvbXBsZXRpb247aWYoInRocm93Ij09PW4udHlwZSl7dmFyIGk9bi5hcmc7RShyKX1yZXR1cm4gaX19dGhyb3cgbmV3IEVycm9yKCJpbGxlZ2FsIGNhdGNoIGF0dGVtcHQiKX0sZGVsZWdhdGVZaWVsZDpmdW5jdGlvbih0LGUscil7cmV0dXJuIHRoaXMuZGVsZWdhdGU9e2l0ZXJhdG9yOlQodCkscmVzdWx0TmFtZTplLG5leHRMb2M6cn0sIm5leHQiPT09dGhpcy5tZXRob2QmJih0aGlzLmFyZz12b2lkIDApLGR9fSx0fWZ1bmN0aW9uIG8odCxlLHIsbixpLGEsbyl7dHJ5e3ZhciBzPXRbYV0obyksbD1zLnZhbHVlfWNhdGNoKHQpe3JldHVybiB2b2lkIHIodCl9cy5kb25lP2UobCk6UHJvbWlzZS5yZXNvbHZlKGwpLnRoZW4obixpKX1mdW5jdGlvbiBzKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXRoaXMscj1hcmd1bWVudHM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihuLGkpe3ZhciBhPXQuYXBwbHkoZSxyKTtmdW5jdGlvbiBzKHQpe28oYSxuLGkscyxsLCJuZXh0Iix0KX1mdW5jdGlvbiBsKHQpe28oYSxuLGkscyxsLCJ0aHJvdyIsdCl9cyh2b2lkIDApfSkpfX1mdW5jdGlvbiBsKHQsZSl7dmFyIHI9InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJnRbU3ltYm9sLml0ZXJhdG9yXXx8dFsiQEBpdGVyYXRvciJdO2lmKCFyKXtpZihBcnJheS5pc0FycmF5KHQpfHwocj1mdW5jdGlvbih0LGUpe2lmKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gdSh0LGUpO3ZhciByPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KS5zbGljZSg4LC0xKTtyZXR1cm4iT2JqZWN0Ij09PXImJnQuY29uc3RydWN0b3ImJihyPXQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1yfHwiU2V0Ij09PXI/QXJyYXkuZnJvbSh0KToiQXJndW1lbnRzIj09PXJ8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KHIpP3UodCxlKTp2b2lkIDB9fSh0KSl8fGUmJnQmJiJudW1iZXIiPT10eXBlb2YgdC5sZW5ndGgpe3ImJih0PXIpO3ZhciBuPTAsaT1mdW5jdGlvbigpe307cmV0dXJue3M6aSxuOmZ1bmN0aW9uKCl7cmV0dXJuIG4+PXQubGVuZ3RoP3tkb25lOiEwfTp7ZG9uZTohMSx2YWx1ZTp0W24rK119fSxlOmZ1bmN0aW9uKHQpe3Rocm93IHR9LGY6aX19dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGl0ZXJhdGUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfXZhciBhLG89ITAscz0hMTtyZXR1cm57czpmdW5jdGlvbigpe3I9ci5jYWxsKHQpfSxuOmZ1bmN0aW9uKCl7dmFyIHQ9ci5uZXh0KCk7cmV0dXJuIG89dC5kb25lLHR9LGU6ZnVuY3Rpb24odCl7cz0hMCxhPXR9LGY6ZnVuY3Rpb24oKXt0cnl7b3x8bnVsbD09ci5yZXR1cm58fHIucmV0dXJuKCl9ZmluYWxseXtpZihzKXRocm93IGF9fX19ZnVuY3Rpb24gdSh0LGUpeyhudWxsPT1lfHxlPnQubGVuZ3RoKSYmKGU9dC5sZW5ndGgpO2Zvcih2YXIgcj0wLG49bmV3IEFycmF5KGUpO3I8ZTtyKyspbltyXT10W3JdO3JldHVybiBufWZ1bmN0aW9uIGModCl7cmV0dXJuIGM9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LGModCl9ZnVuY3Rpb24gaCh0LGUpe2lmKCEodCBpbnN0YW5jZW9mIGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIGYodCxlKXtmb3IodmFyIHI9MDtyPGUubGVuZ3RoO3IrKyl7dmFyIG49ZVtyXTtuLmVudW1lcmFibGU9bi5lbnVtZXJhYmxlfHwhMSxuLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gbiYmKG4ud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCh2b2lkIDAsaT1mdW5jdGlvbih0LGUpe2lmKCJvYmplY3QiIT09Yyh0KXx8bnVsbD09PXQpcmV0dXJuIHQ7dmFyIHI9dFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PXIpe3ZhciBuPXIuY2FsbCh0LCJzdHJpbmciKTtpZigib2JqZWN0IiE9PWMobikpcmV0dXJuIG47dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4gU3RyaW5nKHQpfShuLmtleSksInN5bWJvbCI9PT1jKGkpP2k6U3RyaW5nKGkpKSxuKX12YXIgaX1mdW5jdGlvbiBkKHQsZSxyKXtyZXR1cm4gZSYmZih0LnByb3RvdHlwZSxlKSxyJiZmKHQsciksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksdH12YXIgcD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7dmFyIHI9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9O2godGhpcyx0KSx0aGlzLnVybD1lLHRoaXMuaXNIdHRwPS9eaHR0cHM/Oi9pLnRlc3QoZSksdGhpcy5odHRwSGVhZGVycz10aGlzLmlzSHR0cCYmci5odHRwSGVhZGVyc3x8T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLndpdGhDcmVkZW50aWFscz1yLndpdGhDcmVkZW50aWFsc3x8ITEsdGhpcy5nZXRYaHI9ci5nZXRYaHJ8fGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBYTUxIdHRwUmVxdWVzdH0sdGhpcy5jdXJyWGhySWQ9MCx0aGlzLnBlbmRpbmdSZXF1ZXN0cz1PYmplY3QuY3JlYXRlKG51bGwpfXJldHVybiBkKHQsW3trZXk6InJlcXVlc3RSYW5nZSIsdmFsdWU6ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXtiZWdpbjp0LGVuZDplfTtmb3IodmFyIGkgaW4gciluW2ldPXJbaV07cmV0dXJuIHRoaXMucmVxdWVzdChuKX19LHtrZXk6InJlcXVlc3RGdWxsIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5yZXF1ZXN0KHQpfX0se2tleToicmVxdWVzdCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5nZXRYaHIoKSxyPXRoaXMuY3VyclhocklkKyssbj10aGlzLnBlbmRpbmdSZXF1ZXN0c1tyXT17eGhyOmV9O2Zvcih2YXIgaSBpbiBlLm9wZW4oIkdFVCIsdGhpcy51cmwsICEwKSxlLndpdGhDcmVkZW50aWFscz10aGlzLndpdGhDcmVkZW50aWFscyx0aGlzLmh0dHBIZWFkZXJzKXt2YXIgYT10aGlzLmh0dHBIZWFkZXJzW2ldO3ZvaWQgMCE9PWEmJmUuc2V0UmVxdWVzdEhlYWRlcihpLGEpfXJldHVybiB0aGlzLmlzSHR0cCYmImJlZ2luImluIHQmJiJlbmQiaW4gdD8oZS5zZXRSZXF1ZXN0SGVhZGVyKCJSYW5nZSIsImJ5dGVzPSIuY29uY2F0KHQuYmVnaW4sIi0iKS5jb25jYXQodC5lbmQtMSkpLG4uZXhwZWN0ZWRTdGF0dXM9MjA2KTpuLmV4cGVjdGVkU3RhdHVzPTIwMCxlLnJlc3BvbnNlVHlwZT0iYXJyYXlidWZmZXIiLHQub25FcnJvciYmKGUub25lcnJvcj1mdW5jdGlvbihyKXt0Lm9uRXJyb3IoZS5zdGF0dXMpfSksZS5vbnJlYWR5c3RhdGVjaGFuZ2U9dGhpcy5vblN0YXRlQ2hhbmdlLmJpbmQodGhpcyxyKSxlLm9ucHJvZ3Jlc3M9dGhpcy5vblByb2dyZXNzLmJpbmQodGhpcyxyKSxuLm9uSGVhZGVyc1JlY2VpdmVkPXQub25IZWFkZXJzUmVjZWl2ZWQsbi5vbkRvbmU9dC5vbkRvbmUsbi5vbkVycm9yPXQub25FcnJvcixuLm9uUHJvZ3Jlc3M9dC5vblByb2dyZXNzLGUuc2VuZChudWxsKSxyfX0se2tleToib25Qcm9ncmVzcyIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgcixuPXRoaXMucGVuZGluZ1JlcXVlc3RzW3RdO24mJihudWxsPT09KHI9bi5vblByb2dyZXNzKXx8dm9pZCAwPT09cnx8ci5jYWxsKG4sZSkpfX0se2tleToib25TdGF0ZUNoYW5nZSIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLnBlbmRpbmdSZXF1ZXN0c1t0XTtpZihyKXt2YXIgaT1yLnhocjtpZihpLnJlYWR5U3RhdGU+PTImJnIub25IZWFkZXJzUmVjZWl2ZWQmJihyLm9uSGVhZGVyc1JlY2VpdmVkKCksZGVsZXRlIHIub25IZWFkZXJzUmVjZWl2ZWQpLDQ9PT1pLnJlYWR5U3RhdGUmJnQgaW4gdGhpcy5wZW5kaW5nUmVxdWVzdHMpaWYoZGVsZXRlIHRoaXMucGVuZGluZ1JlcXVlc3RzW3RdLDA9PT1pLnN0YXR1cyYmdGhpcy5pc0h0dHApe3ZhciBhO251bGw9PT0oYT1yLm9uRXJyb3IpfHx2b2lkIDA9PT1hfHxhLmNhbGwocixpLnN0YXR1cyl9ZWxzZXt2YXIgbz1pLnN0YXR1c3x8MjAwO2lmKDIwMD09PW8mJjIwNj09PXIuZXhwZWN0ZWRTdGF0dXN8fG89PT1yLmV4cGVjdGVkU3RhdHVzKXt2YXIgcz1mdW5jdGlvbih0KXt2YXIgZT10LnJlc3BvbnNlO3JldHVybiJzdHJpbmciIT10eXBlb2YgZT9lOigwLG4uc3RyaW5nVG9CeXRlcykoZSkuYnVmZmVyfShpKTtpZigyMDY9PT1vKXt2YXIgbD1pLmdldFJlc3BvbnNlSGVhZGVyKCJDb250ZW50LVJhbmdlIiksdT0vYnl0ZXMgKFxkKyktKFxkKylcLyhcZCspLy5leGVjKGwpO3Iub25Eb25lKHtiZWdpbjpwYXJzZUludCh1WzFdLDEwKSxjaHVuazpzfSl9ZWxzZSBpZihzKXIub25Eb25lKHtiZWdpbjowLGNodW5rOnN9KTtlbHNle3ZhciBjO251bGw9PT0oYz1yLm9uRXJyb3IpfHx2b2lkIDA9PT1jfHxjLmNhbGwocixpLnN0YXR1cyl9fWVsc2V7dmFyIGg7bnVsbD09PShoPXIub25FcnJvcil8fHZvaWQgMD09PWh8fGguY2FsbChyLGkuc3RhdHVzKX19fX19LHtrZXk6ImdldFJlcXVlc3RYaHIiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnBlbmRpbmdSZXF1ZXN0c1t0XS54aHJ9fSx7a2V5OiJpc1BlbmRpbmdSZXF1ZXN0Iix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdCBpbiB0aGlzLnBlbmRpbmdSZXF1ZXN0c319LHtrZXk6ImFib3J0UmVxdWVzdCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5wZW5kaW5nUmVxdWVzdHNbdF0ueGhyO2RlbGV0ZSB0aGlzLnBlbmRpbmdSZXF1ZXN0c1t0XSxlLmFib3J0KCl9fV0pLHR9KCksdj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7aCh0aGlzLHQpLHRoaXMuX3NvdXJjZT1lLHRoaXMuX21hbmFnZXI9bmV3IHAoZS51cmwse2h0dHBIZWFkZXJzOmUuaHR0cEhlYWRlcnMsd2l0aENyZWRlbnRpYWxzOmUud2l0aENyZWRlbnRpYWxzfSksdGhpcy5fcmFuZ2VDaHVua1NpemU9ZS5yYW5nZUNodW5rU2l6ZSx0aGlzLl9mdWxsUmVxdWVzdFJlYWRlcj1udWxsLHRoaXMuX3JhbmdlUmVxdWVzdFJlYWRlcnM9W119cmV0dXJuIGQodCxbe2tleToiX29uUmFuZ2VSZXF1ZXN0UmVhZGVyQ2xvc2VkIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9yYW5nZVJlcXVlc3RSZWFkZXJzLmluZGV4T2YodCk7ZT49MCYmdGhpcy5fcmFuZ2VSZXF1ZXN0UmVhZGVycy5zcGxpY2UoZSwxKX19LHtrZXk6ImdldEZ1bGxSZWFkZXIiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuKDAsbi5hc3NlcnQpKCF0aGlzLl9mdWxsUmVxdWVzdFJlYWRlciwiUERGTmV0d29ya1N0cmVhbS5nZXRGdWxsUmVhZGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbmNlLiIpLHRoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyPW5ldyB5KHRoaXMuX21hbmFnZXIsdGhpcy5fc291cmNlKSx0aGlzLl9mdWxsUmVxdWVzdFJlYWRlcn19LHtrZXk6ImdldFJhbmdlUmVhZGVyIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciByPW5ldyBtKHRoaXMuX21hbmFnZXIsdCxlKTtyZXR1cm4gci5vbkNsb3NlZD10aGlzLl9vblJhbmdlUmVxdWVzdFJlYWRlckNsb3NlZC5iaW5kKHRoaXMpLHRoaXMuX3JhbmdlUmVxdWVzdFJlYWRlcnMucHVzaChyKSxyfX0se2tleToiY2FuY2VsQWxsUmVxdWVzdHMiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlO251bGw9PT0oZT10aGlzLl9mdWxsUmVxdWVzdFJlYWRlcil8fHZvaWQgMD09PWV8fGUuY2FuY2VsKHQpO3ZhciByLG49bCh0aGlzLl9yYW5nZVJlcXVlc3RSZWFkZXJzLnNsaWNlKDApKTt0cnl7Zm9yKG4ucygpOyEocj1uLm4oKSkuZG9uZTspci52YWx1ZS5jYW5jZWwodCl9Y2F0Y2godCl7bi5lKHQpfWZpbmFsbHl7bi5mKCl9fX1dKSx0fSgpO2UuUERGTmV0d29ya1N0cmVhbT12O3ZhciB5PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLHIpe2godGhpcyx0KSx0aGlzLl9tYW5hZ2VyPWU7dmFyIGk9e29uSGVhZGVyc1JlY2VpdmVkOnRoaXMuX29uSGVhZGVyc1JlY2VpdmVkLmJpbmQodGhpcyksb25Eb25lOnRoaXMuX29uRG9uZS5iaW5kKHRoaXMpLG9uRXJyb3I6dGhpcy5fb25FcnJvci5iaW5kKHRoaXMpLG9uUHJvZ3Jlc3M6dGhpcy5fb25Qcm9ncmVzcy5iaW5kKHRoaXMpfTt0aGlzLl91cmw9ci51cmwsdGhpcy5fZnVsbFJlcXVlc3RJZD1lLnJlcXVlc3RGdWxsKGkpLHRoaXMuX2hlYWRlcnNSZWNlaXZlZENhcGFiaWxpdHk9KDAsbi5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKSx0aGlzLl9kaXNhYmxlUmFuZ2U9ci5kaXNhYmxlUmFuZ2V8fCExLHRoaXMuX2NvbnRlbnRMZW5ndGg9ci5sZW5ndGgsdGhpcy5fcmFuZ2VDaHVua1NpemU9ci5yYW5nZUNodW5rU2l6ZSx0aGlzLl9yYW5nZUNodW5rU2l6ZXx8dGhpcy5fZGlzYWJsZVJhbmdlfHwodGhpcy5fZGlzYWJsZVJhbmdlPSEwKSx0aGlzLl9pc1N0cmVhbWluZ1N1cHBvcnRlZD0hMSx0aGlzLl9pc1JhbmdlU3VwcG9ydGVkPSExLHRoaXMuX2NhY2hlZENodW5rcz1bXSx0aGlzLl9yZXF1ZXN0cz1bXSx0aGlzLl9kb25lPSExLHRoaXMuX3N0b3JlZEVycm9yPXZvaWQgMCx0aGlzLl9maWxlbmFtZT1udWxsLHRoaXMub25Qcm9ncmVzcz1udWxsfXZhciBlO3JldHVybiBkKHQsW3trZXk6Il9vbkhlYWRlcnNSZWNlaXZlZCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9mdWxsUmVxdWVzdElkLGU9dGhpcy5fbWFuYWdlci5nZXRSZXF1ZXN0WGhyKHQpLHI9ZnVuY3Rpb24odCl7cmV0dXJuIGUuZ2V0UmVzcG9uc2VIZWFkZXIodCl9LG49KDAsaS52YWxpZGF0ZVJhbmdlUmVxdWVzdENhcGFiaWxpdGllcykoe2dldFJlc3BvbnNlSGVhZGVyOnIsaXNIdHRwOnRoaXMuX21hbmFnZXIuaXNIdHRwLHJhbmdlQ2h1bmtTaXplOnRoaXMuX3JhbmdlQ2h1bmtTaXplLGRpc2FibGVSYW5nZTp0aGlzLl9kaXNhYmxlUmFuZ2V9KSxhPW4uYWxsb3dSYW5nZVJlcXVlc3RzLG89bi5zdWdnZXN0ZWRMZW5ndGg7YSYmKHRoaXMuX2lzUmFuZ2VTdXBwb3J0ZWQ9ITApLHRoaXMuX2NvbnRlbnRMZW5ndGg9b3x8dGhpcy5fY29udGVudExlbmd0aCx0aGlzLl9maWxlbmFtZT0oMCxpLmV4dHJhY3RGaWxlbmFtZUZyb21IZWFkZXIpKHIpLHRoaXMuX2lzUmFuZ2VTdXBwb3J0ZWQmJnRoaXMuX21hbmFnZXIuYWJvcnRSZXF1ZXN0KHQpLHRoaXMuX2hlYWRlcnNSZWNlaXZlZENhcGFiaWxpdHkucmVzb2x2ZSgpfX0se2tleToiX29uRG9uZSIsdmFsdWU6ZnVuY3Rpb24odCl7aWYodCYmKHRoaXMuX3JlcXVlc3RzLmxlbmd0aD4wP3RoaXMuX3JlcXVlc3RzLnNoaWZ0KCkucmVzb2x2ZSh7dmFsdWU6dC5jaHVuayxkb25lOiExfSk6dGhpcy5fY2FjaGVkQ2h1bmtzLnB1c2godC5jaHVuaykpLHRoaXMuX2RvbmU9ITAsISh0aGlzLl9jYWNoZWRDaHVua3MubGVuZ3RoPjApKXt2YXIgZSxyPWwodGhpcy5fcmVxdWVzdHMpO3RyeXtmb3Ioci5zKCk7IShlPXIubigpKS5kb25lOyllLnZhbHVlLnJlc29sdmUoe3ZhbHVlOnZvaWQgMCxkb25lOiEwfSl9Y2F0Y2godCl7ci5lKHQpfWZpbmFsbHl7ci5mKCl9dGhpcy5fcmVxdWVzdHMubGVuZ3RoPTB9fX0se2tleToiX29uRXJyb3IiLHZhbHVlOmZ1bmN0aW9uKHQpe3RoaXMuX3N0b3JlZEVycm9yPSgwLGkuY3JlYXRlUmVzcG9uc2VTdGF0dXNFcnJvcikodCx0aGlzLl91cmwpLHRoaXMuX2hlYWRlcnNSZWNlaXZlZENhcGFiaWxpdHkucmVqZWN0KHRoaXMuX3N0b3JlZEVycm9yKTt2YXIgZSxyPWwodGhpcy5fcmVxdWVzdHMpO3RyeXtmb3Ioci5zKCk7IShlPXIubigpKS5kb25lOyllLnZhbHVlLnJlamVjdCh0aGlzLl9zdG9yZWRFcnJvcil9Y2F0Y2godCl7ci5lKHQpfWZpbmFsbHl7ci5mKCl9dGhpcy5fcmVxdWVzdHMubGVuZ3RoPTAsdGhpcy5fY2FjaGVkQ2h1bmtzLmxlbmd0aD0wfX0se2tleToiX29uUHJvZ3Jlc3MiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlO251bGw9PT0oZT10aGlzLm9uUHJvZ3Jlc3MpfHx2b2lkIDA9PT1lfHxlLmNhbGwodGhpcyx7bG9hZGVkOnQubG9hZGVkLHRvdGFsOnQubGVuZ3RoQ29tcHV0YWJsZT90LnRvdGFsOnRoaXMuX2NvbnRlbnRMZW5ndGh9KX19LHtrZXk6ImZpbGVuYW1lIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZmlsZW5hbWV9fSx7a2V5OiJpc1JhbmdlU3VwcG9ydGVkIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faXNSYW5nZVN1cHBvcnRlZH19LHtrZXk6ImlzU3RyZWFtaW5nU3VwcG9ydGVkIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faXNTdHJlYW1pbmdTdXBwb3J0ZWR9fSx7a2V5OiJjb250ZW50TGVuZ3RoIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY29udGVudExlbmd0aH19LHtrZXk6ImhlYWRlcnNSZWFkeSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2hlYWRlcnNSZWNlaXZlZENhcGFiaWxpdHkucHJvbWlzZX19LHtrZXk6InJlYWQiLHZhbHVlOihlPXMoYSgpLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgZSxyO3JldHVybiBhKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6aWYoIXRoaXMuX3N0b3JlZEVycm9yKXt0Lm5leHQ9MjticmVha310aHJvdyB0aGlzLl9zdG9yZWRFcnJvcjtjYXNlIDI6aWYoISh0aGlzLl9jYWNoZWRDaHVua3MubGVuZ3RoPjApKXt0Lm5leHQ9NTticmVha31yZXR1cm4gZT10aGlzLl9jYWNoZWRDaHVua3Muc2hpZnQoKSx0LmFicnVwdCgicmV0dXJuIix7dmFsdWU6ZSxkb25lOiExfSk7Y2FzZSA1OmlmKCF0aGlzLl9kb25lKXt0Lm5leHQ9NzticmVha31yZXR1cm4gdC5hYnJ1cHQoInJldHVybiIse3ZhbHVlOnZvaWQgMCxkb25lOiEwfSk7Y2FzZSA3OnJldHVybiByPSgwLG4uY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkpKCksdGhpcy5fcmVxdWVzdHMucHVzaChyKSx0LmFicnVwdCgicmV0dXJuIixyLnByb21pc2UpO2Nhc2UgMTA6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKSxmdW5jdGlvbigpe3JldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pfSx7a2V5OiJjYW5jZWwiLHZhbHVlOmZ1bmN0aW9uKHQpe3RoaXMuX2RvbmU9ITAsdGhpcy5faGVhZGVyc1JlY2VpdmVkQ2FwYWJpbGl0eS5yZWplY3QodCk7dmFyIGUscj1sKHRoaXMuX3JlcXVlc3RzKTt0cnl7Zm9yKHIucygpOyEoZT1yLm4oKSkuZG9uZTspZS52YWx1ZS5yZXNvbHZlKHt2YWx1ZTp2b2lkIDAsZG9uZTohMH0pfWNhdGNoKHQpe3IuZSh0KX1maW5hbGx5e3IuZigpfXRoaXMuX3JlcXVlc3RzLmxlbmd0aD0wLHRoaXMuX21hbmFnZXIuaXNQZW5kaW5nUmVxdWVzdCh0aGlzLl9mdWxsUmVxdWVzdElkKSYmdGhpcy5fbWFuYWdlci5hYm9ydFJlcXVlc3QodGhpcy5fZnVsbFJlcXVlc3RJZCksdGhpcy5fZnVsbFJlcXVlc3RSZWFkZXI9bnVsbH19XSksdH0oKSxtPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLHIsbil7aCh0aGlzLHQpLHRoaXMuX21hbmFnZXI9ZTt2YXIgaT17b25Eb25lOnRoaXMuX29uRG9uZS5iaW5kKHRoaXMpLG9uRXJyb3I6dGhpcy5fb25FcnJvci5iaW5kKHRoaXMpLG9uUHJvZ3Jlc3M6dGhpcy5fb25Qcm9ncmVzcy5iaW5kKHRoaXMpfTt0aGlzLl91cmw9ZS51cmwsdGhpcy5fcmVxdWVzdElkPWUucmVxdWVzdFJhbmdlKHIsbixpKSx0aGlzLl9yZXF1ZXN0cz1bXSx0aGlzLl9xdWV1ZWRDaHVuaz1udWxsLHRoaXMuX2RvbmU9ITEsdGhpcy5fc3RvcmVkRXJyb3I9dm9pZCAwLHRoaXMub25Qcm9ncmVzcz1udWxsLHRoaXMub25DbG9zZWQ9bnVsbH12YXIgZTtyZXR1cm4gZCh0LFt7a2V5OiJfY2xvc2UiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ7bnVsbD09PSh0PXRoaXMub25DbG9zZWQpfHx2b2lkIDA9PT10fHx0LmNhbGwodGhpcyx0aGlzKX19LHtrZXk6Il9vbkRvbmUiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuY2h1bms7dGhpcy5fcmVxdWVzdHMubGVuZ3RoPjA/dGhpcy5fcmVxdWVzdHMuc2hpZnQoKS5yZXNvbHZlKHt2YWx1ZTplLGRvbmU6ITF9KTp0aGlzLl9xdWV1ZWRDaHVuaz1lLHRoaXMuX2RvbmU9ITA7dmFyIHIsbj1sKHRoaXMuX3JlcXVlc3RzKTt0cnl7Zm9yKG4ucygpOyEocj1uLm4oKSkuZG9uZTspci52YWx1ZS5yZXNvbHZlKHt2YWx1ZTp2b2lkIDAsZG9uZTohMH0pfWNhdGNoKHQpe24uZSh0KX1maW5hbGx5e24uZigpfXRoaXMuX3JlcXVlc3RzLmxlbmd0aD0wLHRoaXMuX2Nsb3NlKCl9fSx7a2V5OiJfb25FcnJvciIsdmFsdWU6ZnVuY3Rpb24odCl7dGhpcy5fc3RvcmVkRXJyb3I9KDAsaS5jcmVhdGVSZXNwb25zZVN0YXR1c0Vycm9yKSh0LHRoaXMuX3VybCk7dmFyIGUscj1sKHRoaXMuX3JlcXVlc3RzKTt0cnl7Zm9yKHIucygpOyEoZT1yLm4oKSkuZG9uZTspZS52YWx1ZS5yZWplY3QodGhpcy5fc3RvcmVkRXJyb3IpfWNhdGNoKHQpe3IuZSh0KX1maW5hbGx5e3IuZigpfXRoaXMuX3JlcXVlc3RzLmxlbmd0aD0wLHRoaXMuX3F1ZXVlZENodW5rPW51bGx9fSx7a2V5OiJfb25Qcm9ncmVzcyIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU7dGhpcy5pc1N0cmVhbWluZ1N1cHBvcnRlZHx8bnVsbD09PShlPXRoaXMub25Qcm9ncmVzcyl8fHZvaWQgMD09PWV8fGUuY2FsbCh0aGlzLHtsb2FkZWQ6dC5sb2FkZWR9KX19LHtrZXk6ImlzU3RyZWFtaW5nU3VwcG9ydGVkIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4hMX19LHtrZXk6InJlYWQiLHZhbHVlOihlPXMoYSgpLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgZSxyO3JldHVybiBhKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6aWYoIXRoaXMuX3N0b3JlZEVycm9yKXt0Lm5leHQ9MjticmVha310aHJvdyB0aGlzLl9zdG9yZWRFcnJvcjtjYXNlIDI6aWYobnVsbD09PXRoaXMuX3F1ZXVlZENodW5rKXt0Lm5leHQ9NjticmVha31yZXR1cm4gZT10aGlzLl9xdWV1ZWRDaHVuayx0aGlzLl9xdWV1ZWRDaHVuaz1udWxsLHQuYWJydXB0KCJyZXR1cm4iLHt2YWx1ZTplLGRvbmU6ITF9KTtjYXNlIDY6aWYoIXRoaXMuX2RvbmUpe3QubmV4dD04O2JyZWFrfXJldHVybiB0LmFicnVwdCgicmV0dXJuIix7dmFsdWU6dm9pZCAwLGRvbmU6ITB9KTtjYXNlIDg6cmV0dXJuIHI9KDAsbi5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKSx0aGlzLl9yZXF1ZXN0cy5wdXNoKHIpLHQuYWJydXB0KCJyZXR1cm4iLHIucHJvbWlzZSk7Y2FzZSAxMTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpLGZ1bmN0aW9uKCl7cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfSl9LHtrZXk6ImNhbmNlbCIsdmFsdWU6ZnVuY3Rpb24odCl7dGhpcy5fZG9uZT0hMDt2YXIgZSxyPWwodGhpcy5fcmVxdWVzdHMpO3RyeXtmb3Ioci5zKCk7IShlPXIubigpKS5kb25lOyllLnZhbHVlLnJlc29sdmUoe3ZhbHVlOnZvaWQgMCxkb25lOiEwfSl9Y2F0Y2godCl7ci5lKHQpfWZpbmFsbHl7ci5mKCl9dGhpcy5fcmVxdWVzdHMubGVuZ3RoPTAsdGhpcy5fbWFuYWdlci5pc1BlbmRpbmdSZXF1ZXN0KHRoaXMuX3JlcXVlc3RJZCkmJnRoaXMuX21hbmFnZXIuYWJvcnRSZXF1ZXN0KHRoaXMuX3JlcXVlc3RJZCksdGhpcy5fY2xvc2UoKX19XSksdH0oKX0sKHQsZSxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxlLlBERkZldGNoU3RyZWFtPXZvaWQgMDt2YXIgbj1yKDEpLGk9cigxNjIpO2Z1bmN0aW9uIGEoKXthPWZ1bmN0aW9uKCl7cmV0dXJuIHR9O3ZhciB0PXt9LGU9T2JqZWN0LnByb3RvdHlwZSxyPWUuaGFzT3duUHJvcGVydHksbj1PYmplY3QuZGVmaW5lUHJvcGVydHl8fGZ1bmN0aW9uKHQsZSxyKXt0W2VdPXIudmFsdWV9LGk9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbD9TeW1ib2w6e30sbz1pLml0ZXJhdG9yfHwiQEBpdGVyYXRvciIscz1pLmFzeW5jSXRlcmF0b3J8fCJAQGFzeW5jSXRlcmF0b3IiLHU9aS50b1N0cmluZ1RhZ3x8IkBAdG9TdHJpbmdUYWciO2Z1bmN0aW9uIGModCxlLHIpe3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLHt2YWx1ZTpyLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSksdFtlXX10cnl7Yyh7fSwiIil9Y2F0Y2godCl7Yz1mdW5jdGlvbih0LGUscil7cmV0dXJuIHRbZV09cn19ZnVuY3Rpb24gaCh0LGUscixpKXt2YXIgYT1lJiZlLnByb3RvdHlwZSBpbnN0YW5jZW9mIHA/ZTpwLG89T2JqZWN0LmNyZWF0ZShhLnByb3RvdHlwZSkscz1uZXcgUChpfHxbXSk7cmV0dXJuIG4obywiX2ludm9rZSIse3ZhbHVlOmsodCxyLHMpfSksb31mdW5jdGlvbiBmKHQsZSxyKXt0cnl7cmV0dXJue3R5cGU6Im5vcm1hbCIsYXJnOnQuY2FsbChlLHIpfX1jYXRjaCh0KXtyZXR1cm57dHlwZToidGhyb3ciLGFyZzp0fX19dC53cmFwPWg7dmFyIGQ9e307ZnVuY3Rpb24gcCgpe31mdW5jdGlvbiB2KCl7fWZ1bmN0aW9uIHkoKXt9dmFyIG09e307YyhtLG8sKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSk7dmFyIGc9T2JqZWN0LmdldFByb3RvdHlwZU9mLGI9ZyYmZyhnKFQoW10pKSk7YiYmYiE9PWUmJnIuY2FsbChiLG8pJiYobT1iKTt2YXIgXz15LnByb3RvdHlwZT1wLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKG0pO2Z1bmN0aW9uIHcodCl7WyJuZXh0IiwidGhyb3ciLCJyZXR1cm4iXS5mb3JFYWNoKChmdW5jdGlvbihlKXtjKHQsZSwoZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2ludm9rZShlLHQpfSkpfSkpfWZ1bmN0aW9uIEEodCxlKXtmdW5jdGlvbiBpKG4sYSxvLHMpe3ZhciB1PWYodFtuXSx0LGEpO2lmKCJ0aHJvdyIhPT11LnR5cGUpe3ZhciBjPXUuYXJnLGg9Yy52YWx1ZTtyZXR1cm4gaCYmIm9iamVjdCI9PWwoaCkmJnIuY2FsbChoLCJfX2F3YWl0Iik/ZS5yZXNvbHZlKGguX19hd2FpdCkudGhlbigoZnVuY3Rpb24odCl7aSgibmV4dCIsdCxvLHMpfSksKGZ1bmN0aW9uKHQpe2koInRocm93Iix0LG8scyl9KSk6ZS5yZXNvbHZlKGgpLnRoZW4oKGZ1bmN0aW9uKHQpe2MudmFsdWU9dCxvKGMpfSksKGZ1bmN0aW9uKHQpe3JldHVybiBpKCJ0aHJvdyIsdCxvLHMpfSkpfXModS5hcmcpfXZhciBhO24odGhpcywiX2ludm9rZSIse3ZhbHVlOmZ1bmN0aW9uKHQscil7ZnVuY3Rpb24gbigpe3JldHVybiBuZXcgZSgoZnVuY3Rpb24oZSxuKXtpKHQscixlLG4pfSkpfXJldHVybiBhPWE/YS50aGVuKG4sbik6bigpfX0pfWZ1bmN0aW9uIGsodCxlLHIpe3ZhciBuPSJzdXNwZW5kZWRTdGFydCI7cmV0dXJuIGZ1bmN0aW9uKGksYSl7aWYoImV4ZWN1dGluZyI9PT1uKXRocm93IG5ldyBFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgcnVubmluZyIpO2lmKCJjb21wbGV0ZWQiPT09bil7aWYoInRocm93Ij09PWkpdGhyb3cgYTtyZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9fWZvcihyLm1ldGhvZD1pLHIuYXJnPWE7Oyl7dmFyIG89ci5kZWxlZ2F0ZTtpZihvKXt2YXIgcz1TKG8scik7aWYocyl7aWYocz09PWQpY29udGludWU7cmV0dXJuIHN9fWlmKCJuZXh0Ij09PXIubWV0aG9kKXIuc2VudD1yLl9zZW50PXIuYXJnO2Vsc2UgaWYoInRocm93Ij09PXIubWV0aG9kKXtpZigic3VzcGVuZGVkU3RhcnQiPT09bil0aHJvdyBuPSJjb21wbGV0ZWQiLHIuYXJnO3IuZGlzcGF0Y2hFeGNlcHRpb24oci5hcmcpfWVsc2UicmV0dXJuIj09PXIubWV0aG9kJiZyLmFicnVwdCgicmV0dXJuIixyLmFyZyk7bj0iZXhlY3V0aW5nIjt2YXIgbD1mKHQsZSxyKTtpZigibm9ybWFsIj09PWwudHlwZSl7aWYobj1yLmRvbmU/ImNvbXBsZXRlZCI6InN1c3BlbmRlZFlpZWxkIixsLmFyZz09PWQpY29udGludWU7cmV0dXJue3ZhbHVlOmwuYXJnLGRvbmU6ci5kb25lfX0idGhyb3ciPT09bC50eXBlJiYobj0iY29tcGxldGVkIixyLm1ldGhvZD0idGhyb3ciLHIuYXJnPWwuYXJnKX19fWZ1bmN0aW9uIFModCxlKXt2YXIgcj1lLm1ldGhvZCxuPXQuaXRlcmF0b3Jbcl07aWYodm9pZCAwPT09bilyZXR1cm4gZS5kZWxlZ2F0ZT1udWxsLCJ0aHJvdyI9PT1yJiZ0Lml0ZXJhdG9yLnJldHVybiYmKGUubWV0aG9kPSJyZXR1cm4iLGUuYXJnPXZvaWQgMCxTKHQsZSksInRocm93Ij09PWUubWV0aG9kKXx8InJldHVybiIhPT1yJiYoZS5tZXRob2Q9InRocm93IixlLmFyZz1uZXcgVHlwZUVycm9yKCJUaGUgaXRlcmF0b3IgZG9lcyBub3QgcHJvdmlkZSBhICciK3IrIicgbWV0aG9kIikpLGQ7dmFyIGk9ZihuLHQuaXRlcmF0b3IsZS5hcmcpO2lmKCJ0aHJvdyI9PT1pLnR5cGUpcmV0dXJuIGUubWV0aG9kPSJ0aHJvdyIsZS5hcmc9aS5hcmcsZS5kZWxlZ2F0ZT1udWxsLGQ7dmFyIGE9aS5hcmc7cmV0dXJuIGE/YS5kb25lPyhlW3QucmVzdWx0TmFtZV09YS52YWx1ZSxlLm5leHQ9dC5uZXh0TG9jLCJyZXR1cm4iIT09ZS5tZXRob2QmJihlLm1ldGhvZD0ibmV4dCIsZS5hcmc9dm9pZCAwKSxlLmRlbGVnYXRlPW51bGwsZCk6YTooZS5tZXRob2Q9InRocm93IixlLmFyZz1uZXcgVHlwZUVycm9yKCJpdGVyYXRvciByZXN1bHQgaXMgbm90IGFuIG9iamVjdCIpLGUuZGVsZWdhdGU9bnVsbCxkKX1mdW5jdGlvbiB4KHQpe3ZhciBlPXt0cnlMb2M6dFswXX07MSBpbiB0JiYoZS5jYXRjaExvYz10WzFdKSwyIGluIHQmJihlLmZpbmFsbHlMb2M9dFsyXSxlLmFmdGVyTG9jPXRbM10pLHRoaXMudHJ5RW50cmllcy5wdXNoKGUpfWZ1bmN0aW9uIEUodCl7dmFyIGU9dC5jb21wbGV0aW9ufHx7fTtlLnR5cGU9Im5vcm1hbCIsZGVsZXRlIGUuYXJnLHQuY29tcGxldGlvbj1lfWZ1bmN0aW9uIFAodCl7dGhpcy50cnlFbnRyaWVzPVt7dHJ5TG9jOiJyb290In1dLHQuZm9yRWFjaCh4LHRoaXMpLHRoaXMucmVzZXQoITApfWZ1bmN0aW9uIFQodCl7aWYodCl7dmFyIGU9dFtvXTtpZihlKXJldHVybiBlLmNhbGwodCk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHQubmV4dClyZXR1cm4gdDtpZighaXNOYU4odC5sZW5ndGgpKXt2YXIgbj0tMSxpPWZ1bmN0aW9uIGUoKXtmb3IoOysrbjx0Lmxlbmd0aDspaWYoci5jYWxsKHQsbikpcmV0dXJuIGUudmFsdWU9dFtuXSxlLmRvbmU9ITEsZTtyZXR1cm4gZS52YWx1ZT12b2lkIDAsZS5kb25lPSEwLGV9O3JldHVybiBpLm5leHQ9aX19cmV0dXJue25leHQ6Q319ZnVuY3Rpb24gQygpe3JldHVybnt2YWx1ZTp2b2lkIDAsZG9uZTohMH19cmV0dXJuIHYucHJvdG90eXBlPXksbihfLCJjb25zdHJ1Y3RvciIse3ZhbHVlOnksY29uZmlndXJhYmxlOiEwfSksbih5LCJjb25zdHJ1Y3RvciIse3ZhbHVlOnYsY29uZmlndXJhYmxlOiEwfSksdi5kaXNwbGF5TmFtZT1jKHksdSwiR2VuZXJhdG9yRnVuY3Rpb24iKSx0LmlzR2VuZXJhdG9yRnVuY3Rpb249ZnVuY3Rpb24odCl7dmFyIGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQmJnQuY29uc3RydWN0b3I7cmV0dXJuISFlJiYoZT09PXZ8fCJHZW5lcmF0b3JGdW5jdGlvbiI9PT0oZS5kaXNwbGF5TmFtZXx8ZS5uYW1lKSl9LHQubWFyaz1mdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZih0LHkpOih0Ll9fcHJvdG9fXz15LGModCx1LCJHZW5lcmF0b3JGdW5jdGlvbiIpKSx0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKF8pLHR9LHQuYXdyYXA9ZnVuY3Rpb24odCl7cmV0dXJue19fYXdhaXQ6dH19LHcoQS5wcm90b3R5cGUpLGMoQS5wcm90b3R5cGUscywoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSx0LkFzeW5jSXRlcmF0b3I9QSx0LmFzeW5jPWZ1bmN0aW9uKGUscixuLGksYSl7dm9pZCAwPT09YSYmKGE9UHJvbWlzZSk7dmFyIG89bmV3IEEoaChlLHIsbixpKSxhKTtyZXR1cm4gdC5pc0dlbmVyYXRvckZ1bmN0aW9uKHIpP286by5uZXh0KCkudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIHQuZG9uZT90LnZhbHVlOm8ubmV4dCgpfSkpfSx3KF8pLGMoXyx1LCJHZW5lcmF0b3IiKSxjKF8sbywoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSxjKF8sInRvU3RyaW5nIiwoZnVuY3Rpb24oKXtyZXR1cm4iW29iamVjdCBHZW5lcmF0b3JdIn0pKSx0LmtleXM9ZnVuY3Rpb24odCl7dmFyIGU9T2JqZWN0KHQpLHI9W107Zm9yKHZhciBuIGluIGUpci5wdXNoKG4pO3JldHVybiByLnJldmVyc2UoKSxmdW5jdGlvbiB0KCl7Zm9yKDtyLmxlbmd0aDspe3ZhciBuPXIucG9wKCk7aWYobiBpbiBlKXJldHVybiB0LnZhbHVlPW4sdC5kb25lPSExLHR9cmV0dXJuIHQuZG9uZT0hMCx0fX0sdC52YWx1ZXM9VCxQLnByb3RvdHlwZT17Y29uc3RydWN0b3I6UCxyZXNldDpmdW5jdGlvbih0KXtpZih0aGlzLnByZXY9MCx0aGlzLm5leHQ9MCx0aGlzLnNlbnQ9dGhpcy5fc2VudD12b2lkIDAsdGhpcy5kb25lPSExLHRoaXMuZGVsZWdhdGU9bnVsbCx0aGlzLm1ldGhvZD0ibmV4dCIsdGhpcy5hcmc9dm9pZCAwLHRoaXMudHJ5RW50cmllcy5mb3JFYWNoKEUpLCF0KWZvcih2YXIgZSBpbiB0aGlzKSJ0Ij09PWUuY2hhckF0KDApJiZyLmNhbGwodGhpcyxlKSYmIWlzTmFOKCtlLnNsaWNlKDEpKSYmKHRoaXNbZV09dm9pZCAwKX0sc3RvcDpmdW5jdGlvbigpe3RoaXMuZG9uZT0hMDt2YXIgdD10aGlzLnRyeUVudHJpZXNbMF0uY29tcGxldGlvbjtpZigidGhyb3ciPT09dC50eXBlKXRocm93IHQuYXJnO3JldHVybiB0aGlzLnJ2YWx9LGRpc3BhdGNoRXhjZXB0aW9uOmZ1bmN0aW9uKHQpe2lmKHRoaXMuZG9uZSl0aHJvdyB0O3ZhciBlPXRoaXM7ZnVuY3Rpb24gbihyLG4pe3JldHVybiBvLnR5cGU9InRocm93IixvLmFyZz10LGUubmV4dD1yLG4mJihlLm1ldGhvZD0ibmV4dCIsZS5hcmc9dm9pZCAwKSwhIW59Zm9yKHZhciBpPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtpPj0wOy0taSl7dmFyIGE9dGhpcy50cnlFbnRyaWVzW2ldLG89YS5jb21wbGV0aW9uO2lmKCJyb290Ij09PWEudHJ5TG9jKXJldHVybiBuKCJlbmQiKTtpZihhLnRyeUxvYzw9dGhpcy5wcmV2KXt2YXIgcz1yLmNhbGwoYSwiY2F0Y2hMb2MiKSxsPXIuY2FsbChhLCJmaW5hbGx5TG9jIik7aWYocyYmbCl7aWYodGhpcy5wcmV2PGEuY2F0Y2hMb2MpcmV0dXJuIG4oYS5jYXRjaExvYywhMCk7aWYodGhpcy5wcmV2PGEuZmluYWxseUxvYylyZXR1cm4gbihhLmZpbmFsbHlMb2MpfWVsc2UgaWYocyl7aWYodGhpcy5wcmV2PGEuY2F0Y2hMb2MpcmV0dXJuIG4oYS5jYXRjaExvYywhMCl9ZWxzZXtpZighbCl0aHJvdyBuZXcgRXJyb3IoInRyeSBzdGF0ZW1lbnQgd2l0aG91dCBjYXRjaCBvciBmaW5hbGx5Iik7aWYodGhpcy5wcmV2PGEuZmluYWxseUxvYylyZXR1cm4gbihhLmZpbmFsbHlMb2MpfX19fSxhYnJ1cHQ6ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO24+PTA7LS1uKXt2YXIgaT10aGlzLnRyeUVudHJpZXNbbl07aWYoaS50cnlMb2M8PXRoaXMucHJldiYmci5jYWxsKGksImZpbmFsbHlMb2MiKSYmdGhpcy5wcmV2PGkuZmluYWxseUxvYyl7dmFyIGE9aTticmVha319YSYmKCJicmVhayI9PT10fHwiY29udGludWUiPT09dCkmJmEudHJ5TG9jPD1lJiZlPD1hLmZpbmFsbHlMb2MmJihhPW51bGwpO3ZhciBvPWE/YS5jb21wbGV0aW9uOnt9O3JldHVybiBvLnR5cGU9dCxvLmFyZz1lLGE/KHRoaXMubWV0aG9kPSJuZXh0Iix0aGlzLm5leHQ9YS5maW5hbGx5TG9jLGQpOnRoaXMuY29tcGxldGUobyl9LGNvbXBsZXRlOmZ1bmN0aW9uKHQsZSl7aWYoInRocm93Ij09PXQudHlwZSl0aHJvdyB0LmFyZztyZXR1cm4iYnJlYWsiPT09dC50eXBlfHwiY29udGludWUiPT09dC50eXBlP3RoaXMubmV4dD10LmFyZzoicmV0dXJuIj09PXQudHlwZT8odGhpcy5ydmFsPXRoaXMuYXJnPXQuYXJnLHRoaXMubWV0aG9kPSJyZXR1cm4iLHRoaXMubmV4dD0iZW5kIik6Im5vcm1hbCI9PT10LnR5cGUmJmUmJih0aGlzLm5leHQ9ZSksZH0sZmluaXNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7ZT49MDstLWUpe3ZhciByPXRoaXMudHJ5RW50cmllc1tlXTtpZihyLmZpbmFsbHlMb2M9PT10KXJldHVybiB0aGlzLmNvbXBsZXRlKHIuY29tcGxldGlvbixyLmFmdGVyTG9jKSxFKHIpLGR9fSxjYXRjaDpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2U+PTA7LS1lKXt2YXIgcj10aGlzLnRyeUVudHJpZXNbZV07aWYoci50cnlMb2M9PT10KXt2YXIgbj1yLmNvbXBsZXRpb247aWYoInRocm93Ij09PW4udHlwZSl7dmFyIGk9bi5hcmc7RShyKX1yZXR1cm4gaX19dGhyb3cgbmV3IEVycm9yKCJpbGxlZ2FsIGNhdGNoIGF0dGVtcHQiKX0sZGVsZWdhdGVZaWVsZDpmdW5jdGlvbih0LGUscil7cmV0dXJuIHRoaXMuZGVsZWdhdGU9e2l0ZXJhdG9yOlQodCkscmVzdWx0TmFtZTplLG5leHRMb2M6cn0sIm5leHQiPT09dGhpcy5tZXRob2QmJih0aGlzLmFyZz12b2lkIDApLGR9fSx0fWZ1bmN0aW9uIG8odCxlLHIsbixpLGEsbyl7dHJ5e3ZhciBzPXRbYV0obyksbD1zLnZhbHVlfWNhdGNoKHQpe3JldHVybiB2b2lkIHIodCl9cy5kb25lP2UobCk6UHJvbWlzZS5yZXNvbHZlKGwpLnRoZW4obixpKX1mdW5jdGlvbiBzKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXRoaXMscj1hcmd1bWVudHM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihuLGkpe3ZhciBhPXQuYXBwbHkoZSxyKTtmdW5jdGlvbiBzKHQpe28oYSxuLGkscyxsLCJuZXh0Iix0KX1mdW5jdGlvbiBsKHQpe28oYSxuLGkscyxsLCJ0aHJvdyIsdCl9cyh2b2lkIDApfSkpfX1mdW5jdGlvbiBsKHQpe3JldHVybiBsPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiB0fSxsKHQpfWZ1bmN0aW9uIHUodCxlKXsobnVsbD09ZXx8ZT50Lmxlbmd0aCkmJihlPXQubGVuZ3RoKTtmb3IodmFyIHI9MCxuPW5ldyBBcnJheShlKTtyPGU7cisrKW5bcl09dFtyXTtyZXR1cm4gbn1mdW5jdGlvbiBjKHQsZSl7aWYoISh0IGluc3RhbmNlb2YgZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gaCh0LGUpe2Zvcih2YXIgcj0wO3I8ZS5sZW5ndGg7cisrKXt2YXIgbj1lW3JdO24uZW51bWVyYWJsZT1uLmVudW1lcmFibGV8fCExLG4uY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBuJiYobi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsKHZvaWQgMCxpPWZ1bmN0aW9uKHQsZSl7aWYoIm9iamVjdCIhPT1sKHQpfHxudWxsPT09dClyZXR1cm4gdDt2YXIgcj10W1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09cil7dmFyIG49ci5jYWxsKHQsInN0cmluZyIpO2lmKCJvYmplY3QiIT09bChuKSlyZXR1cm4gbjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybiBTdHJpbmcodCl9KG4ua2V5KSwic3ltYm9sIj09PWwoaSk/aTpTdHJpbmcoaSkpLG4pfXZhciBpfWZ1bmN0aW9uIGYodCxlLHIpe3JldHVybiBlJiZoKHQucHJvdG90eXBlLGUpLHImJmgodCxyKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSx0fWZ1bmN0aW9uIGQodCxlLHIpe3JldHVybnttZXRob2Q6IkdFVCIsaGVhZGVyczp0LHNpZ25hbDpyLnNpZ25hbCxtb2RlOiJjb3JzIixjcmVkZW50aWFsczplPyJpbmNsdWRlIjoic2FtZS1vcmlnaW4iLHJlZGlyZWN0OiJmb2xsb3cifX1mdW5jdGlvbiBwKHQpe3ZhciBlPW5ldyBIZWFkZXJzO2Zvcih2YXIgciBpbiB0KXt2YXIgbj10W3JdO3ZvaWQgMCE9PW4mJmUuYXBwZW5kKHIsbil9cmV0dXJuIGV9dmFyIHY9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2ModGhpcyx0KSx0aGlzLnNvdXJjZT1lLHRoaXMuaXNIdHRwPS9eaHR0cHM/Oi9pLnRlc3QoZS51cmwpLHRoaXMuaHR0cEhlYWRlcnM9dGhpcy5pc0h0dHAmJmUuaHR0cEhlYWRlcnN8fHt9LHRoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyPW51bGwsdGhpcy5fcmFuZ2VSZXF1ZXN0UmVhZGVycz1bXX1yZXR1cm4gZih0LFt7a2V5OiJfcHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoIixnZXQ6ZnVuY3Rpb24oKXt2YXIgdCxlO3JldHVybiBudWxsIT09KHQ9bnVsbD09PShlPXRoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyKXx8dm9pZCAwPT09ZT92b2lkIDA6ZS5fbG9hZGVkKSYmdm9pZCAwIT09dD90OjB9fSx7a2V5OiJnZXRGdWxsUmVhZGVyIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybigwLG4uYXNzZXJ0KSghdGhpcy5fZnVsbFJlcXVlc3RSZWFkZXIsIlBERkZldGNoU3RyZWFtLmdldEZ1bGxSZWFkZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uY2UuIiksdGhpcy5fZnVsbFJlcXVlc3RSZWFkZXI9bmV3IHkodGhpcyksdGhpcy5fZnVsbFJlcXVlc3RSZWFkZXJ9fSx7a2V5OiJnZXRSYW5nZVJlYWRlciIsdmFsdWU6ZnVuY3Rpb24odCxlKXtpZihlPD10aGlzLl9wcm9ncmVzc2l2ZURhdGFMZW5ndGgpcmV0dXJuIG51bGw7dmFyIHI9bmV3IG0odGhpcyx0LGUpO3JldHVybiB0aGlzLl9yYW5nZVJlcXVlc3RSZWFkZXJzLnB1c2gocikscn19LHtrZXk6ImNhbmNlbEFsbFJlcXVlc3RzIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZTtudWxsPT09KGU9dGhpcy5fZnVsbFJlcXVlc3RSZWFkZXIpfHx2b2lkIDA9PT1lfHxlLmNhbmNlbCh0KTt2YXIgcixuPWZ1bmN0aW9uKHQsZSl7dmFyIHI9InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJnRbU3ltYm9sLml0ZXJhdG9yXXx8dFsiQEBpdGVyYXRvciJdO2lmKCFyKXtpZihBcnJheS5pc0FycmF5KHQpfHwocj1mdW5jdGlvbih0LGUpe2lmKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gdSh0LGUpO3ZhciByPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KS5zbGljZSg4LC0xKTtyZXR1cm4iT2JqZWN0Ij09PXImJnQuY29uc3RydWN0b3ImJihyPXQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1yfHwiU2V0Ij09PXI/QXJyYXkuZnJvbSh0KToiQXJndW1lbnRzIj09PXJ8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KHIpP3UodCxlKTp2b2lkIDB9fSh0KSl8fGUmJnQmJiJudW1iZXIiPT10eXBlb2YgdC5sZW5ndGgpe3ImJih0PXIpO3ZhciBuPTAsaT1mdW5jdGlvbigpe307cmV0dXJue3M6aSxuOmZ1bmN0aW9uKCl7cmV0dXJuIG4+PXQubGVuZ3RoP3tkb25lOiEwfTp7ZG9uZTohMSx2YWx1ZTp0W24rK119fSxlOmZ1bmN0aW9uKHQpe3Rocm93IHR9LGY6aX19dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGl0ZXJhdGUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfXZhciBhLG89ITAscz0hMTtyZXR1cm57czpmdW5jdGlvbigpe3I9ci5jYWxsKHQpfSxuOmZ1bmN0aW9uKCl7dmFyIHQ9ci5uZXh0KCk7cmV0dXJuIG89dC5kb25lLHR9LGU6ZnVuY3Rpb24odCl7cz0hMCxhPXR9LGY6ZnVuY3Rpb24oKXt0cnl7b3x8bnVsbD09ci5yZXR1cm58fHIucmV0dXJuKCl9ZmluYWxseXtpZihzKXRocm93IGF9fX19KHRoaXMuX3JhbmdlUmVxdWVzdFJlYWRlcnMuc2xpY2UoMCkpO3RyeXtmb3Iobi5zKCk7IShyPW4ubigpKS5kb25lOylyLnZhbHVlLmNhbmNlbCh0KX1jYXRjaCh0KXtuLmUodCl9ZmluYWxseXtuLmYoKX19fV0pLHR9KCk7ZS5QREZGZXRjaFN0cmVhbT12O3ZhciB5PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXt2YXIgcj10aGlzO2ModGhpcyx0KSx0aGlzLl9zdHJlYW09ZSx0aGlzLl9yZWFkZXI9bnVsbCx0aGlzLl9sb2FkZWQ9MCx0aGlzLl9maWxlbmFtZT1udWxsO3ZhciBhPWUuc291cmNlO3RoaXMuX3dpdGhDcmVkZW50aWFscz1hLndpdGhDcmVkZW50aWFsc3x8ITEsdGhpcy5fY29udGVudExlbmd0aD1hLmxlbmd0aCx0aGlzLl9oZWFkZXJzQ2FwYWJpbGl0eT0oMCxuLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpLHRoaXMuX2Rpc2FibGVSYW5nZT1hLmRpc2FibGVSYW5nZXx8ITEsdGhpcy5fcmFuZ2VDaHVua1NpemU9YS5yYW5nZUNodW5rU2l6ZSx0aGlzLl9yYW5nZUNodW5rU2l6ZXx8dGhpcy5fZGlzYWJsZVJhbmdlfHwodGhpcy5fZGlzYWJsZVJhbmdlPSEwKSx0aGlzLl9hYm9ydENvbnRyb2xsZXI9bmV3IEFib3J0Q29udHJvbGxlcix0aGlzLl9pc1N0cmVhbWluZ1N1cHBvcnRlZD0hYS5kaXNhYmxlU3RyZWFtLHRoaXMuX2lzUmFuZ2VTdXBwb3J0ZWQ9IWEuZGlzYWJsZVJhbmdlLHRoaXMuX2hlYWRlcnM9cCh0aGlzLl9zdHJlYW0uaHR0cEhlYWRlcnMpO3ZhciBvPWEudXJsO2ZldGNoKG8sZCh0aGlzLl9oZWFkZXJzLHRoaXMuX3dpdGhDcmVkZW50aWFscyx0aGlzLl9hYm9ydENvbnRyb2xsZXIpKS50aGVuKChmdW5jdGlvbih0KXtpZighKDAsaS52YWxpZGF0ZVJlc3BvbnNlU3RhdHVzKSh0LnN0YXR1cykpdGhyb3coMCxpLmNyZWF0ZVJlc3BvbnNlU3RhdHVzRXJyb3IpKHQuc3RhdHVzLG8pO3IuX3JlYWRlcj10LmJvZHkuZ2V0UmVhZGVyKCksci5faGVhZGVyc0NhcGFiaWxpdHkucmVzb2x2ZSgpO3ZhciBlPWZ1bmN0aW9uKGUpe3JldHVybiB0LmhlYWRlcnMuZ2V0KGUpfSxhPSgwLGkudmFsaWRhdGVSYW5nZVJlcXVlc3RDYXBhYmlsaXRpZXMpKHtnZXRSZXNwb25zZUhlYWRlcjplLGlzSHR0cDpyLl9zdHJlYW0uaXNIdHRwLHJhbmdlQ2h1bmtTaXplOnIuX3JhbmdlQ2h1bmtTaXplLGRpc2FibGVSYW5nZTpyLl9kaXNhYmxlUmFuZ2V9KSxzPWEuYWxsb3dSYW5nZVJlcXVlc3RzLGw9YS5zdWdnZXN0ZWRMZW5ndGg7ci5faXNSYW5nZVN1cHBvcnRlZD1zLHIuX2NvbnRlbnRMZW5ndGg9bHx8ci5fY29udGVudExlbmd0aCxyLl9maWxlbmFtZT0oMCxpLmV4dHJhY3RGaWxlbmFtZUZyb21IZWFkZXIpKGUpLCFyLl9pc1N0cmVhbWluZ1N1cHBvcnRlZCYmci5faXNSYW5nZVN1cHBvcnRlZCYmci5jYW5jZWwobmV3IG4uQWJvcnRFeGNlcHRpb24oIlN0cmVhbWluZyBpcyBkaXNhYmxlZC4iKSl9KSkuY2F0Y2godGhpcy5faGVhZGVyc0NhcGFiaWxpdHkucmVqZWN0KSx0aGlzLm9uUHJvZ3Jlc3M9bnVsbH12YXIgZTtyZXR1cm4gZih0LFt7a2V5OiJoZWFkZXJzUmVhZHkiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9oZWFkZXJzQ2FwYWJpbGl0eS5wcm9taXNlfX0se2tleToiZmlsZW5hbWUiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9maWxlbmFtZX19LHtrZXk6ImNvbnRlbnRMZW5ndGgiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jb250ZW50TGVuZ3RofX0se2tleToiaXNSYW5nZVN1cHBvcnRlZCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2lzUmFuZ2VTdXBwb3J0ZWR9fSx7a2V5OiJpc1N0cmVhbWluZ1N1cHBvcnRlZCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2lzU3RyZWFtaW5nU3VwcG9ydGVkfX0se2tleToicmVhZCIsdmFsdWU6KGU9cyhhKCkubWFyaygoZnVuY3Rpb24gdCgpe3ZhciBlLHIsbixpLG87cmV0dXJuIGEoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5faGVhZGVyc0NhcGFiaWxpdHkucHJvbWlzZTtjYXNlIDI6cmV0dXJuIHQubmV4dD00LHRoaXMuX3JlYWRlci5yZWFkKCk7Y2FzZSA0OmlmKHI9dC5zZW50LG49ci52YWx1ZSwhKGk9ci5kb25lKSl7dC5uZXh0PTk7YnJlYWt9cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLHt2YWx1ZTpuLGRvbmU6aX0pO2Nhc2UgOTpyZXR1cm4gdGhpcy5fbG9hZGVkKz1uLmJ5dGVMZW5ndGgsbnVsbD09PShlPXRoaXMub25Qcm9ncmVzcyl8fHZvaWQgMD09PWV8fGUuY2FsbCh0aGlzLHtsb2FkZWQ6dGhpcy5fbG9hZGVkLHRvdGFsOnRoaXMuX2NvbnRlbnRMZW5ndGh9KSxvPW5ldyBVaW50OEFycmF5KG4pLmJ1ZmZlcix0LmFicnVwdCgicmV0dXJuIix7dmFsdWU6byxkb25lOiExfSk7Y2FzZSAxMzpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpLGZ1bmN0aW9uKCl7cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfSl9LHtrZXk6ImNhbmNlbCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU7bnVsbD09PShlPXRoaXMuX3JlYWRlcil8fHZvaWQgMD09PWV8fGUuY2FuY2VsKHQpLHRoaXMuX2Fib3J0Q29udHJvbGxlci5hYm9ydCgpfX1dKSx0fSgpLG09ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUscixhKXt2YXIgbz10aGlzO2ModGhpcyx0KSx0aGlzLl9zdHJlYW09ZSx0aGlzLl9yZWFkZXI9bnVsbCx0aGlzLl9sb2FkZWQ9MDt2YXIgcz1lLnNvdXJjZTt0aGlzLl93aXRoQ3JlZGVudGlhbHM9cy53aXRoQ3JlZGVudGlhbHN8fCExLHRoaXMuX3JlYWRDYXBhYmlsaXR5PSgwLG4uY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkpKCksdGhpcy5faXNTdHJlYW1pbmdTdXBwb3J0ZWQ9IXMuZGlzYWJsZVN0cmVhbSx0aGlzLl9hYm9ydENvbnRyb2xsZXI9bmV3IEFib3J0Q29udHJvbGxlcix0aGlzLl9oZWFkZXJzPXAodGhpcy5fc3RyZWFtLmh0dHBIZWFkZXJzKSx0aGlzLl9oZWFkZXJzLmFwcGVuZCgiUmFuZ2UiLCJieXRlcz0iLmNvbmNhdChyLCItIikuY29uY2F0KGEtMSkpO3ZhciBsPXMudXJsO2ZldGNoKGwsZCh0aGlzLl9oZWFkZXJzLHRoaXMuX3dpdGhDcmVkZW50aWFscyx0aGlzLl9hYm9ydENvbnRyb2xsZXIpKS50aGVuKChmdW5jdGlvbih0KXtpZighKDAsaS52YWxpZGF0ZVJlc3BvbnNlU3RhdHVzKSh0LnN0YXR1cykpdGhyb3coMCxpLmNyZWF0ZVJlc3BvbnNlU3RhdHVzRXJyb3IpKHQuc3RhdHVzLGwpO28uX3JlYWRDYXBhYmlsaXR5LnJlc29sdmUoKSxvLl9yZWFkZXI9dC5ib2R5LmdldFJlYWRlcigpfSkpLmNhdGNoKHRoaXMuX3JlYWRDYXBhYmlsaXR5LnJlamVjdCksdGhpcy5vblByb2dyZXNzPW51bGx9dmFyIGU7cmV0dXJuIGYodCxbe2tleToiaXNTdHJlYW1pbmdTdXBwb3J0ZWQiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9pc1N0cmVhbWluZ1N1cHBvcnRlZH19LHtrZXk6InJlYWQiLHZhbHVlOihlPXMoYSgpLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgZSxyLG4saSxvO3JldHVybiBhKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX3JlYWRDYXBhYmlsaXR5LnByb21pc2U7Y2FzZSAyOnJldHVybiB0Lm5leHQ9NCx0aGlzLl9yZWFkZXIucmVhZCgpO2Nhc2UgNDppZihyPXQuc2VudCxuPXIudmFsdWUsIShpPXIuZG9uZSkpe3QubmV4dD05O2JyZWFrfXJldHVybiB0LmFicnVwdCgicmV0dXJuIix7dmFsdWU6bixkb25lOml9KTtjYXNlIDk6cmV0dXJuIHRoaXMuX2xvYWRlZCs9bi5ieXRlTGVuZ3RoLG51bGw9PT0oZT10aGlzLm9uUHJvZ3Jlc3MpfHx2b2lkIDA9PT1lfHxlLmNhbGwodGhpcyx7bG9hZGVkOnRoaXMuX2xvYWRlZH0pLG89bmV3IFVpbnQ4QXJyYXkobikuYnVmZmVyLHQuYWJydXB0KCJyZXR1cm4iLHt2YWx1ZTpvLGRvbmU6ITF9KTtjYXNlIDEzOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSksZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KX0se2tleToiY2FuY2VsIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZTtudWxsPT09KGU9dGhpcy5fcmVhZGVyKXx8dm9pZCAwPT09ZXx8ZS5jYW5jZWwodCksdGhpcy5fYWJvcnRDb250cm9sbGVyLmFib3J0KCl9fV0pLHR9KCl9XSxfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX189e307ZnVuY3Rpb24gX193X3BkZmpzX3JlcXVpcmVfXyh0KXt2YXIgZT1fX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bdF07aWYodm9pZCAwIT09ZSlyZXR1cm4gZS5leHBvcnRzO3ZhciByPV9fd2VicGFja19tb2R1bGVfY2FjaGVfX1t0XT17ZXhwb3J0czp7fX07cmV0dXJuIF9fd2VicGFja19tb2R1bGVzX19bdF0ocixyLmV4cG9ydHMsX193X3BkZmpzX3JlcXVpcmVfXyksci5leHBvcnRzfXZhciBfX25lc3RlZF93ZWJwYWNrX2V4cG9ydHNfXz17fTtyZXR1cm4oKCk9Pnt2YXIgdD1fX25lc3RlZF93ZWJwYWNrX2V4cG9ydHNfXztPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIkFib3J0RXhjZXB0aW9uIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZS5BYm9ydEV4Y2VwdGlvbn19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiQW5ub3RhdGlvbkVkaXRvckxheWVyIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYS5Bbm5vdGF0aW9uRWRpdG9yTGF5ZXJ9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiQW5ub3RhdGlvbkVkaXRvclR5cGUiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBlLkFubm90YXRpb25FZGl0b3JUeXBlfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJBbm5vdGF0aW9uRWRpdG9yVUlNYW5hZ2VyIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gby5Bbm5vdGF0aW9uRWRpdG9yVUlNYW5hZ2VyfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJBbm5vdGF0aW9uTGF5ZXIiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBzLkFubm90YXRpb25MYXllcn19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiQW5ub3RhdGlvbk1vZGUiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBlLkFubm90YXRpb25Nb2RlfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJDTWFwQ29tcHJlc3Npb25UeXBlIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZS5DTWFwQ29tcHJlc3Npb25UeXBlfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJHbG9iYWxXb3JrZXJPcHRpb25zIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbC5HbG9iYWxXb3JrZXJPcHRpb25zfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJJbnZhbGlkUERGRXhjZXB0aW9uIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZS5JbnZhbGlkUERGRXhjZXB0aW9ufX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJNaXNzaW5nUERGRXhjZXB0aW9uIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZS5NaXNzaW5nUERGRXhjZXB0aW9ufX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJPUFMiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBlLk9QU319KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiUERGRGF0YVJhbmdlVHJhbnNwb3J0Iix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gci5QREZEYXRhUmFuZ2VUcmFuc3BvcnR9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIlBERkRhdGVTdHJpbmciLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBuLlBERkRhdGVTdHJpbmd9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIlBERldvcmtlciIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHIuUERGV29ya2VyfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJQYXNzd29yZFJlc3BvbnNlcyIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGUuUGFzc3dvcmRSZXNwb25zZXN9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIlBlcm1pc3Npb25GbGFnIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZS5QZXJtaXNzaW9uRmxhZ319KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiUGl4ZWxzUGVySW5jaCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG4uUGl4ZWxzUGVySW5jaH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiUmVuZGVyaW5nQ2FuY2VsbGVkRXhjZXB0aW9uIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbi5SZW5kZXJpbmdDYW5jZWxsZWRFeGNlcHRpb259fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIlNWR0dyYXBoaWNzIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYy5TVkdHcmFwaGljc319KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiVU5TVVBQT1JURURfRkVBVFVSRVMiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBlLlVOU1VQUE9SVEVEX0ZFQVRVUkVTfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJVbmV4cGVjdGVkUmVzcG9uc2VFeGNlcHRpb24iLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBlLlVuZXhwZWN0ZWRSZXNwb25zZUV4Y2VwdGlvbn19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiVXRpbCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGUuVXRpbH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiVmVyYm9zaXR5TGV2ZWwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBlLlZlcmJvc2l0eUxldmVsfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJYZmFMYXllciIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGguWGZhTGF5ZXJ9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsImJ1aWxkIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gci5idWlsZH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBlLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJjcmVhdGVWYWxpZEFic29sdXRlVXJsIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZS5jcmVhdGVWYWxpZEFic29sdXRlVXJsfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJnZXREb2N1bWVudCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHIuZ2V0RG9jdW1lbnR9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsImdldEZpbGVuYW1lRnJvbVVybCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG4uZ2V0RmlsZW5hbWVGcm9tVXJsfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJnZXRQZGZGaWxlbmFtZUZyb21VcmwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBuLmdldFBkZkZpbGVuYW1lRnJvbVVybH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiZ2V0WGZhUGFnZVZpZXdwb3J0Iix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbi5nZXRYZmFQYWdlVmlld3BvcnR9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsImlzRGF0YVNjaGVtZSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG4uaXNEYXRhU2NoZW1lfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJpc1BkZkZpbGUiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBuLmlzUGRmRmlsZX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwibG9hZFNjcmlwdCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG4ubG9hZFNjcmlwdH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwicmVuZGVyVGV4dExheWVyIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gaS5yZW5kZXJUZXh0TGF5ZXJ9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsInNldExheWVyRGltZW5zaW9ucyIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG4uc2V0TGF5ZXJEaW1lbnNpb25zfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJzaGFkb3ciLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBlLnNoYWRvd319KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwidXBkYXRlVGV4dExheWVyIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gaS51cGRhdGVUZXh0TGF5ZXJ9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsInZlcnNpb24iLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiByLnZlcnNpb259fSk7dmFyIGU9X193X3BkZmpzX3JlcXVpcmVfXygxKSxyPV9fd19wZGZqc19yZXF1aXJlX18oMTMzKSxuPV9fd19wZGZqc19yZXF1aXJlX18oMTM3KSxpPV9fd19wZGZqc19yZXF1aXJlX18oMTUxKSxhPV9fd19wZGZqc19yZXF1aXJlX18oMTUyKSxvPV9fd19wZGZqc19yZXF1aXJlX18oMTM2KSxzPV9fd19wZGZqc19yZXF1aXJlX18oMTU3KSxsPV9fd19wZGZqc19yZXF1aXJlX18oMTQ0KSx1PV9fd19wZGZqc19yZXF1aXJlX18oMyksYz1fX3dfcGRmanNfcmVxdWlyZV9fKDE2MCksaD1fX3dfcGRmanNfcmVxdWlyZV9fKDE1OSk7aWYodS5pc05vZGVKUyl7dmFyIGY9X193X3BkZmpzX3JlcXVpcmVfXygxNjEpLlBERk5vZGVTdHJlYW07KDAsci5zZXRQREZOZXR3b3JrU3RyZWFtRmFjdG9yeSkoKGZ1bmN0aW9uKHQpe3JldHVybiBuZXcgZih0KX0pKX1lbHNle3ZhciBkPV9fd19wZGZqc19yZXF1aXJlX18oMTY0KS5QREZOZXR3b3JrU3RyZWFtLHA9X193X3BkZmpzX3JlcXVpcmVfXygxNjUpLlBERkZldGNoU3RyZWFtOygwLHIuc2V0UERGTmV0d29ya1N0cmVhbUZhY3RvcnkpKChmdW5jdGlvbih0KXtyZXR1cm4oMCxuLmlzVmFsaWRGZXRjaFVybCkodC51cmwpP25ldyBwKHQpOm5ldyBkKHQpfSkpfX0pKCksX19uZXN0ZWRfd2VicGFja19leHBvcnRzX199KSgpLCJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmIm9iamVjdCI9PXR5cGVvZiBtb2R1bGU/bW9kdWxlLmV4cG9ydHM9ZmFjdG9yeSgpOiJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKCJwZGZqcy1kaXN0L2J1aWxkL3BkZiIsW10sZmFjdG9yeSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP2V4cG9ydHNbInBkZmpzLWRpc3QvYnVpbGQvcGRmIl09ZmFjdG9yeSgpOnJvb3RbInBkZmpzLWRpc3QvYnVpbGQvcGRmIl09cm9vdC5wZGZqc0xpYj1mYWN0b3J5KCk7",T=`data:text/javascript;base64,${a}`,C=`data:text/javascript;base64,${M}`;let L=!1,y=!1;class H{constructor(Z,l={},m={}){X(this,"container",null);X(this,"wrapper",null);X(this,"wrapperMain",null);X(this,"options",{});X(this,"requestOptions",{});X(this,"pdfDocument",null);X(this,"loopCheckTimer",null);this.container=Z,this.options={staticFileUrl:"https://unpkg.com/pdfjs-dist@3.1.81/",...l},this.requestOptions=m,this.createWrapper()}createWrapper(){this.wrapper=document.createElement("div"),this.wrapper.className="vue-office-pdf",this.wrapper.setAttribute("style","text-align: center;overflow-y: auto;"),this.container.appendChild(this.wrapper)}createWrapperMain(){this.wrapperMain=document.createElement("div"),this.wrapperMain.className="vue-office-pdf-wrapper",this.wrapperMain.setAttribute("style","background: gray; padding: 30px 0;position: relative;"),this.wrapper.appendChild(this.wrapperMain)}createCanvas(Z){let l=this.wrapperMain.querySelectorAll("canvas");if(l[Z-1])return[l[Z-1],l[Z-1].getContext("2d")];const m=document.createElement("canvas");return m.setAttribute("style","width:100%"),this.wrapperMain.appendChild(m),[m,m.getContext("2d")]}installPdfScript(){return s(T).then(()=>{if(window.pdfjsLib&&!y)y=!0,window.pdfjsLib.GlobalWorkerOptions.workerSrc=C;else return Promise.reject("window.pdfjsLib未找到")})}waitPdfjsLoad(){return new Promise(Z=>{const l=()=>{window.pdfjsLib?Z():this.loopCheckTimer=setTimeout(l,10)};l()})}checkPdfLib(){return window.pdfjsLib?Promise.resolve():L?this.waitPdfjsLoad():(L=!0,this.installPdfScript())}getDocument(Z){return window.pdfjsLib.getDocument({url:p(Z),httpHeaders:this.requestOptions&&this.requestOptions.headers,withCredentials:this.requestOptions&&this.requestOptions.withCredentials,cMapUrl:`${this.options.staticFileUrl.endsWith("/")?this.options.staticFileUrl:this.options.staticFileUrl+"/"}cmaps/`,cMapPacked:!0,enableXfa:!0,...S(this.options,["width","staticFileUrl"])}).promise}renderSinglePage(Z){return this.pdfDocument.getPage(Z).then(l=>{const m=l.getViewport({scale:2}),b=window.devicePixelRatio>2?1.5:2;let[G,i]=this.createCanvas(Z);G.width=Math.floor(m.width*b),G.height=Math.floor(m.height*b);let c=Math.floor(m.width),W=Math.floor(m.height);if(this.options.width){let I=this.options.width/c;c=Math.floor(this.options.width),W=Math.floor(W*I)}let Y=this.wrapperMain.getBoundingClientRect().width-20;if(c>Y){let I=Y/c;c=Math.floor(Y),W=Math.floor(W*I)}G.style.width=c+"px",G.style.height=W+"px";const V=b!==1?[b,0,0,b,0,0]:null;return l.render({canvasContext:i,transform:V,viewport:m}).promise.then(()=>{if(this.pdfDocument.numPages>Z)return this.renderSinglePage(Z+1)})})}renderPage(){if(!this.wrapperMain)this.createWrapperMain();else{let Z=this.wrapperMain.querySelectorAll("canvas");if(Z.length>this.pdfDocument.numPages)for(let l=Z.length-1;l>=this.pdfDocument.numPages;l--)this.wrapperMain.removeChild(Z[l])}return this.renderSinglePage(1)}clearAllCanvas(){this.wrapperMain&&(this.wrapper.removeChild(this.wrapperMain),this.wrapperMain=null)}setOptions(Z){this.options=Z}setRequestOptions(Z){this.requestOptions=Z}preview(Z){return new Promise((l,m)=>{if(!Z){this.clearAllCanvas(),m(new Error("预览地址不能为空"));return}this.checkPdfLib().then(b=>{this.getDocument(Z).then(G=>{this.pdfDocument&&this.pdfDocument.destroy(),this.pdfDocument=G,this.renderPage().then(i=>{l()}).catch(i=>{this.clearAllCanvas(),m(i)})}).catch(G=>{this.clearAllCanvas(),m(G)})}).catch(b=>{this.clearAllCanvas(),m(b)})})}rerender(){return this.renderPage().then(Z=>Promise.resolve()).catch(Z=>(this.clearAllCanvas(),Promise.reject(Z)))}save(Z){this.pdfDocument&&this.pdfDocument._transport&&this.pdfDocument._transport.getData().then(l=>{J(Z||`js-preview-pdf-${new Date().getTime()}.pdf`,l.buffer)})}destroy(){this.container.removeChild(this.wrapper),this.container=null,this.wrapper=null,this.wrapperMain=null,this.options={},this.requestOptions={},this.pdfDocument&&this.pdfDocument.destroy(),this.pdfDocument=null,this.loopCheckTimer&&clearTimeout(this.loopCheckTimer)}}function w(d,Z,l){return new H(d,Z,l)}const F={init:w},g={__name:"JsPdfDemo",setup(d){const Z=R(null);return N(()=>{window.myPdfPreview=F.init(Z.value),window.myPdfPreview.preview("/vue-office/examples/dist/static/test-files/test.pdf").then(l=>{console.log("excel preview done",window.myPdfPreview)}).catch(l=>{console.log("err",l)})}),(l,m)=>(x(),K("div",{ref_key:"dom",ref:Z,style:{height:"calc(100vh - 50px)"}},null,512))}};export{g as default}; diff --git a/examples/dist/assets/PdfDemo-678dff5a.js b/examples/dist/assets/PdfDemo-678dff5a.js new file mode 100644 index 0000000..ef734b6 --- /dev/null +++ b/examples/dist/assets/PdfDemo-678dff5a.js @@ -0,0 +1,3 @@ +import{g as D,d as N,l as B}from"./url-de9b02cf.js";import{o as U}from"./omit-f856690a.js";import{d as X,_ as H,r as w,h as $,o as q,w as G,a as y,c as b,F as W,k as z,l as V,m as Y,e as K,f as J,g as Z,u as Q}from"./index-75869108.js";import{P as ee,u as C}from"./PreviewWrapper-99bcc9b3.js";const te=`/*! For license information please see worker.js.LICENSE.txt */ +var e,t;e=globalThis,t=()=>(()=>{var e=[,(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.WorkerTask=t.WorkerMessageHandler=void 0;var n=r(2),a=r(134),i=r(135),o=r(137),s=r(200),c=r(194),u=r(4),l=r(231),f=r(232);function h(){h=function(){return e};var e={},t=Object.prototype,r=t.hasOwnProperty,n=Object.defineProperty||function(e,t,r){e[t]=r.value},a="function"==typeof Symbol?Symbol:{},i=a.iterator||"@@iterator",o=a.asyncIterator||"@@asyncIterator",s=a.toStringTag||"@@toStringTag";function c(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{c({},"")}catch(e){c=function(e,t,r){return e[t]=r}}function u(e,t,r,a){var i=t&&t.prototype instanceof d?t:d,o=Object.create(i.prototype),s=new F(a||[]);return n(o,"_invoke",{value:x(e,r,s)}),o}function l(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}e.wrap=u;var f={};function d(){}function p(){}function g(){}var v={};c(v,i,(function(){return this}));var y=Object.getPrototypeOf,m=y&&y(y(P([])));m&&m!==t&&r.call(m,i)&&(v=m);var w=g.prototype=d.prototype=Object.create(v);function k(e){["next","throw","return"].forEach((function(t){c(e,t,(function(e){return this._invoke(t,e)}))}))}function S(e,t){function a(n,i,o,s){var c=l(e[n],e,i);if("throw"!==c.type){var u=c.arg,f=u.value;return f&&"object"==b(f)&&r.call(f,"__await")?t.resolve(f.__await).then((function(e){a("next",e,o,s)}),(function(e){a("throw",e,o,s)})):t.resolve(f).then((function(e){u.value=e,o(u)}),(function(e){return a("throw",e,o,s)}))}s(c.arg)}var i;n(this,"_invoke",{value:function(e,r){function n(){return new t((function(t,n){a(e,r,t,n)}))}return i=i?i.then(n,n):n()}})}function x(e,t,r){var n="suspendedStart";return function(a,i){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===a)throw i;return{value:void 0,done:!0}}for(r.method=a,r.arg=i;;){var o=r.delegate;if(o){var s=O(o,r);if(s){if(s===f)continue;return s}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var c=l(e,t,r);if("normal"===c.type){if(n=r.done?"completed":"suspendedYield",c.arg===f)continue;return{value:c.arg,done:r.done}}"throw"===c.type&&(n="completed",r.method="throw",r.arg=c.arg)}}}function O(e,t){var r=t.method,n=e.iterator[r];if(void 0===n)return t.delegate=null,"throw"===r&&e.iterator.return&&(t.method="return",t.arg=void 0,O(e,t),"throw"===t.method)||"return"!==r&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+r+"' method")),f;var a=l(n,e.iterator,t.arg);if("throw"===a.type)return t.method="throw",t.arg=a.arg,t.delegate=null,f;var i=a.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,f):i:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,f)}function A(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function C(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function F(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(A,this),this.reset(!0)}function P(e){if(e){var t=e[i];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var n=-1,a=function t(){for(;++n=0;--a){var i=this.tryEntries[a],o=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var s=r.call(i,"catchLoc"),c=r.call(i,"finallyLoc");if(s&&c){if(this.prev=0;--n){var a=this.tryEntries[n];if(a.tryLoc<=this.prev&&r.call(a,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),C(r),f}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var a=n.arg;C(r)}return a}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:P(e),resultName:t,nextLoc:r},"next"===this.method&&(this.arg=void 0),f}},e}function d(e,t){return y(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,o,s=[],c=!0,u=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){u=!0,a=e}finally{try{if(!c&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(u)throw a}}return s}}(e,t)||g(e,t)||p()}function p(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function g(e,t){if(e){if("string"==typeof e)return v(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?v(e,t):void 0}}function v(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return o=e.done,e},e:function(e){s=!0,i=e},f:function(){try{o||null==r.return||r.return()}finally{if(s)throw i}}}}(f);try{var m=function(){var e=d(h.value,2),t=e[0],n=e[1];l.push(r.getPage(t).then((function(e){var r=new x("Save (editor): page ".concat(t));return e.saveNewAnnotations(E,r,n).finally((function(){_(r)}))})))};for(v.s();!(h=v.n()).done;)m()}catch(e){v.e(e)}finally{v.f()}}if(t)l.push(r.serializeXfaData(s));else for(var b=function(e){l.push(r.getPage(e).then((function(t){var r=new x("Save: page ".concat(e));return t.save(E,r,s).finally((function(){_(r)}))})))},w=0;w=n.VerbosityLevel.INFOS?Date.now():0;r.getOperatorList({handler:E,sink:t,task:i,intent:e.intent,cacheKey:e.cacheKey,annotationStorage:e.annotationStorage}).then((function(e){_(i),o&&(0,n.info)("page=".concat(a+1," - getOperatorList: time=")+"".concat(Date.now()-o,"ms, len=").concat(e.length)),t.close()}),(function(e){_(i),i.terminated||t.error(e)}))}))})),E.on("GetTextContent",(function(e,t){var a=e.pageIndex;r.getPage(a).then((function(r){var i=new x("GetTextContent: page "+a);M(i);var o=k>=n.VerbosityLevel.INFOS?Date.now():0;r.extractTextContent({handler:E,task:i,sink:t,includeMarkedContent:e.includeMarkedContent,combineTextItems:e.combineTextItems}).then((function(){_(i),o&&(0,n.info)("page=".concat(a+1," - getTextContent: time=")+"".concat(Date.now()-o,"ms")),t.close()}),(function(e){_(i),i.terminated||t.error(e)}))}))})),E.on("GetStructTree",(function(e){return r.getPage(e.pageIndex).then((function(e){return r.ensure(e,"getStructTree")}))})),E.on("FontFallback",(function(e){return r.fontFallback(e.id,E)})),E.on("Cleanup",(function(e){return r.cleanup(!0)})),E.on("Terminate",(function(e){v=!0;var t=[];if(r){r.terminate(new n.AbortException("Worker was terminated."));var a=r.cleanup();t.push(a),r=null}else(0,s.clearGlobalCaches)();b&&b(new n.AbortException("Worker was terminated."));for(var i=0,o=w;i{function n(e){return function(e){if(Array.isArray(e))return i(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||a(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function a(e,t){if(e){if("string"==typeof e)return i(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?i(e,t):void 0}}function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r1&&void 0!==arguments[1]?arguments[1]:null,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;if(!e)return null;try{if(r&&"string"==typeof e){if(r.addDefaultProtocol&&e.startsWith("www.")){var n=e.match(/\\./g);n&&n.length>=2&&(e="http://".concat(e))}if(r.tryConvertEncoding)try{e=M(e)}catch(e){}}var a=t?new URL(e,t):new URL(e);if(function(e){if(!e)return!1;switch(e.protocol){case"http:":case"https:":case"ftp:":case"mailto:":case"tel:":return!0;default:return!1}}(a))return a}catch(e){}return null},t.getModificationDate=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:new Date;return[e.getUTCFullYear().toString(),(e.getUTCMonth()+1).toString().padStart(2,"0"),e.getUTCDate().toString().padStart(2,"0"),e.getUTCHours().toString().padStart(2,"0"),e.getUTCMinutes().toString().padStart(2,"0"),e.getUTCSeconds().toString().padStart(2,"0")].join("")},t.getVerbosityLevel=function(){return g},t.info=function(e){g>=p.INFOS&&console.log("Info: ".concat(e))},t.isArrayBuffer=function(e){return"object"===o(e)&&null!==e&&void 0!==e.byteLength},t.isArrayEqual=function(e,t){if(e.length!==t.length)return!1;for(var r=0,n=e.length;r=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,c=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return s=e.done,e},e:function(e){c=!0,o=e},f:function(){try{s||null==r.return||r.return()}finally{if(c)throw o}}}}(e);try{for(i.s();!(t=i.n()).done;){var o=(r=t.value,2,function(e){if(Array.isArray(e))return e}(r)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,o,s=[],c=!0,u=!1;try{for(i=(r=r.call(e)).next,0;!(c=(n=i.call(r)).done)&&(s.push(n.value),2!==s.length);c=!0);}catch(e){u=!0,a=e}finally{try{if(!c&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(u)throw a}}return s}}(r)||a(r,2)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),s=o[0],c=o[1];n[s]=c}}catch(e){i.e(e)}finally{i.f()}return n},t.objectSize=function(e){return Object.keys(e).length},t.setVerbosityLevel=function(e){Number.isInteger(e)&&(g=e)},t.shadow=m,t.string32=function(e){return String.fromCharCode(e>>24&255,e>>16&255,e>>8&255,255&e)},t.stringToBytes=F,t.stringToPDFString=function(e){var t;if(e[0]>="ï"&&("þ"===e[0]&&"ÿ"===e[1]?t="utf-16be":"ÿ"===e[0]&&"þ"===e[1]?t="utf-16le":"ï"===e[0]&&"»"===e[1]&&"¿"===e[2]&&(t="utf-8"),t))try{var r=new TextDecoder(t,{fatal:!0}),n=F(e);return r.decode(n)}catch(e){v('stringToPDFString: "'.concat(e,'".'))}for(var a=[],i=0,o=e.length;i=p.WARNINGS&&console.log("Warning: ".concat(e))}function y(e){throw new Error(e)}function m(e,t,r){var n=arguments.length>3&&void 0!==arguments[3]&&arguments[3];return Object.defineProperty(e,t,{value:r,enumerable:!n,configurable:!0,writable:!1}),r}var b=function(){function e(t,r){this.constructor===e&&y("Cannot initialize BaseException."),this.message=t,this.name=r}return e.prototype=new Error,e.constructor=e,e}();t.BaseException=b;var w=function(e){l(r,e);var t=h(r);function r(e,n){var a;return u(this,r),(a=t.call(this,e,"PasswordException")).code=n,a}return c(r)}(b);t.PasswordException=w;var k=function(e){l(r,e);var t=h(r);function r(e,n){var a;return u(this,r),(a=t.call(this,e,"UnknownErrorException")).details=n,a}return c(r)}(b);t.UnknownErrorException=k;var S=function(e){l(r,e);var t=h(r);function r(e){return u(this,r),t.call(this,e,"InvalidPDFException")}return c(r)}(b);t.InvalidPDFException=S;var x=function(e){l(r,e);var t=h(r);function r(e){return u(this,r),t.call(this,e,"MissingPDFException")}return c(r)}(b);t.MissingPDFException=x;var O=function(e){l(r,e);var t=h(r);function r(e,n){var a;return u(this,r),(a=t.call(this,e,"UnexpectedResponseException")).status=n,a}return c(r)}(b);t.UnexpectedResponseException=O;var A=function(e){l(r,e);var t=h(r);function r(e){return u(this,r),t.call(this,e,"FormatError")}return c(r)}(b);t.FormatError=A;var C=function(e){l(r,e);var t=h(r);function r(e){return u(this,r),t.call(this,e,"AbortException")}return c(r)}(b);function F(e){"string"!=typeof e&&y("Invalid argument for stringToBytes");for(var t=e.length,r=new Uint8Array(t),n=0;ne[2]&&(t[0]=e[2],t[2]=e[0]),e[1]>e[3]&&(t[1]=e[3],t[3]=e[1]),t}},{key:"intersect",value:function(e,t){var r=Math.max(Math.min(e[0],e[2]),Math.min(t[0],t[2])),n=Math.min(Math.max(e[0],e[2]),Math.max(t[0],t[2]));if(r>n)return null;var a=Math.max(Math.min(e[1],e[3]),Math.min(t[1],t[3])),i=Math.min(Math.max(e[1],e[3]),Math.max(t[1],t[3]));return a>i?null:[r,a,n,i]}},{key:"bezierBoundingBox",value:function(e,t,r,a,i,o,s,c){for(var u,l,f,h,d,p,g,v,y=[],m=[[],[]],b=0;b<2;++b)if(0===b?(l=6*e-12*r+6*i,u=-3*e+9*r-9*i+3*s,f=3*r-3*e):(l=6*t-12*a+6*o,u=-3*t+9*a-9*o+3*c,f=3*a-3*t),Math.abs(u)<1e-12){if(Math.abs(l)<1e-12)continue;0<(h=-f/l)&&h<1&&y.push(h)}else g=l*l-4*f*u,v=Math.sqrt(g),g<0||(0<(d=(-l+v)/(2*u))&&d<1&&y.push(d),0<(p=(-l-v)/(2*u))&&p<1&&y.push(p));for(var w,k=y.length,S=k;k--;)w=1-(h=y[k]),m[0][k]=w*w*w*e+3*w*w*h*r+3*w*h*h*i+h*h*h*s,m[1][k]=w*w*w*t+3*w*w*h*a+3*w*h*h*o+h*h*h*c;return m[0][S]=e,m[1][S]=t,m[0][S+1]=s,m[1][S+1]=c,m[0].length=m[1].length=S+2,[Math.min.apply(Math,n(m[0])),Math.min.apply(Math,n(m[1])),Math.max.apply(Math,n(m[0])),Math.max.apply(Math,n(m[1]))]}}]),e}();t.Util=E;var j=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,728,711,710,729,733,731,730,732,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8226,8224,8225,8230,8212,8211,402,8260,8249,8250,8722,8240,8222,8220,8221,8216,8217,8218,8482,64257,64258,321,338,352,376,381,305,322,339,353,382,0,8364];function M(e){return decodeURIComponent(escape(e))}},(e,t,r)=>{var n=r(4);!globalThis.btoa&&n.isNodeJS&&(globalThis.btoa=function(e){return Buffer.from(e,"binary").toString("base64")}),!globalThis.atob&&n.isNodeJS&&(globalThis.atob=function(e){return Buffer.from(e,"base64").toString("binary")}),!globalThis.DOMMatrix&&n.isNodeJS&&(globalThis.DOMMatrix=require("canvas").DOMMatrix),!globalThis.ReadableStream&&n.isNodeJS&&(globalThis.ReadableStream=require("web-streams-polyfill/dist/ponyfill.js").ReadableStream),Array.prototype.at||r(5),Uint8Array.prototype.at||r(79),globalThis.structuredClone||r(89)},(e,t)=>{function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.isNodeJS=void 0;var n=!("object"!==("undefined"==typeof process?"undefined":r(process))||process+""!="[object process]"||process.versions.nw||process.versions.electron&&process.type&&"browser"!==process.type);t.isNodeJS=n},(e,t,r)=>{r(6);var n=r(78);e.exports=n("Array","at")},(e,t,r)=>{var n=r(7),a=r(44),i=r(68),o=r(66),s=r(73);n({target:"Array",proto:!0},{at:function(e){var t=a(this),r=i(t),n=o(e),s=n>=0?n:r+n;return s<0||s>=r?void 0:t[s]}}),s("at")},(e,t,r)=>{var n=r(8),a=r(9).f,i=r(48),o=r(52),s=r(42),c=r(60),u=r(72);e.exports=function(e,t){var r,l,f,h,d,p=e.target,g=e.global,v=e.stat;if(r=g?n:v?n[p]||s(p,{}):(n[p]||{}).prototype)for(l in t){if(h=t[l],f=e.dontCallGetSet?(d=a(r,l))&&d.value:r[l],!u(g?l:p+(v?".":"#")+l,e.forced)&&void 0!==f){if(typeof h==typeof f)continue;c(h,f)}(e.sham||f&&f.sham)&&i(h,"sham",!0),o(r,l,h,e)}}},e=>{var t=function(e){return e&&e.Math==Math&&e};e.exports=t("object"==typeof globalThis&&globalThis)||t("object"==typeof window&&window)||t("object"==typeof self&&self)||t("object"==typeof global&&global)||function(){return this}()||Function("return this")()},(e,t,r)=>{var n=r(10),a=r(12),i=r(14),o=r(15),s=r(16),c=r(22),u=r(43),l=r(46),f=Object.getOwnPropertyDescriptor;t.f=n?f:function(e,t){if(e=s(e),t=c(t),l)try{return f(e,t)}catch(e){}if(u(e,t))return o(!a(i.f,e,t),e[t])}},(e,t,r)=>{var n=r(11);e.exports=!n((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},e=>{e.exports=function(e){try{return!!e()}catch(e){return!0}}},(e,t,r)=>{var n=r(13),a=Function.prototype.call;e.exports=n?a.bind(a):function(){return a.apply(a,arguments)}},(e,t,r)=>{var n=r(11);e.exports=!n((function(){var e=function(){}.bind();return"function"!=typeof e||e.hasOwnProperty("prototype")}))},(e,t)=>{var r={}.propertyIsEnumerable,n=Object.getOwnPropertyDescriptor,a=n&&!r.call({1:2},1);t.f=a?function(e){var t=n(this,e);return!!t&&t.enumerable}:r},e=>{e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},(e,t,r)=>{var n=r(17),a=r(20);e.exports=function(e){return n(a(e))}},(e,t,r)=>{var n=r(18),a=r(11),i=r(19),o=Object,s=n("".split);e.exports=a((function(){return!o("z").propertyIsEnumerable(0)}))?function(e){return"String"==i(e)?s(e,""):o(e)}:o},(e,t,r)=>{var n=r(13),a=Function.prototype,i=a.call,o=n&&a.bind.bind(i,i);e.exports=n?o:function(e){return function(){return i.apply(e,arguments)}}},(e,t,r)=>{var n=r(18),a=n({}.toString),i=n("".slice);e.exports=function(e){return i(a(e),8,-1)}},(e,t,r)=>{var n=r(21),a=TypeError;e.exports=function(e){if(n(e))throw a("Can't call method on "+e);return e}},e=>{e.exports=function(e){return null==e}},(e,t,r)=>{var n=r(23),a=r(27);e.exports=function(e){var t=n(e,"string");return a(t)?t:t+""}},(e,t,r)=>{var n=r(12),a=r(24),i=r(27),o=r(34),s=r(37),c=r(38),u=TypeError,l=c("toPrimitive");e.exports=function(e,t){if(!a(e)||i(e))return e;var r,c=o(e,l);if(c){if(void 0===t&&(t="default"),r=n(c,e,t),!a(r)||i(r))return r;throw u("Can't convert object to primitive value")}return void 0===t&&(t="number"),s(e,t)}},(e,t,r)=>{var n=r(25),a=r(26),i=a.all;e.exports=a.IS_HTMLDDA?function(e){return"object"==typeof e?null!==e:n(e)||e===i}:function(e){return"object"==typeof e?null!==e:n(e)}},(e,t,r)=>{var n=r(26),a=n.all;e.exports=n.IS_HTMLDDA?function(e){return"function"==typeof e||e===a}:function(e){return"function"==typeof e}},e=>{var t="object"==typeof document&&document.all,r=void 0===t&&void 0!==t;e.exports={all:t,IS_HTMLDDA:r}},(e,t,r)=>{var n=r(28),a=r(25),i=r(29),o=r(30),s=Object;e.exports=o?function(e){return"symbol"==typeof e}:function(e){var t=n("Symbol");return a(t)&&i(t.prototype,s(e))}},(e,t,r)=>{var n=r(8),a=r(25);e.exports=function(e,t){return arguments.length<2?(r=n[e],a(r)?r:void 0):n[e]&&n[e][t];var r}},(e,t,r)=>{var n=r(18);e.exports=n({}.isPrototypeOf)},(e,t,r)=>{var n=r(31);e.exports=n&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},(e,t,r)=>{var n=r(32),a=r(11);e.exports=!!Object.getOwnPropertySymbols&&!a((function(){var e=Symbol();return!String(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&n&&n<41}))},(e,t,r)=>{var n,a,i=r(8),o=r(33),s=i.process,c=i.Deno,u=s&&s.versions||c&&c.version,l=u&&u.v8;l&&(a=(n=l.split("."))[0]>0&&n[0]<4?1:+(n[0]+n[1])),!a&&o&&(!(n=o.match(/Edge\\/(\\d+)/))||n[1]>=74)&&(n=o.match(/Chrome\\/(\\d+)/))&&(a=+n[1]),e.exports=a},(e,t,r)=>{var n=r(28);e.exports=n("navigator","userAgent")||""},(e,t,r)=>{var n=r(35),a=r(21);e.exports=function(e,t){var r=e[t];return a(r)?void 0:n(r)}},(e,t,r)=>{var n=r(25),a=r(36),i=TypeError;e.exports=function(e){if(n(e))return e;throw i(a(e)+" is not a function")}},e=>{var t=String;e.exports=function(e){try{return t(e)}catch(e){return"Object"}}},(e,t,r)=>{var n=r(12),a=r(25),i=r(24),o=TypeError;e.exports=function(e,t){var r,s;if("string"===t&&a(r=e.toString)&&!i(s=n(r,e)))return s;if(a(r=e.valueOf)&&!i(s=n(r,e)))return s;if("string"!==t&&a(r=e.toString)&&!i(s=n(r,e)))return s;throw o("Can't convert object to primitive value")}},(e,t,r)=>{var n=r(8),a=r(39),i=r(43),o=r(45),s=r(31),c=r(30),u=a("wks"),l=n.Symbol,f=l&&l.for,h=c?l:l&&l.withoutSetter||o;e.exports=function(e){if(!i(u,e)||!s&&"string"!=typeof u[e]){var t="Symbol."+e;s&&i(l,e)?u[e]=l[e]:u[e]=c&&f?f(t):h(t)}return u[e]}},(e,t,r)=>{var n=r(40),a=r(41);(e.exports=function(e,t){return a[e]||(a[e]=void 0!==t?t:{})})("versions",[]).push({version:"3.26.1",mode:n?"pure":"global",copyright:"© 2014-2022 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.26.1/LICENSE",source:"https://github.com/zloirock/core-js"})},e=>{e.exports=!1},(e,t,r)=>{var n=r(8),a=r(42),i="__core-js_shared__",o=n[i]||a(i,{});e.exports=o},(e,t,r)=>{var n=r(8),a=Object.defineProperty;e.exports=function(e,t){try{a(n,e,{value:t,configurable:!0,writable:!0})}catch(r){n[e]=t}return t}},(e,t,r)=>{var n=r(18),a=r(44),i=n({}.hasOwnProperty);e.exports=Object.hasOwn||function(e,t){return i(a(e),t)}},(e,t,r)=>{var n=r(20),a=Object;e.exports=function(e){return a(n(e))}},(e,t,r)=>{var n=r(18),a=0,i=Math.random(),o=n(1..toString);e.exports=function(e){return"Symbol("+(void 0===e?"":e)+")_"+o(++a+i,36)}},(e,t,r)=>{var n=r(10),a=r(11),i=r(47);e.exports=!n&&!a((function(){return 7!=Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},(e,t,r)=>{var n=r(8),a=r(24),i=n.document,o=a(i)&&a(i.createElement);e.exports=function(e){return o?i.createElement(e):{}}},(e,t,r)=>{var n=r(10),a=r(49),i=r(15);e.exports=n?function(e,t,r){return a.f(e,t,i(1,r))}:function(e,t,r){return e[t]=r,e}},(e,t,r)=>{var n=r(10),a=r(46),i=r(50),o=r(51),s=r(22),c=TypeError,u=Object.defineProperty,l=Object.getOwnPropertyDescriptor,f="enumerable",h="configurable",d="writable";t.f=n?i?function(e,t,r){if(o(e),t=s(t),o(r),"function"==typeof e&&"prototype"===t&&"value"in r&&d in r&&!r[d]){var n=l(e,t);n&&n[d]&&(e[t]=r.value,r={configurable:h in r?r[h]:n[h],enumerable:f in r?r[f]:n[f],writable:!1})}return u(e,t,r)}:u:function(e,t,r){if(o(e),t=s(t),o(r),a)try{return u(e,t,r)}catch(e){}if("get"in r||"set"in r)throw c("Accessors not supported");return"value"in r&&(e[t]=r.value),e}},(e,t,r)=>{var n=r(10),a=r(11);e.exports=n&&a((function(){return 42!=Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype}))},(e,t,r)=>{var n=r(24),a=String,i=TypeError;e.exports=function(e){if(n(e))return e;throw i(a(e)+" is not an object")}},(e,t,r)=>{var n=r(25),a=r(49),i=r(53),o=r(42);e.exports=function(e,t,r,s){s||(s={});var c=s.enumerable,u=void 0!==s.name?s.name:t;if(n(r)&&i(r,u,s),s.global)c?e[t]=r:o(t,r);else{try{s.unsafe?e[t]&&(c=!0):delete e[t]}catch(e){}c?e[t]=r:a.f(e,t,{value:r,enumerable:!1,configurable:!s.nonConfigurable,writable:!s.nonWritable})}return e}},(e,t,r)=>{var n=r(11),a=r(25),i=r(43),o=r(10),s=r(54).CONFIGURABLE,c=r(55),u=r(56),l=u.enforce,f=u.get,h=Object.defineProperty,d=o&&!n((function(){return 8!==h((function(){}),"length",{value:8}).length})),p=String(String).split("String"),g=e.exports=function(e,t,r){"Symbol("===String(t).slice(0,7)&&(t="["+String(t).replace(/^Symbol\\(([^)]*)\\)/,"$1")+"]"),r&&r.getter&&(t="get "+t),r&&r.setter&&(t="set "+t),(!i(e,"name")||s&&e.name!==t)&&(o?h(e,"name",{value:t,configurable:!0}):e.name=t),d&&r&&i(r,"arity")&&e.length!==r.arity&&h(e,"length",{value:r.arity});try{r&&i(r,"constructor")&&r.constructor?o&&h(e,"prototype",{writable:!1}):e.prototype&&(e.prototype=void 0)}catch(e){}var n=l(e);return i(n,"source")||(n.source=p.join("string"==typeof t?t:"")),e};Function.prototype.toString=g((function(){return a(this)&&f(this).source||c(this)}),"toString")},(e,t,r)=>{var n=r(10),a=r(43),i=Function.prototype,o=n&&Object.getOwnPropertyDescriptor,s=a(i,"name"),c=s&&"something"===function(){}.name,u=s&&(!n||n&&o(i,"name").configurable);e.exports={EXISTS:s,PROPER:c,CONFIGURABLE:u}},(e,t,r)=>{var n=r(18),a=r(25),i=r(41),o=n(Function.toString);a(i.inspectSource)||(i.inspectSource=function(e){return o(e)}),e.exports=i.inspectSource},(e,t,r)=>{var n,a,i,o=r(57),s=r(8),c=r(24),u=r(48),l=r(43),f=r(41),h=r(58),d=r(59),p="Object already initialized",g=s.TypeError,v=s.WeakMap;if(o||f.state){var y=f.state||(f.state=new v);y.get=y.get,y.has=y.has,y.set=y.set,n=function(e,t){if(y.has(e))throw g(p);return t.facade=e,y.set(e,t),t},a=function(e){return y.get(e)||{}},i=function(e){return y.has(e)}}else{var m=h("state");d[m]=!0,n=function(e,t){if(l(e,m))throw g(p);return t.facade=e,u(e,m,t),t},a=function(e){return l(e,m)?e[m]:{}},i=function(e){return l(e,m)}}e.exports={set:n,get:a,has:i,enforce:function(e){return i(e)?a(e):n(e,{})},getterFor:function(e){return function(t){var r;if(!c(t)||(r=a(t)).type!==e)throw g("Incompatible receiver, "+e+" required");return r}}}},(e,t,r)=>{var n=r(8),a=r(25),i=n.WeakMap;e.exports=a(i)&&/native code/.test(String(i))},(e,t,r)=>{var n=r(39),a=r(45),i=n("keys");e.exports=function(e){return i[e]||(i[e]=a(e))}},e=>{e.exports={}},(e,t,r)=>{var n=r(43),a=r(61),i=r(9),o=r(49);e.exports=function(e,t,r){for(var s=a(t),c=o.f,u=i.f,l=0;l{var n=r(28),a=r(18),i=r(62),o=r(71),s=r(51),c=a([].concat);e.exports=n("Reflect","ownKeys")||function(e){var t=i.f(s(e)),r=o.f;return r?c(t,r(e)):t}},(e,t,r)=>{var n=r(63),a=r(70).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return n(e,a)}},(e,t,r)=>{var n=r(18),a=r(43),i=r(16),o=r(64).indexOf,s=r(59),c=n([].push);e.exports=function(e,t){var r,n=i(e),u=0,l=[];for(r in n)!a(s,r)&&a(n,r)&&c(l,r);for(;t.length>u;)a(n,r=t[u++])&&(~o(l,r)||c(l,r));return l}},(e,t,r)=>{var n=r(16),a=r(65),i=r(68),o=function(e){return function(t,r,o){var s,c=n(t),u=i(c),l=a(o,u);if(e&&r!=r){for(;u>l;)if((s=c[l++])!=s)return!0}else for(;u>l;l++)if((e||l in c)&&c[l]===r)return e||l||0;return!e&&-1}};e.exports={includes:o(!0),indexOf:o(!1)}},(e,t,r)=>{var n=r(66),a=Math.max,i=Math.min;e.exports=function(e,t){var r=n(e);return r<0?a(r+t,0):i(r,t)}},(e,t,r)=>{var n=r(67);e.exports=function(e){var t=+e;return t!=t||0===t?0:n(t)}},e=>{var t=Math.ceil,r=Math.floor;e.exports=Math.trunc||function(e){var n=+e;return(n>0?r:t)(n)}},(e,t,r)=>{var n=r(69);e.exports=function(e){return n(e.length)}},(e,t,r)=>{var n=r(66),a=Math.min;e.exports=function(e){return e>0?a(n(e),9007199254740991):0}},e=>{e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},(e,t)=>{t.f=Object.getOwnPropertySymbols},(e,t,r)=>{var n=r(11),a=r(25),i=/#|\\.prototype\\./,o=function(e,t){var r=c[s(e)];return r==l||r!=u&&(a(t)?n(t):!!t)},s=o.normalize=function(e){return String(e).replace(i,".").toLowerCase()},c=o.data={},u=o.NATIVE="N",l=o.POLYFILL="P";e.exports=o},(e,t,r)=>{var n=r(38),a=r(74),i=r(49).f,o=n("unscopables"),s=Array.prototype;null==s[o]&&i(s,o,{configurable:!0,value:a(null)}),e.exports=function(e){s[o][e]=!0}},(e,t,r)=>{var n,a=r(51),i=r(75),o=r(70),s=r(59),c=r(77),u=r(47),l=r(58),f="prototype",h="script",d=l("IE_PROTO"),p=function(){},g=function(e){return"<"+h+">"+e+""},v=function(e){e.write(g("")),e.close();var t=e.parentWindow.Object;return e=null,t},y=function(){try{n=new ActiveXObject("htmlfile")}catch(e){}var e,t,r;y="undefined"!=typeof document?document.domain&&n?v(n):(t=u("iframe"),r="java"+h+":",t.style.display="none",c.appendChild(t),t.src=String(r),(e=t.contentWindow.document).open(),e.write(g("document.F=Object")),e.close(),e.F):v(n);for(var a=o.length;a--;)delete y[f][o[a]];return y()};s[d]=!0,e.exports=Object.create||function(e,t){var r;return null!==e?(p[f]=a(e),r=new p,p[f]=null,r[d]=e):r=y(),void 0===t?r:i.f(r,t)}},(e,t,r)=>{var n=r(10),a=r(50),i=r(49),o=r(51),s=r(16),c=r(76);t.f=n&&!a?Object.defineProperties:function(e,t){o(e);for(var r,n=s(t),a=c(t),u=a.length,l=0;u>l;)i.f(e,r=a[l++],n[r]);return e}},(e,t,r)=>{var n=r(63),a=r(70);e.exports=Object.keys||function(e){return n(e,a)}},(e,t,r)=>{var n=r(28);e.exports=n("document","documentElement")},(e,t,r)=>{var n=r(8),a=r(18);e.exports=function(e,t){return a(n[e].prototype[t])}},(e,t,r)=>{r(80)},(e,t,r)=>{var n=r(81),a=r(68),i=r(66),o=n.aTypedArray;(0,n.exportTypedArrayMethod)("at",(function(e){var t=o(this),r=a(t),n=i(e),s=n>=0?n:r+n;return s<0||s>=r?void 0:t[s]}))},(e,t,r)=>{var n,a,i,o=r(82),s=r(10),c=r(8),u=r(25),l=r(24),f=r(43),h=r(83),d=r(36),p=r(48),g=r(52),v=r(49).f,y=r(29),m=r(85),b=r(87),w=r(38),k=r(45),S=r(56),x=S.enforce,O=S.get,A=c.Int8Array,C=A&&A.prototype,F=c.Uint8ClampedArray,P=F&&F.prototype,T=A&&m(A),I=C&&m(C),E=Object.prototype,j=c.TypeError,M=w("toStringTag"),_=k("TYPED_ARRAY_TAG"),L="TypedArrayConstructor",R=o&&!!b&&"Opera"!==h(c.opera),N=!1,D={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},B={BigInt64Array:8,BigUint64Array:8},U=function(e){var t=m(e);if(l(t)){var r=O(t);return r&&f(r,L)?r[L]:U(t)}},$=function(e){if(!l(e))return!1;var t=h(e);return f(D,t)||f(B,t)};for(n in D)(i=(a=c[n])&&a.prototype)?x(i)[L]=a:R=!1;for(n in B)(i=(a=c[n])&&a.prototype)&&(x(i)[L]=a);if((!R||!u(T)||T===Function.prototype)&&(T=function(){throw j("Incorrect invocation")},R))for(n in D)c[n]&&b(c[n],T);if((!R||!I||I===E)&&(I=T.prototype,R))for(n in D)c[n]&&b(c[n].prototype,I);if(R&&m(P)!==I&&b(P,I),s&&!f(I,M))for(n in N=!0,v(I,M,{get:function(){return l(this)?this[_]:void 0}}),D)c[n]&&p(c[n],_,n);e.exports={NATIVE_ARRAY_BUFFER_VIEWS:R,TYPED_ARRAY_TAG:N&&_,aTypedArray:function(e){if($(e))return e;throw j("Target is not a typed array")},aTypedArrayConstructor:function(e){if(u(e)&&(!b||y(T,e)))return e;throw j(d(e)+" is not a typed array constructor")},exportTypedArrayMethod:function(e,t,r,n){if(s){if(r)for(var a in D){var i=c[a];if(i&&f(i.prototype,e))try{delete i.prototype[e]}catch(r){try{i.prototype[e]=t}catch(e){}}}I[e]&&!r||g(I,e,r?t:R&&C[e]||t,n)}},exportTypedArrayStaticMethod:function(e,t,r){var n,a;if(s){if(b){if(r)for(n in D)if((a=c[n])&&f(a,e))try{delete a[e]}catch(e){}if(T[e]&&!r)return;try{return g(T,e,r?t:R&&T[e]||t)}catch(e){}}for(n in D)!(a=c[n])||a[e]&&!r||g(a,e,t)}},getTypedArrayConstructor:U,isView:function(e){if(!l(e))return!1;var t=h(e);return"DataView"===t||f(D,t)||f(B,t)},isTypedArray:$,TypedArray:T,TypedArrayPrototype:I}},e=>{e.exports="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView},(e,t,r)=>{var n=r(84),a=r(25),i=r(19),o=r(38)("toStringTag"),s=Object,c="Arguments"==i(function(){return arguments}());e.exports=n?i:function(e){var t,r,n;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(r=function(e,t){try{return e[t]}catch(e){}}(t=s(e),o))?r:c?i(t):"Object"==(n=i(t))&&a(t.callee)?"Arguments":n}},(e,t,r)=>{var n={};n[r(38)("toStringTag")]="z",e.exports="[object z]"===String(n)},(e,t,r)=>{var n=r(43),a=r(25),i=r(44),o=r(58),s=r(86),c=o("IE_PROTO"),u=Object,l=u.prototype;e.exports=s?u.getPrototypeOf:function(e){var t=i(e);if(n(t,c))return t[c];var r=t.constructor;return a(r)&&t instanceof r?r.prototype:t instanceof u?l:null}},(e,t,r)=>{var n=r(11);e.exports=!n((function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype}))},(e,t,r)=>{var n=r(18),a=r(51),i=r(88);e.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,r={};try{(e=n(Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set))(r,[]),t=r instanceof Array}catch(e){}return function(r,n){return a(r),i(n),t?e(r,n):r.__proto__=n,r}}():void 0)},(e,t,r)=>{var n=r(25),a=String,i=TypeError;e.exports=function(e){if("object"==typeof e||n(e))return e;throw i("Can't set "+a(e)+" as a prototype")}},(e,t,r)=>{r(90),r(97),r(99),r(122),r(124);var n=r(133);e.exports=n.structuredClone},(e,t,r)=>{var n=r(16),a=r(73),i=r(91),o=r(56),s=r(49).f,c=r(92),u=r(96),l=r(40),f=r(10),h="Array Iterator",d=o.set,p=o.getterFor(h);e.exports=c(Array,"Array",(function(e,t){d(this,{type:h,target:n(e),index:0,kind:t})}),(function(){var e=p(this),t=e.target,r=e.kind,n=e.index++;return!t||n>=t.length?(e.target=void 0,u(void 0,!0)):u("keys"==r?n:"values"==r?t[n]:[n,t[n]],!1)}),"values");var g=i.Arguments=i.Array;if(a("keys"),a("values"),a("entries"),!l&&f&&"values"!==g.name)try{s(g,"name",{value:"values"})}catch(e){}},e=>{e.exports={}},(e,t,r)=>{var n=r(7),a=r(12),i=r(40),o=r(54),s=r(25),c=r(93),u=r(85),l=r(87),f=r(95),h=r(48),d=r(52),p=r(38),g=r(91),v=r(94),y=o.PROPER,m=o.CONFIGURABLE,b=v.IteratorPrototype,w=v.BUGGY_SAFARI_ITERATORS,k=p("iterator"),S="keys",x="values",O="entries",A=function(){return this};e.exports=function(e,t,r,o,p,v,C){c(r,t,o);var F,P,T,I=function(e){if(e===p&&L)return L;if(!w&&e in M)return M[e];switch(e){case S:case x:case O:return function(){return new r(this,e)}}return function(){return new r(this)}},E=t+" Iterator",j=!1,M=e.prototype,_=M[k]||M["@@iterator"]||p&&M[p],L=!w&&_||I(p),R="Array"==t&&M.entries||_;if(R&&(F=u(R.call(new e)))!==Object.prototype&&F.next&&(i||u(F)===b||(l?l(F,b):s(F[k])||d(F,k,A)),f(F,E,!0,!0),i&&(g[E]=A)),y&&p==x&&_&&_.name!==x&&(!i&&m?h(M,"name",x):(j=!0,L=function(){return a(_,this)})),p)if(P={values:I(x),keys:v?L:I(S),entries:I(O)},C)for(T in P)(w||j||!(T in M))&&d(M,T,P[T]);else n({target:t,proto:!0,forced:w||j},P);return i&&!C||M[k]===L||d(M,k,L,{name:p}),g[t]=L,P}},(e,t,r)=>{var n=r(94).IteratorPrototype,a=r(74),i=r(15),o=r(95),s=r(91),c=function(){return this};e.exports=function(e,t,r,u){var l=t+" Iterator";return e.prototype=a(n,{next:i(+!u,r)}),o(e,l,!1,!0),s[l]=c,e}},(e,t,r)=>{var n,a,i,o=r(11),s=r(25),c=r(24),u=r(74),l=r(85),f=r(52),h=r(38),d=r(40),p=h("iterator"),g=!1;[].keys&&("next"in(i=[].keys())?(a=l(l(i)))!==Object.prototype&&(n=a):g=!0),!c(n)||o((function(){var e={};return n[p].call(e)!==e}))?n={}:d&&(n=u(n)),s(n[p])||f(n,p,(function(){return this})),e.exports={IteratorPrototype:n,BUGGY_SAFARI_ITERATORS:g}},(e,t,r)=>{var n=r(49).f,a=r(43),i=r(38)("toStringTag");e.exports=function(e,t,r){e&&!r&&(e=e.prototype),e&&!a(e,i)&&n(e,i,{configurable:!0,value:t})}},e=>{e.exports=function(e,t){return{value:e,done:t}}},(e,t,r)=>{var n=r(84),a=r(52),i=r(98);n||a(Object.prototype,"toString",i,{unsafe:!0})},(e,t,r)=>{var n=r(84),a=r(83);e.exports=n?{}.toString:function(){return"[object "+a(this)+"]"}},(e,t,r)=>{r(100)},(e,t,r)=>{r(101)("Map",(function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}}),r(119))},(e,t,r)=>{var n=r(7),a=r(8),i=r(18),o=r(72),s=r(52),c=r(102),u=r(109),l=r(116),f=r(25),h=r(21),d=r(24),p=r(11),g=r(117),v=r(95),y=r(118);e.exports=function(e,t,r){var m=-1!==e.indexOf("Map"),b=-1!==e.indexOf("Weak"),w=m?"set":"add",k=a[e],S=k&&k.prototype,x=k,O={},A=function(e){var t=i(S[e]);s(S,e,"add"==e?function(e){return t(this,0===e?0:e),this}:"delete"==e?function(e){return!(b&&!d(e))&&t(this,0===e?0:e)}:"get"==e?function(e){return b&&!d(e)?void 0:t(this,0===e?0:e)}:"has"==e?function(e){return!(b&&!d(e))&&t(this,0===e?0:e)}:function(e,r){return t(this,0===e?0:e,r),this})};if(o(e,!f(k)||!(b||S.forEach&&!p((function(){(new k).entries().next()})))))x=r.getConstructor(t,e,m,w),c.enable();else if(o(e,!0)){var C=new x,F=C[w](b?{}:-0,1)!=C,P=p((function(){C.has(1)})),T=g((function(e){new k(e)})),I=!b&&p((function(){for(var e=new k,t=5;t--;)e[w](t,t);return!e.has(-0)}));T||((x=t((function(e,t){l(e,S);var r=y(new k,e,x);return h(t)||u(t,r[w],{that:r,AS_ENTRIES:m}),r}))).prototype=S,S.constructor=x),(P||I)&&(A("delete"),A("has"),m&&A("get")),(I||F)&&A(w),b&&S.clear&&delete S.clear}return O[e]=x,n({global:!0,constructor:!0,forced:x!=k},O),v(x,e),b||r.setStrong(x,e,m),x}},(e,t,r)=>{var n=r(7),a=r(18),i=r(59),o=r(24),s=r(43),c=r(49).f,u=r(62),l=r(103),f=r(106),h=r(45),d=r(108),p=!1,g=h("meta"),v=0,y=function(e){c(e,g,{value:{objectID:"O"+v++,weakData:{}}})},m=e.exports={enable:function(){m.enable=function(){},p=!0;var e=u.f,t=a([].splice),r={};r[g]=1,e(r).length&&(u.f=function(r){for(var n=e(r),a=0,i=n.length;a{var n=r(19),a=r(16),i=r(62).f,o=r(104),s="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];e.exports.f=function(e){return s&&"Window"==n(e)?function(e){try{return i(e)}catch(e){return o(s)}}(e):i(a(e))}},(e,t,r)=>{var n=r(65),a=r(68),i=r(105),o=Array,s=Math.max;e.exports=function(e,t,r){for(var c=a(e),u=n(t,c),l=n(void 0===r?c:r,c),f=o(s(l-u,0)),h=0;u{var n=r(22),a=r(49),i=r(15);e.exports=function(e,t,r){var o=n(t);o in e?a.f(e,o,i(0,r)):e[o]=r}},(e,t,r)=>{var n=r(11),a=r(24),i=r(19),o=r(107),s=Object.isExtensible,c=n((function(){s(1)}));e.exports=c||o?function(e){return!!a(e)&&(!o||"ArrayBuffer"!=i(e))&&(!s||s(e))}:s},(e,t,r)=>{var n=r(11);e.exports=n((function(){if("function"==typeof ArrayBuffer){var e=new ArrayBuffer(8);Object.isExtensible(e)&&Object.defineProperty(e,"a",{value:8})}}))},(e,t,r)=>{var n=r(11);e.exports=!n((function(){return Object.isExtensible(Object.preventExtensions({}))}))},(e,t,r)=>{var n=r(110),a=r(12),i=r(51),o=r(36),s=r(112),c=r(68),u=r(29),l=r(113),f=r(114),h=r(115),d=TypeError,p=function(e,t){this.stopped=e,this.result=t},g=p.prototype;e.exports=function(e,t,r){var v,y,m,b,w,k,S,x=r&&r.that,O=!(!r||!r.AS_ENTRIES),A=!(!r||!r.IS_RECORD),C=!(!r||!r.IS_ITERATOR),F=!(!r||!r.INTERRUPTED),P=n(t,x),T=function(e){return v&&h(v,"normal",e),new p(!0,e)},I=function(e){return O?(i(e),F?P(e[0],e[1],T):P(e[0],e[1])):F?P(e,T):P(e)};if(A)v=e.iterator;else if(C)v=e;else{if(!(y=f(e)))throw d(o(e)+" is not iterable");if(s(y)){for(m=0,b=c(e);b>m;m++)if((w=I(e[m]))&&u(g,w))return w;return new p(!1)}v=l(e,y)}for(k=A?e.next:v.next;!(S=a(k,v)).done;){try{w=I(S.value)}catch(e){h(v,"throw",e)}if("object"==typeof w&&w&&u(g,w))return w}return new p(!1)}},(e,t,r)=>{var n=r(111),a=r(35),i=r(13),o=n(n.bind);e.exports=function(e,t){return a(e),void 0===t?e:i?o(e,t):function(){return e.apply(t,arguments)}}},(e,t,r)=>{var n=r(19),a=r(18);e.exports=function(e){if("Function"===n(e))return a(e)}},(e,t,r)=>{var n=r(38),a=r(91),i=n("iterator"),o=Array.prototype;e.exports=function(e){return void 0!==e&&(a.Array===e||o[i]===e)}},(e,t,r)=>{var n=r(12),a=r(35),i=r(51),o=r(36),s=r(114),c=TypeError;e.exports=function(e,t){var r=arguments.length<2?s(e):t;if(a(r))return i(n(r,e));throw c(o(e)+" is not iterable")}},(e,t,r)=>{var n=r(83),a=r(34),i=r(21),o=r(91),s=r(38)("iterator");e.exports=function(e){if(!i(e))return a(e,s)||a(e,"@@iterator")||o[n(e)]}},(e,t,r)=>{var n=r(12),a=r(51),i=r(34);e.exports=function(e,t,r){var o,s;a(e);try{if(!(o=i(e,"return"))){if("throw"===t)throw r;return r}o=n(o,e)}catch(e){s=!0,o=e}if("throw"===t)throw r;if(s)throw o;return a(o),r}},(e,t,r)=>{var n=r(29),a=TypeError;e.exports=function(e,t){if(n(t,e))return e;throw a("Incorrect invocation")}},(e,t,r)=>{var n=r(38)("iterator"),a=!1;try{var i=0,o={next:function(){return{done:!!i++}},return:function(){a=!0}};o[n]=function(){return this},Array.from(o,(function(){throw 2}))}catch(e){}e.exports=function(e,t){if(!t&&!a)return!1;var r=!1;try{var i={};i[n]=function(){return{next:function(){return{done:r=!0}}}},e(i)}catch(e){}return r}},(e,t,r)=>{var n=r(25),a=r(24),i=r(87);e.exports=function(e,t,r){var o,s;return i&&n(o=t.constructor)&&o!==r&&a(s=o.prototype)&&s!==r.prototype&&i(e,s),e}},(e,t,r)=>{var n=r(49).f,a=r(74),i=r(120),o=r(110),s=r(116),c=r(21),u=r(109),l=r(92),f=r(96),h=r(121),d=r(10),p=r(102).fastKey,g=r(56),v=g.set,y=g.getterFor;e.exports={getConstructor:function(e,t,r,l){var f=e((function(e,n){s(e,h),v(e,{type:t,index:a(null),first:void 0,last:void 0,size:0}),d||(e.size=0),c(n)||u(n,e[l],{that:e,AS_ENTRIES:r})})),h=f.prototype,g=y(t),m=function(e,t,r){var n,a,i=g(e),o=b(e,t);return o?o.value=r:(i.last=o={index:a=p(t,!0),key:t,value:r,previous:n=i.last,next:void 0,removed:!1},i.first||(i.first=o),n&&(n.next=o),d?i.size++:e.size++,"F"!==a&&(i.index[a]=o)),e},b=function(e,t){var r,n=g(e),a=p(t);if("F"!==a)return n.index[a];for(r=n.first;r;r=r.next)if(r.key==t)return r};return i(h,{clear:function(){for(var e=g(this),t=e.index,r=e.first;r;)r.removed=!0,r.previous&&(r.previous=r.previous.next=void 0),delete t[r.index],r=r.next;e.first=e.last=void 0,d?e.size=0:this.size=0},delete:function(e){var t=this,r=g(t),n=b(t,e);if(n){var a=n.next,i=n.previous;delete r.index[n.index],n.removed=!0,i&&(i.next=a),a&&(a.previous=i),r.first==n&&(r.first=a),r.last==n&&(r.last=i),d?r.size--:t.size--}return!!n},forEach:function(e){for(var t,r=g(this),n=o(e,arguments.length>1?arguments[1]:void 0);t=t?t.next:r.first;)for(n(t.value,t.key,this);t&&t.removed;)t=t.previous},has:function(e){return!!b(this,e)}}),i(h,r?{get:function(e){var t=b(this,e);return t&&t.value},set:function(e,t){return m(this,0===e?0:e,t)}}:{add:function(e){return m(this,e=0===e?0:e,e)}}),d&&n(h,"size",{get:function(){return g(this).size}}),f},setStrong:function(e,t,r){var n=t+" Iterator",a=y(t),i=y(n);l(e,t,(function(e,t){v(this,{type:n,target:e,state:a(e),kind:t,last:void 0})}),(function(){for(var e=i(this),t=e.kind,r=e.last;r&&r.removed;)r=r.previous;return e.target&&(e.last=r=r?r.next:e.state.first)?f("keys"==t?r.key:"values"==t?r.value:[r.key,r.value],!1):(e.target=void 0,f(void 0,!0))}),r?"entries":"values",!r,!0),h(t)}}},(e,t,r)=>{var n=r(52);e.exports=function(e,t,r){for(var a in t)n(e,a,t[a],r);return e}},(e,t,r)=>{var n=r(28),a=r(49),i=r(38),o=r(10),s=i("species");e.exports=function(e){var t=n(e),r=a.f;o&&t&&!t[s]&&r(t,s,{configurable:!0,get:function(){return this}})}},(e,t,r)=>{r(123)},(e,t,r)=>{r(101)("Set",(function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}}),r(119))},(e,t,r)=>{var n,a=r(40),i=r(7),o=r(8),s=r(28),c=r(18),u=r(11),l=r(45),f=r(25),h=r(125),d=r(21),p=r(24),g=r(27),v=r(109),y=r(51),m=r(83),b=r(43),w=r(105),k=r(48),S=r(68),x=r(126),O=r(127),A=r(129),C=r(32),F=r(130),P=r(131),T=r(132),I=o.Object,E=o.Date,j=o.Error,M=o.EvalError,_=o.RangeError,L=o.ReferenceError,R=o.SyntaxError,N=o.TypeError,D=o.URIError,B=o.PerformanceMark,U=o.WebAssembly,$=U&&U.CompileError||j,X=U&&U.LinkError||j,H=U&&U.RuntimeError||j,q=s("DOMException"),G=s("Set"),z=s("Map"),W=z.prototype,V=c(W.has),Y=c(W.get),K=c(W.set),J=c(G.prototype.add),Z=s("Object","keys"),Q=c([].push),ee=c((!0).valueOf),te=c(1..valueOf),re=c("".valueOf),ne=c(E.prototype.getTime),ae=l("structuredClone"),ie="DataCloneError",oe="Transferring",se=function(e){return!u((function(){var t=new o.Set([7]),r=e(t),n=e(I(7));return r==t||!r.has(7)||"object"!=typeof n||7!=n}))&&e},ce=function(e,t){return!u((function(){var r=new t,n=e({a:r,b:r});return!(n&&n.a===n.b&&n.a instanceof t&&n.a.stack===r.stack)}))},ue=o.structuredClone,le=a||!ce(ue,j)||!ce(ue,q)||(n=ue,!!u((function(){var e=n(new o.AggregateError([1],ae,{cause:3}));return"AggregateError"!=e.name||1!=e.errors[0]||e.message!=ae||3!=e.cause}))),fe=!ue&&se((function(e){return new B(ae,{detail:e}).detail})),he=se(ue)||fe,de=function(e){throw new q("Uncloneable type: "+e,ie)},pe=function(e,t){throw new q((t||"Cloning")+" of "+e+" cannot be properly polyfilled in this engine",ie)},ge=function(e,t){if(g(e)&&de("Symbol"),!p(e))return e;if(t){if(V(t,e))return Y(t,e)}else t=new z;var r,n,a,i,c,u,l,h,d,v,y=m(e),x=!1;switch(y){case"Array":a=[],x=!0;break;case"Object":a={},x=!0;break;case"Map":a=new z,x=!0;break;case"Set":a=new G,x=!0;break;case"RegExp":a=new RegExp(e.source,O(e));break;case"Error":switch(n=e.name){case"AggregateError":a=s("AggregateError")([]);break;case"EvalError":a=M();break;case"RangeError":a=_();break;case"ReferenceError":a=L();break;case"SyntaxError":a=R();break;case"TypeError":a=N();break;case"URIError":a=D();break;case"CompileError":a=$();break;case"LinkError":a=X();break;case"RuntimeError":a=H();break;default:a=j()}x=!0;break;case"DOMException":a=new q(e.message,e.name),x=!0;break;case"DataView":case"Int8Array":case"Uint8Array":case"Uint8ClampedArray":case"Int16Array":case"Uint16Array":case"Int32Array":case"Uint32Array":case"Float32Array":case"Float64Array":case"BigInt64Array":case"BigUint64Array":r=o[y],p(r)||pe(y),a=new r(ge(e.buffer,t),e.byteOffset,"DataView"===y?e.byteLength:e.length);break;case"DOMQuad":try{a=new DOMQuad(ge(e.p1,t),ge(e.p2,t),ge(e.p3,t),ge(e.p4,t))}catch(t){he?a=he(e):pe(y)}break;case"FileList":if(i=function(){var e;try{e=new o.DataTransfer}catch(t){try{e=new o.ClipboardEvent("").clipboardData}catch(e){}}return e&&e.items&&e.files?e:null}()){for(c=0,u=S(e);c92||T&&C>94||F&&C>97)return!1;var e=new ArrayBuffer(8),t=ue(e,{transfer:[e]});return 0!=e.byteLength||8!=t.byteLength}));i({global:!0,enumerable:!0,sham:!ve,forced:le},{structuredClone:function(e){var t,r=x(arguments.length,1)>1&&!d(arguments[1])?y(arguments[1]):void 0,n=r?r.transfer:void 0;return void 0!==n&&function(e,t){if(!p(e))throw N("Transfer option cannot be converted to a sequence");var r=[];v(e,(function(e){Q(r,y(e))}));var n,a,i,s,c,u,l=0,d=S(r);if(ve)for(s=ue(r,{transfer:r});l{var n=r(18),a=r(11),i=r(25),o=r(83),s=r(28),c=r(55),u=function(){},l=[],f=s("Reflect","construct"),h=/^\\s*(?:class|function)\\b/,d=n(h.exec),p=!h.exec(u),g=function(e){if(!i(e))return!1;try{return f(u,l,e),!0}catch(e){return!1}},v=function(e){if(!i(e))return!1;switch(o(e)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return p||!!d(h,c(e))}catch(e){return!0}};v.sham=!0,e.exports=!f||a((function(){var e;return g(g.call)||!g(Object)||!g((function(){e=!0}))||e}))?v:g},e=>{var t=TypeError;e.exports=function(e,r){if(e{var n=r(12),a=r(43),i=r(29),o=r(128),s=RegExp.prototype;e.exports=function(e){var t=e.flags;return void 0!==t||"flags"in s||a(e,"flags")||!i(s,e)?t:n(o,e)}},(e,t,r)=>{var n=r(51);e.exports=function(){var e=n(this),t="";return e.hasIndices&&(t+="d"),e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.dotAll&&(t+="s"),e.unicode&&(t+="u"),e.unicodeSets&&(t+="v"),e.sticky&&(t+="y"),t}},(e,t,r)=>{var n=r(11),a=r(15);e.exports=!n((function(){var e=Error("a");return!("stack"in e)||(Object.defineProperty(e,"stack",a(1,7)),7!==e.stack)}))},(e,t,r)=>{var n=r(131),a=r(132);e.exports=!n&&!a&&"object"==typeof window&&"object"==typeof document},e=>{e.exports="object"==typeof Deno&&Deno&&"object"==typeof Deno.version},(e,t,r)=>{var n=r(19),a=r(8);e.exports="process"==n(a.process)},(e,t,r)=>{var n=r(8);e.exports=n},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.RefSetCache=t.RefSet=t.Ref=t.Name=t.EOF=t.Dict=t.Cmd=t.CIRCULAR_REF=void 0,t.clearPrimitiveCaches=function(){b._clearCache(),y._clearCache(),x._clearCache()},t.isCmd=function(e,t){return e instanceof b&&(void 0===t||e.cmd===t)},t.isDict=function(e,t){return e instanceof k&&(void 0===t||C(e.get("Type"),t))},t.isName=C,t.isRefsEqual=function(e,t){return e.num===t.num&&e.gen===t.gen};var n=r(2);function a(e){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a(e)}function i(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,o,s=[],c=!0,u=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){u=!0,a=e}finally{try{if(!c&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(u)throw a}}return s}}(e,t)||s(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function o(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=s(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,a=function(){};return{s:a,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o=!0,c=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return o=e.done,e},e:function(e){c=!0,i=e},f:function(){try{o||null==r.return||r.return()}finally{if(c)throw i}}}}function s(e,t){if(e){if("string"==typeof e)return c(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?c(e,t):void 0}}function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=0;--a){var i=this.tryEntries[a],o=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var s=r.call(i,"catchLoc"),c=r.call(i,"finallyLoc");if(s&&c){if(this.prev=0;--n){var a=this.tryEntries[n];if(a.tryLoc<=this.prev&&r.call(a,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),C(r),d}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var a=n.arg;C(r)}return a}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:P(e),resultName:t,nextLoc:r},"next"===this.method&&(this.arg=void 0),d}},e}function l(e,t,r,n,a,i,o){try{var s=e[i](o),c=s.value}catch(e){return void r(e)}s.done?t(c):Promise.resolve(c).then(n,a)}function f(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function h(e,t){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:null;f(this,e),this._map=Object.create(null),this.xref=t,this.objId=null,this.suppressEncryption=!1,this.__nonSerializable__=w}var t,r;return d(e,[{key:"assignXref",value:function(e){this.xref=e}},{key:"size",get:function(){return Object.keys(this._map).length}},{key:"get",value:function(e,t,r){var n=this._map[e];return void 0===n&&void 0!==t&&void 0===(n=this._map[t])&&void 0!==r&&(n=this._map[r]),n instanceof x&&this.xref?this.xref.fetch(n,this.suppressEncryption):n}},{key:"getAsync",value:(t=u().mark((function e(t,r,n){var a;return u().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(void 0===(a=this._map[t])&&void 0!==r&&void 0===(a=this._map[r])&&void 0!==n&&(a=this._map[n]),!(a instanceof x&&this.xref)){e.next=4;break}return e.abrupt("return",this.xref.fetchAsync(a,this.suppressEncryption));case 4:return e.abrupt("return",a);case 5:case"end":return e.stop()}}),e,this)})),r=function(){var e=this,r=arguments;return new Promise((function(n,a){var i=t.apply(e,r);function o(e){l(i,n,a,o,s,"next",e)}function s(e){l(i,n,a,o,s,"throw",e)}o(void 0)}))},function(e,t,n){return r.apply(this,arguments)})},{key:"getArray",value:function(e,t,r){var n=this._map[e];if(void 0===n&&void 0!==t&&void 0===(n=this._map[t])&&void 0!==r&&(n=this._map[r]),n instanceof x&&this.xref&&(n=this.xref.fetch(n,this.suppressEncryption)),Array.isArray(n))for(var a=0,i=(n=n.slice()).length;a0&&(u._map[S]=A)}else u._map[S]=x[0]}}catch(e){w.e(e)}finally{w.f()}return l.clear(),u.size>0?u:e.empty}}]),e}();t.Dict=k;var S,x=(S=Object.create(null),function(){function e(t,r){f(this,e),this.num=t,this.gen=r}return d(e,[{key:"toString",value:function(){return 0===this.gen?"".concat(this.num,"R"):"".concat(this.num,"R").concat(this.gen)}}],[{key:"get",value:function(t,r){var n=0===r?"".concat(t,"R"):"".concat(t,"R").concat(r);return S[n]||(S[n]=new e(t,r))}},{key:"_clearCache",value:function(){S=Object.create(null)}}]),e}());t.Ref=x;var O=function(e){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;f(this,t),this._set=new Set(e&&e._set)}return d(t,[{key:"has",value:function(e){return this._set.has(e.toString())}},{key:"put",value:function(e){this._set.add(e.toString())}},{key:"remove",value:function(e){this._set.delete(e.toString())}},{key:Symbol.iterator,value:function(){return this._set.values()}},{key:"clear",value:function(){this._set.clear()}}]),t}();t.RefSet=O;var A=function(e){function t(){f(this,t),this._map=new Map}return d(t,[{key:"size",get:function(){return this._map.size}},{key:"get",value:function(e){return this._map.get(e.toString())}},{key:"has",value:function(e){return this._map.has(e.toString())}},{key:"put",value:function(e,t){this._map.set(e.toString(),t)}},{key:"putAlias",value:function(e,t){this._map.set(e.toString(),this.get(t))}},{key:Symbol.iterator,value:function(){return this._map.values()}},{key:"clear",value:function(){this._map.clear()}}]),t}();function C(e,t){return e instanceof y&&(void 0===t||e.name===t)}t.RefSetCache=A},(e,t,r)=>{function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.XRefParseException=t.XRefEntryException=t.ParserEOFException=t.PDF_VERSION_REGEXP=t.MissingDataException=t.DocStats=void 0,t.collectActions=function(e,t,r){var n=Object.create(null),o=S({dict:t,key:"AA",stopWhenFound:!1});if(o)for(var c=o.length-1;c>=0;c--){var u=o[c];if(u instanceof i.Dict){var l,f=s(u.getKeys());try{for(f.s();!(l=f.n()).done;){var h=l.value,d=r[h];if(d){var p=u.getRaw(h),g=new i.RefSet,v=[];O(p,e,v,g),v.length>0&&(n[d]=v)}}}catch(e){f.e(e)}finally{f.f()}}}if(t.has("A")){var y=[];O(t.get("A"),e,y,new i.RefSet),y.length>0&&(n.Action=y)}return(0,a.objectSize)(n)>0?n:null},t.encodeToXmlString=function(e){for(var t=[],r=0,n=0,a=e.length;n55295&&(i<57344||i>65533)&&n++,r=n+1}return 0===t.length?e:(r126||35===i||40===i||41===i||60===i||62===i||91===i||93===i||123===i||125===i||47===i||37===i)&&(r0?n:null},t.getRotationMatrix=function(e,t,r){switch(e){case 90:return[0,1,-1,0,t,0];case 180:return[-1,0,0,-1,t,r];case 270:return[0,-1,1,0,0,r];default:throw new Error("Invalid rotation")}},t.isAscii=function(e){return/^[\\x00-\\x7F]*$/.test(e)},t.isWhiteSpace=function(e){return 32===e||9===e||13===e||10===e},t.log2=function(e){return e<=0?0:Math.ceil(Math.log2(e))},t.numberToString=function(e){if(Number.isInteger(e))return e.toString();var t=Math.round(100*e);return t%100==0?(t/100).toString():t%10==0?e.toFixed(1):e.toFixed(2)},t.parseXFAPath=function(e){var t=/(.+)\\[(\\d+)\\]$/;return e.split(".").map((function(e){var r=e.match(t);return r?{name:r[1],pos:parseInt(r[2],10)}:{name:e,pos:0}}))},t.readInt8=function(e,t){return e[t]<<24>>24},t.readUint16=function(e,t){return e[t]<<8|e[t+1]},t.readUint32=function(e,t){return(e[t]<<24|e[t+1]<<16|e[t+2]<<8|e[t+3])>>>0},t.recoverJsURL=function(e){var t=new RegExp("^\\\\s*("+["app.launchURL","window.open","xfa.host.gotoURL"].join("|").split(".").join("\\\\.")+")\\\\((?:'|\\")([^'\\"]*)(?:'|\\")(?:,\\\\s*(\\\\w+)\\\\)|\\\\))","i").exec(e);if(t&&t[2]){var r=t[2],n=!1;return"true"===t[3]&&"app.launchURL"===t[1]&&(n=!0),{url:r,newWindow:n}}return null},t.stringToUTF16HexString=function(e){for(var t=[],r=0,n=e.length;r>8&255).toString(16).padStart(2,"0"),(255&a).toString(16).padStart(2,"0"))}return t.join("")},t.stringToUTF16String=function(e){var t=[];arguments.length>1&&void 0!==arguments[1]&&arguments[1]&&t.push("þÿ");for(var r=0,n=e.length;r>8&255),String.fromCharCode(255&a))}return t.join("")},t.toRomanNumerals=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];(0,a.assert)(Number.isInteger(e)&&e>0,"The number should be a positive integer.");for(var r,n=[];e>=1e3;)e-=1e3,n.push("M");r=e/100|0,e%=100,n.push(x[r]),r=e/10|0,e%=10,n.push(x[10+r]),n.push(x[20+e]);var i=n.join("");return t?i.toLowerCase():i},t.validateCSSFont=function(e){var t=new Set(["100","200","300","400","500","600","700","800","900","1000","normal","bold","bolder","lighter"]),r=e.fontFamily,n=e.fontWeight,i=e.italicAngle;if(/^".*"$/.test(r)){if(/[^\\\\]"/.test(r.slice(1,r.length-1)))return(0,a.warn)('XFA - FontFamily contains some unescaped ": '.concat(r,".")),!1}else if(/^'.*'$/.test(r)){if(/[^\\\\]'/.test(r.slice(1,r.length-1)))return(0,a.warn)("XFA - FontFamily contains some unescaped ': ".concat(r,".")),!1}else{var o,c=s(r.split(/[ \\t]+/));try{for(c.s();!(o=c.n()).done;){var u=o.value;if(/^(\\d|(-(\\d|-)))/.test(u)||!/^[\\w-\\\\]+$/.test(u))return(0,a.warn)("XFA - FontFamily contains some invalid : ".concat(r,".")),!1}}catch(e){c.e(e)}finally{c.f()}}var l=n?n.toString():"";e.fontWeight=t.has(l)?l:"400";var f=parseFloat(i);return e.italicAngle=isNaN(f)||f<-90||f>90?"14":i.toString(),!0};var a=r(2),i=r(134),o=r(136);function s(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=c(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,a=function(){};return{s:a,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return o=e.done,e},e:function(e){s=!0,i=e},f:function(){try{o||null==r.return||r.return()}finally{if(s)throw i}}}}function c(e,t){if(e){if("string"==typeof e)return u(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?u(e,t):void 0}}function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r{Object.defineProperty(t,"__esModule",{value:!0}),t.BaseStream=void 0;var n=r(2);function a(e){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a(e)}function i(e,t){for(var r=0;r{Object.defineProperty(t,"__esModule",{value:!0}),t.NetworkPdfManager=t.LocalPdfManager=void 0;var n=r(2),a=r(138),i=r(135),o=r(140),s=r(139);function c(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&u(e,t)}function u(e,t){return u=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},u(e,t)}function l(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,n=h(e);if(t){var a=h(this).constructor;r=Reflect.construct(n,arguments,a)}else r=n.apply(this,arguments);return function(e,t){if(t&&("object"===d(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return f(e)}(this,r)}}function f(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function h(e){return h=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},h(e)}function d(e){return d="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},d(e)}function p(){p=function(){return e};var e={},t=Object.prototype,r=t.hasOwnProperty,n=Object.defineProperty||function(e,t,r){e[t]=r.value},a="function"==typeof Symbol?Symbol:{},i=a.iterator||"@@iterator",o=a.asyncIterator||"@@asyncIterator",s=a.toStringTag||"@@toStringTag";function c(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{c({},"")}catch(e){c=function(e,t,r){return e[t]=r}}function u(e,t,r,a){var i=t&&t.prototype instanceof h?t:h,o=Object.create(i.prototype),s=new F(a||[]);return n(o,"_invoke",{value:x(e,r,s)}),o}function l(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}e.wrap=u;var f={};function h(){}function g(){}function v(){}var y={};c(y,i,(function(){return this}));var m=Object.getPrototypeOf,b=m&&m(m(P([])));b&&b!==t&&r.call(b,i)&&(y=b);var w=v.prototype=h.prototype=Object.create(y);function k(e){["next","throw","return"].forEach((function(t){c(e,t,(function(e){return this._invoke(t,e)}))}))}function S(e,t){function a(n,i,o,s){var c=l(e[n],e,i);if("throw"!==c.type){var u=c.arg,f=u.value;return f&&"object"==d(f)&&r.call(f,"__await")?t.resolve(f.__await).then((function(e){a("next",e,o,s)}),(function(e){a("throw",e,o,s)})):t.resolve(f).then((function(e){u.value=e,o(u)}),(function(e){return a("throw",e,o,s)}))}s(c.arg)}var i;n(this,"_invoke",{value:function(e,r){function n(){return new t((function(t,n){a(e,r,t,n)}))}return i=i?i.then(n,n):n()}})}function x(e,t,r){var n="suspendedStart";return function(a,i){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===a)throw i;return{value:void 0,done:!0}}for(r.method=a,r.arg=i;;){var o=r.delegate;if(o){var s=O(o,r);if(s){if(s===f)continue;return s}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var c=l(e,t,r);if("normal"===c.type){if(n=r.done?"completed":"suspendedYield",c.arg===f)continue;return{value:c.arg,done:r.done}}"throw"===c.type&&(n="completed",r.method="throw",r.arg=c.arg)}}}function O(e,t){var r=t.method,n=e.iterator[r];if(void 0===n)return t.delegate=null,"throw"===r&&e.iterator.return&&(t.method="return",t.arg=void 0,O(e,t),"throw"===t.method)||"return"!==r&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+r+"' method")),f;var a=l(n,e.iterator,t.arg);if("throw"===a.type)return t.method="throw",t.arg=a.arg,t.delegate=null,f;var i=a.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,f):i:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,f)}function A(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function C(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function F(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(A,this),this.reset(!0)}function P(e){if(e){var t=e[i];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var n=-1,a=function t(){for(;++n=0;--a){var i=this.tryEntries[a],o=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var s=r.call(i,"catchLoc"),c=r.call(i,"finallyLoc");if(s&&c){if(this.prev=0;--n){var a=this.tryEntries[n];if(a.tryLoc<=this.prev&&r.call(a,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),C(r),f}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var a=n.arg;C(r)}return a}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:P(e),resultName:t,nextLoc:r},"next"===this.method&&(this.arg=void 0),f}},e}function g(e,t,r,n,a,i,o){try{var s=e[i](o),c=s.value}catch(e){return void r(e)}s.done?t(c):Promise.resolve(c).then(n,a)}function v(e){return function(){var t=this,r=arguments;return new Promise((function(n,a){var i=e.apply(t,r);function o(e){g(i,n,a,o,s,"next",e)}function s(e){g(i,n,a,o,s,"throw",e)}o(void 0)}))}}function y(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function m(e,t){for(var r=0;r0&&void 0!==arguments[0]&&arguments[0];return this.pdfDocument.cleanup(e)}},{key:"ensure",value:(t=v(p().mark((function e(t,r,a){return p().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:(0,n.unreachable)("Abstract method \`ensure\` called");case 1:case"end":return e.stop()}}),e)}))),function(e,r,n){return t.apply(this,arguments)})},{key:"requestRange",value:function(e,t){(0,n.unreachable)("Abstract method \`requestRange\` called")}},{key:"requestLoadedStream",value:function(){(0,n.unreachable)("Abstract method \`requestLoadedStream\` called")}},{key:"sendProgressiveData",value:function(e){(0,n.unreachable)("Abstract method \`sendProgressiveData\` called")}},{key:"updatePassword",value:function(e){this._password=e}},{key:"terminate",value:function(e){(0,n.unreachable)("Abstract method \`terminate\` called")}}]),e}(),S=function(e){c(n,e);var t,r=l(n);function n(e,t,a,i,c,u,l){var h;y(this,n),(h=r.call(this))._docId=e,h._password=a,h._docBaseUrl=w(l),h.msgHandler=i,h.evaluatorOptions=c,h.enableXfa=u;var d=new s.Stream(t);return h.pdfDocument=new o.PDFDocument(f(h),d),h._loadedStreamPromise=Promise.resolve(d),h}return b(n,[{key:"ensure",value:(t=v(p().mark((function e(t,r,n){var a;return p().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if("function"!=typeof(a=t[r])){e.next=3;break}return e.abrupt("return",a.apply(t,n));case 3:return e.abrupt("return",a);case 4:case"end":return e.stop()}}),e)}))),function(e,r,n){return t.apply(this,arguments)})},{key:"requestRange",value:function(e,t){return Promise.resolve()}},{key:"requestLoadedStream",value:function(){return this._loadedStreamPromise}},{key:"terminate",value:function(e){}}]),n}(k);t.LocalPdfManager=S;var x=function(e){c(n,e);var t,r=l(n);function n(e,t,i,s,c,u){var l;return y(this,n),(l=r.call(this))._docId=e,l._password=i.password,l._docBaseUrl=w(u),l.msgHandler=i.msgHandler,l.evaluatorOptions=s,l.enableXfa=c,l.streamManager=new a.ChunkedStreamManager(t,{msgHandler:i.msgHandler,length:i.length,disableAutoFetch:i.disableAutoFetch,rangeChunkSize:i.rangeChunkSize}),l.pdfDocument=new o.PDFDocument(f(l),l.streamManager.getStream()),l}return b(n,[{key:"ensure",value:(t=v(p().mark((function e(t,r,n){var a;return p().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(e.prev=0,"function"!=typeof(a=t[r])){e.next=4;break}return e.abrupt("return",a.apply(t,n));case 4:return e.abrupt("return",a);case 7:if(e.prev=7,e.t0=e.catch(0),e.t0 instanceof i.MissingDataException){e.next=11;break}throw e.t0;case 11:return e.next=13,this.requestRange(e.t0.begin,e.t0.end);case 13:return e.abrupt("return",this.ensure(t,r,n));case 14:case"end":return e.stop()}}),e,this,[[0,7]])}))),function(e,r,n){return t.apply(this,arguments)})},{key:"requestRange",value:function(e,t){return this.streamManager.requestRange(e,t)}},{key:"requestLoadedStream",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return this.streamManager.requestAllChunks(e)}},{key:"sendProgressiveData",value:function(e){this.streamManager.onReceiveData({chunk:e})}},{key:"terminate",value:function(e){this.streamManager.abort(e)}}]),n}(k);t.NetworkPdfManager=x},(e,t,r)=>{function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.ChunkedStreamManager=t.ChunkedStream=void 0;var a=r(2),i=r(135);function o(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(e){if("string"==typeof e)return s(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?s(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,a=function(){};return{s:a,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o=!0,c=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return o=e.done,e},e:function(e){c=!0,i=e},f:function(){try{o||null==r.return||r.return()}finally{if(c)throw i}}}}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=this.end?this.numChunks:Math.floor(t/this.chunkSize),a=r;athis.numChunks)&&t!==this.lastSuccessfulEnsureByteChunk){if(!this._loadedChunks.has(t))throw new i.MissingDataException(e,e+1);this.lastSuccessfulEnsureByteChunk=t}}}},{key:"ensureRange",value:function(e,t){if(!(e>=t||t<=this.progressiveDataLength)){var r=Math.floor(e/this.chunkSize);if(!(r>this.numChunks))for(var n=Math.min(Math.floor((t-1)/this.chunkSize)+1,this.numChunks),a=r;a=this.end?-1:(e>=this.progressiveDataLength&&this.ensureByte(e),this.bytes[this.pos++])}},{key:"getBytes",value:function(e){var t=this.bytes,r=this.pos,n=this.end;if(!e)return n>this.progressiveDataLength&&this.ensureRange(r,n),t.subarray(r,n);var a=r+e;return a>n&&(a=n),a>this.progressiveDataLength&&this.ensureRange(r,a),this.pos=a,t.subarray(r,a)}},{key:"getByteRange",value:function(e,t){return e<0&&(e=0),t>this.end&&(t=this.end),t>this.progressiveDataLength&&this.ensureRange(e,t),this.bytes.subarray(e,t)}},{key:"makeSubStream",value:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;function n(){}t?e+t>this.progressiveDataLength&&this.ensureRange(e,e+t):e>=this.progressiveDataLength&&this.ensureByte(e),n.prototype=Object.create(this),n.prototype.getMissingChunks=function(){for(var e=this.chunkSize,t=Math.floor(this.start/e),r=Math.floor((this.end-1)/e)+1,n=[],a=t;a0&&void 0!==arguments[0]&&arguments[0])){var e=this.stream.getMissingChunks();this._requestChunks(e)}return this._loadedStreamCapability.promise}},{key:"_requestChunks",value:function(e){var t=this,r=this.currRequestId++,n=new Set;this._chunksNeededByRequest.set(r,n);var i,s=o(e);try{for(s.s();!(i=s.n()).done;){var c=i.value;this.stream.hasChunk(c)||n.add(c)}}catch(e){s.e(e)}finally{s.f()}if(0===n.size)return Promise.resolve();var u=(0,a.createPromiseCapability)();this._promisesByRequest.set(r,u);var l,f=[],h=o(n);try{for(h.s();!(l=h.n()).done;){var d=l.value,p=this._requestsByChunk.get(d);p||(p=[],this._requestsByChunk.set(d,p),f.push(d)),p.push(r)}}catch(e){h.e(e)}finally{h.f()}if(f.length>0){var g,v=o(this.groupChunks(f));try{for(v.s();!(g=v.n()).done;){var y=g.value,m=y.beginChunk*this.chunkSize,b=Math.min(y.endChunk*this.chunkSize,this.length);this.sendRequest(m,b).catch(u.reject)}}catch(e){v.e(e)}finally{v.f()}}return u.promise.catch((function(e){if(!t.aborted)throw e}))}},{key:"getStream",value:function(){return this.stream}},{key:"requestRange",value:function(e,t){t=Math.min(t,this.length);for(var r=this.getBeginChunk(e),n=this.getEndChunk(t),a=[],i=r;i0&&void 0!==arguments[0]?arguments[0]:[]);try{for(r.s();!(e=r.n()).done;)for(var n=e.value,a=this.getBeginChunk(n.begin),i=this.getEndChunk(n.end),s=a;s=0&&n+1!==o&&(t.push({beginChunk:r,endChunk:n+1}),r=o),a+1===e.length&&t.push({beginChunk:r,endChunk:o+1}),n=o}return t}},{key:"onProgress",value:function(e){this.msgHandler.send("DocProgress",{loaded:this.stream.numChunksLoaded*this.chunkSize+e.loaded,total:this.length})}},{key:"onReceiveData",value:function(e){var t=e.chunk,r=void 0===e.begin,n=r?this.progressiveDataLength:e.begin,a=n+t.byteLength,i=Math.floor(n/this.chunkSize),s=a0||c.push(d)}}catch(e){h.e(e)}finally{h.f()}}}if(!this.disableAutoFetch&&0===this._requestsByChunk.size){var g;if(1===this.stream.numChunksLoaded){var v=this.stream.numChunks-1;this.stream.hasChunk(v)||(g=v)}else g=this.stream.nextEmptyChunk(s);Number.isInteger(g)&&this._requestChunks([g])}for(var y=0,m=c;y{function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.StringStream=t.Stream=t.NullStream=void 0;var a=r(136),i=r(2);function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){for(var r=0;r=this.end?-1:this.bytes[this.pos++]}},{key:"getBytes",value:function(e){var t=this.bytes,r=this.pos,n=this.end;if(!e)return t.subarray(r,n);var a=r+e;return a>n&&(a=n),this.pos=a,t.subarray(r,a)}},{key:"getByteRange",value:function(e,t){return e<0&&(e=0),t>this.end&&(t=this.end),this.bytes.subarray(e,t)}},{key:"reset",value:function(){this.pos=this.start}},{key:"moveStart",value:function(){this.start=this.pos}},{key:"makeSubStream",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return new r(this.bytes.buffer,e,t,n)}}]),r}(a.BaseStream);t.Stream=d;var p=function(e){u(r,e);var t=f(r);function r(e){return o(this,r),t.call(this,(0,i.stringToBytes)(e))}return c(r)}(d);t.StringStream=p;var g=function(e){u(r,e);var t=f(r);function r(){return o(this,r),t.call(this,new Uint8Array(0))}return c(r)}(d);t.NullStream=g},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Page=t.PDFDocument=void 0;var n=r(141),a=r(2),i=r(135),o=r(134),s=r(180),c=r(136),u=r(196),l=r(198),f=r(200),h=r(229),d=r(146),p=r(139),g=r(204),v=r(191),y=r(144),m=r(148),b=r(203),w=r(194),k=r(205),S=r(230);function x(e){return x="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},x(e)}function O(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,o,s=[],c=!0,u=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){u=!0,a=e}finally{try{if(!c&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(u)throw a}}return s}}(e,t)||P(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function A(){A=function(){return e};var e={},t=Object.prototype,r=t.hasOwnProperty,n=Object.defineProperty||function(e,t,r){e[t]=r.value},a="function"==typeof Symbol?Symbol:{},i=a.iterator||"@@iterator",o=a.asyncIterator||"@@asyncIterator",s=a.toStringTag||"@@toStringTag";function c(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{c({},"")}catch(e){c=function(e,t,r){return e[t]=r}}function u(e,t,r,a){var i=t&&t.prototype instanceof h?t:h,o=Object.create(i.prototype),s=new F(a||[]);return n(o,"_invoke",{value:k(e,r,s)}),o}function l(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}e.wrap=u;var f={};function h(){}function d(){}function p(){}var g={};c(g,i,(function(){return this}));var v=Object.getPrototypeOf,y=v&&v(v(P([])));y&&y!==t&&r.call(y,i)&&(g=y);var m=p.prototype=h.prototype=Object.create(g);function b(e){["next","throw","return"].forEach((function(t){c(e,t,(function(e){return this._invoke(t,e)}))}))}function w(e,t){function a(n,i,o,s){var c=l(e[n],e,i);if("throw"!==c.type){var u=c.arg,f=u.value;return f&&"object"==x(f)&&r.call(f,"__await")?t.resolve(f.__await).then((function(e){a("next",e,o,s)}),(function(e){a("throw",e,o,s)})):t.resolve(f).then((function(e){u.value=e,o(u)}),(function(e){return a("throw",e,o,s)}))}s(c.arg)}var i;n(this,"_invoke",{value:function(e,r){function n(){return new t((function(t,n){a(e,r,t,n)}))}return i=i?i.then(n,n):n()}})}function k(e,t,r){var n="suspendedStart";return function(a,i){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===a)throw i;return{value:void 0,done:!0}}for(r.method=a,r.arg=i;;){var o=r.delegate;if(o){var s=S(o,r);if(s){if(s===f)continue;return s}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var c=l(e,t,r);if("normal"===c.type){if(n=r.done?"completed":"suspendedYield",c.arg===f)continue;return{value:c.arg,done:r.done}}"throw"===c.type&&(n="completed",r.method="throw",r.arg=c.arg)}}}function S(e,t){var r=t.method,n=e.iterator[r];if(void 0===n)return t.delegate=null,"throw"===r&&e.iterator.return&&(t.method="return",t.arg=void 0,S(e,t),"throw"===t.method)||"return"!==r&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+r+"' method")),f;var a=l(n,e.iterator,t.arg);if("throw"===a.type)return t.method="throw",t.arg=a.arg,t.delegate=null,f;var i=a.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,f):i:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,f)}function O(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function C(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function F(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(O,this),this.reset(!0)}function P(e){if(e){var t=e[i];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var n=-1,a=function t(){for(;++n=0;--a){var i=this.tryEntries[a],o=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var s=r.call(i,"catchLoc"),c=r.call(i,"finallyLoc");if(s&&c){if(this.prev=0;--n){var a=this.tryEntries[n];if(a.tryLoc<=this.prev&&r.call(a,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),C(r),f}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var a=n.arg;C(r)}return a}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:P(e),resultName:t,nextLoc:r},"next"===this.method&&(this.arg=void 0),f}},e}function C(e){return function(e){if(Array.isArray(e))return T(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||P(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function F(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=P(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,a=function(){};return{s:a,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return o=e.done,e},e:function(e){s=!0,i=e},f:function(){try{o||null==r.return||r.return()}finally{if(s)throw i}}}}function P(e,t){if(e){if("string"==typeof e)return T(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?T(e,t):void 0}}function T(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r1&&void 0!==arguments[1]&&arguments[1],r=(0,i.getInheritableProperty)({dict:this.pageDict,key:e,getArray:t,stopWhenFound:!1});return Array.isArray(r)?1!==r.length&&r[0]instanceof o.Dict?o.Dict.merge({xref:this.xref,dictArray:r}):r[0]:r}},{key:"content",get:function(){return this.pageDict.getArray("Contents")}},{key:"resources",get:function(){var e=this._getInheritableProperty("Resources");return(0,a.shadow)(this,"resources",e instanceof o.Dict?e:o.Dict.empty)}},{key:"_getBoundingBox",value:function(e){if(this.xfaData)return this.xfaData.bbox;var t=this._getInheritableProperty(e,!0);if(Array.isArray(t)&&4===t.length){if((t=a.Util.normalizeRect(t))[2]-t[0]>0&&t[3]-t[1]>0)return t;(0,a.warn)("Empty, or invalid, /".concat(e," entry."))}return null}},{key:"mediaBox",get:function(){return(0,a.shadow)(this,"mediaBox",this._getBoundingBox("MediaBox")||N)}},{key:"cropBox",get:function(){return(0,a.shadow)(this,"cropBox",this._getBoundingBox("CropBox")||this.mediaBox)}},{key:"userUnit",get:function(){var e=this.pageDict.get("UserUnit");return("number"!=typeof e||e<=0)&&(e=1),(0,a.shadow)(this,"userUnit",e)}},{key:"view",get:function(){var e=this.cropBox,t=this.mediaBox;if(e!==t&&!(0,a.isArrayEqual)(e,t)){var r=a.Util.intersect(e,t);if(r&&r[2]-r[0]>0&&r[3]-r[1]>0)return(0,a.shadow)(this,"view",r);(0,a.warn)("Empty /CropBox and /MediaBox intersection.")}return(0,a.shadow)(this,"view",t)}},{key:"rotate",get:function(){var e=this._getInheritableProperty("Rotate")||0;return e%90!=0?e=0:e>=360?e%=360:e<0&&(e=(e%360+360)%360),(0,a.shadow)(this,"rotate",e)}},{key:"_onSubStreamError",value:function(e,t,r){if(this.evaluatorOptions.ignoreErrors)return e.send("UnsupportedFeature",{featureId:a.UNSUPPORTED_FEATURES.errorContentSubStream}),void(0,a.warn)("getContentStream - ignoring sub-stream (".concat(r,'): "').concat(t,'".'));throw t}},{key:"getContentStream",value:function(e){var t=this;return this.pdfManager.ensure(this,"content").then((function(r){return r instanceof c.BaseStream?r:Array.isArray(r)?new m.StreamsSequenceStream(r,t._onSubStreamError.bind(t,e)):new p.NullStream}))}},{key:"xfaData",get:function(){return(0,a.shadow)(this,"xfaData",this.xfaFactory?{bbox:this.xfaFactory.getBoundingBox(this.pageIndex)}:null)}},{key:"saveNewAnnotations",value:(s=E(A().mark((function e(t,r,a){var i,o,s,c,u,l,f,h,d,p,g;return A().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this.xfaFactory){e.next=2;break}throw new Error("XFA: Cannot save new annotations.");case 2:return i=new y.PartialEvaluator({xref:this.xref,handler:t,pageIndex:this.pageIndex,idFactory:this._localIdFactory,fontCache:this.fontCache,builtInCMapCache:this.builtInCMapCache,standardFontDataCache:this.standardFontDataCache,globalImageCache:this.globalImageCache,options:this.evaluatorOptions}),o=this.pageDict,s=this.annotations.slice(),e.next=7,n.AnnotationFactory.saveNewAnnotations(i,r,a);case 7:c=e.sent,u=F(c.annotations);try{for(u.s();!(l=u.n()).done;)f=l.value.ref,s.push(f)}catch(e){u.e(e)}finally{u.f()}return h=o.get("Annots"),o.set("Annots",s),d=[],p=null,this.xref.encrypt&&(p=this.xref.encrypt.createCipherTransform(this.ref.num,this.ref.gen)),(0,w.writeObject)(this.ref,o,d,p),h&&o.set("Annots",h),(g=c.dependencies).push.apply(g,[{ref:this.ref,data:d.join("")}].concat(C(c.annotations))),e.abrupt("return",g);case 20:case"end":return e.stop()}}),e,this)}))),function(e,t,r){return s.apply(this,arguments)})},{key:"save",value:function(e,t,r){var n=new y.PartialEvaluator({xref:this.xref,handler:e,pageIndex:this.pageIndex,idFactory:this._localIdFactory,fontCache:this.fontCache,builtInCMapCache:this.builtInCMapCache,standardFontDataCache:this.standardFontDataCache,globalImageCache:this.globalImageCache,options:this.evaluatorOptions});return this._parsedAnnotations.then((function(e){var i,o=[],s=F(e);try{for(s.s();!(i=s.n()).done;){var c=i.value;c.mustBePrinted(r)&&o.push(c.save(n,t,r).catch((function(e){return(0,a.warn)("save - ignoring annotation data during "+'"'.concat(t.name,'" task: "').concat(e,'".')),null})))}}catch(e){s.e(e)}finally{s.f()}return Promise.all(o).then((function(e){return e.filter((function(e){return!!e}))}))}))}},{key:"loadResources",value:function(e){var t=this;return this.resourcesPromise||(this.resourcesPromise=this.pdfManager.ensure(this,"resources")),this.resourcesPromise.then((function(){return new g.ObjectLoader(t.resources,e,t.xref).load()}))}},{key:"getOperatorList",value:function(e){var t=this,r=e.handler,o=e.sink,s=e.task,c=e.intent,u=e.cacheKey,l=e.annotationStorage,f=void 0===l?null:l,h=this.getContentStream(r),d=this.loadResources(["ColorSpace","ExtGState","Font","Pattern","Properties","Shading","XObject"]),p=new y.PartialEvaluator({xref:this.xref,handler:r,pageIndex:this.pageIndex,idFactory:this._localIdFactory,fontCache:this.fontCache,builtInCMapCache:this.builtInCMapCache,standardFontDataCache:this.standardFontDataCache,globalImageCache:this.globalImageCache,options:this.evaluatorOptions}),g=this.xfaFactory?null:(0,i.getNewAnnotationsMap)(f),m=Promise.resolve(null);if(g){var b=g.get(this.pageIndex);b&&(m=n.AnnotationFactory.printNewAnnotations(p,s,b))}var w=Promise.all([h,d]).then((function(e){var n=O(e,1)[0],a=new v.OperatorList(c,o);return r.send("StartRenderPage",{transparency:p.hasBlendModes(t.resources,t.nonBlendModesSet),pageIndex:t.pageIndex,cacheKey:u}),p.getOperatorList({stream:n,task:s,resources:t.resources,operatorList:a}).then((function(){return a}))}));return Promise.all([w,this._parsedAnnotations,m]).then((function(e){var t=O(e,3),r=t[0],n=t[1],i=t[2];if(i&&(n=n.concat(i)),0===n.length||c&a.RenderingIntentFlag.ANNOTATIONS_DISABLE)return r.flush(!0),{length:r.totalLength};var o,u=!!(c&a.RenderingIntentFlag.ANNOTATIONS_FORMS),l=!!(c&a.RenderingIntentFlag.ANY),h=!!(c&a.RenderingIntentFlag.DISPLAY),d=!!(c&a.RenderingIntentFlag.PRINT),g=[],v=F(n);try{for(v.s();!(o=v.n()).done;){var y=o.value;(l||h&&y.mustBeViewed(f)||d&&y.mustBePrinted(f))&&g.push(y.getOperatorList(p,s,c,u,f).catch((function(e){return(0,a.warn)("getOperatorList - ignoring annotation data during "+'"'.concat(s.name,'" task: "').concat(e,'".')),{opList:null,separateForm:!1,separateCanvas:!1}})))}}catch(e){v.e(e)}finally{v.f()}return Promise.all(g).then((function(e){var t,n=!1,a=!1,i=F(e);try{for(i.s();!(t=i.n()).done;){var o=t.value,s=o.opList,c=o.separateForm,u=o.separateCanvas;r.addOpList(s),c&&(n=c),u&&(a=u)}}catch(e){i.e(e)}finally{i.f()}return r.flush(!0,{form:n,canvas:a}),{length:r.totalLength}}))}))}},{key:"extractTextContent",value:function(e){var t=this,r=e.handler,n=e.task,a=e.includeMarkedContent,i=e.sink,o=e.combineTextItems,s=this.getContentStream(r),c=this.loadResources(["ExtGState","Font","Properties","XObject"]);return Promise.all([s,c]).then((function(e){var s=O(e,1)[0];return new y.PartialEvaluator({xref:t.xref,handler:r,pageIndex:t.pageIndex,idFactory:t._localIdFactory,fontCache:t.fontCache,builtInCMapCache:t.builtInCMapCache,standardFontDataCache:t.standardFontDataCache,globalImageCache:t.globalImageCache,options:t.evaluatorOptions}).getTextContent({stream:s,task:n,resources:t.resources,includeMarkedContent:a,combineTextItems:o,sink:i,viewBox:t.view})}))}},{key:"getStructTree",value:(r=E(A().mark((function e(){var t,r;return A().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.pdfManager.ensureCatalog("structTreeRoot");case 2:if(t=e.sent){e.next=5;break}return e.abrupt("return",null);case 5:return e.next=7,this.pdfManager.ensure(this,"_parseStructTree",[t]);case 7:return r=e.sent,e.abrupt("return",r.serializable);case 9:case"end":return e.stop()}}),e,this)}))),function(){return r.apply(this,arguments)})},{key:"_parseStructTree",value:function(e){var t=new b.StructTreePage(e,this.pageDict);return t.parse(),t}},{key:"getAnnotationsData",value:(t=E(A().mark((function e(t,r,n){var i,o,s,c,u,l,f,h,d,p,g;return A().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._parsedAnnotations;case 2:if(0!==(i=e.sent).length){e.next=5;break}return e.abrupt("return",[]);case 5:o=[],s=[],u=!!(n&a.RenderingIntentFlag.ANY),l=!!(n&a.RenderingIntentFlag.DISPLAY),f=!!(n&a.RenderingIntentFlag.PRINT),h=F(i);try{for(h.s();!(d=h.n()).done;)p=d.value,((g=u||l&&p.viewable)||f&&p.printable)&&s.push(p.data),p.hasTextContent&&g&&(c||(c=new y.PartialEvaluator({xref:this.xref,handler:t,pageIndex:this.pageIndex,idFactory:this._localIdFactory,fontCache:this.fontCache,builtInCMapCache:this.builtInCMapCache,standardFontDataCache:this.standardFontDataCache,globalImageCache:this.globalImageCache,options:this.evaluatorOptions})),o.push(p.extractTextContent(c,r,this.view).catch((function(e){(0,a.warn)('getAnnotationsData - ignoring textContent during "'.concat(r.name,'" task: "').concat(e,'".'))}))))}catch(e){h.e(e)}finally{h.f()}return e.next=12,Promise.all(o);case 12:return e.abrupt("return",s);case 13:case"end":return e.stop()}}),e,this)}))),function(e,r,n){return t.apply(this,arguments)})},{key:"annotations",get:function(){var e=this._getInheritableProperty("Annots");return(0,a.shadow)(this,"annotations",Array.isArray(e)?e:[])}},{key:"_parsedAnnotations",get:function(){var e=this,t=this.pdfManager.ensure(this,"annotations").then((function(){var t,r=[],i=F(e.annotations);try{for(i.s();!(t=i.n()).done;){var o=t.value;r.push(n.AnnotationFactory.create(e.xref,o,e.pdfManager,e._localIdFactory,!1).catch((function(e){return(0,a.warn)('_parsedAnnotations: "'.concat(e,'".')),null})))}}catch(e){i.e(e)}finally{i.f()}return Promise.all(r).then((function(e){if(0===e.length)return e;var t,r,a=[],i=F(e);try{for(i.s();!(r=i.n()).done;){var o=r.value;o&&(o instanceof n.PopupAnnotation?(t||(t=[]),t.push(o)):a.push(o))}}catch(e){i.e(e)}finally{i.f()}return t&&a.push.apply(a,C(t)),a}))}));return(0,a.shadow)(this,"_parsedAnnotations",t)}},{key:"jsActions",get:function(){var e=(0,i.collectActions)(this.xref,this.pageDict,a.PageActionEventType);return(0,a.shadow)(this,"jsActions",e)}}]),e}();t.Page=D;var B=new Uint8Array([37,80,68,70,45]),U=new Uint8Array([115,116,97,114,116,120,114,101,102]),$=new Uint8Array([101,110,100,111,98,106]);function X(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1024,n=arguments.length>3&&void 0!==arguments[3]&&arguments[3],a=t.length,i=e.peekBytes(r),o=i.length-a;if(o<=0)return!1;if(n)for(var s=a-1,c=i.length-1;c>=s;){for(var u=0;u=a)return e.pos+=c-s,!0;c--}else for(var l=0;l<=o;){for(var f=0;f=a)return e.pos+=l,!0;l++}return!1}var H=function(){function e(t,r){if(_(this,e),r.length<=0)throw new a.InvalidPDFException("The PDF file is empty, i.e. its size is zero bytes.");this.pdfManager=t,this.stream=r,this.xref=new S.XRef(r,t),this._pagePromises=new Map,this._version=null;var n={font:0};this._globalIdFactory=function(){function e(){_(this,e)}return R(e,null,[{key:"getDocId",value:function(){return"g_".concat(t.docId)}},{key:"createFontId",value:function(){return"f".concat(++n.font)}},{key:"createObjId",value:function(){(0,a.unreachable)("Abstract method \`createObjId\` called.")}},{key:"getPageObjId",value:function(){(0,a.unreachable)("Abstract method \`getPageObjId\` called.")}}]),e}()}var t,r,p,m,b,w,C,P;return R(e,[{key:"parse",value:function(e){this.xref.parse(e),this.catalog=new l.Catalog(this.pdfManager,this.xref)}},{key:"linearization",get:function(){var e=null;try{e=d.Linearization.create(this.stream)}catch(e){if(e instanceof i.MissingDataException)throw e;(0,a.info)(e)}return(0,a.shadow)(this,"linearization",e)}},{key:"startXRef",get:function(){var e=this.stream,t=0;if(this.linearization)e.reset(),X(e,$)&&(t=e.pos+6-e.start);else{for(var r=U.length,n=!1,o=e.end;!n&&o>0;)(o-=1024-r)<0&&(o=0),e.pos=o,n=X(e,U,1024,!0);if(n){var s;e.skip(9);do{s=e.getByte()}while((0,i.isWhiteSpace)(s));for(var c="";s>=32&&s<=57;)c+=String.fromCharCode(s),s=e.getByte();t=parseInt(c,10),isNaN(t)&&(t=0)}}return(0,a.shadow)(this,"startXRef",t)}},{key:"checkHeader",value:function(){var e=this.stream;if(e.reset(),X(e,B)){e.moveStart(),e.skip(B.length);for(var t,r="";(t=e.getByte())>32&&r.length<7;)r+=String.fromCharCode(t);i.PDF_VERSION_REGEXP.test(r)?this._version=r:(0,a.warn)("Invalid PDF header version: ".concat(r))}}},{key:"parseStartXRef",value:function(){this.xref.setStartXRef(this.startXRef)}},{key:"numPages",get:function(){var e;return e=this.catalog.hasActualNumPages?this.catalog.numPages:this.xfaFactory?this.xfaFactory.getNumPages():this.linearization?this.linearization.numPages:this.catalog.numPages,(0,a.shadow)(this,"numPages",e)}},{key:"_hasOnlyDocumentSignatures",value:function(e){var t=this,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return!!Array.isArray(e)&&e.every((function(e){if(!((e=t.xref.fetchIfRef(e))instanceof o.Dict))return!1;if(e.has("Kids"))return++r>10?((0,a.warn)("_hasOnlyDocumentSignatures: maximum recursion depth reached"),!1):t._hasOnlyDocumentSignatures(e.get("Kids"),r);var n=(0,o.isName)(e.get("FT"),"Sig"),i=e.get("Rect"),s=Array.isArray(i)&&i.every((function(e){return 0===e}));return n&&s}))}},{key:"_xfaStreams",get:function(){var e=this.catalog.acroForm;if(!e)return null;var t=e.get("XFA"),r={"xdp:xdp":"",template:"",datasets:"",config:"",connectionSet:"",localeSet:"",stylesheet:"","/xdp:xdp":""};if(t instanceof c.BaseStream&&!t.isEmpty)return r["xdp:xdp"]=t,r;if(!Array.isArray(t)||0===t.length)return null;for(var n=0,a=t.length;n0;e.hasFields=n;var o=t.get("XFA");e.hasXfa=Array.isArray(o)&&o.length>0||o instanceof c.BaseStream&&!o.isEmpty;var s=!!(1&t.get("SigFlags")),u=s&&this._hasOnlyDocumentSignatures(r);e.hasAcroForm=n&&!u,e.hasSignatures=s}catch(e){if(e instanceof i.MissingDataException)throw e;(0,a.warn)('Cannot fetch form information: "'.concat(e,'".'))}return(0,a.shadow)(this,"formInfo",e)}},{key:"documentInfo",get:function(){var e,t={PDFFormatVersion:this.version,Language:this.catalog.lang,EncryptFilterName:this.xref.encrypt?this.xref.encrypt.filterName:null,IsLinearized:!!this.linearization,IsAcroFormPresent:this.formInfo.hasAcroForm,IsXFAPresent:this.formInfo.hasXfa,IsCollectionPresent:!!this.catalog.collection,IsSignaturesPresent:this.formInfo.hasSignatures};try{e=this.xref.trailer.get("Info")}catch(e){if(e instanceof i.MissingDataException)throw e;(0,a.info)("The document information dictionary is invalid.")}if(!(e instanceof o.Dict))return(0,a.shadow)(this,"documentInfo",t);var r,n=F(e.getKeys());try{for(n.s();!(r=n.n()).done;){var s=r.value,c=e.get(s);switch(s){case"Title":case"Author":case"Subject":case"Keywords":case"Creator":case"Producer":case"CreationDate":case"ModDate":if("string"==typeof c){t[s]=(0,a.stringToPDFString)(c);continue}break;case"Trapped":if(c instanceof o.Name){t[s]=c;continue}break;default:var u=void 0;switch(x(c)){case"string":u=(0,a.stringToPDFString)(c);break;case"number":case"boolean":u=c;break;default:c instanceof o.Name&&(u=c)}if(void 0===u){(0,a.warn)('Bad value, for custom key "'.concat(s,'", in Info: ').concat(c,"."));continue}t.Custom||(t.Custom=Object.create(null)),t.Custom[s]=u;continue}(0,a.warn)('Bad value, for key "'.concat(s,'", in Info: ').concat(c,"."))}}catch(e){n.e(e)}finally{n.f()}return(0,a.shadow)(this,"documentInfo",t)}},{key:"fingerprints",get:function(){function e(e){return"string"==typeof e&&e.length>0&&"\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0"!==e}function t(e){var t,r=[],n=F(e);try{for(n.s();!(t=n.n()).done;){var a=t.value.toString(16);r.push(a.padStart(2,"0"))}}catch(e){n.e(e)}finally{n.f()}return r.join("")}var r,n,i=this.xref.trailer.get("ID");return Array.isArray(i)&&e(i[0])?(r=(0,a.stringToBytes)(i[0]),i[1]!==i[0]&&e(i[1])&&(n=(0,a.stringToBytes)(i[1]))):r=(0,u.calculateMD5)(this.stream.getByteRange(0,1024),0,1024),(0,a.shadow)(this,"fingerprints",[t(r),n?t(n):null])}},{key:"_getLinearizationPage",value:(b=E(A().mark((function e(t){var r,n,i,s,c,u;return A().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=this.catalog,n=this.linearization,i=this.xref,s=o.Ref.get(n.objectNumberFirst,0),e.prev=2,e.next=5,i.fetchAsync(s);case 5:if(!((c=e.sent)instanceof o.Dict)){e.next=16;break}if(!((u=c.getRaw("Type"))instanceof o.Ref)){e.next=12;break}return e.next=11,i.fetchAsync(u);case 11:u=e.sent;case 12:if(!(0,o.isName)(u,"Page")&&(c.has("Type")||c.has("Kids"))){e.next=16;break}return r.pageKidsCountCache.has(s)||r.pageKidsCountCache.put(s,1),r.pageIndexCache.has(s)||r.pageIndexCache.put(s,0),e.abrupt("return",[c,s]);case 16:throw new a.FormatError("The Linearization dictionary doesn't point to a valid Page dictionary.");case 19:return e.prev=19,e.t0=e.catch(2),(0,a.warn)('_getLinearizationPage: "'.concat(e.t0.message,'".')),e.abrupt("return",r.getPageDict(t));case 23:case"end":return e.stop()}}),e,this,[[2,19]])}))),function(e){return b.apply(this,arguments)})},{key:"getPage",value:function(e){var t=this,r=this._pagePromises.get(e);if(r)return r;var n,a=this.catalog,i=this.linearization,s=this.xfaFactory;return n=(n=s?Promise.resolve([o.Dict.empty,null]):i&&i.pageFirst===e?this._getLinearizationPage(e):a.getPageDict(e)).then((function(r){var n=O(r,2),i=n[0],o=n[1];return new D({pdfManager:t.pdfManager,xref:t.xref,pageIndex:e,pageDict:i,ref:o,globalIdFactory:t._globalIdFactory,fontCache:a.fontCache,builtInCMapCache:a.builtInCMapCache,standardFontDataCache:a.standardFontDataCache,globalImageCache:a.globalImageCache,nonBlendModesSet:a.nonBlendModesSet,xfaFactory:s})})),this._pagePromises.set(e,n),n}},{key:"checkFirstPage",value:(m=E(A().mark((function e(){var t=arguments;return A().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!(t.length>0&&void 0!==t[0]&&t[0])){e.next=3;break}return e.abrupt("return");case 3:return e.prev=3,e.next=6,this.getPage(0);case 6:e.next=15;break;case 8:if(e.prev=8,e.t0=e.catch(3),!(e.t0 instanceof i.XRefEntryException)){e.next=15;break}return this._pagePromises.delete(0),e.next=14,this.cleanup();case 14:throw new i.XRefParseException;case 15:case"end":return e.stop()}}),e,this,[[3,8]])}))),function(){return m.apply(this,arguments)})},{key:"checkLastPage",value:(p=E(A().mark((function e(){var t,r,n,o,s,c,u,l,f,h,d,p,g,v=arguments;return A().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=v.length>0&&void 0!==v[0]&&v[0],r=this.catalog,n=this.pdfManager,r.setActualNumPages(),e.prev=3,e.next=6,Promise.all([n.ensureDoc("xfaFactory"),n.ensureDoc("linearization"),n.ensureCatalog("numPages")]);case 6:if(!this.xfaFactory){e.next=10;break}return e.abrupt("return");case 10:o=this.linearization?this.linearization.numPages:r.numPages;case 11:if(Number.isInteger(o)){e.next=15;break}throw new a.FormatError("Page count is not an integer.");case 15:if(!(o<=1)){e.next=17;break}return e.abrupt("return");case 17:return e.next=19,this.getPage(o-1);case 19:e.next=44;break;case 21:return e.prev=21,e.t0=e.catch(3),this._pagePromises.delete(o-1),e.next=26,this.cleanup();case 26:if(!(e.t0 instanceof i.XRefEntryException)||t){e.next=28;break}throw new i.XRefParseException;case 28:return(0,a.warn)("checkLastPage - invalid /Pages tree /Count: ".concat(o,".")),e.prev=29,e.next=32,r.getAllPageDicts(t);case 32:s=e.sent,e.next=41;break;case 35:if(e.prev=35,e.t1=e.catch(29),!(e.t1 instanceof i.XRefEntryException)||t){e.next=39;break}throw new i.XRefParseException;case 39:return r.setActualNumPages(1),e.abrupt("return");case 41:c=F(s);try{for(c.s();!(u=c.n()).done;)l=O(u.value,2),f=l[0],h=O(l[1],2),d=h[0],p=h[1],g=void 0,d instanceof Error?(g=Promise.reject(d)).catch((function(){})):g=Promise.resolve(new D({pdfManager:n,xref:this.xref,pageIndex:f,pageDict:d,ref:p,globalIdFactory:this._globalIdFactory,fontCache:r.fontCache,builtInCMapCache:r.builtInCMapCache,standardFontDataCache:r.standardFontDataCache,globalImageCache:r.globalImageCache,nonBlendModesSet:r.nonBlendModesSet,xfaFactory:null})),this._pagePromises.set(f,g)}catch(e){c.e(e)}finally{c.f()}r.setActualNumPages(s.size);case 44:case"end":return e.stop()}}),e,this,[[3,21],[29,35]])}))),function(){return p.apply(this,arguments)})},{key:"fontFallback",value:function(e,t){return this.catalog.fontFallback(e,t)}},{key:"cleanup",value:(r=E(A().mark((function e(){var t,r=arguments;return A().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=r.length>0&&void 0!==r[0]&&r[0],e.abrupt("return",this.catalog?this.catalog.cleanup(t):(0,f.clearGlobalCaches)());case 2:case"end":return e.stop()}}),e,this)}))),function(){return r.apply(this,arguments)})},{key:"_collectFieldObjects",value:function(e,t,r){var i=this.xref.fetchIfRef(t);if(i.has("T")){var o=(0,a.stringToPDFString)(i.get("T"));e=""===e?o:"".concat(e,".").concat(o)}if(r.has(e)||r.set(e,[]),r.get(e).push(n.AnnotationFactory.create(this.xref,t,this.pdfManager,this._localIdFactory,!0).then((function(e){return e&&e.getFieldObject()})).catch((function(e){return(0,a.warn)('_collectFieldObjects: "'.concat(e,'".')),null}))),i.has("Kids")){var s,c=F(i.get("Kids"));try{for(c.s();!(s=c.n()).done;){var u=s.value;this._collectFieldObjects(e,u,r)}}catch(e){c.e(e)}finally{c.f()}}}},{key:"fieldObjects",get:function(){if(!this.formInfo.hasFields)return(0,a.shadow)(this,"fieldObjects",Promise.resolve(null));var e,t=Object.create(null),r=new Map,n=F(this.catalog.acroForm.get("Fields"));try{for(n.s();!(e=n.n()).done;){var i=e.value;this._collectFieldObjects("",i,r)}}catch(e){n.e(e)}finally{n.f()}var o,s=[],c=F(r);try{var u=function(){var e=O(o.value,2),r=e[0],n=e[1];s.push(Promise.all(n).then((function(e){(e=e.filter((function(e){return!!e}))).length>0&&(t[r]=e)})))};for(c.s();!(o=c.n()).done;)u()}catch(e){c.e(e)}finally{c.f()}return(0,a.shadow)(this,"fieldObjects",Promise.all(s).then((function(){return t})))}},{key:"hasJSActions",get:function(){var e=this.pdfManager.ensureDoc("_parseHasJSActions");return(0,a.shadow)(this,"hasJSActions",e)}},{key:"_parseHasJSActions",value:(t=E(A().mark((function e(){var t,r,n,a;return A().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Promise.all([this.pdfManager.ensureCatalog("jsActions"),this.pdfManager.ensureDoc("fieldObjects")]);case 2:if(t=e.sent,r=O(t,2),n=r[0],a=r[1],!n){e.next=8;break}return e.abrupt("return",!0);case 8:if(!a){e.next=10;break}return e.abrupt("return",Object.values(a).some((function(e){return e.some((function(e){return null!==e.actions}))})));case 10:return e.abrupt("return",!1);case 11:case"end":return e.stop()}}),e,this)}))),function(){return t.apply(this,arguments)})},{key:"calculationOrderIds",get:function(){var e=this.catalog.acroForm;if(!e||!e.has("CO"))return(0,a.shadow)(this,"calculationOrderIds",null);var t=e.get("CO");if(!Array.isArray(t)||0===t.length)return(0,a.shadow)(this,"calculationOrderIds",null);var r,n=[],i=F(t);try{for(i.s();!(r=i.n()).done;){var s=r.value;s instanceof o.Ref&&n.push(s.toString())}}catch(e){i.e(e)}finally{i.f()}return 0===n.length?(0,a.shadow)(this,"calculationOrderIds",null):(0,a.shadow)(this,"calculationOrderIds",n)}}]),e}();t.PDFDocument=H},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.PopupAnnotation=t.MarkupAnnotation=t.AnnotationFactory=t.AnnotationBorderStyle=t.Annotation=void 0,t.getQuadPoints=D;var n=r(2),a=r(135),i=r(142),o=r(134),s=r(194),c=r(136),u=r(189),l=r(198),f=r(143),h=r(201),d=r(204),p=r(191),g=r(139),v=r(205);function y(){return y="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,t,r){var n=function(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=x(e)););return e}(e,t);if(n){var a=Object.getOwnPropertyDescriptor(n,t);return a.get?a.get.call(arguments.length<3?e:r):a.value}},y.apply(this,arguments)}function m(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&b(e,t)}function b(e,t){return b=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},b(e,t)}function w(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,n=x(e);if(t){var a=x(this).constructor;r=Reflect.construct(n,arguments,a)}else r=n.apply(this,arguments);return k(this,r)}}function k(e,t){if(t&&("object"===O(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return S(e)}function S(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function x(e){return x=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},x(e)}function O(e){return O="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},O(e)}function A(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=I(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,a=function(){};return{s:a,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return o=e.done,e},e:function(e){s=!0,i=e},f:function(){try{o||null==r.return||r.return()}finally{if(s)throw i}}}}function C(){C=function(){return e};var e={},t=Object.prototype,r=t.hasOwnProperty,n=Object.defineProperty||function(e,t,r){e[t]=r.value},a="function"==typeof Symbol?Symbol:{},i=a.iterator||"@@iterator",o=a.asyncIterator||"@@asyncIterator",s=a.toStringTag||"@@toStringTag";function c(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{c({},"")}catch(e){c=function(e,t,r){return e[t]=r}}function u(e,t,r,a){var i=t&&t.prototype instanceof h?t:h,o=Object.create(i.prototype),s=new F(a||[]);return n(o,"_invoke",{value:k(e,r,s)}),o}function l(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}e.wrap=u;var f={};function h(){}function d(){}function p(){}var g={};c(g,i,(function(){return this}));var v=Object.getPrototypeOf,y=v&&v(v(P([])));y&&y!==t&&r.call(y,i)&&(g=y);var m=p.prototype=h.prototype=Object.create(g);function b(e){["next","throw","return"].forEach((function(t){c(e,t,(function(e){return this._invoke(t,e)}))}))}function w(e,t){function a(n,i,o,s){var c=l(e[n],e,i);if("throw"!==c.type){var u=c.arg,f=u.value;return f&&"object"==O(f)&&r.call(f,"__await")?t.resolve(f.__await).then((function(e){a("next",e,o,s)}),(function(e){a("throw",e,o,s)})):t.resolve(f).then((function(e){u.value=e,o(u)}),(function(e){return a("throw",e,o,s)}))}s(c.arg)}var i;n(this,"_invoke",{value:function(e,r){function n(){return new t((function(t,n){a(e,r,t,n)}))}return i=i?i.then(n,n):n()}})}function k(e,t,r){var n="suspendedStart";return function(a,i){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===a)throw i;return{value:void 0,done:!0}}for(r.method=a,r.arg=i;;){var o=r.delegate;if(o){var s=S(o,r);if(s){if(s===f)continue;return s}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var c=l(e,t,r);if("normal"===c.type){if(n=r.done?"completed":"suspendedYield",c.arg===f)continue;return{value:c.arg,done:r.done}}"throw"===c.type&&(n="completed",r.method="throw",r.arg=c.arg)}}}function S(e,t){var r=t.method,n=e.iterator[r];if(void 0===n)return t.delegate=null,"throw"===r&&e.iterator.return&&(t.method="return",t.arg=void 0,S(e,t),"throw"===t.method)||"return"!==r&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+r+"' method")),f;var a=l(n,e.iterator,t.arg);if("throw"===a.type)return t.method="throw",t.arg=a.arg,t.delegate=null,f;var i=a.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,f):i:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,f)}function x(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function A(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function F(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(x,this),this.reset(!0)}function P(e){if(e){var t=e[i];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var n=-1,a=function t(){for(;++n=0;--a){var i=this.tryEntries[a],o=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var s=r.call(i,"catchLoc"),c=r.call(i,"finallyLoc");if(s&&c){if(this.prev=0;--n){var a=this.tryEntries[n];if(a.tryLoc<=this.prev&&r.call(a,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),A(r),f}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var a=n.arg;A(r)}return a}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:P(e),resultName:t,nextLoc:r},"next"===this.method&&(this.arg=void 0),f}},e}function F(e,t,r,n,a,i,o){try{var s=e[i](o),c=s.value}catch(e){return void r(e)}s.done?t(c):Promise.resolve(c).then(n,a)}function P(e){return function(){var t=this,r=arguments;return new Promise((function(n,a){var i=e.apply(t,r);function o(e){F(i,n,a,o,s,"next",e)}function s(e){F(i,n,a,o,s,"throw",e)}o(void 0)}))}}function T(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,o,s=[],c=!0,u=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){u=!0,a=e}finally{try{if(!c&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(u)throw a}}return s}}(e,t)||I(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function I(e,t){if(e){if("string"==typeof e)return E(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?E(e,t):void 0}}function E(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r5&&void 0!==arguments[5]?arguments[5]:null,u=arguments.length>6?arguments[6]:void 0,l=arguments.length>7?arguments[7]:void 0,f=arguments.length>8&&void 0!==arguments[8]?arguments[8]:-1,h=e.fetchIfRef(t);if(h instanceof o.Dict){var d=t instanceof o.Ref?t.toString():"annot_".concat(i.createObjId()),p=h.get("Subtype");p=p instanceof o.Name?p.name:null;var g=s instanceof o.Dict?s:o.Dict.empty,v={xref:e,ref:t,dict:h,subtype:p,id:d,pdfManager:r,acroForm:g,attachments:c,xfaDatasets:u,collectFields:l,needAppearances:!l&&!0===g.get("NeedAppearances"),pageIndex:f,isOffscreenCanvasSupported:n.FeatureTest.isOffscreenCanvasSupported&&r.evaluatorOptions.isOffscreenCanvasSupported};switch(p){case"Link":return new Y(v);case"Text":return new V(v);case"Widget":var y=(0,a.getInheritableProperty)({dict:h,key:"FT"});switch(y=y instanceof o.Name?y.name:null){case"Tx":return new q(v);case"Btn":return new G(v);case"Ch":return new z(v);case"Sig":return new W(v)}return(0,n.warn)('Unimplemented widget field type "'.concat(y,'", ')+"falling back to base field type."),new H(v);case"Popup":return new K(v);case"FreeText":return new J(v);case"Line":return new Z(v);case"Square":return new Q(v);case"Circle":return new ee(v);case"PolyLine":return new te(v);case"Polygon":return new re(v);case"Caret":return new ne(v);case"Ink":return new ae(v);case"Highlight":return new ie(v);case"Underline":return new oe(v);case"Squiggly":return new se(v);case"StrikeOut":return new ce(v);case"Stamp":return new ue(v);case"FileAttachment":return new le(v);default:return l||(p?(0,n.warn)('Unimplemented annotation type "'.concat(p,'", ')+"falling back to base annotation."):(0,n.warn)("Annotation is missing the required /Subtype.")),new U(v)}}}},{key:"_getPageIndex",value:(i=P(C().mark((function e(t,r,a){var i,s,c;return C().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,t.fetchIfRefAsync(r);case 3:if((i=e.sent)instanceof o.Dict){e.next=6;break}return e.abrupt("return",-1);case 6:if((s=i.getRaw("P"))instanceof o.Ref){e.next=9;break}return e.abrupt("return",-1);case 9:return e.next=11,a.ensureCatalog("getPageIndex",[s]);case 11:return c=e.sent,e.abrupt("return",c);case 15:return e.prev=15,e.t0=e.catch(0),(0,n.warn)('_getPageIndex: "'.concat(e.t0,'".')),e.abrupt("return",-1);case 19:case"end":return e.stop()}}),e,null,[[0,15]])}))),function(e,t,r){return i.apply(this,arguments)})},{key:"saveNewAnnotations",value:(r=P(C().mark((function e(t,r,a){var i,c,u,l,f,h,d,p,g;return C().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:i=t.xref,u=[],l=[],f=A(a),e.prev=4,f.s();case 6:if((h=f.n()).done){e.next=17;break}d=h.value,e.t0=d.annotationType,e.next=e.t0===n.AnnotationEditorType.FREETEXT?11:e.t0===n.AnnotationEditorType.INK?14:15;break;case 11:return c||((p=new o.Dict(i)).set("BaseFont",o.Name.get("Helvetica")),p.set("Type",o.Name.get("Font")),p.set("Subtype",o.Name.get("Type1")),p.set("Encoding",o.Name.get("WinAnsiEncoding")),g=[],c=i.getNewTemporaryRef(),(0,s.writeObject)(c,p,g,null),u.push({ref:c,data:g.join("")})),l.push(J.createNewAnnotation(i,d,u,{evaluator:t,task:r,baseFontRef:c})),e.abrupt("break",15);case 14:l.push(ae.createNewAnnotation(i,d,u));case 15:e.next=6;break;case 17:e.next=22;break;case 19:e.prev=19,e.t1=e.catch(4),f.e(e.t1);case 22:return e.prev=22,f.f(),e.finish(22);case 25:return e.next=27,Promise.all(l);case 27:return e.t2=e.sent,e.t3=u,e.abrupt("return",{annotations:e.t2,dependencies:e.t3});case 30:case"end":return e.stop()}}),e,null,[[4,19,22,25]])}))),function(e,t,n){return r.apply(this,arguments)})},{key:"printNewAnnotations",value:(t=P(C().mark((function e(t,r,a){var i,o,s,c,u,l;return C().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(a){e.next=2;break}return e.abrupt("return",null);case 2:i=t.xref,o=[],s=n.FeatureTest.isOffscreenCanvasSupported&&t.options.isOffscreenCanvasSupported,c=A(a),e.prev=6,c.s();case 8:if((u=c.n()).done){e.next=19;break}l=u.value,e.t0=l.annotationType,e.next=e.t0===n.AnnotationEditorType.FREETEXT?13:e.t0===n.AnnotationEditorType.INK?15:17;break;case 13:return o.push(J.createNewPrintAnnotation(i,l,{evaluator:t,task:r,isOffscreenCanvasSupported:s})),e.abrupt("break",17);case 15:return o.push(ae.createNewPrintAnnotation(i,l,{isOffscreenCanvasSupported:s})),e.abrupt("break",17);case 17:e.next=8;break;case 19:e.next=24;break;case 21:e.prev=21,e.t1=e.catch(6),c.e(e.t1);case 24:return e.prev=24,c.f(),e.finish(24);case 27:return e.abrupt("return",Promise.all(o));case 28:case"end":return e.stop()}}),e,null,[[6,21,24,27]])}))),function(e,r,n){return t.apply(this,arguments)})}]),e}();function R(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new Uint8ClampedArray(3);if(!Array.isArray(e))return t;var r=t||new Uint8ClampedArray(3);switch(e.length){case 0:return null;case 1:return f.ColorSpace.singletons.gray.getRgbItem(e,0,r,0),r;case 3:return f.ColorSpace.singletons.rgb.getRgbItem(e,0,r,0),r;case 4:return f.ColorSpace.singletons.cmyk.getRgbItem(e,0,r,0),r;default:return t}}function N(e){return Array.from(e,(function(e){return e/255}))}function D(e,t){var r=e.getArray("QuadPoints");if(!Array.isArray(r)||0===r.length||r.length%8>0)return null;for(var n=[],a=0,i=r.length/8;at[2]||ct[3]))return null;n.push([{x:o,y:u},{x:s,y:u},{x:o,y:c},{x:s,y:c}])}return n}function B(e,t,r){var a=T(n.Util.getAxialAlignedBoundingBox(t,r),4),i=a[0],o=a[1],s=a[2],c=a[3];if(i===s||o===c)return[1,0,0,1,e[0],e[1]];var u=(e[2]-e[0])/(s-i),l=(e[3]-e[1])/(c-o);return[u,0,0,l,e[0]-i*u,e[1]-o*l]}t.AnnotationFactory=L;var U=function(){function e(t){j(this,e);var r=t.dict,i=t.xref;this.setTitle(r.get("T")),this.setContents(r.get("Contents")),this.setModificationDate(r.get("M")),this.setFlags(r.get("F")),this.setRectangle(r.getArray("Rect")),this.setColor(r.getArray("C")),this.setBorderStyle(r),this.setAppearance(r),this.setOptionalContent(r);var s=r.get("MK");if(this.setBorderAndBackgroundColors(s),this.setRotation(s),this._streams=[],this.appearance&&this._streams.push(this.appearance),this.data={annotationFlags:this.flags,borderStyle:this.borderStyle,color:this.color,backgroundColor:this.backgroundColor,borderColor:this.borderColor,rotation:this.rotation,contentsObj:this._contents,hasAppearance:!!this.appearance,id:t.id,modificationDate:this.modificationDate,rect:this.rectangle,subtype:t.subtype,hasOwnCanvas:!1},t.collectFields){var c=r.get("Kids");if(Array.isArray(c)){var u,l=[],f=A(c);try{for(f.s();!(u=f.n()).done;){var h=u.value;h instanceof o.Ref&&l.push(h.toString())}}catch(e){f.e(e)}finally{f.f()}0!==l.length&&(this.data.kidIds=l)}this.data.actions=(0,a.collectActions)(i,r,n.AnnotationActionEventType),this.data.fieldName=this._constructFieldName(r),this.data.pageIndex=t.pageIndex}this._isOffscreenCanvasSupported=t.isOffscreenCanvasSupported,this._fallbackFontDict=null,this._needAppearances=!1}var t,r,s;return _(e,[{key:"_hasFlag",value:function(e,t){return!!(e&t)}},{key:"_isViewable",value:function(e){return!this._hasFlag(e,n.AnnotationFlag.INVISIBLE)&&!this._hasFlag(e,n.AnnotationFlag.NOVIEW)}},{key:"_isPrintable",value:function(e){return this._hasFlag(e,n.AnnotationFlag.PRINT)&&!this._hasFlag(e,n.AnnotationFlag.INVISIBLE)}},{key:"mustBeViewed",value:function(e){var t=e&&e.get(this.data.id);return t&&void 0!==t.hidden?!t.hidden:this.viewable&&!this._hasFlag(this.flags,n.AnnotationFlag.HIDDEN)}},{key:"mustBePrinted",value:function(e){var t=e&&e.get(this.data.id);return t&&void 0!==t.print?t.print:this.printable}},{key:"viewable",get:function(){return null!==this.data.quadPoints&&(0===this.flags||this._isViewable(this.flags))}},{key:"printable",get:function(){return null!==this.data.quadPoints&&0!==this.flags&&this._isPrintable(this.flags)}},{key:"_parseStringHelper",value:function(e){var t="string"==typeof e?(0,n.stringToPDFString)(e):"";return{str:t,dir:t&&"rtl"===(0,u.bidi)(t).dir?"rtl":"ltr"}}},{key:"setDefaultAppearance",value:function(e){var t=(0,a.getInheritableProperty)({dict:e.dict,key:"DA"})||e.acroForm.get("DA");this._defaultAppearance="string"==typeof t?t:"",this.data.defaultAppearanceData=(0,i.parseDefaultAppearance)(this._defaultAppearance)}},{key:"setTitle",value:function(e){this._title=this._parseStringHelper(e)}},{key:"setContents",value:function(e){this._contents=this._parseStringHelper(e)}},{key:"setModificationDate",value:function(e){this.modificationDate="string"==typeof e?e:null}},{key:"setFlags",value:function(e){this.flags=Number.isInteger(e)&&e>0?e:0}},{key:"hasFlag",value:function(e){return this._hasFlag(this.flags,e)}},{key:"setRectangle",value:function(e){Array.isArray(e)&&4===e.length?this.rectangle=n.Util.normalizeRect(e):this.rectangle=[0,0,0,0]}},{key:"setColor",value:function(e){this.color=R(e)}},{key:"setLineEndings",value:function(e){if(this.lineEndings=["None","None"],Array.isArray(e)&&2===e.length)for(var t=0;t<2;t++){var r=e[t];if(r instanceof o.Name)switch(r.name){case"None":continue;case"Square":case"Circle":case"Diamond":case"OpenArrow":case"ClosedArrow":case"Butt":case"ROpenArrow":case"RClosedArrow":case"Slash":this.lineEndings[t]=r.name;continue}(0,n.warn)("Ignoring invalid lineEnding: ".concat(r))}}},{key:"setRotation",value:function(e){if(this.rotation=0,e instanceof o.Dict){var t=e.get("R")||0;Number.isInteger(t)&&0!==t&&((t%=360)<0&&(t+=360),t%90==0&&(this.rotation=t))}}},{key:"setBorderAndBackgroundColors",value:function(e){e instanceof o.Dict?(this.borderColor=R(e.getArray("BC"),null),this.backgroundColor=R(e.getArray("BG"),null)):this.borderColor=this.backgroundColor=null}},{key:"setBorderStyle",value:function(e){if(this.borderStyle=new $,e instanceof o.Dict)if(e.has("BS")){var t=e.get("BS"),r=t.get("Type");r&&!(0,o.isName)(r,"Border")||(this.borderStyle.setWidth(t.get("W"),this.rectangle),this.borderStyle.setStyle(t.get("S")),this.borderStyle.setDashArray(t.getArray("D")))}else if(e.has("Border")){var n=e.getArray("Border");Array.isArray(n)&&n.length>=3&&(this.borderStyle.setHorizontalCornerRadius(n[0]),this.borderStyle.setVerticalCornerRadius(n[1]),this.borderStyle.setWidth(n[2],this.rectangle),4===n.length&&this.borderStyle.setDashArray(n[3],!0))}else this.borderStyle.setWidth(0)}},{key:"setAppearance",value:function(e){this.appearance=null;var t=e.get("AP");if(t instanceof o.Dict){var r=t.get("N");if(r instanceof c.BaseStream)this.appearance=r;else if(r instanceof o.Dict){var n=e.get("AS");n instanceof o.Name&&r.has(n.name)&&(this.appearance=r.get(n.name))}}}},{key:"setOptionalContent",value:function(e){this.oc=null;var t=e.get("OC");t instanceof o.Name?(0,n.warn)("setOptionalContent: Support for /Name-entry is not implemented."):t instanceof o.Dict&&(this.oc=t)}},{key:"loadResources",value:function(e,t){return t.dict.getAsync("Resources").then((function(t){if(t)return new d.ObjectLoader(t,e,t.xref).load().then((function(){return t}))}))}},{key:"getOperatorList",value:(s=P(C().mark((function e(t,r,a,i,s){var c,u,l,f,h,d,v,y,m,b;return C().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(c=this.data,u=this.appearance,l=!!(this.data.hasOwnCanvas&&a&n.RenderingIntentFlag.DISPLAY),u){e.next=8;break}if(l){e.next=6;break}return e.abrupt("return",{opList:new p.OperatorList,separateForm:!1,separateCanvas:!1});case 6:(u=new g.StringStream("")).dict=new o.Dict;case 8:return f=u.dict,e.next=11,this.loadResources(["ExtGState","ColorSpace","Pattern","Shading","XObject","Font"],u);case 11:if(h=e.sent,d=f.getArray("BBox")||[0,0,1,1],v=f.getArray("Matrix")||[1,0,0,1,0,0],y=B(c.rect,d,v),m=new p.OperatorList,!this.oc){e.next=20;break}return e.next=19,t.parseMarkedContentProps(this.oc,null);case 19:b=e.sent;case 20:return void 0!==b&&m.addOp(n.OPS.beginMarkedContentProps,["OC",b]),m.addOp(n.OPS.beginAnnotation,[c.id,c.rect,y,v,l]),e.next=24,t.getOperatorList({stream:u,task:r,resources:h,operatorList:m,fallbackFontDict:this._fallbackFontDict});case 24:return m.addOp(n.OPS.endAnnotation,[]),void 0!==b&&m.addOp(n.OPS.endMarkedContent,[]),this.reset(),e.abrupt("return",{opList:m,separateForm:!1,separateCanvas:l});case 28:case"end":return e.stop()}}),e,this)}))),function(e,t,r,n,a){return s.apply(this,arguments)})},{key:"save",value:(r=P(C().mark((function e(t,r,n){return C().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",null);case 1:case"end":return e.stop()}}),e)}))),function(e,t,n){return r.apply(this,arguments)})},{key:"hasTextContent",get:function(){return!1}},{key:"extractTextContent",value:(t=P(C().mark((function e(t,r,n){var a,i,o,s;return C().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.appearance){e.next=2;break}return e.abrupt("return");case 2:return e.next=4,this.loadResources(["ExtGState","Font","Properties","XObject"],this.appearance);case 4:return a=e.sent,i=[],o=[],s={desiredSize:Math.Infinity,ready:!0,enqueue:function(e,t){var r,n=A(e.items);try{for(n.s();!(r=n.n()).done;){var a=r.value;o.push(a.str),a.hasEOL&&(i.push(o.join("")),o.length=0)}}catch(e){n.e(e)}finally{n.f()}}},e.next=10,t.getTextContent({stream:this.appearance,task:r,resources:a,includeMarkedContent:!0,combineTextItems:!0,sink:s,viewBox:n});case 10:this.reset(),o.length&&i.push(o.join("")),i.length>0&&(this.data.textContent=i);case 13:case"end":return e.stop()}}),e,this)}))),function(e,r,n){return t.apply(this,arguments)})},{key:"getFieldObject",value:function(){return this.data.kidIds?{id:this.data.id,actions:this.data.actions,name:this.data.fieldName,strokeColor:this.data.borderColor,fillColor:this.data.backgroundColor,type:"",kidIds:this.data.kidIds,page:this.data.pageIndex,rotation:this.rotation}:null}},{key:"reset",value:function(){var e,t=A(this._streams);try{for(t.s();!(e=t.n()).done;)e.value.reset()}catch(e){t.e(e)}finally{t.f()}}},{key:"_constructFieldName",value:function(e){if(!e.has("T")&&!e.has("Parent"))return(0,n.warn)("Unknown field name, falling back to empty field name."),"";if(!e.has("Parent"))return(0,n.stringToPDFString)(e.get("T"));var t=[];e.has("T")&&t.unshift((0,n.stringToPDFString)(e.get("T")));var r=e,a=new o.RefSet;for(e.objId&&a.put(e.objId);r.has("Parent")&&(r=r.get("Parent"))instanceof o.Dict&&(!r.objId||!a.has(r.objId));)r.objId&&a.put(r.objId),r.has("T")&&t.unshift((0,n.stringToPDFString)(r.get("T")));return t.join(".")}}]),e}();t.Annotation=U;var $=function(){function e(){j(this,e),this.width=1,this.style=n.AnnotationBorderStyleType.SOLID,this.dashArray=[3],this.horizontalCornerRadius=0,this.verticalCornerRadius=0}return _(e,[{key:"setWidth",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[0,0,0,0];if(e instanceof o.Name)this.width=0;else if("number"==typeof e){if(e>0){var r=(t[2]-t[0])/2,a=(t[3]-t[1])/2;r>0&&a>0&&(e>r||e>a)&&((0,n.warn)("AnnotationBorderStyle.setWidth - ignoring width: ".concat(e)),e=1)}this.width=e}}},{key:"setStyle",value:function(e){if(e instanceof o.Name)switch(e.name){case"S":this.style=n.AnnotationBorderStyleType.SOLID;break;case"D":this.style=n.AnnotationBorderStyleType.DASHED;break;case"B":this.style=n.AnnotationBorderStyleType.BEVELED;break;case"I":this.style=n.AnnotationBorderStyleType.INSET;break;case"U":this.style=n.AnnotationBorderStyleType.UNDERLINE}}},{key:"setDashArray",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(Array.isArray(e)&&e.length>0){var r,n=!0,a=!0,i=A(e);try{for(i.s();!(r=i.n()).done;){var s=r.value;if(!(+s>=0)){n=!1;break}s>0&&(a=!1)}}catch(e){i.e(e)}finally{i.f()}n&&!a?(this.dashArray=e,t&&this.setStyle(o.Name.get("D"))):this.width=0}else e&&(this.width=0)}},{key:"setHorizontalCornerRadius",value:function(e){Number.isInteger(e)&&(this.horizontalCornerRadius=e)}},{key:"setVerticalCornerRadius",value:function(e){Number.isInteger(e)&&(this.verticalCornerRadius=e)}}]),e}();t.AnnotationBorderStyle=$;var X=function(e){m(i,e);var t,r,a=w(i);function i(e){var t;j(this,i),t=a.call(this,e);var r=e.dict;if(r.has("IRT")){var s=r.getRaw("IRT");t.data.inReplyTo=s instanceof o.Ref?s.toString():null;var c=r.get("RT");t.data.replyType=c instanceof o.Name?c.name:n.AnnotationReplyType.REPLY}if(t.data.replyType===n.AnnotationReplyType.GROUP){var u=r.get("IRT");t.setTitle(u.get("T")),t.data.titleObj=t._title,t.setContents(u.get("Contents")),t.data.contentsObj=t._contents,u.has("CreationDate")?(t.setCreationDate(u.get("CreationDate")),t.data.creationDate=t.creationDate):t.data.creationDate=null,u.has("M")?(t.setModificationDate(u.get("M")),t.data.modificationDate=t.modificationDate):t.data.modificationDate=null,t.data.hasPopup=u.has("Popup"),u.has("C")?(t.setColor(u.getArray("C")),t.data.color=t.color):t.data.color=null}else t.data.titleObj=t._title,t.setCreationDate(r.get("CreationDate")),t.data.creationDate=t.creationDate,t.data.hasPopup=r.has("Popup"),r.has("C")||(t.data.color=null);return r.has("RC")&&(t.data.richText=v.XFAFactory.getRichTextAsHtml(r.get("RC"))),t}return _(i,[{key:"setCreationDate",value:function(e){this.creationDate="string"==typeof e?e:null}},{key:"_setDefaultAppearance",value:function(e){var t=e.xref,r=e.extra,n=e.strokeColor,a=e.fillColor,i=e.blendMode,s=e.strokeAlpha,c=e.fillAlpha,u=e.pointsCallback,l=Number.MAX_VALUE,f=Number.MAX_VALUE,h=Number.MIN_VALUE,d=Number.MIN_VALUE,p=["q"];r&&p.push(r),n&&p.push("".concat(n[0]," ").concat(n[1]," ").concat(n[2]," RG")),a&&p.push("".concat(a[0]," ").concat(a[1]," ").concat(a[2]," rg"));var v=this.data.quadPoints;v||(v=[[{x:this.rectangle[0],y:this.rectangle[3]},{x:this.rectangle[2],y:this.rectangle[3]},{x:this.rectangle[0],y:this.rectangle[1]},{x:this.rectangle[2],y:this.rectangle[1]}]]);var y,m=A(v);try{for(m.s();!(y=m.n()).done;){var b=T(u(p,y.value),4),w=b[0],k=b[1],S=b[2],x=b[3];l=Math.min(l,w),h=Math.max(h,k),f=Math.min(f,S),d=Math.max(d,x)}}catch(e){m.e(e)}finally{m.f()}p.push("Q");var O=new o.Dict(t),C=new o.Dict(t);C.set("Subtype",o.Name.get("Form"));var F=new g.StringStream(p.join(" "));F.dict=C,O.set("Fm0",F);var P=new o.Dict(t);i&&P.set("BM",o.Name.get(i)),"number"==typeof s&&P.set("CA",s),"number"==typeof c&&P.set("ca",c);var I=new o.Dict(t);I.set("GS0",P);var E=new o.Dict(t);E.set("ExtGState",I),E.set("XObject",O);var j=new o.Dict(t);j.set("Resources",E);var M=this.data.rect=[l,f,h,d];j.set("BBox",M),this.appearance=new g.StringStream("/GS0 gs /Fm0 Do"),this.appearance.dict=j,this._streams.push(this.appearance,F)}}],[{key:"createNewAnnotation",value:(r=P(C().mark((function e(t,r,n,a){var i,o,c,u,l,f,h;return C().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=t.getNewTemporaryRef(),e.next=3,this.createNewAppearanceStream(r,t,a);case 3:return o=e.sent,c=[],o?(l=t.getNewTemporaryRef(),u=this.createNewDict(r,t,{apRef:l}),f=t.encrypt?t.encrypt.createCipherTransform(l.num,l.gen):null,(0,s.writeObject)(l,o,c,f),n.push({ref:l,data:c.join("")})):u=this.createNewDict(r,t,{}),c.length=0,h=t.encrypt?t.encrypt.createCipherTransform(i.num,i.gen):null,(0,s.writeObject)(i,u,c,h),e.abrupt("return",{ref:i,data:c.join("")});case 10:case"end":return e.stop()}}),e,this)}))),function(e,t,n,a){return r.apply(this,arguments)})},{key:"createNewPrintAnnotation",value:(t=P(C().mark((function e(t,r,n){var a,i;return C().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.createNewAppearanceStream(r,t,n);case 2:return a=e.sent,i=this.createNewDict(r,t,{ap:a}),e.abrupt("return",new this.prototype.constructor({dict:i,xref:t,isOffscreenCanvasSupported:n.isOffscreenCanvasSupported}));case 5:case"end":return e.stop()}}),e,this)}))),function(e,r,n){return t.apply(this,arguments)})}]),i}(U);t.MarkupAnnotation=X;var H=function(e){m(f,e);var t,r,c,u,l=w(f);function f(e){var t;j(this,f),t=l.call(this,e);var r=e.dict,i=e.xref,s=t.data;t.ref=e.ref,t._needAppearances=e.needAppearances,s.annotationType=n.AnnotationType.WIDGET,void 0===s.fieldName&&(s.fieldName=t._constructFieldName(r)),void 0===s.actions&&(s.actions=(0,a.collectActions)(i,r,n.AnnotationActionEventType));var c=(0,a.getInheritableProperty)({dict:r,key:"V",getArray:!0});s.fieldValue=t._decodeFormValue(c);var u=(0,a.getInheritableProperty)({dict:r,key:"DV",getArray:!0});if(s.defaultFieldValue=t._decodeFormValue(u),void 0===c&&e.xfaDatasets){var h=t._title.str;h&&(t._hasValueFromXFA=!0,s.fieldValue=c=e.xfaDatasets.getValue(h))}void 0===c&&null!==s.defaultFieldValue&&(s.fieldValue=s.defaultFieldValue),s.alternativeText=(0,n.stringToPDFString)(r.get("TU")||""),t.setDefaultAppearance(e),s.hasAppearance=t._needAppearances&&void 0!==s.fieldValue&&null!==s.fieldValue||s.hasAppearance;var d=(0,a.getInheritableProperty)({dict:r,key:"FT"});s.fieldType=d instanceof o.Name?d.name:null;var p=(0,a.getInheritableProperty)({dict:r,key:"DR"}),g=e.acroForm.get("DR"),v=t.appearance&&t.appearance.dict.get("Resources");return t._fieldResources={localResources:p,acroFormResources:g,appearanceResources:v,mergedResources:o.Dict.merge({xref:i,dictArray:[p,v,g],mergeSubDicts:!0})},s.fieldFlags=(0,a.getInheritableProperty)({dict:r,key:"Ff"}),(!Number.isInteger(s.fieldFlags)||s.fieldFlags<0)&&(s.fieldFlags=0),s.readOnly=t.hasFieldFlag(n.AnnotationFieldFlag.READONLY),s.required=t.hasFieldFlag(n.AnnotationFieldFlag.REQUIRED),s.hidden=t._hasFlag(s.annotationFlags,n.AnnotationFlag.HIDDEN),t}return _(f,[{key:"_decodeFormValue",value:function(e){return Array.isArray(e)?e.filter((function(e){return"string"==typeof e})).map((function(e){return(0,n.stringToPDFString)(e)})):e instanceof o.Name?(0,n.stringToPDFString)(e.name):"string"==typeof e?(0,n.stringToPDFString)(e):null}},{key:"hasFieldFlag",value:function(e){return!!(this.data.fieldFlags&e)}},{key:"getRotationMatrix",value:function(e){var t=e?e.get(this.data.id):void 0,r=t&&t.rotation;if(void 0===r&&(r=this.rotation),0===r)return n.IDENTITY_MATRIX;var i=this.data.rect[2]-this.data.rect[0],o=this.data.rect[3]-this.data.rect[1];return(0,a.getRotationMatrix)(r,i,o)}},{key:"getBorderAndBackgroundAppearances",value:function(e){var t=e?e.get(this.data.id):void 0,r=t&&t.rotation;if(void 0===r&&(r=this.rotation),!this.backgroundColor&&!this.borderColor)return"";var n=this.data.rect[2]-this.data.rect[0],a=this.data.rect[3]-this.data.rect[1],o=0===r||180===r?"0 0 ".concat(n," ").concat(a," re"):"0 0 ".concat(a," ").concat(n," re"),s="";if(this.backgroundColor&&(s="".concat((0,i.getPdfColor)(this.backgroundColor,!0)," ").concat(o," f ")),this.borderColor){var c=this.borderStyle.width||1;s+="".concat(c," w ").concat((0,i.getPdfColor)(this.borderColor,!1)," ").concat(o," S ")}return s}},{key:"getOperatorList",value:(u=P(C().mark((function e(t,r,a,i,o){var s,c,u,l,h,d,v;return C().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!i||this instanceof W){e.next=2;break}return e.abrupt("return",{opList:new p.OperatorList,separateForm:!0,separateCanvas:!1});case 2:if(this._hasText){e.next=4;break}return e.abrupt("return",y(x(f.prototype),"getOperatorList",this).call(this,t,r,a,i,o));case 4:return e.next=6,this._getAppearance(t,r,a,o);case 6:if(s=e.sent,!this.appearance||null!==s){e.next=9;break}return e.abrupt("return",y(x(f.prototype),"getOperatorList",this).call(this,t,r,a,i,o));case 9:if(c=new p.OperatorList,this._defaultAppearance&&null!==s){e.next=12;break}return e.abrupt("return",{opList:c,separateForm:!1,separateCanvas:!1});case 12:if(u=[1,0,0,1,0,0],l=[0,0,this.data.rect[2]-this.data.rect[0],this.data.rect[3]-this.data.rect[1]],h=B(this.data.rect,l,u),!this.oc){e.next=19;break}return e.next=18,t.parseMarkedContentProps(this.oc,null);case 18:d=e.sent;case 19:return void 0!==d&&c.addOp(n.OPS.beginMarkedContentProps,["OC",d]),c.addOp(n.OPS.beginAnnotation,[this.data.id,this.data.rect,h,this.getRotationMatrix(o),!1]),v=new g.StringStream(s),e.next=24,t.getOperatorList({stream:v,task:r,resources:this._fieldResources.mergedResources,operatorList:c});case 24:return c.addOp(n.OPS.endAnnotation,[]),void 0!==d&&c.addOp(n.OPS.endMarkedContent,[]),e.abrupt("return",{opList:c,separateForm:!1,separateCanvas:!1});case 27:case"end":return e.stop()}}),e,this)}))),function(e,t,r,n,a){return u.apply(this,arguments)})},{key:"_getMKDict",value:function(e){var t=new o.Dict(null);return e&&t.set("R",e),this.borderColor&&t.set("BC",N(this.borderColor)),this.backgroundColor&&t.set("BG",N(this.backgroundColor)),t.size>0?t:null}},{key:"save",value:(c=P(C().mark((function e(t,r,i){var c,u,l,f,h,d,p,v,y,m,b,w,k,S,x,O,F,P,T,I,E,j,M,_,L,R=this;return C().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(c=i?i.get(this.data.id):void 0,u=c&&c.value,l=c&&c.rotation,u!==this.data.fieldValue&&void 0!==u){e.next=7;break}if(this._hasValueFromXFA||void 0!==l){e.next=6;break}return e.abrupt("return",null);case 6:u=u||this.data.fieldValue;case 7:if(void 0!==l||this._hasValueFromXFA||!Array.isArray(u)||!Array.isArray(this.data.fieldValue)||u.length!==this.data.fieldValue.length||!u.every((function(e,t){return e===R.data.fieldValue[t]}))){e.next=9;break}return e.abrupt("return",null);case 9:if(void 0===l&&(l=this.rotation),f=null,this._needAppearances){e.next=19;break}return e.next=14,this._getAppearance(t,r,n.RenderingIntentFlag.SAVE,i);case 14:if(null!==(f=e.sent)){e.next=17;break}return e.abrupt("return",null);case 17:e.next=19;break;case 19:if(h=!1,f&&f.needAppearances&&(h=!0,f=null),d=t.xref,(p=d.fetchIfRef(this.ref))instanceof o.Dict){e.next=25;break}return e.abrupt("return",null);case 25:v=new o.Dict(d),y=A(p.getKeys());try{for(y.s();!(m=y.n()).done;)"AP"!==(b=m.value)&&v.set(b,p.getRaw(b))}catch(e){y.e(e)}finally{y.f()}return w={path:(0,n.stringToPDFString)(v.get("T")||""),value:u},k=function(e){return(0,a.isAscii)(e)?e:(0,a.stringToUTF16String)(e,!0)},v.set("V",Array.isArray(u)?u.map(k):k(u)),(S=this._getMKDict(l))&&v.set("MK",S),x=d.encrypt,O=x?x.createCipherTransform(this.ref.num,this.ref.gen):null,F=[],P=[{ref:this.ref,data:"",xfa:w,needAppearances:h}],null!==f&&(T=d.getNewTemporaryRef(),I=new o.Dict(d),v.set("AP",I),I.set("N",T),E=null,x&&(E=x.createCipherTransform(T.num,T.gen),f=E.encryptString(f)),j=this._getSaveFieldResources(d),M=new g.StringStream(f),(_=M.dict=new o.Dict(d)).set("Length",f.length),_.set("Subtype",o.Name.get("Form")),_.set("Resources",j),_.set("BBox",[0,0,this.data.rect[2]-this.data.rect[0],this.data.rect[3]-this.data.rect[1]]),(L=this.getRotationMatrix(i))!==n.IDENTITY_MATRIX&&_.set("Matrix",L),(0,s.writeObject)(T,M,F,E),P.push({ref:T,data:F.join(""),xfa:null,needAppearances:!1}),F.length=0),v.set("M","D:".concat((0,n.getModificationDate)())),(0,s.writeObject)(this.ref,v,F,O),P[0].data=F.join(""),e.abrupt("return",P);case 42:case"end":return e.stop()}}),e,this)}))),function(e,t,r){return c.apply(this,arguments)})},{key:"_getAppearance",value:(r=P(C().mark((function e(t,r,o,s){var c,u,l,h,d,p,g,v,y,m,b,w,k,S,x,O,F,P,I,E,j,M,_,L,R,N,D,B,U,$,X,H,q,G,z,W,V,Y,K,J,Z,Q,ee,te;return C().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this.hasFieldFlag(n.AnnotationFieldFlag.PASSWORD)){e.next=3;break}return e.abrupt("return",null);case 3:if((c=s?s.get(this.data.id):void 0)&&(u=c.formattedValue||c.value,l=c.rotation),void 0!==l||void 0!==u||this._needAppearances){e.next=8;break}if(this._hasValueFromXFA&&!this.appearance){e.next=8;break}return e.abrupt("return",null);case 8:if(h=this.getBorderAndBackgroundAppearances(s),void 0!==u){e.next=13;break}if(u=this.data.fieldValue){e.next=13;break}return e.abrupt("return","/Tx BMC q ".concat(h,"Q EMC"));case 13:if(Array.isArray(u)&&1===u.length&&(u=u[0]),(0,n.assert)("string"==typeof u,"Expected \`value\` to be a string."),this.data.combo?(d=this.data.options.find((function(e){var t=e.exportValue;return u===t}))||this.data.options[0],u=d&&d.displayValue||""):u=u.trim(),""!==u){e.next=18;break}return e.abrupt("return","/Tx BMC q ".concat(h,"Q EMC"));case 18:return void 0===l&&(l=this.rotation),p=-1,this.data.multiLine?(g=u.split(/\\r\\n?|\\n/).map((function(e){return e.normalize("NFC")})),p=g.length):g=[u.replace(/\\r\\n?|\\n/,"").normalize("NFC")],v=1,y=2,m=this.data.rect[3]-this.data.rect[1],b=this.data.rect[2]-this.data.rect[0],90!==l&&270!==l||(b=(w=[m,b])[0],m=w[1]),this._defaultAppearance||(this.data.defaultAppearanceData=(0,i.parseDefaultAppearance)(this._defaultAppearance="/Helvetica 0 Tf 0 g")),e.next=29,f._getFontData(t,r,this.data.defaultAppearanceData,this._fieldResources.mergedResources);case 29:k=e.sent,F=[],P=!1,I=A(g);try{for(I.s();!(E=I.n()).done;)j=E.value,(M=k.encodeString(j)).length>1&&(P=!0),F.push(M.join(""))}catch(e){I.e(e)}finally{I.f()}if(!(P&&o&n.RenderingIntentFlag.SAVE)){e.next=36;break}return e.abrupt("return",{needAppearances:!0});case 36:if(!P||!this._isOffscreenCanvasSupported){e.next=58;break}if(_=this.data.comb?"monospace":"sans-serif",L=new i.FakeUnicodeFont(t.xref,_),R=L.createFontResources(g.join("")),N=R.getRaw("Font"),this._fieldResources.mergedResources.has("Font")){D=this._fieldResources.mergedResources.get("Font"),B=A(N.getKeys());try{for(B.s();!(U=B.n()).done;)$=U.value,D.set($,N.getRaw($))}catch(e){B.e(e)}finally{B.f()}}else this._fieldResources.mergedResources.set("Font",N);return X=L.fontName.name,e.next=45,f._getFontData(t,r,{fontName:X,fontSize:0},R);case 45:for(k=e.sent,H=0,q=F.length;H2)){e.next=75;break}return e.abrupt("return","/Tx BMC q ".concat(h,"BT ")+S+" 1 0 0 1 ".concat((0,a.numberToString)(y)," ").concat((0,a.numberToString)(Q)," Tm (").concat((0,a.escapeString)(F[0]),") Tj")+" ET Q EMC");case 75:return ee={shift:0},te=this._renderText(F[0],k,x,b,Z,ee,y,Q),e.abrupt("return","/Tx BMC q ".concat(h,"BT ")+S+" 1 0 0 1 0 0 Tm ".concat(te)+" ET Q EMC");case 78:case"end":return e.stop()}}),e,this)}))),function(e,t,n,a){return r.apply(this,arguments)})},{key:"_getTextWidth",value:function(e,t){return t.charsToGlyphs(e).reduce((function(e,t){return e+t.width}),0)/1e3}},{key:"_computeFontSize",value:function(e,t,r,a,o){var s=this,c=this.data.defaultAppearanceData.fontSize,u=(c||12)*n.LINE_FACTOR,l=Math.round(e/u);if(!c){var f=function(e){return Math.floor(100*e)/100};if(-1===o){var h=this._getTextWidth(r,a);c=f(Math.min(e/n.LINE_FACTOR,h>t?t/h:1/0)),l=1}else{var d,p=r.split(/\\r\\n?|\\n/),g=[],v=A(p);try{for(v.s();!(d=v.n()).done;){var y=d.value,m=a.encodeString(y).join(""),b=a.charsToGlyphs(m),w=a.getCharPositions(m);g.push({line:m,glyphs:b,positions:w})}}catch(e){v.e(e)}finally{v.f()}var k=function(r){for(var n=0,i=0,o=g;ie)return!0}return!1};for(l=Math.max(l,o);k(c=f((u=e/l)/n.LINE_FACTOR));)l++}var S=this.data.defaultAppearanceData,x=S.fontName,O=S.fontColor;this._defaultAppearance=(0,i.createDefaultAppearance)({fontSize:c,fontName:x,fontColor:O})}return[this._defaultAppearance,c,e/l]}},{key:"_renderText",value:function(e,t,r,n,i,o,s,c){var u;u=1===i?(n-this._getTextWidth(e,t)*r)/2:2===i?n-this._getTextWidth(e,t)*r-s:s;var l=(0,a.numberToString)(u-o.shift);return o.shift=u,c=(0,a.numberToString)(c),"".concat(l," ").concat(c," Td (").concat((0,a.escapeString)(e),") Tj")}},{key:"_getSaveFieldResources",value:function(e){var t=this._fieldResources,r=t.localResources,n=t.appearanceResources,a=t.acroFormResources,i=this.data.defaultAppearanceData&&this.data.defaultAppearanceData.fontName;if(!i)return r||o.Dict.empty;for(var s=0,c=[r,n];s2)&&(s=null),i.data.textAlignment=s;var c=(0,a.getInheritableProperty)({dict:o,key:"MaxLen"});return(!Number.isInteger(c)||c<0)&&(c=0),i.data.maxLen=c,i.data.multiLine=i.hasFieldFlag(n.AnnotationFieldFlag.MULTILINE),i.data.comb=i.hasFieldFlag(n.AnnotationFieldFlag.COMB)&&!i.hasFieldFlag(n.AnnotationFieldFlag.MULTILINE)&&!i.hasFieldFlag(n.AnnotationFieldFlag.PASSWORD)&&!i.hasFieldFlag(n.AnnotationFieldFlag.FILESELECT)&&0!==i.data.maxLen,i.data.doNotScroll=i.hasFieldFlag(n.AnnotationFieldFlag.DONOTSCROLL),i}return _(r,[{key:"_getCombAppearance",value:function(e,t,r,n,i,o,s,c,u,l,f){var h,d=i/this.data.maxLen,p=this.getBorderAndBackgroundAppearances(f),g=[],v=A(t.getCharPositions(r));try{for(v.s();!(h=v.n()).done;){var y=T(h.value,2),m=y[0],b=y[1];g.push("(".concat((0,a.escapeString)(r.substring(m,b)),") Tj"))}}catch(e){v.e(e)}finally{v.f()}var w=g.join(" ".concat((0,a.numberToString)(d)," 0 Td "));return"/Tx BMC q ".concat(p,"BT ")+e+" 1 0 0 1 ".concat((0,a.numberToString)(s)," ").concat((0,a.numberToString)(c+u)," Tm ").concat(w)+" ET Q EMC"}},{key:"_getMultilineAppearance",value:function(e,t,r,n,i,o,s,c,u,l,f,h){for(var d=[],p=i-2*c,g={shift:0},v=0,y=t.length;v4&&void 0!==arguments[4]?arguments[4]:{};e=a.line||e;var i=a.glyphs||t.charsToGlyphs(e);if(i.length<=1)return[e];for(var o=a.positions||t.getCharPositions(e),s=r/1e3,c=[],u=-1,l=-1,f=-1,h=0,d=0,p=0,g=i.length;pn?(c.push(e.substring(h,y)),h=y,d=w,u=-1,f=-1):(d+=w,u=y,l=m,f=p):d+w>n?-1!==u?(c.push(e.substring(h,l)),h=l,p=f+1,u=-1,d=0):(c.push(e.substring(h,y)),h=y,d=w):d+=w}return h0?this.data.fieldValue[0]:null;return{id:this.data.id,value:t,defaultValue:this.data.defaultFieldValue,editable:!this.data.readOnly,name:this.data.fieldName,rect:this.data.rect,numItems:this.data.fieldValue.length,multipleSelection:this.data.multiSelect,hidden:this.data.hidden,actions:this.data.actions,items:this.data.options,page:this.data.pageIndex,strokeColor:this.data.borderColor,fillColor:this.data.backgroundColor,rotation:this.rotation,type:e}}},{key:"_getAppearance",value:(t=P(C().mark((function e(t,r,a,s){var c,u,l,f,h,d,p,g,v,m,b,w,k,S,O,F,P,I,E,j,M,_,L,R,N,D,B,U,$,X,q,G,z,W,V,Y,K;return C().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this.data.combo){e.next=2;break}return e.abrupt("return",y(x(o.prototype),"_getAppearance",this).call(this,t,r,a,s));case 2:if((l=s?s.get(this.data.id):void 0)&&(u=l.rotation,c=l.value),void 0!==u||void 0!==c||this._needAppearances){e.next=6;break}return e.abrupt("return",null);case 6:for(void 0===c?c=this.data.fieldValue:Array.isArray(c)||(c=[c]),f=1,h=2,d=this.data.rect[3]-this.data.rect[1],p=this.data.rect[2]-this.data.rect[0],90!==u&&270!==u||(p=(g=[d,p])[0],d=g[1]),v=this.data.options.length,m=[],b=0;bP&&(P=_,I=M)}catch(e){E.e(e)}finally{E.f()}L=this._computeFontSize(F,p-2*h,I,k,-1),R=T(L,2),S=R[0],O=R[1]}if(N=O*n.LINE_FACTOR,D=(N-O)/2,B=Math.floor(d/N),1===m.length?($=m[0],U=$-$%B):U=m.length?m[0]:0,X=Math.min(U+B+1,v),q=["/Tx BMC q","1 1 ".concat(p," ").concat(d," re W n")],m.length){q.push("0.600006 0.756866 0.854904 rg"),G=A(m);try{for(G.s();!(z=G.n()).done;)W=z.value,U<=W&&W1)){e.next=25;break}return e.abrupt("return",null);case 25:D=B.join(""),L.push(D),U=0,$=w.charsToGlyphs(D),X=A($);try{for(X.s();!(q=X.n()).done;)G=q.value,U+=G.width*M}catch(e){X.e(e)}finally{X.f()}_=Math.max(_,U);case 32:e.next=20;break;case 34:e.next=39;break;case 36:e.prev=36,e.t0=e.catch(18),R.e(e.t0);case 39:return e.prev=39,R.f(),e.finish(39);case 42:for(z=1,_>P&&(z=P/_),W=1,V=n.LINE_FACTOR*h,Y=n.LINE_DESCENT_FACTOR*h,(K=V*j.length)>I&&(W=I/K),J=Math.min(z,W),Z=h*J,Q=["q","0 0 ".concat((0,a.numberToString)(P)," ").concat((0,a.numberToString)(I)," re W n"),"BT","1 0 0 1 0 ".concat((0,a.numberToString)(I+Y)," Tm 0 Tc ").concat((0,i.getPdfColor)(f,!0)),"/Helv ".concat((0,a.numberToString)(Z)," Tf")],ee=(0,a.numberToString)(V),te=0,re=L;te{function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.FakeUnicodeFont=void 0,t.createDefaultAppearance=function(e){var t=e.fontSize,r=e.fontName,n=e.fontColor;return"/".concat((0,i.escapePDFName)(r)," ").concat(t," Tf ").concat(w(n,!0))},t.getPdfColor=w,t.parseDefaultAppearance=function(e){return new b(e).parse()};var a=r(134),i=r(135),o=r(2),s=r(143),c=r(144),u=r(139);function l(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=h(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,a=function(){};return{s:a,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return o=e.done,e},e:function(e){s=!0,i=e},f:function(){try{o||null==r.return||r.return()}finally{if(s)throw i}}}}function f(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,o,s=[],c=!0,u=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){u=!0,a=e}finally{try{if(!c&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(u)throw a}}return s}}(e,t)||h(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function h(e,t){if(e){if("string"==typeof e)return d(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?d(e,t):void 0}}function d(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r0&&(t.fontSize=u);break;case o.OPS.setFillRGBColor:s.ColorSpace.singletons.rgb.getRgbItem(n,0,t.fontColor,0);break;case o.OPS.setFillGray:s.ColorSpace.singletons.gray.getRgbItem(n,0,t.fontColor,0);break;case o.OPS.setFillColorSpace:s.ColorSpace.singletons.cmyk.getRgbItem(n,0,t.fontColor,0)}}}catch(e){(0,o.warn)('parseDefaultAppearance - ignoring errors: "'.concat(e,'".'))}return t}}]),c}(c.EvaluatorPreprocessor);function w(e,t){if(e[0]===e[1]&&e[1]===e[2]){var r=e[0]/255;return"".concat((0,i.numberToString)(r)," ").concat(t?"g":"G")}return Array.from(e,(function(e){return(0,i.numberToString)(e/255)})).join(" ")+" ".concat(t?"rg":"RG")}var k=function(){function e(t,r){p(this,e),this.xref=t,this.widths=null,this.firstChar=1/0,this.lastChar=-1/0,this.fontFamily=r;var n=new OffscreenCanvas(1,1);this.ctxMeasure=n.getContext("2d"),e._fontNameId||(e._fontNameId=1),this.fontName=a.Name.get("InvalidPDFjsFont_".concat(r,"_").concat(e._fontNameId++))}return v(e,[{key:"toUnicodeRef",get:function(){if(!e._toUnicodeRef){var t=e.toUnicodeStream=new u.StringStream("/CIDInit /ProcSet findresource begin\\n12 dict begin\\nbegincmap\\n/CIDSystemInfo\\n<< /Registry (Adobe)\\n/Ordering (UCS) /Supplement 0 >> def\\n/CMapName /Adobe-Identity-UCS def\\n/CMapType 2 def\\n1 begincodespacerange\\n<0000> \\nendcodespacerange\\n1 beginbfrange\\n<0000> <0000>\\nendbfrange\\nendcmap CMapName currentdict /CMap defineresource pop end end"),r=new a.Dict(this.xref);t.dict=r,r.set("Length",346),e._toUnicodeRef=this.xref.getNewPersistentRef(t)}return e._toUnicodeRef}},{key:"fontDescriptorRef",get:function(){if(!e._fontDescriptorRef){var t=new a.Dict(this.xref);t.set("Type",a.Name.get("FontDescriptor")),t.set("FontName",this.fontName),t.set("FontFamily","MyriadPro Regular"),t.set("FontBBox",[0,0,0,0]),t.set("FontStretch",a.Name.get("Normal")),t.set("FontWeight",400),t.set("ItalicAngle",0),e._fontDescriptorRef=this.xref.getNewPersistentRef(t)}return e._fontDescriptorRef}},{key:"descendantFontRef",get:function(){var e=new a.Dict(this.xref);e.set("BaseFont",this.fontName),e.set("Type",a.Name.get("Font")),e.set("Subtype",a.Name.get("CIDFontType0")),e.set("CIDToGIDMap",a.Name.get("Identity")),e.set("FirstChar",this.firstChar),e.set("LastChar",this.lastChar),e.set("FontDescriptor",this.fontDescriptorRef),e.set("DW",1e3);var t,r,n=[],i=null,o=null,s=l((r=this.widths.entries(),function(e){if(Array.isArray(e))return d(e)}(r)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(r)||h(r)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()).sort());try{for(s.s();!(t=s.n()).done;){var c=f(t.value,2),u=c[0],p=c[1];i?u===i+o.length?o.push(p):(n.push(i,o),i=u,o=[p]):(i=u,o=[p])}}catch(e){s.e(e)}finally{s.f()}i&&n.push(i,o),e.set("W",n);var g=new a.Dict(this.xref);return g.set("Ordering","Identity"),g.set("Registry","Adobe"),g.set("Supplement",0),e.set("CIDSystemInfo",g),this.xref.getNewPersistentRef(e)}},{key:"baseFontRef",get:function(){var e=new a.Dict(this.xref);return e.set("BaseFont",this.fontName),e.set("Type",a.Name.get("Font")),e.set("Subtype",a.Name.get("Type0")),e.set("Encoding",a.Name.get("Identity-H")),e.set("DescendantFonts",[this.descendantFontRef]),e.set("ToUnicode",this.toUnicodeRef),this.xref.getNewPersistentRef(e)}},{key:"resources",get:function(){var e=new a.Dict(this.xref),t=new a.Dict(this.xref);return t.set(this.fontName.name,this.baseFontRef),e.set("Font",t),e}},{key:"_createContext",value:function(){return this.widths=new Map,this.ctxMeasure.font="1000px ".concat(this.fontFamily),this.ctxMeasure}},{key:"createFontResources",value:function(e){var t,r=this._createContext(),n=l(e.split(/\\r\\n?|\\n/));try{for(n.s();!(t=n.n()).done;){var a,i=l(t.value.split(""));try{for(i.s();!(a=i.n()).done;){var o=a.value,s=o.charCodeAt(0);if(!this.widths.has(s)){var c=r.measureText(o),u=Math.ceil(c.width);this.widths.set(s,u),this.firstChar=Math.min(s,this.firstChar),this.lastChar=Math.max(s,this.lastChar)}}}catch(e){i.e(e)}finally{i.f()}}}catch(e){n.e(e)}finally{n.f()}return this.resources}},{key:"createAppearance",value:function(e,t,r,n,s){var c,h=this._createContext(),d=[],p=-1/0,g=l(e.split(/\\r\\n?|\\n/));try{for(g.s();!(c=g.n()).done;){var v=c.value;d.push(v);var y=h.measureText(v).width;p=Math.max(p,y);var m,b=l(v.split(""));try{for(b.s();!(m=b.n()).done;){var k=m.value,S=k.charCodeAt(0),x=this.widths.get(S);if(void 0===x){var O=h.measureText(k);x=Math.ceil(O.width),this.widths.set(S,x),this.firstChar=Math.min(S,this.firstChar),this.lastChar=Math.max(S,this.lastChar)}}}catch(e){b.e(e)}finally{b.f()}}}catch(e){g.e(e)}finally{g.f()}p*=n/1e3;var A=f(t,4),C=A[0],F=A[1],P=A[2]-C,T=A[3]-F;if(r%180!=0){var I=[T,P];P=I[0],T=I[1]}var E=1;p>P&&(E=P/p);var j=1,M=o.LINE_FACTOR*n,_=o.LINE_DESCENT_FACTOR*n,L=M*d.length;L>T&&(j=T/L);for(var R=n*Math.min(E,j),N=["q","0 0 ".concat((0,i.numberToString)(P)," ").concat((0,i.numberToString)(T)," re W n"),"BT","1 0 0 1 0 ".concat((0,i.numberToString)(T+_)," Tm 0 Tc ").concat(w(s,!0)),"/".concat(this.fontName.name," ").concat((0,i.numberToString)(R)," Tf")],D=(0,i.numberToString)(M),B=0,U=d;B Tj"))}N.push("ET","Q");var X=N.join("\\n"),H=new a.Dict(this.xref);if(H.set("Subtype",a.Name.get("Form")),H.set("Type",a.Name.get("XObject")),H.set("BBox",[0,0,P,T]),H.set("Length",X.length),H.set("Resources",this.resources),r){var q=(0,i.getRotationMatrix)(r,P,T);H.set("Matrix",q)}var G=new u.StringStream(X);return G.dict=H,G}}]),e}();t.FakeUnicodeFont=k},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ColorSpace=void 0;var n=r(2),a=r(134),i=r(136),o=r(135);function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&c(e,t)}function c(e,t){return c=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},c(e,t)}function u(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,n=l(e);if(t){var a=l(this).constructor;r=Reflect.construct(n,arguments,a)}else r=n.apply(this,arguments);return function(e,t){if(t&&("object"===f(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(this,r)}}function l(e){return l=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},l(e)}function f(e){return f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},f(e)}function h(){h=function(){return e};var e={},t=Object.prototype,r=t.hasOwnProperty,n=Object.defineProperty||function(e,t,r){e[t]=r.value},a="function"==typeof Symbol?Symbol:{},i=a.iterator||"@@iterator",o=a.asyncIterator||"@@asyncIterator",s=a.toStringTag||"@@toStringTag";function c(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{c({},"")}catch(e){c=function(e,t,r){return e[t]=r}}function u(e,t,r,a){var i=t&&t.prototype instanceof p?t:p,o=Object.create(i.prototype),s=new F(a||[]);return n(o,"_invoke",{value:x(e,r,s)}),o}function l(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}e.wrap=u;var d={};function p(){}function g(){}function v(){}var y={};c(y,i,(function(){return this}));var m=Object.getPrototypeOf,b=m&&m(m(P([])));b&&b!==t&&r.call(b,i)&&(y=b);var w=v.prototype=p.prototype=Object.create(y);function k(e){["next","throw","return"].forEach((function(t){c(e,t,(function(e){return this._invoke(t,e)}))}))}function S(e,t){function a(n,i,o,s){var c=l(e[n],e,i);if("throw"!==c.type){var u=c.arg,h=u.value;return h&&"object"==f(h)&&r.call(h,"__await")?t.resolve(h.__await).then((function(e){a("next",e,o,s)}),(function(e){a("throw",e,o,s)})):t.resolve(h).then((function(e){u.value=e,o(u)}),(function(e){return a("throw",e,o,s)}))}s(c.arg)}var i;n(this,"_invoke",{value:function(e,r){function n(){return new t((function(t,n){a(e,r,t,n)}))}return i=i?i.then(n,n):n()}})}function x(e,t,r){var n="suspendedStart";return function(a,i){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===a)throw i;return{value:void 0,done:!0}}for(r.method=a,r.arg=i;;){var o=r.delegate;if(o){var s=O(o,r);if(s){if(s===d)continue;return s}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var c=l(e,t,r);if("normal"===c.type){if(n=r.done?"completed":"suspendedYield",c.arg===d)continue;return{value:c.arg,done:r.done}}"throw"===c.type&&(n="completed",r.method="throw",r.arg=c.arg)}}}function O(e,t){var r=t.method,n=e.iterator[r];if(void 0===n)return t.delegate=null,"throw"===r&&e.iterator.return&&(t.method="return",t.arg=void 0,O(e,t),"throw"===t.method)||"return"!==r&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+r+"' method")),d;var a=l(n,e.iterator,t.arg);if("throw"===a.type)return t.method="throw",t.arg=a.arg,t.delegate=null,d;var i=a.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,d):i:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,d)}function A(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function C(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function F(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(A,this),this.reset(!0)}function P(e){if(e){var t=e[i];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var n=-1,a=function t(){for(;++n=0;--a){var i=this.tryEntries[a],o=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var s=r.call(i,"catchLoc"),c=r.call(i,"finallyLoc");if(s&&c){if(this.prev=0;--n){var a=this.tryEntries[n];if(a.tryLoc<=this.prev&&r.call(a,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),C(r),d}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var a=n.arg;C(r)}return a}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:P(e),resultName:t,nextLoc:r},"next"===this.method&&(this.arg=void 0),d}},e}function d(e,t,r,n,a,i,o){try{var s=e[i](o),c=s.value}catch(e){return void r(e)}s.done?t(c):Promise.resolve(c).then(n,a)}function p(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function g(e,t){for(var r=0;rf&&"DeviceGray"!==this.name&&"DeviceRGB"!==this.name){for(var d=o<=8?new Uint8Array(f):new Uint16Array(f),p=0;p2&&void 0!==arguments[2]?arguments[2]:null,i=arguments.length>3?arguments[3]:void 0;if((e=t.fetchIfRef(e))instanceof a.Name)switch(e.name){case"G":case"DeviceGray":return this.singletons.gray;case"RGB":case"DeviceRGB":return this.singletons.rgb;case"CMYK":case"DeviceCMYK":return this.singletons.cmyk;case"Pattern":return new b(null);default:if(r instanceof a.Dict){var o=r.get("ColorSpace");if(o instanceof a.Dict){var s=o.get(e.name);if(s){if(s instanceof a.Name)return this._parse(s,t,r,i);e=s;break}}}throw new n.FormatError("Unrecognized ColorSpace: ".concat(e.name))}if(Array.isArray(e)){var c,u,l,f,h,d,p=t.fetchIfRef(e[0]).name;switch(p){case"G":case"DeviceGray":return this.singletons.gray;case"RGB":case"DeviceRGB":return this.singletons.rgb;case"CMYK":case"DeviceCMYK":return this.singletons.cmyk;case"CalGray":return f=(c=t.fetchIfRef(e[1])).getArray("WhitePoint"),h=c.getArray("BlackPoint"),d=c.get("Gamma"),new O(f,h,d);case"CalRGB":f=(c=t.fetchIfRef(e[1])).getArray("WhitePoint"),h=c.getArray("BlackPoint"),d=c.getArray("Gamma");var g=c.getArray("Matrix");return new A(f,h,d,g);case"ICCBased":var v=t.fetchIfRef(e[1]).dict;u=v.get("N");var y=v.get("Alternate");if(y){var k=this._parse(y,t,r,i);if(k.numComps===u)return k;(0,n.warn)("ICCBased color space: Ignoring incorrect /Alternate entry.")}if(1===u)return this.singletons.gray;if(3===u)return this.singletons.rgb;if(4===u)return this.singletons.cmyk;break;case"Pattern":return(l=e[1]||null)&&(l=this._parse(l,t,r,i)),new b(l);case"I":case"Indexed":l=this._parse(e[1],t,r,i);var S=t.fetchIfRef(e[2])+1,x=t.fetchIfRef(e[3]);return new w(l,S,x);case"Separation":case"DeviceN":var F=t.fetchIfRef(e[1]);u=Array.isArray(F)?F.length:1,l=this._parse(e[2],t,r,i);var P=i.create(e[3]);return new m(u,l,P);case"Lab":f=(c=t.fetchIfRef(e[1])).getArray("WhitePoint"),h=c.getArray("BlackPoint");var T=c.getArray("Range");return new C(f,h,T);default:throw new n.FormatError("Unimplemented ColorSpace object: ".concat(p))}}throw new n.FormatError("Unrecognized ColorSpace object: ".concat(e))}},{key:"isDefaultDecode",value:function(e,t){if(!Array.isArray(e))return!0;if(2*t!==e.length)return(0,n.warn)("The decode map is not the correct length"),!0;for(var r=0,a=e.length;r=.99554525?1:d(0,1,1.055*Math.pow(e,1/2.4)-.055)}function d(e,t,r){return Math.max(e,Math.min(t,r))}function g(e){return e<0?-g(-e):e>8?Math.pow((e+16)/116,3):e*l}function m(n,s,u,l,p,v){var y=d(0,1,s[u]*v),m=d(0,1,s[u+1]*v),b=d(0,1,s[u+2]*v),w=1===y?1:Math.pow(y,n.GR),k=1===m?1:Math.pow(m,n.GG),S=1===b?1:Math.pow(b,n.GB),x=n.MXA*w+n.MXB*k+n.MXC*S,O=n.MYA*w+n.MYB*k+n.MYC*S,A=n.MZA*w+n.MZB*k+n.MZC*S,C=o;C[0]=x,C[1]=O,C[2]=A;var F=c;!function(r,n,a){if(1===r[0]&&1===r[2])return a[0]=n[0],a[1]=n[1],void(a[2]=n[2]);var o=a;f(e,n,o);var s=i;!function(e,t,r){r[0]=1*t[0]/e[0],r[1]=1*t[1]/e[1],r[2]=1*t[2]/e[2]}(r,o,s),f(t,s,a)}(n.whitePoint,C,F);var P=o;!function(e,t,r){if(0===e[0]&&0===e[1]&&0===e[2])return r[0]=t[0],r[1]=t[1],void(r[2]=t[2]);var n=g(0),a=(1-n)/(1-g(e[0])),i=1-a,o=(1-n)/(1-g(e[1])),s=1-o,c=(1-n)/(1-g(e[2])),u=1-c;r[0]=t[0]*a+i,r[1]=t[1]*o+s,r[2]=t[2]*c+u}(n.blackPoint,F,P);var T=c;!function(r,n,a){var o=a;f(e,n,o);var s=i;!function(e,t,r){r[0]=.95047*t[0]/e[0],r[1]=1*t[1]/e[1],r[2]=1.08883*t[2]/e[2]}(r,o,s),f(t,s,a)}(a,P,T);var I=o;f(r,T,I),l[p]=255*h(I[0]),l[p+1]=255*h(I[1]),l[p+2]=255*h(I[2])}return function(e){s(r,e);var t=u(r);function r(e,a,i,o){var s;if(p(this,r),s=t.call(this,"CalRGB",3),!e)throw new n.FormatError("WhitePoint missing - required for color space CalRGB");a=a||new Float32Array(3),i=i||new Float32Array([1,1,1]),o=o||new Float32Array([1,0,0,0,1,0,0,0,1]);var c=e[0],u=e[1],l=e[2];s.whitePoint=e;var f=a[0],h=a[1],d=a[2];if(s.blackPoint=a,s.GR=i[0],s.GG=i[1],s.GB=i[2],s.MXA=o[0],s.MYA=o[1],s.MZA=o[2],s.MXB=o[3],s.MYB=o[4],s.MZB=o[5],s.MXC=o[6],s.MYC=o[7],s.MZC=o[8],c<0||l<0||1!==u)throw new n.FormatError("Invalid WhitePoint components for ".concat(s.name)+", no fallback available");return(f<0||h<0||d<0)&&((0,n.info)("Invalid BlackPoint for ".concat(s.name," [").concat(f,", ").concat(h,", ").concat(d,"], ")+"falling back to default."),s.blackPoint=new Float32Array(3)),(s.GR<0||s.GG<0||s.GB<0)&&((0,n.info)("Invalid Gamma [".concat(s.GR,", ").concat(s.GG,", ").concat(s.GB,"] for ")+"".concat(s.name,", falling back to default.")),s.GR=s.GG=s.GB=1),s}return v(r,[{key:"getRgbItem",value:function(e,t,r,n){m(this,e,t,r,n,1)}},{key:"getRgbBuffer",value:function(e,t,r,n,a,i,o){for(var s=1/((1<=6/29?Math.pow(e,3):108/841*(e-4/29)}function t(e,t,r,n){return r+e*(n-r)/t}function r(r,n,a,i,o,s){var c=n[a],u=n[a+1],l=n[a+2];!1!==i&&(c=t(c,i,0,100),u=t(u,i,r.amin,r.amax),l=t(l,i,r.bmin,r.bmax)),u>r.amax?u=r.amax:ur.bmax?l=r.bmax:lo.amax||o.bmin>o.bmax)&&((0,n.info)("Invalid Range, falling back to defaults"),o.amin=-100,o.amax=100,o.bmin=-100,o.bmax=100),o}return v(a,[{key:"getRgbItem",value:function(e,t,n,a){r(this,e,t,!1,n,a)}},{key:"getRgbBuffer",value:function(e,t,n,a,i,o,s){for(var c=(1<{function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.PartialEvaluator=t.EvaluatorPreprocessor=void 0;var a=r(2),i=r(145),o=r(134),s=r(163),c=r(167),u=r(166),l=r(170),f=r(179),h=r(180),d=r(171),p=r(186),g=r(146),v=r(188),y=r(139),m=r(136),b=r(189),w=r(143),k=r(148),S=r(168),x=r(135),O=r(174),A=r(169),C=r(190),F=r(191),P=r(192);function T(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,o,s=[],c=!0,u=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){u=!0,a=e}finally{try{if(!c&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(u)throw a}}return s}}(e,t)||D(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function I(e){return function(e){if(Array.isArray(e))return B(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||D(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function E(){E=function(){return e};var e={},t=Object.prototype,r=t.hasOwnProperty,a=Object.defineProperty||function(e,t,r){e[t]=r.value},i="function"==typeof Symbol?Symbol:{},o=i.iterator||"@@iterator",s=i.asyncIterator||"@@asyncIterator",c=i.toStringTag||"@@toStringTag";function u(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{u({},"")}catch(e){u=function(e,t,r){return e[t]=r}}function l(e,t,r,n){var i=t&&t.prototype instanceof d?t:d,o=Object.create(i.prototype),s=new C(n||[]);return a(o,"_invoke",{value:S(e,r,s)}),o}function f(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}e.wrap=l;var h={};function d(){}function p(){}function g(){}var v={};u(v,o,(function(){return this}));var y=Object.getPrototypeOf,m=y&&y(y(F([])));m&&m!==t&&r.call(m,o)&&(v=m);var b=g.prototype=d.prototype=Object.create(v);function w(e){["next","throw","return"].forEach((function(t){u(e,t,(function(e){return this._invoke(t,e)}))}))}function k(e,t){function i(a,o,s,c){var u=f(e[a],e,o);if("throw"!==u.type){var l=u.arg,h=l.value;return h&&"object"==n(h)&&r.call(h,"__await")?t.resolve(h.__await).then((function(e){i("next",e,s,c)}),(function(e){i("throw",e,s,c)})):t.resolve(h).then((function(e){l.value=e,s(l)}),(function(e){return i("throw",e,s,c)}))}c(u.arg)}var o;a(this,"_invoke",{value:function(e,r){function n(){return new t((function(t,n){i(e,r,t,n)}))}return o=o?o.then(n,n):n()}})}function S(e,t,r){var n="suspendedStart";return function(a,i){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===a)throw i;return{value:void 0,done:!0}}for(r.method=a,r.arg=i;;){var o=r.delegate;if(o){var s=x(o,r);if(s){if(s===h)continue;return s}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var c=f(e,t,r);if("normal"===c.type){if(n=r.done?"completed":"suspendedYield",c.arg===h)continue;return{value:c.arg,done:r.done}}"throw"===c.type&&(n="completed",r.method="throw",r.arg=c.arg)}}}function x(e,t){var r=t.method,n=e.iterator[r];if(void 0===n)return t.delegate=null,"throw"===r&&e.iterator.return&&(t.method="return",t.arg=void 0,x(e,t),"throw"===t.method)||"return"!==r&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+r+"' method")),h;var a=f(n,e.iterator,t.arg);if("throw"===a.type)return t.method="throw",t.arg=a.arg,t.delegate=null,h;var i=a.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,h):i:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,h)}function O(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function A(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function C(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(O,this),this.reset(!0)}function F(e){if(e){var t=e[o];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var n=-1,a=function t(){for(;++n=0;--a){var i=this.tryEntries[a],o=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var s=r.call(i,"catchLoc"),c=r.call(i,"finallyLoc");if(s&&c){if(this.prev=0;--n){var a=this.tryEntries[n];if(a.tryLoc<=this.prev&&r.call(a,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),A(r),h}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var a=n.arg;A(r)}return a}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:F(e),resultName:t,nextLoc:r},"next"===this.method&&(this.arg=void 0),h}},e}function j(e,t,r,n,a,i,o){try{var s=e[i](o),c=s.value}catch(e){return void r(e)}s.done?t(c):Promise.resolve(c).then(n,a)}function M(e){return function(){var t=this,r=arguments;return new Promise((function(n,a){var i=e.apply(t,r);function o(e){j(i,n,a,o,s,"next",e)}function s(e){j(i,n,a,o,s,"throw",e)}o(void 0)}))}}function _(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function L(e,t){for(var r=0;r=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return o=e.done,e},e:function(e){s=!0,i=e},f:function(){try{o||null==r.return||r.return()}finally{if(s)throw i}}}}function D(e,t){if(e){if("string"==typeof e)return B(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?B(e,t):void 0}}function B(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r1&&void 0!==arguments[1]&&arguments[1];if(Array.isArray(e)){var r,n=N(e);try{for(n.s();!(r=n.n()).done;){var i=X(r.value,!0);if(i)return i}}catch(e){n.e(e)}finally{n.f()}return(0,a.warn)("Unsupported blend mode Array: ".concat(e)),"source-over"}if(!(e instanceof o.Name))return t?null:"source-over";switch(e.name){case"Normal":case"Compatible":return"source-over";case"Multiply":return"multiply";case"Screen":return"screen";case"Overlay":return"overlay";case"Darken":return"darken";case"Lighten":return"lighten";case"ColorDodge":return"color-dodge";case"ColorBurn":return"color-burn";case"HardLight":return"hard-light";case"SoftLight":return"soft-light";case"Difference":return"difference";case"Exclusion":return"exclusion";case"Hue":return"hue";case"Saturation":return"saturation";case"Color":return"color";case"Luminosity":return"luminosity"}return t?null:((0,a.warn)("Unsupported blend mode: ".concat(e.name)),"source-over")}function H(e){e.fn===a.OPS.paintImageMaskXObject&&e.args[0]&&e.args[0].count>0&&e.args[0].count++}var q=function(){function e(){_(this,e),this.reset()}return R(e,[{key:"check",value:function(){return!(++this.checked0&&void 0!==arguments[0]?arguments[0]:null,t=Object.create(this);return t.options=Object.assign(Object.create(null),this.options,e),t}},{key:"hasBlendModes",value:function(e,t){if(!(e instanceof o.Dict))return!1;if(e.objId&&t.has(e.objId))return!1;var r=new o.RefSet(t);e.objId&&r.put(e.objId);for(var n=[e],i=this.xref;n.length;){var s=n.shift(),c=s.get("ExtGState");if(c instanceof o.Dict){var u,l=N(c.getRawValues());try{for(l.s();!(u=l.n()).done;){var f=u.value;if(f instanceof o.Ref){if(r.has(f))continue;try{f=i.fetch(f)}catch(e){r.put(f),(0,a.info)('hasBlendModes - ignoring ExtGState: "'.concat(e,'".'));continue}}if(f instanceof o.Dict){f.objId&&r.put(f.objId);var h=f.get("BM");if(h instanceof o.Name){if("Normal"!==h.name)return!0}else if(void 0!==h&&Array.isArray(h)){var d,p=N(h);try{for(p.s();!(d=p.n()).done;){var g=d.value;if(g instanceof o.Name&&"Normal"!==g.name)return!0}}catch(e){p.e(e)}finally{p.f()}}}}}catch(e){l.e(e)}finally{l.f()}}var v=s.get("XObject");if(v instanceof o.Dict){var y,b=N(v.getRawValues());try{for(b.s();!(y=b.n()).done;){var w=y.value;if(w instanceof o.Ref){if(r.has(w))continue;try{w=i.fetch(w)}catch(e){r.put(w),(0,a.info)('hasBlendModes - ignoring XObject: "'.concat(e,'".'));continue}}if(w instanceof m.BaseStream){w.dict.objId&&r.put(w.dict.objId);var k=w.dict.get("Resources");k instanceof o.Dict&&(k.objId&&r.has(k.objId)||(n.push(k),k.objId&&r.put(k.objId)))}}}catch(e){b.e(e)}finally{b.f()}}}var S,x=N(r);try{for(x.s();!(S=x.n()).done;){var O=S.value;t.put(O)}}catch(e){x.e(e)}finally{x.f()}return!1}},{key:"fetchBuiltInCMap",value:(D=M(E().mark((function e(t){var r,n,i,o;return E().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!(r=this.builtInCMapCache.get(t))){e.next=3;break}return e.abrupt("return",r);case 3:if(null===this.options.cMapUrl){e.next=19;break}return i="".concat(this.options.cMapUrl).concat(t,".bcmap"),e.next=7,fetch(i);case 7:if((o=e.sent).ok){e.next=10;break}throw new Error('fetchBuiltInCMap: failed to fetch file "'.concat(i,'" with "').concat(o.statusText,'".'));case 10:return e.t0=Uint8Array,e.next=13,o.arrayBuffer();case 13:e.t1=e.sent,e.t2=new e.t0(e.t1),e.t3=a.CMapCompressionType.BINARY,n={cMapData:e.t2,compressionType:e.t3},e.next=22;break;case 19:return e.next=21,this.handler.sendWithPromise("FetchBuiltInCMap",{name:t});case 21:n=e.sent;case 22:return n.compressionType!==a.CMapCompressionType.NONE&&this.builtInCMapCache.set(t,n),e.abrupt("return",n);case 24:case"end":return e.stop()}}),e,this)}))),function(e){return D.apply(this,arguments)})},{key:"fetchStandardFontData",value:(L=M(E().mark((function e(t){var r,n,i,o,s,c;return E().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!(r=this.standardFontDataCache.get(t))){e.next=3;break}return e.abrupt("return",new y.Stream(r));case 3:if(!this.options.useSystemFonts||"Symbol"===t||"ZapfDingbats"===t){e.next=5;break}return e.abrupt("return",null);case 5:if(n=(0,l.getFontNameToFileMap)(),i=n[t],null===this.options.standardFontDataUrl){e.next=20;break}return s="".concat(this.options.standardFontDataUrl).concat(i),e.next=10,fetch(s);case 10:if((c=e.sent).ok){e.next=15;break}(0,a.warn)('fetchStandardFontData: failed to fetch file "'.concat(s,'" with "').concat(c.statusText,'".')),e.next=18;break;case 15:return e.next=17,c.arrayBuffer();case 17:o=e.sent;case 18:e.next=29;break;case 20:return e.prev=20,e.next=23,this.handler.sendWithPromise("FetchStandardFontData",{filename:i});case 23:o=e.sent,e.next=29;break;case 26:e.prev=26,e.t0=e.catch(20),(0,a.warn)('fetchStandardFontData: failed to fetch file "'.concat(i,'" with "').concat(e.t0,'".'));case 29:if(o){e.next=31;break}return e.abrupt("return",null);case 31:return this.standardFontDataCache.set(t,o),e.abrupt("return",new y.Stream(o));case 33:case"end":return e.stop()}}),e,this,[[20,26]])}))),function(e){return L.apply(this,arguments)})},{key:"buildFormXObject",value:(j=M(E().mark((function e(t,r,n,i,s,c,u){var l,f,h,d,p,g,v,y,m,b,k;return E().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(l=r.dict,f=l.getArray("Matrix"),h=l.getArray("BBox"),h=Array.isArray(h)&&4===h.length?a.Util.normalizeRect(h):null,!l.has("OC")){e.next=8;break}return e.next=7,this.parseMarkedContentProps(l.get("OC"),t);case 7:d=e.sent;case 8:if(void 0!==d&&i.addOp(a.OPS.beginMarkedContentProps,["OC",d]),!(g=l.get("Group"))){e.next=29;break}if(p={matrix:f,bbox:h,smask:n,isolated:!1,knockout:!1},v=g.get("S"),y=null,!(0,o.isName)(v,"Transparency")){e.next=27;break}if(p.isolated=g.get("I")||!1,p.knockout=g.get("K")||!1,!g.has("CS")){e.next=27;break}if(m=g.getRaw("CS"),!(b=w.ColorSpace.getCached(m,this.xref,u))){e.next=24;break}y=b,e.next=27;break;case 24:return e.next=26,this.parseColorSpace({cs:m,resources:t,localColorSpaceCache:u});case 26:y=e.sent;case 27:n&&n.backdrop&&(y=y||w.ColorSpace.singletons.rgb,n.backdrop=y.getRgb(n.backdrop,0)),i.addOp(a.OPS.beginGroup,[p]);case 29:return k=g?[f,null]:[f,h],i.addOp(a.OPS.paintFormXObjectBegin,k),e.abrupt("return",this.getOperatorList({stream:r,task:s,resources:l.get("Resources")||t,operatorList:i,initialState:c}).then((function(){i.addOp(a.OPS.paintFormXObjectEnd,[]),g&&i.addOp(a.OPS.endGroup,[p]),void 0!==d&&i.addOp(a.OPS.endMarkedContent,[])})));case 32:case"end":return e.stop()}}),e,this)}))),function(e,t,r,n,a,i,o){return j.apply(this,arguments)})},{key:"_sendImgData",value:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=t?[t.bitmap||t.data.buffer]:null;return this.parsingType3Font||r?this.handler.send("commonobj",[e,"Image",t],n):this.handler.send("obj",[e,this.pageIndex,"Image",t],n)}},{key:"buildPaintImageXObject",value:(x=M(E().mark((function e(t){var r,n,i,o,s,c,u,l,f,h,d,p,g,v,y,m,b,w,S,x,O,A,C,F,T,I,j,M=this;return E().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=t.resources,n=t.image,i=t.isInline,o=void 0!==i&&i,s=t.operatorList,c=t.cacheKey,u=t.localImageCache,l=t.localColorSpaceCache,f=n.dict,h=f.objId,d=f.get("W","Width"),p=f.get("H","Height"),d&&"number"==typeof d&&p&&"number"==typeof p){e.next=8;break}return(0,a.warn)("Image dimensions are missing, or not numbers."),e.abrupt("return");case 8:if(!(-1!==(g=this.options.maxImageSize)&&d*p>g)){e.next=15;break}if(v="Image exceeded maximum allowed size and was removed.",!this.options.ignoreErrors){e.next=14;break}return(0,a.warn)(v),e.abrupt("return");case 14:throw new Error(v);case 15:if(!f.has("OC")){e.next=19;break}return e.next=18,this.parseMarkedContentProps(f.get("OC"),r);case 18:y=e.sent;case 19:if(!f.get("IM","ImageMask")){e.next=44;break}if(w=f.get("I","Interpolate"),S=d+7>>3,x=n.getBytes(S*p),O=f.getArray("D","Decode"),!this.parsingType3Font){e.next=32;break}return(m=P.PDFImage.createRawMask({imgArray:x,width:d,height:p,imageIsFromDecodeStream:n instanceof k.DecodeStream,inverseDecode:!!O&&O[0]>0,interpolate:w})).cached=!!c,b=[m],s.addImageOps(a.OPS.paintImageMaskXObject,b,y),c&&u.set(c,h,{fn:a.OPS.paintImageMaskXObject,args:b,optionalContent:y}),e.abrupt("return");case 32:if(!(m=P.PDFImage.createMask({imgArray:x,width:d,height:p,imageIsFromDecodeStream:n instanceof k.DecodeStream,inverseDecode:!!O&&O[0]>0,interpolate:w,isOffscreenCanvasSupported:this.options.isOffscreenCanvasSupported})).isSingleOpaquePixel){e.next=37;break}return s.addImageOps(a.OPS.paintSolidColorImageMask,[],y),c&&u.set(c,h,{fn:a.OPS.paintSolidColorImageMask,args:[],optionalContent:y}),e.abrupt("return");case 37:return A="mask_".concat(this.idFactory.createObjId()),s.addDependency(A),this._sendImgData(A,m),b=[{data:A,width:m.width,height:m.height,interpolate:m.interpolate,count:1}],s.addImageOps(a.OPS.paintImageMaskXObject,b,y),c&&u.set(c,h,{fn:a.OPS.paintImageMaskXObject,args:b,optionalContent:y}),e.abrupt("return");case 44:if(C=f.get("SM","SMask")||!1,F=f.get("Mask")||!1,!o||C||F||!(d+p<200)){e.next=52;break}return T=new P.PDFImage({xref:this.xref,res:r,image:n,isInline:o,pdfFunctionFactory:this._pdfFunctionFactory,localColorSpaceCache:l}),m=T.createImageData(!0),s.addImageOps(a.OPS.paintInlineImageXObject,[m],y),e.abrupt("return");case 52:I="img_".concat(this.idFactory.createObjId()),j=!1,this.parsingType3Font?I="".concat(this.idFactory.getDocId(),"_type3_").concat(I):h&&(j=this.globalImageCache.shouldCache(h,this.pageIndex))&&(I="".concat(this.idFactory.getDocId(),"_").concat(I)),s.addDependency(I),b=[I,d,p],P.PDFImage.buildImage({xref:this.xref,res:r,image:n,isInline:o,pdfFunctionFactory:this._pdfFunctionFactory,localColorSpaceCache:l}).then((function(e){return m=e.createImageData(!1),c&&h&&j&&M.globalImageCache.addByteSize(h,m.data.length),M._sendImgData(I,m,j)})).catch((function(e){return(0,a.warn)('Unable to decode image "'.concat(I,'": "').concat(e,'".')),M._sendImgData(I,null,j)})),s.addImageOps(a.OPS.paintImageXObject,b,y),c&&(u.set(c,h,{fn:a.OPS.paintImageXObject,args:b,optionalContent:y}),h&&((0,a.assert)(!o,"Cannot cache an inline image globally."),this.globalImageCache.addPageIndex(h,this.pageIndex),j&&this.globalImageCache.setData(h,{objId:I,fn:a.OPS.paintImageXObject,args:b,optionalContent:y,byteSize:0})));case 59:case"end":return e.stop()}}),e,this)}))),function(e){return x.apply(this,arguments)})},{key:"handleSMask",value:function(e,t,r,n,a,i){var o=e.get("G"),s={subtype:e.get("S").name,backdrop:e.get("BC")},c=e.get("TR");if((0,p.isPDFFunction)(c)){for(var u=this._pdfFunctionFactory.create(c),l=new Uint8Array(256),f=new Float32Array(1),h=0;h<256;h++)f[0]=h/255,u(f,0,f,0),l[h]=255*f[0]|0;s.transferMap=l}return this.buildFormXObject(t,o,s,r,n,a.state.clone(),i)}},{key:"handleTransferFunction",value:function(e){var t;if(Array.isArray(e))t=e;else{if(!(0,p.isPDFFunction)(e))return null;t=[e]}var r,n=[],a=0,i=0,s=N(t);try{for(s.s();!(r=s.n()).done;){var c=r.value,u=this.xref.fetchIfRef(c);if(a++,(0,o.isName)(u,"Identity"))n.push(null);else{if(!(0,p.isPDFFunction)(u))return null;for(var l=this._pdfFunctionFactory.create(u),f=new Uint8Array(256),h=new Float32Array(1),d=0;d<256;d++)h[0]=d/255,l(h,0,h,0),f[d]=255*h[0]|0;n.push(f),i++}}}catch(e){s.e(e)}finally{s.f()}return 1!==a&&4!==a||0===i?null:n}},{key:"handleTilingType",value:function(e,t,r,n,i,s,c,u){var l=this,h=new F.OperatorList,d=o.Dict.merge({xref:this.xref,dictArray:[i.get("Resources"),r]});return this.getOperatorList({stream:n,task:c,resources:d,operatorList:h}).then((function(){var r=h.getIR(),n=(0,f.getTilingPatternIR)(r,i,t);s.addDependencies(h.dependencies),s.addOp(e,n),i.objId&&u.set(null,i.objId,{operatorListIR:r,dict:i})})).catch((function(e){if(!(e instanceof a.AbortException)){if(l.options.ignoreErrors)return l.handler.send("UnsupportedFeature",{featureId:a.UNSUPPORTED_FEATURES.errorTilingPattern}),void(0,a.warn)('handleTilingType - ignoring pattern: "'.concat(e,'".'));throw e}}))}},{key:"handleSetFont",value:function(e,t,r,n,i,c){var u=this,l=arguments.length>6&&void 0!==arguments[6]?arguments[6]:null,f=arguments.length>7&&void 0!==arguments[7]?arguments[7]:null,h=t&&t[0]instanceof o.Name?t[0].name:null;return this.loadFont(h,r,e,l,f).then((function(t){return t.font.isType3Font?t.loadType3Data(u,e,i).then((function(){return n.addDependencies(t.type3Dependencies),t})).catch((function(e){return u.handler.send("UnsupportedFeature",{featureId:a.UNSUPPORTED_FEATURES.errorFontLoadType3}),new z({loadedName:"g_font_error",font:new s.ErrorFont("Type3 font load error: ".concat(e)),dict:t.font,evaluatorOptions:u.options})})):t})).then((function(e){return c.font=e.font,e.send(u.handler),e.loadedName}))}},{key:"handleText",value:function(t,r){var n=r.font,i=n.charsToGlyphs(t);return n.data&&(r.textRenderingMode&a.TextRenderingMode.ADD_TO_PATH_FLAG||"Pattern"===r.fillColorSpace.name||n.disableFontFace||this.options.disableFontFace)&&e.buildFontPaths(n,i,this.handler,this.options),i}},{key:"ensureStateFont",value:function(e){if(!e.font){var t=new a.FormatError("Missing setFont (Tf) operator before text rendering operator.");if(this.options.ignoreErrors)return this.handler.send("UnsupportedFeature",{featureId:a.UNSUPPORTED_FEATURES.errorFontState}),void(0,a.warn)('ensureStateFont: "'.concat(t,'".'));throw t}}},{key:"setGState",value:(g=M(E().mark((function e(t){var r,n,i,s,c,u,l,f,h,d,p,g,v,y,m,b=this;return E().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:r=t.resources,n=t.gState,i=t.operatorList,s=t.cacheKey,c=t.task,u=t.stateManager,l=t.localGStateCache,f=t.localColorSpaceCache,h=n.objId,d=!0,p=[],g=Promise.resolve(),v=N(n.getKeys());try{for(m=function(){var e=y.value,t=n.get(e);switch(e){case"Type":break;case"LW":case"LC":case"LJ":case"ML":case"D":case"RI":case"FL":case"CA":case"ca":p.push([e,t]);break;case"Font":d=!1,g=g.then((function(){return b.handleSetFont(r,null,t[0],i,c,u.state).then((function(r){i.addDependency(r),p.push([e,[r,t[1]]])}))}));break;case"BM":p.push([e,X(t)]);break;case"SMask":if((0,o.isName)(t,"None")){p.push([e,!1]);break}t instanceof o.Dict?(d=!1,g=g.then((function(){return b.handleSMask(t,r,i,c,u,f)})),p.push([e,!0])):(0,a.warn)("Unsupported SMask type");break;case"TR":var s=b.handleTransferFunction(t);p.push([e,s]);break;case"OP":case"op":case"OPM":case"BG":case"BG2":case"UCR":case"UCR2":case"TR2":case"HT":case"SM":case"SA":case"AIS":case"TK":(0,a.info)("graphic state operator "+e);break;default:(0,a.info)("Unknown graphic state operator "+e)}},v.s();!(y=v.n()).done;)m()}catch(e){v.e(e)}finally{v.f()}return e.abrupt("return",g.then((function(){p.length>0&&i.addOp(a.OPS.setGState,[p]),d&&l.set(s,h,p)})));case 8:case"end":return e.stop()}}),e)}))),function(e){return g.apply(this,arguments)})},{key:"loadFont",value:function(t,r,n){var i,u=this,l=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,f=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null,h=function(){var e=M(E().mark((function e(){return E().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new z({loadedName:"g_font_error",font:new s.ErrorFont('Font "'.concat(t,'" is not available.')),dict:r,evaluatorOptions:u.options}));case 1:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),d=this.xref;if(r)r instanceof o.Ref&&(i=r);else{var p=n.get("Font");p&&(i=p.getRaw(t))}if(!i){var g='Font "'.concat(t||r&&r.toString(),'" is not available');if(!this.options.ignoreErrors&&!this.parsingType3Font)return(0,a.warn)("".concat(g,".")),h();this.handler.send("UnsupportedFeature",{featureId:a.UNSUPPORTED_FEATURES.errorFontMissing}),(0,a.warn)("".concat(g," -- attempting to fallback to a default font.")),i=l||e.fallbackFontDict}if(this.parsingType3Font&&this.type3FontRefs.has(i))return h();if(this.fontCache.has(i))return this.fontCache.get(i);if(!((r=d.fetchIfRef(i))instanceof o.Dict))return h();if(r.cacheKey&&this.fontCache.has(r.cacheKey))return this.fontCache.get(r.cacheKey);var v,y=(0,a.createPromiseCapability)();try{(v=this.preEvaluateFont(r)).cssFontInfo=f}catch(e){return(0,a.warn)('loadFont - preEvaluateFont failed: "'.concat(e,'".')),h()}var m,b=v,w=b.descriptor,k=b.hash,S=i instanceof o.Ref;if(S&&(m="f".concat(i.toString())),k&&w instanceof o.Dict){w.fontAliases||(w.fontAliases=Object.create(null));var x=w.fontAliases;if(x[k]){var O=x[k].aliasRef;if(S&&O&&this.fontCache.has(O))return this.fontCache.putAlias(i,O),this.fontCache.get(i)}else x[k]={fontID:this.idFactory.createFontId()};S&&(x[k].aliasRef=i),m=x[k].fontID}return S?this.fontCache.put(i,y.promise):(m||(m=this.idFactory.createFontId()),r.cacheKey="cacheKey_".concat(m),this.fontCache.put(r.cacheKey,y.promise)),(0,a.assert)(m&&m.startsWith("f"),'The "fontID" must be (correctly) defined.'),r.loadedName="".concat(this.idFactory.getDocId(),"_").concat(m),this.translateFont(v).then((function(e){void 0!==e.fontType&&d.stats.addFontType(e.fontType),y.resolve(new z({loadedName:r.loadedName,font:e,dict:r,evaluatorOptions:u.options}))})).catch((function(e){u.handler.send("UnsupportedFeature",{featureId:a.UNSUPPORTED_FEATURES.errorFontTranslate}),(0,a.warn)('loadFont - translateFont failed: "'.concat(e,'".'));try{var t=w&&w.get("FontFile3"),n=t&&t.get("Subtype"),i=(0,c.getFontType)(v.type,n&&n.name);void 0!==i&&d.stats.addFontType(i)}catch(e){}y.resolve(new z({loadedName:r.loadedName,font:new s.ErrorFont(e instanceof Error?e.message:e),dict:r,evaluatorOptions:u.options}))})),y.promise}},{key:"buildPath",value:function(e,t,r){var n=arguments.length>3&&void 0!==arguments[3]&&arguments[3],i=e.length-1;if(r||(r=[]),i<0||e.fnArray[i]!==a.OPS.constructPath){var o;switch(n&&((0,a.warn)('Encountered path operator "'.concat(t,'" inside of a text object.')),e.addOp(a.OPS.save,null)),t){case a.OPS.rectangle:var s=r[0]+r[2],c=r[1]+r[3];o=[Math.min(r[0],s),Math.max(r[0],s),Math.min(r[1],c),Math.max(r[1],c)];break;case a.OPS.moveTo:case a.OPS.lineTo:o=[r[0],r[0],r[1],r[1]];break;default:o=[1/0,-1/0,1/0,-1/0]}e.addOp(a.OPS.constructPath,[[t],r,o]),n&&e.addOp(a.OPS.restore,null)}else{var u,l=e.argsArray[i];l[0].push(t),(u=l[1]).push.apply(u,I(r));var f=l[2];switch(t){case a.OPS.rectangle:var h=r[0]+r[2],d=r[1]+r[3];f[0]=Math.min(f[0],r[0],h),f[1]=Math.max(f[1],r[0],h),f[2]=Math.min(f[2],r[1],d),f[3]=Math.max(f[3],r[1],d);break;case a.OPS.moveTo:case a.OPS.lineTo:f[0]=Math.min(f[0],r[0]),f[1]=Math.max(f[1],r[0]),f[2]=Math.min(f[2],r[1]),f[3]=Math.max(f[3],r[1])}}}},{key:"parseColorSpace",value:function(e){var t=this,r=e.cs,n=e.resources,i=e.localColorSpaceCache;return w.ColorSpace.parseAsync({cs:r,xref:this.xref,resources:n,pdfFunctionFactory:this._pdfFunctionFactory,localColorSpaceCache:i}).catch((function(e){if(e instanceof a.AbortException)return null;if(t.options.ignoreErrors)return t.handler.send("UnsupportedFeature",{featureId:a.UNSUPPORTED_FEATURES.errorColorSpace}),(0,a.warn)('parseColorSpace - ignoring ColorSpace: "'.concat(e,'".')),null;throw e}))}},{key:"parseShading",value:function(e){var t=e.shading,r=e.resources,n=e.localColorSpaceCache,a=e.localShadingPatternCache,i=a.get(t);if(!i){var o=f.Pattern.parseShading(t,this.xref,r,this.handler,this._pdfFunctionFactory,n).getIR();i="pattern_".concat(this.idFactory.createObjId()),a.set(t,i),this.handler.send("obj",[i,this.pageIndex,"Pattern",o])}return i}},{key:"handleColorN",value:function(e,t,r,n,i,s,c,u,l,h){var d=r.pop();if(d instanceof o.Name){var p=i.getRaw(d.name),g=p instanceof o.Ref&&l.getByRef(p);if(g)try{var v=n.base?n.base.getRgb(r,0):null,y=(0,f.getTilingPatternIR)(g.operatorListIR,g.dict,v);return void e.addOp(t,y)}catch(e){}var b=this.xref.fetchIfRef(p);if(b){var w=b instanceof m.BaseStream?b.dict:b,k=w.get("PatternType");if(1===k){var S=n.base?n.base.getRgb(r,0):null;return this.handleTilingType(t,S,s,b,w,e,c,l)}if(2===k){var x=w.get("Shading"),O=w.getArray("Matrix"),A=this.parseShading({shading:x,resources:s,localColorSpaceCache:u,localShadingPatternCache:h});return void e.addOp(t,["Shading",A,O])}throw new a.FormatError("Unknown PatternType: ".concat(k))}}throw new a.FormatError("Unknown PatternName: ".concat(d))}},{key:"_parseVisibilityExpression",value:function(e,t,r){if(++t>10)(0,a.warn)("Visibility expression is too deeply nested");else{var n=e.length,i=this.xref.fetchIfRef(e[0]);if(!(n<2)&&i instanceof o.Name){switch(i.name){case"And":case"Or":case"Not":r.push(i.name);break;default:return void(0,a.warn)("Invalid operator ".concat(i.name," in visibility expression"))}for(var s=1;s0)){e.next=22;break}return e.abrupt("return",{type:"OCMD",expression:u});case 22:if(l=n.get("OCGs"),!(Array.isArray(l)||l instanceof o.Dict)){e.next=29;break}if(f=[],Array.isArray(l)){h=N(l);try{for(h.s();!(d=h.n()).done;)p=d.value,f.push(p.toString())}catch(e){h.e(e)}finally{h.f()}}else f.push(l.objId);return e.abrupt("return",{type:s,ids:f,policy:n.get("P")instanceof o.Name?n.get("P").name:null,expression:null});case 29:if(!(l instanceof o.Ref)){e.next=31;break}return e.abrupt("return",{type:s,id:l.toString()});case 31:return e.abrupt("return",null);case 32:case"end":return e.stop()}}),e,this)}))),function(e,t){return n.apply(this,arguments)})},{key:"getOperatorList",value:function(e){var t=this,r=e.stream,n=e.task,i=e.resources,s=e.operatorList,c=e.initialState,u=void 0===c?null:c,l=e.fallbackFontDict,f=void 0===l?null:l;if(i=i||o.Dict.empty,u=u||new Y,!s)throw new Error('getOperatorList: missing "operatorList" parameter');var h=this,d=this.xref,p=!1,g=new v.LocalImageCache,y=new v.LocalColorSpaceCache,b=new v.LocalGStateCache,k=new v.LocalTilingPatternCache,S=new Map,x=i.get("XObject")||o.Dict.empty,O=i.get("Pattern")||o.Dict.empty,A=new W(u),C=new K(r,d,A),F=new q;function P(e){for(var t=0,r=C.savedStatesDepth;t0&&s.addOp(a.OPS.setGState,[Q]),_=null;continue}}return void c(new Promise((function(e,t){if(!j)throw new a.FormatError("GState must be referred to by name.");var r=i.get("ExtGState");if(!(r instanceof o.Dict))throw new a.FormatError("ExtGState should be a dictionary.");var c=r.get(E);if(!(c instanceof o.Dict))throw new a.FormatError("GState should be a dictionary.");h.setGState({resources:i,gState:c,operatorList:s,cacheKey:E,task:n,stateManager:A,localGStateCache:b,localColorSpaceCache:y}).then(e,t)})).catch((function(e){if(!(e instanceof a.AbortException)){if(h.options.ignoreErrors)return h.handler.send("UnsupportedFeature",{featureId:a.UNSUPPORTED_FEATURES.errorExtGState}),void(0,a.warn)('getOperatorList - ignoring ExtGState: "'.concat(e,'".'));throw e}})));case a.OPS.moveTo:case a.OPS.lineTo:case a.OPS.curveTo:case a.OPS.curveTo2:case a.OPS.curveTo3:case a.OPS.closePath:case a.OPS.rectangle:h.buildPath(s,L,_,p);continue;case a.OPS.markPoint:case a.OPS.markPointProps:case a.OPS.beginCompat:case a.OPS.endCompat:continue;case a.OPS.beginMarkedContentProps:if(!(_[0]instanceof o.Name)){(0,a.warn)("Expected name for beginMarkedContentProps arg0=".concat(_[0]));continue}if("OC"===_[0].name)return void c(h.parseMarkedContentProps(_[1],i).then((function(e){s.addOp(a.OPS.beginMarkedContentProps,["OC",e])})).catch((function(e){if(!(e instanceof a.AbortException)){if(h.options.ignoreErrors)return h.handler.send("UnsupportedFeature",{featureId:a.UNSUPPORTED_FEATURES.errorMarkedContent}),void(0,a.warn)('getOperatorList - ignoring beginMarkedContentProps: "'.concat(e,'".'));throw e}})));_=[_[0].name,_[1]instanceof o.Dict?_[1].get("MCID"):null];break;case a.OPS.beginMarkedContent:case a.OPS.endMarkedContent:default:if(null!==_){for(l=0,v=_.length;l0&&(t[3]*=r*P.fontMatrix[3])}return a.Util.transform(P.ctm,a.Util.transform(P.textMatrix,t))}function G(){if(x.initialized)return x;var e=P,t=e.font,r=e.loadedName;g.has(r)||(g.add(r),S.styles[r]={fontFamily:t.fallbackName,ascent:t.ascent,descent:t.descent,vertical:t.vertical}),x.fontName=r;var n=x.transform=H();t.vertical?(x.width=x.totalWidth=Math.hypot(n[0],n[1]),x.height=x.totalHeight=0,x.vertical=!0):(x.width=x.totalWidth=0,x.height=x.totalHeight=Math.hypot(n[2],n[3]),x.vertical=!1);var a=Math.hypot(P.textLineMatrix[0],P.textLineMatrix[1]),i=Math.hypot(P.ctm[0],P.ctm[1]);return x.textAdvanceScale=i*a,x.trackingSpaceMin=P.fontSize*I,x.notASpace=P.fontSize*E,x.negativeSpaceMax=P.fontSize*j,x.spaceInFlowMin=P.fontSize*M,x.spaceInFlowMax=P.fontSize*_,x.hasEOL=!1,x.initialized=!0,x}function z(){if(x.initialized){var e=Math.hypot(P.textLineMatrix[0],P.textLineMatrix[1]),t=Math.hypot(P.ctm[0],P.ctm[1])*e;t!==x.textAdvanceScale&&(x.vertical?(x.totalHeight+=x.height*x.textAdvanceScale,x.height=0):(x.totalWidth+=x.width*x.textAdvanceScale,x.width=0),x.textAdvanceScale=t)}}function Y(e,t){return L.loadFont(e,t,i).then((function(e){return e.font.isType3Font?e.loadType3Data(L,i,n).catch((function(){})).then((function(){return e})):e})).then((function(e){P.loadedName=e.loadedName,P.font=e.font,P.fontMatrix=e.font.fontMatrix||a.FONT_IDENTITY_MATRIX}))}function J(e,t,r){var n=Math.hypot(r[0],r[1]);return[(r[0]*e+r[1]*t)/n,(r[2]*e+r[3]*t)/n]}function Z(){var e=H(),t=e[4],r=e[5],n=t-y[0],a=r-y[1];if(n<0||n>y[2]||a<0||a>y[3])return!1;if(!l||!P.font||!x.prevTransform)return!0;var i=x.prevTransform[4],o=x.prevTransform[5];if(i===t&&o===r)return!0;var s=-1;switch(e[0]&&0===e[1]&&0===e[2]?s=e[0]>0?0:180:e[1]&&0===e[0]&&0===e[3]&&(s=e[1]>0?90:270),s){case 0:break;case 90:var c=[r,t];t=c[0],r=c[1];var u=[o,i];i=u[0],o=u[1];break;case 180:var f=[-t,-r,-i,-o];t=f[0],r=f[1],i=f[2],o=f[3];break;case 270:var h=[-r,-t];t=h[0],r=h[1];var d=[-o,-i];i=d[0],o=d[1];break;default:var p=T(J(t,r,e),2);t=p[0],r=p[1];var g=T(J(i,o,x.prevTransform),2);i=g[0],o=g[1]}if(P.font.vertical){var v=(o-r)/x.textAdvanceScale,m=t-i,b=Math.sign(x.height);return v.5*x.width?(ee(),!0):(F(),re(),!0):Math.abs(m)>x.width?(ee(),!0):(v<=b*x.notASpace&&F(),v<=b*x.trackingSpaceMin?x.height+=v:te(v,x.prevTransform,b)||(0===x.str.length?(F(),S.items.push({str:" ",dir:"ltr",width:0,height:Math.abs(v),transform:x.prevTransform,fontName:x.fontName,hasEOL:!1})):x.height+=v),!0)}var w=(t-i)/x.textAdvanceScale,k=r-o,O=Math.sign(x.width);return w.5*x.height?(ee(),!0):(F(),re(),!0):Math.abs(k)>x.height?(ee(),!0):(w<=O*x.notASpace&&F(),w<=O*x.trackingSpaceMin?x.width+=w:te(w,x.prevTransform,O)||(0===x.str.length?(F(),S.items.push({str:" ",dir:"ltr",width:Math.abs(w),height:0,transform:x.prevTransform,fontName:x.fontName,hasEOL:!1})):x.width+=w),!0)}function Q(e){var t=e.chars,r=e.extraSpacing,n=P.font;if(t)for(var a=n.charsToGlyphs(t),i=P.fontMatrix[0]*P.fontSize,o=0,s=a.length;o0&&void 0!==arguments[0]&&arguments[0],t=S.items.length;0!==t&&(e&&t<10||(d.enqueue(S,t),S.items=[],S.styles=Object.create(null)))}var ae=new q;return new Promise((function e(t,r){var s=function(n){ne(!0),Promise.all([n,d.ready]).then((function(){try{e(t,r)}catch(e){r(e)}}),r)};n.ensureNotTerminated(),ae.reset();for(var u,f={},p=[];!(u=ae.check())&&(p.length=0,f.args=p,X.read(f));){P=c.state;var v=f.fn;switch(p=f.args,0|v){case a.OPS.setFont:var b=p[0].name,w=p[1];if(P.font&&b===P.fontName&&w===P.fontSize)break;return re(),P.fontName=b,P.fontSize=w,void s(Y(b,null));case a.OPS.setTextRise:P.textRise=p[0];break;case a.OPS.setHScale:P.textHScale=p[0]/100;break;case a.OPS.setLeading:P.leading=p[0];break;case a.OPS.moveText:P.translateTextLineMatrix(p[0],p[1]),P.textMatrix=P.textLineMatrix.slice();break;case a.OPS.setLeadingMoveText:P.leading=-p[1],P.translateTextLineMatrix(p[0],p[1]),P.textMatrix=P.textLineMatrix.slice();break;case a.OPS.nextLine:P.carriageReturn();break;case a.OPS.setTextMatrix:P.setTextMatrix(p[0],p[1],p[2],p[3],p[4],p[5]),P.setTextLineMatrix(p[0],p[1],p[2],p[3],p[4],p[5]),z();break;case a.OPS.setCharSpacing:P.charSpacing=p[0];break;case a.OPS.setWordSpacing:P.wordSpacing=p[0];break;case a.OPS.beginText:P.textMatrix=a.IDENTITY_MATRIX.slice(),P.textLineMatrix=a.IDENTITY_MATRIX.slice();break;case a.OPS.showSpacedText:if(!c.state.font){L.ensureStateFont(c.state);continue}for(var x=(P.font.vertical?1:-1)*P.fontSize/1e3,O=p[0],A=0,C=O.length;A0){var E=N.join("");N.length=0,Q({chars:E,extraSpacing:0})}break;case a.OPS.showText:if(!c.state.font){L.ensureStateFont(c.state);continue}Q({chars:p[0],extraSpacing:0});break;case a.OPS.nextLineShowText:if(!c.state.font){L.ensureStateFont(c.state);continue}P.carriageReturn(),Q({chars:p[0],extraSpacing:0});break;case a.OPS.nextLineSetSpacingShowText:if(!c.state.font){L.ensureStateFont(c.state);continue}P.wordSpacing=p[0],P.charSpacing=p[1],P.carriageReturn(),Q({chars:p[2],extraSpacing:0});break;case a.OPS.paintXObject:re(),D||(D=i.get("XObject")||o.Dict.empty);var j=p[0]instanceof o.Name,M=p[0].name;if(j&&B.getByName(M))break;return void s(new Promise((function(e,t){if(!j)throw new a.FormatError("XObject must be referred to by name.");var r=D.getRaw(M);if(r instanceof o.Ref){if(B.getByRef(r))return void e();if(L.globalImageCache.getData(r,L.pageIndex))return void e();r=R.fetch(r)}if(!(r instanceof m.BaseStream))throw new a.FormatError("XObject should be a stream");var s=r.dict.get("Subtype");if(!(s instanceof o.Name))throw new a.FormatError("XObject should have a Name subtype");if("Form"!==s.name)return B.set(M,r.dict.objId,!0),void e();var u=c.state.clone(),f=new W(u),p=r.dict.getArray("Matrix");Array.isArray(p)&&6===p.length&&f.transform(p),ne();var v={enqueueInvoked:!1,enqueue:function(e,t){this.enqueueInvoked=!0,d.enqueue(e,t)},get desiredSize(){return d.desiredSize},get ready(){return d.ready}};L.getTextContent({stream:r,task:n,resources:r.dict.get("Resources")||i,stateManager:f,combineTextItems:l,includeMarkedContent:h,sink:v,seenStyles:g,viewBox:y,markedContentData:k}).then((function(){v.enqueueInvoked||B.set(M,r.dict.objId,!0),e()}),t)})).catch((function(e){if(!(e instanceof a.AbortException)){if(!L.options.ignoreErrors)throw e;(0,a.warn)('getTextContent - ignoring XObject: "'.concat(e,'".'))}})));case a.OPS.setGState:if(j=p[0]instanceof o.Name,M=p[0].name,j&&U.getByName(M))break;return void s(new Promise((function(e,t){if(!j)throw new a.FormatError("GState must be referred to by name.");var r=i.get("ExtGState");if(!(r instanceof o.Dict))throw new a.FormatError("ExtGState should be a dictionary.");var n=r.get(M);if(!(n instanceof o.Dict))throw new a.FormatError("GState should be a dictionary.");var s=n.get("Font");if(!s)return U.set(M,n.objId,!0),void e();re(),P.fontName=null,P.fontSize=s[1],Y(null,s[0]).then(e,t)})).catch((function(e){if(!(e instanceof a.AbortException)){if(!L.options.ignoreErrors)throw e;(0,a.warn)('getTextContent - ignoring ExtGState: "'.concat(e,'".'))}})));case a.OPS.beginMarkedContent:re(),h&&(k.level++,S.items.push({type:"beginMarkedContent",tag:p[0]instanceof o.Name?p[0].name:null}));break;case a.OPS.beginMarkedContentProps:if(re(),h){k.level++;var _=null;p[1]instanceof o.Dict&&(_=p[1].get("MCID")),S.items.push({type:"beginMarkedContentProps",id:Number.isInteger(_)?"".concat(L.idFactory.getPageObjId(),"_mcid").concat(_):null,tag:p[0]instanceof o.Name?p[0].name:null})}break;case a.OPS.endMarkedContent:if(re(),h){if(0===k.level)break;k.level--,S.items.push({type:"endMarkedContent"})}}if(S.items.length>=d.desiredSize){u=!0;break}}u?s($):(re(),ne(),t())})).catch((function(e){if(!(e instanceof a.AbortException)){if(t.options.ignoreErrors)return(0,a.warn)('getTextContent - ignoring errors during "'.concat(n.name,'" ')+'task: "'.concat(e,'".')),re(),void ne();throw e}}))}},{key:"extractDataStructures",value:function(e,t,r){var n,i=this,s=this.xref,l=this.readToUnicode(r.toUnicode||e.get("ToUnicode")||t.get("ToUnicode"));if(r.composite){var f=e.get("CIDSystemInfo");f instanceof o.Dict&&(r.cidSystemInfo={registry:(0,a.stringToPDFString)(f.get("Registry")),ordering:(0,a.stringToPDFString)(f.get("Ordering")),supplement:f.get("Supplement")});try{var h=e.get("CIDToGIDMap");h instanceof m.BaseStream&&(n=h.getBytes())}catch(e){if(!this.options.ignoreErrors)throw e;(0,a.warn)('extractDataStructures - ignoring CIDToGIDMap data: "'.concat(e,'".'))}}var d,p=[],g=null;if(e.has("Encoding")){if((d=e.get("Encoding"))instanceof o.Dict){if(g=(g=d.get("BaseEncoding"))instanceof o.Name?g.name:null,d.has("Differences")){var v,y=0,b=N(d.get("Differences"));try{for(b.s();!(v=b.n()).done;){var w=v.value,k=s.fetchIfRef(w);if("number"==typeof k)y=k;else{if(!(k instanceof o.Name))throw new a.FormatError("Invalid entry in 'Differences' array: ".concat(k));p[y++]=k.name}}}catch(e){b.e(e)}finally{b.f()}}}else if(d instanceof o.Name)g=d.name;else{var S="Encoding is not a Name nor a Dict";if(!this.options.ignoreErrors)throw new a.FormatError(S);(0,a.warn)(S)}"MacRomanEncoding"!==g&&"MacExpertEncoding"!==g&&"WinAnsiEncoding"!==g&&(g=null)}if(g)r.defaultEncoding=(0,u.getEncoding)(g);else{var x=!!(r.flags&c.FontFlags.Symbolic),O=!!(r.flags&c.FontFlags.Nonsymbolic);d=u.StandardEncoding,"TrueType"!==r.type||O||(d=u.WinAnsiEncoding),x&&(d=u.MacRomanEncoding,r.file&&!r.isInternalFont||(/Symbol/i.test(r.name)?d=u.SymbolSetEncoding:/Dingbats|Wingdings/i.test(r.name)&&(d=u.ZapfDingbatsEncoding))),r.defaultEncoding=d}return r.differences=p,r.baseEncodingName=g,r.hasEncoding=!!g||p.length>0,r.dict=e,l.then((function(e){return r.toUnicode=e,i.buildToUnicode(r)})).then((function(e){return r.toUnicode=e,n&&(r.cidToGidMap=i.readCidToGidMap(n,e)),r}))}},{key:"_simpleFontToUnicode",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];(0,a.assert)(!e.composite,"Must be a simple font.");var r=[],n=e.defaultEncoding.slice(),i=e.baseEncodingName,o=e.differences;for(var s in o){var c=o[s];".notdef"!==c&&(n[s]=c)}var l=(0,S.getGlyphsUnicode)();for(var f in n){var h=n[f];if(""!==h){var d=l[h];if(void 0===d){var p=0;switch(h[0]){case"G":3===h.length&&(p=parseInt(h.substring(1),16));break;case"g":5===h.length&&(p=parseInt(h.substring(1),16));break;case"C":case"c":if(h.length>=3&&h.length<=4){var g=h.substring(1);if(t){p=parseInt(g,16);break}if(p=+g,Number.isNaN(p)&&Number.isInteger(parseInt(g,16)))return this._simpleFontToUnicode(e,!0)}break;case"u":-1!==(d=(0,A.getUnicodeForGlyph)(h,l))&&(p=d)}if(p>0&&p<=1114111&&Number.isInteger(p)){if(i&&p===+f){var v=(0,u.getEncoding)(i);if(v&&(h=v[f])){r[f]=String.fromCharCode(l[h]);continue}}r[f]=String.fromCodePoint(p)}}else r[f]=String.fromCharCode(d)}}return r}},{key:"buildToUnicode",value:(r=M(E().mark((function e(t){var r,n,s,c,u,l;return E().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t.hasIncludedToUnicodeMap=!!t.toUnicode&&t.toUnicode.length>0,!t.hasIncludedToUnicodeMap){e.next=4;break}return!t.composite&&t.hasEncoding&&(t.fallbackToUnicode=this._simpleFontToUnicode(t)),e.abrupt("return",t.toUnicode);case 4:if(t.composite){e.next=6;break}return e.abrupt("return",new d.ToUnicodeMap(this._simpleFontToUnicode(t)));case 6:if(!t.composite||(!t.cMap.builtInCMap||t.cMap instanceof i.IdentityCMap)&&("Adobe"!==t.cidSystemInfo.registry||"GB1"!==t.cidSystemInfo.ordering&&"CNS1"!==t.cidSystemInfo.ordering&&"Japan1"!==t.cidSystemInfo.ordering&&"Korea1"!==t.cidSystemInfo.ordering)){e.next=15;break}return r=t.cidSystemInfo,n=r.registry,s=r.ordering,c=o.Name.get("".concat(n,"-").concat(s,"-UCS2")),e.next=11,i.CMapFactory.create({encoding:c,fetchBuiltInCMap:this._fetchBuiltInCMapBound,useCMap:null});case 11:return u=e.sent,l=[],t.cMap.forEach((function(e,t){if(t>65535)throw new a.FormatError("Max size of CID is 65,535");var r=u.lookup(t);r&&(l[e]=String.fromCharCode((r.charCodeAt(0)<<8)+r.charCodeAt(1)))})),e.abrupt("return",new d.ToUnicodeMap(l));case 15:return e.abrupt("return",new d.IdentityToUnicodeMap(t.firstChar,t.lastChar));case 16:case"end":return e.stop()}}),e,this)}))),function(e){return r.apply(this,arguments)})},{key:"readToUnicode",value:function(e){var t=this;return e?e instanceof o.Name?i.CMapFactory.create({encoding:e,fetchBuiltInCMap:this._fetchBuiltInCMapBound,useCMap:null}).then((function(e){return e instanceof i.IdentityCMap?new d.IdentityToUnicodeMap(0,65535):new d.ToUnicodeMap(e.getMap())})):e instanceof m.BaseStream?i.CMapFactory.create({encoding:e,fetchBuiltInCMap:this._fetchBuiltInCMapBound,useCMap:null}).then((function(e){if(e instanceof i.IdentityCMap)return new d.IdentityToUnicodeMap(0,65535);var t=new Array(e.length);return e.forEach((function(e,r){if("number"!=typeof r){for(var n=[],a=0;a>1;(0!==i||t.has(o))&&(r[o]=i)}return r}},{key:"extractWidths",value:function(e,t,r){var n,a,i,s,u,l,f,h,d=this.xref,p=[],g=0,v=[];if(r.composite){if(g=e.has("DW")?e.get("DW"):1e3,h=e.get("W"))for(a=0,i=h.length;a1&&void 0!==arguments[1]?arguments[1]:NaN,r=a.Util.normalizeRect(e.argsArray[0].slice(2)),n=r[2]-r[0],i=r[3]-r[1],o=Math.hypot(n,i);0===n||0===i?(e.fnArray.splice(0,1),e.argsArray.splice(0,1)):(0===t||Math.round(o/t)>=10)&&(this._bbox||(this._bbox=[1/0,1/0,-1/0,-1/0]),this._bbox[0]=Math.min(this._bbox[0],r[0]),this._bbox[1]=Math.min(this._bbox[1],r[1]),this._bbox[2]=Math.max(this._bbox[2],r[2]),this._bbox[3]=Math.max(this._bbox[3],r[3]));for(var s=0,c=e.length;s0&&void 0!==arguments[0]?arguments[0]:new Y;_(this,e),this.state=t,this.stateStack=[]}return R(e,[{key:"save",value:function(){var e=this.state;this.stateStack.push(this.state),this.state=e.clone()}},{key:"restore",value:function(){var e=this.stateStack.pop();e&&(this.state=e)}},{key:"transform",value:function(e){this.state.ctm=a.Util.transform(this.state.ctm,e)}}]),e}(),V=function(){function e(){_(this,e),this.ctm=new Float32Array(a.IDENTITY_MATRIX),this.fontName=null,this.fontSize=0,this.loadedName=null,this.font=null,this.fontMatrix=a.FONT_IDENTITY_MATRIX,this.textMatrix=a.IDENTITY_MATRIX.slice(),this.textLineMatrix=a.IDENTITY_MATRIX.slice(),this.charSpacing=0,this.wordSpacing=0,this.leading=0,this.textHScale=1,this.textRise=0}return R(e,[{key:"setTextMatrix",value:function(e,t,r,n,a,i){var o=this.textMatrix;o[0]=e,o[1]=t,o[2]=r,o[3]=n,o[4]=a,o[5]=i}},{key:"setTextLineMatrix",value:function(e,t,r,n,a,i){var o=this.textLineMatrix;o[0]=e,o[1]=t,o[2]=r,o[3]=n,o[4]=a,o[5]=i}},{key:"translateTextMatrix",value:function(e,t){var r=this.textMatrix;r[4]=r[0]*e+r[2]*t+r[4],r[5]=r[1]*e+r[3]*t+r[5]}},{key:"translateTextLineMatrix",value:function(e,t){var r=this.textLineMatrix;r[4]=r[0]*e+r[2]*t+r[4],r[5]=r[1]*e+r[3]*t+r[5]}},{key:"carriageReturn",value:function(){this.translateTextLineMatrix(0,-this.leading),this.textMatrix=this.textLineMatrix.slice()}},{key:"clone",value:function(){var e=Object.create(this);return e.textMatrix=this.textMatrix.slice(),e.textLineMatrix=this.textLineMatrix.slice(),e.fontMatrix=this.fontMatrix.slice(),e}}]),e}(),Y=function(){function e(){_(this,e),this.ctm=new Float32Array(a.IDENTITY_MATRIX),this.font=null,this.textRenderingMode=a.TextRenderingMode.FILL,this.fillColorSpace=w.ColorSpace.singletons.gray,this.strokeColorSpace=w.ColorSpace.singletons.gray}return R(e,[{key:"clone",value:function(){return Object.create(this)}}]),e}(),K=function(){function e(t,r){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:new W;_(this,e),this.parser=new g.Parser({lexer:new g.Lexer(t,e.opMap),xref:r}),this.stateManager=n,this.nonProcessedArgs=[],this._isPathOp=!1,this._numInvalidPathOPS=0}return R(e,[{key:"savedStatesDepth",get:function(){return this.stateManager.stateStack.length}},{key:"read",value:function(t){for(var r=t.args;;){var n=this.parser.getObj();if(n instanceof o.Cmd){var i=n.cmd,s=e.opMap[i];if(!s){(0,a.warn)('Unknown command "'.concat(i,'".'));continue}var c=s.id,u=s.numArgs,l=null!==r?r.length:0;if(this._isPathOp||(this._numInvalidPathOPS=0),this._isPathOp=c>=a.OPS.moveTo&&c<=a.OPS.endPath,s.variableArgs)l>u&&(0,a.info)("Command ".concat(i,": expected [0, ").concat(u,"] args, ")+"but received ".concat(l," args."));else{if(l!==u){for(var f=this.nonProcessedArgs;l>u;)f.push(r.shift()),l--;for(;le.MAX_INVALID_PATH_OPS)throw new a.FormatError("Invalid ".concat(h));(0,a.warn)("Skipping ".concat(h)),null!==r&&(r.length=0);continue}}return this.preprocessCommand(c,r),t.fn=c,t.args=r,!0}if(n===o.EOF)return!1;if(null!==n&&(null===r&&(r=[]),r.push(n),r.length>33))throw new a.FormatError("Too many arguments")}}},{key:"preprocessCommand",value:function(e,t){switch(0|e){case a.OPS.save:this.stateManager.save();break;case a.OPS.restore:this.stateManager.restore();break;case a.OPS.transform:this.stateManager.transform(t)}}}],[{key:"opMap",get:function(){var e=(0,x.getLookupTableFactory)((function(e){e.w={id:a.OPS.setLineWidth,numArgs:1,variableArgs:!1},e.J={id:a.OPS.setLineCap,numArgs:1,variableArgs:!1},e.j={id:a.OPS.setLineJoin,numArgs:1,variableArgs:!1},e.M={id:a.OPS.setMiterLimit,numArgs:1,variableArgs:!1},e.d={id:a.OPS.setDash,numArgs:2,variableArgs:!1},e.ri={id:a.OPS.setRenderingIntent,numArgs:1,variableArgs:!1},e.i={id:a.OPS.setFlatness,numArgs:1,variableArgs:!1},e.gs={id:a.OPS.setGState,numArgs:1,variableArgs:!1},e.q={id:a.OPS.save,numArgs:0,variableArgs:!1},e.Q={id:a.OPS.restore,numArgs:0,variableArgs:!1},e.cm={id:a.OPS.transform,numArgs:6,variableArgs:!1},e.m={id:a.OPS.moveTo,numArgs:2,variableArgs:!1},e.l={id:a.OPS.lineTo,numArgs:2,variableArgs:!1},e.c={id:a.OPS.curveTo,numArgs:6,variableArgs:!1},e.v={id:a.OPS.curveTo2,numArgs:4,variableArgs:!1},e.y={id:a.OPS.curveTo3,numArgs:4,variableArgs:!1},e.h={id:a.OPS.closePath,numArgs:0,variableArgs:!1},e.re={id:a.OPS.rectangle,numArgs:4,variableArgs:!1},e.S={id:a.OPS.stroke,numArgs:0,variableArgs:!1},e.s={id:a.OPS.closeStroke,numArgs:0,variableArgs:!1},e.f={id:a.OPS.fill,numArgs:0,variableArgs:!1},e.F={id:a.OPS.fill,numArgs:0,variableArgs:!1},e["f*"]={id:a.OPS.eoFill,numArgs:0,variableArgs:!1},e.B={id:a.OPS.fillStroke,numArgs:0,variableArgs:!1},e["B*"]={id:a.OPS.eoFillStroke,numArgs:0,variableArgs:!1},e.b={id:a.OPS.closeFillStroke,numArgs:0,variableArgs:!1},e["b*"]={id:a.OPS.closeEOFillStroke,numArgs:0,variableArgs:!1},e.n={id:a.OPS.endPath,numArgs:0,variableArgs:!1},e.W={id:a.OPS.clip,numArgs:0,variableArgs:!1},e["W*"]={id:a.OPS.eoClip,numArgs:0,variableArgs:!1},e.BT={id:a.OPS.beginText,numArgs:0,variableArgs:!1},e.ET={id:a.OPS.endText,numArgs:0,variableArgs:!1},e.Tc={id:a.OPS.setCharSpacing,numArgs:1,variableArgs:!1},e.Tw={id:a.OPS.setWordSpacing,numArgs:1,variableArgs:!1},e.Tz={id:a.OPS.setHScale,numArgs:1,variableArgs:!1},e.TL={id:a.OPS.setLeading,numArgs:1,variableArgs:!1},e.Tf={id:a.OPS.setFont,numArgs:2,variableArgs:!1},e.Tr={id:a.OPS.setTextRenderingMode,numArgs:1,variableArgs:!1},e.Ts={id:a.OPS.setTextRise,numArgs:1,variableArgs:!1},e.Td={id:a.OPS.moveText,numArgs:2,variableArgs:!1},e.TD={id:a.OPS.setLeadingMoveText,numArgs:2,variableArgs:!1},e.Tm={id:a.OPS.setTextMatrix,numArgs:6,variableArgs:!1},e["T*"]={id:a.OPS.nextLine,numArgs:0,variableArgs:!1},e.Tj={id:a.OPS.showText,numArgs:1,variableArgs:!1},e.TJ={id:a.OPS.showSpacedText,numArgs:1,variableArgs:!1},e["'"]={id:a.OPS.nextLineShowText,numArgs:1,variableArgs:!1},e['"']={id:a.OPS.nextLineSetSpacingShowText,numArgs:3,variableArgs:!1},e.d0={id:a.OPS.setCharWidth,numArgs:2,variableArgs:!1},e.d1={id:a.OPS.setCharWidthAndBounds,numArgs:6,variableArgs:!1},e.CS={id:a.OPS.setStrokeColorSpace,numArgs:1,variableArgs:!1},e.cs={id:a.OPS.setFillColorSpace,numArgs:1,variableArgs:!1},e.SC={id:a.OPS.setStrokeColor,numArgs:4,variableArgs:!0},e.SCN={id:a.OPS.setStrokeColorN,numArgs:33,variableArgs:!0},e.sc={id:a.OPS.setFillColor,numArgs:4,variableArgs:!0},e.scn={id:a.OPS.setFillColorN,numArgs:33,variableArgs:!0},e.G={id:a.OPS.setStrokeGray,numArgs:1,variableArgs:!1},e.g={id:a.OPS.setFillGray,numArgs:1,variableArgs:!1},e.RG={id:a.OPS.setStrokeRGBColor,numArgs:3,variableArgs:!1},e.rg={id:a.OPS.setFillRGBColor,numArgs:3,variableArgs:!1},e.K={id:a.OPS.setStrokeCMYKColor,numArgs:4,variableArgs:!1},e.k={id:a.OPS.setFillCMYKColor,numArgs:4,variableArgs:!1},e.sh={id:a.OPS.shadingFill,numArgs:1,variableArgs:!1},e.BI={id:a.OPS.beginInlineImage,numArgs:0,variableArgs:!1},e.ID={id:a.OPS.beginImageData,numArgs:0,variableArgs:!1},e.EI={id:a.OPS.endInlineImage,numArgs:1,variableArgs:!1},e.Do={id:a.OPS.paintXObject,numArgs:1,variableArgs:!1},e.MP={id:a.OPS.markPoint,numArgs:1,variableArgs:!1},e.DP={id:a.OPS.markPointProps,numArgs:2,variableArgs:!1},e.BMC={id:a.OPS.beginMarkedContent,numArgs:1,variableArgs:!1},e.BDC={id:a.OPS.beginMarkedContentProps,numArgs:2,variableArgs:!1},e.EMC={id:a.OPS.endMarkedContent,numArgs:0,variableArgs:!1},e.BX={id:a.OPS.beginCompat,numArgs:0,variableArgs:!1},e.EX={id:a.OPS.endCompat,numArgs:0,variableArgs:!1},e.BM=null,e.BD=null,e.true=null,e.fa=null,e.fal=null,e.fals=null,e.false=null,e.nu=null,e.nul=null,e.null=null}));return(0,a.shadow)(this,"opMap",e())}},{key:"MAX_INVALID_PATH_OPS",get:function(){return(0,a.shadow)(this,"MAX_INVALID_PATH_OPS",10)}}]),e}();t.EvaluatorPreprocessor=K},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.IdentityCMap=t.CMapFactory=t.CMap=void 0;var n=r(2),a=r(134),i=r(136),o=r(146),s=r(135),c=r(139);function u(){u=function(){return e};var e={},t=Object.prototype,r=t.hasOwnProperty,n=Object.defineProperty||function(e,t,r){e[t]=r.value},a="function"==typeof Symbol?Symbol:{},i=a.iterator||"@@iterator",o=a.asyncIterator||"@@asyncIterator",s=a.toStringTag||"@@toStringTag";function c(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{c({},"")}catch(e){c=function(e,t,r){return e[t]=r}}function l(e,t,r,a){var i=t&&t.prototype instanceof d?t:d,o=Object.create(i.prototype),s=new F(a||[]);return n(o,"_invoke",{value:x(e,r,s)}),o}function f(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}e.wrap=l;var h={};function d(){}function g(){}function v(){}var y={};c(y,i,(function(){return this}));var m=Object.getPrototypeOf,b=m&&m(m(P([])));b&&b!==t&&r.call(b,i)&&(y=b);var w=v.prototype=d.prototype=Object.create(y);function k(e){["next","throw","return"].forEach((function(t){c(e,t,(function(e){return this._invoke(t,e)}))}))}function S(e,t){function a(n,i,o,s){var c=f(e[n],e,i);if("throw"!==c.type){var u=c.arg,l=u.value;return l&&"object"==p(l)&&r.call(l,"__await")?t.resolve(l.__await).then((function(e){a("next",e,o,s)}),(function(e){a("throw",e,o,s)})):t.resolve(l).then((function(e){u.value=e,o(u)}),(function(e){return a("throw",e,o,s)}))}s(c.arg)}var i;n(this,"_invoke",{value:function(e,r){function n(){return new t((function(t,n){a(e,r,t,n)}))}return i=i?i.then(n,n):n()}})}function x(e,t,r){var n="suspendedStart";return function(a,i){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===a)throw i;return{value:void 0,done:!0}}for(r.method=a,r.arg=i;;){var o=r.delegate;if(o){var s=O(o,r);if(s){if(s===h)continue;return s}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var c=f(e,t,r);if("normal"===c.type){if(n=r.done?"completed":"suspendedYield",c.arg===h)continue;return{value:c.arg,done:r.done}}"throw"===c.type&&(n="completed",r.method="throw",r.arg=c.arg)}}}function O(e,t){var r=t.method,n=e.iterator[r];if(void 0===n)return t.delegate=null,"throw"===r&&e.iterator.return&&(t.method="return",t.arg=void 0,O(e,t),"throw"===t.method)||"return"!==r&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+r+"' method")),h;var a=f(n,e.iterator,t.arg);if("throw"===a.type)return t.method="throw",t.arg=a.arg,t.delegate=null,h;var i=a.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,h):i:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,h)}function A(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function C(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function F(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(A,this),this.reset(!0)}function P(e){if(e){var t=e[i];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var n=-1,a=function t(){for(;++n=0;--a){var i=this.tryEntries[a],o=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var s=r.call(i,"catchLoc"),c=r.call(i,"finallyLoc");if(s&&c){if(this.prev=0;--n){var a=this.tryEntries[n];if(a.tryLoc<=this.prev&&r.call(a,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),C(r),h}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var a=n.arg;C(r)}return a}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:P(e),resultName:t,nextLoc:r},"next"===this.method&&(this.arg=void 0),h}},e}function l(e,t,r,n,a,i,o){try{var s=e[i](o),c=s.value}catch(e){return void r(e)}s.done?t(c):Promise.resolve(c).then(n,a)}function f(e){return function(){var t=this,r=arguments;return new Promise((function(n,a){var i=e.apply(t,r);function o(e){l(i,n,a,o,s,"next",e)}function s(e){l(i,n,a,o,s,"throw",e)}o(void 0)}))}}function h(e,t){return h=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},h(e,t)}function d(e){return d=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},d(e)}function p(e){return p="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},p(e)}function g(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function v(e,t){for(var r=0;r0&&void 0!==arguments[0]&&arguments[0];g(this,e),this.codespaceRanges=[[],[],[],[]],this.numCodespaceRanges=0,this._map=[],this.name="",this.vertical=!1,this.useCMap=null,this.builtInCMap=t}return y(e,[{key:"addCodespaceRange",value:function(e,t,r){this.codespaceRanges[e-1].push(t,r),this.numCodespaceRanges++}},{key:"mapCidRange",value:function(e,t,r){if(t-e>b)throw new Error("mapCidRange - ignoring data above MAX_MAP_RANGE.");for(;e<=t;)this._map[e++]=r++}},{key:"mapBfRange",value:function(e,t,r){if(t-e>b)throw new Error("mapBfRange - ignoring data above MAX_MAP_RANGE.");for(var n=r.length-1;e<=t;){this._map[e++]=r;var a=r.charCodeAt(n)+1;r=a>255?r.substring(0,n-1)+String.fromCharCode(r.charCodeAt(n-1)+1)+"\\0":r.substring(0,n)+String.fromCharCode(a)}}},{key:"mapBfRangeToArray",value:function(e,t,r){if(t-e>b)throw new Error("mapBfRangeToArray - ignoring data above MAX_MAP_RANGE.");for(var n=r.length,a=0;e<=t&&a>>0;for(var s=a[i],c=0,u=s.length;c=l&&n<=f)return r.charcode=n,void(r.length=i+1)}}r.charcode=0,r.length=1}},{key:"getCharCodeLength",value:function(e){for(var t=this.codespaceRanges,r=0,n=t.length;r=s&&e<=c)return r+1}return 1}},{key:"length",get:function(){return this._map.length}},{key:"isIdentityCMap",get:function(){if("Identity-H"!==this.name&&"Identity-V"!==this.name)return!1;if(65536!==this._map.length)return!1;for(var e=0;e<65536;e++)if(this._map[e]!==e)return!1;return!0}}]),e}();t.CMap=w;var k=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&h(e,t)}(i,e);var t,r,a=(t=i,r=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,n=d(t);if(r){var a=d(this).constructor;e=Reflect.construct(n,arguments,a)}else e=n.apply(this,arguments);return function(e,t){if(t&&("object"===p(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(this,e)});function i(e,t){var r;return g(this,i),(r=a.call(this)).vertical=e,r.addCodespaceRange(t,0,65535),r}return y(i,[{key:"mapCidRange",value:function(e,t,r){(0,n.unreachable)("should not call mapCidRange")}},{key:"mapBfRange",value:function(e,t,r){(0,n.unreachable)("should not call mapBfRange")}},{key:"mapBfRangeToArray",value:function(e,t,r){(0,n.unreachable)("should not call mapBfRangeToArray")}},{key:"mapOne",value:function(e,t){(0,n.unreachable)("should not call mapCidOne")}},{key:"lookup",value:function(e){return Number.isInteger(e)&&e<=65535?e:void 0}},{key:"contains",value:function(e){return Number.isInteger(e)&&e<=65535}},{key:"forEach",value:function(e){for(var t=0;t<=65535;t++)e(t,t)}},{key:"charCodeOf",value:function(e){return Number.isInteger(e)&&e<=65535?e:-1}},{key:"getMap",value:function(){for(var e=new Array(65536),t=0;t<=65535;t++)e[t]=t;return e}},{key:"length",get:function(){return 65536}},{key:"isIdentityCMap",get:function(){(0,n.unreachable)("should not access .isIdentityCMap")}}]),i}(w);t.IdentityCMap=k;var S=function(){function e(e,t){for(var r=0,n=0;n<=t;n++)r=r<<8|e[n];return r>>>0}function t(e,t){return 1===t?String.fromCharCode(e[0],e[1]):3===t?String.fromCharCode(e[0],e[1],e[2],e[3]):String.fromCharCode.apply(null,e.subarray(0,t+1))}function r(e,t,r){for(var n=0,a=r;a>=0;a--)n+=e[a]+t[a],e[a]=255&n,n>>=8}function a(e,t){for(var r=1,n=t;n>=0&&r>0;n--)r+=e[n],e[n]=255&r,r>>=8}var i=16,o=function(){function e(t){g(this,e),this.buffer=t,this.pos=0,this.end=t.length,this.tmpBuf=new Uint8Array(19)}return y(e,[{key:"readByte",value:function(){return this.pos>=this.end?-1:this.buffer[this.pos++]}},{key:"readNumber",value:function(){var e,t=0;do{var r=this.readByte();if(r<0)throw new n.FormatError("unexpected EOF in bcmap");e=!(128&r),t=t<<7|127&r}while(!e);return t}},{key:"readSigned",value:function(){var e=this.readNumber();return 1&e?~(e>>>1):e>>>1}},{key:"readHex",value:function(e,t){e.set(this.buffer.subarray(this.pos,this.pos+t+1)),this.pos+=t+1}},{key:"readHexNumber",value:function(e,t){var r,a=this.tmpBuf,i=0;do{var o=this.readByte();if(o<0)throw new n.FormatError("unexpected EOF in bcmap");r=!(128&o),a[i++]=127&o}while(!r);for(var s=t,c=0,u=0;s>=0;){for(;u<8&&a.length>0;)c|=a[--i]<>=8,u-=8}}},{key:"readHexSigned",value:function(e,t){this.readHexNumber(e,t);for(var r=1&e[t]?255:0,n=0,a=0;a<=t;a++)n=(1&n)<<8|e[a],e[a]=n>>1^r}},{key:"readString",value:function(){for(var e=this.readNumber(),t="",r=0;r=0)){n.next=68;break}if(7!=(k=w>>5)){n.next=20;break}n.t0=31&w,n.next=0===n.t0?15:1===n.t0?17:19;break;case 15:return f.readString(),n.abrupt("break",19);case 17:return d=f.readString(),n.abrupt("break",19);case 19:return n.abrupt("continue",9);case 20:if(S=!!(16&w),!(1+(x=15&w)>i)){n.next=24;break}throw new Error("BinaryCMapReader.process: Invalid dataSize.");case 24:O=1,A=f.readNumber(),n.t1=k,n.next=0===n.t1?29:1===n.t1?35:2===n.t1?41:3===n.t1?46:4===n.t1?53:5===n.t1?58:65;break;case 29:for(f.readHex(p,x),f.readHexNumber(g,x),r(g,p,x),c.addCodespaceRange(x+1,e(p,x),e(g,x)),C=1;C>>0}function t(e){if("string"!=typeof e)throw new n.FormatError("Malformed CMap: expected string.")}function r(e){if(!Number.isInteger(e))throw new n.FormatError("Malformed CMap: expected int.")}function l(r,n){for(;;){var i=n.getObj();if(i===a.EOF)break;if((0,a.isCmd)(i,"endbfchar"))return;t(i);var o=e(i);t(i=n.getObj());var s=i;r.mapOne(o,s)}}function h(r,i){for(;;){var o=i.getObj();if(o===a.EOF)break;if((0,a.isCmd)(o,"endbfrange"))return;t(o);var s=e(o);t(o=i.getObj());var c=e(o);if(o=i.getObj(),Number.isInteger(o)||"string"==typeof o){var u=Number.isInteger(o)?String.fromCharCode(o):o;r.mapBfRange(s,c,u)}else{if(!(0,a.isCmd)(o,"["))break;o=i.getObj();for(var l=[];!(0,a.isCmd)(o,"]")&&o!==a.EOF;)l.push(o),o=i.getObj();r.mapBfRangeToArray(s,c,l)}}throw new n.FormatError("Invalid bf range.")}function d(n,i){for(;;){var o=i.getObj();if(o===a.EOF)break;if((0,a.isCmd)(o,"endcidchar"))return;t(o);var s=e(o);r(o=i.getObj());var c=o;n.mapOne(s,c)}}function p(n,i){for(;;){var o=i.getObj();if(o===a.EOF)break;if((0,a.isCmd)(o,"endcidrange"))return;t(o);var s=e(o);t(o=i.getObj());var c=e(o);r(o=i.getObj());var u=o;n.mapCidRange(s,c,u)}}function g(t,r){for(;;){var i=r.getObj();if(i===a.EOF)break;if((0,a.isCmd)(i,"endcodespacerange"))return;if("string"!=typeof i)break;var o=e(i);if("string"!=typeof(i=r.getObj()))break;var s=e(i);t.addCodespaceRange(i.length,o,s)}throw new n.FormatError("Invalid codespace range.")}function v(e,t){var r=t.getObj();Number.isInteger(r)&&(e.vertical=!!r)}function y(e,t){var r=t.getObj();r instanceof a.Name&&(e.name=r.name)}function b(e,t,r,n){return x.apply(this,arguments)}function x(){return(x=f(u().mark((function e(t,r,i,o){var c,f,m;return u().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(e.prev=1,(m=r.getObj())!==a.EOF){e.next=7;break}return e.abrupt("break",39);case 7:if(!(m instanceof a.Name)){e.next=12;break}"WMode"===m.name?v(t,r):"CMapName"===m.name&&y(t,r),c=m,e.next=29;break;case 12:if(!(m instanceof a.Cmd)){e.next=29;break}e.t0=m.cmd,e.next="endcmap"===e.t0?16:"usecmap"===e.t0?17:"begincodespacerange"===e.t0?19:"beginbfchar"===e.t0?21:"begincidchar"===e.t0?23:"beginbfrange"===e.t0?25:"begincidrange"===e.t0?27:29;break;case 16:return e.abrupt("break",39);case 17:return c instanceof a.Name&&(f=c.name),e.abrupt("break",29);case 19:return g(t,r),e.abrupt("break",29);case 21:return l(t,r),e.abrupt("break",29);case 23:return d(t,r),e.abrupt("break",29);case 25:return h(t,r),e.abrupt("break",29);case 27:return p(t,r),e.abrupt("break",29);case 29:e.next=37;break;case 31:if(e.prev=31,e.t1=e.catch(1),!(e.t1 instanceof s.MissingDataException)){e.next=35;break}throw e.t1;case 35:return(0,n.warn)("Invalid cMap data: "+e.t1),e.abrupt("continue",0);case 37:e.next=0;break;case 39:if(!o&&f&&(o=f),!o){e.next=42;break}return e.abrupt("return",O(t,i,o));case 42:return e.abrupt("return",t);case 43:case"end":return e.stop()}}),e,null,[[1,31]])})))).apply(this,arguments)}function O(e,t,r){return A.apply(this,arguments)}function A(){return(A=f(u().mark((function e(t,r,n){var a,i;return u().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,C(n,r);case 2:if(t.useCMap=e.sent,0===t.numCodespaceRanges){for(a=t.useCMap.codespaceRanges,i=0;i{Object.defineProperty(t,"__esModule",{value:!0}),t.Parser=t.Linearization=t.Lexer=void 0;var n=r(2),a=r(134),i=r(135),o=r(147),s=r(149),c=r(150),u=r(152),l=r(153),f=r(156),h=r(158),d=r(160),p=r(139),g=r(161),v=r(162);function y(e){return y="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},y(e)}function m(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function b(e,t){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:null,t=this.buf1;if(this.shift(),t instanceof a.Cmd)switch(t.cmd){case"BI":return this.makeInlineImage(e);case"[":for(var r=[];!(0,a.isCmd)(this.buf1,"]")&&this.buf1!==a.EOF;)r.push(this.getObj(e));if(this.buf1===a.EOF){if(this.recoveryMode)return r;throw new i.ParserEOFException("End of file inside array.")}return this.shift(),r;case"<<":for(var o=new a.Dict(this.xref);!(0,a.isCmd)(this.buf1,">>")&&this.buf1!==a.EOF;)if(this.buf1 instanceof a.Name){var s=this.buf1.name;if(this.shift(),this.buf1===a.EOF)break;o.set(s,this.getObj(e))}else(0,n.info)("Malformed dictionary: key must be a name object"),this.shift();if(this.buf1===a.EOF){if(this.recoveryMode)return o;throw new i.ParserEOFException("End of file inside dictionary.")}return(0,a.isCmd)(this.buf2,"stream")?this.allowStreams?this.makeStream(o,e):o:(this.shift(),o);default:return t}if(Number.isInteger(t)){if(Number.isInteger(this.buf1)&&(0,a.isCmd)(this.buf2,"R")){var c=a.Ref.get(t,this.buf1);return this.shift(),this.shift(),c}return t}return"string"==typeof t&&e?e.decryptString(t):t}},{key:"findDefaultInlineStreamEnd",value:function(e){for(var t,r,o=this.lexer,s=e.pos,c=0;-1!==(t=e.getByte());)if(0===c)c=69===t?1:0;else if(1===c)c=73===t?2:0;else if(32===t||10===t||13===t){r=e.pos;for(var u=e.peekBytes(10),l=0,f=u.length;l127)){c=0;break}if(2!==c)continue;if(o.knownCommands){var h=o.peekObj();h instanceof a.Cmd&&!o.knownCommands[h.cmd]&&(c=0)}else(0,n.warn)("findDefaultInlineStreamEnd - \`lexer.knownCommands\` is undefined.");if(2===c)break}else c=0;-1===t&&((0,n.warn)("findDefaultInlineStreamEnd: Reached the end of the stream without finding a valid EI marker"),r&&((0,n.warn)('... trying to recover by using the last "EI" occurrence.'),e.skip(-(e.pos-r))));var d=4;return e.skip(-d),t=e.peekByte(),e.skip(d),(0,i.isWhiteSpace)(t)||d--,e.pos-d-s}},{key:"findDCTDecodeInlineStreamEnd",value:function(e){for(var t,r,a=e.pos,i=!1;-1!==(t=e.getByte());)if(255===t){switch(e.getByte()){case 0:break;case 255:e.skip(-1);break;case 217:i=!0;break;case 192:case 193:case 194:case 195:case 197:case 198:case 199:case 201:case 202:case 203:case 205:case 206:case 207:case 196:case 204:case 218:case 219:case 220:case 221:case 222:case 223:case 224:case 225:case 226:case 227:case 228:case 229:case 230:case 231:case 232:case 233:case 234:case 235:case 236:case 237:case 238:case 239:case 254:(r=e.getUint16())>2?e.skip(r-2):e.skip(-2)}if(i)break}var o=e.pos-a;return-1===t?((0,n.warn)("Inline DCTDecode image stream: EOI marker not found, searching for /EI/ instead."),e.skip(-o),this.findDefaultInlineStreamEnd(e)):(this.inlineStreamSkipEI(e),o)}},{key:"findASCII85DecodeInlineStreamEnd",value:function(e){for(var t,r=e.pos;-1!==(t=e.getByte());)if(126===t){var a=e.pos;for(t=e.peekByte();(0,i.isWhiteSpace)(t);)e.skip(),t=e.peekByte();if(62===t){e.skip();break}if(e.pos>a){var o=e.peekBytes(2);if(69===o[0]&&73===o[1])break}}var s=e.pos-r;return-1===t?((0,n.warn)("Inline ASCII85Decode image stream: EOD marker not found, searching for /EI/ instead."),e.skip(-s),this.findDefaultInlineStreamEnd(e)):(this.inlineStreamSkipEI(e),s)}},{key:"findASCIIHexDecodeInlineStreamEnd",value:function(e){for(var t,r=e.pos;-1!==(t=e.getByte())&&62!==t;);var a=e.pos-r;return-1===t?((0,n.warn)("Inline ASCIIHexDecode image stream: EOD marker not found, searching for /EI/ instead."),e.skip(-a),this.findDefaultInlineStreamEnd(e)):(this.inlineStreamSkipEI(e),a)}},{key:"inlineStreamSkipEI",value:function(e){for(var t,r=0;-1!==(t=e.getByte());)if(0===r)r=69===t?1:0;else if(1===r)r=73===t?2:0;else if(2===r)break}},{key:"makeInlineImage",value:function(e){for(var t,r=this.lexer,i=r.stream,o=Object.create(null);!(0,a.isCmd)(this.buf1,"ID")&&this.buf1!==a.EOF;){if(!(this.buf1 instanceof a.Name))throw new n.FormatError("Dictionary key must be a name object");var s=this.buf1.name;if(this.shift(),this.buf1===a.EOF)break;o[s]=this.getObj(e)}-1!==r.beginInlineImagePos&&(t=i.pos-r.beginInlineImagePos);var c,u=this.xref.fetchIfRef(o.F||o.Filter);if(u instanceof a.Name)c=u.name;else if(Array.isArray(u)){var l=this.xref.fetchIfRef(u[0]);l instanceof a.Name&&(c=l.name)}var f,h,d=i.pos;switch(c){case"DCT":case"DCTDecode":f=this.findDCTDecodeInlineStreamEnd(i);break;case"A85":case"ASCII85Decode":f=this.findASCII85DecodeInlineStreamEnd(i);break;case"AHx":case"ASCIIHexDecode":f=this.findASCIIHexDecodeInlineStreamEnd(i);break;default:f=this.findDefaultInlineStreamEnd(i)}if(f<1e3&&t>0){var p=i.pos;i.pos=r.beginInlineImagePos,h=function(e){for(var t=[],r=e.length,n=0;n=n)return r.pos+=o,r.pos-e;o++}r.pos+=i}return-1}},{key:"makeStream",value:function(e,t){var r=this.lexer,o=r.stream;r.skipToNextLine();var s=o.pos-1,c=e.get("Length");if(Number.isInteger(c)||((0,n.info)('Bad length "'.concat(c&&c.toString(),'" in stream.')),c=0),o.pos=s+c,r.nextChar(),this.tryShift()&&(0,a.isCmd)(this.buf2,"endstream"))this.shift();else{var u=new Uint8Array([101,110,100,115,116,114,101,97,109]),l=this._findStreamLength(s,u);if(l<0){for(var f=1;f<=1;f++){var h=u.length-f,d=u.slice(0,h),p=this._findStreamLength(s,d);if(p>=0){var g=o.peekBytes(h+1)[h];if(!(0,i.isWhiteSpace)(g))break;(0,n.info)('Found "'.concat((0,n.bytesToString)(d),'" when ')+"searching for endstream command."),l=p;break}}if(l<0)throw new n.FormatError("Missing endstream command.")}c=l,r.nextChar(),this.shift(),this.shift()}return this.shift(),o=o.makeSubStream(s,c,e),t&&(o=t.createStream(o,c)),(o=this.filter(o,e,c)).dict=e,o}},{key:"filter",value:function(e,t,r){var i=t.get("F","Filter"),o=t.get("DP","DecodeParms");if(i instanceof a.Name)return Array.isArray(o)&&(0,n.warn)("/DecodeParms should not be an Array, when /Filter is a Name."),this.makeFilter(e,i.name,r,o);var s=r;if(Array.isArray(i))for(var c=i,u=o,l=0,f=c.length;l=48&&e<=57?15&e:e>=65&&e<=70||e>=97&&e<=102?9+(15&e):-1}var O=function(){function e(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;m(this,e),this.stream=t,this.nextChar(),this.strBuf=[],this.knownCommands=r,this._hexStringNumWarn=0,this.beginInlineImagePos=-1}return w(e,[{key:"nextChar",value:function(){return this.currentChar=this.stream.getByte()}},{key:"peekChar",value:function(){return this.stream.peekByte()}},{key:"getNumber",value:function(){var e=this.currentChar,t=!1,r=0,a=0;if(45===e?(a=-1,45===(e=this.nextChar())&&(e=this.nextChar())):43===e&&(a=1,e=this.nextChar()),10===e||13===e)do{e=this.nextChar()}while(10===e||13===e);if(46===e&&(r=10,e=this.nextChar()),e<48||e>57){var o="Invalid number: ".concat(String.fromCharCode(e)," (charCode ").concat(e,")");if((0,i.isWhiteSpace)(e)||-1===e)return(0,n.info)('Lexer.getNumber - "'.concat(o,'".')),0;throw new n.FormatError(o)}a=a||1;for(var s=e-48,c=0,u=1;(e=this.nextChar())>=0;)if(e>=48&&e<=57){var l=e-48;t?c=10*c+l:(0!==r&&(r*=10),s=10*s+l)}else if(46===e){if(0!==r)break;r=1}else if(45===e)(0,n.warn)("Badly formatted number: minus sign in the middle");else{if(69!==e&&101!==e)break;if(43===(e=this.peekChar())||45===e)u=45===e?-1:1,this.nextChar();else if(e<48||e>57)break;t=!0}return 0!==r&&(s/=r),t&&(s*=Math.pow(10,u*c)),a*s}},{key:"getString",value:function(){var e=1,t=!1,r=this.strBuf;r.length=0;for(var a=this.nextChar();;){var i=!1;switch(0|a){case-1:(0,n.warn)("Unterminated string"),t=!0;break;case 40:++e,r.push("(");break;case 41:0==--e?(this.nextChar(),t=!0):r.push(")");break;case 92:switch(a=this.nextChar()){case-1:(0,n.warn)("Unterminated string"),t=!0;break;case 110:r.push("\\n");break;case 114:r.push("\\r");break;case 116:r.push("\\t");break;case 98:r.push("\\b");break;case 102:r.push("\\f");break;case 92:case 40:case 41:r.push(String.fromCharCode(a));break;case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:var o=15&a;i=!0,(a=this.nextChar())>=48&&a<=55&&(o=(o<<3)+(15&a),(a=this.nextChar())>=48&&a<=55&&(i=!1,o=(o<<3)+(15&a))),r.push(String.fromCharCode(o));break;case 13:10===this.peekChar()&&this.nextChar();break;case 10:break;default:r.push(String.fromCharCode(a))}break;default:r.push(String.fromCharCode(a))}if(t)break;i||(a=this.nextChar())}return r.join("")}},{key:"getName",value:function(){var e,t,r=this.strBuf;for(r.length=0;(e=this.nextChar())>=0&&!S[e];)if(35===e){if(e=this.nextChar(),S[e]){(0,n.warn)("Lexer_getName: NUMBER SIGN (#) should be followed by a hexadecimal number."),r.push("#");break}var i=x(e);if(-1!==i){t=e;var o=x(e=this.nextChar());if(-1===o){if((0,n.warn)("Lexer_getName: Illegal digit (".concat(String.fromCharCode(e),") ")+"in hexadecimal number."),r.push("#",String.fromCharCode(t)),S[e])break;r.push(String.fromCharCode(e));continue}r.push(String.fromCharCode(i<<4|o))}else r.push("#",String.fromCharCode(e))}else r.push(String.fromCharCode(e));return r.length>127&&(0,n.warn)("Name token is longer than allowed by the spec: ".concat(r.length)),a.Name.get(r.join(""))}},{key:"_hexStringWarn",value:function(e){5!=this._hexStringNumWarn++?this._hexStringNumWarn>5||(0,n.warn)("getHexString - ignoring invalid character: ".concat(e)):(0,n.warn)("getHexString - ignoring additional invalid characters.")}},{key:"getHexString",value:function(){var e=this.strBuf;e.length=0;var t,r,a=this.currentChar,i=!0;for(this._hexStringNumWarn=0;;){if(a<0){(0,n.warn)("Unterminated hex string");break}if(62===a){this.nextChar();break}if(1!==S[a]){if(i){if(-1===(t=x(a))){this._hexStringWarn(a),a=this.nextChar();continue}}else{if(-1===(r=x(a))){this._hexStringWarn(a),a=this.nextChar();continue}e.push(String.fromCharCode(t<<4|r))}i=!i,a=this.nextChar()}else a=this.nextChar()}return e.join("")}},{key:"getObj",value:function(){for(var e=!1,t=this.currentChar;;){if(t<0)return a.EOF;if(e)10!==t&&13!==t||(e=!1);else if(37===t)e=!0;else if(1!==S[t])break;t=this.nextChar()}switch(0|t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case 43:case 45:case 46:return this.getNumber();case 40:return this.getString();case 47:return this.getName();case 91:return this.nextChar(),a.Cmd.get("[");case 93:return this.nextChar(),a.Cmd.get("]");case 60:return 60===(t=this.nextChar())?(this.nextChar(),a.Cmd.get("<<")):this.getHexString();case 62:return 62===(t=this.nextChar())?(this.nextChar(),a.Cmd.get(">>")):a.Cmd.get(">");case 123:return this.nextChar(),a.Cmd.get("{");case 125:return this.nextChar(),a.Cmd.get("}");case 41:throw this.nextChar(),new n.FormatError("Illegal character: ".concat(t))}var r=String.fromCharCode(t);if(t<32||t>127){var i=this.peekChar();if(i>=32&&i<=127)return this.nextChar(),a.Cmd.get(r)}for(var o=this.knownCommands,s=o&&void 0!==o[r];(t=this.nextChar())>=0&&!S[t];){var c=r+String.fromCharCode(t);if(s&&void 0===o[c])break;if(128===r.length)throw new n.FormatError("Command token too long: ".concat(r.length));r=c,s=o&&void 0!==o[r]}return"true"===r||"false"!==r&&("null"===r?null:("BI"===r&&(this.beginInlineImagePos=this.stream.pos),a.Cmd.get(r)))}},{key:"peekObj",value:function(){var e,t=this.stream.pos,r=this.currentChar,a=this.beginInlineImagePos;try{e=this.getObj()}catch(e){if(e instanceof i.MissingDataException)throw e;(0,n.warn)("peekObj: ".concat(e))}return this.stream.pos=t,this.currentChar=r,this.beginInlineImagePos=a,e}},{key:"skipToNextLine",value:function(){for(var e=this.currentChar;e>=0;){if(13===e){10===(e=this.nextChar())&&this.nextChar();break}if(10===e){this.nextChar();break}e=this.nextChar()}}}]),e}();t.Lexer=O;var A=function(){function e(){m(this,e)}return w(e,null,[{key:"create",value:function(e){function t(e,t){var r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=e.get(t);if(Number.isInteger(n)&&(r?n>=0:n>0))return n;throw new Error('The "'.concat(t,'" parameter in the linearization ')+"dictionary is invalid.")}var r,n,i=new k({lexer:new O(e),xref:null}),o=i.getObj(),s=i.getObj(),c=i.getObj(),u=i.getObj();if(!(Number.isInteger(o)&&Number.isInteger(s)&&(0,a.isCmd)(c,"obj")&&u instanceof a.Dict&&"number"==typeof(r=u.get("Linearized"))&&r>0))return null;if((n=t(u,"L"))!==e.length)throw new Error('The "L" parameter in the linearization dictionary does not equal the stream length.');return{length:n,hints:function(e){var t,r=e.get("H");if(Array.isArray(r)&&(2===(t=r.length)||4===t)){for(var n=0;n0))throw new Error("Hint (".concat(n,") in the linearization dictionary is invalid."))}return r}throw new Error("Hint array in the linearization dictionary is invalid.")}(u),objectNumberFirst:t(u,"O"),endFirst:t(u,"E"),numPages:t(u,"N"),mainXRefEntriesOffset:t(u,"T"),pageFirst:u.has("P")?t(u,"P",!0):0}}}]),e}();t.Linearization=A},(e,t,r)=>{function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.Ascii85Stream=void 0;var a=r(148),i=r(135);function o(e,t){for(var r=0;r=0;--n)r[a+n]=255&s,s>>=8}}else this.eof=!0}}])&&o(t.prototype,r),Object.defineProperty(t,"prototype",{writable:!1}),f}(a.DecodeStream);t.Ascii85Stream=u},(e,t,r)=>{function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.StreamsSequenceStream=t.DecodeStream=void 0;var a=r(136),i=r(139);function o(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=s(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,a=function(){};return{s:a,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o=!0,c=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return o=e.done,e},e:function(e){c=!0,i=e},f:function(){try{o||null==r.return||r.return()}finally{if(c)throw i}}}}function s(e,t){if(e){if("string"==typeof e)return c(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?c(e,t):void 0}}function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);rn&&(t=n)}else{for(;!this.eof;)this.readBlock();t=this.bufferLength}return this.pos=t,this.buffer.subarray(r,t)}},{key:"reset",value:function(){this.pos=0}},{key:"makeSubStream",value:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;if(void 0===t)for(;!this.eof;)this.readBlock();else for(var n=e+t;this.bufferLength<=n&&!this.eof;)this.readBlock();return new i.Stream(this.buffer,e,t,r)}},{key:"getBaseStreams",value:function(){return this.str?this.str.getBaseStreams():null}}]),r}(a.BaseStream);t.DecodeStream=y;var m=function(e){h(r,e);var t=p(r);function r(e){var n,a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;u(this,r);var i,s=0,c=o(e);try{for(c.s();!(i=c.n()).done;){var l=i.value;s+=l instanceof y?l._rawMinBufferLength:l.length}}catch(e){c.e(e)}finally{c.f()}return(n=t.call(this,s)).streams=e,n._onError=a,n}return f(r,[{key:"readBlock",value:function(){var e=this.streams;if(0!==e.length){var t,r=e.shift();try{t=r.getBytes()}catch(e){if(this._onError)return void this._onError(e,r.dict&&r.dict.objId);throw e}var n=this.bufferLength,a=n+t.length;this.ensureBuffer(a).set(t,n),this.bufferLength=a}else this.eof=!0}},{key:"getBaseStreams",value:function(){var e,t,r=[],n=o(this.streams);try{for(n.s();!(e=n.n()).done;){var a=e.value.getBaseStreams();a&&r.push.apply(r,function(e){if(Array.isArray(e))return c(e)}(t=a)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(t)||s(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())}}catch(e){n.e(e)}finally{n.f()}return r.length>0?r:null}}]),r}(y);t.StreamsSequenceStream=m},(e,t,r)=>{function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}function a(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r>1,n=this.ensureBuffer(this.bufferLength+r),i=this.bufferLength,o=this.firstDigit,s=function(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(e){if("string"==typeof e)return a(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?a(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,i=function(){};return{s:i,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,c=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return s=e.done,e},e:function(e){c=!0,o=e},f:function(){try{s||null==r.return||r.return()}finally{if(c)throw o}}}}(e);try{for(s.s();!(t=s.n()).done;){var c=t.value,u=void 0;if(c>=48&&c<=57)u=15&c;else{if(!(c>=65&&c<=70||c>=97&&c<=102)){if(62===c){this.eof=!0;break}continue}u=9+(15&c)}o<0?o=u:(n[i++]=o<<4|u,o=-1)}}catch(e){s.e(e)}finally{s.f()}o>=0&&this.eof&&(n[i++]=o<<4,o=-1),this.firstDigit=o,this.bufferLength=i}else this.eof=!0}}])&&i(t.prototype,r),Object.defineProperty(t,"prototype",{writable:!1}),f}(r(148).DecodeStream);t.AsciiHexStream=c},(e,t,r)=>{function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.CCITTFaxStream=void 0;var a=r(151),i=r(148),o=r(134);function s(e,t){for(var r=0;r{Object.defineProperty(t,"__esModule",{value:!0}),t.CCITTFaxDecoder=void 0;var n=r(2);function a(e){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a(e)}function i(e,t){for(var r=0;r1&&void 0!==arguments[1]?arguments[1]:{};if(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),!t||"function"!=typeof t.next)throw new Error('CCITTFaxDecoder - invalid "source" parameter.');this.source=t,this.eof=!1,this.encoding=r.K||0,this.eoline=r.EndOfLine||!1,this.byteAlign=r.EncodedByteAlign||!1,this.columns=r.Columns||1728,this.rows=r.Rows||0;var n,a=r.EndOfBlock;for(null==a&&(a=!0),this.eoblock=a,this.black=r.BlackIs1||!1,this.codingLine=new Uint32Array(this.columns+1),this.refLine=new Uint32Array(this.columns+2),this.codingLine[0]=this.columns,this.codingPos=0,this.row=0,this.nextLine2D=this.encoding<0,this.inputBits=0,this.inputBuf=0,this.outputBits=0,this.rowsDone=!1;0===(n=this._lookBits(12));)this._eatBits(1);1===n&&this._eatBits(12),this.encoding>0&&(this.nextLine2D=!this._lookBits(1),this._eatBits(1))}var t,r;return t=e,(r=[{key:"readNextChar",value:function(){if(this.eof)return-1;var e,t,r,a,i,s=this.refLine,c=this.codingLine,u=this.columns;if(0===this.outputBits){if(this.rowsDone&&(this.eof=!0),this.eof)return-1;var l,f,h;if(this.err=!1,this.nextLine2D){for(a=0;c[a]=64);do{f+=h=this._getWhiteCode()}while(h>=64)}else{do{l+=h=this._getWhiteCode()}while(h>=64);do{f+=h=this._getBlackCode()}while(h>=64)}for(this._addPixels(c[this.codingPos]+l,t),c[this.codingPos]0?--e:++e;s[e]<=c[this.codingPos]&&s[e]0?--e:++e;s[e]<=c[this.codingPos]&&s[e]0?--e:++e;s[e]<=c[this.codingPos]&&s[e]=64);else do{l+=h=this._getWhiteCode()}while(h>=64);this._addPixels(c[this.codingPos]+l,t),t^=1}var d=!1;if(this.byteAlign&&(this.inputBits&=-8),this.eoblock||this.row!==this.rows-1){if(l=this._lookBits(12),this.eoline)for(;l!==o&&1!==l;)this._eatBits(1),l=this._lookBits(12);else for(;0===l;)this._eatBits(1),l=this._lookBits(12);1===l?(this._eatBits(12),d=!0):l===o&&(this.eof=!0)}else this.rowsDone=!0;if(!this.eof&&this.encoding>0&&!this.rowsDone&&(this.nextLine2D=!this._lookBits(1),this._eatBits(1)),this.eoblock&&d&&this.byteAlign){if(1===(l=this._lookBits(12))){if(this._eatBits(12),this.encoding>0&&(this._lookBits(1),this._eatBits(1)),this.encoding>=0)for(a=0;a<4;++a)1!==(l=this._lookBits(12))&&(0,n.info)("bad rtc code: "+l),this._eatBits(12),this.encoding>0&&(this._lookBits(1),this._eatBits(1));this.eof=!0}}else if(this.err&&this.eoline){for(;;){if((l=this._lookBits(13))===o)return this.eof=!0,-1;if(l>>1==1)break;this._eatBits(1)}this._eatBits(12),this.encoding>0&&(this._eatBits(1),this.nextLine2D=!(1&l))}c[0]>0?this.outputBits=c[this.codingPos=0]:this.outputBits=c[this.codingPos=1],this.row++}if(this.outputBits>=8)i=1&this.codingPos?0:255,this.outputBits-=8,0===this.outputBits&&c[this.codingPos]r?(i<<=r,1&this.codingPos||(i|=255>>8-r),this.outputBits-=r,r=0):(i<<=this.outputBits,1&this.codingPos||(i|=255>>8-this.outputBits),r-=this.outputBits,this.outputBits=0,c[this.codingPos]0&&(i<<=r,r=0))}while(r)}return this.black&&(i^=255),i}},{key:"_addPixels",value:function(e,t){var r=this.codingLine,a=this.codingPos;e>r[a]&&(e>this.columns&&((0,n.info)("row is wrong length"),this.err=!0,e=this.columns),1&a^t&&++a,r[a]=e),this.codingPos=a}},{key:"_addPixelsNeg",value:function(e,t){var r=this.codingLine,a=this.codingPos;if(e>r[a])e>this.columns&&((0,n.info)("row is wrong length"),this.err=!0,e=this.columns),1&a^t&&++a,r[a]=e;else if(e0&&e=a){var c=r[s-a];if(c[0]===i)return this._eatBits(i),[!0,c[1],!0]}}return[!1,0,!1]}},{key:"_getTwoDimCode",value:function(){var e,t=0;if(this.eoblock){if(t=this._lookBits(7),(e=s[t])&&e[0]>0)return this._eatBits(e[0]),e[1]}else{var r=this._findTableCode(1,7,s);if(r[0]&&r[2])return r[1]}return(0,n.info)("Bad two dim code"),o}},{key:"_getWhiteCode",value:function(){var e,t=0;if(this.eoblock){if((t=this._lookBits(12))===o)return 1;if((e=t>>5==0?c[t]:u[t>>3])[0]>0)return this._eatBits(e[0]),e[1]}else{var r=this._findTableCode(1,9,u);if(r[0])return r[1];if((r=this._findTableCode(11,12,c))[0])return r[1]}return(0,n.info)("bad white code"),this._eatBits(1),1}},{key:"_getBlackCode",value:function(){var e,t;if(this.eoblock){if((e=this._lookBits(13))===o)return 1;if((t=e>>7==0?l[e]:e>>9==0&&e>>7!=0?f[(e>>1)-64]:h[e>>7])[0]>0)return this._eatBits(t[0]),t[1]}else{var r=this._findTableCode(2,6,h);if(r[0])return r[1];if((r=this._findTableCode(7,12,f,64))[0])return r[1];if((r=this._findTableCode(10,13,l))[0])return r[1]}return(0,n.info)("bad black code"),this._eatBits(1),1}},{key:"_lookBits",value:function(e){for(var t;this.inputBits>16-e;this.inputBuf=this.inputBuf<<8|t,this.inputBits+=8}return this.inputBuf>>this.inputBits-e&65535>>16-e}},{key:"_eatBits",value:function(e){(this.inputBits-=e)<0&&(this.inputBits=0)}}])&&i(t.prototype,r),Object.defineProperty(t,"prototype",{writable:!1}),e}();t.CCITTFaxDecoder=d},(e,t,r)=>{function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.FlateStream=void 0;var a=r(148),i=r(2);function o(e,t){for(var r=0;r>e,this.codeSize=n-=e,t}},{key:"getCode",value:function(e){for(var t,r=this.str,n=e[0],a=e[1],o=this.codeSize,s=this.codeBuf;o>16,l=65535&c;if(u<1||o>u,this.codeSize=o-u,l}},{key:"generateHuffmanTable",value:function(e){var t,r=e.length,n=0;for(t=0;tn&&(n=e[t]);for(var a=1<>=1;for(t=l;t>=1)){var a,o;if(1===n)a=h,o=d;else{if(2!==n)throw new i.FormatError("Unknown block type in flate stream");var s,c=this.getBits(5)+257,p=this.getBits(5)+1,g=this.getBits(4)+4,v=new Uint8Array(u.length);for(s=0;s0;)S[s++]=w}a=this.generateHuffmanTable(S.subarray(0,c)),o=this.generateHuffmanTable(S.subarray(c,k))}for(var A=(e=this.buffer)?e.length:0,C=this.bufferLength;;){var F=this.getCode(a);if(F<256)C+1>=A&&(A=(e=this.ensureBuffer(C+1)).length),e[C++]=F;else{if(256===F)return void(this.bufferLength=C);var P=(F=l[F-=257])>>16;P>0&&(P=this.getBits(P)),t=(65535&F)+P,F=this.getCode(o),(P=(F=f[F])>>16)>0&&(P=this.getBits(P));var T=(65535&F)+P;C+t>=A&&(A=(e=this.ensureBuffer(C+t)).length);for(var I=0;I{function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.Jbig2Stream=void 0;var a=r(136),i=r(148),o=r(134),s=r(154),c=r(2);function u(e,t){for(var r=0;r{function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.Jbig2Image=void 0;var a=r(2),i=r(135),o=r(155),s=r(151);function c(e){return function(e){if(Array.isArray(e))return f(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||l(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function u(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=l(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,a=function(){};return{s:a,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return o=e.done,e},e:function(e){s=!0,i=e},f:function(){try{o||null==r.return||r.return()}finally{if(s)throw i}}}}function l(e,t){if(e){if("string"==typeof e)return f(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?f(e,t):void 0}}function f(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r>>0}var o=i(1),s=i(1)?i(1)?i(1)?i(1)?i(1)?i(32)+4436:i(12)+340:i(8)+84:i(6)+20:i(4)+4:i(2);return 0===o?s:s>0?-s:null}function k(e,t,r){for(var n=e.getContexts("IAID"),a=1,i=0;i=E&&C=j)for(U=U<<1&v,f=0;f=0&&P=0&&(T=R[F][P])&&(U|=T<=e?M<<=1:M=M<<1|S[E][j];for(l=0;l=w||j<0||j>=b?M<<=1:M=M<<1|n[E][j];var _=x.readBit(A,M);T[I]=_}}return S}function T(e,t,r,n,a,i,o,s,c,u,l,f,h,d,p,g,v,m,b){if(e&&t)throw new y("refinement with Huffman is not supported");var S,x,O=[];for(S=0;S1&&(j=e?b.readBits(m):w(F,"IAIT",C));var M=o*T+j,_=e?d.symbolIDTable.decode(b):k(F,C,c),L=t&&(e?b.readBit():w(F,"IARI",C)),R=s[_],N=R[0].length,D=R.length;if(L){var B=w(F,"IARDW",C),U=w(F,"IARDH",C);R=P(N+=B,D+=U,p,R,(B>>1)+w(F,"IARDX",C),(U>>1)+w(F,"IARDY",C),!1,g,v)}var $=M-(1&f?0:D-1),X=E-(2&f?N-1:0),H=void 0,q=void 0,G=void 0;if(u){for(H=0;H>5&7,u=[31&s],l=t+6;if(7===s){c=536870911&(0,i.readUint32)(e,l-1),l+=3;var f=c+7>>3;for(u[0]=e[l++];--f>0;)u.push(e[l++])}else if(5===s||6===s)throw new y("invalid referred-to flags");r.retainBits=u;var h=4;r.number<=256?h=1:r.number<=65536&&(h=2);var d,p,g=[];for(d=0;d>>24&255,w[3]=m.height>>16&255,w[4]=m.height>>8&255,w[5]=255&m.height,d=l,p=e.length;d>2&3,f.huffmanDWSelector=h>>4&3,f.bitmapSizeSelector=h>>6&1,f.aggregationInstancesSelector=h>>7&1,f.bitmapCodingContextUsed=!!(256&h),f.bitmapCodingContextRetained=!!(512&h),f.template=h>>10&3,f.refinementTemplate=h>>12&1,l+=2,!f.huffman){for(o=0===f.template?4:1,n=[],a=0;a>2&3,d.stripSize=1<>4&3,d.transposed=!!(64&p),d.combinationOperator=p>>7&3,d.defaultPixelValue=p>>9&1,d.dsOffset=p<<17>>27,d.refinementTemplate=p>>15&1,d.huffman){var g=(0,i.readUint16)(c,l);l+=2,d.huffmanFS=3&g,d.huffmanDS=g>>2&3,d.huffmanDT=g>>4&3,d.huffmanRefinementDW=g>>6&3,d.huffmanRefinementDH=g>>8&3,d.huffmanRefinementDX=g>>10&3,d.huffmanRefinementDY=g>>12&3,d.huffmanRefinementSizeSelector=!!(16384&g)}if(d.refinement&&!d.refinementTemplate){for(n=[],a=0;a<2;a++)n.push({x:(0,i.readInt8)(c,l),y:(0,i.readInt8)(c,l+1)}),l+=2;d.refinementAt=n}d.numberOfSymbolInstances=(0,i.readUint32)(c,l),l+=4,r=[d,s.referredTo,c,l,u];break;case 16:var v={},m=c[l++];v.mmr=!!(1&m),v.template=m>>1&3,v.patternWidth=c[l++],v.patternHeight=c[l++],v.maxPatternIndex=(0,i.readUint32)(c,l),l+=4,r=[v,s.number,c,l,u];break;case 22:case 23:var b={};b.info=j(c,l),l+=M;var w=c[l++];b.mmr=!!(1&w),b.template=w>>1&3,b.enableSkip=!!(8&w),b.combinationOperator=w>>4&7,b.defaultPixelValue=w>>7&1,b.gridWidth=(0,i.readUint32)(c,l),l+=4,b.gridHeight=(0,i.readUint32)(c,l),l+=4,b.gridOffsetX=4294967295&(0,i.readUint32)(c,l),l+=4,b.gridOffsetY=4294967295&(0,i.readUint32)(c,l),l+=4,b.gridVectorX=(0,i.readUint16)(c,l),l+=2,b.gridVectorY=(0,i.readUint16)(c,l),l+=2,r=[b,s.referredTo,c,l,u];break;case 38:case 39:var k={};k.info=j(c,l),l+=M;var S=c[l++];if(k.mmr=!!(1&S),k.template=S>>1&3,k.prediction=!!(8&S),!k.mmr){for(o=0===k.template?4:1,n=[],a=0;a>2&1,x.combinationOperator=O>>3&3,x.requiresBuffer=!!(32&O),x.combinationOperatorOverride=!!(64&O),r=[x];break;case 49:case 50:case 51:case 62:break;case 53:r=[s.number,c,l,u];break;default:throw new y("segment type ".concat(s.typeName,"(").concat(s.type,") is not implemented"))}var A="on"+s.typeName;A in t&&t[A].apply(t,r)}function L(e,t){for(var r=0,n=e.length;r>3,r=new Uint8ClampedArray(t*e.height);e.defaultPixelValue&&r.fill(255),this.buffer=r}},{key:"drawBitmap",value:function(e,t){var r,n,a,i,o=this.currentPageInfo,s=e.width,c=e.height,u=o.width+7>>3,l=o.combinationOperatorOverride?e.combinationOperator:o.combinationOperator,f=this.buffer,h=128>>(7&e.x),d=e.y*u+(e.x>>3);switch(l){case 0:for(r=0;r>=1)||(a=128,i++);d+=u}break;case 2:for(r=0;r>=1)||(a=128,i++);d+=u}break;default:throw new y("operator ".concat(l," is not supported"))}}},{key:"onImmediateGenericRegion",value:function(e,t,r,n){var a=e.info,i=new b(t,r,n),o=F(e.mmr,a.width,a.height,e.template,e.prediction,null,e.at,i);this.drawBitmap(a,o)}},{key:"onImmediateLosslessGenericRegion",value:function(){this.onImmediateGenericRegion.apply(this,arguments)}},{key:"onSymbolDictionary",value:function(e,t,r,n,a,o){var s,l;e.huffman&&(s=function(e,t,r){var n,a,i,o=0;switch(e.huffmanDHSelector){case 0:case 1:n=$(e.huffmanDHSelector+4);break;case 3:n=H(o,t,r),o++;break;default:throw new y("invalid Huffman DH selector")}switch(e.huffmanDWSelector){case 0:case 1:a=$(e.huffmanDWSelector+2);break;case 3:a=H(o,t,r),o++;break;default:throw new y("invalid Huffman DW selector")}return e.bitmapSizeSelector?(i=H(o,t,r),o++):i=$(1),{tableDeltaHeight:n,tableDeltaWidth:a,tableBitmapSize:i,tableAggregateInstances:e.aggregationInstancesSelector?H(o,t,r):$(1)}}(e,r,this.customTables),l=new X(n,a,o));var f=this.symbols;f||(this.symbols=f={});var h,d=[],p=u(r);try{for(p.s();!(h=p.n()).done;){var g=f[h.value];g&&d.push.apply(d,c(g))}}catch(e){p.e(e)}finally{p.f()}var v=new b(n,a,o);f[t]=function(e,t,r,n,a,o,s,c,u,l,f,h){if(e&&t)throw new y("symbol refinement with Huffman is not supported");var d,p,g=[],v=0,m=(0,i.log2)(r.length+n),b=f.decoder,S=f.contextCache;for(e&&(d=$(1),p=[],m=Math.max(m,1));g.length1)I=T(e,t,x,v,0,E,1,r.concat(g),m,0,0,1,0,o,u,l,f,0,h);else{var j=k(S,b,m),M=w(S,"IARDX",b),_=w(S,"IARDY",b);I=P(x,v,u,j=32){var f=void 0,h=void 0,d=void 0;switch(l){case 32:if(0===u)throw new y("no previous value in symbol ID table");h=a.readBits(2)+3,f=i[u-1].prefixLength;break;case 33:h=a.readBits(3)+3,f=0;break;case 34:h=a.readBits(7)+11,f=0;break;default:throw new y("invalid code length in symbol ID table")}for(d=0;d=0;v--)T=e?G(P,u,l,!0):F(!1,u,l,r,!1,null,C,g),B[v]=T;for(I=0;I=0;m--)M|=(j^=B[m][I][E])<>8,(L=f+I*p+E*d>>8)>=0&&L+x<=n&&R>=0&&R+O<=a)for(v=0;v=a))for(D=w[$],N=_[v],m=0;m=0&&U>1&7),f=1+(o>>4&7),h=[],d=s;do{n=u.readBits(l),a=u.readBits(f),h.push(new N([d,n,a,0])),d+=1<>r&1;if(r<=0)this.children[n]=new e(t);else{var a=this.children[n];a||(this.children[n]=a=new e(null)),a.buildTree(t,r-1)}}},{key:"decodeNode",value:function(e){if(this.isLeaf){if(this.isOOB)return null;var t=e.readBits(this.rangeLength);return this.rangeLow+(this.isLowerRange?-t:t)}var r=this.children[e.readBit()];if(!r)throw new y("invalid Huffman data");return r.decodeNode(e)}}]),e}(),B=function(){function e(t,r){p(this,e),r||this.assignPrefixCodes(t),this.rootNode=new D(null);for(var n=0,a=t.length;n0&&this.rootNode.buildTree(i,i.prefixLength-1)}}return d(e,[{key:"decode",value:function(e){return this.rootNode.decodeNode(e)}},{key:"assignPrefixCodes",value:function(e){for(var t=e.length,r=0,n=0;n=this.end)throw new y("end of data while reading bit");this.currentByte=this.data[this.position++],this.shift=7}var e=this.currentByte>>this.shift&1;return this.shift--,e}},{key:"readBits",value:function(e){var t,r=0;for(t=e-1;t>=0;t--)r|=this.readBit()<=this.end?-1:this.data[this.position++]}}]),e}();function H(e,t,r){for(var n=0,a=0,i=t.length;a>h&1,h--}if(n&&!u)for(var p=0;p<5&&-1!==o.readNextChar();p++);return c}var z=function(){function e(){p(this,e)}return d(e,[{key:"parseChunks",value:function(e){return function(e){for(var t=new R,r=0,n=e.length;r{function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}function n(e,t){for(var n=0;n>9&127,this.clow=this.clow<<7&65535,this.ct-=7,this.a=32768}var t,r;return t=e,(r=[{key:"byteIn",value:function(){var e=this.data,t=this.bp;255===e[t]?e[t+1]>143?(this.clow+=65280,this.ct=8):(t++,this.clow+=e[t]<<9,this.ct=7,this.bp=t):(t++,this.clow+=t65535&&(this.chigh+=this.clow>>16,this.clow&=65535)}},{key:"readBit",value:function(e,t){var r,n=e[t]>>1,i=1&e[t],o=a[n],s=o.qe,c=this.a-s;if(this.chigh>15&1,this.clow=this.clow<<1&65535,this.ct--}while(0==(32768&c));return this.a=c,e[t]=n<<1|i,r}}])&&n(t.prototype,r),Object.defineProperty(t,"prototype",{writable:!1}),e}();t.ArithmeticDecoder=i},(e,t,r)=>{function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.JpegStream=void 0;var a=r(148),i=r(134),o=r(157),s=r(2);function c(e,t){for(var r=0;r{Object.defineProperty(t,"__esModule",{value:!0}),t.JpegImage=void 0;var n=r(2),a=r(135);function i(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(e){if("string"==typeof e)return o(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?o(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,a=function(){};return{s:a,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,s=!0,c=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return s=e.done,e},e:function(e){c=!0,i=e},f:function(){try{s||null==r.return||r.return()}finally{if(c)throw i}}}}function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r0&&!e[i-1];)i--;var o,s=[{children:[],index:0}],c=s[0];for(r=0;r0;)c=s.pop();for(c.index++,s.push(c);s.length<=r;)s.push(o={children:[],index:0}),c.children[c.index]=o.children,c=o;a++}r+19&&void 0!==arguments[9]&&arguments[9],d=r.mcusPerLine,p=r.progressive,b=t,w=0,k=0;function S(){if(k>0)return k--,w>>k&1;if(255===(w=e[t++])){var n=e[t++];if(n){if(220===n&&h){t+=2;var i=(0,a.readUint16)(e,t);if(t+=2,i>0&&i!==r.scanLines)throw new v("Found DNL marker (0xFFDC) while parsing scan data",i)}else if(217===n){if(h){var o=I*(8===r.precision?8:0);if(o>0&&Math.round(r.scanLines/o)>=5)throw new v("Found EOI marker (0xFFD9) while parsing scan data, possibly caused by incorrect \`scanLines\` parameter",o)}throw new y("Found EOI marker (0xFFD9) while parsing scan data")}throw new g("unexpected marker ".concat((w<<8|n).toString(16)))}}return k=7,w>>>7}function x(e){for(var t=e;;){switch(s(t=t[S()])){case"number":return t;case"object":continue}throw new g("invalid huffman sequence")}}function O(e){for(var t=0;e>0;)t=t<<1|S(),e--;return t}function A(e){if(1===e)return 1===S()?1:-1;var t=O(e);return t>=1<0)F--;else for(var r=c,n=u;r<=n;){var a=x(e.huffmanTableAC),i=15&a,o=a>>4;if(0!==i){var s=m[r+=o];e.blockData[t+s]=A(i)*(1<>4,0==(r=15&n))o<15?(F=O(o)+(1<>4;if(0!==o){var c=m[a+=s];e.blockData[t+c]=A(o),a++}else{if(s<15)break;a+=16}}};var $,X,H,q,G=0;for(X=1===U?i[0].blocksPerLine*i[0].blocksPerColumn:d*r.mcusPerColumn;G<=X;){var z=o?Math.min(X-G,o):X;if(z>0){for(L=0;L0?"unexpected":"excessive";(0,n.warn)("decodeScan - ".concat(W," MCU data, current marker is: ").concat($.invalid)),t=$.offset}if(!($.marker>=65488&&$.marker<=65495))break;t+=2}return t-b}function I(e,t,r){var n,a,i,o,s,c,u,l,f,h,d,p,v,y,m,F,P,T=e.quantizationTable,I=e.blockData;if(!T)throw new g("missing required Quantization Table.");for(var E=0;E<64;E+=8)f=I[t+E],h=I[t+E+1],d=I[t+E+2],p=I[t+E+3],v=I[t+E+4],y=I[t+E+5],m=I[t+E+6],F=I[t+E+7],f*=T[E],0!=(h|d|p|v|y|m|F)?(h*=T[E+1],d*=T[E+2],p*=T[E+3],v*=T[E+4],y*=T[E+5],m*=T[E+6],F*=T[E+7],a=(n=(n=A*f+128>>8)+(a=A*v+128>>8)+1>>1)-a,P=(i=d)*O+(o=m)*x+128>>8,i=i*x-o*O+128>>8,u=(s=(s=C*(h-F)+128>>8)+(u=y<<4)+1>>1)-u,c=(l=(l=C*(h+F)+128>>8)+(c=p<<4)+1>>1)-c,o=(n=n+(o=P)+1>>1)-o,i=(a=a+i+1>>1)-i,P=s*S+l*k+2048>>12,s=s*k-l*S+2048>>12,l=P,P=c*w+u*b+2048>>12,c=c*b-u*w+2048>>12,u=P,r[E]=n+l,r[E+7]=n-l,r[E+1]=a+u,r[E+6]=a-u,r[E+2]=i+c,r[E+5]=i-c,r[E+3]=o+s,r[E+4]=o-s):(P=A*f+512>>10,r[E]=P,r[E+1]=P,r[E+2]=P,r[E+3]=P,r[E+4]=P,r[E+5]=P,r[E+6]=P,r[E+7]=P);for(var j=0;j<8;++j)f=r[j],0!=((h=r[j+8])|(d=r[j+16])|(p=r[j+24])|(v=r[j+32])|(y=r[j+40])|(m=r[j+48])|(F=r[j+56]))?(a=(n=4112+((n=A*f+2048>>12)+(a=A*v+2048>>12)+1>>1))-a,P=(i=d)*O+(o=m)*x+2048>>12,i=i*x-o*O+2048>>12,o=P,u=(s=(s=C*(h-F)+2048>>12)+(u=y)+1>>1)-u,c=(l=(l=C*(h+F)+2048>>12)+(c=p)+1>>1)-c,P=s*S+l*k+2048>>12,s=s*k-l*S+2048>>12,l=P,P=c*w+u*b+2048>>12,c=c*b-u*w+2048>>12,(f=(n=n+o+1>>1)+l)<16?f=0:f>=4080?f=255:f>>=4,(h=(a=a+i+1>>1)+(u=P))<16?h=0:h>=4080?h=255:h>>=4,(d=(i=a-i)+c)<16?d=0:d>=4080?d=255:d>>=4,(p=(o=n-o)+s)<16?p=0:p>=4080?p=255:p>>=4,(v=o-s)<16?v=0:v>=4080?v=255:v>>=4,(y=i-c)<16?y=0:y>=4080?y=255:y>>=4,(m=a-u)<16?m=0:m>=4080?m=255:m>>=4,(F=n-l)<16?F=0:F>=4080?F=255:F>>=4,I[t+j]=f,I[t+j+8]=h,I[t+j+16]=d,I[t+j+24]=p,I[t+j+32]=v,I[t+j+40]=y,I[t+j+48]=m,I[t+j+56]=F):(P=(P=A*f+8192>>14)<-2040?0:P>=2024?255:P+2056>>4,I[t+j]=P,I[t+j+8]=P,I[t+j+16]=P,I[t+j+24]=P,I[t+j+32]=P,I[t+j+40]=P,I[t+j+48]=P,I[t+j+56]=P)}function E(e,t){for(var r=t.blocksPerLine,n=t.blocksPerColumn,a=new Int16Array(64),i=0;i2&&void 0!==arguments[2]?arguments[2]:t,n=e.length-1,i=r=n)return null;var o=(0,a.readUint16)(e,t);if(o>=65472&&o<=65534)return{invalid:null,marker:o,offset:t};for(var s=(0,a.readUint16)(e,i);!(s>=65472&&s<=65534);){if(++i>=n)return null;s=(0,a.readUint16)(e,i)}return{invalid:o.toString(16),marker:s,offset:i}}var M=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=t.decodeTransform,n=void 0===r?null:r,a=t.colorTransform,i=void 0===a?-1:a;l(this,e),this._decodeTransform=n,this._colorTransform=i}return u(e,[{key:"parse",value:function(e){var t=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).dnlScanLines,r=void 0===t?null:t;function o(){var t=(0,a.readUint16)(e,l),r=(l+=2)+t-2,i=j(e,r,l);i&&i.invalid&&((0,n.warn)("readDataBlock - incorrect length, current marker is: "+i.invalid),r=i.offset);var o=e.subarray(l,r);return l+=o.length,o}function s(e){var t,r=Math.ceil(e.samplesPerLine/8/e.maxH),n=Math.ceil(e.scanLines/8/e.maxV),a=i(e.components);try{for(a.s();!(t=a.n()).done;){var o=t.value,s=Math.ceil(Math.ceil(e.samplesPerLine/8)*o.h/e.maxH),c=Math.ceil(Math.ceil(e.scanLines/8)*o.v/e.maxV),u=r*o.h,l=n*o.v*64*(u+1);o.blockData=new Int16Array(l),o.blocksPerLine=s,o.blocksPerColumn=c}}catch(e){a.e(e)}finally{a.f()}e.mcusPerLine=r,e.mcusPerColumn=n}var c,u,l=0,f=null,h=null,d=0,p=[],b=[],w=[],k=(0,a.readUint16)(e,l);if(l+=2,65496!==k)throw new g("SOI not found");k=(0,a.readUint16)(e,l),l+=2;e:for(;65497!==k;){var S=void 0,x=void 0,O=void 0;switch(k){case 65504:case 65505:case 65506:case 65507:case 65508:case 65509:case 65510:case 65511:case 65512:case 65513:case 65514:case 65515:case 65516:case 65517:case 65518:case 65519:case 65534:var A=o();65504===k&&74===A[0]&&70===A[1]&&73===A[2]&&70===A[3]&&0===A[4]&&(f={version:{major:A[5],minor:A[6]},densityUnits:A[7],xDensity:A[8]<<8|A[9],yDensity:A[10]<<8|A[11],thumbWidth:A[12],thumbHeight:A[13],thumbData:A.subarray(14,14+3*A[12]*A[13])}),65518===k&&65===A[0]&&100===A[1]&&111===A[2]&&98===A[3]&&101===A[4]&&(h={version:A[5]<<8|A[6],flags0:A[7]<<8|A[8],flags1:A[9]<<8|A[10],transformCode:A[11]});break;case 65499:for(var C=(0,a.readUint16)(e,l)+(l+=2)-2;l>4==0)for(x=0;x<64;x++)I[m[x]]=e[l++];else{if(P>>4!=1)throw new g("DQT - invalid table spec");for(x=0;x<64;x++)I[m[x]]=(0,a.readUint16)(e,l),l+=2}p[15&P]=I}break;case 65472:case 65473:case 65474:if(c)throw new g("Only single frame JPEGs supported");l+=2,(c={}).extended=65473===k,c.progressive=65474===k,c.precision=e[l++];var M=(0,a.readUint16)(e,l);l+=2,c.scanLines=r||M,c.samplesPerLine=(0,a.readUint16)(e,l),l+=2,c.components=[],c.componentIds={};var _=e[l++],L=0,R=0;for(S=0;S<_;S++){var N=e[l],D=e[l+1]>>4,B=15&e[l+1];L>4==0?w:b)[15&X]=F(H,G)}break;case 65501:l+=2,u=(0,a.readUint16)(e,l),l+=2;break;case 65498:var z=1==++d&&!r;l+=2;var W=e[l++],V=[];for(S=0;S>4],J.huffmanTableAC=b[15&Z],V.push(J)}var Q=e[l++],ee=e[l++],te=e[l++];try{var re=T(e,l,c,V,u,Q,ee,te>>4,15&te,z);l+=re}catch(t){if(t instanceof v)return(0,n.warn)("".concat(t.message," -- attempting to re-parse the JPEG image.")),this.parse(e,{dnlScanLines:t.scanLines});if(t instanceof y){(0,n.warn)("".concat(t.message," -- ignoring the rest of the image data."));break e}throw t}break;case 65500:l+=4;break;case 65535:255!==e[l]&&l--;break;default:var ne=j(e,l-2,l-3);if(ne&&ne.invalid){(0,n.warn)("JpegImage.parse - unexpected data, current marker is: "+ne.invalid),l=ne.offset;break}if(!ne||l>=e.length-1){(0,n.warn)("JpegImage.parse - reached the end of the image data without finding an EOI marker (0xFFD9).");break e}throw new g("JpegImage.parse - unknown marker: "+k.toString(16))}k=(0,a.readUint16)(e,l),l+=2}this.width=c.samplesPerLine,this.height=c.scanLines,this.jfif=f,this.adobe=h,this.components=[];var ae,ie=i(c.components);try{for(ie.s();!(ae=ie.n()).done;){var oe=ae.value,se=p[oe.quantizationId];se&&(oe.quantizationTable=se),this.components.push({index:oe.index,output:E(0,oe),scaleX:oe.h/c.maxH,scaleY:oe.v/c.maxV,blocksPerLine:oe.blocksPerLine,blocksPerColumn:oe.blocksPerColumn})}}catch(e){ie.e(e)}finally{ie.f()}this.numComponents=this.components.length}},{key:"_getLinearizedBlockData",value:function(e,t){var r,n,a,i,o,s,c,u,l,f,h,d,p=arguments.length>2&&void 0!==arguments[2]&&arguments[2],g=this.width/e,v=this.height/t,y=0,m=this.components.length,b=e*t*m,w=new Uint8ClampedArray(b),k=new Uint32Array(e),S=4294967288;for(c=0;c>8)+x[l+1];return w}},{key:"_isColorConversionNeeded",get:function(){return this.adobe?!!this.adobe.transformCode:3===this.numComponents?0!==this._colorTransform&&(82!==this.components[0].index||71!==this.components[1].index||66!==this.components[2].index):1===this._colorTransform}},{key:"_convertYccToRgb",value:function(e){for(var t,r,n,a=0,i=e.length;a4)throw new g("Unsupported color mode");var c=this._getLinearizedBlockData(t,r,s);if(1===this.numComponents&&a){var u,l=new Uint8ClampedArray(3*c.length),f=0,h=i(c);try{for(h.s();!(u=h.n()).done;){var d=u.value;l[f++]=d,l[f++]=d,l[f++]=d}}catch(e){h.e(e)}finally{h.f()}return l}if(3===this.numComponents&&this._isColorConversionNeeded)return this._convertYccToRgb(c);if(4===this.numComponents){if(this._isColorConversionNeeded)return a?this._convertYcckToRgb(c):this._convertYcckToCmyk(c);if(a)return this._convertCmykToRgb(c)}return c}}]),e}();t.JpegImage=M},(e,t,r)=>{function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.JpxStream=void 0;var a=r(148),i=r(159),o=r(2);function s(e,t){for(var r=0;r{function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.JpxImage=void 0;var a=r(2),i=r(135),o=r(155);function s(e,t){for(var r=0;r>24&255,s>>16&255,s>>8&255,255&s);(0,a.warn)("Unsupported header type ".concat(s," (").concat(h,")."))}u&&(r+=c)}else this.parseCodestream(e,0,e.length)}},{key:"parseImageProperties",value:function(e){for(var t=e.getByte();t>=0;)if(65361==(t<<8|(t=e.getByte()))){e.skip(4);var r=e.getInt32()>>>0,n=e.getInt32()>>>0,a=e.getInt32()>>>0,i=e.getInt32()>>>0;e.skip(16);var o=e.getUint16();return this.width=r-a,this.height=n-i,this.componentsCount=o,void(this.bitsPerComponent=8)}throw new p("No size marker found in JPX stream")}},{key:"parseCodestream",value:function(e,t,r){var n={},o=!1;try{for(var s=t;s+1>5,h=[];l>3,A.mu=0):(A.epsilon=e[l]>>3,A.mu=(7&e[l])<<8|e[l+1],l+=2),h.push(A)}O.SPqcds=h,n.mainHeader?n.QCD=O:(n.currentTile.QCD=O,n.currentTile.QCC=[]);break;case 65373:u=(0,i.readUint16)(e,s);var C={};l=s+2;var F=void 0;switch(n.SIZ.Csiz<257?F=e[l++]:(F=(0,i.readUint16)(e,l),l+=2),31&(f=e[l++])){case 0:d=8,g=!0;break;case 1:d=16,g=!1;break;case 2:d=16,g=!0;break;default:throw new Error("Invalid SQcd value "+f)}for(C.noQuantization=8===d,C.scalarExpounded=g,C.guardBits=f>>5,h=[];l>3,P.mu=0):(P.epsilon=e[l]>>3,P.mu=(7&e[l])<<8|e[l+1],l+=2),h.push(P)}C.SPqcds=h,n.mainHeader?n.QCC[F]=C:n.currentTile.QCC[F]=C;break;case 65362:u=(0,i.readUint16)(e,s);var T={};l=s+2;var j=e[l++];T.entropyCoderWithCustomPrecincts=!!(1&j),T.sopMarkerUsed=!!(2&j),T.ephMarkerUsed=!!(4&j),T.progressionOrder=e[l++],T.layersCount=(0,i.readUint16)(e,l),l+=2,T.multipleComponentTransform=e[l++],T.decompositionLevelsCount=e[l++],T.xcb=2+(15&e[l++]),T.ycb=2+(15&e[l++]);var L=e[l++];if(T.selectiveArithmeticCodingBypass=!!(1&L),T.resetContextProbabilities=!!(2&L),T.terminationOnEachCodingPass=!!(4&L),T.verticallyStripe=!!(8&L),T.predictableTermination=!!(16&L),T.segmentationSymbolUsed=!!(32&L),T.reversibleTransformation=e[l++],T.entropyCoderWithCustomPrecincts){for(var R=[];l>4})}T.precinctsSizes=R}var D=[];T.selectiveArithmeticCodingBypass&&D.push("selectiveArithmeticCodingBypass"),T.terminationOnEachCodingPass&&D.push("terminationOnEachCodingPass"),T.verticallyStripe&&D.push("verticallyStripe"),T.predictableTermination&&D.push("predictableTermination"),D.length>0&&(o=!0,(0,a.warn)("JPX: Unsupported COD options (".concat(D.join(", "),")."))),n.mainHeader?n.COD=T:(n.currentTile.COD=T,n.currentTile.COC=[]);break;case 65424:u=(0,i.readUint16)(e,s),(v={}).index=(0,i.readUint16)(e,s+2),v.length=(0,i.readUint32)(e,s+4),v.dataEnd=v.length+s-2,v.partIndex=e[s+8],v.partsCount=e[s+9],n.mainHeader=!1,0===v.partIndex&&(v.COD=n.COD,v.COC=n.COC.slice(0),v.QCD=n.QCD,v.QCC=n.QCC.slice(0)),n.currentTile=v;break;case 65427:0===(v=n.currentTile).partIndex&&(_(n,v.index),I(n)),E(n,e,s,u=v.dataEnd-s);break;case 65363:(0,a.warn)("JPX: Codestream code 0xFF53 (COC) is not implemented.");case 65365:case 65367:case 65368:case 65380:u=(0,i.readUint16)(e,s);break;default:throw new Error("Unknown codestream code: "+c.toString(16))}s+=u}}catch(e){if(o||this.failOnCorruptedImage)throw new p(e.message);(0,a.warn)('JPX: Trying to recover from: "'.concat(e.message,'".'))}this.tiles=function(e){for(var t=e.SIZ,r=e.components,n=t.Csiz,a=[],i=0,o=e.tiles.length;i>2);f[g++]=P+w>>d,f[g++]=P>>d,f[g++]=P+b>>d}else for(v=0;v>d,f[g++]=m-.34413*b-.71414*w>>d,f[g++]=m+1.772*b>>d;if(k)for(v=0,g=3;v>d}else for(var T=0;T>d,g+=n}a.push(h)}return a}(n),this.width=n.SIZ.Xsiz-n.SIZ.XOsiz,this.height=n.SIZ.Ysiz-n.SIZ.YOsiz,this.componentsCount=n.SIZ.Csiz}}]),e}();function y(e,t){e.x0=Math.ceil(t.XOsiz/e.XRsiz),e.x1=Math.ceil(t.Xsiz/e.XRsiz),e.y0=Math.ceil(t.YOsiz/e.YRsiz),e.y1=Math.ceil(t.Ysiz/e.YRsiz),e.width=e.x1-e.x0,e.height=e.y1-e.y0}function m(e,t){for(var r,n=e.SIZ,a=[],i=Math.ceil((n.Xsiz-n.XTOsiz)/n.XTsiz),o=Math.ceil((n.Ysiz-n.YTOsiz)/n.YTsiz),s=0;s0?Math.min(n.xcb,a.PPx-1):Math.min(n.xcb,a.PPx),a.ycb_=r>0?Math.min(n.ycb,a.PPy-1):Math.min(n.ycb,a.PPy),a}function w(e,t,r){var n=1<t.trx0?Math.ceil(t.trx1/n)-Math.floor(t.trx0/n):0,u=t.try1>t.try0?Math.ceil(t.try1/a)-Math.floor(t.try0/a):0,l=c*u;t.precinctParameters={precinctWidth:n,precinctHeight:a,numprecinctswide:c,numprecinctshigh:u,numprecincts:l,precinctWidthInSubband:o,precinctHeightInSubband:s}}function k(e,t,r){var n,a,i,o,s=r.xcb_,c=r.ycb_,u=1<>s,h=t.tby0>>c,d=t.tbx1+u-1>>s,p=t.tby1+l-1>>c,g=t.resolution.precinctParameters,v=[],y=[];for(a=h;am.cbxMax&&(m.cbxMax=n),am.cbyMax&&(m.cbyMax=a)):y[o]=m={cbxMin:n,cbyMin:a,cbxMax:n,cbyMax:a},i.precinct=m}t.codeblockParameters={codeblockWidth:s,codeblockHeight:c,numcodeblockwide:d-f+1,numcodeblockhigh:p-h+1},t.codeblocks=v,t.precincts=y}function S(e,t,r){for(var n=[],a=e.subbands,i=0,o=a.length;ie.codingStyleParameters.decompositionLevelsCount)){for(var t=e.resolutions[u],r=t.precinctParameters.numprecincts;fe.codingStyleParameters.decompositionLevelsCount)){for(var t=e.resolutions[c],r=t.precinctParameters.numprecincts;fe.codingStyleParameters.decompositionLevelsCount)){var i=e.resolutions[r],o=i.precinctParameters.numprecincts;if(!(a>=o)){for(;t=0;--v){var y=c.resolutions[v],m=g*y.precinctParameters.precinctWidth,b=g*y.precinctParameters.precinctHeight;f=Math.min(f,m),h=Math.min(h,b),d=Math.max(d,y.precinctParameters.numprecinctswide),p=Math.max(p,y.precinctParameters.numprecinctshigh),l[v]={width:m,height:b},g<<=1}r=Math.min(r,f),n=Math.min(n,h),a=Math.max(a,d),i=Math.max(i,p),o[s]={resolutions:l,minWidth:f,minHeight:h,maxNumWide:d,maxNumHigh:p}}return{components:o,minWidth:r,minHeight:n,maxNumWide:a,maxNumHigh:i}}function I(e){for(var t=e.SIZ,r=e.currentTile.index,n=e.tiles[r],a=t.Csiz,i=0;i>>(s-=e)&(1<0;){var $=S.shift();void 0===(x=$.codeblock).data&&(x.data=[]),x.data.push({data:t,start:r+o,end:r+o+$.dataLength,codingpasses:$.codingpasses}),o+=$.dataLength}}}return o}function j(e,t,r,n,a,i,s,c,u){for(var l=n.tbx0,f=n.tby0,h=n.tbx1-n.tbx0,d=n.codeblocks,p="H"===n.type.charAt(0)?1:0,g="H"===n.type.charAt(1)?t:0,v=0,y=d.length;v=i?B:B*(1<0?1-m:0));var F=b.subbands[x],P=g[F.type];j(S,w,0,F,d?1:Math.pow(2,h+P-C)*(1+A/2048),u+C-1,d,l,f)}v.push({width:w,height:k,items:S})}var T=p.calculate(v,n.tcx0,n.tcy0);return{left:n.tcx0,top:n.tcy0,width:T.width,height:T.height,items:T.items}}function _(e,t){for(var r=e.SIZ.Csiz,n=e.tiles[t],a=0;a>=1,t>>=1,n++}n--,(r=this.levels[n]).items[r.index]=a,this.currentLevel=n,delete this.value}},{key:"incrementValue",value:function(){var e=this.levels[this.currentLevel];e.items[e.index]++}},{key:"nextLevel",value:function(){var e=this.currentLevel,t=this.levels[e],r=t.items[t.index];return--e<0?(this.value=r,!1):(this.currentLevel=e,(t=this.levels[e]).items[t.index]=r,!0)}}]),e}(),U=function(){function e(t,r,n){u(this,e);var a=(0,i.log2)(Math.max(t,r))+1;this.levels=[];for(var o=0;or)return this.currentLevel=n,this.propagateValues(),!1;e>>=1,t>>=1,n++}return this.currentLevel=n-1,!0}},{key:"incrementValue",value:function(e){var t=this.levels[this.currentLevel];t.items[t.index]=e+1,this.propagateValues()}},{key:"propagateValues",value:function(){for(var e=this.currentLevel,t=this.levels[e],r=t.items[t.index];--e>=0;)(t=this.levels[e]).items[t.index]=r}},{key:"nextLevel",value:function(){var e=this.currentLevel,t=this.levels[e],r=t.items[t.index];return t.items[t.index]=255,!(--e<0||(this.currentLevel=e,(t=this.levels[e]).items[t.index]=r,0))}}]),e}(),$=(L=17,R=new Uint8Array([0,5,8,0,3,7,8,0,4,7,8,0,0,0,0,0,1,6,8,0,3,7,8,0,4,7,8,0,0,0,0,0,2,6,8,0,3,7,8,0,4,7,8,0,0,0,0,0,2,6,8,0,3,7,8,0,4,7,8,0,0,0,0,0,2,6,8,0,3,7,8,0,4,7,8]),N=new Uint8Array([0,3,4,0,5,7,7,0,8,8,8,0,0,0,0,0,1,3,4,0,6,7,7,0,8,8,8,0,0,0,0,0,2,3,4,0,6,7,7,0,8,8,8,0,0,0,0,0,2,3,4,0,6,7,7,0,8,8,8,0,0,0,0,0,2,3,4,0,6,7,7,0,8,8,8]),D=new Uint8Array([0,1,2,0,1,2,2,0,2,2,2,0,0,0,0,0,3,4,5,0,4,5,5,0,5,5,5,0,0,0,0,0,6,7,7,0,7,7,7,0,7,7,7,0,0,0,0,0,8,8,8,0,8,8,8,0,8,8,8,0,0,0,0,0,8,8,8,0,8,8,8,0,8,8,8]),function(){function e(t,r,n,a,i){var o;u(this,e),this.width=t,this.height=r,o="HH"===n?D:"HL"===n?N:R,this.contextLabelTable=o;var s,c=t*r;this.neighborsSignificance=new Uint8Array(c),this.coefficentsSign=new Uint8Array(c),s=i>14?new Uint32Array(c):i>6?new Uint16Array(c):new Uint8Array(c),this.coefficentsMagnitude=s,this.processingFlags=new Uint8Array(c);var l=new Uint8Array(c);if(0!==a)for(var f=0;f0,c=t+10&&(n=r-i,s&&(a[n-1]+=16),c&&(a[n+1]+=16),a[n]+=4),e+1=r)break;if(o[h]&=-2,!n[h]&&i[h]){var g=c[i[h]];if(e.readBit(s,g)){var v=this.decodeSignBit(p,f,h);a[h]=v,n[h]=1,this.setNeighborsSignificance(p,f,h),o[h]|=2}u[h]++,o[h]|=1}}}},{key:"decodeSignBit",value:function(e,t,r){var n,a,i,o,s,c,u=this.width,l=this.height,f=this.coefficentsMagnitude,h=this.coefficentsSign;o=t>0&&0!==f[r-1],t+10&&0!==f[r-u],e+1=0?(s=9+n,c=this.decoder.readBit(this.contexts,s)):(s=9-n,c=1^this.decoder.readBit(this.contexts,s)),c}},{key:"runMagnitudeRefinementPass",value:function(){for(var e,t=this.decoder,r=this.width,n=this.height,a=this.coefficentsMagnitude,i=this.neighborsSignificance,o=this.contexts,s=this.bitsDecoded,c=this.processingFlags,u=r*n,l=4*r,f=0;f>1,c=-1.586134342059924,u=-.052980118572961,l=.882911075530934,f=.443506852043971,h=1.230174104914001;for(n=(t|=0)-3,a=s+4;a--;n+=2)e[n]*=.8128930661159609;for(i=f*e[(n=t-2)-1],a=s+3;a--&&(o=f*e[n+1],e[n]=h*e[n]-i-o,a--);n+=2)i=f*e[(n+=2)+1],e[n]=h*e[n]-i-o;for(i=l*e[(n=t-1)-1],a=s+2;a--&&(o=l*e[n+1],e[n]-=i+o,a--);n+=2)i=l*e[(n+=2)+1],e[n]-=i+o;for(i=u*e[(n=t)-1],a=s+1;a--&&(o=u*e[n+1],e[n]-=i+o,a--);n+=2)i=u*e[(n+=2)+1],e[n]-=i+o;if(0!==s)for(i=c*e[(n=t+1)-1],a=s;a--&&(o=c*e[n+1],e[n]-=i+o,a--);n+=2)i=c*e[(n+=2)+1],e[n]-=i+o}}]),r}(X),q=function(e){l(r,e);var t=h(r);function r(){return u(this,r),t.apply(this,arguments)}return c(r,[{key:"filter",value:function(e,t,r){var n,a,i=r>>1;for(n=t|=0,a=i+1;a--;n+=2)e[n]-=e[n-1]+e[n+1]+2>>2;for(n=t+1,a=i;a--;n+=2)e[n]+=e[n-1]+e[n+1]>>1}}]),r}(X)},(e,t,r)=>{function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}function a(e,t){for(var r=0;r>>t&(1<0;if(y<256)h[0]=y,d=1;else{if(!(y>=258)){if(256===y){l=9,o=258,d=0;continue}this.eof=!0,delete this.lzwState;break}if(y=0;t--)h[t]=s[r],r=u[r];else h[d++]=h[0]}if(m&&(u[o]=f,c[o]=c[f]+1,s[o]=h[0],l=++o+i&o+i-1?l:0|Math.min(Math.log(o+i)/.6931471805599453+1,12)),f=y,n<(p+=d)){do{n+=512}while(n{function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.PredictorStream=void 0;var a=r(148),i=r(134),o=r(2);function s(e,t){for(var r=0;r15))throw new o.FormatError("Unsupported predictor: ".concat(a));n.readBlock=2===a?n.readBlockTiff:n.readBlockPng,n.str=e,n.dict=e.dict;var s=n.colors=r.get("Colors")||1,c=n.bits=r.get("BPC","BitsPerComponent")||8,f=n.columns=r.get("Columns")||1;return n.pixBytes=s*c+7>>3,n.rowBytes=f*s*c+7>>3,u(n,l(n))}return t=d,(r=[{key:"readBlockTiff",value:function(){var e=this.rowBytes,t=this.bufferLength,r=this.ensureBuffer(t+e),n=this.bits,a=this.colors,i=this.str.getBytes(e);if(this.eof=!i.length,!this.eof){var o,s=0,c=0,u=0,l=0,f=t;if(1===n&&1===a)for(o=0;o>1,h^=h>>2,s=(1&(h^=h>>4))<<7,r[f++]=h}else if(8===n){for(o=0;o>8&255,r[f++]=255&p}}else{var g=new Uint8Array(a+1),v=(1<>u-n)&v,u-=n,c=c<=8&&(r[m++]=c>>l-8&255,l-=8);l>0&&(r[m++]=(c<<8-l)+(s&(1<<8-l)-1))}this.bufferLength+=e}}},{key:"readBlockPng",value:function(){var e=this.rowBytes,t=this.pixBytes,r=this.str.getByte(),n=this.str.getBytes(e);if(this.eof=!n.length,!this.eof){var a=this.bufferLength,i=this.ensureBuffer(a+e),s=i.subarray(a-e,a);0===s.length&&(s=new Uint8Array(e));var c,u,l,f=a;switch(r){case 0:for(c=0;c>1)+n[c];for(;c>1)+n[c]&255,f++;break;case 4:for(c=0;c{function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}function a(e,t){for(var r=0;r0){var a=this.str.getBytes(n);t.set(a,r),r+=n}}else{n=257-n;var i=e[1];t=this.ensureBuffer(r+n+1);for(var o=0;o{Object.defineProperty(t,"__esModule",{value:!0}),t.Font=t.ErrorFont=void 0;var n=r(2),a=r(164),i=r(167),o=r(169),s=r(168),c=r(166),u=r(170),l=r(171),f=r(172),h=r(173),d=r(174),p=r(175),g=r(145),v=r(176),y=r(135),m=r(139),b=r(177);function w(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,o,s=[],c=!0,u=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){u=!0,a=e}finally{try{if(!c&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(u)throw a}}return s}}(e,t)||S(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function k(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=S(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,a=function(){};return{s:a,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return o=e.done,e},e:function(e){s=!0,i=e},f:function(){try{o||null==r.return||r.return()}finally{if(s)throw i}}}}function S(e,t){if(e){if("string"==typeof e)return x(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?x(e,t):void 0}}function x(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r0&&e.toUnicode.amend(t)}}var _=function(){function e(t,r,n,a,i,o,s,c,u){A(this,e),this.originalCharCode=t,this.fontChar=r,this.unicode=n,this.accent=a,this.width=i,this.vmetric=o,this.operatorListId=s,this.isSpace=c,this.isInFont=u}return F(e,[{key:"category",get:function(){return(0,n.shadow)(this,"category",(0,o.getCharUnicodeCategory)(this.unicode),!0)}},{key:"normalizedUnicode",get:function(){return(0,n.shadow)(this,"normalizedUnicode",(0,o.reverseIfRtl)(e._NormalizedUnicodes[this.unicode]||this.unicode),!0)}}],[{key:"_NormalizedUnicodes",get:function(){return(0,n.shadow)(this,"_NormalizedUnicodes",(0,o.getNormalizedUnicodes)())}}]),e}();function L(e,t){return(e<<8)+t}function R(e,t,r){e[t+1]=r,e[t]=r>>>8}function N(e,t){var r=(e<<8)+t;return 32768&r?r-65536:r}function D(e){return String.fromCharCode(e>>8&255,255&e)}function B(e){return e>32767?e=32767:e<-32768&&(e=-32768),String.fromCharCode(e>>8&255,255&e)}function U(e){var t=e.peekBytes(4);return"ttcf"===(0,n.bytesToString)(t)}function $(e,t){for(var r in t)e[+r]=t[r]}function X(e,t,r){for(var n,a=[],i=0,s=e.length;i2&&void 0!==arguments[2]&&arguments[2];switch(t.length){case 1:return t.charCodeAt(0);case 2:return t.charCodeAt(0)<<8|t.charCodeAt(1)}var a="Unsupported CID string (charCode ".concat(e,'): "').concat(t,'".');if(r)throw new n.FormatError(a);return(0,n.warn)(a),t}function q(e,t,r,a){var i=Object.create(null),o=new Map,s=[],c=new Set,u=0,l=P[u][0],f=l,h=P[u][1];for(var d in e){var p=e[d|=0];if(t(p)){if(f>h){if(++u>=P.length){(0,n.warn)("Ran out of space in font private use area.");break}f=P[u][0],h=P[u][1]}var g=f++;0===p&&(p=r);var v=a.get(d);"string"==typeof v&&(v=v.codePointAt(0)),v&&v=r||n.push({fontCharCode:0|a,glyphId:e[a]});if(t){var i,o=k(t);try{for(o.s();!(i=o.n()).done;){var s=w(i.value,2),c=s[0],u=s[1];u>=r||n.push({fontCharCode:c,glyphId:u})}}catch(e){o.e(e)}finally{o.f()}}0===n.length&&n.push({fontCharCode:0,glyphId:0}),n.sort((function(e,t){return e.fontCharCode-t.fontCharCode}));for(var l=[],f=n.length,h=0;h65535?2:1,l="\\0\\0"+D(u)+"\\0\\0"+(0,n.string32)(4+8*u);for(a=c.length-1;a>=0&&!(c[a][0]<=65535);--a);var f=a+1;c[a][0]<65535&&65535===c[a][1]&&(c[a][1]=65534);var h,d,p,g,y=c[a][1]<65535?1:0,m=f+y,b=v.OpenTypeFileBuilder.getSearchParams(m,2),S="",x="",O="",A="",C="",F=0;for(a=0,i=f;a0&&(x+="ÿÿ",S+="ÿÿ",O+="\\0",A+="\\0\\0");var I="\\0\\0"+D(2*m)+D(b.range)+D(b.entry)+D(b.rangeShift)+x+"\\0\\0"+S+O+A+C,E="",j="";if(u>1){for(l+="\\0\\0\\n"+(0,n.string32)(4+8*u+4+I.length),E="",a=0,i=c.length;a(f|=0)||!u)&&(u=f),l 123 are reserved for internal usage");c|=1<65535&&(l=65535)}else u=0,l=255;var d=e.bbox||[0,0,0,0],p=r.unitsPerEm||1/(e.fontMatrix||n.FONT_IDENTITY_MATRIX)[0],g=e.ascentScaled?1:p/T,v=r.ascent||Math.round(g*(e.ascent||d[3])),y=r.descent||Math.round(g*(e.descent||d[1]));y>0&&e.descent>0&&d[1]<0&&(y=-y);var m=r.yMax||v,b=-r.yMin||-y;return"\\0$ô\\0\\0\\0Š»\\0\\0\\0ŒŠ»\\0\\0ß\\x001\\0\\0\\0\\0"+String.fromCharCode(e.fixedPitch?9:0)+"\\0\\0\\0\\0\\0\\0"+(0,n.string32)(a)+(0,n.string32)(i)+(0,n.string32)(s)+(0,n.string32)(c)+"*21*"+D(e.italicAngle?1:0)+D(u||e.firstChar)+D(l||e.lastChar)+D(v)+D(y)+"\\0d"+D(m)+D(b)+"\\0\\0\\0\\0\\0\\0\\0\\0"+D(e.xHeight)+D(e.capHeight)+D(0)+D(u||e.firstChar)+"\\0"}function W(e){var t=Math.floor(e.italicAngle*Math.pow(2,16));return"\\0\\0\\0"+(0,n.string32)(t)+"\\0\\0\\0\\0"+(0,n.string32)(e.fixedPitch?1:0)+"\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0"}function V(e){return e.replace(/[^\\x21-\\x7E]|[[\\](){}<>/%]/g,"").slice(0,63)}function Y(e,t){t||(t=[[],[]]);var r,n,a,i,o,s=[t[0][0]||"Original licence",t[0][1]||e,t[0][2]||"Unknown",t[0][3]||"uniqueID",t[0][4]||e,t[0][5]||"Version 0.11",t[0][6]||V(e),t[0][7]||"Unknown",t[0][8]||"Unknown",t[0][9]||"Unknown"],c=[];for(r=0,n=s.length;r=1&&t[3]>=1&&t[3]<=4}(e)?s?(r="CIDFontType0",a="CIDFontType0C"):(r="MMType1"===i?"MMType1":"Type1",a="Type1C"):((0,n.warn)("getFontFileType: Unable to detect correct font file Type/Subtype."),r=i,a=o),[r,a]}(r,a),2);d=m[0],p=m[1],d===this.type&&p===this.subtype||(0,n.info)("Inconsistent font file Type/SubType, expected: "+"".concat(this.type,"/").concat(this.subtype," but found: ").concat(d,"/").concat(p,"."));try{switch(d){case"MMType1":(0,n.info)("MMType1 font ("+t+"), falling back to Type1.");case"Type1":case"CIDFontType0":this.mimetype="font/opentype";var S="Type1C"===p||"CIDFontType0C"===p?new f.CFFFont(r,a):new b.Type1Font(t,r,a);j(a),v=this.convert(t,S,a);break;case"OpenType":case"TrueType":case"CIDFontType2":this.mimetype="font/opentype",v=this.checkAndRepair(t,r,a),this.isOpenType&&(j(a),d="OpenType");break;default:throw new n.FormatError("Font ".concat(d," is not supported"))}}catch(e){return(0,n.warn)(e),void this.fallbackToSystemFont(a)}M(a),this.data=v,this.fontType=(0,i.getFontType)(d,p,a.isStandardFont),this.fontMatrix=a.fontMatrix,this.widths=a.widths,this.defaultWidth=a.defaultWidth,this.toUnicode=a.toUnicode,this.seacMap=a.seacMap}else{for(var x=0;x<256;x++)this.toFontChar[x]=this.differences[x]||a.defaultEncoding[x];this.fontType=n.FontType.TYPE3}}return F(e,[{key:"renderer",get:function(){var e=h.FontRendererFactory.create(this,i.SEAC_ANALYSIS_ENABLED);return(0,n.shadow)(this,"renderer",e)}},{key:"exportData",value:function(){var e,t,r,n=arguments.length>0&&void 0!==arguments[0]&&arguments[0]?[].concat(I,E):I,a=Object.create(null),i=k(n);try{for(i.s();!(r=i.n()).done;)void 0!==(t=this[e=r.value])&&(a[e]=t)}catch(e){i.e(e)}finally{i.f()}return a}},{key:"fallbackToSystemFont",value:function(e){var t=this;this.missingFile=!0;var r=this.name,a=this.type,f=this.subtype,h=(0,i.normalizeFontName)(r),p=(0,u.getStdFontMap)(),g=(0,u.getNonStdFontMap)(),v=!!p[h],y=!(!g[h]||!p[g[h]]);h=p[h]||g[h]||h;var m=(0,d.getFontBasicMetrics)()[h];m&&(isNaN(this.ascent)&&(this.ascent=m.ascent/T),isNaN(this.descent)&&(this.descent=m.descent/T),isNaN(this.capHeight)&&(this.capHeight=m.capHeight/T)),this.bold=/bold/gi.test(h),this.italic=/oblique|italic/gi.test(h),this.black=/Black/g.test(r);var b=/Narrow/g.test(r);if(this.remeasure=(!v||b)&&Object.keys(this.widths).length>0,(v||y)&&"CIDFontType2"===a&&this.cidEncoding.startsWith("Identity-")){var w=e.cidToGidMap,k=[];if($(k,(0,u.getGlyphMapForStandardFonts)()),/Arial-?Black/i.test(r)?$(k,(0,u.getSupplementalGlyphMapForArialBlack)()):/Calibri/i.test(r)&&$(k,(0,u.getSupplementalGlyphMapForCalibri)()),w){for(var S in k){var x=k[S];void 0!==w[x]&&(k[+S]=w[x])}w.length!==this.toUnicode.length&&e.hasIncludedToUnicodeMap&&this.toUnicode instanceof l.IdentityToUnicodeMap&&this.toUnicode.forEach((function(e,t){var r=k[e];void 0===w[r]&&(k[+e]=t)}))}this.toUnicode instanceof l.IdentityToUnicodeMap||this.toUnicode.forEach((function(e,t){k[+e]=t})),this.toFontChar=k,this.toUnicode=new l.ToUnicodeMap(k)}else if(/Symbol/i.test(h))this.toFontChar=X(c.SymbolSetEncoding,(0,s.getGlyphsUnicode)(),this.differences);else if(/Dingbats/i.test(h))/Wingdings/i.test(r)&&(0,n.warn)("Non-embedded Wingdings font, falling back to ZapfDingbats."),this.toFontChar=X(c.ZapfDingbatsEncoding,(0,s.getDingbatsGlyphsUnicode)(),this.differences);else if(v){var O=X(this.defaultEncoding,(0,s.getGlyphsUnicode)(),this.differences);"CIDFontType2"!==a||this.cidEncoding.startsWith("Identity-")||this.toUnicode instanceof l.IdentityToUnicodeMap||this.toUnicode.forEach((function(e,t){O[+e]=t})),this.toFontChar=O}else{var A=(0,s.getGlyphsUnicode)(),C=[];this.toUnicode.forEach((function(e,r){if(!t.composite){var n=t.differences[e]||t.defaultEncoding[e],a=(0,o.getUnicodeForGlyph)(n,A);-1!==a&&(r=a)}C[+e]=r})),this.composite&&this.toUnicode instanceof l.IdentityToUnicodeMap&&/Tahoma|Verdana/i.test(r)&&$(C,(0,u.getGlyphMapForStandardFonts)()),this.toFontChar=C}M(e),this.loadedName=h.split("-")[0],this.fontType=(0,i.getFontType)(a,f,e.isStandardFont)}},{key:"checkAndRepair",value:function(e,t,r){var o=["OS/2","cmap","head","hhea","hmtx","maxp","name","post","loca","glyf","fpgm","prep","cvt ","CFF "];function u(e,t){var r=Object.create(null);r["OS/2"]=null,r.cmap=null,r.head=null,r.hhea=null,r.hmtx=null,r.maxp=null,r.name=null,r.post=null;for(var n=0;n>>0,n=e.getInt32()>>>0,a=e.getInt32()>>>0,i=e.pos;e.pos=e.start||0,e.skip(n);var o=e.getBytes(a);return e.pos=i,"head"===t&&(o[8]=o[9]=o[10]=o[11]=0,o[17]|=32),{tag:t,checksum:r,length:a,offset:n,data:o}}function d(e){return{version:e.getString(4),numTables:e.getUint16(),searchRange:e.getUint16(),entrySelector:e.getUint16(),rangeShift:e.getUint16()}}function y(e,t,r,n,a,i){var o={length:0,sizeOfInstructions:0};if(r-t<=12)return o;var s=e.subarray(t,r),c=N(s[0],s[1]);if(c<0)return R(s,0,c=-1),n.set(s,a),o.length=s.length,o;var u,l=10,f=0;for(u=0;us.length?o:!i&&d>0?(n.set(s.subarray(0,h),a),n.set([0,0],a+h),n.set(s.subarray(p,k),a+h+2),k-=d,s.length-k>3&&(k=k+3&-4),o.length=k,o):s.length-k>3?(k=k+3&-4,n.set(s.subarray(0,k),a),o.length=k,o):(n.set(s,a),o.length=s.length,o)}function b(e){var r=(t.start||0)+e.offset;t.pos=r;var n=[[],[]],a=e.length,i=r+a;if(0!==t.getUint16()||a<6)return n;var o,s,c=t.getUint16(),u=t.getUint16(),l=[];for(o=0;oi)){t.pos=d;var p=h.name;if(h.encoding){for(var g="",v=0,y=h.length;v0&&(u+=k-1)}}else(v||m)&&((0,n.warn)("TT: nested FDEFs not allowed"),g=!0),v=!0,f=u,o=h.pop(),t.functionsDefined[o]={data:c,i:u};else if(!v&&!m)if(o=h.at(-1),isNaN(o))(0,n.info)("TT: CALL empty stack (or invalid entry).");else if(t.functionsUsed[o]=!0,o in t.functionsStackDeltas){var S=h.length+t.functionsStackDeltas[o];if(S<0)return(0,n.warn)("TT: CALL invalid functions stack delta."),void(t.hintsValid=!1);h.length=S}else if(o in t.functionsDefined&&!p.includes(o)){if(d.push({data:c,i:u,stackTop:h.length-1}),p.push(o),!(s=t.functionsDefined[o]))return(0,n.warn)("TT: CALL non-existent function"),void(t.hintsValid=!1);c=s.data,u=s.i}if(!v&&!m){var x=0;for(w<=142?x=A[w]:w>=192&&w<=223?x=-1:w>=224&&(x=-2),w>=113&&w<=117&&(a=h.pop(),isNaN(a)||(x=2*-a));x<0&&h.length>0;)h.pop(),x++;for(;x>0;)h.push(NaN),x--}}t.tooComplexToFollowFunctions=g;var O=[c];u>c.length&&O.push(new Uint8Array(u-c.length)),f>l&&((0,n.warn)("TT: complementing a missing function tail"),O.push(new Uint8Array([34,45]))),function(e,t){if(t.length>1){var r,n,a=0;for(r=0,n=t.length;r>>0,o=[],s=0;s>>0);var c={ttcTag:t,majorVersion:r,minorVersion:a,numFonts:i,offsetTable:o};switch(r){case 1:return c;case 2:return c.dsigTag=e.getInt32()>>>0,c.dsigLength=e.getInt32()>>>0,c.dsigOffset=e.getInt32()>>>0,c}throw new n.FormatError("Invalid TrueType Collection majorVersion: ".concat(r,"."))}(e),i=a.numFonts,o=a.offsetTable,s=t.split("+"),c=0;c0||!(r.cMap instanceof g.IdentityCMap));if("OTTO"===w.version&&!T||!S.head||!S.hhea||!S.maxp||!S.post)return O=new m.Stream(S["CFF "].data),x=new f.CFFFont(O,r),j(r),this.convert(e,x,r);delete S.glyf,delete S.loca,delete S.fpgm,delete S.prep,delete S["cvt "],this.isOpenType=!0}if(!S.maxp)throw new n.FormatError('Required "maxp" table is not found');t.pos=(t.start||0)+S.maxp.offset;var I=t.getInt32(),E=t.getUint16();if(r.scaleFactors&&r.scaleFactors.length===E&&P){var M=r.scaleFactors,_=L(S.head.data[50],S.head.data[51]),D=new p.GlyfTable({glyfTable:S.glyf.data,isGlyphLocationsLong:_,locaTable:S.loca.data,numGlyphs:E});D.scale(M);var B=D.write(),$=B.glyf,X=B.loca,V=B.isLocationLong;S.glyf.data=$,S.loca.data=X,V!==!!_&&(S.head.data[50]=0,S.head.data[51]=V?1:0);for(var K=S.hmtx.data,J=0;J>8&255,K[Z+1]=255&Q,R(K,Z+2,Math.round(M[J]*N(K[Z+2],K[Z+3])))}}var ee=E+1,te=!0;ee>65535&&(te=!1,ee=E,(0,n.warn)("Not enough space in glyfs to duplicate first glyph."));var re=0,ne=0;I>=65536&&S.maxp.length>=22&&(t.pos+=8,t.getUint16()>2&&(S.maxp.data[14]=0,S.maxp.data[15]=2),t.pos+=4,re=t.getUint16(),t.pos+=4,ne=t.getUint16()),S.maxp.data[4]=ee>>8,S.maxp.data[5]=255ⅇvar ae=function(e,t,r,a){var i={functionsDefined:[],functionsUsed:[],functionsStackDeltas:[],tooComplexToFollowFunctions:!1,hintsValid:!0};if(e&&C(e,i),t&&C(t,i),e&&function(e,t){if(!e.tooComplexToFollowFunctions){if(e.functionsDefined.length>t)return(0,n.warn)("TT: more functions defined than expected"),void(e.hintsValid=!1);for(var r=0,a=e.functionsUsed.length;rt)return(0,n.warn)("TT: invalid function id: "+r),void(e.hintsValid=!1);if(e.functionsUsed[r]&&!e.functionsDefined[r])return(0,n.warn)("TT: undefined function: "+r),void(e.hintsValid=!1)}}}(i,a),r&&1&r.length){var o=new Uint8Array(r.length+1);o.set(r.data),r.data=o}return i.hintsValid}(S.fpgm,S.prep,S["cvt "],re);if(ae||(delete S.fpgm,delete S.prep,delete S["cvt "]),function(e,t,r,a,i,o){if(t){e.pos=(e.start||0)+t.offset,e.pos+=4,e.pos+=2,e.pos+=2,e.pos+=2,e.pos+=2,e.pos+=2,e.pos+=2,e.pos+=2,e.pos+=2,e.pos+=2;var s=e.getUint16();e.pos+=8,e.pos+=2;var c=e.getUint16();0!==s&&(2&L(a.data[44],a.data[45])||(t.data[22]=0,t.data[23]=0)),c>i&&((0,n.info)("The numOfMetrics (".concat(c,") should not be ")+"greater than the numGlyphs (".concat(i,").")),c=i,t.data[34]=(65280&c)>>8,t.data[35]=255&c);var u=i-c-(r.length-4*c>>1);if(u>0){var l=new Uint8Array(r.length+2*u);l.set(r.data),o&&(l[r.length]=r.data[2],l[r.length+1]=r.data[3]),r.data=l}}else r&&(r.data=null)}(t,S.hhea,S.hmtx,S.head,ee,te),!S.head)throw new n.FormatError('Required "head" table is not found');!function(e,t,r){var a=e.data,i=(a[0]<<24)+(a[1]<<16)+(a[2]<<8)+a[3];i>>16!=1&&((0,n.info)("Attempting to fix invalid version in head table: "+i),a[0]=0,a[1]=1,a[2]=0,a[3]=0);var o=L(a[50],a[51]);if(o<0||o>1){(0,n.info)("Attempting to fix invalid indexToLocFormat in head table: "+o);var s=t+1;if(r===s<<1)a[50]=0,a[51]=0;else{if(r!==s<<2)throw new n.FormatError("Could not fix indexToLocFormat: "+o);a[50]=0,a[51]=1}}}(S.head,E,P?S.loca.length:0);var ie=Object.create(null);if(P){var oe=L(S.head.data[50],S.head.data[51]),se=function(e,t,r,n,a,i,o){var s,c,u;n?(s=4,c=function(e,t){return e[t]<<24|e[t+1]<<16|e[t+2]<<8|e[t+3]},u=function(e,t,r){e[t]=r>>>24&255,e[t+1]=r>>16&255,e[t+2]=r>>8&255,e[t+3]=255&r}):(s=2,c=function(e,t){return e[t]<<9|e[t+1]<<1},u=function(e,t,r){e[t]=r>>9&255,e[t+1]=r>>1&255});var l=i?r+1:r,f=s*(1+l),h=new Uint8Array(f);h.set(e.data.subarray(0,f)),e.data=h;var d,p,g=t.data,v=g.length,m=new Uint8Array(v),b=[];for(d=0,p=0;dv&&(w=v),b.push({index:d,offset:w,endOffset:0})}for(b.sort((function(e,t){return e.offset-t.offset})),d=0;do&&(o=F.sizeOfInstructions),u(h,p,C+=P)}if(0===C){var T=new Uint8Array([0,1,0,0,0,0,0,0,0,0,0,0,0,0,49,0]);for(d=0,p=s;dI+C?t.data=m.subarray(0,I+C):(t.data=new Uint8Array(I+C),t.data.set(m.subarray(0,C))),t.data.set(m.subarray(0,I),C),u(e.data,h.length-s,C+I)}else t.data=m.subarray(0,C);return{missingGlyphs:A,maxSizeOfInstructions:o}}(S.loca,S.glyf,E,oe,ae,te,ne);ie=se.missingGlyphs,I>=65536&&S.maxp.length>=22&&(S.maxp.data[26]=se.maxSizeOfInstructions>>8,S.maxp.data[27]=255&se.maxSizeOfInstructions)}if(!S.hhea)throw new n.FormatError('Required "hhea" table is not found');0===S.hhea.data[10]&&0===S.hhea.data[11]&&(S.hhea.data[10]=255,S.hhea.data[11]=255);var ce={unitsPerEm:L(S.head.data[18],S.head.data[19]),yMax:L(S.head.data[42],S.head.data[43]),yMin:N(S.head.data[38],S.head.data[39]),ascent:N(S.hhea.data[4],S.hhea.data[5]),descent:N(S.hhea.data[6],S.hhea.data[7]),lineGap:N(S.hhea.data[8],S.hhea.data[9])};this.ascent=ce.ascent/ce.unitsPerEm,this.descent=ce.descent/ce.unitsPerEm,this.lineGap=ce.lineGap/ce.unitsPerEm,this.cssFontInfo&&this.cssFontInfo.lineHeight?(this.lineHeight=this.cssFontInfo.metrics.lineHeight,this.lineGap=this.cssFontInfo.metrics.lineGap):this.lineHeight=this.ascent-this.descent+this.lineGap,S.post&&function(e,r,a){var o=(t.start||0)+e.offset;t.pos=o;var s,c=o+e.length,u=t.getInt32();t.skip(28);var l,f=!0;switch(u){case 65536:s=i.MacStandardGlyphOrdering;break;case 131072:var h=t.getUint16();if(h!==a){f=!1;break}var d=[];for(l=0;l=32768){f=!1;break}d.push(p)}if(!f)break;for(var g=[],v=[];t.pos65535)throw new n.FormatError("Max size of CID is 65,535");var r=-1;he?r=t:void 0!==fe[t]&&(r=fe[t]),r>=0&&r>>0,p=!1;if(!s||s.platformId!==f||s.encodingId!==h){if(0!==f||0!==h&&1!==h&&3!==h)if(1===f&&0===h)p=!0;else if(3!==f||1!==h||!a&&s){if(r&&3===f&&0===h){p=!0;var g=!0;if(l>3;x.push(C),O=Math.max(C,O)}for(var F=[],P=0;P<=O;P++)F.push({firstCode:t.getUint16(),entryCount:t.getUint16(),idDelta:N(t.getByte(),t.getByte()),idRangePos:t.pos+t.getUint16()});for(var T=0;T<256;T++)if(0===x[T])t.pos=F[0].idRangePos+2*T,m=t.getUint16(),k.push({charCode:T,glyphId:m});else{var I=F[x[T]];for(y=0;y>1;t.skip(6);var M,_=[];for(M=0;M>1)-(j-M),i.offsetIndex=R,D=Math.max(D,R+i.end-i.start+1)):i.offsetIndex=-1}var U=[];for(y=0;y>>0;for(y=0;y>>0,V=t.getInt32()>>>0,Y=t.getInt32()>>>0,K=W;K<=V;K++)k.push({charCode:K,glyphId:Y++})}k.sort((function(e,t){return e.charCode-t.charCode}));for(var J=1;J=61440&&_e<=61695&&(_e&=255),ue[_e]=Me.glyphId}}catch(e){je.e(e)}finally{je.f()}}if(r.glyphNames&&(ye.length||this.differences.length))for(var Le=0;Le<256;++Le)if(me||void 0===ue[Le]){var Re=this.differences[Le]||ye[Le];if(Re){var Ne=r.glyphNames.indexOf(Re);Ne>0&&le(Ne)&&(ue[Le]=Ne)}}}0===ue.length&&(ue[0]=0);var De=ee-1;if(te||(De=0),!r.cssFontInfo){var Be=q(ue,le,De,this.toUnicode);this.toFontChar=Be.toFontChar,S.cmap={tag:"cmap",data:G(Be.charCodeToGlyphId,Be.toUnicodeExtraMap,ee)},S["OS/2"]&&function(e,t){t.pos=(t.start||0)+e.offset;var r=t.getUint16();t.skip(60);var n=t.getUint16();return!(r<4&&768&n||t.getUint16()>t.getUint16()||(t.skip(6),0===t.getUint16()||(e.data[8]=e.data[9]=0,0)))}(S["OS/2"],t)||(S["OS/2"]={tag:"OS/2",data:z(r,Be.charCodeToGlyphId,ce)})}if(!P)try{O=new m.Stream(S["CFF "].data),(x=new a.CFFParser(O,r,i.SEAC_ANALYSIS_ENABLED).parse()).duplicateFirstGlyph();var Ue=new a.CFFCompiler(x);S["CFF "].data=Ue.compile()}catch(e){(0,n.warn)("Failed to compile font "+r.loadedName)}if(S.name){var $e=b(S.name);S.name.data=Y(e,$e),this.psName=$e[0][6]||null}else S.name={tag:"name",data:Y(this.name)};var Xe=new v.OpenTypeFileBuilder(w.version);for(var He in S)Xe.addTable(He,S[He].data);return Xe.toArray()}},{key:"convert",value:function(e,t,r){r.fixedPitch=!1,r.builtInEncoding&&function(e,t){if(!e.isInternalFont&&!(e.hasIncludedToUnicodeMap||t===e.defaultEncoding||e.toUnicode instanceof l.IdentityToUnicodeMap)){var r=[],n=(0,s.getGlyphsUnicode)();for(var a in t)if(!e.hasEncoding||0!==e.differences.length&&void 0===e.differences[a]){var i=t[a],c=(0,o.getUnicodeForGlyph)(i,n);-1!==c&&(r[a]=String.fromCharCode(c))}r.length>0&&e.toUnicode.amend(r)}}(r,r.builtInEncoding);var a=1;t instanceof f.CFFFont&&(a=t.numGlyphs-1);var u=t.getGlyphMapping(r),h=null,d=u,p=null;r.cssFontInfo||(h=q(u,t.hasGlyphId.bind(t),a,this.toUnicode),this.toFontChar=h.toFontChar,d=h.charCodeToGlyphId,p=h.toUnicodeExtraMap);var g=t.numGlyphs;function y(e,t){var r=null;for(var n in e)t===e[n]&&(r||(r=[]),r.push(0|n));return r}function m(e,t){for(var r in e)if(t===e[r])return 0|r;return h.charCodeToGlyphId[h.nextAvailableFontCharCode]=t,h.nextAvailableFontCharCode++}var b=t.seacs;if(h&&i.SEAC_ANALYSIS_ENABLED&&b&&b.length){var w=r.fontMatrix||n.FONT_IDENTITY_MATRIX,S=t.getCharset(),x=Object.create(null);for(var O in b){var A=b[O|=0],C=c.StandardEncoding[A[2]],F=c.StandardEncoding[A[3]],P=S.indexOf(C),T=S.indexOf(F);if(!(P<0||T<0)){var I={x:A[0]*w[0]+A[1]*w[2]+w[4],y:A[0]*w[1]+A[1]*w[3]+w[5]},E=y(u,O);if(E){var j,M=k(E);try{for(M.s();!(j=M.n()).done;){var _=j.value,L=h.charCodeToGlyphId,R=m(L,P),N=m(L,T);x[_]={baseFontCharCode:R,accentFontCharCode:N,accentOffset:I}}}catch(e){M.e(e)}finally{M.f()}}}}r.seacMap=x}var U=1/(r.fontMatrix||n.FONT_IDENTITY_MATRIX)[0],$=new v.OpenTypeFileBuilder("OTTO");return $.addTable("CFF ",t.data),$.addTable("OS/2",z(r,d)),$.addTable("cmap",G(d,p,g)),$.addTable("head","\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0_<õ\\0\\0"+B(U)+"\\0\\0\\0\\0ž\\v~'\\0\\0\\0\\0ž\\v~'\\0\\0"+B(r.descent)+"ÿ"+B(r.ascent)+D(r.italicAngle?2:0)+"\\0\\0\\0\\0\\0\\0\\0"),$.addTable("hhea","\\0\\0\\0"+B(r.ascent)+B(r.descent)+"\\0\\0ÿÿ\\0\\0\\0\\0\\0\\0"+B(r.capHeight)+B(Math.tan(r.italicAngle)*r.xHeight)+"\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0"+D(g)),$.addTable("hmtx",function(){for(var e=t.charstrings,r=t.cff?t.cff.widths:null,n="\\0\\0\\0\\0",a=1,i=g;a1&&void 0!==arguments[1]&&arguments[1],s=this._glyphCache[e];if(s&&s.isSpace===i)return s;var c=e;this.cMap&&this.cMap.contains(e)&&"string"==typeof(c=this.cMap.lookup(e))&&(c=H(e,c)),"number"!=typeof(r=this.widths[c])&&(r=this.defaultWidth);var u=this.vmetrics&&this.vmetrics[c],l=this.toUnicode.get(e)||e;"number"==typeof l&&(l=String.fromCharCode(l));var f=void 0!==this.toFontChar[e];if(t=this.toFontChar[e]||e,this.missingFile){var h=this.differences[e]||this.defaultEncoding[e];".notdef"!==h&&""!==h||"Type1"!==this.type||(t=32),t=(0,o.mapSpecialUnicodeValues)(t)}this.isType3Font&&(a=t);var d=null;if(this.seacMap&&this.seacMap[e]){f=!0;var p=this.seacMap[e];t=p.baseFontCharCode,d={fontChar:String.fromCodePoint(p.accentFontCharCode),offset:p.accentOffset}}var g="";return"number"==typeof t&&(t<=1114111?g=String.fromCodePoint(t):(0,n.warn)("charToGlyph - invalid fontCharCode: ".concat(t))),s=new _(e,g,l,d,r,u,a,i,f),this._glyphCache[e]=s}},{key:"charsToGlyphs",value:function(e){var t=this._charsCache[e];if(t)return t;if(t=[],this.cMap)for(var r=Object.create(null),n=e.length,a=0;a55295&&(c<57344||c>65533)&&o++,this.toUnicode){var u=i(c);if(-1!==u){a()&&(r.push(n.join("")),n.length=0);for(var f=(this.cMap?this.cMap.getCharCodeLength(u):1)-1;f>=0;f--)n.push(String.fromCharCode(u>>8*f&255));continue}}a()||(r.push(n.join("")),n.length=0),n.push(String.fromCodePoint(c))}return r.push(n.join("")),r}}]),e}();t.Font=K;var J=function(){function e(t){A(this,e),this.error=t,this.loadedName="g_font_error",this.missingFile=!0}return F(e,[{key:"charsToGlyphs",value:function(){return[]}},{key:"encodeString",value:function(e){return[e]}},{key:"exportData",value:function(){return{error:this.error}}}]),e}();t.ErrorFont=J},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.CFFTopDict=t.CFFStrings=t.CFFStandardStrings=t.CFFPrivateDict=t.CFFParser=t.CFFIndex=t.CFFHeader=t.CFFFDSelect=t.CFFCompiler=t.CFFCharset=t.CFF=void 0;var n=r(2),a=r(165),i=r(166);function o(e){return function(e){if(Array.isArray(e))return p(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||d(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&c(e,t)}function c(e,t){return c=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},c(e,t)}function u(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,n=l(e);if(t){var a=l(this).constructor;r=Reflect.construct(n,arguments,a)}else r=n.apply(this,arguments);return function(e,t){if(t&&("object"===f(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(this,r)}}function l(e){return l=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},l(e)}function f(e){return f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},f(e)}function h(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=d(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,a=function(){};return{s:a,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return o=e.done,e},e:function(e){s=!0,i=e},f:function(){try{o||null==r.return||r.return()}finally{if(s)throw i}}}}function d(e,t){if(e){if("string"==typeof e)return p(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?p(e,t):void 0}}function p(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=t)throw new n.FormatError("Invalid CFF header");0!==r&&((0,n.info)("cff data is shifted"),e=e.subarray(r),this.bytes=e);var a=e[0],i=e[1],o=e[2],s=e[3];return{obj:new x(a,i,o,s),endPos:o}}},{key:"parseDict",value:function(e){var t=0;var r,a=[],i=[];t=0;for(var o=e.length;t>4,s=15&i;if(15===o)break;if(r+=n[o],15===s)break;r+=n[s]}return parseFloat(r)}():28===r?r=((r=e[t++])<<24|e[t++]<<16)>>16:29===r?r=(r=(r=(r=e[t++])<<8|e[t++])<<8|e[t++])<<8|e[t++]:r>=32&&r<=246?r-139:r>=247&&r<=250?256*(r-247)+e[t++]+108:r>=251&&r<=254?-256*(r-251)-e[t++]-108:((0,n.warn)('CFFParser_parseDict: "'+r+'" is a reserved command.'),NaN)))}return i}},{key:"parseIndex",value:function(e){var t,r,n=new A,a=this.bytes,i=a[e++]<<8|a[e++],o=[],s=e;if(0!==i){var c=a[e++],u=e+(i+1)*c-1;for(t=0,r=i+1;t10)return!1;for(var i=e.stackSize,o=e.stack,s=t.length,c=0;c>16,c+=2,i++;else if(14===u){if(i>=4&&(i-=4,this.seacAnalysisEnabled))return e.seac=o.slice(i,i+4),!1;l=b[u]}else if(u>=32&&u<=246)o[i]=u-139,i++;else if(u>=247&&u<=254)o[i]=u<251?(u-247<<8)+t[c]+108:-(u-251<<8)-t[c]-108,c++,i++;else if(255===u)o[i]=(t[c]<<24|t[c+1]<<16|t[c+2]<<8|t[c+3])/65536,c+=4,i++;else if(19===u||20===u)e.hints+=i>>1,c+=e.hints+7>>3,i%=2,l=b[u];else{if(10===u||29===u){var h=void 0;if(!(h=10===u?r:a))return l=b[u],(0,n.warn)("Missing subrsIndex for "+l.id),!1;var d=32768;h.count<1240?d=107:h.count<33900&&(d=1131);var p=o[--i]+d;if(p<0||p>=h.count||isNaN(p))return l=b[u],(0,n.warn)("Out of bounds subrIndex for "+l.id),!1;if(e.stackSize=i,e.callDepth++,!this.parseCharString(e,h.get(p),r,a))return!1;e.callDepth--,i=e.stackSize;continue}if(11===u)return e.stackSize=i,!0;if(0===u&&c===t.length)t[c-1]=14,l=b[14];else{if(9===u){t.copyWithin(c-1,c,-1),c-=1,s-=1;continue}l=b[u]}}if(l){if(l.stem&&(e.hints+=i>>1,3===u||23===u?e.hasVStems=!0:!e.hasVStems||1!==u&&18!==u||((0,n.warn)("CFF stem hints are in wrong order"),t[c-1]=1===u?3:23)),"min"in l&&!e.undefStack&&i=2&&l.stem?i%=2:i>1&&(0,n.warn)("Found too many parameters for stack-clearing command"),i>0&&(e.width=o[i-1])),"stackDelta"in l?("stackFn"in l&&l.stackFn(o,i),i+=l.stackDelta):l.stackClearing?i=0:l.resetStack?(i=0,e.undefStack=!1):l.undefStack&&(i=0,e.undefStack=!0,e.firstStackClearing=!1)}}return s=o.length&&((0,n.warn)("Invalid fd index for glyph index."),p=!1),p&&(g=(v=o[y].privateDict).subrsIndex)}else r&&(g=r);if(p&&(p=this.parseCharString(d,h,g,a)),null!==d.width){var m=v.getByName("nominalWidthX");u[f]=m+d.width}else{var b=v.getByName("defaultWidthX");u[f]=b}null!==d.seac&&(c[f]=d.seac),p||t.set(f,new Uint8Array([14]))}return{charStrings:t,seacs:c,widths:u}}},{key:"emptyPrivateDictionary",value:function(e){var t=this.createDict(I,[],e.strings);e.setByKey(18,[0,0]),e.privateDict=t}},{key:"parsePrivateDict",value:function(e){if(e.hasName("Private")){var t=e.getByName("Private");if(Array.isArray(t)&&2===t.length){var r=t[0],n=t[1];if(0===r||n>=this.bytes.length)this.emptyPrivateDictionary(e);else{var a=n+r,i=this.bytes.subarray(n,a),o=this.parseDict(i),s=this.createDict(I,o,e.strings);if(e.privateDict=s,s.getByName("Subrs")){var c=s.getByName("Subrs"),u=n+c;if(0===c||u>=this.bytes.length)this.emptyPrivateDictionary(e);else{var l=this.parseIndex(u);s.subrsIndex=l.obj}}}}else e.removeByName("Private")}else this.emptyPrivateDictionary(e)}},{key:"parseCharsets",value:function(e,t,r,i){if(0===e)return new j(!0,E.ISO_ADOBE,a.ISOAdobeCharset);if(1===e)return new j(!0,E.EXPERT,a.ExpertCharset);if(2===e)return new j(!0,E.EXPERT_SUBSET,a.ExpertSubsetCharset);var o,s,c,u=this.bytes,l=e,f=u[e++],h=[i?0:".notdef"];switch(t-=1,f){case 0:for(c=0;c=65535)(0,n.warn)("Not enough space in charstrings to duplicate first glyph.");else{var e=this.charStrings.get(0);this.charStrings.add(e),this.isCIDFont&&this.fdSelect.fdSelect.push(this.fdSelect.fdSelect[0])}}},{key:"hasGlyphId",value:function(e){return!(e<0||e>=this.charStrings.count)&&this.charStrings.get(e).length>0}}]),e}();t.CFF=S;var x=y((function e(t,r,n,a){g(this,e),this.major=t,this.minor=r,this.hdrSize=n,this.offSize=a}));t.CFFHeader=x;var O=function(){function e(){g(this,e),this.strings=[]}return y(e,[{key:"get",value:function(e){return e>=0&&e<=390?m[e]:e-391<=this.strings.length?this.strings[e-391]:m[0]}},{key:"getSID",value:function(e){var t=m.indexOf(e);return-1!==t?t:-1!==(t=this.strings.indexOf(e))?t+391:-1}},{key:"add",value:function(e){this.strings.push(e)}},{key:"count",get:function(){return this.strings.length}}]),e}();t.CFFStrings=O;var A=function(){function e(){g(this,e),this.objects=[],this.length=0}return y(e,[{key:"add",value:function(e){this.length+=e.length,this.objects.push(e)}},{key:"set",value:function(e,t){this.length+=t.length-this.objects[e].length,this.objects[e]=t}},{key:"get",value:function(e){return this.objects[e]}},{key:"count",get:function(){return this.objects.length}}]),e}();t.CFFIndex=A;var C=function(){function e(t,r){g(this,e),this.keyToNameMap=t.keyToNameMap,this.nameToKeyMap=t.nameToKeyMap,this.defaults=t.defaults,this.types=t.types,this.opcodes=t.opcodes,this.order=t.order,this.strings=r,this.values=Object.create(null)}return y(e,[{key:"setByKey",value:function(e,t){if(!(e in this.keyToNameMap))return!1;if(0===t.length)return!0;var r,a=h(t);try{for(a.s();!(r=a.n()).done;){var i=r.value;if(isNaN(i))return(0,n.warn)('Invalid CFFDict value: "'.concat(t,'" for key "').concat(e,'".')),!0}}catch(e){a.e(e)}finally{a.f()}var o=this.types[e];return"num"!==o&&"sid"!==o&&"offset"!==o||(t=t[0]),this.values[e]=t,!0}},{key:"setByName",value:function(e,t){if(!(e in this.nameToKeyMap))throw new n.FormatError('Invalid dictionary name "'.concat(e,'"'));this.values[this.nameToKeyMap[e]]=t}},{key:"hasName",value:function(e){return this.nameToKeyMap[e]in this.values}},{key:"getByName",value:function(e){if(!(e in this.nameToKeyMap))throw new n.FormatError("Invalid dictionary name ".concat(e,'"'));var t=this.nameToKeyMap[e];return t in this.values?this.values[t]:this.defaults[t]}},{key:"removeByName",value:function(e){delete this.values[this.nameToKeyMap[e]]}}],[{key:"createTables",value:function(e){var t,r={keyToNameMap:{},nameToKeyMap:{},defaults:{},types:{},opcodes:{},order:[]},n=h(e);try{for(n.s();!(t=n.n()).done;){var a=t.value,i=Array.isArray(a[0])?(a[0][0]<<8)+a[0][1]:a[0];r.keyToNameMap[i]=a[1],r.nameToKeyMap[a[1]]=i,r.types[i]=a[2],r.defaults[i]=a[3],r.opcodes[i]=Array.isArray(a[0])?a[0]:[a[0]],r.order.push(i)}}catch(e){n.e(e)}finally{n.f()}return r}}]),e}(),F=[[[12,30],"ROS",["sid","sid","num"],null],[[12,20],"SyntheticBase","num",null],[0,"version","sid",null],[1,"Notice","sid",null],[[12,0],"Copyright","sid",null],[2,"FullName","sid",null],[3,"FamilyName","sid",null],[4,"Weight","sid",null],[[12,1],"isFixedPitch","num",0],[[12,2],"ItalicAngle","num",0],[[12,3],"UnderlinePosition","num",-100],[[12,4],"UnderlineThickness","num",50],[[12,5],"PaintType","num",0],[[12,6],"CharstringType","num",2],[[12,7],"FontMatrix",["num","num","num","num","num","num"],[.001,0,0,.001,0,0]],[13,"UniqueID","num",null],[5,"FontBBox",["num","num","num","num"],[0,0,0,0]],[[12,8],"StrokeWidth","num",0],[14,"XUID","array",null],[15,"charset","offset",0],[16,"Encoding","offset",0],[17,"CharStrings","offset",0],[18,"Private",["offset","offset"],null],[[12,21],"PostScript","sid",null],[[12,22],"BaseFontName","sid",null],[[12,23],"BaseFontBlend","delta",null],[[12,31],"CIDFontVersion","num",0],[[12,32],"CIDFontRevision","num",0],[[12,33],"CIDFontType","num",0],[[12,34],"CIDCount","num",8720],[[12,35],"UIDBase","num",null],[[12,37],"FDSelect","offset",null],[[12,36],"FDArray","offset",null],[[12,38],"FontName","sid",null]],P=function(e){s(r,e);var t=u(r);function r(e){var n;return g(this,r),(n=t.call(this,r.tables,e)).privateDict=null,n}return y(r,null,[{key:"tables",get:function(){return(0,n.shadow)(this,"tables",this.createTables(F))}}]),r}(C);t.CFFTopDict=P;var T=[[6,"BlueValues","delta",null],[7,"OtherBlues","delta",null],[8,"FamilyBlues","delta",null],[9,"FamilyOtherBlues","delta",null],[[12,9],"BlueScale","num",.039625],[[12,10],"BlueShift","num",7],[[12,11],"BlueFuzz","num",1],[10,"StdHW","num",null],[11,"StdVW","num",null],[[12,12],"StemSnapH","delta",null],[[12,13],"StemSnapV","delta",null],[[12,14],"ForceBold","num",0],[[12,17],"LanguageGroup","num",0],[[12,18],"ExpansionFactor","num",.06],[[12,19],"initialRandomSeed","num",0],[20,"defaultWidthX","num",0],[21,"nominalWidthX","num",0],[19,"Subrs","offset",null]],I=function(e){s(r,e);var t=u(r);function r(e){var n;return g(this,r),(n=t.call(this,r.tables,e)).subrsIndex=null,n}return y(r,null,[{key:"tables",get:function(){return(0,n.shadow)(this,"tables",this.createTables(T))}}]),r}(C);t.CFFPrivateDict=I;var E={ISO_ADOBE:0,EXPERT:1,EXPERT_SUBSET:2},j=y((function e(t,r,n,a){g(this,e),this.predefined=t,this.format=r,this.charset=n,this.raw=a}));t.CFFCharset=j;var M=y((function e(t,r,n,a){g(this,e),this.predefined=t,this.format=r,this.encoding=n,this.raw=a})),_=function(){function e(t,r){g(this,e),this.format=t,this.fdSelect=r}return y(e,[{key:"getFDIndex",value:function(e){return e<0||e>=this.fdSelect.length?-1:this.fdSelect[e]}}]),e}();t.CFFFDSelect=_;var L=function(){function e(){g(this,e),this.offsets=Object.create(null)}return y(e,[{key:"isTracking",value:function(e){return e in this.offsets}},{key:"track",value:function(e,t){if(e in this.offsets)throw new n.FormatError("Already tracking location of ".concat(e));this.offsets[e]=t}},{key:"offset",value:function(e){for(var t in this.offsets)this.offsets[t]+=e}},{key:"setEntryLocation",value:function(e,t,r){if(!(e in this.offsets))throw new n.FormatError("Not tracking location of ".concat(e));for(var a=r.data,i=this.offsets[e],o=0,s=t.length;o>24&255,a[l]=d>>16&255,a[f]=d>>8&255,a[h]=255&d}}}]),e}(),R=function(){function e(t){g(this,e),this.cff=t}return y(e,[{key:"compile",value:function(){var e=this.cff,t={data:[],length:0,add:function(e){this.data=this.data.concat(e),this.length=this.data.length}},r=this.compileHeader(e.header);t.add(r);var a=this.compileNameIndex(e.names);if(t.add(a),e.isCIDFont&&e.topDict.hasName("FontMatrix")){var i=e.topDict.getByName("FontMatrix");e.topDict.removeByName("FontMatrix");var o,s=h(e.fdArray);try{for(s.s();!(o=s.n()).done;){var c=o.value,u=i.slice(0);c.hasName("FontMatrix")&&(u=n.Util.transform(u,c.getByName("FontMatrix"))),c.setByName("FontMatrix",u)}}catch(e){s.e(e)}finally{s.f()}}var l=e.topDict.getByName("XUID");l&&l.length>16&&e.topDict.removeByName("XUID"),e.topDict.setByName("charset",0);var f=this.compileTopDicts([e.topDict],t.length,e.isCIDFont);t.add(f.output);var d=f.trackers[0],p=this.compileStringIndex(e.strings.strings);t.add(p);var g=this.compileIndex(e.globalSubrIndex);if(t.add(g),e.encoding&&e.topDict.hasName("Encoding"))if(e.encoding.predefined)d.setEntryLocation("Encoding",[e.encoding.format],t);else{var v=this.compileEncoding(e.encoding);d.setEntryLocation("Encoding",[t.length],t),t.add(v)}var y=this.compileCharset(e.charset,e.charStrings.count,e.strings,e.isCIDFont);d.setEntryLocation("charset",[t.length],t),t.add(y);var m=this.compileCharStrings(e.charStrings);if(d.setEntryLocation("CharStrings",[t.length],t),t.add(m),e.isCIDFont){d.setEntryLocation("FDSelect",[t.length],t);var b=this.compileFDSelect(e.fdSelect);t.add(b),f=this.compileTopDicts(e.fdArray,t.length,!0),d.setEntryLocation("FDArray",[t.length],t),t.add(f.output);var w=f.trackers;this.compilePrivateDicts(e.fdArray,w,t)}return this.compilePrivateDicts([e.topDict],[d],t),t.add([0]),t.data}},{key:"encodeNumber",value:function(e){return Number.isInteger(e)?this.encodeInteger(e):this.encodeFloat(e)}},{key:"encodeFloat",value:function(t){var r=t.toString(),n=e.EncodeFloatRegExp.exec(r);if(n){var a=parseFloat("1e"+((n[2]?+n[2]:0)+n[1].length));r=(Math.round(t*a)/a).toString()}var i,o,s="";for(i=0,o=r.length;i=-107&&e<=107?[e+139]:e>=108&&e<=1131?[247+((e-=108)>>8),255&e]:e>=-1131&&e<=-108?[251+((e=-e-108)>>8),255&e]:e>=-32768&&e<=32767?[28,e>>8&255,255&e]:[29,e>>24&255,e>>16&255,e>>8&255,255&e]}},{key:"compileHeader",value:function(e){return[e.major,e.minor,4,e.offSize]}},{key:"compileNameIndex",value:function(e){var t,r=new A,a=h(e);try{for(a.s();!(t=a.n()).done;){for(var i=t.value,o=Math.min(i.length,127),s=new Array(o),c=0;c"~"||"["===u||"]"===u||"("===u||")"===u||"{"===u||"}"===u||"<"===u||">"===u||"/"===u||"%"===u)&&(u="_"),s[c]=u}""===(s=s.join(""))&&(s="Bad_Font_Name"),r.add((0,n.stringToBytes)(s))}}catch(e){a.e(e)}finally{a.f()}return this.compileIndex(r)}},{key:"compileTopDicts",value:function(e,t,r){var n,a=[],i=new A,o=h(e);try{for(o.s();!(n=o.n()).done;){var s=n.value;r&&(s.removeByName("CIDFontVersion"),s.removeByName("CIDFontRevision"),s.removeByName("CIDFontType"),s.removeByName("CIDCount"),s.removeByName("UIDBase"));var c=new L,u=this.compileDict(s,c);a.push(c),i.add(u),c.offset(t)}}catch(e){o.e(e)}finally{o.f()}return{trackers:a,output:i=this.compileIndex(i,a)}}},{key:"compilePrivateDicts",value:function(e,t,r){for(var a=0,i=e.length;a>8&255,255&o]);else{(i=new Uint8Array(1+2*o))[0]=0;for(var s=0,c=e.charset.length,u=!1,l=1;l>8&255,i[l+1]=255&f}}return this.compileTypedArray(i)}},{key:"compileEncoding",value:function(e){return this.compileTypedArray(e.raw)}},{key:"compileFDSelect",value:function(e){var t,r,n=e.format;switch(n){case 0:for((t=new Uint8Array(1+e.fdSelect.length))[0]=n,r=0;r>8&255,255&r,o),a=o)}var s=(i.length-3)/3;i[1]=s>>8&255,i[2]=255&s,i.push(r>>8&255,255&r),t=new Uint8Array(i)}return this.compileTypedArray(t)}},{key:"compileTypedArray",value:function(e){for(var t=[],r=0,n=e.length;r1&&void 0!==arguments[1]?arguments[1]:[],r=e.objects,n=r.length;if(0===n)return[0,0];var a,i,s=[n>>8&255,255&n],c=1;for(a=0;a>8&255,255&u):3===i?s.push(u>>16&255,u>>8&255,255&u):s.push(u>>>24&255,u>>16&255,u>>8&255,255&u),r[a]&&(u+=r[a].length);for(a=0;a{Object.defineProperty(t,"__esModule",{value:!0}),t.ISOAdobeCharset=t.ExpertSubsetCharset=t.ExpertCharset=void 0,t.ISOAdobeCharset=[".notdef","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quoteright","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","quoteleft","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","exclamdown","cent","sterling","fraction","yen","florin","section","currency","quotesingle","quotedblleft","guillemotleft","guilsinglleft","guilsinglright","fi","fl","endash","dagger","daggerdbl","periodcentered","paragraph","bullet","quotesinglbase","quotedblbase","quotedblright","guillemotright","ellipsis","perthousand","questiondown","grave","acute","circumflex","tilde","macron","breve","dotaccent","dieresis","ring","cedilla","hungarumlaut","ogonek","caron","emdash","AE","ordfeminine","Lslash","Oslash","OE","ordmasculine","ae","dotlessi","lslash","oslash","oe","germandbls","onesuperior","logicalnot","mu","trademark","Eth","onehalf","plusminus","Thorn","onequarter","divide","brokenbar","degree","thorn","threequarters","twosuperior","registered","minus","eth","multiply","threesuperior","copyright","Aacute","Acircumflex","Adieresis","Agrave","Aring","Atilde","Ccedilla","Eacute","Ecircumflex","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Ntilde","Oacute","Ocircumflex","Odieresis","Ograve","Otilde","Scaron","Uacute","Ucircumflex","Udieresis","Ugrave","Yacute","Ydieresis","Zcaron","aacute","acircumflex","adieresis","agrave","aring","atilde","ccedilla","eacute","ecircumflex","edieresis","egrave","iacute","icircumflex","idieresis","igrave","ntilde","oacute","ocircumflex","odieresis","ograve","otilde","scaron","uacute","ucircumflex","udieresis","ugrave","yacute","ydieresis","zcaron"],t.ExpertCharset=[".notdef","space","exclamsmall","Hungarumlautsmall","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","commasuperior","threequartersemdash","periodsuperior","questionsmall","asuperior","bsuperior","centsuperior","dsuperior","esuperior","isuperior","lsuperior","msuperior","nsuperior","osuperior","rsuperior","ssuperior","tsuperior","ff","fi","fl","ffi","ffl","parenleftinferior","parenrightinferior","Circumflexsmall","hyphensuperior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","exclamdownsmall","centoldstyle","Lslashsmall","Scaronsmall","Zcaronsmall","Dieresissmall","Brevesmall","Caronsmall","Dotaccentsmall","Macronsmall","figuredash","hypheninferior","Ogoneksmall","Ringsmall","Cedillasmall","onequarter","onehalf","threequarters","questiondownsmall","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","zerosuperior","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior","Agravesmall","Aacutesmall","Acircumflexsmall","Atildesmall","Adieresissmall","Aringsmall","AEsmall","Ccedillasmall","Egravesmall","Eacutesmall","Ecircumflexsmall","Edieresissmall","Igravesmall","Iacutesmall","Icircumflexsmall","Idieresissmall","Ethsmall","Ntildesmall","Ogravesmall","Oacutesmall","Ocircumflexsmall","Otildesmall","Odieresissmall","OEsmall","Oslashsmall","Ugravesmall","Uacutesmall","Ucircumflexsmall","Udieresissmall","Yacutesmall","Thornsmall","Ydieresissmall"],t.ExpertSubsetCharset=[".notdef","space","dollaroldstyle","dollarsuperior","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","commasuperior","threequartersemdash","periodsuperior","asuperior","bsuperior","centsuperior","dsuperior","esuperior","isuperior","lsuperior","msuperior","nsuperior","osuperior","rsuperior","ssuperior","tsuperior","ff","fi","fl","ffi","ffl","parenleftinferior","parenrightinferior","hyphensuperior","colonmonetary","onefitted","rupiah","centoldstyle","figuredash","hypheninferior","onequarter","onehalf","threequarters","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","zerosuperior","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior"]},(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ZapfDingbatsEncoding=t.WinAnsiEncoding=t.SymbolSetEncoding=t.StandardEncoding=t.MacRomanEncoding=t.ExpertEncoding=void 0,t.getEncoding=function(e){switch(e){case"WinAnsiEncoding":return o;case"StandardEncoding":return i;case"MacRomanEncoding":return a;case"SymbolSetEncoding":return s;case"ZapfDingbatsEncoding":return c;case"ExpertEncoding":return r;case"MacExpertEncoding":return n;default:return null}};var r=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclamsmall","Hungarumlautsmall","","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","commasuperior","threequartersemdash","periodsuperior","questionsmall","","asuperior","bsuperior","centsuperior","dsuperior","esuperior","","","","isuperior","","","lsuperior","msuperior","nsuperior","osuperior","","","rsuperior","ssuperior","tsuperior","","ff","fi","fl","ffi","ffl","parenleftinferior","","parenrightinferior","Circumflexsmall","hyphensuperior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","exclamdownsmall","centoldstyle","Lslashsmall","","","Scaronsmall","Zcaronsmall","Dieresissmall","Brevesmall","Caronsmall","","Dotaccentsmall","","","Macronsmall","","","figuredash","hypheninferior","","","Ogoneksmall","Ringsmall","Cedillasmall","","","","onequarter","onehalf","threequarters","questiondownsmall","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","","","zerosuperior","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior","Agravesmall","Aacutesmall","Acircumflexsmall","Atildesmall","Adieresissmall","Aringsmall","AEsmall","Ccedillasmall","Egravesmall","Eacutesmall","Ecircumflexsmall","Edieresissmall","Igravesmall","Iacutesmall","Icircumflexsmall","Idieresissmall","Ethsmall","Ntildesmall","Ogravesmall","Oacutesmall","Ocircumflexsmall","Otildesmall","Odieresissmall","OEsmall","Oslashsmall","Ugravesmall","Uacutesmall","Ucircumflexsmall","Udieresissmall","Yacutesmall","Thornsmall","Ydieresissmall"];t.ExpertEncoding=r;var n=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclamsmall","Hungarumlautsmall","centoldstyle","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","","threequartersemdash","","questionsmall","","","","","Ethsmall","","","onequarter","onehalf","threequarters","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","","","","","","","ff","fi","fl","ffi","ffl","parenleftinferior","","parenrightinferior","Circumflexsmall","hypheninferior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","","","asuperior","centsuperior","","","","","Aacutesmall","Agravesmall","Acircumflexsmall","Adieresissmall","Atildesmall","Aringsmall","Ccedillasmall","Eacutesmall","Egravesmall","Ecircumflexsmall","Edieresissmall","Iacutesmall","Igravesmall","Icircumflexsmall","Idieresissmall","Ntildesmall","Oacutesmall","Ogravesmall","Ocircumflexsmall","Odieresissmall","Otildesmall","Uacutesmall","Ugravesmall","Ucircumflexsmall","Udieresissmall","","eightsuperior","fourinferior","threeinferior","sixinferior","eightinferior","seveninferior","Scaronsmall","","centinferior","twoinferior","","Dieresissmall","","Caronsmall","osuperior","fiveinferior","","commainferior","periodinferior","Yacutesmall","","dollarinferior","","","Thornsmall","","nineinferior","zeroinferior","Zcaronsmall","AEsmall","Oslashsmall","questiondownsmall","oneinferior","Lslashsmall","","","","","","","Cedillasmall","","","","","","OEsmall","figuredash","hyphensuperior","","","","","exclamdownsmall","","Ydieresissmall","","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","ninesuperior","zerosuperior","","esuperior","rsuperior","tsuperior","","","isuperior","ssuperior","dsuperior","","","","","","lsuperior","Ogoneksmall","Brevesmall","Macronsmall","bsuperior","nsuperior","msuperior","commasuperior","periodsuperior","Dotaccentsmall","Ringsmall","","","",""],a=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quotesingle","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","grave","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","","Adieresis","Aring","Ccedilla","Eacute","Ntilde","Odieresis","Udieresis","aacute","agrave","acircumflex","adieresis","atilde","aring","ccedilla","eacute","egrave","ecircumflex","edieresis","iacute","igrave","icircumflex","idieresis","ntilde","oacute","ograve","ocircumflex","odieresis","otilde","uacute","ugrave","ucircumflex","udieresis","dagger","degree","cent","sterling","section","bullet","paragraph","germandbls","registered","copyright","trademark","acute","dieresis","notequal","AE","Oslash","infinity","plusminus","lessequal","greaterequal","yen","mu","partialdiff","summation","product","pi","integral","ordfeminine","ordmasculine","Omega","ae","oslash","questiondown","exclamdown","logicalnot","radical","florin","approxequal","Delta","guillemotleft","guillemotright","ellipsis","space","Agrave","Atilde","Otilde","OE","oe","endash","emdash","quotedblleft","quotedblright","quoteleft","quoteright","divide","lozenge","ydieresis","Ydieresis","fraction","currency","guilsinglleft","guilsinglright","fi","fl","daggerdbl","periodcentered","quotesinglbase","quotedblbase","perthousand","Acircumflex","Ecircumflex","Aacute","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Oacute","Ocircumflex","apple","Ograve","Uacute","Ucircumflex","Ugrave","dotlessi","circumflex","tilde","macron","breve","dotaccent","ring","cedilla","hungarumlaut","ogonek","caron"];t.MacRomanEncoding=a;var i=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quoteright","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","quoteleft","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","exclamdown","cent","sterling","fraction","yen","florin","section","currency","quotesingle","quotedblleft","guillemotleft","guilsinglleft","guilsinglright","fi","fl","","endash","dagger","daggerdbl","periodcentered","","paragraph","bullet","quotesinglbase","quotedblbase","quotedblright","guillemotright","ellipsis","perthousand","","questiondown","","grave","acute","circumflex","tilde","macron","breve","dotaccent","dieresis","","ring","cedilla","","hungarumlaut","ogonek","caron","emdash","","","","","","","","","","","","","","","","","AE","","ordfeminine","","","","","Lslash","Oslash","OE","ordmasculine","","","","","","ae","","","","dotlessi","","","lslash","oslash","oe","germandbls","","","",""];t.StandardEncoding=i;var o=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quotesingle","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","grave","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","bullet","Euro","bullet","quotesinglbase","florin","quotedblbase","ellipsis","dagger","daggerdbl","circumflex","perthousand","Scaron","guilsinglleft","OE","bullet","Zcaron","bullet","bullet","quoteleft","quoteright","quotedblleft","quotedblright","bullet","endash","emdash","tilde","trademark","scaron","guilsinglright","oe","bullet","zcaron","Ydieresis","space","exclamdown","cent","sterling","currency","yen","brokenbar","section","dieresis","copyright","ordfeminine","guillemotleft","logicalnot","hyphen","registered","macron","degree","plusminus","twosuperior","threesuperior","acute","mu","paragraph","periodcentered","cedilla","onesuperior","ordmasculine","guillemotright","onequarter","onehalf","threequarters","questiondown","Agrave","Aacute","Acircumflex","Atilde","Adieresis","Aring","AE","Ccedilla","Egrave","Eacute","Ecircumflex","Edieresis","Igrave","Iacute","Icircumflex","Idieresis","Eth","Ntilde","Ograve","Oacute","Ocircumflex","Otilde","Odieresis","multiply","Oslash","Ugrave","Uacute","Ucircumflex","Udieresis","Yacute","Thorn","germandbls","agrave","aacute","acircumflex","atilde","adieresis","aring","ae","ccedilla","egrave","eacute","ecircumflex","edieresis","igrave","iacute","icircumflex","idieresis","eth","ntilde","ograve","oacute","ocircumflex","otilde","odieresis","divide","oslash","ugrave","uacute","ucircumflex","udieresis","yacute","thorn","ydieresis"];t.WinAnsiEncoding=o;var s=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclam","universal","numbersign","existential","percent","ampersand","suchthat","parenleft","parenright","asteriskmath","plus","comma","minus","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","congruent","Alpha","Beta","Chi","Delta","Epsilon","Phi","Gamma","Eta","Iota","theta1","Kappa","Lambda","Mu","Nu","Omicron","Pi","Theta","Rho","Sigma","Tau","Upsilon","sigma1","Omega","Xi","Psi","Zeta","bracketleft","therefore","bracketright","perpendicular","underscore","radicalex","alpha","beta","chi","delta","epsilon","phi","gamma","eta","iota","phi1","kappa","lambda","mu","nu","omicron","pi","theta","rho","sigma","tau","upsilon","omega1","omega","xi","psi","zeta","braceleft","bar","braceright","similar","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Euro","Upsilon1","minute","lessequal","fraction","infinity","florin","club","diamond","heart","spade","arrowboth","arrowleft","arrowup","arrowright","arrowdown","degree","plusminus","second","greaterequal","multiply","proportional","partialdiff","bullet","divide","notequal","equivalence","approxequal","ellipsis","arrowvertex","arrowhorizex","carriagereturn","aleph","Ifraktur","Rfraktur","weierstrass","circlemultiply","circleplus","emptyset","intersection","union","propersuperset","reflexsuperset","notsubset","propersubset","reflexsubset","element","notelement","angle","gradient","registerserif","copyrightserif","trademarkserif","product","radical","dotmath","logicalnot","logicaland","logicalor","arrowdblboth","arrowdblleft","arrowdblup","arrowdblright","arrowdbldown","lozenge","angleleft","registersans","copyrightsans","trademarksans","summation","parenlefttp","parenleftex","parenleftbt","bracketlefttp","bracketleftex","bracketleftbt","bracelefttp","braceleftmid","braceleftbt","braceex","","angleright","integral","integraltp","integralex","integralbt","parenrighttp","parenrightex","parenrightbt","bracketrighttp","bracketrightex","bracketrightbt","bracerighttp","bracerightmid","bracerightbt",""];t.SymbolSetEncoding=s;var c=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","a1","a2","a202","a3","a4","a5","a119","a118","a117","a11","a12","a13","a14","a15","a16","a105","a17","a18","a19","a20","a21","a22","a23","a24","a25","a26","a27","a28","a6","a7","a8","a9","a10","a29","a30","a31","a32","a33","a34","a35","a36","a37","a38","a39","a40","a41","a42","a43","a44","a45","a46","a47","a48","a49","a50","a51","a52","a53","a54","a55","a56","a57","a58","a59","a60","a61","a62","a63","a64","a65","a66","a67","a68","a69","a70","a71","a72","a73","a74","a203","a75","a204","a76","a77","a78","a79","a81","a82","a83","a84","a97","a98","a99","a100","","a89","a90","a93","a94","a91","a92","a205","a85","a206","a86","a87","a88","a95","a96","","","","","","","","","","","","","","","","","","","","a101","a102","a103","a104","a106","a107","a108","a112","a111","a110","a109","a120","a121","a122","a123","a124","a125","a126","a127","a128","a129","a130","a131","a132","a133","a134","a135","a136","a137","a138","a139","a140","a141","a142","a143","a144","a145","a146","a147","a148","a149","a150","a151","a152","a153","a154","a155","a156","a157","a158","a159","a160","a161","a163","a164","a196","a165","a192","a166","a167","a168","a169","a170","a171","a172","a173","a162","a174","a175","a176","a177","a178","a179","a193","a180","a199","a181","a200","a182","","a201","a183","a184","a197","a185","a194","a198","a186","a195","a187","a188","a189","a190","a191",""];t.ZapfDingbatsEncoding=c},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SEAC_ANALYSIS_ENABLED=t.MacStandardGlyphOrdering=t.FontFlags=void 0,t.getFontType=function(e,t){var r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];switch(e){case"Type1":return r?n.FontType.TYPE1STANDARD:"Type1C"===t?n.FontType.TYPE1C:n.FontType.TYPE1;case"CIDFontType0":return"CIDFontType0C"===t?n.FontType.CIDFONTTYPE0C:n.FontType.CIDFONTTYPE0;case"OpenType":return n.FontType.OPENTYPE;case"TrueType":return n.FontType.TRUETYPE;case"CIDFontType2":return n.FontType.CIDFONTTYPE2;case"MMType1":return n.FontType.MMTYPE1;case"Type0":return n.FontType.TYPE0;default:return n.FontType.UNKNOWN}},t.normalizeFontName=function(e){return e.replace(/[,_]/g,"-").replace(/\\s/g,"")},t.recoverGlyphName=c,t.type1FontGlyphMapping=function(e,t,r){var n,o,u,l=Object.create(null),f=!!(e.flags&s.Symbolic);if(e.isInternalFont)for(u=t,o=0;o=0?n:0;else if(e.baseEncodingName)for(u=(0,a.getEncoding)(e.baseEncodingName),o=0;o=0?n:0;else if(f)for(o in t)l[o]=t[o];else for(u=a.StandardEncoding,o=0;o=0?n:0;var h,d=e.differences;if(d)for(o in d){var p=d[o];if(-1===(n=r.indexOf(p))){h||(h=(0,i.getGlyphsUnicode)());var g=c(p,h);g!==p&&(n=r.indexOf(g))}l[o]=n>=0?n:0}return l};var n=r(2),a=r(166),i=r(168),o=r(169);t.SEAC_ANALYSIS_ENABLED=!0;var s={FixedPitch:1,Serif:2,Symbolic:4,Script:8,Nonsymbolic:32,Italic:64,AllCap:65536,SmallCap:131072,ForceBold:262144};function c(e,t){if(void 0!==t[e])return e;var r=(0,o.getUnicodeForGlyph)(e,t);if(-1!==r)for(var a in t)if(t[a]===r)return a;return(0,n.info)("Unable to recover a standard glyph name for: "+e),e}t.FontFlags=s,t.MacStandardGlyphOrdering=[".notdef",".null","nonmarkingreturn","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quotesingle","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","grave","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","Adieresis","Aring","Ccedilla","Eacute","Ntilde","Odieresis","Udieresis","aacute","agrave","acircumflex","adieresis","atilde","aring","ccedilla","eacute","egrave","ecircumflex","edieresis","iacute","igrave","icircumflex","idieresis","ntilde","oacute","ograve","ocircumflex","odieresis","otilde","uacute","ugrave","ucircumflex","udieresis","dagger","degree","cent","sterling","section","bullet","paragraph","germandbls","registered","copyright","trademark","acute","dieresis","notequal","AE","Oslash","infinity","plusminus","lessequal","greaterequal","yen","mu","partialdiff","summation","product","pi","integral","ordfeminine","ordmasculine","Omega","ae","oslash","questiondown","exclamdown","logicalnot","radical","florin","approxequal","Delta","guillemotleft","guillemotright","ellipsis","nonbreakingspace","Agrave","Atilde","Otilde","OE","oe","endash","emdash","quotedblleft","quotedblright","quoteleft","quoteright","divide","lozenge","ydieresis","Ydieresis","fraction","currency","guilsinglleft","guilsinglright","fi","fl","daggerdbl","periodcentered","quotesinglbase","quotedblbase","perthousand","Acircumflex","Ecircumflex","Aacute","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Oacute","Ocircumflex","apple","Ograve","Uacute","Ucircumflex","Ugrave","dotlessi","circumflex","tilde","macron","breve","dotaccent","ring","cedilla","hungarumlaut","ogonek","caron","Lslash","lslash","Scaron","scaron","Zcaron","zcaron","brokenbar","Eth","eth","Yacute","yacute","Thorn","thorn","minus","multiply","onesuperior","twosuperior","threesuperior","onehalf","onequarter","threequarters","franc","Gbreve","gbreve","Idotaccent","Scedilla","scedilla","Cacute","cacute","Ccaron","ccaron","dcroat"]},(e,t,r)=>{r.r(t),r.d(t,{getDingbatsGlyphsUnicode:()=>i,getGlyphsUnicode:()=>a});var n=r(135);const a=(0,n.getArrayLookupTableFactory)((function(){return["A",65,"AE",198,"AEacute",508,"AEmacron",482,"AEsmall",63462,"Aacute",193,"Aacutesmall",63457,"Abreve",258,"Abreveacute",7854,"Abrevecyrillic",1232,"Abrevedotbelow",7862,"Abrevegrave",7856,"Abrevehookabove",7858,"Abrevetilde",7860,"Acaron",461,"Acircle",9398,"Acircumflex",194,"Acircumflexacute",7844,"Acircumflexdotbelow",7852,"Acircumflexgrave",7846,"Acircumflexhookabove",7848,"Acircumflexsmall",63458,"Acircumflextilde",7850,"Acute",63177,"Acutesmall",63412,"Acyrillic",1040,"Adblgrave",512,"Adieresis",196,"Adieresiscyrillic",1234,"Adieresismacron",478,"Adieresissmall",63460,"Adotbelow",7840,"Adotmacron",480,"Agrave",192,"Agravesmall",63456,"Ahookabove",7842,"Aiecyrillic",1236,"Ainvertedbreve",514,"Alpha",913,"Alphatonos",902,"Amacron",256,"Amonospace",65313,"Aogonek",260,"Aring",197,"Aringacute",506,"Aringbelow",7680,"Aringsmall",63461,"Asmall",63329,"Atilde",195,"Atildesmall",63459,"Aybarmenian",1329,"B",66,"Bcircle",9399,"Bdotaccent",7682,"Bdotbelow",7684,"Becyrillic",1041,"Benarmenian",1330,"Beta",914,"Bhook",385,"Blinebelow",7686,"Bmonospace",65314,"Brevesmall",63220,"Bsmall",63330,"Btopbar",386,"C",67,"Caarmenian",1342,"Cacute",262,"Caron",63178,"Caronsmall",63221,"Ccaron",268,"Ccedilla",199,"Ccedillaacute",7688,"Ccedillasmall",63463,"Ccircle",9400,"Ccircumflex",264,"Cdot",266,"Cdotaccent",266,"Cedillasmall",63416,"Chaarmenian",1353,"Cheabkhasiancyrillic",1212,"Checyrillic",1063,"Chedescenderabkhasiancyrillic",1214,"Chedescendercyrillic",1206,"Chedieresiscyrillic",1268,"Cheharmenian",1347,"Chekhakassiancyrillic",1227,"Cheverticalstrokecyrillic",1208,"Chi",935,"Chook",391,"Circumflexsmall",63222,"Cmonospace",65315,"Coarmenian",1361,"Csmall",63331,"D",68,"DZ",497,"DZcaron",452,"Daarmenian",1332,"Dafrican",393,"Dcaron",270,"Dcedilla",7696,"Dcircle",9401,"Dcircumflexbelow",7698,"Dcroat",272,"Ddotaccent",7690,"Ddotbelow",7692,"Decyrillic",1044,"Deicoptic",1006,"Delta",8710,"Deltagreek",916,"Dhook",394,"Dieresis",63179,"DieresisAcute",63180,"DieresisGrave",63181,"Dieresissmall",63400,"Digammagreek",988,"Djecyrillic",1026,"Dlinebelow",7694,"Dmonospace",65316,"Dotaccentsmall",63223,"Dslash",272,"Dsmall",63332,"Dtopbar",395,"Dz",498,"Dzcaron",453,"Dzeabkhasiancyrillic",1248,"Dzecyrillic",1029,"Dzhecyrillic",1039,"E",69,"Eacute",201,"Eacutesmall",63465,"Ebreve",276,"Ecaron",282,"Ecedillabreve",7708,"Echarmenian",1333,"Ecircle",9402,"Ecircumflex",202,"Ecircumflexacute",7870,"Ecircumflexbelow",7704,"Ecircumflexdotbelow",7878,"Ecircumflexgrave",7872,"Ecircumflexhookabove",7874,"Ecircumflexsmall",63466,"Ecircumflextilde",7876,"Ecyrillic",1028,"Edblgrave",516,"Edieresis",203,"Edieresissmall",63467,"Edot",278,"Edotaccent",278,"Edotbelow",7864,"Efcyrillic",1060,"Egrave",200,"Egravesmall",63464,"Eharmenian",1335,"Ehookabove",7866,"Eightroman",8551,"Einvertedbreve",518,"Eiotifiedcyrillic",1124,"Elcyrillic",1051,"Elevenroman",8554,"Emacron",274,"Emacronacute",7702,"Emacrongrave",7700,"Emcyrillic",1052,"Emonospace",65317,"Encyrillic",1053,"Endescendercyrillic",1186,"Eng",330,"Enghecyrillic",1188,"Enhookcyrillic",1223,"Eogonek",280,"Eopen",400,"Epsilon",917,"Epsilontonos",904,"Ercyrillic",1056,"Ereversed",398,"Ereversedcyrillic",1069,"Escyrillic",1057,"Esdescendercyrillic",1194,"Esh",425,"Esmall",63333,"Eta",919,"Etarmenian",1336,"Etatonos",905,"Eth",208,"Ethsmall",63472,"Etilde",7868,"Etildebelow",7706,"Euro",8364,"Ezh",439,"Ezhcaron",494,"Ezhreversed",440,"F",70,"Fcircle",9403,"Fdotaccent",7710,"Feharmenian",1366,"Feicoptic",996,"Fhook",401,"Fitacyrillic",1138,"Fiveroman",8548,"Fmonospace",65318,"Fourroman",8547,"Fsmall",63334,"G",71,"GBsquare",13191,"Gacute",500,"Gamma",915,"Gammaafrican",404,"Gangiacoptic",1002,"Gbreve",286,"Gcaron",486,"Gcedilla",290,"Gcircle",9404,"Gcircumflex",284,"Gcommaaccent",290,"Gdot",288,"Gdotaccent",288,"Gecyrillic",1043,"Ghadarmenian",1346,"Ghemiddlehookcyrillic",1172,"Ghestrokecyrillic",1170,"Gheupturncyrillic",1168,"Ghook",403,"Gimarmenian",1331,"Gjecyrillic",1027,"Gmacron",7712,"Gmonospace",65319,"Grave",63182,"Gravesmall",63328,"Gsmall",63335,"Gsmallhook",667,"Gstroke",484,"H",72,"H18533",9679,"H18543",9642,"H18551",9643,"H22073",9633,"HPsquare",13259,"Haabkhasiancyrillic",1192,"Hadescendercyrillic",1202,"Hardsigncyrillic",1066,"Hbar",294,"Hbrevebelow",7722,"Hcedilla",7720,"Hcircle",9405,"Hcircumflex",292,"Hdieresis",7718,"Hdotaccent",7714,"Hdotbelow",7716,"Hmonospace",65320,"Hoarmenian",1344,"Horicoptic",1e3,"Hsmall",63336,"Hungarumlaut",63183,"Hungarumlautsmall",63224,"Hzsquare",13200,"I",73,"IAcyrillic",1071,"IJ",306,"IUcyrillic",1070,"Iacute",205,"Iacutesmall",63469,"Ibreve",300,"Icaron",463,"Icircle",9406,"Icircumflex",206,"Icircumflexsmall",63470,"Icyrillic",1030,"Idblgrave",520,"Idieresis",207,"Idieresisacute",7726,"Idieresiscyrillic",1252,"Idieresissmall",63471,"Idot",304,"Idotaccent",304,"Idotbelow",7882,"Iebrevecyrillic",1238,"Iecyrillic",1045,"Ifraktur",8465,"Igrave",204,"Igravesmall",63468,"Ihookabove",7880,"Iicyrillic",1048,"Iinvertedbreve",522,"Iishortcyrillic",1049,"Imacron",298,"Imacroncyrillic",1250,"Imonospace",65321,"Iniarmenian",1339,"Iocyrillic",1025,"Iogonek",302,"Iota",921,"Iotaafrican",406,"Iotadieresis",938,"Iotatonos",906,"Ismall",63337,"Istroke",407,"Itilde",296,"Itildebelow",7724,"Izhitsacyrillic",1140,"Izhitsadblgravecyrillic",1142,"J",74,"Jaarmenian",1345,"Jcircle",9407,"Jcircumflex",308,"Jecyrillic",1032,"Jheharmenian",1355,"Jmonospace",65322,"Jsmall",63338,"K",75,"KBsquare",13189,"KKsquare",13261,"Kabashkircyrillic",1184,"Kacute",7728,"Kacyrillic",1050,"Kadescendercyrillic",1178,"Kahookcyrillic",1219,"Kappa",922,"Kastrokecyrillic",1182,"Kaverticalstrokecyrillic",1180,"Kcaron",488,"Kcedilla",310,"Kcircle",9408,"Kcommaaccent",310,"Kdotbelow",7730,"Keharmenian",1364,"Kenarmenian",1343,"Khacyrillic",1061,"Kheicoptic",998,"Khook",408,"Kjecyrillic",1036,"Klinebelow",7732,"Kmonospace",65323,"Koppacyrillic",1152,"Koppagreek",990,"Ksicyrillic",1134,"Ksmall",63339,"L",76,"LJ",455,"LL",63167,"Lacute",313,"Lambda",923,"Lcaron",317,"Lcedilla",315,"Lcircle",9409,"Lcircumflexbelow",7740,"Lcommaaccent",315,"Ldot",319,"Ldotaccent",319,"Ldotbelow",7734,"Ldotbelowmacron",7736,"Liwnarmenian",1340,"Lj",456,"Ljecyrillic",1033,"Llinebelow",7738,"Lmonospace",65324,"Lslash",321,"Lslashsmall",63225,"Lsmall",63340,"M",77,"MBsquare",13190,"Macron",63184,"Macronsmall",63407,"Macute",7742,"Mcircle",9410,"Mdotaccent",7744,"Mdotbelow",7746,"Menarmenian",1348,"Mmonospace",65325,"Msmall",63341,"Mturned",412,"Mu",924,"N",78,"NJ",458,"Nacute",323,"Ncaron",327,"Ncedilla",325,"Ncircle",9411,"Ncircumflexbelow",7754,"Ncommaaccent",325,"Ndotaccent",7748,"Ndotbelow",7750,"Nhookleft",413,"Nineroman",8552,"Nj",459,"Njecyrillic",1034,"Nlinebelow",7752,"Nmonospace",65326,"Nowarmenian",1350,"Nsmall",63342,"Ntilde",209,"Ntildesmall",63473,"Nu",925,"O",79,"OE",338,"OEsmall",63226,"Oacute",211,"Oacutesmall",63475,"Obarredcyrillic",1256,"Obarreddieresiscyrillic",1258,"Obreve",334,"Ocaron",465,"Ocenteredtilde",415,"Ocircle",9412,"Ocircumflex",212,"Ocircumflexacute",7888,"Ocircumflexdotbelow",7896,"Ocircumflexgrave",7890,"Ocircumflexhookabove",7892,"Ocircumflexsmall",63476,"Ocircumflextilde",7894,"Ocyrillic",1054,"Odblacute",336,"Odblgrave",524,"Odieresis",214,"Odieresiscyrillic",1254,"Odieresissmall",63478,"Odotbelow",7884,"Ogoneksmall",63227,"Ograve",210,"Ogravesmall",63474,"Oharmenian",1365,"Ohm",8486,"Ohookabove",7886,"Ohorn",416,"Ohornacute",7898,"Ohorndotbelow",7906,"Ohorngrave",7900,"Ohornhookabove",7902,"Ohorntilde",7904,"Ohungarumlaut",336,"Oi",418,"Oinvertedbreve",526,"Omacron",332,"Omacronacute",7762,"Omacrongrave",7760,"Omega",8486,"Omegacyrillic",1120,"Omegagreek",937,"Omegaroundcyrillic",1146,"Omegatitlocyrillic",1148,"Omegatonos",911,"Omicron",927,"Omicrontonos",908,"Omonospace",65327,"Oneroman",8544,"Oogonek",490,"Oogonekmacron",492,"Oopen",390,"Oslash",216,"Oslashacute",510,"Oslashsmall",63480,"Osmall",63343,"Ostrokeacute",510,"Otcyrillic",1150,"Otilde",213,"Otildeacute",7756,"Otildedieresis",7758,"Otildesmall",63477,"P",80,"Pacute",7764,"Pcircle",9413,"Pdotaccent",7766,"Pecyrillic",1055,"Peharmenian",1354,"Pemiddlehookcyrillic",1190,"Phi",934,"Phook",420,"Pi",928,"Piwrarmenian",1363,"Pmonospace",65328,"Psi",936,"Psicyrillic",1136,"Psmall",63344,"Q",81,"Qcircle",9414,"Qmonospace",65329,"Qsmall",63345,"R",82,"Raarmenian",1356,"Racute",340,"Rcaron",344,"Rcedilla",342,"Rcircle",9415,"Rcommaaccent",342,"Rdblgrave",528,"Rdotaccent",7768,"Rdotbelow",7770,"Rdotbelowmacron",7772,"Reharmenian",1360,"Rfraktur",8476,"Rho",929,"Ringsmall",63228,"Rinvertedbreve",530,"Rlinebelow",7774,"Rmonospace",65330,"Rsmall",63346,"Rsmallinverted",641,"Rsmallinvertedsuperior",694,"S",83,"SF010000",9484,"SF020000",9492,"SF030000",9488,"SF040000",9496,"SF050000",9532,"SF060000",9516,"SF070000",9524,"SF080000",9500,"SF090000",9508,"SF100000",9472,"SF110000",9474,"SF190000",9569,"SF200000",9570,"SF210000",9558,"SF220000",9557,"SF230000",9571,"SF240000",9553,"SF250000",9559,"SF260000",9565,"SF270000",9564,"SF280000",9563,"SF360000",9566,"SF370000",9567,"SF380000",9562,"SF390000",9556,"SF400000",9577,"SF410000",9574,"SF420000",9568,"SF430000",9552,"SF440000",9580,"SF450000",9575,"SF460000",9576,"SF470000",9572,"SF480000",9573,"SF490000",9561,"SF500000",9560,"SF510000",9554,"SF520000",9555,"SF530000",9579,"SF540000",9578,"Sacute",346,"Sacutedotaccent",7780,"Sampigreek",992,"Scaron",352,"Scarondotaccent",7782,"Scaronsmall",63229,"Scedilla",350,"Schwa",399,"Schwacyrillic",1240,"Schwadieresiscyrillic",1242,"Scircle",9416,"Scircumflex",348,"Scommaaccent",536,"Sdotaccent",7776,"Sdotbelow",7778,"Sdotbelowdotaccent",7784,"Seharmenian",1357,"Sevenroman",8550,"Shaarmenian",1351,"Shacyrillic",1064,"Shchacyrillic",1065,"Sheicoptic",994,"Shhacyrillic",1210,"Shimacoptic",1004,"Sigma",931,"Sixroman",8549,"Smonospace",65331,"Softsigncyrillic",1068,"Ssmall",63347,"Stigmagreek",986,"T",84,"Tau",932,"Tbar",358,"Tcaron",356,"Tcedilla",354,"Tcircle",9417,"Tcircumflexbelow",7792,"Tcommaaccent",354,"Tdotaccent",7786,"Tdotbelow",7788,"Tecyrillic",1058,"Tedescendercyrillic",1196,"Tenroman",8553,"Tetsecyrillic",1204,"Theta",920,"Thook",428,"Thorn",222,"Thornsmall",63486,"Threeroman",8546,"Tildesmall",63230,"Tiwnarmenian",1359,"Tlinebelow",7790,"Tmonospace",65332,"Toarmenian",1337,"Tonefive",444,"Tonesix",388,"Tonetwo",423,"Tretroflexhook",430,"Tsecyrillic",1062,"Tshecyrillic",1035,"Tsmall",63348,"Twelveroman",8555,"Tworoman",8545,"U",85,"Uacute",218,"Uacutesmall",63482,"Ubreve",364,"Ucaron",467,"Ucircle",9418,"Ucircumflex",219,"Ucircumflexbelow",7798,"Ucircumflexsmall",63483,"Ucyrillic",1059,"Udblacute",368,"Udblgrave",532,"Udieresis",220,"Udieresisacute",471,"Udieresisbelow",7794,"Udieresiscaron",473,"Udieresiscyrillic",1264,"Udieresisgrave",475,"Udieresismacron",469,"Udieresissmall",63484,"Udotbelow",7908,"Ugrave",217,"Ugravesmall",63481,"Uhookabove",7910,"Uhorn",431,"Uhornacute",7912,"Uhorndotbelow",7920,"Uhorngrave",7914,"Uhornhookabove",7916,"Uhorntilde",7918,"Uhungarumlaut",368,"Uhungarumlautcyrillic",1266,"Uinvertedbreve",534,"Ukcyrillic",1144,"Umacron",362,"Umacroncyrillic",1262,"Umacrondieresis",7802,"Umonospace",65333,"Uogonek",370,"Upsilon",933,"Upsilon1",978,"Upsilonacutehooksymbolgreek",979,"Upsilonafrican",433,"Upsilondieresis",939,"Upsilondieresishooksymbolgreek",980,"Upsilonhooksymbol",978,"Upsilontonos",910,"Uring",366,"Ushortcyrillic",1038,"Usmall",63349,"Ustraightcyrillic",1198,"Ustraightstrokecyrillic",1200,"Utilde",360,"Utildeacute",7800,"Utildebelow",7796,"V",86,"Vcircle",9419,"Vdotbelow",7806,"Vecyrillic",1042,"Vewarmenian",1358,"Vhook",434,"Vmonospace",65334,"Voarmenian",1352,"Vsmall",63350,"Vtilde",7804,"W",87,"Wacute",7810,"Wcircle",9420,"Wcircumflex",372,"Wdieresis",7812,"Wdotaccent",7814,"Wdotbelow",7816,"Wgrave",7808,"Wmonospace",65335,"Wsmall",63351,"X",88,"Xcircle",9421,"Xdieresis",7820,"Xdotaccent",7818,"Xeharmenian",1341,"Xi",926,"Xmonospace",65336,"Xsmall",63352,"Y",89,"Yacute",221,"Yacutesmall",63485,"Yatcyrillic",1122,"Ycircle",9422,"Ycircumflex",374,"Ydieresis",376,"Ydieresissmall",63487,"Ydotaccent",7822,"Ydotbelow",7924,"Yericyrillic",1067,"Yerudieresiscyrillic",1272,"Ygrave",7922,"Yhook",435,"Yhookabove",7926,"Yiarmenian",1349,"Yicyrillic",1031,"Yiwnarmenian",1362,"Ymonospace",65337,"Ysmall",63353,"Ytilde",7928,"Yusbigcyrillic",1130,"Yusbigiotifiedcyrillic",1132,"Yuslittlecyrillic",1126,"Yuslittleiotifiedcyrillic",1128,"Z",90,"Zaarmenian",1334,"Zacute",377,"Zcaron",381,"Zcaronsmall",63231,"Zcircle",9423,"Zcircumflex",7824,"Zdot",379,"Zdotaccent",379,"Zdotbelow",7826,"Zecyrillic",1047,"Zedescendercyrillic",1176,"Zedieresiscyrillic",1246,"Zeta",918,"Zhearmenian",1338,"Zhebrevecyrillic",1217,"Zhecyrillic",1046,"Zhedescendercyrillic",1174,"Zhedieresiscyrillic",1244,"Zlinebelow",7828,"Zmonospace",65338,"Zsmall",63354,"Zstroke",437,"a",97,"aabengali",2438,"aacute",225,"aadeva",2310,"aagujarati",2694,"aagurmukhi",2566,"aamatragurmukhi",2622,"aarusquare",13059,"aavowelsignbengali",2494,"aavowelsigndeva",2366,"aavowelsigngujarati",2750,"abbreviationmarkarmenian",1375,"abbreviationsigndeva",2416,"abengali",2437,"abopomofo",12570,"abreve",259,"abreveacute",7855,"abrevecyrillic",1233,"abrevedotbelow",7863,"abrevegrave",7857,"abrevehookabove",7859,"abrevetilde",7861,"acaron",462,"acircle",9424,"acircumflex",226,"acircumflexacute",7845,"acircumflexdotbelow",7853,"acircumflexgrave",7847,"acircumflexhookabove",7849,"acircumflextilde",7851,"acute",180,"acutebelowcmb",791,"acutecmb",769,"acutecomb",769,"acutedeva",2388,"acutelowmod",719,"acutetonecmb",833,"acyrillic",1072,"adblgrave",513,"addakgurmukhi",2673,"adeva",2309,"adieresis",228,"adieresiscyrillic",1235,"adieresismacron",479,"adotbelow",7841,"adotmacron",481,"ae",230,"aeacute",509,"aekorean",12624,"aemacron",483,"afii00208",8213,"afii08941",8356,"afii10017",1040,"afii10018",1041,"afii10019",1042,"afii10020",1043,"afii10021",1044,"afii10022",1045,"afii10023",1025,"afii10024",1046,"afii10025",1047,"afii10026",1048,"afii10027",1049,"afii10028",1050,"afii10029",1051,"afii10030",1052,"afii10031",1053,"afii10032",1054,"afii10033",1055,"afii10034",1056,"afii10035",1057,"afii10036",1058,"afii10037",1059,"afii10038",1060,"afii10039",1061,"afii10040",1062,"afii10041",1063,"afii10042",1064,"afii10043",1065,"afii10044",1066,"afii10045",1067,"afii10046",1068,"afii10047",1069,"afii10048",1070,"afii10049",1071,"afii10050",1168,"afii10051",1026,"afii10052",1027,"afii10053",1028,"afii10054",1029,"afii10055",1030,"afii10056",1031,"afii10057",1032,"afii10058",1033,"afii10059",1034,"afii10060",1035,"afii10061",1036,"afii10062",1038,"afii10063",63172,"afii10064",63173,"afii10065",1072,"afii10066",1073,"afii10067",1074,"afii10068",1075,"afii10069",1076,"afii10070",1077,"afii10071",1105,"afii10072",1078,"afii10073",1079,"afii10074",1080,"afii10075",1081,"afii10076",1082,"afii10077",1083,"afii10078",1084,"afii10079",1085,"afii10080",1086,"afii10081",1087,"afii10082",1088,"afii10083",1089,"afii10084",1090,"afii10085",1091,"afii10086",1092,"afii10087",1093,"afii10088",1094,"afii10089",1095,"afii10090",1096,"afii10091",1097,"afii10092",1098,"afii10093",1099,"afii10094",1100,"afii10095",1101,"afii10096",1102,"afii10097",1103,"afii10098",1169,"afii10099",1106,"afii10100",1107,"afii10101",1108,"afii10102",1109,"afii10103",1110,"afii10104",1111,"afii10105",1112,"afii10106",1113,"afii10107",1114,"afii10108",1115,"afii10109",1116,"afii10110",1118,"afii10145",1039,"afii10146",1122,"afii10147",1138,"afii10148",1140,"afii10192",63174,"afii10193",1119,"afii10194",1123,"afii10195",1139,"afii10196",1141,"afii10831",63175,"afii10832",63176,"afii10846",1241,"afii299",8206,"afii300",8207,"afii301",8205,"afii57381",1642,"afii57388",1548,"afii57392",1632,"afii57393",1633,"afii57394",1634,"afii57395",1635,"afii57396",1636,"afii57397",1637,"afii57398",1638,"afii57399",1639,"afii57400",1640,"afii57401",1641,"afii57403",1563,"afii57407",1567,"afii57409",1569,"afii57410",1570,"afii57411",1571,"afii57412",1572,"afii57413",1573,"afii57414",1574,"afii57415",1575,"afii57416",1576,"afii57417",1577,"afii57418",1578,"afii57419",1579,"afii57420",1580,"afii57421",1581,"afii57422",1582,"afii57423",1583,"afii57424",1584,"afii57425",1585,"afii57426",1586,"afii57427",1587,"afii57428",1588,"afii57429",1589,"afii57430",1590,"afii57431",1591,"afii57432",1592,"afii57433",1593,"afii57434",1594,"afii57440",1600,"afii57441",1601,"afii57442",1602,"afii57443",1603,"afii57444",1604,"afii57445",1605,"afii57446",1606,"afii57448",1608,"afii57449",1609,"afii57450",1610,"afii57451",1611,"afii57452",1612,"afii57453",1613,"afii57454",1614,"afii57455",1615,"afii57456",1616,"afii57457",1617,"afii57458",1618,"afii57470",1607,"afii57505",1700,"afii57506",1662,"afii57507",1670,"afii57508",1688,"afii57509",1711,"afii57511",1657,"afii57512",1672,"afii57513",1681,"afii57514",1722,"afii57519",1746,"afii57534",1749,"afii57636",8362,"afii57645",1470,"afii57658",1475,"afii57664",1488,"afii57665",1489,"afii57666",1490,"afii57667",1491,"afii57668",1492,"afii57669",1493,"afii57670",1494,"afii57671",1495,"afii57672",1496,"afii57673",1497,"afii57674",1498,"afii57675",1499,"afii57676",1500,"afii57677",1501,"afii57678",1502,"afii57679",1503,"afii57680",1504,"afii57681",1505,"afii57682",1506,"afii57683",1507,"afii57684",1508,"afii57685",1509,"afii57686",1510,"afii57687",1511,"afii57688",1512,"afii57689",1513,"afii57690",1514,"afii57694",64298,"afii57695",64299,"afii57700",64331,"afii57705",64287,"afii57716",1520,"afii57717",1521,"afii57718",1522,"afii57723",64309,"afii57793",1460,"afii57794",1461,"afii57795",1462,"afii57796",1467,"afii57797",1464,"afii57798",1463,"afii57799",1456,"afii57800",1458,"afii57801",1457,"afii57802",1459,"afii57803",1474,"afii57804",1473,"afii57806",1465,"afii57807",1468,"afii57839",1469,"afii57841",1471,"afii57842",1472,"afii57929",700,"afii61248",8453,"afii61289",8467,"afii61352",8470,"afii61573",8236,"afii61574",8237,"afii61575",8238,"afii61664",8204,"afii63167",1645,"afii64937",701,"agrave",224,"agujarati",2693,"agurmukhi",2565,"ahiragana",12354,"ahookabove",7843,"aibengali",2448,"aibopomofo",12574,"aideva",2320,"aiecyrillic",1237,"aigujarati",2704,"aigurmukhi",2576,"aimatragurmukhi",2632,"ainarabic",1593,"ainfinalarabic",65226,"aininitialarabic",65227,"ainmedialarabic",65228,"ainvertedbreve",515,"aivowelsignbengali",2504,"aivowelsigndeva",2376,"aivowelsigngujarati",2760,"akatakana",12450,"akatakanahalfwidth",65393,"akorean",12623,"alef",1488,"alefarabic",1575,"alefdageshhebrew",64304,"aleffinalarabic",65166,"alefhamzaabovearabic",1571,"alefhamzaabovefinalarabic",65156,"alefhamzabelowarabic",1573,"alefhamzabelowfinalarabic",65160,"alefhebrew",1488,"aleflamedhebrew",64335,"alefmaddaabovearabic",1570,"alefmaddaabovefinalarabic",65154,"alefmaksuraarabic",1609,"alefmaksurafinalarabic",65264,"alefmaksurainitialarabic",65267,"alefmaksuramedialarabic",65268,"alefpatahhebrew",64302,"alefqamatshebrew",64303,"aleph",8501,"allequal",8780,"alpha",945,"alphatonos",940,"amacron",257,"amonospace",65345,"ampersand",38,"ampersandmonospace",65286,"ampersandsmall",63270,"amsquare",13250,"anbopomofo",12578,"angbopomofo",12580,"angbracketleft",12296,"angbracketright",12297,"angkhankhuthai",3674,"angle",8736,"anglebracketleft",12296,"anglebracketleftvertical",65087,"anglebracketright",12297,"anglebracketrightvertical",65088,"angleleft",9001,"angleright",9002,"angstrom",8491,"anoteleia",903,"anudattadeva",2386,"anusvarabengali",2434,"anusvaradeva",2306,"anusvaragujarati",2690,"aogonek",261,"apaatosquare",13056,"aparen",9372,"apostrophearmenian",1370,"apostrophemod",700,"apple",63743,"approaches",8784,"approxequal",8776,"approxequalorimage",8786,"approximatelyequal",8773,"araeaekorean",12686,"araeakorean",12685,"arc",8978,"arighthalfring",7834,"aring",229,"aringacute",507,"aringbelow",7681,"arrowboth",8596,"arrowdashdown",8675,"arrowdashleft",8672,"arrowdashright",8674,"arrowdashup",8673,"arrowdblboth",8660,"arrowdbldown",8659,"arrowdblleft",8656,"arrowdblright",8658,"arrowdblup",8657,"arrowdown",8595,"arrowdownleft",8601,"arrowdownright",8600,"arrowdownwhite",8681,"arrowheaddownmod",709,"arrowheadleftmod",706,"arrowheadrightmod",707,"arrowheadupmod",708,"arrowhorizex",63719,"arrowleft",8592,"arrowleftdbl",8656,"arrowleftdblstroke",8653,"arrowleftoverright",8646,"arrowleftwhite",8678,"arrowright",8594,"arrowrightdblstroke",8655,"arrowrightheavy",10142,"arrowrightoverleft",8644,"arrowrightwhite",8680,"arrowtableft",8676,"arrowtabright",8677,"arrowup",8593,"arrowupdn",8597,"arrowupdnbse",8616,"arrowupdownbase",8616,"arrowupleft",8598,"arrowupleftofdown",8645,"arrowupright",8599,"arrowupwhite",8679,"arrowvertex",63718,"asciicircum",94,"asciicircummonospace",65342,"asciitilde",126,"asciitildemonospace",65374,"ascript",593,"ascriptturned",594,"asmallhiragana",12353,"asmallkatakana",12449,"asmallkatakanahalfwidth",65383,"asterisk",42,"asteriskaltonearabic",1645,"asteriskarabic",1645,"asteriskmath",8727,"asteriskmonospace",65290,"asterisksmall",65121,"asterism",8258,"asuperior",63209,"asymptoticallyequal",8771,"at",64,"atilde",227,"atmonospace",65312,"atsmall",65131,"aturned",592,"aubengali",2452,"aubopomofo",12576,"audeva",2324,"augujarati",2708,"augurmukhi",2580,"aulengthmarkbengali",2519,"aumatragurmukhi",2636,"auvowelsignbengali",2508,"auvowelsigndeva",2380,"auvowelsigngujarati",2764,"avagrahadeva",2365,"aybarmenian",1377,"ayin",1506,"ayinaltonehebrew",64288,"ayinhebrew",1506,"b",98,"babengali",2476,"backslash",92,"backslashmonospace",65340,"badeva",2348,"bagujarati",2732,"bagurmukhi",2604,"bahiragana",12400,"bahtthai",3647,"bakatakana",12496,"bar",124,"barmonospace",65372,"bbopomofo",12549,"bcircle",9425,"bdotaccent",7683,"bdotbelow",7685,"beamedsixteenthnotes",9836,"because",8757,"becyrillic",1073,"beharabic",1576,"behfinalarabic",65168,"behinitialarabic",65169,"behiragana",12409,"behmedialarabic",65170,"behmeeminitialarabic",64671,"behmeemisolatedarabic",64520,"behnoonfinalarabic",64621,"bekatakana",12505,"benarmenian",1378,"bet",1489,"beta",946,"betasymbolgreek",976,"betdagesh",64305,"betdageshhebrew",64305,"bethebrew",1489,"betrafehebrew",64332,"bhabengali",2477,"bhadeva",2349,"bhagujarati",2733,"bhagurmukhi",2605,"bhook",595,"bihiragana",12403,"bikatakana",12499,"bilabialclick",664,"bindigurmukhi",2562,"birusquare",13105,"blackcircle",9679,"blackdiamond",9670,"blackdownpointingtriangle",9660,"blackleftpointingpointer",9668,"blackleftpointingtriangle",9664,"blacklenticularbracketleft",12304,"blacklenticularbracketleftvertical",65083,"blacklenticularbracketright",12305,"blacklenticularbracketrightvertical",65084,"blacklowerlefttriangle",9699,"blacklowerrighttriangle",9698,"blackrectangle",9644,"blackrightpointingpointer",9658,"blackrightpointingtriangle",9654,"blacksmallsquare",9642,"blacksmilingface",9787,"blacksquare",9632,"blackstar",9733,"blackupperlefttriangle",9700,"blackupperrighttriangle",9701,"blackuppointingsmalltriangle",9652,"blackuppointingtriangle",9650,"blank",9251,"blinebelow",7687,"block",9608,"bmonospace",65346,"bobaimaithai",3610,"bohiragana",12412,"bokatakana",12508,"bparen",9373,"bqsquare",13251,"braceex",63732,"braceleft",123,"braceleftbt",63731,"braceleftmid",63730,"braceleftmonospace",65371,"braceleftsmall",65115,"bracelefttp",63729,"braceleftvertical",65079,"braceright",125,"bracerightbt",63742,"bracerightmid",63741,"bracerightmonospace",65373,"bracerightsmall",65116,"bracerighttp",63740,"bracerightvertical",65080,"bracketleft",91,"bracketleftbt",63728,"bracketleftex",63727,"bracketleftmonospace",65339,"bracketlefttp",63726,"bracketright",93,"bracketrightbt",63739,"bracketrightex",63738,"bracketrightmonospace",65341,"bracketrighttp",63737,"breve",728,"brevebelowcmb",814,"brevecmb",774,"breveinvertedbelowcmb",815,"breveinvertedcmb",785,"breveinverteddoublecmb",865,"bridgebelowcmb",810,"bridgeinvertedbelowcmb",826,"brokenbar",166,"bstroke",384,"bsuperior",63210,"btopbar",387,"buhiragana",12406,"bukatakana",12502,"bullet",8226,"bulletinverse",9688,"bulletoperator",8729,"bullseye",9678,"c",99,"caarmenian",1390,"cabengali",2458,"cacute",263,"cadeva",2330,"cagujarati",2714,"cagurmukhi",2586,"calsquare",13192,"candrabindubengali",2433,"candrabinducmb",784,"candrabindudeva",2305,"candrabindugujarati",2689,"capslock",8682,"careof",8453,"caron",711,"caronbelowcmb",812,"caroncmb",780,"carriagereturn",8629,"cbopomofo",12568,"ccaron",269,"ccedilla",231,"ccedillaacute",7689,"ccircle",9426,"ccircumflex",265,"ccurl",597,"cdot",267,"cdotaccent",267,"cdsquare",13253,"cedilla",184,"cedillacmb",807,"cent",162,"centigrade",8451,"centinferior",63199,"centmonospace",65504,"centoldstyle",63394,"centsuperior",63200,"chaarmenian",1401,"chabengali",2459,"chadeva",2331,"chagujarati",2715,"chagurmukhi",2587,"chbopomofo",12564,"cheabkhasiancyrillic",1213,"checkmark",10003,"checyrillic",1095,"chedescenderabkhasiancyrillic",1215,"chedescendercyrillic",1207,"chedieresiscyrillic",1269,"cheharmenian",1395,"chekhakassiancyrillic",1228,"cheverticalstrokecyrillic",1209,"chi",967,"chieuchacirclekorean",12919,"chieuchaparenkorean",12823,"chieuchcirclekorean",12905,"chieuchkorean",12618,"chieuchparenkorean",12809,"chochangthai",3594,"chochanthai",3592,"chochingthai",3593,"chochoethai",3596,"chook",392,"cieucacirclekorean",12918,"cieucaparenkorean",12822,"cieuccirclekorean",12904,"cieuckorean",12616,"cieucparenkorean",12808,"cieucuparenkorean",12828,"circle",9675,"circlecopyrt",169,"circlemultiply",8855,"circleot",8857,"circleplus",8853,"circlepostalmark",12342,"circlewithlefthalfblack",9680,"circlewithrighthalfblack",9681,"circumflex",710,"circumflexbelowcmb",813,"circumflexcmb",770,"clear",8999,"clickalveolar",450,"clickdental",448,"clicklateral",449,"clickretroflex",451,"club",9827,"clubsuitblack",9827,"clubsuitwhite",9831,"cmcubedsquare",13220,"cmonospace",65347,"cmsquaredsquare",13216,"coarmenian",1409,"colon",58,"colonmonetary",8353,"colonmonospace",65306,"colonsign",8353,"colonsmall",65109,"colontriangularhalfmod",721,"colontriangularmod",720,"comma",44,"commaabovecmb",787,"commaaboverightcmb",789,"commaaccent",63171,"commaarabic",1548,"commaarmenian",1373,"commainferior",63201,"commamonospace",65292,"commareversedabovecmb",788,"commareversedmod",701,"commasmall",65104,"commasuperior",63202,"commaturnedabovecmb",786,"commaturnedmod",699,"compass",9788,"congruent",8773,"contourintegral",8750,"control",8963,"controlACK",6,"controlBEL",7,"controlBS",8,"controlCAN",24,"controlCR",13,"controlDC1",17,"controlDC2",18,"controlDC3",19,"controlDC4",20,"controlDEL",127,"controlDLE",16,"controlEM",25,"controlENQ",5,"controlEOT",4,"controlESC",27,"controlETB",23,"controlETX",3,"controlFF",12,"controlFS",28,"controlGS",29,"controlHT",9,"controlLF",10,"controlNAK",21,"controlNULL",0,"controlRS",30,"controlSI",15,"controlSO",14,"controlSOT",2,"controlSTX",1,"controlSUB",26,"controlSYN",22,"controlUS",31,"controlVT",11,"copyright",169,"copyrightsans",63721,"copyrightserif",63193,"cornerbracketleft",12300,"cornerbracketlefthalfwidth",65378,"cornerbracketleftvertical",65089,"cornerbracketright",12301,"cornerbracketrighthalfwidth",65379,"cornerbracketrightvertical",65090,"corporationsquare",13183,"cosquare",13255,"coverkgsquare",13254,"cparen",9374,"cruzeiro",8354,"cstretched",663,"curlyand",8911,"curlyor",8910,"currency",164,"cyrBreve",63185,"cyrFlex",63186,"cyrbreve",63188,"cyrflex",63189,"d",100,"daarmenian",1380,"dabengali",2470,"dadarabic",1590,"dadeva",2342,"dadfinalarabic",65214,"dadinitialarabic",65215,"dadmedialarabic",65216,"dagesh",1468,"dageshhebrew",1468,"dagger",8224,"daggerdbl",8225,"dagujarati",2726,"dagurmukhi",2598,"dahiragana",12384,"dakatakana",12480,"dalarabic",1583,"dalet",1491,"daletdagesh",64307,"daletdageshhebrew",64307,"dalethebrew",1491,"dalfinalarabic",65194,"dammaarabic",1615,"dammalowarabic",1615,"dammatanaltonearabic",1612,"dammatanarabic",1612,"danda",2404,"dargahebrew",1447,"dargalefthebrew",1447,"dasiapneumatacyrilliccmb",1157,"dblGrave",63187,"dblanglebracketleft",12298,"dblanglebracketleftvertical",65085,"dblanglebracketright",12299,"dblanglebracketrightvertical",65086,"dblarchinvertedbelowcmb",811,"dblarrowleft",8660,"dblarrowright",8658,"dbldanda",2405,"dblgrave",63190,"dblgravecmb",783,"dblintegral",8748,"dbllowline",8215,"dbllowlinecmb",819,"dbloverlinecmb",831,"dblprimemod",698,"dblverticalbar",8214,"dblverticallineabovecmb",782,"dbopomofo",12553,"dbsquare",13256,"dcaron",271,"dcedilla",7697,"dcircle",9427,"dcircumflexbelow",7699,"dcroat",273,"ddabengali",2465,"ddadeva",2337,"ddagujarati",2721,"ddagurmukhi",2593,"ddalarabic",1672,"ddalfinalarabic",64393,"dddhadeva",2396,"ddhabengali",2466,"ddhadeva",2338,"ddhagujarati",2722,"ddhagurmukhi",2594,"ddotaccent",7691,"ddotbelow",7693,"decimalseparatorarabic",1643,"decimalseparatorpersian",1643,"decyrillic",1076,"degree",176,"dehihebrew",1453,"dehiragana",12391,"deicoptic",1007,"dekatakana",12487,"deleteleft",9003,"deleteright",8998,"delta",948,"deltaturned",397,"denominatorminusonenumeratorbengali",2552,"dezh",676,"dhabengali",2471,"dhadeva",2343,"dhagujarati",2727,"dhagurmukhi",2599,"dhook",599,"dialytikatonos",901,"dialytikatonoscmb",836,"diamond",9830,"diamondsuitwhite",9826,"dieresis",168,"dieresisacute",63191,"dieresisbelowcmb",804,"dieresiscmb",776,"dieresisgrave",63192,"dieresistonos",901,"dihiragana",12386,"dikatakana",12482,"dittomark",12291,"divide",247,"divides",8739,"divisionslash",8725,"djecyrillic",1106,"dkshade",9619,"dlinebelow",7695,"dlsquare",13207,"dmacron",273,"dmonospace",65348,"dnblock",9604,"dochadathai",3598,"dodekthai",3604,"dohiragana",12393,"dokatakana",12489,"dollar",36,"dollarinferior",63203,"dollarmonospace",65284,"dollaroldstyle",63268,"dollarsmall",65129,"dollarsuperior",63204,"dong",8363,"dorusquare",13094,"dotaccent",729,"dotaccentcmb",775,"dotbelowcmb",803,"dotbelowcomb",803,"dotkatakana",12539,"dotlessi",305,"dotlessj",63166,"dotlessjstrokehook",644,"dotmath",8901,"dottedcircle",9676,"doubleyodpatah",64287,"doubleyodpatahhebrew",64287,"downtackbelowcmb",798,"downtackmod",725,"dparen",9375,"dsuperior",63211,"dtail",598,"dtopbar",396,"duhiragana",12389,"dukatakana",12485,"dz",499,"dzaltone",675,"dzcaron",454,"dzcurl",677,"dzeabkhasiancyrillic",1249,"dzecyrillic",1109,"dzhecyrillic",1119,"e",101,"eacute",233,"earth",9793,"ebengali",2447,"ebopomofo",12572,"ebreve",277,"ecandradeva",2317,"ecandragujarati",2701,"ecandravowelsigndeva",2373,"ecandravowelsigngujarati",2757,"ecaron",283,"ecedillabreve",7709,"echarmenian",1381,"echyiwnarmenian",1415,"ecircle",9428,"ecircumflex",234,"ecircumflexacute",7871,"ecircumflexbelow",7705,"ecircumflexdotbelow",7879,"ecircumflexgrave",7873,"ecircumflexhookabove",7875,"ecircumflextilde",7877,"ecyrillic",1108,"edblgrave",517,"edeva",2319,"edieresis",235,"edot",279,"edotaccent",279,"edotbelow",7865,"eegurmukhi",2575,"eematragurmukhi",2631,"efcyrillic",1092,"egrave",232,"egujarati",2703,"eharmenian",1383,"ehbopomofo",12573,"ehiragana",12360,"ehookabove",7867,"eibopomofo",12575,"eight",56,"eightarabic",1640,"eightbengali",2542,"eightcircle",9319,"eightcircleinversesansserif",10129,"eightdeva",2414,"eighteencircle",9329,"eighteenparen",9349,"eighteenperiod",9369,"eightgujarati",2798,"eightgurmukhi",2670,"eighthackarabic",1640,"eighthangzhou",12328,"eighthnotebeamed",9835,"eightideographicparen",12839,"eightinferior",8328,"eightmonospace",65304,"eightoldstyle",63288,"eightparen",9339,"eightperiod",9359,"eightpersian",1784,"eightroman",8567,"eightsuperior",8312,"eightthai",3672,"einvertedbreve",519,"eiotifiedcyrillic",1125,"ekatakana",12456,"ekatakanahalfwidth",65396,"ekonkargurmukhi",2676,"ekorean",12628,"elcyrillic",1083,"element",8712,"elevencircle",9322,"elevenparen",9342,"elevenperiod",9362,"elevenroman",8570,"ellipsis",8230,"ellipsisvertical",8942,"emacron",275,"emacronacute",7703,"emacrongrave",7701,"emcyrillic",1084,"emdash",8212,"emdashvertical",65073,"emonospace",65349,"emphasismarkarmenian",1371,"emptyset",8709,"enbopomofo",12579,"encyrillic",1085,"endash",8211,"endashvertical",65074,"endescendercyrillic",1187,"eng",331,"engbopomofo",12581,"enghecyrillic",1189,"enhookcyrillic",1224,"enspace",8194,"eogonek",281,"eokorean",12627,"eopen",603,"eopenclosed",666,"eopenreversed",604,"eopenreversedclosed",606,"eopenreversedhook",605,"eparen",9376,"epsilon",949,"epsilontonos",941,"equal",61,"equalmonospace",65309,"equalsmall",65126,"equalsuperior",8316,"equivalence",8801,"erbopomofo",12582,"ercyrillic",1088,"ereversed",600,"ereversedcyrillic",1101,"escyrillic",1089,"esdescendercyrillic",1195,"esh",643,"eshcurl",646,"eshortdeva",2318,"eshortvowelsigndeva",2374,"eshreversedloop",426,"eshsquatreversed",645,"esmallhiragana",12359,"esmallkatakana",12455,"esmallkatakanahalfwidth",65386,"estimated",8494,"esuperior",63212,"eta",951,"etarmenian",1384,"etatonos",942,"eth",240,"etilde",7869,"etildebelow",7707,"etnahtafoukhhebrew",1425,"etnahtafoukhlefthebrew",1425,"etnahtahebrew",1425,"etnahtalefthebrew",1425,"eturned",477,"eukorean",12641,"euro",8364,"evowelsignbengali",2503,"evowelsigndeva",2375,"evowelsigngujarati",2759,"exclam",33,"exclamarmenian",1372,"exclamdbl",8252,"exclamdown",161,"exclamdownsmall",63393,"exclammonospace",65281,"exclamsmall",63265,"existential",8707,"ezh",658,"ezhcaron",495,"ezhcurl",659,"ezhreversed",441,"ezhtail",442,"f",102,"fadeva",2398,"fagurmukhi",2654,"fahrenheit",8457,"fathaarabic",1614,"fathalowarabic",1614,"fathatanarabic",1611,"fbopomofo",12552,"fcircle",9429,"fdotaccent",7711,"feharabic",1601,"feharmenian",1414,"fehfinalarabic",65234,"fehinitialarabic",65235,"fehmedialarabic",65236,"feicoptic",997,"female",9792,"ff",64256,"f_f",64256,"ffi",64259,"f_f_i",64259,"ffl",64260,"f_f_l",64260,"fi",64257,"f_i",64257,"fifteencircle",9326,"fifteenparen",9346,"fifteenperiod",9366,"figuredash",8210,"filledbox",9632,"filledrect",9644,"finalkaf",1498,"finalkafdagesh",64314,"finalkafdageshhebrew",64314,"finalkafhebrew",1498,"finalmem",1501,"finalmemhebrew",1501,"finalnun",1503,"finalnunhebrew",1503,"finalpe",1507,"finalpehebrew",1507,"finaltsadi",1509,"finaltsadihebrew",1509,"firsttonechinese",713,"fisheye",9673,"fitacyrillic",1139,"five",53,"fivearabic",1637,"fivebengali",2539,"fivecircle",9316,"fivecircleinversesansserif",10126,"fivedeva",2411,"fiveeighths",8541,"fivegujarati",2795,"fivegurmukhi",2667,"fivehackarabic",1637,"fivehangzhou",12325,"fiveideographicparen",12836,"fiveinferior",8325,"fivemonospace",65301,"fiveoldstyle",63285,"fiveparen",9336,"fiveperiod",9356,"fivepersian",1781,"fiveroman",8564,"fivesuperior",8309,"fivethai",3669,"fl",64258,"f_l",64258,"florin",402,"fmonospace",65350,"fmsquare",13209,"fofanthai",3615,"fofathai",3613,"fongmanthai",3663,"forall",8704,"four",52,"fourarabic",1636,"fourbengali",2538,"fourcircle",9315,"fourcircleinversesansserif",10125,"fourdeva",2410,"fourgujarati",2794,"fourgurmukhi",2666,"fourhackarabic",1636,"fourhangzhou",12324,"fourideographicparen",12835,"fourinferior",8324,"fourmonospace",65300,"fournumeratorbengali",2551,"fouroldstyle",63284,"fourparen",9335,"fourperiod",9355,"fourpersian",1780,"fourroman",8563,"foursuperior",8308,"fourteencircle",9325,"fourteenparen",9345,"fourteenperiod",9365,"fourthai",3668,"fourthtonechinese",715,"fparen",9377,"fraction",8260,"franc",8355,"g",103,"gabengali",2455,"gacute",501,"gadeva",2327,"gafarabic",1711,"gaffinalarabic",64403,"gafinitialarabic",64404,"gafmedialarabic",64405,"gagujarati",2711,"gagurmukhi",2583,"gahiragana",12364,"gakatakana",12460,"gamma",947,"gammalatinsmall",611,"gammasuperior",736,"gangiacoptic",1003,"gbopomofo",12557,"gbreve",287,"gcaron",487,"gcedilla",291,"gcircle",9430,"gcircumflex",285,"gcommaaccent",291,"gdot",289,"gdotaccent",289,"gecyrillic",1075,"gehiragana",12370,"gekatakana",12466,"geometricallyequal",8785,"gereshaccenthebrew",1436,"gereshhebrew",1523,"gereshmuqdamhebrew",1437,"germandbls",223,"gershayimaccenthebrew",1438,"gershayimhebrew",1524,"getamark",12307,"ghabengali",2456,"ghadarmenian",1394,"ghadeva",2328,"ghagujarati",2712,"ghagurmukhi",2584,"ghainarabic",1594,"ghainfinalarabic",65230,"ghaininitialarabic",65231,"ghainmedialarabic",65232,"ghemiddlehookcyrillic",1173,"ghestrokecyrillic",1171,"gheupturncyrillic",1169,"ghhadeva",2394,"ghhagurmukhi",2650,"ghook",608,"ghzsquare",13203,"gihiragana",12366,"gikatakana",12462,"gimarmenian",1379,"gimel",1490,"gimeldagesh",64306,"gimeldageshhebrew",64306,"gimelhebrew",1490,"gjecyrillic",1107,"glottalinvertedstroke",446,"glottalstop",660,"glottalstopinverted",662,"glottalstopmod",704,"glottalstopreversed",661,"glottalstopreversedmod",705,"glottalstopreversedsuperior",740,"glottalstopstroke",673,"glottalstopstrokereversed",674,"gmacron",7713,"gmonospace",65351,"gohiragana",12372,"gokatakana",12468,"gparen",9378,"gpasquare",13228,"gradient",8711,"grave",96,"gravebelowcmb",790,"gravecmb",768,"gravecomb",768,"gravedeva",2387,"gravelowmod",718,"gravemonospace",65344,"gravetonecmb",832,"greater",62,"greaterequal",8805,"greaterequalorless",8923,"greatermonospace",65310,"greaterorequivalent",8819,"greaterorless",8823,"greateroverequal",8807,"greatersmall",65125,"gscript",609,"gstroke",485,"guhiragana",12368,"guillemotleft",171,"guillemotright",187,"guilsinglleft",8249,"guilsinglright",8250,"gukatakana",12464,"guramusquare",13080,"gysquare",13257,"h",104,"haabkhasiancyrillic",1193,"haaltonearabic",1729,"habengali",2489,"hadescendercyrillic",1203,"hadeva",2361,"hagujarati",2745,"hagurmukhi",2617,"haharabic",1581,"hahfinalarabic",65186,"hahinitialarabic",65187,"hahiragana",12399,"hahmedialarabic",65188,"haitusquare",13098,"hakatakana",12495,"hakatakanahalfwidth",65418,"halantgurmukhi",2637,"hamzaarabic",1569,"hamzalowarabic",1569,"hangulfiller",12644,"hardsigncyrillic",1098,"harpoonleftbarbup",8636,"harpoonrightbarbup",8640,"hasquare",13258,"hatafpatah",1458,"hatafpatah16",1458,"hatafpatah23",1458,"hatafpatah2f",1458,"hatafpatahhebrew",1458,"hatafpatahnarrowhebrew",1458,"hatafpatahquarterhebrew",1458,"hatafpatahwidehebrew",1458,"hatafqamats",1459,"hatafqamats1b",1459,"hatafqamats28",1459,"hatafqamats34",1459,"hatafqamatshebrew",1459,"hatafqamatsnarrowhebrew",1459,"hatafqamatsquarterhebrew",1459,"hatafqamatswidehebrew",1459,"hatafsegol",1457,"hatafsegol17",1457,"hatafsegol24",1457,"hatafsegol30",1457,"hatafsegolhebrew",1457,"hatafsegolnarrowhebrew",1457,"hatafsegolquarterhebrew",1457,"hatafsegolwidehebrew",1457,"hbar",295,"hbopomofo",12559,"hbrevebelow",7723,"hcedilla",7721,"hcircle",9431,"hcircumflex",293,"hdieresis",7719,"hdotaccent",7715,"hdotbelow",7717,"he",1492,"heart",9829,"heartsuitblack",9829,"heartsuitwhite",9825,"hedagesh",64308,"hedageshhebrew",64308,"hehaltonearabic",1729,"heharabic",1607,"hehebrew",1492,"hehfinalaltonearabic",64423,"hehfinalalttwoarabic",65258,"hehfinalarabic",65258,"hehhamzaabovefinalarabic",64421,"hehhamzaaboveisolatedarabic",64420,"hehinitialaltonearabic",64424,"hehinitialarabic",65259,"hehiragana",12408,"hehmedialaltonearabic",64425,"hehmedialarabic",65260,"heiseierasquare",13179,"hekatakana",12504,"hekatakanahalfwidth",65421,"hekutaarusquare",13110,"henghook",615,"herutusquare",13113,"het",1495,"hethebrew",1495,"hhook",614,"hhooksuperior",689,"hieuhacirclekorean",12923,"hieuhaparenkorean",12827,"hieuhcirclekorean",12909,"hieuhkorean",12622,"hieuhparenkorean",12813,"hihiragana",12402,"hikatakana",12498,"hikatakanahalfwidth",65419,"hiriq",1460,"hiriq14",1460,"hiriq21",1460,"hiriq2d",1460,"hiriqhebrew",1460,"hiriqnarrowhebrew",1460,"hiriqquarterhebrew",1460,"hiriqwidehebrew",1460,"hlinebelow",7830,"hmonospace",65352,"hoarmenian",1392,"hohipthai",3627,"hohiragana",12411,"hokatakana",12507,"hokatakanahalfwidth",65422,"holam",1465,"holam19",1465,"holam26",1465,"holam32",1465,"holamhebrew",1465,"holamnarrowhebrew",1465,"holamquarterhebrew",1465,"holamwidehebrew",1465,"honokhukthai",3630,"hookabovecomb",777,"hookcmb",777,"hookpalatalizedbelowcmb",801,"hookretroflexbelowcmb",802,"hoonsquare",13122,"horicoptic",1001,"horizontalbar",8213,"horncmb",795,"hotsprings",9832,"house",8962,"hparen",9379,"hsuperior",688,"hturned",613,"huhiragana",12405,"huiitosquare",13107,"hukatakana",12501,"hukatakanahalfwidth",65420,"hungarumlaut",733,"hungarumlautcmb",779,"hv",405,"hyphen",45,"hypheninferior",63205,"hyphenmonospace",65293,"hyphensmall",65123,"hyphensuperior",63206,"hyphentwo",8208,"i",105,"iacute",237,"iacyrillic",1103,"ibengali",2439,"ibopomofo",12583,"ibreve",301,"icaron",464,"icircle",9432,"icircumflex",238,"icyrillic",1110,"idblgrave",521,"ideographearthcircle",12943,"ideographfirecircle",12939,"ideographicallianceparen",12863,"ideographiccallparen",12858,"ideographiccentrecircle",12965,"ideographicclose",12294,"ideographiccomma",12289,"ideographiccommaleft",65380,"ideographiccongratulationparen",12855,"ideographiccorrectcircle",12963,"ideographicearthparen",12847,"ideographicenterpriseparen",12861,"ideographicexcellentcircle",12957,"ideographicfestivalparen",12864,"ideographicfinancialcircle",12950,"ideographicfinancialparen",12854,"ideographicfireparen",12843,"ideographichaveparen",12850,"ideographichighcircle",12964,"ideographiciterationmark",12293,"ideographiclaborcircle",12952,"ideographiclaborparen",12856,"ideographicleftcircle",12967,"ideographiclowcircle",12966,"ideographicmedicinecircle",12969,"ideographicmetalparen",12846,"ideographicmoonparen",12842,"ideographicnameparen",12852,"ideographicperiod",12290,"ideographicprintcircle",12958,"ideographicreachparen",12867,"ideographicrepresentparen",12857,"ideographicresourceparen",12862,"ideographicrightcircle",12968,"ideographicsecretcircle",12953,"ideographicselfparen",12866,"ideographicsocietyparen",12851,"ideographicspace",12288,"ideographicspecialparen",12853,"ideographicstockparen",12849,"ideographicstudyparen",12859,"ideographicsunparen",12848,"ideographicsuperviseparen",12860,"ideographicwaterparen",12844,"ideographicwoodparen",12845,"ideographiczero",12295,"ideographmetalcircle",12942,"ideographmooncircle",12938,"ideographnamecircle",12948,"ideographsuncircle",12944,"ideographwatercircle",12940,"ideographwoodcircle",12941,"ideva",2311,"idieresis",239,"idieresisacute",7727,"idieresiscyrillic",1253,"idotbelow",7883,"iebrevecyrillic",1239,"iecyrillic",1077,"ieungacirclekorean",12917,"ieungaparenkorean",12821,"ieungcirclekorean",12903,"ieungkorean",12615,"ieungparenkorean",12807,"igrave",236,"igujarati",2695,"igurmukhi",2567,"ihiragana",12356,"ihookabove",7881,"iibengali",2440,"iicyrillic",1080,"iideva",2312,"iigujarati",2696,"iigurmukhi",2568,"iimatragurmukhi",2624,"iinvertedbreve",523,"iishortcyrillic",1081,"iivowelsignbengali",2496,"iivowelsigndeva",2368,"iivowelsigngujarati",2752,"ij",307,"ikatakana",12452,"ikatakanahalfwidth",65394,"ikorean",12643,"ilde",732,"iluyhebrew",1452,"imacron",299,"imacroncyrillic",1251,"imageorapproximatelyequal",8787,"imatragurmukhi",2623,"imonospace",65353,"increment",8710,"infinity",8734,"iniarmenian",1387,"integral",8747,"integralbottom",8993,"integralbt",8993,"integralex",63733,"integraltop",8992,"integraltp",8992,"intersection",8745,"intisquare",13061,"invbullet",9688,"invcircle",9689,"invsmileface",9787,"iocyrillic",1105,"iogonek",303,"iota",953,"iotadieresis",970,"iotadieresistonos",912,"iotalatin",617,"iotatonos",943,"iparen",9380,"irigurmukhi",2674,"ismallhiragana",12355,"ismallkatakana",12451,"ismallkatakanahalfwidth",65384,"issharbengali",2554,"istroke",616,"isuperior",63213,"iterationhiragana",12445,"iterationkatakana",12541,"itilde",297,"itildebelow",7725,"iubopomofo",12585,"iucyrillic",1102,"ivowelsignbengali",2495,"ivowelsigndeva",2367,"ivowelsigngujarati",2751,"izhitsacyrillic",1141,"izhitsadblgravecyrillic",1143,"j",106,"jaarmenian",1393,"jabengali",2460,"jadeva",2332,"jagujarati",2716,"jagurmukhi",2588,"jbopomofo",12560,"jcaron",496,"jcircle",9433,"jcircumflex",309,"jcrossedtail",669,"jdotlessstroke",607,"jecyrillic",1112,"jeemarabic",1580,"jeemfinalarabic",65182,"jeeminitialarabic",65183,"jeemmedialarabic",65184,"jeharabic",1688,"jehfinalarabic",64395,"jhabengali",2461,"jhadeva",2333,"jhagujarati",2717,"jhagurmukhi",2589,"jheharmenian",1403,"jis",12292,"jmonospace",65354,"jparen",9381,"jsuperior",690,"k",107,"kabashkircyrillic",1185,"kabengali",2453,"kacute",7729,"kacyrillic",1082,"kadescendercyrillic",1179,"kadeva",2325,"kaf",1499,"kafarabic",1603,"kafdagesh",64315,"kafdageshhebrew",64315,"kaffinalarabic",65242,"kafhebrew",1499,"kafinitialarabic",65243,"kafmedialarabic",65244,"kafrafehebrew",64333,"kagujarati",2709,"kagurmukhi",2581,"kahiragana",12363,"kahookcyrillic",1220,"kakatakana",12459,"kakatakanahalfwidth",65398,"kappa",954,"kappasymbolgreek",1008,"kapyeounmieumkorean",12657,"kapyeounphieuphkorean",12676,"kapyeounpieupkorean",12664,"kapyeounssangpieupkorean",12665,"karoriisquare",13069,"kashidaautoarabic",1600,"kashidaautonosidebearingarabic",1600,"kasmallkatakana",12533,"kasquare",13188,"kasraarabic",1616,"kasratanarabic",1613,"kastrokecyrillic",1183,"katahiraprolongmarkhalfwidth",65392,"kaverticalstrokecyrillic",1181,"kbopomofo",12558,"kcalsquare",13193,"kcaron",489,"kcedilla",311,"kcircle",9434,"kcommaaccent",311,"kdotbelow",7731,"keharmenian",1412,"kehiragana",12369,"kekatakana",12465,"kekatakanahalfwidth",65401,"kenarmenian",1391,"kesmallkatakana",12534,"kgreenlandic",312,"khabengali",2454,"khacyrillic",1093,"khadeva",2326,"khagujarati",2710,"khagurmukhi",2582,"khaharabic",1582,"khahfinalarabic",65190,"khahinitialarabic",65191,"khahmedialarabic",65192,"kheicoptic",999,"khhadeva",2393,"khhagurmukhi",2649,"khieukhacirclekorean",12920,"khieukhaparenkorean",12824,"khieukhcirclekorean",12906,"khieukhkorean",12619,"khieukhparenkorean",12810,"khokhaithai",3586,"khokhonthai",3589,"khokhuatthai",3587,"khokhwaithai",3588,"khomutthai",3675,"khook",409,"khorakhangthai",3590,"khzsquare",13201,"kihiragana",12365,"kikatakana",12461,"kikatakanahalfwidth",65399,"kiroguramusquare",13077,"kiromeetorusquare",13078,"kirosquare",13076,"kiyeokacirclekorean",12910,"kiyeokaparenkorean",12814,"kiyeokcirclekorean",12896,"kiyeokkorean",12593,"kiyeokparenkorean",12800,"kiyeoksioskorean",12595,"kjecyrillic",1116,"klinebelow",7733,"klsquare",13208,"kmcubedsquare",13222,"kmonospace",65355,"kmsquaredsquare",13218,"kohiragana",12371,"kohmsquare",13248,"kokaithai",3585,"kokatakana",12467,"kokatakanahalfwidth",65402,"kooposquare",13086,"koppacyrillic",1153,"koreanstandardsymbol",12927,"koroniscmb",835,"kparen",9382,"kpasquare",13226,"ksicyrillic",1135,"ktsquare",13263,"kturned",670,"kuhiragana",12367,"kukatakana",12463,"kukatakanahalfwidth",65400,"kvsquare",13240,"kwsquare",13246,"l",108,"labengali",2482,"lacute",314,"ladeva",2354,"lagujarati",2738,"lagurmukhi",2610,"lakkhangyaothai",3653,"lamaleffinalarabic",65276,"lamalefhamzaabovefinalarabic",65272,"lamalefhamzaaboveisolatedarabic",65271,"lamalefhamzabelowfinalarabic",65274,"lamalefhamzabelowisolatedarabic",65273,"lamalefisolatedarabic",65275,"lamalefmaddaabovefinalarabic",65270,"lamalefmaddaaboveisolatedarabic",65269,"lamarabic",1604,"lambda",955,"lambdastroke",411,"lamed",1500,"lameddagesh",64316,"lameddageshhebrew",64316,"lamedhebrew",1500,"lamfinalarabic",65246,"lamhahinitialarabic",64714,"laminitialarabic",65247,"lamjeeminitialarabic",64713,"lamkhahinitialarabic",64715,"lamlamhehisolatedarabic",65010,"lammedialarabic",65248,"lammeemhahinitialarabic",64904,"lammeeminitialarabic",64716,"largecircle",9711,"lbar",410,"lbelt",620,"lbopomofo",12556,"lcaron",318,"lcedilla",316,"lcircle",9435,"lcircumflexbelow",7741,"lcommaaccent",316,"ldot",320,"ldotaccent",320,"ldotbelow",7735,"ldotbelowmacron",7737,"leftangleabovecmb",794,"lefttackbelowcmb",792,"less",60,"lessequal",8804,"lessequalorgreater",8922,"lessmonospace",65308,"lessorequivalent",8818,"lessorgreater",8822,"lessoverequal",8806,"lesssmall",65124,"lezh",622,"lfblock",9612,"lhookretroflex",621,"lira",8356,"liwnarmenian",1388,"lj",457,"ljecyrillic",1113,"ll",63168,"lladeva",2355,"llagujarati",2739,"llinebelow",7739,"llladeva",2356,"llvocalicbengali",2529,"llvocalicdeva",2401,"llvocalicvowelsignbengali",2531,"llvocalicvowelsigndeva",2403,"lmiddletilde",619,"lmonospace",65356,"lmsquare",13264,"lochulathai",3628,"logicaland",8743,"logicalnot",172,"logicalnotreversed",8976,"logicalor",8744,"lolingthai",3621,"longs",383,"lowlinecenterline",65102,"lowlinecmb",818,"lowlinedashed",65101,"lozenge",9674,"lparen",9383,"lslash",322,"lsquare",8467,"lsuperior",63214,"ltshade",9617,"luthai",3622,"lvocalicbengali",2444,"lvocalicdeva",2316,"lvocalicvowelsignbengali",2530,"lvocalicvowelsigndeva",2402,"lxsquare",13267,"m",109,"mabengali",2478,"macron",175,"macronbelowcmb",817,"macroncmb",772,"macronlowmod",717,"macronmonospace",65507,"macute",7743,"madeva",2350,"magujarati",2734,"magurmukhi",2606,"mahapakhhebrew",1444,"mahapakhlefthebrew",1444,"mahiragana",12414,"maichattawalowleftthai",63637,"maichattawalowrightthai",63636,"maichattawathai",3659,"maichattawaupperleftthai",63635,"maieklowleftthai",63628,"maieklowrightthai",63627,"maiekthai",3656,"maiekupperleftthai",63626,"maihanakatleftthai",63620,"maihanakatthai",3633,"maitaikhuleftthai",63625,"maitaikhuthai",3655,"maitholowleftthai",63631,"maitholowrightthai",63630,"maithothai",3657,"maithoupperleftthai",63629,"maitrilowleftthai",63634,"maitrilowrightthai",63633,"maitrithai",3658,"maitriupperleftthai",63632,"maiyamokthai",3654,"makatakana",12510,"makatakanahalfwidth",65423,"male",9794,"mansyonsquare",13127,"maqafhebrew",1470,"mars",9794,"masoracirclehebrew",1455,"masquare",13187,"mbopomofo",12551,"mbsquare",13268,"mcircle",9436,"mcubedsquare",13221,"mdotaccent",7745,"mdotbelow",7747,"meemarabic",1605,"meemfinalarabic",65250,"meeminitialarabic",65251,"meemmedialarabic",65252,"meemmeeminitialarabic",64721,"meemmeemisolatedarabic",64584,"meetorusquare",13133,"mehiragana",12417,"meizierasquare",13182,"mekatakana",12513,"mekatakanahalfwidth",65426,"mem",1502,"memdagesh",64318,"memdageshhebrew",64318,"memhebrew",1502,"menarmenian",1396,"merkhahebrew",1445,"merkhakefulahebrew",1446,"merkhakefulalefthebrew",1446,"merkhalefthebrew",1445,"mhook",625,"mhzsquare",13202,"middledotkatakanahalfwidth",65381,"middot",183,"mieumacirclekorean",12914,"mieumaparenkorean",12818,"mieumcirclekorean",12900,"mieumkorean",12609,"mieumpansioskorean",12656,"mieumparenkorean",12804,"mieumpieupkorean",12654,"mieumsioskorean",12655,"mihiragana",12415,"mikatakana",12511,"mikatakanahalfwidth",65424,"minus",8722,"minusbelowcmb",800,"minuscircle",8854,"minusmod",727,"minusplus",8723,"minute",8242,"miribaarusquare",13130,"mirisquare",13129,"mlonglegturned",624,"mlsquare",13206,"mmcubedsquare",13219,"mmonospace",65357,"mmsquaredsquare",13215,"mohiragana",12418,"mohmsquare",13249,"mokatakana",12514,"mokatakanahalfwidth",65427,"molsquare",13270,"momathai",3617,"moverssquare",13223,"moverssquaredsquare",13224,"mparen",9384,"mpasquare",13227,"mssquare",13235,"msuperior",63215,"mturned",623,"mu",181,"mu1",181,"muasquare",13186,"muchgreater",8811,"muchless",8810,"mufsquare",13196,"mugreek",956,"mugsquare",13197,"muhiragana",12416,"mukatakana",12512,"mukatakanahalfwidth",65425,"mulsquare",13205,"multiply",215,"mumsquare",13211,"munahhebrew",1443,"munahlefthebrew",1443,"musicalnote",9834,"musicalnotedbl",9835,"musicflatsign",9837,"musicsharpsign",9839,"mussquare",13234,"muvsquare",13238,"muwsquare",13244,"mvmegasquare",13241,"mvsquare",13239,"mwmegasquare",13247,"mwsquare",13245,"n",110,"nabengali",2472,"nabla",8711,"nacute",324,"nadeva",2344,"nagujarati",2728,"nagurmukhi",2600,"nahiragana",12394,"nakatakana",12490,"nakatakanahalfwidth",65413,"napostrophe",329,"nasquare",13185,"nbopomofo",12555,"nbspace",160,"ncaron",328,"ncedilla",326,"ncircle",9437,"ncircumflexbelow",7755,"ncommaaccent",326,"ndotaccent",7749,"ndotbelow",7751,"nehiragana",12397,"nekatakana",12493,"nekatakanahalfwidth",65416,"newsheqelsign",8362,"nfsquare",13195,"ngabengali",2457,"ngadeva",2329,"ngagujarati",2713,"ngagurmukhi",2585,"ngonguthai",3591,"nhiragana",12435,"nhookleft",626,"nhookretroflex",627,"nieunacirclekorean",12911,"nieunaparenkorean",12815,"nieuncieuckorean",12597,"nieuncirclekorean",12897,"nieunhieuhkorean",12598,"nieunkorean",12596,"nieunpansioskorean",12648,"nieunparenkorean",12801,"nieunsioskorean",12647,"nieuntikeutkorean",12646,"nihiragana",12395,"nikatakana",12491,"nikatakanahalfwidth",65414,"nikhahitleftthai",63641,"nikhahitthai",3661,"nine",57,"ninearabic",1641,"ninebengali",2543,"ninecircle",9320,"ninecircleinversesansserif",10130,"ninedeva",2415,"ninegujarati",2799,"ninegurmukhi",2671,"ninehackarabic",1641,"ninehangzhou",12329,"nineideographicparen",12840,"nineinferior",8329,"ninemonospace",65305,"nineoldstyle",63289,"nineparen",9340,"nineperiod",9360,"ninepersian",1785,"nineroman",8568,"ninesuperior",8313,"nineteencircle",9330,"nineteenparen",9350,"nineteenperiod",9370,"ninethai",3673,"nj",460,"njecyrillic",1114,"nkatakana",12531,"nkatakanahalfwidth",65437,"nlegrightlong",414,"nlinebelow",7753,"nmonospace",65358,"nmsquare",13210,"nnabengali",2467,"nnadeva",2339,"nnagujarati",2723,"nnagurmukhi",2595,"nnnadeva",2345,"nohiragana",12398,"nokatakana",12494,"nokatakanahalfwidth",65417,"nonbreakingspace",160,"nonenthai",3603,"nonuthai",3609,"noonarabic",1606,"noonfinalarabic",65254,"noonghunnaarabic",1722,"noonghunnafinalarabic",64415,"nooninitialarabic",65255,"noonjeeminitialarabic",64722,"noonjeemisolatedarabic",64587,"noonmedialarabic",65256,"noonmeeminitialarabic",64725,"noonmeemisolatedarabic",64590,"noonnoonfinalarabic",64653,"notcontains",8716,"notelement",8713,"notelementof",8713,"notequal",8800,"notgreater",8815,"notgreaternorequal",8817,"notgreaternorless",8825,"notidentical",8802,"notless",8814,"notlessnorequal",8816,"notparallel",8742,"notprecedes",8832,"notsubset",8836,"notsucceeds",8833,"notsuperset",8837,"nowarmenian",1398,"nparen",9385,"nssquare",13233,"nsuperior",8319,"ntilde",241,"nu",957,"nuhiragana",12396,"nukatakana",12492,"nukatakanahalfwidth",65415,"nuktabengali",2492,"nuktadeva",2364,"nuktagujarati",2748,"nuktagurmukhi",2620,"numbersign",35,"numbersignmonospace",65283,"numbersignsmall",65119,"numeralsigngreek",884,"numeralsignlowergreek",885,"numero",8470,"nun",1504,"nundagesh",64320,"nundageshhebrew",64320,"nunhebrew",1504,"nvsquare",13237,"nwsquare",13243,"nyabengali",2462,"nyadeva",2334,"nyagujarati",2718,"nyagurmukhi",2590,"o",111,"oacute",243,"oangthai",3629,"obarred",629,"obarredcyrillic",1257,"obarreddieresiscyrillic",1259,"obengali",2451,"obopomofo",12571,"obreve",335,"ocandradeva",2321,"ocandragujarati",2705,"ocandravowelsigndeva",2377,"ocandravowelsigngujarati",2761,"ocaron",466,"ocircle",9438,"ocircumflex",244,"ocircumflexacute",7889,"ocircumflexdotbelow",7897,"ocircumflexgrave",7891,"ocircumflexhookabove",7893,"ocircumflextilde",7895,"ocyrillic",1086,"odblacute",337,"odblgrave",525,"odeva",2323,"odieresis",246,"odieresiscyrillic",1255,"odotbelow",7885,"oe",339,"oekorean",12634,"ogonek",731,"ogonekcmb",808,"ograve",242,"ogujarati",2707,"oharmenian",1413,"ohiragana",12362,"ohookabove",7887,"ohorn",417,"ohornacute",7899,"ohorndotbelow",7907,"ohorngrave",7901,"ohornhookabove",7903,"ohorntilde",7905,"ohungarumlaut",337,"oi",419,"oinvertedbreve",527,"okatakana",12458,"okatakanahalfwidth",65397,"okorean",12631,"olehebrew",1451,"omacron",333,"omacronacute",7763,"omacrongrave",7761,"omdeva",2384,"omega",969,"omega1",982,"omegacyrillic",1121,"omegalatinclosed",631,"omegaroundcyrillic",1147,"omegatitlocyrillic",1149,"omegatonos",974,"omgujarati",2768,"omicron",959,"omicrontonos",972,"omonospace",65359,"one",49,"onearabic",1633,"onebengali",2535,"onecircle",9312,"onecircleinversesansserif",10122,"onedeva",2407,"onedotenleader",8228,"oneeighth",8539,"onefitted",63196,"onegujarati",2791,"onegurmukhi",2663,"onehackarabic",1633,"onehalf",189,"onehangzhou",12321,"oneideographicparen",12832,"oneinferior",8321,"onemonospace",65297,"onenumeratorbengali",2548,"oneoldstyle",63281,"oneparen",9332,"oneperiod",9352,"onepersian",1777,"onequarter",188,"oneroman",8560,"onesuperior",185,"onethai",3665,"onethird",8531,"oogonek",491,"oogonekmacron",493,"oogurmukhi",2579,"oomatragurmukhi",2635,"oopen",596,"oparen",9386,"openbullet",9702,"option",8997,"ordfeminine",170,"ordmasculine",186,"orthogonal",8735,"oshortdeva",2322,"oshortvowelsigndeva",2378,"oslash",248,"oslashacute",511,"osmallhiragana",12361,"osmallkatakana",12457,"osmallkatakanahalfwidth",65387,"ostrokeacute",511,"osuperior",63216,"otcyrillic",1151,"otilde",245,"otildeacute",7757,"otildedieresis",7759,"oubopomofo",12577,"overline",8254,"overlinecenterline",65098,"overlinecmb",773,"overlinedashed",65097,"overlinedblwavy",65100,"overlinewavy",65099,"overscore",175,"ovowelsignbengali",2507,"ovowelsigndeva",2379,"ovowelsigngujarati",2763,"p",112,"paampssquare",13184,"paasentosquare",13099,"pabengali",2474,"pacute",7765,"padeva",2346,"pagedown",8671,"pageup",8670,"pagujarati",2730,"pagurmukhi",2602,"pahiragana",12401,"paiyannoithai",3631,"pakatakana",12497,"palatalizationcyrilliccmb",1156,"palochkacyrillic",1216,"pansioskorean",12671,"paragraph",182,"parallel",8741,"parenleft",40,"parenleftaltonearabic",64830,"parenleftbt",63725,"parenleftex",63724,"parenleftinferior",8333,"parenleftmonospace",65288,"parenleftsmall",65113,"parenleftsuperior",8317,"parenlefttp",63723,"parenleftvertical",65077,"parenright",41,"parenrightaltonearabic",64831,"parenrightbt",63736,"parenrightex",63735,"parenrightinferior",8334,"parenrightmonospace",65289,"parenrightsmall",65114,"parenrightsuperior",8318,"parenrighttp",63734,"parenrightvertical",65078,"partialdiff",8706,"paseqhebrew",1472,"pashtahebrew",1433,"pasquare",13225,"patah",1463,"patah11",1463,"patah1d",1463,"patah2a",1463,"patahhebrew",1463,"patahnarrowhebrew",1463,"patahquarterhebrew",1463,"patahwidehebrew",1463,"pazerhebrew",1441,"pbopomofo",12550,"pcircle",9439,"pdotaccent",7767,"pe",1508,"pecyrillic",1087,"pedagesh",64324,"pedageshhebrew",64324,"peezisquare",13115,"pefinaldageshhebrew",64323,"peharabic",1662,"peharmenian",1402,"pehebrew",1508,"pehfinalarabic",64343,"pehinitialarabic",64344,"pehiragana",12410,"pehmedialarabic",64345,"pekatakana",12506,"pemiddlehookcyrillic",1191,"perafehebrew",64334,"percent",37,"percentarabic",1642,"percentmonospace",65285,"percentsmall",65130,"period",46,"periodarmenian",1417,"periodcentered",183,"periodhalfwidth",65377,"periodinferior",63207,"periodmonospace",65294,"periodsmall",65106,"periodsuperior",63208,"perispomenigreekcmb",834,"perpendicular",8869,"perthousand",8240,"peseta",8359,"pfsquare",13194,"phabengali",2475,"phadeva",2347,"phagujarati",2731,"phagurmukhi",2603,"phi",966,"phi1",981,"phieuphacirclekorean",12922,"phieuphaparenkorean",12826,"phieuphcirclekorean",12908,"phieuphkorean",12621,"phieuphparenkorean",12812,"philatin",632,"phinthuthai",3642,"phisymbolgreek",981,"phook",421,"phophanthai",3614,"phophungthai",3612,"phosamphaothai",3616,"pi",960,"pieupacirclekorean",12915,"pieupaparenkorean",12819,"pieupcieuckorean",12662,"pieupcirclekorean",12901,"pieupkiyeokkorean",12658,"pieupkorean",12610,"pieupparenkorean",12805,"pieupsioskiyeokkorean",12660,"pieupsioskorean",12612,"pieupsiostikeutkorean",12661,"pieupthieuthkorean",12663,"pieuptikeutkorean",12659,"pihiragana",12404,"pikatakana",12500,"pisymbolgreek",982,"piwrarmenian",1411,"plus",43,"plusbelowcmb",799,"pluscircle",8853,"plusminus",177,"plusmod",726,"plusmonospace",65291,"plussmall",65122,"plussuperior",8314,"pmonospace",65360,"pmsquare",13272,"pohiragana",12413,"pointingindexdownwhite",9759,"pointingindexleftwhite",9756,"pointingindexrightwhite",9758,"pointingindexupwhite",9757,"pokatakana",12509,"poplathai",3611,"postalmark",12306,"postalmarkface",12320,"pparen",9387,"precedes",8826,"prescription",8478,"primemod",697,"primereversed",8245,"product",8719,"projective",8965,"prolongedkana",12540,"propellor",8984,"propersubset",8834,"propersuperset",8835,"proportion",8759,"proportional",8733,"psi",968,"psicyrillic",1137,"psilipneumatacyrilliccmb",1158,"pssquare",13232,"puhiragana",12407,"pukatakana",12503,"pvsquare",13236,"pwsquare",13242,"q",113,"qadeva",2392,"qadmahebrew",1448,"qafarabic",1602,"qaffinalarabic",65238,"qafinitialarabic",65239,"qafmedialarabic",65240,"qamats",1464,"qamats10",1464,"qamats1a",1464,"qamats1c",1464,"qamats27",1464,"qamats29",1464,"qamats33",1464,"qamatsde",1464,"qamatshebrew",1464,"qamatsnarrowhebrew",1464,"qamatsqatanhebrew",1464,"qamatsqatannarrowhebrew",1464,"qamatsqatanquarterhebrew",1464,"qamatsqatanwidehebrew",1464,"qamatsquarterhebrew",1464,"qamatswidehebrew",1464,"qarneyparahebrew",1439,"qbopomofo",12561,"qcircle",9440,"qhook",672,"qmonospace",65361,"qof",1511,"qofdagesh",64327,"qofdageshhebrew",64327,"qofhebrew",1511,"qparen",9388,"quarternote",9833,"qubuts",1467,"qubuts18",1467,"qubuts25",1467,"qubuts31",1467,"qubutshebrew",1467,"qubutsnarrowhebrew",1467,"qubutsquarterhebrew",1467,"qubutswidehebrew",1467,"question",63,"questionarabic",1567,"questionarmenian",1374,"questiondown",191,"questiondownsmall",63423,"questiongreek",894,"questionmonospace",65311,"questionsmall",63295,"quotedbl",34,"quotedblbase",8222,"quotedblleft",8220,"quotedblmonospace",65282,"quotedblprime",12318,"quotedblprimereversed",12317,"quotedblright",8221,"quoteleft",8216,"quoteleftreversed",8219,"quotereversed",8219,"quoteright",8217,"quoterightn",329,"quotesinglbase",8218,"quotesingle",39,"quotesinglemonospace",65287,"r",114,"raarmenian",1404,"rabengali",2480,"racute",341,"radeva",2352,"radical",8730,"radicalex",63717,"radoverssquare",13230,"radoverssquaredsquare",13231,"radsquare",13229,"rafe",1471,"rafehebrew",1471,"ragujarati",2736,"ragurmukhi",2608,"rahiragana",12425,"rakatakana",12521,"rakatakanahalfwidth",65431,"ralowerdiagonalbengali",2545,"ramiddlediagonalbengali",2544,"ramshorn",612,"ratio",8758,"rbopomofo",12566,"rcaron",345,"rcedilla",343,"rcircle",9441,"rcommaaccent",343,"rdblgrave",529,"rdotaccent",7769,"rdotbelow",7771,"rdotbelowmacron",7773,"referencemark",8251,"reflexsubset",8838,"reflexsuperset",8839,"registered",174,"registersans",63720,"registerserif",63194,"reharabic",1585,"reharmenian",1408,"rehfinalarabic",65198,"rehiragana",12428,"rekatakana",12524,"rekatakanahalfwidth",65434,"resh",1512,"reshdageshhebrew",64328,"reshhebrew",1512,"reversedtilde",8765,"reviahebrew",1431,"reviamugrashhebrew",1431,"revlogicalnot",8976,"rfishhook",638,"rfishhookreversed",639,"rhabengali",2525,"rhadeva",2397,"rho",961,"rhook",637,"rhookturned",635,"rhookturnedsuperior",693,"rhosymbolgreek",1009,"rhotichookmod",734,"rieulacirclekorean",12913,"rieulaparenkorean",12817,"rieulcirclekorean",12899,"rieulhieuhkorean",12608,"rieulkiyeokkorean",12602,"rieulkiyeoksioskorean",12649,"rieulkorean",12601,"rieulmieumkorean",12603,"rieulpansioskorean",12652,"rieulparenkorean",12803,"rieulphieuphkorean",12607,"rieulpieupkorean",12604,"rieulpieupsioskorean",12651,"rieulsioskorean",12605,"rieulthieuthkorean",12606,"rieultikeutkorean",12650,"rieulyeorinhieuhkorean",12653,"rightangle",8735,"righttackbelowcmb",793,"righttriangle",8895,"rihiragana",12426,"rikatakana",12522,"rikatakanahalfwidth",65432,"ring",730,"ringbelowcmb",805,"ringcmb",778,"ringhalfleft",703,"ringhalfleftarmenian",1369,"ringhalfleftbelowcmb",796,"ringhalfleftcentered",723,"ringhalfright",702,"ringhalfrightbelowcmb",825,"ringhalfrightcentered",722,"rinvertedbreve",531,"rittorusquare",13137,"rlinebelow",7775,"rlongleg",636,"rlonglegturned",634,"rmonospace",65362,"rohiragana",12429,"rokatakana",12525,"rokatakanahalfwidth",65435,"roruathai",3619,"rparen",9389,"rrabengali",2524,"rradeva",2353,"rragurmukhi",2652,"rreharabic",1681,"rrehfinalarabic",64397,"rrvocalicbengali",2528,"rrvocalicdeva",2400,"rrvocalicgujarati",2784,"rrvocalicvowelsignbengali",2500,"rrvocalicvowelsigndeva",2372,"rrvocalicvowelsigngujarati",2756,"rsuperior",63217,"rtblock",9616,"rturned",633,"rturnedsuperior",692,"ruhiragana",12427,"rukatakana",12523,"rukatakanahalfwidth",65433,"rupeemarkbengali",2546,"rupeesignbengali",2547,"rupiah",63197,"ruthai",3620,"rvocalicbengali",2443,"rvocalicdeva",2315,"rvocalicgujarati",2699,"rvocalicvowelsignbengali",2499,"rvocalicvowelsigndeva",2371,"rvocalicvowelsigngujarati",2755,"s",115,"sabengali",2488,"sacute",347,"sacutedotaccent",7781,"sadarabic",1589,"sadeva",2360,"sadfinalarabic",65210,"sadinitialarabic",65211,"sadmedialarabic",65212,"sagujarati",2744,"sagurmukhi",2616,"sahiragana",12373,"sakatakana",12469,"sakatakanahalfwidth",65403,"sallallahoualayhewasallamarabic",65018,"samekh",1505,"samekhdagesh",64321,"samekhdageshhebrew",64321,"samekhhebrew",1505,"saraaathai",3634,"saraaethai",3649,"saraaimaimalaithai",3652,"saraaimaimuanthai",3651,"saraamthai",3635,"saraathai",3632,"saraethai",3648,"saraiileftthai",63622,"saraiithai",3637,"saraileftthai",63621,"saraithai",3636,"saraothai",3650,"saraueeleftthai",63624,"saraueethai",3639,"saraueleftthai",63623,"sarauethai",3638,"sarauthai",3640,"sarauuthai",3641,"sbopomofo",12569,"scaron",353,"scarondotaccent",7783,"scedilla",351,"schwa",601,"schwacyrillic",1241,"schwadieresiscyrillic",1243,"schwahook",602,"scircle",9442,"scircumflex",349,"scommaaccent",537,"sdotaccent",7777,"sdotbelow",7779,"sdotbelowdotaccent",7785,"seagullbelowcmb",828,"second",8243,"secondtonechinese",714,"section",167,"seenarabic",1587,"seenfinalarabic",65202,"seeninitialarabic",65203,"seenmedialarabic",65204,"segol",1462,"segol13",1462,"segol1f",1462,"segol2c",1462,"segolhebrew",1462,"segolnarrowhebrew",1462,"segolquarterhebrew",1462,"segoltahebrew",1426,"segolwidehebrew",1462,"seharmenian",1405,"sehiragana",12379,"sekatakana",12475,"sekatakanahalfwidth",65406,"semicolon",59,"semicolonarabic",1563,"semicolonmonospace",65307,"semicolonsmall",65108,"semivoicedmarkkana",12444,"semivoicedmarkkanahalfwidth",65439,"sentisquare",13090,"sentosquare",13091,"seven",55,"sevenarabic",1639,"sevenbengali",2541,"sevencircle",9318,"sevencircleinversesansserif",10128,"sevendeva",2413,"seveneighths",8542,"sevengujarati",2797,"sevengurmukhi",2669,"sevenhackarabic",1639,"sevenhangzhou",12327,"sevenideographicparen",12838,"seveninferior",8327,"sevenmonospace",65303,"sevenoldstyle",63287,"sevenparen",9338,"sevenperiod",9358,"sevenpersian",1783,"sevenroman",8566,"sevensuperior",8311,"seventeencircle",9328,"seventeenparen",9348,"seventeenperiod",9368,"seventhai",3671,"sfthyphen",173,"shaarmenian",1399,"shabengali",2486,"shacyrillic",1096,"shaddaarabic",1617,"shaddadammaarabic",64609,"shaddadammatanarabic",64606,"shaddafathaarabic",64608,"shaddakasraarabic",64610,"shaddakasratanarabic",64607,"shade",9618,"shadedark",9619,"shadelight",9617,"shademedium",9618,"shadeva",2358,"shagujarati",2742,"shagurmukhi",2614,"shalshelethebrew",1427,"shbopomofo",12565,"shchacyrillic",1097,"sheenarabic",1588,"sheenfinalarabic",65206,"sheeninitialarabic",65207,"sheenmedialarabic",65208,"sheicoptic",995,"sheqel",8362,"sheqelhebrew",8362,"sheva",1456,"sheva115",1456,"sheva15",1456,"sheva22",1456,"sheva2e",1456,"shevahebrew",1456,"shevanarrowhebrew",1456,"shevaquarterhebrew",1456,"shevawidehebrew",1456,"shhacyrillic",1211,"shimacoptic",1005,"shin",1513,"shindagesh",64329,"shindageshhebrew",64329,"shindageshshindot",64300,"shindageshshindothebrew",64300,"shindageshsindot",64301,"shindageshsindothebrew",64301,"shindothebrew",1473,"shinhebrew",1513,"shinshindot",64298,"shinshindothebrew",64298,"shinsindot",64299,"shinsindothebrew",64299,"shook",642,"sigma",963,"sigma1",962,"sigmafinal",962,"sigmalunatesymbolgreek",1010,"sihiragana",12375,"sikatakana",12471,"sikatakanahalfwidth",65404,"siluqhebrew",1469,"siluqlefthebrew",1469,"similar",8764,"sindothebrew",1474,"siosacirclekorean",12916,"siosaparenkorean",12820,"sioscieuckorean",12670,"sioscirclekorean",12902,"sioskiyeokkorean",12666,"sioskorean",12613,"siosnieunkorean",12667,"siosparenkorean",12806,"siospieupkorean",12669,"siostikeutkorean",12668,"six",54,"sixarabic",1638,"sixbengali",2540,"sixcircle",9317,"sixcircleinversesansserif",10127,"sixdeva",2412,"sixgujarati",2796,"sixgurmukhi",2668,"sixhackarabic",1638,"sixhangzhou",12326,"sixideographicparen",12837,"sixinferior",8326,"sixmonospace",65302,"sixoldstyle",63286,"sixparen",9337,"sixperiod",9357,"sixpersian",1782,"sixroman",8565,"sixsuperior",8310,"sixteencircle",9327,"sixteencurrencydenominatorbengali",2553,"sixteenparen",9347,"sixteenperiod",9367,"sixthai",3670,"slash",47,"slashmonospace",65295,"slong",383,"slongdotaccent",7835,"smileface",9786,"smonospace",65363,"sofpasuqhebrew",1475,"softhyphen",173,"softsigncyrillic",1100,"sohiragana",12381,"sokatakana",12477,"sokatakanahalfwidth",65407,"soliduslongoverlaycmb",824,"solidusshortoverlaycmb",823,"sorusithai",3625,"sosalathai",3624,"sosothai",3595,"sosuathai",3626,"space",32,"spacehackarabic",32,"spade",9824,"spadesuitblack",9824,"spadesuitwhite",9828,"sparen",9390,"squarebelowcmb",827,"squarecc",13252,"squarecm",13213,"squarediagonalcrosshatchfill",9641,"squarehorizontalfill",9636,"squarekg",13199,"squarekm",13214,"squarekmcapital",13262,"squareln",13265,"squarelog",13266,"squaremg",13198,"squaremil",13269,"squaremm",13212,"squaremsquared",13217,"squareorthogonalcrosshatchfill",9638,"squareupperlefttolowerrightfill",9639,"squareupperrighttolowerleftfill",9640,"squareverticalfill",9637,"squarewhitewithsmallblack",9635,"srsquare",13275,"ssabengali",2487,"ssadeva",2359,"ssagujarati",2743,"ssangcieuckorean",12617,"ssanghieuhkorean",12677,"ssangieungkorean",12672,"ssangkiyeokkorean",12594,"ssangnieunkorean",12645,"ssangpieupkorean",12611,"ssangsioskorean",12614,"ssangtikeutkorean",12600,"ssuperior",63218,"sterling",163,"sterlingmonospace",65505,"strokelongoverlaycmb",822,"strokeshortoverlaycmb",821,"subset",8834,"subsetnotequal",8842,"subsetorequal",8838,"succeeds",8827,"suchthat",8715,"suhiragana",12377,"sukatakana",12473,"sukatakanahalfwidth",65405,"sukunarabic",1618,"summation",8721,"sun",9788,"superset",8835,"supersetnotequal",8843,"supersetorequal",8839,"svsquare",13276,"syouwaerasquare",13180,"t",116,"tabengali",2468,"tackdown",8868,"tackleft",8867,"tadeva",2340,"tagujarati",2724,"tagurmukhi",2596,"taharabic",1591,"tahfinalarabic",65218,"tahinitialarabic",65219,"tahiragana",12383,"tahmedialarabic",65220,"taisyouerasquare",13181,"takatakana",12479,"takatakanahalfwidth",65408,"tatweelarabic",1600,"tau",964,"tav",1514,"tavdages",64330,"tavdagesh",64330,"tavdageshhebrew",64330,"tavhebrew",1514,"tbar",359,"tbopomofo",12554,"tcaron",357,"tccurl",680,"tcedilla",355,"tcheharabic",1670,"tchehfinalarabic",64379,"tchehinitialarabic",64380,"tchehmedialarabic",64381,"tcircle",9443,"tcircumflexbelow",7793,"tcommaaccent",355,"tdieresis",7831,"tdotaccent",7787,"tdotbelow",7789,"tecyrillic",1090,"tedescendercyrillic",1197,"teharabic",1578,"tehfinalarabic",65174,"tehhahinitialarabic",64674,"tehhahisolatedarabic",64524,"tehinitialarabic",65175,"tehiragana",12390,"tehjeeminitialarabic",64673,"tehjeemisolatedarabic",64523,"tehmarbutaarabic",1577,"tehmarbutafinalarabic",65172,"tehmedialarabic",65176,"tehmeeminitialarabic",64676,"tehmeemisolatedarabic",64526,"tehnoonfinalarabic",64627,"tekatakana",12486,"tekatakanahalfwidth",65411,"telephone",8481,"telephoneblack",9742,"telishagedolahebrew",1440,"telishaqetanahebrew",1449,"tencircle",9321,"tenideographicparen",12841,"tenparen",9341,"tenperiod",9361,"tenroman",8569,"tesh",679,"tet",1496,"tetdagesh",64312,"tetdageshhebrew",64312,"tethebrew",1496,"tetsecyrillic",1205,"tevirhebrew",1435,"tevirlefthebrew",1435,"thabengali",2469,"thadeva",2341,"thagujarati",2725,"thagurmukhi",2597,"thalarabic",1584,"thalfinalarabic",65196,"thanthakhatlowleftthai",63640,"thanthakhatlowrightthai",63639,"thanthakhatthai",3660,"thanthakhatupperleftthai",63638,"theharabic",1579,"thehfinalarabic",65178,"thehinitialarabic",65179,"thehmedialarabic",65180,"thereexists",8707,"therefore",8756,"theta",952,"theta1",977,"thetasymbolgreek",977,"thieuthacirclekorean",12921,"thieuthaparenkorean",12825,"thieuthcirclekorean",12907,"thieuthkorean",12620,"thieuthparenkorean",12811,"thirteencircle",9324,"thirteenparen",9344,"thirteenperiod",9364,"thonangmonthothai",3601,"thook",429,"thophuthaothai",3602,"thorn",254,"thothahanthai",3607,"thothanthai",3600,"thothongthai",3608,"thothungthai",3606,"thousandcyrillic",1154,"thousandsseparatorarabic",1644,"thousandsseparatorpersian",1644,"three",51,"threearabic",1635,"threebengali",2537,"threecircle",9314,"threecircleinversesansserif",10124,"threedeva",2409,"threeeighths",8540,"threegujarati",2793,"threegurmukhi",2665,"threehackarabic",1635,"threehangzhou",12323,"threeideographicparen",12834,"threeinferior",8323,"threemonospace",65299,"threenumeratorbengali",2550,"threeoldstyle",63283,"threeparen",9334,"threeperiod",9354,"threepersian",1779,"threequarters",190,"threequartersemdash",63198,"threeroman",8562,"threesuperior",179,"threethai",3667,"thzsquare",13204,"tihiragana",12385,"tikatakana",12481,"tikatakanahalfwidth",65409,"tikeutacirclekorean",12912,"tikeutaparenkorean",12816,"tikeutcirclekorean",12898,"tikeutkorean",12599,"tikeutparenkorean",12802,"tilde",732,"tildebelowcmb",816,"tildecmb",771,"tildecomb",771,"tildedoublecmb",864,"tildeoperator",8764,"tildeoverlaycmb",820,"tildeverticalcmb",830,"timescircle",8855,"tipehahebrew",1430,"tipehalefthebrew",1430,"tippigurmukhi",2672,"titlocyrilliccmb",1155,"tiwnarmenian",1407,"tlinebelow",7791,"tmonospace",65364,"toarmenian",1385,"tohiragana",12392,"tokatakana",12488,"tokatakanahalfwidth",65412,"tonebarextrahighmod",741,"tonebarextralowmod",745,"tonebarhighmod",742,"tonebarlowmod",744,"tonebarmidmod",743,"tonefive",445,"tonesix",389,"tonetwo",424,"tonos",900,"tonsquare",13095,"topatakthai",3599,"tortoiseshellbracketleft",12308,"tortoiseshellbracketleftsmall",65117,"tortoiseshellbracketleftvertical",65081,"tortoiseshellbracketright",12309,"tortoiseshellbracketrightsmall",65118,"tortoiseshellbracketrightvertical",65082,"totaothai",3605,"tpalatalhook",427,"tparen",9391,"trademark",8482,"trademarksans",63722,"trademarkserif",63195,"tretroflexhook",648,"triagdn",9660,"triaglf",9668,"triagrt",9658,"triagup",9650,"ts",678,"tsadi",1510,"tsadidagesh",64326,"tsadidageshhebrew",64326,"tsadihebrew",1510,"tsecyrillic",1094,"tsere",1461,"tsere12",1461,"tsere1e",1461,"tsere2b",1461,"tserehebrew",1461,"tserenarrowhebrew",1461,"tserequarterhebrew",1461,"tserewidehebrew",1461,"tshecyrillic",1115,"tsuperior",63219,"ttabengali",2463,"ttadeva",2335,"ttagujarati",2719,"ttagurmukhi",2591,"tteharabic",1657,"ttehfinalarabic",64359,"ttehinitialarabic",64360,"ttehmedialarabic",64361,"tthabengali",2464,"tthadeva",2336,"tthagujarati",2720,"tthagurmukhi",2592,"tturned",647,"tuhiragana",12388,"tukatakana",12484,"tukatakanahalfwidth",65410,"tusmallhiragana",12387,"tusmallkatakana",12483,"tusmallkatakanahalfwidth",65391,"twelvecircle",9323,"twelveparen",9343,"twelveperiod",9363,"twelveroman",8571,"twentycircle",9331,"twentyhangzhou",21316,"twentyparen",9351,"twentyperiod",9371,"two",50,"twoarabic",1634,"twobengali",2536,"twocircle",9313,"twocircleinversesansserif",10123,"twodeva",2408,"twodotenleader",8229,"twodotleader",8229,"twodotleadervertical",65072,"twogujarati",2792,"twogurmukhi",2664,"twohackarabic",1634,"twohangzhou",12322,"twoideographicparen",12833,"twoinferior",8322,"twomonospace",65298,"twonumeratorbengali",2549,"twooldstyle",63282,"twoparen",9333,"twoperiod",9353,"twopersian",1778,"tworoman",8561,"twostroke",443,"twosuperior",178,"twothai",3666,"twothirds",8532,"u",117,"uacute",250,"ubar",649,"ubengali",2441,"ubopomofo",12584,"ubreve",365,"ucaron",468,"ucircle",9444,"ucircumflex",251,"ucircumflexbelow",7799,"ucyrillic",1091,"udattadeva",2385,"udblacute",369,"udblgrave",533,"udeva",2313,"udieresis",252,"udieresisacute",472,"udieresisbelow",7795,"udieresiscaron",474,"udieresiscyrillic",1265,"udieresisgrave",476,"udieresismacron",470,"udotbelow",7909,"ugrave",249,"ugujarati",2697,"ugurmukhi",2569,"uhiragana",12358,"uhookabove",7911,"uhorn",432,"uhornacute",7913,"uhorndotbelow",7921,"uhorngrave",7915,"uhornhookabove",7917,"uhorntilde",7919,"uhungarumlaut",369,"uhungarumlautcyrillic",1267,"uinvertedbreve",535,"ukatakana",12454,"ukatakanahalfwidth",65395,"ukcyrillic",1145,"ukorean",12636,"umacron",363,"umacroncyrillic",1263,"umacrondieresis",7803,"umatragurmukhi",2625,"umonospace",65365,"underscore",95,"underscoredbl",8215,"underscoremonospace",65343,"underscorevertical",65075,"underscorewavy",65103,"union",8746,"universal",8704,"uogonek",371,"uparen",9392,"upblock",9600,"upperdothebrew",1476,"upsilon",965,"upsilondieresis",971,"upsilondieresistonos",944,"upsilonlatin",650,"upsilontonos",973,"uptackbelowcmb",797,"uptackmod",724,"uragurmukhi",2675,"uring",367,"ushortcyrillic",1118,"usmallhiragana",12357,"usmallkatakana",12453,"usmallkatakanahalfwidth",65385,"ustraightcyrillic",1199,"ustraightstrokecyrillic",1201,"utilde",361,"utildeacute",7801,"utildebelow",7797,"uubengali",2442,"uudeva",2314,"uugujarati",2698,"uugurmukhi",2570,"uumatragurmukhi",2626,"uuvowelsignbengali",2498,"uuvowelsigndeva",2370,"uuvowelsigngujarati",2754,"uvowelsignbengali",2497,"uvowelsigndeva",2369,"uvowelsigngujarati",2753,"v",118,"vadeva",2357,"vagujarati",2741,"vagurmukhi",2613,"vakatakana",12535,"vav",1493,"vavdagesh",64309,"vavdagesh65",64309,"vavdageshhebrew",64309,"vavhebrew",1493,"vavholam",64331,"vavholamhebrew",64331,"vavvavhebrew",1520,"vavyodhebrew",1521,"vcircle",9445,"vdotbelow",7807,"vecyrillic",1074,"veharabic",1700,"vehfinalarabic",64363,"vehinitialarabic",64364,"vehmedialarabic",64365,"vekatakana",12537,"venus",9792,"verticalbar",124,"verticallineabovecmb",781,"verticallinebelowcmb",809,"verticallinelowmod",716,"verticallinemod",712,"vewarmenian",1406,"vhook",651,"vikatakana",12536,"viramabengali",2509,"viramadeva",2381,"viramagujarati",2765,"visargabengali",2435,"visargadeva",2307,"visargagujarati",2691,"vmonospace",65366,"voarmenian",1400,"voicediterationhiragana",12446,"voicediterationkatakana",12542,"voicedmarkkana",12443,"voicedmarkkanahalfwidth",65438,"vokatakana",12538,"vparen",9393,"vtilde",7805,"vturned",652,"vuhiragana",12436,"vukatakana",12532,"w",119,"wacute",7811,"waekorean",12633,"wahiragana",12431,"wakatakana",12527,"wakatakanahalfwidth",65436,"wakorean",12632,"wasmallhiragana",12430,"wasmallkatakana",12526,"wattosquare",13143,"wavedash",12316,"wavyunderscorevertical",65076,"wawarabic",1608,"wawfinalarabic",65262,"wawhamzaabovearabic",1572,"wawhamzaabovefinalarabic",65158,"wbsquare",13277,"wcircle",9446,"wcircumflex",373,"wdieresis",7813,"wdotaccent",7815,"wdotbelow",7817,"wehiragana",12433,"weierstrass",8472,"wekatakana",12529,"wekorean",12638,"weokorean",12637,"wgrave",7809,"whitebullet",9702,"whitecircle",9675,"whitecircleinverse",9689,"whitecornerbracketleft",12302,"whitecornerbracketleftvertical",65091,"whitecornerbracketright",12303,"whitecornerbracketrightvertical",65092,"whitediamond",9671,"whitediamondcontainingblacksmalldiamond",9672,"whitedownpointingsmalltriangle",9663,"whitedownpointingtriangle",9661,"whiteleftpointingsmalltriangle",9667,"whiteleftpointingtriangle",9665,"whitelenticularbracketleft",12310,"whitelenticularbracketright",12311,"whiterightpointingsmalltriangle",9657,"whiterightpointingtriangle",9655,"whitesmallsquare",9643,"whitesmilingface",9786,"whitesquare",9633,"whitestar",9734,"whitetelephone",9743,"whitetortoiseshellbracketleft",12312,"whitetortoiseshellbracketright",12313,"whiteuppointingsmalltriangle",9653,"whiteuppointingtriangle",9651,"wihiragana",12432,"wikatakana",12528,"wikorean",12639,"wmonospace",65367,"wohiragana",12434,"wokatakana",12530,"wokatakanahalfwidth",65382,"won",8361,"wonmonospace",65510,"wowaenthai",3623,"wparen",9394,"wring",7832,"wsuperior",695,"wturned",653,"wynn",447,"x",120,"xabovecmb",829,"xbopomofo",12562,"xcircle",9447,"xdieresis",7821,"xdotaccent",7819,"xeharmenian",1389,"xi",958,"xmonospace",65368,"xparen",9395,"xsuperior",739,"y",121,"yaadosquare",13134,"yabengali",2479,"yacute",253,"yadeva",2351,"yaekorean",12626,"yagujarati",2735,"yagurmukhi",2607,"yahiragana",12420,"yakatakana",12516,"yakatakanahalfwidth",65428,"yakorean",12625,"yamakkanthai",3662,"yasmallhiragana",12419,"yasmallkatakana",12515,"yasmallkatakanahalfwidth",65388,"yatcyrillic",1123,"ycircle",9448,"ycircumflex",375,"ydieresis",255,"ydotaccent",7823,"ydotbelow",7925,"yeharabic",1610,"yehbarreearabic",1746,"yehbarreefinalarabic",64431,"yehfinalarabic",65266,"yehhamzaabovearabic",1574,"yehhamzaabovefinalarabic",65162,"yehhamzaaboveinitialarabic",65163,"yehhamzaabovemedialarabic",65164,"yehinitialarabic",65267,"yehmedialarabic",65268,"yehmeeminitialarabic",64733,"yehmeemisolatedarabic",64600,"yehnoonfinalarabic",64660,"yehthreedotsbelowarabic",1745,"yekorean",12630,"yen",165,"yenmonospace",65509,"yeokorean",12629,"yeorinhieuhkorean",12678,"yerahbenyomohebrew",1450,"yerahbenyomolefthebrew",1450,"yericyrillic",1099,"yerudieresiscyrillic",1273,"yesieungkorean",12673,"yesieungpansioskorean",12675,"yesieungsioskorean",12674,"yetivhebrew",1434,"ygrave",7923,"yhook",436,"yhookabove",7927,"yiarmenian",1397,"yicyrillic",1111,"yikorean",12642,"yinyang",9775,"yiwnarmenian",1410,"ymonospace",65369,"yod",1497,"yoddagesh",64313,"yoddageshhebrew",64313,"yodhebrew",1497,"yodyodhebrew",1522,"yodyodpatahhebrew",64287,"yohiragana",12424,"yoikorean",12681,"yokatakana",12520,"yokatakanahalfwidth",65430,"yokorean",12635,"yosmallhiragana",12423,"yosmallkatakana",12519,"yosmallkatakanahalfwidth",65390,"yotgreek",1011,"yoyaekorean",12680,"yoyakorean",12679,"yoyakthai",3618,"yoyingthai",3597,"yparen",9396,"ypogegrammeni",890,"ypogegrammenigreekcmb",837,"yr",422,"yring",7833,"ysuperior",696,"ytilde",7929,"yturned",654,"yuhiragana",12422,"yuikorean",12684,"yukatakana",12518,"yukatakanahalfwidth",65429,"yukorean",12640,"yusbigcyrillic",1131,"yusbigiotifiedcyrillic",1133,"yuslittlecyrillic",1127,"yuslittleiotifiedcyrillic",1129,"yusmallhiragana",12421,"yusmallkatakana",12517,"yusmallkatakanahalfwidth",65389,"yuyekorean",12683,"yuyeokorean",12682,"yyabengali",2527,"yyadeva",2399,"z",122,"zaarmenian",1382,"zacute",378,"zadeva",2395,"zagurmukhi",2651,"zaharabic",1592,"zahfinalarabic",65222,"zahinitialarabic",65223,"zahiragana",12374,"zahmedialarabic",65224,"zainarabic",1586,"zainfinalarabic",65200,"zakatakana",12470,"zaqefgadolhebrew",1429,"zaqefqatanhebrew",1428,"zarqahebrew",1432,"zayin",1494,"zayindagesh",64310,"zayindageshhebrew",64310,"zayinhebrew",1494,"zbopomofo",12567,"zcaron",382,"zcircle",9449,"zcircumflex",7825,"zcurl",657,"zdot",380,"zdotaccent",380,"zdotbelow",7827,"zecyrillic",1079,"zedescendercyrillic",1177,"zedieresiscyrillic",1247,"zehiragana",12380,"zekatakana",12476,"zero",48,"zeroarabic",1632,"zerobengali",2534,"zerodeva",2406,"zerogujarati",2790,"zerogurmukhi",2662,"zerohackarabic",1632,"zeroinferior",8320,"zeromonospace",65296,"zerooldstyle",63280,"zeropersian",1776,"zerosuperior",8304,"zerothai",3664,"zerowidthjoiner",65279,"zerowidthnonjoiner",8204,"zerowidthspace",8203,"zeta",950,"zhbopomofo",12563,"zhearmenian",1386,"zhebrevecyrillic",1218,"zhecyrillic",1078,"zhedescendercyrillic",1175,"zhedieresiscyrillic",1245,"zihiragana",12376,"zikatakana",12472,"zinorhebrew",1454,"zlinebelow",7829,"zmonospace",65370,"zohiragana",12382,"zokatakana",12478,"zparen",9397,"zretroflexhook",656,"zstroke",438,"zuhiragana",12378,"zukatakana",12474,".notdef",0,"angbracketleftbig",9001,"angbracketleftBig",9001,"angbracketleftbigg",9001,"angbracketleftBigg",9001,"angbracketrightBig",9002,"angbracketrightbig",9002,"angbracketrightBigg",9002,"angbracketrightbigg",9002,"arrowhookleft",8618,"arrowhookright",8617,"arrowlefttophalf",8636,"arrowleftbothalf",8637,"arrownortheast",8599,"arrownorthwest",8598,"arrowrighttophalf",8640,"arrowrightbothalf",8641,"arrowsoutheast",8600,"arrowsouthwest",8601,"backslashbig",8726,"backslashBig",8726,"backslashBigg",8726,"backslashbigg",8726,"bardbl",8214,"bracehtipdownleft",65079,"bracehtipdownright",65079,"bracehtipupleft",65080,"bracehtipupright",65080,"braceleftBig",123,"braceleftbig",123,"braceleftbigg",123,"braceleftBigg",123,"bracerightBig",125,"bracerightbig",125,"bracerightbigg",125,"bracerightBigg",125,"bracketleftbig",91,"bracketleftBig",91,"bracketleftbigg",91,"bracketleftBigg",91,"bracketrightBig",93,"bracketrightbig",93,"bracketrightbigg",93,"bracketrightBigg",93,"ceilingleftbig",8968,"ceilingleftBig",8968,"ceilingleftBigg",8968,"ceilingleftbigg",8968,"ceilingrightbig",8969,"ceilingrightBig",8969,"ceilingrightbigg",8969,"ceilingrightBigg",8969,"circledotdisplay",8857,"circledottext",8857,"circlemultiplydisplay",8855,"circlemultiplytext",8855,"circleplusdisplay",8853,"circleplustext",8853,"contintegraldisplay",8750,"contintegraltext",8750,"coproductdisplay",8720,"coproducttext",8720,"floorleftBig",8970,"floorleftbig",8970,"floorleftbigg",8970,"floorleftBigg",8970,"floorrightbig",8971,"floorrightBig",8971,"floorrightBigg",8971,"floorrightbigg",8971,"hatwide",770,"hatwider",770,"hatwidest",770,"intercal",7488,"integraldisplay",8747,"integraltext",8747,"intersectiondisplay",8898,"intersectiontext",8898,"logicalanddisplay",8743,"logicalandtext",8743,"logicalordisplay",8744,"logicalortext",8744,"parenleftBig",40,"parenleftbig",40,"parenleftBigg",40,"parenleftbigg",40,"parenrightBig",41,"parenrightbig",41,"parenrightBigg",41,"parenrightbigg",41,"prime",8242,"productdisplay",8719,"producttext",8719,"radicalbig",8730,"radicalBig",8730,"radicalBigg",8730,"radicalbigg",8730,"radicalbt",8730,"radicaltp",8730,"radicalvertex",8730,"slashbig",47,"slashBig",47,"slashBigg",47,"slashbigg",47,"summationdisplay",8721,"summationtext",8721,"tildewide",732,"tildewider",732,"tildewidest",732,"uniondisplay",8899,"unionmultidisplay",8846,"unionmultitext",8846,"unionsqdisplay",8852,"unionsqtext",8852,"uniontext",8899,"vextenddouble",8741,"vextendsingle",8739]})),i=(0,n.getArrayLookupTableFactory)((function(){return["space",32,"a1",9985,"a2",9986,"a202",9987,"a3",9988,"a4",9742,"a5",9990,"a119",9991,"a118",9992,"a117",9993,"a11",9755,"a12",9758,"a13",9996,"a14",9997,"a15",9998,"a16",9999,"a105",1e4,"a17",10001,"a18",10002,"a19",10003,"a20",10004,"a21",10005,"a22",10006,"a23",10007,"a24",10008,"a25",10009,"a26",10010,"a27",10011,"a28",10012,"a6",10013,"a7",10014,"a8",10015,"a9",10016,"a10",10017,"a29",10018,"a30",10019,"a31",10020,"a32",10021,"a33",10022,"a34",10023,"a35",9733,"a36",10025,"a37",10026,"a38",10027,"a39",10028,"a40",10029,"a41",10030,"a42",10031,"a43",10032,"a44",10033,"a45",10034,"a46",10035,"a47",10036,"a48",10037,"a49",10038,"a50",10039,"a51",10040,"a52",10041,"a53",10042,"a54",10043,"a55",10044,"a56",10045,"a57",10046,"a58",10047,"a59",10048,"a60",10049,"a61",10050,"a62",10051,"a63",10052,"a64",10053,"a65",10054,"a66",10055,"a67",10056,"a68",10057,"a69",10058,"a70",10059,"a71",9679,"a72",10061,"a73",9632,"a74",10063,"a203",10064,"a75",10065,"a204",10066,"a76",9650,"a77",9660,"a78",9670,"a79",10070,"a81",9687,"a82",10072,"a83",10073,"a84",10074,"a97",10075,"a98",10076,"a99",10077,"a100",10078,"a101",10081,"a102",10082,"a103",10083,"a104",10084,"a106",10085,"a107",10086,"a108",10087,"a112",9827,"a111",9830,"a110",9829,"a109",9824,"a120",9312,"a121",9313,"a122",9314,"a123",9315,"a124",9316,"a125",9317,"a126",9318,"a127",9319,"a128",9320,"a129",9321,"a130",10102,"a131",10103,"a132",10104,"a133",10105,"a134",10106,"a135",10107,"a136",10108,"a137",10109,"a138",10110,"a139",10111,"a140",10112,"a141",10113,"a142",10114,"a143",10115,"a144",10116,"a145",10117,"a146",10118,"a147",10119,"a148",10120,"a149",10121,"a150",10122,"a151",10123,"a152",10124,"a153",10125,"a154",10126,"a155",10127,"a156",10128,"a157",10129,"a158",10130,"a159",10131,"a160",10132,"a161",8594,"a163",8596,"a164",8597,"a196",10136,"a165",10137,"a192",10138,"a166",10139,"a167",10140,"a168",10141,"a169",10142,"a170",10143,"a171",10144,"a172",10145,"a173",10146,"a162",10147,"a174",10148,"a175",10149,"a176",10150,"a177",10151,"a178",10152,"a179",10153,"a193",10154,"a180",10155,"a199",10156,"a181",10157,"a200",10158,"a182",10159,"a201",10161,"a183",10162,"a184",10163,"a197",10164,"a185",10165,"a194",10166,"a198",10167,"a186",10168,"a195",10169,"a187",10170,"a188",10171,"a189",10172,"a190",10173,"a191",10174,"a89",10088,"a90",10089,"a93",10090,"a94",10091,"a91",10092,"a92",10093,"a205",10094,"a85",10095,"a206",10096,"a86",10097,"a87",10098,"a88",10099,"a95",10100,"a96",10101,".notdef",0]}))},(e,t,r)=>{r.r(t),r.d(t,{clearUnicodeCaches:()=>p,getCharUnicodeCategory:()=>d,getNormalizedUnicodes:()=>u,getUnicodeForGlyph:()=>o,getUnicodeRangeFor:()=>c,mapSpecialUnicodeValues:()=>i,reverseIfRtl:()=>l});var n=r(135);const a=(0,n.getLookupTableFactory)((function(e){e[63721]=169,e[63193]=169,e[63720]=174,e[63194]=174,e[63722]=8482,e[63195]=8482,e[63729]=9127,e[63730]=9128,e[63731]=9129,e[63740]=9131,e[63741]=9132,e[63742]=9133,e[63726]=9121,e[63727]=9122,e[63728]=9123,e[63737]=9124,e[63738]=9125,e[63739]=9126,e[63723]=9115,e[63724]=9116,e[63725]=9117,e[63734]=9118,e[63735]=9119,e[63736]=9120}));function i(e){return e>=65520&&e<=65535?0:e>=62976&&e<=63743?a()[e]||e:173===e?45:e}function o(e,t){let r=t[e];if(void 0!==r)return r;if(!e)return-1;if("u"===e[0]){const t=e.length;let n;if(7===t&&"n"===e[1]&&"i"===e[2])n=e.substring(3);else{if(!(t>=5&&t<=7))return-1;n=e.substring(1)}if(n===n.toUpperCase()&&(r=parseInt(n,16),r>=0))return r}return-1}const s=[{begin:0,end:127},{begin:128,end:255},{begin:256,end:383},{begin:384,end:591},{begin:592,end:687},{begin:688,end:767},{begin:768,end:879},{begin:880,end:1023},{begin:11392,end:11519},{begin:1024,end:1279},{begin:1328,end:1423},{begin:1424,end:1535},{begin:42240,end:42559},{begin:1536,end:1791},{begin:1984,end:2047},{begin:2304,end:2431},{begin:2432,end:2559},{begin:2560,end:2687},{begin:2688,end:2815},{begin:2816,end:2943},{begin:2944,end:3071},{begin:3072,end:3199},{begin:3200,end:3327},{begin:3328,end:3455},{begin:3584,end:3711},{begin:3712,end:3839},{begin:4256,end:4351},{begin:6912,end:7039},{begin:4352,end:4607},{begin:7680,end:7935},{begin:7936,end:8191},{begin:8192,end:8303},{begin:8304,end:8351},{begin:8352,end:8399},{begin:8400,end:8447},{begin:8448,end:8527},{begin:8528,end:8591},{begin:8592,end:8703},{begin:8704,end:8959},{begin:8960,end:9215},{begin:9216,end:9279},{begin:9280,end:9311},{begin:9312,end:9471},{begin:9472,end:9599},{begin:9600,end:9631},{begin:9632,end:9727},{begin:9728,end:9983},{begin:9984,end:10175},{begin:12288,end:12351},{begin:12352,end:12447},{begin:12448,end:12543},{begin:12544,end:12591},{begin:12592,end:12687},{begin:43072,end:43135},{begin:12800,end:13055},{begin:13056,end:13311},{begin:44032,end:55215},{begin:55296,end:57343},{begin:67840,end:67871},{begin:19968,end:40959},{begin:57344,end:63743},{begin:12736,end:12783},{begin:64256,end:64335},{begin:64336,end:65023},{begin:65056,end:65071},{begin:65040,end:65055},{begin:65104,end:65135},{begin:65136,end:65279},{begin:65280,end:65519},{begin:65520,end:65535},{begin:3840,end:4095},{begin:1792,end:1871},{begin:1920,end:1983},{begin:3456,end:3583},{begin:4096,end:4255},{begin:4608,end:4991},{begin:5024,end:5119},{begin:5120,end:5759},{begin:5760,end:5791},{begin:5792,end:5887},{begin:6016,end:6143},{begin:6144,end:6319},{begin:10240,end:10495},{begin:40960,end:42127},{begin:5888,end:5919},{begin:66304,end:66351},{begin:66352,end:66383},{begin:66560,end:66639},{begin:118784,end:119039},{begin:119808,end:120831},{begin:1044480,end:1048573},{begin:65024,end:65039},{begin:917504,end:917631},{begin:6400,end:6479},{begin:6480,end:6527},{begin:6528,end:6623},{begin:6656,end:6687},{begin:11264,end:11359},{begin:11568,end:11647},{begin:19904,end:19967},{begin:43008,end:43055},{begin:65536,end:65663},{begin:65856,end:65935},{begin:66432,end:66463},{begin:66464,end:66527},{begin:66640,end:66687},{begin:66688,end:66735},{begin:67584,end:67647},{begin:68096,end:68191},{begin:119552,end:119647},{begin:73728,end:74751},{begin:119648,end:119679},{begin:7040,end:7103},{begin:7168,end:7247},{begin:7248,end:7295},{begin:43136,end:43231},{begin:43264,end:43311},{begin:43312,end:43359},{begin:43520,end:43615},{begin:65936,end:65999},{begin:66e3,end:66047},{begin:66208,end:66271},{begin:127024,end:127135}];function c(e){for(let t=0,r=s.length;t=r.begin&&e=t.begin&&e=t.begin&&e=0;n--)r.push(e[n]);return r.join("")}const f=new RegExp("^(\\\\s)|(\\\\p{Mn})|(\\\\p{Cf})$","u"),h=new Map;function d(e){const t=h.get(e);if(t)return t;const r=e.match(f),n={isWhitespace:!(!r||!r[1]),isZeroWidthDiacritic:!(!r||!r[2]),isInvisibleFormatMark:!(!r||!r[3])};return h.set(e,n),n}function p(){h.clear()}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getSerifFonts=t.getNonStdFontMap=t.getGlyphMapForStandardFonts=t.getFontNameToFileMap=void 0,t.getStandardFontName=function(e){var t=(0,a.normalizeFontName)(e);return i()[t]},t.getSymbolsFonts=t.getSupplementalGlyphMapForCalibri=t.getSupplementalGlyphMapForArialBlack=t.getStdFontMap=void 0;var n=r(135),a=r(167),i=(0,n.getLookupTableFactory)((function(e){e["Times-Roman"]="Times-Roman",e.Helvetica="Helvetica",e.Courier="Courier",e.Symbol="Symbol",e["Times-Bold"]="Times-Bold",e["Helvetica-Bold"]="Helvetica-Bold",e["Courier-Bold"]="Courier-Bold",e.ZapfDingbats="ZapfDingbats",e["Times-Italic"]="Times-Italic",e["Helvetica-Oblique"]="Helvetica-Oblique",e["Courier-Oblique"]="Courier-Oblique",e["Times-BoldItalic"]="Times-BoldItalic",e["Helvetica-BoldOblique"]="Helvetica-BoldOblique",e["Courier-BoldOblique"]="Courier-BoldOblique",e.ArialNarrow="Helvetica",e["ArialNarrow-Bold"]="Helvetica-Bold",e["ArialNarrow-BoldItalic"]="Helvetica-BoldOblique",e["ArialNarrow-Italic"]="Helvetica-Oblique",e.ArialBlack="Helvetica",e["ArialBlack-Bold"]="Helvetica-Bold",e["ArialBlack-BoldItalic"]="Helvetica-BoldOblique",e["ArialBlack-Italic"]="Helvetica-Oblique",e["Arial-Black"]="Helvetica",e["Arial-Black-Bold"]="Helvetica-Bold",e["Arial-Black-BoldItalic"]="Helvetica-BoldOblique",e["Arial-Black-Italic"]="Helvetica-Oblique",e.Arial="Helvetica",e["Arial-Bold"]="Helvetica-Bold",e["Arial-BoldItalic"]="Helvetica-BoldOblique",e["Arial-Italic"]="Helvetica-Oblique",e.ArialMT="Helvetica",e["Arial-BoldItalicMT"]="Helvetica-BoldOblique",e["Arial-BoldMT"]="Helvetica-Bold",e["Arial-ItalicMT"]="Helvetica-Oblique",e.ArialUnicodeMS="Helvetica",e["ArialUnicodeMS-Bold"]="Helvetica-Bold",e["ArialUnicodeMS-BoldItalic"]="Helvetica-BoldOblique",e["ArialUnicodeMS-Italic"]="Helvetica-Oblique",e["Courier-BoldItalic"]="Courier-BoldOblique",e["Courier-Italic"]="Courier-Oblique",e.CourierNew="Courier",e["CourierNew-Bold"]="Courier-Bold",e["CourierNew-BoldItalic"]="Courier-BoldOblique",e["CourierNew-Italic"]="Courier-Oblique",e["CourierNewPS-BoldItalicMT"]="Courier-BoldOblique",e["CourierNewPS-BoldMT"]="Courier-Bold",e["CourierNewPS-ItalicMT"]="Courier-Oblique",e.CourierNewPSMT="Courier",e["Helvetica-BoldItalic"]="Helvetica-BoldOblique",e["Helvetica-Italic"]="Helvetica-Oblique",e["Symbol-Bold"]="Symbol",e["Symbol-BoldItalic"]="Symbol",e["Symbol-Italic"]="Symbol",e.TimesNewRoman="Times-Roman",e["TimesNewRoman-Bold"]="Times-Bold",e["TimesNewRoman-BoldItalic"]="Times-BoldItalic",e["TimesNewRoman-Italic"]="Times-Italic",e.TimesNewRomanPS="Times-Roman",e["TimesNewRomanPS-Bold"]="Times-Bold",e["TimesNewRomanPS-BoldItalic"]="Times-BoldItalic",e["TimesNewRomanPS-BoldItalicMT"]="Times-BoldItalic",e["TimesNewRomanPS-BoldMT"]="Times-Bold",e["TimesNewRomanPS-Italic"]="Times-Italic",e["TimesNewRomanPS-ItalicMT"]="Times-Italic",e.TimesNewRomanPSMT="Times-Roman",e["TimesNewRomanPSMT-Bold"]="Times-Bold",e["TimesNewRomanPSMT-BoldItalic"]="Times-BoldItalic",e["TimesNewRomanPSMT-Italic"]="Times-Italic"}));t.getStdFontMap=i;var o=(0,n.getLookupTableFactory)((function(e){e.Courier="FoxitFixed.pfb",e["Courier-Bold"]="FoxitFixedBold.pfb",e["Courier-BoldOblique"]="FoxitFixedBoldItalic.pfb",e["Courier-Oblique"]="FoxitFixedItalic.pfb",e.Helvetica="FoxitSans.pfb",e["Helvetica-Bold"]="FoxitSansBold.pfb",e["Helvetica-BoldOblique"]="FoxitSansBoldItalic.pfb",e["Helvetica-Oblique"]="FoxitSansItalic.pfb",e["Times-Roman"]="FoxitSerif.pfb",e["Times-Bold"]="FoxitSerifBold.pfb",e["Times-BoldItalic"]="FoxitSerifBoldItalic.pfb",e["Times-Italic"]="FoxitSerifItalic.pfb",e.Symbol="FoxitSymbol.pfb",e.ZapfDingbats="FoxitDingbats.pfb",e["LiberationSans-Regular"]="LiberationSans-Regular.ttf",e["LiberationSans-Bold"]="LiberationSans-Bold.ttf",e["LiberationSans-Italic"]="LiberationSans-Italic.ttf",e["LiberationSans-BoldItalic"]="LiberationSans-BoldItalic.ttf"}));t.getFontNameToFileMap=o;var s=(0,n.getLookupTableFactory)((function(e){e.Calibri="Helvetica",e["Calibri-Bold"]="Helvetica-Bold",e["Calibri-BoldItalic"]="Helvetica-BoldOblique",e["Calibri-Italic"]="Helvetica-Oblique",e.CenturyGothic="Helvetica",e["CenturyGothic-Bold"]="Helvetica-Bold",e["CenturyGothic-BoldItalic"]="Helvetica-BoldOblique",e["CenturyGothic-Italic"]="Helvetica-Oblique",e.ComicSansMS="Comic Sans MS",e["ComicSansMS-Bold"]="Comic Sans MS-Bold",e["ComicSansMS-BoldItalic"]="Comic Sans MS-BoldItalic",e["ComicSansMS-Italic"]="Comic Sans MS-Italic",e["ItcSymbol-Bold"]="Helvetica-Bold",e["ItcSymbol-BoldItalic"]="Helvetica-BoldOblique",e["ItcSymbol-Book"]="Helvetica",e["ItcSymbol-BookItalic"]="Helvetica-Oblique",e["ItcSymbol-Medium"]="Helvetica",e["ItcSymbol-MediumItalic"]="Helvetica-Oblique",e.LucidaConsole="Courier",e["LucidaConsole-Bold"]="Courier-Bold",e["LucidaConsole-BoldItalic"]="Courier-BoldOblique",e["LucidaConsole-Italic"]="Courier-Oblique",e["LucidaSans-Demi"]="Helvetica-Bold",e["MS-Gothic"]="MS Gothic",e["MS-Gothic-Bold"]="MS Gothic-Bold",e["MS-Gothic-BoldItalic"]="MS Gothic-BoldItalic",e["MS-Gothic-Italic"]="MS Gothic-Italic",e["MS-Mincho"]="MS Mincho",e["MS-Mincho-Bold"]="MS Mincho-Bold",e["MS-Mincho-BoldItalic"]="MS Mincho-BoldItalic",e["MS-Mincho-Italic"]="MS Mincho-Italic",e["MS-PGothic"]="MS PGothic",e["MS-PGothic-Bold"]="MS PGothic-Bold",e["MS-PGothic-BoldItalic"]="MS PGothic-BoldItalic",e["MS-PGothic-Italic"]="MS PGothic-Italic",e["MS-PMincho"]="MS PMincho",e["MS-PMincho-Bold"]="MS PMincho-Bold",e["MS-PMincho-BoldItalic"]="MS PMincho-BoldItalic",e["MS-PMincho-Italic"]="MS PMincho-Italic",e.NuptialScript="Times-Italic",e.SegoeUISymbol="Helvetica",e.Wingdings="ZapfDingbats",e["Wingdings-Regular"]="ZapfDingbats"}));t.getNonStdFontMap=s;var c=(0,n.getLookupTableFactory)((function(e){e["Adobe Jenson"]=!0,e["Adobe Text"]=!0,e.Albertus=!0,e.Aldus=!0,e.Alexandria=!0,e.Algerian=!0,e["American Typewriter"]=!0,e.Antiqua=!0,e.Apex=!0,e.Arno=!0,e.Aster=!0,e.Aurora=!0,e.Baskerville=!0,e.Bell=!0,e.Bembo=!0,e["Bembo Schoolbook"]=!0,e.Benguiat=!0,e["Berkeley Old Style"]=!0,e["Bernhard Modern"]=!0,e["Berthold City"]=!0,e.Bodoni=!0,e["Bauer Bodoni"]=!0,e["Book Antiqua"]=!0,e.Bookman=!0,e["Bordeaux Roman"]=!0,e["Californian FB"]=!0,e.Calisto=!0,e.Calvert=!0,e.Capitals=!0,e.Cambria=!0,e.Cartier=!0,e.Caslon=!0,e.Catull=!0,e.Centaur=!0,e["Century Old Style"]=!0,e["Century Schoolbook"]=!0,e.Chaparral=!0,e["Charis SIL"]=!0,e.Cheltenham=!0,e["Cholla Slab"]=!0,e.Clarendon=!0,e.Clearface=!0,e.Cochin=!0,e.Colonna=!0,e["Computer Modern"]=!0,e["Concrete Roman"]=!0,e.Constantia=!0,e["Cooper Black"]=!0,e.Corona=!0,e.Ecotype=!0,e.Egyptienne=!0,e.Elephant=!0,e.Excelsior=!0,e.Fairfield=!0,e["FF Scala"]=!0,e.Folkard=!0,e.Footlight=!0,e.FreeSerif=!0,e["Friz Quadrata"]=!0,e.Garamond=!0,e.Gentium=!0,e.Georgia=!0,e.Gloucester=!0,e["Goudy Old Style"]=!0,e["Goudy Schoolbook"]=!0,e["Goudy Pro Font"]=!0,e.Granjon=!0,e["Guardian Egyptian"]=!0,e.Heather=!0,e.Hercules=!0,e["High Tower Text"]=!0,e.Hiroshige=!0,e["Hoefler Text"]=!0,e["Humana Serif"]=!0,e.Imprint=!0,e["Ionic No. 5"]=!0,e.Janson=!0,e.Joanna=!0,e.Korinna=!0,e.Lexicon=!0,e.LiberationSerif=!0,e["Liberation Serif"]=!0,e["Linux Libertine"]=!0,e.Literaturnaya=!0,e.Lucida=!0,e["Lucida Bright"]=!0,e.Melior=!0,e.Memphis=!0,e.Miller=!0,e.Minion=!0,e.Modern=!0,e["Mona Lisa"]=!0,e["Mrs Eaves"]=!0,e["MS Serif"]=!0,e["Museo Slab"]=!0,e["New York"]=!0,e["Nimbus Roman"]=!0,e["NPS Rawlinson Roadway"]=!0,e.NuptialScript=!0,e.Palatino=!0,e.Perpetua=!0,e.Plantin=!0,e["Plantin Schoolbook"]=!0,e.Playbill=!0,e["Poor Richard"]=!0,e["Rawlinson Roadway"]=!0,e.Renault=!0,e.Requiem=!0,e.Rockwell=!0,e.Roman=!0,e["Rotis Serif"]=!0,e.Sabon=!0,e.Scala=!0,e.Seagull=!0,e.Sistina=!0,e.Souvenir=!0,e.STIX=!0,e["Stone Informal"]=!0,e["Stone Serif"]=!0,e.Sylfaen=!0,e.Times=!0,e.Trajan=!0,e["Trinité"]=!0,e["Trump Mediaeval"]=!0,e.Utopia=!0,e["Vale Type"]=!0,e["Bitstream Vera"]=!0,e["Vera Serif"]=!0,e.Versailles=!0,e.Wanted=!0,e.Weiss=!0,e["Wide Latin"]=!0,e.Windsor=!0,e.XITS=!0}));t.getSerifFonts=c;var u=(0,n.getLookupTableFactory)((function(e){e.Dingbats=!0,e.Symbol=!0,e.ZapfDingbats=!0}));t.getSymbolsFonts=u;var l=(0,n.getLookupTableFactory)((function(e){e[2]=10,e[3]=32,e[4]=33,e[5]=34,e[6]=35,e[7]=36,e[8]=37,e[9]=38,e[10]=39,e[11]=40,e[12]=41,e[13]=42,e[14]=43,e[15]=44,e[16]=45,e[17]=46,e[18]=47,e[19]=48,e[20]=49,e[21]=50,e[22]=51,e[23]=52,e[24]=53,e[25]=54,e[26]=55,e[27]=56,e[28]=57,e[29]=58,e[30]=894,e[31]=60,e[32]=61,e[33]=62,e[34]=63,e[35]=64,e[36]=65,e[37]=66,e[38]=67,e[39]=68,e[40]=69,e[41]=70,e[42]=71,e[43]=72,e[44]=73,e[45]=74,e[46]=75,e[47]=76,e[48]=77,e[49]=78,e[50]=79,e[51]=80,e[52]=81,e[53]=82,e[54]=83,e[55]=84,e[56]=85,e[57]=86,e[58]=87,e[59]=88,e[60]=89,e[61]=90,e[62]=91,e[63]=92,e[64]=93,e[65]=94,e[66]=95,e[67]=96,e[68]=97,e[69]=98,e[70]=99,e[71]=100,e[72]=101,e[73]=102,e[74]=103,e[75]=104,e[76]=105,e[77]=106,e[78]=107,e[79]=108,e[80]=109,e[81]=110,e[82]=111,e[83]=112,e[84]=113,e[85]=114,e[86]=115,e[87]=116,e[88]=117,e[89]=118,e[90]=119,e[91]=120,e[92]=121,e[93]=122,e[94]=123,e[95]=124,e[96]=125,e[97]=126,e[98]=196,e[99]=197,e[100]=199,e[101]=201,e[102]=209,e[103]=214,e[104]=220,e[105]=225,e[106]=224,e[107]=226,e[108]=228,e[109]=227,e[110]=229,e[111]=231,e[112]=233,e[113]=232,e[114]=234,e[115]=235,e[116]=237,e[117]=236,e[118]=238,e[119]=239,e[120]=241,e[121]=243,e[122]=242,e[123]=244,e[124]=246,e[125]=245,e[126]=250,e[127]=249,e[128]=251,e[129]=252,e[130]=8224,e[131]=176,e[132]=162,e[133]=163,e[134]=167,e[135]=8226,e[136]=182,e[137]=223,e[138]=174,e[139]=169,e[140]=8482,e[141]=180,e[142]=168,e[143]=8800,e[144]=198,e[145]=216,e[146]=8734,e[147]=177,e[148]=8804,e[149]=8805,e[150]=165,e[151]=181,e[152]=8706,e[153]=8721,e[154]=8719,e[156]=8747,e[157]=170,e[158]=186,e[159]=8486,e[160]=230,e[161]=248,e[162]=191,e[163]=161,e[164]=172,e[165]=8730,e[166]=402,e[167]=8776,e[168]=8710,e[169]=171,e[170]=187,e[171]=8230,e[179]=8220,e[180]=8221,e[181]=8216,e[182]=8217,e[200]=193,e[203]=205,e[210]=218,e[223]=711,e[224]=321,e[225]=322,e[226]=352,e[227]=353,e[228]=381,e[229]=382,e[233]=221,e[234]=253,e[252]=263,e[253]=268,e[254]=269,e[258]=258,e[260]=260,e[261]=261,e[265]=280,e[266]=281,e[267]=282,e[268]=283,e[269]=313,e[275]=323,e[276]=324,e[278]=328,e[283]=344,e[284]=345,e[285]=346,e[286]=347,e[292]=367,e[295]=377,e[296]=378,e[298]=380,e[305]=963,e[306]=964,e[307]=966,e[308]=8215,e[309]=8252,e[310]=8319,e[311]=8359,e[312]=8592,e[313]=8593,e[337]=9552,e[493]=1039,e[494]=1040,e[672]=1488,e[673]=1489,e[674]=1490,e[675]=1491,e[676]=1492,e[677]=1493,e[678]=1494,e[679]=1495,e[680]=1496,e[681]=1497,e[682]=1498,e[683]=1499,e[684]=1500,e[685]=1501,e[686]=1502,e[687]=1503,e[688]=1504,e[689]=1505,e[690]=1506,e[691]=1507,e[692]=1508,e[693]=1509,e[694]=1510,e[695]=1511,e[696]=1512,e[697]=1513,e[698]=1514,e[705]=1524,e[706]=8362,e[710]=64288,e[711]=64298,e[759]=1617,e[761]=1776,e[763]=1778,e[775]=1652,e[777]=1764,e[778]=1780,e[779]=1781,e[780]=1782,e[782]=771,e[783]=64726,e[786]=8363,e[788]=8532,e[790]=768,e[791]=769,e[792]=768,e[795]=803,e[797]=64336,e[798]=64337,e[799]=64342,e[800]=64343,e[801]=64344,e[802]=64345,e[803]=64362,e[804]=64363,e[805]=64364,e[2424]=7821,e[2425]=7822,e[2426]=7823,e[2427]=7824,e[2428]=7825,e[2429]=7826,e[2430]=7827,e[2433]=7682,e[2678]=8045,e[2679]=8046,e[2830]=1552,e[2838]=686,e[2840]=751,e[2842]=753,e[2843]=754,e[2844]=755,e[2846]=757,e[2856]=767,e[2857]=848,e[2858]=849,e[2862]=853,e[2863]=854,e[2864]=855,e[2865]=861,e[2866]=862,e[2906]=7460,e[2908]=7462,e[2909]=7463,e[2910]=7464,e[2912]=7466,e[2913]=7467,e[2914]=7468,e[2916]=7470,e[2917]=7471,e[2918]=7472,e[2920]=7474,e[2921]=7475,e[2922]=7476,e[2924]=7478,e[2925]=7479,e[2926]=7480,e[2928]=7482,e[2929]=7483,e[2930]=7484,e[2932]=7486,e[2933]=7487,e[2934]=7488,e[2936]=7490,e[2937]=7491,e[2938]=7492,e[2940]=7494,e[2941]=7495,e[2942]=7496,e[2944]=7498,e[2946]=7500,e[2948]=7502,e[2950]=7504,e[2951]=7505,e[2952]=7506,e[2954]=7508,e[2955]=7509,e[2956]=7510,e[2958]=7512,e[2959]=7513,e[2960]=7514,e[2962]=7516,e[2963]=7517,e[2964]=7518,e[2966]=7520,e[2967]=7521,e[2968]=7522,e[2970]=7524,e[2971]=7525,e[2972]=7526,e[2974]=7528,e[2975]=7529,e[2976]=7530,e[2978]=1537,e[2979]=1538,e[2980]=1539,e[2982]=1549,e[2983]=1551,e[2984]=1552,e[2986]=1554,e[2987]=1555,e[2988]=1556,e[2990]=1623,e[2991]=1624,e[2995]=1775,e[2999]=1791,e[3002]=64290,e[3003]=64291,e[3004]=64292,e[3006]=64294,e[3007]=64295,e[3008]=64296,e[3011]=1900,e[3014]=8223,e[3015]=8244,e[3017]=7532,e[3018]=7533,e[3019]=7534,e[3075]=7590,e[3076]=7591,e[3079]=7594,e[3080]=7595,e[3083]=7598,e[3084]=7599,e[3087]=7602,e[3088]=7603,e[3091]=7606,e[3092]=7607,e[3095]=7610,e[3096]=7611,e[3099]=7614,e[3100]=7615,e[3103]=7618,e[3104]=7619,e[3107]=8337,e[3108]=8338,e[3116]=1884,e[3119]=1885,e[3120]=1885,e[3123]=1886,e[3124]=1886,e[3127]=1887,e[3128]=1887,e[3131]=1888,e[3132]=1888,e[3135]=1889,e[3136]=1889,e[3139]=1890,e[3140]=1890,e[3143]=1891,e[3144]=1891,e[3147]=1892,e[3148]=1892,e[3153]=580,e[3154]=581,e[3157]=584,e[3158]=585,e[3161]=588,e[3162]=589,e[3165]=891,e[3166]=892,e[3169]=1274,e[3170]=1275,e[3173]=1278,e[3174]=1279,e[3181]=7622,e[3182]=7623,e[3282]=11799,e[3316]=578,e[3379]=42785,e[3393]=1159,e[3416]=8377}));t.getGlyphMapForStandardFonts=l;var f=(0,n.getLookupTableFactory)((function(e){e[227]=322,e[264]=261,e[291]=346}));t.getSupplementalGlyphMapForArialBlack=f;var h=(0,n.getLookupTableFactory)((function(e){e[1]=32,e[4]=65,e[5]=192,e[6]=193,e[9]=196,e[17]=66,e[18]=67,e[21]=268,e[24]=68,e[28]=69,e[29]=200,e[30]=201,e[32]=282,e[38]=70,e[39]=71,e[44]=72,e[47]=73,e[48]=204,e[49]=205,e[58]=74,e[60]=75,e[62]=76,e[68]=77,e[69]=78,e[75]=79,e[76]=210,e[80]=214,e[87]=80,e[89]=81,e[90]=82,e[92]=344,e[94]=83,e[97]=352,e[100]=84,e[104]=85,e[109]=220,e[115]=86,e[116]=87,e[121]=88,e[122]=89,e[124]=221,e[127]=90,e[129]=381,e[258]=97,e[259]=224,e[260]=225,e[263]=228,e[268]=261,e[271]=98,e[272]=99,e[273]=263,e[275]=269,e[282]=100,e[286]=101,e[287]=232,e[288]=233,e[290]=283,e[295]=281,e[296]=102,e[336]=103,e[346]=104,e[349]=105,e[350]=236,e[351]=237,e[361]=106,e[364]=107,e[367]=108,e[371]=322,e[373]=109,e[374]=110,e[381]=111,e[382]=242,e[383]=243,e[386]=246,e[393]=112,e[395]=113,e[396]=114,e[398]=345,e[400]=115,e[401]=347,e[403]=353,e[410]=116,e[437]=117,e[442]=252,e[448]=118,e[449]=119,e[454]=120,e[455]=121,e[457]=253,e[460]=122,e[462]=382,e[463]=380,e[853]=44,e[855]=58,e[856]=46,e[876]=47,e[878]=45,e[882]=45,e[894]=40,e[895]=41,e[896]=91,e[897]=93,e[923]=64,e[1004]=48,e[1005]=49,e[1006]=50,e[1007]=51,e[1008]=52,e[1009]=53,e[1010]=54,e[1011]=55,e[1012]=56,e[1013]=57,e[1081]=37,e[1085]=43,e[1086]=45}));t.getSupplementalGlyphMapForCalibri=h},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ToUnicodeMap=t.IdentityToUnicodeMap=void 0;var n=r(2);function a(e){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a(e)}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:[];i(this,e),this._map=t}return s(e,[{key:"length",get:function(){return this._map.length}},{key:"forEach",value:function(e){for(var t in this._map)e(t,this._map[t].charCodeAt(0))}},{key:"has",value:function(e){return void 0!==this._map[e]}},{key:"get",value:function(e){return this._map[e]}},{key:"charCodeOf",value:function(e){var t=this._map;if(t.length<=65536)return t.indexOf(e);for(var r in t)if(t[r]===e)return 0|r;return-1}},{key:"amend",value:function(e){for(var t in e)this._map[t]=e[t]}}]),e}();t.ToUnicodeMap=c;var u=function(){function e(t,r){i(this,e),this.firstChar=t,this.lastChar=r}return s(e,[{key:"length",get:function(){return this.lastChar+1-this.firstChar}},{key:"forEach",value:function(e){for(var t=this.firstChar,r=this.lastChar;t<=r;t++)e(t,t)}},{key:"has",value:function(e){return this.firstChar<=e&&e<=this.lastChar}},{key:"get",value:function(e){if(this.firstChar<=e&&e<=this.lastChar)return String.fromCharCode(e)}},{key:"charCodeOf",value:function(e){return Number.isInteger(e)&&e>=this.firstChar&&e<=this.lastChar?e:-1}},{key:"amend",value:function(e){(0,n.unreachable)("Should not call amend()")}}]),e}();t.IdentityToUnicodeMap=u},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.CFFFont=void 0;var n=r(164),a=r(167),i=r(2);function o(e){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o(e)}function s(e,t){for(var r=0;r0){c=Object.create(null);for(var l=0,f=i.length;l=0){var c=n[s];c&&(i[o]=c)}}i.length>0&&(this.properties.builtInEncoding=i)}}}])&&s(t.prototype,r),Object.defineProperty(t,"prototype",{writable:!1}),e}();t.CFFFont=c},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FontRendererFactory=void 0;var n=r(2),a=r(164),i=r(168),o=r(166),s=r(139);function c(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&u(e,t)}function u(e,t){return u=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},u(e,t)}function l(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,n=f(e);if(t){var a=f(this).constructor;r=Reflect.construct(n,arguments,a)}else r=n.apply(this,arguments);return function(e,t){if(t&&("object"===h(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(this,r)}}function f(e){return f=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},f(e)}function h(e){return h="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},h(e)}function d(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function p(e,t){for(var r=0;r>>0}function y(e,t){return e[t]<<8|e[t+1]}function m(e,t){return(e[t]<<24|e[t+1]<<16)>>16}function b(e,t){return e[t]<<24>>24}function w(e,t){return m(e,t)/16384}function k(e){var t=e.length,r=32768;return t<1240?r=107:t<33900&&(r=1131),r}function S(e,t,r){var a,i,o,s=1===y(e,t+2)?v(e,t+8):v(e,t+16),c=y(e,t+s);if(4===c){y(e,t+s+2);var u=y(e,t+s+6)>>1;for(i=t+s+14,a=[],o=0;o>1;r0;)P.push({flags:o})}for(x=0;x>1,g=!0;break;case 4:f+=u.pop(),i(l,f),g=!0;break;case 5:for(;u.length>0;)l+=u.shift(),f+=u.shift(),s(l,f);break;case 6:for(;u.length>0&&(s(l+=u.shift(),f),0!==u.length);)f+=u.shift(),s(l,f);break;case 7:for(;u.length>0&&(f+=u.shift(),s(l,f),0!==u.length);)s(l+=u.shift(),f);break;case 8:for(;u.length>0;)y=l+u.shift(),b=f+u.shift(),m=y+u.shift(),w=b+u.shift(),l=m+u.shift(),f=w+u.shift(),c(y,b,m,w,l,f);break;case 10:if(A=u.pop(),F=null,r.isCFFCIDFont){var P=r.fdSelect.getFDIndex(a);if(P>=0&&PMath.abs(f-j)?l+=u.shift():f+=u.shift(),c(y,b,m,w,l,f);break;default:throw new n.FormatError("unknown operator: 12 ".concat(v))}break;case 14:if(u.length>=4){var M=u.pop(),_=u.pop();f=u.pop(),l=u.pop(),t.push({cmd:"save"},{cmd:"translate",args:[l,f]});var L=O(r.cmap,String.fromCharCode(r.glyphNameMap[o.StandardEncoding[M]]));C(r.glyphs[L.glyphId],t,r,L.glyphId),t.push({cmd:"restore"}),L=O(r.cmap,String.fromCharCode(r.glyphNameMap[o.StandardEncoding[_]])),C(r.glyphs[L.glyphId],t,r,L.glyphId)}return;case 19:case 20:p+=(h+=u.length>>1)+7>>3,g=!0;break;case 21:f+=u.pop(),i(l+=u.pop(),f),g=!0;break;case 22:i(l+=u.pop(),f),g=!0;break;case 24:for(;u.length>2;)y=l+u.shift(),b=f+u.shift(),m=y+u.shift(),w=b+u.shift(),l=m+u.shift(),f=w+u.shift(),c(y,b,m,w,l,f);l+=u.shift(),f+=u.shift(),s(l,f);break;case 25:for(;u.length>6;)l+=u.shift(),f+=u.shift(),s(l,f);y=l+u.shift(),b=f+u.shift(),m=y+u.shift(),w=b+u.shift(),l=m+u.shift(),f=w+u.shift(),c(y,b,m,w,l,f);break;case 26:for(u.length%2&&(l+=u.shift());u.length>0;)y=l,b=f+u.shift(),m=y+u.shift(),w=b+u.shift(),l=m,f=w+u.shift(),c(y,b,m,w,l,f);break;case 27:for(u.length%2&&(f+=u.shift());u.length>0;)c(y=l+u.shift(),b=f,m=y+u.shift(),w=b+u.shift(),l=m+u.shift(),f=w);break;case 28:u.push((d[p]<<24|d[p+1]<<16)>>16),p+=2;break;case 29:A=u.pop()+r.gsubrsBias,(F=r.gsubrs[A])&&e(F);break;case 30:for(;u.length>0&&(y=l,b=f+u.shift(),m=y+u.shift(),w=b+u.shift(),l=m+u.shift(),f=w+(1===u.length?u.shift():0),c(y,b,m,w,l,f),0!==u.length);)y=l+u.shift(),b=f,m=y+u.shift(),w=b+u.shift(),f=w+u.shift(),c(y,b,m,w,l=m+(1===u.length?u.shift():0),f);break;case 31:for(;u.length>0&&(y=l+u.shift(),b=f,m=y+u.shift(),w=b+u.shift(),f=w+u.shift(),c(y,b,m,w,l=m+(1===u.length?u.shift():0),f),0!==u.length);)y=l,b=f+u.shift(),m=y+u.shift(),w=b+u.shift(),l=m+u.shift(),f=w+(1===u.length?u.shift():0),c(y,b,m,w,l,f);break;default:if(v<32)throw new n.FormatError("unknown operator: ".concat(v));v<247?u.push(v-139):v<251?u.push(256*(v-247)+d[p++]+108):v<255?u.push(256*-(v-251)-d[p++]-108):(u.push((d[p]<<24|d[p+1]<<16|d[p+2]<<8|d[p+3])/65536),p+=4)}g&&(u.length=0)}}(e)}var F=[],P=function(){function e(t){d(this,e),this.constructor===e&&(0,n.unreachable)("Cannot initialize CompiledFont."),this.fontMatrix=t,this.compiledGlyphs=Object.create(null),this.compiledCharCodeToGlyphId=Object.create(null)}return g(e,[{key:"getPathJs",value:function(e){var t=O(this.cmap,e),r=t.charCode,n=t.glyphId,a=this.compiledGlyphs[n];if(!a)try{a=this.compileGlyph(this.glyphs[n],n),this.compiledGlyphs[n]=a}catch(e){throw this.compiledGlyphs[n]=F,void 0===this.compiledCharCodeToGlyphId[r]&&(this.compiledCharCodeToGlyphId[r]=n),e}return void 0===this.compiledCharCodeToGlyphId[r]&&(this.compiledCharCodeToGlyphId[r]=n),a}},{key:"compileGlyph",value:function(e,t){if(!e||0===e.length||14===e[0])return F;var r=this.fontMatrix;if(this.isCFFCIDFont){var a=this.fdSelect.getFDIndex(t);a>=0&&a{Object.defineProperty(t,"__esModule",{value:!0}),t.getMetrics=t.getFontBasicMetrics=void 0;var n=r(135),a=(0,n.getLookupTableFactory)((function(e){e.Courier=600,e["Courier-Bold"]=600,e["Courier-BoldOblique"]=600,e["Courier-Oblique"]=600,e.Helvetica=(0,n.getLookupTableFactory)((function(e){e.space=278,e.exclam=278,e.quotedbl=355,e.numbersign=556,e.dollar=556,e.percent=889,e.ampersand=667,e.quoteright=222,e.parenleft=333,e.parenright=333,e.asterisk=389,e.plus=584,e.comma=278,e.hyphen=333,e.period=278,e.slash=278,e.zero=556,e.one=556,e.two=556,e.three=556,e.four=556,e.five=556,e.six=556,e.seven=556,e.eight=556,e.nine=556,e.colon=278,e.semicolon=278,e.less=584,e.equal=584,e.greater=584,e.question=556,e.at=1015,e.A=667,e.B=667,e.C=722,e.D=722,e.E=667,e.F=611,e.G=778,e.H=722,e.I=278,e.J=500,e.K=667,e.L=556,e.M=833,e.N=722,e.O=778,e.P=667,e.Q=778,e.R=722,e.S=667,e.T=611,e.U=722,e.V=667,e.W=944,e.X=667,e.Y=667,e.Z=611,e.bracketleft=278,e.backslash=278,e.bracketright=278,e.asciicircum=469,e.underscore=556,e.quoteleft=222,e.a=556,e.b=556,e.c=500,e.d=556,e.e=556,e.f=278,e.g=556,e.h=556,e.i=222,e.j=222,e.k=500,e.l=222,e.m=833,e.n=556,e.o=556,e.p=556,e.q=556,e.r=333,e.s=500,e.t=278,e.u=556,e.v=500,e.w=722,e.x=500,e.y=500,e.z=500,e.braceleft=334,e.bar=260,e.braceright=334,e.asciitilde=584,e.exclamdown=333,e.cent=556,e.sterling=556,e.fraction=167,e.yen=556,e.florin=556,e.section=556,e.currency=556,e.quotesingle=191,e.quotedblleft=333,e.guillemotleft=556,e.guilsinglleft=333,e.guilsinglright=333,e.fi=500,e.fl=500,e.endash=556,e.dagger=556,e.daggerdbl=556,e.periodcentered=278,e.paragraph=537,e.bullet=350,e.quotesinglbase=222,e.quotedblbase=333,e.quotedblright=333,e.guillemotright=556,e.ellipsis=1e3,e.perthousand=1e3,e.questiondown=611,e.grave=333,e.acute=333,e.circumflex=333,e.tilde=333,e.macron=333,e.breve=333,e.dotaccent=333,e.dieresis=333,e.ring=333,e.cedilla=333,e.hungarumlaut=333,e.ogonek=333,e.caron=333,e.emdash=1e3,e.AE=1e3,e.ordfeminine=370,e.Lslash=556,e.Oslash=778,e.OE=1e3,e.ordmasculine=365,e.ae=889,e.dotlessi=278,e.lslash=222,e.oslash=611,e.oe=944,e.germandbls=611,e.Idieresis=278,e.eacute=556,e.abreve=556,e.uhungarumlaut=556,e.ecaron=556,e.Ydieresis=667,e.divide=584,e.Yacute=667,e.Acircumflex=667,e.aacute=556,e.Ucircumflex=722,e.yacute=500,e.scommaaccent=500,e.ecircumflex=556,e.Uring=722,e.Udieresis=722,e.aogonek=556,e.Uacute=722,e.uogonek=556,e.Edieresis=667,e.Dcroat=722,e.commaaccent=250,e.copyright=737,e.Emacron=667,e.ccaron=500,e.aring=556,e.Ncommaaccent=722,e.lacute=222,e.agrave=556,e.Tcommaaccent=611,e.Cacute=722,e.atilde=556,e.Edotaccent=667,e.scaron=500,e.scedilla=500,e.iacute=278,e.lozenge=471,e.Rcaron=722,e.Gcommaaccent=778,e.ucircumflex=556,e.acircumflex=556,e.Amacron=667,e.rcaron=333,e.ccedilla=500,e.Zdotaccent=611,e.Thorn=667,e.Omacron=778,e.Racute=722,e.Sacute=667,e.dcaron=643,e.Umacron=722,e.uring=556,e.threesuperior=333,e.Ograve=778,e.Agrave=667,e.Abreve=667,e.multiply=584,e.uacute=556,e.Tcaron=611,e.partialdiff=476,e.ydieresis=500,e.Nacute=722,e.icircumflex=278,e.Ecircumflex=667,e.adieresis=556,e.edieresis=556,e.cacute=500,e.nacute=556,e.umacron=556,e.Ncaron=722,e.Iacute=278,e.plusminus=584,e.brokenbar=260,e.registered=737,e.Gbreve=778,e.Idotaccent=278,e.summation=600,e.Egrave=667,e.racute=333,e.omacron=556,e.Zacute=611,e.Zcaron=611,e.greaterequal=549,e.Eth=722,e.Ccedilla=722,e.lcommaaccent=222,e.tcaron=317,e.eogonek=556,e.Uogonek=722,e.Aacute=667,e.Adieresis=667,e.egrave=556,e.zacute=500,e.iogonek=222,e.Oacute=778,e.oacute=556,e.amacron=556,e.sacute=500,e.idieresis=278,e.Ocircumflex=778,e.Ugrave=722,e.Delta=612,e.thorn=556,e.twosuperior=333,e.Odieresis=778,e.mu=556,e.igrave=278,e.ohungarumlaut=556,e.Eogonek=667,e.dcroat=556,e.threequarters=834,e.Scedilla=667,e.lcaron=299,e.Kcommaaccent=667,e.Lacute=556,e.trademark=1e3,e.edotaccent=556,e.Igrave=278,e.Imacron=278,e.Lcaron=556,e.onehalf=834,e.lessequal=549,e.ocircumflex=556,e.ntilde=556,e.Uhungarumlaut=722,e.Eacute=667,e.emacron=556,e.gbreve=556,e.onequarter=834,e.Scaron=667,e.Scommaaccent=667,e.Ohungarumlaut=778,e.degree=400,e.ograve=556,e.Ccaron=722,e.ugrave=556,e.radical=453,e.Dcaron=722,e.rcommaaccent=333,e.Ntilde=722,e.otilde=556,e.Rcommaaccent=722,e.Lcommaaccent=556,e.Atilde=667,e.Aogonek=667,e.Aring=667,e.Otilde=778,e.zdotaccent=500,e.Ecaron=667,e.Iogonek=278,e.kcommaaccent=500,e.minus=584,e.Icircumflex=278,e.ncaron=556,e.tcommaaccent=278,e.logicalnot=584,e.odieresis=556,e.udieresis=556,e.notequal=549,e.gcommaaccent=556,e.eth=556,e.zcaron=500,e.ncommaaccent=556,e.onesuperior=333,e.imacron=278,e.Euro=556})),e["Helvetica-Bold"]=(0,n.getLookupTableFactory)((function(e){e.space=278,e.exclam=333,e.quotedbl=474,e.numbersign=556,e.dollar=556,e.percent=889,e.ampersand=722,e.quoteright=278,e.parenleft=333,e.parenright=333,e.asterisk=389,e.plus=584,e.comma=278,e.hyphen=333,e.period=278,e.slash=278,e.zero=556,e.one=556,e.two=556,e.three=556,e.four=556,e.five=556,e.six=556,e.seven=556,e.eight=556,e.nine=556,e.colon=333,e.semicolon=333,e.less=584,e.equal=584,e.greater=584,e.question=611,e.at=975,e.A=722,e.B=722,e.C=722,e.D=722,e.E=667,e.F=611,e.G=778,e.H=722,e.I=278,e.J=556,e.K=722,e.L=611,e.M=833,e.N=722,e.O=778,e.P=667,e.Q=778,e.R=722,e.S=667,e.T=611,e.U=722,e.V=667,e.W=944,e.X=667,e.Y=667,e.Z=611,e.bracketleft=333,e.backslash=278,e.bracketright=333,e.asciicircum=584,e.underscore=556,e.quoteleft=278,e.a=556,e.b=611,e.c=556,e.d=611,e.e=556,e.f=333,e.g=611,e.h=611,e.i=278,e.j=278,e.k=556,e.l=278,e.m=889,e.n=611,e.o=611,e.p=611,e.q=611,e.r=389,e.s=556,e.t=333,e.u=611,e.v=556,e.w=778,e.x=556,e.y=556,e.z=500,e.braceleft=389,e.bar=280,e.braceright=389,e.asciitilde=584,e.exclamdown=333,e.cent=556,e.sterling=556,e.fraction=167,e.yen=556,e.florin=556,e.section=556,e.currency=556,e.quotesingle=238,e.quotedblleft=500,e.guillemotleft=556,e.guilsinglleft=333,e.guilsinglright=333,e.fi=611,e.fl=611,e.endash=556,e.dagger=556,e.daggerdbl=556,e.periodcentered=278,e.paragraph=556,e.bullet=350,e.quotesinglbase=278,e.quotedblbase=500,e.quotedblright=500,e.guillemotright=556,e.ellipsis=1e3,e.perthousand=1e3,e.questiondown=611,e.grave=333,e.acute=333,e.circumflex=333,e.tilde=333,e.macron=333,e.breve=333,e.dotaccent=333,e.dieresis=333,e.ring=333,e.cedilla=333,e.hungarumlaut=333,e.ogonek=333,e.caron=333,e.emdash=1e3,e.AE=1e3,e.ordfeminine=370,e.Lslash=611,e.Oslash=778,e.OE=1e3,e.ordmasculine=365,e.ae=889,e.dotlessi=278,e.lslash=278,e.oslash=611,e.oe=944,e.germandbls=611,e.Idieresis=278,e.eacute=556,e.abreve=556,e.uhungarumlaut=611,e.ecaron=556,e.Ydieresis=667,e.divide=584,e.Yacute=667,e.Acircumflex=722,e.aacute=556,e.Ucircumflex=722,e.yacute=556,e.scommaaccent=556,e.ecircumflex=556,e.Uring=722,e.Udieresis=722,e.aogonek=556,e.Uacute=722,e.uogonek=611,e.Edieresis=667,e.Dcroat=722,e.commaaccent=250,e.copyright=737,e.Emacron=667,e.ccaron=556,e.aring=556,e.Ncommaaccent=722,e.lacute=278,e.agrave=556,e.Tcommaaccent=611,e.Cacute=722,e.atilde=556,e.Edotaccent=667,e.scaron=556,e.scedilla=556,e.iacute=278,e.lozenge=494,e.Rcaron=722,e.Gcommaaccent=778,e.ucircumflex=611,e.acircumflex=556,e.Amacron=722,e.rcaron=389,e.ccedilla=556,e.Zdotaccent=611,e.Thorn=667,e.Omacron=778,e.Racute=722,e.Sacute=667,e.dcaron=743,e.Umacron=722,e.uring=611,e.threesuperior=333,e.Ograve=778,e.Agrave=722,e.Abreve=722,e.multiply=584,e.uacute=611,e.Tcaron=611,e.partialdiff=494,e.ydieresis=556,e.Nacute=722,e.icircumflex=278,e.Ecircumflex=667,e.adieresis=556,e.edieresis=556,e.cacute=556,e.nacute=611,e.umacron=611,e.Ncaron=722,e.Iacute=278,e.plusminus=584,e.brokenbar=280,e.registered=737,e.Gbreve=778,e.Idotaccent=278,e.summation=600,e.Egrave=667,e.racute=389,e.omacron=611,e.Zacute=611,e.Zcaron=611,e.greaterequal=549,e.Eth=722,e.Ccedilla=722,e.lcommaaccent=278,e.tcaron=389,e.eogonek=556,e.Uogonek=722,e.Aacute=722,e.Adieresis=722,e.egrave=556,e.zacute=500,e.iogonek=278,e.Oacute=778,e.oacute=611,e.amacron=556,e.sacute=556,e.idieresis=278,e.Ocircumflex=778,e.Ugrave=722,e.Delta=612,e.thorn=611,e.twosuperior=333,e.Odieresis=778,e.mu=611,e.igrave=278,e.ohungarumlaut=611,e.Eogonek=667,e.dcroat=611,e.threequarters=834,e.Scedilla=667,e.lcaron=400,e.Kcommaaccent=722,e.Lacute=611,e.trademark=1e3,e.edotaccent=556,e.Igrave=278,e.Imacron=278,e.Lcaron=611,e.onehalf=834,e.lessequal=549,e.ocircumflex=611,e.ntilde=611,e.Uhungarumlaut=722,e.Eacute=667,e.emacron=556,e.gbreve=611,e.onequarter=834,e.Scaron=667,e.Scommaaccent=667,e.Ohungarumlaut=778,e.degree=400,e.ograve=611,e.Ccaron=722,e.ugrave=611,e.radical=549,e.Dcaron=722,e.rcommaaccent=389,e.Ntilde=722,e.otilde=611,e.Rcommaaccent=722,e.Lcommaaccent=611,e.Atilde=722,e.Aogonek=722,e.Aring=722,e.Otilde=778,e.zdotaccent=500,e.Ecaron=667,e.Iogonek=278,e.kcommaaccent=556,e.minus=584,e.Icircumflex=278,e.ncaron=611,e.tcommaaccent=333,e.logicalnot=584,e.odieresis=611,e.udieresis=611,e.notequal=549,e.gcommaaccent=611,e.eth=611,e.zcaron=500,e.ncommaaccent=611,e.onesuperior=333,e.imacron=278,e.Euro=556})),e["Helvetica-BoldOblique"]=(0,n.getLookupTableFactory)((function(e){e.space=278,e.exclam=333,e.quotedbl=474,e.numbersign=556,e.dollar=556,e.percent=889,e.ampersand=722,e.quoteright=278,e.parenleft=333,e.parenright=333,e.asterisk=389,e.plus=584,e.comma=278,e.hyphen=333,e.period=278,e.slash=278,e.zero=556,e.one=556,e.two=556,e.three=556,e.four=556,e.five=556,e.six=556,e.seven=556,e.eight=556,e.nine=556,e.colon=333,e.semicolon=333,e.less=584,e.equal=584,e.greater=584,e.question=611,e.at=975,e.A=722,e.B=722,e.C=722,e.D=722,e.E=667,e.F=611,e.G=778,e.H=722,e.I=278,e.J=556,e.K=722,e.L=611,e.M=833,e.N=722,e.O=778,e.P=667,e.Q=778,e.R=722,e.S=667,e.T=611,e.U=722,e.V=667,e.W=944,e.X=667,e.Y=667,e.Z=611,e.bracketleft=333,e.backslash=278,e.bracketright=333,e.asciicircum=584,e.underscore=556,e.quoteleft=278,e.a=556,e.b=611,e.c=556,e.d=611,e.e=556,e.f=333,e.g=611,e.h=611,e.i=278,e.j=278,e.k=556,e.l=278,e.m=889,e.n=611,e.o=611,e.p=611,e.q=611,e.r=389,e.s=556,e.t=333,e.u=611,e.v=556,e.w=778,e.x=556,e.y=556,e.z=500,e.braceleft=389,e.bar=280,e.braceright=389,e.asciitilde=584,e.exclamdown=333,e.cent=556,e.sterling=556,e.fraction=167,e.yen=556,e.florin=556,e.section=556,e.currency=556,e.quotesingle=238,e.quotedblleft=500,e.guillemotleft=556,e.guilsinglleft=333,e.guilsinglright=333,e.fi=611,e.fl=611,e.endash=556,e.dagger=556,e.daggerdbl=556,e.periodcentered=278,e.paragraph=556,e.bullet=350,e.quotesinglbase=278,e.quotedblbase=500,e.quotedblright=500,e.guillemotright=556,e.ellipsis=1e3,e.perthousand=1e3,e.questiondown=611,e.grave=333,e.acute=333,e.circumflex=333,e.tilde=333,e.macron=333,e.breve=333,e.dotaccent=333,e.dieresis=333,e.ring=333,e.cedilla=333,e.hungarumlaut=333,e.ogonek=333,e.caron=333,e.emdash=1e3,e.AE=1e3,e.ordfeminine=370,e.Lslash=611,e.Oslash=778,e.OE=1e3,e.ordmasculine=365,e.ae=889,e.dotlessi=278,e.lslash=278,e.oslash=611,e.oe=944,e.germandbls=611,e.Idieresis=278,e.eacute=556,e.abreve=556,e.uhungarumlaut=611,e.ecaron=556,e.Ydieresis=667,e.divide=584,e.Yacute=667,e.Acircumflex=722,e.aacute=556,e.Ucircumflex=722,e.yacute=556,e.scommaaccent=556,e.ecircumflex=556,e.Uring=722,e.Udieresis=722,e.aogonek=556,e.Uacute=722,e.uogonek=611,e.Edieresis=667,e.Dcroat=722,e.commaaccent=250,e.copyright=737,e.Emacron=667,e.ccaron=556,e.aring=556,e.Ncommaaccent=722,e.lacute=278,e.agrave=556,e.Tcommaaccent=611,e.Cacute=722,e.atilde=556,e.Edotaccent=667,e.scaron=556,e.scedilla=556,e.iacute=278,e.lozenge=494,e.Rcaron=722,e.Gcommaaccent=778,e.ucircumflex=611,e.acircumflex=556,e.Amacron=722,e.rcaron=389,e.ccedilla=556,e.Zdotaccent=611,e.Thorn=667,e.Omacron=778,e.Racute=722,e.Sacute=667,e.dcaron=743,e.Umacron=722,e.uring=611,e.threesuperior=333,e.Ograve=778,e.Agrave=722,e.Abreve=722,e.multiply=584,e.uacute=611,e.Tcaron=611,e.partialdiff=494,e.ydieresis=556,e.Nacute=722,e.icircumflex=278,e.Ecircumflex=667,e.adieresis=556,e.edieresis=556,e.cacute=556,e.nacute=611,e.umacron=611,e.Ncaron=722,e.Iacute=278,e.plusminus=584,e.brokenbar=280,e.registered=737,e.Gbreve=778,e.Idotaccent=278,e.summation=600,e.Egrave=667,e.racute=389,e.omacron=611,e.Zacute=611,e.Zcaron=611,e.greaterequal=549,e.Eth=722,e.Ccedilla=722,e.lcommaaccent=278,e.tcaron=389,e.eogonek=556,e.Uogonek=722,e.Aacute=722,e.Adieresis=722,e.egrave=556,e.zacute=500,e.iogonek=278,e.Oacute=778,e.oacute=611,e.amacron=556,e.sacute=556,e.idieresis=278,e.Ocircumflex=778,e.Ugrave=722,e.Delta=612,e.thorn=611,e.twosuperior=333,e.Odieresis=778,e.mu=611,e.igrave=278,e.ohungarumlaut=611,e.Eogonek=667,e.dcroat=611,e.threequarters=834,e.Scedilla=667,e.lcaron=400,e.Kcommaaccent=722,e.Lacute=611,e.trademark=1e3,e.edotaccent=556,e.Igrave=278,e.Imacron=278,e.Lcaron=611,e.onehalf=834,e.lessequal=549,e.ocircumflex=611,e.ntilde=611,e.Uhungarumlaut=722,e.Eacute=667,e.emacron=556,e.gbreve=611,e.onequarter=834,e.Scaron=667,e.Scommaaccent=667,e.Ohungarumlaut=778,e.degree=400,e.ograve=611,e.Ccaron=722,e.ugrave=611,e.radical=549,e.Dcaron=722,e.rcommaaccent=389,e.Ntilde=722,e.otilde=611,e.Rcommaaccent=722,e.Lcommaaccent=611,e.Atilde=722,e.Aogonek=722,e.Aring=722,e.Otilde=778,e.zdotaccent=500,e.Ecaron=667,e.Iogonek=278,e.kcommaaccent=556,e.minus=584,e.Icircumflex=278,e.ncaron=611,e.tcommaaccent=333,e.logicalnot=584,e.odieresis=611,e.udieresis=611,e.notequal=549,e.gcommaaccent=611,e.eth=611,e.zcaron=500,e.ncommaaccent=611,e.onesuperior=333,e.imacron=278,e.Euro=556})),e["Helvetica-Oblique"]=(0,n.getLookupTableFactory)((function(e){e.space=278,e.exclam=278,e.quotedbl=355,e.numbersign=556,e.dollar=556,e.percent=889,e.ampersand=667,e.quoteright=222,e.parenleft=333,e.parenright=333,e.asterisk=389,e.plus=584,e.comma=278,e.hyphen=333,e.period=278,e.slash=278,e.zero=556,e.one=556,e.two=556,e.three=556,e.four=556,e.five=556,e.six=556,e.seven=556,e.eight=556,e.nine=556,e.colon=278,e.semicolon=278,e.less=584,e.equal=584,e.greater=584,e.question=556,e.at=1015,e.A=667,e.B=667,e.C=722,e.D=722,e.E=667,e.F=611,e.G=778,e.H=722,e.I=278,e.J=500,e.K=667,e.L=556,e.M=833,e.N=722,e.O=778,e.P=667,e.Q=778,e.R=722,e.S=667,e.T=611,e.U=722,e.V=667,e.W=944,e.X=667,e.Y=667,e.Z=611,e.bracketleft=278,e.backslash=278,e.bracketright=278,e.asciicircum=469,e.underscore=556,e.quoteleft=222,e.a=556,e.b=556,e.c=500,e.d=556,e.e=556,e.f=278,e.g=556,e.h=556,e.i=222,e.j=222,e.k=500,e.l=222,e.m=833,e.n=556,e.o=556,e.p=556,e.q=556,e.r=333,e.s=500,e.t=278,e.u=556,e.v=500,e.w=722,e.x=500,e.y=500,e.z=500,e.braceleft=334,e.bar=260,e.braceright=334,e.asciitilde=584,e.exclamdown=333,e.cent=556,e.sterling=556,e.fraction=167,e.yen=556,e.florin=556,e.section=556,e.currency=556,e.quotesingle=191,e.quotedblleft=333,e.guillemotleft=556,e.guilsinglleft=333,e.guilsinglright=333,e.fi=500,e.fl=500,e.endash=556,e.dagger=556,e.daggerdbl=556,e.periodcentered=278,e.paragraph=537,e.bullet=350,e.quotesinglbase=222,e.quotedblbase=333,e.quotedblright=333,e.guillemotright=556,e.ellipsis=1e3,e.perthousand=1e3,e.questiondown=611,e.grave=333,e.acute=333,e.circumflex=333,e.tilde=333,e.macron=333,e.breve=333,e.dotaccent=333,e.dieresis=333,e.ring=333,e.cedilla=333,e.hungarumlaut=333,e.ogonek=333,e.caron=333,e.emdash=1e3,e.AE=1e3,e.ordfeminine=370,e.Lslash=556,e.Oslash=778,e.OE=1e3,e.ordmasculine=365,e.ae=889,e.dotlessi=278,e.lslash=222,e.oslash=611,e.oe=944,e.germandbls=611,e.Idieresis=278,e.eacute=556,e.abreve=556,e.uhungarumlaut=556,e.ecaron=556,e.Ydieresis=667,e.divide=584,e.Yacute=667,e.Acircumflex=667,e.aacute=556,e.Ucircumflex=722,e.yacute=500,e.scommaaccent=500,e.ecircumflex=556,e.Uring=722,e.Udieresis=722,e.aogonek=556,e.Uacute=722,e.uogonek=556,e.Edieresis=667,e.Dcroat=722,e.commaaccent=250,e.copyright=737,e.Emacron=667,e.ccaron=500,e.aring=556,e.Ncommaaccent=722,e.lacute=222,e.agrave=556,e.Tcommaaccent=611,e.Cacute=722,e.atilde=556,e.Edotaccent=667,e.scaron=500,e.scedilla=500,e.iacute=278,e.lozenge=471,e.Rcaron=722,e.Gcommaaccent=778,e.ucircumflex=556,e.acircumflex=556,e.Amacron=667,e.rcaron=333,e.ccedilla=500,e.Zdotaccent=611,e.Thorn=667,e.Omacron=778,e.Racute=722,e.Sacute=667,e.dcaron=643,e.Umacron=722,e.uring=556,e.threesuperior=333,e.Ograve=778,e.Agrave=667,e.Abreve=667,e.multiply=584,e.uacute=556,e.Tcaron=611,e.partialdiff=476,e.ydieresis=500,e.Nacute=722,e.icircumflex=278,e.Ecircumflex=667,e.adieresis=556,e.edieresis=556,e.cacute=500,e.nacute=556,e.umacron=556,e.Ncaron=722,e.Iacute=278,e.plusminus=584,e.brokenbar=260,e.registered=737,e.Gbreve=778,e.Idotaccent=278,e.summation=600,e.Egrave=667,e.racute=333,e.omacron=556,e.Zacute=611,e.Zcaron=611,e.greaterequal=549,e.Eth=722,e.Ccedilla=722,e.lcommaaccent=222,e.tcaron=317,e.eogonek=556,e.Uogonek=722,e.Aacute=667,e.Adieresis=667,e.egrave=556,e.zacute=500,e.iogonek=222,e.Oacute=778,e.oacute=556,e.amacron=556,e.sacute=500,e.idieresis=278,e.Ocircumflex=778,e.Ugrave=722,e.Delta=612,e.thorn=556,e.twosuperior=333,e.Odieresis=778,e.mu=556,e.igrave=278,e.ohungarumlaut=556,e.Eogonek=667,e.dcroat=556,e.threequarters=834,e.Scedilla=667,e.lcaron=299,e.Kcommaaccent=667,e.Lacute=556,e.trademark=1e3,e.edotaccent=556,e.Igrave=278,e.Imacron=278,e.Lcaron=556,e.onehalf=834,e.lessequal=549,e.ocircumflex=556,e.ntilde=556,e.Uhungarumlaut=722,e.Eacute=667,e.emacron=556,e.gbreve=556,e.onequarter=834,e.Scaron=667,e.Scommaaccent=667,e.Ohungarumlaut=778,e.degree=400,e.ograve=556,e.Ccaron=722,e.ugrave=556,e.radical=453,e.Dcaron=722,e.rcommaaccent=333,e.Ntilde=722,e.otilde=556,e.Rcommaaccent=722,e.Lcommaaccent=556,e.Atilde=667,e.Aogonek=667,e.Aring=667,e.Otilde=778,e.zdotaccent=500,e.Ecaron=667,e.Iogonek=278,e.kcommaaccent=500,e.minus=584,e.Icircumflex=278,e.ncaron=556,e.tcommaaccent=278,e.logicalnot=584,e.odieresis=556,e.udieresis=556,e.notequal=549,e.gcommaaccent=556,e.eth=556,e.zcaron=500,e.ncommaaccent=556,e.onesuperior=333,e.imacron=278,e.Euro=556})),e.Symbol=(0,n.getLookupTableFactory)((function(e){e.space=250,e.exclam=333,e.universal=713,e.numbersign=500,e.existential=549,e.percent=833,e.ampersand=778,e.suchthat=439,e.parenleft=333,e.parenright=333,e.asteriskmath=500,e.plus=549,e.comma=250,e.minus=549,e.period=250,e.slash=278,e.zero=500,e.one=500,e.two=500,e.three=500,e.four=500,e.five=500,e.six=500,e.seven=500,e.eight=500,e.nine=500,e.colon=278,e.semicolon=278,e.less=549,e.equal=549,e.greater=549,e.question=444,e.congruent=549,e.Alpha=722,e.Beta=667,e.Chi=722,e.Delta=612,e.Epsilon=611,e.Phi=763,e.Gamma=603,e.Eta=722,e.Iota=333,e.theta1=631,e.Kappa=722,e.Lambda=686,e.Mu=889,e.Nu=722,e.Omicron=722,e.Pi=768,e.Theta=741,e.Rho=556,e.Sigma=592,e.Tau=611,e.Upsilon=690,e.sigma1=439,e.Omega=768,e.Xi=645,e.Psi=795,e.Zeta=611,e.bracketleft=333,e.therefore=863,e.bracketright=333,e.perpendicular=658,e.underscore=500,e.radicalex=500,e.alpha=631,e.beta=549,e.chi=549,e.delta=494,e.epsilon=439,e.phi=521,e.gamma=411,e.eta=603,e.iota=329,e.phi1=603,e.kappa=549,e.lambda=549,e.mu=576,e.nu=521,e.omicron=549,e.pi=549,e.theta=521,e.rho=549,e.sigma=603,e.tau=439,e.upsilon=576,e.omega1=713,e.omega=686,e.xi=493,e.psi=686,e.zeta=494,e.braceleft=480,e.bar=200,e.braceright=480,e.similar=549,e.Euro=750,e.Upsilon1=620,e.minute=247,e.lessequal=549,e.fraction=167,e.infinity=713,e.florin=500,e.club=753,e.diamond=753,e.heart=753,e.spade=753,e.arrowboth=1042,e.arrowleft=987,e.arrowup=603,e.arrowright=987,e.arrowdown=603,e.degree=400,e.plusminus=549,e.second=411,e.greaterequal=549,e.multiply=549,e.proportional=713,e.partialdiff=494,e.bullet=460,e.divide=549,e.notequal=549,e.equivalence=549,e.approxequal=549,e.ellipsis=1e3,e.arrowvertex=603,e.arrowhorizex=1e3,e.carriagereturn=658,e.aleph=823,e.Ifraktur=686,e.Rfraktur=795,e.weierstrass=987,e.circlemultiply=768,e.circleplus=768,e.emptyset=823,e.intersection=768,e.union=768,e.propersuperset=713,e.reflexsuperset=713,e.notsubset=713,e.propersubset=713,e.reflexsubset=713,e.element=713,e.notelement=713,e.angle=768,e.gradient=713,e.registerserif=790,e.copyrightserif=790,e.trademarkserif=890,e.product=823,e.radical=549,e.dotmath=250,e.logicalnot=713,e.logicaland=603,e.logicalor=603,e.arrowdblboth=1042,e.arrowdblleft=987,e.arrowdblup=603,e.arrowdblright=987,e.arrowdbldown=603,e.lozenge=494,e.angleleft=329,e.registersans=790,e.copyrightsans=790,e.trademarksans=786,e.summation=713,e.parenlefttp=384,e.parenleftex=384,e.parenleftbt=384,e.bracketlefttp=384,e.bracketleftex=384,e.bracketleftbt=384,e.bracelefttp=494,e.braceleftmid=494,e.braceleftbt=494,e.braceex=494,e.angleright=329,e.integral=274,e.integraltp=686,e.integralex=686,e.integralbt=686,e.parenrighttp=384,e.parenrightex=384,e.parenrightbt=384,e.bracketrighttp=384,e.bracketrightex=384,e.bracketrightbt=384,e.bracerighttp=494,e.bracerightmid=494,e.bracerightbt=494,e.apple=790})),e["Times-Roman"]=(0,n.getLookupTableFactory)((function(e){e.space=250,e.exclam=333,e.quotedbl=408,e.numbersign=500,e.dollar=500,e.percent=833,e.ampersand=778,e.quoteright=333,e.parenleft=333,e.parenright=333,e.asterisk=500,e.plus=564,e.comma=250,e.hyphen=333,e.period=250,e.slash=278,e.zero=500,e.one=500,e.two=500,e.three=500,e.four=500,e.five=500,e.six=500,e.seven=500,e.eight=500,e.nine=500,e.colon=278,e.semicolon=278,e.less=564,e.equal=564,e.greater=564,e.question=444,e.at=921,e.A=722,e.B=667,e.C=667,e.D=722,e.E=611,e.F=556,e.G=722,e.H=722,e.I=333,e.J=389,e.K=722,e.L=611,e.M=889,e.N=722,e.O=722,e.P=556,e.Q=722,e.R=667,e.S=556,e.T=611,e.U=722,e.V=722,e.W=944,e.X=722,e.Y=722,e.Z=611,e.bracketleft=333,e.backslash=278,e.bracketright=333,e.asciicircum=469,e.underscore=500,e.quoteleft=333,e.a=444,e.b=500,e.c=444,e.d=500,e.e=444,e.f=333,e.g=500,e.h=500,e.i=278,e.j=278,e.k=500,e.l=278,e.m=778,e.n=500,e.o=500,e.p=500,e.q=500,e.r=333,e.s=389,e.t=278,e.u=500,e.v=500,e.w=722,e.x=500,e.y=500,e.z=444,e.braceleft=480,e.bar=200,e.braceright=480,e.asciitilde=541,e.exclamdown=333,e.cent=500,e.sterling=500,e.fraction=167,e.yen=500,e.florin=500,e.section=500,e.currency=500,e.quotesingle=180,e.quotedblleft=444,e.guillemotleft=500,e.guilsinglleft=333,e.guilsinglright=333,e.fi=556,e.fl=556,e.endash=500,e.dagger=500,e.daggerdbl=500,e.periodcentered=250,e.paragraph=453,e.bullet=350,e.quotesinglbase=333,e.quotedblbase=444,e.quotedblright=444,e.guillemotright=500,e.ellipsis=1e3,e.perthousand=1e3,e.questiondown=444,e.grave=333,e.acute=333,e.circumflex=333,e.tilde=333,e.macron=333,e.breve=333,e.dotaccent=333,e.dieresis=333,e.ring=333,e.cedilla=333,e.hungarumlaut=333,e.ogonek=333,e.caron=333,e.emdash=1e3,e.AE=889,e.ordfeminine=276,e.Lslash=611,e.Oslash=722,e.OE=889,e.ordmasculine=310,e.ae=667,e.dotlessi=278,e.lslash=278,e.oslash=500,e.oe=722,e.germandbls=500,e.Idieresis=333,e.eacute=444,e.abreve=444,e.uhungarumlaut=500,e.ecaron=444,e.Ydieresis=722,e.divide=564,e.Yacute=722,e.Acircumflex=722,e.aacute=444,e.Ucircumflex=722,e.yacute=500,e.scommaaccent=389,e.ecircumflex=444,e.Uring=722,e.Udieresis=722,e.aogonek=444,e.Uacute=722,e.uogonek=500,e.Edieresis=611,e.Dcroat=722,e.commaaccent=250,e.copyright=760,e.Emacron=611,e.ccaron=444,e.aring=444,e.Ncommaaccent=722,e.lacute=278,e.agrave=444,e.Tcommaaccent=611,e.Cacute=667,e.atilde=444,e.Edotaccent=611,e.scaron=389,e.scedilla=389,e.iacute=278,e.lozenge=471,e.Rcaron=667,e.Gcommaaccent=722,e.ucircumflex=500,e.acircumflex=444,e.Amacron=722,e.rcaron=333,e.ccedilla=444,e.Zdotaccent=611,e.Thorn=556,e.Omacron=722,e.Racute=667,e.Sacute=556,e.dcaron=588,e.Umacron=722,e.uring=500,e.threesuperior=300,e.Ograve=722,e.Agrave=722,e.Abreve=722,e.multiply=564,e.uacute=500,e.Tcaron=611,e.partialdiff=476,e.ydieresis=500,e.Nacute=722,e.icircumflex=278,e.Ecircumflex=611,e.adieresis=444,e.edieresis=444,e.cacute=444,e.nacute=500,e.umacron=500,e.Ncaron=722,e.Iacute=333,e.plusminus=564,e.brokenbar=200,e.registered=760,e.Gbreve=722,e.Idotaccent=333,e.summation=600,e.Egrave=611,e.racute=333,e.omacron=500,e.Zacute=611,e.Zcaron=611,e.greaterequal=549,e.Eth=722,e.Ccedilla=667,e.lcommaaccent=278,e.tcaron=326,e.eogonek=444,e.Uogonek=722,e.Aacute=722,e.Adieresis=722,e.egrave=444,e.zacute=444,e.iogonek=278,e.Oacute=722,e.oacute=500,e.amacron=444,e.sacute=389,e.idieresis=278,e.Ocircumflex=722,e.Ugrave=722,e.Delta=612,e.thorn=500,e.twosuperior=300,e.Odieresis=722,e.mu=500,e.igrave=278,e.ohungarumlaut=500,e.Eogonek=611,e.dcroat=500,e.threequarters=750,e.Scedilla=556,e.lcaron=344,e.Kcommaaccent=722,e.Lacute=611,e.trademark=980,e.edotaccent=444,e.Igrave=333,e.Imacron=333,e.Lcaron=611,e.onehalf=750,e.lessequal=549,e.ocircumflex=500,e.ntilde=500,e.Uhungarumlaut=722,e.Eacute=611,e.emacron=444,e.gbreve=500,e.onequarter=750,e.Scaron=556,e.Scommaaccent=556,e.Ohungarumlaut=722,e.degree=400,e.ograve=500,e.Ccaron=667,e.ugrave=500,e.radical=453,e.Dcaron=722,e.rcommaaccent=333,e.Ntilde=722,e.otilde=500,e.Rcommaaccent=667,e.Lcommaaccent=611,e.Atilde=722,e.Aogonek=722,e.Aring=722,e.Otilde=722,e.zdotaccent=444,e.Ecaron=611,e.Iogonek=333,e.kcommaaccent=500,e.minus=564,e.Icircumflex=333,e.ncaron=500,e.tcommaaccent=278,e.logicalnot=564,e.odieresis=500,e.udieresis=500,e.notequal=549,e.gcommaaccent=500,e.eth=500,e.zcaron=444,e.ncommaaccent=500,e.onesuperior=300,e.imacron=278,e.Euro=500})),e["Times-Bold"]=(0,n.getLookupTableFactory)((function(e){e.space=250,e.exclam=333,e.quotedbl=555,e.numbersign=500,e.dollar=500,e.percent=1e3,e.ampersand=833,e.quoteright=333,e.parenleft=333,e.parenright=333,e.asterisk=500,e.plus=570,e.comma=250,e.hyphen=333,e.period=250,e.slash=278,e.zero=500,e.one=500,e.two=500,e.three=500,e.four=500,e.five=500,e.six=500,e.seven=500,e.eight=500,e.nine=500,e.colon=333,e.semicolon=333,e.less=570,e.equal=570,e.greater=570,e.question=500,e.at=930,e.A=722,e.B=667,e.C=722,e.D=722,e.E=667,e.F=611,e.G=778,e.H=778,e.I=389,e.J=500,e.K=778,e.L=667,e.M=944,e.N=722,e.O=778,e.P=611,e.Q=778,e.R=722,e.S=556,e.T=667,e.U=722,e.V=722,e.W=1e3,e.X=722,e.Y=722,e.Z=667,e.bracketleft=333,e.backslash=278,e.bracketright=333,e.asciicircum=581,e.underscore=500,e.quoteleft=333,e.a=500,e.b=556,e.c=444,e.d=556,e.e=444,e.f=333,e.g=500,e.h=556,e.i=278,e.j=333,e.k=556,e.l=278,e.m=833,e.n=556,e.o=500,e.p=556,e.q=556,e.r=444,e.s=389,e.t=333,e.u=556,e.v=500,e.w=722,e.x=500,e.y=500,e.z=444,e.braceleft=394,e.bar=220,e.braceright=394,e.asciitilde=520,e.exclamdown=333,e.cent=500,e.sterling=500,e.fraction=167,e.yen=500,e.florin=500,e.section=500,e.currency=500,e.quotesingle=278,e.quotedblleft=500,e.guillemotleft=500,e.guilsinglleft=333,e.guilsinglright=333,e.fi=556,e.fl=556,e.endash=500,e.dagger=500,e.daggerdbl=500,e.periodcentered=250,e.paragraph=540,e.bullet=350,e.quotesinglbase=333,e.quotedblbase=500,e.quotedblright=500,e.guillemotright=500,e.ellipsis=1e3,e.perthousand=1e3,e.questiondown=500,e.grave=333,e.acute=333,e.circumflex=333,e.tilde=333,e.macron=333,e.breve=333,e.dotaccent=333,e.dieresis=333,e.ring=333,e.cedilla=333,e.hungarumlaut=333,e.ogonek=333,e.caron=333,e.emdash=1e3,e.AE=1e3,e.ordfeminine=300,e.Lslash=667,e.Oslash=778,e.OE=1e3,e.ordmasculine=330,e.ae=722,e.dotlessi=278,e.lslash=278,e.oslash=500,e.oe=722,e.germandbls=556,e.Idieresis=389,e.eacute=444,e.abreve=500,e.uhungarumlaut=556,e.ecaron=444,e.Ydieresis=722,e.divide=570,e.Yacute=722,e.Acircumflex=722,e.aacute=500,e.Ucircumflex=722,e.yacute=500,e.scommaaccent=389,e.ecircumflex=444,e.Uring=722,e.Udieresis=722,e.aogonek=500,e.Uacute=722,e.uogonek=556,e.Edieresis=667,e.Dcroat=722,e.commaaccent=250,e.copyright=747,e.Emacron=667,e.ccaron=444,e.aring=500,e.Ncommaaccent=722,e.lacute=278,e.agrave=500,e.Tcommaaccent=667,e.Cacute=722,e.atilde=500,e.Edotaccent=667,e.scaron=389,e.scedilla=389,e.iacute=278,e.lozenge=494,e.Rcaron=722,e.Gcommaaccent=778,e.ucircumflex=556,e.acircumflex=500,e.Amacron=722,e.rcaron=444,e.ccedilla=444,e.Zdotaccent=667,e.Thorn=611,e.Omacron=778,e.Racute=722,e.Sacute=556,e.dcaron=672,e.Umacron=722,e.uring=556,e.threesuperior=300,e.Ograve=778,e.Agrave=722,e.Abreve=722,e.multiply=570,e.uacute=556,e.Tcaron=667,e.partialdiff=494,e.ydieresis=500,e.Nacute=722,e.icircumflex=278,e.Ecircumflex=667,e.adieresis=500,e.edieresis=444,e.cacute=444,e.nacute=556,e.umacron=556,e.Ncaron=722,e.Iacute=389,e.plusminus=570,e.brokenbar=220,e.registered=747,e.Gbreve=778,e.Idotaccent=389,e.summation=600,e.Egrave=667,e.racute=444,e.omacron=500,e.Zacute=667,e.Zcaron=667,e.greaterequal=549,e.Eth=722,e.Ccedilla=722,e.lcommaaccent=278,e.tcaron=416,e.eogonek=444,e.Uogonek=722,e.Aacute=722,e.Adieresis=722,e.egrave=444,e.zacute=444,e.iogonek=278,e.Oacute=778,e.oacute=500,e.amacron=500,e.sacute=389,e.idieresis=278,e.Ocircumflex=778,e.Ugrave=722,e.Delta=612,e.thorn=556,e.twosuperior=300,e.Odieresis=778,e.mu=556,e.igrave=278,e.ohungarumlaut=500,e.Eogonek=667,e.dcroat=556,e.threequarters=750,e.Scedilla=556,e.lcaron=394,e.Kcommaaccent=778,e.Lacute=667,e.trademark=1e3,e.edotaccent=444,e.Igrave=389,e.Imacron=389,e.Lcaron=667,e.onehalf=750,e.lessequal=549,e.ocircumflex=500,e.ntilde=556,e.Uhungarumlaut=722,e.Eacute=667,e.emacron=444,e.gbreve=500,e.onequarter=750,e.Scaron=556,e.Scommaaccent=556,e.Ohungarumlaut=778,e.degree=400,e.ograve=500,e.Ccaron=722,e.ugrave=556,e.radical=549,e.Dcaron=722,e.rcommaaccent=444,e.Ntilde=722,e.otilde=500,e.Rcommaaccent=722,e.Lcommaaccent=667,e.Atilde=722,e.Aogonek=722,e.Aring=722,e.Otilde=778,e.zdotaccent=444,e.Ecaron=667,e.Iogonek=389,e.kcommaaccent=556,e.minus=570,e.Icircumflex=389,e.ncaron=556,e.tcommaaccent=333,e.logicalnot=570,e.odieresis=500,e.udieresis=556,e.notequal=549,e.gcommaaccent=500,e.eth=500,e.zcaron=444,e.ncommaaccent=556,e.onesuperior=300,e.imacron=278,e.Euro=500})),e["Times-BoldItalic"]=(0,n.getLookupTableFactory)((function(e){e.space=250,e.exclam=389,e.quotedbl=555,e.numbersign=500,e.dollar=500,e.percent=833,e.ampersand=778,e.quoteright=333,e.parenleft=333,e.parenright=333,e.asterisk=500,e.plus=570,e.comma=250,e.hyphen=333,e.period=250,e.slash=278,e.zero=500,e.one=500,e.two=500,e.three=500,e.four=500,e.five=500,e.six=500,e.seven=500,e.eight=500,e.nine=500,e.colon=333,e.semicolon=333,e.less=570,e.equal=570,e.greater=570,e.question=500,e.at=832,e.A=667,e.B=667,e.C=667,e.D=722,e.E=667,e.F=667,e.G=722,e.H=778,e.I=389,e.J=500,e.K=667,e.L=611,e.M=889,e.N=722,e.O=722,e.P=611,e.Q=722,e.R=667,e.S=556,e.T=611,e.U=722,e.V=667,e.W=889,e.X=667,e.Y=611,e.Z=611,e.bracketleft=333,e.backslash=278,e.bracketright=333,e.asciicircum=570,e.underscore=500,e.quoteleft=333,e.a=500,e.b=500,e.c=444,e.d=500,e.e=444,e.f=333,e.g=500,e.h=556,e.i=278,e.j=278,e.k=500,e.l=278,e.m=778,e.n=556,e.o=500,e.p=500,e.q=500,e.r=389,e.s=389,e.t=278,e.u=556,e.v=444,e.w=667,e.x=500,e.y=444,e.z=389,e.braceleft=348,e.bar=220,e.braceright=348,e.asciitilde=570,e.exclamdown=389,e.cent=500,e.sterling=500,e.fraction=167,e.yen=500,e.florin=500,e.section=500,e.currency=500,e.quotesingle=278,e.quotedblleft=500,e.guillemotleft=500,e.guilsinglleft=333,e.guilsinglright=333,e.fi=556,e.fl=556,e.endash=500,e.dagger=500,e.daggerdbl=500,e.periodcentered=250,e.paragraph=500,e.bullet=350,e.quotesinglbase=333,e.quotedblbase=500,e.quotedblright=500,e.guillemotright=500,e.ellipsis=1e3,e.perthousand=1e3,e.questiondown=500,e.grave=333,e.acute=333,e.circumflex=333,e.tilde=333,e.macron=333,e.breve=333,e.dotaccent=333,e.dieresis=333,e.ring=333,e.cedilla=333,e.hungarumlaut=333,e.ogonek=333,e.caron=333,e.emdash=1e3,e.AE=944,e.ordfeminine=266,e.Lslash=611,e.Oslash=722,e.OE=944,e.ordmasculine=300,e.ae=722,e.dotlessi=278,e.lslash=278,e.oslash=500,e.oe=722,e.germandbls=500,e.Idieresis=389,e.eacute=444,e.abreve=500,e.uhungarumlaut=556,e.ecaron=444,e.Ydieresis=611,e.divide=570,e.Yacute=611,e.Acircumflex=667,e.aacute=500,e.Ucircumflex=722,e.yacute=444,e.scommaaccent=389,e.ecircumflex=444,e.Uring=722,e.Udieresis=722,e.aogonek=500,e.Uacute=722,e.uogonek=556,e.Edieresis=667,e.Dcroat=722,e.commaaccent=250,e.copyright=747,e.Emacron=667,e.ccaron=444,e.aring=500,e.Ncommaaccent=722,e.lacute=278,e.agrave=500,e.Tcommaaccent=611,e.Cacute=667,e.atilde=500,e.Edotaccent=667,e.scaron=389,e.scedilla=389,e.iacute=278,e.lozenge=494,e.Rcaron=667,e.Gcommaaccent=722,e.ucircumflex=556,e.acircumflex=500,e.Amacron=667,e.rcaron=389,e.ccedilla=444,e.Zdotaccent=611,e.Thorn=611,e.Omacron=722,e.Racute=667,e.Sacute=556,e.dcaron=608,e.Umacron=722,e.uring=556,e.threesuperior=300,e.Ograve=722,e.Agrave=667,e.Abreve=667,e.multiply=570,e.uacute=556,e.Tcaron=611,e.partialdiff=494,e.ydieresis=444,e.Nacute=722,e.icircumflex=278,e.Ecircumflex=667,e.adieresis=500,e.edieresis=444,e.cacute=444,e.nacute=556,e.umacron=556,e.Ncaron=722,e.Iacute=389,e.plusminus=570,e.brokenbar=220,e.registered=747,e.Gbreve=722,e.Idotaccent=389,e.summation=600,e.Egrave=667,e.racute=389,e.omacron=500,e.Zacute=611,e.Zcaron=611,e.greaterequal=549,e.Eth=722,e.Ccedilla=667,e.lcommaaccent=278,e.tcaron=366,e.eogonek=444,e.Uogonek=722,e.Aacute=667,e.Adieresis=667,e.egrave=444,e.zacute=389,e.iogonek=278,e.Oacute=722,e.oacute=500,e.amacron=500,e.sacute=389,e.idieresis=278,e.Ocircumflex=722,e.Ugrave=722,e.Delta=612,e.thorn=500,e.twosuperior=300,e.Odieresis=722,e.mu=576,e.igrave=278,e.ohungarumlaut=500,e.Eogonek=667,e.dcroat=500,e.threequarters=750,e.Scedilla=556,e.lcaron=382,e.Kcommaaccent=667,e.Lacute=611,e.trademark=1e3,e.edotaccent=444,e.Igrave=389,e.Imacron=389,e.Lcaron=611,e.onehalf=750,e.lessequal=549,e.ocircumflex=500,e.ntilde=556,e.Uhungarumlaut=722,e.Eacute=667,e.emacron=444,e.gbreve=500,e.onequarter=750,e.Scaron=556,e.Scommaaccent=556,e.Ohungarumlaut=722,e.degree=400,e.ograve=500,e.Ccaron=667,e.ugrave=556,e.radical=549,e.Dcaron=722,e.rcommaaccent=389,e.Ntilde=722,e.otilde=500,e.Rcommaaccent=667,e.Lcommaaccent=611,e.Atilde=667,e.Aogonek=667,e.Aring=667,e.Otilde=722,e.zdotaccent=389,e.Ecaron=667,e.Iogonek=389,e.kcommaaccent=500,e.minus=606,e.Icircumflex=389,e.ncaron=556,e.tcommaaccent=278,e.logicalnot=606,e.odieresis=500,e.udieresis=556,e.notequal=549,e.gcommaaccent=500,e.eth=500,e.zcaron=389,e.ncommaaccent=556,e.onesuperior=300,e.imacron=278,e.Euro=500})),e["Times-Italic"]=(0,n.getLookupTableFactory)((function(e){e.space=250,e.exclam=333,e.quotedbl=420,e.numbersign=500,e.dollar=500,e.percent=833,e.ampersand=778,e.quoteright=333,e.parenleft=333,e.parenright=333,e.asterisk=500,e.plus=675,e.comma=250,e.hyphen=333,e.period=250,e.slash=278,e.zero=500,e.one=500,e.two=500,e.three=500,e.four=500,e.five=500,e.six=500,e.seven=500,e.eight=500,e.nine=500,e.colon=333,e.semicolon=333,e.less=675,e.equal=675,e.greater=675,e.question=500,e.at=920,e.A=611,e.B=611,e.C=667,e.D=722,e.E=611,e.F=611,e.G=722,e.H=722,e.I=333,e.J=444,e.K=667,e.L=556,e.M=833,e.N=667,e.O=722,e.P=611,e.Q=722,e.R=611,e.S=500,e.T=556,e.U=722,e.V=611,e.W=833,e.X=611,e.Y=556,e.Z=556,e.bracketleft=389,e.backslash=278,e.bracketright=389,e.asciicircum=422,e.underscore=500,e.quoteleft=333,e.a=500,e.b=500,e.c=444,e.d=500,e.e=444,e.f=278,e.g=500,e.h=500,e.i=278,e.j=278,e.k=444,e.l=278,e.m=722,e.n=500,e.o=500,e.p=500,e.q=500,e.r=389,e.s=389,e.t=278,e.u=500,e.v=444,e.w=667,e.x=444,e.y=444,e.z=389,e.braceleft=400,e.bar=275,e.braceright=400,e.asciitilde=541,e.exclamdown=389,e.cent=500,e.sterling=500,e.fraction=167,e.yen=500,e.florin=500,e.section=500,e.currency=500,e.quotesingle=214,e.quotedblleft=556,e.guillemotleft=500,e.guilsinglleft=333,e.guilsinglright=333,e.fi=500,e.fl=500,e.endash=500,e.dagger=500,e.daggerdbl=500,e.periodcentered=250,e.paragraph=523,e.bullet=350,e.quotesinglbase=333,e.quotedblbase=556,e.quotedblright=556,e.guillemotright=500,e.ellipsis=889,e.perthousand=1e3,e.questiondown=500,e.grave=333,e.acute=333,e.circumflex=333,e.tilde=333,e.macron=333,e.breve=333,e.dotaccent=333,e.dieresis=333,e.ring=333,e.cedilla=333,e.hungarumlaut=333,e.ogonek=333,e.caron=333,e.emdash=889,e.AE=889,e.ordfeminine=276,e.Lslash=556,e.Oslash=722,e.OE=944,e.ordmasculine=310,e.ae=667,e.dotlessi=278,e.lslash=278,e.oslash=500,e.oe=667,e.germandbls=500,e.Idieresis=333,e.eacute=444,e.abreve=500,e.uhungarumlaut=500,e.ecaron=444,e.Ydieresis=556,e.divide=675,e.Yacute=556,e.Acircumflex=611,e.aacute=500,e.Ucircumflex=722,e.yacute=444,e.scommaaccent=389,e.ecircumflex=444,e.Uring=722,e.Udieresis=722,e.aogonek=500,e.Uacute=722,e.uogonek=500,e.Edieresis=611,e.Dcroat=722,e.commaaccent=250,e.copyright=760,e.Emacron=611,e.ccaron=444,e.aring=500,e.Ncommaaccent=667,e.lacute=278,e.agrave=500,e.Tcommaaccent=556,e.Cacute=667,e.atilde=500,e.Edotaccent=611,e.scaron=389,e.scedilla=389,e.iacute=278,e.lozenge=471,e.Rcaron=611,e.Gcommaaccent=722,e.ucircumflex=500,e.acircumflex=500,e.Amacron=611,e.rcaron=389,e.ccedilla=444,e.Zdotaccent=556,e.Thorn=611,e.Omacron=722,e.Racute=611,e.Sacute=500,e.dcaron=544,e.Umacron=722,e.uring=500,e.threesuperior=300,e.Ograve=722,e.Agrave=611,e.Abreve=611,e.multiply=675,e.uacute=500,e.Tcaron=556,e.partialdiff=476,e.ydieresis=444,e.Nacute=667,e.icircumflex=278,e.Ecircumflex=611,e.adieresis=500,e.edieresis=444,e.cacute=444,e.nacute=500,e.umacron=500,e.Ncaron=667,e.Iacute=333,e.plusminus=675,e.brokenbar=275,e.registered=760,e.Gbreve=722,e.Idotaccent=333,e.summation=600,e.Egrave=611,e.racute=389,e.omacron=500,e.Zacute=556,e.Zcaron=556,e.greaterequal=549,e.Eth=722,e.Ccedilla=667,e.lcommaaccent=278,e.tcaron=300,e.eogonek=444,e.Uogonek=722,e.Aacute=611,e.Adieresis=611,e.egrave=444,e.zacute=389,e.iogonek=278,e.Oacute=722,e.oacute=500,e.amacron=500,e.sacute=389,e.idieresis=278,e.Ocircumflex=722,e.Ugrave=722,e.Delta=612,e.thorn=500,e.twosuperior=300,e.Odieresis=722,e.mu=500,e.igrave=278,e.ohungarumlaut=500,e.Eogonek=611,e.dcroat=500,e.threequarters=750,e.Scedilla=500,e.lcaron=300,e.Kcommaaccent=667,e.Lacute=556,e.trademark=980,e.edotaccent=444,e.Igrave=333,e.Imacron=333,e.Lcaron=611,e.onehalf=750,e.lessequal=549,e.ocircumflex=500,e.ntilde=500,e.Uhungarumlaut=722,e.Eacute=611,e.emacron=444,e.gbreve=500,e.onequarter=750,e.Scaron=500,e.Scommaaccent=500,e.Ohungarumlaut=722,e.degree=400,e.ograve=500,e.Ccaron=667,e.ugrave=500,e.radical=453,e.Dcaron=722,e.rcommaaccent=389,e.Ntilde=667,e.otilde=500,e.Rcommaaccent=611,e.Lcommaaccent=556,e.Atilde=611,e.Aogonek=611,e.Aring=611,e.Otilde=722,e.zdotaccent=389,e.Ecaron=611,e.Iogonek=333,e.kcommaaccent=444,e.minus=675,e.Icircumflex=333,e.ncaron=500,e.tcommaaccent=278,e.logicalnot=675,e.odieresis=500,e.udieresis=500,e.notequal=549,e.gcommaaccent=500,e.eth=500,e.zcaron=389,e.ncommaaccent=500,e.onesuperior=300,e.imacron=278,e.Euro=500})),e.ZapfDingbats=(0,n.getLookupTableFactory)((function(e){e.space=278,e.a1=974,e.a2=961,e.a202=974,e.a3=980,e.a4=719,e.a5=789,e.a119=790,e.a118=791,e.a117=690,e.a11=960,e.a12=939,e.a13=549,e.a14=855,e.a15=911,e.a16=933,e.a105=911,e.a17=945,e.a18=974,e.a19=755,e.a20=846,e.a21=762,e.a22=761,e.a23=571,e.a24=677,e.a25=763,e.a26=760,e.a27=759,e.a28=754,e.a6=494,e.a7=552,e.a8=537,e.a9=577,e.a10=692,e.a29=786,e.a30=788,e.a31=788,e.a32=790,e.a33=793,e.a34=794,e.a35=816,e.a36=823,e.a37=789,e.a38=841,e.a39=823,e.a40=833,e.a41=816,e.a42=831,e.a43=923,e.a44=744,e.a45=723,e.a46=749,e.a47=790,e.a48=792,e.a49=695,e.a50=776,e.a51=768,e.a52=792,e.a53=759,e.a54=707,e.a55=708,e.a56=682,e.a57=701,e.a58=826,e.a59=815,e.a60=789,e.a61=789,e.a62=707,e.a63=687,e.a64=696,e.a65=689,e.a66=786,e.a67=787,e.a68=713,e.a69=791,e.a70=785,e.a71=791,e.a72=873,e.a73=761,e.a74=762,e.a203=762,e.a75=759,e.a204=759,e.a76=892,e.a77=892,e.a78=788,e.a79=784,e.a81=438,e.a82=138,e.a83=277,e.a84=415,e.a97=392,e.a98=392,e.a99=668,e.a100=668,e.a89=390,e.a90=390,e.a93=317,e.a94=317,e.a91=276,e.a92=276,e.a205=509,e.a85=509,e.a206=410,e.a86=410,e.a87=234,e.a88=234,e.a95=334,e.a96=334,e.a101=732,e.a102=544,e.a103=544,e.a104=910,e.a106=667,e.a107=760,e.a108=760,e.a112=776,e.a111=595,e.a110=694,e.a109=626,e.a120=788,e.a121=788,e.a122=788,e.a123=788,e.a124=788,e.a125=788,e.a126=788,e.a127=788,e.a128=788,e.a129=788,e.a130=788,e.a131=788,e.a132=788,e.a133=788,e.a134=788,e.a135=788,e.a136=788,e.a137=788,e.a138=788,e.a139=788,e.a140=788,e.a141=788,e.a142=788,e.a143=788,e.a144=788,e.a145=788,e.a146=788,e.a147=788,e.a148=788,e.a149=788,e.a150=788,e.a151=788,e.a152=788,e.a153=788,e.a154=788,e.a155=788,e.a156=788,e.a157=788,e.a158=788,e.a159=788,e.a160=894,e.a161=838,e.a163=1016,e.a164=458,e.a196=748,e.a165=924,e.a192=748,e.a166=918,e.a167=927,e.a168=928,e.a169=928,e.a170=834,e.a171=873,e.a172=828,e.a173=924,e.a162=924,e.a174=917,e.a175=930,e.a176=931,e.a177=463,e.a178=883,e.a179=836,e.a193=836,e.a180=867,e.a199=867,e.a181=696,e.a200=696,e.a182=874,e.a201=874,e.a183=760,e.a184=946,e.a197=771,e.a185=865,e.a194=771,e.a198=888,e.a186=967,e.a195=888,e.a187=831,e.a188=873,e.a189=927,e.a190=970,e.a191=918}))}));t.getMetrics=a;var i=(0,n.getLookupTableFactory)((function(e){e.Courier={ascent:629,descent:-157,capHeight:562,xHeight:-426},e["Courier-Bold"]={ascent:629,descent:-157,capHeight:562,xHeight:439},e["Courier-Oblique"]={ascent:629,descent:-157,capHeight:562,xHeight:426},e["Courier-BoldOblique"]={ascent:629,descent:-157,capHeight:562,xHeight:426},e.Helvetica={ascent:718,descent:-207,capHeight:718,xHeight:523},e["Helvetica-Bold"]={ascent:718,descent:-207,capHeight:718,xHeight:532},e["Helvetica-Oblique"]={ascent:718,descent:-207,capHeight:718,xHeight:523},e["Helvetica-BoldOblique"]={ascent:718,descent:-207,capHeight:718,xHeight:532},e["Times-Roman"]={ascent:683,descent:-217,capHeight:662,xHeight:450},e["Times-Bold"]={ascent:683,descent:-217,capHeight:676,xHeight:461},e["Times-Italic"]={ascent:683,descent:-217,capHeight:653,xHeight:441},e["Times-BoldItalic"]={ascent:683,descent:-217,capHeight:669,xHeight:462},e.Symbol={ascent:Math.NaN,descent:Math.NaN,capHeight:Math.NaN,xHeight:Math.NaN},e.ZapfDingbats={ascent:Math.NaN,descent:Math.NaN,capHeight:Math.NaN,xHeight:Math.NaN}}));t.getFontBasicMetrics=i},(e,t)=>{function r(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,o,s=[],c=!0,u=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){u=!0,a=e}finally{try{if(!c&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(u)throw a}}return s}}(e,t)||i(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}function a(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=i(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,a=function(){};return{s:a,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,c=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return s=e.done,e},e:function(e){c=!0,o=e},f:function(){try{s||null==r.return||r.return()}finally{if(c)throw o}}}}function i(e,t){if(e){if("string"==typeof e)return o(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?o(e,t):void 0}}function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r131070,n=r?4:2,i=new DataView(new ArrayBuffer((this.glyphs.length+1)*n));r?i.setUint32(0,0):i.setUint16(0,0);var o,s=0,c=0,u=a(this.glyphs);try{for(u.s();!(o=u.n()).done;)s=(s+=o.value.write(s,t))+3&-4,c+=n,r?i.setUint32(c,s):i.setUint16(c,s>>1)}catch(e){u.e(e)}finally{u.f()}return{isLocationLong:r,loca:new Uint8Array(i.buffer),glyf:new Uint8Array(t.buffer)}}},{key:"scale",value:function(e){for(var t=0,r=this.glyphs.length;t255?t+=2:f>0&&(t+=1),r=u,(f=Math.abs(l-n))>255?t+=2:f>0&&(t+=1),n=l}}}catch(e){i.e(e)}finally{i.f()}return t}},{key:"write",value:function(e,t){var r,n=e,i=[],o=[],s=[],c=0,u=0,l=a(this.contours);try{for(l.s();!(r=l.n()).done;){for(var f=r.value,h=0,d=f.xCoordinates.length;h=0?18:2,i.push(y)):i.push(v)}c=g;var m=f.yCoordinates[h];if(0==(v=m-u))p|=32,o.push(0);else{var b=Math.abs(v);b<=255?(p|=v>=0?36:4,o.push(b)):o.push(v)}u=m,s.push(p)}t.setUint16(e,i.length-1),e+=2}}catch(e){l.e(e)}finally{l.f()}t.setUint16(e,this.instructions.length),e+=2,this.instructions.length&&(new Uint8Array(t.buffer,0,t.buffer.byteLength).set(this.instructions,e),e+=this.instructions.length);for(var w=0,k=s;w=-128&&this.argument1<=127&&this.argument2>=-128&&this.argument2<=127||(e+=2):this.argument1>=0&&this.argument1<=255&&this.argument2>=0&&this.argument2<=255||(e+=2),e}},{key:"write",value:function(e,t){var r=e;return 2&this.flags?this.argument1>=-128&&this.argument1<=127&&this.argument2>=-128&&this.argument2<=127||(this.flags|=1):this.argument1>=0&&this.argument1<=255&&this.argument2>=0&&this.argument2<=255||(this.flags|=1),t.setUint16(e,this.flags),t.setUint16(e+2,this.glyphIndex),e+=4,1&this.flags?(2&this.flags?(t.setInt16(e,this.argument1),t.setInt16(e+2,this.argument2)):(t.setUint16(e,this.argument1),t.setUint16(e+2,this.argument2)),e+=4):(t.setUint8(e,this.argument1),t.setUint8(e+1,this.argument2),e+=2),256&this.flags&&(t.setUint16(e,this.instructions.length),e+=2,this.instructions.length&&(new Uint8Array(t.buffer,0,t.buffer.byteLength).set(this.instructions,e),e+=this.instructions.length)),e-r}},{key:"scale",value:function(e,t){}}],[{key:"parse",value:function(t,r){var n,a,i=t,o=[],s=r.getUint16(t),c=r.getUint16(t+2);t+=4,1&s?(2&s?(n=r.getInt16(t),a=r.getInt16(t+2)):(n=r.getUint16(t),a=r.getUint16(t+2)),t+=4,s^=1):(2&s?(n=r.getInt8(t),a=r.getInt8(t+1)):(n=r.getUint8(t),a=r.getUint8(t+1)),t+=2),8&s?(o.push(r.getUint16(t)),t+=2):64&s?(o.push(r.getUint16(t),r.getUint16(t+2)),t+=4):128&s&&(o.push(r.getUint16(t),r.getUint16(t+2),r.getUint16(t+4),r.getUint16(t+6)),t+=8);var u=null;if(256&s){var l=r.getUint16(t);t+=2,u=new Uint8Array(r).slice(t,t+l),t+=l}return[t-i,new e({flags:s,glyphIndex:c,argument1:n,argument2:a,transf:o,instructions:u})]}}]),e}()},(e,t,r)=>{function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.OpenTypeFileBuilder=void 0;var a=r(135),i=r(2);function o(e,t){for(var r=0;re.length)&&(t=e.length);for(var r=0,n=new Array(t);r>8&255,e[t+1]=255&r}function u(e,t,r){e[t]=r>>24&255,e[t+1]=r>>16&255,e[t+2]=r>>8&255,e[t+3]=255&r}function l(e,t,r){if(r instanceof Uint8Array)e.set(r,t);else if("string"==typeof r)for(var n=0,a=r.length;n=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o=!0,c=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return o=e.done,e},e:function(e){c=!0,i=e},f:function(){try{o||null==r.return||r.return()}finally{if(c)throw i}}}}(r);try{for(o.s();!(i=o.n()).done;){var c=i.value;e[t++]=255&c}}catch(e){o.e(e)}finally{o.f()}}}var f=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.sfnt=t,this.tables=Object.create(null)}var t,r,n;return t=e,n=[{key:"getSearchParams",value:function(e,t){for(var r=1,n=0;(r^e)>r;)r<<=1,n++;var a=r*t;return{range:a,entry:n,rangeShift:t*e-a}}}],(r=[{key:"toArray",value:function(){var t=this.sfnt,r=this.tables,n=Object.keys(r);n.sort();var o,s,f,h,d,p=n.length,g=12+16*p,v=[g];for(o=0;o>>0,v.push(g);var y=new Uint8Array(g);for(o=0;o>>0;u(y,g+4,b),u(y,g+8,v[o]),u(y,g+12,r[d].length),g+=16}return y}},{key:"addTable",value:function(e,t){if(e in this.tables)throw new Error("Table "+e+" already exists");this.tables[e]=t}}])&&o(t.prototype,r),n&&o(t,n),Object.defineProperty(t,"prototype",{writable:!1}),e}();t.OpenTypeFileBuilder=f},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Type1Font=void 0;var n=r(164),a=r(2),i=r(167),o=r(135),s=r(139),c=r(178);function u(e){return u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},u(e)}function l(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(e){if("string"==typeof e)return f(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?f(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,a=function(){};return{s:a,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return o=e.done,e},e:function(e){s=!0,i=e},f:function(){try{o||null==r.return||r.return()}finally{if(s)throw i}}}}function f(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=a){for(s+=u;s=0&&(o[l]=s);return(0,i.type1FontGlyphMapping)(e,o,c)}},{key:"hasGlyphId",value:function(e){return!(e<0||e>=this.numGlyphs)&&(0===e||this.charstrings[e-1].charstring.length>0)}},{key:"getSeacs",value:function(e){for(var t=[],r=0,n=e.length;r0;b--)m[b]-=m[b-1];g.setByName(y,m)}}o.topDict.privateDict=g;var w=new n.CFFIndex;for(u=0,l=a.length;u{Object.defineProperty(t,"__esModule",{value:!0}),t.Type1Parser=void 0;var n=r(166),a=r(135),i=r(139),o=r(2);function s(e){return s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},s(e)}function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);ri)return!0;for(var o=i-e,s=o;s>8&255,255&u):(u=65536*u|0,this.output.push(255,u>>24&255,u>>16&255,u>>8&255,255&u))}return(n=this.output).push.apply(n,function(e){if(Array.isArray(e))return c(e)}(a=t)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(a)||function(e,t){if(e){if("string"==typeof e)return c(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?c(e,t):void 0}}(a)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),r?this.stack.splice(o,e):this.stack.length=0,!1}}]),e}();function O(e){return e>=48&&e<=57||e>=65&&e<=70||e>=97&&e<=102}function A(e,t,r){if(r>=e.length)return new Uint8Array(0);var n,a,i=0|t;for(n=0;n>8,i=52845*(c+i)+22719&65535}return s}function C(e){return 47===e||91===e||93===e||123===e||125===e||40===e||41===e}var F=function(){function e(t,r,n){if(u(this,e),r){var o=t.getBytes(),s=!((O(o[0])||(0,a.isWhiteSpace)(o[0]))&&O(o[1])&&O(o[2])&&O(o[3])&&O(o[4])&&O(o[5])&&O(o[6])&&O(o[7]));t=new i.Stream(s?A(o,55665,4):function(e,t,r){var n,a,i=55665,o=e.length,s=new Uint8Array(o>>>1);for(n=0,a=0;n>8,i=52845*(l+i)+22719&65535}}}return s.slice(4,a)}(o))}this.seacAnalysisEnabled=!!n,this.stream=t,this.nextChar()}return f(e,[{key:"readNumberArray",value:function(){this.getToken();for(var e=[];;){var t=this.getToken();if(null===t||"]"===t||"}"===t)break;e.push(parseFloat(t||0))}return e}},{key:"readNumber",value:function(){var e=this.getToken();return parseFloat(e||0)}},{key:"readInt",value:function(){var e=this.getToken();return 0|parseInt(e||0,10)}},{key:"readBoolean",value:function(){return"true"===this.getToken()?1:0}},{key:"nextChar",value:function(){return this.currentChar=this.stream.getByte()}},{key:"prevChar",value:function(){return this.stream.skip(-2),this.currentChar=this.stream.getByte()}},{key:"getToken",value:function(){for(var e=!1,t=this.currentChar;;){if(-1===t)return null;if(e)10!==t&&13!==t||(e=!1);else if(37===t)e=!0;else if(!(0,a.isWhiteSpace)(t))break;t=this.nextChar()}if(C(t))return this.nextChar(),String.fromCharCode(t);var r="";do{r+=String.fromCharCode(t),t=this.nextChar()}while(t>=0&&!(0,a.isWhiteSpace)(t)&&!C(t));return r}},{key:"readCharStrings",value:function(e,t){return-1===t?e:A(e,4330,t)}},{key:"extractFontProgram",value:function(e){var t=this.stream,r=[],n=[],a=Object.create(null);a.lenIV=4;for(var i,o,s,c,u={subrs:[],charstrings:[],properties:{privateData:a}};null!==(i=this.getToken());)if("/"===i)switch(i=this.getToken()){case"CharStrings":for(this.getToken(),this.getToken(),this.getToken(),this.getToken();null!==(i=this.getToken())&&"end"!==i;)if("/"===i){var l=this.getToken();o=this.readInt(),this.getToken(),s=o>0?t.getBytes(o):new Uint8Array(0),c=u.properties.privateData.lenIV;var f=this.readCharStrings(s,c);this.nextChar(),"noaccess"===(i=this.getToken())?this.getToken():"/"===i&&this.prevChar(),n.push({glyph:l,encoded:f})}break;case"Subrs":for(this.readInt(),this.getToken();"dup"===this.getToken();){var h=this.readInt();o=this.readInt(),this.getToken(),s=o>0?t.getBytes(o):new Uint8Array(0),c=u.properties.privateData.lenIV;var d=this.readCharStrings(s,c);this.nextChar(),"noaccess"===(i=this.getToken())&&this.getToken(),r[h]=d}break;case"BlueValues":case"OtherBlues":case"FamilyBlues":case"FamilyOtherBlues":var p=this.readNumberArray();p.length>0&&p.length;break;case"StemSnapH":case"StemSnapV":u.properties.privateData[i]=this.readNumberArray();break;case"StdHW":case"StdVW":u.properties.privateData[i]=this.readNumberArray()[0];break;case"BlueShift":case"lenIV":case"BlueFuzz":case"BlueScale":case"LanguageGroup":case"ExpansionFactor":u.properties.privateData[i]=this.readNumber();break;case"ForceBold":u.properties.privateData[i]=this.readBoolean()}for(var g=0,v=n;g-1&&void 0===e.widths[A]&&A>=e.firstChar&&A<=e.lastChar&&(e.widths[A]=w.width)}}return u}},{key:"extractFontHeader",value:function(e){for(var t;null!==(t=this.getToken());)if("/"===t)switch(t=this.getToken()){case"FontMatrix":var r=this.readNumberArray();e.fontMatrix=r;break;case"Encoding":var a=this.getToken(),i=void 0;if(/^\\d+$/.test(a)){i=[];var o=0|parseInt(a,10);this.getToken();for(var s=0;s{Object.defineProperty(t,"__esModule",{value:!0}),t.Pattern=void 0,t.getTilingPatternIR=function(e,t,r){var a=t.getArray("Matrix"),i=n.Util.normalizeRect(t.getArray("BBox")),o=t.get("XStep"),s=t.get("YStep"),c=t.get("PaintType"),u=t.get("TilingType");if(i[2]-i[0]==0||i[3]-i[1]==0)throw new n.FormatError("Invalid getTilingPatternIR /BBox array: [".concat(i,"]."));return["TilingPattern",r,e,a,i,o,s,c,u]};var n=r(2),a=r(136),i=r(143),o=r(135);function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=v||j<=0)return(0,n.info)("Bad shading domain."),f(l);for(var _,L=new Float32Array(h.numComps),R=new Float32Array(1),N=0;N<=10;N++){R[0]=g+N*j,E(R,0,L,0),_=h.getRgb(L,0);var D=n.Util.makeHexColor(_[0],_[1],_[2]);M.push([N/10,D])}var B="transparent";return e.has("Background")&&(_=h.getRgb(e.get("Background"),0),B=n.Util.makeHexColor(_[0],_[1],_[2])),m||(M.unshift([0,B]),M[1][0]+=b.SMALL_NUMBER),w||(M.at(-1)[0]-=b.SMALL_NUMBER,M.push([1,B])),l.colorStops=M,l}return v(r,[{key:"getIR",value:function(){var e,t,r,a,i,o=this.coordsArr,s=this.shadingType;return 2===s?(t=[o[0],o[1]],r=[o[2],o[3]],a=null,i=null,e="axial"):3===s?(t=[o[0],o[1]],r=[o[3],o[4]],a=o[2],i=o[5],e="radial"):(0,n.unreachable)("getPattern type unknown: ".concat(s)),["RadialAxial",e,this.bbox,this.colorStops,t,r,a,i]}}]),r}(b),k=function(){function e(t,r){p(this,e),this.stream=t,this.context=r,this.buffer=0,this.bufferLength=0;var n=r.numComps;this.tmpCompsBuf=new Float32Array(n);var a=r.colorSpace.numComps;this.tmpCsCompsBuf=r.colorFn?new Float32Array(a):this.tmpCompsBuf}return v(e,[{key:"hasData",get:function(){if(this.stream.end)return this.stream.pos0)return!0;var e=this.stream.getByte();return!(e<0||(this.buffer=e,this.bufferLength=8,0))}},{key:"readBits",value:function(e){var t=this.buffer,r=this.bufferLength;if(32===e){if(0===r)return(this.stream.getByte()<<24|this.stream.getByte()<<16|this.stream.getByte()<<8|this.stream.getByte())>>>0;t=t<<24|this.stream.getByte()<<16|this.stream.getByte()<<8|this.stream.getByte();var n=this.stream.getByte();return this.buffer=n&(1<>r)>>>0}if(8===e&&0===r)return this.stream.getByte();for(;r>r}},{key:"align",value:function(){this.buffer=0,this.bufferLength=0}},{key:"readFlag",value:function(){return this.readBits(this.context.bitsPerFlag)}},{key:"readCoordinate",value:function(){var e=this.context.bitsPerCoordinate,t=this.readBits(e),r=this.readBits(e),n=this.context.decode,a=e<32?1/((1<o?o:e,t=t>s?s:t,r=r{Object.defineProperty(t,"__esModule",{value:!0}),t.getXfaFontDict=function(e){var t=function(e){var t=g(e);if(!t)return null;var r,n=t.baseWidths,a=t.baseMapping,i=t.factors;r=i?n.map((function(e,t){return e*i[t]})):n;var o,s,c=-2,u=[],l=function(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=h(e))){r&&(e=r);var n=0,a=function(){};return{s:a,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return o=e.done,e},e:function(e){s=!0,i=e},f:function(){try{o||null==r.return||r.return()}finally{if(s)throw i}}}}(a.map((function(e,t){return[e,t]})).sort((function(e,t){return f(e,1)[0]-f(t,1)[0]})));try{for(l.s();!(s=l.n()).done;){var d=f(s.value,2),p=d[0],v=d[1];-1!==p&&(p===c+1?(o.push(r[v]),c+=1):(c=p,o=[r[v]],u.push(p,o)))}}catch(e){l.e(e)}finally{l.f()}return u}(e),r=new a.Dict(null);r.set("BaseFont",a.Name.get(e)),r.set("Type",a.Name.get("Font")),r.set("Subtype",a.Name.get("CIDFontType2")),r.set("Encoding",a.Name.get("Identity-H")),r.set("CIDToGIDMap",a.Name.get("Identity")),r.set("W",t),r.set("FirstChar",t[0]),r.set("LastChar",t.at(-2)+t.at(-1).length-1);var n=new a.Dict(null);r.set("FontDescriptor",n);var i=new a.Dict(null);return i.set("Ordering","Identity"),i.set("Registry","Adobe"),i.set("Supplement",0),r.set("CIDSystemInfo",i),r},t.getXfaFontName=g;var n=r(181),a=r(134),i=r(182),o=r(183),s=r(184),c=r(185),u=r(135),l=r(167);function f(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,o,s=[],c=!0,u=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){u=!0,a=e}finally{try{if(!c&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(u)throw a}}return s}}(e,t)||h(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function h(e,t){if(e){if("string"==typeof e)return d(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?d(e,t):void 0}}function d(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r{Object.defineProperty(t,"__esModule",{value:!0}),t.CalibriRegularMetrics=t.CalibriRegularFactors=t.CalibriItalicMetrics=t.CalibriItalicFactors=t.CalibriBoldMetrics=t.CalibriBoldItalicMetrics=t.CalibriBoldItalicFactors=t.CalibriBoldFactors=void 0,t.CalibriBoldFactors=[1.3877,1,1,1,.97801,.92482,.89552,.91133,.81988,.97566,.98152,.93548,.93548,1.2798,.85284,.92794,1,.96134,1.54657,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.82845,.82845,.85284,.85284,.85284,.75859,.92138,.83908,.7762,.73293,.87289,.73133,.7514,.81921,.87356,.95958,.59526,.75727,.69225,1.04924,.9121,.86943,.79795,.88198,.77958,.70864,.81055,.90399,.88653,.96017,.82577,.77892,.78257,.97507,1.54657,.97507,.85284,.89552,.90176,.88762,.8785,.75241,.8785,.90518,.95015,.77618,.8785,.88401,.91916,.86304,.88401,.91488,.8785,.8801,.8785,.8785,.91343,.7173,1.04106,.8785,.85075,.95794,.82616,.85162,.79492,.88331,1.69808,.88331,.85284,.97801,.89552,.91133,.89552,.91133,1.7801,.89552,1.24487,1.13254,1.12401,.96839,.85284,.68787,.70645,.85592,.90747,1.01466,1.0088,.90323,1,1.07463,1,.91056,.75806,1.19118,.96839,.78864,.82845,.84133,.75859,.83908,.83908,.83908,.83908,.83908,.83908,.77539,.73293,.73133,.73133,.73133,.73133,.95958,.95958,.95958,.95958,.88506,.9121,.86943,.86943,.86943,.86943,.86943,.85284,.87508,.90399,.90399,.90399,.90399,.77892,.79795,.90807,.88762,.88762,.88762,.88762,.88762,.88762,.8715,.75241,.90518,.90518,.90518,.90518,.88401,.88401,.88401,.88401,.8785,.8785,.8801,.8801,.8801,.8801,.8801,.90747,.89049,.8785,.8785,.8785,.8785,.85162,.8785,.85162,.83908,.88762,.83908,.88762,.83908,.88762,.73293,.75241,.73293,.75241,.73293,.75241,.73293,.75241,.87289,.83016,.88506,.93125,.73133,.90518,.73133,.90518,.73133,.90518,.73133,.90518,.73133,.90518,.81921,.77618,.81921,.77618,.81921,.77618,1,1,.87356,.8785,.91075,.89608,.95958,.88401,.95958,.88401,.95958,.88401,.95958,.88401,.95958,.88401,.76229,.90167,.59526,.91916,1,1,.86304,.69225,.88401,1,1,.70424,.79468,.91926,.88175,.70823,.94903,.9121,.8785,1,1,.9121,.8785,.87802,.88656,.8785,.86943,.8801,.86943,.8801,.86943,.8801,.87402,.89291,.77958,.91343,1,1,.77958,.91343,.70864,.7173,.70864,.7173,.70864,.7173,.70864,.7173,1,1,.81055,.75841,.81055,1.06452,.90399,.8785,.90399,.8785,.90399,.8785,.90399,.8785,.90399,.8785,.90399,.8785,.96017,.95794,.77892,.85162,.77892,.78257,.79492,.78257,.79492,.78257,.79492,.9297,.56892,.83908,.88762,.77539,.8715,.87508,.89049,1,1,.81055,1.04106,1.20528,1.20528,1,1.15543,.70674,.98387,.94721,1.33431,1.45894,.95161,1.06303,.83908,.80352,.57184,.6965,.56289,.82001,.56029,.81235,1.02988,.83908,.7762,.68156,.80367,.73133,.78257,.87356,.86943,.95958,.75727,.89019,1.04924,.9121,.7648,.86943,.87356,.79795,.78275,.81055,.77892,.9762,.82577,.99819,.84896,.95958,.77892,.96108,1.01407,.89049,1.02988,.94211,.96108,.8936,.84021,.87842,.96399,.79109,.89049,1.00813,1.02988,.86077,.87445,.92099,.84723,.86513,.8801,.75638,.85714,.78216,.79586,.87965,.94211,.97747,.78287,.97926,.84971,1.02988,.94211,.8801,.94211,.84971,.73133,1,1,1,1,1,1,1,1,1,1,1,1,.90264,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.90518,1,1,1,1,1,1,1,1,1,1,1,1,.90548,1,1,1,1,1,1,.96017,.95794,.96017,.95794,.96017,.95794,.77892,.85162,1,1,.89552,.90527,1,.90363,.92794,.92794,.92794,.92794,.87012,.87012,.87012,.89552,.89552,1.42259,.71143,1.06152,1,1,1.03372,1.03372,.97171,1.4956,2.2807,.93835,.83406,.91133,.84107,.91133,1,1,1,.72021,1,1.23108,.83489,.88525,.88525,.81499,.90527,1.81055,.90527,1.81055,1.31006,1.53711,.94434,1.08696,1,.95018,.77192,.85284,.90747,1.17534,.69825,.9716,1.37077,.90747,.90747,.85356,.90747,.90747,1.44947,.85284,.8941,.8941,.70572,.8,.70572,.70572,.70572,.70572,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.99862,.99862,1,1,1,1,1,1.08004,.91027,1,1,1,.99862,1,1,1,1,1,1,1,1,1,1,1,1,.90727,.90727,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],t.CalibriBoldMetrics={lineHeight:1.2207,lineGap:.2207},t.CalibriBoldItalicFactors=[1.3877,1,1,1,.97801,.92482,.89552,.91133,.81988,.97566,.98152,.93548,.93548,1.2798,.85284,.92794,1,.96134,1.56239,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.82845,.82845,.85284,.85284,.85284,.75859,.92138,.83908,.7762,.71805,.87289,.73133,.7514,.81921,.87356,.95958,.59526,.75727,.69225,1.04924,.90872,.85938,.79795,.87068,.77958,.69766,.81055,.90399,.88653,.96068,.82577,.77892,.78257,.97507,1.529,.97507,.85284,.89552,.90176,.94908,.86411,.74012,.86411,.88323,.95015,.86411,.86331,.88401,.91916,.86304,.88401,.9039,.86331,.86331,.86411,.86411,.90464,.70852,1.04106,.86331,.84372,.95794,.82616,.84548,.79492,.88331,1.69808,.88331,.85284,.97801,.89552,.91133,.89552,.91133,1.7801,.89552,1.24487,1.13254,1.19129,.96839,.85284,.68787,.70645,.85592,.90747,1.01466,1.0088,.90323,1,1.07463,1,.91056,.75806,1.19118,.96839,.78864,.82845,.84133,.75859,.83908,.83908,.83908,.83908,.83908,.83908,.77539,.71805,.73133,.73133,.73133,.73133,.95958,.95958,.95958,.95958,.88506,.90872,.85938,.85938,.85938,.85938,.85938,.85284,.87068,.90399,.90399,.90399,.90399,.77892,.79795,.90807,.94908,.94908,.94908,.94908,.94908,.94908,.85887,.74012,.88323,.88323,.88323,.88323,.88401,.88401,.88401,.88401,.8785,.86331,.86331,.86331,.86331,.86331,.86331,.90747,.89049,.86331,.86331,.86331,.86331,.84548,.86411,.84548,.83908,.94908,.83908,.94908,.83908,.94908,.71805,.74012,.71805,.74012,.71805,.74012,.71805,.74012,.87289,.79538,.88506,.92726,.73133,.88323,.73133,.88323,.73133,.88323,.73133,.88323,.73133,.88323,.81921,.86411,.81921,.86411,.81921,.86411,1,1,.87356,.86331,.91075,.8777,.95958,.88401,.95958,.88401,.95958,.88401,.95958,.88401,.95958,.88401,.76467,.90167,.59526,.91916,1,1,.86304,.69225,.88401,1,1,.70424,.77312,.91926,.88175,.70823,.94903,.90872,.86331,1,1,.90872,.86331,.86906,.88116,.86331,.85938,.86331,.85938,.86331,.85938,.86331,.87402,.86549,.77958,.90464,1,1,.77958,.90464,.69766,.70852,.69766,.70852,.69766,.70852,.69766,.70852,1,1,.81055,.75841,.81055,1.06452,.90399,.86331,.90399,.86331,.90399,.86331,.90399,.86331,.90399,.86331,.90399,.86331,.96068,.95794,.77892,.84548,.77892,.78257,.79492,.78257,.79492,.78257,.79492,.9297,.56892,.83908,.94908,.77539,.85887,.87068,.89049,1,1,.81055,1.04106,1.20528,1.20528,1,1.15543,.70088,.98387,.94721,1.33431,1.45894,.95161,1.48387,.83908,.80352,.57118,.6965,.56347,.79179,.55853,.80346,1.02988,.83908,.7762,.67174,.86036,.73133,.78257,.87356,.86441,.95958,.75727,.89019,1.04924,.90872,.74889,.85938,.87891,.79795,.7957,.81055,.77892,.97447,.82577,.97466,.87179,.95958,.77892,.94252,.95612,.8753,1.02988,.92733,.94252,.87411,.84021,.8728,.95612,.74081,.8753,1.02189,1.02988,.84814,.87445,.91822,.84723,.85668,.86331,.81344,.87581,.76422,.82046,.96057,.92733,.99375,.78022,.95452,.86015,1.02988,.92733,.86331,.92733,.86015,.73133,1,1,1,1,1,1,1,1,1,1,1,1,.90631,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.88323,1,1,1,1,1,1,1,1,1,1,1,1,.85174,1,1,1,1,1,1,.96068,.95794,.96068,.95794,.96068,.95794,.77892,.84548,1,1,.89552,.90527,1,.90363,.92794,.92794,.92794,.89807,.87012,.87012,.87012,.89552,.89552,1.42259,.71094,1.06152,1,1,1.03372,1.03372,.97171,1.4956,2.2807,.92972,.83406,.91133,.83326,.91133,1,1,1,.72021,1,1.23108,.83489,.88525,.88525,.81499,.90616,1.81055,.90527,1.81055,1.3107,1.53711,.94434,1.08696,1,.95018,.77192,.85284,.90747,1.17534,.69825,.9716,1.37077,.90747,.90747,.85356,.90747,.90747,1.44947,.85284,.8941,.8941,.70572,.8,.70572,.70572,.70572,.70572,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.99862,.99862,1,1,1,1,1,1.08004,.91027,1,1,1,.99862,1,1,1,1,1,1,1,1,1,1,1,1,.90727,.90727,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],t.CalibriBoldItalicMetrics={lineHeight:1.2207,lineGap:.2207},t.CalibriItalicFactors=[1.3877,1,1,1,1.17223,1.1293,.89552,.91133,.80395,1.02269,1.15601,.91056,.91056,1.2798,.85284,.89807,1,.90861,1.39543,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.96309,.96309,.85284,.85284,.85284,.83319,.88071,.8675,.81552,.72346,.85193,.73206,.7522,.81105,.86275,.90685,.6377,.77892,.75593,1.02638,.89249,.84118,.77452,.85374,.75186,.67789,.79776,.88844,.85066,.94309,.77818,.7306,.76659,1.10369,1.38313,1.10369,1.06139,.89552,.8739,.9245,.9245,.83203,.9245,.85865,1.09842,.9245,.9245,1.03297,1.07692,.90918,1.03297,.94959,.9245,.92274,.9245,.9245,1.02933,.77832,1.20562,.9245,.8916,.98986,.86621,.89453,.79004,.94152,1.77256,.94152,.85284,.97801,.89552,.91133,.89552,.91133,1.91729,.89552,1.17889,1.13254,1.16359,.92098,.85284,.68787,.71353,.84737,.90747,1.0088,1.0044,.87683,1,1.09091,1,.92229,.739,1.15642,.92098,.76288,.80504,.80972,.75859,.8675,.8675,.8675,.8675,.8675,.8675,.76318,.72346,.73206,.73206,.73206,.73206,.90685,.90685,.90685,.90685,.86477,.89249,.84118,.84118,.84118,.84118,.84118,.85284,.84557,.88844,.88844,.88844,.88844,.7306,.77452,.86331,.9245,.9245,.9245,.9245,.9245,.9245,.84843,.83203,.85865,.85865,.85865,.85865,.82601,.82601,.82601,.82601,.94469,.9245,.92274,.92274,.92274,.92274,.92274,.90747,.86651,.9245,.9245,.9245,.9245,.89453,.9245,.89453,.8675,.9245,.8675,.9245,.8675,.9245,.72346,.83203,.72346,.83203,.72346,.83203,.72346,.83203,.85193,.8875,.86477,.99034,.73206,.85865,.73206,.85865,.73206,.85865,.73206,.85865,.73206,.85865,.81105,.9245,.81105,.9245,.81105,.9245,1,1,.86275,.9245,.90872,.93591,.90685,.82601,.90685,.82601,.90685,.82601,.90685,1.03297,.90685,.82601,.77896,1.05611,.6377,1.07692,1,1,.90918,.75593,1.03297,1,1,.76032,.9375,.98156,.93407,.77261,1.11429,.89249,.9245,1,1,.89249,.9245,.92534,.86698,.9245,.84118,.92274,.84118,.92274,.84118,.92274,.8667,.86291,.75186,1.02933,1,1,.75186,1.02933,.67789,.77832,.67789,.77832,.67789,.77832,.67789,.77832,1,1,.79776,.97655,.79776,1.23023,.88844,.9245,.88844,.9245,.88844,.9245,.88844,.9245,.88844,.9245,.88844,.9245,.94309,.98986,.7306,.89453,.7306,.76659,.79004,.76659,.79004,.76659,.79004,1.09231,.54873,.8675,.9245,.76318,.84843,.84557,.86651,1,1,.79776,1.20562,1.18622,1.18622,1,1.1437,.67009,.96334,.93695,1.35191,1.40909,.95161,1.48387,.8675,.90861,.6192,.7363,.64824,.82411,.56321,.85696,1.23516,.8675,.81552,.7286,.84134,.73206,.76659,.86275,.84369,.90685,.77892,.85871,1.02638,.89249,.75828,.84118,.85984,.77452,.76466,.79776,.7306,.90782,.77818,.903,.87291,.90685,.7306,.99058,1.03667,.94635,1.23516,.9849,.99058,.92393,.8916,.942,1.03667,.75026,.94635,1.0297,1.23516,.90918,.94048,.98217,.89746,.84153,.92274,.82507,.88832,.84438,.88178,1.03525,.9849,1.00225,.78086,.97248,.89404,1.23516,.9849,.92274,.9849,.89404,.73206,1,1,1,1,1,1,1,1,1,1,1,1,.89693,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.85865,1,1,1,1,1,1,1,1,1,1,1,1,.90933,1,1,1,1,1,1,.94309,.98986,.94309,.98986,.94309,.98986,.7306,.89453,1,1,.89552,.90527,1,.90186,1.12308,1.12308,1.12308,1.12308,1.2566,1.2566,1.2566,.89552,.89552,1.42259,.68994,1.03809,1,1,1.0176,1.0176,1.11523,1.4956,2.01462,.97858,.82616,.91133,.83437,.91133,1,1,1,.70508,1,1.23108,.79801,.84426,.84426,.774,.90572,1.81055,.90749,1.81055,1.28809,1.55469,.94434,1.07806,1,.97094,.7589,.85284,.90747,1.19658,.69825,.97622,1.33512,.90747,.90747,.85284,.90747,.90747,1.44947,.85284,.8941,.8941,.70572,.8,.70572,.70572,.70572,.70572,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.99862,.99862,1,1,1,1,1,1.0336,.91027,1,1,1,.99862,1,1,1,1,1,1,1,1,1,1,1,1,1.05859,1.05859,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],t.CalibriItalicMetrics={lineHeight:1.2207,lineGap:.2207},t.CalibriRegularFactors=[1.3877,1,1,1,1.17223,1.1293,.89552,.91133,.80395,1.02269,1.15601,.91056,.91056,1.2798,.85284,.89807,1,.90861,1.39016,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.96309,.96309,.85284,.85284,.85284,.83319,.88071,.8675,.81552,.73834,.85193,.73206,.7522,.81105,.86275,.90685,.6377,.77892,.75593,1.02638,.89385,.85122,.77452,.86503,.75186,.68887,.79776,.88844,.85066,.94258,.77818,.7306,.76659,1.10369,1.39016,1.10369,1.06139,.89552,.8739,.86128,.94469,.8457,.94469,.89464,1.09842,.84636,.94469,1.03297,1.07692,.90918,1.03297,.95897,.94469,.9482,.94469,.94469,1.04692,.78223,1.20562,.94469,.90332,.98986,.86621,.90527,.79004,.94152,1.77256,.94152,.85284,.97801,.89552,.91133,.89552,.91133,1.91729,.89552,1.17889,1.13254,1.08707,.92098,.85284,.68787,.71353,.84737,.90747,1.0088,1.0044,.87683,1,1.09091,1,.92229,.739,1.15642,.92098,.76288,.80504,.80972,.75859,.8675,.8675,.8675,.8675,.8675,.8675,.76318,.73834,.73206,.73206,.73206,.73206,.90685,.90685,.90685,.90685,.86477,.89385,.85122,.85122,.85122,.85122,.85122,.85284,.85311,.88844,.88844,.88844,.88844,.7306,.77452,.86331,.86128,.86128,.86128,.86128,.86128,.86128,.8693,.8457,.89464,.89464,.89464,.89464,.82601,.82601,.82601,.82601,.94469,.94469,.9482,.9482,.9482,.9482,.9482,.90747,.86651,.94469,.94469,.94469,.94469,.90527,.94469,.90527,.8675,.86128,.8675,.86128,.8675,.86128,.73834,.8457,.73834,.8457,.73834,.8457,.73834,.8457,.85193,.92454,.86477,.9921,.73206,.89464,.73206,.89464,.73206,.89464,.73206,.89464,.73206,.89464,.81105,.84636,.81105,.84636,.81105,.84636,1,1,.86275,.94469,.90872,.95786,.90685,.82601,.90685,.82601,.90685,.82601,.90685,1.03297,.90685,.82601,.77741,1.05611,.6377,1.07692,1,1,.90918,.75593,1.03297,1,1,.76032,.90452,.98156,1.11842,.77261,1.11429,.89385,.94469,1,1,.89385,.94469,.95877,.86901,.94469,.85122,.9482,.85122,.9482,.85122,.9482,.8667,.90016,.75186,1.04692,1,1,.75186,1.04692,.68887,.78223,.68887,.78223,.68887,.78223,.68887,.78223,1,1,.79776,.92188,.79776,1.23023,.88844,.94469,.88844,.94469,.88844,.94469,.88844,.94469,.88844,.94469,.88844,.94469,.94258,.98986,.7306,.90527,.7306,.76659,.79004,.76659,.79004,.76659,.79004,1.09231,.54873,.8675,.86128,.76318,.8693,.85311,.86651,1,1,.79776,1.20562,1.18622,1.18622,1,1.1437,.67742,.96334,.93695,1.35191,1.40909,.95161,1.48387,.86686,.90861,.62267,.74359,.65649,.85498,.56963,.88254,1.23516,.8675,.81552,.75443,.84503,.73206,.76659,.86275,.85122,.90685,.77892,.85746,1.02638,.89385,.75657,.85122,.86275,.77452,.74171,.79776,.7306,.95165,.77818,.89772,.88831,.90685,.7306,.98142,1.02191,.96576,1.23516,.99018,.98142,.9236,.89258,.94035,1.02191,.78848,.96576,.9561,1.23516,.90918,.92578,.95424,.89746,.83969,.9482,.80113,.89442,.85208,.86155,.98022,.99018,1.00452,.81209,.99247,.89181,1.23516,.99018,.9482,.99018,.89181,.73206,1,1,1,1,1,1,1,1,1,1,1,1,.88844,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.89464,1,1,1,1,1,1,1,1,1,1,1,1,.96766,1,1,1,1,1,1,.94258,.98986,.94258,.98986,.94258,.98986,.7306,.90527,1,1,.89552,.90527,1,.90186,1.12308,1.12308,1.12308,1.12308,1.2566,1.2566,1.2566,.89552,.89552,1.42259,.69043,1.03809,1,1,1.0176,1.0176,1.11523,1.4956,2.01462,.99331,.82616,.91133,.84286,.91133,1,1,1,.70508,1,1.23108,.79801,.84426,.84426,.774,.90527,1.81055,.90527,1.81055,1.28809,1.55469,.94434,1.07806,1,.97094,.7589,.85284,.90747,1.19658,.69825,.97622,1.33512,.90747,.90747,.85356,.90747,.90747,1.44947,.85284,.8941,.8941,.70572,.8,.70572,.70572,.70572,.70572,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.99862,.99862,1,1,1,1,1,1.0336,.91027,1,1,1,.99862,1,1,1,1,1,1,1,1,1,1,1,1,1.05859,1.05859,1,1,1,1.07185,.99413,.96334,1.08065,1,1,1,1,1,1,1,1,1,1,1],t.CalibriRegularMetrics={lineHeight:1.2207,lineGap:.2207}},(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.HelveticaRegularMetrics=t.HelveticaRegularFactors=t.HelveticaItalicMetrics=t.HelveticaItalicFactors=t.HelveticaBoldMetrics=t.HelveticaBoldItalicMetrics=t.HelveticaBoldItalicFactors=t.HelveticaBoldFactors=void 0,t.HelveticaBoldFactors=[.76116,1,1,1.0006,.99998,.99974,.99973,.99973,.99982,.99977,1.00087,.99998,.99998,.99959,1.00003,1.0006,.99998,1.0006,1.0006,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99998,1,1.00003,1.00003,1.00003,1.00026,.9999,.99977,.99977,.99977,.99977,1.00001,1.00026,1.00022,.99977,1.0006,.99973,.99977,1.00026,.99999,.99977,1.00022,1.00001,1.00022,.99977,1.00001,1.00026,.99977,1.00001,1.00016,1.00001,1.00001,1.00026,.99998,1.0006,.99998,1.00003,.99973,.99998,.99973,1.00026,.99973,1.00026,.99973,.99998,1.00026,1.00026,1.0006,1.0006,.99973,1.0006,.99982,1.00026,1.00026,1.00026,1.00026,.99959,.99973,.99998,1.00026,.99973,1.00022,.99973,.99973,1,.99959,1.00077,.99959,1.00003,.99998,.99973,.99973,.99973,.99973,1.00077,.99973,.99998,1.00025,.99968,.99973,1.00003,1.00025,.60299,1.00024,1.06409,1,1,.99998,1,.99973,1.0006,.99998,1,.99936,.99973,1.00002,1.00002,1.00002,1.00026,.99977,.99977,.99977,.99977,.99977,.99977,1,.99977,1.00001,1.00001,1.00001,1.00001,1.0006,1.0006,1.0006,1.0006,.99977,.99977,1.00022,1.00022,1.00022,1.00022,1.00022,1.00003,1.00022,.99977,.99977,.99977,.99977,1.00001,1.00001,1.00026,.99973,.99973,.99973,.99973,.99973,.99973,.99982,.99973,.99973,.99973,.99973,.99973,1.0006,1.0006,1.0006,1.0006,1.00026,1.00026,1.00026,1.00026,1.00026,1.00026,1.00026,1.06409,1.00026,1.00026,1.00026,1.00026,1.00026,.99973,1.00026,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,1.03374,.99977,1.00026,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00022,1.00026,1.00022,1.00026,1.00022,1.00026,1.00022,1.00026,.99977,1.00026,.99977,1.00026,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.00042,.99973,.99973,1.0006,.99977,.99973,.99973,1.00026,1.0006,1.00026,1.0006,1.00026,1.03828,1.00026,.99999,1.00026,1.0006,.99977,1.00026,.99977,1.00026,.99977,1.00026,.9993,.9998,1.00026,1.00022,1.00026,1.00022,1.00026,1.00022,1.00026,1,1.00016,.99977,.99959,.99977,.99959,.99977,.99959,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00026,.99998,1.00026,.8121,1.00026,.99998,.99977,1.00026,.99977,1.00026,.99977,1.00026,.99977,1.00026,.99977,1.00026,.99977,1.00026,1.00016,1.00022,1.00001,.99973,1.00001,1.00026,1,1.00026,1,1.00026,1,1.0006,.99973,.99977,.99973,1,.99982,1.00022,1.00026,1.00001,.99973,1.00026,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,1.00034,.99977,1,.99997,1.00026,1.00078,1.00036,.99973,1.00013,1.0006,.99977,.99977,.99988,.85148,1.00001,1.00026,.99977,1.00022,1.0006,.99977,1.00001,.99999,.99977,1.00069,1.00022,.99977,1.00001,.99984,1.00026,1.00001,1.00024,1.00001,.9999,1,1.0006,1.00001,1.00041,.99962,1.00026,1.0006,.99995,1.00041,.99942,.99973,.99927,1.00082,.99902,1.00026,1.00087,1.0006,1.00069,.99973,.99867,.99973,.9993,1.00026,1.00049,1.00056,1,.99988,.99935,.99995,.99954,1.00055,.99945,1.00032,1.0006,.99995,1.00026,.99995,1.00032,1.00001,1.00008,.99971,1.00019,.9994,1.00001,1.0006,1.00044,.99973,1.00023,1.00047,1,.99942,.99561,.99989,1.00035,.99977,1.00035,.99977,1.00019,.99944,1.00001,1.00021,.99926,1.00035,1.00035,.99942,1.00048,.99999,.99977,1.00022,1.00035,1.00001,.99977,1.00026,.99989,1.00057,1.00001,.99936,1.00052,1.00012,.99996,1.00043,1,1.00035,.9994,.99976,1.00035,.99973,1.00052,1.00041,1.00119,1.00037,.99973,1.00002,.99986,1.00041,1.00041,.99902,.9996,1.00034,.99999,1.00026,.99999,1.00026,.99973,1.00052,.99973,1,.99973,1.00041,1.00075,.9994,1.0003,.99999,1,1.00041,.99955,1,.99915,.99973,.99973,1.00026,1.00119,.99955,.99973,1.0006,.99911,1.0006,1.00026,.99972,1.00026,.99902,1.00041,.99973,.99999,1,1,1.00038,1.0005,1.00016,1.00022,1.00016,1.00022,1.00016,1.00022,1.00001,.99973,1,1,.99973,1,1,.99955,1.0006,1.0006,1.0006,1.0006,1,1,1,.99973,.99973,.99972,1,1,1.00106,.99999,.99998,.99998,.99999,.99998,1.66475,1,.99973,.99973,1.00023,.99973,.99971,1.00047,1.00023,1,.99991,.99984,1.00002,1.00002,1.00002,1.00002,1,1,1,1,1,1,1,.99972,1,1.20985,1.39713,1.00003,1.00031,1.00015,1,.99561,1.00027,1.00031,1.00031,.99915,1.00031,1.00031,.99999,1.00003,.99999,.99999,1.41144,1.6,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.40579,1.40579,1.36625,.99999,1,.99861,.99861,1,1.00026,1.00026,1.00026,1.00026,.99972,.99999,.99999,.99999,.99999,1.40483,1,.99977,1.00054,1,1,.99953,.99962,1.00042,.9995,1,1,1,1,1,1,1,1,.99998,.99998,.99998,.99998,1,1,1,1,1,1,1,1,1,1,1],t.HelveticaBoldMetrics={lineHeight:1.2,lineGap:.2},t.HelveticaBoldItalicFactors=[.76116,1,1,1.0006,.99998,.99974,.99973,.99973,.99982,.99977,1.00087,.99998,.99998,.99959,1.00003,1.0006,.99998,1.0006,1.0006,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99998,1,1.00003,1.00003,1.00003,1.00026,.9999,.99977,.99977,.99977,.99977,1.00001,1.00026,1.00022,.99977,1.0006,.99973,.99977,1.00026,.99999,.99977,1.00022,1.00001,1.00022,.99977,1.00001,1.00026,.99977,1.00001,1.00016,1.00001,1.00001,1.00026,.99998,1.0006,.99998,1.00003,.99973,.99998,.99973,1.00026,.99973,1.00026,.99973,.99998,1.00026,1.00026,1.0006,1.0006,.99973,1.0006,.99982,1.00026,1.00026,1.00026,1.00026,.99959,.99973,.99998,1.00026,.99973,1.00022,.99973,.99973,1,.99959,1.00077,.99959,1.00003,.99998,.99973,.99973,.99973,.99973,1.00077,.99973,.99998,1.00025,.99968,.99973,1.00003,1.00025,.60299,1.00024,1.06409,1,1,.99998,1,.99973,1.0006,.99998,1,.99936,.99973,1.00002,1.00002,1.00002,1.00026,.99977,.99977,.99977,.99977,.99977,.99977,1,.99977,1.00001,1.00001,1.00001,1.00001,1.0006,1.0006,1.0006,1.0006,.99977,.99977,1.00022,1.00022,1.00022,1.00022,1.00022,1.00003,1.00022,.99977,.99977,.99977,.99977,1.00001,1.00001,1.00026,.99973,.99973,.99973,.99973,.99973,.99973,.99982,.99973,.99973,.99973,.99973,.99973,1.0006,1.0006,1.0006,1.0006,1.00026,1.00026,1.00026,1.00026,1.00026,1.00026,1.00026,1.06409,1.00026,1.00026,1.00026,1.00026,1.00026,.99973,1.00026,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,1.0044,.99977,1.00026,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00022,1.00026,1.00022,1.00026,1.00022,1.00026,1.00022,1.00026,.99977,1.00026,.99977,1.00026,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,.99971,.99973,.99973,1.0006,.99977,.99973,.99973,1.00026,1.0006,1.00026,1.0006,1.00026,1.01011,1.00026,.99999,1.00026,1.0006,.99977,1.00026,.99977,1.00026,.99977,1.00026,.9993,.9998,1.00026,1.00022,1.00026,1.00022,1.00026,1.00022,1.00026,1,1.00016,.99977,.99959,.99977,.99959,.99977,.99959,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00026,.99998,1.00026,.8121,1.00026,.99998,.99977,1.00026,.99977,1.00026,.99977,1.00026,.99977,1.00026,.99977,1.00026,.99977,1.00026,1.00016,1.00022,1.00001,.99973,1.00001,1.00026,1,1.00026,1,1.00026,1,1.0006,.99973,.99977,.99973,1,.99982,1.00022,1.00026,1.00001,.99973,1.00026,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99977,1,1,1.00026,.99969,.99972,.99981,.9998,1.0006,.99977,.99977,1.00022,.91155,1.00001,1.00026,.99977,1.00022,1.0006,.99977,1.00001,.99999,.99977,.99966,1.00022,1.00032,1.00001,.99944,1.00026,1.00001,.99968,1.00001,1.00047,1,1.0006,1.00001,.99981,1.00101,1.00026,1.0006,.99948,.99981,1.00064,.99973,.99942,1.00101,1.00061,1.00026,1.00069,1.0006,1.00014,.99973,1.01322,.99973,1.00065,1.00026,1.00012,.99923,1,1.00064,1.00076,.99948,1.00055,1.00063,1.00007,.99943,1.0006,.99948,1.00026,.99948,.99943,1.00001,1.00001,1.00029,1.00038,1.00035,1.00001,1.0006,1.0006,.99973,.99978,1.00001,1.00057,.99989,.99967,.99964,.99967,.99977,.99999,.99977,1.00038,.99977,1.00001,.99973,1.00066,.99967,.99967,1.00041,.99998,.99999,.99977,1.00022,.99967,1.00001,.99977,1.00026,.99964,1.00031,1.00001,.99999,.99999,1,1.00023,1,1,.99999,1.00035,1.00001,.99999,.99973,.99977,.99999,1.00058,.99973,.99973,.99955,.9995,1.00026,1.00026,1.00032,.99989,1.00034,.99999,1.00026,1.00026,1.00026,.99973,.45998,.99973,1.00026,.99973,1.00001,.99999,.99982,.99994,.99996,1,1.00042,1.00044,1.00029,1.00023,.99973,.99973,1.00026,.99949,1.00002,.99973,1.0006,1.0006,1.0006,.99975,1.00026,1.00026,1.00032,.98685,.99973,1.00026,1,1,.99966,1.00044,1.00016,1.00022,1.00016,1.00022,1.00016,1.00022,1.00001,.99973,1,1,.99973,1,1,.99955,1.0006,1.0006,1.0006,1.0006,1,1,1,.99973,.99973,.99972,1,1,1.00106,.99999,.99998,.99998,.99999,.99998,1.66475,1,.99973,.99973,1,.99973,.99971,.99978,1,1,.99991,.99984,1.00002,1.00002,1.00002,1.00002,1.00098,1,1,1,1.00049,1,1,.99972,1,1.20985,1.39713,1.00003,1.00031,1.00015,1,.99561,1.00027,1.00031,1.00031,.99915,1.00031,1.00031,.99999,1.00003,.99999,.99999,1.41144,1.6,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.40579,1.40579,1.36625,.99999,1,.99861,.99861,1,1.00026,1.00026,1.00026,1.00026,.99972,.99999,.99999,.99999,.99999,1.40483,1,.99977,1.00054,1,1,.99953,.99962,1.00042,.9995,1,1,1,1,1,1,1,1,.99998,.99998,.99998,.99998,1,1,1,1,1,1,1,1,1,1,1],t.HelveticaBoldItalicMetrics={lineHeight:1.35,lineGap:.2},t.HelveticaItalicFactors=[.76116,1,1,1.0006,1.0006,1.00006,.99973,.99973,.99982,1.00001,1.00043,.99998,.99998,.99959,1.00003,1.0006,.99998,1.0006,1.0006,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,1.0006,1,1.00003,1.00003,1.00003,.99973,.99987,1.00001,1.00001,.99977,.99977,1.00001,1.00026,1.00022,.99977,1.0006,1,1.00001,.99973,.99999,.99977,1.00022,1.00001,1.00022,.99977,1.00001,1.00026,.99977,1.00001,1.00016,1.00001,1.00001,1.00026,1.0006,1.0006,1.0006,.99949,.99973,.99998,.99973,.99973,1,.99973,.99973,1.0006,.99973,.99973,.99924,.99924,1,.99924,.99999,.99973,.99973,.99973,.99973,.99998,1,1.0006,.99973,1,.99977,1,1,1,1.00005,1.0009,1.00005,1.00003,.99998,.99973,.99973,.99973,.99973,1.0009,.99973,.99998,1.00025,.99968,.99973,1.00003,1.00025,.60299,1.00024,1.06409,1,1,.99998,1,.9998,1.0006,.99998,1,.99936,.99973,1.00002,1.00002,1.00002,1.00026,1.00001,1.00001,1.00001,1.00001,1.00001,1.00001,1,.99977,1.00001,1.00001,1.00001,1.00001,1.0006,1.0006,1.0006,1.0006,.99977,.99977,1.00022,1.00022,1.00022,1.00022,1.00022,1.00003,1.00022,.99977,.99977,.99977,.99977,1.00001,1.00001,1.00026,.99973,.99973,.99973,.99973,.99973,.99973,.99982,1,.99973,.99973,.99973,.99973,1.0006,1.0006,1.0006,1.0006,.99973,.99973,.99973,.99973,.99973,.99973,.99973,1.06409,1.00026,.99973,.99973,.99973,.99973,1,.99973,1,1.00001,.99973,1.00001,.99973,1.00001,.99973,.99977,1,.99977,1,.99977,1,.99977,1,.99977,1.0288,.99977,.99973,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00022,.99973,1.00022,.99973,1.00022,.99973,1.00022,.99973,.99977,.99973,.99977,.99973,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,.99924,1.0006,1.0006,.99946,1.00034,1,.99924,1.00001,1,1,.99973,.99924,.99973,.99924,.99973,1.06311,.99973,1.00024,.99973,.99924,.99977,.99973,.99977,.99973,.99977,.99973,1.00041,.9998,.99973,1.00022,.99973,1.00022,.99973,1.00022,.99973,1,1.00016,.99977,.99998,.99977,.99998,.99977,.99998,1.00001,1,1.00001,1,1.00001,1,1.00001,1,1.00026,1.0006,1.00026,.89547,1.00026,1.0006,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,1.00016,.99977,1.00001,1,1.00001,1.00026,1,1.00026,1,1.00026,1,.99924,.99973,1.00001,.99973,1,.99982,1.00022,1.00026,1.00001,1,1.00026,1.0006,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,1.00001,1,1.00054,.99977,1.00084,1.00007,.99973,1.00013,.99924,1.00001,1.00001,.99945,.91221,1.00001,1.00026,.99977,1.00022,1.0006,1.00001,1.00001,.99999,.99977,.99933,1.00022,1.00054,1.00001,1.00065,1.00026,1.00001,1.0001,1.00001,1.00052,1,1.0006,1.00001,.99945,.99897,.99968,.99924,1.00036,.99945,.99949,1,1.0006,.99897,.99918,.99968,.99911,.99924,1,.99962,1.01487,1,1.0005,.99973,1.00012,1.00043,1,.99995,.99994,1.00036,.99947,1.00019,1.00063,1.00025,.99924,1.00036,.99973,1.00036,1.00025,1.00001,1.00001,1.00027,1.0001,1.00068,1.00001,1.0006,1.0006,1,1.00008,.99957,.99972,.9994,.99954,.99975,1.00051,1.00001,1.00019,1.00001,1.0001,.99986,1.00001,1.00001,1.00038,.99954,.99954,.9994,1.00066,.99999,.99977,1.00022,1.00054,1.00001,.99977,1.00026,.99975,1.0001,1.00001,.99993,.9995,.99955,1.00016,.99978,.99974,1.00019,1.00022,.99955,1.00053,.99973,1.00089,1.00005,.99967,1.00048,.99973,1.00002,1.00034,.99973,.99973,.99964,1.00006,1.00066,.99947,.99973,.98894,.99973,1,.44898,1,.99946,1,1.00039,1.00082,.99991,.99991,.99985,1.00022,1.00023,1.00061,1.00006,.99966,.99973,.99973,.99973,1.00019,1.0008,1,.99924,.99924,.99924,.99983,1.00044,.99973,.99964,.98332,1,.99973,1,1,.99962,.99895,1.00016,.99977,1.00016,.99977,1.00016,.99977,1.00001,1,1,1,.99973,1,1,.99955,.99924,.99924,.99924,.99924,.99998,.99998,.99998,.99973,.99973,.99972,1,1,1.00267,.99999,.99998,.99998,1,.99998,1.66475,1,.99973,.99973,1.00023,.99973,1.00423,.99925,.99999,1,.99991,.99984,1.00002,1.00002,1.00002,1.00002,1.00049,1,1.00245,1,1,1,1,.96329,1,1.20985,1.39713,1.00003,.8254,1.00015,1,1.00035,1.00027,1.00031,1.00031,1.00003,1.00031,1.00031,.99999,1.00003,.99999,.99999,1.41144,1.6,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.40579,1.40579,1.36625,.99999,1,.99861,.99861,1,1.00026,1.00026,1.00026,1.00026,.95317,.99999,.99999,.99999,.99999,1.40483,1,.99977,1.00054,1,1,.99953,.99962,1.00042,.9995,1,1,1,1,1,1,1,1,.99998,.99998,.99998,.99998,1,1,1,1,1,1,1,1,1,1,1],t.HelveticaItalicMetrics={lineHeight:1.35,lineGap:.2},t.HelveticaRegularFactors=[.76116,1,1,1.0006,1.0006,1.00006,.99973,.99973,.99982,1.00001,1.00043,.99998,.99998,.99959,1.00003,1.0006,.99998,1.0006,1.0006,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,1.0006,1,1.00003,1.00003,1.00003,.99973,.99987,1.00001,1.00001,.99977,.99977,1.00001,1.00026,1.00022,.99977,1.0006,1,1.00001,.99973,.99999,.99977,1.00022,1.00001,1.00022,.99977,1.00001,1.00026,.99977,1.00001,1.00016,1.00001,1.00001,1.00026,1.0006,1.0006,1.0006,.99949,.99973,.99998,.99973,.99973,1,.99973,.99973,1.0006,.99973,.99973,.99924,.99924,1,.99924,.99999,.99973,.99973,.99973,.99973,.99998,1,1.0006,.99973,1,.99977,1,1,1,1.00005,1.0009,1.00005,1.00003,.99998,.99973,.99973,.99973,.99973,1.0009,.99973,.99998,1.00025,.99968,.99973,1.00003,1.00025,.60299,1.00024,1.06409,1,1,.99998,1,.9998,1.0006,.99998,1,.99936,.99973,1.00002,1.00002,1.00002,1.00026,1.00001,1.00001,1.00001,1.00001,1.00001,1.00001,1,.99977,1.00001,1.00001,1.00001,1.00001,1.0006,1.0006,1.0006,1.0006,.99977,.99977,1.00022,1.00022,1.00022,1.00022,1.00022,1.00003,1.00022,.99977,.99977,.99977,.99977,1.00001,1.00001,1.00026,.99973,.99973,.99973,.99973,.99973,.99973,.99982,1,.99973,.99973,.99973,.99973,1.0006,1.0006,1.0006,1.0006,.99973,.99973,.99973,.99973,.99973,.99973,.99973,1.06409,1.00026,.99973,.99973,.99973,.99973,1,.99973,1,1.00001,.99973,1.00001,.99973,1.00001,.99973,.99977,1,.99977,1,.99977,1,.99977,1,.99977,1.04596,.99977,.99973,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00022,.99973,1.00022,.99973,1.00022,.99973,1.00022,.99973,.99977,.99973,.99977,.99973,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,.99924,1.0006,1.0006,1.00019,1.00034,1,.99924,1.00001,1,1,.99973,.99924,.99973,.99924,.99973,1.02572,.99973,1.00005,.99973,.99924,.99977,.99973,.99977,.99973,.99977,.99973,.99999,.9998,.99973,1.00022,.99973,1.00022,.99973,1.00022,.99973,1,1.00016,.99977,.99998,.99977,.99998,.99977,.99998,1.00001,1,1.00001,1,1.00001,1,1.00001,1,1.00026,1.0006,1.00026,.84533,1.00026,1.0006,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,1.00016,.99977,1.00001,1,1.00001,1.00026,1,1.00026,1,1.00026,1,.99924,.99973,1.00001,.99973,1,.99982,1.00022,1.00026,1.00001,1,1.00026,1.0006,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99928,1,.99977,1.00013,1.00055,.99947,.99945,.99941,.99924,1.00001,1.00001,1.0004,.91621,1.00001,1.00026,.99977,1.00022,1.0006,1.00001,1.00005,.99999,.99977,1.00015,1.00022,.99977,1.00001,.99973,1.00026,1.00001,1.00019,1.00001,.99946,1,1.0006,1.00001,.99978,1.00045,.99973,.99924,1.00023,.99978,.99966,1,1.00065,1.00045,1.00019,.99973,.99973,.99924,1,1,.96499,1,1.00055,.99973,1.00008,1.00027,1,.9997,.99995,1.00023,.99933,1.00019,1.00015,1.00031,.99924,1.00023,.99973,1.00023,1.00031,1.00001,.99928,1.00029,1.00092,1.00035,1.00001,1.0006,1.0006,1,.99988,.99975,1,1.00082,.99561,.9996,1.00035,1.00001,.99962,1.00001,1.00092,.99964,1.00001,.99963,.99999,1.00035,1.00035,1.00082,.99962,.99999,.99977,1.00022,1.00035,1.00001,.99977,1.00026,.9996,.99967,1.00001,1.00034,1.00074,1.00054,1.00053,1.00063,.99971,.99962,1.00035,.99975,.99977,.99973,1.00043,.99953,1.0007,.99915,.99973,1.00008,.99892,1.00073,1.00073,1.00114,.99915,1.00073,.99955,.99973,1.00092,.99973,1,.99998,1,1.0003,1,1.00043,1.00001,.99969,1.0003,1,1.00035,1.00001,.9995,1,1.00092,.99973,.99973,.99973,1.0007,.9995,1,.99924,1.0006,.99924,.99972,1.00062,.99973,1.00114,1.00073,1,.99955,1,1,1.00047,.99968,1.00016,.99977,1.00016,.99977,1.00016,.99977,1.00001,1,1,1,.99973,1,1,.99955,.99924,.99924,.99924,.99924,.99998,.99998,.99998,.99973,.99973,.99972,1,1,1.00267,.99999,.99998,.99998,1,.99998,1.66475,1,.99973,.99973,1.00023,.99973,.99971,.99925,1.00023,1,.99991,.99984,1.00002,1.00002,1.00002,1.00002,1,1,1,1,1,1,1,.96329,1,1.20985,1.39713,1.00003,.8254,1.00015,1,1.00035,1.00027,1.00031,1.00031,.99915,1.00031,1.00031,.99999,1.00003,.99999,.99999,1.41144,1.6,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.40579,1.40579,1.36625,.99999,1,.99861,.99861,1,1.00026,1.00026,1.00026,1.00026,.95317,.99999,.99999,.99999,.99999,1.40483,1,.99977,1.00054,1,1,.99953,.99962,1.00042,.9995,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],t.HelveticaRegularMetrics={lineHeight:1.2,lineGap:.2}},(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.LiberationSansRegularWidths=t.LiberationSansRegularMapping=t.LiberationSansItalicWidths=t.LiberationSansItalicMapping=t.LiberationSansBoldWidths=t.LiberationSansBoldMapping=t.LiberationSansBoldItalicWidths=t.LiberationSansBoldItalicMapping=void 0,t.LiberationSansBoldWidths=[365,0,333,278,333,474,556,556,889,722,238,333,333,389,584,278,333,278,278,556,556,556,556,556,556,556,556,556,556,333,333,584,584,584,611,975,722,722,722,722,667,611,778,722,278,556,722,611,833,722,778,667,778,722,667,611,722,667,944,667,667,611,333,278,333,584,556,333,556,611,556,611,556,333,611,611,278,278,556,278,889,611,611,611,611,389,556,333,611,556,778,556,556,500,389,280,389,584,333,556,556,556,556,280,556,333,737,370,556,584,737,552,400,549,333,333,333,576,556,278,333,333,365,556,834,834,834,611,722,722,722,722,722,722,1e3,722,667,667,667,667,278,278,278,278,722,722,778,778,778,778,778,584,778,722,722,722,722,667,667,611,556,556,556,556,556,556,889,556,556,556,556,556,278,278,278,278,611,611,611,611,611,611,611,549,611,611,611,611,611,556,611,556,722,556,722,556,722,556,722,556,722,556,722,556,722,556,722,719,722,611,667,556,667,556,667,556,667,556,667,556,778,611,778,611,778,611,778,611,722,611,722,611,278,278,278,278,278,278,278,278,278,278,785,556,556,278,722,556,556,611,278,611,278,611,385,611,479,611,278,722,611,722,611,722,611,708,723,611,778,611,778,611,778,611,1e3,944,722,389,722,389,722,389,667,556,667,556,667,556,667,556,611,333,611,479,611,333,722,611,722,611,722,611,722,611,722,611,722,611,944,778,667,556,667,611,500,611,500,611,500,278,556,722,556,1e3,889,778,611,667,556,611,333,333,333,333,333,333,333,333,333,333,333,465,722,333,853,906,474,825,927,838,278,722,722,601,719,667,611,722,778,278,722,667,833,722,644,778,722,667,600,611,667,821,667,809,802,278,667,615,451,611,278,582,615,610,556,606,475,460,611,541,278,558,556,612,556,445,611,766,619,520,684,446,582,715,576,753,845,278,582,611,582,845,667,669,885,567,711,667,278,276,556,1094,1062,875,610,722,622,719,722,719,722,567,712,667,904,626,719,719,610,702,833,722,778,719,667,722,611,622,854,667,730,703,1005,1019,870,979,719,711,1031,719,556,618,615,417,635,556,709,497,615,615,500,635,740,604,611,604,611,556,490,556,875,556,615,581,833,844,729,854,615,552,854,583,556,556,611,417,552,556,278,281,278,969,906,611,500,615,556,604,778,611,487,447,944,778,944,778,944,778,667,556,333,333,556,1e3,1e3,552,278,278,278,278,500,500,500,556,556,350,1e3,1e3,240,479,333,333,604,333,167,396,556,556,1094,556,885,489,1115,1e3,768,600,834,834,834,834,1e3,500,1e3,500,1e3,500,500,494,612,823,713,584,549,713,979,722,274,549,549,583,549,549,604,584,604,604,708,625,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,729,604,604,354,354,1e3,990,990,990,990,494,604,604,604,604,354,1021,1052,917,750,750,531,656,594,510,500,750,750,611,611,333,333,333,333,333,333,333,333,222,222,333,333,333,333,333,333,333,333],t.LiberationSansBoldMapping=[-1,-1,-1,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,161,162,163,164,165,166,167,168,169,170,171,172,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,402,506,507,508,509,510,511,536,537,538,539,710,711,713,728,729,730,731,732,733,900,901,902,903,904,905,906,908,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1138,1139,1168,1169,7808,7809,7810,7811,7812,7813,7922,7923,8208,8209,8211,8212,8213,8215,8216,8217,8218,8219,8220,8221,8222,8224,8225,8226,8230,8240,8242,8243,8249,8250,8252,8254,8260,8319,8355,8356,8359,8364,8453,8467,8470,8482,8486,8494,8539,8540,8541,8542,8592,8593,8594,8595,8596,8597,8616,8706,8710,8719,8721,8722,8730,8734,8735,8745,8747,8776,8800,8801,8804,8805,8962,8976,8992,8993,9472,9474,9484,9488,9492,9496,9500,9508,9516,9524,9532,9552,9553,9554,9555,9556,9557,9558,9559,9560,9561,9562,9563,9564,9565,9566,9567,9568,9569,9570,9571,9572,9573,9574,9575,9576,9577,9578,9579,9580,9600,9604,9608,9612,9616,9617,9618,9619,9632,9633,9642,9643,9644,9650,9658,9660,9668,9674,9675,9679,9688,9689,9702,9786,9787,9788,9792,9794,9824,9827,9829,9830,9834,9835,9836,61441,61442,61445,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],t.LiberationSansBoldItalicWidths=[365,0,333,278,333,474,556,556,889,722,238,333,333,389,584,278,333,278,278,556,556,556,556,556,556,556,556,556,556,333,333,584,584,584,611,975,722,722,722,722,667,611,778,722,278,556,722,611,833,722,778,667,778,722,667,611,722,667,944,667,667,611,333,278,333,584,556,333,556,611,556,611,556,333,611,611,278,278,556,278,889,611,611,611,611,389,556,333,611,556,778,556,556,500,389,280,389,584,333,556,556,556,556,280,556,333,737,370,556,584,737,552,400,549,333,333,333,576,556,278,333,333,365,556,834,834,834,611,722,722,722,722,722,722,1e3,722,667,667,667,667,278,278,278,278,722,722,778,778,778,778,778,584,778,722,722,722,722,667,667,611,556,556,556,556,556,556,889,556,556,556,556,556,278,278,278,278,611,611,611,611,611,611,611,549,611,611,611,611,611,556,611,556,722,556,722,556,722,556,722,556,722,556,722,556,722,556,722,740,722,611,667,556,667,556,667,556,667,556,667,556,778,611,778,611,778,611,778,611,722,611,722,611,278,278,278,278,278,278,278,278,278,278,782,556,556,278,722,556,556,611,278,611,278,611,396,611,479,611,278,722,611,722,611,722,611,708,723,611,778,611,778,611,778,611,1e3,944,722,389,722,389,722,389,667,556,667,556,667,556,667,556,611,333,611,479,611,333,722,611,722,611,722,611,722,611,722,611,722,611,944,778,667,556,667,611,500,611,500,611,500,278,556,722,556,1e3,889,778,611,667,556,611,333,333,333,333,333,333,333,333,333,333,333,333,722,333,854,906,473,844,930,847,278,722,722,610,671,667,611,722,778,278,722,667,833,722,657,778,718,667,590,611,667,822,667,829,781,278,667,620,479,611,278,591,620,621,556,610,479,492,611,558,278,566,556,603,556,450,611,712,605,532,664,409,591,704,578,773,834,278,591,611,591,834,667,667,886,614,719,667,278,278,556,1094,1042,854,622,719,677,719,722,708,722,614,722,667,927,643,719,719,615,687,833,722,778,719,667,722,611,677,781,667,729,708,979,989,854,1e3,708,719,1042,729,556,619,604,534,618,556,736,510,611,611,507,622,740,604,611,611,611,556,889,556,885,556,646,583,889,935,707,854,594,552,865,589,556,556,611,469,563,556,278,278,278,969,906,611,507,619,556,611,778,611,575,467,944,778,944,778,944,778,667,556,333,333,556,1e3,1e3,552,278,278,278,278,500,500,500,556,556,350,1e3,1e3,240,479,333,333,604,333,167,396,556,556,1104,556,885,516,1146,1e3,768,600,834,834,834,834,999,500,1e3,500,1e3,500,500,494,612,823,713,584,549,713,979,722,274,549,549,583,549,549,604,584,604,604,708,625,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,729,604,604,354,354,1e3,990,990,990,990,494,604,604,604,604,354,1021,1052,917,750,750,531,656,594,510,500,750,750,611,611,333,333,333,333,333,333,333,333,222,222,333,333,333,333,333,333,333,333],t.LiberationSansBoldItalicMapping=[-1,-1,-1,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,161,162,163,164,165,166,167,168,169,170,171,172,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,402,506,507,508,509,510,511,536,537,538,539,710,711,713,728,729,730,731,732,733,900,901,902,903,904,905,906,908,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1138,1139,1168,1169,7808,7809,7810,7811,7812,7813,7922,7923,8208,8209,8211,8212,8213,8215,8216,8217,8218,8219,8220,8221,8222,8224,8225,8226,8230,8240,8242,8243,8249,8250,8252,8254,8260,8319,8355,8356,8359,8364,8453,8467,8470,8482,8486,8494,8539,8540,8541,8542,8592,8593,8594,8595,8596,8597,8616,8706,8710,8719,8721,8722,8730,8734,8735,8745,8747,8776,8800,8801,8804,8805,8962,8976,8992,8993,9472,9474,9484,9488,9492,9496,9500,9508,9516,9524,9532,9552,9553,9554,9555,9556,9557,9558,9559,9560,9561,9562,9563,9564,9565,9566,9567,9568,9569,9570,9571,9572,9573,9574,9575,9576,9577,9578,9579,9580,9600,9604,9608,9612,9616,9617,9618,9619,9632,9633,9642,9643,9644,9650,9658,9660,9668,9674,9675,9679,9688,9689,9702,9786,9787,9788,9792,9794,9824,9827,9829,9830,9834,9835,9836,61441,61442,61445,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],t.LiberationSansItalicWidths=[365,0,333,278,278,355,556,556,889,667,191,333,333,389,584,278,333,278,278,556,556,556,556,556,556,556,556,556,556,278,278,584,584,584,556,1015,667,667,722,722,667,611,778,722,278,500,667,556,833,722,778,667,778,722,667,611,722,667,944,667,667,611,278,278,278,469,556,333,556,556,500,556,556,278,556,556,222,222,500,222,833,556,556,556,556,333,500,278,556,500,722,500,500,500,334,260,334,584,333,556,556,556,556,260,556,333,737,370,556,584,737,552,400,549,333,333,333,576,537,278,333,333,365,556,834,834,834,611,667,667,667,667,667,667,1e3,722,667,667,667,667,278,278,278,278,722,722,778,778,778,778,778,584,778,722,722,722,722,667,667,611,556,556,556,556,556,556,889,500,556,556,556,556,278,278,278,278,556,556,556,556,556,556,556,549,611,556,556,556,556,500,556,500,667,556,667,556,667,556,722,500,722,500,722,500,722,500,722,625,722,556,667,556,667,556,667,556,667,556,667,556,778,556,778,556,778,556,778,556,722,556,722,556,278,278,278,278,278,278,278,222,278,278,733,444,500,222,667,500,500,556,222,556,222,556,281,556,400,556,222,722,556,722,556,722,556,615,723,556,778,556,778,556,778,556,1e3,944,722,333,722,333,722,333,667,500,667,500,667,500,667,500,611,278,611,354,611,278,722,556,722,556,722,556,722,556,722,556,722,556,944,722,667,500,667,611,500,611,500,611,500,222,556,667,556,1e3,889,778,611,667,500,611,278,333,333,333,333,333,333,333,333,333,333,333,667,278,789,846,389,794,865,775,222,667,667,570,671,667,611,722,778,278,667,667,833,722,648,778,725,667,600,611,667,837,667,831,761,278,667,570,439,555,222,550,570,571,500,556,439,463,555,542,222,500,492,548,500,447,556,670,573,486,603,374,550,652,546,728,779,222,550,556,550,779,667,667,843,544,708,667,278,278,500,1066,982,844,589,715,639,724,667,651,667,544,704,667,917,614,715,715,589,686,833,722,778,725,667,722,611,639,795,667,727,673,920,923,805,886,651,694,1022,682,556,562,522,493,553,556,688,465,556,556,472,564,686,550,556,556,556,500,833,500,835,500,572,518,830,851,621,736,526,492,752,534,556,556,556,378,496,500,222,222,222,910,828,556,472,565,500,556,778,556,492,339,944,722,944,722,944,722,667,500,333,333,556,1e3,1e3,552,222,222,222,222,333,333,333,556,556,350,1e3,1e3,188,354,333,333,500,333,167,365,556,556,1094,556,885,323,1083,1e3,768,600,834,834,834,834,1e3,500,998,500,1e3,500,500,494,612,823,713,584,549,713,979,719,274,549,549,584,549,549,604,584,604,604,708,625,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,729,604,604,354,354,1e3,990,990,990,990,494,604,604,604,604,354,1021,1052,917,750,750,531,656,594,510,500,750,750,500,500,333,333,333,333,333,333,333,333,222,222,294,294,324,324,316,328,398,285],t.LiberationSansItalicMapping=[-1,-1,-1,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,161,162,163,164,165,166,167,168,169,170,171,172,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,402,506,507,508,509,510,511,536,537,538,539,710,711,713,728,729,730,731,732,733,900,901,902,903,904,905,906,908,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1138,1139,1168,1169,7808,7809,7810,7811,7812,7813,7922,7923,8208,8209,8211,8212,8213,8215,8216,8217,8218,8219,8220,8221,8222,8224,8225,8226,8230,8240,8242,8243,8249,8250,8252,8254,8260,8319,8355,8356,8359,8364,8453,8467,8470,8482,8486,8494,8539,8540,8541,8542,8592,8593,8594,8595,8596,8597,8616,8706,8710,8719,8721,8722,8730,8734,8735,8745,8747,8776,8800,8801,8804,8805,8962,8976,8992,8993,9472,9474,9484,9488,9492,9496,9500,9508,9516,9524,9532,9552,9553,9554,9555,9556,9557,9558,9559,9560,9561,9562,9563,9564,9565,9566,9567,9568,9569,9570,9571,9572,9573,9574,9575,9576,9577,9578,9579,9580,9600,9604,9608,9612,9616,9617,9618,9619,9632,9633,9642,9643,9644,9650,9658,9660,9668,9674,9675,9679,9688,9689,9702,9786,9787,9788,9792,9794,9824,9827,9829,9830,9834,9835,9836,61441,61442,61445,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],t.LiberationSansRegularWidths=[365,0,333,278,278,355,556,556,889,667,191,333,333,389,584,278,333,278,278,556,556,556,556,556,556,556,556,556,556,278,278,584,584,584,556,1015,667,667,722,722,667,611,778,722,278,500,667,556,833,722,778,667,778,722,667,611,722,667,944,667,667,611,278,278,278,469,556,333,556,556,500,556,556,278,556,556,222,222,500,222,833,556,556,556,556,333,500,278,556,500,722,500,500,500,334,260,334,584,333,556,556,556,556,260,556,333,737,370,556,584,737,552,400,549,333,333,333,576,537,278,333,333,365,556,834,834,834,611,667,667,667,667,667,667,1e3,722,667,667,667,667,278,278,278,278,722,722,778,778,778,778,778,584,778,722,722,722,722,667,667,611,556,556,556,556,556,556,889,500,556,556,556,556,278,278,278,278,556,556,556,556,556,556,556,549,611,556,556,556,556,500,556,500,667,556,667,556,667,556,722,500,722,500,722,500,722,500,722,615,722,556,667,556,667,556,667,556,667,556,667,556,778,556,778,556,778,556,778,556,722,556,722,556,278,278,278,278,278,278,278,222,278,278,735,444,500,222,667,500,500,556,222,556,222,556,292,556,334,556,222,722,556,722,556,722,556,604,723,556,778,556,778,556,778,556,1e3,944,722,333,722,333,722,333,667,500,667,500,667,500,667,500,611,278,611,375,611,278,722,556,722,556,722,556,722,556,722,556,722,556,944,722,667,500,667,611,500,611,500,611,500,222,556,667,556,1e3,889,778,611,667,500,611,278,333,333,333,333,333,333,333,333,333,333,333,667,278,784,838,384,774,855,752,222,667,667,551,668,667,611,722,778,278,667,668,833,722,650,778,722,667,618,611,667,798,667,835,748,278,667,578,446,556,222,547,578,575,500,557,446,441,556,556,222,500,500,576,500,448,556,690,569,482,617,395,547,648,525,713,781,222,547,556,547,781,667,667,865,542,719,667,278,278,500,1057,1010,854,583,722,635,719,667,656,667,542,677,667,923,604,719,719,583,656,833,722,778,719,667,722,611,635,760,667,740,667,917,938,792,885,656,719,1010,722,556,573,531,365,583,556,669,458,559,559,438,583,688,552,556,542,556,500,458,500,823,500,573,521,802,823,625,719,521,510,750,542,556,556,556,365,510,500,222,278,222,906,812,556,438,559,500,552,778,556,489,411,944,722,944,722,944,722,667,500,333,333,556,1e3,1e3,552,222,222,222,222,333,333,333,556,556,350,1e3,1e3,188,354,333,333,500,333,167,365,556,556,1094,556,885,323,1073,1e3,768,600,834,834,834,834,1e3,500,1e3,500,1e3,500,500,494,612,823,713,584,549,713,979,719,274,549,549,583,549,549,604,584,604,604,708,625,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,729,604,604,354,354,1e3,990,990,990,990,494,604,604,604,604,354,1021,1052,917,750,750,531,656,594,510,500,750,750,500,500,333,333,333,333,333,333,333,333,222,222,294,294,324,324,316,328,398,285],t.LiberationSansRegularMapping=[-1,-1,-1,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,161,162,163,164,165,166,167,168,169,170,171,172,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,402,506,507,508,509,510,511,536,537,538,539,710,711,713,728,729,730,731,732,733,900,901,902,903,904,905,906,908,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1138,1139,1168,1169,7808,7809,7810,7811,7812,7813,7922,7923,8208,8209,8211,8212,8213,8215,8216,8217,8218,8219,8220,8221,8222,8224,8225,8226,8230,8240,8242,8243,8249,8250,8252,8254,8260,8319,8355,8356,8359,8364,8453,8467,8470,8482,8486,8494,8539,8540,8541,8542,8592,8593,8594,8595,8596,8597,8616,8706,8710,8719,8721,8722,8730,8734,8735,8745,8747,8776,8800,8801,8804,8805,8962,8976,8992,8993,9472,9474,9484,9488,9492,9496,9500,9508,9516,9524,9532,9552,9553,9554,9555,9556,9557,9558,9559,9560,9561,9562,9563,9564,9565,9566,9567,9568,9569,9570,9571,9572,9573,9574,9575,9576,9577,9578,9579,9580,9600,9604,9608,9612,9616,9617,9618,9619,9632,9633,9642,9643,9644,9650,9658,9660,9668,9674,9675,9679,9688,9689,9702,9786,9787,9788,9792,9794,9824,9827,9829,9830,9834,9835,9836,61441,61442,61445,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]},(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.MyriadProRegularMetrics=t.MyriadProRegularFactors=t.MyriadProItalicMetrics=t.MyriadProItalicFactors=t.MyriadProBoldMetrics=t.MyriadProBoldItalicMetrics=t.MyriadProBoldItalicFactors=t.MyriadProBoldFactors=void 0,t.MyriadProBoldFactors=[1.36898,1,1,.72706,.80479,.83734,.98894,.99793,.9897,.93884,.86209,.94292,.94292,1.16661,1.02058,.93582,.96694,.93582,1.19137,.99793,.99793,.99793,.99793,.99793,.99793,.99793,.99793,.99793,.99793,.78076,.78076,1.02058,1.02058,1.02058,.72851,.78966,.90838,.83637,.82391,.96376,.80061,.86275,.8768,.95407,1.0258,.73901,.85022,.83655,1.0156,.95546,.92179,.87107,.92179,.82114,.8096,.89713,.94438,.95353,.94083,.91905,.90406,.9446,.94292,1.18777,.94292,1.02058,.89903,.90088,.94938,.97898,.81093,.97571,.94938,1.024,.9577,.95933,.98621,1.0474,.97455,.98981,.9672,.95933,.9446,.97898,.97407,.97646,.78036,1.10208,.95442,.95298,.97579,.9332,.94039,.938,.80687,1.01149,.80687,1.02058,.80479,.99793,.99793,.99793,.99793,1.01149,1.00872,.90088,.91882,1.0213,.8361,1.02058,.62295,.54324,.89022,1.08595,1,1,.90088,1,.97455,.93582,.90088,1,1.05686,.8361,.99642,.99642,.99642,.72851,.90838,.90838,.90838,.90838,.90838,.90838,.868,.82391,.80061,.80061,.80061,.80061,1.0258,1.0258,1.0258,1.0258,.97484,.95546,.92179,.92179,.92179,.92179,.92179,1.02058,.92179,.94438,.94438,.94438,.94438,.90406,.86958,.98225,.94938,.94938,.94938,.94938,.94938,.94938,.9031,.81093,.94938,.94938,.94938,.94938,.98621,.98621,.98621,.98621,.93969,.95933,.9446,.9446,.9446,.9446,.9446,1.08595,.9446,.95442,.95442,.95442,.95442,.94039,.97898,.94039,.90838,.94938,.90838,.94938,.90838,.94938,.82391,.81093,.82391,.81093,.82391,.81093,.82391,.81093,.96376,.84313,.97484,.97571,.80061,.94938,.80061,.94938,.80061,.94938,.80061,.94938,.80061,.94938,.8768,.9577,.8768,.9577,.8768,.9577,1,1,.95407,.95933,.97069,.95933,1.0258,.98621,1.0258,.98621,1.0258,.98621,1.0258,.98621,1.0258,.98621,.887,1.01591,.73901,1.0474,1,1,.97455,.83655,.98981,1,1,.83655,.73977,.83655,.73903,.84638,1.033,.95546,.95933,1,1,.95546,.95933,.8271,.95417,.95933,.92179,.9446,.92179,.9446,.92179,.9446,.936,.91964,.82114,.97646,1,1,.82114,.97646,.8096,.78036,.8096,.78036,1,1,.8096,.78036,1,1,.89713,.77452,.89713,1.10208,.94438,.95442,.94438,.95442,.94438,.95442,.94438,.95442,.94438,.95442,.94438,.95442,.94083,.97579,.90406,.94039,.90406,.9446,.938,.9446,.938,.9446,.938,1,.99793,.90838,.94938,.868,.9031,.92179,.9446,1,1,.89713,1.10208,.90088,.90088,.90088,.90088,.90088,.90088,.90088,.90088,.90088,.90989,.9358,.91945,.83181,.75261,.87992,.82976,.96034,.83689,.97268,1.0078,.90838,.83637,.8019,.90157,.80061,.9446,.95407,.92436,1.0258,.85022,.97153,1.0156,.95546,.89192,.92179,.92361,.87107,.96318,.89713,.93704,.95638,.91905,.91709,.92796,1.0258,.93704,.94836,1.0373,.95933,1.0078,.95871,.94836,.96174,.92601,.9498,.98607,.95776,.95933,1.05453,1.0078,.98275,.9314,.95617,.91701,1.05993,.9446,.78367,.9553,1,.86832,1.0128,.95871,.99394,.87548,.96361,.86774,1.0078,.95871,.9446,.95871,.86774,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.94083,.97579,.94083,.97579,.94083,.97579,.90406,.94039,.96694,1,.89903,1,1,1,.93582,.93582,.93582,1,.908,.908,.918,.94219,.94219,.96544,1,1.285,1,1,.81079,.81079,1,1,.74854,1,1,1,1,.99793,1,1,1,.65,1,1.36145,1,1,1,1,1,1,1,1,1,1,1,1.17173,1,.80535,.76169,1.02058,1.0732,1.05486,1,1,1.30692,1.08595,1.08595,1,1.08595,1.08595,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.16161,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],t.MyriadProBoldMetrics={lineHeight:1.2,lineGap:.2},t.MyriadProBoldItalicFactors=[1.36898,1,1,.66227,.80779,.81625,.97276,.97276,.97733,.92222,.83266,.94292,.94292,1.16148,1.02058,.93582,.96694,.93582,1.17337,.97276,.97276,.97276,.97276,.97276,.97276,.97276,.97276,.97276,.97276,.78076,.78076,1.02058,1.02058,1.02058,.71541,.76813,.85576,.80591,.80729,.94299,.77512,.83655,.86523,.92222,.98621,.71743,.81698,.79726,.98558,.92222,.90637,.83809,.90637,.80729,.76463,.86275,.90699,.91605,.9154,.85308,.85458,.90531,.94292,1.21296,.94292,1.02058,.89903,1.18616,.99613,.91677,.78216,.91677,.90083,.98796,.9135,.92168,.95381,.98981,.95298,.95381,.93459,.92168,.91513,.92004,.91677,.95077,.748,1.04502,.91677,.92061,.94236,.89544,.89364,.9,.80687,.8578,.80687,1.02058,.80779,.97276,.97276,.97276,.97276,.8578,.99973,1.18616,.91339,1.08074,.82891,1.02058,.55509,.71526,.89022,1.08595,1,1,1.18616,1,.96736,.93582,1.18616,1,1.04864,.82711,.99043,.99043,.99043,.71541,.85576,.85576,.85576,.85576,.85576,.85576,.845,.80729,.77512,.77512,.77512,.77512,.98621,.98621,.98621,.98621,.95961,.92222,.90637,.90637,.90637,.90637,.90637,1.02058,.90251,.90699,.90699,.90699,.90699,.85458,.83659,.94951,.99613,.99613,.99613,.99613,.99613,.99613,.85811,.78216,.90083,.90083,.90083,.90083,.95381,.95381,.95381,.95381,.9135,.92168,.91513,.91513,.91513,.91513,.91513,1.08595,.91677,.91677,.91677,.91677,.91677,.89364,.92332,.89364,.85576,.99613,.85576,.99613,.85576,.99613,.80729,.78216,.80729,.78216,.80729,.78216,.80729,.78216,.94299,.76783,.95961,.91677,.77512,.90083,.77512,.90083,.77512,.90083,.77512,.90083,.77512,.90083,.86523,.9135,.86523,.9135,.86523,.9135,1,1,.92222,.92168,.92222,.92168,.98621,.95381,.98621,.95381,.98621,.95381,.98621,.95381,.98621,.95381,.86036,.97096,.71743,.98981,1,1,.95298,.79726,.95381,1,1,.79726,.6894,.79726,.74321,.81691,1.0006,.92222,.92168,1,1,.92222,.92168,.79464,.92098,.92168,.90637,.91513,.90637,.91513,.90637,.91513,.909,.87514,.80729,.95077,1,1,.80729,.95077,.76463,.748,.76463,.748,1,1,.76463,.748,1,1,.86275,.72651,.86275,1.04502,.90699,.91677,.90699,.91677,.90699,.91677,.90699,.91677,.90699,.91677,.90699,.91677,.9154,.94236,.85458,.89364,.85458,.90531,.9,.90531,.9,.90531,.9,1,.97276,.85576,.99613,.845,.85811,.90251,.91677,1,1,.86275,1.04502,1.18616,1.18616,1.18616,1.18616,1.18616,1.18616,1.18616,1.18616,1.18616,1.00899,1.30628,.85576,.80178,.66862,.7927,.69323,.88127,.72459,.89711,.95381,.85576,.80591,.7805,.94729,.77512,.90531,.92222,.90637,.98621,.81698,.92655,.98558,.92222,.85359,.90637,.90976,.83809,.94523,.86275,.83509,.93157,.85308,.83392,.92346,.98621,.83509,.92886,.91324,.92168,.95381,.90646,.92886,.90557,.86847,.90276,.91324,.86842,.92168,.99531,.95381,.9224,.85408,.92699,.86847,1.0051,.91513,.80487,.93481,1,.88159,1.05214,.90646,.97355,.81539,.89398,.85923,.95381,.90646,.91513,.90646,.85923,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.9154,.94236,.9154,.94236,.9154,.94236,.85458,.89364,.96694,1,.89903,1,1,1,.91782,.91782,.91782,1,.896,.896,.896,.9332,.9332,.95973,1,1.26,1,1,.80479,.80178,1,1,.85633,1,1,1,1,.97276,1,1,1,.698,1,1.36145,1,1,1,1,1,1,1,1,1,1,1,1.14542,1,.79199,.78694,1.02058,1.03493,1.05486,1,1,1.23026,1.08595,1.08595,1,1.08595,1.08595,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.20006,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],t.MyriadProBoldItalicMetrics={lineHeight:1.2,lineGap:.2},t.MyriadProItalicFactors=[1.36898,1,1,.65507,.84943,.85639,.88465,.88465,.86936,.88307,.86948,.85283,.85283,1.06383,1.02058,.75945,.9219,.75945,1.17337,.88465,.88465,.88465,.88465,.88465,.88465,.88465,.88465,.88465,.88465,.75945,.75945,1.02058,1.02058,1.02058,.69046,.70926,.85158,.77812,.76852,.89591,.70466,.76125,.80094,.86822,.83864,.728,.77212,.79475,.93637,.87514,.8588,.76013,.8588,.72421,.69866,.77598,.85991,.80811,.87832,.78112,.77512,.8562,1.0222,1.18417,1.0222,1.27014,.89903,1.15012,.93859,.94399,.846,.94399,.81453,1.0186,.94219,.96017,1.03075,1.02175,.912,1.03075,.96998,.96017,.93859,.94399,.94399,.95493,.746,1.12658,.94578,.91,.979,.882,.882,.83,.85034,.83537,.85034,1.02058,.70869,.88465,.88465,.88465,.88465,.83537,.90083,1.15012,.9161,.94565,.73541,1.02058,.53609,.69353,.79519,1.08595,1,1,1.15012,1,.91974,.75945,1.15012,1,.9446,.73361,.9005,.9005,.9005,.62864,.85158,.85158,.85158,.85158,.85158,.85158,.773,.76852,.70466,.70466,.70466,.70466,.83864,.83864,.83864,.83864,.90561,.87514,.8588,.8588,.8588,.8588,.8588,1.02058,.85751,.85991,.85991,.85991,.85991,.77512,.76013,.88075,.93859,.93859,.93859,.93859,.93859,.93859,.8075,.846,.81453,.81453,.81453,.81453,.82424,.82424,.82424,.82424,.9278,.96017,.93859,.93859,.93859,.93859,.93859,1.08595,.8562,.94578,.94578,.94578,.94578,.882,.94578,.882,.85158,.93859,.85158,.93859,.85158,.93859,.76852,.846,.76852,.846,.76852,.846,.76852,.846,.89591,.8544,.90561,.94399,.70466,.81453,.70466,.81453,.70466,.81453,.70466,.81453,.70466,.81453,.80094,.94219,.80094,.94219,.80094,.94219,1,1,.86822,.96017,.86822,.96017,.83864,.82424,.83864,.82424,.83864,.82424,.83864,1.03075,.83864,.82424,.81402,1.02738,.728,1.02175,1,1,.912,.79475,1.03075,1,1,.79475,.83911,.79475,.66266,.80553,1.06676,.87514,.96017,1,1,.87514,.96017,.86865,.87396,.96017,.8588,.93859,.8588,.93859,.8588,.93859,.867,.84759,.72421,.95493,1,1,.72421,.95493,.69866,.746,.69866,.746,1,1,.69866,.746,1,1,.77598,.88417,.77598,1.12658,.85991,.94578,.85991,.94578,.85991,.94578,.85991,.94578,.85991,.94578,.85991,.94578,.87832,.979,.77512,.882,.77512,.8562,.83,.8562,.83,.8562,.83,1,.88465,.85158,.93859,.773,.8075,.85751,.8562,1,1,.77598,1.12658,1.15012,1.15012,1.15012,1.15012,1.15012,1.15313,1.15012,1.15012,1.15012,1.08106,1.03901,.85158,.77025,.62264,.7646,.65351,.86026,.69461,.89947,1.03075,.85158,.77812,.76449,.88836,.70466,.8562,.86822,.8588,.83864,.77212,.85308,.93637,.87514,.82352,.8588,.85701,.76013,.89058,.77598,.8156,.82565,.78112,.77899,.89386,.83864,.8156,.9486,.92388,.96186,1.03075,.91123,.9486,.93298,.878,.93942,.92388,.84596,.96186,.95119,1.03075,.922,.88787,.95829,.88,.93559,.93859,.78815,.93758,1,.89217,1.03737,.91123,.93969,.77487,.85769,.86799,1.03075,.91123,.93859,.91123,.86799,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.87832,.979,.87832,.979,.87832,.979,.77512,.882,.9219,1,.89903,1,1,1,.87321,.87321,.87321,1,1.027,1.027,1.027,.86847,.86847,.79121,1,1.124,1,1,.73572,.73572,1,1,.85034,1,1,1,1,.88465,1,1,1,.669,1,1.36145,1,1,1,1,1,1,1,1,1,1,1,1.04828,1,.74948,.75187,1.02058,.98391,1.02119,1,1,1.06233,1.08595,1.08595,1,1.08595,1.08595,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.05233,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],t.MyriadProItalicMetrics={lineHeight:1.2,lineGap:.2},t.MyriadProRegularFactors=[1.36898,1,1,.76305,.82784,.94935,.89364,.92241,.89073,.90706,.98472,.85283,.85283,1.0664,1.02058,.74505,.9219,.74505,1.23456,.92241,.92241,.92241,.92241,.92241,.92241,.92241,.92241,.92241,.92241,.74505,.74505,1.02058,1.02058,1.02058,.73002,.72601,.91755,.8126,.80314,.92222,.73764,.79726,.83051,.90284,.86023,.74,.8126,.84869,.96518,.91115,.8858,.79761,.8858,.74498,.73914,.81363,.89591,.83659,.89633,.85608,.8111,.90531,1.0222,1.22736,1.0222,1.27014,.89903,.90088,.86667,1.0231,.896,1.01411,.90083,1.05099,1.00512,.99793,1.05326,1.09377,.938,1.06226,1.00119,.99793,.98714,1.0231,1.01231,.98196,.792,1.19137,.99074,.962,1.01915,.926,.942,.856,.85034,.92006,.85034,1.02058,.69067,.92241,.92241,.92241,.92241,.92006,.9332,.90088,.91882,.93484,.75339,1.02058,.56866,.54324,.79519,1.08595,1,1,.90088,1,.95325,.74505,.90088,1,.97198,.75339,.91009,.91009,.91009,.66466,.91755,.91755,.91755,.91755,.91755,.91755,.788,.80314,.73764,.73764,.73764,.73764,.86023,.86023,.86023,.86023,.92915,.91115,.8858,.8858,.8858,.8858,.8858,1.02058,.8858,.89591,.89591,.89591,.89591,.8111,.79611,.89713,.86667,.86667,.86667,.86667,.86667,.86667,.86936,.896,.90083,.90083,.90083,.90083,.84224,.84224,.84224,.84224,.97276,.99793,.98714,.98714,.98714,.98714,.98714,1.08595,.89876,.99074,.99074,.99074,.99074,.942,1.0231,.942,.91755,.86667,.91755,.86667,.91755,.86667,.80314,.896,.80314,.896,.80314,.896,.80314,.896,.92222,.93372,.92915,1.01411,.73764,.90083,.73764,.90083,.73764,.90083,.73764,.90083,.73764,.90083,.83051,1.00512,.83051,1.00512,.83051,1.00512,1,1,.90284,.99793,.90976,.99793,.86023,.84224,.86023,.84224,.86023,.84224,.86023,1.05326,.86023,.84224,.82873,1.07469,.74,1.09377,1,1,.938,.84869,1.06226,1,1,.84869,.83704,.84869,.81441,.85588,1.08927,.91115,.99793,1,1,.91115,.99793,.91887,.90991,.99793,.8858,.98714,.8858,.98714,.8858,.98714,.894,.91434,.74498,.98196,1,1,.74498,.98196,.73914,.792,.73914,.792,1,1,.73914,.792,1,1,.81363,.904,.81363,1.19137,.89591,.99074,.89591,.99074,.89591,.99074,.89591,.99074,.89591,.99074,.89591,.99074,.89633,1.01915,.8111,.942,.8111,.90531,.856,.90531,.856,.90531,.856,1,.92241,.91755,.86667,.788,.86936,.8858,.89876,1,1,.81363,1.19137,.90088,.90088,.90088,.90088,.90088,.90088,.90088,.90088,.90088,.90388,1.03901,.92138,.78105,.7154,.86169,.80513,.94007,.82528,.98612,1.06226,.91755,.8126,.81884,.92819,.73764,.90531,.90284,.8858,.86023,.8126,.91172,.96518,.91115,.83089,.8858,.87791,.79761,.89297,.81363,.88157,.89992,.85608,.81992,.94307,.86023,.88157,.95308,.98699,.99793,1.06226,.95817,.95308,.97358,.928,.98088,.98699,.92761,.99793,.96017,1.06226,.986,.944,.95978,.938,.96705,.98714,.80442,.98972,1,.89762,1.04552,.95817,.99007,.87064,.91879,.88888,1.06226,.95817,.98714,.95817,.88888,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.89633,1.01915,.89633,1.01915,.89633,1.01915,.8111,.942,.9219,1,.89903,1,1,1,.93173,.93173,.93173,1,1.06304,1.06304,1.06904,.89903,.89903,.80549,1,1.156,1,1,.76575,.76575,1,1,.72458,1,1,1,1,.92241,1,1,1,.619,1,1.36145,1,1,1,1,1,1,1,1,1,1,1,1.07257,1,.74705,.71119,1.02058,1.024,1.02119,1,1,1.1536,1.08595,1.08595,1,1.08595,1.08595,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.05638,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],t.MyriadProRegularMetrics={lineHeight:1.2,lineGap:.2}},(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SegoeuiRegularMetrics=t.SegoeuiRegularFactors=t.SegoeuiItalicMetrics=t.SegoeuiItalicFactors=t.SegoeuiBoldMetrics=t.SegoeuiBoldItalicMetrics=t.SegoeuiBoldItalicFactors=t.SegoeuiBoldFactors=void 0,t.SegoeuiBoldFactors=[1.76738,1,1,.99297,.9824,1.04016,1.06497,1.03424,.97529,1.17647,1.23203,1.1085,1.1085,1.16939,1.2107,.9754,1.21408,.9754,1.59578,1.03424,1.03424,1.03424,1.03424,1.03424,1.03424,1.03424,1.03424,1.03424,1.03424,.81378,.81378,1.2107,1.2107,1.2107,.71703,.97847,.97363,.88776,.8641,1.02096,.79795,.85132,.914,1.06085,1.1406,.8007,.89858,.83693,1.14889,1.09398,.97489,.92094,.97489,.90399,.84041,.95923,1.00135,1,1.06467,.98243,.90996,.99361,1.1085,1.56942,1.1085,1.2107,.74627,.94282,.96752,1.01519,.86304,1.01359,.97278,1.15103,1.01359,.98561,1.02285,1.02285,1.00527,1.02285,1.0302,.99041,1.0008,1.01519,1.01359,1.02258,.79104,1.16862,.99041,.97454,1.02511,.99298,.96752,.95801,.94856,1.16579,.94856,1.2107,.9824,1.03424,1.03424,1,1.03424,1.16579,.8727,1.3871,1.18622,1.10818,1.04478,1.2107,1.18622,.75155,.94994,1.28826,1.21408,1.21408,.91056,1,.91572,.9754,.64663,1.18328,1.24866,1.04478,1.14169,1.15749,1.17389,.71703,.97363,.97363,.97363,.97363,.97363,.97363,.93506,.8641,.79795,.79795,.79795,.79795,1.1406,1.1406,1.1406,1.1406,1.02096,1.09398,.97426,.97426,.97426,.97426,.97426,1.2107,.97489,1.00135,1.00135,1.00135,1.00135,.90996,.92094,1.02798,.96752,.96752,.96752,.96752,.96752,.96752,.93136,.86304,.97278,.97278,.97278,.97278,1.02285,1.02285,1.02285,1.02285,.97122,.99041,1,1,1,1,1,1.28826,1.0008,.99041,.99041,.99041,.99041,.96752,1.01519,.96752,.97363,.96752,.97363,.96752,.97363,.96752,.8641,.86304,.8641,.86304,.8641,.86304,.8641,.86304,1.02096,1.03057,1.02096,1.03517,.79795,.97278,.79795,.97278,.79795,.97278,.79795,.97278,.79795,.97278,.914,1.01359,.914,1.01359,.914,1.01359,1,1,1.06085,.98561,1.06085,1.00879,1.1406,1.02285,1.1406,1.02285,1.1406,1.02285,1.1406,1.02285,1.1406,1.02285,.97138,1.08692,.8007,1.02285,1,1,1.00527,.83693,1.02285,1,1,.83693,.9455,.83693,.90418,.83693,1.13005,1.09398,.99041,1,1,1.09398,.99041,.96692,1.09251,.99041,.97489,1.0008,.97489,1.0008,.97489,1.0008,.93994,.97931,.90399,1.02258,1,1,.90399,1.02258,.84041,.79104,.84041,.79104,.84041,.79104,.84041,.79104,1,1,.95923,1.07034,.95923,1.16862,1.00135,.99041,1.00135,.99041,1.00135,.99041,1.00135,.99041,1.00135,.99041,1.00135,.99041,1.06467,1.02511,.90996,.96752,.90996,.99361,.95801,.99361,.95801,.99361,.95801,1.07733,1.03424,.97363,.96752,.93506,.93136,.97489,1.0008,1,1,.95923,1.16862,1.15103,1.15103,1.01173,1.03959,.75953,.81378,.79912,1.15103,1.21994,.95161,.87815,1.01149,.81525,.7676,.98167,1.01134,1.02546,.84097,1.03089,1.18102,.97363,.88776,.85134,.97826,.79795,.99361,1.06085,.97489,1.1406,.89858,1.0388,1.14889,1.09398,.86039,.97489,1.0595,.92094,.94793,.95923,.90996,.99346,.98243,1.02112,.95493,1.1406,.90996,1.03574,1.02597,1.0008,1.18102,1.06628,1.03574,1.0192,1.01932,1.00886,.97531,1.0106,1.0008,1.13189,1.18102,1.02277,.98683,1.0016,.99561,1.07237,1.0008,.90434,.99921,.93803,.8965,1.23085,1.06628,1.04983,.96268,1.0499,.98439,1.18102,1.06628,1.0008,1.06628,.98439,.79795,1,1,1,1,1,1,1,1,1,1,1,1,1.09466,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.97278,1,1,1,1,1,1,1,1,1,1,1,1,1.02065,1,1,1,1,1,1,1.06467,1.02511,1.06467,1.02511,1.06467,1.02511,.90996,.96752,1,1.21408,.89903,1,1,.75155,1.04394,1.04394,1.04394,1.04394,.98633,.98633,.98633,.73047,.73047,1.20642,.91211,1.25635,1.222,1.02956,1.03372,1.03372,.96039,1.24633,1,1.12454,.93503,1.03424,1.19687,1.03424,1,1,1,.771,1,1,1.15749,1.15749,1.15749,1.10948,.86279,.94434,.86279,.94434,.86182,1,1,1.16897,1,.96085,.90137,1.2107,1.18416,1.13973,.69825,.9716,2.10339,1.29004,1.29004,1.21172,1.29004,1.29004,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.42603,1,.99862,.99862,1,.87025,.87025,.87025,.87025,1.18874,1.42603,1,1.42603,1.42603,.99862,1,1,1,1,1,1.2886,1.04315,1.15296,1.34163,1,1,1,1.09193,1.09193,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],t.SegoeuiBoldMetrics={lineHeight:1.33008,lineGap:0},t.SegoeuiBoldItalicFactors=[1.76738,1,1,.98946,1.03959,1.04016,1.02809,1.036,.97639,1.10953,1.23203,1.11144,1.11144,1.16939,1.21237,.9754,1.21261,.9754,1.59754,1.036,1.036,1.036,1.036,1.036,1.036,1.036,1.036,1.036,1.036,.81378,.81378,1.21237,1.21237,1.21237,.73541,.97847,.97363,.89723,.87897,1.0426,.79429,.85292,.91149,1.05815,1.1406,.79631,.90128,.83853,1.04396,1.10615,.97552,.94436,.97552,.88641,.80527,.96083,1.00135,1,1.06777,.9817,.91142,.99361,1.11144,1.57293,1.11144,1.21237,.74627,1.31818,1.06585,.97042,.83055,.97042,.93503,1.1261,.97042,.97922,1.14236,.94552,1.01054,1.14236,1.02471,.97922,.94165,.97042,.97042,1.0276,.78929,1.1261,.97922,.95874,1.02197,.98507,.96752,.97168,.95107,1.16579,.95107,1.21237,1.03959,1.036,1.036,1,1.036,1.16579,.87357,1.31818,1.18754,1.26781,1.05356,1.21237,1.18622,.79487,.94994,1.29004,1.24047,1.24047,1.31818,1,.91484,.9754,1.31818,1.1349,1.24866,1.05356,1.13934,1.15574,1.17389,.73541,.97363,.97363,.97363,.97363,.97363,.97363,.94385,.87897,.79429,.79429,.79429,.79429,1.1406,1.1406,1.1406,1.1406,1.0426,1.10615,.97552,.97552,.97552,.97552,.97552,1.21237,.97552,1.00135,1.00135,1.00135,1.00135,.91142,.94436,.98721,1.06585,1.06585,1.06585,1.06585,1.06585,1.06585,.96705,.83055,.93503,.93503,.93503,.93503,1.14236,1.14236,1.14236,1.14236,.93125,.97922,.94165,.94165,.94165,.94165,.94165,1.29004,.94165,.97922,.97922,.97922,.97922,.96752,.97042,.96752,.97363,1.06585,.97363,1.06585,.97363,1.06585,.87897,.83055,.87897,.83055,.87897,.83055,.87897,.83055,1.0426,1.0033,1.0426,.97042,.79429,.93503,.79429,.93503,.79429,.93503,.79429,.93503,.79429,.93503,.91149,.97042,.91149,.97042,.91149,.97042,1,1,1.05815,.97922,1.05815,.97922,1.1406,1.14236,1.1406,1.14236,1.1406,1.14236,1.1406,1.14236,1.1406,1.14236,.97441,1.04302,.79631,1.01582,1,1,1.01054,.83853,1.14236,1,1,.83853,1.09125,.83853,.90418,.83853,1.19508,1.10615,.97922,1,1,1.10615,.97922,1.01034,1.10466,.97922,.97552,.94165,.97552,.94165,.97552,.94165,.91602,.91981,.88641,1.0276,1,1,.88641,1.0276,.80527,.78929,.80527,.78929,.80527,.78929,.80527,.78929,1,1,.96083,1.05403,.95923,1.16862,1.00135,.97922,1.00135,.97922,1.00135,.97922,1.00135,.97922,1.00135,.97922,1.00135,.97922,1.06777,1.02197,.91142,.96752,.91142,.99361,.97168,.99361,.97168,.99361,.97168,1.23199,1.036,.97363,1.06585,.94385,.96705,.97552,.94165,1,1,.96083,1.1261,1.31818,1.31818,1.31818,1.31818,1.31818,1.31818,1.31818,1.31818,1.31818,.95161,1.27126,1.00811,.83284,.77702,.99137,.95253,1.0347,.86142,1.07205,1.14236,.97363,.89723,.86869,1.09818,.79429,.99361,1.05815,.97552,1.1406,.90128,1.06662,1.04396,1.10615,.84918,.97552,1.04694,.94436,.98015,.96083,.91142,1.00356,.9817,1.01945,.98999,1.1406,.91142,1.04961,.9898,1.00639,1.14236,1.07514,1.04961,.99607,1.02897,1.008,.9898,.95134,1.00639,1.11121,1.14236,1.00518,.97981,1.02186,1,1.08578,.94165,.99314,.98387,.93028,.93377,1.35125,1.07514,1.10687,.93491,1.04232,1.00351,1.14236,1.07514,.94165,1.07514,1.00351,.79429,1,1,1,1,1,1,1,1,1,1,1,1,1.09097,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.93503,1,1,1,1,1,1,1,1,1,1,1,1,.96609,1,1,1,1,1,1,1.06777,1.02197,1.06777,1.02197,1.06777,1.02197,.91142,.96752,1,1.21261,.89903,1,1,.75155,1.04745,1.04745,1.04745,1.04394,.98633,.98633,.98633,.72959,.72959,1.20502,.91406,1.26514,1.222,1.02956,1.03372,1.03372,.96039,1.24633,1,1.09125,.93327,1.03336,1.16541,1.036,1,1,1,.771,1,1,1.15574,1.15574,1.15574,1.15574,.86364,.94434,.86279,.94434,.86224,1,1,1.16798,1,.96085,.90068,1.21237,1.18416,1.13904,.69825,.9716,2.10339,1.29004,1.29004,1.21339,1.29004,1.29004,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.42603,1,.99862,.99862,1,.87025,.87025,.87025,.87025,1.18775,1.42603,1,1.42603,1.42603,.99862,1,1,1,1,1,1.2886,1.04315,1.15296,1.34163,1,1,1,1.13269,1.13269,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],t.SegoeuiBoldItalicMetrics={lineHeight:1.33008,lineGap:0},t.SegoeuiItalicFactors=[1.76738,1,1,.98946,1.14763,1.05365,1.06234,.96927,.92586,1.15373,1.18414,.91349,.91349,1.07403,1.17308,.78383,1.20088,.78383,1.42531,.96927,.96927,.96927,.96927,.96927,.96927,.96927,.96927,.96927,.96927,.78383,.78383,1.17308,1.17308,1.17308,.77349,.94565,.94729,.85944,.88506,.9858,.74817,.80016,.88449,.98039,.95782,.69238,.89898,.83231,.98183,1.03989,.96924,.86237,.96924,.80595,.74524,.86091,.95402,.94143,.98448,.8858,.83089,.93285,1.0949,1.39016,1.0949,1.45994,.74627,1.04839,.97454,.97454,.87207,.97454,.87533,1.06151,.97454,1.00176,1.16484,1.08132,.98047,1.16484,1.02989,1.01054,.96225,.97454,.97454,1.06598,.79004,1.16344,1.00351,.94629,.9973,.91016,.96777,.9043,.91082,.92481,.91082,1.17308,.95748,.96927,.96927,1,.96927,.92481,.80597,1.04839,1.23393,1.1781,.9245,1.17308,1.20808,.63218,.94261,1.24822,1.09971,1.09971,1.04839,1,.85273,.78032,1.04839,1.09971,1.22326,.9245,1.09836,1.13525,1.15222,.70424,.94729,.94729,.94729,.94729,.94729,.94729,.85498,.88506,.74817,.74817,.74817,.74817,.95782,.95782,.95782,.95782,.9858,1.03989,.96924,.96924,.96924,.96924,.96924,1.17308,.96924,.95402,.95402,.95402,.95402,.83089,.86237,.88409,.97454,.97454,.97454,.97454,.97454,.97454,.92916,.87207,.87533,.87533,.87533,.87533,.93146,.93146,.93146,.93146,.93854,1.01054,.96225,.96225,.96225,.96225,.96225,1.24822,.8761,1.00351,1.00351,1.00351,1.00351,.96777,.97454,.96777,.94729,.97454,.94729,.97454,.94729,.97454,.88506,.87207,.88506,.87207,.88506,.87207,.88506,.87207,.9858,.95391,.9858,.97454,.74817,.87533,.74817,.87533,.74817,.87533,.74817,.87533,.74817,.87533,.88449,.97454,.88449,.97454,.88449,.97454,1,1,.98039,1.00176,.98039,1.00176,.95782,.93146,.95782,.93146,.95782,.93146,.95782,1.16484,.95782,.93146,.84421,1.12761,.69238,1.08132,1,1,.98047,.83231,1.16484,1,1,.84723,1.04861,.84723,.78755,.83231,1.23736,1.03989,1.01054,1,1,1.03989,1.01054,.9857,1.03849,1.01054,.96924,.96225,.96924,.96225,.96924,.96225,.92383,.90171,.80595,1.06598,1,1,.80595,1.06598,.74524,.79004,.74524,.79004,.74524,.79004,.74524,.79004,1,1,.86091,1.02759,.85771,1.16344,.95402,1.00351,.95402,1.00351,.95402,1.00351,.95402,1.00351,.95402,1.00351,.95402,1.00351,.98448,.9973,.83089,.96777,.83089,.93285,.9043,.93285,.9043,.93285,.9043,1.31868,.96927,.94729,.97454,.85498,.92916,.96924,.8761,1,1,.86091,1.16344,1.04839,1.04839,1.04839,1.04839,1.04839,1.04839,1.04839,1.04839,1.04839,.81965,.81965,.94729,.78032,.71022,.90883,.84171,.99877,.77596,1.05734,1.2,.94729,.85944,.82791,.9607,.74817,.93285,.98039,.96924,.95782,.89898,.98316,.98183,1.03989,.78614,.96924,.97642,.86237,.86075,.86091,.83089,.90082,.8858,.97296,1.01284,.95782,.83089,1.0976,1.04,1.03342,1.2,1.0675,1.0976,.98205,1.03809,1.05097,1.04,.95364,1.03342,1.05401,1.2,1.02148,1.0119,1.04724,1.0127,1.02732,.96225,.8965,.97783,.93574,.94818,1.30679,1.0675,1.11826,.99821,1.0557,1.0326,1.2,1.0675,.96225,1.0675,1.0326,.74817,1,1,1,1,1,1,1,1,1,1,1,1,1.03754,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.87533,1,1,1,1,1,1,1,1,1,1,1,1,.98705,1,1,1,1,1,1,.98448,.9973,.98448,.9973,.98448,.9973,.83089,.96777,1,1.20088,.89903,1,1,.75155,.94945,.94945,.94945,.94945,1.12317,1.12317,1.12317,.67603,.67603,1.15621,.73584,1.21191,1.22135,1.06483,.94868,.94868,.95996,1.24633,1,1.07497,.87709,.96927,1.01473,.96927,1,1,1,.77295,1,1,1.09836,1.09836,1.09836,1.01522,.86321,.94434,.8649,.94434,.86182,1,1,1.083,1,.91578,.86438,1.17308,1.18416,1.14589,.69825,.97622,1.96791,1.24822,1.24822,1.17308,1.24822,1.24822,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.42603,1,.99862,.99862,1,.87025,.87025,.87025,.87025,1.17984,1.42603,1,1.42603,1.42603,.99862,1,1,1,1,1,1.2886,1.04315,1.15296,1.34163,1,1,1,1.10742,1.10742,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],t.SegoeuiItalicMetrics={lineHeight:1.33008,lineGap:0},t.SegoeuiRegularFactors=[1.76738,1,1,.98594,1.02285,1.10454,1.06234,.96927,.92037,1.19985,1.2046,.90616,.90616,1.07152,1.1714,.78032,1.20088,.78032,1.40246,.96927,.96927,.96927,.96927,.96927,.96927,.96927,.96927,.96927,.96927,.78032,.78032,1.1714,1.1714,1.1714,.80597,.94084,.96706,.85944,.85734,.97093,.75842,.79936,.88198,.9831,.95782,.71387,.86969,.84636,1.07796,1.03584,.96924,.83968,.96924,.82826,.79649,.85771,.95132,.93119,.98965,.88433,.8287,.93365,1.08612,1.3638,1.08612,1.45786,.74627,.80499,.91484,1.05707,.92383,1.05882,.9403,1.12654,1.05882,1.01756,1.09011,1.09011,.99414,1.09011,1.034,1.01756,1.05356,1.05707,1.05882,1.04399,.84863,1.21968,1.01756,.95801,1.00068,.91797,.96777,.9043,.90351,.92105,.90351,1.1714,.85337,.96927,.96927,.99912,.96927,.92105,.80597,1.2434,1.20808,1.05937,.90957,1.1714,1.20808,.75155,.94261,1.24644,1.09971,1.09971,.84751,1,.85273,.78032,.61584,1.05425,1.17914,.90957,1.08665,1.11593,1.14169,.73381,.96706,.96706,.96706,.96706,.96706,.96706,.86035,.85734,.75842,.75842,.75842,.75842,.95782,.95782,.95782,.95782,.97093,1.03584,.96924,.96924,.96924,.96924,.96924,1.1714,.96924,.95132,.95132,.95132,.95132,.8287,.83968,.89049,.91484,.91484,.91484,.91484,.91484,.91484,.93575,.92383,.9403,.9403,.9403,.9403,.8717,.8717,.8717,.8717,1.00527,1.01756,1.05356,1.05356,1.05356,1.05356,1.05356,1.24644,.95923,1.01756,1.01756,1.01756,1.01756,.96777,1.05707,.96777,.96706,.91484,.96706,.91484,.96706,.91484,.85734,.92383,.85734,.92383,.85734,.92383,.85734,.92383,.97093,1.0969,.97093,1.05882,.75842,.9403,.75842,.9403,.75842,.9403,.75842,.9403,.75842,.9403,.88198,1.05882,.88198,1.05882,.88198,1.05882,1,1,.9831,1.01756,.9831,1.01756,.95782,.8717,.95782,.8717,.95782,.8717,.95782,1.09011,.95782,.8717,.84784,1.11551,.71387,1.09011,1,1,.99414,.84636,1.09011,1,1,.84636,1.0536,.84636,.94298,.84636,1.23297,1.03584,1.01756,1,1,1.03584,1.01756,1.00323,1.03444,1.01756,.96924,1.05356,.96924,1.05356,.96924,1.05356,.93066,.98293,.82826,1.04399,1,1,.82826,1.04399,.79649,.84863,.79649,.84863,.79649,.84863,.79649,.84863,1,1,.85771,1.17318,.85771,1.21968,.95132,1.01756,.95132,1.01756,.95132,1.01756,.95132,1.01756,.95132,1.01756,.95132,1.01756,.98965,1.00068,.8287,.96777,.8287,.93365,.9043,.93365,.9043,.93365,.9043,1.08571,.96927,.96706,.91484,.86035,.93575,.96924,.95923,1,1,.85771,1.21968,1.11437,1.11437,.93109,.91202,.60411,.84164,.55572,1.01173,.97361,.81818,.81818,.96635,.78032,.72727,.92366,.98601,1.03405,.77968,1.09799,1.2,.96706,.85944,.85638,.96491,.75842,.93365,.9831,.96924,.95782,.86969,.94152,1.07796,1.03584,.78437,.96924,.98715,.83968,.83491,.85771,.8287,.94492,.88433,.9287,1.0098,.95782,.8287,1.0625,.98248,1.03424,1.2,1.01071,1.0625,.95246,1.03809,1.04912,.98248,1.00221,1.03424,1.05443,1.2,1.04785,.99609,1.00169,1.05176,.99346,1.05356,.9087,1.03004,.95542,.93117,1.23362,1.01071,1.07831,1.02512,1.05205,1.03502,1.2,1.01071,1.05356,1.01071,1.03502,.75842,1,1,1,1,1,1,1,1,1,1,1,1,1.03719,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.9403,1,1,1,1,1,1,1,1,1,1,1,1,1.04021,1,1,1,1,1,1,.98965,1.00068,.98965,1.00068,.98965,1.00068,.8287,.96777,1,1.20088,.89903,1,1,.75155,1.03077,1.03077,1.03077,1.03077,1.13196,1.13196,1.13196,.67428,.67428,1.16039,.73291,1.20996,1.22135,1.06483,.94868,.94868,.95996,1.24633,1,1.07497,.87796,.96927,1.01518,.96927,1,1,1,.77295,1,1,1.10539,1.10539,1.11358,1.06967,.86279,.94434,.86279,.94434,.86182,1,1,1.083,1,.91578,.86507,1.1714,1.18416,1.14589,.69825,.97622,1.9697,1.24822,1.24822,1.17238,1.24822,1.24822,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.42603,1,.99862,.99862,1,.87025,.87025,.87025,.87025,1.18083,1.42603,1,1.42603,1.42603,.99862,1,1,1,1,1,1.2886,1.04315,1.15296,1.34163,1,1,1,1.10938,1.10938,1,1,1,1.05425,1.09971,1.09971,1.09971,1,1,1,1,1,1,1,1,1,1,1],t.SegoeuiRegularMetrics={lineHeight:1.33008,lineGap:0}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.PostScriptEvaluator=t.PostScriptCompiler=t.PDFFunctionFactory=void 0,t.isPDFFunction=function(e){var t;if("object"!==g(e))return!1;if(e instanceof n.Dict)t=e;else{if(!(e instanceof o.BaseStream))return!1;t=e.dict}return t.has("FunctionType")};var n=r(134),a=r(2),i=r(187),o=r(136),s=r(188);function c(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&u(e,t)}function u(e,t){return u=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},u(e,t)}function l(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,n=f(e);if(t){var a=f(this).constructor;r=Reflect.construct(n,arguments,a)}else r=n.apply(this,arguments);return function(e,t){if(t&&("object"===g(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(this,r)}}function f(e){return f=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},f(e)}function h(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=d(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,a=function(){};return{s:a,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return o=e.done,e},e:function(e){s=!0,i=e},f:function(){try{o||null==r.return||r.return()}finally{if(s)throw i}}}}function d(e,t){if(e){if("string"==typeof e)return p(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?p(e,t):void 0}}function p(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r>c)*l,u&=(1<r?e=r:e0&&(u=l[a-1]);var h=i[1];a>1,h=o.length>>1,d=new x(u),p=Object.create(null),g=8192,v=new Float32Array(h);return function(e,t,r,n){var a,i,o="",c=v;for(a=0;a(b=s[2*a+1]))&&(i=b),l[a]=i}g>0&&(g--,p[o]=l),r.set(l,n)}else r.set(u,n)}}}]),e}(),S=function(){function e(t){v(this,e),this.stack=t?Array.from(t):[]}return m(e,[{key:"push",value:function(t){if(this.stack.length>=e.MAX_STACK_SIZE)throw new Error("PostScript function stack overflow.");this.stack.push(t)}},{key:"pop",value:function(){if(this.stack.length<=0)throw new Error("PostScript function stack underflow.");return this.stack.pop()}},{key:"copy",value:function(t){if(this.stack.length+t>=e.MAX_STACK_SIZE)throw new Error("PostScript function stack overflow.");for(var r=this.stack,n=r.length-t,a=t-1;a>=0;a--,n++)r.push(r[n])}},{key:"index",value:function(e){this.push(this.stack[this.stack.length-e-1])}},{key:"roll",value:function(e,t){for(var r=this.stack,n=r.length-e,a=r.length-1,i=n+(t-Math.floor(t/e)*e),o=n,s=a;o0?i.push(r<>n);break;case"ceiling":r=i.pop(),i.push(Math.ceil(r));break;case"copy":r=i.pop(),i.copy(r);break;case"cos":r=i.pop(),i.push(Math.cos(r));break;case"cvi":r=0|i.pop(),i.push(r);break;case"cvr":break;case"div":n=i.pop(),r=i.pop(),i.push(r/n);break;case"dup":i.copy(1);break;case"eq":n=i.pop(),r=i.pop(),i.push(r===n);break;case"exch":i.roll(2,1);break;case"exp":n=i.pop(),r=i.pop(),i.push(Math.pow(r,n));break;case"false":i.push(!1);break;case"floor":r=i.pop(),i.push(Math.floor(r));break;case"ge":n=i.pop(),r=i.pop(),i.push(r>=n);break;case"gt":n=i.pop(),r=i.pop(),i.push(r>n);break;case"idiv":n=i.pop(),r=i.pop(),i.push(r/n|0);break;case"index":r=i.pop(),i.index(r);break;case"le":n=i.pop(),r=i.pop(),i.push(r<=n);break;case"ln":r=i.pop(),i.push(Math.log(r));break;case"log":r=i.pop(),i.push(Math.log(r)/Math.LN10);break;case"lt":n=i.pop(),r=i.pop(),i.push(r=t?new C(t):e.max<=t?e:new P(e,t)}var R=function(){function e(){v(this,e)}return m(e,[{key:"compile",value:function(e,t,r){for(var n,a,i,o,s,c,u,l,f=[],h=[],g=t.length>>1,v=r.length>>1,y=0,m=0;mD.min&&(X.unshift("Math.max(",U,", "),X.push(")")),${Object.defineProperty(t,"__esModule",{value:!0}),t.PostScriptParser=t.PostScriptLexer=void 0;var n=r(2),a=r(134),i=r(135);function o(e){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o(e)}function s(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function c(e,t){for(var r=0;r=0&&(t>=65&&t<=90||t>=97&&t<=122);)r.push(String.fromCharCode(t));var n=r.join("");switch(n.toLowerCase()){case"if":return h.IF;case"ifelse":return h.IFELSE;default:return h.getOperator(n)}}},{key:"getNumber",value:function(){var e=this.currentChar,t=this.strBuf;for(t.length=0,t[0]=String.fromCharCode(e);(e=this.nextChar())>=0&&(e>=48&&e<=57||45===e||46===e);)t.push(String.fromCharCode(e));var r=parseFloat(t.join(""));if(isNaN(r))throw new n.FormatError("Invalid floating point number: ".concat(r));return r}}]),e}();t.PostScriptLexer=d},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.LocalTilingPatternCache=t.LocalImageCache=t.LocalGStateCache=t.LocalFunctionCache=t.LocalColorSpaceCache=t.GlobalImageCache=void 0;var n=r(2),a=r(134);function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r1&&void 0!==arguments[1]?arguments[1]:null,r=arguments.length>2?arguments[2]:void 0;if("string"!=typeof e)throw new Error('LocalImageCache.set - expected "name" argument.');if(t){if(this._imageCache.has(t))return;return this._nameRefMap.set(e,t),void this._imageCache.put(t,r)}this._imageMap.has(e)||this._imageMap.set(e,r)}}]),r}(p);t.LocalImageCache=g;var v=function(e){o(r,e);var t=c(r);function r(){return f(this,r),t.apply(this,arguments)}return d(r,[{key:"set",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,r=arguments.length>2?arguments[2]:void 0;if("string"!=typeof e&&!t)throw new Error('LocalColorSpaceCache.set - expected "name" and/or "ref" argument.');if(t){if(this._imageCache.has(t))return;return null!==e&&this._nameRefMap.set(e,t),void this._imageCache.put(t,r)}this._imageMap.has(e)||this._imageMap.set(e,r)}}]),r}(p);t.LocalColorSpaceCache=v;var y=function(e){o(r,e);var t=c(r);function r(e){return f(this,r),t.call(this,{onlyRefs:!0})}return d(r,[{key:"set",value:function(){var e=arguments.length>1?arguments[1]:void 0,t=arguments.length>2?arguments[2]:void 0;if(!e)throw new Error('LocalFunctionCache.set - expected "ref" argument.');this._imageCache.has(e)||this._imageCache.put(e,t)}}]),r}(p);t.LocalFunctionCache=y;var m=function(e){o(r,e);var t=c(r);function r(){return f(this,r),t.apply(this,arguments)}return d(r,[{key:"set",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,r=arguments.length>2?arguments[2]:void 0;if("string"!=typeof e)throw new Error('LocalGStateCache.set - expected "name" argument.');if(t){if(this._imageCache.has(t))return;return this._nameRefMap.set(e,t),void this._imageCache.put(t,r)}this._imageMap.has(e)||this._imageMap.set(e,r)}}]),r}(p);t.LocalGStateCache=m;var b=function(e){o(r,e);var t=c(r);function r(e){return f(this,r),t.call(this,{onlyRefs:!0})}return d(r,[{key:"set",value:function(){var e=arguments.length>1?arguments[1]:void 0,t=arguments.length>2?arguments[2]:void 0;if(!e)throw new Error('LocalTilingPatternCache.set - expected "ref" argument.');this._imageCache.has(e)||this._imageCache.put(e,t)}}]),r}(p);t.LocalTilingPatternCache=b;var w=function(){function e(){f(this,e),this._refCache=new a.RefSetCache,this._imageCache=new a.RefSetCache}return d(e,[{key:"_byteSize",get:function(){var e,t=0,r=function(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(e){if("string"==typeof e)return i(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?i(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,a=function(){};return{s:a,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,c=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return s=e.done,e},e:function(e){c=!0,o=e},f:function(){try{s||null==r.return||r.return()}finally{if(c)throw o}}}}(this._imageCache);try{for(r.s();!(e=r.n()).done;)t+=e.value.byteSize}catch(e){r.e(e)}finally{r.f()}return t}},{key:"_cacheLimitReached",get:function(){return!(this._imageCache.size0&&void 0!==arguments[0]&&arguments[0]||this._refCache.clear(),this._imageCache.clear()}}],[{key:"NUM_PAGES_THRESHOLD",get:function(){return(0,n.shadow)(this,"NUM_PAGES_THRESHOLD",2)}},{key:"MIN_IMAGES_TO_CACHE",get:function(){return(0,n.shadow)(this,"MIN_IMAGES_TO_CACHE",10)}},{key:"MAX_BYTE_SIZE",get:function(){return(0,n.shadow)(this,"MAX_BYTE_SIZE",4e7)}}]),e}();t.GlobalImageCache=w},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.bidi=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:-1,r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],p=!0,g=e.length;if(0===g||r)return f(e,p,r);h.length=g,d.length=g;var v,y,m=0;for(v=0;v4?(p=!0,t=0):(p=!1,t=1));var k=[];for(v=0;v=0&&"ET"===d[F];--F)d[F]="EN";for(var P=v+1;P0&&(I=d[v-1]);var E=A;T+1j&&o(j)&&(_=j);for(j=M;j>=_;--j){var L=-1;for(v=0,y=k.length;v=0&&(l(h,L,v),L=-1):L<0&&(L=v);L>=0&&l(h,L,k.length)}for(v=0,y=h.length;v"!==R||(h[v]="")}return f(h.join(""),p)};var n=r(2),a=["BN","BN","BN","BN","BN","BN","BN","BN","BN","S","B","S","WS","B","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","B","B","B","S","WS","ON","ON","ET","ET","ET","ON","ON","ON","ON","ON","ES","CS","ES","CS","CS","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","CS","ON","ON","ON","ON","ON","ON","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","ON","ON","ON","ON","ON","ON","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","ON","ON","ON","ON","BN","BN","BN","BN","BN","BN","B","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","CS","ON","ET","ET","ET","ET","ON","ON","ON","ON","L","ON","ON","BN","ON","ON","ET","ET","EN","EN","ON","L","ON","ON","ON","EN","L","ON","ON","ON","ON","ON","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","ON","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","ON","L","L","L","L","L","L","L","L"],i=["AN","AN","AN","AN","AN","AN","ON","ON","AL","ET","ET","AL","CS","AL","ON","ON","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","AL","AL","","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","AN","AN","AN","AN","AN","AN","AN","AN","AN","AN","ET","AN","AN","AL","AL","AL","NSM","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","NSM","NSM","NSM","NSM","NSM","NSM","NSM","AN","ON","NSM","NSM","NSM","NSM","NSM","NSM","AL","AL","NSM","NSM","ON","NSM","NSM","NSM","NSM","AL","AL","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","AL","AL","AL","AL","AL","AL"];function o(e){return 0!=(1&e)}function s(e){return 0==(1&e)}function c(e,t,r){var n,a;for(n=t,a=e.length;n2&&void 0!==arguments[2]&&arguments[2]?r="ttb":t||(r="rtl"),{str:e,dir:r}}var h=[],d=[]},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.MurmurHash3_64=void 0;var n=r(2);function a(e){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a(e)}function i(e,t){for(var r=0;r>>8,t[r++]=255&o)}}else{if(!(0,n.isArrayBuffer)(e))throw new Error("Wrong data format in MurmurHash3_64_update. Input must be a string or array.");r=(t=e.slice()).byteLength}for(var u=r>>2,l=r-4*u,f=new Uint32Array(t.buffer,0,u),h=0,d=0,p=this.h1,g=this.h2,v=3432918353,y=461845907,m=11601,b=13715,w=0;w>>17)*y&s|h*b&c)<<13|p>>>19)+3864292196:g=5*(g=(g^=d=(d=(d=(d=f[w])*v&s|d*m&c)<<15|d>>>17)*y&s|d*b&c)<<13|g>>>19)+3864292196;switch(h=0,l){case 3:h^=t[4*u+2]<<16;case 2:h^=t[4*u+1]<<8;case 1:h=(h=(h=(h^=t[4*u])*v&s|h*m&c)<<15|h>>>17)*y&s|h*b&c,1&u?p^=h:g^=h}this.h1=p,this.h2=g}},{key:"hexdigest",value:function(){var e=this.h1,t=this.h2;return e=3981806797*(e^=t>>>1)&s|36045*e&c,e=444984403*(e^=(t=4283543511*t&s|(2950163797*(t<<16|e>>>16)&s)>>>16)>>>1)&s|60499*e&c,((e^=(t=3301882366*t&s|(3120437893*(t<<16|e>>>16)&s)>>>16)>>>1)>>>0).toString(16).padStart(8,"0")+(t>>>0).toString(16).padStart(8,"0")}}])&&i(t.prototype,r),Object.defineProperty(t,"prototype",{writable:!1}),e}();t.MurmurHash3_64=u},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.OperatorList=void 0;var n=r(2);function a(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(e){if("string"==typeof e)return i(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?i(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,a=function(){};return{s:a,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,c=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return s=e.done,e},e:function(e){c=!0,o=e},f:function(){try{s||null==r.return||r.return()}finally{if(c)throw o}}}}function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r1e3&&(l=Math.max(l,d),p+=h+2,d=0,h=0),f.push({transform:v,x:d,y:p,w:y.width,h:y.height}),d+=y.width+2,h=Math.max(h,y.height)}for(var m=Math.max(l,d)+1,b=p+h+1,w=new Uint8Array(m*b*4),k=m<<2,S=0;S=0;)x[C-4]=x[C],x[C-3]=x[C+1],x[C-2]=x[C+2],x[C-1]=x[C+3],x[C+O]=x[C+O-4],x[C+O+1]=x[C+O-3],x[C+O+2]=x[C+O-2],x[C+O+3]=x[C+O-1],C-=k}return r.splice(o,4*u,n.OPS.paintInlineImageXObjectGroup),a.splice(o,4*u,[{width:m,height:b,kind:n.ImageKind.RGBA_32BPP,data:w},f]),o+1})),h(d,[n.OPS.save,n.OPS.transform,n.OPS.paintImageMaskXObject,n.OPS.restore],null,(function(e,t){var r=e.fnArray,a=(t-(e.iCurr-3))%4;switch(a){case 0:return r[t]===n.OPS.save;case 1:return r[t]===n.OPS.transform;case 2:return r[t]===n.OPS.paintImageMaskXObject;case 3:return r[t]===n.OPS.restore}throw new Error("iterateImageMaskGroup - invalid pos: ".concat(a))}),(function(e,t){var r=e.fnArray,a=e.argsArray,i=e.iCurr,o=i-3,s=i-2,c=i-1,u=Math.floor((t-o)/4);if(u<10)return t-(t-o)%4;var l,f,h=!1,d=a[c][0],p=a[s][0],g=a[s][1],v=a[s][2],y=a[s][3];if(g===v){h=!0,l=s+4;for(var m=c+4,b=1;b=4&&r[i-4]===r[o]&&r[i-3]===r[s]&&r[i-2]===r[c]&&r[i-1]===r[u]&&n[i-4][0]===l&&n[i-4][1]===f&&(h++,d-=5);for(var p=d+4,g=1;g=(r=e.length))break}(n=(n||d)[e[t]])&&!Array.isArray(n)?(i.iCurr=t,t++,!n.checkFn||(0,n.checkFn)(i)?(a=n,n=null):n=null):t++}this.state=n,this.match=a,this.lastProcessed=t}else this.lastProcessed=r}},{key:"flush",value:function(){for(;this.match;){var e=this.queue.fnArray.length;this.lastProcessed=(0,this.match.processFn)(this.context,e),this.match=null,this.state=null,this._optimize()}}},{key:"reset",value:function(){this.state=null,this.match=null,this.lastProcessed=0}}]),a}(p),v=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,r=arguments.length>1?arguments[1]:void 0;u(this,e),this._streamSink=r,this.fnArray=[],this.argsArray=[],!r||t&n.RenderingIntentFlag.OPLIST?this.optimizer=new p(this):this.optimizer=new g(this),this.dependencies=new Set,this._totalLength=0,this.weight=0,this._resolved=r?null:Promise.resolve()}return f(e,[{key:"length",get:function(){return this.argsArray.length}},{key:"ready",get:function(){return this._resolved||this._streamSink.ready}},{key:"totalLength",get:function(){return this._totalLength+this.length}},{key:"addOp",value:function(t,r){this.optimizer.push(t,r),this.weight++,this._streamSink&&(this.weight>=e.CHUNK_SIZE||this.weight>=e.CHUNK_SIZE_ABOUT&&(t===n.OPS.restore||t===n.OPS.endText))&&this.flush()}},{key:"addImageOps",value:function(e,t,r){void 0!==r&&this.addOp(n.OPS.beginMarkedContentProps,["OC",r]),this.addOp(e,t),void 0!==r&&this.addOp(n.OPS.endMarkedContent,[])}},{key:"addDependency",value:function(e){this.dependencies.has(e)||(this.dependencies.add(e),this.addOp(n.OPS.dependency,[e]))}},{key:"addDependencies",value:function(e){var t,r=a(e);try{for(r.s();!(t=r.n()).done;){var n=t.value;this.addDependency(n)}}catch(e){r.e(e)}finally{r.f()}}},{key:"addOpList",value:function(t){if(t instanceof e){var r,i=a(t.dependencies);try{for(i.s();!(r=i.n()).done;){var o=r.value;this.dependencies.add(o)}}catch(e){i.e(e)}finally{i.f()}for(var s=0,c=t.length;s0&&void 0!==arguments[0]&&arguments[0],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;this.optimizer.flush();var r=this.length;this._totalLength+=r,this._streamSink.enqueue({fnArray:this.fnArray,argsArray:this.argsArray,lastChunk:e,separateAnnots:t,length:r},1,this._transfers),this.dependencies.clear(),this.fnArray.length=0,this.argsArray.length=0,this.weight=0,this.optimizer.reset()}}],[{key:"CHUNK_SIZE",get:function(){return(0,n.shadow)(this,"CHUNK_SIZE",1e3)}},{key:"CHUNK_SIZE_ABOUT",get:function(){return(0,n.shadow)(this,"CHUNK_SIZE_ABOUT",this.CHUNK_SIZE-5)}}]),e}();t.OperatorList=v},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.PDFImage=void 0;var n=r(2),a=r(193),i=r(136),o=r(143),s=r(148),c=r(156),u=r(159),l=r(134);function f(e){return f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},f(e)}function h(){h=function(){return e};var e={},t=Object.prototype,r=t.hasOwnProperty,n=Object.defineProperty||function(e,t,r){e[t]=r.value},a="function"==typeof Symbol?Symbol:{},i=a.iterator||"@@iterator",o=a.asyncIterator||"@@asyncIterator",s=a.toStringTag||"@@toStringTag";function c(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{c({},"")}catch(e){c=function(e,t,r){return e[t]=r}}function u(e,t,r,a){var i=t&&t.prototype instanceof p?t:p,o=Object.create(i.prototype),s=new F(a||[]);return n(o,"_invoke",{value:x(e,r,s)}),o}function l(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}e.wrap=u;var d={};function p(){}function g(){}function v(){}var y={};c(y,i,(function(){return this}));var m=Object.getPrototypeOf,b=m&&m(m(P([])));b&&b!==t&&r.call(b,i)&&(y=b);var w=v.prototype=p.prototype=Object.create(y);function k(e){["next","throw","return"].forEach((function(t){c(e,t,(function(e){return this._invoke(t,e)}))}))}function S(e,t){function a(n,i,o,s){var c=l(e[n],e,i);if("throw"!==c.type){var u=c.arg,h=u.value;return h&&"object"==f(h)&&r.call(h,"__await")?t.resolve(h.__await).then((function(e){a("next",e,o,s)}),(function(e){a("throw",e,o,s)})):t.resolve(h).then((function(e){u.value=e,o(u)}),(function(e){return a("throw",e,o,s)}))}s(c.arg)}var i;n(this,"_invoke",{value:function(e,r){function n(){return new t((function(t,n){a(e,r,t,n)}))}return i=i?i.then(n,n):n()}})}function x(e,t,r){var n="suspendedStart";return function(a,i){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===a)throw i;return{value:void 0,done:!0}}for(r.method=a,r.arg=i;;){var o=r.delegate;if(o){var s=O(o,r);if(s){if(s===d)continue;return s}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var c=l(e,t,r);if("normal"===c.type){if(n=r.done?"completed":"suspendedYield",c.arg===d)continue;return{value:c.arg,done:r.done}}"throw"===c.type&&(n="completed",r.method="throw",r.arg=c.arg)}}}function O(e,t){var r=t.method,n=e.iterator[r];if(void 0===n)return t.delegate=null,"throw"===r&&e.iterator.return&&(t.method="return",t.arg=void 0,O(e,t),"throw"===t.method)||"return"!==r&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+r+"' method")),d;var a=l(n,e.iterator,t.arg);if("throw"===a.type)return t.method="throw",t.arg=a.arg,t.delegate=null,d;var i=a.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,d):i:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,d)}function A(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function C(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function F(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(A,this),this.reset(!0)}function P(e){if(e){var t=e[i];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var n=-1,a=function t(){for(;++n=0;--a){var i=this.tryEntries[a],o=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var s=r.call(i,"catchLoc"),c=r.call(i,"finallyLoc");if(s&&c){if(this.prev=0;--n){var a=this.tryEntries[n];if(a.tryLoc<=this.prev&&r.call(a,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),C(r),d}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var a=n.arg;C(r)}return a}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:P(e),resultName:t,nextLoc:r},"next"===this.method&&(this.arg=void 0),d}},e}function d(e,t,r,n,a,i,o){try{var s=e[i](o),c=s.value}catch(e){return void r(e)}s.done?t(c):Promise.resolve(c).then(n,a)}function p(e,t){for(var r=0;rn&&(e=n),e}function v(e,t,r,n,a,i){var o,s=a*i;o=t<=8?new Uint8Array(s):t<=16?new Uint16Array(s):new Uint32Array(s);var c,u,l,f,h=r/a,d=n/i,p=0,g=new Uint16Array(a),v=r;for(c=0;c0&&Number.isInteger(s.height)&&s.height>0&&(s.width!==A||s.height!==C)&&((0,n.warn)("PDFImage - using the Width/Height of the image data, rather than the image dictionary."),A=s.width,C=s.height),A<1||C<1)throw new n.FormatError("Invalid image width: ".concat(A," or height: ").concat(C));this.width=A,this.height=C,this.interpolate=k.get("I","Interpolate"),this.imageMask=k.get("IM","ImageMask")||!1,this.matte=k.get("Matte")||!1;var F=s.bitsPerComponent;if(!F&&!(F=k.get("BPC","BitsPerComponent"))){if(!this.imageMask)throw new n.FormatError("Bits per component missing in image: ".concat(this.imageMask));F=1}if(this.bpc=F,!this.imageMask){var P=k.getRaw("CS")||k.getRaw("ColorSpace");if(!P)switch((0,n.info)("JPX images (which do not require color spaces)"),s.numComps){case 1:P=l.Name.get("DeviceGray");break;case 3:P=l.Name.get("DeviceRGB");break;case 4:P=l.Name.get("DeviceCMYK");break;default:throw new Error("JPX images with ".concat(s.numComps," color components not supported."))}this.colorSpace=o.ColorSpace.parse({cs:P,xref:r,resources:f?a:null,pdfFunctionFactory:m,localColorSpaceCache:b}),this.numComps=this.colorSpace.numComps}if(this.decode=k.getArray("D","Decode"),this.needsDecode=!1,this.decode&&(this.colorSpace&&!this.colorSpace.isDefaultDecode(this.decode,F)||y&&!o.ColorSpace.isDefaultDecode(this.decode,1))){this.needsDecode=!0;var T=(1<>7&1,r[h+1]=u>>6&1,r[h+2]=u>>5&1,r[h+3]=u>>4&1,r[h+4]=u>>3&1,r[h+5]=u>>2&1,r[h+6]=u>>1&1,r[h+7]=1&u,h+=8;if(h>=1}else{var y=0;for(u=0,h=0,c=o;h>m;b<0?b=0:b>f&&(b=f),r[h]=b,u&=(1<p[w+1]){y=255;break}}s[l]=y}}if(s)for(l=0,h=3,f=r*i;l0&&void 0!==arguments[0]&&arguments[0],t=this.drawWidth,r=this.drawHeight,a={width:t,height:r,interpolate:this.interpolate,kind:0,data:null},i=this.numComps,o=this.width,s=this.height,u=this.bpc,l=o*i*u+7>>3;if(!e){var f;if("DeviceGray"===this.colorSpace.name&&1===u?f=n.ImageKind.GRAYSCALE_1BPP:"DeviceRGB"!==this.colorSpace.name||8!==u||this.needsDecode||(f=n.ImageKind.RGB_24BPP),f&&!this.smask&&!this.mask&&t===o&&r===s){if(a.kind=f,a.data=this.getImageBytes(s*l,{}),this.needsDecode){(0,n.assert)(f===n.ImageKind.GRAYSCALE_1BPP,"PDFImage.createImageData: The image must be grayscale.");for(var h=a.data,d=0,p=h.length;d>3,u=this.getImageBytes(o*c,{internal:!0}),l=this.getComponents(u);if(1!==s){this.needsDecode&&this.decodeBuffer(l),a=i*o;var f=255/((1<>3)*i,l=n.byteLength;if(!o||s&&u!==l?s?((t=new Uint8Array(u)).set(n),t.fill(255,l)):t=new Uint8Array(n):t=n,s)for(r=0;r{Object.defineProperty(t,"__esModule",{value:!0}),t.applyMaskImageData=function(e){var t,r=e.src,i=e.srcPos,o=void 0===i?0:i,s=e.dest,c=e.destPos,u=void 0===c?0:c,l=e.width,f=e.height,h=e.inverseDecode,d=void 0!==h&&h,p=n.FeatureTest.isLittleEndian?4278190080:255,g=function(e){if(Array.isArray(e))return e}(t=d?[0,p]:[p,0])||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,o,s=[],c=!0,u=!1;try{for(i=(r=r.call(e)).next;!(c=(n=i.call(r)).done)&&(s.push(n.value),2!==s.length);c=!0);}catch(e){u=!0,a=e}finally{try{if(!c&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(u)throw a}}return s}}(t)||function(e,t){if(e){if("string"==typeof e)return a(e,2);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?a(e,2):void 0}}(t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),v=g[0],y=g[1],m=l>>3,b=7&l,w=r.length;s=new Uint32Array(s.buffer);for(var k=0;ke.length)&&(t=e.length);for(var r=0,n=new Array(t);r{Object.defineProperty(t,"__esModule",{value:!0}),t.incrementalUpdate=function(e){var t=e.originalData,r=e.xrefInfo,s=e.newRefs,u=e.xref,h=void 0===u?null:u,g=e.hasXfa,v=void 0!==g&&g,b=e.xfaDatasetsRef,w=void 0===b?null:b,k=e.hasXfaDatasetsEntry,S=void 0!==k&&k,x=e.needAppearances,O=e.acroFormRef,A=void 0===O?null:O,C=e.acroForm,F=void 0===C?null:C,P=e.xfaData,T=void 0===P?null:P;(function(e){var t=e.xref,r=e.acroForm,i=e.acroFormRef,o=e.hasXfa,s=e.hasXfaDatasetsEntry,c=e.xfaDatasetsRef,u=e.needAppearances,f=e.newRefs;if(!o||s||c||(0,n.warn)("XFA - Cannot save it"),u||o&&c){var h,p=new a.Dict(t),g=l(r.getKeys());try{for(g.s();!(h=g.n()).done;){var v=h.value;p.set(v,r.getRaw(v))}}catch(e){g.e(e)}finally{g.f()}if(o&&!s){var y=r.get("XFA").slice();y.splice(2,0,"datasets"),y.splice(3,0,c),p.set("XFA",y)}u&&p.set("NeedAppearances",!0);var m=t.encrypt,b=null;m&&(b=m.createCipherTransform(i.num,i.gen));var w=[];d(i,p,w,b),f.push({ref:i,data:w.join("")})}})({xref:h,acroForm:F,acroFormRef:A,hasXfa:v,hasXfaDatasetsEntry:S,xfaDatasetsRef:w,needAppearances:x,newRefs:s}),v&&function(e){var t=e.xfaData,r=e.xfaDatasetsRef,a=e.newRefs,s=e.xref;null===t&&(t=function(e,t){var r,a=new o.SimpleXMLParser({hasAttributes:!0}).parseFromString(e),s=l(t);try{for(s.s();!(r=s.n()).done;){var c=r.value.xfa;if(c){var u=c.path,f=c.value;if(u){var h=a.documentElement.searchNode((0,i.parseXFAPath)(u),0);h?Array.isArray(f)?h.childNodes=f.map((function(e){return new o.SimpleDOMNode("value",e)})):h.childNodes=[new o.SimpleDOMNode("#text",f)]:(0,n.warn)("Node not found for path: ".concat(u))}}}}catch(e){s.e(e)}finally{s.f()}var d=[];return a.documentElement.dump(d),d.join("")}(s.fetchIfRef(r).getString(),a));var c=s.encrypt;c&&(t=c.createCipherTransform(r.num,r.gen).encryptString(t));var u="".concat(r.num," ").concat(r.gen," obj\\n")+"<< /Type /EmbeddedFile /Length ".concat(t.length,">>\\nstream\\n")+t+"\\nendstream\\nendobj\\n";a.push({ref:r,data:u})}({xfaData:T,xfaDatasetsRef:w,newRefs:s,xref:h});var I,E,j=new a.Dict(null),M=r.newRef,_=t.at(-1);10===_||13===_?(I=[],E=t.length):(I=["\\n"],E=t.length+1),j.set("Size",M.num+1),j.set("Prev",r.startXRef),j.set("Type",a.Name.get("XRef")),null!==r.rootRef&&j.set("Root",r.rootRef),null!==r.infoRef&&j.set("Info",r.infoRef),null!==r.encryptRef&&j.set("Encrypt",r.encryptRef),s.push({ref:M,data:""});var L,R=[[0,1,65535]],N=[0,1],D=0,B=l(s=s.sort((function(e,t){return e.ref.num-t.ref.num})));try{for(B.s();!(L=B.n()).done;){var U=L.value,$=U.ref,X=U.data;D=Math.max(D,E),R.push([1,E,Math.min($.gen,65535)]),E+=X.length,N.push($.num,1),I.push(X)}}catch(e){B.e(e)}finally{B.f()}if(j.set("Index",N),Array.isArray(r.fileIds)&&r.fileIds.length>0){var H=function(e,t){for(var r=Math.floor(Date.now()/1e3),a=t.filename||"",i=[r.toString(),a,e.toString()],o=i.reduce((function(e,t){return e+t.length}),0),s=0,u=Object.values(t.info);s=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return o=e.done,e},e:function(e){s=!0,i=e},f:function(){try{o||null==r.return||r.return()}finally{if(s)throw i}}}}function f(e,t){if(e){if("string"==typeof e)return h(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?h(e,t):void 0}}function h(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r>")}function g(e,t,r){p(e.dict,t,r),t.push(" stream\\n");var n=e.getString();null!==r&&(n=r.encryptString(n)),t.push(n,"\\nendstream")}function v(e,t,r){e instanceof a.Name?t.push("/".concat((0,i.escapePDFName)(e.name))):e instanceof a.Ref?t.push("".concat(e.num," ").concat(e.gen," R")):Array.isArray(e)?function(e,t,r){t.push("[");var n,a=!0,i=l(e);try{for(i.s();!(n=i.n()).done;){var o=n.value;a?a=!1:t.push(" "),v(o,t,r)}}catch(e){i.e(e)}finally{i.f()}t.push("]")}(e,t,r):"string"==typeof e?(null!==r&&(e=r.encryptString(e)),t.push("(".concat((0,i.escapeString)(e),")"))):"number"==typeof e?t.push((0,i.numberToString)(e)):"boolean"==typeof e?t.push(e.toString()):e instanceof a.Dict?p(e,t,r):e instanceof s.BaseStream?g(e,t,r):null===e?t.push("null"):(0,n.warn)("Unhandled value in writer: ".concat(u(e),", please file a bug."))}function y(e,t,r,n){for(var a=t+r-1;a>r-1;a--)n[a]=255&e,e>>=8;return r+t}function m(e,t,r){for(var n=0,a=e.length;n{Object.defineProperty(t,"__esModule",{value:!0}),t.XMLParserErrorCode=t.XMLParserBase=t.SimpleXMLParser=t.SimpleDOMNode=void 0;var n=r(135);function a(e,t){return a=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},a(e,t)}function i(e){return i=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},i(e)}function o(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=c(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,a=function(){};return{s:a,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return o=e.done,e},e:function(e){s=!0,i=e},f:function(){try{o||null==r.return||r.return()}finally{if(s)throw i}}}}function s(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,o,s=[],c=!0,u=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){u=!0,a=e}finally{try{if(!c&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(u)throw a}}return s}}(e,t)||c(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function c(e,t){if(e){if("string"==typeof e)return u(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?u(e,t):void 0}}function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r";case"amp":return"&";case"quot":return'"';case"apos":return"'"}return t.onResolveEntity(r)}))}},{key:"_parseContent",value:function(e,t){var r=[],n=t;function a(){for(;n"!==e[n]&&"/"!==e[n];)++n;var i=e.substring(t,n);for(a();n"!==e[n]&&"/"!==e[n]&&"?"!==e[n];){a();for(var o,s="";n"!==e[r]&&"?"!==e[r]&&"/"!==e[r];)++r;var n=e.substring(t,r);!function(){for(;r"!==e[r+1]);)++r;return{name:n,value:e.substring(a,r),parsed:r-t}}},{key:"parseXml",value:function(e){for(var t=0;t",r))<0)return void this.onError(p.UnterminatedElement);this.onEndElement(e.substring(r,n)),r=n+1;break;case"?":++r;var a=this._parseProcessingInstruction(e,r);if("?>"!==e.substring(r+a.parsed,r+a.parsed+2))return void this.onError(p.UnterminatedXmlDeclaration);this.onPi(a.name,a.value),r+=a.parsed+2;break;case"!":if("--"===e.substring(r+1,r+3)){if((n=e.indexOf("--\\x3e",r+3))<0)return void this.onError(p.UnterminatedComment);this.onComment(e.substring(r+3,n)),r=n+3}else if("[CDATA["===e.substring(r+1,r+8)){if((n=e.indexOf("]]>",r+8))<0)return void this.onError(p.UnterminatedCdat);this.onCdata(e.substring(r+8,n)),r=n+3}else{if("DOCTYPE"!==e.substring(r+1,r+8))return void this.onError(p.MalformedElement);var i=e.indexOf("[",r+8),o=!1;if((n=e.indexOf(">",r+8))<0)return void this.onError(p.UnterminatedDoctypeDeclaration);if(i>0&&n>i){if((n=e.indexOf("]>",r+8))<0)return void this.onError(p.UnterminatedDoctypeDeclaration);o=!0}var s=e.substring(r+8,n+(o?1:0));this.onDoctype(s),r=n+(o?2:1)}break;default:var c=this._parseContent(e,r);if(null===c)return void this.onError(p.MalformedElement);var u=!1;if("/>"===e.substring(r+c.parsed,r+c.parsed+2))u=!0;else if(">"!==e.substring(r+c.parsed,r+c.parsed+1))return void this.onError(p.UnterminatedElement);this.onBeginElement(c.name,c.attributes,u),r+=c.parsed+(u?2:1)}}else{for(;r0}},{key:"searchNode",value:function(e,t){if(t>=e.length)return this;for(var r=e[t],n=[],a=this;;){if(r.name===a.nodeName){if(0!==r.pos){if(0===n.length)return null;var i,c=0,u=o(s(n.pop(),1)[0].childNodes);try{for(u.s();!(i=u.n()).done;){var l=i.value;if(r.name===l.nodeName){if(c===r.pos)return l.searchNode(e,t+1);c++}}}catch(e){u.e(e)}finally{u.f()}return a.searchNode(e,t+1)}var f=a.searchNode(e,t+1);if(null!==f)return f}if(a.childNodes&&0!==a.childNodes.length)n.push([a,0]),a=a.childNodes[0];else{if(0===n.length)return null;for(;0!==n.length;){var h=s(n.pop(),2),d=h[0],p=h[1]+1;if(p");var i,s=o(this.childNodes);try{for(s.s();!(i=s.n()).done;)i.value.dump(e)}catch(e){s.e(e)}finally{s.f()}e.push(""))}else this.nodeValue?e.push(">".concat((0,n.encodeToXmlString)(this.nodeValue),"")):e.push("/>")}else e.push((0,n.encodeToXmlString)(this.nodeValue))}}]),e}();t.SimpleDOMNode=y;var m=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&a(e,t)}(c,e);var t,r,n=(t=c,r=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,n=i(t);if(r){var a=i(this).constructor;e=Reflect.construct(n,arguments,a)}else e=n.apply(this,arguments);return function(e,t){if(t&&("object"===l(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(this,e)});function c(e){var t,r=e.hasAttributes,a=void 0!==r&&r,i=e.lowerCaseName,o=void 0!==i&&i;return f(this,c),(t=n.call(this))._currentFragment=null,t._stack=null,t._errorCode=p.NoError,t._hasAttributes=a,t._lowerCaseName=o,t}return d(c,[{key:"parseFromString",value:function(e){if(this._currentFragment=[],this._stack=[],this._errorCode=p.NoError,this.parseXml(e),this._errorCode===p.NoError){var t=s(this._currentFragment,1)[0];if(t)return{documentElement:t}}}},{key:"onText",value:function(e){if(!function(e){for(var t=0,r=e.length;t{Object.defineProperty(t,"__esModule",{value:!0}),t.calculateSHA256=t.calculateMD5=t.PDF20=t.PDF17=t.CipherTransformFactory=t.ARCFourCipher=t.AES256Cipher=t.AES128Cipher=void 0,t.calculateSHA384=k,t.calculateSHA512=void 0;var n=r(2),a=r(134),i=r(197);function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&s(e,t)}function s(e,t){return s=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},s(e,t)}function c(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,n=u(e);if(t){var a=u(this).constructor;r=Reflect.construct(n,arguments,a)}else r=n.apply(this,arguments);return function(e,t){if(t&&("object"===l(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(this,r)}}function u(e){return u=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},u(e)}function l(e){return l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},l(e)}function f(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function h(e,t){for(var r=0;r>5&255,l[n++]=r>>13&255,l[n++]=r>>21&255,l[n++]=r>>>29&255,l[n++]=0,l[n++]=0,l[n++]=0;var h=new Int32Array(16);for(n=0;n>>32-x)|0,d=k}i=i+d|0,o=o+p|0,s=s+y|0,c=c+m|0}return new Uint8Array([255&i,i>>8&255,i>>16&255,i>>>24&255,255&o,o>>8&255,o>>16&255,o>>>24&255,255&s,s>>8&255,s>>16&255,s>>>24&255,255&c,c>>8&255,c>>16&255,c>>>24&255])});t.calculateMD5=y;var m=function(){function e(t,r){f(this,e),this.high=0|t,this.low=0|r}return d(e,[{key:"and",value:function(e){this.high&=e.high,this.low&=e.low}},{key:"xor",value:function(e){this.high^=e.high,this.low^=e.low}},{key:"or",value:function(e){this.high|=e.high,this.low|=e.low}},{key:"shiftRight",value:function(e){e>=32?(this.low=this.high>>>e-32|0,this.high=0):(this.low=this.low>>>e|this.high<<32-e,this.high=this.high>>>e|0)}},{key:"shiftLeft",value:function(e){e>=32?(this.high=this.low<>>32-e,this.low<<=e)}},{key:"rotateRight",value:function(e){var t,r;32&e?(r=this.low,t=this.high):(t=this.low,r=this.high),e&=31,this.low=t>>>e|r<<32-e,this.high=r>>>e|t<<32-e}},{key:"not",value:function(){this.high=~this.high,this.low=~this.low}},{key:"add",value:function(e){var t=(this.low>>>0)+(e.low>>>0),r=(this.high>>>0)+(e.high>>>0);t>4294967295&&(r+=1),this.low=0|t,this.high=0|r}},{key:"copyTo",value:function(e,t){e[t]=this.high>>>24&255,e[t+1]=this.high>>16&255,e[t+2]=this.high>>8&255,e[t+3]=255&this.high,e[t+4]=this.low>>>24&255,e[t+5]=this.low>>16&255,e[t+6]=this.low>>8&255,e[t+7]=255&this.low}},{key:"assign",value:function(e){this.high=e.high,this.low=e.low}}]),e}(),b=function(){function e(e,t){return e>>>t|e<<32-t}function t(e,t,r){return e&t^~e&r}function r(e,t,r){return e&t^e&r^t&r}function n(t){return e(t,2)^e(t,13)^e(t,22)}function a(t){return e(t,6)^e(t,11)^e(t,25)}function i(t){return e(t,7)^e(t,18)^t>>>3}var o=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];return function(s,c,u){var l,f,h=1779033703,d=3144134277,p=1013904242,g=2773480762,v=1359893119,y=2600822924,m=528734635,b=1541459225,w=64*Math.ceil((u+9)/64),k=new Uint8Array(w);for(l=0;l>>29&255,k[l++]=u>>21&255,k[l++]=u>>13&255,k[l++]=u>>5&255,k[l++]=u<<3&255;var x,O=new Uint32Array(64);for(l=0;l>>10)+O[f-7]+i(O[f-15])+O[f-16];var A=h,C=d,F=p,P=g,T=v,I=y,E=m,j=b,M=void 0,_=void 0;for(f=0;f<64;++f)M=j+a(T)+t(T,I,E)+o[f]+O[f],_=n(A)+r(A,C,F),j=E,E=I,I=T,T=P+M|0,P=F,F=C,C=A,A=M+_|0;h=h+A|0,d=d+C|0,p=p+F|0,g=g+P|0,v=v+T|0,y=y+I|0,m=m+E|0,b=b+j|0}return new Uint8Array([h>>24&255,h>>16&255,h>>8&255,255&h,d>>24&255,d>>16&255,d>>8&255,255&d,p>>24&255,p>>16&255,p>>8&255,255&p,g>>24&255,g>>16&255,g>>8&255,255&g,v>>24&255,v>>16&255,v>>8&255,255&v,y>>24&255,y>>16&255,y>>8&255,255&y,m>>24&255,m>>16&255,m>>8&255,255&m,b>>24&255,b>>16&255,b>>8&255,255&b])}}();t.calculateSHA256=b;var w=function(){function e(e,t,r,n,a){e.assign(t),e.and(r),a.assign(t),a.not(),a.and(n),e.xor(a)}function t(e,t,r,n,a){e.assign(t),e.and(r),a.assign(t),a.and(n),e.xor(a),a.assign(r),a.and(n),e.xor(a)}function r(e,t,r){e.assign(t),e.rotateRight(28),r.assign(t),r.rotateRight(34),e.xor(r),r.assign(t),r.rotateRight(39),e.xor(r)}function n(e,t,r){e.assign(t),e.rotateRight(14),r.assign(t),r.rotateRight(18),e.xor(r),r.assign(t),r.rotateRight(41),e.xor(r)}function a(e,t,r){e.assign(t),e.rotateRight(1),r.assign(t),r.rotateRight(8),e.xor(r),r.assign(t),r.shiftRight(7),e.xor(r)}function i(e,t,r){e.assign(t),e.rotateRight(19),r.assign(t),r.rotateRight(61),e.xor(r),r.assign(t),r.shiftRight(6),e.xor(r)}var o=[new m(1116352408,3609767458),new m(1899447441,602891725),new m(3049323471,3964484399),new m(3921009573,2173295548),new m(961987163,4081628472),new m(1508970993,3053834265),new m(2453635748,2937671579),new m(2870763221,3664609560),new m(3624381080,2734883394),new m(310598401,1164996542),new m(607225278,1323610764),new m(1426881987,3590304994),new m(1925078388,4068182383),new m(2162078206,991336113),new m(2614888103,633803317),new m(3248222580,3479774868),new m(3835390401,2666613458),new m(4022224774,944711139),new m(264347078,2341262773),new m(604807628,2007800933),new m(770255983,1495990901),new m(1249150122,1856431235),new m(1555081692,3175218132),new m(1996064986,2198950837),new m(2554220882,3999719339),new m(2821834349,766784016),new m(2952996808,2566594879),new m(3210313671,3203337956),new m(3336571891,1034457026),new m(3584528711,2466948901),new m(113926993,3758326383),new m(338241895,168717936),new m(666307205,1188179964),new m(773529912,1546045734),new m(1294757372,1522805485),new m(1396182291,2643833823),new m(1695183700,2343527390),new m(1986661051,1014477480),new m(2177026350,1206759142),new m(2456956037,344077627),new m(2730485921,1290863460),new m(2820302411,3158454273),new m(3259730800,3505952657),new m(3345764771,106217008),new m(3516065817,3606008344),new m(3600352804,1432725776),new m(4094571909,1467031594),new m(275423344,851169720),new m(430227734,3100823752),new m(506948616,1363258195),new m(659060556,3750685593),new m(883997877,3785050280),new m(958139571,3318307427),new m(1322822218,3812723403),new m(1537002063,2003034995),new m(1747873779,3602036899),new m(1955562222,1575990012),new m(2024104815,1125592928),new m(2227730452,2716904306),new m(2361852424,442776044),new m(2428436474,593698344),new m(2756734187,3733110249),new m(3204031479,2999351573),new m(3329325298,3815920427),new m(3391569614,3928383900),new m(3515267271,566280711),new m(3940187606,3454069534),new m(4118630271,4000239992),new m(116418474,1914138554),new m(174292421,2731055270),new m(289380356,3203993006),new m(460393269,320620315),new m(685471733,587496836),new m(852142971,1086792851),new m(1017036298,365543100),new m(1126000580,2618297676),new m(1288033470,3409855158),new m(1501505948,4234509866),new m(1607167915,987167468),new m(1816402316,1246189591)];return function(s,c,u){var l,f,h,d,p,g,v,y,b=arguments.length>3&&void 0!==arguments[3]&&arguments[3];b?(l=new m(3418070365,3238371032),f=new m(1654270250,914150663),h=new m(2438529370,812702999),d=new m(355462360,4144912697),p=new m(1731405415,4290775857),g=new m(2394180231,1750603025),v=new m(3675008525,1694076839),y=new m(1203062813,3204075428)):(l=new m(1779033703,4089235720),f=new m(3144134277,2227873595),h=new m(1013904242,4271175723),d=new m(2773480762,1595750129),p=new m(1359893119,2917565137),g=new m(2600822924,725511199),v=new m(528734635,4215389547),y=new m(1541459225,327033209));var w,k,S=128*Math.ceil((u+17)/128),x=new Uint8Array(S);for(w=0;w>>29&255,x[w++]=u>>21&255,x[w++]=u>>13&255,x[w++]=u>>5&255,x[w++]=u<<3&255;var A=new Array(80);for(w=0;w<80;w++)A[w]=new m(0,0);var C,F,P=new m(0,0),T=new m(0,0),I=new m(0,0),E=new m(0,0),j=new m(0,0),M=new m(0,0),_=new m(0,0),L=new m(0,0),R=new m(0,0),N=new m(0,0),D=new m(0,0),B=new m(0,0);for(w=0;w=1;--c){r=i[13],i[13]=i[9],i[9]=i[5],i[5]=i[1],i[1]=r,r=i[14],n=i[10],i[14]=i[6],i[10]=i[2],i[6]=r,i[2]=n,r=i[15],n=i[11],a=i[7],i[15]=i[3],i[11]=r,i[7]=n,i[3]=a;for(var u=0;u<16;++u)i[u]=this._inv_s[i[u]];for(var l=0,f=16*c;l<16;++l,++f)i[l]^=t[f];for(var h=0;h<16;h+=4){var d=this._mix[i[h]],p=this._mix[i[h+1]],g=this._mix[i[h+2]],v=this._mix[i[h+3]];r=d^p>>>8^p<<24^g>>>16^g<<16^v>>>24^v<<8,i[h]=r>>>24&255,i[h+1]=r>>16&255,i[h+2]=r>>8&255,i[h+3]=255&r}}r=i[13],i[13]=i[9],i[9]=i[5],i[5]=i[1],i[1]=r,r=i[14],n=i[10],i[14]=i[6],i[10]=i[2],i[6]=r,i[2]=n,r=i[15],n=i[11],a=i[7],i[15]=i[3],i[11]=r,i[7]=n,i[3]=a;for(var y=0;y<16;++y)i[y]=this._inv_s[i[y]],i[y]^=t[y];return i}},{key:"_encrypt",value:function(e,t){var r,n,a,i=this._s,o=new Uint8Array(16);o.set(e);for(var s=0;s<16;++s)o[s]^=t[s];for(var c=1;c=p;--d)if(f[d]!==h){h=0;break}l-=h,i[i.length-1]=f.subarray(0,16-h)}}for(var g=new Uint8Array(l),v=0,y=0,m=i.length;v2&&void 0!==arguments[2]?arguments[2]:null,n=e.length,a=this.buffer,i=this.bufferPosition;if(r)this.iv=r;else{for(var o=0;i<16&&o=256&&(s=255&(27^s)));for(var l=0;l<4;++l)r[c]=n^=r[c-32],r[++c]=a^=r[c-32],r[++c]=i^=r[c-32],r[++c]=o^=r[c-32],c++}return r}}]),r}(x);t.AES256Cipher=A;var C=function(){function e(){f(this,e)}return d(e,[{key:"checkOwnerPassword",value:function(e,t,r,a){var i=new Uint8Array(e.length+56);i.set(e,0),i.set(t,e.length),i.set(r,e.length+t.length);var o=b(i,0,i.length);return(0,n.isArrayEqual)(o,a)}},{key:"checkUserPassword",value:function(e,t,r){var a=new Uint8Array(e.length+8);a.set(e,0),a.set(t,e.length);var i=b(a,0,a.length);return(0,n.isArrayEqual)(i,r)}},{key:"getOwnerKey",value:function(e,t,r,n){var a=new Uint8Array(e.length+56);a.set(e,0),a.set(t,e.length),a.set(r,e.length+t.length);var i=b(a,0,a.length);return new A(i).decryptBlock(n,!1,new Uint8Array(16))}},{key:"getUserKey",value:function(e,t,r){var n=new Uint8Array(e.length+8);n.set(e,0),n.set(t,e.length);var a=b(n,0,n.length);return new A(a).decryptBlock(r,!1,new Uint8Array(16))}}]),e}();t.PDF17=C;var F=function(){function e(e,t,r){for(var n=b(t,0,t.length).subarray(0,32),a=[0],i=0;i<64||a.at(-1)>i-32;){var o=e.length+n.length+r.length,s=new Uint8Array(o),c=0;s.set(e,c),c+=e.length,s.set(n,c),c+=n.length,s.set(r,c);for(var u=new Uint8Array(64*o),l=0,f=0;l<64;l++,f+=o)u.set(s,f);var h=(a=new O(n.subarray(0,16)).encrypt(u,n.subarray(16,32))).slice(0,16).reduce((function(e,t){return e+t}),0)%3;0===h?n=b(a,0,a.length):1===h?n=k(a,0,a.length):2===h&&(n=w(a,0,a.length)),i++}return n.subarray(0,32)}return function(){function t(){f(this,t)}return d(t,[{key:"hash",value:function(t,r,n){return e(t,r,n)}},{key:"checkOwnerPassword",value:function(t,r,a,i){var o=new Uint8Array(t.length+56);o.set(t,0),o.set(r,t.length),o.set(a,t.length+r.length);var s=e(t,o,a);return(0,n.isArrayEqual)(s,i)}},{key:"checkUserPassword",value:function(t,r,a){var i=new Uint8Array(t.length+8);i.set(t,0),i.set(r,t.length);var o=e(t,i,[]);return(0,n.isArrayEqual)(o,a)}},{key:"getOwnerKey",value:function(t,r,n,a){var i=new Uint8Array(t.length+56);i.set(t,0),i.set(r,t.length),i.set(n,t.length+r.length);var o=e(t,i,n);return new A(o).decryptBlock(a,!1,new Uint8Array(16))}},{key:"getUserKey",value:function(t,r,n){var a=new Uint8Array(t.length+8);a.set(t,0),a.set(r,t.length);var i=e(t,a,[]);return new A(i).decryptBlock(n,!1,new Uint8Array(16))}}]),t}()}();t.PDF20=F;var P=function(){function e(t,r){f(this,e),this.StringCipherConstructor=t,this.StreamCipherConstructor=r}return d(e,[{key:"createStream",value:function(e,t){var r=new this.StreamCipherConstructor;return new i.DecryptStream(e,t,(function(e,t){return r.decryptBlock(e,t)}))}},{key:"decryptString",value:function(e){var t=new this.StringCipherConstructor,r=(0,n.stringToBytes)(e);return r=t.decryptBlock(r,!0),(0,n.bytesToString)(r)}},{key:"encryptString",value:function(e){var t=new this.StringCipherConstructor;if(t instanceof x){var r=16-e.length%16;e+=String.fromCharCode(r).repeat(r);var a=new Uint8Array(16);if("undefined"!=typeof crypto)crypto.getRandomValues(a);else for(var i=0;i<16;i++)a[i]=Math.floor(256*Math.random());var o=(0,n.stringToBytes)(e);o=t.encrypt(o,a);var s=new Uint8Array(16+o.length);return s.set(a),s.set(o,16),(0,n.bytesToString)(s)}var c=(0,n.stringToBytes)(e);return c=t.encrypt(c),(0,n.bytesToString)(c)}}]),e}(),T=function(){var e=new Uint8Array([40,191,78,94,78,117,138,65,100,0,78,86,255,250,1,8,46,46,0,182,208,104,62,128,47,12,169,254,100,83,105,122]);function t(t,r,n,a,i,o,s,c){var u,l,f=40+n.length+t.length,h=new Uint8Array(f),d=0;if(r)for(l=Math.min(32,r.length);d>8&255,h[d++]=i>>16&255,h[d++]=i>>>24&255,u=0,l=t.length;u=4&&!c&&(h[d++]=255,h[d++]=255,h[d++]=255,h[d++]=255);var g=y(h,0,d),v=s>>3;if(o>=3)for(u=0;u<50;++u)g=y(g,0,v);var m,b=g.subarray(0,v);if(o>=3){for(d=0;d<32;++d)h[d]=e[d];for(u=0,l=t.length;u3&&void 0!==arguments[3]&&arguments[3],i=new Uint8Array(r.length+9),o=r.length;for(n=0;n>8&255,i[n++]=e>>16&255,i[n++]=255&t,i[n++]=t>>8&255,a&&(i[n++]=115,i[n++]=65,i[n++]=108,i[n++]=84),y(i,0,n).subarray(0,Math.min(r.length+5,16))}function o(e,t,r,o,s){if(!(t instanceof a.Name))throw new n.FormatError("Invalid crypt filter name.");var c,u=e.get(t.name);if(null!=u&&(c=u.get("CFM")),!c||"None"===c.name)return function(){return new S};if("V2"===c.name)return function(){return new p(i(r,o,s,!1))};if("AESV2"===c.name)return function(){return new O(i(r,o,s,!0))};if("AESV3"===c.name)return function(){return new A(s)};throw new n.FormatError("Unknown crypto method")}var s=function(){function s(i,o,c){f(this,s);var u=i.get("Filter");if(!(0,a.isName)(u,"Standard"))throw new n.FormatError("unknown encryption method");this.filterName=u.name,this.dict=i;var l=i.get("V");if(!Number.isInteger(l)||1!==l&&2!==l&&4!==l&&5!==l)throw new n.FormatError("unsupported encryption algorithm");this.algorithm=l;var h=i.get("Length");if(!h)if(l<=3)h=40;else{var d=i.get("CF"),g=i.get("StmF");if(d instanceof a.Dict&&g instanceof a.Name){d.suppressEncryption=!0;var v=d.get(g.name);(h=v&&v.get("Length")||128)<40&&(h<<=3)}}if(!Number.isInteger(h)||h<40||h%8!=0)throw new n.FormatError("invalid key length");var m=(0,n.stringToBytes)(i.get("O")).subarray(0,32),b=(0,n.stringToBytes)(i.get("U")).subarray(0,32),w=i.get("P"),k=i.get("R"),S=(4===l||5===l)&&!1!==i.get("EncryptMetadata");this.encryptMetadata=S;var x,O,A=(0,n.stringToBytes)(o);if(c){if(6===k)try{c=(0,n.utf8StringToString)(c)}catch(e){(0,n.warn)("CipherTransformFactory: Unable to convert UTF8 encoded password.")}x=(0,n.stringToBytes)(c)}if(5!==l)O=t(A,x,m,b,w,k,h,S);else{var P=(0,n.stringToBytes)(i.get("O")).subarray(32,40),T=(0,n.stringToBytes)(i.get("O")).subarray(40,48),I=(0,n.stringToBytes)(i.get("U")).subarray(0,48),E=(0,n.stringToBytes)(i.get("U")).subarray(32,40),j=(0,n.stringToBytes)(i.get("U")).subarray(40,48),M=(0,n.stringToBytes)(i.get("OE")),_=(0,n.stringToBytes)(i.get("UE"));(0,n.stringToBytes)(i.get("Perms")),O=function(e,t,r,n,a,i,o,s,c,u,l,f){if(t){var h=Math.min(127,t.length);t=t.subarray(0,h)}else t=[];var d;return(d=6===e?new F:new C).checkUserPassword(t,s,o)?d.getUserKey(t,c,l):t.length&&d.checkOwnerPassword(t,n,i,r)?d.getOwnerKey(t,a,i,u):null}(k,x,m,P,T,I,b,E,j,M,_)}if(!O&&!c)throw new n.PasswordException("No password given",n.PasswordResponses.NEED_PASSWORD);if(!O&&c){var L=function(t,r,n,a){for(var i=new Uint8Array(32),o=0,s=Math.min(32,t.length);o>3;if(n>=3)for(c=0;c<50;++c)l=y(l,0,l.length);if(n>=3){u=r;var h=new Uint8Array(f);for(c=19;c>=0;c--){for(var d=0;d=4){var R=i.get("CF");R instanceof a.Dict&&(R.suppressEncryption=!0),this.cf=R,this.stmf=i.get("StmF")||r,this.strf=i.get("StrF")||r,this.eff=i.get("EFF")||this.stmf}}return d(s,[{key:"createCipherTransform",value:function(e,t){if(4===this.algorithm||5===this.algorithm)return new P(o(this.cf,this.strf,e,t,this.encryptionKey),o(this.cf,this.stmf,e,t,this.encryptionKey));var r=i(e,t,this.encryptionKey,!1),n=function(){return new p(r)};return new P(n,n)}}]),s}();return s}();t.CipherTransformFactory=T},(e,t,r)=>{function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}function a(e,t){for(var r=0;r0;e=(0,this.decrypt)(e,!t);var r=this.bufferLength,n=r+e.length;this.ensureBuffer(n).set(e,r),this.bufferLength=n}else this.eof=!0}}])&&a(t.prototype,r),Object.defineProperty(t,"prototype",{writable:!1}),l}(r(148).DecodeStream);t.DecryptStream=s},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Catalog=void 0;var n=r(135),a=r(2),i=r(134),o=r(199),s=r(136),c=r(200),u=r(143),l=r(201),f=r(188),h=r(202),d=r(203);function p(e){return p="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},p(e)}function g(){g=function(){return e};var e={},t=Object.prototype,r=t.hasOwnProperty,n=Object.defineProperty||function(e,t,r){e[t]=r.value},a="function"==typeof Symbol?Symbol:{},i=a.iterator||"@@iterator",o=a.asyncIterator||"@@asyncIterator",s=a.toStringTag||"@@toStringTag";function c(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{c({},"")}catch(e){c=function(e,t,r){return e[t]=r}}function u(e,t,r,a){var i=t&&t.prototype instanceof h?t:h,o=Object.create(i.prototype),s=new F(a||[]);return n(o,"_invoke",{value:x(e,r,s)}),o}function l(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}e.wrap=u;var f={};function h(){}function d(){}function v(){}var y={};c(y,i,(function(){return this}));var m=Object.getPrototypeOf,b=m&&m(m(P([])));b&&b!==t&&r.call(b,i)&&(y=b);var w=v.prototype=h.prototype=Object.create(y);function k(e){["next","throw","return"].forEach((function(t){c(e,t,(function(e){return this._invoke(t,e)}))}))}function S(e,t){function a(n,i,o,s){var c=l(e[n],e,i);if("throw"!==c.type){var u=c.arg,f=u.value;return f&&"object"==p(f)&&r.call(f,"__await")?t.resolve(f.__await).then((function(e){a("next",e,o,s)}),(function(e){a("throw",e,o,s)})):t.resolve(f).then((function(e){u.value=e,o(u)}),(function(e){return a("throw",e,o,s)}))}s(c.arg)}var i;n(this,"_invoke",{value:function(e,r){function n(){return new t((function(t,n){a(e,r,t,n)}))}return i=i?i.then(n,n):n()}})}function x(e,t,r){var n="suspendedStart";return function(a,i){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===a)throw i;return{value:void 0,done:!0}}for(r.method=a,r.arg=i;;){var o=r.delegate;if(o){var s=O(o,r);if(s){if(s===f)continue;return s}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var c=l(e,t,r);if("normal"===c.type){if(n=r.done?"completed":"suspendedYield",c.arg===f)continue;return{value:c.arg,done:r.done}}"throw"===c.type&&(n="completed",r.method="throw",r.arg=c.arg)}}}function O(e,t){var r=t.method,n=e.iterator[r];if(void 0===n)return t.delegate=null,"throw"===r&&e.iterator.return&&(t.method="return",t.arg=void 0,O(e,t),"throw"===t.method)||"return"!==r&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+r+"' method")),f;var a=l(n,e.iterator,t.arg);if("throw"===a.type)return t.method="throw",t.arg=a.arg,t.delegate=null,f;var i=a.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,f):i:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,f)}function A(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function C(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function F(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(A,this),this.reset(!0)}function P(e){if(e){var t=e[i];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var n=-1,a=function t(){for(;++n=0;--a){var i=this.tryEntries[a],o=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var s=r.call(i,"catchLoc"),c=r.call(i,"finallyLoc");if(s&&c){if(this.prev=0;--n){var a=this.tryEntries[n];if(a.tryLoc<=this.prev&&r.call(a,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),C(r),f}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var a=n.arg;C(r)}return a}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:P(e),resultName:t,nextLoc:r},"next"===this.method&&(this.arg=void 0),f}},e}function v(e,t,r,n,a,i,o){try{var s=e[i](o),c=s.value}catch(e){return void r(e)}s.done?t(c):Promise.resolve(c).then(n,a)}function y(e){return function(){var t=this,r=arguments;return new Promise((function(n,a){var i=e.apply(t,r);function o(e){v(i,n,a,o,s,"next",e)}function s(e){v(i,n,a,o,s,"throw",e)}o(void 0)}))}}function m(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,o,s=[],c=!0,u=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){u=!0,a=e}finally{try{if(!c&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(u)throw a}}return s}}(e,t)||w(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function b(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=w(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,a=function(){};return{s:a,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return o=e.done,e},e:function(e){s=!0,i=e},f:function(){try{o||null==r.return||r.return()}finally{if(s)throw i}}}}function w(e,t){if(e){if("string"==typeof e)return k(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?k(e,t):void 0}}function k(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r0&&(e=t)}catch(e){if(e instanceof n.MissingDataException)throw e;(0,a.info)("Cannot fetch Collection entry; assuming no collection is present.")}return(0,a.shadow)(this,"collection",e)}},{key:"acroForm",get:function(){var e=null;try{var t=this._catDict.get("AcroForm");t instanceof i.Dict&&t.size>0&&(e=t)}catch(e){if(e instanceof n.MissingDataException)throw e;(0,a.info)("Cannot fetch AcroForm entry; assuming no forms are present.")}return(0,a.shadow)(this,"acroForm",e)}},{key:"acroFormRef",get:function(){var e=this._catDict.getRaw("AcroForm");return(0,a.shadow)(this,"acroFormRef",e instanceof i.Ref?e:null)}},{key:"metadata",get:function(){var e=this._catDict.getRaw("Metadata");if(!(e instanceof i.Ref))return(0,a.shadow)(this,"metadata",null);var t=null;try{var r=!(this.xref.encrypt&&this.xref.encrypt.encryptMetadata),o=this.xref.fetch(e,r);if(o instanceof s.BaseStream&&o.dict instanceof i.Dict){var c=o.dict.get("Type"),u=o.dict.get("Subtype");if((0,i.isName)(c,"Metadata")&&(0,i.isName)(u,"XML")){var l=(0,a.stringToUTF8String)(o.getString());l&&(t=new h.MetadataParser(l).serializable)}}}catch(e){if(e instanceof n.MissingDataException)throw e;(0,a.info)('Skipping invalid Metadata: "'.concat(e,'".'))}return(0,a.shadow)(this,"metadata",t)}},{key:"markInfo",get:function(){var e=null;try{e=this._readMarkInfo()}catch(e){if(e instanceof n.MissingDataException)throw e;(0,a.warn)("Unable to read mark info.")}return(0,a.shadow)(this,"markInfo",e)}},{key:"_readMarkInfo",value:function(){var e=this._catDict.get("MarkInfo");if(!(e instanceof i.Dict))return null;var t={Marked:!1,UserProperties:!1,Suspects:!1};for(var r in t){var n=e.get(r);"boolean"==typeof n&&(t[r]=n)}return t}},{key:"structTreeRoot",get:function(){var e=null;try{e=this._readStructTreeRoot()}catch(e){if(e instanceof n.MissingDataException)throw e;(0,a.warn)("Unable read to structTreeRoot info.")}return(0,a.shadow)(this,"structTreeRoot",e)}},{key:"_readStructTreeRoot",value:function(){var e=this._catDict.get("StructTreeRoot");if(!(e instanceof i.Dict))return null;var t=new d.StructTreeRoot(e);return t.init(),t}},{key:"toplevelPagesDict",get:function(){var e=this._catDict.get("Pages");if(!(e instanceof i.Dict))throw new a.FormatError("Invalid top-level pages dictionary.");return(0,a.shadow)(this,"toplevelPagesDict",e)}},{key:"documentOutline",get:function(){var e=null;try{e=this._readDocumentOutline()}catch(e){if(e instanceof n.MissingDataException)throw e;(0,a.warn)("Unable to read document outline.")}return(0,a.shadow)(this,"documentOutline",e)}},{key:"_readDocumentOutline",value:function(){var t=this._catDict.get("Outlines");if(!(t instanceof i.Dict))return null;if(!((t=t.getRaw("First"))instanceof i.Ref))return null;var r={items:[]},n=[{obj:t,parent:r}],o=new i.RefSet;o.put(t);for(var s=this.xref,c=new Uint8ClampedArray(3);n.length>0;){var l=n.shift(),f=s.fetchIfRef(l.obj);if(null!==f){if(!f.has("Title"))throw new a.FormatError("Invalid outline item encountered.");var h={url:null,dest:null,action:null};e.parseDestDictionary({destDict:f,resultObj:h,docBaseUrl:this.pdfManager.docBaseUrl,docAttachments:this.attachments});var d=f.get("Title"),p=f.get("F")||0,g=f.getArray("C"),v=f.get("Count"),y=c;!Array.isArray(g)||3!==g.length||0===g[0]&&0===g[1]&&0===g[2]||(y=u.ColorSpace.singletons.rgb.getRgb(g,0));var m={action:h.action,attachment:h.attachment,dest:h.dest,url:h.url,unsafeUrl:h.unsafeUrl,newWindow:h.newWindow,setOCGState:h.setOCGState,title:(0,a.stringToPDFString)(d),color:y,count:Number.isInteger(v)?v:void 0,bold:!!(2&p),italic:!!(1&p),items:[]};l.parent.items.push(m),(t=f.getRaw("First"))instanceof i.Ref&&!o.has(t)&&(n.push({obj:t,parent:m}),o.put(t)),(t=f.getRaw("Next"))instanceof i.Ref&&!o.has(t)&&(n.push({obj:t,parent:l.parent}),o.put(t))}}return r.items.length>0?r.items:null}},{key:"permissions",get:function(){var e=null;try{e=this._readPermissions()}catch(e){if(e instanceof n.MissingDataException)throw e;(0,a.warn)("Unable to read permissions.")}return(0,a.shadow)(this,"permissions",e)}},{key:"_readPermissions",value:function(){var e=this.xref.trailer.get("Encrypt");if(!(e instanceof i.Dict))return null;var t=e.get("P");if("number"!=typeof t)return null;t+=Math.pow(2,32);var r=[];for(var n in a.PermissionFlag){var o=a.PermissionFlag[n];t&o&&r.push(o)}return r}},{key:"optionalContentConfig",get:function(){var e=null;try{var t=this._catDict.get("OCProperties");if(!t)return(0,a.shadow)(this,"optionalContentConfig",null);var r=t.get("D");if(!r)return(0,a.shadow)(this,"optionalContentConfig",null);var o=t.get("OCGs");if(!Array.isArray(o))return(0,a.shadow)(this,"optionalContentConfig",null);var s,c=[],u=[],l=b(o);try{for(l.s();!(s=l.n()).done;){var f=s.value;if(f instanceof i.Ref){u.push(f);var h=this.xref.fetchIfRef(f);c.push({id:f.toString(),name:"string"==typeof h.get("Name")?(0,a.stringToPDFString)(h.get("Name")):null,intent:"string"==typeof h.get("Intent")?(0,a.stringToPDFString)(h.get("Intent")):null})}}}catch(e){l.e(e)}finally{l.f()}(e=this._readOptionalContentConfig(r,u)).groups=c}catch(e){if(e instanceof n.MissingDataException)throw e;(0,a.warn)("Unable to read optional content config: ".concat(e))}return(0,a.shadow)(this,"optionalContentConfig",e)}},{key:"_readOptionalContentConfig",value:function(e,t){function r(e){var r=[];if(Array.isArray(e)){var n,a=b(e);try{for(a.s();!(n=a.n()).done;){var o=n.value;o instanceof i.Ref&&t.includes(o)&&r.push(o.toString())}}catch(e){a.e(e)}finally{a.f()}}return r}function n(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(!Array.isArray(e))return null;var n,a=[],s=b(e);try{for(s.s();!(n=s.n()).done;){var u=n.value;if(u instanceof i.Ref&&t.includes(u))c.put(u),a.push(u.toString());else{var l=o(u,r);l&&a.push(l)}}}catch(e){s.e(e)}finally{s.f()}if(r>0)return a;var f,h=[],d=b(t);try{for(d.s();!(f=d.n()).done;){var p=f.value;c.has(p)||h.push(p.toString())}}catch(e){d.e(e)}finally{d.f()}return h.length&&a.push({name:null,order:h}),a}function o(e,t){if(++t>u)return(0,a.warn)("parseNestedOrder - reached MAX_NESTED_LEVELS."),null;var r=s.fetchIfRef(e);if(!Array.isArray(r))return null;var i=s.fetchIfRef(r[0]);if("string"!=typeof i)return null;var o=n(r.slice(1),t);return o&&o.length?{name:(0,a.stringToPDFString)(i),order:o}:null}var s=this.xref,c=new i.RefSet,u=10;return{name:"string"==typeof e.get("Name")?(0,a.stringToPDFString)(e.get("Name")):null,creator:"string"==typeof e.get("Creator")?(0,a.stringToPDFString)(e.get("Creator")):null,baseState:e.get("BaseState")instanceof i.Name?e.get("BaseState").name:null,on:r(e.get("ON")),off:r(e.get("OFF")),order:n(e.get("Order")),groups:null}}},{key:"setActualNumPages",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;this._actualNumPages=e}},{key:"hasActualNumPages",get:function(){return null!==this._actualNumPages}},{key:"_pagesCount",get:function(){var e=this.toplevelPagesDict.get("Count");if(!Number.isInteger(e))throw new a.FormatError("Page count in top-level pages dictionary is not an integer.");return(0,a.shadow)(this,"_pagesCount",e)}},{key:"numPages",get:function(){return this.hasActualNumPages?this._actualNumPages:this._pagesCount}},{key:"destinations",get:function(){var e=this._readDests(),t=Object.create(null);if(e instanceof o.NameTree){var r,n=b(e.getAll());try{for(n.s();!(r=n.n()).done;){var s=m(r.value,2),c=s[0],u=x(s[1]);u&&(t[(0,a.stringToPDFString)(c)]=u)}}catch(e){n.e(e)}finally{n.f()}}else e instanceof i.Dict&&e.forEach((function(e,r){var n=x(r);n&&(t[e]=n)}));return(0,a.shadow)(this,"destinations",t)}},{key:"getDestination",value:function(e){var t=this._readDests();if(t instanceof o.NameTree){var r=x(t.get(e));if(r)return r;var n=this.destinations[e];if(n)return(0,a.warn)('Found "'.concat(e,'" at an incorrect position in the NameTree.')),n}else if(t instanceof i.Dict){var s=x(t.get(e));if(s)return s}return null}},{key:"_readDests",value:function(){var e=this._catDict.get("Names");return e&&e.has("Dests")?new o.NameTree(e.getRaw("Dests"),this.xref):this._catDict.has("Dests")?this._catDict.get("Dests"):void 0}},{key:"pageLabels",get:function(){var e=null;try{e=this._readPageLabels()}catch(e){if(e instanceof n.MissingDataException)throw e;(0,a.warn)("Unable to read page labels.")}return(0,a.shadow)(this,"pageLabels",e)}},{key:"_readPageLabels",value:function(){var e=this._catDict.getRaw("PageLabels");if(!e)return null;for(var t=new Array(this.numPages),r=null,s="",c=new o.NumberTree(e,this.xref).getAll(),u="",l=1,f=0,h=this.numPages;f=1))throw new a.FormatError("Invalid start in PageLabel dictionary.");l=v}else l=1}switch(r){case"D":u=l;break;case"R":case"r":u=(0,n.toRomanNumerals)(l,"r"===r);break;case"A":case"a":var y="a"===r?97:65,m=l-1;u=String.fromCharCode(y+m%26).repeat(Math.floor(m/26)+1);break;default:if(r)throw new a.FormatError('Invalid style "'.concat(r,'" in PageLabel dictionary.'));u=""}t[f]=s+u,l++}return t}},{key:"pageLayout",get:function(){var e=this._catDict.get("PageLayout"),t="";if(e instanceof i.Name)switch(e.name){case"SinglePage":case"OneColumn":case"TwoColumnLeft":case"TwoColumnRight":case"TwoPageLeft":case"TwoPageRight":t=e.name}return(0,a.shadow)(this,"pageLayout",t)}},{key:"pageMode",get:function(){var e=this._catDict.get("PageMode"),t="UseNone";if(e instanceof i.Name)switch(e.name){case"UseNone":case"UseOutlines":case"UseThumbs":case"FullScreen":case"UseOC":case"UseAttachments":t=e.name}return(0,a.shadow)(this,"pageMode",t)}},{key:"viewerPreferences",get:function(){var e=this,t=this._catDict.get("ViewerPreferences");if(!(t instanceof i.Dict))return(0,a.shadow)(this,"viewerPreferences",null);var r,n=null,o=b(t.getKeys());try{for(o.s();!(r=o.n()).done;){var s=r.value,c=t.get(s),u=void 0;switch(s){case"HideToolbar":case"HideMenubar":case"HideWindowUI":case"FitWindow":case"CenterWindow":case"DisplayDocTitle":case"PickTrayByPDFSize":"boolean"==typeof c&&(u=c);break;case"NonFullScreenPageMode":if(c instanceof i.Name)switch(c.name){case"UseNone":case"UseOutlines":case"UseThumbs":case"UseOC":u=c.name;break;default:u="UseNone"}break;case"Direction":if(c instanceof i.Name)switch(c.name){case"L2R":case"R2L":u=c.name;break;default:u="L2R"}break;case"ViewArea":case"ViewClip":case"PrintArea":case"PrintClip":if(c instanceof i.Name)switch(c.name){case"MediaBox":case"CropBox":case"BleedBox":case"TrimBox":case"ArtBox":u=c.name;break;default:u="CropBox"}break;case"PrintScaling":if(c instanceof i.Name)switch(c.name){case"None":case"AppDefault":u=c.name;break;default:u="AppDefault"}break;case"Duplex":if(c instanceof i.Name)switch(c.name){case"Simplex":case"DuplexFlipShortEdge":case"DuplexFlipLongEdge":u=c.name;break;default:u="None"}break;case"PrintPageRange":Array.isArray(c)&&c.length%2==0&&c.every((function(t,r,n){return Number.isInteger(t)&&t>0&&(0===r||t>=n[r-1])&&t<=e.numPages}))&&(u=c);break;case"NumCopies":Number.isInteger(c)&&c>0&&(u=c);break;default:(0,a.warn)("Ignoring non-standard key in ViewerPreferences: ".concat(s,"."));continue}void 0!==u?(n||(n=Object.create(null)),n[s]=u):(0,a.warn)('Bad value, for key "'.concat(s,'", in ViewerPreferences: ').concat(c,"."))}}catch(e){o.e(e)}finally{o.f()}return(0,a.shadow)(this,"viewerPreferences",n)}},{key:"openAction",get:function(){var t=this._catDict.get("OpenAction"),r=Object.create(null);if(t instanceof i.Dict){var n=new i.Dict(this.xref);n.set("A",t);var o={url:null,dest:null,action:null};e.parseDestDictionary({destDict:n,resultObj:o}),Array.isArray(o.dest)?r.dest=o.dest:o.action&&(r.action=o.action)}else Array.isArray(t)&&(r.dest=t);return(0,a.shadow)(this,"openAction",(0,a.objectSize)(r)>0?r:null)}},{key:"attachments",get:function(){var e=this._catDict.get("Names"),t=null;if(e instanceof i.Dict&&e.has("EmbeddedFiles")){var r,n=b(new o.NameTree(e.getRaw("EmbeddedFiles"),this.xref).getAll());try{for(n.s();!(r=n.n()).done;){var s=m(r.value,2),c=s[0],u=s[1],f=new l.FileSpec(u,this.xref);t||(t=Object.create(null)),t[(0,a.stringToPDFString)(c)]=f.serializable}}catch(e){n.e(e)}finally{n.f()}}return(0,a.shadow)(this,"attachments",t)}},{key:"xfaImages",get:function(){var e=this._catDict.get("Names"),t=null;if(e instanceof i.Dict&&e.has("XFAImages")){var r,n=b(new o.NameTree(e.getRaw("XFAImages"),this.xref).getAll());try{for(n.s();!(r=n.n()).done;){var s=m(r.value,2),c=s[0],u=s[1];t||(t=new i.Dict(this.xref)),t.set((0,a.stringToPDFString)(c),u)}}catch(e){n.e(e)}finally{n.f()}}return(0,a.shadow)(this,"xfaImages",t)}},{key:"_collectJavaScript",value:function(){var e=this._catDict.get("Names"),t=null;function r(e,r){if(r instanceof i.Dict&&(0,i.isName)(r.get("S"),"JavaScript")){var n=r.get("JS");if(n instanceof s.BaseStream)n=n.getString();else if("string"!=typeof n)return;null===t&&(t=new Map),n=(0,a.stringToPDFString)(n).replace(/\\u0000/g,""),t.set(e,n)}}if(e instanceof i.Dict&&e.has("JavaScript")){var n,c=b(new o.NameTree(e.getRaw("JavaScript"),this.xref).getAll());try{for(c.s();!(n=c.n()).done;){var u=m(n.value,2),l=u[0],f=u[1];r((0,a.stringToPDFString)(l),f)}}catch(e){c.e(e)}finally{c.f()}}var h=this._catDict.get("OpenAction");return h&&r("OpenAction",h),t}},{key:"javaScript",get:function(){var e,t=this._collectJavaScript();return(0,a.shadow)(this,"javaScript",t?function(e){if(Array.isArray(e))return k(e)}(e=t.values())||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||w(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}():null)}},{key:"jsActions",get:function(){var e=this._collectJavaScript(),t=(0,n.collectActions)(this.xref,this._catDict,a.DocumentActionEventType);if(e){t||(t=Object.create(null));var r,i=b(e);try{for(i.s();!(r=i.n()).done;){var o=m(r.value,2),s=o[0],c=o[1];s in t?t[s].push(c):t[s]=[c]}}catch(e){i.e(e)}finally{i.f()}}return(0,a.shadow)(this,"jsActions",t)}},{key:"fontFallback",value:(F=y(g().mark((function e(t,r){var n,a,i,o;return g().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Promise.all(this.fontCache);case 2:n=e.sent,a=b(n),e.prev=4,a.s();case 6:if((i=a.n()).done){e.next=13;break}if((o=i.value).loadedName!==t){e.next=11;break}return o.fallback(r),e.abrupt("return");case 11:e.next=6;break;case 13:e.next=18;break;case 15:e.prev=15,e.t0=e.catch(4),a.e(e.t0);case 18:return e.prev=18,a.f(),e.finish(18);case 21:case"end":return e.stop()}}),e,this,[[4,15,18,21]])}))),function(e,t){return F.apply(this,arguments)})},{key:"cleanup",value:(C=y(g().mark((function e(){var t,r,n,a,i=arguments;return g().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=i.length>0&&void 0!==i[0]&&i[0],(0,c.clearGlobalCaches)(),this.globalImageCache.clear(t),this.pageKidsCountCache.clear(),this.pageIndexCache.clear(),this.nonBlendModesSet.clear(),e.next=8,Promise.all(this.fontCache);case 8:r=e.sent,n=b(r);try{for(n.s();!(a=n.n()).done;)delete a.value.dict.cacheKey}catch(e){n.e(e)}finally{n.f()}this.fontCache.clear(),this.builtInCMapCache.clear(),this.standardFontDataCache.clear();case 14:case"end":return e.stop()}}),e,this)}))),function(){return C.apply(this,arguments)})},{key:"getPageDict",value:(A=y(g().mark((function e(t){var r,n,o,s,c,u,l,f,h,d,p,v,y,m,b,w;return g().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:r=[this.toplevelPagesDict],n=new i.RefSet,(o=this._catDict.getRaw("Pages"))instanceof i.Ref&&n.put(o),s=this.xref,c=this.pageKidsCountCache,u=this.pageIndexCache,l=0;case 6:if(!r.length){e.next=67;break}if(!((f=r.pop())instanceof i.Ref)){e.next=34;break}if(!((h=c.get(f))>=0&&l+h<=t)){e.next=13;break}return l+=h,e.abrupt("continue",6);case 13:if(!n.has(f)){e.next=15;break}throw new a.FormatError("Pages tree contains circular reference.");case 15:return n.put(f),e.next=18,s.fetchAsync(f);case 18:if(!((d=e.sent)instanceof i.Dict)){e.next=32;break}if(!((p=d.getRaw("Type"))instanceof i.Ref)){e.next=25;break}return e.next=24,s.fetchAsync(p);case 24:p=e.sent;case 25:if(!(0,i.isName)(p,"Page")&&d.has("Kids")){e.next=32;break}if(c.has(f)||c.put(f,1),u.has(f)||u.put(f,l),l!==t){e.next=30;break}return e.abrupt("return",[d,f]);case 30:return l++,e.abrupt("continue",6);case 32:return r.push(d),e.abrupt("continue",6);case 34:if(f instanceof i.Dict){e.next=36;break}throw new a.FormatError("Page dictionary kid reference points to wrong type of object.");case 36:if(v=f.objId,!((y=f.getRaw("Count"))instanceof i.Ref)){e.next=42;break}return e.next=41,s.fetchAsync(y);case 41:y=e.sent;case 42:if(!(Number.isInteger(y)&&y>=0)){e.next=47;break}if(v&&!c.has(v)&&c.put(v,y),!(l+y<=t)){e.next=47;break}return l+=y,e.abrupt("continue",6);case 47:if(!((m=f.getRaw("Kids"))instanceof i.Ref)){e.next=52;break}return e.next=51,s.fetchAsync(m);case 51:m=e.sent;case 52:if(Array.isArray(m)){e.next=64;break}if(!((b=f.getRaw("Type"))instanceof i.Ref)){e.next=58;break}return e.next=57,s.fetchAsync(b);case 57:b=e.sent;case 58:if(!(0,i.isName)(b,"Page")&&f.has("Kids")){e.next=63;break}if(l!==t){e.next=61;break}return e.abrupt("return",[f,null]);case 61:return l++,e.abrupt("continue",6);case 63:throw new a.FormatError("Page dictionary kids object is not an array.");case 64:for(w=m.length-1;w>=0;w--)r.push(m[w]);e.next=6;break;case 67:throw new Error("Page index ".concat(t," not found."));case 68:case"end":return e.stop()}}),e,this)}))),function(e){return A.apply(this,arguments)})},{key:"getAllPageDicts",value:(O=y(g().mark((function e(){var t,r,o,s,c,u,l,f,h,d,p,v,y,m,b,w,k,S,x=arguments;return g().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:p=function(e){if(e instanceof n.XRefEntryException&&!t)throw e;t&&r&&0===h&&((0,a.warn)('getAllPageDicts - Skipping invalid first page: "'.concat(e,'".')),e=i.Dict.empty),u.set(h++,[e,null])},d=function(e,t){t&&!f.has(t)&&f.put(t,h),u.set(h++,[e,t])},t=x.length>0&&void 0!==x[0]&&x[0],r=this.pdfManager.evaluatorOptions.ignoreErrors,o=[{currentNode:this.toplevelPagesDict,posInKids:0}],s=new i.RefSet,(c=this._catDict.getRaw("Pages"))instanceof i.Ref&&s.put(c),u=new Map,l=this.xref,f=this.pageIndexCache,h=0;case 10:if(!(o.length>0)){e.next=70;break}if(v=o.at(-1),y=v.currentNode,m=v.posInKids,!((b=y.getRaw("Kids"))instanceof i.Ref)){e.next=25;break}return e.prev=15,e.next=18,l.fetchAsync(b);case 18:b=e.sent,e.next=25;break;case 21:return e.prev=21,e.t0=e.catch(15),p(e.t0),e.abrupt("break",70);case 25:if(Array.isArray(b)){e.next=28;break}return p(new a.FormatError("Page dictionary kids object is not an array.")),e.abrupt("break",70);case 28:if(!(m>=b.length)){e.next=31;break}return o.pop(),e.abrupt("continue",10);case 31:if(w=b[m],k=void 0,!(w instanceof i.Ref)){e.next=50;break}if(!s.has(w)){e.next=37;break}return p(new a.FormatError("Pages tree contains circular reference.")),e.abrupt("break",70);case 37:return s.put(w),e.prev=38,e.next=41,l.fetchAsync(w);case 41:k=e.sent,e.next=48;break;case 44:return e.prev=44,e.t1=e.catch(38),p(e.t1),e.abrupt("break",70);case 48:e.next=51;break;case 50:k=w;case 51:if(k instanceof i.Dict){e.next=54;break}return p(new a.FormatError("Page dictionary kid reference points to wrong type of object.")),e.abrupt("break",70);case 54:if(!((S=k.getRaw("Type"))instanceof i.Ref)){e.next=66;break}return e.prev=56,e.next=59,l.fetchAsync(S);case 59:S=e.sent,e.next=66;break;case 62:return e.prev=62,e.t2=e.catch(56),p(e.t2),e.abrupt("break",70);case 66:(0,i.isName)(S,"Page")||!k.has("Kids")?d(k,w instanceof i.Ref?w:null):o.push({currentNode:k,posInKids:0}),v.posInKids++,e.next=10;break;case 70:return e.abrupt("return",u);case 71:case"end":return e.stop()}}),e,this,[[15,21],[38,44],[56,62]])}))),function(){return O.apply(this,arguments)})},{key:"getPageIndex",value:function(e){var t=this,r=this.pageIndexCache.get(e);if(void 0!==r)return Promise.resolve(r);var n=this.xref,o=0;return function r(s){return function(t){var r,o=0;return n.fetchAsync(t).then((function(n){if((0,i.isRefsEqual)(t,e)&&!(0,i.isDict)(n,"Page")&&!(n instanceof i.Dict&&!n.has("Type")&&n.has("Contents")))throw new a.FormatError("The reference does not point to a /Page dictionary.");if(!n)return null;if(!(n instanceof i.Dict))throw new a.FormatError("Node must be a dictionary.");return r=n.getRaw("Parent"),n.getAsync("Parent")})).then((function(e){if(!e)return null;if(!(e instanceof i.Dict))throw new a.FormatError("Parent must be a dictionary.");return e.getAsync("Kids")})).then((function(e){if(!e)return null;var s,c=[],u=!1,l=b(e);try{for(l.s();!(s=l.n()).done;){var f=s.value;if(!(f instanceof i.Ref))throw new a.FormatError("Kid must be a reference.");if((0,i.isRefsEqual)(f,t)){u=!0;break}c.push(n.fetchAsync(f).then((function(e){if(!(e instanceof i.Dict))throw new a.FormatError("Kid node must be a dictionary.");e.has("Count")?o+=e.get("Count"):o++})))}}catch(e){l.e(e)}finally{l.f()}if(!u)throw new a.FormatError("Kid reference not found in parent's kids.");return Promise.all(c).then((function(){return[o,r]}))}))}(s).then((function(n){if(!n)return t.pageIndexCache.put(e,o),o;var a=m(n,2),i=a[0],s=a[1];return o+=i,r(s)}))}(e)}},{key:"baseUrl",get:function(){var e=this._catDict.get("URI");if(e instanceof i.Dict){var t=e.get("Base");if("string"==typeof t){var r=(0,a.createValidAbsoluteUrl)(t,null,{tryConvertEncoding:!0});if(r)return(0,a.shadow)(this,"baseUrl",r.href)}}return(0,a.shadow)(this,"baseUrl",null)}}],v=[{key:"parseDestDictionary",value:function(e){var t=e.destDict;if(t instanceof i.Dict){var r=e.resultObj;if("object"===p(r)){var o,c,u=e.docBaseUrl||null,l=e.docAttachments||null,f=t.get("A");if(f instanceof i.Dict||(t.has("Dest")?f=t.get("Dest"):(f=t.get("AA"))instanceof i.Dict&&(f.has("D")?f=f.get("D"):f.has("U")&&(f=f.get("U")))),f instanceof i.Dict){var h=f.get("S");if(!(h instanceof i.Name))return void(0,a.warn)("parseDestDictionary: Invalid type in Action dictionary.");var d=h.name;switch(d){case"ResetForm":var g,v=f.get("Flags"),y=0==(1&("number"==typeof v?v:0)),m=[],w=[],k=b(f.get("Fields")||[]);try{for(k.s();!(g=k.n()).done;){var S=g.value;S instanceof i.Ref?w.push(S.toString()):"string"==typeof S&&m.push((0,a.stringToPDFString)(S))}}catch(e){k.e(e)}finally{k.f()}r.resetForm={fields:m,refs:w,include:y};break;case"URI":(o=f.get("URI"))instanceof i.Name&&(o="/"+o.name);break;case"GoTo":c=f.get("D");break;case"Launch":case"GoToR":var x=f.get("F");x instanceof i.Dict?o=x.get("F")||null:"string"==typeof x&&(o=x);var O=f.get("D");if(O&&(O instanceof i.Name&&(O=O.name),"string"==typeof o)){var A=o.split("#")[0];"string"==typeof O?o=A+"#"+O:Array.isArray(O)&&(o=A+"#"+JSON.stringify(O))}var C=f.get("NewWindow");"boolean"==typeof C&&(r.newWindow=C);break;case"GoToE":var F,P=f.get("T");if(l&&P instanceof i.Dict){var T=P.get("R"),I=P.get("N");(0,i.isName)(T,"C")&&"string"==typeof I&&(F=l[(0,a.stringToPDFString)(I)])}F?r.attachment=F:(0,a.warn)('parseDestDictionary - unimplemented "GoToE" action.');break;case"Named":var E=f.get("N");E instanceof i.Name&&(r.action=E.name);break;case"SetOCGState":var j=f.get("State"),M=f.get("PreserveRB");if(!Array.isArray(j)||0===j.length)break;var _,L=[],R=b(j);try{for(R.s();!(_=R.n()).done;){var N=_.value;if(N instanceof i.Name)switch(N.name){case"ON":case"OFF":case"Toggle":L.push(N.name)}else N instanceof i.Ref&&L.push(N.toString())}}catch(e){R.e(e)}finally{R.f()}if(L.length!==j.length)break;r.setOCGState={state:L,preserveRB:"boolean"!=typeof M||M};break;case"JavaScript":var D,B=f.get("JS");B instanceof s.BaseStream?D=B.getString():"string"==typeof B&&(D=B);var U=D&&(0,n.recoverJsURL)((0,a.stringToPDFString)(D));if(U){o=U.url,r.newWindow=U.newWindow;break}default:if("JavaScript"===d||"SubmitForm"===d)break;(0,a.warn)('parseDestDictionary - unsupported action: "'.concat(d,'".'))}}else t.has("Dest")&&(c=t.get("Dest"));if("string"==typeof o){var $=(0,a.createValidAbsoluteUrl)(o,u,{addDefaultProtocol:!0,tryConvertEncoding:!0});$&&(r.url=$.href),r.unsafeUrl=o}c&&(c instanceof i.Name&&(c=c.name),"string"==typeof c?r.dest=(0,a.stringToPDFString)(c):Array.isArray(c)&&(r.dest=c))}else(0,a.warn)("parseDestDictionary: \`resultObj\` must be an object.")}else(0,a.warn)("parseDestDictionary: \`destDict\` must be a dictionary.")}}],r&&S(t.prototype,r),v&&S(t,v),Object.defineProperty(t,"prototype",{writable:!1}),e}();t.Catalog=O},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.NumberTree=t.NameTree=void 0;var n=r(134),a=r(2);function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&o(e,t)}function o(e,t){return o=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},o(e,t)}function s(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,n=c(e);if(t){var a=c(this).constructor;r=Reflect.construct(n,arguments,a)}else r=n.apply(this,arguments);return function(e,t){if(t&&("object"===u(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(this,r)}}function c(e){return c=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},c(e)}function u(e){return u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},u(e)}function l(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(e){if("string"==typeof e)return f(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?f(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,a=function(){};return{s:a,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return o=e.done,e},e:function(e){s=!0,i=e},f:function(){try{o||null==r.return||r.return()}finally{if(s)throw i}}}}function f(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r0;){var o=t.fetchIfRef(i.shift());if(o instanceof n.Dict)if(o.has("Kids")){var s=o.get("Kids");if(!Array.isArray(s))continue;var c,u=l(s);try{for(u.s();!(c=u.n()).done;){var f=c.value;if(r.has(f))throw new a.FormatError('Duplicate entry in "'.concat(this._type,'" tree.'));i.push(f),r.put(f)}}catch(e){u.e(e)}finally{u.f()}}else{var h=o.get(this._type);if(Array.isArray(h))for(var d=0,p=h.length;d10)return(0,a.warn)('Search depth limit reached for "'.concat(this._type,'" tree.')),null;var i=r.get("Kids");if(!Array.isArray(i))return null;for(var o=0,s=i.length-1;o<=s;){var c=o+s>>1,u=t.fetchIfRef(i[c]),l=u.get("Limits");if(et.fetchIfRef(l[1]))){r=u;break}o=c+1}}if(o>s)return null}var f=r.get(this._type);if(Array.isArray(f))for(var h=0,d=f.length-2;h<=d;){var p=h+d>>1,g=p+(1&p),v=t.fetchIfRef(f[g]);if(ev))return t.fetchIfRef(f[g+1]);h=g+2}}return null}}]),e}(),v=function(e){i(r,e);var t=s(r);function r(e,n){return h(this,r),t.call(this,e,n,"Names")}return p(r)}(g);t.NameTree=v;var y=function(e){i(r,e);var t=s(r);function r(e,n){return h(this,r),t.call(this,e,n,"Nums")}return p(r)}(g);t.NumberTree=y},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.clearGlobalCaches=function(){(0,n.clearPrimitiveCaches)(),(0,a.clearUnicodeCaches)()};var n=r(134),a=r(169)},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FileSpec=void 0;var n=r(2),a=r(136),i=r(134);function o(e){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o(e)}function s(e,t){for(var r=0;r{Object.defineProperty(t,"__esModule",{value:!0}),t.MetadataParser=void 0;var n=r(195);function a(e){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a(e)}function i(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=o(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,a=function(){};return{s:a,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,s=!0,c=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return s=e.done,e},e:function(e){c=!0,i=e},f:function(){try{s||null==r.return||r.return()}finally{if(c)throw i}}}}function o(e,t){if(e){if("string"==typeof e)return s(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?s(e,t):void 0}}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r\\\\376\\\\377([^<]+)/g,(function(e,t){for(var r=t.replace(/\\\\([0-3])([0-7])([0-7])/g,(function(e,t,r,n){return String.fromCharCode(64*t+8*r+1*n)})).replace(/&(amp|apos|gt|lt|quot);/g,(function(e,t){switch(t){case"amp":return"&";case"apos":return"'";case"gt":return">";case"lt":return"<";case"quot":return'"'}throw new Error("_repair: ".concat(t," isn't defined."))})),n=[],a=0,i=r.length;a=32&&o<127&&60!==o&&62!==o&&38!==o?n.push(String.fromCharCode(o)):n.push("&#x"+(65536+o).toString(16).substring(1)+";")}return">"+n.join("")}))}},{key:"_getSequence",value:function(e){var t=e.nodeName;return"rdf:bag"!==t&&"rdf:seq"!==t&&"rdf:alt"!==t?null:e.childNodes.filter((function(e){return"rdf:li"===e.nodeName}))}},{key:"_parseArray",value:function(e){if(e.hasChildNodes()){var t=(n=e.childNodes,a=1,function(e){if(Array.isArray(e))return e}(n)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,o,s=[],c=!0,u=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){u=!0,a=e}finally{try{if(!c&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(u)throw a}}return s}}(n,a)||o(n,a)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())[0],r=this._getSequence(t)||[];this._metadataMap.set(e.nodeName,r.map((function(e){return e.textContent.trim()})))}var n,a}},{key:"_parse",value:function(e){var t=e.documentElement;if("rdf:rdf"!==t.nodeName)for(t=t.firstChild;t&&"rdf:rdf"!==t.nodeName;)t=t.nextSibling;if(t&&"rdf:rdf"===t.nodeName&&t.hasChildNodes()){var r,n=i(t.childNodes);try{for(n.s();!(r=n.n()).done;){var a=r.value;if("rdf:description"===a.nodeName){var o,s=i(a.childNodes);try{for(s.s();!(o=s.n()).done;){var c=o.value,u=c.nodeName;switch(u){case"#text":continue;case"dc:creator":case"dc:subject":this._parseArray(c);continue}this._metadataMap.set(u,c.textContent.trim())}}catch(e){s.e(e)}finally{s.f()}}}}catch(e){n.e(e)}finally{n.f()}}}},{key:"serializable",get:function(){return{parsedData:this._metadataMap,rawData:this._data}}}])&&c(t.prototype,r),Object.defineProperty(t,"prototype",{writable:!1}),e}();t.MetadataParser=u},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.StructTreeRoot=t.StructTreePage=void 0;var n=r(134),a=r(2),i=r(199);function o(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(e){if("string"==typeof e)return s(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?s(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,a=function(){};return{s:a,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o=!0,c=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return o=e.done,e},e:function(e){c=!0,i=e},f:function(){try{o||null==r.return||r.return()}finally{if(c)throw i}}}}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r2&&void 0!==arguments[2]?arguments[2]:0;if(r>40)return(0,a.warn)("StructTree MAX_DEPTH reached."),null;if(t.has(e))return t.get(e);var i=new y(this,e);t.set(e,i);var s=e.get("P");if(!s||(0,n.isName)(s.get("Type"),"StructTreeRoot"))return this.addTopLevelNode(e,i)||t.delete(e),i;var c=this.addNode(s,t,r+1);if(!c)return i;var u,l=!1,f=o(c.kids);try{for(f.s();!(u=f.n()).done;){var h=u.value;h.type===g&&h.dict===e&&(h.parentNode=i,l=!0)}}catch(e){f.e(e)}finally{f.f()}return l||t.delete(e),i}},{key:"addTopLevelNode",value:function(e,t){var r=this.rootDict.get("K");if(!r)return!1;if(r instanceof n.Dict)return r.objId===e.objId&&(this.nodes[0]=t,!0);if(!Array.isArray(r))return!0;for(var a=!1,i=0;i2&&void 0!==arguments[2]?arguments[2]:0;if(n>40)(0,a.warn)("StructTree too deep to be fully serialized.");else{var i=Object.create(null);i.role=t.role,i.children=[],r.children.push(i);var s=t.dict.get("Alt");"string"==typeof s&&(i.alt=(0,a.stringToPDFString)(s));var c=t.dict.get("Lang");"string"==typeof c&&(i.lang=(0,a.stringToPDFString)(c));var u,l=o(t.kids);try{for(l.s();!(u=l.n()).done;){var f=u.value,v=f.type===g?f.parentNode:null;v?e(v,i,n+1):f.type===h||f.type===d?i.children.push({type:"content",id:"page".concat(f.pageObjId,"_mcid").concat(f.mcid)}):f.type===p&&i.children.push({type:"object",id:f.refObjId})}}catch(e){l.e(e)}finally{l.f()}}}var t=Object.create(null);t.children=[],t.role="Root";var r,n=o(this.nodes);try{for(n.s();!(r=n.n()).done;){var i=r.value;i&&e(i,t)}}catch(e){n.e(e)}finally{n.f()}return t}}]),e}();t.StructTreePage=b},(e,t,r)=>{function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.ObjectLoader=void 0;var a=r(134),i=r(136),o=r(135),s=r(2);function c(){c=function(){return e};var e={},t=Object.prototype,r=t.hasOwnProperty,a=Object.defineProperty||function(e,t,r){e[t]=r.value},i="function"==typeof Symbol?Symbol:{},o=i.iterator||"@@iterator",s=i.asyncIterator||"@@asyncIterator",u=i.toStringTag||"@@toStringTag";function l(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{l({},"")}catch(e){l=function(e,t,r){return e[t]=r}}function f(e,t,r,n){var i=t&&t.prototype instanceof p?t:p,o=Object.create(i.prototype),s=new F(n||[]);return a(o,"_invoke",{value:x(e,r,s)}),o}function h(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}e.wrap=f;var d={};function p(){}function g(){}function v(){}var y={};l(y,o,(function(){return this}));var m=Object.getPrototypeOf,b=m&&m(m(P([])));b&&b!==t&&r.call(b,o)&&(y=b);var w=v.prototype=p.prototype=Object.create(y);function k(e){["next","throw","return"].forEach((function(t){l(e,t,(function(e){return this._invoke(t,e)}))}))}function S(e,t){function i(a,o,s,c){var u=h(e[a],e,o);if("throw"!==u.type){var l=u.arg,f=l.value;return f&&"object"==n(f)&&r.call(f,"__await")?t.resolve(f.__await).then((function(e){i("next",e,s,c)}),(function(e){i("throw",e,s,c)})):t.resolve(f).then((function(e){l.value=e,s(l)}),(function(e){return i("throw",e,s,c)}))}c(u.arg)}var o;a(this,"_invoke",{value:function(e,r){function n(){return new t((function(t,n){i(e,r,t,n)}))}return o=o?o.then(n,n):n()}})}function x(e,t,r){var n="suspendedStart";return function(a,i){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===a)throw i;return{value:void 0,done:!0}}for(r.method=a,r.arg=i;;){var o=r.delegate;if(o){var s=O(o,r);if(s){if(s===d)continue;return s}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var c=h(e,t,r);if("normal"===c.type){if(n=r.done?"completed":"suspendedYield",c.arg===d)continue;return{value:c.arg,done:r.done}}"throw"===c.type&&(n="completed",r.method="throw",r.arg=c.arg)}}}function O(e,t){var r=t.method,n=e.iterator[r];if(void 0===n)return t.delegate=null,"throw"===r&&e.iterator.return&&(t.method="return",t.arg=void 0,O(e,t),"throw"===t.method)||"return"!==r&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+r+"' method")),d;var a=h(n,e.iterator,t.arg);if("throw"===a.type)return t.method="throw",t.arg=a.arg,t.delegate=null,d;var i=a.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,d):i:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,d)}function A(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function C(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function F(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(A,this),this.reset(!0)}function P(e){if(e){var t=e[o];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var n=-1,a=function t(){for(;++n=0;--a){var i=this.tryEntries[a],o=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var s=r.call(i,"catchLoc"),c=r.call(i,"finallyLoc");if(s&&c){if(this.prev=0;--n){var a=this.tryEntries[n];if(a.tryLoc<=this.prev&&r.call(a,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),C(r),d}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var a=n.arg;C(r)}return a}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:P(e),resultName:t,nextLoc:r},"next"===this.method&&(this.arg=void 0),d}},e}function u(e,t,r,n,a,i,o){try{var s=e[i](o),c=s.value}catch(e){return void r(e)}s.done?t(c):Promise.resolve(c).then(n,a)}function l(e){return function(){var t=this,r=arguments;return new Promise((function(n,a){var i=e.apply(t,r);function o(e){u(i,n,a,o,s,"next",e)}function s(e){u(i,n,a,o,s,"throw",e)}o(void 0)}))}}function f(e,t){for(var r=0;r=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return o=e.done,e},e:function(e){s=!0,i=e},f:function(){try{o||null==r.return||r.return()}finally{if(s)throw i}}}}function d(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r{Object.defineProperty(t,"__esModule",{value:!0}),t.XFAFactory=void 0;var n=r(206),a=r(210),i=r(216),o=r(214),s=r(207),c=r(2),u=r(217),l=r(227);function f(e){return f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},f(e)}function h(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=0;--a){var i=this.tryEntries[a],o=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var s=r.call(i,"catchLoc"),c=r.call(i,"finallyLoc");if(s&&c){if(this.prev=0;--n){var a=this.tryEntries[n];if(a.tryLoc<=this.prev&&r.call(a,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),C(r),h}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var a=n.arg;C(r)}return a}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:P(e),resultName:t,nextLoc:r},"next"===this.method&&(this.arg=void 0),h}},e}function p(e,t,r,n,a,i,o){try{var s=e[i](o),c=s.value}catch(e){return void r(e)}s.done?t(c):Promise.resolve(c).then(n,a)}function g(e){return function(){var t=this,r=arguments;return new Promise((function(n,a){var i=e.apply(t,r);function o(e){p(i,n,a,o,s,"next",e)}function s(e){p(i,n,a,o,s,"throw",e)}o(void 0)}))}}function v(e,t){for(var r=0;r=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return o=e.done,e},e:function(e){s=!0,i=e},f:function(){try{o||null==r.return||r.return()}finally{if(s)throw i}}}}(this.form[n.$globalData].usedTypefaces);try{for(a.s();!(t=a.n()).done;){var i=t.value;i=(0,s.stripQuotes)(i),this.form[n.$globalData].fontFinder.find(i)||r.push(i)}}catch(e){a.e(e)}finally{a.f()}return r.length>0?r:null}},{key:"appendFonts",value:function(e,t){this.form[n.$globalData].fontFinder.add(e,t)}},{key:"getPages",value:(p=g(d().mark((function e(){var t;return d().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.pages){e.next=3;break}return e.next=3,this._createPages();case 3:return t=this.pages,this.pages=null,e.abrupt("return",t);case 6:case"end":return e.stop()}}),e,this)}))),function(){return p.apply(this,arguments)})},{key:"serializeData",value:function(e){return this.dataHandler.serialize(e)}}],f=[{key:"_createDocument",value:function(e){return e["/xdp:xdp"]?Object.values(e).join(""):e["xdp:xdp"]}},{key:"getRichTextAsHtml",value:function(e){if(!e||"string"!=typeof e)return null;try{var t=new u.XFAParser(l.XhtmlNamespace,!0).parse(e);if(!["body","xhtml"].includes(t[n.$nodeName])){var r=l.XhtmlNamespace.body({});r[n.$appendChild](t),t=r}var a=t[n.$toHTML]();if(!a.success)return null;var i=a.html,o=i.attributes;return o&&(o.class&&(o.class=o.class.filter((function(e){return!e.startsWith("xfa")}))),o.dir="auto"),{html:i,str:t[n.$text]()}}catch(e){(0,c.warn)("XFA - an error occurred during parsing of rich text: ".concat(e))}return null}}],r&&v(t.prototype,r),f&&v(t,f),Object.defineProperty(t,"prototype",{writable:!1}),e}();t.XFAFactory=y},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.XmlObject=t.XFAObjectArray=t.XFAObject=t.XFAAttribute=t.StringObject=t.OptionObject=t.Option10=t.Option01=t.IntegerObject=t.ContentObject=t.$uid=t.$toStyle=t.$toString=t.$toPages=t.$toHTML=t.$text=t.$tabIndex=t.$setValue=t.$setSetAttributes=t.$setId=t.$searchNode=t.$root=t.$resolvePrototypes=t.$removeChild=t.$pushPara=t.$pushGlyphs=t.$popPara=t.$onText=t.$onChildCheck=t.$onChild=t.$nsAttributes=t.$nodeName=t.$namespaceId=t.$isUsable=t.$isTransparent=t.$isThereMoreWidth=t.$isSplittable=t.$isNsAgnostic=t.$isDescendent=t.$isDataValue=t.$isCDATAXml=t.$isBindable=t.$insertAt=t.$indexOf=t.$ids=t.$hasSettableValue=t.$globalData=t.$getTemplateRoot=t.$getSubformParent=t.$getRealChildrenByNameIt=t.$getParent=t.$getNextPage=t.$getExtra=t.$getDataValue=t.$getContainedChildren=t.$getChildrenByNameIt=t.$getChildrenByName=t.$getChildrenByClass=t.$getChildren=t.$getAvailableSpace=t.$getAttributes=t.$getAttributeIt=t.$flushHTML=t.$finalize=t.$extra=t.$dump=t.$data=t.$content=t.$consumed=t.$clone=t.$cleanup=t.$cleanPage=t.$clean=t.$childrenToHTML=t.$appendChild=t.$addHTML=t.$acceptWhitespace=void 0;var n=r(207),a=r(2),i=r(135),o=r(208),s=r(209);function c(){return c="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,t,r){var n=function(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=p(e)););return e}(e,t);if(n){var a=Object.getOwnPropertyDescriptor(n,t);return a.get?a.get.call(arguments.length<3?e:r):a.value}},c.apply(this,arguments)}function u(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,o,s=[],c=!0,u=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){u=!0,a=e}finally{try{if(!c&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(u)throw a}}return s}}(e,t)||m(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&f(e,t)}function f(e,t){return f=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},f(e,t)}function h(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,n=p(e);if(t){var a=p(this).constructor;r=Reflect.construct(n,arguments,a)}else r=n.apply(this,arguments);return function(e,t){if(t&&("object"===g(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return d(e)}(this,r)}}function d(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function p(e){return p=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},p(e)}function g(e){return g="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},g(e)}function v(){v=function(){return e};var e={},t=Object.prototype,r=t.hasOwnProperty,n=Object.defineProperty||function(e,t,r){e[t]=r.value},a="function"==typeof Symbol?Symbol:{},i=a.iterator||"@@iterator",o=a.asyncIterator||"@@asyncIterator",s=a.toStringTag||"@@toStringTag";function c(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{c({},"")}catch(e){c=function(e,t,r){return e[t]=r}}function u(e,t,r,a){var i=t&&t.prototype instanceof h?t:h,o=Object.create(i.prototype),s=new F(a||[]);return n(o,"_invoke",{value:x(e,r,s)}),o}function l(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}e.wrap=u;var f={};function h(){}function d(){}function p(){}var y={};c(y,i,(function(){return this}));var m=Object.getPrototypeOf,b=m&&m(m(P([])));b&&b!==t&&r.call(b,i)&&(y=b);var w=p.prototype=h.prototype=Object.create(y);function k(e){["next","throw","return"].forEach((function(t){c(e,t,(function(e){return this._invoke(t,e)}))}))}function S(e,t){function a(n,i,o,s){var c=l(e[n],e,i);if("throw"!==c.type){var u=c.arg,f=u.value;return f&&"object"==g(f)&&r.call(f,"__await")?t.resolve(f.__await).then((function(e){a("next",e,o,s)}),(function(e){a("throw",e,o,s)})):t.resolve(f).then((function(e){u.value=e,o(u)}),(function(e){return a("throw",e,o,s)}))}s(c.arg)}var i;n(this,"_invoke",{value:function(e,r){function n(){return new t((function(t,n){a(e,r,t,n)}))}return i=i?i.then(n,n):n()}})}function x(e,t,r){var n="suspendedStart";return function(a,i){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===a)throw i;return{value:void 0,done:!0}}for(r.method=a,r.arg=i;;){var o=r.delegate;if(o){var s=O(o,r);if(s){if(s===f)continue;return s}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var c=l(e,t,r);if("normal"===c.type){if(n=r.done?"completed":"suspendedYield",c.arg===f)continue;return{value:c.arg,done:r.done}}"throw"===c.type&&(n="completed",r.method="throw",r.arg=c.arg)}}}function O(e,t){var r=t.method,n=e.iterator[r];if(void 0===n)return t.delegate=null,"throw"===r&&e.iterator.return&&(t.method="return",t.arg=void 0,O(e,t),"throw"===t.method)||"return"!==r&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+r+"' method")),f;var a=l(n,e.iterator,t.arg);if("throw"===a.type)return t.method="throw",t.arg=a.arg,t.delegate=null,f;var i=a.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,f):i:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,f)}function A(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function C(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function F(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(A,this),this.reset(!0)}function P(e){if(e){var t=e[i];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var n=-1,a=function t(){for(;++n=0;--a){var i=this.tryEntries[a],o=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var s=r.call(i,"catchLoc"),c=r.call(i,"finallyLoc");if(s&&c){if(this.prev=0;--n){var a=this.tryEntries[n];if(a.tryLoc<=this.prev&&r.call(a,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),C(r),f}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var a=n.arg;C(r)}return a}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:P(e),resultName:t,nextLoc:r},"next"===this.method&&(this.arg=void 0),f}},e}function y(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=m(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,a=function(){};return{s:a,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return o=e.done,e},e:function(e){s=!0,i=e},f:function(){try{o||null==r.return||r.return()}finally{if(s)throw i}}}}function m(e,t){if(e){if("string"==typeof e)return b(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?b(e,t):void 0}}function b(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r2&&void 0!==arguments[2]&&arguments[2];w(this,e),this[pe]=t,this[ge]=r,this[We]=n,this[Ke]=null,this[Ue]=[],this[Re]="".concat(r).concat(et++),this[Q]=null}return S(e,[{key:ye,value:function(e){if(!this[We]||!this[me](e))return!1;var t=e[ge],r=this[t];if(!(r instanceof nt))return null!==r&&this[xe](r),this[t]=e,this[A](e),!0;if(r.push(e))return this[A](e),!0;var n="";return this.id?n=" (id: ".concat(this.id,")"):this.name&&(n=" (name: ".concat(this.name," ").concat(this.h.value,")")),(0,a.warn)('XFA - node "'.concat(this[ge],'"').concat(n,' has already enough "').concat(t,'"!')),!1}},{key:me,value:function(e){return this.hasOwnProperty(e[ge])&&e[pe]===this[pe]}},{key:ce,value:function(){return!1}},{key:x,value:function(){return!1}},{key:ae,value:function(){return!1}},{key:ie,value:function(){return!1}},{key:ke,value:function(){this.para&&this[Z]()[L].paraStack.pop()}},{key:Se,value:function(){this[Z]()[L].paraStack.push(this.para)}},{key:Fe,value:function(e){this.id&&this[pe]===o.NamespaceIds.template.id&&e.set(this.id,this)}},{key:Z,value:function(){return this[Q].template}},{key:ue,value:function(){return!1}},{key:le,value:function(){return!1}},{key:A,value:function(e){e[Ke]=this,this[Ue].push(e),!e[Q]&&this[Q]&&(e[Q]=this[Q])}},{key:xe,value:function(e){var t=this[Ue].indexOf(e);this[Ue].splice(t,1)}},{key:ee,value:function(){return this.hasOwnProperty("value")}},{key:Te,value:function(e){}},{key:be,value:function(e){}},{key:R,value:function(){}},{key:F,value:function(e){delete this[We],this[T]&&(e.clean(this[T]),delete this[T])}},{key:re,value:function(e){return this[Ue].indexOf(e)}},{key:ne,value:function(e,t){t[Ke]=this,this[Ue].splice(e,0,t),!t[Q]&&this[Q]&&(t[Q]=this[Q])}},{key:fe,value:function(){return!this.name}},{key:de,value:function(){return""}},{key:Ee,value:function(){return 0===this[Ue].length?this[j]:this[Ue].map((function(e){return e[Ee]()})).join("")}},{key:Be,get:function(){var t=Object.getPrototypeOf(this);if(!t._attributes){var r,n=t._attributes=new Set,i=y(Object.getOwnPropertyNames(this));try{for(i.s();!(r=i.n()).done;){var o=r.value;if(null===this[o]||this[o]instanceof e||this[o]instanceof nt)break;n.add(o)}}catch(e){i.e(e)}finally{i.f()}}return(0,a.shadow)(this,Be,t._attributes)}},{key:se,value:function(e){for(var t=this;t;){if(t===e)return!0;t=t[J]()}return!1}},{key:J,value:function(){return this[Ke]}},{key:K,value:function(){return this[J]()}},{key:W,value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;return e?this[e]:this[Ue]}},{key:_,value:function(){var t=Object.create(null);this[j]&&(t.$content=this[j]);var r,n=y(Object.getOwnPropertyNames(this));try{for(n.s();!(r=n.n()).done;){var a=r.value,i=this[a];null!==i&&(i instanceof e?t[a]=i[_]():i instanceof nt?i.isEmpty()||(t[a]=i.dump()):t[a]=i)}}catch(e){n.e(e)}finally{n.f()}return t}},{key:Le,value:function(){return null}},{key:Me,value:function(){return n.HTMLResult.EMPTY}},{key:V,value:v().mark((function e(){var t,r,n;return v().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:t=y(this[W]()),e.prev=1,t.s();case 3:if((r=t.n()).done){e.next=9;break}return n=r.value,e.next=7,n;case 7:e.next=3;break;case 9:e.next=14;break;case 11:e.prev=11,e.t0=e.catch(1),t.e(e.t0);case 14:return e.prev=14,t.f(),e.finish(14);case 17:case"end":return e.stop()}}),e,this,[[1,11,14,17]])}))},{key:qe,value:v().mark((function e(t,r){var n,a,i,o,s;return v().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=y(this[V]()),e.prev=1,n.s();case 3:if((a=n.n()).done){e.next=13;break}if(i=a.value,t&&r!==t.has(i[ge])){e.next=11;break}return o=this[U](),(s=i[Me](o)).success||(this[L].failingNode=i),e.next=11,s;case 11:e.next=3;break;case 13:e.next=18;break;case 15:e.prev=15,e.t0=e.catch(1),n.e(e.t0);case 18:return e.prev=18,n.f(),e.finish(18);case 21:case"end":return e.stop()}}),e,this,[[1,15,18,21]])}))},{key:N,value:function(){return null}},{key:O,value:function(e,t){this[L].children.push(e)}},{key:U,value:function(){}},{key:C,value:function(e){var t=e.filter,r=void 0===t?null:t,a=e.include,i=void 0===a||a;if(this[L].generator){var o=this[U](),s=this[L].failingNode[Me](o);if(!s.success)return s;s.html&&this[O](s.html,s.bbox),delete this[L].failingNode}else this[L].generator=this[qe](r,i);for(;;){var c=this[L].generator.next();if(c.done)break;var u=c.value;if(!u.success)return u;u.html&&this[O](u.html,u.bbox)}return this[L].generator=null,n.HTMLResult.EMPTY}},{key:Pe,value:function(e){this[Ze]=new Set(Object.keys(e))}},{key:ze,value:function(e){var t,r=this[Be],n=this[Ze];return(t=e,function(e){if(Array.isArray(e))return b(e)}(t)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(t)||m(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()).filter((function(e){return r.has(e)&&!n.has(e)}))}},{key:Ae,value:function(e){var t,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new Set,n=y(this[Ue]);try{for(n.s();!(t=n.n()).done;)t.value[Je](e,r)}catch(e){n.e(e)}finally{n.f()}}},{key:Je,value:function(e,t){var r=this[Ge](e,t);r?this[Ne](r,e,t):this[Ae](e,t)}},{key:Ge,value:function(e,t){var r=this.use,n=this.usehref;if(!r&&!n)return null;var i=null,o=null,c=null,u=r;if(n?(u=n,n.startsWith("#som(")&&n.endsWith(")")?o=n.slice(5,n.length-1):n.startsWith(".#som(")&&n.endsWith(")")?o=n.slice(6,n.length-1):n.startsWith("#")?c=n.slice(1):n.startsWith(".#")&&(c=n.slice(2))):r.startsWith("#")?c=r.slice(1):o=r,this.use=this.usehref="",c?i=e.get(c):(i=(0,s.searchNode)(e.get(Oe),this,o,!0,!1))&&(i=i[0]),!i)return(0,a.warn)("XFA - Invalid prototype reference: ".concat(u,".")),null;if(i[ge]!==this[ge])return(0,a.warn)("XFA - Incompatible prototype: ".concat(i[ge]," !== ").concat(this[ge],".")),null;if(t.has(i))return(0,a.warn)("XFA - Cycle detected in prototypes use."),null;t.add(i);var l=i[Ge](e,t);return l&&i[Ne](l,e,t),i[Ae](e,t),t.delete(i),i}},{key:Ne,value:function(e,t,r){if(r.has(e))(0,a.warn)("XFA - Cycle detected in prototypes use.");else{!this[j]&&e[j]&&(this[j]=e[j]),new Set(r).add(e);var n,i=y(this[ze](e[Ze]));try{for(i.s();!(n=i.n()).done;){var o=n.value;this[o]=e[o],this[Ze]&&this[Ze].add(o)}}catch(e){i.e(e)}finally{i.f()}var s,c=y(Object.getOwnPropertyNames(this));try{for(c.s();!(s=c.n()).done;){var u=s.value;if(!this[Be].has(u)){var l=this[u],f=e[u];if(l instanceof nt){var h,d=y(l[Ue]);try{for(d.s();!(h=d.n()).done;)h.value[Je](t,r)}catch(e){d.e(e)}finally{d.f()}for(var p=l[Ue].length,g=f[Ue].length;p0&&void 0!==arguments[0]?arguments[0]:null;return e?this[Ue].filter((function(t){return t[ge]===e})):this[Ue]}},{key:$,value:function(e){return this[e]}},{key:X,value:function(e,t){var r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];return Array.from(this[H](e,t,r))}},{key:H,value:function(e,t){var r=this,n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];return v().mark((function a(){var i,o,s;return v().wrap((function(a){for(;;)switch(a.prev=a.next){case 0:if("parent"!==e){a.next=4;break}return a.next=3,r[Ke];case 3:return a.abrupt("return");case 4:i=y(r[Ue]),a.prev=5,i.s();case 7:if((o=i.n()).done){a.next=19;break}if((s=o.value)[ge]!==e){a.next=12;break}return a.next=12,s;case 12:if(s.name!==e){a.next=15;break}return a.next=15,s;case 15:if(!t&&!s[fe]()){a.next=17;break}return a.delegateYield(s[H](e,t,!1),"t0",17);case 17:a.next=7;break;case 19:a.next=24;break;case 21:a.prev=21,a.t1=a.catch(5),i.e(a.t1);case 24:return a.prev=24,i.f(),a.finish(24);case 27:if(!n||!r[Be].has(e)){a.next=30;break}return a.next=30,new at(r,e,r[e]);case 30:case"end":return a.stop()}}),a,null,[[5,21,24,27]])}))()}}],[{key:$e,value:function(t){return Array.isArray(t)?t.map((function(t){return e[$e](t)})):"object"===g(t)&&null!==t?Object.assign({},t):t}}]),e}();t.XFAObject=rt;var nt=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1/0;w(this,e),this[Ve]=t,this[Ue]=[]}return S(e,[{key:"push",value:function(e){return this[Ue].length<=this[Ve]?(this[Ue].push(e),!0):((0,a.warn)('XFA - node "'.concat(e[ge],'" accepts no more than ').concat(this[Ve]," children")),!1)}},{key:"isEmpty",value:function(){return 0===this[Ue].length}},{key:"dump",value:function(){return 1===this[Ue].length?this[Ue][0][_]():this[Ue].map((function(e){return e[_]()}))}},{key:I,value:function(){var t=new e(this[Ve]);return t[Ue]=this[Ue].map((function(e){return e[I]()})),t}},{key:"children",get:function(){return this[Ue]}},{key:"clear",value:function(){this[Ue].length=0}}]),e}();t.XFAObjectArray=nt;var at=function(){function e(t,r,n){w(this,e),this[Ke]=t,this[ge]=r,this[j]=n,this[E]=!1,this[Re]="attribute".concat(et++)}return S(e,[{key:J,value:function(){return this[Ke]}},{key:oe,value:function(){return!0}},{key:q,value:function(){return this[j].trim()}},{key:Te,value:function(e){function t(t){return e.apply(this,arguments)}return t.toString=function(){return e.toString()},t}((function(e){e=e.value||"",this[j]=e.toString()}))},{key:Ee,value:function(){return this[j]}},{key:se,value:function(e){return this[Ke]===e||this[Ke][se](e)}}]),e}();t.XFAAttribute=at;var it=function(e){l(r,e);var t=h(r);function r(e,n){var a,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(w(this,r),(a=t.call(this,e,n))[j]="",a[Xe]=null,"#text"!==n){var o=new Map;a[De]=o;for(var s=0,c=Object.entries(i);s"),this[j])"string"==typeof this[j]?e.push((0,i.encodeToXmlString)(this[j])):this[j][_e](e);else{var d,p=y(this[Ue]);try{for(p.s();!(d=p.n()).done;)d.value[_e](e)}catch(e){p.e(e)}finally{p.f()}}e.push(""))}else e.push("/>")}else e.push((0,i.encodeToXmlString)(this[j]))}},{key:ye,value:function(e){if(this[j]){var t=new r(this[pe],"#text");this[A](t),t[j]=this[j],this[j]=""}return this[A](e),!0}},{key:be,value:function(e){this[j]+=e}},{key:R,value:function(){if(this[j]&&this[Ue].length>0){var e=new r(this[pe],"#text");this[A](e),e[j]=this[j],delete this[j]}}},{key:Me,value:function(){return"#text"===this[ge]?n.HTMLResult.success({name:"#text",value:this[j]}):n.HTMLResult.EMPTY}},{key:W,value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;return e?this[Ue].filter((function(t){return t[ge]===e})):this[Ue]}},{key:B,value:function(){return this[De]}},{key:$,value:function(e){var t=this[De].get(e);return void 0!==t?t:this[W](e)}},{key:H,value:v().mark((function(e,t){var r,n,a,i;return v().wrap((function(o){for(;;)switch(o.prev=o.next){case 0:if(!(r=this[De].get(e))){o.next=4;break}return o.next=4,r;case 4:n=y(this[Ue]),o.prev=5,n.s();case 7:if((a=n.n()).done){o.next=16;break}if((i=a.value)[ge]!==e){o.next=12;break}return o.next=12,i;case 12:if(!t){o.next=14;break}return o.delegateYield(i[H](e,t),"t0",14);case 14:o.next=7;break;case 16:o.next=21;break;case 18:o.prev=18,o.t1=o.catch(5),n.e(o.t1);case 21:return o.prev=21,n.f(),o.finish(21);case 24:case"end":return o.stop()}}),r,this,[[5,18,21,24]])}))},{key:D,value:v().mark((function(e,t){var r,n,a,i;return v().wrap((function(o){for(;;)switch(o.prev=o.next){case 0:if(!(r=this[De].get(e))||t&&r[E]){o.next=4;break}return o.next=4,r;case 4:n=y(this[Ue]),o.prev=5,n.s();case 7:if((a=n.n()).done){o.next=12;break}return i=a.value,o.delegateYield(i[D](e,t),"t0",10);case 10:o.next=7;break;case 12:o.next=17;break;case 14:o.prev=14,o.t1=o.catch(5),n.e(o.t1);case 17:return o.prev=17,n.f(),o.finish(17);case 20:case"end":return o.stop()}}),r,this,[[5,14,17,20]])}))},{key:z,value:v().mark((function e(t,r,n){var a,i,o;return v().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:a=y(this[Ue]),e.prev=1,a.s();case 3:if((i=a.n()).done){e.next=12;break}if((o=i.value)[ge]!==t||n&&o[E]){e.next=8;break}return e.next=8,o;case 8:if(!r){e.next=10;break}return e.delegateYield(o[z](t,r,n),"t0",10);case 10:e.next=3;break;case 12:e.next=17;break;case 14:e.prev=14,e.t1=e.catch(1),a.e(e.t1);case 17:return e.prev=17,a.f(),e.finish(17);case 20:case"end":return e.stop()}}),e,this,[[1,14,17,20]])}))},{key:oe,value:function(){return null===this[Xe]?0===this[Ue].length||this[Ue][0][pe]===o.NamespaceIds.xhtml.id:this[Xe]}},{key:q,value:function(){return null===this[Xe]?0===this[Ue].length?this[j].trim():this[Ue][0][pe]===o.NamespaceIds.xhtml.id?this[Ue][0][Ee]().trim():null:this[j].trim()}},{key:Te,value:function(e){function t(t){return e.apply(this,arguments)}return t.toString=function(){return e.toString()},t}((function(e){e=e.value||"",this[j]=e.toString()}))},{key:_,value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=Object.create(null);e&&(t.$ns=this[pe]),this[j]&&(t.$content=this[j]),t.$name=this[ge],t.children=[];var r,n=y(this[Ue]);try{for(n.s();!(r=n.n()).done;){var a=r.value;t.children.push(a[_](e))}}catch(e){n.e(e)}finally{n.f()}t.attributes=Object.create(null);var i,o=y(this[De]);try{for(o.s();!(i=o.n()).done;){var s=u(i.value,2),c=s[0],l=s[1];t.attributes[c]=l[j]}}catch(e){o.e(e)}finally{o.f()}return t}}]),r}(rt);t.XmlObject=it;var ot=function(e){l(r,e);var t=h(r);function r(e,n){var a;return w(this,r),(a=t.call(this,e,n))[j]="",a}return S(r,[{key:be,value:function(e){this[j]+=e}},{key:R,value:function(){}}]),r}(rt);t.ContentObject=ot;var st=function(e){l(r,e);var t=h(r);function r(e,n,a){var i;return w(this,r),(i=t.call(this,e,n))[Ye]=a,i}return S(r,[{key:R,value:function(){var e=this;this[j]=(0,n.getKeyword)({data:this[j],defaultValue:this[Ye][0],validate:function(t){return e[Ye].includes(t)}})}},{key:F,value:function(e){c(p(r.prototype),F,this).call(this,e),delete this[Ye]}}]),r}(ot);t.OptionObject=st;var ct=function(e){l(r,e);var t=h(r);function r(){return w(this,r),t.apply(this,arguments)}return S(r,[{key:R,value:function(){this[j]=this[j].trim()}}]),r}(ot);t.StringObject=ct;var ut=function(e){l(r,e);var t=h(r);function r(e,n,a,i){var o;return w(this,r),(o=t.call(this,e,n))[He]=a,o[Qe]=i,o}return S(r,[{key:R,value:function(){this[j]=(0,n.getInteger)({data:this[j],defaultValue:this[He],validate:this[Qe]})}},{key:F,value:function(e){c(p(r.prototype),F,this).call(this,e),delete this[He],delete this[Qe]}}]),r}(ot);t.IntegerObject=ut;var lt=function(e){l(r,e);var t=h(r);function r(e,n){return w(this,r),t.call(this,e,n,0,(function(e){return 1===e}))}return S(r)}(ut);t.Option01=lt;var ft=function(e){l(r,e);var t=h(r);function r(e,n){return w(this,r),t.call(this,e,n,1,(function(e){return 0===e}))}return S(r)}(ut);t.Option10=ft},(e,t,r)=>{function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.HTMLResult=void 0,t.getBBox=function(e){var t=-1;if(!e)return{x:t,y:t,width:t,height:t};var r=e.trim().split(/\\s*,\\s*/).map((function(e){return f(e,"-1")}));if(r.length<4||r[2]<0||r[3]<0)return{x:t,y:t,width:t,height:t};var n=o(r,4);return{x:n[0],y:n[1],width:n[2],height:n[3]}},t.getColor=function(e){var t=o(arguments.length>1&&void 0!==arguments[1]?arguments[1]:[0,0,0],3),r=t[0],n=t[1],a=t[2];if(!e)return{r,g:n,b:a};var i=e.trim().split(/\\s*,\\s*/).map((function(e){return Math.min(Math.max(0,parseInt(e.trim(),10)),255)})).map((function(e){return isNaN(e)?0:e}));if(i.length<3)return{r,g:n,b:a};var s=o(i,3);return{r:r=s[0],g:n=s[1],b:a=s[2]}},t.getFloat=function(e){var t=e.data,r=e.defaultValue,n=e.validate;if(!t)return r;t=t.trim();var a=parseFloat(t);return!isNaN(a)&&n(a)?a:r},t.getInteger=function(e){var t=e.data,r=e.defaultValue,n=e.validate;if(!t)return r;t=t.trim();var a=parseInt(t,10);return!isNaN(a)&&n(a)?a:r},t.getKeyword=l,t.getMeasurement=f,t.getRatio=function(e){if(!e)return{num:1,den:1};var t=e.trim().split(/\\s*:\\s*/).map((function(e){return parseFloat(e)})).filter((function(e){return!isNaN(e)}));if(1===t.length&&t.push(1),0===t.length)return{num:1,den:1};var r=o(t,2);return{num:r[0],den:r[1]}},t.getRelevant=function(e){return e?e.trim().split(/\\s+/).map((function(e){return{excluded:"-"===e[0],viewname:e.substring(1)}})):[]},t.getStringOption=function(e,t){return l({data:e,defaultValue:t[0],validate:function(e){return t.includes(e)}})},t.stripQuotes=function(e){return e.startsWith("'")||e.startsWith('"')?e.slice(1,e.length-1):e};var a=r(2);function i(e,t){for(var r=0;re.length)&&(t=e.length);for(var r=0,n=new Array(t);r1&&void 0!==arguments[1]?arguments[1]:"0";if(t=t||"0",!e)return f(t);var r=e.trim().match(u);if(!r)return f(t);var n=o(r,3),a=n[1],i=n[2],s=parseFloat(a);if(isNaN(s))return f(t);if(0===s)return 0;var l=c[i];return l?l(s):s}var h=function(){function e(t,r,n,a){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.success=t,this.html=r,this.bbox=n,this.breakNode=a}var t,r,n;return t=e,n=[{key:"FAILURE",get:function(){return(0,a.shadow)(this,"FAILURE",new e(!1,null,null,null))}},{key:"EMPTY",get:function(){return(0,a.shadow)(this,"EMPTY",new e(!0,null,null,null))}},{key:"breakNode",value:function(t){return new e(!1,null,null,t)}},{key:"success",value:function(t){return new e(!0,t,arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,null)}}],(r=[{key:"isBreak",value:function(){return!!this.breakNode}}])&&i(t.prototype,r),n&&i(t,n),Object.defineProperty(t,"prototype",{writable:!1}),e}();t.HTMLResult=h},(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.NamespaceIds=t.$buildXFAObject=void 0;var r=Symbol();t.$buildXFAObject=r,t.NamespaceIds={config:{id:0,check:function(e){return e.startsWith("http://www.xfa.org/schema/xci/")}},connectionSet:{id:1,check:function(e){return e.startsWith("http://www.xfa.org/schema/xfa-connection-set/")}},datasets:{id:2,check:function(e){return e.startsWith("http://www.xfa.org/schema/xfa-data/")}},form:{id:3,check:function(e){return e.startsWith("http://www.xfa.org/schema/xfa-form/")}},localeSet:{id:4,check:function(e){return e.startsWith("http://www.xfa.org/schema/xfa-locale-set/")}},pdf:{id:5,check:function(e){return"http://ns.adobe.com/xdp/pdf/"===e}},signature:{id:6,check:function(e){return"http://www.w3.org/2000/09/xmldsig#"===e}},sourceSet:{id:7,check:function(e){return e.startsWith("http://www.xfa.org/schema/xfa-source-set/")}},stylesheet:{id:8,check:function(e){return"http://www.w3.org/1999/XSL/Transform"===e}},template:{id:9,check:function(e){return e.startsWith("http://www.xfa.org/schema/xfa-template/")}},xdc:{id:10,check:function(e){return e.startsWith("http://www.xfa.org/schema/xdc/")}},xdp:{id:11,check:function(e){return"http://ns.adobe.com/xdp/"===e}},xfdf:{id:12,check:function(e){return"http://ns.adobe.com/xfdf/"===e}},xhtml:{id:13,check:function(e){return"http://www.w3.org/1999/xhtml"===e}},xmpmeta:{id:14,check:function(e){return"http://ns.adobe.com/xmpmeta/"===e}}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createDataNode=function(e,t,r){var a=y(r);if(!a)return null;if(a.some((function(e){return e.operator===d.dotDot})))return null;var o=p.get(a[0].name),s=0;o?(e=o(e,t),s=1):e=t||e;for(var c=a.length;s4&&void 0!==arguments[4])||arguments[4],i=y(r,!(arguments.length>3&&void 0!==arguments[3])||arguments[3]);if(!i)return null;var c,u=p.get(i[0].name),l=0;u?(c=!0,e=[u(e,t)],l=1):(c=null===t,e=[t||e]);for(var f=function(r){var s,u=i[l],f=u.name,h=u.cacheName,p=u.operator,v=u.index,y=[],m=o(e);try{for(m.s();!(s=m.n()).done;){var b=s.value;if(b instanceof n.XFAObject){var w=void 0,k=void 0;if(a&&((k=g.get(b))||(k=new Map,g.set(b,k)),w=k.get(h)),!w){switch(p){case d.dot:w=b[n.$getChildrenByName](f,!1);break;case d.dotDot:w=b[n.$getChildrenByName](f,!0);break;case d.dotHash:w=(w=b[n.$getChildrenByClass](f))instanceof n.XFAObjectArray?w.children:[w]}a&&k.set(h,w)}w.length>0&&y.push(w)}}}catch(e){m.e(e)}finally{m.f()}if(0===y.length&&!c&&0===l){var S=t[n.$getParent]();return(t=S)?(l=-1,e=[t],"continue"):{v:null}}e=isFinite(v)?y.filter((function(e){return v=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return o=e.done,e},e:function(e){s=!0,i=e},f:function(){try{o||null==r.return||r.return()}finally{if(s)throw i}}}}function s(e){return s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},s(e)}function c(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,o,s=[],c=!0,u=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){u=!0,a=e}finally{try{if(!c&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(u)throw a}}return s}}(e,t)||u(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function u(e,t){if(e){if("string"==typeof e)return l(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?l(e,t):void 0}}function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r2&&void 0!==arguments[2])||arguments[2],n=e.match(f);if(!n)return null;for(var a,o=c(n,1)[0],s=[{name:o,cacheName:"."+o,index:0,js:null,formCalc:null,operator:d.dot}],u=o.length;u{Object.defineProperty(t,"__esModule",{value:!0}),t.Binder=void 0;var n=r(206),a=r(211),i=r(209),o=r(208),s=r(2);function c(e){return c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},c(e)}function u(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,o,s=[],c=!0,u=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){u=!0,a=e}finally{try{if(!c&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(u)throw a}}return s}}(e,t)||f(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function l(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=f(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,a=function(){};return{s:a,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return o=e.done,e},e:function(e){s=!0,i=e},f:function(){try{o||null==r.return||r.return()}finally{if(s)throw i}}}}function f(e,t){if(e){if("string"==typeof e)return h(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?h(e,t):void 0}}function h(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r1&&((a=e[n.$clone]())[n.$removeChild](a.occur),a.occur=null),this._bindValue(e,t[0],r),this._setProperties(e,t[0]),this._bindItems(e,t[0]),1!==t.length)for(var i=e[n.$getParent](),o=e[n.$nodeName],s=i[n.$indexOf](e),c=1,u=t.length;cm?g=g.slice(0,m):0===g.length&&(g=null),g&&this._isConsumeData()&&g.forEach((function(e){e[n.$consumed]=!0}))}else{if(!c.name){this._setAndBind(c,t);continue}if(this._isConsumeData()){for(var b=[];b.length0?b:null}else{if(!(g=t[n.$getRealChildrenByNameIt](c.name,!1,this.emptyMerge).next().value)){if(0===y){r.push(c);continue}var k=t[n.$namespaceId]===p?-1:t[n.$namespaceId];g=c[n.$data]=new n.XmlObject(k,c.name),this.emptyMerge&&(g[n.$consumed]=!0),t[n.$appendChild](g),this._setAndBind(c,g);continue}this.emptyMerge&&(g[n.$consumed]=!0),g=[g]}}g?this._bindOccurrences(c,g,h):y>0?this._setAndBind(c,t):r.push(c)}}else{this._mergeMode="consumeData"===c.mergeMode;var S=t[n.$getChildren]();if(S.length>0)this._bindOccurrences(c,[S[0]],null);else if(this.emptyMerge){var x=t[n.$namespaceId]===p?-1:t[n.$namespaceId],O=c[n.$data]=new n.XmlObject(x,c.name||"root");t[n.$appendChild](O),this._bindElement(c,O)}}}}catch(e){o.e(e)}finally{o.f()}r.forEach((function(e){return e[n.$getParent]()[n.$removeChild](e)}))}}])&&d(t.prototype,r),Object.defineProperty(t,"prototype",{writable:!1}),e}();t.Binder=v},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Value=t.Text=t.TemplateNamespace=t.Template=t.SetProperty=t.Items=t.Field=t.BindItems=void 0;var n=r(206),a=r(208),i=r(212),o=r(213),s=r(207),c=r(2),u=r(214),l=r(135),f=r(209);function h(e){return h="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},h(e)}function d(){return d="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,t,r){var n=function(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=k(e)););return e}(e,t);if(n){var a=Object.getOwnPropertyDescriptor(n,t);return a.get?a.get.call(arguments.length<3?e:r):a.value}},d.apply(this,arguments)}function p(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,o,s=[],c=!0,u=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){u=!0,a=e}finally{try{if(!c&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(u)throw a}}return s}}(e,t)||A(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function g(e,t){for(var r=0;r=0;--a){var i=this.tryEntries[a],o=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var s=r.call(i,"catchLoc"),c=r.call(i,"finallyLoc");if(s&&c){if(this.prev=0;--n){var a=this.tryEntries[n];if(a.tryLoc<=this.prev&&r.call(a,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),C(r),f}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var a=n.arg;C(r)}return a}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:P(e),resultName:t,nextLoc:r},"next"===this.method&&(this.arg=void 0),f}},e}var x=S().mark(L);function O(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=A(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,a=function(){};return{s:a,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return o=e.done,e},e:function(e){s=!0,i=e},f:function(){try{o||null==r.return||r.return()}finally{if(s)throw i}}}}function A(e,t){if(e){if("string"==typeof e)return C(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?C(e,t):void 0}}function C(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r180?1:0,f=50*(1+Math.cos(c)),h=50*(1-Math.sin(c)),d=50*(1+Math.cos(c+u)),p=50*(1-Math.sin(c+u));e={name:"path",attributes:{xmlns:P,d:"M ".concat(f," ").concat(h," A 50 50 0 ").concat(l," 0 ").concat(d," ").concat(p),vectorEffect:"non-scaling-stroke",style:a}},Object.assign(i,{viewBox:"0 0 100 100",preserveAspectRatio:"none"})}var g={name:"svg",children:[e],attributes:i};return M(this[n.$getParent]()[n.$getParent]())?s.HTMLResult.success({name:"div",attributes:{style:{display:"inline",width:"100%",height:"100%"}},children:[g]}):(g.attributes.style.position="absolute",s.HTMLResult.success(g))}}]),r}(n.XFAObject),W=function(e){m(r,e);var t=w(r);function r(e){var a;return y(this,r),(a=t.call(this,F,"area",!0)).colSpan=(0,s.getInteger)({data:e.colSpan,defaultValue:1,validate:function(e){return e>=1||-1===e}}),a.id=e.id||"",a.name=e.name||"",a.relevant=(0,s.getRelevant)(e.relevant),a.use=e.use||"",a.usehref=e.usehref||"",a.x=(0,s.getMeasurement)(e.x,"0pt"),a.y=(0,s.getMeasurement)(e.y,"0pt"),a.desc=null,a.extras=null,a.area=new n.XFAObjectArray,a.draw=new n.XFAObjectArray,a.exObject=new n.XFAObjectArray,a.exclGroup=new n.XFAObjectArray,a.field=new n.XFAObjectArray,a.subform=new n.XFAObjectArray,a.subformSet=new n.XFAObjectArray,a}return v(r,[{key:n.$getContainedChildren,value:S().mark((function e(){return S().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.delegateYield(L(this),"t0",1);case 1:case"end":return e.stop()}}),e,this)}))},{key:n.$isTransparent,value:function(){return!0}},{key:n.$isBindable,value:function(){return!0}},{key:n.$addHTML,value:function(e,t){var r=p(t,4),a=r[0],i=r[1],o=r[2],s=r[3];this[n.$extra].width=Math.max(this[n.$extra].width,a+o),this[n.$extra].height=Math.max(this[n.$extra].height,i+s),this[n.$extra].children.push(e)}},{key:n.$getAvailableSpace,value:function(){return this[n.$extra].availableSpace}},{key:n.$toHTML,value:function(e){var t=(0,o.toStyle)(this,"position"),r={style:t,id:this[n.$uid],class:["xfaArea"]};(0,o.isPrintOnly)(this)&&r.class.push("xfaPrintOnly"),this.name&&(r.xfaName=this.name);var a=[];this[n.$extra]={children:a,width:0,height:0,availableSpace:e};var i=this[n.$childrenToHTML]({filter:new Set(["area","draw","field","exclGroup","subform","subformSet"]),include:!0});if(!i.success)return i.isBreak()?i:(delete this[n.$extra],s.HTMLResult.FAILURE);t.width=(0,o.measureToString)(this[n.$extra].width),t.height=(0,o.measureToString)(this[n.$extra].height);var c={name:"div",attributes:r,children:a},u=[this.x,this.y,this[n.$extra].width,this[n.$extra].height];return delete this[n.$extra],s.HTMLResult.success(c,u)}}]),r}(n.XFAObject),V=function(e){m(r,e);var t=w(r);function r(e){var n;return y(this,r),(n=t.call(this,F,"assist",!0)).id=e.id||"",n.role=e.role||"",n.use=e.use||"",n.usehref=e.usehref||"",n.speak=null,n.toolTip=null,n}return v(r,[{key:n.$toHTML,value:function(){return this.toolTip&&this.toolTip[n.$content]?this.toolTip[n.$content]:null}}]),r}(n.XFAObject),Y=function(e){m(r,e);var t=w(r);function r(e){var n;return y(this,r),(n=t.call(this,F,"barcode",!0)).charEncoding=(0,s.getKeyword)({data:e.charEncoding?e.charEncoding.toLowerCase():"",defaultValue:"",validate:function(e){return["utf-8","big-five","fontspecific","gbk","gb-18030","gb-2312","ksc-5601","none","shift-jis","ucs-2","utf-16"].includes(e)||e.match(/iso-8859-\\d{2}/)}}),n.checksum=(0,s.getStringOption)(e.checksum,["none","1mod10","1mod10_1mod11","2mod10","auto"]),n.dataColumnCount=(0,s.getInteger)({data:e.dataColumnCount,defaultValue:-1,validate:function(e){return e>=0}}),n.dataLength=(0,s.getInteger)({data:e.dataLength,defaultValue:-1,validate:function(e){return e>=0}}),n.dataPrep=(0,s.getStringOption)(e.dataPrep,["none","flateCompress"]),n.dataRowCount=(0,s.getInteger)({data:e.dataRowCount,defaultValue:-1,validate:function(e){return e>=0}}),n.endChar=e.endChar||"",n.errorCorrectionLevel=(0,s.getInteger)({data:e.errorCorrectionLevel,defaultValue:-1,validate:function(e){return e>=0&&e<=8}}),n.id=e.id||"",n.moduleHeight=(0,s.getMeasurement)(e.moduleHeight,"5mm"),n.moduleWidth=(0,s.getMeasurement)(e.moduleWidth,"0.25mm"),n.printCheckDigit=(0,s.getInteger)({data:e.printCheckDigit,defaultValue:0,validate:function(e){return 1===e}}),n.rowColumnRatio=(0,s.getRatio)(e.rowColumnRatio),n.startChar=e.startChar||"",n.textLocation=(0,s.getStringOption)(e.textLocation,["below","above","aboveEmbedded","belowEmbedded","none"]),n.truncate=(0,s.getInteger)({data:e.truncate,defaultValue:0,validate:function(e){return 1===e}}),n.type=(0,s.getStringOption)(e.type?e.type.toLowerCase():"",["aztec","codabar","code2of5industrial","code2of5interleaved","code2of5matrix","code2of5standard","code3of9","code3of9extended","code11","code49","code93","code128","code128a","code128b","code128c","code128sscc","datamatrix","ean8","ean8add2","ean8add5","ean13","ean13add2","ean13add5","ean13pwcd","fim","logmars","maxicode","msi","pdf417","pdf417macro","plessey","postauscust2","postauscust3","postausreplypaid","postausstandard","postukrm4scc","postusdpbc","postusimb","postusstandard","postus5zip","qrcode","rfid","rss14","rss14expanded","rss14limited","rss14stacked","rss14stackedomni","rss14truncated","telepen","ucc128","ucc128random","ucc128sscc","upca","upcaadd2","upcaadd5","upcapwcd","upce","upceadd2","upceadd5","upcean2","upcean5","upsmaxicode"]),n.upsMode=(0,s.getStringOption)(e.upsMode,["usCarrier","internationalCarrier","secureSymbol","standardSymbol"]),n.use=e.use||"",n.usehref=e.usehref||"",n.wideNarrowRatio=(0,s.getRatio)(e.wideNarrowRatio),n.encrypt=null,n.extras=null,n}return v(r)}(n.XFAObject),K=function(e){m(r,e);var t=w(r);function r(e){var n;return y(this,r),(n=t.call(this,F,"bind",!0)).match=(0,s.getStringOption)(e.match,["once","dataRef","global","none"]),n.ref=e.ref||"",n.picture=null,n}return v(r)}(n.XFAObject),J=function(e){m(r,e);var t=w(r);function r(e){var n;return y(this,r),(n=t.call(this,F,"bindItems")).connection=e.connection||"",n.labelRef=e.labelRef||"",n.ref=e.ref||"",n.valueRef=e.valueRef||"",n}return v(r)}(n.XFAObject);t.BindItems=J;var Z=function(e){m(r,e);var t=w(r);function r(e){var n;return y(this,r),(n=t.call(this,F,"bookend")).id=e.id||"",n.leader=e.leader||"",n.trailer=e.trailer||"",n.use=e.use||"",n.usehref=e.usehref||"",n}return v(r)}(n.XFAObject),Q=function(e){m(r,e);var t=w(r);function r(e){var n;return y(this,r),(n=t.call(this,F,"boolean")).id=e.id||"",n.name=e.name||"",n.use=e.use||"",n.usehref=e.usehref||"",n}return v(r,[{key:n.$toHTML,value:function(e){return U(1===this[n.$content]?"1":"0")}}]),r}(n.Option01),ee=function(e){m(r,e);var t=w(r);function r(e){var a;return y(this,r),(a=t.call(this,F,"border",!0)).break=(0,s.getStringOption)(e.break,["close","open"]),a.hand=(0,s.getStringOption)(e.hand,["even","left","right"]),a.id=e.id||"",a.presence=(0,s.getStringOption)(e.presence,["visible","hidden","inactive","invisible"]),a.relevant=(0,s.getRelevant)(e.relevant),a.use=e.use||"",a.usehref=e.usehref||"",a.corner=new n.XFAObjectArray(4),a.edge=new n.XFAObjectArray(4),a.extras=null,a.fill=null,a.margin=null,a}return v(r,[{key:n.$getExtra,value:function(){if(!this[n.$extra]){var e=this.edge.children.slice();if(e.length<4)for(var t=e.at(-1)||new Ae({}),r=e.length;r<4;r++)e.push(t);var a=e.map((function(e){return e.thickness})),i=[0,0,0,0];this.margin&&(i[0]=this.margin.topInset,i[1]=this.margin.rightInset,i[2]=this.margin.bottomInset,i[3]=this.margin.leftInset),this[n.$extra]={widths:a,insets:i,edges:e}}return this[n.$extra]}},{key:n.$toStyle,value:function(){var e=this[n.$getExtra]().edges.map((function(e){var t=e[n.$toStyle]();return t.color=t.color||"#000000",t})),t=Object.create(null);if(this.margin&&Object.assign(t,this.margin[n.$toStyle]()),this.fill&&"visible"===this.fill.presence&&Object.assign(t,this.fill[n.$toStyle]()),this.corner.children.some((function(e){return 0!==e.radius}))){var r=this.corner.children.map((function(e){return e[n.$toStyle]()}));if(2===r.length||3===r.length)for(var a=r.at(-1),i=r.length;i<4;i++)r.push(a);t.borderRadius=r.map((function(e){return e.radius})).join(" ")}switch(this.presence){case"invisible":case"hidden":t.borderStyle="";break;case"inactive":t.borderStyle="none";break;default:t.borderStyle=e.map((function(e){return e.style})).join(" ")}return t.borderWidth=e.map((function(e){return e.width})).join(" "),t.borderColor=e.map((function(e){return e.color})).join(" "),t}}]),r}(n.XFAObject),te=function(e){m(r,e);var t=w(r);function r(e){var n;return y(this,r),(n=t.call(this,F,"break",!0)).after=(0,s.getStringOption)(e.after,["auto","contentArea","pageArea","pageEven","pageOdd"]),n.afterTarget=e.afterTarget||"",n.before=(0,s.getStringOption)(e.before,["auto","contentArea","pageArea","pageEven","pageOdd"]),n.beforeTarget=e.beforeTarget||"",n.bookendLeader=e.bookendLeader||"",n.bookendTrailer=e.bookendTrailer||"",n.id=e.id||"",n.overflowLeader=e.overflowLeader||"",n.overflowTarget=e.overflowTarget||"",n.overflowTrailer=e.overflowTrailer||"",n.startNew=(0,s.getInteger)({data:e.startNew,defaultValue:0,validate:function(e){return 1===e}}),n.use=e.use||"",n.usehref=e.usehref||"",n.extras=null,n}return v(r)}(n.XFAObject),re=function(e){m(r,e);var t=w(r);function r(e){var n;return y(this,r),(n=t.call(this,F,"breakAfter",!0)).id=e.id||"",n.leader=e.leader||"",n.startNew=(0,s.getInteger)({data:e.startNew,defaultValue:0,validate:function(e){return 1===e}}),n.target=e.target||"",n.targetType=(0,s.getStringOption)(e.targetType,["auto","contentArea","pageArea"]),n.trailer=e.trailer||"",n.use=e.use||"",n.usehref=e.usehref||"",n.script=null,n}return v(r)}(n.XFAObject),ne=function(e){m(r,e);var t=w(r);function r(e){var n;return y(this,r),(n=t.call(this,F,"breakBefore",!0)).id=e.id||"",n.leader=e.leader||"",n.startNew=(0,s.getInteger)({data:e.startNew,defaultValue:0,validate:function(e){return 1===e}}),n.target=e.target||"",n.targetType=(0,s.getStringOption)(e.targetType,["auto","contentArea","pageArea"]),n.trailer=e.trailer||"",n.use=e.use||"",n.usehref=e.usehref||"",n.script=null,n}return v(r,[{key:n.$toHTML,value:function(e){return this[n.$extra]={},s.HTMLResult.FAILURE}}]),r}(n.XFAObject),ae=function(e){m(r,e);var t=w(r);function r(e){var n;return y(this,r),(n=t.call(this,F,"button",!0)).highlight=(0,s.getStringOption)(e.highlight,["inverted","none","outline","push"]),n.id=e.id||"",n.use=e.use||"",n.usehref=e.usehref||"",n.extras=null,n}return v(r,[{key:n.$toHTML,value:function(e){var t,r=this[n.$getParent]()[n.$getParent](),a={name:"button",attributes:{id:this[n.$uid],class:["xfaButton"],style:{}},children:[]},i=O(r.event.children);try{for(i.s();!(t=i.n()).done;){var c=t.value;if("click"===c.activity&&c.script){var u=(0,l.recoverJsURL)(c.script[n.$content]);if(u){var f=(0,o.fixURL)(u.url);f&&a.children.push({name:"a",attributes:{id:"link"+this[n.$uid],href:f,newWindow:u.newWindow,class:["xfaLink"],style:{}},children:[]})}}}}catch(e){i.e(e)}finally{i.f()}return s.HTMLResult.success(a)}}]),r}(n.XFAObject),ie=function(e){m(r,e);var t=w(r);function r(e){var n;return y(this,r),(n=t.call(this,F,"calculate",!0)).id=e.id||"",n.override=(0,s.getStringOption)(e.override,["disabled","error","ignore","warning"]),n.use=e.use||"",n.usehref=e.usehref||"",n.extras=null,n.message=null,n.script=null,n}return v(r)}(n.XFAObject),oe=function(e){m(r,e);var t=w(r);function r(e){var n;return y(this,r),(n=t.call(this,F,"caption",!0)).id=e.id||"",n.placement=(0,s.getStringOption)(e.placement,["left","bottom","inline","right","top"]),n.presence=(0,s.getStringOption)(e.presence,["visible","hidden","inactive","invisible"]),n.reserve=Math.ceil((0,s.getMeasurement)(e.reserve)),n.use=e.use||"",n.usehref=e.usehref||"",n.extras=null,n.font=null,n.margin=null,n.para=null,n.value=null,n}return v(r,[{key:n.$setValue,value:function(e){function t(t){return e.apply(this,arguments)}return t.toString=function(){return e.toString()},t}((function(e){_(this,e)}))},{key:n.$getExtra,value:function(e){if(!this[n.$extra]){var t=e.width,r=e.height;switch(this.placement){case"left":case"right":case"inline":t=this.reserve<=0?t:this.reserve;break;case"top":case"bottom":r=this.reserve<=0?r:this.reserve}this[n.$extra]=(0,o.layoutNode)(this,{width:t,height:r})}return this[n.$extra]}},{key:n.$toHTML,value:function(e){if(!this.value)return s.HTMLResult.EMPTY;this[n.$pushPara]();var t=this.value[n.$toHTML](e).html;if(!t)return this[n.$popPara](),s.HTMLResult.EMPTY;var r=this.reserve;if(this.reserve<=0){var a=this[n.$getExtra](e),i=a.w,c=a.h;switch(this.placement){case"left":case"right":case"inline":this.reserve=i;break;case"top":case"bottom":this.reserve=c}}var u=[];"string"==typeof t?u.push({name:"#text",value:t}):u.push(t);var l=(0,o.toStyle)(this,"font","margin","visibility");switch(this.placement){case"left":case"right":this.reserve>0&&(l.width=(0,o.measureToString)(this.reserve));break;case"top":case"bottom":this.reserve>0&&(l.height=(0,o.measureToString)(this.reserve))}return(0,o.setPara)(this,null,t),this[n.$popPara](),this.reserve=r,s.HTMLResult.success({name:"div",attributes:{style:l,class:["xfaCaption"]},children:u})}}]),r}(n.XFAObject),se=function(e){m(r,e);var t=w(r);function r(e){var n;return y(this,r),(n=t.call(this,F,"certificate")).id=e.id||"",n.name=e.name||"",n.use=e.use||"",n.usehref=e.usehref||"",n}return v(r)}(n.StringObject),ce=function(e){m(r,e);var t=w(r);function r(e){var n;return y(this,r),(n=t.call(this,F,"certificates",!0)).credentialServerPolicy=(0,s.getStringOption)(e.credentialServerPolicy,["optional","required"]),n.id=e.id||"",n.url=e.url||"",n.urlPolicy=e.urlPolicy||"",n.use=e.use||"",n.usehref=e.usehref||"",n.encryption=null,n.issuers=null,n.keyUsage=null,n.oids=null,n.signing=null,n.subjectDNs=null,n}return v(r)}(n.XFAObject),ue=function(e){m(r,e);var t=w(r);function r(e){var n;return y(this,r),(n=t.call(this,F,"checkButton",!0)).id=e.id||"",n.mark=(0,s.getStringOption)(e.mark,["default","check","circle","cross","diamond","square","star"]),n.shape=(0,s.getStringOption)(e.shape,["square","round"]),n.size=(0,s.getMeasurement)(e.size,"10pt"),n.use=e.use||"",n.usehref=e.usehref||"",n.border=null,n.extras=null,n.margin=null,n}return v(r,[{key:n.$toHTML,value:function(e){var t,r,a,i=(0,o.toStyle)("margin"),c=(0,o.measureToString)(this.size);i.width=i.height=c;var u,l=this[n.$getParent]()[n.$getParent](),f=l.items.children.length&&l.items.children[0][n.$toHTML]().html||[],h={on:(void 0!==f[0]?f[0]:"on").toString(),off:(void 0!==f[1]?f[1]:"off").toString()},d=(l.value&&l.value[n.$text]()||"off")===h.on||void 0,p=l[n.$getSubformParent](),g=l[n.$uid];p instanceof Re?(a=p[n.$uid],t="radio",r="xfaRadio",u=p[n.$data]&&p[n.$data][n.$uid]||p[n.$uid]):(t="checkbox",r="xfaCheckbox",u=l[n.$data]&&l[n.$data][n.$uid]||l[n.$uid]);var v={name:"input",attributes:{class:[r],style:i,fieldId:g,dataId:u,type:t,checked:d,xfaOn:h.on,xfaOff:h.off,"aria-label":B(l),"aria-required":!1}};return a&&(v.attributes.name=a),R(l)&&(v.attributes["aria-required"]=!0,v.attributes.required=!0),s.HTMLResult.success({name:"label",attributes:{class:["xfaLabel"]},children:[v]})}}]),r}(n.XFAObject),le=function(e){m(r,e);var t=w(r);function r(e){var n;return y(this,r),(n=t.call(this,F,"choiceList",!0)).commitOn=(0,s.getStringOption)(e.commitOn,["select","exit"]),n.id=e.id||"",n.open=(0,s.getStringOption)(e.open,["userControl","always","multiSelect","onEntry"]),n.textEntry=(0,s.getInteger)({data:e.textEntry,defaultValue:0,validate:function(e){return 1===e}}),n.use=e.use||"",n.usehref=e.usehref||"",n.border=null,n.extras=null,n.margin=null,n}return v(r,[{key:n.$toHTML,value:function(e){var t=(0,o.toStyle)(this,"border","margin"),r=this[n.$getParent]()[n.$getParent](),a=r.font&&r.font.size||10,i={fontSize:"calc(".concat(a,"px * var(--scale-factor))")},c=[];if(r.items.children.length>0){var u=r.items,l=0,f=0;2===u.children.length&&(f=1-(l=u.children[0].save));for(var h=u.children[l][n.$toHTML]().html,d=u.children[f][n.$toHTML]().html,p=!1,g=r.value&&r.value[n.$text]()||"",v=0,y=h.length;v=0}}),n.use=e.use||"",n.usehref=e.usehref||"",n}return v(r)}(n.XFAObject),de=function(e){m(r,e);var t=w(r);function r(e){var n;return y(this,r),(n=t.call(this,F,"connect",!0)).connection=e.connection||"",n.id=e.id||"",n.ref=e.ref||"",n.usage=(0,s.getStringOption)(e.usage,["exportAndImport","exportOnly","importOnly"]),n.use=e.use||"",n.usehref=e.usehref||"",n.picture=null,n}return v(r)}(n.XFAObject),pe=function(e){m(r,e);var t=w(r);function r(e){var n;return y(this,r),(n=t.call(this,F,"contentArea",!0)).h=(0,s.getMeasurement)(e.h),n.id=e.id||"",n.name=e.name||"",n.relevant=(0,s.getRelevant)(e.relevant),n.use=e.use||"",n.usehref=e.usehref||"",n.w=(0,s.getMeasurement)(e.w),n.x=(0,s.getMeasurement)(e.x,"0pt"),n.y=(0,s.getMeasurement)(e.y,"0pt"),n.desc=null,n.extras=null,n}return v(r,[{key:n.$toHTML,value:function(e){var t={left:(0,o.measureToString)(this.x),top:(0,o.measureToString)(this.y),width:(0,o.measureToString)(this.w),height:(0,o.measureToString)(this.h)},r=["xfaContentarea"];return(0,o.isPrintOnly)(this)&&r.push("xfaPrintOnly"),s.HTMLResult.success({name:"div",children:[],attributes:{style:t,class:r,id:this[n.$uid]}})}}]),r}(n.XFAObject),ge=function(e){m(r,e);var t=w(r);function r(e){var n;return y(this,r),(n=t.call(this,F,"corner",!0)).id=e.id||"",n.inverted=(0,s.getInteger)({data:e.inverted,defaultValue:0,validate:function(e){return 1===e}}),n.join=(0,s.getStringOption)(e.join,["square","round"]),n.presence=(0,s.getStringOption)(e.presence,["visible","hidden","inactive","invisible"]),n.radius=(0,s.getMeasurement)(e.radius),n.stroke=(0,s.getStringOption)(e.stroke,["solid","dashDot","dashDotDot","dashed","dotted","embossed","etched","lowered","raised"]),n.thickness=(0,s.getMeasurement)(e.thickness,"0.5pt"),n.use=e.use||"",n.usehref=e.usehref||"",n.color=null,n.extras=null,n}return v(r,[{key:n.$toStyle,value:function(){var e=(0,o.toStyle)(this,"visibility");return e.radius=(0,o.measureToString)("square"===this.join?0:this.radius),e}}]),r}(n.XFAObject),ve=function(e){m(r,e);var t=w(r);function r(e){var n;return y(this,r),(n=t.call(this,F,"date")).id=e.id||"",n.name=e.name||"",n.use=e.use||"",n.usehref=e.usehref||"",n}return v(r,[{key:n.$finalize,value:function(){var e=this[n.$content].trim();this[n.$content]=e?new Date(e):null}},{key:n.$toHTML,value:function(e){return U(this[n.$content]?this[n.$content].toString():"")}}]),r}(n.ContentObject),ye=function(e){m(r,e);var t=w(r);function r(e){var n;return y(this,r),(n=t.call(this,F,"dateTime")).id=e.id||"",n.name=e.name||"",n.use=e.use||"",n.usehref=e.usehref||"",n}return v(r,[{key:n.$finalize,value:function(){var e=this[n.$content].trim();this[n.$content]=e?new Date(e):null}},{key:n.$toHTML,value:function(e){return U(this[n.$content]?this[n.$content].toString():"")}}]),r}(n.ContentObject),me=function(e){m(r,e);var t=w(r);function r(e){var n;return y(this,r),(n=t.call(this,F,"dateTimeEdit",!0)).hScrollPolicy=(0,s.getStringOption)(e.hScrollPolicy,["auto","off","on"]),n.id=e.id||"",n.picker=(0,s.getStringOption)(e.picker,["host","none"]),n.use=e.use||"",n.usehref=e.usehref||"",n.border=null,n.comb=null,n.extras=null,n.margin=null,n}return v(r,[{key:n.$toHTML,value:function(e){var t=(0,o.toStyle)(this,"border","font","margin"),r=this[n.$getParent]()[n.$getParent](),a={name:"input",attributes:{type:"text",fieldId:r[n.$uid],dataId:r[n.$data]&&r[n.$data][n.$uid]||r[n.$uid],class:["xfaTextfield"],style:t,"aria-label":B(r),"aria-required":!1}};return R(r)&&(a.attributes["aria-required"]=!0,a.attributes.required=!0),s.HTMLResult.success({name:"label",attributes:{class:["xfaLabel"]},children:[a]})}}]),r}(n.XFAObject),be=function(e){m(r,e);var t=w(r);function r(e){var n;return y(this,r),(n=t.call(this,F,"decimal")).fracDigits=(0,s.getInteger)({data:e.fracDigits,defaultValue:2,validate:function(e){return!0}}),n.id=e.id||"",n.leadDigits=(0,s.getInteger)({data:e.leadDigits,defaultValue:-1,validate:function(e){return!0}}),n.name=e.name||"",n.use=e.use||"",n.usehref=e.usehref||"",n}return v(r,[{key:n.$finalize,value:function(){var e=parseFloat(this[n.$content].trim());this[n.$content]=isNaN(e)?null:e}},{key:n.$toHTML,value:function(e){return U(null!==this[n.$content]?this[n.$content].toString():"")}}]),r}(n.ContentObject),we=function(e){m(r,e);var t=w(r);function r(e){var n;return y(this,r),(n=t.call(this,F,"defaultUi",!0)).id=e.id||"",n.use=e.use||"",n.usehref=e.usehref||"",n.extras=null,n}return v(r)}(n.XFAObject),ke=function(e){m(r,e);var t=w(r);function r(e){var a;return y(this,r),(a=t.call(this,F,"desc",!0)).id=e.id||"",a.use=e.use||"",a.usehref=e.usehref||"",a.boolean=new n.XFAObjectArray,a.date=new n.XFAObjectArray,a.dateTime=new n.XFAObjectArray,a.decimal=new n.XFAObjectArray,a.exData=new n.XFAObjectArray,a.float=new n.XFAObjectArray,a.image=new n.XFAObjectArray,a.integer=new n.XFAObjectArray,a.text=new n.XFAObjectArray,a.time=new n.XFAObjectArray,a}return v(r)}(n.XFAObject),Se=function(e){m(r,e);var t=w(r);function r(e){var n;return y(this,r),(n=t.call(this,F,"digestMethod",["","SHA1","SHA256","SHA512","RIPEMD160"])).id=e.id||"",n.use=e.use||"",n.usehref=e.usehref||"",n}return v(r)}(n.OptionObject),xe=function(e){m(r,e);var t=w(r);function r(e){var a;return y(this,r),(a=t.call(this,F,"digestMethods",!0)).id=e.id||"",a.type=(0,s.getStringOption)(e.type,["optional","required"]),a.use=e.use||"",a.usehref=e.usehref||"",a.digestMethod=new n.XFAObjectArray,a}return v(r)}(n.XFAObject),Oe=function(e){m(r,e);var t=w(r);function r(e){var a;return y(this,r),(a=t.call(this,F,"draw",!0)).anchorType=(0,s.getStringOption)(e.anchorType,["topLeft","bottomCenter","bottomLeft","bottomRight","middleCenter","middleLeft","middleRight","topCenter","topRight"]),a.colSpan=(0,s.getInteger)({data:e.colSpan,defaultValue:1,validate:function(e){return e>=1||-1===e}}),a.h=e.h?(0,s.getMeasurement)(e.h):"",a.hAlign=(0,s.getStringOption)(e.hAlign,["left","center","justify","justifyAll","radix","right"]),a.id=e.id||"",a.locale=e.locale||"",a.maxH=(0,s.getMeasurement)(e.maxH,"0pt"),a.maxW=(0,s.getMeasurement)(e.maxW,"0pt"),a.minH=(0,s.getMeasurement)(e.minH,"0pt"),a.minW=(0,s.getMeasurement)(e.minW,"0pt"),a.name=e.name||"",a.presence=(0,s.getStringOption)(e.presence,["visible","hidden","inactive","invisible"]),a.relevant=(0,s.getRelevant)(e.relevant),a.rotate=(0,s.getInteger)({data:e.rotate,defaultValue:0,validate:function(e){return e%90==0}}),a.use=e.use||"",a.usehref=e.usehref||"",a.w=e.w?(0,s.getMeasurement)(e.w):"",a.x=(0,s.getMeasurement)(e.x,"0pt"),a.y=(0,s.getMeasurement)(e.y,"0pt"),a.assist=null,a.border=null,a.caption=null,a.desc=null,a.extras=null,a.font=null,a.keep=null,a.margin=null,a.para=null,a.traversal=null,a.ui=null,a.value=null,a.setProperty=new n.XFAObjectArray,a}return v(r,[{key:n.$setValue,value:function(e){function t(t){return e.apply(this,arguments)}return t.toString=function(){return e.toString()},t}((function(e){_(this,e)}))},{key:n.$toHTML,value:function(e){if(N(this),"hidden"===this.presence||"inactive"===this.presence)return s.HTMLResult.EMPTY;(0,o.fixDimensions)(this),this[n.$pushPara]();var t=this.w,r=this.h,a=(0,o.layoutNode)(this,e),c=a.w,u=a.h,l=a.isBroken;if(c&&""===this.w){if(l&&this[n.$getSubformParent]()[n.$isThereMoreWidth]())return this[n.$popPara](),s.HTMLResult.FAILURE;this.w=c}if(u&&""===this.h&&(this.h=u),$(this),!(0,i.checkDimensions)(this,e))return this.w=t,this.h=r,this[n.$popPara](),s.HTMLResult.FAILURE;X(this);var f=(0,o.toStyle)(this,"font","hAlign","dimensions","position","presence","rotate","anchorType","border","margin");(0,o.setMinMaxDimensions)(this,f),f.margin&&(f.padding=f.margin,delete f.margin);var h=["xfaDraw"];this.font&&h.push("xfaFont"),(0,o.isPrintOnly)(this)&&h.push("xfaPrintOnly");var d={style:f,id:this[n.$uid],class:h};this.name&&(d.xfaName=this.name);var p={name:"div",attributes:d,children:[]};D(this,d);var g=(0,o.computeBbox)(this,p,e),v=this.value?this.value[n.$toHTML](e).html:null;return null===v?(this.w=t,this.h=r,this[n.$popPara](),s.HTMLResult.success((0,o.createWrapper)(this,p),g)):(p.children.push(v),(0,o.setPara)(this,f,v),this.w=t,this.h=r,this[n.$popPara](),s.HTMLResult.success((0,o.createWrapper)(this,p),g))}}]),r}(n.XFAObject),Ae=function(e){m(r,e);var t=w(r);function r(e){var n;return y(this,r),(n=t.call(this,F,"edge",!0)).cap=(0,s.getStringOption)(e.cap,["square","butt","round"]),n.id=e.id||"",n.presence=(0,s.getStringOption)(e.presence,["visible","hidden","inactive","invisible"]),n.stroke=(0,s.getStringOption)(e.stroke,["solid","dashDot","dashDotDot","dashed","dotted","embossed","etched","lowered","raised"]),n.thickness=(0,s.getMeasurement)(e.thickness,"0.5pt"),n.use=e.use||"",n.usehref=e.usehref||"",n.color=null,n.extras=null,n}return v(r,[{key:n.$toStyle,value:function(){var e=(0,o.toStyle)(this,"visibility");if(Object.assign(e,{linecap:this.cap,width:(0,o.measureToString)(this.thickness),color:this.color?this.color[n.$toStyle]():"#000000",style:""}),"visible"!==this.presence)e.style="none";else switch(this.stroke){case"solid":e.style="solid";break;case"dashDot":case"dashDotDot":case"dashed":e.style="dashed";break;case"dotted":e.style="dotted";break;case"embossed":e.style="ridge";break;case"etched":e.style="groove";break;case"lowered":e.style="inset";break;case"raised":e.style="outset"}return e}}]),r}(n.XFAObject),Ce=function(e){m(r,e);var t=w(r);function r(e){var n;return y(this,r),(n=t.call(this,F,"encoding",["adbe.x509.rsa_sha1","adbe.pkcs7.detached","adbe.pkcs7.sha1"])).id=e.id||"",n.use=e.use||"",n.usehref=e.usehref||"",n}return v(r)}(n.OptionObject),Fe=function(e){m(r,e);var t=w(r);function r(e){var a;return y(this,r),(a=t.call(this,F,"encodings",!0)).id=e.id||"",a.type=(0,s.getStringOption)(e.type,["optional","required"]),a.use=e.use||"",a.usehref=e.usehref||"",a.encoding=new n.XFAObjectArray,a}return v(r)}(n.XFAObject),Pe=function(e){m(r,e);var t=w(r);function r(e){var n;return y(this,r),(n=t.call(this,F,"encrypt",!0)).id=e.id||"",n.use=e.use||"",n.usehref=e.usehref||"",n.certificate=null,n}return v(r)}(n.XFAObject),Te=function(e){m(r,e);var t=w(r);function r(e){var n;return y(this,r),(n=t.call(this,F,"encryptData",!0)).id=e.id||"",n.operation=(0,s.getStringOption)(e.operation,["encrypt","decrypt"]),n.target=e.target||"",n.use=e.use||"",n.usehref=e.usehref||"",n.filter=null,n.manifest=null,n}return v(r)}(n.XFAObject),Ie=function(e){m(r,e);var t=w(r);function r(e){var a;return y(this,r),(a=t.call(this,F,"encryption",!0)).id=e.id||"",a.type=(0,s.getStringOption)(e.type,["optional","required"]),a.use=e.use||"",a.usehref=e.usehref||"",a.certificate=new n.XFAObjectArray,a}return v(r)}(n.XFAObject),Ee=function(e){m(r,e);var t=w(r);function r(e){var n;return y(this,r),(n=t.call(this,F,"encryptionMethod",["","AES256-CBC","TRIPLEDES-CBC","AES128-CBC","AES192-CBC"])).id=e.id||"",n.use=e.use||"",n.usehref=e.usehref||"",n}return v(r)}(n.OptionObject),je=function(e){m(r,e);var t=w(r);function r(e){var a;return y(this,r),(a=t.call(this,F,"encryptionMethods",!0)).id=e.id||"",a.type=(0,s.getStringOption)(e.type,["optional","required"]),a.use=e.use||"",a.usehref=e.usehref||"",a.encryptionMethod=new n.XFAObjectArray,a}return v(r)}(n.XFAObject),Me=function(e){m(r,e);var t=w(r);function r(e){var n;return y(this,r),(n=t.call(this,F,"event",!0)).activity=(0,s.getStringOption)(e.activity,["click","change","docClose","docReady","enter","exit","full","indexChange","initialize","mouseDown","mouseEnter","mouseExit","mouseUp","postExecute","postOpen","postPrint","postSave","postSign","postSubmit","preExecute","preOpen","prePrint","preSave","preSign","preSubmit","ready","validationState"]),n.id=e.id||"",n.listen=(0,s.getStringOption)(e.listen,["refOnly","refAndDescendents"]),n.name=e.name||"",n.ref=e.ref||"",n.use=e.use||"",n.usehref=e.usehref||"",n.extras=null,n.encryptData=null,n.execute=null,n.script=null,n.signData=null,n.submit=null,n}return v(r)}(n.XFAObject),_e=function(e){m(r,e);var t=w(r);function r(e){var n;return y(this,r),(n=t.call(this,F,"exData")).contentType=e.contentType||"",n.href=e.href||"",n.id=e.id||"",n.maxLength=(0,s.getInteger)({data:e.maxLength,defaultValue:-1,validate:function(e){return e>=-1}}),n.name=e.name||"",n.rid=e.rid||"",n.transferEncoding=(0,s.getStringOption)(e.transferEncoding,["none","base64","package"]),n.use=e.use||"",n.usehref=e.usehref||"",n}return v(r,[{key:n.$isCDATAXml,value:function(){return"text/html"===this.contentType}},{key:n.$onChild,value:function(e){return("text/html"===this.contentType&&e[n.$namespaceId]===a.NamespaceIds.xhtml.id||"text/xml"===this.contentType)&&(this[n.$content]=e,!0)}},{key:n.$toHTML,value:function(e){return"text/html"===this.contentType&&this[n.$content]?this[n.$content][n.$toHTML](e):s.HTMLResult.EMPTY}}]),r}(n.ContentObject),Le=function(e){m(r,e);var t=w(r);function r(e){var a;return y(this,r),(a=t.call(this,F,"exObject",!0)).archive=e.archive||"",a.classId=e.classId||"",a.codeBase=e.codeBase||"",a.codeType=e.codeType||"",a.id=e.id||"",a.name=e.name||"",a.use=e.use||"",a.usehref=e.usehref||"",a.extras=null,a.boolean=new n.XFAObjectArray,a.date=new n.XFAObjectArray,a.dateTime=new n.XFAObjectArray,a.decimal=new n.XFAObjectArray,a.exData=new n.XFAObjectArray,a.exObject=new n.XFAObjectArray,a.float=new n.XFAObjectArray,a.image=new n.XFAObjectArray,a.integer=new n.XFAObjectArray,a.text=new n.XFAObjectArray,a.time=new n.XFAObjectArray,a}return v(r)}(n.XFAObject),Re=function(e){m(r,e);var t=w(r);function r(e){var a;return y(this,r),(a=t.call(this,F,"exclGroup",!0)).access=(0,s.getStringOption)(e.access,["open","nonInteractive","protected","readOnly"]),a.accessKey=e.accessKey||"",a.anchorType=(0,s.getStringOption)(e.anchorType,["topLeft","bottomCenter","bottomLeft","bottomRight","middleCenter","middleLeft","middleRight","topCenter","topRight"]),a.colSpan=(0,s.getInteger)({data:e.colSpan,defaultValue:1,validate:function(e){return e>=1||-1===e}}),a.h=e.h?(0,s.getMeasurement)(e.h):"",a.hAlign=(0,s.getStringOption)(e.hAlign,["left","center","justify","justifyAll","radix","right"]),a.id=e.id||"",a.layout=(0,s.getStringOption)(e.layout,["position","lr-tb","rl-row","rl-tb","row","table","tb"]),a.maxH=(0,s.getMeasurement)(e.maxH,"0pt"),a.maxW=(0,s.getMeasurement)(e.maxW,"0pt"),a.minH=(0,s.getMeasurement)(e.minH,"0pt"),a.minW=(0,s.getMeasurement)(e.minW,"0pt"),a.name=e.name||"",a.presence=(0,s.getStringOption)(e.presence,["visible","hidden","inactive","invisible"]),a.relevant=(0,s.getRelevant)(e.relevant),a.use=e.use||"",a.usehref=e.usehref||"",a.w=e.w?(0,s.getMeasurement)(e.w):"",a.x=(0,s.getMeasurement)(e.x,"0pt"),a.y=(0,s.getMeasurement)(e.y,"0pt"),a.assist=null,a.bind=null,a.border=null,a.calculate=null,a.caption=null,a.desc=null,a.extras=null,a.margin=null,a.para=null,a.traversal=null,a.validate=null,a.connect=new n.XFAObjectArray,a.event=new n.XFAObjectArray,a.field=new n.XFAObjectArray,a.setProperty=new n.XFAObjectArray,a}return v(r,[{key:n.$isBindable,value:function(){return!0}},{key:n.$hasSettableValue,value:function(){return!0}},{key:n.$setValue,value:function(e){function t(t){return e.apply(this,arguments)}return t.toString=function(){return e.toString()},t}((function(e){var t,r=O(this.field.children);try{for(r.s();!(t=r.n()).done;){var a=t.value;if(!a.value){var i=new Vt({});a[n.$appendChild](i),a.value=i}a.value[n.$setValue](e)}}catch(e){r.e(e)}finally{r.f()}}))},{key:n.$isThereMoreWidth,value:function(){return this.layout.endsWith("-tb")&&0===this[n.$extra].attempt&&this[n.$extra].numberInLine>0||this[n.$getParent]()[n.$isThereMoreWidth]()}},{key:n.$isSplittable,value:function(){var e=this[n.$getSubformParent]();return!!e[n.$isSplittable]()&&(void 0!==this[n.$extra]._isSplittable?this[n.$extra]._isSplittable:"position"===this.layout||this.layout.includes("row")?(this[n.$extra]._isSplittable=!1,!1):!(e.layout&&e.layout.endsWith("-tb")&&0!==e[n.$extra].numberInLine||(this[n.$extra]._isSplittable=!0,0)))}},{key:n.$flushHTML,value:function(){return(0,i.flushHTML)(this)}},{key:n.$addHTML,value:function(e,t){(0,i.addHTML)(this,e,t)}},{key:n.$getAvailableSpace,value:function(){return(0,i.getAvailableSpace)(this)}},{key:n.$toHTML,value:function(e){if(N(this),"hidden"===this.presence||"inactive"===this.presence||0===this.h||0===this.w)return s.HTMLResult.EMPTY;(0,o.fixDimensions)(this);var t=[],r={id:this[n.$uid],class:[]};(0,o.setAccess)(this,r.class),this[n.$extra]||(this[n.$extra]=Object.create(null)),Object.assign(this[n.$extra],{children:t,attributes:r,attempt:0,line:null,numberInLine:0,availableSpace:{width:Math.min(this.w||1/0,e.width),height:Math.min(this.h||1/0,e.height)},width:0,height:0,prevHeight:0,currentWidth:0});var a=this[n.$isSplittable]();if(a||$(this),!(0,i.checkDimensions)(this,e))return s.HTMLResult.FAILURE;var c=new Set(["field"]);if(this.layout.includes("row")){var u=this[n.$getSubformParent]().columnWidths;Array.isArray(u)&&u.length>0&&(this[n.$extra].columnWidths=u,this[n.$extra].currentColumn=0)}var l=(0,o.toStyle)(this,"anchorType","dimensions","position","presence","border","margin","hAlign"),f=["xfaExclgroup"],h=(0,o.layoutClass)(this);h&&f.push(h),(0,o.isPrintOnly)(this)&&f.push("xfaPrintOnly"),r.style=l,r.class=f,this.name&&(r.xfaName=this.name),this[n.$pushPara]();for(var d="lr-tb"===this.layout||"rl-tb"===this.layout,p=d?2:1;this[n.$extra].attempt=1||-1===e}}),a.h=e.h?(0,s.getMeasurement)(e.h):"",a.hAlign=(0,s.getStringOption)(e.hAlign,["left","center","justify","justifyAll","radix","right"]),a.id=e.id||"",a.locale=e.locale||"",a.maxH=(0,s.getMeasurement)(e.maxH,"0pt"),a.maxW=(0,s.getMeasurement)(e.maxW,"0pt"),a.minH=(0,s.getMeasurement)(e.minH,"0pt"),a.minW=(0,s.getMeasurement)(e.minW,"0pt"),a.name=e.name||"",a.presence=(0,s.getStringOption)(e.presence,["visible","hidden","inactive","invisible"]),a.relevant=(0,s.getRelevant)(e.relevant),a.rotate=(0,s.getInteger)({data:e.rotate,defaultValue:0,validate:function(e){return e%90==0}}),a.use=e.use||"",a.usehref=e.usehref||"",a.w=e.w?(0,s.getMeasurement)(e.w):"",a.x=(0,s.getMeasurement)(e.x,"0pt"),a.y=(0,s.getMeasurement)(e.y,"0pt"),a.assist=null,a.bind=null,a.border=null,a.calculate=null,a.caption=null,a.desc=null,a.extras=null,a.font=null,a.format=null,a.items=new n.XFAObjectArray(2),a.keep=null,a.margin=null,a.para=null,a.traversal=null,a.ui=null,a.validate=null,a.value=null,a.bindItems=new n.XFAObjectArray,a.connect=new n.XFAObjectArray,a.event=new n.XFAObjectArray,a.setProperty=new n.XFAObjectArray,a}return v(r,[{key:n.$isBindable,value:function(){return!0}},{key:n.$setValue,value:function(e){function t(t){return e.apply(this,arguments)}return t.toString=function(){return e.toString()},t}((function(e){_(this,e)}))},{key:n.$toHTML,value:function(e){if(N(this),!this.ui){var t;switch(this.ui=new zt({}),this.ui[n.$globalData]=this[n.$globalData],this[n.$appendChild](this.ui),this.items.children.length){case 0:t=new Ut({}),this.ui.textEdit=t;break;case 1:t=new ue({}),this.ui.checkButton=t;break;case 2:t=new le({}),this.ui.choiceList=t}this.ui[n.$appendChild](t)}if(!this.ui||"hidden"===this.presence||"inactive"===this.presence||0===this.h||0===this.w)return s.HTMLResult.EMPTY;this.caption&&delete this.caption[n.$extra],this[n.$pushPara]();var r=this.caption?this.caption[n.$toHTML](e).html:null,a=this.w,c=this.h,l=0,f=0;this.margin&&(l=this.margin.leftInset+this.margin.rightInset,f=this.margin.topInset+this.margin.bottomInset);var h=null;if(""===this.w||""===this.h){var d=null,g=null,v=0,y=0;if(this.ui.checkButton)v=y=this.ui.checkButton.size;else{var m=(0,o.layoutNode)(this,e),b=m.w,w=m.h;null!==b?(v=b,y=w):y=(0,u.getMetrics)(this.font,!0).lineNoGap}if(v+=(h=j(this.ui[n.$getExtra]())).w,y+=h.h,this.caption){var k=this.caption[n.$getExtra](e),S=k.w,x=k.h;if(k.isBroken&&this[n.$getSubformParent]()[n.$isThereMoreWidth]())return this[n.$popPara](),s.HTMLResult.FAILURE;switch(d=S,g=x,this.caption.placement){case"left":case"right":case"inline":d+=v;break;case"top":case"bottom":g+=y}}else d=v,g=y;d&&""===this.w&&(d+=l,this.w=Math.min(this.maxW<=0?1/0:this.maxW,this.minW+1=1&&e<=5}}),n.appearanceFilter=null,n.certificates=null,n.digestMethods=null,n.encodings=null,n.encryptionMethods=null,n.handler=null,n.lockDocument=null,n.mdp=null,n.reasons=null,n.timeStamp=null,n}return v(r)}(n.XFAObject),Xe=function(e){m(r,e);var t=w(r);function r(e){var n;return y(this,r),(n=t.call(this,F,"float")).id=e.id||"",n.name=e.name||"",n.use=e.use||"",n.usehref=e.usehref||"",n}return v(r,[{key:n.$finalize,value:function(){var e=parseFloat(this[n.$content].trim());this[n.$content]=isNaN(e)?null:e}},{key:n.$toHTML,value:function(e){return U(null!==this[n.$content]?this[n.$content].toString():"")}}]),r}(n.ContentObject),He=function(e){m(r,e);var t=w(r);function r(e){var n;return y(this,r),(n=t.call(this,F,"font",!0)).baselineShift=(0,s.getMeasurement)(e.baselineShift),n.fontHorizontalScale=(0,s.getFloat)({data:e.fontHorizontalScale,defaultValue:100,validate:function(e){return e>=0}}),n.fontVerticalScale=(0,s.getFloat)({data:e.fontVerticalScale,defaultValue:100,validate:function(e){return e>=0}}),n.id=e.id||"",n.kerningMode=(0,s.getStringOption)(e.kerningMode,["none","pair"]),n.letterSpacing=(0,s.getMeasurement)(e.letterSpacing,"0"),n.lineThrough=(0,s.getInteger)({data:e.lineThrough,defaultValue:0,validate:function(e){return 1===e||2===e}}),n.lineThroughPeriod=(0,s.getStringOption)(e.lineThroughPeriod,["all","word"]),n.overline=(0,s.getInteger)({data:e.overline,defaultValue:0,validate:function(e){return 1===e||2===e}}),n.overlinePeriod=(0,s.getStringOption)(e.overlinePeriod,["all","word"]),n.posture=(0,s.getStringOption)(e.posture,["normal","italic"]),n.size=(0,s.getMeasurement)(e.size,"10pt"),n.typeface=e.typeface||"Courier",n.underline=(0,s.getInteger)({data:e.underline,defaultValue:0,validate:function(e){return 1===e||2===e}}),n.underlinePeriod=(0,s.getStringOption)(e.underlinePeriod,["all","word"]),n.use=e.use||"",n.usehref=e.usehref||"",n.weight=(0,s.getStringOption)(e.weight,["normal","bold"]),n.extras=null,n.fill=null,n}return v(r,[{key:n.$clean,value:function(e){d(k(r.prototype),n.$clean,this).call(this,e),this[n.$globalData].usedTypefaces.add(this.typeface)}},{key:n.$toStyle,value:function(){var e=(0,o.toStyle)(this,"fill"),t=e.color;return t&&("#000000"===t?delete e.color:t.startsWith("#")||(e.background=t,e.backgroundClip="text",e.color="transparent")),this.baselineShift&&(e.verticalAlign=(0,o.measureToString)(this.baselineShift)),e.fontKerning="none"===this.kerningMode?"none":"normal",e.letterSpacing=(0,o.measureToString)(this.letterSpacing),0!==this.lineThrough&&(e.textDecoration="line-through",2===this.lineThrough&&(e.textDecorationStyle="double")),0!==this.overline&&(e.textDecoration="overline",2===this.overline&&(e.textDecorationStyle="double")),e.fontStyle=this.posture,e.fontSize=(0,o.measureToString)(.99*this.size),(0,o.setFontFamily)(this,this,this[n.$globalData].fontFinder,e),0!==this.underline&&(e.textDecoration="underline",2===this.underline&&(e.textDecorationStyle="double")),e.fontWeight=this.weight,e}}]),r}(n.XFAObject),qe=function(e){m(r,e);var t=w(r);function r(e){var n;return y(this,r),(n=t.call(this,F,"format",!0)).id=e.id||"",n.use=e.use||"",n.usehref=e.usehref||"",n.extras=null,n.picture=null,n}return v(r)}(n.XFAObject),Ge=function(e){m(r,e);var t=w(r);function r(e){var n;return y(this,r),(n=t.call(this,F,"handler")).id=e.id||"",n.type=(0,s.getStringOption)(e.type,["optional","required"]),n.use=e.use||"",n.usehref=e.usehref||"",n}return v(r)}(n.StringObject),ze=function(e){m(r,e);var t=w(r);function r(e){var n;return y(this,r),(n=t.call(this,F,"hyphenation")).excludeAllCaps=(0,s.getInteger)({data:e.excludeAllCaps,defaultValue:0,validate:function(e){return 1===e}}),n.excludeInitialCap=(0,s.getInteger)({data:e.excludeInitialCap,defaultValue:0,validate:function(e){return 1===e}}),n.hyphenate=(0,s.getInteger)({data:e.hyphenate,defaultValue:0,validate:function(e){return 1===e}}),n.id=e.id||"",n.pushCharacterCount=(0,s.getInteger)({data:e.pushCharacterCount,defaultValue:3,validate:function(e){return e>=0}}),n.remainCharacterCount=(0,s.getInteger)({data:e.remainCharacterCount,defaultValue:3,validate:function(e){return e>=0}}),n.use=e.use||"",n.usehref=e.usehref||"",n.wordCharacterCount=(0,s.getInteger)({data:e.wordCharacterCount,defaultValue:7,validate:function(e){return e>=0}}),n}return v(r)}(n.XFAObject),We=function(e){m(r,e);var t=w(r);function r(e){var n;return y(this,r),(n=t.call(this,F,"image")).aspect=(0,s.getStringOption)(e.aspect,["fit","actual","height","none","width"]),n.contentType=e.contentType||"",n.href=e.href||"",n.id=e.id||"",n.name=e.name||"",n.transferEncoding=(0,s.getStringOption)(e.transferEncoding,["base64","none","package"]),n.use=e.use||"",n.usehref=e.usehref||"",n}return v(r,[{key:n.$toHTML,value:function(){if(this.contentType&&!I.has(this.contentType.toLowerCase()))return s.HTMLResult.EMPTY;var e=this[n.$globalData].images&&this[n.$globalData].images.get(this.href);if(!e&&(this.href||!this[n.$content]))return s.HTMLResult.EMPTY;if(e||"base64"!==this.transferEncoding||(e=(0,c.stringToBytes)(atob(this[n.$content]))),!e)return s.HTMLResult.EMPTY;if(!this.contentType){for(var t=0,r=E;ti.length&&i.every((function(t,r){return t===e[r]}))){this.contentType=o;break}}if(!this.contentType)return s.HTMLResult.EMPTY}var u,l=new Blob([e],{type:this.contentType});switch(this.aspect){case"fit":case"actual":break;case"height":u={height:"100%",objectFit:"fill"};break;case"none":u={width:"100%",height:"100%",objectFit:"fill"};break;case"width":u={width:"100%",objectFit:"fill"}}var f=this[n.$getParent]();return s.HTMLResult.success({name:"img",attributes:{class:["xfaImage"],style:u,src:URL.createObjectURL(l),alt:f?B(f[n.$getParent]()):null}})}}]),r}(n.StringObject),Ve=function(e){m(r,e);var t=w(r);function r(e){var n;return y(this,r),(n=t.call(this,F,"imageEdit",!0)).data=(0,s.getStringOption)(e.data,["link","embed"]),n.id=e.id||"",n.use=e.use||"",n.usehref=e.usehref||"",n.border=null,n.extras=null,n.margin=null,n}return v(r,[{key:n.$toHTML,value:function(e){return"embed"===this.data?s.HTMLResult.success({name:"div",children:[],attributes:{}}):s.HTMLResult.EMPTY}}]),r}(n.XFAObject),Ye=function(e){m(r,e);var t=w(r);function r(e){var n;return y(this,r),(n=t.call(this,F,"integer")).id=e.id||"",n.name=e.name||"",n.use=e.use||"",n.usehref=e.usehref||"",n}return v(r,[{key:n.$finalize,value:function(){var e=parseInt(this[n.$content].trim(),10);this[n.$content]=isNaN(e)?null:e}},{key:n.$toHTML,value:function(e){return U(null!==this[n.$content]?this[n.$content].toString():"")}}]),r}(n.ContentObject),Ke=function(e){m(r,e);var t=w(r);function r(e){var a;return y(this,r),(a=t.call(this,F,"issuers",!0)).id=e.id||"",a.type=(0,s.getStringOption)(e.type,["optional","required"]),a.use=e.use||"",a.usehref=e.usehref||"",a.certificate=new n.XFAObjectArray,a}return v(r)}(n.XFAObject),Je=function(e){m(r,e);var t=w(r);function r(e){var a;return y(this,r),(a=t.call(this,F,"items",!0)).id=e.id||"",a.name=e.name||"",a.presence=(0,s.getStringOption)(e.presence,["visible","hidden","inactive","invisible"]),a.ref=e.ref||"",a.save=(0,s.getInteger)({data:e.save,defaultValue:0,validate:function(e){return 1===e}}),a.use=e.use||"",a.usehref=e.usehref||"",a.boolean=new n.XFAObjectArray,a.date=new n.XFAObjectArray,a.dateTime=new n.XFAObjectArray,a.decimal=new n.XFAObjectArray,a.exData=new n.XFAObjectArray,a.float=new n.XFAObjectArray,a.image=new n.XFAObjectArray,a.integer=new n.XFAObjectArray,a.text=new n.XFAObjectArray,a.time=new n.XFAObjectArray,a}return v(r,[{key:n.$toHTML,value:function(){var e,t=[],r=O(this[n.$getChildren]());try{for(r.s();!(e=r.n()).done;){var a=e.value;t.push(a[n.$text]())}}catch(e){r.e(e)}finally{r.f()}return s.HTMLResult.success(t)}}]),r}(n.XFAObject);t.Items=Je;var Ze=function(e){m(r,e);var t=w(r);function r(e){var n;y(this,r),(n=t.call(this,F,"keep",!0)).id=e.id||"";var a=["none","contentArea","pageArea"];return n.intact=(0,s.getStringOption)(e.intact,a),n.next=(0,s.getStringOption)(e.next,a),n.previous=(0,s.getStringOption)(e.previous,a),n.use=e.use||"",n.usehref=e.usehref||"",n.extras=null,n}return v(r)}(n.XFAObject),Qe=function(e){m(r,e);var t=w(r);function r(e){var n;y(this,r);var a=["","yes","no"];return(n=t.call(this,F,"keyUsage")).crlSign=(0,s.getStringOption)(e.crlSign,a),n.dataEncipherment=(0,s.getStringOption)(e.dataEncipherment,a),n.decipherOnly=(0,s.getStringOption)(e.decipherOnly,a),n.digitalSignature=(0,s.getStringOption)(e.digitalSignature,a),n.encipherOnly=(0,s.getStringOption)(e.encipherOnly,a),n.id=e.id||"",n.keyAgreement=(0,s.getStringOption)(e.keyAgreement,a),n.keyCertSign=(0,s.getStringOption)(e.keyCertSign,a),n.keyEncipherment=(0,s.getStringOption)(e.keyEncipherment,a),n.nonRepudiation=(0,s.getStringOption)(e.nonRepudiation,a),n.type=(0,s.getStringOption)(e.type,["optional","required"]),n.use=e.use||"",n.usehref=e.usehref||"",n}return v(r)}(n.XFAObject),et=function(e){m(r,e);var t=w(r);function r(e){var n;return y(this,r),(n=t.call(this,F,"line",!0)).hand=(0,s.getStringOption)(e.hand,["even","left","right"]),n.id=e.id||"",n.slope=(0,s.getStringOption)(e.slope,["\\\\","/"]),n.use=e.use||"",n.usehref=e.usehref||"",n.edge=null,n}return v(r,[{key:n.$toHTML,value:function(){var e,t,r,a,i=this[n.$getParent]()[n.$getParent](),c=this.edge||new Ae({}),u=c[n.$toStyle](),l=Object.create(null),f="visible"===c.presence?c.thickness:0;l.strokeWidth=(0,o.measureToString)(f),l.stroke=u.color;var h="100%",d="100%";i.w<=f?(e="50%",t=0,r="50%",a="100%",h=l.strokeWidth):i.h<=f?(e=0,t="50%",r="100%",a="50%",d=l.strokeWidth):"\\\\"===this.slope?(e=0,t=0,r="100%",a="100%"):(e=0,t="100%",r="100%",a=0);var p={name:"svg",children:[{name:"line",attributes:{xmlns:P,x1:e,y1:t,x2:r,y2:a,style:l}}],attributes:{xmlns:P,width:h,height:d,style:{overflow:"visible"}}};return M(i)?s.HTMLResult.success({name:"div",attributes:{style:{display:"inline",width:"100%",height:"100%"}},children:[p]}):(p.attributes.style.position="absolute",s.HTMLResult.success(p))}}]),r}(n.XFAObject),tt=function(e){m(r,e);var t=w(r);function r(e){var n;return y(this,r),(n=t.call(this,F,"linear",!0)).id=e.id||"",n.type=(0,s.getStringOption)(e.type,["toRight","toBottom","toLeft","toTop"]),n.use=e.use||"",n.usehref=e.usehref||"",n.color=null,n.extras=null,n}return v(r,[{key:n.$toStyle,value:function(e){e=e?e[n.$toStyle]():"#FFFFFF";var t=this.type.replace(/([RBLT])/," $1").toLowerCase(),r=this.color?this.color[n.$toStyle]():"#000000";return"linear-gradient(".concat(t,", ").concat(e,", ").concat(r,")")}}]),r}(n.XFAObject),rt=function(e){m(r,e);var t=w(r);function r(e){var n;return y(this,r),(n=t.call(this,F,"lockDocument")).id=e.id||"",n.type=(0,s.getStringOption)(e.type,["optional","required"]),n.use=e.use||"",n.usehref=e.usehref||"",n}return v(r,[{key:n.$finalize,value:function(){this[n.$content]=(0,s.getStringOption)(this[n.$content],["auto","0","1"])}}]),r}(n.ContentObject),nt=function(e){m(r,e);var t=w(r);function r(e){var a;return y(this,r),(a=t.call(this,F,"manifest",!0)).action=(0,s.getStringOption)(e.action,["include","all","exclude"]),a.id=e.id||"",a.name=e.name||"",a.use=e.use||"",a.usehref=e.usehref||"",a.extras=null,a.ref=new n.XFAObjectArray,a}return v(r)}(n.XFAObject),at=function(e){m(r,e);var t=w(r);function r(e){var n;return y(this,r),(n=t.call(this,F,"margin",!0)).bottomInset=(0,s.getMeasurement)(e.bottomInset,"0"),n.id=e.id||"",n.leftInset=(0,s.getMeasurement)(e.leftInset,"0"),n.rightInset=(0,s.getMeasurement)(e.rightInset,"0"),n.topInset=(0,s.getMeasurement)(e.topInset,"0"),n.use=e.use||"",n.usehref=e.usehref||"",n.extras=null,n}return v(r,[{key:n.$toStyle,value:function(){return{margin:(0,o.measureToString)(this.topInset)+" "+(0,o.measureToString)(this.rightInset)+" "+(0,o.measureToString)(this.bottomInset)+" "+(0,o.measureToString)(this.leftInset)}}}]),r}(n.XFAObject),it=function(e){m(r,e);var t=w(r);function r(e){var n;return y(this,r),(n=t.call(this,F,"mdp")).id=e.id||"",n.permissions=(0,s.getInteger)({data:e.permissions,defaultValue:2,validate:function(e){return 1===e||3===e}}),n.signatureType=(0,s.getStringOption)(e.signatureType,["filler","author"]),n.use=e.use||"",n.usehref=e.usehref||"",n}return v(r)}(n.XFAObject),ot=function(e){m(r,e);var t=w(r);function r(e){var n;return y(this,r),(n=t.call(this,F,"medium")).id=e.id||"",n.imagingBBox=(0,s.getBBox)(e.imagingBBox),n.long=(0,s.getMeasurement)(e.long),n.orientation=(0,s.getStringOption)(e.orientation,["portrait","landscape"]),n.short=(0,s.getMeasurement)(e.short),n.stock=e.stock||"",n.trayIn=(0,s.getStringOption)(e.trayIn,["auto","delegate","pageFront"]),n.trayOut=(0,s.getStringOption)(e.trayOut,["auto","delegate"]),n.use=e.use||"",n.usehref=e.usehref||"",n}return v(r)}(n.XFAObject),st=function(e){m(r,e);var t=w(r);function r(e){var a;return y(this,r),(a=t.call(this,F,"message",!0)).id=e.id||"",a.use=e.use||"",a.usehref=e.usehref||"",a.text=new n.XFAObjectArray,a}return v(r)}(n.XFAObject),ct=function(e){m(r,e);var t=w(r);function r(e){var n;return y(this,r),(n=t.call(this,F,"numericEdit",!0)).hScrollPolicy=(0,s.getStringOption)(e.hScrollPolicy,["auto","off","on"]),n.id=e.id||"",n.use=e.use||"",n.usehref=e.usehref||"",n.border=null,n.comb=null,n.extras=null,n.margin=null,n}return v(r,[{key:n.$toHTML,value:function(e){var t=(0,o.toStyle)(this,"border","font","margin"),r=this[n.$getParent]()[n.$getParent](),a={name:"input",attributes:{type:"text",fieldId:r[n.$uid],dataId:r[n.$data]&&r[n.$data][n.$uid]||r[n.$uid],class:["xfaTextfield"],style:t,"aria-label":B(r),"aria-required":!1}};return R(r)&&(a.attributes["aria-required"]=!0,a.attributes.required=!0),s.HTMLResult.success({name:"label",attributes:{class:["xfaLabel"]},children:[a]})}}]),r}(n.XFAObject),ut=function(e){m(r,e);var t=w(r);function r(e){var n;return y(this,r),(n=t.call(this,F,"occur",!0)).id=e.id||"",n.initial=""!==e.initial?(0,s.getInteger)({data:e.initial,defaultValue:"",validate:function(e){return!0}}):"",n.max=""!==e.max?(0,s.getInteger)({data:e.max,defaultValue:1,validate:function(e){return!0}}):"",n.min=""!==e.min?(0,s.getInteger)({data:e.min,defaultValue:1,validate:function(e){return!0}}):"",n.use=e.use||"",n.usehref=e.usehref||"",n.extras=null,n}return v(r,[{key:n.$clean,value:function(){var e=this[n.$getParent](),t=this.min;""===this.min&&(this.min=e instanceof dt||e instanceof pt?0:1),""===this.max&&(this.max=""===t?e instanceof dt||e instanceof pt?-1:1:this.min),-1!==this.max&&this.max=0}}),n.preserve=e.preserve||"",n.radixOffset=e.radixOffset?(0,s.getMeasurement)(e.radixOffset,"0pt"):"",n.spaceAbove=e.spaceAbove?(0,s.getMeasurement)(e.spaceAbove,"0pt"):"",n.spaceBelow=e.spaceBelow?(0,s.getMeasurement)(e.spaceBelow,"0pt"):"",n.tabDefault=e.tabDefault?(0,s.getMeasurement)(n.tabDefault):"",n.tabStops=(e.tabStops||"").trim().split(/\\s+/).map((function(e,t){return t%2==1?(0,s.getMeasurement)(e):e})),n.textIndent=e.textIndent?(0,s.getMeasurement)(e.textIndent,"0pt"):"",n.use=e.use||"",n.usehref=e.usehref||"",n.vAlign=(0,s.getStringOption)(e.vAlign,["top","bottom","middle"]),n.widows=(0,s.getInteger)({data:e.widows,defaultValue:0,validate:function(e){return e>=0}}),n.hyphenation=null,n}return v(r,[{key:n.$toStyle,value:function(){var e=(0,o.toStyle)(this,"hAlign");return""!==this.marginLeft&&(e.paddingLeft=(0,o.measureToString)(this.marginLeft)),""!==this.marginRight&&(e.paddingight=(0,o.measureToString)(this.marginRight)),""!==this.spaceAbove&&(e.paddingTop=(0,o.measureToString)(this.spaceAbove)),""!==this.spaceBelow&&(e.paddingBottom=(0,o.measureToString)(this.spaceBelow)),""!==this.textIndent&&(e.textIndent=(0,o.measureToString)(this.textIndent),(0,o.fixTextIndent)(e)),this.lineHeight>0&&(e.lineHeight=(0,o.measureToString)(this.lineHeight)),""!==this.tabDefault&&(e.tabSize=(0,o.measureToString)(this.tabDefault)),this.tabStops.length,this.hyphenatation&&Object.assign(e,this.hyphenatation[n.$toStyle]()),e}}]),r}(n.XFAObject),vt=function(e){m(r,e);var t=w(r);function r(e){var n;return y(this,r),(n=t.call(this,F,"passwordEdit",!0)).hScrollPolicy=(0,s.getStringOption)(e.hScrollPolicy,["auto","off","on"]),n.id=e.id||"",n.passwordChar=e.passwordChar||"*",n.use=e.use||"",n.usehref=e.usehref||"",n.border=null,n.extras=null,n.margin=null,n}return v(r)}(n.XFAObject),yt=function(e){m(r,e);var t=w(r);function r(e){var n;return y(this,r),(n=t.call(this,F,"pattern",!0)).id=e.id||"",n.type=(0,s.getStringOption)(e.type,["crossHatch","crossDiagonal","diagonalLeft","diagonalRight","horizontal","vertical"]),n.use=e.use||"",n.usehref=e.usehref||"",n.color=null,n.extras=null,n}return v(r,[{key:n.$toStyle,value:function(e){e=e?e[n.$toStyle]():"#FFFFFF";var t=this.color?this.color[n.$toStyle]():"#000000",r="repeating-linear-gradient",a="".concat(e,",").concat(e," ").concat(5,"px,").concat(t," ").concat(5,"px,").concat(t," ").concat(10,"px");switch(this.type){case"crossHatch":return"".concat(r,"(to top,").concat(a,") ").concat(r,"(to right,").concat(a,")");case"crossDiagonal":return"".concat(r,"(45deg,").concat(a,") ").concat(r,"(-45deg,").concat(a,")");case"diagonalLeft":return"".concat(r,"(45deg,").concat(a,")");case"diagonalRight":return"".concat(r,"(-45deg,").concat(a,")");case"horizontal":return"".concat(r,"(to top,").concat(a,")");case"vertical":return"".concat(r,"(to right,").concat(a,")")}return""}}]),r}(n.XFAObject),mt=function(e){m(r,e);var t=w(r);function r(e){var n;return y(this,r),(n=t.call(this,F,"picture")).id=e.id||"",n.use=e.use||"",n.usehref=e.usehref||"",n}return v(r)}(n.StringObject),bt=function(e){m(r,e);var t=w(r);function r(e){var a;return y(this,r),(a=t.call(this,F,"proto",!0)).appearanceFilter=new n.XFAObjectArray,a.arc=new n.XFAObjectArray,a.area=new n.XFAObjectArray,a.assist=new n.XFAObjectArray,a.barcode=new n.XFAObjectArray,a.bindItems=new n.XFAObjectArray,a.bookend=new n.XFAObjectArray,a.boolean=new n.XFAObjectArray,a.border=new n.XFAObjectArray,a.break=new n.XFAObjectArray,a.breakAfter=new n.XFAObjectArray,a.breakBefore=new n.XFAObjectArray,a.button=new n.XFAObjectArray,a.calculate=new n.XFAObjectArray,a.caption=new n.XFAObjectArray,a.certificate=new n.XFAObjectArray,a.certificates=new n.XFAObjectArray,a.checkButton=new n.XFAObjectArray,a.choiceList=new n.XFAObjectArray,a.color=new n.XFAObjectArray,a.comb=new n.XFAObjectArray,a.connect=new n.XFAObjectArray,a.contentArea=new n.XFAObjectArray,a.corner=new n.XFAObjectArray,a.date=new n.XFAObjectArray,a.dateTime=new n.XFAObjectArray,a.dateTimeEdit=new n.XFAObjectArray,a.decimal=new n.XFAObjectArray,a.defaultUi=new n.XFAObjectArray,a.desc=new n.XFAObjectArray,a.digestMethod=new n.XFAObjectArray,a.digestMethods=new n.XFAObjectArray,a.draw=new n.XFAObjectArray,a.edge=new n.XFAObjectArray,a.encoding=new n.XFAObjectArray,a.encodings=new n.XFAObjectArray,a.encrypt=new n.XFAObjectArray,a.encryptData=new n.XFAObjectArray,a.encryption=new n.XFAObjectArray,a.encryptionMethod=new n.XFAObjectArray,a.encryptionMethods=new n.XFAObjectArray,a.event=new n.XFAObjectArray,a.exData=new n.XFAObjectArray,a.exObject=new n.XFAObjectArray,a.exclGroup=new n.XFAObjectArray,a.execute=new n.XFAObjectArray,a.extras=new n.XFAObjectArray,a.field=new n.XFAObjectArray,a.fill=new n.XFAObjectArray,a.filter=new n.XFAObjectArray,a.float=new n.XFAObjectArray,a.font=new n.XFAObjectArray,a.format=new n.XFAObjectArray,a.handler=new n.XFAObjectArray,a.hyphenation=new n.XFAObjectArray,a.image=new n.XFAObjectArray,a.imageEdit=new n.XFAObjectArray,a.integer=new n.XFAObjectArray,a.issuers=new n.XFAObjectArray,a.items=new n.XFAObjectArray,a.keep=new n.XFAObjectArray,a.keyUsage=new n.XFAObjectArray,a.line=new n.XFAObjectArray,a.linear=new n.XFAObjectArray,a.lockDocument=new n.XFAObjectArray,a.manifest=new n.XFAObjectArray,a.margin=new n.XFAObjectArray,a.mdp=new n.XFAObjectArray,a.medium=new n.XFAObjectArray,a.message=new n.XFAObjectArray,a.numericEdit=new n.XFAObjectArray,a.occur=new n.XFAObjectArray,a.oid=new n.XFAObjectArray,a.oids=new n.XFAObjectArray,a.overflow=new n.XFAObjectArray,a.pageArea=new n.XFAObjectArray,a.pageSet=new n.XFAObjectArray,a.para=new n.XFAObjectArray,a.passwordEdit=new n.XFAObjectArray,a.pattern=new n.XFAObjectArray,a.picture=new n.XFAObjectArray,a.radial=new n.XFAObjectArray,a.reason=new n.XFAObjectArray,a.reasons=new n.XFAObjectArray,a.rectangle=new n.XFAObjectArray,a.ref=new n.XFAObjectArray,a.script=new n.XFAObjectArray,a.setProperty=new n.XFAObjectArray,a.signData=new n.XFAObjectArray,a.signature=new n.XFAObjectArray,a.signing=new n.XFAObjectArray,a.solid=new n.XFAObjectArray,a.speak=new n.XFAObjectArray,a.stipple=new n.XFAObjectArray,a.subform=new n.XFAObjectArray,a.subformSet=new n.XFAObjectArray,a.subjectDN=new n.XFAObjectArray,a.subjectDNs=new n.XFAObjectArray,a.submit=new n.XFAObjectArray,a.text=new n.XFAObjectArray,a.textEdit=new n.XFAObjectArray,a.time=new n.XFAObjectArray,a.timeStamp=new n.XFAObjectArray,a.toolTip=new n.XFAObjectArray,a.traversal=new n.XFAObjectArray,a.traverse=new n.XFAObjectArray,a.ui=new n.XFAObjectArray,a.validate=new n.XFAObjectArray,a.value=new n.XFAObjectArray,a.variables=new n.XFAObjectArray,a}return v(r)}(n.XFAObject),wt=function(e){m(r,e);var t=w(r);function r(e){var n;return y(this,r),(n=t.call(this,F,"radial",!0)).id=e.id||"",n.type=(0,s.getStringOption)(e.type,["toEdge","toCenter"]),n.use=e.use||"",n.usehref=e.usehref||"",n.color=null,n.extras=null,n}return v(r,[{key:n.$toStyle,value:function(e){e=e?e[n.$toStyle]():"#FFFFFF";var t=this.color?this.color[n.$toStyle]():"#000000",r="toEdge"===this.type?"".concat(e,",").concat(t):"".concat(t,",").concat(e);return"radial-gradient(circle at center, ".concat(r,")")}}]),r}(n.XFAObject),kt=function(e){m(r,e);var t=w(r);function r(e){var n;return y(this,r),(n=t.call(this,F,"reason")).id=e.id||"",n.name=e.name||"",n.use=e.use||"",n.usehref=e.usehref||"",n}return v(r)}(n.StringObject),St=function(e){m(r,e);var t=w(r);function r(e){var a;return y(this,r),(a=t.call(this,F,"reasons",!0)).id=e.id||"",a.type=(0,s.getStringOption)(e.type,["optional","required"]),a.use=e.use||"",a.usehref=e.usehref||"",a.reason=new n.XFAObjectArray,a}return v(r)}(n.XFAObject),xt=function(e){m(r,e);var t=w(r);function r(e){var a;return y(this,r),(a=t.call(this,F,"rectangle",!0)).hand=(0,s.getStringOption)(e.hand,["even","left","right"]),a.id=e.id||"",a.use=e.use||"",a.usehref=e.usehref||"",a.corner=new n.XFAObjectArray(4),a.edge=new n.XFAObjectArray(4),a.fill=null,a}return v(r,[{key:n.$toHTML,value:function(){var e=this.edge.children.length?this.edge.children[0]:new Ae({}),t=e[n.$toStyle](),r=Object.create(null);this.fill&&"visible"===this.fill.presence?Object.assign(r,this.fill[n.$toStyle]()):r.fill="transparent",r.strokeWidth=(0,o.measureToString)("visible"===e.presence?e.thickness:0),r.stroke=t.color;var a=(this.corner.children.length?this.corner.children[0]:new ge({}))[n.$toStyle](),i={name:"svg",children:[{name:"rect",attributes:{xmlns:P,width:"100%",height:"100%",x:0,y:0,rx:a.radius,ry:a.radius,style:r}}],attributes:{xmlns:P,style:{overflow:"visible"},width:"100%",height:"100%"}};return M(this[n.$getParent]()[n.$getParent]())?s.HTMLResult.success({name:"div",attributes:{style:{display:"inline",width:"100%",height:"100%"}},children:[i]}):(i.attributes.style.position="absolute",s.HTMLResult.success(i))}}]),r}(n.XFAObject),Ot=function(e){m(r,e);var t=w(r);function r(e){var n;return y(this,r),(n=t.call(this,F,"ref")).id=e.id||"",n.use=e.use||"",n.usehref=e.usehref||"",n}return v(r)}(n.StringObject),At=function(e){m(r,e);var t=w(r);function r(e){var n;return y(this,r),(n=t.call(this,F,"script")).binding=e.binding||"",n.contentType=e.contentType||"",n.id=e.id||"",n.name=e.name||"",n.runAt=(0,s.getStringOption)(e.runAt,["client","both","server"]),n.use=e.use||"",n.usehref=e.usehref||"",n}return v(r)}(n.StringObject),Ct=function(e){m(r,e);var t=w(r);function r(e){var n;return y(this,r),(n=t.call(this,F,"setProperty")).connection=e.connection||"",n.ref=e.ref||"",n.target=e.target||"",n}return v(r)}(n.XFAObject);t.SetProperty=Ct;var Ft=function(e){m(r,e);var t=w(r);function r(e){var n;return y(this,r),(n=t.call(this,F,"signData",!0)).id=e.id||"",n.operation=(0,s.getStringOption)(e.operation,["sign","clear","verify"]),n.ref=e.ref||"",n.target=e.target||"",n.use=e.use||"",n.usehref=e.usehref||"",n.filter=null,n.manifest=null,n}return v(r)}(n.XFAObject),Pt=function(e){m(r,e);var t=w(r);function r(e){var n;return y(this,r),(n=t.call(this,F,"signature",!0)).id=e.id||"",n.type=(0,s.getStringOption)(e.type,["PDF1.3","PDF1.6"]),n.use=e.use||"",n.usehref=e.usehref||"",n.border=null,n.extras=null,n.filter=null,n.manifest=null,n.margin=null,n}return v(r)}(n.XFAObject),Tt=function(e){m(r,e);var t=w(r);function r(e){var a;return y(this,r),(a=t.call(this,F,"signing",!0)).id=e.id||"",a.type=(0,s.getStringOption)(e.type,["optional","required"]),a.use=e.use||"",a.usehref=e.usehref||"",a.certificate=new n.XFAObjectArray,a}return v(r)}(n.XFAObject),It=function(e){m(r,e);var t=w(r);function r(e){var n;return y(this,r),(n=t.call(this,F,"solid",!0)).id=e.id||"",n.use=e.use||"",n.usehref=e.usehref||"",n.extras=null,n}return v(r,[{key:n.$toStyle,value:function(e){return e?e[n.$toStyle]():"#FFFFFF"}}]),r}(n.XFAObject),Et=function(e){m(r,e);var t=w(r);function r(e){var n;return y(this,r),(n=t.call(this,F,"speak")).disable=(0,s.getInteger)({data:e.disable,defaultValue:0,validate:function(e){return 1===e}}),n.id=e.id||"",n.priority=(0,s.getStringOption)(e.priority,["custom","caption","name","toolTip"]),n.rid=e.rid||"",n.use=e.use||"",n.usehref=e.usehref||"",n}return v(r)}(n.StringObject),jt=function(e){m(r,e);var t=w(r);function r(e){var n;return y(this,r),(n=t.call(this,F,"stipple",!0)).id=e.id||"",n.rate=(0,s.getInteger)({data:e.rate,defaultValue:50,validate:function(e){return e>=0&&e<=100}}),n.use=e.use||"",n.usehref=e.usehref||"",n.color=null,n.extras=null,n}return v(r,[{key:n.$toStyle,value:function(e){var t=this.rate/100;return c.Util.makeHexColor(Math.round(e.value.r*(1-t)+this.value.r*t),Math.round(e.value.g*(1-t)+this.value.g*t),Math.round(e.value.b*(1-t)+this.value.b*t))}}]),r}(n.XFAObject),Mt=function(e){m(r,e);var t=w(r);function r(e){var a;return y(this,r),(a=t.call(this,F,"subform",!0)).access=(0,s.getStringOption)(e.access,["open","nonInteractive","protected","readOnly"]),a.allowMacro=(0,s.getInteger)({data:e.allowMacro,defaultValue:0,validate:function(e){return 1===e}}),a.anchorType=(0,s.getStringOption)(e.anchorType,["topLeft","bottomCenter","bottomLeft","bottomRight","middleCenter","middleLeft","middleRight","topCenter","topRight"]),a.colSpan=(0,s.getInteger)({data:e.colSpan,defaultValue:1,validate:function(e){return e>=1||-1===e}}),a.columnWidths=(e.columnWidths||"").trim().split(/\\s+/).map((function(e){return"-1"===e?-1:(0,s.getMeasurement)(e)})),a.h=e.h?(0,s.getMeasurement)(e.h):"",a.hAlign=(0,s.getStringOption)(e.hAlign,["left","center","justify","justifyAll","radix","right"]),a.id=e.id||"",a.layout=(0,s.getStringOption)(e.layout,["position","lr-tb","rl-row","rl-tb","row","table","tb"]),a.locale=e.locale||"",a.maxH=(0,s.getMeasurement)(e.maxH,"0pt"),a.maxW=(0,s.getMeasurement)(e.maxW,"0pt"),a.mergeMode=(0,s.getStringOption)(e.mergeMode,["consumeData","matchTemplate"]),a.minH=(0,s.getMeasurement)(e.minH,"0pt"),a.minW=(0,s.getMeasurement)(e.minW,"0pt"),a.name=e.name||"",a.presence=(0,s.getStringOption)(e.presence,["visible","hidden","inactive","invisible"]),a.relevant=(0,s.getRelevant)(e.relevant),a.restoreState=(0,s.getStringOption)(e.restoreState,["manual","auto"]),a.scope=(0,s.getStringOption)(e.scope,["name","none"]),a.use=e.use||"",a.usehref=e.usehref||"",a.w=e.w?(0,s.getMeasurement)(e.w):"",a.x=(0,s.getMeasurement)(e.x,"0pt"),a.y=(0,s.getMeasurement)(e.y,"0pt"),a.assist=null,a.bind=null,a.bookend=null,a.border=null,a.break=null,a.calculate=null,a.desc=null,a.extras=null,a.keep=null,a.margin=null,a.occur=null,a.overflow=null,a.pageSet=null,a.para=null,a.traversal=null,a.validate=null,a.variables=null,a.area=new n.XFAObjectArray,a.breakAfter=new n.XFAObjectArray,a.breakBefore=new n.XFAObjectArray,a.connect=new n.XFAObjectArray,a.draw=new n.XFAObjectArray,a.event=new n.XFAObjectArray,a.exObject=new n.XFAObjectArray,a.exclGroup=new n.XFAObjectArray,a.field=new n.XFAObjectArray,a.proto=new n.XFAObjectArray,a.setProperty=new n.XFAObjectArray,a.subform=new n.XFAObjectArray,a.subformSet=new n.XFAObjectArray,a}return v(r,[{key:n.$getSubformParent,value:function(){var e=this[n.$getParent]();return e instanceof _t?e[n.$getSubformParent]():e}},{key:n.$isBindable,value:function(){return!0}},{key:n.$isThereMoreWidth,value:function(){return this.layout.endsWith("-tb")&&0===this[n.$extra].attempt&&this[n.$extra].numberInLine>0||this[n.$getParent]()[n.$isThereMoreWidth]()}},{key:n.$getContainedChildren,value:S().mark((function e(){return S().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.delegateYield(L(this),"t0",1);case 1:case"end":return e.stop()}}),e,this)}))},{key:n.$flushHTML,value:function(){return(0,i.flushHTML)(this)}},{key:n.$addHTML,value:function(e,t){(0,i.addHTML)(this,e,t)}},{key:n.$getAvailableSpace,value:function(){return(0,i.getAvailableSpace)(this)}},{key:n.$isSplittable,value:function(){var e=this[n.$getSubformParent]();return!!e[n.$isSplittable]()&&(void 0!==this[n.$extra]._isSplittable?this[n.$extra]._isSplittable:"position"===this.layout||this.layout.includes("row")||this.keep&&"none"!==this.keep.intact?(this[n.$extra]._isSplittable=!1,!1):!(e.layout&&e.layout.endsWith("-tb")&&0!==e[n.$extra].numberInLine||(this[n.$extra]._isSplittable=!0,0)))}},{key:n.$toHTML,value:function(e){if(N(this),this.break){if("auto"!==this.break.after||""!==this.break.afterTarget){var t=new re({targetType:this.break.after,target:this.break.afterTarget,startNew:this.break.startNew.toString()});t[n.$globalData]=this[n.$globalData],this[n.$appendChild](t),this.breakAfter.push(t)}if("auto"!==this.break.before||""!==this.break.beforeTarget){var r=new ne({targetType:this.break.before,target:this.break.beforeTarget,startNew:this.break.startNew.toString()});r[n.$globalData]=this[n.$globalData],this[n.$appendChild](r),this.breakBefore.push(r)}if(""!==this.break.overflowTarget){var a=new ht({target:this.break.overflowTarget,leader:this.break.overflowLeader,trailer:this.break.overflowTrailer});a[n.$globalData]=this[n.$globalData],this[n.$appendChild](a),this.overflow.push(a)}this[n.$removeChild](this.break),this.break=null}if("hidden"===this.presence||"inactive"===this.presence)return s.HTMLResult.EMPTY;if((this.breakBefore.children.length>1||this.breakAfter.children.length>1)&&(0,c.warn)("XFA - Several breakBefore or breakAfter in subforms: please file a bug."),this.breakBefore.children.length>=1){var u=this.breakBefore.children[0];if(H(u))return s.HTMLResult.breakNode(u)}if(this[n.$extra]&&this[n.$extra].afterBreakAfter)return s.HTMLResult.EMPTY;(0,o.fixDimensions)(this);var l=[],f={id:this[n.$uid],class:[]};(0,o.setAccess)(this,f.class),this[n.$extra]||(this[n.$extra]=Object.create(null)),Object.assign(this[n.$extra],{children:l,line:null,attributes:f,attempt:0,numberInLine:0,availableSpace:{width:Math.min(this.w||1/0,e.width),height:Math.min(this.h||1/0,e.height)},width:0,height:0,prevHeight:0,currentWidth:0});var h=this[n.$getTemplateRoot](),d=h[n.$extra].noLayoutFailure,p=this[n.$isSplittable]();if(p||$(this),!(0,i.checkDimensions)(this,e))return s.HTMLResult.FAILURE;var g=new Set(["area","draw","exclGroup","field","subform","subformSet"]);if(this.layout.includes("row")){var v=this[n.$getSubformParent]().columnWidths;Array.isArray(v)&&v.length>0&&(this[n.$extra].columnWidths=v,this[n.$extra].currentColumn=0)}var y=(0,o.toStyle)(this,"anchorType","dimensions","position","presence","border","margin","hAlign"),m=["xfaSubform"],b=(0,o.layoutClass)(this);if(b&&m.push(b),f.style=y,f.class=m,this.name&&(f.xfaName=this.name),this.overflow){var w=this.overflow[n.$getExtra]();w.addLeader&&(w.addLeader=!1,q(this,w.leader,e))}this[n.$pushPara]();for(var k="lr-tb"===this.layout||"rl-tb"===this.layout,S=k?2:1;this[n.$extra].attempt=1){var j=this.breakAfter.children[0];if(H(j))return this[n.$extra].afterBreakAfter=E,s.HTMLResult.breakNode(j)}return delete this[n.$extra],E}}]),r}(n.XFAObject),_t=function(e){m(r,e);var t=w(r);function r(e){var a;return y(this,r),(a=t.call(this,F,"subformSet",!0)).id=e.id||"",a.name=e.name||"",a.relation=(0,s.getStringOption)(e.relation,["ordered","choice","unordered"]),a.relevant=(0,s.getRelevant)(e.relevant),a.use=e.use||"",a.usehref=e.usehref||"",a.bookend=null,a.break=null,a.desc=null,a.extras=null,a.occur=null,a.overflow=null,a.breakAfter=new n.XFAObjectArray,a.breakBefore=new n.XFAObjectArray,a.subform=new n.XFAObjectArray,a.subformSet=new n.XFAObjectArray,a}return v(r,[{key:n.$getContainedChildren,value:S().mark((function e(){return S().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.delegateYield(L(this),"t0",1);case 1:case"end":return e.stop()}}),e,this)}))},{key:n.$getSubformParent,value:function(){for(var e=this[n.$getParent]();!(e instanceof Mt);)e=e[n.$getParent]();return e}},{key:n.$isBindable,value:function(){return!0}}]),r}(n.XFAObject),Lt=function(e){m(r,e);var t=w(r);function r(e){var n;return y(this,r),(n=t.call(this,F,"subjectDN")).delimiter=e.delimiter||",",n.id=e.id||"",n.name=e.name||"",n.use=e.use||"",n.usehref=e.usehref||"",n}return v(r,[{key:n.$finalize,value:function(){this[n.$content]=new Map(this[n.$content].split(this.delimiter).map((function(e){return(e=e.split("=",2))[0]=e[0].trim(),e})))}}]),r}(n.ContentObject),Rt=function(e){m(r,e);var t=w(r);function r(e){var a;return y(this,r),(a=t.call(this,F,"subjectDNs",!0)).id=e.id||"",a.type=(0,s.getStringOption)(e.type,["optional","required"]),a.use=e.use||"",a.usehref=e.usehref||"",a.subjectDN=new n.XFAObjectArray,a}return v(r)}(n.XFAObject),Nt=function(e){m(r,e);var t=w(r);function r(e){var a;return y(this,r),(a=t.call(this,F,"submit",!0)).embedPDF=(0,s.getInteger)({data:e.embedPDF,defaultValue:0,validate:function(e){return 1===e}}),a.format=(0,s.getStringOption)(e.format,["xdp","formdata","pdf","urlencoded","xfd","xml"]),a.id=e.id||"",a.target=e.target||"",a.textEncoding=(0,s.getKeyword)({data:e.textEncoding?e.textEncoding.toLowerCase():"",defaultValue:"",validate:function(e){return["utf-8","big-five","fontspecific","gbk","gb-18030","gb-2312","ksc-5601","none","shift-jis","ucs-2","utf-16"].includes(e)||e.match(/iso-8859-\\d{2}/)}}),a.use=e.use||"",a.usehref=e.usehref||"",a.xdpContent=e.xdpContent||"",a.encrypt=null,a.encryptData=new n.XFAObjectArray,a.signData=new n.XFAObjectArray,a}return v(r)}(n.XFAObject),Dt=function(e){m(r,e);var t=w(r);function r(e){var a;return y(this,r),(a=t.call(this,F,"template",!0)).baseProfile=(0,s.getStringOption)(e.baseProfile,["full","interactiveForms"]),a.extras=null,a.subform=new n.XFAObjectArray,a}return v(r,[{key:n.$finalize,value:function(){0===this.subform.children.length&&(0,c.warn)("XFA - No subforms in template node."),this.subform.children.length>=2&&(0,c.warn)("XFA - Several subforms in template node: please file a bug."),this[n.$tabIndex]=5e3}},{key:n.$isSplittable,value:function(){return!0}},{key:n.$searchNode,value:function(e,t){return e.startsWith("#")?[this[n.$ids].get(e.slice(1))]:(0,f.searchNode)(this,t,e,!0,!0)}},{key:n.$toPages,value:S().mark((function e(){var t,r,a,i,o,u,l,f,d,p,g,v,y,m,b,w,k=this;return S().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.subform.children.length){e.next=2;break}return e.abrupt("return",s.HTMLResult.success({name:"div",children:[]}));case 2:this[n.$extra]={overflowNode:null,firstUnsplittable:null,currentContentArea:null,currentPageArea:null,noLayoutFailure:!1,pageNumber:1,pagePosition:"first",oddOrEven:"odd",blankOrNotBlank:"nonBlank",paraStack:[]},(t=this.subform.children[0]).pageSet[n.$cleanPage](),r=t.pageSet.pageArea.children,a={name:"div",children:[]},i=null,o=null,u=null,t.breakBefore.children.length>=1?(o=t.breakBefore.children[0],u=o.target):t.subform.children.length>=1&&t.subform.children[0].breakBefore.children.length>=1?(o=t.subform.children[0].breakBefore.children[0],u=o.target):t.break&&t.break.beforeTarget?(o=t.break,u=o.beforeTarget):t.subform.children.length>=1&&t.subform.children[0].break&&t.subform.children[0].break.beforeTarget&&(o=t.subform.children[0].break,u=o.beforeTarget),o&&(l=this[n.$searchNode](u,o[n.$getParent]()))instanceof dt&&(i=l,o[n.$extra]={}),i||(i=r[0]),i[n.$extra]={numberOfUse:1},(f=i[n.$getParent]())[n.$extra]={numberOfUse:1,pageIndex:f.pageArea.children.indexOf(i),pageSetIndex:0},p=null,g=null,v=!0,y=0,m=0,b=S().mark((function e(){var r,o,s,u,l,f,h,b,w,x,O,A,C,F,P;return S().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(v){e.next=7;break}if(a.children.pop(),3!=++y){e.next=5;break}return(0,c.warn)("XFA - Something goes wrong: please file a bug."),e.abrupt("return",{v:a});case 5:e.next=8;break;case 7:y=0;case 8:d=null,k[n.$extra].currentPageArea=i,r=i[n.$toHTML]().html,a.children.push(r),p&&(k[n.$extra].noLayoutFailure=!0,r.children.push(p[n.$toHTML](i[n.$extra].space).html),p=null),g&&(k[n.$extra].noLayoutFailure=!0,r.children.push(g[n.$toHTML](i[n.$extra].space).html),g=null),o=i.contentArea.children,s=r.children.filter((function(e){return e.attributes.class.includes("xfaContentarea")})),v=!1,k[n.$extra].firstUnsplittable=null,k[n.$extra].noLayoutFailure=!1,u=function(e){var r=t[n.$flushHTML]();r&&(v=v||r.children&&0!==r.children.length,s[e].children.push(r))},l=m,f=o.length;case 21:if(!(l1&&a.children.pop(),e.abrupt("return",{v:a});case 31:if(!w.isBreak()){e.next=40;break}if(x=w.breakNode,u(l),"auto"!==x.targetType){e.next=36;break}return e.abrupt("continue",53);case 36:return x.leader&&(p=(p=k[n.$searchNode](x.leader,x[n.$getParent]()))?p[0]:null),x.trailer&&(g=(g=k[n.$searchNode](x.trailer,x[n.$getParent]()))?g[0]:null),"pageArea"===x.targetType?(d=x[n.$extra].target,l=1/0):x[n.$extra].target?(d=x[n.$extra].target,m=x[n.$extra].index+1,l=1/0):l=x[n.$extra].index,e.abrupt("continue",53);case 40:if(!k[n.$extra].overflowNode){e.next=52;break}return O=k[n.$extra].overflowNode,k[n.$extra].overflowNode=null,A=O[n.$getExtra](),C=A.target,A.addLeader=null!==A.leader,A.addTrailer=null!==A.trailer,u(l),F=l,l=1/0,C instanceof dt?d=C:C instanceof pe&&(-1!==(P=o.indexOf(C))?P>F?l=P-1:m=P:(d=C[n.$getParent](),m=d.contentArea.children.indexOf(C))),e.abrupt("continue",53);case 52:u(l);case 53:l++,e.next=21;break;case 56:return k[n.$extra].pageNumber+=1,d&&(d[n.$isUsable]()?d[n.$extra].numberOfUse+=1:d=null),i=d||i[n.$getNextPage](),e.next=61,null;case 61:case"end":return e.stop()}}),e)}));case 22:return e.delegateYield(b(),"t0",24);case 24:if("object"!==h(w=e.t0)){e.next=27;break}return e.abrupt("return",w.v);case 27:e.next=22;break;case 29:case"end":return e.stop()}}),e,this)}))}]),r}(n.XFAObject);t.Template=Dt;var Bt=function(e){m(r,e);var t=w(r);function r(e){var n;return y(this,r),(n=t.call(this,F,"text")).id=e.id||"",n.maxChars=(0,s.getInteger)({data:e.maxChars,defaultValue:0,validate:function(e){return e>=0}}),n.name=e.name||"",n.rid=e.rid||"",n.use=e.use||"",n.usehref=e.usehref||"",n}return v(r,[{key:n.$acceptWhitespace,value:function(){return!0}},{key:n.$onChild,value:function(e){return e[n.$namespaceId]===a.NamespaceIds.xhtml.id?(this[n.$content]=e,!0):((0,c.warn)("XFA - Invalid content in Text: ".concat(e[n.$nodeName],".")),!1)}},{key:n.$onText,value:function(e){this[n.$content]instanceof n.XFAObject||d(k(r.prototype),n.$onText,this).call(this,e)}},{key:n.$finalize,value:function(){"string"==typeof this[n.$content]&&(this[n.$content]=this[n.$content].replace(/\\r\\n/g,"\\n"))}},{key:n.$getExtra,value:function(){return"string"==typeof this[n.$content]?this[n.$content].split(/[\\u2029\\u2028\\n]/).reduce((function(e,t){return t&&e.push(t),e}),[]).join("\\n"):this[n.$content][n.$text]()}},{key:n.$toHTML,value:function(e){if("string"==typeof this[n.$content]){var t=U(this[n.$content]).html;return this[n.$content].includes("\\u2029")?(t.name="div",t.children=[],this[n.$content].split("\\u2029").map((function(e){return e.split(/[\\u2028\\n]/).reduce((function(e,t){return e.push({name:"span",value:t},{name:"br"}),e}),[])})).forEach((function(e){t.children.push({name:"p",children:e})}))):/[\\u2028\\n]/.test(this[n.$content])&&(t.name="div",t.children=[],this[n.$content].split(/[\\u2028\\n]/).forEach((function(e){t.children.push({name:"span",value:e},{name:"br"})}))),s.HTMLResult.success(t)}return this[n.$content][n.$toHTML](e)}}]),r}(n.ContentObject);t.Text=Bt;var Ut=function(e){m(r,e);var t=w(r);function r(e){var n;return y(this,r),(n=t.call(this,F,"textEdit",!0)).allowRichText=(0,s.getInteger)({data:e.allowRichText,defaultValue:0,validate:function(e){return 1===e}}),n.hScrollPolicy=(0,s.getStringOption)(e.hScrollPolicy,["auto","off","on"]),n.id=e.id||"",n.multiLine=(0,s.getInteger)({data:e.multiLine,defaultValue:"",validate:function(e){return 0===e||1===e}}),n.use=e.use||"",n.usehref=e.usehref||"",n.vScrollPolicy=(0,s.getStringOption)(e.vScrollPolicy,["auto","off","on"]),n.border=null,n.comb=null,n.extras=null,n.margin=null,n}return v(r,[{key:n.$toHTML,value:function(e){var t,r=(0,o.toStyle)(this,"border","font","margin"),a=this[n.$getParent]()[n.$getParent]();return""===this.multiLine&&(this.multiLine=a instanceof Oe?1:0),t=1===this.multiLine?{name:"textarea",attributes:{dataId:a[n.$data]&&a[n.$data][n.$uid]||a[n.$uid],fieldId:a[n.$uid],class:["xfaTextfield"],style:r,"aria-label":B(a),"aria-required":!1}}:{name:"input",attributes:{type:"text",dataId:a[n.$data]&&a[n.$data][n.$uid]||a[n.$uid],fieldId:a[n.$uid],class:["xfaTextfield"],style:r,"aria-label":B(a),"aria-required":!1}},R(a)&&(t.attributes["aria-required"]=!0,t.attributes.required=!0),s.HTMLResult.success({name:"label",attributes:{class:["xfaLabel"]},children:[t]})}}]),r}(n.XFAObject),$t=function(e){m(r,e);var t=w(r);function r(e){var n;return y(this,r),(n=t.call(this,F,"time")).id=e.id||"",n.name=e.name||"",n.use=e.use||"",n.usehref=e.usehref||"",n}return v(r,[{key:n.$finalize,value:function(){var e=this[n.$content].trim();this[n.$content]=e?new Date(e):null}},{key:n.$toHTML,value:function(e){return U(this[n.$content]?this[n.$content].toString():"")}}]),r}(n.StringObject),Xt=function(e){m(r,e);var t=w(r);function r(e){var n;return y(this,r),(n=t.call(this,F,"timeStamp")).id=e.id||"",n.server=e.server||"",n.type=(0,s.getStringOption)(e.type,["optional","required"]),n.use=e.use||"",n.usehref=e.usehref||"",n}return v(r)}(n.XFAObject),Ht=function(e){m(r,e);var t=w(r);function r(e){var n;return y(this,r),(n=t.call(this,F,"toolTip")).id=e.id||"",n.rid=e.rid||"",n.use=e.use||"",n.usehref=e.usehref||"",n}return v(r)}(n.StringObject),qt=function(e){m(r,e);var t=w(r);function r(e){var a;return y(this,r),(a=t.call(this,F,"traversal",!0)).id=e.id||"",a.use=e.use||"",a.usehref=e.usehref||"",a.extras=null,a.traverse=new n.XFAObjectArray,a}return v(r)}(n.XFAObject),Gt=function(e){m(r,e);var t=w(r);function r(e){var n;return y(this,r),(n=t.call(this,F,"traverse",!0)).id=e.id||"",n.operation=(0,s.getStringOption)(e.operation,["next","back","down","first","left","right","up"]),n.ref=e.ref||"",n.use=e.use||"",n.usehref=e.usehref||"",n.extras=null,n.script=null,n}return v(r,[{key:"name",get:function(){return this.operation}},{key:n.$isTransparent,value:function(){return!1}}]),r}(n.XFAObject),zt=function(e){m(r,e);var t=w(r);function r(e){var n;return y(this,r),(n=t.call(this,F,"ui",!0)).id=e.id||"",n.use=e.use||"",n.usehref=e.usehref||"",n.extras=null,n.picture=null,n.barcode=null,n.button=null,n.checkButton=null,n.choiceList=null,n.dateTimeEdit=null,n.defaultUi=null,n.imageEdit=null,n.numericEdit=null,n.passwordEdit=null,n.signature=null,n.textEdit=null,n}return v(r,[{key:n.$getExtra,value:function(){if(void 0===this[n.$extra]){var e,t=O(Object.getOwnPropertyNames(this));try{for(t.s();!(e=t.n()).done;){var r=e.value;if("extras"!==r&&"picture"!==r){var a=this[r];if(a instanceof n.XFAObject)return this[n.$extra]=a,a}}}catch(e){t.e(e)}finally{t.f()}this[n.$extra]=null}return this[n.$extra]}},{key:n.$toHTML,value:function(e){var t=this[n.$getExtra]();return t?t[n.$toHTML](e):s.HTMLResult.EMPTY}}]),r}(n.XFAObject),Wt=function(e){m(r,e);var t=w(r);function r(e){var n;return y(this,r),(n=t.call(this,F,"validate",!0)).formatTest=(0,s.getStringOption)(e.formatTest,["warning","disabled","error"]),n.id=e.id||"",n.nullTest=(0,s.getStringOption)(e.nullTest,["disabled","error","warning"]),n.scriptTest=(0,s.getStringOption)(e.scriptTest,["error","disabled","warning"]),n.use=e.use||"",n.usehref=e.usehref||"",n.extras=null,n.message=null,n.picture=null,n.script=null,n}return v(r)}(n.XFAObject),Vt=function(e){m(r,e);var t=w(r);function r(e){var n;return y(this,r),(n=t.call(this,F,"value",!0)).id=e.id||"",n.override=(0,s.getInteger)({data:e.override,defaultValue:0,validate:function(e){return 1===e}}),n.relevant=(0,s.getRelevant)(e.relevant),n.use=e.use||"",n.usehref=e.usehref||"",n.arc=null,n.boolean=null,n.date=null,n.dateTime=null,n.decimal=null,n.exData=null,n.float=null,n.image=null,n.integer=null,n.line=null,n.rectangle=null,n.text=null,n.time=null,n}return v(r,[{key:n.$setValue,value:function(e){function t(t){return e.apply(this,arguments)}return t.toString=function(){return e.toString()},t}((function(e){var t=this[n.$getParent]();if(t instanceof Be&&t.ui&&t.ui.imageEdit)return this.image||(this.image=new We({}),this[n.$appendChild](this.image)),void(this.image[n.$content]=e[n.$content]);var r=e[n.$nodeName];if(null===this[r]){var a,i=O(Object.getOwnPropertyNames(this));try{for(i.s();!(a=i.n()).done;){var o=a.value,s=this[o];s instanceof n.XFAObject&&(this[o]=null,this[n.$removeChild](s))}}catch(e){i.e(e)}finally{i.f()}this[e[n.$nodeName]]=e,this[n.$appendChild](e)}else this[r][n.$content]=e[n.$content]}))},{key:n.$text,value:function(){if(this.exData)return"string"==typeof this.exData[n.$content]?this.exData[n.$content].trim():this.exData[n.$content][n.$text]().trim();var e,t=O(Object.getOwnPropertyNames(this));try{for(t.s();!(e=t.n()).done;){var r=e.value;if("image"!==r){var a=this[r];if(a instanceof n.XFAObject)return(a[n.$content]||"").toString().trim()}}}catch(e){t.e(e)}finally{t.f()}return null}},{key:n.$toHTML,value:function(e){var t,r=O(Object.getOwnPropertyNames(this));try{for(r.s();!(t=r.n()).done;){var a=this[t.value];if(a instanceof n.XFAObject)return a[n.$toHTML](e)}}catch(e){r.e(e)}finally{r.f()}return s.HTMLResult.EMPTY}}]),r}(n.XFAObject);t.Value=Vt;var Yt=function(e){m(r,e);var t=w(r);function r(e){var a;return y(this,r),(a=t.call(this,F,"variables",!0)).id=e.id||"",a.use=e.use||"",a.usehref=e.usehref||"",a.boolean=new n.XFAObjectArray,a.date=new n.XFAObjectArray,a.dateTime=new n.XFAObjectArray,a.decimal=new n.XFAObjectArray,a.exData=new n.XFAObjectArray,a.float=new n.XFAObjectArray,a.image=new n.XFAObjectArray,a.integer=new n.XFAObjectArray,a.manifest=new n.XFAObjectArray,a.script=new n.XFAObjectArray,a.text=new n.XFAObjectArray,a.time=new n.XFAObjectArray,a}return v(r,[{key:n.$isTransparent,value:function(){return!0}}]),r}(n.XFAObject),Kt=function(){function e(){y(this,e)}return v(e,null,[{key:a.$buildXFAObject,value:function(t,r){if(e.hasOwnProperty(t)){var a=e[t](r);return a[n.$setSetAttributes](r),a}}},{key:"appearanceFilter",value:function(e){return new G(e)}},{key:"arc",value:function(e){return new z(e)}},{key:"area",value:function(e){return new W(e)}},{key:"assist",value:function(e){return new V(e)}},{key:"barcode",value:function(e){return new Y(e)}},{key:"bind",value:function(e){return new K(e)}},{key:"bindItems",value:function(e){return new J(e)}},{key:"bookend",value:function(e){return new Z(e)}},{key:"boolean",value:function(e){return new Q(e)}},{key:"border",value:function(e){return new ee(e)}},{key:"break",value:function(e){return new te(e)}},{key:"breakAfter",value:function(e){return new re(e)}},{key:"breakBefore",value:function(e){return new ne(e)}},{key:"button",value:function(e){return new ae(e)}},{key:"calculate",value:function(e){return new ie(e)}},{key:"caption",value:function(e){return new oe(e)}},{key:"certificate",value:function(e){return new se(e)}},{key:"certificates",value:function(e){return new ce(e)}},{key:"checkButton",value:function(e){return new ue(e)}},{key:"choiceList",value:function(e){return new le(e)}},{key:"color",value:function(e){return new fe(e)}},{key:"comb",value:function(e){return new he(e)}},{key:"connect",value:function(e){return new de(e)}},{key:"contentArea",value:function(e){return new pe(e)}},{key:"corner",value:function(e){return new ge(e)}},{key:"date",value:function(e){return new ve(e)}},{key:"dateTime",value:function(e){return new ye(e)}},{key:"dateTimeEdit",value:function(e){return new me(e)}},{key:"decimal",value:function(e){return new be(e)}},{key:"defaultUi",value:function(e){return new we(e)}},{key:"desc",value:function(e){return new ke(e)}},{key:"digestMethod",value:function(e){return new Se(e)}},{key:"digestMethods",value:function(e){return new xe(e)}},{key:"draw",value:function(e){return new Oe(e)}},{key:"edge",value:function(e){return new Ae(e)}},{key:"encoding",value:function(e){return new Ce(e)}},{key:"encodings",value:function(e){return new Fe(e)}},{key:"encrypt",value:function(e){return new Pe(e)}},{key:"encryptData",value:function(e){return new Te(e)}},{key:"encryption",value:function(e){return new Ie(e)}},{key:"encryptionMethod",value:function(e){return new Ee(e)}},{key:"encryptionMethods",value:function(e){return new je(e)}},{key:"event",value:function(e){return new Me(e)}},{key:"exData",value:function(e){return new _e(e)}},{key:"exObject",value:function(e){return new Le(e)}},{key:"exclGroup",value:function(e){return new Re(e)}},{key:"execute",value:function(e){return new Ne(e)}},{key:"extras",value:function(e){return new De(e)}},{key:"field",value:function(e){return new Be(e)}},{key:"fill",value:function(e){return new Ue(e)}},{key:"filter",value:function(e){return new $e(e)}},{key:"float",value:function(e){return new Xe(e)}},{key:"font",value:function(e){return new He(e)}},{key:"format",value:function(e){return new qe(e)}},{key:"handler",value:function(e){return new Ge(e)}},{key:"hyphenation",value:function(e){return new ze(e)}},{key:"image",value:function(e){return new We(e)}},{key:"imageEdit",value:function(e){return new Ve(e)}},{key:"integer",value:function(e){return new Ye(e)}},{key:"issuers",value:function(e){return new Ke(e)}},{key:"items",value:function(e){return new Je(e)}},{key:"keep",value:function(e){return new Ze(e)}},{key:"keyUsage",value:function(e){return new Qe(e)}},{key:"line",value:function(e){return new et(e)}},{key:"linear",value:function(e){return new tt(e)}},{key:"lockDocument",value:function(e){return new rt(e)}},{key:"manifest",value:function(e){return new nt(e)}},{key:"margin",value:function(e){return new at(e)}},{key:"mdp",value:function(e){return new it(e)}},{key:"medium",value:function(e){return new ot(e)}},{key:"message",value:function(e){return new st(e)}},{key:"numericEdit",value:function(e){return new ct(e)}},{key:"occur",value:function(e){return new ut(e)}},{key:"oid",value:function(e){return new lt(e)}},{key:"oids",value:function(e){return new ft(e)}},{key:"overflow",value:function(e){return new ht(e)}},{key:"pageArea",value:function(e){return new dt(e)}},{key:"pageSet",value:function(e){return new pt(e)}},{key:"para",value:function(e){return new gt(e)}},{key:"passwordEdit",value:function(e){return new vt(e)}},{key:"pattern",value:function(e){return new yt(e)}},{key:"picture",value:function(e){return new mt(e)}},{key:"proto",value:function(e){return new bt(e)}},{key:"radial",value:function(e){return new wt(e)}},{key:"reason",value:function(e){return new kt(e)}},{key:"reasons",value:function(e){return new St(e)}},{key:"rectangle",value:function(e){return new xt(e)}},{key:"ref",value:function(e){return new Ot(e)}},{key:"script",value:function(e){return new At(e)}},{key:"setProperty",value:function(e){return new Ct(e)}},{key:"signData",value:function(e){return new Ft(e)}},{key:"signature",value:function(e){return new Pt(e)}},{key:"signing",value:function(e){return new Tt(e)}},{key:"solid",value:function(e){return new It(e)}},{key:"speak",value:function(e){return new Et(e)}},{key:"stipple",value:function(e){return new jt(e)}},{key:"subform",value:function(e){return new Mt(e)}},{key:"subformSet",value:function(e){return new _t(e)}},{key:"subjectDN",value:function(e){return new Lt(e)}},{key:"subjectDNs",value:function(e){return new Rt(e)}},{key:"submit",value:function(e){return new Nt(e)}},{key:"template",value:function(e){return new Dt(e)}},{key:"text",value:function(e){return new Bt(e)}},{key:"textEdit",value:function(e){return new Ut(e)}},{key:"time",value:function(e){return new $t(e)}},{key:"timeStamp",value:function(e){return new Xt(e)}},{key:"toolTip",value:function(e){return new Ht(e)}},{key:"traversal",value:function(e){return new qt(e)}},{key:"traverse",value:function(e){return new Gt(e)}},{key:"ui",value:function(e){return new zt(e)}},{key:"validate",value:function(e){return new Wt(e)}},{key:"value",value:function(e){return new Vt(e)}},{key:"variables",value:function(e){return new Yt(e)}}]),e}();t.TemplateNamespace=Kt},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.addHTML=function(e,t,r){var s=e[n.$extra],u=s.availableSpace,l=i(r,4),f=l[0],h=l[1],d=l[2],p=l[3];switch(e.layout){case"position":s.width=Math.max(s.width,f+d),s.height=Math.max(s.height,h+p),s.children.push(t);break;case"lr-tb":case"rl-tb":s.line&&1!==s.attempt||(s.line=c(e,[]),s.children.push(s.line),s.numberInLine=0),s.numberInLine+=1,s.line.children.push(t),0===s.attempt?(s.currentWidth+=d,s.height=Math.max(s.height,s.prevHeight+p)):(s.currentWidth=d,s.prevHeight=s.height,s.height+=p,s.attempt=0),s.width=Math.max(s.width,s.currentWidth);break;case"rl-row":case"row":s.children.push(t),s.width+=d,s.height=Math.max(s.height,p);var g,v=(0,a.measureToString)(s.height),y=function(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=o(e))){r&&(e=r);var n=0,a=function(){};return{s:a,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,s=!0,c=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return s=e.done,e},e:function(e){c=!0,i=e},f:function(){try{s||null==r.return||r.return()}finally{if(c)throw i}}}}(s.children);try{for(y.s();!(g=y.n()).done;)g.value.attributes.style.height=v}catch(e){y.e(e)}finally{y.f()}break;case"table":case"tb":s.width=Math.min(u.width,Math.max(s.width,d)),s.height+=p,s.children.push(t)}},t.checkDimensions=function(e,t){if(null===e[n.$getTemplateRoot]()[n.$extra].firstUnsplittable)return!0;if(0===e.w||0===e.h)return!0;var r=e[n.$getSubformParent](),a=r[n.$extra]&&r[n.$extra].attempt||0,o=i(function(e){var t,r,n=""===e.w?NaN:e.w,a=""===e.h?NaN:e.h,i=0,o=0;switch(e.anchorType||""){case"bottomCenter":i=n/2,o=a;break;case"bottomLeft":i=0,o=a;break;case"bottomRight":i=n,o=a;break;case"middleCenter":i=n/2,o=a/2;break;case"middleLeft":i=0,o=a/2;break;case"middleRight":i=n,o=a/2;break;case"topCenter":i=n/2,o=0;break;case"topRight":i=n,o=0}switch(e.rotate||0){case 0:t=-i,r=-o;break;case 90:t=-o,r=i;var s=[a,-n];n=s[0],a=s[1];break;case 180:t=i,r=o;var c=[-n,-a];n=c[0],a=c[1];break;case 270:t=o,r=-i;var u=[-a,n];n=u[0],a=u[1]}return[e.x+t+Math.min(0,n),e.y+r+Math.min(0,a),Math.abs(n),Math.abs(a)]}(e),4),s=o[1],c=o[2],u=o[3];switch(r.layout){case"lr-tb":case"rl-tb":return 0===a?e[n.$getTemplateRoot]()[n.$extra].noLayoutFailure?""!==e.w?Math.round(c-t.width)<=2:t.width>2:!(""!==e.h&&Math.round(u-t.height)>2)&&(""!==e.w?Math.round(c-t.width)<=2||0===r[n.$extra].numberInLine&&t.height>2:t.width>2):!!e[n.$getTemplateRoot]()[n.$extra].noLayoutFailure||!(""!==e.h&&Math.round(u-t.height)>2)&&(""===e.w||Math.round(c-t.width)<=2||!r[n.$isThereMoreWidth]())&&t.height>2;case"table":case"tb":return!!e[n.$getTemplateRoot]()[n.$extra].noLayoutFailure||(""===e.h||e[n.$isSplittable]()?(""===e.w||Math.round(c-t.width)<=2||!r[n.$isThereMoreWidth]())&&t.height>2:Math.round(u-t.height)<=2);case"position":return!!e[n.$getTemplateRoot]()[n.$extra].noLayoutFailure||""===e.h||Math.round(u+s-t.height)<=2||u+s>e[n.$getTemplateRoot]()[n.$extra].currentContentArea.h;case"rl-row":case"row":return!!e[n.$getTemplateRoot]()[n.$extra].noLayoutFailure||""===e.h||Math.round(u-t.height)<=2;default:return!0}},t.flushHTML=function(e){if(!e[n.$extra])return null;var t={name:"div",attributes:e[n.$extra].attributes,children:e[n.$extra].children};if(e[n.$extra].failingNode){var r=e[n.$extra].failingNode[n.$flushHTML]();r&&(e.layout.endsWith("-tb")?t.children.push(c(e,[r])):t.children.push(r))}return 0===t.children.length?null:t},t.getAvailableSpace=function(e){var t=e[n.$extra].availableSpace,r=e.margin?e.margin.topInset+e.margin.bottomInset:0,a=e.margin?e.margin.leftInset+e.margin.rightInset:0;switch(e.layout){case"lr-tb":case"rl-tb":return 0===e[n.$extra].attempt?{width:t.width-a-e[n.$extra].currentWidth,height:t.height-r-e[n.$extra].prevHeight}:{width:t.width-a,height:t.height-r-e[n.$extra].height};case"rl-row":case"row":return{width:e[n.$extra].columnWidths.slice(e[n.$extra].currentColumn).reduce((function(e,t){return e+t})),height:t.height-a};case"table":case"tb":return{width:t.width-a,height:t.height-r-e[n.$extra].height};default:return t}};var n=r(206),a=r(213);function i(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,o,s=[],c=!0,u=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){u=!0,a=e}finally{try{if(!c&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(u)throw a}}return s}}(e,t)||o(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function o(e,t){if(e){if("string"==typeof e)return s(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?s(e,t):void 0}}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r{Object.defineProperty(t,"__esModule",{value:!0}),t.computeBbox=function(e,t,r){var a;if(""!==e.w&&""!==e.h)a=[e.x,e.y,e.w,e.h];else{if(!r)return null;var i=e.w;if(""===i){if(0===e.maxW){var o=e[n.$getSubformParent]();i="position"===o.layout&&""!==o.w?0:e.minW}else i=Math.min(e.maxW,r.width);t.attributes.style.width=u(i)}var s=e.h;if(""===s){if(0===e.maxH){var c=e[n.$getSubformParent]();s="position"===c.layout&&""!==c.h?0:e.minH}else s=Math.min(e.maxH,r.height);t.attributes.style.height=u(s)}a=[e.x,e.y,i,s]}return a},t.createWrapper=function(e,t){var r=t.attributes,a=r.style,i={name:"div",attributes:{class:["xfaWrapper"],style:Object.create(null)},children:[]};if(r.class.push("xfaWrapped"),e.border){var o,s,c=e.border[n.$extra],u=c.widths,l=c.insets,f=l[0],d=l[3],p=l[0]+l[2],g=l[1]+l[3];switch(e.border.hand){case"even":f-=u[0]/2,d-=u[3]/2,o="calc(100% + ".concat((u[1]+u[3])/2-g,"px)"),s="calc(100% + ".concat((u[0]+u[2])/2-p,"px)");break;case"left":f-=u[0],d-=u[3],o="calc(100% + ".concat(u[1]+u[3]-g,"px)"),s="calc(100% + ".concat(u[0]+u[2]-p,"px)");break;case"right":o=g?"calc(100% - ".concat(g,"px)"):"100%",s=p?"calc(100% - ".concat(p,"px)"):"100%"}var v=["xfaBorder"];h(e.border)&&v.push("xfaPrintOnly");for(var y={name:"div",attributes:{class:v,style:{top:"".concat(f,"px"),left:"".concat(d,"px"),width:o,height:s}},children:[]},m=0,b=["border","borderWidth","borderColor","borderRadius","borderStyle"];m=0)){var r="padding"+("left"==("right"===e.textAlign?"right":"left")?"Left":"Right"),n=(0,i.getMeasurement)(e[r],"0px");e[r]="".concat(n-t,"px")}},t.fixURL=function(e){var t=(0,a.createValidAbsoluteUrl)(e,null,{addDefaultProtocol:!0,tryConvertEncoding:!0});return t?t.href:null},t.isPrintOnly=h,t.layoutClass=function(e){switch(e.layout){case"position":default:return"xfaPosition";case"lr-tb":return"xfaLrTb";case"rl-row":return"xfaRlRow";case"rl-tb":return"xfaRlTb";case"row":return"xfaRow";case"table":return"xfaTable";case"tb":return"xfaTb"}},t.layoutNode=function(e,t){var r=null,a=null,i=!1;if((!e.w||!e.h)&&e.value){var o=0,s=0;e.margin&&(o=e.margin.leftInset+e.margin.rightInset,s=e.margin.topInset+e.margin.bottomInset);var c=null,u=null;e.para&&(u=Object.create(null),c=""===e.para.lineHeight?null:e.para.lineHeight,u.top=""===e.para.spaceAbove?0:e.para.spaceAbove,u.bottom=""===e.para.spaceBelow?0:e.para.spaceBelow,u.left=""===e.para.marginLeft?0:e.para.marginLeft,u.right=""===e.para.marginRight?0:e.para.marginRight);var l=e.font;if(!l)for(var h=e[n.$getTemplateRoot](),d=e[n.$getParent]();d&&d!==h;){if(d.font){l=d.font;break}d=d[n.$getParent]()}var p=(e.w||t.width)-o,g=e[n.$globalData].fontFinder;if(e.value.exData&&e.value.exData[n.$content]&&"text/html"===e.value.exData.contentType){var v=f(e.value.exData[n.$content],l,u,c,g,p);a=v.width,r=v.height,i=v.isBroken}else{var y=e.value[n.$text]();if(y){var m=f(y,l,u,c,g,p);a=m.width,r=m.height,i=m.isBroken}}null===a||e.w||(a+=o),null===r||e.h||(r+=s)}return{w:a,h:r,isBroken:i}},t.measureToString=u,t.setAccess=function(e,t){switch(e.access){case"nonInteractive":t.push("xfaNonInteractive");break;case"readOnly":t.push("xfaReadOnly");break;case"protected":t.push("xfaDisabled")}},t.setFontFamily=function(e,t,r,n){if(r){var a=(0,i.stripQuotes)(e.typeface);n.fontFamily='"'.concat(a,'"');var s=r.find(a);if(s){var c=s.regular.cssFontInfo.fontFamily;c!==a&&(n.fontFamily='"'.concat(c,'"'));var u=d(t);if(u&&""!==u.lineHeight)return;if(n.lineHeight)return;var l=(0,o.selectFont)(e,s);l&&(n.lineHeight=Math.max(1.2,l.lineHeight))}}else delete n.fontFamily},t.setMinMaxDimensions=function(e,t){"position"===e[n.$getSubformParent]().layout&&(e.minW>0&&(t.minWidth=u(e.minW)),e.maxW>0&&(t.maxWidth=u(e.maxW)),e.minH>0&&(t.minHeight=u(e.minH)),e.maxH>0&&(t.maxHeight=u(e.maxH)))},t.setPara=function(e,t,r){if(r.attributes.class&&r.attributes.class.includes("xfaRich")){t&&(""===e.h&&(t.height="auto"),""===e.w&&(t.width="auto"));var a=d(e);if(a){var i=r.attributes.style;switch(i.display="flex",i.flexDirection="column",a.vAlign){case"top":i.justifyContent="start";break;case"bottom":i.justifyContent="end";break;case"middle":i.justifyContent="center"}for(var o=a[n.$toStyle](),s=0,u=Object.entries(o);s1?r-1:0),o=1;oe.length)&&(t=e.length);for(var r=0,n=new Array(t);r0&&!e.relevant[0].excluded&&"print"===e.relevant[0].viewname}function d(e){var t=e[n.$getTemplateRoot]()[n.$extra].paraStack;return t.length?t.at(-1):null}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FontFinder=void 0,t.getMetrics=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=null;if(e){var i=(0,a.stripQuotes)(e.typeface),o=e[n.$globalData].fontFinder.find(i);r=d(e,o)}if(!r)return{lineHeight:12,lineGap:2,lineNoGap:10};var s=e.size||10,c=r.lineHeight?Math.max(t?0:1.2,r.lineHeight):1.2,u=void 0===r.lineGap?.2:r.lineGap;return{lineHeight:c*s,lineGap:u*s,lineNoGap:Math.max(1,c-u)*s}},t.selectFont=d;var n=r(206),a=r(207),i=r(2);function o(e){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o(e)}function s(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,o,s=[],c=!0,u=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){u=!0,a=e}finally{try{if(!c&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(u)throw a}}return s}}(e,t)||u(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function c(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=u(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,a=function(){};return{s:a,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return o=e.done,e},e:function(e){s=!0,i=e},f:function(){try{o||null==r.return||r.return()}finally{if(s)throw i}}}}function u(e,t){if(e){if("string"==typeof e)return l(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?l(e,t):void 0}}function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r1&&void 0!==arguments[1]?arguments[1]:null,n=c(e);try{for(n.s();!(t=n.n()).done;){var a=t.value;this.addPdfFont(a)}}catch(e){n.e(e)}finally{n.f()}var i,o=c(this.fonts.values());try{for(o.s();!(i=o.n()).done;){var s=i.value;s.regular||(s.regular=s.italic||s.bold||s.bolditalic)}}catch(e){o.e(e)}finally{o.f()}if(r&&0!==r.size){var u,l=this.fonts.get("PdfJS-Fallback-PdfJS-XFA"),f=c(r);try{for(f.s();!(u=f.n()).done;){var h=u.value;this.fonts.set(h,l)}}catch(e){f.e(e)}finally{f.f()}}}},{key:"addPdfFont",value:function(e){var t=e.cssFontInfo,r=t.fontFamily,n=this.fonts.get(r);n||(n=Object.create(null),this.fonts.set(r,n),this.defaultFont||(this.defaultFont=n));var a="",i=parseFloat(t.fontWeight);0!==parseFloat(t.italicAngle)?a=i>=700?"bolditalic":"italic":i>=700&&(a="bold"),a||((e.name.includes("Bold")||e.psName&&e.psName.includes("Bold"))&&(a="bold"),(e.name.includes("Italic")||e.name.endsWith("It")||e.psName&&(e.psName.includes("Italic")||e.psName.endsWith("It")))&&(a+="italic")),a||(a="regular"),n[a]=e}},{key:"getDefault",value:function(){return this.defaultFont}},{key:"find",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],r=this.fonts.get(e)||this.cache.get(e);if(r)return r;var n=/,|-|_| |bolditalic|bold|italic|regular|it/gi,a=e.replace(n,"");if(r=this.fonts.get(a))return this.cache.set(e,r),r;a=a.toLowerCase();var o,u=[],l=c(this.fonts.entries());try{for(l.s();!(o=l.n()).done;){var f=s(o.value,2),h=f[0],d=f[1];h.replace(n,"").toLowerCase().startsWith(a)&&u.push(d)}}catch(e){l.e(e)}finally{l.f()}if(0===u.length){var p,g=c(this.fonts.entries());try{for(g.s();!(p=g.n()).done;){var v=s(p.value,2)[1];v.regular.name&&v.regular.name.replace(n,"").toLowerCase().startsWith(a)&&u.push(v)}}catch(e){g.e(e)}finally{g.f()}}if(0===u.length){a=a.replace(/psmt|mt/gi,"");var y,m=c(this.fonts.entries());try{for(m.s();!(y=m.n()).done;){var b=s(y.value,2),w=b[0],k=b[1];w.replace(n,"").toLowerCase().startsWith(a)&&u.push(k)}}catch(e){m.e(e)}finally{m.f()}}if(0===u.length){var S,x=c(this.fonts.values());try{for(x.s();!(S=x.n()).done;){var O=S.value;O.regular.name&&O.regular.name.replace(n,"").toLowerCase().startsWith(a)&&u.push(O)}}catch(e){x.e(e)}finally{x.f()}}return u.length>=1?(1!==u.length&&t&&(0,i.warn)("XFA - Too many choices to guess the correct font: ".concat(e)),this.cache.set(e,u[0]),u[0]):(t&&!this.warned.has(e)&&(this.warned.add(e),(0,i.warn)("XFA - Cannot find the font: ".concat(e))),null)}}],r&&f(t.prototype,r),Object.defineProperty(t,"prototype",{writable:!1}),e}();function d(e,t){return"italic"===e.posture?"bold"===e.weight?t.bolditalic:t.italic:"bold"===e.weight?t.bold:t.regular}t.FontFinder=h},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.TextMeasure=void 0;var n=r(214);function a(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=s(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,a=function(){};return{s:a,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o=!0,c=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return o=e.done,e},e:function(e){c=!0,i=e},f:function(){try{o||null==r.return||r.return()}finally{if(c)throw i}}}}function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}function o(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,o,s=[],c=!0,u=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){u=!0,a=e}finally{try{if(!c&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(u)throw a}}return s}}(e,t)||s(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function s(e,t){if(e){if("string"==typeof e)return c(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?c(e,t):void 0}}function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);re?(n=Math.max(n,i),i=0,a+=s,s=y,t=-1,r=0,c=!0,u=!1):(s=Math.max(y,s),r=i,i+=d,t=l):i+d>e?(a+=s,s=y,-1!==t?(l=t,n=Math.max(n,r),i=0,t=-1,r=0):(n=Math.max(n,i),i=d),c=!0,u=!1):(i+=d,s=Math.max(y,s))}return{width:1.02*(n=Math.max(n,i)),height:a+=s+this.extraHeight,isBroken:c}}}]),e}();t.TextMeasure=p},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.DataHandler=void 0;var n=r(206);function a(e){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a(e)}function i(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=s(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,a=function(){};return{s:a,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o=!0,c=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return o=e.done,e},e:function(e){c=!0,i=e},f:function(){try{o||null==r.return||r.return()}finally{if(c)throw i}}}}function o(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,o,s=[],c=!0,u=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){u=!0,a=e}finally{try{if(!c&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(u)throw a}}return s}}(e,t)||s(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function s(e,t){if(e){if("string"==typeof e)return c(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?c(e,t):void 0}}function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r0;){var r=t.at(-1),a=o(r,2),s=a[0],c=a[1];if(s+1!==c.length){var u=c[++r[0]],l=e.get(u[n.$uid]);if(l)u[n.$setValue](l);else{var f,h=i(u[n.$getAttributes]().values());try{for(h.s();!(f=h.n()).done;){var d=f.value,p=e.get(d[n.$uid]);if(p){d[n.$setValue](p);break}}}catch(e){h.e(e)}finally{h.f()}}var g=u[n.$getChildren]();g.length>0&&t.push([-1,g])}else t.pop()}var v=[''];if(this.dataset){var y,m=i(this.dataset[n.$getChildren]());try{for(m.s();!(y=m.n()).done;){var b=y.value;"data"!==b[n.$nodeName]&&b[n.$toString](v)}}catch(e){m.e(e)}finally{m.f()}}return this.data[n.$toString](v),v.push(""),v.join("")}}])&&u(t.prototype,r),Object.defineProperty(t,"prototype",{writable:!1}),e}();t.DataHandler=l},(e,t,r)=>{function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.XFAParser=void 0;var a=r(206),i=r(195),o=r(218),s=r(2);function c(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,o,s=[],c=!0,u=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){u=!0,a=e}finally{try{if(!c&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(u)throw a}}return s}}(e,t)||u(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function u(e,t){if(e){if("string"==typeof e)return l(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?l(e,t):void 0}}function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r0&&void 0!==arguments[0]?arguments[0]:null,r=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,v),(e=g.call(this))._builder=new o.Builder(t),e._stack=[],e._globalData={usedTypefaces:new Set},e._ids=new Map,e._current=e._builder.buildRoot(e._ids),e._errorCode=i.XMLParserErrorCode.NoError,e._whiteRegex=/^\\s+$/,e._nbsps=/\\xa0+/g,e._richText=r,e}return t=v,(r=[{key:"parse",value:function(e){if(this.parseXml(e),this._errorCode===i.XMLParserErrorCode.NoError)return this._current[a.$finalize](),this._current.element}},{key:"onText",value:function(e){e=e.replace(this._nbsps,(function(e){return e.slice(1)+" "})),this._richText||this._current[a.$acceptWhitespace]()?this._current[a.$onText](e,this._richText):this._whiteRegex.test(e)||this._current[a.$onText](e.trim())}},{key:"onCdata",value:function(e){this._current[a.$onText](e)}},{key:"_mkAttributes",value:function(e,t){var r,n=null,i=null,o=Object.create({}),c=function(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=u(e))){r&&(e=r);var n=0,a=function(){};return{s:a,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return o=e.done,e},e:function(e){s=!0,i=e},f:function(){try{o||null==r.return||r.return()}finally{if(s)throw i}}}}(e);try{for(c.s();!(r=c.n()).done;){var l=r.value,f=l.name,h=l.value;if("xmlns"===f)n?(0,s.warn)("XFA - multiple namespace definition in <".concat(t,">")):n=h;else if(f.startsWith("xmlns:")){var d=f.substring(6);i||(i=[]),i.push({prefix:d,value:h})}else{var p=f.indexOf(":");if(-1===p)o[f]=h;else{var g=o[a.$nsAttributes];g||(g=o[a.$nsAttributes]=Object.create(null));var v=[f.slice(0,p),f.slice(p+1)],y=v[0],m=v[1],b=g[y];b||(b=g[y]=Object.create(null)),b[m]=h}}}}catch(e){c.e(e)}finally{c.f()}return[n,i,o]}},{key:"_getNameAndPrefix",value:function(e,t){var r=e.indexOf(":");return-1===r?[e,null]:[e.substring(r+1),t?"":e.substring(0,r)]}},{key:"onBeginElement",value:function(e,t,r){var n=c(this._mkAttributes(t,e),3),i=n[0],o=n[1],s=n[2],u=c(this._getNameAndPrefix(e,this._builder.isNsAgnostic()),2),l=u[0],f=u[1],h=this._builder.build({nsPrefix:f,name:l,attributes:s,namespace:i,prefixes:o});if(h[a.$globalData]=this._globalData,r)return h[a.$finalize](),this._current[a.$onChild](h)&&h[a.$setId](this._ids),void h[a.$clean](this._builder);this._stack.push(this._current),this._current=h}},{key:"onEndElement",value:function(e){var t=this._current;if(t[a.$isCDATAXml]()&&"string"==typeof t[a.$content]){var r=new v;r._globalData=this._globalData;var n=r.parse(t[a.$content]);t[a.$content]=null,t[a.$onChild](n)}t[a.$finalize](),this._current=this._stack.pop(),this._current[a.$onChild](t)&&t[a.$setId](this._ids),t[a.$clean](this._builder)}},{key:"onError",value:function(e){this._errorCode=e}}])&&f(t.prototype,r),Object.defineProperty(t,"prototype",{writable:!1}),v}(i.XMLParserBase);t.XFAParser=p},(e,t,r)=>{function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.Builder=void 0;var a=r(208),i=r(206),o=r(219),s=r(211),c=r(228),u=r(2);function l(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,o,s=[],c=!0,u=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){u=!0,a=e}finally{try{if(!c&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(u)throw a}}return s}}(e,t)||f(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function f(e,t){if(e){if("string"==typeof e)return h(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?h(e,t):void 0}}function h(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r0&&void 0!==arguments[0]?arguments[0]:null;d(this,e),this._namespaceStack=[],this._nsAgnosticLevel=0,this._namespacePrefixes=new Map,this._namespaces=new Map,this._nextNsId=Math.max.apply(Math,function(e){if(Array.isArray(e))return h(e)}(t=Object.values(a.NamespaceIds).map((function(e){return e.id})))||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(t)||f(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),this._currentNamespace=r||new c.UnknownNamespace(++this._nextNsId)}return g(e,[{key:"buildRoot",value:function(e){return new k(e)}},{key:"build",value:function(e){var t=e.nsPrefix,r=e.name,n=e.attributes,s=e.namespace,c=e.prefixes,u=null!==s;if(u&&(this._namespaceStack.push(this._currentNamespace),this._currentNamespace=this._searchNamespace(s)),c&&this._addNamespacePrefix(c),n.hasOwnProperty(i.$nsAttributes)){for(var f=o.NamespaceSetUp.datasets,h=n[i.$nsAttributes],d=null,p=0,g=Object.entries(h);p0}},{key:"_searchNamespace",value:function(e){var t=this._namespaces.get(e);if(t)return t;for(var r=0,n=Object.entries(a.NamespaceIds);r=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return o=e.done,e},e:function(e){s=!0,i=e},f:function(){try{o||null==r.return||r.return()}finally{if(s)throw i}}}}(e);try{for(r.s();!(t=r.n()).done;){var n=t.value,a=n.prefix,i=n.value,o=this._searchNamespace(i),s=this._namespacePrefixes.get(a);s||(s=[],this._namespacePrefixes.set(a,s)),s.push(o)}}catch(e){r.e(e)}finally{r.f()}}},{key:"_getNamespaceToUse",value:function(e){if(!e)return this._currentNamespace;var t=this._namespacePrefixes.get(e);return t&&t.length>0?t.at(-1):((0,u.warn)("Unknown namespace prefix: ".concat(e,".")),null)}},{key:"clean",value:function(e){var t=this,r=e.hasNamespace,n=e.prefixes,a=e.nsAgnostic;r&&(this._currentNamespace=this._namespaceStack.pop()),n&&n.forEach((function(e){var r=e.prefix;t._namespacePrefixes.get(r).pop()})),a&&this._nsAgnosticLevel--}}]),e}();t.Builder=x},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.NamespaceSetUp=void 0;var n=r(220),a=r(221),i=r(222),o=r(223),s=r(224),c=r(225),u=r(211),l=r(226),f=r(227),h={config:n.ConfigNamespace,connection:a.ConnectionSetNamespace,datasets:i.DatasetsNamespace,localeSet:o.LocaleSetNamespace,signature:s.SignatureNamespace,stylesheet:c.StylesheetNamespace,template:u.TemplateNamespace,xdp:l.XdpNamespace,xhtml:f.XhtmlNamespace};t.NamespaceSetUp=h},(e,t,r)=>{function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.ConfigNamespace=void 0;var a=r(208),i=r(206),o=r(207),s=r(2);function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=1&&e<=8}))}return l(r)}(i.IntegerObject),A=function(e){h(r,e);var t=p(r);function r(e){var n;return f(this,r),(n=t.call(this,v,"agent",!0)).name=e.name?e.name.trim():"",n.common=new i.XFAObjectArray,n}return l(r)}(i.XFAObject),C=function(e){h(r,e);var t=p(r);function r(e){return f(this,r),t.call(this,v,"alwaysEmbed")}return l(r)}(i.ContentObject),F=function(e){h(r,e);var t=p(r);function r(e){return f(this,r),t.call(this,v,"amd")}return l(r)}(i.StringObject),P=function(e){h(r,e);var t=p(r);function r(e){var n;return f(this,r),(n=t.call(this,v,"area")).level=(0,o.getInteger)({data:e.level,defaultValue:0,validate:function(e){return e>=1&&e<=3}}),n.name=(0,o.getStringOption)(e.name,["","barcode","coreinit","deviceDriver","font","general","layout","merge","script","signature","sourceSet","templateCache"]),n}return l(r)}(i.XFAObject),T=function(e){h(r,e);var t=p(r);function r(e){return f(this,r),t.call(this,v,"attributes",["preserve","delegate","ignore"])}return l(r)}(i.OptionObject),I=function(e){h(r,e);var t=p(r);function r(e){return f(this,r),t.call(this,v,"autoSave",["disabled","enabled"])}return l(r)}(i.OptionObject),E=function(e){h(r,e);var t=p(r);function r(e){return f(this,r),t.call(this,v,"base")}return l(r)}(i.StringObject),j=function(e){h(r,e);var t=p(r);function r(e){var n;return f(this,r),(n=t.call(this,v,"batchOutput")).format=(0,o.getStringOption)(e.format,["none","concat","zip","zipCompress"]),n}return l(r)}(i.XFAObject),M=function(e){h(r,e);var t=p(r);function r(e){return f(this,r),t.call(this,v,"behaviorOverride")}return l(r,[{key:i.$finalize,value:function(){this[i.$content]=new Map(this[i.$content].trim().split(/\\s+/).filter((function(e){return e.includes(":")})).map((function(e){return e.split(":",2)})))}}]),r}(i.ContentObject),_=function(e){h(r,e);var t=p(r);function r(e){var n;return f(this,r),(n=t.call(this,v,"cache",!0)).templateCache=null,n}return l(r)}(i.XFAObject),L=function(e){h(r,e);var t=p(r);function r(e){return f(this,r),t.call(this,v,"change")}return l(r)}(i.Option01),R=function(e){h(r,e);var t=p(r);function r(e){var n;return f(this,r),(n=t.call(this,v,"common",!0)).data=null,n.locale=null,n.localeSet=null,n.messaging=null,n.suppressBanner=null,n.template=null,n.validationMessaging=null,n.versionControl=null,n.log=new i.XFAObjectArray,n}return l(r)}(i.XFAObject),N=function(e){h(r,e);var t=p(r);function r(e){var n;return f(this,r),(n=t.call(this,v,"compress")).scope=(0,o.getStringOption)(e.scope,["imageOnly","document"]),n}return l(r)}(i.XFAObject),D=function(e){h(r,e);var t=p(r);function r(e){return f(this,r),t.call(this,v,"compressLogicalStructure")}return l(r)}(i.Option01),B=function(e){h(r,e);var t=p(r);function r(e){return f(this,r),t.call(this,v,"compressObjectStream")}return l(r)}(i.Option10),U=function(e){h(r,e);var t=p(r);function r(e){var n;return f(this,r),(n=t.call(this,v,"compression",!0)).compressLogicalStructure=null,n.compressObjectStream=null,n.level=null,n.type=null,n}return l(r)}(i.XFAObject),$=function(e){h(r,e);var t=p(r);function r(e){var n;return f(this,r),(n=t.call(this,v,"config",!0)).acrobat=null,n.present=null,n.trace=null,n.agent=new i.XFAObjectArray,n}return l(r)}(i.XFAObject),X=function(e){h(r,e);var t=p(r);function r(e){return f(this,r),t.call(this,v,"conformance",["A","B"])}return l(r)}(i.OptionObject),H=function(e){h(r,e);var t=p(r);function r(e){return f(this,r),t.call(this,v,"contentCopy")}return l(r)}(i.Option01),q=function(e){h(r,e);var t=p(r);function r(e){return f(this,r),t.call(this,v,"copies",1,(function(e){return e>=1}))}return l(r)}(i.IntegerObject),G=function(e){h(r,e);var t=p(r);function r(e){return f(this,r),t.call(this,v,"creator")}return l(r)}(i.StringObject),z=function(e){h(r,e);var t=p(r);function r(e){return f(this,r),t.call(this,v,"currentPage",0,(function(e){return e>=0}))}return l(r)}(i.IntegerObject),W=function(e){h(r,e);var t=p(r);function r(e){var n;return f(this,r),(n=t.call(this,v,"data",!0)).adjustData=null,n.attributes=null,n.incrementalLoad=null,n.outputXSL=null,n.range=null,n.record=null,n.startNode=null,n.uri=null,n.window=null,n.xsl=null,n.excludeNS=new i.XFAObjectArray,n.transform=new i.XFAObjectArray,n}return l(r)}(i.XFAObject),V=function(e){h(r,e);var t=p(r);function r(e){var n;return f(this,r),(n=t.call(this,v,"debug",!0)).uri=null,n}return l(r)}(i.XFAObject),Y=function(e){h(r,e);var t=p(r);function r(e){var n;return f(this,r),(n=t.call(this,v,"defaultTypeface")).writingScript=(0,o.getStringOption)(e.writingScript,["*","Arabic","Cyrillic","EastEuropeanRoman","Greek","Hebrew","Japanese","Korean","Roman","SimplifiedChinese","Thai","TraditionalChinese","Vietnamese"]),n}return l(r)}(i.ContentObject),K=function(e){h(r,e);var t=p(r);function r(e){return f(this,r),t.call(this,v,"destination",["pdf","pcl","ps","webClient","zpl"])}return l(r)}(i.OptionObject),J=function(e){h(r,e);var t=p(r);function r(e){return f(this,r),t.call(this,v,"documentAssembly")}return l(r)}(i.Option01),Z=function(e){h(r,e);var t=p(r);function r(e){var n;return f(this,r),(n=t.call(this,v,"driver",!0)).name=e.name?e.name.trim():"",n.fontInfo=null,n.xdc=null,n}return l(r)}(i.XFAObject),Q=function(e){h(r,e);var t=p(r);function r(e){return f(this,r),t.call(this,v,"duplexOption",["simplex","duplexFlipLongEdge","duplexFlipShortEdge"])}return l(r)}(i.OptionObject),ee=function(e){h(r,e);var t=p(r);function r(e){return f(this,r),t.call(this,v,"dynamicRender",["forbidden","required"])}return l(r)}(i.OptionObject),te=function(e){h(r,e);var t=p(r);function r(e){return f(this,r),t.call(this,v,"embed")}return l(r)}(i.Option01),re=function(e){h(r,e);var t=p(r);function r(e){return f(this,r),t.call(this,v,"encrypt")}return l(r)}(i.Option01),ne=function(e){h(r,e);var t=p(r);function r(e){var n;return f(this,r),(n=t.call(this,v,"encryption",!0)).encrypt=null,n.encryptionLevel=null,n.permissions=null,n}return l(r)}(i.XFAObject),ae=function(e){h(r,e);var t=p(r);function r(e){return f(this,r),t.call(this,v,"encryptionLevel",["40bit","128bit"])}return l(r)}(i.OptionObject),ie=function(e){h(r,e);var t=p(r);function r(e){return f(this,r),t.call(this,v,"enforce")}return l(r)}(i.StringObject),oe=function(e){h(r,e);var t=p(r);function r(e){var n;return f(this,r),(n=t.call(this,v,"equate")).force=(0,o.getInteger)({data:e.force,defaultValue:1,validate:function(e){return 0===e}}),n.from=e.from||"",n.to=e.to||"",n}return l(r)}(i.XFAObject),se=function(e){h(r,e);var t=p(r);function r(e){var n;return f(this,r),(n=t.call(this,v,"equateRange")).from=e.from||"",n.to=e.to||"",n._unicodeRange=e.unicodeRange||"",n}return l(r,[{key:"unicodeRange",get:function(){var e,t=[],r=/U\\+([0-9a-fA-F]+)/,n=function(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(e){if("string"==typeof e)return c(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?c(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,a=function(){};return{s:a,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return o=e.done,e},e:function(e){s=!0,i=e},f:function(){try{o||null==r.return||r.return()}finally{if(s)throw i}}}}(this._unicodeRange.split(",").map((function(e){return e.trim()})).filter((function(e){return!!e})));try{for(n.s();!(e=n.n()).done;){var a=e.value;1===(a=a.split("-",2).map((function(e){var t=e.match(r);return t?parseInt(t[1],16):0}))).length&&a.push(a[0]),t.push(a)}}catch(e){n.e(e)}finally{n.f()}return(0,s.shadow)(this,"unicodeRange",t)}}]),r}(i.XFAObject),ce=function(e){h(r,e);var t=p(r);function r(e){return f(this,r),t.call(this,v,"exclude")}return l(r,[{key:i.$finalize,value:function(){this[i.$content]=this[i.$content].trim().split(/\\s+/).filter((function(e){return e&&["calculate","close","enter","exit","initialize","ready","validate"].includes(e)}))}}]),r}(i.ContentObject),ue=function(e){h(r,e);var t=p(r);function r(e){return f(this,r),t.call(this,v,"excludeNS")}return l(r)}(i.StringObject),le=function(e){h(r,e);var t=p(r);function r(e){return f(this,r),t.call(this,v,"flipLabel",["usePrinterSetting","on","off"])}return l(r)}(i.OptionObject),fe=function(e){h(r,e);var t=p(r);function r(e){var n;return f(this,r),(n=t.call(this,v,"fontInfo",!0)).embed=null,n.map=null,n.subsetBelow=null,n.alwaysEmbed=new i.XFAObjectArray,n.defaultTypeface=new i.XFAObjectArray,n.neverEmbed=new i.XFAObjectArray,n}return l(r)}(i.XFAObject),he=function(e){h(r,e);var t=p(r);function r(e){return f(this,r),t.call(this,v,"formFieldFilling")}return l(r)}(i.Option01),de=function(e){h(r,e);var t=p(r);function r(e){return f(this,r),t.call(this,v,"groupParent")}return l(r)}(i.StringObject),pe=function(e){h(r,e);var t=p(r);function r(e){return f(this,r),t.call(this,v,"ifEmpty",["dataValue","dataGroup","ignore","remove"])}return l(r)}(i.OptionObject),ge=function(e){h(r,e);var t=p(r);function r(e){return f(this,r),t.call(this,v,"includeXDPContent")}return l(r)}(i.StringObject),ve=function(e){h(r,e);var t=p(r);function r(e){return f(this,r),t.call(this,v,"incrementalLoad",["none","forwardOnly"])}return l(r)}(i.OptionObject),ye=function(e){h(r,e);var t=p(r);function r(e){return f(this,r),t.call(this,v,"incrementalMerge")}return l(r)}(i.Option01),me=function(e){h(r,e);var t=p(r);function r(e){return f(this,r),t.call(this,v,"interactive")}return l(r)}(i.Option01),be=function(e){h(r,e);var t=p(r);function r(e){return f(this,r),t.call(this,v,"jog",["usePrinterSetting","none","pageSet"])}return l(r)}(i.OptionObject),we=function(e){h(r,e);var t=p(r);function r(e){var n;return f(this,r),(n=t.call(this,v,"labelPrinter",!0)).name=(0,o.getStringOption)(e.name,["zpl","dpl","ipl","tcpl"]),n.batchOutput=null,n.flipLabel=null,n.fontInfo=null,n.xdc=null,n}return l(r)}(i.XFAObject),ke=function(e){h(r,e);var t=p(r);function r(e){return f(this,r),t.call(this,v,"layout",["paginate","panel"])}return l(r)}(i.OptionObject),Se=function(e){h(r,e);var t=p(r);function r(e){return f(this,r),t.call(this,v,"level",0,(function(e){return e>0}))}return l(r)}(i.IntegerObject),xe=function(e){h(r,e);var t=p(r);function r(e){return f(this,r),t.call(this,v,"linearized")}return l(r)}(i.Option01),Oe=function(e){h(r,e);var t=p(r);function r(e){return f(this,r),t.call(this,v,"locale")}return l(r)}(i.StringObject),Ae=function(e){h(r,e);var t=p(r);function r(e){return f(this,r),t.call(this,v,"localeSet")}return l(r)}(i.StringObject),Ce=function(e){h(r,e);var t=p(r);function r(e){var n;return f(this,r),(n=t.call(this,v,"log",!0)).mode=null,n.threshold=null,n.to=null,n.uri=null,n}return l(r)}(i.XFAObject),Fe=function(e){h(r,e);var t=p(r);function r(e){var n;return f(this,r),(n=t.call(this,v,"map",!0)).equate=new i.XFAObjectArray,n.equateRange=new i.XFAObjectArray,n}return l(r)}(i.XFAObject),Pe=function(e){h(r,e);var t=p(r);function r(e){var n;return f(this,r),(n=t.call(this,v,"mediumInfo",!0)).map=null,n}return l(r)}(i.XFAObject),Te=function(e){h(r,e);var t=p(r);function r(e){var n;return f(this,r),(n=t.call(this,v,"message",!0)).msgId=null,n.severity=null,n}return l(r)}(i.XFAObject),Ie=function(e){h(r,e);var t=p(r);function r(e){var n;return f(this,r),(n=t.call(this,v,"messaging",!0)).message=new i.XFAObjectArray,n}return l(r)}(i.XFAObject),Ee=function(e){h(r,e);var t=p(r);function r(e){return f(this,r),t.call(this,v,"mode",["append","overwrite"])}return l(r)}(i.OptionObject),je=function(e){h(r,e);var t=p(r);function r(e){return f(this,r),t.call(this,v,"modifyAnnots")}return l(r)}(i.Option01),Me=function(e){h(r,e);var t=p(r);function r(e){return f(this,r),t.call(this,v,"msgId",1,(function(e){return e>=1}))}return l(r)}(i.IntegerObject),_e=function(e){h(r,e);var t=p(r);function r(e){return f(this,r),t.call(this,v,"nameAttr")}return l(r)}(i.StringObject),Le=function(e){h(r,e);var t=p(r);function r(e){return f(this,r),t.call(this,v,"neverEmbed")}return l(r)}(i.ContentObject),Re=function(e){h(r,e);var t=p(r);function r(e){return f(this,r),t.call(this,v,"numberOfCopies",null,(function(e){return e>=2&&e<=5}))}return l(r)}(i.IntegerObject),Ne=function(e){h(r,e);var t=p(r);function r(e){var n;return f(this,r),(n=t.call(this,v,"openAction",!0)).destination=null,n}return l(r)}(i.XFAObject),De=function(e){h(r,e);var t=p(r);function r(e){var n;return f(this,r),(n=t.call(this,v,"output",!0)).to=null,n.type=null,n.uri=null,n}return l(r)}(i.XFAObject),Be=function(e){h(r,e);var t=p(r);function r(e){return f(this,r),t.call(this,v,"outputBin")}return l(r)}(i.StringObject),Ue=function(e){h(r,e);var t=p(r);function r(e){var n;return f(this,r),(n=t.call(this,v,"outputXSL",!0)).uri=null,n}return l(r)}(i.XFAObject),$e=function(e){h(r,e);var t=p(r);function r(e){return f(this,r),t.call(this,v,"overprint",["none","both","draw","field"])}return l(r)}(i.OptionObject),Xe=function(e){h(r,e);var t=p(r);function r(e){return f(this,r),t.call(this,v,"packets")}return l(r,[{key:i.$finalize,value:function(){"*"!==this[i.$content]&&(this[i.$content]=this[i.$content].trim().split(/\\s+/).filter((function(e){return["config","datasets","template","xfdf","xslt"].includes(e)})))}}]),r}(i.StringObject),He=function(e){h(r,e);var t=p(r);function r(e){var n;return f(this,r),(n=t.call(this,v,"pageOffset")).x=(0,o.getInteger)({data:e.x,defaultValue:"useXDCSetting",validate:function(e){return!0}}),n.y=(0,o.getInteger)({data:e.y,defaultValue:"useXDCSetting",validate:function(e){return!0}}),n}return l(r)}(i.XFAObject),qe=function(e){h(r,e);var t=p(r);function r(e){return f(this,r),t.call(this,v,"pageRange")}return l(r,[{key:i.$finalize,value:function(){for(var e=this[i.$content].trim().split(/\\s+/).map((function(e){return parseInt(e,10)})),t=[],r=0,n=e.length;r=0&&(this[i.$content]=e)}}]),r}(i.ContentObject),ft=function(e){h(r,e);var t=p(r);function r(e){return f(this,r),t.call(this,v,"relevant")}return l(r,[{key:i.$finalize,value:function(){this[i.$content]=this[i.$content].trim().split(/\\s+/)}}]),r}(i.ContentObject),ht=function(e){h(r,e);var t=p(r);function r(e){return f(this,r),t.call(this,v,"rename")}return l(r,[{key:i.$finalize,value:function(){this[i.$content]=this[i.$content].trim(),(this[i.$content].toLowerCase().startsWith("xml")||new RegExp("[\\\\p{L}_][\\\\p{L}\\\\d._\\\\p{M}-]*","u").test(this[i.$content]))&&(0,s.warn)("XFA - Rename: invalid XFA name")}}]),r}(i.ContentObject),dt=function(e){h(r,e);var t=p(r);function r(e){return f(this,r),t.call(this,v,"renderPolicy",["server","client"])}return l(r)}(i.OptionObject),pt=function(e){h(r,e);var t=p(r);function r(e){return f(this,r),t.call(this,v,"runScripts",["both","client","none","server"])}return l(r)}(i.OptionObject),gt=function(e){h(r,e);var t=p(r);function r(e){var n;return f(this,r),(n=t.call(this,v,"script",!0)).currentPage=null,n.exclude=null,n.runScripts=null,n}return l(r)}(i.XFAObject),vt=function(e){h(r,e);var t=p(r);function r(e){return f(this,r),t.call(this,v,"scriptModel",["XFA","none"])}return l(r)}(i.OptionObject),yt=function(e){h(r,e);var t=p(r);function r(e){return f(this,r),t.call(this,v,"severity",["ignore","error","information","trace","warning"])}return l(r)}(i.OptionObject),mt=function(e){h(r,e);var t=p(r);function r(e){var n;return f(this,r),(n=t.call(this,v,"silentPrint",!0)).addSilentPrint=null,n.printerName=null,n}return l(r)}(i.XFAObject),bt=function(e){h(r,e);var t=p(r);function r(e){var n;return f(this,r),(n=t.call(this,v,"staple")).mode=(0,o.getStringOption)(e.mode,["usePrinterSetting","on","off"]),n}return l(r)}(i.XFAObject),wt=function(e){h(r,e);var t=p(r);function r(e){return f(this,r),t.call(this,v,"startNode")}return l(r)}(i.StringObject),kt=function(e){h(r,e);var t=p(r);function r(e){return f(this,r),t.call(this,v,"startPage",0,(function(e){return!0}))}return l(r)}(i.IntegerObject),St=function(e){h(r,e);var t=p(r);function r(e){return f(this,r),t.call(this,v,"submitFormat",["html","delegate","fdf","xml","pdf"])}return l(r)}(i.OptionObject),xt=function(e){h(r,e);var t=p(r);function r(e){return f(this,r),t.call(this,v,"submitUrl")}return l(r)}(i.StringObject),Ot=function(e){h(r,e);var t=p(r);function r(e){return f(this,r),t.call(this,v,"subsetBelow",100,(function(e){return e>=0&&e<=100}))}return l(r)}(i.IntegerObject),At=function(e){h(r,e);var t=p(r);function r(e){return f(this,r),t.call(this,v,"suppressBanner")}return l(r)}(i.Option01),Ct=function(e){h(r,e);var t=p(r);function r(e){return f(this,r),t.call(this,v,"tagged")}return l(r)}(i.Option01),Ft=function(e){h(r,e);var t=p(r);function r(e){var n;return f(this,r),(n=t.call(this,v,"template",!0)).base=null,n.relevant=null,n.startPage=null,n.uri=null,n.xsl=null,n}return l(r)}(i.XFAObject),Pt=function(e){h(r,e);var t=p(r);function r(e){return f(this,r),t.call(this,v,"threshold",["trace","error","information","warning"])}return l(r)}(i.OptionObject),Tt=function(e){h(r,e);var t=p(r);function r(e){return f(this,r),t.call(this,v,"to",["null","memory","stderr","stdout","system","uri"])}return l(r)}(i.OptionObject),It=function(e){h(r,e);var t=p(r);function r(e){var n;return f(this,r),(n=t.call(this,v,"templateCache")).maxEntries=(0,o.getInteger)({data:e.maxEntries,defaultValue:5,validate:function(e){return e>=0}}),n}return l(r)}(i.XFAObject),Et=function(e){h(r,e);var t=p(r);function r(e){var n;return f(this,r),(n=t.call(this,v,"trace",!0)).area=new i.XFAObjectArray,n}return l(r)}(i.XFAObject),jt=function(e){h(r,e);var t=p(r);function r(e){var n;return f(this,r),(n=t.call(this,v,"transform",!0)).groupParent=null,n.ifEmpty=null,n.nameAttr=null,n.picture=null,n.presence=null,n.rename=null,n.whitespace=null,n}return l(r)}(i.XFAObject),Mt=function(e){h(r,e);var t=p(r);function r(e){return f(this,r),t.call(this,v,"type",["none","ascii85","asciiHex","ccittfax","flate","lzw","runLength","native","xdp","mergedXDP"])}return l(r)}(i.OptionObject),_t=function(e){h(r,e);var t=p(r);function r(e){return f(this,r),t.call(this,v,"uri")}return l(r)}(i.StringObject),Lt=function(e){h(r,e);var t=p(r);function r(e){return f(this,r),t.call(this,v,"validate",["preSubmit","prePrint","preExecute","preSave"])}return l(r)}(i.OptionObject),Rt=function(e){h(r,e);var t=p(r);function r(e){return f(this,r),t.call(this,v,"validateApprovalSignatures")}return l(r,[{key:i.$finalize,value:function(){this[i.$content]=this[i.$content].trim().split(/\\s+/).filter((function(e){return["docReady","postSign"].includes(e)}))}}]),r}(i.ContentObject),Nt=function(e){h(r,e);var t=p(r);function r(e){return f(this,r),t.call(this,v,"validationMessaging",["allMessagesIndividually","allMessagesTogether","firstMessageOnly","noMessages"])}return l(r)}(i.OptionObject),Dt=function(e){h(r,e);var t=p(r);function r(e){return f(this,r),t.call(this,v,"version",["1.7","1.6","1.5","1.4","1.3","1.2"])}return l(r)}(i.OptionObject),Bt=function(e){h(r,e);var t=p(r);function r(e){var n;return f(this,r),(n=t.call(this,v,"VersionControl")).outputBelow=(0,o.getStringOption)(e.outputBelow,["warn","error","update"]),n.sourceAbove=(0,o.getStringOption)(e.sourceAbove,["warn","error"]),n.sourceBelow=(0,o.getStringOption)(e.sourceBelow,["update","maintain"]),n}return l(r)}(i.XFAObject),Ut=function(e){h(r,e);var t=p(r);function r(e){var n;return f(this,r),(n=t.call(this,v,"viewerPreferences",!0)).ADBE_JSConsole=null,n.ADBE_JSDebugger=null,n.addViewerPreferences=null,n.duplexOption=null,n.enforce=null,n.numberOfCopies=null,n.pageRange=null,n.pickTrayByPDFSize=null,n.printScaling=null,n}return l(r)}(i.XFAObject),$t=function(e){h(r,e);var t=p(r);function r(e){var n;return f(this,r),(n=t.call(this,v,"webClient",!0)).name=e.name?e.name.trim():"",n.fontInfo=null,n.xdc=null,n}return l(r)}(i.XFAObject),Xt=function(e){h(r,e);var t=p(r);function r(e){return f(this,r),t.call(this,v,"whitespace",["preserve","ltrim","normalize","rtrim","trim"])}return l(r)}(i.OptionObject),Ht=function(e){h(r,e);var t=p(r);function r(e){return f(this,r),t.call(this,v,"window")}return l(r,[{key:i.$finalize,value:function(){var e=this[i.$content].trim().split(/\\s*,\\s*/,2).map((function(e){return parseInt(e,10)}));e.some((function(e){return isNaN(e)}))?this[i.$content]=[0,0]:(1===e.length&&e.push(e[0]),this[i.$content]=e)}}]),r}(i.ContentObject),qt=function(e){h(r,e);var t=p(r);function r(e){var n;return f(this,r),(n=t.call(this,v,"xdc",!0)).uri=new i.XFAObjectArray,n.xsl=new i.XFAObjectArray,n}return l(r)}(i.XFAObject),Gt=function(e){h(r,e);var t=p(r);function r(e){var n;return f(this,r),(n=t.call(this,v,"xdp",!0)).packets=null,n}return l(r)}(i.XFAObject),zt=function(e){h(r,e);var t=p(r);function r(e){var n;return f(this,r),(n=t.call(this,v,"xsl",!0)).debug=null,n.uri=null,n}return l(r)}(i.XFAObject),Wt=function(e){h(r,e);var t=p(r);function r(e){var n;return f(this,r),(n=t.call(this,v,"zpl",!0)).name=e.name?e.name.trim():"",n.batchOutput=null,n.flipLabel=null,n.fontInfo=null,n.xdc=null,n}return l(r)}(i.XFAObject),Vt=function(){function e(){f(this,e)}return l(e,null,[{key:a.$buildXFAObject,value:function(t,r){if(e.hasOwnProperty(t))return e[t](r)}},{key:"acrobat",value:function(e){return new y(e)}},{key:"acrobat7",value:function(e){return new m(e)}},{key:"ADBE_JSConsole",value:function(e){return new b(e)}},{key:"ADBE_JSDebugger",value:function(e){return new w(e)}},{key:"addSilentPrint",value:function(e){return new k(e)}},{key:"addViewerPreferences",value:function(e){return new S(e)}},{key:"adjustData",value:function(e){return new x(e)}},{key:"adobeExtensionLevel",value:function(e){return new O(e)}},{key:"agent",value:function(e){return new A(e)}},{key:"alwaysEmbed",value:function(e){return new C(e)}},{key:"amd",value:function(e){return new F(e)}},{key:"area",value:function(e){return new P(e)}},{key:"attributes",value:function(e){return new T(e)}},{key:"autoSave",value:function(e){return new I(e)}},{key:"base",value:function(e){return new E(e)}},{key:"batchOutput",value:function(e){return new j(e)}},{key:"behaviorOverride",value:function(e){return new M(e)}},{key:"cache",value:function(e){return new _(e)}},{key:"change",value:function(e){return new L(e)}},{key:"common",value:function(e){return new R(e)}},{key:"compress",value:function(e){return new N(e)}},{key:"compressLogicalStructure",value:function(e){return new D(e)}},{key:"compressObjectStream",value:function(e){return new B(e)}},{key:"compression",value:function(e){return new U(e)}},{key:"config",value:function(e){return new $(e)}},{key:"conformance",value:function(e){return new X(e)}},{key:"contentCopy",value:function(e){return new H(e)}},{key:"copies",value:function(e){return new q(e)}},{key:"creator",value:function(e){return new G(e)}},{key:"currentPage",value:function(e){return new z(e)}},{key:"data",value:function(e){return new W(e)}},{key:"debug",value:function(e){return new V(e)}},{key:"defaultTypeface",value:function(e){return new Y(e)}},{key:"destination",value:function(e){return new K(e)}},{key:"documentAssembly",value:function(e){return new J(e)}},{key:"driver",value:function(e){return new Z(e)}},{key:"duplexOption",value:function(e){return new Q(e)}},{key:"dynamicRender",value:function(e){return new ee(e)}},{key:"embed",value:function(e){return new te(e)}},{key:"encrypt",value:function(e){return new re(e)}},{key:"encryption",value:function(e){return new ne(e)}},{key:"encryptionLevel",value:function(e){return new ae(e)}},{key:"enforce",value:function(e){return new ie(e)}},{key:"equate",value:function(e){return new oe(e)}},{key:"equateRange",value:function(e){return new se(e)}},{key:"exclude",value:function(e){return new ce(e)}},{key:"excludeNS",value:function(e){return new ue(e)}},{key:"flipLabel",value:function(e){return new le(e)}},{key:"fontInfo",value:function(e){return new fe(e)}},{key:"formFieldFilling",value:function(e){return new he(e)}},{key:"groupParent",value:function(e){return new de(e)}},{key:"ifEmpty",value:function(e){return new pe(e)}},{key:"includeXDPContent",value:function(e){return new ge(e)}},{key:"incrementalLoad",value:function(e){return new ve(e)}},{key:"incrementalMerge",value:function(e){return new ye(e)}},{key:"interactive",value:function(e){return new me(e)}},{key:"jog",value:function(e){return new be(e)}},{key:"labelPrinter",value:function(e){return new we(e)}},{key:"layout",value:function(e){return new ke(e)}},{key:"level",value:function(e){return new Se(e)}},{key:"linearized",value:function(e){return new xe(e)}},{key:"locale",value:function(e){return new Oe(e)}},{key:"localeSet",value:function(e){return new Ae(e)}},{key:"log",value:function(e){return new Ce(e)}},{key:"map",value:function(e){return new Fe(e)}},{key:"mediumInfo",value:function(e){return new Pe(e)}},{key:"message",value:function(e){return new Te(e)}},{key:"messaging",value:function(e){return new Ie(e)}},{key:"mode",value:function(e){return new Ee(e)}},{key:"modifyAnnots",value:function(e){return new je(e)}},{key:"msgId",value:function(e){return new Me(e)}},{key:"nameAttr",value:function(e){return new _e(e)}},{key:"neverEmbed",value:function(e){return new Le(e)}},{key:"numberOfCopies",value:function(e){return new Re(e)}},{key:"openAction",value:function(e){return new Ne(e)}},{key:"output",value:function(e){return new De(e)}},{key:"outputBin",value:function(e){return new Be(e)}},{key:"outputXSL",value:function(e){return new Ue(e)}},{key:"overprint",value:function(e){return new $e(e)}},{key:"packets",value:function(e){return new Xe(e)}},{key:"pageOffset",value:function(e){return new He(e)}},{key:"pageRange",value:function(e){return new qe(e)}},{key:"pagination",value:function(e){return new Ge(e)}},{key:"paginationOverride",value:function(e){return new ze(e)}},{key:"part",value:function(e){return new We(e)}},{key:"pcl",value:function(e){return new Ve(e)}},{key:"pdf",value:function(e){return new Ye(e)}},{key:"pdfa",value:function(e){return new Ke(e)}},{key:"permissions",value:function(e){return new Je(e)}},{key:"pickTrayByPDFSize",value:function(e){return new Ze(e)}},{key:"picture",value:function(e){return new Qe(e)}},{key:"plaintextMetadata",value:function(e){return new et(e)}},{key:"presence",value:function(e){return new tt(e)}},{key:"present",value:function(e){return new rt(e)}},{key:"print",value:function(e){return new nt(e)}},{key:"printHighQuality",value:function(e){return new at(e)}},{key:"printScaling",value:function(e){return new it(e)}},{key:"printerName",value:function(e){return new ot(e)}},{key:"producer",value:function(e){return new st(e)}},{key:"ps",value:function(e){return new ct(e)}},{key:"range",value:function(e){return new ut(e)}},{key:"record",value:function(e){return new lt(e)}},{key:"relevant",value:function(e){return new ft(e)}},{key:"rename",value:function(e){return new ht(e)}},{key:"renderPolicy",value:function(e){return new dt(e)}},{key:"runScripts",value:function(e){return new pt(e)}},{key:"script",value:function(e){return new gt(e)}},{key:"scriptModel",value:function(e){return new vt(e)}},{key:"severity",value:function(e){return new yt(e)}},{key:"silentPrint",value:function(e){return new mt(e)}},{key:"staple",value:function(e){return new bt(e)}},{key:"startNode",value:function(e){return new wt(e)}},{key:"startPage",value:function(e){return new kt(e)}},{key:"submitFormat",value:function(e){return new St(e)}},{key:"submitUrl",value:function(e){return new xt(e)}},{key:"subsetBelow",value:function(e){return new Ot(e)}},{key:"suppressBanner",value:function(e){return new At(e)}},{key:"tagged",value:function(e){return new Ct(e)}},{key:"template",value:function(e){return new Ft(e)}},{key:"templateCache",value:function(e){return new It(e)}},{key:"threshold",value:function(e){return new Pt(e)}},{key:"to",value:function(e){return new Tt(e)}},{key:"trace",value:function(e){return new Et(e)}},{key:"transform",value:function(e){return new jt(e)}},{key:"type",value:function(e){return new Mt(e)}},{key:"uri",value:function(e){return new _t(e)}},{key:"validate",value:function(e){return new Lt(e)}},{key:"validateApprovalSignatures",value:function(e){return new Rt(e)}},{key:"validationMessaging",value:function(e){return new Nt(e)}},{key:"version",value:function(e){return new Dt(e)}},{key:"versionControl",value:function(e){return new Bt(e)}},{key:"viewerPreferences",value:function(e){return new Ut(e)}},{key:"webClient",value:function(e){return new $t(e)}},{key:"whitespace",value:function(e){return new Xt(e)}},{key:"window",value:function(e){return new Ht(e)}},{key:"xdc",value:function(e){return new qt(e)}},{key:"xdp",value:function(e){return new Gt(e)}},{key:"xsl",value:function(e){return new zt(e)}},{key:"zpl",value:function(e){return new Wt(e)}}]),e}();t.ConfigNamespace=Vt},(e,t,r)=>{function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.ConnectionSetNamespace=void 0;var a=r(208),i=r(206);function o(e,t){for(var r=0;r{function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.DatasetsNamespace=void 0;var a=r(206),i=r(208);function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){for(var r=0;r{function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.LocaleSetNamespace=void 0;var a=r(208),i=r(206),o=r(207);function s(e,t){for(var r=0;r{function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.SignatureNamespace=void 0;var a=r(208),i=r(206);function o(e,t){for(var r=0;r{function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.StylesheetNamespace=void 0;var a=r(208),i=r(206);function o(e,t){for(var r=0;r{function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.XdpNamespace=void 0;var a=r(208),i=r(206);function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){for(var r=0;r{function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.XhtmlNamespace=void 0;var a=r(206),i=r(208),o=r(213),s=r(207);function c(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function u(e,t){for(var r=0;r=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return o=e.done,e},e:function(e){s=!0,i=e},f:function(){try{o||null==r.return||r.return()}finally{if(s)throw i}}}}function m(e,t){if(e){if("string"==typeof e)return b(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?b(e,t):void 0}}function b(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r1&&void 0!==arguments[1]&&arguments[1]?this[k]=!0:(e=e.replace(A,""),this.style.includes("xfa-spacerun:yes")||(e=e.replace(O," "))),e&&(this[a.$content]+=e)}},{key:a.$pushGlyphs,value:function(e){var t,r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=Object.create(null),i={top:NaN,bottom:NaN,left:NaN,right:NaN},o=null,c=y(this.style.split(";").map((function(e){return e.split(":",2)})));try{for(c.s();!(t=c.n()).done;){var u=v(t.value,2),l=u[0],f=u[1];switch(l){case"font-family":n.typeface=(0,s.stripQuotes)(f);break;case"font-size":n.size=(0,s.getMeasurement)(f);break;case"font-weight":n.weight=f;break;case"font-style":n.posture=f;break;case"letter-spacing":n.letterSpacing=(0,s.getMeasurement)(f);break;case"margin":var h=f.split(/ \\t/).map((function(e){return(0,s.getMeasurement)(e)}));switch(h.length){case 1:i.top=i.bottom=i.left=i.right=h[0];break;case 2:i.top=i.bottom=h[0],i.left=i.right=h[1];break;case 3:i.top=h[0],i.bottom=h[2],i.left=i.right=h[1];break;case 4:i.top=h[0],i.left=h[1],i.bottom=h[2],i.right=h[3]}break;case"margin-top":i.top=(0,s.getMeasurement)(f);break;case"margin-bottom":i.bottom=(0,s.getMeasurement)(f);break;case"margin-left":i.left=(0,s.getMeasurement)(f);break;case"margin-right":i.right=(0,s.getMeasurement)(f);break;case"line-height":o=(0,s.getMeasurement)(f)}}}catch(e){c.e(e)}finally{c.f()}if(e.pushData(n,i,o),this[a.$content])e.addString(this[a.$content]);else{var d,p=y(this[a.$getChildren]());try{for(p.s();!(d=p.n()).done;){var g=d.value;"#text"!==g[a.$nodeName]?g[a.$pushGlyphs](e):e.addString(g[a.$content])}}catch(e){p.e(e)}finally{p.f()}}r&&e.popFont()}},{key:a.$toHTML,value:function(e){var t,r=[];return this[a.$extra]={children:r},this[a.$childrenToHTML]({}),0!==r.length||this[a.$content]?(t=this[k]?this[a.$content]?this[a.$content].replace(C,"\\n"):void 0:this[a.$content]||void 0,s.HTMLResult.success({name:this[a.$nodeName],attributes:{href:this.href,style:F(this.style,this,this[k])},children:r,value:t})):s.HTMLResult.EMPTY}}]),r}(a.XmlObject),I=function(e){h(r,e);var t=p(r);function r(e){var n;return c(this,r),(n=t.call(this,e,"a")).href=(0,o.fixURL)(e.href)||"",n}return l(r)}(T),E=function(e){h(r,e);var t=p(r);function r(e){return c(this,r),t.call(this,e,"b")}return l(r,[{key:a.$pushGlyphs,value:function(e){e.pushFont({weight:"bold"}),f(g(r.prototype),a.$pushGlyphs,this).call(this,e),e.popFont()}}]),r}(T),j=function(e){h(r,e);var t=p(r);function r(e){return c(this,r),t.call(this,e,"body")}return l(r,[{key:a.$toHTML,value:function(e){var t=f(g(r.prototype),a.$toHTML,this).call(this,e),n=t.html;return n?(n.name="div",n.attributes.class=["xfaRich"],t):s.HTMLResult.EMPTY}}]),r}(T),M=function(e){h(r,e);var t=p(r);function r(e){return c(this,r),t.call(this,e,"br")}return l(r,[{key:a.$text,value:function(){return"\\n"}},{key:a.$pushGlyphs,value:function(e){e.addString("\\n")}},{key:a.$toHTML,value:function(e){return s.HTMLResult.success({name:"br"})}}]),r}(T),_=function(e){h(r,e);var t=p(r);function r(e){return c(this,r),t.call(this,e,"html")}return l(r,[{key:a.$toHTML,value:function(e){var t=[];if(this[a.$extra]={children:t},this[a.$childrenToHTML]({}),0===t.length)return s.HTMLResult.success({name:"div",attributes:{class:["xfaRich"],style:{}},value:this[a.$content]||""});if(1===t.length){var r=t[0];if(r.attributes&&r.attributes.class.includes("xfaRich"))return s.HTMLResult.success(r)}return s.HTMLResult.success({name:"div",attributes:{class:["xfaRich"],style:{}},children:t})}}]),r}(T),L=function(e){h(r,e);var t=p(r);function r(e){return c(this,r),t.call(this,e,"i")}return l(r,[{key:a.$pushGlyphs,value:function(e){e.pushFont({posture:"italic"}),f(g(r.prototype),a.$pushGlyphs,this).call(this,e),e.popFont()}}]),r}(T),R=function(e){h(r,e);var t=p(r);function r(e){return c(this,r),t.call(this,e,"li")}return l(r)}(T),N=function(e){h(r,e);var t=p(r);function r(e){return c(this,r),t.call(this,e,"ol")}return l(r)}(T),D=function(e){h(r,e);var t=p(r);function r(e){return c(this,r),t.call(this,e,"p")}return l(r,[{key:a.$pushGlyphs,value:function(e){f(g(r.prototype),a.$pushGlyphs,this).call(this,e,!1),e.addString("\\n"),e.addPara(),e.popFont()}},{key:a.$text,value:function(){return this[a.$getParent]()[a.$getChildren]().at(-1)===this?f(g(r.prototype),a.$text,this).call(this):f(g(r.prototype),a.$text,this).call(this)+"\\n"}}]),r}(T),B=function(e){h(r,e);var t=p(r);function r(e){return c(this,r),t.call(this,e,"span")}return l(r)}(T),U=function(e){h(r,e);var t=p(r);function r(e){return c(this,r),t.call(this,e,"sub")}return l(r)}(T),$=function(e){h(r,e);var t=p(r);function r(e){return c(this,r),t.call(this,e,"sup")}return l(r)}(T),X=function(e){h(r,e);var t=p(r);function r(e){return c(this,r),t.call(this,e,"ul")}return l(r)}(T),H=function(){function e(){c(this,e)}return l(e,null,[{key:i.$buildXFAObject,value:function(t,r){if(e.hasOwnProperty(t))return e[t](r)}},{key:"a",value:function(e){return new I(e)}},{key:"b",value:function(e){return new E(e)}},{key:"body",value:function(e){return new j(e)}},{key:"br",value:function(e){return new M(e)}},{key:"html",value:function(e){return new _(e)}},{key:"i",value:function(e){return new L(e)}},{key:"li",value:function(e){return new R(e)}},{key:"ol",value:function(e){return new N(e)}},{key:"p",value:function(e){return new D(e)}},{key:"span",value:function(e){return new B(e)}},{key:"sub",value:function(e){return new U(e)}},{key:"sup",value:function(e){return new $(e)}},{key:"ul",value:function(e){return new X(e)}}]),e}();t.XhtmlNamespace=H},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.UnknownNamespace=void 0;var n=r(208),a=r(206);function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}function o(e,t){for(var r=0;r{function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.DatasetReader=void 0;var a=r(2),i=r(135),o=r(195);function s(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function c(e,t){for(var r=0;r{Object.defineProperty(t,"__esModule",{value:!0}),t.XRef=void 0;var n=r(2),a=r(134),i=r(135),o=r(146),s=r(136),c=r(196);function u(e){return u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},u(e)}function l(){l=function(){return e};var e={},t=Object.prototype,r=t.hasOwnProperty,n=Object.defineProperty||function(e,t,r){e[t]=r.value},a="function"==typeof Symbol?Symbol:{},i=a.iterator||"@@iterator",o=a.asyncIterator||"@@asyncIterator",s=a.toStringTag||"@@toStringTag";function c(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{c({},"")}catch(e){c=function(e,t,r){return e[t]=r}}function f(e,t,r,a){var i=t&&t.prototype instanceof p?t:p,o=Object.create(i.prototype),s=new F(a||[]);return n(o,"_invoke",{value:x(e,r,s)}),o}function h(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}e.wrap=f;var d={};function p(){}function g(){}function v(){}var y={};c(y,i,(function(){return this}));var m=Object.getPrototypeOf,b=m&&m(m(P([])));b&&b!==t&&r.call(b,i)&&(y=b);var w=v.prototype=p.prototype=Object.create(y);function k(e){["next","throw","return"].forEach((function(t){c(e,t,(function(e){return this._invoke(t,e)}))}))}function S(e,t){function a(n,i,o,s){var c=h(e[n],e,i);if("throw"!==c.type){var l=c.arg,f=l.value;return f&&"object"==u(f)&&r.call(f,"__await")?t.resolve(f.__await).then((function(e){a("next",e,o,s)}),(function(e){a("throw",e,o,s)})):t.resolve(f).then((function(e){l.value=e,o(l)}),(function(e){return a("throw",e,o,s)}))}s(c.arg)}var i;n(this,"_invoke",{value:function(e,r){function n(){return new t((function(t,n){a(e,r,t,n)}))}return i=i?i.then(n,n):n()}})}function x(e,t,r){var n="suspendedStart";return function(a,i){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===a)throw i;return{value:void 0,done:!0}}for(r.method=a,r.arg=i;;){var o=r.delegate;if(o){var s=O(o,r);if(s){if(s===d)continue;return s}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var c=h(e,t,r);if("normal"===c.type){if(n=r.done?"completed":"suspendedYield",c.arg===d)continue;return{value:c.arg,done:r.done}}"throw"===c.type&&(n="completed",r.method="throw",r.arg=c.arg)}}}function O(e,t){var r=t.method,n=e.iterator[r];if(void 0===n)return t.delegate=null,"throw"===r&&e.iterator.return&&(t.method="return",t.arg=void 0,O(e,t),"throw"===t.method)||"return"!==r&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+r+"' method")),d;var a=h(n,e.iterator,t.arg);if("throw"===a.type)return t.method="throw",t.arg=a.arg,t.delegate=null,d;var i=a.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,d):i:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,d)}function A(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function C(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function F(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(A,this),this.reset(!0)}function P(e){if(e){var t=e[i];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var n=-1,a=function t(){for(;++n=0;--a){var i=this.tryEntries[a],o=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var s=r.call(i,"catchLoc"),c=r.call(i,"finallyLoc");if(s&&c){if(this.prev=0;--n){var a=this.tryEntries[n];if(a.tryLoc<=this.prev&&r.call(a,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),C(r),d}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var a=n.arg;C(r)}return a}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:P(e),resultName:t,nextLoc:r},"next"===this.method&&(this.arg=void 0),d}},e}function f(e,t,r,n,a,i,o){try{var s=e[i](o),c=s.value}catch(e){return void r(e)}s.done?t(c):Promise.resolve(c).then(n,a)}function h(e){return function(){var t=this,r=arguments;return new Promise((function(n,a){var i=e.apply(t,r);function o(e){f(i,n,a,o,s,"next",e)}function s(e){f(i,n,a,o,s,"throw",e)}o(void 0)}))}}function d(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,o,s=[],c=!0,u=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){u=!0,a=e}finally{try{if(!c&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(u)throw a}}return s}}(e,t)||function(e,t){if(e){if("string"==typeof e)return p(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?p(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function p(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r0&&void 0!==arguments[0]&&arguments[0];o?((0,n.warn)("Indexing all PDF objects"),e=this.indexObjects()):e=this.readXRef(),e.assignXref(this),this.trailer=e;try{t=e.get("Encrypt")}catch(e){if(e instanceof i.MissingDataException)throw e;(0,n.warn)('XRef.parse - Invalid "Encrypt" reference: "'.concat(e,'".'))}if(t instanceof a.Dict){var s=e.get("ID"),u=s&&s.length?s[0]:"";t.suppressEncryption=!0,this.encrypt=new c.CipherTransformFactory(t,u,this.pdfManager.password)}try{r=e.get("Root")}catch(e){if(e instanceof i.MissingDataException)throw e;(0,n.warn)('XRef.parse - Invalid "Root" reference: "'.concat(e,'".'))}if(r instanceof a.Dict)try{if(r.get("Pages")instanceof a.Dict)return void(this.root=r)}catch(e){if(e instanceof i.MissingDataException)throw e;(0,n.warn)('XRef.parse - Invalid "Pages" reference: "'.concat(e,'".'))}if(!o)throw new i.XRefParseException;throw new n.InvalidPDFException("Invalid Root reference.")}},{key:"processXRefTable",value:function(e){"tableState"in this||(this.tableState={entryNum:0,streamPos:e.lexer.stream.pos,parserBuf1:e.buf1,parserBuf2:e.buf2});var t=this.readXRefTable(e);if(!(0,a.isCmd)(t,"trailer"))throw new n.FormatError("Invalid XRef table: could not find trailer dictionary");var r=e.getObj();if(r instanceof a.Dict||!r.dict||(r=r.dict),!(r instanceof a.Dict))throw new n.FormatError("Invalid XRef table: could not parse trailer dictionary");return delete this.tableState,r}},{key:"readXRefTable",value:function(e){var t,r=e.lexer.stream,i=this.tableState;for(r.pos=i.streamPos,e.buf1=i.parserBuf1,e.buf2=i.parserBuf2;;){if(!("firstEntryNum"in i)||!("entryCount"in i)){if((0,a.isCmd)(t=e.getObj(),"trailer"))break;i.firstEntryNum=t,i.entryCount=e.getObj()}var o=i.firstEntryNum,s=i.entryCount;if(!Number.isInteger(o)||!Number.isInteger(s))throw new n.FormatError("Invalid XRef table: wrong types in subsection header");for(var c=i.entryNum;c0;){var c=d(s,2),u=c[0],l=c[1];if(!Number.isInteger(u)||!Number.isInteger(l))throw new n.FormatError("Invalid XRef range fields: ".concat(u,", ").concat(l));if(!Number.isInteger(a)||!Number.isInteger(i)||!Number.isInteger(o))throw new n.FormatError("Invalid XRef entry fields length: ".concat(u,", ").concat(l));for(var f=t.entryNum;f=e.length);)r+=String.fromCharCode(n),n=e[t];return r}function t(e,t,r){for(var n=r.length,a=e.length,i=0;t=n)break;t++,i++}return i}var r=/\\b(endobj|\\d+\\s+\\d+\\s+obj|xref|trailer)\\b/g,s=/\\b(startxref|\\d+\\s+\\d+\\s+obj)\\b/g,c=/^(\\d+)\\s+(\\d+)\\s+obj\\b/,u=new Uint8Array([116,114,97,105,108,101,114]),l=new Uint8Array([115,116,97,114,116,120,114,101,102]),f=new Uint8Array([47,88,82,101,102]);this.entries.length=0,this._cacheMap.clear();var h=this.stream;h.pos=0;for(var d,p,g=h.getBytes(),v=(0,n.bytesToString)(g),y=g.length,m=h.start,b=[],w=[];m=y)break;k=g[m]}while(10!==k&&13!==k);else++m}for(var L=0,R=w;L0&&void 0!==arguments[0]&&arguments[0],t=this.stream,r=new Set;this.startXRefQueue.length;){try{var c=this.startXRefQueue[0];if(r.has(c)){(0,n.warn)("readXRef - skipping XRef table since it was already parsed."),this.startXRefQueue.shift();continue}r.add(c),t.pos=c+t.start;var u=new o.Parser({lexer:new o.Lexer(t),xref:this,allowStreams:!0}),l=u.getObj(),f=void 0;if((0,a.isCmd)(l,"xref")){if(f=this.processXRefTable(u),this.topDict||(this.topDict=f),l=f.get("XRefStm"),Number.isInteger(l)){var h=l;h in this.xrefstms||(this.xrefstms[h]=1,this.startXRefQueue.push(h))}}else{if(!Number.isInteger(l))throw new n.FormatError("Invalid XRef stream header");if(!(Number.isInteger(u.getObj())&&(0,a.isCmd)(u.getObj(),"obj")&&(l=u.getObj())instanceof s.BaseStream))throw new n.FormatError("Invalid XRef stream");if(f=this.processXRefStream(l),this.topDict||(this.topDict=f),!f)throw new n.FormatError("Failed to read XRef stream")}l=f.get("Prev"),Number.isInteger(l)?this.startXRefQueue.push(l):l instanceof a.Ref&&this.startXRefQueue.push(l.num)}catch(e){if(e instanceof i.MissingDataException)throw e;(0,n.info)("(while reading XRef): "+e)}this.startXRefQueue.shift()}if(this.topDict)return this.topDict;if(!e)throw new i.XRefParseException}},{key:"getEntry",value:function(e){var t=this.entries[e];return t&&!t.free&&t.offset?t:null}},{key:"fetchIfRef",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return e instanceof a.Ref?this.fetch(e,t):e}},{key:"fetch",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!(e instanceof a.Ref))throw new Error("ref object is not a reference");var r=e.num,i=this._cacheMap.get(r);if(void 0!==i)return i instanceof a.Dict&&!i.objId&&(i.objId=e.toString()),i;var o=this.getEntry(r);if(null===o)return this._cacheMap.set(r,o),o;if(this._pendingRefs.has(e))return this._pendingRefs.remove(e),(0,n.warn)("Ignoring circular reference: ".concat(e,".")),a.CIRCULAR_REF;this._pendingRefs.put(e);try{o=o.uncompressed?this.fetchUncompressed(e,o,t):this.fetchCompressed(e,o,t),this._pendingRefs.remove(e)}catch(t){throw this._pendingRefs.remove(e),t}return o instanceof a.Dict?o.objId=e.toString():o instanceof s.BaseStream&&(o.dict.objId=e.toString()),o}},{key:"fetchUncompressed",value:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],c=e.gen,u=e.num;if(t.gen!==c){var l="Inconsistent generation in XRef: ".concat(e);if(this._generationFallback&&t.gen{Object.defineProperty(t,"__esModule",{value:!0}),t.MessageHandler=void 0;var n=r(2);function a(){a=function(){return e};var e={},t=Object.prototype,r=t.hasOwnProperty,n=Object.defineProperty||function(e,t,r){e[t]=r.value},i="function"==typeof Symbol?Symbol:{},o=i.iterator||"@@iterator",c=i.asyncIterator||"@@asyncIterator",u=i.toStringTag||"@@toStringTag";function l(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{l({},"")}catch(e){l=function(e,t,r){return e[t]=r}}function f(e,t,r,a){var i=t&&t.prototype instanceof p?t:p,o=Object.create(i.prototype),s=new F(a||[]);return n(o,"_invoke",{value:x(e,r,s)}),o}function h(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}e.wrap=f;var d={};function p(){}function g(){}function v(){}var y={};l(y,o,(function(){return this}));var m=Object.getPrototypeOf,b=m&&m(m(P([])));b&&b!==t&&r.call(b,o)&&(y=b);var w=v.prototype=p.prototype=Object.create(y);function k(e){["next","throw","return"].forEach((function(t){l(e,t,(function(e){return this._invoke(t,e)}))}))}function S(e,t){function a(n,i,o,c){var u=h(e[n],e,i);if("throw"!==u.type){var l=u.arg,f=l.value;return f&&"object"==s(f)&&r.call(f,"__await")?t.resolve(f.__await).then((function(e){a("next",e,o,c)}),(function(e){a("throw",e,o,c)})):t.resolve(f).then((function(e){l.value=e,o(l)}),(function(e){return a("throw",e,o,c)}))}c(u.arg)}var i;n(this,"_invoke",{value:function(e,r){function n(){return new t((function(t,n){a(e,r,t,n)}))}return i=i?i.then(n,n):n()}})}function x(e,t,r){var n="suspendedStart";return function(a,i){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===a)throw i;return{value:void 0,done:!0}}for(r.method=a,r.arg=i;;){var o=r.delegate;if(o){var s=O(o,r);if(s){if(s===d)continue;return s}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var c=h(e,t,r);if("normal"===c.type){if(n=r.done?"completed":"suspendedYield",c.arg===d)continue;return{value:c.arg,done:r.done}}"throw"===c.type&&(n="completed",r.method="throw",r.arg=c.arg)}}}function O(e,t){var r=t.method,n=e.iterator[r];if(void 0===n)return t.delegate=null,"throw"===r&&e.iterator.return&&(t.method="return",t.arg=void 0,O(e,t),"throw"===t.method)||"return"!==r&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+r+"' method")),d;var a=h(n,e.iterator,t.arg);if("throw"===a.type)return t.method="throw",t.arg=a.arg,t.delegate=null,d;var i=a.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,d):i:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,d)}function A(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function C(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function F(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(A,this),this.reset(!0)}function P(e){if(e){var t=e[o];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var n=-1,a=function t(){for(;++n=0;--a){var i=this.tryEntries[a],o=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var s=r.call(i,"catchLoc"),c=r.call(i,"finallyLoc");if(s&&c){if(this.prev=0;--n){var a=this.tryEntries[n];if(a.tryLoc<=this.prev&&r.call(a,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),C(r),d}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var a=n.arg;C(r)}return a}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:P(e),resultName:t,nextLoc:r},"next"===this.method&&(this.arg=void 0),d}},e}function i(e,t,r,n,a,i,o){try{var s=e[i](o),c=s.value}catch(e){return void r(e)}s.done?t(c):Promise.resolve(c).then(n,a)}function o(e,t){for(var r=0;r1&&void 0!==arguments[1]?arguments[1]:1,s=arguments.length>2?arguments[2]:void 0;if(!this.isCancelled){var c=this.desiredSize;this.desiredSize-=o,c>0&&this.desiredSize<=0&&(this.sinkCapability=(0,n.createPromiseCapability)(),this.ready=this.sinkCapability.promise),i.postMessage({sourceName:r,targetName:a,stream:4,streamId:t,chunk:e},s)}},close:function(){this.isCancelled||(this.isCancelled=!0,i.postMessage({sourceName:r,targetName:a,stream:3,streamId:t}),delete o.streamSinks[t])},error:function(e){(0,n.assert)(e instanceof Error,"error must have a valid reason"),this.isCancelled||(this.isCancelled=!0,i.postMessage({sourceName:r,targetName:a,stream:5,streamId:t,reason:c(e)}))},sinkCapability:(0,n.createPromiseCapability)(),onPull:null,onCancel:null,isCancelled:!1,desiredSize:e.desiredSize,ready:null};u.sinkCapability.resolve(),u.ready=u.sinkCapability.promise,this.streamSinks[t]=u,new Promise((function(t){t(s(e.data,u))})).then((function(){i.postMessage({sourceName:r,targetName:a,stream:8,streamId:t,success:!0})}),(function(e){i.postMessage({sourceName:r,targetName:a,stream:8,streamId:t,reason:c(e)})}))}},{key:"_processStreamMessage",value:function(e){var t=e.streamId,r=this.sourceName,a=e.sourceName,i=this.comObj,o=this.streamControllers[t],s=this.streamSinks[t];switch(e.stream){case 8:e.success?o.startCall.resolve():o.startCall.reject(c(e.reason));break;case 7:e.success?o.pullCall.resolve():o.pullCall.reject(c(e.reason));break;case 6:if(!s){i.postMessage({sourceName:r,targetName:a,stream:7,streamId:t,success:!0});break}s.desiredSize<=0&&e.desiredSize>0&&s.sinkCapability.resolve(),s.desiredSize=e.desiredSize,new Promise((function(e){e(s.onPull&&s.onPull())})).then((function(){i.postMessage({sourceName:r,targetName:a,stream:7,streamId:t,success:!0})}),(function(e){i.postMessage({sourceName:r,targetName:a,stream:7,streamId:t,reason:c(e)})}));break;case 4:if((0,n.assert)(o,"enqueue should have stream controller"),o.isClosed)break;o.controller.enqueue(e.chunk);break;case 3:if((0,n.assert)(o,"close should have stream controller"),o.isClosed)break;o.isClosed=!0,o.controller.close(),this._deleteStreamController(o,t);break;case 5:(0,n.assert)(o,"error should have stream controller"),o.controller.error(c(e.reason)),this._deleteStreamController(o,t);break;case 2:e.success?o.cancelCall.resolve():o.cancelCall.reject(c(e.reason)),this._deleteStreamController(o,t);break;case 1:if(!s)break;new Promise((function(t){t(s.onCancel&&s.onCancel(c(e.reason)))})).then((function(){i.postMessage({sourceName:r,targetName:a,stream:2,streamId:t,success:!0})}),(function(e){i.postMessage({sourceName:r,targetName:a,stream:2,streamId:t,reason:c(e)})})),s.sinkCapability.reject(c(e.reason)),s.isCancelled=!0,delete this.streamSinks[t];break;default:throw new Error("Unexpected stream case")}}},{key:"_deleteStreamController",value:(s=a().mark((function e(t,r){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Promise.allSettled([t.startCall&&t.startCall.promise,t.pullCall&&t.pullCall.promise,t.cancelCall&&t.cancelCall.promise]);case 2:delete this.streamControllers[r];case 3:case"end":return e.stop()}}),e,this)})),u=function(){var e=this,t=arguments;return new Promise((function(r,n){var a=s.apply(e,t);function o(e){i(a,r,n,o,c,"next",e)}function c(e){i(a,r,n,o,c,"throw",e)}o(void 0)}))},function(e,t){return u.apply(this,arguments)})},{key:"destroy",value:function(){this.comObj.removeEventListener("message",this._onComObjOnMessage)}}],r&&o(t.prototype,r),Object.defineProperty(t,"prototype",{writable:!1}),e}();t.MessageHandler=u},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.PDFWorkerStream=void 0;var n=r(2);function a(){a=function(){return e};var e={},t=Object.prototype,r=t.hasOwnProperty,n=Object.defineProperty||function(e,t,r){e[t]=r.value},i="function"==typeof Symbol?Symbol:{},o=i.iterator||"@@iterator",c=i.asyncIterator||"@@asyncIterator",u=i.toStringTag||"@@toStringTag";function l(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{l({},"")}catch(e){l=function(e,t,r){return e[t]=r}}function f(e,t,r,a){var i=t&&t.prototype instanceof p?t:p,o=Object.create(i.prototype),s=new F(a||[]);return n(o,"_invoke",{value:x(e,r,s)}),o}function h(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}e.wrap=f;var d={};function p(){}function g(){}function v(){}var y={};l(y,o,(function(){return this}));var m=Object.getPrototypeOf,b=m&&m(m(P([])));b&&b!==t&&r.call(b,o)&&(y=b);var w=v.prototype=p.prototype=Object.create(y);function k(e){["next","throw","return"].forEach((function(t){l(e,t,(function(e){return this._invoke(t,e)}))}))}function S(e,t){function a(n,i,o,c){var u=h(e[n],e,i);if("throw"!==u.type){var l=u.arg,f=l.value;return f&&"object"==s(f)&&r.call(f,"__await")?t.resolve(f.__await).then((function(e){a("next",e,o,c)}),(function(e){a("throw",e,o,c)})):t.resolve(f).then((function(e){l.value=e,o(l)}),(function(e){return a("throw",e,o,c)}))}c(u.arg)}var i;n(this,"_invoke",{value:function(e,r){function n(){return new t((function(t,n){a(e,r,t,n)}))}return i=i?i.then(n,n):n()}})}function x(e,t,r){var n="suspendedStart";return function(a,i){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===a)throw i;return{value:void 0,done:!0}}for(r.method=a,r.arg=i;;){var o=r.delegate;if(o){var s=O(o,r);if(s){if(s===d)continue;return s}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var c=h(e,t,r);if("normal"===c.type){if(n=r.done?"completed":"suspendedYield",c.arg===d)continue;return{value:c.arg,done:r.done}}"throw"===c.type&&(n="completed",r.method="throw",r.arg=c.arg)}}}function O(e,t){var r=t.method,n=e.iterator[r];if(void 0===n)return t.delegate=null,"throw"===r&&e.iterator.return&&(t.method="return",t.arg=void 0,O(e,t),"throw"===t.method)||"return"!==r&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+r+"' method")),d;var a=h(n,e.iterator,t.arg);if("throw"===a.type)return t.method="throw",t.arg=a.arg,t.delegate=null,d;var i=a.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,d):i:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,d)}function A(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function C(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function F(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(A,this),this.reset(!0)}function P(e){if(e){var t=e[o];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var n=-1,a=function t(){for(;++n=0;--a){var i=this.tryEntries[a],o=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var s=r.call(i,"catchLoc"),c=r.call(i,"finallyLoc");if(s&&c){if(this.prev=0;--n){var a=this.tryEntries[n];if(a.tryLoc<=this.prev&&r.call(a,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),C(r),d}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var a=n.arg;C(r)}return a}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:P(e),resultName:t,nextLoc:r},"next"===this.method&&(this.arg=void 0),d}},e}function i(e,t,r,n,a,i,o){try{var s=e[i](o),c=s.value}catch(e){return void r(e)}s.done?t(c):Promise.resolve(c).then(n,a)}function o(e){return function(){var t=this,r=arguments;return new Promise((function(n,a){var o=e.apply(t,r);function s(e){i(o,n,a,s,c,"next",e)}function c(e){i(o,n,a,s,c,"throw",e)}s(void 0)}))}}function s(e){return s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},s(e)}function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return o=e.done,e},e:function(e){s=!0,i=e},f:function(){try{o||null==r.return||r.return()}finally{if(s)throw i}}}}(this._rangeRequestReaders.slice(0));try{for(r.s();!(t=r.n()).done;)t.value.cancel(e)}catch(e){r.e(e)}finally{r.f()}}}]),e}();t.PDFWorkerStream=h;var d=function(){function e(t){var r=this;u(this,e),this._msgHandler=t,this.onProgress=null,this._contentLength=null,this._isRangeSupported=!1,this._isStreamingSupported=!1;var n=this._msgHandler.sendWithStream("GetReader");this._reader=n.getReader(),this._headersReady=this._msgHandler.sendWithPromise("ReaderHeadersReady").then((function(e){r._isStreamingSupported=e.isStreamingSupported,r._isRangeSupported=e.isRangeSupported,r._contentLength=e.contentLength}))}var t;return f(e,[{key:"headersReady",get:function(){return this._headersReady}},{key:"contentLength",get:function(){return this._contentLength}},{key:"isStreamingSupported",get:function(){return this._isStreamingSupported}},{key:"isRangeSupported",get:function(){return this._isRangeSupported}},{key:"read",value:(t=o(a().mark((function e(){var t,r;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._reader.read();case 2:if(t=e.sent,r=t.value,!t.done){e.next=7;break}return e.abrupt("return",{value:void 0,done:!0});case 7:return e.abrupt("return",{value:r.buffer,done:!1});case 8:case"end":return e.stop()}}),e,this)}))),function(){return t.apply(this,arguments)})},{key:"cancel",value:function(e){this._reader.cancel(e)}}]),e}(),p=function(){function e(t,r,n){u(this,e),this._msgHandler=n,this.onProgress=null;var a=this._msgHandler.sendWithStream("GetRangeReader",{begin:t,end:r});this._reader=a.getReader()}var t;return f(e,[{key:"isStreamingSupported",get:function(){return!1}},{key:"read",value:(t=o(a().mark((function e(){var t,r;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._reader.read();case 2:if(t=e.sent,r=t.value,!t.done){e.next=7;break}return e.abrupt("return",{value:void 0,done:!0});case 7:return e.abrupt("return",{value:r.buffer,done:!1});case 8:case"end":return e.stop()}}),e,this)}))),function(){return t.apply(this,arguments)})},{key:"cancel",value:function(e){this._reader.cancel(e)}}]),e}()}],t={};function r(n){var a=t[n];if(void 0!==a)return a.exports;var i=t[n]={exports:{}};return e[n](i,i.exports,r),i.exports}r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};return(()=>{var e=n;Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"WorkerMessageHandler",{enumerable:!0,get:function(){return t.WorkerMessageHandler}});var t=r(1)})(),n})(),"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("pdfjs-dist/build/pdf.worker",[],t):"object"==typeof exports?exports["pdfjs-dist/build/pdf.worker"]=t():e["pdfjs-dist/build/pdf.worker"]=e.pdfjsWorker=t();`,re=`/*! For license information please see pdf.js.LICENSE.txt */ +var __webpack_exports__={},root,factory;root=globalThis,factory=()=>(()=>{var __webpack_modules__=[,(t,e,r)=>{function n(t){return function(t){if(Array.isArray(t))return a(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||i(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function i(t,e){if(t){if("string"==typeof t)return a(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?a(t,e):void 0}}function a(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r1&&void 0!==arguments[1]?arguments[1]:null,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;if(!t)return null;try{if(r&&"string"==typeof t){if(r.addDefaultProtocol&&t.startsWith("www.")){var n=t.match(/\\./g);n&&n.length>=2&&(t="http://".concat(t))}if(r.tryConvertEncoding)try{t=R(t)}catch(t){}}var i=e?new URL(t,e):new URL(t);if(function(t){if(!t)return!1;switch(t.protocol){case"http:":case"https:":case"ftp:":case"mailto:":case"tel:":return!0;default:return!1}}(i))return i}catch(t){}return null},e.getModificationDate=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:new Date;return[t.getUTCFullYear().toString(),(t.getUTCMonth()+1).toString().padStart(2,"0"),t.getUTCDate().toString().padStart(2,"0"),t.getUTCHours().toString().padStart(2,"0"),t.getUTCMinutes().toString().padStart(2,"0"),t.getUTCSeconds().toString().padStart(2,"0")].join("")},e.getVerbosityLevel=function(){return v},e.info=function(t){v>=p.INFOS&&console.log("Info: ".concat(t))},e.isArrayBuffer=function(t){return"object"===o(t)&&null!==t&&void 0!==t.byteLength},e.isArrayEqual=function(t,e){if(t.length!==e.length)return!1;for(var r=0,n=t.length;r=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,l=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return s=t.done,t},e:function(t){l=!0,o=t},f:function(){try{s||null==r.return||r.return()}finally{if(l)throw o}}}}(t);try{for(a.s();!(e=a.n()).done;){var o=(r=e.value,2,function(t){if(Array.isArray(t))return t}(r)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,i,a,o,s=[],l=!0,u=!1;try{for(a=(r=r.call(t)).next,0;!(l=(n=a.call(r)).done)&&(s.push(n.value),2!==s.length);l=!0);}catch(t){u=!0,i=t}finally{try{if(!l&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(u)throw i}}return s}}(r)||i(r,2)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),s=o[0],l=o[1];n[s]=l}}catch(t){a.e(t)}finally{a.f()}return n},e.objectSize=function(t){return Object.keys(t).length},e.setVerbosityLevel=function(t){Number.isInteger(t)&&(v=t)},e.shadow=g,e.string32=function(t){return String.fromCharCode(t>>24&255,t>>16&255,t>>8&255,255&t)},e.stringToBytes=P,e.stringToPDFString=function(t){var e;if(t[0]>="ï"&&("þ"===t[0]&&"ÿ"===t[1]?e="utf-16be":"ÿ"===t[0]&&"þ"===t[1]?e="utf-16le":"ï"===t[0]&&"»"===t[1]&&"¿"===t[2]&&(e="utf-8"),e))try{var r=new TextDecoder(e,{fatal:!0}),n=P(t);return r.decode(n)}catch(t){y('stringToPDFString: "'.concat(t,'".'))}for(var i=[],a=0,o=t.length;a=p.WARNINGS&&console.log("Warning: ".concat(t))}function m(t){throw new Error(t)}function g(t,e,r){var n=arguments.length>3&&void 0!==arguments[3]&&arguments[3];return Object.defineProperty(t,e,{value:r,enumerable:!n,configurable:!0,writable:!1}),r}var b=function(){function t(e,r){this.constructor===t&&m("Cannot initialize BaseException."),this.message=e,this.name=r}return t.prototype=new Error,t.constructor=t,t}();e.BaseException=b;var _=function(t){c(r,t);var e=f(r);function r(t,n){var i;return u(this,r),(i=e.call(this,t,"PasswordException")).code=n,i}return l(r)}(b);e.PasswordException=_;var w=function(t){c(r,t);var e=f(r);function r(t,n){var i;return u(this,r),(i=e.call(this,t,"UnknownErrorException")).details=n,i}return l(r)}(b);e.UnknownErrorException=w;var A=function(t){c(r,t);var e=f(r);function r(t){return u(this,r),e.call(this,t,"InvalidPDFException")}return l(r)}(b);e.InvalidPDFException=A;var k=function(t){c(r,t);var e=f(r);function r(t){return u(this,r),e.call(this,t,"MissingPDFException")}return l(r)}(b);e.MissingPDFException=k;var S=function(t){c(r,t);var e=f(r);function r(t,n){var i;return u(this,r),(i=e.call(this,t,"UnexpectedResponseException")).status=n,i}return l(r)}(b);e.UnexpectedResponseException=S;var x=function(t){c(r,t);var e=f(r);function r(t){return u(this,r),e.call(this,t,"FormatError")}return l(r)}(b);e.FormatError=x;var E=function(t){c(r,t);var e=f(r);function r(t){return u(this,r),e.call(this,t,"AbortException")}return l(r)}(b);function P(t){"string"!=typeof t&&m("Invalid argument for stringToBytes");for(var e=t.length,r=new Uint8Array(e),n=0;nt[2]&&(e[0]=t[2],e[2]=t[0]),t[1]>t[3]&&(e[1]=t[3],e[3]=t[1]),e}},{key:"intersect",value:function(t,e){var r=Math.max(Math.min(t[0],t[2]),Math.min(e[0],e[2])),n=Math.min(Math.max(t[0],t[2]),Math.max(e[0],e[2]));if(r>n)return null;var i=Math.max(Math.min(t[1],t[3]),Math.min(e[1],e[3])),a=Math.min(Math.max(t[1],t[3]),Math.max(e[1],e[3]));return i>a?null:[r,i,n,a]}},{key:"bezierBoundingBox",value:function(t,e,r,i,a,o,s,l){for(var u,c,h,f,d,p,v,y,m=[],g=[[],[]],b=0;b<2;++b)if(0===b?(c=6*t-12*r+6*a,u=-3*t+9*r-9*a+3*s,h=3*r-3*t):(c=6*e-12*i+6*o,u=-3*e+9*i-9*o+3*l,h=3*i-3*e),Math.abs(u)<1e-12){if(Math.abs(c)<1e-12)continue;0<(f=-h/c)&&f<1&&m.push(f)}else v=c*c-4*h*u,y=Math.sqrt(v),v<0||(0<(d=(-c+y)/(2*u))&&d<1&&m.push(d),0<(p=(-c-y)/(2*u))&&p<1&&m.push(p));for(var _,w=m.length,A=w;w--;)_=1-(f=m[w]),g[0][w]=_*_*_*t+3*_*_*f*r+3*_*f*f*a+f*f*f*s,g[1][w]=_*_*_*e+3*_*_*f*i+3*_*f*f*o+f*f*f*l;return g[0][A]=t,g[1][A]=e,g[0][A+1]=s,g[1][A+1]=l,g[0].length=g[1].length=A+2,[Math.min.apply(Math,n(g[0])),Math.min.apply(Math,n(g[1])),Math.max.apply(Math,n(g[0])),Math.max.apply(Math,n(g[1]))]}}]),t}();e.Util=F;var M=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,728,711,710,729,733,731,730,732,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8226,8224,8225,8230,8212,8211,402,8260,8249,8250,8722,8240,8222,8220,8221,8216,8217,8218,8482,64257,64258,321,338,352,376,381,305,322,339,353,382,0,8364];function R(t){return decodeURIComponent(escape(t))}},(t,e,r)=>{var n=r(3);!globalThis.btoa&&n.isNodeJS&&(globalThis.btoa=function(t){return Buffer.from(t,"binary").toString("base64")}),!globalThis.atob&&n.isNodeJS&&(globalThis.atob=function(t){return Buffer.from(t,"base64").toString("binary")}),!globalThis.DOMMatrix&&n.isNodeJS&&(globalThis.DOMMatrix=require("canvas").DOMMatrix),!globalThis.ReadableStream&&n.isNodeJS&&(globalThis.ReadableStream=require("web-streams-polyfill/dist/ponyfill.js").ReadableStream),Array.prototype.at||r(4),Uint8Array.prototype.at||r(78),globalThis.structuredClone||r(88)},(t,e)=>{function r(t){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r(t)}Object.defineProperty(e,"__esModule",{value:!0}),e.isNodeJS=void 0;var n=!("object"!==("undefined"==typeof process?"undefined":r(process))||process+""!="[object process]"||process.versions.nw||process.versions.electron&&process.type&&"browser"!==process.type);e.isNodeJS=n},(t,e,r)=>{r(5);var n=r(77);t.exports=n("Array","at")},(t,e,r)=>{var n=r(6),i=r(43),a=r(67),o=r(65),s=r(72);n({target:"Array",proto:!0},{at:function(t){var e=i(this),r=a(e),n=o(t),s=n>=0?n:r+n;return s<0||s>=r?void 0:e[s]}}),s("at")},(t,e,r)=>{var n=r(7),i=r(8).f,a=r(47),o=r(51),s=r(41),l=r(59),u=r(71);t.exports=function(t,e){var r,c,h,f,d,p=t.target,v=t.global,y=t.stat;if(r=v?n:y?n[p]||s(p,{}):(n[p]||{}).prototype)for(c in e){if(f=e[c],h=t.dontCallGetSet?(d=i(r,c))&&d.value:r[c],!u(v?c:p+(y?".":"#")+c,t.forced)&&void 0!==h){if(typeof f==typeof h)continue;l(f,h)}(t.sham||h&&h.sham)&&a(f,"sham",!0),o(r,c,f,t)}}},t=>{var e=function(t){return t&&t.Math==Math&&t};t.exports=e("object"==typeof globalThis&&globalThis)||e("object"==typeof window&&window)||e("object"==typeof self&&self)||e("object"==typeof global&&global)||function(){return this}()||Function("return this")()},(t,e,r)=>{var n=r(9),i=r(11),a=r(13),o=r(14),s=r(15),l=r(21),u=r(42),c=r(45),h=Object.getOwnPropertyDescriptor;e.f=n?h:function(t,e){if(t=s(t),e=l(e),c)try{return h(t,e)}catch(t){}if(u(t,e))return o(!i(a.f,t,e),t[e])}},(t,e,r)=>{var n=r(10);t.exports=!n((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},t=>{t.exports=function(t){try{return!!t()}catch(t){return!0}}},(t,e,r)=>{var n=r(12),i=Function.prototype.call;t.exports=n?i.bind(i):function(){return i.apply(i,arguments)}},(t,e,r)=>{var n=r(10);t.exports=!n((function(){var t=function(){}.bind();return"function"!=typeof t||t.hasOwnProperty("prototype")}))},(t,e)=>{var r={}.propertyIsEnumerable,n=Object.getOwnPropertyDescriptor,i=n&&!r.call({1:2},1);e.f=i?function(t){var e=n(this,t);return!!e&&e.enumerable}:r},t=>{t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},(t,e,r)=>{var n=r(16),i=r(19);t.exports=function(t){return n(i(t))}},(t,e,r)=>{var n=r(17),i=r(10),a=r(18),o=Object,s=n("".split);t.exports=i((function(){return!o("z").propertyIsEnumerable(0)}))?function(t){return"String"==a(t)?s(t,""):o(t)}:o},(t,e,r)=>{var n=r(12),i=Function.prototype,a=i.call,o=n&&i.bind.bind(a,a);t.exports=n?o:function(t){return function(){return a.apply(t,arguments)}}},(t,e,r)=>{var n=r(17),i=n({}.toString),a=n("".slice);t.exports=function(t){return a(i(t),8,-1)}},(t,e,r)=>{var n=r(20),i=TypeError;t.exports=function(t){if(n(t))throw i("Can't call method on "+t);return t}},t=>{t.exports=function(t){return null==t}},(t,e,r)=>{var n=r(22),i=r(26);t.exports=function(t){var e=n(t,"string");return i(e)?e:e+""}},(t,e,r)=>{var n=r(11),i=r(23),a=r(26),o=r(33),s=r(36),l=r(37),u=TypeError,c=l("toPrimitive");t.exports=function(t,e){if(!i(t)||a(t))return t;var r,l=o(t,c);if(l){if(void 0===e&&(e="default"),r=n(l,t,e),!i(r)||a(r))return r;throw u("Can't convert object to primitive value")}return void 0===e&&(e="number"),s(t,e)}},(t,e,r)=>{var n=r(24),i=r(25),a=i.all;t.exports=i.IS_HTMLDDA?function(t){return"object"==typeof t?null!==t:n(t)||t===a}:function(t){return"object"==typeof t?null!==t:n(t)}},(t,e,r)=>{var n=r(25),i=n.all;t.exports=n.IS_HTMLDDA?function(t){return"function"==typeof t||t===i}:function(t){return"function"==typeof t}},t=>{var e="object"==typeof document&&document.all,r=void 0===e&&void 0!==e;t.exports={all:e,IS_HTMLDDA:r}},(t,e,r)=>{var n=r(27),i=r(24),a=r(28),o=r(29),s=Object;t.exports=o?function(t){return"symbol"==typeof t}:function(t){var e=n("Symbol");return i(e)&&a(e.prototype,s(t))}},(t,e,r)=>{var n=r(7),i=r(24);t.exports=function(t,e){return arguments.length<2?(r=n[t],i(r)?r:void 0):n[t]&&n[t][e];var r}},(t,e,r)=>{var n=r(17);t.exports=n({}.isPrototypeOf)},(t,e,r)=>{var n=r(30);t.exports=n&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},(t,e,r)=>{var n=r(31),i=r(10);t.exports=!!Object.getOwnPropertySymbols&&!i((function(){var t=Symbol();return!String(t)||!(Object(t)instanceof Symbol)||!Symbol.sham&&n&&n<41}))},(t,e,r)=>{var n,i,a=r(7),o=r(32),s=a.process,l=a.Deno,u=s&&s.versions||l&&l.version,c=u&&u.v8;c&&(i=(n=c.split("."))[0]>0&&n[0]<4?1:+(n[0]+n[1])),!i&&o&&(!(n=o.match(/Edge\\/(\\d+)/))||n[1]>=74)&&(n=o.match(/Chrome\\/(\\d+)/))&&(i=+n[1]),t.exports=i},(t,e,r)=>{var n=r(27);t.exports=n("navigator","userAgent")||""},(t,e,r)=>{var n=r(34),i=r(20);t.exports=function(t,e){var r=t[e];return i(r)?void 0:n(r)}},(t,e,r)=>{var n=r(24),i=r(35),a=TypeError;t.exports=function(t){if(n(t))return t;throw a(i(t)+" is not a function")}},t=>{var e=String;t.exports=function(t){try{return e(t)}catch(t){return"Object"}}},(t,e,r)=>{var n=r(11),i=r(24),a=r(23),o=TypeError;t.exports=function(t,e){var r,s;if("string"===e&&i(r=t.toString)&&!a(s=n(r,t)))return s;if(i(r=t.valueOf)&&!a(s=n(r,t)))return s;if("string"!==e&&i(r=t.toString)&&!a(s=n(r,t)))return s;throw o("Can't convert object to primitive value")}},(t,e,r)=>{var n=r(7),i=r(38),a=r(42),o=r(44),s=r(30),l=r(29),u=i("wks"),c=n.Symbol,h=c&&c.for,f=l?c:c&&c.withoutSetter||o;t.exports=function(t){if(!a(u,t)||!s&&"string"!=typeof u[t]){var e="Symbol."+t;s&&a(c,t)?u[t]=c[t]:u[t]=l&&h?h(e):f(e)}return u[t]}},(t,e,r)=>{var n=r(39),i=r(40);(t.exports=function(t,e){return i[t]||(i[t]=void 0!==e?e:{})})("versions",[]).push({version:"3.26.1",mode:n?"pure":"global",copyright:"© 2014-2022 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.26.1/LICENSE",source:"https://github.com/zloirock/core-js"})},t=>{t.exports=!1},(t,e,r)=>{var n=r(7),i=r(41),a="__core-js_shared__",o=n[a]||i(a,{});t.exports=o},(t,e,r)=>{var n=r(7),i=Object.defineProperty;t.exports=function(t,e){try{i(n,t,{value:e,configurable:!0,writable:!0})}catch(r){n[t]=e}return e}},(t,e,r)=>{var n=r(17),i=r(43),a=n({}.hasOwnProperty);t.exports=Object.hasOwn||function(t,e){return a(i(t),e)}},(t,e,r)=>{var n=r(19),i=Object;t.exports=function(t){return i(n(t))}},(t,e,r)=>{var n=r(17),i=0,a=Math.random(),o=n(1..toString);t.exports=function(t){return"Symbol("+(void 0===t?"":t)+")_"+o(++i+a,36)}},(t,e,r)=>{var n=r(9),i=r(10),a=r(46);t.exports=!n&&!i((function(){return 7!=Object.defineProperty(a("div"),"a",{get:function(){return 7}}).a}))},(t,e,r)=>{var n=r(7),i=r(23),a=n.document,o=i(a)&&i(a.createElement);t.exports=function(t){return o?a.createElement(t):{}}},(t,e,r)=>{var n=r(9),i=r(48),a=r(14);t.exports=n?function(t,e,r){return i.f(t,e,a(1,r))}:function(t,e,r){return t[e]=r,t}},(t,e,r)=>{var n=r(9),i=r(45),a=r(49),o=r(50),s=r(21),l=TypeError,u=Object.defineProperty,c=Object.getOwnPropertyDescriptor,h="enumerable",f="configurable",d="writable";e.f=n?a?function(t,e,r){if(o(t),e=s(e),o(r),"function"==typeof t&&"prototype"===e&&"value"in r&&d in r&&!r[d]){var n=c(t,e);n&&n[d]&&(t[e]=r.value,r={configurable:f in r?r[f]:n[f],enumerable:h in r?r[h]:n[h],writable:!1})}return u(t,e,r)}:u:function(t,e,r){if(o(t),e=s(e),o(r),i)try{return u(t,e,r)}catch(t){}if("get"in r||"set"in r)throw l("Accessors not supported");return"value"in r&&(t[e]=r.value),t}},(t,e,r)=>{var n=r(9),i=r(10);t.exports=n&&i((function(){return 42!=Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype}))},(t,e,r)=>{var n=r(23),i=String,a=TypeError;t.exports=function(t){if(n(t))return t;throw a(i(t)+" is not an object")}},(t,e,r)=>{var n=r(24),i=r(48),a=r(52),o=r(41);t.exports=function(t,e,r,s){s||(s={});var l=s.enumerable,u=void 0!==s.name?s.name:e;if(n(r)&&a(r,u,s),s.global)l?t[e]=r:o(e,r);else{try{s.unsafe?t[e]&&(l=!0):delete t[e]}catch(t){}l?t[e]=r:i.f(t,e,{value:r,enumerable:!1,configurable:!s.nonConfigurable,writable:!s.nonWritable})}return t}},(t,e,r)=>{var n=r(10),i=r(24),a=r(42),o=r(9),s=r(53).CONFIGURABLE,l=r(54),u=r(55),c=u.enforce,h=u.get,f=Object.defineProperty,d=o&&!n((function(){return 8!==f((function(){}),"length",{value:8}).length})),p=String(String).split("String"),v=t.exports=function(t,e,r){"Symbol("===String(e).slice(0,7)&&(e="["+String(e).replace(/^Symbol\\(([^)]*)\\)/,"$1")+"]"),r&&r.getter&&(e="get "+e),r&&r.setter&&(e="set "+e),(!a(t,"name")||s&&t.name!==e)&&(o?f(t,"name",{value:e,configurable:!0}):t.name=e),d&&r&&a(r,"arity")&&t.length!==r.arity&&f(t,"length",{value:r.arity});try{r&&a(r,"constructor")&&r.constructor?o&&f(t,"prototype",{writable:!1}):t.prototype&&(t.prototype=void 0)}catch(t){}var n=c(t);return a(n,"source")||(n.source=p.join("string"==typeof e?e:"")),t};Function.prototype.toString=v((function(){return i(this)&&h(this).source||l(this)}),"toString")},(t,e,r)=>{var n=r(9),i=r(42),a=Function.prototype,o=n&&Object.getOwnPropertyDescriptor,s=i(a,"name"),l=s&&"something"===function(){}.name,u=s&&(!n||n&&o(a,"name").configurable);t.exports={EXISTS:s,PROPER:l,CONFIGURABLE:u}},(t,e,r)=>{var n=r(17),i=r(24),a=r(40),o=n(Function.toString);i(a.inspectSource)||(a.inspectSource=function(t){return o(t)}),t.exports=a.inspectSource},(t,e,r)=>{var n,i,a,o=r(56),s=r(7),l=r(23),u=r(47),c=r(42),h=r(40),f=r(57),d=r(58),p="Object already initialized",v=s.TypeError,y=s.WeakMap;if(o||h.state){var m=h.state||(h.state=new y);m.get=m.get,m.has=m.has,m.set=m.set,n=function(t,e){if(m.has(t))throw v(p);return e.facade=t,m.set(t,e),e},i=function(t){return m.get(t)||{}},a=function(t){return m.has(t)}}else{var g=f("state");d[g]=!0,n=function(t,e){if(c(t,g))throw v(p);return e.facade=t,u(t,g,e),e},i=function(t){return c(t,g)?t[g]:{}},a=function(t){return c(t,g)}}t.exports={set:n,get:i,has:a,enforce:function(t){return a(t)?i(t):n(t,{})},getterFor:function(t){return function(e){var r;if(!l(e)||(r=i(e)).type!==t)throw v("Incompatible receiver, "+t+" required");return r}}}},(t,e,r)=>{var n=r(7),i=r(24),a=n.WeakMap;t.exports=i(a)&&/native code/.test(String(a))},(t,e,r)=>{var n=r(38),i=r(44),a=n("keys");t.exports=function(t){return a[t]||(a[t]=i(t))}},t=>{t.exports={}},(t,e,r)=>{var n=r(42),i=r(60),a=r(8),o=r(48);t.exports=function(t,e,r){for(var s=i(e),l=o.f,u=a.f,c=0;c{var n=r(27),i=r(17),a=r(61),o=r(70),s=r(50),l=i([].concat);t.exports=n("Reflect","ownKeys")||function(t){var e=a.f(s(t)),r=o.f;return r?l(e,r(t)):e}},(t,e,r)=>{var n=r(62),i=r(69).concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return n(t,i)}},(t,e,r)=>{var n=r(17),i=r(42),a=r(15),o=r(63).indexOf,s=r(58),l=n([].push);t.exports=function(t,e){var r,n=a(t),u=0,c=[];for(r in n)!i(s,r)&&i(n,r)&&l(c,r);for(;e.length>u;)i(n,r=e[u++])&&(~o(c,r)||l(c,r));return c}},(t,e,r)=>{var n=r(15),i=r(64),a=r(67),o=function(t){return function(e,r,o){var s,l=n(e),u=a(l),c=i(o,u);if(t&&r!=r){for(;u>c;)if((s=l[c++])!=s)return!0}else for(;u>c;c++)if((t||c in l)&&l[c]===r)return t||c||0;return!t&&-1}};t.exports={includes:o(!0),indexOf:o(!1)}},(t,e,r)=>{var n=r(65),i=Math.max,a=Math.min;t.exports=function(t,e){var r=n(t);return r<0?i(r+e,0):a(r,e)}},(t,e,r)=>{var n=r(66);t.exports=function(t){var e=+t;return e!=e||0===e?0:n(e)}},t=>{var e=Math.ceil,r=Math.floor;t.exports=Math.trunc||function(t){var n=+t;return(n>0?r:e)(n)}},(t,e,r)=>{var n=r(68);t.exports=function(t){return n(t.length)}},(t,e,r)=>{var n=r(65),i=Math.min;t.exports=function(t){return t>0?i(n(t),9007199254740991):0}},t=>{t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},(t,e)=>{e.f=Object.getOwnPropertySymbols},(t,e,r)=>{var n=r(10),i=r(24),a=/#|\\.prototype\\./,o=function(t,e){var r=l[s(t)];return r==c||r!=u&&(i(e)?n(e):!!e)},s=o.normalize=function(t){return String(t).replace(a,".").toLowerCase()},l=o.data={},u=o.NATIVE="N",c=o.POLYFILL="P";t.exports=o},(t,e,r)=>{var n=r(37),i=r(73),a=r(48).f,o=n("unscopables"),s=Array.prototype;null==s[o]&&a(s,o,{configurable:!0,value:i(null)}),t.exports=function(t){s[o][t]=!0}},(t,e,r)=>{var n,i=r(50),a=r(74),o=r(69),s=r(58),l=r(76),u=r(46),c=r(57),h="prototype",f="script",d=c("IE_PROTO"),p=function(){},v=function(t){return"<"+f+">"+t+""},y=function(t){t.write(v("")),t.close();var e=t.parentWindow.Object;return t=null,e},m=function(){try{n=new ActiveXObject("htmlfile")}catch(t){}var t,e,r;m="undefined"!=typeof document?document.domain&&n?y(n):(e=u("iframe"),r="java"+f+":",e.style.display="none",l.appendChild(e),e.src=String(r),(t=e.contentWindow.document).open(),t.write(v("document.F=Object")),t.close(),t.F):y(n);for(var i=o.length;i--;)delete m[h][o[i]];return m()};s[d]=!0,t.exports=Object.create||function(t,e){var r;return null!==t?(p[h]=i(t),r=new p,p[h]=null,r[d]=t):r=m(),void 0===e?r:a.f(r,e)}},(t,e,r)=>{var n=r(9),i=r(49),a=r(48),o=r(50),s=r(15),l=r(75);e.f=n&&!i?Object.defineProperties:function(t,e){o(t);for(var r,n=s(e),i=l(e),u=i.length,c=0;u>c;)a.f(t,r=i[c++],n[r]);return t}},(t,e,r)=>{var n=r(62),i=r(69);t.exports=Object.keys||function(t){return n(t,i)}},(t,e,r)=>{var n=r(27);t.exports=n("document","documentElement")},(t,e,r)=>{var n=r(7),i=r(17);t.exports=function(t,e){return i(n[t].prototype[e])}},(t,e,r)=>{r(79)},(t,e,r)=>{var n=r(80),i=r(67),a=r(65),o=n.aTypedArray;(0,n.exportTypedArrayMethod)("at",(function(t){var e=o(this),r=i(e),n=a(t),s=n>=0?n:r+n;return s<0||s>=r?void 0:e[s]}))},(t,e,r)=>{var n,i,a,o=r(81),s=r(9),l=r(7),u=r(24),c=r(23),h=r(42),f=r(82),d=r(35),p=r(47),v=r(51),y=r(48).f,m=r(28),g=r(84),b=r(86),_=r(37),w=r(44),A=r(55),k=A.enforce,S=A.get,x=l.Int8Array,E=x&&x.prototype,P=l.Uint8ClampedArray,T=P&&P.prototype,C=x&&g(x),O=E&&g(E),F=Object.prototype,M=l.TypeError,R=_("toStringTag"),I=w("TYPED_ARRAY_TAG"),j="TypedArrayConstructor",L=o&&!!b&&"Opera"!==f(l.opera),D=!1,N={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},U={BigInt64Array:8,BigUint64Array:8},W=function(t){var e=g(t);if(c(e)){var r=S(e);return r&&h(r,j)?r[j]:W(e)}},G=function(t){if(!c(t))return!1;var e=f(t);return h(N,e)||h(U,e)};for(n in N)(a=(i=l[n])&&i.prototype)?k(a)[j]=i:L=!1;for(n in U)(a=(i=l[n])&&i.prototype)&&(k(a)[j]=i);if((!L||!u(C)||C===Function.prototype)&&(C=function(){throw M("Incorrect invocation")},L))for(n in N)l[n]&&b(l[n],C);if((!L||!O||O===F)&&(O=C.prototype,L))for(n in N)l[n]&&b(l[n].prototype,O);if(L&&g(T)!==O&&b(T,O),s&&!h(O,R))for(n in D=!0,y(O,R,{get:function(){return c(this)?this[I]:void 0}}),N)l[n]&&p(l[n],I,n);t.exports={NATIVE_ARRAY_BUFFER_VIEWS:L,TYPED_ARRAY_TAG:D&&I,aTypedArray:function(t){if(G(t))return t;throw M("Target is not a typed array")},aTypedArrayConstructor:function(t){if(u(t)&&(!b||m(C,t)))return t;throw M(d(t)+" is not a typed array constructor")},exportTypedArrayMethod:function(t,e,r,n){if(s){if(r)for(var i in N){var a=l[i];if(a&&h(a.prototype,t))try{delete a.prototype[t]}catch(r){try{a.prototype[t]=e}catch(t){}}}O[t]&&!r||v(O,t,r?e:L&&E[t]||e,n)}},exportTypedArrayStaticMethod:function(t,e,r){var n,i;if(s){if(b){if(r)for(n in N)if((i=l[n])&&h(i,t))try{delete i[t]}catch(t){}if(C[t]&&!r)return;try{return v(C,t,r?e:L&&C[t]||e)}catch(t){}}for(n in N)!(i=l[n])||i[t]&&!r||v(i,t,e)}},getTypedArrayConstructor:W,isView:function(t){if(!c(t))return!1;var e=f(t);return"DataView"===e||h(N,e)||h(U,e)},isTypedArray:G,TypedArray:C,TypedArrayPrototype:O}},t=>{t.exports="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView},(t,e,r)=>{var n=r(83),i=r(24),a=r(18),o=r(37)("toStringTag"),s=Object,l="Arguments"==a(function(){return arguments}());t.exports=n?a:function(t){var e,r,n;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(r=function(t,e){try{return t[e]}catch(t){}}(e=s(t),o))?r:l?a(e):"Object"==(n=a(e))&&i(e.callee)?"Arguments":n}},(t,e,r)=>{var n={};n[r(37)("toStringTag")]="z",t.exports="[object z]"===String(n)},(t,e,r)=>{var n=r(42),i=r(24),a=r(43),o=r(57),s=r(85),l=o("IE_PROTO"),u=Object,c=u.prototype;t.exports=s?u.getPrototypeOf:function(t){var e=a(t);if(n(e,l))return e[l];var r=e.constructor;return i(r)&&e instanceof r?r.prototype:e instanceof u?c:null}},(t,e,r)=>{var n=r(10);t.exports=!n((function(){function t(){}return t.prototype.constructor=null,Object.getPrototypeOf(new t)!==t.prototype}))},(t,e,r)=>{var n=r(17),i=r(50),a=r(87);t.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var t,e=!1,r={};try{(t=n(Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set))(r,[]),e=r instanceof Array}catch(t){}return function(r,n){return i(r),a(n),e?t(r,n):r.__proto__=n,r}}():void 0)},(t,e,r)=>{var n=r(24),i=String,a=TypeError;t.exports=function(t){if("object"==typeof t||n(t))return t;throw a("Can't set "+i(t)+" as a prototype")}},(t,e,r)=>{r(89),r(96),r(98),r(121),r(123);var n=r(132);t.exports=n.structuredClone},(t,e,r)=>{var n=r(15),i=r(72),a=r(90),o=r(55),s=r(48).f,l=r(91),u=r(95),c=r(39),h=r(9),f="Array Iterator",d=o.set,p=o.getterFor(f);t.exports=l(Array,"Array",(function(t,e){d(this,{type:f,target:n(t),index:0,kind:e})}),(function(){var t=p(this),e=t.target,r=t.kind,n=t.index++;return!e||n>=e.length?(t.target=void 0,u(void 0,!0)):u("keys"==r?n:"values"==r?e[n]:[n,e[n]],!1)}),"values");var v=a.Arguments=a.Array;if(i("keys"),i("values"),i("entries"),!c&&h&&"values"!==v.name)try{s(v,"name",{value:"values"})}catch(t){}},t=>{t.exports={}},(t,e,r)=>{var n=r(6),i=r(11),a=r(39),o=r(53),s=r(24),l=r(92),u=r(84),c=r(86),h=r(94),f=r(47),d=r(51),p=r(37),v=r(90),y=r(93),m=o.PROPER,g=o.CONFIGURABLE,b=y.IteratorPrototype,_=y.BUGGY_SAFARI_ITERATORS,w=p("iterator"),A="keys",k="values",S="entries",x=function(){return this};t.exports=function(t,e,r,o,p,y,E){l(r,e,o);var P,T,C,O=function(t){if(t===p&&j)return j;if(!_&&t in R)return R[t];switch(t){case A:case k:case S:return function(){return new r(this,t)}}return function(){return new r(this)}},F=e+" Iterator",M=!1,R=t.prototype,I=R[w]||R["@@iterator"]||p&&R[p],j=!_&&I||O(p),L="Array"==e&&R.entries||I;if(L&&(P=u(L.call(new t)))!==Object.prototype&&P.next&&(a||u(P)===b||(c?c(P,b):s(P[w])||d(P,w,x)),h(P,F,!0,!0),a&&(v[F]=x)),m&&p==k&&I&&I.name!==k&&(!a&&g?f(R,"name",k):(M=!0,j=function(){return i(I,this)})),p)if(T={values:O(k),keys:y?j:O(A),entries:O(S)},E)for(C in T)(_||M||!(C in R))&&d(R,C,T[C]);else n({target:e,proto:!0,forced:_||M},T);return a&&!E||R[w]===j||d(R,w,j,{name:p}),v[e]=j,T}},(t,e,r)=>{var n=r(93).IteratorPrototype,i=r(73),a=r(14),o=r(94),s=r(90),l=function(){return this};t.exports=function(t,e,r,u){var c=e+" Iterator";return t.prototype=i(n,{next:a(+!u,r)}),o(t,c,!1,!0),s[c]=l,t}},(t,e,r)=>{var n,i,a,o=r(10),s=r(24),l=r(23),u=r(73),c=r(84),h=r(51),f=r(37),d=r(39),p=f("iterator"),v=!1;[].keys&&("next"in(a=[].keys())?(i=c(c(a)))!==Object.prototype&&(n=i):v=!0),!l(n)||o((function(){var t={};return n[p].call(t)!==t}))?n={}:d&&(n=u(n)),s(n[p])||h(n,p,(function(){return this})),t.exports={IteratorPrototype:n,BUGGY_SAFARI_ITERATORS:v}},(t,e,r)=>{var n=r(48).f,i=r(42),a=r(37)("toStringTag");t.exports=function(t,e,r){t&&!r&&(t=t.prototype),t&&!i(t,a)&&n(t,a,{configurable:!0,value:e})}},t=>{t.exports=function(t,e){return{value:t,done:e}}},(t,e,r)=>{var n=r(83),i=r(51),a=r(97);n||i(Object.prototype,"toString",a,{unsafe:!0})},(t,e,r)=>{var n=r(83),i=r(82);t.exports=n?{}.toString:function(){return"[object "+i(this)+"]"}},(t,e,r)=>{r(99)},(t,e,r)=>{r(100)("Map",(function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}}),r(118))},(t,e,r)=>{var n=r(6),i=r(7),a=r(17),o=r(71),s=r(51),l=r(101),u=r(108),c=r(115),h=r(24),f=r(20),d=r(23),p=r(10),v=r(116),y=r(94),m=r(117);t.exports=function(t,e,r){var g=-1!==t.indexOf("Map"),b=-1!==t.indexOf("Weak"),_=g?"set":"add",w=i[t],A=w&&w.prototype,k=w,S={},x=function(t){var e=a(A[t]);s(A,t,"add"==t?function(t){return e(this,0===t?0:t),this}:"delete"==t?function(t){return!(b&&!d(t))&&e(this,0===t?0:t)}:"get"==t?function(t){return b&&!d(t)?void 0:e(this,0===t?0:t)}:"has"==t?function(t){return!(b&&!d(t))&&e(this,0===t?0:t)}:function(t,r){return e(this,0===t?0:t,r),this})};if(o(t,!h(w)||!(b||A.forEach&&!p((function(){(new w).entries().next()})))))k=r.getConstructor(e,t,g,_),l.enable();else if(o(t,!0)){var E=new k,P=E[_](b?{}:-0,1)!=E,T=p((function(){E.has(1)})),C=v((function(t){new w(t)})),O=!b&&p((function(){for(var t=new w,e=5;e--;)t[_](e,e);return!t.has(-0)}));C||((k=e((function(t,e){c(t,A);var r=m(new w,t,k);return f(e)||u(e,r[_],{that:r,AS_ENTRIES:g}),r}))).prototype=A,A.constructor=k),(T||O)&&(x("delete"),x("has"),g&&x("get")),(O||P)&&x(_),b&&A.clear&&delete A.clear}return S[t]=k,n({global:!0,constructor:!0,forced:k!=w},S),y(k,t),b||r.setStrong(k,t,g),k}},(t,e,r)=>{var n=r(6),i=r(17),a=r(58),o=r(23),s=r(42),l=r(48).f,u=r(61),c=r(102),h=r(105),f=r(44),d=r(107),p=!1,v=f("meta"),y=0,m=function(t){l(t,v,{value:{objectID:"O"+y++,weakData:{}}})},g=t.exports={enable:function(){g.enable=function(){},p=!0;var t=u.f,e=i([].splice),r={};r[v]=1,t(r).length&&(u.f=function(r){for(var n=t(r),i=0,a=n.length;i{var n=r(18),i=r(15),a=r(61).f,o=r(103),s="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];t.exports.f=function(t){return s&&"Window"==n(t)?function(t){try{return a(t)}catch(t){return o(s)}}(t):a(i(t))}},(t,e,r)=>{var n=r(64),i=r(67),a=r(104),o=Array,s=Math.max;t.exports=function(t,e,r){for(var l=i(t),u=n(e,l),c=n(void 0===r?l:r,l),h=o(s(c-u,0)),f=0;u{var n=r(21),i=r(48),a=r(14);t.exports=function(t,e,r){var o=n(e);o in t?i.f(t,o,a(0,r)):t[o]=r}},(t,e,r)=>{var n=r(10),i=r(23),a=r(18),o=r(106),s=Object.isExtensible,l=n((function(){s(1)}));t.exports=l||o?function(t){return!!i(t)&&(!o||"ArrayBuffer"!=a(t))&&(!s||s(t))}:s},(t,e,r)=>{var n=r(10);t.exports=n((function(){if("function"==typeof ArrayBuffer){var t=new ArrayBuffer(8);Object.isExtensible(t)&&Object.defineProperty(t,"a",{value:8})}}))},(t,e,r)=>{var n=r(10);t.exports=!n((function(){return Object.isExtensible(Object.preventExtensions({}))}))},(t,e,r)=>{var n=r(109),i=r(11),a=r(50),o=r(35),s=r(111),l=r(67),u=r(28),c=r(112),h=r(113),f=r(114),d=TypeError,p=function(t,e){this.stopped=t,this.result=e},v=p.prototype;t.exports=function(t,e,r){var y,m,g,b,_,w,A,k=r&&r.that,S=!(!r||!r.AS_ENTRIES),x=!(!r||!r.IS_RECORD),E=!(!r||!r.IS_ITERATOR),P=!(!r||!r.INTERRUPTED),T=n(e,k),C=function(t){return y&&f(y,"normal",t),new p(!0,t)},O=function(t){return S?(a(t),P?T(t[0],t[1],C):T(t[0],t[1])):P?T(t,C):T(t)};if(x)y=t.iterator;else if(E)y=t;else{if(!(m=h(t)))throw d(o(t)+" is not iterable");if(s(m)){for(g=0,b=l(t);b>g;g++)if((_=O(t[g]))&&u(v,_))return _;return new p(!1)}y=c(t,m)}for(w=x?t.next:y.next;!(A=i(w,y)).done;){try{_=O(A.value)}catch(t){f(y,"throw",t)}if("object"==typeof _&&_&&u(v,_))return _}return new p(!1)}},(t,e,r)=>{var n=r(110),i=r(34),a=r(12),o=n(n.bind);t.exports=function(t,e){return i(t),void 0===e?t:a?o(t,e):function(){return t.apply(e,arguments)}}},(t,e,r)=>{var n=r(18),i=r(17);t.exports=function(t){if("Function"===n(t))return i(t)}},(t,e,r)=>{var n=r(37),i=r(90),a=n("iterator"),o=Array.prototype;t.exports=function(t){return void 0!==t&&(i.Array===t||o[a]===t)}},(t,e,r)=>{var n=r(11),i=r(34),a=r(50),o=r(35),s=r(113),l=TypeError;t.exports=function(t,e){var r=arguments.length<2?s(t):e;if(i(r))return a(n(r,t));throw l(o(t)+" is not iterable")}},(t,e,r)=>{var n=r(82),i=r(33),a=r(20),o=r(90),s=r(37)("iterator");t.exports=function(t){if(!a(t))return i(t,s)||i(t,"@@iterator")||o[n(t)]}},(t,e,r)=>{var n=r(11),i=r(50),a=r(33);t.exports=function(t,e,r){var o,s;i(t);try{if(!(o=a(t,"return"))){if("throw"===e)throw r;return r}o=n(o,t)}catch(t){s=!0,o=t}if("throw"===e)throw r;if(s)throw o;return i(o),r}},(t,e,r)=>{var n=r(28),i=TypeError;t.exports=function(t,e){if(n(e,t))return t;throw i("Incorrect invocation")}},(t,e,r)=>{var n=r(37)("iterator"),i=!1;try{var a=0,o={next:function(){return{done:!!a++}},return:function(){i=!0}};o[n]=function(){return this},Array.from(o,(function(){throw 2}))}catch(t){}t.exports=function(t,e){if(!e&&!i)return!1;var r=!1;try{var a={};a[n]=function(){return{next:function(){return{done:r=!0}}}},t(a)}catch(t){}return r}},(t,e,r)=>{var n=r(24),i=r(23),a=r(86);t.exports=function(t,e,r){var o,s;return a&&n(o=e.constructor)&&o!==r&&i(s=o.prototype)&&s!==r.prototype&&a(t,s),t}},(t,e,r)=>{var n=r(48).f,i=r(73),a=r(119),o=r(109),s=r(115),l=r(20),u=r(108),c=r(91),h=r(95),f=r(120),d=r(9),p=r(101).fastKey,v=r(55),y=v.set,m=v.getterFor;t.exports={getConstructor:function(t,e,r,c){var h=t((function(t,n){s(t,f),y(t,{type:e,index:i(null),first:void 0,last:void 0,size:0}),d||(t.size=0),l(n)||u(n,t[c],{that:t,AS_ENTRIES:r})})),f=h.prototype,v=m(e),g=function(t,e,r){var n,i,a=v(t),o=b(t,e);return o?o.value=r:(a.last=o={index:i=p(e,!0),key:e,value:r,previous:n=a.last,next:void 0,removed:!1},a.first||(a.first=o),n&&(n.next=o),d?a.size++:t.size++,"F"!==i&&(a.index[i]=o)),t},b=function(t,e){var r,n=v(t),i=p(e);if("F"!==i)return n.index[i];for(r=n.first;r;r=r.next)if(r.key==e)return r};return a(f,{clear:function(){for(var t=v(this),e=t.index,r=t.first;r;)r.removed=!0,r.previous&&(r.previous=r.previous.next=void 0),delete e[r.index],r=r.next;t.first=t.last=void 0,d?t.size=0:this.size=0},delete:function(t){var e=this,r=v(e),n=b(e,t);if(n){var i=n.next,a=n.previous;delete r.index[n.index],n.removed=!0,a&&(a.next=i),i&&(i.previous=a),r.first==n&&(r.first=i),r.last==n&&(r.last=a),d?r.size--:e.size--}return!!n},forEach:function(t){for(var e,r=v(this),n=o(t,arguments.length>1?arguments[1]:void 0);e=e?e.next:r.first;)for(n(e.value,e.key,this);e&&e.removed;)e=e.previous},has:function(t){return!!b(this,t)}}),a(f,r?{get:function(t){var e=b(this,t);return e&&e.value},set:function(t,e){return g(this,0===t?0:t,e)}}:{add:function(t){return g(this,t=0===t?0:t,t)}}),d&&n(f,"size",{get:function(){return v(this).size}}),h},setStrong:function(t,e,r){var n=e+" Iterator",i=m(e),a=m(n);c(t,e,(function(t,e){y(this,{type:n,target:t,state:i(t),kind:e,last:void 0})}),(function(){for(var t=a(this),e=t.kind,r=t.last;r&&r.removed;)r=r.previous;return t.target&&(t.last=r=r?r.next:t.state.first)?h("keys"==e?r.key:"values"==e?r.value:[r.key,r.value],!1):(t.target=void 0,h(void 0,!0))}),r?"entries":"values",!r,!0),f(e)}}},(t,e,r)=>{var n=r(51);t.exports=function(t,e,r){for(var i in e)n(t,i,e[i],r);return t}},(t,e,r)=>{var n=r(27),i=r(48),a=r(37),o=r(9),s=a("species");t.exports=function(t){var e=n(t),r=i.f;o&&e&&!e[s]&&r(e,s,{configurable:!0,get:function(){return this}})}},(t,e,r)=>{r(122)},(t,e,r)=>{r(100)("Set",(function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}}),r(118))},(t,e,r)=>{var n,i=r(39),a=r(6),o=r(7),s=r(27),l=r(17),u=r(10),c=r(44),h=r(24),f=r(124),d=r(20),p=r(23),v=r(26),y=r(108),m=r(50),g=r(82),b=r(42),_=r(104),w=r(47),A=r(67),k=r(125),S=r(126),x=r(128),E=r(31),P=r(129),T=r(130),C=r(131),O=o.Object,F=o.Date,M=o.Error,R=o.EvalError,I=o.RangeError,j=o.ReferenceError,L=o.SyntaxError,D=o.TypeError,N=o.URIError,U=o.PerformanceMark,W=o.WebAssembly,G=W&&W.CompileError||M,B=W&&W.LinkError||M,q=W&&W.RuntimeError||M,H=s("DOMException"),z=s("Set"),V=s("Map"),X=V.prototype,Y=l(X.has),K=l(X.get),J=l(X.set),Q=l(z.prototype.add),$=s("Object","keys"),Z=l([].push),tt=l((!0).valueOf),et=l(1..valueOf),rt=l("".valueOf),nt=l(F.prototype.getTime),it=c("structuredClone"),at="DataCloneError",ot="Transferring",st=function(t){return!u((function(){var e=new o.Set([7]),r=t(e),n=t(O(7));return r==e||!r.has(7)||"object"!=typeof n||7!=n}))&&t},lt=function(t,e){return!u((function(){var r=new e,n=t({a:r,b:r});return!(n&&n.a===n.b&&n.a instanceof e&&n.a.stack===r.stack)}))},ut=o.structuredClone,ct=i||!lt(ut,M)||!lt(ut,H)||(n=ut,!!u((function(){var t=n(new o.AggregateError([1],it,{cause:3}));return"AggregateError"!=t.name||1!=t.errors[0]||t.message!=it||3!=t.cause}))),ht=!ut&&st((function(t){return new U(it,{detail:t}).detail})),ft=st(ut)||ht,dt=function(t){throw new H("Uncloneable type: "+t,at)},pt=function(t,e){throw new H((e||"Cloning")+" of "+t+" cannot be properly polyfilled in this engine",at)},vt=function(t,e){if(v(t)&&dt("Symbol"),!p(t))return t;if(e){if(Y(e,t))return K(e,t)}else e=new V;var r,n,i,a,l,u,c,f,d,y,m=g(t),k=!1;switch(m){case"Array":i=[],k=!0;break;case"Object":i={},k=!0;break;case"Map":i=new V,k=!0;break;case"Set":i=new z,k=!0;break;case"RegExp":i=new RegExp(t.source,S(t));break;case"Error":switch(n=t.name){case"AggregateError":i=s("AggregateError")([]);break;case"EvalError":i=R();break;case"RangeError":i=I();break;case"ReferenceError":i=j();break;case"SyntaxError":i=L();break;case"TypeError":i=D();break;case"URIError":i=N();break;case"CompileError":i=G();break;case"LinkError":i=B();break;case"RuntimeError":i=q();break;default:i=M()}k=!0;break;case"DOMException":i=new H(t.message,t.name),k=!0;break;case"DataView":case"Int8Array":case"Uint8Array":case"Uint8ClampedArray":case"Int16Array":case"Uint16Array":case"Int32Array":case"Uint32Array":case"Float32Array":case"Float64Array":case"BigInt64Array":case"BigUint64Array":r=o[m],p(r)||pt(m),i=new r(vt(t.buffer,e),t.byteOffset,"DataView"===m?t.byteLength:t.length);break;case"DOMQuad":try{i=new DOMQuad(vt(t.p1,e),vt(t.p2,e),vt(t.p3,e),vt(t.p4,e))}catch(e){ft?i=ft(t):pt(m)}break;case"FileList":if(a=function(){var t;try{t=new o.DataTransfer}catch(e){try{t=new o.ClipboardEvent("").clipboardData}catch(t){}}return t&&t.items&&t.files?t:null}()){for(l=0,u=A(t);l92||C&&E>94||P&&E>97)return!1;var t=new ArrayBuffer(8),e=ut(t,{transfer:[t]});return 0!=t.byteLength||8!=e.byteLength}));a({global:!0,enumerable:!0,sham:!yt,forced:ct},{structuredClone:function(t){var e,r=k(arguments.length,1)>1&&!d(arguments[1])?m(arguments[1]):void 0,n=r?r.transfer:void 0;return void 0!==n&&function(t,e){if(!p(t))throw D("Transfer option cannot be converted to a sequence");var r=[];y(t,(function(t){Z(r,m(t))}));var n,i,a,s,l,u,c=0,d=A(r);if(yt)for(s=ut(r,{transfer:r});c{var n=r(17),i=r(10),a=r(24),o=r(82),s=r(27),l=r(54),u=function(){},c=[],h=s("Reflect","construct"),f=/^\\s*(?:class|function)\\b/,d=n(f.exec),p=!f.exec(u),v=function(t){if(!a(t))return!1;try{return h(u,c,t),!0}catch(t){return!1}},y=function(t){if(!a(t))return!1;switch(o(t)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return p||!!d(f,l(t))}catch(t){return!0}};y.sham=!0,t.exports=!h||i((function(){var t;return v(v.call)||!v(Object)||!v((function(){t=!0}))||t}))?y:v},t=>{var e=TypeError;t.exports=function(t,r){if(t{var n=r(11),i=r(42),a=r(28),o=r(127),s=RegExp.prototype;t.exports=function(t){var e=t.flags;return void 0!==e||"flags"in s||i(t,"flags")||!a(s,t)?e:n(o,t)}},(t,e,r)=>{var n=r(50);t.exports=function(){var t=n(this),e="";return t.hasIndices&&(e+="d"),t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.dotAll&&(e+="s"),t.unicode&&(e+="u"),t.unicodeSets&&(e+="v"),t.sticky&&(e+="y"),e}},(t,e,r)=>{var n=r(10),i=r(14);t.exports=!n((function(){var t=Error("a");return!("stack"in t)||(Object.defineProperty(t,"stack",i(1,7)),7!==t.stack)}))},(t,e,r)=>{var n=r(130),i=r(131);t.exports=!n&&!i&&"object"==typeof window&&"object"==typeof document},t=>{t.exports="object"==typeof Deno&&Deno&&"object"==typeof Deno.version},(t,e,r)=>{var n=r(18),i=r(7);t.exports="process"==n(i.process)},(t,e,r)=>{var n=r(7);t.exports=n},(__unused_webpack_module,exports,__w_pdfjs_require__)=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.build=exports.RenderTask=exports.PDFWorkerUtil=exports.PDFWorker=exports.PDFPageProxy=exports.PDFDocumentProxy=exports.PDFDocumentLoadingTask=exports.PDFDataRangeTransport=exports.LoopbackPort=exports.DefaultStandardFontDataFactory=exports.DefaultCanvasFactory=exports.DefaultCMapReaderFactory=void 0,exports.getDocument=getDocument,exports.setPDFNetworkStreamFactory=setPDFNetworkStreamFactory,exports.version=void 0;var _util=__w_pdfjs_require__(1),_annotation_storage=__w_pdfjs_require__(134),_display_utils=__w_pdfjs_require__(137),_font_loader=__w_pdfjs_require__(140),_canvas=__w_pdfjs_require__(141),_worker_options=__w_pdfjs_require__(144),_is_node=__w_pdfjs_require__(3),_message_handler=__w_pdfjs_require__(145),_metadata=__w_pdfjs_require__(146),_optional_content_config=__w_pdfjs_require__(147),_transport_stream=__w_pdfjs_require__(148),_xfa_text=__w_pdfjs_require__(149);function _classPrivateMethodInitSpec(t,e){_checkPrivateRedeclaration(t,e),e.add(t)}function _classPrivateMethodGet(t,e,r){if(!e.has(t))throw new TypeError("attempted to get private field on non-instance");return r}function _toConsumableArray(t){return _arrayWithoutHoles(t)||_iterableToArray(t)||_unsupportedIterableToArray(t)||_nonIterableSpread()}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _iterableToArray(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}function _arrayWithoutHoles(t){if(Array.isArray(t))return _arrayLikeToArray(t)}function _createForOfIteratorHelper(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=_unsupportedIterableToArray(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,i=function(){};return{s:i,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,o=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return o=t.done,t},e:function(t){s=!0,a=t},f:function(){try{o||null==r.return||r.return()}finally{if(s)throw a}}}}function _regeneratorRuntime(){_regeneratorRuntime=function(){return t};var t={},e=Object.prototype,r=e.hasOwnProperty,n=Object.defineProperty||function(t,e,r){t[e]=r.value},i="function"==typeof Symbol?Symbol:{},a=i.iterator||"@@iterator",o=i.asyncIterator||"@@asyncIterator",s=i.toStringTag||"@@toStringTag";function l(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{l({},"")}catch(t){l=function(t,e,r){return t[e]=r}}function u(t,e,r,i){var a=e&&e.prototype instanceof f?e:f,o=Object.create(a.prototype),s=new x(i||[]);return n(o,"_invoke",{value:w(t,r,s)}),o}function c(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}t.wrap=u;var h={};function f(){}function d(){}function p(){}var v={};l(v,a,(function(){return this}));var y=Object.getPrototypeOf,m=y&&y(y(E([])));m&&m!==e&&r.call(m,a)&&(v=m);var g=p.prototype=f.prototype=Object.create(v);function b(t){["next","throw","return"].forEach((function(e){l(t,e,(function(t){return this._invoke(e,t)}))}))}function _(t,e){function i(n,a,o,s){var l=c(t[n],t,a);if("throw"!==l.type){var u=l.arg,h=u.value;return h&&"object"==_typeof(h)&&r.call(h,"__await")?e.resolve(h.__await).then((function(t){i("next",t,o,s)}),(function(t){i("throw",t,o,s)})):e.resolve(h).then((function(t){u.value=t,o(u)}),(function(t){return i("throw",t,o,s)}))}s(l.arg)}var a;n(this,"_invoke",{value:function(t,r){function n(){return new e((function(e,n){i(t,r,e,n)}))}return a=a?a.then(n,n):n()}})}function w(t,e,r){var n="suspendedStart";return function(i,a){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===i)throw a;return{value:void 0,done:!0}}for(r.method=i,r.arg=a;;){var o=r.delegate;if(o){var s=A(o,r);if(s){if(s===h)continue;return s}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var l=c(t,e,r);if("normal"===l.type){if(n=r.done?"completed":"suspendedYield",l.arg===h)continue;return{value:l.arg,done:r.done}}"throw"===l.type&&(n="completed",r.method="throw",r.arg=l.arg)}}}function A(t,e){var r=e.method,n=t.iterator[r];if(void 0===n)return e.delegate=null,"throw"===r&&t.iterator.return&&(e.method="return",e.arg=void 0,A(t,e),"throw"===e.method)||"return"!==r&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+r+"' method")),h;var i=c(n,t.iterator,e.arg);if("throw"===i.type)return e.method="throw",e.arg=i.arg,e.delegate=null,h;var a=i.arg;return a?a.done?(e[t.resultName]=a.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,h):a:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,h)}function k(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function S(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function x(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(k,this),this.reset(!0)}function E(t){if(t){var e=t[a];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var n=-1,i=function e(){for(;++n=0;--i){var a=this.tryEntries[i],o=a.completion;if("root"===a.tryLoc)return n("end");if(a.tryLoc<=this.prev){var s=r.call(a,"catchLoc"),l=r.call(a,"finallyLoc");if(s&&l){if(this.prev=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&r.call(i,"finallyLoc")&&this.prev=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),S(r),h}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var i=n.arg;S(r)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:E(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=void 0),h}},t}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _defineProperties(t,e){for(var r=0;rt.length)&&(e=t.length);for(var r=0,n=new Array(e);r2&&void 0!==arguments[2]&&arguments[2],i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;_classCallCheck(this,t),this.length=e,this.initialData=r,this.progressiveDone=n,this.contentDispositionFilename=i,this._rangeListeners=[],this._progressListeners=[],this._progressiveReadListeners=[],this._progressiveDoneListeners=[],this._readyCapability=(0,_util.createPromiseCapability)()}return _createClass(t,[{key:"addRangeListener",value:function(t){this._rangeListeners.push(t)}},{key:"addProgressListener",value:function(t){this._progressListeners.push(t)}},{key:"addProgressiveReadListener",value:function(t){this._progressiveReadListeners.push(t)}},{key:"addProgressiveDoneListener",value:function(t){this._progressiveDoneListeners.push(t)}},{key:"onDataRange",value:function(t,e){var r,n=_createForOfIteratorHelper(this._rangeListeners);try{for(n.s();!(r=n.n()).done;)(0,r.value)(t,e)}catch(t){n.e(t)}finally{n.f()}}},{key:"onDataProgress",value:function(t,e){var r=this;this._readyCapability.promise.then((function(){var n,i=_createForOfIteratorHelper(r._progressListeners);try{for(i.s();!(n=i.n()).done;)(0,n.value)(t,e)}catch(t){i.e(t)}finally{i.f()}}))}},{key:"onDataProgressiveRead",value:function(t){var e=this;this._readyCapability.promise.then((function(){var r,n=_createForOfIteratorHelper(e._progressiveReadListeners);try{for(n.s();!(r=n.n()).done;)(0,r.value)(t)}catch(t){n.e(t)}finally{n.f()}}))}},{key:"onDataProgressiveDone",value:function(){var t=this;this._readyCapability.promise.then((function(){var e,r=_createForOfIteratorHelper(t._progressiveDoneListeners);try{for(r.s();!(e=r.n()).done;)(0,e.value)()}catch(t){r.e(t)}finally{r.f()}}))}},{key:"transportReady",value:function(){this._readyCapability.resolve()}},{key:"requestDataRange",value:function(t,e){(0,_util.unreachable)("Abstract method PDFDataRangeTransport.requestDataRange")}},{key:"abort",value:function(){}}]),t}();exports.PDFDataRangeTransport=PDFDataRangeTransport;var PDFDocumentProxy=function(){function t(e,r){_classCallCheck(this,t),this._pdfInfo=e,this._transport=r}return _createClass(t,[{key:"annotationStorage",get:function(){return this._transport.annotationStorage}},{key:"numPages",get:function(){return this._pdfInfo.numPages}},{key:"fingerprints",get:function(){return this._pdfInfo.fingerprints}},{key:"stats",get:function(){return(0,_display_utils.deprecated)("The PDFDocumentProxy stats property will be removed in the future."),this._transport.stats}},{key:"isPureXfa",get:function(){return(0,_util.shadow)(this,"isPureXfa",!!this._transport._htmlForXfa)}},{key:"allXfaHtml",get:function(){return this._transport._htmlForXfa}},{key:"getPage",value:function(t){return this._transport.getPage(t)}},{key:"getPageIndex",value:function(t){return this._transport.getPageIndex(t)}},{key:"getDestinations",value:function(){return this._transport.getDestinations()}},{key:"getDestination",value:function(t){return this._transport.getDestination(t)}},{key:"getPageLabels",value:function(){return this._transport.getPageLabels()}},{key:"getPageLayout",value:function(){return this._transport.getPageLayout()}},{key:"getPageMode",value:function(){return this._transport.getPageMode()}},{key:"getViewerPreferences",value:function(){return this._transport.getViewerPreferences()}},{key:"getOpenAction",value:function(){return this._transport.getOpenAction()}},{key:"getAttachments",value:function(){return this._transport.getAttachments()}},{key:"getJavaScript",value:function(){return this._transport.getJavaScript()}},{key:"getJSActions",value:function(){return this._transport.getDocJSActions()}},{key:"getOutline",value:function(){return this._transport.getOutline()}},{key:"getOptionalContentConfig",value:function(){return this._transport.getOptionalContentConfig()}},{key:"getPermissions",value:function(){return this._transport.getPermissions()}},{key:"getMetadata",value:function(){return this._transport.getMetadata()}},{key:"getMarkInfo",value:function(){return this._transport.getMarkInfo()}},{key:"getData",value:function(){return this._transport.getData()}},{key:"saveDocument",value:function(){return this._transport.saveDocument()}},{key:"getDownloadInfo",value:function(){return this._transport.downloadInfoCapability.promise}},{key:"cleanup",value:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return this._transport.startCleanup(t||this.isPureXfa)}},{key:"destroy",value:function(){return this.loadingTask.destroy()}},{key:"loadingParams",get:function(){return this._transport.loadingParams}},{key:"loadingTask",get:function(){return this._transport.loadingTask}},{key:"getFieldObjects",value:function(){return this._transport.getFieldObjects()}},{key:"hasJSActions",value:function(){return this._transport.hasJSActions()}},{key:"getCalculationOrderIds",value:function(){return this._transport.getCalculationOrderIds()}}]),t}();exports.PDFDocumentProxy=PDFDocumentProxy;var PDFPageProxy=function(){function t(e,r,n,i){var a=arguments.length>4&&void 0!==arguments[4]&&arguments[4];_classCallCheck(this,t),this._pageIndex=e,this._pageInfo=r,this._ownerDocument=i,this._transport=n,this._stats=a?new _display_utils.StatTimer:null,this._pdfBug=a,this.commonObjs=n.commonObjs,this.objs=new PDFObjects,this._bitmaps=new Set,this.cleanupAfterRender=!1,this.pendingCleanup=!1,this._intentStates=new Map,this.destroyed=!1}var e;return _createClass(t,[{key:"pageNumber",get:function(){return this._pageIndex+1}},{key:"rotate",get:function(){return this._pageInfo.rotate}},{key:"ref",get:function(){return this._pageInfo.ref}},{key:"userUnit",get:function(){return this._pageInfo.userUnit}},{key:"view",get:function(){return this._pageInfo.view}},{key:"getViewport",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.scale,r=t.rotation,n=void 0===r?this.rotate:r,i=t.offsetX,a=void 0===i?0:i,o=t.offsetY,s=void 0===o?0:o,l=t.dontFlip,u=void 0!==l&&l;return new _display_utils.PageViewport({viewBox:this.view,scale:e,rotation:n,offsetX:a,offsetY:s,dontFlip:u})}},{key:"getAnnotations",value:function(){var t=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}).intent,e=void 0===t?"display":t,r=this._transport.getRenderingIntent(e);return this._transport.getAnnotations(this._pageIndex,r.renderingIntent)}},{key:"getJSActions",value:function(){return this._transport.getPageJSActions(this._pageIndex)}},{key:"isPureXfa",get:function(){return(0,_util.shadow)(this,"isPureXfa",!!this._transport._htmlForXfa)}},{key:"getXfa",value:(e=_asyncToGenerator(_regeneratorRuntime().mark((function t(){var e;return _regeneratorRuntime().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",(null===(e=this._transport._htmlForXfa)||void 0===e?void 0:e.children[this._pageIndex])||null);case 1:case"end":return t.stop()}}),t,this)}))),function(){return e.apply(this,arguments)})},{key:"render",value:function(t){var e,r,n=this,i=t.canvasContext,a=t.viewport,o=t.intent,s=void 0===o?"display":o,l=t.annotationMode,u=void 0===l?_util.AnnotationMode.ENABLE:l,c=t.transform,h=void 0===c?null:c,f=t.canvasFactory,d=void 0===f?null:f,p=t.background,v=void 0===p?null:p,y=t.optionalContentConfigPromise,m=void 0===y?null:y,g=t.annotationCanvasMap,b=void 0===g?null:g,_=t.pageColors,w=void 0===_?null:_,A=t.printAnnotationStorage,k=void 0===A?null:A;null===(e=this._stats)||void 0===e||e.time("Overall");var S=this._transport.getRenderingIntent(s,u,k);this.pendingCleanup=!1,m||(m=this._transport.getOptionalContentConfig());var x=this._intentStates.get(S.cacheKey);x||(x=Object.create(null),this._intentStates.set(S.cacheKey,x)),x.streamReaderCancelTimeout&&(clearTimeout(x.streamReaderCancelTimeout),x.streamReaderCancelTimeout=null);var E,P=d||new DefaultCanvasFactory({ownerDocument:this._ownerDocument}),T=!!(S.renderingIntent&_util.RenderingIntentFlag.PRINT);x.displayReadyCapability||(x.displayReadyCapability=(0,_util.createPromiseCapability)(),x.operatorList={fnArray:[],argsArray:[],lastChunk:!1,separateAnnots:null},null===(E=this._stats)||void 0===E||E.time("Page Request"),this._pumpOperatorList(S));var C=function(t){var e,r;x.renderTasks.delete(O),(n.cleanupAfterRender||T)&&(n.pendingCleanup=!0),n._tryCleanup(),t?(O.capability.reject(t),n._abortOperatorList({intentState:x,reason:t instanceof Error?t:new Error(t)})):O.capability.resolve(),null===(e=n._stats)||void 0===e||e.timeEnd("Rendering"),null===(r=n._stats)||void 0===r||r.timeEnd("Overall")},O=new InternalRenderTask({callback:C,params:{canvasContext:i,viewport:a,transform:h,background:v},objs:this.objs,commonObjs:this.commonObjs,annotationCanvasMap:b,operatorList:x.operatorList,pageIndex:this._pageIndex,canvasFactory:P,useRequestAnimationFrame:!T,pdfBug:this._pdfBug,pageColors:w});((r=x).renderTasks||(r.renderTasks=new Set)).add(O);var F=O.task;return Promise.all([x.displayReadyCapability.promise,m]).then((function(t){var e,r=_slicedToArray(t,2),i=r[0],a=r[1];n.pendingCleanup?C():(null===(e=n._stats)||void 0===e||e.time("Rendering"),O.initializeGraphics({transparency:i,optionalContentConfig:a}),O.operatorListChanged())})).catch(C),F}},{key:"getOperatorList",value:function(){var t,e,r,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=n.intent,a=void 0===i?"display":i,o=n.annotationMode,s=void 0===o?_util.AnnotationMode.ENABLE:o,l=n.printAnnotationStorage,u=void 0===l?null:l,c=this._transport.getRenderingIntent(a,s,u,!0),h=this._intentStates.get(c.cacheKey);return h||(h=Object.create(null),this._intentStates.set(c.cacheKey,h)),h.opListReadCapability||((t=Object.create(null)).operatorListChanged=function(){h.operatorList.lastChunk&&(h.opListReadCapability.resolve(h.operatorList),h.renderTasks.delete(t))},h.opListReadCapability=(0,_util.createPromiseCapability)(),((e=h).renderTasks||(e.renderTasks=new Set)).add(t),h.operatorList={fnArray:[],argsArray:[],lastChunk:!1,separateAnnots:null},null===(r=this._stats)||void 0===r||r.time("Page Request"),this._pumpOperatorList(c)),h.opListReadCapability.promise}},{key:"streamTextContent",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.disableCombineTextItems,r=void 0!==e&&e,n=t.includeMarkedContent,i=void 0!==n&&n;return this._transport.messageHandler.sendWithStream("GetTextContent",{pageIndex:this._pageIndex,combineTextItems:!0!==r,includeMarkedContent:!0===i},{highWaterMark:100,size:function(t){return t.items.length}})}},{key:"getTextContent",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(this._transport._htmlForXfa)return this.getXfa().then((function(t){return _xfa_text.XfaText.textContent(t)}));var e=this.streamTextContent(t);return new Promise((function(t,r){var n=e.getReader(),i={items:[],styles:Object.create(null)};!function e(){n.read().then((function(r){var n,a=r.value;r.done?t(i):(Object.assign(i.styles,a.styles),(n=i.items).push.apply(n,_toConsumableArray(a.items)),e())}),r)}()}))}},{key:"getStructTree",value:function(){return this._transport.getStructTree(this._pageIndex)}},{key:"_destroy",value:function(){this.destroyed=!0;var t,e=[],r=_createForOfIteratorHelper(this._intentStates.values());try{for(r.s();!(t=r.n()).done;){var n=t.value;if(this._abortOperatorList({intentState:n,reason:new Error("Page was destroyed."),force:!0}),!n.opListReadCapability){var i,a=_createForOfIteratorHelper(n.renderTasks);try{for(a.s();!(i=a.n()).done;){var o=i.value;e.push(o.completed),o.cancel()}}catch(t){a.e(t)}finally{a.f()}}}}catch(t){r.e(t)}finally{r.f()}this.objs.clear();var s,l=_createForOfIteratorHelper(this._bitmaps);try{for(l.s();!(s=l.n()).done;)s.value.close()}catch(t){l.e(t)}finally{l.f()}return this._bitmaps.clear(),this.pendingCleanup=!1,Promise.all(e)}},{key:"cleanup",value:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return this.pendingCleanup=!0,this._tryCleanup(t)}},{key:"_tryCleanup",value:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(!this.pendingCleanup)return!1;var e,r=_createForOfIteratorHelper(this._intentStates.values());try{for(r.s();!(e=r.n()).done;){var n=e.value,i=n.renderTasks,a=n.operatorList;if(i.size>0||!a.lastChunk)return!1}}catch(t){r.e(t)}finally{r.f()}this._intentStates.clear(),this.objs.clear(),t&&this._stats&&(this._stats=new _display_utils.StatTimer);var o,s=_createForOfIteratorHelper(this._bitmaps);try{for(s.s();!(o=s.n()).done;)o.value.close()}catch(t){s.e(t)}finally{s.f()}return this._bitmaps.clear(),this.pendingCleanup=!1,!0}},{key:"_startRenderPage",value:function(t,e){var r,n,i=this._intentStates.get(e);i&&(null===(r=this._stats)||void 0===r||r.timeEnd("Page Request"),null===(n=i.displayReadyCapability)||void 0===n||n.resolve(t))}},{key:"_renderPageChunk",value:function(t,e){for(var r=0,n=t.length;r0)return;if(n instanceof _display_utils.RenderingCancelledException){var o=RENDERING_CANCELLED_TIMEOUT;return n.extraDelay>0&&n.extraDelay<1e3&&(o+=n.extraDelay),void(r.streamReaderCancelTimeout=setTimeout((function(){r.streamReaderCancelTimeout=null,e._abortOperatorList({intentState:r,reason:n,force:!0})}),o))}}if(r.streamReader.cancel(new _util.AbortException(n.message)).catch((function(){})),r.streamReader=null,!this._transport.destroyed){var s,l=_createForOfIteratorHelper(this._intentStates);try{for(l.s();!(s=l.n()).done;){var u=_slicedToArray(s.value,2),c=u[0];if(u[1]===r){this._intentStates.delete(c);break}}}catch(t){l.e(t)}finally{l.f()}this.cleanup()}}}},{key:"stats",get:function(){return this._stats}}]),t}();exports.PDFPageProxy=PDFPageProxy;var _listeners=new WeakMap,_deferred=new WeakMap,LoopbackPort=function(){function t(){_classCallCheck(this,t),_classPrivateFieldInitSpec(this,_listeners,{writable:!0,value:[]}),_classPrivateFieldInitSpec(this,_deferred,{writable:!0,value:Promise.resolve()})}return _createClass(t,[{key:"postMessage",value:function(t,e){var r=this,n={data:structuredClone(t,e)};_classPrivateFieldGet(this,_deferred).then((function(){var t,e=_createForOfIteratorHelper(_classPrivateFieldGet(r,_listeners));try{for(e.s();!(t=e.n()).done;)t.value.call(r,n)}catch(t){e.e(t)}finally{e.f()}}))}},{key:"addEventListener",value:function(t,e){_classPrivateFieldGet(this,_listeners).push(e)}},{key:"removeEventListener",value:function(t,e){var r=_classPrivateFieldGet(this,_listeners).indexOf(e);_classPrivateFieldGet(this,_listeners).splice(r,1)}},{key:"terminate",value:function(){_classPrivateFieldGet(this,_listeners).length=0}}]),t}();exports.LoopbackPort=LoopbackPort;var PDFWorkerUtil={isWorkerDisabled:!1,fallbackWorkerSrc:null,fakeWorkerId:0};if(exports.PDFWorkerUtil=PDFWorkerUtil,_is_node.isNodeJS&&"function"==typeof require)PDFWorkerUtil.isWorkerDisabled=!0,PDFWorkerUtil.fallbackWorkerSrc="./pdf.worker.js";else if("object"===("undefined"==typeof document?"undefined":_typeof(document))){var _document,_document$currentScri,pdfjsFilePath=null===(_document=document)||void 0===_document||null===(_document$currentScri=_document.currentScript)||void 0===_document$currentScri?void 0:_document$currentScri.src;pdfjsFilePath&&(PDFWorkerUtil.fallbackWorkerSrc=pdfjsFilePath.replace(/(\\.(?:min\\.)?js)(\\?.*)?$/i,".worker$1$2"))}PDFWorkerUtil.isSameOrigin=function(t,e){var r;try{if(!(r=new URL(t)).origin||"null"===r.origin)return!1}catch(t){return!1}var n=new URL(e,r);return r.origin===n.origin},PDFWorkerUtil.createCDNWrapper=function(t){var e='importScripts("'.concat(t,'");');return URL.createObjectURL(new Blob([e]))};var PDFWorker=function(){function PDFWorker(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.name,r=void 0===e?null:e,n=t.port,i=void 0===n?null:n,a=t.verbosity,o=void 0===a?(0,_util.getVerbosityLevel)():a;if(_classCallCheck(this,PDFWorker),i&&_classStaticPrivateFieldSpecGet(PDFWorker,PDFWorker,_workerPorts).has(i))throw new Error("Cannot use more than one PDFWorker per port.");if(this.name=r,this.destroyed=!1,this.verbosity=o,this._readyCapability=(0,_util.createPromiseCapability)(),this._port=null,this._webWorker=null,this._messageHandler=null,i)return _classStaticPrivateFieldSpecGet(PDFWorker,PDFWorker,_workerPorts).set(i,this),void this._initializeFromPort(i);this._initialize()}return _createClass(PDFWorker,[{key:"promise",get:function(){return this._readyCapability.promise}},{key:"port",get:function(){return this._port}},{key:"messageHandler",get:function(){return this._messageHandler}},{key:"_initializeFromPort",value:function(t){this._port=t,this._messageHandler=new _message_handler.MessageHandler("main","worker",t),this._messageHandler.on("ready",(function(){})),this._readyCapability.resolve(),this._messageHandler.send("configure",{verbosity:this.verbosity})}},{key:"_initialize",value:function(){var t=this;if(!PDFWorkerUtil.isWorkerDisabled&&!PDFWorker._mainThreadWorkerMessageHandler){var e=PDFWorker.workerSrc;try{PDFWorkerUtil.isSameOrigin(window.location.href,e)||(e=PDFWorkerUtil.createCDNWrapper(new URL(e,window.location).href));var r=new Worker(e),n=new _message_handler.MessageHandler("main","worker",r),i=function(){r.removeEventListener("error",a),n.destroy(),r.terminate(),t.destroyed?t._readyCapability.reject(new Error("Worker was destroyed")):t._setupFakeWorker()},a=function(){t._webWorker||i()};r.addEventListener("error",a),n.on("test",(function(e){r.removeEventListener("error",a),t.destroyed?i():e?(t._messageHandler=n,t._port=r,t._webWorker=r,t._readyCapability.resolve(),n.send("configure",{verbosity:t.verbosity})):(t._setupFakeWorker(),n.destroy(),r.terminate())})),n.on("ready",(function(e){if(r.removeEventListener("error",a),t.destroyed)i();else try{o()}catch(e){t._setupFakeWorker()}}));var o=function(){var t=new Uint8Array;n.send("test",t,[t.buffer])};return void o()}catch(t){(0,_util.info)("The worker has been disabled.")}}this._setupFakeWorker()}},{key:"_setupFakeWorker",value:function(){var t=this;PDFWorkerUtil.isWorkerDisabled||((0,_util.warn)("Setting up fake worker."),PDFWorkerUtil.isWorkerDisabled=!0),PDFWorker._setupFakeWorkerGlobal.then((function(e){if(t.destroyed)t._readyCapability.reject(new Error("Worker was destroyed"));else{var r=new LoopbackPort;t._port=r;var n="fake".concat(PDFWorkerUtil.fakeWorkerId++),i=new _message_handler.MessageHandler(n+"_worker",n,r);e.setup(i,r);var a=new _message_handler.MessageHandler(n,n+"_worker",r);t._messageHandler=a,t._readyCapability.resolve(),a.send("configure",{verbosity:t.verbosity})}})).catch((function(e){t._readyCapability.reject(new Error('Setting up fake worker failed: "'.concat(e.message,'".')))}))}},{key:"destroy",value:function(){this.destroyed=!0,this._webWorker&&(this._webWorker.terminate(),this._webWorker=null),_classStaticPrivateFieldSpecGet(PDFWorker,PDFWorker,_workerPorts).delete(this._port),this._port=null,this._messageHandler&&(this._messageHandler.destroy(),this._messageHandler=null)}}],[{key:"fromPort",value:function(t){if(null==t||!t.port)throw new Error("PDFWorker.fromPort - invalid method signature.");return _classStaticPrivateFieldSpecGet(this,PDFWorker,_workerPorts).has(t.port)?_classStaticPrivateFieldSpecGet(this,PDFWorker,_workerPorts).get(t.port):new PDFWorker(t)}},{key:"workerSrc",get:function(){if(_worker_options.GlobalWorkerOptions.workerSrc)return _worker_options.GlobalWorkerOptions.workerSrc;if(null!==PDFWorkerUtil.fallbackWorkerSrc)return _is_node.isNodeJS||(0,_display_utils.deprecated)('No "GlobalWorkerOptions.workerSrc" specified.'),PDFWorkerUtil.fallbackWorkerSrc;throw new Error('No "GlobalWorkerOptions.workerSrc" specified.')}},{key:"_mainThreadWorkerMessageHandler",get:function(){try{var t;return(null===(t=globalThis.pdfjsWorker)||void 0===t?void 0:t.WorkerMessageHandler)||null}catch(t){return null}}},{key:"_setupFakeWorkerGlobal",get:function get(){var _this10=this,loader=function(){var _ref15=_asyncToGenerator(_regeneratorRuntime().mark((function _callee3(){var mainWorkerMessageHandler,worker;return _regeneratorRuntime().wrap((function _callee3$(_context3){for(;;)switch(_context3.prev=_context3.next){case 0:if(mainWorkerMessageHandler=_this10._mainThreadWorkerMessageHandler,!mainWorkerMessageHandler){_context3.next=3;break}return _context3.abrupt("return",mainWorkerMessageHandler);case 3:if(!_is_node.isNodeJS||"function"!=typeof require){_context3.next=6;break}return worker=eval("require")(_this10.workerSrc),_context3.abrupt("return",worker.WorkerMessageHandler);case 6:return _context3.next=8,(0,_display_utils.loadScript)(_this10.workerSrc);case 8:return _context3.abrupt("return",window.pdfjsWorker.WorkerMessageHandler);case 9:case"end":return _context3.stop()}}),_callee3)})));return function(){return _ref15.apply(this,arguments)}}();return(0,_util.shadow)(this,"_setupFakeWorkerGlobal",loader())}}]),PDFWorker}();exports.PDFWorker=PDFWorker;var _workerPorts={writable:!0,value:new WeakMap},_docStats=new WeakMap,_pageCache=new WeakMap,_pagePromises=new WeakMap,_metadataPromise=new WeakMap,WorkerTransport=function(){function t(e,r,n,i){_classCallCheck(this,t),_classPrivateFieldInitSpec(this,_docStats,{writable:!0,value:null}),_classPrivateFieldInitSpec(this,_pageCache,{writable:!0,value:new Map}),_classPrivateFieldInitSpec(this,_pagePromises,{writable:!0,value:new Map}),_classPrivateFieldInitSpec(this,_metadataPromise,{writable:!0,value:null}),this.messageHandler=e,this.loadingTask=r,this.commonObjs=new PDFObjects,this.fontLoader=new _font_loader.FontLoader({onUnsupportedFeature:this._onUnsupportedFeature.bind(this),ownerDocument:i.ownerDocument,styleElement:i.styleElement}),this._params=i,i.useWorkerFetch||(this.CMapReaderFactory=new i.CMapReaderFactory({baseUrl:i.cMapUrl,isCompressed:i.cMapPacked}),this.StandardFontDataFactory=new i.StandardFontDataFactory({baseUrl:i.standardFontDataUrl})),this.destroyed=!1,this.destroyCapability=null,this._passwordCapability=null,this._networkStream=n,this._fullReader=null,this._lastProgress=null,this.downloadInfoCapability=(0,_util.createPromiseCapability)(),this.setupMessageHandler()}var e;return _createClass(t,[{key:"annotationStorage",get:function(){return(0,_util.shadow)(this,"annotationStorage",new _annotation_storage.AnnotationStorage)}},{key:"stats",get:function(){return _classPrivateFieldGet(this,_docStats)}},{key:"getRenderingIntent",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:_util.AnnotationMode.ENABLE,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,n=arguments.length>3&&void 0!==arguments[3]&&arguments[3],i=_util.RenderingIntentFlag.DISPLAY,a=null;switch(t){case"any":i=_util.RenderingIntentFlag.ANY;break;case"display":break;case"print":i=_util.RenderingIntentFlag.PRINT;break;default:(0,_util.warn)("getRenderingIntent - invalid intent: ".concat(t))}switch(e){case _util.AnnotationMode.DISABLE:i+=_util.RenderingIntentFlag.ANNOTATIONS_DISABLE;break;case _util.AnnotationMode.ENABLE:break;case _util.AnnotationMode.ENABLE_FORMS:i+=_util.RenderingIntentFlag.ANNOTATIONS_FORMS;break;case _util.AnnotationMode.ENABLE_STORAGE:a=((i+=_util.RenderingIntentFlag.ANNOTATIONS_STORAGE)&_util.RenderingIntentFlag.PRINT&&r instanceof _annotation_storage.PrintAnnotationStorage?r:this.annotationStorage).serializable;break;default:(0,_util.warn)("getRenderingIntent - invalid annotationMode: ".concat(e))}return n&&(i+=_util.RenderingIntentFlag.OPLIST),{renderingIntent:i,cacheKey:"".concat(i,"_").concat(_annotation_storage.AnnotationStorage.getHash(a)),annotationStorageMap:a}}},{key:"destroy",value:function(){var t=this;if(this.destroyCapability)return this.destroyCapability.promise;this.destroyed=!0,this.destroyCapability=(0,_util.createPromiseCapability)(),this._passwordCapability&&this._passwordCapability.reject(new Error("Worker was destroyed during onPassword callback"));var e,r=[],n=_createForOfIteratorHelper(_classPrivateFieldGet(this,_pageCache).values());try{for(n.s();!(e=n.n()).done;){var i=e.value;r.push(i._destroy())}}catch(t){n.e(t)}finally{n.f()}_classPrivateFieldGet(this,_pageCache).clear(),_classPrivateFieldGet(this,_pagePromises).clear(),this.hasOwnProperty("annotationStorage")&&this.annotationStorage.resetModified();var a=this.messageHandler.sendWithPromise("Terminate",null);return r.push(a),Promise.all(r).then((function(){t.commonObjs.clear(),t.fontLoader.clear(),_classPrivateFieldSet(t,_metadataPromise,null),t._getFieldObjectsPromise=null,t._hasJSActionsPromise=null,t._networkStream&&t._networkStream.cancelAllRequests(new _util.AbortException("Worker was terminated.")),t.messageHandler&&(t.messageHandler.destroy(),t.messageHandler=null),t.destroyCapability.resolve()}),this.destroyCapability.reject),this.destroyCapability.promise}},{key:"setupMessageHandler",value:function(){var t=this,e=this.messageHandler,r=this.loadingTask;e.on("GetReader",(function(e,r){(0,_util.assert)(t._networkStream,"GetReader - no \`IPDFStream\` instance available."),t._fullReader=t._networkStream.getFullReader(),t._fullReader.onProgress=function(e){t._lastProgress={loaded:e.loaded,total:e.total}},r.onPull=function(){t._fullReader.read().then((function(t){var e=t.value;t.done?r.close():((0,_util.assert)((0,_util.isArrayBuffer)(e),"GetReader - expected an ArrayBuffer."),r.enqueue(new Uint8Array(e),1,[e]))})).catch((function(t){r.error(t)}))},r.onCancel=function(e){t._fullReader.cancel(e),r.ready.catch((function(e){if(!t.destroyed)throw e}))}})),e.on("ReaderHeadersReady",(function(e){var n=(0,_util.createPromiseCapability)(),i=t._fullReader;return i.headersReady.then((function(){var e;i.isStreamingSupported&&i.isRangeSupported||(t._lastProgress&&(null===(e=r.onProgress)||void 0===e||e.call(r,t._lastProgress)),i.onProgress=function(t){var e;null===(e=r.onProgress)||void 0===e||e.call(r,{loaded:t.loaded,total:t.total})}),n.resolve({isStreamingSupported:i.isStreamingSupported,isRangeSupported:i.isRangeSupported,contentLength:i.contentLength})}),n.reject),n.promise})),e.on("GetRangeReader",(function(e,r){(0,_util.assert)(t._networkStream,"GetRangeReader - no \`IPDFStream\` instance available.");var n=t._networkStream.getRangeReader(e.begin,e.end);n?(r.onPull=function(){n.read().then((function(t){var e=t.value;t.done?r.close():((0,_util.assert)((0,_util.isArrayBuffer)(e),"GetRangeReader - expected an ArrayBuffer."),r.enqueue(new Uint8Array(e),1,[e]))})).catch((function(t){r.error(t)}))},r.onCancel=function(e){n.cancel(e),r.ready.catch((function(e){if(!t.destroyed)throw e}))}):r.close()})),e.on("GetDoc",(function(e){var n=e.pdfInfo;t._numPages=n.numPages,t._htmlForXfa=n.htmlForXfa,delete n.htmlForXfa,r._capability.resolve(new PDFDocumentProxy(n,t))})),e.on("DocException",(function(t){var e;switch(t.name){case"PasswordException":e=new _util.PasswordException(t.message,t.code);break;case"InvalidPDFException":e=new _util.InvalidPDFException(t.message);break;case"MissingPDFException":e=new _util.MissingPDFException(t.message);break;case"UnexpectedResponseException":e=new _util.UnexpectedResponseException(t.message,t.status);break;case"UnknownErrorException":e=new _util.UnknownErrorException(t.message,t.details);break;default:(0,_util.unreachable)("DocException - expected a valid Error.")}r._capability.reject(e)})),e.on("PasswordRequest",(function(e){if(t._passwordCapability=(0,_util.createPromiseCapability)(),r.onPassword)try{r.onPassword((function(e){e instanceof Error?t._passwordCapability.reject(e):t._passwordCapability.resolve({password:e})}),e.code)}catch(e){t._passwordCapability.reject(e)}else t._passwordCapability.reject(new _util.PasswordException(e.message,e.code));return t._passwordCapability.promise})),e.on("DataLoaded",(function(e){var n;null===(n=r.onProgress)||void 0===n||n.call(r,{loaded:e.length,total:e.length}),t.downloadInfoCapability.resolve(e)})),e.on("StartRenderPage",(function(e){t.destroyed||_classPrivateFieldGet(t,_pageCache).get(e.pageIndex)._startRenderPage(e.transparency,e.cacheKey)})),e.on("commonobj",(function(r){var n,i=_slicedToArray(r,3),a=i[0],o=i[1],s=i[2];if(!t.destroyed&&!t.commonObjs.has(a))switch(o){case"Font":var l=t._params;if("error"in s){var u=s.error;(0,_util.warn)("Error during font loading: ".concat(u)),t.commonObjs.resolve(a,u);break}var c=null;l.pdfBug&&null!==(n=globalThis.FontInspector)&&void 0!==n&&n.enabled&&(c={registerFont:function(t,e){globalThis.FontInspector.fontAdded(t,e)}});var h=new _font_loader.FontFaceObject(s,{isEvalSupported:l.isEvalSupported,disableFontFace:l.disableFontFace,ignoreErrors:l.ignoreErrors,onUnsupportedFeature:t._onUnsupportedFeature.bind(t),fontRegistry:c});t.fontLoader.bind(h).catch((function(t){return e.sendWithPromise("FontFallback",{id:a})})).finally((function(){!l.fontExtraProperties&&h.data&&(h.data=null),t.commonObjs.resolve(a,h)}));break;case"FontPath":case"Image":t.commonObjs.resolve(a,s);break;default:throw new Error("Got unknown common object type ".concat(o))}})),e.on("obj",(function(e){var r=_slicedToArray(e,4),n=r[0],i=r[1],a=r[2],o=r[3];if(!t.destroyed){var s=_classPrivateFieldGet(t,_pageCache).get(i);if(!s.objs.has(n))switch(a){case"Image":if(s.objs.resolve(n,o),o){var l;if(o.bitmap){var u=o.bitmap;l=o.width*o.height*4,s._bitmaps.add(u)}else{var c;l=(null===(c=o.data)||void 0===c?void 0:c.length)||0}l>8e6&&(s.cleanupAfterRender=!0)}break;case"Pattern":s.objs.resolve(n,o);break;default:throw new Error("Got unknown object type ".concat(a))}}})),e.on("DocProgress",(function(e){var n;t.destroyed||null===(n=r.onProgress)||void 0===n||n.call(r,{loaded:e.loaded,total:e.total})})),e.on("DocStats",(function(e){t.destroyed||_classPrivateFieldSet(t,_docStats,Object.freeze({streamTypes:Object.freeze(e.streamTypes),fontTypes:Object.freeze(e.fontTypes)}))})),e.on("UnsupportedFeature",this._onUnsupportedFeature.bind(this)),e.on("FetchBuiltInCMap",(function(e){return t.destroyed?Promise.reject(new Error("Worker was destroyed.")):t.CMapReaderFactory?t.CMapReaderFactory.fetch(e):Promise.reject(new Error("CMapReaderFactory not initialized, see the \`useWorkerFetch\` parameter."))})),e.on("FetchStandardFontData",(function(e){return t.destroyed?Promise.reject(new Error("Worker was destroyed.")):t.StandardFontDataFactory?t.StandardFontDataFactory.fetch(e):Promise.reject(new Error("StandardFontDataFactory not initialized, see the \`useWorkerFetch\` parameter."))}))}},{key:"_onUnsupportedFeature",value:function(t){var e,r,n=t.featureId;this.destroyed||null===(e=(r=this.loadingTask).onUnsupportedFeature)||void 0===e||e.call(r,n)}},{key:"getData",value:function(){return this.messageHandler.sendWithPromise("GetData",null)}},{key:"saveDocument",value:function(){var t,e,r=this;return this.annotationStorage.size<=0&&(0,_util.warn)("saveDocument called while \`annotationStorage\` is empty, please use the getData-method instead."),this.messageHandler.sendWithPromise("SaveDocument",{isPureXfa:!!this._htmlForXfa,numPages:this._numPages,annotationStorage:this.annotationStorage.serializable,filename:null!==(t=null===(e=this._fullReader)||void 0===e?void 0:e.filename)&&void 0!==t?t:null}).finally((function(){r.annotationStorage.resetModified()}))}},{key:"getPage",value:function(t){var e=this;if(!Number.isInteger(t)||t<=0||t>this._numPages)return Promise.reject(new Error("Invalid page request."));var r=t-1,n=_classPrivateFieldGet(this,_pagePromises).get(r);if(n)return n;var i=this.messageHandler.sendWithPromise("GetPage",{pageIndex:r}).then((function(t){if(e.destroyed)throw new Error("Transport destroyed");var n=new PDFPageProxy(r,t,e,e._params.ownerDocument,e._params.pdfBug);return _classPrivateFieldGet(e,_pageCache).set(r,n),n}));return _classPrivateFieldGet(this,_pagePromises).set(r,i),i}},{key:"getPageIndex",value:function(t){return"object"!==_typeof(t)||null===t||!Number.isInteger(t.num)||t.num<0||!Number.isInteger(t.gen)||t.gen<0?Promise.reject(new Error("Invalid pageIndex request.")):this.messageHandler.sendWithPromise("GetPageIndex",{num:t.num,gen:t.gen})}},{key:"getAnnotations",value:function(t,e){return this.messageHandler.sendWithPromise("GetAnnotations",{pageIndex:t,intent:e})}},{key:"getFieldObjects",value:function(){return this._getFieldObjectsPromise||(this._getFieldObjectsPromise=this.messageHandler.sendWithPromise("GetFieldObjects",null))}},{key:"hasJSActions",value:function(){return this._hasJSActionsPromise||(this._hasJSActionsPromise=this.messageHandler.sendWithPromise("HasJSActions",null))}},{key:"getCalculationOrderIds",value:function(){return this.messageHandler.sendWithPromise("GetCalculationOrderIds",null)}},{key:"getDestinations",value:function(){return this.messageHandler.sendWithPromise("GetDestinations",null)}},{key:"getDestination",value:function(t){return"string"!=typeof t?Promise.reject(new Error("Invalid destination request.")):this.messageHandler.sendWithPromise("GetDestination",{id:t})}},{key:"getPageLabels",value:function(){return this.messageHandler.sendWithPromise("GetPageLabels",null)}},{key:"getPageLayout",value:function(){return this.messageHandler.sendWithPromise("GetPageLayout",null)}},{key:"getPageMode",value:function(){return this.messageHandler.sendWithPromise("GetPageMode",null)}},{key:"getViewerPreferences",value:function(){return this.messageHandler.sendWithPromise("GetViewerPreferences",null)}},{key:"getOpenAction",value:function(){return this.messageHandler.sendWithPromise("GetOpenAction",null)}},{key:"getAttachments",value:function(){return this.messageHandler.sendWithPromise("GetAttachments",null)}},{key:"getJavaScript",value:function(){return this.messageHandler.sendWithPromise("GetJavaScript",null)}},{key:"getDocJSActions",value:function(){return this.messageHandler.sendWithPromise("GetDocJSActions",null)}},{key:"getPageJSActions",value:function(t){return this.messageHandler.sendWithPromise("GetPageJSActions",{pageIndex:t})}},{key:"getStructTree",value:function(t){return this.messageHandler.sendWithPromise("GetStructTree",{pageIndex:t})}},{key:"getOutline",value:function(){return this.messageHandler.sendWithPromise("GetOutline",null)}},{key:"getOptionalContentConfig",value:function(){return this.messageHandler.sendWithPromise("GetOptionalContentConfig",null).then((function(t){return new _optional_content_config.OptionalContentConfig(t)}))}},{key:"getPermissions",value:function(){return this.messageHandler.sendWithPromise("GetPermissions",null)}},{key:"getMetadata",value:function(){var t=this;return _classPrivateFieldGet(this,_metadataPromise)||_classPrivateFieldSet(this,_metadataPromise,this.messageHandler.sendWithPromise("GetMetadata",null).then((function(e){var r,n,i,a;return{info:e[0],metadata:e[1]?new _metadata.Metadata(e[1]):null,contentDispositionFilename:null!==(r=null===(n=t._fullReader)||void 0===n?void 0:n.filename)&&void 0!==r?r:null,contentLength:null!==(i=null===(a=t._fullReader)||void 0===a?void 0:a.contentLength)&&void 0!==i?i:null}})))}},{key:"getMarkInfo",value:function(){return this.messageHandler.sendWithPromise("GetMarkInfo",null)}},{key:"startCleanup",value:(e=_asyncToGenerator(_regeneratorRuntime().mark((function t(){var e,r,n,i,a=arguments;return _regeneratorRuntime().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(e=a.length>0&&void 0!==a[0]&&a[0],!this.destroyed){t.next=3;break}return t.abrupt("return");case 3:return t.next=5,this.messageHandler.sendWithPromise("Cleanup",null);case 5:r=_createForOfIteratorHelper(_classPrivateFieldGet(this,_pageCache).values()),t.prev=6,r.s();case 8:if((n=r.n()).done){t.next=15;break}if((i=n.value).cleanup()){t.next=13;break}throw new Error("startCleanup: Page ".concat(i.pageNumber," is currently rendering."));case 13:t.next=8;break;case 15:t.next=20;break;case 17:t.prev=17,t.t0=t.catch(6),r.e(t.t0);case 20:return t.prev=20,r.f(),t.finish(20);case 23:this.commonObjs.clear(),e||this.fontLoader.clear(),_classPrivateFieldSet(this,_metadataPromise,null),this._getFieldObjectsPromise=null,this._hasJSActionsPromise=null;case 28:case"end":return t.stop()}}),t,this,[[6,17,20,23]])}))),function(){return e.apply(this,arguments)})},{key:"loadingParams",get:function(){var t=this._params;return(0,_util.shadow)(this,"loadingParams",{disableAutoFetch:t.disableAutoFetch,enableXfa:t.enableXfa})}}]),t}(),_objs=new WeakMap,_ensureObj=new WeakSet,PDFObjects=function(){function t(){_classCallCheck(this,t),_classPrivateMethodInitSpec(this,_ensureObj),_classPrivateFieldInitSpec(this,_objs,{writable:!0,value:Object.create(null)})}return _createClass(t,[{key:"get",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(e){var r=_classPrivateMethodGet(this,_ensureObj,_ensureObj2).call(this,t);return r.capability.promise.then((function(){return e(r.data)})),null}var n=_classPrivateFieldGet(this,_objs)[t];if(null==n||!n.capability.settled)throw new Error("Requesting object that isn't resolved yet ".concat(t,"."));return n.data}},{key:"has",value:function(t){var e=_classPrivateFieldGet(this,_objs)[t];return(null==e?void 0:e.capability.settled)||!1}},{key:"resolve",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,r=_classPrivateMethodGet(this,_ensureObj,_ensureObj2).call(this,t);r.data=e,r.capability.resolve()}},{key:"clear",value:function(){_classPrivateFieldSet(this,_objs,Object.create(null))}}]),t}();function _ensureObj2(t){return _classPrivateFieldGet(this,_objs)[t]||(_classPrivateFieldGet(this,_objs)[t]={capability:(0,_util.createPromiseCapability)(),data:null})}var _internalRenderTask=new WeakMap,RenderTask=function(){function t(e){_classCallCheck(this,t),_classPrivateFieldInitSpec(this,_internalRenderTask,{writable:!0,value:null}),_classPrivateFieldSet(this,_internalRenderTask,e),this.onContinue=null}return _createClass(t,[{key:"promise",get:function(){return _classPrivateFieldGet(this,_internalRenderTask).capability.promise}},{key:"cancel",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;_classPrivateFieldGet(this,_internalRenderTask).cancel(null,t)}},{key:"separateAnnots",get:function(){var t=_classPrivateFieldGet(this,_internalRenderTask).operatorList.separateAnnots;if(!t)return!1;var e=_classPrivateFieldGet(this,_internalRenderTask).annotationCanvasMap;return t.form||t.canvas&&(null==e?void 0:e.size)>0}}]),t}();exports.RenderTask=RenderTask;var InternalRenderTask=function(){function t(e){var r=e.callback,n=e.params,i=e.objs,a=e.commonObjs,o=e.annotationCanvasMap,s=e.operatorList,l=e.pageIndex,u=e.canvasFactory,c=e.useRequestAnimationFrame,h=void 0!==c&&c,f=e.pdfBug,d=void 0!==f&&f,p=e.pageColors,v=void 0===p?null:p;_classCallCheck(this,t),this.callback=r,this.params=n,this.objs=i,this.commonObjs=a,this.annotationCanvasMap=o,this.operatorListIdx=null,this.operatorList=s,this._pageIndex=l,this.canvasFactory=u,this._pdfBug=d,this.pageColors=v,this.running=!1,this.graphicsReadyCallback=null,this.graphicsReady=!1,this._useRequestAnimationFrame=!0===h&&"undefined"!=typeof window,this.cancelled=!1,this.capability=(0,_util.createPromiseCapability)(),this.task=new RenderTask(this),this._cancelBound=this.cancel.bind(this),this._continueBound=this._continue.bind(this),this._scheduleNextBound=this._scheduleNext.bind(this),this._nextBound=this._next.bind(this),this._canvas=n.canvasContext.canvas}var e;return _createClass(t,[{key:"completed",get:function(){return this.capability.promise.catch((function(){}))}},{key:"initializeGraphics",value:function(e){var r,n,i=e.transparency,a=void 0!==i&&i,o=e.optionalContentConfig;if(!this.cancelled){if(this._canvas){if(_classStaticPrivateFieldSpecGet(t,t,_canvasInUse).has(this._canvas))throw new Error("Cannot use the same canvas during multiple render() operations. Use different canvas or ensure previous operations were cancelled or completed.");_classStaticPrivateFieldSpecGet(t,t,_canvasInUse).add(this._canvas)}this._pdfBug&&null!==(r=globalThis.StepperManager)&&void 0!==r&&r.enabled&&(this.stepper=globalThis.StepperManager.create(this._pageIndex),this.stepper.init(this.operatorList),this.stepper.nextBreakPoint=this.stepper.getNextBreakPoint());var s=this.params,l=s.canvasContext,u=s.viewport,c=s.transform,h=s.background;this.gfx=new _canvas.CanvasGraphics(l,this.commonObjs,this.objs,this.canvasFactory,{optionalContentConfig:o},this.annotationCanvasMap,this.pageColors),this.gfx.beginDrawing({transform:c,viewport:u,transparency:a,background:h}),this.operatorListIdx=0,this.graphicsReady=!0,null===(n=this.graphicsReadyCallback)||void 0===n||n.call(this)}}},{key:"cancel",value:function(){var e,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this.running=!1,this.cancelled=!0,null===(e=this.gfx)||void 0===e||e.endDrawing(),this._canvas&&_classStaticPrivateFieldSpecGet(t,t,_canvasInUse).delete(this._canvas),this.callback(r||new _display_utils.RenderingCancelledException("Rendering cancelled, page ".concat(this._pageIndex+1),"canvas",n))}},{key:"operatorListChanged",value:function(){var t;this.graphicsReady?(null===(t=this.stepper)||void 0===t||t.updateOperatorList(this.operatorList),this.running||this._continue()):this.graphicsReadyCallback||(this.graphicsReadyCallback=this._continueBound)}},{key:"_continue",value:function(){this.running=!0,this.cancelled||(this.task.onContinue?this.task.onContinue(this._scheduleNextBound):this._scheduleNext())}},{key:"_scheduleNext",value:function(){var t=this;this._useRequestAnimationFrame?window.requestAnimationFrame((function(){t._nextBound().catch(t._cancelBound)})):Promise.resolve().then(this._nextBound).catch(this._cancelBound)}},{key:"_next",value:(e=_asyncToGenerator(_regeneratorRuntime().mark((function e(){return _regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this.cancelled){e.next=2;break}return e.abrupt("return");case 2:this.operatorListIdx=this.gfx.executeOperatorList(this.operatorList,this.operatorListIdx,this._continueBound,this.stepper),this.operatorListIdx===this.operatorList.argsArray.length&&(this.running=!1,this.operatorList.lastChunk&&(this.gfx.endDrawing(),this._canvas&&_classStaticPrivateFieldSpecGet(t,t,_canvasInUse).delete(this._canvas),this.callback()));case 4:case"end":return e.stop()}}),e,this)}))),function(){return e.apply(this,arguments)})}]),t}(),_canvasInUse={writable:!0,value:new WeakSet},version="3.2.0";exports.version=version;var build="";exports.build=build},(t,e,r)=>{function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}Object.defineProperty(e,"__esModule",{value:!0}),e.PrintAnnotationStorage=e.AnnotationStorage=void 0;var i=r(1),a=r(135),o=r(139);function s(t,e){return s=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},s(t,e)}function l(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function u(t){return u=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},u(t)}function c(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,i,a,o,s=[],l=!0,u=!1;try{if(a=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;l=!1}else for(;!(l=(n=a.call(r)).done)&&(s.push(n.value),s.length!==e);l=!0);}catch(t){u=!0,i=t}finally{try{if(!l&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(u)throw i}}return s}}(t,e)||f(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function h(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=f(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,i=function(){};return{s:i,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,o=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return o=t.done,t},e:function(t){s=!0,a=t},f:function(){try{o||null==r.return||r.return()}finally{if(s)throw a}}}}function f(t,e){if(t){if("string"==typeof t)return d(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?d(t,e):void 0}}function d(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r0?(0,i.objectFromMap)(_(this,k)):null}},{key:"size",get:function(){return _(this,k).size}},{key:"resetModified",value:function(){_(this,A)&&(b(this,A,!1),"function"==typeof this.onResetModified&&this.onResetModified())}},{key:"print",get:function(){return new T(this)}},{key:"serializable",get:function(){if(0===_(this,k).size)return null;var t,e=new Map,r=h(_(this,k));try{for(r.s();!(t=r.n()).done;){var n=c(t.value,2),i=n[0],o=n[1],s=o instanceof a.AnnotationEditor?o.serialize():o;s&&e.set(i,s)}}catch(t){r.e(t)}finally{r.f()}return e}}],[{key:"getHash",value:function(t){if(!t)return"";var e,r=new o.MurmurHash3_64,n=h(t);try{for(n.s();!(e=n.n()).done;){var i=c(e.value,2),a=i[0],s=i[1];r.update("".concat(a,":").concat(JSON.stringify(s)))}}catch(t){n.e(t)}finally{n.f()}return r.hexdigest()}}]),t}();function E(){_(this,A)||(b(this,A,!0),"function"==typeof this.onSetModified&&this.onSetModified())}e.AnnotationStorage=x;var P=new WeakMap,T=function(t){!function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&s(t,e)}(o,t);var e,r,a=(e=o,r=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}(),function(){var t,i=u(e);if(r){var a=u(this).constructor;t=Reflect.construct(i,arguments,a)}else t=i.apply(this,arguments);return function(t,e){if(e&&("object"===n(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return l(t)}(this,t)});function o(t){var e;return p(this,o),m(l(e=a.call(this)),P,{writable:!0,value:null}),b(l(e),P,structuredClone(t.serializable)),e}return y(o,[{key:"print",get:function(){(0,i.unreachable)("Should not call PrintAnnotationStorage.print")}},{key:"serializable",get:function(){return _(this,P)}}]),o}(x);e.PrintAnnotationStorage=T},(t,e,r)=>{function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}Object.defineProperty(e,"__esModule",{value:!0}),e.AnnotationEditor=void 0;var i=r(136),a=r(1);function o(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,i,a,o,s=[],l=!0,u=!1;try{if(a=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;l=!1}else for(;!(l=(n=a.call(r)).done)&&(s.push(n.value),s.length!==e);l=!0);}catch(t){u=!0,i=t}finally{try{if(!l&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(u)throw i}}return s}}(t,e)||function(t,e){if(t){if("string"==typeof t)return s(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?s(t,e):void 0}}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function s(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r{function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}Object.defineProperty(e,"__esModule",{value:!0}),e.KeyboardManager=e.CommandManager=e.ColorManager=e.AnnotationEditorUIManager=void 0,e.bindEvents=function(t,e,r){var n,i=_(r);try{for(i.s();!(n=i.n()).done;){var a=n.value;e.addEventListener(a,t[a].bind(t))}}catch(t){i.e(t)}finally{i.f()}},e.opacityToHex=function(t){return Math.round(Math.min(255,Math.max(1,255*t))).toString(16).padStart(2,"0")};var i=r(1),a=r(137);function o(t){return function(t){if(Array.isArray(t))return A(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||w(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function s(t,e,r){return(e=p(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function l(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,i,a,o,s=[],l=!0,u=!1;try{if(a=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;l=!1}else for(;!(l=(n=a.call(r)).done)&&(s.push(n.value),s.length!==e);l=!0);}catch(t){u=!0,i=t}finally{try{if(!l&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(u)throw i}}return s}}(t,e)||w(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function u(t,e){y(t,e),e.add(t)}function c(t,e,r){if(!e.has(t))throw new TypeError("attempted to get private field on non-instance");return r}function h(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function f(t,e){for(var r=0;r=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,o=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return o=t.done,t},e:function(t){s=!0,a=t},f:function(){try{o||null==r.return||r.return()}finally{if(s)throw a}}}}function w(t,e){if(t){if("string"==typeof t)return A(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?A(t,e):void 0}}function A(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r0&&void 0!==arguments[0]?arguments[0]:128;h(this,t),v(this,x,{writable:!0,value:[]}),v(this,E,{writable:!0,value:!1}),v(this,P,{writable:!0,value:void 0}),v(this,T,{writable:!0,value:-1}),m(this,P,e)}return d(t,[{key:"add",value:function(t){var e=t.cmd,r=t.undo,n=t.mustExec,i=t.type,a=void 0===i?NaN:i,o=t.overwriteIfSameType,s=void 0!==o&&o,l=t.keepUndo,u=void 0!==l&&l;if(n&&e(),!g(this,E)){var c={cmd:e,undo:r,type:a};if(-1===g(this,T))return g(this,x).length>0&&(g(this,x).length=0),m(this,T,0),void g(this,x).push(c);if(s&&g(this,x)[g(this,T)].type===a)return u&&(c.undo=g(this,x)[g(this,T)].undo),void(g(this,x)[g(this,T)]=c);var h=g(this,T)+1;h===g(this,P)?g(this,x).splice(0,1):(m(this,T,h),h{Object.defineProperty(e,"__esModule",{value:!0}),e.StatTimer=e.RenderingCancelledException=e.PixelsPerInch=e.PageViewport=e.PDFDateString=e.DOMStandardFontDataFactory=e.DOMSVGFactory=e.DOMCanvasFactory=e.DOMCMapReaderFactory=e.AnnotationPrefix=void 0,e.deprecated=function(t){console.log("Deprecated API usage: "+t)},e.getColorValues=function(t){var e=document.createElement("span");e.style.visibility="hidden",document.body.append(e);var r,n=s(t.keys());try{for(n.s();!(r=n.n()).done;){var i=r.value;e.style.color=i;var a=window.getComputedStyle(e).color;t.set(i,I(a))}}catch(t){n.e(t)}finally{n.f()}e.remove()},e.getCurrentTransform=function(t){var e=t.getTransform();return[e.a,e.b,e.c,e.d,e.e,e.f]},e.getCurrentTransformInverse=function(t){var e=t.getTransform().invertSelf();return[e.a,e.b,e.c,e.d,e.e,e.f]},e.getFilenameFromUrl=function(t){if(!(arguments.length>1&&void 0!==arguments[1]&&arguments[1])){var e=t.split(/[#?]/,1);t=(1,function(t){if(Array.isArray(t))return t}(r=e)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,i,a,o,s=[],l=!0,u=!1;try{for(a=(r=r.call(t)).next,0;!(l=(n=a.call(r)).done)&&(s.push(n.value),1!==s.length);l=!0);}catch(t){u=!0,i=t}finally{try{if(!l&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(u)throw i}}return s}}(r)||l(r,1)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())[0]}var r;return t.substring(t.lastIndexOf("/")+1)},e.getPdfFilenameFromUrl=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"document.pdf";if("string"!=typeof t)return e;if(C(t))return(0,i.warn)('getPdfFilenameFromUrl: ignore "data:"-URL for performance reasons.'),e;var r=/[^/?#=]+\\.pdf\\b(?!.*\\.pdf\\b)/i,n=/^(?:(?:[^:]+:)?\\/\\/[^/]+)?([^?#]*)(\\?[^#]*)?(#.*)?$/.exec(t),a=r.exec(n[1])||r.exec(n[2])||r.exec(n[3]);if(a&&(a=a[0]).includes("%"))try{a=r.exec(decodeURIComponent(a))[0]}catch(t){}return a||e},e.getRGB=I,e.getXfaPageViewport=function(t,e){var r=e.scale,n=void 0===r?1:r,i=e.rotation,a=void 0===i?0:i,o=t.attributes.style,s=o.width,l=o.height,u=[0,0,parseInt(s),parseInt(l)];return new P({viewBox:u,scale:n,rotation:a})},e.isDataScheme=C,e.isPdfFile=function(t){return"string"==typeof t&&/\\.pdf$/i.test(t)},e.isValidFetchUrl=M,e.loadScript=function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return new Promise((function(r,n){var i=document.createElement("script");i.src=t,i.onload=function(t){e&&i.remove(),r(t)},i.onerror=function(){n(new Error("Cannot load script at: ".concat(i.src)))},(document.head||document.documentElement).append(i)}))},e.setLayerDimensions=function(t,e){var r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];if(e instanceof P){var i=e.rawDims,a=i.pageWidth,o=i.pageHeight,s=t.style,l="calc(var(--scale-factor) * ".concat(a,"px)"),u="calc(var(--scale-factor) * ".concat(o,"px)");r&&e.rotation%180!=0?(s.width=u,s.height=l):(s.width=l,s.height=u)}n&&t.setAttribute("data-main-rotation",e.rotation)};var n=r(138),i=r(1);function a(){a=function(){return t};var t={},e=Object.prototype,r=e.hasOwnProperty,n=Object.defineProperty||function(t,e,r){t[e]=r.value},i="function"==typeof Symbol?Symbol:{},s=i.iterator||"@@iterator",l=i.asyncIterator||"@@asyncIterator",u=i.toStringTag||"@@toStringTag";function c(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{c({},"")}catch(t){c=function(t,e,r){return t[e]=r}}function h(t,e,r,i){var a=e&&e.prototype instanceof p?e:p,o=Object.create(a.prototype),s=new P(i||[]);return n(o,"_invoke",{value:k(t,r,s)}),o}function f(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}t.wrap=h;var d={};function p(){}function v(){}function y(){}var m={};c(m,s,(function(){return this}));var g=Object.getPrototypeOf,b=g&&g(g(T([])));b&&b!==e&&r.call(b,s)&&(m=b);var _=y.prototype=p.prototype=Object.create(m);function w(t){["next","throw","return"].forEach((function(e){c(t,e,(function(t){return this._invoke(e,t)}))}))}function A(t,e){function i(n,a,s,l){var u=f(t[n],t,a);if("throw"!==u.type){var c=u.arg,h=c.value;return h&&"object"==o(h)&&r.call(h,"__await")?e.resolve(h.__await).then((function(t){i("next",t,s,l)}),(function(t){i("throw",t,s,l)})):e.resolve(h).then((function(t){c.value=t,s(c)}),(function(t){return i("throw",t,s,l)}))}l(u.arg)}var a;n(this,"_invoke",{value:function(t,r){function n(){return new e((function(e,n){i(t,r,e,n)}))}return a=a?a.then(n,n):n()}})}function k(t,e,r){var n="suspendedStart";return function(i,a){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===i)throw a;return{value:void 0,done:!0}}for(r.method=i,r.arg=a;;){var o=r.delegate;if(o){var s=S(o,r);if(s){if(s===d)continue;return s}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var l=f(t,e,r);if("normal"===l.type){if(n=r.done?"completed":"suspendedYield",l.arg===d)continue;return{value:l.arg,done:r.done}}"throw"===l.type&&(n="completed",r.method="throw",r.arg=l.arg)}}}function S(t,e){var r=e.method,n=t.iterator[r];if(void 0===n)return e.delegate=null,"throw"===r&&t.iterator.return&&(e.method="return",e.arg=void 0,S(t,e),"throw"===e.method)||"return"!==r&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+r+"' method")),d;var i=f(n,t.iterator,e.arg);if("throw"===i.type)return e.method="throw",e.arg=i.arg,e.delegate=null,d;var a=i.arg;return a?a.done?(e[t.resultName]=a.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,d):a:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,d)}function x(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function E(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function P(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(x,this),this.reset(!0)}function T(t){if(t){var e=t[s];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var n=-1,i=function e(){for(;++n=0;--i){var a=this.tryEntries[i],o=a.completion;if("root"===a.tryLoc)return n("end");if(a.tryLoc<=this.prev){var s=r.call(a,"catchLoc"),l=r.call(a,"finallyLoc");if(s&&l){if(this.prev=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&r.call(i,"finallyLoc")&&this.prev=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),E(r),d}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var i=n.arg;E(r)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:T(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=void 0),d}},t}function o(t){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},o(t)}function s(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=l(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,i=function(){};return{s:i,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,o=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return o=t.done,t},e:function(t){s=!0,a=t},f:function(){try{o||null==r.return||r.return()}finally{if(s)throw a}}}}function l(t,e){if(t){if("string"==typeof t)return u(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?u(t,e):void 0}}function u(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r0&&void 0!==arguments[0]?arguments[0]:{}).ownerDocument,i=void 0===n?globalThis.document:n;return m(this,r),(t=e.call(this))._document=i,t}return y(r,[{key:"_createCanvas",value:function(t,e){var r=this._document.createElement("canvas");return r.width=t,r.height=e,r}}]),r}(n.BaseCanvasFactory);function A(t){return k.apply(this,arguments)}function k(){var t;return t=a().mark((function t(e){var r,n,o=arguments;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(r=o.length>1&&void 0!==o[1]&&o[1],!M(e,document.baseURI)){t.next=21;break}return t.next=4,fetch(e);case 4:if((n=t.sent).ok){t.next=7;break}throw new Error(n.statusText);case 7:if(!r){t.next=15;break}return t.t1=Uint8Array,t.next=11,n.arrayBuffer();case 11:t.t2=t.sent,t.t0=new t.t1(t.t2),t.next=20;break;case 15:return t.t3=i.stringToBytes,t.next=18,n.text();case 18:t.t4=t.sent,t.t0=(0,t.t3)(t.t4);case 20:return t.abrupt("return",t.t0);case 21:return t.abrupt("return",new Promise((function(t,n){var a=new XMLHttpRequest;a.open("GET",e,!0),r&&(a.responseType="arraybuffer"),a.onreadystatechange=function(){if(a.readyState===XMLHttpRequest.DONE){var e;if((200===a.status||0===a.status)&&(r&&a.response?e=new Uint8Array(a.response):!r&&a.responseText&&(e=(0,i.stringToBytes)(a.responseText)),e))return void t(e);n(new Error(a.statusText))}},a.send(null)})));case 22:case"end":return t.stop()}}),t)})),k=function(){var e=this,r=arguments;return new Promise((function(n,i){var a=t.apply(e,r);function o(t){c(a,n,i,o,s,"next",t)}function s(t){c(a,n,i,o,s,"throw",t)}o(void 0)}))},k.apply(this,arguments)}e.DOMCanvasFactory=w;var S=function(t){h(r,t);var e=d(r);function r(){return m(this,r),e.apply(this,arguments)}return y(r,[{key:"_fetchData",value:function(t,e){return A(t,this.isCompressed).then((function(t){return{cMapData:t,compressionType:e}}))}}]),r}(n.BaseCMapReaderFactory);e.DOMCMapReaderFactory=S;var x=function(t){h(r,t);var e=d(r);function r(){return m(this,r),e.apply(this,arguments)}return y(r,[{key:"_fetchData",value:function(t){return A(t,!0)}}]),r}(n.BaseStandardFontDataFactory);e.DOMStandardFontDataFactory=x;var E=function(t){h(r,t);var e=d(r);function r(){return m(this,r),e.apply(this,arguments)}return y(r,[{key:"_createSVG",value:function(t){return document.createElementNS("http://www.w3.org/2000/svg",t)}}]),r}(n.BaseSVGFactory);e.DOMSVGFactory=E;var P=function(){function t(e){var r=e.viewBox,n=e.scale,i=e.rotation,a=e.offsetX,o=void 0===a?0:a,s=e.offsetY,l=void 0===s?0:s,u=e.dontFlip,c=void 0!==u&&u;m(this,t),this.viewBox=r,this.scale=n,this.rotation=i,this.offsetX=o,this.offsetY=l;var h,f,d,p,v,y,g,b,_=(r[2]+r[0])/2,w=(r[3]+r[1])/2;switch((i%=360)<0&&(i+=360),i){case 180:h=-1,f=0,d=0,p=1;break;case 90:h=0,f=1,d=1,p=0;break;case 270:h=0,f=-1,d=-1,p=0;break;case 0:h=1,f=0,d=0,p=-1;break;default:throw new Error("PageViewport: Invalid rotation, must be a multiple of 90 degrees.")}c&&(d=-d,p=-p),0===h?(v=Math.abs(w-r[1])*n+o,y=Math.abs(_-r[0])*n+l,g=(r[3]-r[1])*n,b=(r[2]-r[0])*n):(v=Math.abs(_-r[0])*n+o,y=Math.abs(w-r[1])*n+l,g=(r[2]-r[0])*n,b=(r[3]-r[1])*n),this.transform=[h*n,f*n,d*n,p*n,v-h*n*_-d*n*w,y-f*n*_-p*n*w],this.width=g,this.height=b}return y(t,[{key:"rawDims",get:function(){var t=this.viewBox;return(0,i.shadow)(this,"rawDims",{pageWidth:t[2]-t[0],pageHeight:t[3]-t[1],pageX:t[0],pageY:t[1]})}},{key:"clone",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=e.scale,n=void 0===r?this.scale:r,i=e.rotation,a=void 0===i?this.rotation:i,o=e.offsetX,s=void 0===o?this.offsetX:o,l=e.offsetY,u=void 0===l?this.offsetY:l,c=e.dontFlip,h=void 0!==c&&c;return new t({viewBox:this.viewBox.slice(),scale:n,rotation:a,offsetX:s,offsetY:u,dontFlip:h})}},{key:"convertToViewportPoint",value:function(t,e){return i.Util.applyTransform([t,e],this.transform)}},{key:"convertToViewportRectangle",value:function(t){var e=i.Util.applyTransform([t[0],t[1]],this.transform),r=i.Util.applyTransform([t[2],t[3]],this.transform);return[e[0],e[1],r[0],r[1]]}},{key:"convertToPdfPoint",value:function(t,e){return i.Util.applyInverseTransform([t,e],this.transform)}}]),t}();e.PageViewport=P;var T=function(t){h(r,t);var e=d(r);function r(t,n){var i,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;return m(this,r),(i=e.call(this,t,"RenderingCancelledException")).type=n,i.extraDelay=a,i}return y(r)}(i.BaseException);function C(t){for(var e=t.length,r=0;r=1&&n<=12?n-1:0;var i=parseInt(e[3],10);i=i>=1&&i<=31?i:1;var a=parseInt(e[4],10);a=a>=0&&a<=23?a:0;var o=parseInt(e[5],10);o=o>=0&&o<=59?o:0;var s=parseInt(e[6],10);s=s>=0&&s<=59?s:0;var l=e[7]||"Z",u=parseInt(e[8],10);u=u>=0&&u<=23?u:0;var c=parseInt(e[9],10)||0;return c=c>=0&&c<=59?c:0,"-"===l?(a+=u,o+=c):"+"===l&&(a-=u,o-=c),new Date(Date.UTC(r,n,i,a,o,s))}}]),t}();function I(t){if(t.startsWith("#")){var e=parseInt(t.slice(1),16);return[(16711680&e)>>16,(65280&e)>>8,255&e]}return t.startsWith("rgb(")?t.slice(4,-1).split(",").map((function(t){return parseInt(t)})):t.startsWith("rgba(")?t.slice(5,-1).split(",").map((function(t){return parseInt(t)})).slice(0,3):((0,i.warn)('Not a valid color format: "'.concat(t,'"')),[0,0,0])}e.PDFDateString=R},(t,e,r)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.BaseStandardFontDataFactory=e.BaseSVGFactory=e.BaseCanvasFactory=e.BaseCMapReaderFactory=void 0;var n=r(1);function i(){i=function(){return t};var t={},e=Object.prototype,r=e.hasOwnProperty,n=Object.defineProperty||function(t,e,r){t[e]=r.value},a="function"==typeof Symbol?Symbol:{},o=a.iterator||"@@iterator",l=a.asyncIterator||"@@asyncIterator",u=a.toStringTag||"@@toStringTag";function c(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{c({},"")}catch(t){c=function(t,e,r){return t[e]=r}}function h(t,e,r,i){var a=e&&e.prototype instanceof p?e:p,o=Object.create(a.prototype),s=new P(i||[]);return n(o,"_invoke",{value:k(t,r,s)}),o}function f(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}t.wrap=h;var d={};function p(){}function v(){}function y(){}var m={};c(m,o,(function(){return this}));var g=Object.getPrototypeOf,b=g&&g(g(T([])));b&&b!==e&&r.call(b,o)&&(m=b);var _=y.prototype=p.prototype=Object.create(m);function w(t){["next","throw","return"].forEach((function(e){c(t,e,(function(t){return this._invoke(e,t)}))}))}function A(t,e){function i(n,a,o,l){var u=f(t[n],t,a);if("throw"!==u.type){var c=u.arg,h=c.value;return h&&"object"==s(h)&&r.call(h,"__await")?e.resolve(h.__await).then((function(t){i("next",t,o,l)}),(function(t){i("throw",t,o,l)})):e.resolve(h).then((function(t){c.value=t,o(c)}),(function(t){return i("throw",t,o,l)}))}l(u.arg)}var a;n(this,"_invoke",{value:function(t,r){function n(){return new e((function(e,n){i(t,r,e,n)}))}return a=a?a.then(n,n):n()}})}function k(t,e,r){var n="suspendedStart";return function(i,a){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===i)throw a;return{value:void 0,done:!0}}for(r.method=i,r.arg=a;;){var o=r.delegate;if(o){var s=S(o,r);if(s){if(s===d)continue;return s}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var l=f(t,e,r);if("normal"===l.type){if(n=r.done?"completed":"suspendedYield",l.arg===d)continue;return{value:l.arg,done:r.done}}"throw"===l.type&&(n="completed",r.method="throw",r.arg=l.arg)}}}function S(t,e){var r=e.method,n=t.iterator[r];if(void 0===n)return e.delegate=null,"throw"===r&&t.iterator.return&&(e.method="return",e.arg=void 0,S(t,e),"throw"===e.method)||"return"!==r&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+r+"' method")),d;var i=f(n,t.iterator,e.arg);if("throw"===i.type)return e.method="throw",e.arg=i.arg,e.delegate=null,d;var a=i.arg;return a?a.done?(e[t.resultName]=a.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,d):a:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,d)}function x(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function E(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function P(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(x,this),this.reset(!0)}function T(t){if(t){var e=t[o];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var n=-1,i=function e(){for(;++n=0;--i){var a=this.tryEntries[i],o=a.completion;if("root"===a.tryLoc)return n("end");if(a.tryLoc<=this.prev){var s=r.call(a,"catchLoc"),l=r.call(a,"finallyLoc");if(s&&l){if(this.prev=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&r.call(i,"finallyLoc")&&this.prev=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),E(r),d}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var i=n.arg;E(r)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:T(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=void 0),d}},t}function a(t,e,r,n,i,a,o){try{var s=t[a](o),l=s.value}catch(t){return void r(t)}s.done?e(l):Promise.resolve(l).then(n,i)}function o(t){return function(){var e=this,r=arguments;return new Promise((function(n,i){var o=t.apply(e,r);function s(t){a(o,n,i,s,l,"next",t)}function l(t){a(o,n,i,s,l,"throw",t)}s(void 0)}))}}function s(t){return s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},s(t)}function l(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function u(t,e){for(var r=0;r2&&void 0!==arguments[2]&&arguments[2];if(t<=0||e<=0)throw new Error("Invalid SVG dimensions");var n=this._createSVG("svg:svg");return n.setAttribute("version","1.1"),r||(n.setAttribute("width","".concat(t,"px")),n.setAttribute("height","".concat(e,"px"))),n.setAttribute("preserveAspectRatio","none"),n.setAttribute("viewBox","0 0 ".concat(t," ").concat(e)),n}},{key:"createElement",value:function(t){if("string"!=typeof t)throw new Error("Invalid SVG element type");return this._createSVG(t)}},{key:"_createSVG",value:function(t){(0,n.unreachable)("Abstract method \`_createSVG\` called.")}}]),t}();e.BaseSVGFactory=p},(t,e,r)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.MurmurHash3_64=void 0;var n=r(1);function i(t){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function a(t,e){for(var r=0;r>>8,e[r++]=255&o)}}else{if(!(0,n.isArrayBuffer)(t))throw new Error("Wrong data format in MurmurHash3_64_update. Input must be a string or array.");r=(e=t.slice()).byteLength}for(var u=r>>2,c=r-4*u,h=new Uint32Array(e.buffer,0,u),f=0,d=0,p=this.h1,v=this.h2,y=3432918353,m=461845907,g=11601,b=13715,_=0;_>>17)*m&s|f*b&l)<<13|p>>>19)+3864292196:v=5*(v=(v^=d=(d=(d=(d=h[_])*y&s|d*g&l)<<15|d>>>17)*m&s|d*b&l)<<13|v>>>19)+3864292196;switch(f=0,c){case 3:f^=e[4*u+2]<<16;case 2:f^=e[4*u+1]<<8;case 1:f=(f=(f=(f^=e[4*u])*y&s|f*g&l)<<15|f>>>17)*m&s|f*b&l,1&u?p^=f:v^=f}this.h1=p,this.h2=v}},{key:"hexdigest",value:function(){var t=this.h1,e=this.h2;return t=3981806797*(t^=e>>>1)&s|36045*t&l,t=444984403*(t^=(e=4283543511*e&s|(2950163797*(e<<16|t>>>16)&s)>>>16)>>>1)&s|60499*t&l,((t^=(e=3301882366*e&s|(3120437893*(e<<16|t>>>16)&s)>>>16)>>>1)>>>0).toString(16).padStart(8,"0")+(e>>>0).toString(16).padStart(8,"0")}}])&&a(e.prototype,r),Object.defineProperty(e,"prototype",{writable:!1}),t}();e.MurmurHash3_64=u},(t,e,r)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.FontLoader=e.FontFaceObject=void 0;var n=r(1),i=r(3);function a(t){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},a(t)}function o(){o=function(){return t};var t={},e=Object.prototype,r=e.hasOwnProperty,n=Object.defineProperty||function(t,e,r){t[e]=r.value},i="function"==typeof Symbol?Symbol:{},s=i.iterator||"@@iterator",l=i.asyncIterator||"@@asyncIterator",u=i.toStringTag||"@@toStringTag";function c(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{c({},"")}catch(t){c=function(t,e,r){return t[e]=r}}function h(t,e,r,i){var a=e&&e.prototype instanceof p?e:p,o=Object.create(a.prototype),s=new P(i||[]);return n(o,"_invoke",{value:k(t,r,s)}),o}function f(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}t.wrap=h;var d={};function p(){}function v(){}function y(){}var m={};c(m,s,(function(){return this}));var g=Object.getPrototypeOf,b=g&&g(g(T([])));b&&b!==e&&r.call(b,s)&&(m=b);var _=y.prototype=p.prototype=Object.create(m);function w(t){["next","throw","return"].forEach((function(e){c(t,e,(function(t){return this._invoke(e,t)}))}))}function A(t,e){function i(n,o,s,l){var u=f(t[n],t,o);if("throw"!==u.type){var c=u.arg,h=c.value;return h&&"object"==a(h)&&r.call(h,"__await")?e.resolve(h.__await).then((function(t){i("next",t,s,l)}),(function(t){i("throw",t,s,l)})):e.resolve(h).then((function(t){c.value=t,s(c)}),(function(t){return i("throw",t,s,l)}))}l(u.arg)}var o;n(this,"_invoke",{value:function(t,r){function n(){return new e((function(e,n){i(t,r,e,n)}))}return o=o?o.then(n,n):n()}})}function k(t,e,r){var n="suspendedStart";return function(i,a){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===i)throw a;return{value:void 0,done:!0}}for(r.method=i,r.arg=a;;){var o=r.delegate;if(o){var s=S(o,r);if(s){if(s===d)continue;return s}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var l=f(t,e,r);if("normal"===l.type){if(n=r.done?"completed":"suspendedYield",l.arg===d)continue;return{value:l.arg,done:r.done}}"throw"===l.type&&(n="completed",r.method="throw",r.arg=l.arg)}}}function S(t,e){var r=e.method,n=t.iterator[r];if(void 0===n)return e.delegate=null,"throw"===r&&t.iterator.return&&(e.method="return",e.arg=void 0,S(t,e),"throw"===e.method)||"return"!==r&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+r+"' method")),d;var i=f(n,t.iterator,e.arg);if("throw"===i.type)return e.method="throw",e.arg=i.arg,e.delegate=null,d;var a=i.arg;return a?a.done?(e[t.resultName]=a.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,d):a:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,d)}function x(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function E(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function P(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(x,this),this.reset(!0)}function T(t){if(t){var e=t[s];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var n=-1,i=function e(){for(;++n=0;--i){var a=this.tryEntries[i],o=a.completion;if("root"===a.tryLoc)return n("end");if(a.tryLoc<=this.prev){var s=r.call(a,"catchLoc"),l=r.call(a,"finallyLoc");if(s&&l){if(this.prev=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&r.call(i,"finallyLoc")&&this.prev=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),E(r),d}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var i=n.arg;E(r)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:T(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=void 0),d}},t}function s(t,e,r,n,i,a,o){try{var s=t[a](o),l=s.value}catch(t){return void r(t)}s.done?e(l):Promise.resolve(l).then(n,i)}function l(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=function(t,e){if(t){if("string"==typeof t)return u(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?u(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,i=function(){};return{s:i,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,o=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return o=t.done,t},e:function(t){s=!0,a=t},f:function(){try{o||null==r.return||r.return()}finally{if(s)throw a}}}}function u(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r0&&e[0].done;){var t=e.shift();setTimeout(t.callback,0)}},callback:t};return e.push(r),r}},{key:"_loadTestFont",get:function(){var t=atob("T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQAFQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAAALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgAAAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACMAooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4DIP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAAAAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUAAQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgABAAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABYAAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAAAC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAAAAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQACAQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTjFQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==");return(0,n.shadow)(this,"_loadTestFont",t)}},{key:"_prepareFontLoadEvent",value:function(t,e){function r(t,e){return t.charCodeAt(e)<<24|t.charCodeAt(e+1)<<16|t.charCodeAt(e+2)<<8|255&t.charCodeAt(e+3)}function i(t,e,r,n){return t.substring(0,e)+n+t.substring(e+r)}var a,o,s=this._document.createElement("canvas");s.width=1,s.height=1;var l=s.getContext("2d"),u=0,c="lt".concat(Date.now()).concat(this.loadTestFontId++),h=this._loadTestFont,f=1482184792,d=r(h=i(h,976,c.length,c),16);for(a=0,o=c.length-3;a30)return(0,n.warn)("Load test font never loaded."),void r();l.font="30px "+e,l.fillText(".",0,20),l.getImageData(0,0,1,1).data[3]>0?r():setTimeout(t.bind(null,e,r))}(c,(function(){y.remove(),e.complete()}))}}]),t}();e.FontLoader=d;var p=function(){function t(e,r){var n=r.isEvalSupported,i=void 0===n||n,a=r.disableFontFace,o=void 0!==a&&a,s=r.ignoreErrors,l=void 0!==s&&s,u=r.onUnsupportedFeature,h=r.fontRegistry,f=void 0===h?null:h;for(var d in c(this,t),this.compiledGlyphs=Object.create(null),e)this[d]=e[d];this.isEvalSupported=!1!==i,this.disableFontFace=!0===o,this.ignoreErrors=!0===l,this._onUnsupportedFeature=u,this.fontRegistry=f}return f(t,[{key:"createNativeFontFace",value:function(){var t,e;if(!this.data||this.disableFontFace)return null;if(this.cssFontInfo){var r={weight:this.cssFontInfo.fontWeight};this.cssFontInfo.italicAngle&&(r.style="oblique ".concat(this.cssFontInfo.italicAngle,"deg")),e=new FontFace(this.cssFontInfo.fontFamily,this.data,r)}else e=new FontFace(this.loadedName,this.data,{});return null===(t=this.fontRegistry)||void 0===t||t.registerFont(this),e}},{key:"createFontFaceRule",value:function(){var t;if(!this.data||this.disableFontFace)return null;var e,r=(0,n.bytesToString)(this.data),i="url(data:".concat(this.mimetype,";base64,").concat(btoa(r),");");if(this.cssFontInfo){var a="font-weight: ".concat(this.cssFontInfo.fontWeight,";");this.cssFontInfo.italicAngle&&(a+="font-style: oblique ".concat(this.cssFontInfo.italicAngle,"deg;")),e='@font-face {font-family:"'.concat(this.cssFontInfo.fontFamily,'";').concat(a,"src:").concat(i,"}")}else e='@font-face {font-family:"'.concat(this.loadedName,'";src:').concat(i,"}");return null===(t=this.fontRegistry)||void 0===t||t.registerFont(this,i),e}},{key:"getPathGenerator",value:function(t,e){if(void 0!==this.compiledGlyphs[e])return this.compiledGlyphs[e];var r;try{r=t.get(this.loadedName+"_path_"+e)}catch(t){if(!this.ignoreErrors)throw t;return this._onUnsupportedFeature({featureId:n.UNSUPPORTED_FEATURES.errorFontGetPath}),(0,n.warn)('getPathGenerator - ignoring character: "'.concat(t,'".')),this.compiledGlyphs[e]=function(t,e){}}if(this.isEvalSupported&&n.FeatureTest.isEvalSupported){var i,a=[],o=l(r);try{for(o.s();!(i=o.n()).done;){var s=i.value,u=void 0!==s.args?s.args.join(","):"";a.push("c.",s.cmd,"(",u,");\\n")}}catch(t){o.e(t)}finally{o.f()}return this.compiledGlyphs[e]=new Function("c","size",a.join(""))}return this.compiledGlyphs[e]=function(t,e){var n,i=l(r);try{for(i.s();!(n=i.n()).done;){var a=n.value;"scale"===a.cmd&&(a.args=[e,-e]),t[a.cmd].apply(t,a.args)}}catch(t){i.e(t)}finally{i.f()}}}}]),t}();e.FontFaceObject=p},(t,e,r)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.CanvasGraphics=void 0;var n=r(1),i=r(137),a=r(142),o=r(143),s=r(3);function l(t){return function(t){if(Array.isArray(t))return d(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||f(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function u(t,e,r){if(!e.has(t))throw new TypeError("attempted to get private field on non-instance");return r}function c(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=f(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,i=function(){};return{s:i,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,o=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return o=t.done,t},e:function(t){s=!0,a=t},f:function(){try{o||null==r.return||r.return()}finally{if(s)throw a}}}}function h(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,i,a,o,s=[],l=!0,u=!1;try{if(a=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;l=!1}else for(;!(l=(n=a.call(r)).done)&&(s.push(n.value),s.length!==e);l=!0);}catch(t){u=!0,i=t}finally{try{if(!l&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(u)throw i}}return s}}(t,e)||f(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function f(t,e){if(t){if("string"==typeof t)return d(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?d(t,e):void 0}}function d(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r0&&void 0!==arguments[0]?arguments[0]:a.PathType.FILL,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,r=[this.minX,this.minY,this.maxX,this.maxY];if(t===a.PathType.STROKE){e||(0,n.unreachable)("Stroke bounding box must include transform.");var i=n.Util.singularValueDecompose2dScale(e),o=i[0]*this.lineWidth/2,s=i[1]*this.lineWidth/2;r[0]-=o,r[1]-=s,r[2]+=o,r[3]+=s}return r}},{key:"updateClipFromPath",value:function(){var t=n.Util.intersect(this.clipBox,this.getPathBoundingBox());this.startNewPathAndClipBox(t||[0,0,0,0])}},{key:"isEmptyClip",value:function(){return this.minX===1/0}},{key:"startNewPathAndClipBox",value:function(t){this.clipBox=t,this.minX=1/0,this.minY=1/0,this.maxX=0,this.maxY=0}},{key:"getClippedPathBoundingBox",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:a.PathType.FILL,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return n.Util.intersect(this.clipBox,this.getPathBoundingBox(t,e))}}]),t}();function S(t,e){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;if("undefined"!=typeof ImageData&&e instanceof ImageData)t.putImageData(e,0,0);else{var i,a,o,s,l,u,c,h,f,d=e.height,p=e.width,v=d%_,y=(d-v)/_,m=0===v?y:y+1,g=t.createImageData(p,_),b=0,w=e.data,A=g.data;if(r)switch(r.length){case 1:u=r[0],c=r[0],h=r[0],f=r[0];break;case 4:u=r[0],c=r[1],h=r[2],f=r[3]}if(e.kind===n.ImageKind.GRAYSCALE_1BPP){var k=w.byteLength,S=new Uint32Array(A.buffer,0,A.byteLength>>2),x=S.length,E=p+7>>3,P=4294967295,T=n.FeatureTest.isLittleEndian?4278190080:255;if(f&&255===f[0]&&0===f[255]){var C=[T,P];P=C[0],T=C[1]}for(a=0;aE?p:8*O-7,R=-8&M,I=0,j=0;F>=1}for(;i=y&&(l=p*(s=v)),i=0,o=l;o--;)A[i++]=w[b++],A[i++]=w[b++],A[i++]=w[b++],A[i++]=255;if(U)for(var W=0;W>8,t[a-2]=t[a-2]*o+r*s>>8,t[a-1]=t[a-1]*o+n*s>>8}}}function C(t,e,r){for(var n=t.length,i=3;i>8]>>8:e[i]*a>>16}}function F(t,e){var r=n.Util.singularValueDecompose2dScale(t);r[0]=Math.fround(r[0]),r[1]=Math.fround(r[1]);var a=Math.fround((globalThis.devicePixelRatio||1)*i.PixelsPerInch.PDF_TO_CSS_UNITS);return void 0!==e?e:r[0]<=a||r[1]<=a}var M=["butt","round","square"],R=["miter","round","bevel"],I={},j={},L=new WeakSet,D=function(){function t(e,r,n,i,a,o,s){var l,u,c=a.optionalContentConfig,h=a.markedContentStack,f=void 0===h?null:h;v(this,t),function(t,e){if(e.has(t))throw new TypeError("Cannot initialize the same private elements twice on an object")}(l=this,u=L),u.add(l),this.ctx=e,this.current=new k(this.ctx.canvas.width,this.ctx.canvas.height),this.stateStack=[],this.pendingClip=null,this.pendingEOFill=!1,this.res=null,this.xobjs=null,this.commonObjs=r,this.objs=n,this.canvasFactory=i,this.groupStack=[],this.processingType3=null,this.baseTransform=null,this.baseTransformStack=[],this.groupLevel=0,this.smaskStack=[],this.smaskCounter=0,this.tempSMask=null,this.suspendedCtx=null,this.contentVisible=!0,this.markedContentStack=f||[],this.optionalContentConfig=c,this.cachedCanvases=new w(this.canvasFactory),this.cachedPatterns=new Map,this.annotationCanvasMap=o,this.viewportScale=1,this.outputScaleX=1,this.outputScaleY=1,this.backgroundColor=(null==s?void 0:s.background)||null,this.foregroundColor=(null==s?void 0:s.foreground)||null,this._cachedScaleForStroking=null,this._cachedGetSinglePixelWidth=null,this._cachedBitmapsMap=new Map}return m(t,[{key:"getObject",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return"string"==typeof t?t.startsWith("g_")?this.commonObjs.get(t):this.objs.get(t):e}},{key:"beginDrawing",value:function(t){var e,r,n=t.transform,a=t.viewport,o=t.transparency,s=void 0!==o&&o,u=t.background,c=void 0===u?null:u,f=this.ctx.canvas.width,d=this.ctx.canvas.height,p=c||"#ffffff";if(this.ctx.save(),this.foregroundColor&&this.backgroundColor){this.ctx.fillStyle=this.foregroundColor;var v=this.foregroundColor=this.ctx.fillStyle;this.ctx.fillStyle=this.backgroundColor;var y,m,g=this.backgroundColor=this.ctx.fillStyle;if(this.ctx.fillStyle=p,y="string"==typeof(m=this.ctx.fillStyle)&&/^#[0-9A-Fa-f]{6}$/.test(m),"#000000"===v&&"#ffffff"===g||v===g||!y)this.foregroundColor=this.backgroundColor=null;else{var b=h((0,i.getRGB)(m),3),_=b[0],w=b[1],A=b[2],k=function(t){return(t/=255)<=.03928?t/12.92:Math.pow((t+.055)/1.055,2.4)},S=Math.round(.2126*k(_)+.7152*k(w)+.0722*k(A));this.selectColor=function(t,e,r){var n=.2126*k(t)+.7152*k(e)+.0722*k(r);return Math.round(n)===S?g:v}}}if(this.ctx.fillStyle=this.backgroundColor||p,this.ctx.fillRect(0,0,f,d),this.ctx.restore(),s){var x,E=this.cachedCanvases.getCanvas("transparent",f,d);this.compositeCtx=this.ctx,this.transparentCanvas=E.canvas,this.ctx=E.context,this.ctx.save(),(x=this.ctx).transform.apply(x,l((0,i.getCurrentTransform)(this.compositeCtx)))}this.ctx.save(),P(this.ctx,this.foregroundColor),n&&((r=this.ctx).transform.apply(r,l(n)),this.outputScaleX=n[0],this.outputScaleY=n[0]),(e=this.ctx).transform.apply(e,l(a.transform)),this.viewportScale=a.scale,this.baseTransform=(0,i.getCurrentTransform)(this.ctx)}},{key:"executeOperatorList",value:function(t,e,r,i){var a=t.argsArray,o=t.fnArray,s=e||0,l=a.length;if(l===s)return s;for(var u,h=l-s>10&&"function"==typeof r,f=h?Date.now()+15:0,d=0,p=this.commonObjs,v=this.objs;;){if(void 0!==i&&s===i.nextBreakPoint)return i.breakIt(s,r),s;if((u=o[s])!==n.OPS.dependency)this[u].apply(this,a[s]);else{var y,m=c(a[s]);try{for(m.s();!(y=m.n()).done;){var g=y.value,b=g.startsWith("g_")?p:v;if(!b.has(g))return b.get(g,r),s}}catch(t){m.e(t)}finally{m.f()}}if(++s===l)return s;if(h&&++d>10){if(Date.now()>f)return r(),s;d=0}}}},{key:"endDrawing",value:function(){u(this,L,N).call(this),this.cachedCanvases.clear(),this.cachedPatterns.clear();var t,e=c(this._cachedBitmapsMap.values());try{for(e.s();!(t=e.n()).done;){var r,n=t.value,i=c(n.values());try{for(i.s();!(r=i.n()).done;){var a=r.value;"undefined"!=typeof HTMLCanvasElement&&a instanceof HTMLCanvasElement&&(a.width=a.height=0)}}catch(t){i.e(t)}finally{i.f()}n.clear()}}catch(t){e.e(t)}finally{e.f()}this._cachedBitmapsMap.clear()}},{key:"_scaleImage",value:function(t,e){for(var r,n,i=t.width,a=t.height,o=Math.max(Math.hypot(e[0],e[1]),1),s=Math.max(Math.hypot(e[2],e[3]),1),l=i,u=a,c="prescale1";o>2&&l>1||s>2&&u>1;){var h=l,f=u;o>2&&l>1&&(o/=l/(h=Math.ceil(l/2))),s>2&&u>1&&(s/=u/(f=Math.ceil(u/2))),(n=(r=this.cachedCanvases.getCanvas(c,h,f)).context).clearRect(0,0,h,f),n.drawImage(t,0,0,l,u,0,0,h,f),t=r.canvas,l=h,u=f,c="prescale1"===c?"prescale2":"prescale1"}return{img:t,paintWidth:l,paintHeight:u}}},{key:"_createMaskCanvas",value:function(t){var e,r,o,s,u=this.ctx,c=t.width,h=t.height,f=this.current.fillColor,d=this.current.patternFill,p=(0,i.getCurrentTransform)(u);if((t.bitmap||t.data)&&t.count>1){var v=t.bitmap||t.data.buffer;r=JSON.stringify(d?p:[p.slice(0,4),f]),(e=this._cachedBitmapsMap.get(v))||(e=new Map,this._cachedBitmapsMap.set(v,e));var y=e.get(r);if(y&&!d)return{canvas:y,offsetX:Math.round(Math.min(p[0],p[2])+p[4]),offsetY:Math.round(Math.min(p[1],p[3])+p[5])};o=y}o||x((s=this.cachedCanvases.getCanvas("maskCanvas",c,h)).context,t);var m=n.Util.transform(p,[1/c,0,0,-1/h,0,0]);m=n.Util.transform(m,[1,0,0,1,0,-h]);var g=n.Util.applyTransform([0,0],m),b=n.Util.applyTransform([c,h],m),_=n.Util.normalizeRect([g[0],g[1],b[0],b[1]]),w=Math.round(_[2]-_[0])||1,k=Math.round(_[3]-_[1])||1,S=this.cachedCanvases.getCanvas("fillCanvas",w,k),E=S.context,P=Math.min(g[0],b[0]),T=Math.min(g[1],b[1]);E.translate(-P,-T),E.transform.apply(E,l(m)),o||(o=(o=this._scaleImage(s.canvas,(0,i.getCurrentTransformInverse)(E))).img,e&&d&&e.set(r,o)),E.imageSmoothingEnabled=F((0,i.getCurrentTransform)(E),t.interpolate),A(E,o,0,0,o.width,o.height,0,0,c,h),E.globalCompositeOperation="source-in";var C=n.Util.transform((0,i.getCurrentTransformInverse)(E),[1,0,0,1,-P,-T]);return E.fillStyle=d?f.getPattern(u,this,C,a.PathType.FILL):f,E.fillRect(0,0,c,h),e&&!d&&(this.cachedCanvases.delete("fillCanvas"),e.set(r,S.canvas)),{canvas:S.canvas,offsetX:Math.round(P),offsetY:Math.round(T)}}},{key:"setLineWidth",value:function(t){t!==this.current.lineWidth&&(this._cachedScaleForStroking=null),this.current.lineWidth=t,this.ctx.lineWidth=t}},{key:"setLineCap",value:function(t){this.ctx.lineCap=M[t]}},{key:"setLineJoin",value:function(t){this.ctx.lineJoin=R[t]}},{key:"setMiterLimit",value:function(t){this.ctx.miterLimit=t}},{key:"setDash",value:function(t,e){var r=this.ctx;void 0!==r.setLineDash&&(r.setLineDash(t),r.lineDashOffset=e)}},{key:"setRenderingIntent",value:function(t){}},{key:"setFlatness",value:function(t){}},{key:"setGState",value:function(t){var e,r=c(t);try{for(r.s();!(e=r.n()).done;){var n=h(e.value,2),i=n[0],a=n[1];switch(i){case"LW":this.setLineWidth(a);break;case"LC":this.setLineCap(a);break;case"LJ":this.setLineJoin(a);break;case"ML":this.setMiterLimit(a);break;case"D":this.setDash(a[0],a[1]);break;case"RI":this.setRenderingIntent(a);break;case"FL":this.setFlatness(a);break;case"Font":this.setFont(a[0],a[1]);break;case"CA":this.current.strokeAlpha=a;break;case"ca":this.current.fillAlpha=a,this.ctx.globalAlpha=a;break;case"BM":this.ctx.globalCompositeOperation=a;break;case"SMask":this.current.activeSMask=a?this.tempSMask:null,this.tempSMask=null,this.checkSMaskState();break;case"TR":this.current.transferMaps=a}}}catch(t){r.e(t)}finally{r.f()}}},{key:"inSMaskMode",get:function(){return!!this.suspendedCtx}},{key:"checkSMaskState",value:function(){var t=this.inSMaskMode;this.current.activeSMask&&!t?this.beginSMaskMode():!this.current.activeSMask&&t&&this.endSMaskMode()}},{key:"beginSMaskMode",value:function(){if(this.inSMaskMode)throw new Error("beginSMaskMode called while already in smask mode");var t=this.ctx.canvas.width,e=this.ctx.canvas.height,r="smaskGroupAt"+this.groupLevel,n=this.cachedCanvases.getCanvas(r,t,e);this.suspendedCtx=this.ctx,this.ctx=n.context;var a=this.ctx;a.setTransform.apply(a,l((0,i.getCurrentTransform)(this.suspendedCtx))),E(this.suspendedCtx,a),function(t,e){if(t._removeMirroring)throw new Error("Context is already forwarding operations.");t.__originalSave=t.save,t.__originalRestore=t.restore,t.__originalRotate=t.rotate,t.__originalScale=t.scale,t.__originalTranslate=t.translate,t.__originalTransform=t.transform,t.__originalSetTransform=t.setTransform,t.__originalResetTransform=t.resetTransform,t.__originalClip=t.clip,t.__originalMoveTo=t.moveTo,t.__originalLineTo=t.lineTo,t.__originalBezierCurveTo=t.bezierCurveTo,t.__originalRect=t.rect,t.__originalClosePath=t.closePath,t.__originalBeginPath=t.beginPath,t._removeMirroring=function(){t.save=t.__originalSave,t.restore=t.__originalRestore,t.rotate=t.__originalRotate,t.scale=t.__originalScale,t.translate=t.__originalTranslate,t.transform=t.__originalTransform,t.setTransform=t.__originalSetTransform,t.resetTransform=t.__originalResetTransform,t.clip=t.__originalClip,t.moveTo=t.__originalMoveTo,t.lineTo=t.__originalLineTo,t.bezierCurveTo=t.__originalBezierCurveTo,t.rect=t.__originalRect,t.closePath=t.__originalClosePath,t.beginPath=t.__originalBeginPath,delete t._removeMirroring},t.save=function(){e.save(),this.__originalSave()},t.restore=function(){e.restore(),this.__originalRestore()},t.translate=function(t,r){e.translate(t,r),this.__originalTranslate(t,r)},t.scale=function(t,r){e.scale(t,r),this.__originalScale(t,r)},t.transform=function(t,r,n,i,a,o){e.transform(t,r,n,i,a,o),this.__originalTransform(t,r,n,i,a,o)},t.setTransform=function(t,r,n,i,a,o){e.setTransform(t,r,n,i,a,o),this.__originalSetTransform(t,r,n,i,a,o)},t.resetTransform=function(){e.resetTransform(),this.__originalResetTransform()},t.rotate=function(t){e.rotate(t),this.__originalRotate(t)},t.clip=function(t){e.clip(t),this.__originalClip(t)},t.moveTo=function(t,r){e.moveTo(t,r),this.__originalMoveTo(t,r)},t.lineTo=function(t,r){e.lineTo(t,r),this.__originalLineTo(t,r)},t.bezierCurveTo=function(t,r,n,i,a,o){e.bezierCurveTo(t,r,n,i,a,o),this.__originalBezierCurveTo(t,r,n,i,a,o)},t.rect=function(t,r,n,i){e.rect(t,r,n,i),this.__originalRect(t,r,n,i)},t.closePath=function(){e.closePath(),this.__originalClosePath()},t.beginPath=function(){e.beginPath(),this.__originalBeginPath()}}(a,this.suspendedCtx),this.setGState([["BM","source-over"],["ca",1],["CA",1]])}},{key:"endSMaskMode",value:function(){if(!this.inSMaskMode)throw new Error("endSMaskMode called while not in smask mode");this.ctx._removeMirroring(),E(this.ctx,this.suspendedCtx),this.ctx=this.suspendedCtx,this.suspendedCtx=null}},{key:"compose",value:function(t){if(this.current.activeSMask){t?(t[0]=Math.floor(t[0]),t[1]=Math.floor(t[1]),t[2]=Math.ceil(t[2]),t[3]=Math.ceil(t[3])):t=[0,0,this.ctx.canvas.width,this.ctx.canvas.height];var e=this.current.activeSMask;(function(t,e,r,n){var i=n[0],a=n[1],o=n[2]-i,s=n[3]-a;0!==o&&0!==s&&(function(t,e,r,n,i,a,o,s,l,u,c){var h,f=!!a,d=f?a[0]:0,p=f?a[1]:0,v=f?a[2]:0;h="Luminosity"===i?O:C;for(var y=Math.min(n,Math.ceil(1048576/r)),m=0;m0&&void 0!==arguments[0])||arguments[0],e=this.ctx,r=this.current.strokeColor;e.globalAlpha=this.current.strokeAlpha,this.contentVisible&&("object"===p(r)&&null!=r&&r.getPattern?(e.save(),e.strokeStyle=r.getPattern(e,this,(0,i.getCurrentTransformInverse)(e),a.PathType.STROKE),this.rescaleAndStroke(!1),e.restore()):this.rescaleAndStroke(!0)),t&&this.consumePath(this.current.getClippedPathBoundingBox()),e.globalAlpha=this.current.fillAlpha}},{key:"closeStroke",value:function(){this.closePath(),this.stroke()}},{key:"fill",value:function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],e=this.ctx,r=this.current.fillColor,n=!1;this.current.patternFill&&(e.save(),e.fillStyle=r.getPattern(e,this,(0,i.getCurrentTransformInverse)(e),a.PathType.FILL),n=!0);var o=this.current.getClippedPathBoundingBox();this.contentVisible&&null!==o&&(this.pendingEOFill?(e.fill("evenodd"),this.pendingEOFill=!1):e.fill()),n&&e.restore(),t&&this.consumePath(o)}},{key:"eoFill",value:function(){this.pendingEOFill=!0,this.fill()}},{key:"fillStroke",value:function(){this.fill(!1),this.stroke(!1),this.consumePath()}},{key:"eoFillStroke",value:function(){this.pendingEOFill=!0,this.fillStroke()}},{key:"closeFillStroke",value:function(){this.closePath(),this.fillStroke()}},{key:"closeEOFillStroke",value:function(){this.pendingEOFill=!0,this.closePath(),this.fillStroke()}},{key:"endPath",value:function(){this.consumePath()}},{key:"clip",value:function(){this.pendingClip=I}},{key:"eoClip",value:function(){this.pendingClip=j}},{key:"beginText",value:function(){this.current.textMatrix=n.IDENTITY_MATRIX,this.current.textMatrixScale=1,this.current.x=this.current.lineX=0,this.current.y=this.current.lineY=0}},{key:"endText",value:function(){var t=this.pendingTextPaths,e=this.ctx;if(void 0!==t){e.save(),e.beginPath();var r,n=c(t);try{for(n.s();!(r=n.n()).done;){var i=r.value;e.setTransform.apply(e,l(i.transform)),e.translate(i.x,i.y),i.addToPath(e,i.fontSize)}}catch(t){n.e(t)}finally{n.f()}e.restore(),e.clip(),e.beginPath(),delete this.pendingTextPaths}else e.beginPath()}},{key:"setCharSpacing",value:function(t){this.current.charSpacing=t}},{key:"setWordSpacing",value:function(t){this.current.wordSpacing=t}},{key:"setHScale",value:function(t){this.current.textHScale=t/100}},{key:"setLeading",value:function(t){this.current.leading=-t}},{key:"setFont",value:function(t,e){var r=this.commonObjs.get(t),i=this.current;if(!r)throw new Error("Can't find font for ".concat(t));if(i.fontMatrix=r.fontMatrix||n.FONT_IDENTITY_MATRIX,0!==i.fontMatrix[0]&&0!==i.fontMatrix[3]||(0,n.warn)("Invalid font matrix for font "+t),e<0?(e=-e,i.fontDirection=-1):i.fontDirection=1,this.current.font=r,this.current.fontSize=e,!r.isType3Font){var a=r.loadedName||"sans-serif",o="normal";r.black?o="900":r.bold&&(o="bold");var s=r.italic?"italic":"normal",l='"'.concat(a,'", ').concat(r.fallbackName),u=e;e<16?u=16:e>100&&(u=100),this.current.fontSizeScale=e/u,this.ctx.font="".concat(s," ").concat(o," ").concat(u,"px ").concat(l)}}},{key:"setTextRenderingMode",value:function(t){this.current.textRenderingMode=t}},{key:"setTextRise",value:function(t){this.current.textRise=t}},{key:"moveText",value:function(t,e){this.current.x=this.current.lineX+=t,this.current.y=this.current.lineY+=e}},{key:"setLeadingMoveText",value:function(t,e){this.setLeading(-e),this.moveText(t,e)}},{key:"setTextMatrix",value:function(t,e,r,n,i,a){this.current.textMatrix=[t,e,r,n,i,a],this.current.textMatrixScale=Math.hypot(t,e),this.current.x=this.current.lineX=0,this.current.y=this.current.lineY=0}},{key:"nextLine",value:function(){this.moveText(0,this.current.leading)}},{key:"paintChar",value:function(t,e,r,a){var o,s=this.ctx,u=this.current,c=u.font,h=u.textRenderingMode,f=u.fontSize/u.fontSizeScale,d=h&n.TextRenderingMode.FILL_STROKE_MASK,p=!!(h&n.TextRenderingMode.ADD_TO_PATH_FLAG),v=u.patternFill&&!c.missingFile;(c.disableFontFace||p||v)&&(o=c.getPathGenerator(this.commonObjs,t)),c.disableFontFace||v?(s.save(),s.translate(e,r),s.beginPath(),o(s,f),a&&s.setTransform.apply(s,l(a)),d!==n.TextRenderingMode.FILL&&d!==n.TextRenderingMode.FILL_STROKE||s.fill(),d!==n.TextRenderingMode.STROKE&&d!==n.TextRenderingMode.FILL_STROKE||s.stroke(),s.restore()):(d!==n.TextRenderingMode.FILL&&d!==n.TextRenderingMode.FILL_STROKE||s.fillText(t,e,r),d!==n.TextRenderingMode.STROKE&&d!==n.TextRenderingMode.FILL_STROKE||s.strokeText(t,e,r)),p&&(this.pendingTextPaths||(this.pendingTextPaths=[])).push({transform:(0,i.getCurrentTransform)(s),x:e,y:r,fontSize:f,addToPath:o})}},{key:"isFontSubpixelAAEnabled",get:function(){var t=this.cachedCanvases.getCanvas("isFontSubpixelAAEnabled",10,10).context;t.scale(1.5,1),t.fillText("I",0,10);for(var e=t.getImageData(0,0,10,10).data,r=!1,i=3;i0&&e[i]<255){r=!0;break}return(0,n.shadow)(this,"isFontSubpixelAAEnabled",r)}},{key:"showText",value:function(t){var e=this.current,r=e.font;if(r.isType3Font)return this.showType3Text(t);var o=e.fontSize;if(0!==o){var s,u=this.ctx,h=e.fontSizeScale,f=e.charSpacing,d=e.wordSpacing,p=e.fontDirection,v=e.textHScale*p,y=t.length,m=r.vertical,g=m?1:-1,b=r.defaultVMetrics,_=o*e.fontMatrix[0],w=e.textRenderingMode===n.TextRenderingMode.FILL&&!r.disableFontFace&&!e.patternFill;if(u.save(),u.transform.apply(u,l(e.textMatrix)),u.translate(e.x,e.y+e.textRise),p>0?u.scale(v,-1):u.scale(v,1),e.patternFill){u.save();var A=e.fillColor.getPattern(u,this,(0,i.getCurrentTransformInverse)(u),a.PathType.FILL);s=(0,i.getCurrentTransform)(u),u.restore(),u.fillStyle=A}var k=e.lineWidth,S=e.textMatrixScale;if(0===S||0===k){var x=e.textRenderingMode&n.TextRenderingMode.FILL_STROKE_MASK;x!==n.TextRenderingMode.STROKE&&x!==n.TextRenderingMode.FILL_STROKE||(k=this.getSinglePixelWidth())}else k/=S;if(1!==h&&(u.scale(h,h),k/=h),u.lineWidth=k,r.isInvalidPDFjsFont){var E,P=[],T=0,C=c(t);try{for(C.s();!(E=C.n()).done;){var O=E.value;P.push(O.unicode),T+=O.width}}catch(t){C.e(t)}finally{C.f()}return u.fillText(P.join(""),0,0),e.x+=T*_*v,u.restore(),void this.compose()}var F,M=0;for(F=0;F0){var H=1e3*u.measureText(L).width/o*h;if(W1&&void 0!==arguments[1]?arguments[1]:null;return this.cachedPatterns.has(t)?e=this.cachedPatterns.get(t):(e=(0,a.getShadingPattern)(this.objs.get(t)),this.cachedPatterns.set(t,e)),r&&(e.matrix=r),e}},{key:"shadingFill",value:function(t){if(this.contentVisible){var e=this.ctx;this.save();var r=this._getPattern(t);e.fillStyle=r.getPattern(e,this,(0,i.getCurrentTransformInverse)(e),a.PathType.SHADING);var o=(0,i.getCurrentTransformInverse)(e);if(o){var s=e.canvas,l=s.width,u=s.height,c=n.Util.applyTransform([0,0],o),h=n.Util.applyTransform([0,u],o),f=n.Util.applyTransform([l,0],o),d=n.Util.applyTransform([l,u],o),p=Math.min(c[0],h[0],f[0],d[0]),v=Math.min(c[1],h[1],f[1],d[1]),y=Math.max(c[0],h[0],f[0],d[0]),m=Math.max(c[1],h[1],f[1],d[1]);this.ctx.fillRect(p,v,y-p,m-v)}else this.ctx.fillRect(-1e10,-1e10,2e10,2e10);this.compose(this.current.getClippedPathBoundingBox()),this.restore()}}},{key:"beginInlineImage",value:function(){(0,n.unreachable)("Should not call beginInlineImage")}},{key:"beginImageData",value:function(){(0,n.unreachable)("Should not call beginImageData")}},{key:"paintFormXObjectBegin",value:function(t,e){if(this.contentVisible&&(this.save(),this.baseTransformStack.push(this.baseTransform),Array.isArray(t)&&6===t.length&&this.transform.apply(this,l(t)),this.baseTransform=(0,i.getCurrentTransform)(this.ctx),e)){var r=e[2]-e[0],n=e[3]-e[1];this.ctx.rect(e[0],e[1],r,n),this.current.updateRectMinMax((0,i.getCurrentTransform)(this.ctx),e),this.clip(),this.endPath()}}},{key:"paintFormXObjectEnd",value:function(){this.contentVisible&&(this.restore(),this.baseTransform=this.baseTransformStack.pop())}},{key:"beginGroup",value:function(t){if(this.contentVisible){this.save(),this.inSMaskMode&&(this.endSMaskMode(),this.current.activeSMask=null);var e=this.ctx;t.isolated||(0,n.info)("TODO: Support non-isolated groups."),t.knockout&&(0,n.warn)("Knockout groups not supported.");var r=(0,i.getCurrentTransform)(e);if(t.matrix&&e.transform.apply(e,l(t.matrix)),!t.bbox)throw new Error("Bounding box is required.");var a=n.Util.getAxialAlignedBoundingBox(t.bbox,(0,i.getCurrentTransform)(e)),o=[0,0,e.canvas.width,e.canvas.height];a=n.Util.intersect(a,o)||[0,0,0,0];var s=Math.floor(a[0]),u=Math.floor(a[1]),c=Math.max(Math.ceil(a[2])-s,1),h=Math.max(Math.ceil(a[3])-u,1),f=1,d=1;c>g&&(f=c/g,c=g),h>g&&(d=h/g,h=g),this.current.startNewPathAndClipBox([0,0,c,h]);var p="groupAt"+this.groupLevel;t.smask&&(p+="_smask_"+this.smaskCounter++%2);var v=this.cachedCanvases.getCanvas(p,c,h),y=v.context;y.scale(1/f,1/d),y.translate(-s,-u),y.transform.apply(y,l(r)),t.smask?this.smaskStack.push({canvas:v.canvas,context:y,offsetX:s,offsetY:u,scaleX:f,scaleY:d,subtype:t.smask.subtype,backdrop:t.smask.backdrop,transferMap:t.smask.transferMap||null,startTransformInverse:null}):(e.setTransform(1,0,0,1,0,0),e.translate(s,u),e.scale(f,d),e.save()),E(e,y),this.ctx=y,this.setGState([["BM","source-over"],["ca",1],["CA",1]]),this.groupStack.push(e),this.groupLevel++}}},{key:"endGroup",value:function(t){if(this.contentVisible){this.groupLevel--;var e=this.ctx,r=this.groupStack.pop();if(this.ctx=r,this.ctx.imageSmoothingEnabled=!1,t.smask)this.tempSMask=this.smaskStack.pop(),this.restore();else{var a;this.ctx.restore();var o=(0,i.getCurrentTransform)(this.ctx);this.restore(),this.ctx.save(),(a=this.ctx).setTransform.apply(a,l(o));var s=n.Util.getAxialAlignedBoundingBox([0,0,e.canvas.width,e.canvas.height],o);this.ctx.drawImage(e.canvas,0,0),this.ctx.restore(),this.compose(s)}}}},{key:"beginAnnotation",value:function(t,e,r,a,o){var s;if(u(this,L,N).call(this),P(this.ctx,this.foregroundColor),this.ctx.save(),this.save(),this.baseTransform&&(s=this.ctx).setTransform.apply(s,l(this.baseTransform)),Array.isArray(e)&&4===e.length){var c=e[2]-e[0],f=e[3]-e[1];if(o&&this.annotationCanvasMap){(r=r.slice())[4]-=e[0],r[5]-=e[1],(e=e.slice())[0]=e[1]=0,e[2]=c,e[3]=f;var d=h(n.Util.singularValueDecompose2dScale((0,i.getCurrentTransform)(this.ctx)),2),p=d[0],v=d[1],y=this.viewportScale,m=Math.ceil(c*this.outputScaleX*y),g=Math.ceil(f*this.outputScaleY*y);this.annotationCanvas=this.canvasFactory.create(m,g);var b=this.annotationCanvas,_=b.canvas,w=b.context;this.annotationCanvasMap.set(t,_),this.annotationCanvas.savedCtx=this.ctx,this.ctx=w,this.ctx.setTransform(p,0,0,-v,0,f*v),P(this.ctx,this.foregroundColor)}else P(this.ctx,this.foregroundColor),this.ctx.rect(e[0],e[1],c,f),this.ctx.clip(),this.endPath()}this.current=new k(this.ctx.canvas.width,this.ctx.canvas.height),this.transform.apply(this,l(r)),this.transform.apply(this,l(a))}},{key:"endAnnotation",value:function(){this.annotationCanvas&&(this.ctx=this.annotationCanvas.savedCtx,delete this.annotationCanvas.savedCtx,delete this.annotationCanvas)}},{key:"paintImageMaskXObject",value:function(t){if(this.contentVisible){var e=t.count;(t=this.getObject(t.data,t)).count=e;var r=this.ctx,n=this.processingType3;if(n&&(void 0===n.compiled&&(n.compiled=function(t){var e=t.width,r=t.height;if(e>b||r>b)return null;var n,i,a,o,s=new Uint8Array([0,2,4,0,1,0,5,4,8,10,0,8,0,2,1,0]),l=e+1,u=new Uint8Array(l*(r+1)),h=e+7&-8,f=new Uint8Array(h*r),d=0,p=c(t.data);try{for(p.s();!(o=p.n()).done;)for(var v=o.value,y=128;y>0;)f[d++]=v&y?0:255,y>>=1}catch(t){p.e(t)}finally{p.f()}var m=0;for(0!==f[d=0]&&(u[0]=1,++m),i=1;i>2)+(f[d+1]?4:0)+(f[d-h+1]?8:0)]&&(u[a+i]=s[g],++m),d++;if(f[d-h]!==f[d]&&(u[a+i]=f[d]?2:4,++m),m>1e3)return null}for(a=n*l,0!==f[d=h*(r-1)]&&(u[a]=8,++m),i=1;i1e3)return null;var _=new Int32Array([0,l,-1,0,-l,0,0,0,1]),w=new Path2D;for(n=0;m&&n<=r;n++){for(var A=n*l,k=A+e;A>4,u[A]&=x>>2|x<<2),w.lineTo(A%l,A/l|0),u[A]||--m}while(S!==A);--n}}return f=null,u=null,function(t){t.save(),t.scale(1/e,-1/r),t.translate(0,-r),t.fill(w),t.beginPath(),t.restore()}}(t)),n.compiled))n.compiled(r);else{var i=this._createMaskCanvas(t),a=i.canvas;r.save(),r.setTransform(1,0,0,1,0,0),r.drawImage(a,i.offsetX,i.offsetY),r.restore(),this.compose()}}}},{key:"paintImageMaskXObjectRepeat",value:function(t,e){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,o=arguments.length>4?arguments[4]:void 0,s=arguments.length>5?arguments[5]:void 0;if(this.contentVisible){t=this.getObject(t.data,t);var l=this.ctx;l.save();var u=(0,i.getCurrentTransform)(l);l.transform(e,r,a,o,0,0);var c=this._createMaskCanvas(t);l.setTransform(1,0,0,1,c.offsetX-u[4],c.offsetY-u[5]);for(var f=0,d=s.length;ff?h/f:1,e=c>f?c/f:1}}this._cachedScaleForStroking=[t,e]}return this._cachedScaleForStroking}},{key:"rescaleAndStroke",value:function(t){var e=this.ctx,r=this.current.lineWidth,n=h(this.getScaleForStroking(),2),a=n[0],o=n[1];if(e.lineWidth=r||1,1!==a||1!==o){var s,u,c;t&&(s=(0,i.getCurrentTransform)(e),u=e.getLineDash().slice(),c=e.lineDashOffset),e.scale(a,o);var f=Math.max(a,o);e.setLineDash(e.getLineDash().map((function(t){return t/f}))),e.lineDashOffset/=f,e.stroke(),t&&(e.setTransform.apply(e,l(s)),e.setLineDash(u),e.lineDashOffset=c)}else e.stroke()}},{key:"isContentVisible",value:function(){for(var t=this.markedContentStack.length-1;t>=0;t--)if(!this.markedContentStack[t].visible)return!1;return!0}}]),t}();function N(){for(;this.stateStack.length||this.inSMaskMode;)this.restore();this.ctx.restore(),this.transparentCanvas&&(this.ctx=this.compositeCtx,this.ctx.save(),this.ctx.setTransform(1,0,0,1,0,0),this.ctx.drawImage(this.transparentCanvas,0,0),this.ctx.restore(),this.transparentCanvas=null)}for(var U in e.CanvasGraphics=D,n.OPS)void 0!==D.prototype[U]&&(D.prototype[n.OPS[U]]=D.prototype[U])},(t,e,r)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.TilingPattern=e.PathType=void 0,e.getShadingPattern=function(t){switch(t[0]){case"RadialAxial":return new w(t);case"Mesh":return new S(t);case"Dummy":return new x}throw new Error("Unknown IR type: ".concat(t[0]))};var n=r(1),i=r(137),a=r(3);function o(t){return function(t){if(Array.isArray(t))return u(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||l(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function s(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=l(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,i=function(){};return{s:i,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,o=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return o=t.done,t},e:function(t){s=!0,a=t},f:function(){try{o||null==r.return||r.return()}finally{if(s)throw a}}}}function l(t,e){if(t){if("string"==typeof t)return u(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?u(t,e):void 0}}function u(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);ru[n+1]&&(l=r,r=n,n=l,l=a,a=o,o=l),u[n+1]>u[i+1]&&(l=n,n=i,i=l,l=o,o=s,s=l),u[r+1]>u[n+1]&&(l=r,r=n,n=l,l=a,a=o,o=l);var d=(u[r]+e.offsetX)*e.scaleX,p=(u[r+1]+e.offsetY)*e.scaleY,v=(u[n]+e.offsetX)*e.scaleX,y=(u[n+1]+e.offsetY)*e.scaleY,m=(u[i]+e.offsetX)*e.scaleX,g=(u[i+1]+e.offsetY)*e.scaleY;if(!(p>=g))for(var b,_,w,A,k,S,x,E,P=c[a],T=c[a+1],C=c[a+2],O=c[o],F=c[o+1],M=c[o+2],R=c[s],I=c[s+1],j=c[s+2],L=Math.round(p),D=Math.round(g),N=L;N<=D;N++){if(Ng?1:y===g?0:(y-N)/(y-g)),_=O-(O-R)*W,w=F-(F-I)*W,A=M-(M-j)*W}var G=void 0;k=d-(d-m)*(G=Ng?1:(p-N)/(p-g)),S=P-(P-R)*G,x=T-(T-I)*G,E=C-(C-j)*G;for(var B=Math.round(Math.min(b,k)),q=Math.round(Math.max(b,k)),H=f*N+4*B,z=B;z<=q;z++)(G=(b-z)/(b-k))<0?G=0:G>1&&(G=1),h[H++]=_-(_-S)*G|0,h[H++]=w-(w-x)*G|0,h[H++]=A-(A-E)*G|0,h[H++]=255}}function k(t,e,r){var n,i,a=e.coords,o=e.colors;switch(e.type){case"lattice":var s=e.verticesPerRow,l=Math.floor(a.length/s)-1,u=s-1;for(n=0;n=i?a=i:n=a/e,{scale:n,size:a}}},{key:"clipBbox",value:function(t,e,r,n,a){var o=n-e,s=a-r;t.ctx.rect(e,r,o,s),t.current.updateRectMinMax((0,i.getCurrentTransform)(t.ctx),[e,r,n,a]),t.clip(),t.endPath()}},{key:"setFillAndStrokeStyleToContext",value:function(t,e,r){var i=t.ctx,a=t.current;switch(e){case 1:var o=this.ctx;i.fillStyle=o.fillStyle,i.strokeStyle=o.strokeStyle,a.fillColor=o.fillStyle,a.strokeColor=o.strokeStyle;break;case 2:var s=n.Util.makeHexColor(r[0],r[1],r[2]);i.fillStyle=s,i.strokeStyle=s,a.fillColor=s,a.strokeColor=s;break;default:throw new n.FormatError("Unsupported paint type: ".concat(e))}}},{key:"getPattern",value:function(t,e,r,i){var a=r;i!==g.SHADING&&(a=n.Util.transform(a,e.baseTransform),this.matrix&&(a=n.Util.transform(a,this.matrix)));var o=this.createPatternCanvas(e),s=new DOMMatrix(a);s=(s=s.translate(o.offsetX,o.offsetY)).scale(1/o.scaleX,1/o.scaleY);var l=t.createPattern(o.canvas,"repeat");return l.setTransform(s),l}}],[{key:"MAX_PATTERN_SIZE",get:function(){return(0,n.shadow)(this,"MAX_PATTERN_SIZE",3e3)}}]),t}();e.TilingPattern=E},(t,e,r)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.applyMaskImageData=function(t){var e,r=t.src,a=t.srcPos,o=void 0===a?0:a,s=t.dest,l=t.destPos,u=void 0===l?0:l,c=t.width,h=t.height,f=t.inverseDecode,d=void 0!==f&&f,p=n.FeatureTest.isLittleEndian?4278190080:255,v=function(t){if(Array.isArray(t))return t}(e=d?[0,p]:[p,0])||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,i,a,o,s=[],l=!0,u=!1;try{for(a=(r=r.call(t)).next;!(l=(n=a.call(r)).done)&&(s.push(n.value),2!==s.length);l=!0);}catch(t){u=!0,i=t}finally{try{if(!l&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(u)throw i}}return s}}(e)||function(t,e){if(t){if("string"==typeof t)return i(t,2);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?i(t,2):void 0}}(e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),y=v[0],m=v[1],g=c>>3,b=7&c,_=r.length;s=new Uint32Array(s.buffer);for(var w=0;wt.length)&&(e=t.length);for(var r=0,n=new Array(e);r{Object.defineProperty(e,"__esModule",{value:!0}),e.GlobalWorkerOptions=void 0;var r=Object.create(null);e.GlobalWorkerOptions=r,r.workerPort=void 0===r.workerPort?null:r.workerPort,r.workerSrc=void 0===r.workerSrc?"":r.workerSrc},(t,e,r)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.MessageHandler=void 0;var n=r(1);function i(){i=function(){return t};var t={},e=Object.prototype,r=e.hasOwnProperty,n=Object.defineProperty||function(t,e,r){t[e]=r.value},a="function"==typeof Symbol?Symbol:{},o=a.iterator||"@@iterator",l=a.asyncIterator||"@@asyncIterator",u=a.toStringTag||"@@toStringTag";function c(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{c({},"")}catch(t){c=function(t,e,r){return t[e]=r}}function h(t,e,r,i){var a=e&&e.prototype instanceof p?e:p,o=Object.create(a.prototype),s=new P(i||[]);return n(o,"_invoke",{value:k(t,r,s)}),o}function f(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}t.wrap=h;var d={};function p(){}function v(){}function y(){}var m={};c(m,o,(function(){return this}));var g=Object.getPrototypeOf,b=g&&g(g(T([])));b&&b!==e&&r.call(b,o)&&(m=b);var _=y.prototype=p.prototype=Object.create(m);function w(t){["next","throw","return"].forEach((function(e){c(t,e,(function(t){return this._invoke(e,t)}))}))}function A(t,e){function i(n,a,o,l){var u=f(t[n],t,a);if("throw"!==u.type){var c=u.arg,h=c.value;return h&&"object"==s(h)&&r.call(h,"__await")?e.resolve(h.__await).then((function(t){i("next",t,o,l)}),(function(t){i("throw",t,o,l)})):e.resolve(h).then((function(t){c.value=t,o(c)}),(function(t){return i("throw",t,o,l)}))}l(u.arg)}var a;n(this,"_invoke",{value:function(t,r){function n(){return new e((function(e,n){i(t,r,e,n)}))}return a=a?a.then(n,n):n()}})}function k(t,e,r){var n="suspendedStart";return function(i,a){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===i)throw a;return{value:void 0,done:!0}}for(r.method=i,r.arg=a;;){var o=r.delegate;if(o){var s=S(o,r);if(s){if(s===d)continue;return s}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var l=f(t,e,r);if("normal"===l.type){if(n=r.done?"completed":"suspendedYield",l.arg===d)continue;return{value:l.arg,done:r.done}}"throw"===l.type&&(n="completed",r.method="throw",r.arg=l.arg)}}}function S(t,e){var r=e.method,n=t.iterator[r];if(void 0===n)return e.delegate=null,"throw"===r&&t.iterator.return&&(e.method="return",e.arg=void 0,S(t,e),"throw"===e.method)||"return"!==r&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+r+"' method")),d;var i=f(n,t.iterator,e.arg);if("throw"===i.type)return e.method="throw",e.arg=i.arg,e.delegate=null,d;var a=i.arg;return a?a.done?(e[t.resultName]=a.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,d):a:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,d)}function x(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function E(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function P(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(x,this),this.reset(!0)}function T(t){if(t){var e=t[o];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var n=-1,i=function e(){for(;++n=0;--i){var a=this.tryEntries[i],o=a.completion;if("root"===a.tryLoc)return n("end");if(a.tryLoc<=this.prev){var s=r.call(a,"catchLoc"),l=r.call(a,"finallyLoc");if(s&&l){if(this.prev=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&r.call(i,"finallyLoc")&&this.prev=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),E(r),d}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var i=n.arg;E(r)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:T(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=void 0),d}},t}function a(t,e,r,n,i,a,o){try{var s=t[a](o),l=s.value}catch(t){return void r(t)}s.done?e(l):Promise.resolve(l).then(n,i)}function o(t,e){for(var r=0;r1&&void 0!==arguments[1]?arguments[1]:1,s=arguments.length>2?arguments[2]:void 0;if(!this.isCancelled){var l=this.desiredSize;this.desiredSize-=o,l>0&&this.desiredSize<=0&&(this.sinkCapability=(0,n.createPromiseCapability)(),this.ready=this.sinkCapability.promise),a.postMessage({sourceName:r,targetName:i,stream:4,streamId:e,chunk:t},s)}},close:function(){this.isCancelled||(this.isCancelled=!0,a.postMessage({sourceName:r,targetName:i,stream:3,streamId:e}),delete o.streamSinks[e])},error:function(t){(0,n.assert)(t instanceof Error,"error must have a valid reason"),this.isCancelled||(this.isCancelled=!0,a.postMessage({sourceName:r,targetName:i,stream:5,streamId:e,reason:l(t)}))},sinkCapability:(0,n.createPromiseCapability)(),onPull:null,onCancel:null,isCancelled:!1,desiredSize:t.desiredSize,ready:null};u.sinkCapability.resolve(),u.ready=u.sinkCapability.promise,this.streamSinks[e]=u,new Promise((function(e){e(s(t.data,u))})).then((function(){a.postMessage({sourceName:r,targetName:i,stream:8,streamId:e,success:!0})}),(function(t){a.postMessage({sourceName:r,targetName:i,stream:8,streamId:e,reason:l(t)})}))}},{key:"_processStreamMessage",value:function(t){var e=t.streamId,r=this.sourceName,i=t.sourceName,a=this.comObj,o=this.streamControllers[e],s=this.streamSinks[e];switch(t.stream){case 8:t.success?o.startCall.resolve():o.startCall.reject(l(t.reason));break;case 7:t.success?o.pullCall.resolve():o.pullCall.reject(l(t.reason));break;case 6:if(!s){a.postMessage({sourceName:r,targetName:i,stream:7,streamId:e,success:!0});break}s.desiredSize<=0&&t.desiredSize>0&&s.sinkCapability.resolve(),s.desiredSize=t.desiredSize,new Promise((function(t){t(s.onPull&&s.onPull())})).then((function(){a.postMessage({sourceName:r,targetName:i,stream:7,streamId:e,success:!0})}),(function(t){a.postMessage({sourceName:r,targetName:i,stream:7,streamId:e,reason:l(t)})}));break;case 4:if((0,n.assert)(o,"enqueue should have stream controller"),o.isClosed)break;o.controller.enqueue(t.chunk);break;case 3:if((0,n.assert)(o,"close should have stream controller"),o.isClosed)break;o.isClosed=!0,o.controller.close(),this._deleteStreamController(o,e);break;case 5:(0,n.assert)(o,"error should have stream controller"),o.controller.error(l(t.reason)),this._deleteStreamController(o,e);break;case 2:t.success?o.cancelCall.resolve():o.cancelCall.reject(l(t.reason)),this._deleteStreamController(o,e);break;case 1:if(!s)break;new Promise((function(e){e(s.onCancel&&s.onCancel(l(t.reason)))})).then((function(){a.postMessage({sourceName:r,targetName:i,stream:2,streamId:e,success:!0})}),(function(t){a.postMessage({sourceName:r,targetName:i,stream:2,streamId:e,reason:l(t)})})),s.sinkCapability.reject(l(t.reason)),s.isCancelled=!0,delete this.streamSinks[e];break;default:throw new Error("Unexpected stream case")}}},{key:"_deleteStreamController",value:(s=i().mark((function t(e,r){return i().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,Promise.allSettled([e.startCall&&e.startCall.promise,e.pullCall&&e.pullCall.promise,e.cancelCall&&e.cancelCall.promise]);case 2:delete this.streamControllers[r];case 3:case"end":return t.stop()}}),t,this)})),u=function(){var t=this,e=arguments;return new Promise((function(r,n){var i=s.apply(t,e);function o(t){a(i,r,n,o,l,"next",t)}function l(t){a(i,r,n,o,l,"throw",t)}o(void 0)}))},function(t,e){return u.apply(this,arguments)})},{key:"destroy",value:function(){this.comObj.removeEventListener("message",this._onComObjOnMessage)}}],r&&o(e.prototype,r),Object.defineProperty(e,"prototype",{writable:!1}),t}();e.MessageHandler=u},(t,e,r)=>{function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}Object.defineProperty(e,"__esModule",{value:!0}),e.Metadata=void 0;var i=r(1);function a(t,e){for(var r=0;r{function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}Object.defineProperty(e,"__esModule",{value:!0}),e.OptionalContentConfig=void 0;var i=r(1),a=r(139);function o(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=s(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,i=function(){};return{s:i,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,o=!0,l=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return o=t.done,t},e:function(t){l=!0,a=t},f:function(){try{o||null==r.return||r.return()}finally{if(l)throw a}}}}function s(t,e){if(t){if("string"==typeof t)return l(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?l(t,e):void 0}}function l(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r1&&void 0!==arguments[1])||arguments[1];y(this,A).has(t)?(y(this,A).get(t)._setVisible(g,!!e),v(this,w,null)):(0,i.warn)("Optional content group not found: ".concat(t))}},{key:"hasInitialVisibility",get:function(){return this.getHash()===y(this,k)}},{key:"getOrder",value:function(){return y(this,A).size?y(this,S)?y(this,S).slice():function(t){if(Array.isArray(t))return l(t)}(t=y(this,A).keys())||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||s(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}():null;var t}},{key:"getGroups",value:function(){return y(this,A).size>0?(0,i.objectFromMap)(y(this,A)):null}},{key:"getGroup",value:function(t){return y(this,A).get(t)||null}},{key:"getHash",value:function(){if(null!==y(this,w))return y(this,w);var t,e,r,n=new a.MurmurHash3_64,i=o(y(this,A));try{for(i.s();!(t=i.n()).done;){var l=(e=t.value,r=2,function(t){if(Array.isArray(t))return t}(e)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,i,a,o,s=[],l=!0,u=!1;try{if(a=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;l=!1}else for(;!(l=(n=a.call(r)).done)&&(s.push(n.value),s.length!==e);l=!0);}catch(t){u=!0,i=t}finally{try{if(!l&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(u)throw i}}return s}}(e,r)||s(e,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),u=l[0],c=l[1];n.update("".concat(u,":").concat(c.visible))}}catch(t){i.e(t)}finally{i.f()}return v(this,w,n.hexdigest())}}]),t}();function P(t){var e=t.length;if(e<2)return!0;for(var r=t[0],n=1;n{Object.defineProperty(e,"__esModule",{value:!0}),e.PDFDataTransportStream=void 0;var n=r(1),i=r(137);function a(){a=function(){return t};var t={},e=Object.prototype,r=e.hasOwnProperty,n=Object.defineProperty||function(t,e,r){t[e]=r.value},i="function"==typeof Symbol?Symbol:{},o=i.iterator||"@@iterator",s=i.asyncIterator||"@@asyncIterator",u=i.toStringTag||"@@toStringTag";function c(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{c({},"")}catch(t){c=function(t,e,r){return t[e]=r}}function h(t,e,r,i){var a=e&&e.prototype instanceof p?e:p,o=Object.create(a.prototype),s=new P(i||[]);return n(o,"_invoke",{value:k(t,r,s)}),o}function f(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}t.wrap=h;var d={};function p(){}function v(){}function y(){}var m={};c(m,o,(function(){return this}));var g=Object.getPrototypeOf,b=g&&g(g(T([])));b&&b!==e&&r.call(b,o)&&(m=b);var _=y.prototype=p.prototype=Object.create(m);function w(t){["next","throw","return"].forEach((function(e){c(t,e,(function(t){return this._invoke(e,t)}))}))}function A(t,e){function i(n,a,o,s){var u=f(t[n],t,a);if("throw"!==u.type){var c=u.arg,h=c.value;return h&&"object"==l(h)&&r.call(h,"__await")?e.resolve(h.__await).then((function(t){i("next",t,o,s)}),(function(t){i("throw",t,o,s)})):e.resolve(h).then((function(t){c.value=t,o(c)}),(function(t){return i("throw",t,o,s)}))}s(u.arg)}var a;n(this,"_invoke",{value:function(t,r){function n(){return new e((function(e,n){i(t,r,e,n)}))}return a=a?a.then(n,n):n()}})}function k(t,e,r){var n="suspendedStart";return function(i,a){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===i)throw a;return{value:void 0,done:!0}}for(r.method=i,r.arg=a;;){var o=r.delegate;if(o){var s=S(o,r);if(s){if(s===d)continue;return s}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var l=f(t,e,r);if("normal"===l.type){if(n=r.done?"completed":"suspendedYield",l.arg===d)continue;return{value:l.arg,done:r.done}}"throw"===l.type&&(n="completed",r.method="throw",r.arg=l.arg)}}}function S(t,e){var r=e.method,n=t.iterator[r];if(void 0===n)return e.delegate=null,"throw"===r&&t.iterator.return&&(e.method="return",e.arg=void 0,S(t,e),"throw"===e.method)||"return"!==r&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+r+"' method")),d;var i=f(n,t.iterator,e.arg);if("throw"===i.type)return e.method="throw",e.arg=i.arg,e.delegate=null,d;var a=i.arg;return a?a.done?(e[t.resultName]=a.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,d):a:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,d)}function x(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function E(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function P(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(x,this),this.reset(!0)}function T(t){if(t){var e=t[o];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var n=-1,i=function e(){for(;++n=0;--i){var a=this.tryEntries[i],o=a.completion;if("root"===a.tryLoc)return n("end");if(a.tryLoc<=this.prev){var s=r.call(a,"catchLoc"),l=r.call(a,"finallyLoc");if(s&&l){if(this.prev=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&r.call(i,"finallyLoc")&&this.prev=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),E(r),d}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var i=n.arg;E(r)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:T(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=void 0),d}},t}function o(t,e,r,n,i,a,o){try{var s=t[a](o),l=s.value}catch(t){return void r(t)}s.done?e(l):Promise.resolve(l).then(n,i)}function s(t){return function(){var e=this,r=arguments;return new Promise((function(n,i){var a=t.apply(e,r);function s(t){o(a,n,i,s,l,"next",t)}function l(t){o(a,n,i,s,l,"throw",t)}s(void 0)}))}}function l(t){return l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},l(t)}function u(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=function(t,e){if(t){if("string"==typeof t)return c(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?c(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,i=function(){};return{s:i,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,o=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return o=t.done,t},e:function(t){s=!0,a=t},f:function(){try{o||null==r.return||r.return()}finally{if(s)throw a}}}}function c(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r0){var o=new Uint8Array(a).buffer;this._queuedChunks.push(o)}this._pdfDataRangeTransport=r,this._isStreamingSupported=!e.disableStream,this._isRangeSupported=!e.disableRange,this._contentLength=e.length,this._fullRequestReader=null,this._rangeReaders=[],this._pdfDataRangeTransport.addRangeListener((function(t,e){i._onReceiveData({begin:t,chunk:e})})),this._pdfDataRangeTransport.addProgressListener((function(t,e){i._onProgress({loaded:t,total:e})})),this._pdfDataRangeTransport.addProgressiveReadListener((function(t){i._onReceiveData({chunk:t})})),this._pdfDataRangeTransport.addProgressiveDoneListener((function(){i._onProgressiveDone()})),this._pdfDataRangeTransport.transportReady()}return d(t,[{key:"_onReceiveData",value:function(t){var e=new Uint8Array(t.chunk).buffer;if(void 0===t.begin)this._fullRequestReader?this._fullRequestReader._enqueue(e):this._queuedChunks.push(e);else{var r=this._rangeReaders.some((function(r){return r._begin===t.begin&&(r._enqueue(e),!0)}));(0,n.assert)(r,"_onReceiveData - no \`PDFDataTransportStreamRangeReader\` instance found.")}}},{key:"_progressiveDataLength",get:function(){var t,e;return null!==(t=null===(e=this._fullRequestReader)||void 0===e?void 0:e._loaded)&&void 0!==t?t:0}},{key:"_onProgress",value:function(t){var e,r,n,i;void 0===t.total?null===(e=this._rangeReaders[0])||void 0===e||null===(r=e.onProgress)||void 0===r||r.call(e,{loaded:t.loaded}):null===(n=this._fullRequestReader)||void 0===n||null===(i=n.onProgress)||void 0===i||i.call(n,{loaded:t.loaded,total:t.total})}},{key:"_onProgressiveDone",value:function(){var t;null===(t=this._fullRequestReader)||void 0===t||t.progressiveDone(),this._progressiveDone=!0}},{key:"_removeRangeReader",value:function(t){var e=this._rangeReaders.indexOf(t);e>=0&&this._rangeReaders.splice(e,1)}},{key:"getFullReader",value:function(){(0,n.assert)(!this._fullRequestReader,"PDFDataTransportStream.getFullReader can only be called once.");var t=this._queuedChunks;return this._queuedChunks=null,new v(this,t,this._progressiveDone,this._contentDispositionFilename)}},{key:"getRangeReader",value:function(t,e){if(e<=this._progressiveDataLength)return null;var r=new y(this,t,e);return this._pdfDataRangeTransport.requestDataRange(t,e),this._rangeReaders.push(r),r}},{key:"cancelAllRequests",value:function(t){var e;null===(e=this._fullRequestReader)||void 0===e||e.cancel(t);var r,n=u(this._rangeReaders.slice(0));try{for(n.s();!(r=n.n()).done;)r.value.cancel(t)}catch(t){n.e(t)}finally{n.f()}this._pdfDataRangeTransport.abort()}}]),t}();e.PDFDataTransportStream=p;var v=function(){function t(e,r){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;h(this,t),this._stream=e,this._done=n||!1,this._filename=(0,i.isPdfFile)(a)?a:null,this._queuedChunks=r||[],this._loaded=0;var o,s=u(this._queuedChunks);try{for(s.s();!(o=s.n()).done;){var l=o.value;this._loaded+=l.byteLength}}catch(t){s.e(t)}finally{s.f()}this._requests=[],this._headersReady=Promise.resolve(),e._fullRequestReader=this,this.onProgress=null}var e;return d(t,[{key:"_enqueue",value:function(t){this._done||(this._requests.length>0?this._requests.shift().resolve({value:t,done:!1}):this._queuedChunks.push(t),this._loaded+=t.byteLength)}},{key:"headersReady",get:function(){return this._headersReady}},{key:"filename",get:function(){return this._filename}},{key:"isRangeSupported",get:function(){return this._stream._isRangeSupported}},{key:"isStreamingSupported",get:function(){return this._stream._isStreamingSupported}},{key:"contentLength",get:function(){return this._stream._contentLength}},{key:"read",value:(e=s(a().mark((function t(){var e,r;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!(this._queuedChunks.length>0)){t.next=3;break}return e=this._queuedChunks.shift(),t.abrupt("return",{value:e,done:!1});case 3:if(!this._done){t.next=5;break}return t.abrupt("return",{value:void 0,done:!0});case 5:return r=(0,n.createPromiseCapability)(),this._requests.push(r),t.abrupt("return",r.promise);case 8:case"end":return t.stop()}}),t,this)}))),function(){return e.apply(this,arguments)})},{key:"cancel",value:function(t){this._done=!0;var e,r=u(this._requests);try{for(r.s();!(e=r.n()).done;)e.value.resolve({value:void 0,done:!0})}catch(t){r.e(t)}finally{r.f()}this._requests.length=0}},{key:"progressiveDone",value:function(){this._done||(this._done=!0)}}]),t}(),y=function(){function t(e,r,n){h(this,t),this._stream=e,this._begin=r,this._end=n,this._queuedChunk=null,this._requests=[],this._done=!1,this.onProgress=null}var e;return d(t,[{key:"_enqueue",value:function(t){if(!this._done){if(0===this._requests.length)this._queuedChunk=t;else{this._requests.shift().resolve({value:t,done:!1});var e,r=u(this._requests);try{for(r.s();!(e=r.n()).done;)e.value.resolve({value:void 0,done:!0})}catch(t){r.e(t)}finally{r.f()}this._requests.length=0}this._done=!0,this._stream._removeRangeReader(this)}}},{key:"isStreamingSupported",get:function(){return!1}},{key:"read",value:(e=s(a().mark((function t(){var e,r;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!this._queuedChunk){t.next=4;break}return e=this._queuedChunk,this._queuedChunk=null,t.abrupt("return",{value:e,done:!1});case 4:if(!this._done){t.next=6;break}return t.abrupt("return",{value:void 0,done:!0});case 6:return r=(0,n.createPromiseCapability)(),this._requests.push(r),t.abrupt("return",r.promise);case 9:case"end":return t.stop()}}),t,this)}))),function(){return e.apply(this,arguments)})},{key:"cancel",value:function(t){this._done=!0;var e,r=u(this._requests);try{for(r.s();!(e=r.n()).done;)e.value.resolve({value:void 0,done:!0})}catch(t){r.e(t)}finally{r.f()}this._requests.length=0,this._stream._removeRangeReader(this)}}]),t}()},(t,e)=>{function r(t){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r(t)}function n(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r=t.length?{done:!0}:{done:!1,value:t[i++]}},e:function(t){throw t},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,l=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return s=t.done,t},e:function(t){l=!0,o=t},f:function(){try{s||null==r.return||r.return()}finally{if(l)throw o}}}}(i.children);try{for(u.s();!(l=u.n()).done;)e(l.value)}catch(t){u.e(t)}finally{u.f()}}}}(e),i}},{key:"shouldBuildText",value:function(t){return!("textarea"===t||"input"===t||"option"===t||"select"===t)}}],null&&i(e.prototype,null),r&&i(e,r),Object.defineProperty(e,"prototype",{writable:!1}),t}();e.XfaText=a},(t,e,r)=>{function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}Object.defineProperty(e,"__esModule",{value:!0}),e.NodeStandardFontDataFactory=e.NodeCanvasFactory=e.NodeCMapReaderFactory=void 0;var i=r(138);function a(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t,e){for(var r=0;r{function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}Object.defineProperty(e,"__esModule",{value:!0}),e.TextLayerRenderTask=void 0,e.renderTextLayer=function(t){t.textContentSource||!t.textContent&&!t.textContentStream||((0,a.deprecated)("The TextLayerRender \`textContent\`/\`textContentStream\` parameters will be removed in the future, please use \`textContentSource\` instead."),t.textContentSource=t.textContent||t.textContentStream);var e=new p(t);return e._render(),e},e.updateTextLayer=function(t){var e=t.container,r=t.viewport,n=t.textDivs,i=t.textDivProperties,o=t.isOffscreenCanvasSupported,l=t.mustRotate,u=void 0===l||l,c=t.mustRescale,f=void 0===c||c;if(u&&(0,a.setLayerDimensions)(e,{rotation:r.rotation}),f){var p,v=h(0,o),y={prevFontSize:null,prevFontFamily:null,div:null,scale:r.scale*(globalThis.devicePixelRatio||1),properties:null,ctx:v},m=s(n);try{for(m.s();!(p=m.n()).done;){var g=p.value;y.properties=i.get(g),y.div=g,d(y)}}catch(t){m.e(t)}finally{m.f()}}};var i=r(1),a=r(137);function o(t,e){for(var r=0;r=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,o=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return o=t.done,t},e:function(t){s=!0,a=t},f:function(){try{o||null==r.return||r.return()}finally{if(s)throw a}}}}function l(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r=0;f-=4)if(l[f]>0){o=Math.ceil(f/4/u);break}n.clearRect(0,0,u,u),n.strokeText("A",0,u),a=0;for(var d=0,p=(l=n.getImageData(0,0,u,u).data).length;d0){a=u-Math.floor(d/4/u);break}if(n.canvas.width=n.canvas.height=0,a){var v=a/(a+o);return c.set(t,v),v}return c.set(t,.8),.8}(l.fontFamily,t._isOffscreenCanvasSupported);0===s?(f=o[4],d=o[5]-v):(f=o[4]+v*Math.sin(s),d=o[5]-v*Math.cos(s));var y="calc(var(--scale-factor)*",m=n.style;t._container===t._rootContainer?(m.left="".concat((100*f/t._pageWidth).toFixed(2),"%"),m.top="".concat((100*d/t._pageHeight).toFixed(2),"%")):(m.left="".concat(y).concat(f.toFixed(2),"px)"),m.top="".concat(y).concat(d.toFixed(2),"px)")),m.fontSize="".concat(y).concat(p.toFixed(2),"px)"),m.fontFamily=l.fontFamily,a.fontSize=p,n.setAttribute("role","presentation"),n.textContent=e.str,n.dir=e.dir,t._fontInspectorEnabled&&(n.dataset.fontName=e.fontName),0!==s&&(a.angle=s*(180/Math.PI));var g=!1;if(e.str.length>1)g=!0;else if(" "!==e.str&&e.transform[0]!==e.transform[3]){var b=Math.abs(e.transform[0]),_=Math.abs(e.transform[3]);b!==_&&Math.max(b,_)/Math.min(b,_)>1.5&&(g=!0)}g&&(a.canvasWidth=l.vertical?e.height:e.width),t._textDivProperties.set(n,a),t._isReadableStream&&t._layoutText(n)}function d(t){var e=t.div,r=t.scale,n=t.properties,i=t.ctx,a=t.prevFontSize,o=t.prevFontFamily,s=e.style,l="";if(0!==n.canvasWidth&&n.hasText){var u=s.fontFamily,c=n.canvasWidth,h=n.fontSize;a===h&&o===u||(i.font="".concat(h*r,"px ").concat(u),t.prevFontSize=h,t.prevFontFamily=u);var f=i.measureText(e.textContent).width;f>0&&(l="scaleX(".concat(c*r/f,")"))}0!==n.angle&&(l="rotate(".concat(n.angle,"deg) ").concat(l)),l.length>0&&(s.transform=l)}var p=function(){function t(e){var r,n=this,o=e.textContentSource,s=e.container,l=e.viewport,u=e.textDivs,c=e.textDivProperties,f=e.textContentItemsStr,d=e.isOffscreenCanvasSupported;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this._textContentSource=o,this._isReadableStream=o instanceof ReadableStream,this._container=this._rootContainer=s,this._textDivs=u||[],this._textContentItemsStr=f||[],this._fontInspectorEnabled=!(null===(r=globalThis.FontInspector)||void 0===r||!r.enabled),this._reader=null,this._textDivProperties=c||new WeakMap,this._canceled=!1,this._capability=(0,i.createPromiseCapability)(),this._layoutTextParams={prevFontSize:null,prevFontFamily:null,div:null,scale:l.scale*(globalThis.devicePixelRatio||1),properties:null,ctx:h(0,d)};var p=l.rawDims,v=p.pageWidth,y=p.pageHeight,m=p.pageX,g=p.pageY;this._transform=[1,0,0,-1,-m,g+y],this._pageWidth=v,this._pageHeight=y,(0,a.setLayerDimensions)(s,l),this._capability.promise.finally((function(){n._layoutTextParams=null})).catch((function(){}))}var e,r;return e=t,(r=[{key:"promise",get:function(){return this._capability.promise}},{key:"cancel",value:function(){this._canceled=!0,this._reader&&(this._reader.cancel(new i.AbortException("TextLayer task cancelled.")).catch((function(){})),this._reader=null),this._capability.reject(new i.AbortException("TextLayer task cancelled."))}},{key:"_processItems",value:function(t,e){var r,n=s(t);try{for(n.s();!(r=n.n()).done;){var i=r.value;if(void 0!==i.str)this._textContentItemsStr.push(i.str),f(this,i,e);else if("beginMarkedContentProps"===i.type||"beginMarkedContent"===i.type){var a=this._container;this._container=document.createElement("span"),this._container.classList.add("markedContent"),null!==i.id&&this._container.setAttribute("id","".concat(i.id)),a.append(this._container)}else"endMarkedContent"===i.type&&(this._container=this._container.parentNode)}}catch(t){n.e(t)}finally{n.f()}}},{key:"_layoutText",value:function(t){var e=this._layoutTextParams.properties=this._textDivProperties.get(t);if(this._layoutTextParams.div=t,d(this._layoutTextParams),e.hasText&&this._container.append(t),e.hasEOL){var r=document.createElement("br");r.setAttribute("role","presentation"),this._container.append(r)}}},{key:"_render",value:function(){var t=this,e=(0,i.createPromiseCapability)(),r=Object.create(null);if(this._isReadableStream)this._reader=this._textContentSource.getReader(),function n(){t._reader.read().then((function(i){var a=i.value;i.done?e.resolve():(Object.assign(r,a.styles),t._processItems(a.items,r),n())}),e.reject)}();else{if(!this._textContentSource)throw new Error('No "textContentSource" parameter specified.');var n=this._textContentSource,a=n.items,o=n.styles;this._processItems(a,o),e.resolve()}e.promise.then((function(){r=null,function(t){if(!t._canceled){var e=t._textDivs,r=t._capability;if(e.length>1e5)r.resolve();else{if(!t._isReadableStream){var n,i=s(e);try{for(i.s();!(n=i.n()).done;){var a=n.value;t._layoutText(a)}}catch(t){i.e(t)}finally{i.f()}}r.resolve()}}}(t)}),this._capability.reject)}}])&&o(e.prototype,r),Object.defineProperty(e,"prototype",{writable:!1}),t}();e.TextLayerRenderTask=p},(t,e,r)=>{function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}Object.defineProperty(e,"__esModule",{value:!0}),e.AnnotationEditorLayer=void 0;var i=r(1),a=r(136),o=r(153),s=r(154),l=r(137);function u(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=function(t,e){if(t){if("string"==typeof t)return c(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?c(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,i=function(){};return{s:i,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,o=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return o=t.done,t},e:function(t){s=!0,a=t},f:function(){try{o||null==r.return||r.return()}finally{if(s)throw a}}}}function c(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r0&&void 0!==arguments[0]?arguments[0]:m(this,C).getMode();y(this,R,N).call(this),t===i.AnnotationEditorType.INK?(this.addInkEditorIfNeeded(!1),this.disableClick()):this.enableClick(),m(this,C).unselectAll(),this.div.classList.toggle("freeTextEditing",t===i.AnnotationEditorType.FREETEXT),this.div.classList.toggle("inkEditing",t===i.AnnotationEditorType.INK)}},{key:"addInkEditorIfNeeded",value:function(t){if(t||m(this,C).getMode()===i.AnnotationEditorType.INK){if(!t){var e,r=u(m(this,E).values());try{for(r.s();!(e=r.n()).done;){var n=e.value;if(n.isEmpty())return void n.setInBackground()}}catch(t){r.e(t)}finally{r.f()}}y(this,M,D).call(this,{offsetX:0,offsetY:0}).setInBackground()}}},{key:"setEditingState",value:function(t){m(this,C).setEditingState(t)}},{key:"addCommands",value:function(t){m(this,C).addCommands(t)}},{key:"enable",value:function(){this.div.style.pointerEvents="auto";var t,e=u(m(this,E).values());try{for(e.s();!(t=e.n()).done;)t.value.enableEditing()}catch(t){e.e(t)}finally{e.f()}}},{key:"disable",value:function(){this.div.style.pointerEvents="none";var t,e=u(m(this,E).values());try{for(e.s();!(t=e.n()).done;)t.value.disableEditing()}catch(t){e.e(t)}finally{e.f()}}},{key:"setActiveEditor",value:function(t){m(this,C).getActive()!==t&&m(this,C).setActiveEditor(t)}},{key:"enableClick",value:function(){this.div.addEventListener("pointerdown",m(this,x)),this.div.addEventListener("pointerup",m(this,S))}},{key:"disableClick",value:function(){this.div.removeEventListener("pointerdown",m(this,x)),this.div.removeEventListener("pointerup",m(this,S))}},{key:"attach",value:function(t){m(this,E).set(t.id,t)}},{key:"detach",value:function(t){var e;m(this,E).delete(t.id),null===(e=m(this,A))||void 0===e||e.removePointerInTextLayer(t.contentDiv)}},{key:"remove",value:function(t){var e=this;m(this,C).removeEditor(t),this.detach(t),t.div.style.display="none",setTimeout((function(){t.div.style.display="",t.div.remove(),t.isAttachedToDOM=!1,document.activeElement===document.body&&m(e,C).focusMainContainer()}),0),m(this,T)||this.addInkEditorIfNeeded(!1)}},{key:"add",value:function(t){if(y(this,O,j).call(this,t),m(this,C).addEditor(t),this.attach(t),!t.isAttachedToDOM){var e=t.render();this.div.append(e),t.isAttachedToDOM=!0}this.moveEditorInDOM(t),t.onceAdded(),m(this,C).addToAnnotationStorage(t)}},{key:"moveEditorInDOM",value:function(t){var e;null===(e=m(this,A))||void 0===e||e.moveElementInDOM(this.div,t.div,t.contentDiv,!0)}},{key:"addOrRebuild",value:function(t){t.needsToBeRebuilt()?t.rebuild():this.add(t)}},{key:"addANewEditor",value:function(t){var e=this;this.addCommands({cmd:function(){e.addOrRebuild(t)},undo:function(){t.remove()},mustExec:!0})}},{key:"addUndoableEditor",value:function(t){var e=this;this.addCommands({cmd:function(){e.addOrRebuild(t)},undo:function(){t.remove()},mustExec:!1})}},{key:"getNextId",value:function(){return m(this,C).getId()}},{key:"deserialize",value:function(t){switch(t.annotationType){case i.AnnotationEditorType.FREETEXT:return o.FreeTextEditor.deserialize(t,this,m(this,C));case i.AnnotationEditorType.INK:return s.InkEditor.deserialize(t,this,m(this,C))}return null}},{key:"setSelected",value:function(t){m(this,C).setSelected(t)}},{key:"toggleSelected",value:function(t){m(this,C).toggleSelected(t)}},{key:"isSelected",value:function(t){return m(this,C).isSelected(t)}},{key:"unselect",value:function(t){m(this,C).unselect(t)}},{key:"pointerup",value:function(t){var e=i.FeatureTest.platform.isMac;0!==t.button||t.ctrlKey&&e||t.target===this.div&&m(this,P)&&(g(this,P,!1),m(this,k)?y(this,M,D).call(this,t):g(this,k,!0))}},{key:"pointerdown",value:function(t){var e=i.FeatureTest.platform.isMac;if(!(0!==t.button||t.ctrlKey&&e)&&t.target===this.div){g(this,P,!0);var r=m(this,C).getActive();g(this,k,!r||r.isEmpty())}}},{key:"drop",value:function(t){var e=t.dataTransfer.getData("text/plain"),r=m(this,C).getEditor(e);if(r){t.preventDefault(),t.dataTransfer.dropEffect="move",y(this,O,j).call(this,r);var n=this.div.getBoundingClientRect(),i=t.clientX-n.x,a=t.clientY-n.y;r.translate(i-r.startX,a-r.startY),this.moveEditorInDOM(r),r.div.focus()}}},{key:"dragover",value:function(t){t.preventDefault()}},{key:"destroy",value:function(){var t;(null===(t=m(this,C).getActive())||void 0===t?void 0:t.parent)===this&&m(this,C).setActiveEditor(null);var e,r=u(m(this,E).values());try{for(r.s();!(e=r.n()).done;){var n,i=e.value;null===(n=m(this,A))||void 0===n||n.removePointerInTextLayer(i.contentDiv),i.setParent(null),i.isAttachedToDOM=!1,i.div.remove()}}catch(t){r.e(t)}finally{r.f()}this.div=null,m(this,E).clear(),m(this,C).removeLayer(this)}},{key:"render",value:function(t){var e=t.viewport;this.viewport=e,(0,l.setLayerDimensions)(this.div,e),(0,a.bindEvents)(this,this.div,["dragover","drop"]);var r,n=u(m(this,C).getEditors(this.pageIndex));try{for(n.s();!(r=n.n()).done;){var i=r.value;this.add(i)}}catch(t){n.e(t)}finally{n.f()}this.updateMode()}},{key:"update",value:function(t){var e=t.viewport;m(this,C).commitOrRemove(),this.viewport=e,(0,l.setLayerDimensions)(this.div,{rotation:e.rotation}),this.updateMode()}},{key:"pageDimensions",get:function(){var t=this.viewport.rawDims;return[t.pageWidth,t.pageHeight]}}],r&&h(e.prototype,r),Object.defineProperty(e,"prototype",{writable:!1}),t}();function j(t){var e;t.parent!==this&&(this.attach(t),null===(e=t.parent)||void 0===e||e.detach(t),t.setParent(this),t.div&&t.isAttachedToDOM&&(t.div.remove(),this.div.append(t.div)))}function L(t){switch(m(this,C).getMode()){case i.AnnotationEditorType.FREETEXT:return new o.FreeTextEditor(t);case i.AnnotationEditorType.INK:return new s.InkEditor(t)}return null}function D(t){var e=this.getNextId(),r=y(this,F,L).call(this,{parent:this,id:e,x:t.offsetX,y:t.offsetY,uiManager:m(this,C)});return r&&this.add(r),r}function N(){g(this,T,!0);var t,e=u(m(this,E).values());try{for(e.s();!(t=e.n()).done;){var r=t.value;r.isEmpty()&&r.remove()}}catch(t){e.e(t)}finally{e.f()}g(this,T,!1)}e.AnnotationEditorLayer=I,_=I,(w=d(w="_initialized"))in _?Object.defineProperty(_,w,{value:false,enumerable:!0,configurable:!0,writable:!0}):_[w]=false},(t,e,r)=>{function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}Object.defineProperty(e,"__esModule",{value:!0}),e.FreeTextEditor=void 0;var i=r(1),a=r(136),o=r(135);function s(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=u(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,i=function(){};return{s:i,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,o=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return o=t.done,t},e:function(t){s=!0,a=t},f:function(){try{o||null==r.return||r.return()}finally{if(s)throw a}}}}function l(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,i,a,o,s=[],l=!0,u=!1;try{if(a=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;l=!1}else for(;!(l=(n=a.call(r)).done)&&(s.push(n.value),s.length!==e);l=!0);}catch(t){u=!0,i=t}finally{try{if(!l&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(u)throw i}}return s}}(t,e)||u(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function u(t,e){if(t){if("string"==typeof t)return c(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?c(t,e):void 0}}function c(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r{function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}Object.defineProperty(e,"__esModule",{value:!0}),e.InkEditor=void 0,Object.defineProperty(e,"fitCurve",{enumerable:!0,get:function(){return o.fitCurve}});var i=r(1),a=r(135),o=r(155),s=r(136);function l(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=h(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,i=function(){};return{s:i,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,o=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return o=t.done,t},e:function(t){s=!0,a=t},f:function(){try{o||null==r.return||r.return()}finally{if(s)throw a}}}}function u(t){return function(t){if(Array.isArray(t))return f(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||h(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function c(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,i,a,o,s=[],l=!0,u=!1;try{if(a=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;l=!1}else for(;!(l=(n=a.call(r)).done)&&(s.push(n.value),s.length!==e);l=!0);}catch(t){u=!0,i=t}finally{try{if(!l&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(u)throw i}}return s}}(t,e)||h(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function h(t,e){if(t){if("string"==typeof t)return f(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?f(t,e):void 0}}function f(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r.01&&(e=Math.ceil(t/P(this,M)),this.setDims(t,e));var i=c(this.parentDimensions,2),a=i[0],o=i[1];this.width=t/a,this.height=e/o,P(this,U)&&C(this,at,Tt).call(this,t,e),C(this,it,Pt).call(this),C(this,tt,kt).call(this),this.canvas.style.visibility="visible"}}},{key:"serialize",value:function(){if(this.isEmpty())return null;var t=this.getRect(0,0),e=this.rotation%180==0?t[3]-t[1]:t[2]-t[0],r=a.AnnotationEditor._colorManager.convert(this.ctx.strokeStyle);return{annotationType:i.AnnotationEditorType.INK,color:r,thickness:this.thickness,opacity:this.opacity,paths:C(this,st,Ft).call(this,this.scaleFactor/this.parentScale,this.translationX,this.translationY,e),pageIndex:this.pageIndex,rect:t,rotation:this.rotation}}}])&&v(e.prototype,r),o&&v(e,o),Object.defineProperty(e,"prototype",{writable:!1}),d}(a.AnnotationEditor);function vt(t){var e=this,r=this.thickness;this.addCommands({cmd:function(){e.thickness=t,C(e,ft,Lt).call(e)},undo:function(){e.thickness=r,C(e,ft,Lt).call(e)},mustExec:!0,type:i.AnnotationEditorParamsType.INK_THICKNESS,overwriteIfSameType:!0,keepUndo:!0})}function yt(t){var e=this,r=this.color;this.addCommands({cmd:function(){e.color=t,C(e,tt,kt).call(e)},undo:function(){e.color=r,C(e,tt,kt).call(e)},mustExec:!0,type:i.AnnotationEditorParamsType.INK_COLOR,overwriteIfSameType:!0,keepUndo:!0})}function mt(t){var e=this;t/=100;var r=this.opacity;this.addCommands({cmd:function(){e.opacity=t,C(e,tt,kt).call(e)},undo:function(){e.opacity=r,C(e,tt,kt).call(e)},mustExec:!0,type:i.AnnotationEditorParamsType.INK_OPACITY,overwriteIfSameType:!0,keepUndo:!0})}function gt(){var t=this.parentRotation,e=c(this.parentDimensions,2),r=e[0],n=e[1];switch(t){case 90:return[0,n,n,r];case 180:return[r,n,r,n];case 270:return[r,0,n,r];default:return[0,0,r,n]}}function bt(){var t=this.ctx,e=this.color,r=this.opacity,n=this.thickness,i=this.parentScale,a=this.scaleFactor;t.lineWidth=n*i/a,t.lineCap="round",t.lineJoin="round",t.miterLimit=10,t.strokeStyle="".concat(e).concat((0,s.opacityToHex)(r))}function _t(t,e){var r,n=this;this.isEditing=!0,P(this,W)||(E(this,W,!0),C(this,it,Pt).call(this),this.thickness||(this.thickness=pt._defaultThickness),this.color||(this.color=pt._defaultColor||a.AnnotationEditor._defaultLineColor),null!==(r=this.opacity)&&void 0!==r||(this.opacity=pt._defaultOpacity)),this.currentPath.push([t,e]),E(this,G,null),C(this,J,bt).call(this),this.ctx.beginPath(),this.ctx.moveTo(t,e),E(this,z,(function(){var t;P(n,z)&&(P(n,G)&&(n.isEmpty()?(n.ctx.setTransform(1,0,0,1,0,0),n.ctx.clearRect(0,0,n.canvas.width,n.canvas.height)):C(n,tt,kt).call(n),(t=n.ctx).lineTo.apply(t,u(P(n,G))),E(n,G,null),n.ctx.stroke()),window.requestAnimationFrame(P(n,z)))})),window.requestAnimationFrame(P(this,z))}function wt(t,e){var r=c(this.currentPath.at(-1),2),n=r[0],i=r[1];t===n&&e===i||(this.currentPath.push([t,e]),E(this,G,[t,e]))}function At(t,e){var r=this;this.ctx.closePath(),E(this,z,null),t=Math.min(Math.max(t,0),this.canvas.width),e=Math.min(Math.max(e,0),this.canvas.height);var n,i=c(this.currentPath.at(-1),2),a=i[0],s=i[1];if(t===a&&e===s||this.currentPath.push([t,e]),1!==this.currentPath.length)n=(0,o.fitCurve)(this.currentPath,30,null);else{var l=[t,e];n=[[l,l.slice(),l.slice(),l]]}var u=x(pt,pt,Ot).call(pt,n);this.currentPath.length=0,this.addCommands({cmd:function(){r.paths.push(n),r.bezierPath2D.push(u),r.rebuild()},undo:function(){r.paths.pop(),r.bezierPath2D.pop(),0===r.paths.length?r.remove():(r.canvas||(C(r,rt,xt).call(r),C(r,nt,Et).call(r)),C(r,ft,Lt).call(r))},mustExec:!0})}function kt(){if(this.isEmpty())C(this,ot,Ct).call(this);else{C(this,J,bt).call(this);var t=this.canvas,e=this.ctx;e.setTransform(1,0,0,1,0,0),e.clearRect(0,0,t.width,t.height),C(this,ot,Ct).call(this);var r,n=l(this.bezierPath2D);try{for(n.s();!(r=n.n()).done;){var i=r.value;e.stroke(i)}}catch(t){n.e(t)}finally{n.f()}}}function St(t){C(this,Z,At).call(this,t.offsetX,t.offsetY),this.canvas.removeEventListener("pointerleave",P(this,L)),this.canvas.removeEventListener("pointermove",P(this,j)),this.addToAnnotationStorage()}function xt(){var t=this;this.canvas=document.createElement("canvas"),this.canvas.width=this.canvas.height=0,this.canvas.className="inkEditorCanvas",pt._l10nPromise.get("editor_ink_canvas_aria_label").then((function(e){var r;return null===(r=t.canvas)||void 0===r?void 0:r.setAttribute("aria-label",e)})),this.div.append(this.canvas),this.ctx=this.canvas.getContext("2d")}function Et(){var t=this,e=null;E(this,B,new ResizeObserver((function(r){var n=r[0].contentRect;n.width&&n.height&&(null!==e&&clearTimeout(e),e=setTimeout((function(){t.fixDims(),e=null}),F),t.setDimensions(n.width,n.height))}))),P(this,B).observe(this.div)}function Pt(){if(P(this,W)){var t=c(this.parentDimensions,2),e=t[0],r=t[1];this.canvas.width=Math.ceil(this.width*e),this.canvas.height=Math.ceil(this.height*r),C(this,ot,Ct).call(this)}}function Tt(t,e){var r=C(this,ht,jt).call(this),n=(t-r)/P(this,I),i=(e-r)/P(this,R);this.scaleFactor=Math.min(n,i)}function Ct(){var t=C(this,ht,jt).call(this)/2;this.ctx.setTransform(this.scaleFactor,0,0,this.scaleFactor,this.translationX*this.scaleFactor+t,this.translationY*this.scaleFactor+t)}function Ot(t){for(var e=new Path2D,r=0,n=t.length;r0&&void 0!==arguments[0]&&arguments[0];if(!this.isEmpty())if(P(this,U)){var e=C(this,ct,It).call(this),r=C(this,ht,jt).call(this);E(this,I,Math.max(O,e[2]-e[0])),E(this,R,Math.max(O,e[3]-e[1]));var n=Math.ceil(r+P(this,I)*this.scaleFactor),i=Math.ceil(r+P(this,R)*this.scaleFactor),a=c(this.parentDimensions,2),o=a[0],s=a[1];this.width=n/o,this.height=i/s,E(this,M,n/i),C(this,dt,Dt).call(this);var l=this.translationX,u=this.translationY;this.translationX=-e[0],this.translationY=-e[1],C(this,it,Pt).call(this),C(this,tt,kt).call(this),E(this,q,n),E(this,H,i),this.setDims(n,i);var h=t?r/this.scaleFactor/2:0;this.translate(l-this.translationX-h,u-this.translationY-h)}else C(this,tt,kt).call(this)}function Dt(){var t=this.div.style;P(this,M)>=1?(t.minHeight="".concat(O,"px"),t.minWidth="".concat(Math.round(P(this,M)*O),"px")):(t.minWidth="".concat(O,"px"),t.minHeight="".concat(Math.round(O/P(this,M)),"px"))}e.InkEditor=pt,w(pt,"_defaultColor",null),w(pt,"_defaultOpacity",1),w(pt,"_defaultThickness",1),w(pt,"_l10nPromise",void 0),w(pt,"_type","ink")},(t,e,r)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.fitCurve=void 0;var n=r(156);e.fitCurve=n},t=>{function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},e(t)}function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function n(t,r){for(var n=0;nt.length)&&(e=t.length);for(var r=0,n=new Array(e);r.9999&&x<1.0001)break}d=f,y=p}if(_=[],(m=v.subtract(t[p-1],t[p+1])).every((function(t){return 0===t}))){var E=[-(m=v.subtract(t[p-1],t[p]))[1],m[0]];m[0]=E[0],m[1]=E[1]}return g=v.normalize(m),b=v.mulItems(g,-1),(_=_.concat(l(t.slice(0,p+1),e,g,n,i))).concat(l(t.slice(p),b,r,n,i))}function u(t,e,r,n,i,o){var s,l,u;s=function(t,e,r,n){var i,a,o,s,l,u,c,h,f,d,p,m,g,b,_,w,A,k=t[0],S=t[t.length-1];for(i=[k,null,null,S],a=v.zeros_Xx2x2(e.length),g=0,b=e.length;gi&&(i=n,a=s);return[i,a]}(t,s,e),h=a(c,2);return l=h[0],u=h[1],o&&o({bez:s,points:t,params:e,maxErr:l,maxPoint:u}),[s,l,u]}function c(t,e,r){return r.map((function(r,n){return h(t,e[n],r)}))}function h(t,e,r){var n=v.subtract(y.q(t,r),e),i=y.qprime(t,r),a=v.mulMatrix(n,i),o=v.sum(v.squareItems(i))+2*v.mulMatrix(n,y.qprimeprime(t,r));return 0===o?r:r-a/o}var f=function(t,e){for(var r,n=[0],i=t[0],a=0,o=1;o<=e;o++)r=y.q(t,o/e),a+=v.vectorLen(v.subtract(r,i)),n.push(a),i=r;return n.map((function(t){return t/a}))};function d(t,e,r,n){if(e<0)return 0;if(e>1)return 1;for(var i,a,o,s,l=1;l<=n;l++)if(e<=r[l]){o=(l-1)/n,a=l/n,s=(e-(i=r[l-1]))/(r[l]-i)*(a-o)+o;break}return s}function p(t,e){return v.normalize(v.subtract(t,e))}var v=function(){function t(){r(this,t)}return i(t,null,[{key:"zeros_Xx2x2",value:function(t){for(var e=[];t--;)e.push([0,0]);return e}},{key:"mulItems",value:function(t,e){return t.map((function(t){return t*e}))}},{key:"mulMatrix",value:function(t,e){return t.reduce((function(t,r,n){return t+r*e[n]}),0)}},{key:"subtract",value:function(t,e){return t.map((function(t,r){return t-e[r]}))}},{key:"addArrays",value:function(t,e){return t.map((function(t,r){return t+e[r]}))}},{key:"addItems",value:function(t,e){return t.map((function(t){return t+e}))}},{key:"sum",value:function(t){return t.reduce((function(t,e){return t+e}))}},{key:"dot",value:function(e,r){return t.mulMatrix(e,r)}},{key:"vectorLen",value:function(t){return Math.hypot.apply(Math,function(t){if(Array.isArray(t))return s(t)}(e=t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(e)||o(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}());var e}},{key:"divItems",value:function(t,e){return t.map((function(t){return t/e}))}},{key:"squareItems",value:function(t){return t.map((function(t){return t*t}))}},{key:"normalize",value:function(t){return this.divItems(t,this.vectorLen(t))}}]),t}(),y=function(){function t(){r(this,t)}return i(t,null,[{key:"q",value:function(t,e){var r=1-e,n=v.mulItems(t[0],r*r*r),i=v.mulItems(t[1],3*r*r*e),a=v.mulItems(t[2],3*r*e*e),o=v.mulItems(t[3],e*e*e);return v.addArrays(v.addArrays(n,i),v.addArrays(a,o))}},{key:"qprime",value:function(t,e){var r=1-e,n=v.mulItems(v.subtract(t[1],t[0]),3*r*r),i=v.mulItems(v.subtract(t[2],t[1]),6*r*e),a=v.mulItems(v.subtract(t[3],t[2]),3*e*e);return v.addArrays(v.addArrays(n,i),a)}},{key:"qprimeprime",value:function(t,e){return v.addArrays(v.mulItems(v.addArrays(v.subtract(t[2],v.mulItems(t[1],2)),t[0]),6*(1-e)),v.mulItems(v.addArrays(v.subtract(t[3],v.mulItems(t[2],2)),t[1]),6*e))}}]),t}();t.exports=function(t,e,r){if(!Array.isArray(t))throw new TypeError("First argument should be an array");if(t.forEach((function(e){if(!Array.isArray(e)||e.some((function(t){return"number"!=typeof t}))||e.length!==t[0].length)throw Error("Each point should be an array of numbers. Each point should have the same amount of numbers.")})),(t=t.filter((function(e,r){return 0===r||!e.every((function(e,n){return e===t[r-1][n]}))}))).length<2)return[];var n=t.length,i=p(t[1],t[0]),a=p(t[n-2],t[n-1]);return l(t,i,a,e,r)},t.exports.fitCubic=l,t.exports.createTangent=p},(t,e,r)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.AnnotationLayer=void 0;var n=r(1),i=r(137),a=r(134),o=r(158),s=r(159);function l(t,e,r){return function(t,e){if(t!==e)throw new TypeError("Private static access of wrong provenance")}(t,e),r}function u(){return u="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(t,e,r){var n=function(t,e){for(;!Object.prototype.hasOwnProperty.call(t,e)&&null!==(t=v(t)););return t}(t,e);if(n){var i=Object.getOwnPropertyDescriptor(n,e);return i.get?i.get.call(arguments.length<3?t:r):i.value}},u.apply(this,arguments)}function c(t){return function(t){if(Array.isArray(t))return w(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||_(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function h(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&f(t,e)}function f(t,e){return f=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},f(t,e)}function d(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,n=v(t);if(e){var i=v(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return function(t,e){if(e&&("object"===A(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return p(t)}(this,r)}}function p(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function v(t){return v=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},v(t)}function y(t,e){!function(t,e){if(e.has(t))throw new TypeError("Cannot initialize the same private elements twice on an object")}(t,e),e.add(t)}function m(t,e,r){if(!e.has(t))throw new TypeError("attempted to get private field on non-instance");return r}function g(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=_(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,i=function(){};return{s:i,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,o=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return o=t.done,t},e:function(t){s=!0,a=t},f:function(){try{o||null==r.return||r.return()}finally{if(s)throw a}}}}function b(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,i,a,o,s=[],l=!0,u=!1;try{if(a=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;l=!1}else for(;!(l=(n=a.call(r)).done)&&(s.push(n.value),s.length!==e);l=!0);}catch(t){u=!0,i=t}finally{try{if(!l&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(u)throw i}}return s}}(t,e)||_(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function _(t,e){if(t){if("string"==typeof t)return w(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?w(t,e):void 0}}function w(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r1&&void 0!==arguments[1]?arguments[1]:{},n=r.isRenderable,i=void 0!==n&&n,a=r.ignoreBorder,o=void 0!==a&&a,s=r.createQuadrilaterals,l=void 0!==s&&s;k(this,t),this.isRenderable=i,this.data=e.data,this.layer=e.layer,this.page=e.page,this.viewport=e.viewport,this.linkService=e.linkService,this.downloadManager=e.downloadManager,this.imageResourcesPath=e.imageResourcesPath,this.renderForms=e.renderForms,this.svgFactory=e.svgFactory,this.annotationStorage=e.annotationStorage,this.enableScripting=e.enableScripting,this.hasJSActions=e.hasJSActions,this._fieldObjects=e.fieldObjects,i&&(this.container=this._createContainer(o)),l&&(this.quadrilaterals=this._createQuadrilaterals(o))}return x(t,[{key:"_createContainer",value:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],e=this.data,r=this.page,i=this.viewport,a=document.createElement("section");a.setAttribute("data-annotation-id",e.id);var o=i.rawDims,s=o.pageWidth,l=o.pageHeight,u=o.pageX,c=o.pageY,h=C(e.rect),f=h.width,d=h.height,p=n.Util.normalizeRect([e.rect[0],r.view[3]-e.rect[1]+r.view[1],e.rect[2],r.view[3]-e.rect[3]+r.view[1]]);if(!t&&e.borderStyle.width>0){a.style.borderWidth="".concat(e.borderStyle.width,"px");var v=e.borderStyle.horizontalCornerRadius,y=e.borderStyle.verticalCornerRadius;if(v>0||y>0){var m="calc(".concat(v,"px * var(--scale-factor)) / calc(").concat(y,"px * var(--scale-factor))");a.style.borderRadius=m}else if(this instanceof H){var g="calc(".concat(f,"px * var(--scale-factor)) / calc(").concat(d,"px * var(--scale-factor))");a.style.borderRadius=g}switch(e.borderStyle.style){case n.AnnotationBorderStyleType.SOLID:a.style.borderStyle="solid";break;case n.AnnotationBorderStyleType.DASHED:a.style.borderStyle="dashed";break;case n.AnnotationBorderStyleType.BEVELED:(0,n.warn)("Unimplemented border style: beveled");break;case n.AnnotationBorderStyleType.INSET:(0,n.warn)("Unimplemented border style: inset");break;case n.AnnotationBorderStyleType.UNDERLINE:a.style.borderBottomStyle="solid"}var b=e.borderColor||null;b?a.style.borderColor=n.Util.makeHexColor(0|b[0],0|b[1],0|b[2]):a.style.borderWidth=0}a.style.left="".concat(100*(p[0]-u)/s,"%"),a.style.top="".concat(100*(p[1]-c)/l,"%");var _=e.rotation;return e.hasOwnCanvas||0===_?(a.style.width="".concat(100*f/s,"%"),a.style.height="".concat(100*d/l,"%")):this.setRotation(_,a),a}},{key:"setRotation",value:function(t){var e,r,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.container,i=this.viewport.rawDims,a=i.pageWidth,o=i.pageHeight,s=C(this.data.rect),l=s.width,u=s.height;t%180==0?(e=100*l/a,r=100*u/o):(e=100*u/a,r=100*l/o),n.style.width="".concat(e,"%"),n.style.height="".concat(r,"%"),n.setAttribute("data-main-rotation",(360-t)%360)}},{key:"_commonActions",get:function(){var t=this,e=function(t,e,r){var n=r.detail[t];r.target.style[e]=o.ColorConverters["".concat(n[0],"_HTML")](n.slice(1))};return(0,n.shadow)(this,"_commonActions",{display:function(e){var r=e.detail.display%2==1;t.container.style.visibility=r?"hidden":"visible",t.annotationStorage.setValue(t.data.id,{hidden:r,print:0===e.detail.display||3===e.detail.display})},print:function(e){t.annotationStorage.setValue(t.data.id,{print:e.detail.print})},hidden:function(e){t.container.style.visibility=e.detail.hidden?"hidden":"visible",t.annotationStorage.setValue(t.data.id,{hidden:e.detail.hidden})},focus:function(t){setTimeout((function(){return t.target.focus({preventScroll:!1})}),0)},userName:function(t){t.target.title=t.detail.userName},readonly:function(t){t.detail.readonly?t.target.setAttribute("readonly",""):t.target.removeAttribute("readonly")},required:function(e){t._setRequired(e.target,e.detail.required)},bgColor:function(t){e("bgColor","backgroundColor",t)},fillColor:function(t){e("fillColor","backgroundColor",t)},fgColor:function(t){e("fgColor","color",t)},textColor:function(t){e("textColor","color",t)},borderColor:function(t){e("borderColor","borderColor",t)},strokeColor:function(t){e("strokeColor","borderColor",t)},rotation:function(e){var r=e.detail.rotation;t.setRotation(r),t.annotationStorage.setValue(t.data.id,{rotation:r})}})}},{key:"_dispatchEventFromSandbox",value:function(t,e){for(var r=this._commonActions,n=0,i=Object.keys(e.detail);n0&&void 0!==arguments[0]&&arguments[0];if(!this.data.quadPoints)return null;var e,r=[],n=this.data.rect,i=g(this.data.quadPoints);try{for(i.s();!(e=i.n()).done;){var a=e.value;this.data.rect=[a[2].x,a[2].y,a[1].x,a[1].y],r.push(this._createContainer(t))}}catch(t){i.e(t)}finally{i.f()}return this.data.rect=n,r}},{key:"_createPopup",value:function(t,e){var r=this.container;this.quadrilaterals&&(t=t||this.quadrilaterals,r=this.quadrilaterals[0]),t||((t=document.createElement("div")).className="popupTriggerArea",r.append(t));var n=new Y({container:r,trigger:t,color:e.color,titleObj:e.titleObj,modificationDate:e.modificationDate,contentsObj:e.contentsObj,richText:e.richText,hideWrapper:!0}).render();n.style.left="100%",r.append(n)}},{key:"_renderQuadrilaterals",value:function(t){var e,r=g(this.quadrilaterals);try{for(r.s();!(e=r.n()).done;)e.value.className=t}catch(t){r.e(t)}finally{r.f()}return this.quadrilaterals}},{key:"render",value:function(){(0,n.unreachable)("Abstract method \`AnnotationElement.render\` called")}},{key:"_getElementsByName",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,r=[];if(this._fieldObjects){var i=this._fieldObjects[t];if(i){var a,o=g(i);try{for(o.s();!(a=o.n()).done;){var s=a.value,l=s.page,u=s.id,c=s.exportValues;if(-1!==l&&u!==e){var h="string"==typeof c?c:null,f=document.querySelector('[data-element-id="'.concat(u,'"]'));!f||T.has(f)?r.push({id:u,exportValue:h,domElement:f}):(0,n.warn)("_getElementsByName - element not allowed: ".concat(u))}}}catch(t){o.e(t)}finally{o.f()}}return r}var d,p=g(document.getElementsByName(t));try{for(p.s();!(d=p.n()).done;){var v=d.value,y=v.exportValue,m=v.getAttribute("data-element-id");m!==e&&T.has(v)&&r.push({id:m,exportValue:y,domElement:v})}}catch(t){p.e(t)}finally{p.f()}return r}}]),t}(),M=new WeakSet,R=new WeakSet,I=function(t){h(r,t);var e=d(r);function r(t){var n,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return k(this,r),y(p(n=e.call(this,t,{isRenderable:!0,ignoreBorder:!(null==i||!i.ignoreBorder),createQuadrilaterals:!0})),R),y(p(n),M),n.isTooltipOnly=t.data.isTooltipOnly,n}return x(r,[{key:"render",value:function(){var t=this.data,e=this.linkService,r=document.createElement("a");r.setAttribute("data-element-id",t.id);var n=!1;return t.url?(e.addLinkAttributes(r,t.url,t.newWindow),n=!0):t.action?(this._bindNamedAction(r,t.action),n=!0):t.attachment?(this._bindAttachment(r,t.attachment),n=!0):t.setOCGState?(m(this,R,L).call(this,r,t.setOCGState),n=!0):t.dest?(this._bindLink(r,t.dest),n=!0):(t.actions&&(t.actions.Action||t.actions["Mouse Up"]||t.actions["Mouse Down"])&&this.enableScripting&&this.hasJSActions&&(this._bindJSAction(r,t),n=!0),t.resetForm?(this._bindResetFormAction(r,t.resetForm),n=!0):this.isTooltipOnly&&!n&&(this._bindLink(r,""),n=!0)),this.quadrilaterals?this._renderQuadrilaterals("linkAnnotation").map((function(t,e){var n=0===e?r:r.cloneNode();return t.append(n),t})):(this.container.className="linkAnnotation",n&&this.container.append(r),this.container)}},{key:"_bindLink",value:function(t,e){var r=this;t.href=this.linkService.getDestinationHash(e),t.onclick=function(){return e&&r.linkService.goToDestination(e),!1},(e||""===e)&&m(this,M,j).call(this)}},{key:"_bindNamedAction",value:function(t,e){var r=this;t.href=this.linkService.getAnchorUrl(""),t.onclick=function(){return r.linkService.executeNamedAction(e),!1},m(this,M,j).call(this)}},{key:"_bindAttachment",value:function(t,e){var r=this;t.href=this.linkService.getAnchorUrl(""),t.onclick=function(){var t;return null===(t=r.downloadManager)||void 0===t||t.openOrDownloadData(r.container,e.content,e.filename),!1},m(this,M,j).call(this)}},{key:"_bindJSAction",value:function(t,e){var r=this;t.href=this.linkService.getAnchorUrl("");for(var n=new Map([["Action","onclick"],["Mouse Up","onmouseup"],["Mouse Down","onmousedown"]]),i=function(){var i=o[a],s=n.get(i);if(!s)return"continue";t[s]=function(){var t;return null===(t=r.linkService.eventBus)||void 0===t||t.dispatch("dispatcheventinsandbox",{source:r,detail:{id:e.id,name:i}}),!1}},a=0,o=Object.keys(e.actions);ao&&(a=a.slice(0,o));var s={userValue:a,formattedValue:null,lastCommittedValue:null,commitKey:1};this.data.multiLine?((n=document.createElement("textarea")).textContent=a,this.data.doNotScroll&&(n.style.overflowY="hidden")):((n=document.createElement("input")).type="text",n.setAttribute("value",a),this.data.doNotScroll&&(n.style.overflowX="hidden")),T.add(n),n.setAttribute("data-element-id",r),n.disabled=this.data.readOnly,n.name=this.data.fieldName,n.tabIndex=P,this._setRequired(n,this.data.required),o&&(n.maxLength=o),n.addEventListener("input",(function(i){e.setValue(r,{value:i.target.value}),t.setPropertyOnSiblings(n,"value",i.target.value,"value")})),n.addEventListener("resetform",(function(e){var r,i=null!==(r=t.data.defaultFieldValue)&&void 0!==r?r:"";n.value=s.userValue=i,s.formattedValue=null}));var l=function(t){var e=s.formattedValue;null!=e&&(t.target.value=e),t.target.scrollLeft=0};if(this.enableScripting&&this.hasJSActions){var u;n.addEventListener("focus",(function(t){var e=t.target;s.userValue&&(e.value=s.userValue),s.lastCommittedValue=e.value,s.commitKey=1})),n.addEventListener("updatefromsandbox",(function(n){var i={value:function(t){var n;s.userValue=null!==(n=t.detail.value)&&void 0!==n?n:"",e.setValue(r,{value:s.userValue.toString()}),t.target.value=s.userValue},formattedValue:function(t){var n=t.detail.formattedValue;s.formattedValue=n,null!=n&&t.target!==document.activeElement&&(t.target.value=n),e.setValue(r,{formattedValue:n})},selRange:function(t){var e;(e=t.target).setSelectionRange.apply(e,c(t.detail.selRange))},charLimit:function(n){var i,a=n.detail.charLimit,o=n.target;if(0!==a){o.setAttribute("maxLength",a);var l=s.userValue;!l||l.length<=a||(l=l.slice(0,a),o.value=s.userValue=l,e.setValue(r,{value:l}),null===(i=t.linkService.eventBus)||void 0===i||i.dispatch("dispatcheventinsandbox",{source:t,detail:{id:r,name:"Keystroke",value:l,willCommit:!0,commitKey:1,selStart:o.selectionStart,selEnd:o.selectionEnd}}))}else o.removeAttribute("maxLength")}};t._dispatchEventFromSandbox(i,n)})),n.addEventListener("keydown",(function(e){var n;s.commitKey=1;var i=-1;if("Escape"===e.key?i=0:"Enter"!==e.key||t.data.multiLine?"Tab"===e.key&&(s.commitKey=3):i=2,-1!==i){var a=e.target.value;s.lastCommittedValue!==a&&(s.lastCommittedValue=a,s.userValue=a,null===(n=t.linkService.eventBus)||void 0===n||n.dispatch("dispatcheventinsandbox",{source:t,detail:{id:r,name:"Keystroke",value:a,willCommit:!0,commitKey:i,selStart:e.target.selectionStart,selEnd:e.target.selectionEnd}}))}}));var h=l;l=null,n.addEventListener("blur",(function(e){if(e.relatedTarget){var n,i=e.target.value;s.userValue=i,s.lastCommittedValue!==i&&(null===(n=t.linkService.eventBus)||void 0===n||n.dispatch("dispatcheventinsandbox",{source:t,detail:{id:r,name:"Keystroke",value:i,willCommit:!0,commitKey:s.commitKey,selStart:e.target.selectionStart,selEnd:e.target.selectionEnd}})),h(e)}})),null!==(u=this.data.actions)&&void 0!==u&&u.Keystroke&&n.addEventListener("beforeinput",(function(e){var n;s.lastCommittedValue=null;var i=e.data,a=e.target,o=a.value,l=a.selectionStart,u=a.selectionEnd,c=l,h=u;switch(e.inputType){case"deleteWordBackward":var f=o.substring(0,l).match(/\\w*[^\\w]*$/);f&&(c-=f[0].length);break;case"deleteWordForward":var d=o.substring(l).match(/^[^\\w]*\\w*/);d&&(h+=d[0].length);break;case"deleteContentBackward":l===u&&(c-=1);break;case"deleteContentForward":l===u&&(h+=1)}e.preventDefault(),null===(n=t.linkService.eventBus)||void 0===n||n.dispatch("dispatcheventinsandbox",{source:t,detail:{id:r,name:"Keystroke",value:o,change:i||"",willCommit:!1,selStart:c,selEnd:h}})})),this._setEventListeners(n,[["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"]],(function(t){return t.target.value}))}if(l&&n.addEventListener("blur",l),this.data.comb){var f=(this.data.rect[2]-this.data.rect[0])/o;n.classList.add("comb"),n.style.letterSpacing="calc(".concat(f,"px * var(--scale-factor) - 1ch)")}}else(n=document.createElement("div")).textContent=this.data.fieldValue,n.style.verticalAlign="middle",n.style.display="table-cell";return this._setTextStyle(n),this._setBackgroundColor(n),this._setDefaultPropertiesFromJS(n),this.container.append(n),this.container}}]),r}(G),q=function(t){h(r,t);var e=d(r);function r(t){return k(this,r),e.call(this,t,{isRenderable:t.renderForms})}return x(r,[{key:"render",value:function(){var t=this,e=this.annotationStorage,r=this.data,n=r.id,i=e.getValue(n,{value:r.exportValue===r.fieldValue}).value;"string"==typeof i&&(i="Off"!==i,e.setValue(n,{value:i})),this.container.className="buttonWidgetAnnotation checkBox";var a=document.createElement("input");return T.add(a),a.setAttribute("data-element-id",n),a.disabled=r.readOnly,this._setRequired(a,this.data.required),a.type="checkbox",a.name=r.fieldName,i&&a.setAttribute("checked",!0),a.setAttribute("exportValue",r.exportValue),a.tabIndex=P,a.addEventListener("change",(function(i){var a,o=i.target,s=o.name,l=o.checked,u=g(t._getElementsByName(s,n));try{for(u.s();!(a=u.n()).done;){var c=a.value,h=l&&c.exportValue===r.exportValue;c.domElement&&(c.domElement.checked=h),e.setValue(c.id,{value:h})}}catch(t){u.e(t)}finally{u.f()}e.setValue(n,{value:l})})),a.addEventListener("resetform",(function(t){var e=r.defaultFieldValue||"Off";t.target.checked=e===r.exportValue})),this.enableScripting&&this.hasJSActions&&(a.addEventListener("updatefromsandbox",(function(r){var i={value:function(t){t.target.checked="Off"!==t.detail.value,e.setValue(n,{value:t.target.checked})}};t._dispatchEventFromSandbox(i,r)})),this._setEventListeners(a,[["change","Validate"],["change","Action"],["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"]],(function(t){return t.target.checked}))),this._setBackgroundColor(a),this._setDefaultPropertiesFromJS(a),this.container.append(a),this.container}}]),r}(G),H=function(t){h(r,t);var e=d(r);function r(t){return k(this,r),e.call(this,t,{isRenderable:t.renderForms})}return x(r,[{key:"render",value:function(){var t=this;this.container.className="buttonWidgetAnnotation radioButton";var e=this.annotationStorage,r=this.data,n=r.id,i=e.getValue(n,{value:r.fieldValue===r.buttonValue}).value;"string"==typeof i&&(i=i!==r.buttonValue,e.setValue(n,{value:i}));var a=document.createElement("input");if(T.add(a),a.setAttribute("data-element-id",n),a.disabled=r.readOnly,this._setRequired(a,this.data.required),a.type="radio",a.name=r.fieldName,i&&a.setAttribute("checked",!0),a.tabIndex=P,a.addEventListener("change",(function(r){var i,a=r.target,o=a.name,s=a.checked,l=g(t._getElementsByName(o,n));try{for(l.s();!(i=l.n()).done;){var u=i.value;e.setValue(u.id,{value:!1})}}catch(t){l.e(t)}finally{l.f()}e.setValue(n,{value:s})})),a.addEventListener("resetform",(function(t){var e=r.defaultFieldValue;t.target.checked=null!=e&&e===r.buttonValue})),this.enableScripting&&this.hasJSActions){var o=r.buttonValue;a.addEventListener("updatefromsandbox",(function(r){var i={value:function(r){var i,a=o===r.detail.value,s=g(t._getElementsByName(r.target.name));try{for(s.s();!(i=s.n()).done;){var l=i.value,u=a&&l.id===n;l.domElement&&(l.domElement.checked=u),e.setValue(l.id,{value:u})}}catch(t){s.e(t)}finally{s.f()}}};t._dispatchEventFromSandbox(i,r)})),this._setEventListeners(a,[["change","Validate"],["change","Action"],["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"]],(function(t){return t.target.checked}))}return this._setBackgroundColor(a),this._setDefaultPropertiesFromJS(a),this.container.append(a),this.container}}]),r}(G),z=function(t){h(r,t);var e=d(r);function r(t){return k(this,r),e.call(this,t,{ignoreBorder:t.data.hasAppearance})}return x(r,[{key:"render",value:function(){var t=this,e=u(v(r.prototype),"render",this).call(this);e.className="buttonWidgetAnnotation pushButton",this.data.alternativeText&&(e.title=this.data.alternativeText);var n=e.lastChild;return this.enableScripting&&this.hasJSActions&&n&&(this._setDefaultPropertiesFromJS(n),n.addEventListener("updatefromsandbox",(function(e){t._dispatchEventFromSandbox({},e)}))),e}}]),r}(I),V=function(t){h(r,t);var e=d(r);function r(t){return k(this,r),e.call(this,t,{isRenderable:t.renderForms})}return x(r,[{key:"render",value:function(){var t=this;this.container.className="choiceWidgetAnnotation";var e=this.annotationStorage,r=this.data.id,n=e.getValue(r,{value:this.data.fieldValue}),i=document.createElement("select");T.add(i),i.setAttribute("data-element-id",r),i.disabled=this.data.readOnly,this._setRequired(i,this.data.required),i.name=this.data.fieldName,i.tabIndex=P;var a=this.data.combo&&this.data.options.length>0;this.data.combo||(i.size=this.data.options.length,this.data.multiSelect&&(i.multiple=!0)),i.addEventListener("resetform",(function(e){var r,n=t.data.defaultFieldValue,a=g(i.options);try{for(a.s();!(r=a.n()).done;){var o=r.value;o.selected=o.value===n}}catch(t){a.e(t)}finally{a.f()}}));var o,s=g(this.data.options);try{for(s.s();!(o=s.n()).done;){var l=o.value,u=document.createElement("option");u.textContent=l.displayValue,u.value=l.exportValue,n.value.includes(l.exportValue)&&(u.setAttribute("selected",!0),a=!1),i.append(u)}}catch(t){s.e(t)}finally{s.f()}var c=null;if(a){var h=document.createElement("option");h.value=" ",h.setAttribute("hidden",!0),h.setAttribute("selected",!0),i.prepend(h),c=function(){h.remove(),i.removeEventListener("input",c),c=null},i.addEventListener("input",c)}var f=function(t){var e=t?"value":"textContent",r=i.options;return i.multiple?Array.prototype.filter.call(r,(function(t){return t.selected})).map((function(t){return t[e]})):-1===r.selectedIndex?null:r[r.selectedIndex][e]},d=f(!1),p=function(t){var e=t.target.options;return Array.prototype.map.call(e,(function(t){return{displayValue:t.textContent,exportValue:t.value}}))};return this.enableScripting&&this.hasJSActions?(i.addEventListener("updatefromsandbox",(function(n){var a={value:function(t){var n;null===(n=c)||void 0===n||n();var a,o=t.detail.value,s=new Set(Array.isArray(o)?o:[o]),l=g(i.options);try{for(l.s();!(a=l.n()).done;){var u=a.value;u.selected=s.has(u.value)}}catch(t){l.e(t)}finally{l.f()}e.setValue(r,{value:f(!0)}),d=f(!1)},multipleSelection:function(t){i.multiple=!0},remove:function(t){var n=i.options,a=t.detail.remove;if(n[a].selected=!1,i.remove(a),n.length>0){var o=Array.prototype.findIndex.call(n,(function(t){return t.selected}));-1===o&&(n[0].selected=!0)}e.setValue(r,{value:f(!0),items:p(t)}),d=f(!1)},clear:function(t){for(;0!==i.length;)i.remove(0);e.setValue(r,{value:null,items:[]}),d=f(!1)},insert:function(t){var n=t.detail.insert,a=n.index,o=n.displayValue,s=n.exportValue,l=i.children[a],u=document.createElement("option");u.textContent=o,u.value=s,l?l.before(u):i.append(u),e.setValue(r,{value:f(!0),items:p(t)}),d=f(!1)},items:function(t){for(var n=t.detail.items;0!==i.length;)i.remove(0);var a,o=g(n);try{for(o.s();!(a=o.n()).done;){var s=a.value,l=s.displayValue,u=s.exportValue,c=document.createElement("option");c.textContent=l,c.value=u,i.append(c)}}catch(t){o.e(t)}finally{o.f()}i.options.length>0&&(i.options[0].selected=!0),e.setValue(r,{value:f(!0),items:p(t)}),d=f(!1)},indices:function(t){var n,i=new Set(t.detail.indices),a=g(t.target.options);try{for(a.s();!(n=a.n()).done;){var o=n.value;o.selected=i.has(o.index)}}catch(t){a.e(t)}finally{a.f()}e.setValue(r,{value:f(!0)}),d=f(!1)},editable:function(t){t.target.disabled=!t.detail.editable}};t._dispatchEventFromSandbox(a,n)})),i.addEventListener("input",(function(n){var i,a=f(!0);e.setValue(r,{value:a}),n.preventDefault(),null===(i=t.linkService.eventBus)||void 0===i||i.dispatch("dispatcheventinsandbox",{source:t,detail:{id:r,name:"Keystroke",value:d,changeEx:a,willCommit:!1,commitKey:1,keyDown:!1}})})),this._setEventListeners(i,[["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"],["input","Action"]],(function(t){return t.target.checked}))):i.addEventListener("input",(function(t){e.setValue(r,{value:f(!0)})})),this.data.combo&&this._setTextStyle(i),this._setBackgroundColor(i),this._setDefaultPropertiesFromJS(i),this.container.append(i),this.container}}]),r}(G),X=function(t){h(r,t);var e=d(r);function r(t){var n,i,a;k(this,r);var o=t.data,s=!r.IGNORE_TYPES.has(o.parentType)&&!!(null!==(n=o.titleObj)&&void 0!==n&&n.str||null!==(i=o.contentsObj)&&void 0!==i&&i.str||null!==(a=o.richText)&&void 0!==a&&a.str);return e.call(this,t,{isRenderable:s})}return x(r,[{key:"render",value:function(){this.container.className="popupAnnotation";var t=this.layer.querySelectorAll('[data-annotation-id="'.concat(this.data.parentId,'"]'));if(0===t.length)return this.container;var e=new Y({container:this.container,trigger:Array.from(t),color:this.data.color,titleObj:this.data.titleObj,modificationDate:this.data.modificationDate,contentsObj:this.data.contentsObj,richText:this.data.richText}),r=this.page,i=n.Util.normalizeRect([this.data.parentRect[0],r.view[3]-this.data.parentRect[1]+r.view[1],this.data.parentRect[2],r.view[3]-this.data.parentRect[3]+r.view[1]]),a=i[0]+this.data.parentRect[2]-this.data.parentRect[0],o=i[1],s=this.viewport.rawDims,l=s.pageWidth,u=s.pageHeight,c=s.pageX,h=s.pageY;return this.container.style.left="".concat(100*(a-c)/l,"%"),this.container.style.top="".concat(100*(o-h)/u,"%"),this.container.append(e.render()),this.container}}]),r}(F);D=X,N="IGNORE_TYPES",U=new Set(["Line","Square","Circle","PolyLine","Polygon","Ink"]),(N=E(N))in D?Object.defineProperty(D,N,{value:U,enumerable:!0,configurable:!0,writable:!0}):D[N]=U;var Y=function(){function t(e){k(this,t),this.container=e.container,this.trigger=e.trigger,this.color=e.color,this.titleObj=e.titleObj,this.modificationDate=e.modificationDate,this.contentsObj=e.contentsObj,this.richText=e.richText,this.hideWrapper=e.hideWrapper||!1,this.pinned=!1}return x(t,[{key:"render",value:function(){var t,e,r=document.createElement("div");r.className="popupWrapper",this.hideElement=this.hideWrapper?r:this.container,this.hideElement.hidden=!0;var a=document.createElement("div");a.className="popup";var o=this.color;if(o){var l=.7*(255-o[0])+o[0],u=.7*(255-o[1])+o[1],c=.7*(255-o[2])+o[2];a.style.backgroundColor=n.Util.makeHexColor(0|l,0|u,0|c)}var h=document.createElement("h1");h.dir=this.titleObj.dir,h.textContent=this.titleObj.str,a.append(h);var f=i.PDFDateString.toDateObject(this.modificationDate);if(f){var d=document.createElement("span");d.className="popupDate",d.textContent="{{date}}, {{time}}",d.dataset.l10nId="annotation_date_string",d.dataset.l10nArgs=JSON.stringify({date:f.toLocaleDateString(),time:f.toLocaleTimeString()}),a.append(d)}if(null===(t=this.richText)||void 0===t||!t.str||null!==(e=this.contentsObj)&&void 0!==e&&e.str&&this.contentsObj.str!==this.richText.str){var p=this._formatContents(this.contentsObj);a.append(p)}else s.XfaLayer.render({xfaHtml:this.richText.html,intent:"richText",div:a}),a.lastChild.className="richText popupContent";Array.isArray(this.trigger)||(this.trigger=[this.trigger]);var v,y=g(this.trigger);try{for(y.s();!(v=y.n()).done;){var m=v.value;m.addEventListener("click",this._toggle.bind(this)),m.addEventListener("mouseover",this._show.bind(this,!1)),m.addEventListener("mouseout",this._hide.bind(this,!1))}}catch(t){y.e(t)}finally{y.f()}return a.addEventListener("click",this._hide.bind(this,!0)),r.append(a),r}},{key:"_formatContents",value:function(t){var e=t.str,r=t.dir,n=document.createElement("p");n.className="popupContent",n.dir=r;for(var i=e.split(/(?:\\r\\n?|\\n)/),a=0,o=i.length;a0&&void 0!==arguments[0]&&arguments[0]&&(this.pinned=!0),this.hideElement.hidden&&(this.hideElement.hidden=!1,this.container.style.zIndex=parseInt(this.container.style.zIndex)+1e3)}},{key:"_hide",value:function(){(!(arguments.length>0&&void 0!==arguments[0])||arguments[0])&&(this.pinned=!1),this.hideElement.hidden||this.pinned||(this.hideElement.hidden=!0,this.container.style.zIndex=parseInt(this.container.style.zIndex)-1e3)}}]),t}(),K=function(t){h(r,t);var e=d(r);function r(t){var n,i,a,o;k(this,r);var s=!!(t.data.hasPopup||null!==(n=t.data.titleObj)&&void 0!==n&&n.str||null!==(i=t.data.contentsObj)&&void 0!==i&&i.str||null!==(a=t.data.richText)&&void 0!==a&&a.str);return(o=e.call(this,t,{isRenderable:s,ignoreBorder:!0})).textContent=t.data.textContent,o}return x(r,[{key:"render",value:function(){if(this.container.className="freeTextAnnotation",this.textContent){var t=document.createElement("div");t.className="annotationTextContent",t.setAttribute("role","comment");var e,r=g(this.textContent);try{for(r.s();!(e=r.n()).done;){var n=e.value,i=document.createElement("span");i.textContent=n,t.append(i)}}catch(t){r.e(t)}finally{r.f()}this.container.append(t)}return this.data.hasPopup||this._createPopup(null,this.data),this.container}}]),r}(F),J=function(t){h(r,t);var e=d(r);function r(t){var n,i,a;k(this,r);var o=!!(t.data.hasPopup||null!==(n=t.data.titleObj)&&void 0!==n&&n.str||null!==(i=t.data.contentsObj)&&void 0!==i&&i.str||null!==(a=t.data.richText)&&void 0!==a&&a.str);return e.call(this,t,{isRenderable:o,ignoreBorder:!0})}return x(r,[{key:"render",value:function(){this.container.className="lineAnnotation";var t=this.data,e=C(t.rect),r=e.width,n=e.height,i=this.svgFactory.create(r,n,!0),a=this.svgFactory.createElement("svg:line");return a.setAttribute("x1",t.rect[2]-t.lineCoordinates[0]),a.setAttribute("y1",t.rect[3]-t.lineCoordinates[1]),a.setAttribute("x2",t.rect[2]-t.lineCoordinates[2]),a.setAttribute("y2",t.rect[3]-t.lineCoordinates[3]),a.setAttribute("stroke-width",t.borderStyle.width||1),a.setAttribute("stroke","transparent"),a.setAttribute("fill","transparent"),i.append(a),this.container.append(i),this._createPopup(a,t),this.container}}]),r}(F),Q=function(t){h(r,t);var e=d(r);function r(t){var n,i,a;k(this,r);var o=!!(t.data.hasPopup||null!==(n=t.data.titleObj)&&void 0!==n&&n.str||null!==(i=t.data.contentsObj)&&void 0!==i&&i.str||null!==(a=t.data.richText)&&void 0!==a&&a.str);return e.call(this,t,{isRenderable:o,ignoreBorder:!0})}return x(r,[{key:"render",value:function(){this.container.className="squareAnnotation";var t=this.data,e=C(t.rect),r=e.width,n=e.height,i=this.svgFactory.create(r,n,!0),a=t.borderStyle.width,o=this.svgFactory.createElement("svg:rect");return o.setAttribute("x",a/2),o.setAttribute("y",a/2),o.setAttribute("width",r-a),o.setAttribute("height",n-a),o.setAttribute("stroke-width",a||1),o.setAttribute("stroke","transparent"),o.setAttribute("fill","transparent"),i.append(o),this.container.append(i),this._createPopup(o,t),this.container}}]),r}(F),$=function(t){h(r,t);var e=d(r);function r(t){var n,i,a;k(this,r);var o=!!(t.data.hasPopup||null!==(n=t.data.titleObj)&&void 0!==n&&n.str||null!==(i=t.data.contentsObj)&&void 0!==i&&i.str||null!==(a=t.data.richText)&&void 0!==a&&a.str);return e.call(this,t,{isRenderable:o,ignoreBorder:!0})}return x(r,[{key:"render",value:function(){this.container.className="circleAnnotation";var t=this.data,e=C(t.rect),r=e.width,n=e.height,i=this.svgFactory.create(r,n,!0),a=t.borderStyle.width,o=this.svgFactory.createElement("svg:ellipse");return o.setAttribute("cx",r/2),o.setAttribute("cy",n/2),o.setAttribute("rx",r/2-a/2),o.setAttribute("ry",n/2-a/2),o.setAttribute("stroke-width",a||1),o.setAttribute("stroke","transparent"),o.setAttribute("fill","transparent"),i.append(o),this.container.append(i),this._createPopup(o,t),this.container}}]),r}(F),Z=function(t){h(r,t);var e=d(r);function r(t){var n,i,a,o;k(this,r);var s=!!(t.data.hasPopup||null!==(n=t.data.titleObj)&&void 0!==n&&n.str||null!==(i=t.data.contentsObj)&&void 0!==i&&i.str||null!==(a=t.data.richText)&&void 0!==a&&a.str);return(o=e.call(this,t,{isRenderable:s,ignoreBorder:!0})).containerClassName="polylineAnnotation",o.svgElementName="svg:polyline",o}return x(r,[{key:"render",value:function(){this.container.className=this.containerClassName;var t,e=this.data,r=C(e.rect),n=r.width,i=r.height,a=this.svgFactory.create(n,i,!0),o=[],s=g(e.vertices);try{for(s.s();!(t=s.n()).done;){var l=t.value,u=l.x-e.rect[0],c=e.rect[3]-l.y;o.push(u+","+c)}}catch(t){s.e(t)}finally{s.f()}o=o.join(" ");var h=this.svgFactory.createElement(this.svgElementName);return h.setAttribute("points",o),h.setAttribute("stroke-width",e.borderStyle.width||1),h.setAttribute("stroke","transparent"),h.setAttribute("fill","transparent"),a.append(h),this.container.append(a),this._createPopup(h,e),this.container}}]),r}(F),tt=function(t){h(r,t);var e=d(r);function r(t){var n;return k(this,r),(n=e.call(this,t)).containerClassName="polygonAnnotation",n.svgElementName="svg:polygon",n}return x(r)}(Z),et=function(t){h(r,t);var e=d(r);function r(t){var n,i,a;k(this,r);var o=!!(t.data.hasPopup||null!==(n=t.data.titleObj)&&void 0!==n&&n.str||null!==(i=t.data.contentsObj)&&void 0!==i&&i.str||null!==(a=t.data.richText)&&void 0!==a&&a.str);return e.call(this,t,{isRenderable:o,ignoreBorder:!0})}return x(r,[{key:"render",value:function(){return this.container.className="caretAnnotation",this.data.hasPopup||this._createPopup(null,this.data),this.container}}]),r}(F),rt=function(t){h(r,t);var e=d(r);function r(t){var n,i,a,o;k(this,r);var s=!!(t.data.hasPopup||null!==(n=t.data.titleObj)&&void 0!==n&&n.str||null!==(i=t.data.contentsObj)&&void 0!==i&&i.str||null!==(a=t.data.richText)&&void 0!==a&&a.str);return(o=e.call(this,t,{isRenderable:s,ignoreBorder:!0})).containerClassName="inkAnnotation",o.svgElementName="svg:polyline",o}return x(r,[{key:"render",value:function(){this.container.className=this.containerClassName;var t,e=this.data,r=C(e.rect),n=r.width,i=r.height,a=this.svgFactory.create(n,i,!0),o=g(e.inkLists);try{for(o.s();!(t=o.n()).done;){var s,l=t.value,u=[],c=g(l);try{for(c.s();!(s=c.n()).done;){var h=s.value,f=h.x-e.rect[0],d=e.rect[3]-h.y;u.push("".concat(f,",").concat(d))}}catch(t){c.e(t)}finally{c.f()}u=u.join(" ");var p=this.svgFactory.createElement(this.svgElementName);p.setAttribute("points",u),p.setAttribute("stroke-width",e.borderStyle.width||1),p.setAttribute("stroke","transparent"),p.setAttribute("fill","transparent"),this._createPopup(p,e),a.append(p)}}catch(t){o.e(t)}finally{o.f()}return this.container.append(a),this.container}}]),r}(F),nt=function(t){h(r,t);var e=d(r);function r(t){var n,i,a;k(this,r);var o=!!(t.data.hasPopup||null!==(n=t.data.titleObj)&&void 0!==n&&n.str||null!==(i=t.data.contentsObj)&&void 0!==i&&i.str||null!==(a=t.data.richText)&&void 0!==a&&a.str);return e.call(this,t,{isRenderable:o,ignoreBorder:!0,createQuadrilaterals:!0})}return x(r,[{key:"render",value:function(){return this.data.hasPopup||this._createPopup(null,this.data),this.quadrilaterals?this._renderQuadrilaterals("highlightAnnotation"):(this.container.className="highlightAnnotation",this.container)}}]),r}(F),it=function(t){h(r,t);var e=d(r);function r(t){var n,i,a;k(this,r);var o=!!(t.data.hasPopup||null!==(n=t.data.titleObj)&&void 0!==n&&n.str||null!==(i=t.data.contentsObj)&&void 0!==i&&i.str||null!==(a=t.data.richText)&&void 0!==a&&a.str);return e.call(this,t,{isRenderable:o,ignoreBorder:!0,createQuadrilaterals:!0})}return x(r,[{key:"render",value:function(){return this.data.hasPopup||this._createPopup(null,this.data),this.quadrilaterals?this._renderQuadrilaterals("underlineAnnotation"):(this.container.className="underlineAnnotation",this.container)}}]),r}(F),at=function(t){h(r,t);var e=d(r);function r(t){var n,i,a;k(this,r);var o=!!(t.data.hasPopup||null!==(n=t.data.titleObj)&&void 0!==n&&n.str||null!==(i=t.data.contentsObj)&&void 0!==i&&i.str||null!==(a=t.data.richText)&&void 0!==a&&a.str);return e.call(this,t,{isRenderable:o,ignoreBorder:!0,createQuadrilaterals:!0})}return x(r,[{key:"render",value:function(){return this.data.hasPopup||this._createPopup(null,this.data),this.quadrilaterals?this._renderQuadrilaterals("squigglyAnnotation"):(this.container.className="squigglyAnnotation",this.container)}}]),r}(F),ot=function(t){h(r,t);var e=d(r);function r(t){var n,i,a;k(this,r);var o=!!(t.data.hasPopup||null!==(n=t.data.titleObj)&&void 0!==n&&n.str||null!==(i=t.data.contentsObj)&&void 0!==i&&i.str||null!==(a=t.data.richText)&&void 0!==a&&a.str);return e.call(this,t,{isRenderable:o,ignoreBorder:!0,createQuadrilaterals:!0})}return x(r,[{key:"render",value:function(){return this.data.hasPopup||this._createPopup(null,this.data),this.quadrilaterals?this._renderQuadrilaterals("strikeoutAnnotation"):(this.container.className="strikeoutAnnotation",this.container)}}]),r}(F),st=function(t){h(r,t);var e=d(r);function r(t){var n,i,a;k(this,r);var o=!!(t.data.hasPopup||null!==(n=t.data.titleObj)&&void 0!==n&&n.str||null!==(i=t.data.contentsObj)&&void 0!==i&&i.str||null!==(a=t.data.richText)&&void 0!==a&&a.str);return e.call(this,t,{isRenderable:o,ignoreBorder:!0})}return x(r,[{key:"render",value:function(){return this.container.className="stampAnnotation",this.data.hasPopup||this._createPopup(null,this.data),this.container}}]),r}(F),lt=function(t){h(r,t);var e=d(r);function r(t){var n,a;k(this,r);var o=(a=e.call(this,t,{isRenderable:!0})).data.file,s=o.filename,l=o.content;return a.filename=(0,i.getFilenameFromUrl)(s,!0),a.content=l,null===(n=a.linkService.eventBus)||void 0===n||n.dispatch("fileattachmentannotation",{source:p(a),filename:s,content:l}),a}return x(r,[{key:"render",value:function(){var t,e,r;return this.container.className="fileAttachmentAnnotation",this.data.hasAppearance?r=document.createElement("div"):(r=document.createElement("img")).src="".concat(this.imageResourcesPath,"annotation-").concat(/paperclip/i.test(this.data.name)?"paperclip":"pushpin",".svg"),r.className="popupTriggerArea",r.addEventListener("dblclick",this._download.bind(this)),!this.data.hasPopup&&(null!==(t=this.data.titleObj)&&void 0!==t&&t.str||null!==(e=this.data.contentsObj)&&void 0!==e&&e.str||this.data.richText)&&this._createPopup(r,this.data),this.container.append(r),this.container}},{key:"_download",value:function(){var t;null===(t=this.downloadManager)||void 0===t||t.openOrDownloadData(this.container,this.content,this.filename)}}]),r}(F),ut=function(){function t(){k(this,t)}return x(t,null,[{key:"render",value:function(e){var r=e.annotations,o=e.div,s=e.viewport,u=e.accessibilityManager;(0,i.setLayerDimensions)(o,s);var c,h={data:null,layer:o,page:e.page,viewport:s,linkService:e.linkService,downloadManager:e.downloadManager,imageResourcesPath:e.imageResourcesPath||"",renderForms:!1!==e.renderForms,svgFactory:new i.DOMSVGFactory,annotationStorage:e.annotationStorage||new a.AnnotationStorage,enableScripting:!0===e.enableScripting,hasJSActions:e.hasJSActions,fieldObjects:e.fieldObjects},f=0,d=g(r);try{for(d.s();!(c=d.n()).done;){var p=c.value;if(p.annotationType!==n.AnnotationType.POPUP){var v=C(p.rect),y=v.width,m=v.height;if(y<=0||m<=0)continue}h.data=p;var b=O.create(h);if(b.isRenderable){var _=b.render();if(p.hidden&&(_.style.visibility="hidden"),Array.isArray(_)){var w,A=g(_);try{for(A.s();!(w=A.n()).done;){var k=w.value;k.style.zIndex=f++,l(t,t,ct).call(t,k,p.id,o,u)}}catch(t){A.e(t)}finally{A.f()}}else _.style.zIndex=f++,b instanceof X?o.prepend(_):l(t,t,ct).call(t,_,p.id,o,u)}}}catch(t){d.e(t)}finally{d.f()}l(this,t,ht).call(this,o,e.annotationCanvasMap)}},{key:"update",value:function(e){var r=e.annotationCanvasMap,n=e.div,a=e.viewport;(0,i.setLayerDimensions)(n,{rotation:a.rotation}),l(this,t,ht).call(this,n,r),n.hidden=!1}}]),t}();function ct(t,e,r,n){var a=t.firstChild||t;a.id="".concat(i.AnnotationPrefix).concat(e),r.append(t),null==n||n.moveElementInDOM(r,t,a,!1)}function ht(t,e){if(e){var r,n=g(e);try{for(n.s();!(r=n.n()).done;){var i=b(r.value,2),a=i[0],o=i[1],s=t.querySelector('[data-annotation-id="'.concat(a,'"]'));if(s){var l=s.firstChild;l?"CANVAS"===l.nodeName?l.replaceWith(o):l.before(o):s.append(o)}}}catch(t){n.e(t)}finally{n.f()}e.clear()}}e.AnnotationLayer=ut},(t,e)=>{function r(t){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r(t)}function n(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,i,a,o,s=[],l=!0,u=!1;try{if(a=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;l=!1}else for(;!(l=(n=a.call(r)).done)&&(s.push(n.value),s.length!==e);l=!0);}catch(t){u=!0,i=t}finally{try{if(!l&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(u)throw i}}return s}}(t,e)||function(t,e){if(t){if("string"==typeof t)return i(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?i(t,e):void 0}}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function i(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r{Object.defineProperty(e,"__esModule",{value:!0}),e.XfaLayer=void 0;var n=r(149);function i(t){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function a(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,i,a,o,s=[],l=!0,u=!1;try{if(a=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;l=!1}else for(;!(l=(n=a.call(r)).done)&&(s.push(n.value),s.length!==e);l=!0);}catch(t){u=!0,i=t}finally{try{if(!l&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(u)throw i}}return s}}(t,e)||s(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function o(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=s(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,i=function(){};return{s:i,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,o=!0,l=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return o=t.done,t},e:function(t){l=!0,a=t},f:function(){try{o||null==r.return||r.return()}finally{if(l)throw a}}}}function s(t,e){if(t){if("string"==typeof t)return l(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?l(t,e):void 0}}function l(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r0;){var d,p,v=a(u.at(-1),3),y=v[0],m=v[1],g=v[2];if(m+1!==y.children.length){var b=y.children[++u.at(-1)[1]];if(null!==b){var _=b.name;if("#text"!==_){var w=void 0;if(w=null!==(d=b)&&void 0!==d&&null!==(p=d.attributes)&&void 0!==p&&p.xmlns?document.createElementNS(b.attributes.xmlns,_):document.createElement(_),g.append(w),b.attributes&&this.setAttributes({html:w,element:b,storage:e,intent:s,linkService:r}),b.children&&b.children.length>0)u.push([b,-1,w]);else if(b.value){var A=document.createTextNode(b.value);n.XfaText.shouldBuildText(_)&&f.push(A),w.append(A)}}else{var k=document.createTextNode(b.value);f.push(k),g.append(k)}}}else u.pop()}var S,x=o(c.querySelectorAll(".xfaNonInteractive input, .xfaNonInteractive textarea"));try{for(x.s();!(S=x.n()).done;)S.value.setAttribute("readOnly",!0)}catch(t){x.e(t)}finally{x.f()}return{textDivs:f}}},{key:"update",value:function(t){var e="matrix(".concat(t.viewport.transform.join(","),")");t.div.style.transform=e,t.div.hidden=!1}}],null&&u(e.prototype,null),r&&u(e,r),Object.defineProperty(e,"prototype",{writable:!1}),t}();e.XfaLayer=c},(t,e,r)=>{function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}Object.defineProperty(e,"__esModule",{value:!0}),e.SVGGraphics=void 0;var i=r(137),a=r(1),o=r(3);function s(t){return function(t){if(Array.isArray(t))return h(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||c(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function l(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,i,a,o,s=[],l=!0,u=!1;try{if(a=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;l=!1}else for(;!(l=(n=a.call(r)).done)&&(s.push(n.value),s.length!==e);l=!0);}catch(t){u=!0,i=t}finally{try{if(!l&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(u)throw i}}return s}}(t,e)||c(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function u(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=c(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,i=function(){};return{s:i,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,o=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return o=t.done,t},e:function(t){s=!0,a=t},f:function(){try{o||null==r.return||r.return()}finally{if(s)throw a}}}}function c(t,e){if(t){if("string"==typeof t)return h(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?h(t,e):void 0}}function h(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r1&&void 0!==arguments[1]?arguments[1]:"",r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(URL.createObjectURL&&"undefined"!=typeof Blob&&!r)return URL.createObjectURL(new Blob([t],{type:e}));for(var n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",i="data:".concat(e,";base64,"),a=0,o=t.length;a>2]+n[(3&s)<<4|l>>4]+n[a+1>6:64]+n[a+2>1&2147483647:n>>1&2147483647;e[r]=n}function s(t,r,n,i){var a=i,o=r.length;n[a]=o>>24&255,n[a+1]=o>>16&255,n[a+2]=o>>8&255,n[a+3]=255&o,n[a+=4]=255&t.charCodeAt(0),n[a+1]=255&t.charCodeAt(1),n[a+2]=255&t.charCodeAt(2),n[a+3]=255&t.charCodeAt(3),a+=4,n.set(r,a);var s=function(t,r,n){for(var i=-1,a=r;a>>8^e[o]}return-1^i}(n,i+4,a+=r.length);n[a]=s>>24&255,n[a+1]=s>>16&255,n[a+2]=s>>8&255,n[a+3]=255&s}function l(t){var e=t.length,r=65535,n=Math.ceil(e/r),i=new Uint8Array(2+e+5*n+4),a=0;i[a++]=120,i[a++]=156;for(var o=0;e>r;)i[a++]=0,i[a++]=255,i[a++]=255,i[a++]=0,i[a++]=0,i.set(t.subarray(o,o+r),a),a+=r,o+=r,e-=r;i[a++]=1,i[a++]=255&e,i[a++]=e>>8&255,i[a++]=255&~e,i[a++]=(65535&~e)>>8&255,i.set(t.subarray(o),a),a+=t.length-o;var s=function(t,e,r){for(var n=1,i=0,a=0;a>24&255,i[a++]=s>>16&255,i[a++]=s>>8&255,i[a++]=255&s,i}return function(e,r,n){return function(e,r,n,i){var u,c,h,f=e.width,d=e.height,p=e.data;switch(r){case a.ImageKind.GRAYSCALE_1BPP:c=0,u=1,h=f+7>>3;break;case a.ImageKind.RGB_24BPP:c=2,u=8,h=3*f;break;case a.ImageKind.RGBA_32BPP:c=6,u=8,h=4*f;break;default:throw new Error("invalid format")}for(var v=new Uint8Array((1+h)*d),y=0,m=0,g=0;g>24&255,f>>16&255,f>>8&255,255&f,d>>24&255,d>>16&255,d>>8&255,255&d,u,c,0,0,0]),A=function(t){if(!o.isNodeJS)return l(t);try{var e;e=parseInt(process.versions.node)>=8?t:Buffer.from(t);var r=require("zlib").deflateSync(e,{level:9});return r instanceof Uint8Array?r:new Uint8Array(r)}catch(t){(0,a.warn)("Not compressing PNG because zlib.deflateSync is unavailable: "+t)}return l(t)}(v),S=t.length+36+w.length+A.length,x=new Uint8Array(S),E=0;return x.set(t,E),s("IHDR",w,x,E+=t.length),s("IDATA",A,x,E+=12+w.length),E+=12+A.length,s("IEND",new Uint8Array(0),x,E),k(x,"image/png",n)}(e,void 0===e.kind?a.ImageKind.GRAYSCALE_1BPP:e.kind,r,n)}}(),x=function(){function t(){p(this,t),this.fontSizeScale=1,this.fontWeight=b,this.fontSize=0,this.textMatrix=a.IDENTITY_MATRIX,this.fontMatrix=a.FONT_IDENTITY_MATRIX,this.leading=0,this.textRenderingMode=a.TextRenderingMode.FILL,this.textMatrixScale=1,this.x=0,this.y=0,this.lineX=0,this.lineY=0,this.charSpacing=0,this.wordSpacing=0,this.textHScale=1,this.textRise=0,this.fillColor=_,this.strokeColor="#000000",this.fillAlpha=1,this.strokeAlpha=1,this.lineWidth=1,this.lineJoin="",this.lineCap="",this.miterLimit=0,this.dashArray=[],this.dashPhase=0,this.dependencies=[],this.activeClipUrl=null,this.clipGroup=null,this.maskId=""}return d(t,[{key:"clone",value:function(){return Object.create(this)}},{key:"setCurrentPoint",value:function(t,e){this.x=t,this.y=e}}]),t}(),E=0,P=0,T=0;e.SVGGraphics=v=function(){function t(e,r){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];for(var o in p(this,t),(0,i.deprecated)("The SVG back-end is no longer maintained and *may* be removed in the future."),this.svgFactory=new i.DOMSVGFactory,this.current=new x,this.transformMatrix=a.IDENTITY_MATRIX,this.transformStack=[],this.extraStack=[],this.commonObjs=e,this.objs=r,this.pendingClip=null,this.pendingEOFill=!1,this.embedFonts=!1,this.embeddedFonts=Object.create(null),this.cssStyle=null,this.forceDataSchema=!!n,this._operatorIdMapping=[],a.OPS)this._operatorIdMapping[a.OPS[o]]=o}return d(t,[{key:"getObject",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return"string"==typeof t?t.startsWith("g_")?this.commonObjs.get(t):this.objs.get(t):e}},{key:"save",value:function(){this.transformStack.push(this.transformMatrix);var t=this.current;this.extraStack.push(t),this.current=t.clone()}},{key:"restore",value:function(){this.transformMatrix=this.transformStack.pop(),this.current=this.extraStack.pop(),this.pendingClip=null,this.tgrp=null}},{key:"group",value:function(t){this.save(),this.executeOpTree(t),this.restore()}},{key:"loadDependencies",value:function(t){for(var e=this,r=t.fnArray,n=t.argsArray,i=0,o=r.length;i0&&(this.current.lineWidth=t)}},{key:"setLineCap",value:function(t){this.current.lineCap=w[t]}},{key:"setLineJoin",value:function(t){this.current.lineJoin=A[t]}},{key:"setMiterLimit",value:function(t){this.current.miterLimit=t}},{key:"setStrokeAlpha",value:function(t){this.current.strokeAlpha=t}},{key:"setStrokeRGBColor",value:function(t,e,r){this.current.strokeColor=a.Util.makeHexColor(t,e,r)}},{key:"setFillAlpha",value:function(t){this.current.fillAlpha=t}},{key:"setFillRGBColor",value:function(t,e,r){this.current.fillColor=a.Util.makeHexColor(t,e,r),this.current.tspan=this.svgFactory.createElement("svg:tspan"),this.current.xcoords=[],this.current.ycoords=[]}},{key:"setStrokeColorN",value:function(t){this.current.strokeColor=this._makeColorN_Pattern(t)}},{key:"setFillColorN",value:function(t){this.current.fillColor=this._makeColorN_Pattern(t)}},{key:"shadingFill",value:function(t){var e=this.viewport.width,r=this.viewport.height,n=a.Util.inverseTransform(this.transformMatrix),i=a.Util.applyTransform([0,0],n),o=a.Util.applyTransform([0,r],n),s=a.Util.applyTransform([e,0],n),l=a.Util.applyTransform([e,r],n),u=Math.min(i[0],o[0],s[0],l[0]),c=Math.min(i[1],o[1],s[1],l[1]),h=Math.max(i[0],o[0],s[0],l[0]),f=Math.max(i[1],o[1],s[1],l[1]),d=this.svgFactory.createElement("svg:rect");d.setAttributeNS(null,"x",u),d.setAttributeNS(null,"y",c),d.setAttributeNS(null,"width",h-u),d.setAttributeNS(null,"height",f-c),d.setAttributeNS(null,"fill",this._makeShadingPattern(t)),this.current.fillAlpha<1&&d.setAttributeNS(null,"fill-opacity",this.current.fillAlpha),this._ensureTransformGroup().append(d)}},{key:"_makeColorN_Pattern",value:function(t){return"TilingPattern"===t[0]?this._makeTilingPattern(t):this._makeShadingPattern(t)}},{key:"_makeTilingPattern",value:function(t){var e=t[1],r=t[2],n=t[3]||a.IDENTITY_MATRIX,i=l(t[4],4),o=i[0],u=i[1],c=i[2],h=i[3],f=t[5],d=t[6],p=t[7],v="shading".concat(T++),y=l(a.Util.normalizeRect([].concat(s(a.Util.applyTransform([o,u],n)),s(a.Util.applyTransform([c,h],n)))),4),m=y[0],g=y[1],b=y[2],_=y[3],w=l(a.Util.singularValueDecompose2dScale(n),2),A=f*w[0],k=d*w[1],S=this.svgFactory.createElement("svg:pattern");S.setAttributeNS(null,"id",v),S.setAttributeNS(null,"patternUnits","userSpaceOnUse"),S.setAttributeNS(null,"width",A),S.setAttributeNS(null,"height",k),S.setAttributeNS(null,"x","".concat(m)),S.setAttributeNS(null,"y","".concat(g));var x=this.svg,E=this.transformMatrix,P=this.current.fillColor,C=this.current.strokeColor,O=this.svgFactory.create(b-m,_-g);if(this.svg=O,this.transformMatrix=n,2===p){var F=a.Util.makeHexColor.apply(a.Util,s(e));this.current.fillColor=F,this.current.strokeColor=F}return this.executeOpTree(this.convertOpList(r)),this.svg=x,this.transformMatrix=E,this.current.fillColor=P,this.current.strokeColor=C,S.append(O.childNodes[0]),this.defs.append(S),"url(#".concat(v,")")}},{key:"_makeShadingPattern",value:function(t){switch("string"==typeof t&&(t=this.objs.get(t)),t[0]){case"RadialAxial":var e,r="shading".concat(T++),n=t[3];switch(t[1]){case"axial":var i=t[4],o=t[5];(e=this.svgFactory.createElement("svg:linearGradient")).setAttributeNS(null,"id",r),e.setAttributeNS(null,"gradientUnits","userSpaceOnUse"),e.setAttributeNS(null,"x1",i[0]),e.setAttributeNS(null,"y1",i[1]),e.setAttributeNS(null,"x2",o[0]),e.setAttributeNS(null,"y2",o[1]);break;case"radial":var s=t[4],l=t[5],c=t[6],h=t[7];(e=this.svgFactory.createElement("svg:radialGradient")).setAttributeNS(null,"id",r),e.setAttributeNS(null,"gradientUnits","userSpaceOnUse"),e.setAttributeNS(null,"cx",l[0]),e.setAttributeNS(null,"cy",l[1]),e.setAttributeNS(null,"r",h),e.setAttributeNS(null,"fx",s[0]),e.setAttributeNS(null,"fy",s[1]),e.setAttributeNS(null,"fr",c);break;default:throw new Error("Unknown RadialAxial type: ".concat(t[1]))}var f,d=u(n);try{for(d.s();!(f=d.n()).done;){var p=f.value,v=this.svgFactory.createElement("svg:stop");v.setAttributeNS(null,"offset",p[0]),v.setAttributeNS(null,"stop-color",p[1]),e.append(v)}}catch(t){d.e(t)}finally{d.f()}return this.defs.append(e),"url(#".concat(r,")");case"Mesh":return(0,a.warn)("Unimplemented pattern Mesh"),null;case"Dummy":return"hotpink";default:throw new Error("Unknown IR type: ".concat(t[0]))}}},{key:"setDash",value:function(t,e){this.current.dashArray=t,this.current.dashPhase=e}},{key:"constructPath",value:function(t,e){var r,n=this.current,i=n.x,o=n.y,s=[],l=0,c=u(t);try{for(c.s();!(r=c.n()).done;)switch(0|r.value){case a.OPS.rectangle:i=e[l++],o=e[l++];var h=e[l++],f=e[l++],d=i+h,p=o+f;s.push("M",y(i),y(o),"L",y(d),y(o),"L",y(d),y(p),"L",y(i),y(p),"Z");break;case a.OPS.moveTo:i=e[l++],o=e[l++],s.push("M",y(i),y(o));break;case a.OPS.lineTo:i=e[l++],o=e[l++],s.push("L",y(i),y(o));break;case a.OPS.curveTo:i=e[l+4],o=e[l+5],s.push("C",y(e[l]),y(e[l+1]),y(e[l+2]),y(e[l+3]),y(i),y(o)),l+=6;break;case a.OPS.curveTo2:s.push("C",y(i),y(o),y(e[l]),y(e[l+1]),y(e[l+2]),y(e[l+3])),i=e[l+2],o=e[l+3],l+=4;break;case a.OPS.curveTo3:i=e[l+2],o=e[l+3],s.push("C",y(e[l]),y(e[l+1]),y(i),y(o),y(i),y(o)),l+=4;break;case a.OPS.closePath:s.push("Z")}}catch(t){c.e(t)}finally{c.f()}s=s.join(" "),n.path&&t.length>0&&t[0]!==a.OPS.rectangle&&t[0]!==a.OPS.moveTo?s=n.path.getAttributeNS(null,"d")+s:(n.path=this.svgFactory.createElement("svg:path"),this._ensureTransformGroup().append(n.path)),n.path.setAttributeNS(null,"d",s),n.path.setAttributeNS(null,"fill","none"),n.element=n.path,n.setCurrentPoint(i,o)}},{key:"endPath",value:function(){var t=this.current;if(t.path=null,this.pendingClip)if(t.element){var e="clippath".concat(E++),r=this.svgFactory.createElement("svg:clipPath");r.setAttributeNS(null,"id",e),r.setAttributeNS(null,"transform",m(this.transformMatrix));var n=t.element.cloneNode(!0);if("evenodd"===this.pendingClip?n.setAttributeNS(null,"clip-rule","evenodd"):n.setAttributeNS(null,"clip-rule","nonzero"),this.pendingClip=null,r.append(n),this.defs.append(r),t.activeClipUrl){t.clipGroup=null;var i,a=u(this.extraStack);try{for(a.s();!(i=a.n()).done;)i.value.clipGroup=null}catch(t){a.e(t)}finally{a.f()}r.setAttributeNS(null,"clip-path",t.activeClipUrl)}t.activeClipUrl="url(#".concat(e,")"),this.tgrp=null}else this.pendingClip=null}},{key:"clip",value:function(t){this.pendingClip=t}},{key:"closePath",value:function(){var t=this.current;if(t.path){var e="".concat(t.path.getAttributeNS(null,"d"),"Z");t.path.setAttributeNS(null,"d",e)}}},{key:"setLeading",value:function(t){this.current.leading=-t}},{key:"setTextRise",value:function(t){this.current.textRise=t}},{key:"setTextRenderingMode",value:function(t){this.current.textRenderingMode=t}},{key:"setHScale",value:function(t){this.current.textHScale=t/100}},{key:"setRenderingIntent",value:function(t){}},{key:"setFlatness",value:function(t){}},{key:"setGState",value:function(t){var e,r=u(t);try{for(r.s();!(e=r.n()).done;){var n=l(e.value,2),i=n[0],o=n[1];switch(i){case"LW":this.setLineWidth(o);break;case"LC":this.setLineCap(o);break;case"LJ":this.setLineJoin(o);break;case"ML":this.setMiterLimit(o);break;case"D":this.setDash(o[0],o[1]);break;case"RI":this.setRenderingIntent(o);break;case"FL":this.setFlatness(o);break;case"Font":this.setFont(o);break;case"CA":this.setStrokeAlpha(o);break;case"ca":this.setFillAlpha(o);break;default:(0,a.warn)("Unimplemented graphic state operator ".concat(i))}}}catch(t){r.e(t)}finally{r.f()}}},{key:"fill",value:function(){var t=this.current;t.element&&(t.element.setAttributeNS(null,"fill",t.fillColor),t.element.setAttributeNS(null,"fill-opacity",t.fillAlpha),this.endPath())}},{key:"stroke",value:function(){var t=this.current;t.element&&(this._setStrokeAttributes(t.element),t.element.setAttributeNS(null,"fill","none"),this.endPath())}},{key:"_setStrokeAttributes",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,r=this.current,n=r.dashArray;1!==e&&n.length>0&&(n=n.map((function(t){return e*t}))),t.setAttributeNS(null,"stroke",r.strokeColor),t.setAttributeNS(null,"stroke-opacity",r.strokeAlpha),t.setAttributeNS(null,"stroke-miterlimit",y(r.miterLimit)),t.setAttributeNS(null,"stroke-linecap",r.lineCap),t.setAttributeNS(null,"stroke-linejoin",r.lineJoin),t.setAttributeNS(null,"stroke-width",y(e*r.lineWidth)+"px"),t.setAttributeNS(null,"stroke-dasharray",n.map(y).join(" ")),t.setAttributeNS(null,"stroke-dashoffset",y(e*r.dashPhase)+"px")}},{key:"eoFill",value:function(){var t;null===(t=this.current.element)||void 0===t||t.setAttributeNS(null,"fill-rule","evenodd"),this.fill()}},{key:"fillStroke",value:function(){this.stroke(),this.fill()}},{key:"eoFillStroke",value:function(){var t;null===(t=this.current.element)||void 0===t||t.setAttributeNS(null,"fill-rule","evenodd"),this.fillStroke()}},{key:"closeStroke",value:function(){this.closePath(),this.stroke()}},{key:"closeFillStroke",value:function(){this.closePath(),this.fillStroke()}},{key:"closeEOFillStroke",value:function(){this.closePath(),this.eoFillStroke()}},{key:"paintSolidColorImageMask",value:function(){var t=this.svgFactory.createElement("svg:rect");t.setAttributeNS(null,"x","0"),t.setAttributeNS(null,"y","0"),t.setAttributeNS(null,"width","1px"),t.setAttributeNS(null,"height","1px"),t.setAttributeNS(null,"fill",this.current.fillColor),this._ensureTransformGroup().append(t)}},{key:"paintImageXObject",value:function(t){var e=this.getObject(t);e?this.paintInlineImageXObject(e):(0,a.warn)("Dependent image with object ID ".concat(t," is not ready yet"))}},{key:"paintInlineImageXObject",value:function(t,e){var r=t.width,n=t.height,i=S(t,this.forceDataSchema,!!e),a=this.svgFactory.createElement("svg:rect");a.setAttributeNS(null,"x","0"),a.setAttributeNS(null,"y","0"),a.setAttributeNS(null,"width",y(r)),a.setAttributeNS(null,"height",y(n)),this.current.element=a,this.clip("nonzero");var o=this.svgFactory.createElement("svg:image");o.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",i),o.setAttributeNS(null,"x","0"),o.setAttributeNS(null,"y",y(-n)),o.setAttributeNS(null,"width",y(r)+"px"),o.setAttributeNS(null,"height",y(n)+"px"),o.setAttributeNS(null,"transform","scale(".concat(y(1/r)," ").concat(y(-1/n),")")),e?e.append(o):this._ensureTransformGroup().append(o)}},{key:"paintImageMaskXObject",value:function(t){var e=this.getObject(t.data,t);if(e.bitmap)(0,a.warn)("paintImageMaskXObject: ImageBitmap support is not implemented, ensure that the \`isOffscreenCanvasSupported\` API parameter is disabled.");else{var r=this.current,n=e.width,i=e.height,o=r.fillColor;r.maskId="mask".concat(P++);var s=this.svgFactory.createElement("svg:mask");s.setAttributeNS(null,"id",r.maskId);var l=this.svgFactory.createElement("svg:rect");l.setAttributeNS(null,"x","0"),l.setAttributeNS(null,"y","0"),l.setAttributeNS(null,"width",y(n)),l.setAttributeNS(null,"height",y(i)),l.setAttributeNS(null,"fill",o),l.setAttributeNS(null,"mask","url(#".concat(r.maskId,")")),this.defs.append(s),this._ensureTransformGroup().append(l),this.paintInlineImageXObject(e,s)}}},{key:"paintFormXObjectBegin",value:function(t,e){if(Array.isArray(t)&&6===t.length&&this.transform(t[0],t[1],t[2],t[3],t[4],t[5]),e){var r=e[2]-e[0],n=e[3]-e[1],i=this.svgFactory.createElement("svg:rect");i.setAttributeNS(null,"x",e[0]),i.setAttributeNS(null,"y",e[1]),i.setAttributeNS(null,"width",y(r)),i.setAttributeNS(null,"height",y(n)),this.current.element=i,this.clip("nonzero"),this.endPath()}}},{key:"paintFormXObjectEnd",value:function(){}},{key:"_initialize",value:function(t){var e=this.svgFactory.create(t.width,t.height),r=this.svgFactory.createElement("svg:defs");e.append(r),this.defs=r;var n=this.svgFactory.createElement("svg:g");return n.setAttributeNS(null,"transform",m(t.transform)),e.append(n),this.svg=n,e}},{key:"_ensureClipGroup",value:function(){if(!this.current.clipGroup){var t=this.svgFactory.createElement("svg:g");t.setAttributeNS(null,"clip-path",this.current.activeClipUrl),this.svg.append(t),this.current.clipGroup=t}return this.current.clipGroup}},{key:"_ensureTransformGroup",value:function(){return this.tgrp||(this.tgrp=this.svgFactory.createElement("svg:g"),this.tgrp.setAttributeNS(null,"transform",m(this.transformMatrix)),this.current.activeClipUrl?this._ensureClipGroup().append(this.tgrp):this.svg.append(this.tgrp)),this.tgrp}}]),t}()},(t,e,r)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.PDFNodeStream=void 0;var n=r(1),i=r(162);function a(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&o(t,e)}function o(t,e){return o=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},o(t,e)}function s(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,n=l(t);if(e){var i=l(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return function(t,e){if(e&&("object"===f(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(this,r)}}function l(t){return l=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},l(t)}function u(){u=function(){return t};var t={},e=Object.prototype,r=e.hasOwnProperty,n=Object.defineProperty||function(t,e,r){t[e]=r.value},i="function"==typeof Symbol?Symbol:{},a=i.iterator||"@@iterator",o=i.asyncIterator||"@@asyncIterator",s=i.toStringTag||"@@toStringTag";function l(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{l({},"")}catch(t){l=function(t,e,r){return t[e]=r}}function c(t,e,r,i){var a=e&&e.prototype instanceof p?e:p,o=Object.create(a.prototype),s=new P(i||[]);return n(o,"_invoke",{value:k(t,r,s)}),o}function h(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}t.wrap=c;var d={};function p(){}function v(){}function y(){}var m={};l(m,a,(function(){return this}));var g=Object.getPrototypeOf,b=g&&g(g(T([])));b&&b!==e&&r.call(b,a)&&(m=b);var _=y.prototype=p.prototype=Object.create(m);function w(t){["next","throw","return"].forEach((function(e){l(t,e,(function(t){return this._invoke(e,t)}))}))}function A(t,e){function i(n,a,o,s){var l=h(t[n],t,a);if("throw"!==l.type){var u=l.arg,c=u.value;return c&&"object"==f(c)&&r.call(c,"__await")?e.resolve(c.__await).then((function(t){i("next",t,o,s)}),(function(t){i("throw",t,o,s)})):e.resolve(c).then((function(t){u.value=t,o(u)}),(function(t){return i("throw",t,o,s)}))}s(l.arg)}var a;n(this,"_invoke",{value:function(t,r){function n(){return new e((function(e,n){i(t,r,e,n)}))}return a=a?a.then(n,n):n()}})}function k(t,e,r){var n="suspendedStart";return function(i,a){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===i)throw a;return{value:void 0,done:!0}}for(r.method=i,r.arg=a;;){var o=r.delegate;if(o){var s=S(o,r);if(s){if(s===d)continue;return s}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var l=h(t,e,r);if("normal"===l.type){if(n=r.done?"completed":"suspendedYield",l.arg===d)continue;return{value:l.arg,done:r.done}}"throw"===l.type&&(n="completed",r.method="throw",r.arg=l.arg)}}}function S(t,e){var r=e.method,n=t.iterator[r];if(void 0===n)return e.delegate=null,"throw"===r&&t.iterator.return&&(e.method="return",e.arg=void 0,S(t,e),"throw"===e.method)||"return"!==r&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+r+"' method")),d;var i=h(n,t.iterator,e.arg);if("throw"===i.type)return e.method="throw",e.arg=i.arg,e.delegate=null,d;var a=i.arg;return a?a.done?(e[t.resultName]=a.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,d):a:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,d)}function x(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function E(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function P(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(x,this),this.reset(!0)}function T(t){if(t){var e=t[a];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var n=-1,i=function e(){for(;++n=0;--i){var a=this.tryEntries[i],o=a.completion;if("root"===a.tryLoc)return n("end");if(a.tryLoc<=this.prev){var s=r.call(a,"catchLoc"),l=r.call(a,"finallyLoc");if(s&&l){if(this.prev=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&r.call(i,"finallyLoc")&&this.prev=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),E(r),d}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var i=n.arg;E(r)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:T(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=void 0),d}},t}function c(t,e,r,n,i,a,o){try{var s=t[a](o),l=s.value}catch(t){return void r(t)}s.done?e(l):Promise.resolve(l).then(n,i)}function h(t){return function(){var e=this,r=arguments;return new Promise((function(n,i){var a=t.apply(e,r);function o(t){c(a,n,i,o,s,"next",t)}function s(t){c(a,n,i,o,s,"throw",t)}o(void 0)}))}}function f(t){return f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},f(t)}function d(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,o=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return o=t.done,t},e:function(t){s=!0,a=t},f:function(){try{o||null==r.return||r.return()}finally{if(s)throw a}}}}(this._rangeRequestReaders.slice(0));try{for(n.s();!(r=n.n()).done;)r.value.cancel(t)}catch(t){n.e(t)}finally{n.f()}}}]),t}();e.PDFNodeStream=A;var k=function(){function t(e){p(this,t),this._url=e.url,this._done=!1,this._storedError=null,this.onProgress=null;var r=e.source;this._contentLength=r.length,this._loaded=0,this._filename=null,this._disableRange=r.disableRange||!1,this._rangeChunkSize=r.rangeChunkSize,this._rangeChunkSize||this._disableRange||(this._disableRange=!0),this._isStreamingSupported=!r.disableStream,this._isRangeSupported=!r.disableRange,this._readableStream=null,this._readCapability=(0,n.createPromiseCapability)(),this._headersCapability=(0,n.createPromiseCapability)()}var e;return y(t,[{key:"headersReady",get:function(){return this._headersCapability.promise}},{key:"filename",get:function(){return this._filename}},{key:"contentLength",get:function(){return this._contentLength}},{key:"isRangeSupported",get:function(){return this._isRangeSupported}},{key:"isStreamingSupported",get:function(){return this._isStreamingSupported}},{key:"read",value:(e=h(u().mark((function t(){var e,r,i;return u().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._readCapability.promise;case 2:if(!this._done){t.next=4;break}return t.abrupt("return",{value:void 0,done:!0});case 4:if(!this._storedError){t.next=6;break}throw this._storedError;case 6:if(null!==(r=this._readableStream.read())){t.next=10;break}return this._readCapability=(0,n.createPromiseCapability)(),t.abrupt("return",this.read());case 10:return this._loaded+=r.length,null===(e=this.onProgress)||void 0===e||e.call(this,{loaded:this._loaded,total:this._contentLength}),i=new Uint8Array(r).buffer,t.abrupt("return",{value:i,done:!1});case 14:case"end":return t.stop()}}),t,this)}))),function(){return e.apply(this,arguments)})},{key:"cancel",value:function(t){this._readableStream?this._readableStream.destroy(t):this._error(t)}},{key:"_error",value:function(t){this._storedError=t,this._readCapability.resolve()}},{key:"_setReadableStream",value:function(t){var e=this;this._readableStream=t,t.on("readable",(function(){e._readCapability.resolve()})),t.on("end",(function(){t.destroy(),e._done=!0,e._readCapability.resolve()})),t.on("error",(function(t){e._error(t)})),!this._isStreamingSupported&&this._isRangeSupported&&this._error(new n.AbortException("streaming is disabled")),this._storedError&&this._readableStream.destroy(this._storedError)}}]),t}(),S=function(){function t(e){p(this,t),this._url=e.url,this._done=!1,this._storedError=null,this.onProgress=null,this._loaded=0,this._readableStream=null,this._readCapability=(0,n.createPromiseCapability)();var r=e.source;this._isStreamingSupported=!r.disableStream}var e;return y(t,[{key:"isStreamingSupported",get:function(){return this._isStreamingSupported}},{key:"read",value:(e=h(u().mark((function t(){var e,r,i;return u().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._readCapability.promise;case 2:if(!this._done){t.next=4;break}return t.abrupt("return",{value:void 0,done:!0});case 4:if(!this._storedError){t.next=6;break}throw this._storedError;case 6:if(null!==(r=this._readableStream.read())){t.next=10;break}return this._readCapability=(0,n.createPromiseCapability)(),t.abrupt("return",this.read());case 10:return this._loaded+=r.length,null===(e=this.onProgress)||void 0===e||e.call(this,{loaded:this._loaded}),i=new Uint8Array(r).buffer,t.abrupt("return",{value:i,done:!1});case 14:case"end":return t.stop()}}),t,this)}))),function(){return e.apply(this,arguments)})},{key:"cancel",value:function(t){this._readableStream?this._readableStream.destroy(t):this._error(t)}},{key:"_error",value:function(t){this._storedError=t,this._readCapability.resolve()}},{key:"_setReadableStream",value:function(t){var e=this;this._readableStream=t,t.on("readable",(function(){e._readCapability.resolve()})),t.on("end",(function(){t.destroy(),e._done=!0,e._readCapability.resolve()})),t.on("error",(function(t){e._error(t)})),this._storedError&&this._readableStream.destroy(this._storedError)}}]),t}();function x(t,e){return{protocol:t.protocol,auth:t.auth,host:t.hostname,port:t.port,path:t.path,method:"GET",headers:e}}var E=function(t){a(r,t);var e=s(r);function r(t){var a;p(this,r);var o=function(e){if(404===e.statusCode){var r=new n.MissingPDFException('Missing PDF "'.concat(a._url,'".'));return a._storedError=r,void a._headersCapability.reject(r)}a._headersCapability.resolve(),a._setReadableStream(e);var o=function(t){return a._readableStream.headers[t.toLowerCase()]},s=(0,i.validateRangeRequestCapabilities)({getResponseHeader:o,isHttp:t.isHttp,rangeChunkSize:a._rangeChunkSize,disableRange:a._disableRange}),l=s.allowRangeRequests,u=s.suggestedLength;a._isRangeSupported=l,a._contentLength=u||a._contentLength,a._filename=(0,i.extractFilenameFromHeader)(o)};return(a=e.call(this,t))._request=null,"http:"===a._url.protocol?a._request=g.request(x(a._url,t.httpHeaders),o):a._request=b.request(x(a._url,t.httpHeaders),o),a._request.on("error",(function(t){a._storedError=t,a._headersCapability.reject(t)})),a._request.end(),a}return y(r)}(k),P=function(t){a(r,t);var e=s(r);function r(t,i,a){var o;for(var s in p(this,r),(o=e.call(this,t))._httpHeaders={},t.httpHeaders){var l=t.httpHeaders[s];void 0!==l&&(o._httpHeaders[s]=l)}o._httpHeaders.Range="bytes=".concat(i,"-").concat(a-1);var u=function(t){if(404!==t.statusCode)o._setReadableStream(t);else{var e=new n.MissingPDFException('Missing PDF "'.concat(o._url,'".'));o._storedError=e}};return o._request=null,"http:"===o._url.protocol?o._request=g.request(x(o._url,o._httpHeaders),u):o._request=b.request(x(o._url,o._httpHeaders),u),o._request.on("error",(function(t){o._storedError=t})),o._request.end(),o}return y(r)}(S),T=function(t){a(r,t);var e=s(r);function r(t){var i;p(this,r),i=e.call(this,t);var a=decodeURIComponent(i._url.path);return w.test(i._url.href)&&(a=a.replace(/^\\//,"")),m.lstat(a,(function(t,e){if(t)return"ENOENT"===t.code&&(t=new n.MissingPDFException('Missing PDF "'.concat(a,'".'))),i._storedError=t,void i._headersCapability.reject(t);i._contentLength=e.size,i._setReadableStream(m.createReadStream(a)),i._headersCapability.resolve()})),i}return y(r)}(k),C=function(t){a(r,t);var e=s(r);function r(t,n,i){var a;p(this,r),a=e.call(this,t);var o=decodeURIComponent(a._url.path);return w.test(a._url.href)&&(o=o.replace(/^\\//,"")),a._setReadableStream(m.createReadStream(o,{start:n,end:i-1})),a}return y(r)}(S)},(t,e,r)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.createResponseStatusError=function(t,e){return 404===t||0===t&&e.startsWith("file:")?new n.MissingPDFException('Missing PDF "'+e+'".'):new n.UnexpectedResponseException("Unexpected server response (".concat(t,') while retrieving PDF "').concat(e,'".'),t)},e.extractFilenameFromHeader=function(t){var e=t("Content-Disposition");if(e){var r=(0,i.getFilenameFromContentDispositionHeader)(e);if(r.includes("%"))try{r=decodeURIComponent(r)}catch(t){}if((0,a.isPdfFile)(r))return r}return null},e.validateRangeRequestCapabilities=function(t){var e=t.getResponseHeader,r=t.isHttp,n=t.rangeChunkSize,i=t.disableRange,a={allowRangeRequests:!1,suggestedLength:void 0},o=parseInt(e("Content-Length"),10);return Number.isInteger(o)?(a.suggestedLength=o,o<=2*n||i||!r||"bytes"!==e("Accept-Ranges")||"identity"!==(e("Content-Encoding")||"identity")||(a.allowRangeRequests=!0),a):a},e.validateResponseStatus=function(t){return 200===t||206===t};var n=r(1),i=r(163),a=r(137)},(t,e,r)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.getFilenameFromContentDispositionHeader=function(t){var e=!0,r=s("filename\\\\*","i").exec(t);if(r){var a=c(r=r[1]);return u(a=f(a=h(a=unescape(a))))}if(r=function(t){for(var e,r=[],n=s("filename\\\\*((?!0\\\\d)\\\\d+)(\\\\*?)","ig");null!==(e=n.exec(t));){var a=i(e,4),o=a[1],l=a[2],u=a[3];if((o=parseInt(o,10))in r){if(0===o)break}else r[o]=[l,u]}for(var f=[],d=0;dt.length)&&(e=t.length);for(var r=0,n=new Array(e);r{Object.defineProperty(e,"__esModule",{value:!0}),e.PDFNetworkStream=void 0;var n=r(1),i=r(162);function a(){a=function(){return t};var t={},e=Object.prototype,r=e.hasOwnProperty,n=Object.defineProperty||function(t,e,r){t[e]=r.value},i="function"==typeof Symbol?Symbol:{},o=i.iterator||"@@iterator",s=i.asyncIterator||"@@asyncIterator",l=i.toStringTag||"@@toStringTag";function u(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(t){u=function(t,e,r){return t[e]=r}}function h(t,e,r,i){var a=e&&e.prototype instanceof p?e:p,o=Object.create(a.prototype),s=new P(i||[]);return n(o,"_invoke",{value:k(t,r,s)}),o}function f(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}t.wrap=h;var d={};function p(){}function v(){}function y(){}var m={};u(m,o,(function(){return this}));var g=Object.getPrototypeOf,b=g&&g(g(T([])));b&&b!==e&&r.call(b,o)&&(m=b);var _=y.prototype=p.prototype=Object.create(m);function w(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function A(t,e){function i(n,a,o,s){var l=f(t[n],t,a);if("throw"!==l.type){var u=l.arg,h=u.value;return h&&"object"==c(h)&&r.call(h,"__await")?e.resolve(h.__await).then((function(t){i("next",t,o,s)}),(function(t){i("throw",t,o,s)})):e.resolve(h).then((function(t){u.value=t,o(u)}),(function(t){return i("throw",t,o,s)}))}s(l.arg)}var a;n(this,"_invoke",{value:function(t,r){function n(){return new e((function(e,n){i(t,r,e,n)}))}return a=a?a.then(n,n):n()}})}function k(t,e,r){var n="suspendedStart";return function(i,a){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===i)throw a;return{value:void 0,done:!0}}for(r.method=i,r.arg=a;;){var o=r.delegate;if(o){var s=S(o,r);if(s){if(s===d)continue;return s}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var l=f(t,e,r);if("normal"===l.type){if(n=r.done?"completed":"suspendedYield",l.arg===d)continue;return{value:l.arg,done:r.done}}"throw"===l.type&&(n="completed",r.method="throw",r.arg=l.arg)}}}function S(t,e){var r=e.method,n=t.iterator[r];if(void 0===n)return e.delegate=null,"throw"===r&&t.iterator.return&&(e.method="return",e.arg=void 0,S(t,e),"throw"===e.method)||"return"!==r&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+r+"' method")),d;var i=f(n,t.iterator,e.arg);if("throw"===i.type)return e.method="throw",e.arg=i.arg,e.delegate=null,d;var a=i.arg;return a?a.done?(e[t.resultName]=a.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,d):a:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,d)}function x(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function E(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function P(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(x,this),this.reset(!0)}function T(t){if(t){var e=t[o];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var n=-1,i=function e(){for(;++n=0;--i){var a=this.tryEntries[i],o=a.completion;if("root"===a.tryLoc)return n("end");if(a.tryLoc<=this.prev){var s=r.call(a,"catchLoc"),l=r.call(a,"finallyLoc");if(s&&l){if(this.prev=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&r.call(i,"finallyLoc")&&this.prev=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),E(r),d}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var i=n.arg;E(r)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:T(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=void 0),d}},t}function o(t,e,r,n,i,a,o){try{var s=t[a](o),l=s.value}catch(t){return void r(t)}s.done?e(l):Promise.resolve(l).then(n,i)}function s(t){return function(){var e=this,r=arguments;return new Promise((function(n,i){var a=t.apply(e,r);function s(t){o(a,n,i,s,l,"next",t)}function l(t){o(a,n,i,s,l,"throw",t)}s(void 0)}))}}function l(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=function(t,e){if(t){if("string"==typeof t)return u(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?u(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,i=function(){};return{s:i,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,o=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return o=t.done,t},e:function(t){s=!0,a=t},f:function(){try{o||null==r.return||r.return()}finally{if(s)throw a}}}}function u(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r1&&void 0!==arguments[1]?arguments[1]:{};h(this,t),this.url=e,this.isHttp=/^https?:/i.test(e),this.httpHeaders=this.isHttp&&r.httpHeaders||Object.create(null),this.withCredentials=r.withCredentials||!1,this.getXhr=r.getXhr||function(){return new XMLHttpRequest},this.currXhrId=0,this.pendingRequests=Object.create(null)}return d(t,[{key:"requestRange",value:function(t,e,r){var n={begin:t,end:e};for(var i in r)n[i]=r[i];return this.request(n)}},{key:"requestFull",value:function(t){return this.request(t)}},{key:"request",value:function(t){var e=this.getXhr(),r=this.currXhrId++,n=this.pendingRequests[r]={xhr:e};for(var i in e.open("GET",this.url, !0),e.withCredentials=this.withCredentials,this.httpHeaders){var a=this.httpHeaders[i];void 0!==a&&e.setRequestHeader(i,a)}return this.isHttp&&"begin"in t&&"end"in t?(e.setRequestHeader("Range","bytes=".concat(t.begin,"-").concat(t.end-1)),n.expectedStatus=206):n.expectedStatus=200,e.responseType="arraybuffer",t.onError&&(e.onerror=function(r){t.onError(e.status)}),e.onreadystatechange=this.onStateChange.bind(this,r),e.onprogress=this.onProgress.bind(this,r),n.onHeadersReceived=t.onHeadersReceived,n.onDone=t.onDone,n.onError=t.onError,n.onProgress=t.onProgress,e.send(null),r}},{key:"onProgress",value:function(t,e){var r,n=this.pendingRequests[t];n&&(null===(r=n.onProgress)||void 0===r||r.call(n,e))}},{key:"onStateChange",value:function(t,e){var r=this.pendingRequests[t];if(r){var i=r.xhr;if(i.readyState>=2&&r.onHeadersReceived&&(r.onHeadersReceived(),delete r.onHeadersReceived),4===i.readyState&&t in this.pendingRequests)if(delete this.pendingRequests[t],0===i.status&&this.isHttp){var a;null===(a=r.onError)||void 0===a||a.call(r,i.status)}else{var o=i.status||200;if(200===o&&206===r.expectedStatus||o===r.expectedStatus){var s=function(t){var e=t.response;return"string"!=typeof e?e:(0,n.stringToBytes)(e).buffer}(i);if(206===o){var l=i.getResponseHeader("Content-Range"),u=/bytes (\\d+)-(\\d+)\\/(\\d+)/.exec(l);r.onDone({begin:parseInt(u[1],10),chunk:s})}else if(s)r.onDone({begin:0,chunk:s});else{var c;null===(c=r.onError)||void 0===c||c.call(r,i.status)}}else{var h;null===(h=r.onError)||void 0===h||h.call(r,i.status)}}}}},{key:"getRequestXhr",value:function(t){return this.pendingRequests[t].xhr}},{key:"isPendingRequest",value:function(t){return t in this.pendingRequests}},{key:"abortRequest",value:function(t){var e=this.pendingRequests[t].xhr;delete this.pendingRequests[t],e.abort()}}]),t}(),v=function(){function t(e){h(this,t),this._source=e,this._manager=new p(e.url,{httpHeaders:e.httpHeaders,withCredentials:e.withCredentials}),this._rangeChunkSize=e.rangeChunkSize,this._fullRequestReader=null,this._rangeRequestReaders=[]}return d(t,[{key:"_onRangeRequestReaderClosed",value:function(t){var e=this._rangeRequestReaders.indexOf(t);e>=0&&this._rangeRequestReaders.splice(e,1)}},{key:"getFullReader",value:function(){return(0,n.assert)(!this._fullRequestReader,"PDFNetworkStream.getFullReader can only be called once."),this._fullRequestReader=new y(this._manager,this._source),this._fullRequestReader}},{key:"getRangeReader",value:function(t,e){var r=new m(this._manager,t,e);return r.onClosed=this._onRangeRequestReaderClosed.bind(this),this._rangeRequestReaders.push(r),r}},{key:"cancelAllRequests",value:function(t){var e;null===(e=this._fullRequestReader)||void 0===e||e.cancel(t);var r,n=l(this._rangeRequestReaders.slice(0));try{for(n.s();!(r=n.n()).done;)r.value.cancel(t)}catch(t){n.e(t)}finally{n.f()}}}]),t}();e.PDFNetworkStream=v;var y=function(){function t(e,r){h(this,t),this._manager=e;var i={onHeadersReceived:this._onHeadersReceived.bind(this),onDone:this._onDone.bind(this),onError:this._onError.bind(this),onProgress:this._onProgress.bind(this)};this._url=r.url,this._fullRequestId=e.requestFull(i),this._headersReceivedCapability=(0,n.createPromiseCapability)(),this._disableRange=r.disableRange||!1,this._contentLength=r.length,this._rangeChunkSize=r.rangeChunkSize,this._rangeChunkSize||this._disableRange||(this._disableRange=!0),this._isStreamingSupported=!1,this._isRangeSupported=!1,this._cachedChunks=[],this._requests=[],this._done=!1,this._storedError=void 0,this._filename=null,this.onProgress=null}var e;return d(t,[{key:"_onHeadersReceived",value:function(){var t=this._fullRequestId,e=this._manager.getRequestXhr(t),r=function(t){return e.getResponseHeader(t)},n=(0,i.validateRangeRequestCapabilities)({getResponseHeader:r,isHttp:this._manager.isHttp,rangeChunkSize:this._rangeChunkSize,disableRange:this._disableRange}),a=n.allowRangeRequests,o=n.suggestedLength;a&&(this._isRangeSupported=!0),this._contentLength=o||this._contentLength,this._filename=(0,i.extractFilenameFromHeader)(r),this._isRangeSupported&&this._manager.abortRequest(t),this._headersReceivedCapability.resolve()}},{key:"_onDone",value:function(t){if(t&&(this._requests.length>0?this._requests.shift().resolve({value:t.chunk,done:!1}):this._cachedChunks.push(t.chunk)),this._done=!0,!(this._cachedChunks.length>0)){var e,r=l(this._requests);try{for(r.s();!(e=r.n()).done;)e.value.resolve({value:void 0,done:!0})}catch(t){r.e(t)}finally{r.f()}this._requests.length=0}}},{key:"_onError",value:function(t){this._storedError=(0,i.createResponseStatusError)(t,this._url),this._headersReceivedCapability.reject(this._storedError);var e,r=l(this._requests);try{for(r.s();!(e=r.n()).done;)e.value.reject(this._storedError)}catch(t){r.e(t)}finally{r.f()}this._requests.length=0,this._cachedChunks.length=0}},{key:"_onProgress",value:function(t){var e;null===(e=this.onProgress)||void 0===e||e.call(this,{loaded:t.loaded,total:t.lengthComputable?t.total:this._contentLength})}},{key:"filename",get:function(){return this._filename}},{key:"isRangeSupported",get:function(){return this._isRangeSupported}},{key:"isStreamingSupported",get:function(){return this._isStreamingSupported}},{key:"contentLength",get:function(){return this._contentLength}},{key:"headersReady",get:function(){return this._headersReceivedCapability.promise}},{key:"read",value:(e=s(a().mark((function t(){var e,r;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!this._storedError){t.next=2;break}throw this._storedError;case 2:if(!(this._cachedChunks.length>0)){t.next=5;break}return e=this._cachedChunks.shift(),t.abrupt("return",{value:e,done:!1});case 5:if(!this._done){t.next=7;break}return t.abrupt("return",{value:void 0,done:!0});case 7:return r=(0,n.createPromiseCapability)(),this._requests.push(r),t.abrupt("return",r.promise);case 10:case"end":return t.stop()}}),t,this)}))),function(){return e.apply(this,arguments)})},{key:"cancel",value:function(t){this._done=!0,this._headersReceivedCapability.reject(t);var e,r=l(this._requests);try{for(r.s();!(e=r.n()).done;)e.value.resolve({value:void 0,done:!0})}catch(t){r.e(t)}finally{r.f()}this._requests.length=0,this._manager.isPendingRequest(this._fullRequestId)&&this._manager.abortRequest(this._fullRequestId),this._fullRequestReader=null}}]),t}(),m=function(){function t(e,r,n){h(this,t),this._manager=e;var i={onDone:this._onDone.bind(this),onError:this._onError.bind(this),onProgress:this._onProgress.bind(this)};this._url=e.url,this._requestId=e.requestRange(r,n,i),this._requests=[],this._queuedChunk=null,this._done=!1,this._storedError=void 0,this.onProgress=null,this.onClosed=null}var e;return d(t,[{key:"_close",value:function(){var t;null===(t=this.onClosed)||void 0===t||t.call(this,this)}},{key:"_onDone",value:function(t){var e=t.chunk;this._requests.length>0?this._requests.shift().resolve({value:e,done:!1}):this._queuedChunk=e,this._done=!0;var r,n=l(this._requests);try{for(n.s();!(r=n.n()).done;)r.value.resolve({value:void 0,done:!0})}catch(t){n.e(t)}finally{n.f()}this._requests.length=0,this._close()}},{key:"_onError",value:function(t){this._storedError=(0,i.createResponseStatusError)(t,this._url);var e,r=l(this._requests);try{for(r.s();!(e=r.n()).done;)e.value.reject(this._storedError)}catch(t){r.e(t)}finally{r.f()}this._requests.length=0,this._queuedChunk=null}},{key:"_onProgress",value:function(t){var e;this.isStreamingSupported||null===(e=this.onProgress)||void 0===e||e.call(this,{loaded:t.loaded})}},{key:"isStreamingSupported",get:function(){return!1}},{key:"read",value:(e=s(a().mark((function t(){var e,r;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!this._storedError){t.next=2;break}throw this._storedError;case 2:if(null===this._queuedChunk){t.next=6;break}return e=this._queuedChunk,this._queuedChunk=null,t.abrupt("return",{value:e,done:!1});case 6:if(!this._done){t.next=8;break}return t.abrupt("return",{value:void 0,done:!0});case 8:return r=(0,n.createPromiseCapability)(),this._requests.push(r),t.abrupt("return",r.promise);case 11:case"end":return t.stop()}}),t,this)}))),function(){return e.apply(this,arguments)})},{key:"cancel",value:function(t){this._done=!0;var e,r=l(this._requests);try{for(r.s();!(e=r.n()).done;)e.value.resolve({value:void 0,done:!0})}catch(t){r.e(t)}finally{r.f()}this._requests.length=0,this._manager.isPendingRequest(this._requestId)&&this._manager.abortRequest(this._requestId),this._close()}}]),t}()},(t,e,r)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.PDFFetchStream=void 0;var n=r(1),i=r(162);function a(){a=function(){return t};var t={},e=Object.prototype,r=e.hasOwnProperty,n=Object.defineProperty||function(t,e,r){t[e]=r.value},i="function"==typeof Symbol?Symbol:{},o=i.iterator||"@@iterator",s=i.asyncIterator||"@@asyncIterator",u=i.toStringTag||"@@toStringTag";function c(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{c({},"")}catch(t){c=function(t,e,r){return t[e]=r}}function h(t,e,r,i){var a=e&&e.prototype instanceof p?e:p,o=Object.create(a.prototype),s=new P(i||[]);return n(o,"_invoke",{value:k(t,r,s)}),o}function f(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}t.wrap=h;var d={};function p(){}function v(){}function y(){}var m={};c(m,o,(function(){return this}));var g=Object.getPrototypeOf,b=g&&g(g(T([])));b&&b!==e&&r.call(b,o)&&(m=b);var _=y.prototype=p.prototype=Object.create(m);function w(t){["next","throw","return"].forEach((function(e){c(t,e,(function(t){return this._invoke(e,t)}))}))}function A(t,e){function i(n,a,o,s){var u=f(t[n],t,a);if("throw"!==u.type){var c=u.arg,h=c.value;return h&&"object"==l(h)&&r.call(h,"__await")?e.resolve(h.__await).then((function(t){i("next",t,o,s)}),(function(t){i("throw",t,o,s)})):e.resolve(h).then((function(t){c.value=t,o(c)}),(function(t){return i("throw",t,o,s)}))}s(u.arg)}var a;n(this,"_invoke",{value:function(t,r){function n(){return new e((function(e,n){i(t,r,e,n)}))}return a=a?a.then(n,n):n()}})}function k(t,e,r){var n="suspendedStart";return function(i,a){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===i)throw a;return{value:void 0,done:!0}}for(r.method=i,r.arg=a;;){var o=r.delegate;if(o){var s=S(o,r);if(s){if(s===d)continue;return s}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var l=f(t,e,r);if("normal"===l.type){if(n=r.done?"completed":"suspendedYield",l.arg===d)continue;return{value:l.arg,done:r.done}}"throw"===l.type&&(n="completed",r.method="throw",r.arg=l.arg)}}}function S(t,e){var r=e.method,n=t.iterator[r];if(void 0===n)return e.delegate=null,"throw"===r&&t.iterator.return&&(e.method="return",e.arg=void 0,S(t,e),"throw"===e.method)||"return"!==r&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+r+"' method")),d;var i=f(n,t.iterator,e.arg);if("throw"===i.type)return e.method="throw",e.arg=i.arg,e.delegate=null,d;var a=i.arg;return a?a.done?(e[t.resultName]=a.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,d):a:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,d)}function x(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function E(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function P(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(x,this),this.reset(!0)}function T(t){if(t){var e=t[o];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var n=-1,i=function e(){for(;++n=0;--i){var a=this.tryEntries[i],o=a.completion;if("root"===a.tryLoc)return n("end");if(a.tryLoc<=this.prev){var s=r.call(a,"catchLoc"),l=r.call(a,"finallyLoc");if(s&&l){if(this.prev=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&r.call(i,"finallyLoc")&&this.prev=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),E(r),d}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var i=n.arg;E(r)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:T(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=void 0),d}},t}function o(t,e,r,n,i,a,o){try{var s=t[a](o),l=s.value}catch(t){return void r(t)}s.done?e(l):Promise.resolve(l).then(n,i)}function s(t){return function(){var e=this,r=arguments;return new Promise((function(n,i){var a=t.apply(e,r);function s(t){o(a,n,i,s,l,"next",t)}function l(t){o(a,n,i,s,l,"throw",t)}s(void 0)}))}}function l(t){return l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},l(t)}function u(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,o=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return o=t.done,t},e:function(t){s=!0,a=t},f:function(){try{o||null==r.return||r.return()}finally{if(s)throw a}}}}(this._rangeRequestReaders.slice(0));try{for(n.s();!(r=n.n()).done;)r.value.cancel(t)}catch(t){n.e(t)}finally{n.f()}}}]),t}();e.PDFFetchStream=v;var y=function(){function t(e){var r=this;c(this,t),this._stream=e,this._reader=null,this._loaded=0,this._filename=null;var a=e.source;this._withCredentials=a.withCredentials||!1,this._contentLength=a.length,this._headersCapability=(0,n.createPromiseCapability)(),this._disableRange=a.disableRange||!1,this._rangeChunkSize=a.rangeChunkSize,this._rangeChunkSize||this._disableRange||(this._disableRange=!0),this._abortController=new AbortController,this._isStreamingSupported=!a.disableStream,this._isRangeSupported=!a.disableRange,this._headers=p(this._stream.httpHeaders);var o=a.url;fetch(o,d(this._headers,this._withCredentials,this._abortController)).then((function(t){if(!(0,i.validateResponseStatus)(t.status))throw(0,i.createResponseStatusError)(t.status,o);r._reader=t.body.getReader(),r._headersCapability.resolve();var e=function(e){return t.headers.get(e)},a=(0,i.validateRangeRequestCapabilities)({getResponseHeader:e,isHttp:r._stream.isHttp,rangeChunkSize:r._rangeChunkSize,disableRange:r._disableRange}),s=a.allowRangeRequests,l=a.suggestedLength;r._isRangeSupported=s,r._contentLength=l||r._contentLength,r._filename=(0,i.extractFilenameFromHeader)(e),!r._isStreamingSupported&&r._isRangeSupported&&r.cancel(new n.AbortException("Streaming is disabled."))})).catch(this._headersCapability.reject),this.onProgress=null}var e;return f(t,[{key:"headersReady",get:function(){return this._headersCapability.promise}},{key:"filename",get:function(){return this._filename}},{key:"contentLength",get:function(){return this._contentLength}},{key:"isRangeSupported",get:function(){return this._isRangeSupported}},{key:"isStreamingSupported",get:function(){return this._isStreamingSupported}},{key:"read",value:(e=s(a().mark((function t(){var e,r,n,i,o;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._headersCapability.promise;case 2:return t.next=4,this._reader.read();case 4:if(r=t.sent,n=r.value,!(i=r.done)){t.next=9;break}return t.abrupt("return",{value:n,done:i});case 9:return this._loaded+=n.byteLength,null===(e=this.onProgress)||void 0===e||e.call(this,{loaded:this._loaded,total:this._contentLength}),o=new Uint8Array(n).buffer,t.abrupt("return",{value:o,done:!1});case 13:case"end":return t.stop()}}),t,this)}))),function(){return e.apply(this,arguments)})},{key:"cancel",value:function(t){var e;null===(e=this._reader)||void 0===e||e.cancel(t),this._abortController.abort()}}]),t}(),m=function(){function t(e,r,a){var o=this;c(this,t),this._stream=e,this._reader=null,this._loaded=0;var s=e.source;this._withCredentials=s.withCredentials||!1,this._readCapability=(0,n.createPromiseCapability)(),this._isStreamingSupported=!s.disableStream,this._abortController=new AbortController,this._headers=p(this._stream.httpHeaders),this._headers.append("Range","bytes=".concat(r,"-").concat(a-1));var l=s.url;fetch(l,d(this._headers,this._withCredentials,this._abortController)).then((function(t){if(!(0,i.validateResponseStatus)(t.status))throw(0,i.createResponseStatusError)(t.status,l);o._readCapability.resolve(),o._reader=t.body.getReader()})).catch(this._readCapability.reject),this.onProgress=null}var e;return f(t,[{key:"isStreamingSupported",get:function(){return this._isStreamingSupported}},{key:"read",value:(e=s(a().mark((function t(){var e,r,n,i,o;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._readCapability.promise;case 2:return t.next=4,this._reader.read();case 4:if(r=t.sent,n=r.value,!(i=r.done)){t.next=9;break}return t.abrupt("return",{value:n,done:i});case 9:return this._loaded+=n.byteLength,null===(e=this.onProgress)||void 0===e||e.call(this,{loaded:this._loaded}),o=new Uint8Array(n).buffer,t.abrupt("return",{value:o,done:!1});case 13:case"end":return t.stop()}}),t,this)}))),function(){return e.apply(this,arguments)})},{key:"cancel",value:function(t){var e;null===(e=this._reader)||void 0===e||e.cancel(t),this._abortController.abort()}}]),t}()}],__webpack_module_cache__={};function __w_pdfjs_require__(t){var e=__webpack_module_cache__[t];if(void 0!==e)return e.exports;var r=__webpack_module_cache__[t]={exports:{}};return __webpack_modules__[t](r,r.exports,__w_pdfjs_require__),r.exports}var __nested_webpack_exports__={};return(()=>{var t=__nested_webpack_exports__;Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"AbortException",{enumerable:!0,get:function(){return e.AbortException}}),Object.defineProperty(t,"AnnotationEditorLayer",{enumerable:!0,get:function(){return a.AnnotationEditorLayer}}),Object.defineProperty(t,"AnnotationEditorParamsType",{enumerable:!0,get:function(){return e.AnnotationEditorParamsType}}),Object.defineProperty(t,"AnnotationEditorType",{enumerable:!0,get:function(){return e.AnnotationEditorType}}),Object.defineProperty(t,"AnnotationEditorUIManager",{enumerable:!0,get:function(){return o.AnnotationEditorUIManager}}),Object.defineProperty(t,"AnnotationLayer",{enumerable:!0,get:function(){return s.AnnotationLayer}}),Object.defineProperty(t,"AnnotationMode",{enumerable:!0,get:function(){return e.AnnotationMode}}),Object.defineProperty(t,"CMapCompressionType",{enumerable:!0,get:function(){return e.CMapCompressionType}}),Object.defineProperty(t,"GlobalWorkerOptions",{enumerable:!0,get:function(){return l.GlobalWorkerOptions}}),Object.defineProperty(t,"InvalidPDFException",{enumerable:!0,get:function(){return e.InvalidPDFException}}),Object.defineProperty(t,"MissingPDFException",{enumerable:!0,get:function(){return e.MissingPDFException}}),Object.defineProperty(t,"OPS",{enumerable:!0,get:function(){return e.OPS}}),Object.defineProperty(t,"PDFDataRangeTransport",{enumerable:!0,get:function(){return r.PDFDataRangeTransport}}),Object.defineProperty(t,"PDFDateString",{enumerable:!0,get:function(){return n.PDFDateString}}),Object.defineProperty(t,"PDFWorker",{enumerable:!0,get:function(){return r.PDFWorker}}),Object.defineProperty(t,"PasswordResponses",{enumerable:!0,get:function(){return e.PasswordResponses}}),Object.defineProperty(t,"PermissionFlag",{enumerable:!0,get:function(){return e.PermissionFlag}}),Object.defineProperty(t,"PixelsPerInch",{enumerable:!0,get:function(){return n.PixelsPerInch}}),Object.defineProperty(t,"RenderingCancelledException",{enumerable:!0,get:function(){return n.RenderingCancelledException}}),Object.defineProperty(t,"SVGGraphics",{enumerable:!0,get:function(){return c.SVGGraphics}}),Object.defineProperty(t,"UNSUPPORTED_FEATURES",{enumerable:!0,get:function(){return e.UNSUPPORTED_FEATURES}}),Object.defineProperty(t,"UnexpectedResponseException",{enumerable:!0,get:function(){return e.UnexpectedResponseException}}),Object.defineProperty(t,"Util",{enumerable:!0,get:function(){return e.Util}}),Object.defineProperty(t,"VerbosityLevel",{enumerable:!0,get:function(){return e.VerbosityLevel}}),Object.defineProperty(t,"XfaLayer",{enumerable:!0,get:function(){return h.XfaLayer}}),Object.defineProperty(t,"build",{enumerable:!0,get:function(){return r.build}}),Object.defineProperty(t,"createPromiseCapability",{enumerable:!0,get:function(){return e.createPromiseCapability}}),Object.defineProperty(t,"createValidAbsoluteUrl",{enumerable:!0,get:function(){return e.createValidAbsoluteUrl}}),Object.defineProperty(t,"getDocument",{enumerable:!0,get:function(){return r.getDocument}}),Object.defineProperty(t,"getFilenameFromUrl",{enumerable:!0,get:function(){return n.getFilenameFromUrl}}),Object.defineProperty(t,"getPdfFilenameFromUrl",{enumerable:!0,get:function(){return n.getPdfFilenameFromUrl}}),Object.defineProperty(t,"getXfaPageViewport",{enumerable:!0,get:function(){return n.getXfaPageViewport}}),Object.defineProperty(t,"isDataScheme",{enumerable:!0,get:function(){return n.isDataScheme}}),Object.defineProperty(t,"isPdfFile",{enumerable:!0,get:function(){return n.isPdfFile}}),Object.defineProperty(t,"loadScript",{enumerable:!0,get:function(){return n.loadScript}}),Object.defineProperty(t,"renderTextLayer",{enumerable:!0,get:function(){return i.renderTextLayer}}),Object.defineProperty(t,"setLayerDimensions",{enumerable:!0,get:function(){return n.setLayerDimensions}}),Object.defineProperty(t,"shadow",{enumerable:!0,get:function(){return e.shadow}}),Object.defineProperty(t,"updateTextLayer",{enumerable:!0,get:function(){return i.updateTextLayer}}),Object.defineProperty(t,"version",{enumerable:!0,get:function(){return r.version}});var e=__w_pdfjs_require__(1),r=__w_pdfjs_require__(133),n=__w_pdfjs_require__(137),i=__w_pdfjs_require__(151),a=__w_pdfjs_require__(152),o=__w_pdfjs_require__(136),s=__w_pdfjs_require__(157),l=__w_pdfjs_require__(144),u=__w_pdfjs_require__(3),c=__w_pdfjs_require__(160),h=__w_pdfjs_require__(159);if(u.isNodeJS){var f=__w_pdfjs_require__(161).PDFNodeStream;(0,r.setPDFNetworkStreamFactory)((function(t){return new f(t)}))}else{var d=__w_pdfjs_require__(164).PDFNetworkStream,p=__w_pdfjs_require__(165).PDFFetchStream;(0,r.setPDFNetworkStreamFactory)((function(t){return(0,n.isValidFetchUrl)(t.url)?new p(t):new d(t)}))}})(),__nested_webpack_exports__})(),"object"==typeof exports&&"object"==typeof module?module.exports=factory():"function"==typeof define&&define.amd?define("pdfjs-dist/build/pdf",[],factory):"object"==typeof exports?exports["pdfjs-dist/build/pdf"]=factory():root["pdfjs-dist/build/pdf"]=root.pdfjsLib=factory();`;function ne(e){var t,r,s,n,a;for(t="",s=e.length,r=0;r=1&&n<=127?t+=e.charAt(r):n>2047?(a=224|n>>12&15,t+=String.fromCharCode(a),a=128|n>>6&63,t+=String.fromCharCode(a),a=128|n>>0&63,t+=String.fromCharCode(a)):(a=192|n>>6&31,t+=String.fromCharCode(a),a=128|n>>0&63,t+=String.fromCharCode(a));return t}var l="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";function ae(e){var t,r,s,n,a,i;for(s=e.length,r=0,t="";r>2),t+=l.charAt((n&3)<<4),t+="==";break}if(a=e.charCodeAt(r++),r==s){t+=l.charAt(n>>2),t+=l.charAt((n&3)<<4|(a&240)>>4),t+=l.charAt((a&15)<<2),t+="=";break}i=e.charCodeAt(r++),t+=l.charAt(n>>2),t+=l.charAt((n&3)<<4|(a&240)>>4),t+=l.charAt((a&15)<<2|(i&192)>>6),t+=l.charAt(i&63)}return t}function E(e){return ae(ne(e))}const ie=`data:text/javascript;base64,${E(re)}`,oe=`data:text/javascript;base64,${E(te)}`;let _=!1,P=!1;const se=X({name:"VueOfficePdf",props:{src:[String,ArrayBuffer,Blob],requestOptions:{type:Object,default:()=>({})},staticFileUrl:{type:String,default:"https://unpkg.com/pdfjs-dist@3.1.81/"},options:{type:Object,default:()=>({})}},emits:["rendered","error"],setup(e,{emit:t}){let r=null,s=null;const n=w(null),a=w([]),i=w(0),S=5;let p=null;$(()=>{r!==null&&(r.destroy(),r=null,s=null,p&&clearTimeout(p))});function T(){return B(ie).then(()=>{if(window.pdfjsLib&&!P)P=!0,window.pdfjsLib.GlobalWorkerOptions.workerSrc=oe;else return Promise.reject("window.pdfjsLib未找到")})}function F(){return new Promise(o=>{const c=()=>{window.pdfjsLib?o():p=setTimeout(c,10)};c()})}function A(){return window.pdfjsLib?Promise.resolve():_?F():(_=!0,T())}function O(){if(!e.src){i.value=0;return}s=window.pdfjsLib.getDocument({url:D(e.src),httpHeaders:e.requestOptions&&e.requestOptions.headers,withCredentials:e.requestOptions&&e.requestOptions.withCredentials,cMapUrl:`${e.staticFileUrl.endsWith("/")?e.staticFileUrl:e.staticFileUrl+"/"}cmaps/`,cMapPacked:!0,enableXfa:!0,...U(e.options,["width"])}),s.promise.then(o=>{r&&r.destroy(),r=o,i.value=e.options.lazy?Math.min(r.numPages,S):r.numPages,setTimeout(()=>{m(1)})}).catch(o=>{t("error",o)})}function j(o){if(!e.options.lazy)return;const{scrollTop:c,scrollHeight:f,clientHeight:h}=o.target;if(c+h>=f){if(i.value>=r.numPages)return;let u=i.value;i.value=Math.min(r.numPages,u+S),i.value>u&&m(u+1)}}function m(o){r.getPage(o).then(c=>{const f=c.getViewport({scale:2}),h=window.devicePixelRatio>2?1.5:2,u=a.value[o-1],R=u.getContext("2d");u.width=Math.floor(f.width*h),u.height=Math.floor(f.height*h);let d=Math.floor(f.width),v=Math.floor(f.height);if(e.options.width){let g=e.options.width/d;d=Math.floor(e.options.width),v=Math.floor(v*g)}let x=n.value.getBoundingClientRect().width-20;if(d>x){let g=x/d;d=Math.floor(x),v=Math.floor(v*g)}u.style.width=d+"px",u.style.height=v+"px";const L=h!==1?[h,0,0,h,0,0]:null;c.render({canvasContext:R,transform:L,viewport:f}).promise.then(()=>{i.value>o?m(o+1):t("rendered")}).catch(g=>{t("error",g)})}).catch(c=>{t("error",c)})}function I(){m(1)}q(()=>{e.src&&A().then(O).catch(o=>{console.warn(o)})}),G(()=>e.src,()=>{A().then(O).catch(o=>{console.warn(o)})});function M(o){r&&r._transport&&r._transport.getData().then(c=>{N(o||`vue-office-pdf-${new Date().getTime()}.pdf`,c.buffer)})}return{wrapperRef:n,rootRef:a,numPages:i,save:M,onScrollPdf:j,rerender:I}}}),ce={key:0,ref:"wrapperRef",class:"vue-office-pdf-wrapper",style:{background:"gray",padding:"30px 0",position:"relative"}};function ue(e,t,r,s,n,a){return y(),b("div",{class:"vue-office-pdf",ref:"vue-office-pdf",style:{"text-align":"center","overflow-y":"auto"},onScroll:t[0]||(t[0]=(...i)=>e.onScrollPdf&&e.onScrollPdf(...i))},[e.numPages?(y(),b("div",ce,[(y(!0),b(W,null,z(e.numPages,i=>(y(),b("canvas",{ref_for:!0,ref:"rootRef",key:i,style:{width:"100%"}}))),128)),V(e.$slots,"default")],512)):Y("",!0)],544)}const k=H(se,[["render",ue]]);k.install=function(e){e.component(k.name,k)};const ve={__name:"PdfDemo",setup(e){function t(){C.hideLoading()}function r(i){console.log("出差",i),C.hideLoading()}const s=location.origin+(location.pathname+"/").replace("//","/")+"static/test-files/test.pdf",n=w();window.docxRef=n;const a={headers:{"component-name":"VueOfficePdf"}};return(i,S)=>(y(),K(ee,{accept:".pdf",placeholder:"请输入pdf文件地址","default-src":s},{default:J(p=>[Z(Q(k),{ref_key:"docxRef",ref:n,src:p.src,style:{flex:"1",height:"0"},options:{lazy:!0},"request-options":a,onRendered:t,onError:r},null,8,["src"])]),_:1}))}};export{ve as default}; diff --git a/examples/dist/assets/PreviewWrapper-99bcc9b3.js b/examples/dist/assets/PreviewWrapper-99bcc9b3.js new file mode 100644 index 0000000..b20c02b --- /dev/null +++ b/examples/dist/assets/PreviewWrapper-99bcc9b3.js @@ -0,0 +1 @@ +import{r as u,p as C,_ as I,w as N,q as n,a as d,c as k,u as t,g as i,f as r,s as g,t as S,e as x,m as y,l as V,v as A,x as R,b as T}from"./index-75869108.js";function $(e){const p=u("url"),a=u(e),o=u(e),l=u(typeof e=="string"?e.endsWith(".xls"):!1),c=u([]);function h(_){l.value=_.name.endsWith("xls");let f=new FileReader;return f.onload=s=>{let v=s.target.result;o.value=v},f.readAsArrayBuffer(_),!1}return{type:p,inputSrc:a,src:o,xls:l,fileList:c,beforeUpload:h}}let w=u(!1),B;function q(e){B=C.loading(e,0),w.value=!0}function E(){w.value===!0&&(B(),w.value=!1)}const F={loading:w,showLoading:q,hideLoading:E};function j(){return location.href.includes("test")}const z=e=>(A("data-v-0bd825a5"),e=e(),R(),e),D={class:"preview-wrapper"},G={key:0,class:"operate-area"},H=z(()=>T("div",{class:"preview-wrapper-main"},null,-1)),J={__name:"PreviewWrapper",props:{accept:String,placeholder:String,defaultSrc:String},setup(e){const p=e,{type:a,inputSrc:o,src:l,xls:c,fileList:h,beforeUpload:_}=$(p.defaultSrc);return N(l,()=>{F.showLoading()},{immediate:!0}),(f,s)=>{const v=n("a-radio-button"),L=n("a-radio-group"),U=n("a-input"),b=n("a-button"),W=n("upload-outlined"),P=n("a-upload");return d(),k("div",D,[t(j)()?y("",!0):(d(),k("div",G,[i(L,{value:t(a),"onUpdate:value":s[0]||(s[0]=m=>S(a)?a.value=m:null),"button-style":"solid"},{default:r(()=>[i(v,{value:"url"},{default:r(()=>[g("远程文件地址")]),_:1}),i(v,{value:"upload"},{default:r(()=>[g("上传本地文件")]),_:1})]),_:1},8,["value"]),t(a)==="url"?(d(),x(U,{key:0,value:t(o),"onUpdate:value":s[1]||(s[1]=m=>S(o)?o.value=m:null),placeholder:p.placeholder,style:{width:"600px","margin-left":"10px"}},null,8,["value","placeholder"])):y("",!0),t(a)==="url"?(d(),x(b,{key:1,type:"primary",style:{"margin-left":"10px"},onClick:s[2]||(s[2]=m=>{l.value=t(o),c.value=t(o).endsWith("xls")})},{default:r(()=>[g(" 预览 ")]),_:1})):y("",!0),t(a)!=="url"?(d(),x(P,{key:2,accept:p.accept,action:"",beforeUpload:t(_),"file-list":[]},{default:r(()=>[i(b,{style:{"margin-left":"10px"}},{default:r(()=>[i(W),g(" 选择文件 ")]),_:1})]),_:1},8,["accept","beforeUpload"])):y("",!0)])),V(f.$slots,"default",{src:t(l),xls:t(c)},void 0,!0),H])}}},M=I(J,[["__scopeId","data-v-0bd825a5"]]);export{M as P,F as u}; diff --git a/examples/dist/assets/docx-53fc2607.js b/examples/dist/assets/docx-53fc2607.js new file mode 100644 index 0000000..db8809e --- /dev/null +++ b/examples/dist/assets/docx-53fc2607.js @@ -0,0 +1,97 @@ +import{y as _e}from"./index-75869108.js";import{c as ke}from"./_commonjs-dynamic-modules-302442b1.js";var Se={},Be={get exports(){return Se},set exports(re){Se=re}},we={},Ne={get exports(){return we},set exports(re){we=re}};/*! + +JSZip v3.10.1 - A JavaScript class for generating and reading zip files + + +(c) 2009-2016 Stuart Knightley +Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/main/LICENSE.markdown. + +JSZip uses the library pako released under the MIT license : +https://github.com/nodeca/pako/blob/main/LICENSE +*/var Ce;function Oe(){return Ce||(Ce=1,function(re,ce){(function(T){re.exports=T()})(function(){return function T(L,B,S){function v(r,m){if(!B[r]){if(!L[r]){var f=typeof ke=="function"&&ke;if(!m&&f)return f(r,!0);if(e)return e(r,!0);var a=new Error("Cannot find module '"+r+"'");throw a.code="MODULE_NOT_FOUND",a}var i=B[r]={exports:{}};L[r][0].call(i.exports,function(y){var h=L[r][1][y];return v(h||y)},i,i.exports,T,L,B,S)}return B[r].exports}for(var e=typeof ke=="function"&&ke,u=0;u>2,i=(3&r)<<4|m>>4,y=1>6:64,h=2>4,m=(15&a)<<4|(i=e.indexOf(u.charAt(h++)))>>2,f=(3&i)<<6|(y=e.indexOf(u.charAt(h++))),g[d++]=r,i!==64&&(g[d++]=m),y!==64&&(g[d++]=f);return g}},{"./support":30,"./utils":32}],2:[function(T,L,B){var S=T("./external"),v=T("./stream/DataWorker"),e=T("./stream/Crc32Probe"),u=T("./stream/DataLengthProbe");function r(m,f,a,i,y){this.compressedSize=m,this.uncompressedSize=f,this.crc32=a,this.compression=i,this.compressedContent=y}r.prototype={getContentWorker:function(){var m=new v(S.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new u("data_length")),f=this;return m.on("end",function(){if(this.streamInfo.data_length!==f.uncompressedSize)throw new Error("Bug : uncompressed data size mismatch")}),m},getCompressedWorker:function(){return new v(S.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize",this.compressedSize).withStreamInfo("uncompressedSize",this.uncompressedSize).withStreamInfo("crc32",this.crc32).withStreamInfo("compression",this.compression)}},r.createWorkerFrom=function(m,f,a){return m.pipe(new e).pipe(new u("uncompressedSize")).pipe(f.compressWorker(a)).pipe(new u("compressedSize")).withStreamInfo("compression",f)},L.exports=r},{"./external":6,"./stream/Crc32Probe":25,"./stream/DataLengthProbe":26,"./stream/DataWorker":27}],3:[function(T,L,B){var S=T("./stream/GenericWorker");B.STORE={magic:"\0\0",compressWorker:function(){return new S("STORE compression")},uncompressWorker:function(){return new S("STORE decompression")}},B.DEFLATE=T("./flate")},{"./flate":7,"./stream/GenericWorker":28}],4:[function(T,L,B){var S=T("./utils"),v=function(){for(var e,u=[],r=0;r<256;r++){e=r;for(var m=0;m<8;m++)e=1&e?3988292384^e>>>1:e>>>1;u[r]=e}return u}();L.exports=function(e,u){return e!==void 0&&e.length?S.getTypeOf(e)!=="string"?function(r,m,f,a){var i=v,y=a+f;r^=-1;for(var h=a;h>>8^i[255&(r^m[h])];return-1^r}(0|u,e,e.length,0):function(r,m,f,a){var i=v,y=a+f;r^=-1;for(var h=a;h>>8^i[255&(r^m.charCodeAt(h))];return-1^r}(0|u,e,e.length,0):0}},{"./utils":32}],5:[function(T,L,B){B.base64=!1,B.binary=!1,B.dir=!1,B.createFolders=!0,B.date=null,B.compression=null,B.compressionOptions=null,B.comment=null,B.unixPermissions=null,B.dosPermissions=null},{}],6:[function(T,L,B){var S=null;S=typeof Promise<"u"?Promise:T("lie"),L.exports={Promise:S}},{lie:37}],7:[function(T,L,B){var S=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Uint32Array<"u",v=T("pako"),e=T("./utils"),u=T("./stream/GenericWorker"),r=S?"uint8array":"array";function m(f,a){u.call(this,"FlateWorker/"+f),this._pako=null,this._pakoAction=f,this._pakoOptions=a,this.meta={}}B.magic="\b\0",e.inherits(m,u),m.prototype.processChunk=function(f){this.meta=f.meta,this._pako===null&&this._createPako(),this._pako.push(e.transformTo(r,f.data),!1)},m.prototype.flush=function(){u.prototype.flush.call(this),this._pako===null&&this._createPako(),this._pako.push([],!0)},m.prototype.cleanUp=function(){u.prototype.cleanUp.call(this),this._pako=null},m.prototype._createPako=function(){this._pako=new v[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var f=this;this._pako.onData=function(a){f.push({data:a,meta:f.meta})}},B.compressWorker=function(f){return new m("Deflate",f)},B.uncompressWorker=function(){return new m("Inflate",{})}},{"./stream/GenericWorker":28,"./utils":32,pako:38}],8:[function(T,L,B){function S(i,y){var h,d="";for(h=0;h>>=8;return d}function v(i,y,h,d,p,g){var w,P,n=i.file,s=i.compression,t=g!==r.utf8encode,l=e.transformTo("string",g(n.name)),b=e.transformTo("string",r.utf8encode(n.name)),k=n.comment,E=e.transformTo("string",g(k)),_=e.transformTo("string",r.utf8encode(k)),C=b.length!==n.name.length,o=_.length!==k.length,R="",V="",F="",q=n.dir,W=n.date,Y={crc32:0,compressedSize:0,uncompressedSize:0};y&&!h||(Y.crc32=i.crc32,Y.compressedSize=i.compressedSize,Y.uncompressedSize=i.uncompressedSize);var z=0;y&&(z|=8),t||!C&&!o||(z|=2048);var O=0,J=0;q&&(O|=16),p==="UNIX"?(J=798,O|=function(Z,ae){var le=Z;return Z||(le=ae?16893:33204),(65535&le)<<16}(n.unixPermissions,q)):(J=20,O|=function(Z){return 63&(Z||0)}(n.dosPermissions)),w=W.getUTCHours(),w<<=6,w|=W.getUTCMinutes(),w<<=5,w|=W.getUTCSeconds()/2,P=W.getUTCFullYear()-1980,P<<=4,P|=W.getUTCMonth()+1,P<<=5,P|=W.getUTCDate(),C&&(V=S(1,1)+S(m(l),4)+b,R+="up"+S(V.length,2)+V),o&&(F=S(1,1)+S(m(E),4)+_,R+="uc"+S(F.length,2)+F);var X="";return X+=` +\0`,X+=S(z,2),X+=s.magic,X+=S(w,2),X+=S(P,2),X+=S(Y.crc32,4),X+=S(Y.compressedSize,4),X+=S(Y.uncompressedSize,4),X+=S(l.length,2),X+=S(R.length,2),{fileRecord:f.LOCAL_FILE_HEADER+X+l+R,dirRecord:f.CENTRAL_FILE_HEADER+S(J,2)+X+S(E.length,2)+"\0\0\0\0"+S(O,4)+S(d,4)+l+R+E}}var e=T("../utils"),u=T("../stream/GenericWorker"),r=T("../utf8"),m=T("../crc32"),f=T("../signature");function a(i,y,h,d){u.call(this,"ZipFileWorker"),this.bytesWritten=0,this.zipComment=y,this.zipPlatform=h,this.encodeFileName=d,this.streamFiles=i,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}e.inherits(a,u),a.prototype.push=function(i){var y=i.meta.percent||0,h=this.entriesCount,d=this._sources.length;this.accumulate?this.contentBuffer.push(i):(this.bytesWritten+=i.data.length,u.prototype.push.call(this,{data:i.data,meta:{currentFile:this.currentFile,percent:h?(y+100*(h-d-1))/h:100}}))},a.prototype.openedSource=function(i){this.currentSourceOffset=this.bytesWritten,this.currentFile=i.file.name;var y=this.streamFiles&&!i.file.dir;if(y){var h=v(i,y,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:h.fileRecord,meta:{percent:0}})}else this.accumulate=!0},a.prototype.closedSource=function(i){this.accumulate=!1;var y=this.streamFiles&&!i.file.dir,h=v(i,y,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(h.dirRecord),y)this.push({data:function(d){return f.DATA_DESCRIPTOR+S(d.crc32,4)+S(d.compressedSize,4)+S(d.uncompressedSize,4)}(i),meta:{percent:100}});else for(this.push({data:h.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},a.prototype.flush=function(){for(var i=this.bytesWritten,y=0;y=this.index;u--)r=(r<<8)+this.byteAt(u);return this.index+=e,r},readString:function(e){return S.transformTo("string",this.readData(e))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var e=this.readInt(4);return new Date(Date.UTC(1980+(e>>25&127),(e>>21&15)-1,e>>16&31,e>>11&31,e>>5&63,(31&e)<<1))}},L.exports=v},{"../utils":32}],19:[function(T,L,B){var S=T("./Uint8ArrayReader");function v(e){S.call(this,e)}T("../utils").inherits(v,S),v.prototype.readData=function(e){this.checkOffset(e);var u=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,u},L.exports=v},{"../utils":32,"./Uint8ArrayReader":21}],20:[function(T,L,B){var S=T("./DataReader");function v(e){S.call(this,e)}T("../utils").inherits(v,S),v.prototype.byteAt=function(e){return this.data.charCodeAt(this.zero+e)},v.prototype.lastIndexOfSignature=function(e){return this.data.lastIndexOf(e)-this.zero},v.prototype.readAndCheckSignature=function(e){return e===this.readData(4)},v.prototype.readData=function(e){this.checkOffset(e);var u=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,u},L.exports=v},{"../utils":32,"./DataReader":18}],21:[function(T,L,B){var S=T("./ArrayReader");function v(e){S.call(this,e)}T("../utils").inherits(v,S),v.prototype.readData=function(e){if(this.checkOffset(e),e===0)return new Uint8Array(0);var u=this.data.subarray(this.zero+this.index,this.zero+this.index+e);return this.index+=e,u},L.exports=v},{"../utils":32,"./ArrayReader":17}],22:[function(T,L,B){var S=T("../utils"),v=T("../support"),e=T("./ArrayReader"),u=T("./StringReader"),r=T("./NodeBufferReader"),m=T("./Uint8ArrayReader");L.exports=function(f){var a=S.getTypeOf(f);return S.checkSupport(a),a!=="string"||v.uint8array?a==="nodebuffer"?new r(f):v.uint8array?new m(S.transformTo("uint8array",f)):new e(S.transformTo("array",f)):new u(f)}},{"../support":30,"../utils":32,"./ArrayReader":17,"./NodeBufferReader":19,"./StringReader":20,"./Uint8ArrayReader":21}],23:[function(T,L,B){B.LOCAL_FILE_HEADER="PK",B.CENTRAL_FILE_HEADER="PK",B.CENTRAL_DIRECTORY_END="PK",B.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK\x07",B.ZIP64_CENTRAL_DIRECTORY_END="PK",B.DATA_DESCRIPTOR="PK\x07\b"},{}],24:[function(T,L,B){var S=T("./GenericWorker"),v=T("../utils");function e(u){S.call(this,"ConvertWorker to "+u),this.destType=u}v.inherits(e,S),e.prototype.processChunk=function(u){this.push({data:v.transformTo(this.destType,u.data),meta:u.meta})},L.exports=e},{"../utils":32,"./GenericWorker":28}],25:[function(T,L,B){var S=T("./GenericWorker"),v=T("../crc32");function e(){S.call(this,"Crc32Probe"),this.withStreamInfo("crc32",0)}T("../utils").inherits(e,S),e.prototype.processChunk=function(u){this.streamInfo.crc32=v(u.data,this.streamInfo.crc32||0),this.push(u)},L.exports=e},{"../crc32":4,"../utils":32,"./GenericWorker":28}],26:[function(T,L,B){var S=T("../utils"),v=T("./GenericWorker");function e(u){v.call(this,"DataLengthProbe for "+u),this.propName=u,this.withStreamInfo(u,0)}S.inherits(e,v),e.prototype.processChunk=function(u){if(u){var r=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=r+u.data.length}v.prototype.processChunk.call(this,u)},L.exports=e},{"../utils":32,"./GenericWorker":28}],27:[function(T,L,B){var S=T("../utils"),v=T("./GenericWorker");function e(u){v.call(this,"DataWorker");var r=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type="",this._tickScheduled=!1,u.then(function(m){r.dataIsReady=!0,r.data=m,r.max=m&&m.length||0,r.type=S.getTypeOf(m),r.isPaused||r._tickAndRepeat()},function(m){r.error(m)})}S.inherits(e,v),e.prototype.cleanUp=function(){v.prototype.cleanUp.call(this),this.data=null},e.prototype.resume=function(){return!!v.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,S.delay(this._tickAndRepeat,[],this)),!0)},e.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(S.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},e.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var u=null,r=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case"string":u=this.data.substring(this.index,r);break;case"uint8array":u=this.data.subarray(this.index,r);break;case"array":case"nodebuffer":u=this.data.slice(this.index,r)}return this.index=r,this.push({data:u,meta:{percent:this.max?this.index/this.max*100:0}})},L.exports=e},{"../utils":32,"./GenericWorker":28}],28:[function(T,L,B){function S(v){this.name=v||"default",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}S.prototype={push:function(v){this.emit("data",v)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit("end"),this.cleanUp(),this.isFinished=!0}catch(v){this.emit("error",v)}return!0},error:function(v){return!this.isFinished&&(this.isPaused?this.generatedError=v:(this.isFinished=!0,this.emit("error",v),this.previous&&this.previous.error(v),this.cleanUp()),!0)},on:function(v,e){return this._listeners[v].push(e),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(v,e){if(this._listeners[v])for(var u=0;u "+v:v}},L.exports=S},{}],29:[function(T,L,B){var S=T("../utils"),v=T("./ConvertWorker"),e=T("./GenericWorker"),u=T("../base64"),r=T("../support"),m=T("../external"),f=null;if(r.nodestream)try{f=T("../nodejs/NodejsStreamOutputAdapter")}catch{}function a(y,h){return new m.Promise(function(d,p){var g=[],w=y._internalType,P=y._outputType,n=y._mimeType;y.on("data",function(s,t){g.push(s),h&&h(t)}).on("error",function(s){g=[],p(s)}).on("end",function(){try{var s=function(t,l,b){switch(t){case"blob":return S.newBlob(S.transformTo("arraybuffer",l),b);case"base64":return u.encode(l);default:return S.transformTo(t,l)}}(P,function(t,l){var b,k=0,E=null,_=0;for(b=0;b"u")B.blob=!1;else{var S=new ArrayBuffer(0);try{B.blob=new Blob([S],{type:"application/zip"}).size===0}catch{try{var v=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);v.append(S),B.blob=v.getBlob("application/zip").size===0}catch{B.blob=!1}}}try{B.nodestream=!!T("readable-stream").Readable}catch{B.nodestream=!1}},{"readable-stream":16}],31:[function(T,L,B){for(var S=T("./utils"),v=T("./support"),e=T("./nodejsUtils"),u=T("./stream/GenericWorker"),r=new Array(256),m=0;m<256;m++)r[m]=252<=m?6:248<=m?5:240<=m?4:224<=m?3:192<=m?2:1;r[254]=r[254]=1;function f(){u.call(this,"utf-8 decode"),this.leftOver=null}function a(){u.call(this,"utf-8 encode")}B.utf8encode=function(i){return v.nodebuffer?e.newBufferFrom(i,"utf-8"):function(y){var h,d,p,g,w,P=y.length,n=0;for(g=0;g>>6:(d<65536?h[w++]=224|d>>>12:(h[w++]=240|d>>>18,h[w++]=128|d>>>12&63),h[w++]=128|d>>>6&63),h[w++]=128|63&d);return h}(i)},B.utf8decode=function(i){return v.nodebuffer?S.transformTo("nodebuffer",i).toString("utf-8"):function(y){var h,d,p,g,w=y.length,P=new Array(2*w);for(h=d=0;h>10&1023,P[d++]=56320|1023&p)}return P.length!==d&&(P.subarray?P=P.subarray(0,d):P.length=d),S.applyFromCharCode(P)}(i=S.transformTo(v.uint8array?"uint8array":"array",i))},S.inherits(f,u),f.prototype.processChunk=function(i){var y=S.transformTo(v.uint8array?"uint8array":"array",i.data);if(this.leftOver&&this.leftOver.length){if(v.uint8array){var h=y;(y=new Uint8Array(h.length+this.leftOver.length)).set(this.leftOver,0),y.set(h,this.leftOver.length)}else y=this.leftOver.concat(y);this.leftOver=null}var d=function(g,w){var P;for((w=w||g.length)>g.length&&(w=g.length),P=w-1;0<=P&&(192&g[P])==128;)P--;return P<0||P===0?w:P+r[g[P]]>w?P:w}(y),p=y;d!==y.length&&(v.uint8array?(p=y.subarray(0,d),this.leftOver=y.subarray(d,y.length)):(p=y.slice(0,d),this.leftOver=y.slice(d,y.length))),this.push({data:B.utf8decode(p),meta:i.meta})},f.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:B.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},B.Utf8DecodeWorker=f,S.inherits(a,u),a.prototype.processChunk=function(i){this.push({data:B.utf8encode(i.data),meta:i.meta})},B.Utf8EncodeWorker=a},{"./nodejsUtils":14,"./stream/GenericWorker":28,"./support":30,"./utils":32}],32:[function(T,L,B){var S=T("./support"),v=T("./base64"),e=T("./nodejsUtils"),u=T("./external");function r(h){return h}function m(h,d){for(var p=0;p>8;this.dir=!!(16&this.externalFileAttributes),i==0&&(this.dosPermissions=63&this.externalFileAttributes),i==3&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||this.fileNameStr.slice(-1)!=="/"||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var i=S(this.extraFields[1].value);this.uncompressedSize===v.MAX_VALUE_32BITS&&(this.uncompressedSize=i.readInt(8)),this.compressedSize===v.MAX_VALUE_32BITS&&(this.compressedSize=i.readInt(8)),this.localHeaderOffset===v.MAX_VALUE_32BITS&&(this.localHeaderOffset=i.readInt(8)),this.diskNumberStart===v.MAX_VALUE_32BITS&&(this.diskNumberStart=i.readInt(4))}},readExtraFields:function(i){var y,h,d,p=i.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});i.index+4>>6:(i<65536?a[d++]=224|i>>>12:(a[d++]=240|i>>>18,a[d++]=128|i>>>12&63),a[d++]=128|i>>>6&63),a[d++]=128|63&i);return a},B.buf2binstring=function(f){return m(f,f.length)},B.binstring2buf=function(f){for(var a=new S.Buf8(f.length),i=0,y=a.length;i>10&1023,g[y++]=56320|1023&h)}return m(g,y)},B.utf8border=function(f,a){var i;for((a=a||f.length)>f.length&&(a=f.length),i=a-1;0<=i&&(192&f[i])==128;)i--;return i<0||i===0?a:i+u[f[i]]>a?i:a}},{"./common":41}],43:[function(T,L,B){L.exports=function(S,v,e,u){for(var r=65535&S|0,m=S>>>16&65535|0,f=0;e!==0;){for(e-=f=2e3>>1:v>>>1;e[u]=v}return e}();L.exports=function(v,e,u,r){var m=S,f=r+u;v^=-1;for(var a=r;a>>8^m[255&(v^e[a])];return-1^v}},{}],46:[function(T,L,B){var S,v=T("../utils/common"),e=T("./trees"),u=T("./adler32"),r=T("./crc32"),m=T("./messages"),f=0,a=4,i=0,y=-2,h=-1,d=4,p=2,g=8,w=9,P=286,n=30,s=19,t=2*P+1,l=15,b=3,k=258,E=k+b+1,_=42,C=113,o=1,R=2,V=3,F=4;function q(c,I){return c.msg=m[I],I}function W(c){return(c<<1)-(4c.avail_out&&(M=c.avail_out),M!==0&&(v.arraySet(c.output,I.pending_buf,I.pending_out,M,c.next_out),c.next_out+=M,I.pending_out+=M,c.total_out+=M,c.avail_out-=M,I.pending-=M,I.pending===0&&(I.pending_out=0))}function O(c,I){e._tr_flush_block(c,0<=c.block_start?c.block_start:-1,c.strstart-c.block_start,I),c.block_start=c.strstart,z(c.strm)}function J(c,I){c.pending_buf[c.pending++]=I}function X(c,I){c.pending_buf[c.pending++]=I>>>8&255,c.pending_buf[c.pending++]=255&I}function Z(c,I){var M,A,x=c.max_chain_length,D=c.strstart,j=c.prev_length,U=c.nice_match,N=c.strstart>c.w_size-E?c.strstart-(c.w_size-E):0,H=c.window,G=c.w_mask,$=c.prev,K=c.strstart+k,ne=H[D+j-1],ee=H[D+j];c.prev_length>=c.good_match&&(x>>=2),U>c.lookahead&&(U=c.lookahead);do if(H[(M=I)+j]===ee&&H[M+j-1]===ne&&H[M]===H[D]&&H[++M]===H[D+1]){D+=2,M++;do;while(H[++D]===H[++M]&&H[++D]===H[++M]&&H[++D]===H[++M]&&H[++D]===H[++M]&&H[++D]===H[++M]&&H[++D]===H[++M]&&H[++D]===H[++M]&&H[++D]===H[++M]&&DN&&--x!=0);return j<=c.lookahead?j:c.lookahead}function ae(c){var I,M,A,x,D,j,U,N,H,G,$=c.w_size;do{if(x=c.window_size-c.lookahead-c.strstart,c.strstart>=$+($-E)){for(v.arraySet(c.window,c.window,$,$,0),c.match_start-=$,c.strstart-=$,c.block_start-=$,I=M=c.hash_size;A=c.head[--I],c.head[I]=$<=A?A-$:0,--M;);for(I=M=$;A=c.prev[--I],c.prev[I]=$<=A?A-$:0,--M;);x+=$}if(c.strm.avail_in===0)break;if(j=c.strm,U=c.window,N=c.strstart+c.lookahead,H=x,G=void 0,G=j.avail_in,H=b)for(D=c.strstart-c.insert,c.ins_h=c.window[D],c.ins_h=(c.ins_h<=b&&(c.ins_h=(c.ins_h<=b)if(A=e._tr_tally(c,c.strstart-c.match_start,c.match_length-b),c.lookahead-=c.match_length,c.match_length<=c.max_lazy_match&&c.lookahead>=b){for(c.match_length--;c.strstart++,c.ins_h=(c.ins_h<=b&&(c.ins_h=(c.ins_h<=b&&c.match_length<=c.prev_length){for(x=c.strstart+c.lookahead-b,A=e._tr_tally(c,c.strstart-1-c.prev_match,c.prev_length-b),c.lookahead-=c.prev_length-1,c.prev_length-=2;++c.strstart<=x&&(c.ins_h=(c.ins_h<c.pending_buf_size-5&&(M=c.pending_buf_size-5);;){if(c.lookahead<=1){if(ae(c),c.lookahead===0&&I===f)return o;if(c.lookahead===0)break}c.strstart+=c.lookahead,c.lookahead=0;var A=c.block_start+M;if((c.strstart===0||c.strstart>=A)&&(c.lookahead=c.strstart-A,c.strstart=A,O(c,!1),c.strm.avail_out===0)||c.strstart-c.block_start>=c.w_size-E&&(O(c,!1),c.strm.avail_out===0))return o}return c.insert=0,I===a?(O(c,!0),c.strm.avail_out===0?V:F):(c.strstart>c.block_start&&(O(c,!1),c.strm.avail_out),o)}),new te(4,4,8,4,le),new te(4,5,16,8,le),new te(4,6,32,32,le),new te(4,4,16,16,Q),new te(8,16,32,32,Q),new te(8,16,128,128,Q),new te(8,32,128,256,Q),new te(32,128,258,1024,Q),new te(32,258,258,4096,Q)],B.deflateInit=function(c,I){return he(c,I,g,15,8,0)},B.deflateInit2=he,B.deflateReset=de,B.deflateResetKeep=se,B.deflateSetHeader=function(c,I){return c&&c.state?c.state.wrap!==2?y:(c.state.gzhead=I,i):y},B.deflate=function(c,I){var M,A,x,D;if(!c||!c.state||5>8&255),J(A,A.gzhead.time>>16&255),J(A,A.gzhead.time>>24&255),J(A,A.level===9?2:2<=A.strategy||A.level<2?4:0),J(A,255&A.gzhead.os),A.gzhead.extra&&A.gzhead.extra.length&&(J(A,255&A.gzhead.extra.length),J(A,A.gzhead.extra.length>>8&255)),A.gzhead.hcrc&&(c.adler=r(c.adler,A.pending_buf,A.pending,0)),A.gzindex=0,A.status=69):(J(A,0),J(A,0),J(A,0),J(A,0),J(A,0),J(A,A.level===9?2:2<=A.strategy||A.level<2?4:0),J(A,3),A.status=C);else{var j=g+(A.w_bits-8<<4)<<8;j|=(2<=A.strategy||A.level<2?0:A.level<6?1:A.level===6?2:3)<<6,A.strstart!==0&&(j|=32),j+=31-j%31,A.status=C,X(A,j),A.strstart!==0&&(X(A,c.adler>>>16),X(A,65535&c.adler)),c.adler=1}if(A.status===69)if(A.gzhead.extra){for(x=A.pending;A.gzindex<(65535&A.gzhead.extra.length)&&(A.pending!==A.pending_buf_size||(A.gzhead.hcrc&&A.pending>x&&(c.adler=r(c.adler,A.pending_buf,A.pending-x,x)),z(c),x=A.pending,A.pending!==A.pending_buf_size));)J(A,255&A.gzhead.extra[A.gzindex]),A.gzindex++;A.gzhead.hcrc&&A.pending>x&&(c.adler=r(c.adler,A.pending_buf,A.pending-x,x)),A.gzindex===A.gzhead.extra.length&&(A.gzindex=0,A.status=73)}else A.status=73;if(A.status===73)if(A.gzhead.name){x=A.pending;do{if(A.pending===A.pending_buf_size&&(A.gzhead.hcrc&&A.pending>x&&(c.adler=r(c.adler,A.pending_buf,A.pending-x,x)),z(c),x=A.pending,A.pending===A.pending_buf_size)){D=1;break}D=A.gzindexx&&(c.adler=r(c.adler,A.pending_buf,A.pending-x,x)),D===0&&(A.gzindex=0,A.status=91)}else A.status=91;if(A.status===91)if(A.gzhead.comment){x=A.pending;do{if(A.pending===A.pending_buf_size&&(A.gzhead.hcrc&&A.pending>x&&(c.adler=r(c.adler,A.pending_buf,A.pending-x,x)),z(c),x=A.pending,A.pending===A.pending_buf_size)){D=1;break}D=A.gzindexx&&(c.adler=r(c.adler,A.pending_buf,A.pending-x,x)),D===0&&(A.status=103)}else A.status=103;if(A.status===103&&(A.gzhead.hcrc?(A.pending+2>A.pending_buf_size&&z(c),A.pending+2<=A.pending_buf_size&&(J(A,255&c.adler),J(A,c.adler>>8&255),c.adler=0,A.status=C)):A.status=C),A.pending!==0){if(z(c),c.avail_out===0)return A.last_flush=-1,i}else if(c.avail_in===0&&W(I)<=W(M)&&I!==a)return q(c,-5);if(A.status===666&&c.avail_in!==0)return q(c,-5);if(c.avail_in!==0||A.lookahead!==0||I!==f&&A.status!==666){var U=A.strategy===2?function(N,H){for(var G;;){if(N.lookahead===0&&(ae(N),N.lookahead===0)){if(H===f)return o;break}if(N.match_length=0,G=e._tr_tally(N,0,N.window[N.strstart]),N.lookahead--,N.strstart++,G&&(O(N,!1),N.strm.avail_out===0))return o}return N.insert=0,H===a?(O(N,!0),N.strm.avail_out===0?V:F):N.last_lit&&(O(N,!1),N.strm.avail_out===0)?o:R}(A,I):A.strategy===3?function(N,H){for(var G,$,K,ne,ee=N.window;;){if(N.lookahead<=k){if(ae(N),N.lookahead<=k&&H===f)return o;if(N.lookahead===0)break}if(N.match_length=0,N.lookahead>=b&&0N.lookahead&&(N.match_length=N.lookahead)}if(N.match_length>=b?(G=e._tr_tally(N,1,N.match_length-b),N.lookahead-=N.match_length,N.strstart+=N.match_length,N.match_length=0):(G=e._tr_tally(N,0,N.window[N.strstart]),N.lookahead--,N.strstart++),G&&(O(N,!1),N.strm.avail_out===0))return o}return N.insert=0,H===a?(O(N,!0),N.strm.avail_out===0?V:F):N.last_lit&&(O(N,!1),N.strm.avail_out===0)?o:R}(A,I):S[A.level].func(A,I);if(U!==V&&U!==F||(A.status=666),U===o||U===V)return c.avail_out===0&&(A.last_flush=-1),i;if(U===R&&(I===1?e._tr_align(A):I!==5&&(e._tr_stored_block(A,0,0,!1),I===3&&(Y(A.head),A.lookahead===0&&(A.strstart=0,A.block_start=0,A.insert=0))),z(c),c.avail_out===0))return A.last_flush=-1,i}return I!==a?i:A.wrap<=0?1:(A.wrap===2?(J(A,255&c.adler),J(A,c.adler>>8&255),J(A,c.adler>>16&255),J(A,c.adler>>24&255),J(A,255&c.total_in),J(A,c.total_in>>8&255),J(A,c.total_in>>16&255),J(A,c.total_in>>24&255)):(X(A,c.adler>>>16),X(A,65535&c.adler)),z(c),0=M.w_size&&(D===0&&(Y(M.head),M.strstart=0,M.block_start=0,M.insert=0),H=new v.Buf8(M.w_size),v.arraySet(H,I,G-M.w_size,M.w_size,0),I=H,G=M.w_size),j=c.avail_in,U=c.next_in,N=c.input,c.avail_in=G,c.next_in=0,c.input=I,ae(M);M.lookahead>=b;){for(A=M.strstart,x=M.lookahead-(b-1);M.ins_h=(M.ins_h<>>=b=l>>>24,w-=b,(b=l>>>16&255)===0)R[m++]=65535&l;else{if(!(16&b)){if(!(64&b)){l=P[(65535&l)+(g&(1<>>=b,w-=b),w<15&&(g+=o[u++]<>>=b=l>>>24,w-=b,!(16&(b=l>>>16&255))){if(!(64&b)){l=n[(65535&l)+(g&(1<>>=b,w-=b,(b=m-f)>3,g&=(1<<(w-=k<<3))-1,S.next_in=u,S.next_out=m,S.avail_in=u>>24&255)+(_>>>8&65280)+((65280&_)<<8)+((255&_)<<24)}function g(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new S.Buf16(320),this.work=new S.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function w(_){var C;return _&&_.state?(C=_.state,_.total_in=_.total_out=C.total=0,_.msg="",C.wrap&&(_.adler=1&C.wrap),C.mode=y,C.last=0,C.havedict=0,C.dmax=32768,C.head=null,C.hold=0,C.bits=0,C.lencode=C.lendyn=new S.Buf32(h),C.distcode=C.distdyn=new S.Buf32(d),C.sane=1,C.back=-1,a):i}function P(_){var C;return _&&_.state?((C=_.state).wsize=0,C.whave=0,C.wnext=0,w(_)):i}function n(_,C){var o,R;return _&&_.state?(R=_.state,C<0?(o=0,C=-C):(o=1+(C>>4),C<48&&(C&=15)),C&&(C<8||15=F.wsize?(S.arraySet(F.window,C,o-F.wsize,F.wsize,0),F.wnext=0,F.whave=F.wsize):(R<(V=F.wsize-F.wnext)&&(V=R),S.arraySet(F.window,C,o-R,V,F.wnext),(R-=V)?(S.arraySet(F.window,C,o-R,R,0),F.wnext=R,F.whave=F.wsize):(F.wnext+=V,F.wnext===F.wsize&&(F.wnext=0),F.whave>>8&255,o.check=e(o.check,D,2,0),O=z=0,o.mode=2;break}if(o.flags=0,o.head&&(o.head.done=!1),!(1&o.wrap)||(((255&z)<<8)+(z>>8))%31){_.msg="incorrect header check",o.mode=30;break}if((15&z)!=8){_.msg="unknown compression method",o.mode=30;break}if(O-=4,c=8+(15&(z>>>=4)),o.wbits===0)o.wbits=c;else if(c>o.wbits){_.msg="invalid window size",o.mode=30;break}o.dmax=1<>8&1),512&o.flags&&(D[0]=255&z,D[1]=z>>>8&255,o.check=e(o.check,D,2,0)),O=z=0,o.mode=3;case 3:for(;O<32;){if(W===0)break e;W--,z+=R[F++]<>>8&255,D[2]=z>>>16&255,D[3]=z>>>24&255,o.check=e(o.check,D,4,0)),O=z=0,o.mode=4;case 4:for(;O<16;){if(W===0)break e;W--,z+=R[F++]<>8),512&o.flags&&(D[0]=255&z,D[1]=z>>>8&255,o.check=e(o.check,D,2,0)),O=z=0,o.mode=5;case 5:if(1024&o.flags){for(;O<16;){if(W===0)break e;W--,z+=R[F++]<>>8&255,o.check=e(o.check,D,2,0)),O=z=0}else o.head&&(o.head.extra=null);o.mode=6;case 6:if(1024&o.flags&&(W<(Z=o.length)&&(Z=W),Z&&(o.head&&(c=o.head.extra_len-o.length,o.head.extra||(o.head.extra=new Array(o.head.extra_len)),S.arraySet(o.head.extra,R,F,Z,c)),512&o.flags&&(o.check=e(o.check,R,Z,F)),W-=Z,F+=Z,o.length-=Z),o.length))break e;o.length=0,o.mode=7;case 7:if(2048&o.flags){if(W===0)break e;for(Z=0;c=R[F+Z++],o.head&&c&&o.length<65536&&(o.head.name+=String.fromCharCode(c)),c&&Z>9&1,o.head.done=!0),_.adler=o.check=0,o.mode=12;break;case 10:for(;O<32;){if(W===0)break e;W--,z+=R[F++]<>>=7&O,O-=7&O,o.mode=27;break}for(;O<3;){if(W===0)break e;W--,z+=R[F++]<>>=1)){case 0:o.mode=14;break;case 1:if(k(o),o.mode=20,C!==6)break;z>>>=2,O-=2;break e;case 2:o.mode=17;break;case 3:_.msg="invalid block type",o.mode=30}z>>>=2,O-=2;break;case 14:for(z>>>=7&O,O-=7&O;O<32;){if(W===0)break e;W--,z+=R[F++]<>>16^65535)){_.msg="invalid stored block lengths",o.mode=30;break}if(o.length=65535&z,O=z=0,o.mode=15,C===6)break e;case 15:o.mode=16;case 16:if(Z=o.length){if(W>>=5,O-=5,o.ndist=1+(31&z),z>>>=5,O-=5,o.ncode=4+(15&z),z>>>=4,O-=4,286>>=3,O-=3}for(;o.have<19;)o.lens[j[o.have++]]=0;if(o.lencode=o.lendyn,o.lenbits=7,M={bits:o.lenbits},I=r(0,o.lens,0,19,o.lencode,0,o.work,M),o.lenbits=M.bits,I){_.msg="invalid code lengths set",o.mode=30;break}o.have=0,o.mode=19;case 19:for(;o.have>>16&255,oe=65535&x,!((Q=x>>>24)<=O);){if(W===0)break e;W--,z+=R[F++]<>>=Q,O-=Q,o.lens[o.have++]=oe;else{if(oe===16){for(A=Q+2;O>>=Q,O-=Q,o.have===0){_.msg="invalid bit length repeat",o.mode=30;break}c=o.lens[o.have-1],Z=3+(3&z),z>>>=2,O-=2}else if(oe===17){for(A=Q+3;O>>=Q)),z>>>=3,O-=3}else{for(A=Q+7;O>>=Q)),z>>>=7,O-=7}if(o.have+Z>o.nlen+o.ndist){_.msg="invalid bit length repeat",o.mode=30;break}for(;Z--;)o.lens[o.have++]=c}}if(o.mode===30)break;if(o.lens[256]===0){_.msg="invalid code -- missing end-of-block",o.mode=30;break}if(o.lenbits=9,M={bits:o.lenbits},I=r(m,o.lens,0,o.nlen,o.lencode,0,o.work,M),o.lenbits=M.bits,I){_.msg="invalid literal/lengths set",o.mode=30;break}if(o.distbits=6,o.distcode=o.distdyn,M={bits:o.distbits},I=r(f,o.lens,o.nlen,o.ndist,o.distcode,0,o.work,M),o.distbits=M.bits,I){_.msg="invalid distances set",o.mode=30;break}if(o.mode=20,C===6)break e;case 20:o.mode=21;case 21:if(6<=W&&258<=Y){_.next_out=q,_.avail_out=Y,_.next_in=F,_.avail_in=W,o.hold=z,o.bits=O,u(_,X),q=_.next_out,V=_.output,Y=_.avail_out,F=_.next_in,R=_.input,W=_.avail_in,z=o.hold,O=o.bits,o.mode===12&&(o.back=-1);break}for(o.back=0;te=(x=o.lencode[z&(1<>>16&255,oe=65535&x,!((Q=x>>>24)<=O);){if(W===0)break e;W--,z+=R[F++]<>se)])>>>16&255,oe=65535&x,!(se+(Q=x>>>24)<=O);){if(W===0)break e;W--,z+=R[F++]<>>=se,O-=se,o.back+=se}if(z>>>=Q,O-=Q,o.back+=Q,o.length=oe,te===0){o.mode=26;break}if(32&te){o.back=-1,o.mode=12;break}if(64&te){_.msg="invalid literal/length code",o.mode=30;break}o.extra=15&te,o.mode=22;case 22:if(o.extra){for(A=o.extra;O>>=o.extra,O-=o.extra,o.back+=o.extra}o.was=o.length,o.mode=23;case 23:for(;te=(x=o.distcode[z&(1<>>16&255,oe=65535&x,!((Q=x>>>24)<=O);){if(W===0)break e;W--,z+=R[F++]<>se)])>>>16&255,oe=65535&x,!(se+(Q=x>>>24)<=O);){if(W===0)break e;W--,z+=R[F++]<>>=se,O-=se,o.back+=se}if(z>>>=Q,O-=Q,o.back+=Q,64&te){_.msg="invalid distance code",o.mode=30;break}o.offset=oe,o.extra=15&te,o.mode=24;case 24:if(o.extra){for(A=o.extra;O>>=o.extra,O-=o.extra,o.back+=o.extra}if(o.offset>o.dmax){_.msg="invalid distance too far back",o.mode=30;break}o.mode=25;case 25:if(Y===0)break e;if(Z=X-Y,o.offset>Z){if((Z=o.offset-Z)>o.whave&&o.sane){_.msg="invalid distance too far back",o.mode=30;break}ae=Z>o.wnext?(Z-=o.wnext,o.wsize-Z):o.wnext-Z,Z>o.length&&(Z=o.length),le=o.window}else le=V,ae=q-o.offset,Z=o.length;for(Yt?(b=ae[le+d[C]],O[J+d[C]]):(b=96,0),g=1<<_-q,o=w=1<>q)+(w-=g)]=l<<24|b<<16|k|0,w!==0;);for(g=1<<_-1;z&g;)g>>=1;if(g!==0?(z&=g-1,z+=g):z=0,C++,--X[_]==0){if(_===R)break;_=f[a+d[C]]}if(V<_&&(z&n)!==P){for(q===0&&(q=V),s+=o,W=1<<(F=_-q);F+q>>7)]}function J(x,D){x.pending_buf[x.pending++]=255&D,x.pending_buf[x.pending++]=D>>>8&255}function X(x,D,j){x.bi_valid>p-j?(x.bi_buf|=D<>p-x.bi_valid,x.bi_valid+=j-p):(x.bi_buf|=D<>>=1,j<<=1,0<--D;);return j>>>1}function le(x,D,j){var U,N,H=new Array(d+1),G=0;for(U=1;U<=d;U++)H[U]=G=G+j[U-1]<<1;for(N=0;N<=D;N++){var $=x[2*N+1];$!==0&&(x[2*N]=ae(H[$]++,$))}}function Q(x){var D;for(D=0;D>1;1<=j;j--)se(x,H,j);for(N=K;j=x.heap[1],x.heap[1]=x.heap[x.heap_len--],se(x,H,1),U=x.heap[1],x.heap[--x.heap_max]=j,x.heap[--x.heap_max]=U,H[2*N]=H[2*j]+H[2*U],x.depth[N]=(x.depth[j]>=x.depth[U]?x.depth[j]:x.depth[U])+1,H[2*j+1]=H[2*U+1]=N,x.heap[1]=N++,se(x,H,1),2<=x.heap_len;);x.heap[--x.heap_max]=x.heap[1],function(ee,ue){var me,pe,ge,ie,ye,xe,fe=ue.dyn_tree,Ae=ue.max_code,Te=ue.stat_desc.static_tree,Ee=ue.stat_desc.has_stree,De=ue.stat_desc.extra_bits,Pe=ue.stat_desc.extra_base,be=ue.stat_desc.max_length,ve=0;for(ie=0;ie<=d;ie++)ee.bl_count[ie]=0;for(fe[2*ee.heap[ee.heap_max]+1]=0,me=ee.heap_max+1;me>=7;N>>=1)if(1&ne&&$.dyn_ltree[2*K]!==0)return v;if($.dyn_ltree[18]!==0||$.dyn_ltree[20]!==0||$.dyn_ltree[26]!==0)return e;for(K=32;K>>3,(H=x.static_len+3+7>>>3)<=N&&(N=H)):N=H=j+5,j+4<=N&&D!==-1?A(x,D,j,U):x.strategy===4||H===N?(X(x,2+(U?1:0),3),de(x,E,_)):(X(x,4+(U?1:0),3),function($,K,ne,ee){var ue;for(X($,K-257,5),X($,ne-1,5),X($,ee-4,4),ue=0;ue>>8&255,x.pending_buf[x.d_buf+2*x.last_lit+1]=255&D,x.pending_buf[x.l_buf+x.last_lit]=255&j,x.last_lit++,D===0?x.dyn_ltree[2*j]++:(x.matches++,D--,x.dyn_ltree[2*(o[j]+f+1)]++,x.dyn_dtree[2*O(D)]++),x.last_lit===x.lit_bufsize-1},B._tr_align=function(x){X(x,2,3),Z(x,w,E),function(D){D.bi_valid===16?(J(D,D.bi_buf),D.bi_buf=0,D.bi_valid=0):8<=D.bi_valid&&(D.pending_buf[D.pending++]=255&D.bi_buf,D.bi_buf>>=8,D.bi_valid-=8)}(x)}},{"../utils/common":41}],53:[function(T,L,B){L.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(T,L,B){(function(S){(function(v,e){if(!v.setImmediate){var u,r,m,f,a=1,i={},y=!1,h=v.document,d=Object.getPrototypeOf&&Object.getPrototypeOf(v);d=d&&d.setTimeout?d:v,u={}.toString.call(v.process)==="[object process]"?function(P){process.nextTick(function(){g(P)})}:function(){if(v.postMessage&&!v.importScripts){var P=!0,n=v.onmessage;return v.onmessage=function(){P=!1},v.postMessage("","*"),v.onmessage=n,P}}()?(f="setImmediate$"+Math.random()+"$",v.addEventListener?v.addEventListener("message",w,!1):v.attachEvent("onmessage",w),function(P){v.postMessage(f+P,"*")}):v.MessageChannel?((m=new MessageChannel).port1.onmessage=function(P){g(P.data)},function(P){m.port2.postMessage(P)}):h&&"onreadystatechange"in h.createElement("script")?(r=h.documentElement,function(P){var n=h.createElement("script");n.onreadystatechange=function(){g(P),n.onreadystatechange=null,r.removeChild(n),n=null},r.appendChild(n)}):function(P){setTimeout(g,0,P)},d.setImmediate=function(P){typeof P!="function"&&(P=new Function(""+P));for(var n=new Array(arguments.length-1),s=0;s"u"?S===void 0?this:S:self)}).call(this,typeof _e<"u"?_e:typeof self<"u"?self:typeof window<"u"?window:{})},{}]},{},[10])(10)})}(Ne)),we}(function(re,ce){(function(T,L){re.exports=L(Oe())})(globalThis,T=>(()=>{var L={438:(v,e,u)=>{u.r(e),u.d(e,{default:()=>g});var r=u(537),m=u.n(r),f=u(645),a=u.n(f),i=u(806),y=u.n(i),h=new URL(u(583),u.b),d=a()(m()),p=y()(h);d.push([v.id,`@namespace "http://www.w3.org/1998/Math/MathML";math{display:inline-block;line-height:initial}mfrac{display:inline-block;vertical-align:-50%;text-align:center}mfrac>:first-child{border-bottom:solid thin currentColor}mfrac>*{display:block}msub>:nth-child(2){font-size:smaller;vertical-align:sub}msup>:nth-child(2){font-size:smaller;vertical-align:super}munder,mover,munderover{display:inline-flex;flex-flow:column nowrap;vertical-align:middle;text-align:center}munder>:not(:first-child),mover>:not(:first-child),munderover>:not(:first-child){font-size:smaller}munderover>:last-child{order:-1}mroot,msqrt{position:relative;display:inline-block;border-top:solid thin currentColor;margin-top:.5px;vertical-align:middle;margin-left:1ch}mroot:before,msqrt:before{content:"";display:inline-block;position:absolute;width:1ch;left:-1ch;top:-1px;bottom:0;background-image:url(${p})}`,"",{version:3,sources:["webpack://./src/mathml.scss"],names:[],mappings:"AAAA,+CAAA,CAEA,KACI,oBAAA,CACA,mBAAA,CAGJ,MACI,oBAAA,CACA,mBAAA,CACA,iBAAA,CAEA,mBACI,qCAAA,CAGJ,QACI,aAAA,CAKJ,mBACI,iBAAA,CACA,kBAAA,CAKJ,mBACI,iBAAA,CACA,oBAAA,CAIR,wBACI,mBAAA,CACA,uBAAA,CACA,qBAAA,CACA,iBAAA,CAEA,iFACI,iBAAA,CAKJ,uBAAA,QAAA,CAGJ,YACI,iBAAA,CACA,oBAAA,CACA,kCAAA,CACA,eAAA,CACA,qBAAA,CACA,eAAA,CAEA,0BACI,UAAA,CACA,oBAAA,CACA,iBAAA,CACA,SAAA,CACA,SAAA,CACA,QAAA,CACA,QAAA,CACA,wDAAA",sourcesContent:[`@namespace "http://www.w3.org/1998/Math/MathML";\r +\r +math {\r + display: inline-block;\r + line-height: initial;\r +}\r +\r +mfrac {\r + display: inline-block;\r + vertical-align: -50%;\r + text-align: center;\r +\r + &>:first-child {\r + border-bottom: solid thin currentColor;\r + }\r +\r + &>* {\r + display: block;\r + }\r +}\r +\r +msub {\r + &>:nth-child(2) {\r + font-size: smaller;\r + vertical-align: sub;\r + }\r +}\r +\r +msup {\r + &>:nth-child(2) {\r + font-size: smaller;\r + vertical-align: super;\r + }\r +}\r +\r +munder, mover, munderover {\r + display: inline-flex;\r + flex-flow: column nowrap;\r + vertical-align: middle;\r + text-align: center;\r +\r + &>:not(:first-child) {\r + font-size: smaller;\r + }\r +}\r +\r +munderover {\r + &>:last-child { order: -1; }\r +}\r +\r +mroot, msqrt {\r + position: relative;\r + display: inline-block;\r + border-top: solid thin currentColor; \r + margin-top: 0.5px;\r + vertical-align: middle; \r + margin-left: 1ch; \r +\r + &:before {\r + content: "";\r + display: inline-block;\r + position: absolute;\r + width: 1ch;\r + left: -1ch;\r + top: -1px;\r + bottom: 0;\r + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 100' preserveAspectRatio='none'%3E%3Cpath d='m0,75 l5,0 l5,25 l10,-100' stroke='black' fill='none' vector-effect='non-scaling-stroke'/%3E%3C/svg%3E");\r + }\r +}`],sourceRoot:""}]);const g=d.toString()},645:v=>{v.exports=function(e){var u=[];return u.toString=function(){return this.map(function(r){var m="",f=r[5]!==void 0;return r[4]&&(m+="@supports (".concat(r[4],") {")),r[2]&&(m+="@media ".concat(r[2]," {")),f&&(m+="@layer".concat(r[5].length>0?" ".concat(r[5]):""," {")),m+=e(r),f&&(m+="}"),r[2]&&(m+="}"),r[4]&&(m+="}"),m}).join("")},u.i=function(r,m,f,a,i){typeof r=="string"&&(r=[[null,r,void 0]]);var y={};if(f)for(var h=0;h0?" ".concat(g[5]):""," {").concat(g[1],"}")),g[5]=i),m&&(g[2]&&(g[1]="@media ".concat(g[2]," {").concat(g[1],"}")),g[2]=m),a&&(g[4]?(g[1]="@supports (".concat(g[4],") {").concat(g[1],"}"),g[4]=a):g[4]="".concat(a)),u.push(g))}},u}},806:v=>{v.exports=function(e,u){return u||(u={}),e&&(e=String(e.__esModule?e.default:e),/^['"].*['"]$/.test(e)&&(e=e.slice(1,-1)),u.hash&&(e+=u.hash),/["'() \t\n]|(%20)/.test(e)||u.needQuotes?'"'.concat(e.replace(/"/g,'\\"').replace(/\n/g,"\\n"),'"'):e)}},537:v=>{v.exports=function(e){var u=e[1],r=e[3];if(!r)return u;if(typeof btoa=="function"){var m=btoa(unescape(encodeURIComponent(JSON.stringify(r)))),f="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(m),a="/*# ".concat(f," */");return[u].concat([a]).join(` +`)}return[u].join(` +`)}},522:(v,e,u)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.OpenXmlPackage=void 0;const r=u(626),m=u(472),f=u(593),a=u(461);class i{constructor(h,d){this._zip=h,this.options=d,this.xmlParser=new m.XmlParser}get(h){return this._zip.files[function(d){return d.startsWith("/")?d.substr(1):d}(h)]}update(h,d){this._zip.file(h,d)}static async load(h,d){const p=await r.loadAsync(h);return new i(p,d)}save(h="blob"){return this._zip.generateAsync({type:h})}load(h,d="string"){var p,g;return(g=(p=this.get(h))===null||p===void 0?void 0:p.async(d))!==null&&g!==void 0?g:Promise.resolve(null)}async loadRelationships(h=null){let d="_rels/.rels";if(h!=null){const[g,w]=(0,f.splitPath)(h);d=`${g}_rels/${w}.rels`}const p=await this.load(d);return p?(0,a.parseRelationships)(this.parseXmlDocument(p).firstElementChild,this.xmlParser):null}parseXmlDocument(h){return(0,m.parseXmlString)(h,this.options.trimXmlDeclaration)}}e.OpenXmlPackage=i},530:(v,e,u)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.Part=void 0;const r=u(472);e.Part=class{constructor(m,f){this._package=m,this.path=f}async load(){this.rels=await this._package.loadRelationships(this.path);const m=await this._package.load(this.path),f=this._package.parseXmlDocument(m);this._package.options.keepOrigin&&(this._xmlDocument=f),this.parseXml(f.firstElementChild)}save(){this._package.update(this.path,(0,r.serializeXmlString)(this._xmlDocument))}parseXml(m){}}},461:(v,e)=>{var u;Object.defineProperty(e,"__esModule",{value:!0}),e.parseRelationships=e.RelationshipTypes=void 0,function(r){r.OfficeDocument="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument",r.FontTable="http://schemas.openxmlformats.org/officeDocument/2006/relationships/fontTable",r.Image="http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",r.Numbering="http://schemas.openxmlformats.org/officeDocument/2006/relationships/numbering",r.Styles="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles",r.StylesWithEffects="http://schemas.microsoft.com/office/2007/relationships/stylesWithEffects",r.Theme="http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme",r.Settings="http://schemas.openxmlformats.org/officeDocument/2006/relationships/settings",r.WebSettings="http://schemas.openxmlformats.org/officeDocument/2006/relationships/webSettings",r.Hyperlink="http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink",r.Footnotes="http://schemas.openxmlformats.org/officeDocument/2006/relationships/footnotes",r.Endnotes="http://schemas.openxmlformats.org/officeDocument/2006/relationships/endnotes",r.Footer="http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer",r.Header="http://schemas.openxmlformats.org/officeDocument/2006/relationships/header",r.ExtendedProperties="http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties",r.CoreProperties="http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties",r.CustomProperties="http://schemas.openxmlformats.org/package/2006/relationships/metadata/custom-properties"}(u||(e.RelationshipTypes=u={})),e.parseRelationships=function(r,m){return m.elements(r).map(f=>({id:m.attr(f,"Id"),type:m.attr(f,"Type"),target:m.attr(f,"Target"),targetMode:m.attr(f,"TargetMode")}))}},168:(v,e,u)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.DocumentParser=e.autos=void 0;const r=u(120),m=u(109),f=u(59),a=u(472),i=u(488),y=u(172),h=u(149),d=u(320);e.autos={shd:"inherit",color:"black",borderColor:"black",highlight:"transparent"};const p=[],g={oMath:r.DomType.MmlMath,oMathPara:r.DomType.MmlMathParagraph,f:r.DomType.MmlFraction,func:r.DomType.MmlFunction,fName:r.DomType.MmlFunctionName,num:r.DomType.MmlNumerator,den:r.DomType.MmlDenominator,rad:r.DomType.MmlRadical,deg:r.DomType.MmlDegree,e:r.DomType.MmlBase,sSup:r.DomType.MmlSuperscript,sSub:r.DomType.MmlSubscript,sPre:r.DomType.MmlPreSubSuper,sup:r.DomType.MmlSuperArgument,sub:r.DomType.MmlSubArgument,d:r.DomType.MmlDelimiter,nary:r.DomType.MmlNary,eqArr:r.DomType.MmlEquationArray,lim:r.DomType.MmlLimit,limLow:r.DomType.MmlLimitLower,m:r.DomType.MmlMatrix,mr:r.DomType.MmlMatrixRow,box:r.DomType.MmlBox,bar:r.DomType.MmlBar,groupChr:r.DomType.MmlGroupChar};e.DocumentParser=class{constructor(s){this.options=Object.assign({ignoreWidth:!1,debug:!1},s)}parseNotes(s,t,l){var b=[];for(let k of a.default.elements(s,t)){const E=new l;E.id=a.default.attr(k,"id"),E.noteType=a.default.attr(k,"type"),E.children=this.parseBodyElements(k),b.push(E)}return b}parseDocumentFile(s){var t=a.default.element(s,"body"),l=a.default.element(s,"background"),b=a.default.element(t,"sectPr");return{type:r.DomType.Document,children:this.parseBodyElements(t),props:b?(0,f.parseSectionProperties)(b,a.default):{},cssStyle:l?this.parseBackground(l):{}}}parseBackground(s){var t={},l=P.colorAttr(s,"color");return l&&(t["background-color"]=l),t}parseBodyElements(s){var t=[];for(let l of a.default.elements(s))switch(l.localName){case"p":t.push(this.parseParagraph(l));break;case"tbl":t.push(this.parseTable(l));break;case"sdt":t.push(...this.parseSdt(l,b=>this.parseBodyElements(b)))}return t}parseStylesFile(s){var t=[];return P.foreach(s,l=>{switch(l.localName){case"style":t.push(this.parseStyle(l));break;case"docDefaults":t.push(this.parseDefaultStyles(l))}}),t}parseDefaultStyles(s){var t={id:null,name:null,target:null,basedOn:null,styles:[]};return P.foreach(s,l=>{switch(l.localName){case"rPrDefault":var b=a.default.element(l,"rPr");b&&t.styles.push({target:"span",values:this.parseDefaultProperties(b,{})});break;case"pPrDefault":var k=a.default.element(l,"pPr");k&&t.styles.push({target:"p",values:this.parseDefaultProperties(k,{})})}}),t}parseStyle(s){var t={id:a.default.attr(s,"styleId"),isDefault:a.default.boolAttr(s,"default"),name:null,target:null,basedOn:null,styles:[],linked:null};switch(a.default.attr(s,"type")){case"paragraph":t.target="p";break;case"table":t.target="table";break;case"character":t.target="span"}return P.foreach(s,l=>{switch(l.localName){case"basedOn":t.basedOn=a.default.attr(l,"val");break;case"name":t.name=a.default.attr(l,"val");break;case"link":t.linked=a.default.attr(l,"val");break;case"next":t.next=a.default.attr(l,"val");break;case"aliases":t.aliases=a.default.attr(l,"val").split(",");break;case"pPr":t.styles.push({target:"p",values:this.parseDefaultProperties(l,{})}),t.paragraphProps=(0,m.parseParagraphProperties)(l,a.default);break;case"rPr":t.styles.push({target:"span",values:this.parseDefaultProperties(l,{})}),t.runProps=(0,i.parseRunProperties)(l,a.default);break;case"tblPr":case"tcPr":t.styles.push({target:"td",values:this.parseDefaultProperties(l,{})});break;case"tblStylePr":for(let b of this.parseTableStyle(l))t.styles.push(b);break;case"rsid":case"qFormat":case"hidden":case"semiHidden":case"unhideWhenUsed":case"autoRedefine":case"uiPriority":break;default:this.options.debug&&console.warn(`DOCX: Unknown style element: ${l.localName}`)}}),t}parseTableStyle(s){var t=[],l=a.default.attr(s,"type"),b="",k="";switch(l){case"firstRow":k=".first-row",b="tr.first-row td";break;case"lastRow":k=".last-row",b="tr.last-row td";break;case"firstCol":k=".first-col",b="td.first-col";break;case"lastCol":k=".last-col",b="td.last-col";break;case"band1Vert":k=":not(.no-vband)",b="td.odd-col";break;case"band2Vert":k=":not(.no-vband)",b="td.even-col";break;case"band1Horz":k=":not(.no-hband)",b="tr.odd-row";break;case"band2Horz":k=":not(.no-hband)",b="tr.even-row";break;default:return[]}return P.foreach(s,E=>{switch(E.localName){case"pPr":t.push({target:`${b} p`,mod:k,values:this.parseDefaultProperties(E,{})});break;case"rPr":t.push({target:`${b} span`,mod:k,values:this.parseDefaultProperties(E,{})});break;case"tblPr":case"tcPr":t.push({target:b,mod:k,values:this.parseDefaultProperties(E,{})})}}),t}parseNumberingFile(s){var t=[],l={},b=[];return P.foreach(s,k=>{switch(k.localName){case"abstractNum":this.parseAbstractNumbering(k,b).forEach(C=>t.push(C));break;case"numPicBullet":b.push(this.parseNumberingPicBullet(k));break;case"num":var E=a.default.attr(k,"numId"),_=a.default.elementAttr(k,"abstractNumId","val");l[_]=E}}),t.forEach(k=>k.id=l[k.id]),t}parseNumberingPicBullet(s){var t=a.default.element(s,"pict"),l=t&&a.default.element(t,"shape"),b=l&&a.default.element(l,"imagedata");return b?{id:a.default.intAttr(s,"numPicBulletId"),src:a.default.attr(b,"id"),style:a.default.attr(l,"style")}:null}parseAbstractNumbering(s,t){var l=[],b=a.default.attr(s,"abstractNumId");return P.foreach(s,k=>{k.localName==="lvl"&&l.push(this.parseNumberingLevel(b,k,t))}),l}parseNumberingLevel(s,t,l){var b={id:s,level:a.default.intAttr(t,"ilvl"),start:1,pStyleName:void 0,pStyle:{},rStyle:{},suff:"tab"};return P.foreach(t,k=>{switch(k.localName){case"start":b.start=a.default.intAttr(k,"val");break;case"pPr":this.parseDefaultProperties(k,b.pStyle);break;case"rPr":this.parseDefaultProperties(k,b.rStyle);break;case"lvlPicBulletId":var E=a.default.intAttr(k,"val");b.bullet=l.find(_=>_.id==E);break;case"lvlText":b.levelText=a.default.attr(k,"val");break;case"pStyle":b.pStyleName=a.default.attr(k,"val");break;case"numFmt":b.format=a.default.attr(k,"val");break;case"suff":b.suff=a.default.attr(k,"val")}}),b}parseSdt(s,t){const l=a.default.element(s,"sdtContent");return l?t(l):[]}parseInserted(s,t){var l,b;return{type:r.DomType.Inserted,children:(b=(l=t(s))===null||l===void 0?void 0:l.children)!==null&&b!==void 0?b:[]}}parseDeleted(s,t){var l,b;return{type:r.DomType.Deleted,children:(b=(l=t(s))===null||l===void 0?void 0:l.children)!==null&&b!==void 0?b:[]}}parseParagraph(s){var t={type:r.DomType.Paragraph,children:[]};for(let l of a.default.elements(s))switch(l.localName){case"pPr":this.parseParagraphProperties(l,t);break;case"r":t.children.push(this.parseRun(l,t));break;case"hyperlink":t.children.push(this.parseHyperlink(l,t));break;case"bookmarkStart":t.children.push((0,y.parseBookmarkStart)(l,a.default));break;case"bookmarkEnd":t.children.push((0,y.parseBookmarkEnd)(l,a.default));break;case"oMath":case"oMathPara":t.children.push(this.parseMathElement(l));break;case"sdt":t.children.push(...this.parseSdt(l,b=>this.parseParagraph(b).children));break;case"ins":t.children.push(this.parseInserted(l,b=>this.parseParagraph(b)));break;case"del":t.children.push(this.parseDeleted(l,b=>this.parseParagraph(b)))}return t}parseParagraphProperties(s,t){this.parseDefaultProperties(s,t.cssStyle={},null,l=>{if((0,m.parseParagraphProperty)(l,t,a.default))return!0;switch(l.localName){case"pStyle":t.styleName=a.default.attr(l,"val");break;case"cnfStyle":t.className=n.classNameOfCnfStyle(l);break;case"framePr":this.parseFrame(l,t);break;case"rPr":break;default:return!1}return!0})}parseFrame(s,t){a.default.attr(s,"dropCap")=="drop"&&(t.cssStyle.float="left")}parseHyperlink(s,t){var l={type:r.DomType.Hyperlink,parent:t,children:[]},b=a.default.attr(s,"anchor"),k=a.default.attr(s,"id");return b&&(l.href="#"+b),k&&(l.id=k),P.foreach(s,E=>{E.localName==="r"&&l.children.push(this.parseRun(E,l))}),l}parseRun(s,t){var l={type:r.DomType.Run,parent:t,children:[]};return P.foreach(s,b=>{switch((b=this.checkAlternateContent(b)).localName){case"t":l.children.push({type:r.DomType.Text,text:b.textContent});break;case"delText":l.children.push({type:r.DomType.DeletedText,text:b.textContent});break;case"fldSimple":l.children.push({type:r.DomType.SimpleField,instruction:a.default.attr(b,"instr"),lock:a.default.boolAttr(b,"lock",!1),dirty:a.default.boolAttr(b,"dirty",!1)});break;case"instrText":l.fieldRun=!0,l.children.push({type:r.DomType.Instruction,text:b.textContent});break;case"fldChar":l.fieldRun=!0,l.children.push({type:r.DomType.ComplexField,charType:a.default.attr(b,"fldCharType"),lock:a.default.boolAttr(b,"lock",!1),dirty:a.default.boolAttr(b,"dirty",!1)});break;case"noBreakHyphen":l.children.push({type:r.DomType.NoBreakHyphen});break;case"br":l.children.push({type:r.DomType.Break,break:a.default.attr(b,"type")||"textWrapping"});break;case"lastRenderedPageBreak":l.children.push({type:r.DomType.Break,break:"lastRenderedPageBreak"});break;case"sym":l.children.push({type:r.DomType.Symbol,font:a.default.attr(b,"font"),char:a.default.attr(b,"char")});break;case"tab":l.children.push({type:r.DomType.Tab});break;case"footnoteReference":l.children.push({type:r.DomType.FootnoteReference,id:a.default.attr(b,"id")});break;case"endnoteReference":l.children.push({type:r.DomType.EndnoteReference,id:a.default.attr(b,"id")});break;case"drawing":let k=this.parseDrawing(b);k&&(l.children=[k]);break;case"pict":l.children.push(this.parseVmlPicture(b));break;case"rPr":this.parseRunProperties(b,l)}}),l}parseMathElement(s){const t=`${s.localName}Pr`,l={type:g[s.localName],children:[]};for(const k of a.default.elements(s))if(g[k.localName])l.children.push(this.parseMathElement(k));else if(k.localName=="r"){var b=this.parseRun(k);b.type=r.DomType.MmlRun,l.children.push(b)}else k.localName==t&&(l.props=this.parseMathProperies(k));return l}parseMathProperies(s){const t={};for(const l of a.default.elements(s))switch(l.localName){case"chr":t.char=a.default.attr(l,"val");break;case"vertJc":t.verticalJustification=a.default.attr(l,"val");break;case"pos":t.position=a.default.attr(l,"val");break;case"degHide":t.hideDegree=a.default.boolAttr(l,"val");break;case"begChr":t.beginChar=a.default.attr(l,"val");break;case"endChr":t.endChar=a.default.attr(l,"val")}return t}parseRunProperties(s,t){this.parseDefaultProperties(s,t.cssStyle={},null,l=>{switch(l.localName){case"rStyle":t.styleName=a.default.attr(l,"val");break;case"vertAlign":t.verticalAlign=n.valueOfVertAlign(l,!0);break;default:return!1}return!0})}parseVmlPicture(s){const t={type:r.DomType.VmlPicture,children:[]};for(const l of a.default.elements(s)){const b=(0,d.parseVmlElement)(l,this);b&&t.children.push(b)}return t}checkAlternateContent(s){var t;if(s.localName!="AlternateContent")return s;var l=a.default.element(s,"Choice");if(l){var b=a.default.attr(l,"Requires"),k=s.lookupNamespaceURI(b);if(p.includes(k))return l.firstElementChild}return(t=a.default.element(s,"Fallback"))===null||t===void 0?void 0:t.firstElementChild}parseDrawing(s){for(var t of a.default.elements(s))switch(t.localName){case"inline":case"anchor":return this.parseDrawingWrapper(t)}}parseDrawingWrapper(s){var t,l={type:r.DomType.Drawing,children:[],cssStyle:{}},b=s.localName=="anchor";let k=null,E=a.default.boolAttr(s,"simplePos"),_={relative:"page",align:"left",offset:"0"},C={relative:"page",align:"top",offset:"0"};for(var o of a.default.elements(s))switch(o.localName){case"simplePos":E&&(_.offset=a.default.lengthAttr(o,"x",h.LengthUsage.Emu),C.offset=a.default.lengthAttr(o,"y",h.LengthUsage.Emu));break;case"extent":l.cssStyle.width=a.default.lengthAttr(o,"cx",h.LengthUsage.Emu),l.cssStyle.height=a.default.lengthAttr(o,"cy",h.LengthUsage.Emu);break;case"positionH":case"positionV":if(!E){let q=o.localName=="positionH"?_:C;var R=a.default.element(o,"align"),V=a.default.element(o,"posOffset");q.relative=(t=a.default.attr(o,"relativeFrom"))!==null&&t!==void 0?t:q.relative,R&&(q.align=R.textContent),V&&(q.offset=P.sizeValue(V,h.LengthUsage.Emu))}break;case"wrapTopAndBottom":k="wrapTopAndBottom";break;case"wrapNone":k="wrapNone";break;case"graphic":var F=this.parseGraphic(o);F&&l.children.push(F)}return k=="wrapTopAndBottom"?(l.cssStyle.display="block",_.align&&(l.cssStyle["text-align"]=_.align,l.cssStyle.width="100%")):k=="wrapNone"?(l.cssStyle.display="block",l.cssStyle.position="relative",l.cssStyle.width="0px",l.cssStyle.height="0px",_.offset&&(l.cssStyle.left=_.offset),C.offset&&(l.cssStyle.top=C.offset)):!b||_.align!="left"&&_.align!="right"||(l.cssStyle.float=_.align),l}parseGraphic(s){var t=a.default.element(s,"graphicData");for(let l of a.default.elements(t))if(l.localName==="pic")return this.parsePicture(l);return null}parsePicture(s){var t={type:r.DomType.Image,src:"",cssStyle:{}},l=a.default.element(s,"blipFill"),b=a.default.element(l,"blip");t.src=a.default.attr(b,"embed");var k=a.default.element(s,"spPr"),E=a.default.element(k,"xfrm");for(var _ of(t.cssStyle.position="relative",a.default.elements(E)))switch(_.localName){case"ext":t.cssStyle.width=a.default.lengthAttr(_,"cx",h.LengthUsage.Emu),t.cssStyle.height=a.default.lengthAttr(_,"cy",h.LengthUsage.Emu);break;case"off":t.cssStyle.left=a.default.lengthAttr(_,"x",h.LengthUsage.Emu),t.cssStyle.top=a.default.lengthAttr(_,"y",h.LengthUsage.Emu)}return t}parseTable(s){var t={type:r.DomType.Table,children:[]};return P.foreach(s,l=>{switch(l.localName){case"tr":t.children.push(this.parseTableRow(l));break;case"tblGrid":t.columns=this.parseTableColumns(l);break;case"tblPr":this.parseTableProperties(l,t)}}),t}parseTableColumns(s){var t=[];return P.foreach(s,l=>{l.localName==="gridCol"&&t.push({width:a.default.lengthAttr(l,"w")})}),t}parseTableProperties(s,t){switch(t.cssStyle={},t.cellStyle={},this.parseDefaultProperties(s,t.cssStyle,t.cellStyle,l=>{switch(l.localName){case"tblStyle":t.styleName=a.default.attr(l,"val");break;case"tblLook":t.className=n.classNameOftblLook(l);break;case"tblpPr":this.parseTablePosition(l,t);break;case"tblStyleColBandSize":t.colBandSize=a.default.intAttr(l,"val");break;case"tblStyleRowBandSize":t.rowBandSize=a.default.intAttr(l,"val");break;default:return!1}return!0}),t.cssStyle["text-align"]){case"center":delete t.cssStyle["text-align"],t.cssStyle["margin-left"]="auto",t.cssStyle["margin-right"]="auto";break;case"right":delete t.cssStyle["text-align"],t.cssStyle["margin-left"]="auto"}}parseTablePosition(s,t){var l=a.default.lengthAttr(s,"topFromText"),b=a.default.lengthAttr(s,"bottomFromText"),k=a.default.lengthAttr(s,"rightFromText"),E=a.default.lengthAttr(s,"leftFromText");t.cssStyle.float="left",t.cssStyle["margin-bottom"]=n.addSize(t.cssStyle["margin-bottom"],b),t.cssStyle["margin-left"]=n.addSize(t.cssStyle["margin-left"],E),t.cssStyle["margin-right"]=n.addSize(t.cssStyle["margin-right"],k),t.cssStyle["margin-top"]=n.addSize(t.cssStyle["margin-top"],l)}parseTableRow(s){var t={type:r.DomType.Row,children:[]};return P.foreach(s,l=>{switch(l.localName){case"tc":t.children.push(this.parseTableCell(l));break;case"trPr":this.parseTableRowProperties(l,t)}}),t}parseTableRowProperties(s,t){t.cssStyle=this.parseDefaultProperties(s,{},null,l=>{switch(l.localName){case"cnfStyle":t.className=n.classNameOfCnfStyle(l);break;case"tblHeader":t.isHeader=a.default.boolAttr(l,"val");break;default:return!1}return!0})}parseTableCell(s){var t={type:r.DomType.Cell,children:[]};return P.foreach(s,l=>{switch(l.localName){case"tbl":t.children.push(this.parseTable(l));break;case"p":t.children.push(this.parseParagraph(l));break;case"tcPr":this.parseTableCellProperties(l,t)}}),t}parseTableCellProperties(s,t){t.cssStyle=this.parseDefaultProperties(s,{},null,l=>{var b;switch(l.localName){case"gridSpan":t.span=a.default.intAttr(l,"val",null);break;case"vMerge":t.verticalMerge=(b=a.default.attr(l,"val"))!==null&&b!==void 0?b:"continue";break;case"cnfStyle":t.className=n.classNameOfCnfStyle(l);break;default:return!1}return!0})}parseDefaultProperties(s,t=null,l=null,b=null){return t=t||{},P.foreach(s,k=>{if(!(b!=null&&b(k)))switch(k.localName){case"jc":t["text-align"]=n.valueOfJc(k);break;case"textAlignment":t["vertical-align"]=n.valueOfTextAlignment(k);break;case"color":t.color=P.colorAttr(k,"val",null,e.autos.color);break;case"sz":t["font-size"]=t["min-height"]=a.default.lengthAttr(k,"val",h.LengthUsage.FontSize);break;case"shd":t["background-color"]=P.colorAttr(k,"fill",null,e.autos.shd);break;case"highlight":t["background-color"]=P.colorAttr(k,"val",null,e.autos.highlight);break;case"vertAlign":break;case"position":t.verticalAlign=a.default.lengthAttr(k,"val",h.LengthUsage.FontSize);break;case"tcW":if(this.options.ignoreWidth)break;case"tblW":t.width=n.valueOfSize(k,"w");break;case"trHeight":this.parseTrHeight(k,t);break;case"strike":t["text-decoration"]=a.default.boolAttr(k,"val",!0)?"line-through":"none";break;case"b":t["font-weight"]=a.default.boolAttr(k,"val",!0)?"bold":"normal";break;case"i":t["font-style"]=a.default.boolAttr(k,"val",!0)?"italic":"normal";break;case"caps":t["text-transform"]=a.default.boolAttr(k,"val",!0)?"uppercase":"none";break;case"smallCaps":t["text-transform"]=a.default.boolAttr(k,"val",!0)?"lowercase":"none";break;case"u":this.parseUnderline(k,t);break;case"ind":case"tblInd":this.parseIndentation(k,t);break;case"rFonts":this.parseFont(k,t);break;case"tblBorders":this.parseBorderProperties(k,l||t);break;case"tblCellSpacing":t["border-spacing"]=n.valueOfMargin(k),t["border-collapse"]="separate";break;case"pBdr":this.parseBorderProperties(k,t);break;case"bdr":t.border=n.valueOfBorder(k);break;case"tcBorders":this.parseBorderProperties(k,t);break;case"vanish":a.default.boolAttr(k,"val",!0)&&(t.display="none");break;case"kern":case"noWrap":break;case"tblCellMar":case"tcMar":this.parseMarginProperties(k,l||t);break;case"tblLayout":t["table-layout"]=n.valueOfTblLayout(k);break;case"vAlign":t["vertical-align"]=n.valueOfTextAlignment(k);break;case"spacing":s.localName=="pPr"&&this.parseSpacing(k,t);break;case"wordWrap":a.default.boolAttr(k,"val")&&(t["overflow-wrap"]="break-word");break;case"suppressAutoHyphens":t.hyphens=a.default.boolAttr(k,"val",!0)?"none":"auto";break;case"lang":t.$lang=a.default.attr(k,"val");break;case"bCs":case"iCs":case"szCs":case"tabs":case"outlineLvl":case"contextualSpacing":case"tblStyleColBandSize":case"tblStyleRowBandSize":case"webHidden":case"pageBreakBefore":case"suppressLineNumbers":case"keepLines":case"keepNext":case"widowControl":case"bidi":case"rtl":case"noProof":break;default:this.options.debug&&console.warn(`DOCX: Unknown document element: ${s.localName}.${k.localName}`)}}),t}parseUnderline(s,t){var l=a.default.attr(s,"val");if(l!=null){switch(l){case"dash":case"dashDotDotHeavy":case"dashDotHeavy":case"dashedHeavy":case"dashLong":case"dashLongHeavy":case"dotDash":case"dotDotDash":t["text-decoration-style"]="dashed";break;case"dotted":case"dottedHeavy":t["text-decoration-style"]="dotted";break;case"double":t["text-decoration-style"]="double";break;case"single":case"thick":case"words":t["text-decoration"]="underline";break;case"wave":case"wavyDouble":case"wavyHeavy":t["text-decoration-style"]="wavy";break;case"none":t["text-decoration"]="none"}var b=P.colorAttr(s,"color");b&&(t["text-decoration-color"]=b)}}parseFont(s,t){var l=[a.default.attr(s,"ascii"),n.themeValue(s,"asciiTheme")].filter(b=>b).join(", ");l.length>0&&(t["font-family"]=l)}parseIndentation(s,t){var l=a.default.lengthAttr(s,"firstLine"),b=a.default.lengthAttr(s,"hanging"),k=a.default.lengthAttr(s,"left"),E=a.default.lengthAttr(s,"start"),_=a.default.lengthAttr(s,"right"),C=a.default.lengthAttr(s,"end");l&&(t["text-indent"]=l),b&&(t["text-indent"]=`-${b}`),(k||E)&&(t["margin-left"]=k||E),(_||C)&&(t["margin-right"]=_||C)}parseSpacing(s,t){var l=a.default.lengthAttr(s,"before"),b=a.default.lengthAttr(s,"after"),k=a.default.intAttr(s,"line",null),E=a.default.attr(s,"lineRule");if(l&&(t["margin-top"]=l),b&&(t["margin-bottom"]=b),k!==null)switch(E){case"auto":t["line-height"]=`${(k/240).toFixed(2)}`;break;case"atLeast":t["line-height"]=`calc(100% + ${k/20}pt)`;break;default:t["line-height"]=t["min-height"]=k/20+"pt"}}parseMarginProperties(s,t){P.foreach(s,l=>{switch(l.localName){case"left":t["padding-left"]=n.valueOfMargin(l);break;case"right":t["padding-right"]=n.valueOfMargin(l);break;case"top":t["padding-top"]=n.valueOfMargin(l);break;case"bottom":t["padding-bottom"]=n.valueOfMargin(l)}})}parseTrHeight(s,t){a.default.attr(s,"hRule"),t.height=a.default.lengthAttr(s,"val")}parseBorderProperties(s,t){P.foreach(s,l=>{switch(l.localName){case"start":case"left":t["border-left"]=n.valueOfBorder(l);break;case"end":case"right":t["border-right"]=n.valueOfBorder(l);break;case"top":t["border-top"]=n.valueOfBorder(l);break;case"bottom":t["border-bottom"]=n.valueOfBorder(l)}})}};const w=["black","blue","cyan","darkBlue","darkCyan","darkGray","darkGreen","darkMagenta","darkRed","darkYellow","green","lightGray","magenta","none","red","white","yellow"];class P{static foreach(t,l){for(var b=0;bl[k]=="1").join(" ")}static valueOfJc(t){var l=a.default.attr(t,"val");switch(l){case"start":case"left":return"left";case"center":return"center";case"end":case"right":return"right";case"both":return"justify"}return l}static valueOfVertAlign(t,l=!1){var b=a.default.attr(t,"val");switch(b){case"subscript":return"sub";case"superscript":return l?"sup":"super"}return l?null:b}static valueOfTextAlignment(t){var l=a.default.attr(t,"val");switch(l){case"auto":case"baseline":return"baseline";case"top":return"top";case"center":return"middle";case"bottom":return"bottom"}return l}static addSize(t,l){return t==null?l:l==null?t:`calc(${t} + ${l})`}static classNameOftblLook(t){const l=a.default.hexAttr(t,"val",0);let b="";return(a.default.boolAttr(t,"firstRow")||32&l)&&(b+=" first-row"),(a.default.boolAttr(t,"lastRow")||64&l)&&(b+=" last-row"),(a.default.boolAttr(t,"firstColumn")||128&l)&&(b+=" first-col"),(a.default.boolAttr(t,"lastColumn")||256&l)&&(b+=" last-col"),(a.default.boolAttr(t,"noHBand")||512&l)&&(b+=" no-hband"),(a.default.boolAttr(t,"noVBand")||1024&l)&&(b+=" no-vband"),b.trim()}}},162:(v,e,u)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.CorePropsPart=void 0;const r=u(530),m=u(614);class f extends r.Part{parseXml(i){this.props=(0,m.parseCoreProps)(i,this._package.xmlParser)}}e.CorePropsPart=f},614:(v,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.parseCoreProps=void 0,e.parseCoreProps=function(u,r){const m={};for(let f of r.elements(u))switch(f.localName){case"title":m.title=f.textContent;break;case"description":m.description=f.textContent;break;case"subject":m.subject=f.textContent;break;case"creator":m.creator=f.textContent;break;case"keywords":m.keywords=f.textContent;break;case"language":m.language=f.textContent;break;case"lastModifiedBy":m.lastModifiedBy=f.textContent;break;case"revision":f.textContent&&(m.revision=parseInt(f.textContent))}return m}},177:(v,e,u)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.CustomPropsPart=void 0;const r=u(530),m=u(821);class f extends r.Part{parseXml(i){this.props=(0,m.parseCustomProps)(i,this._package.xmlParser)}}e.CustomPropsPart=f},821:(v,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.parseCustomProps=void 0,e.parseCustomProps=function(u,r){return r.elements(u,"property").map(m=>{const f=m.firstChild;return{formatId:r.attr(m,"fmtid"),name:r.attr(m,"name"),type:f.nodeName,value:f.textContent}})}},665:(v,e,u)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.ExtendedPropsPart=void 0;const r=u(530),m=u(668);class f extends r.Part{parseXml(i){this.props=(0,m.parseExtendedProps)(i,this._package.xmlParser)}}e.ExtendedPropsPart=f},668:(v,e)=>{function u(r){if(r!==void 0)return parseInt(r)}Object.defineProperty(e,"__esModule",{value:!0}),e.parseExtendedProps=void 0,e.parseExtendedProps=function(r,m){const f={};for(let a of m.elements(r))switch(a.localName){case"Template":f.template=a.textContent;break;case"Pages":f.pages=u(a.textContent);break;case"Words":f.words=u(a.textContent);break;case"Characters":f.characters=u(a.textContent);break;case"Application":f.application=a.textContent;break;case"Lines":f.lines=u(a.textContent);break;case"Paragraphs":f.paragraphs=u(a.textContent);break;case"Company":f.company=a.textContent;break;case"AppVersion":f.appVersion=a.textContent}return f}},172:(v,e,u)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.parseBookmarkEnd=e.parseBookmarkStart=void 0;const r=u(120);e.parseBookmarkStart=function(m,f){return{type:r.DomType.BookmarkStart,id:f.attr(m,"id"),name:f.attr(m,"name"),colFirst:f.intAttr(m,"colFirst"),colLast:f.intAttr(m,"colLast")}},e.parseBookmarkEnd=function(m,f){return{type:r.DomType.BookmarkEnd,id:f.attr(m,"id")}}},191:(v,e,u)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.parseBorders=e.parseBorder=void 0;const r=u(149);function m(f,a){return{type:a.attr(f,"val"),color:a.attr(f,"color"),size:a.lengthAttr(f,"sz",r.LengthUsage.Border),offset:a.lengthAttr(f,"space",r.LengthUsage.Point),frame:a.boolAttr(f,"frame"),shadow:a.boolAttr(f,"shadow")}}e.parseBorder=m,e.parseBorders=function(f,a){var i={};for(let y of a.elements(f))switch(y.localName){case"left":i.left=m(y,a);break;case"top":i.top=m(y,a);break;case"right":i.right=m(y,a);break;case"bottom":i.bottom=m(y,a)}return i}},149:(v,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.parseCommonProperty=e.convertPercentage=e.convertBoolean=e.convertLength=e.LengthUsage=e.ns=void 0,e.ns={wordml:"http://schemas.openxmlformats.org/wordprocessingml/2006/main",drawingml:"http://schemas.openxmlformats.org/drawingml/2006/main",picture:"http://schemas.openxmlformats.org/drawingml/2006/picture",compatibility:"http://schemas.openxmlformats.org/markup-compatibility/2006",math:"http://schemas.openxmlformats.org/officeDocument/2006/math"},e.LengthUsage={Dxa:{mul:.05,unit:"pt"},Emu:{mul:7874015748031496e-20,unit:"pt"},FontSize:{mul:.5,unit:"pt"},Border:{mul:.125,unit:"pt"},Point:{mul:1,unit:"pt"},Percent:{mul:.02,unit:"%"},LineHeight:{mul:.004166666666666667,unit:""},VmlEmu:{mul:7874015748031496e-20,unit:""}},e.convertLength=function(u,r=e.LengthUsage.Dxa){return u==null||/.+(p[xt]|[%])$/.test(u)?u:`${(parseInt(u)*r.mul).toFixed(2)}${r.unit}`},e.convertBoolean=function(u,r=!1){switch(u){case"1":case"on":case"true":return!0;case"0":case"off":case"false":return!1;default:return r}},e.convertPercentage=function(u){return u?parseInt(u)/100:null},e.parseCommonProperty=function(u,r,m){if(u.namespaceURI!=e.ns.wordml)return!1;switch(u.localName){case"color":r.color=m.attr(u,"val");break;case"sz":r.fontSize=m.lengthAttr(u,"val",e.LengthUsage.FontSize);break;default:return!1}return!0}},448:(v,e,u)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.DocumentPart=void 0;const r=u(530);class m extends r.Part{constructor(a,i,y){super(a,i),this._documentParser=y}parseXml(a){this.body=this._documentParser.parseDocumentFile(a)}}e.DocumentPart=m},120:(v,e)=>{var u;Object.defineProperty(e,"__esModule",{value:!0}),e.OpenXmlElementBase=e.DomType=void 0,function(r){r.Document="document",r.Paragraph="paragraph",r.Run="run",r.Break="break",r.NoBreakHyphen="noBreakHyphen",r.Table="table",r.Row="row",r.Cell="cell",r.Hyperlink="hyperlink",r.Drawing="drawing",r.Image="image",r.Text="text",r.Tab="tab",r.Symbol="symbol",r.BookmarkStart="bookmarkStart",r.BookmarkEnd="bookmarkEnd",r.Footer="footer",r.Header="header",r.FootnoteReference="footnoteReference",r.EndnoteReference="endnoteReference",r.Footnote="footnote",r.Endnote="endnote",r.SimpleField="simpleField",r.ComplexField="complexField",r.Instruction="instruction",r.VmlPicture="vmlPicture",r.MmlMath="mmlMath",r.MmlMathParagraph="mmlMathParagraph",r.MmlFraction="mmlFraction",r.MmlFunction="mmlFunction",r.MmlFunctionName="mmlFunctionName",r.MmlNumerator="mmlNumerator",r.MmlDenominator="mmlDenominator",r.MmlRadical="mmlRadical",r.MmlBase="mmlBase",r.MmlDegree="mmlDegree",r.MmlSuperscript="mmlSuperscript",r.MmlSubscript="mmlSubscript",r.MmlPreSubSuper="mmlPreSubSuper",r.MmlSubArgument="mmlSubArgument",r.MmlSuperArgument="mmlSuperArgument",r.MmlNary="mmlNary",r.MmlDelimiter="mmlDelimiter",r.MmlRun="mmlRun",r.MmlEquationArray="mmlEquationArray",r.MmlLimit="mmlLimit",r.MmlLimitLower="mmlLimitLower",r.MmlMatrix="mmlMatrix",r.MmlMatrixRow="mmlMatrixRow",r.MmlBox="mmlBox",r.MmlBar="mmlBar",r.MmlGroupChar="mmlGroupChar",r.VmlElement="vmlElement",r.Inserted="inserted",r.Deleted="deleted",r.DeletedText="deletedText"}(u||(e.DomType=u={})),e.OpenXmlElementBase=class{constructor(){this.children=[],this.cssStyle={}}}},931:(v,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.parseLineSpacing=void 0,e.parseLineSpacing=function(u,r){return{before:r.lengthAttr(u,"before"),after:r.lengthAttr(u,"after"),line:r.intAttr(u,"line"),lineRule:r.attr(u,"lineRule")}}},109:(v,e,u)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.parseNumbering=e.parseTabs=e.parseParagraphProperty=e.parseParagraphProperties=void 0;const r=u(149),m=u(59),f=u(931),a=u(488);function i(d,p,g){if(d.namespaceURI!=r.ns.wordml)return!1;if((0,r.parseCommonProperty)(d,p,g))return!0;switch(d.localName){case"tabs":p.tabs=y(d,g);break;case"sectPr":p.sectionProps=(0,m.parseSectionProperties)(d,g);break;case"numPr":p.numbering=h(d,g);break;case"spacing":return p.lineSpacing=(0,f.parseLineSpacing)(d,g),!1;case"textAlignment":return p.textAlignment=g.attr(d,"val"),!1;case"keepNext":p.keepLines=g.boolAttr(d,"val",!0);break;case"keepNext":p.keepNext=g.boolAttr(d,"val",!0);break;case"pageBreakBefore":p.pageBreakBefore=g.boolAttr(d,"val",!0);break;case"outlineLvl":p.outlineLevel=g.intAttr(d,"val");break;case"pStyle":p.styleName=g.attr(d,"val");break;case"rPr":p.runProps=(0,a.parseRunProperties)(d,g);break;default:return!1}return!0}function y(d,p){return p.elements(d,"tab").map(g=>({position:p.lengthAttr(g,"pos"),leader:p.attr(g,"leader"),style:p.attr(g,"val")}))}function h(d,p){var g={};for(let w of p.elements(d))switch(w.localName){case"numId":g.id=p.attr(w,"val");break;case"ilvl":g.level=p.intAttr(w,"val")}return g}e.parseParagraphProperties=function(d,p){let g={};for(let w of p.elements(d))i(w,g,p);return g},e.parseParagraphProperty=i,e.parseTabs=y,e.parseNumbering=h},488:(v,e,u)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.parseRunProperty=e.parseRunProperties=void 0;const r=u(149);function m(f,a,i){return!!(0,r.parseCommonProperty)(f,a,i)}e.parseRunProperties=function(f,a){let i={};for(let y of a.elements(f))m(y,i,a);return i},e.parseRunProperty=m},59:(v,e,u)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.parseSectionProperties=e.SectionType=void 0;const r=u(472),m=u(191);var f;function a(h,d){return{numberOfColumns:d.intAttr(h,"num"),space:d.lengthAttr(h,"space"),separator:d.boolAttr(h,"sep"),equalWidth:d.boolAttr(h,"equalWidth",!0),columns:d.elements(h,"col").map(p=>({width:d.lengthAttr(p,"w"),space:d.lengthAttr(p,"space")}))}}function i(h,d){return{chapSep:d.attr(h,"chapSep"),chapStyle:d.attr(h,"chapStyle"),format:d.attr(h,"fmt"),start:d.intAttr(h,"start")}}function y(h,d){return{id:d.attr(h,"id"),type:d.attr(h,"type")}}(function(h){h.Continuous="continuous",h.NextPage="nextPage",h.NextColumn="nextColumn",h.EvenPage="evenPage",h.OddPage="oddPage"})(f||(e.SectionType=f={})),e.parseSectionProperties=function(h,d=r.default){var p,g,w={};for(let P of d.elements(h))switch(P.localName){case"pgSz":w.pageSize={width:d.lengthAttr(P,"w"),height:d.lengthAttr(P,"h"),orientation:d.attr(P,"orient")};break;case"type":w.type=d.attr(P,"val");break;case"pgMar":w.pageMargins={left:d.lengthAttr(P,"left"),right:d.lengthAttr(P,"right"),top:d.lengthAttr(P,"top"),bottom:d.lengthAttr(P,"bottom"),header:d.lengthAttr(P,"header"),footer:d.lengthAttr(P,"footer"),gutter:d.lengthAttr(P,"gutter")};break;case"cols":w.columns=a(P,d);break;case"headerReference":((p=w.headerRefs)!==null&&p!==void 0?p:w.headerRefs=[]).push(y(P,d));break;case"footerReference":((g=w.footerRefs)!==null&&g!==void 0?g:w.footerRefs=[]).push(y(P,d));break;case"titlePg":w.titlePage=d.boolAttr(P,"val",!0);break;case"pgBorders":w.pageBorders=(0,m.parseBorders)(P,d);break;case"pgNumType":w.pageNumber=i(P,d)}return w}},667:(v,e,u)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.renderAsync=e.praseAsync=e.defaultOptions=void 0;const r=u(213),m=u(168),f=u(932);e.defaultOptions={ignoreHeight:!1,ignoreWidth:!1,ignoreFonts:!1,breakPages:!0,debug:!1,experimental:!1,className:"docx",inWrapper:!0,trimXmlDeclaration:!0,ignoreLastRenderedPageBreak:!0,renderHeaders:!0,renderFooters:!0,renderFootnotes:!0,renderEndnotes:!0,useBase64URL:!1,useMathMLPolyfill:!1,renderChanges:!1},e.praseAsync=function(a,i=null){const y=Object.assign(Object.assign({},e.defaultOptions),i);return r.WordDocument.load(a,new m.DocumentParser(y),y)},e.renderAsync=async function(a,i,y=null,h=null){const d=Object.assign(Object.assign({},e.defaultOptions),h),p=new f.HtmlRenderer(window.document),g=await r.WordDocument.load(a,new m.DocumentParser(d),d);return p.render(g,i,y,d),g}},380:(v,e,u)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.FontTablePart=void 0;const r=u(530),m=u(512);class f extends r.Part{parseXml(i){this.fonts=(0,m.parseFonts)(i,this._package.xmlParser)}}e.FontTablePart=f},512:(v,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.parseEmbedFontRef=e.parseFont=e.parseFonts=void 0;const u={embedRegular:"regular",embedBold:"bold",embedItalic:"italic",embedBoldItalic:"boldItalic"};function r(f,a){let i={name:a.attr(f,"name"),embedFontRefs:[]};for(let y of a.elements(f))switch(y.localName){case"family":i.family=a.attr(y,"val");break;case"altName":i.altName=a.attr(y,"val");break;case"embedRegular":case"embedBold":case"embedItalic":case"embedBoldItalic":i.embedFontRefs.push(m(y,a))}return i}function m(f,a){return{id:a.attr(f,"id"),key:a.attr(f,"fontKey"),type:u[f.localName]}}e.parseFonts=function(f,a){return a.elements(f).map(i=>r(i,a))},e.parseFont=r,e.parseEmbedFontRef=m},984:(v,e,u)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.WmlFooter=e.WmlHeader=void 0;const r=u(120);class m extends r.OpenXmlElementBase{constructor(){super(...arguments),this.type=r.DomType.Header}}e.WmlHeader=m;class f extends r.OpenXmlElementBase{constructor(){super(...arguments),this.type=r.DomType.Footer}}e.WmlFooter=f},985:(v,e,u)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.FooterPart=e.HeaderPart=e.BaseHeaderFooterPart=void 0;const r=u(530),m=u(984);class f extends r.Part{constructor(i,y,h){super(i,y),this._documentParser=h}parseXml(i){this.rootElement=this.createRootElement(),this.rootElement.children=this._documentParser.parseBodyElements(i)}}e.BaseHeaderFooterPart=f,e.HeaderPart=class extends f{createRootElement(){return new m.WmlHeader}},e.FooterPart=class extends f{createRootElement(){return new m.WmlFooter}}},932:(v,e,u)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.HtmlRenderer=void 0;const r=u(120),m=u(593),f=u(630),a=u(438),i="http://www.w3.org/1998/Math/MathML";function y(n,s,t){return d(void 0,n,s,t)}function h(n,s,t){return d("http://www.w3.org/2000/svg",n,s,t)}function d(n,s,t,l){var b=n?document.createElementNS(n,s):document.createElement(s);return Object.assign(b,t),l&&g(b,l),b}function p(n){n.innerHTML=""}function g(n,s){s.forEach(t=>n.appendChild((0,m.isString)(t)?document.createTextNode(t):t))}function w(n){return y("style",{innerHTML:n})}function P(n,s){n.appendChild(document.createComment(s))}e.HtmlRenderer=class{constructor(n){this.htmlDocument=n,this.className="docx",this.styleMap={},this.currentPart=null,this.tableVerticalMerges=[],this.currentVerticalMerge=null,this.tableCellPositions=[],this.currentCellPosition=null,this.footnoteMap={},this.endnoteMap={},this.currentEndnoteIds=[],this.usedHederFooterParts=[],this.currentTabs=[],this.tabsTimeout=0,this.createElement=y}render(n,s,t=null,l){var b;this.document=n,this.options=l,this.className=l.className,this.rootSelector=l.inWrapper?`.${this.className}-wrapper`:":root",this.styleMap=null,p(t=t||s),p(s),P(t,"docxjs library predefined styles"),t.appendChild(this.renderDefaultStyle()),!window.MathMLElement&&l.useMathMLPolyfill&&(P(t,"docxjs mathml polyfill styles"),t.appendChild(w(a.default))),n.themePart&&(P(t,"docxjs document theme values"),this.renderTheme(n.themePart,t)),n.stylesPart!=null&&(this.styleMap=this.processStyles(n.stylesPart.styles),P(t,"docxjs document styles"),t.appendChild(this.renderStyles(n.stylesPart.styles))),n.numberingPart&&(this.prodessNumberings(n.numberingPart.domNumberings),P(t,"docxjs document numbering styles"),t.appendChild(this.renderNumbering(n.numberingPart.domNumberings,t))),n.footnotesPart&&(this.footnoteMap=(0,m.keyBy)(n.footnotesPart.notes,E=>E.id)),n.endnotesPart&&(this.endnoteMap=(0,m.keyBy)(n.endnotesPart.notes,E=>E.id)),n.settingsPart&&(this.defaultTabSize=(b=n.settingsPart.settings)===null||b===void 0?void 0:b.defaultTabStop),!l.ignoreFonts&&n.fontTablePart&&this.renderFontTable(n.fontTablePart,t);var k=this.renderSections(n.documentPart.body);this.options.inWrapper?s.appendChild(this.renderWrapper(k)):g(s,k),this.refreshTabStops()}renderTheme(n,s){var t,l;const b={},k=(t=n.theme)===null||t===void 0?void 0:t.fontScheme;k&&(k.majorFont&&(b["--docx-majorHAnsi-font"]=k.majorFont.latinTypeface),k.minorFont&&(b["--docx-minorHAnsi-font"]=k.minorFont.latinTypeface));const E=(l=n.theme)===null||l===void 0?void 0:l.colorScheme;if(E)for(let[C,o]of Object.entries(E.colors))b[`--docx-${C}-color`]=`#${o}`;const _=this.styleToString(`.${this.className}`,b);s.appendChild(w(_))}renderFontTable(n,s){for(let t of n.fonts)for(let l of t.embedFontRefs)this.document.loadFont(l.id,l.key).then(b=>{const k={"font-family":t.name,src:`url(${b})`};l.type!="bold"&&l.type!="boldItalic"||(k["font-weight"]="bold"),l.type!="italic"&&l.type!="boldItalic"||(k["font-style"]="italic"),P(s,`docxjs ${t.name} font`);const E=this.styleToString("@font-face",k);s.appendChild(w(E)),this.refreshTabStops()})}processStyleName(n){return n?`${this.className}_${(0,m.escapeClassName)(n)}`:this.className}processStyles(n){const s=(0,m.keyBy)(n.filter(l=>l.id!=null),l=>l.id);for(const l of n.filter(b=>b.basedOn)){var t=s[l.basedOn];if(t){l.paragraphProps=(0,m.mergeDeep)(l.paragraphProps,t.paragraphProps),l.runProps=(0,m.mergeDeep)(l.runProps,t.runProps);for(const b of t.styles){const k=l.styles.find(E=>E.target==b.target);k?this.copyStyleProperties(b.values,k.values):l.styles.push(Object.assign(Object.assign({},b),{values:Object.assign({},b.values)}))}}else this.options.debug&&console.warn(`Can't find base style ${l.basedOn}`)}for(let l of n)l.cssName=this.processStyleName(l.id);return s}prodessNumberings(n){var s;for(let t of n.filter(l=>l.pStyleName)){const l=this.findStyle(t.pStyleName);!((s=l==null?void 0:l.paragraphProps)===null||s===void 0)&&s.numbering&&(l.paragraphProps.numbering.level=t.level)}}processElement(n){if(n.children)for(var s of n.children)s.parent=n,s.type==r.DomType.Table?this.processTable(s):this.processElement(s)}processTable(n){for(var s of n.children)for(var t of s.children)t.cssStyle=this.copyStyleProperties(n.cellStyle,t.cssStyle,["border-left","border-right","border-top","border-bottom","padding-left","padding-right","padding-top","padding-bottom"]),this.processElement(t)}copyStyleProperties(n,s,t=null){if(!n)return s;for(var l of(s==null&&(s={}),t==null&&(t=Object.getOwnPropertyNames(n)),t))n.hasOwnProperty(l)&&!s.hasOwnProperty(l)&&(s[l]=n[l]);return s}createSection(n,s){var t=this.createElement("section",{className:n});return s&&(s.pageMargins&&(t.style.paddingLeft=s.pageMargins.left,t.style.paddingRight=s.pageMargins.right,t.style.paddingTop=s.pageMargins.top,t.style.paddingBottom=s.pageMargins.bottom),s.pageSize&&(this.options.ignoreWidth||(t.style.width=s.pageSize.width),this.options.ignoreHeight||(t.style.minHeight=s.pageSize.height)),s.columns&&s.columns.numberOfColumns&&(t.style.columnCount=`${s.columns.numberOfColumns}`,t.style.columnGap=s.columns.space,s.columns.separator&&(t.style.columnRule="1px solid black"))),t}renderSections(n){const s=[];this.processElement(n);const t=this.splitBySection(n.children);let l=null;for(let k=0,E=t.length;ko.type=="first"):null)!==null&&k!==void 0?k:t%2==1?n.find(o=>o.type=="even"):null)!==null&&E!==void 0?E:n.find(o=>o.type=="default"),C=_&&this.document.findPartByRelId(_.id,this.document.documentPart);C&&(this.currentPart=C,this.usedHederFooterParts.includes(C.path)||(this.processElement(C.rootElement),this.usedHederFooterParts.push(C.path)),this.renderElements([C.rootElement],b),this.currentPart=null)}}isPageBreakElement(n){return n.type==r.DomType.Break&&(n.break=="lastRenderedPageBreak"?!this.options.ignoreLastRenderedPageBreak:n.break=="page")}splitBySection(n){var s,t={sectProps:null,elements:[]},l=[t];for(let R of n){if(R.type==r.DomType.Paragraph){const V=this.findStyle(R.styleName);!((s=V==null?void 0:V.paragraphProps)===null||s===void 0)&&s.pageBreakBefore&&(t.sectProps=b,t={sectProps:null,elements:[]},l.push(t))}if(t.elements.push(R),R.type==r.DomType.Paragraph){const V=R;var b=V.sectionProps,k=-1,E=-1;if(this.options.breakPages&&V.children&&(k=V.children.findIndex(F=>{var q,W;return(E=(W=(q=F.children)===null||q===void 0?void 0:q.findIndex(this.isPageBreakElement.bind(this)))!==null&&W!==void 0?W:-1)!=-1})),(b||k!=-1)&&(t.sectProps=b,t={sectProps:null,elements:[]},l.push(t)),k!=-1){let F=V.children[k],q=E=0;R--)l[R].sectProps==null?l[R].sectProps=o:o=l[R].sectProps;return l}renderWrapper(n){return this.createElement("div",{className:`${this.className}-wrapper`},n)}renderDefaultStyle(){var n=this.className;return w(` +.${n}-wrapper { background: gray; padding: 30px; padding-bottom: 0px; display: flex; flex-flow: column; align-items: center; } +.${n}-wrapper>section.${n} { background: white; box-shadow: 0 0 10px rgba(0, 0, 0, 0.5); margin-bottom: 30px; } +.${n} { color: black; hyphens: auto; } +section.${n} { box-sizing: border-box; display: flex; flex-flow: column nowrap; position: relative; overflow: hidden; } +section.${n}>article { margin-bottom: auto; z-index: 1; } +section.${n}>footer { z-index: 1; } +.${n} table { border-collapse: collapse; } +.${n} table td, .${n} table th { vertical-align: top; } +.${n} p { margin: 0pt; min-height: 1em; } +.${n} span { white-space: pre-wrap; overflow-wrap: break-word; } +.${n} a { color: inherit; text-decoration: inherit; } +`)}renderNumbering(n,s){var t="",l=[];for(var b of n){var k=`p.${this.numberingClass(b.id,b.level)}`,E="none";if(b.bullet){let _=`--${this.className}-${b.bullet.src}`.toLowerCase();t+=this.styleToString(`${k}:before`,{content:"' '",display:"inline-block",background:`var(${_})`},b.bullet.style),this.document.loadNumberingImage(b.bullet.src).then(C=>{var o=`${this.rootSelector} { ${_}: url(${C}) }`;s.appendChild(w(o))})}else if(b.levelText){let _=this.numberingCounter(b.id,b.level);const C=_+" "+(b.start-1);b.level>0&&(t+=this.styleToString(`p.${this.numberingClass(b.id,b.level-1)}`,{"counter-reset":C})),l.push(C),t+=this.styleToString(`${k}:before`,Object.assign({content:this.levelTextToContent(b.levelText,b.suff,b.id,this.numFormatToCssValue(b.format)),"counter-increment":_},b.rStyle))}else E=this.numFormatToCssValue(b.format);t+=this.styleToString(k,Object.assign({display:"list-item","list-style-position":"inside","list-style-type":E},b.pStyle))}return l.length>0&&(t+=this.styleToString(this.rootSelector,{"counter-reset":l.join(" ")})),w(t)}renderStyles(n){var s,t="";const l=this.styleMap,b=(0,m.keyBy)(n.filter(C=>C.isDefault),C=>C.target);for(const C of n){var k=C.styles;if(C.linked){var E=C.linked&&l[C.linked];E?k=k.concat(E.styles):this.options.debug&&console.warn(`Can't find linked style ${C.linked}`)}for(const o of k){var _=`${(s=C.target)!==null&&s!==void 0?s:""}.${C.cssName}`;C.target!=o.target&&(_+=` ${o.target}`),b[C.target]==C&&(_=`.${this.className} ${C.target}, `+_),t+=this.styleToString(_,o.values)}}return w(t)}renderNotes(n,s,t){var l=n.map(k=>s[k]).filter(k=>k);if(l.length>0){var b=this.createElement("ol",null,this.renderElements(l));t.appendChild(b)}}renderElement(n){switch(n.type){case r.DomType.Paragraph:return this.renderParagraph(n);case r.DomType.BookmarkStart:return this.renderBookmarkStart(n);case r.DomType.BookmarkEnd:return null;case r.DomType.Run:return this.renderRun(n);case r.DomType.Table:return this.renderTable(n);case r.DomType.Row:return this.renderTableRow(n);case r.DomType.Cell:return this.renderTableCell(n);case r.DomType.Hyperlink:return this.renderHyperlink(n);case r.DomType.Drawing:return this.renderDrawing(n);case r.DomType.Image:return this.renderImage(n);case r.DomType.Text:case r.DomType.Text:return this.renderText(n);case r.DomType.DeletedText:return this.renderDeletedText(n);case r.DomType.Tab:return this.renderTab(n);case r.DomType.Symbol:return this.renderSymbol(n);case r.DomType.Break:return this.renderBreak(n);case r.DomType.Footer:return this.renderContainer(n,"footer");case r.DomType.Header:return this.renderContainer(n,"header");case r.DomType.Footnote:case r.DomType.Endnote:return this.renderContainer(n,"li");case r.DomType.FootnoteReference:return this.renderFootnoteReference(n);case r.DomType.EndnoteReference:return this.renderEndnoteReference(n);case r.DomType.NoBreakHyphen:return this.createElement("wbr");case r.DomType.VmlPicture:return this.renderVmlPicture(n);case r.DomType.VmlElement:return this.renderVmlElement(n);case r.DomType.MmlMath:return this.renderContainerNS(n,i,"math",{xmlns:i});case r.DomType.MmlMathParagraph:return this.renderContainer(n,"span");case r.DomType.MmlFraction:return this.renderContainerNS(n,i,"mfrac");case r.DomType.MmlBase:return this.renderContainerNS(n,i,n.parent.type==r.DomType.MmlMatrixRow?"mtd":"mrow");case r.DomType.MmlNumerator:case r.DomType.MmlDenominator:case r.DomType.MmlFunction:case r.DomType.MmlLimit:case r.DomType.MmlBox:return this.renderContainerNS(n,i,"mrow");case r.DomType.MmlGroupChar:return this.renderMmlGroupChar(n);case r.DomType.MmlLimitLower:return this.renderContainerNS(n,i,"munder");case r.DomType.MmlMatrix:return this.renderContainerNS(n,i,"mtable");case r.DomType.MmlMatrixRow:return this.renderContainerNS(n,i,"mtr");case r.DomType.MmlRadical:return this.renderMmlRadical(n);case r.DomType.MmlSuperscript:return this.renderContainerNS(n,i,"msup");case r.DomType.MmlSubscript:return this.renderContainerNS(n,i,"msub");case r.DomType.MmlDegree:case r.DomType.MmlSuperArgument:case r.DomType.MmlSubArgument:return this.renderContainerNS(n,i,"mn");case r.DomType.MmlFunctionName:return this.renderContainerNS(n,i,"ms");case r.DomType.MmlDelimiter:return this.renderMmlDelimiter(n);case r.DomType.MmlRun:return this.renderMmlRun(n);case r.DomType.MmlNary:return this.renderMmlNary(n);case r.DomType.MmlPreSubSuper:return this.renderMmlPreSubSuper(n);case r.DomType.MmlBar:return this.renderMmlBar(n);case r.DomType.MmlEquationArray:return this.renderMllList(n);case r.DomType.Inserted:return this.renderInserted(n);case r.DomType.Deleted:return this.renderDeleted(n)}return null}renderChildren(n,s){return this.renderElements(n.children,s)}renderElements(n,s){if(n==null)return null;var t=n.flatMap(l=>this.renderElement(l)).filter(l=>l!=null);return s&&g(s,t),t}renderContainer(n,s,t){return this.createElement(s,t,this.renderChildren(n))}renderContainerNS(n,s,t,l){return d(s,t,l,this.renderChildren(n))}renderParagraph(n){var s,t,l,b,k=this.createElement("p");const E=this.findStyle(n.styleName);(s=n.tabs)!==null&&s!==void 0||(n.tabs=(t=E==null?void 0:E.paragraphProps)===null||t===void 0?void 0:t.tabs),this.renderClass(n,k),this.renderChildren(n,k),this.renderStyleValues(n.cssStyle,k),this.renderCommonProperties(k.style,n);const _=(l=n.numbering)!==null&&l!==void 0?l:(b=E==null?void 0:E.paragraphProps)===null||b===void 0?void 0:b.numbering;return _&&k.classList.add(this.numberingClass(_.id,_.level)),k}renderRunProperties(n,s){this.renderCommonProperties(n,s)}renderCommonProperties(n,s){s!=null&&(s.color&&(n.color=s.color),s.fontSize&&(n["font-size"]=s.fontSize))}renderHyperlink(n){var s=this.createElement("a");if(this.renderChildren(n,s),this.renderStyleValues(n.cssStyle,s),n.href)s.href=n.href;else if(n.id){const t=this.document.documentPart.rels.find(l=>l.id==n.id&&l.targetMode==="External");s.href=t==null?void 0:t.target}return s}renderDrawing(n){var s=this.createElement("div");return s.style.display="inline-block",s.style.position="relative",s.style.textIndent="0px",this.renderChildren(n,s),this.renderStyleValues(n.cssStyle,s),s}renderImage(n){let s=this.createElement("img");return this.renderStyleValues(n.cssStyle,s),this.document&&this.document.loadDocumentImage(n.src,this.currentPart).then(t=>{s.src=t}),s}renderText(n){return this.htmlDocument.createTextNode(n.text)}renderDeletedText(n){return this.options.renderEndnotes?this.htmlDocument.createTextNode(n.text):null}renderBreak(n){return n.break=="textWrapping"?this.createElement("br"):null}renderInserted(n){return this.options.renderChanges?this.renderContainer(n,"ins"):this.renderChildren(n)}renderDeleted(n){return this.options.renderChanges?this.renderContainer(n,"del"):null}renderSymbol(n){var s=this.createElement("span");return s.style.fontFamily=n.font,s.innerHTML=`&#x${n.char};`,s}renderFootnoteReference(n){var s=this.createElement("sup");return this.currentFootnoteIds.push(n.id),s.textContent=`${this.currentFootnoteIds.length}`,s}renderEndnoteReference(n){var s=this.createElement("sup");return this.currentEndnoteIds.push(n.id),s.textContent=`${this.currentEndnoteIds.length}`,s}renderTab(n){var s,t=this.createElement("span");if(t.innerHTML=" ",this.options.experimental){t.className=this.tabStopClass();var l=(s=function(b,k){for(var E=b.parent;E!=null&&E.type!=k;)E=E.parent;return E}(n,r.DomType.Paragraph))===null||s===void 0?void 0:s.tabs;this.currentTabs.push({stops:l,span:t})}return t}renderBookmarkStart(n){var s=this.createElement("span");return s.id=n.name,s}renderRun(n){if(n.fieldRun)return null;const s=this.createElement("span");if(n.id&&(s.id=n.id),this.renderClass(n,s),this.renderStyleValues(n.cssStyle,s),n.verticalAlign){const t=this.createElement(n.verticalAlign);this.renderChildren(n,t),s.appendChild(t)}else this.renderChildren(n,s);return s}renderTable(n){let s=this.createElement("table");return this.tableCellPositions.push(this.currentCellPosition),this.tableVerticalMerges.push(this.currentVerticalMerge),this.currentVerticalMerge={},this.currentCellPosition={col:0,row:0},n.columns&&s.appendChild(this.renderTableColumns(n.columns)),this.renderClass(n,s),this.renderChildren(n,s),this.renderStyleValues(n.cssStyle,s),this.currentVerticalMerge=this.tableVerticalMerges.pop(),this.currentCellPosition=this.tableCellPositions.pop(),s}renderTableColumns(n){let s=this.createElement("colgroup");for(let t of n){let l=this.createElement("col");t.width&&(l.style.width=t.width),s.appendChild(l)}return s}renderTableRow(n){let s=this.createElement("tr");return this.currentCellPosition.col=0,this.renderClass(n,s),this.renderChildren(n,s),this.renderStyleValues(n.cssStyle,s),this.currentCellPosition.row++,s}renderTableCell(n){let s=this.createElement("td");const t=this.currentCellPosition.col;return n.verticalMerge?n.verticalMerge=="restart"?(this.currentVerticalMerge[t]=s,s.rowSpan=1):this.currentVerticalMerge[t]&&(this.currentVerticalMerge[t].rowSpan+=1,s.style.display="none"):this.currentVerticalMerge[t]=null,this.renderClass(n,s),this.renderChildren(n,s),this.renderStyleValues(n.cssStyle,s),n.span&&(s.colSpan=n.span),this.currentCellPosition.col+=s.colSpan,s}renderVmlPicture(n){var s=y("div");return this.renderChildren(n,s),s}renderVmlElement(n){var s,t,l=h("svg");l.setAttribute("style",n.cssStyleText);const b=this.renderVmlChildElement(n);return!((s=n.imageHref)===null||s===void 0)&&s.id&&((t=this.document)===null||t===void 0||t.loadDocumentImage(n.imageHref.id,this.currentPart).then(k=>b.setAttribute("href",k))),l.appendChild(b),requestAnimationFrame(()=>{const k=l.firstElementChild.getBBox();l.setAttribute("width",`${Math.ceil(k.x+k.width)}`),l.setAttribute("height",`${Math.ceil(k.y+k.height)}`)}),l}renderVmlChildElement(n){const s=h(n.tagName);Object.entries(n.attrs).forEach(([t,l])=>s.setAttribute(t,l));for(let t of n.children)t.type==r.DomType.VmlElement?s.appendChild(this.renderVmlChildElement(t)):s.appendChild(...(0,m.asArray)(this.renderElement(t)));return s}renderMmlRadical(n){var s;const t=n.children.find(b=>b.type==r.DomType.MmlBase);if(!((s=n.props)===null||s===void 0)&&s.hideDegree)return d(i,"msqrt",null,this.renderElements([t]));const l=n.children.find(b=>b.type==r.DomType.MmlDegree);return d(i,"mroot",null,this.renderElements([t,l]))}renderMmlDelimiter(n){var s,t;const l=[];return l.push(d(i,"mo",null,[(s=n.props.beginChar)!==null&&s!==void 0?s:"("])),l.push(...this.renderElements(n.children)),l.push(d(i,"mo",null,[(t=n.props.endChar)!==null&&t!==void 0?t:")"])),d(i,"mrow",null,l)}renderMmlNary(n){var s,t;const l=[],b=(0,m.keyBy)(n.children,R=>R.type),k=b[r.DomType.MmlSuperArgument],E=b[r.DomType.MmlSubArgument],_=k?d(i,"mo",null,(0,m.asArray)(this.renderElement(k))):null,C=E?d(i,"mo",null,(0,m.asArray)(this.renderElement(E))):null,o=d(i,"mo",null,[(t=(s=n.props)===null||s===void 0?void 0:s.char)!==null&&t!==void 0?t:"∫"]);return _||C?l.push(d(i,"munderover",null,[o,C,_])):_?l.push(d(i,"mover",null,[o,_])):C?l.push(d(i,"munder",null,[o,C])):l.push(o),l.push(...this.renderElements(b[r.DomType.MmlBase].children)),d(i,"mrow",null,l)}renderMmlPreSubSuper(n){const s=[],t=(0,m.keyBy)(n.children,C=>C.type),l=t[r.DomType.MmlSuperArgument],b=t[r.DomType.MmlSubArgument],k=l?d(i,"mo",null,(0,m.asArray)(this.renderElement(l))):null,E=b?d(i,"mo",null,(0,m.asArray)(this.renderElement(b))):null,_=d(i,"mo",null);return s.push(d(i,"msubsup",null,[_,E,k])),s.push(...this.renderElements(t[r.DomType.MmlBase].children)),d(i,"mrow",null,s)}renderMmlGroupChar(n){const s=n.props.verticalJustification==="bot"?"mover":"munder",t=this.renderContainerNS(n,i,s);return n.props.char&&t.appendChild(d(i,"mo",null,[n.props.char])),t}renderMmlBar(n){const s=this.renderContainerNS(n,i,"mrow");switch(n.props.position){case"top":s.style.textDecoration="overline";break;case"bottom":s.style.textDecoration="underline"}return s}renderMmlRun(n){const s=d(i,"ms");return this.renderClass(n,s),this.renderStyleValues(n.cssStyle,s),this.renderChildren(n,s),s}renderMllList(n){const s=d(i,"mtable");this.renderClass(n,s),this.renderStyleValues(n.cssStyle,s),this.renderChildren(n);for(let t of this.renderChildren(n))s.appendChild(d(i,"mtr",null,[d(i,"mtd",null,[t])]));return s}renderStyleValues(n,s){for(let t in n)t.startsWith("$")?s.setAttribute(t.slice(1),n[t]):s.style[t]=n[t]}renderClass(n,s){n.className&&(s.className=n.className),n.styleName&&s.classList.add(this.processStyleName(n.styleName))}findStyle(n){var s;return n&&((s=this.styleMap)===null||s===void 0?void 0:s[n])}numberingClass(n,s){return`${this.className}-num-${n}-${s}`}tabStopClass(){return`${this.className}-tab-stop`}styleToString(n,s,t=null){let l=`${n} {\r +`;for(const b in s)b.startsWith("$")||(l+=` ${b}: ${s[b]};\r +`);return t&&(l+=t),l+`}\r +`}numberingCounter(n,s){return`${this.className}-num-${n}-${s}`}levelTextToContent(n,s,t,l){var b;return`"${n.replace(/%\d*/g,k=>{let E=parseInt(k.substring(1),10)-1;return`"counter(${this.numberingCounter(t,E)}, ${l})"`})}${(b={tab:"\\9",space:"\\a0"}[s])!==null&&b!==void 0?b:""}"`}numFormatToCssValue(n){var s;return(s={none:"none",bullet:"disc",decimal:"decimal",lowerLetter:"lower-alpha",upperLetter:"upper-alpha",lowerRoman:"lower-roman",upperRoman:"upper-roman",decimalZero:"decimal-leading-zero",aiueo:"katakana",aiueoFullWidth:"katakana",chineseCounting:"simp-chinese-informal",chineseCountingThousand:"simp-chinese-informal",chineseLegalSimplified:"simp-chinese-formal",chosung:"hangul-consonant",ideographDigital:"cjk-ideographic",ideographTraditional:"cjk-heavenly-stem",ideographLegalTraditional:"trad-chinese-formal",ideographZodiac:"cjk-earthly-branch",iroha:"katakana-iroha",irohaFullWidth:"katakana-iroha",japaneseCounting:"japanese-informal",japaneseDigitalTenThousand:"cjk-decimal",japaneseLegal:"japanese-formal",thaiNumbers:"thai",koreanCounting:"korean-hangul-formal",koreanDigital:"korean-hangul-formal",koreanDigital2:"korean-hanja-informal",hebrew1:"hebrew",hebrew2:"hebrew",hindiNumbers:"devanagari",ganada:"hangul",taiwaneseCounting:"cjk-ideographic",taiwaneseCountingThousand:"cjk-ideographic",taiwaneseDigital:"cjk-decimal"}[n])!==null&&s!==void 0?s:n}refreshTabStops(){this.options.experimental&&(clearTimeout(this.tabsTimeout),this.tabsTimeout=setTimeout(()=>{const n=(0,f.computePixelToPoint)();for(let s of this.currentTabs)(0,f.updateTabStop)(s.span,s.stops,this.defaultTabSize,n)},500))}}},630:(v,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.updateTabStop=e.computePixelToPoint=void 0;const u={pos:0,leader:"none",style:"left"};function r(m){return parseFloat(m)}e.computePixelToPoint=function(m=document.body){const f=document.createElement("div");f.style.width="100pt",m.appendChild(f);const a=100/f.offsetWidth;return m.removeChild(f),a},e.updateTabStop=function(m,f,a,i=.75){const y=m.closest("p"),h=m.getBoundingClientRect(),d=y.getBoundingClientRect(),p=getComputedStyle(y),g=(f==null?void 0:f.length)>0?f.map(_=>({pos:r(_.position),leader:_.leader,style:_.style})).sort((_,C)=>_.pos-C.pos):[u],w=g[g.length-1],P=d.width*i,n=r(a);let s=w.pos+n;if(s_.style!="clear"&&_.pos>b);if(k==null)return;let E=1;if(k.style=="right"||k.style=="center"){const _=Array.from(y.querySelectorAll(`.${m.className}`)),C=_.indexOf(m)+1,o=document.createRange();o.setStart(m,1),C<_.length?o.setEndBefore(_[C]):o.setEndAfter(y);const R=k.style=="center"?.5:1,V=o.getBoundingClientRect(),F=V.left+R*V.width-(d.left-t);E=k.pos-F*i}else E=k.pos-b;switch(m.innerHTML=" ",m.style.textDecoration="inherit",m.style.wordSpacing=`${E.toFixed(0)}pt`,k.leader){case"dot":case"middleDot":m.style.textDecoration="underline",m.style.textDecorationStyle="dotted";break;case"hyphen":case"heavy":case"underscore":m.style.textDecoration="underline"}}},881:(v,e,u)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.WmlEndnote=e.WmlFootnote=e.WmlBaseNote=void 0;const r=u(120);class m{}e.WmlBaseNote=m,e.WmlFootnote=class extends m{constructor(){super(...arguments),this.type=r.DomType.Footnote}},e.WmlEndnote=class extends m{constructor(){super(...arguments),this.type=r.DomType.Endnote}}},735:(v,e,u)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.EndnotesPart=e.FootnotesPart=e.BaseNotePart=void 0;const r=u(530),m=u(881);class f extends r.Part{constructor(i,y,h){super(i,y),this._documentParser=h}}e.BaseNotePart=f,e.FootnotesPart=class extends f{constructor(a,i,y){super(a,i,y)}parseXml(a){this.notes=this._documentParser.parseNotes(a,"footnote",m.WmlFootnote)}},e.EndnotesPart=class extends f{constructor(a,i,y){super(a,i,y)}parseXml(a){this.notes=this._documentParser.parseNotes(a,"endnote",m.WmlEndnote)}}},527:(v,e,u)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.NumberingPart=void 0;const r=u(530),m=u(682);class f extends r.Part{constructor(i,y,h){super(i,y),this._documentParser=h}parseXml(i){Object.assign(this,(0,m.parseNumberingPart)(i,this._package.xmlParser)),this.domNumberings=this._documentParser.parseNumberingFile(i)}}e.NumberingPart=f},682:(v,e,u)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.parseNumberingBulletPicture=e.parseNumberingLevelOverrride=e.parseNumberingLevel=e.parseAbstractNumbering=e.parseNumbering=e.parseNumberingPart=void 0;const r=u(109),m=u(488);function f(d,p){let g={id:p.attr(d,"numId"),overrides:[]};for(let w of p.elements(d))switch(w.localName){case"abstractNumId":g.abstractId=p.attr(w,"val");break;case"lvlOverride":g.overrides.push(y(w,p))}return g}function a(d,p){let g={id:p.attr(d,"abstractNumId"),levels:[]};for(let w of p.elements(d))switch(w.localName){case"name":g.name=p.attr(w,"val");break;case"multiLevelType":g.multiLevelType=p.attr(w,"val");break;case"numStyleLink":g.numberingStyleLink=p.attr(w,"val");break;case"styleLink":g.styleLink=p.attr(w,"val");break;case"lvl":g.levels.push(i(w,p))}return g}function i(d,p){let g={level:p.intAttr(d,"ilvl")};for(let w of p.elements(d))switch(w.localName){case"start":g.start=p.attr(w,"val");break;case"lvlRestart":g.restart=p.intAttr(w,"val");break;case"numFmt":g.format=p.attr(w,"val");break;case"lvlText":g.text=p.attr(w,"val");break;case"lvlJc":g.justification=p.attr(w,"val");break;case"lvlPicBulletId":g.bulletPictureId=p.attr(w,"val");break;case"pStyle":g.paragraphStyle=p.attr(w,"val");break;case"pPr":g.paragraphProps=(0,r.parseParagraphProperties)(w,p);break;case"rPr":g.runProps=(0,m.parseRunProperties)(w,p)}return g}function y(d,p){let g={level:p.intAttr(d,"ilvl")};for(let w of p.elements(d))switch(w.localName){case"startOverride":g.start=p.intAttr(w,"val");break;case"lvl":g.numberingLevel=i(w,p)}return g}function h(d,p){var g=p.element(d,"pict"),w=g&&p.element(g,"shape"),P=w&&p.element(w,"imagedata");return P?{id:p.attr(d,"numPicBulletId"),referenceId:p.attr(P,"id"),style:p.attr(w,"style")}:null}e.parseNumberingPart=function(d,p){let g={numberings:[],abstractNumberings:[],bulletPictures:[]};for(let w of p.elements(d))switch(w.localName){case"num":g.numberings.push(f(w,p));break;case"abstractNum":g.abstractNumberings.push(a(w,p));break;case"numPicBullet":g.bulletPictures.push(h(w,p))}return g},e.parseNumbering=f,e.parseAbstractNumbering=a,e.parseNumberingLevel=i,e.parseNumberingLevelOverrride=y,e.parseNumberingBulletPicture=h},472:(v,e,u)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.XmlParser=e.serializeXmlString=e.parseXmlString=void 0;const r=u(149);e.parseXmlString=function(a,i=!1){var y;i&&(a=a.replace(/<[?].*[?]>/,"")),a=(y=a).charCodeAt(0)===65279?y.substring(1):y;const h=new DOMParser().parseFromString(a,"application/xml"),d=(p=h.getElementsByTagName("parsererror")[0])===null||p===void 0?void 0:p.textContent;var p;if(d)throw new Error(d);return h},e.serializeXmlString=function(a){return new XMLSerializer().serializeToString(a)};class m{elements(i,y=null){const h=[];for(let d=0,p=i.childNodes.length;d{Object.defineProperty(e,"__esModule",{value:!0}),e.SettingsPart=void 0;const r=u(530),m=u(846);class f extends r.Part{constructor(i,y){super(i,y)}parseXml(i){this.settings=(0,m.parseSettings)(i,this._package.xmlParser)}}e.SettingsPart=f},846:(v,e)=>{function u(r,m){var f={defaultNoteIds:[]};for(let a of m.elements(r))switch(a.localName){case"numFmt":f.nummeringFormat=m.attr(a,"val");break;case"footnote":case"endnote":f.defaultNoteIds.push(m.attr(a,"id"))}return f}Object.defineProperty(e,"__esModule",{value:!0}),e.parseNoteProperties=e.parseSettings=void 0,e.parseSettings=function(r,m){var f={};for(let a of m.elements(r))switch(a.localName){case"defaultTabStop":f.defaultTabStop=m.lengthAttr(a,"val");break;case"footnotePr":f.footnoteProps=u(a,m);break;case"endnotePr":f.endnoteProps=u(a,m);break;case"autoHyphenation":f.autoHyphenation=m.boolAttr(a,"val")}return f},e.parseNoteProperties=u},240:(v,e,u)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.StylesPart=void 0;const r=u(530);class m extends r.Part{constructor(a,i,y){super(a,i),this._documentParser=y}parseXml(a){this.styles=this._documentParser.parseStylesFile(a)}}e.StylesPart=m},893:(v,e,u)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.ThemePart=void 0;const r=u(530),m=u(55);class f extends r.Part{constructor(i,y){super(i,y)}parseXml(i){this.theme=(0,m.parseTheme)(i,this._package.xmlParser)}}e.ThemePart=f},55:(v,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.parseFontInfo=e.parseFontScheme=e.parseColorScheme=e.parseTheme=e.DmlTheme=void 0;class u{}function r(a,i){var y={name:i.attr(a,"name"),colors:{}};for(let p of i.elements(a)){var h=i.element(p,"srgbClr"),d=i.element(p,"sysClr");h?y.colors[p.localName]=i.attr(h,"val"):d&&(y.colors[p.localName]=i.attr(d,"lastClr"))}return y}function m(a,i){var y={name:i.attr(a,"name")};for(let h of i.elements(a))switch(h.localName){case"majorFont":y.majorFont=f(h,i);break;case"minorFont":y.minorFont=f(h,i)}return y}function f(a,i){return{latinTypeface:i.elementAttr(a,"latin","typeface"),eaTypeface:i.elementAttr(a,"ea","typeface"),csTypeface:i.elementAttr(a,"cs","typeface")}}e.DmlTheme=u,e.parseTheme=function(a,i){var y=new u,h=i.element(a,"themeElements");for(let d of i.elements(h))switch(d.localName){case"clrScheme":y.colorScheme=r(d,i);break;case"fontScheme":y.fontScheme=m(d,i)}return y},e.parseColorScheme=r,e.parseFontScheme=m,e.parseFontInfo=f},593:(v,e)=>{function u(r){return r&&typeof r=="object"&&!Array.isArray(r)}Object.defineProperty(e,"__esModule",{value:!0}),e.asArray=e.formatCssRules=e.parseCssRules=e.mergeDeep=e.isString=e.isObject=e.blobToBase64=e.keyBy=e.resolvePath=e.splitPath=e.escapeClassName=void 0,e.escapeClassName=function(r){return r==null?void 0:r.replace(/[ .]+/g,"-").replace(/[&]+/g,"and").toLowerCase()},e.splitPath=function(r){let m=r.lastIndexOf("/")+1;return[m==0?"":r.substring(0,m),m==0?r:r.substring(m)]},e.resolvePath=function(r,m){try{const f="http://docx/";return new URL(r,f+m).toString().substring(f.length)}catch{return`${m}${r}`}},e.keyBy=function(r,m){return r.reduce((f,a)=>(f[m(a)]=a,f),{})},e.blobToBase64=function(r){return new Promise((m,f)=>{const a=new FileReader;a.onloadend=()=>m(a.result),a.onerror=()=>f(),a.readAsDataURL(r)})},e.isObject=u,e.isString=function(r){return typeof r=="string"||r instanceof String},e.mergeDeep=function r(m,...f){var a;if(!f.length)return m;const i=f.shift();if(u(m)&&u(i))for(const y in i)u(i[y])?r((a=m[y])!==null&&a!==void 0?a:m[y]={},i[y]):m[y]=i[y];return r(m,...f)},e.parseCssRules=function(r){const m={};for(const f of r.split(";")){const[a,i]=f.split(":");m[a]=i}return m},e.formatCssRules=function(r){return Object.entries(r).map((m,f)=>`${m}: ${f}`).join(";")},e.asArray=function(r){return Array.isArray(r)?r:[r]}},320:(v,e,u)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.parseVmlElement=e.VmlElement=void 0;const r=u(149),m=u(120),f=u(472);class a extends m.OpenXmlElementBase{constructor(){super(...arguments),this.type=m.DomType.VmlElement,this.attrs={}}}function i(h){var d;return{stroke:f.default.attr(h,"color"),"stroke-width":(d=f.default.lengthAttr(h,"weight",r.LengthUsage.Emu))!==null&&d!==void 0?d:"1px"}}function y(h){return h.split(",")}e.VmlElement=a,e.parseVmlElement=function h(d,p){var g=new a;switch(d.localName){case"rect":g.tagName="rect",Object.assign(g.attrs,{width:"100%",height:"100%"});break;case"oval":g.tagName="ellipse",Object.assign(g.attrs,{cx:"50%",cy:"50%",rx:"50%",ry:"50%"});break;case"line":g.tagName="line";break;case"shape":g.tagName="g";break;case"textbox":g.tagName="foreignObject",Object.assign(g.attrs,{width:"100%",height:"100%"});break;default:return null}for(const w of f.default.attrs(d))switch(w.localName){case"style":g.cssStyleText=w.value;break;case"fillcolor":g.attrs.fill=w.value;break;case"from":const[P,n]=y(w.value);Object.assign(g.attrs,{x1:P,y1:n});break;case"to":const[s,t]=y(w.value);Object.assign(g.attrs,{x2:s,y2:t})}for(const w of f.default.elements(d))switch(w.localName){case"stroke":Object.assign(g.attrs,i(w));break;case"fill":Object.assign(g.attrs,{});break;case"imagedata":g.tagName="image",Object.assign(g.attrs,{width:"100%",height:"100%"}),g.imageHref={id:f.default.attr(w,"id"),title:f.default.attr(w,"title")};break;case"txbxContent":g.children.push(...p.parseBodyElements(w));break;default:const P=h(w,p);P&&g.children.push(P)}return g}},213:(v,e,u)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.deobfuscate=e.WordDocument=void 0;const r=u(461),m=u(380),f=u(522),a=u(448),i=u(593),y=u(527),h=u(240),d=u(985),p=u(665),g=u(162),w=u(893),P=u(735),n=u(287),s=u(177),t=[{type:r.RelationshipTypes.OfficeDocument,target:"word/document.xml"},{type:r.RelationshipTypes.ExtendedProperties,target:"docProps/app.xml"},{type:r.RelationshipTypes.CoreProperties,target:"docProps/core.xml"},{type:r.RelationshipTypes.CustomProperties,target:"docProps/custom.xml"}];class l{constructor(){this.parts=[],this.partsMap={}}static async load(E,_,C){var o=new l;return o._options=C,o._parser=_,o._package=await f.OpenXmlPackage.load(E,C),o.rels=await o._package.loadRelationships(),await Promise.all(t.map(R=>{var V;const F=(V=o.rels.find(q=>q.type===R.type))!==null&&V!==void 0?V:R;return o.loadRelationshipPart(F.target,F.type)})),o}save(E="blob"){return this._package.save(E)}async loadRelationshipPart(E,_){var C;if(this.partsMap[E])return this.partsMap[E];if(!this._package.get(E))return null;let o=null;switch(_){case r.RelationshipTypes.OfficeDocument:this.documentPart=o=new a.DocumentPart(this._package,E,this._parser);break;case r.RelationshipTypes.FontTable:this.fontTablePart=o=new m.FontTablePart(this._package,E);break;case r.RelationshipTypes.Numbering:this.numberingPart=o=new y.NumberingPart(this._package,E,this._parser);break;case r.RelationshipTypes.Styles:this.stylesPart=o=new h.StylesPart(this._package,E,this._parser);break;case r.RelationshipTypes.Theme:this.themePart=o=new w.ThemePart(this._package,E);break;case r.RelationshipTypes.Footnotes:this.footnotesPart=o=new P.FootnotesPart(this._package,E,this._parser);break;case r.RelationshipTypes.Endnotes:this.endnotesPart=o=new P.EndnotesPart(this._package,E,this._parser);break;case r.RelationshipTypes.Footer:o=new d.FooterPart(this._package,E,this._parser);break;case r.RelationshipTypes.Header:o=new d.HeaderPart(this._package,E,this._parser);break;case r.RelationshipTypes.CoreProperties:this.corePropsPart=o=new g.CorePropsPart(this._package,E);break;case r.RelationshipTypes.ExtendedProperties:this.extendedPropsPart=o=new p.ExtendedPropsPart(this._package,E);break;case r.RelationshipTypes.CustomProperties:o=new s.CustomPropsPart(this._package,E);break;case r.RelationshipTypes.Settings:this.settingsPart=o=new n.SettingsPart(this._package,E)}if(o==null)return Promise.resolve(null);if(this.partsMap[E]=o,this.parts.push(o),await o.load(),((C=o.rels)===null||C===void 0?void 0:C.length)>0){const[R]=(0,i.splitPath)(o.path);await Promise.all(o.rels.map(V=>this.loadRelationshipPart((0,i.resolvePath)(V.target,R),V.type)))}return o}async loadDocumentImage(E,_){const C=await this.loadResource(_??this.documentPart,E,"blob");return this.blobToURL(C)}async loadNumberingImage(E){const _=await this.loadResource(this.numberingPart,E,"blob");return this.blobToURL(_)}async loadFont(E,_){const C=await this.loadResource(this.fontTablePart,E,"uint8array");return C&&this.blobToURL(new Blob([b(C,_)]))}blobToURL(E){return E?this._options.useBase64URL?(0,i.blobToBase64)(E):URL.createObjectURL(E):null}findPartByRelId(E,_=null){var C,o=((C=_.rels)!==null&&C!==void 0?C:this.rels).find(V=>V.id==E);const R=_?(0,i.splitPath)(_.path)[0]:"";return o?this.partsMap[(0,i.resolvePath)(o.target,R)]:null}getPathById(E,_){const C=E.rels.find(R=>R.id==_),[o]=(0,i.splitPath)(E.path);return C?(0,i.resolvePath)(C.target,o):null}loadResource(E,_,C){const o=this.getPathById(E,_);return o?this._package.load(o,C):Promise.resolve(null)}}function b(k,E){const _=E.replace(/{|}|-/g,""),C=new Array(16);for(let o=0;o<16;o++)C[16-o-1]=parseInt(_.substr(2*o,2),16);for(let o=0;o<32;o++)k[o]=k[o]^C[o%16];return k}e.WordDocument=l,e.deobfuscate=b},583:v=>{v.exports="data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 20 100%27 preserveAspectRatio=%27none%27%3E%3Cpath d=%27m0,75 l5,0 l5,25 l10,-100%27 stroke=%27black%27 fill=%27none%27 vector-effect=%27non-scaling-stroke%27/%3E%3C/svg%3E"},626:v=>{v.exports=T}},B={};function S(v){var e=B[v];if(e!==void 0)return e.exports;var u=B[v]={id:v,exports:{}};return L[v](u,u.exports,S),u.exports}return S.m=L,S.n=v=>{var e=v&&v.__esModule?()=>v.default:()=>v;return S.d(e,{a:e}),e},S.d=(v,e)=>{for(var u in e)S.o(e,u)&&!S.o(v,u)&&Object.defineProperty(v,u,{enumerable:!0,get:e[u]})},S.o=(v,e)=>Object.prototype.hasOwnProperty.call(v,e),S.r=v=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(v,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(v,"__esModule",{value:!0})},S.b=document.baseURI||self.location.href,S(667)})())})(Be);const Re={ignoreLastRenderedPageBreak:!1};function ze(re,ce={}){return typeof re=="string"?Me(re,ce):Promise.resolve(re)}function Me(re,ce){return fetch(re,ce).then(T=>T.status!==200?Promise.reject(T):T)}async function Ie(re){let ce;return re instanceof Blob?ce=re:re instanceof Response?ce=await re.blob():re instanceof ArrayBuffer&&(ce=new Blob([re])),ce}function Fe(re,ce,T={}){if(!re)return ce.innerHTML="",Promise.resolve();let L;return re instanceof Blob?L=re:re instanceof Response?L=re.blob():re instanceof ArrayBuffer&&(L=new Blob([re])),Se.renderAsync(L,ce,ce,{...Re,...T})}const Ue={getData:ze,render:Fe,getBlob:Ie};export{Ue as d}; diff --git a/examples/dist/assets/hack-62af20e5.js b/examples/dist/assets/hack-62af20e5.js new file mode 100644 index 0000000..3bcd627 --- /dev/null +++ b/examples/dist/assets/hack-62af20e5.js @@ -0,0 +1,202 @@ +import{y as cr,z as Cs}from"./index-75869108.js";import{c as ju}from"./_commonjs-dynamic-modules-302442b1.js";import{g as t4}from"./url-de9b02cf.js";class Ls{constructor(r,e=""){typeof r=="string"?(this.el=document.createElement(r),this.el.className=e):this.el=r,this.data={}}data(r,e){return e!==void 0?(this.data[r]=e,this):this.data[r]}on(r,e){const[n,...i]=r.split(".");let a=n;return a==="mousewheel"&&/Firefox/i.test(window.navigator.userAgent)&&(a="DOMMouseScroll"),this.el.addEventListener(a,l=>{e(l);for(let d=0;d{this.css(l,`${r[l]}px`)}),this;const{offsetTop:e,offsetLeft:n,offsetHeight:i,offsetWidth:a}=this.el;return{top:e,left:n,height:i,width:a}}scroll(r){const{el:e}=this;return r!==void 0&&(r.left!==void 0&&(e.scrollLeft=r.left),r.top!==void 0&&(e.scrollTop=r.top)),{left:e.scrollLeft,top:e.scrollTop}}box(){return this.el.getBoundingClientRect()}parent(){return new Ls(this.el.parentNode)}children(...r){return arguments.length===0?this.el.childNodes:(r.forEach(e=>this.child(e)),this)}removeChild(r){this.el.removeChild(r)}child(r){let e=r;return typeof r=="string"?e=document.createTextNode(r):r instanceof Ls&&(e=r.el),this.el.appendChild(e),this}contains(r){return this.el.contains(r)}className(r){return r!==void 0?(this.el.className=r,this):this.el.className}addClass(r){return this.el.classList.add(r),this}hasClass(r){return this.el.classList.contains(r)}removeClass(r){return this.el.classList.remove(r),this}toggle(r="active"){return this.toggleClass(r)}toggleClass(r){return this.el.classList.toggle(r)}active(r=!0,e="active"){return r?this.addClass(e):this.removeClass(e),this}checked(r=!0){return this.active(r,"checked"),this}disabled(r=!0){return r?this.addClass("disabled"):this.removeClass("disabled"),this}attr(r,e){if(e!==void 0)this.el.setAttribute(r,e);else{if(typeof r=="string")return this.el.getAttribute(r);Object.keys(r).forEach(n=>{this.el.setAttribute(n,r[n])})}return this}removeAttr(r){return this.el.removeAttribute(r),this}html(r){return r!==void 0?(this.el.innerHTML=r,this):this.el.innerHTML}val(r){return r!==void 0?(this.el.value=r,this):this.el.value}focus(){this.el.focus()}cssRemoveKeys(...r){return r.forEach(e=>this.el.style.removeProperty(e)),this}css(r,e){return e===void 0&&typeof r!="string"?(Object.keys(r).forEach(n=>{this.el.style[n]=r[n]}),this):e!==void 0?(this.el.style[r]=e,this):this.el.style[r]}computedStyle(){return window.getComputedStyle(this.el,null)}show(){return this.css("display","block"),this}hide(){return this.css("display","none"),this}}const it=(t,r="")=>new Ls(t,r),os=["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"];function em(t){let r="",e=t;for(;e>=os.length;)e/=os.length,e-=1,r+=os[parseInt(e,10)%os.length];const n=t%os.length;return r+=os[n],r}function r4(t){let r=0;for(let e=0;e="0"&&t.charAt(n)<="9"?e+=t.charAt(n):r+=t.charAt(n);return[r4(r),parseInt(e,10)-1]}function La(t,r){return`${em(t)}${r+1}`}function df(t,r,e,n=()=>!0){if(r===0&&e===0)return t;const[i,a]=ls(t);return n(i,a)?La(i+r,a+e):t}class sn{constructor(r,e,n,i,a=0,l=0){this.sri=r,this.sci=e,this.eri=n,this.eci=i,this.w=a,this.h=l}set(r,e,n,i){this.sri=r,this.sci=e,this.eri=n,this.eci=i}multiple(){return this.eri-this.sri>0||this.eci-this.sci>0}includes(...r){let[e,n]=[0,0];r.length===1?[n,e]=ls(r[0]):r.length===2&&([e,n]=r);const{sri:i,sci:a,eri:l,eci:d}=this;return i<=e&&e<=l&&a<=n&&n<=d}each(r,e=()=>!0){const{sri:n,sci:i,eri:a,eci:l}=this;for(let d=n;d<=a;d+=1)if(e(d))for(let m=i;m<=l;m+=1)r(d,m)}contains(r){return this.sri<=r.sri&&this.sci<=r.sci&&this.eri>=r.eri&&this.eci>=r.eci}within(r){return this.sri>=r.sri&&this.sci>=r.sci&&this.eri<=r.eri&&this.eci<=r.eci}disjoint(r){return this.sri>r.eri||this.sci>r.eci||r.sri>this.eri||r.sci>this.eci}intersects(r){return this.sri<=r.eri&&this.sci<=r.eci&&r.sri<=this.eri&&r.sci<=this.eci}union(r){const{sri:e,sci:n,eri:i,eci:a}=this;return new sn(r.srii?r.eri:i,r.eci>a?r.eci:a)}difference(r){const e=[],n=(g,y,x,p)=>{e.push(new sn(g,y,x,p))},{sri:i,sci:a,eri:l,eci:d}=this,m=r.sri-i,b=r.sci-a,h=l-r.eri,_=d-r.eci;return m>0?(n(i,a,r.sri-1,d),h>0?(n(r.eri+1,a,l,d),b>0&&n(r.sri,a,r.eri,r.sci-1),_>0&&n(r.sri,r.eci+1,r.eri,d)):(b>0&&n(r.sri,a,l,r.sci-1),_>0&&n(r.sri,r.eci+1,l,d))):h>0&&(n(r.eri+1,a,l,d),b>0&&n(i,a,r.eri,r.sci-1),_>0&&n(i,r.eci+1,r.eri,d)),b>0?(n(i,a,l,r.sci-1),_>0?(n(i,r.eri+1,l,d),m>0&&n(i,r.sci,r.sri-1,r.eci),h>0&&n(r.sri+1,r.sci,l,r.eci)):(m>0&&n(i,r.sci,r.sri-1,d),h>0&&n(r.sri+1,r.sci,l,d))):_>0&&(n(l,r.eci+1,l,d),m>0&&n(i,a,r.sri-1,r.eci),h>0&&n(r.eri+1,a,l,r.eci)),e}size(){return[this.eri-this.sri+1,this.eci-this.sci+1]}toString(){const{sri:r,sci:e,eri:n,eci:i}=this;let a=La(e,r);return this.multiple()&&(a=`${a}:${La(i,n)}`),a}clone(){const{sri:r,sci:e,eri:n,eci:i,w:a,h:l}=this;return new sn(r,e,n,i,a,l)}equals(r){return this.eri===r.eri&&this.eci===r.eci&&this.sri===r.sri&&this.sci===r.sci}static valueOf(r){const e=r.split(":"),[n,i]=ls(e[0]);let[a,l]=[i,n];return e.length>1&&([l,a]=ls(e[1])),new sn(i,n,a,l)}}let n4=class{constructor(){this.range=new sn(0,0,0,0),this.ri=0,this.ci=0}multiple(){return this.range.multiple()}setIndexes(r,e){this.ri=r,this.ci=e}size(){return this.range.size()}};class i4{constructor(){this.x=0,this.y=0,this.ri=0,this.ci=0}}class a4{constructor(){this.undoItems=[],this.redoItems=[]}add(r){this.undoItems.push(JSON.stringify(r)),this.redoItems=[]}canUndo(){return this.undoItems.length>0}canRedo(){return this.redoItems.length>0}undo(r,e){const{undoItems:n,redoItems:i}=this;this.canUndo()&&(i.push(JSON.stringify(r)),e(JSON.parse(n.pop())))}redo(r,e){const{undoItems:n,redoItems:i}=this;this.canRedo()&&(n.push(JSON.stringify(r)),e(JSON.parse(i.pop())))}}class s4{constructor(){this.range=null,this.state="clear"}copy(r){return this.range=r,this.state="copy",this}cut(r){return this.range=r,this.state="cut",this}isCopy(){return this.state==="copy"}isCut(){return this.state==="cut"}isClear(){return this.state==="clear"}clear(){this.range=null,this.state="clear"}}class dp{constructor(r,e,n){this.ci=r,this.operator=e,this.value=n}set(r,e){this.operator=r,this.value=e}includes(r){const{operator:e,value:n}=this;return e==="all"?!0:e==="in"?n.includes(r):!1}vlength(){const{operator:r,value:e}=this;return r==="in"?e.length:0}getData(){const{ci:r,operator:e,value:n}=this;return{ci:r,operator:e,value:n}}}class pp{constructor(r,e){this.ci=r,this.order=e}asc(){return this.order==="asc"}desc(){return this.order==="desc"}}class o4{constructor(){this.ref=null,this.filters=[],this.sort=null}setData({ref:r,filters:e,sort:n}){r!=null&&(this.ref=r,this.filters=e.map(i=>new dp(i.ci,i.operator,i.value)),n&&(this.sort=new pp(n.ci,n.order)))}getData(){if(this.active()){const{ref:r,filters:e,sort:n}=this;return{ref:r,filters:e.map(i=>i.getData()),sort:n}}return{}}addFilter(r,e,n){const i=this.getFilter(r);i==null?this.filters.push(new dp(r,e,n)):i.set(e,n)}setSort(r,e){this.sort=e?new pp(r,e):null}includes(r,e){return this.active()?this.hrange().includes(r,e):!1}getSort(r){const{sort:e}=this;return e&&e.ci===r?e:null}getFilter(r){const{filters:e}=this;for(let n=0;n!e.within(r))}getFirstIncludes(r,e){for(let n=0;ne.intersects(r)))}intersects(r){for(let e=0;e{n.intersects(e)&&(e=n.union(e))}),e}add(r){this.deleteWithin(r),this._.push(r)}shift(r,e,n,i){this._.forEach(a=>{const{sri:l,sci:d,eri:m,eci:b}=a,h=a;r==="row"?l>=e?(h.sri+=n,h.eri+=n):l=e?(h.sci+=n,h.eci+=n):d{const a=i;a.within(r)&&(a.eri+=e,a.sri+=e,a.sci+=n,a.eci+=n)})}setData(r){return this._=r.map(e=>sn.valueOf(e)),this}getData(){return this._.map(r=>r.toString())}}function f4(t){return JSON.parse(JSON.stringify(t))}const tm=(t={},...r)=>(r.forEach(e=>{Object.keys(e).forEach(n=>{const i=e[n];typeof i=="string"||typeof i=="number"||typeof i=="boolean"?t[n]=i:typeof i!="function"&&!Array.isArray(i)&&i instanceof Object?(t[n]=t[n]||{},tm(t[n],i)):t[n]=i})}),t);function ah(t,r){const e=Object.keys(t);if(e.length!==Object.keys(r).length)return!1;for(let n=0;ne)=>{let e=0,n=0;return Object.keys(t).forEach(i=>{e+=r(t[i],i),n+=1}),[e,n]};function c4(t,r){const e=t[`${r}`];return delete t[`${r}`],e}function l4(t,r,e,n,i,a){let l=e,d=n,m=t;for(;mi);m+=1)d=a(m),l+=d;return[m,l-d,d]}function h4(t,r,e){let n=0;for(let i=t;i5?d.toFixed(2):d;return d.toFixed(Math.max(n,i))}const fi={cloneDeep:f4,merge:(...t)=>tm({},...t),equals:ah,arrayEquals:p4,sum:u4,rangeEach:d4,rangeSum:h4,rangeReduceIf:l4,deleteProperty:c4,numberCalc:Rs};class v4{constructor({len:r,height:e}){this._={},this.len=r,this.height=e}getHeight(r){if(this.isHide(r))return 0;const e=this.get(r);return e&&e.height?e.height:this.height}setHeight(r,e){const n=this.getOrNew(r);n.height=e}unhide(r){let e=r;for(;e>0&&(e-=1,this.isHide(e));)this.setHide(e,!1)}isHide(r){const e=this.get(r);return e&&e.hide}setHide(r,e){const n=this.getOrNew(r);e===!0?n.hide=!0:delete n.hide}setStyle(r,e){const n=this.getOrNew(r);n.style=e}sumHeight(r,e,n){return fi.rangeSum(r,e,i=>n&&n.has(i)?0:this.getHeight(i))}totalHeight(){return this.sumHeight(0,this.len)}get(r){return this._[r]}getOrNew(r){return this._[r]=this._[r]||{cells:{}},this._[r]}getCell(r,e){const n=this.get(r);return n!==void 0&&n.cells!==void 0&&n.cells[e]!==void 0?n.cells[e]:null}getCellMerge(r,e){const n=this.getCell(r,e);return n&&n.merge?n.merge:[0,0]}getCellOrNew(r,e){const n=this.getOrNew(r);return n.cells[e]=n.cells[e]||{},n.cells[e]}setCell(r,e,n,i="all"){const a=this.getOrNew(r);i==="all"?a.cells[e]=n:i==="text"?(a.cells[e]=a.cells[e]||{},a.cells[e].text=n.text):i==="format"&&(a.cells[e]=a.cells[e]||{},a.cells[e].style=n.style,n.merge&&(a.cells[e].merge=n.merge))}setCellText(r,e,n){const i=this.getCellOrNew(r,e);i.editable!==!1&&(i.text=n)}copyPaste(r,e,n,i=!1,a=()=>{}){const{sri:l,sci:d,eri:m,eci:b}=r,h=e.sri,_=e.sci,g=e.eri,y=e.eci,[x,p]=r.size(),[S,w]=e.size();let u=!0,o=0;(g0){const{text:D}=C;let j=v-_+(f-h)+2;if(u||(j-=o+1),D[0]==="=")C.text=D.replace(/[a-zA-Z]{1,3}\d+/g,L=>{let[M,B]=[0,0];return l===h?M=j-1:B=j-1,/^\d+$/.test(L)?L:df(L,M,B)});else if(x<=1&&p>1&&(h>m||g1&&(_>b||y{this.eachCells(i,a=>{let l=parseInt(i,10),d=parseInt(a,10);r.includes(i,a)&&(l=e.sri+(l-r.sri),d=e.sci+(d-r.sci)),n[l]=n[l]||{cells:{}},n[l].cells[d]=this._[i].cells[a]})}),this._=n}paste(r,e){if(r.length<=0)return;const{sri:n,sci:i}=e;r.forEach((a,l)=>{const d=n+l;a.forEach((m,b)=>{const h=i+b;this.setCellText(d,h,m)})})}insert(r,e=1){const n={};this.each((i,a)=>{let l=parseInt(i,10);l>=r&&(l+=e,this.eachCells(i,(d,m)=>{m.text&&m.text[0]==="="&&(m.text=m.text.replace(/[a-zA-Z]{1,3}\d+/g,b=>df(b,0,e,(h,_)=>_>=r)))})),n[l]=a}),this._=n,this.len+=e}delete(r,e){const n=e-r+1,i={};this.each((a,l)=>{const d=parseInt(a,10);de&&(i[d-n]=l,this.eachCells(a,(m,b)=>{b.text&&b.text[0]==="="&&(b.text=b.text.replace(/[a-zA-Z]{1,3}\d+/g,h=>df(h,0,-n,(_,g)=>g>e)))}))}),this._=i,this.len-=n}insertColumn(r,e=1){this.each((n,i)=>{const a={};this.eachCells(n,(l,d)=>{let m=parseInt(l,10);m>=r&&(m+=e,d.text&&d.text[0]==="="&&(d.text=d.text.replace(/[a-zA-Z]{1,3}\d+/g,b=>df(b,e,0,h=>h>=r)))),a[m]=d}),i.cells=a})}deleteColumn(r,e){const n=e-r+1;this.each((i,a)=>{const l={};this.eachCells(i,(d,m)=>{const b=parseInt(d,10);be&&(l[b-n]=m,m.text&&m.text[0]==="="&&(m.text=m.text.replace(/[a-zA-Z]{1,3}\d+/g,h=>df(h,-n,0,_=>_>e))))}),a.cells=l})}deleteCells(r,e="all"){r.each((n,i)=>{this.deleteCell(n,i,e)})}deleteCell(r,e,n="all"){const i=this.get(r);if(i!==null){const a=this.getCell(r,e);a!==null&&a.editable!==!1&&(n==="all"?delete i.cells[e]:n==="text"?(a.text&&delete a.text,a.value&&delete a.value):n==="format"?(a.style!==void 0&&delete a.style,a.merge&&delete a.merge):n==="merge"&&a.merge&&delete a.merge)}}maxCell(){const r=Object.keys(this._),e=r[r.length-1],n=this._[e];if(n){const{cells:i}=n,a=Object.keys(i),l=a[a.length-1];return[parseInt(e,10),parseInt(l,10)]}return[0,0]}each(r){Object.entries(this._).forEach(([e,n])=>{r(e,n)})}eachCells(r,e){this._[r]&&this._[r].cells&&Object.entries(this._[r].cells).forEach(([n,i])=>{e(n,i)})}setData(r){r.len&&(this.len=r.len,delete r.len),this._=r}getData(){const{len:r}=this;return Object.assign({len:r},this._)}}class m4{constructor({len:r,width:e,indexWidth:n,minWidth:i}){this._={},this.len=r,this.width=e,this.indexWidth=n,this.minWidth=i}setData(r){r.len&&(this.len=r.len,delete r.len),this._=r}getData(){const{len:r}=this;return Object.assign({len:r},this._)}getWidth(r){if(this.isHide(r))return 0;const e=this._[r];return e&&e.width?e.width:this.width}getOrNew(r){return this._[r]=this._[r]||{},this._[r]}setWidth(r,e){const n=this.getOrNew(r);n.width=e}unhide(r){let e=r;for(;e>0&&(e-=1,this.isHide(e));)this.setHide(e,!1)}isHide(r){const e=this._[r];return e&&e.hide}setHide(r,e){const n=this.getOrNew(r);e===!0?n.hide=!0:delete n.hide}setStyle(r,e){const n=this.getOrNew(r);n.style=e}sumWidth(r,e){return fi.rangeSum(r,e,n=>this.getWidth(n))}totalWidth(){return this.sumWidth(0,this.len)}}const y4={toolbar:{undo:"Undo",redo:"Redo",print:"Print",paintformat:"Paint format",clearformat:"Clear format",format:"Format",fontName:"Font",fontSize:"Font size",fontBold:"Font bold",fontItalic:"Font italic",underline:"Underline",strike:"Strike",color:"Text color",bgcolor:"Fill color",border:"Borders",merge:"Merge cells",align:"Horizontal align",valign:"Vertical align",textwrap:"Text wrapping",freeze:"Freeze cell",autofilter:"Filter",formula:"Functions",more:"More"},contextmenu:{copy:"Copy",cut:"Cut",paste:"Paste",pasteValue:"Paste values only",pasteFormat:"Paste format only",hide:"Hide",insertRow:"Insert row",insertColumn:"Insert column",deleteSheet:"Delete",deleteRow:"Delete row",deleteColumn:"Delete column",deleteCell:"Delete cell",deleteCellText:"Delete cell text",validation:"Data validations",cellprintable:"Enable export",cellnonprintable:"Disable export",celleditable:"Enable editing",cellnoneditable:"Disable editing"},print:{size:"Paper size",orientation:"Page orientation",orientations:["Landscape","Portrait"]},format:{normal:"Normal",text:"Plain Text",number:"Number",percent:"Percent",rmb:"RMB",usd:"USD",eur:"EUR",date:"Date",time:"Time",datetime:"Date time",duration:"Duration"},formula:{sum:"Sum",average:"Average",max:"Max",min:"Min",_if:"IF",and:"AND",or:"OR",concat:"Concat"},validation:{required:"it must be required",notMatch:"it not match its validation rule",between:"it is between {} and {}",notBetween:"it is not between {} and {}",notIn:"it is not in list",equal:"it equal to {}",notEqual:"it not equal to {}",lessThan:"it less than {}",lessThanEqual:"it less than or equal to {}",greaterThan:"it greater than {}",greaterThanEqual:"it greater than or equal to {}"},error:{pasteForMergedCell:"Unable to do this for merged cells"},calendar:{weeks:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"]},button:{next:"Next",cancel:"Cancel",remove:"Remove",save:"Save",ok:"OK"},sort:{desc:"Sort Z -> A",asc:"Sort A -> Z"},filter:{empty:"empty"},dataValidation:{mode:"Mode",range:"Cell Range",criteria:"Criteria",modeType:{cell:"Cell",column:"Colun",row:"Row"},type:{list:"List",number:"Number",date:"Date",phone:"Phone",email:"Email"},operator:{be:"between",nbe:"not betwwen",lt:"less than",lte:"less than or equal to",gt:"greater than",gte:"greater than or equal to",eq:"equal to",neq:"not equal to"}}};let sh=["en"];const rm={en:y4};function vp(t,r){if(r)for(const e of sh){if(!r[e])break;let n=r[e];const i=t.match(/(?:\\.|[^.])+/g);for(let a=0;avn(t)}function nm(t,r,e=!1){e?sh=[t]:sh.unshift(t),r&&(rm[t]=r)}const mp={phone:/^[1-9]\d{10}$/,email:/w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*/};function aa(t,r,...e){let n="";return t||(n=vn(`validation.${r}`,...e)),[t,n]}class im{constructor(r,e,n,i){this.required=e,this.value=n,this.type=r,this.operator=i,this.message=""}parseValue(r){const{type:e}=this;return e==="date"?new Date(r):e==="number"?Number(r):r}equals(r){let e=this.type===r.type&&this.required===r.required&&this.operator===r.operator;return e&&(Array.isArray(this.value)?e=fi.arrayEquals(this.value,r.value):e=this.value===r.value),e}values(){return this.value.split(",")}validate(r){const{required:e,operator:n,value:i,type:a}=this;if(e&&/^\s*$/.test(r))return aa(!1,"required");if(/^\s*$/.test(r))return[!0];if(mp[a]&&!mp[a].test(r))return aa(!1,"notMatch");if(a==="list")return aa(this.values().includes(r),"notIn");if(n){const l=this.parseValue(r);if(n==="be"){const[d,m]=i;return aa(l>=this.parseValue(d)&&l<=this.parseValue(m),"between",d,m)}if(n==="nbe"){const[d,m]=i;return aa(lthis.parseValue(m),"notBetween",d,m)}if(n==="eq")return aa(l===this.parseValue(i),"equal",i);if(n==="neq")return aa(l!==this.parseValue(i),"notEqual",i);if(n==="lt")return aa(lthis.parseValue(i),"greaterThan",i);if(n==="gte")return aa(l>=this.parseValue(i),"greaterThanEqual",i)}return[!0]}}class fc{constructor(r,e,n){this.refs=e,this.mode=r,this.validator=n}includes(r,e){const{refs:n}=this;for(let i=0;i{const i=sn.valueOf(n);i.intersects(r)?i.difference(r).forEach(l=>e.push(l.toString())):e.push(n)}),this.refs=e}getData(){const{refs:r,mode:e,validator:n}=this,{type:i,required:a,operator:l,value:d}=n;return{refs:r,mode:e,type:i,required:a,operator:l,value:d}}static valueOf({refs:r,mode:e,type:n,required:i,operator:a,value:l}){return new fc(e,r,new im(n,i,l,a))}}class g4{constructor(){this._=[],this.errors=new Map}getError(r,e){return this.errors.get(`${r}_${e}`)}validate(r,e,n){const i=this.get(r,e),a=`${r}_${e}`,{errors:l}=this;if(i!==null){const[d,m]=i.validator.validate(n);d?l.delete(a):l.set(a,m)}else l.delete(a);return!0}add(r,e,{type:n,required:i,value:a,operator:l}){const d=new im(n,i,a,l),m=this.getByValidator(d);m!==null?m.addRef(e):this._.push(new fc(r,[e],d))}getByValidator(r){for(let e=0;e{e.remove(r)})}each(r){this._.forEach(e=>r(e))}getData(){return this._.filter(r=>r.refs.length>0).map(r=>r.getData())}setData(r){this._=r.map(e=>fc.valueOf(e))}}const b4={mode:"edit",view:{height:()=>document.documentElement.clientHeight,width:()=>document.documentElement.clientWidth},showGrid:!0,showToolbar:!0,showContextmenu:!0,showBottomBar:!0,row:{len:100,height:25},col:{len:26,width:100,indexWidth:60,minWidth:60},style:{bgcolor:"#ffffff",align:"left",valign:"middle",textwrap:!1,strike:!1,underline:!1,color:"#0a0a0a",font:{name:"Arial",size:10,bold:!1,italic:!1},format:"normal"}},_4=41,x4=41,yp=(t,r)=>Object.prototype.hasOwnProperty.call(t,r);function gp(t,r,e=()=>{}){const{merges:n}=this,i=r.clone(),[a,l]=t.size(),[d,m]=r.size();return a>d&&(i.eri=r.sri+a-1),l>m&&(i.eci=r.sci+l-1),n.intersects(i)?(e(vn("error.pasteForMergedCell")),!1):!0}function bp(t,r,e,n=!1){const{rows:i,merges:a}=this;(e==="all"||e==="format")&&(i.deleteCells(r,e),a.deleteWithin(r)),i.copyPaste(t,r,e,n,(l,d,m)=>{if(m&&m.merge){const[b,h]=m.merge;if(b<=0&&h<=0)return;a.add(new sn(l,d,l+b,d+h))}})}function w4(t,r){const{clipboard:e,rows:n,merges:i}=this;n.cutPaste(t,r),i.move(t,r.sri-t.sri,r.sci-t.sci),e.clear()}function Eo(t,r,e){const{styles:n,rows:i}=this,a=i.getCellOrNew(t,r);let l={};a.style!==void 0&&(l=fi.cloneDeep(n[a.style])),l=fi.merge(l,{border:e}),a.style=this.addStyle(l)}function S4({mode:t,style:r,color:e}){const{styles:n,selector:i,rows:a}=this,{sri:l,sci:d,eri:m,eci:b}=i.range,h=!this.isSignleSelected();if(!(!h&&(t==="inside"||t==="horizontal"||t==="vertical"))){if(t==="outside"&&!h)Eo.call(this,l,d,{top:[r,e],bottom:[r,e],left:[r,e],right:[r,e]});else if(t==="none")i.range.each((_,g)=>{const y=a.getCell(_,g);if(y&&y.style!==void 0){const x=fi.cloneDeep(n[y.style]);delete x.border,y.style=this.addStyle(x)}});else if(t==="all"||t==="inside"||t==="outside"||t==="horizontal"||t==="vertical"){const _=[];for(let g=l;g<=m;g+=1)for(let y=d;y<=b;y+=1){const x=[];for(let c=0;c<_.length;c+=1){const[f,v,k,T]=_[c];if(g===f+k+1&&x.push(c),f<=g&&g<=f+k&&y===v){y+=T+1;break}}if(x.forEach(c=>_.splice(c,1)),y>b)break;const p=a.getCell(g,y);let[S,w]=[0,0];p&&p.merge&&([S,w]=p.merge,_.push([g,y,S,w]));const u=S>0&&g+S===m,o=w>0&&y+w===b;let s={};t==="all"?s={bottom:[r,e],top:[r,e],left:[r,e],right:[r,e]}:t==="inside"?(!o&&y0&&Eo.call(this,g,y,s),y+=w}}else if(t==="top"||t==="bottom")for(let _=d;_<=b;_+=1)t==="top"&&(Eo.call(this,l,_,{top:[r,e]}),_+=a.getCellMerge(l,_)[1]),t==="bottom"&&(Eo.call(this,m,_,{bottom:[r,e]}),_+=a.getCellMerge(m,_)[1]);else if(t==="left"||t==="right")for(let _=l;_<=m;_+=1)t==="left"&&(Eo.call(this,_,d,{left:[r,e]}),_+=a.getCellMerge(_,d)[0]),t==="right"&&(Eo.call(this,_,b,{right:[r,e]}),_+=a.getCellMerge(_,b)[0])}}function k4(t,r){const{rows:e}=this,n=this.freezeTotalHeight();let i=e.height;n+e.heightt);l+=1)a.has(l)||(m=e.getHeight(l),d+=m);return d-=m,d<=0?{ri:-1,top:0,height:m}:{ri:l-1,top:d,height:m}}function E4(t,r){const{cols:e}=this,n=this.freezeTotalWidth();let i=e.indexWidth;n+e.indexWidthe.getWidth(m));return l<=0?{ci:-1,left:0,width:e.indexWidth}:{ci:a-1,left:l,width:d}}class T4{constructor(r,e){this.settings=fi.merge(b4,e||{}),this.name=r||"sheet",this.freeze=[0,0],this.styles=[],this.merges=new Oh,this.rows=new v4(this.settings.row),this.cols=new m4(this.settings.col),this.validations=new g4,this.hyperlinks={},this.comments={},this.selector=new n4,this.scroll=new i4,this.history=new a4,this.clipboard=new s4,this.autoFilter=new o4,this.change=()=>{},this.exceptRowSet=new Set,this.sortedRowMap=new Map,this.unsortedRowMap=new Map}addValidation(r,e,n){this.changeData(()=>{this.validations.add(r,e,n)})}removeValidation(){const{range:r}=this.selector;this.changeData(()=>{this.validations.remove(r)})}getSelectedValidator(){const{ri:r,ci:e}=this.selector,n=this.validations.get(r,e);return n?n.validator:null}getSelectedValidation(){const{ri:r,ci:e,range:n}=this.selector,i=this.validations.get(r,e),a={ref:n.toString()};return i!==null&&(a.mode=i.mode,a.validator=i.validator),a}canUndo(){return this.history.canUndo()}canRedo(){return this.history.canRedo()}undo(){this.history.undo(this.getData(),r=>{this.setData(r)})}redo(){this.history.redo(this.getData(),r=>{this.setData(r)})}copy(){this.clipboard.copy(this.selector.range)}copyToSystemClipboard(){if(navigator.clipboard===void 0)return;let r="";const e=this.rows.getData();for(let n=this.selector.range.sri;n<=this.selector.range.eri;n+=1){if(yp(e,n)){for(let i=this.selector.range.sci;i<=this.selector.range.eci;i+=1)if(i>this.selector.range.sci&&(r+=" "),yp(e[n].cells,i)){const a=String(e[n].cells[i].text);a.indexOf(` +`)===-1&&a.indexOf(" ")===-1&&a.indexOf('"')===-1?r+=a:r+=`"${a}"`}}else for(let i=this.selector.range.sci;i<=this.selector.range.eci;i+=1)r+=" ";r+=` +`}navigator.clipboard.writeText(r).then(()=>{},n=>{console.log("text copy to the system clipboard error ",r,n)})}cut(){this.clipboard.cut(this.selector.range)}paste(r="all",e=()=>{}){const{clipboard:n,selector:i}=this;return n.isClear()||!gp.call(this,n.range,i.range,e)?!1:(this.changeData(()=>{n.isCopy()?bp.call(this,n.range,i.range,r):n.isCut()&&w4.call(this,n.range,i.range)}),!0)}pasteFromText(r){const e=r.split(`\r +`).map(a=>a.replace(/"/g,"").split(" "));e.length>0&&(e.length-=1);const{rows:n,selector:i}=this;this.changeData(()=>{n.paste(e,i.range)})}autofill(r,e,n=()=>{}){const i=this.selector.range;return gp.call(this,i,r,n)?(this.changeData(()=>{bp.call(this,i,r,e,!0)}),!0):!1}clearClipboard(){this.clipboard.clear()}calSelectedRangeByEnd(r,e){const{selector:n,rows:i,cols:a,merges:l}=this;let{sri:d,sci:m,eri:b,eci:h}=n.range;const _=n.ri,g=n.ci;let[y,x]=[r,e];return r<0&&(y=i.len-1),e<0&&(x=a.len-1),y>_?[d,b]=[_,y]:[d,b]=[y,_],x>g?[m,h]=[g,x]:[m,h]=[x,g],n.range=l.union(new sn(d,m,b,h)),n.range=l.union(n.range),n.range}calSelectedRangeByStart(r,e){const{selector:n,rows:i,cols:a,merges:l}=this;let d=l.getFirstIncludes(r,e);return d===null&&(d=new sn(r,e,r,e),r===-1&&(d.sri=0,d.eri=i.len-1),e===-1&&(d.sci=0,d.eci=a.len-1)),n.range=d,d}setSelectedCellAttr(r,e){this.changeData(()=>{const{selector:n,styles:i,rows:a}=this;if(r==="merge")e?this.merge():this.unmerge();else if(r==="border")S4.call(this,e);else if(r==="formula"){const{ri:l,ci:d,range:m}=n;if(n.multiple()){const[b,h]=n.size(),{sri:_,sci:g,eri:y,eci:x}=m;if(b>1)for(let p=g;p<=x;p+=1){const S=a.getCellOrNew(y+1,p);S.text=`=${e}(${La(p,_)}:${La(p,y)})`}else if(h>1){const p=a.getCellOrNew(l,x+1);p.text=`=${e}(${La(g,l)}:${La(x,l)})`}}else{const b=a.getCellOrNew(l,d);b.text=`=${e}()`}}else n.range.each((l,d)=>{const m=a.getCellOrNew(l,d);let b={};if(m.style!==void 0&&(b=fi.cloneDeep(i[m.style])),r==="format")b.format=e,m.style=this.addStyle(b);else if(r==="font-bold"||r==="font-italic"||r==="font-name"||r==="font-size"){const h={};h[r.split("-")[1]]=e,b.font=Object.assign(b.font||{},h),m.style=this.addStyle(b)}else r==="strike"||r==="textwrap"||r==="underline"||r==="align"||r==="valign"||r==="color"||r==="bgcolor"?(b[r]=e,m.style=this.addStyle(b)):m[r]=e})})}setSelectedCellText(r,e="input"){const{autoFilter:n,selector:i,rows:a}=this,{ri:l,ci:d}=i;let m=l;this.unsortedRowMap.has(l)&&(m=this.unsortedRowMap.get(l));const b=a.getCell(m,d),h=b?b.text:"";if(this.setCellText(m,d,r,e),n.active()){const _=n.getFilter(d);if(_){const g=_.value.findIndex(y=>y===h);g>=0&&_.value.splice(g,1,r)}}}getSelectedCell(){const{ri:r,ci:e}=this.selector;let n=r;return this.unsortedRowMap.has(r)&&(n=this.unsortedRowMap.get(r)),this.rows.getCell(n,e)}xyInSelectedRect(r,e){const{left:n,top:i,width:a,height:l}=this.getSelectedRect(),d=r-this.cols.indexWidth,m=e-this.rows.height;return d>n&&di&&m0&&w>h&&(x=h),S>0&&S>_&&(p=_),{l:h,t:_,left:x,top:p,height:g,width:y,scroll:e}}getCellRectByXY(r,e){const{scroll:n,merges:i,rows:a,cols:l}=this;let{ri:d,top:m,height:b}=k4.call(this,e,n.y),{ci:h,left:_,width:g}=E4.call(this,r,n.x);if(h===-1&&(g=l.totalWidth()),d===-1&&(b=a.totalHeight()),d>=0||h>=0){const y=i.getFirstIncludes(d,h);y&&(d=y.sri,h=y.sci,{left:_,top:m,width:g,height:b}=this.cellRect(d,h))}return{ri:d,ci:h,left:_,top:m,width:g,height:b}}isSignleSelected(){const{sri:r,sci:e,eri:n,eci:i}=this.selector.range,a=this.getCell(r,e);if(a&&a.merge){const[l,d]=a.merge;if(r+l===n&&e+d===i)return!0}return!this.selector.multiple()}canUnmerge(){const{sri:r,sci:e,eri:n,eci:i}=this.selector.range,a=this.getCell(r,e);if(a&&a.merge){const[l,d]=a.merge;if(r+l===n&&e+d===i)return!0}return!1}merge(){const{selector:r,rows:e}=this;if(this.isSignleSelected())return;const[n,i]=r.size();if(n>1||i>1){const{sri:a,sci:l}=r.range;this.changeData(()=>{const d=e.getCellOrNew(a,l);d.merge=[n-1,i-1],this.merges.add(r.range),this.rows.deleteCells(r.range),this.rows.setCell(a,l,d)})}}unmerge(){const{selector:r}=this;if(!this.isSignleSelected())return;const{sri:e,sci:n}=r.range;this.changeData(()=>{this.rows.deleteCell(e,n,"merge"),this.merges.deleteWithin(r.range)})}canAutofilter(){return!this.autoFilter.active()}autofilter(){const{autoFilter:r,selector:e}=this;this.changeData(()=>{r.active()?(r.clear(),this.exceptRowSet=new Set,this.sortedRowMap=new Map,this.unsortedRowMap=new Map):r.ref=e.range.toString()})}setAutoFilter(r,e,n,i){const{autoFilter:a}=this;a.addFilter(r,n,i),a.setSort(r,e),this.resetAutoFilter()}resetAutoFilter(){const{autoFilter:r,rows:e}=this;if(!r.active())return;const{sort:n}=r,{rset:i,fset:a}=r.filteredRows((m,b)=>e.getCell(m,b)),l=Array.from(a),d=Array.from(a);n&&l.sort((m,b)=>n.order==="asc"?m-b:n.order==="desc"?b-m:0),this.exceptRowSet=i,this.sortedRowMap=new Map,this.unsortedRowMap=new Map,l.forEach((m,b)=>{this.sortedRowMap.set(d[b],m),this.unsortedRowMap.set(m,d[b])})}deleteCell(r="all"){const{selector:e}=this;this.changeData(()=>{this.rows.deleteCells(e.range,r),(r==="all"||r==="format")&&this.merges.deleteWithin(e.range)})}insert(r,e=1){this.changeData(()=>{const{sri:n,sci:i}=this.selector.range,{rows:a,merges:l,cols:d}=this;let m=n;r==="row"?a.insert(n,e):r==="column"&&(a.insertColumn(i,e),m=i,d.len+=1),l.shift(r,m,e,(b,h,_,g)=>{const y=a.getCell(b,h);y.merge[0]+=_,y.merge[1]+=g})})}delete(r){this.changeData(()=>{const{rows:e,merges:n,selector:i,cols:a}=this,{range:l}=i,{sri:d,sci:m,eri:b,eci:h}=i.range,[_,g]=i.range.size();let y=d,x=_;r==="row"?e.delete(d,b):r==="column"&&(e.deleteColumn(m,h),y=l.sci,x=g,a.len-=1),n.shift(r,y,-x,(p,S,w,u)=>{const o=e.getCell(p,S);o.merge[0]+=w,o.merge[1]+=u,o.merge[0]===0&&o.merge[1]===0&&delete o.merge})})}scrollx(r,e){const{scroll:n,freeze:i,cols:a}=this,[,l]=i,[d,m,b]=fi.rangeReduceIf(l,a.len,0,0,r,_=>a.getWidth(_));let h=m;r>0&&(h+=b),n.x!==h&&(n.ci=r>0?d:0,n.x=h,e())}scrolly(r,e){const{scroll:n,freeze:i,rows:a}=this,[l]=i,[d,m,b]=fi.rangeReduceIf(l,a.len,0,0,r,_=>a.getHeight(_));let h=m;r>0&&(h+=b),n.y!==h&&(n.ri=r>0?d:0,n.y=h,e())}cellRect(r,e){const{rows:n,cols:i}=this,a=i.sumWidth(0,e),l=n.sumHeight(0,r),d=n.getCell(r,e);let m=i.getWidth(e),b=n.getHeight(r);if(d!==null&&d.merge){const[h,_]=d.merge;if(h>0)for(let g=1;g<=h;g+=1)b+=n.getHeight(r+g);if(_>0)for(let g=1;g<=_;g+=1)m+=i.getWidth(e+g)}return{left:a,top:l,width:m,height:b,cell:d}}getCell(r,e){return this.rows.getCell(r,e)}getCellTextOrDefault(r,e){const n=this.getCell(r,e);return n&&n.text?n.text:""}getCellStyle(r,e){const n=this.getCell(r,e);return n&&n.style!==void 0?this.styles[n.style]:null}getCellStyleOrDefault(r,e){const{styles:n,rows:i}=this,a=i.getCell(r,e),l=a&&a.style!==void 0?n[a.style]:{};return fi.merge(this.defaultStyle(),l)}getSelectedCellStyle(){const{ri:r,ci:e}=this.selector;return this.getCellStyleOrDefault(r,e)}setCellText(r,e,n,i){const{rows:a,history:l,validations:d}=this;i==="finished"?(a.setCellText(r,e,""),l.add(this.getData()),a.setCellText(r,e,n)):(a.setCellText(r,e,n),this.change(this.getData())),d.validate(r,e,n)}freezeIsActive(){const[r,e]=this.freeze;return r>0||e>0}setFreeze(r,e){this.changeData(()=>{this.freeze=[r,e]})}freezeTotalWidth(){return this.cols.sumWidth(0,this.freeze[1])}freezeTotalHeight(){return this.rows.sumHeight(0,this.freeze[0])}setRowHeight(r,e){this.changeData(()=>{this.rows.setHeight(r,e)})}setColWidth(r,e){this.changeData(()=>{this.cols.setWidth(r,e)})}viewHeight(){const{view:r,showToolbar:e,showBottomBar:n}=this.settings;let i=r.height();return n&&(i-=x4),e&&(i-=_4),i}viewWidth(){return this.settings.view.width()}freezeViewRange(){const[r,e]=this.freeze;return new sn(0,0,r-1,e-1,this.freezeTotalWidth(),this.freezeTotalHeight())}contentRange(){const{rows:r,cols:e}=this,[n,i]=r.maxCell(),a=r.sumHeight(0,n+1),l=e.sumWidth(0,i+1);return new sn(0,0,n,i,l,a)}exceptRowTotalHeight(r,e){const{exceptRowSet:n,rows:i}=this,a=Array.from(n);let l=0;return a.forEach(d=>{if(de){const m=i.getHeight(d);l+=m}}),l}viewRange(){const{scroll:r,rows:e,cols:n,freeze:i,exceptRowSet:a}=this;let{ri:l,ci:d}=r;l<=0&&([l]=i),d<=0&&([,d]=i);let[m,b]=[0,0],[h,_]=[e.len,n.len];for(let g=l;gthis.viewHeight()));g+=1);for(let g=d;gthis.viewWidth()));g+=1);return new sn(l,d,h,_,m,b)}eachMergesInView(r,e){this.merges.filterIntersects(r).forEach(n=>e(n))}hideRowsOrCols(){const{rows:r,cols:e,selector:n}=this,[i,a]=n.size(),{sri:l,sci:d,eri:m,eci:b}=n.range;if(i===r.len)for(let h=d;h<=b;h+=1)e.setHide(h,!0);else if(a===e.len)for(let h=l;h<=m;h+=1)r.setHide(h,!0)}unhideRowsOrCols(r,e){this[`${r}s`].unhide(e)}rowEach(r,e,n){let i=0;const{rows:a}=this,l=this.exceptRowSet,d=[...l];let m=0;for(let b=0;b0&&(n(b,i,h),i+=h,i>this.viewHeight()))break}}colEach(r,e,n){let i=0;const{cols:a}=this;for(let l=r;l<=e;l+=1){const d=a.getWidth(l);if(d>0&&(n(l,i,d),i+=d,i>this.viewWidth()))break}}defaultStyle(){return this.settings.style}addStyle(r){const{styles:e}=this;for(let n=0;n{if(e==="merges"||e==="rows"||e==="cols"||e==="validations")this[e].setData(r[e]);else if(e==="freeze"){const[n,i]=ls(r[e]);this.freeze=[i,n]}else e==="autofilter"?this.autoFilter.setData(r[e]):r[e]!==void 0&&(this[e]=r[e])}),this}getData(){const{name:r,freeze:e,styles:n,merges:i,rows:a,cols:l,validations:d,autoFilter:m}=this;return{name:r,freeze:La(e[1],e[0]),styles:n,merges:i.getData(),rows:a.getData(),cols:l.getData(),validations:d.getData(),autofilter:m.getData()}}}function ci(t,r,e){t.addEventListener(r,e)}function uc(t,r,e){t.removeEventListener(r,e)}function Xo(t){t.xclickoutside&&(uc(window.document.body,"click",t.xclickoutside),delete t.xclickoutside)}function zf(t,r){t.xclickoutside=e=>{e.detail===2||t.contains(e.target)||(r?r(t):(t.hide(),Xo(t)))},ci(window.document.body,"click",t.xclickoutside)}function am(t,r,e){ci(t,"mousemove",r);const n=t;n.xEvtUp=i=>{uc(t,"mousemove",r),uc(t,"mouseup",t.xEvtUp),e(i)},ci(t,"mouseup",t.xEvtUp)}function _p(t,r,e,n){let i="";Math.abs(t)>Math.abs(r)?(i=t>0?"right":"left",n(i,t,e)):(i=r>0?"down":"up",n(i,r,e))}function O4(t,{move:r,end:e}){let n=0,i=0;ci(t,"touchstart",a=>{const{pageX:l,pageY:d}=a.touches[0];n=l,i=d}),ci(t,"touchmove",a=>{if(!r)return;const{pageX:l,pageY:d}=a.changedTouches[0],m=l-n,b=d-i;(Math.abs(m)>10||Math.abs(b)>10)&&(_p(m,b,a,r),n=l,i=d),a.preventDefault()}),ci(t,"touchend",a=>{if(!e)return;const{pageX:l,pageY:d}=a.changedTouches[0],m=l-n,b=d-i;_p(m,b,a,e)})}function C4(){const t=new Map;function r(l,d){const m=()=>{const h=t.get(l);return Array.isArray(h)&&h.push(d)||!1},b=()=>t.set(l,[].concat(d));return t.has(l)&&m()||b()}function e(l,d){const m=()=>{const b=t.get(l);for(const h of b)h.call(null,...d)};return t.has(l)&&m()}function n(l,d){const m=()=>{const b=t.get(l),h=b.indexOf(d);return h>=0&&b.splice(h,1)&&t.get(l).length===0&&t.delete(l)};return t.has(l)&&m()}function i(l,d){const m=(...b)=>{d.call(null,...b),n(l,m)};return r(l,m)}function a(){t.clear()}return{get current(){return t},on:r,once:i,fire:e,removeListener:n,removeAllListeners:a}}const Ot="x-spreadsheet";class xp{constructor(r=!1,e){this.moving=!1,this.vertical=r,this.el=it("div",`${Ot}-resizer ${r?"vertical":"horizontal"}`).children(this.unhideHoverEl=it("div",`${Ot}-resizer-hover`).on("dblclick.stop",n=>this.mousedblclickHandler(n)).css("position","absolute").hide(),this.hoverEl=it("div",`${Ot}-resizer-hover`).on("mousedown.stop",n=>this.mousedownHandler(n)),this.lineEl=it("div",`${Ot}-resizer-line`).hide()).hide(),this.cRect=null,this.finishedFn=null,this.minDistance=e,this.unhideFn=()=>{}}showUnhide(r){this.unhideIndex=r,this.unhideHoverEl.show()}hideUnhide(){this.unhideHoverEl.hide()}show(r,e){const{moving:n,vertical:i,hoverEl:a,lineEl:l,el:d,unhideHoverEl:m}=this;if(n)return;this.cRect=r;const{left:b,top:h,width:_,height:g}=r;d.offset({left:i?b+_-5:b,top:i?h:h+g-5}).show(),a.offset({width:i?5:_,height:i?g:5}),l.offset({width:i?0:e.width,height:i?e.height:0}),m.offset({left:i?5-_:b,top:i?h:5-g,width:i?5:_,height:i?g:5})}hide(){this.el.offset({left:0,top:0}).hide(),this.hideUnhide()}mousedblclickHandler(){this.unhideIndex&&this.unhideFn(this.unhideIndex)}mousedownHandler(r){let e=r;const{el:n,lineEl:i,cRect:a,vertical:l,minDistance:d}=this;let m=l?a.width:a.height;i.show(),am(window,b=>{this.moving=!0,e!==null&&b.buttons===1&&(l?(m+=b.movementX,m>d&&n.css("left",`${a.left+m}px`)):(m+=b.movementY,m>d&&n.css("top",`${a.top+m}px`)),e=b)},()=>{e=null,i.hide(),this.moving=!1,this.hide(),this.finishedFn&&(m{}).on("scroll.stop",e=>{const{scrollTop:n,scrollLeft:i}=e.target;this.moveFn&&this.moveFn(this.vertical?n:i,e)})}move(r){return this.el.scroll(r),this}scroll(){return this.el.scroll()}set(r,e){const n=r-1;if(e>n){const i=this.vertical?"height":"width";this.el.css(i,`${n-15}px`).show(),this.contentEl.css(this.vertical?"width":"height","1px").css(i,`${e}px`)}else this.el.hide();return this}}const Uu=2*2-1;let oh=10;class Hu{constructor(r=!1){this.useHideInput=r,this.inputChange=()=>{},this.cornerEl=it("div",`${Ot}-selector-corner`),this.areaEl=it("div",`${Ot}-selector-area`).child(this.cornerEl).hide(),this.clipboardEl=it("div",`${Ot}-selector-clipboard`).hide(),this.autofillEl=it("div",`${Ot}-selector-autofill`).hide(),this.el=it("div",`${Ot}-selector`).css("z-index",`${oh}`).children(this.areaEl,this.clipboardEl,this.autofillEl).hide(),r&&(this.hideInput=it("input","").on("compositionend",e=>{this.inputChange(e.target.value)}),this.el.child(this.hideInputDiv=it("div","hide-input").child(this.hideInput)),this.el.child(this.hideInputDiv=it("div","hide-input").child(this.hideInput))),oh+=1}setOffset(r){return this.el.offset(r).show(),this}hide(){return this.el.hide(),this}setAreaOffset(r){const{left:e,top:n,width:i,height:a}=r,l={width:i-Uu+.8,height:a-Uu+.8,left:e-.8,top:n-.8};this.areaEl.offset(l).show(),this.useHideInput&&(this.hideInputDiv.offset(l),this.hideInput.val("").focus())}setClipboardOffset(r){const{left:e,top:n,width:i,height:a}=r;this.clipboardEl.offset({left:e,top:n,width:i-5,height:a-5})}showAutofill(r){const{left:e,top:n,width:i,height:a}=r;this.autofillEl.offset({width:i-Uu,height:a-Uu,left:e,top:n}).show()}hideAutofill(){this.autofillEl.hide()}showClipboard(){this.clipboardEl.show()}hideClipboard(){this.clipboardEl.hide()}}function Ch(t){const{data:r}=this,{left:e,top:n,width:i,height:a,scroll:l,l:d,t:m}=t,b=r.freezeTotalWidth(),h=r.freezeTotalHeight();let _=e-b;b>d&&(_-=l.x);let g=n-h;return h>m&&(g-=l.y),{left:_,top:g,width:i,height:a}}function Rh(t){const{data:r}=this,{left:e,width:n,height:i,l:a,t:l,scroll:d}=t,m=r.freezeTotalWidth();let b=e-m;return m>a&&(b-=d.x),{left:b,top:l,width:n,height:i}}function Ah(t){const{data:r}=this,{top:e,width:n,height:i,l:a,t:l,scroll:d}=t,m=r.freezeTotalHeight();let b=e-m;return m>l&&(b-=d.y),{left:a,top:b,width:n,height:i}}function fh(t){const{br:r}=this;r.setAreaOffset(Ch.call(this,t))}function R4(t){const{tl:r}=this;r.setAreaOffset(t)}function sm(t){const{t:r}=this;r.setAreaOffset(Rh.call(this,t))}function om(t){const{l:r}=this;r.setAreaOffset(Ah.call(this,t))}function fm(t){const{l:r}=this;r.setClipboardOffset(Ah.call(this,t))}function uh(t){const{br:r}=this;r.setClipboardOffset(Ch.call(this,t))}function A4(t){const{tl:r}=this;r.setClipboardOffset(t)}function um(t){const{t:r}=this;r.setClipboardOffset(Rh.call(this,t))}function Sp(t){fh.call(this,t),R4.call(this,t),sm.call(this,t),om.call(this,t)}function kp(t){uh.call(this,t),A4.call(this,t),um.call(this,t),fm.call(this,t)}class P4{constructor(r){this.inputChange=()=>{},this.data=r,this.br=new Hu(!0),this.t=new Hu,this.l=new Hu,this.tl=new Hu,this.br.inputChange=e=>{this.inputChange(e)},this.br.el.show(),this.offset=null,this.areaOffset=null,this.indexes=null,this.range=null,this.arange=null,this.el=it("div",`${Ot}-selectors`).children(this.tl.el,this.t.el,this.l.el,this.br.el).hide(),this.lastri=-1,this.lastci=-1,oh+=1}resetData(r){this.data=r,this.range=r.selector.range,this.resetAreaOffset()}hide(){this.el.hide()}resetOffset(){const{data:r,tl:e,t:n,l:i,br:a}=this,l=r.freezeTotalHeight(),d=r.freezeTotalWidth();l>0||d>0?(e.setOffset({width:d,height:l}),n.setOffset({left:d,height:l}),i.setOffset({top:l,width:d}),a.setOffset({left:d,top:l})):(e.hide(),n.hide(),i.hide(),a.setOffset({left:0,top:0}))}resetAreaOffset(){const r=this.data.getSelectedRect(),e=this.data.getClipboardRect();Sp.call(this,r),kp.call(this,e),this.resetOffset()}resetBRTAreaOffset(){const r=this.data.getSelectedRect(),e=this.data.getClipboardRect();fh.call(this,r),sm.call(this,r),uh.call(this,e),um.call(this,e),this.resetOffset()}resetBRLAreaOffset(){const r=this.data.getSelectedRect(),e=this.data.getClipboardRect();fh.call(this,r),om.call(this,r),uh.call(this,e),fm.call(this,e),this.resetOffset()}set(r,e,n=!0){const{data:i}=this,a=i.calSelectedRangeByStart(r,e),{sri:l,sci:d}=a;if(n){let[m,b]=[r,e];r<0&&(m=0),e<0&&(b=0),i.selector.setIndexes(m,b),this.indexes=[m,b]}this.moveIndexes=[l,d],this.range=a,this.resetAreaOffset(),this.el.show()}setEnd(r,e,n=!0){const{data:i,lastri:a,lastci:l}=this;if(n){if(r===a&&e===l)return;this.lastri=r,this.lastci=e}this.range=i.calSelectedRangeByEnd(r,e),Sp.call(this,this.data.getSelectedRect())}reset(){const{eri:r,eci:e}=this.data.selector.range;this.setEnd(r,e)}showAutofill(r,e){if(r===-1&&e===-1)return;const{sri:n,sci:i,eri:a,eci:l}=this.range,[d,m]=[r,e],b=n-r,h=i-e,_=a-r,g=l-e;if(h>0)this.arange=new sn(n,m,a,i-1);else if(b>0)this.arange=new sn(d,i,n-1,l);else if(g<0)this.arange=new sn(n,l+1,a,m);else if(_<0)this.arange=new sn(a+1,i,d,l);else{this.arange=null;return}if(this.arange!==null){const y=this.data.getRect(this.arange);y.width+=2,y.height+=2;const{br:x,l:p,t:S,tl:w}=this;x.showAutofill(Ch.call(this,y)),p.showAutofill(Ah.call(this,y)),S.showAutofill(Rh.call(this,y)),w.showAutofill(y)}}hideAutofill(){["br","l","t","tl"].forEach(r=>{this[r].hideAutofill()})}showClipboard(){const r=this.data.getClipboardRect();kp.call(this,r),["br","l","t","tl"].forEach(e=>{this[e].showClipboard()})}hideClipboard(){["br","l","t","tl"].forEach(r=>{this[r].hideClipboard()})}}function F4(t){t.preventDefault(),t.stopPropagation();const{filterItems:r}=this;r.length<=0||(this.itemIndex>=0&&r[this.itemIndex].toggle(),this.itemIndex-=1,this.itemIndex<0&&(this.itemIndex=r.length-1),r[this.itemIndex].toggle())}function I4(t){t.stopPropagation();const{filterItems:r}=this;r.length<=0||(this.itemIndex>=0&&r[this.itemIndex].toggle(),this.itemIndex+=1,this.itemIndex>r.length-1&&(this.itemIndex=0),r[this.itemIndex].toggle())}function Ep(t){t.preventDefault();const{filterItems:r}=this;r.length<=0||(t.stopPropagation(),this.itemIndex<0&&(this.itemIndex=0),r[this.itemIndex].el.click(),this.hide())}function M4(t){const{keyCode:r}=t;switch(t.ctrlKey&&t.stopPropagation(),r){case 37:t.stopPropagation();break;case 38:F4.call(this,t);break;case 39:t.stopPropagation();break;case 40:I4.call(this,t);break;case 13:Ep.call(this,t);break;case 9:Ep.call(this,t);break;default:t.stopPropagation();break}}class cm{constructor(r,e,n="200px"){this.filterItems=[],this.items=r,this.el=it("div",`${Ot}-suggest`).css("width",n).hide(),this.itemClick=e,this.itemIndex=-1}setOffset(r){this.el.cssRemoveKeys("top","bottom").offset(r)}hide(){const{el:r}=this;this.filterItems=[],this.itemIndex=-1,r.hide(),Xo(this.el.parent())}setItems(r){this.items=r}search(r){let{items:e}=this;if(/^\s*$/.test(r)||(e=e.filter(i=>(i.key||i).startsWith(r.toUpperCase()))),e=e.map(i=>{let{title:a}=i;a?typeof a=="function"&&(a=a()):a=i;const l=it("div",`${Ot}-item`).child(a).on("click.stop",()=>{this.itemClick(i),this.hide()});return i.label&&l.child(it("div","label").html(i.label)),l}),this.filterItems=e,e.length<=0)return;const{el:n}=this;n.html("").children(...e).show(),zf(n.parent(),()=>{this.hide()})}bindInputEvents(r){r.on("keydown",e=>M4.call(this,e))}}class Wn extends Ls{constructor(r){super("div",`${Ot}-icon`),this.iconNameEl=it("div",`${Ot}-icon-img ${r}`),this.child(this.iconNameEl)}setName(r){this.iconNameEl.className(`${Ot}-icon-img ${r}`)}}function Tp(t,r){t.setMonth(t.getMonth()+r)}function D4(t,r){const e=new Date(t);return e.setDate(r-t.getDay()+1),e}function N4(t,r,e){const n=new Date(t,r,1,23,59,59),i=[[],[],[],[],[],[]];for(let a=0;a<6;a+=1)for(let l=0;l<7;l+=1){const d=a*7+l,m=D4(n,d),b=m.getMonth()!==r,h=m.getMonth()===e.getMonth()&&m.getDate()===e.getDate();i[a][l]={d:m,disabled:b,active:h}}return i}class B4{constructor(r){this.value=r,this.cvalue=new Date(r),this.headerLeftEl=it("div","calendar-header-left"),this.bodyEl=it("tbody",""),this.buildAll(),this.el=it("div","x-spreadsheet-calendar").children(it("div","calendar-header").children(this.headerLeftEl,it("div","calendar-header-right").children(it("a","calendar-prev").on("click.stop",()=>this.prev()).child(new Wn("chevron-left")),it("a","calendar-next").on("click.stop",()=>this.next()).child(new Wn("chevron-right")))),it("table","calendar-body").children(it("thead","").child(it("tr","").children(...vn("calendar.weeks").map(e=>it("th","cell").child(e)))),this.bodyEl)),this.selectChange=()=>{}}setValue(r){this.value=r,this.cvalue=new Date(r),this.buildAll()}prev(){const{value:r}=this;Tp(r,-1),this.buildAll()}next(){const{value:r}=this;Tp(r,1),this.buildAll()}buildAll(){this.buildHeaderLeft(),this.buildBody()}buildHeaderLeft(){const{value:r}=this;this.headerLeftEl.html(`${vn("calendar.months")[r.getMonth()]} ${r.getFullYear()}`)}buildBody(){const{value:r,cvalue:e,bodyEl:n}=this,a=N4(r.getFullYear(),r.getMonth(),e).map(l=>{const d=l.map(m=>{let b="cell";return m.disabled&&(b+=" disabled"),m.active&&(b+=" active"),it("td","").child(it("div",b).on("click.stop",()=>{this.selectChange(m.d)}).child(m.d.getDate().toString()))});return it("tr","").children(...d)});n.html("").children(...a)}}class L4{constructor(){this.calendar=new B4(new Date),this.el=it("div",`${Ot}-datepicker`).child(this.calendar.el).hide()}setValue(r){const{calendar:e}=this;return typeof r=="string"?/^\d{4}-\d{1,2}-\d{1,2}$/.test(r)&&e.setValue(new Date(r.replace(new RegExp("-","g"),"/"))):r instanceof Date&&e.setValue(r),this}change(r){this.calendar.selectChange=e=>{r(e),this.hide()}}show(){this.el.show()}hide(){this.el.hide()}}function cc(){const{inputText:t}=this;if(!/^\s*$/.test(t)){const{textlineEl:r,textEl:e,areaOffset:n}=this,i=t.split(` +`),a=Math.max(...i.map(_=>_.length)),d=r.offset().width/t.length,m=(a+1)*d+5,b=this.viewFn().width-n.left-d;let h=i.length;if(m>n.width){let _=m;m>b&&(_=b,h+=parseInt(m/b,10),h+=m%b>0?1:0),e.css("width",`${_}px`)}h*=this.rowHeight,h>n.height&&e.css("height",`${h}px`)}}function j4({target:t},r){const{value:e,selectionEnd:n}=t,i=`${e.slice(0,n)}${r}${e.slice(n)}`;t.value=i,t.setSelectionRange(n+1,n+1),this.inputText=i,this.textlineEl.html(i),cc.call(this)}function U4(t){const{keyCode:r,altKey:e}=t;r!==13&&r!==9&&t.stopPropagation(),r===13&&e&&(j4.call(this,t,` +`),t.stopPropagation()),r===13&&!e&&t.preventDefault()}function H4(t){const r=t.target.value,{suggest:e,textlineEl:n,validator:i}=this,{cell:a}=this;if(a!==null)if("editable"in a&&a.editable===!0||a.editable===void 0){if(this.inputText=r,i)i.type==="list"?e.search(r):e.hide();else{const l=r.lastIndexOf("=");l!==-1?e.search(r.substring(l+1)):e.hide()}n.html(r),cc.call(this),this.change("input",r)}else t.target.value=a.text;else{if(this.inputText=r,i)i.type==="list"?e.search(r):e.hide();else{const l=r.lastIndexOf("=");l!==-1?e.search(r.substring(l+1)):e.hide()}n.html(r),cc.call(this),this.change("input",r)}}function X4(t){const{el:r}=this.textEl;setTimeout(()=>{r.focus(),r.setSelectionRange(t,t)},0)}function lm(t,r){const{textEl:e,textlineEl:n}=this;e.el.blur(),e.val(t),n.html(t),X4.call(this,r)}function z4(t){const{inputText:r,validator:e}=this;let n=0;if(e&&e.type==="list")this.inputText=t,n=this.inputText.length;else{const i=r.lastIndexOf("="),a=r.substring(0,i+1);let l=r.substring(i+1);l.indexOf(")")!==-1?l=l.substring(l.indexOf(")")):l="",this.inputText=`${a+t.key}(`,n=this.inputText.length,this.inputText+=`)${l}`}lm.call(this,this.inputText,n)}function W4(){this.suggest.setItems(this.formulas)}function V4(t){let r=t.getMonth()+1,e=t.getDate();return r<10&&(r=`0${r}`),e<10&&(e=`0${e}`),`${t.getFullYear()}-${r}-${e}`}class $4{constructor(r,e,n){this.viewFn=e,this.rowHeight=n,this.formulas=r,this.suggest=new cm(r,i=>{z4.call(this,i)}),this.datepicker=new L4,this.datepicker.change(i=>{this.setText(V4(i)),this.clear()}),this.areaEl=it("div",`${Ot}-editor-area`).children(this.textEl=it("textarea","").on("input",i=>H4.call(this,i)).on("paste.stop",()=>{}).on("keydown",i=>U4.call(this,i)),this.textlineEl=it("div","textline"),this.suggest.el,this.datepicker.el).on("mousemove.stop",()=>{}).on("mousedown.stop",()=>{}),this.el=it("div",`${Ot}-editor`).child(this.areaEl).hide(),this.suggest.bindInputEvents(this.textEl),this.areaOffset=null,this.freeze={w:0,h:0},this.cell=null,this.inputText="",this.change=()=>{}}setFreezeLengths(r,e){this.freeze.w=r,this.freeze.h=e}clear(){this.inputText!==""&&this.change("finished",this.inputText),this.cell=null,this.areaOffset=null,this.inputText="",this.el.hide(),this.textEl.val(""),this.textlineEl.html(""),W4.call(this),this.datepicker.hide()}setOffset(r,e="top"){const{textEl:n,areaEl:i,suggest:a,freeze:l,el:d}=this;if(r){this.areaOffset=r;const{left:m,top:b,width:h,height:_,l:g,t:y}=r,x={left:0,top:0};l.w>g&&l.h>y||(l.wg?x.top=l.h:l.h>y&&(x.left=l.w)),d.offset(x),i.offset({left:m-x.left-.8,top:b-x.top-.8}),n.offset({width:h-9+.8,height:_-3+.8});const p={left:0};p[e]=_,a.setOffset(p),a.hide()}}setCell(r,e){const{el:n,datepicker:i,suggest:a}=this;n.show(),this.cell=r;const l=r&&r.text||"";if(this.setText(l),this.validator=e,e){const{type:d}=e;d==="date"&&(i.show(),/^\s*$/.test(l)||i.setValue(l)),d==="list"&&(a.setItems(e.values()),a.search(""))}}setText(r){this.inputText=r,lm.call(this,r,r.length),cc.call(this)}}class Fs extends Ls{constructor(r,e=""){super("div",`${Ot}-button ${e}`),this.child(vn(`button.${r}`))}}function lc(){return window.devicePixelRatio||1}function Ph(){return lc()-.5}function rr(t){return parseInt(t*lc(),10)}function To(t){const r=rr(t);return r>0?r-.5:.5}class G4{constructor(r,e,n,i,a=0){this.x=r,this.y=e,this.width=n,this.height=i,this.padding=a,this.bgcolor="#ffffff",this.borderTop=null,this.borderRight=null,this.borderBottom=null,this.borderLeft=null}setBorders({top:r,bottom:e,left:n,right:i}){r&&(this.borderTop=r),i&&(this.borderRight=i),e&&(this.borderBottom=e),n&&(this.borderLeft=n)}innerWidth(){return this.width-this.padding*2-2}innerHeight(){return this.height-this.padding*2-2}textx(r){const{width:e,padding:n}=this;let{x:i}=this;return r==="left"?i+=n:r==="center"?i+=e/2:r==="right"&&(i+=e-n),i}texty(r,e){const{height:n,padding:i}=this;let{y:a}=this;return r==="top"?a+=i:r==="middle"?a+=n/2-e/2:r==="bottom"&&(a+=n-i-e),a}topxys(){const{x:r,y:e,width:n}=this;return[[r,e],[r+n,e]]}rightxys(){const{x:r,y:e,width:n,height:i}=this;return[[r+n,e],[r+n,e+i]]}bottomxys(){const{x:r,y:e,width:n,height:i}=this;return[[r,e+i],[r+n,e+i]]}leftxys(){const{x:r,y:e,height:n}=this;return[[r,e],[r,e+n]]}}function Op(t,r,e,n,i,a,l){const d={x:0,y:0};t==="underline"?i==="bottom"?d.y=0:i==="top"?d.y=-(a+2):d.y=-a/2:t==="strike"&&(i==="bottom"?d.y=a/2:i==="top"&&(d.y=-(a/2+2))),n==="center"?d.x=l/2:n==="right"&&(d.x=l),this.line([r-d.x,e-d.y],[r-d.x+l,e-d.y])}class hm{constructor(r,e,n){this.el=r,this.ctx=r.getContext("2d"),this.resize(e,n),this.ctx.scale(lc(),lc())}resize(r,e){this.el.style.width=`${r}px`,this.el.style.height=`${e}px`,this.el.width=rr(r),this.el.height=rr(e)}clear(){const{width:r,height:e}=this.el;return this.ctx.clearRect(0,0,r,e),this}attr(r){return Object.assign(this.ctx,r),this}save(){return this.ctx.save(),this.ctx.beginPath(),this}restore(){return this.ctx.restore(),this}beginPath(){return this.ctx.beginPath(),this}translate(r,e){return this.ctx.translate(rr(r),rr(e)),this}scale(r,e){return this.ctx.scale(r,e),this}clearRect(r,e,n,i){return this.ctx.clearRect(r,e,n,i),this}fillRect(r,e,n,i){return this.ctx.fillRect(rr(r)-.5,rr(e)-.5,rr(n),rr(i)),this}fillText(r,e,n){return this.ctx.fillText(r,rr(e),rr(n)),this}text(r,e,n={},i=!0){const{ctx:a}=this,{align:l,valign:d,font:m,color:b,strike:h,underline:_}=n,g=e.textx(l);a.save(),a.beginPath(),this.attr({textAlign:l,textBaseline:d,font:`${m.italic?"italic":""} ${m.bold?"bold":""} ${rr(m.size)}px ${m.name}`,fillStyle:b,strokeStyle:b});const y=`${r}`.split(` +`),x=e.innerWidth(),p=[];y.forEach(u=>{const o=a.measureText(u).width;if(i&&o>rr(x)){let s={w:0,len:0,start:0};for(let c=0;c=rr(x)&&(p.push(u.substr(s.start,s.len)),s={w:0,len:0,start:c}),s.len+=1,s.w+=a.measureText(u[c]).width+1;s.len>0&&p.push(u.substr(s.start,s.len))}else p.push(u)});const S=(p.length-1)*(m.size+2);let w=e.texty(d,S);return p.forEach(u=>{const o=a.measureText(u).width;this.fillText(u,g,w),h&&Op.call(this,"strike",g,w,l,d,m.size,o),_&&Op.call(this,"underline",g,w,l,d,m.size,o),w+=m.size+2}),a.restore(),this}border(r,e){const{ctx:n}=this;return n.lineWidth=Ph,n.strokeStyle=e,r==="medium"?n.lineWidth=rr(2)-.5:r==="thick"?n.lineWidth=rr(3):r==="dashed"?n.setLineDash([rr(3),rr(2)]):r==="dotted"?n.setLineDash([rr(1),rr(1)]):r==="double"&&n.setLineDash([rr(2),0]),this}line(...r){const{ctx:e}=this;if(r.length>1){e.beginPath();const[n,i]=r[0];e.moveTo(To(n),To(i));for(let a=1;a{const r=[],e=[];let n=[],i=0,a="",l=1,d="";for(let m=0;m="a"&&b<="z")n.push(b.toUpperCase());else if(b>="0"&&b<="9"||b>="A"&&b<="Z"||b===".")n.push(b);else if(b==='"'){for(m+=1;t.charAt(m)!=='"';)n.push(t.charAt(m)),m+=1;e.push(`"${n.join("")}`),n=[]}else if(b==="-"&&/[+\-*/,(]/.test(d))n.push(b);else{if(b!=="("&&n.length>0&&e.push(n.join("")),b===")"){let h=r.pop();if(i===2)try{const[_,g]=ls(e.pop()),[y,x]=ls(e.pop());let p=0;for(let S=y;S<=_;S+=1)for(let w=x;w<=g;w+=1)e.push(La(S,w)),p+=1;e.push([h,p])}catch{}else if(i===1||i===3)i===3&&e.push(a),e.push([h,l]),l=1;else for(;h!=="("&&(e.push(h),!(r.length<=0));)h=r.pop();i=0}else if(b==="="||b===">"||b==="<"){const h=t.charAt(m+1);a=b,(h==="="||h==="-")&&(a+=h,m+=1),i=3}else if(b===":")i=2;else if(b===",")i===3&&e.push(a),i=1,l+=1;else if(b==="("&&n.length>0)r.push(n.join(""));else{if(r.length>0&&(b==="+"||b==="-")){let h=r[r.length-1];if(h!=="("&&e.push(r.pop()),h==="*"||h==="/")for(;r.length>0&&(h=r[r.length-1],h!=="(");)e.push(r.pop())}else if(r.length>0){const h=r[r.length-1];(h==="*"||h==="/")&&e.push(r.pop())}r.push(b)}n=[]}d=b}}for(n.length>0&&e.push(n.join(""));r.length>0;)e.push(r.pop());return e},Z4=(t,r)=>{const[e]=t;let n=t;if(e==='"')return t.substring(1);let i=1;if(e==="-"&&(n=t.substring(1),i=-1),n[0]>="0"&&n[0]<="9")return i*Number(n);const[a,l]=ls(n);return i*r(a,l)},J4=(t,r,e,n)=>{const i=[];for(let a=0;a"||d==="<"){let m=i.pop();Number.isNaN(m)||(m=Number(m));let b=i.pop();Number.isNaN(b)||(b=Number(b));let h=!1;d==="="?h=b===m:l===">"?h=b>m:l===">="?h=b>=m:l==="<"?h=b="a"&&d<="z"||d>="A"&&d<="Z")&&n.push(l),i.push(Z4(l,e)),n.pop()}}return i[0]},dm=(t,r,e,n=[])=>{if(t[0]==="="){const i=Y4(t.substring(1));return i.length<=0?t:J4(i,r,(a,l)=>dm(e(a,l),r,e,n),n)}return t},Q4={render:dm},Fh=[{key:"SUM",title:yr("formula.sum"),render:t=>t.reduce((r,e)=>Rs("+",r,e),0)},{key:"AVERAGE",title:yr("formula.average"),render:t=>t.reduce((r,e)=>Number(r)+Number(e),0)/t.length},{key:"MAX",title:yr("formula.max"),render:t=>Math.max(...t.map(r=>Number(r)))},{key:"MIN",title:yr("formula.min"),render:t=>Math.min(...t.map(r=>Number(r)))},{key:"IF",title:yr("formula._if"),render:([t,r,e])=>t?r:e},{key:"AND",title:yr("formula.and"),render:t=>t.every(r=>r)},{key:"OR",title:yr("formula.or"),render:t=>t.some(r=>r)},{key:"CONCAT",title:yr("formula.concat"),render:t=>t.join("")}],q4=Fh,pm={};Fh.forEach(t=>{pm[t.key]=t});const Oo=t=>t,Xu=t=>{if(/^(-?\d*.?\d*)$/.test(t)){const r=Number(t).toFixed(2).toString(),[e,...n]=r.split("\\.");return[e.replace(/(\d)(?=(\d{3})+(?!\d))/g,"$1,"),...n]}return t},vf=[{key:"normal",title:yr("format.normal"),type:"string",render:Oo},{key:"text",title:yr("format.text"),type:"string",render:Oo},{key:"number",title:yr("format.number"),type:"number",label:"1,000.12",render:Xu},{key:"percent",title:yr("format.percent"),type:"number",label:"10.12%",render:t=>`${t}%`},{key:"rmb",title:yr("format.rmb"),type:"number",label:"¥10.00",render:t=>`¥${Xu(t)}`},{key:"usd",title:yr("format.usd"),type:"number",label:"$10.00",render:t=>`$${Xu(t)}`},{key:"eur",title:yr("format.eur"),type:"number",label:"€10.00",render:t=>`€${Xu(t)}`},{key:"date",title:yr("format.date"),type:"date",label:"26/09/2008",render:Oo},{key:"time",title:yr("format.time"),type:"date",label:"15:59:00",render:Oo},{key:"datetime",title:yr("format.datetime"),type:"date",label:"26/09/2008 15:59:00",render:Oo},{key:"duration",title:yr("format.duration"),type:"date",label:"24:01:00",render:Oo}],vm={};vf.forEach(t=>{vm[t.key]=t});const e3=5,t3={fillStyle:"#f4f5f8"},r3={fillStyle:"#fff",lineWidth:Ph,strokeStyle:"#e6e6e6"};function n3(){return{textAlign:"center",textBaseline:"middle",font:`500 ${rr(12)}px Source Sans Pro`,fillStyle:"#585757",lineWidth:Ph(),strokeStyle:"#e6e6e6"}}function mm(t,r,e,n=0){const{left:i,top:a,width:l,height:d}=t.cellRect(r,e);return new G4(i,a+n,l,d,e3)}function hc(t,r,e,n,i=0){const{sortedRowMap:a,rows:l,cols:d}=r;if(l.isHide(e)||d.isHide(n))return;let m=e;a.has(e)&&(m=a.get(e));const b=r.getCell(m,n);if(b===null)return;let h=!1;"editable"in b&&b.editable===!1&&(h=!0);const _=r.getCellStyleOrDefault(m,n),g=mm(r,e,n,i);g.bgcolor=_.bgcolor,_.border!==void 0&&(g.setBorders(_.border),t.strokeBorders(g)),t.rect(g,()=>{let y="";r.settings.evalPaused?y=b.text||"":y=Q4.render(b.text||"",pm,(S,w)=>r.getCellTextOrDefault(w,S)),_.format&&(y=vm[_.format].render(y));const x=Object.assign({},_.font);x.size=K4(x.size),t.text(y,g,{align:_.align,valign:_.valign,font:x,color:_.color,strike:_.strike,underline:_.underline},_.textwrap),r.validations.getError(e,n)&&t.error(g),h&&t.frozen(g)})}function i3(t){const{data:r,draw:e}=this;if(t){const{autoFilter:n}=r;if(!n.active())return;const i=n.hrange();t.intersects(i)&&i.each((a,l)=>{const d=mm(r,a,l);e.dropdown(d)})}}function zu(t,r,e,n,i){const{draw:a,data:l}=this;a.save(),a.translate(r,e).translate(n,i);const{exceptRowSet:d}=l,m=_=>{const g=d.has(_);if(g){const y=l.rows.getHeight(_);a.translate(0,-y)}return!g},b=l.exceptRowTotalHeight(t.sri,t.eri);a.save(),a.translate(0,-b),t.each((_,g)=>{hc(a,l,_,g)},_=>m(_)),a.restore();const h=new Set;a.save(),a.translate(0,-b),l.eachMergesInView(t,({sri:_,sci:g,eri:y})=>{if(!d.has(_))hc(a,l,_,g);else if(!h.has(_)){h.add(_);const x=l.rows.sumHeight(_,y+1);a.translate(0,-x)}}),a.restore(),i3.call(this,t),a.restore()}function Rp(t,r,e,n){const{draw:i}=this;i.save(),i.attr({fillStyle:"rgba(75, 137, 255, 0.08)"}).fillRect(t,r,e,n),i.restore()}function Wu(t,r,e,n,i,a){const{draw:l,data:d}=this,m=r.h,b=r.w,h=a+n,_=i+e;l.save(),l.attr(t3),(t==="all"||t==="left")&&l.fillRect(0,h,e,m),(t==="all"||t==="top")&&l.fillRect(_,0,b,n);const{sri:g,sci:y,eri:x,eci:p}=d.selector.range;l.attr(n3()),(t==="all"||t==="left")&&(d.rowEach(r.sri,r.eri,(S,w,u)=>{const o=h+w,s=S;l.line([0,o],[e,o]),g<=s&&s0&&d.rows.isHide(S-1)&&(l.save(),l.attr({strokeStyle:"#c6c6c6"}),l.line([5,o+5],[e-5,o+5]),l.restore())}),l.line([0,m+h],[e,m+h]),l.line([e,h],[e,m+h])),(t==="all"||t==="top")&&(d.colEach(r.sci,r.eci,(S,w,u)=>{const o=_+w,s=S;l.line([o,0],[o,n]),y<=s&&s0&&d.cols.isHide(S-1)&&(l.save(),l.attr({strokeStyle:"#c6c6c6"}),l.line([o+5,5],[o+5,n-5]),l.restore())}),l.line([b+_,0],[b+_,n]),l.line([0,n],[b+_,n])),l.restore()}function a3(t,r){const{draw:e}=this;e.save(),e.attr({fillStyle:"#f4f5f8"}).fillRect(0,0,t,r),e.restore()}function Vu({sri:t,sci:r,eri:e,eci:n,w:i,h:a},l,d,m,b){const{draw:h,data:_}=this,{settings:g}=_;if(h.save(),h.attr(r3).translate(l+m,d+b),!g.showGrid){h.restore();return}_.rowEach(t,e,(y,x,p)=>{y!==t&&h.line([0,x],[i,x]),y===e&&h.line([0,x+p],[i,x+p])}),_.colEach(r,n,(y,x,p)=>{y!==r&&h.line([x,0],[x,a]),y===n&&h.line([x+p,0],[x+p,a])}),h.restore()}function s3(t,r,e,n){const{draw:i,data:a}=this,l=a.viewWidth()-t,d=a.viewHeight()-r;i.save().translate(t,r).attr({strokeStyle:"rgba(75, 137, 255, .6)"}),i.line([0,n],[l,n]),i.line([e,0],[e,d]),i.restore()}class o3{constructor(r,e){this.el=r,this.draw=new hm(r,e.viewWidth(),e.viewHeight()),this.data=e}resetData(r){this.data=r,this.render()}render(){const{data:r}=this,{rows:e,cols:n}=r,i=n.indexWidth,a=e.height;this.draw.resize(r.viewWidth(),r.viewHeight()),this.clear();const l=r.viewRange(),d=r.freezeTotalWidth(),m=r.freezeTotalHeight(),{x:b,y:h}=r.scroll;Vu.call(this,l,i,a,d,m),zu.call(this,l,i,a,-b,-h),Wu.call(this,"all",l,i,a,d,m),a3.call(this,i,a);const[_,g]=r.freeze;if(_>0||g>0){if(_>0){const x=l.clone();x.sri=0,x.eri=_-1,x.h=m,Vu.call(this,x,i,a,d,0),zu.call(this,x,i,a,-b,0),Wu.call(this,"top",x,i,a,d,0)}if(g>0){const x=l.clone();x.sci=0,x.eci=g-1,x.w=d,Vu.call(this,x,i,a,0,m),Wu.call(this,"left",x,i,a,0,m),zu.call(this,x,i,a,0,-h)}const y=r.freezeViewRange();Vu.call(this,y,i,a,0,0),Wu.call(this,"all",y,i,a,0,0),zu.call(this,y,i,a,0,0),s3.call(this,i,a,d,m)}}clear(){this.draw.clear()}}const nc=[["A3",11.69,16.54],["A4",8.27,11.69],["A5",5.83,8.27],["B4",9.84,13.9],["B5",6.93,9.84]],lh=["landscape","portrait"];function dc(t){return parseInt(96*t,10)}function Ap(t){t==="cancel"?this.el.hide():this.toPrint()}function f3(t){const{paper:r}=this,{value:e}=t.target,n=nc[e];r.w=dc(n[1]),r.h=dc(n[2]),this.preview()}function u3(t){const{paper:r}=this,{value:e}=t.target,n=lh[e];r.orientation=n,this.preview()}let c3=class{constructor(r){this.paper={w:dc(nc[0][1]),h:dc(nc[0][2]),padding:50,orientation:lh[0],get width(){return this.orientation==="landscape"?this.h:this.w},get height(){return this.orientation==="landscape"?this.w:this.h}},this.data=r,this.el=it("div",`${Ot}-print`).children(it("div",`${Ot}-print-bar`).children(it("div","-title").child("Print settings"),it("div","-right").children(it("div",`${Ot}-buttons`).children(new Fs("cancel").on("click",Ap.bind(this,"cancel")),new Fs("next","primary").on("click",Ap.bind(this,"next"))))),it("div",`${Ot}-print-content`).children(this.contentEl=it("div","-content"),it("div","-sider").child(it("form","").children(it("fieldset","").children(it("label","").child(`${vn("print.size")}`),it("select","").children(...nc.map((e,n)=>it("option","").attr("value",n).child(`${e[0]} ( ${e[1]}''x${e[2]}'' )`))).on("change",f3.bind(this))),it("fieldset","").children(it("label","").child(`${vn("print.orientation")}`),it("select","").children(...lh.map((e,n)=>it("option","").attr("value",n).child(`${vn("print.orientations")[n]}`))).on("change",u3.bind(this))))))).hide()}resetData(r){this.data=r}preview(){const{data:r,paper:e}=this,{width:n,height:i,padding:a}=e,l=n-a*2,d=i-a*2,m=r.contentRange(),b=parseInt(m.h/d,10)+1,h=l/m.w;let _=a;const g=a;h>1&&(_+=(l-m.w)/2);let y=0,x=0;this.contentEl.html(""),this.canvases=[];const p={sri:0,sci:0,eri:0,eci:0};for(let S=0;S{hc(c,r,v,k,f)}),c.restore(),p.sri=p.eri,p.sci=p.eci,x+=u,this.contentEl.child(it("div",`${Ot}-canvas-card-wraper`).child(o.child(s)))}this.el.show()}toPrint(){this.el.hide();const{paper:r}=this,e=it("iframe","").hide(),{el:n}=e;window.document.body.appendChild(n);const{contentWindow:i}=n,a=i.document,l=document.createElement("style");l.innerHTML=` + @page { size: ${r.width}px ${r.height}px; }; + canvas { + page-break-before: auto; + page-break-after: always; + image-rendering: pixelated; + }; + `,a.head.appendChild(l),this.canvases.forEach(d=>{const m=d.cloneNode(!1);m.getContext("2d").drawImage(d,0,0),a.body.appendChild(m)}),i.print()}};const l3=[{key:"copy",title:yr("contextmenu.copy"),label:"Ctrl+C"},{key:"cut",title:yr("contextmenu.cut"),label:"Ctrl+X"},{key:"paste",title:yr("contextmenu.paste"),label:"Ctrl+V"},{key:"paste-value",title:yr("contextmenu.pasteValue"),label:"Ctrl+Shift+V"},{key:"paste-format",title:yr("contextmenu.pasteFormat"),label:"Ctrl+Alt+V"},{key:"divider"},{key:"insert-row",title:yr("contextmenu.insertRow")},{key:"insert-column",title:yr("contextmenu.insertColumn")},{key:"divider"},{key:"delete-row",title:yr("contextmenu.deleteRow")},{key:"delete-column",title:yr("contextmenu.deleteColumn")},{key:"delete-cell-text",title:yr("contextmenu.deleteCellText")},{key:"hide",title:yr("contextmenu.hide")},{key:"divider"},{key:"validation",title:yr("contextmenu.validation")},{key:"divider"},{key:"cell-printable",title:yr("contextmenu.cellprintable")},{key:"cell-non-printable",title:yr("contextmenu.cellnonprintable")},{key:"divider"},{key:"cell-editable",title:yr("contextmenu.celleditable")},{key:"cell-non-editable",title:yr("contextmenu.cellnoneditable")}];function h3(t){return t.key==="divider"?it("div",`${Ot}-item divider`):it("div",`${Ot}-item`).on("click",()=>{this.itemClick(t.key),this.hide()}).children(t.title(),it("div","label").child(t.label||""))}function d3(){return l3.map(t=>h3.call(this,t))}let p3=class{constructor(r,e=!1){this.menuItems=d3.call(this),this.el=it("div",`${Ot}-contextmenu`).children(...this.menuItems).hide(),this.viewFn=r,this.itemClick=()=>{},this.isHide=e,this.setMode("range")}setMode(r){const e=this.menuItems[12];r==="row-col"?e.show():e.hide()}hide(){const{el:r}=this;r.hide(),Xo(r)}setPosition(r,e){if(this.isHide)return;const{el:n}=this,{width:i}=n.show().offset(),a=this.viewFn(),l=a.height/2;let d=r;a.width-r<=i&&(d-=i),n.css("left",`${d}px`),e>l?n.css("bottom",`${a.height-e}px`).css("max-height",`${e}px`).css("top","auto"):n.css("top",`${e}px`).css("max-height",`${a.height-e}px`).css("bottom","auto"),zf(n)}};function v3(t,r){if(r.classList.contains("active"))return;const{left:e,top:n,width:i,height:a}=r.getBoundingClientRect(),l=it("div",`${Ot}-tooltip`).html(t).show();document.body.appendChild(l.el);const d=l.box();l.css("left",`${e+i/2-d.width/2}px`).css("top",`${n+a+2}px`),ci(r,"mouseleave",()=>{document.body.contains(l.el)&&document.body.removeChild(l.el)}),ci(r,"click",()=>{document.body.contains(l.el)&&document.body.removeChild(l.el)})}class Ih{constructor(r,e,n){this.tip=vn(`toolbar.${r.replace(/-[a-z]/g,i=>i[1].toUpperCase())}`),e&&(this.tip+=` (${e})`),this.tag=r,this.shortcut=e,this.value=n,this.el=this.element(),this.change=()=>{}}element(){const{tip:r}=this;return it("div",`${Ot}-toolbar-btn`).on("mouseenter",e=>{v3(r,e.target)}).attr("data-tooltip",r)}setState(){}}class wa extends Ih{dropdown(){}getValue(r){return r}element(){const{tag:r}=this;return this.dd=this.dropdown(),this.dd.change=e=>this.change(r,this.getValue(e)),super.element().child(this.dd)}setState(r){r&&(this.value=r,this.dd.setTitle(r))}}class Sa extends Ls{constructor(r,e,n,i,...a){super("div",`${Ot}-dropdown ${i}`),this.title=r,this.change=()=>{},this.headerClick=()=>{},typeof r=="string"?this.title=it("div",`${Ot}-dropdown-title`).child(r):n&&this.title.addClass("arrow-left"),this.contentEl=it("div",`${Ot}-dropdown-content`).css("width",e).hide(),this.setContentChildren(...a),this.headerEl=it("div",`${Ot}-dropdown-header`),this.headerEl.on("click",()=>{this.contentEl.css("display")!=="block"?this.show():this.hide()}).children(this.title,n?it("div",`${Ot}-icon arrow-right`).child(it("div",`${Ot}-icon-img arrow-down`)):""),this.children(this.headerEl,this.contentEl)}setContentChildren(...r){this.contentEl.html(""),r.length>0&&this.contentEl.children(...r)}setTitle(r){this.title.html(r),this.hide()}show(){const{contentEl:r}=this;r.show(),this.parent().active(),zf(this.parent(),()=>{this.hide()})}hide(){this.parent().active(!1),this.contentEl.hide(),Xo(this.parent())}}function m3(t){return it("div",`${Ot}-item`).child(new Wn(t))}class ym extends Sa{constructor(r,e){const n=new Wn(`align-${e}`),i=r.map(a=>m3(`align-${a}`).on("click",()=>{this.setTitle(a),this.change(a)}));super(n,"auto",!0,"bottom-left",...i)}setTitle(r){this.title.setName(`align-${r}`),this.hide()}}class y3 extends wa{constructor(r){super("align","",r)}dropdown(){const{value:r}=this;return new ym(["left","center","right"],r)}}class g3 extends wa{constructor(r){super("valign","",r)}dropdown(){const{value:r}=this;return new ym(["top","middle","bottom"],r)}}class Wa extends Ih{element(){const{tag:r}=this;return super.element().child(new Wn(r)).on("click",()=>this.click())}click(){this.change(this.tag,this.toggle())}setState(r){this.el.active(r)}toggle(){return this.el.toggle()}active(){return this.el.hasClass("active")}}class b3 extends Wa{constructor(){super("autofilter")}setState(){}}class _3 extends Wa{constructor(){super("font-bold","Ctrl+B")}}class x3 extends Wa{constructor(){super("font-italic","Ctrl+I")}}class w3 extends Wa{constructor(){super("strike","Ctrl+U")}}class S3 extends Wa{constructor(){super("underline","Ctrl+U")}}const k3=["#ffffff","#000100","#e7e5e6","#445569","#5b9cd6","#ed7d31","#a5a5a5","#ffc001","#4371c6","#71ae47"],E3=[["#f2f2f2","#7f7f7f","#d0cecf","#d5dce4","#deeaf6","#fce5d5","#ededed","#fff2cd","#d9e2f3","#e3efd9"],["#d8d8d8","#595959","#afabac","#adb8ca","#bdd7ee","#f7ccac","#dbdbdb","#ffe59a","#b3c6e7","#c5e0b3"],["#bfbfbf","#3f3f3f","#756f6f","#8596b0","#9cc2e6","#f4b184","#c9c9c9","#fed964","#8eaada","#a7d08c"],["#a5a5a5","#262626","#3a3839","#333f4f","#2e75b5","#c45a10","#7b7b7b","#bf8e01","#2f5596","#538136"],["#7f7f7f","#0c0c0c","#171516","#222a35","#1f4e7a","#843c0a","#525252","#7e6000","#203864","#365624"]],T3=["#c00000","#fe0000","#fdc101","#ffff01","#93d051","#00b04e","#01b0f1","#0170c1","#012060","#7030a0"];function Dl(t){return it("td","").child(it("div",`${Ot}-color-palette-cell`).on("click.stop",()=>this.change(t)).css("background-color",t))}class O3{constructor(){this.el=it("div",`${Ot}-color-palette`),this.change=()=>{};const r=it("table","").children(it("tbody","").children(it("tr",`${Ot}-theme-color-placeholders`).children(...k3.map(e=>Dl.call(this,e))),...E3.map(e=>it("tr",`${Ot}-theme-colors`).children(...e.map(n=>Dl.call(this,n)))),it("tr",`${Ot}-standard-colors`).children(...T3.map(e=>Dl.call(this,e)))));this.el.child(r)}}class Mh extends Sa{constructor(r,e){const n=new Wn(r).css("height","16px").css("border-bottom",`3px solid ${e}`),i=new O3;i.change=a=>{this.setTitle(a),this.change(a)},super(n,"auto",!1,"bottom-left",i.el)}setTitle(r){this.title.css("border-color",r),this.hide()}}const C3=[["thin",''],["medium",''],["thick",''],["dashed",''],["dotted",'']];class R3 extends Sa{constructor(r){const e=new Wn("line-type");let n=0;const i=C3.map((a,l)=>it("div",`${Ot}-item state ${r===a[0]?"checked":""}`).on("click",()=>{i[n].toggle("checked"),i[l].toggle("checked"),n=l,this.hide(),this.change(a)}).child(it("div",`${Ot}-line-type`).html(a[1])));super(e,"auto",!1,"bottom-left",...i)}}function Pp(...t){return it("table","").child(it("tbody","").children(...t))}function Fp(t){return it("td","").child(it("div",`${Ot}-border-palette-cell`).child(new Wn(`border-${t}`)).on("click",()=>{this.mode=t;const{mode:r,style:e,color:n}=this;this.change({mode:r,style:e,color:n})}))}class A3{constructor(){this.color="#000",this.style="thin",this.mode="all",this.change=()=>{},this.ddColor=new Mh("line-color",this.color),this.ddColor.change=e=>{this.color=e},this.ddType=new R3(this.style),this.ddType.change=([e])=>{this.style=e},this.el=it("div",`${Ot}-border-palette`);const r=Pp(it("tr","").children(it("td",`${Ot}-border-palette-left`).child(Pp(it("tr","").children(...["all","inside","horizontal","vertical","outside"].map(e=>Fp.call(this,e))),it("tr","").children(...["left","top","right","bottom","none"].map(e=>Fp.call(this,e))))),it("td",`${Ot}-border-palette-right`).children(it("div",`${Ot}-toolbar-btn`).child(this.ddColor.el),it("div",`${Ot}-toolbar-btn`).child(this.ddType.el))));this.el.child(r)}}class P3 extends Sa{constructor(){const r=new Wn("border-all"),e=new A3;e.change=n=>{this.change(n),this.hide()},super(r,"auto",!1,"bottom-left",e.el)}}class F3 extends wa{constructor(){super("border")}dropdown(){return new P3}}class Oc extends Ih{element(){return super.element().child(new Wn(this.tag)).on("click",()=>this.change(this.tag))}setState(r){this.el.disabled(r)}}class I3 extends Oc{constructor(){super("clearformat")}}class M3 extends Wa{constructor(){super("paintformat")}setState(){}}class D3 extends wa{constructor(r){super("color",void 0,r)}dropdown(){const{tag:r,value:e}=this;return new Mh(r,e)}}class N3 extends wa{constructor(r){super("bgcolor",void 0,r)}dropdown(){const{tag:r,value:e}=this;return new Mh(r,e)}}class B3 extends Sa{constructor(){const r=ch.map(e=>it("div",`${Ot}-item`).on("click",()=>{this.setTitle(`${e.pt}`),this.change(e)}).child(`${e.pt}`));super("10","60px",!0,"bottom-left",...r)}}let L3=class extends wa{constructor(){super("font-size")}getValue(r){return r.pt}dropdown(){return new B3}};class j3 extends Sa{constructor(){const r=Cp.map(e=>it("div",`${Ot}-item`).on("click",()=>{this.setTitle(e.title),this.change(e)}).child(e.title));super(Cp[0].title,"160px",!0,"bottom-left",...r)}}class U3 extends wa{constructor(){super("font-name")}getValue(r){return r.key}dropdown(){return new j3}}class H3 extends Sa{constructor(){let r=vf.slice(0);r.splice(2,0,{key:"divider"}),r.splice(8,0,{key:"divider"}),r=r.map(e=>{const n=it("div",`${Ot}-item`);return e.key==="divider"?n.addClass("divider"):(n.child(e.title()).on("click",()=>{this.setTitle(e.title()),this.change(e)}),e.label&&n.child(it("div","label").html(e.label))),n}),super("Normal","220px",!0,"bottom-left",...r)}setTitle(r){for(let e=0;eit("div",`${Ot}-item`).on("click",()=>{this.hide(),this.change(e)}).child(e.key));super(new Wn("formula"),"180px",!0,"bottom-left",...r)}}class W3 extends wa{constructor(){super("formula")}getValue(r){return r.key}dropdown(){return new z3}}class V3 extends Wa{constructor(){super("freeze")}}class $3 extends Wa{constructor(){super("merge")}setState(r,e){this.el.active(r).disabled(e)}}class G3 extends Oc{constructor(){super("redo","Ctrl+Y")}}class K3 extends Oc{constructor(){super("undo","Ctrl+Z")}}class Y3 extends Oc{constructor(){super("print","Ctrl+P")}}class Z3 extends Wa{constructor(){super("textwrap")}}let J3=class extends Sa{constructor(){const r=new Wn("ellipsis"),e=it("div",`${Ot}-toolbar-more`);super(r,"auto",!1,"bottom-right",e),this.moreBtns=e,this.contentEl.css("max-width","420px")}};class Q3 extends wa{constructor(){super("more"),this.el.hide()}dropdown(){return new J3}show(){this.el.show()}hide(){this.el.hide()}}function Co(){return it("div",`${Ot}-toolbar-divider`)}function q3(){this.btns2=[],this.items.forEach(t=>{if(Array.isArray(t))t.forEach(({el:r})=>{const e=r.box(),{marginLeft:n,marginRight:i}=r.computedStyle();this.btns2.push([r,e.width+parseInt(n,10)+parseInt(i,10)])});else{const r=t.box(),{marginLeft:e,marginRight:n}=t.computedStyle();this.btns2.push([t,r.width+parseInt(e,10)+parseInt(n,10)])}})}function Ip(){const{el:t,btns:r,moreEl:e,btns2:n}=this,{moreBtns:i,contentEl:a}=e.dd;t.css("width",`${this.widthFn()-60}px`);const l=t.box();let d=160,m=12;const b=[],h=[];n.forEach(([_,g],y)=>{d+=g,y===n.length-1||d0?e.show():e.hide()}class eS{constructor(r,e,n=!1){this.data=r,this.change=()=>{},this.widthFn=e,this.isHide=n;const i=r.defaultStyle();this.items=[[this.undoEl=new K3,this.redoEl=new G3,new Y3,this.paintformatEl=new M3,this.clearformatEl=new I3],Co(),[this.formatEl=new X3],Co(),[this.fontEl=new U3,this.fontSizeEl=new L3],Co(),[this.boldEl=new _3,this.italicEl=new x3,this.underlineEl=new S3,this.strikeEl=new w3,this.textColorEl=new D3(i.color)],Co(),[this.fillColorEl=new N3(i.bgcolor),this.borderEl=new F3,this.mergeEl=new $3],Co(),[this.alignEl=new y3(i.align),this.valignEl=new g3(i.valign),this.textwrapEl=new Z3],Co(),[this.freezeEl=new V3,this.autofilterEl=new b3,this.formulaEl=new W3,this.moreEl=new Q3]],this.el=it("div",`${Ot}-toolbar`),this.btns=it("div",`${Ot}-toolbar-btns`),this.items.forEach(a=>{Array.isArray(a)?a.forEach(l=>{this.btns.child(l.el),l.change=(...d)=>{this.change(...d)}}):this.btns.child(a.el)}),this.el.child(this.btns),n?this.el.hide():(this.reset(),setTimeout(()=>{q3.call(this),Ip.call(this)},0),ci(window,"resize",()=>{Ip.call(this)}))}paintformatActive(){return this.paintformatEl.active()}paintformatToggle(){this.paintformatEl.toggle()}trigger(r){this[`${r}El`].click()}resetData(r){this.data=r,this.reset()}reset(){if(this.isHide)return;const{data:r}=this,e=r.getSelectedCellStyle();this.undoEl.setState(!r.canUndo()),this.redoEl.setState(!r.canRedo()),this.mergeEl.setState(r.canUnmerge(),!r.selector.multiple()),this.autofilterEl.setState(!r.canAutofilter());const{font:n,format:i}=e;this.formatEl.setState(i),this.fontEl.setState(n.name),this.fontSizeEl.setState(n.size),this.boldEl.setState(n.bold),this.italicEl.setState(n.italic),this.underlineEl.setState(e.underline),this.strikeEl.setState(e.strike),this.textColorEl.setState(e.color),this.fillColorEl.setState(e.bgcolor),this.alignEl.setState(e.align),this.valignEl.setState(e.valign),this.textwrapEl.setState(e.textwrap),this.freezeEl.setState(r.freezeIsActive())}}class tS{constructor(r,e,n="600px"){this.title=r,this.el=it("div",`${Ot}-modal`).css("width",n).children(it("div",`${Ot}-modal-header`).children(new Wn("close").on("click.stop",()=>this.hide()),this.title),it("div",`${Ot}-modal-content`).children(...e)).hide()}show(){this.dimmer=it("div",`${Ot}-dimmer active`),document.body.appendChild(this.dimmer.el);const{width:r,height:e}=this.el.show().box(),{clientHeight:n,clientWidth:i}=document.documentElement;this.el.offset({left:(i-r)/2,top:(n-e)/3}),window.xkeydownEsc=a=>{a.keyCode===27&&this.hide()},ci(window,"keydown",window.xkeydownEsc)}hide(){this.el.hide(),document.body.removeChild(this.dimmer.el),uc(window,"keydown",window.xkeydownEsc),delete window.xkeydownEsc}}class Fo{constructor(r,e){this.vchange=()=>{},this.el=it("div",`${Ot}-form-input`),this.input=it("input","").css("width",r).on("input",n=>this.vchange(n)).attr("placeholder",e),this.el.child(this.input)}focus(){setTimeout(()=>{this.input.el.focus()},10)}hint(r){this.input.attr("placeholder",r)}val(r){return this.input.val(r)}}class Nl{constructor(r,e,n,i=l=>l,a=()=>{}){this.key=r,this.getTitle=i,this.vchange=()=>{},this.el=it("div",`${Ot}-form-select`),this.suggest=new cm(e.map(l=>({key:l,title:this.getTitle(l)})),l=>{this.itemClick(l.key),a(l.key),this.vchange(l.key)},n,this.el),this.el.children(this.itemEl=it("div","input-text").html(this.getTitle(r)),this.suggest.el).on("click",()=>this.show())}show(){this.suggest.search("")}itemClick(r){this.key=r,this.itemEl.html(this.getTitle(r))}val(r){return r!==void 0?(this.key=r,this.itemEl.html(this.getTitle(r)),this):this.key}}const rS={number:/(^\d+$)|(^\d+(\.\d{0,4})?$)/,date:/^\d{4}-\d{1,2}-\d{1,2}$/};class as{constructor(r,e,n,i){this.label="",this.rule=e,n&&(this.label=it("label","label").css("width",`${i}px`).html(n)),this.tip=it("div","tip").child("tip").hide(),this.input=r,this.input.vchange=()=>this.validate(),this.el=it("div",`${Ot}-form-field`).children(this.label,r.el,this.tip)}isShow(){return this.el.css("display")!=="none"}show(){this.el.show()}hide(){return this.el.hide(),this}val(r){return this.input.val(r)}hint(r){this.input.hint(r)}validate(){const{input:r,rule:e,tip:n,el:i}=this,a=r.val();return e.required&&/^\s*$/.test(a)?(n.html(vn("validation.required")),i.addClass("error"),!1):(e.type||e.pattern)&&!(e.pattern||rS[e.type]).test(a)?(n.html(vn("validation.notMatch")),i.addClass("error"),!1):(i.removeClass("error"),!0)}}const Mp=100;class nS extends tS{constructor(){const r=new as(new Nl("cell",["cell"],"100%",b=>vn(`dataValidation.modeType.${b}`)),{required:!0},`${vn("dataValidation.range")}:`,Mp),e=new as(new Fo("120px","E3 or E3:F12"),{required:!0,pattern:/^([A-Z]{1,2}[1-9]\d*)(:[A-Z]{1,2}[1-9]\d*)?$/}),n=new as(new Nl("list",["list","number","date","phone","email"],"100%",b=>vn(`dataValidation.type.${b}`),b=>this.criteriaSelected(b)),{required:!0},`${vn("dataValidation.criteria")}:`,Mp),i=new as(new Nl("be",["be","nbe","eq","neq","lt","lte","gt","gte"],"160px",b=>vn(`dataValidation.operator.${b}`),b=>this.criteriaOperatorSelected(b)),{required:!0}).hide(),a=new as(new Fo("70px","10"),{required:!0}).hide(),l=new as(new Fo("70px","100"),{required:!0,type:"number"}).hide(),d=new as(new Fo("120px","a,b,c"),{required:!0}),m=new as(new Fo("70px","10"),{required:!0,type:"number"}).hide();super(vn("contextmenu.validation"),[it("div",`${Ot}-form-fields`).children(r.el,e.el),it("div",`${Ot}-form-fields`).children(n.el,i.el,a.el,l.el,m.el,d.el),it("div",`${Ot}-buttons`).children(new Fs("cancel").on("click",()=>this.btnClick("cancel")),new Fs("remove").on("click",()=>this.btnClick("remove")),new Fs("save","primary").on("click",()=>this.btnClick("save")))]),this.mf=r,this.rf=e,this.cf=n,this.of=i,this.minvf=a,this.maxvf=l,this.vf=m,this.svf=d,this.change=()=>{}}showVf(r){const e=r==="date"?"2018-11-12":"10",{vf:n}=this;n.input.hint(e),n.show()}criteriaSelected(r){const{of:e,minvf:n,maxvf:i,vf:a,svf:l}=this;r==="date"||r==="number"?(e.show(),n.rule.type=r,i.rule.type=r,r==="date"?(n.hint("2018-11-12"),i.hint("2019-11-12")):(n.hint("10"),i.hint("100")),n.show(),i.show(),a.hide(),l.hide()):(r==="list"?l.show():l.hide(),a.hide(),e.hide(),n.hide(),i.hide())}criteriaOperatorSelected(r){if(!r)return;const{minvf:e,maxvf:n,vf:i}=this;if(r==="be"||r==="nbe")e.show(),n.show(),i.hide();else{const a=this.cf.val();i.rule.type=a,a==="date"?i.hint("2018-11-12"):i.hint("10"),i.show(),e.hide(),n.hide()}}btnClick(r){if(r==="cancel")this.hide();else if(r==="remove")this.change("remove"),this.hide();else if(r==="save"){const e=["mf","rf","cf","of","svf","vf","minvf","maxvf"];for(let m=0;mthis.itemClick(t))}function iS(t){const{filterbEl:r,filterValues:e}=this;r.html(""),Object.keys(t).forEach((i,a)=>{const l=t[i],d=e.includes(i)?"checked":"";r.child(it("div",`${Ot}-item state ${d}`).on("click.stop",()=>this.filterClick(a,i)).children(i===""?vn("filter.empty"):i,it("div","label").html(`(${l})`)))})}function Np(){const{filterhEl:t,filterValues:r,values:e}=this;t.html(`${r.length} / ${e.length}`),t.checked(r.length===e.length)}class aS{constructor(){this.filterbEl=it("div",`${Ot}-body`),this.filterhEl=it("div",`${Ot}-header state`).on("click.stop",()=>this.filterClick(0,"all")),this.el=it("div",`${Ot}-sort-filter`).children(this.sortAscEl=Dp.call(this,"asc"),this.sortDescEl=Dp.call(this,"desc"),gm("divider"),it("div",`${Ot}-filter`).children(this.filterhEl,this.filterbEl),it("div",`${Ot}-buttons`).children(new Fs("cancel").on("click",()=>this.btnClick("cancel")),new Fs("ok","primary").on("click",()=>this.btnClick("ok")))).hide(),this.ci=null,this.sortDesc=null,this.values=null,this.filterValues=[]}btnClick(r){if(r==="ok"){const{ci:e,sort:n,filterValues:i}=this;this.ok&&this.ok(e,n,"in",i)}this.hide()}itemClick(r){this.sort=r;const{sortAscEl:e,sortDescEl:n}=this;e.checked(r==="asc"),n.checked(r==="desc")}filterClick(r,e){const{filterbEl:n,filterValues:i,values:a}=this,l=n.children();e==="all"?l.length===i.length?(this.filterValues=[],l.forEach(d=>it(d).checked(!1))):(this.filterValues=Array.from(a),l.forEach(d=>it(d).checked(!0))):it(l[r]).toggle("checked")?i.push(e):i.splice(i.findIndex(m=>m===e),1),Np.call(this)}set(r,e,n,i){this.ci=r;const{sortAscEl:a,sortDescEl:l}=this;i!==null?(this.sort=i.order,a.checked(i.asc()),l.checked(i.desc())):(this.sortDesc=null,a.checked(!1),l.checked(!1)),this.values=Object.keys(e),this.filterValues=n?Array.from(n.value):Object.keys(e),iS.call(this,e,n),Np.call(this)}setOffset(r){this.el.offset(r).show();let e=1;zf(this.el,()=>{e<=0&&this.hide(),e-=1})}show(){this.el.show()}hide(){this.el.hide(),Xo(this.el)}}function bm(t,r){const e=it("div",`${Ot}-toast`),n=it("div",`${Ot}-dimmer active`),i=()=>{document.body.removeChild(e.el),document.body.removeChild(n.el)};e.children(it("div",`${Ot}-toast-header`).children(new Wn("close").on("click.stop",()=>i()),t),it("div",`${Ot}-toast-content`).html(r)),document.body.appendChild(e.el),document.body.appendChild(n.el);const{width:a,height:l}=e.box(),{clientHeight:d,clientWidth:m}=document.documentElement;e.offset({left:(m-a)/2,top:(d-l)/3})}function Bl(t,r){let e;return(...n)=>{const i=this,a=n;e||(e=setTimeout(()=>{e=null,t.apply(i,a)},r))}}function sS(){const{data:t,verticalScrollbar:r,horizontalScrollbar:e}=this,{l:n,t:i,left:a,top:l,width:d,height:m}=t.getSelectedRect(),b=this.getTableOffset();if(Math.abs(a)+d>b.width)e.move({left:n+d-b.width});else{const h=t.freezeTotalWidth();ab.height)r.move({top:i+m-b.height-1});else{const h=t.freezeTotalHeight();l0&&(d-=1):r==="right"?(b!==d&&(d=b),d0&&(l-=1):r==="down"?(m!==l&&(l=m),lm.indexWidth&&e>d.height){n.hide(),i.hide();return}const b=a.box(),h=l.getCellRectByXY(t.offsetX,t.offsetY);h.ri>=0&&h.ci===-1?(h.width=m.indexWidth,n.show(h,{width:b.width}),d.isHide(h.ri-1)?n.showUnhide(h.ri):n.hideUnhide()):n.hide(),h.ri===-1&&h.ci>=0?(h.height=d.height,i.show(h,{height:b.height}),m.isHide(h.ci-1)?i.showUnhide(h.ci):i.hideUnhide()):i.hide()}function fS(t){const{verticalScrollbar:r,horizontalScrollbar:e,data:n}=this,{top:i}=r.scroll(),{left:a}=e.scroll(),{rows:l,cols:d}=n,{deltaY:m,deltaX:b}=t,h=(S,w)=>{let u=S,o=0;do o=w(u),u+=1;while(o<=0);return o},_=S=>{if(S>0){const w=n.scroll.ri+1;if(wl.getHeight(o));r.move({top:i+u-1})}}else{const w=n.scroll.ri-1;if(w>=0){const u=h(w,o=>l.getHeight(o));r.move({top:w===0?0:i-u})}}},g=S=>{if(S>0){const w=n.scroll.ci+1;if(wd.getWidth(o));e.move({left:a+u-1})}}else{const w=n.scroll.ci-1;if(w>=0){const u=h(w,o=>d.getWidth(o));e.move({left:w===0?0:a-u})}}},y=Math.abs(m),x=Math.abs(b),p=Math.max(y,x);/Firefox/i.test(window.navigator.userAgent)&&Bl(_(t.detail),50),p===x&&Bl(g(b),50),p===y&&Bl(_(m),50)}function uS(t,r){const{verticalScrollbar:e,horizontalScrollbar:n}=this,{top:i}=e.scroll(),{left:a}=n.scroll();t==="left"||t==="right"?n.move({left:a-r}):(t==="up"||t==="down")&&e.move({top:i-r})}function Dh(){const{data:t,verticalScrollbar:r}=this,{height:e}=this.getTableOffset(),n=t.exceptRowTotalHeight(0,-1);r.set(e,t.rows.totalHeight()-n)}function Nh(){const{data:t,horizontalScrollbar:r}=this,{width:e}=this.getTableOffset();t&&r.set(e,t.cols.totalWidth())}function cS(){const{selector:t,data:r,editor:e}=this,[n,i]=r.freeze;if(n>0||i>0){const a=r.freezeTotalWidth(),l=r.freezeTotalHeight();e.setFreezeLengths(a,l)}t.resetAreaOffset()}function ui(){const{tableEl:t,overlayerEl:r,overlayerCEl:e,table:n,toolbar:i,selector:a,el:l}=this,d=this.getTableOffset(),m=this.getRect();t.attr(m),r.offset(m),e.offset(d),l.css("width",`${m.width}px`),Dh.call(this),Nh.call(this),cS.call(this),n.render(),i.reset(),a.reset()}function Wf(){const{data:t,selector:r}=this;t.clearClipboard(),r.hideClipboard()}function hh(){const{data:t,selector:r}=this;t.copy(),t.copyToSystemClipboard(),r.showClipboard()}function Bp(){const{data:t,selector:r}=this;t.cut(),r.showClipboard()}function mf(t,r){const{data:e}=this;if(e.settings.mode!=="read"){if(e.paste(t,n=>bm("Tip",n)))ui.call(this);else if(r){const n=r.clipboardData.getData("text/plain");this.data.pasteFromText(n),ui.call(this)}}}function lS(){this.data.hideRowsOrCols(),ui.call(this)}function Lp(t,r){this.data.unhideRowsOrCols(t,r),ui.call(this)}function hS(){const{data:t}=this;t.autofilter(),ui.call(this)}function dS(){const{toolbar:t}=this;t.paintformatActive()&&(mf.call(this,"format"),Wf.call(this),t.paintformatToggle())}function jp(t){const{selector:r,data:e,table:n,sortFilter:i}=this,{offsetX:a,offsetY:l}=t,d=t.target.className===`${Ot}-selector-corner`,m=e.getCellRectByXY(a,l),{left:b,top:h,width:_,height:g}=m;let{ri:y,ci:x}=m;const{autoFilter:p}=e;if(p.includes(y,x)&&b+_-20e.rows.getCell(w,u));i.hide(),i.set(x,S,p.getFilter(x),p.getSort(x)),i.setOffset({left:b,top:h+g+2});return}t.shiftKey||(d?r.showAutofill(y,x):Is.call(this,!1,y,x),am(window,S=>{({ri:y,ci:x}=e.getCellRectByXY(S.offsetX,S.offsetY)),d?r.showAutofill(y,x):S.buttons===1&&!S.shiftKey&&Is.call(this,!0,y,x,!0,!0)},()=>{d&&r.arange&&e.settings.mode!=="read"&&e.autofill(r.arange,"all",S=>bm("Tip",S))&&n.render(),r.hideAutofill(),dS.call(this)})),!d&&t.buttons===1&&t.shiftKey&&Is.call(this,!0,y,x)}function Vf(){const{editor:t,data:r}=this,e=r.getSelectedRect(),n=this.getTableOffset();let i="top";e.top>n.height/2&&(i="bottom"),t.setOffset(e,i)}function yf(){const{editor:t,data:r}=this;r.settings.mode!=="read"&&(Vf.call(this),t.setCell(r.getSelectedCell(),r.getSelectedValidator()),Wf.call(this))}function pS(t){const{data:r,table:e,selector:n}=this;r.scrolly(t,()=>{n.resetBRLAreaOffset(),Vf.call(this),e.render()})}function vS(t){const{data:r,table:e,selector:n}=this;r.scrollx(t,()=>{n.resetBRTAreaOffset(),Vf.call(this),e.render()})}function mS(t,r){const{ri:e}=t,{table:n,selector:i,data:a}=this;a.rows.setHeight(e,r),n.render(),i.resetAreaOffset(),Dh.call(this),Vf.call(this)}function yS(t,r){const{ci:e}=t,{table:n,selector:i,data:a}=this;a.cols.setWidth(e,r),n.render(),i.resetAreaOffset(),Nh.call(this),Vf.call(this)}function Ll(t,r="finished"){const{data:e,table:n}=this;if(e.settings.mode==="read")return;e.setSelectedCellText(t,r);const{ri:i,ci:a}=e.selector;r==="finished"?n.render():this.trigger("cell-edited",t,i,a)}function ic(t){const{data:r}=this;r.settings.mode!=="read"&&(t==="insert-row"?r.insert("row"):t==="delete-row"?r.delete("row"):t==="insert-column"?r.insert("column"):t==="delete-column"?r.delete("column"):t==="delete-cell"?r.deleteCell():t==="delete-cell-format"?r.deleteCell("format"):t==="delete-cell-text"?r.deleteCell("text"):t==="cell-printable"?r.setSelectedCellAttr("printable",!0):t==="cell-non-printable"?r.setSelectedCellAttr("printable",!1):t==="cell-editable"?r.setSelectedCellAttr("editable",!0):t==="cell-non-editable"&&r.setSelectedCellAttr("editable",!1),Wf.call(this),ui.call(this))}function gS(t,r){const{data:e}=this;if(t==="undo")this.undo();else if(t==="redo")this.redo();else if(t==="print")this.print.preview();else if(t==="paintformat")r===!0?hh.call(this):Wf.call(this);else if(t==="clearformat")ic.call(this,"delete-cell-format");else if(t!=="link"){if(t!=="chart")if(t==="autofilter")hS.call(this);else if(t==="freeze")if(r){const{ri:n,ci:i}=e.selector;this.freeze(n,i)}else this.freeze(0,0);else e.setSelectedCellAttr(t,r),t==="formula"&&!e.selector.multiple()&&yf.call(this),ui.call(this)}}function bS(t,r,e,n){this.data.setAutoFilter(t,r,e,n),ui.call(this)}function _S(){const{selector:t,overlayerEl:r,rowResizer:e,colResizer:n,verticalScrollbar:i,horizontalScrollbar:a,editor:l,contextMenu:d,toolbar:m,modalValidation:b,sortFilter:h}=this;r.on("mousemove",_=>{oS.call(this,_)}).on("mousedown",_=>{l.clear(),d.hide(),_.buttons===2?(this.data.xyInSelectedRect(_.offsetX,_.offsetY)||jp.call(this,_),d.setPosition(_.offsetX,_.offsetY),_.stopPropagation()):_.detail===2?yf.call(this):jp.call(this,_)}).on("mousewheel.stop",_=>{fS.call(this,_)}).on("mouseout",_=>{const{offsetX:g,offsetY:y}=_;y<=0&&n.hide(),g<=0&&e.hide()}),t.inputChange=_=>{Ll.call(this,_,"input"),yf.call(this)},O4(r.el,{move:(_,g)=>{uS.call(this,_,g)}}),m.change=(_,g)=>gS.call(this,_,g),h.ok=(_,g,y,x)=>bS.call(this,_,g,y,x),e.finishedFn=(_,g)=>{mS.call(this,_,g)},n.finishedFn=(_,g)=>{yS.call(this,_,g)},e.unhideFn=_=>{Lp.call(this,"row",_)},n.unhideFn=_=>{Lp.call(this,"col",_)},i.moveFn=(_,g)=>{pS.call(this,_,g)},a.moveFn=(_,g)=>{vS.call(this,_,g)},l.change=(_,g)=>{Ll.call(this,g,_)},b.change=(_,...g)=>{_==="save"?this.data.addValidation(...g):this.data.removeValidation()},d.itemClick=_=>{_==="validation"?b.setValue(this.data.getSelectedValidation()):_==="copy"?hh.call(this):_==="cut"?Bp.call(this):_==="paste"?mf.call(this,"all"):_==="paste-value"?mf.call(this,"text"):_==="paste-format"?mf.call(this,"format"):_==="hide"?lS.call(this):ic.call(this,_)},ci(window,"resize",()=>{this.reload()}),ci(window,"click",_=>{this.focusing=r.contains(_.target)}),ci(window,"paste",_=>{this.focusing&&(mf.call(this,"all",_),_.preventDefault())}),ci(window,"keydown",_=>{if(!this.focusing)return;const g=_.keyCode||_.which,{key:y,ctrlKey:x,shiftKey:p,metaKey:S}=_;if(x||S)switch(g){case 90:this.undo(),_.preventDefault();break;case 89:this.redo(),_.preventDefault();break;case 67:hh.call(this),_.preventDefault();break;case 88:Bp.call(this),_.preventDefault();break;case 85:m.trigger("underline"),_.preventDefault();break;case 86:break;case 37:ma.call(this,p,"row-first"),_.preventDefault();break;case 38:ma.call(this,p,"col-first"),_.preventDefault();break;case 39:ma.call(this,p,"row-last"),_.preventDefault();break;case 40:ma.call(this,p,"col-last"),_.preventDefault();break;case 32:Is.call(this,!1,-1,this.data.selector.ci,!1),_.preventDefault();break;case 66:m.trigger("bold");break;case 73:m.trigger("italic");break}else{switch(g){case 32:p&&Is.call(this,!1,this.data.selector.ri,-1,!1);break;case 27:d.hide(),Wf.call(this);break;case 37:ma.call(this,p,"left"),_.preventDefault();break;case 38:ma.call(this,p,"up"),_.preventDefault();break;case 39:ma.call(this,p,"right"),_.preventDefault();break;case 40:ma.call(this,p,"down"),_.preventDefault();break;case 9:l.clear(),ma.call(this,!1,p?"left":"right"),_.preventDefault();break;case 13:l.clear(),ma.call(this,!1,p?"up":"down"),_.preventDefault();break;case 8:ic.call(this,"delete-cell-text"),_.preventDefault();break}y==="Delete"?(ic.call(this,"delete-cell-text"),_.preventDefault()):g>=65&&g<=90||g>=48&&g<=57||g>=96&&g<=105||_.key==="="?(Ll.call(this,_.key,"input"),yf.call(this)):g===113&&yf.call(this)}})}class xS{constructor(r,e){this.eventMap=C4();const{view:n,showToolbar:i,showContextmenu:a}=e.settings;this.el=it("div",`${Ot}-sheet`),this.toolbar=new eS(e,n.width,!i),this.print=new c3(e),r.children(this.toolbar.el,this.el,this.print.el),this.data=e,this.tableEl=it("canvas",`${Ot}-table`),this.rowResizer=new xp(!1,e.rows.height),this.colResizer=new xp(!0,e.cols.minWidth),this.verticalScrollbar=new wp(!0),this.horizontalScrollbar=new wp(!1),this.editor=new $4(q4,()=>this.getTableOffset(),e.rows.height),this.modalValidation=new nS,this.contextMenu=new p3(()=>this.getRect(),!a),this.selector=new P4(e),this.overlayerCEl=it("div",`${Ot}-overlayer-content`).children(this.editor.el,this.selector.el),this.overlayerEl=it("div",`${Ot}-overlayer`).child(this.overlayerCEl),this.sortFilter=new aS,this.el.children(this.tableEl,this.overlayerEl.el,this.rowResizer.el,this.colResizer.el,this.verticalScrollbar.el,this.horizontalScrollbar.el,this.contextMenu.el,this.modalValidation.el,this.sortFilter.el),this.table=new o3(this.tableEl.el,e),_S.call(this),ui.call(this),Is.call(this,!1,0,0)}on(r,e){return this.eventMap.on(r,e),this}trigger(r,...e){const{eventMap:n}=this;n.fire(r,e)}resetData(r){this.editor.clear(),this.data=r,Dh.call(this),Nh.call(this),this.toolbar.resetData(r),this.print.resetData(r),this.selector.resetData(r),this.table.resetData(r)}loadData(r){return this.data.setData(r),ui.call(this),this}freeze(r,e){const{data:n}=this;return n.setFreeze(r,e),ui.call(this),this}undo(){this.data.undo(),ui.call(this)}redo(){this.data.redo(),ui.call(this)}reload(){return ui.call(this),this}getRect(){const{data:r}=this;return{width:r.viewWidth(),height:r.viewHeight()}}getTableOffset(){const{rows:r,cols:e}=this.data,{width:n,height:i}=this.getRect();return{width:n-e.indexWidth,height:i-r.height,left:e.indexWidth,top:r.height}}}class wS extends Sa{constructor(r){const e=new Wn("ellipsis");super(e,"auto",!1,"top-left"),this.contentClick=r}reset(r){const e=r.map((n,i)=>it("div",`${Ot}-item`).css("width","150px").css("font-weight","normal").on("click",()=>{this.contentClick(i),this.hide()}).child(n));this.setContentChildren(...e)}setTitle(){}}const SS=[{key:"delete",title:yr("contextmenu.deleteSheet")}];function kS(t){return it("div",`${Ot}-item`).child(t.title()).on("click",()=>{this.itemClick(t.key),this.hide()})}function ES(){return SS.map(t=>kS.call(this,t))}class TS{constructor(){this.el=it("div",`${Ot}-contextmenu`).css("width","160px").children(...ES.call(this)).hide(),this.itemClick=()=>{}}hide(){const{el:r}=this;r.hide(),Xo(r)}setOffset(r){const{el:e}=this;e.offset(r),e.show(),zf(e)}}class OS{constructor(r=()=>{},e=()=>{},n=()=>{},i=()=>{}){this.swapFunc=e,this.updateFunc=i,this.dataNames=[],this.activeEl=null,this.deleteEl=null,this.items=[],this.moreEl=new wS(a=>{this.clickSwap2(this.items[a])}),this.contextMenu=new TS,this.contextMenu.itemClick=n,this.el=it("div",`${Ot}-bottombar`).children(this.contextMenu.el,this.menuEl=it("ul",`${Ot}-menu`).child(it("li","").children(new Wn("add").on("click",()=>{r()}),it("span","").child(this.moreEl))))}addItem(r,e){this.dataNames.push(r);const n=it("li",e?"active":"").child(r);n.on("click",()=>{this.clickSwap2(n)}).on("contextmenu",i=>{const{offsetLeft:a,offsetHeight:l}=i.target;this.contextMenu.setOffset({left:a,bottom:l+1}),this.deleteEl=n}).on("dblclick",()=>{const i=n.html(),a=new Fo("auto","");a.val(i),a.input.on("blur",({target:l})=>{const{value:d}=l,m=this.dataNames.findIndex(b=>b===i);this.renameItem(m,d)}),n.html("").child(a.el),a.focus()}),e&&this.clickSwap(n),this.items.push(n),this.menuEl.child(n),this.moreEl.reset(this.dataNames)}renameItem(r,e){this.dataNames.splice(r,1,e),this.moreEl.reset(this.dataNames),this.items[r].html("").child(e),this.updateFunc(r,e)}clear(){this.items.forEach(r=>{this.menuEl.removeChild(r.el)}),this.items=[],this.dataNames=[],this.moreEl.reset(this.dataNames)}deleteItem(){const{activeEl:r,deleteEl:e}=this;if(this.items.length>1){const n=this.items.findIndex(i=>i===e);if(this.items.splice(n,1),this.dataNames.splice(n,1),this.menuEl.removeChild(e.el),this.moreEl.reset(this.dataNames),r===e){const[i]=this.items;return this.activeEl=i,this.activeEl.toggle(),[n,0]}return[n,-1]}return[-1]}clickSwap2(r){const e=this.items.findIndex(n=>n===r);this.clickSwap(r),this.activeEl.toggle(),this.swapFunc(e)}clickSwap(r){this.activeEl!==null&&this.activeEl.toggle(),this.activeEl=r}}class CS{constructor(r,e={}){let n=r;this.options={showBottomBar:!0,...e},this.sheetIndex=1,this.datas=[],typeof r=="string"&&(n=document.querySelector(r)),this.bottombar=this.options.showBottomBar?new OS(()=>{const a=this.addSheet();this.sheet.resetData(a)},a=>{const l=this.datas[a];this.sheet.resetData(l)},()=>{this.deleteSheet()},(a,l)=>{this.datas[a].name=l}):null,this.data=this.addSheet();const i=it("div",`${Ot}`).on("contextmenu",a=>a.preventDefault());n.appendChild(i.el),this.sheet=new xS(i,this.data),this.bottombar!==null&&i.child(this.bottombar.el)}addSheet(r,e=!0){const n=r||`sheet${this.sheetIndex}`,i=new T4(n,this.options);return i.change=(...a)=>{this.sheet.trigger("change",...a)},this.datas.push(i),this.bottombar!==null&&this.bottombar.addItem(n,e),this.sheetIndex+=1,i}deleteSheet(){if(this.bottombar===null)return;const[r,e]=this.bottombar.deleteItem();r>=0&&(this.datas.splice(r,1),e>=0&&this.sheet.resetData(this.datas[e]))}loadData(r){const e=Array.isArray(r)?r:[r];if(this.bottombar!==null&&this.bottombar.clear(),this.datas=[],e.length>0)for(let n=0;nr.getData())}cellText(r,e,n,i=0){return this.datas[i].setCellText(r,e,n,"finished"),this}cell(r,e,n=0){return this.datas[n].getCell(r,e)}cellStyle(r,e,n=0){return this.datas[n].getCellStyle(r,e)}reRender(){return this.sheet.table.render(),this}on(r,e){return this.sheet.on(r,e),this}validate(){const{validations:r}=this.data;return r.errors.size<=0}change(r){return this.sheet.on("change",r),this}static locale(r,e){nm(r,e)}}const RS=(t,r={})=>new CS(t,r);window&&(window.x_spreadsheet=RS,window.x_spreadsheet.locale=(t,r)=>nm(t,r));var dh={},AS={get exports(){return dh},set exports(t){dh=t}};(function(t,r){(function(e){t.exports=e()})(function(){return function(){function e(n,i,a){function l(b,h){if(!i[b]){if(!n[b]){var _=typeof ju=="function"&&ju;if(!h&&_)return _(b,!0);if(d)return d(b,!0);var g=new Error("Cannot find module '"+b+"'");throw g.code="MODULE_NOT_FOUND",g}var y=i[b]={exports:{}};n[b][0].call(y.exports,function(x){var p=n[b][1][x];return l(p||x)},y,y.exports,e,n,i,a)}return i[b].exports}for(var d=typeof ju=="function"&&ju,m=0;m2&&arguments[2]!==void 0?arguments[2]:0;if(a(this,h),!g)this.nativeCol=0,this.nativeColOff=0,this.nativeRow=0,this.nativeRowOff=0;else if(typeof g=="string"){var x=m.decodeAddress(g);this.nativeCol=x.col+y,this.nativeColOff=0,this.nativeRow=x.row+y,this.nativeRowOff=0}else g.nativeCol!==void 0?(this.nativeCol=g.nativeCol||0,this.nativeColOff=g.nativeColOff||0,this.nativeRow=g.nativeRow||0,this.nativeRowOff=g.nativeRowOff||0):g.col!==void 0?(this.col=g.col+y,this.row=g.row+y):(this.nativeCol=0,this.nativeColOff=0,this.nativeRow=0,this.nativeRowOff=0);this.worksheet=_}return d(h,[{key:"col",get:function(){return this.nativeCol+Math.min(this.colWidth-1,this.nativeColOff)/this.colWidth},set:function(g){this.nativeCol=Math.floor(g),this.nativeColOff=Math.floor((g-this.nativeCol)*this.colWidth)}},{key:"row",get:function(){return this.nativeRow+Math.min(this.rowHeight-1,this.nativeRowOff)/this.rowHeight},set:function(g){this.nativeRow=Math.floor(g),this.nativeRowOff=Math.floor((g-this.nativeRow)*this.rowHeight)}},{key:"colWidth",get:function(){return this.worksheet&&this.worksheet.getColumn(this.nativeCol+1)&&this.worksheet.getColumn(this.nativeCol+1).isCustomWidth?Math.floor(this.worksheet.getColumn(this.nativeCol+1).width*1e4):64e4}},{key:"rowHeight",get:function(){return this.worksheet&&this.worksheet.getRow(this.nativeRow+1)&&this.worksheet.getRow(this.nativeRow+1).height?Math.floor(this.worksheet.getRow(this.nativeRow+1).height*1e4):18e4}},{key:"model",get:function(){return{nativeCol:this.nativeCol,nativeColOff:this.nativeColOff,nativeRow:this.nativeRow,nativeRowOff:this.nativeRowOff}},set:function(g){this.nativeCol=g.nativeCol,this.nativeColOff=g.nativeColOff,this.nativeRow=g.nativeRow,this.nativeRowOff=g.nativeRowOff}}],[{key:"asInstance",value:function(g){return g instanceof h||g==null?g:new h(g)}}]),h}();n.exports=b},{"../utils/col-cache":19}],3:[function(e,n,i){function a(j,L){if(!(j instanceof L))throw new TypeError("Cannot call a class as a function")}function l(j,L){for(var M=0;M0||this.type===j.Types.Merge}},{key:"master",get:function(){return this.type===j.Types.Merge?this._value.master:this}},{key:"isHyperlink",get:function(){return this._value.type===j.Types.Hyperlink}},{key:"hyperlink",get:function(){return this._value.hyperlink}},{key:"value",get:function(){return this._value.value},set:function(M){if(this.type===j.Types.Merge){this._value.master.value=M;return}this._value.release(),this._value=D.create(D.getType(M),this,M)}},{key:"note",get:function(){return this._comment&&this._comment.note},set:function(M){this._comment=new y(M)}},{key:"text",get:function(){return this._value.toString()}},{key:"html",get:function(){return b.escapeHtml(this.text)}},{key:"formula",get:function(){return this._value.formula}},{key:"result",get:function(){return this._value.result}},{key:"formulaType",get:function(){return this._value.formulaType}},{key:"fullAddress",get:function(){var M=this._row.worksheet;return{sheetName:M.name,address:this.address,row:this.row,col:this.col}}},{key:"name",get:function(){return this.names[0]},set:function(M){this.names=[M]}},{key:"names",get:function(){return this.workbook.definedNames.getNamesEx(this.fullAddress)},set:function(M){var B=this,R=this.workbook.definedNames;R.removeAllNames(this.fullAddress),M.forEach(function(P){R.addEx(B.fullAddress,P)})}},{key:"_dataValidations",get:function(){return this.worksheet.dataValidations}},{key:"dataValidation",get:function(){return this._dataValidations.find(this.address)},set:function(M){this._dataValidations.add(this.address,M)}},{key:"model",get:function(){var M=this._value.model;return M.style=this.style,this._comment&&(M.comment=this._comment.model),M},set:function(M){if(this._value.release(),this._value=D.create(M.type,this),this._value.model=M,M.comment)switch(M.comment.type){case"note":this._comment=y.fromModel(M.comment);break}M.style?this.style=M.style:this.style={}}}]),j}();x.Types=h.ValueType;var p=function(){function j(L){a(this,j),this.model={address:L.address,type:x.Types.Null}}return d(j,[{key:"toCsvString",value:function(){return""}},{key:"release",value:function(){}},{key:"toString",value:function(){return""}},{key:"value",get:function(){return null},set:function(M){}},{key:"type",get:function(){return x.Types.Null}},{key:"effectiveType",get:function(){return x.Types.Null}},{key:"address",get:function(){return this.model.address},set:function(M){this.model.address=M}}]),j}(),S=function(){function j(L,M){a(this,j),this.model={address:L.address,type:x.Types.Number,value:M}}return d(j,[{key:"toCsvString",value:function(){return this.model.value.toString()}},{key:"release",value:function(){}},{key:"toString",value:function(){return this.model.value.toString()}},{key:"value",get:function(){return this.model.value},set:function(M){this.model.value=M}},{key:"type",get:function(){return x.Types.Number}},{key:"effectiveType",get:function(){return x.Types.Number}},{key:"address",get:function(){return this.model.address},set:function(M){this.model.address=M}}]),j}(),w=function(){function j(L,M){a(this,j),this.model={address:L.address,type:x.Types.String,value:M}}return d(j,[{key:"toCsvString",value:function(){return'"'.concat(this.model.value.replace(/"/g,'""'),'"')}},{key:"release",value:function(){}},{key:"toString",value:function(){return this.model.value}},{key:"value",get:function(){return this.model.value},set:function(M){this.model.value=M}},{key:"type",get:function(){return x.Types.String}},{key:"effectiveType",get:function(){return x.Types.String}},{key:"address",get:function(){return this.model.address},set:function(M){this.model.address=M}}]),j}(),u=function(){function j(L,M){a(this,j),this.model={address:L.address,type:x.Types.String,value:M}}return d(j,[{key:"toString",value:function(){return this.model.value.richText.map(function(M){return M.text}).join("")}},{key:"toCsvString",value:function(){return'"'.concat(this.text.replace(/"/g,'""'),'"')}},{key:"release",value:function(){}},{key:"value",get:function(){return this.model.value},set:function(M){this.model.value=M}},{key:"type",get:function(){return x.Types.RichText}},{key:"effectiveType",get:function(){return x.Types.RichText}},{key:"address",get:function(){return this.model.address},set:function(M){this.model.address=M}}]),j}(),o=function(){function j(L,M){a(this,j),this.model={address:L.address,type:x.Types.Date,value:M}}return d(j,[{key:"toCsvString",value:function(){return this.model.value.toISOString()}},{key:"release",value:function(){}},{key:"toString",value:function(){return this.model.value.toString()}},{key:"value",get:function(){return this.model.value},set:function(M){this.model.value=M}},{key:"type",get:function(){return x.Types.Date}},{key:"effectiveType",get:function(){return x.Types.Date}},{key:"address",get:function(){return this.model.address},set:function(M){this.model.address=M}}]),j}(),s=function(){function j(L,M){a(this,j),this.model={address:L.address,type:x.Types.Hyperlink,text:M?M.text:void 0,hyperlink:M?M.hyperlink:void 0},M&&M.tooltip&&(this.model.tooltip=M.tooltip)}return d(j,[{key:"toCsvString",value:function(){return this.model.hyperlink}},{key:"release",value:function(){}},{key:"toString",value:function(){return this.model.text}},{key:"value",get:function(){var M={text:this.model.text,hyperlink:this.model.hyperlink};return this.model.tooltip&&(M.tooltip=this.model.tooltip),M},set:function(M){this.model={text:M.text,hyperlink:M.hyperlink},M.tooltip&&(this.model.tooltip=M.tooltip)}},{key:"text",get:function(){return this.model.text},set:function(M){this.model.text=M}},{key:"hyperlink",get:function(){return this.model.hyperlink},set:function(M){this.model.hyperlink=M}},{key:"type",get:function(){return x.Types.Hyperlink}},{key:"effectiveType",get:function(){return x.Types.Hyperlink}},{key:"address",get:function(){return this.model.address},set:function(M){this.model.address=M}}]),j}(),c=function(){function j(L,M){a(this,j),this.model={address:L.address,type:x.Types.Merge,master:M?M.address:void 0},this._master=M,M&&M.addMergeRef()}return d(j,[{key:"isMergedTo",value:function(M){return M===this._master}},{key:"toCsvString",value:function(){return""}},{key:"release",value:function(){this._master.releaseMergeRef()}},{key:"toString",value:function(){return this.value.toString()}},{key:"value",get:function(){return this._master.value},set:function(M){M instanceof x?(this._master&&this._master.releaseMergeRef(),M.addMergeRef(),this._master=M):this._master.value=M}},{key:"master",get:function(){return this._master}},{key:"type",get:function(){return x.Types.Merge}},{key:"effectiveType",get:function(){return this._master.effectiveType}},{key:"address",get:function(){return this.model.address},set:function(M){this.model.address=M}}]),j}(),f=function(){function j(L,M){a(this,j),this.cell=L,this.model={address:L.address,type:x.Types.Formula,shareType:M?M.shareType:void 0,ref:M?M.ref:void 0,formula:M?M.formula:void 0,sharedFormula:M?M.sharedFormula:void 0,result:M?M.result:void 0}}return d(j,[{key:"_copyModel",value:function(M){var B={},R=function(O){var F=M[O];F&&(B[O]=F)};return R("formula"),R("result"),R("ref"),R("shareType"),R("sharedFormula"),B}},{key:"validate",value:function(M){switch(D.getType(M)){case x.Types.Null:case x.Types.String:case x.Types.Number:case x.Types.Date:break;case x.Types.Hyperlink:case x.Types.Formula:default:throw new Error("Cannot process that type of result value")}}},{key:"_getTranslatedFormula",value:function(){if(!this._translatedFormula&&this.model.sharedFormula){var M=this.cell.worksheet,B=M.findCell(this.model.sharedFormula);this._translatedFormula=B&&g(B.formula,B.address,this.model.address)}return this._translatedFormula}},{key:"toCsvString",value:function(){return"".concat(this.model.result||"")}},{key:"release",value:function(){}},{key:"toString",value:function(){return this.model.result?this.model.result.toString():""}},{key:"value",get:function(){return this._copyModel(this.model)},set:function(M){this.model=this._copyModel(M)}},{key:"dependencies",get:function(){var M=this.formula.match(/([a-zA-Z0-9]+!)?[A-Z]{1,3}\d{1,4}:[A-Z]{1,3}\d{1,4}/g),B=this.formula.replace(/([a-zA-Z0-9]+!)?[A-Z]{1,3}\d{1,4}:[A-Z]{1,3}\d{1,4}/g,"").match(/([a-zA-Z0-9]+!)?[A-Z]{1,3}\d{1,4}/g);return{ranges:M,cells:B}}},{key:"formula",get:function(){return this.model.formula||this._getTranslatedFormula()},set:function(M){this.model.formula=M}},{key:"formulaType",get:function(){return this.model.formula?h.FormulaType.Master:this.model.sharedFormula?h.FormulaType.Shared:h.FormulaType.None}},{key:"result",get:function(){return this.model.result},set:function(M){this.model.result=M}},{key:"type",get:function(){return x.Types.Formula}},{key:"effectiveType",get:function(){var M=this.model.result;return M==null?h.ValueType.Null:M instanceof String||typeof M=="string"?h.ValueType.String:typeof M=="number"?h.ValueType.Number:M instanceof Date?h.ValueType.Date:M.text&&M.hyperlink?h.ValueType.Hyperlink:M.formula?h.ValueType.Formula:h.ValueType.Null}},{key:"address",get:function(){return this.model.address},set:function(M){this.model.address=M}}]),j}(),v=function(){function j(L,M){a(this,j),this.model={address:L.address,type:x.Types.SharedString,value:M}}return d(j,[{key:"toCsvString",value:function(){return this.model.value.toString()}},{key:"release",value:function(){}},{key:"toString",value:function(){return this.model.value.toString()}},{key:"value",get:function(){return this.model.value},set:function(M){this.model.value=M}},{key:"type",get:function(){return x.Types.SharedString}},{key:"effectiveType",get:function(){return x.Types.SharedString}},{key:"address",get:function(){return this.model.address},set:function(M){this.model.address=M}}]),j}(),k=function(){function j(L,M){a(this,j),this.model={address:L.address,type:x.Types.Boolean,value:M}}return d(j,[{key:"toCsvString",value:function(){return this.model.value?1:0}},{key:"release",value:function(){}},{key:"toString",value:function(){return this.model.value.toString()}},{key:"value",get:function(){return this.model.value},set:function(M){this.model.value=M}},{key:"type",get:function(){return x.Types.Boolean}},{key:"effectiveType",get:function(){return x.Types.Boolean}},{key:"address",get:function(){return this.model.address},set:function(M){this.model.address=M}}]),j}(),T=function(){function j(L,M){a(this,j),this.model={address:L.address,type:x.Types.Error,value:M}}return d(j,[{key:"toCsvString",value:function(){return this.toString()}},{key:"release",value:function(){}},{key:"toString",value:function(){return this.model.value.error.toString()}},{key:"value",get:function(){return this.model.value},set:function(M){this.model.value=M}},{key:"type",get:function(){return x.Types.Error}},{key:"effectiveType",get:function(){return x.Types.Error}},{key:"address",get:function(){return this.model.address},set:function(M){this.model.address=M}}]),j}(),C=function(){function j(L,M){a(this,j),this.model={address:L.address,type:x.Types.String,value:JSON.stringify(M),rawValue:M}}return d(j,[{key:"toCsvString",value:function(){return this.model.value}},{key:"release",value:function(){}},{key:"toString",value:function(){return this.model.value}},{key:"value",get:function(){return this.model.rawValue},set:function(M){this.model.rawValue=M,this.model.value=JSON.stringify(M)}},{key:"type",get:function(){return x.Types.String}},{key:"effectiveType",get:function(){return x.Types.String}},{key:"address",get:function(){return this.model.address},set:function(M){this.model.address=M}}]),j}(),D={getType:function(L){return L==null?x.Types.Null:L instanceof String||typeof L=="string"?x.Types.String:typeof L=="number"?x.Types.Number:typeof L=="boolean"?x.Types.Boolean:L instanceof Date?x.Types.Date:L.text&&L.hyperlink?x.Types.Hyperlink:L.formula||L.sharedFormula?x.Types.Formula:L.richText?x.Types.RichText:L.sharedString?x.Types.SharedString:L.error?x.Types.Error:x.Types.JSON},types:[{t:x.Types.Null,f:p},{t:x.Types.Number,f:S},{t:x.Types.String,f:w},{t:x.Types.Date,f:o},{t:x.Types.Hyperlink,f:s},{t:x.Types.Formula,f},{t:x.Types.Merge,f:c},{t:x.Types.JSON,f:C},{t:x.Types.SharedString,f:v},{t:x.Types.RichText,f:u},{t:x.Types.Boolean,f:k},{t:x.Types.Error,f:T}].reduce(function(j,L){return j[L.t]=L.f,j},[]),create:function(L,M,B){var R=this.types[L];if(!R)throw new Error("Could not create Value of type ".concat(L));return new R(M,B)}};n.exports=x},{"../utils/col-cache":19,"../utils/shared-formula":22,"../utils/under-dash":25,"./enums":7,"./note":9}],4:[function(e,n,i){function a(y,x){if(!(y instanceof x))throw new TypeError("Cannot call a class as a function")}function l(y,x){for(var p=0;p=this._worksheet.properties.outlineLevelCol)}},{key:"isDefault",get:function(){if(this.isCustomWidth||this.hidden||this.outlineLevel)return!1;var p=this.style;return!(p&&(p.font||p.numFmt||p.alignment||p.border||p.fill||p.protection))}},{key:"headerCount",get:function(){return this.headers.length}},{key:"values",get:function(){var p=[];return this.eachCell(function(S,w){S&&S.type!==b.ValueType.Null&&(p[w]=S.value)}),p},set:function(p){var S=this;if(p){var w=this.number,u=0;p.hasOwnProperty("0")&&(u=1),p.forEach(function(o,s){S._worksheet.getCell(s+u,w).value=o})}}},{key:"numFmt",get:function(){return this.style.numFmt},set:function(p){this._applyStyle("numFmt",p)}},{key:"font",get:function(){return this.style.font},set:function(p){this._applyStyle("font",p)}},{key:"alignment",get:function(){return this.style.alignment},set:function(p){this._applyStyle("alignment",p)}},{key:"protection",get:function(){return this.style.protection},set:function(p){this._applyStyle("protection",p)}},{key:"border",get:function(){return this.style.border},set:function(p){this._applyStyle("border",p)}},{key:"fill",get:function(){return this.style.fill},set:function(p){this._applyStyle("fill",p)}}],[{key:"toModel",value:function(p){var S=[],w=null;return p&&p.forEach(function(u,o){u.isDefault?w&&(w=null):!w||!u.equivalentTo(w)?(w={min:o+1,max:o+1,width:u.width!==void 0?u.width:_,style:u.style,isCustomWidth:u.isCustomWidth,hidden:u.hidden,outlineLevel:u.outlineLevel,collapsed:u.collapsed},S.push(w)):w.max=o+1}),S.length?S:void 0}},{key:"fromModel",value:function(p,S){S=S||[];for(var w=[],u=1,o=0;othis.bottom)&&(this.bottom=x),(!this.model.right||p>this.right)&&(this.right=p)}},{key:"expandRow",value:function(g){if(g){var y=g.dimensions,x=g.number;y&&this.expand(x,y.min,x,y.max)}}},{key:"expandToAddress",value:function(g){var y=m.decodeEx(g);this.expand(y.row,y.col,y.row,y.col)}},{key:"toString",value:function(){return this.range}},{key:"intersects",value:function(g){return!(g.sheetName&&this.sheetName&&g.sheetName!==this.sheetName||g.bottomthis.bottom||g.rightthis.right)}},{key:"contains",value:function(g){var y=m.decodeEx(g);return this.containsEx(y)}},{key:"containsEx",value:function(g){return g.sheetName&&this.sheetName&&g.sheetName!==this.sheetName?!1:g.row>=this.top&&g.row<=this.bottom&&g.col>=this.left&&g.col<=this.right}},{key:"forEachAddress",value:function(g){for(var y=this.left;y<=this.right;y++)for(var x=this.top;x<=this.bottom;x++)g(m.encodeAddress(x,y),x,y)}},{key:"top",get:function(){return this.model.top||1},set:function(g){this.model.top=g}},{key:"left",get:function(){return this.model.left||1},set:function(g){this.model.left=g}},{key:"bottom",get:function(){return this.model.bottom||1},set:function(g){this.model.bottom=g}},{key:"right",get:function(){return this.model.right||1},set:function(g){this.model.right=g}},{key:"sheetName",get:function(){return this.model.sheetName},set:function(g){this.model.sheetName=g}},{key:"_serialisedSheetName",get:function(){var g=this.model.sheetName;return g?/^[a-zA-Z0-9]*$/.test(g)?"".concat(g,"!"):"'".concat(g,"'!"):""}},{key:"tl",get:function(){return m.n2l(this.left)+this.top}},{key:"$t$l",get:function(){return"$".concat(m.n2l(this.left),"$").concat(this.top)}},{key:"br",get:function(){return m.n2l(this.right)+this.bottom}},{key:"$b$r",get:function(){return"$".concat(m.n2l(this.right),"$").concat(this.bottom)}},{key:"range",get:function(){return"".concat(this._serialisedSheetName+this.tl,":").concat(this.br)}},{key:"$range",get:function(){return"".concat(this._serialisedSheetName+this.$t$l,":").concat(this.$b$r)}},{key:"shortRange",get:function(){return this.count>1?this.range:this._serialisedSheetName+this.tl}},{key:"$shortRange",get:function(){return this.count>1?this.$range:this._serialisedSheetName+this.$t$l}},{key:"count",get:function(){return(1+this.bottom-this.top)*(1+this.right-this.left)}}]),h}();n.exports=b},{"../utils/col-cache":19}],11:[function(e,n,i){function a(y,x){if(!(y instanceof x))throw new TypeError("Cannot call a class as a function")}function l(y,x){for(var p=0;p2?u-2:0),s=2;s0)for(v=f;v>=w;v--)k=this._cells[v-1],k?(T=this.getCell(v+c),T.value=k.value,T.style=k.style,T._comment=k._comment):this._cells[v+c-1]=void 0;for(v=0;vw.col)&&(p=w.col),S0?{min:p,max:S}:null}},{key:"numFmt",get:function(){return this.style.numFmt},set:function(p){this._applyStyle("numFmt",p)}},{key:"font",get:function(){return this.style.font},set:function(p){this._applyStyle("font",p)}},{key:"alignment",get:function(){return this.style.alignment},set:function(p){this._applyStyle("alignment",p)}},{key:"protection",get:function(){return this.style.protection},set:function(p){this._applyStyle("protection",p)}},{key:"border",get:function(){return this.style.border},set:function(p){this._applyStyle("border",p)}},{key:"fill",get:function(){return this.style.fill},set:function(p){this._applyStyle("fill",p)}},{key:"hidden",get:function(){return!!this._hidden},set:function(p){this._hidden=p}},{key:"outlineLevel",get:function(){return this._outlineLevel||0},set:function(p){this._outlineLevel=p}},{key:"collapsed",get:function(){return!!(this._outlineLevel&&this._outlineLevel>=this._worksheet.properties.outlineLevelRow)}},{key:"model",get:function(){var p=[],S=0,w=0;return this._cells.forEach(function(u){if(u){var o=u.model;o&&((!S||S>u.col)&&(S=u.col),w0,"Table must be on valid row"),S(o>0,"Table must be on valid col");var s=this.width,c=this.filterHeight,f=this.tableHeight;x.autoFilterRef=m.encode(u,o,u+c-1,o+s-1),x.tableRef=m.encode(u,o,u+f-1,o+s-1),x.columns.forEach(function(v,k){S(v.name,"Column ".concat(k," must have a name")),k===0?p(v,"totalsRowLabel","Total"):(p(v,"totalsRowFunction","none"),v.totalsRowFormula=y.getFormula(v))})}},{key:"store",value:function(){var y=this,x=function(k,T){T&&Object.keys(T).forEach(function(C){k[C]=T[C]})},p=this.worksheet,S=this.table,w=S.tl,u=w.row,o=w.col,s=0;if(S.headerRow){var c=p.getRow(u+s++);S.columns.forEach(function(v,k){var T=v.style,C=v.name,D=c.getCell(o+k);D.value=C,x(D,T)})}if(S.rows.forEach(function(v){var k=p.getRow(u+s++);v.forEach(function(T,C){var D=k.getCell(o+C);D.value=T,x(D,S.columns[C].style)})}),S.totalsRow){var f=p.getRow(u+s++);S.columns.forEach(function(v,k){var T=f.getCell(o+k);if(k===0)T.value=v.totalsRowLabel;else{var C=y.getFormula(v);C?T.value={formula:v.totalsRowFormula,result:v.totalsRowResult}:T.value=null}x(T,v.style)})}}},{key:"load",value:function(y){var x=this,p=this.table,S=p.tl,w=S.row,u=S.col,o=0;if(p.headerRow){var s=y.getRow(w+o++);p.columns.forEach(function(f,v){var k=s.getCell(u+v);k.value=f.name})}if(p.rows.forEach(function(f){var v=y.getRow(w+o++);f.forEach(function(k,T){var C=v.getCell(u+T);C.value=k})}),p.totalsRow){var c=y.getRow(w+o++);p.columns.forEach(function(f,v){var k=c.getCell(u+v);if(v===0)k.value=f.totalsRowLabel;else{var T=x.getFormula(f);T&&(k.value={formula:f.totalsRowFormula,result:f.totalsRowResult})}})}}},{key:"cacheState",value:function(){this._cache||(this._cache={ref:this.ref,width:this.width,tableHeight:this.tableHeight})}},{key:"commit",value:function(){if(this._cache){this.validate();var y=m.decodeAddress(this._cache.ref);if(this.ref!==this._cache.ref)for(var x=0;x1&&arguments[1]!==void 0?arguments[1]:1;this.cacheState(),this.table.rows.splice(y,x)}},{key:"getColumn",value:function(y){var x=this.table.columns[y];return new b(this,x,y)}},{key:"addColumn",value:function(y,x,p){this.cacheState(),p===void 0?(this.table.columns.push(y),this.table.rows.forEach(function(S,w){S.push(x[w])})):(this.table.columns.splice(p,0,y),this.table.rows.forEach(function(S,w){S.splice(p,0,x[w])}))}},{key:"removeColumns",value:function(y){var x=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1;this.cacheState(),this.table.columns.splice(y,x),this.table.rows.forEach(function(p){p.splice(y,x)})}},{key:"_assign",value:function(y,x,p){this.cacheState(),y[x]=p}},{key:"width",get:function(){return this.table.columns.length}},{key:"height",get:function(){return this.table.rows.length}},{key:"filterHeight",get:function(){return this.height+(this.table.headerRow?1:0)}},{key:"tableHeight",get:function(){return this.filterHeight+(this.table.totalsRow?1:0)}},{key:"model",get:function(){return this.table},set:function(y){this.table=y}},{key:"ref",get:function(){return this.table.ref},set:function(y){this._assign(this.table,"ref",y)}},{key:"name",get:function(){return this.table.name},set:function(y){this.table.name=y}},{key:"displayName",get:function(){return this.table.displyName||this.table.name}},{key:"displayNamename",set:function(y){this.table.displayName=y}},{key:"headerRow",get:function(){return this.table.headerRow},set:function(y){this._assign(this.table,"headerRow",y)}},{key:"totalsRow",get:function(){return this.table.totalsRow},set:function(y){this._assign(this.table,"totalsRow",y)}},{key:"theme",get:function(){return this.table.style.name},set:function(y){this.table.style.name=y}},{key:"showFirstColumn",get:function(){return this.table.style.showFirstColumn},set:function(y){this.table.style.showFirstColumn=y}},{key:"showLastColumn",get:function(){return this.table.style.showLastColumn},set:function(y){this.table.style.showLastColumn=y}},{key:"showRowStripes",get:function(){return this.table.style.showRowStripes},set:function(y){this.table.style.showRowStripes=y}},{key:"showColumnStripes",get:function(){return this.table.style.showColumnStripes},set:function(y){this.table.style.showColumnStripes=y}}]),_}();n.exports=h},{"../utils/col-cache":19}],13:[function(e,n,i){function a(y,x){if(!(y instanceof x))throw new TypeError("Cannot call a class as a function")}function l(y,x){for(var p=0;p31&&console.warn("Worksheet name ".concat(p," exceeds 31 chars. This will be truncated")),/[*?:/\\[\]]/.test(p))throw new Error("Worksheet name ".concat(p," cannot include any of the following characters: * ? : \\ / [ ]"));if(/(^')|('$)/.test(p))throw new Error("The first or last character of worksheet name cannot be a single quotation mark: ".concat(p));if(p=(p||"sheet".concat(w)).substring(0,31),this._worksheets.find(function(c){return c&&c.name.toLowerCase()===p.toLowerCase()}))throw new Error("Worksheet name already exists: ".concat(p));S&&(typeof S=="string"?(console.trace('tabColor argument is now deprecated. Please use workbook.addWorksheet(name, {properties: { tabColor: { argb: "rbg value" } }'),S={properties:{tabColor:{argb:S}}}):(S.argb||S.theme||S.indexed)&&(console.trace("tabColor argument is now deprecated. Please use workbook.addWorksheet(name, {properties: { tabColor: { ... } }"),S={properties:{tabColor:S}}));var u=this._worksheets.reduce(function(c,f){return(f&&f.orderNo)>c?f.orderNo:c},0),o=Object.assign({},S,{id:w,name:p,orderNo:u+1,workbook:this}),s=new m(o);return this._worksheets[w]=s,s}},{key:"removeWorksheetEx",value:function(p){delete this._worksheets[p.id]}},{key:"removeWorksheet",value:function(p){var S=this.getWorksheet(p);S&&S.destroy()}},{key:"getWorksheet",value:function(p){if(p===void 0)return this._worksheets.find(Boolean);if(typeof p=="number")return this._worksheets[p];if(typeof p=="string")return this._worksheets.find(function(S){return S&&S.name===p})}},{key:"eachSheet",value:function(p){this.worksheets.forEach(function(S){p(S,S.id)})}},{key:"clearThemes",value:function(){this._themes=void 0}},{key:"addImage",value:function(p){var S=this.media.length;return this.media.push(Object.assign({},p,{type:"image"})),S}},{key:"getImage",value:function(p){return this.media[p]}},{key:"xlsx",get:function(){return this._xlsx||(this._xlsx=new h(this)),this._xlsx}},{key:"csv",get:function(){return this._csv||(this._csv=new _(this)),this._csv}},{key:"nextId",get:function(){for(var p=1;pj.length)&&(L=j.length);for(var M=0,B=new Array(L);Mthis._columns.length)for(var R=this._columns.length+1;R<=M;)this._columns.push(new c(this,R++));return this._columns[M-1]}},{key:"spliceColumns",value:function(M,B){for(var R=this,P=this._rows,O=P.length,F=arguments.length,H=new Array(F>2?F-2:0),V=2;V0)for(var z=function(ge){var ee=[M,B];H.forEach(function(J){ee.push(J[ge]||null)});var se=R.getRow(ge+1);se.splice.apply(se,ee)},X=0;X0)for(var te=U;te>=N;te--)this.getColumn(te+I).defn=this.getColumn(te).defn;for(var re=M;re1&&arguments[1]!==void 0?arguments[1]:"n",R=this._nextRow,P=this.getRow(R);return P.values=M,this._setStyleOption(R,B[0]==="i"?B:"n"),P}},{key:"addRows",value:function(M){var B=this,R=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"n",P=[];return M.forEach(function(O){P.push(B.addRow(O,R))}),P}},{key:"insertRow",value:function(M,B){var R=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"n";return this.spliceRows(M,0,B),this._setStyleOption(M,R),this.getRow(M)}},{key:"insertRows",value:function(M,B){var R=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"n";if(this.spliceRows.apply(this,[M,0].concat(m(B))),R!=="n")for(var P=0;P1&&arguments[1]!==void 0?arguments[1]:"n";B[0]==="o"&&this.findRow(M+1)!==void 0?this._copyStyle(M+1,M,B[1]==="+"):B[0]==="i"&&this.findRow(M-1)!==void 0&&this._copyStyle(M-1,M,B[1]==="+")}},{key:"_copyStyle",value:function(M,B){var R=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,P=this.getRow(M),O=this.getRow(B);O.style=Object.freeze(l({},P.style)),P.eachCell({includeEmpty:R},function(F,H){O.getCell(H).style=Object.freeze(l({},F.style))}),O.height=P.height}},{key:"duplicateRow",value:function(M,B){var R=this,P=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,O=this._rows[M-1],F=new Array(B).fill(O.values);this.spliceRows.apply(this,[M+1,P?0:B].concat(m(F)));for(var H=function(X){var I=R._rows[M+X];I.style=O.style,I.height=O.height,O.eachCell({includeEmpty:!0},function(N,U){I.getCell(U).style=N.style})},V=0;V2?O-2:0),H=2;H0)for(I=X;I>=P;I--)N=this._rows[I-1],N?function(){var G=R.getRow(I+z);G.values=N.values,G.style=N.style,G.height=N.height,N.eachCell({includeEmpty:!0},function(te,re){if(G.getCell(re).style=te.style,te._value.constructor.name==="MergeValue"){var ne=R.getRow(te._row._number+V).getCell(re),ge=te._value._master,ee=R.getRow(ge._row._number+V).getCell(ge._column._number);ne.merge(ee)}})}():this._rows[I+z-1]=void 0;for(I=0;IM.top||O>M.left)&&this.getCell(P,O).merge(R,B);this._merges[R.address]=M}},{key:"_unMergeMaster",value:function(M){var B=this._merges[M.address];if(B){for(var R=B.top;R<=B.bottom;R++)for(var P=B.left;P<=B.right;P++)this.getCell(R,P).unmerge();delete this._merges[M.address]}}},{key:"unMergeCells",value:function(){for(var M=arguments.length,B=new Array(M),R=0;R3&&arguments[3]!==void 0?arguments[3]:"shared",O=u.decode(M),F=O.top,H=O.left,V=O.bottom,z=O.right,X=z-H+1,I=u.encodeAddress(F,H),N=P==="shared",U;typeof R=="function"?U=R:Array.isArray(R)?Array.isArray(R[0])?U=function(ge,ee){return R[ge-F][ee-H]}:U=function(ge,ee){return R[(ge-F)*X+(ee-H)]}:U=function(){};for(var G=!0,te=F;te<=V;te++)for(var re=H;re<=z;re++)G?(this.getCell(te,re).value={shareType:P,formula:B,ref:M,result:U(te,re)},G=!1):this.getCell(te,re).value=N?{sharedFormula:I,result:U(te,re)}:U(te,re)}},{key:"addImage",value:function(M,B){var R={type:"image",imageId:M,range:B};this._media.push(new v(this,R))}},{key:"getImages",value:function(){return this._media.filter(function(M){return M.type==="image"})}},{key:"addBackgroundImage",value:function(M){var B={type:"background",imageId:M};this._media.push(new v(this,B))}},{key:"getBackgroundImageId",value:function(){var M=this._media.find(function(B){return B.type==="background"});return M&&M.imageId}},{key:"protect",value:function(M,B){var R=this;return new Promise(function(P){R.sheetProtection={sheet:!0},B&&"spinCount"in B&&(B.spinCount=Number.isFinite(B.spinCount)?Math.round(Math.max(0,B.spinCount)):1e5),M&&(R.sheetProtection.algorithmName="SHA-512",R.sheetProtection.saltValue=C.randomBytes(16).toString("base64"),R.sheetProtection.spinCount=B&&"spinCount"in B?B.spinCount:1e5,R.sheetProtection.hashValue=C.convertPasswordToHash(M,"SHA512",R.sheetProtection.saltValue,R.sheetProtection.spinCount)),B&&(R.sheetProtection=Object.assign(R.sheetProtection,B),!M&&"spinCount"in B&&delete R.sheetProtection.spinCount),P()})}},{key:"unprotect",value:function(){this.sheetProtection=null}},{key:"addTable",value:function(M){var B=new k(this,M);return this.tables[M.name]=B,B}},{key:"getTable",value:function(M){return this.tables[M]}},{key:"removeTable",value:function(M){delete this.tables[M]}},{key:"getTables",value:function(){return Object.values(this.tables)}},{key:"addConditionalFormatting",value:function(M){this.conditionalFormattings.push(M)}},{key:"removeConditionalFormatting",value:function(M){typeof M=="number"?this.conditionalFormattings.splice(M,1):M instanceof Function?this.conditionalFormattings=this.conditionalFormattings.filter(M):this.conditionalFormattings=[]}},{key:"_parseRows",value:function(M){var B=this;this._rows=[],M.rows.forEach(function(R){var P=new s(B,R.number);B._rows[P.number-1]=P,P.model=R})}},{key:"_parseMergeCells",value:function(M){var B=this;w.each(M.mergeCells,function(R){B.mergeCellsWithoutStyle(R)})}},{key:"workbook",get:function(){return this._workbook}},{key:"dimensions",get:function(){var M=new o;return this._rows.forEach(function(B){if(B){var R=B.dimensions;R&&M.expand(B.number,R.min,B.number,R.max)}}),M}},{key:"columns",get:function(){return this._columns},set:function(M){var B=this;this._headerRowCount=M.reduce(function(O,F){var H=F.header&&1||F.headers&&F.headers.length||0;return Math.max(O,H)},0);var R=1,P=this._columns=[];M.forEach(function(O){var F=new c(B,R++,!1);P.push(F),F.defn=O})}},{key:"lastColumn",get:function(){return this.getColumn(this.columnCount)}},{key:"columnCount",get:function(){var M=0;return this.eachRow(function(B){M=Math.max(M,B.cellCount)}),M}},{key:"actualColumnCount",get:function(){var M=[],B=0;return this.eachRow(function(R){R.eachCell(function(P){var O=P.col;M[O]||(M[O]=!0,B++)})}),B}},{key:"_lastRowNumber",get:function(){for(var M=this._rows,B=M.length;B>0&&M[B-1]===void 0;)B--;return B}},{key:"_nextRow",get:function(){return this._lastRowNumber+1}},{key:"lastRow",get:function(){if(this._rows.length)return this._rows[this._rows.length-1]}},{key:"rowCount",get:function(){return this._lastRowNumber}},{key:"actualRowCount",get:function(){var M=0;return this.eachRow(function(){M++}),M}},{key:"hasMerges",get:function(){return w.some(this._merges,Boolean)}},{key:"tabColor",get:function(){return console.trace("worksheet.tabColor property is now deprecated. Please use worksheet.properties.tabColor"),this.properties.tabColor},set:function(M){console.trace("worksheet.tabColor property is now deprecated. Please use worksheet.properties.tabColor"),this.properties.tabColor=M}},{key:"model",get:function(){var M={id:this.id,name:this.name,dataValidations:this.dataValidations.model,properties:this.properties,state:this.state,pageSetup:this.pageSetup,headerFooter:this.headerFooter,rowBreaks:this.rowBreaks,views:this.views,autoFilter:this.autoFilter,media:this._media.map(function(P){return P.model}),sheetProtection:this.sheetProtection,tables:Object.values(this.tables).map(function(P){return P.model}),conditionalFormattings:this.conditionalFormattings};M.cols=c.toModel(this.columns);var B=M.rows=[],R=M.dimensions=new o;return this._rows.forEach(function(P){var O=P&&P.model;O&&(R.expand(O.number,O.min,O.number,O.max),B.push(O))}),M.merges=[],w.each(this._merges,function(P){M.merges.push(P.range)}),M},set:function(M){var B=this;this.name=M.name,this._columns=c.fromModel(this,M.cols),this._parseRows(M),this._parseMergeCells(M),this.dataValidations=new T(M.dataValidations),this.properties=M.properties,this.pageSetup=M.pageSetup,this.headerFooter=M.headerFooter,this.views=M.views,this.autoFilter=M.autoFilter,this._media=M.media.map(function(R){return new v(B,R)}),this.sheetProtection=M.sheetProtection,this.tables=M.tables.reduce(function(R,P){var O=new k;return O.model=P,R[P.name]=O,R},{}),this.conditionalFormattings=M.conditionalFormattings}}]),j}();n.exports=D},{"../utils/col-cache":19,"../utils/encryptor":20,"../utils/under-dash":25,"./column":4,"./data-validations":5,"./enums":7,"./image":8,"./range":10,"./row":11,"./table":12}],15:[function(e,n,i){e("core-js/modules/es.promise"),e("core-js/modules/es.object.assign"),e("core-js/modules/es.object.keys"),e("core-js/modules/es.object.values"),e("core-js/modules/es.symbol"),e("core-js/modules/es.symbol.async-iterator"),e("core-js/modules/es.array.iterator"),e("core-js/modules/es.array.includes"),e("core-js/modules/es.array.find-index"),e("core-js/modules/es.array.find"),e("core-js/modules/es.string.from-code-point"),e("core-js/modules/es.string.includes"),e("core-js/modules/es.number.is-nan"),e("regenerator-runtime/runtime");var a={Workbook:e("./doc/workbook")},l=e("./doc/enums");Object.keys(l).forEach(function(d){a[d]=l[d]}),n.exports=a},{"./doc/enums":7,"./doc/workbook":13,"core-js/modules/es.array.find":316,"core-js/modules/es.array.find-index":315,"core-js/modules/es.array.includes":317,"core-js/modules/es.array.iterator":318,"core-js/modules/es.number.is-nan":319,"core-js/modules/es.object.assign":320,"core-js/modules/es.object.keys":321,"core-js/modules/es.object.values":322,"core-js/modules/es.promise":323,"core-js/modules/es.string.from-code-point":324,"core-js/modules/es.string.includes":325,"core-js/modules/es.symbol":327,"core-js/modules/es.symbol.async-iterator":326,"regenerator-runtime/runtime":492}],16:[function(e,n,i){var a=typeof TextDecoder>"u"?null:new TextDecoder("utf-8");function l(d){return typeof d=="string"?d:a?a.decode(d):d.toString()}i.bufferToString=l},{}],17:[function(e,n,i){var a=typeof TextEncoder>"u"?null:new TextEncoder("utf-8"),l=e("buffer"),d=l.Buffer;function m(b){return typeof b!="string"?b:a?d.from(a.encode(b).buffer):d.from(b)}i.stringToBuffer=m},{buffer:216}],18:[function(e,n,i){function a(_,g){if(!(_ instanceof g))throw new TypeError("Cannot call a class as a function")}function l(_,g){for(var y=0;yS.length)&&(w=S.length);for(var u=0,o=new Array(w);u"u"||!(Symbol.iterator in Object(S)))){var u=[],o=!0,s=!1,c=void 0;try{for(var f=S[Symbol.iterator](),v;!(o=(v=f.next()).done)&&(u.push(v.value),!(w&&u.length===w));o=!0);}catch(k){s=!0,c=k}finally{try{!o&&f.return!=null&&f.return()}finally{if(s)throw c}}return u}}function h(S){if(Array.isArray(S))return S}function _(S,w){var u=Object.keys(S);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(S);w&&(o=o.filter(function(s){return Object.getOwnPropertyDescriptor(S,s).enumerable})),u.push.apply(u,o)}return u}function g(S){for(var w=1;w=4)throw new Error("Out of bounds. Excel supports columns from 1 to 16384");if(this._l2nFill<1&&w>=1){for(;v<=26;)u=this._dictionary[v-1],this._n2l[v]=u,this._l2n[u]=v,v++;this._l2nFill=1}if(this._l2nFill<2&&w>=2){for(v=27;v<=26+26*26;)o=v-(26+1),s=o%26,c=Math.floor(o/26),u=this._dictionary[c]+this._dictionary[s],this._n2l[v]=u,this._l2n[u]=v,v++;this._l2nFill=2}if(this._l2nFill<3&&w>=3){for(v=26+26*26+1;v<=16384;)o=v-(26*26+26+1),s=o%26,c=Math.floor(o/26)%26,f=Math.floor(o/(26*26)),u=this._dictionary[f]+this._dictionary[c]+this._dictionary[s],this._n2l[v]=u,this._l2n[u]=v,v++;this._l2nFill=3}},l2n:function(w){if(this._l2n[w]||this._fill(w.length),!this._l2n[w])throw new Error("Out of bounds. Invalid column letter: ".concat(w));return this._l2n[w]},n2l:function(w){if(w<1||w>16384)throw new Error("".concat(w," is out of bounds. Excel supports columns from 1 to 16384"));return this._n2l[w]||this._fill(this._level(w)),this._n2l[w]},_hash:{},validateAddress:function(w){if(!x.test(w))throw new Error("Invalid Address: ".concat(w));return!0},decodeAddress:function(w){var u=w.length<5&&this._hash[w];if(u)return u;for(var o=!1,s="",c=0,f=!1,v="",k=0,T=0,C;T=65&&C<=90)o=!0,s+=w[T],c=c*26+C-64;else if(C>=48&&C<=57)f=!0,v+=w[T],k=k*10+C-48;else if(f&&o&&C!==36)break;if(!o)c=void 0;else if(c>16384)throw new Error("Out of bounds. Invalid column letter: ".concat(s));f||(k=void 0),w=s+v;var D={address:w,col:c,row:k,$col$row:"$".concat(s,"$").concat(v)};return c<=100&&k<=100&&(this._hash[w]=D,this._hash[D.$col$row]=D),D},getAddress:function(w,u){if(u){var o=this.n2l(u)+w;return this.decodeAddress(o)}return this.decodeAddress(w)},decode:function(w){var u=w.split(":");if(u.length===2){var o=this.decodeAddress(u[0]),s=this.decodeAddress(u[1]),c={top:Math.min(o.row,s.row),left:Math.min(o.col,s.col),bottom:Math.max(o.row,s.row),right:Math.max(o.col,s.col)};return c.tl=this.n2l(c.left)+c.top,c.br=this.n2l(c.right)+c.bottom,c.dimensions="".concat(c.tl,":").concat(c.br),c}return this.decodeAddress(w)},decodeEx:function(w){var u=w.match(/(?:(?:(?:'((?:[^']|'')*)')|([^'^ !]*))!)?(.*)/),o=u[1]||u[2],s=u[3],c=s.split(":");if(c.length>1){var f=this.decodeAddress(c[0]),v=this.decodeAddress(c[1]),k=Math.min(f.row,v.row),T=Math.min(f.col,v.col),C=Math.max(f.row,v.row),D=Math.max(f.col,v.col);return f=this.n2l(T)+k,v=this.n2l(D)+C,{top:k,left:T,bottom:C,right:D,sheetName:o,tl:{address:f,col:T,row:k,$col$row:"$".concat(this.n2l(T),"$").concat(k),sheetName:o},br:{address:v,col:D,row:C,$col$row:"$".concat(this.n2l(D),"$").concat(C),sheetName:o},dimensions:"".concat(f,":").concat(v)}}if(s.startsWith("#"))return o?{sheetName:o,error:s}:{error:s};var j=this.decodeAddress(s);return o?g({sheetName:o},j):j},encodeAddress:function(w,u){return p.n2l(u)+w},encode:function(){switch(arguments.length){case 2:return p.encodeAddress(arguments[0],arguments[1]);case 4:return"".concat(p.encodeAddress(arguments[0],arguments[1]),":").concat(p.encodeAddress(arguments[2],arguments[3]));default:throw new Error("Can only encode with 2 or 4 arguments")}},inRange:function(w,u){var o=a(w,5),s=o[0],c=o[1],f=o[3],v=o[4],k=a(u,2),T=k[0],C=k[1];return T>=s&&T<=f&&C>=c&&C<=v}};n.exports=p},{}],20:[function(e,n,i){(function(a){var l=e("crypto"),d={hash:function(b){for(var h=l.createHash(b),_=arguments.length,g=new Array(_>1?_-1:0),y=1;y<_;y++)g[y-1]=arguments[y];return h.update(a.concat(g)),h.digest()},convertPasswordToHash:function(b,h,_,g){h=h.toLowerCase();var y=l.getHashes();if(y.indexOf(h)<0)throw new Error("Hash algorithm '".concat(h,"' not supported!"));for(var x=a.from(b,"utf16le"),p=this.hash(h,a.from(_,"base64"),x),S=0;S3||c.length===3&&c>"XFD")return x;var k=a.l2n(c),T=parseInt(v,10);s||(k+=y.col-g.col),f||(T+=y.row-g.row);var C=(p||"")+(s||"")+a.n2l(k)+(f||"")+T;return C}return x})}n.exports={slideFormula:m}},{"./col-cache":19}],23:[function(e,n,i){(function(a,l){function d(s,c,f,v,k,T,C){try{var D=s[T](C),j=D.value}catch(L){f(L);return}D.done?c(j):Promise.resolve(j).then(v,k)}function m(s){return function(){var c=this,f=arguments;return new Promise(function(v,k){var T=s.apply(c,f);function C(j){d(T,v,k,C,D,"next",j)}function D(j){d(T,v,k,C,D,"throw",j)}C(void 0)})}}function b(s,c){if(!(s instanceof c))throw new TypeError("Cannot call a class as a function")}function h(s,c){for(var f=0;f=this.length?(v=this.toBuffer(),this.iRead=this.iWrite,v):(v=l.alloc(f),this.buffer.copy(v,0,this.iRead,f),this.iRead+=f,v)}},{key:"write",value:function(f,v,k){var T=Math.min(k,this.size-this.iWrite);return f.copy(this.buffer,this.iWrite,v,v+T),this.iWrite+=T,T}},{key:"length",get:function(){return this.iWrite-this.iRead}},{key:"eod",get:function(){return this.iRead===this.iWrite}},{key:"full",get:function(){return this.iWrite===this.size}}]),s}(),o=function(c){c=c||{},this.bufSize=c.bufSize||1024*1024,this.buffers=[],this.batch=c.batch||!1,this.corked=!1,this.inPos=0,this.outPos=0,this.pipes=[],this.paused=!1,this.encoding=null};y.inherits(o,g.Duplex,{toBuffer:function(){switch(this.buffers.length){case 0:return null;case 1:return this.buffers[0].toBuffer();default:return l.concat(this.buffers.map(function(c){return c.toBuffer()}))}},_getWritableBuffer:function(){if(this.buffers.length){var c=this.buffers[this.buffers.length-1];if(!c.full)return c}var f=new u(this.bufSize);return this.buffers.push(f),f},_pipe:function(c){var f=this;return m(regeneratorRuntime.mark(function v(){var k;return regeneratorRuntime.wrap(function(C){for(;;)switch(C.prev=C.next){case 0:return k=function(j){return new Promise(function(L){j.write(c.toBuffer(),function(){L()})})},C.next=3,Promise.all(f.pipes.map(k));case 3:case"end":return C.stop()}},v)}))()},_writeToBuffers:function(c){for(var f=0,v=c.length;f1;)k._pipe(k.buffers.shift());j.next=29;break;case 21:if(k.corked){j.next=27;break}return j.next=24,k._pipe(C);case 24:v(),j.next=29;break;case 27:k._writeToBuffers(C),a.nextTick(v);case 29:j.next=34;break;case 31:k.paused||k.emit("data",C.toBuffer()),k._writeToBuffers(C),k.emit("readable");case 34:return j.abrupt("return",!0);case 35:case"end":return j.stop()}},T)}))()},cork:function(){this.corked=!0},_flush:function(){if(this.pipes.length)for(;this.buffers.length;)this._pipe(this.buffers.shift())},uncork:function(){this.corked=!1,this._flush()},end:function(c,f,v){var k=this,T=function(D){D?v(D):(k._flush(),k.pipes.forEach(function(j){j.end()}),k.emit("finish"))};c?this.write(c,f,T):T()},read:function(c){var f;if(c){for(f=[];c&&this.buffers.length&&!this.buffers[0].eod;){var v=this.buffers[0],k=v.read(c);c-=k.length,f.push(k),v.eod&&v.full&&this.buffers.shift()}return l.concat(f)}return f=this.buffers.map(function(T){return T.toBuffer()}).filter(Boolean),this.buffers=[],l.concat(f)},setEncoding:function(c){this.encoding=c},pause:function(){this.paused=!0},resume:function(){this.paused=!1},isPaused:function(){return!!this.paused},pipe:function(c){this.pipes.push(c),!this.paused&&this.buffers.length&&this.end()},unpipe:function(c){this.pipes=this.pipes.filter(function(f){return f!==c})},unshift:function(){throw new Error("Not Implemented")},wrap:function(){throw new Error("Not Implemented")}}),n.exports=o}).call(this,e("_process"),e("buffer").Buffer)},{"./string-buf":24,"./utils":26,_process:467,buffer:216,"readable-stream":491}],24:[function(e,n,i){(function(a){function l(h,_){if(!(h instanceof _))throw new TypeError("Cannot call a class as a function")}function d(h,_){for(var g=0;g<_.length;g++){var y=_[g];y.enumerable=y.enumerable||!1,y.configurable=!0,"value"in y&&(y.writable=!0),Object.defineProperty(h,y.key,y)}}function m(h,_,g){return _&&d(h.prototype,_),g&&d(h,g),h}var b=function(){function h(_){l(this,h),this._buf=a.alloc(_&&_.size||16384),this._encoding=_&&_.encoding||"utf8",this._inPos=0,this._buffer=void 0}return m(h,[{key:"toBuffer",value:function(){return this._buffer||(this._buffer=a.alloc(this.length),this._buf.copy(this._buffer,0,0,this.length)),this._buffer}},{key:"reset",value:function(g){g=g||0,this._buffer=void 0,this._inPos=g}},{key:"_grow",value:function(g){for(var y=this._buf.length*2;y=this._buf.length-4;)this._grow(this._inPos+g.length),y=this._inPos+this._buf.write(g,this._inPos,this._encoding);this._inPos=y}},{key:"addStringBuf",value:function(g){g.length&&(this._buffer=void 0,this.length+g.length>this.capacity&&this._grow(this.length+g.length),g._buf.copy(this._buf,this._inPos,0,g.length),this._inPos+=g.length)}},{key:"length",get:function(){return this._inPos}},{key:"capacity",get:function(){return this._buf.length}},{key:"buffer",get:function(){return this._buf}}]),h}();n.exports=b}).call(this,e("buffer").Buffer)},{buffer:216}],25:[function(e,n,i){function a(b){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(_){return typeof _}:a=function(_){return _&&typeof Symbol=="function"&&_.constructor===Symbol&&_!==Symbol.prototype?"symbol":typeof _},a(b)}var l=Object.prototype.toString,d=/["&<>]/,m={each:function(h,_){h&&(Array.isArray(h)?h.forEach(_):Object.keys(h).forEach(function(g){_(h[g],g)}))},some:function(h,_){return h?Array.isArray(h)?h.some(_):Object.keys(h).some(function(g){return _(h[g],g)}):!1},every:function(h,_){return h?Array.isArray(h)?h.every(_):Object.keys(h).every(function(g){return _(h[g],g)}):!0},map:function(h,_){return h?Array.isArray(h)?h.map(_):Object.keys(h).map(function(g){return _(h[g],g)}):[]},keyBy:function(h,_){return h.reduce(function(g,y){return g[y[_]]=y,g},{})},isEqual:function(h,_){var g=a(h),y=a(_),x=Array.isArray(h),p=Array.isArray(_);if(g!==y)return!1;switch(a(h)){case"object":return x||p?x&&p?h.length===_.length&&h.every(function(S,w){var u=_[w];return m.isEqual(S,u)}):!1:m.every(h,function(S,w){var u=_[w];return m.isEqual(S,u)});default:return h===_}},escapeHtml:function(h){var _=d.exec(h);if(!_)return h;for(var g="",y="",x=0,p=_.index;p":y=">";break;default:continue}x!==p&&(g+=h.substring(x,p)),x=p+1,g+=y}return x!==p?g+h.substring(x,p):g},strcmp:function(h,_){return h<_?-1:h>_?1:0},isUndefined:function(h){return l.call(h)==="[object Undefined]"},isObject:function(h){return l.call(h)==="[object Object]"},deepMerge:function(){var h=arguments[0]||{},_=arguments.length,g,y,x;function p(w,u){g=h[u],x=Array.isArray(w),m.isObject(w)||x?(x?(x=!1,y=g&&Array.isArray(g)?g:[]):y=g&&m.isObject(g)?g:{},h[u]=m.deepMerge(y,w)):m.isUndefined(w)||(h[u]=w)}for(var S=0;S<_;S++)m.each(arguments[S],p);return h}};n.exports=m},{}],26:[function(e,n,i){(function(a,l){var d=e("fs"),m=function(g,y,x,p){g.super_=y,p||(p=x,x=null),x&&Object.keys(x).forEach(function(w){Object.defineProperty(g,w,Object.getOwnPropertyDescriptor(x,w))});var S={constructor:{value:g,enumerable:!1,writable:!1,configurable:!0}};p&&Object.keys(p).forEach(function(w){S[w]=Object.getOwnPropertyDescriptor(p,w)}),g.prototype=Object.create(y.prototype,S)},b=/[<>&'"\x7F\x00-\x08\x0B-\x0C\x0E-\x1F]/,h={nop:function(){},promiseImmediate:function(g){return new Promise(function(y){a.setImmediate?l(function(){y(g)}):setTimeout(function(){y(g)},1)})},inherits:m,dateToExcel:function(g,y){return 25569+g.getTime()/(24*3600*1e3)-(y?1462:0)},excelToDate:function(g,y){var x=Math.round((g-25569+(y?1462:0))*24*3600*1e3);return new Date(x)},parsePath:function(g){var y=g.lastIndexOf("/");return{path:g.substring(0,y),name:g.substring(y+1)}},getRelsPath:function(g){var y=h.parsePath(g);return"".concat(y.path,"/_rels/").concat(y.name,".rels")},xmlEncode:function(g){var y=b.exec(g);if(!y)return g;for(var x="",p="",S=0,w=y.index;w=11&&u!==13)){p="";break}continue}}S!==w&&(x+=g.substring(S,w)),S=w+1,p&&(x+=p)}return S!==w?x+g.substring(S,w):x},xmlDecode:function(g){return g.replace(/&([a-z]*);/g,function(y){switch(y){case"<":return"<";case">":return">";case"&":return"&";case"'":return"'";case""":return'"';default:return y}})},validInt:function(g){var y=parseInt(g,10);return Number.isNaN(y)?0:y},isDateFmt:function(g){if(!g)return!1;g=g.replace(/\[[^\]]*]/g,""),g=g.replace(/"[^"]*"/g,"");var y=g.match(/[ymdhMsb]+/)!==null;return y},fs:{exists:function(g){return new Promise(function(y){d.access(g,d.constants.F_OK,function(x){y(!x)})})}},toIsoDateString:function(g){return g.toIsoString().subsstr(0,10)}};n.exports=h}).call(this,typeof cr<"u"?cr:typeof self<"u"?self:typeof window<"u"?window:{},e("timers").setImmediate)},{fs:215,timers:521}],27:[function(e,n,i){function a(s,c){if(!(s instanceof c))throw new TypeError("Cannot call a class as a function")}function l(s,c){for(var f=0;f",g="",x='="',p='"',S=" ";function w(s,c,f){s.push(S),s.push(c),s.push(x),s.push(b.xmlEncode(f.toString())),s.push(p)}function u(s,c){c&&m.each(c,function(f,v){f!==void 0&&w(s,v,f)})}var o=function(){function s(){a(this,s),this._xml=[],this._stack=[],this._rollbacks=[]}return d(s,[{key:"openXml",value:function(f){var v=this._xml;v.push(" +`)}},{key:"openNode",value:function(f,v){var k=this.tos,T=this._xml;k&&this.open&&T.push(_),this._stack.push(f),T.push(h),T.push(f),u(T,v),this.leaf=!0,this.open=!0}},{key:"addAttribute",value:function(f,v){if(!this.open)throw new Error("Cannot write attributes to node if it is not open");v!==void 0&&w(this._xml,f,v)}},{key:"addAttributes",value:function(f){if(!this.open)throw new Error("Cannot write attributes to node if it is not open");u(this._xml,f)}},{key:"writeText",value:function(f){var v=this._xml;this.open&&(v.push(_),this.open=!1),this.leaf=!1,v.push(b.xmlEncode(f.toString()))}},{key:"writeXml",value:function(f){this.open&&(this._xml.push(_),this.open=!1),this.leaf=!1,this._xml.push(f)}},{key:"closeNode",value:function(){var f=this._stack.pop(),v=this._xml;this.leaf?v.push(y):(v.push(g),v.push(f),v.push(_)),this.open=!1,this.leaf=!1}},{key:"leafNode",value:function(f,v,k){this.openNode(f,v),k!==void 0&&this.writeText(k),this.closeNode()}},{key:"closeAll",value:function(){for(;this._stack.length;)this.closeNode()}},{key:"addRollback",value:function(){return this._rollbacks.push({xml:this._xml.length,stack:this._stack.length,leaf:this.leaf,open:this.open}),this.cursor}},{key:"commit",value:function(){this._rollbacks.pop()}},{key:"rollback",value:function(){var f=this._rollbacks.pop();this._xml.length>f.xml&&this._xml.splice(f.xml,this._xml.length-f.xml),this._stack.length>f.stack&&this._stack.splice(f.stack,this._stack.length-f.stack),this.leaf=f.leaf,this.open=f.open}},{key:"tos",get:function(){return this._stack.length?this._stack[this._stack.length-1]:void 0}},{key:"cursor",get:function(){return this._xml.length}},{key:"xml",get:function(){return this.closeAll(),this._xml.join("")}}]),s}();o.StdDocAttributes={version:"1.0",encoding:"UTF-8",standalone:"yes"},n.exports=o},{"./under-dash":25,"./utils":26}],28:[function(e,n,i){(function(a){function l(T){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(D){return typeof D}:l=function(D){return D&&typeof Symbol=="function"&&D.constructor===Symbol&&D!==Symbol.prototype?"symbol":typeof D},l(T)}function d(T,C,D,j,L,M,B){try{var R=T[M](B),P=R.value}catch(O){D(O);return}R.done?C(P):Promise.resolve(P).then(j,L)}function m(T){return function(){var C=this,D=arguments;return new Promise(function(j,L){var M=T.apply(C,D);function B(P){d(M,j,L,B,R,"next",P)}function R(P){d(M,j,L,B,R,"throw",P)}B(void 0)})}}function b(T,C){if(!(T instanceof C))throw new TypeError("Cannot call a class as a function")}function h(T,C){for(var D=0;D"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function u(T){return u=Object.setPrototypeOf?Object.getPrototypeOf:function(D){return D.__proto__||Object.getPrototypeOf(D)},u(T)}var o=e("events"),s=e("jszip"),c=e("./stream-buf"),f=e("./browser-buffer-encode"),v=f.stringToBuffer,k=function(T){g(D,T);var C=x(D);function D(j){var L;return b(this,D),L=C.call(this),L.options=Object.assign({type:"nodebuffer",compression:"DEFLATE"},j),L.zip=new s,L.stream=new c,L}return _(D,[{key:"append",value:function(L,M){M.hasOwnProperty("base64")&&M.base64?this.zip.file(M.name,L,{base64:!0}):(a.browser&&typeof L=="string"&&(L=v(L)),this.zip.file(M.name,L))}},{key:"finalize",value:function(){var j=m(regeneratorRuntime.mark(function M(){var B;return regeneratorRuntime.wrap(function(P){for(;;)switch(P.prev=P.next){case 0:return P.next=2,this.zip.generateAsync(this.options);case 2:B=P.sent,this.stream.end(B),this.emit("finish");case 5:case"end":return P.stop()}},M,this)}));function L(){return j.apply(this,arguments)}return L}()},{key:"read",value:function(L){return this.stream.read(L)}},{key:"setEncoding",value:function(L){return this.stream.setEncoding(L)}},{key:"pause",value:function(){return this.stream.pause()}},{key:"resume",value:function(){return this.stream.resume()}},{key:"isPaused",value:function(){return this.stream.isPaused()}},{key:"pipe",value:function(L,M){return this.stream.pipe(L,M)}},{key:"unpipe",value:function(L){return this.stream.unpipe(L)}},{key:"unshift",value:function(L){return this.stream.unshift(L)}},{key:"wrap",value:function(L){return this.stream.wrap(L)}}]),D}(o.EventEmitter);n.exports={ZipWriter:k}}).call(this,e("_process"))},{"./browser-buffer-encode":17,"./stream-buf":23,_process:467,events:367,jszip:399}],29:[function(e,n,i){n.exports={0:{f:"General"},1:{f:"0"},2:{f:"0.00"},3:{f:"#,##0"},4:{f:"#,##0.00"},9:{f:"0%"},10:{f:"0.00%"},11:{f:"0.00E+00"},12:{f:"# ?/?"},13:{f:"# ??/??"},14:{f:"mm-dd-yy"},15:{f:"d-mmm-yy"},16:{f:"d-mmm"},17:{f:"mmm-yy"},18:{f:"h:mm AM/PM"},19:{f:"h:mm:ss AM/PM"},20:{f:"h:mm"},21:{f:"h:mm:ss"},22:{f:'m/d/yy "h":mm'},27:{"zh-tw":"[$-404]e/m/d","zh-cn":'yyyy"年"m"月"',"ja-jp":"[$-411]ge.m.d","ko-kr":'yyyy"年" mm"月" dd"日"'},28:{"zh-tw":'[$-404]e"年"m"月"d"日"',"zh-cn":'m"月"d"日"',"ja-jp":'[$-411]ggge"年"m"月"d"日"',"ko-kr":"mm-dd"},29:{"zh-tw":'[$-404]e"年"m"月"d"日"',"zh-cn":'m"月"d"日"',"ja-jp":'[$-411]ggge"年"m"月"d"日"',"ko-kr":"mm-dd"},30:{"zh-tw":"m/d/yy ","zh-cn":"m-d-yy","ja-jp":"m/d/yy","ko-kr":"mm-dd-yy"},31:{"zh-tw":'yyyy"年"m"月"d"日"',"zh-cn":'yyyy"年"m"月"d"日"',"ja-jp":'yyyy"年"m"月"d"日"',"ko-kr":'yyyy"년" mm"월" dd"일"'},32:{"zh-tw":'hh"時"mm"分"',"zh-cn":'h"时"mm"分"',"ja-jp":'h"時"mm"分"',"ko-kr":'h"시" mm"분"'},33:{"zh-tw":'hh"時"mm"分"ss"秒"',"zh-cn":'h"时"mm"分"ss"秒"',"ja-jp":'h"時"mm"分"ss"秒"',"ko-kr":'h"시" mm"분" ss"초"'},34:{"zh-tw":'上午/下午 hh"時"mm"分"',"zh-cn":'上午/下午 h"时"mm"分"',"ja-jp":'yyyy"年"m"月"',"ko-kr":"yyyy-mm-dd"},35:{"zh-tw":'上午/下午 hh"時"mm"分"ss"秒"',"zh-cn":'上午/下午 h"时"mm"分"ss"秒"',"ja-jp":'m"月"d"日"',"ko-kr":"yyyy-mm-dd"},36:{"zh-tw":"[$-404]e/m/d","zh-cn":'yyyy"年"m"月"',"ja-jp":"[$-411]ge.m.d","ko-kr":'yyyy"年" mm"月" dd"日"'},37:{f:"#,##0 ;(#,##0)"},38:{f:"#,##0 ;[Red](#,##0)"},39:{f:"#,##0.00 ;(#,##0.00)"},40:{f:"#,##0.00 ;[Red](#,##0.00)"},45:{f:"mm:ss"},46:{f:"[h]:mm:ss"},47:{f:"mmss.0"},48:{f:"##0.0E+0"},49:{f:"@"},50:{"zh-tw":"[$-404]e/m/d","zh-cn":'yyyy"年"m"月"',"ja-jp":"[$-411]ge.m.d","ko-kr":'yyyy"年" mm"月" dd"日"'},51:{"zh-tw":'[$-404]e"年"m"月"d"日"',"zh-cn":'m"月"d"日"',"ja-jp":'[$-411]ggge"年"m"月"d"日"',"ko-kr":"mm-dd"},52:{"zh-tw":'上午/下午 hh"時"mm"分"',"zh-cn":'yyyy"年"m"月"',"ja-jp":'yyyy"年"m"月"',"ko-kr":"yyyy-mm-dd"},53:{"zh-tw":'上午/下午 hh"時"mm"分"ss"秒"',"zh-cn":'m"月"d"日"',"ja-jp":'m"月"d"日"',"ko-kr":"yyyy-mm-dd"},54:{"zh-tw":'[$-404]e"年"m"月"d"日"',"zh-cn":'m"月"d"日"',"ja-jp":'[$-411]ggge"年"m"月"d"日"',"ko-kr":"mm-dd"},55:{"zh-tw":'上午/下午 hh"時"mm"分"',"zh-cn":'上午/下午 h"时"mm"分"',"ja-jp":'yyyy"年"m"月"',"ko-kr":"yyyy-mm-dd"},56:{"zh-tw":'上午/下午 hh"時"mm"分"ss"秒"',"zh-cn":'上午/下午 h"时"mm"分"ss"秒"',"ja-jp":'m"月"d"日"',"ko-kr":"yyyy-mm-dd"},57:{"zh-tw":"[$-404]e/m/d","zh-cn":'yyyy"年"m"月"',"ja-jp":"[$-411]ge.m.d","ko-kr":'yyyy"年" mm"月" dd"日"'},58:{"zh-tw":'[$-404]e"年"m"月"d"日"',"zh-cn":'m"月"d"日"',"ja-jp":'[$-411]ggge"年"m"月"d"日"',"ko-kr":"mm-dd"},59:{"th-th":"t0"},60:{"th-th":"t0.00"},61:{"th-th":"t#,##0"},62:{"th-th":"t#,##0.00"},67:{"th-th":"t0%"},68:{"th-th":"t0.00%"},69:{"th-th":"t# ?/?"},70:{"th-th":"t# ??/??"},81:{"th-th":"d/m/bb"}}},{}],30:[function(e,n,i){n.exports={OfficeDocument:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument",Worksheet:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet",CalcChain:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/calcChain",SharedStrings:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings",Styles:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles",Theme:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme",Hyperlink:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink",Image:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",CoreProperties:"http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties",ExtenderProperties:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties",Comments:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments",VmlDrawing:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing",Table:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/table"}},{}],31:[function(e,n,i){function a(w,u){var o;if(typeof Symbol>"u"||w[Symbol.iterator]==null){if(Array.isArray(w)||(o=l(w))||u&&w&&typeof w.length=="number"){o&&(w=o);var s=0,c=function(){};return{s:c,n:function(){return s>=w.length?{done:!0}:{done:!1,value:w[s++]}},e:function(C){throw C},f:c}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var f=!0,v=!1,k;return{s:function(){o=w[Symbol.iterator]()},n:function(){var C=o.next();return f=C.done,C},e:function(C){v=!0,k=C},f:function(){try{!f&&o.return!=null&&o.return()}finally{if(v)throw k}}}}function l(w,u){if(w){if(typeof w=="string")return d(w,u);var o=Object.prototype.toString.call(w).slice(8,-1);if(o==="Object"&&w.constructor&&(o=w.constructor.name),o==="Map"||o==="Set")return Array.from(w);if(o==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return d(w,u)}}function d(w,u){(u==null||u>w.length)&&(u=w.length);for(var o=0,s=new Array(u);o2&&arguments[2]!==void 0?arguments[2]:!1;if(o===void 0){if(c)return s}else if(c||o!==s)return o.toString()}},{key:"toStringAttribute",value:function(o,s){var c=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;return w.toAttribute(o,s,c)}},{key:"toStringValue",value:function(o,s){return o===void 0?s:o}},{key:"toBoolAttribute",value:function(o,s){var c=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;if(o===void 0){if(c)return s}else if(c||o!==s)return o?"1":"0"}},{key:"toBoolValue",value:function(o,s){return o===void 0?s:o==="1"}},{key:"toIntAttribute",value:function(o,s){var c=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;return w.toAttribute(o,s,c)}},{key:"toIntValue",value:function(o,s){return o===void 0?s:parseInt(o,10)}},{key:"toFloatAttribute",value:function(o,s){var c=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;return w.toAttribute(o,s,c)}},{key:"toFloatValue",value:function(o,s){return o===void 0?s:parseFloat(o)}}]),w}();n.exports=S},{"../../utils/parse-sax":21,"../../utils/xml-stream":27}],32:[function(e,n,i){function a(c){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(v){return typeof v}:a=function(v){return v&&typeof Symbol=="function"&&v.constructor===Symbol&&v!==Symbol.prototype?"symbol":typeof v},a(c)}function l(c,f){if(!(c instanceof f))throw new TypeError("Cannot call a class as a function")}function d(c,f){for(var v=0;v"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(c){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(v){return v.__proto__||Object.getPrototypeOf(v)},p(c)}var S=e("../base-xform"),w=e("../../../utils/col-cache"),u=function(c){b(v,c);var f=_(v);function v(){return l(this,v),f.apply(this,arguments)}return m(v,[{key:"render",value:function(T,C){T.openNode("definedName",{name:C.name,localSheetId:C.localSheetId}),T.writeText(C.ranges.join(",")),T.closeNode()}},{key:"parseOpen",value:function(T){switch(T.name){case"definedName":return this._parsedName=T.attributes.name,this._parsedLocalSheetId=T.attributes.localSheetId,this._parsedText=[],!0;default:return!1}}},{key:"parseText",value:function(T){this._parsedText.push(T)}},{key:"parseClose",value:function(){return this.model={name:this._parsedName,ranges:s(this._parsedText.join(""))},this._parsedLocalSheetId!==void 0&&(this.model.localSheetId=parseInt(this._parsedLocalSheetId,10)),!1}}]),v}(S);function o(c){try{return w.decodeEx(c),!0}catch{return!1}}function s(c){var f=[],v=!1,k="";return c.split(",").forEach(function(T){if(T){var C=(T.match(/'/g)||[]).length;if(!C){v?k+="".concat(T,","):o(T)&&f.push(T);return}var D=C%2===0;!v&&D&&o(T)?f.push(T):v&&!D?(v=!1,o(k+T)&&f.push(k+T),k=""):(v=!0,k+="".concat(T,","))}}),f}n.exports=u},{"../../../utils/col-cache":19,"../base-xform":31}],33:[function(e,n,i){function a(o){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(c){return typeof c}:a=function(c){return c&&typeof Symbol=="function"&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c},a(o)}function l(o,s){if(!(o instanceof s))throw new TypeError("Cannot call a class as a function")}function d(o,s){for(var c=0;c"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(o){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(c){return c.__proto__||Object.getPrototypeOf(c)},p(o)}var S=e("../../../utils/utils"),w=e("../base-xform"),u=function(o){b(c,o);var s=_(c);function c(){return l(this,c),s.apply(this,arguments)}return m(c,[{key:"render",value:function(v,k){v.leafNode("sheet",{sheetId:k.id,name:k.name,state:k.state,"r:id":k.rId})}},{key:"parseOpen",value:function(v){return v.name==="sheet"?(this.model={name:S.xmlDecode(v.attributes.name),id:parseInt(v.attributes.sheetId,10),state:v.attributes.state,rId:v.attributes["r:id"]},!0):!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}}]),c}(w);n.exports=u},{"../../../utils/utils":26,"../base-xform":31}],34:[function(e,n,i){function a(u){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(u)}function l(u,o){if(!(u instanceof o))throw new TypeError("Cannot call a class as a function")}function d(u,o){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(u){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},p(u)}var S=e("../base-xform"),w=function(u){b(s,u);var o=_(s);function s(){return l(this,s),o.apply(this,arguments)}return m(s,[{key:"render",value:function(f,v){f.leafNode("calcPr",{calcId:171027,fullCalcOnLoad:v.fullCalcOnLoad?1:void 0})}},{key:"parseOpen",value:function(f){return f.name==="calcPr"?(this.model={},!0):!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}}]),s}(S);n.exports=w},{"../base-xform":31}],35:[function(e,n,i){function a(u){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(u)}function l(u,o){if(!(u instanceof o))throw new TypeError("Cannot call a class as a function")}function d(u,o){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(u){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},p(u)}var S=e("../base-xform"),w=function(u){b(s,u);var o=_(s);function s(){return l(this,s),o.apply(this,arguments)}return m(s,[{key:"render",value:function(f,v){f.leafNode("workbookPr",{date1904:v.date1904?1:void 0,defaultThemeVersion:164011,filterPrivacy:1})}},{key:"parseOpen",value:function(f){return f.name==="workbookPr"?(this.model={date1904:f.attributes.date1904==="1"},!0):!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}}]),s}(S);n.exports=w},{"../base-xform":31}],36:[function(e,n,i){function a(u){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(u)}function l(u,o){if(!(u instanceof o))throw new TypeError("Cannot call a class as a function")}function d(u,o){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(u){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},p(u)}var S=e("../base-xform"),w=function(u){b(s,u);var o=_(s);function s(){return l(this,s),o.apply(this,arguments)}return m(s,[{key:"render",value:function(f,v){var k={xWindow:v.x||0,yWindow:v.y||0,windowWidth:v.width||12e3,windowHeight:v.height||24e3,firstSheet:v.firstSheet,activeTab:v.activeTab};v.visibility&&v.visibility!=="visible"&&(k.visibility=v.visibility),f.leafNode("workbookView",k)}},{key:"parseOpen",value:function(f){if(f.name==="workbookView"){var v=this.model={},k=function(D,j,L){var M=j!==void 0?v[D]=j:L;M!==void 0&&(v[D]=M)},T=function(D,j,L){var M=j!==void 0?v[D]=parseInt(j,10):L;M!==void 0&&(v[D]=M)};return T("x",f.attributes.xWindow,0),T("y",f.attributes.yWindow,0),T("width",f.attributes.windowWidth,25e3),T("height",f.attributes.windowHeight,1e4),k("visibility",f.attributes.visibility,"visible"),T("activeTab",f.attributes.activeTab,void 0),T("firstSheet",f.attributes.firstSheet,void 0),!0}return!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}}]),s}(S);n.exports=w},{"../base-xform":31}],37:[function(e,n,i){function a(j){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(M){return typeof M}:a=function(M){return M&&typeof Symbol=="function"&&M.constructor===Symbol&&M!==Symbol.prototype?"symbol":typeof M},a(j)}function l(j,L){if(!(j instanceof L))throw new TypeError("Cannot call a class as a function")}function d(j,L){for(var M=0;M"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(j){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(M){return M.__proto__||Object.getPrototypeOf(M)},p(j)}var S=e("../../../utils/under-dash"),w=e("../../../utils/col-cache"),u=e("../../../utils/xml-stream"),o=e("../base-xform"),s=e("../static-xform"),c=e("../list-xform"),f=e("./defined-name-xform"),v=e("./sheet-xform"),k=e("./workbook-view-xform"),T=e("./workbook-properties-xform"),C=e("./workbook-calc-properties-xform"),D=function(j){b(M,j);var L=_(M);function M(){var B;return l(this,M),B=L.call(this),B.map={fileVersion:M.STATIC_XFORMS.fileVersion,workbookPr:new T,bookViews:new c({tag:"bookViews",count:!1,childXform:new k}),sheets:new c({tag:"sheets",count:!1,childXform:new v}),definedNames:new c({tag:"definedNames",count:!1,childXform:new f}),calcPr:new C},B}return m(M,[{key:"prepare",value:function(R){R.sheets=R.worksheets;var P=[],O=0;R.sheets.forEach(function(F){if(F.pageSetup&&F.pageSetup.printArea&&F.pageSetup.printArea.split("&&").forEach(function(I){var N=I.split(":"),U={name:"_xlnm.Print_Area",ranges:["'".concat(F.name,"'!$").concat(N[0],":$").concat(N[1])],localSheetId:O};P.push(U)}),F.pageSetup&&(F.pageSetup.printTitlesRow||F.pageSetup.printTitlesColumn)){var H=[];if(F.pageSetup.printTitlesColumn){var V=F.pageSetup.printTitlesColumn.split(":");H.push("'".concat(F.name,"'!$").concat(V[0],":$").concat(V[1]))}if(F.pageSetup.printTitlesRow){var z=F.pageSetup.printTitlesRow.split(":");H.push("'".concat(F.name,"'!$").concat(z[0],":$").concat(z[1]))}var X={name:"_xlnm.Print_Titles",ranges:H,localSheetId:O};P.push(X)}O++}),P.length&&(R.definedNames=R.definedNames.concat(P)),(R.media||[]).forEach(function(F,H){F.name=F.type+(H+1)})}},{key:"render",value:function(R,P){R.openXml(u.StdDocAttributes),R.openNode("workbook",M.WORKBOOK_ATTRIBUTES),this.map.fileVersion.render(R),this.map.workbookPr.render(R,P.properties),this.map.bookViews.render(R,P.views),this.map.sheets.render(R,P.sheets),this.map.definedNames.render(R,P.definedNames),this.map.calcPr.render(R,P.calcProperties),R.closeNode()}},{key:"parseOpen",value:function(R){if(this.parser)return this.parser.parseOpen(R),!0;switch(R.name){case"workbook":return!0;default:return this.parser=this.map[R.name],this.parser&&this.parser.parseOpen(R),!0}}},{key:"parseText",value:function(R){this.parser&&this.parser.parseText(R)}},{key:"parseClose",value:function(R){if(this.parser)return this.parser.parseClose(R)||(this.parser=void 0),!0;switch(R){case"workbook":return this.model={sheets:this.map.sheets.model,properties:this.map.workbookPr.model||{},views:this.map.bookViews.model,calcProperties:{}},this.map.definedNames.model&&(this.model.definedNames=this.map.definedNames.model),!1;default:return!0}}},{key:"reconcile",value:function(R){var P=(R.workbookRels||[]).reduce(function(z,X){return z[X.Id]=X,z},{}),O=[],F,H=0;(R.sheets||[]).forEach(function(z){var X=P[z.rId];X&&(F=R.worksheetHash["xl/".concat(X.Target.replace(/^(\s|\/xl\/)+/,""))],F&&(F.name=z.name,F.id=z.id,F.state=z.state,O[H++]=F))});var V=[];S.each(R.definedNames,function(z){if(z.name==="_xlnm.Print_Area"){if(F=O[z.localSheetId],F){F.pageSetup||(F.pageSetup={});var X=w.decodeEx(z.ranges[0]);F.pageSetup.printArea=F.pageSetup.printArea?"".concat(F.pageSetup.printArea,"&&").concat(X.dimensions):X.dimensions}}else if(z.name==="_xlnm.Print_Titles"){if(F=O[z.localSheetId],F){F.pageSetup||(F.pageSetup={});var I=z.ranges.join(","),N=/\$/g,U=/\$\d+:\$\d+/,G=I.match(U);if(G&&G.length){var te=G[0];F.pageSetup.printTitlesRow=te.replace(N,"")}var re=/\$[A-Z]+:\$[A-Z]+/,ne=I.match(re);if(ne&&ne.length){var ge=ne[0];F.pageSetup.printTitlesColumn=ge.replace(N,"")}}}else V.push(z)}),R.definedNames=V,R.media.forEach(function(z,X){z.index=X})}}]),M}(o);D.WORKBOOK_ATTRIBUTES={xmlns:"http://schemas.openxmlformats.org/spreadsheetml/2006/main","xmlns:r":"http://schemas.openxmlformats.org/officeDocument/2006/relationships","xmlns:mc":"http://schemas.openxmlformats.org/markup-compatibility/2006","mc:Ignorable":"x15","xmlns:x15":"http://schemas.microsoft.com/office/spreadsheetml/2010/11/main"},D.STATIC_XFORMS={fileVersion:new s({tag:"fileVersion",$:{appName:"xl",lastEdited:5,lowestEdited:5,rupBuild:9303}})},n.exports=D},{"../../../utils/col-cache":19,"../../../utils/under-dash":25,"../../../utils/xml-stream":27,"../base-xform":31,"../list-xform":70,"../static-xform":119,"./defined-name-xform":32,"./sheet-xform":33,"./workbook-calc-properties-xform":34,"./workbook-properties-xform":35,"./workbook-view-xform":36}],38:[function(e,n,i){function a(g,y){var x=Object.keys(g);if(Object.getOwnPropertySymbols){var p=Object.getOwnPropertySymbols(g);y&&(p=p.filter(function(S){return Object.getOwnPropertyDescriptor(g,S).enumerable})),x.push.apply(x,p)}return x}function l(g){for(var y=1;y"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(u){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},p(u)}var S=e("../../base-xform"),w=function(u){b(s,u);var o=_(s);function s(c){var f;return l(this,s),f=o.call(this),f._model=c,f}return m(s,[{key:"render",value:function(f,v,k){v===k[2]?f.leafNode(this.tag):this.tag==="x:SizeWithCells"&&v===k[1]&&f.leafNode(this.tag)}},{key:"parseOpen",value:function(f){switch(f.name){case this.tag:return this.model={},this.model[this.tag]=!0,!0;default:return!1}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return this._model&&this._model.tag}}]),s}(S);n.exports=w},{"../../base-xform":31}],41:[function(e,n,i){function a(u){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(u)}function l(u,o){if(!(u instanceof o))throw new TypeError("Cannot call a class as a function")}function d(u,o){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(u){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},p(u)}var S=e("../../base-xform"),w=function(u){b(s,u);var o=_(s);function s(c){var f;return l(this,s),f=o.call(this),f._model=c,f}return m(s,[{key:"render",value:function(f,v){f.leafNode(this.tag,null,v)}},{key:"parseOpen",value:function(f){switch(f.name){case this.tag:return this.text="",!0;default:return!1}}},{key:"parseText",value:function(f){this.text=f}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return this._model&&this._model.tag}}]),s}(S);n.exports=w},{"../../base-xform":31}],42:[function(e,n,i){function a(u){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(u)}function l(u,o){if(!(u instanceof o))throw new TypeError("Cannot call a class as a function")}function d(u,o){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(u){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},p(u)}var S=e("../base-xform"),w=function(u){b(s,u);var o=_(s);function s(){return l(this,s),o.apply(this,arguments)}return m(s,[{key:"getAnchorRect",value:function(f){var v=Math.floor(f.left),k=Math.floor((f.left-v)*68),T=Math.floor(f.top),C=Math.floor((f.top-T)*18),D=Math.floor(f.right),j=Math.floor((f.right-D)*68),L=Math.floor(f.bottom),M=Math.floor((f.bottom-L)*18);return[v,k,T,C,D,j,L,M]}},{key:"getDefaultRect",value:function(f){var v=f.col,k=6,T=Math.max(f.row-2,0),C=14,D=v+2,j=2,L=T+4,M=16;return[v,k,T,C,D,j,L,M]}},{key:"render",value:function(f,v){var k=v.anchor?this.getAnchorRect(v.anchor):this.getDefaultRect(v.refAddress);f.leafNode("x:Anchor",null,k.join(", "))}},{key:"parseOpen",value:function(f){switch(f.name){case this.tag:return this.text="",!0;default:return!1}}},{key:"parseText",value:function(f){this.text=f}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"x:Anchor"}}]),s}(S);n.exports=w},{"../base-xform":31}],43:[function(e,n,i){function a(f){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(k){return typeof k}:a=function(k){return k&&typeof Symbol=="function"&&k.constructor===Symbol&&k!==Symbol.prototype?"symbol":typeof k},a(f)}function l(f,v){if(!(f instanceof v))throw new TypeError("Cannot call a class as a function")}function d(f,v){for(var k=0;k"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(f){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(k){return k.__proto__||Object.getPrototypeOf(k)},p(f)}var S=e("../base-xform"),w=e("./vml-anchor-xform"),u=e("./style/vml-protection-xform"),o=e("./style/vml-position-xform"),s=["twoCells","oneCells","absolute"],c=function(f){b(k,f);var v=_(k);function k(){var T;return l(this,k),T=v.call(this),T.map={"x:Anchor":new w,"x:Locked":new u({tag:"x:Locked"}),"x:LockText":new u({tag:"x:LockText"}),"x:SizeWithCells":new o({tag:"x:SizeWithCells"}),"x:MoveWithCells":new o({tag:"x:MoveWithCells"})},T}return m(k,[{key:"render",value:function(C,D){var j=D.note,L=j.protection,M=j.editAs;C.openNode(this.tag,{ObjectType:"Note"}),this.map["x:MoveWithCells"].render(C,M,s),this.map["x:SizeWithCells"].render(C,M,s),this.map["x:Anchor"].render(C,D),this.map["x:Locked"].render(C,L.locked),C.leafNode("x:AutoFill",null,"False"),this.map["x:LockText"].render(C,L.lockText),C.leafNode("x:Row",null,D.refAddress.row-1),C.leafNode("x:Column",null,D.refAddress.col-1),C.closeNode()}},{key:"parseOpen",value:function(C){switch(C.name){case this.tag:this.reset(),this.model={anchor:[],protection:{},editAs:""};break;default:this.parser=this.map[C.name],this.parser&&this.parser.parseOpen(C);break}return!0}},{key:"parseText",value:function(C){this.parser&&this.parser.parseText(C)}},{key:"parseClose",value:function(C){if(this.parser)return this.parser.parseClose(C)||(this.parser=void 0),!0;switch(C){case this.tag:return this.normalizeModel(),!1;default:return!0}}},{key:"normalizeModel",value:function(){var C=Object.assign({},this.map["x:MoveWithCells"].model,this.map["x:SizeWithCells"].model),D=Object.keys(C).length;this.model.editAs=s[D],this.model.anchor=this.map["x:Anchor"].text,this.model.protection.locked=this.map["x:Locked"].text,this.model.protection.lockText=this.map["x:LockText"].text}},{key:"tag",get:function(){return"x:ClientData"}}]),k}(S);n.exports=c},{"../base-xform":31,"./style/vml-position-xform":40,"./style/vml-protection-xform":41,"./vml-anchor-xform":42}],44:[function(e,n,i){function a(s){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(f){return typeof f}:a=function(f){return f&&typeof Symbol=="function"&&f.constructor===Symbol&&f!==Symbol.prototype?"symbol":typeof f},a(s)}function l(s,c){if(!(s instanceof c))throw new TypeError("Cannot call a class as a function")}function d(s,c){for(var f=0;f"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(s){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(f){return f.__proto__||Object.getPrototypeOf(f)},p(s)}var S=e("../../../utils/xml-stream"),w=e("../base-xform"),u=e("./vml-shape-xform"),o=function(s){b(f,s);var c=_(f);function f(){var v;return l(this,f),v=c.call(this),v.map={"v:shape":new u},v}return m(f,[{key:"render",value:function(k,T){var C=this;k.openXml(S.StdDocAttributes),k.openNode(this.tag,f.DRAWING_ATTRIBUTES),k.openNode("o:shapelayout",{"v:ext":"edit"}),k.leafNode("o:idmap",{"v:ext":"edit",data:1}),k.closeNode(),k.openNode("v:shapetype",{id:"_x0000_t202",coordsize:"21600,21600","o:spt":202,path:"m,l,21600r21600,l21600,xe"}),k.leafNode("v:stroke",{joinstyle:"miter"}),k.leafNode("v:path",{gradientshapeok:"t","o:connecttype":"rect"}),k.closeNode(),T.comments.forEach(function(D,j){C.map["v:shape"].render(k,D,j)}),k.closeNode()}},{key:"parseOpen",value:function(k){if(this.parser)return this.parser.parseOpen(k),!0;switch(k.name){case this.tag:this.reset(),this.model={comments:[]};break;default:this.parser=this.map[k.name],this.parser&&this.parser.parseOpen(k);break}return!0}},{key:"parseText",value:function(k){this.parser&&this.parser.parseText(k)}},{key:"parseClose",value:function(k){if(this.parser)return this.parser.parseClose(k)||(this.model.comments.push(this.parser.model),this.parser=void 0),!0;switch(k){case this.tag:return!1;default:return!0}}},{key:"reconcile",value:function(k,T){var C=this;k.anchors.forEach(function(D){D.br?C.map["xdr:twoCellAnchor"].reconcile(D,T):C.map["xdr:oneCellAnchor"].reconcile(D,T)})}},{key:"tag",get:function(){return"xml"}}]),f}(w);o.DRAWING_ATTRIBUTES={"xmlns:v":"urn:schemas-microsoft-com:vml","xmlns:o":"urn:schemas-microsoft-com:office:office","xmlns:x":"urn:schemas-microsoft-com:office:excel"},n.exports=o},{"../../../utils/xml-stream":27,"../base-xform":31,"./vml-shape-xform":45}],45:[function(e,n,i){function a(s){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(f){return typeof f}:a=function(f){return f&&typeof Symbol=="function"&&f.constructor===Symbol&&f!==Symbol.prototype?"symbol":typeof f},a(s)}function l(s,c){if(!(s instanceof c))throw new TypeError("Cannot call a class as a function")}function d(s,c){for(var f=0;f"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(s){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(f){return f.__proto__||Object.getPrototypeOf(f)},p(s)}var S=e("../base-xform"),w=e("./vml-textbox-xform"),u=e("./vml-client-data-xform"),o=function(s){b(f,s);var c=_(f);function f(){var v;return l(this,f),v=c.call(this),v.map={"v:textbox":new w,"x:ClientData":new u},v}return m(f,[{key:"render",value:function(k,T,C){k.openNode("v:shape",f.V_SHAPE_ATTRIBUTES(T,C)),k.leafNode("v:fill",{color2:"infoBackground [80]"}),k.leafNode("v:shadow",{color:"none [81]",obscured:"t"}),k.leafNode("v:path",{"o:connecttype":"none"}),this.map["v:textbox"].render(k,T),this.map["x:ClientData"].render(k,T),k.closeNode()}},{key:"parseOpen",value:function(k){if(this.parser)return this.parser.parseOpen(k),!0;switch(k.name){case this.tag:this.reset(),this.model={margins:{insetmode:k.attributes["o:insetmode"]},anchor:"",editAs:"",protection:{}};break;default:this.parser=this.map[k.name],this.parser&&this.parser.parseOpen(k);break}return!0}},{key:"parseText",value:function(k){this.parser&&this.parser.parseText(k)}},{key:"parseClose",value:function(k){if(this.parser)return this.parser.parseClose(k)||(this.parser=void 0),!0;switch(k){case this.tag:return this.model.margins.inset=this.map["v:textbox"].model&&this.map["v:textbox"].model.inset,this.model.protection=this.map["x:ClientData"].model&&this.map["x:ClientData"].model.protection,this.model.anchor=this.map["x:ClientData"].model&&this.map["x:ClientData"].model.anchor,this.model.editAs=this.map["x:ClientData"].model&&this.map["x:ClientData"].model.editAs,!1;default:return!0}}},{key:"tag",get:function(){return"v:shape"}}]),f}(S);o.V_SHAPE_ATTRIBUTES=function(s,c){return{id:"_x0000_s".concat(1025+c),type:"#_x0000_t202",style:"position:absolute; margin-left:105.3pt;margin-top:10.5pt;width:97.8pt;height:59.1pt;z-index:1;visibility:hidden",fillcolor:"infoBackground [80]",strokecolor:"none [81]","o:insetmode":s.note.margins&&s.note.margins.insetmode}},n.exports=o},{"../base-xform":31,"./vml-client-data-xform":43,"./vml-textbox-xform":46}],46:[function(e,n,i){function a(u){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(u)}function l(u,o){if(!(u instanceof o))throw new TypeError("Cannot call a class as a function")}function d(u,o){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(u){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},p(u)}var S=e("../base-xform"),w=function(u){b(s,u);var o=_(s);function s(){return l(this,s),o.apply(this,arguments)}return m(s,[{key:"conversionUnit",value:function(f,v,k){return"".concat(parseFloat(f)*v.toFixed(2)).concat(k)}},{key:"reverseConversionUnit",value:function(f){var v=this;return(f||"").split(",").map(function(k){return Number(parseFloat(v.conversionUnit(parseFloat(k),.1,"")).toFixed(2))})}},{key:"render",value:function(f,v){var k=this,T={style:"mso-direction-alt:auto"};if(v&&v.note){var C=v.note&&v.note.margins,D=C.inset;Array.isArray(D)&&(D=D.map(function(j){return k.conversionUnit(j,10,"mm")}).join(",")),D&&(T.inset=D)}f.openNode("v:textbox",T),f.leafNode("div",{style:"text-align:left"}),f.closeNode()}},{key:"parseOpen",value:function(f){switch(f.name){case this.tag:return this.model={inset:this.reverseConversionUnit(f.attributes.inset)},!0;default:return!0}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(f){switch(f){case this.tag:return!1;default:return!0}}},{key:"tag",get:function(){return"v:textbox"}}]),s}(S);n.exports=w},{"../base-xform":31}],47:[function(e,n,i){function a(u){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(u)}function l(u,o){if(!(u instanceof o))throw new TypeError("Cannot call a class as a function")}function d(u,o){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(u){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},p(u)}var S=e("./base-xform"),w=function(u){b(s,u);var o=_(s);function s(){return l(this,s),o.apply(this,arguments)}return m(s,[{key:"createNewModel",value:function(f){return{}}},{key:"parseOpen",value:function(f){return this.parser=this.parser||this.map[f.name],this.parser?(this.parser.parseOpen(f),!0):f.name===this.tag?(this.model=this.createNewModel(f),!0):!1}},{key:"parseText",value:function(f){this.parser&&this.parser.parseText(f)}},{key:"onParserClose",value:function(f,v){this.model[f]=v.model}},{key:"parseClose",value:function(f){return this.parser?(this.parser.parseClose(f)||(this.onParserClose(f,this.parser),this.parser=void 0),!0):f!==this.tag}}]),s}(S);n.exports=w},{"./base-xform":31}],48:[function(e,n,i){function a(u){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(u)}function l(u,o){if(!(u instanceof o))throw new TypeError("Cannot call a class as a function")}function d(u,o){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(u){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},p(u)}var S=e("../base-xform"),w=function(u){b(s,u);var o=_(s);function s(){return l(this,s),o.apply(this,arguments)}return m(s,[{key:"render",value:function(f,v){f.openNode("HeadingPairs"),f.openNode("vt:vector",{size:2,baseType:"variant"}),f.openNode("vt:variant"),f.leafNode("vt:lpstr",void 0,"Worksheets"),f.closeNode(),f.openNode("vt:variant"),f.leafNode("vt:i4",void 0,v.length),f.closeNode(),f.closeNode(),f.closeNode()}},{key:"parseOpen",value:function(f){return f.name==="HeadingPairs"}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(f){return f!=="HeadingPairs"}}]),s}(S);n.exports=w},{"../base-xform":31}],49:[function(e,n,i){function a(u){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(u)}function l(u,o){if(!(u instanceof o))throw new TypeError("Cannot call a class as a function")}function d(u,o){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(u){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},p(u)}var S=e("../base-xform"),w=function(u){b(s,u);var o=_(s);function s(){return l(this,s),o.apply(this,arguments)}return m(s,[{key:"render",value:function(f,v){f.openNode("TitlesOfParts"),f.openNode("vt:vector",{size:v.length,baseType:"lpstr"}),v.forEach(function(k){f.leafNode("vt:lpstr",void 0,k.name)}),f.closeNode(),f.closeNode()}},{key:"parseOpen",value:function(f){return f.name==="TitlesOfParts"}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(f){return f!=="TitlesOfParts"}}]),s}(S);n.exports=w},{"../base-xform":31}],50:[function(e,n,i){function a(f){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(k){return typeof k}:a=function(k){return k&&typeof Symbol=="function"&&k.constructor===Symbol&&k!==Symbol.prototype?"symbol":typeof k},a(f)}function l(f,v){if(!(f instanceof v))throw new TypeError("Cannot call a class as a function")}function d(f,v){for(var k=0;k"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(f){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(k){return k.__proto__||Object.getPrototypeOf(k)},p(f)}var S=e("../../../utils/xml-stream"),w=e("../base-xform"),u=e("../simple/string-xform"),o=e("./app-heading-pairs-xform"),s=e("./app-titles-of-parts-xform"),c=function(f){b(k,f);var v=_(k);function k(){var T;return l(this,k),T=v.call(this),T.map={Company:new u({tag:"Company"}),Manager:new u({tag:"Manager"}),HeadingPairs:new o,TitleOfParts:new s},T}return m(k,[{key:"render",value:function(C,D){C.openXml(S.StdDocAttributes),C.openNode("Properties",k.PROPERTY_ATTRIBUTES),C.leafNode("Application",void 0,"Microsoft Excel"),C.leafNode("DocSecurity",void 0,"0"),C.leafNode("ScaleCrop",void 0,"false"),this.map.HeadingPairs.render(C,D.worksheets),this.map.TitleOfParts.render(C,D.worksheets),this.map.Company.render(C,D.company||""),this.map.Manager.render(C,D.manager),C.leafNode("LinksUpToDate",void 0,"false"),C.leafNode("SharedDoc",void 0,"false"),C.leafNode("HyperlinksChanged",void 0,"false"),C.leafNode("AppVersion",void 0,"16.0300"),C.closeNode()}},{key:"parseOpen",value:function(C){if(this.parser)return this.parser.parseOpen(C),!0;switch(C.name){case"Properties":return!0;default:return this.parser=this.map[C.name],this.parser?(this.parser.parseOpen(C),!0):!1}}},{key:"parseText",value:function(C){this.parser&&this.parser.parseText(C)}},{key:"parseClose",value:function(C){if(this.parser)return this.parser.parseClose(C)||(this.parser=void 0),!0;switch(C){case"Properties":return this.model={worksheets:this.map.TitleOfParts.model,company:this.map.Company.model,manager:this.map.Manager.model},!1;default:return!0}}}]),k}(w);c.DateFormat=function(f){return f.toISOString().replace(/[.]\d{3,6}/,"")},c.DateAttrs={"xsi:type":"dcterms:W3CDTF"},c.PROPERTY_ATTRIBUTES={xmlns:"http://schemas.openxmlformats.org/officeDocument/2006/extended-properties","xmlns:vt":"http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes"},n.exports=c},{"../../../utils/xml-stream":27,"../base-xform":31,"../simple/string-xform":118,"./app-heading-pairs-xform":48,"./app-titles-of-parts-xform":49}],51:[function(e,n,i){function a(o){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(c){return typeof c}:a=function(c){return c&&typeof Symbol=="function"&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c},a(o)}function l(o,s){if(!(o instanceof s))throw new TypeError("Cannot call a class as a function")}function d(o,s){for(var c=0;c"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(o){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(c){return c.__proto__||Object.getPrototypeOf(c)},p(o)}var S=e("../../../utils/xml-stream"),w=e("../base-xform"),u=function(o){b(c,o);var s=_(c);function c(){return l(this,c),s.apply(this,arguments)}return m(c,[{key:"render",value:function(v,k){v.openXml(S.StdDocAttributes),v.openNode("Types",c.PROPERTY_ATTRIBUTES);var T={};(k.media||[]).forEach(function(D){if(D.type==="image"){var j=D.extension;T[j]||(T[j]=!0,v.leafNode("Default",{Extension:j,ContentType:"image/".concat(j)}))}}),v.leafNode("Default",{Extension:"rels",ContentType:"application/vnd.openxmlformats-package.relationships+xml"}),v.leafNode("Default",{Extension:"xml",ContentType:"application/xml"}),v.leafNode("Override",{PartName:"/xl/workbook.xml",ContentType:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"}),k.worksheets.forEach(function(D){var j="/xl/worksheets/sheet".concat(D.id,".xml");v.leafNode("Override",{PartName:j,ContentType:"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml"})}),v.leafNode("Override",{PartName:"/xl/theme/theme1.xml",ContentType:"application/vnd.openxmlformats-officedocument.theme+xml"}),v.leafNode("Override",{PartName:"/xl/styles.xml",ContentType:"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml"});var C=k.sharedStrings&&k.sharedStrings.count;C&&v.leafNode("Override",{PartName:"/xl/sharedStrings.xml",ContentType:"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml"}),k.tables&&k.tables.forEach(function(D){v.leafNode("Override",{PartName:"/xl/tables/".concat(D.target),ContentType:"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml"})}),k.drawings&&k.drawings.forEach(function(D){v.leafNode("Override",{PartName:"/xl/drawings/".concat(D.name,".xml"),ContentType:"application/vnd.openxmlformats-officedocument.drawing+xml"})}),k.commentRefs&&(v.leafNode("Default",{Extension:"vml",ContentType:"application/vnd.openxmlformats-officedocument.vmlDrawing"}),k.commentRefs.forEach(function(D){var j=D.commentName;v.leafNode("Override",{PartName:"/xl/".concat(j,".xml"),ContentType:"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml"})})),v.leafNode("Override",{PartName:"/docProps/core.xml",ContentType:"application/vnd.openxmlformats-package.core-properties+xml"}),v.leafNode("Override",{PartName:"/docProps/app.xml",ContentType:"application/vnd.openxmlformats-officedocument.extended-properties+xml"}),v.closeNode()}},{key:"parseOpen",value:function(){return!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}}]),c}(w);u.PROPERTY_ATTRIBUTES={xmlns:"http://schemas.openxmlformats.org/package/2006/content-types"},n.exports=u},{"../../../utils/xml-stream":27,"../base-xform":31}],52:[function(e,n,i){function a(f){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(k){return typeof k}:a=function(k){return k&&typeof Symbol=="function"&&k.constructor===Symbol&&k!==Symbol.prototype?"symbol":typeof k},a(f)}function l(f,v){if(!(f instanceof v))throw new TypeError("Cannot call a class as a function")}function d(f,v){for(var k=0;k"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(f){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(k){return k.__proto__||Object.getPrototypeOf(k)},p(f)}var S=e("../../../utils/xml-stream"),w=e("../base-xform"),u=e("../simple/date-xform"),o=e("../simple/string-xform"),s=e("../simple/integer-xform"),c=function(f){b(k,f);var v=_(k);function k(){var T;return l(this,k),T=v.call(this),T.map={"dc:creator":new o({tag:"dc:creator"}),"dc:title":new o({tag:"dc:title"}),"dc:subject":new o({tag:"dc:subject"}),"dc:description":new o({tag:"dc:description"}),"dc:identifier":new o({tag:"dc:identifier"}),"dc:language":new o({tag:"dc:language"}),"cp:keywords":new o({tag:"cp:keywords"}),"cp:category":new o({tag:"cp:category"}),"cp:lastModifiedBy":new o({tag:"cp:lastModifiedBy"}),"cp:lastPrinted":new u({tag:"cp:lastPrinted",format:k.DateFormat}),"cp:revision":new s({tag:"cp:revision"}),"cp:version":new o({tag:"cp:version"}),"cp:contentStatus":new o({tag:"cp:contentStatus"}),"cp:contentType":new o({tag:"cp:contentType"}),"dcterms:created":new u({tag:"dcterms:created",attrs:k.DateAttrs,format:k.DateFormat}),"dcterms:modified":new u({tag:"dcterms:modified",attrs:k.DateAttrs,format:k.DateFormat})},T}return m(k,[{key:"render",value:function(C,D){C.openXml(S.StdDocAttributes),C.openNode("cp:coreProperties",k.CORE_PROPERTY_ATTRIBUTES),this.map["dc:creator"].render(C,D.creator),this.map["dc:title"].render(C,D.title),this.map["dc:subject"].render(C,D.subject),this.map["dc:description"].render(C,D.description),this.map["dc:identifier"].render(C,D.identifier),this.map["dc:language"].render(C,D.language),this.map["cp:keywords"].render(C,D.keywords),this.map["cp:category"].render(C,D.category),this.map["cp:lastModifiedBy"].render(C,D.lastModifiedBy),this.map["cp:lastPrinted"].render(C,D.lastPrinted),this.map["cp:revision"].render(C,D.revision),this.map["cp:version"].render(C,D.version),this.map["cp:contentStatus"].render(C,D.contentStatus),this.map["cp:contentType"].render(C,D.contentType),this.map["dcterms:created"].render(C,D.created),this.map["dcterms:modified"].render(C,D.modified),C.closeNode()}},{key:"parseOpen",value:function(C){if(this.parser)return this.parser.parseOpen(C),!0;switch(C.name){case"cp:coreProperties":case"coreProperties":return!0;default:if(this.parser=this.map[C.name],this.parser)return this.parser.parseOpen(C),!0;throw new Error("Unexpected xml node in parseOpen: ".concat(JSON.stringify(C)))}}},{key:"parseText",value:function(C){this.parser&&this.parser.parseText(C)}},{key:"parseClose",value:function(C){if(this.parser)return this.parser.parseClose(C)||(this.parser=void 0),!0;switch(C){case"cp:coreProperties":case"coreProperties":return this.model={creator:this.map["dc:creator"].model,title:this.map["dc:title"].model,subject:this.map["dc:subject"].model,description:this.map["dc:description"].model,identifier:this.map["dc:identifier"].model,language:this.map["dc:language"].model,keywords:this.map["cp:keywords"].model,category:this.map["cp:category"].model,lastModifiedBy:this.map["cp:lastModifiedBy"].model,lastPrinted:this.map["cp:lastPrinted"].model,revision:this.map["cp:revision"].model,contentStatus:this.map["cp:contentStatus"].model,contentType:this.map["cp:contentType"].model,created:this.map["dcterms:created"].model,modified:this.map["dcterms:modified"].model},!1;default:throw new Error("Unexpected xml node in parseClose: ".concat(C))}}}]),k}(w);c.DateFormat=function(f){return f.toISOString().replace(/[.]\d{3}/,"")},c.DateAttrs={"xsi:type":"dcterms:W3CDTF"},c.CORE_PROPERTY_ATTRIBUTES={"xmlns:cp":"http://schemas.openxmlformats.org/package/2006/metadata/core-properties","xmlns:dc":"http://purl.org/dc/elements/1.1/","xmlns:dcterms":"http://purl.org/dc/terms/","xmlns:dcmitype":"http://purl.org/dc/dcmitype/","xmlns:xsi":"http://www.w3.org/2001/XMLSchema-instance"},n.exports=c},{"../../../utils/xml-stream":27,"../base-xform":31,"../simple/date-xform":116,"../simple/integer-xform":117,"../simple/string-xform":118}],53:[function(e,n,i){function a(u){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(u)}function l(u,o){if(!(u instanceof o))throw new TypeError("Cannot call a class as a function")}function d(u,o){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(u){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},p(u)}var S=e("../base-xform"),w=function(u){b(s,u);var o=_(s);function s(){return l(this,s),o.apply(this,arguments)}return m(s,[{key:"render",value:function(f,v){f.leafNode("Relationship",v)}},{key:"parseOpen",value:function(f){switch(f.name){case"Relationship":return this.model=f.attributes,!0;default:return!1}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}}]),s}(S);n.exports=w},{"../base-xform":31}],54:[function(e,n,i){function a(s){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(f){return typeof f}:a=function(f){return f&&typeof Symbol=="function"&&f.constructor===Symbol&&f!==Symbol.prototype?"symbol":typeof f},a(s)}function l(s,c){if(!(s instanceof c))throw new TypeError("Cannot call a class as a function")}function d(s,c){for(var f=0;f"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(s){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(f){return f.__proto__||Object.getPrototypeOf(f)},p(s)}var S=e("../../../utils/xml-stream"),w=e("../base-xform"),u=e("./relationship-xform"),o=function(s){b(f,s);var c=_(f);function f(){var v;return l(this,f),v=c.call(this),v.map={Relationship:new u},v}return m(f,[{key:"render",value:function(k,T){var C=this;T=T||this._values,k.openXml(S.StdDocAttributes),k.openNode("Relationships",f.RELATIONSHIPS_ATTRIBUTES),T.forEach(function(D){C.map.Relationship.render(k,D)}),k.closeNode()}},{key:"parseOpen",value:function(k){if(this.parser)return this.parser.parseOpen(k),!0;switch(k.name){case"Relationships":return this.model=[],!0;default:if(this.parser=this.map[k.name],this.parser)return this.parser.parseOpen(k),!0;throw new Error("Unexpected xml node in parseOpen: ".concat(JSON.stringify(k)))}}},{key:"parseText",value:function(k){this.parser&&this.parser.parseText(k)}},{key:"parseClose",value:function(k){if(this.parser)return this.parser.parseClose(k)||(this.model.push(this.parser.model),this.parser=void 0),!0;switch(k){case"Relationships":return!1;default:throw new Error("Unexpected xml node in parseClose: ".concat(k))}}}]),f}(w);o.RELATIONSHIPS_ATTRIBUTES={xmlns:"http://schemas.openxmlformats.org/package/2006/relationships"},n.exports=o},{"../../../utils/xml-stream":27,"../base-xform":31,"./relationship-xform":53}],55:[function(e,n,i){function a(u){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(u)}function l(u,o){if(!(u instanceof o))throw new TypeError("Cannot call a class as a function")}function d(u,o){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(u){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},p(u)}var S=e("../base-xform"),w=function(u){b(s,u);var o=_(s);function s(){return l(this,s),o.apply(this,arguments)}return m(s,[{key:"parseOpen",value:function(f){if(this.parser)return this.parser.parseOpen(f),!0;switch(f.name){case this.tag:this.reset(),this.model={range:{editAs:f.attributes.editAs||"oneCell"}};break;default:this.parser=this.map[f.name],this.parser&&this.parser.parseOpen(f);break}return!0}},{key:"parseText",value:function(f){this.parser&&this.parser.parseText(f)}},{key:"reconcilePicture",value:function(f,v){if(f&&f.rId){var k=v.rels[f.rId],T=k.Target.match(/.*\/media\/(.+[.][a-zA-Z]{3,4})/);if(T){var C=T[1],D=v.mediaIndex[C];return v.media[D]}}}}]),s}(S);n.exports=w},{"../base-xform":31}],56:[function(e,n,i){function a(o){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(c){return typeof c}:a=function(c){return c&&typeof Symbol=="function"&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c},a(o)}function l(o,s){if(!(o instanceof s))throw new TypeError("Cannot call a class as a function")}function d(o,s){for(var c=0;c"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(o){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(c){return c.__proto__||Object.getPrototypeOf(c)},p(o)}var S=e("../base-xform"),w=e("./blip-xform"),u=function(o){b(c,o);var s=_(c);function c(){var f;return l(this,c),f=s.call(this),f.map={"a:blip":new w},f}return m(c,[{key:"render",value:function(v,k){v.openNode(this.tag),this.map["a:blip"].render(v,k),v.openNode("a:stretch"),v.leafNode("a:fillRect"),v.closeNode(),v.closeNode()}},{key:"parseOpen",value:function(v){if(this.parser)return this.parser.parseOpen(v),!0;switch(v.name){case this.tag:this.reset();break;default:this.parser=this.map[v.name],this.parser&&this.parser.parseOpen(v);break}return!0}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(v){if(this.parser)return this.parser.parseClose(v)||(this.parser=void 0),!0;switch(v){case this.tag:return this.model=this.map["a:blip"].model,!1;default:return!0}}},{key:"tag",get:function(){return"xdr:blipFill"}}]),c}(S);n.exports=u},{"../base-xform":31,"./blip-xform":57}],57:[function(e,n,i){function a(u){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(u)}function l(u,o){if(!(u instanceof o))throw new TypeError("Cannot call a class as a function")}function d(u,o){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(u){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},p(u)}var S=e("../base-xform"),w=function(u){b(s,u);var o=_(s);function s(){return l(this,s),o.apply(this,arguments)}return m(s,[{key:"render",value:function(f,v){f.leafNode(this.tag,{"xmlns:r":"http://schemas.openxmlformats.org/officeDocument/2006/relationships","r:embed":v.rId,cstate:"print"})}},{key:"parseOpen",value:function(f){switch(f.name){case this.tag:return this.model={rId:f.attributes["r:embed"]},!0;default:return!0}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(f){switch(f){case this.tag:return!1;default:return!0}}},{key:"tag",get:function(){return"a:blip"}}]),s}(S);n.exports=w},{"../base-xform":31}],58:[function(e,n,i){function a(u){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(u)}function l(u,o){if(!(u instanceof o))throw new TypeError("Cannot call a class as a function")}function d(u,o){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(u){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},p(u)}var S=e("../base-xform"),w=function(u){b(s,u);var o=_(s);function s(){return l(this,s),o.apply(this,arguments)}return m(s,[{key:"render",value:function(f){f.openNode(this.tag),f.leafNode("a:picLocks",{noChangeAspect:"1"}),f.closeNode()}},{key:"parseOpen",value:function(f){switch(f.name){case this.tag:return!0;default:return!0}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(f){switch(f){case this.tag:return!1;default:return!0}}},{key:"tag",get:function(){return"xdr:cNvPicPr"}}]),s}(S);n.exports=w},{"../base-xform":31}],59:[function(e,n,i){function a(s){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(f){return typeof f}:a=function(f){return f&&typeof Symbol=="function"&&f.constructor===Symbol&&f!==Symbol.prototype?"symbol":typeof f},a(s)}function l(s,c){if(!(s instanceof c))throw new TypeError("Cannot call a class as a function")}function d(s,c){for(var f=0;f"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(s){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(f){return f.__proto__||Object.getPrototypeOf(f)},p(s)}var S=e("../base-xform"),w=e("./hlink-click-xform"),u=e("./ext-lst-xform"),o=function(s){b(f,s);var c=_(f);function f(){var v;return l(this,f),v=c.call(this),v.map={"a:hlinkClick":new w,"a:extLst":new u},v}return m(f,[{key:"render",value:function(k,T){k.openNode(this.tag,{id:T.index,name:"Picture ".concat(T.index)}),this.map["a:hlinkClick"].render(k,T),this.map["a:extLst"].render(k,T),k.closeNode()}},{key:"parseOpen",value:function(k){if(this.parser)return this.parser.parseOpen(k),!0;switch(k.name){case this.tag:this.reset();break;default:this.parser=this.map[k.name],this.parser&&this.parser.parseOpen(k);break}return!0}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(k){if(this.parser)return this.parser.parseClose(k)||(this.parser=void 0),!0;switch(k){case this.tag:return this.model=this.map["a:hlinkClick"].model,!1;default:return!0}}},{key:"tag",get:function(){return"xdr:cNvPr"}}]),f}(S);n.exports=o},{"../base-xform":31,"./ext-lst-xform":62,"./hlink-click-xform":64}],60:[function(e,n,i){function a(o){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(c){return typeof c}:a=function(c){return c&&typeof Symbol=="function"&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c},a(o)}function l(o,s){if(!(o instanceof s))throw new TypeError("Cannot call a class as a function")}function d(o,s){for(var c=0;c"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(o){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(c){return c.__proto__||Object.getPrototypeOf(c)},p(o)}var S=e("../base-xform"),w=e("../simple/integer-xform"),u=function(o){b(c,o);var s=_(c);function c(f){var v;return l(this,c),v=s.call(this),v.tag=f.tag,v.map={"xdr:col":new w({tag:"xdr:col",zero:!0}),"xdr:colOff":new w({tag:"xdr:colOff",zero:!0}),"xdr:row":new w({tag:"xdr:row",zero:!0}),"xdr:rowOff":new w({tag:"xdr:rowOff",zero:!0})},v}return m(c,[{key:"render",value:function(v,k){v.openNode(this.tag),this.map["xdr:col"].render(v,k.nativeCol),this.map["xdr:colOff"].render(v,k.nativeColOff),this.map["xdr:row"].render(v,k.nativeRow),this.map["xdr:rowOff"].render(v,k.nativeRowOff),v.closeNode()}},{key:"parseOpen",value:function(v){if(this.parser)return this.parser.parseOpen(v),!0;switch(v.name){case this.tag:this.reset();break;default:this.parser=this.map[v.name],this.parser&&this.parser.parseOpen(v);break}return!0}},{key:"parseText",value:function(v){this.parser&&this.parser.parseText(v)}},{key:"parseClose",value:function(v){if(this.parser)return this.parser.parseClose(v)||(this.parser=void 0),!0;switch(v){case this.tag:return this.model={nativeCol:this.map["xdr:col"].model,nativeColOff:this.map["xdr:colOff"].model,nativeRow:this.map["xdr:row"].model,nativeRowOff:this.map["xdr:rowOff"].model},!1;default:return!0}}}]),c}(S);n.exports=u},{"../base-xform":31,"../simple/integer-xform":117}],61:[function(e,n,i){function a(v){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(T){return typeof T}:a=function(T){return T&&typeof Symbol=="function"&&T.constructor===Symbol&&T!==Symbol.prototype?"symbol":typeof T},a(v)}function l(v,k){if(!(v instanceof k))throw new TypeError("Cannot call a class as a function")}function d(v,k){for(var T=0;T"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(v){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(T){return T.__proto__||Object.getPrototypeOf(T)},p(v)}var S=e("../../../utils/col-cache"),w=e("../../../utils/xml-stream"),u=e("../base-xform"),o=e("./two-cell-anchor-xform"),s=e("./one-cell-anchor-xform");function c(v){var k=typeof v.range=="string"?S.decode(v.range):v.range;return k.br?"xdr:twoCellAnchor":"xdr:oneCellAnchor"}var f=function(v){b(T,v);var k=_(T);function T(){var C;return l(this,T),C=k.call(this),C.map={"xdr:twoCellAnchor":new o,"xdr:oneCellAnchor":new s},C}return m(T,[{key:"prepare",value:function(D){var j=this;D.anchors.forEach(function(L,M){L.anchorType=c(L);var B=j.map[L.anchorType];B.prepare(L,{index:M})})}},{key:"render",value:function(D,j){var L=this;D.openXml(w.StdDocAttributes),D.openNode(this.tag,T.DRAWING_ATTRIBUTES),j.anchors.forEach(function(M){var B=L.map[M.anchorType];B.render(D,M)}),D.closeNode()}},{key:"parseOpen",value:function(D){if(this.parser)return this.parser.parseOpen(D),!0;switch(D.name){case this.tag:this.reset(),this.model={anchors:[]};break;default:this.parser=this.map[D.name],this.parser&&this.parser.parseOpen(D);break}return!0}},{key:"parseText",value:function(D){this.parser&&this.parser.parseText(D)}},{key:"parseClose",value:function(D){if(this.parser)return this.parser.parseClose(D)||(this.model.anchors.push(this.parser.model),this.parser=void 0),!0;switch(D){case this.tag:return!1;default:return!0}}},{key:"reconcile",value:function(D,j){var L=this;D.anchors.forEach(function(M){M.br?L.map["xdr:twoCellAnchor"].reconcile(M,j):L.map["xdr:oneCellAnchor"].reconcile(M,j)})}},{key:"tag",get:function(){return"xdr:wsDr"}}]),T}(u);f.DRAWING_ATTRIBUTES={"xmlns:xdr":"http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing","xmlns:a":"http://schemas.openxmlformats.org/drawingml/2006/main"},n.exports=f},{"../../../utils/col-cache":19,"../../../utils/xml-stream":27,"../base-xform":31,"./one-cell-anchor-xform":66,"./two-cell-anchor-xform":69}],62:[function(e,n,i){function a(u){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(u)}function l(u,o){if(!(u instanceof o))throw new TypeError("Cannot call a class as a function")}function d(u,o){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(u){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},p(u)}var S=e("../base-xform"),w=function(u){b(s,u);var o=_(s);function s(){return l(this,s),o.apply(this,arguments)}return m(s,[{key:"render",value:function(f){f.openNode(this.tag),f.openNode("a:ext",{uri:"{FF2B5EF4-FFF2-40B4-BE49-F238E27FC236}"}),f.leafNode("a16:creationId",{"xmlns:a16":"http://schemas.microsoft.com/office/drawing/2014/main",id:"{00000000-0008-0000-0000-000002000000}"}),f.closeNode(),f.closeNode()}},{key:"parseOpen",value:function(f){switch(f.name){case this.tag:return!0;default:return!0}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(f){switch(f){case this.tag:return!1;default:return!0}}},{key:"tag",get:function(){return"a:extLst"}}]),s}(S);n.exports=w},{"../base-xform":31}],63:[function(e,n,i){function a(o){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(c){return typeof c}:a=function(c){return c&&typeof Symbol=="function"&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c},a(o)}function l(o,s){if(!(o instanceof s))throw new TypeError("Cannot call a class as a function")}function d(o,s){for(var c=0;c"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(o){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(c){return c.__proto__||Object.getPrototypeOf(c)},p(o)}var S=e("../base-xform"),w=9525,u=function(o){b(c,o);var s=_(c);function c(f){var v;return l(this,c),v=s.call(this),v.tag=f.tag,v.map={},v}return m(c,[{key:"render",value:function(v,k){v.openNode(this.tag);var T=Math.floor(k.width*w),C=Math.floor(k.height*w);v.addAttribute("cx",T),v.addAttribute("cy",C),v.closeNode()}},{key:"parseOpen",value:function(v){return v.name===this.tag?(this.model={width:parseInt(v.attributes.cx||"0",10)/w,height:parseInt(v.attributes.cy||"0",10)/w},!0):!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}}]),c}(S);n.exports=u},{"../base-xform":31}],64:[function(e,n,i){function a(u){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(u)}function l(u,o){if(!(u instanceof o))throw new TypeError("Cannot call a class as a function")}function d(u,o){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(u){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},p(u)}var S=e("../base-xform"),w=function(u){b(s,u);var o=_(s);function s(){return l(this,s),o.apply(this,arguments)}return m(s,[{key:"render",value:function(f,v){v.hyperlinks&&v.hyperlinks.rId&&f.leafNode(this.tag,{"xmlns:r":"http://schemas.openxmlformats.org/officeDocument/2006/relationships","r:id":v.hyperlinks.rId,tooltip:v.hyperlinks.tooltip})}},{key:"parseOpen",value:function(f){switch(f.name){case this.tag:return this.model={hyperlinks:{rId:f.attributes["r:id"],tooltip:f.attributes.tooltip}},!0;default:return!0}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"a:hlinkClick"}}]),s}(S);n.exports=w},{"../base-xform":31}],65:[function(e,n,i){function a(s){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(f){return typeof f}:a=function(f){return f&&typeof Symbol=="function"&&f.constructor===Symbol&&f!==Symbol.prototype?"symbol":typeof f},a(s)}function l(s,c){if(!(s instanceof c))throw new TypeError("Cannot call a class as a function")}function d(s,c){for(var f=0;f"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(s){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(f){return f.__proto__||Object.getPrototypeOf(f)},p(s)}var S=e("../base-xform"),w=e("./c-nv-pr-xform"),u=e("./c-nv-pic-pr-xform"),o=function(s){b(f,s);var c=_(f);function f(){var v;return l(this,f),v=c.call(this),v.map={"xdr:cNvPr":new w,"xdr:cNvPicPr":new u},v}return m(f,[{key:"render",value:function(k,T){k.openNode(this.tag),this.map["xdr:cNvPr"].render(k,T),this.map["xdr:cNvPicPr"].render(k,T),k.closeNode()}},{key:"parseOpen",value:function(k){if(this.parser)return this.parser.parseOpen(k),!0;switch(k.name){case this.tag:this.reset();break;default:this.parser=this.map[k.name],this.parser&&this.parser.parseOpen(k);break}return!0}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(k){if(this.parser)return this.parser.parseClose(k)||(this.parser=void 0),!0;switch(k){case this.tag:return this.model=this.map["xdr:cNvPr"].model,!1;default:return!0}}},{key:"tag",get:function(){return"xdr:nvPicPr"}}]),f}(S);n.exports=o},{"../base-xform":31,"./c-nv-pic-pr-xform":58,"./c-nv-pr-xform":59}],66:[function(e,n,i){function a(f){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(k){return typeof k}:a=function(k){return k&&typeof Symbol=="function"&&k.constructor===Symbol&&k!==Symbol.prototype?"symbol":typeof k},a(f)}function l(f,v){if(!(f instanceof v))throw new TypeError("Cannot call a class as a function")}function d(f,v){for(var k=0;k"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(f){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(k){return k.__proto__||Object.getPrototypeOf(k)},p(f)}var S=e("./base-cell-anchor-xform"),w=e("../static-xform"),u=e("./cell-position-xform"),o=e("./ext-xform"),s=e("./pic-xform"),c=function(f){b(k,f);var v=_(k);function k(){var T;return l(this,k),T=v.call(this),T.map={"xdr:from":new u({tag:"xdr:from"}),"xdr:ext":new o({tag:"xdr:ext"}),"xdr:pic":new s,"xdr:clientData":new w({tag:"xdr:clientData"})},T}return m(k,[{key:"prepare",value:function(C,D){this.map["xdr:pic"].prepare(C.picture,D)}},{key:"render",value:function(C,D){C.openNode(this.tag,{editAs:D.range.editAs||"oneCell"}),this.map["xdr:from"].render(C,D.range.tl),this.map["xdr:ext"].render(C,D.range.ext),this.map["xdr:pic"].render(C,D.picture),this.map["xdr:clientData"].render(C,{}),C.closeNode()}},{key:"parseClose",value:function(C){if(this.parser)return this.parser.parseClose(C)||(this.parser=void 0),!0;switch(C){case this.tag:return this.model.range.tl=this.map["xdr:from"].model,this.model.range.ext=this.map["xdr:ext"].model,this.model.picture=this.map["xdr:pic"].model,!1;default:return!0}}},{key:"reconcile",value:function(C,D){C.medium=this.reconcilePicture(C.picture,D)}},{key:"tag",get:function(){return"xdr:oneCellAnchor"}}]),k}(S);n.exports=c},{"../static-xform":119,"./base-cell-anchor-xform":55,"./cell-position-xform":60,"./ext-xform":63,"./pic-xform":67}],67:[function(e,n,i){function a(f){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(k){return typeof k}:a=function(k){return k&&typeof Symbol=="function"&&k.constructor===Symbol&&k!==Symbol.prototype?"symbol":typeof k},a(f)}function l(f,v){if(!(f instanceof v))throw new TypeError("Cannot call a class as a function")}function d(f,v){for(var k=0;k"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(f){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(k){return k.__proto__||Object.getPrototypeOf(k)},p(f)}var S=e("../base-xform"),w=e("../static-xform"),u=e("./blip-fill-xform"),o=e("./nv-pic-pr-xform"),s=e("./sp-pr"),c=function(f){b(k,f);var v=_(k);function k(){var T;return l(this,k),T=v.call(this),T.map={"xdr:nvPicPr":new o,"xdr:blipFill":new u,"xdr:spPr":new w(s)},T}return m(k,[{key:"prepare",value:function(C,D){C.index=D.index+1}},{key:"render",value:function(C,D){C.openNode(this.tag),this.map["xdr:nvPicPr"].render(C,D),this.map["xdr:blipFill"].render(C,D),this.map["xdr:spPr"].render(C,D),C.closeNode()}},{key:"parseOpen",value:function(C){if(this.parser)return this.parser.parseOpen(C),!0;switch(C.name){case this.tag:this.reset();break;default:this.parser=this.map[C.name],this.parser&&this.parser.parseOpen(C);break}return!0}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(C){if(this.parser)return this.parser.parseClose(C)||(this.mergeModel(this.parser.model),this.parser=void 0),!0;switch(C){case this.tag:return!1;default:return!0}}},{key:"tag",get:function(){return"xdr:pic"}}]),k}(S);n.exports=c},{"../base-xform":31,"../static-xform":119,"./blip-fill-xform":56,"./nv-pic-pr-xform":65,"./sp-pr":68}],68:[function(e,n,i){n.exports={tag:"xdr:spPr",c:[{tag:"a:xfrm",c:[{tag:"a:off",$:{x:"0",y:"0"}},{tag:"a:ext",$:{cx:"0",cy:"0"}}]},{tag:"a:prstGeom",$:{prst:"rect"},c:[{tag:"a:avLst"}]}]}},{}],69:[function(e,n,i){function a(c){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(v){return typeof v}:a=function(v){return v&&typeof Symbol=="function"&&v.constructor===Symbol&&v!==Symbol.prototype?"symbol":typeof v},a(c)}function l(c,f){if(!(c instanceof f))throw new TypeError("Cannot call a class as a function")}function d(c,f){for(var v=0;v"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(c){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(v){return v.__proto__||Object.getPrototypeOf(v)},p(c)}var S=e("./base-cell-anchor-xform"),w=e("../static-xform"),u=e("./cell-position-xform"),o=e("./pic-xform"),s=function(c){b(v,c);var f=_(v);function v(){var k;return l(this,v),k=f.call(this),k.map={"xdr:from":new u({tag:"xdr:from"}),"xdr:to":new u({tag:"xdr:to"}),"xdr:pic":new o,"xdr:clientData":new w({tag:"xdr:clientData"})},k}return m(v,[{key:"prepare",value:function(T,C){this.map["xdr:pic"].prepare(T.picture,C)}},{key:"render",value:function(T,C){T.openNode(this.tag,{editAs:C.range.editAs||"oneCell"}),this.map["xdr:from"].render(T,C.range.tl),this.map["xdr:to"].render(T,C.range.br),this.map["xdr:pic"].render(T,C.picture),this.map["xdr:clientData"].render(T,{}),T.closeNode()}},{key:"parseClose",value:function(T){if(this.parser)return this.parser.parseClose(T)||(this.parser=void 0),!0;switch(T){case this.tag:return this.model.range.tl=this.map["xdr:from"].model,this.model.range.br=this.map["xdr:to"].model,this.model.picture=this.map["xdr:pic"].model,!1;default:return!0}}},{key:"reconcile",value:function(T,C){T.medium=this.reconcilePicture(T.picture,C)}},{key:"tag",get:function(){return"xdr:twoCellAnchor"}}]),v}(S);n.exports=s},{"../static-xform":119,"./base-cell-anchor-xform":55,"./cell-position-xform":60,"./pic-xform":67}],70:[function(e,n,i){function a(u){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(u)}function l(u,o){if(!(u instanceof o))throw new TypeError("Cannot call a class as a function")}function d(u,o){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(u){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},p(u)}var S=e("./base-xform"),w=function(u){b(s,u);var o=_(s);function s(c){var f;return l(this,s),f=o.call(this),f.tag=c.tag,f.always=!!c.always,f.count=c.count,f.empty=c.empty,f.$count=c.$count||"count",f.$=c.$,f.childXform=c.childXform,f.maxItems=c.maxItems,f}return m(s,[{key:"prepare",value:function(f,v){var k=this.childXform;f&&f.forEach(function(T,C){v.index=C,k.prepare(T,v)})}},{key:"render",value:function(f,v){if(this.always||v&&v.length){f.openNode(this.tag,this.$),this.count&&f.addAttribute(this.$count,v&&v.length||0);var k=this.childXform;(v||[]).forEach(function(T,C){k.render(f,T,C)}),f.closeNode()}else this.empty&&f.leafNode(this.tag)}},{key:"parseOpen",value:function(f){if(this.parser)return this.parser.parseOpen(f),!0;switch(f.name){case this.tag:return this.model=[],!0;default:return this.childXform.parseOpen(f)?(this.parser=this.childXform,!0):!1}}},{key:"parseText",value:function(f){this.parser&&this.parser.parseText(f)}},{key:"parseClose",value:function(f){if(this.parser){if(!this.parser.parseClose(f)&&(this.model.push(this.parser.model),this.parser=void 0,this.maxItems&&this.model.length>this.maxItems))throw new Error("Max ".concat(this.childXform.tag," count (").concat(this.maxItems,") exceeded"));return!0}return!1}},{key:"reconcile",value:function(f,v){if(f){var k=this.childXform;f.forEach(function(T){k.reconcile(T,v)})}}}]),s}(S);n.exports=w},{"./base-xform":31}],71:[function(e,n,i){function a(o){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(c){return typeof c}:a=function(c){return c&&typeof Symbol=="function"&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c},a(o)}function l(o,s){if(!(o instanceof s))throw new TypeError("Cannot call a class as a function")}function d(o,s){for(var c=0;c"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(o){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(c){return c.__proto__||Object.getPrototypeOf(c)},p(o)}var S=e("../../../utils/col-cache"),w=e("../base-xform"),u=function(o){b(c,o);var s=_(c);function c(){return l(this,c),s.apply(this,arguments)}return m(c,[{key:"render",value:function(v,k){if(k)if(typeof k=="string")v.leafNode("autoFilter",{ref:k});else{var T=function(L){return typeof L=="string"?L:S.getAddress(L.row,L.column).address},C=T(k.from),D=T(k.to);C&&D&&v.leafNode("autoFilter",{ref:"".concat(C,":").concat(D)})}}},{key:"parseOpen",value:function(v){v.name==="autoFilter"&&(this.model=v.attributes.ref)}},{key:"tag",get:function(){return"autoFilter"}}]),c}(w);n.exports=u},{"../../../utils/col-cache":19,"../base-xform":31}],72:[function(e,n,i){function a(D){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(L){return typeof L}:a=function(L){return L&&typeof Symbol=="function"&&L.constructor===Symbol&&L!==Symbol.prototype?"symbol":typeof L},a(D)}function l(D,j){var L=Object.keys(D);if(Object.getOwnPropertySymbols){var M=Object.getOwnPropertySymbols(D);j&&(M=M.filter(function(B){return Object.getOwnPropertyDescriptor(D,B).enumerable})),L.push.apply(L,M)}return L}function d(D){for(var j=1;j"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function u(D){return u=Object.setPrototypeOf?Object.getPrototypeOf:function(L){return L.__proto__||Object.getPrototypeOf(L)},u(D)}var o=e("../../../utils/utils"),s=e("../base-xform"),c=e("../../../doc/range"),f=e("../../../doc/enums"),v=e("../strings/rich-text-xform");function k(D){if(D==null)return f.ValueType.Null;if(D instanceof String||typeof D=="string")return f.ValueType.String;if(typeof D=="number")return f.ValueType.Number;if(typeof D=="boolean")return f.ValueType.Boolean;if(D instanceof Date)return f.ValueType.Date;if(D.text&&D.hyperlink)return f.ValueType.Hyperlink;if(D.formula)return f.ValueType.Formula;if(D.error)return f.ValueType.Error;throw new Error("I could not understand type of value")}function T(D){switch(D.type){case f.ValueType.Formula:return k(D.result);default:return D.type}}var C=function(D){g(L,D);var j=x(L);function L(){var M;return b(this,L),M=j.call(this),M.richTextXForm=new v,M}return _(L,[{key:"prepare",value:function(B,R){var P=R.styles.addStyleModel(B.style||{},T(B));switch(P&&(B.styleId=P),B.comment&&R.comments.push(d(d({},B.comment),{},{ref:B.address})),B.type){case f.ValueType.String:case f.ValueType.RichText:R.sharedStrings&&(B.ssId=R.sharedStrings.add(B.value));break;case f.ValueType.Date:R.date1904&&(B.date1904=!0);break;case f.ValueType.Hyperlink:R.sharedStrings&&B.text!==void 0&&B.text!==null&&(B.ssId=R.sharedStrings.add(B.text)),R.hyperlinks.push({address:B.address,target:B.hyperlink,tooltip:B.tooltip});break;case f.ValueType.Merge:R.merges.add(B);break;case f.ValueType.Formula:if(R.date1904&&(B.date1904=!0),B.shareType==="shared"&&(B.si=R.siFormulae++),B.formula)R.formulae[B.address]=B;else if(B.sharedFormula){var O=R.formulae[B.sharedFormula];if(!O)throw new Error("Shared Formula master must exist above and or left of clone for cell ".concat(B.address));O.si===void 0?(O.shareType="shared",O.si=R.siFormulae++,O.range=new c(O.address,B.address)):O.range&&O.range.expandToAddress(B.address),B.si=O.si}break}}},{key:"renderFormula",value:function(B,R){var P=null;switch(R.shareType){case"shared":P={t:"shared",ref:R.ref||R.range.range,si:R.si};break;case"array":P={t:"array",ref:R.ref};break;default:R.si!==void 0&&(P={t:"shared",si:R.si});break}switch(k(R.result)){case f.ValueType.Null:B.leafNode("f",P,R.formula);break;case f.ValueType.String:B.addAttribute("t","str"),B.leafNode("f",P,R.formula),B.leafNode("v",null,R.result);break;case f.ValueType.Number:B.leafNode("f",P,R.formula),B.leafNode("v",null,R.result);break;case f.ValueType.Boolean:B.addAttribute("t","b"),B.leafNode("f",P,R.formula),B.leafNode("v",null,R.result?1:0);break;case f.ValueType.Error:B.addAttribute("t","e"),B.leafNode("f",P,R.formula),B.leafNode("v",null,R.result.error);break;case f.ValueType.Date:B.leafNode("f",P,R.formula),B.leafNode("v",null,o.dateToExcel(R.result,R.date1904));break;default:throw new Error("I could not understand type of value")}}},{key:"render",value:function(B,R){var P=this;if(!(R.type===f.ValueType.Null&&!R.styleId)){switch(B.openNode("c"),B.addAttribute("r",R.address),R.styleId&&B.addAttribute("s",R.styleId),R.type){case f.ValueType.Null:break;case f.ValueType.Number:B.leafNode("v",null,R.value);break;case f.ValueType.Boolean:B.addAttribute("t","b"),B.leafNode("v",null,R.value?"1":"0");break;case f.ValueType.Error:B.addAttribute("t","e"),B.leafNode("v",null,R.value.error);break;case f.ValueType.String:case f.ValueType.RichText:R.ssId!==void 0?(B.addAttribute("t","s"),B.leafNode("v",null,R.ssId)):R.value&&R.value.richText?(B.addAttribute("t","inlineStr"),B.openNode("is"),R.value.richText.forEach(function(O){P.richTextXForm.render(B,O)}),B.closeNode("is")):(B.addAttribute("t","str"),B.leafNode("v",null,R.value));break;case f.ValueType.Date:B.leafNode("v",null,o.dateToExcel(R.value,R.date1904));break;case f.ValueType.Hyperlink:R.ssId!==void 0?(B.addAttribute("t","s"),B.leafNode("v",null,R.ssId)):(B.addAttribute("t","str"),B.leafNode("v",null,R.text));break;case f.ValueType.Formula:this.renderFormula(B,R);break;case f.ValueType.Merge:break}B.closeNode()}}},{key:"parseOpen",value:function(B){if(this.parser)return this.parser.parseOpen(B),!0;switch(B.name){case"c":return this.model={address:B.attributes.r},this.t=B.attributes.t,B.attributes.s&&(this.model.styleId=parseInt(B.attributes.s,10)),!0;case"f":return this.currentNode="f",this.model.si=B.attributes.si,this.model.shareType=B.attributes.t,this.model.ref=B.attributes.ref,!0;case"v":return this.currentNode="v",!0;case"t":return this.currentNode="t",!0;case"r":return this.parser=this.richTextXForm,this.parser.parseOpen(B),!0;default:return!1}}},{key:"parseText",value:function(B){if(this.parser){this.parser.parseText(B);return}switch(this.currentNode){case"f":this.model.formula=this.model.formula?this.model.formula+B:B;break;case"v":case"t":this.model.value&&this.model.value.richText?this.model.value.richText.text=this.model.value.richText.text?this.model.value.richText.text+B:B:this.model.value=this.model.value?this.model.value+B:B;break}}},{key:"parseClose",value:function(B){switch(B){case"c":{var R=this.model;if(R.formula||R.shareType)R.type=f.ValueType.Formula,R.value&&(this.t==="str"?R.result=o.xmlDecode(R.value):this.t==="b"?R.result=parseInt(R.value,10)!==0:this.t==="e"?R.result={error:R.value}:R.result=parseFloat(R.value),R.value=void 0);else if(R.value!==void 0)switch(this.t){case"s":R.type=f.ValueType.String,R.value=parseInt(R.value,10);break;case"str":R.type=f.ValueType.String,R.value=o.xmlDecode(R.value);break;case"inlineStr":R.type=f.ValueType.String;break;case"b":R.type=f.ValueType.Boolean,R.value=parseInt(R.value,10)!==0;break;case"e":R.type=f.ValueType.Error,R.value={error:R.value};break;default:R.type=f.ValueType.Number,R.value=parseFloat(R.value);break}else R.styleId?R.type=f.ValueType.Null:R.type=f.ValueType.Merge;return!1}case"f":case"v":case"is":return this.currentNode=void 0,!0;case"t":return this.parser?(this.parser.parseClose(B),!0):(this.currentNode=void 0,!0);case"r":return this.model.value=this.model.value||{},this.model.value.richText=this.model.value.richText||[],this.model.value.richText.push(this.parser.model),this.parser=void 0,this.currentNode=void 0,!0;default:return this.parser?(this.parser.parseClose(B),!0):!1}}},{key:"reconcile",value:function(B,R){var P=B.styleId&&R.styles&&R.styles.getStyleModel(B.styleId);switch(P&&(B.style=P),B.styleId!==void 0&&(B.styleId=void 0),B.type){case f.ValueType.String:typeof B.value=="number"&&R.sharedStrings&&(B.value=R.sharedStrings.getString(B.value)),B.value.richText&&(B.type=f.ValueType.RichText);break;case f.ValueType.Number:P&&o.isDateFmt(P.numFmt)&&(B.type=f.ValueType.Date,B.value=o.excelToDate(B.value,R.date1904));break;case f.ValueType.Formula:B.result!==void 0&&P&&o.isDateFmt(P.numFmt)&&(B.result=o.excelToDate(B.result,R.date1904)),B.shareType==="shared"&&(B.ref?R.formulae[B.si]=B.address:(B.sharedFormula=R.formulae[B.si],delete B.shareType),delete B.si);break}var O=R.hyperlinkMap[B.address];O&&(B.type===f.ValueType.Formula?(B.text=B.result,B.result=void 0):(B.text=B.value,B.value=void 0),B.type=f.ValueType.Hyperlink,B.hyperlink=O);var F=R.commentsMap&&R.commentsMap[B.address];F&&(B.comment=F)}},{key:"tag",get:function(){return"c"}}]),L}(s);n.exports=C},{"../../../doc/enums":7,"../../../doc/range":10,"../../../utils/utils":26,"../base-xform":31,"../strings/rich-text-xform":121}],73:[function(e,n,i){function a(u){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(u)}function l(u,o){if(!(u instanceof o))throw new TypeError("Cannot call a class as a function")}function d(u,o){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(u){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},p(u)}var S=e("../../base-xform"),w=function(u){b(s,u);var o=_(s);function s(){return l(this,s),o.apply(this,arguments)}return m(s,[{key:"render",value:function(f,v){f.leafNode(this.tag,{iconSet:v.iconSet,iconId:v.iconId})}},{key:"parseOpen",value:function(f){var v=f.attributes;this.model={iconSet:v.iconSet,iconId:S.toIntValue(v.iconId)}}},{key:"parseClose",value:function(f){return f!==this.tag}},{key:"tag",get:function(){return"x14:cfIcon"}}]),s}(S);n.exports=w},{"../../base-xform":31}],74:[function(e,n,i){function a(k){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(C){return typeof C}:a=function(C){return C&&typeof Symbol=="function"&&C.constructor===Symbol&&C!==Symbol.prototype?"symbol":typeof C},a(k)}function l(k,T){if(!(k instanceof T))throw new TypeError("Cannot call a class as a function")}function d(k,T){for(var C=0;C"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(k){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(C){return C.__proto__||Object.getPrototypeOf(C)},p(k)}var S=e("uuid"),w=S.v4,u=e("../../base-xform"),o=e("../../composite-xform"),s=e("./databar-ext-xform"),c=e("./icon-set-ext-xform"),f={"3Triangles":!0,"3Stars":!0,"5Boxes":!0},v=function(k){b(C,k);var T=_(C);function C(){var D;return l(this,C),D=T.call(this),D.map={"x14:dataBar":D.databarXform=new s,"x14:iconSet":D.iconSetXform=new c},D}return m(C,[{key:"prepare",value:function(j){C.isExt(j)&&(j.x14Id="{".concat(w(),"}").toUpperCase())}},{key:"render",value:function(j,L){if(C.isExt(L))switch(L.type){case"dataBar":this.renderDataBar(j,L);break;case"iconSet":this.renderIconSet(j,L);break}}},{key:"renderDataBar",value:function(j,L){j.openNode(this.tag,{type:"dataBar",id:L.x14Id}),this.databarXform.render(j,L),j.closeNode()}},{key:"renderIconSet",value:function(j,L){j.openNode(this.tag,{type:"iconSet",priority:L.priority,id:L.x14Id||"{".concat(w(),"}")}),this.iconSetXform.render(j,L),j.closeNode()}},{key:"createNewModel",value:function(j){var L=j.attributes;return{type:L.type,x14Id:L.id,priority:u.toIntValue(L.priority)}}},{key:"onParserClose",value:function(j,L){Object.assign(this.model,L.model)}},{key:"tag",get:function(){return"x14:cfRule"}}],[{key:"isExt",value:function(j){return j.type==="dataBar"?s.isExt(j):!!(j.type==="iconSet"&&(j.custom||f[j.iconSet]))}}]),C}(o);n.exports=v},{"../../base-xform":31,"../../composite-xform":47,"./databar-ext-xform":78,"./icon-set-ext-xform":80,uuid:526}],75:[function(e,n,i){function a(o){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(c){return typeof c}:a=function(c){return c&&typeof Symbol=="function"&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c},a(o)}function l(o,s){if(!(o instanceof s))throw new TypeError("Cannot call a class as a function")}function d(o,s){for(var c=0;c"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(o){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(c){return c.__proto__||Object.getPrototypeOf(c)},p(o)}var S=e("../../composite-xform"),w=e("./f-ext-xform"),u=function(o){b(c,o);var s=_(c);function c(){var f;return l(this,c),f=s.call(this),f.map={"xm:f":f.fExtXform=new w},f}return m(c,[{key:"render",value:function(v,k){v.openNode(this.tag,{type:k.type}),k.value!==void 0&&this.fExtXform.render(v,k.value),v.closeNode()}},{key:"createNewModel",value:function(v){return{type:v.attributes.type}}},{key:"onParserClose",value:function(v,k){switch(v){case"xm:f":this.model.value=k.model?parseFloat(k.model):0;break}}},{key:"tag",get:function(){return"x14:cfvo"}}]),c}(S);n.exports=u},{"../../composite-xform":47,"./f-ext-xform":79}],76:[function(e,n,i){function a(s){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(f){return typeof f}:a=function(f){return f&&typeof Symbol=="function"&&f.constructor===Symbol&&f!==Symbol.prototype?"symbol":typeof f},a(s)}function l(s,c){if(!(s instanceof c))throw new TypeError("Cannot call a class as a function")}function d(s,c){for(var f=0;f"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(s){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(f){return f.__proto__||Object.getPrototypeOf(f)},p(s)}var S=e("../../composite-xform"),w=e("./sqref-ext-xform"),u=e("./cf-rule-ext-xform"),o=function(s){b(f,s);var c=_(f);function f(){var v;return l(this,f),v=c.call(this),v.map={"xm:sqref":v.sqRef=new w,"x14:cfRule":v.cfRule=new u},v}return m(f,[{key:"prepare",value:function(k,T){var C=this;k.rules.forEach(function(D){C.cfRule.prepare(D,T)})}},{key:"render",value:function(k,T){var C=this;T.rules.some(u.isExt)&&(k.openNode(this.tag,{"xmlns:xm":"http://schemas.microsoft.com/office/excel/2006/main"}),T.rules.filter(u.isExt).forEach(function(D){return C.cfRule.render(k,D)}),this.sqRef.render(k,T.ref),k.closeNode())}},{key:"createNewModel",value:function(){return{rules:[]}}},{key:"onParserClose",value:function(k,T){switch(k){case"xm:sqref":this.model.ref=T.model;break;case"x14:cfRule":this.model.rules.push(T.model);break}}},{key:"tag",get:function(){return"x14:conditionalFormatting"}}]),f}(S);n.exports=o},{"../../composite-xform":47,"./cf-rule-ext-xform":74,"./sqref-ext-xform":81}],77:[function(e,n,i){function a(s){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(f){return typeof f}:a=function(f){return f&&typeof Symbol=="function"&&f.constructor===Symbol&&f!==Symbol.prototype?"symbol":typeof f},a(s)}function l(s,c){if(!(s instanceof c))throw new TypeError("Cannot call a class as a function")}function d(s,c){for(var f=0;f"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(s){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(f){return f.__proto__||Object.getPrototypeOf(f)},p(s)}var S=e("../../composite-xform"),w=e("./cf-rule-ext-xform"),u=e("./conditional-formatting-ext-xform"),o=function(s){b(f,s);var c=_(f);function f(){var v;return l(this,f),v=c.call(this),v.map={"x14:conditionalFormatting":v.cfXform=new u},v}return m(f,[{key:"hasContent",value:function(k){return k.hasExtContent===void 0&&(k.hasExtContent=k.some(function(T){return T.rules.some(w.isExt)})),k.hasExtContent}},{key:"prepare",value:function(k,T){var C=this;k.forEach(function(D){C.cfXform.prepare(D,T)})}},{key:"render",value:function(k,T){var C=this;this.hasContent(T)&&(k.openNode(this.tag),T.forEach(function(D){return C.cfXform.render(k,D)}),k.closeNode())}},{key:"createNewModel",value:function(){return[]}},{key:"onParserClose",value:function(k,T){this.model.push(T.model)}},{key:"tag",get:function(){return"x14:conditionalFormattings"}}]),f}(S);n.exports=o},{"../../composite-xform":47,"./cf-rule-ext-xform":74,"./conditional-formatting-ext-xform":76}],78:[function(e,n,i){function a(D){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(L){return typeof L}:a=function(L){return L&&typeof Symbol=="function"&&L.constructor===Symbol&&L!==Symbol.prototype?"symbol":typeof L},a(D)}function l(D,j){return _(D)||h(D,j)||m(D,j)||d()}function d(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function m(D,j){if(D){if(typeof D=="string")return b(D,j);var L=Object.prototype.toString.call(D).slice(8,-1);if(L==="Object"&&D.constructor&&(L=D.constructor.name),L==="Map"||L==="Set")return Array.from(D);if(L==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(L))return b(D,j)}}function b(D,j){(j==null||j>D.length)&&(j=D.length);for(var L=0,M=new Array(j);L"u"||!(Symbol.iterator in Object(D)))){var L=[],M=!0,B=!1,R=void 0;try{for(var P=D[Symbol.iterator](),O;!(M=(O=P.next()).done)&&(L.push(O.value),!(j&&L.length===j));M=!0);}catch(F){B=!0,R=F}finally{try{!M&&P.return!=null&&P.return()}finally{if(B)throw R}}return L}}function _(D){if(Array.isArray(D))return D}function g(D,j){if(!(D instanceof j))throw new TypeError("Cannot call a class as a function")}function y(D,j){for(var L=0;L"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function c(D){return c=Object.setPrototypeOf?Object.getPrototypeOf:function(L){return L.__proto__||Object.getPrototypeOf(L)},c(D)}var f=e("../../base-xform"),v=e("../../composite-xform"),k=e("../../style/color-xform"),T=e("./cfvo-ext-xform"),C=function(D){p(L,D);var j=w(L);function L(){var M;return g(this,L),M=j.call(this),M.map={"x14:cfvo":M.cfvoXform=new T,"x14:borderColor":M.borderColorXform=new k("x14:borderColor"),"x14:negativeBorderColor":M.negativeBorderColorXform=new k("x14:negativeBorderColor"),"x14:negativeFillColor":M.negativeFillColorXform=new k("x14:negativeFillColor"),"x14:axisColor":M.axisColorXform=new k("x14:axisColor")},M}return x(L,[{key:"render",value:function(B,R){var P=this;B.openNode(this.tag,{minLength:f.toIntAttribute(R.minLength,0,!0),maxLength:f.toIntAttribute(R.maxLength,100,!0),border:f.toBoolAttribute(R.border,!1),gradient:f.toBoolAttribute(R.gradient,!0),negativeBarColorSameAsPositive:f.toBoolAttribute(R.negativeBarColorSameAsPositive,!0),negativeBarBorderColorSameAsPositive:f.toBoolAttribute(R.negativeBarBorderColorSameAsPositive,!0),axisPosition:f.toAttribute(R.axisPosition,"auto"),direction:f.toAttribute(R.direction,"leftToRight")}),R.cfvo.forEach(function(O){P.cfvoXform.render(B,O)}),this.borderColorXform.render(B,R.borderColor),this.negativeBorderColorXform.render(B,R.negativeBorderColor),this.negativeFillColorXform.render(B,R.negativeFillColor),this.axisColorXform.render(B,R.axisColor),B.closeNode()}},{key:"createNewModel",value:function(B){var R=B.attributes;return{cfvo:[],minLength:f.toIntValue(R.minLength,0),maxLength:f.toIntValue(R.maxLength,100),border:f.toBoolValue(R.border,!1),gradient:f.toBoolValue(R.gradient,!0),negativeBarColorSameAsPositive:f.toBoolValue(R.negativeBarColorSameAsPositive,!0),negativeBarBorderColorSameAsPositive:f.toBoolValue(R.negativeBarBorderColorSameAsPositive,!0),axisPosition:f.toStringValue(R.axisPosition,"auto"),direction:f.toStringValue(R.direction,"leftToRight")}}},{key:"onParserClose",value:function(B,R){var P=B.split(":"),O=l(P,2),F=O[1];switch(F){case"cfvo":this.model.cfvo.push(R.model);break;default:this.model[F]=R.model;break}}},{key:"tag",get:function(){return"x14:dataBar"}}],[{key:"isExt",value:function(B){return!B.gradient}}]),L}(v);n.exports=C},{"../../base-xform":31,"../../composite-xform":47,"../../style/color-xform":127,"./cfvo-ext-xform":75}],79:[function(e,n,i){function a(u){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(u)}function l(u,o){if(!(u instanceof o))throw new TypeError("Cannot call a class as a function")}function d(u,o){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(u){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},p(u)}var S=e("../../base-xform"),w=function(u){b(s,u);var o=_(s);function s(){return l(this,s),o.apply(this,arguments)}return m(s,[{key:"render",value:function(f,v){f.leafNode(this.tag,null,v)}},{key:"parseOpen",value:function(){this.model=""}},{key:"parseText",value:function(f){this.model+=f}},{key:"parseClose",value:function(f){return f!==this.tag}},{key:"tag",get:function(){return"xm:f"}}]),s}(S);n.exports=w},{"../../base-xform":31}],80:[function(e,n,i){function a(D){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(L){return typeof L}:a=function(L){return L&&typeof Symbol=="function"&&L.constructor===Symbol&&L!==Symbol.prototype?"symbol":typeof L},a(D)}function l(D,j){return _(D)||h(D,j)||m(D,j)||d()}function d(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function m(D,j){if(D){if(typeof D=="string")return b(D,j);var L=Object.prototype.toString.call(D).slice(8,-1);if(L==="Object"&&D.constructor&&(L=D.constructor.name),L==="Map"||L==="Set")return Array.from(D);if(L==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(L))return b(D,j)}}function b(D,j){(j==null||j>D.length)&&(j=D.length);for(var L=0,M=new Array(j);L"u"||!(Symbol.iterator in Object(D)))){var L=[],M=!0,B=!1,R=void 0;try{for(var P=D[Symbol.iterator](),O;!(M=(O=P.next()).done)&&(L.push(O.value),!(j&&L.length===j));M=!0);}catch(F){B=!0,R=F}finally{try{!M&&P.return!=null&&P.return()}finally{if(B)throw R}}return L}}function _(D){if(Array.isArray(D))return D}function g(D,j){if(!(D instanceof j))throw new TypeError("Cannot call a class as a function")}function y(D,j){for(var L=0;L"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function c(D){return c=Object.setPrototypeOf?Object.getPrototypeOf:function(L){return L.__proto__||Object.getPrototypeOf(L)},c(D)}var f=e("../../base-xform"),v=e("../../composite-xform"),k=e("./cfvo-ext-xform"),T=e("./cf-icon-ext-xform"),C=function(D){p(L,D);var j=w(L);function L(){var M;return g(this,L),M=j.call(this),M.map={"x14:cfvo":M.cfvoXform=new k,"x14:cfIcon":M.cfIconXform=new T},M}return x(L,[{key:"render",value:function(B,R){var P=this;B.openNode(this.tag,{iconSet:f.toStringAttribute(R.iconSet),reverse:f.toBoolAttribute(R.reverse,!1),showValue:f.toBoolAttribute(R.showValue,!0),custom:f.toBoolAttribute(R.icons,!1)}),R.cfvo.forEach(function(O){P.cfvoXform.render(B,O)}),R.icons&&R.icons.forEach(function(O,F){O.iconId=F,P.cfIconXform.render(B,O)}),B.closeNode()}},{key:"createNewModel",value:function(B){var R=B.attributes;return{cfvo:[],iconSet:f.toStringValue(R.iconSet,"3TrafficLights"),reverse:f.toBoolValue(R.reverse,!1),showValue:f.toBoolValue(R.showValue,!0)}}},{key:"onParserClose",value:function(B,R){var P=B.split(":"),O=l(P,2),F=O[1];switch(F){case"cfvo":this.model.cfvo.push(R.model);break;case"cfIcon":this.model.icons||(this.model.icons=[]),this.model.icons.push(R.model);break;default:this.model[F]=R.model;break}}},{key:"tag",get:function(){return"x14:iconSet"}}]),L}(v);n.exports=C},{"../../base-xform":31,"../../composite-xform":47,"./cf-icon-ext-xform":73,"./cfvo-ext-xform":75}],81:[function(e,n,i){function a(u){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(u)}function l(u,o){if(!(u instanceof o))throw new TypeError("Cannot call a class as a function")}function d(u,o){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(u){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},p(u)}var S=e("../../base-xform"),w=function(u){b(s,u);var o=_(s);function s(){return l(this,s),o.apply(this,arguments)}return m(s,[{key:"render",value:function(f,v){f.leafNode(this.tag,null,v)}},{key:"parseOpen",value:function(){this.model=""}},{key:"parseText",value:function(f){this.model+=f}},{key:"parseClose",value:function(f){return f!==this.tag}},{key:"tag",get:function(){return"xm:sqref"}}]),s}(S);n.exports=w},{"../../base-xform":31}],82:[function(e,n,i){function a(R){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(O){return typeof O}:a=function(O){return O&&typeof Symbol=="function"&&O.constructor===Symbol&&O!==Symbol.prototype?"symbol":typeof O},a(R)}function l(R,P){var O=Object.keys(R);if(Object.getOwnPropertySymbols){var F=Object.getOwnPropertySymbols(R);P&&(F=F.filter(function(H){return Object.getOwnPropertyDescriptor(R,H).enumerable})),O.push.apply(O,F)}return O}function d(R){for(var P=1;P"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function u(R){return u=Object.setPrototypeOf?Object.getPrototypeOf:function(O){return O.__proto__||Object.getPrototypeOf(O)},u(R)}var o=e("../../base-xform"),s=e("../../composite-xform"),c=e("../../../../doc/range"),f=e("./databar-xform"),v=e("./ext-lst-ref-xform"),k=e("./formula-xform"),T=e("./color-scale-xform"),C=e("./icon-set-xform"),D={"3Triangles":!0,"3Stars":!0,"5Boxes":!0},j=function(P){if(P.formulae&&P.formulae[0])return P.formulae[0];var O=new c(P.ref),F=O.tl;switch(P.operator){case"containsText":return'NOT(ISERROR(SEARCH("'.concat(P.text,'",').concat(F,")))");case"containsBlanks":return"LEN(TRIM(".concat(F,"))=0");case"notContainsBlanks":return"LEN(TRIM(".concat(F,"))>0");case"containsErrors":return"ISERROR(".concat(F,")");case"notContainsErrors":return"NOT(ISERROR(".concat(F,"))");default:return}},L=function(P){if(P.formulae&&P.formulae[0])return P.formulae[0];var O=new c(P.ref),F=O.tl;switch(P.timePeriod){case"thisWeek":return"AND(TODAY()-ROUNDDOWN(".concat(F,",0)<=WEEKDAY(TODAY())-1,ROUNDDOWN(").concat(F,",0)-TODAY()<=7-WEEKDAY(TODAY()))");case"lastWeek":return"AND(TODAY()-ROUNDDOWN(".concat(F,",0)>=(WEEKDAY(TODAY())),TODAY()-ROUNDDOWN(").concat(F,",0)<(WEEKDAY(TODAY())+7))");case"nextWeek":return"AND(ROUNDDOWN(".concat(F,",0)-TODAY()>(7-WEEKDAY(TODAY())),ROUNDDOWN(").concat(F,",0)-TODAY()<(15-WEEKDAY(TODAY())))");case"yesterday":return"FLOOR(".concat(F,",1)=TODAY()-1");case"today":return"FLOOR(".concat(F,",1)=TODAY()");case"tomorrow":return"FLOOR(".concat(F,",1)=TODAY()+1");case"last7Days":return"AND(TODAY()-FLOOR(".concat(F,",1)<=6,FLOOR(").concat(F,",1)<=TODAY())");case"lastMonth":return"AND(MONTH(".concat(F,")=MONTH(EDATE(TODAY(),0-1)),YEAR(").concat(F,")=YEAR(EDATE(TODAY(),0-1)))");case"thisMonth":return"AND(MONTH(".concat(F,")=MONTH(TODAY()),YEAR(").concat(F,")=YEAR(TODAY()))");case"nextMonth":return"AND(MONTH(".concat(F,")=MONTH(EDATE(TODAY(),0+1)),YEAR(").concat(F,")=YEAR(EDATE(TODAY(),0+1)))");default:return}},M=function(P){var O=P.type,F=P.operator;switch(O){case"containsText":case"containsBlanks":case"notContainsBlanks":case"containsErrors":case"notContainsErrors":return{type:"containsText",operator:O};default:return{type:O,operator:F}}},B=function(R){g(O,R);var P=x(O);function O(){var F;return b(this,O),F=P.call(this),F.map={dataBar:F.databarXform=new f,extLst:F.extLstRefXform=new v,formula:F.formulaXform=new k,colorScale:F.colorScaleXform=new T,iconSet:F.iconSetXform=new C},F}return _(O,[{key:"render",value:function(H,V){switch(V.type){case"expression":this.renderExpression(H,V);break;case"cellIs":this.renderCellIs(H,V);break;case"top10":this.renderTop10(H,V);break;case"aboveAverage":this.renderAboveAverage(H,V);break;case"dataBar":this.renderDataBar(H,V);break;case"colorScale":this.renderColorScale(H,V);break;case"iconSet":this.renderIconSet(H,V);break;case"containsText":this.renderText(H,V);break;case"timePeriod":this.renderTimePeriod(H,V);break}}},{key:"renderExpression",value:function(H,V){H.openNode(this.tag,{type:"expression",dxfId:V.dxfId,priority:V.priority}),this.formulaXform.render(H,V.formulae[0]),H.closeNode()}},{key:"renderCellIs",value:function(H,V){var z=this;H.openNode(this.tag,{type:"cellIs",dxfId:V.dxfId,priority:V.priority,operator:V.operator}),V.formulae.forEach(function(X){z.formulaXform.render(H,X)}),H.closeNode()}},{key:"renderTop10",value:function(H,V){H.leafNode(this.tag,{type:"top10",dxfId:V.dxfId,priority:V.priority,percent:o.toBoolAttribute(V.percent,!1),bottom:o.toBoolAttribute(V.bottom,!1),rank:o.toIntValue(V.rank,10,!0)})}},{key:"renderAboveAverage",value:function(H,V){H.leafNode(this.tag,{type:"aboveAverage",dxfId:V.dxfId,priority:V.priority,aboveAverage:o.toBoolAttribute(V.aboveAverage,!0)})}},{key:"renderDataBar",value:function(H,V){H.openNode(this.tag,{type:"dataBar",priority:V.priority}),this.databarXform.render(H,V),this.extLstRefXform.render(H,V),H.closeNode()}},{key:"renderColorScale",value:function(H,V){H.openNode(this.tag,{type:"colorScale",priority:V.priority}),this.colorScaleXform.render(H,V),H.closeNode()}},{key:"renderIconSet",value:function(H,V){O.isPrimitive(V)&&(H.openNode(this.tag,{type:"iconSet",priority:V.priority}),this.iconSetXform.render(H,V),H.closeNode())}},{key:"renderText",value:function(H,V){H.openNode(this.tag,{type:V.operator,dxfId:V.dxfId,priority:V.priority,operator:o.toStringAttribute(V.operator,"containsText")});var z=j(V);z&&this.formulaXform.render(H,z),H.closeNode()}},{key:"renderTimePeriod",value:function(H,V){H.openNode(this.tag,{type:"timePeriod",dxfId:V.dxfId,priority:V.priority,timePeriod:V.timePeriod});var z=L(V);z&&this.formulaXform.render(H,z),H.closeNode()}},{key:"createNewModel",value:function(H){var V=H.attributes;return d(d({},M(V)),{},{dxfId:o.toIntValue(V.dxfId),priority:o.toIntValue(V.priority),timePeriod:V.timePeriod,percent:o.toBoolValue(V.percent),bottom:o.toBoolValue(V.bottom),rank:o.toIntValue(V.rank),aboveAverage:o.toBoolValue(V.aboveAverage)})}},{key:"onParserClose",value:function(H,V){switch(H){case"dataBar":case"extLst":case"colorScale":case"iconSet":Object.assign(this.model,V.model);break;case"formula":this.model.formulae=this.model.formulae||[],this.model.formulae.push(V.model);break}}},{key:"tag",get:function(){return"cfRule"}}],[{key:"isPrimitive",value:function(H){return!(H.type==="iconSet"&&(H.custom||D[H.iconSet]))}}]),O}(s);n.exports=B},{"../../../../doc/range":10,"../../base-xform":31,"../../composite-xform":47,"./color-scale-xform":84,"./databar-xform":87,"./ext-lst-ref-xform":88,"./formula-xform":89,"./icon-set-xform":90}],83:[function(e,n,i){function a(u){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(u)}function l(u,o){if(!(u instanceof o))throw new TypeError("Cannot call a class as a function")}function d(u,o){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(u){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},p(u)}var S=e("../../base-xform"),w=function(u){b(s,u);var o=_(s);function s(){return l(this,s),o.apply(this,arguments)}return m(s,[{key:"render",value:function(f,v){f.leafNode(this.tag,{type:v.type,val:v.value})}},{key:"parseOpen",value:function(f){this.model={type:f.attributes.type,value:S.toFloatValue(f.attributes.val)}}},{key:"parseClose",value:function(f){return f!==this.tag}},{key:"tag",get:function(){return"cfvo"}}]),s}(S);n.exports=w},{"../../base-xform":31}],84:[function(e,n,i){function a(s){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(f){return typeof f}:a=function(f){return f&&typeof Symbol=="function"&&f.constructor===Symbol&&f!==Symbol.prototype?"symbol":typeof f},a(s)}function l(s,c){if(!(s instanceof c))throw new TypeError("Cannot call a class as a function")}function d(s,c){for(var f=0;f"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(s){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(f){return f.__proto__||Object.getPrototypeOf(f)},p(s)}var S=e("../../composite-xform"),w=e("../../style/color-xform"),u=e("./cfvo-xform"),o=function(s){b(f,s);var c=_(f);function f(){var v;return l(this,f),v=c.call(this),v.map={cfvo:v.cfvoXform=new u,color:v.colorXform=new w},v}return m(f,[{key:"render",value:function(k,T){var C=this;k.openNode(this.tag),T.cfvo.forEach(function(D){C.cfvoXform.render(k,D)}),T.color.forEach(function(D){C.colorXform.render(k,D)}),k.closeNode()}},{key:"createNewModel",value:function(k){return{cfvo:[],color:[]}}},{key:"onParserClose",value:function(k,T){this.model[k].push(T.model)}},{key:"tag",get:function(){return"colorScale"}}]),f}(S);n.exports=o},{"../../composite-xform":47,"../../style/color-xform":127,"./cfvo-xform":83}],85:[function(e,n,i){function a(o){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(c){return typeof c}:a=function(c){return c&&typeof Symbol=="function"&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c},a(o)}function l(o,s){if(!(o instanceof s))throw new TypeError("Cannot call a class as a function")}function d(o,s){for(var c=0;c"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(o){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(c){return c.__proto__||Object.getPrototypeOf(c)},p(o)}var S=e("../../composite-xform"),w=e("./cf-rule-xform"),u=function(o){b(c,o);var s=_(c);function c(){var f;return l(this,c),f=s.call(this),f.map={cfRule:new w},f}return m(c,[{key:"render",value:function(v,k){var T=this;k.rules.some(w.isPrimitive)&&(v.openNode(this.tag,{sqref:k.ref}),k.rules.forEach(function(C){w.isPrimitive(C)&&(C.ref=k.ref,T.map.cfRule.render(v,C))}),v.closeNode())}},{key:"createNewModel",value:function(v){var k=v.attributes;return{ref:k.sqref,rules:[]}}},{key:"onParserClose",value:function(v,k){this.model.rules.push(k.model)}},{key:"tag",get:function(){return"conditionalFormatting"}}]),c}(S);n.exports=u},{"../../composite-xform":47,"./cf-rule-xform":82}],86:[function(e,n,i){function a(T){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(D){return typeof D}:a=function(D){return D&&typeof Symbol=="function"&&D.constructor===Symbol&&D!==Symbol.prototype?"symbol":typeof D},a(T)}function l(T){return h(T)||b(T)||m(T)||d()}function d(){throw new TypeError(`Invalid attempt to spread non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function m(T,C){if(T){if(typeof T=="string")return _(T,C);var D=Object.prototype.toString.call(T).slice(8,-1);if(D==="Object"&&T.constructor&&(D=T.constructor.name),D==="Map"||D==="Set")return Array.from(T);if(D==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(D))return _(T,C)}}function b(T){if(typeof Symbol<"u"&&Symbol.iterator in Object(T))return Array.from(T)}function h(T){if(Array.isArray(T))return _(T)}function _(T,C){(C==null||C>T.length)&&(C=T.length);for(var D=0,j=new Array(C);D"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function c(T){return c=Object.setPrototypeOf?Object.getPrototypeOf:function(D){return D.__proto__||Object.getPrototypeOf(D)},c(T)}var f=e("../../base-xform"),v=e("./conditional-formatting-xform"),k=function(T){p(D,T);var C=w(D);function D(){var j;return g(this,D),j=C.call(this),j.cfXform=new v,j}return x(D,[{key:"reset",value:function(){this.model=[]}},{key:"prepare",value:function(L,M){var B=L.reduce(function(R,P){return Math.max.apply(Math,[R].concat(l(P.rules.map(function(O){return O.priority||0}))))},1);L.forEach(function(R){R.rules.forEach(function(P){P.priority||(P.priority=B++),P.style&&(P.dxfId=M.styles.addDxfStyle(P.style))})})}},{key:"render",value:function(L,M){var B=this;M.forEach(function(R){B.cfXform.render(L,R)})}},{key:"parseOpen",value:function(L){if(this.parser)return this.parser.parseOpen(L),!0;switch(L.name){case"conditionalFormatting":return this.parser=this.cfXform,this.parser.parseOpen(L),!0;default:return!1}}},{key:"parseText",value:function(L){this.parser&&this.parser.parseText(L)}},{key:"parseClose",value:function(L){return this.parser?this.parser.parseClose(L)?!0:(this.model.push(this.parser.model),this.parser=void 0,!1):!1}},{key:"reconcile",value:function(L,M){L.forEach(function(B){B.rules.forEach(function(R){R.dxfId!==void 0&&(R.style=M.styles.getDxfStyle(R.dxfId),delete R.dxfId)})})}},{key:"tag",get:function(){return"conditionalFormatting"}}]),D}(f);n.exports=k},{"../../base-xform":31,"./conditional-formatting-xform":85}],87:[function(e,n,i){function a(s){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(f){return typeof f}:a=function(f){return f&&typeof Symbol=="function"&&f.constructor===Symbol&&f!==Symbol.prototype?"symbol":typeof f},a(s)}function l(s,c){if(!(s instanceof c))throw new TypeError("Cannot call a class as a function")}function d(s,c){for(var f=0;f"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(s){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(f){return f.__proto__||Object.getPrototypeOf(f)},p(s)}var S=e("../../composite-xform"),w=e("../../style/color-xform"),u=e("./cfvo-xform"),o=function(s){b(f,s);var c=_(f);function f(){var v;return l(this,f),v=c.call(this),v.map={cfvo:v.cfvoXform=new u,color:v.colorXform=new w},v}return m(f,[{key:"render",value:function(k,T){var C=this;k.openNode(this.tag),T.cfvo.forEach(function(D){C.cfvoXform.render(k,D)}),this.colorXform.render(k,T.color),k.closeNode()}},{key:"createNewModel",value:function(){return{cfvo:[]}}},{key:"onParserClose",value:function(k,T){switch(k){case"cfvo":this.model.cfvo.push(T.model);break;case"color":this.model.color=T.model;break}}},{key:"tag",get:function(){return"dataBar"}}]),f}(S);n.exports=o},{"../../composite-xform":47,"../../style/color-xform":127,"./cfvo-xform":83}],88:[function(e,n,i){function a(c){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(v){return typeof v}:a=function(v){return v&&typeof Symbol=="function"&&v.constructor===Symbol&&v!==Symbol.prototype?"symbol":typeof v},a(c)}function l(c,f){if(!(c instanceof f))throw new TypeError("Cannot call a class as a function")}function d(c,f){for(var v=0;v"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(c){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(v){return v.__proto__||Object.getPrototypeOf(v)},p(c)}var S=e("../../base-xform"),w=e("../../composite-xform"),u=function(c){b(v,c);var f=_(v);function v(){return l(this,v),f.apply(this,arguments)}return m(v,[{key:"render",value:function(T,C){T.leafNode(this.tag,null,C)}},{key:"parseOpen",value:function(){this.model=""}},{key:"parseText",value:function(T){this.model+=T}},{key:"parseClose",value:function(T){return T!==this.tag}},{key:"tag",get:function(){return"x14:id"}}]),v}(S),o=function(c){b(v,c);var f=_(v);function v(){var k;return l(this,v),k=f.call(this),k.map={"x14:id":k.idXform=new u},k}return m(v,[{key:"render",value:function(T,C){T.openNode(this.tag,{uri:"{B025F937-C7B1-47D3-B67F-A62EFF666E3E}","xmlns:x14":"http://schemas.microsoft.com/office/spreadsheetml/2009/9/main"}),this.idXform.render(T,C.x14Id),T.closeNode()}},{key:"createNewModel",value:function(){return{}}},{key:"onParserClose",value:function(T,C){this.model.x14Id=C.model}},{key:"tag",get:function(){return"ext"}}]),v}(w),s=function(c){b(v,c);var f=_(v);function v(){var k;return l(this,v),k=f.call(this),k.map={ext:new o},k}return m(v,[{key:"render",value:function(T,C){T.openNode(this.tag),this.map.ext.render(T,C),T.closeNode()}},{key:"createNewModel",value:function(){return{}}},{key:"onParserClose",value:function(T,C){Object.assign(this.model,C.model)}},{key:"tag",get:function(){return"extLst"}}]),v}(w);n.exports=s},{"../../base-xform":31,"../../composite-xform":47}],89:[function(e,n,i){function a(u){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(u)}function l(u,o){if(!(u instanceof o))throw new TypeError("Cannot call a class as a function")}function d(u,o){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(u){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},p(u)}var S=e("../../base-xform"),w=function(u){b(s,u);var o=_(s);function s(){return l(this,s),o.apply(this,arguments)}return m(s,[{key:"render",value:function(f,v){f.leafNode(this.tag,null,v)}},{key:"parseOpen",value:function(){this.model=""}},{key:"parseText",value:function(f){this.model+=f}},{key:"parseClose",value:function(f){return f!==this.tag}},{key:"tag",get:function(){return"formula"}}]),s}(S);n.exports=w},{"../../base-xform":31}],90:[function(e,n,i){function a(s){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(f){return typeof f}:a=function(f){return f&&typeof Symbol=="function"&&f.constructor===Symbol&&f!==Symbol.prototype?"symbol":typeof f},a(s)}function l(s,c){if(!(s instanceof c))throw new TypeError("Cannot call a class as a function")}function d(s,c){for(var f=0;f"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(s){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(f){return f.__proto__||Object.getPrototypeOf(f)},p(s)}var S=e("../../base-xform"),w=e("../../composite-xform"),u=e("./cfvo-xform"),o=function(s){b(f,s);var c=_(f);function f(){var v;return l(this,f),v=c.call(this),v.map={cfvo:v.cfvoXform=new u},v}return m(f,[{key:"render",value:function(k,T){var C=this;k.openNode(this.tag,{iconSet:S.toStringAttribute(T.iconSet,"3TrafficLights"),reverse:S.toBoolAttribute(T.reverse,!1),showValue:S.toBoolAttribute(T.showValue,!0)}),T.cfvo.forEach(function(D){C.cfvoXform.render(k,D)}),k.closeNode()}},{key:"createNewModel",value:function(k){var T=k.attributes;return{iconSet:S.toStringValue(T.iconSet,"3TrafficLights"),reverse:S.toBoolValue(T.reverse),showValue:S.toBoolValue(T.showValue),cfvo:[]}}},{key:"onParserClose",value:function(k,T){this.model[k].push(T.model)}},{key:"tag",get:function(){return"iconSet"}}]),f}(w);n.exports=o},{"../../base-xform":31,"../../composite-xform":47,"./cfvo-xform":83}],91:[function(e,n,i){function a(u){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(u)}function l(u,o){if(!(u instanceof o))throw new TypeError("Cannot call a class as a function")}function d(u,o){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(u){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},p(u)}var S=e("../base-xform"),w=function(u){b(s,u);var o=_(s);function s(){return l(this,s),o.apply(this,arguments)}return m(s,[{key:"prepare",value:function(f,v){var k=v.styles.addStyleModel(f.style||{});k&&(f.styleId=k)}},{key:"render",value:function(f,v){f.openNode("col"),f.addAttribute("min",v.min),f.addAttribute("max",v.max),v.width&&f.addAttribute("width",v.width),v.styleId&&f.addAttribute("style",v.styleId),v.hidden&&f.addAttribute("hidden","1"),v.bestFit&&f.addAttribute("bestFit","1"),v.outlineLevel&&f.addAttribute("outlineLevel",v.outlineLevel),v.collapsed&&f.addAttribute("collapsed","1"),f.addAttribute("customWidth","1"),f.closeNode()}},{key:"parseOpen",value:function(f){if(f.name==="col"){var v=this.model={min:parseInt(f.attributes.min||"0",10),max:parseInt(f.attributes.max||"0",10),width:f.attributes.width===void 0?void 0:parseFloat(f.attributes.width||"0")};return f.attributes.style&&(v.styleId=parseInt(f.attributes.style,10)),(f.attributes.hidden===!0||f.attributes.hidden==="true"||f.attributes.hidden===1||f.attributes.hidden==="1")&&(v.hidden=!0),f.attributes.bestFit&&(v.bestFit=!0),f.attributes.outlineLevel&&(v.outlineLevel=parseInt(f.attributes.outlineLevel,10)),f.attributes.collapsed&&(v.collapsed=!0),!0}return!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"reconcile",value:function(f,v){f.styleId&&(f.style=v.styles.getStyleModel(f.styleId))}},{key:"tag",get:function(){return"col"}}]),s}(S);n.exports=w},{"../base-xform":31}],92:[function(e,n,i){function a(L){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(B){return typeof B}:a=function(B){return B&&typeof Symbol=="function"&&B.constructor===Symbol&&B!==Symbol.prototype?"symbol":typeof B},a(L)}function l(L,M){if(!(L instanceof M))throw new TypeError("Cannot call a class as a function")}function d(L,M){for(var B=0;B"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(L){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(B){return B.__proto__||Object.getPrototypeOf(B)},p(L)}function S(L,M){var B=Object.keys(L);if(Object.getOwnPropertySymbols){var R=Object.getOwnPropertySymbols(L);M&&(R=R.filter(function(P){return Object.getOwnPropertyDescriptor(L,P).enumerable})),B.push.apply(B,R)}return B}function w(L){for(var M=1;M1||V>1){var I=O.row+(F-1),N=O.col+(V-1);return w(w({},P.dataValidation),{},{sqref:"".concat(P.address,":").concat(c.encodeAddress(I,N))})}return w(w({},P.dataValidation),{},{sqref:P.address})}return null}).filter(Boolean)}var j=function(L){b(B,L);var M=_(B);function B(){return l(this,B),M.apply(this,arguments)}return m(B,[{key:"render",value:function(P,O){var F=D(O);F.length&&(P.openNode("dataValidations",{count:F.length}),F.forEach(function(H){P.openNode("dataValidation"),H.type!=="any"&&(P.addAttribute("type",H.type),H.operator&&H.type!=="list"&&H.operator!=="between"&&P.addAttribute("operator",H.operator),H.allowBlank&&P.addAttribute("allowBlank","1")),H.showInputMessage&&P.addAttribute("showInputMessage","1"),H.promptTitle&&P.addAttribute("promptTitle",H.promptTitle),H.prompt&&P.addAttribute("prompt",H.prompt),H.showErrorMessage&&P.addAttribute("showErrorMessage","1"),H.errorStyle&&P.addAttribute("errorStyle",H.errorStyle),H.errorTitle&&P.addAttribute("errorTitle",H.errorTitle),H.error&&P.addAttribute("error",H.error),P.addAttribute("sqref",H.sqref),(H.formulae||[]).forEach(function(V,z){P.openNode("formula".concat(z+1)),H.type==="date"?P.writeText(s.dateToExcel(new Date(V))):P.writeText(V),P.closeNode()}),P.closeNode()}),P.closeNode())}},{key:"parseOpen",value:function(P){switch(P.name){case"dataValidations":return this.model={},!0;case"dataValidation":{this._address=P.attributes.sqref;var O={type:P.attributes.type||"any",formulae:[]};switch(P.attributes.type&&C(O,P.attributes,"allowBlank"),C(O,P.attributes,"showInputMessage"),C(O,P.attributes,"showErrorMessage"),O.type){case"any":case"list":case"custom":break;default:k(O,P.attributes,"operator","between");break}return k(O,P.attributes,"promptTitle"),k(O,P.attributes,"prompt"),k(O,P.attributes,"errorStyle"),k(O,P.attributes,"errorTitle"),k(O,P.attributes,"error"),this._dataValidation=O,!0}case"formula1":case"formula2":return this._formula=[],!0;default:return!1}}},{key:"parseText",value:function(P){this._formula&&this._formula.push(P)}},{key:"parseClose",value:function(P){var O=this;switch(P){case"dataValidations":return!1;case"dataValidation":{(!this._dataValidation.formulae||!this._dataValidation.formulae.length)&&(delete this._dataValidation.formulae,delete this._dataValidation.operator);var F=this._address.split(/\s+/g)||[];return F.forEach(function(V){if(V.includes(":")){var z=new v(V);z.forEachAddress(function(X){O.model[X]=O._dataValidation})}else O.model[V]=O._dataValidation}),!0}case"formula1":case"formula2":{var H=this._formula.join("");switch(this._dataValidation.type){case"whole":case"textLength":H=parseInt(H,10);break;case"decimal":H=parseFloat(H);break;case"date":H=s.excelToDate(parseFloat(H));break}return this._dataValidation.formulae.push(H),this._formula=void 0,!0}default:return!0}}},{key:"tag",get:function(){return"dataValidations"}}]),B}(f);n.exports=j},{"../../../doc/range":10,"../../../utils/col-cache":19,"../../../utils/under-dash":25,"../../../utils/utils":26,"../base-xform":31}],93:[function(e,n,i){function a(u){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(u)}function l(u,o){if(!(u instanceof o))throw new TypeError("Cannot call a class as a function")}function d(u,o){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(u){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},p(u)}var S=e("../base-xform"),w=function(u){b(s,u);var o=_(s);function s(){return l(this,s),o.apply(this,arguments)}return m(s,[{key:"render",value:function(f,v){v&&f.leafNode("dimension",{ref:v})}},{key:"parseOpen",value:function(f){return f.name==="dimension"?(this.model=f.attributes.ref,!0):!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"dimension"}}]),s}(S);n.exports=w},{"../base-xform":31}],94:[function(e,n,i){function a(u){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(u)}function l(u,o){if(!(u instanceof o))throw new TypeError("Cannot call a class as a function")}function d(u,o){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(u){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},p(u)}var S=e("../base-xform"),w=function(u){b(s,u);var o=_(s);function s(){return l(this,s),o.apply(this,arguments)}return m(s,[{key:"render",value:function(f,v){v&&f.leafNode(this.tag,{"r:id":v.rId})}},{key:"parseOpen",value:function(f){switch(f.name){case this.tag:return this.model={rId:f.attributes["r:id"]},!0;default:return!1}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"drawing"}}]),s}(S);n.exports=w},{"../base-xform":31}],95:[function(e,n,i){function a(s){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(f){return typeof f}:a=function(f){return f&&typeof Symbol=="function"&&f.constructor===Symbol&&f!==Symbol.prototype?"symbol":typeof f},a(s)}function l(s,c){if(!(s instanceof c))throw new TypeError("Cannot call a class as a function")}function d(s,c){for(var f=0;f"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(s){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(f){return f.__proto__||Object.getPrototypeOf(f)},p(s)}var S=e("../composite-xform"),w=e("./cf-ext/conditional-formattings-ext-xform"),u=function(s){b(f,s);var c=_(f);function f(){var v;return l(this,f),v=c.call(this),v.map={"x14:conditionalFormattings":v.conditionalFormattings=new w},v}return m(f,[{key:"hasContent",value:function(k){return this.conditionalFormattings.hasContent(k.conditionalFormattings)}},{key:"prepare",value:function(k,T){this.conditionalFormattings.prepare(k.conditionalFormattings,T)}},{key:"render",value:function(k,T){k.openNode("ext",{uri:"{78C0D931-6437-407d-A8EE-F0AAD7539E65}","xmlns:x14":"http://schemas.microsoft.com/office/spreadsheetml/2009/9/main"}),this.conditionalFormattings.render(k,T.conditionalFormattings),k.closeNode()}},{key:"createNewModel",value:function(){return{}}},{key:"onParserClose",value:function(k,T){this.model[k]=T.model}},{key:"tag",get:function(){return"ext"}}]),f}(S),o=function(s){b(f,s);var c=_(f);function f(){var v;return l(this,f),v=c.call(this),v.map={ext:v.ext=new u},v}return m(f,[{key:"prepare",value:function(k,T){this.ext.prepare(k,T)}},{key:"hasContent",value:function(k){return this.ext.hasContent(k)}},{key:"render",value:function(k,T){this.hasContent(T)&&(k.openNode("extLst"),this.ext.render(k,T),k.closeNode())}},{key:"createNewModel",value:function(){return{}}},{key:"onParserClose",value:function(k,T){Object.assign(this.model,T.model)}},{key:"tag",get:function(){return"extLst"}}]),f}(S);n.exports=o},{"../composite-xform":47,"./cf-ext/conditional-formattings-ext-xform":77}],96:[function(e,n,i){function a(u){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(u)}function l(u,o){if(!(u instanceof o))throw new TypeError("Cannot call a class as a function")}function d(u,o){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(u){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},p(u)}var S=e("../base-xform"),w=function(u){b(s,u);var o=_(s);function s(){return l(this,s),o.apply(this,arguments)}return m(s,[{key:"render",value:function(f,v){if(v){f.addRollback();var k=!1;f.openNode("headerFooter"),v.differentFirst&&(f.addAttribute("differentFirst","1"),k=!0),v.differentOddEven&&(f.addAttribute("differentOddEven","1"),k=!0),v.oddHeader&&typeof v.oddHeader=="string"&&(f.leafNode("oddHeader",null,v.oddHeader),k=!0),v.oddFooter&&typeof v.oddFooter=="string"&&(f.leafNode("oddFooter",null,v.oddFooter),k=!0),v.evenHeader&&typeof v.evenHeader=="string"&&(f.leafNode("evenHeader",null,v.evenHeader),k=!0),v.evenFooter&&typeof v.evenFooter=="string"&&(f.leafNode("evenFooter",null,v.evenFooter),k=!0),v.firstHeader&&typeof v.firstHeader=="string"&&(f.leafNode("firstHeader",null,v.firstHeader),k=!0),v.firstFooter&&typeof v.firstFooter=="string"&&(f.leafNode("firstFooter",null,v.firstFooter),k=!0),k?(f.closeNode(),f.commit()):f.rollback()}}},{key:"parseOpen",value:function(f){switch(f.name){case"headerFooter":return this.model={},f.attributes.differentFirst&&(this.model.differentFirst=parseInt(f.attributes.differentFirst,0)===1),f.attributes.differentOddEven&&(this.model.differentOddEven=parseInt(f.attributes.differentOddEven,0)===1),!0;case"oddHeader":return this.currentNode="oddHeader",!0;case"oddFooter":return this.currentNode="oddFooter",!0;case"evenHeader":return this.currentNode="evenHeader",!0;case"evenFooter":return this.currentNode="evenFooter",!0;case"firstHeader":return this.currentNode="firstHeader",!0;case"firstFooter":return this.currentNode="firstFooter",!0;default:return!1}}},{key:"parseText",value:function(f){switch(this.currentNode){case"oddHeader":this.model.oddHeader=f;break;case"oddFooter":this.model.oddFooter=f;break;case"evenHeader":this.model.evenHeader=f;break;case"evenFooter":this.model.evenFooter=f;break;case"firstHeader":this.model.firstHeader=f;break;case"firstFooter":this.model.firstFooter=f;break}}},{key:"parseClose",value:function(){switch(this.currentNode){case"oddHeader":case"oddFooter":case"evenHeader":case"evenFooter":case"firstHeader":case"firstFooter":return this.currentNode=void 0,!0;default:return!1}}},{key:"tag",get:function(){return"headerFooter"}}]),s}(S);n.exports=w},{"../base-xform":31}],97:[function(e,n,i){function a(u){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(u)}function l(u,o){if(!(u instanceof o))throw new TypeError("Cannot call a class as a function")}function d(u,o){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(u){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},p(u)}var S=e("../base-xform"),w=function(u){b(s,u);var o=_(s);function s(){return l(this,s),o.apply(this,arguments)}return m(s,[{key:"render",value:function(f,v){f.leafNode("hyperlink",{ref:v.address,"r:id":v.rId,tooltip:v.tooltip})}},{key:"parseOpen",value:function(f){return f.name==="hyperlink"?(this.model={address:f.attributes.ref,rId:f.attributes["r:id"],tooltip:f.attributes.tooltip},!0):!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"hyperlink"}}]),s}(S);n.exports=w},{"../base-xform":31}],98:[function(e,n,i){function a(u){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(u)}function l(u,o){if(!(u instanceof o))throw new TypeError("Cannot call a class as a function")}function d(u,o){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(u){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},p(u)}var S=e("../base-xform"),w=function(u){b(s,u);var o=_(s);function s(){return l(this,s),o.apply(this,arguments)}return m(s,[{key:"render",value:function(f,v){f.leafNode("mergeCell",{ref:v})}},{key:"parseOpen",value:function(f){return f.name==="mergeCell"?(this.model=f.attributes.ref,!0):!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"mergeCell"}}]),s}(S);n.exports=w},{"../base-xform":31}],99:[function(e,n,i){function a(y,x){if(!(y instanceof x))throw new TypeError("Cannot call a class as a function")}function l(y,x){for(var p=0;p"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(o){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(c){return c.__proto__||Object.getPrototypeOf(c)},p(o)}var S=e("../base-xform"),w=function(s){return typeof s<"u"},u=function(o){b(c,o);var s=_(c);function c(){return l(this,c),s.apply(this,arguments)}return m(c,[{key:"render",value:function(v,k){return k&&(w(k.summaryBelow)||w(k.summaryRight))?(v.leafNode(this.tag,{summaryBelow:w(k.summaryBelow)?Number(k.summaryBelow):void 0,summaryRight:w(k.summaryRight)?Number(k.summaryRight):void 0}),!0):!1}},{key:"parseOpen",value:function(v){return v.name===this.tag?(this.model={summaryBelow:w(v.attributes.summaryBelow)?!!Number(v.attributes.summaryBelow):void 0,summaryRight:w(v.attributes.summaryRight)?!!Number(v.attributes.summaryRight):void 0},!0):!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"outlinePr"}}]),c}(S);n.exports=u},{"../base-xform":31}],101:[function(e,n,i){function a(u){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(u)}function l(u,o){if(!(u instanceof o))throw new TypeError("Cannot call a class as a function")}function d(u,o){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(u){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},p(u)}var S=e("../base-xform"),w=function(u){b(s,u);var o=_(s);function s(){return l(this,s),o.apply(this,arguments)}return m(s,[{key:"render",value:function(f,v){f.leafNode("brk",v)}},{key:"parseOpen",value:function(f){return f.name==="brk"?(this.model=f.attributes.ref,!0):!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"brk"}}]),s}(S);n.exports=w},{"../base-xform":31}],102:[function(e,n,i){function a(o){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(c){return typeof c}:a=function(c){return c&&typeof Symbol=="function"&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c},a(o)}function l(o,s){if(!(o instanceof s))throw new TypeError("Cannot call a class as a function")}function d(o,s){for(var c=0;c"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(o){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(c){return c.__proto__||Object.getPrototypeOf(c)},p(o)}var S=e("../../../utils/under-dash"),w=e("../base-xform"),u=function(o){b(c,o);var s=_(c);function c(){return l(this,c),s.apply(this,arguments)}return m(c,[{key:"render",value:function(v,k){if(k){var T={left:k.left,right:k.right,top:k.top,bottom:k.bottom,header:k.header,footer:k.footer};S.some(T,function(C){return C!==void 0})&&v.leafNode(this.tag,T)}}},{key:"parseOpen",value:function(v){switch(v.name){case this.tag:return this.model={left:parseFloat(v.attributes.left||.7),right:parseFloat(v.attributes.right||.7),top:parseFloat(v.attributes.top||.75),bottom:parseFloat(v.attributes.bottom||.75),header:parseFloat(v.attributes.header||.3),footer:parseFloat(v.attributes.footer||.3)},!0;default:return!1}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"pageMargins"}}]),c}(w);n.exports=u},{"../../../utils/under-dash":25,"../base-xform":31}],103:[function(e,n,i){function a(u){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(u)}function l(u,o){if(!(u instanceof o))throw new TypeError("Cannot call a class as a function")}function d(u,o){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(u){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},p(u)}var S=e("../base-xform"),w=function(u){b(s,u);var o=_(s);function s(){return l(this,s),o.apply(this,arguments)}return m(s,[{key:"render",value:function(f,v){return v&&v.fitToPage?(f.leafNode(this.tag,{fitToPage:v.fitToPage?"1":void 0}),!0):!1}},{key:"parseOpen",value:function(f){return f.name===this.tag?(this.model={fitToPage:f.attributes.fitToPage==="1"},!0):!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"pageSetUpPr"}}]),s}(S);n.exports=w},{"../base-xform":31}],104:[function(e,n,i){function a(k){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(C){return typeof C}:a=function(C){return C&&typeof Symbol=="function"&&C.constructor===Symbol&&C!==Symbol.prototype?"symbol":typeof C},a(k)}function l(k,T){if(!(k instanceof T))throw new TypeError("Cannot call a class as a function")}function d(k,T){for(var C=0;C"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(k){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(C){return C.__proto__||Object.getPrototypeOf(C)},p(k)}var S=e("../../../utils/under-dash"),w=e("../base-xform");function u(k){return k?"1":void 0}function o(k){switch(k){case"overThenDown":return k;default:return}}function s(k){switch(k){case"atEnd":case"asDisplyed":return k;default:return}}function c(k){switch(k){case"dash":case"blank":case"NA":return k;default:return}}function f(k){return k!==void 0?parseInt(k,10):void 0}var v=function(k){b(C,k);var T=_(C);function C(){return l(this,C),T.apply(this,arguments)}return m(C,[{key:"render",value:function(j,L){if(L){var M={paperSize:L.paperSize,orientation:L.orientation,horizontalDpi:L.horizontalDpi,verticalDpi:L.verticalDpi,pageOrder:o(L.pageOrder),blackAndWhite:u(L.blackAndWhite),draft:u(L.draft),cellComments:s(L.cellComments),errors:c(L.errors),scale:L.scale,fitToWidth:L.fitToWidth,fitToHeight:L.fitToHeight,firstPageNumber:L.firstPageNumber,useFirstPageNumber:u(L.firstPageNumber),usePrinterDefaults:u(L.usePrinterDefaults),copies:L.copies};S.some(M,function(B){return B!==void 0})&&j.leafNode(this.tag,M)}}},{key:"parseOpen",value:function(j){switch(j.name){case this.tag:return this.model={paperSize:f(j.attributes.paperSize),orientation:j.attributes.orientation||"portrait",horizontalDpi:parseInt(j.attributes.horizontalDpi||"4294967295",10),verticalDpi:parseInt(j.attributes.verticalDpi||"4294967295",10),pageOrder:j.attributes.pageOrder||"downThenOver",blackAndWhite:j.attributes.blackAndWhite==="1",draft:j.attributes.draft==="1",cellComments:j.attributes.cellComments||"None",errors:j.attributes.errors||"displayed",scale:parseInt(j.attributes.scale||"100",10),fitToWidth:parseInt(j.attributes.fitToWidth||"1",10),fitToHeight:parseInt(j.attributes.fitToHeight||"1",10),firstPageNumber:parseInt(j.attributes.firstPageNumber||"1",10),useFirstPageNumber:j.attributes.useFirstPageNumber==="1",usePrinterDefaults:j.attributes.usePrinterDefaults==="1",copies:parseInt(j.attributes.copies||"1",10)},!0;default:return!1}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"pageSetup"}}]),C}(w);n.exports=v},{"../../../utils/under-dash":25,"../base-xform":31}],105:[function(e,n,i){function a(u){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(u)}function l(u,o){if(!(u instanceof o))throw new TypeError("Cannot call a class as a function")}function d(u,o){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(u){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},p(u)}var S=e("../base-xform"),w=function(u){b(s,u);var o=_(s);function s(){return l(this,s),o.apply(this,arguments)}return m(s,[{key:"render",value:function(f,v){v&&f.leafNode(this.tag,{"r:id":v.rId})}},{key:"parseOpen",value:function(f){switch(f.name){case this.tag:return this.model={rId:f.attributes["r:id"]},!0;default:return!1}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"picture"}}]),s}(S);n.exports=w},{"../base-xform":31}],106:[function(e,n,i){function a(s){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(f){return typeof f}:a=function(f){return f&&typeof Symbol=="function"&&f.constructor===Symbol&&f!==Symbol.prototype?"symbol":typeof f},a(s)}function l(s,c){if(!(s instanceof c))throw new TypeError("Cannot call a class as a function")}function d(s,c){for(var f=0;f"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(s){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(f){return f.__proto__||Object.getPrototypeOf(f)},p(s)}var S=e("../../../utils/under-dash"),w=e("../base-xform");function u(s){return s?"1":void 0}var o=function(s){b(f,s);var c=_(f);function f(){return l(this,f),c.apply(this,arguments)}return m(f,[{key:"render",value:function(k,T){if(T){var C={headings:u(T.showRowColHeaders),gridLines:u(T.showGridLines),horizontalCentered:u(T.horizontalCentered),verticalCentered:u(T.verticalCentered)};S.some(C,function(D){return D!==void 0})&&k.leafNode(this.tag,C)}}},{key:"parseOpen",value:function(k){switch(k.name){case this.tag:return this.model={showRowColHeaders:k.attributes.headings==="1",showGridLines:k.attributes.gridLines==="1",horizontalCentered:k.attributes.horizontalCentered==="1",verticalCentered:k.attributes.verticalCentered==="1"},!0;default:return!1}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"printOptions"}}]),f}(w);n.exports=o},{"../../../utils/under-dash":25,"../base-xform":31}],107:[function(e,n,i){function a(o){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(c){return typeof c}:a=function(c){return c&&typeof Symbol=="function"&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c},a(o)}function l(o,s){if(!(o instanceof s))throw new TypeError("Cannot call a class as a function")}function d(o,s){for(var c=0;c"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(o){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(c){return c.__proto__||Object.getPrototypeOf(c)},p(o)}var S=e("./page-breaks-xform"),w=e("../list-xform"),u=function(o){b(c,o);var s=_(c);function c(){l(this,c);var f={tag:"rowBreaks",count:!0,childXform:new S};return s.call(this,f)}return m(c,[{key:"render",value:function(v,k){if(k&&k.length){v.openNode(this.tag,this.$),this.count&&(v.addAttribute(this.$count,k.length),v.addAttribute("manualBreakCount",k.length));var T=this.childXform;k.forEach(function(C){T.render(v,C)}),v.closeNode()}else this.empty&&v.leafNode(this.tag)}}]),c}(w);n.exports=u},{"../list-xform":70,"./page-breaks-xform":101}],108:[function(e,n,i){function a(o){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(c){return typeof c}:a=function(c){return c&&typeof Symbol=="function"&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c},a(o)}function l(o,s){if(!(o instanceof s))throw new TypeError("Cannot call a class as a function")}function d(o,s){for(var c=0;c"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(o){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(c){return c.__proto__||Object.getPrototypeOf(c)},p(o)}var S=e("../base-xform"),w=e("./cell-xform"),u=function(o){b(c,o);var s=_(c);function c(f){var v;return l(this,c),v=s.call(this),v.maxItems=f&&f.maxItems,v.map={c:new w},v}return m(c,[{key:"prepare",value:function(v,k){var T=k.styles.addStyleModel(v.style);T&&(v.styleId=T);var C=this.map.c;v.cells.forEach(function(D){C.prepare(D,k)})}},{key:"render",value:function(v,k,T){v.openNode("row"),v.addAttribute("r",k.number),k.height&&(v.addAttribute("ht",k.height),v.addAttribute("customHeight","1")),k.hidden&&v.addAttribute("hidden","1"),k.min>0&&k.max>0&&k.min<=k.max&&v.addAttribute("spans","".concat(k.min,":").concat(k.max)),k.styleId&&(v.addAttribute("s",k.styleId),v.addAttribute("customFormat","1")),v.addAttribute("x14ac:dyDescent","0.25"),k.outlineLevel&&v.addAttribute("outlineLevel",k.outlineLevel),k.collapsed&&v.addAttribute("collapsed","1");var C=this.map.c;k.cells.forEach(function(D){C.render(v,D,T)}),v.closeNode()}},{key:"parseOpen",value:function(v){if(this.parser)return this.parser.parseOpen(v),!0;if(v.name==="row"){this.numRowsSeen+=1;var k=v.attributes.spans?v.attributes.spans.split(":").map(function(C){return parseInt(C,10)}):[void 0,void 0],T=this.model={number:parseInt(v.attributes.r,10),min:k[0],max:k[1],cells:[]};return v.attributes.s&&(T.styleId=parseInt(v.attributes.s,10)),(v.attributes.hidden===!0||v.attributes.hidden==="true"||v.attributes.hidden===1||v.attributes.hidden==="1")&&(T.hidden=!0),v.attributes.bestFit&&(T.bestFit=!0),v.attributes.ht&&(T.height=parseFloat(v.attributes.ht)),v.attributes.outlineLevel&&(T.outlineLevel=parseInt(v.attributes.outlineLevel,10)),v.attributes.collapsed&&(T.collapsed=!0),!0}return this.parser=this.map[v.name],this.parser?(this.parser.parseOpen(v),!0):!1}},{key:"parseText",value:function(v){this.parser&&this.parser.parseText(v)}},{key:"parseClose",value:function(v){if(this.parser){if(!this.parser.parseClose(v)){if(this.model.cells.push(this.parser.model),this.maxItems&&this.model.cells.length>this.maxItems)throw new Error("Max column count (".concat(this.maxItems,") exceeded"));this.parser=void 0}return!0}return!1}},{key:"reconcile",value:function(v,k){v.style=v.styleId?k.styles.getStyleModel(v.styleId):{},v.styleId!==void 0&&(v.styleId=void 0);var T=this.map.c;v.cells.forEach(function(C){T.reconcile(C,k)})}},{key:"tag",get:function(){return"row"}}]),c}(S);n.exports=u},{"../base-xform":31,"./cell-xform":72}],109:[function(e,n,i){function a(o){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(c){return typeof c}:a=function(c){return c&&typeof Symbol=="function"&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c},a(o)}function l(o,s){if(!(o instanceof s))throw new TypeError("Cannot call a class as a function")}function d(o,s){for(var c=0;c"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(o){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(c){return c.__proto__||Object.getPrototypeOf(c)},p(o)}var S=e("../../../utils/under-dash"),w=e("../base-xform"),u=function(o){b(c,o);var s=_(c);function c(){return l(this,c),s.apply(this,arguments)}return m(c,[{key:"render",value:function(v,k){if(k){var T={defaultRowHeight:k.defaultRowHeight,outlineLevelRow:k.outlineLevelRow,outlineLevelCol:k.outlineLevelCol,"x14ac:dyDescent":k.dyDescent};k.defaultColWidth&&(T.defaultColWidth=k.defaultColWidth),(!k.defaultRowHeight||k.defaultRowHeight!==15)&&(T.customHeight="1"),S.some(T,function(C){return C!==void 0})&&v.leafNode("sheetFormatPr",T)}}},{key:"parseOpen",value:function(v){return v.name==="sheetFormatPr"?(this.model={defaultRowHeight:parseFloat(v.attributes.defaultRowHeight||"0"),dyDescent:parseFloat(v.attributes["x14ac:dyDescent"]||"0"),outlineLevelRow:parseInt(v.attributes.outlineLevelRow||"0",10),outlineLevelCol:parseInt(v.attributes.outlineLevelCol||"0",10)},v.attributes.defaultColWidth&&(this.model.defaultColWidth=parseFloat(v.attributes.defaultColWidth)),!0):!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"sheetFormatPr"}}]),c}(w);n.exports=u},{"../../../utils/under-dash":25,"../base-xform":31}],110:[function(e,n,i){function a(c){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(v){return typeof v}:a=function(v){return v&&typeof Symbol=="function"&&v.constructor===Symbol&&v!==Symbol.prototype?"symbol":typeof v},a(c)}function l(c,f){if(!(c instanceof f))throw new TypeError("Cannot call a class as a function")}function d(c,f){for(var v=0;v"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(c){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(v){return v.__proto__||Object.getPrototypeOf(v)},p(c)}var S=e("../base-xform"),w=e("../style/color-xform"),u=e("./page-setup-properties-xform"),o=e("./outline-properties-xform"),s=function(c){b(v,c);var f=_(v);function v(){var k;return l(this,v),k=f.call(this),k.map={tabColor:new w("tabColor"),pageSetUpPr:new u,outlinePr:new o},k}return m(v,[{key:"render",value:function(T,C){if(C){T.addRollback(),T.openNode("sheetPr");var D=!1;D=this.map.tabColor.render(T,C.tabColor)||D,D=this.map.pageSetUpPr.render(T,C.pageSetup)||D,D=this.map.outlinePr.render(T,C.outlineProperties)||D,D?(T.closeNode(),T.commit()):T.rollback()}}},{key:"parseOpen",value:function(T){return this.parser?(this.parser.parseOpen(T),!0):T.name===this.tag?(this.reset(),!0):this.map[T.name]?(this.parser=this.map[T.name],this.parser.parseOpen(T),!0):!1}},{key:"parseText",value:function(T){return this.parser?(this.parser.parseText(T),!0):!1}},{key:"parseClose",value:function(T){return this.parser?(this.parser.parseClose(T)||(this.parser=void 0),!0):(this.map.tabColor.model||this.map.pageSetUpPr.model||this.map.outlinePr.model?(this.model={},this.map.tabColor.model&&(this.model.tabColor=this.map.tabColor.model),this.map.pageSetUpPr.model&&(this.model.pageSetup=this.map.pageSetUpPr.model),this.map.outlinePr.model&&(this.model.outlineProperties=this.map.outlinePr.model)):this.model=null,!1)}},{key:"tag",get:function(){return"sheetPr"}}]),v}(S);n.exports=s},{"../base-xform":31,"../style/color-xform":127,"./outline-properties-xform":100,"./page-setup-properties-xform":103}],111:[function(e,n,i){function a(c){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(v){return typeof v}:a=function(v){return v&&typeof Symbol=="function"&&v.constructor===Symbol&&v!==Symbol.prototype?"symbol":typeof v},a(c)}function l(c,f){if(!(c instanceof f))throw new TypeError("Cannot call a class as a function")}function d(c,f){for(var v=0;v"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(c){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(v){return v.__proto__||Object.getPrototypeOf(v)},p(c)}var S=e("../../../utils/under-dash"),w=e("../base-xform");function u(c,f){return c?f:void 0}function o(c,f){return c===f?!0:void 0}var s=function(c){b(v,c);var f=_(v);function v(){return l(this,v),f.apply(this,arguments)}return m(v,[{key:"render",value:function(T,C){if(C){var D={sheet:u(C.sheet,"1"),selectLockedCells:C.selectLockedCells===!1?"1":void 0,selectUnlockedCells:C.selectUnlockedCells===!1?"1":void 0,formatCells:u(C.formatCells,"0"),formatColumns:u(C.formatColumns,"0"),formatRows:u(C.formatRows,"0"),insertColumns:u(C.insertColumns,"0"),insertRows:u(C.insertRows,"0"),insertHyperlinks:u(C.insertHyperlinks,"0"),deleteColumns:u(C.deleteColumns,"0"),deleteRows:u(C.deleteRows,"0"),sort:u(C.sort,"0"),autoFilter:u(C.autoFilter,"0"),pivotTables:u(C.pivotTables,"0")};C.sheet&&(D.algorithmName=C.algorithmName,D.hashValue=C.hashValue,D.saltValue=C.saltValue,D.spinCount=C.spinCount,D.objects=u(C.objects===!1,"1"),D.scenarios=u(C.scenarios===!1,"1")),S.some(D,function(j){return j!==void 0})&&T.leafNode(this.tag,D)}}},{key:"parseOpen",value:function(T){switch(T.name){case this.tag:return this.model={sheet:o(T.attributes.sheet,"1"),objects:T.attributes.objects==="1"?!1:void 0,scenarios:T.attributes.scenarios==="1"?!1:void 0,selectLockedCells:T.attributes.selectLockedCells==="1"?!1:void 0,selectUnlockedCells:T.attributes.selectUnlockedCells==="1"?!1:void 0,formatCells:o(T.attributes.formatCells,"0"),formatColumns:o(T.attributes.formatColumns,"0"),formatRows:o(T.attributes.formatRows,"0"),insertColumns:o(T.attributes.insertColumns,"0"),insertRows:o(T.attributes.insertRows,"0"),insertHyperlinks:o(T.attributes.insertHyperlinks,"0"),deleteColumns:o(T.attributes.deleteColumns,"0"),deleteRows:o(T.attributes.deleteRows,"0"),sort:o(T.attributes.sort,"0"),autoFilter:o(T.attributes.autoFilter,"0"),pivotTables:o(T.attributes.pivotTables,"0")},T.attributes.algorithmName&&(this.model.algorithmName=T.attributes.algorithmName,this.model.hashValue=T.attributes.hashValue,this.model.saltValue=T.attributes.saltValue,this.model.spinCount=parseInt(T.attributes.spinCount,10)),!0;default:return!1}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"sheetProtection"}}]),v}(w);n.exports=s},{"../../../utils/under-dash":25,"../base-xform":31}],112:[function(e,n,i){function a(s){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(f){return typeof f}:a=function(f){return f&&typeof Symbol=="function"&&f.constructor===Symbol&&f!==Symbol.prototype?"symbol":typeof f},a(s)}function l(s,c){if(!(s instanceof c))throw new TypeError("Cannot call a class as a function")}function d(s,c){for(var f=0;f"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(s){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(f){return f.__proto__||Object.getPrototypeOf(f)},p(s)}var S=e("../../../utils/col-cache"),w=e("../base-xform"),u={frozen:"frozen",frozenSplit:"frozen",split:"split"},o=function(s){b(f,s);var c=_(f);function f(){return l(this,f),c.apply(this,arguments)}return m(f,[{key:"prepare",value:function(k){switch(k.state){case"frozen":case"split":break;default:k.state="normal";break}}},{key:"render",value:function(k,T){k.openNode("sheetView",{workbookViewId:T.workbookViewId||0});var C=function(R,P,O){O&&k.addAttribute(R,P)};C("rightToLeft","1",T.rightToLeft===!0),C("tabSelected","1",T.tabSelected),C("showRuler","0",T.showRuler===!1),C("showRowColHeaders","0",T.showRowColHeaders===!1),C("showGridLines","0",T.showGridLines===!1),C("zoomScale",T.zoomScale,T.zoomScale),C("zoomScaleNormal",T.zoomScaleNormal,T.zoomScaleNormal),C("view",T.style,T.style);var D,j,L,M;switch(T.state){case"frozen":j=T.xSplit||0,L=T.ySplit||0,D=T.topLeftCell||S.getAddress(L+1,j+1).address,M=T.xSplit&&T.ySplit&&"bottomRight"||T.xSplit&&"topRight"||"bottomLeft",k.leafNode("pane",{xSplit:T.xSplit||void 0,ySplit:T.ySplit||void 0,topLeftCell:D,activePane:M,state:"frozen"}),k.leafNode("selection",{pane:M,activeCell:T.activeCell,sqref:T.activeCell});break;case"split":T.activePane==="topLeft"&&(T.activePane=void 0),k.leafNode("pane",{xSplit:T.xSplit||void 0,ySplit:T.ySplit||void 0,topLeftCell:T.topLeftCell,activePane:T.activePane}),k.leafNode("selection",{pane:T.activePane,activeCell:T.activeCell,sqref:T.activeCell});break;case"normal":T.activeCell&&k.leafNode("selection",{activeCell:T.activeCell,sqref:T.activeCell});break}k.closeNode()}},{key:"parseOpen",value:function(k){switch(k.name){case"sheetView":return this.sheetView={workbookViewId:parseInt(k.attributes.workbookViewId,10),rightToLeft:k.attributes.rightToLeft==="1",tabSelected:k.attributes.tabSelected==="1",showRuler:k.attributes.showRuler!=="0",showRowColHeaders:k.attributes.showRowColHeaders!=="0",showGridLines:k.attributes.showGridLines!=="0",zoomScale:parseInt(k.attributes.zoomScale||"100",10),zoomScaleNormal:parseInt(k.attributes.zoomScaleNormal||"100",10),style:k.attributes.view},this.pane=void 0,this.selections={},!0;case"pane":return this.pane={xSplit:parseInt(k.attributes.xSplit||"0",10),ySplit:parseInt(k.attributes.ySplit||"0",10),topLeftCell:k.attributes.topLeftCell,activePane:k.attributes.activePane||"topLeft",state:k.attributes.state},!0;case"selection":{var T=k.attributes.pane||"topLeft";return this.selections[T]={pane:T,activeCell:k.attributes.activeCell},!0}default:return!1}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(k){var T,C;switch(k){case"sheetView":return this.sheetView&&this.pane?(T=this.model={workbookViewId:this.sheetView.workbookViewId,rightToLeft:this.sheetView.rightToLeft,state:u[this.pane.state]||"split",xSplit:this.pane.xSplit,ySplit:this.pane.ySplit,topLeftCell:this.pane.topLeftCell,showRuler:this.sheetView.showRuler,showRowColHeaders:this.sheetView.showRowColHeaders,showGridLines:this.sheetView.showGridLines,zoomScale:this.sheetView.zoomScale,zoomScaleNormal:this.sheetView.zoomScaleNormal},this.model.state==="split"&&(T.activePane=this.pane.activePane),C=this.selections[this.pane.activePane],C&&C.activeCell&&(T.activeCell=C.activeCell),this.sheetView.style&&(T.style=this.sheetView.style)):(T=this.model={workbookViewId:this.sheetView.workbookViewId,rightToLeft:this.sheetView.rightToLeft,state:"normal",showRuler:this.sheetView.showRuler,showRowColHeaders:this.sheetView.showRowColHeaders,showGridLines:this.sheetView.showGridLines,zoomScale:this.sheetView.zoomScale,zoomScaleNormal:this.sheetView.zoomScaleNormal},C=this.selections.topLeft,C&&C.activeCell&&(T.activeCell=C.activeCell),this.sheetView.style&&(T.style=this.sheetView.style)),!1;default:return!0}}},{key:"reconcile",value:function(){}},{key:"tag",get:function(){return"sheetView"}}]),f}(w);n.exports=o},{"../../../utils/col-cache":19,"../base-xform":31}],113:[function(e,n,i){function a(u){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(u)}function l(u,o){if(!(u instanceof o))throw new TypeError("Cannot call a class as a function")}function d(u,o){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(u){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},p(u)}var S=e("../base-xform"),w=function(u){b(s,u);var o=_(s);function s(){return l(this,s),o.apply(this,arguments)}return m(s,[{key:"render",value:function(f,v){v&&f.leafNode(this.tag,{"r:id":v.rId})}},{key:"parseOpen",value:function(f){switch(f.name){case this.tag:return this.model={rId:f.attributes["r:id"]},!0;default:return!1}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"tablePart"}}]),s}(S);n.exports=w},{"../base-xform":31}],114:[function(e,n,i){function a(ge){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(se){return typeof se}:a=function(se){return se&&typeof Symbol=="function"&&se.constructor===Symbol&&se!==Symbol.prototype?"symbol":typeof se},a(ge)}function l(ge,ee){if(!(ge instanceof ee))throw new TypeError("Cannot call a class as a function")}function d(ge,ee){for(var se=0;se"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(ge){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(se){return se.__proto__||Object.getPrototypeOf(se)},p(ge)}var S=e("../../../utils/under-dash"),w=e("../../../utils/col-cache"),u=e("../../../utils/xml-stream"),o=e("../../rel-type"),s=e("./merges"),c=e("../base-xform"),f=e("../list-xform"),v=e("./row-xform"),k=e("./col-xform"),T=e("./dimension-xform"),C=e("./hyperlink-xform"),D=e("./merge-cell-xform"),j=e("./data-validations-xform"),L=e("./sheet-properties-xform"),M=e("./sheet-format-properties-xform"),B=e("./sheet-view-xform"),R=e("./sheet-protection-xform"),P=e("./page-margins-xform"),O=e("./page-setup-xform"),F=e("./print-options-xform"),H=e("./auto-filter-xform"),V=e("./picture-xform"),z=e("./drawing-xform"),X=e("./table-part-xform"),I=e("./row-breaks-xform"),N=e("./header-footer-xform"),U=e("./cf/conditional-formattings-xform"),G=e("./ext-lst-xform"),te=function(ee,se){Object.keys(se).forEach(function(J){var q=ee[J],de=se[J];q===void 0&&de!==void 0&&(ee[J]=de)})},re=function(ee,se){if(!se||!se.length)return ee;if(!ee||!ee.length)return se;var J={},q={};return ee.forEach(function(de){J[de.ref]=de,de.rules.forEach(function(xe){var ae=xe.x14Id;ae&&(q[ae]=xe)})}),se.forEach(function(de){de.rules.forEach(function(xe){var ae=q[xe.x14Id];ae?te(ae,xe):J[de.ref]?J[de.ref].rules.push(xe):ee.push({ref:de.ref,rules:[xe]})})}),ee},ne=function(ge){b(se,ge);var ee=_(se);function se(J){var q;l(this,se),q=ee.call(this);var de=J||{},xe=de.maxRows,ae=de.maxCols;return q.map={sheetPr:new L,dimension:new T,sheetViews:new f({tag:"sheetViews",count:!1,childXform:new B}),sheetFormatPr:new M,cols:new f({tag:"cols",count:!1,childXform:new k}),sheetData:new f({tag:"sheetData",count:!1,empty:!0,childXform:new v({maxItems:ae}),maxItems:xe}),autoFilter:new H,mergeCells:new f({tag:"mergeCells",count:!0,childXform:new D}),rowBreaks:new I,hyperlinks:new f({tag:"hyperlinks",count:!1,childXform:new C}),pageMargins:new P,dataValidations:new j,pageSetup:new O,headerFooter:new N,printOptions:new F,picture:new V,drawing:new z,sheetProtection:new R,tableParts:new f({tag:"tableParts",count:!0,childXform:new X}),conditionalFormatting:new U,extLst:new G},q}return m(se,[{key:"prepare",value:function(q,de){var xe=this;de.merges=new s,q.hyperlinks=de.hyperlinks=[],q.comments=de.comments=[],de.formulae={},de.siFormulae=0,this.map.cols.prepare(q.cols,de),this.map.sheetData.prepare(q.rows,de),this.map.conditionalFormatting.prepare(q.conditionalFormattings,de),q.mergeCells=de.merges.mergeCells;var ae=q.rels=[];function fe(le){return"rId".concat(le.length+1)}if(q.hyperlinks.forEach(function(le){var Re=fe(ae);le.rId=Re,ae.push({Id:Re,Type:o.Hyperlink,Target:le.target,TargetMode:"External"})}),q.comments.length>0){var Ne={Id:fe(ae),Type:o.Comments,Target:"../comments".concat(q.id,".xml")};ae.push(Ne);var ie={Id:fe(ae),Type:o.VmlDrawing,Target:"../drawings/vmlDrawing".concat(q.id,".vml")};ae.push(ie),q.comments.forEach(function(le){le.refAddress=w.decodeAddress(le.ref)}),de.commentRefs.push({commentName:"comments".concat(q.id),vmlDrawing:"vmlDrawing".concat(q.id)})}var Y=[],Z;q.media.forEach(function(le){if(le.type==="background"){var Re=fe(ae);Z=de.media[le.imageId],ae.push({Id:Re,Type:o.Image,Target:"../media/".concat(Z.name,".").concat(Z.extension)}),q.background={rId:Re},q.image=de.media[le.imageId]}else if(le.type==="image"){var Ce=q.drawing;Z=de.media[le.imageId],Ce||(Ce=q.drawing={rId:fe(ae),name:"drawing".concat(++de.drawingsCount),anchors:[],rels:[]},de.drawings.push(Ce),ae.push({Id:Ce.rId,Type:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing",Target:"../drawings/".concat(Ce.name,".xml")}));var Ge=xe.preImageId===le.imageId?Y[le.imageId]:Y[Ce.rels.length];Ge||(Ge=fe(Ce.rels),Y[Ce.rels.length]=Ge,Ce.rels.push({Id:Ge,Type:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",Target:"../media/".concat(Z.name,".").concat(Z.extension)}));var st={picture:{rId:Ge},range:le.range};if(le.hyperlinks&&le.hyperlinks.hyperlink){var vt=fe(Ce.rels);Y[Ce.rels.length]=vt,st.picture.hyperlinks={tooltip:le.hyperlinks.tooltip,rId:vt},Ce.rels.push({Id:vt,Type:o.Hyperlink,Target:le.hyperlinks.hyperlink,TargetMode:"External"})}xe.preImageId=le.imageId,Ce.anchors.push(st)}}),q.tables.forEach(function(le){var Re=fe(ae);le.rId=Re,ae.push({Id:Re,Type:o.Table,Target:"../tables/".concat(le.target)}),le.columns.forEach(function(Ce){var Ge=Ce.style;Ge&&(Ce.dxfId=de.styles.addDxfStyle(Ge))})}),this.map.extLst.prepare(q,de)}},{key:"render",value:function(q,de){q.openXml(u.StdDocAttributes),q.openNode("worksheet",se.WORKSHEET_ATTRIBUTES);var xe=de.properties?{defaultRowHeight:de.properties.defaultRowHeight,dyDescent:de.properties.dyDescent,outlineLevelCol:de.properties.outlineLevelCol,outlineLevelRow:de.properties.outlineLevelRow}:void 0;de.properties&&de.properties.defaultColWidth&&(xe.defaultColWidth=de.properties.defaultColWidth);var ae={outlineProperties:de.properties&&de.properties.outlineProperties,tabColor:de.properties&&de.properties.tabColor,pageSetup:de.pageSetup&&de.pageSetup.fitToPage?{fitToPage:de.pageSetup.fitToPage}:void 0},fe=de.pageSetup&&de.pageSetup.margins,Ne={showRowColHeaders:de.pageSetup&&de.pageSetup.showRowColHeaders,showGridLines:de.pageSetup&&de.pageSetup.showGridLines,horizontalCentered:de.pageSetup&&de.pageSetup.horizontalCentered,verticalCentered:de.pageSetup&&de.pageSetup.verticalCentered},ie=de.sheetProtection;this.map.sheetPr.render(q,ae),this.map.dimension.render(q,de.dimensions),this.map.sheetViews.render(q,de.views),this.map.sheetFormatPr.render(q,xe),this.map.cols.render(q,de.cols),this.map.sheetData.render(q,de.rows),this.map.sheetProtection.render(q,ie),this.map.autoFilter.render(q,de.autoFilter),this.map.mergeCells.render(q,de.mergeCells),this.map.conditionalFormatting.render(q,de.conditionalFormattings),this.map.dataValidations.render(q,de.dataValidations),this.map.hyperlinks.render(q,de.hyperlinks),this.map.printOptions.render(q,Ne),this.map.pageMargins.render(q,fe),this.map.pageSetup.render(q,de.pageSetup),this.map.headerFooter.render(q,de.headerFooter),this.map.rowBreaks.render(q,de.rowBreaks),this.map.drawing.render(q,de.drawing),this.map.picture.render(q,de.background),this.map.tableParts.render(q,de.tables),this.map.extLst.render(q,de),de.rels&&de.rels.forEach(function(Y){Y.Type===o.VmlDrawing&&q.leafNode("legacyDrawing",{"r:id":Y.Id})}),q.closeNode()}},{key:"parseOpen",value:function(q){return this.parser?(this.parser.parseOpen(q),!0):q.name==="worksheet"?(S.each(this.map,function(de){de.reset()}),!0):(this.parser=this.map[q.name],this.parser&&this.parser.parseOpen(q),!0)}},{key:"parseText",value:function(q){this.parser&&this.parser.parseText(q)}},{key:"parseClose",value:function(q){if(this.parser)return this.parser.parseClose(q)||(this.parser=void 0),!0;switch(q){case"worksheet":{var de=this.map.sheetFormatPr.model||{};this.map.sheetPr.model&&this.map.sheetPr.model.tabColor&&(de.tabColor=this.map.sheetPr.model.tabColor),this.map.sheetPr.model&&this.map.sheetPr.model.outlineProperties&&(de.outlineProperties=this.map.sheetPr.model.outlineProperties);var xe={fitToPage:this.map.sheetPr.model&&this.map.sheetPr.model.pageSetup&&this.map.sheetPr.model.pageSetup.fitToPage||!1,margins:this.map.pageMargins.model},ae=Object.assign(xe,this.map.pageSetup.model,this.map.printOptions.model),fe=re(this.map.conditionalFormatting.model,this.map.extLst.model&&this.map.extLst.model["x14:conditionalFormattings"]);return this.model={dimensions:this.map.dimension.model,cols:this.map.cols.model,rows:this.map.sheetData.model,mergeCells:this.map.mergeCells.model,hyperlinks:this.map.hyperlinks.model,dataValidations:this.map.dataValidations.model,properties:de,views:this.map.sheetViews.model,pageSetup:ae,headerFooter:this.map.headerFooter.model,background:this.map.picture.model,drawing:this.map.drawing.model,tables:this.map.tableParts.model,conditionalFormattings:fe},this.map.autoFilter.model&&(this.model.autoFilter=this.map.autoFilter.model),this.map.sheetProtection.model&&(this.model.sheetProtection=this.map.sheetProtection.model),!1}default:return!0}}},{key:"reconcile",value:function(q,de){var xe=(q.relationships||[]).reduce(function(Re,Ce){if(Re[Ce.Id]=Ce,Ce.Type===o.Comments&&(q.comments=de.comments[Ce.Target].comments),Ce.Type===o.VmlDrawing&&q.comments&&q.comments.length){var Ge=de.vmlDrawings[Ce.Target].comments;q.comments.forEach(function(st,vt){st.note=Object.assign({},st.note,Ge[vt])})}return Re},{});if(de.commentsMap=(q.comments||[]).reduce(function(Re,Ce){return Ce.ref&&(Re[Ce.ref]=Ce),Re},{}),de.hyperlinkMap=(q.hyperlinks||[]).reduce(function(Re,Ce){return Ce.rId&&(Re[Ce.address]=xe[Ce.rId].Target),Re},{}),de.formulae={},q.rows=q.rows&&q.rows.filter(Boolean)||[],q.rows.forEach(function(Re){Re.cells=Re.cells&&Re.cells.filter(Boolean)||[]}),this.map.cols.reconcile(q.cols,de),this.map.sheetData.reconcile(q.rows,de),this.map.conditionalFormatting.reconcile(q.conditionalFormattings,de),q.media=[],q.drawing){var ae=xe[q.drawing.rId],fe=ae.Target.match(/\/drawings\/([a-zA-Z0-9]+)[.][a-zA-Z]{3,4}$/);if(fe){var Ne=fe[1],ie=de.drawings[Ne];ie.anchors.forEach(function(Re){if(Re.medium){var Ce={type:"image",imageId:Re.medium.index,range:Re.range,hyperlinks:Re.picture.hyperlinks};q.media.push(Ce)}})}}var Y=q.background&&xe[q.background.rId];if(Y){var Z=Y.Target.split("/media/")[1],le=de.mediaIndex&&de.mediaIndex[Z];le!==void 0&&q.media.push({type:"background",imageId:le})}q.tables=(q.tables||[]).map(function(Re){var Ce=xe[Re.rId];return de.tables[Ce.Target]}),delete q.relationships,delete q.hyperlinks,delete q.comments}}]),se}(c);ne.WORKSHEET_ATTRIBUTES={xmlns:"http://schemas.openxmlformats.org/spreadsheetml/2006/main","xmlns:r":"http://schemas.openxmlformats.org/officeDocument/2006/relationships","xmlns:mc":"http://schemas.openxmlformats.org/markup-compatibility/2006","mc:Ignorable":"x14ac","xmlns:x14ac":"http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac"},n.exports=ne},{"../../../utils/col-cache":19,"../../../utils/under-dash":25,"../../../utils/xml-stream":27,"../../rel-type":30,"../base-xform":31,"../list-xform":70,"./auto-filter-xform":71,"./cf/conditional-formattings-xform":86,"./col-xform":91,"./data-validations-xform":92,"./dimension-xform":93,"./drawing-xform":94,"./ext-lst-xform":95,"./header-footer-xform":96,"./hyperlink-xform":97,"./merge-cell-xform":98,"./merges":99,"./page-margins-xform":102,"./page-setup-xform":104,"./picture-xform":105,"./print-options-xform":106,"./row-breaks-xform":107,"./row-xform":108,"./sheet-format-properties-xform":109,"./sheet-properties-xform":110,"./sheet-protection-xform":111,"./sheet-view-xform":112,"./table-part-xform":113}],115:[function(e,n,i){function a(u){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(u)}function l(u,o){if(!(u instanceof o))throw new TypeError("Cannot call a class as a function")}function d(u,o){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(u){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},p(u)}var S=e("../base-xform"),w=function(u){b(s,u);var o=_(s);function s(c){var f;return l(this,s),f=o.call(this),f.tag=c.tag,f.attr=c.attr,f}return m(s,[{key:"render",value:function(f,v){v&&(f.openNode(this.tag),f.closeNode())}},{key:"parseOpen",value:function(f){f.name===this.tag&&(this.model=!0)}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}}]),s}(S);n.exports=w},{"../base-xform":31}],116:[function(e,n,i){function a(u){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(u)}function l(u,o){if(!(u instanceof o))throw new TypeError("Cannot call a class as a function")}function d(u,o){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(u){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},p(u)}var S=e("../base-xform"),w=function(u){b(s,u);var o=_(s);function s(c){var f;return l(this,s),f=o.call(this),f.tag=c.tag,f.attr=c.attr,f.attrs=c.attrs,f._format=c.format||function(v){try{return Number.isNaN(v.getTime())?"":v.toISOString()}catch{return""}},f._parse=c.parse||function(v){return new Date(v)},f}return m(s,[{key:"render",value:function(f,v){v&&(f.openNode(this.tag),this.attrs&&f.addAttributes(this.attrs),this.attr?f.addAttribute(this.attr,this._format(v)):f.writeText(this._format(v)),f.closeNode())}},{key:"parseOpen",value:function(f){f.name===this.tag&&(this.attr?this.model=this._parse(f.attributes[this.attr]):this.text=[])}},{key:"parseText",value:function(f){this.attr||this.text.push(f)}},{key:"parseClose",value:function(){return this.attr||(this.model=this._parse(this.text.join(""))),!1}}]),s}(S);n.exports=w},{"../base-xform":31}],117:[function(e,n,i){function a(u){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(u)}function l(u,o){if(!(u instanceof o))throw new TypeError("Cannot call a class as a function")}function d(u,o){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(u){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},p(u)}var S=e("../base-xform"),w=function(u){b(s,u);var o=_(s);function s(c){var f;return l(this,s),f=o.call(this),f.tag=c.tag,f.attr=c.attr,f.attrs=c.attrs,f.zero=c.zero,f}return m(s,[{key:"render",value:function(f,v){(v||this.zero)&&(f.openNode(this.tag),this.attrs&&f.addAttributes(this.attrs),this.attr?f.addAttribute(this.attr,v):f.writeText(v),f.closeNode())}},{key:"parseOpen",value:function(f){return f.name===this.tag?(this.attr?this.model=parseInt(f.attributes[this.attr],10):this.text=[],!0):!1}},{key:"parseText",value:function(f){this.attr||this.text.push(f)}},{key:"parseClose",value:function(){return this.attr||(this.model=parseInt(this.text.join("")||0,10)),!1}}]),s}(S);n.exports=w},{"../base-xform":31}],118:[function(e,n,i){function a(u){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(u)}function l(u,o){if(!(u instanceof o))throw new TypeError("Cannot call a class as a function")}function d(u,o){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(u){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},p(u)}var S=e("../base-xform"),w=function(u){b(s,u);var o=_(s);function s(c){var f;return l(this,s),f=o.call(this),f.tag=c.tag,f.attr=c.attr,f.attrs=c.attrs,f}return m(s,[{key:"render",value:function(f,v){v!==void 0&&(f.openNode(this.tag),this.attrs&&f.addAttributes(this.attrs),this.attr?f.addAttribute(this.attr,v):f.writeText(v),f.closeNode())}},{key:"parseOpen",value:function(f){f.name===this.tag&&(this.attr?this.model=f.attributes[this.attr]:this.text=[])}},{key:"parseText",value:function(f){this.attr||this.text.push(f)}},{key:"parseClose",value:function(){return this.attr||(this.model=this.text.join("")),!1}}]),s}(S);n.exports=w},{"../base-xform":31}],119:[function(e,n,i){function a(s){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(f){return typeof f}:a=function(f){return f&&typeof Symbol=="function"&&f.constructor===Symbol&&f!==Symbol.prototype?"symbol":typeof f},a(s)}function l(s,c){if(!(s instanceof c))throw new TypeError("Cannot call a class as a function")}function d(s,c){for(var f=0;f"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(s){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(f){return f.__proto__||Object.getPrototypeOf(f)},p(s)}var S=e("./base-xform"),w=e("../../utils/xml-stream");function u(s,c){s.openNode(c.tag,c.$),c.c&&c.c.forEach(function(f){u(s,f)}),c.t&&s.writeText(c.t),s.closeNode()}var o=function(s){b(f,s);var c=_(f);function f(v){var k;return l(this,f),k=c.call(this),k._model=v,k}return m(f,[{key:"render",value:function(k){if(!this._xml){var T=new w;u(T,this._model),this._xml=T.xml}k.writeXml(this._xml)}},{key:"parseOpen",value:function(){return!0}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(k){switch(k){case this._model.tag:return!1;default:return!0}}}]),f}(S);n.exports=o},{"../../utils/xml-stream":27,"./base-xform":31}],120:[function(e,n,i){function a(s){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(f){return typeof f}:a=function(f){return f&&typeof Symbol=="function"&&f.constructor===Symbol&&f!==Symbol.prototype?"symbol":typeof f},a(s)}function l(s,c){if(!(s instanceof c))throw new TypeError("Cannot call a class as a function")}function d(s,c){for(var f=0;f"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(s){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(f){return f.__proto__||Object.getPrototypeOf(f)},p(s)}var S=e("./text-xform"),w=e("./rich-text-xform"),u=e("../base-xform"),o=function(s){b(f,s);var c=_(f);function f(){var v;return l(this,f),v=c.call(this),v.map={r:new w,t:new S},v}return m(f,[{key:"render",value:function(k,T){if(k.openNode(this.tag,{sb:T.sb||0,eb:T.eb||0}),T&&T.hasOwnProperty("richText")&&T.richText){var C=this.map.r;T.richText.forEach(function(D){C.render(k,D)})}else T&&this.map.t.render(k,T.text);k.closeNode()}},{key:"parseOpen",value:function(k){var T=k.name;return this.parser?(this.parser.parseOpen(k),!0):T===this.tag?(this.model={sb:parseInt(k.attributes.sb,10),eb:parseInt(k.attributes.eb,10)},!0):(this.parser=this.map[T],this.parser?(this.parser.parseOpen(k),!0):!1)}},{key:"parseText",value:function(k){this.parser&&this.parser.parseText(k)}},{key:"parseClose",value:function(k){if(this.parser){if(!this.parser.parseClose(k)){switch(k){case"r":{var T=this.model.richText;T||(T=this.model.richText=[]),T.push(this.parser.model);break}case"t":this.model.text=this.parser.model;break}this.parser=void 0}return!0}switch(k){case this.tag:return!1;default:return!0}}},{key:"tag",get:function(){return"rPh"}}]),f}(u);n.exports=o},{"../base-xform":31,"./rich-text-xform":121,"./text-xform":124}],121:[function(e,n,i){function a(s){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(f){return typeof f}:a=function(f){return f&&typeof Symbol=="function"&&f.constructor===Symbol&&f!==Symbol.prototype?"symbol":typeof f},a(s)}function l(s,c){if(!(s instanceof c))throw new TypeError("Cannot call a class as a function")}function d(s,c){for(var f=0;f"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(s){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(f){return f.__proto__||Object.getPrototypeOf(f)},p(s)}var S=e("./text-xform"),w=e("../style/font-xform"),u=e("../base-xform"),o=function(s){b(f,s);var c=_(f);function f(v){var k;return l(this,f),k=c.call(this),k.model=v,k}return m(f,[{key:"render",value:function(k,T){T=T||this.model,k.openNode("r"),T.font&&this.fontXform.render(k,T.font),this.textXform.render(k,T.text),k.closeNode()}},{key:"parseOpen",value:function(k){if(this.parser)return this.parser.parseOpen(k),!0;switch(k.name){case"r":return this.model={},!0;case"t":return this.parser=this.textXform,this.parser.parseOpen(k),!0;case"rPr":return this.parser=this.fontXform,this.parser.parseOpen(k),!0;default:return!1}}},{key:"parseText",value:function(k){this.parser&&this.parser.parseText(k)}},{key:"parseClose",value:function(k){switch(k){case"r":return!1;case"t":return this.model.text=this.parser.model,this.parser=void 0,!0;case"rPr":return this.model.font=this.parser.model,this.parser=void 0,!0;default:return this.parser&&this.parser.parseClose(k),!0}}},{key:"tag",get:function(){return"r"}},{key:"textXform",get:function(){return this._textXform||(this._textXform=new S)}},{key:"fontXform",get:function(){return this._fontXform||(this._fontXform=new w(f.FONT_OPTIONS))}}]),f}(u);o.FONT_OPTIONS={tagName:"rPr",fontNameTag:"rFont"},n.exports=o},{"../base-xform":31,"../style/font-xform":130,"./text-xform":124}],122:[function(e,n,i){function a(c){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(v){return typeof v}:a=function(v){return v&&typeof Symbol=="function"&&v.constructor===Symbol&&v!==Symbol.prototype?"symbol":typeof v},a(c)}function l(c,f){if(!(c instanceof f))throw new TypeError("Cannot call a class as a function")}function d(c,f){for(var v=0;v"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(c){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(v){return v.__proto__||Object.getPrototypeOf(v)},p(c)}var S=e("./text-xform"),w=e("./rich-text-xform"),u=e("./phonetic-text-xform"),o=e("../base-xform"),s=function(c){b(v,c);var f=_(v);function v(k){var T;return l(this,v),T=f.call(this),T.model=k,T.map={r:new w,t:new S,rPh:new u},T}return m(v,[{key:"render",value:function(T,C){var D=this;T.openNode(this.tag),C&&C.hasOwnProperty("richText")&&C.richText?C.richText.length?C.richText.forEach(function(j){D.map.r.render(T,j)}):this.map.t.render(T,""):C!=null&&this.map.t.render(T,C),T.closeNode()}},{key:"parseOpen",value:function(T){var C=T.name;return this.parser?(this.parser.parseOpen(T),!0):C===this.tag?(this.model={},!0):(this.parser=this.map[C],this.parser?(this.parser.parseOpen(T),!0):!1)}},{key:"parseText",value:function(T){this.parser&&this.parser.parseText(T)}},{key:"parseClose",value:function(T){if(this.parser){if(!this.parser.parseClose(T)){switch(T){case"r":{var C=this.model.richText;C||(C=this.model.richText=[]),C.push(this.parser.model);break}case"t":this.model=this.parser.model;break}this.parser=void 0}return!0}switch(T){case this.tag:return!1;default:return!0}}},{key:"tag",get:function(){return"si"}}]),v}(o);n.exports=s},{"../base-xform":31,"./phonetic-text-xform":120,"./rich-text-xform":121,"./text-xform":124}],123:[function(e,n,i){function a(s){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(f){return typeof f}:a=function(f){return f&&typeof Symbol=="function"&&f.constructor===Symbol&&f!==Symbol.prototype?"symbol":typeof f},a(s)}function l(s,c){if(!(s instanceof c))throw new TypeError("Cannot call a class as a function")}function d(s,c){for(var f=0;f"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(s){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(f){return f.__proto__||Object.getPrototypeOf(f)},p(s)}var S=e("../../../utils/xml-stream"),w=e("../base-xform"),u=e("./shared-string-xform"),o=function(s){b(f,s);var c=_(f);function f(v){var k;return l(this,f),k=c.call(this),k.model=v||{values:[],count:0},k.hash=Object.create(null),k.rich=Object.create(null),k}return m(f,[{key:"getString",value:function(k){return this.model.values[k]}},{key:"add",value:function(k){return k.richText?this.addRichText(k):this.addText(k)}},{key:"addText",value:function(k){var T=this.hash[k];return T===void 0&&(T=this.hash[k]=this.model.values.length,this.model.values.push(k)),this.model.count++,T}},{key:"addRichText",value:function(k){var T=this.sharedStringXform.toXml(k),C=this.rich[T];return C===void 0&&(C=this.rich[T]=this.model.values.length,this.model.values.push(k)),this.model.count++,C}},{key:"render",value:function(k,T){T=T||this._values,k.openXml(S.StdDocAttributes),k.openNode("sst",{xmlns:"http://schemas.openxmlformats.org/spreadsheetml/2006/main",count:T.count,uniqueCount:T.values.length});var C=this.sharedStringXform;T.values.forEach(function(D){C.render(k,D)}),k.closeNode()}},{key:"parseOpen",value:function(k){if(this.parser)return this.parser.parseOpen(k),!0;switch(k.name){case"sst":return!0;case"si":return this.parser=this.sharedStringXform,this.parser.parseOpen(k),!0;default:throw new Error("Unexpected xml node in parseOpen: ".concat(JSON.stringify(k)))}}},{key:"parseText",value:function(k){this.parser&&this.parser.parseText(k)}},{key:"parseClose",value:function(k){if(this.parser)return this.parser.parseClose(k)||(this.model.values.push(this.parser.model),this.model.count++,this.parser=void 0),!0;switch(k){case"sst":return!1;default:throw new Error("Unexpected xml node in parseClose: ".concat(k))}}},{key:"sharedStringXform",get:function(){return this._sharedStringXform||(this._sharedStringXform=new u)}},{key:"values",get:function(){return this.model.values}},{key:"uniqueCount",get:function(){return this.model.values.length}},{key:"count",get:function(){return this.model.count}}]),f}(w);n.exports=o},{"../../../utils/xml-stream":27,"../base-xform":31,"./shared-string-xform":122}],124:[function(e,n,i){function a(u){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(u)}function l(u,o){if(!(u instanceof o))throw new TypeError("Cannot call a class as a function")}function d(u,o){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(u){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},p(u)}var S=e("../base-xform"),w=function(u){b(s,u);var o=_(s);function s(){return l(this,s),o.apply(this,arguments)}return m(s,[{key:"render",value:function(f,v){f.openNode("t"),/^\s|\n|\s$/.test(v)&&f.addAttribute("xml:space","preserve"),f.writeText(v),f.closeNode()}},{key:"parseOpen",value:function(f){switch(f.name){case"t":return this._text=[],!0;default:return!1}}},{key:"parseText",value:function(f){this._text.push(f)}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"t"}},{key:"model",get:function(){return this._text.join("").replace(/_x([0-9A-F]{4})_/g,function(f,v){return String.fromCharCode(parseInt(v,16))})}}]),s}(S);n.exports=w},{"../base-xform":31}],125:[function(e,n,i){function a(f){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(k){return typeof k}:a=function(k){return k&&typeof Symbol=="function"&&k.constructor===Symbol&&k!==Symbol.prototype?"symbol":typeof k},a(f)}function l(f,v){if(!(f instanceof v))throw new TypeError("Cannot call a class as a function")}function d(f,v){for(var k=0;k"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(f){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(k){return k.__proto__||Object.getPrototypeOf(k)},p(f)}var S=e("../../../doc/enums"),w=e("../../../utils/utils"),u=e("../base-xform"),o={horizontalValues:["left","center","right","fill","centerContinuous","distributed","justify"].reduce(function(f,v){return f[v]=!0,f},{}),horizontal:function(v){return this.horizontalValues[v]?v:void 0},verticalValues:["top","middle","bottom","distributed","justify"].reduce(function(f,v){return f[v]=!0,f},{}),vertical:function(v){return v==="middle"?"center":this.verticalValues[v]?v:void 0},wrapText:function(v){return v?!0:void 0},shrinkToFit:function(v){return v?!0:void 0},textRotation:function(v){switch(v){case"vertical":return v;default:return v=w.validInt(v),v>=-90&&v<=90?v:void 0}},indent:function(v){return v=w.validInt(v),Math.max(0,v)},readingOrder:function(v){switch(v){case"ltr":return S.ReadingOrder.LeftToRight;case"rtl":return S.ReadingOrder.RightToLeft;default:return}}},s={toXml:function(v){if(v=o.textRotation(v),v){if(v==="vertical")return 255;var k=Math.round(v);if(k>=0&&k<=90)return k;if(k<0&&k>=-90)return 90-k}},toModel:function(v){var k=w.validInt(v);if(k!==void 0){if(k===255)return"vertical";if(k>=0&&k<=90)return k;if(k>90&&k<=180)return 90-k}}},c=function(f){b(k,f);var v=_(k);function k(){return l(this,k),v.apply(this,arguments)}return m(k,[{key:"render",value:function(C,D){C.addRollback(),C.openNode("alignment");var j=!1;function L(M,B){B&&(C.addAttribute(M,B),j=!0)}L("horizontal",o.horizontal(D.horizontal)),L("vertical",o.vertical(D.vertical)),L("wrapText",o.wrapText(D.wrapText)?"1":!1),L("shrinkToFit",o.shrinkToFit(D.shrinkToFit)?"1":!1),L("indent",o.indent(D.indent)),L("textRotation",s.toXml(D.textRotation)),L("readingOrder",o.readingOrder(D.readingOrder)),C.closeNode(),j?C.commit():C.rollback()}},{key:"parseOpen",value:function(C){var D={},j=!1;function L(M,B,R){M&&(D[B]=R,j=!0)}L(C.attributes.horizontal,"horizontal",C.attributes.horizontal),L(C.attributes.vertical,"vertical",C.attributes.vertical==="center"?"middle":C.attributes.vertical),L(C.attributes.wrapText,"wrapText",!!C.attributes.wrapText),L(C.attributes.shrinkToFit,"shrinkToFit",!!C.attributes.shrinkToFit),L(C.attributes.indent,"indent",parseInt(C.attributes.indent,10)),L(C.attributes.textRotation,"textRotation",s.toModel(C.attributes.textRotation)),L(C.attributes.readingOrder,"readingOrder",C.attributes.readingOrder==="2"?"rtl":"ltr"),this.model=j?D:null}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"alignment"}}]),k}(u);n.exports=c},{"../../../doc/enums":7,"../../../utils/utils":26,"../base-xform":31}],126:[function(e,n,i){function a(v,k){var T=Object.keys(v);if(Object.getOwnPropertySymbols){var C=Object.getOwnPropertySymbols(v);k&&(C=C.filter(function(D){return Object.getOwnPropertyDescriptor(v,D).enumerable})),T.push.apply(T,C)}return T}function l(v){for(var k=1;k"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function u(v){return u=Object.setPrototypeOf?Object.getPrototypeOf:function(T){return T.__proto__||Object.getPrototypeOf(T)},u(v)}var o=e("../base-xform"),s=e("./color-xform"),c=function(v){g(T,v);var k=x(T);function T(C){var D;return b(this,T),D=k.call(this),D.name=C,D.map={color:new s},D}return _(T,[{key:"render",value:function(D,j,L){var M=j&&j.color||L||this.defaultColor;D.openNode(this.name),j&&j.style&&(D.addAttribute("style",j.style),M&&this.map.color.render(D,M)),D.closeNode()}},{key:"parseOpen",value:function(D){if(this.parser)return this.parser.parseOpen(D),!0;switch(D.name){case this.name:{var j=D.attributes.style;return j?this.model={style:j}:this.model=void 0,!0}case"color":return this.parser=this.map.color,this.parser.parseOpen(D),!0;default:return!1}}},{key:"parseText",value:function(D){this.parser&&this.parser.parseText(D)}},{key:"parseClose",value:function(D){return this.parser?(this.parser.parseClose(D)||(this.parser=void 0),!0):(D===this.name&&this.map.color.model&&(this.model||(this.model={}),this.model.color=this.map.color.model),!1)}},{key:"validStyle",value:function(D){return T.validStyleValues[D]}},{key:"tag",get:function(){return this.name}}]),T}(o);c.validStyleValues=["thin","dotted","dashDot","hair","dashDotDot","slantDashDot","mediumDashed","mediumDashDotDot","mediumDashDot","medium","double","thick"].reduce(function(v,k){return v[k]=!0,v},{});var f=function(v){g(T,v);var k=x(T);function T(){var C;return b(this,T),C=k.call(this),C.map={top:new c("top"),left:new c("left"),bottom:new c("bottom"),right:new c("right"),diagonal:new c("diagonal")},C}return _(T,[{key:"render",value:function(D,j){var L=j.color;D.openNode("border"),j.diagonal&&j.diagonal.style&&(j.diagonal.up&&D.addAttribute("diagonalUp","1"),j.diagonal.down&&D.addAttribute("diagonalDown","1"));function M(B,R){B&&!B.color&&j.color&&(B=l(l({},B),{},{color:j.color})),R.render(D,B,L)}M(j.left,this.map.left),M(j.right,this.map.right),M(j.top,this.map.top),M(j.bottom,this.map.bottom),M(j.diagonal,this.map.diagonal),D.closeNode()}},{key:"parseOpen",value:function(D){if(this.parser)return this.parser.parseOpen(D),!0;switch(D.name){case"border":return this.reset(),this.diagonalUp=!!D.attributes.diagonalUp,this.diagonalDown=!!D.attributes.diagonalDown,!0;default:return this.parser=this.map[D.name],this.parser?(this.parser.parseOpen(D),!0):!1}}},{key:"parseText",value:function(D){this.parser&&this.parser.parseText(D)}},{key:"parseClose",value:function(D){if(this.parser)return this.parser.parseClose(D)||(this.parser=void 0),!0;if(D==="border"){var j=this.model={},L=function(B,R,P){R&&(P&&Object.assign(R,P),j[B]=R)};L("left",this.map.left.model),L("right",this.map.right.model),L("top",this.map.top.model),L("bottom",this.map.bottom.model),L("diagonal",this.map.diagonal.model,{up:this.diagonalUp,down:this.diagonalDown})}return!1}}]),T}(o);n.exports=f},{"../base-xform":31,"./color-xform":127}],127:[function(e,n,i){function a(u){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(u)}function l(u,o){if(!(u instanceof o))throw new TypeError("Cannot call a class as a function")}function d(u,o){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(u){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},p(u)}var S=e("../base-xform"),w=function(u){b(s,u);var o=_(s);function s(c){var f;return l(this,s),f=o.call(this),f.name=c||"color",f}return m(s,[{key:"render",value:function(f,v){return v?(f.openNode(this.name),v.argb?f.addAttribute("rgb",v.argb):v.theme!==void 0?(f.addAttribute("theme",v.theme),v.tint!==void 0&&f.addAttribute("tint",v.tint)):v.indexed!==void 0?f.addAttribute("indexed",v.indexed):f.addAttribute("auto","1"),f.closeNode(),!0):!1}},{key:"parseOpen",value:function(f){return f.name===this.name?(f.attributes.rgb?this.model={argb:f.attributes.rgb}:f.attributes.theme?(this.model={theme:parseInt(f.attributes.theme,10)},f.attributes.tint&&(this.model.tint=parseFloat(f.attributes.tint))):f.attributes.indexed?this.model={indexed:parseInt(f.attributes.indexed,10)}:this.model=void 0,!0):!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return this.name}}]),s}(S);n.exports=w},{"../base-xform":31}],128:[function(e,n,i){function a(k){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(C){return typeof C}:a=function(C){return C&&typeof Symbol=="function"&&C.constructor===Symbol&&C!==Symbol.prototype?"symbol":typeof C},a(k)}function l(k,T){if(!(k instanceof T))throw new TypeError("Cannot call a class as a function")}function d(k,T){for(var C=0;C"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(k){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(C){return C.__proto__||Object.getPrototypeOf(C)},p(k)}var S=e("../base-xform"),w=e("./alignment-xform"),u=e("./border-xform"),o=e("./fill-xform"),s=e("./font-xform"),c=e("./numfmt-xform"),f=e("./protection-xform"),v=function(k){b(C,k);var T=_(C);function C(){var D;return l(this,C),D=T.call(this),D.map={alignment:new w,border:new u,fill:new o,font:new s,numFmt:new c,protection:new f},D}return m(C,[{key:"render",value:function(j,L){j.openNode(this.tag),L.font&&this.map.font.render(j,L.font),L.numFmt&&this.map.numFmt.render(j,L.numFmt),L.fill&&this.map.fill.render(j,L.fill),L.alignment&&this.map.alignment.render(j,L.alignment),L.border&&this.map.border.render(j,L.border),L.protection&&this.map.protection.render(j,L.protection),j.closeNode()}},{key:"parseOpen",value:function(j){if(this.parser)return this.parser.parseOpen(j),!0;switch(j.name){case this.tag:return this.reset(),!0;default:return this.parser=this.map[j.name],this.parser&&this.parser.parseOpen(j),!0}}},{key:"parseText",value:function(j){this.parser&&this.parser.parseText(j)}},{key:"parseClose",value:function(j){return this.parser?(this.parser.parseClose(j)||(this.parser=void 0),!0):j===this.tag?(this.model={alignment:this.map.alignment.model,border:this.map.border.model,fill:this.map.fill.model,font:this.map.font.model,numFmt:this.map.numFmt.model,protection:this.map.protection.model},!1):!0}},{key:"tag",get:function(){return"dxf"}}]),C}(S);n.exports=v},{"../base-xform":31,"./alignment-xform":125,"./border-xform":126,"./fill-xform":129,"./font-xform":130,"./numfmt-xform":131,"./protection-xform":132}],129:[function(e,n,i){function a(f){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(k){return typeof k}:a=function(k){return k&&typeof Symbol=="function"&&k.constructor===Symbol&&k!==Symbol.prototype?"symbol":typeof k},a(f)}function l(f,v){if(!(f instanceof v))throw new TypeError("Cannot call a class as a function")}function d(f,v){for(var k=0;k"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(f){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(k){return k.__proto__||Object.getPrototypeOf(k)},p(f)}var S=e("../base-xform"),w=e("./color-xform"),u=function(f){b(k,f);var v=_(k);function k(){var T;return l(this,k),T=v.call(this),T.map={color:new w},T}return m(k,[{key:"render",value:function(C,D){C.openNode("stop"),C.addAttribute("position",D.position),this.map.color.render(C,D.color),C.closeNode()}},{key:"parseOpen",value:function(C){if(this.parser)return this.parser.parseOpen(C),!0;switch(C.name){case"stop":return this.model={position:parseFloat(C.attributes.position)},!0;case"color":return this.parser=this.map.color,this.parser.parseOpen(C),!0;default:return!1}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(C){return this.parser?(this.parser.parseClose(C)||(this.model.color=this.parser.model,this.parser=void 0),!0):!1}},{key:"tag",get:function(){return"stop"}}]),k}(S),o=function(f){b(k,f);var v=_(k);function k(){var T;return l(this,k),T=v.call(this),T.map={fgColor:new w("fgColor"),bgColor:new w("bgColor")},T}return m(k,[{key:"render",value:function(C,D){C.openNode("patternFill"),C.addAttribute("patternType",D.pattern),D.fgColor&&this.map.fgColor.render(C,D.fgColor),D.bgColor&&this.map.bgColor.render(C,D.bgColor),C.closeNode()}},{key:"parseOpen",value:function(C){if(this.parser)return this.parser.parseOpen(C),!0;switch(C.name){case"patternFill":return this.model={type:"pattern",pattern:C.attributes.patternType},!0;default:return this.parser=this.map[C.name],this.parser?(this.parser.parseOpen(C),!0):!1}}},{key:"parseText",value:function(C){this.parser&&this.parser.parseText(C)}},{key:"parseClose",value:function(C){return this.parser?(this.parser.parseClose(C)||(this.parser.model&&(this.model[C]=this.parser.model),this.parser=void 0),!0):!1}},{key:"name",get:function(){return"pattern"}},{key:"tag",get:function(){return"patternFill"}}]),k}(S),s=function(f){b(k,f);var v=_(k);function k(){var T;return l(this,k),T=v.call(this),T.map={stop:new u},T}return m(k,[{key:"render",value:function(C,D){switch(C.openNode("gradientFill"),D.gradient){case"angle":C.addAttribute("degree",D.degree);break;case"path":C.addAttribute("type","path"),D.center.left&&(C.addAttribute("left",D.center.left),D.center.right===void 0&&C.addAttribute("right",D.center.left)),D.center.right&&C.addAttribute("right",D.center.right),D.center.top&&(C.addAttribute("top",D.center.top),D.center.bottom===void 0&&C.addAttribute("bottom",D.center.top)),D.center.bottom&&C.addAttribute("bottom",D.center.bottom);break}var j=this.map.stop;D.stops.forEach(function(L){j.render(C,L)}),C.closeNode()}},{key:"parseOpen",value:function(C){if(this.parser)return this.parser.parseOpen(C),!0;switch(C.name){case"gradientFill":{var D=this.model={stops:[]};return C.attributes.degree?(D.gradient="angle",D.degree=parseInt(C.attributes.degree,10)):C.attributes.type==="path"&&(D.gradient="path",D.center={left:C.attributes.left?parseFloat(C.attributes.left):0,top:C.attributes.top?parseFloat(C.attributes.top):0},C.attributes.right!==C.attributes.left&&(D.center.right=C.attributes.right?parseFloat(C.attributes.right):0),C.attributes.bottom!==C.attributes.top&&(D.center.bottom=C.attributes.bottom?parseFloat(C.attributes.bottom):0)),!0}case"stop":return this.parser=this.map.stop,this.parser.parseOpen(C),!0;default:return!1}}},{key:"parseText",value:function(C){this.parser&&this.parser.parseText(C)}},{key:"parseClose",value:function(C){return this.parser?(this.parser.parseClose(C)||(this.model.stops.push(this.parser.model),this.parser=void 0),!0):!1}},{key:"name",get:function(){return"gradient"}},{key:"tag",get:function(){return"gradientFill"}}]),k}(S),c=function(f){b(k,f);var v=_(k);function k(){var T;return l(this,k),T=v.call(this),T.map={patternFill:new o,gradientFill:new s},T}return m(k,[{key:"render",value:function(C,D){switch(C.addRollback(),C.openNode("fill"),D.type){case"pattern":this.map.patternFill.render(C,D);break;case"gradient":this.map.gradientFill.render(C,D);break;default:C.rollback();return}C.closeNode(),C.commit()}},{key:"parseOpen",value:function(C){if(this.parser)return this.parser.parseOpen(C),!0;switch(C.name){case"fill":return this.model={},!0;default:return this.parser=this.map[C.name],this.parser?(this.parser.parseOpen(C),!0):!1}}},{key:"parseText",value:function(C){this.parser&&this.parser.parseText(C)}},{key:"parseClose",value:function(C){return this.parser?(this.parser.parseClose(C)||(this.model=this.parser.model,this.model.type=this.parser.name,this.parser=void 0),!0):!1}},{key:"validStyle",value:function(C){return k.validPatternValues[C]}},{key:"tag",get:function(){return"fill"}}]),k}(S);c.validPatternValues=["none","solid","darkVertical","darkGray","mediumGray","lightGray","gray125","gray0625","darkHorizontal","darkVertical","darkDown","darkUp","darkGrid","darkTrellis","lightHorizontal","lightVertical","lightDown","lightUp","lightGrid","lightTrellis","lightGrid"].reduce(function(f,v){return f[v]=!0,f},{}),c.StopXform=u,c.PatternFillXform=o,c.GradientFillXform=s,n.exports=c},{"../base-xform":31,"./color-xform":127}],130:[function(e,n,i){function a(k){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(C){return typeof C}:a=function(C){return C&&typeof Symbol=="function"&&C.constructor===Symbol&&C!==Symbol.prototype?"symbol":typeof C},a(k)}function l(k,T){if(!(k instanceof T))throw new TypeError("Cannot call a class as a function")}function d(k,T){for(var C=0;C"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(k){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(C){return C.__proto__||Object.getPrototypeOf(C)},p(k)}var S=e("./color-xform"),w=e("../simple/boolean-xform"),u=e("../simple/integer-xform"),o=e("../simple/string-xform"),s=e("./underline-xform"),c=e("../../../utils/under-dash"),f=e("../base-xform"),v=function(k){b(C,k);var T=_(C);function C(D){var j;return l(this,C),j=T.call(this),j.options=D||C.OPTIONS,j.map={b:{prop:"bold",xform:new w({tag:"b",attr:"val"})},i:{prop:"italic",xform:new w({tag:"i",attr:"val"})},u:{prop:"underline",xform:new s},charset:{prop:"charset",xform:new u({tag:"charset",attr:"val"})},color:{prop:"color",xform:new S},condense:{prop:"condense",xform:new w({tag:"condense",attr:"val"})},extend:{prop:"extend",xform:new w({tag:"extend",attr:"val"})},family:{prop:"family",xform:new u({tag:"family",attr:"val"})},outline:{prop:"outline",xform:new w({tag:"outline",attr:"val"})},vertAlign:{prop:"vertAlign",xform:new o({tag:"vertAlign",attr:"val"})},scheme:{prop:"scheme",xform:new o({tag:"scheme",attr:"val"})},shadow:{prop:"shadow",xform:new w({tag:"shadow",attr:"val"})},strike:{prop:"strike",xform:new w({tag:"strike",attr:"val"})},sz:{prop:"size",xform:new u({tag:"sz",attr:"val"})}},j.map[j.options.fontNameTag]={prop:"name",xform:new o({tag:j.options.fontNameTag,attr:"val"})},j}return m(C,[{key:"render",value:function(j,L){var M=this.map;j.openNode(this.options.tagName),c.each(this.map,function(B,R){M[R].xform.render(j,L[B.prop])}),j.closeNode()}},{key:"parseOpen",value:function(j){if(this.parser)return this.parser.parseOpen(j),!0;if(this.map[j.name])return this.parser=this.map[j.name].xform,this.parser.parseOpen(j);switch(j.name){case this.options.tagName:return this.model={},!0;default:return!1}}},{key:"parseText",value:function(j){this.parser&&this.parser.parseText(j)}},{key:"parseClose",value:function(j){if(this.parser&&!this.parser.parseClose(j)){var L=this.map[j];return this.parser.model&&(this.model[L.prop]=this.parser.model),this.parser=void 0,!0}switch(j){case this.options.tagName:return!1;default:return!0}}},{key:"tag",get:function(){return this.options.tagName}}]),C}(f);v.OPTIONS={tagName:"font",fontNameTag:"name"},n.exports=v},{"../../../utils/under-dash":25,"../base-xform":31,"../simple/boolean-xform":115,"../simple/integer-xform":117,"../simple/string-xform":118,"./color-xform":127,"./underline-xform":135}],131:[function(e,n,i){function a(f){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(k){return typeof k}:a=function(k){return k&&typeof Symbol=="function"&&k.constructor===Symbol&&k!==Symbol.prototype?"symbol":typeof k},a(f)}function l(f,v){if(!(f instanceof v))throw new TypeError("Cannot call a class as a function")}function d(f,v){for(var k=0;k"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(f){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(k){return k.__proto__||Object.getPrototypeOf(k)},p(f)}var S=e("../../../utils/under-dash"),w=e("../../defaultnumformats"),u=e("../base-xform");function o(){var f={};return S.each(w,function(v,k){v.f&&(f[v.f]=parseInt(k,10))}),f}var s=o(),c=function(f){b(k,f);var v=_(k);function k(T,C){var D;return l(this,k),D=v.call(this),D.id=T,D.formatCode=C,D}return m(k,[{key:"render",value:function(C,D){C.leafNode("numFmt",{numFmtId:D.id,formatCode:D.formatCode})}},{key:"parseOpen",value:function(C){switch(C.name){case"numFmt":return this.model={id:parseInt(C.attributes.numFmtId,10),formatCode:C.attributes.formatCode.replace(/[\\](.)/g,"$1")},!0;default:return!1}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"numFmt"}}]),k}(u);c.getDefaultFmtId=function(v){return s[v]},c.getDefaultFmtCode=function(v){return w[v]&&w[v].f},n.exports=c},{"../../../utils/under-dash":25,"../../defaultnumformats":29,"../base-xform":31}],132:[function(e,n,i){function a(o){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(c){return typeof c}:a=function(c){return c&&typeof Symbol=="function"&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c},a(o)}function l(o,s){if(!(o instanceof s))throw new TypeError("Cannot call a class as a function")}function d(o,s){for(var c=0;c"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(o){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(c){return c.__proto__||Object.getPrototypeOf(c)},p(o)}var S=e("../base-xform"),w={boolean:function(s,c){return s===void 0?c:s}},u=function(o){b(c,o);var s=_(c);function c(){return l(this,c),s.apply(this,arguments)}return m(c,[{key:"render",value:function(v,k){v.addRollback(),v.openNode("protection");var T=!1;function C(D,j){j!==void 0&&(v.addAttribute(D,j),T=!0)}C("locked",w.boolean(k.locked,!0)?void 0:"0"),C("hidden",w.boolean(k.hidden,!1)?"1":void 0),v.closeNode(),T?v.commit():v.rollback()}},{key:"parseOpen",value:function(v){var k={locked:v.attributes.locked!=="0",hidden:v.attributes.hidden==="1"},T=!k.locked||k.hidden;this.model=T?k:null}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"protection"}}]),c}(S);n.exports=u},{"../base-xform":31}],133:[function(e,n,i){function a(s){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(f){return typeof f}:a=function(f){return f&&typeof Symbol=="function"&&f.constructor===Symbol&&f!==Symbol.prototype?"symbol":typeof f},a(s)}function l(s,c){if(!(s instanceof c))throw new TypeError("Cannot call a class as a function")}function d(s,c){for(var f=0;f"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(s){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(f){return f.__proto__||Object.getPrototypeOf(f)},p(s)}var S=e("../base-xform"),w=e("./alignment-xform"),u=e("./protection-xform"),o=function(s){b(f,s);var c=_(f);function f(v){var k;return l(this,f),k=c.call(this),k.xfId=!!(v&&v.xfId),k.map={alignment:new w,protection:new u},k}return m(f,[{key:"render",value:function(k,T){k.openNode("xf",{numFmtId:T.numFmtId||0,fontId:T.fontId||0,fillId:T.fillId||0,borderId:T.borderId||0}),this.xfId&&k.addAttribute("xfId",T.xfId||0),T.numFmtId&&k.addAttribute("applyNumberFormat","1"),T.fontId&&k.addAttribute("applyFont","1"),T.fillId&&k.addAttribute("applyFill","1"),T.borderId&&k.addAttribute("applyBorder","1"),T.alignment&&k.addAttribute("applyAlignment","1"),T.protection&&k.addAttribute("applyProtection","1"),T.alignment&&this.map.alignment.render(k,T.alignment),T.protection&&this.map.protection.render(k,T.protection),k.closeNode()}},{key:"parseOpen",value:function(k){if(this.parser)return this.parser.parseOpen(k),!0;switch(k.name){case"xf":return this.model={numFmtId:parseInt(k.attributes.numFmtId,10),fontId:parseInt(k.attributes.fontId,10),fillId:parseInt(k.attributes.fillId,10),borderId:parseInt(k.attributes.borderId,10)},this.xfId&&(this.model.xfId=parseInt(k.attributes.xfId,10)),!0;case"alignment":return this.parser=this.map.alignment,this.parser.parseOpen(k),!0;case"protection":return this.parser=this.map.protection,this.parser.parseOpen(k),!0;default:return!1}}},{key:"parseText",value:function(k){this.parser&&this.parser.parseText(k)}},{key:"parseClose",value:function(k){return this.parser?(this.parser.parseClose(k)||(this.map.protection===this.parser?this.model.protection=this.parser.model:this.model.alignment=this.parser.model,this.parser=void 0),!0):k!=="xf"}},{key:"tag",get:function(){return"xf"}}]),f}(S);n.exports=o},{"../base-xform":31,"./alignment-xform":125,"./protection-xform":132}],134:[function(e,n,i){function a(M){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(R){return typeof R}:a=function(R){return R&&typeof Symbol=="function"&&R.constructor===Symbol&&R!==Symbol.prototype?"symbol":typeof R},a(M)}function l(M,B){if(!(M instanceof B))throw new TypeError("Cannot call a class as a function")}function d(M,B){for(var R=0;R"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(M){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(R){return R.__proto__||Object.getPrototypeOf(R)},p(M)}var S=e("../../../doc/enums"),w=e("../../../utils/xml-stream"),u=e("../base-xform"),o=e("../static-xform"),s=e("../list-xform"),c=e("./font-xform"),f=e("./fill-xform"),v=e("./border-xform"),k=e("./numfmt-xform"),T=e("./style-xform"),C=e("./dxf-xform"),D=164,j=function(M){b(R,M);var B=_(R);function R(P){var O;return l(this,R),O=B.call(this),O.map={numFmts:new s({tag:"numFmts",count:!0,childXform:new k}),fonts:new s({tag:"fonts",count:!0,childXform:new c,$:{"x14ac:knownFonts":1}}),fills:new s({tag:"fills",count:!0,childXform:new f}),borders:new s({tag:"borders",count:!0,childXform:new v}),cellStyleXfs:new s({tag:"cellStyleXfs",count:!0,childXform:new T}),cellXfs:new s({tag:"cellXfs",count:!0,childXform:new T({xfId:!0})}),dxfs:new s({tag:"dxfs",always:!0,count:!0,childXform:new C}),numFmt:new k,font:new c,fill:new f,border:new v,style:new T({xfId:!0}),cellStyles:R.STATIC_XFORMS.cellStyles,tableStyles:R.STATIC_XFORMS.tableStyles,extLst:R.STATIC_XFORMS.extLst},P&&O.init(),O}return m(R,[{key:"initIndex",value:function(){this.index={style:{},numFmt:{},numFmtNextId:164,font:{},border:{},fill:{}}}},{key:"init",value:function(){this.model={styles:[],numFmts:[],fonts:[],borders:[],fills:[],dxfs:[]},this.initIndex(),this._addBorder({}),this._addStyle({numFmtId:0,fontId:0,fillId:0,borderId:0,xfId:0}),this._addFill({type:"pattern",pattern:"none"}),this._addFill({type:"pattern",pattern:"gray125"}),this.weakMap=new WeakMap}},{key:"render",value:function(O,F){F=F||this.model,O.openXml(w.StdDocAttributes),O.openNode("styleSheet",R.STYLESHEET_ATTRIBUTES),this.index?(F.numFmts&&F.numFmts.length&&(O.openNode("numFmts",{count:F.numFmts.length}),F.numFmts.forEach(function(H){O.writeXml(H)}),O.closeNode()),F.fonts.length||this._addFont({size:11,color:{theme:1},name:"Calibri",family:2,scheme:"minor"}),O.openNode("fonts",{count:F.fonts.length,"x14ac:knownFonts":1}),F.fonts.forEach(function(H){O.writeXml(H)}),O.closeNode(),O.openNode("fills",{count:F.fills.length}),F.fills.forEach(function(H){O.writeXml(H)}),O.closeNode(),O.openNode("borders",{count:F.borders.length}),F.borders.forEach(function(H){O.writeXml(H)}),O.closeNode(),this.map.cellStyleXfs.render(O,[{numFmtId:0,fontId:0,fillId:0,borderId:0,xfId:0}]),O.openNode("cellXfs",{count:F.styles.length}),F.styles.forEach(function(H){O.writeXml(H)}),O.closeNode()):(this.map.numFmts.render(O,F.numFmts),this.map.fonts.render(O,F.fonts),this.map.fills.render(O,F.fills),this.map.borders.render(O,F.borders),this.map.cellStyleXfs.render(O,[{numFmtId:0,fontId:0,fillId:0,borderId:0,xfId:0}]),this.map.cellXfs.render(O,F.styles)),R.STATIC_XFORMS.cellStyles.render(O),this.map.dxfs.render(O,F.dxfs),R.STATIC_XFORMS.tableStyles.render(O),R.STATIC_XFORMS.extLst.render(O),O.closeNode()}},{key:"parseOpen",value:function(O){if(this.parser)return this.parser.parseOpen(O),!0;switch(O.name){case"styleSheet":return this.initIndex(),!0;default:return this.parser=this.map[O.name],this.parser&&this.parser.parseOpen(O),!0}}},{key:"parseText",value:function(O){this.parser&&this.parser.parseText(O)}},{key:"parseClose",value:function(O){var F=this;if(this.parser)return this.parser.parseClose(O)||(this.parser=void 0),!0;switch(O){case"styleSheet":{this.model={};var H=function(X,I){I.model&&I.model.length&&(F.model[X]=I.model)};if(H("numFmts",this.map.numFmts),H("fonts",this.map.fonts),H("fills",this.map.fills),H("borders",this.map.borders),H("styles",this.map.cellXfs),H("dxfs",this.map.dxfs),this.index={model:[],numFmt:[]},this.model.numFmts){var V=this.index.numFmt;this.model.numFmts.forEach(function(z){V[z.id]=z.formatCode})}return!1}default:return!0}}},{key:"addStyleModel",value:function(O,F){if(!O)return 0;if(this.model.fonts.length||this._addFont({size:11,color:{theme:1},name:"Calibri",family:2,scheme:"minor"}),this.weakMap&&this.weakMap.has(O))return this.weakMap.get(O);var H={};if(F=F||S.ValueType.Number,O.numFmt)H.numFmtId=this._addNumFmtStr(O.numFmt);else switch(F){case S.ValueType.Number:H.numFmtId=this._addNumFmtStr("General");break;case S.ValueType.Date:H.numFmtId=this._addNumFmtStr("mm-dd-yy");break}O.font&&(H.fontId=this._addFont(O.font)),O.border&&(H.borderId=this._addBorder(O.border)),O.fill&&(H.fillId=this._addFill(O.fill)),O.alignment&&(H.alignment=O.alignment),O.protection&&(H.protection=O.protection);var V=this._addStyle(H);return this.weakMap&&this.weakMap.set(O,V),V}},{key:"getStyleModel",value:function(O){var F=this.model.styles[O];if(!F)return null;var H=this.index.model[O];if(H)return H;if(H=this.index.model[O]={},F.numFmtId){var V=this.index.numFmt[F.numFmtId]||k.getDefaultFmtCode(F.numFmtId);V&&(H.numFmt=V)}function z(X,I,N){if(N||N===0){var U=I[N];U&&(H[X]=U)}}return z("font",this.model.fonts,F.fontId),z("border",this.model.borders,F.borderId),z("fill",this.model.fills,F.fillId),F.alignment&&(H.alignment=F.alignment),F.protection&&(H.protection=F.protection),H}},{key:"addDxfStyle",value:function(O){return this.model.dxfs.push(O),this.model.dxfs.length-1}},{key:"getDxfStyle",value:function(O){return this.model.dxfs[O]}},{key:"_addStyle",value:function(O){var F=this.map.style.toXml(O),H=this.index.style[F];return H===void 0&&(H=this.index.style[F]=this.model.styles.length,this.model.styles.push(F)),H}},{key:"_addNumFmtStr",value:function(O){var F=k.getDefaultFmtId(O);if(F!==void 0||(F=this.index.numFmt[O],F!==void 0))return F;F=this.index.numFmt[O]=D+this.model.numFmts.length;var H=this.map.numFmt.toXml({id:F,formatCode:O});return this.model.numFmts.push(H),F}},{key:"_addFont",value:function(O){var F=this.map.font.toXml(O),H=this.index.font[F];return H===void 0&&(H=this.index.font[F]=this.model.fonts.length,this.model.fonts.push(F)),H}},{key:"_addBorder",value:function(O){var F=this.map.border.toXml(O),H=this.index.border[F];return H===void 0&&(H=this.index.border[F]=this.model.borders.length,this.model.borders.push(F)),H}},{key:"_addFill",value:function(O){var F=this.map.fill.toXml(O),H=this.index.fill[F];return H===void 0&&(H=this.index.fill[F]=this.model.fills.length,this.model.fills.push(F)),H}}]),R}(u);j.STYLESHEET_ATTRIBUTES={xmlns:"http://schemas.openxmlformats.org/spreadsheetml/2006/main","xmlns:mc":"http://schemas.openxmlformats.org/markup-compatibility/2006","mc:Ignorable":"x14ac x16r2","xmlns:x14ac":"http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac","xmlns:x16r2":"http://schemas.microsoft.com/office/spreadsheetml/2015/02/main"},j.STATIC_XFORMS={cellStyles:new o({tag:"cellStyles",$:{count:1},c:[{tag:"cellStyle",$:{name:"Normal",xfId:0,builtinId:0}}]}),dxfs:new o({tag:"dxfs",$:{count:0}}),tableStyles:new o({tag:"tableStyles",$:{count:0,defaultTableStyle:"TableStyleMedium2",defaultPivotStyle:"PivotStyleLight16"}}),extLst:new o({tag:"extLst",c:[{tag:"ext",$:{uri:"{EB79DEF2-80B8-43e5-95BD-54CBDDF9020C}","xmlns:x14":"http://schemas.microsoft.com/office/spreadsheetml/2009/9/main"},c:[{tag:"x14:slicerStyles",$:{defaultSlicerStyle:"SlicerStyleLight1"}}]},{tag:"ext",$:{uri:"{9260A510-F301-46a8-8635-F512D64BE5F5}","xmlns:x15":"http://schemas.microsoft.com/office/spreadsheetml/2010/11/main"},c:[{tag:"x15:timelineStyles",$:{defaultTimelineStyle:"TimeSlicerStyleLight1"}}]}]})};var L=function(M){b(R,M);var B=_(R);function R(){var P;return l(this,R),P=B.call(this),P.model={styles:[{numFmtId:0,fontId:0,fillId:0,borderId:0,xfId:0}],numFmts:[],fonts:[{size:11,color:{theme:1},name:"Calibri",family:2,scheme:"minor"}],borders:[{}],fills:[{type:"pattern",pattern:"none"},{type:"pattern",pattern:"gray125"}]},P}return m(R,[{key:"parseStream",value:function(O){return O.autodrain(),Promise.resolve()}},{key:"addStyleModel",value:function(O,F){switch(F){case S.ValueType.Date:return this.dateStyleId;default:return 0}}},{key:"getStyleModel",value:function(){return{}}},{key:"dateStyleId",get:function(){if(!this._dateStyleId){var O={numFmtId:k.getDefaultFmtId("mm-dd-yy")};this._dateStyleId=this.model.styles.length,this.model.styles.push(O)}return this._dateStyleId}}]),R}(j);j.Mock=L,n.exports=j},{"../../../doc/enums":7,"../../../utils/xml-stream":27,"../base-xform":31,"../list-xform":70,"../static-xform":119,"./border-xform":126,"./dxf-xform":128,"./fill-xform":129,"./font-xform":130,"./numfmt-xform":131,"./style-xform":133}],135:[function(e,n,i){function a(u){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(u)}function l(u,o){if(!(u instanceof o))throw new TypeError("Cannot call a class as a function")}function d(u,o){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(u){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},p(u)}var S=e("../base-xform"),w=function(u){b(s,u);var o=_(s);function s(c){var f;return l(this,s),f=o.call(this),f.model=c,f}return m(s,[{key:"render",value:function(f,v){if(v=v||this.model,v===!0)f.leafNode("u");else{var k=s.Attributes[v];k&&f.leafNode("u",k)}}},{key:"parseOpen",value:function(f){f.name==="u"&&(this.model=f.attributes.val||!0)}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"u"}}]),s}(S);w.Attributes={single:{},double:{val:"double"},singleAccounting:{val:"singleAccounting"},doubleAccounting:{val:"doubleAccounting"}},n.exports=w},{"../base-xform":31}],136:[function(e,n,i){function a(o){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(c){return typeof c}:a=function(c){return c&&typeof Symbol=="function"&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c},a(o)}function l(o,s){if(!(o instanceof s))throw new TypeError("Cannot call a class as a function")}function d(o,s){for(var c=0;c"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(o){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(c){return c.__proto__||Object.getPrototypeOf(c)},p(o)}var S=e("../base-xform"),w=e("./filter-column-xform"),u=function(o){b(c,o);var s=_(c);function c(){var f;return l(this,c),f=s.call(this),f.map={filterColumn:new w},f}return m(c,[{key:"prepare",value:function(v){var k=this;v.columns.forEach(function(T,C){k.map.filterColumn.prepare(T,{index:C})})}},{key:"render",value:function(v,k){var T=this;return v.openNode(this.tag,{ref:k.autoFilterRef}),k.columns.forEach(function(C){T.map.filterColumn.render(v,C)}),v.closeNode(),!0}},{key:"parseOpen",value:function(v){if(this.parser)return this.parser.parseOpen(v),!0;switch(v.name){case this.tag:return this.model={autoFilterRef:v.attributes.ref,columns:[]},!0;default:if(this.parser=this.map[v.name],this.parser)return this.parseOpen(v),!0;throw new Error("Unexpected xml node in parseOpen: ".concat(JSON.stringify(v)))}}},{key:"parseText",value:function(v){this.parser&&this.parser.parseText(v)}},{key:"parseClose",value:function(v){if(this.parser)return this.parser.parseClose(v)||(this.model.columns.push(this.parser.model),this.parser=void 0),!0;switch(v){case this.tag:return!1;default:throw new Error("Unexpected xml node in parseClose: ".concat(v))}}},{key:"tag",get:function(){return"autoFilter"}}]),c}(S);n.exports=u},{"../base-xform":31,"./filter-column-xform":137}],137:[function(e,n,i){function a(u){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(u)}function l(u,o){if(!(u instanceof o))throw new TypeError("Cannot call a class as a function")}function d(u,o){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(u){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},p(u)}var S=e("../base-xform"),w=function(u){b(s,u);var o=_(s);function s(){return l(this,s),o.apply(this,arguments)}return m(s,[{key:"prepare",value:function(f,v){f.colId=v.index.toString()}},{key:"render",value:function(f,v){return f.leafNode(this.tag,{colId:v.colId,hiddenButton:v.filterButton?"0":"1"}),!0}},{key:"parseOpen",value:function(f){if(f.name===this.tag){var v=f.attributes;return this.model={filterButton:v.hiddenButton==="0"},!0}return!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"filterColumn"}}]),s}(S);n.exports=w},{"../base-xform":31}],138:[function(e,n,i){function a(u){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(u)}function l(u,o){if(!(u instanceof o))throw new TypeError("Cannot call a class as a function")}function d(u,o){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(u){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},p(u)}var S=e("../base-xform"),w=function(u){b(s,u);var o=_(s);function s(){return l(this,s),o.apply(this,arguments)}return m(s,[{key:"prepare",value:function(f,v){f.id=v.index+1}},{key:"render",value:function(f,v){return f.leafNode(this.tag,{id:v.id.toString(),name:v.name,totalsRowLabel:v.totalsRowLabel,totalsRowFunction:v.totalsRowFunction,dxfId:v.dxfId}),!0}},{key:"parseOpen",value:function(f){if(f.name===this.tag){var v=f.attributes;return this.model={name:v.name,totalsRowLabel:v.totalsRowLabel,totalsRowFunction:v.totalsRowFunction,dxfId:v.dxfId},!0}return!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"tableColumn"}}]),s}(S);n.exports=w},{"../base-xform":31}],139:[function(e,n,i){function a(u){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(u)}function l(u,o){if(!(u instanceof o))throw new TypeError("Cannot call a class as a function")}function d(u,o){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function p(u){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},p(u)}var S=e("../base-xform"),w=function(u){b(s,u);var o=_(s);function s(){return l(this,s),o.apply(this,arguments)}return m(s,[{key:"render",value:function(f,v){return f.leafNode(this.tag,{name:v.theme?v.theme:void 0,showFirstColumn:v.showFirstColumn?"1":"0",showLastColumn:v.showLastColumn?"1":"0",showRowStripes:v.showRowStripes?"1":"0",showColumnStripes:v.showColumnStripes?"1":"0"}),!0}},{key:"parseOpen",value:function(f){if(f.name===this.tag){var v=f.attributes;return this.model={theme:v.name?v.name:null,showFirstColumn:v.showFirstColumn==="1",showLastColumn:v.showLastColumn==="1",showRowStripes:v.showRowStripes==="1",showColumnStripes:v.showColumnStripes==="1"},!0}return!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"tableStyleInfo"}}]),s}(S);n.exports=w},{"../base-xform":31}],140:[function(e,n,i){function a(C){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(j){return typeof j}:a=function(j){return j&&typeof Symbol=="function"&&j.constructor===Symbol&&j!==Symbol.prototype?"symbol":typeof j},a(C)}function l(C,D){var j=Object.keys(C);if(Object.getOwnPropertySymbols){var L=Object.getOwnPropertySymbols(C);D&&(L=L.filter(function(M){return Object.getOwnPropertyDescriptor(C,M).enumerable})),j.push.apply(j,L)}return j}function d(C){for(var D=1;D"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function u(C){return u=Object.setPrototypeOf?Object.getPrototypeOf:function(j){return j.__proto__||Object.getPrototypeOf(j)},u(C)}var o=e("../../../utils/xml-stream"),s=e("../base-xform"),c=e("../list-xform"),f=e("./auto-filter-xform"),v=e("./table-column-xform"),k=e("./table-style-info-xform"),T=function(C){g(j,C);var D=x(j);function j(){var L;return b(this,j),L=D.call(this),L.map={autoFilter:new f,tableColumns:new c({tag:"tableColumns",count:!0,empty:!0,childXform:new v}),tableStyleInfo:new k},L}return _(j,[{key:"prepare",value:function(M,B){this.map.autoFilter.prepare(M),this.map.tableColumns.prepare(M.columns,B)}},{key:"render",value:function(M,B){M.openXml(o.StdDocAttributes),M.openNode(this.tag,d(d({},j.TABLE_ATTRIBUTES),{},{id:B.id,name:B.name,displayName:B.displayName||B.name,ref:B.tableRef,totalsRowCount:B.totalsRow?"1":void 0,totalsRowShown:B.totalsRow?void 0:"1",headerRowCount:B.headerRow?"1":"0"})),this.map.autoFilter.render(M,B),this.map.tableColumns.render(M,B.columns),this.map.tableStyleInfo.render(M,B.style),M.closeNode()}},{key:"parseOpen",value:function(M){if(this.parser)return this.parser.parseOpen(M),!0;var B=M.name,R=M.attributes;switch(B){case this.tag:this.reset(),this.model={name:R.name,displayName:R.displayName||R.name,tableRef:R.ref,totalsRow:R.totalsRowCount==="1",headerRow:R.headerRowCount==="1"};break;default:this.parser=this.map[M.name],this.parser&&this.parser.parseOpen(M);break}return!0}},{key:"parseText",value:function(M){this.parser&&this.parser.parseText(M)}},{key:"parseClose",value:function(M){var B=this;if(this.parser)return this.parser.parseClose(M)||(this.parser=void 0),!0;switch(M){case this.tag:return this.model.columns=this.map.tableColumns.model,this.map.autoFilter.model&&(this.model.autoFilterRef=this.map.autoFilter.model.autoFilterRef,this.map.autoFilter.model.columns.forEach(function(R,P){B.model.columns[P].filterButton=R.filterButton})),this.model.style=this.map.tableStyleInfo.model,!1;default:return!0}}},{key:"reconcile",value:function(M,B){M.columns.forEach(function(R){R.dxfId!==void 0&&(R.style=B.styles.getDxfStyle(R.dxfId))})}},{key:"tag",get:function(){return"table"}}]),j}(s);T.TABLE_ATTRIBUTES={xmlns:"http://schemas.openxmlformats.org/spreadsheetml/2006/main","xmlns:mc":"http://schemas.openxmlformats.org/markup-compatibility/2006","mc:Ignorable":"xr xr3","xmlns:xr":"http://schemas.microsoft.com/office/spreadsheetml/2014/revision","xmlns:xr3":"http://schemas.microsoft.com/office/spreadsheetml/2016/revision3"},n.exports=T},{"../../../utils/xml-stream":27,"../base-xform":31,"../list-xform":70,"./auto-filter-xform":136,"./table-column-xform":138,"./table-style-info-xform":139}],141:[function(e,n,i){(function(a,l){function d(z,X,I,N,U,G,te){try{var re=z[G](te),ne=re.value}catch(ge){I(ge);return}re.done?X(ne):Promise.resolve(ne).then(N,U)}function m(z){return function(){var X=this,I=arguments;return new Promise(function(N,U){var G=z.apply(X,I);function te(ne){d(G,N,U,te,re,"next",ne)}function re(ne){d(G,N,U,te,re,"throw",ne)}te(void 0)})}}function b(z,X){if(!(z instanceof X))throw new TypeError("Cannot call a class as a function")}function h(z,X){for(var I=0;I=1)){se.next=6;break}return ne=te.substr(re+1),ge=te.substr(0,re),se.next=6,new Promise(function(J,q){var de=new u;de.on("finish",function(){G.mediaIndex[te]=G.media.length,G.mediaIndex[ge]=G.media.length;var xe={type:"image",name:ge,extension:ne,buffer:de.toBuffer()};G.media.push(xe),J()}),U.on("error",function(xe){q(xe)}),U.pipe(de)});case 6:case"end":return se.stop()}},N)}));function I(N,U,G){return X.apply(this,arguments)}return I}()},{key:"_processDrawingEntry",value:function(){var X=m(regeneratorRuntime.mark(function N(U,G,te){var re,ne;return regeneratorRuntime.wrap(function(ee){for(;;)switch(ee.prev=ee.next){case 0:return re=new B,ee.next=3,re.parseStream(U);case 3:ne=ee.sent,G.drawings[te]=ne;case 5:case"end":return ee.stop()}},N)}));function I(N,U,G){return X.apply(this,arguments)}return I}()},{key:"_processDrawingRelsEntry",value:function(){var X=m(regeneratorRuntime.mark(function N(U,G,te){var re,ne;return regeneratorRuntime.wrap(function(ee){for(;;)switch(ee.prev=ee.next){case 0:return re=new C,ee.next=3,re.parseStream(U);case 3:ne=ee.sent,G.drawingRels[te]=ne;case 5:case"end":return ee.stop()}},N)}));function I(N,U,G){return X.apply(this,arguments)}return I}()},{key:"_processVmlDrawingEntry",value:function(){var X=m(regeneratorRuntime.mark(function N(U,G,te){var re,ne;return regeneratorRuntime.wrap(function(ee){for(;;)switch(ee.prev=ee.next){case 0:return re=new O,ee.next=3,re.parseStream(U);case 3:ne=ee.sent,G.vmlDrawings["../drawings/".concat(te,".vml")]=ne;case 5:case"end":return ee.stop()}},N)}));function I(N,U,G){return X.apply(this,arguments)}return I}()},{key:"_processThemeEntry",value:function(){var X=m(regeneratorRuntime.mark(function N(U,G,te){return regeneratorRuntime.wrap(function(ne){for(;;)switch(ne.prev=ne.next){case 0:return ne.next=2,new Promise(function(ge,ee){var se=new u;U.on("error",ee),se.on("error",ee),se.on("finish",function(){G.themes[te]=se.read().toString(),ge()}),U.pipe(se)});case 2:case"end":return ne.stop()}},N)}));function I(N,U,G){return X.apply(this,arguments)}return I}()},{key:"createInputStream",value:function(){throw new Error("`XLSX#createInputStream` is deprecated. You should use `XLSX#read` instead. This method will be removed in version 5.0. Please follow upgrade instruction: https://github.com/exceljs/exceljs/blob/master/UPGRADE-4.0.md")}},{key:"read",value:function(){var X=m(regeneratorRuntime.mark(function N(U,G){var te,re,ne,ge,ee,se,J,q;return regeneratorRuntime.wrap(function(xe){for(;;)switch(xe.prev=xe.next){case 0:!U[Symbol.asyncIterator]&&U.pipe&&(U=U.pipe(new S)),te=[],re=!0,ne=!1,xe.prev=4,ee=g(U);case 6:return xe.next=8,ee.next();case 8:return se=xe.sent,re=se.done,xe.next=12,se.value;case 12:if(J=xe.sent,re){xe.next=19;break}q=J,te.push(q);case 16:re=!0,xe.next=6;break;case 19:xe.next=25;break;case 21:xe.prev=21,xe.t0=xe.catch(4),ne=!0,ge=xe.t0;case 25:if(xe.prev=25,xe.prev=26,!(!re&&ee.return!=null)){xe.next=30;break}return xe.next=30,ee.return();case 30:if(xe.prev=30,!ne){xe.next=33;break}throw ge;case 33:return xe.finish(30);case 34:return xe.finish(25);case 35:return xe.abrupt("return",this.load(l.concat(te),G));case 36:case"end":return xe.stop()}},N,this,[[4,21,25,35],[26,,30,34]])}));function I(N,U){return X.apply(this,arguments)}return I}()},{key:"load",value:function(){var X=m(regeneratorRuntime.mark(function N(U,G){var te,re,ne,ge,ee,se,J,q,de,xe,ae,fe,Ne,ie,Y,Z,le;return regeneratorRuntime.wrap(function(Ce){for(;;)switch(Ce.prev=Ce.next){case 0:return G&&G.base64?te=l.from(U.toString(),"base64"):te=U,re={worksheets:[],worksheetHash:{},worksheetRels:[],themes:{},media:[],mediaIndex:{},drawings:{},drawingRels:{},comments:{},tables:{},vmlDrawings:{}},Ce.next=4,x.loadAsync(te);case 4:ne=Ce.sent,ge=0,ee=Object.values(ne.files);case 6:if(!(ge0&&(q=new s,ne.render(q,J),U.append(q.xml,{name:"xl/comments".concat(J.id,".xml")}),q=new s,ge.render(q,J),U.append(q.xml,{name:"xl/drawings/vmlDrawing".concat(J.id,".vml")}))});case 5:case"end":return se.stop()}},N)}));function I(N,U){return X.apply(this,arguments)}return I}()},{key:"_finalize",value:function(I){var N=this;return new Promise(function(U,G){I.on("finish",function(){U(N)}),I.on("error",G),I.finalize()})}},{key:"prepareModel",value:function(I,N){I.creator=I.creator||"ExcelJS",I.lastModifiedBy=I.lastModifiedBy||"ExcelJS",I.created=I.created||new Date,I.modified=I.modified||new Date,I.useSharedStrings=N.useSharedStrings!==void 0?N.useSharedStrings:!0,I.useStyles=N.useStyles!==void 0?N.useStyles:!0,I.sharedStrings=new T,I.styles=I.useStyles?new v(!0):new v.Mock;var U=new L,G=new M;U.prepare(I);var te={sharedStrings:I.sharedStrings,styles:I.styles,date1904:I.properties.date1904,drawingsCount:0,media:I.media};te.drawings=I.drawings=[],te.commentRefs=I.commentRefs=[];var re=0;I.tables=[],I.worksheets.forEach(function(ne){ne.tables.forEach(function(ge){re++,ge.target="table".concat(re,".xml"),ge.id=re,I.tables.push(ge)}),G.prepare(ne,te)})}},{key:"write",value:function(){var X=m(regeneratorRuntime.mark(function N(U,G){var te,re;return regeneratorRuntime.wrap(function(ge){for(;;)switch(ge.prev=ge.next){case 0:return G=G||{},te=this.workbook.model,re=new w.ZipWriter(G.zip),re.pipe(U),this.prepareModel(te,G),ge.next=7,this.addContentTypes(re,te);case 7:return ge.next=9,this.addOfficeRels(re,te);case 9:return ge.next=11,this.addWorkbookRels(re,te);case 11:return ge.next=13,this.addWorksheets(re,te);case 13:return ge.next=15,this.addSharedStrings(re,te);case 15:return ge.next=17,this.addDrawings(re,te);case 17:return ge.next=19,this.addTables(re,te);case 19:return ge.next=21,Promise.all([this.addThemes(re,te),this.addStyles(re,te)]);case 21:return ge.next=23,this.addMedia(re,te);case 23:return ge.next=25,Promise.all([this.addApp(re,te),this.addCore(re,te)]);case 25:return ge.next=27,this.addWorkbook(re,te);case 27:return ge.abrupt("return",this._finalize(re));case 28:case"end":return ge.stop()}},N,this)}));function I(N,U){return X.apply(this,arguments)}return I}()},{key:"writeFile",value:function(I,N){var U=this,G=y.createWriteStream(I);return new Promise(function(te,re){G.on("finish",function(){te()}),G.on("error",function(ne){re(ne)}),U.write(G,N).then(function(){G.end()})})}},{key:"writeBuffer",value:function(){var X=m(regeneratorRuntime.mark(function N(U){var G;return regeneratorRuntime.wrap(function(re){for(;;)switch(re.prev=re.next){case 0:return G=new u,re.next=3,this.write(G,U);case 3:return re.abrupt("return",G.read());case 4:case"end":return re.stop()}},N,this)}));function I(N){return X.apply(this,arguments)}return I}()}]),z}();V.RelType=e("./rel-type"),n.exports=V}).call(this,e("_process"),e("buffer").Buffer)},{"../utils/browser-buffer-decode":16,"../utils/stream-buf":23,"../utils/utils":26,"../utils/xml-stream":27,"../utils/zip-stream":28,"./rel-type":30,"./xform/book/workbook-xform":37,"./xform/comment/comments-xform":39,"./xform/comment/vml-notes-xform":44,"./xform/core/app-xform":50,"./xform/core/content-types-xform":51,"./xform/core/core-xform":52,"./xform/core/relationships-xform":54,"./xform/drawing/drawing-xform":61,"./xform/sheet/worksheet-xform":114,"./xform/strings/shared-strings-xform":123,"./xform/style/styles-xform":134,"./xform/table/table-xform":140,"./xml/theme1.js":142,_process:467,buffer:216,fs:215,jszip:399,"readable-stream":491}],142:[function(e,n,i){n.exports=` + `},{}],143:[function(e,n,i){(function(a){function l(s){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(f){return typeof f}:l=function(f){return f&&typeof Symbol=="function"&&f.constructor===Symbol&&f!==Symbol.prototype?"symbol":typeof f},l(s)}function d(s,c){if(!(s instanceof c))throw new TypeError("Cannot call a class as a function")}function m(s,c){for(var f=0;f"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function S(s){return S=Object.setPrototypeOf?Object.getPrototypeOf:function(f){return f.__proto__||Object.getPrototypeOf(f)},S(s)}Object.defineProperty(i,"__esModule",{value:!0}),i.CsvFormatterStream=void 0;var w=e("stream"),u=e("./formatter"),o=function(s){h(f,s);var c=g(f);function f(v){var k;return d(this,f),k=c.call(this,{writableObjectMode:v.objectMode}),k.hasWrittenBOM=!1,k.formatterOptions=v,k.rowFormatter=new u.RowFormatter(v),k.hasWrittenBOM=!v.writeBOM,k}return b(f,[{key:"transform",value:function(k){return this.rowFormatter.rowTransform=k,this}},{key:"_transform",value:function(k,T,C){var D=this,j=!1;try{this.hasWrittenBOM||(this.push(this.formatterOptions.BOM),this.hasWrittenBOM=!0),this.rowFormatter.format(k,function(L,M){return L?(j=!0,C(L)):(M&&M.forEach(function(B){D.push(a.from(B,"utf8"))}),j=!0,C())})}catch(L){if(j)throw L;C(L)}}},{key:"_flush",value:function(k){var T=this;this.rowFormatter.finish(function(C,D){return C?k(C):(D&&D.forEach(function(j){T.push(a.from(j,"utf8"))}),k())})}}]),f}(w.Transform);i.CsvFormatterStream=o}).call(this,e("buffer").Buffer)},{"./formatter":147,buffer:216,stream:506}],144:[function(e,n,i){function a(d,m){if(!(d instanceof m))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(i,"__esModule",{value:!0}),i.FormatterOptions=void 0;var l=function d(){var m=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};a(this,d);var b;this.objectMode=!0,this.delimiter=",",this.rowDelimiter=` +`,this.quote='"',this.escape=this.quote,this.quoteColumns=!1,this.quoteHeaders=this.quoteColumns,this.headers=null,this.includeEndRowDelimiter=!1,this.writeBOM=!1,this.BOM="\uFEFF",this.alwaysWriteHeaders=!1,Object.assign(this,m||{}),typeof(m==null?void 0:m.quoteHeaders)>"u"&&(this.quoteHeaders=this.quoteColumns),(m==null?void 0:m.quote)===!0?this.quote='"':(m==null?void 0:m.quote)===!1&&(this.quote=""),typeof(m==null?void 0:m.escape)!="string"&&(this.escape=this.quote),this.shouldWriteHeaders=!!this.headers&&((b=m.writeHeaders)!==null&&b!==void 0?b:!0),this.headers=Array.isArray(this.headers)?this.headers:null,this.escapedQuote="".concat(this.escape).concat(this.quote)};i.FormatterOptions=l},{}],145:[function(e,n,i){function a(y,x){if(!(y instanceof x))throw new TypeError("Cannot call a class as a function")}function l(y,x){for(var p=0;p1&&arguments[1]!==void 0?arguments[1]:{},o=[],s=new _.Writable({write:function(f,v,k){o.push(f),k()}});return new Promise(function(c,f){s.on("error",f).on("finish",function(){return c(a.concat(o))}),i.write(w,u).pipe(s)})},i.writeToString=function(w,u){return i.writeToBuffer(w,u).then(function(o){return o.toString()})},i.writeToPath=function(w,u,o){var s=g.createWriteStream(w,{encoding:"utf8"});return i.write(u,o).pipe(s)}}).call(this,e("buffer").Buffer)},{"./CsvFormatterStream":143,"./FormatterOptions":144,"./types":149,buffer:216,fs:215,stream:506,util:525}],149:[function(e,n,i){Object.defineProperty(i,"__esModule",{value:!0}),i.isSyncTransform=void 0,i.isSyncTransform=function(a){return a.length===1}},{}],150:[function(e,n,i){(function(a){function l(k){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(C){return typeof C}:l=function(C){return C&&typeof Symbol=="function"&&C.constructor===Symbol&&C!==Symbol.prototype?"symbol":typeof C},l(k)}function d(k,T){if(!(k instanceof T))throw new TypeError("Cannot call a class as a function")}function m(k,T){for(var C=0;C"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function u(k){return u=Object.setPrototypeOf?Object.getPrototypeOf:function(C){return C.__proto__||Object.getPrototypeOf(C)},u(k)}Object.defineProperty(i,"__esModule",{value:!0}),i.CsvParserStream=void 0;var o=e("string_decoder"),s=e("stream"),c=e("./transforms"),f=e("./parser"),v=function(k){g(C,k);var T=x(C);function C(D){var j;return d(this,C),j=T.call(this,{objectMode:D.objectMode}),j.lines="",j.rowCount=0,j.parsedRowCount=0,j.parsedLineCount=0,j.endEmitted=!1,j.headersEmitted=!1,j.parserOptions=D,j.parser=new f.Parser(D),j.headerTransformer=new c.HeaderTransformer(D),j.decoder=new o.StringDecoder(D.encoding),j.rowTransformerValidator=new c.RowTransformerValidator,j}return b(C,[{key:"transform",value:function(j){return this.rowTransformerValidator.rowTransform=j,this}},{key:"validate",value:function(j){return this.rowTransformerValidator.rowValidator=j,this}},{key:"emit",value:function(j){var L;if(j==="end")return this.endEmitted||(this.endEmitted=!0,h(u(C.prototype),"emit",this).call(this,"end",this.rowCount)),!1;for(var M=arguments.length,B=new Array(M>1?M-1:0),R=1;R=B||M.hasHitRowLimit)return L();if(M.parsedLineCount+=1,M.shouldSkipLine)return F();var H=j[O];M.rowCount+=1,M.parsedRowCount+=1;var V=M.rowCount;return M.transformRow(H,function(z,X){if(z)return M.rowCount-=1,F(z);if(!X)return F(new Error("expected transform result"));if(!X.isValid)M.emit("data-invalid",X.row,V,X.reason);else if(X.row)return M.pushRow(X.row,F);return F()})};R(0)}},{key:"transformRow",value:function(j,L){var M=this;try{this.headerTransformer.transform(j,function(B,R){return B?L(B):R?R.isValid?R.row?M.shouldEmitRows?M.rowTransformerValidator.transformAndValidate(R.row,L):M.skipRow(L):(M.rowCount-=1,M.parsedRowCount-=1,L(null,{row:null,isValid:!0})):M.shouldEmitRows?L(null,{isValid:!1,row:j}):M.skipRow(L):L(new Error("Expected result from header transform"))})}catch(B){L(B)}}},{key:"checkAndEmitHeaders",value:function(){!this.headersEmitted&&this.headerTransformer.headers&&(this.headersEmitted=!0,this.emit("headers",this.headerTransformer.headers))}},{key:"skipRow",value:function(j){return this.rowCount-=1,j(null,{row:null,isValid:!0})}},{key:"pushRow",value:function(j,L){try{this.parserOptions.objectMode?this.push(j):this.push(JSON.stringify(j)),L()}catch(M){L(M)}}},{key:"hasHitRowLimit",get:function(){return this.parserOptions.limitRows&&this.rowCount>=this.parserOptions.maxRows}},{key:"shouldEmitRows",get:function(){return this.parsedRowCount>this.parserOptions.skipRows}},{key:"shouldSkipLine",get:function(){return this.parsedLineCount<=this.parserOptions.skipLines}}]),C}(s.Transform);i.CsvParserStream=v}).call(this,e("timers").setImmediate)},{"./parser":162,"./transforms":165,stream:506,string_decoder:520,timers:521}],151:[function(e,n,i){function a(h,_){if(!(h instanceof _))throw new TypeError("Cannot call a class as a function")}var l=function(h){return h&&h.__esModule?h:{default:h}};Object.defineProperty(i,"__esModule",{value:!0}),i.ParserOptions=void 0;var d=l(e("lodash.escaperegexp")),m=l(e("lodash.isnil")),b=function h(_){a(this,h);var g;if(this.objectMode=!0,this.delimiter=",",this.ignoreEmpty=!1,this.quote='"',this.escape=null,this.escapeChar=this.quote,this.comment=null,this.supportsComments=!1,this.ltrim=!1,this.rtrim=!1,this.trim=!1,this.headers=null,this.renameHeaders=!1,this.strictColumnHandling=!1,this.discardUnmappedColumns=!1,this.carriageReturn="\r",this.encoding="utf8",this.limitRows=!1,this.maxRows=0,this.skipLines=0,this.skipRows=0,Object.assign(this,_||{}),this.delimiter.length>1)throw new Error("delimiter option must be one character long");this.escapedDelimiter=d.default(this.delimiter),this.escapeChar=(g=this.escape)!==null&&g!==void 0?g:this.quote,this.supportsComments=!m.default(this.comment),this.NEXT_TOKEN_REGEXP=new RegExp("([^\\s]|\\r\\n|\\n|\\r|".concat(this.escapedDelimiter,")")),this.maxRows>0&&(this.limitRows=!0)};i.ParserOptions=b},{"lodash.escaperegexp":426,"lodash.isnil":431}],152:[function(e,n,i){var a=Object.create?function(p,S,w,u){u===void 0&&(u=w),Object.defineProperty(p,u,{enumerable:!0,get:function(){return S[w]}})}:function(p,S,w,u){u===void 0&&(u=w),p[u]=S[w]},l=Object.create?function(p,S){Object.defineProperty(p,"default",{enumerable:!0,value:S})}:function(p,S){p.default=S},d=function(p){if(p&&p.__esModule)return p;var S={};if(p!=null)for(var w in p)w!=="default"&&Object.hasOwnProperty.call(p,w)&&a(S,p,w);return l(S,p),S},m=function(p,S){for(var w in p)w!=="default"&&!S.hasOwnProperty(w)&&a(S,p,w)};Object.defineProperty(i,"__esModule",{value:!0}),i.parseString=i.parseFile=i.parseStream=i.parse=void 0;var b=d(e("fs")),h=e("stream"),_=e("./ParserOptions"),g=e("./CsvParserStream");m(e("./types"),i);var y=e("./CsvParserStream");Object.defineProperty(i,"CsvParserStream",{enumerable:!0,get:function(){return y.CsvParserStream}});var x=e("./ParserOptions");Object.defineProperty(i,"ParserOptions",{enumerable:!0,get:function(){return x.ParserOptions}}),i.parse=function(p){return new g.CsvParserStream(new _.ParserOptions(p))},i.parseStream=function(p,S){return p.pipe(new g.CsvParserStream(new _.ParserOptions(S)))},i.parseFile=function(p){var S=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return b.createReadStream(p).pipe(new g.CsvParserStream(new _.ParserOptions(S)))},i.parseString=function(p,S){var w=new h.Readable;return w.push(p),w.push(null),w.pipe(new g.CsvParserStream(new _.ParserOptions(S)))}},{"./CsvParserStream":150,"./ParserOptions":151,"./types":166,fs:215,stream:506}],153:[function(e,n,i){function a(y,x){if(!(y instanceof x))throw new TypeError("Cannot call a class as a function")}function l(y,x){for(var p=0;pthis.cursor}},{key:"nextNonSpaceToken",get:function(){var y=this.lineFromCursor,x=this.parserOptions.NEXT_TOKEN_REGEXP;if(y.search(x)===-1)return null;var p=x.exec(y);if(p==null)return null;var S=p[1],w=this.cursor+(p.index||0);return new m.Token({token:S,startCursor:w,endCursor:w+S.length-1})}},{key:"nextCharacterToken",get:function(){var y=this.cursor,x=this.lineLength;return x<=y?null:new m.Token({token:this.line[y],startCursor:y,endCursor:y})}},{key:"lineFromCursor",get:function(){return this.line.substr(this.cursor)}}]),_}();i.Scanner=h},{"./Token":156}],156:[function(e,n,i){function a(b,h){if(!(b instanceof h))throw new TypeError("Cannot call a class as a function")}function l(b,h){for(var _=0;_this.headersLength){if(!w.strictColumnHandling)throw new Error("Unexpected Error: column header mismatch expected: ".concat(this.headersLength," columns got: ").concat(S.length));return{row:S,isValid:!1,reason:"Column header mismatch expected: ".concat(this.headersLength," columns got: ").concat(S.length)}}return w.strictColumnHandling&&S.length1});throw new Error("Duplicate headers found ".concat(JSON.stringify(s)))}this.headers=S,this.receivedHeaders=!0,this.headersLength=((w=this.headers)===null||w===void 0?void 0:w.length)||0}}]),x}();i.HeaderTransformer=y},{"lodash.groupby":427,"lodash.isfunction":430,"lodash.isundefined":432,"lodash.uniq":433}],164:[function(e,n,i){function a(g,y){if(!(g instanceof y))throw new TypeError("Cannot call a class as a function")}function l(g,y){for(var x=0;x>6],u=(S&32)===0;if((S&31)===31){var o=S;for(S=0;(o&128)===128;){if(o=x.readUInt8(p),x.isError(o))return o;S<<=7,S|=o&127}}else S&=31;var s=b.tag[S];return{cls:w,primitive:u,tag:S,tagStr:s}}function y(x,p,S){var w=x.readUInt8(S);if(x.isError(w))return w;if(!p&&w===128)return null;if(!(w&128))return w;var u=w&127;if(u>4)return x.error("length octect is too long");w=0;for(var o=0;o=256;c>>=8)s++;var f=l.alloc(1+1+s);f[0]=u,f[1]=128|s;for(var v=1+s,k=w.length;k>0;v--,k>>=8)f[v]=k&255;return this._createEncoderBuffer([f,w])},h.prototype._encodeStr=function(x,p){if(p==="bitstr")return this._createEncoderBuffer([x.unused|0,x.data]);if(p==="bmpstr"){for(var S=l.alloc(x.length*2),w=0;w=40)return this.reporter.error("Second objid identifier OOB");x.splice(0,2,x[0]*40+x[1])}for(var o=0,s=0;s=128;c>>=7)o++}for(var f=l.alloc(o),v=f.length-1,k=x.length-1;k>=0;k--){var T=x[k];for(f[v--]=T&127;(T>>=7)>0;)f[v--]=128|T&127}return this._createEncoderBuffer(f)};function _(y){return y<10?"0"+y:y}h.prototype._encodeTime=function(x,p){var S,w=new Date(x);return p==="gentime"?S=[_(w.getUTCFullYear()),_(w.getUTCMonth()+1),_(w.getUTCDate()),_(w.getUTCHours()),_(w.getUTCMinutes()),_(w.getUTCSeconds()),"Z"].join(""):p==="utctime"?S=[_(w.getUTCFullYear()%100),_(w.getUTCMonth()+1),_(w.getUTCDate()),_(w.getUTCHours()),_(w.getUTCMinutes()),_(w.getUTCSeconds()),"Z"].join(""):this.reporter.error("Encoding "+p+" time is not supported yet"),this._encodeStr(S,"octstr")},h.prototype._encodeNull=function(){return this._createEncoderBuffer("")},h.prototype._encodeInt=function(x,p){if(typeof x=="string"){if(!p)return this.reporter.error("String int or enum given, but no values map");if(!p.hasOwnProperty(x))return this.reporter.error("Values map doesn't contain: "+JSON.stringify(x));x=p[x]}if(typeof x!="number"&&!l.isBuffer(x)){var S=x.toArray();!x.sign&&S[0]&128&&S.unshift(0),x=l.from(S)}if(l.isBuffer(x)){var w=x.length;x.length===0&&w++;var u=l.alloc(w);return x.copy(u),x.length===0&&(u[0]=0),this._createEncoderBuffer(u)}if(x<128)return this._createEncoderBuffer(x);if(x<256)return this._createEncoderBuffer([0,x]);for(var o=1,s=x;s>=256;s>>=8)o++;for(var c=new Array(o),f=c.length-1;f>=0;f--)c[f]=x&255,x>>=8;return c[0]&128&&c.unshift(0),this._createEncoderBuffer(l.from(c))},h.prototype._encodeBool=function(x){return this._createEncoderBuffer(x?255:0)},h.prototype._use=function(x,p){return typeof x=="function"&&(x=x(p)),x._getEncoder("der").tree},h.prototype._skipDefault=function(x,p,S){var w=this._baseState,u;if(w.default===null)return!1;var o=x.join();if(w.defaultBuffer===void 0&&(w.defaultBuffer=this._encodeValue(w.default,p,S).join()),o.length!==w.defaultBuffer.length)return!1;for(u=0;u=31?S.error("Multi-octet tag encoding unsupported"):(x||(w|=32),w|=m.tagClassByName[p||"universal"]<<6,w)}},{"../base/node":171,"../constants/der":173,inherits:387,"safer-buffer":495}],179:[function(e,n,i){var a=i;a.der=e("./der"),a.pem=e("./pem")},{"./der":178,"./pem":180}],180:[function(e,n,i){var a=e("inherits"),l=e("./der");function d(m){l.call(this,m),this.enc="pem"}a(d,l),n.exports=d,d.prototype.encode=function(b,h){for(var _=l.prototype.encode.call(this,b),g=_.toString("base64"),y=["-----BEGIN "+h.label+"-----"],x=0;x0?R:P},h.min=function(R,P){return R.cmp(P)<0?R:P},h.prototype._init=function(R,P,O){if(typeof R=="number")return this._initNumber(R,P,O);if(a(R)==="object")return this._initArray(R,P,O);P==="hex"&&(P=16),m(P===(P|0)&&P>=2&&P<=36),R=R.toString().replace(/\s+/g,"");var F=0;R[0]==="-"&&F++,P===16?this._parseHex(R,F):this._parseBase(R,P,F),R[0]==="-"&&(this.negative=1),this.strip(),O==="le"&&this._initArray(this.toArray(),P,O)},h.prototype._initNumber=function(R,P,O){R<0&&(this.negative=1,R=-R),R<67108864?(this.words=[R&67108863],this.length=1):R<4503599627370496?(this.words=[R&67108863,R/67108864&67108863],this.length=2):(m(R<9007199254740992),this.words=[R&67108863,R/67108864&67108863,1],this.length=3),O==="le"&&this._initArray(this.toArray(),P,O)},h.prototype._initArray=function(R,P,O){if(m(typeof R.length=="number"),R.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(R.length/3),this.words=new Array(this.length);for(var F=0;F=0;F-=3)V=R[F]|R[F-1]<<8|R[F-2]<<16,this.words[H]|=V<>>26-z&67108863,z+=24,z>=26&&(z-=26,H++);else if(O==="le")for(F=0,H=0;F>>26-z&67108863,z+=24,z>=26&&(z-=26,H++);return this.strip()};function g(B,R,P){for(var O=0,F=Math.min(B.length,P),H=R;H=49&&V<=54?O|=V-49+10:V>=17&&V<=22?O|=V-17+10:O|=V&15}return O}h.prototype._parseHex=function(R,P){this.length=Math.ceil((R.length-P)/6),this.words=new Array(this.length);for(var O=0;O=P;O-=6)H=g(R,O,O+6),this.words[F]|=H<>>26-V&4194303,V+=24,V>=26&&(V-=26,F++);O+6!==P&&(H=g(R,P,O+6),this.words[F]|=H<>>26-V&4194303),this.strip()};function y(B,R,P,O){for(var F=0,H=Math.min(B.length,P),V=R;V=49?F+=z-49+10:z>=17?F+=z-17+10:F+=z}return F}h.prototype._parseBase=function(R,P,O){this.words=[0],this.length=1;for(var F=0,H=1;H<=67108863;H*=P)F++;F--,H=H/P|0;for(var V=R.length-O,z=V%F,X=Math.min(V,V-z)+O,I=0,N=O;N1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},h.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},h.prototype.inspect=function(){return(this.red?""};var x=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],p=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],S=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];h.prototype.toString=function(R,P){R=R||10,P=P|0||1;var O;if(R===16||R==="hex"){O="";for(var F=0,H=0,V=0;V>>24-F&16777215,H!==0||V!==this.length-1?O=x[6-X.length]+X+O:O=X+O,F+=2,F>=26&&(F-=26,V--)}for(H!==0&&(O=H.toString(16)+O);O.length%P!==0;)O="0"+O;return this.negative!==0&&(O="-"+O),O}if(R===(R|0)&&R>=2&&R<=36){var I=p[R],N=S[R];O="";var U=this.clone();for(U.negative=0;!U.isZero();){var G=U.modn(N).toString(R);U=U.idivn(N),U.isZero()?O=G+O:O=x[I-G.length]+G+O}for(this.isZero()&&(O="0"+O);O.length%P!==0;)O="0"+O;return this.negative!==0&&(O="-"+O),O}m(!1,"Base should be between 2 and 36")},h.prototype.toNumber=function(){var R=this.words[0];return this.length===2?R+=this.words[1]*67108864:this.length===3&&this.words[2]===1?R+=4503599627370496+this.words[1]*67108864:this.length>2&&m(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-R:R},h.prototype.toJSON=function(){return this.toString(16)},h.prototype.toBuffer=function(R,P){return m(typeof _<"u"),this.toArrayLike(_,R,P)},h.prototype.toArray=function(R,P){return this.toArrayLike(Array,R,P)},h.prototype.toArrayLike=function(R,P,O){var F=this.byteLength(),H=O||Math.max(1,F);m(F<=H,"byte array longer than desired length"),m(H>0,"Requested array length <= 0"),this.strip();var V=P==="le",z=new R(H),X,I,N=this.clone();if(V){for(I=0;!N.isZero();I++)X=N.andln(255),N.iushrn(8),z[I]=X;for(;I=4096&&(O+=13,P>>>=13),P>=64&&(O+=7,P>>>=7),P>=8&&(O+=4,P>>>=4),P>=2&&(O+=2,P>>>=2),O+P},h.prototype._zeroBits=function(R){if(R===0)return 26;var P=R,O=0;return P&8191||(O+=13,P>>>=13),P&127||(O+=7,P>>>=7),P&15||(O+=4,P>>>=4),P&3||(O+=2,P>>>=2),P&1||O++,O},h.prototype.bitLength=function(){var R=this.words[this.length-1],P=this._countBits(R);return(this.length-1)*26+P};function w(B){for(var R=new Array(B.bitLength()),P=0;P>>F}return R}h.prototype.zeroBits=function(){if(this.isZero())return 0;for(var R=0,P=0;PR.length?this.clone().ior(R):R.clone().ior(this)},h.prototype.uor=function(R){return this.length>R.length?this.clone().iuor(R):R.clone().iuor(this)},h.prototype.iuand=function(R){var P;this.length>R.length?P=R:P=this;for(var O=0;OR.length?this.clone().iand(R):R.clone().iand(this)},h.prototype.uand=function(R){return this.length>R.length?this.clone().iuand(R):R.clone().iuand(this)},h.prototype.iuxor=function(R){var P,O;this.length>R.length?(P=this,O=R):(P=R,O=this);for(var F=0;FR.length?this.clone().ixor(R):R.clone().ixor(this)},h.prototype.uxor=function(R){return this.length>R.length?this.clone().iuxor(R):R.clone().iuxor(this)},h.prototype.inotn=function(R){m(typeof R=="number"&&R>=0);var P=Math.ceil(R/26)|0,O=R%26;this._expand(P),O>0&&P--;for(var F=0;F0&&(this.words[F]=~this.words[F]&67108863>>26-O),this.strip()},h.prototype.notn=function(R){return this.clone().inotn(R)},h.prototype.setn=function(R,P){m(typeof R=="number"&&R>=0);var O=R/26|0,F=R%26;return this._expand(O+1),P?this.words[O]=this.words[O]|1<R.length?(O=this,F=R):(O=R,F=this);for(var H=0,V=0;V>>26;for(;H!==0&&V>>26;if(this.length=O.length,H!==0)this.words[this.length]=H,this.length++;else if(O!==this)for(;VR.length?this.clone().iadd(R):R.clone().iadd(this)},h.prototype.isub=function(R){if(R.negative!==0){R.negative=0;var P=this.iadd(R);return R.negative=1,P._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(R),this.negative=1,this._normSign();var O=this.cmp(R);if(O===0)return this.negative=0,this.length=1,this.words[0]=0,this;var F,H;O>0?(F=this,H=R):(F=R,H=this);for(var V=0,z=0;z>26,this.words[z]=P&67108863;for(;V!==0&&z>26,this.words[z]=P&67108863;if(V===0&&z>>26,U=X&67108863,G=Math.min(I,R.length-1),te=Math.max(0,I-B.length+1);te<=G;te++){var re=I-te|0;F=B.words[re]|0,H=R.words[te]|0,V=F*H+U,N+=V/67108864|0,U=V&67108863}P.words[I]=U|0,X=N|0}return X!==0?P.words[I]=X|0:P.length--,P.strip()}var o=function(R,P,O){var F=R.words,H=P.words,V=O.words,z=0,X,I,N,U=F[0]|0,G=U&8191,te=U>>>13,re=F[1]|0,ne=re&8191,ge=re>>>13,ee=F[2]|0,se=ee&8191,J=ee>>>13,q=F[3]|0,de=q&8191,xe=q>>>13,ae=F[4]|0,fe=ae&8191,Ne=ae>>>13,ie=F[5]|0,Y=ie&8191,Z=ie>>>13,le=F[6]|0,Re=le&8191,Ce=le>>>13,Ge=F[7]|0,st=Ge&8191,vt=Ge>>>13,ft=F[8]|0,pt=ft&8191,et=ft>>>13,tt=F[9]|0,ct=tt&8191,gt=tt>>>13,he=H[0]|0,De=he&8191,Oe=he>>>13,Ie=H[1]|0,be=Ie&8191,Le=Ie>>>13,oe=H[2]|0,Qe=oe&8191,_t=oe>>>13,K=H[3]|0,je=K&8191,Ze=K>>>13,pe=H[4]|0,Ae=pe&8191,Xe=pe>>>13,kt=H[5]|0,ut=kt&8191,bt=kt>>>13,Bt=H[6]|0,Lt=Bt&8191,ue=Bt>>>13,ye=H[7]|0,ve=ye&8191,we=ye>>>13,Ee=H[8]|0,Se=Ee&8191,We=Ee>>>13,Je=H[9]|0,Be=Je&8191,He=Je>>>13;O.negative=R.negative^P.negative,O.length=19,X=Math.imul(G,De),I=Math.imul(G,Oe),I=I+Math.imul(te,De)|0,N=Math.imul(te,Oe);var $e=(z+X|0)+((I&8191)<<13)|0;z=(N+(I>>>13)|0)+($e>>>26)|0,$e&=67108863,X=Math.imul(ne,De),I=Math.imul(ne,Oe),I=I+Math.imul(ge,De)|0,N=Math.imul(ge,Oe),X=X+Math.imul(G,be)|0,I=I+Math.imul(G,Le)|0,I=I+Math.imul(te,be)|0,N=N+Math.imul(te,Le)|0;var nt=(z+X|0)+((I&8191)<<13)|0;z=(N+(I>>>13)|0)+(nt>>>26)|0,nt&=67108863,X=Math.imul(se,De),I=Math.imul(se,Oe),I=I+Math.imul(J,De)|0,N=Math.imul(J,Oe),X=X+Math.imul(ne,be)|0,I=I+Math.imul(ne,Le)|0,I=I+Math.imul(ge,be)|0,N=N+Math.imul(ge,Le)|0,X=X+Math.imul(G,Qe)|0,I=I+Math.imul(G,_t)|0,I=I+Math.imul(te,Qe)|0,N=N+Math.imul(te,_t)|0;var Et=(z+X|0)+((I&8191)<<13)|0;z=(N+(I>>>13)|0)+(Et>>>26)|0,Et&=67108863,X=Math.imul(de,De),I=Math.imul(de,Oe),I=I+Math.imul(xe,De)|0,N=Math.imul(xe,Oe),X=X+Math.imul(se,be)|0,I=I+Math.imul(se,Le)|0,I=I+Math.imul(J,be)|0,N=N+Math.imul(J,Le)|0,X=X+Math.imul(ne,Qe)|0,I=I+Math.imul(ne,_t)|0,I=I+Math.imul(ge,Qe)|0,N=N+Math.imul(ge,_t)|0,X=X+Math.imul(G,je)|0,I=I+Math.imul(G,Ze)|0,I=I+Math.imul(te,je)|0,N=N+Math.imul(te,Ze)|0;var Rt=(z+X|0)+((I&8191)<<13)|0;z=(N+(I>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,X=Math.imul(fe,De),I=Math.imul(fe,Oe),I=I+Math.imul(Ne,De)|0,N=Math.imul(Ne,Oe),X=X+Math.imul(de,be)|0,I=I+Math.imul(de,Le)|0,I=I+Math.imul(xe,be)|0,N=N+Math.imul(xe,Le)|0,X=X+Math.imul(se,Qe)|0,I=I+Math.imul(se,_t)|0,I=I+Math.imul(J,Qe)|0,N=N+Math.imul(J,_t)|0,X=X+Math.imul(ne,je)|0,I=I+Math.imul(ne,Ze)|0,I=I+Math.imul(ge,je)|0,N=N+Math.imul(ge,Ze)|0,X=X+Math.imul(G,Ae)|0,I=I+Math.imul(G,Xe)|0,I=I+Math.imul(te,Ae)|0,N=N+Math.imul(te,Xe)|0;var wt=(z+X|0)+((I&8191)<<13)|0;z=(N+(I>>>13)|0)+(wt>>>26)|0,wt&=67108863,X=Math.imul(Y,De),I=Math.imul(Y,Oe),I=I+Math.imul(Z,De)|0,N=Math.imul(Z,Oe),X=X+Math.imul(fe,be)|0,I=I+Math.imul(fe,Le)|0,I=I+Math.imul(Ne,be)|0,N=N+Math.imul(Ne,Le)|0,X=X+Math.imul(de,Qe)|0,I=I+Math.imul(de,_t)|0,I=I+Math.imul(xe,Qe)|0,N=N+Math.imul(xe,_t)|0,X=X+Math.imul(se,je)|0,I=I+Math.imul(se,Ze)|0,I=I+Math.imul(J,je)|0,N=N+Math.imul(J,Ze)|0,X=X+Math.imul(ne,Ae)|0,I=I+Math.imul(ne,Xe)|0,I=I+Math.imul(ge,Ae)|0,N=N+Math.imul(ge,Xe)|0,X=X+Math.imul(G,ut)|0,I=I+Math.imul(G,bt)|0,I=I+Math.imul(te,ut)|0,N=N+Math.imul(te,bt)|0;var Ct=(z+X|0)+((I&8191)<<13)|0;z=(N+(I>>>13)|0)+(Ct>>>26)|0,Ct&=67108863,X=Math.imul(Re,De),I=Math.imul(Re,Oe),I=I+Math.imul(Ce,De)|0,N=Math.imul(Ce,Oe),X=X+Math.imul(Y,be)|0,I=I+Math.imul(Y,Le)|0,I=I+Math.imul(Z,be)|0,N=N+Math.imul(Z,Le)|0,X=X+Math.imul(fe,Qe)|0,I=I+Math.imul(fe,_t)|0,I=I+Math.imul(Ne,Qe)|0,N=N+Math.imul(Ne,_t)|0,X=X+Math.imul(de,je)|0,I=I+Math.imul(de,Ze)|0,I=I+Math.imul(xe,je)|0,N=N+Math.imul(xe,Ze)|0,X=X+Math.imul(se,Ae)|0,I=I+Math.imul(se,Xe)|0,I=I+Math.imul(J,Ae)|0,N=N+Math.imul(J,Xe)|0,X=X+Math.imul(ne,ut)|0,I=I+Math.imul(ne,bt)|0,I=I+Math.imul(ge,ut)|0,N=N+Math.imul(ge,bt)|0,X=X+Math.imul(G,Lt)|0,I=I+Math.imul(G,ue)|0,I=I+Math.imul(te,Lt)|0,N=N+Math.imul(te,ue)|0;var Xt=(z+X|0)+((I&8191)<<13)|0;z=(N+(I>>>13)|0)+(Xt>>>26)|0,Xt&=67108863,X=Math.imul(st,De),I=Math.imul(st,Oe),I=I+Math.imul(vt,De)|0,N=Math.imul(vt,Oe),X=X+Math.imul(Re,be)|0,I=I+Math.imul(Re,Le)|0,I=I+Math.imul(Ce,be)|0,N=N+Math.imul(Ce,Le)|0,X=X+Math.imul(Y,Qe)|0,I=I+Math.imul(Y,_t)|0,I=I+Math.imul(Z,Qe)|0,N=N+Math.imul(Z,_t)|0,X=X+Math.imul(fe,je)|0,I=I+Math.imul(fe,Ze)|0,I=I+Math.imul(Ne,je)|0,N=N+Math.imul(Ne,Ze)|0,X=X+Math.imul(de,Ae)|0,I=I+Math.imul(de,Xe)|0,I=I+Math.imul(xe,Ae)|0,N=N+Math.imul(xe,Xe)|0,X=X+Math.imul(se,ut)|0,I=I+Math.imul(se,bt)|0,I=I+Math.imul(J,ut)|0,N=N+Math.imul(J,bt)|0,X=X+Math.imul(ne,Lt)|0,I=I+Math.imul(ne,ue)|0,I=I+Math.imul(ge,Lt)|0,N=N+Math.imul(ge,ue)|0,X=X+Math.imul(G,ve)|0,I=I+Math.imul(G,we)|0,I=I+Math.imul(te,ve)|0,N=N+Math.imul(te,we)|0;var zt=(z+X|0)+((I&8191)<<13)|0;z=(N+(I>>>13)|0)+(zt>>>26)|0,zt&=67108863,X=Math.imul(pt,De),I=Math.imul(pt,Oe),I=I+Math.imul(et,De)|0,N=Math.imul(et,Oe),X=X+Math.imul(st,be)|0,I=I+Math.imul(st,Le)|0,I=I+Math.imul(vt,be)|0,N=N+Math.imul(vt,Le)|0,X=X+Math.imul(Re,Qe)|0,I=I+Math.imul(Re,_t)|0,I=I+Math.imul(Ce,Qe)|0,N=N+Math.imul(Ce,_t)|0,X=X+Math.imul(Y,je)|0,I=I+Math.imul(Y,Ze)|0,I=I+Math.imul(Z,je)|0,N=N+Math.imul(Z,Ze)|0,X=X+Math.imul(fe,Ae)|0,I=I+Math.imul(fe,Xe)|0,I=I+Math.imul(Ne,Ae)|0,N=N+Math.imul(Ne,Xe)|0,X=X+Math.imul(de,ut)|0,I=I+Math.imul(de,bt)|0,I=I+Math.imul(xe,ut)|0,N=N+Math.imul(xe,bt)|0,X=X+Math.imul(se,Lt)|0,I=I+Math.imul(se,ue)|0,I=I+Math.imul(J,Lt)|0,N=N+Math.imul(J,ue)|0,X=X+Math.imul(ne,ve)|0,I=I+Math.imul(ne,we)|0,I=I+Math.imul(ge,ve)|0,N=N+Math.imul(ge,we)|0,X=X+Math.imul(G,Se)|0,I=I+Math.imul(G,We)|0,I=I+Math.imul(te,Se)|0,N=N+Math.imul(te,We)|0;var or=(z+X|0)+((I&8191)<<13)|0;z=(N+(I>>>13)|0)+(or>>>26)|0,or&=67108863,X=Math.imul(ct,De),I=Math.imul(ct,Oe),I=I+Math.imul(gt,De)|0,N=Math.imul(gt,Oe),X=X+Math.imul(pt,be)|0,I=I+Math.imul(pt,Le)|0,I=I+Math.imul(et,be)|0,N=N+Math.imul(et,Le)|0,X=X+Math.imul(st,Qe)|0,I=I+Math.imul(st,_t)|0,I=I+Math.imul(vt,Qe)|0,N=N+Math.imul(vt,_t)|0,X=X+Math.imul(Re,je)|0,I=I+Math.imul(Re,Ze)|0,I=I+Math.imul(Ce,je)|0,N=N+Math.imul(Ce,Ze)|0,X=X+Math.imul(Y,Ae)|0,I=I+Math.imul(Y,Xe)|0,I=I+Math.imul(Z,Ae)|0,N=N+Math.imul(Z,Xe)|0,X=X+Math.imul(fe,ut)|0,I=I+Math.imul(fe,bt)|0,I=I+Math.imul(Ne,ut)|0,N=N+Math.imul(Ne,bt)|0,X=X+Math.imul(de,Lt)|0,I=I+Math.imul(de,ue)|0,I=I+Math.imul(xe,Lt)|0,N=N+Math.imul(xe,ue)|0,X=X+Math.imul(se,ve)|0,I=I+Math.imul(se,we)|0,I=I+Math.imul(J,ve)|0,N=N+Math.imul(J,we)|0,X=X+Math.imul(ne,Se)|0,I=I+Math.imul(ne,We)|0,I=I+Math.imul(ge,Se)|0,N=N+Math.imul(ge,We)|0,X=X+Math.imul(G,Be)|0,I=I+Math.imul(G,He)|0,I=I+Math.imul(te,Be)|0,N=N+Math.imul(te,He)|0;var gr=(z+X|0)+((I&8191)<<13)|0;z=(N+(I>>>13)|0)+(gr>>>26)|0,gr&=67108863,X=Math.imul(ct,be),I=Math.imul(ct,Le),I=I+Math.imul(gt,be)|0,N=Math.imul(gt,Le),X=X+Math.imul(pt,Qe)|0,I=I+Math.imul(pt,_t)|0,I=I+Math.imul(et,Qe)|0,N=N+Math.imul(et,_t)|0,X=X+Math.imul(st,je)|0,I=I+Math.imul(st,Ze)|0,I=I+Math.imul(vt,je)|0,N=N+Math.imul(vt,Ze)|0,X=X+Math.imul(Re,Ae)|0,I=I+Math.imul(Re,Xe)|0,I=I+Math.imul(Ce,Ae)|0,N=N+Math.imul(Ce,Xe)|0,X=X+Math.imul(Y,ut)|0,I=I+Math.imul(Y,bt)|0,I=I+Math.imul(Z,ut)|0,N=N+Math.imul(Z,bt)|0,X=X+Math.imul(fe,Lt)|0,I=I+Math.imul(fe,ue)|0,I=I+Math.imul(Ne,Lt)|0,N=N+Math.imul(Ne,ue)|0,X=X+Math.imul(de,ve)|0,I=I+Math.imul(de,we)|0,I=I+Math.imul(xe,ve)|0,N=N+Math.imul(xe,we)|0,X=X+Math.imul(se,Se)|0,I=I+Math.imul(se,We)|0,I=I+Math.imul(J,Se)|0,N=N+Math.imul(J,We)|0,X=X+Math.imul(ne,Be)|0,I=I+Math.imul(ne,He)|0,I=I+Math.imul(ge,Be)|0,N=N+Math.imul(ge,He)|0;var $r=(z+X|0)+((I&8191)<<13)|0;z=(N+(I>>>13)|0)+($r>>>26)|0,$r&=67108863,X=Math.imul(ct,Qe),I=Math.imul(ct,_t),I=I+Math.imul(gt,Qe)|0,N=Math.imul(gt,_t),X=X+Math.imul(pt,je)|0,I=I+Math.imul(pt,Ze)|0,I=I+Math.imul(et,je)|0,N=N+Math.imul(et,Ze)|0,X=X+Math.imul(st,Ae)|0,I=I+Math.imul(st,Xe)|0,I=I+Math.imul(vt,Ae)|0,N=N+Math.imul(vt,Xe)|0,X=X+Math.imul(Re,ut)|0,I=I+Math.imul(Re,bt)|0,I=I+Math.imul(Ce,ut)|0,N=N+Math.imul(Ce,bt)|0,X=X+Math.imul(Y,Lt)|0,I=I+Math.imul(Y,ue)|0,I=I+Math.imul(Z,Lt)|0,N=N+Math.imul(Z,ue)|0,X=X+Math.imul(fe,ve)|0,I=I+Math.imul(fe,we)|0,I=I+Math.imul(Ne,ve)|0,N=N+Math.imul(Ne,we)|0,X=X+Math.imul(de,Se)|0,I=I+Math.imul(de,We)|0,I=I+Math.imul(xe,Se)|0,N=N+Math.imul(xe,We)|0,X=X+Math.imul(se,Be)|0,I=I+Math.imul(se,He)|0,I=I+Math.imul(J,Be)|0,N=N+Math.imul(J,He)|0;var Kr=(z+X|0)+((I&8191)<<13)|0;z=(N+(I>>>13)|0)+(Kr>>>26)|0,Kr&=67108863,X=Math.imul(ct,je),I=Math.imul(ct,Ze),I=I+Math.imul(gt,je)|0,N=Math.imul(gt,Ze),X=X+Math.imul(pt,Ae)|0,I=I+Math.imul(pt,Xe)|0,I=I+Math.imul(et,Ae)|0,N=N+Math.imul(et,Xe)|0,X=X+Math.imul(st,ut)|0,I=I+Math.imul(st,bt)|0,I=I+Math.imul(vt,ut)|0,N=N+Math.imul(vt,bt)|0,X=X+Math.imul(Re,Lt)|0,I=I+Math.imul(Re,ue)|0,I=I+Math.imul(Ce,Lt)|0,N=N+Math.imul(Ce,ue)|0,X=X+Math.imul(Y,ve)|0,I=I+Math.imul(Y,we)|0,I=I+Math.imul(Z,ve)|0,N=N+Math.imul(Z,we)|0,X=X+Math.imul(fe,Se)|0,I=I+Math.imul(fe,We)|0,I=I+Math.imul(Ne,Se)|0,N=N+Math.imul(Ne,We)|0,X=X+Math.imul(de,Be)|0,I=I+Math.imul(de,He)|0,I=I+Math.imul(xe,Be)|0,N=N+Math.imul(xe,He)|0;var Mt=(z+X|0)+((I&8191)<<13)|0;z=(N+(I>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,X=Math.imul(ct,Ae),I=Math.imul(ct,Xe),I=I+Math.imul(gt,Ae)|0,N=Math.imul(gt,Xe),X=X+Math.imul(pt,ut)|0,I=I+Math.imul(pt,bt)|0,I=I+Math.imul(et,ut)|0,N=N+Math.imul(et,bt)|0,X=X+Math.imul(st,Lt)|0,I=I+Math.imul(st,ue)|0,I=I+Math.imul(vt,Lt)|0,N=N+Math.imul(vt,ue)|0,X=X+Math.imul(Re,ve)|0,I=I+Math.imul(Re,we)|0,I=I+Math.imul(Ce,ve)|0,N=N+Math.imul(Ce,we)|0,X=X+Math.imul(Y,Se)|0,I=I+Math.imul(Y,We)|0,I=I+Math.imul(Z,Se)|0,N=N+Math.imul(Z,We)|0,X=X+Math.imul(fe,Be)|0,I=I+Math.imul(fe,He)|0,I=I+Math.imul(Ne,Be)|0,N=N+Math.imul(Ne,He)|0;var at=(z+X|0)+((I&8191)<<13)|0;z=(N+(I>>>13)|0)+(at>>>26)|0,at&=67108863,X=Math.imul(ct,ut),I=Math.imul(ct,bt),I=I+Math.imul(gt,ut)|0,N=Math.imul(gt,bt),X=X+Math.imul(pt,Lt)|0,I=I+Math.imul(pt,ue)|0,I=I+Math.imul(et,Lt)|0,N=N+Math.imul(et,ue)|0,X=X+Math.imul(st,ve)|0,I=I+Math.imul(st,we)|0,I=I+Math.imul(vt,ve)|0,N=N+Math.imul(vt,we)|0,X=X+Math.imul(Re,Se)|0,I=I+Math.imul(Re,We)|0,I=I+Math.imul(Ce,Se)|0,N=N+Math.imul(Ce,We)|0,X=X+Math.imul(Y,Be)|0,I=I+Math.imul(Y,He)|0,I=I+Math.imul(Z,Be)|0,N=N+Math.imul(Z,He)|0;var Te=(z+X|0)+((I&8191)<<13)|0;z=(N+(I>>>13)|0)+(Te>>>26)|0,Te&=67108863,X=Math.imul(ct,Lt),I=Math.imul(ct,ue),I=I+Math.imul(gt,Lt)|0,N=Math.imul(gt,ue),X=X+Math.imul(pt,ve)|0,I=I+Math.imul(pt,we)|0,I=I+Math.imul(et,ve)|0,N=N+Math.imul(et,we)|0,X=X+Math.imul(st,Se)|0,I=I+Math.imul(st,We)|0,I=I+Math.imul(vt,Se)|0,N=N+Math.imul(vt,We)|0,X=X+Math.imul(Re,Be)|0,I=I+Math.imul(Re,He)|0,I=I+Math.imul(Ce,Be)|0,N=N+Math.imul(Ce,He)|0;var ze=(z+X|0)+((I&8191)<<13)|0;z=(N+(I>>>13)|0)+(ze>>>26)|0,ze&=67108863,X=Math.imul(ct,ve),I=Math.imul(ct,we),I=I+Math.imul(gt,ve)|0,N=Math.imul(gt,we),X=X+Math.imul(pt,Se)|0,I=I+Math.imul(pt,We)|0,I=I+Math.imul(et,Se)|0,N=N+Math.imul(et,We)|0,X=X+Math.imul(st,Be)|0,I=I+Math.imul(st,He)|0,I=I+Math.imul(vt,Be)|0,N=N+Math.imul(vt,He)|0;var Ye=(z+X|0)+((I&8191)<<13)|0;z=(N+(I>>>13)|0)+(Ye>>>26)|0,Ye&=67108863,X=Math.imul(ct,Se),I=Math.imul(ct,We),I=I+Math.imul(gt,Se)|0,N=Math.imul(gt,We),X=X+Math.imul(pt,Be)|0,I=I+Math.imul(pt,He)|0,I=I+Math.imul(et,Be)|0,N=N+Math.imul(et,He)|0;var Pt=(z+X|0)+((I&8191)<<13)|0;z=(N+(I>>>13)|0)+(Pt>>>26)|0,Pt&=67108863,X=Math.imul(ct,Be),I=Math.imul(ct,He),I=I+Math.imul(gt,Be)|0,N=Math.imul(gt,He);var Ut=(z+X|0)+((I&8191)<<13)|0;return z=(N+(I>>>13)|0)+(Ut>>>26)|0,Ut&=67108863,V[0]=$e,V[1]=nt,V[2]=Et,V[3]=Rt,V[4]=wt,V[5]=Ct,V[6]=Xt,V[7]=zt,V[8]=or,V[9]=gr,V[10]=$r,V[11]=Kr,V[12]=Mt,V[13]=at,V[14]=Te,V[15]=ze,V[16]=Ye,V[17]=Pt,V[18]=Ut,z!==0&&(V[19]=z,O.length++),O};Math.imul||(o=u);function s(B,R,P){P.negative=R.negative^B.negative,P.length=B.length+R.length;for(var O=0,F=0,H=0;H>>26)|0,F+=V>>>26,V&=67108863}P.words[H]=z,O=V,V=F}return O!==0?P.words[H]=O:P.length--,P.strip()}function c(B,R,P){var O=new f;return O.mulp(B,R,P)}h.prototype.mulTo=function(R,P){var O,F=this.length+R.length;return this.length===10&&R.length===10?O=o(this,R,P):F<63?O=u(this,R,P):F<1024?O=s(this,R,P):O=c(this,R,P),O};function f(B,R){this.x=B,this.y=R}f.prototype.makeRBT=function(R){for(var P=new Array(R),O=h.prototype._countBits(R)-1,F=0;F>=1;return F},f.prototype.permute=function(R,P,O,F,H,V){for(var z=0;z>>1)H++;return 1<>>13,O[2*V+1]=H&8191,H=H>>>13;for(V=2*P;V>=26,P+=F/67108864|0,P+=H>>>26,this.words[O]=H&67108863}return P!==0&&(this.words[O]=P,this.length++),this},h.prototype.muln=function(R){return this.clone().imuln(R)},h.prototype.sqr=function(){return this.mul(this)},h.prototype.isqr=function(){return this.imul(this.clone())},h.prototype.pow=function(R){var P=w(R);if(P.length===0)return new h(1);for(var O=this,F=0;F=0);var P=R%26,O=(R-P)/26,F=67108863>>>26-P<<26-P,H;if(P!==0){var V=0;for(H=0;H>>26-P}V&&(this.words[H]=V,this.length++)}if(O!==0){for(H=this.length-1;H>=0;H--)this.words[H+O]=this.words[H];for(H=0;H=0);var F;P?F=(P-P%26)/26:F=0;var H=R%26,V=Math.min((R-H)/26,this.length),z=67108863^67108863>>>H<V)for(this.length-=V,I=0;I=0&&(N!==0||I>=F);I--){var U=this.words[I]|0;this.words[I]=N<<26-H|U>>>H,N=U&z}return X&&N!==0&&(X.words[X.length++]=N),this.length===0&&(this.words[0]=0,this.length=1),this.strip()},h.prototype.ishrn=function(R,P,O){return m(this.negative===0),this.iushrn(R,P,O)},h.prototype.shln=function(R){return this.clone().ishln(R)},h.prototype.ushln=function(R){return this.clone().iushln(R)},h.prototype.shrn=function(R){return this.clone().ishrn(R)},h.prototype.ushrn=function(R){return this.clone().iushrn(R)},h.prototype.testn=function(R){m(typeof R=="number"&&R>=0);var P=R%26,O=(R-P)/26,F=1<=0);var P=R%26,O=(R-P)/26;if(m(this.negative===0,"imaskn works only with positive numbers"),this.length<=O)return this;if(P!==0&&O++,this.length=Math.min(O,this.length),P!==0){var F=67108863^67108863>>>P<=67108864;P++)this.words[P]-=67108864,P===this.length-1?this.words[P+1]=1:this.words[P+1]++;return this.length=Math.max(this.length,P+1),this},h.prototype.isubn=function(R){if(m(typeof R=="number"),m(R<67108864),R<0)return this.iaddn(-R);if(this.negative!==0)return this.negative=0,this.iaddn(R),this.negative=1,this;if(this.words[0]-=R,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var P=0;P>26)-(X/67108864|0),this.words[H+O]=V&67108863}for(;H>26,this.words[H+O]=V&67108863;if(z===0)return this.strip();for(m(z===-1),z=0,H=0;H>26,this.words[H]=V&67108863;return this.negative=1,this.strip()},h.prototype._wordDiv=function(R,P){var O=this.length-R.length,F=this.clone(),H=R,V=H.words[H.length-1]|0,z=this._countBits(V);O=26-z,O!==0&&(H=H.ushln(O),F.iushln(O),V=H.words[H.length-1]|0);var X=F.length-H.length,I;if(P!=="mod"){I=new h(null),I.length=X+1,I.words=new Array(I.length);for(var N=0;N=0;G--){var te=(F.words[H.length+G]|0)*67108864+(F.words[H.length+G-1]|0);for(te=Math.min(te/V|0,67108863),F._ishlnsubmul(H,te,G);F.negative!==0;)te--,F.negative=0,F._ishlnsubmul(H,1,G),F.isZero()||(F.negative^=1);I&&(I.words[G]=te)}return I&&I.strip(),F.strip(),P!=="div"&&O!==0&&F.iushrn(O),{div:I||null,mod:F}},h.prototype.divmod=function(R,P,O){if(m(!R.isZero()),this.isZero())return{div:new h(0),mod:new h(0)};var F,H,V;return this.negative!==0&&R.negative===0?(V=this.neg().divmod(R,P),P!=="mod"&&(F=V.div.neg()),P!=="div"&&(H=V.mod.neg(),O&&H.negative!==0&&H.iadd(R)),{div:F,mod:H}):this.negative===0&&R.negative!==0?(V=this.divmod(R.neg(),P),P!=="mod"&&(F=V.div.neg()),{div:F,mod:V.mod}):this.negative&R.negative?(V=this.neg().divmod(R.neg(),P),P!=="div"&&(H=V.mod.neg(),O&&H.negative!==0&&H.isub(R)),{div:V.div,mod:H}):R.length>this.length||this.cmp(R)<0?{div:new h(0),mod:this}:R.length===1?P==="div"?{div:this.divn(R.words[0]),mod:null}:P==="mod"?{div:null,mod:new h(this.modn(R.words[0]))}:{div:this.divn(R.words[0]),mod:new h(this.modn(R.words[0]))}:this._wordDiv(R,P)},h.prototype.div=function(R){return this.divmod(R,"div",!1).div},h.prototype.mod=function(R){return this.divmod(R,"mod",!1).mod},h.prototype.umod=function(R){return this.divmod(R,"mod",!0).mod},h.prototype.divRound=function(R){var P=this.divmod(R);if(P.mod.isZero())return P.div;var O=P.div.negative!==0?P.mod.isub(R):P.mod,F=R.ushrn(1),H=R.andln(1),V=O.cmp(F);return V<0||H===1&&V===0?P.div:P.div.negative!==0?P.div.isubn(1):P.div.iaddn(1)},h.prototype.modn=function(R){m(R<=67108863);for(var P=(1<<26)%R,O=0,F=this.length-1;F>=0;F--)O=(P*O+(this.words[F]|0))%R;return O},h.prototype.idivn=function(R){m(R<=67108863);for(var P=0,O=this.length-1;O>=0;O--){var F=(this.words[O]|0)+P*67108864;this.words[O]=F/R|0,P=F%R}return this.strip()},h.prototype.divn=function(R){return this.clone().idivn(R)},h.prototype.egcd=function(R){m(R.negative===0),m(!R.isZero());var P=this,O=R.clone();P.negative!==0?P=P.umod(R):P=P.clone();for(var F=new h(1),H=new h(0),V=new h(0),z=new h(1),X=0;P.isEven()&&O.isEven();)P.iushrn(1),O.iushrn(1),++X;for(var I=O.clone(),N=P.clone();!P.isZero();){for(var U=0,G=1;!(P.words[0]&G)&&U<26;++U,G<<=1);if(U>0)for(P.iushrn(U);U-- >0;)(F.isOdd()||H.isOdd())&&(F.iadd(I),H.isub(N)),F.iushrn(1),H.iushrn(1);for(var te=0,re=1;!(O.words[0]&re)&&te<26;++te,re<<=1);if(te>0)for(O.iushrn(te);te-- >0;)(V.isOdd()||z.isOdd())&&(V.iadd(I),z.isub(N)),V.iushrn(1),z.iushrn(1);P.cmp(O)>=0?(P.isub(O),F.isub(V),H.isub(z)):(O.isub(P),V.isub(F),z.isub(H))}return{a:V,b:z,gcd:O.iushln(X)}},h.prototype._invmp=function(R){m(R.negative===0),m(!R.isZero());var P=this,O=R.clone();P.negative!==0?P=P.umod(R):P=P.clone();for(var F=new h(1),H=new h(0),V=O.clone();P.cmpn(1)>0&&O.cmpn(1)>0;){for(var z=0,X=1;!(P.words[0]&X)&&z<26;++z,X<<=1);if(z>0)for(P.iushrn(z);z-- >0;)F.isOdd()&&F.iadd(V),F.iushrn(1);for(var I=0,N=1;!(O.words[0]&N)&&I<26;++I,N<<=1);if(I>0)for(O.iushrn(I);I-- >0;)H.isOdd()&&H.iadd(V),H.iushrn(1);P.cmp(O)>=0?(P.isub(O),F.isub(H)):(O.isub(P),H.isub(F))}var U;return P.cmpn(1)===0?U=F:U=H,U.cmpn(0)<0&&U.iadd(R),U},h.prototype.gcd=function(R){if(this.isZero())return R.abs();if(R.isZero())return this.abs();var P=this.clone(),O=R.clone();P.negative=0,O.negative=0;for(var F=0;P.isEven()&&O.isEven();F++)P.iushrn(1),O.iushrn(1);do{for(;P.isEven();)P.iushrn(1);for(;O.isEven();)O.iushrn(1);var H=P.cmp(O);if(H<0){var V=P;P=O,O=V}else if(H===0||O.cmpn(1)===0)break;P.isub(O)}while(!0);return O.iushln(F)},h.prototype.invm=function(R){return this.egcd(R).a.umod(R)},h.prototype.isEven=function(){return(this.words[0]&1)===0},h.prototype.isOdd=function(){return(this.words[0]&1)===1},h.prototype.andln=function(R){return this.words[0]&R},h.prototype.bincn=function(R){m(typeof R=="number");var P=R%26,O=(R-P)/26,F=1<>>26,z&=67108863,this.words[V]=z}return H!==0&&(this.words[V]=H,this.length++),this},h.prototype.isZero=function(){return this.length===1&&this.words[0]===0},h.prototype.cmpn=function(R){var P=R<0;if(this.negative!==0&&!P)return-1;if(this.negative===0&&P)return 1;this.strip();var O;if(this.length>1)O=1;else{P&&(R=-R),m(R<=67108863,"Number is too big");var F=this.words[0]|0;O=F===R?0:FR.length)return 1;if(this.length=0;O--){var F=this.words[O]|0,H=R.words[O]|0;if(F!==H){FH&&(P=1);break}}return P},h.prototype.gtn=function(R){return this.cmpn(R)===1},h.prototype.gt=function(R){return this.cmp(R)===1},h.prototype.gten=function(R){return this.cmpn(R)>=0},h.prototype.gte=function(R){return this.cmp(R)>=0},h.prototype.ltn=function(R){return this.cmpn(R)===-1},h.prototype.lt=function(R){return this.cmp(R)===-1},h.prototype.lten=function(R){return this.cmpn(R)<=0},h.prototype.lte=function(R){return this.cmp(R)<=0},h.prototype.eqn=function(R){return this.cmpn(R)===0},h.prototype.eq=function(R){return this.cmp(R)===0},h.red=function(R){return new L(R)},h.prototype.toRed=function(R){return m(!this.red,"Already a number in reduction context"),m(this.negative===0,"red works only with positives"),R.convertTo(this)._forceRed(R)},h.prototype.fromRed=function(){return m(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},h.prototype._forceRed=function(R){return this.red=R,this},h.prototype.forceRed=function(R){return m(!this.red,"Already a number in reduction context"),this._forceRed(R)},h.prototype.redAdd=function(R){return m(this.red,"redAdd works only with red numbers"),this.red.add(this,R)},h.prototype.redIAdd=function(R){return m(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,R)},h.prototype.redSub=function(R){return m(this.red,"redSub works only with red numbers"),this.red.sub(this,R)},h.prototype.redISub=function(R){return m(this.red,"redISub works only with red numbers"),this.red.isub(this,R)},h.prototype.redShl=function(R){return m(this.red,"redShl works only with red numbers"),this.red.shl(this,R)},h.prototype.redMul=function(R){return m(this.red,"redMul works only with red numbers"),this.red._verify2(this,R),this.red.mul(this,R)},h.prototype.redIMul=function(R){return m(this.red,"redMul works only with red numbers"),this.red._verify2(this,R),this.red.imul(this,R)},h.prototype.redSqr=function(){return m(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},h.prototype.redISqr=function(){return m(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},h.prototype.redSqrt=function(){return m(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},h.prototype.redInvm=function(){return m(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},h.prototype.redNeg=function(){return m(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},h.prototype.redPow=function(R){return m(this.red&&!R.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,R)};var v={k256:null,p224:null,p192:null,p25519:null};function k(B,R){this.name=B,this.p=new h(R,16),this.n=this.p.bitLength(),this.k=new h(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}k.prototype._tmp=function(){var R=new h(null);return R.words=new Array(Math.ceil(this.n/13)),R},k.prototype.ireduce=function(R){var P=R,O;do this.split(P,this.tmp),P=this.imulK(P),P=P.iadd(this.tmp),O=P.bitLength();while(O>this.n);var F=O0?P.isub(this.p):P.strip!==void 0?P.strip():P._strip(),P},k.prototype.split=function(R,P){R.iushrn(this.n,0,P)},k.prototype.imulK=function(R){return R.imul(this.k)};function T(){k.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}b(T,k),T.prototype.split=function(R,P){for(var O=4194303,F=Math.min(R.length,9),H=0;H>>22,V=z}V>>>=22,R.words[H-10]=V,V===0&&R.length>10?R.length-=10:R.length-=9},T.prototype.imulK=function(R){R.words[R.length]=0,R.words[R.length+1]=0,R.length+=2;for(var P=0,O=0;O>>=26,R.words[O]=H,P=F}return P!==0&&(R.words[R.length++]=P),R},h._prime=function(R){if(v[R])return v[R];var P;if(R==="k256")P=new T;else if(R==="p224")P=new C;else if(R==="p192")P=new D;else if(R==="p25519")P=new j;else throw new Error("Unknown prime "+R);return v[R]=P,P};function L(B){if(typeof B=="string"){var R=h._prime(B);this.m=R.p,this.prime=R}else m(B.gtn(1),"modulus must be greater than 1"),this.m=B,this.prime=null}L.prototype._verify1=function(R){m(R.negative===0,"red works only with positives"),m(R.red,"red works only with red numbers")},L.prototype._verify2=function(R,P){m((R.negative|P.negative)===0,"red works only with positives"),m(R.red&&R.red===P.red,"red works only with red numbers")},L.prototype.imod=function(R){return this.prime?this.prime.ireduce(R)._forceRed(this):R.umod(this.m)._forceRed(this)},L.prototype.neg=function(R){return R.isZero()?R.clone():this.m.sub(R)._forceRed(this)},L.prototype.add=function(R,P){this._verify2(R,P);var O=R.add(P);return O.cmp(this.m)>=0&&O.isub(this.m),O._forceRed(this)},L.prototype.iadd=function(R,P){this._verify2(R,P);var O=R.iadd(P);return O.cmp(this.m)>=0&&O.isub(this.m),O},L.prototype.sub=function(R,P){this._verify2(R,P);var O=R.sub(P);return O.cmpn(0)<0&&O.iadd(this.m),O._forceRed(this)},L.prototype.isub=function(R,P){this._verify2(R,P);var O=R.isub(P);return O.cmpn(0)<0&&O.iadd(this.m),O},L.prototype.shl=function(R,P){return this._verify1(R),this.imod(R.ushln(P))},L.prototype.imul=function(R,P){return this._verify2(R,P),this.imod(R.imul(P))},L.prototype.mul=function(R,P){return this._verify2(R,P),this.imod(R.mul(P))},L.prototype.isqr=function(R){return this.imul(R,R.clone())},L.prototype.sqr=function(R){return this.mul(R,R)},L.prototype.sqrt=function(R){if(R.isZero())return R.clone();var P=this.m.andln(3);if(m(P%2===1),P===3){var O=this.m.add(new h(1)).iushrn(2);return this.pow(R,O)}for(var F=this.m.subn(1),H=0;!F.isZero()&&F.andln(1)===0;)H++,F.iushrn(1);m(!F.isZero());var V=new h(1).toRed(this),z=V.redNeg(),X=this.m.subn(1).iushrn(1),I=this.m.bitLength();for(I=new h(2*I*I).toRed(this);this.pow(I,X).cmp(z)!==0;)I.redIAdd(z);for(var N=this.pow(I,F),U=this.pow(R,F.addn(1).iushrn(1)),G=this.pow(R,F),te=H;G.cmp(V)!==0;){for(var re=G,ne=0;re.cmp(V)!==0;ne++)re=re.redSqr();m(ne=0;H--){for(var N=P.words[H],U=I-1;U>=0;U--){var G=N>>U&1;if(V!==F[0]&&(V=this.sqr(V)),G===0&&z===0){X=0;continue}z<<=1,z|=G,X++,!(X!==O&&(H!==0||U!==0))&&(V=this.mul(V,F[z]),X=0,z=0)}I=26}return V},L.prototype.convertTo=function(R){var P=R.umod(this.m);return P===R?P.clone():P},L.prototype.convertFrom=function(R){var P=R.clone();return P.red=null,P},h.mont=function(R){return new M(R)};function M(B){L.call(this,B),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new h(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}b(M,L),M.prototype.convertTo=function(R){return this.imod(R.ushln(this.shift))},M.prototype.convertFrom=function(R){var P=this.imod(R.mul(this.rinv));return P.red=null,P},M.prototype.imul=function(R,P){if(R.isZero()||P.isZero())return R.words[0]=0,R.length=1,R;var O=R.imul(P),F=O.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),H=O.isub(F).iushrn(this.shift),V=H;return H.cmp(this.m)>=0?V=H.isub(this.m):H.cmpn(0)<0&&(V=H.iadd(this.m)),V._forceRed(this)},M.prototype.mul=function(R,P){if(R.isZero()||P.isZero())return new h(0)._forceRed(this);var O=R.mul(P),F=O.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),H=O.isub(F).iushrn(this.shift),V=H;return H.cmp(this.m)>=0?V=H.isub(this.m):H.cmpn(0)<0&&(V=H.iadd(this.m)),V._forceRed(this)},M.prototype.invm=function(R){var P=this.imod(R._invmp(this.m).mul(this.r2));return P._forceRed(this)}})(typeof n>"u"||n,void 0)},{buffer:185}],182:[function(e,n,i){i.byteLength=g,i.toByteArray=x,i.fromByteArray=w;for(var a=[],l=[],d=typeof Uint8Array<"u"?Uint8Array:Array,m="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",b=0,h=m.length;b0)throw new Error("Invalid string. Length must be a multiple of 4");var s=u.indexOf("=");s===-1&&(s=o);var c=s===o?0:4-s%4;return[s,c]}function g(u){var o=_(u),s=o[0],c=o[1];return(s+c)*3/4-c}function y(u,o,s){return(o+s)*3/4-s}function x(u){var o,s=_(u),c=s[0],f=s[1],v=new d(y(u,c,f)),k=0,T=f>0?c-4:c,C;for(C=0;C>16&255,v[k++]=o>>8&255,v[k++]=o&255;return f===2&&(o=l[u.charCodeAt(C)]<<2|l[u.charCodeAt(C+1)]>>4,v[k++]=o&255),f===1&&(o=l[u.charCodeAt(C)]<<10|l[u.charCodeAt(C+1)]<<4|l[u.charCodeAt(C+2)]>>2,v[k++]=o>>8&255,v[k++]=o&255),v}function p(u){return a[u>>18&63]+a[u>>12&63]+a[u>>6&63]+a[u&63]}function S(u,o,s){for(var c,f=[],v=o;vT?T:k+v));return c===1?(o=u[s-1],f.push(a[o>>2]+a[o<<4&63]+"==")):c===2&&(o=(u[s-2]<<8)+u[s-1],f.push(a[o>>10]+a[o>>4&63]+a[o<<2&63]+"=")),f.join("")}},{}],183:[function(e,n,i){function a(l){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(m){return typeof m}:a=function(m){return m&&typeof Symbol=="function"&&m.constructor===Symbol&&m!==Symbol.prototype?"symbol":typeof m},a(l)}(function(l,d){function m(P,O){if(!P)throw new Error(O||"Assertion failed")}function b(P,O){P.super_=O;var F=function(){};F.prototype=O.prototype,P.prototype=new F,P.prototype.constructor=P}function h(P,O,F){if(h.isBN(P))return P;this.negative=0,this.words=null,this.length=0,this.red=null,P!==null&&((O==="le"||O==="be")&&(F=O,O=10),this._init(P||0,O||10,F||"be"))}a(l)==="object"?l.exports=h:d.BN=h,h.BN=h,h.wordSize=26;var _;try{_=e("buffer").Buffer}catch{}h.isBN=function(O){return O instanceof h?!0:O!==null&&a(O)==="object"&&O.constructor.wordSize===h.wordSize&&Array.isArray(O.words)},h.max=function(O,F){return O.cmp(F)>0?O:F},h.min=function(O,F){return O.cmp(F)<0?O:F},h.prototype._init=function(O,F,H){if(typeof O=="number")return this._initNumber(O,F,H);if(a(O)==="object")return this._initArray(O,F,H);F==="hex"&&(F=16),m(F===(F|0)&&F>=2&&F<=36),O=O.toString().replace(/\s+/g,"");var V=0;O[0]==="-"&&V++,F===16?this._parseHex(O,V):this._parseBase(O,F,V),O[0]==="-"&&(this.negative=1),this._strip(),H==="le"&&this._initArray(this.toArray(),F,H)},h.prototype._initNumber=function(O,F,H){O<0&&(this.negative=1,O=-O),O<67108864?(this.words=[O&67108863],this.length=1):O<4503599627370496?(this.words=[O&67108863,O/67108864&67108863],this.length=2):(m(O<9007199254740992),this.words=[O&67108863,O/67108864&67108863,1],this.length=3),H==="le"&&this._initArray(this.toArray(),F,H)},h.prototype._initArray=function(O,F,H){if(m(typeof O.length=="number"),O.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(O.length/3),this.words=new Array(this.length);for(var V=0;V=0;V-=3)X=O[V]|O[V-1]<<8|O[V-2]<<16,this.words[z]|=X<>>26-I&67108863,I+=24,I>=26&&(I-=26,z++);else if(H==="le")for(V=0,z=0;V>>26-I&67108863,I+=24,I>=26&&(I-=26,z++);return this._strip()};function g(P,O,F){for(var H=0,V=Math.min(P.length,F),z=0,X=O;X=49&&I<=54?N=I-49+10:I>=17&&I<=22?N=I-17+10:N=I,H|=N,z|=N}return m(!(z&240),"Invalid character in "+P),H}h.prototype._parseHex=function(O,F){this.length=Math.ceil((O.length-F)/6),this.words=new Array(this.length);for(var H=0;H=F;H-=6)z=g(O,H,H+6),this.words[V]|=z<>>26-X&4194303,X+=24,X>=26&&(X-=26,V++);H+6!==F&&(z=g(O,F,H+6),this.words[V]|=z<>>26-X&4194303),this._strip()};function y(P,O,F,H){for(var V=0,z=0,X=Math.min(P.length,F),I=O;I=49?z=N-49+10:N>=17?z=N-17+10:z=N,m(N>=0&&z1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},h.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},typeof Symbol<"u"&&typeof Symbol.for=="function")try{h.prototype[Symbol.for("nodejs.util.inspect.custom")]=p}catch{h.prototype.inspect=p}else h.prototype.inspect=p;function p(){return(this.red?""}var S=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],w=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],u=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];h.prototype.toString=function(O,F){O=O||10,F=F|0||1;var H;if(O===16||O==="hex"){H="";for(var V=0,z=0,X=0;X>>24-V&16777215,z!==0||X!==this.length-1?H=S[6-N.length]+N+H:H=N+H,V+=2,V>=26&&(V-=26,X--)}for(z!==0&&(H=z.toString(16)+H);H.length%F!==0;)H="0"+H;return this.negative!==0&&(H="-"+H),H}if(O===(O|0)&&O>=2&&O<=36){var U=w[O],G=u[O];H="";var te=this.clone();for(te.negative=0;!te.isZero();){var re=te.modrn(G).toString(O);te=te.idivn(G),te.isZero()?H=re+H:H=S[U-re.length]+re+H}for(this.isZero()&&(H="0"+H);H.length%F!==0;)H="0"+H;return this.negative!==0&&(H="-"+H),H}m(!1,"Base should be between 2 and 36")},h.prototype.toNumber=function(){var O=this.words[0];return this.length===2?O+=this.words[1]*67108864:this.length===3&&this.words[2]===1?O+=4503599627370496+this.words[1]*67108864:this.length>2&&m(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-O:O},h.prototype.toJSON=function(){return this.toString(16,2)},_&&(h.prototype.toBuffer=function(O,F){return this.toArrayLike(_,O,F)}),h.prototype.toArray=function(O,F){return this.toArrayLike(Array,O,F)};var o=function(O,F){return O.allocUnsafe?O.allocUnsafe(F):new O(F)};h.prototype.toArrayLike=function(O,F,H){this._strip();var V=this.byteLength(),z=H||Math.max(1,V);m(V<=z,"byte array longer than desired length"),m(z>0,"Requested array length <= 0");var X=o(O,z),I=F==="le"?"LE":"BE";return this["_toArrayLike"+I](X,V),X},h.prototype._toArrayLikeLE=function(O,F){for(var H=0,V=0,z=0,X=0;z>8&255),H>16&255),X===6?(H>24&255),V=0,X=0):(V=I>>>24,X+=2)}if(H=0&&(O[H--]=I>>8&255),H>=0&&(O[H--]=I>>16&255),X===6?(H>=0&&(O[H--]=I>>24&255),V=0,X=0):(V=I>>>24,X+=2)}if(H>=0)for(O[H--]=V;H>=0;)O[H--]=0},Math.clz32?h.prototype._countBits=function(O){return 32-Math.clz32(O)}:h.prototype._countBits=function(O){var F=O,H=0;return F>=4096&&(H+=13,F>>>=13),F>=64&&(H+=7,F>>>=7),F>=8&&(H+=4,F>>>=4),F>=2&&(H+=2,F>>>=2),H+F},h.prototype._zeroBits=function(O){if(O===0)return 26;var F=O,H=0;return F&8191||(H+=13,F>>>=13),F&127||(H+=7,F>>>=7),F&15||(H+=4,F>>>=4),F&3||(H+=2,F>>>=2),F&1||H++,H},h.prototype.bitLength=function(){var O=this.words[this.length-1],F=this._countBits(O);return(this.length-1)*26+F};function s(P){for(var O=new Array(P.bitLength()),F=0;F>>V&1}return O}h.prototype.zeroBits=function(){if(this.isZero())return 0;for(var O=0,F=0;FO.length?this.clone().ior(O):O.clone().ior(this)},h.prototype.uor=function(O){return this.length>O.length?this.clone().iuor(O):O.clone().iuor(this)},h.prototype.iuand=function(O){var F;this.length>O.length?F=O:F=this;for(var H=0;HO.length?this.clone().iand(O):O.clone().iand(this)},h.prototype.uand=function(O){return this.length>O.length?this.clone().iuand(O):O.clone().iuand(this)},h.prototype.iuxor=function(O){var F,H;this.length>O.length?(F=this,H=O):(F=O,H=this);for(var V=0;VO.length?this.clone().ixor(O):O.clone().ixor(this)},h.prototype.uxor=function(O){return this.length>O.length?this.clone().iuxor(O):O.clone().iuxor(this)},h.prototype.inotn=function(O){m(typeof O=="number"&&O>=0);var F=Math.ceil(O/26)|0,H=O%26;this._expand(F),H>0&&F--;for(var V=0;V0&&(this.words[V]=~this.words[V]&67108863>>26-H),this._strip()},h.prototype.notn=function(O){return this.clone().inotn(O)},h.prototype.setn=function(O,F){m(typeof O=="number"&&O>=0);var H=O/26|0,V=O%26;return this._expand(H+1),F?this.words[H]=this.words[H]|1<O.length?(H=this,V=O):(H=O,V=this);for(var z=0,X=0;X>>26;for(;z!==0&&X>>26;if(this.length=H.length,z!==0)this.words[this.length]=z,this.length++;else if(H!==this)for(;XO.length?this.clone().iadd(O):O.clone().iadd(this)},h.prototype.isub=function(O){if(O.negative!==0){O.negative=0;var F=this.iadd(O);return O.negative=1,F._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(O),this.negative=1,this._normSign();var H=this.cmp(O);if(H===0)return this.negative=0,this.length=1,this.words[0]=0,this;var V,z;H>0?(V=this,z=O):(V=O,z=this);for(var X=0,I=0;I>26,this.words[I]=F&67108863;for(;X!==0&&I>26,this.words[I]=F&67108863;if(X===0&&I>>26,te=N&67108863,re=Math.min(U,O.length-1),ne=Math.max(0,U-P.length+1);ne<=re;ne++){var ge=U-ne|0;V=P.words[ge]|0,z=O.words[ne]|0,X=V*z+te,G+=X/67108864|0,te=X&67108863}F.words[U]=te|0,N=G|0}return N!==0?F.words[U]=N|0:F.length--,F._strip()}var f=function(O,F,H){var V=O.words,z=F.words,X=H.words,I=0,N,U,G,te=V[0]|0,re=te&8191,ne=te>>>13,ge=V[1]|0,ee=ge&8191,se=ge>>>13,J=V[2]|0,q=J&8191,de=J>>>13,xe=V[3]|0,ae=xe&8191,fe=xe>>>13,Ne=V[4]|0,ie=Ne&8191,Y=Ne>>>13,Z=V[5]|0,le=Z&8191,Re=Z>>>13,Ce=V[6]|0,Ge=Ce&8191,st=Ce>>>13,vt=V[7]|0,ft=vt&8191,pt=vt>>>13,et=V[8]|0,tt=et&8191,ct=et>>>13,gt=V[9]|0,he=gt&8191,De=gt>>>13,Oe=z[0]|0,Ie=Oe&8191,be=Oe>>>13,Le=z[1]|0,oe=Le&8191,Qe=Le>>>13,_t=z[2]|0,K=_t&8191,je=_t>>>13,Ze=z[3]|0,pe=Ze&8191,Ae=Ze>>>13,Xe=z[4]|0,kt=Xe&8191,ut=Xe>>>13,bt=z[5]|0,Bt=bt&8191,Lt=bt>>>13,ue=z[6]|0,ye=ue&8191,ve=ue>>>13,we=z[7]|0,Ee=we&8191,Se=we>>>13,We=z[8]|0,Je=We&8191,Be=We>>>13,He=z[9]|0,$e=He&8191,nt=He>>>13;H.negative=O.negative^F.negative,H.length=19,N=Math.imul(re,Ie),U=Math.imul(re,be),U=U+Math.imul(ne,Ie)|0,G=Math.imul(ne,be);var Et=(I+N|0)+((U&8191)<<13)|0;I=(G+(U>>>13)|0)+(Et>>>26)|0,Et&=67108863,N=Math.imul(ee,Ie),U=Math.imul(ee,be),U=U+Math.imul(se,Ie)|0,G=Math.imul(se,be),N=N+Math.imul(re,oe)|0,U=U+Math.imul(re,Qe)|0,U=U+Math.imul(ne,oe)|0,G=G+Math.imul(ne,Qe)|0;var Rt=(I+N|0)+((U&8191)<<13)|0;I=(G+(U>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,N=Math.imul(q,Ie),U=Math.imul(q,be),U=U+Math.imul(de,Ie)|0,G=Math.imul(de,be),N=N+Math.imul(ee,oe)|0,U=U+Math.imul(ee,Qe)|0,U=U+Math.imul(se,oe)|0,G=G+Math.imul(se,Qe)|0,N=N+Math.imul(re,K)|0,U=U+Math.imul(re,je)|0,U=U+Math.imul(ne,K)|0,G=G+Math.imul(ne,je)|0;var wt=(I+N|0)+((U&8191)<<13)|0;I=(G+(U>>>13)|0)+(wt>>>26)|0,wt&=67108863,N=Math.imul(ae,Ie),U=Math.imul(ae,be),U=U+Math.imul(fe,Ie)|0,G=Math.imul(fe,be),N=N+Math.imul(q,oe)|0,U=U+Math.imul(q,Qe)|0,U=U+Math.imul(de,oe)|0,G=G+Math.imul(de,Qe)|0,N=N+Math.imul(ee,K)|0,U=U+Math.imul(ee,je)|0,U=U+Math.imul(se,K)|0,G=G+Math.imul(se,je)|0,N=N+Math.imul(re,pe)|0,U=U+Math.imul(re,Ae)|0,U=U+Math.imul(ne,pe)|0,G=G+Math.imul(ne,Ae)|0;var Ct=(I+N|0)+((U&8191)<<13)|0;I=(G+(U>>>13)|0)+(Ct>>>26)|0,Ct&=67108863,N=Math.imul(ie,Ie),U=Math.imul(ie,be),U=U+Math.imul(Y,Ie)|0,G=Math.imul(Y,be),N=N+Math.imul(ae,oe)|0,U=U+Math.imul(ae,Qe)|0,U=U+Math.imul(fe,oe)|0,G=G+Math.imul(fe,Qe)|0,N=N+Math.imul(q,K)|0,U=U+Math.imul(q,je)|0,U=U+Math.imul(de,K)|0,G=G+Math.imul(de,je)|0,N=N+Math.imul(ee,pe)|0,U=U+Math.imul(ee,Ae)|0,U=U+Math.imul(se,pe)|0,G=G+Math.imul(se,Ae)|0,N=N+Math.imul(re,kt)|0,U=U+Math.imul(re,ut)|0,U=U+Math.imul(ne,kt)|0,G=G+Math.imul(ne,ut)|0;var Xt=(I+N|0)+((U&8191)<<13)|0;I=(G+(U>>>13)|0)+(Xt>>>26)|0,Xt&=67108863,N=Math.imul(le,Ie),U=Math.imul(le,be),U=U+Math.imul(Re,Ie)|0,G=Math.imul(Re,be),N=N+Math.imul(ie,oe)|0,U=U+Math.imul(ie,Qe)|0,U=U+Math.imul(Y,oe)|0,G=G+Math.imul(Y,Qe)|0,N=N+Math.imul(ae,K)|0,U=U+Math.imul(ae,je)|0,U=U+Math.imul(fe,K)|0,G=G+Math.imul(fe,je)|0,N=N+Math.imul(q,pe)|0,U=U+Math.imul(q,Ae)|0,U=U+Math.imul(de,pe)|0,G=G+Math.imul(de,Ae)|0,N=N+Math.imul(ee,kt)|0,U=U+Math.imul(ee,ut)|0,U=U+Math.imul(se,kt)|0,G=G+Math.imul(se,ut)|0,N=N+Math.imul(re,Bt)|0,U=U+Math.imul(re,Lt)|0,U=U+Math.imul(ne,Bt)|0,G=G+Math.imul(ne,Lt)|0;var zt=(I+N|0)+((U&8191)<<13)|0;I=(G+(U>>>13)|0)+(zt>>>26)|0,zt&=67108863,N=Math.imul(Ge,Ie),U=Math.imul(Ge,be),U=U+Math.imul(st,Ie)|0,G=Math.imul(st,be),N=N+Math.imul(le,oe)|0,U=U+Math.imul(le,Qe)|0,U=U+Math.imul(Re,oe)|0,G=G+Math.imul(Re,Qe)|0,N=N+Math.imul(ie,K)|0,U=U+Math.imul(ie,je)|0,U=U+Math.imul(Y,K)|0,G=G+Math.imul(Y,je)|0,N=N+Math.imul(ae,pe)|0,U=U+Math.imul(ae,Ae)|0,U=U+Math.imul(fe,pe)|0,G=G+Math.imul(fe,Ae)|0,N=N+Math.imul(q,kt)|0,U=U+Math.imul(q,ut)|0,U=U+Math.imul(de,kt)|0,G=G+Math.imul(de,ut)|0,N=N+Math.imul(ee,Bt)|0,U=U+Math.imul(ee,Lt)|0,U=U+Math.imul(se,Bt)|0,G=G+Math.imul(se,Lt)|0,N=N+Math.imul(re,ye)|0,U=U+Math.imul(re,ve)|0,U=U+Math.imul(ne,ye)|0,G=G+Math.imul(ne,ve)|0;var or=(I+N|0)+((U&8191)<<13)|0;I=(G+(U>>>13)|0)+(or>>>26)|0,or&=67108863,N=Math.imul(ft,Ie),U=Math.imul(ft,be),U=U+Math.imul(pt,Ie)|0,G=Math.imul(pt,be),N=N+Math.imul(Ge,oe)|0,U=U+Math.imul(Ge,Qe)|0,U=U+Math.imul(st,oe)|0,G=G+Math.imul(st,Qe)|0,N=N+Math.imul(le,K)|0,U=U+Math.imul(le,je)|0,U=U+Math.imul(Re,K)|0,G=G+Math.imul(Re,je)|0,N=N+Math.imul(ie,pe)|0,U=U+Math.imul(ie,Ae)|0,U=U+Math.imul(Y,pe)|0,G=G+Math.imul(Y,Ae)|0,N=N+Math.imul(ae,kt)|0,U=U+Math.imul(ae,ut)|0,U=U+Math.imul(fe,kt)|0,G=G+Math.imul(fe,ut)|0,N=N+Math.imul(q,Bt)|0,U=U+Math.imul(q,Lt)|0,U=U+Math.imul(de,Bt)|0,G=G+Math.imul(de,Lt)|0,N=N+Math.imul(ee,ye)|0,U=U+Math.imul(ee,ve)|0,U=U+Math.imul(se,ye)|0,G=G+Math.imul(se,ve)|0,N=N+Math.imul(re,Ee)|0,U=U+Math.imul(re,Se)|0,U=U+Math.imul(ne,Ee)|0,G=G+Math.imul(ne,Se)|0;var gr=(I+N|0)+((U&8191)<<13)|0;I=(G+(U>>>13)|0)+(gr>>>26)|0,gr&=67108863,N=Math.imul(tt,Ie),U=Math.imul(tt,be),U=U+Math.imul(ct,Ie)|0,G=Math.imul(ct,be),N=N+Math.imul(ft,oe)|0,U=U+Math.imul(ft,Qe)|0,U=U+Math.imul(pt,oe)|0,G=G+Math.imul(pt,Qe)|0,N=N+Math.imul(Ge,K)|0,U=U+Math.imul(Ge,je)|0,U=U+Math.imul(st,K)|0,G=G+Math.imul(st,je)|0,N=N+Math.imul(le,pe)|0,U=U+Math.imul(le,Ae)|0,U=U+Math.imul(Re,pe)|0,G=G+Math.imul(Re,Ae)|0,N=N+Math.imul(ie,kt)|0,U=U+Math.imul(ie,ut)|0,U=U+Math.imul(Y,kt)|0,G=G+Math.imul(Y,ut)|0,N=N+Math.imul(ae,Bt)|0,U=U+Math.imul(ae,Lt)|0,U=U+Math.imul(fe,Bt)|0,G=G+Math.imul(fe,Lt)|0,N=N+Math.imul(q,ye)|0,U=U+Math.imul(q,ve)|0,U=U+Math.imul(de,ye)|0,G=G+Math.imul(de,ve)|0,N=N+Math.imul(ee,Ee)|0,U=U+Math.imul(ee,Se)|0,U=U+Math.imul(se,Ee)|0,G=G+Math.imul(se,Se)|0,N=N+Math.imul(re,Je)|0,U=U+Math.imul(re,Be)|0,U=U+Math.imul(ne,Je)|0,G=G+Math.imul(ne,Be)|0;var $r=(I+N|0)+((U&8191)<<13)|0;I=(G+(U>>>13)|0)+($r>>>26)|0,$r&=67108863,N=Math.imul(he,Ie),U=Math.imul(he,be),U=U+Math.imul(De,Ie)|0,G=Math.imul(De,be),N=N+Math.imul(tt,oe)|0,U=U+Math.imul(tt,Qe)|0,U=U+Math.imul(ct,oe)|0,G=G+Math.imul(ct,Qe)|0,N=N+Math.imul(ft,K)|0,U=U+Math.imul(ft,je)|0,U=U+Math.imul(pt,K)|0,G=G+Math.imul(pt,je)|0,N=N+Math.imul(Ge,pe)|0,U=U+Math.imul(Ge,Ae)|0,U=U+Math.imul(st,pe)|0,G=G+Math.imul(st,Ae)|0,N=N+Math.imul(le,kt)|0,U=U+Math.imul(le,ut)|0,U=U+Math.imul(Re,kt)|0,G=G+Math.imul(Re,ut)|0,N=N+Math.imul(ie,Bt)|0,U=U+Math.imul(ie,Lt)|0,U=U+Math.imul(Y,Bt)|0,G=G+Math.imul(Y,Lt)|0,N=N+Math.imul(ae,ye)|0,U=U+Math.imul(ae,ve)|0,U=U+Math.imul(fe,ye)|0,G=G+Math.imul(fe,ve)|0,N=N+Math.imul(q,Ee)|0,U=U+Math.imul(q,Se)|0,U=U+Math.imul(de,Ee)|0,G=G+Math.imul(de,Se)|0,N=N+Math.imul(ee,Je)|0,U=U+Math.imul(ee,Be)|0,U=U+Math.imul(se,Je)|0,G=G+Math.imul(se,Be)|0,N=N+Math.imul(re,$e)|0,U=U+Math.imul(re,nt)|0,U=U+Math.imul(ne,$e)|0,G=G+Math.imul(ne,nt)|0;var Kr=(I+N|0)+((U&8191)<<13)|0;I=(G+(U>>>13)|0)+(Kr>>>26)|0,Kr&=67108863,N=Math.imul(he,oe),U=Math.imul(he,Qe),U=U+Math.imul(De,oe)|0,G=Math.imul(De,Qe),N=N+Math.imul(tt,K)|0,U=U+Math.imul(tt,je)|0,U=U+Math.imul(ct,K)|0,G=G+Math.imul(ct,je)|0,N=N+Math.imul(ft,pe)|0,U=U+Math.imul(ft,Ae)|0,U=U+Math.imul(pt,pe)|0,G=G+Math.imul(pt,Ae)|0,N=N+Math.imul(Ge,kt)|0,U=U+Math.imul(Ge,ut)|0,U=U+Math.imul(st,kt)|0,G=G+Math.imul(st,ut)|0,N=N+Math.imul(le,Bt)|0,U=U+Math.imul(le,Lt)|0,U=U+Math.imul(Re,Bt)|0,G=G+Math.imul(Re,Lt)|0,N=N+Math.imul(ie,ye)|0,U=U+Math.imul(ie,ve)|0,U=U+Math.imul(Y,ye)|0,G=G+Math.imul(Y,ve)|0,N=N+Math.imul(ae,Ee)|0,U=U+Math.imul(ae,Se)|0,U=U+Math.imul(fe,Ee)|0,G=G+Math.imul(fe,Se)|0,N=N+Math.imul(q,Je)|0,U=U+Math.imul(q,Be)|0,U=U+Math.imul(de,Je)|0,G=G+Math.imul(de,Be)|0,N=N+Math.imul(ee,$e)|0,U=U+Math.imul(ee,nt)|0,U=U+Math.imul(se,$e)|0,G=G+Math.imul(se,nt)|0;var Mt=(I+N|0)+((U&8191)<<13)|0;I=(G+(U>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,N=Math.imul(he,K),U=Math.imul(he,je),U=U+Math.imul(De,K)|0,G=Math.imul(De,je),N=N+Math.imul(tt,pe)|0,U=U+Math.imul(tt,Ae)|0,U=U+Math.imul(ct,pe)|0,G=G+Math.imul(ct,Ae)|0,N=N+Math.imul(ft,kt)|0,U=U+Math.imul(ft,ut)|0,U=U+Math.imul(pt,kt)|0,G=G+Math.imul(pt,ut)|0,N=N+Math.imul(Ge,Bt)|0,U=U+Math.imul(Ge,Lt)|0,U=U+Math.imul(st,Bt)|0,G=G+Math.imul(st,Lt)|0,N=N+Math.imul(le,ye)|0,U=U+Math.imul(le,ve)|0,U=U+Math.imul(Re,ye)|0,G=G+Math.imul(Re,ve)|0,N=N+Math.imul(ie,Ee)|0,U=U+Math.imul(ie,Se)|0,U=U+Math.imul(Y,Ee)|0,G=G+Math.imul(Y,Se)|0,N=N+Math.imul(ae,Je)|0,U=U+Math.imul(ae,Be)|0,U=U+Math.imul(fe,Je)|0,G=G+Math.imul(fe,Be)|0,N=N+Math.imul(q,$e)|0,U=U+Math.imul(q,nt)|0,U=U+Math.imul(de,$e)|0,G=G+Math.imul(de,nt)|0;var at=(I+N|0)+((U&8191)<<13)|0;I=(G+(U>>>13)|0)+(at>>>26)|0,at&=67108863,N=Math.imul(he,pe),U=Math.imul(he,Ae),U=U+Math.imul(De,pe)|0,G=Math.imul(De,Ae),N=N+Math.imul(tt,kt)|0,U=U+Math.imul(tt,ut)|0,U=U+Math.imul(ct,kt)|0,G=G+Math.imul(ct,ut)|0,N=N+Math.imul(ft,Bt)|0,U=U+Math.imul(ft,Lt)|0,U=U+Math.imul(pt,Bt)|0,G=G+Math.imul(pt,Lt)|0,N=N+Math.imul(Ge,ye)|0,U=U+Math.imul(Ge,ve)|0,U=U+Math.imul(st,ye)|0,G=G+Math.imul(st,ve)|0,N=N+Math.imul(le,Ee)|0,U=U+Math.imul(le,Se)|0,U=U+Math.imul(Re,Ee)|0,G=G+Math.imul(Re,Se)|0,N=N+Math.imul(ie,Je)|0,U=U+Math.imul(ie,Be)|0,U=U+Math.imul(Y,Je)|0,G=G+Math.imul(Y,Be)|0,N=N+Math.imul(ae,$e)|0,U=U+Math.imul(ae,nt)|0,U=U+Math.imul(fe,$e)|0,G=G+Math.imul(fe,nt)|0;var Te=(I+N|0)+((U&8191)<<13)|0;I=(G+(U>>>13)|0)+(Te>>>26)|0,Te&=67108863,N=Math.imul(he,kt),U=Math.imul(he,ut),U=U+Math.imul(De,kt)|0,G=Math.imul(De,ut),N=N+Math.imul(tt,Bt)|0,U=U+Math.imul(tt,Lt)|0,U=U+Math.imul(ct,Bt)|0,G=G+Math.imul(ct,Lt)|0,N=N+Math.imul(ft,ye)|0,U=U+Math.imul(ft,ve)|0,U=U+Math.imul(pt,ye)|0,G=G+Math.imul(pt,ve)|0,N=N+Math.imul(Ge,Ee)|0,U=U+Math.imul(Ge,Se)|0,U=U+Math.imul(st,Ee)|0,G=G+Math.imul(st,Se)|0,N=N+Math.imul(le,Je)|0,U=U+Math.imul(le,Be)|0,U=U+Math.imul(Re,Je)|0,G=G+Math.imul(Re,Be)|0,N=N+Math.imul(ie,$e)|0,U=U+Math.imul(ie,nt)|0,U=U+Math.imul(Y,$e)|0,G=G+Math.imul(Y,nt)|0;var ze=(I+N|0)+((U&8191)<<13)|0;I=(G+(U>>>13)|0)+(ze>>>26)|0,ze&=67108863,N=Math.imul(he,Bt),U=Math.imul(he,Lt),U=U+Math.imul(De,Bt)|0,G=Math.imul(De,Lt),N=N+Math.imul(tt,ye)|0,U=U+Math.imul(tt,ve)|0,U=U+Math.imul(ct,ye)|0,G=G+Math.imul(ct,ve)|0,N=N+Math.imul(ft,Ee)|0,U=U+Math.imul(ft,Se)|0,U=U+Math.imul(pt,Ee)|0,G=G+Math.imul(pt,Se)|0,N=N+Math.imul(Ge,Je)|0,U=U+Math.imul(Ge,Be)|0,U=U+Math.imul(st,Je)|0,G=G+Math.imul(st,Be)|0,N=N+Math.imul(le,$e)|0,U=U+Math.imul(le,nt)|0,U=U+Math.imul(Re,$e)|0,G=G+Math.imul(Re,nt)|0;var Ye=(I+N|0)+((U&8191)<<13)|0;I=(G+(U>>>13)|0)+(Ye>>>26)|0,Ye&=67108863,N=Math.imul(he,ye),U=Math.imul(he,ve),U=U+Math.imul(De,ye)|0,G=Math.imul(De,ve),N=N+Math.imul(tt,Ee)|0,U=U+Math.imul(tt,Se)|0,U=U+Math.imul(ct,Ee)|0,G=G+Math.imul(ct,Se)|0,N=N+Math.imul(ft,Je)|0,U=U+Math.imul(ft,Be)|0,U=U+Math.imul(pt,Je)|0,G=G+Math.imul(pt,Be)|0,N=N+Math.imul(Ge,$e)|0,U=U+Math.imul(Ge,nt)|0,U=U+Math.imul(st,$e)|0,G=G+Math.imul(st,nt)|0;var Pt=(I+N|0)+((U&8191)<<13)|0;I=(G+(U>>>13)|0)+(Pt>>>26)|0,Pt&=67108863,N=Math.imul(he,Ee),U=Math.imul(he,Se),U=U+Math.imul(De,Ee)|0,G=Math.imul(De,Se),N=N+Math.imul(tt,Je)|0,U=U+Math.imul(tt,Be)|0,U=U+Math.imul(ct,Je)|0,G=G+Math.imul(ct,Be)|0,N=N+Math.imul(ft,$e)|0,U=U+Math.imul(ft,nt)|0,U=U+Math.imul(pt,$e)|0,G=G+Math.imul(pt,nt)|0;var Ut=(I+N|0)+((U&8191)<<13)|0;I=(G+(U>>>13)|0)+(Ut>>>26)|0,Ut&=67108863,N=Math.imul(he,Je),U=Math.imul(he,Be),U=U+Math.imul(De,Je)|0,G=Math.imul(De,Be),N=N+Math.imul(tt,$e)|0,U=U+Math.imul(tt,nt)|0,U=U+Math.imul(ct,$e)|0,G=G+Math.imul(ct,nt)|0;var nr=(I+N|0)+((U&8191)<<13)|0;I=(G+(U>>>13)|0)+(nr>>>26)|0,nr&=67108863,N=Math.imul(he,$e),U=Math.imul(he,nt),U=U+Math.imul(De,$e)|0,G=Math.imul(De,nt);var Br=(I+N|0)+((U&8191)<<13)|0;return I=(G+(U>>>13)|0)+(Br>>>26)|0,Br&=67108863,X[0]=Et,X[1]=Rt,X[2]=wt,X[3]=Ct,X[4]=Xt,X[5]=zt,X[6]=or,X[7]=gr,X[8]=$r,X[9]=Kr,X[10]=Mt,X[11]=at,X[12]=Te,X[13]=ze,X[14]=Ye,X[15]=Pt,X[16]=Ut,X[17]=nr,X[18]=Br,I!==0&&(X[19]=I,H.length++),H};Math.imul||(f=c);function v(P,O,F){F.negative=O.negative^P.negative,F.length=P.length+O.length;for(var H=0,V=0,z=0;z>>26)|0,V+=X>>>26,X&=67108863}F.words[z]=I,H=X,X=V}return H!==0?F.words[z]=H:F.length--,F._strip()}function k(P,O,F){return v(P,O,F)}h.prototype.mulTo=function(O,F){var H,V=this.length+O.length;return this.length===10&&O.length===10?H=f(this,O,F):V<63?H=c(this,O,F):V<1024?H=v(this,O,F):H=k(this,O,F),H},h.prototype.mul=function(O){var F=new h(null);return F.words=new Array(this.length+O.length),this.mulTo(O,F)},h.prototype.mulf=function(O){var F=new h(null);return F.words=new Array(this.length+O.length),k(this,O,F)},h.prototype.imul=function(O){return this.clone().mulTo(O,this)},h.prototype.imuln=function(O){var F=O<0;F&&(O=-O),m(typeof O=="number"),m(O<67108864);for(var H=0,V=0;V>=26,H+=z/67108864|0,H+=X>>>26,this.words[V]=X&67108863}return H!==0&&(this.words[V]=H,this.length++),F?this.ineg():this},h.prototype.muln=function(O){return this.clone().imuln(O)},h.prototype.sqr=function(){return this.mul(this)},h.prototype.isqr=function(){return this.imul(this.clone())},h.prototype.pow=function(O){var F=s(O);if(F.length===0)return new h(1);for(var H=this,V=0;V=0);var F=O%26,H=(O-F)/26,V=67108863>>>26-F<<26-F,z;if(F!==0){var X=0;for(z=0;z>>26-F}X&&(this.words[z]=X,this.length++)}if(H!==0){for(z=this.length-1;z>=0;z--)this.words[z+H]=this.words[z];for(z=0;z=0);var V;F?V=(F-F%26)/26:V=0;var z=O%26,X=Math.min((O-z)/26,this.length),I=67108863^67108863>>>z<X)for(this.length-=X,U=0;U=0&&(G!==0||U>=V);U--){var te=this.words[U]|0;this.words[U]=G<<26-z|te>>>z,G=te&I}return N&&G!==0&&(N.words[N.length++]=G),this.length===0&&(this.words[0]=0,this.length=1),this._strip()},h.prototype.ishrn=function(O,F,H){return m(this.negative===0),this.iushrn(O,F,H)},h.prototype.shln=function(O){return this.clone().ishln(O)},h.prototype.ushln=function(O){return this.clone().iushln(O)},h.prototype.shrn=function(O){return this.clone().ishrn(O)},h.prototype.ushrn=function(O){return this.clone().iushrn(O)},h.prototype.testn=function(O){m(typeof O=="number"&&O>=0);var F=O%26,H=(O-F)/26,V=1<=0);var F=O%26,H=(O-F)/26;if(m(this.negative===0,"imaskn works only with positive numbers"),this.length<=H)return this;if(F!==0&&H++,this.length=Math.min(H,this.length),F!==0){var V=67108863^67108863>>>F<=67108864;F++)this.words[F]-=67108864,F===this.length-1?this.words[F+1]=1:this.words[F+1]++;return this.length=Math.max(this.length,F+1),this},h.prototype.isubn=function(O){if(m(typeof O=="number"),m(O<67108864),O<0)return this.iaddn(-O);if(this.negative!==0)return this.negative=0,this.iaddn(O),this.negative=1,this;if(this.words[0]-=O,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var F=0;F>26)-(N/67108864|0),this.words[z+H]=X&67108863}for(;z>26,this.words[z+H]=X&67108863;if(I===0)return this._strip();for(m(I===-1),I=0,z=0;z>26,this.words[z]=X&67108863;return this.negative=1,this._strip()},h.prototype._wordDiv=function(O,F){var H=this.length-O.length,V=this.clone(),z=O,X=z.words[z.length-1]|0,I=this._countBits(X);H=26-I,H!==0&&(z=z.ushln(H),V.iushln(H),X=z.words[z.length-1]|0);var N=V.length-z.length,U;if(F!=="mod"){U=new h(null),U.length=N+1,U.words=new Array(U.length);for(var G=0;G=0;re--){var ne=(V.words[z.length+re]|0)*67108864+(V.words[z.length+re-1]|0);for(ne=Math.min(ne/X|0,67108863),V._ishlnsubmul(z,ne,re);V.negative!==0;)ne--,V.negative=0,V._ishlnsubmul(z,1,re),V.isZero()||(V.negative^=1);U&&(U.words[re]=ne)}return U&&U._strip(),V._strip(),F!=="div"&&H!==0&&V.iushrn(H),{div:U||null,mod:V}},h.prototype.divmod=function(O,F,H){if(m(!O.isZero()),this.isZero())return{div:new h(0),mod:new h(0)};var V,z,X;return this.negative!==0&&O.negative===0?(X=this.neg().divmod(O,F),F!=="mod"&&(V=X.div.neg()),F!=="div"&&(z=X.mod.neg(),H&&z.negative!==0&&z.iadd(O)),{div:V,mod:z}):this.negative===0&&O.negative!==0?(X=this.divmod(O.neg(),F),F!=="mod"&&(V=X.div.neg()),{div:V,mod:X.mod}):this.negative&O.negative?(X=this.neg().divmod(O.neg(),F),F!=="div"&&(z=X.mod.neg(),H&&z.negative!==0&&z.isub(O)),{div:X.div,mod:z}):O.length>this.length||this.cmp(O)<0?{div:new h(0),mod:this}:O.length===1?F==="div"?{div:this.divn(O.words[0]),mod:null}:F==="mod"?{div:null,mod:new h(this.modrn(O.words[0]))}:{div:this.divn(O.words[0]),mod:new h(this.modrn(O.words[0]))}:this._wordDiv(O,F)},h.prototype.div=function(O){return this.divmod(O,"div",!1).div},h.prototype.mod=function(O){return this.divmod(O,"mod",!1).mod},h.prototype.umod=function(O){return this.divmod(O,"mod",!0).mod},h.prototype.divRound=function(O){var F=this.divmod(O);if(F.mod.isZero())return F.div;var H=F.div.negative!==0?F.mod.isub(O):F.mod,V=O.ushrn(1),z=O.andln(1),X=H.cmp(V);return X<0||z===1&&X===0?F.div:F.div.negative!==0?F.div.isubn(1):F.div.iaddn(1)},h.prototype.modrn=function(O){var F=O<0;F&&(O=-O),m(O<=67108863);for(var H=(1<<26)%O,V=0,z=this.length-1;z>=0;z--)V=(H*V+(this.words[z]|0))%O;return F?-V:V},h.prototype.modn=function(O){return this.modrn(O)},h.prototype.idivn=function(O){var F=O<0;F&&(O=-O),m(O<=67108863);for(var H=0,V=this.length-1;V>=0;V--){var z=(this.words[V]|0)+H*67108864;this.words[V]=z/O|0,H=z%O}return this._strip(),F?this.ineg():this},h.prototype.divn=function(O){return this.clone().idivn(O)},h.prototype.egcd=function(O){m(O.negative===0),m(!O.isZero());var F=this,H=O.clone();F.negative!==0?F=F.umod(O):F=F.clone();for(var V=new h(1),z=new h(0),X=new h(0),I=new h(1),N=0;F.isEven()&&H.isEven();)F.iushrn(1),H.iushrn(1),++N;for(var U=H.clone(),G=F.clone();!F.isZero();){for(var te=0,re=1;!(F.words[0]&re)&&te<26;++te,re<<=1);if(te>0)for(F.iushrn(te);te-- >0;)(V.isOdd()||z.isOdd())&&(V.iadd(U),z.isub(G)),V.iushrn(1),z.iushrn(1);for(var ne=0,ge=1;!(H.words[0]&ge)&&ne<26;++ne,ge<<=1);if(ne>0)for(H.iushrn(ne);ne-- >0;)(X.isOdd()||I.isOdd())&&(X.iadd(U),I.isub(G)),X.iushrn(1),I.iushrn(1);F.cmp(H)>=0?(F.isub(H),V.isub(X),z.isub(I)):(H.isub(F),X.isub(V),I.isub(z))}return{a:X,b:I,gcd:H.iushln(N)}},h.prototype._invmp=function(O){m(O.negative===0),m(!O.isZero());var F=this,H=O.clone();F.negative!==0?F=F.umod(O):F=F.clone();for(var V=new h(1),z=new h(0),X=H.clone();F.cmpn(1)>0&&H.cmpn(1)>0;){for(var I=0,N=1;!(F.words[0]&N)&&I<26;++I,N<<=1);if(I>0)for(F.iushrn(I);I-- >0;)V.isOdd()&&V.iadd(X),V.iushrn(1);for(var U=0,G=1;!(H.words[0]&G)&&U<26;++U,G<<=1);if(U>0)for(H.iushrn(U);U-- >0;)z.isOdd()&&z.iadd(X),z.iushrn(1);F.cmp(H)>=0?(F.isub(H),V.isub(z)):(H.isub(F),z.isub(V))}var te;return F.cmpn(1)===0?te=V:te=z,te.cmpn(0)<0&&te.iadd(O),te},h.prototype.gcd=function(O){if(this.isZero())return O.abs();if(O.isZero())return this.abs();var F=this.clone(),H=O.clone();F.negative=0,H.negative=0;for(var V=0;F.isEven()&&H.isEven();V++)F.iushrn(1),H.iushrn(1);do{for(;F.isEven();)F.iushrn(1);for(;H.isEven();)H.iushrn(1);var z=F.cmp(H);if(z<0){var X=F;F=H,H=X}else if(z===0||H.cmpn(1)===0)break;F.isub(H)}while(!0);return H.iushln(V)},h.prototype.invm=function(O){return this.egcd(O).a.umod(O)},h.prototype.isEven=function(){return(this.words[0]&1)===0},h.prototype.isOdd=function(){return(this.words[0]&1)===1},h.prototype.andln=function(O){return this.words[0]&O},h.prototype.bincn=function(O){m(typeof O=="number");var F=O%26,H=(O-F)/26,V=1<>>26,I&=67108863,this.words[X]=I}return z!==0&&(this.words[X]=z,this.length++),this},h.prototype.isZero=function(){return this.length===1&&this.words[0]===0},h.prototype.cmpn=function(O){var F=O<0;if(this.negative!==0&&!F)return-1;if(this.negative===0&&F)return 1;this._strip();var H;if(this.length>1)H=1;else{F&&(O=-O),m(O<=67108863,"Number is too big");var V=this.words[0]|0;H=V===O?0:VO.length)return 1;if(this.length=0;H--){var V=this.words[H]|0,z=O.words[H]|0;if(V!==z){Vz&&(F=1);break}}return F},h.prototype.gtn=function(O){return this.cmpn(O)===1},h.prototype.gt=function(O){return this.cmp(O)===1},h.prototype.gten=function(O){return this.cmpn(O)>=0},h.prototype.gte=function(O){return this.cmp(O)>=0},h.prototype.ltn=function(O){return this.cmpn(O)===-1},h.prototype.lt=function(O){return this.cmp(O)===-1},h.prototype.lten=function(O){return this.cmpn(O)<=0},h.prototype.lte=function(O){return this.cmp(O)<=0},h.prototype.eqn=function(O){return this.cmpn(O)===0},h.prototype.eq=function(O){return this.cmp(O)===0},h.red=function(O){return new B(O)},h.prototype.toRed=function(O){return m(!this.red,"Already a number in reduction context"),m(this.negative===0,"red works only with positives"),O.convertTo(this)._forceRed(O)},h.prototype.fromRed=function(){return m(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},h.prototype._forceRed=function(O){return this.red=O,this},h.prototype.forceRed=function(O){return m(!this.red,"Already a number in reduction context"),this._forceRed(O)},h.prototype.redAdd=function(O){return m(this.red,"redAdd works only with red numbers"),this.red.add(this,O)},h.prototype.redIAdd=function(O){return m(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,O)},h.prototype.redSub=function(O){return m(this.red,"redSub works only with red numbers"),this.red.sub(this,O)},h.prototype.redISub=function(O){return m(this.red,"redISub works only with red numbers"),this.red.isub(this,O)},h.prototype.redShl=function(O){return m(this.red,"redShl works only with red numbers"),this.red.shl(this,O)},h.prototype.redMul=function(O){return m(this.red,"redMul works only with red numbers"),this.red._verify2(this,O),this.red.mul(this,O)},h.prototype.redIMul=function(O){return m(this.red,"redMul works only with red numbers"),this.red._verify2(this,O),this.red.imul(this,O)},h.prototype.redSqr=function(){return m(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},h.prototype.redISqr=function(){return m(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},h.prototype.redSqrt=function(){return m(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},h.prototype.redInvm=function(){return m(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},h.prototype.redNeg=function(){return m(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},h.prototype.redPow=function(O){return m(this.red&&!O.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,O)};var T={k256:null,p224:null,p192:null,p25519:null};function C(P,O){this.name=P,this.p=new h(O,16),this.n=this.p.bitLength(),this.k=new h(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}C.prototype._tmp=function(){var O=new h(null);return O.words=new Array(Math.ceil(this.n/13)),O},C.prototype.ireduce=function(O){var F=O,H;do this.split(F,this.tmp),F=this.imulK(F),F=F.iadd(this.tmp),H=F.bitLength();while(H>this.n);var V=H0?F.isub(this.p):F.strip!==void 0?F.strip():F._strip(),F},C.prototype.split=function(O,F){O.iushrn(this.n,0,F)},C.prototype.imulK=function(O){return O.imul(this.k)};function D(){C.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}b(D,C),D.prototype.split=function(O,F){for(var H=4194303,V=Math.min(O.length,9),z=0;z>>22,X=I}X>>>=22,O.words[z-10]=X,X===0&&O.length>10?O.length-=10:O.length-=9},D.prototype.imulK=function(O){O.words[O.length]=0,O.words[O.length+1]=0,O.length+=2;for(var F=0,H=0;H>>=26,O.words[H]=z,F=V}return F!==0&&(O.words[O.length++]=F),O},h._prime=function(O){if(T[O])return T[O];var F;if(O==="k256")F=new D;else if(O==="p224")F=new j;else if(O==="p192")F=new L;else if(O==="p25519")F=new M;else throw new Error("Unknown prime "+O);return T[O]=F,F};function B(P){if(typeof P=="string"){var O=h._prime(P);this.m=O.p,this.prime=O}else m(P.gtn(1),"modulus must be greater than 1"),this.m=P,this.prime=null}B.prototype._verify1=function(O){m(O.negative===0,"red works only with positives"),m(O.red,"red works only with red numbers")},B.prototype._verify2=function(O,F){m((O.negative|F.negative)===0,"red works only with positives"),m(O.red&&O.red===F.red,"red works only with red numbers")},B.prototype.imod=function(O){return this.prime?this.prime.ireduce(O)._forceRed(this):(x(O,O.umod(this.m)._forceRed(this)),O)},B.prototype.neg=function(O){return O.isZero()?O.clone():this.m.sub(O)._forceRed(this)},B.prototype.add=function(O,F){this._verify2(O,F);var H=O.add(F);return H.cmp(this.m)>=0&&H.isub(this.m),H._forceRed(this)},B.prototype.iadd=function(O,F){this._verify2(O,F);var H=O.iadd(F);return H.cmp(this.m)>=0&&H.isub(this.m),H},B.prototype.sub=function(O,F){this._verify2(O,F);var H=O.sub(F);return H.cmpn(0)<0&&H.iadd(this.m),H._forceRed(this)},B.prototype.isub=function(O,F){this._verify2(O,F);var H=O.isub(F);return H.cmpn(0)<0&&H.iadd(this.m),H},B.prototype.shl=function(O,F){return this._verify1(O),this.imod(O.ushln(F))},B.prototype.imul=function(O,F){return this._verify2(O,F),this.imod(O.imul(F))},B.prototype.mul=function(O,F){return this._verify2(O,F),this.imod(O.mul(F))},B.prototype.isqr=function(O){return this.imul(O,O.clone())},B.prototype.sqr=function(O){return this.mul(O,O)},B.prototype.sqrt=function(O){if(O.isZero())return O.clone();var F=this.m.andln(3);if(m(F%2===1),F===3){var H=this.m.add(new h(1)).iushrn(2);return this.pow(O,H)}for(var V=this.m.subn(1),z=0;!V.isZero()&&V.andln(1)===0;)z++,V.iushrn(1);m(!V.isZero());var X=new h(1).toRed(this),I=X.redNeg(),N=this.m.subn(1).iushrn(1),U=this.m.bitLength();for(U=new h(2*U*U).toRed(this);this.pow(U,N).cmp(I)!==0;)U.redIAdd(I);for(var G=this.pow(U,V),te=this.pow(O,V.addn(1).iushrn(1)),re=this.pow(O,V),ne=z;re.cmp(X)!==0;){for(var ge=re,ee=0;ge.cmp(X)!==0;ee++)ge=ge.redSqr();m(ee=0;z--){for(var G=F.words[z],te=U-1;te>=0;te--){var re=G>>te&1;if(X!==V[0]&&(X=this.sqr(X)),re===0&&I===0){N=0;continue}I<<=1,I|=re,N++,!(N!==H&&(z!==0||te!==0))&&(X=this.mul(X,V[I]),N=0,I=0)}U=26}return X},B.prototype.convertTo=function(O){var F=O.umod(this.m);return F===O?F.clone():F},B.prototype.convertFrom=function(O){var F=O.clone();return F.red=null,F},h.mont=function(O){return new R(O)};function R(P){B.call(this,P),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new h(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}b(R,B),R.prototype.convertTo=function(O){return this.imod(O.ushln(this.shift))},R.prototype.convertFrom=function(O){var F=this.imod(O.mul(this.rinv));return F.red=null,F},R.prototype.imul=function(O,F){if(O.isZero()||F.isZero())return O.words[0]=0,O.length=1,O;var H=O.imul(F),V=H.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),z=H.isub(V).iushrn(this.shift),X=z;return z.cmp(this.m)>=0?X=z.isub(this.m):z.cmpn(0)<0&&(X=z.iadd(this.m)),X._forceRed(this)},R.prototype.mul=function(O,F){if(O.isZero()||F.isZero())return new h(0)._forceRed(this);var H=O.mul(F),V=H.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),z=H.isub(V).iushrn(this.shift),X=z;return z.cmp(this.m)>=0?X=z.isub(this.m):z.cmpn(0)<0&&(X=z.iadd(this.m)),X._forceRed(this)},R.prototype.invm=function(O){var F=this.imod(O._invmp(this.m).mul(this.r2));return F._forceRed(this)}})(typeof n>"u"||n,void 0)},{buffer:185}],184:[function(e,n,i){function a(b){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(_){return typeof _}:a=function(_){return _&&typeof Symbol=="function"&&_.constructor===Symbol&&_!==Symbol.prototype?"symbol":typeof _},a(b)}var l;n.exports=function(h){return l||(l=new d(null)),l.generate(h)};function d(b){this.rand=b}if(n.exports.Rand=d,d.prototype.generate=function(h){return this._rand(h)},d.prototype._rand=function(h){if(this.rand.getBytes)return this.rand.getBytes(h);for(var _=new Uint8Array(h),g=0;g<_.length;g++)_[g]=this.rand.getByte();return _},(typeof self>"u"?"undefined":a(self))==="object")self.crypto&&self.crypto.getRandomValues?d.prototype._rand=function(h){var _=new Uint8Array(h);return self.crypto.getRandomValues(_),_}:self.msCrypto&&self.msCrypto.getRandomValues?d.prototype._rand=function(h){var _=new Uint8Array(h);return self.msCrypto.getRandomValues(_),_}:(typeof window>"u"?"undefined":a(window))==="object"&&(d.prototype._rand=function(){throw new Error("Not implemented yet")});else try{var m=e("crypto");if(typeof m.randomBytes!="function")throw new Error("Not supported");d.prototype._rand=function(h){return m.randomBytes(h)}}catch{}},{crypto:185}],185:[function(e,n,i){},{}],186:[function(e,n,i){var a=e("safe-buffer").Buffer;function l(g){a.isBuffer(g)||(g=a.from(g));for(var y=g.length/4|0,x=new Array(y),p=0;p>>24]^u[f>>>16&255]^o[v>>>8&255]^s[k&255]^y[L++],C=w[f>>>24]^u[v>>>16&255]^o[k>>>8&255]^s[c&255]^y[L++],D=w[v>>>24]^u[k>>>16&255]^o[c>>>8&255]^s[f&255]^y[L++],j=w[k>>>24]^u[c>>>16&255]^o[f>>>8&255]^s[v&255]^y[L++],c=T,f=C,v=D,k=j;return T=(p[c>>>24]<<24|p[f>>>16&255]<<16|p[v>>>8&255]<<8|p[k&255])^y[L++],C=(p[f>>>24]<<24|p[v>>>16&255]<<16|p[k>>>8&255]<<8|p[c&255])^y[L++],D=(p[v>>>24]<<24|p[k>>>16&255]<<16|p[c>>>8&255]<<8|p[f&255])^y[L++],j=(p[k>>>24]<<24|p[c>>>16&255]<<16|p[f>>>8&255]<<8|p[v&255])^y[L++],T=T>>>0,C=C>>>0,D=D>>>0,j=j>>>0,[T,C,D,j]}var b=[0,1,2,4,8,16,32,64,128,27,54],h=function(){for(var g=new Array(256),y=0;y<256;y++)y<128?g[y]=y<<1:g[y]=y<<1^283;for(var x=[],p=[],S=[[],[],[],[]],w=[[],[],[],[]],u=0,o=0,s=0;s<256;++s){var c=o^o<<1^o<<2^o<<3^o<<4;c=c>>>8^c&255^99,x[u]=c,p[c]=u;var f=g[u],v=g[f],k=g[v],T=g[c]*257^c*16843008;S[0][u]=T<<24|T>>>8,S[1][u]=T<<16|T>>>16,S[2][u]=T<<8|T>>>24,S[3][u]=T,T=k*16843009^v*65537^f*257^u*16843008,w[0][c]=T<<24|T>>>8,w[1][c]=T<<16|T>>>16,w[2][c]=T<<8|T>>>24,w[3][c]=T,u===0?u=o=1:(u=f^g[g[g[k^f]]],o^=g[g[o]])}return{SBOX:x,INV_SBOX:p,SUB_MIX:S,INV_SUB_MIX:w}}();function _(g){this._key=l(g),this._reset()}_.blockSize=4*4,_.keySize=256/8,_.prototype.blockSize=_.blockSize,_.prototype.keySize=_.keySize,_.prototype._reset=function(){for(var g=this._key,y=g.length,x=y+6,p=(x+1)*4,S=[],w=0;w>>24,u=h.SBOX[u>>>24]<<24|h.SBOX[u>>>16&255]<<16|h.SBOX[u>>>8&255]<<8|h.SBOX[u&255],u^=b[w/y|0]<<24):y>6&&w%y===4&&(u=h.SBOX[u>>>24]<<24|h.SBOX[u>>>16&255]<<16|h.SBOX[u>>>8&255]<<8|h.SBOX[u&255]),S[w]=S[w-y]^u}for(var o=[],s=0;s>>24]]^h.INV_SUB_MIX[1][h.SBOX[f>>>16&255]]^h.INV_SUB_MIX[2][h.SBOX[f>>>8&255]]^h.INV_SUB_MIX[3][h.SBOX[f&255]]}this._nRounds=x,this._keySchedule=S,this._invKeySchedule=o},_.prototype.encryptBlockRaw=function(g){return g=l(g),m(g,this._keySchedule,h.SUB_MIX,h.SBOX,this._nRounds)},_.prototype.encryptBlock=function(g){var y=this.encryptBlockRaw(g),x=a.allocUnsafe(16);return x.writeUInt32BE(y[0],0),x.writeUInt32BE(y[1],4),x.writeUInt32BE(y[2],8),x.writeUInt32BE(y[3],12),x},_.prototype.decryptBlock=function(g){g=l(g);var y=g[1];g[1]=g[3],g[3]=y;var x=m(g,this._invKeySchedule,h.INV_SUB_MIX,h.INV_SBOX,this._nRounds),p=a.allocUnsafe(16);return p.writeUInt32BE(x[0],0),p.writeUInt32BE(x[3],4),p.writeUInt32BE(x[2],8),p.writeUInt32BE(x[1],12),p},_.prototype.scrub=function(){d(this._keySchedule),d(this._invKeySchedule),d(this._key)},n.exports.AES=_},{"safe-buffer":494}],187:[function(e,n,i){var a=e("./aes"),l=e("safe-buffer").Buffer,d=e("cipher-base"),m=e("inherits"),b=e("./ghash"),h=e("buffer-xor"),_=e("./incr32");function g(p,S){var w=0;p.length!==S.length&&w++;for(var u=Math.min(p.length,S.length),o=0;o16)return o=this.cache.slice(0,16),this.cache=this.cache.slice(16),o}else if(this.cache.length>=16)return o=this.cache.slice(0,16),this.cache=this.cache.slice(16),o;return null},x.prototype.flush=function(){if(this.cache.length)return this.cache};function p(u){var o=u[15];if(o<1||o>16)throw new Error("unable to decrypt data");for(var s=-1;++s15){var u=this.cache.slice(0,16);return this.cache=this.cache.slice(16),u}return null},p.prototype.flush=function(){for(var u=16-this.cache.length,o=d.allocUnsafe(u),s=-1;++s>>0,0),_.writeUInt32BE(h[1]>>>0,4),_.writeUInt32BE(h[2]>>>0,8),_.writeUInt32BE(h[3]>>>0,12),_}function b(h){this.h=h,this.state=a.alloc(16,0),this.cache=a.allocUnsafe(0)}b.prototype.ghash=function(h){for(var _=-1;++_0;g--)h[g]=h[g]>>>1|(h[g-1]&1)<<31;h[0]=h[0]>>>1,x&&(h[0]=h[0]^225<<24)}this.state=m(_)},b.prototype.update=function(h){this.cache=a.concat([this.cache,h]);for(var _;this.cache.length>=16;)_=this.cache.slice(0,16),this.cache=this.cache.slice(16),this.ghash(_)},b.prototype.final=function(h,_){return this.cache.length&&this.ghash(a.concat([this.cache,l],16)),this.ghash(m([0,h,0,_])),this.state},n.exports=b},{"safe-buffer":494}],192:[function(e,n,i){function a(l){for(var d=l.length,m;d--;)if(m=l.readUInt8(d),m===255)l.writeUInt8(0,d);else{m++,l.writeUInt8(m,d);break}}n.exports=a},{}],193:[function(e,n,i){var a=e("buffer-xor");i.encrypt=function(l,d){var m=a(d,l._prev);return l._prev=l._cipher.encryptBlock(m),l._prev},i.decrypt=function(l,d){var m=l._prev;l._prev=d;var b=l._cipher.decryptBlock(d);return a(b,m)}},{"buffer-xor":217}],194:[function(e,n,i){var a=e("safe-buffer").Buffer,l=e("buffer-xor");function d(m,b,h){var _=b.length,g=l(b,m._cache);return m._cache=m._cache.slice(_),m._prev=a.concat([m._prev,h?b:g]),g}i.encrypt=function(m,b,h){for(var _=a.allocUnsafe(0),g;b.length;)if(m._cache.length===0&&(m._cache=m._cipher.encryptBlock(m._prev),m._prev=a.allocUnsafe(0)),m._cache.length<=b.length)g=m._cache.length,_=a.concat([_,d(m,b.slice(0,g),h)]),b=b.slice(g);else{_=a.concat([_,d(m,b,h)]);break}return _}},{"buffer-xor":217,"safe-buffer":494}],195:[function(e,n,i){var a=e("safe-buffer").Buffer;function l(m,b,h){for(var _,g=-1,y=8,x=0,p,S;++g>g%8,m._prev=d(m._prev,h?p:S);return x}function d(m,b){var h=m.length,_=-1,g=a.allocUnsafe(m.length);for(m=a.concat([m,a.from([b])]);++_>7;return g}i.encrypt=function(m,b,h){for(var _=b.length,g=a.allocUnsafe(_),y=-1;++y<_;)g[y]=l(m,b[y],h);return g}},{"safe-buffer":494}],196:[function(e,n,i){var a=e("safe-buffer").Buffer;function l(d,m,b){var h=d._cipher.encryptBlock(d._prev),_=h[0]^m;return d._prev=a.concat([d._prev.slice(1),a.from([b?m:_])]),_}i.encrypt=function(d,m,b){for(var h=m.length,_=a.allocUnsafe(h),g=-1;++g=0||!y.umod(_.prime1)||!y.umod(_.prime2);)y=new l(d(g));return y}}).call(this,e("buffer").Buffer)},{"bn.js":207,buffer:216,randombytes:475}],207:[function(e,n,i){arguments[4][181][0].apply(i,arguments)},{buffer:185,dup:181}],208:[function(e,n,i){n.exports=e("./browser/algorithms.json")},{"./browser/algorithms.json":209}],209:[function(e,n,i){n.exports={sha224WithRSAEncryption:{sign:"rsa",hash:"sha224",id:"302d300d06096086480165030402040500041c"},"RSA-SHA224":{sign:"ecdsa/rsa",hash:"sha224",id:"302d300d06096086480165030402040500041c"},sha256WithRSAEncryption:{sign:"rsa",hash:"sha256",id:"3031300d060960864801650304020105000420"},"RSA-SHA256":{sign:"ecdsa/rsa",hash:"sha256",id:"3031300d060960864801650304020105000420"},sha384WithRSAEncryption:{sign:"rsa",hash:"sha384",id:"3041300d060960864801650304020205000430"},"RSA-SHA384":{sign:"ecdsa/rsa",hash:"sha384",id:"3041300d060960864801650304020205000430"},sha512WithRSAEncryption:{sign:"rsa",hash:"sha512",id:"3051300d060960864801650304020305000440"},"RSA-SHA512":{sign:"ecdsa/rsa",hash:"sha512",id:"3051300d060960864801650304020305000440"},"RSA-SHA1":{sign:"rsa",hash:"sha1",id:"3021300906052b0e03021a05000414"},"ecdsa-with-SHA1":{sign:"ecdsa",hash:"sha1",id:""},sha256:{sign:"ecdsa",hash:"sha256",id:""},sha224:{sign:"ecdsa",hash:"sha224",id:""},sha384:{sign:"ecdsa",hash:"sha384",id:""},sha512:{sign:"ecdsa",hash:"sha512",id:""},"DSA-SHA":{sign:"dsa",hash:"sha1",id:""},"DSA-SHA1":{sign:"dsa",hash:"sha1",id:""},DSA:{sign:"dsa",hash:"sha1",id:""},"DSA-WITH-SHA224":{sign:"dsa",hash:"sha224",id:""},"DSA-SHA224":{sign:"dsa",hash:"sha224",id:""},"DSA-WITH-SHA256":{sign:"dsa",hash:"sha256",id:""},"DSA-SHA256":{sign:"dsa",hash:"sha256",id:""},"DSA-WITH-SHA384":{sign:"dsa",hash:"sha384",id:""},"DSA-SHA384":{sign:"dsa",hash:"sha384",id:""},"DSA-WITH-SHA512":{sign:"dsa",hash:"sha512",id:""},"DSA-SHA512":{sign:"dsa",hash:"sha512",id:""},"DSA-RIPEMD160":{sign:"dsa",hash:"rmd160",id:""},ripemd160WithRSA:{sign:"rsa",hash:"rmd160",id:"3021300906052b2403020105000414"},"RSA-RIPEMD160":{sign:"rsa",hash:"rmd160",id:"3021300906052b2403020105000414"},md5WithRSAEncryption:{sign:"rsa",hash:"md5",id:"3020300c06082a864886f70d020505000410"},"RSA-MD5":{sign:"rsa",hash:"md5",id:"3020300c06082a864886f70d020505000410"}}},{}],210:[function(e,n,i){n.exports={"1.3.132.0.10":"secp256k1","1.3.132.0.33":"p224","1.2.840.10045.3.1.1":"p192","1.2.840.10045.3.1.7":"p256","1.3.132.0.34":"p384","1.3.132.0.35":"p521"}},{}],211:[function(e,n,i){var a=e("safe-buffer").Buffer,l=e("create-hash"),d=e("readable-stream"),m=e("inherits"),b=e("./sign"),h=e("./verify"),_=e("./algorithms.json");Object.keys(_).forEach(function(S){_[S].id=a.from(_[S].id,"hex"),_[S.toLowerCase()]=_[S]});function g(S){d.Writable.call(this);var w=_[S];if(!w)throw new Error("Unknown message digest");this._hashType=w.hash,this._hash=l(w.hash),this._tag=w.id,this._signType=w.sign}m(g,d.Writable),g.prototype._write=function(w,u,o){this._hash.update(w),o()},g.prototype.update=function(w,u){return typeof w=="string"&&(w=a.from(w,u)),this._hash.update(w),this},g.prototype.sign=function(w,u){this.end();var o=this._hash.digest(),s=b(o,w,this._hashType,this._signType,this._tag);return u?s.toString(u):s};function y(S){d.Writable.call(this);var w=_[S];if(!w)throw new Error("Unknown message digest");this._hash=l(w.hash),this._tag=w.id,this._signType=w.sign}m(y,d.Writable),y.prototype._write=function(w,u,o){this._hash.update(w),o()},y.prototype.update=function(w,u){return typeof w=="string"&&(w=a.from(w,u)),this._hash.update(w),this},y.prototype.verify=function(w,u,o){typeof u=="string"&&(u=a.from(u,o)),this.end();var s=this._hash.digest();return h(u,s,w,this._signType,this._tag)};function x(S){return new g(S)}function p(S){return new y(S)}n.exports={Sign:x,Verify:p,createSign:x,createVerify:p}},{"./algorithms.json":209,"./sign":212,"./verify":213,"create-hash":331,inherits:387,"readable-stream":491,"safe-buffer":214}],212:[function(e,n,i){var a=e("safe-buffer").Buffer,l=e("create-hmac"),d=e("browserify-rsa"),m=e("elliptic").ec,b=e("bn.js"),h=e("parse-asn1"),_=e("./curves.json");function g(c,f,v,k,T){var C=h(f);if(C.curve){if(k!=="ecdsa"&&k!=="ecdsa/rsa")throw new Error("wrong private key type");return y(c,C)}else if(C.type==="dsa"){if(k!=="dsa")throw new Error("wrong private key type");return x(c,C,v)}else if(k!=="rsa"&&k!=="ecdsa/rsa")throw new Error("wrong private key type");c=a.concat([T,c]);for(var D=C.modulus.byteLength(),j=[0,1];c.length+j.length+10&&v.ishrn(k),v}function u(c,f){c=w(c,f),c=c.mod(f);var v=a.from(c.toArray());if(v.length=p)throw new Error("invalid sig")}n.exports=h},{"./curves.json":210,"bn.js":183,elliptic:350,"parse-asn1":459,"safe-buffer":214}],214:[function(e,n,i){/*! safe-buffer. MIT License. Feross Aboukhadijeh */var a=e("buffer"),l=a.Buffer;function d(b,h){for(var _ in b)h[_]=b[_]}l.from&&l.alloc&&l.allocUnsafe&&l.allocUnsafeSlow?n.exports=a:(d(a,i),i.Buffer=m);function m(b,h,_){return l(b,h,_)}m.prototype=Object.create(l.prototype),d(l,m),m.from=function(b,h,_){if(typeof b=="number")throw new TypeError("Argument must not be a number");return l(b,h,_)},m.alloc=function(b,h,_){if(typeof b!="number")throw new TypeError("Argument must be a number");var g=l(b);return h!==void 0?typeof _=="string"?g.fill(h,_):g.fill(h):g.fill(0),g},m.allocUnsafe=function(b){if(typeof b!="number")throw new TypeError("Argument must be a number");return l(b)},m.allocUnsafeSlow=function(b){if(typeof b!="number")throw new TypeError("Argument must be a number");return a.SlowBuffer(b)}},{buffer:216}],215:[function(e,n,i){arguments[4][185][0].apply(i,arguments)},{dup:185}],216:[function(e,n,i){(function(g){function l(ie){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(Z){return typeof Z}:l=function(Z){return Z&&typeof Symbol=="function"&&Z.constructor===Symbol&&Z!==Symbol.prototype?"symbol":typeof Z},l(ie)}var d=e("base64-js"),m=e("ieee754");i.Buffer=g,i.SlowBuffer=f,i.INSPECT_MAX_BYTES=50;var b=2147483647;i.kMaxLength=b,g.TYPED_ARRAY_SUPPORT=h(),!g.TYPED_ARRAY_SUPPORT&&typeof console<"u"&&typeof console.error=="function"&&console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");function h(){try{var ie=new Uint8Array(1);return ie.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},ie.foo()===42}catch{return!1}}Object.defineProperty(g.prototype,"parent",{enumerable:!0,get:function(){if(g.isBuffer(this))return this.buffer}}),Object.defineProperty(g.prototype,"offset",{enumerable:!0,get:function(){if(g.isBuffer(this))return this.byteOffset}});function _(ie){if(ie>b)throw new RangeError('The value "'+ie+'" is invalid for option "size"');var Y=new Uint8Array(ie);return Y.__proto__=g.prototype,Y}function g(ie,Y,Z){if(typeof ie=="number"){if(typeof Y=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return S(ie)}return y(ie,Y,Z)}typeof Symbol<"u"&&Symbol.species!=null&&g[Symbol.species]===g&&Object.defineProperty(g,Symbol.species,{value:null,configurable:!0,enumerable:!1,writable:!1}),g.poolSize=8192;function y(ie,Y,Z){if(typeof ie=="string")return w(ie,Y);if(ArrayBuffer.isView(ie))return u(ie);if(ie==null)throw TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+l(ie));if(fe(ie,ArrayBuffer)||ie&&fe(ie.buffer,ArrayBuffer))return o(ie,Y,Z);if(typeof ie=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');var le=ie.valueOf&&ie.valueOf();if(le!=null&&le!==ie)return g.from(le,Y,Z);var Re=s(ie);if(Re)return Re;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof ie[Symbol.toPrimitive]=="function")return g.from(ie[Symbol.toPrimitive]("string"),Y,Z);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+l(ie))}g.from=function(ie,Y,Z){return y(ie,Y,Z)},g.prototype.__proto__=Uint8Array.prototype,g.__proto__=Uint8Array;function x(ie){if(typeof ie!="number")throw new TypeError('"size" argument must be of type number');if(ie<0)throw new RangeError('The value "'+ie+'" is invalid for option "size"')}function p(ie,Y,Z){return x(ie),ie<=0?_(ie):Y!==void 0?typeof Z=="string"?_(ie).fill(Y,Z):_(ie).fill(Y):_(ie)}g.alloc=function(ie,Y,Z){return p(ie,Y,Z)};function S(ie){return x(ie),_(ie<0?0:c(ie)|0)}g.allocUnsafe=function(ie){return S(ie)},g.allocUnsafeSlow=function(ie){return S(ie)};function w(ie,Y){if((typeof Y!="string"||Y==="")&&(Y="utf8"),!g.isEncoding(Y))throw new TypeError("Unknown encoding: "+Y);var Z=v(ie,Y)|0,le=_(Z),Re=le.write(ie,Y);return Re!==Z&&(le=le.slice(0,Re)),le}function u(ie){for(var Y=ie.length<0?0:c(ie.length)|0,Z=_(Y),le=0;le=b)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+b.toString(16)+" bytes");return ie|0}function f(ie){return+ie!=ie&&(ie=0),g.alloc(+ie)}g.isBuffer=function(Y){return Y!=null&&Y._isBuffer===!0&&Y!==g.prototype},g.compare=function(Y,Z){if(fe(Y,Uint8Array)&&(Y=g.from(Y,Y.offset,Y.byteLength)),fe(Z,Uint8Array)&&(Z=g.from(Z,Z.offset,Z.byteLength)),!g.isBuffer(Y)||!g.isBuffer(Z))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(Y===Z)return 0;for(var le=Y.length,Re=Z.length,Ce=0,Ge=Math.min(le,Re);Ce2&&arguments[2]===!0;if(!le&&Z===0)return 0;for(var Re=!1;;)switch(Y){case"ascii":case"latin1":case"binary":return Z;case"utf8":case"utf-8":return J(ie).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Z*2;case"hex":return Z>>>1;case"base64":return xe(ie).length;default:if(Re)return le?-1:J(ie).length;Y=(""+Y).toLowerCase(),Re=!0}}g.byteLength=v;function k(ie,Y,Z){var le=!1;if((Y===void 0||Y<0)&&(Y=0),Y>this.length||((Z===void 0||Z>this.length)&&(Z=this.length),Z<=0)||(Z>>>=0,Y>>>=0,Z<=Y))return"";for(ie||(ie="utf8");;)switch(ie){case"hex":return I(this,Y,Z);case"utf8":case"utf-8":return F(this,Y,Z);case"ascii":return z(this,Y,Z);case"latin1":case"binary":return X(this,Y,Z);case"base64":return O(this,Y,Z);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return N(this,Y,Z);default:if(le)throw new TypeError("Unknown encoding: "+ie);ie=(ie+"").toLowerCase(),le=!0}}g.prototype._isBuffer=!0;function T(ie,Y,Z){var le=ie[Y];ie[Y]=ie[Z],ie[Z]=le}g.prototype.swap16=function(){var Y=this.length;if(Y%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var Z=0;ZZ&&(Y+=" ... "),""},g.prototype.compare=function(Y,Z,le,Re,Ce){if(fe(Y,Uint8Array)&&(Y=g.from(Y,Y.offset,Y.byteLength)),!g.isBuffer(Y))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+l(Y));if(Z===void 0&&(Z=0),le===void 0&&(le=Y?Y.length:0),Re===void 0&&(Re=0),Ce===void 0&&(Ce=this.length),Z<0||le>Y.length||Re<0||Ce>this.length)throw new RangeError("out of range index");if(Re>=Ce&&Z>=le)return 0;if(Re>=Ce)return-1;if(Z>=le)return 1;if(Z>>>=0,le>>>=0,Re>>>=0,Ce>>>=0,this===Y)return 0;for(var Ge=Ce-Re,st=le-Z,vt=Math.min(Ge,st),ft=this.slice(Re,Ce),pt=Y.slice(Z,le),et=0;et2147483647?Z=2147483647:Z<-2147483648&&(Z=-2147483648),Z=+Z,Ne(Z)&&(Z=Re?0:ie.length-1),Z<0&&(Z=ie.length+Z),Z>=ie.length){if(Re)return-1;Z=ie.length-1}else if(Z<0)if(Re)Z=0;else return-1;if(typeof Y=="string"&&(Y=g.from(Y,le)),g.isBuffer(Y))return Y.length===0?-1:D(ie,Y,Z,le,Re);if(typeof Y=="number")return Y=Y&255,typeof Uint8Array.prototype.indexOf=="function"?Re?Uint8Array.prototype.indexOf.call(ie,Y,Z):Uint8Array.prototype.lastIndexOf.call(ie,Y,Z):D(ie,[Y],Z,le,Re);throw new TypeError("val must be string, number or Buffer")}function D(ie,Y,Z,le,Re){var Ce=1,Ge=ie.length,st=Y.length;if(le!==void 0&&(le=String(le).toLowerCase(),le==="ucs2"||le==="ucs-2"||le==="utf16le"||le==="utf-16le")){if(ie.length<2||Y.length<2)return-1;Ce=2,Ge/=2,st/=2,Z/=2}function vt(ct,gt){return Ce===1?ct[gt]:ct.readUInt16BE(gt*Ce)}var ft;if(Re){var pt=-1;for(ft=Z;ftGe&&(Z=Ge-st),ft=Z;ft>=0;ft--){for(var et=!0,tt=0;ttRe&&(le=Re)):le=Re;var Ce=Y.length;le>Ce/2&&(le=Ce/2);for(var Ge=0;Ge>>0,isFinite(le)?(le=le>>>0,Re===void 0&&(Re="utf8")):(Re=le,le=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");var Ce=this.length-Z;if((le===void 0||le>Ce)&&(le=Ce),Y.length>0&&(le<0||Z<0)||Z>this.length)throw new RangeError("Attempt to write outside buffer bounds");Re||(Re="utf8");for(var Ge=!1;;)switch(Re){case"hex":return j(this,Y,Z,le);case"utf8":case"utf-8":return L(this,Y,Z,le);case"ascii":return M(this,Y,Z,le);case"latin1":case"binary":return B(this,Y,Z,le);case"base64":return R(this,Y,Z,le);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return P(this,Y,Z,le);default:if(Ge)throw new TypeError("Unknown encoding: "+Re);Re=(""+Re).toLowerCase(),Ge=!0}},g.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function O(ie,Y,Z){return Y===0&&Z===ie.length?d.fromByteArray(ie):d.fromByteArray(ie.slice(Y,Z))}function F(ie,Y,Z){Z=Math.min(ie.length,Z);for(var le=[],Re=Y;Re239?4:Ce>223?3:Ce>191?2:1;if(Re+st<=Z){var vt,ft,pt,et;switch(st){case 1:Ce<128&&(Ge=Ce);break;case 2:vt=ie[Re+1],(vt&192)===128&&(et=(Ce&31)<<6|vt&63,et>127&&(Ge=et));break;case 3:vt=ie[Re+1],ft=ie[Re+2],(vt&192)===128&&(ft&192)===128&&(et=(Ce&15)<<12|(vt&63)<<6|ft&63,et>2047&&(et<55296||et>57343)&&(Ge=et));break;case 4:vt=ie[Re+1],ft=ie[Re+2],pt=ie[Re+3],(vt&192)===128&&(ft&192)===128&&(pt&192)===128&&(et=(Ce&15)<<18|(vt&63)<<12|(ft&63)<<6|pt&63,et>65535&&et<1114112&&(Ge=et))}}Ge===null?(Ge=65533,st=1):Ge>65535&&(Ge-=65536,le.push(Ge>>>10&1023|55296),Ge=56320|Ge&1023),le.push(Ge),Re+=st}return V(le)}var H=4096;function V(ie){var Y=ie.length;if(Y<=H)return String.fromCharCode.apply(String,ie);for(var Z="",le=0;lele)&&(Z=le);for(var Re="",Ce=Y;Cele&&(Y=le),Z<0?(Z+=le,Z<0&&(Z=0)):Z>le&&(Z=le),ZZ)throw new RangeError("Trying to access beyond buffer length")}g.prototype.readUIntLE=function(Y,Z,le){Y=Y>>>0,Z=Z>>>0,le||U(Y,Z,this.length);for(var Re=this[Y],Ce=1,Ge=0;++Ge>>0,Z=Z>>>0,le||U(Y,Z,this.length);for(var Re=this[Y+--Z],Ce=1;Z>0&&(Ce*=256);)Re+=this[Y+--Z]*Ce;return Re},g.prototype.readUInt8=function(Y,Z){return Y=Y>>>0,Z||U(Y,1,this.length),this[Y]},g.prototype.readUInt16LE=function(Y,Z){return Y=Y>>>0,Z||U(Y,2,this.length),this[Y]|this[Y+1]<<8},g.prototype.readUInt16BE=function(Y,Z){return Y=Y>>>0,Z||U(Y,2,this.length),this[Y]<<8|this[Y+1]},g.prototype.readUInt32LE=function(Y,Z){return Y=Y>>>0,Z||U(Y,4,this.length),(this[Y]|this[Y+1]<<8|this[Y+2]<<16)+this[Y+3]*16777216},g.prototype.readUInt32BE=function(Y,Z){return Y=Y>>>0,Z||U(Y,4,this.length),this[Y]*16777216+(this[Y+1]<<16|this[Y+2]<<8|this[Y+3])},g.prototype.readIntLE=function(Y,Z,le){Y=Y>>>0,Z=Z>>>0,le||U(Y,Z,this.length);for(var Re=this[Y],Ce=1,Ge=0;++Ge=Ce&&(Re-=Math.pow(2,8*Z)),Re},g.prototype.readIntBE=function(Y,Z,le){Y=Y>>>0,Z=Z>>>0,le||U(Y,Z,this.length);for(var Re=Z,Ce=1,Ge=this[Y+--Re];Re>0&&(Ce*=256);)Ge+=this[Y+--Re]*Ce;return Ce*=128,Ge>=Ce&&(Ge-=Math.pow(2,8*Z)),Ge},g.prototype.readInt8=function(Y,Z){return Y=Y>>>0,Z||U(Y,1,this.length),this[Y]&128?(255-this[Y]+1)*-1:this[Y]},g.prototype.readInt16LE=function(Y,Z){Y=Y>>>0,Z||U(Y,2,this.length);var le=this[Y]|this[Y+1]<<8;return le&32768?le|4294901760:le},g.prototype.readInt16BE=function(Y,Z){Y=Y>>>0,Z||U(Y,2,this.length);var le=this[Y+1]|this[Y]<<8;return le&32768?le|4294901760:le},g.prototype.readInt32LE=function(Y,Z){return Y=Y>>>0,Z||U(Y,4,this.length),this[Y]|this[Y+1]<<8|this[Y+2]<<16|this[Y+3]<<24},g.prototype.readInt32BE=function(Y,Z){return Y=Y>>>0,Z||U(Y,4,this.length),this[Y]<<24|this[Y+1]<<16|this[Y+2]<<8|this[Y+3]},g.prototype.readFloatLE=function(Y,Z){return Y=Y>>>0,Z||U(Y,4,this.length),m.read(this,Y,!0,23,4)},g.prototype.readFloatBE=function(Y,Z){return Y=Y>>>0,Z||U(Y,4,this.length),m.read(this,Y,!1,23,4)},g.prototype.readDoubleLE=function(Y,Z){return Y=Y>>>0,Z||U(Y,8,this.length),m.read(this,Y,!0,52,8)},g.prototype.readDoubleBE=function(Y,Z){return Y=Y>>>0,Z||U(Y,8,this.length),m.read(this,Y,!1,52,8)};function G(ie,Y,Z,le,Re,Ce){if(!g.isBuffer(ie))throw new TypeError('"buffer" argument must be a Buffer instance');if(Y>Re||Yie.length)throw new RangeError("Index out of range")}g.prototype.writeUIntLE=function(Y,Z,le,Re){if(Y=+Y,Z=Z>>>0,le=le>>>0,!Re){var Ce=Math.pow(2,8*le)-1;G(this,Y,Z,le,Ce,0)}var Ge=1,st=0;for(this[Z]=Y&255;++st>>0,le=le>>>0,!Re){var Ce=Math.pow(2,8*le)-1;G(this,Y,Z,le,Ce,0)}var Ge=le-1,st=1;for(this[Z+Ge]=Y&255;--Ge>=0&&(st*=256);)this[Z+Ge]=Y/st&255;return Z+le},g.prototype.writeUInt8=function(Y,Z,le){return Y=+Y,Z=Z>>>0,le||G(this,Y,Z,1,255,0),this[Z]=Y&255,Z+1},g.prototype.writeUInt16LE=function(Y,Z,le){return Y=+Y,Z=Z>>>0,le||G(this,Y,Z,2,65535,0),this[Z]=Y&255,this[Z+1]=Y>>>8,Z+2},g.prototype.writeUInt16BE=function(Y,Z,le){return Y=+Y,Z=Z>>>0,le||G(this,Y,Z,2,65535,0),this[Z]=Y>>>8,this[Z+1]=Y&255,Z+2},g.prototype.writeUInt32LE=function(Y,Z,le){return Y=+Y,Z=Z>>>0,le||G(this,Y,Z,4,4294967295,0),this[Z+3]=Y>>>24,this[Z+2]=Y>>>16,this[Z+1]=Y>>>8,this[Z]=Y&255,Z+4},g.prototype.writeUInt32BE=function(Y,Z,le){return Y=+Y,Z=Z>>>0,le||G(this,Y,Z,4,4294967295,0),this[Z]=Y>>>24,this[Z+1]=Y>>>16,this[Z+2]=Y>>>8,this[Z+3]=Y&255,Z+4},g.prototype.writeIntLE=function(Y,Z,le,Re){if(Y=+Y,Z=Z>>>0,!Re){var Ce=Math.pow(2,8*le-1);G(this,Y,Z,le,Ce-1,-Ce)}var Ge=0,st=1,vt=0;for(this[Z]=Y&255;++Ge>0)-vt&255;return Z+le},g.prototype.writeIntBE=function(Y,Z,le,Re){if(Y=+Y,Z=Z>>>0,!Re){var Ce=Math.pow(2,8*le-1);G(this,Y,Z,le,Ce-1,-Ce)}var Ge=le-1,st=1,vt=0;for(this[Z+Ge]=Y&255;--Ge>=0&&(st*=256);)Y<0&&vt===0&&this[Z+Ge+1]!==0&&(vt=1),this[Z+Ge]=(Y/st>>0)-vt&255;return Z+le},g.prototype.writeInt8=function(Y,Z,le){return Y=+Y,Z=Z>>>0,le||G(this,Y,Z,1,127,-128),Y<0&&(Y=255+Y+1),this[Z]=Y&255,Z+1},g.prototype.writeInt16LE=function(Y,Z,le){return Y=+Y,Z=Z>>>0,le||G(this,Y,Z,2,32767,-32768),this[Z]=Y&255,this[Z+1]=Y>>>8,Z+2},g.prototype.writeInt16BE=function(Y,Z,le){return Y=+Y,Z=Z>>>0,le||G(this,Y,Z,2,32767,-32768),this[Z]=Y>>>8,this[Z+1]=Y&255,Z+2},g.prototype.writeInt32LE=function(Y,Z,le){return Y=+Y,Z=Z>>>0,le||G(this,Y,Z,4,2147483647,-2147483648),this[Z]=Y&255,this[Z+1]=Y>>>8,this[Z+2]=Y>>>16,this[Z+3]=Y>>>24,Z+4},g.prototype.writeInt32BE=function(Y,Z,le){return Y=+Y,Z=Z>>>0,le||G(this,Y,Z,4,2147483647,-2147483648),Y<0&&(Y=4294967295+Y+1),this[Z]=Y>>>24,this[Z+1]=Y>>>16,this[Z+2]=Y>>>8,this[Z+3]=Y&255,Z+4};function te(ie,Y,Z,le,Re,Ce){if(Z+le>ie.length)throw new RangeError("Index out of range");if(Z<0)throw new RangeError("Index out of range")}function re(ie,Y,Z,le,Re){return Y=+Y,Z=Z>>>0,Re||te(ie,Y,Z,4),m.write(ie,Y,Z,le,23,4),Z+4}g.prototype.writeFloatLE=function(Y,Z,le){return re(this,Y,Z,!0,le)},g.prototype.writeFloatBE=function(Y,Z,le){return re(this,Y,Z,!1,le)};function ne(ie,Y,Z,le,Re){return Y=+Y,Z=Z>>>0,Re||te(ie,Y,Z,8),m.write(ie,Y,Z,le,52,8),Z+8}g.prototype.writeDoubleLE=function(Y,Z,le){return ne(this,Y,Z,!0,le)},g.prototype.writeDoubleBE=function(Y,Z,le){return ne(this,Y,Z,!1,le)},g.prototype.copy=function(Y,Z,le,Re){if(!g.isBuffer(Y))throw new TypeError("argument should be a Buffer");if(le||(le=0),!Re&&Re!==0&&(Re=this.length),Z>=Y.length&&(Z=Y.length),Z||(Z=0),Re>0&&Re=this.length)throw new RangeError("Index out of range");if(Re<0)throw new RangeError("sourceEnd out of bounds");Re>this.length&&(Re=this.length),Y.length-Z=0;--Ge)Y[Ge+Z]=this[Ge+le];else Uint8Array.prototype.set.call(Y,this.subarray(le,Re),Z);return Ce},g.prototype.fill=function(Y,Z,le,Re){if(typeof Y=="string"){if(typeof Z=="string"?(Re=Z,Z=0,le=this.length):typeof le=="string"&&(Re=le,le=this.length),Re!==void 0&&typeof Re!="string")throw new TypeError("encoding must be a string");if(typeof Re=="string"&&!g.isEncoding(Re))throw new TypeError("Unknown encoding: "+Re);if(Y.length===1){var Ce=Y.charCodeAt(0);(Re==="utf8"&&Ce<128||Re==="latin1")&&(Y=Ce)}}else typeof Y=="number"&&(Y=Y&255);if(Z<0||this.length>>0,le=le===void 0?this.length:le>>>0,Y||(Y=0);var Ge;if(typeof Y=="number")for(Ge=Z;Ge55295&&Z<57344){if(!Re){if(Z>56319){(Y-=3)>-1&&Ce.push(239,191,189);continue}else if(Ge+1===le){(Y-=3)>-1&&Ce.push(239,191,189);continue}Re=Z;continue}if(Z<56320){(Y-=3)>-1&&Ce.push(239,191,189),Re=Z;continue}Z=(Re-55296<<10|Z-56320)+65536}else Re&&(Y-=3)>-1&&Ce.push(239,191,189);if(Re=null,Z<128){if((Y-=1)<0)break;Ce.push(Z)}else if(Z<2048){if((Y-=2)<0)break;Ce.push(Z>>6|192,Z&63|128)}else if(Z<65536){if((Y-=3)<0)break;Ce.push(Z>>12|224,Z>>6&63|128,Z&63|128)}else if(Z<1114112){if((Y-=4)<0)break;Ce.push(Z>>18|240,Z>>12&63|128,Z>>6&63|128,Z&63|128)}else throw new Error("Invalid code point")}return Ce}function q(ie){for(var Y=[],Z=0;Z>8,Re=Z%256,Ce.push(Re),Ce.push(le);return Ce}function xe(ie){return d.toByteArray(ee(ie))}function ae(ie,Y,Z,le){for(var Re=0;Re=Y.length||Re>=ie.length);++Re)Y[Re+Z]=ie[Re];return Re}function fe(ie,Y){return ie instanceof Y||ie!=null&&ie.constructor!=null&&ie.constructor.name!=null&&ie.constructor.name===Y.name}function Ne(ie){return ie!==ie}}).call(this,e("buffer").Buffer)},{"base64-js":182,buffer:216,ieee754:385}],217:[function(e,n,i){(function(a){n.exports=function(d,m){for(var b=Math.min(d.length,m.length),h=new a(b),_=0;_p;)if(S=y[p++],S!=S)return!0}else for(;x>p;p++)if((b||p in y)&&y[p]===_)return b||p||0;return!b&&-1}};n.exports={includes:m(!0),indexOf:m(!1)}},{"../internals/to-absolute-index":304,"../internals/to-indexed-object":305,"../internals/to-length":307}],225:[function(e,n,i){var a=e("../internals/function-bind-context"),l=e("../internals/indexed-object"),d=e("../internals/to-object"),m=e("../internals/to-length"),b=e("../internals/array-species-create"),h=[].push,_=function(g){var y=g==1,x=g==2,p=g==3,S=g==4,w=g==6,u=g==5||w;return function(o,s,c,f){for(var v=d(o),k=l(v),T=a(s,c,3),C=m(k.length),D=0,j=f||b,L=y?j(o,C):x?j(o,0):void 0,M,B;C>D;D++)if((u||D in k)&&(M=k[D],B=T(M,D,v),g)){if(y)L[D]=B;else if(B)switch(g){case 3:return!0;case 5:return M;case 6:return D;case 2:h.call(L,M)}else if(S)return!1}return w?-1:p||S?S:L}};n.exports={forEach:_(0),map:_(1),filter:_(2),some:_(3),every:_(4),find:_(5),findIndex:_(6)}},{"../internals/array-species-create":227,"../internals/function-bind-context":248,"../internals/indexed-object":257,"../internals/to-length":307,"../internals/to-object":308}],226:[function(e,n,i){var a=e("../internals/descriptors"),l=e("../internals/fails"),d=e("../internals/has"),m=Object.defineProperty,b={},h=function(_){throw _};n.exports=function(_,g){if(d(b,_))return b[_];g||(g={});var y=[][_],x=d(g,"ACCESSORS")?g.ACCESSORS:!1,p=d(g,0)?g[0]:h,S=d(g,1)?g[1]:void 0;return b[_]=!!y&&!l(function(){if(x&&!a)return!0;var w={length:-1};x?m(w,1,{enumerable:!0,get:h}):w[1]=1,y.call(w,p,S)})}},{"../internals/descriptors":240,"../internals/fails":247,"../internals/has":252}],227:[function(e,n,i){var a=e("../internals/is-object"),l=e("../internals/is-array"),d=e("../internals/well-known-symbol"),m=d("species");n.exports=function(b,h){var _;return l(b)&&(_=b.constructor,typeof _=="function"&&(_===Array||l(_.prototype))?_=void 0:a(_)&&(_=_[m],_===null&&(_=void 0))),new(_===void 0?Array:_)(h===0?0:h)}},{"../internals/is-array":261,"../internals/is-object":263,"../internals/well-known-symbol":314}],228:[function(e,n,i){var a=e("../internals/an-object");n.exports=function(l,d,m,b){try{return b?d(a(m)[0],m[1]):d(m)}catch(_){var h=l.return;throw h!==void 0&&a(h.call(l)),_}}},{"../internals/an-object":223}],229:[function(e,n,i){var a=e("../internals/well-known-symbol"),l=a("iterator"),d=!1;try{var m=0,b={next:function(){return{done:!!m++}},return:function(){d=!0}};b[l]=function(){return this},Array.from(b,function(){throw 2})}catch{}n.exports=function(h,_){if(!_&&!d)return!1;var g=!1;try{var y={};y[l]=function(){return{next:function(){return{done:g=!0}}}},h(y)}catch{}return g}},{"../internals/well-known-symbol":314}],230:[function(e,n,i){var a={}.toString;n.exports=function(l){return a.call(l).slice(8,-1)}},{}],231:[function(e,n,i){var a=e("../internals/to-string-tag-support"),l=e("../internals/classof-raw"),d=e("../internals/well-known-symbol"),m=d("toStringTag"),b=l(function(){return arguments}())=="Arguments",h=function(_,g){try{return _[g]}catch{}};n.exports=a?l:function(_){var g,y,x;return _===void 0?"Undefined":_===null?"Null":typeof(y=h(g=Object(_),m))=="string"?y:b?l(g):(x=l(g))=="Object"&&typeof g.callee=="function"?"Arguments":x}},{"../internals/classof-raw":230,"../internals/to-string-tag-support":310,"../internals/well-known-symbol":314}],232:[function(e,n,i){var a=e("../internals/has"),l=e("../internals/own-keys"),d=e("../internals/object-get-own-property-descriptor"),m=e("../internals/object-define-property");n.exports=function(b,h){for(var _=l(h),g=m.f,y=d.f,x=0;x<_.length;x++){var p=_[x];a(b,p)||g(b,p,y(h,p))}}},{"../internals/has":252,"../internals/object-define-property":278,"../internals/object-get-own-property-descriptor":279,"../internals/own-keys":289}],233:[function(e,n,i){var a=e("../internals/well-known-symbol"),l=a("match");n.exports=function(d){var m=/./;try{"/./"[d](m)}catch{try{return m[l]=!1,"/./"[d](m)}catch{}}return!1}},{"../internals/well-known-symbol":314}],234:[function(e,n,i){var a=e("../internals/fails");n.exports=!a(function(){function l(){}return l.prototype.constructor=null,Object.getPrototypeOf(new l)!==l.prototype})},{"../internals/fails":247}],235:[function(e,n,i){var a=e("../internals/iterators-core").IteratorPrototype,l=e("../internals/object-create"),d=e("../internals/create-property-descriptor"),m=e("../internals/set-to-string-tag"),b=e("../internals/iterators"),h=function(){return this};n.exports=function(_,g,y){var x=g+" Iterator";return _.prototype=l(a,{next:d(1,y)}),m(_,x,!1,!0),b[x]=h,_}},{"../internals/create-property-descriptor":237,"../internals/iterators":268,"../internals/iterators-core":267,"../internals/object-create":276,"../internals/set-to-string-tag":298}],236:[function(e,n,i){var a=e("../internals/descriptors"),l=e("../internals/object-define-property"),d=e("../internals/create-property-descriptor");n.exports=a?function(m,b,h){return l.f(m,b,d(1,h))}:function(m,b,h){return m[b]=h,m}},{"../internals/create-property-descriptor":237,"../internals/descriptors":240,"../internals/object-define-property":278}],237:[function(e,n,i){n.exports=function(a,l){return{enumerable:!(a&1),configurable:!(a&2),writable:!(a&4),value:l}}},{}],238:[function(e,n,i){var a=e("../internals/export"),l=e("../internals/create-iterator-constructor"),d=e("../internals/object-get-prototype-of"),m=e("../internals/object-set-prototype-of"),b=e("../internals/set-to-string-tag"),h=e("../internals/create-non-enumerable-property"),_=e("../internals/redefine"),g=e("../internals/well-known-symbol"),y=e("../internals/is-pure"),x=e("../internals/iterators"),p=e("../internals/iterators-core"),S=p.IteratorPrototype,w=p.BUGGY_SAFARI_ITERATORS,u=g("iterator"),o="keys",s="values",c="entries",f=function(){return this};n.exports=function(v,k,T,C,D,j,L){l(T,k,C);var M=function(I){if(I===D&&F)return F;if(!w&&I in P)return P[I];switch(I){case o:return function(){return new T(this,I)};case s:return function(){return new T(this,I)};case c:return function(){return new T(this,I)}}return function(){return new T(this)}},B=k+" Iterator",R=!1,P=v.prototype,O=P[u]||P["@@iterator"]||D&&P[D],F=!w&&O||M(D),H=k=="Array"&&P.entries||O,V,z,X;if(H&&(V=d(H.call(new v)),S!==Object.prototype&&V.next&&(!y&&d(V)!==S&&(m?m(V,S):typeof V[u]!="function"&&h(V,u,f)),b(V,B,!0,!0),y&&(x[B]=f))),D==s&&O&&O.name!==s&&(R=!0,F=function(){return O.call(this)}),(!y||L)&&P[u]!==F&&h(P,u,F),x[k]=F,D)if(z={values:M(s),keys:j?F:M(o),entries:M(c)},L)for(X in z)(w||R||!(X in P))&&_(P,X,z[X]);else a({target:k,proto:!0,forced:w||R},z);return z}},{"../internals/create-iterator-constructor":235,"../internals/create-non-enumerable-property":236,"../internals/export":246,"../internals/is-pure":264,"../internals/iterators":268,"../internals/iterators-core":267,"../internals/object-get-prototype-of":283,"../internals/object-set-prototype-of":287,"../internals/redefine":294,"../internals/set-to-string-tag":298,"../internals/well-known-symbol":314}],239:[function(e,n,i){var a=e("../internals/path"),l=e("../internals/has"),d=e("../internals/well-known-symbol-wrapped"),m=e("../internals/object-define-property").f;n.exports=function(b){var h=a.Symbol||(a.Symbol={});l(h,b)||m(h,b,{value:d.f(b)})}},{"../internals/has":252,"../internals/object-define-property":278,"../internals/path":290,"../internals/well-known-symbol-wrapped":313}],240:[function(e,n,i){var a=e("../internals/fails");n.exports=!a(function(){return Object.defineProperty({},1,{get:function(){return 7}})[1]!=7})},{"../internals/fails":247}],241:[function(e,n,i){var a=e("../internals/global"),l=e("../internals/is-object"),d=a.document,m=l(d)&&l(d.createElement);n.exports=function(b){return m?d.createElement(b):{}}},{"../internals/global":251,"../internals/is-object":263}],242:[function(e,n,i){var a=e("../internals/engine-user-agent");n.exports=/(iphone|ipod|ipad).*applewebkit/i.test(a)},{"../internals/engine-user-agent":243}],243:[function(e,n,i){var a=e("../internals/get-built-in");n.exports=a("navigator","userAgent")||""},{"../internals/get-built-in":249}],244:[function(e,n,i){var a=e("../internals/global"),l=e("../internals/engine-user-agent"),d=a.process,m=d&&d.versions,b=m&&m.v8,h,_;b?(h=b.split("."),_=h[0]+h[1]):l&&(h=l.match(/Edge\/(\d+)/),(!h||h[1]>=74)&&(h=l.match(/Chrome\/(\d+)/),h&&(_=h[1]))),n.exports=_&&+_},{"../internals/engine-user-agent":243,"../internals/global":251}],245:[function(e,n,i){n.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},{}],246:[function(e,n,i){var a=e("../internals/global"),l=e("../internals/object-get-own-property-descriptor").f,d=e("../internals/create-non-enumerable-property"),m=e("../internals/redefine"),b=e("../internals/set-global"),h=e("../internals/copy-constructor-properties"),_=e("../internals/is-forced");n.exports=function(g,y){var x=g.target,p=g.global,S=g.stat,w,u,o,s,c,f;if(p?u=a:S?u=a[x]||b(x,{}):u=(a[x]||{}).prototype,u)for(o in y){if(c=y[o],g.noTargetGet?(f=l(u,o),s=f&&f.value):s=u[o],w=_(p?o:x+(S?".":"#")+o,g.forced),!w&&s!==void 0){if(typeof c==typeof s)continue;h(c,s)}(g.sham||s&&s.sham)&&d(c,"sham",!0),m(u,o,c,g)}}},{"../internals/copy-constructor-properties":232,"../internals/create-non-enumerable-property":236,"../internals/global":251,"../internals/is-forced":262,"../internals/object-get-own-property-descriptor":279,"../internals/redefine":294,"../internals/set-global":296}],247:[function(e,n,i){n.exports=function(a){try{return!!a()}catch{return!0}}},{}],248:[function(e,n,i){var a=e("../internals/a-function");n.exports=function(l,d,m){if(a(l),d===void 0)return l;switch(m){case 0:return function(){return l.call(d)};case 1:return function(b){return l.call(d,b)};case 2:return function(b,h){return l.call(d,b,h)};case 3:return function(b,h,_){return l.call(d,b,h,_)}}return function(){return l.apply(d,arguments)}}},{"../internals/a-function":219}],249:[function(e,n,i){var a=e("../internals/path"),l=e("../internals/global"),d=function(m){return typeof m=="function"?m:void 0};n.exports=function(m,b){return arguments.length<2?d(a[m])||d(l[m]):a[m]&&a[m][b]||l[m]&&l[m][b]}},{"../internals/global":251,"../internals/path":290}],250:[function(e,n,i){var a=e("../internals/classof"),l=e("../internals/iterators"),d=e("../internals/well-known-symbol"),m=d("iterator");n.exports=function(b){if(b!=null)return b[m]||b["@@iterator"]||l[a(b)]}},{"../internals/classof":231,"../internals/iterators":268,"../internals/well-known-symbol":314}],251:[function(e,n,i){(function(a){var l=function(d){return d&&d.Math==Math&&d};n.exports=l(typeof globalThis=="object"&&globalThis)||l(typeof window=="object"&&window)||l(typeof self=="object"&&self)||l(typeof a=="object"&&a)||Function("return this")()}).call(this,typeof cr<"u"?cr:typeof self<"u"?self:typeof window<"u"?window:{})},{}],252:[function(e,n,i){var a={}.hasOwnProperty;n.exports=function(l,d){return a.call(l,d)}},{}],253:[function(e,n,i){n.exports={}},{}],254:[function(e,n,i){var a=e("../internals/global");n.exports=function(l,d){var m=a.console;m&&m.error&&(arguments.length===1?m.error(l):m.error(l,d))}},{"../internals/global":251}],255:[function(e,n,i){var a=e("../internals/get-built-in");n.exports=a("document","documentElement")},{"../internals/get-built-in":249}],256:[function(e,n,i){var a=e("../internals/descriptors"),l=e("../internals/fails"),d=e("../internals/document-create-element");n.exports=!a&&!l(function(){return Object.defineProperty(d("div"),"a",{get:function(){return 7}}).a!=7})},{"../internals/descriptors":240,"../internals/document-create-element":241,"../internals/fails":247}],257:[function(e,n,i){var a=e("../internals/fails"),l=e("../internals/classof-raw"),d="".split;n.exports=a(function(){return!Object("z").propertyIsEnumerable(0)})?function(m){return l(m)=="String"?d.call(m,""):Object(m)}:Object},{"../internals/classof-raw":230,"../internals/fails":247}],258:[function(e,n,i){var a=e("../internals/shared-store"),l=Function.toString;typeof a.inspectSource!="function"&&(a.inspectSource=function(d){return l.call(d)}),n.exports=a.inspectSource},{"../internals/shared-store":300}],259:[function(e,n,i){var a=e("../internals/native-weak-map"),l=e("../internals/global"),d=e("../internals/is-object"),m=e("../internals/create-non-enumerable-property"),b=e("../internals/has"),h=e("../internals/shared-key"),_=e("../internals/hidden-keys"),g=l.WeakMap,y,x,p,S=function(v){return p(v)?x(v):y(v,{})},w=function(v){return function(k){var T;if(!d(k)||(T=x(k)).type!==v)throw TypeError("Incompatible receiver, "+v+" required");return T}};if(a){var u=new g,o=u.get,s=u.has,c=u.set;y=function(v,k){return c.call(u,v,k),k},x=function(v){return o.call(u,v)||{}},p=function(v){return s.call(u,v)}}else{var f=h("state");_[f]=!0,y=function(v,k){return m(v,f,k),k},x=function(v){return b(v,f)?v[f]:{}},p=function(v){return b(v,f)}}n.exports={set:y,get:x,has:p,enforce:S,getterFor:w}},{"../internals/create-non-enumerable-property":236,"../internals/global":251,"../internals/has":252,"../internals/hidden-keys":253,"../internals/is-object":263,"../internals/native-weak-map":272,"../internals/shared-key":299}],260:[function(e,n,i){var a=e("../internals/well-known-symbol"),l=e("../internals/iterators"),d=a("iterator"),m=Array.prototype;n.exports=function(b){return b!==void 0&&(l.Array===b||m[d]===b)}},{"../internals/iterators":268,"../internals/well-known-symbol":314}],261:[function(e,n,i){var a=e("../internals/classof-raw");n.exports=Array.isArray||function(d){return a(d)=="Array"}},{"../internals/classof-raw":230}],262:[function(e,n,i){var a=e("../internals/fails"),l=/#|\.prototype\./,d=function(g,y){var x=b[m(g)];return x==_?!0:x==h?!1:typeof y=="function"?a(y):!!y},m=d.normalize=function(g){return String(g).replace(l,".").toLowerCase()},b=d.data={},h=d.NATIVE="N",_=d.POLYFILL="P";n.exports=d},{"../internals/fails":247}],263:[function(e,n,i){n.exports=function(a){return typeof a=="object"?a!==null:typeof a=="function"}},{}],264:[function(e,n,i){n.exports=!1},{}],265:[function(e,n,i){var a=e("../internals/is-object"),l=e("../internals/classof-raw"),d=e("../internals/well-known-symbol"),m=d("match");n.exports=function(b){var h;return a(b)&&((h=b[m])!==void 0?!!h:l(b)=="RegExp")}},{"../internals/classof-raw":230,"../internals/is-object":263,"../internals/well-known-symbol":314}],266:[function(e,n,i){var a=e("../internals/an-object"),l=e("../internals/is-array-iterator-method"),d=e("../internals/to-length"),m=e("../internals/function-bind-context"),b=e("../internals/get-iterator-method"),h=e("../internals/call-with-safe-iteration-closing"),_=function(y,x){this.stopped=y,this.result=x},g=n.exports=function(y,x,p,S,w){var u=m(x,p,S?2:1),o,s,c,f,v,k,T;if(w)o=y;else{if(s=b(y),typeof s!="function")throw TypeError("Target is not iterable");if(l(s)){for(c=0,f=d(y.length);f>c;c++)if(v=S?u(a(T=y[c])[0],T[1]):u(y[c]),v&&v instanceof _)return v;return new _(!1)}o=s.call(y)}for(k=o.next;!(T=k.call(o)).done;)if(v=h(o,u,T.value,S),typeof v=="object"&&v&&v instanceof _)return v;return new _(!1)};g.stop=function(y){return new _(!0,y)}},{"../internals/an-object":223,"../internals/call-with-safe-iteration-closing":228,"../internals/function-bind-context":248,"../internals/get-iterator-method":250,"../internals/is-array-iterator-method":260,"../internals/to-length":307}],267:[function(e,n,i){var a=e("../internals/object-get-prototype-of"),l=e("../internals/create-non-enumerable-property"),d=e("../internals/has"),m=e("../internals/well-known-symbol"),b=e("../internals/is-pure"),h=m("iterator"),_=!1,g=function(){return this},y,x,p;[].keys&&(p=[].keys(),"next"in p?(x=a(a(p)),x!==Object.prototype&&(y=x)):_=!0),y==null&&(y={}),!b&&!d(y,h)&&l(y,h,g),n.exports={IteratorPrototype:y,BUGGY_SAFARI_ITERATORS:_}},{"../internals/create-non-enumerable-property":236,"../internals/has":252,"../internals/is-pure":264,"../internals/object-get-prototype-of":283,"../internals/well-known-symbol":314}],268:[function(e,n,i){arguments[4][253][0].apply(i,arguments)},{dup:253}],269:[function(e,n,i){var a=e("../internals/global"),l=e("../internals/object-get-own-property-descriptor").f,d=e("../internals/classof-raw"),m=e("../internals/task").set,b=e("../internals/engine-is-ios"),h=a.MutationObserver||a.WebKitMutationObserver,_=a.process,g=a.Promise,y=d(_)=="process",x=l(a,"queueMicrotask"),p=x&&x.value,S,w,u,o,s,c,f,v;p||(S=function(){var k,T;for(y&&(k=_.domain)&&k.exit();w;){T=w.fn,w=w.next;try{T()}catch(C){throw w?o():u=void 0,C}}u=void 0,k&&k.enter()},y?o=function(){_.nextTick(S)}:h&&!b?(s=!0,c=document.createTextNode(""),new h(S).observe(c,{characterData:!0}),o=function(){c.data=s=!s}):g&&g.resolve?(f=g.resolve(void 0),v=f.then,o=function(){v.call(f,S)}):o=function(){m.call(a,S)}),n.exports=p||function(k){var T={fn:k,next:void 0};u&&(u.next=T),w||(w=T,o()),u=T}},{"../internals/classof-raw":230,"../internals/engine-is-ios":242,"../internals/global":251,"../internals/object-get-own-property-descriptor":279,"../internals/task":303}],270:[function(e,n,i){var a=e("../internals/global");n.exports=a.Promise},{"../internals/global":251}],271:[function(e,n,i){var a=e("../internals/fails");n.exports=!!Object.getOwnPropertySymbols&&!a(function(){return!String(Symbol())})},{"../internals/fails":247}],272:[function(e,n,i){var a=e("../internals/global"),l=e("../internals/inspect-source"),d=a.WeakMap;n.exports=typeof d=="function"&&/native code/.test(l(d))},{"../internals/global":251,"../internals/inspect-source":258}],273:[function(e,n,i){var a=e("../internals/a-function"),l=function(d){var m,b;this.promise=new d(function(h,_){if(m!==void 0||b!==void 0)throw TypeError("Bad Promise constructor");m=h,b=_}),this.resolve=a(m),this.reject=a(b)};n.exports.f=function(d){return new l(d)}},{"../internals/a-function":219}],274:[function(e,n,i){var a=e("../internals/is-regexp");n.exports=function(l){if(a(l))throw TypeError("The method doesn't accept regular expressions");return l}},{"../internals/is-regexp":265}],275:[function(e,n,i){var a=e("../internals/descriptors"),l=e("../internals/fails"),d=e("../internals/object-keys"),m=e("../internals/object-get-own-property-symbols"),b=e("../internals/object-property-is-enumerable"),h=e("../internals/to-object"),_=e("../internals/indexed-object"),g=Object.assign,y=Object.defineProperty;n.exports=!g||l(function(){if(a&&g({b:1},g(y({},"a",{enumerable:!0,get:function(){y(this,"b",{value:3,enumerable:!1})}}),{b:2})).b!==1)return!0;var x={},p={},S=Symbol(),w="abcdefghijklmnopqrst";return x[S]=7,w.split("").forEach(function(u){p[u]=u}),g({},x)[S]!=7||d(g({},p)).join("")!=w})?function(p,S){for(var w=h(p),u=arguments.length,o=1,s=m.f,c=b.f;u>o;)for(var f=_(arguments[o++]),v=s?d(f).concat(s(f)):d(f),k=v.length,T=0,C;k>T;)C=v[T++],(!a||c.call(f,C))&&(w[C]=f[C]);return w}:g},{"../internals/descriptors":240,"../internals/fails":247,"../internals/indexed-object":257,"../internals/object-get-own-property-symbols":282,"../internals/object-keys":285,"../internals/object-property-is-enumerable":286,"../internals/to-object":308}],276:[function(e,n,i){var a=e("../internals/an-object"),l=e("../internals/object-define-properties"),d=e("../internals/enum-bug-keys"),m=e("../internals/hidden-keys"),b=e("../internals/html"),h=e("../internals/document-create-element"),_=e("../internals/shared-key"),g=">",y="<",x="prototype",p="script",S=_("IE_PROTO"),w=function(){},u=function(v){return y+p+g+v+y+"/"+p+g},o=function(v){v.write(u("")),v.close();var k=v.parentWindow.Object;return v=null,k},s=function(){var v=h("iframe"),k="java"+p+":",T;return v.style.display="none",b.appendChild(v),v.src=String(k),T=v.contentWindow.document,T.open(),T.write(u("document.F=Object")),T.close(),T.F},c,f=function(){try{c=document.domain&&new ActiveXObject("htmlfile")}catch{}f=c?o(c):s();for(var v=d.length;v--;)delete f[x][d[v]];return f()};m[S]=!0,n.exports=Object.create||function(k,T){var C;return k!==null?(w[x]=a(k),C=new w,w[x]=null,C[S]=k):C=f(),T===void 0?C:l(C,T)}},{"../internals/an-object":223,"../internals/document-create-element":241,"../internals/enum-bug-keys":245,"../internals/hidden-keys":253,"../internals/html":255,"../internals/object-define-properties":277,"../internals/shared-key":299}],277:[function(e,n,i){var a=e("../internals/descriptors"),l=e("../internals/object-define-property"),d=e("../internals/an-object"),m=e("../internals/object-keys");n.exports=a?Object.defineProperties:function(h,_){d(h);for(var g=m(_),y=g.length,x=0,p;y>x;)l.f(h,p=g[x++],_[p]);return h}},{"../internals/an-object":223,"../internals/descriptors":240,"../internals/object-define-property":278,"../internals/object-keys":285}],278:[function(e,n,i){var a=e("../internals/descriptors"),l=e("../internals/ie8-dom-define"),d=e("../internals/an-object"),m=e("../internals/to-primitive"),b=Object.defineProperty;i.f=a?b:function(_,g,y){if(d(_),g=m(g,!0),d(y),l)try{return b(_,g,y)}catch{}if("get"in y||"set"in y)throw TypeError("Accessors not supported");return"value"in y&&(_[g]=y.value),_}},{"../internals/an-object":223,"../internals/descriptors":240,"../internals/ie8-dom-define":256,"../internals/to-primitive":309}],279:[function(e,n,i){var a=e("../internals/descriptors"),l=e("../internals/object-property-is-enumerable"),d=e("../internals/create-property-descriptor"),m=e("../internals/to-indexed-object"),b=e("../internals/to-primitive"),h=e("../internals/has"),_=e("../internals/ie8-dom-define"),g=Object.getOwnPropertyDescriptor;i.f=a?g:function(x,p){if(x=m(x),p=b(p,!0),_)try{return g(x,p)}catch{}if(h(x,p))return d(!l.f.call(x,p),x[p])}},{"../internals/create-property-descriptor":237,"../internals/descriptors":240,"../internals/has":252,"../internals/ie8-dom-define":256,"../internals/object-property-is-enumerable":286,"../internals/to-indexed-object":305,"../internals/to-primitive":309}],280:[function(e,n,i){var a=e("../internals/to-indexed-object"),l=e("../internals/object-get-own-property-names").f,d={}.toString,m=typeof window=="object"&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],b=function(h){try{return l(h)}catch{return m.slice()}};n.exports.f=function(_){return m&&d.call(_)=="[object Window]"?b(_):l(a(_))}},{"../internals/object-get-own-property-names":281,"../internals/to-indexed-object":305}],281:[function(e,n,i){var a=e("../internals/object-keys-internal"),l=e("../internals/enum-bug-keys"),d=l.concat("length","prototype");i.f=Object.getOwnPropertyNames||function(b){return a(b,d)}},{"../internals/enum-bug-keys":245,"../internals/object-keys-internal":284}],282:[function(e,n,i){i.f=Object.getOwnPropertySymbols},{}],283:[function(e,n,i){var a=e("../internals/has"),l=e("../internals/to-object"),d=e("../internals/shared-key"),m=e("../internals/correct-prototype-getter"),b=d("IE_PROTO"),h=Object.prototype;n.exports=m?Object.getPrototypeOf:function(_){return _=l(_),a(_,b)?_[b]:typeof _.constructor=="function"&&_ instanceof _.constructor?_.constructor.prototype:_ instanceof Object?h:null}},{"../internals/correct-prototype-getter":234,"../internals/has":252,"../internals/shared-key":299,"../internals/to-object":308}],284:[function(e,n,i){var a=e("../internals/has"),l=e("../internals/to-indexed-object"),d=e("../internals/array-includes").indexOf,m=e("../internals/hidden-keys");n.exports=function(b,h){var _=l(b),g=0,y=[],x;for(x in _)!a(m,x)&&a(_,x)&&y.push(x);for(;h.length>g;)a(_,x=h[g++])&&(~d(y,x)||y.push(x));return y}},{"../internals/array-includes":224,"../internals/has":252,"../internals/hidden-keys":253,"../internals/to-indexed-object":305}],285:[function(e,n,i){var a=e("../internals/object-keys-internal"),l=e("../internals/enum-bug-keys");n.exports=Object.keys||function(m){return a(m,l)}},{"../internals/enum-bug-keys":245,"../internals/object-keys-internal":284}],286:[function(e,n,i){var a={}.propertyIsEnumerable,l=Object.getOwnPropertyDescriptor,d=l&&!a.call({1:2},1);i.f=d?function(b){var h=l(this,b);return!!h&&h.enumerable}:a},{}],287:[function(e,n,i){var a=e("../internals/an-object"),l=e("../internals/a-possible-prototype");n.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var d=!1,m={},b;try{b=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set,b.call(m,[]),d=m instanceof Array}catch{}return function(_,g){return a(_),l(g),d?b.call(_,g):_.__proto__=g,_}}():void 0)},{"../internals/a-possible-prototype":220,"../internals/an-object":223}],288:[function(e,n,i){var a=e("../internals/descriptors"),l=e("../internals/object-keys"),d=e("../internals/to-indexed-object"),m=e("../internals/object-property-is-enumerable").f,b=function(h){return function(_){for(var g=d(_),y=l(g),x=y.length,p=0,S=[],w;x>p;)w=y[p++],(!a||m.call(g,w))&&S.push(h?[w,g[w]]:g[w]);return S}};n.exports={entries:b(!0),values:b(!1)}},{"../internals/descriptors":240,"../internals/object-keys":285,"../internals/object-property-is-enumerable":286,"../internals/to-indexed-object":305}],289:[function(e,n,i){var a=e("../internals/get-built-in"),l=e("../internals/object-get-own-property-names"),d=e("../internals/object-get-own-property-symbols"),m=e("../internals/an-object");n.exports=a("Reflect","ownKeys")||function(h){var _=l.f(m(h)),g=d.f;return g?_.concat(g(h)):_}},{"../internals/an-object":223,"../internals/get-built-in":249,"../internals/object-get-own-property-names":281,"../internals/object-get-own-property-symbols":282}],290:[function(e,n,i){var a=e("../internals/global");n.exports=a},{"../internals/global":251}],291:[function(e,n,i){n.exports=function(a){try{return{error:!1,value:a()}}catch(l){return{error:!0,value:l}}}},{}],292:[function(e,n,i){var a=e("../internals/an-object"),l=e("../internals/is-object"),d=e("../internals/new-promise-capability");n.exports=function(m,b){if(a(m),l(b)&&b.constructor===m)return b;var h=d.f(m),_=h.resolve;return _(b),h.promise}},{"../internals/an-object":223,"../internals/is-object":263,"../internals/new-promise-capability":273}],293:[function(e,n,i){var a=e("../internals/redefine");n.exports=function(l,d,m){for(var b in d)a(l,b,d[b],m);return l}},{"../internals/redefine":294}],294:[function(e,n,i){var a=e("../internals/global"),l=e("../internals/create-non-enumerable-property"),d=e("../internals/has"),m=e("../internals/set-global"),b=e("../internals/inspect-source"),h=e("../internals/internal-state"),_=h.get,g=h.enforce,y=String(String).split("String");(n.exports=function(x,p,S,w){var u=w?!!w.unsafe:!1,o=w?!!w.enumerable:!1,s=w?!!w.noTargetGet:!1;if(typeof S=="function"&&(typeof p=="string"&&!d(S,"name")&&l(S,"name",p),g(S).source=y.join(typeof p=="string"?p:"")),x===a){o?x[p]=S:m(p,S);return}else u?!s&&x[p]&&(o=!0):delete x[p];o?x[p]=S:l(x,p,S)})(Function.prototype,"toString",function(){return typeof this=="function"&&_(this).source||b(this)})},{"../internals/create-non-enumerable-property":236,"../internals/global":251,"../internals/has":252,"../internals/inspect-source":258,"../internals/internal-state":259,"../internals/set-global":296}],295:[function(e,n,i){n.exports=function(a){if(a==null)throw TypeError("Can't call method on "+a);return a}},{}],296:[function(e,n,i){var a=e("../internals/global"),l=e("../internals/create-non-enumerable-property");n.exports=function(d,m){try{l(a,d,m)}catch{a[d]=m}return m}},{"../internals/create-non-enumerable-property":236,"../internals/global":251}],297:[function(e,n,i){var a=e("../internals/get-built-in"),l=e("../internals/object-define-property"),d=e("../internals/well-known-symbol"),m=e("../internals/descriptors"),b=d("species");n.exports=function(h){var _=a(h),g=l.f;m&&_&&!_[b]&&g(_,b,{configurable:!0,get:function(){return this}})}},{"../internals/descriptors":240,"../internals/get-built-in":249,"../internals/object-define-property":278,"../internals/well-known-symbol":314}],298:[function(e,n,i){var a=e("../internals/object-define-property").f,l=e("../internals/has"),d=e("../internals/well-known-symbol"),m=d("toStringTag");n.exports=function(b,h,_){b&&!l(b=_?b:b.prototype,m)&&a(b,m,{configurable:!0,value:h})}},{"../internals/has":252,"../internals/object-define-property":278,"../internals/well-known-symbol":314}],299:[function(e,n,i){var a=e("../internals/shared"),l=e("../internals/uid"),d=a("keys");n.exports=function(m){return d[m]||(d[m]=l(m))}},{"../internals/shared":301,"../internals/uid":311}],300:[function(e,n,i){var a=e("../internals/global"),l=e("../internals/set-global"),d="__core-js_shared__",m=a[d]||l(d,{});n.exports=m},{"../internals/global":251,"../internals/set-global":296}],301:[function(e,n,i){var a=e("../internals/is-pure"),l=e("../internals/shared-store");(n.exports=function(d,m){return l[d]||(l[d]=m!==void 0?m:{})})("versions",[]).push({version:"3.6.5",mode:a?"pure":"global",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"})},{"../internals/is-pure":264,"../internals/shared-store":300}],302:[function(e,n,i){var a=e("../internals/an-object"),l=e("../internals/a-function"),d=e("../internals/well-known-symbol"),m=d("species");n.exports=function(b,h){var _=a(b).constructor,g;return _===void 0||(g=a(_)[m])==null?h:l(g)}},{"../internals/a-function":219,"../internals/an-object":223,"../internals/well-known-symbol":314}],303:[function(e,n,i){var a=e("../internals/global"),l=e("../internals/fails"),d=e("../internals/classof-raw"),m=e("../internals/function-bind-context"),b=e("../internals/html"),h=e("../internals/document-create-element"),_=e("../internals/engine-is-ios"),g=a.location,y=a.setImmediate,x=a.clearImmediate,p=a.process,S=a.MessageChannel,w=a.Dispatch,u=0,o={},s="onreadystatechange",c,f,v,k=function(j){if(o.hasOwnProperty(j)){var L=o[j];delete o[j],L()}},T=function(j){return function(){k(j)}},C=function(j){k(j.data)},D=function(j){a.postMessage(j+"",g.protocol+"//"+g.host)};(!y||!x)&&(y=function(L){for(var M=[],B=1;arguments.length>B;)M.push(arguments[B++]);return o[++u]=function(){(typeof L=="function"?L:Function(L)).apply(void 0,M)},c(u),u},x=function(L){delete o[L]},d(p)=="process"?c=function(j){p.nextTick(T(j))}:w&&w.now?c=function(j){w.now(T(j))}:S&&!_?(f=new S,v=f.port2,f.port1.onmessage=C,c=m(v.postMessage,v,1)):a.addEventListener&&typeof postMessage=="function"&&!a.importScripts&&!l(D)&&g.protocol!=="file:"?(c=D,a.addEventListener("message",C,!1)):s in h("script")?c=function(j){b.appendChild(h("script"))[s]=function(){b.removeChild(this),k(j)}}:c=function(j){setTimeout(T(j),0)}),n.exports={set:y,clear:x}},{"../internals/classof-raw":230,"../internals/document-create-element":241,"../internals/engine-is-ios":242,"../internals/fails":247,"../internals/function-bind-context":248,"../internals/global":251,"../internals/html":255}],304:[function(e,n,i){var a=e("../internals/to-integer"),l=Math.max,d=Math.min;n.exports=function(m,b){var h=a(m);return h<0?l(h+b,0):d(h,b)}},{"../internals/to-integer":306}],305:[function(e,n,i){var a=e("../internals/indexed-object"),l=e("../internals/require-object-coercible");n.exports=function(d){return a(l(d))}},{"../internals/indexed-object":257,"../internals/require-object-coercible":295}],306:[function(e,n,i){var a=Math.ceil,l=Math.floor;n.exports=function(d){return isNaN(d=+d)?0:(d>0?l:a)(d)}},{}],307:[function(e,n,i){var a=e("../internals/to-integer"),l=Math.min;n.exports=function(d){return d>0?l(a(d),9007199254740991):0}},{"../internals/to-integer":306}],308:[function(e,n,i){var a=e("../internals/require-object-coercible");n.exports=function(l){return Object(a(l))}},{"../internals/require-object-coercible":295}],309:[function(e,n,i){var a=e("../internals/is-object");n.exports=function(l,d){if(!a(l))return l;var m,b;if(d&&typeof(m=l.toString)=="function"&&!a(b=m.call(l))||typeof(m=l.valueOf)=="function"&&!a(b=m.call(l))||!d&&typeof(m=l.toString)=="function"&&!a(b=m.call(l)))return b;throw TypeError("Can't convert object to primitive value")}},{"../internals/is-object":263}],310:[function(e,n,i){var a=e("../internals/well-known-symbol"),l=a("toStringTag"),d={};d[l]="z",n.exports=String(d)==="[object z]"},{"../internals/well-known-symbol":314}],311:[function(e,n,i){var a=0,l=Math.random();n.exports=function(d){return"Symbol("+String(d===void 0?"":d)+")_"+(++a+l).toString(36)}},{}],312:[function(e,n,i){var a=e("../internals/native-symbol");n.exports=a&&!Symbol.sham&&typeof Symbol.iterator=="symbol"},{"../internals/native-symbol":271}],313:[function(e,n,i){var a=e("../internals/well-known-symbol");i.f=a},{"../internals/well-known-symbol":314}],314:[function(e,n,i){var a=e("../internals/global"),l=e("../internals/shared"),d=e("../internals/has"),m=e("../internals/uid"),b=e("../internals/native-symbol"),h=e("../internals/use-symbol-as-uid"),_=l("wks"),g=a.Symbol,y=h?g:g&&g.withoutSetter||m;n.exports=function(x){return d(_,x)||(b&&d(g,x)?_[x]=g[x]:_[x]=y("Symbol."+x)),_[x]}},{"../internals/global":251,"../internals/has":252,"../internals/native-symbol":271,"../internals/shared":301,"../internals/uid":311,"../internals/use-symbol-as-uid":312}],315:[function(e,n,i){var a=e("../internals/export"),l=e("../internals/array-iteration").findIndex,d=e("../internals/add-to-unscopables"),m=e("../internals/array-method-uses-to-length"),b="findIndex",h=!0,_=m(b);b in[]&&Array(1)[b](function(){h=!1}),a({target:"Array",proto:!0,forced:h||!_},{findIndex:function(y){return l(this,y,arguments.length>1?arguments[1]:void 0)}}),d(b)},{"../internals/add-to-unscopables":221,"../internals/array-iteration":225,"../internals/array-method-uses-to-length":226,"../internals/export":246}],316:[function(e,n,i){var a=e("../internals/export"),l=e("../internals/array-iteration").find,d=e("../internals/add-to-unscopables"),m=e("../internals/array-method-uses-to-length"),b="find",h=!0,_=m(b);b in[]&&Array(1)[b](function(){h=!1}),a({target:"Array",proto:!0,forced:h||!_},{find:function(y){return l(this,y,arguments.length>1?arguments[1]:void 0)}}),d(b)},{"../internals/add-to-unscopables":221,"../internals/array-iteration":225,"../internals/array-method-uses-to-length":226,"../internals/export":246}],317:[function(e,n,i){var a=e("../internals/export"),l=e("../internals/array-includes").includes,d=e("../internals/add-to-unscopables"),m=e("../internals/array-method-uses-to-length"),b=m("indexOf",{ACCESSORS:!0,1:0});a({target:"Array",proto:!0,forced:!b},{includes:function(_){return l(this,_,arguments.length>1?arguments[1]:void 0)}}),d("includes")},{"../internals/add-to-unscopables":221,"../internals/array-includes":224,"../internals/array-method-uses-to-length":226,"../internals/export":246}],318:[function(e,n,i){var a=e("../internals/to-indexed-object"),l=e("../internals/add-to-unscopables"),d=e("../internals/iterators"),m=e("../internals/internal-state"),b=e("../internals/define-iterator"),h="Array Iterator",_=m.set,g=m.getterFor(h);n.exports=b(Array,"Array",function(y,x){_(this,{type:h,target:a(y),index:0,kind:x})},function(){var y=g(this),x=y.target,p=y.kind,S=y.index++;return!x||S>=x.length?(y.target=void 0,{value:void 0,done:!0}):p=="keys"?{value:S,done:!1}:p=="values"?{value:x[S],done:!1}:{value:[S,x[S]],done:!1}},"values"),d.Arguments=d.Array,l("keys"),l("values"),l("entries")},{"../internals/add-to-unscopables":221,"../internals/define-iterator":238,"../internals/internal-state":259,"../internals/iterators":268,"../internals/to-indexed-object":305}],319:[function(e,n,i){var a=e("../internals/export");a({target:"Number",stat:!0},{isNaN:function(d){return d!=d}})},{"../internals/export":246}],320:[function(e,n,i){var a=e("../internals/export"),l=e("../internals/object-assign");a({target:"Object",stat:!0,forced:Object.assign!==l},{assign:l})},{"../internals/export":246,"../internals/object-assign":275}],321:[function(e,n,i){var a=e("../internals/export"),l=e("../internals/to-object"),d=e("../internals/object-keys"),m=e("../internals/fails"),b=m(function(){d(1)});a({target:"Object",stat:!0,forced:b},{keys:function(_){return d(l(_))}})},{"../internals/export":246,"../internals/fails":247,"../internals/object-keys":285,"../internals/to-object":308}],322:[function(e,n,i){var a=e("../internals/export"),l=e("../internals/object-to-array").values;a({target:"Object",stat:!0},{values:function(m){return l(m)}})},{"../internals/export":246,"../internals/object-to-array":288}],323:[function(e,n,i){var a=e("../internals/export"),l=e("../internals/is-pure"),d=e("../internals/global"),m=e("../internals/get-built-in"),b=e("../internals/native-promise-constructor"),h=e("../internals/redefine"),_=e("../internals/redefine-all"),g=e("../internals/set-to-string-tag"),y=e("../internals/set-species"),x=e("../internals/is-object"),p=e("../internals/a-function"),S=e("../internals/an-instance"),w=e("../internals/classof-raw"),u=e("../internals/inspect-source"),o=e("../internals/iterate"),s=e("../internals/check-correctness-of-iteration"),c=e("../internals/species-constructor"),f=e("../internals/task").set,v=e("../internals/microtask"),k=e("../internals/promise-resolve"),T=e("../internals/host-report-errors"),C=e("../internals/new-promise-capability"),D=e("../internals/perform"),j=e("../internals/internal-state"),L=e("../internals/is-forced"),M=e("../internals/well-known-symbol"),B=e("../internals/engine-v8-version"),R=M("species"),P="Promise",O=j.get,F=j.set,H=j.getterFor(P),V=b,z=d.TypeError,X=d.document,I=d.process,N=m("fetch"),U=C.f,G=U,te=w(I)=="process",re=!!(X&&X.createEvent&&d.dispatchEvent),ne="unhandledrejection",ge="rejectionhandled",ee=0,se=1,J=2,q=1,de=2,xe,ae,fe,Ne,ie=L(P,function(){var et=u(V)!==String(V);if(!et&&(B===66||!te&&typeof PromiseRejectionEvent!="function")||l&&!V.prototype.finally)return!0;if(B>=51&&/native code/.test(V))return!1;var tt=V.resolve(1),ct=function(he){he(function(){},function(){})},gt=tt.constructor={};return gt[R]=ct,!(tt.then(function(){})instanceof ct)}),Y=ie||!s(function(et){V.all(et).catch(function(){})}),Z=function(et){var tt;return x(et)&&typeof(tt=et.then)=="function"?tt:!1},le=function(et,tt,ct){if(!tt.notified){tt.notified=!0;var gt=tt.reactions;v(function(){for(var he=tt.value,De=tt.state==se,Oe=0;gt.length>Oe;){var Ie=gt[Oe++],be=De?Ie.ok:Ie.fail,Le=Ie.resolve,oe=Ie.reject,Qe=Ie.domain,_t,K,je;try{be?(De||(tt.rejection===de&&st(et,tt),tt.rejection=q),be===!0?_t=he:(Qe&&Qe.enter(),_t=be(he),Qe&&(Qe.exit(),je=!0)),_t===Ie.promise?oe(z("Promise-chain cycle")):(K=Z(_t))?K.call(_t,Le,oe):Le(_t)):oe(he)}catch(Ze){Qe&&!je&&Qe.exit(),oe(Ze)}}tt.reactions=[],tt.notified=!1,ct&&!tt.rejection&&Ce(et,tt)})}},Re=function(et,tt,ct){var gt,he;re?(gt=X.createEvent("Event"),gt.promise=tt,gt.reason=ct,gt.initEvent(et,!1,!0),d.dispatchEvent(gt)):gt={promise:tt,reason:ct},(he=d["on"+et])?he(gt):et===ne&&T("Unhandled promise rejection",ct)},Ce=function(et,tt){f.call(d,function(){var ct=tt.value,gt=Ge(tt),he;if(gt&&(he=D(function(){te?I.emit("unhandledRejection",ct,et):Re(ne,et,ct)}),tt.rejection=te||Ge(tt)?de:q,he.error))throw he.value})},Ge=function(et){return et.rejection!==q&&!et.parent},st=function(et,tt){f.call(d,function(){te?I.emit("rejectionHandled",et):Re(ge,et,tt.value)})},vt=function(et,tt,ct,gt){return function(he){et(tt,ct,he,gt)}},ft=function(et,tt,ct,gt){tt.done||(tt.done=!0,gt&&(tt=gt),tt.value=ct,tt.state=J,le(et,tt,!0))},pt=function(et,tt,ct,gt){if(!tt.done){tt.done=!0,gt&&(tt=gt);try{if(et===ct)throw z("Promise can't be resolved itself");var he=Z(ct);he?v(function(){var De={done:!1};try{he.call(ct,vt(pt,et,De,tt),vt(ft,et,De,tt))}catch(Oe){ft(et,De,Oe,tt)}}):(tt.value=ct,tt.state=se,le(et,tt,!1))}catch(De){ft(et,{done:!1},De,tt)}}};ie&&(V=function(tt){S(this,V,P),p(tt),xe.call(this);var ct=O(this);try{tt(vt(pt,this,ct),vt(ft,this,ct))}catch(gt){ft(this,ct,gt)}},xe=function(tt){F(this,{type:P,done:!1,notified:!1,parent:!1,reactions:[],rejection:!1,state:ee,value:void 0})},xe.prototype=_(V.prototype,{then:function(tt,ct){var gt=H(this),he=U(c(this,V));return he.ok=typeof tt=="function"?tt:!0,he.fail=typeof ct=="function"&&ct,he.domain=te?I.domain:void 0,gt.parent=!0,gt.reactions.push(he),gt.state!=ee&&le(this,gt,!1),he.promise},catch:function(et){return this.then(void 0,et)}}),ae=function(){var et=new xe,tt=O(et);this.promise=et,this.resolve=vt(pt,et,tt),this.reject=vt(ft,et,tt)},C.f=U=function(et){return et===V||et===fe?new ae(et):G(et)},!l&&typeof b=="function"&&(Ne=b.prototype.then,h(b.prototype,"then",function(tt,ct){var gt=this;return new V(function(he,De){Ne.call(gt,he,De)}).then(tt,ct)},{unsafe:!0}),typeof N=="function"&&a({global:!0,enumerable:!0,forced:!0},{fetch:function(tt){return k(V,N.apply(d,arguments))}}))),a({global:!0,wrap:!0,forced:ie},{Promise:V}),g(V,P,!1,!0),y(P),fe=m(P),a({target:P,stat:!0,forced:ie},{reject:function(tt){var ct=U(this);return ct.reject.call(void 0,tt),ct.promise}}),a({target:P,stat:!0,forced:l||ie},{resolve:function(tt){return k(l&&this===fe?V:this,tt)}}),a({target:P,stat:!0,forced:Y},{all:function(tt){var ct=this,gt=U(ct),he=gt.resolve,De=gt.reject,Oe=D(function(){var Ie=p(ct.resolve),be=[],Le=0,oe=1;o(tt,function(Qe){var _t=Le++,K=!1;be.push(void 0),oe++,Ie.call(ct,Qe).then(function(je){K||(K=!0,be[_t]=je,--oe||he(be))},De)}),--oe||he(be)});return Oe.error&&De(Oe.value),gt.promise},race:function(tt){var ct=this,gt=U(ct),he=gt.reject,De=D(function(){var Oe=p(ct.resolve);o(tt,function(Ie){Oe.call(ct,Ie).then(gt.resolve,he)})});return De.error&&he(De.value),gt.promise}})},{"../internals/a-function":219,"../internals/an-instance":222,"../internals/check-correctness-of-iteration":229,"../internals/classof-raw":230,"../internals/engine-v8-version":244,"../internals/export":246,"../internals/get-built-in":249,"../internals/global":251,"../internals/host-report-errors":254,"../internals/inspect-source":258,"../internals/internal-state":259,"../internals/is-forced":262,"../internals/is-object":263,"../internals/is-pure":264,"../internals/iterate":266,"../internals/microtask":269,"../internals/native-promise-constructor":270,"../internals/new-promise-capability":273,"../internals/perform":291,"../internals/promise-resolve":292,"../internals/redefine":294,"../internals/redefine-all":293,"../internals/set-species":297,"../internals/set-to-string-tag":298,"../internals/species-constructor":302,"../internals/task":303,"../internals/well-known-symbol":314}],324:[function(e,n,i){var a=e("../internals/export"),l=e("../internals/to-absolute-index"),d=String.fromCharCode,m=String.fromCodePoint,b=!!m&&m.length!=1;a({target:"String",stat:!0,forced:b},{fromCodePoint:function(_){for(var g=[],y=arguments.length,x=0,p;y>x;){if(p=+arguments[x++],l(p,1114111)!==p)throw RangeError(p+" is not a valid code point");g.push(p<65536?d(p):d(((p-=65536)>>10)+55296,p%1024+56320))}return g.join("")}})},{"../internals/export":246,"../internals/to-absolute-index":304}],325:[function(e,n,i){var a=e("../internals/export"),l=e("../internals/not-a-regexp"),d=e("../internals/require-object-coercible"),m=e("../internals/correct-is-regexp-logic");a({target:"String",proto:!0,forced:!m("includes")},{includes:function(h){return!!~String(d(this)).indexOf(l(h),arguments.length>1?arguments[1]:void 0)}})},{"../internals/correct-is-regexp-logic":233,"../internals/export":246,"../internals/not-a-regexp":274,"../internals/require-object-coercible":295}],326:[function(e,n,i){var a=e("../internals/define-well-known-symbol");a("asyncIterator")},{"../internals/define-well-known-symbol":239}],327:[function(e,n,i){var a=e("../internals/export"),l=e("../internals/global"),d=e("../internals/get-built-in"),m=e("../internals/is-pure"),b=e("../internals/descriptors"),h=e("../internals/native-symbol"),_=e("../internals/use-symbol-as-uid"),g=e("../internals/fails"),y=e("../internals/has"),x=e("../internals/is-array"),p=e("../internals/is-object"),S=e("../internals/an-object"),w=e("../internals/to-object"),u=e("../internals/to-indexed-object"),o=e("../internals/to-primitive"),s=e("../internals/create-property-descriptor"),c=e("../internals/object-create"),f=e("../internals/object-keys"),v=e("../internals/object-get-own-property-names"),k=e("../internals/object-get-own-property-names-external"),T=e("../internals/object-get-own-property-symbols"),C=e("../internals/object-get-own-property-descriptor"),D=e("../internals/object-define-property"),j=e("../internals/object-property-is-enumerable"),L=e("../internals/create-non-enumerable-property"),M=e("../internals/redefine"),B=e("../internals/shared"),R=e("../internals/shared-key"),P=e("../internals/hidden-keys"),O=e("../internals/uid"),F=e("../internals/well-known-symbol"),H=e("../internals/well-known-symbol-wrapped"),V=e("../internals/define-well-known-symbol"),z=e("../internals/set-to-string-tag"),X=e("../internals/internal-state"),I=e("../internals/array-iteration").forEach,N=R("hidden"),U="Symbol",G="prototype",te=F("toPrimitive"),re=X.set,ne=X.getterFor(U),ge=Object[G],ee=l.Symbol,se=d("JSON","stringify"),J=C.f,q=D.f,de=k.f,xe=j.f,ae=B("symbols"),fe=B("op-symbols"),Ne=B("string-to-symbol-registry"),ie=B("symbol-to-string-registry"),Y=B("wks"),Z=l.QObject,le=!Z||!Z[G]||!Z[G].findChild,Re=b&&g(function(){return c(q({},"a",{get:function(){return q(this,"a",{value:7}).a}})).a!=7})?function(he,De,Oe){var Ie=J(ge,De);Ie&&delete ge[De],q(he,De,Oe),Ie&&he!==ge&&q(ge,De,Ie)}:q,Ce=function(he,De){var Oe=ae[he]=c(ee[G]);return re(Oe,{type:U,tag:he,description:De}),b||(Oe.description=De),Oe},Ge=_?function(he){return typeof he=="symbol"}:function(he){return Object(he)instanceof ee},st=function(De,Oe,Ie){De===ge&&st(fe,Oe,Ie),S(De);var be=o(Oe,!0);return S(Ie),y(ae,be)?(Ie.enumerable?(y(De,N)&&De[N][be]&&(De[N][be]=!1),Ie=c(Ie,{enumerable:s(0,!1)})):(y(De,N)||q(De,N,s(1,{})),De[N][be]=!0),Re(De,be,Ie)):q(De,be,Ie)},vt=function(De,Oe){S(De);var Ie=u(Oe),be=f(Ie).concat(ct(Ie));return I(be,function(Le){(!b||pt.call(Ie,Le))&&st(De,Le,Ie[Le])}),De},ft=function(De,Oe){return Oe===void 0?c(De):vt(c(De),Oe)},pt=function(De){var Oe=o(De,!0),Ie=xe.call(this,Oe);return this===ge&&y(ae,Oe)&&!y(fe,Oe)?!1:Ie||!y(this,Oe)||!y(ae,Oe)||y(this,N)&&this[N][Oe]?Ie:!0},et=function(De,Oe){var Ie=u(De),be=o(Oe,!0);if(!(Ie===ge&&y(ae,be)&&!y(fe,be))){var Le=J(Ie,be);return Le&&y(ae,be)&&!(y(Ie,N)&&Ie[N][be])&&(Le.enumerable=!0),Le}},tt=function(De){var Oe=de(u(De)),Ie=[];return I(Oe,function(be){!y(ae,be)&&!y(P,be)&&Ie.push(be)}),Ie},ct=function(De){var Oe=De===ge,Ie=de(Oe?fe:u(De)),be=[];return I(Ie,function(Le){y(ae,Le)&&(!Oe||y(ge,Le))&&be.push(ae[Le])}),be};if(h||(ee=function(){if(this instanceof ee)throw TypeError("Symbol is not a constructor");var De=!arguments.length||arguments[0]===void 0?void 0:String(arguments[0]),Oe=O(De),Ie=function(be){this===ge&&Ie.call(fe,be),y(this,N)&&y(this[N],Oe)&&(this[N][Oe]=!1),Re(this,Oe,s(1,be))};return b&&le&&Re(ge,Oe,{configurable:!0,set:Ie}),Ce(Oe,De)},M(ee[G],"toString",function(){return ne(this).tag}),M(ee,"withoutSetter",function(he){return Ce(O(he),he)}),j.f=pt,D.f=st,C.f=et,v.f=k.f=tt,T.f=ct,H.f=function(he){return Ce(F(he),he)},b&&(q(ee[G],"description",{configurable:!0,get:function(){return ne(this).description}}),m||M(ge,"propertyIsEnumerable",pt,{unsafe:!0}))),a({global:!0,wrap:!0,forced:!h,sham:!h},{Symbol:ee}),I(f(Y),function(he){V(he)}),a({target:U,stat:!0,forced:!h},{for:function(he){var De=String(he);if(y(Ne,De))return Ne[De];var Oe=ee(De);return Ne[De]=Oe,ie[Oe]=De,Oe},keyFor:function(De){if(!Ge(De))throw TypeError(De+" is not a symbol");if(y(ie,De))return ie[De]},useSetter:function(){le=!0},useSimple:function(){le=!1}}),a({target:"Object",stat:!0,forced:!h,sham:!b},{create:ft,defineProperty:st,defineProperties:vt,getOwnPropertyDescriptor:et}),a({target:"Object",stat:!0,forced:!h},{getOwnPropertyNames:tt,getOwnPropertySymbols:ct}),a({target:"Object",stat:!0,forced:g(function(){T.f(1)})},{getOwnPropertySymbols:function(De){return T.f(w(De))}}),se){var gt=!h||g(function(){var he=ee();return se([he])!="[null]"||se({a:he})!="{}"||se(Object(he))!="{}"});a({target:"JSON",stat:!0,forced:gt},{stringify:function(De,Oe,Ie){for(var be=[De],Le=1,oe;arguments.length>Le;)be.push(arguments[Le++]);if(oe=Oe,!(!p(Oe)&&De===void 0||Ge(De)))return x(Oe)||(Oe=function(Qe,_t){if(typeof oe=="function"&&(_t=oe.call(this,Qe,_t)),!Ge(_t))return _t}),be[1]=Oe,se.apply(null,be)}})}ee[G][te]||L(ee[G],te,ee[G].valueOf),z(ee,U),P[N]=!0},{"../internals/an-object":223,"../internals/array-iteration":225,"../internals/create-non-enumerable-property":236,"../internals/create-property-descriptor":237,"../internals/define-well-known-symbol":239,"../internals/descriptors":240,"../internals/export":246,"../internals/fails":247,"../internals/get-built-in":249,"../internals/global":251,"../internals/has":252,"../internals/hidden-keys":253,"../internals/internal-state":259,"../internals/is-array":261,"../internals/is-object":263,"../internals/is-pure":264,"../internals/native-symbol":271,"../internals/object-create":276,"../internals/object-define-property":278,"../internals/object-get-own-property-descriptor":279,"../internals/object-get-own-property-names":281,"../internals/object-get-own-property-names-external":280,"../internals/object-get-own-property-symbols":282,"../internals/object-keys":285,"../internals/object-property-is-enumerable":286,"../internals/redefine":294,"../internals/set-to-string-tag":298,"../internals/shared":301,"../internals/shared-key":299,"../internals/to-indexed-object":305,"../internals/to-object":308,"../internals/to-primitive":309,"../internals/uid":311,"../internals/use-symbol-as-uid":312,"../internals/well-known-symbol":314,"../internals/well-known-symbol-wrapped":313}],328:[function(e,n,i){(function(a){function l(f){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(k){return typeof k}:l=function(k){return k&&typeof Symbol=="function"&&k.constructor===Symbol&&k!==Symbol.prototype?"symbol":typeof k},l(f)}function d(f){return Array.isArray?Array.isArray(f):c(f)==="[object Array]"}i.isArray=d;function m(f){return typeof f=="boolean"}i.isBoolean=m;function b(f){return f===null}i.isNull=b;function h(f){return f==null}i.isNullOrUndefined=h;function _(f){return typeof f=="number"}i.isNumber=_;function g(f){return typeof f=="string"}i.isString=g;function y(f){return l(f)==="symbol"}i.isSymbol=y;function x(f){return f===void 0}i.isUndefined=x;function p(f){return c(f)==="[object RegExp]"}i.isRegExp=p;function S(f){return l(f)==="object"&&f!==null}i.isObject=S;function w(f){return c(f)==="[object Date]"}i.isDate=w;function u(f){return c(f)==="[object Error]"||f instanceof Error}i.isError=u;function o(f){return typeof f=="function"}i.isFunction=o;function s(f){return f===null||typeof f=="boolean"||typeof f=="number"||typeof f=="string"||l(f)==="symbol"||typeof f>"u"}i.isPrimitive=s,i.isBuffer=a.isBuffer;function c(f){return Object.prototype.toString.call(f)}}).call(this,{isBuffer:e("../../is-buffer/index.js")})},{"../../is-buffer/index.js":388}],329:[function(e,n,i){(function(a){var l=e("elliptic"),d=e("bn.js");n.exports=function(g){return new b(g)};var m={secp256k1:{name:"secp256k1",byteLength:32},secp224r1:{name:"p224",byteLength:28},prime256v1:{name:"p256",byteLength:32},prime192v1:{name:"p192",byteLength:24},ed25519:{name:"ed25519",byteLength:32},secp384r1:{name:"p384",byteLength:48},secp521r1:{name:"p521",byteLength:66}};m.p224=m.secp224r1,m.p256=m.secp256r1=m.prime256v1,m.p192=m.secp192r1=m.prime192v1,m.p384=m.secp384r1,m.p521=m.secp521r1;function b(_){this.curveType=m[_],this.curveType||(this.curveType={name:_}),this.curve=new l.ec(this.curveType.name),this.keys=void 0}b.prototype.generateKeys=function(_,g){return this.keys=this.curve.genKeyPair(),this.getPublicKey(_,g)},b.prototype.computeSecret=function(_,g,y){g=g||"utf8",a.isBuffer(_)||(_=new a(_,g));var x=this.curve.keyFromPublic(_).getPublic(),p=x.mul(this.keys.getPrivate()).getX();return h(p,y,this.curveType.byteLength)},b.prototype.getPublicKey=function(_,g){var y=this.keys.getPublic(g==="compressed",!0);return g==="hybrid"&&(y[y.length-1]%2?y[0]=7:y[0]=6),h(y,_)},b.prototype.getPrivateKey=function(_){return h(this.keys.getPrivate(),_)},b.prototype.setPublicKey=function(_,g){return g=g||"utf8",a.isBuffer(_)||(_=new a(_,g)),this.keys._importPublic(_),this},b.prototype.setPrivateKey=function(_,g){g=g||"utf8",a.isBuffer(_)||(_=new a(_,g));var y=new d(_);return y=y.toString(16),this.keys=this.curve.genKeyPair(),this.keys._importPrivate(y),this};function h(_,g,y){Array.isArray(_)||(_=_.toArray());var x=new a(_);if(y&&x.lengthS){var w=x==="rmd160"?new h:_(x);p=w.update(p).digest()}else p.lengthb?g=_(g):g.length"u"?"undefined":a(i))=="object"&&typeof n<"u"?n.exports=d():l.dayjs=d()})(void 0,function(){var l="millisecond",d="second",m="minute",b="hour",h="day",_="week",g="month",y="quarter",x="year",p="date",S=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[^0-9]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?.?(\d+)?$/,w=/\[([^\]]+)]|Y{2,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,u=function(M,B,R){var P=String(M);return!P||P.length>=B?M:""+Array(B+1-P.length).join(R)+M},o={s:u,z:function(M){var B=-M.utcOffset(),R=Math.abs(B),P=Math.floor(R/60),O=R%60;return(B<=0?"+":"-")+u(P,2,"0")+":"+u(O,2,"0")},m:function L(M,B){if(M.date()"u"?"undefined":a(i))=="object"&&typeof n<"u"?n.exports=d():l.dayjs_plugin_customParseFormat=d()})(void 0,function(){var l,d=/(\[[^[]*\])|([-:/.()\s]+)|(A|a|YYYY|YY?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,m=/\d\d/,b=/\d\d?/,h=/\d*[^\s\d-:/()]+/,_=function(w){return function(u){this[w]=+u}},g=[/[+-]\d\d:?\d\d/,function(S){var w,u;(this.zone||(this.zone={})).offset=(w=S.match(/([+-]|\d\d)/g),(u=60*w[1]+ +w[2])===0?0:w[0]==="+"?-u:u)}],y=function(w){var u=l[w];return u&&(u.indexOf?u:u.s.concat(u.f))},x={A:[/[AP]M/,function(S){this.afternoon=S==="PM"}],a:[/[ap]m/,function(S){this.afternoon=S==="pm"}],S:[/\d/,function(S){this.milliseconds=100*+S}],SS:[m,function(S){this.milliseconds=10*+S}],SSS:[/\d{3}/,function(S){this.milliseconds=+S}],s:[b,_("seconds")],ss:[b,_("seconds")],m:[b,_("minutes")],mm:[b,_("minutes")],H:[b,_("hours")],h:[b,_("hours")],HH:[b,_("hours")],hh:[b,_("hours")],D:[b,_("day")],DD:[m,_("day")],Do:[h,function(S){var w=l.ordinal,u=S.match(/\d+/);if(this.day=u[0],w)for(var o=1;o<=31;o+=1)w(o).replace(/\[|\]/g,"")===S&&(this.day=o)}],M:[b,_("month")],MM:[m,_("month")],MMM:[h,function(S){var w=y("months"),u=(y("monthsShort")||w.map(function(o){return o.substr(0,3)})).indexOf(S)+1;if(u<1)throw new Error;this.month=u%12||u}],MMMM:[h,function(S){var w=y("months").indexOf(S)+1;if(w<1)throw new Error;this.month=w%12||w}],Y:[/[+-]?\d+/,_("year")],YY:[m,function(S){S=+S,this.year=S+(S>68?1900:2e3)}],YYYY:[/\d{4}/,_("year")],Z:g,ZZ:g},p=function(w,u,o){try{var s=function(V){for(var z=V.match(d),X=z.length,I=0;I0?f-1:L.getMonth());var P=k||0,O=T||0,F=C||0,H=D||0;return j?new Date(Date.UTC(B,R,M,P,O,F,H+60*j.offset*1e3)):o?new Date(Date.UTC(B,R,M,P,O,F,H)):new Date(B,R,M,P,O,F,H)}catch{return new Date("")}};return function(S,w,u){var o=w.prototype,s=o.parse;o.parse=function(c){var f=c.date,v=c.utc,k=c.args;this.$u=v;var T=k[1];if(typeof T=="string"){var C=k[2]===!0,D=k[3]===!0,j=C||D,L=k[2];D&&(L=k[2]),C||(l=L?u.Ls[L]:this.$locale()),this.$d=p(f,T,v),this.init(),L&&L!==!0&&(this.$L=this.locale(L).$L),j&&f!==this.format(T)&&(this.$d=new Date(""))}else if(T instanceof Array)for(var M=T.length,B=1;B<=M;B+=1){k[1]=T[B-1];var R=u.apply(this,k);if(R.isValid()){this.$d=R.$d,this.$L=R.$L,this.init();break}B===M&&(this.$d=new Date(""))}else s.call(this,c)}}})},{}],338:[function(e,n,i){function a(l){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(m){return typeof m}:a=function(m){return m&&typeof Symbol=="function"&&m.constructor===Symbol&&m!==Symbol.prototype?"symbol":typeof m},a(l)}(function(l,d){(typeof i>"u"?"undefined":a(i))=="object"&&typeof n<"u"?n.exports=d():l.dayjs_plugin_utc=d()})(void 0,function(){return function(l,d,m){var b=new Date().getTimezoneOffset(),h=d.prototype;m.utc=function(w){return new d({date:w,utc:!0,args:arguments})},h.utc=function(){return m(this.toDate(),{locale:this.$L,utc:!0})},h.local=function(){return m(this.toDate(),{locale:this.$L,utc:!1})};var _=h.parse;h.parse=function(w){w.utc&&(this.$u=!0),this.$utils().u(w.$offset)||(this.$offset=w.$offset),_.call(this,w)};var g=h.init;h.init=function(){if(this.$u){var w=this.$d;this.$y=w.getUTCFullYear(),this.$M=w.getUTCMonth(),this.$D=w.getUTCDate(),this.$W=w.getUTCDay(),this.$H=w.getUTCHours(),this.$m=w.getUTCMinutes(),this.$s=w.getUTCSeconds(),this.$ms=w.getUTCMilliseconds()}else g.call(this)};var y=h.utcOffset;h.utcOffset=function(w,u){var o=this.$utils().u;if(o(w))return this.$u?0:o(this.$offset)?y.call(this):this.$offset;var s=Math.abs(w)<=16?60*w:w,c=this;return u?(c.$offset=s,c.$u=w===0,c):(w!==0?(c=this.local().add(s+b,"minute")).$offset=s:c=this.utc(),c)};var x=h.format;h.format=function(w){var u=w||(this.$u?"YYYY-MM-DDTHH:mm:ss[Z]":"");return x.call(this,u)},h.valueOf=function(){var w=this.$utils().u(this.$offset)?0:this.$offset+b;return this.$d.valueOf()-6e4*w},h.isUTC=function(){return!!this.$u},h.toISOString=function(){return this.toDate().toISOString()},h.toString=function(){return this.toDate().toUTCString()};var p=h.toDate;h.toDate=function(w){return w==="s"&&this.$offset?m(this.format("YYYY-MM-DD HH:mm:ss:SSS")).toDate():p.call(this)};var S=h.diff;h.diff=function(w,u,o){var s=this.local(),c=m(w).local();return S.call(s,c,u,o)}}})},{}],339:[function(e,n,i){i.utils=e("./des/utils"),i.Cipher=e("./des/cipher"),i.DES=e("./des/des"),i.CBC=e("./des/cbc"),i.EDE=e("./des/ede")},{"./des/cbc":340,"./des/cipher":341,"./des/des":342,"./des/ede":343,"./des/utils":344}],340:[function(e,n,i){var a=e("minimalistic-assert"),l=e("inherits"),d={};function m(h){a.equal(h.length,8,"Invalid IV length"),this.iv=new Array(8);for(var _=0;_0;_--)b+=this._buffer(m,b),h+=this._flushBuffer(g,h);return b+=this._buffer(m,b),g},l.prototype.final=function(m){var b;m&&(b=this.update(m));var h;return this.type==="encrypt"?h=this._finalEncrypt():h=this._finalDecrypt(),b?b.concat(h):h},l.prototype._pad=function(m,b){if(b===0)return!1;for(;b>>1];p=d.r28shl(p,u),S=d.r28shl(S,u),d.pc2(p,S,y.keys,w)}},h.prototype._update=function(y,x,p,S){var w=this._desState,u=d.readUInt32BE(y,x),o=d.readUInt32BE(y,x+4);d.ip(u,o,w.tmp,0),u=w.tmp[0],o=w.tmp[1],this.type==="encrypt"?this._encrypt(w,u,o,w.tmp,0):this._decrypt(w,u,o,w.tmp,0),u=w.tmp[0],o=w.tmp[1],d.writeUInt32BE(p,u,S),d.writeUInt32BE(p,o,S+4)},h.prototype._pad=function(y,x){for(var p=y.length-x,S=x;S>>0,u=T}d.rip(o,u,S,w)},h.prototype._decrypt=function(y,x,p,S,w){for(var u=p,o=x,s=y.keys.length-2;s>=0;s-=2){var c=y.keys[s],f=y.keys[s+1];d.expand(u,y.tmp,0),c^=y.tmp[0],f^=y.tmp[1];var v=d.substitute(c,f),k=d.permute(v),T=u;u=(o^k)>>>0,o=T}d.rip(u,o,S,w)}},{"./cipher":341,"./utils":344,inherits:387,"minimalistic-assert":437}],343:[function(e,n,i){var a=e("minimalistic-assert"),l=e("inherits"),d=e("./cipher"),m=e("./des");function b(_,g){a.equal(g.length,24,"Invalid key length");var y=g.slice(0,8),x=g.slice(8,16),p=g.slice(16,24);_==="encrypt"?this.ciphers=[m.create({type:"encrypt",key:y}),m.create({type:"decrypt",key:x}),m.create({type:"encrypt",key:p})]:this.ciphers=[m.create({type:"decrypt",key:p}),m.create({type:"encrypt",key:x}),m.create({type:"decrypt",key:y})]}function h(_){d.call(this,_);var g=new b(this.type,this.options.key);this._edeState=g}l(h,d),n.exports=h,h.create=function(g){return new h(g)},h.prototype._update=function(g,y,x,p){var S=this._edeState;S.ciphers[0]._update(g,y,x,p),S.ciphers[1]._update(x,p,x,p),S.ciphers[2]._update(x,p,x,p)},h.prototype._pad=m.prototype._pad,h.prototype._unpad=m.prototype._unpad},{"./cipher":341,"./des":342,inherits:387,"minimalistic-assert":437}],344:[function(e,n,i){i.readUInt32BE=function(b,h){var _=b[0+h]<<24|b[1+h]<<16|b[2+h]<<8|b[3+h];return _>>>0},i.writeUInt32BE=function(b,h,_){b[0+_]=h>>>24,b[1+_]=h>>>16&255,b[2+_]=h>>>8&255,b[3+_]=h&255},i.ip=function(b,h,_,g){for(var y=0,x=0,p=6;p>=0;p-=2){for(var S=0;S<=24;S+=8)y<<=1,y|=h>>>S+p&1;for(var S=0;S<=24;S+=8)y<<=1,y|=b>>>S+p&1}for(var p=6;p>=0;p-=2){for(var S=1;S<=25;S+=8)x<<=1,x|=h>>>S+p&1;for(var S=1;S<=25;S+=8)x<<=1,x|=b>>>S+p&1}_[g+0]=y>>>0,_[g+1]=x>>>0},i.rip=function(b,h,_,g){for(var y=0,x=0,p=0;p<4;p++)for(var S=24;S>=0;S-=8)y<<=1,y|=h>>>S+p&1,y<<=1,y|=b>>>S+p&1;for(var p=4;p<8;p++)for(var S=24;S>=0;S-=8)x<<=1,x|=h>>>S+p&1,x<<=1,x|=b>>>S+p&1;_[g+0]=y>>>0,_[g+1]=x>>>0},i.pc1=function(b,h,_,g){for(var y=0,x=0,p=7;p>=5;p--){for(var S=0;S<=24;S+=8)y<<=1,y|=h>>S+p&1;for(var S=0;S<=24;S+=8)y<<=1,y|=b>>S+p&1}for(var S=0;S<=24;S+=8)y<<=1,y|=h>>S+p&1;for(var p=1;p<=3;p++){for(var S=0;S<=24;S+=8)x<<=1,x|=h>>S+p&1;for(var S=0;S<=24;S+=8)x<<=1,x|=b>>S+p&1}for(var S=0;S<=24;S+=8)x<<=1,x|=b>>S+p&1;_[g+0]=y>>>0,_[g+1]=x>>>0},i.r28shl=function(b,h){return b<>>28-h};var a=[14,11,17,4,27,23,25,0,13,22,7,18,5,9,16,24,2,20,12,21,1,8,15,26,15,4,25,19,9,1,26,16,5,11,23,8,12,7,17,0,22,3,10,14,6,20,27,24];i.pc2=function(b,h,_,g){for(var y=0,x=0,p=a.length>>>1,S=0;S>>a[S]&1;for(var S=p;S>>a[S]&1;_[g+0]=y>>>0,_[g+1]=x>>>0},i.expand=function(b,h,_){var g=0,y=0;g=(b&1)<<5|b>>>27;for(var x=23;x>=15;x-=4)g<<=6,g|=b>>>x&63;for(var x=11;x>=3;x-=4)y|=b>>>x&63,y<<=6;y|=(b&31)<<1|b>>>31,h[_+0]=g>>>0,h[_+1]=y>>>0};var l=[14,0,4,15,13,7,1,4,2,14,15,2,11,13,8,1,3,10,10,6,6,12,12,11,5,9,9,5,0,3,7,8,4,15,1,12,14,8,8,2,13,4,6,9,2,1,11,7,15,5,12,11,9,3,7,14,3,10,10,0,5,6,0,13,15,3,1,13,8,4,14,7,6,15,11,2,3,8,4,14,9,12,7,0,2,1,13,10,12,6,0,9,5,11,10,5,0,13,14,8,7,10,11,1,10,3,4,15,13,4,1,2,5,11,8,6,12,7,6,12,9,0,3,5,2,14,15,9,10,13,0,7,9,0,14,9,6,3,3,4,15,6,5,10,1,2,13,8,12,5,7,14,11,12,4,11,2,15,8,1,13,1,6,10,4,13,9,0,8,6,15,9,3,8,0,7,11,4,1,15,2,14,12,3,5,11,10,5,14,2,7,12,7,13,13,8,14,11,3,5,0,6,6,15,9,0,10,3,1,4,2,7,8,2,5,12,11,1,12,10,4,14,15,9,10,3,6,15,9,0,0,6,12,10,11,1,7,13,13,8,15,9,1,4,3,5,14,11,5,12,2,7,8,2,4,14,2,14,12,11,4,2,1,12,7,4,10,7,11,13,6,1,8,5,5,0,3,15,15,10,13,3,0,9,14,8,9,6,4,11,2,8,1,12,11,7,10,1,13,14,7,2,8,13,15,6,9,15,12,0,5,9,6,10,3,4,0,5,14,3,12,10,1,15,10,4,15,2,9,7,2,12,6,9,8,5,0,6,13,1,3,13,4,14,14,0,7,11,5,3,11,8,9,4,14,3,15,2,5,12,2,9,8,5,12,15,3,10,7,11,0,14,4,1,10,7,1,6,13,0,11,8,6,13,4,13,11,0,2,11,14,7,15,4,0,9,8,1,13,10,3,14,12,3,9,5,7,12,5,2,10,15,6,8,1,6,1,6,4,11,11,13,13,8,12,1,3,4,7,10,14,7,10,9,15,5,6,0,8,15,0,14,5,2,9,3,2,12,13,1,2,15,8,13,4,8,6,10,15,3,11,7,1,4,10,12,9,5,3,6,14,11,5,0,0,14,12,9,7,2,7,2,11,1,4,14,1,7,9,4,12,10,14,8,2,13,0,15,6,12,10,9,13,0,15,3,3,5,5,6,8,11];i.substitute=function(b,h){for(var _=0,g=0;g<4;g++){var y=b>>>18-g*6&63,x=l[g*64+y];_<<=4,_|=x}for(var g=0;g<4;g++){var y=h>>>18-g*6&63,x=l[4*64+g*64+y];_<<=4,_|=x}return _>>>0};var d=[16,25,12,11,3,20,4,15,31,17,9,6,27,14,1,22,30,24,8,18,0,5,29,23,13,19,2,26,10,21,28,7];i.permute=function(b){for(var h=0,_=0;_>>d[_]&1;return h>>>0},i.padSplit=function(b,h,_){for(var g=b.toString(2);g.lengthf;)k.ishrn(1);if(k.isEven()&&k.iadd(h),k.testn(1)||k.iadd(_),v.cmp(_)){if(!v.cmp(g))for(;k.mod(y).cmp(x);)k.iadd(S)}else for(;k.mod(d).cmp(p);)k.iadd(S);if(T=k.shrn(1),o(T)&&o(k)&&s(T)&&s(k)&&b.test(T)&&b.test(k))return k}}},{"bn.js":349,"miller-rabin":435,randombytes:475}],348:[function(e,n,i){n.exports={modp1:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff"},modp2:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff"},modp5:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff"},modp14:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff"},modp15:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff"},modp16:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff"},modp17:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff"},modp18:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff"}}},{}],349:[function(e,n,i){arguments[4][181][0].apply(i,arguments)},{buffer:185,dup:181}],350:[function(e,n,i){var a=i;a.version=e("../package.json").version,a.utils=e("./elliptic/utils"),a.rand=e("brorand"),a.curve=e("./elliptic/curve"),a.curves=e("./elliptic/curves"),a.ec=e("./elliptic/ec"),a.eddsa=e("./elliptic/eddsa")},{"../package.json":366,"./elliptic/curve":353,"./elliptic/curves":356,"./elliptic/ec":357,"./elliptic/eddsa":360,"./elliptic/utils":364,brorand:184}],351:[function(e,n,i){var a=e("bn.js"),l=e("../utils"),d=l.getNAF,m=l.getJSF,b=l.assert;function h(g,y){this.type=g,this.p=new a(y.p,16),this.red=y.prime?a.red(y.prime):a.mont(this.p),this.zero=new a(0).toRed(this.red),this.one=new a(1).toRed(this.red),this.two=new a(2).toRed(this.red),this.n=y.n&&new a(y.n,16),this.g=y.g&&this.pointFromJSON(y.g,y.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4),this._bitLength=this.n?this.n.bitLength():0;var x=this.n&&this.p.div(this.n);!x||x.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}n.exports=h,h.prototype.point=function(){throw new Error("Not implemented")},h.prototype.validate=function(){throw new Error("Not implemented")},h.prototype._fixedNafMul=function(y,x){b(y.precomputed);var p=y._getDoubles(),S=d(x,1,this._bitLength),w=(1<=o;x--)s=(s<<1)+S[x];u.push(s)}for(var c=this.jpoint(null,null,null),f=this.jpoint(null,null,null),v=w;v>0;v--){for(var o=0;o=0;s--){for(var x=0;s>=0&&u[s]===0;s--)x++;if(s>=0&&x++,o=o.dblp(x),s<0)break;var c=u[s];b(c!==0),y.type==="affine"?c>0?o=o.mixedAdd(w[c-1>>1]):o=o.mixedAdd(w[-c-1>>1].neg()):c>0?o=o.add(w[c-1>>1]):o=o.add(w[-c-1>>1].neg())}return y.type==="affine"?o.toP():o},h.prototype._wnafMulAdd=function(y,x,p,S,w){for(var u=this._wnafT1,o=this._wnafT2,s=this._wnafT3,c=0,f=0;f=1;f-=2){var T=f-1,C=f;if(u[T]!==1||u[C]!==1){s[T]=d(p[T],u[T],this._bitLength),s[C]=d(p[C],u[C],this._bitLength),c=Math.max(s[T].length,c),c=Math.max(s[C].length,c);continue}var D=[x[T],null,null,x[C]];x[T].y.cmp(x[C].y)===0?(D[1]=x[T].add(x[C]),D[2]=x[T].toJ().mixedAdd(x[C].neg())):x[T].y.cmp(x[C].y.redNeg())===0?(D[1]=x[T].toJ().mixedAdd(x[C]),D[2]=x[T].add(x[C].neg())):(D[1]=x[T].toJ().mixedAdd(x[C]),D[2]=x[T].toJ().mixedAdd(x[C].neg()));var j=[-3,-1,-5,-7,0,7,5,1,3],L=m(p[T],p[C]);c=Math.max(L[0].length,c),s[T]=new Array(c),s[C]=new Array(c);for(var M=0;M=0;f--){for(var F=0;f>=0;){for(var H=!0,M=0;M=0&&F++,P=P.dblp(F),f<0)break;for(var M=0;M0?v=o[M][V-1>>1]:V<0&&(v=o[M][-V-1>>1].neg()),v.type==="affine"?P=P.mixedAdd(v):P=P.add(v))}}for(var f=0;f=Math.ceil((y.bitLength()+1)/x.step):!1},_.prototype._getDoubles=function(y,x){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var p=[this],S=this,w=0;w":""},_.prototype.isInfinity=function(){return this.x.cmpn(0)===0&&(this.y.cmp(this.z)===0||this.zOne&&this.y.cmp(this.curve.c)===0)},_.prototype._extDbl=function(){var y=this.x.redSqr(),x=this.y.redSqr(),p=this.z.redSqr();p=p.redIAdd(p);var S=this.curve._mulA(y),w=this.x.redAdd(this.y).redSqr().redISub(y).redISub(x),u=S.redAdd(x),o=u.redSub(p),s=S.redSub(x),c=w.redMul(o),f=u.redMul(s),v=w.redMul(s),k=o.redMul(u);return this.curve.point(c,f,k,v)},_.prototype._projDbl=function(){var y=this.x.redAdd(this.y).redSqr(),x=this.x.redSqr(),p=this.y.redSqr(),S,w,u;if(this.curve.twisted){var o=this.curve._mulA(x),s=o.redAdd(p);if(this.zOne)S=y.redSub(x).redSub(p).redMul(s.redSub(this.curve.two)),w=s.redMul(o.redSub(p)),u=s.redSqr().redSub(s).redSub(s);else{var c=this.z.redSqr(),f=s.redSub(c).redISub(c);S=y.redSub(x).redISub(p).redMul(f),w=s.redMul(o.redSub(p)),u=s.redMul(f)}}else{var o=x.redAdd(p),c=this.curve._mulC(this.z).redSqr(),f=o.redSub(c).redSub(c);S=this.curve._mulC(y.redISub(o)).redMul(f),w=this.curve._mulC(o).redMul(x.redISub(p)),u=o.redMul(f)}return this.curve.point(S,w,u)},_.prototype.dbl=function(){return this.isInfinity()?this:this.curve.extended?this._extDbl():this._projDbl()},_.prototype._extAdd=function(y){var x=this.y.redSub(this.x).redMul(y.y.redSub(y.x)),p=this.y.redAdd(this.x).redMul(y.y.redAdd(y.x)),S=this.t.redMul(this.curve.dd).redMul(y.t),w=this.z.redMul(y.z.redAdd(y.z)),u=p.redSub(x),o=w.redSub(S),s=w.redAdd(S),c=p.redAdd(x),f=u.redMul(o),v=s.redMul(c),k=u.redMul(c),T=o.redMul(s);return this.curve.point(f,v,T,k)},_.prototype._projAdd=function(y){var x=this.z.redMul(y.z),p=x.redSqr(),S=this.x.redMul(y.x),w=this.y.redMul(y.y),u=this.curve.d.redMul(S).redMul(w),o=p.redSub(u),s=p.redAdd(u),c=this.x.redAdd(this.y).redMul(y.x.redAdd(y.y)).redISub(S).redISub(w),f=x.redMul(o).redMul(c),v,k;return this.curve.twisted?(v=x.redMul(s).redMul(w.redSub(this.curve._mulA(S))),k=o.redMul(s)):(v=x.redMul(s).redMul(w.redSub(S)),k=this.curve._mulC(o).redMul(s)),this.curve.point(f,v,k)},_.prototype.add=function(y){return this.isInfinity()?y:y.isInfinity()?this:this.curve.extended?this._extAdd(y):this._projAdd(y)},_.prototype.mul=function(y){return this._hasDoubles(y)?this.curve._fixedNafMul(this,y):this.curve._wnafMul(this,y)},_.prototype.mulAdd=function(y,x,p){return this.curve._wnafMulAdd(1,[this,x],[y,p],2,!1)},_.prototype.jmulAdd=function(y,x,p){return this.curve._wnafMulAdd(1,[this,x],[y,p],2,!0)},_.prototype.normalize=function(){if(this.zOne)return this;var y=this.z.redInvm();return this.x=this.x.redMul(y),this.y=this.y.redMul(y),this.t&&(this.t=this.t.redMul(y)),this.z=this.curve.one,this.zOne=!0,this},_.prototype.neg=function(){return this.curve.point(this.x.redNeg(),this.y,this.z,this.t&&this.t.redNeg())},_.prototype.getX=function(){return this.normalize(),this.x.fromRed()},_.prototype.getY=function(){return this.normalize(),this.y.fromRed()},_.prototype.eq=function(y){return this===y||this.getX().cmp(y.getX())===0&&this.getY().cmp(y.getY())===0},_.prototype.eqXToP=function(y){var x=y.toRed(this.curve.red).redMul(this.z);if(this.x.cmp(x)===0)return!0;for(var p=y.clone(),S=this.curve.redN.redMul(this.z);;){if(p.iadd(this.curve.n),p.cmp(this.curve.p)>=0)return!1;if(x.redIAdd(S),this.x.cmp(x)===0)return!0}},_.prototype.toP=_.prototype.normalize,_.prototype.mixedAdd=_.prototype.add},{"../utils":364,"./base":351,"bn.js":365,inherits:387}],353:[function(e,n,i){var a=i;a.base=e("./base"),a.short=e("./short"),a.mont=e("./mont"),a.edwards=e("./edwards")},{"./base":351,"./edwards":352,"./mont":354,"./short":355}],354:[function(e,n,i){var a=e("bn.js"),l=e("inherits"),d=e("./base"),m=e("../utils");function b(_){d.call(this,"mont",_),this.a=new a(_.a,16).toRed(this.red),this.b=new a(_.b,16).toRed(this.red),this.i4=new a(4).toRed(this.red).redInvm(),this.two=new a(2).toRed(this.red),this.a24=this.i4.redMul(this.a.redAdd(this.two))}l(b,d),n.exports=b,b.prototype.validate=function(g){var y=g.normalize().x,x=y.redSqr(),p=x.redMul(y).redAdd(x.redMul(this.a)).redAdd(y),S=p.redSqrt();return S.redSqr().cmp(p)===0};function h(_,g,y){d.BasePoint.call(this,_,"projective"),g===null&&y===null?(this.x=this.curve.one,this.z=this.curve.zero):(this.x=new a(g,16),this.z=new a(y,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)))}l(h,d.BasePoint),b.prototype.decodePoint=function(g,y){return this.point(m.toArray(g,y),1)},b.prototype.point=function(g,y){return new h(this,g,y)},b.prototype.pointFromJSON=function(g){return h.fromJSON(this,g)},h.prototype.precompute=function(){},h.prototype._encode=function(){return this.getX().toArray("be",this.curve.p.byteLength())},h.fromJSON=function(g,y){return new h(g,y[0],y[1]||g.one)},h.prototype.inspect=function(){return this.isInfinity()?"":""},h.prototype.isInfinity=function(){return this.z.cmpn(0)===0},h.prototype.dbl=function(){var g=this.x.redAdd(this.z),y=g.redSqr(),x=this.x.redSub(this.z),p=x.redSqr(),S=y.redSub(p),w=y.redMul(p),u=S.redMul(p.redAdd(this.curve.a24.redMul(S)));return this.curve.point(w,u)},h.prototype.add=function(){throw new Error("Not supported on Montgomery curve")},h.prototype.diffAdd=function(g,y){var x=this.x.redAdd(this.z),p=this.x.redSub(this.z),S=g.x.redAdd(g.z),w=g.x.redSub(g.z),u=w.redMul(x),o=S.redMul(p),s=y.z.redMul(u.redAdd(o).redSqr()),c=y.x.redMul(u.redISub(o).redSqr());return this.curve.point(s,c)},h.prototype.mul=function(g){for(var y=g.clone(),x=this,p=this.curve.point(null,null),S=this,w=[];y.cmpn(0)!==0;y.iushrn(1))w.push(y.andln(1));for(var u=w.length-1;u>=0;u--)w[u]===0?(x=x.diffAdd(p,S),p=p.dbl()):(p=x.diffAdd(p,S),x=x.dbl());return p},h.prototype.mulAdd=function(){throw new Error("Not supported on Montgomery curve")},h.prototype.jumlAdd=function(){throw new Error("Not supported on Montgomery curve")},h.prototype.eq=function(g){return this.getX().cmp(g.getX())===0},h.prototype.normalize=function(){return this.x=this.x.redMul(this.z.redInvm()),this.z=this.curve.one,this},h.prototype.getX=function(){return this.normalize(),this.x.fromRed()}},{"../utils":364,"./base":351,"bn.js":365,inherits:387}],355:[function(e,n,i){var a=e("../utils"),l=e("bn.js"),d=e("inherits"),m=e("./base"),b=a.assert;function h(y){m.call(this,"short",y),this.a=new l(y.a,16).toRed(this.red),this.b=new l(y.b,16).toRed(this.red),this.tinv=this.two.redInvm(),this.zeroA=this.a.fromRed().cmpn(0)===0,this.threeA=this.a.fromRed().sub(this.p).cmpn(-3)===0,this.endo=this._getEndomorphism(y),this._endoWnafT1=new Array(4),this._endoWnafT2=new Array(4)}d(h,m),n.exports=h,h.prototype._getEndomorphism=function(x){if(!(!this.zeroA||!this.g||!this.n||this.p.modn(3)!==1)){var p,S;if(x.beta)p=new l(x.beta,16).toRed(this.red);else{var w=this._getEndoRoots(this.p);p=w[0].cmp(w[1])<0?w[0]:w[1],p=p.toRed(this.red)}if(x.lambda)S=new l(x.lambda,16);else{var u=this._getEndoRoots(this.n);this.g.mul(u[0]).x.cmp(this.g.x.redMul(p))===0?S=u[0]:(S=u[1],b(this.g.mul(S).x.cmp(this.g.x.redMul(p))===0))}var o;return x.basis?o=x.basis.map(function(s){return{a:new l(s.a,16),b:new l(s.b,16)}}):o=this._getEndoBasis(S),{beta:p,lambda:S,basis:o}}},h.prototype._getEndoRoots=function(x){var p=x===this.p?this.red:l.mont(x),S=new l(2).toRed(p).redInvm(),w=S.redNeg(),u=new l(3).toRed(p).redNeg().redSqrt().redMul(S),o=w.redAdd(u).fromRed(),s=w.redSub(u).fromRed();return[o,s]},h.prototype._getEndoBasis=function(x){for(var p=this.n.ushrn(Math.floor(this.n.bitLength()/2)),S=x,w=this.n.clone(),u=new l(1),o=new l(0),s=new l(0),c=new l(1),f,v,k,T,C,D,j,L=0,M,B;S.cmpn(0)!==0;){var R=w.div(S);M=w.sub(R.mul(S)),B=s.sub(R.mul(u));var P=c.sub(R.mul(o));if(!k&&M.cmp(p)<0)f=j.neg(),v=u,k=M.neg(),T=B;else if(k&&++L===2)break;j=M,w=S,S=M,s=u,u=B,c=o,o=P}C=M.neg(),D=B;var O=k.sqr().add(T.sqr()),F=C.sqr().add(D.sqr());return F.cmp(O)>=0&&(C=f,D=v),k.negative&&(k=k.neg(),T=T.neg()),C.negative&&(C=C.neg(),D=D.neg()),[{a:k,b:T},{a:C,b:D}]},h.prototype._endoSplit=function(x){var p=this.endo.basis,S=p[0],w=p[1],u=w.b.mul(x).divRound(this.n),o=S.b.neg().mul(x).divRound(this.n),s=u.mul(S.a),c=o.mul(w.a),f=u.mul(S.b),v=o.mul(w.b),k=x.sub(s).sub(c),T=f.add(v).neg();return{k1:k,k2:T}},h.prototype.pointFromX=function(x,p){x=new l(x,16),x.red||(x=x.toRed(this.red));var S=x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b),w=S.redSqrt();if(w.redSqr().redSub(S).cmp(this.zero)!==0)throw new Error("invalid point");var u=w.fromRed().isOdd();return(p&&!u||!p&&u)&&(w=w.redNeg()),this.point(x,w)},h.prototype.validate=function(x){if(x.inf)return!0;var p=x.x,S=x.y,w=this.a.redMul(p),u=p.redSqr().redMul(p).redIAdd(w).redIAdd(this.b);return S.redSqr().redISub(u).cmpn(0)===0},h.prototype._endoWnafMulAdd=function(x,p,S){for(var w=this._endoWnafT1,u=this._endoWnafT2,o=0;o":""},_.prototype.isInfinity=function(){return this.inf},_.prototype.add=function(x){if(this.inf)return x;if(x.inf)return this;if(this.eq(x))return this.dbl();if(this.neg().eq(x))return this.curve.point(null,null);if(this.x.cmp(x.x)===0)return this.curve.point(null,null);var p=this.y.redSub(x.y);p.cmpn(0)!==0&&(p=p.redMul(this.x.redSub(x.x).redInvm()));var S=p.redSqr().redISub(this.x).redISub(x.x),w=p.redMul(this.x.redSub(S)).redISub(this.y);return this.curve.point(S,w)},_.prototype.dbl=function(){if(this.inf)return this;var x=this.y.redAdd(this.y);if(x.cmpn(0)===0)return this.curve.point(null,null);var p=this.curve.a,S=this.x.redSqr(),w=x.redInvm(),u=S.redAdd(S).redIAdd(S).redIAdd(p).redMul(w),o=u.redSqr().redISub(this.x.redAdd(this.x)),s=u.redMul(this.x.redSub(o)).redISub(this.y);return this.curve.point(o,s)},_.prototype.getX=function(){return this.x.fromRed()},_.prototype.getY=function(){return this.y.fromRed()},_.prototype.mul=function(x){return x=new l(x,16),this.isInfinity()?this:this._hasDoubles(x)?this.curve._fixedNafMul(this,x):this.curve.endo?this.curve._endoWnafMulAdd([this],[x]):this.curve._wnafMul(this,x)},_.prototype.mulAdd=function(x,p,S){var w=[this,p],u=[x,S];return this.curve.endo?this.curve._endoWnafMulAdd(w,u):this.curve._wnafMulAdd(1,w,u,2)},_.prototype.jmulAdd=function(x,p,S){var w=[this,p],u=[x,S];return this.curve.endo?this.curve._endoWnafMulAdd(w,u,!0):this.curve._wnafMulAdd(1,w,u,2,!0)},_.prototype.eq=function(x){return this===x||this.inf===x.inf&&(this.inf||this.x.cmp(x.x)===0&&this.y.cmp(x.y)===0)},_.prototype.neg=function(x){if(this.inf)return this;var p=this.curve.point(this.x,this.y.redNeg());if(x&&this.precomputed){var S=this.precomputed,w=function(o){return o.neg()};p.precomputed={naf:S.naf&&{wnd:S.naf.wnd,points:S.naf.points.map(w)},doubles:S.doubles&&{step:S.doubles.step,points:S.doubles.points.map(w)}}}return p},_.prototype.toJ=function(){if(this.inf)return this.curve.jpoint(null,null,null);var x=this.curve.jpoint(this.x,this.y,this.curve.one);return x};function g(y,x,p,S){m.BasePoint.call(this,y,"jacobian"),x===null&&p===null&&S===null?(this.x=this.curve.one,this.y=this.curve.one,this.z=new l(0)):(this.x=new l(x,16),this.y=new l(p,16),this.z=new l(S,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}d(g,m.BasePoint),h.prototype.jpoint=function(x,p,S){return new g(this,x,p,S)},g.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var x=this.z.redInvm(),p=x.redSqr(),S=this.x.redMul(p),w=this.y.redMul(p).redMul(x);return this.curve.point(S,w)},g.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},g.prototype.add=function(x){if(this.isInfinity())return x;if(x.isInfinity())return this;var p=x.z.redSqr(),S=this.z.redSqr(),w=this.x.redMul(p),u=x.x.redMul(S),o=this.y.redMul(p.redMul(x.z)),s=x.y.redMul(S.redMul(this.z)),c=w.redSub(u),f=o.redSub(s);if(c.cmpn(0)===0)return f.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var v=c.redSqr(),k=v.redMul(c),T=w.redMul(v),C=f.redSqr().redIAdd(k).redISub(T).redISub(T),D=f.redMul(T.redISub(C)).redISub(o.redMul(k)),j=this.z.redMul(x.z).redMul(c);return this.curve.jpoint(C,D,j)},g.prototype.mixedAdd=function(x){if(this.isInfinity())return x.toJ();if(x.isInfinity())return this;var p=this.z.redSqr(),S=this.x,w=x.x.redMul(p),u=this.y,o=x.y.redMul(p).redMul(this.z),s=S.redSub(w),c=u.redSub(o);if(s.cmpn(0)===0)return c.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var f=s.redSqr(),v=f.redMul(s),k=S.redMul(f),T=c.redSqr().redIAdd(v).redISub(k).redISub(k),C=c.redMul(k.redISub(T)).redISub(u.redMul(v)),D=this.z.redMul(s);return this.curve.jpoint(T,C,D)},g.prototype.dblp=function(x){if(x===0)return this;if(this.isInfinity())return this;if(!x)return this.dbl();if(this.curve.zeroA||this.curve.threeA){for(var p=this,S=0;S=0)return!1;if(S.redIAdd(u),this.x.cmp(S)===0)return!0}},g.prototype.inspect=function(){return this.isInfinity()?"":""},g.prototype.isInfinity=function(){return this.z.cmpn(0)===0}},{"../utils":364,"./base":351,"bn.js":365,inherits:387}],356:[function(e,n,i){var a=i,l=e("hash.js"),d=e("./curve"),m=e("./utils"),b=m.assert;function h(y){y.type==="short"?this.curve=new d.short(y):y.type==="edwards"?this.curve=new d.edwards(y):this.curve=new d.mont(y),this.g=this.curve.g,this.n=this.curve.n,this.hash=y.hash,b(this.g.validate(),"Invalid curve"),b(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}a.PresetCurve=h;function _(y,x){Object.defineProperty(a,y,{configurable:!0,enumerable:!0,get:function(){var S=new h(x);return Object.defineProperty(a,y,{configurable:!0,enumerable:!0,value:S}),S}})}_("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:l.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]}),_("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:l.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]}),_("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:l.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]}),_("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:l.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]}),_("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:l.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]}),_("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:l.sha256,gRed:!1,g:["9"]}),_("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:l.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});var g;try{g=e("./precomputed/secp256k1")}catch{g=void 0}_("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:l.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",g]})},{"./curve":353,"./precomputed/secp256k1":363,"./utils":364,"hash.js":372}],357:[function(e,n,i){function a(p){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(w){return typeof w}:a=function(w){return w&&typeof Symbol=="function"&&w.constructor===Symbol&&w!==Symbol.prototype?"symbol":typeof w},a(p)}var l=e("bn.js"),d=e("hmac-drbg"),m=e("../utils"),b=e("../curves"),h=e("brorand"),_=m.assert,g=e("./key"),y=e("./signature");function x(p){if(!(this instanceof x))return new x(p);typeof p=="string"&&(_(b.hasOwnProperty(p),"Unknown curve "+p),p=b[p]),p instanceof b.PresetCurve&&(p={curve:p}),this.curve=p.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=p.curve.g,this.g.precompute(p.curve.n.bitLength()+1),this.hash=p.hash||p.curve.hash}n.exports=x,x.prototype.keyPair=function(S){return new g(this,S)},x.prototype.keyFromPrivate=function(S,w){return g.fromPrivate(this,S,w)},x.prototype.keyFromPublic=function(S,w){return g.fromPublic(this,S,w)},x.prototype.genKeyPair=function(S){S||(S={});var w=new d({hash:this.hash,pers:S.pers,persEnc:S.persEnc||"utf8",entropy:S.entropy||h(this.hash.hmacStrength),entropyEnc:S.entropy&&S.entropyEnc||"utf8",nonce:this.n.toArray()}),u=this.n.byteLength(),o=this.n.sub(new l(2));do{var s=new l(w.generate(u));if(!(s.cmp(o)>0))return s.iaddn(1),this.keyFromPrivate(s)}while(!0)},x.prototype._truncateToN=function(S,w){var u=S.byteLength()*8-this.n.bitLength();return u>0&&(S=S.ushrn(u)),!w&&S.cmp(this.n)>=0?S.sub(this.n):S},x.prototype.sign=function(S,w,u,o){a(u)==="object"&&(o=u,u=null),o||(o={}),w=this.keyFromPrivate(w,u),S=this._truncateToN(new l(S,16));for(var s=this.n.byteLength(),c=w.getPrivate().toArray("be",s),f=S.toArray("be",s),v=new d({hash:this.hash,entropy:c,nonce:f,pers:o.pers,persEnc:o.persEnc||"utf8"}),k=this.n.sub(new l(1)),T=0;;T++){var C=o.k?o.k(T):new l(v.generate(this.n.byteLength()));if(C=this._truncateToN(C,!0),!(C.cmpn(1)<=0||C.cmp(k)>=0)){var D=this.g.mul(C);if(!D.isInfinity()){var j=D.getX(),L=j.umod(this.n);if(L.cmpn(0)!==0){var M=C.invm(this.n).mul(L.mul(w.getPrivate()).iadd(S));if(M=M.umod(this.n),M.cmpn(0)!==0){var B=(D.getY().isOdd()?1:0)|(j.cmp(L)!==0?2:0);return o.canonical&&M.cmp(this.nh)>0&&(M=this.n.sub(M),B^=1),new y({r:L,s:M,recoveryParam:B})}}}}}},x.prototype.verify=function(S,w,u,o){S=this._truncateToN(new l(S,16)),u=this.keyFromPublic(u,o),w=new y(w,"hex");var s=w.r,c=w.s;if(s.cmpn(1)<0||s.cmp(this.n)>=0||c.cmpn(1)<0||c.cmp(this.n)>=0)return!1;var f=c.invm(this.n),v=f.mul(S).umod(this.n),k=f.mul(s).umod(this.n);if(!this.curve._maxwellTrick){var T=this.g.mulAdd(v,u.getPublic(),k);return T.isInfinity()?!1:T.getX().umod(this.n).cmp(s)===0}var T=this.g.jmulAdd(v,u.getPublic(),k);return T.isInfinity()?!1:T.eqXToP(s)},x.prototype.recoverPubKey=function(p,S,w,u){_((3&w)===w,"The recovery param is more than two bits"),S=new y(S,u);var o=this.n,s=new l(p),c=S.r,f=S.s,v=w&1,k=w>>1;if(c.cmp(this.curve.p.umod(this.curve.n))>=0&&k)throw new Error("Unable to find sencond key candinate");k?c=this.curve.pointFromX(c.add(this.curve.n),v):c=this.curve.pointFromX(c,v);var T=S.r.invm(o),C=o.sub(s).mul(T).umod(o),D=f.mul(T).umod(o);return this.g.mulAdd(C,c,D)},x.prototype.getKeyRecoveryParam=function(p,S,w,u){if(S=new y(S,u),S.recoveryParam!==null)return S.recoveryParam;for(var o=0;o<4;o++){var s;try{s=this.recoverPubKey(p,S,o)}catch{continue}if(s.eq(w))return o}throw new Error("Unable to find valid recovery factor")}},{"../curves":356,"../utils":364,"./key":358,"./signature":359,"bn.js":365,brorand:184,"hmac-drbg":384}],358:[function(e,n,i){var a=e("bn.js"),l=e("../utils"),d=l.assert;function m(b,h){this.ec=b,this.priv=null,this.pub=null,h.priv&&this._importPrivate(h.priv,h.privEnc),h.pub&&this._importPublic(h.pub,h.pubEnc)}n.exports=m,m.fromPublic=function(h,_,g){return _ instanceof m?_:new m(h,{pub:_,pubEnc:g})},m.fromPrivate=function(h,_,g){return _ instanceof m?_:new m(h,{priv:_,privEnc:g})},m.prototype.validate=function(){var h=this.getPublic();return h.isInfinity()?{result:!1,reason:"Invalid public key"}:h.validate()?h.mul(this.ec.curve.n).isInfinity()?{result:!0,reason:null}:{result:!1,reason:"Public key * N != O"}:{result:!1,reason:"Public key is not a point"}},m.prototype.getPublic=function(h,_){return typeof h=="string"&&(_=h,h=null),this.pub||(this.pub=this.ec.g.mul(this.priv)),_?this.pub.encode(_,h):this.pub},m.prototype.getPrivate=function(h){return h==="hex"?this.priv.toString(16,2):this.priv},m.prototype._importPrivate=function(h,_){this.priv=new a(h,_||16),this.priv=this.priv.umod(this.ec.curve.n)},m.prototype._importPublic=function(h,_){if(h.x||h.y){this.ec.curve.type==="mont"?d(h.x,"Need x coordinate"):(this.ec.curve.type==="short"||this.ec.curve.type==="edwards")&&d(h.x&&h.y,"Need both x and y coordinate"),this.pub=this.ec.curve.point(h.x,h.y);return}this.pub=this.ec.curve.decodePoint(h,_)},m.prototype.derive=function(h){return h.mul(this.priv).getX()},m.prototype.sign=function(h,_,g){return this.ec.sign(h,this,_,g)},m.prototype.verify=function(h,_){return this.ec.verify(h,_,this)},m.prototype.inspect=function(){return""}},{"../utils":364,"bn.js":365}],359:[function(e,n,i){var a=e("bn.js"),l=e("../utils"),d=l.assert;function m(y,x){if(y instanceof m)return y;this._importDER(y,x)||(d(y.r&&y.s,"Signature without r or s"),this.r=new a(y.r,16),this.s=new a(y.s,16),y.recoveryParam===void 0?this.recoveryParam=null:this.recoveryParam=y.recoveryParam)}n.exports=m;function b(){this.place=0}function h(y,x){var p=y[x.place++];if(!(p&128))return p;var S=p&15;if(S===0||S>4)return!1;for(var w=0,u=0,o=x.place;u>>=0;return w<=127?!1:(x.place=o,w)}function _(y){for(var x=0,p=y.length-1;!y[x]&&!(y[x+1]&128)&&x>>3);for(y.push(p|128);--p;)y.push(x>>>(p<<3)&255);y.push(x)}m.prototype.toDER=function(x){var p=this.r.toArray(),S=this.s.toArray();for(p[0]&128&&(p=[0].concat(p)),S[0]&128&&(S=[0].concat(S)),p=_(p),S=_(S);!S[0]&&!(S[1]&128);)S=S.slice(1);var w=[2];g(w,p.length),w=w.concat(p),w.push(2),g(w,S.length);var u=w.concat(S),o=[48];return g(o,u.length),o=o.concat(u),l.encode(o,x)}},{"../utils":364,"bn.js":365}],360:[function(e,n,i){var a=e("hash.js"),l=e("../curves"),d=e("../utils"),m=d.assert,b=d.parseBytes,h=e("./key"),_=e("./signature");function g(x){if(m(x==="ed25519","only tested with ed25519 so far"),!(this instanceof g))return new g(x);var x=l[x].curve;this.curve=x,this.g=x.g,this.g.precompute(x.n.bitLength()+1),this.pointClass=x.point().constructor,this.encodingLength=Math.ceil(x.n.bitLength()/8),this.hash=a.sha512}n.exports=g,g.prototype.sign=function(x,p){x=b(x);var S=this.keyFromSecret(p),w=this.hashInt(S.messagePrefix(),x),u=this.g.mul(w),o=this.encodePoint(u),s=this.hashInt(o,S.pubBytes(),x).mul(S.priv()),c=w.add(s).umod(this.curve.n);return this.makeSignature({R:u,S:c,Rencoded:o})},g.prototype.verify=function(x,p,S){x=b(x),p=this.makeSignature(p);var w=this.keyFromPublic(S),u=this.hashInt(p.Rencoded(),w.pubBytes(),x),o=this.g.mul(p.S()),s=p.R().add(w.pub().mul(u));return s.eq(o)},g.prototype.hashInt=function(){for(var x=this.hash(),p=0;p(u>>1)-1?c=(u>>1)-f:c=f,o.isubn(c)):c=0,w[s]=c,o.iushrn(1)}return w}a.getNAF=b;function h(x,p){var S=[[],[]];x=x.clone(),p=p.clone();for(var w=0,u=0;x.cmpn(-w)>0||p.cmpn(-u)>0;){var o=x.andln(3)+w&3,s=p.andln(3)+u&3;o===3&&(o=-1),s===3&&(s=-1);var c;if(!(o&1))c=0;else{var f=x.andln(7)+w&7;(f===3||f===5)&&s===2?c=-o:c=o}S[0].push(c);var v;if(!(s&1))v=0;else{var f=p.andln(7)+u&7;(f===3||f===5)&&o===2?v=-s:v=s}S[1].push(v),2*w===c+1&&(w=1-w),2*u===v+1&&(u=1-u),x.iushrn(1),p.iushrn(1)}return S}a.getJSF=h;function _(x,p,S){var w="_"+p;x.prototype[p]=function(){return this[w]!==void 0?this[w]:this[w]=S.call(this)}}a.cachedProperty=_;function g(x){return typeof x=="string"?a.toArray(x,"hex"):x}a.parseBytes=g;function y(x){return new l(x,"hex","le")}a.intFromLE=y},{"bn.js":365,"minimalistic-assert":437,"minimalistic-crypto-utils":438}],365:[function(e,n,i){arguments[4][181][0].apply(i,arguments)},{buffer:185,dup:181}],366:[function(e,n,i){n.exports={_from:"elliptic@^6.5.3",_id:"elliptic@6.5.3",_inBundle:!1,_integrity:"sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==",_location:"/elliptic",_phantomChildren:{},_requested:{type:"range",registry:!0,raw:"elliptic@^6.5.3",name:"elliptic",escapedName:"elliptic",rawSpec:"^6.5.3",saveSpec:null,fetchSpec:"^6.5.3"},_requiredBy:["/browserify-sign","/create-ecdh"],_resolved:"https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz",_shasum:"cb59eb2efdaf73a0bd78ccd7015a62ad6e0f93d6",_spec:"elliptic@^6.5.3",_where:"/mnt/d/dev/git/exceljs/node_modules/browserify-sign",author:{name:"Fedor Indutny",email:"fedor@indutny.com"},bugs:{url:"https://github.com/indutny/elliptic/issues"},bundleDependencies:!1,dependencies:{"bn.js":"^4.4.0",brorand:"^1.0.1","hash.js":"^1.0.0","hmac-drbg":"^1.0.0",inherits:"^2.0.1","minimalistic-assert":"^1.0.0","minimalistic-crypto-utils":"^1.0.0"},deprecated:!1,description:"EC cryptography",devDependencies:{brfs:"^1.4.3",coveralls:"^3.0.8",grunt:"^1.0.4","grunt-browserify":"^5.0.0","grunt-cli":"^1.2.0","grunt-contrib-connect":"^1.0.0","grunt-contrib-copy":"^1.0.0","grunt-contrib-uglify":"^1.0.1","grunt-mocha-istanbul":"^3.0.1","grunt-saucelabs":"^9.0.1",istanbul:"^0.4.2",jscs:"^3.0.7",jshint:"^2.10.3",mocha:"^6.2.2"},files:["lib"],homepage:"https://github.com/indutny/elliptic",keywords:["EC","Elliptic","curve","Cryptography"],license:"MIT",main:"lib/elliptic.js",name:"elliptic",repository:{type:"git",url:"git+ssh://git@github.com/indutny/elliptic.git"},scripts:{jscs:"jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",jshint:"jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",lint:"npm run jscs && npm run jshint",test:"npm run lint && npm run unit",unit:"istanbul test _mocha --reporter=spec test/index.js",version:"grunt dist && git add dist/"},version:"6.5.3"}},{}],367:[function(e,n,i){function a(M){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(R){return typeof R}:a=function(R){return R&&typeof Symbol=="function"&&R.constructor===Symbol&&R!==Symbol.prototype?"symbol":typeof R},a(M)}var l=Object.create||D,d=Object.keys||j,m=Function.prototype.bind||L;function b(){(!this._events||!Object.prototype.hasOwnProperty.call(this,"_events"))&&(this._events=l(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0}n.exports=b,b.EventEmitter=b,b.prototype._events=void 0,b.prototype._maxListeners=void 0;var h=10,_;try{var g={};Object.defineProperty&&Object.defineProperty(g,"x",{value:0}),_=g.x===0}catch{_=!1}_?Object.defineProperty(b,"defaultMaxListeners",{enumerable:!0,get:function(){return h},set:function(B){if(typeof B!="number"||B<0||B!==B)throw new TypeError('"defaultMaxListeners" must be a positive number');h=B}}):b.defaultMaxListeners=h,b.prototype.setMaxListeners=function(B){if(typeof B!="number"||B<0||isNaN(B))throw new TypeError('"n" argument must be a positive number');return this._maxListeners=B,this};function y(M){return M._maxListeners===void 0?b.defaultMaxListeners:M._maxListeners}b.prototype.getMaxListeners=function(){return y(this)};function x(M,B,R){if(B)M.call(R);else for(var P=M.length,O=T(M,P),F=0;F1&&(R=arguments[1]),R instanceof Error)throw R;var X=new Error('Unhandled "error" event. ('+R+")");throw X.context=R,X}if(P=V[B],!P)return!1;var I=typeof P=="function";switch(O=arguments.length,O){case 1:x(P,I,this);break;case 2:p(P,I,this,arguments[1]);break;case 3:S(P,I,this,arguments[1],arguments[2]);break;case 4:w(P,I,this,arguments[1],arguments[2],arguments[3]);break;default:for(F=new Array(O-1),H=1;H0&&H.length>O)){H.warned=!0;var V=new Error("Possible EventEmitter memory leak detected. "+H.length+' "'+String(B)+'" listeners added. Use emitter.setMaxListeners() to increase limit.');V.name="MaxListenersExceededWarning",V.emitter=M,V.type=B,V.count=H.length,(typeof console>"u"?"undefined":a(console))==="object"&&console.warn&&console.warn("%s: %s",V.name,V.message)}return M}b.prototype.addListener=function(B,R){return o(this,B,R,!1)},b.prototype.on=b.prototype.addListener,b.prototype.prependListener=function(B,R){return o(this,B,R,!0)};function s(){if(!this.fired)switch(this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length){case 0:return this.listener.call(this.target);case 1:return this.listener.call(this.target,arguments[0]);case 2:return this.listener.call(this.target,arguments[0],arguments[1]);case 3:return this.listener.call(this.target,arguments[0],arguments[1],arguments[2]);default:for(var M=new Array(arguments.length),B=0;B=0;H--)if(P[H]===R||P[H].listener===R){V=P[H].listener,F=H;break}if(F<0)return this;F===0?P.shift():k(P,F),P.length===1&&(O[B]=P[0]),O.removeListener&&this.emit("removeListener",B,V||R)}return this},b.prototype.removeAllListeners=function(B){var R,P,O;if(P=this._events,!P)return this;if(!P.removeListener)return arguments.length===0?(this._events=l(null),this._eventsCount=0):P[B]&&(--this._eventsCount===0?this._events=l(null):delete P[B]),this;if(arguments.length===0){var F=d(P),H;for(O=0;O=0;O--)this.removeListener(B,R[O]);return this};function f(M,B,R){var P=M._events;if(!P)return[];var O=P[B];return O?typeof O=="function"?R?[O.listener||O]:[O]:R?C(O):T(O,O.length):[]}b.prototype.listeners=function(B){return f(this,B,!0)},b.prototype.rawListeners=function(B){return f(this,B,!1)},b.listenerCount=function(M,B){return typeof M.listenerCount=="function"?M.listenerCount(B):v.call(M,B)},b.prototype.listenerCount=v;function v(M){var B=this._events;if(B){var R=B[M];if(typeof R=="function")return 1;if(R)return R.length}return 0}b.prototype.eventNames=function(){return this._eventsCount>0?Reflect.ownKeys(this._events):[]};function k(M,B){for(var R=B,P=R+1,O=M.length;P0||_>0;){var S=new l;S.update(p),S.update(m),b&&S.update(b),p=S.digest();var w=0;if(g>0){var u=y.length-g;w=Math.min(g,p.length),p.copy(y,u,0,w),g-=w}if(w0){var o=x.length-_,s=Math.min(_,p.length-w);p.copy(x,o,w,w+s),_-=s}}return p.fill(0),{key:y,iv:x}}n.exports=d},{"md5.js":434,"safe-buffer":494}],369:[function(e,n,i){Object.defineProperty(i,"__esModule",{value:!0});var a=e("@fast-csv/format");Object.defineProperty(i,"format",{enumerable:!0,get:function(){return a.format}}),Object.defineProperty(i,"write",{enumerable:!0,get:function(){return a.write}}),Object.defineProperty(i,"writeToStream",{enumerable:!0,get:function(){return a.writeToStream}}),Object.defineProperty(i,"writeToBuffer",{enumerable:!0,get:function(){return a.writeToBuffer}}),Object.defineProperty(i,"writeToString",{enumerable:!0,get:function(){return a.writeToString}}),Object.defineProperty(i,"writeToPath",{enumerable:!0,get:function(){return a.writeToPath}}),Object.defineProperty(i,"CsvFormatterStream",{enumerable:!0,get:function(){return a.CsvFormatterStream}}),Object.defineProperty(i,"FormatterOptions",{enumerable:!0,get:function(){return a.FormatterOptions}});var l=e("@fast-csv/parse");Object.defineProperty(i,"parse",{enumerable:!0,get:function(){return l.parse}}),Object.defineProperty(i,"parseString",{enumerable:!0,get:function(){return l.parseString}}),Object.defineProperty(i,"parseStream",{enumerable:!0,get:function(){return l.parseStream}}),Object.defineProperty(i,"parseFile",{enumerable:!0,get:function(){return l.parseFile}}),Object.defineProperty(i,"ParserOptions",{enumerable:!0,get:function(){return l.ParserOptions}}),Object.defineProperty(i,"CsvParserStream",{enumerable:!0,get:function(){return l.CsvParserStream}})},{"@fast-csv/format":148,"@fast-csv/parse":152}],370:[function(e,n,i){var a=e("safe-buffer").Buffer,l=e("readable-stream").Transform,d=e("inherits");function m(h,_){if(!a.isBuffer(h)&&typeof h!="string")throw new TypeError(_+" must be a string or a buffer")}function b(h){l.call(this),this._block=a.allocUnsafe(h),this._blockSize=h,this._blockOffset=0,this._length=[0,0,0,0],this._finalized=!1}d(b,l),b.prototype._transform=function(h,_,g){var y=null;try{this.update(h,_)}catch(x){y=x}g(y)},b.prototype._flush=function(h){var _=null;try{this.push(this.digest())}catch(g){_=g}h(_)},b.prototype.update=function(h,_){if(m(h,"Data"),this._finalized)throw new Error("Digest already called");a.isBuffer(h)||(h=a.from(h,_));for(var g=this._block,y=0;this._blockOffset+h.length-y>=this._blockSize;){for(var x=this._blockOffset;x0;++p)this._length[p]+=S,S=this._length[p]/4294967296|0,S>0&&(this._length[p]-=4294967296*S);return this},b.prototype._update=function(){throw new Error("_update is not implemented")},b.prototype.digest=function(h){if(this._finalized)throw new Error("Digest already called");this._finalized=!0;var _=this._digest();h!==void 0&&(_=_.toString(h)),this._block.fill(0),this._blockOffset=0;for(var g=0;g<4;++g)this._length[g]=0;return _},b.prototype._digest=function(){throw new Error("_digest is not implemented")},n.exports=b},{inherits:387,"readable-stream":491,"safe-buffer":371}],371:[function(e,n,i){arguments[4][214][0].apply(i,arguments)},{buffer:216,dup:214}],372:[function(e,n,i){var a=i;a.utils=e("./hash/utils"),a.common=e("./hash/common"),a.sha=e("./hash/sha"),a.ripemd=e("./hash/ripemd"),a.hmac=e("./hash/hmac"),a.sha1=a.sha.sha1,a.sha256=a.sha.sha256,a.sha224=a.sha.sha224,a.sha384=a.sha.sha384,a.sha512=a.sha.sha512,a.ripemd160=a.ripemd.ripemd160},{"./hash/common":373,"./hash/hmac":374,"./hash/ripemd":375,"./hash/sha":376,"./hash/utils":383}],373:[function(e,n,i){var a=e("./utils"),l=e("minimalistic-assert");function d(){this.pending=null,this.pendingTotal=0,this.blockSize=this.constructor.blockSize,this.outSize=this.constructor.outSize,this.hmacStrength=this.constructor.hmacStrength,this.padLength=this.constructor.padLength/8,this.endian="big",this._delta8=this.blockSize/8,this._delta32=this.blockSize/32}i.BlockHash=d,d.prototype.update=function(b,h){if(b=a.toArray(b,h),this.pending?this.pending=this.pending.concat(b):this.pending=b,this.pendingTotal+=b.length,this.pending.length>=this._delta8){b=this.pending;var _=b.length%this._delta8;this.pending=b.slice(b.length-_,b.length),this.pending.length===0&&(this.pending=null),b=a.join32(b,0,b.length-_,this.endian);for(var g=0;g>>24&255,g[y++]=b>>>16&255,g[y++]=b>>>8&255,g[y++]=b&255}else for(g[y++]=b&255,g[y++]=b>>>8&255,g[y++]=b>>>16&255,g[y++]=b>>>24&255,g[y++]=0,g[y++]=0,g[y++]=0,g[y++]=0,x=8;xthis.blockSize&&(b=new this.Hash().update(b).digest()),l(b.length<=this.blockSize);for(var h=b.length;h>>3}i.g0_256=y;function x(p){return l(p,17)^l(p,19)^p>>>10}i.g1_256=x},{"../utils":383}],383:[function(e,n,i){var a=e("minimalistic-assert"),l=e("inherits");i.inherits=l;function d(P,O){return(P.charCodeAt(O)&64512)!==55296||O<0||O+1>=P.length?!1:(P.charCodeAt(O+1)&64512)===56320}function m(P,O){if(Array.isArray(P))return P.slice();if(!P)return[];var F=[];if(typeof P=="string")if(O){if(O==="hex")for(P=P.replace(/[^a-z0-9]+/ig,""),P.length%2!==0&&(P="0"+P),V=0;V>6|192,F[H++]=z&63|128):d(P,V)?(z=65536+((z&1023)<<10)+(P.charCodeAt(++V)&1023),F[H++]=z>>18|240,F[H++]=z>>12&63|128,F[H++]=z>>6&63|128,F[H++]=z&63|128):(F[H++]=z>>12|224,F[H++]=z>>6&63|128,F[H++]=z&63|128)}else for(V=0;V>>24|P>>>8&65280|P<<8&16711680|(P&255)<<24;return O>>>0}i.htonl=h;function _(P,O){for(var F="",H=0;H>>0}return z}i.join32=x;function p(P,O){for(var F=new Array(P.length*4),H=0,V=0;H>>24,F[V+1]=z>>>16&255,F[V+2]=z>>>8&255,F[V+3]=z&255):(F[V+3]=z>>>24,F[V+2]=z>>>16&255,F[V+1]=z>>>8&255,F[V]=z&255)}return F}i.split32=p;function S(P,O){return P>>>O|P<<32-O}i.rotr32=S;function w(P,O){return P<>>32-O}i.rotl32=w;function u(P,O){return P+O>>>0}i.sum32=u;function o(P,O,F){return P+O+F>>>0}i.sum32_3=o;function s(P,O,F,H){return P+O+F+H>>>0}i.sum32_4=s;function c(P,O,F,H,V){return P+O+F+H+V>>>0}i.sum32_5=c;function f(P,O,F,H){var V=P[O],z=P[O+1],X=H+z>>>0,I=(X>>0,P[O+1]=X}i.sum64=f;function v(P,O,F,H){var V=O+H>>>0,z=(V>>0}i.sum64_hi=v;function k(P,O,F,H){var V=O+H;return V>>>0}i.sum64_lo=k;function T(P,O,F,H,V,z,X,I){var N=0,U=O;U=U+H>>>0,N+=U>>0,N+=U>>0,N+=U>>0}i.sum64_4_hi=T;function C(P,O,F,H,V,z,X,I){var N=O+H+z+I;return N>>>0}i.sum64_4_lo=C;function D(P,O,F,H,V,z,X,I,N,U){var G=0,te=O;te=te+H>>>0,G+=te>>0,G+=te>>0,G+=te>>0,G+=te>>0}i.sum64_5_hi=D;function j(P,O,F,H,V,z,X,I,N,U){var G=O+H+z+I+U;return G>>>0}i.sum64_5_lo=j;function L(P,O,F){var H=O<<32-F|P>>>F;return H>>>0}i.rotr64_hi=L;function M(P,O,F){var H=P<<32-F|O>>>F;return H>>>0}i.rotr64_lo=M;function B(P,O,F){return P>>>F}i.shr64_hi=B;function R(P,O,F){var H=P<<32-F|O>>>F;return H>>>0}i.shr64_lo=R},{inherits:387,"minimalistic-assert":437}],384:[function(e,n,i){var a=e("hash.js"),l=e("minimalistic-crypto-utils"),d=e("minimalistic-assert");function m(b){if(!(this instanceof m))return new m(b);this.hash=b.hash,this.predResist=!!b.predResist,this.outLen=this.hash.outSize,this.minEntropy=b.minEntropy||this.hash.hmacStrength,this._reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var h=l.toArray(b.entropy,b.entropyEnc||"hex"),_=l.toArray(b.nonce,b.nonceEnc||"hex"),g=l.toArray(b.pers,b.persEnc||"hex");d(h.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(h,_,g)}n.exports=m,m.prototype._init=function(h,_,g){var y=h.concat(_).concat(g);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var x=0;x=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(h.concat(g||[])),this._reseed=1},m.prototype.generate=function(h,_,g,y){if(this._reseed>this.reseedInterval)throw new Error("Reseed is required");typeof _!="string"&&(y=g,g=_,_=null),g&&(g=l.toArray(g,y||"hex"),this._update(g));for(var x=[];x.length>1,p=-7,S=d?b-1:0,w=d?-1:1,u=a[l+S];for(S+=w,h=u&(1<<-p)-1,u>>=-p,p+=g;p>0;h=h*256+a[l+S],S+=w,p-=8);for(_=h&(1<<-p)-1,h>>=-p,p+=m;p>0;_=_*256+a[l+S],S+=w,p-=8);if(h===0)h=1-x;else{if(h===y)return _?NaN:(u?-1:1)*(1/0);_=_+Math.pow(2,m),h=h-x}return(u?-1:1)*_*Math.pow(2,h-m)},i.write=function(a,l,d,m,b,h){var _,g,y,x=h*8-b-1,p=(1<>1,w=b===23?Math.pow(2,-24)-Math.pow(2,-77):0,u=m?0:h-1,o=m?1:-1,s=l<0||l===0&&1/l<0?1:0;for(l=Math.abs(l),isNaN(l)||l===1/0?(g=isNaN(l)?1:0,_=p):(_=Math.floor(Math.log(l)/Math.LN2),l*(y=Math.pow(2,-_))<1&&(_--,y*=2),_+S>=1?l+=w/y:l+=w*Math.pow(2,1-S),l*y>=2&&(_++,y/=2),_+S>=p?(g=0,_=p):_+S>=1?(g=(l*y-1)*Math.pow(2,b),_=_+S):(g=l*Math.pow(2,S-1)*Math.pow(2,b),_=0));b>=8;a[d+u]=g&255,u+=o,g/=256,b-=8);for(_=_<0;a[d+u]=_&255,u+=o,_/=256,x-=8);a[d+u-o]|=s*128}},{}],386:[function(e,n,i){(function(a){var l=a.MutationObserver||a.WebKitMutationObserver,d;if(l){var m=0,b=new l(x),h=a.document.createTextNode("");b.observe(h,{characterData:!0}),d=function(){h.data=m=++m%2}}else if(!a.setImmediate&&typeof a.MessageChannel<"u"){var _=new a.MessageChannel;_.port1.onmessage=x,d=function(){_.port2.postMessage(0)}}else"document"in a&&"onreadystatechange"in a.document.createElement("script")?d=function(){var w=a.document.createElement("script");w.onreadystatechange=function(){x(),w.onreadystatechange=null,w.parentNode.removeChild(w),w=null},a.document.documentElement.appendChild(w)}:d=function(){setTimeout(x,0)};var g,y=[];function x(){g=!0;for(var S,w,u=y.length;u;){for(w=y,y=[],S=-1;++S + * @license MIT + */n.exports=function(d){return d!=null&&(a(d)||l(d)||!!d._isBuffer)};function a(d){return!!d.constructor&&typeof d.constructor.isBuffer=="function"&&d.constructor.isBuffer(d)}function l(d){return typeof d.readFloatLE=="function"&&typeof d.slice=="function"&&a(d.slice(0,0))}},{}],389:[function(e,n,i){var a={}.toString;n.exports=Array.isArray||function(l){return a.call(l)=="[object Array]"}},{}],390:[function(e,n,i){var a=e("./utils"),l=e("./support"),d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";i.encode=function(m){for(var b=[],h,_,g,y,x,p,S,w=0,u=m.length,o=u,s=a.getTypeOf(m)!=="string";w>2,x=(h&3)<<4|_>>4,p=o>1?(_&15)<<2|g>>6:64,S=o>2?g&63:64,b.push(d.charAt(y)+d.charAt(x)+d.charAt(p)+d.charAt(S));return b.join("")},i.decode=function(m){var b,h,_,g,y,x,p,S=0,w=0,u="data:";if(m.substr(0,u.length)===u)throw new Error("Invalid base64 input, it looks like a data url.");m=m.replace(/[^A-Za-z0-9\+\/\=]/g,"");var o=m.length*3/4;if(m.charAt(m.length-1)===d.charAt(64)&&o--,m.charAt(m.length-2)===d.charAt(64)&&o--,o%1!==0)throw new Error("Invalid base64 input, bad content length.");var s;for(l.uint8array?s=new Uint8Array(o|0):s=new Array(o|0);S>4,h=(y&15)<<4|x>>2,_=(x&3)<<6|p,s[w++]=b,x!==64&&(s[w++]=h),p!==64&&(s[w++]=_);return s}},{"./support":419,"./utils":421}],391:[function(e,n,i){var a=e("./external"),l=e("./stream/DataWorker"),m=e("./stream/DataLengthProbe"),d=e("./stream/Crc32Probe"),m=e("./stream/DataLengthProbe");function b(h,_,g,y,x){this.compressedSize=h,this.uncompressedSize=_,this.crc32=g,this.compression=y,this.compressedContent=x}b.prototype={getContentWorker:function(){var _=new l(a.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new m("data_length")),g=this;return _.on("end",function(){if(this.streamInfo.data_length!==g.uncompressedSize)throw new Error("Bug : uncompressed data size mismatch")}),_},getCompressedWorker:function(){return new l(a.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize",this.compressedSize).withStreamInfo("uncompressedSize",this.uncompressedSize).withStreamInfo("crc32",this.crc32).withStreamInfo("compression",this.compression)}},b.createWorkerFrom=function(h,_,g){return h.pipe(new d).pipe(new m("uncompressedSize")).pipe(_.compressWorker(g)).pipe(new m("compressedSize")).withStreamInfo("compression",_)},n.exports=b},{"./external":395,"./stream/Crc32Probe":414,"./stream/DataLengthProbe":415,"./stream/DataWorker":416}],392:[function(e,n,i){var a=e("./stream/GenericWorker");i.STORE={magic:"\0\0",compressWorker:function(d){return new a("STORE compression")},uncompressWorker:function(){return new a("STORE decompression")}},i.DEFLATE=e("./flate")},{"./flate":396,"./stream/GenericWorker":417}],393:[function(e,n,i){var a=e("./utils");function l(){for(var h,_=[],g=0;g<256;g++){h=g;for(var y=0;y<8;y++)h=h&1?3988292384^h>>>1:h>>>1;_[g]=h}return _}var d=l();function m(h,_,g,y){var x=d,p=y+g;h=h^-1;for(var S=y;S>>8^x[(h^_[S])&255];return h^-1}function b(h,_,g,y){var x=d,p=y+g;h=h^-1;for(var S=y;S>>8^x[(h^_.charCodeAt(S))&255];return h^-1}n.exports=function(_,g){if(typeof _>"u"||!_.length)return 0;var y=a.getTypeOf(_)!=="string";return y?m(g|0,_,_.length,0):b(g|0,_,_.length,0)}},{"./utils":421}],394:[function(e,n,i){i.base64=!1,i.binary=!1,i.dir=!1,i.createFolders=!0,i.date=null,i.compression=null,i.compressionOptions=null,i.comment=null,i.unixPermissions=null,i.dosPermissions=null},{}],395:[function(e,n,i){var a=null;typeof Promise<"u"?a=Promise:a=e("lie"),n.exports={Promise:a}},{lie:425}],396:[function(e,n,i){var a=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Uint32Array<"u",l=e("pako"),d=e("./utils"),m=e("./stream/GenericWorker"),b=a?"uint8array":"array";i.magic="\b\0";function h(_,g){m.call(this,"FlateWorker/"+_),this._pako=null,this._pakoAction=_,this._pakoOptions=g,this.meta={}}d.inherits(h,m),h.prototype.processChunk=function(_){this.meta=_.meta,this._pako===null&&this._createPako(),this._pako.push(d.transformTo(b,_.data),!1)},h.prototype.flush=function(){m.prototype.flush.call(this),this._pako===null&&this._createPako(),this._pako.push([],!0)},h.prototype.cleanUp=function(){m.prototype.cleanUp.call(this),this._pako=null},h.prototype._createPako=function(){this._pako=new l[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var _=this;this._pako.onData=function(g){_.push({data:g,meta:_.meta})}},i.compressWorker=function(_){return new h("Deflate",_)},i.uncompressWorker=function(){return new h("Inflate",{})}},{"./stream/GenericWorker":417,"./utils":421,pako:439}],397:[function(e,n,i){var a=e("../utils"),l=e("../stream/GenericWorker"),d=e("../utf8"),m=e("../crc32"),b=e("../signature"),h=function(u,o){var s="",c;for(c=0;c>>8;return s},_=function(u,o){var s=u;return u||(s=o?16893:33204),(s&65535)<<16},g=function(u,o){return(u||0)&63},y=function(u,o,s,c,f,v){var k=u.file,T=u.compression,C=v!==d.utf8encode,D=a.transformTo("string",v(k.name)),j=a.transformTo("string",d.utf8encode(k.name)),L=k.comment,M=a.transformTo("string",v(L)),B=a.transformTo("string",d.utf8encode(L)),R=j.length!==k.name.length,P=B.length!==L.length,O,F,H="",V="",z="",X=k.dir,I=k.date,N={crc32:0,compressedSize:0,uncompressedSize:0};(!o||s)&&(N.crc32=u.crc32,N.compressedSize=u.compressedSize,N.uncompressedSize=u.uncompressedSize);var U=0;o&&(U|=8),!C&&(R||P)&&(U|=2048);var G=0,te=0;X&&(G|=16),f==="UNIX"?(te=798,G|=_(k.unixPermissions,X)):(te=20,G|=g(k.dosPermissions)),O=I.getUTCHours(),O=O<<6,O=O|I.getUTCMinutes(),O=O<<5,O=O|I.getUTCSeconds()/2,F=I.getUTCFullYear()-1980,F=F<<4,F=F|I.getUTCMonth()+1,F=F<<5,F=F|I.getUTCDate(),R&&(V=h(1,1)+h(m(D),4)+j,H+="up"+h(V.length,2)+V),P&&(z=h(1,1)+h(m(M),4)+B,H+="uc"+h(z.length,2)+z);var re="";re+=` +\0`,re+=h(U,2),re+=T.magic,re+=h(O,2),re+=h(F,2),re+=h(N.crc32,4),re+=h(N.compressedSize,4),re+=h(N.uncompressedSize,4),re+=h(D.length,2),re+=h(H.length,2);var ne=b.LOCAL_FILE_HEADER+re+D+H,ge=b.CENTRAL_FILE_HEADER+h(te,2)+re+h(M.length,2)+"\0\0\0\0"+h(G,4)+h(c,4)+D+H+M;return{fileRecord:ne,dirRecord:ge}},x=function(u,o,s,c,f){var v="",k=a.transformTo("string",f(c));return v=b.CENTRAL_DIRECTORY_END+"\0\0\0\0"+h(u,2)+h(u,2)+h(o,4)+h(s,4)+h(k.length,2)+k,v},p=function(u){var o="";return o=b.DATA_DESCRIPTOR+h(u.crc32,4)+h(u.compressedSize,4)+h(u.uncompressedSize,4),o};function S(w,u,o,s){l.call(this,"ZipFileWorker"),this.bytesWritten=0,this.zipComment=u,this.zipPlatform=o,this.encodeFileName=s,this.streamFiles=w,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}a.inherits(S,l),S.prototype.push=function(w){var u=w.meta.percent||0,o=this.entriesCount,s=this._sources.length;this.accumulate?this.contentBuffer.push(w):(this.bytesWritten+=w.data.length,l.prototype.push.call(this,{data:w.data,meta:{currentFile:this.currentFile,percent:o?(u+100*(o-s-1))/o:100}}))},S.prototype.openedSource=function(w){this.currentSourceOffset=this.bytesWritten,this.currentFile=w.file.name;var u=this.streamFiles&&!w.file.dir;if(u){var o=y(w,u,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:o.fileRecord,meta:{percent:0}})}else this.accumulate=!0},S.prototype.closedSource=function(w){this.accumulate=!1;var u=this.streamFiles&&!w.file.dir,o=y(w,u,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(o.dirRecord),u)this.push({data:p(w),meta:{percent:100}});else for(this.push({data:o.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},S.prototype.flush=function(){for(var w=this.bytesWritten,u=0;u"u")&&(D.binary=!j);var L=v instanceof h&&v.uncompressedSize===0;(L||D.dir||!v||v.length===0)&&(D.base64=!1,D.binary=!0,v="",D.compression="STORE",T="string");var M=null;v instanceof h||v instanceof d?M=v:y.isNode&&y.isStream(v)?M=new x(f,v):M=l.prepareContent(f,v,D.binary,D.optimizedBinaryString,D.base64);var B=new _(f,M,D);this.files[f]=B},S=function(f){f.slice(-1)==="/"&&(f=f.substring(0,f.length-1));var v=f.lastIndexOf("/");return v>0?f.substring(0,v):""},w=function(f){return f.slice(-1)!=="/"&&(f+="/"),f},u=function(f,v){return v=typeof v<"u"?v:b.createFolders,f=w(f),this.files[f]||p.call(this,f,null,{dir:!0,createFolders:v}),this.files[f]};function o(c){return Object.prototype.toString.call(c)==="[object RegExp]"}var s={load:function(){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},forEach:function(f){var v,k,T;for(v in this.files)this.files.hasOwnProperty(v)&&(T=this.files[v],k=v.slice(this.root.length,v.length),k&&v.slice(0,this.root.length)===this.root&&f(k,T))},filter:function(f){var v=[];return this.forEach(function(k,T){f(k,T)&&v.push(T)}),v},file:function(f,v,k){if(arguments.length===1)if(o(f)){var T=f;return this.filter(function(D,j){return!j.dir&&T.test(D)})}else{var C=this.files[this.root+f];return C&&!C.dir?C:null}else f=this.root+f,p.call(this,f,v,k);return this},folder:function(f){if(!f)return this;if(o(f))return this.filter(function(C,D){return D.dir&&f.test(C)});var v=this.root+f,k=u.call(this,v),T=this.clone();return T.root=k.name,T},remove:function(f){f=this.root+f;var v=this.files[f];if(v||(f.slice(-1)!=="/"&&(f+="/"),v=this.files[f]),v&&!v.dir)delete this.files[f];else for(var k=this.filter(function(C,D){return D.name.slice(0,f.length)===f}),T=0;T=0;--y)if(this.data[y]===b&&this.data[y+1]===h&&this.data[y+2]===_&&this.data[y+3]===g)return y-this.zero;return-1},d.prototype.readAndCheckSignature=function(m){var b=m.charCodeAt(0),h=m.charCodeAt(1),_=m.charCodeAt(2),g=m.charCodeAt(3),y=this.readData(4);return b===y[0]&&h===y[1]&&_===y[2]&&g===y[3]},d.prototype.readData=function(m){if(this.checkOffset(m),m===0)return[];var b=this.data.slice(this.zero+this.index,this.zero+this.index+m);return this.index+=m,b},n.exports=d},{"../utils":421,"./DataReader":407}],407:[function(e,n,i){var a=e("../utils");function l(d){this.data=d,this.length=d.length,this.index=0,this.zero=0}l.prototype={checkOffset:function(m){this.checkIndex(this.index+m)},checkIndex:function(m){if(this.length=this.index;h--)b=(b<<8)+this.byteAt(h);return this.index+=m,b},readString:function(m){return a.transformTo("string",this.readData(m))},readData:function(m){},lastIndexOfSignature:function(m){},readAndCheckSignature:function(m){},readDate:function(){var m=this.readInt(4);return new Date(Date.UTC((m>>25&127)+1980,(m>>21&15)-1,m>>16&31,m>>11&31,m>>5&63,(m&31)<<1))}},n.exports=l},{"../utils":421}],408:[function(e,n,i){var a=e("./Uint8ArrayReader"),l=e("../utils");function d(m){a.call(this,m)}l.inherits(d,a),d.prototype.readData=function(m){this.checkOffset(m);var b=this.data.slice(this.zero+this.index,this.zero+this.index+m);return this.index+=m,b},n.exports=d},{"../utils":421,"./Uint8ArrayReader":410}],409:[function(e,n,i){var a=e("./DataReader"),l=e("../utils");function d(m){a.call(this,m)}l.inherits(d,a),d.prototype.byteAt=function(m){return this.data.charCodeAt(this.zero+m)},d.prototype.lastIndexOfSignature=function(m){return this.data.lastIndexOf(m)-this.zero},d.prototype.readAndCheckSignature=function(m){var b=this.readData(4);return m===b},d.prototype.readData=function(m){this.checkOffset(m);var b=this.data.slice(this.zero+this.index,this.zero+this.index+m);return this.index+=m,b},n.exports=d},{"../utils":421,"./DataReader":407}],410:[function(e,n,i){var a=e("./ArrayReader"),l=e("../utils");function d(m){a.call(this,m)}l.inherits(d,a),d.prototype.readData=function(m){if(this.checkOffset(m),m===0)return new Uint8Array(0);var b=this.data.subarray(this.zero+this.index,this.zero+this.index+m);return this.index+=m,b},n.exports=d},{"../utils":421,"./ArrayReader":406}],411:[function(e,n,i){var a=e("../utils"),l=e("../support"),d=e("./ArrayReader"),m=e("./StringReader"),b=e("./NodeBufferReader"),h=e("./Uint8ArrayReader");n.exports=function(_){var g=a.getTypeOf(_);return a.checkSupport(g),g==="string"&&!l.uint8array?new m(_):g==="nodebuffer"?new b(_):l.uint8array?new h(a.transformTo("uint8array",_)):new d(a.transformTo("array",_))}},{"../support":419,"../utils":421,"./ArrayReader":406,"./NodeBufferReader":408,"./StringReader":409,"./Uint8ArrayReader":410}],412:[function(e,n,i){i.LOCAL_FILE_HEADER="PK",i.CENTRAL_FILE_HEADER="PK",i.CENTRAL_DIRECTORY_END="PK",i.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK\x07",i.ZIP64_CENTRAL_DIRECTORY_END="PK",i.DATA_DESCRIPTOR="PK\x07\b"},{}],413:[function(e,n,i){var a=e("./GenericWorker"),l=e("../utils");function d(m){a.call(this,"ConvertWorker to "+m),this.destType=m}l.inherits(d,a),d.prototype.processChunk=function(m){this.push({data:l.transformTo(this.destType,m.data),meta:m.meta})},n.exports=d},{"../utils":421,"./GenericWorker":417}],414:[function(e,n,i){var a=e("./GenericWorker"),l=e("../crc32"),d=e("../utils");function m(){a.call(this,"Crc32Probe"),this.withStreamInfo("crc32",0)}d.inherits(m,a),m.prototype.processChunk=function(b){this.streamInfo.crc32=l(b.data,this.streamInfo.crc32||0),this.push(b)},n.exports=m},{"../crc32":393,"../utils":421,"./GenericWorker":417}],415:[function(e,n,i){var a=e("../utils"),l=e("./GenericWorker");function d(m){l.call(this,"DataLengthProbe for "+m),this.propName=m,this.withStreamInfo(m,0)}a.inherits(d,l),d.prototype.processChunk=function(m){if(m){var b=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=b+m.data.length}l.prototype.processChunk.call(this,m)},n.exports=d},{"../utils":421,"./GenericWorker":417}],416:[function(e,n,i){var a=e("../utils"),l=e("./GenericWorker"),d=16*1024;function m(b){l.call(this,"DataWorker");var h=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type="",this._tickScheduled=!1,b.then(function(_){h.dataIsReady=!0,h.data=_,h.max=_&&_.length||0,h.type=a.getTypeOf(_),h.isPaused||h._tickAndRepeat()},function(_){h.error(_)})}a.inherits(m,l),m.prototype.cleanUp=function(){l.prototype.cleanUp.call(this),this.data=null},m.prototype.resume=function(){return l.prototype.resume.call(this)?(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,a.delay(this._tickAndRepeat,[],this)),!0):!1},m.prototype._tickAndRepeat=function(){this._tickScheduled=!1,!(this.isPaused||this.isFinished)&&(this._tick(),this.isFinished||(a.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},m.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var b=d,h=null,_=Math.min(this.max,this.index+b);if(this.index>=this.max)return this.end();switch(this.type){case"string":h=this.data.substring(this.index,_);break;case"uint8array":h=this.data.subarray(this.index,_);break;case"array":case"nodebuffer":h=this.data.slice(this.index,_);break}return this.index=_,this.push({data:h,meta:{percent:this.max?this.index/this.max*100:0}})},n.exports=m},{"../utils":421,"./GenericWorker":417}],417:[function(e,n,i){function a(l){this.name=l||"default",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}a.prototype={push:function(d){this.emit("data",d)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit("end"),this.cleanUp(),this.isFinished=!0}catch(d){this.emit("error",d)}return!0},error:function(d){return this.isFinished?!1:(this.isPaused?this.generatedError=d:(this.isFinished=!0,this.emit("error",d),this.previous&&this.previous.error(d),this.cleanUp()),!0)},on:function(d,m){return this._listeners[d].push(m),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(d,m){if(this._listeners[d])for(var b=0;b "+d:d}},n.exports=a},{}],418:[function(e,n,i){(function(a){var l=e("../utils"),d=e("./ConvertWorker"),m=e("./GenericWorker"),b=e("../base64"),h=e("../support"),_=e("../external"),g=null;if(h.nodestream)try{g=e("../nodejs/NodejsStreamOutputAdapter")}catch{}function y(w,u,o){switch(w){case"blob":return l.newBlob(l.transformTo("arraybuffer",u),o);case"base64":return b.encode(u);default:return l.transformTo(w,u)}}function x(w,u){var o,s=0,c=null,f=0;for(o=0;o"u")i.blob=!1;else{var l=new ArrayBuffer(0);try{i.blob=new Blob([l],{type:"application/zip"}).size===0}catch{try{var d=self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder,m=new d;m.append(l),i.blob=m.getBlob("application/zip").size===0}catch{i.blob=!1}}}try{i.nodestream=!!e("readable-stream").Readable}catch{i.nodestream=!1}}).call(this,e("buffer").Buffer)},{buffer:216,"readable-stream":405}],420:[function(e,n,i){for(var a=e("./utils"),l=e("./support"),d=e("./nodejsUtils"),m=e("./stream/GenericWorker"),b=new Array(256),h=0;h<256;h++)b[h]=h>=252?6:h>=248?5:h>=240?4:h>=224?3:h>=192?2:1;b[254]=b[254]=1;var _=function(w){var u,o,s,c,f,v=w.length,k=0;for(c=0;c>>6,u[f++]=128|o&63):o<65536?(u[f++]=224|o>>>12,u[f++]=128|o>>>6&63,u[f++]=128|o&63):(u[f++]=240|o>>>18,u[f++]=128|o>>>12&63,u[f++]=128|o>>>6&63,u[f++]=128|o&63);return u},g=function(w,u){var o;for(u=u||w.length,u>w.length&&(u=w.length),o=u-1;o>=0&&(w[o]&192)===128;)o--;return o<0||o===0?u:o+b[w[o]]>u?o:u},y=function(w){var u,o,s,c,f=w.length,v=new Array(f*2);for(o=0,u=0;u4){v[o++]=65533,u+=c-1;continue}for(s&=c===2?31:c===3?15:7;c>1&&u1){v[o++]=65533;continue}s<65536?v[o++]=s:(s-=65536,v[o++]=55296|s>>10&1023,v[o++]=56320|s&1023)}return v.length!==o&&(v.subarray?v=v.subarray(0,o):v.length=o),a.applyFromCharCode(v)};i.utf8encode=function(w){return l.nodebuffer?d.newBufferFrom(w,"utf-8"):_(w)},i.utf8decode=function(w){return l.nodebuffer?a.transformTo("nodebuffer",w).toString("utf-8"):(w=a.transformTo(l.uint8array?"uint8array":"array",w),y(w))};function x(){m.call(this,"utf-8 decode"),this.leftOver=null}a.inherits(x,m),x.prototype.processChunk=function(S){var w=a.transformTo(l.uint8array?"uint8array":"array",S.data);if(this.leftOver&&this.leftOver.length){if(l.uint8array){var u=w;w=new Uint8Array(u.length+this.leftOver.length),w.set(this.leftOver,0),w.set(u,this.leftOver.length)}else w=this.leftOver.concat(w);this.leftOver=null}var o=g(w),s=w;o!==w.length&&(l.uint8array?(s=w.subarray(0,o),this.leftOver=w.subarray(o,w.length)):(s=w.slice(0,o),this.leftOver=w.slice(o,w.length))),this.push({data:i.utf8decode(s),meta:S.meta})},x.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:i.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},i.Utf8DecodeWorker=x;function p(){m.call(this,"utf-8 encode")}a.inherits(p,m),p.prototype.processChunk=function(S){this.push({data:i.utf8encode(S.data),meta:S.meta})},i.Utf8EncodeWorker=p},{"./nodejsUtils":403,"./stream/GenericWorker":417,"./support":419,"./utils":421}],421:[function(e,n,i){var a=e("./support"),l=e("./base64"),d=e("./nodejsUtils"),m=e("set-immediate-shim"),b=e("./external");function h(w){var u=null;return a.uint8array?u=new Uint8Array(w.length):u=new Array(w.length),g(w,u)}i.newBlob=function(w,u){i.checkSupport("blob");try{return new Blob([w],{type:u})}catch{try{var o=self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder,s=new o;return s.append(w),s.getBlob(u)}catch{throw new Error("Bug : can't construct the Blob.")}}};function _(w){return w}function g(w,u){for(var o=0;o1;)try{return y.stringifyByChunk(w,o,u)}catch{u=Math.floor(u/2)}return y.stringifyByChar(w)}i.applyFromCharCode=x;function p(w,u){for(var o=0;o"u"&&(w[o]=arguments[u][o]);return w},i.prepareContent=function(w,u,o,s,c){var f=b.Promise.resolve(u).then(function(v){var k=a.blob&&(v instanceof Blob||["[object File]","[object Blob]"].indexOf(Object.prototype.toString.call(v))!==-1);return k&&typeof FileReader<"u"?new b.Promise(function(T,C){var D=new FileReader;D.onload=function(j){T(j.target.result)},D.onerror=function(j){C(j.target.error)},D.readAsArrayBuffer(v)}):v});return f.then(function(v){var k=i.getTypeOf(v);return k?(k==="arraybuffer"?v=i.transformTo("uint8array",v):k==="string"&&(c?v=l.decode(v):o&&s!==!0&&(v=h(v))),v):b.Promise.reject(new Error("Can't read the data of '"+w+"'. Is it in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?"))})}},{"./base64":390,"./external":395,"./nodejsUtils":403,"./support":419,"set-immediate-shim":497}],422:[function(e,n,i){var a=e("./reader/readerFor"),l=e("./utils"),d=e("./signature"),m=e("./zipEntry");e("./utf8");var b=e("./support");function h(_){this.files=[],this.loadOptions=_}h.prototype={checkSignature:function(g){if(!this.reader.readAndCheckSignature(g)){this.reader.index-=4;var y=this.reader.readString(4);throw new Error("Corrupted zip or bug: unexpected signature ("+l.pretty(y)+", expected "+l.pretty(g)+")")}},isSignature:function(g,y){var x=this.reader.index;this.reader.setIndex(g);var p=this.reader.readString(4),S=p===y;return this.reader.setIndex(x),S},readBlockEndOfCentral:function(){this.diskNumber=this.reader.readInt(2),this.diskWithCentralDirStart=this.reader.readInt(2),this.centralDirRecordsOnThisDisk=this.reader.readInt(2),this.centralDirRecords=this.reader.readInt(2),this.centralDirSize=this.reader.readInt(4),this.centralDirOffset=this.reader.readInt(4),this.zipCommentLength=this.reader.readInt(2);var g=this.reader.readData(this.zipCommentLength),y=b.uint8array?"uint8array":"array",x=l.transformTo(y,g);this.zipComment=this.loadOptions.decodeFileName(x)},readBlockZip64EndOfCentral:function(){this.zip64EndOfCentralSize=this.reader.readInt(8),this.reader.skip(4),this.diskNumber=this.reader.readInt(4),this.diskWithCentralDirStart=this.reader.readInt(4),this.centralDirRecordsOnThisDisk=this.reader.readInt(8),this.centralDirRecords=this.reader.readInt(8),this.centralDirSize=this.reader.readInt(8),this.centralDirOffset=this.reader.readInt(8),this.zip64ExtensibleData={};for(var g=this.zip64EndOfCentralSize-44,y=0,x,p,S;y1)throw new Error("Multi-volumes zip are not supported")},readLocalFiles:function(){var g,y;for(g=0;g0)this.isSignature(x,d.CENTRAL_FILE_HEADER)||(this.reader.zero=S);else if(S<0)throw new Error("Corrupted zip: missing "+Math.abs(S)+" bytes.")},prepareReader:function(g){this.reader=a(g)},load:function(g){this.prepareReader(g),this.readEndOfCentral(),this.readCentralDir(),this.readLocalFiles()}},n.exports=h},{"./reader/readerFor":411,"./signature":412,"./support":419,"./utf8":420,"./utils":421,"./zipEntry":423}],423:[function(e,n,i){var a=e("./reader/readerFor"),l=e("./utils"),d=e("./compressedObject"),m=e("./crc32"),b=e("./utf8"),h=e("./compressions"),_=e("./support"),g=0,y=3,x=function(w){for(var u in h)if(h.hasOwnProperty(u)&&h[u].magic===w)return h[u];return null};function p(S,w){this.options=S,this.loadOptions=w}p.prototype={isEncrypted:function(){return(this.bitFlag&1)===1},useUTF8:function(){return(this.bitFlag&2048)===2048},readLocalPart:function(w){var u,o;if(w.skip(22),this.fileNameLength=w.readInt(2),o=w.readInt(2),this.fileName=w.readData(this.fileNameLength),w.skip(o),this.compressedSize===-1||this.uncompressedSize===-1)throw new Error("Bug or corrupted zip : didn't get enough information from the central directory (compressedSize === -1 || uncompressedSize === -1)");if(u=x(this.compressionMethod),u===null)throw new Error("Corrupted zip : compression "+l.pretty(this.compressionMethod)+" unknown (inner file : "+l.transformTo("string",this.fileName)+")");this.decompressed=new d(this.compressedSize,this.uncompressedSize,this.crc32,u,w.readData(this.compressedSize))},readCentralPart:function(w){this.versionMadeBy=w.readInt(2),w.skip(2),this.bitFlag=w.readInt(2),this.compressionMethod=w.readString(2),this.date=w.readDate(),this.crc32=w.readInt(4),this.compressedSize=w.readInt(4),this.uncompressedSize=w.readInt(4);var u=w.readInt(2);if(this.extraFieldsLength=w.readInt(2),this.fileCommentLength=w.readInt(2),this.diskNumberStart=w.readInt(2),this.internalFileAttributes=w.readInt(2),this.externalFileAttributes=w.readInt(4),this.localHeaderOffset=w.readInt(4),this.isEncrypted())throw new Error("Encrypted zip are not supported");w.skip(u),this.readExtraFields(w),this.parseZIP64ExtraField(w),this.fileComment=w.readData(this.fileCommentLength)},processAttributes:function(){this.unixPermissions=null,this.dosPermissions=null;var w=this.versionMadeBy>>8;this.dir=!!(this.externalFileAttributes&16),w===g&&(this.dosPermissions=this.externalFileAttributes&63),w===y&&(this.unixPermissions=this.externalFileAttributes>>16&65535),!this.dir&&this.fileNameStr.slice(-1)==="/"&&(this.dir=!0)},parseZIP64ExtraField:function(w){if(this.extraFields[1]){var u=a(this.extraFields[1].value);this.uncompressedSize===l.MAX_VALUE_32BITS&&(this.uncompressedSize=u.readInt(8)),this.compressedSize===l.MAX_VALUE_32BITS&&(this.compressedSize=u.readInt(8)),this.localHeaderOffset===l.MAX_VALUE_32BITS&&(this.localHeaderOffset=u.readInt(8)),this.diskNumberStart===l.MAX_VALUE_32BITS&&(this.diskNumberStart=u.readInt(4))}},readExtraFields:function(w){var u=w.index+this.extraFieldsLength,o,s,c;for(this.extraFields||(this.extraFields={});w.index+4"u"?"undefined":l(a))=="object"&&a&&a.Object===Object&&a,g=(typeof self>"u"?"undefined":l(self))=="object"&&self&&self.Object===Object&&self,y=_||g||Function("return this")(),x=Object.prototype,p=x.toString,S=y.Symbol,w=S?S.prototype:void 0,u=w?w.toString:void 0;function o(k){if(typeof k=="string")return k;if(c(k))return u?u.call(k):"";var T=k+"";return T=="0"&&1/k==-d?"-0":T}function s(k){return!!k&&l(k)=="object"}function c(k){return l(k)=="symbol"||s(k)&&p.call(k)==m}function f(k){return k==null?"":o(k)}function v(k){return k=f(k),k&&h.test(k)?k.replace(b,"\\$&"):k}n.exports=v}).call(this,typeof cr<"u"?cr:typeof self<"u"?self:typeof window<"u"?window:{})},{}],427:[function(e,n,i){(function(a){function l(me){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(rt){return typeof rt}:l=function(rt){return rt&&typeof Symbol=="function"&&rt.constructor===Symbol&&rt!==Symbol.prototype?"symbol":typeof rt},l(me)}var d=200,m="Expected a function",b="__lodash_hash_undefined__",h=1,_=2,g=1/0,y=9007199254740991,x="[object Arguments]",p="[object Array]",S="[object Boolean]",w="[object Date]",u="[object Error]",o="[object Function]",s="[object GeneratorFunction]",c="[object Map]",f="[object Number]",v="[object Object]",k="[object Promise]",T="[object RegExp]",C="[object Set]",D="[object String]",j="[object Symbol]",L="[object WeakMap]",M="[object ArrayBuffer]",B="[object DataView]",R="[object Float32Array]",P="[object Float64Array]",O="[object Int8Array]",F="[object Int16Array]",H="[object Int32Array]",V="[object Uint8Array]",z="[object Uint8ClampedArray]",X="[object Uint16Array]",I="[object Uint32Array]",N=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,U=/^\w*$/,G=/^\./,te=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,re=/[\\^$.*+?()[\]{}|]/g,ne=/\\(\\)?/g,ge=/^\[object .+?Constructor\]$/,ee=/^(?:0|[1-9]\d*)$/,se={};se[R]=se[P]=se[O]=se[F]=se[H]=se[V]=se[z]=se[X]=se[I]=!0,se[x]=se[p]=se[M]=se[S]=se[B]=se[w]=se[u]=se[o]=se[c]=se[f]=se[v]=se[T]=se[C]=se[D]=se[L]=!1;var J=(typeof a>"u"?"undefined":l(a))=="object"&&a&&a.Object===Object&&a,q=(typeof self>"u"?"undefined":l(self))=="object"&&self&&self.Object===Object&&self,de=J||q||Function("return this")(),xe=(typeof i>"u"?"undefined":l(i))=="object"&&i&&!i.nodeType&&i,ae=xe&&(typeof n>"u"?"undefined":l(n))=="object"&&n&&!n.nodeType&&n,fe=ae&&ae.exports===xe,Ne=fe&&J.process,ie=function(){try{return Ne&&Ne.binding("util")}catch{}}(),Y=ie&&ie.isTypedArray;function Z(me,Fe,rt,Tt){for(var Wt=-1,Nt=me?me.length:0;++Wt-1}function Xt(me,Fe){var rt=this.__data__,Tt=Rn(rt,me);return Tt<0?rt.push([me,Fe]):rt[Tt][1]=Fe,this}nt.prototype.clear=Et,nt.prototype.delete=Rt,nt.prototype.get=wt,nt.prototype.has=Ct,nt.prototype.set=Xt;function zt(me){var Fe=-1,rt=me?me.length:0;for(this.clear();++FeTr))return!1;var en=Nt.get(me);if(en&&Nt.get(Fe))return en==Fe;var cn=-1,tn=!0,ln=Wt&h?new at:void 0;for(Nt.set(me,Fe),Nt.set(Fe,me);++cn-1&&me%1==0&&me-1&&me%1==0&&me<=y}function Xr(me){var Fe=l(me);return!!me&&(Fe=="object"||Fe=="function")}function un(me){return!!me&&l(me)=="object"}function gn(me){return l(me)=="symbol"||un(me)&&be.call(me)==j}var zr=Y?Ge(Y):eo;function vi(me){return me==null?"":$o(me)}function Yr(me,Fe,rt){var Tt=me==null?void 0:Ya(me,Fe);return Tt===void 0?rt:Tt}function co(me,Fe){return me!=null&&so(me,Fe,pi)}function Fi(me){return xr(me)?ri(me):qi(me)}function Gn(me){return me}function lo(me){return _r(me)?Re(Ve(me)):Ci(me)}n.exports=At}).call(this,typeof cr<"u"?cr:typeof self<"u"?self:typeof window<"u"?window:{})},{}],428:[function(e,n,i){function a(_){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(y){return typeof y}:a=function(y){return y&&typeof Symbol=="function"&&y.constructor===Symbol&&y!==Symbol.prototype?"symbol":typeof y},a(_)}var l="[object Boolean]",d=Object.prototype,m=d.toString;function b(_){return _===!0||_===!1||h(_)&&m.call(_)==l}function h(_){return!!_&&a(_)=="object"}n.exports=b},{}],429:[function(e,n,i){(function(a){function l(Pe){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(dt){return typeof dt}:l=function(dt){return dt&&typeof Symbol=="function"&&dt.constructor===Symbol&&dt!==Symbol.prototype?"symbol":typeof dt},l(Pe)}var d=200,m="__lodash_hash_undefined__",b=1,h=2,_=9007199254740991,g="[object Arguments]",y="[object Array]",x="[object AsyncFunction]",p="[object Boolean]",S="[object Date]",w="[object Error]",u="[object Function]",o="[object GeneratorFunction]",s="[object Map]",c="[object Number]",f="[object Null]",v="[object Object]",k="[object Promise]",T="[object Proxy]",C="[object RegExp]",D="[object Set]",j="[object String]",L="[object Symbol]",M="[object Undefined]",B="[object WeakMap]",R="[object ArrayBuffer]",P="[object DataView]",O="[object Float32Array]",F="[object Float64Array]",H="[object Int8Array]",V="[object Int16Array]",z="[object Int32Array]",X="[object Uint8Array]",I="[object Uint8ClampedArray]",N="[object Uint16Array]",U="[object Uint32Array]",G=/[\\^$.*+?()[\]{}|]/g,te=/^\[object .+?Constructor\]$/,re=/^(?:0|[1-9]\d*)$/,ne={};ne[O]=ne[F]=ne[H]=ne[V]=ne[z]=ne[X]=ne[I]=ne[N]=ne[U]=!0,ne[g]=ne[y]=ne[R]=ne[p]=ne[P]=ne[S]=ne[w]=ne[u]=ne[s]=ne[c]=ne[v]=ne[C]=ne[D]=ne[j]=ne[B]=!1;var ge=(typeof a>"u"?"undefined":l(a))=="object"&&a&&a.Object===Object&&a,ee=(typeof self>"u"?"undefined":l(self))=="object"&&self&&self.Object===Object&&self,se=ge||ee||Function("return this")(),J=(typeof i>"u"?"undefined":l(i))=="object"&&i&&!i.nodeType&&i,q=J&&(typeof n>"u"?"undefined":l(n))=="object"&&n&&!n.nodeType&&n,de=q&&q.exports===J,xe=de&&ge.process,ae=function(){try{return xe&&xe.binding&&xe.binding("util")}catch{}}(),fe=ae&&ae.isTypedArray;function Ne(Pe,Ve){for(var dt=-1,At=Pe==null?0:Pe.length,vr=0,Gt=[];++dt-1}function Xt(Pe,Ve){var dt=this.__data__,At=Rn(dt,Pe);return At<0?(++this.size,dt.push([Pe,Ve])):dt[At][1]=Ve,this}nt.prototype.clear=Et,nt.prototype.delete=Rt,nt.prototype.get=wt,nt.prototype.has=Ct,nt.prototype.set=Xt;function zt(Pe){var Ve=-1,dt=Pe==null?0:Pe.length;for(this.clear();++VeEr))return!1;var Dr=Gt.get(Pe);if(Dr&&Gt.get(Ve))return Dr==Ve;var yn=-1,Sn=!0,Xr=dt&h?new at:void 0;for(Gt.set(Pe,Ve),Gt.set(Ve,Pe);++yn-1&&Pe%1==0&&Pe-1&&Pe%1==0&&Pe<=_}function _r(Pe){var Ve=l(Pe);return Pe!=null&&(Ve=="object"||Ve=="function")}function Oa(Pe){return Pe!=null&&l(Pe)=="object"}var oo=fe?le(fe):pi;function Zo(Pe){return Yo(Pe)?ri(Pe):Ji(Pe)}function fo(){return[]}function uo(){return!1}n.exports=Pi}).call(this,typeof cr<"u"?cr:typeof self<"u"?self:typeof window<"u"?window:{})},{}],430:[function(e,n,i){(function(a){function l(C){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(j){return typeof j}:l=function(j){return j&&typeof Symbol=="function"&&j.constructor===Symbol&&j!==Symbol.prototype?"symbol":typeof j},l(C)}var d="[object AsyncFunction]",m="[object Function]",b="[object GeneratorFunction]",h="[object Null]",_="[object Proxy]",g="[object Undefined]",y=(typeof a>"u"?"undefined":l(a))=="object"&&a&&a.Object===Object&&a,x=(typeof self>"u"?"undefined":l(self))=="object"&&self&&self.Object===Object&&self,p=y||x||Function("return this")(),S=Object.prototype,w=S.hasOwnProperty,u=S.toString,o=p.Symbol,s=o?o.toStringTag:void 0;function c(C){return C==null?C===void 0?g:h:s&&s in Object(C)?f(C):v(C)}function f(C){var D=w.call(C,s),j=C[s];try{C[s]=void 0;var L=!0}catch{}var M=u.call(C);return L&&(D?C[s]=j:delete C[s]),M}function v(C){return u.call(C)}function k(C){if(!T(C))return!1;var D=c(C);return D==m||D==b||D==d||D==_}function T(C){var D=l(C);return C!=null&&(D=="object"||D=="function")}n.exports=k}).call(this,typeof cr<"u"?cr:typeof self<"u"?self:typeof window<"u"?window:{})},{}],431:[function(e,n,i){function a(l){return l==null}n.exports=a},{}],432:[function(e,n,i){function a(l){return l===void 0}n.exports=a},{}],433:[function(e,n,i){(function(a){function l(Oe){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(be){return typeof be}:l=function(be){return be&&typeof Symbol=="function"&&be.constructor===Symbol&&be!==Symbol.prototype?"symbol":typeof be},l(Oe)}var d=200,m="__lodash_hash_undefined__",b=1/0,h="[object Function]",_="[object GeneratorFunction]",g=/[\\^$.*+?()[\]{}|]/g,y=/^\[object .+?Constructor\]$/,x=(typeof a>"u"?"undefined":l(a))=="object"&&a&&a.Object===Object&&a,p=(typeof self>"u"?"undefined":l(self))=="object"&&self&&self.Object===Object&&self,S=x||p||Function("return this")();function w(Oe,Ie){var be=Oe?Oe.length:0;return!!be&&s(Oe,Ie,0)>-1}function u(Oe,Ie,be){for(var Le=-1,oe=Oe?Oe.length:0;++Le-1}function J(Oe,Ie){var be=this.__data__,Le=le(be,Oe);return Le<0?be.push([Oe,Ie]):be[Le][1]=Ie,this}re.prototype.clear=ne,re.prototype.delete=ge,re.prototype.get=ee,re.prototype.has=se,re.prototype.set=J;function q(Oe){var Ie=-1,be=Oe?Oe.length:0;for(this.clear();++Ie=d){var Ze=Ie?null:Ge(Oe);if(Ze)return T(Ze);_t=!1,oe=f,je=new ie}else je=Ie?[]:K;e:for(;++Le56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var p=d.allocUnsafe(16);return p.writeInt32LE(this._a,0),p.writeInt32LE(this._b,4),p.writeInt32LE(this._c,8),p.writeInt32LE(this._d,12),p};function h(p,S){return p<>>32-S}function _(p,S,w,u,o,s,c){return h(p+(S&w|~S&u)+o+s|0,c)+S|0}function g(p,S,w,u,o,s,c){return h(p+(S&u|w&~u)+o+s|0,c)+S|0}function y(p,S,w,u,o,s,c){return h(p+(S^w^u)+o+s|0,c)+S|0}function x(p,S,w,u,o,s,c){return h(p+(w^(S|~u))+o+s|0,c)+S|0}n.exports=b},{"hash-base":370,inherits:387,"safe-buffer":494}],435:[function(e,n,i){var a=e("bn.js"),l=e("brorand");function d(m){this.rand=m||new l.Rand}n.exports=d,d.create=function(b){return new d(b)},d.prototype._randbelow=function(b){var h=b.bitLength(),_=Math.ceil(h/8);do var g=new a(this.rand.generate(_));while(g.cmp(b)>=0);return g},d.prototype._randrange=function(b,h){var _=h.sub(b);return b.add(this._randbelow(_))},d.prototype.test=function(b,h,_){var g=b.bitLength(),y=a.mont(b),x=new a(1).toRed(y);h||(h=Math.max(1,g/48|0));for(var p=b.subn(1),S=0;!p.testn(S);S++);for(var w=b.shrn(S),u=p.toRed(y),o=!0;h>0;h--){var s=this._randrange(new a(2),p);_&&_(s);var c=s.toRed(y).redPow(w);if(!(c.cmp(x)===0||c.cmp(u)===0)){for(var f=1;f0;h--){var u=this._randrange(new a(2),x),o=b.gcd(u);if(o.cmpn(1)!==0)return o;var s=u.toRed(g).redPow(S);if(!(s.cmp(y)===0||s.cmp(w)===0)){for(var c=1;c>8,p=y&255;x?_.push(x,p):_.push(p)}return _}a.toArray=l;function d(b){return b.length===1?"0"+b:b}a.zero2=d;function m(b){for(var h="",_=0;_0?k.windowBits=-k.windowBits:k.gzip&&k.windowBits>0&&k.windowBits<16&&(k.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new b,this.strm.avail_out=0;var T=a.deflateInit2(this.strm,k.level,k.method,k.windowBits,k.memLevel,k.strategy);if(T!==y)throw new Error(m[T]);if(k.header&&a.deflateSetHeader(this.strm,k.header),k.dictionary){var C;if(typeof k.dictionary=="string"?C=d.string2buf(k.dictionary):h.call(k.dictionary)==="[object ArrayBuffer]"?C=new Uint8Array(k.dictionary):C=k.dictionary,T=a.deflateSetDictionary(this.strm,C),T!==y)throw new Error(m[T]);this._dict_set=!0}}o.prototype.push=function(v,k){var T=this.strm,C=this.options.chunkSize,D,j;if(this.ended)return!1;j=k===~~k?k:k===!0?g:_,typeof v=="string"?T.input=d.string2buf(v):h.call(v)==="[object ArrayBuffer]"?T.input=new Uint8Array(v):T.input=v,T.next_in=0,T.avail_in=T.input.length;do{if(T.avail_out===0&&(T.output=new l.Buf8(C),T.next_out=0,T.avail_out=C),D=a.deflate(T,j),D!==x&&D!==y)return this.onEnd(D),this.ended=!0,!1;(T.avail_out===0||T.avail_in===0&&(j===g||j===p))&&(this.options.to==="string"?this.onData(d.buf2binstring(l.shrinkBuf(T.output,T.next_out))):this.onData(l.shrinkBuf(T.output,T.next_out)))}while((T.avail_in>0||T.avail_out===0)&&D!==x);return j===g?(D=a.deflateEnd(this.strm),this.onEnd(D),this.ended=!0,D===y):(j===p&&(this.onEnd(y),T.avail_out=0),!0)},o.prototype.onData=function(v){this.chunks.push(v)},o.prototype.onEnd=function(v){v===y&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=l.flattenChunks(this.chunks)),this.chunks=[],this.err=v,this.msg=this.strm.msg};function s(v,k){var T=new o(k);if(T.push(v,!0),T.err)throw T.msg||m[T.err];return T.result}function c(v,k){return k=k||{},k.raw=!0,s(v,k)}function f(v,k){return k=k||{},k.gzip=!0,s(v,k)}i.Deflate=o,i.deflate=s,i.deflateRaw=c,i.gzip=f},{"./utils/common":442,"./utils/strings":443,"./zlib/deflate":447,"./zlib/messages":452,"./zlib/zstream":454}],441:[function(e,n,i){var a=e("./zlib/inflate"),l=e("./utils/common"),d=e("./utils/strings"),m=e("./zlib/constants"),b=e("./zlib/messages"),h=e("./zlib/zstream"),_=e("./zlib/gzheader"),g=Object.prototype.toString;function y(S){if(!(this instanceof y))return new y(S);this.options=l.assign({chunkSize:16384,windowBits:0,to:""},S||{});var w=this.options;w.raw&&w.windowBits>=0&&w.windowBits<16&&(w.windowBits=-w.windowBits,w.windowBits===0&&(w.windowBits=-15)),w.windowBits>=0&&w.windowBits<16&&!(S&&S.windowBits)&&(w.windowBits+=32),w.windowBits>15&&w.windowBits<48&&(w.windowBits&15||(w.windowBits|=15)),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new h,this.strm.avail_out=0;var u=a.inflateInit2(this.strm,w.windowBits);if(u!==m.Z_OK)throw new Error(b[u]);if(this.header=new _,a.inflateGetHeader(this.strm,this.header),w.dictionary&&(typeof w.dictionary=="string"?w.dictionary=d.string2buf(w.dictionary):g.call(w.dictionary)==="[object ArrayBuffer]"&&(w.dictionary=new Uint8Array(w.dictionary)),w.raw&&(u=a.inflateSetDictionary(this.strm,w.dictionary),u!==m.Z_OK)))throw new Error(b[u])}y.prototype.push=function(S,w){var u=this.strm,o=this.options.chunkSize,s=this.options.dictionary,c,f,v,k,T,C=!1;if(this.ended)return!1;f=w===~~w?w:w===!0?m.Z_FINISH:m.Z_NO_FLUSH,typeof S=="string"?u.input=d.binstring2buf(S):g.call(S)==="[object ArrayBuffer]"?u.input=new Uint8Array(S):u.input=S,u.next_in=0,u.avail_in=u.input.length;do{if(u.avail_out===0&&(u.output=new l.Buf8(o),u.next_out=0,u.avail_out=o),c=a.inflate(u,m.Z_NO_FLUSH),c===m.Z_NEED_DICT&&s&&(c=a.inflateSetDictionary(this.strm,s)),c===m.Z_BUF_ERROR&&C===!0&&(c=m.Z_OK,C=!1),c!==m.Z_STREAM_END&&c!==m.Z_OK)return this.onEnd(c),this.ended=!0,!1;u.next_out&&(u.avail_out===0||c===m.Z_STREAM_END||u.avail_in===0&&(f===m.Z_FINISH||f===m.Z_SYNC_FLUSH))&&(this.options.to==="string"?(v=d.utf8border(u.output,u.next_out),k=u.next_out-v,T=d.buf2string(u.output,v),u.next_out=k,u.avail_out=o-k,k&&l.arraySet(u.output,u.output,v,k,0),this.onData(T)):this.onData(l.shrinkBuf(u.output,u.next_out))),u.avail_in===0&&u.avail_out===0&&(C=!0)}while((u.avail_in>0||u.avail_out===0)&&c!==m.Z_STREAM_END);return c===m.Z_STREAM_END&&(f=m.Z_FINISH),f===m.Z_FINISH?(c=a.inflateEnd(this.strm),this.onEnd(c),this.ended=!0,c===m.Z_OK):(f===m.Z_SYNC_FLUSH&&(this.onEnd(m.Z_OK),u.avail_out=0),!0)},y.prototype.onData=function(S){this.chunks.push(S)},y.prototype.onEnd=function(S){S===m.Z_OK&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=l.flattenChunks(this.chunks)),this.chunks=[],this.err=S,this.msg=this.strm.msg};function x(S,w){var u=new y(w);if(u.push(S,!0),u.err)throw u.msg||b[u.err];return u.result}function p(S,w){return w=w||{},w.raw=!0,x(S,w)}i.Inflate=y,i.inflate=x,i.inflateRaw=p,i.ungzip=x},{"./utils/common":442,"./utils/strings":443,"./zlib/constants":445,"./zlib/gzheader":448,"./zlib/inflate":450,"./zlib/messages":452,"./zlib/zstream":454}],442:[function(e,n,i){function a(h){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(g){return typeof g}:a=function(g){return g&&typeof Symbol=="function"&&g.constructor===Symbol&&g!==Symbol.prototype?"symbol":typeof g},a(h)}var l=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Int32Array<"u";function d(h,_){return Object.prototype.hasOwnProperty.call(h,_)}i.assign=function(h){for(var _=Array.prototype.slice.call(arguments,1);_.length;){var g=_.shift();if(g){if(a(g)!=="object")throw new TypeError(g+"must be non-object");for(var y in g)d(g,y)&&(h[y]=g[y])}}return h},i.shrinkBuf=function(h,_){return h.length===_?h:h.subarray?h.subarray(0,_):(h.length=_,h)};var m={arraySet:function(_,g,y,x,p){if(g.subarray&&_.subarray){_.set(g.subarray(y,y+x),p);return}for(var S=0;S=252?6:b>=248?5:b>=240?4:b>=224?3:b>=192?2:1;m[254]=m[254]=1,i.string2buf=function(_){var g,y,x,p,S,w=_.length,u=0;for(p=0;p>>6,g[S++]=128|y&63):y<65536?(g[S++]=224|y>>>12,g[S++]=128|y>>>6&63,g[S++]=128|y&63):(g[S++]=240|y>>>18,g[S++]=128|y>>>12&63,g[S++]=128|y>>>6&63,g[S++]=128|y&63);return g};function h(_,g){if(g<65534&&(_.subarray&&d||!_.subarray&&l))return String.fromCharCode.apply(null,a.shrinkBuf(_,g));for(var y="",x=0;x4){u[x++]=65533,y+=S-1;continue}for(p&=S===2?31:S===3?15:7;S>1&&y1){u[x++]=65533;continue}p<65536?u[x++]=p:(p-=65536,u[x++]=55296|p>>10&1023,u[x++]=56320|p&1023)}return h(u,x)},i.utf8border=function(_,g){var y;for(g=g||_.length,g>_.length&&(g=_.length),y=g-1;y>=0&&(_[y]&192)===128;)y--;return y<0||y===0?g:y+m[_[y]]>g?y:g}},{"./common":442}],444:[function(e,n,i){function a(l,d,m,b){for(var h=l&65535|0,_=l>>>16&65535|0,g=0;m!==0;){g=m>2e3?2e3:m,m-=g;do h=h+d[b++]|0,_=_+h|0;while(--g);h%=65521,_%=65521}return h|_<<16|0}n.exports=a},{}],445:[function(e,n,i){n.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],446:[function(e,n,i){function a(){for(var m,b=[],h=0;h<256;h++){m=h;for(var _=0;_<8;_++)m=m&1?3988292384^m>>>1:m>>>1;b[h]=m}return b}var l=a();function d(m,b,h,_){var g=l,y=_+h;m^=-1;for(var x=_;x>>8^g[(m^b[x])&255];return m^-1}n.exports=d},{}],447:[function(e,n,i){var a=e("../utils/common"),l=e("./trees"),d=e("./adler32"),m=e("./crc32"),b=e("./messages"),h=0,_=1,g=3,y=4,x=5,p=0,S=1,w=-2,u=-3,o=-5,s=-1,c=1,f=2,v=3,k=4,T=0,C=2,D=8,j=9,L=15,M=8,B=29,R=256,P=R+1+B,O=30,F=19,H=2*P+1,V=15,z=3,X=258,I=X+z+1,N=32,U=42,G=69,te=73,re=91,ne=103,ge=113,ee=666,se=1,J=2,q=3,de=4,xe=3;function ae(K,je){return K.msg=b[je],je}function fe(K){return(K<<1)-(K>4?9:0)}function Ne(K){for(var je=K.length;--je>=0;)K[je]=0}function ie(K){var je=K.state,Ze=je.pending;Ze>K.avail_out&&(Ze=K.avail_out),Ze!==0&&(a.arraySet(K.output,je.pending_buf,je.pending_out,Ze,K.next_out),K.next_out+=Ze,je.pending_out+=Ze,K.total_out+=Ze,K.avail_out-=Ze,je.pending-=Ze,je.pending===0&&(je.pending_out=0))}function Y(K,je){l._tr_flush_block(K,K.block_start>=0?K.block_start:-1,K.strstart-K.block_start,je),K.block_start=K.strstart,ie(K.strm)}function Z(K,je){K.pending_buf[K.pending++]=je}function le(K,je){K.pending_buf[K.pending++]=je>>>8&255,K.pending_buf[K.pending++]=je&255}function Re(K,je,Ze,pe){var Ae=K.avail_in;return Ae>pe&&(Ae=pe),Ae===0?0:(K.avail_in-=Ae,a.arraySet(je,K.input,K.next_in,Ae,Ze),K.state.wrap===1?K.adler=d(K.adler,je,Ae,Ze):K.state.wrap===2&&(K.adler=m(K.adler,je,Ae,Ze)),K.next_in+=Ae,K.total_in+=Ae,Ae)}function Ce(K,je){var Ze=K.max_chain_length,pe=K.strstart,Ae,Xe,kt=K.prev_length,ut=K.nice_match,bt=K.strstart>K.w_size-I?K.strstart-(K.w_size-I):0,Bt=K.window,Lt=K.w_mask,ue=K.prev,ye=K.strstart+X,ve=Bt[pe+kt-1],we=Bt[pe+kt];K.prev_length>=K.good_match&&(Ze>>=2),ut>K.lookahead&&(ut=K.lookahead);do if(Ae=je,!(Bt[Ae+kt]!==we||Bt[Ae+kt-1]!==ve||Bt[Ae]!==Bt[pe]||Bt[++Ae]!==Bt[pe+1])){pe+=2,Ae++;do;while(Bt[++pe]===Bt[++Ae]&&Bt[++pe]===Bt[++Ae]&&Bt[++pe]===Bt[++Ae]&&Bt[++pe]===Bt[++Ae]&&Bt[++pe]===Bt[++Ae]&&Bt[++pe]===Bt[++Ae]&&Bt[++pe]===Bt[++Ae]&&Bt[++pe]===Bt[++Ae]&&pekt){if(K.match_start=je,kt=Xe,Xe>=ut)break;ve=Bt[pe+kt-1],we=Bt[pe+kt]}}while((je=ue[je&Lt])>bt&&--Ze!==0);return kt<=K.lookahead?kt:K.lookahead}function Ge(K){var je=K.w_size,Ze,pe,Ae,Xe,kt;do{if(Xe=K.window_size-K.lookahead-K.strstart,K.strstart>=je+(je-I)){a.arraySet(K.window,K.window,je,je,0),K.match_start-=je,K.strstart-=je,K.block_start-=je,pe=K.hash_size,Ze=pe;do Ae=K.head[--Ze],K.head[Ze]=Ae>=je?Ae-je:0;while(--pe);pe=je,Ze=pe;do Ae=K.prev[--Ze],K.prev[Ze]=Ae>=je?Ae-je:0;while(--pe);Xe+=je}if(K.strm.avail_in===0)break;if(pe=Re(K.strm,K.window,K.strstart+K.lookahead,Xe),K.lookahead+=pe,K.lookahead+K.insert>=z)for(kt=K.strstart-K.insert,K.ins_h=K.window[kt],K.ins_h=(K.ins_h<K.pending_buf_size-5&&(Ze=K.pending_buf_size-5);;){if(K.lookahead<=1){if(Ge(K),K.lookahead===0&&je===h)return se;if(K.lookahead===0)break}K.strstart+=K.lookahead,K.lookahead=0;var pe=K.block_start+Ze;if((K.strstart===0||K.strstart>=pe)&&(K.lookahead=K.strstart-pe,K.strstart=pe,Y(K,!1),K.strm.avail_out===0)||K.strstart-K.block_start>=K.w_size-I&&(Y(K,!1),K.strm.avail_out===0))return se}return K.insert=0,je===y?(Y(K,!0),K.strm.avail_out===0?q:de):(K.strstart>K.block_start&&(Y(K,!1),K.strm.avail_out===0),se)}function vt(K,je){for(var Ze,pe;;){if(K.lookahead=z&&(K.ins_h=(K.ins_h<=z)if(pe=l._tr_tally(K,K.strstart-K.match_start,K.match_length-z),K.lookahead-=K.match_length,K.match_length<=K.max_lazy_match&&K.lookahead>=z){K.match_length--;do K.strstart++,K.ins_h=(K.ins_h<=z&&(K.ins_h=(K.ins_h<4096)&&(K.match_length=z-1)),K.prev_length>=z&&K.match_length<=K.prev_length){Ae=K.strstart+K.lookahead-z,pe=l._tr_tally(K,K.strstart-1-K.prev_match,K.prev_length-z),K.lookahead-=K.prev_length-1,K.prev_length-=2;do++K.strstart<=Ae&&(K.ins_h=(K.ins_h<=z&&K.strstart>0&&(Ae=K.strstart-1,pe=kt[Ae],pe===kt[++Ae]&&pe===kt[++Ae]&&pe===kt[++Ae])){Xe=K.strstart+X;do;while(pe===kt[++Ae]&&pe===kt[++Ae]&&pe===kt[++Ae]&&pe===kt[++Ae]&&pe===kt[++Ae]&&pe===kt[++Ae]&&pe===kt[++Ae]&&pe===kt[++Ae]&&AeK.lookahead&&(K.match_length=K.lookahead)}if(K.match_length>=z?(Ze=l._tr_tally(K,1,K.match_length-z),K.lookahead-=K.match_length,K.strstart+=K.match_length,K.match_length=0):(Ze=l._tr_tally(K,0,K.window[K.strstart]),K.lookahead--,K.strstart++),Ze&&(Y(K,!1),K.strm.avail_out===0))return se}return K.insert=0,je===y?(Y(K,!0),K.strm.avail_out===0?q:de):K.last_lit&&(Y(K,!1),K.strm.avail_out===0)?se:J}function et(K,je){for(var Ze;;){if(K.lookahead===0&&(Ge(K),K.lookahead===0)){if(je===h)return se;break}if(K.match_length=0,Ze=l._tr_tally(K,0,K.window[K.strstart]),K.lookahead--,K.strstart++,Ze&&(Y(K,!1),K.strm.avail_out===0))return se}return K.insert=0,je===y?(Y(K,!0),K.strm.avail_out===0?q:de):K.last_lit&&(Y(K,!1),K.strm.avail_out===0)?se:J}function tt(K,je,Ze,pe,Ae){this.good_length=K,this.max_lazy=je,this.nice_length=Ze,this.max_chain=pe,this.func=Ae}var ct;ct=[new tt(0,0,0,0,st),new tt(4,4,8,4,vt),new tt(4,5,16,8,vt),new tt(4,6,32,32,vt),new tt(4,4,16,16,ft),new tt(8,16,32,32,ft),new tt(8,16,128,128,ft),new tt(8,32,128,256,ft),new tt(32,128,258,1024,ft),new tt(32,258,258,4096,ft)];function gt(K){K.window_size=2*K.w_size,Ne(K.head),K.max_lazy_match=ct[K.level].max_lazy,K.good_match=ct[K.level].good_length,K.nice_match=ct[K.level].nice_length,K.max_chain_length=ct[K.level].max_chain,K.strstart=0,K.block_start=0,K.lookahead=0,K.insert=0,K.match_length=K.prev_length=z-1,K.match_available=0,K.ins_h=0}function he(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=D,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new a.Buf16(H*2),this.dyn_dtree=new a.Buf16((2*O+1)*2),this.bl_tree=new a.Buf16((2*F+1)*2),Ne(this.dyn_ltree),Ne(this.dyn_dtree),Ne(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new a.Buf16(V+1),this.heap=new a.Buf16(2*P+1),Ne(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new a.Buf16(2*P+1),Ne(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function De(K){var je;return!K||!K.state?ae(K,w):(K.total_in=K.total_out=0,K.data_type=C,je=K.state,je.pending=0,je.pending_out=0,je.wrap<0&&(je.wrap=-je.wrap),je.status=je.wrap?U:ge,K.adler=je.wrap===2?0:1,je.last_flush=h,l._tr_init(je),p)}function Oe(K){var je=De(K);return je===p&>(K.state),je}function Ie(K,je){return!K||!K.state||K.state.wrap!==2?w:(K.state.gzhead=je,p)}function be(K,je,Ze,pe,Ae,Xe){if(!K)return w;var kt=1;if(je===s&&(je=6),pe<0?(kt=0,pe=-pe):pe>15&&(kt=2,pe-=16),Ae<1||Ae>j||Ze!==D||pe<8||pe>15||je<0||je>9||Xe<0||Xe>k)return ae(K,w);pe===8&&(pe=9);var ut=new he;return K.state=ut,ut.strm=K,ut.wrap=kt,ut.gzhead=null,ut.w_bits=pe,ut.w_size=1<x||je<0)return K?ae(K,w):w;if(pe=K.state,!K.output||!K.input&&K.avail_in!==0||pe.status===ee&&je!==y)return ae(K,K.avail_out===0?o:w);if(pe.strm=K,Ze=pe.last_flush,pe.last_flush=je,pe.status===U)if(pe.wrap===2)K.adler=0,Z(pe,31),Z(pe,139),Z(pe,8),pe.gzhead?(Z(pe,(pe.gzhead.text?1:0)+(pe.gzhead.hcrc?2:0)+(pe.gzhead.extra?4:0)+(pe.gzhead.name?8:0)+(pe.gzhead.comment?16:0)),Z(pe,pe.gzhead.time&255),Z(pe,pe.gzhead.time>>8&255),Z(pe,pe.gzhead.time>>16&255),Z(pe,pe.gzhead.time>>24&255),Z(pe,pe.level===9?2:pe.strategy>=f||pe.level<2?4:0),Z(pe,pe.gzhead.os&255),pe.gzhead.extra&&pe.gzhead.extra.length&&(Z(pe,pe.gzhead.extra.length&255),Z(pe,pe.gzhead.extra.length>>8&255)),pe.gzhead.hcrc&&(K.adler=m(K.adler,pe.pending_buf,pe.pending,0)),pe.gzindex=0,pe.status=G):(Z(pe,0),Z(pe,0),Z(pe,0),Z(pe,0),Z(pe,0),Z(pe,pe.level===9?2:pe.strategy>=f||pe.level<2?4:0),Z(pe,xe),pe.status=ge);else{var kt=D+(pe.w_bits-8<<4)<<8,ut=-1;pe.strategy>=f||pe.level<2?ut=0:pe.level<6?ut=1:pe.level===6?ut=2:ut=3,kt|=ut<<6,pe.strstart!==0&&(kt|=N),kt+=31-kt%31,pe.status=ge,le(pe,kt),pe.strstart!==0&&(le(pe,K.adler>>>16),le(pe,K.adler&65535)),K.adler=1}if(pe.status===G)if(pe.gzhead.extra){for(Ae=pe.pending;pe.gzindex<(pe.gzhead.extra.length&65535)&&!(pe.pending===pe.pending_buf_size&&(pe.gzhead.hcrc&&pe.pending>Ae&&(K.adler=m(K.adler,pe.pending_buf,pe.pending-Ae,Ae)),ie(K),Ae=pe.pending,pe.pending===pe.pending_buf_size));)Z(pe,pe.gzhead.extra[pe.gzindex]&255),pe.gzindex++;pe.gzhead.hcrc&&pe.pending>Ae&&(K.adler=m(K.adler,pe.pending_buf,pe.pending-Ae,Ae)),pe.gzindex===pe.gzhead.extra.length&&(pe.gzindex=0,pe.status=te)}else pe.status=te;if(pe.status===te)if(pe.gzhead.name){Ae=pe.pending;do{if(pe.pending===pe.pending_buf_size&&(pe.gzhead.hcrc&&pe.pending>Ae&&(K.adler=m(K.adler,pe.pending_buf,pe.pending-Ae,Ae)),ie(K),Ae=pe.pending,pe.pending===pe.pending_buf_size)){Xe=1;break}pe.gzindexAe&&(K.adler=m(K.adler,pe.pending_buf,pe.pending-Ae,Ae)),Xe===0&&(pe.gzindex=0,pe.status=re)}else pe.status=re;if(pe.status===re)if(pe.gzhead.comment){Ae=pe.pending;do{if(pe.pending===pe.pending_buf_size&&(pe.gzhead.hcrc&&pe.pending>Ae&&(K.adler=m(K.adler,pe.pending_buf,pe.pending-Ae,Ae)),ie(K),Ae=pe.pending,pe.pending===pe.pending_buf_size)){Xe=1;break}pe.gzindexAe&&(K.adler=m(K.adler,pe.pending_buf,pe.pending-Ae,Ae)),Xe===0&&(pe.status=ne)}else pe.status=ne;if(pe.status===ne&&(pe.gzhead.hcrc?(pe.pending+2>pe.pending_buf_size&&ie(K),pe.pending+2<=pe.pending_buf_size&&(Z(pe,K.adler&255),Z(pe,K.adler>>8&255),K.adler=0,pe.status=ge)):pe.status=ge),pe.pending!==0){if(ie(K),K.avail_out===0)return pe.last_flush=-1,p}else if(K.avail_in===0&&fe(je)<=fe(Ze)&&je!==y)return ae(K,o);if(pe.status===ee&&K.avail_in!==0)return ae(K,o);if(K.avail_in!==0||pe.lookahead!==0||je!==h&&pe.status!==ee){var bt=pe.strategy===f?et(pe,je):pe.strategy===v?pt(pe,je):ct[pe.level].func(pe,je);if((bt===q||bt===de)&&(pe.status=ee),bt===se||bt===q)return K.avail_out===0&&(pe.last_flush=-1),p;if(bt===J&&(je===_?l._tr_align(pe):je!==x&&(l._tr_stored_block(pe,0,0,!1),je===g&&(Ne(pe.head),pe.lookahead===0&&(pe.strstart=0,pe.block_start=0,pe.insert=0))),ie(K),K.avail_out===0))return pe.last_flush=-1,p}return je!==y?p:pe.wrap<=0?S:(pe.wrap===2?(Z(pe,K.adler&255),Z(pe,K.adler>>8&255),Z(pe,K.adler>>16&255),Z(pe,K.adler>>24&255),Z(pe,K.total_in&255),Z(pe,K.total_in>>8&255),Z(pe,K.total_in>>16&255),Z(pe,K.total_in>>24&255)):(le(pe,K.adler>>>16),le(pe,K.adler&65535)),ie(K),pe.wrap>0&&(pe.wrap=-pe.wrap),pe.pending!==0?p:S)}function Qe(K){var je;return!K||!K.state?w:(je=K.state.status,je!==U&&je!==G&&je!==te&&je!==re&&je!==ne&&je!==ge&&je!==ee?ae(K,w):(K.state=null,je===ge?ae(K,u):p))}function _t(K,je){var Ze=je.length,pe,Ae,Xe,kt,ut,bt,Bt,Lt;if(!K||!K.state||(pe=K.state,kt=pe.wrap,kt===2||kt===1&&pe.status!==U||pe.lookahead))return w;for(kt===1&&(K.adler=d(K.adler,je,Ze,0)),pe.wrap=0,Ze>=pe.w_size&&(kt===0&&(Ne(pe.head),pe.strstart=0,pe.block_start=0,pe.insert=0),Lt=new a.Buf8(pe.w_size),a.arraySet(Lt,je,Ze-pe.w_size,pe.w_size,0),je=Lt,Ze=pe.w_size),ut=K.avail_in,bt=K.next_in,Bt=K.input,K.avail_in=Ze,K.next_in=0,K.input=je,Ge(pe);pe.lookahead>=z;){Ae=pe.strstart,Xe=pe.lookahead-(z-1);do pe.ins_h=(pe.ins_h<>>24,c>>>=j,f-=j,j=D>>>16&255,j===0)O[y++]=D&65535;else if(j&16){L=D&65535,j&=15,j&&(f>>=j,f-=j),f<15&&(c+=P[_++]<>>24,c>>>=j,f-=j,j=D>>>16&255,j&16){if(M=D&65535,j&=15,fS){m.msg="invalid distance too far back",h.mode=a;break e}if(c>>>=j,f-=j,j=y-x,M>j){if(j=M-j,j>u&&h.sane){m.msg="invalid distance too far back",h.mode=a;break e}if(B=0,R=s,o===0){if(B+=w-j,j2;)O[y++]=R[B++],O[y++]=R[B++],O[y++]=R[B++],L-=3;L&&(O[y++]=R[B++],L>1&&(O[y++]=R[B++]))}else{B=y-M;do O[y++]=O[B++],O[y++]=O[B++],O[y++]=O[B++],L-=3;while(L>2);L&&(O[y++]=O[B++],L>1&&(O[y++]=O[B++]))}}else if(j&64){m.msg="invalid distance code",h.mode=a;break e}else{D=k[(D&65535)+(c&(1<>3,_-=L,f-=L<<3,c&=(1<>>24&255)+(be>>>8&65280)+((be&65280)<<8)+((be&255)<<24)}function Re(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new a.Buf16(320),this.work=new a.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function Ce(be){var Le;return!be||!be.state?o:(Le=be.state,be.total_in=be.total_out=Le.total=0,be.msg="",Le.wrap&&(be.adler=Le.wrap&1),Le.mode=k,Le.last=0,Le.havedict=0,Le.dmax=32768,Le.head=null,Le.hold=0,Le.bits=0,Le.lencode=Le.lendyn=new a.Buf32(Ne),Le.distcode=Le.distdyn=new a.Buf32(ie),Le.sane=1,Le.back=-1,S)}function Ge(be){var Le;return!be||!be.state?o:(Le=be.state,Le.wsize=0,Le.whave=0,Le.wnext=0,Ce(be))}function st(be,Le){var oe,Qe;return!be||!be.state||(Qe=be.state,Le<0?(oe=0,Le=-Le):(oe=(Le>>4)+1,Le<48&&(Le&=15)),Le&&(Le<8||Le>15))?o:(Qe.window!==null&&Qe.wbits!==Le&&(Qe.window=null),Qe.wrap=oe,Qe.wbits=Le,Ge(be))}function vt(be,Le){var oe,Qe;return be?(Qe=new Re,be.state=Qe,Qe.window=null,oe=st(be,Le),oe!==S&&(be.state=null),oe):o}function ft(be){return vt(be,Z)}var pt=!0,et,tt;function ct(be){if(pt){var Le;for(et=new a.Buf32(512),tt=new a.Buf32(32),Le=0;Le<144;)be.lens[Le++]=8;for(;Le<256;)be.lens[Le++]=9;for(;Le<280;)be.lens[Le++]=7;for(;Le<288;)be.lens[Le++]=8;for(b(_,be.lens,0,288,et,0,be.work,{bits:9}),Le=0;Le<32;)be.lens[Le++]=5;b(g,be.lens,0,32,tt,0,be.work,{bits:5}),pt=!1}be.lencode=et,be.lenbits=9,be.distcode=tt,be.distbits=5}function gt(be,Le,oe,Qe){var _t,K=be.state;return K.window===null&&(K.wsize=1<=K.wsize?(a.arraySet(K.window,Le,oe-K.wsize,K.wsize,0),K.wnext=0,K.whave=K.wsize):(_t=K.wsize-K.wnext,_t>Qe&&(_t=Qe),a.arraySet(K.window,Le,oe-Qe,_t,K.wnext),Qe-=_t,Qe?(a.arraySet(K.window,Le,oe-Qe,Qe,0),K.wnext=Qe,K.whave=K.wsize):(K.wnext+=_t,K.wnext===K.wsize&&(K.wnext=0),K.whave>>8&255,oe.check=d(oe.check,He,2,0),Ae=0,Xe=0,oe.mode=T;break}if(oe.flags=0,oe.head&&(oe.head.done=!1),!(oe.wrap&1)||(((Ae&255)<<8)+(Ae>>8))%31){be.msg="incorrect header check",oe.mode=xe;break}if((Ae&15)!==v){be.msg="unknown compression method",oe.mode=xe;break}if(Ae>>>=4,Xe-=4,Je=(Ae&15)+8,oe.wbits===0)oe.wbits=Je;else if(Je>oe.wbits){be.msg="invalid window size",oe.mode=xe;break}oe.dmax=1<>8&1),oe.flags&512&&(He[0]=Ae&255,He[1]=Ae>>>8&255,oe.check=d(oe.check,He,2,0)),Ae=0,Xe=0,oe.mode=C;case C:for(;Xe<32;){if(Ze===0)break e;Ze--,Ae+=Qe[K++]<>>8&255,He[2]=Ae>>>16&255,He[3]=Ae>>>24&255,oe.check=d(oe.check,He,4,0)),Ae=0,Xe=0,oe.mode=D;case D:for(;Xe<16;){if(Ze===0)break e;Ze--,Ae+=Qe[K++]<>8),oe.flags&512&&(He[0]=Ae&255,He[1]=Ae>>>8&255,oe.check=d(oe.check,He,2,0)),Ae=0,Xe=0,oe.mode=j;case j:if(oe.flags&1024){for(;Xe<16;){if(Ze===0)break e;Ze--,Ae+=Qe[K++]<>>8&255,oe.check=d(oe.check,He,2,0)),Ae=0,Xe=0}else oe.head&&(oe.head.extra=null);oe.mode=L;case L:if(oe.flags&1024&&(bt=oe.length,bt>Ze&&(bt=Ze),bt&&(oe.head&&(Je=oe.head.extra_len-oe.length,oe.head.extra||(oe.head.extra=new Array(oe.head.extra_len)),a.arraySet(oe.head.extra,Qe,K,bt,Je)),oe.flags&512&&(oe.check=d(oe.check,Qe,bt,K)),Ze-=bt,K+=bt,oe.length-=bt),oe.length))break e;oe.length=0,oe.mode=M;case M:if(oe.flags&2048){if(Ze===0)break e;bt=0;do Je=Qe[K+bt++],oe.head&&Je&&oe.length<65536&&(oe.head.name+=String.fromCharCode(Je));while(Je&&bt>9&1,oe.head.done=!0),be.adler=oe.check=0,oe.mode=F;break;case P:for(;Xe<32;){if(Ze===0)break e;Ze--,Ae+=Qe[K++]<>>=Xe&7,Xe-=Xe&7,oe.mode=J;break}for(;Xe<3;){if(Ze===0)break e;Ze--,Ae+=Qe[K++]<>>=1,Xe-=1,Ae&3){case 0:oe.mode=V;break;case 1:if(ct(oe),oe.mode=G,Le===p){Ae>>>=2,Xe-=2;break e}break;case 2:oe.mode=I;break;case 3:be.msg="invalid block type",oe.mode=xe}Ae>>>=2,Xe-=2;break;case V:for(Ae>>>=Xe&7,Xe-=Xe&7;Xe<32;){if(Ze===0)break e;Ze--,Ae+=Qe[K++]<>>16^65535)){be.msg="invalid stored block lengths",oe.mode=xe;break}if(oe.length=Ae&65535,Ae=0,Xe=0,oe.mode=z,Le===p)break e;case z:oe.mode=X;case X:if(bt=oe.length,bt){if(bt>Ze&&(bt=Ze),bt>pe&&(bt=pe),bt===0)break e;a.arraySet(_t,Qe,K,bt,je),Ze-=bt,K+=bt,pe-=bt,je+=bt,oe.length-=bt;break}oe.mode=F;break;case I:for(;Xe<14;){if(Ze===0)break e;Ze--,Ae+=Qe[K++]<>>=5,Xe-=5,oe.ndist=(Ae&31)+1,Ae>>>=5,Xe-=5,oe.ncode=(Ae&15)+4,Ae>>>=4,Xe-=4,oe.nlen>286||oe.ndist>30){be.msg="too many length or distance symbols",oe.mode=xe;break}oe.have=0,oe.mode=N;case N:for(;oe.have>>=3,Xe-=3}for(;oe.have<19;)oe.lens[Et[oe.have++]]=0;if(oe.lencode=oe.lendyn,oe.lenbits=7,$e={bits:oe.lenbits},Be=b(h,oe.lens,0,19,oe.lencode,0,oe.work,$e),oe.lenbits=$e.bits,Be){be.msg="invalid code lengths set",oe.mode=xe;break}oe.have=0,oe.mode=U;case U:for(;oe.have>>24,ve=ue>>>16&255,we=ue&65535,!(ye<=Xe);){if(Ze===0)break e;Ze--,Ae+=Qe[K++]<>>=ye,Xe-=ye,oe.lens[oe.have++]=we;else{if(we===16){for(nt=ye+2;Xe>>=ye,Xe-=ye,oe.have===0){be.msg="invalid bit length repeat",oe.mode=xe;break}Je=oe.lens[oe.have-1],bt=3+(Ae&3),Ae>>>=2,Xe-=2}else if(we===17){for(nt=ye+3;Xe>>=ye,Xe-=ye,Je=0,bt=3+(Ae&7),Ae>>>=3,Xe-=3}else{for(nt=ye+7;Xe>>=ye,Xe-=ye,Je=0,bt=11+(Ae&127),Ae>>>=7,Xe-=7}if(oe.have+bt>oe.nlen+oe.ndist){be.msg="invalid bit length repeat",oe.mode=xe;break}for(;bt--;)oe.lens[oe.have++]=Je}}if(oe.mode===xe)break;if(oe.lens[256]===0){be.msg="invalid code -- missing end-of-block",oe.mode=xe;break}if(oe.lenbits=9,$e={bits:oe.lenbits},Be=b(_,oe.lens,0,oe.nlen,oe.lencode,0,oe.work,$e),oe.lenbits=$e.bits,Be){be.msg="invalid literal/lengths set",oe.mode=xe;break}if(oe.distbits=6,oe.distcode=oe.distdyn,$e={bits:oe.distbits},Be=b(g,oe.lens,oe.nlen,oe.ndist,oe.distcode,0,oe.work,$e),oe.distbits=$e.bits,Be){be.msg="invalid distances set",oe.mode=xe;break}if(oe.mode=G,Le===p)break e;case G:oe.mode=te;case te:if(Ze>=6&&pe>=258){be.next_out=je,be.avail_out=pe,be.next_in=K,be.avail_in=Ze,oe.hold=Ae,oe.bits=Xe,m(be,ut),je=be.next_out,_t=be.output,pe=be.avail_out,K=be.next_in,Qe=be.input,Ze=be.avail_in,Ae=oe.hold,Xe=oe.bits,oe.mode===F&&(oe.back=-1);break}for(oe.back=0;ue=oe.lencode[Ae&(1<>>24,ve=ue>>>16&255,we=ue&65535,!(ye<=Xe);){if(Ze===0)break e;Ze--,Ae+=Qe[K++]<>Ee)],ye=ue>>>24,ve=ue>>>16&255,we=ue&65535,!(Ee+ye<=Xe);){if(Ze===0)break e;Ze--,Ae+=Qe[K++]<>>=Ee,Xe-=Ee,oe.back+=Ee}if(Ae>>>=ye,Xe-=ye,oe.back+=ye,oe.length=we,ve===0){oe.mode=se;break}if(ve&32){oe.back=-1,oe.mode=F;break}if(ve&64){be.msg="invalid literal/length code",oe.mode=xe;break}oe.extra=ve&15,oe.mode=re;case re:if(oe.extra){for(nt=oe.extra;Xe>>=oe.extra,Xe-=oe.extra,oe.back+=oe.extra}oe.was=oe.length,oe.mode=ne;case ne:for(;ue=oe.distcode[Ae&(1<>>24,ve=ue>>>16&255,we=ue&65535,!(ye<=Xe);){if(Ze===0)break e;Ze--,Ae+=Qe[K++]<>Ee)],ye=ue>>>24,ve=ue>>>16&255,we=ue&65535,!(Ee+ye<=Xe);){if(Ze===0)break e;Ze--,Ae+=Qe[K++]<>>=Ee,Xe-=Ee,oe.back+=Ee}if(Ae>>>=ye,Xe-=ye,oe.back+=ye,ve&64){be.msg="invalid distance code",oe.mode=xe;break}oe.offset=we,oe.extra=ve&15,oe.mode=ge;case ge:if(oe.extra){for(nt=oe.extra;Xe>>=oe.extra,Xe-=oe.extra,oe.back+=oe.extra}if(oe.offset>oe.dmax){be.msg="invalid distance too far back",oe.mode=xe;break}oe.mode=ee;case ee:if(pe===0)break e;if(bt=ut-pe,oe.offset>bt){if(bt=oe.offset-bt,bt>oe.whave&&oe.sane){be.msg="invalid distance too far back",oe.mode=xe;break}bt>oe.wnext?(bt-=oe.wnext,Bt=oe.wsize-bt):Bt=oe.wnext-bt,bt>oe.length&&(bt=oe.length),Lt=oe.window}else Lt=_t,Bt=je-oe.offset,bt=oe.length;bt>pe&&(bt=pe),pe-=bt,oe.length-=bt;do _t[je++]=Lt[Bt++];while(--bt);oe.length===0&&(oe.mode=te);break;case se:if(pe===0)break e;_t[je++]=oe.length,pe--,oe.mode=te;break;case J:if(oe.wrap){for(;Xe<32;){if(Ze===0)break e;Ze--,Ae|=Qe[K++]<=1&&te[L]===0;L--);if(M>L&&(M=L),L===0)return c[f++]=1<<24|64<<16|0,c[f++]=1<<24|64<<16|0,k.bits=1,0;for(j=1;j0&&(w===b||L!==1))return-1;for(re[1]=0,C=1;Cd||w===_&&O>m)return 1;for(;;){ee=C-R,v[D]G?(se=ne[ge+v[D]],J=N[U+v[D]]):(se=32+64,J=0),H=1<>R)+V]=ee<<24|se<<16|J|0;while(V!==0);for(H=1<>=1;if(H!==0?(F&=H-1,F+=H):F=0,D++,--te[C]===0){if(C===L)break;C=u[o+v[D]]}if(C>M&&(F&X)!==z){for(R===0&&(R=M),I+=j,B=C-R,P=1<d||w===_&&O>m)return 1;z=F&X,c[z]=M<<24|B<<16|I-f|0}}return F!==0&&(c[I+F]=C-R<<24|64<<16|0),k.bits=M,0}},{"../utils/common":442}],452:[function(e,n,i){n.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],453:[function(e,n,i){var a=e("../utils/common"),l=4,d=0,m=1,b=2;function h(he){for(var De=he.length;--De>=0;)he[De]=0}var _=0,g=1,y=2,x=3,p=258,S=29,w=256,u=w+1+S,o=30,s=19,c=2*u+1,f=15,v=16,k=7,T=256,C=16,D=17,j=18,L=[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],M=[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],B=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],R=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],P=512,O=new Array((u+2)*2);h(O);var F=new Array(o*2);h(F);var H=new Array(P);h(H);var V=new Array(p-x+1);h(V);var z=new Array(S);h(z);var X=new Array(o);h(X);function I(he,De,Oe,Ie,be){this.static_tree=he,this.extra_bits=De,this.extra_base=Oe,this.elems=Ie,this.max_length=be,this.has_stree=he&&he.length}var N,U,G;function te(he,De){this.dyn_tree=he,this.max_code=0,this.stat_desc=De}function re(he){return he<256?H[he]:H[256+(he>>>7)]}function ne(he,De){he.pending_buf[he.pending++]=De&255,he.pending_buf[he.pending++]=De>>>8&255}function ge(he,De,Oe){he.bi_valid>v-Oe?(he.bi_buf|=De<>v-he.bi_valid,he.bi_valid+=Oe-v):(he.bi_buf|=De<>>=1,Oe<<=1;while(--De>0);return Oe>>>1}function J(he){he.bi_valid===16?(ne(he,he.bi_buf),he.bi_buf=0,he.bi_valid=0):he.bi_valid>=8&&(he.pending_buf[he.pending++]=he.bi_buf&255,he.bi_buf>>=8,he.bi_valid-=8)}function q(he,De){var Oe=De.dyn_tree,Ie=De.max_code,be=De.stat_desc.static_tree,Le=De.stat_desc.has_stree,oe=De.stat_desc.extra_bits,Qe=De.stat_desc.extra_base,_t=De.stat_desc.max_length,K,je,Ze,pe,Ae,Xe,kt=0;for(pe=0;pe<=f;pe++)he.bl_count[pe]=0;for(Oe[he.heap[he.heap_max]*2+1]=0,K=he.heap_max+1;K_t&&(pe=_t,kt++),Oe[je*2+1]=pe,!(je>Ie)&&(he.bl_count[pe]++,Ae=0,je>=Qe&&(Ae=oe[je-Qe]),Xe=Oe[je*2],he.opt_len+=Xe*(pe+Ae),Le&&(he.static_len+=Xe*(be[je*2+1]+Ae)));if(kt!==0){do{for(pe=_t-1;he.bl_count[pe]===0;)pe--;he.bl_count[pe]--,he.bl_count[pe+1]+=2,he.bl_count[_t]--,kt-=2}while(kt>0);for(pe=_t;pe!==0;pe--)for(je=he.bl_count[pe];je!==0;)Ze=he.heap[--K],!(Ze>Ie)&&(Oe[Ze*2+1]!==pe&&(he.opt_len+=(pe-Oe[Ze*2+1])*Oe[Ze*2],Oe[Ze*2+1]=pe),je--)}}function de(he,De,Oe){var Ie=new Array(f+1),be=0,Le,oe;for(Le=1;Le<=f;Le++)Ie[Le]=be=be+Oe[Le-1]<<1;for(oe=0;oe<=De;oe++){var Qe=he[oe*2+1];Qe!==0&&(he[oe*2]=se(Ie[Qe]++,Qe))}}function xe(){var he,De,Oe,Ie,be,Le=new Array(f+1);for(Oe=0,Ie=0;Ie>=7;Ie8?ne(he,he.bi_buf):he.bi_valid>0&&(he.pending_buf[he.pending++]=he.bi_buf),he.bi_buf=0,he.bi_valid=0}function Ne(he,De,Oe,Ie){fe(he),Ie&&(ne(he,Oe),ne(he,~Oe)),a.arraySet(he.pending_buf,he.window,De,Oe,he.pending),he.pending+=Oe}function ie(he,De,Oe,Ie){var be=De*2,Le=Oe*2;return he[be]>1;oe>=1;oe--)Y(he,Oe,oe);K=Le;do oe=he.heap[1],he.heap[1]=he.heap[he.heap_len--],Y(he,Oe,1),Qe=he.heap[1],he.heap[--he.heap_max]=oe,he.heap[--he.heap_max]=Qe,Oe[K*2]=Oe[oe*2]+Oe[Qe*2],he.depth[K]=(he.depth[oe]>=he.depth[Qe]?he.depth[oe]:he.depth[Qe])+1,Oe[oe*2+1]=Oe[Qe*2+1]=K,he.heap[1]=K++,Y(he,Oe,1);while(he.heap_len>=2);he.heap[--he.heap_max]=he.heap[1],q(he,De),de(Oe,_t,he.bl_count)}function Re(he,De,Oe){var Ie,be=-1,Le,oe=De[0*2+1],Qe=0,_t=7,K=4;for(oe===0&&(_t=138,K=3),De[(Oe+1)*2+1]=65535,Ie=0;Ie<=Oe;Ie++)Le=oe,oe=De[(Ie+1)*2+1],!(++Qe<_t&&Le===oe)&&(Qe=3&&he.bl_tree[R[De]*2+1]===0;De--);return he.opt_len+=3*(De+1)+5+5+4,De}function st(he,De,Oe,Ie){var be;for(ge(he,De-257,5),ge(he,Oe-1,5),ge(he,Ie-4,4),be=0;be>>=1)if(De&1&&he.dyn_ltree[Oe*2]!==0)return d;if(he.dyn_ltree[9*2]!==0||he.dyn_ltree[10*2]!==0||he.dyn_ltree[13*2]!==0)return m;for(Oe=32;Oe0?(he.strm.data_type===b&&(he.strm.data_type=vt(he)),le(he,he.l_desc),le(he,he.d_desc),oe=Ge(he),be=he.opt_len+3+7>>>3,Le=he.static_len+3+7>>>3,Le<=be&&(be=Le)):be=Le=Oe+5,Oe+4<=be&&De!==-1?et(he,De,Oe,Ie):he.strategy===l||Le===be?(ge(he,(g<<1)+(Ie?1:0),3),Z(he,O,F)):(ge(he,(y<<1)+(Ie?1:0),3),st(he,he.l_desc.max_code+1,he.d_desc.max_code+1,oe+1),Z(he,he.dyn_ltree,he.dyn_dtree)),ae(he),Ie&&fe(he)}function gt(he,De,Oe){return he.pending_buf[he.d_buf+he.last_lit*2]=De>>>8&255,he.pending_buf[he.d_buf+he.last_lit*2+1]=De&255,he.pending_buf[he.l_buf+he.last_lit]=Oe&255,he.last_lit++,De===0?he.dyn_ltree[Oe*2]++:(he.matches++,De--,he.dyn_ltree[(V[Oe]+w+1)*2]++,he.dyn_dtree[re(De)*2]++),he.last_lit===he.lit_bufsize-1}i._tr_init=pt,i._tr_stored_block=et,i._tr_flush_block=ct,i._tr_tally=gt,i._tr_align=tt},{"../utils/common":442}],454:[function(e,n,i){function a(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}n.exports=a},{}],455:[function(e,n,i){n.exports={"2.16.840.1.101.3.4.1.1":"aes-128-ecb","2.16.840.1.101.3.4.1.2":"aes-128-cbc","2.16.840.1.101.3.4.1.3":"aes-128-ofb","2.16.840.1.101.3.4.1.4":"aes-128-cfb","2.16.840.1.101.3.4.1.21":"aes-192-ecb","2.16.840.1.101.3.4.1.22":"aes-192-cbc","2.16.840.1.101.3.4.1.23":"aes-192-ofb","2.16.840.1.101.3.4.1.24":"aes-192-cfb","2.16.840.1.101.3.4.1.41":"aes-256-ecb","2.16.840.1.101.3.4.1.42":"aes-256-cbc","2.16.840.1.101.3.4.1.43":"aes-256-ofb","2.16.840.1.101.3.4.1.44":"aes-256-cfb"}},{}],456:[function(e,n,i){var a=e("asn1.js");i.certificate=e("./certificate");var l=a.define("RSAPrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("modulus").int(),this.key("publicExponent").int(),this.key("privateExponent").int(),this.key("prime1").int(),this.key("prime2").int(),this.key("exponent1").int(),this.key("exponent2").int(),this.key("coefficient").int())});i.RSAPrivateKey=l;var d=a.define("RSAPublicKey",function(){this.seq().obj(this.key("modulus").int(),this.key("publicExponent").int())});i.RSAPublicKey=d;var m=a.define("SubjectPublicKeyInfo",function(){this.seq().obj(this.key("algorithm").use(b),this.key("subjectPublicKey").bitstr())});i.PublicKey=m;var b=a.define("AlgorithmIdentifier",function(){this.seq().obj(this.key("algorithm").objid(),this.key("none").null_().optional(),this.key("curve").objid().optional(),this.key("params").seq().obj(this.key("p").int(),this.key("q").int(),this.key("g").int()).optional())}),h=a.define("PrivateKeyInfo",function(){this.seq().obj(this.key("version").int(),this.key("algorithm").use(b),this.key("subjectPrivateKey").octstr())});i.PrivateKey=h;var _=a.define("EncryptedPrivateKeyInfo",function(){this.seq().obj(this.key("algorithm").seq().obj(this.key("id").objid(),this.key("decrypt").seq().obj(this.key("kde").seq().obj(this.key("id").objid(),this.key("kdeparams").seq().obj(this.key("salt").octstr(),this.key("iters").int())),this.key("cipher").seq().obj(this.key("algo").objid(),this.key("iv").octstr()))),this.key("subjectPrivateKey").octstr())});i.EncryptedPrivateKey=_;var g=a.define("DSAPrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("p").int(),this.key("q").int(),this.key("g").int(),this.key("pub_key").int(),this.key("priv_key").int())});i.DSAPrivateKey=g,i.DSAparam=a.define("DSAparam",function(){this.int()});var y=a.define("ECPrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("privateKey").octstr(),this.key("parameters").optional().explicit(0).use(x),this.key("publicKey").optional().explicit(1).bitstr())});i.ECPrivateKey=y;var x=a.define("ECParameters",function(){this.choice({namedCurve:this.objid()})});i.signature=a.define("signature",function(){this.seq().obj(this.key("r").int(),this.key("s").int())})},{"./certificate":457,"asn1.js":167}],457:[function(e,n,i){var a=e("asn1.js"),l=a.define("Time",function(){this.choice({utcTime:this.utctime(),generalTime:this.gentime()})}),d=a.define("AttributeTypeValue",function(){this.seq().obj(this.key("type").objid(),this.key("value").any())}),m=a.define("AlgorithmIdentifier",function(){this.seq().obj(this.key("algorithm").objid(),this.key("parameters").optional(),this.key("curve").objid().optional())}),b=a.define("SubjectPublicKeyInfo",function(){this.seq().obj(this.key("algorithm").use(m),this.key("subjectPublicKey").bitstr())}),h=a.define("RelativeDistinguishedName",function(){this.setof(d)}),_=a.define("RDNSequence",function(){this.seqof(h)}),g=a.define("Name",function(){this.choice({rdnSequence:this.use(_)})}),y=a.define("Validity",function(){this.seq().obj(this.key("notBefore").use(l),this.key("notAfter").use(l))}),x=a.define("Extension",function(){this.seq().obj(this.key("extnID").objid(),this.key("critical").bool().def(!1),this.key("extnValue").octstr())}),p=a.define("TBSCertificate",function(){this.seq().obj(this.key("version").explicit(0).int().optional(),this.key("serialNumber").int(),this.key("signature").use(m),this.key("issuer").use(g),this.key("validity").use(y),this.key("subject").use(g),this.key("subjectPublicKeyInfo").use(b),this.key("issuerUniqueID").implicit(1).bitstr().optional(),this.key("subjectUniqueID").implicit(2).bitstr().optional(),this.key("extensions").explicit(3).seqof(x).optional())}),S=a.define("X509Certificate",function(){this.seq().obj(this.key("tbsCertificate").use(p),this.key("signatureAlgorithm").use(m),this.key("signatureValue").bitstr())});n.exports=S},{"asn1.js":167}],458:[function(e,n,i){var a=/Proc-Type: 4,ENCRYPTED[\n\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\n\r]+([0-9A-z\n\r+/=]+)[\n\r]+/m,l=/^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m,d=/^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\n\r+/=]+)-----END \1-----$/m,m=e("evp_bytestokey"),b=e("browserify-aes"),h=e("safe-buffer").Buffer;n.exports=function(_,g){var y=_.toString(),x=y.match(a),p;if(x){var w="aes"+x[1],u=h.from(x[2],"hex"),o=h.from(x[3].replace(/[\r\n]/g,""),"base64"),s=m(g,u.slice(0,8),parseInt(x[1],10)).key,c=[],f=b.createDecipheriv(w,s,u);c.push(f.update(o)),c.push(f.final()),p=h.concat(c)}else{var S=y.match(d);p=h.from(S[2].replace(/[\r\n]/g,""),"base64")}var v=y.match(l)[1];return{tag:v,data:p}}},{"browserify-aes":188,evp_bytestokey:368,"safe-buffer":494}],459:[function(e,n,i){function a(x){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(S){return typeof S}:a=function(S){return S&&typeof Symbol=="function"&&S.constructor===Symbol&&S!==Symbol.prototype?"symbol":typeof S},a(x)}var l=e("./asn1"),d=e("./aesid.json"),m=e("./fixProc"),b=e("browserify-aes"),h=e("pbkdf2"),_=e("safe-buffer").Buffer;n.exports=g;function g(x){var p;a(x)==="object"&&!_.isBuffer(x)&&(p=x.passphrase,x=x.key),typeof x=="string"&&(x=_.from(x));var S=m(x,p),w=S.tag,u=S.data,o,s;switch(w){case"CERTIFICATE":s=l.certificate.decode(u,"der").tbsCertificate.subjectPublicKeyInfo;case"PUBLIC KEY":switch(s||(s=l.PublicKey.decode(u,"der")),o=s.algorithm.algorithm.join("."),o){case"1.2.840.113549.1.1.1":return l.RSAPublicKey.decode(s.subjectPublicKey.data,"der");case"1.2.840.10045.2.1":return s.subjectPrivateKey=s.subjectPublicKey,{type:"ec",data:s};case"1.2.840.10040.4.1":return s.algorithm.params.pub_key=l.DSAparam.decode(s.subjectPublicKey.data,"der"),{type:"dsa",data:s.algorithm.params};default:throw new Error("unknown key id "+o)}case"ENCRYPTED PRIVATE KEY":u=l.EncryptedPrivateKey.decode(u,"der"),u=y(u,p);case"PRIVATE KEY":switch(s=l.PrivateKey.decode(u,"der"),o=s.algorithm.algorithm.join("."),o){case"1.2.840.113549.1.1.1":return l.RSAPrivateKey.decode(s.subjectPrivateKey,"der");case"1.2.840.10045.2.1":return{curve:s.algorithm.curve,privateKey:l.ECPrivateKey.decode(s.subjectPrivateKey,"der").privateKey};case"1.2.840.10040.4.1":return s.algorithm.params.priv_key=l.DSAparam.decode(s.subjectPrivateKey,"der"),{type:"dsa",params:s.algorithm.params};default:throw new Error("unknown key id "+o)}case"RSA PUBLIC KEY":return l.RSAPublicKey.decode(u,"der");case"RSA PRIVATE KEY":return l.RSAPrivateKey.decode(u,"der");case"DSA PRIVATE KEY":return{type:"dsa",params:l.DSAPrivateKey.decode(u,"der")};case"EC PRIVATE KEY":return u=l.ECPrivateKey.decode(u,"der"),{curve:u.parameters.value,privateKey:u.privateKey};default:throw new Error("unknown key type "+w)}}g.signature=l.signature;function y(x,p){var S=x.algorithm.decrypt.kde.kdeparams.salt,w=parseInt(x.algorithm.decrypt.kde.kdeparams.iters.toString(),10),u=d[x.algorithm.decrypt.cipher.algo.join(".")],o=x.algorithm.decrypt.cipher.iv,s=x.subjectPrivateKey,c=parseInt(u.split("-")[1],10)/8,f=h.pbkdf2Sync(p,S,w,c,"sha1"),v=b.createDecipheriv(u,f,o),k=[];return k.push(v.update(s)),k.push(v.final()),_.concat(k)}},{"./aesid.json":455,"./asn1":456,"./fixProc":458,"browserify-aes":188,pbkdf2:460,"safe-buffer":494}],460:[function(e,n,i){i.pbkdf2=e("./lib/async"),i.pbkdf2Sync=e("./lib/sync")},{"./lib/async":461,"./lib/sync":464}],461:[function(e,n,i){(function(a,l){var d=e("safe-buffer").Buffer,m=e("./precondition"),b=e("./default-encoding"),h=e("./sync"),_=e("./to-buffer"),g,y=l.crypto&&l.crypto.subtle,x={sha:"SHA-1","sha-1":"SHA-1",sha1:"SHA-1",sha256:"SHA-256","sha-256":"SHA-256",sha384:"SHA-384","sha-384":"SHA-384","sha-512":"SHA-512",sha512:"SHA-512"},p=[];function S(o){if(l.process&&!l.process.browser||!y||!y.importKey||!y.deriveBits)return Promise.resolve(!1);if(p[o]!==void 0)return p[o];g=g||d.alloc(8);var s=w(g,g,10,128,o).then(function(){return!0}).catch(function(){return!1});return p[o]=s,s}function w(o,s,c,f,v){return y.importKey("raw",o,{name:"PBKDF2"},!1,["deriveBits"]).then(function(k){return y.deriveBits({name:"PBKDF2",salt:s,iterations:c,hash:{name:v}},k,f<<3)}).then(function(k){return d.from(k)})}function u(o,s){o.then(function(c){a.nextTick(function(){s(null,c)})},function(c){a.nextTick(function(){s(c)})})}n.exports=function(o,s,c,f,v,k){typeof v=="function"&&(k=v,v=void 0),v=v||"sha1";var T=x[v.toLowerCase()];if(!T||typeof l.Promise!="function")return a.nextTick(function(){var C;try{C=h(o,s,c,f,v)}catch(D){return k(D)}k(null,C)});if(m(c,f),o=_(o,b,"Password"),s=_(s,b,"Salt"),typeof k!="function")throw new Error("No callback provided to pbkdf2");u(S(T).then(function(C){return C?w(o,s,c,f,T):h(o,s,c,f,v)}),k)}}).call(this,e("_process"),typeof cr<"u"?cr:typeof self<"u"?self:typeof window<"u"?window:{})},{"./default-encoding":462,"./precondition":463,"./sync":464,"./to-buffer":465,_process:467,"safe-buffer":494}],462:[function(e,n,i){(function(a){var l;if(a.browser)l="utf-8";else if(a.version){var d=parseInt(a.version.split(".")[0].slice(1),10);l=d>=6?"utf-8":"binary"}else l="utf-8";n.exports=l}).call(this,e("_process"))},{_process:467}],463:[function(e,n,i){var a=Math.pow(2,30)-1;n.exports=function(l,d){if(typeof l!="number")throw new TypeError("Iterations not a number");if(l<0)throw new TypeError("Bad iterations");if(typeof d!="number")throw new TypeError("Key length not a number");if(d<0||d>a||d!==d)throw new TypeError("Bad key length")}},{}],464:[function(e,n,i){var a=e("create-hash/md5"),l=e("ripemd160"),d=e("sha.js"),m=e("safe-buffer").Buffer,b=e("./precondition"),h=e("./default-encoding"),_=e("./to-buffer"),g=m.alloc(128),y={md5:16,sha1:20,sha224:28,sha256:32,sha384:48,sha512:64,rmd160:20,ripemd160:20};function x(w,u,o){var s=p(w),c=w==="sha512"||w==="sha384"?128:64;u.length>c?u=s(u):u.length"u"||!a.version||a.version.indexOf("v0.")===0||a.version.indexOf("v1.")===0&&a.version.indexOf("v1.8.")!==0?n.exports={nextTick:l}:n.exports=a;function l(d,m,b,h){if(typeof d!="function")throw new TypeError('"callback" argument must be a function');var _=arguments.length,g,y;switch(_){case 0:case 1:return a.nextTick(d);case 2:return a.nextTick(function(){d.call(null,m)});case 3:return a.nextTick(function(){d.call(null,m,b)});case 4:return a.nextTick(function(){d.call(null,m,b,h)});default:for(g=new Array(_-1),y=0;y1)for(var f=1;ff||new m(u).cmp(c.modulus)>=0)throw new Error("decryption error");var v;o?v=_(new m(u),c):v=b(u,c);var k=g.alloc(f-v.length);if(v=g.concat([k,v],f),s===4)return y(c,v);if(s===1)return x(c,v,o);if(s===3)return v;throw new Error("unknown padding")};function y(S,w){var u=S.modulus.byteLength(),o=h("sha1").update(g.alloc(0)).digest(),s=o.length;if(w[0]!==0)throw new Error("decryption error");var c=w.slice(1,s+1),f=w.slice(s+1),v=d(c,l(f,s)),k=d(f,l(v,u-s-1));if(p(o,k.slice(0,s)))throw new Error("decryption error");for(var T=s;k[T]===0;)T++;if(k[T++]!==1)throw new Error("decryption error");return k.slice(T)}function x(S,w,u){for(var o=w.slice(0,2),s=2,c=0;w[s++]!==0;)if(s>=w.length){c++;break}var f=w.slice(2,s-1);if((o.toString("hex")!=="0002"&&!u||o.toString("hex")!=="0001"&&u)&&c++,f.length<8&&c++,c)throw new Error("decryption error");return w.slice(s)}function p(S,w){S=g.from(S),w=g.from(w);var u=0,o=S.length;S.length!==w.length&&(u++,o=Math.min(S.length,w.length));for(var s=-1;++s=0)throw new Error("data too long for modulus")}else throw new Error("unknown padding");return s?g(v,f):_(v,f)};function x(w,u){var o=w.modulus.byteLength(),s=u.length,c=d("sha1").update(y.alloc(0)).digest(),f=c.length,v=2*f;if(s>o-v-2)throw new Error("message too long");var k=y.alloc(o-s-v-2),T=o-f-1,C=l(f),D=b(y.concat([c,k,y.alloc(1,1),u],T),m(C,T)),j=b(C,m(D,f));return new h(y.concat([y.alloc(1),j,D],o))}function p(w,u,o){var s=u.length,c=w.modulus.byteLength();if(s>c-11)throw new Error("message too long");var f;return o?f=y.alloc(c-s-3,255):f=S(c-s-3),new h(y.concat([y.from([0,o?1:2]),f,y.alloc(1),u],c))}function S(w){for(var u=y.allocUnsafe(w),o=0,s=l(w*2),c=0,f;om)throw new RangeError("requested too many random bytes");var p=h.allocUnsafe(y);if(y>0)if(y>d)for(var S=0;Sy||o<0)throw new TypeError("offset must be a uint32");if(o>_||o>s)throw new RangeError("offset out of range")}function p(o,s,c){if(typeof o!="number"||o!==o)throw new TypeError("size must be a number");if(o>y||o<0)throw new TypeError("size must be a uint32");if(o+s>c||o>_)throw new RangeError("buffer too small")}g&&g.getRandomValues||!a.browser?(i.randomFill=S,i.randomFillSync=u):(i.randomFill=d,i.randomFillSync=d);function S(o,s,c,f){if(!h.isBuffer(o)&&!(o instanceof l.Uint8Array))throw new TypeError('"buf" argument must be a Buffer or Uint8Array');if(typeof s=="function")f=s,s=0,c=o.length;else if(typeof c=="function")f=c,c=o.length-s;else if(typeof f!="function")throw new TypeError('"cb" argument must be a function');return x(s,o.length),p(c,s,o.length),w(o,s,c,f)}function w(o,s,c,f){if(a.browser){var v=o.buffer,k=new Uint8Array(v,s,c);if(g.getRandomValues(k),f){a.nextTick(function(){f(null,o)});return}return o}if(f){b(c,function(C,D){if(C)return f(C);D.copy(o,s),f(null,o)});return}var T=b(c);return T.copy(o,s),o}function u(o,s,c){if(typeof s>"u"&&(s=0),!h.isBuffer(o)&&!(o instanceof l.Uint8Array))throw new TypeError('"buf" argument must be a Buffer or Uint8Array');return x(s,o.length),c===void 0&&(c=o.length-s),p(c,s,o.length),w(o,s,c)}}).call(this,e("_process"),typeof cr<"u"?cr:typeof self<"u"?self:typeof window<"u"?window:{})},{_process:467,randombytes:475,"safe-buffer":494}],477:[function(e,n,i){function a(y){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(p){return typeof p}:a=function(p){return p&&typeof Symbol=="function"&&p.constructor===Symbol&&p!==Symbol.prototype?"symbol":typeof p},a(y)}function l(y,x){y.prototype=Object.create(x.prototype),y.prototype.constructor=y,y.__proto__=x}var d={};function m(y,x,p){p||(p=Error);function S(u,o,s){return typeof x=="string"?x:x(u,o,s)}var w=function(u){l(o,u);function o(s,c,f){return u.call(this,S(s,c,f))||this}return o}(p);w.prototype.name=p.name,w.prototype.code=y,d[y]=w}function b(y,x){if(Array.isArray(y)){var p=y.length;return y=y.map(function(S){return String(S)}),p>2?"one of ".concat(x," ").concat(y.slice(0,p-1).join(", "),", or ")+y[p-1]:p===2?"one of ".concat(x," ").concat(y[0]," or ").concat(y[1]):"of ".concat(x," ").concat(y[0])}else return"of ".concat(x," ").concat(String(y))}function h(y,x,p){return y.substr(!p||p<0?0:+p,x.length)===x}function _(y,x,p){return(p===void 0||p>y.length)&&(p=y.length),y.substring(p-x.length,p)===x}function g(y,x,p){return typeof p!="number"&&(p=0),p+x.length>y.length?!1:y.indexOf(x,p)!==-1}m("ERR_INVALID_OPT_VALUE",function(y,x){return'The value "'+x+'" is invalid for option "'+y+'"'},TypeError),m("ERR_INVALID_ARG_TYPE",function(y,x,p){var S;typeof x=="string"&&h(x,"not ")?(S="must not be",x=x.replace(/^not /,"")):S="must be";var w;if(_(y," argument"))w="The ".concat(y," ").concat(S," ").concat(b(x,"type"));else{var u=g(y,".")?"property":"argument";w='The "'.concat(y,'" ').concat(u," ").concat(S," ").concat(b(x,"type"))}return w+=". Received type ".concat(a(p)),w},TypeError),m("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF"),m("ERR_METHOD_NOT_IMPLEMENTED",function(y){return"The "+y+" method is not implemented"}),m("ERR_STREAM_PREMATURE_CLOSE","Premature close"),m("ERR_STREAM_DESTROYED",function(y){return"Cannot call "+y+" after a stream was destroyed"}),m("ERR_MULTIPLE_CALLBACK","Callback called multiple times"),m("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable"),m("ERR_STREAM_WRITE_AFTER_END","write after end"),m("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),m("ERR_UNKNOWN_ENCODING",function(y){return"Unknown encoding: "+y},TypeError),m("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event"),n.exports.codes=d},{}],478:[function(e,n,i){(function(a){var l=Object.keys||function(p){var S=[];for(var w in p)S.push(w);return S};n.exports=g;var d=e("./_stream_readable"),m=e("./_stream_writable");e("inherits")(g,d);for(var b=l(m.prototype),h=0;h0)if(typeof fe!="string"&&!Z.objectMode&&Object.getPrototypeOf(fe)!==h.prototype&&(fe=g(fe)),ie)Z.endEmitted?j(ae,new k):O(ae,Z,fe,!0);else if(Z.ended)j(ae,new f);else{if(Z.destroyed)return!1;Z.reading=!1,Z.decoder&&!Ne?(fe=Z.decoder.write(fe),Z.objectMode||fe.length!==0?O(ae,Z,fe,!1):U(ae,Z)):O(ae,Z,fe,!1)}else ie||(Z.reading=!1,U(ae,Z))}return!Z.ended&&(Z.length=H?ae=H:(ae--,ae|=ae>>>1,ae|=ae>>>2,ae|=ae>>>4,ae|=ae>>>8,ae|=ae>>>16,ae++),ae}function z(ae,fe){return ae<=0||fe.length===0&&fe.ended?0:fe.objectMode?1:ae!==ae?fe.flowing&&fe.length?fe.buffer.head.data.length:fe.length:(ae>fe.highWaterMark&&(fe.highWaterMark=V(ae)),ae<=fe.length?ae:fe.ended?fe.length:(fe.needReadable=!0,0))}R.prototype.read=function(ae){p("read",ae),ae=parseInt(ae,10);var fe=this._readableState,Ne=ae;if(ae!==0&&(fe.emittedReadable=!1),ae===0&&fe.needReadable&&((fe.highWaterMark!==0?fe.length>=fe.highWaterMark:fe.length>0)||fe.ended))return p("read: emitReadable",fe.length,fe.ended),fe.length===0&&fe.ended?q(this):I(this),null;if(ae=z(ae,fe),ae===0&&fe.ended)return fe.length===0&&q(this),null;var ie=fe.needReadable;p("need readable",ie),(fe.length===0||fe.length-ae0?Y=J(ae,fe):Y=null,Y===null?(fe.needReadable=fe.length<=fe.highWaterMark,ae=0):(fe.length-=ae,fe.awaitDrain=0),fe.length===0&&(fe.ended||(fe.needReadable=!0),Ne!==ae&&fe.ended&&q(this)),Y!==null&&this.emit("data",Y),Y};function X(ae,fe){if(p("onEofChunk"),!fe.ended){if(fe.decoder){var Ne=fe.decoder.end();Ne&&Ne.length&&(fe.buffer.push(Ne),fe.length+=fe.objectMode?1:Ne.length)}fe.ended=!0,fe.sync?I(ae):(fe.needReadable=!1,fe.emittedReadable||(fe.emittedReadable=!0,N(ae)))}}function I(ae){var fe=ae._readableState;p("emitReadable",fe.needReadable,fe.emittedReadable),fe.needReadable=!1,fe.emittedReadable||(p("emitReadable",fe.flowing),fe.emittedReadable=!0,a.nextTick(N,ae))}function N(ae){var fe=ae._readableState;p("emitReadable_",fe.destroyed,fe.length,fe.ended),!fe.destroyed&&(fe.length||fe.ended)&&(ae.emit("readable"),fe.emittedReadable=!1),fe.needReadable=!fe.flowing&&!fe.ended&&fe.length<=fe.highWaterMark,se(ae)}function U(ae,fe){fe.readingMore||(fe.readingMore=!0,a.nextTick(G,ae,fe))}function G(ae,fe){for(;!fe.reading&&!fe.ended&&(fe.length1&&xe(ie.pipes,ae)!==-1)&&!Ge&&(p("false write response, pause",ie.awaitDrain),ie.awaitDrain++),Ne.pause())}function ft(ct){p("onerror",ct),tt(),ae.removeListener("error",ft),m(ae,"error")===0&&j(ae,ct)}M(ae,"error",ft);function pt(){ae.removeListener("finish",et),tt()}ae.once("close",pt);function et(){p("onfinish"),ae.removeListener("close",pt),tt()}ae.once("finish",et);function tt(){p("unpipe"),Ne.unpipe(ae)}return ae.emit("pipe",Ne),ie.flowing||(p("pipe resume"),Ne.resume()),ae};function te(ae){return function(){var Ne=ae._readableState;p("pipeOnDrain",Ne.awaitDrain),Ne.awaitDrain&&Ne.awaitDrain--,Ne.awaitDrain===0&&m(ae,"data")&&(Ne.flowing=!0,se(ae))}}R.prototype.unpipe=function(ae){var fe=this._readableState,Ne={hasUnpiped:!1};if(fe.pipesCount===0)return this;if(fe.pipesCount===1)return ae&&ae!==fe.pipes?this:(ae||(ae=fe.pipes),fe.pipes=null,fe.pipesCount=0,fe.flowing=!1,ae&&ae.emit("unpipe",this,Ne),this);if(!ae){var ie=fe.pipes,Y=fe.pipesCount;fe.pipes=null,fe.pipesCount=0,fe.flowing=!1;for(var Z=0;Z0,ie.flowing!==!1&&this.resume()):ae==="readable"&&!ie.endEmitted&&!ie.readableListening&&(ie.readableListening=ie.needReadable=!0,ie.flowing=!1,ie.emittedReadable=!1,p("on readable",ie.length,ie.reading),ie.length?I(this):ie.reading||a.nextTick(ne,this)),Ne},R.prototype.addListener=R.prototype.on,R.prototype.removeListener=function(ae,fe){var Ne=b.prototype.removeListener.call(this,ae,fe);return ae==="readable"&&a.nextTick(re,this),Ne},R.prototype.removeAllListeners=function(ae){var fe=b.prototype.removeAllListeners.apply(this,arguments);return(ae==="readable"||ae===void 0)&&a.nextTick(re,this),fe};function re(ae){var fe=ae._readableState;fe.readableListening=ae.listenerCount("readable")>0,fe.resumeScheduled&&!fe.paused?fe.flowing=!0:ae.listenerCount("data")>0&&ae.resume()}function ne(ae){p("readable nexttick read 0"),ae.read(0)}R.prototype.resume=function(){var ae=this._readableState;return ae.flowing||(p("resume"),ae.flowing=!ae.readableListening,ge(this,ae)),ae.paused=!1,this};function ge(ae,fe){fe.resumeScheduled||(fe.resumeScheduled=!0,a.nextTick(ee,ae,fe))}function ee(ae,fe){p("resume",fe.reading),fe.reading||ae.read(0),fe.resumeScheduled=!1,ae.emit("resume"),se(ae),fe.flowing&&!fe.reading&&ae.read(0)}R.prototype.pause=function(){return p("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(p("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this};function se(ae){var fe=ae._readableState;for(p("flow",fe.flowing);fe.flowing&&ae.read()!==null;);}R.prototype.wrap=function(ae){var fe=this,Ne=this._readableState,ie=!1;ae.on("end",function(){if(p("wrapped end"),Ne.decoder&&!Ne.ended){var le=Ne.decoder.end();le&&le.length&&fe.push(le)}fe.push(null)}),ae.on("data",function(le){if(p("wrapped data"),Ne.decoder&&(le=Ne.decoder.write(le)),!(Ne.objectMode&&le==null)&&!(!Ne.objectMode&&(!le||!le.length))){var Re=fe.push(le);Re||(ie=!0,ae.pause())}});for(var Y in ae)this[Y]===void 0&&typeof ae[Y]=="function"&&(this[Y]=function(Re){return function(){return ae[Re].apply(ae,arguments)}}(Y));for(var Z=0;Z=fe.length?(fe.decoder?Ne=fe.buffer.join(""):fe.buffer.length===1?Ne=fe.buffer.first():Ne=fe.buffer.concat(fe.length),fe.buffer.clear()):Ne=fe.buffer.consume(ae,fe.decoder),Ne}function q(ae){var fe=ae._readableState;p("endReadable",fe.endEmitted),fe.endEmitted||(fe.ended=!0,a.nextTick(de,fe,ae))}function de(ae,fe){if(p("endReadableNT",ae.endEmitted,ae.length),!ae.endEmitted&&ae.length===0&&(ae.endEmitted=!0,fe.readable=!1,fe.emit("end"),ae.autoDestroy)){var Ne=fe._writableState;(!Ne||Ne.autoDestroy&&Ne.finished)&&fe.destroy()}}typeof Symbol=="function"&&(R.from=function(ae,fe){return D===void 0&&(D=e("./internal/streams/from")),D(R,ae,fe)});function xe(ae,fe){for(var Ne=0,ie=ae.length;Ne-1))throw new C(J);return this._writableState.defaultEncoding=J,this},Object.defineProperty(B.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});function O(se,J,q){return!se.objectMode&&se.decodeStrings!==!1&&typeof J=="string"&&(J=_.from(J,q)),J}Object.defineProperty(B.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function F(se,J,q,de,xe,ae){if(!q){var fe=O(J,de,xe);de!==fe&&(q=!0,xe="buffer",de=fe)}var Ne=J.objectMode?1:de.length;J.length+=Ne;var ie=J.length0?this.tail.next=s:this.head=s,this.tail=s,++this.length}},{key:"unshift",value:function(o){var s={data:o,next:this.head};this.length===0&&(this.tail=s),this.head=s,++this.length}},{key:"shift",value:function(){if(this.length!==0){var o=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,o}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(o){if(this.length===0)return"";for(var s=this.head,c=""+s.data;s=s.next;)c+=o+s.data;return c}},{key:"concat",value:function(o){if(this.length===0)return g.alloc(0);for(var s=g.allocUnsafe(o>>>0),c=this.head,f=0;c;)S(c.data,s,f),f+=c.data.length,c=c.next;return s}},{key:"consume",value:function(o,s){var c;return ov.length?v.length:o;if(k===v.length?f+=v:f+=v.slice(0,o),o-=k,o===0){k===v.length?(++c,s.next?this.head=s.next:this.head=this.tail=null):(this.head=s,s.data=v.slice(k));break}++c}return this.length-=c,f}},{key:"_getBuffer",value:function(o){var s=g.allocUnsafe(o),c=this.head,f=1;for(c.data.copy(s),o-=c.data.length;c=c.next;){var v=c.data,k=o>v.length?v.length:o;if(v.copy(s,s.length-o,0,k),o-=k,o===0){k===v.length?(++f,c.next?this.head=c.next:this.head=this.tail=null):(this.head=c,c.data=v.slice(k));break}++f}return this.length-=f,s}},{key:p,value:function(o,s){return x(this,l({},s,{depth:0,customInspect:!1}))}}]),w}()},{buffer:216,util:185}],485:[function(e,n,i){(function(a){function l(g,y){var x=this,p=this._readableState&&this._readableState.destroyed,S=this._writableState&&this._writableState.destroyed;return p||S?(y?y(g):g&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,a.nextTick(h,this,g)):a.nextTick(h,this,g)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(g||null,function(w){!y&&w?x._writableState?x._writableState.errorEmitted?a.nextTick(m,x):(x._writableState.errorEmitted=!0,a.nextTick(d,x,w)):a.nextTick(d,x,w):y?(a.nextTick(m,x),y(w)):a.nextTick(m,x)}),this)}function d(g,y){h(g,y),m(g)}function m(g){g._writableState&&!g._writableState.emitClose||g._readableState&&!g._readableState.emitClose||g.emit("close")}function b(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function h(g,y){g.emit("error",y)}function _(g,y){var x=g._readableState,p=g._writableState;x&&x.autoDestroy||p&&p.autoDestroy?g.destroy(y):g.emit("error",y)}n.exports={destroy:l,undestroy:b,errorOrDestroy:_}}).call(this,e("_process"))},{_process:467}],486:[function(e,n,i){var a=e("../../../errors").codes.ERR_STREAM_PREMATURE_CLOSE;function l(h){var _=!1;return function(){if(!_){_=!0;for(var g=arguments.length,y=new Array(g),x=0;x0;return g(v,T,C,function(D){c||(c=D),D&&f.forEach(y),!T&&(f.forEach(y),s(c))})});return u.reduce(x)}n.exports=S},{"../../../errors":477,"./end-of-stream":486}],489:[function(e,n,i){var a=e("../../../errors").codes.ERR_INVALID_OPT_VALUE;function l(m,b,h){return m.highWaterMark!=null?m.highWaterMark:b?m[h]:null}function d(m,b,h,_){var g=l(b,_,h);if(g!=null){if(!(isFinite(g)&&Math.floor(g)===g)||g<0){var y=_?h:"highWaterMark";throw new a(y,g)}return Math.floor(g)}return m.objectMode?16:16*1024}n.exports={getHighWaterMark:d}},{"../../../errors":477}],490:[function(e,n,i){n.exports=e("events").EventEmitter},{events:367}],491:[function(e,n,i){i=n.exports=e("./lib/_stream_readable.js"),i.Stream=i,i.Readable=i,i.Writable=e("./lib/_stream_writable.js"),i.Duplex=e("./lib/_stream_duplex.js"),i.Transform=e("./lib/_stream_transform.js"),i.PassThrough=e("./lib/_stream_passthrough.js"),i.finished=e("./lib/internal/streams/end-of-stream.js"),i.pipeline=e("./lib/internal/streams/pipeline.js")},{"./lib/_stream_duplex.js":478,"./lib/_stream_passthrough.js":479,"./lib/_stream_readable.js":480,"./lib/_stream_transform.js":481,"./lib/_stream_writable.js":482,"./lib/internal/streams/end-of-stream.js":486,"./lib/internal/streams/pipeline.js":488}],492:[function(e,n,i){function a(d){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(b){return typeof b}:a=function(b){return b&&typeof Symbol=="function"&&b.constructor===Symbol&&b!==Symbol.prototype?"symbol":typeof b},a(d)}var l=function(d){var m=Object.prototype,b=m.hasOwnProperty,h,_=typeof Symbol=="function"?Symbol:{},g=_.iterator||"@@iterator",y=_.asyncIterator||"@@asyncIterator",x=_.toStringTag||"@@toStringTag";function p(X,I,N){return Object.defineProperty(X,I,{value:N,enumerable:!0,configurable:!0,writable:!0}),X[I]}try{p({},"")}catch{p=function(N,U,G){return N[U]=G}}function S(X,I,N,U){var G=I&&I.prototype instanceof v?I:v,te=Object.create(G.prototype),re=new H(U||[]);return te._invoke=R(X,N,re),te}d.wrap=S;function w(X,I,N){try{return{type:"normal",arg:X.call(I,N)}}catch(U){return{type:"throw",arg:U}}}var u="suspendedStart",o="suspendedYield",s="executing",c="completed",f={};function v(){}function k(){}function T(){}var C={};C[g]=function(){return this};var D=Object.getPrototypeOf,j=D&&D(D(V([])));j&&j!==m&&b.call(j,g)&&(C=j);var L=T.prototype=v.prototype=Object.create(C);k.prototype=L.constructor=T,T.constructor=k,k.displayName=p(T,x,"GeneratorFunction");function M(X){["next","throw","return"].forEach(function(I){p(X,I,function(N){return this._invoke(I,N)})})}d.isGeneratorFunction=function(X){var I=typeof X=="function"&&X.constructor;return I?I===k||(I.displayName||I.name)==="GeneratorFunction":!1},d.mark=function(X){return Object.setPrototypeOf?Object.setPrototypeOf(X,T):(X.__proto__=T,p(X,x,"GeneratorFunction")),X.prototype=Object.create(L),X},d.awrap=function(X){return{__await:X}};function B(X,I){function N(te,re,ne,ge){var ee=w(X[te],X,re);if(ee.type==="throw")ge(ee.arg);else{var se=ee.arg,J=se.value;return J&&a(J)==="object"&&b.call(J,"__await")?I.resolve(J.__await).then(function(q){N("next",q,ne,ge)},function(q){N("throw",q,ne,ge)}):I.resolve(J).then(function(q){se.value=q,ne(se)},function(q){return N("throw",q,ne,ge)})}}var U;function G(te,re){function ne(){return new I(function(ge,ee){N(te,re,ge,ee)})}return U=U?U.then(ne,ne):ne()}this._invoke=G}M(B.prototype),B.prototype[y]=function(){return this},d.AsyncIterator=B,d.async=function(X,I,N,U,G){G===void 0&&(G=Promise);var te=new B(S(X,I,N,U),G);return d.isGeneratorFunction(I)?te:te.next().then(function(re){return re.done?re.value:te.next()})};function R(X,I,N){var U=u;return function(te,re){if(U===s)throw new Error("Generator is already running");if(U===c){if(te==="throw")throw re;return z()}for(N.method=te,N.arg=re;;){var ne=N.delegate;if(ne){var ge=P(ne,N);if(ge){if(ge===f)continue;return ge}}if(N.method==="next")N.sent=N._sent=N.arg;else if(N.method==="throw"){if(U===u)throw U=c,N.arg;N.dispatchException(N.arg)}else N.method==="return"&&N.abrupt("return",N.arg);U=s;var ee=w(X,I,N);if(ee.type==="normal"){if(U=N.done?c:o,ee.arg===f)continue;return{value:ee.arg,done:N.done}}else ee.type==="throw"&&(U=c,N.method="throw",N.arg=ee.arg)}}}function P(X,I){var N=X.iterator[I.method];if(N===h){if(I.delegate=null,I.method==="throw"){if(X.iterator.return&&(I.method="return",I.arg=h,P(X,I),I.method==="throw"))return f;I.method="throw",I.arg=new TypeError("The iterator does not provide a 'throw' method")}return f}var U=w(N,X.iterator,I.arg);if(U.type==="throw")return I.method="throw",I.arg=U.arg,I.delegate=null,f;var G=U.arg;if(!G)return I.method="throw",I.arg=new TypeError("iterator result is not an object"),I.delegate=null,f;if(G.done)I[X.resultName]=G.value,I.next=X.nextLoc,I.method!=="return"&&(I.method="next",I.arg=h);else return G;return I.delegate=null,f}M(L),p(L,x,"Generator"),L[g]=function(){return this},L.toString=function(){return"[object Generator]"};function O(X){var I={tryLoc:X[0]};1 in X&&(I.catchLoc=X[1]),2 in X&&(I.finallyLoc=X[2],I.afterLoc=X[3]),this.tryEntries.push(I)}function F(X){var I=X.completion||{};I.type="normal",delete I.arg,X.completion=I}function H(X){this.tryEntries=[{tryLoc:"root"}],X.forEach(O,this),this.reset(!0)}d.keys=function(X){var I=[];for(var N in X)I.push(N);return I.reverse(),function U(){for(;I.length;){var G=I.pop();if(G in X)return U.value=G,U.done=!1,U}return U.done=!0,U}};function V(X){if(X){var I=X[g];if(I)return I.call(X);if(typeof X.next=="function")return X;if(!isNaN(X.length)){var N=-1,U=function G(){for(;++N=0;--G){var te=this.tryEntries[G],re=te.completion;if(te.tryLoc==="root")return U("end");if(te.tryLoc<=this.prev){var ne=b.call(te,"catchLoc"),ge=b.call(te,"finallyLoc");if(ne&&ge){if(this.prev=0;--U){var G=this.tryEntries[U];if(G.tryLoc<=this.prev&&b.call(G,"finallyLoc")&&this.prev=0;--N){var U=this.tryEntries[N];if(U.finallyLoc===I)return this.complete(U.completion,U.afterLoc),F(U),f}},catch:function(I){for(var N=this.tryEntries.length-1;N>=0;--N){var U=this.tryEntries[N];if(U.tryLoc===I){var G=U.completion;if(G.type==="throw"){var te=G.arg;F(U)}return te}}throw new Error("illegal catch attempt")},delegateYield:function(I,N,U){return this.delegate={iterator:V(I),resultName:N,nextLoc:U},this.method==="next"&&(this.arg=h),f}},d}((typeof n>"u"?"undefined":a(n))==="object"?n.exports:{});try{regeneratorRuntime=l}catch{Function("r","regeneratorRuntime = r")(l)}},{}],493:[function(e,n,i){var a=e("buffer").Buffer,l=e("inherits"),d=e("hash-base"),m=new Array(16),b=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],h=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],_=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],g=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11],y=[0,1518500249,1859775393,2400959708,2840853838],x=[1352829926,1548603684,1836072691,2053994217,0];function p(){d.call(this,64),this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520}l(p,d),p.prototype._update=function(){for(var f=m,v=0;v<16;++v)f[v]=this._block.readInt32LE(v*4);for(var k=this._a|0,T=this._b|0,C=this._c|0,D=this._d|0,j=this._e|0,L=this._a|0,M=this._b|0,B=this._c|0,R=this._d|0,P=this._e|0,O=0;O<80;O+=1){var F,H;O<16?(F=w(k,T,C,D,j,f[b[O]],y[0],_[O]),H=c(L,M,B,R,P,f[h[O]],x[0],g[O])):O<32?(F=u(k,T,C,D,j,f[b[O]],y[1],_[O]),H=s(L,M,B,R,P,f[h[O]],x[1],g[O])):O<48?(F=o(k,T,C,D,j,f[b[O]],y[2],_[O]),H=o(L,M,B,R,P,f[h[O]],x[2],g[O])):O<64?(F=s(k,T,C,D,j,f[b[O]],y[3],_[O]),H=u(L,M,B,R,P,f[h[O]],x[3],g[O])):(F=c(k,T,C,D,j,f[b[O]],y[4],_[O]),H=w(L,M,B,R,P,f[h[O]],x[4],g[O])),k=j,j=D,D=S(C,10),C=T,T=F,L=P,P=R,R=S(B,10),B=M,M=H}var V=this._b+C+R|0;this._b=this._c+D+P|0,this._c=this._d+j+L|0,this._d=this._e+k+M|0,this._e=this._a+T+B|0,this._a=V},p.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var f=a.alloc?a.alloc(20):new a(20);return f.writeInt32LE(this._a,0),f.writeInt32LE(this._b,4),f.writeInt32LE(this._c,8),f.writeInt32LE(this._d,12),f.writeInt32LE(this._e,16),f};function S(f,v){return f<>>32-v}function w(f,v,k,T,C,D,j,L){return S(f+(v^k^T)+D+j|0,L)+C|0}function u(f,v,k,T,C,D,j,L){return S(f+(v&k|~v&T)+D+j|0,L)+C|0}function o(f,v,k,T,C,D,j,L){return S(f+((v|~k)^T)+D+j|0,L)+C|0}function s(f,v,k,T,C,D,j,L){return S(f+(v&T|k&~T)+D+j|0,L)+C|0}function c(f,v,k,T,C,D,j,L){return S(f+(v^(k|~T))+D+j|0,L)+C|0}n.exports=p},{buffer:216,"hash-base":370,inherits:387}],494:[function(e,n,i){var a=e("buffer"),l=a.Buffer;function d(b,h){for(var _ in b)h[_]=b[_]}l.from&&l.alloc&&l.allocUnsafe&&l.allocUnsafeSlow?n.exports=a:(d(a,i),i.Buffer=m);function m(b,h,_){return l(b,h,_)}d(l,m),m.from=function(b,h,_){if(typeof b=="number")throw new TypeError("Argument must not be a number");return l(b,h,_)},m.alloc=function(b,h,_){if(typeof b!="number")throw new TypeError("Argument must be a number");var g=l(b);return h!==void 0?typeof _=="string"?g.fill(h,_):g.fill(h):g.fill(0),g},m.allocUnsafe=function(b){if(typeof b!="number")throw new TypeError("Argument must be a number");return l(b)},m.allocUnsafeSlow=function(b){if(typeof b!="number")throw new TypeError("Argument must be a number");return a.SlowBuffer(b)}},{buffer:216}],495:[function(e,n,i){(function(a){function l(g){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(x){return typeof x}:l=function(x){return x&&typeof Symbol=="function"&&x.constructor===Symbol&&x!==Symbol.prototype?"symbol":typeof x},l(g)}var d=e("buffer"),m=d.Buffer,b={},h;for(h in d)d.hasOwnProperty(h)&&(h==="SlowBuffer"||h==="Buffer"||(b[h]=d[h]));var _=b.Buffer={};for(h in m)m.hasOwnProperty(h)&&(h==="allocUnsafe"||h==="allocUnsafeSlow"||(_[h]=m[h]));if(b.Buffer.prototype=m.prototype,(!_.from||_.from===Uint8Array.from)&&(_.from=function(g,y,x){if(typeof g=="number")throw new TypeError('The "value" argument must not be of type number. Received type '+l(g));if(g&&typeof g.length>"u")throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+l(g));return m(g,y,x)}),_.alloc||(_.alloc=function(g,y,x){if(typeof g!="number")throw new TypeError('The "size" argument must be of type number. Received type '+l(g));if(g<0||g>=2*(1<<30))throw new RangeError('The value "'+g+'" is invalid for option "size"');var p=m(g);return!y||y.length===0?p.fill(0):typeof x=="string"?p.fill(y,x):p.fill(y),p}),!b.kStringMaxLength)try{b.kStringMaxLength=a.binding("buffer").kStringMaxLength}catch{}b.constants||(b.constants={MAX_LENGTH:b.kMaxLength},b.kStringMaxLength&&(b.constants.MAX_STRING_LENGTH=b.kStringMaxLength)),n.exports=b}).call(this,e("_process"))},{_process:467,buffer:216}],496:[function(e,n,i){function a(Mt,at){var Te;if(typeof Symbol>"u"||Mt[Symbol.iterator]==null){if(Array.isArray(Mt)||(Te=g(Mt))||at&&Mt&&typeof Mt.length=="number"){Te&&(Mt=Te);var ze=0,Ye=function(){};return{s:Ye,n:function(){return ze>=Mt.length?{done:!0}:{done:!1,value:Mt[ze++]}},e:function(qr){throw qr},f:Ye}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var Pt=!0,Ut=!1,nr;return{s:function(){Te=Mt[Symbol.iterator]()},n:function(){var qr=Te.next();return Pt=qr.done,qr},e:function(qr){Ut=!0,nr=qr},f:function(){try{!Pt&&Te.return!=null&&Te.return()}finally{if(Ut)throw nr}}}}function l(Mt){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(Te){return typeof Te}:l=function(Te){return Te&&typeof Symbol=="function"&&Te.constructor===Symbol&&Te!==Symbol.prototype?"symbol":typeof Te},l(Mt)}function d(Mt,at){if(!(Mt instanceof at))throw new TypeError("Cannot call a class as a function")}function m(Mt,at){for(var Te=0;TeMt.length)&&(at=Mt.length);for(var Te=0,ze=new Array(at);Te",lt:"<",quot:'"',apos:"'"},P=-1,O=-2,F=0,H=1,V=2,z=3,X=4,I=5,N=6,U=7,G=8,te=9,re=10,ne=11,ge=12,ee=13,se=14,J=15,q=16,de=17,xe=18,ae=19,fe=20,Ne=21,ie=22,Y=23,Z=24,le=25,Re=26,Ce=27,Ge=28,st=29,vt=30,ft=31,pt=32,et=33,tt=34,ct=35,gt=36,he=37,De=38,Oe=39,Ie=40,be=41,Le=42,oe=43,Qe=44,_t=9,K=10,je=13,Ze=32,pe=33,Ae=34,Xe=38,kt=39,ut=45,bt=47,Bt=59,Lt=60,ue=61,ye=62,ve=63,we=91,Ee=93,Se=133,We=8232,Je=function(at){return at===Ae||at===kt},Be=[Ae,kt],He=[].concat(Be,[we,ye]),$e=[].concat(Be,[Lt,Ee]),nt=[ue,ve].concat(h(v)),Et=[].concat(h(v),[ye,Xe,Lt]);function Rt(Mt,at,Te){switch(at){case"xml":Te!==L&&Mt.fail("xml prefix must be bound to ".concat(L,"."));break;case"xmlns":Te!==M&&Mt.fail("xmlns prefix must be bound to ".concat(M,"."));break}switch(Te){case M:Mt.fail(at===""?"the default namespace may not be set to ".concat(Te,"."):'may not assign a prefix (even "xmlns") to the URI '.concat(M,"."));break;case L:switch(at){case"xml":break;case"":Mt.fail("the default namespace may not be set to ".concat(Te,"."));break;default:Mt.fail("may not assign the xml namespace to another prefix.")}break}}function wt(Mt,at){for(var Te=0,ze=Object.keys(at);Te0&&(Ye+=":"),Ye+="".concat(this.line,":").concat(this.column)),Ye.length>0&&(Ye+=": "),new Error(Ye+Te)}},{key:"fail",value:function(Te){var ze=this.makeError(Te),Ye=this.errorHandler;if(Ye===void 0)throw ze;return Ye(ze),this}},{key:"write",value:function(Te){if(this.closed)return this.fail("cannot write after close; assign an onready handler.");var ze=!1;Te===null?(ze=!0,Te=""):l(Te)==="object"&&(Te=Te.toString()),this.carriedFromPrevious!==void 0&&(Te="".concat(this.carriedFromPrevious).concat(Te),this.carriedFromPrevious=void 0);var Ye=Te.length,Pt=Te.charCodeAt(Ye-1);!ze&&(Pt===je||Pt>=55296&&Pt<=56319)&&(this.carriedFromPrevious=Te[Ye-1],Ye--,Te=Te.slice(0,Ye));var Ut=this.stateTable;for(this.chunk=Te,this.i=0;this.i=Te.length)return P;var Ye=Te.charCodeAt(ze);if(this.column++,Ye<55296){if(Ye>=Ze||Ye===_t)return Ye;switch(Ye){case K:return this.line++,this.column=0,this.positionAtNewLine=this.position,K;case je:return Te.charCodeAt(ze+1)===K&&(this.i=ze+2),this.line++,this.column=0,this.positionAtNewLine=this.position,O;default:return this.fail("disallowed character."),Ye}}if(Ye>56319)return Ye>=57344&&Ye<=65533||this.fail("disallowed character."),Ye;var Pt=65536+(Ye-55296)*1024+(Te.charCodeAt(ze+1)-56320);return this.i=ze+2,Pt>1114111&&this.fail("disallowed character."),Pt}},{key:"getCode11",value:function(){var Te=this.chunk,ze=this.i;if(this.prevI=ze,this.i=ze+1,ze>=Te.length)return P;var Ye=Te.charCodeAt(ze);if(this.column++,Ye<55296){if(Ye>31&&Ye<127||Ye>159&&Ye!==We||Ye===_t)return Ye;switch(Ye){case K:return this.line++,this.column=0,this.positionAtNewLine=this.position,K;case je:{var Pt=Te.charCodeAt(ze+1);(Pt===K||Pt===Se)&&(this.i=ze+2)}case Se:case We:return this.line++,this.column=0,this.positionAtNewLine=this.position,O;default:return this.fail("disallowed character."),Ye}}if(Ye>56319)return Ye>=57344&&Ye<=65533||this.fail("disallowed character."),Ye;var Ut=65536+(Ye-55296)*1024+(Te.charCodeAt(ze+1)-56320);return this.i=ze+2,Ut>1114111&&this.fail("disallowed character."),Ut}},{key:"getCodeNorm",value:function(){var Te=this.getCode();return Te===O?K:Te}},{key:"unget",value:function(){this.i=this.prevI,this.column--}},{key:"captureTo",value:function(Te){for(var ze=this.i,Ye=this.chunk;;){var Pt=this.getCode(),Ut=Pt===O,nr=Ut?K:Pt;if(nr===P||Te.includes(nr))return this.text+=Ye.slice(ze,this.prevI),nr;Ut&&(this.text+="".concat(Ye.slice(ze,this.prevI),` +`),ze=this.i)}}},{key:"captureToChar",value:function(Te){for(var ze=this.i,Ye=this.chunk;;){var Pt=this.getCode();switch(Pt){case O:this.text+="".concat(Ye.slice(ze,this.prevI),` +`),ze=this.i,Pt=K;break;case P:return this.text+=Ye.slice(ze),!1}if(Pt===Te)return this.text+=Ye.slice(ze,this.prevI),!0}}},{key:"captureNameChars",value:function(){for(var Te=this.chunk,ze=this.i;;){var Ye=this.getCode();if(Ye===P)return this.name+=Te.slice(ze),P;if(!f(Ye))return this.name+=Te.slice(ze,this.prevI),Ye===O?K:Ye}}},{key:"skipSpaces",value:function(){for(;;){var Te=this.getCodeNorm();if(Te===P||!o(Te))return Te}}},{key:"setXMLVersion",value:function(Te){this.currentXMLVersion=Te,Te==="1.0"?(this.isChar=s,this.getCode=this.getCode10):(this.isChar=T,this.getCode=this.getCode11)}},{key:"sBegin",value:function(){this.chunk.charCodeAt(0)===65279&&(this.i++,this.column++),this.state=H}},{key:"sBeginWhitespace",value:function(){var Te=this.i,ze=this.skipSpaces();switch(this.prevI!==Te&&(this.xmlDeclPossible=!1),ze){case Lt:if(this.state=J,this.text.length!==0)throw new Error("no-empty text at start");break;case P:break;default:this.unget(),this.state=ee,this.xmlDeclPossible=!1}}},{key:"sDoctype",value:function(){var Te,ze=this.captureTo(He);switch(ze){case ye:{(Te=this.doctypeHandler)===null||Te===void 0||Te.call(this,this.text),this.text="",this.state=ee,this.doctype=!0;break}case P:break;default:this.text+=String.fromCodePoint(ze),ze===we?this.state=X:Je(ze)&&(this.state=z,this.q=ze)}}},{key:"sDoctypeQuote",value:function(){var Te=this.q;this.captureToChar(Te)&&(this.text+=String.fromCodePoint(Te),this.q=null,this.state=V)}},{key:"sDTD",value:function(){var Te=this.captureTo($e);Te!==P&&(this.text+=String.fromCodePoint(Te),Te===Ee?this.state=V:Te===Lt?this.state=N:Je(Te)&&(this.state=I,this.q=Te))}},{key:"sDTDQuoted",value:function(){var Te=this.q;this.captureToChar(Te)&&(this.text+=String.fromCodePoint(Te),this.state=X,this.q=null)}},{key:"sDTDOpenWaka",value:function(){var Te=this.getCodeNorm();switch(this.text+=String.fromCodePoint(Te),Te){case pe:this.state=U,this.openWakaBang="";break;case ve:this.state=ne;break;default:this.state=X}}},{key:"sDTDOpenWakaBang",value:function(){var Te=String.fromCodePoint(this.getCodeNorm()),ze=this.openWakaBang+=Te;this.text+=Te,ze!=="-"&&(this.state=ze==="--"?G:X,this.openWakaBang="")}},{key:"sDTDComment",value:function(){this.captureToChar(ut)&&(this.text+="-",this.state=te)}},{key:"sDTDCommentEnding",value:function(){var Te=this.getCodeNorm();this.text+=String.fromCodePoint(Te),this.state=Te===ut?re:G}},{key:"sDTDCommentEnded",value:function(){var Te=this.getCodeNorm();this.text+=String.fromCodePoint(Te),Te===ye?this.state=X:(this.fail("malformed comment."),this.state=G)}},{key:"sDTDPI",value:function(){this.captureToChar(ve)&&(this.text+="?",this.state=ge)}},{key:"sDTDPIEnding",value:function(){var Te=this.getCodeNorm();this.text+=String.fromCodePoint(Te),Te===ye&&(this.state=X)}},{key:"sText",value:function(){this.tags.length!==0?this.handleTextInRoot():this.handleTextOutsideRoot()}},{key:"sEntity",value:function(){var Te=this.i,ze=this.chunk;e:for(;;)switch(this.getCode()){case O:this.entity+="".concat(ze.slice(Te,this.prevI),` +`),Te=this.i;break;case Bt:{var Ye=this.entityReturnState,Pt=this.entity+ze.slice(Te,this.prevI);this.state=Ye;var Ut=void 0;Pt===""?(this.fail("empty entity name."),Ut="&;"):(Ut=this.parseEntity(Pt),this.entity=""),(Ye!==ee||this.textHandler!==void 0)&&(this.text+=Ut);break e}case P:this.entity+=ze.slice(Te);break e}}},{key:"sOpenWaka",value:function(){var Te=this.getCode();if(c(Te))this.state=tt,this.unget(),this.xmlDeclPossible=!1;else switch(Te){case bt:this.state=oe,this.xmlDeclPossible=!1;break;case pe:this.state=q,this.openWakaBang="",this.xmlDeclPossible=!1;break;case ve:this.state=Y;break;default:this.fail("disallowed character in tag name"),this.state=ee,this.xmlDeclPossible=!1}}},{key:"sOpenWakaBang",value:function(){switch(this.openWakaBang+=String.fromCodePoint(this.getCodeNorm()),this.openWakaBang){case"[CDATA[":!this.sawRoot&&!this.reportedTextBeforeRoot&&(this.fail("text data outside of root node."),this.reportedTextBeforeRoot=!0),this.closedRoot&&!this.reportedTextAfterRoot&&(this.fail("text data outside of root node."),this.reportedTextAfterRoot=!0),this.state=fe,this.openWakaBang="";break;case"--":this.state=de,this.openWakaBang="";break;case"DOCTYPE":this.state=V,(this.doctype||this.sawRoot)&&this.fail("inappropriately located doctype declaration."),this.openWakaBang="";break;default:this.openWakaBang.length>=7&&this.fail("incorrect syntax.")}}},{key:"sComment",value:function(){this.captureToChar(ut)&&(this.state=xe)}},{key:"sCommentEnding",value:function(){var Te,ze=this.getCodeNorm();ze===ut?(this.state=ae,(Te=this.commentHandler)===null||Te===void 0||Te.call(this,this.text),this.text=""):(this.text+="-".concat(String.fromCodePoint(ze)),this.state=de)}},{key:"sCommentEnded",value:function(){var Te=this.getCodeNorm();Te!==ye?(this.fail("malformed comment."),this.text+="--".concat(String.fromCodePoint(Te)),this.state=de):this.state=ee}},{key:"sCData",value:function(){this.captureToChar(Ee)&&(this.state=Ne)}},{key:"sCDataEnding",value:function(){var Te=this.getCodeNorm();Te===Ee?this.state=ie:(this.text+="]".concat(String.fromCodePoint(Te)),this.state=fe)}},{key:"sCDataEnding2",value:function(){var Te,ze=this.getCodeNorm();switch(ze){case ye:{(Te=this.cdataHandler)===null||Te===void 0||Te.call(this,this.text),this.text="",this.state=ee;break}case Ee:this.text+="]";break;default:this.text+="]]".concat(String.fromCodePoint(ze)),this.state=fe}}},{key:"sPIFirstChar",value:function(){var Te=this.getCodeNorm();this.nameStartCheck(Te)?(this.piTarget+=String.fromCodePoint(Te),this.state=Z):Te===ve||o(Te)?(this.fail("processing instruction without a target."),this.state=Te===ve?Re:le):(this.fail("disallowed character in processing instruction name."),this.piTarget+=String.fromCodePoint(Te),this.state=Z)}},{key:"sPIRest",value:function(){for(var Te=this.chunk,ze=this.i;;){var Ye=this.getCodeNorm();if(Ye===P){this.piTarget+=Te.slice(ze);return}if(!this.nameCheck(Ye)){this.piTarget+=Te.slice(ze,this.prevI);var Pt=Ye===ve;Pt||o(Ye)?this.piTarget==="xml"?(this.xmlDeclPossible||this.fail("an XML declaration must be at the start of the document."),this.state=Pt?et:Ce):this.state=Pt?Re:le:(this.fail("disallowed character in processing instruction name."),this.piTarget+=String.fromCodePoint(Ye));break}}}},{key:"sPIBody",value:function(){if(this.text.length===0){var Te=this.getCodeNorm();Te===ve?this.state=Re:o(Te)||(this.text=String.fromCodePoint(Te))}else this.captureToChar(ve)&&(this.state=Re)}},{key:"sPIEnding",value:function(){var Te,ze=this.getCodeNorm();if(ze===ye){var Ye=this.piTarget;Ye.toLowerCase()==="xml"&&this.fail("the XML declaration must appear at the start of the document."),(Te=this.piHandler)===null||Te===void 0||Te.call(this,{target:Ye,body:this.text}),this.piTarget=this.text="",this.state=ee}else ze===ve?this.text+="?":(this.text+="?".concat(String.fromCodePoint(ze)),this.state=le);this.xmlDeclPossible=!1}},{key:"sXMLDeclNameStart",value:function(){var Te=this.skipSpaces();if(Te===ve){this.state=et;return}Te!==P&&(this.state=Ge,this.name=String.fromCodePoint(Te))}},{key:"sXMLDeclName",value:function(){var Te=this.captureTo(nt);if(Te===ve){this.state=et,this.name+=this.text,this.text="",this.fail("XML declaration is incomplete.");return}if(o(Te)||Te===ue){if(this.name+=this.text,this.text="",!this.xmlDeclExpects.includes(this.name))switch(this.name.length){case 0:this.fail("did not expect any more name/value pairs.");break;case 1:this.fail("expected the name ".concat(this.xmlDeclExpects[0],"."));break;default:this.fail("expected one of ".concat(this.xmlDeclExpects.join(", ")))}this.state=Te===ue?vt:st}}},{key:"sXMLDeclEq",value:function(){var Te=this.getCodeNorm();if(Te===ve){this.state=et,this.fail("XML declaration is incomplete.");return}o(Te)||(Te!==ue&&this.fail("value required."),this.state=vt)}},{key:"sXMLDeclValueStart",value:function(){var Te=this.getCodeNorm();if(Te===ve){this.state=et,this.fail("XML declaration is incomplete.");return}o(Te)||(Je(Te)?this.q=Te:(this.fail("value must be quoted."),this.q=Ze),this.state=ft)}},{key:"sXMLDeclValue",value:function(){var Te=this.captureTo([this.q,ve]);if(Te===ve){this.state=et,this.text="",this.fail("XML declaration is incomplete.");return}if(Te!==P){var ze=this.text;switch(this.text="",this.name){case"version":{this.xmlDeclExpects=["encoding","standalone"];var Ye=ze;this.xmlDecl.version=Ye,/^1\.[0-9]+$/.test(Ye)?this.opt.forceXMLVersion||this.setXMLVersion(Ye):this.fail("version number must match /^1\\.[0-9]+$/.");break}case"encoding":/^[A-Za-z][A-Za-z0-9._-]*$/.test(ze)||this.fail("encoding value must match /^[A-Za-z0-9][A-Za-z0-9._-]*$/."),this.xmlDeclExpects=["standalone"],this.xmlDecl.encoding=ze;break;case"standalone":ze!=="yes"&&ze!=="no"&&this.fail('standalone value must match "yes" or "no".'),this.xmlDeclExpects=[],this.xmlDecl.standalone=ze;break}this.name="",this.state=pt}}},{key:"sXMLDeclSeparator",value:function(){var Te=this.getCodeNorm();if(Te===ve){this.state=et;return}o(Te)||(this.fail("whitespace required."),this.unget()),this.state=Ce}},{key:"sXMLDeclEnding",value:function(){var Te,ze=this.getCodeNorm();ze===ye?(this.piTarget!=="xml"?this.fail("processing instructions are not allowed before root."):this.name!=="version"&&this.xmlDeclExpects.includes("version")&&this.fail("XML declaration must contain a version."),(Te=this.xmldeclHandler)===null||Te===void 0||Te.call(this,this.xmlDecl),this.name="",this.piTarget=this.text="",this.state=ee):this.fail("The character ? is disallowed anywhere in XML declarations."),this.xmlDeclPossible=!1}},{key:"sOpenTag",value:function(){var Te,ze=this.captureNameChars();if(ze!==P){var Ye=this.tag={name:this.name,attributes:Object.create(null)};switch(this.name="",this.xmlnsOpt&&(this.topNS=Ye.ns=Object.create(null)),(Te=this.openTagStartHandler)===null||Te===void 0||Te.call(this,Ye),this.sawRoot=!0,!this.fragmentOpt&&this.closedRoot&&this.fail("documents may contain only one root."),ze){case ye:this.openTag();break;case bt:this.state=ct;break;default:o(ze)||this.fail("disallowed character in tag name."),this.state=gt}}}},{key:"sOpenTagSlash",value:function(){this.getCode()===ye?this.openSelfClosingTag():(this.fail("forward-slash in opening tag not followed by >."),this.state=gt)}},{key:"sAttrib",value:function(){var Te=this.skipSpaces();Te!==P&&(c(Te)?(this.unget(),this.state=he):Te===ye?this.openTag():Te===bt?this.state=ct:this.fail("disallowed character in attribute name."))}},{key:"sAttribName",value:function(){var Te=this.captureNameChars();Te===ue?this.state=Oe:o(Te)?this.state=De:Te===ye?(this.fail("attribute without value."),this.pushAttrib(this.name,this.name),this.name=this.text="",this.openTag()):Te!==P&&this.fail("disallowed character in attribute name.")}},{key:"sAttribNameSawWhite",value:function(){var Te=this.skipSpaces();switch(Te){case P:return;case ue:this.state=Oe;break;default:this.fail("attribute without value."),this.text="",this.name="",Te===ye?this.openTag():c(Te)?(this.unget(),this.state=he):(this.fail("disallowed character in attribute name."),this.state=gt)}}},{key:"sAttribValue",value:function(){var Te=this.getCodeNorm();Je(Te)?(this.q=Te,this.state=Ie):o(Te)||(this.fail("unquoted attribute value."),this.state=Le,this.unget())}},{key:"sAttribValueQuoted",value:function(){for(var Te=this.q,ze=this.chunk,Ye=this.i;;)switch(this.getCode()){case Te:this.pushAttrib(this.name,this.text+ze.slice(Ye,this.prevI)),this.name=this.text="",this.q=null,this.state=be;return;case Xe:this.text+=ze.slice(Ye,this.prevI),this.state=se,this.entityReturnState=Ie;return;case K:case O:case _t:this.text+="".concat(ze.slice(Ye,this.prevI)," "),Ye=this.i;break;case Lt:this.text+=ze.slice(Ye,this.prevI),this.fail("disallowed character.");return;case P:this.text+=ze.slice(Ye);return}}},{key:"sAttribValueClosed",value:function(){var Te=this.getCodeNorm();o(Te)?this.state=gt:Te===ye?this.openTag():Te===bt?this.state=ct:c(Te)?(this.fail("no whitespace between attributes."),this.unget(),this.state=he):this.fail("disallowed character in attribute name.")}},{key:"sAttribValueUnquoted",value:function(){var Te=this.captureTo(Et);switch(Te){case Xe:this.state=se,this.entityReturnState=Le;break;case Lt:this.fail("disallowed character.");break;case P:break;default:this.text.includes("]]>")&&this.fail('the string "]]>" is disallowed in char data.'),this.pushAttrib(this.name,this.text),this.name=this.text="",Te===ye?this.openTag():this.state=gt}}},{key:"sCloseTag",value:function(){var Te=this.captureNameChars();Te===ye?this.closeTag():o(Te)?this.state=Qe:Te!==P&&this.fail("disallowed character in closing tag.")}},{key:"sCloseTagSawWhite",value:function(){switch(this.skipSpaces()){case ye:this.closeTag();break;case P:break;default:this.fail("disallowed character in closing tag.")}}},{key:"handleTextInRoot",value:function(){var Te=this.i,ze=this.forbiddenState,Ye=this.chunk,Pt=this.textHandler;e:for(;;)switch(this.getCode()){case Lt:{if(this.state=J,Pt!==void 0){var Ut=this.text,nr=Ye.slice(Te,this.prevI);Ut.length!==0?(Pt(Ut+nr),this.text=""):nr.length!==0&&Pt(nr)}ze=zt;break e}case Xe:this.state=se,this.entityReturnState=ee,Pt!==void 0&&(this.text+=Ye.slice(Te,this.prevI)),ze=zt;break e;case Ee:switch(ze){case zt:ze=or;break;case or:ze=gr;break;case gr:break;default:throw new Error("impossible state")}break;case ye:ze===gr&&this.fail('the string "]]>" is disallowed in char data.'),ze=zt;break;case O:Pt!==void 0&&(this.text+="".concat(Ye.slice(Te,this.prevI),` +`)),Te=this.i,ze=zt;break;case P:Pt!==void 0&&(this.text+=Ye.slice(Te));break e;default:ze=zt}this.forbiddenState=ze}},{key:"handleTextOutsideRoot",value:function(){var Te=this.i,ze=this.chunk,Ye=this.textHandler,Pt=!1;e:for(;;){var Ut=this.getCode();switch(Ut){case Lt:{if(this.state=J,Ye!==void 0){var nr=this.text,Br=ze.slice(Te,this.prevI);nr.length!==0?(Ye(nr+Br),this.text=""):Br.length!==0&&Ye(Br)}break e}case Xe:this.state=se,this.entityReturnState=ee,Ye!==void 0&&(this.text+=ze.slice(Te,this.prevI)),Pt=!0;break e;case O:Ye!==void 0&&(this.text+="".concat(ze.slice(Te,this.prevI),` +`)),Te=this.i;break;case P:Ye!==void 0&&(this.text+=ze.slice(Te));break e;default:o(Ut)||(Pt=!0)}}Pt&&(!this.sawRoot&&!this.reportedTextBeforeRoot&&(this.fail("text data outside of root node."),this.reportedTextBeforeRoot=!0),this.closedRoot&&!this.reportedTextAfterRoot&&(this.fail("text data outside of root node."),this.reportedTextAfterRoot=!0))}},{key:"pushAttribNS",value:function(Te,ze){var Ye,Pt=this.qname(Te),Ut=Pt.prefix,nr=Pt.local,Br={name:Te,prefix:Ut,local:nr,value:ze};if(this.attribList.push(Br),(Ye=this.attributeHandler)===null||Ye===void 0||Ye.call(this,Br),Ut==="xmlns"){var qr=ze.trim();this.currentXMLVersion==="1.0"&&qr===""&&this.fail("invalid attempt to undefine prefix in XML 1.0"),this.topNS[nr]=qr,Rt(this,nr,qr)}else if(Te==="xmlns"){var ri=ze.trim();this.topNS[""]=ri,Rt(this,"",ri)}}},{key:"pushAttribPlain",value:function(Te,ze){var Ye,Pt={name:Te,value:ze};this.attribList.push(Pt),(Ye=this.attributeHandler)===null||Ye===void 0||Ye.call(this,Pt)}},{key:"end",value:function(){var Te,ze;this.sawRoot||this.fail("document must contain a root element.");for(var Ye=this.tags;Ye.length>0;){var Pt=Ye.pop();this.fail("unclosed tag: ".concat(Pt.name))}this.state!==F&&this.state!==ee&&this.fail("unexpected end.");var Ut=this.text;return Ut.length!==0&&((Te=this.textHandler)===null||Te===void 0||Te.call(this,Ut),this.text=""),this._closed=!0,(ze=this.endHandler)===null||ze===void 0||ze.call(this),this._init(),this}},{key:"resolve",value:function(Te){var ze,Ye,Pt=this.topNS[Te];if(Pt!==void 0)return Pt;for(var Ut=this.tags,nr=Ut.length-1;nr>=0;nr--)if(Pt=Ut[nr].ns[Te],Pt!==void 0)return Pt;return Pt=this.ns[Te],Pt!==void 0?Pt:(Ye=(ze=this.opt).resolvePrefix)===null||Ye===void 0?void 0:Ye.call(ze,Te)}},{key:"qname",value:function(Te){var ze=Te.indexOf(":");if(ze===-1)return{prefix:"",local:Te};var Ye=Te.slice(ze+1),Pt=Te.slice(0,ze);return(Pt===""||Ye===""||Ye.includes(":"))&&this.fail("malformed name: ".concat(Te,".")),{prefix:Pt,local:Ye}}},{key:"processAttribsNS",value:function(){var Te,ze=this.attribList,Ye=this.tag;{var Pt=this.qname(Ye.name),Ut=Pt.prefix,nr=Pt.local;Ye.prefix=Ut,Ye.local=nr;var Br=Ye.uri=(Te=this.resolve(Ut))!==null&&Te!==void 0?Te:"";Ut!==""&&(Ut==="xmlns"&&this.fail('tags may not have "xmlns" as prefix.'),Br===""&&(this.fail("unbound namespace prefix: ".concat(JSON.stringify(Ut),".")),Ye.uri=Ut))}if(ze.length!==0){var qr=Ye.attributes,ri=new Set,Rn=a(ze),Ka;try{for(Rn.s();!(Ka=Rn.n()).done;){var Dn=Ka.value,Zi=Dn.name,hi=Dn.prefix,Ya=Dn.local,di=void 0,pi=void 0;hi===""?(di=Zi==="xmlns"?M:"",pi=Zi):(di=this.resolve(hi),di===void 0&&(this.fail("unbound namespace prefix: ".concat(JSON.stringify(hi),".")),di=hi),pi="{".concat(di,"}").concat(Ya)),ri.has(pi)&&this.fail("duplicate attribute: ".concat(pi,".")),ri.add(pi),Dn.uri=di,qr[Zi]=Dn}}catch(Ji){Rn.e(Ji)}finally{Rn.f()}this.attribList=[]}}},{key:"processAttribsPlain",value:function(){var Te=this.attribList,ze=this.tag.attributes,Ye=a(Te),Pt;try{for(Ye.s();!(Pt=Ye.n()).done;){var Ut=Pt.value,nr=Ut.name,Br=Ut.value;ze[nr]!==void 0&&this.fail("duplicate attribute: ".concat(nr,".")),ze[nr]=Br}}catch(qr){Ye.e(qr)}finally{Ye.f()}this.attribList=[]}},{key:"openTag",value:function(){var Te;this.processAttribs();var ze=this.tags,Ye=this.tag;Ye.isSelfClosing=!1,(Te=this.openTagHandler)===null||Te===void 0||Te.call(this,Ye),ze.push(Ye),this.state=ee,this.name=""}},{key:"openSelfClosingTag",value:function(){var Te,ze,Ye;this.processAttribs();var Pt=this.tags,Ut=this.tag;Ut.isSelfClosing=!0,(Te=this.openTagHandler)===null||Te===void 0||Te.call(this,Ut),(ze=this.closeTagHandler)===null||ze===void 0||ze.call(this,Ut);var nr=this.tag=(Ye=Pt[Pt.length-1])!==null&&Ye!==void 0?Ye:null;nr===null&&(this.closedRoot=!0),this.state=ee,this.name=""}},{key:"closeTag",value:function(){var Te=this.tags,ze=this.name;if(this.state=ee,this.name="",ze===""){this.fail("weird empty close tag."),this.text+="";return}for(var Ye=this.closeTagHandler,Pt=Te.length;Pt-- >0;){var Ut=this.tag=Te.pop();if(this.topNS=Ut.ns,Ye==null||Ye(Ut),Ut.name===ze)break;this.fail("unexpected close tag.")}Pt===0?this.closedRoot=!0:Pt<0&&(this.fail("unmatched closing tag: ".concat(ze,".")),this.text+=""))}},{key:"parseEntity",value:function(Te){if(Te[0]!=="#"){var ze=this.ENTITIES[Te];return ze!==void 0?ze:(this.fail(this.isName(Te)?"undefined entity.":"disallowed character in entity name."),"&".concat(Te,";"))}var Ye=NaN;return Te[1]==="x"&&/^#x[0-9a-f]+$/i.test(Te)?Ye=parseInt(Te.slice(2),16):/^#[0-9]+$/.test(Te)&&(Ye=parseInt(Te.slice(1),10)),this.isChar(Ye)?String.fromCodePoint(Ye):(this.fail("malformed character entity."),"&".concat(Te,";"))}},{key:"closed",get:function(){return this._closed}},{key:"position",get:function(){return this.chunkPosition+this.i}},{key:"columnIndex",get:function(){return this.position-this.positionAtNewLine}}]),Mt}();i.SaxesParser=Kr},{"xmlchars/xml/1.0/ed5":541,"xmlchars/xml/1.1/ed2":542,"xmlchars/xmlns/1.0/ed3":543}],497:[function(e,n,i){(function(a){n.exports=typeof a=="function"?a:function(){var d=[].slice.apply(arguments);d.splice(1,0,0),setTimeout.apply(null,d)}}).call(this,e("timers").setImmediate)},{timers:521}],498:[function(e,n,i){var a=e("safe-buffer").Buffer;function l(d,m){this._block=a.alloc(d),this._finalSize=m,this._blockSize=d,this._len=0}l.prototype.update=function(d,m){typeof d=="string"&&(m=m||"utf8",d=a.from(d,m));for(var b=this._block,h=this._blockSize,_=d.length,g=this._len,y=0;y<_;){for(var x=g%h,p=Math.min(_-y,h-x),S=0;S=this._finalSize&&(this._update(this._block),this._block.fill(0));var b=this._len*8;if(b<=4294967295)this._block.writeUInt32BE(b,this._blockSize-4);else{var h=(b&4294967295)>>>0,_=(b-h)/4294967296;this._block.writeUInt32BE(_,this._blockSize-8),this._block.writeUInt32BE(h,this._blockSize-4)}this._update(this._block);var g=this._hash();return d?g.toString(d):g},l.prototype._update=function(){throw new Error("_update must be implemented by subclass")},n.exports=l},{"safe-buffer":494}],499:[function(e,n,i){var a=n.exports=function(d){d=d.toLowerCase();var m=a[d];if(!m)throw new Error(d+" is not supported (we accept pull requests)");return new m};a.sha=e("./sha"),a.sha1=e("./sha1"),a.sha224=e("./sha224"),a.sha256=e("./sha256"),a.sha384=e("./sha384"),a.sha512=e("./sha512")},{"./sha":500,"./sha1":501,"./sha224":502,"./sha256":503,"./sha384":504,"./sha512":505}],500:[function(e,n,i){var a=e("inherits"),l=e("./hash"),d=e("safe-buffer").Buffer,m=[1518500249,1859775393,-1894007588,-899497514],b=new Array(80);function h(){this.init(),this._w=b,l.call(this,64,56)}a(h,l),h.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this};function _(x){return x<<5|x>>>27}function g(x){return x<<30|x>>>2}function y(x,p,S,w){return x===0?p&S|~p&w:x===2?p&S|p&w|S&w:p^S^w}h.prototype._update=function(x){for(var p=this._w,S=this._a|0,w=this._b|0,u=this._c|0,o=this._d|0,s=this._e|0,c=0;c<16;++c)p[c]=x.readInt32BE(c*4);for(;c<80;++c)p[c]=p[c-3]^p[c-8]^p[c-14]^p[c-16];for(var f=0;f<80;++f){var v=~~(f/20),k=_(S)+y(v,w,u,o)+s+p[f]+m[v]|0;s=o,o=u,u=g(w),w=S,S=k}this._a=S+this._a|0,this._b=w+this._b|0,this._c=u+this._c|0,this._d=o+this._d|0,this._e=s+this._e|0},h.prototype._hash=function(){var x=d.allocUnsafe(20);return x.writeInt32BE(this._a|0,0),x.writeInt32BE(this._b|0,4),x.writeInt32BE(this._c|0,8),x.writeInt32BE(this._d|0,12),x.writeInt32BE(this._e|0,16),x},n.exports=h},{"./hash":498,inherits:387,"safe-buffer":494}],501:[function(e,n,i){var a=e("inherits"),l=e("./hash"),d=e("safe-buffer").Buffer,m=[1518500249,1859775393,-1894007588,-899497514],b=new Array(80);function h(){this.init(),this._w=b,l.call(this,64,56)}a(h,l),h.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this};function _(p){return p<<1|p>>>31}function g(p){return p<<5|p>>>27}function y(p){return p<<30|p>>>2}function x(p,S,w,u){return p===0?S&w|~S&u:p===2?S&w|S&u|w&u:S^w^u}h.prototype._update=function(p){for(var S=this._w,w=this._a|0,u=this._b|0,o=this._c|0,s=this._d|0,c=this._e|0,f=0;f<16;++f)S[f]=p.readInt32BE(f*4);for(;f<80;++f)S[f]=_(S[f-3]^S[f-8]^S[f-14]^S[f-16]);for(var v=0;v<80;++v){var k=~~(v/20),T=g(w)+x(k,u,o,s)+c+S[v]+m[k]|0;c=s,s=o,o=y(u),u=w,w=T}this._a=w+this._a|0,this._b=u+this._b|0,this._c=o+this._c|0,this._d=s+this._d|0,this._e=c+this._e|0},h.prototype._hash=function(){var p=d.allocUnsafe(20);return p.writeInt32BE(this._a|0,0),p.writeInt32BE(this._b|0,4),p.writeInt32BE(this._c|0,8),p.writeInt32BE(this._d|0,12),p.writeInt32BE(this._e|0,16),p},n.exports=h},{"./hash":498,inherits:387,"safe-buffer":494}],502:[function(e,n,i){var a=e("inherits"),l=e("./sha256"),d=e("./hash"),m=e("safe-buffer").Buffer,b=new Array(64);function h(){this.init(),this._w=b,d.call(this,64,56)}a(h,l),h.prototype.init=function(){return this._a=3238371032,this._b=914150663,this._c=812702999,this._d=4144912697,this._e=4290775857,this._f=1750603025,this._g=1694076839,this._h=3204075428,this},h.prototype._hash=function(){var _=m.allocUnsafe(28);return _.writeInt32BE(this._a,0),_.writeInt32BE(this._b,4),_.writeInt32BE(this._c,8),_.writeInt32BE(this._d,12),_.writeInt32BE(this._e,16),_.writeInt32BE(this._f,20),_.writeInt32BE(this._g,24),_},n.exports=h},{"./hash":498,"./sha256":503,inherits:387,"safe-buffer":494}],503:[function(e,n,i){var a=e("inherits"),l=e("./hash"),d=e("safe-buffer").Buffer,m=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],b=new Array(64);function h(){this.init(),this._w=b,l.call(this,64,56)}a(h,l),h.prototype.init=function(){return this._a=1779033703,this._b=3144134277,this._c=1013904242,this._d=2773480762,this._e=1359893119,this._f=2600822924,this._g=528734635,this._h=1541459225,this};function _(w,u,o){return o^w&(u^o)}function g(w,u,o){return w&u|o&(w|u)}function y(w){return(w>>>2|w<<30)^(w>>>13|w<<19)^(w>>>22|w<<10)}function x(w){return(w>>>6|w<<26)^(w>>>11|w<<21)^(w>>>25|w<<7)}function p(w){return(w>>>7|w<<25)^(w>>>18|w<<14)^w>>>3}function S(w){return(w>>>17|w<<15)^(w>>>19|w<<13)^w>>>10}h.prototype._update=function(w){for(var u=this._w,o=this._a|0,s=this._b|0,c=this._c|0,f=this._d|0,v=this._e|0,k=this._f|0,T=this._g|0,C=this._h|0,D=0;D<16;++D)u[D]=w.readInt32BE(D*4);for(;D<64;++D)u[D]=S(u[D-2])+u[D-7]+p(u[D-15])+u[D-16]|0;for(var j=0;j<64;++j){var L=C+x(v)+_(v,k,T)+m[j]+u[j]|0,M=y(o)+g(o,s,c)|0;C=T,T=k,k=v,v=f+L|0,f=c,c=s,s=o,o=L+M|0}this._a=o+this._a|0,this._b=s+this._b|0,this._c=c+this._c|0,this._d=f+this._d|0,this._e=v+this._e|0,this._f=k+this._f|0,this._g=T+this._g|0,this._h=C+this._h|0},h.prototype._hash=function(){var w=d.allocUnsafe(32);return w.writeInt32BE(this._a,0),w.writeInt32BE(this._b,4),w.writeInt32BE(this._c,8),w.writeInt32BE(this._d,12),w.writeInt32BE(this._e,16),w.writeInt32BE(this._f,20),w.writeInt32BE(this._g,24),w.writeInt32BE(this._h,28),w},n.exports=h},{"./hash":498,inherits:387,"safe-buffer":494}],504:[function(e,n,i){var a=e("inherits"),l=e("./sha512"),d=e("./hash"),m=e("safe-buffer").Buffer,b=new Array(160);function h(){this.init(),this._w=b,d.call(this,128,112)}a(h,l),h.prototype.init=function(){return this._ah=3418070365,this._bh=1654270250,this._ch=2438529370,this._dh=355462360,this._eh=1731405415,this._fh=2394180231,this._gh=3675008525,this._hh=1203062813,this._al=3238371032,this._bl=914150663,this._cl=812702999,this._dl=4144912697,this._el=4290775857,this._fl=1750603025,this._gl=1694076839,this._hl=3204075428,this},h.prototype._hash=function(){var _=m.allocUnsafe(48);function g(y,x,p){_.writeInt32BE(y,p),_.writeInt32BE(x,p+4)}return g(this._ah,this._al,0),g(this._bh,this._bl,8),g(this._ch,this._cl,16),g(this._dh,this._dl,24),g(this._eh,this._el,32),g(this._fh,this._fl,40),_},n.exports=h},{"./hash":498,"./sha512":505,inherits:387,"safe-buffer":494}],505:[function(e,n,i){var a=e("inherits"),l=e("./hash"),d=e("safe-buffer").Buffer,m=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],b=new Array(160);function h(){this.init(),this._w=b,l.call(this,128,112)}a(h,l),h.prototype.init=function(){return this._ah=1779033703,this._bh=3144134277,this._ch=1013904242,this._dh=2773480762,this._eh=1359893119,this._fh=2600822924,this._gh=528734635,this._hh=1541459225,this._al=4089235720,this._bl=2227873595,this._cl=4271175723,this._dl=1595750129,this._el=2917565137,this._fl=725511199,this._gl=4215389547,this._hl=327033209,this};function _(s,c,f){return f^s&(c^f)}function g(s,c,f){return s&c|f&(s|c)}function y(s,c){return(s>>>28|c<<4)^(c>>>2|s<<30)^(c>>>7|s<<25)}function x(s,c){return(s>>>14|c<<18)^(s>>>18|c<<14)^(c>>>9|s<<23)}function p(s,c){return(s>>>1|c<<31)^(s>>>8|c<<24)^s>>>7}function S(s,c){return(s>>>1|c<<31)^(s>>>8|c<<24)^(s>>>7|c<<25)}function w(s,c){return(s>>>19|c<<13)^(c>>>29|s<<3)^s>>>6}function u(s,c){return(s>>>19|c<<13)^(c>>>29|s<<3)^(s>>>6|c<<26)}function o(s,c){return s>>>0>>0?1:0}h.prototype._update=function(s){for(var c=this._w,f=this._ah|0,v=this._bh|0,k=this._ch|0,T=this._dh|0,C=this._eh|0,D=this._fh|0,j=this._gh|0,L=this._hh|0,M=this._al|0,B=this._bl|0,R=this._cl|0,P=this._dl|0,O=this._el|0,F=this._fl|0,H=this._gl|0,V=this._hl|0,z=0;z<32;z+=2)c[z]=s.readInt32BE(z*4),c[z+1]=s.readInt32BE(z*4+4);for(;z<160;z+=2){var X=c[z-30],I=c[z-15*2+1],N=p(X,I),U=S(I,X);X=c[z-2*2],I=c[z-2*2+1];var G=w(X,I),te=u(I,X),re=c[z-7*2],ne=c[z-7*2+1],ge=c[z-16*2],ee=c[z-16*2+1],se=U+ne|0,J=N+re+o(se,U)|0;se=se+te|0,J=J+G+o(se,te)|0,se=se+ee|0,J=J+ge+o(se,ee)|0,c[z]=J,c[z+1]=se}for(var q=0;q<160;q+=2){J=c[q],se=c[q+1];var de=g(f,v,k),xe=g(M,B,R),ae=y(f,M),fe=y(M,f),Ne=x(C,O),ie=x(O,C),Y=m[q],Z=m[q+1],le=_(C,D,j),Re=_(O,F,H),Ce=V+ie|0,Ge=L+Ne+o(Ce,V)|0;Ce=Ce+Re|0,Ge=Ge+le+o(Ce,Re)|0,Ce=Ce+Z|0,Ge=Ge+Y+o(Ce,Z)|0,Ce=Ce+se|0,Ge=Ge+J+o(Ce,se)|0;var st=fe+xe|0,vt=ae+de+o(st,fe)|0;L=j,V=H,j=D,H=F,D=C,F=O,O=P+Ce|0,C=T+Ge+o(O,P)|0,T=k,P=R,k=v,R=B,v=f,B=M,M=Ce+st|0,f=Ge+vt+o(M,Ce)|0}this._al=this._al+M|0,this._bl=this._bl+B|0,this._cl=this._cl+R|0,this._dl=this._dl+P|0,this._el=this._el+O|0,this._fl=this._fl+F|0,this._gl=this._gl+H|0,this._hl=this._hl+V|0,this._ah=this._ah+f+o(this._al,M)|0,this._bh=this._bh+v+o(this._bl,B)|0,this._ch=this._ch+k+o(this._cl,R)|0,this._dh=this._dh+T+o(this._dl,P)|0,this._eh=this._eh+C+o(this._el,O)|0,this._fh=this._fh+D+o(this._fl,F)|0,this._gh=this._gh+j+o(this._gl,H)|0,this._hh=this._hh+L+o(this._hl,V)|0},h.prototype._hash=function(){var s=d.allocUnsafe(64);function c(f,v,k){s.writeInt32BE(f,k),s.writeInt32BE(v,k+4)}return c(this._ah,this._al,0),c(this._bh,this._bl,8),c(this._ch,this._cl,16),c(this._dh,this._dl,24),c(this._eh,this._el,32),c(this._fh,this._fl,40),c(this._gh,this._gl,48),c(this._hh,this._hl,56),s},n.exports=h},{"./hash":498,inherits:387,"safe-buffer":494}],506:[function(e,n,i){n.exports=d;var a=e("events").EventEmitter,l=e("inherits");l(d,a),d.Readable=e("readable-stream/readable.js"),d.Writable=e("readable-stream/writable.js"),d.Duplex=e("readable-stream/duplex.js"),d.Transform=e("readable-stream/transform.js"),d.PassThrough=e("readable-stream/passthrough.js"),d.Stream=d;function d(){a.call(this)}d.prototype.pipe=function(m,b){var h=this;function _(u){m.writable&&m.write(u)===!1&&h.pause&&h.pause()}h.on("data",_);function g(){h.readable&&h.resume&&h.resume()}m.on("drain",g),!m._isStdio&&(!b||b.end!==!1)&&(h.on("end",x),h.on("close",p));var y=!1;function x(){y||(y=!0,m.end())}function p(){y||(y=!0,typeof m.destroy=="function"&&m.destroy())}function S(u){if(w(),a.listenerCount(this,"error")===0)throw u}h.on("error",S),m.on("error",S);function w(){h.removeListener("data",_),m.removeListener("drain",g),h.removeListener("end",x),h.removeListener("close",p),h.removeListener("error",S),m.removeListener("error",S),h.removeListener("end",w),h.removeListener("close",w),m.removeListener("close",w)}return h.on("end",w),h.on("close",w),m.on("close",w),m.emit("pipe",h),m}},{events:367,inherits:387,"readable-stream/duplex.js":507,"readable-stream/passthrough.js":516,"readable-stream/readable.js":517,"readable-stream/transform.js":518,"readable-stream/writable.js":519}],507:[function(e,n,i){n.exports=e("./lib/_stream_duplex.js")},{"./lib/_stream_duplex.js":508}],508:[function(e,n,i){var a=e("process-nextick-args"),l=Object.keys||function(S){var w=[];for(var u in S)w.push(u);return w};n.exports=y;var d=Object.create(e("core-util-is"));d.inherits=e("inherits");var m=e("./_stream_readable"),b=e("./_stream_writable");d.inherits(y,m);for(var h=l(b.prototype),_=0;_0?(typeof q!="string"&&!fe.objectMode&&Object.getPrototypeOf(q)!==g.prototype&&(q=x(q)),xe?fe.endEmitted?J.emit("error",new Error("stream.unshift() after end event")):D(J,fe,q,!0):fe.ended?J.emit("error",new Error("stream.push() after EOF")):(fe.reading=!1,fe.decoder&&!de?(q=fe.decoder.write(q),fe.objectMode||q.length!==0?D(J,fe,q,!1):H(J,fe)):D(J,fe,q,!1))):xe||(fe.reading=!1)}return L(fe)}function D(J,q,de,xe){q.flowing&&q.length===0&&!q.sync?(J.emit("data",de),J.read(0)):(q.length+=q.objectMode?1:de.length,xe?q.buffer.unshift(de):q.buffer.push(de),q.needReadable&&O(J)),H(J,q)}function j(J,q){var de;return!p(q)&&typeof q!="string"&&q!==void 0&&!J.objectMode&&(de=new TypeError("Invalid non-string/buffer chunk")),de}function L(J){return!J.ended&&(J.needReadable||J.length=M?J=M:(J--,J|=J>>>1,J|=J>>>2,J|=J>>>4,J|=J>>>8,J|=J>>>16,J++),J}function R(J,q){return J<=0||q.length===0&&q.ended?0:q.objectMode?1:J!==J?q.flowing&&q.length?q.buffer.head.data.length:q.length:(J>q.highWaterMark&&(q.highWaterMark=B(J)),J<=q.length?J:q.ended?q.length:(q.needReadable=!0,0))}T.prototype.read=function(J){u("read",J),J=parseInt(J,10);var q=this._readableState,de=J;if(J!==0&&(q.emittedReadable=!1),J===0&&q.needReadable&&(q.length>=q.highWaterMark||q.ended))return u("read: emitReadable",q.length,q.ended),q.length===0&&q.ended?ge(this):O(this),null;if(J=R(J,q),J===0&&q.ended)return q.length===0&&ge(this),null;var xe=q.needReadable;u("need readable",xe),(q.length===0||q.length-J0?ae=G(J,q):ae=null,ae===null?(q.needReadable=!0,J=0):q.length-=J,q.length===0&&(q.ended||(q.needReadable=!0),de!==J&&q.ended&&ge(this)),ae!==null&&this.emit("data",ae),ae};function P(J,q){if(!q.ended){if(q.decoder){var de=q.decoder.end();de&&de.length&&(q.buffer.push(de),q.length+=q.objectMode?1:de.length)}q.ended=!0,O(J)}}function O(J){var q=J._readableState;q.needReadable=!1,q.emittedReadable||(u("emitReadable",q.flowing),q.emittedReadable=!0,q.sync?d.nextTick(F,J):F(J))}function F(J){u("emit readable"),J.emit("readable"),U(J)}function H(J,q){q.readingMore||(q.readingMore=!0,d.nextTick(V,J,q))}function V(J,q){for(var de=q.length;!q.reading&&!q.flowing&&!q.ended&&q.length1&&se(xe.pipes,J)!==-1)&&!Z&&(u("false write response, pause",de._readableState.awaitDrain),de._readableState.awaitDrain++,Re=!0),de.pause())}function Ge(pt){u("onerror",pt),ft(),J.removeListener("error",Ge),h(J,"error")===0&&J.emit("error",pt)}v(J,"error",Ge);function st(){J.removeListener("finish",vt),ft()}J.once("close",st);function vt(){u("onfinish"),J.removeListener("close",st),ft()}J.once("finish",vt);function ft(){u("unpipe"),de.unpipe(J)}return J.emit("pipe",de),xe.flowing||(u("pipe resume"),de.resume()),J};function z(J){return function(){var q=J._readableState;u("pipeOnDrain",q.awaitDrain),q.awaitDrain&&q.awaitDrain--,q.awaitDrain===0&&h(J,"data")&&(q.flowing=!0,U(J))}}T.prototype.unpipe=function(J){var q=this._readableState,de={hasUnpiped:!1};if(q.pipesCount===0)return this;if(q.pipesCount===1)return J&&J!==q.pipes?this:(J||(J=q.pipes),q.pipes=null,q.pipesCount=0,q.flowing=!1,J&&J.emit("unpipe",this,de),this);if(!J){var xe=q.pipes,ae=q.pipesCount;q.pipes=null,q.pipesCount=0,q.flowing=!1;for(var fe=0;fe=q.length?(q.decoder?de=q.buffer.join(""):q.buffer.length===1?de=q.buffer.head.data:de=q.buffer.concat(q.length),q.buffer.clear()):de=te(J,q.buffer,q.decoder),de}function te(J,q,de){var xe;return Jfe.length?fe.length:J;if(Ne===fe.length?ae+=fe:ae+=fe.slice(0,J),J-=Ne,J===0){Ne===fe.length?(++xe,de.next?q.head=de.next:q.head=q.tail=null):(q.head=de,de.data=fe.slice(Ne));break}++xe}return q.length-=xe,ae}function ne(J,q){var de=g.allocUnsafe(J),xe=q.head,ae=1;for(xe.data.copy(de),J-=xe.data.length;xe=xe.next;){var fe=xe.data,Ne=J>fe.length?fe.length:J;if(fe.copy(de,de.length-J,0,Ne),J-=Ne,J===0){Ne===fe.length?(++ae,xe.next?q.head=xe.next:q.head=q.tail=null):(q.head=xe,xe.data=fe.slice(Ne));break}++ae}return q.length-=ae,de}function ge(J){var q=J._readableState;if(q.length>0)throw new Error('"endReadable()" called on non-empty stream');q.endEmitted||(q.ended=!0,d.nextTick(ee,q,J))}function ee(J,q){!J.endEmitted&&J.length===0&&(J.endEmitted=!0,q.readable=!1,q.emit("end"))}function se(J,q){for(var de=0,xe=J.length;de-1?d:m.nextTick,_;v.WritableState=c;var g=Object.create(e("core-util-is"));g.inherits=e("inherits");var y={deprecate:e("util-deprecate")},x=e("./internal/streams/stream"),p=e("safe-buffer").Buffer,S=l.Uint8Array||function(){};function w(N){return p.from(N)}function u(N){return p.isBuffer(N)||N instanceof S}var o=e("./internal/streams/destroy");g.inherits(v,x);function s(){}function c(N,U){_=_||e("./_stream_duplex"),N=N||{};var G=U instanceof _;this.objectMode=!!N.objectMode,G&&(this.objectMode=this.objectMode||!!N.writableObjectMode);var te=N.highWaterMark,re=N.writableHighWaterMark,ne=this.objectMode?16:16*1024;te||te===0?this.highWaterMark=te:G&&(re||re===0)?this.highWaterMark=re:this.highWaterMark=ne,this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var ge=N.decodeStrings===!1;this.decodeStrings=!ge,this.defaultEncoding=N.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(ee){B(U,ee)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new b(this)}c.prototype.getBuffer=function(){for(var U=this.bufferedRequest,G=[];U;)G.push(U),U=U.next;return G},function(){try{Object.defineProperty(c.prototype,"buffer",{get:y.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch{}}();var f;typeof Symbol=="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]=="function"?(f=Function.prototype[Symbol.hasInstance],Object.defineProperty(v,Symbol.hasInstance,{value:function(U){return f.call(this,U)?!0:this!==v?!1:U&&U._writableState instanceof c}})):f=function(U){return U instanceof this};function v(N){if(_=_||e("./_stream_duplex"),!f.call(v,this)&&!(this instanceof _))return new v(N);this._writableState=new c(N,this),this.writable=!0,N&&(typeof N.write=="function"&&(this._write=N.write),typeof N.writev=="function"&&(this._writev=N.writev),typeof N.destroy=="function"&&(this._destroy=N.destroy),typeof N.final=="function"&&(this._final=N.final)),x.call(this)}v.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))};function k(N,U){var G=new Error("write after end");N.emit("error",G),m.nextTick(U,G)}function T(N,U,G,te){var re=!0,ne=!1;return G===null?ne=new TypeError("May not write null values to stream"):typeof G!="string"&&G!==void 0&&!U.objectMode&&(ne=new TypeError("Invalid non-string/buffer chunk")),ne&&(N.emit("error",ne),m.nextTick(te,ne),re=!1),re}v.prototype.write=function(N,U,G){var te=this._writableState,re=!1,ne=!te.objectMode&&u(N);return ne&&!p.isBuffer(N)&&(N=w(N)),typeof U=="function"&&(G=U,U=null),ne?U="buffer":U||(U=te.defaultEncoding),typeof G!="function"&&(G=s),te.ended?k(this,G):(ne||T(this,te,N,G))&&(te.pendingcb++,re=D(this,te,ne,N,U,G)),re},v.prototype.cork=function(){var N=this._writableState;N.corked++},v.prototype.uncork=function(){var N=this._writableState;N.corked&&(N.corked--,!N.writing&&!N.corked&&!N.finished&&!N.bufferProcessing&&N.bufferedRequest&&O(this,N))},v.prototype.setDefaultEncoding=function(U){if(typeof U=="string"&&(U=U.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((U+"").toLowerCase())>-1))throw new TypeError("Unknown encoding: "+U);return this._writableState.defaultEncoding=U,this};function C(N,U,G){return!N.objectMode&&N.decodeStrings!==!1&&typeof U=="string"&&(U=p.from(U,G)),U}Object.defineProperty(v.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function D(N,U,G,te,re,ne){if(!G){var ge=C(U,te,re);te!==ge&&(G=!0,re="buffer",te=ge)}var ee=U.objectMode?1:te.length;U.length+=ee;var se=U.length0?this.tail.next=g:this.head=g,this.tail=g,++this.length},b.prototype.unshift=function(_){var g={data:_,next:this.head};this.length===0&&(this.tail=g),this.head=g,++this.length},b.prototype.shift=function(){if(this.length!==0){var _=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,_}},b.prototype.clear=function(){this.head=this.tail=null,this.length=0},b.prototype.join=function(_){if(this.length===0)return"";for(var g=this.head,y=""+g.data;g=g.next;)y+=_+g.data;return y},b.prototype.concat=function(_){if(this.length===0)return l.alloc(0);if(this.length===1)return this.head.data;for(var g=l.allocUnsafe(_>>>0),y=this.head,x=0;y;)m(y.data,g,x),x+=y.data.length,y=y.next;return g},b}(),d&&d.inspect&&d.inspect.custom&&(n.exports.prototype[d.inspect.custom]=function(){var b=d.inspect({length:this.length});return this.constructor.name+" "+b})},{"safe-buffer":494,util:185}],514:[function(e,n,i){var a=e("process-nextick-args");function l(b,h){var _=this,g=this._readableState&&this._readableState.destroyed,y=this._writableState&&this._writableState.destroyed;return g||y?(h?h(b):b&&(!this._writableState||!this._writableState.errorEmitted)&&a.nextTick(m,this,b),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(b||null,function(x){!h&&x?(a.nextTick(m,_,x),_._writableState&&(_._writableState.errorEmitted=!0)):h&&h(x)}),this)}function d(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function m(b,h){b.emit("error",h)}n.exports={destroy:l,undestroy:d}},{"process-nextick-args":466}],515:[function(e,n,i){arguments[4][490][0].apply(i,arguments)},{dup:490,events:367}],516:[function(e,n,i){n.exports=e("./readable").PassThrough},{"./readable":517}],517:[function(e,n,i){i=n.exports=e("./lib/_stream_readable.js"),i.Stream=i,i.Readable=i,i.Writable=e("./lib/_stream_writable.js"),i.Duplex=e("./lib/_stream_duplex.js"),i.Transform=e("./lib/_stream_transform.js"),i.PassThrough=e("./lib/_stream_passthrough.js")},{"./lib/_stream_duplex.js":508,"./lib/_stream_passthrough.js":509,"./lib/_stream_readable.js":510,"./lib/_stream_transform.js":511,"./lib/_stream_writable.js":512}],518:[function(e,n,i){n.exports=e("./readable").Transform},{"./readable":517}],519:[function(e,n,i){n.exports=e("./lib/_stream_writable.js")},{"./lib/_stream_writable.js":512}],520:[function(e,n,i){var a=e("safe-buffer").Buffer,l=a.isEncoding||function(f){switch(f=""+f,f&&f.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function d(f){if(!f)return"utf8";for(var v;;)switch(f){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return f;default:if(v)return;f=(""+f).toLowerCase(),v=!0}}function m(f){var v=d(f);if(typeof v!="string"&&(a.isEncoding===l||!l(f)))throw new Error("Unknown encoding: "+f);return v||f}i.StringDecoder=b;function b(f){this.encoding=m(f);var v;switch(this.encoding){case"utf16le":this.text=S,this.end=w,v=4;break;case"utf8":this.fillLast=y,v=4;break;case"base64":this.text=u,this.end=o,v=3;break;default:this.write=s,this.end=c;return}this.lastNeed=0,this.lastTotal=0,this.lastChar=a.allocUnsafe(v)}b.prototype.write=function(f){if(f.length===0)return"";var v,k;if(this.lastNeed){if(v=this.fillLast(f),v===void 0)return"";k=this.lastNeed,this.lastNeed=0}else k=0;return k>5===6?2:f>>4===14?3:f>>3===30?4:f>>6===2?-1:-2}function _(f,v,k){var T=v.length-1;if(T=0?(C>0&&(f.lastNeed=C-1),C):--T=0?(C>0&&(f.lastNeed=C-2),C):--T=0?(C>0&&(C===2?C=0:f.lastNeed=C-3),C):0))}function g(f,v,k){if((v[0]&192)!==128)return f.lastNeed=0,"�";if(f.lastNeed>1&&v.length>1){if((v[1]&192)!==128)return f.lastNeed=1,"�";if(f.lastNeed>2&&v.length>2&&(v[2]&192)!==128)return f.lastNeed=2,"�"}}function y(f){var v=this.lastTotal-this.lastNeed,k=g(this,f);if(k!==void 0)return k;if(this.lastNeed<=f.length)return f.copy(this.lastChar,v,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);f.copy(this.lastChar,v,0,f.length),this.lastNeed-=f.length}function x(f,v){var k=_(this,f,v);if(!this.lastNeed)return f.toString("utf8",v);this.lastTotal=k;var T=f.length-(k-this.lastNeed);return f.copy(this.lastChar,0,T),f.toString("utf8",v,T)}function p(f){var v=f&&f.length?this.write(f):"";return this.lastNeed?v+"�":v}function S(f,v){if((f.length-v)%2===0){var k=f.toString("utf16le",v);if(k){var T=k.charCodeAt(k.length-1);if(T>=55296&&T<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=f[f.length-2],this.lastChar[1]=f[f.length-1],k.slice(0,-1)}return k}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=f[f.length-1],f.toString("utf16le",v,f.length-1)}function w(f){var v=f&&f.length?this.write(f):"";if(this.lastNeed){var k=this.lastTotal-this.lastNeed;return v+this.lastChar.toString("utf16le",0,k)}return v}function u(f,v){var k=(f.length-v)%3;return k===0?f.toString("base64",v):(this.lastNeed=3-k,this.lastTotal=3,k===1?this.lastChar[0]=f[f.length-1]:(this.lastChar[0]=f[f.length-2],this.lastChar[1]=f[f.length-1]),f.toString("base64",v,f.length-k))}function o(f){var v=f&&f.length?this.write(f):"";return this.lastNeed?v+this.lastChar.toString("base64",0,3-this.lastNeed):v}function s(f){return f.toString(this.encoding)}function c(f){return f&&f.length?this.write(f):""}},{"safe-buffer":494}],521:[function(e,n,i){(function(a,l){var d=e("process/browser.js").nextTick,m=Function.prototype.apply,b=Array.prototype.slice,h={},_=0;i.setTimeout=function(){return new g(m.call(setTimeout,window,arguments),clearTimeout)},i.setInterval=function(){return new g(m.call(setInterval,window,arguments),clearInterval)},i.clearTimeout=i.clearInterval=function(y){y.close()};function g(y,x){this._id=y,this._clearFn=x}g.prototype.unref=g.prototype.ref=function(){},g.prototype.close=function(){this._clearFn.call(window,this._id)},i.enroll=function(y,x){clearTimeout(y._idleTimeoutId),y._idleTimeout=x},i.unenroll=function(y){clearTimeout(y._idleTimeoutId),y._idleTimeout=-1},i._unrefActive=i.active=function(y){clearTimeout(y._idleTimeoutId);var x=y._idleTimeout;x>=0&&(y._idleTimeoutId=setTimeout(function(){y._onTimeout&&y._onTimeout()},x))},i.setImmediate=typeof a=="function"?a:function(y){var x=_++,p=arguments.length<2?!1:b.call(arguments,1);return h[x]=!0,d(function(){h[x]&&(p?y.apply(null,p):y.call(null),i.clearImmediate(x))}),x},i.clearImmediate=typeof l=="function"?l:function(y){delete h[y]}}).call(this,e("timers").setImmediate,e("timers").clearImmediate)},{"process/browser.js":467,timers:521}],522:[function(e,n,i){(function(a){n.exports=l;function l(m,b){if(d("noDeprecation"))return m;var h=!1;function _(){if(!h){if(d("throwDeprecation"))throw new Error(b);d("traceDeprecation")?console.trace(b):console.warn(b),h=!0}return m.apply(this,arguments)}return _}function d(m){try{if(!a.localStorage)return!1}catch{return!1}var b=a.localStorage[m];return b==null?!1:String(b).toLowerCase()==="true"}}).call(this,typeof cr<"u"?cr:typeof self<"u"?self:typeof window<"u"?window:{})},{}],523:[function(e,n,i){typeof Object.create=="function"?n.exports=function(l,d){l.super_=d,l.prototype=Object.create(d.prototype,{constructor:{value:l,enumerable:!1,writable:!0,configurable:!0}})}:n.exports=function(l,d){l.super_=d;var m=function(){};m.prototype=d.prototype,l.prototype=new m,l.prototype.constructor=l}},{}],524:[function(e,n,i){function a(l){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(m){return typeof m}:a=function(m){return m&&typeof Symbol=="function"&&m.constructor===Symbol&&m!==Symbol.prototype?"symbol":typeof m},a(l)}n.exports=function(d){return d&&a(d)==="object"&&typeof d.copy=="function"&&typeof d.fill=="function"&&typeof d.readUInt8=="function"}},{}],525:[function(e,n,i){(function(a,l){function d(I){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?d=function(U){return typeof U}:d=function(U){return U&&typeof Symbol=="function"&&U.constructor===Symbol&&U!==Symbol.prototype?"symbol":typeof U},d(I)}var m=/%[sdj%]/g;i.format=function(I){if(!C(I)){for(var N=[],U=0;U=te)return ge;switch(ge){case"%s":return String(G[U++]);case"%d":return Number(G[U++]);case"%j":try{return JSON.stringify(G[U++])}catch{return"[Circular]"}default:return ge}}),ne=G[U];U=3&&(U.depth=arguments[2]),arguments.length>=4&&(U.colors=arguments[3]),f(N)?U.showHidden=N:N&&i._extend(U,N),j(U.showHidden)&&(U.showHidden=!1),j(U.depth)&&(U.depth=2),j(U.colors)&&(U.colors=!1),j(U.customInspect)&&(U.customInspect=!0),U.colors&&(U.stylize=g),p(U,I,U.depth)}i.inspect=_,_.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},_.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"};function g(I,N){var U=_.styles[N];return U?"\x1B["+_.colors[U][0]+"m"+I+"\x1B["+_.colors[U][1]+"m":I}function y(I,N){return I}function x(I){var N={};return I.forEach(function(U,G){N[U]=!0}),N}function p(I,N,U){if(I.customInspect&&N&&P(N.inspect)&&N.inspect!==i.inspect&&!(N.constructor&&N.constructor.prototype===N)){var G=N.inspect(U,I);return C(G)||(G=p(I,G,U)),G}var te=S(I,N);if(te)return te;var re=Object.keys(N),ne=x(re);if(I.showHidden&&(re=Object.getOwnPropertyNames(N)),R(N)&&(re.indexOf("message")>=0||re.indexOf("description")>=0))return w(N);if(re.length===0){if(P(N)){var ge=N.name?": "+N.name:"";return I.stylize("[Function"+ge+"]","special")}if(L(N))return I.stylize(RegExp.prototype.toString.call(N),"regexp");if(B(N))return I.stylize(Date.prototype.toString.call(N),"date");if(R(N))return w(N)}var ee="",se=!1,J=["{","}"];if(c(N)&&(se=!0,J=["[","]"]),P(N)){var q=N.name?": "+N.name:"";ee=" [Function"+q+"]"}if(L(N)&&(ee=" "+RegExp.prototype.toString.call(N)),B(N)&&(ee=" "+Date.prototype.toUTCString.call(N)),R(N)&&(ee=" "+w(N)),re.length===0&&(!se||N.length==0))return J[0]+ee+J[1];if(U<0)return L(N)?I.stylize(RegExp.prototype.toString.call(N),"regexp"):I.stylize("[Object]","special");I.seen.push(N);var de;return se?de=u(I,N,U,ne,re):de=re.map(function(xe){return o(I,N,U,ne,xe,se)}),I.seen.pop(),s(de,ee,J)}function S(I,N){if(j(N))return I.stylize("undefined","undefined");if(C(N)){var U="'"+JSON.stringify(N).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return I.stylize(U,"string")}if(T(N))return I.stylize(""+N,"number");if(f(N))return I.stylize(""+N,"boolean");if(v(N))return I.stylize("null","null")}function w(I){return"["+Error.prototype.toString.call(I)+"]"}function u(I,N,U,G,te){for(var re=[],ne=0,ge=N.length;ne-1&&(re?ge=ge.split(` +`).map(function(se){return" "+se}).join(` +`).substr(2):ge=` +`+ge.split(` +`).map(function(se){return" "+se}).join(` +`))):ge=I.stylize("[Circular]","special")),j(ne)){if(re&&te.match(/^\d+$/))return ge;ne=JSON.stringify(""+te),ne.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(ne=ne.substr(1,ne.length-2),ne=I.stylize(ne,"name")):(ne=ne.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),ne=I.stylize(ne,"string"))}return ne+": "+ge}function s(I,N,U){var G=I.reduce(function(te,re){return re.indexOf(` +`)>=0,te+re.replace(/\u001b\[\d\d?m/g,"").length+1},0);return G>60?U[0]+(N===""?"":N+` + `)+" "+I.join(`, + `)+" "+U[1]:U[0]+N+" "+I.join(", ")+" "+U[1]}function c(I){return Array.isArray(I)}i.isArray=c;function f(I){return typeof I=="boolean"}i.isBoolean=f;function v(I){return I===null}i.isNull=v;function k(I){return I==null}i.isNullOrUndefined=k;function T(I){return typeof I=="number"}i.isNumber=T;function C(I){return typeof I=="string"}i.isString=C;function D(I){return d(I)==="symbol"}i.isSymbol=D;function j(I){return I===void 0}i.isUndefined=j;function L(I){return M(I)&&F(I)==="[object RegExp]"}i.isRegExp=L;function M(I){return d(I)==="object"&&I!==null}i.isObject=M;function B(I){return M(I)&&F(I)==="[object Date]"}i.isDate=B;function R(I){return M(I)&&(F(I)==="[object Error]"||I instanceof Error)}i.isError=R;function P(I){return typeof I=="function"}i.isFunction=P;function O(I){return I===null||typeof I=="boolean"||typeof I=="number"||typeof I=="string"||d(I)==="symbol"||typeof I>"u"}i.isPrimitive=O,i.isBuffer=e("./support/isBuffer");function F(I){return Object.prototype.toString.call(I)}function H(I){return I<10?"0"+I.toString(10):I.toString(10)}var V=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function z(){var I=new Date,N=[H(I.getHours()),H(I.getMinutes()),H(I.getSeconds())].join(":");return[I.getDate(),V[I.getMonth()],N].join(" ")}i.log=function(){console.log("%s - %s",z(),i.format.apply(i,arguments))},i.inherits=e("inherits"),i._extend=function(I,N){if(!N||!M(N))return I;for(var U=Object.keys(N),G=U.length;G--;)I[U[G]]=N[U[G]];return I};function X(I,N){return Object.prototype.hasOwnProperty.call(I,N)}}).call(this,e("_process"),typeof cr<"u"?cr:typeof self<"u"?self:typeof window<"u"?window:{})},{"./support/isBuffer":524,_process:467,inherits:523}],526:[function(e,n,i){Object.defineProperty(i,"__esModule",{value:!0}),Object.defineProperty(i,"v1",{enumerable:!0,get:function(){return a.default}}),Object.defineProperty(i,"v3",{enumerable:!0,get:function(){return l.default}}),Object.defineProperty(i,"v4",{enumerable:!0,get:function(){return d.default}}),Object.defineProperty(i,"v5",{enumerable:!0,get:function(){return m.default}}),Object.defineProperty(i,"NIL",{enumerable:!0,get:function(){return b.default}}),Object.defineProperty(i,"version",{enumerable:!0,get:function(){return h.default}}),Object.defineProperty(i,"validate",{enumerable:!0,get:function(){return _.default}}),Object.defineProperty(i,"stringify",{enumerable:!0,get:function(){return g.default}}),Object.defineProperty(i,"parse",{enumerable:!0,get:function(){return y.default}});var a=x(e("./v1.js")),l=x(e("./v3.js")),d=x(e("./v4.js")),m=x(e("./v5.js")),b=x(e("./nil.js")),h=x(e("./version.js")),_=x(e("./validate.js")),g=x(e("./stringify.js")),y=x(e("./parse.js"));function x(p){return p&&p.__esModule?p:{default:p}}},{"./nil.js":528,"./parse.js":529,"./stringify.js":533,"./v1.js":534,"./v3.js":535,"./v4.js":537,"./v5.js":538,"./validate.js":539,"./version.js":540}],527:[function(e,n,i){Object.defineProperty(i,"__esModule",{value:!0}),i.default=void 0;function a(u){if(typeof u=="string"){var o=unescape(encodeURIComponent(u));u=new Uint8Array(o.length);for(var s=0;s>5]>>>f%32&255,k=parseInt(c.charAt(v>>>4&15)+c.charAt(v&15),16);o.push(k)}return o}function d(u){return(u+64>>>9<<4)+14+1}function m(u,o){u[o>>5]|=128<>5]|=(u[c/8]&255)<>16)+(o>>16)+(s>>16);return c<<16|s&65535}function _(u,o){return u<>>32-o}function g(u,o,s,c,f,v){return h(_(h(h(o,u),h(c,v)),f),s)}function y(u,o,s,c,f,v,k){return g(o&s|~o&c,u,o,f,v,k)}function x(u,o,s,c,f,v,k){return g(o&c|s&~c,u,o,f,v,k)}function p(u,o,s,c,f,v,k){return g(o^s^c,u,o,f,v,k)}function S(u,o,s,c,f,v,k){return g(s^(o|~c),u,o,f,v,k)}var w=a;i.default=w},{}],528:[function(e,n,i){Object.defineProperty(i,"__esModule",{value:!0}),i.default=void 0;var a="00000000-0000-0000-0000-000000000000";i.default=a},{}],529:[function(e,n,i){Object.defineProperty(i,"__esModule",{value:!0}),i.default=void 0;var a=l(e("./validate.js"));function l(b){return b&&b.__esModule?b:{default:b}}function d(b){if(!(0,a.default)(b))throw TypeError("Invalid UUID");var h,_=new Uint8Array(16);return _[0]=(h=parseInt(b.slice(0,8),16))>>>24,_[1]=h>>>16&255,_[2]=h>>>8&255,_[3]=h&255,_[4]=(h=parseInt(b.slice(9,13),16))>>>8,_[5]=h&255,_[6]=(h=parseInt(b.slice(14,18),16))>>>8,_[7]=h&255,_[8]=(h=parseInt(b.slice(19,23),16))>>>8,_[9]=h&255,_[10]=(h=parseInt(b.slice(24,36),16))/1099511627776&255,_[11]=h/4294967296&255,_[12]=h>>>24&255,_[13]=h>>>16&255,_[14]=h>>>8&255,_[15]=h&255,_}var m=d;i.default=m},{"./validate.js":539}],530:[function(e,n,i){Object.defineProperty(i,"__esModule",{value:!0}),i.default=void 0;var a=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;i.default=a},{}],531:[function(e,n,i){Object.defineProperty(i,"__esModule",{value:!0}),i.default=d;var a=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||typeof msCrypto<"u"&&typeof msCrypto.getRandomValues=="function"&&msCrypto.getRandomValues.bind(msCrypto),l=new Uint8Array(16);function d(){if(!a)throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return a(l)}},{}],532:[function(e,n,i){Object.defineProperty(i,"__esModule",{value:!0}),i.default=void 0;function a(b,h,_,g){switch(b){case 0:return h&_^~h&g;case 1:return h^_^g;case 2:return h&_^h&g^_&g;case 3:return h^_^g}}function l(b,h){return b<>>32-h}function d(b){var h=[1518500249,1859775393,2400959708,3395469782],_=[1732584193,4023233417,2562383102,271733878,3285377520];if(typeof b=="string"){var g=unescape(encodeURIComponent(b));b=[];for(var y=0;y>>0;j=D,D=C,C=l(T,30)>>>0,T=k,k=B}_[0]=_[0]+k>>>0,_[1]=_[1]+T>>>0,_[2]=_[2]+C>>>0,_[3]=_[3]+D>>>0,_[4]=_[4]+j>>>0}return[_[0]>>24&255,_[0]>>16&255,_[0]>>8&255,_[0]&255,_[1]>>24&255,_[1]>>16&255,_[1]>>8&255,_[1]&255,_[2]>>24&255,_[2]>>16&255,_[2]>>8&255,_[2]&255,_[3]>>24&255,_[3]>>16&255,_[3]>>8&255,_[3]&255,_[4]>>24&255,_[4]>>16&255,_[4]>>8&255,_[4]&255]}var m=d;i.default=m},{}],533:[function(e,n,i){Object.defineProperty(i,"__esModule",{value:!0}),i.default=void 0;var a=l(e("./validate.js"));function l(_){return _&&_.__esModule?_:{default:_}}for(var d=[],m=0;m<256;++m)d.push((m+256).toString(16).substr(1));function b(_){var g=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,y=(d[_[g+0]]+d[_[g+1]]+d[_[g+2]]+d[_[g+3]]+"-"+d[_[g+4]]+d[_[g+5]]+"-"+d[_[g+6]]+d[_[g+7]]+"-"+d[_[g+8]]+d[_[g+9]]+"-"+d[_[g+10]]+d[_[g+11]]+d[_[g+12]]+d[_[g+13]]+d[_[g+14]]+d[_[g+15]]).toLowerCase();if(!(0,a.default)(y))throw TypeError("Stringified UUID is invalid");return y}var h=b;i.default=h},{"./validate.js":539}],534:[function(e,n,i){Object.defineProperty(i,"__esModule",{value:!0}),i.default=void 0;var a=d(e("./rng.js")),l=d(e("./stringify.js"));function d(x){return x&&x.__esModule?x:{default:x}}var m,b,h=0,_=0;function g(x,p,S){var w=p&&S||0,u=p||new Array(16);x=x||{};var o=x.node||m,s=x.clockseq!==void 0?x.clockseq:b;if(o==null||s==null){var c=x.random||(x.rng||a.default)();o==null&&(o=m=[c[0]|1,c[1],c[2],c[3],c[4],c[5]]),s==null&&(s=b=(c[6]<<8|c[7])&16383)}var f=x.msecs!==void 0?x.msecs:Date.now(),v=x.nsecs!==void 0?x.nsecs:_+1,k=f-h+(v-_)/1e4;if(k<0&&x.clockseq===void 0&&(s=s+1&16383),(k<0||f>h)&&x.nsecs===void 0&&(v=0),v>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");h=f,_=v,b=s,f+=122192928e5;var T=((f&268435455)*1e4+v)%4294967296;u[w++]=T>>>24&255,u[w++]=T>>>16&255,u[w++]=T>>>8&255,u[w++]=T&255;var C=f/4294967296*1e4&268435455;u[w++]=C>>>8&255,u[w++]=C&255,u[w++]=C>>>24&15|16,u[w++]=C>>>16&255,u[w++]=s>>>8|128,u[w++]=s&255;for(var D=0;D<6;++D)u[w+D]=o[D];return p||(0,l.default)(u)}var y=g;i.default=y},{"./rng.js":531,"./stringify.js":533}],535:[function(e,n,i){Object.defineProperty(i,"__esModule",{value:!0}),i.default=void 0;var a=d(e("./v35.js")),l=d(e("./md5.js"));function d(h){return h&&h.__esModule?h:{default:h}}var m=(0,a.default)("v3",48,l.default),b=m;i.default=b},{"./md5.js":527,"./v35.js":536}],536:[function(e,n,i){Object.defineProperty(i,"__esModule",{value:!0}),i.default=_,i.URL=i.DNS=void 0;var a=d(e("./stringify.js")),l=d(e("./parse.js"));function d(g){return g&&g.__esModule?g:{default:g}}function m(g){g=unescape(encodeURIComponent(g));for(var y=[],x=0;x=m&&y<=55295||y===l||y===d||y===a||y>=57344&&y<=65533||y>=65536&&y<=1114111}i.isChar=b;function h(y){return y===m||y===l||y===d||y===a}i.isS=h;function _(y){return y>=65&&y<=90||y>=97&&y<=122||y===58||y===95||y===8204||y===8205||y>=192&&y<=214||y>=216&&y<=246||y>=248&&y<=767||y>=880&&y<=893||y>=895&&y<=8191||y>=8304&&y<=8591||y>=11264&&y<=12271||y>=12289&&y<=55295||y>=63744&&y<=64975||y>=65008&&y<=65533||y>=65536&&y<=983039}i.isNameStartChar=_;function g(y){return _(y)||y>=48&&y<=57||y===45||y===46||y===183||y>=768&&y<=879||y>=8255&&y<=8256}i.isNameChar=g},{}],542:[function(e,n,i){/** + * Character classes and associated utilities for the 2nd edition of XML 1.1. + * + * @author Louis-Dominique Dubeau + * @license MIT + * @copyright Louis-Dominique Dubeau + */Object.defineProperty(i,"__esModule",{value:!0}),i.CHAR="-퟿-�𐀀-􏿿",i.RESTRICTED_CHAR="-\b\v\f--„†-Ÿ",i.S=` \r +`,i.NAME_START_CHAR=":A-Z_a-zÀ-ÖØ-öø-˿Ͱ-ͽͿ-῿‌‍⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�𐀀-󯿿",i.NAME_CHAR="-"+i.NAME_START_CHAR+".0-9·̀-ͯ‿-⁀",i.CHAR_RE=new RegExp("^["+i.CHAR+"]$","u"),i.RESTRICTED_CHAR_RE=new RegExp("^["+i.RESTRICTED_CHAR+"]$","u"),i.S_RE=new RegExp("^["+i.S+"]+$","u"),i.NAME_START_CHAR_RE=new RegExp("^["+i.NAME_START_CHAR+"]$","u"),i.NAME_CHAR_RE=new RegExp("^["+i.NAME_CHAR+"]$","u"),i.NAME_RE=new RegExp("^["+i.NAME_START_CHAR+"]["+i.NAME_CHAR+"]*$","u"),i.NMTOKEN_RE=new RegExp("^["+i.NAME_CHAR+"]+$","u");var a=9,l=10,d=13,m=32;i.S_LIST=[m,l,d,a];function b(p){return p>=1&&p<=55295||p>=57344&&p<=65533||p>=65536&&p<=1114111}i.isChar=b;function h(p){return p>=1&&p<=8||p===11||p===12||p>=14&&p<=31||p>=127&&p<=132||p>=134&&p<=159}i.isRestrictedChar=h;function _(p){return p===9||p===10||p===13||p>31&&p<127||p===133||p>159&&p<=55295||p>=57344&&p<=65533||p>=65536&&p<=1114111}i.isCharAndNotRestricted=_;function g(p){return p===m||p===l||p===d||p===a}i.isS=g;function y(p){return p>=65&&p<=90||p>=97&&p<=122||p===58||p===95||p===8204||p===8205||p>=192&&p<=214||p>=216&&p<=246||p>=248&&p<=767||p>=880&&p<=893||p>=895&&p<=8191||p>=8304&&p<=8591||p>=11264&&p<=12271||p>=12289&&p<=55295||p>=63744&&p<=64975||p>=65008&&p<=65533||p>=65536&&p<=983039}i.isNameStartChar=y;function x(p){return y(p)||p>=48&&p<=57||p===45||p===46||p===183||p>=768&&p<=879||p>=8255&&p<=8256}i.isNameChar=x},{}],543:[function(e,n,i){/** + * Character class utilities for XML NS 1.0 edition 3. + * + * @author Louis-Dominique Dubeau + * @license MIT + * @copyright Louis-Dominique Dubeau + */Object.defineProperty(i,"__esModule",{value:!0}),i.NC_NAME_START_CHAR="A-Z_a-zÀ-ÖØ-öø-˿Ͱ-ͽͿ-῿‌-‍⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�𐀀-󯿿",i.NC_NAME_CHAR="-"+i.NC_NAME_START_CHAR+".0-9·̀-ͯ‿-⁀",i.NC_NAME_START_CHAR_RE=new RegExp("^["+i.NC_NAME_START_CHAR+"]$","u"),i.NC_NAME_CHAR_RE=new RegExp("^["+i.NC_NAME_CHAR+"]$","u"),i.NC_NAME_RE=new RegExp("^["+i.NC_NAME_START_CHAR+"]["+i.NC_NAME_CHAR+"]*$","u");function a(d){return d>=65&&d<=90||d===95||d>=97&&d<=122||d>=192&&d<=214||d>=216&&d<=246||d>=248&&d<=767||d>=880&&d<=893||d>=895&&d<=8191||d>=8204&&d<=8205||d>=8304&&d<=8591||d>=11264&&d<=12271||d>=12289&&d<=55295||d>=63744&&d<=64975||d>=65008&&d<=65533||d>=65536&&d<=983039}i.isNCNameStartChar=a;function l(d){return a(d)||d===45||d===46||d>=48&&d<=57||d===183||d>=768&&d<=879||d>=8255&&d<=8256}i.isNCNameChar=l},{}]},{},[15])(15)})})(AS);function pc(t){"@babel/helpers - typeof";return pc=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(r){return typeof r}:function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},pc(t)}var PS=/^\s+/,FS=/\s+$/;function Vt(t,r){if(t=t||"",r=r||{},t instanceof Vt)return t;if(!(this instanceof Vt))return new Vt(t,r);var e=IS(t);this._originalInput=t,this._r=e.r,this._g=e.g,this._b=e.b,this._a=e.a,this._roundA=Math.round(100*this._a)/100,this._format=r.format||e.format,this._gradientType=r.gradientType,this._r<1&&(this._r=Math.round(this._r)),this._g<1&&(this._g=Math.round(this._g)),this._b<1&&(this._b=Math.round(this._b)),this._ok=e.ok}Vt.prototype={isDark:function(){return this.getBrightness()<128},isLight:function(){return!this.isDark()},isValid:function(){return this._ok},getOriginalInput:function(){return this._originalInput},getFormat:function(){return this._format},getAlpha:function(){return this._a},getBrightness:function(){var r=this.toRgb();return(r.r*299+r.g*587+r.b*114)/1e3},getLuminance:function(){var r=this.toRgb(),e,n,i,a,l,d;return e=r.r/255,n=r.g/255,i=r.b/255,e<=.03928?a=e/12.92:a=Math.pow((e+.055)/1.055,2.4),n<=.03928?l=n/12.92:l=Math.pow((n+.055)/1.055,2.4),i<=.03928?d=i/12.92:d=Math.pow((i+.055)/1.055,2.4),.2126*a+.7152*l+.0722*d},setAlpha:function(r){return this._a=_m(r),this._roundA=Math.round(100*this._a)/100,this},toHsv:function(){var r=Hp(this._r,this._g,this._b);return{h:r.h*360,s:r.s,v:r.v,a:this._a}},toHsvString:function(){var r=Hp(this._r,this._g,this._b),e=Math.round(r.h*360),n=Math.round(r.s*100),i=Math.round(r.v*100);return this._a==1?"hsv("+e+", "+n+"%, "+i+"%)":"hsva("+e+", "+n+"%, "+i+"%, "+this._roundA+")"},toHsl:function(){var r=Up(this._r,this._g,this._b);return{h:r.h*360,s:r.s,l:r.l,a:this._a}},toHslString:function(){var r=Up(this._r,this._g,this._b),e=Math.round(r.h*360),n=Math.round(r.s*100),i=Math.round(r.l*100);return this._a==1?"hsl("+e+", "+n+"%, "+i+"%)":"hsla("+e+", "+n+"%, "+i+"%, "+this._roundA+")"},toHex:function(r){return Xp(this._r,this._g,this._b,r)},toHexString:function(r){return"#"+this.toHex(r)},toHex8:function(r){return BS(this._r,this._g,this._b,this._a,r)},toHex8String:function(r){return"#"+this.toHex8(r)},toRgb:function(){return{r:Math.round(this._r),g:Math.round(this._g),b:Math.round(this._b),a:this._a}},toRgbString:function(){return this._a==1?"rgb("+Math.round(this._r)+", "+Math.round(this._g)+", "+Math.round(this._b)+")":"rgba("+Math.round(this._r)+", "+Math.round(this._g)+", "+Math.round(this._b)+", "+this._roundA+")"},toPercentageRgb:function(){return{r:Math.round(Wr(this._r,255)*100)+"%",g:Math.round(Wr(this._g,255)*100)+"%",b:Math.round(Wr(this._b,255)*100)+"%",a:this._a}},toPercentageRgbString:function(){return this._a==1?"rgb("+Math.round(Wr(this._r,255)*100)+"%, "+Math.round(Wr(this._g,255)*100)+"%, "+Math.round(Wr(this._b,255)*100)+"%)":"rgba("+Math.round(Wr(this._r,255)*100)+"%, "+Math.round(Wr(this._g,255)*100)+"%, "+Math.round(Wr(this._b,255)*100)+"%, "+this._roundA+")"},toName:function(){return this._a===0?"transparent":this._a<1?!1:YS[Xp(this._r,this._g,this._b,!0)]||!1},toFilter:function(r){var e="#"+zp(this._r,this._g,this._b,this._a),n=e,i=this._gradientType?"GradientType = 1, ":"";if(r){var a=Vt(r);n="#"+zp(a._r,a._g,a._b,a._a)}return"progid:DXImageTransform.Microsoft.gradient("+i+"startColorstr="+e+",endColorstr="+n+")"},toString:function(r){var e=!!r;r=r||this._format;var n=!1,i=this._a<1&&this._a>=0,a=!e&&i&&(r==="hex"||r==="hex6"||r==="hex3"||r==="hex4"||r==="hex8"||r==="name");return a?r==="name"&&this._a===0?this.toName():this.toRgbString():(r==="rgb"&&(n=this.toRgbString()),r==="prgb"&&(n=this.toPercentageRgbString()),(r==="hex"||r==="hex6")&&(n=this.toHexString()),r==="hex3"&&(n=this.toHexString(!0)),r==="hex4"&&(n=this.toHex8String(!0)),r==="hex8"&&(n=this.toHex8String()),r==="name"&&(n=this.toName()),r==="hsl"&&(n=this.toHslString()),r==="hsv"&&(n=this.toHsvString()),n||this.toHexString())},clone:function(){return Vt(this.toString())},_applyModification:function(r,e){var n=r.apply(null,[this].concat([].slice.call(e)));return this._r=n._r,this._g=n._g,this._b=n._b,this.setAlpha(n._a),this},lighten:function(){return this._applyModification(HS,arguments)},brighten:function(){return this._applyModification(XS,arguments)},darken:function(){return this._applyModification(zS,arguments)},desaturate:function(){return this._applyModification(LS,arguments)},saturate:function(){return this._applyModification(jS,arguments)},greyscale:function(){return this._applyModification(US,arguments)},spin:function(){return this._applyModification(WS,arguments)},_applyCombination:function(r,e){return r.apply(null,[this].concat([].slice.call(e)))},analogous:function(){return this._applyCombination(GS,arguments)},complement:function(){return this._applyCombination(VS,arguments)},monochromatic:function(){return this._applyCombination(KS,arguments)},splitcomplement:function(){return this._applyCombination($S,arguments)},triad:function(){return this._applyCombination(Wp,[3])},tetrad:function(){return this._applyCombination(Wp,[4])}};Vt.fromRatio=function(t,r){if(pc(t)=="object"){var e={};for(var n in t)t.hasOwnProperty(n)&&(n==="a"?e[n]=t[n]:e[n]=gf(t[n]));t=e}return Vt(t,r)};function IS(t){var r={r:0,g:0,b:0},e=1,n=null,i=null,a=null,l=!1,d=!1;return typeof t=="string"&&(t=qS(t)),pc(t)=="object"&&(Ba(t.r)&&Ba(t.g)&&Ba(t.b)?(r=MS(t.r,t.g,t.b),l=!0,d=String(t.r).substr(-1)==="%"?"prgb":"rgb"):Ba(t.h)&&Ba(t.s)&&Ba(t.v)?(n=gf(t.s),i=gf(t.v),r=NS(t.h,n,i),l=!0,d="hsv"):Ba(t.h)&&Ba(t.s)&&Ba(t.l)&&(n=gf(t.s),a=gf(t.l),r=DS(t.h,n,a),l=!0,d="hsl"),t.hasOwnProperty("a")&&(e=t.a)),e=_m(e),{ok:l,format:t.format||d,r:Math.min(255,Math.max(r.r,0)),g:Math.min(255,Math.max(r.g,0)),b:Math.min(255,Math.max(r.b,0)),a:e}}function MS(t,r,e){return{r:Wr(t,255)*255,g:Wr(r,255)*255,b:Wr(e,255)*255}}function Up(t,r,e){t=Wr(t,255),r=Wr(r,255),e=Wr(e,255);var n=Math.max(t,r,e),i=Math.min(t,r,e),a,l,d=(n+i)/2;if(n==i)a=l=0;else{var m=n-i;switch(l=d>.5?m/(2-n-i):m/(n+i),n){case t:a=(r-e)/m+(r1&&(_-=1),_<1/6?b+(h-b)*6*_:_<1/2?h:_<2/3?b+(h-b)*(2/3-_)*6:b}if(r===0)n=i=a=e;else{var d=e<.5?e*(1+r):e+r-e*r,m=2*e-d;n=l(m,d,t+1/3),i=l(m,d,t),a=l(m,d,t-1/3)}return{r:n*255,g:i*255,b:a*255}}function Hp(t,r,e){t=Wr(t,255),r=Wr(r,255),e=Wr(e,255);var n=Math.max(t,r,e),i=Math.min(t,r,e),a,l,d=n,m=n-i;if(l=n===0?0:m/n,n==i)a=0;else{switch(n){case t:a=(r-e)/m+(r>1)+720)%360;--r;)n.h=(n.h+i)%360,a.push(Vt(n));return a}function KS(t,r){r=r||6;for(var e=Vt(t).toHsv(),n=e.h,i=e.s,a=e.v,l=[],d=1/r;r--;)l.push(Vt({h:n,s:i,v:a})),a=(a+d)%1;return l}Vt.mix=function(t,r,e){e=e===0?0:e||50;var n=Vt(t).toRgb(),i=Vt(r).toRgb(),a=e/100,l={r:(i.r-n.r)*a+n.r,g:(i.g-n.g)*a+n.g,b:(i.b-n.b)*a+n.b,a:(i.a-n.a)*a+n.a};return Vt(l)};Vt.readability=function(t,r){var e=Vt(t),n=Vt(r);return(Math.max(e.getLuminance(),n.getLuminance())+.05)/(Math.min(e.getLuminance(),n.getLuminance())+.05)};Vt.isReadable=function(t,r,e){var n=Vt.readability(t,r),i,a;switch(a=!1,i=ek(e),i.level+i.size){case"AAsmall":case"AAAlarge":a=n>=4.5;break;case"AAlarge":a=n>=3;break;case"AAAsmall":a=n>=7;break}return a};Vt.mostReadable=function(t,r,e){var n=null,i=0,a,l,d,m;e=e||{},l=e.includeFallbackColors,d=e.level,m=e.size;for(var b=0;bi&&(i=a,n=Vt(r[b]));return Vt.isReadable(t,n,{level:d,size:m})||!l?n:(e.includeFallbackColors=!1,Vt.mostReadable(t,["#fff","#000"],e))};var ph=Vt.names={aliceblue:"f0f8ff",antiquewhite:"faebd7",aqua:"0ff",aquamarine:"7fffd4",azure:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"000",blanchedalmond:"ffebcd",blue:"00f",blueviolet:"8a2be2",brown:"a52a2a",burlywood:"deb887",burntsienna:"ea7e5d",cadetblue:"5f9ea0",chartreuse:"7fff00",chocolate:"d2691e",coral:"ff7f50",cornflowerblue:"6495ed",cornsilk:"fff8dc",crimson:"dc143c",cyan:"0ff",darkblue:"00008b",darkcyan:"008b8b",darkgoldenrod:"b8860b",darkgray:"a9a9a9",darkgreen:"006400",darkgrey:"a9a9a9",darkkhaki:"bdb76b",darkmagenta:"8b008b",darkolivegreen:"556b2f",darkorange:"ff8c00",darkorchid:"9932cc",darkred:"8b0000",darksalmon:"e9967a",darkseagreen:"8fbc8f",darkslateblue:"483d8b",darkslategray:"2f4f4f",darkslategrey:"2f4f4f",darkturquoise:"00ced1",darkviolet:"9400d3",deeppink:"ff1493",deepskyblue:"00bfff",dimgray:"696969",dimgrey:"696969",dodgerblue:"1e90ff",firebrick:"b22222",floralwhite:"fffaf0",forestgreen:"228b22",fuchsia:"f0f",gainsboro:"dcdcdc",ghostwhite:"f8f8ff",gold:"ffd700",goldenrod:"daa520",gray:"808080",green:"008000",greenyellow:"adff2f",grey:"808080",honeydew:"f0fff0",hotpink:"ff69b4",indianred:"cd5c5c",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lavender:"e6e6fa",lavenderblush:"fff0f5",lawngreen:"7cfc00",lemonchiffon:"fffacd",lightblue:"add8e6",lightcoral:"f08080",lightcyan:"e0ffff",lightgoldenrodyellow:"fafad2",lightgray:"d3d3d3",lightgreen:"90ee90",lightgrey:"d3d3d3",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa",lightslategray:"789",lightslategrey:"789",lightsteelblue:"b0c4de",lightyellow:"ffffe0",lime:"0f0",limegreen:"32cd32",linen:"faf0e6",magenta:"f0f",maroon:"800000",mediumaquamarine:"66cdaa",mediumblue:"0000cd",mediumorchid:"ba55d3",mediumpurple:"9370db",mediumseagreen:"3cb371",mediumslateblue:"7b68ee",mediumspringgreen:"00fa9a",mediumturquoise:"48d1cc",mediumvioletred:"c71585",midnightblue:"191970",mintcream:"f5fffa",mistyrose:"ffe4e1",moccasin:"ffe4b5",navajowhite:"ffdead",navy:"000080",oldlace:"fdf5e6",olive:"808000",olivedrab:"6b8e23",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",palegoldenrod:"eee8aa",palegreen:"98fb98",paleturquoise:"afeeee",palevioletred:"db7093",papayawhip:"ffefd5",peachpuff:"ffdab9",peru:"cd853f",pink:"ffc0cb",plum:"dda0dd",powderblue:"b0e0e6",purple:"800080",rebeccapurple:"663399",red:"f00",rosybrown:"bc8f8f",royalblue:"4169e1",saddlebrown:"8b4513",salmon:"fa8072",sandybrown:"f4a460",seagreen:"2e8b57",seashell:"fff5ee",sienna:"a0522d",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd",slategray:"708090",slategrey:"708090",snow:"fffafa",springgreen:"00ff7f",steelblue:"4682b4",tan:"d2b48c",teal:"008080",thistle:"d8bfd8",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",wheat:"f5deb3",white:"fff",whitesmoke:"f5f5f5",yellow:"ff0",yellowgreen:"9acd32"},YS=Vt.hexNames=ZS(ph);function ZS(t){var r={};for(var e in t)t.hasOwnProperty(e)&&(r[t[e]]=e);return r}function _m(t){return t=parseFloat(t),(isNaN(t)||t<0||t>1)&&(t=1),t}function Wr(t,r){JS(t)&&(t="100%");var e=QS(t);return t=Math.min(r,Math.max(0,parseFloat(t))),e&&(t=parseInt(t*r,10)/100),Math.abs(t-r)<1e-6?1:t%r/parseFloat(r)}function Cc(t){return Math.min(1,Math.max(0,t))}function wi(t){return parseInt(t,16)}function JS(t){return typeof t=="string"&&t.indexOf(".")!=-1&&parseFloat(t)===1}function QS(t){return typeof t=="string"&&t.indexOf("%")!=-1}function fa(t){return t.length==1?"0"+t:""+t}function gf(t){return t<=1&&(t=t*100+"%"),t}function xm(t){return Math.round(parseFloat(t)*255).toString(16)}function Vp(t){return wi(t)/255}var oa=function(){var t="[-\\+]?\\d+%?",r="[-\\+]?\\d*\\.\\d+%?",e="(?:"+r+")|(?:"+t+")",n="[\\s|\\(]+("+e+")[,|\\s]+("+e+")[,|\\s]+("+e+")\\s*\\)?",i="[\\s|\\(]+("+e+")[,|\\s]+("+e+")[,|\\s]+("+e+")[,|\\s]+("+e+")\\s*\\)?";return{CSS_UNIT:new RegExp(e),rgb:new RegExp("rgb"+n),rgba:new RegExp("rgba"+i),hsl:new RegExp("hsl"+n),hsla:new RegExp("hsla"+i),hsv:new RegExp("hsv"+n),hsva:new RegExp("hsva"+i),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/}}();function Ba(t){return!!oa.CSS_UNIT.exec(t)}function qS(t){t=t.replace(PS,"").replace(FS,"").toLowerCase();var r=!1;if(ph[t])t=ph[t],r=!0;else if(t=="transparent")return{r:0,g:0,b:0,a:0,format:"name"};var e;return(e=oa.rgb.exec(t))?{r:e[1],g:e[2],b:e[3]}:(e=oa.rgba.exec(t))?{r:e[1],g:e[2],b:e[3],a:e[4]}:(e=oa.hsl.exec(t))?{h:e[1],s:e[2],l:e[3]}:(e=oa.hsla.exec(t))?{h:e[1],s:e[2],l:e[3],a:e[4]}:(e=oa.hsv.exec(t))?{h:e[1],s:e[2],v:e[3]}:(e=oa.hsva.exec(t))?{h:e[1],s:e[2],v:e[3],a:e[4]}:(e=oa.hex8.exec(t))?{r:wi(e[1]),g:wi(e[2]),b:wi(e[3]),a:Vp(e[4]),format:r?"name":"hex8"}:(e=oa.hex6.exec(t))?{r:wi(e[1]),g:wi(e[2]),b:wi(e[3]),format:r?"name":"hex"}:(e=oa.hex4.exec(t))?{r:wi(e[1]+""+e[1]),g:wi(e[2]+""+e[2]),b:wi(e[3]+""+e[3]),a:Vp(e[4]+""+e[4]),format:r?"name":"hex8"}:(e=oa.hex3.exec(t))?{r:wi(e[1]+""+e[1]),g:wi(e[2]+""+e[2]),b:wi(e[3]+""+e[3]),format:r?"name":"hex"}:!1}function ek(t){var r,e;return t=t||{level:"AA",size:"small"},r=(t.level||"AA").toUpperCase(),e=(t.size||"small").toLowerCase(),r!=="AA"&&r!=="AAA"&&(r="AA"),e!=="small"&&e!=="large"&&(e="small"),{level:r,size:e}}var jo={},tk={get exports(){return jo},set exports(t){jo=t}};/** + * @license + * Lodash + * Copyright OpenJS Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + */(function(t,r){(function(){var e,n="4.17.21",i=200,a="Unsupported core-js use. Try https://npms.io/search?q=ponyfill.",l="Expected a function",d="Invalid `variable` option passed into `_.template`",m="__lodash_hash_undefined__",b=500,h="__lodash_placeholder__",_=1,g=2,y=4,x=1,p=2,S=1,w=2,u=4,o=8,s=16,c=32,f=64,v=128,k=256,T=512,C=30,D="...",j=800,L=16,M=1,B=2,R=3,P=1/0,O=9007199254740991,F=17976931348623157e292,H=0/0,V=4294967295,z=V-1,X=V>>>1,I=[["ary",v],["bind",S],["bindKey",w],["curry",o],["curryRight",s],["flip",T],["partial",c],["partialRight",f],["rearg",k]],N="[object Arguments]",U="[object Array]",G="[object AsyncFunction]",te="[object Boolean]",re="[object Date]",ne="[object DOMException]",ge="[object Error]",ee="[object Function]",se="[object GeneratorFunction]",J="[object Map]",q="[object Number]",de="[object Null]",xe="[object Object]",ae="[object Promise]",fe="[object Proxy]",Ne="[object RegExp]",ie="[object Set]",Y="[object String]",Z="[object Symbol]",le="[object Undefined]",Re="[object WeakMap]",Ce="[object WeakSet]",Ge="[object ArrayBuffer]",st="[object DataView]",vt="[object Float32Array]",ft="[object Float64Array]",pt="[object Int8Array]",et="[object Int16Array]",tt="[object Int32Array]",ct="[object Uint8Array]",gt="[object Uint8ClampedArray]",he="[object Uint16Array]",De="[object Uint32Array]",Oe=/\b__p \+= '';/g,Ie=/\b(__p \+=) '' \+/g,be=/(__e\(.*?\)|\b__t\)) \+\n'';/g,Le=/&(?:amp|lt|gt|quot|#39);/g,oe=/[&<>"']/g,Qe=RegExp(Le.source),_t=RegExp(oe.source),K=/<%-([\s\S]+?)%>/g,je=/<%([\s\S]+?)%>/g,Ze=/<%=([\s\S]+?)%>/g,pe=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Ae=/^\w*$/,Xe=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,kt=/[\\^$.*+?()[\]{}|]/g,ut=RegExp(kt.source),bt=/^\s+/,Bt=/\s/,Lt=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,ue=/\{\n\/\* \[wrapped with (.+)\] \*/,ye=/,? & /,ve=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,we=/[()=,{}\[\]\/\s]/,Ee=/\\(\\)?/g,Se=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,We=/\w*$/,Je=/^[-+]0x[0-9a-f]+$/i,Be=/^0b[01]+$/i,He=/^\[object .+?Constructor\]$/,$e=/^0o[0-7]+$/i,nt=/^(?:0|[1-9]\d*)$/,Et=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,Rt=/($^)/,wt=/['\n\r\u2028\u2029\\]/g,Ct="\\ud800-\\udfff",Xt="\\u0300-\\u036f",zt="\\ufe20-\\ufe2f",or="\\u20d0-\\u20ff",gr=Xt+zt+or,$r="\\u2700-\\u27bf",Kr="a-z\\xdf-\\xf6\\xf8-\\xff",Mt="\\xac\\xb1\\xd7\\xf7",at="\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf",Te="\\u2000-\\u206f",ze=" \\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",Ye="A-Z\\xc0-\\xd6\\xd8-\\xde",Pt="\\ufe0e\\ufe0f",Ut=Mt+at+Te+ze,nr="['’]",Br="["+Ct+"]",qr="["+Ut+"]",ri="["+gr+"]",Rn="\\d+",Ka="["+$r+"]",Dn="["+Kr+"]",Zi="[^"+Ct+Ut+Rn+$r+Kr+Ye+"]",hi="\\ud83c[\\udffb-\\udfff]",Ya="(?:"+ri+"|"+hi+")",di="[^"+Ct+"]",pi="(?:\\ud83c[\\udde6-\\uddff]){2}",Ji="[\\ud800-\\udbff][\\udc00-\\udfff]",Qi="["+Ye+"]",Qs="\\u200d",qs="(?:"+Dn+"|"+Zi+")",eo="(?:"+Qi+"|"+Zi+")",Ta="(?:"+nr+"(?:d|ll|m|re|s|t|ve))?",qi="(?:"+nr+"(?:D|LL|M|RE|S|T|VE))?",to=Ya+"?",ro="["+Pt+"]?",Ci="(?:"+Qs+"(?:"+[di,pi,Ji].join("|")+")"+ro+to+")*",$o="\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",no="\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])",io=ro+to+Ci,Go="(?:"+[Ka,pi,Ji].join("|")+")"+io,Ko="(?:"+[di+ri+"?",ri,pi,Ji,Br].join("|")+")",Ri=RegExp(nr,"g"),ao=RegExp(ri,"g"),bs=RegExp(hi+"(?="+hi+")|"+Ko+io,"g"),ea=RegExp([Qi+"?"+Dn+"+"+Ta+"(?="+[qr,Qi,"$"].join("|")+")",eo+"+"+qi+"(?="+[qr,Qi+qs,"$"].join("|")+")",Qi+"?"+qs+"+"+Ta,Qi+"+"+qi,no,$o,Rn,Go].join("|"),"g"),Yo=RegExp("["+Qs+Ct+gr+Pt+"]"),Ai=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Pi=["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"],so=-1,kr={};kr[vt]=kr[ft]=kr[pt]=kr[et]=kr[tt]=kr[ct]=kr[gt]=kr[he]=kr[De]=!0,kr[N]=kr[U]=kr[Ge]=kr[te]=kr[st]=kr[re]=kr[ge]=kr[ee]=kr[J]=kr[q]=kr[xe]=kr[Ne]=kr[ie]=kr[Y]=kr[Re]=!1;var _r={};_r[N]=_r[U]=_r[Ge]=_r[st]=_r[te]=_r[re]=_r[vt]=_r[ft]=_r[pt]=_r[et]=_r[tt]=_r[J]=_r[q]=_r[xe]=_r[Ne]=_r[ie]=_r[Y]=_r[Z]=_r[ct]=_r[gt]=_r[he]=_r[De]=!0,_r[ge]=_r[ee]=_r[Re]=!1;var Oa={À:"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"},oo={"&":"&","<":"<",">":">",'"':""","'":"'"},Zo={"&":"&","<":"<",">":">",""":'"',"'":"'"},fo={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},uo=parseFloat,Pe=parseInt,Ve=typeof cr=="object"&&cr&&cr.Object===Object&&cr,dt=typeof self=="object"&&self&&self.Object===Object&&self,At=Ve||dt||Function("return this")(),vr=r&&!r.nodeType&&r,Gt=vr&&!0&&t&&!t.nodeType&&t,Mr=Gt&&Gt.exports===vr,Er=Mr&&Ve.process,xr=function(){try{var Ke=Gt&&Gt.require&&Gt.require("util").types;return Ke||Er&&Er.binding&&Er.binding("util")}catch{}}(),Dr=xr&&xr.isArrayBuffer,yn=xr&&xr.isDate,Sn=xr&&xr.isMap,Xr=xr&&xr.isRegExp,un=xr&&xr.isSet,gn=xr&&xr.isTypedArray;function zr(Ke,ht,ot){switch(ot.length){case 0:return Ke.call(ht);case 1:return Ke.call(ht,ot[0]);case 2:return Ke.call(ht,ot[0],ot[1]);case 3:return Ke.call(ht,ot[0],ot[1],ot[2])}return Ke.apply(ht,ot)}function vi(Ke,ht,ot,jt){for(var qt=-1,Or=Ke==null?0:Ke.length;++qt-1}function me(Ke,ht,ot){for(var jt=-1,qt=Ke==null?0:Ke.length;++jt-1;);return ot}function x0(Ke,ht){for(var ot=Ke.length;ot--&&tn(ht,Ke[ot],0)>-1;);return ot}function Iy(Ke,ht){for(var ot=Ke.length,jt=0;ot--;)Ke[ot]===ht&&++jt;return jt}var My=mi(Oa),Dy=mi(oo);function Ny(Ke){return"\\"+fo[Ke]}function By(Ke,ht){return Ke==null?e:Ke[ht]}function ho(Ke){return Yo.test(Ke)}function Ly(Ke){return Ai.test(Ke)}function jy(Ke){for(var ht,ot=[];!(ht=Ke.next()).done;)ot.push(ht.value);return ot}function jc(Ke){var ht=-1,ot=Array(Ke.size);return Ke.forEach(function(jt,qt){ot[++ht]=[qt,jt]}),ot}function w0(Ke,ht){return function(ot){return Ke(ht(ot))}}function Qa(Ke,ht){for(var ot=-1,jt=Ke.length,qt=0,Or=[];++ot-1}function Tg(E,A){var W=this.__data__,Q=yu(W,E);return Q<0?(++this.size,W.push([E,A])):W[Q][1]=A,this}Ca.prototype.clear=wg,Ca.prototype.delete=Sg,Ca.prototype.get=kg,Ca.prototype.has=Eg,Ca.prototype.set=Tg;function Ra(E){var A=-1,W=E==null?0:E.length;for(this.clear();++A=A?E:A)),E}function Ni(E,A,W,Q,ce,ke){var Me,Ue=A&_,qe=A&g,mt=A&y;if(W&&(Me=ce?W(E,Q,ce,ke):W(E)),Me!==e)return Me;if(!Gr(E))return E;var yt=tr(E);if(yt){if(Me=Ab(E),!Ue)return ni(E,Me)}else{var St=Bn(E),Dt=St==ee||St==se;if(is(E))return id(E,Ue);if(St==xe||St==N||Dt&&!ce){if(Me=qe||Dt?{}:Sd(E),!Ue)return qe?bb(E,Xg(Me,E)):gb(E,M0(Me,E))}else{if(!_r[St])return ce?E:{};Me=Pb(E,St,Ue)}}ke||(ke=new ra);var Ht=ke.get(E);if(Ht)return Ht;ke.set(E,Me),Qd(E)?E.forEach(function(Zt){Me.add(Ni(Zt,A,W,Zt,E,ke))}):Zd(E)&&E.forEach(function(Zt,dr){Me.set(dr,Ni(Zt,A,W,dr,E,ke))});var Yt=mt?qe?ll:cl:qe?ai:kn,fr=yt?e:Yt(E);return Yr(fr||E,function(Zt,dr){fr&&(dr=Zt,Zt=E[dr]),nf(Me,dr,Ni(Zt,A,W,dr,E,ke))}),Me}function zg(E){var A=kn(E);return function(W){return D0(W,E,A)}}function D0(E,A,W){var Q=W.length;if(E==null)return!Q;for(E=Lr(E);Q--;){var ce=W[Q],ke=A[ce],Me=E[ce];if(Me===e&&!(ce in E)||!ke(Me))return!1}return!0}function N0(E,A,W){if(typeof E!="function")throw new Mi(l);return lf(function(){E.apply(e,W)},A)}function af(E,A,W,Q){var ce=-1,ke=lo,Me=!0,Ue=E.length,qe=[],mt=A.length;if(!Ue)return qe;W&&(A=Fe(A,yi(W))),Q?(ke=me,Me=!1):A.length>=i&&(ke=Jo,Me=!1,A=new ws(A));e:for(;++cece?0:ce+W),Q=Q===e||Q>ce?ce:ar(Q),Q<0&&(Q+=ce),Q=W>Q?0:ep(Q);W0&&W(Ue)?A>1?An(Ue,A-1,W,Q,ce):rt(ce,Ue):Q||(ce[ce.length]=Ue)}return ce}var $c=cd(),j0=cd(!0);function da(E,A){return E&&$c(E,A,kn)}function Gc(E,A){return E&&j0(E,A,kn)}function bu(E,A){return Gn(A,function(W){return Ma(E[W])})}function ks(E,A){A=rs(A,E);for(var W=0,Q=A.length;E!=null&&WA}function $g(E,A){return E!=null&&Ar.call(E,A)}function Gg(E,A){return E!=null&&A in Lr(E)}function Kg(E,A,W){return E>=Nn(A,W)&&E<_n(A,W)}function Yc(E,A,W){for(var Q=W?me:lo,ce=E[0].length,ke=E.length,Me=ke,Ue=ot(ke),qe=1/0,mt=[];Me--;){var yt=E[Me];Me&&A&&(yt=Fe(yt,yi(A))),qe=Nn(yt.length,qe),Ue[Me]=!W&&(A||ce>=120&&yt.length>=120)?new ws(Me&&yt):e}yt=E[0];var St=-1,Dt=Ue[0];e:for(;++St-1;)Ue!==E&&cu.call(Ue,qe,1),cu.call(E,qe,1);return E}function Z0(E,A){for(var W=E?A.length:0,Q=W-1;W--;){var ce=A[W];if(W==Q||ce!==ke){var ke=ce;Ia(ce)?cu.call(E,ce,1):nl(E,ce)}}return E}function el(E,A){return E+du(A0()*(A-E+1))}function ob(E,A,W,Q){for(var ce=-1,ke=_n(hu((A-E)/(W||1)),0),Me=ot(ke);ke--;)Me[Q?ke:++ce]=E,E+=W;return Me}function tl(E,A){var W="";if(!E||A<1||A>O)return W;do A%2&&(W+=E),A=du(A/2),A&&(E+=E);while(A);return W}function ur(E,A){return gl(Td(E,A,si),E+"")}function fb(E){return I0(ko(E))}function ub(E,A){var W=ko(E);return Au(W,Ss(A,0,W.length))}function ff(E,A,W,Q){if(!Gr(E))return E;A=rs(A,E);for(var ce=-1,ke=A.length,Me=ke-1,Ue=E;Ue!=null&&++cece?0:ce+A),W=W>ce?ce:W,W<0&&(W+=ce),ce=A>W?0:W-A>>>0,A>>>=0;for(var ke=ot(ce);++Q>>1,Me=E[ke];Me!==null&&!bi(Me)&&(W?Me<=A:Me=i){var mt=A?null:Sb(E);if(mt)return ru(mt);Me=!1,ce=Jo,qe=new ws}else qe=A?[]:Ue;e:for(;++Q=Q?E:Bi(E,A,W)}var nd=eg||function(E){return At.clearTimeout(E)};function id(E,A){if(A)return E.slice();var W=E.length,Q=E0?E0(W):new E.constructor(W);return E.copy(Q),Q}function ol(E){var A=new E.constructor(E.byteLength);return new fu(A).set(new fu(E)),A}function pb(E,A){var W=A?ol(E.buffer):E.buffer;return new E.constructor(W,E.byteOffset,E.byteLength)}function vb(E){var A=new E.constructor(E.source,We.exec(E));return A.lastIndex=E.lastIndex,A}function mb(E){return rf?Lr(rf.call(E)):{}}function ad(E,A){var W=A?ol(E.buffer):E.buffer;return new E.constructor(W,E.byteOffset,E.length)}function sd(E,A){if(E!==A){var W=E!==e,Q=E===null,ce=E===E,ke=bi(E),Me=A!==e,Ue=A===null,qe=A===A,mt=bi(A);if(!Ue&&!mt&&!ke&&E>A||ke&&Me&&qe&&!Ue&&!mt||Q&&Me&&qe||!W&&qe||!ce)return 1;if(!Q&&!ke&&!mt&&E=Ue)return qe;var mt=W[Q];return qe*(mt=="desc"?-1:1)}}return E.index-A.index}function od(E,A,W,Q){for(var ce=-1,ke=E.length,Me=W.length,Ue=-1,qe=A.length,mt=_n(ke-Me,0),yt=ot(qe+mt),St=!Q;++Ue1?W[ce-1]:e,Me=ce>2?W[2]:e;for(ke=E.length>3&&typeof ke=="function"?(ce--,ke):e,Me&&Jn(W[0],W[1],Me)&&(ke=ce<3?e:ke,ce=1),A=Lr(A);++Q-1?ce[ke?A[Me]:Me]:e}}function dd(E){return Fa(function(A){var W=A.length,Q=W,ce=Di.prototype.thru;for(E&&A.reverse();Q--;){var ke=A[Q];if(typeof ke!="function")throw new Mi(l);if(ce&&!Me&&Cu(ke)=="wrapper")var Me=new Di([],!0)}for(Q=Me?Q:W;++Q1&&br.reverse(),yt&&qeUe))return!1;var mt=ke.get(E),yt=ke.get(A);if(mt&&yt)return mt==A&&yt==E;var St=-1,Dt=!0,Ht=W&p?new ws:e;for(ke.set(E,A),ke.set(A,E);++St1?"& ":"")+A[Q],A=A.join(W>2?", ":" "),E.replace(Lt,`{ +/* [wrapped with `+A+`] */ +`)}function Ib(E){return tr(E)||Os(E)||!!(C0&&E&&E[C0])}function Ia(E,A){var W=typeof E;return A=A??O,!!A&&(W=="number"||W!="symbol"&&nt.test(E))&&E>-1&&E%1==0&&E0){if(++A>=j)return arguments[0]}else A=0;return E.apply(e,arguments)}}function Au(E,A){var W=-1,Q=E.length,ce=Q-1;for(A=A===e?Q:A;++W1?E[A-1]:e;return W=typeof W=="function"?(E.pop(),W):e,Ld(E,W)});function jd(E){var A=_e(E);return A.__chain__=!0,A}function W_(E,A){return A(E),E}function Pu(E,A){return A(E)}var V_=Fa(function(E){var A=E.length,W=A?E[0]:0,Q=this.__wrapped__,ce=function(ke){return Vc(ke,E)};return A>1||this.__actions__.length||!(Q instanceof mr)||!Ia(W)?this.thru(ce):(Q=Q.slice(W,+W+(A?1:0)),Q.__actions__.push({func:Pu,args:[ce],thisArg:e}),new Di(Q,this.__chain__).thru(function(ke){return A&&!ke.length&&ke.push(e),ke}))});function $_(){return jd(this)}function G_(){return new Di(this.value(),this.__chain__)}function K_(){this.__values__===e&&(this.__values__=qd(this.value()));var E=this.__index__>=this.__values__.length,A=E?e:this.__values__[this.__index__++];return{done:E,value:A}}function Y_(){return this}function Z_(E){for(var A,W=this;W instanceof mu;){var Q=Fd(W);Q.__index__=0,Q.__values__=e,A?ce.__wrapped__=Q:A=Q;var ce=Q;W=W.__wrapped__}return ce.__wrapped__=E,A}function J_(){var E=this.__wrapped__;if(E instanceof mr){var A=E;return this.__actions__.length&&(A=new mr(this)),A=A.reverse(),A.__actions__.push({func:Pu,args:[bl],thisArg:e}),new Di(A,this.__chain__)}return this.thru(bl)}function Q_(){return td(this.__wrapped__,this.__actions__)}var q_=Su(function(E,A,W){Ar.call(E,W)?++E[W]:Aa(E,W,1)});function ex(E,A,W){var Q=tr(E)?Fi:Wg;return W&&Jn(E,A,W)&&(A=e),Q(E,Kt(A,3))}function tx(E,A){var W=tr(E)?Gn:L0;return W(E,Kt(A,3))}var rx=hd(Id),nx=hd(Md);function ix(E,A){return An(Fu(E,A),1)}function ax(E,A){return An(Fu(E,A),P)}function sx(E,A,W){return W=W===e?1:ar(W),An(Fu(E,A),W)}function Ud(E,A){var W=tr(E)?Yr:es;return W(E,Kt(A,3))}function Hd(E,A){var W=tr(E)?co:B0;return W(E,Kt(A,3))}var ox=Su(function(E,A,W){Ar.call(E,W)?E[W].push(A):Aa(E,W,[A])});function fx(E,A,W,Q){E=ii(E)?E:ko(E),W=W&&!Q?ar(W):0;var ce=E.length;return W<0&&(W=_n(ce+W,0)),Bu(E)?W<=ce&&E.indexOf(A,W)>-1:!!ce&&tn(E,A,W)>-1}var ux=ur(function(E,A,W){var Q=-1,ce=typeof A=="function",ke=ii(E)?ot(E.length):[];return es(E,function(Me){ke[++Q]=ce?zr(A,Me,W):sf(Me,A,W)}),ke}),cx=Su(function(E,A,W){Aa(E,W,A)});function Fu(E,A){var W=tr(E)?Fe:W0;return W(E,Kt(A,3))}function lx(E,A,W,Q){return E==null?[]:(tr(A)||(A=A==null?[]:[A]),W=Q?e:W,tr(W)||(W=W==null?[]:[W]),K0(E,A,W))}var hx=Su(function(E,A,W){E[W?0:1].push(A)},function(){return[[],[]]});function dx(E,A,W){var Q=tr(E)?Tt:ha,ce=arguments.length<3;return Q(E,Kt(A,4),W,ce,es)}function px(E,A,W){var Q=tr(E)?Wt:ha,ce=arguments.length<3;return Q(E,Kt(A,4),W,ce,B0)}function vx(E,A){var W=tr(E)?Gn:L0;return W(E,Du(Kt(A,3)))}function mx(E){var A=tr(E)?I0:fb;return A(E)}function yx(E,A,W){(W?Jn(E,A,W):A===e)?A=1:A=ar(A);var Q=tr(E)?jg:ub;return Q(E,A)}function gx(E){var A=tr(E)?Ug:lb;return A(E)}function bx(E){if(E==null)return 0;if(ii(E))return Bu(E)?po(E):E.length;var A=Bn(E);return A==J||A==ie?E.size:Jc(E).length}function _x(E,A,W){var Q=tr(E)?Nt:hb;return W&&Jn(E,A,W)&&(A=e),Q(E,Kt(A,3))}var xx=ur(function(E,A){if(E==null)return[];var W=A.length;return W>1&&Jn(E,A[0],A[1])?A=[]:W>2&&Jn(A[0],A[1],A[2])&&(A=[A[0]]),K0(E,An(A,1),[])}),Iu=tg||function(){return At.Date.now()};function wx(E,A){if(typeof A!="function")throw new Mi(l);return E=ar(E),function(){if(--E<1)return A.apply(this,arguments)}}function Xd(E,A,W){return A=W?e:A,A=E&&A==null?E.length:A,Pa(E,v,e,e,e,e,A)}function zd(E,A){var W;if(typeof A!="function")throw new Mi(l);return E=ar(E),function(){return--E>0&&(W=A.apply(this,arguments)),E<=1&&(A=e),W}}var xl=ur(function(E,A,W){var Q=S;if(W.length){var ce=Qa(W,wo(xl));Q|=c}return Pa(E,Q,A,W,ce)}),Wd=ur(function(E,A,W){var Q=S|w;if(W.length){var ce=Qa(W,wo(Wd));Q|=c}return Pa(A,Q,E,W,ce)});function Vd(E,A,W){A=W?e:A;var Q=Pa(E,o,e,e,e,e,e,A);return Q.placeholder=Vd.placeholder,Q}function $d(E,A,W){A=W?e:A;var Q=Pa(E,s,e,e,e,e,e,A);return Q.placeholder=$d.placeholder,Q}function Gd(E,A,W){var Q,ce,ke,Me,Ue,qe,mt=0,yt=!1,St=!1,Dt=!0;if(typeof E!="function")throw new Mi(l);A=ji(A)||0,Gr(W)&&(yt=!!W.leading,St="maxWait"in W,ke=St?_n(ji(W.maxWait)||0,A):ke,Dt="trailing"in W?!!W.trailing:Dt);function Ht(nn){var ia=Q,Na=ce;return Q=ce=e,mt=nn,Me=E.apply(Na,ia),Me}function Yt(nn){return mt=nn,Ue=lf(dr,A),yt?Ht(nn):Me}function fr(nn){var ia=nn-qe,Na=nn-mt,hp=A-ia;return St?Nn(hp,ke-Na):hp}function Zt(nn){var ia=nn-qe,Na=nn-mt;return qe===e||ia>=A||ia<0||St&&Na>=ke}function dr(){var nn=Iu();if(Zt(nn))return br(nn);Ue=lf(dr,fr(nn))}function br(nn){return Ue=e,Dt&&Q?Ht(nn):(Q=ce=e,Me)}function _i(){Ue!==e&&nd(Ue),mt=0,Q=qe=ce=Ue=e}function Qn(){return Ue===e?Me:br(Iu())}function xi(){var nn=Iu(),ia=Zt(nn);if(Q=arguments,ce=this,qe=nn,ia){if(Ue===e)return Yt(qe);if(St)return nd(Ue),Ue=lf(dr,A),Ht(qe)}return Ue===e&&(Ue=lf(dr,A)),Me}return xi.cancel=_i,xi.flush=Qn,xi}var Sx=ur(function(E,A){return N0(E,1,A)}),kx=ur(function(E,A,W){return N0(E,ji(A)||0,W)});function Ex(E){return Pa(E,T)}function Mu(E,A){if(typeof E!="function"||A!=null&&typeof A!="function")throw new Mi(l);var W=function(){var Q=arguments,ce=A?A.apply(this,Q):Q[0],ke=W.cache;if(ke.has(ce))return ke.get(ce);var Me=E.apply(this,Q);return W.cache=ke.set(ce,Me)||ke,Me};return W.cache=new(Mu.Cache||Ra),W}Mu.Cache=Ra;function Du(E){if(typeof E!="function")throw new Mi(l);return function(){var A=arguments;switch(A.length){case 0:return!E.call(this);case 1:return!E.call(this,A[0]);case 2:return!E.call(this,A[0],A[1]);case 3:return!E.call(this,A[0],A[1],A[2])}return!E.apply(this,A)}}function Tx(E){return zd(2,E)}var Ox=db(function(E,A){A=A.length==1&&tr(A[0])?Fe(A[0],yi(Kt())):Fe(An(A,1),yi(Kt()));var W=A.length;return ur(function(Q){for(var ce=-1,ke=Nn(Q.length,W);++ce=A}),Os=H0(function(){return arguments}())?H0:function(E){return Zr(E)&&Ar.call(E,"callee")&&!O0.call(E,"callee")},tr=ot.isArray,Xx=Dr?yi(Dr):Zg;function ii(E){return E!=null&&Nu(E.length)&&!Ma(E)}function rn(E){return Zr(E)&&ii(E)}function zx(E){return E===!0||E===!1||Zr(E)&&Zn(E)==te}var is=ng||Il,Wx=yn?yi(yn):Jg;function Vx(E){return Zr(E)&&E.nodeType===1&&!hf(E)}function $x(E){if(E==null)return!0;if(ii(E)&&(tr(E)||typeof E=="string"||typeof E.splice=="function"||is(E)||So(E)||Os(E)))return!E.length;var A=Bn(E);if(A==J||A==ie)return!E.size;if(cf(E))return!Jc(E).length;for(var W in E)if(Ar.call(E,W))return!1;return!0}function Gx(E,A){return of(E,A)}function Kx(E,A,W){W=typeof W=="function"?W:e;var Q=W?W(E,A):e;return Q===e?of(E,A,e,W):!!Q}function Sl(E){if(!Zr(E))return!1;var A=Zn(E);return A==ge||A==ne||typeof E.message=="string"&&typeof E.name=="string"&&!hf(E)}function Yx(E){return typeof E=="number"&&R0(E)}function Ma(E){if(!Gr(E))return!1;var A=Zn(E);return A==ee||A==se||A==G||A==fe}function Yd(E){return typeof E=="number"&&E==ar(E)}function Nu(E){return typeof E=="number"&&E>-1&&E%1==0&&E<=O}function Gr(E){var A=typeof E;return E!=null&&(A=="object"||A=="function")}function Zr(E){return E!=null&&typeof E=="object"}var Zd=Sn?yi(Sn):qg;function Zx(E,A){return E===A||Zc(E,A,dl(A))}function Jx(E,A,W){return W=typeof W=="function"?W:e,Zc(E,A,dl(A),W)}function Qx(E){return Jd(E)&&E!=+E}function qx(E){if(Nb(E))throw new qt(a);return X0(E)}function ew(E){return E===null}function tw(E){return E==null}function Jd(E){return typeof E=="number"||Zr(E)&&Zn(E)==q}function hf(E){if(!Zr(E)||Zn(E)!=xe)return!1;var A=uu(E);if(A===null)return!0;var W=Ar.call(A,"constructor")&&A.constructor;return typeof W=="function"&&W instanceof W&&au.call(W)==Jy}var kl=Xr?yi(Xr):eb;function rw(E){return Yd(E)&&E>=-O&&E<=O}var Qd=un?yi(un):tb;function Bu(E){return typeof E=="string"||!tr(E)&&Zr(E)&&Zn(E)==Y}function bi(E){return typeof E=="symbol"||Zr(E)&&Zn(E)==Z}var So=gn?yi(gn):rb;function nw(E){return E===e}function iw(E){return Zr(E)&&Bn(E)==Re}function aw(E){return Zr(E)&&Zn(E)==Ce}var sw=Ou(Qc),ow=Ou(function(E,A){return E<=A});function qd(E){if(!E)return[];if(ii(E))return Bu(E)?ta(E):ni(E);if(Qo&&E[Qo])return jy(E[Qo]());var A=Bn(E),W=A==J?jc:A==ie?ru:ko;return W(E)}function Da(E){if(!E)return E===0?E:0;if(E=ji(E),E===P||E===-P){var A=E<0?-1:1;return A*F}return E===E?E:0}function ar(E){var A=Da(E),W=A%1;return A===A?W?A-W:A:0}function ep(E){return E?Ss(ar(E),0,V):0}function ji(E){if(typeof E=="number")return E;if(bi(E))return H;if(Gr(E)){var A=typeof E.valueOf=="function"?E.valueOf():E;E=Gr(A)?A+"":A}if(typeof E!="string")return E===0?E:+E;E=b0(E);var W=Be.test(E);return W||$e.test(E)?Pe(E.slice(2),W?2:8):Je.test(E)?H:+E}function tp(E){return pa(E,ai(E))}function fw(E){return E?Ss(ar(E),-O,O):E===0?E:0}function Cr(E){return E==null?"":gi(E)}var uw=_o(function(E,A){if(cf(A)||ii(A)){pa(A,kn(A),E);return}for(var W in A)Ar.call(A,W)&&nf(E,W,A[W])}),rp=_o(function(E,A){pa(A,ai(A),E)}),Lu=_o(function(E,A,W,Q){pa(A,ai(A),E,Q)}),cw=_o(function(E,A,W,Q){pa(A,kn(A),E,Q)}),lw=Fa(Vc);function hw(E,A){var W=bo(E);return A==null?W:M0(W,A)}var dw=ur(function(E,A){E=Lr(E);var W=-1,Q=A.length,ce=Q>2?A[2]:e;for(ce&&Jn(A[0],A[1],ce)&&(Q=1);++W1),ke}),pa(E,ll(E),W),Q&&(W=Ni(W,_|g|y,kb));for(var ce=A.length;ce--;)nl(W,A[ce]);return W});function Pw(E,A){return ip(E,Du(Kt(A)))}var Fw=Fa(function(E,A){return E==null?{}:ab(E,A)});function ip(E,A){if(E==null)return{};var W=Fe(ll(E),function(Q){return[Q]});return A=Kt(A),Y0(E,W,function(Q,ce){return A(Q,ce[0])})}function Iw(E,A,W){A=rs(A,E);var Q=-1,ce=A.length;for(ce||(ce=1,E=e);++QA){var Q=E;E=A,A=Q}if(W||E%1||A%1){var ce=A0();return Nn(E+ce*(A-E+uo("1e-"+((ce+"").length-1))),A)}return el(E,A)}var Ww=xo(function(E,A,W){return A=A.toLowerCase(),E+(W?op(A):A)});function op(E){return Ol(Cr(E).toLowerCase())}function fp(E){return E=Cr(E),E&&E.replace(Et,My).replace(ao,"")}function Vw(E,A,W){E=Cr(E),A=gi(A);var Q=E.length;W=W===e?Q:Ss(ar(W),0,Q);var ce=W;return W-=A.length,W>=0&&E.slice(W,ce)==A}function $w(E){return E=Cr(E),E&&_t.test(E)?E.replace(oe,Dy):E}function Gw(E){return E=Cr(E),E&&ut.test(E)?E.replace(kt,"\\$&"):E}var Kw=xo(function(E,A,W){return E+(W?"-":"")+A.toLowerCase()}),Yw=xo(function(E,A,W){return E+(W?" ":"")+A.toLowerCase()}),Zw=ld("toLowerCase");function Jw(E,A,W){E=Cr(E),A=ar(A);var Q=A?po(E):0;if(!A||Q>=A)return E;var ce=(A-Q)/2;return Tu(du(ce),W)+E+Tu(hu(ce),W)}function Qw(E,A,W){E=Cr(E),A=ar(A);var Q=A?po(E):0;return A&&Q>>0,W?(E=Cr(E),E&&(typeof A=="string"||A!=null&&!kl(A))&&(A=gi(A),!A&&ho(E))?ns(ta(E),0,W):E.split(A,W)):[]}var a2=xo(function(E,A,W){return E+(W?" ":"")+Ol(A)});function s2(E,A,W){return E=Cr(E),W=W==null?0:Ss(ar(W),0,E.length),A=gi(A),E.slice(W,W+A.length)==A}function o2(E,A,W){var Q=_e.templateSettings;W&&Jn(E,A,W)&&(A=e),E=Cr(E),A=Lu({},A,Q,gd);var ce=Lu({},A.imports,Q.imports,gd),ke=kn(ce),Me=Lc(ce,ke),Ue,qe,mt=0,yt=A.interpolate||Rt,St="__p += '",Dt=Uc((A.escape||Rt).source+"|"+yt.source+"|"+(yt===Ze?Se:Rt).source+"|"+(A.evaluate||Rt).source+"|$","g"),Ht="//# sourceURL="+(Ar.call(A,"sourceURL")?(A.sourceURL+"").replace(/\s/g," "):"lodash.templateSources["+ ++so+"]")+` +`;E.replace(Dt,function(Zt,dr,br,_i,Qn,xi){return br||(br=_i),St+=E.slice(mt,xi).replace(wt,Ny),dr&&(Ue=!0,St+=`' + +__e(`+dr+`) + +'`),Qn&&(qe=!0,St+=`'; +`+Qn+`; +__p += '`),br&&(St+=`' + +((__t = (`+br+`)) == null ? '' : __t) + +'`),mt=xi+Zt.length,Zt}),St+=`'; +`;var Yt=Ar.call(A,"variable")&&A.variable;if(!Yt)St=`with (obj) { +`+St+` +} +`;else if(we.test(Yt))throw new qt(d);St=(qe?St.replace(Oe,""):St).replace(Ie,"$1").replace(be,"$1;"),St="function("+(Yt||"obj")+`) { +`+(Yt?"":`obj || (obj = {}); +`)+"var __t, __p = ''"+(Ue?", __e = _.escape":"")+(qe?`, __j = Array.prototype.join; +function print() { __p += __j.call(arguments, '') } +`:`; +`)+St+`return __p +}`;var fr=cp(function(){return Or(ke,Ht+"return "+St).apply(e,Me)});if(fr.source=St,Sl(fr))throw fr;return fr}function f2(E){return Cr(E).toLowerCase()}function u2(E){return Cr(E).toUpperCase()}function c2(E,A,W){if(E=Cr(E),E&&(W||A===e))return b0(E);if(!E||!(A=gi(A)))return E;var Q=ta(E),ce=ta(A),ke=_0(Q,ce),Me=x0(Q,ce)+1;return ns(Q,ke,Me).join("")}function l2(E,A,W){if(E=Cr(E),E&&(W||A===e))return E.slice(0,S0(E)+1);if(!E||!(A=gi(A)))return E;var Q=ta(E),ce=x0(Q,ta(A))+1;return ns(Q,0,ce).join("")}function h2(E,A,W){if(E=Cr(E),E&&(W||A===e))return E.replace(bt,"");if(!E||!(A=gi(A)))return E;var Q=ta(E),ce=_0(Q,ta(A));return ns(Q,ce).join("")}function d2(E,A){var W=C,Q=D;if(Gr(A)){var ce="separator"in A?A.separator:ce;W="length"in A?ar(A.length):W,Q="omission"in A?gi(A.omission):Q}E=Cr(E);var ke=E.length;if(ho(E)){var Me=ta(E);ke=Me.length}if(W>=ke)return E;var Ue=W-po(Q);if(Ue<1)return Q;var qe=Me?ns(Me,0,Ue).join(""):E.slice(0,Ue);if(ce===e)return qe+Q;if(Me&&(Ue+=qe.length-Ue),kl(ce)){if(E.slice(Ue).search(ce)){var mt,yt=qe;for(ce.global||(ce=Uc(ce.source,Cr(We.exec(ce))+"g")),ce.lastIndex=0;mt=ce.exec(yt);)var St=mt.index;qe=qe.slice(0,St===e?Ue:St)}}else if(E.indexOf(gi(ce),Ue)!=Ue){var Dt=qe.lastIndexOf(ce);Dt>-1&&(qe=qe.slice(0,Dt))}return qe+Q}function p2(E){return E=Cr(E),E&&Qe.test(E)?E.replace(Le,zy):E}var v2=xo(function(E,A,W){return E+(W?" ":"")+A.toUpperCase()}),Ol=ld("toUpperCase");function up(E,A,W){return E=Cr(E),A=W?e:A,A===e?Ly(E)?$y(E):jr(E):E.match(A)||[]}var cp=ur(function(E,A){try{return zr(E,e,A)}catch(W){return Sl(W)?W:new qt(W)}}),m2=Fa(function(E,A){return Yr(A,function(W){W=va(W),Aa(E,W,xl(E[W],E))}),E});function y2(E){var A=E==null?0:E.length,W=Kt();return E=A?Fe(E,function(Q){if(typeof Q[1]!="function")throw new Mi(l);return[W(Q[0]),Q[1]]}):[],ur(function(Q){for(var ce=-1;++ceO)return[];var W=V,Q=Nn(E,V);A=Kt(A),E-=V;for(var ce=Ja(Q,A);++W0||A<0)?new mr(W):(E<0?W=W.takeRight(-E):E&&(W=W.drop(E)),A!==e&&(A=ar(A),W=A<0?W.dropRight(-A):W.take(A-E)),W)},mr.prototype.takeRightWhile=function(E){return this.reverse().takeWhile(E).reverse()},mr.prototype.toArray=function(){return this.take(V)},da(mr.prototype,function(E,A){var W=/^(?:filter|find|map|reject)|While$/.test(A),Q=/^(?:head|last)$/.test(A),ce=_e[Q?"take"+(A=="last"?"Right":""):A],ke=Q||/^find/.test(A);ce&&(_e.prototype[A]=function(){var Me=this.__wrapped__,Ue=Q?[1]:arguments,qe=Me instanceof mr,mt=Ue[0],yt=qe||tr(Me),St=function(dr){var br=ce.apply(_e,rt([dr],Ue));return Q&&Dt?br[0]:br};yt&&W&&typeof mt=="function"&&mt.length!=1&&(qe=yt=!1);var Dt=this.__chain__,Ht=!!this.__actions__.length,Yt=ke&&!Dt,fr=qe&&!Ht;if(!ke&&yt){Me=fr?Me:new mr(this);var Zt=E.apply(Me,Ue);return Zt.__actions__.push({func:Pu,args:[St],thisArg:e}),new Di(Zt,Dt)}return Yt&&fr?E.apply(this,Ue):(Zt=this.thru(St),Yt?Q?Zt.value()[0]:Zt.value():Zt)})}),Yr(["pop","push","shift","sort","splice","unshift"],function(E){var A=nu[E],W=/^(?:push|sort|unshift)$/.test(E)?"tap":"thru",Q=/^(?:pop|shift)$/.test(E);_e.prototype[E]=function(){var ce=arguments;if(Q&&!this.__chain__){var ke=this.value();return A.apply(tr(ke)?ke:[],ce)}return this[W](function(Me){return A.apply(tr(Me)?Me:[],ce)})}}),da(mr.prototype,function(E,A){var W=_e[A];if(W){var Q=W.name+"";Ar.call(go,Q)||(go[Q]=[]),go[Q].push({name:A,func:W})}}),go[ku(e,w).name]=[{name:"wrapper",func:e}],mr.prototype.clone=pg,mr.prototype.reverse=vg,mr.prototype.value=mg,_e.prototype.at=V_,_e.prototype.chain=$_,_e.prototype.commit=G_,_e.prototype.next=K_,_e.prototype.plant=Z_,_e.prototype.reverse=J_,_e.prototype.toJSON=_e.prototype.valueOf=_e.prototype.value=Q_,_e.prototype.first=_e.prototype.head,Qo&&(_e.prototype[Qo]=Y_),_e},vo=Gy();Gt?((Gt.exports=vo)._=vo,vr._=vo):At._=vo}).call(cr)})(tk,jo);function wm(t){t=t.replace("#","");for(var r=t.match(/../g),e=0;e<3;e++)r[e]=parseInt(r[e],16);return r}function Sm(t,r,e){for(var n=[t.toString(16),r.toString(16),e.toString(16)],i=0;i<3;i++)n[i].length==1&&(n[i]="0"+n[i]);return"#"+n.join("")}function rk(t,r){for(var e=wm(t),n=0;n<3;n++)e[n]=Math.floor(e[n]*(1-r));return Sm(e[0],e[1],e[2])}function nk(t,r){for(var e=wm(t),n=0;n<3;n++)e[n]=Math.floor((255-e[n])*r+e[n]);return Sm(e[0],e[1],e[2])}/*! xlsx.js (C) 2013-present SheetJS -- http://sheetjs.com */var vc={};vc.version="0.18.5";var km=1252,ik=[874,932,936,949,950,1250,1251,1252,1253,1254,1255,1256,1257,1258,1e4],Bh={0:1252,1:65001,2:65001,77:1e4,128:932,129:949,130:1361,134:936,136:950,161:1253,162:1254,163:1258,177:1255,178:1256,186:1257,204:1251,222:874,238:1250,255:1252,69:6969},Lh=function(t){ik.indexOf(t)!=-1&&(km=Bh[0]=t)};function ak(){Lh(1252)}var ua=function(t){Lh(t)};function jh(){ua(1200),ak()}function $p(t){for(var r=[],e=0,n=t.length;e>1;++e)r[e]=String.fromCharCode(t.charCodeAt(2*e)+(t.charCodeAt(2*e+1)<<8));return r.join("")}function Em(t){for(var r=[],e=0;e>1;++e)r[e]=String.fromCharCode(t.charCodeAt(2*e+1)+(t.charCodeAt(2*e)<<8));return r.join("")}var bf=function(t){var r=t.charCodeAt(0),e=t.charCodeAt(1);return r==255&&e==254?sk(t.slice(2)):r==254&&e==255?Em(t.slice(2)):r==65279?t.slice(1):t},$u=function(r){return String.fromCharCode(r)},Gp=function(r){return String.fromCharCode(r)},fs,us="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";function Af(t){for(var r="",e=0,n=0,i=0,a=0,l=0,d=0,m=0,b=0;b>2,n=t.charCodeAt(b++),l=(e&3)<<4|n>>4,i=t.charCodeAt(b++),d=(n&15)<<2|i>>6,m=i&63,isNaN(n)?d=m=64:isNaN(i)&&(m=64),r+=us.charAt(a)+us.charAt(l)+us.charAt(d)+us.charAt(m);return r}function Oi(t){var r="",e=0,n=0,i=0,a=0,l=0,d=0,m=0;t=t.replace(/[^\w\+\/\=]/g,"");for(var b=0;b>4,r+=String.fromCharCode(e),d=us.indexOf(t.charAt(b++)),n=(l&15)<<4|d>>2,d!==64&&(r+=String.fromCharCode(n)),m=us.indexOf(t.charAt(b++)),i=(d&3)<<6|m,m!==64&&(r+=String.fromCharCode(i));return r}var lr=function(){return typeof Buffer<"u"&&typeof process<"u"&&typeof process.versions<"u"&&!!process.versions.node}(),Va=function(){if(typeof Buffer<"u"){var t=!Buffer.from;if(!t)try{Buffer.from("foo","utf8")}catch{t=!0}return t?function(r,e){return e?new Buffer(r,e):new Buffer(r)}:Buffer.from.bind(Buffer)}return function(){}}();function hs(t){return lr?Buffer.alloc?Buffer.alloc(t):new Buffer(t):typeof Uint8Array<"u"?new Uint8Array(t):new Array(t)}function Kp(t){return lr?Buffer.allocUnsafe?Buffer.allocUnsafe(t):new Buffer(t):typeof Uint8Array<"u"?new Uint8Array(t):new Array(t)}var Ei=function(r){return lr?Va(r,"binary"):r.split("").map(function(e){return e.charCodeAt(0)&255})};function Rc(t){if(typeof ArrayBuffer>"u")return Ei(t);for(var r=new ArrayBuffer(t.length),e=new Uint8Array(r),n=0;n!=t.length;++n)e[n]=t.charCodeAt(n)&255;return r}function ys(t){if(Array.isArray(t))return t.map(function(n){return String.fromCharCode(n)}).join("");for(var r=[],e=0;e"u")throw new Error("Unsupported");return new Uint8Array(t)}function Uh(t){if(typeof ArrayBuffer>"u")throw new Error("Unsupported");if(t instanceof ArrayBuffer)return Uh(new Uint8Array(t));for(var r=new Array(t.length),e=0;e>6&31,i[e++]=128|l&63;else if(l>=55296&&l<57344){l=(l&1023)+64;var d=t.charCodeAt(++a)&1023;i[e++]=240|l>>8&7,i[e++]=128|l>>2&63,i[e++]=128|d>>6&15|(l&3)<<4,i[e++]=128|d&63}else i[e++]=224|l>>12&15,i[e++]=128|l>>6&63,i[e++]=128|l&63;e>n&&(r.push(i.slice(0,e)),e=0,i=hs(65535),n=65530)}return r.push(i.slice(0,e)),Tn(r)}var ti=/\u0000/g,_f=/[\u0001-\u0006]/g;function Do(t){for(var r="",e=t.length-1;e>=0;)r+=t.charAt(e--);return r}function ca(t,r){var e=""+t;return e.length>=r?e:Jr("0",r-e.length)+e}function Hh(t,r){var e=""+t;return e.length>=r?e:Jr(" ",r-e.length)+e}function mc(t,r){var e=""+t;return e.length>=r?e:e+Jr(" ",r-e.length)}function uk(t,r){var e=""+Math.round(t);return e.length>=r?e:Jr("0",r-e.length)+e}function ck(t,r){var e=""+t;return e.length>=r?e:Jr("0",r-e.length)+e}var Yp=Math.pow(2,32);function Ro(t,r){if(t>Yp||t<-Yp)return uk(t,r);var e=Math.round(t);return ck(e,r)}function yc(t,r){return r=r||0,t.length>=7+r&&(t.charCodeAt(r)|32)===103&&(t.charCodeAt(r+1)|32)===101&&(t.charCodeAt(r+2)|32)===110&&(t.charCodeAt(r+3)|32)===101&&(t.charCodeAt(r+4)|32)===114&&(t.charCodeAt(r+5)|32)===97&&(t.charCodeAt(r+6)|32)===108}var Zp=[["Sun","Sunday"],["Mon","Monday"],["Tue","Tuesday"],["Wed","Wednesday"],["Thu","Thursday"],["Fri","Friday"],["Sat","Saturday"]],jl=[["J","Jan","January"],["F","Feb","February"],["M","Mar","March"],["A","Apr","April"],["M","May","May"],["J","Jun","June"],["J","Jul","July"],["A","Aug","August"],["S","Sep","September"],["O","Oct","October"],["N","Nov","November"],["D","Dec","December"]];function lk(t){return t||(t={}),t[0]="General",t[1]="0",t[2]="0.00",t[3]="#,##0",t[4]="#,##0.00",t[9]="0%",t[10]="0.00%",t[11]="0.00E+00",t[12]="# ?/?",t[13]="# ??/??",t[14]="m/d/yy",t[15]="d-mmm-yy",t[16]="d-mmm",t[17]="mmm-yy",t[18]="h:mm AM/PM",t[19]="h:mm:ss AM/PM",t[20]="h:mm",t[21]="h:mm:ss",t[22]="m/d/yy h:mm",t[37]="#,##0 ;(#,##0)",t[38]="#,##0 ;[Red](#,##0)",t[39]="#,##0.00;(#,##0.00)",t[40]="#,##0.00;[Red](#,##0.00)",t[45]="mm:ss",t[46]="[h]:mm:ss",t[47]="mmss.0",t[48]="##0.0E+0",t[49]="@",t[56]='"上午/下午 "hh"時"mm"分"ss"秒 "',t}var Jt={0:"General",1:"0",2:"0.00",3:"#,##0",4:"#,##0.00",9:"0%",10:"0.00%",11:"0.00E+00",12:"# ?/?",13:"# ??/??",14:"m/d/yy",15:"d-mmm-yy",16:"d-mmm",17:"mmm-yy",18:"h:mm AM/PM",19:"h:mm:ss AM/PM",20:"h:mm",21:"h:mm:ss",22:"m/d/yy h:mm",37:"#,##0 ;(#,##0)",38:"#,##0 ;[Red](#,##0)",39:"#,##0.00;(#,##0.00)",40:"#,##0.00;[Red](#,##0.00)",45:"mm:ss",46:"[h]:mm:ss",47:"mmss.0",48:"##0.0E+0",49:"@",56:'"上午/下午 "hh"時"mm"分"ss"秒 "'},Jp={5:37,6:38,7:39,8:40,23:0,24:0,25:0,26:0,27:14,28:14,29:14,30:14,31:14,50:14,51:14,52:14,53:14,54:14,55:14,56:14,57:14,58:14,59:1,60:2,61:3,62:4,67:9,68:10,69:12,70:13,71:14,72:14,73:15,74:16,75:17,76:20,77:21,78:22,79:45,80:46,81:47,82:0},hk={5:'"$"#,##0_);\\("$"#,##0\\)',63:'"$"#,##0_);\\("$"#,##0\\)',6:'"$"#,##0_);[Red]\\("$"#,##0\\)',64:'"$"#,##0_);[Red]\\("$"#,##0\\)',7:'"$"#,##0.00_);\\("$"#,##0.00\\)',65:'"$"#,##0.00_);\\("$"#,##0.00\\)',8:'"$"#,##0.00_);[Red]\\("$"#,##0.00\\)',66:'"$"#,##0.00_);[Red]\\("$"#,##0.00\\)',41:'_(* #,##0_);_(* \\(#,##0\\);_(* "-"_);_(@_)',42:'_("$"* #,##0_);_("$"* \\(#,##0\\);_("$"* "-"_);_(@_)',43:'_(* #,##0.00_);_(* \\(#,##0.00\\);_(* "-"??_);_(@_)',44:'_("$"* #,##0.00_);_("$"* \\(#,##0.00\\);_("$"* "-"??_);_(@_)'};function gc(t,r,e){for(var n=t<0?-1:1,i=t*n,a=0,l=1,d=0,m=1,b=0,h=0,_=Math.floor(i);br&&(b>r?(h=m,d=a):(h=b,d=l)),!e)return[0,n*d,h];var g=Math.floor(n*d/h);return[g,n*d-g*h,h]}function Ps(t,r,e){if(t>2958465||t<0)return null;var n=t|0,i=Math.floor(86400*(t-n)),a=0,l=[],d={D:n,T:i,u:86400*(t-n)-i,y:0,m:0,d:0,H:0,M:0,S:0,q:0};if(Math.abs(d.u)<1e-6&&(d.u=0),r&&r.date1904&&(n+=1462),d.u>.9999&&(d.u=0,++i==86400&&(d.T=i=0,++n,++d.D)),n===60)l=e?[1317,10,29]:[1900,2,29],a=3;else if(n===0)l=e?[1317,8,29]:[1900,1,0],a=6;else{n>60&&--n;var m=new Date(1900,0,1);m.setDate(m.getDate()+n-1),l=[m.getFullYear(),m.getMonth()+1,m.getDate()],a=m.getDay(),n<60&&(a=(a+6)%7),e&&(a=gk(m,l))}return d.y=l[0],d.m=l[1],d.d=l[2],d.S=i%60,i=Math.floor(i/60),d.M=i%60,i=Math.floor(i/60),d.H=i,d.q=a,d}var Tm=new Date(1899,11,31,0,0,0),dk=Tm.getTime(),pk=new Date(1900,2,1,0,0,0);function Om(t,r){var e=t.getTime();return r?e-=1461*24*60*60*1e3:t>=pk&&(e+=24*60*60*1e3),(e-(dk+(t.getTimezoneOffset()-Tm.getTimezoneOffset())*6e4))/(24*60*60*1e3)}function Xh(t){return t.indexOf(".")==-1?t:t.replace(/(?:\.0*|(\.\d*[1-9])0+)$/,"$1")}function vk(t){return t.indexOf("E")==-1?t:t.replace(/(?:\.0*|(\.\d*[1-9])0+)[Ee]/,"$1E").replace(/(E[+-])(\d)$/,"$10$2")}function mk(t){var r=t<0?12:11,e=Xh(t.toFixed(12));return e.length<=r||(e=t.toPrecision(10),e.length<=r)?e:t.toExponential(5)}function yk(t){var r=Xh(t.toFixed(11));return r.length>(t<0?12:11)||r==="0"||r==="-0"?t.toPrecision(6):r}function Pf(t){var r=Math.floor(Math.log(Math.abs(t))*Math.LOG10E),e;return r>=-4&&r<=-1?e=t.toPrecision(10+r):Math.abs(r)<=9?e=mk(t):r===10?e=t.toFixed(10).substr(0,12):e=yk(t),Xh(vk(e.toUpperCase()))}function js(t,r){switch(typeof t){case"string":return t;case"boolean":return t?"TRUE":"FALSE";case"number":return(t|0)===t?t.toString(10):Pf(t);case"undefined":return"";case"object":if(t==null)return"";if(t instanceof Date)return Gi(14,Om(t,r&&r.date1904),r)}throw new Error("unsupported value in General format: "+t)}function gk(t,r){r[0]-=581;var e=t.getDay();return t<60&&(e=(e+6)%7),e}function bk(t,r,e,n){var i="",a=0,l=0,d=e.y,m,b=0;switch(t){case 98:d=e.y+543;case 121:switch(r.length){case 1:case 2:m=d%100,b=2;break;default:m=d%1e4,b=4;break}break;case 109:switch(r.length){case 1:case 2:m=e.m,b=r.length;break;case 3:return jl[e.m-1][1];case 5:return jl[e.m-1][0];default:return jl[e.m-1][2]}break;case 100:switch(r.length){case 1:case 2:m=e.d,b=r.length;break;case 3:return Zp[e.q][0];default:return Zp[e.q][1]}break;case 104:switch(r.length){case 1:case 2:m=1+(e.H+11)%12,b=r.length;break;default:throw"bad hour format: "+r}break;case 72:switch(r.length){case 1:case 2:m=e.H,b=r.length;break;default:throw"bad hour format: "+r}break;case 77:switch(r.length){case 1:case 2:m=e.M,b=r.length;break;default:throw"bad minute format: "+r}break;case 115:if(r!="s"&&r!="ss"&&r!=".0"&&r!=".00"&&r!=".000")throw"bad second format: "+r;return e.u===0&&(r=="s"||r=="ss")?ca(e.S,r.length):(n>=2?l=n===3?1e3:100:l=n===1?10:1,a=Math.round(l*(e.S+e.u)),a>=60*l&&(a=0),r==="s"?a===0?"0":""+a/l:(i=ca(a,2+n),r==="ss"?i.substr(0,2):"."+i.substr(2,r.length-1)));case 90:switch(r){case"[h]":case"[hh]":m=e.D*24+e.H;break;case"[m]":case"[mm]":m=(e.D*24+e.H)*60+e.M;break;case"[s]":case"[ss]":m=((e.D*24+e.H)*60+e.M)*60+Math.round(e.S+e.u);break;default:throw"bad abstime format: "+r}b=r.length===3?1:2;break;case 101:m=d,b=1;break}var h=b>0?ca(m,b):"";return h}function cs(t){var r=3;if(t.length<=r)return t;for(var e=t.length%r,n=t.substr(0,e);e!=t.length;e+=r)n+=(n.length>0?",":"")+t.substr(e,r);return n}var Cm=/%/g;function _k(t,r,e){var n=r.replace(Cm,""),i=r.length-n.length;return Ua(t,n,e*Math.pow(10,2*i))+Jr("%",i)}function xk(t,r,e){for(var n=r.length-1;r.charCodeAt(n-1)===44;)--n;return Ua(t,r.substr(0,n),e/Math.pow(10,3*(r.length-n)))}function Rm(t,r){var e,n=t.indexOf("E")-t.indexOf(".")-1;if(t.match(/^#+0.0E\+0$/)){if(r==0)return"0.0E+0";if(r<0)return"-"+Rm(t,-r);var i=t.indexOf(".");i===-1&&(i=t.indexOf("E"));var a=Math.floor(Math.log(r)*Math.LOG10E)%i;if(a<0&&(a+=i),e=(r/Math.pow(10,a)).toPrecision(n+1+(i+a)%i),e.indexOf("e")===-1){var l=Math.floor(Math.log(r)*Math.LOG10E);for(e.indexOf(".")===-1?e=e.charAt(0)+"."+e.substr(1)+"E+"+(l-e.length+a):e+="E+"+(l-a);e.substr(0,2)==="0.";)e=e.charAt(0)+e.substr(2,i)+"."+e.substr(2+i),e=e.replace(/^0+([1-9])/,"$1").replace(/^0+\./,"0.");e=e.replace(/\+-/,"-")}e=e.replace(/^([+-]?)(\d*)\.(\d*)[Ee]/,function(d,m,b,h){return m+b+h.substr(0,(i+a)%i)+"."+h.substr(a)+"E"})}else e=r.toExponential(n);return t.match(/E\+00$/)&&e.match(/e[+-]\d$/)&&(e=e.substr(0,e.length-1)+"0"+e.charAt(e.length-1)),t.match(/E\-/)&&e.match(/e\+/)&&(e=e.replace(/e\+/,"e")),e.replace("e","E")}var Am=/# (\?+)( ?)\/( ?)(\d+)/;function wk(t,r,e){var n=parseInt(t[4],10),i=Math.round(r*n),a=Math.floor(i/n),l=i-a*n,d=n;return e+(a===0?"":""+a)+" "+(l===0?Jr(" ",t[1].length+1+t[4].length):Hh(l,t[1].length)+t[2]+"/"+t[3]+ca(d,t[4].length))}function Sk(t,r,e){return e+(r===0?"":""+r)+Jr(" ",t[1].length+2+t[4].length)}var Pm=/^#*0*\.([0#]+)/,Fm=/\).*[0#]/,Im=/\(###\) ###\\?-####/;function qn(t){for(var r="",e,n=0;n!=t.length;++n)switch(e=t.charCodeAt(n)){case 35:break;case 63:r+=" ";break;case 48:r+="0";break;default:r+=String.fromCharCode(e)}return r}function Qp(t,r){var e=Math.pow(10,r);return""+Math.round(t*e)/e}function qp(t,r){var e=t-Math.floor(t),n=Math.pow(10,r);return r<(""+Math.round(e*n)).length?0:Math.round(e*n)}function kk(t,r){return r<(""+Math.round((t-Math.floor(t))*Math.pow(10,r))).length?1:0}function Ek(t){return t<2147483647&&t>-2147483648?""+(t>=0?t|0:t-1|0):""+Math.floor(t)}function Hi(t,r,e){if(t.charCodeAt(0)===40&&!r.match(Fm)){var n=r.replace(/\( */,"").replace(/ \)/,"").replace(/\)/,"");return e>=0?Hi("n",n,e):"("+Hi("n",n,-e)+")"}if(r.charCodeAt(r.length-1)===44)return xk(t,r,e);if(r.indexOf("%")!==-1)return _k(t,r,e);if(r.indexOf("E")!==-1)return Rm(r,e);if(r.charCodeAt(0)===36)return"$"+Hi(t,r.substr(r.charAt(1)==" "?2:1),e);var i,a,l,d,m=Math.abs(e),b=e<0?"-":"";if(r.match(/^00+$/))return b+Ro(m,r.length);if(r.match(/^[#?]+$/))return i=Ro(e,0),i==="0"&&(i=""),i.length>r.length?i:qn(r.substr(0,r.length-i.length))+i;if(a=r.match(Am))return wk(a,m,b);if(r.match(/^#+0+$/))return b+Ro(m,r.length-r.indexOf("0"));if(a=r.match(Pm))return i=Qp(e,a[1].length).replace(/^([^\.]+)$/,"$1."+qn(a[1])).replace(/\.$/,"."+qn(a[1])).replace(/\.(\d*)$/,function(x,p){return"."+p+Jr("0",qn(a[1]).length-p.length)}),r.indexOf("0.")!==-1?i:i.replace(/^0\./,".");if(r=r.replace(/^#+([0.])/,"$1"),a=r.match(/^(0*)\.(#*)$/))return b+Qp(m,a[2].length).replace(/\.(\d*[1-9])0*$/,".$1").replace(/^(-?\d*)$/,"$1.").replace(/^0\./,a[1].length?"0.":".");if(a=r.match(/^#{1,3},##0(\.?)$/))return b+cs(Ro(m,0));if(a=r.match(/^#,##0\.([#0]*0)$/))return e<0?"-"+Hi(t,r,-e):cs(""+(Math.floor(e)+kk(e,a[1].length)))+"."+ca(qp(e,a[1].length),a[1].length);if(a=r.match(/^#,#*,#0/))return Hi(t,r.replace(/^#,#*,/,""),e);if(a=r.match(/^([0#]+)(\\?-([0#]+))+$/))return i=Do(Hi(t,r.replace(/[\\-]/g,""),e)),l=0,Do(Do(r.replace(/\\/g,"")).replace(/[0#]/g,function(x){return l=0?ga("n",n,e):"("+ga("n",n,-e)+")"}if(r.charCodeAt(r.length-1)===44)return Tk(t,r,e);if(r.indexOf("%")!==-1)return Ok(t,r,e);if(r.indexOf("E")!==-1)return Mm(r,e);if(r.charCodeAt(0)===36)return"$"+ga(t,r.substr(r.charAt(1)==" "?2:1),e);var i,a,l,d,m=Math.abs(e),b=e<0?"-":"";if(r.match(/^00+$/))return b+ca(m,r.length);if(r.match(/^[#?]+$/))return i=""+e,e===0&&(i=""),i.length>r.length?i:qn(r.substr(0,r.length-i.length))+i;if(a=r.match(Am))return Sk(a,m,b);if(r.match(/^#+0+$/))return b+ca(m,r.length-r.indexOf("0"));if(a=r.match(Pm))return i=(""+e).replace(/^([^\.]+)$/,"$1."+qn(a[1])).replace(/\.$/,"."+qn(a[1])),i=i.replace(/\.(\d*)$/,function(x,p){return"."+p+Jr("0",qn(a[1]).length-p.length)}),r.indexOf("0.")!==-1?i:i.replace(/^0\./,".");if(r=r.replace(/^#+([0.])/,"$1"),a=r.match(/^(0*)\.(#*)$/))return b+(""+m).replace(/\.(\d*[1-9])0*$/,".$1").replace(/^(-?\d*)$/,"$1.").replace(/^0\./,a[1].length?"0.":".");if(a=r.match(/^#{1,3},##0(\.?)$/))return b+cs(""+m);if(a=r.match(/^#,##0\.([#0]*0)$/))return e<0?"-"+ga(t,r,-e):cs(""+e)+"."+Jr("0",a[1].length);if(a=r.match(/^#,#*,#0/))return ga(t,r.replace(/^#,#*,/,""),e);if(a=r.match(/^([0#]+)(\\?-([0#]+))+$/))return i=Do(ga(t,r.replace(/[\\-]/g,""),e)),l=0,Do(Do(r.replace(/\\/g,"")).replace(/[0#]/g,function(x){return l-1||e=="\\"&&t.charAt(r+1)=="-"&&"0#".indexOf(t.charAt(r+2))>-1););break;case"?":for(;t.charAt(++r)===e;);break;case"*":++r,(t.charAt(r)==" "||t.charAt(r)=="*")&&++r;break;case"(":case")":++r;break;case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":for(;r-1;);break;case" ":++r;break;default:++r;break}return!1}function Rk(t,r,e,n){for(var i=[],a="",l=0,d="",m="t",b,h,_,g="H";l=12?"P":"A"),p.t="T",g="h",l+=3):t.substr(l,5).toUpperCase()==="AM/PM"?(b!=null&&(p.v=b.H>=12?"PM":"AM"),p.t="T",l+=5,g="h"):t.substr(l,5).toUpperCase()==="上午/下午"?(b!=null&&(p.v=b.H>=12?"下午":"上午"),p.t="T",l+=5,g="h"):(p.t="t",++l),b==null&&p.t==="T")return"";i[i.length]=p,m=d;break;case"[":for(a=d;t.charAt(l++)!=="]"&&l-1&&(a=(a.match(/\$([^-\[\]]*)/)||[])[1]||"$",zo(t)||(i[i.length]={t:"t",v:a}));break;case".":if(b!=null){for(a=d;++l-1;)a+=d;i[i.length]={t:"n",v:a};break;case"?":for(a=d;t.charAt(++l)===d;)a+=d;i[i.length]={t:d,v:a},m=d;break;case"*":++l,(t.charAt(l)==" "||t.charAt(l)=="*")&&++l;break;case"(":case")":i[i.length]={t:n===1?"t":d,v:d},++l;break;case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":for(a=d;l-1;)a+=t.charAt(l);i[i.length]={t:"D",v:a};break;case" ":i[i.length]={t:d,v:d},++l;break;case"$":i[i.length]={t:"t",v:"$"},++l;break;default:if(",$-+/():!^&'~{}<>=€acfijklopqrtuvwxzP".indexOf(d)===-1)throw new Error("unrecognized character "+d+" in "+t);i[i.length]={t:"t",v:d},++l;break}var S=0,w=0,u;for(l=i.length-1,m="t";l>=0;--l)switch(i[l].t){case"h":case"H":i[l].t=g,m="h",S<1&&(S=1);break;case"s":(u=i[l].v.match(/\.0+$/))&&(w=Math.max(w,u[0].length-1)),S<3&&(S=3);case"d":case"y":case"M":case"e":m=i[l].t;break;case"m":m==="s"&&(i[l].t="M",S<2&&(S=2));break;case"X":break;case"Z":S<1&&i[l].v.match(/[Hh]/)&&(S=1),S<2&&i[l].v.match(/[Mm]/)&&(S=2),S<3&&i[l].v.match(/[Ss]/)&&(S=3)}switch(S){case 0:break;case 1:b.u>=.5&&(b.u=0,++b.S),b.S>=60&&(b.S=0,++b.M),b.M>=60&&(b.M=0,++b.H);break;case 2:b.u>=.5&&(b.u=0,++b.S),b.S>=60&&(b.S=0,++b.M);break}var o="",s;for(l=0;l0){o.charCodeAt(0)==40?(f=r<0&&o.charCodeAt(0)===45?-r:r,v=Ua("n",o,f)):(f=r<0&&n>1?-r:r,v=Ua("n",o,f),f<0&&i[0]&&i[0].t=="t"&&(v=v.substr(1),i[0].v="-"+i[0].v)),s=v.length-1;var k=i.length;for(l=0;l-1){k=l;break}var T=i.length;if(k===i.length&&v.indexOf("E")===-1){for(l=i.length-1;l>=0;--l)i[l]==null||"n?".indexOf(i[l].t)===-1||(s>=i[l].v.length-1?(s-=i[l].v.length,i[l].v=v.substr(s+1,i[l].v.length)):s<0?i[l].v="":(i[l].v=v.substr(0,s+1),s=-1),i[l].t="t",T=l);s>=0&&T=0;--l)if(!(i[l]==null||"n?".indexOf(i[l].t)===-1)){for(h=i[l].v.indexOf(".")>-1&&l===k?i[l].v.indexOf(".")-1:i[l].v.length-1,c=i[l].v.substr(h+1);h>=0;--h)s>=0&&(i[l].v.charAt(h)==="0"||i[l].v.charAt(h)==="#")&&(c=v.charAt(s--)+c);i[l].v=c,i[l].t="t",T=l}for(s>=0&&T-1&&l===k?i[l].v.indexOf(".")+1:0,c=i[l].v.substr(0,h);h-1&&(f=n>1&&r<0&&l>0&&i[l-1].v==="-"?-r:r,i[l].v=Ua(i[l].t,i[l].v,f),i[l].t="t");var C="";for(l=0;l!==i.length;++l)i[l]!=null&&(C+=i[l].v);return C}var ev=/\[(=|>[=]?|<[>=]?)(-?\d+(?:\.\d*)?)\]/;function tv(t,r){if(r==null)return!1;var e=parseFloat(r[2]);switch(r[1]){case"=":if(t==e)return!0;break;case">":if(t>e)return!0;break;case"<":if(t":if(t!=e)return!0;break;case">=":if(t>=e)return!0;break;case"<=":if(t<=e)return!0;break}return!1}function Ak(t,r){var e=Ck(t),n=e.length,i=e[n-1].indexOf("@");if(n<4&&i>-1&&--n,e.length>4)throw new Error("cannot find right format for |"+e.join("|")+"|");if(typeof r!="number")return[4,e.length===4||i>-1?e[e.length-1]:"@"];switch(e.length){case 1:e=i>-1?["General","General","General",e[0]]:[e[0],e[0],e[0],"@"];break;case 2:e=i>-1?[e[0],e[0],e[0],e[1]]:[e[0],e[1],e[0],"@"];break;case 3:e=i>-1?[e[0],e[1],e[0],e[2]]:[e[0],e[1],e[2],"@"];break}var a=r>0?e[0]:r<0?e[1]:e[2];if(e[0].indexOf("[")===-1&&e[1].indexOf("[")===-1)return[n,a];if(e[0].match(/\[[=<>]/)!=null||e[1].match(/\[[=<>]/)!=null){var l=e[0].match(ev),d=e[1].match(ev);return tv(r,l)?[n,e[0]]:tv(r,d)?[n,e[1]]:[n,e[l!=null&&d!=null?2:1]]}return[n,a]}function Gi(t,r,e){e==null&&(e={});var n="";switch(typeof t){case"string":t=="m/d/yy"&&e.dateNF?n=e.dateNF:n=t;break;case"number":t==14&&e.dateNF?n=e.dateNF:n=(e.table!=null?e.table:Jt)[t],n==null&&(n=e.table&&e.table[Jp[t]]||Jt[Jp[t]]),n==null&&(n=hk[t]||"General");break}if(yc(n,0))return js(r,e);r instanceof Date&&(r=Om(r,e.date1904));var i=Ak(n,r);if(yc(i[1]))return js(r,e);if(r===!0)r="TRUE";else if(r===!1)r="FALSE";else if(r===""||r==null)return"";return Rk(i[1],r,e,i[0])}function Ha(t,r){if(typeof r!="number"){r=+r||-1;for(var e=0;e<392;++e){if(Jt[e]==null){r<0&&(r=e);continue}if(Jt[e]==t){r=e;break}}r<0&&(r=391)}return Jt[r]=t,r}function Ac(t){for(var r=0;r!=392;++r)t[r]!==void 0&&Ha(t[r],r)}function Wo(){Jt=lk()}var Pk={5:'"$"#,##0_);\\("$"#,##0\\)',6:'"$"#,##0_);[Red]\\("$"#,##0\\)',7:'"$"#,##0.00_);\\("$"#,##0.00\\)',8:'"$"#,##0.00_);[Red]\\("$"#,##0.00\\)',23:"General",24:"General",25:"General",26:"General",27:"m/d/yy",28:"m/d/yy",29:"m/d/yy",30:"m/d/yy",31:"m/d/yy",32:"h:mm:ss",33:"h:mm:ss",34:"h:mm:ss",35:"h:mm:ss",36:"m/d/yy",41:'_(* #,##0_);_(* (#,##0);_(* "-"_);_(@_)',42:'_("$"* #,##0_);_("$"* (#,##0);_("$"* "-"_);_(@_)',43:'_(* #,##0.00_);_(* (#,##0.00);_(* "-"??_);_(@_)',44:'_("$"* #,##0.00_);_("$"* (#,##0.00);_("$"* "-"??_);_(@_)',50:"m/d/yy",51:"m/d/yy",52:"m/d/yy",53:"m/d/yy",54:"m/d/yy",55:"m/d/yy",56:"m/d/yy",57:"m/d/yy",58:"m/d/yy",59:"0",60:"0.00",61:"#,##0",62:"#,##0.00",63:'"$"#,##0_);\\("$"#,##0\\)',64:'"$"#,##0_);[Red]\\("$"#,##0\\)',65:'"$"#,##0.00_);\\("$"#,##0.00\\)',66:'"$"#,##0.00_);[Red]\\("$"#,##0.00\\)',67:"0%",68:"0.00%",69:"# ?/?",70:"# ??/??",71:"m/d/yy",72:"m/d/yy",73:"d-mmm-yy",74:"d-mmm",75:"mmm-yy",76:"h:mm",77:"h:mm:ss",78:"m/d/yy h:mm",79:"mm:ss",80:"[h]:mm:ss",81:"mmss.0"},Nm=/[dD]+|[mM]+|[yYeE]+|[Hh]+|[Ss]+/g;function Fk(t){var r=typeof t=="number"?Jt[t]:t;return r=r.replace(Nm,"(\\d+)"),new RegExp("^"+r+"$")}function Ik(t,r,e){var n=-1,i=-1,a=-1,l=-1,d=-1,m=-1;(r.match(Nm)||[]).forEach(function(_,g){var y=parseInt(e[g+1],10);switch(_.toLowerCase().charAt(0)){case"y":n=y;break;case"d":a=y;break;case"h":l=y;break;case"s":m=y;break;case"m":l>=0?d=y:i=y;break}}),m>=0&&d==-1&&i>=0&&(d=i,i=-1);var b=(""+(n>=0?n:new Date().getFullYear())).slice(-4)+"-"+("00"+(i>=1?i:1)).slice(-2)+"-"+("00"+(a>=1?a:1)).slice(-2);b.length==7&&(b="0"+b),b.length==8&&(b="20"+b);var h=("00"+(l>=0?l:0)).slice(-2)+":"+("00"+(d>=0?d:0)).slice(-2)+":"+("00"+(m>=0?m:0)).slice(-2);return l==-1&&d==-1&&m==-1?b:n==-1&&i==-1&&a==-1?h:b+"T"+h}var Mk=function(){var t={};t.version="1.2.0";function r(){for(var v=0,k=new Array(256),T=0;T!=256;++T)v=T,v=v&1?-306674912^v>>>1:v>>>1,v=v&1?-306674912^v>>>1:v>>>1,v=v&1?-306674912^v>>>1:v>>>1,v=v&1?-306674912^v>>>1:v>>>1,v=v&1?-306674912^v>>>1:v>>>1,v=v&1?-306674912^v>>>1:v>>>1,v=v&1?-306674912^v>>>1:v>>>1,v=v&1?-306674912^v>>>1:v>>>1,k[T]=v;return typeof Int32Array<"u"?new Int32Array(k):k}var e=r();function n(v){var k=0,T=0,C=0,D=typeof Int32Array<"u"?new Int32Array(4096):new Array(4096);for(C=0;C!=256;++C)D[C]=v[C];for(C=0;C!=256;++C)for(T=v[C],k=256+C;k<4096;k+=256)T=D[k]=T>>>8^v[T&255];var j=[];for(C=1;C!=16;++C)j[C-1]=typeof Int32Array<"u"?D.subarray(C*256,C*256+256):D.slice(C*256,C*256+256);return j}var i=n(e),a=i[0],l=i[1],d=i[2],m=i[3],b=i[4],h=i[5],_=i[6],g=i[7],y=i[8],x=i[9],p=i[10],S=i[11],w=i[12],u=i[13],o=i[14];function s(v,k){for(var T=k^-1,C=0,D=v.length;C>>8^e[(T^v.charCodeAt(C++))&255];return~T}function c(v,k){for(var T=k^-1,C=v.length-15,D=0;D>8&255]^w[v[D++]^T>>16&255]^S[v[D++]^T>>>24]^p[v[D++]]^x[v[D++]]^y[v[D++]]^g[v[D++]]^_[v[D++]]^h[v[D++]]^b[v[D++]]^m[v[D++]]^d[v[D++]]^l[v[D++]]^a[v[D++]]^e[v[D++]];for(C+=15;D>>8^e[(T^v[D++])&255];return~T}function f(v,k){for(var T=k^-1,C=0,D=v.length,j=0,L=0;C>>8^e[(T^j)&255]:j<2048?(T=T>>>8^e[(T^(192|j>>6&31))&255],T=T>>>8^e[(T^(128|j&63))&255]):j>=55296&&j<57344?(j=(j&1023)+64,L=v.charCodeAt(C++)&1023,T=T>>>8^e[(T^(240|j>>8&7))&255],T=T>>>8^e[(T^(128|j>>2&63))&255],T=T>>>8^e[(T^(128|L>>6&15|(j&3)<<4))&255],T=T>>>8^e[(T^(128|L&63))&255]):(T=T>>>8^e[(T^(224|j>>12&15))&255],T=T>>>8^e[(T^(128|j>>6&63))&255],T=T>>>8^e[(T^(128|j&63))&255]);return~T}return t.table=e,t.bstr=s,t.buf=c,t.str=f,t}(),$t=function(){var r={};r.version="1.2.1";function e(ue,ye){for(var ve=ue.split("/"),we=ye.split("/"),Ee=0,Se=0,We=Math.min(ve.length,we.length);Ee>>1,ue.write_shift(2,ve);var we=ye.getFullYear()-1980;we=we<<4|ye.getMonth()+1,we=we<<5|ye.getDate(),ue.write_shift(2,we)}function l(ue){var ye=ue.read_shift(2)&65535,ve=ue.read_shift(2)&65535,we=new Date,Ee=ve&31;ve>>>=5;var Se=ve&15;ve>>>=4,we.setMilliseconds(0),we.setFullYear(ve+1980),we.setMonth(Se-1),we.setDate(Ee);var We=ye&31;ye>>>=5;var Je=ye&63;return ye>>>=6,we.setHours(ye),we.setMinutes(Je),we.setSeconds(We<<1),we}function d(ue){Fn(ue,0);for(var ye={},ve=0;ue.l<=ue.length-4;){var we=ue.read_shift(2),Ee=ue.read_shift(2),Se=ue.l+Ee,We={};switch(we){case 21589:ve=ue.read_shift(1),ve&1&&(We.mtime=ue.read_shift(4)),Ee>5&&(ve&2&&(We.atime=ue.read_shift(4)),ve&4&&(We.ctime=ue.read_shift(4))),We.mtime&&(We.mt=new Date(We.mtime*1e3));break}ue.l=Se,ye[we]=We}return ye}var m;function b(){return m||(m={})}function h(ue,ye){if(ue[0]==80&&ue[1]==75)return be(ue,ye);if((ue[0]|32)==109&&(ue[1]|32)==105)return Ae(ue,ye);if(ue.length<512)throw new Error("CFB file size "+ue.length+" < 512");var ve=3,we=512,Ee=0,Se=0,We=0,Je=0,Be=0,He=[],$e=ue.slice(0,512);Fn($e,0);var nt=_($e);switch(ve=nt[0],ve){case 3:we=512;break;case 4:we=4096;break;case 0:if(nt[1]==0)return be(ue,ye);default:throw new Error("Major Version: Expected 3 or 4 saw "+ve)}we!==512&&($e=ue.slice(0,we),Fn($e,28));var Et=ue.slice(0,we);g($e,ve);var Rt=$e.read_shift(4,"i");if(ve===3&&Rt!==0)throw new Error("# Directory Sectors: Expected 0 saw "+Rt);$e.l+=4,We=$e.read_shift(4,"i"),$e.l+=4,$e.chk("00100000","Mini Stream Cutoff Size: "),Je=$e.read_shift(4,"i"),Ee=$e.read_shift(4,"i"),Be=$e.read_shift(4,"i"),Se=$e.read_shift(4,"i");for(var wt=-1,Ct=0;Ct<109&&(wt=$e.read_shift(4,"i"),!(wt<0));++Ct)He[Ct]=wt;var Xt=y(ue,we);S(Be,Se,Xt,we,He);var zt=u(Xt,We,He,we);zt[We].name="!Directory",Ee>0&&Je!==L&&(zt[Je].name="!MiniFAT"),zt[He[0]].name="!FAT",zt.fat_addrs=He,zt.ssz=we;var or={},gr=[],$r=[],Kr=[];o(We,zt,Xt,gr,Ee,or,$r,Je),x($r,Kr,gr),gr.shift();var Mt={FileIndex:$r,FullPaths:Kr};return ye&&ye.raw&&(Mt.raw={header:Et,sectors:Xt}),Mt}function _(ue){if(ue[ue.l]==80&&ue[ue.l+1]==75)return[0,0];ue.chk(M,"Header Signature: "),ue.l+=16;var ye=ue.read_shift(2,"u");return[ue.read_shift(2,"u"),ye]}function g(ue,ye){var ve=9;switch(ue.l+=2,ve=ue.read_shift(2)){case 9:if(ye!=3)throw new Error("Sector Shift: Expected 9 saw "+ve);break;case 12:if(ye!=4)throw new Error("Sector Shift: Expected 12 saw "+ve);break;default:throw new Error("Sector Shift: Expected 9 or 12 saw "+ve)}ue.chk("0600","Mini Sector Shift: "),ue.chk("000000000000","Reserved: ")}function y(ue,ye){for(var ve=Math.ceil(ue.length/ye)-1,we=[],Ee=1;Ee0&&We>=0;)Se.push(ye.slice(We*j,We*j+j)),Ee-=j,We=As(ve,We*4);return Se.length===0?lt(0):Tn(Se).slice(0,ue.size)}function S(ue,ye,ve,we,Ee){var Se=L;if(ue===L){if(ye!==0)throw new Error("DIFAT chain shorter than expected")}else if(ue!==-1){var We=ve[ue],Je=(we>>>2)-1;if(!We)return;for(var Be=0;Be=0;){Ee[Be]=!0,Se[Se.length]=Be,We.push(ue[Be]);var $e=ve[Math.floor(Be*4/we)];if(He=Be*4&Je,we<4+He)throw new Error("FAT boundary crossed: "+Be+" 4 "+we);if(!ue[$e])break;Be=As(ue[$e],He)}return{nodes:Se,data:dv([We])}}function u(ue,ye,ve,we){var Ee=ue.length,Se=[],We=[],Je=[],Be=[],He=we-1,$e=0,nt=0,Et=0,Rt=0;for($e=0;$e=Ee&&(Et-=Ee),!We[Et]){Be=[];var wt=[];for(nt=Et;nt>=0;){wt[nt]=!0,We[nt]=!0,Je[Je.length]=nt,Be.push(ue[nt]);var Ct=ve[Math.floor(nt*4/we)];if(Rt=nt*4&He,we<4+Rt)throw new Error("FAT boundary crossed: "+nt+" 4 "+we);if(!ue[Ct]||(nt=As(ue[Ct],Rt),wt[nt]))break}Se[Et]={nodes:Je,data:dv([Be])}}return Se}function o(ue,ye,ve,we,Ee,Se,We,Je){for(var Be=0,He=we.length?2:0,$e=ye[ue].data,nt=0,Et=0,Rt;nt<$e.length;nt+=128){var wt=$e.slice(nt,nt+128);Fn(wt,64),Et=wt.read_shift(2),Rt=Yh(wt,0,Et-He),we.push(Rt);var Ct={name:Rt,type:wt.read_shift(1),color:wt.read_shift(1),L:wt.read_shift(4,"i"),R:wt.read_shift(4,"i"),C:wt.read_shift(4,"i"),clsid:wt.read_shift(16),state:wt.read_shift(4,"i"),start:0,size:0},Xt=wt.read_shift(2)+wt.read_shift(2)+wt.read_shift(2)+wt.read_shift(2);Xt!==0&&(Ct.ct=s(wt,wt.l-8));var zt=wt.read_shift(2)+wt.read_shift(2)+wt.read_shift(2)+wt.read_shift(2);zt!==0&&(Ct.mt=s(wt,wt.l-8)),Ct.start=wt.read_shift(4,"i"),Ct.size=wt.read_shift(4,"i"),Ct.size<0&&Ct.start<0&&(Ct.size=Ct.type=0,Ct.start=L,Ct.name=""),Ct.type===5?(Be=Ct.start,Ee>0&&Be!==L&&(ye[Be].name="!StreamData")):Ct.size>=4096?(Ct.storage="fat",ye[Ct.start]===void 0&&(ye[Ct.start]=w(ve,Ct.start,ye.fat_addrs,ye.ssz)),ye[Ct.start].name=Ct.name,Ct.content=ye[Ct.start].data.slice(0,Ct.size)):(Ct.storage="minifat",Ct.size<0?Ct.size=0:Be!==L&&Ct.start!==L&&ye[Be]&&(Ct.content=p(Ct,ye[Be].data,(ye[Je]||{}).data))),Ct.content&&Fn(Ct.content,0),Se[Rt]=Ct,We.push(Ct)}}function s(ue,ye){return new Date((ki(ue,ye+4)/1e7*Math.pow(2,32)+ki(ue,ye)/1e7-11644473600)*1e3)}function c(ue,ye){return b(),h(m.readFileSync(ue),ye)}function f(ue,ye){var ve=ye&&ye.type;switch(ve||lr&&Buffer.isBuffer(ue)&&(ve="buffer"),ve||"base64"){case"file":return c(ue,ye);case"base64":return h(Ei(Oi(ue)),ye);case"binary":return h(Ei(ue),ye)}return h(ue,ye)}function v(ue,ye){var ve=ye||{},we=ve.root||"Root Entry";if(ue.FullPaths||(ue.FullPaths=[]),ue.FileIndex||(ue.FileIndex=[]),ue.FullPaths.length!==ue.FileIndex.length)throw new Error("inconsistent CFB structure");ue.FullPaths.length===0&&(ue.FullPaths[0]=we+"/",ue.FileIndex[0]={name:we,type:5}),ve.CLSID&&(ue.FileIndex[0].clsid=ve.CLSID),k(ue)}function k(ue){var ye="Sh33tJ5";if(!$t.find(ue,"/"+ye)){var ve=lt(4);ve[0]=55,ve[1]=ve[3]=50,ve[2]=54,ue.FileIndex.push({name:ye,type:2,content:ve,size:4,L:69,R:69,C:69}),ue.FullPaths.push(ue.FullPaths[0]+ye),T(ue)}}function T(ue,ye){v(ue);for(var ve=!1,we=!1,Ee=ue.FullPaths.length-1;Ee>=0;--Ee){var Se=ue.FileIndex[Ee];switch(Se.type){case 0:we?ve=!0:(ue.FileIndex.pop(),ue.FullPaths.pop());break;case 1:case 2:case 5:we=!0,isNaN(Se.R*Se.L*Se.C)&&(ve=!0),Se.R>-1&&Se.L>-1&&Se.R==Se.L&&(ve=!0);break;default:ve=!0;break}}if(!(!ve&&!ye)){var We=new Date(1987,1,19),Je=0,Be=Object.create?Object.create(null):{},He=[];for(Ee=0;Ee1?1:-1,nt.size=0,nt.type=5;else if(Et.slice(-1)=="/"){for(Je=Ee+1;Je=He.length?-1:Je,Je=Ee+1;Je=He.length?-1:Je,nt.type=1}else n(ue.FullPaths[Ee+1]||"")==n(Et)&&(nt.R=Ee+1),nt.type=2}}}function C(ue,ye){var ve=ye||{};if(ve.fileType=="mad")return Xe(ue,ve);switch(T(ue),ve.fileType){case"zip":return oe(ue,ve)}var we=function(Rt){for(var wt=0,Ct=0,Xt=0;Xt0&&(or<4096?wt+=or+63>>6:Ct+=or+511>>9)}}for(var gr=Rt.FullPaths.length+3>>2,$r=wt+7>>3,Kr=wt+127>>7,Mt=$r+Ct+gr+Kr,at=Mt+127>>7,Te=at<=109?0:Math.ceil((at-109)/127);Mt+at+Te+127>>7>at;)Te=++at<=109?0:Math.ceil((at-109)/127);var ze=[1,Te,at,Kr,gr,Ct,wt,0];return Rt.FileIndex[0].size=wt<<6,ze[7]=(Rt.FileIndex[0].start=ze[0]+ze[1]+ze[2]+ze[3]+ze[4]+ze[5])+(ze[6]+7>>3),ze}(ue),Ee=lt(we[7]<<9),Se=0,We=0;{for(Se=0;Se<8;++Se)Ee.write_shift(1,B[Se]);for(Se=0;Se<8;++Se)Ee.write_shift(2,0);for(Ee.write_shift(2,62),Ee.write_shift(2,3),Ee.write_shift(2,65534),Ee.write_shift(2,9),Ee.write_shift(2,6),Se=0;Se<3;++Se)Ee.write_shift(2,0);for(Ee.write_shift(4,0),Ee.write_shift(4,we[2]),Ee.write_shift(4,we[0]+we[1]+we[2]+we[3]-1),Ee.write_shift(4,0),Ee.write_shift(4,4096),Ee.write_shift(4,we[3]?we[0]+we[1]+we[2]-1:L),Ee.write_shift(4,we[3]),Ee.write_shift(-4,we[1]?we[0]-1:L),Ee.write_shift(4,we[1]),Se=0;Se<109;++Se)Ee.write_shift(-4,Se>9)));for(Je(we[6]+7>>3);Ee.l&511;)Ee.write_shift(-4,P.ENDOFCHAIN);for(We=Se=0,Be=0;Be=4096)&&($e.start=We,Je(He+63>>6)));for(;Ee.l&511;)Ee.write_shift(-4,P.ENDOFCHAIN);for(Se=0;Se=4096)if(Ee.l=$e.start+1<<9,lr&&Buffer.isBuffer($e.content))$e.content.copy(Ee,Ee.l,0,$e.size),Ee.l+=$e.size+511&-512;else{for(Be=0;Be<$e.size;++Be)Ee.write_shift(1,$e.content[Be]);for(;Be&511;++Be)Ee.write_shift(1,0)}for(Se=1;Se0&&$e.size<4096)if(lr&&Buffer.isBuffer($e.content))$e.content.copy(Ee,Ee.l,0,$e.size),Ee.l+=$e.size+63&-64;else{for(Be=0;Be<$e.size;++Be)Ee.write_shift(1,$e.content[Be]);for(;Be&63;++Be)Ee.write_shift(1,0)}if(lr)Ee.l=Ee.length;else for(;Ee.l>16|ye>>8|ye)&255}for(var re=typeof Uint8Array<"u",ne=re?new Uint8Array(256):[],ge=0;ge<256;++ge)ne[ge]=te(ge);function ee(ue,ye){var ve=ne[ue&255];return ye<=8?ve>>>8-ye:(ve=ve<<8|ne[ue>>8&255],ye<=16?ve>>>16-ye:(ve=ve<<8|ne[ue>>16&255],ve>>>24-ye))}function se(ue,ye){var ve=ye&7,we=ye>>>3;return(ue[we]|(ve<=6?0:ue[we+1]<<8))>>>ve&3}function J(ue,ye){var ve=ye&7,we=ye>>>3;return(ue[we]|(ve<=5?0:ue[we+1]<<8))>>>ve&7}function q(ue,ye){var ve=ye&7,we=ye>>>3;return(ue[we]|(ve<=4?0:ue[we+1]<<8))>>>ve&15}function de(ue,ye){var ve=ye&7,we=ye>>>3;return(ue[we]|(ve<=3?0:ue[we+1]<<8))>>>ve&31}function xe(ue,ye){var ve=ye&7,we=ye>>>3;return(ue[we]|(ve<=1?0:ue[we+1]<<8))>>>ve&127}function ae(ue,ye,ve){var we=ye&7,Ee=ye>>>3,Se=(1<>>we;return ve<8-we||(We|=ue[Ee+1]<<8-we,ve<16-we)||(We|=ue[Ee+2]<<16-we,ve<24-we)||(We|=ue[Ee+3]<<24-we),We&Se}function fe(ue,ye,ve){var we=ye&7,Ee=ye>>>3;return we<=5?ue[Ee]|=(ve&7)<>8-we),ye+3}function Ne(ue,ye,ve){var we=ye&7,Ee=ye>>>3;return ve=(ve&1)<>>3;return ve<<=we,ue[Ee]|=ve&255,ve>>>=8,ue[Ee+1]=ve,ye+8}function Y(ue,ye,ve){var we=ye&7,Ee=ye>>>3;return ve<<=we,ue[Ee]|=ve&255,ve>>>=8,ue[Ee+1]=ve&255,ue[Ee+2]=ve>>>8,ye+16}function Z(ue,ye){var ve=ue.length,we=2*ve>ye?2*ve:ye+5,Ee=0;if(ve>=ye)return ue;if(lr){var Se=Kp(we);if(ue.copy)ue.copy(Se);else for(;Ee>we-nt,We=(1<=0;--We)ye[Je|We<0;)Be[Be.l++]=Je[He++]}return Be.l}function We(Je,Be){for(var He=0,$e=0,nt=re?new Uint16Array(32768):[];$e0;)Be[Be.l++]=Je[$e++];He=Be.l*8;continue}He=fe(Be,He,+($e+Et==Je.length)+2);for(var Rt=0;Et-- >0;){var wt=Je[$e];Rt=(Rt<<5^wt)&32767;var Ct=-1,Xt=0;if((Ct=nt[Rt])&&(Ct|=$e&-32768,Ct>$e&&(Ct-=32768),Ct<$e))for(;Je[Ct+Xt]==Je[$e+Xt]&&Xt<250;)++Xt;if(Xt>2){wt=Ee[Xt],wt<=22?He=ie(Be,He,ne[wt+1]>>1)-1:(ie(Be,He,3),He+=5,ie(Be,He,ne[wt-23]>>5),He+=3);var zt=wt<8?0:wt-4>>2;zt>0&&(Y(Be,He,Xt-U[wt]),He+=zt),wt=ye[$e-Ct],He=ie(Be,He,ne[wt]>>3),He-=3;var or=wt<4?0:wt-2>>1;or>0&&(Y(Be,He,$e-Ct-G[wt]),He+=or);for(var gr=0;gr>8-wt;for(var Ct=(1<<7-wt)-1;Ct>=0;--Ct)tt[Rt|Ct<>>=3){case 16:for(Se=3+se(ue,ye),ye+=2,Rt=Xt[Xt.length-1];Se-- >0;)Xt.push(Rt);break;case 17:for(Se=3+J(ue,ye),ye+=3;Se-- >0;)Xt.push(0);break;case 18:for(Se=11+xe(ue,ye),ye+=7;Se-- >0;)Xt.push(0);break;default:Xt.push(Rt),Be>>0,Je=0,Be=0;!(we&1);){if(we=J(ue,ve),ve+=3,we>>>1)we>>1==1?(Je=9,Be=5):(ve=he(ue,ve),Je=ct,Be=gt);else{ve&7&&(ve+=8-(ve&7));var He=ue[ve>>>3]|ue[(ve>>>3)+1]<<8;if(ve+=32,He>0)for(!ye&&We0;)Ee[Se++]=ue[ve>>>3],ve+=8;continue}for(;;){!ye&&We>>1==1?Ce[$e]:pt[$e];if(ve+=nt&15,nt>>>=4,!(nt>>>8&255))Ee[Se++]=nt;else{if(nt==256)break;nt-=257;var Et=nt<8?0:nt-4>>2;Et>5&&(Et=0);var Rt=Se+U[nt];Et>0&&(Rt+=ae(ue,ve,Et),ve+=Et),$e=ae(ue,ve,Be),nt=we>>>1==1?Ge[$e]:et[$e],ve+=nt&15,nt>>>=4;var wt=nt<4?0:nt-2>>1,Ct=G[nt];for(wt>0&&(Ct+=ae(ue,ve,wt),ve+=wt),!ye&&We>>3]:[Ee.slice(0,Se),ve+7>>>3]}function Oe(ue,ye){var ve=ue.slice(ue.l||0),we=De(ve,ye);return ue.l+=we[1],we[0]}function Ie(ue,ye){if(ue)typeof console<"u"&&console.error(ye);else throw new Error(ye)}function be(ue,ye){var ve=ue;Fn(ve,0);var we=[],Ee=[],Se={FileIndex:we,FullPaths:Ee};v(Se,{root:ye.root});for(var We=ve.length-4;(ve[We]!=80||ve[We+1]!=75||ve[We+2]!=5||ve[We+3]!=6)&&We>=0;)--We;ve.l=We+4,ve.l+=4;var Je=ve.read_shift(2);ve.l+=6;var Be=ve.read_shift(4);for(ve.l=Be,We=0;We0&&(ve=ve.slice(0,ve.length-1),ve=ve.slice(0,ve.lastIndexOf("/")+1),Se.slice(0,ve.length)!=ve););var We=(we[1]||"").match(/boundary="(.*?)"/);if(!We)throw new Error("MAD cannot find boundary");var Je="--"+(We[1]||""),Be=[],He=[],$e={FileIndex:Be,FullPaths:He};v($e);var nt,Et=0;for(Ee=0;Ee=32&&Rt<128&&++nt;var Ct=nt>=Et*4/5;Ee.push(we),Ee.push("Content-Location: "+(ve.root||"file:///C:/SheetJS/")+We),Ee.push("Content-Transfer-Encoding: "+(Ct?"quoted-printable":"base64")),Ee.push("Content-Type: "+_t(Je,We)),Ee.push(""),Ee.push(Ct?je($e):K($e))}return Ee.push(we+`--\r +`),Ee.join(`\r +`)}function kt(ue){var ye={};return v(ye,ue),ye}function ut(ue,ye,ve,we){var Ee=we&&we.unsafe;Ee||v(ue);var Se=!Ee&&$t.find(ue,ye);if(!Se){var We=ue.FullPaths[0];ye.slice(0,We.length)==We?We=ye:(We.slice(-1)!="/"&&(We+="/"),We=(We+ye).replace("//","/")),Se={name:i(ye),type:2},ue.FileIndex.push(Se),ue.FullPaths.push(We),Ee||$t.utils.cfb_gc(ue)}return Se.content=ve,Se.size=ve?ve.length:0,we&&(we.CLSID&&(Se.clsid=we.CLSID),we.mt&&(Se.mt=we.mt),we.ct&&(Se.ct=we.ct)),Se}function bt(ue,ye){v(ue);var ve=$t.find(ue,ye);if(ve){for(var we=0;we3&&(n=!0),i[a].slice(i[a].length-1)){case"Y":throw new Error("Unsupported ISO Duration Field: "+i[a].slice(i[a].length-1));case"D":e*=24;case"H":e*=60;case"M":if(n)e*=60;else throw new Error("Unsupported ISO Duration Field: M")}r+=e*parseInt(i[a],10)}return r}var iv=new Date("2017-02-19T19:06:09.000Z"),Lm=isNaN(iv.getFullYear())?new Date("2/19/17"):iv,Uk=Lm.getFullYear()==2017;function Vr(t,r){var e=new Date(t);if(Uk)return r>0?e.setTime(e.getTime()+e.getTimezoneOffset()*60*1e3):r<0&&e.setTime(e.getTime()-e.getTimezoneOffset()*60*1e3),e;if(t instanceof Date)return t;if(Lm.getFullYear()==1917&&!isNaN(e.getFullYear())){var n=e.getFullYear();return t.indexOf(""+n)>-1||e.setFullYear(e.getFullYear()+100),e}var i=t.match(/\d+/g)||["2017","2","19","0","0","0"],a=new Date(+i[0],+i[1]-1,+i[2],+i[3]||0,+i[4]||0,+i[5]||0);return t.indexOf("Z")>-1&&(a=new Date(a.getTime()-a.getTimezoneOffset()*60*1e3)),a}function Us(t,r){if(lr&&Buffer.isBuffer(t)){if(r){if(t[0]==255&&t[1]==254)return xa(t.slice(2).toString("utf16le"));if(t[1]==254&&t[2]==255)return xa(Em(t.slice(2).toString("binary")))}return t.toString("binary")}if(typeof TextDecoder<"u")try{if(r){if(t[0]==255&&t[1]==254)return xa(new TextDecoder("utf-16le").decode(t.slice(2)));if(t[0]==254&&t[1]==255)return xa(new TextDecoder("utf-16be").decode(t.slice(2)))}var e={"€":"€","‚":"‚",ƒ:"ƒ","„":"„","…":"…","†":"†","‡":"‡","ˆ":"ˆ","‰":"‰",Š:"Š","‹":"‹",Œ:"Œ",Ž:"Ž","‘":"‘","’":"’","“":"“","”":"”","•":"•","–":"–","—":"—","˜":"˜","™":"™",š:"š","›":"›",œ:"œ",ž:"ž",Ÿ:"Ÿ"};return Array.isArray(t)&&(t=new Uint8Array(t)),new TextDecoder("latin1").decode(t).replace(/[€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ]/g,function(a){return e[a]||a})}catch{}for(var n=[],i=0;i!=t.length;++i)n.push(String.fromCharCode(t[i]));return n.join("")}function Hr(t){if(typeof JSON<"u"&&!Array.isArray(t))return JSON.parse(JSON.stringify(t));if(typeof t!="object"||t==null)return t;if(t instanceof Date)return new Date(t.getTime());var r={};for(var e in t)Object.prototype.hasOwnProperty.call(t,e)&&(r[e]=Hr(t[e]));return r}function Jr(t,r){for(var e="";e.length3&&Hk.indexOf(l)==-1)return e}else if(l.match(/[a-z]/))return e;return n<0||n>8099?e:(i>0||a>1)&&n!=101?r:t.match(/[^-0-9:,\/\\]/)?e:r}var Xk=function(){var t="abacaba".split(/(:?b)/i).length==5;return function(e,n,i){if(t||typeof n=="string")return e.split(n);for(var a=e.split(n),l=[a[0]],d=1;d\r +`,Wk=/([^"\s?>\/]+)\s*=\s*((?:")([^"]*)(?:")|(?:')([^']*)(?:')|([^'">\s]+))/g,sv=/<[\/\?]?[a-zA-Z0-9:_-]+(?:\s+[^"\s?>\/]+\s*=\s*(?:"[^"]*"|'[^']*'|[^'">\s=]+))*\s*[\/\?]?>/mg,Vk=/<[^>]*>/g,$n=fn.match(sv)?sv:Vk,$k=/<\w*:/,Gk=/<(\/?)\w+:/;function Qt(t,r,e){for(var n={},i=0,a=0;i!==t.length&&!((a=t.charCodeAt(i))===32||a===10||a===13);++i);if(r||(n[0]=t.slice(0,i)),i===t.length)return n;var l=t.match(Wk),d=0,m="",b=0,h="",_="",g=1;if(l)for(b=0;b!=l.length;++b){for(_=l[b],a=0;a!=_.length&&_.charCodeAt(a)!==61;++a);for(h=_.slice(0,a).trim();_.charCodeAt(a+1)==32;)++a;for(g=(i=_.charCodeAt(a+1))==34||i==39?1:0,m=_.slice(a+1+g,_.length-g),d=0;d!=h.length&&h.charCodeAt(d)!==58;++d);if(d===h.length)h.indexOf("_")>0&&(h=h.slice(0,h.indexOf("_"))),n[h]=m,e||(n[h.toLowerCase()]=m);else{var y=(d===5&&h.slice(0,5)==="xmlns"?"xmlns":"")+h.slice(d+1);if(n[y]&&h.slice(d-3,d)=="ext")continue;n[y]=m,e||(n[y.toLowerCase()]=m)}}return n}function ka(t){return t.replace(Gk,"<$1")}var zm={""":'"',"'":"'",">":">","<":"<","&":"&"},Vh=Pc(zm),wr=function(){var t=/&(?:quot|apos|gt|lt|amp|#x?([\da-fA-F]+));/ig,r=/_x([\da-fA-F]{4})_/ig;return function e(n){var i=n+"",a=i.indexOf("-1?16:10))||d}).replace(r,function(d,m){return String.fromCharCode(parseInt(m,16))});var l=i.indexOf("]]>");return e(i.slice(0,a))+i.slice(a+9,l)+e(i.slice(l+3))}}(),$h=/[&<>'"]/g,Kk=/[\u0000-\u0008\u000b-\u001f]/g;function Ir(t){var r=t+"";return r.replace($h,function(e){return Vh[e]}).replace(Kk,function(e){return"_x"+("000"+e.charCodeAt(0).toString(16)).slice(-4)+"_"})}function ov(t){return Ir(t).replace(/ /g,"_x0020_")}var Wm=/[\u0000-\u001f]/g;function Gh(t){var r=t+"";return r.replace($h,function(e){return Vh[e]}).replace(/\n/g,"
").replace(Wm,function(e){return"&#x"+("000"+e.charCodeAt(0).toString(16)).slice(-4)+";"})}function Yk(t){var r=t+"";return r.replace($h,function(e){return Vh[e]}).replace(Wm,function(e){return"&#x"+e.charCodeAt(0).toString(16).toUpperCase()+";"})}var fv=function(){var t=/&#(\d+);/g;function r(e,n){return String.fromCharCode(parseInt(n,10))}return function(n){return n.replace(t,r)}}();function Zk(t){return t.replace(/(\r\n|[\r\n])/g," ")}function Ur(t){switch(t){case 1:case!0:case"1":case"true":case"TRUE":return!0;default:return!1}}function Ul(t){for(var r="",e=0,n=0,i=0,a=0,l=0,d=0;e191&&n<224){l=(n&31)<<6,l|=i&63,r+=String.fromCharCode(l);continue}if(a=t.charCodeAt(e++),n<240){r+=String.fromCharCode((n&15)<<12|(i&63)<<6|a&63);continue}l=t.charCodeAt(e++),d=((n&7)<<18|(i&63)<<12|(a&63)<<6|l&63)-65536,r+=String.fromCharCode(55296+(d>>>10&1023)),r+=String.fromCharCode(56320+(d&1023))}return r}function uv(t){var r=hs(2*t.length),e,n,i=1,a=0,l=0,d;for(n=0;n>>10&1023),e=56320+(e&1023)),l!==0&&(r[a++]=l&255,r[a++]=l>>>8,l=0),r[a++]=e%256,r[a++]=e>>>8;return r.slice(0,a).toString("ucs2")}function cv(t){return Va(t,"binary").toString("utf8")}var Gu="foo bar baz☃🍣",Nr=lr&&(cv(Gu)==Ul(Gu)&&cv||uv(Gu)==Ul(Gu)&&uv)||Ul,xa=lr?function(t){return Va(t,"utf8").toString("binary")}:function(t){for(var r=[],e=0,n=0,i=0;e>6))),r.push(String.fromCharCode(128+(n&63)));break;case(n>=55296&&n<57344):n-=55296,i=t.charCodeAt(e++)-56320+(n<<10),r.push(String.fromCharCode(240+(i>>18&7))),r.push(String.fromCharCode(144+(i>>12&63))),r.push(String.fromCharCode(128+(i>>6&63))),r.push(String.fromCharCode(128+(i&63)));break;default:r.push(String.fromCharCode(224+(n>>12))),r.push(String.fromCharCode(128+(n>>6&63))),r.push(String.fromCharCode(128+(n&63)))}return r.join("")},If=function(){var t={};return function(e,n){var i=e+"|"+(n||"");return t[i]?t[i]:t[i]=new RegExp("<(?:\\w+:)?"+e+'(?: xml:space="preserve")?(?:[^>]*)>([\\s\\S]*?)",n||"")}}(),Jk=function(){var t=[["nbsp"," "],["middot","·"],["quot",'"'],["apos","'"],["gt",">"],["lt","<"],["amp","&"]].map(function(r){return[new RegExp("&"+r[0]+";","ig"),r[1]]});return function(e){for(var n=e.replace(/^[\t\n\r ]+/,"").replace(/[\t\n\r ]+$/,"").replace(/>\s+/g,">").replace(/\s+/g,` +`).replace(/<[^>]*>/g,""),i=0;i([\\s\\S]*?)","g")}}(),qk=/<\/?(?:vt:)?variant>/g,e6=/<(?:vt:)([^>]*)>([\s\S]*)"+r+""}function Mf(t){return on(t).map(function(r){return" "+r+'="'+t[r]+'"'}).join("")}function Ft(t,r,e){return"<"+t+(e!=null?Mf(e):"")+(r!=null?(r.match(Vm)?' xml:space="preserve"':"")+">"+r+""}function vh(t,r){try{return t.toISOString().replace(/\.\d*/,"")}catch(e){if(r)throw e}return""}function t6(t,r){switch(typeof t){case"string":var e=Ft("vt:lpwstr",Ir(t));return r&&(e=e.replace(/"/g,"_x0022_")),e;case"number":return Ft((t|0)==t?"vt:i4":"vt:r8",Ir(String(t)));case"boolean":return Ft("vt:bool",t?"true":"false")}if(t instanceof Date)return Ft("vt:filetime",vh(t));throw new Error("Unable to serialize "+t)}function Kh(t){if(lr&&Buffer.isBuffer(t))return t.toString("utf8");if(typeof t=="string")return t;if(typeof Uint8Array<"u"&&t instanceof Uint8Array)return Nr(ys(Uh(t)));throw new Error("Bad input format: expected Buffer or string")}var Df=/<(\/?)([^\s?>:\/]+)(?:[\s?:\/][^>]*)?>/mg,xn={CORE_PROPS:"http://schemas.openxmlformats.org/package/2006/metadata/core-properties",CUST_PROPS:"http://schemas.openxmlformats.org/officeDocument/2006/custom-properties",EXT_PROPS:"http://schemas.openxmlformats.org/officeDocument/2006/extended-properties",CT:"http://schemas.openxmlformats.org/package/2006/content-types",RELS:"http://schemas.openxmlformats.org/package/2006/relationships",TCMNT:"http://schemas.microsoft.com/office/spreadsheetml/2018/threadedcomments",dc:"http://purl.org/dc/elements/1.1/",dcterms:"http://purl.org/dc/terms/",dcmitype:"http://purl.org/dc/dcmitype/",mx:"http://schemas.microsoft.com/office/mac/excel/2008/main",r:"http://schemas.openxmlformats.org/officeDocument/2006/relationships",sjs:"http://schemas.openxmlformats.org/package/2006/sheetjs/core-properties",vt:"http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes",xsi:"http://www.w3.org/2001/XMLSchema-instance",xsd:"http://www.w3.org/2001/XMLSchema"},Vs=["http://schemas.openxmlformats.org/spreadsheetml/2006/main","http://purl.oclc.org/ooxml/spreadsheetml/main","http://schemas.microsoft.com/office/excel/2006/main","http://schemas.microsoft.com/office/excel/2006/2"],Si={o:"urn:schemas-microsoft-com:office:office",x:"urn:schemas-microsoft-com:office:excel",ss:"urn:schemas-microsoft-com:office:spreadsheet",dt:"uuid:C2F41010-65B3-11d1-A29F-00AA00C14882",mv:"http://macVmlSchemaUri",v:"urn:schemas-microsoft-com:vml",html:"http://www.w3.org/TR/REC-html40"};function r6(t,r){for(var e=1-2*(t[r+7]>>>7),n=((t[r+7]&127)<<4)+(t[r+6]>>>4&15),i=t[r+6]&15,a=5;a>=0;--a)i=i*256+t[r+a];return n==2047?i==0?e*(1/0):NaN:(n==0?n=-1022:(n-=1023,i+=Math.pow(2,52)),e*Math.pow(2,n-52)*i)}function n6(t,r,e){var n=(r<0||1/r==-1/0?1:0)<<7,i=0,a=0,l=n?-r:r;isFinite(l)?l==0?i=a=0:(i=Math.floor(Math.log(l)/Math.LN2),a=l*Math.pow(2,52-i),i<=-1023&&(!isFinite(a)||a>4|n}var hv=function(t){for(var r=[],e=10240,n=0;n0&&Buffer.isBuffer(t[0][0])?Buffer.concat(t[0].map(function(r){return Buffer.isBuffer(r)?r:Va(r)})):hv(t)}:hv,pv=function(t,r,e){for(var n=[],i=r;i0?Gf(t,r+4,r+4+e-1):""},Km=Gm,Ym=function(t,r){var e=ki(t,r);return e>0?Gf(t,r+4,r+4+e-1):""},Zm=Ym,Jm=function(t,r){var e=2*ki(t,r);return e>0?Gf(t,r+4,r+4+e-1):""},Qm=Jm,qm=function(r,e){var n=ki(r,e);return n>0?Yh(r,e+4,e+4+n):""},e1=qm,t1=function(t,r){var e=ki(t,r);return e>0?Gf(t,r+4,r+4+e):""},r1=t1,n1=function(t,r){return r6(t,r)},_c=n1,Zh=function(r){return Array.isArray(r)||typeof Uint8Array<"u"&&r instanceof Uint8Array};lr&&(Km=function(r,e){if(!Buffer.isBuffer(r))return Gm(r,e);var n=r.readUInt32LE(e);return n>0?r.toString("utf8",e+4,e+4+n-1):""},Zm=function(r,e){if(!Buffer.isBuffer(r))return Ym(r,e);var n=r.readUInt32LE(e);return n>0?r.toString("utf8",e+4,e+4+n-1):""},Qm=function(r,e){if(!Buffer.isBuffer(r))return Jm(r,e);var n=2*r.readUInt32LE(e);return r.toString("utf16le",e+4,e+4+n-1)},e1=function(r,e){if(!Buffer.isBuffer(r))return qm(r,e);var n=r.readUInt32LE(e);return r.toString("utf16le",e+4,e+4+n)},r1=function(r,e){if(!Buffer.isBuffer(r))return t1(r,e);var n=r.readUInt32LE(e);return r.toString("utf8",e+4,e+4+n)},_c=function(r,e){return Buffer.isBuffer(r)?r.readDoubleLE(e):n1(r,e)},Zh=function(r){return Buffer.isBuffer(r)||Array.isArray(r)||typeof Uint8Array<"u"&&r instanceof Uint8Array});var Io=function(t,r){return t[r]},ja=function(t,r){return t[r+1]*256+t[r]},i6=function(t,r){var e=t[r+1]*256+t[r];return e<32768?e:(65535-e+1)*-1},ki=function(t,r){return t[r+3]*(1<<24)+(t[r+2]<<16)+(t[r+1]<<8)+t[r]},As=function(t,r){return t[r+3]<<24|t[r+2]<<16|t[r+1]<<8|t[r]},a6=function(t,r){return t[r]<<24|t[r+1]<<16|t[r+2]<<8|t[r+3]};function wf(t,r){var e="",n,i,a=[],l,d,m,b;switch(r){case"dbcs":if(b=this.l,lr&&Buffer.isBuffer(this))e=this.slice(this.l,this.l+2*t).toString("utf16le");else for(m=0;m0?As:a6)(this,this.l),this.l+=4,n):(i=ki(this,this.l),this.l+=4,i);case 8:case-8:if(r==="f")return t==8?i=_c(this,this.l):i=_c([this[this.l+7],this[this.l+6],this[this.l+5],this[this.l+4],this[this.l+3],this[this.l+2],this[this.l+1],this[this.l+0]],0),this.l+=8,i;t=8;case 16:e=$m(this,this.l,t);break}}return this.l+=t,e}var s6=function(t,r,e){t[e]=r&255,t[e+1]=r>>>8&255,t[e+2]=r>>>16&255,t[e+3]=r>>>24&255},o6=function(t,r,e){t[e]=r&255,t[e+1]=r>>8&255,t[e+2]=r>>16&255,t[e+3]=r>>24&255},f6=function(t,r,e){t[e]=r&255,t[e+1]=r>>>8&255};function u6(t,r,e){var n=0,i=0;if(e==="dbcs"){for(i=0;i!=r.length;++i)f6(this,r.charCodeAt(i),this.l+2*i);n=2*r.length}else if(e==="sbcs"){for(r=r.replace(/[^\x00-\x7F]/g,"_"),i=0;i!=r.length;++i)this[this.l+i]=r.charCodeAt(i)&255;n=r.length}else if(e==="hex"){for(;i>8}for(;this.l>>=8,this[this.l+1]=r&255;break;case 3:n=3,this[this.l]=r&255,r>>>=8,this[this.l+1]=r&255,r>>>=8,this[this.l+2]=r&255;break;case 4:n=4,s6(this,r,this.l);break;case 8:if(n=8,e==="f"){n6(this,r,this.l);break}case 16:break;case-4:n=4,o6(this,r,this.l);break}return this.l+=n,this}function i1(t,r){var e=$m(this,this.l,t.length>>1);if(e!==t)throw new Error(r+"Expected "+t+" saw "+e);this.l+=t.length>>1}function Fn(t,r){t.l=r,t.read_shift=wf,t.chk=i1,t.write_shift=u6}function Vn(t,r){t.l+=r}function lt(t){var r=hs(t);return Fn(r,0),r}function $a(t,r,e){if(t){var n,i,a;Fn(t,t.l||0);for(var l=t.length,d=0,m=0;t.ln.l&&(n=n.slice(0,n.l),n.l=n.length),n.length>0&&t.push(n),n=null)},a=function(b){return n&&b=128?1:0)+1,n>=128&&++a,n>=16384&&++a,n>=2097152&&++a;var l=t.next(a);i<=127?l.write_shift(1,i):(l.write_shift(1,(i&127)+128),l.write_shift(1,i>>7));for(var d=0;d!=4;++d)if(n>=128)l.write_shift(1,(n&127)+128),n>>=7;else{l.write_shift(1,n);break}n>0&&Zh(e)&&t.push(e)}}function Sf(t,r,e){var n=Hr(t);if(r.s?(n.cRel&&(n.c+=r.s.c),n.rRel&&(n.r+=r.s.r)):(n.cRel&&(n.c+=r.c),n.rRel&&(n.r+=r.r)),!e||e.biff<12){for(;n.c>=256;)n.c-=256;for(;n.r>=65536;)n.r-=65536}return n}function yv(t,r,e){var n=Hr(t);return n.s=Sf(n.s,r.s,e),n.e=Sf(n.e,r.s,e),n}function kf(t,r){if(t.cRel&&t.c<0)for(t=Hr(t);t.c<0;)t.c+=r>8?16384:256;if(t.rRel&&t.r<0)for(t=Hr(t);t.r<0;)t.r+=r>8?1048576:r>5?65536:16384;var e=er(t);return!t.cRel&&t.cRel!=null&&(e=h6(e)),!t.rRel&&t.rRel!=null&&(e=c6(e)),e}function Hl(t,r){return t.s.r==0&&!t.s.rRel&&t.e.r==(r.biff>=12?1048575:r.biff>=8?65536:16384)&&!t.e.rRel?(t.s.cRel?"":"$")+mn(t.s.c)+":"+(t.e.cRel?"":"$")+mn(t.e.c):t.s.c==0&&!t.s.cRel&&t.e.c==(r.biff>=12?16383:255)&&!t.e.cRel?(t.s.rRel?"":"$")+Cn(t.s.r)+":"+(t.e.rRel?"":"$")+Cn(t.e.r):kf(t.s,r.biff)+":"+kf(t.e,r.biff)}function a1(t){return parseInt(l6(t),10)-1}function Cn(t){return""+(t+1)}function c6(t){return t.replace(/([A-Z]|^)(\d+)$/,"$1$$$2")}function l6(t){return t.replace(/\$(\d+)$/,"$1")}function s1(t){for(var r=d6(t),e=0,n=0;n!==r.length;++n)e=26*e+r.charCodeAt(n)-64;return e-1}function mn(t){if(t<0)throw new Error("invalid column "+t);var r="";for(++t;t;t=Math.floor((t-1)/26))r=String.fromCharCode((t-1)%26+65)+r;return r}function h6(t){return t.replace(/^([A-Z])/,"$$$1")}function d6(t){return t.replace(/^\$([A-Z])/,"$1")}function wn(t){for(var r=0,e=0,n=0;n=48&&i<=57?r=10*r+(i-48):i>=65&&i<=90&&(e=26*e+(i-64))}return{c:e-1,r:r-1}}function er(t){for(var r=t.c+1,e="";r;r=(r-1)/26|0)e=String.fromCharCode((r-1)%26+65)+e;return e+(t.r+1)}function Ki(t){var r=t.indexOf(":");return r==-1?{s:wn(t),e:wn(t)}:{s:wn(t.slice(0,r)),e:wn(t.slice(r+1))}}function pr(t,r){return typeof r>"u"||typeof r=="number"?pr(t.s,t.e):(typeof t!="string"&&(t=er(t)),typeof r!="string"&&(r=er(r)),t==r?t:t+":"+r)}function Rr(t){var r={s:{c:0,r:0},e:{c:0,r:0}},e=0,n=0,i=0,a=t.length;for(e=0;n26);++n)e=26*e+i;for(r.s.c=--e,e=0;n9);++n)e=10*e+i;if(r.s.r=--e,n===a||i!=10)return r.e.c=r.s.c,r.e.r=r.s.r,r;for(++n,e=0;n!=a&&!((i=t.charCodeAt(n)-64)<1||i>26);++n)e=26*e+i;for(r.e.c=--e,e=0;n!=a&&!((i=t.charCodeAt(n)-48)<0||i>9);++n)e=10*e+i;return r.e.r=--e,r}function gv(t,r){var e=t.t=="d"&&r instanceof Date;if(t.z!=null)try{return t.w=Gi(t.z,e?Mn(r):r)}catch{}try{return t.w=Gi((t.XF||{}).numFmtId||(e?14:0),e?Mn(r):r)}catch{return""+r}}function ds(t,r,e){return t==null||t.t==null||t.t=="z"?"":t.w!==void 0?t.w:(t.t=="d"&&!t.z&&e&&e.dateNF&&(t.z=e.dateNF),t.t=="e"?Ga[t.v]||t.v:r==null?gv(t,t.v):gv(t,r))}function $s(t,r){var e=r&&r.sheet?r.sheet:"Sheet1",n={};return n[e]=t,{SheetNames:[e],Sheets:n}}function p6(t,r,e){var n=e||{},i=t?Array.isArray(t):n.dense,a=t||(i?[]:{}),l=0,d=0;if(a&&n.origin!=null){if(typeof n.origin=="number")l=n.origin;else{var m=typeof n.origin=="string"?wn(n.origin):n.origin;l=m.r,d=m.c}a["!ref"]||(a["!ref"]="A1:A1")}var b={s:{c:1e7,r:1e7},e:{c:0,r:0}};if(a["!ref"]){var h=Rr(a["!ref"]);b.s.c=h.s.c,b.s.r=h.s.r,b.e.c=Math.max(b.e.c,h.e.c),b.e.r=Math.max(b.e.r,h.e.r),l==-1&&(b.e.r=l=h.e.r+1)}for(var _=0;_!=r.length;++_)if(r[_]){if(!Array.isArray(r[_]))throw new Error("aoa_to_sheet expects an array of arrays");for(var g=0;g!=r[_].length;++g)if(!(typeof r[_][g]>"u")){var y={v:r[_][g]},x=l+_,p=d+g;if(b.s.r>x&&(b.s.r=x),b.s.c>p&&(b.s.c=p),b.e.r0&&r.write_shift(0,t,"dbcs"),e?r.slice(0,r.l):r}function m6(t){return{ich:t.read_shift(2),ifnt:t.read_shift(2)}}function y6(t,r){return r||(r=lt(4)),r.write_shift(2,t.ich||0),r.write_shift(2,t.ifnt||0),r}function Jh(t,r){var e=t.l,n=t.read_shift(1),i=zn(t),a=[],l={t:i,h:i};if(n&1){for(var d=t.read_shift(4),m=0;m!=d;++m)a.push(m6(t));l.r=a}else l.r=[{ich:0,ifnt:0}];return t.l=e+r,l}function g6(t,r){var e=!1;return r==null&&(e=!0,r=lt(15+4*t.t.length)),r.write_shift(1,0),On(t.t,r),e?r.slice(0,r.l):r}var b6=Jh;function _6(t,r){var e=!1;return r==null&&(e=!0,r=lt(23+4*t.t.length)),r.write_shift(1,1),On(t.t,r),r.write_shift(4,1),y6({ich:0,ifnt:0},r),e?r.slice(0,r.l):r}function Yi(t){var r=t.read_shift(4),e=t.read_shift(2);return e+=t.read_shift(1)<<16,t.l++,{c:r,iStyleRef:e}}function Gs(t,r){return r==null&&(r=lt(8)),r.write_shift(-4,t.c),r.write_shift(3,t.iStyleRef||t.s),r.write_shift(1,0),r}function Ks(t){var r=t.read_shift(2);return r+=t.read_shift(1)<<16,t.l++,{c:-1,iStyleRef:r}}function Ys(t,r){return r==null&&(r=lt(4)),r.write_shift(3,t.iStyleRef||t.s),r.write_shift(1,0),r}var x6=zn,o1=On;function Qh(t){var r=t.read_shift(4);return r===0||r===4294967295?"":t.read_shift(r,"dbcs")}function xc(t,r){var e=!1;return r==null&&(e=!0,r=lt(127)),r.write_shift(4,t.length>0?t.length:4294967295),t.length>0&&r.write_shift(0,t,"dbcs"),e?r.slice(0,r.l):r}var w6=zn,mh=Qh,qh=xc;function e0(t){var r=t.slice(t.l,t.l+4),e=r[0]&1,n=r[0]&2;t.l+=4;var i=n===0?_c([0,0,0,0,r[0]&252,r[1],r[2],r[3]],0):As(r,0)>>2;return e?i/100:i}function f1(t,r){r==null&&(r=lt(4));var e=0,n=0,i=t*100;if(t==(t|0)&&t>=-(1<<29)&&t<1<<29?n=1:i==(i|0)&&i>=-(1<<29)&&i<1<<29&&(n=1,e=1),n)r.write_shift(-4,((e?i:t)<<2)+(e+2));else throw new Error("unsupported RkNumber "+t)}function u1(t){var r={s:{},e:{}};return r.s.r=t.read_shift(4),r.e.r=t.read_shift(4),r.s.c=t.read_shift(4),r.e.c=t.read_shift(4),r}function S6(t,r){return r||(r=lt(16)),r.write_shift(4,t.s.r),r.write_shift(4,t.e.r),r.write_shift(4,t.s.c),r.write_shift(4,t.e.c),r}var Zs=u1,Vo=S6;function Xn(t){if(t.length-t.l<8)throw"XLS Xnum Buffer underflow";return t.read_shift(8,"f")}function Hs(t,r){return(r||lt(8)).write_shift(8,t,"f")}function k6(t){var r={},e=t.read_shift(1),n=e>>>1,i=t.read_shift(1),a=t.read_shift(2,"i"),l=t.read_shift(1),d=t.read_shift(1),m=t.read_shift(1);switch(t.l++,n){case 0:r.auto=1;break;case 1:r.index=i;var b=Ms[i];b&&(r.rgb=Bf(b));break;case 2:r.rgb=Bf([l,d,m]);break;case 3:r.theme=i;break}return a!=0&&(r.tint=a>0?a/32767:a/32768),r}function wc(t,r){if(r||(r=lt(8)),!t||t.auto)return r.write_shift(4,0),r.write_shift(4,0),r;t.index!=null?(r.write_shift(1,2),r.write_shift(1,t.index)):t.theme!=null?(r.write_shift(1,6),r.write_shift(1,t.theme)):(r.write_shift(1,5),r.write_shift(1,0));var e=t.tint||0;if(e>0?e*=32767:e<0&&(e*=32768),r.write_shift(2,e),!t.rgb||t.theme!=null)r.write_shift(2,0),r.write_shift(1,0),r.write_shift(1,0);else{var n=t.rgb||"FFFFFF";typeof n=="number"&&(n=("000000"+n.toString(16)).slice(-6)),r.write_shift(1,parseInt(n.slice(0,2),16)),r.write_shift(1,parseInt(n.slice(2,4),16)),r.write_shift(1,parseInt(n.slice(4,6),16)),r.write_shift(1,255)}return r}function E6(t){var r=t.read_shift(1);t.l++;var e={fBold:r&1,fItalic:r&2,fUnderline:r&4,fStrikeout:r&8,fOutline:r&16,fShadow:r&32,fCondense:r&64,fExtend:r&128};return e}function T6(t,r){r||(r=lt(2));var e=(t.italic?2:0)|(t.strike?8:0)|(t.outline?16:0)|(t.shadow?32:0)|(t.condense?64:0)|(t.extend?128:0);return r.write_shift(1,e),r.write_shift(1,0),r}function c1(t,r){var e={2:"BITMAP",3:"METAFILEPICT",8:"DIB",14:"ENHMETAFILE"},n=t.read_shift(4);switch(n){case 0:return"";case 4294967295:case 4294967294:return e[t.read_shift(4)]||""}if(n>400)throw new Error("Unsupported Clipboard: "+n.toString(16));return t.l-=4,t.read_shift(0,r==1?"lpstr":"lpwstr")}function O6(t){return c1(t,1)}function C6(t){return c1(t,2)}var t0=2,oi=3,Ku=11,bv=12,Sc=19,Yu=64,R6=65,A6=71,P6=4108,F6=4126,En=80,l1=81,I6=[En,l1],yh={1:{n:"CodePage",t:t0},2:{n:"Category",t:En},3:{n:"PresentationFormat",t:En},4:{n:"ByteCount",t:oi},5:{n:"LineCount",t:oi},6:{n:"ParagraphCount",t:oi},7:{n:"SlideCount",t:oi},8:{n:"NoteCount",t:oi},9:{n:"HiddenCount",t:oi},10:{n:"MultimediaClipCount",t:oi},11:{n:"ScaleCrop",t:Ku},12:{n:"HeadingPairs",t:P6},13:{n:"TitlesOfParts",t:F6},14:{n:"Manager",t:En},15:{n:"Company",t:En},16:{n:"LinksUpToDate",t:Ku},17:{n:"CharacterCount",t:oi},19:{n:"SharedDoc",t:Ku},22:{n:"HyperlinksChanged",t:Ku},23:{n:"AppVersion",t:oi,p:"version"},24:{n:"DigSig",t:R6},26:{n:"ContentType",t:En},27:{n:"ContentStatus",t:En},28:{n:"Language",t:En},29:{n:"Version",t:En},255:{},2147483648:{n:"Locale",t:Sc},2147483651:{n:"Behavior",t:Sc},1919054434:{}},gh={1:{n:"CodePage",t:t0},2:{n:"Title",t:En},3:{n:"Subject",t:En},4:{n:"Author",t:En},5:{n:"Keywords",t:En},6:{n:"Comments",t:En},7:{n:"Template",t:En},8:{n:"LastAuthor",t:En},9:{n:"RevNumber",t:En},10:{n:"EditTime",t:Yu},11:{n:"LastPrinted",t:Yu},12:{n:"CreatedDate",t:Yu},13:{n:"ModifiedDate",t:Yu},14:{n:"PageCount",t:oi},15:{n:"WordCount",t:oi},16:{n:"CharCount",t:oi},17:{n:"Thumbnail",t:A6},18:{n:"Application",t:En},19:{n:"DocSecurity",t:oi},255:{},2147483648:{n:"Locale",t:Sc},2147483651:{n:"Behavior",t:Sc},1919054434:{}},_v={1:"US",2:"CA",3:"",7:"RU",20:"EG",30:"GR",31:"NL",32:"BE",33:"FR",34:"ES",36:"HU",39:"IT",41:"CH",43:"AT",44:"GB",45:"DK",46:"SE",47:"NO",48:"PL",49:"DE",52:"MX",55:"BR",61:"AU",64:"NZ",66:"TH",81:"JP",82:"KR",84:"VN",86:"CN",90:"TR",105:"JS",213:"DZ",216:"MA",218:"LY",351:"PT",354:"IS",358:"FI",420:"CZ",886:"TW",961:"LB",962:"JO",963:"SY",964:"IQ",965:"KW",966:"SA",971:"AE",972:"IL",974:"QA",981:"IR",65535:"US"},M6=[null,"solid","mediumGray","darkGray","lightGray","darkHorizontal","darkVertical","darkDown","darkUp","darkGrid","darkTrellis","lightHorizontal","lightVertical","lightDown","lightUp","lightGrid","lightTrellis","gray125","gray0625"];function D6(t){return t.map(function(r){return[r>>16&255,r>>8&255,r&255]})}var N6=D6([0,16777215,16711680,65280,255,16776960,16711935,65535,0,16777215,16711680,65280,255,16776960,16711935,65535,8388608,32768,128,8421376,8388736,32896,12632256,8421504,10066431,10040166,16777164,13434879,6684774,16744576,26316,13421823,128,16711935,16776960,65535,8388736,8388608,32896,255,52479,13434879,13434828,16777113,10079487,16751052,13408767,16764057,3368703,3394764,10079232,16763904,16750848,16737792,6710937,9868950,13158,3381606,13056,3355392,10040064,10040166,3355545,3355443,16777215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),Ms=Hr(N6),Ga={0:"#NULL!",7:"#DIV/0!",15:"#VALUE!",23:"#REF!",29:"#NAME?",36:"#NUM!",42:"#N/A",43:"#GETTING_DATA",255:"#WTF?"},h1={"#NULL!":0,"#DIV/0!":7,"#VALUE!":15,"#REF!":23,"#NAME?":29,"#NUM!":36,"#N/A":42,"#GETTING_DATA":43,"#WTF?":255},bh={"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml":"workbooks","application/vnd.ms-excel.sheet.macroEnabled.main+xml":"workbooks","application/vnd.ms-excel.sheet.binary.macroEnabled.main":"workbooks","application/vnd.ms-excel.addin.macroEnabled.main+xml":"workbooks","application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml":"workbooks","application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml":"sheets","application/vnd.ms-excel.worksheet":"sheets","application/vnd.ms-excel.binIndexWs":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml":"charts","application/vnd.ms-excel.chartsheet":"charts","application/vnd.ms-excel.macrosheet+xml":"macros","application/vnd.ms-excel.macrosheet":"macros","application/vnd.ms-excel.intlmacrosheet":"TODO","application/vnd.ms-excel.binIndexMs":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml":"dialogs","application/vnd.ms-excel.dialogsheet":"dialogs","application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml":"strs","application/vnd.ms-excel.sharedStrings":"strs","application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml":"styles","application/vnd.ms-excel.styles":"styles","application/vnd.openxmlformats-package.core-properties+xml":"coreprops","application/vnd.openxmlformats-officedocument.custom-properties+xml":"custprops","application/vnd.openxmlformats-officedocument.extended-properties+xml":"extprops","application/vnd.openxmlformats-officedocument.customXmlProperties+xml":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.customProperty":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml":"comments","application/vnd.ms-excel.comments":"comments","application/vnd.ms-excel.threadedcomments+xml":"threadedcomments","application/vnd.ms-excel.person+xml":"people","application/vnd.openxmlformats-officedocument.spreadsheetml.sheetMetadata+xml":"metadata","application/vnd.ms-excel.sheetMetadata":"metadata","application/vnd.ms-excel.pivotTable":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.pivotTable+xml":"TODO","application/vnd.openxmlformats-officedocument.drawingml.chart+xml":"TODO","application/vnd.ms-office.chartcolorstyle+xml":"TODO","application/vnd.ms-office.chartstyle+xml":"TODO","application/vnd.ms-office.chartex+xml":"TODO","application/vnd.ms-excel.calcChain":"calcchains","application/vnd.openxmlformats-officedocument.spreadsheetml.calcChain+xml":"calcchains","application/vnd.openxmlformats-officedocument.spreadsheetml.printerSettings":"TODO","application/vnd.ms-office.activeX":"TODO","application/vnd.ms-office.activeX+xml":"TODO","application/vnd.ms-excel.attachedToolbars":"TODO","application/vnd.ms-excel.connections":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml":"TODO","application/vnd.ms-excel.externalLink":"links","application/vnd.openxmlformats-officedocument.spreadsheetml.externalLink+xml":"links","application/vnd.ms-excel.pivotCacheDefinition":"TODO","application/vnd.ms-excel.pivotCacheRecords":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheDefinition+xml":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheRecords+xml":"TODO","application/vnd.ms-excel.queryTable":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.queryTable+xml":"TODO","application/vnd.ms-excel.userNames":"TODO","application/vnd.ms-excel.revisionHeaders":"TODO","application/vnd.ms-excel.revisionLog":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.revisionHeaders+xml":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.revisionLog+xml":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.userNames+xml":"TODO","application/vnd.ms-excel.tableSingleCells":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.tableSingleCells+xml":"TODO","application/vnd.ms-excel.slicer":"TODO","application/vnd.ms-excel.slicerCache":"TODO","application/vnd.ms-excel.slicer+xml":"TODO","application/vnd.ms-excel.slicerCache+xml":"TODO","application/vnd.ms-excel.wsSortMap":"TODO","application/vnd.ms-excel.table":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml":"TODO","application/vnd.openxmlformats-officedocument.theme+xml":"themes","application/vnd.openxmlformats-officedocument.themeOverride+xml":"TODO","application/vnd.ms-excel.Timeline+xml":"TODO","application/vnd.ms-excel.TimelineCache+xml":"TODO","application/vnd.ms-office.vbaProject":"vba","application/vnd.ms-office.vbaProjectSignature":"TODO","application/vnd.ms-office.volatileDependencies":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.volatileDependencies+xml":"TODO","application/vnd.ms-excel.controlproperties+xml":"TODO","application/vnd.openxmlformats-officedocument.model+data":"TODO","application/vnd.ms-excel.Survey+xml":"TODO","application/vnd.openxmlformats-officedocument.drawing+xml":"drawings","application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml":"TODO","application/vnd.openxmlformats-officedocument.drawingml.diagramColors+xml":"TODO","application/vnd.openxmlformats-officedocument.drawingml.diagramData+xml":"TODO","application/vnd.openxmlformats-officedocument.drawingml.diagramLayout+xml":"TODO","application/vnd.openxmlformats-officedocument.drawingml.diagramStyle+xml":"TODO","application/vnd.openxmlformats-officedocument.vmlDrawing":"TODO","application/vnd.openxmlformats-package.relationships+xml":"rels","application/vnd.openxmlformats-officedocument.oleObject":"TODO","image/png":"TODO",sheet:"js"},Zu={workbooks:{xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml",xlsm:"application/vnd.ms-excel.sheet.macroEnabled.main+xml",xlsb:"application/vnd.ms-excel.sheet.binary.macroEnabled.main",xlam:"application/vnd.ms-excel.addin.macroEnabled.main+xml",xltx:"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml"},strs:{xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml",xlsb:"application/vnd.ms-excel.sharedStrings"},comments:{xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml",xlsb:"application/vnd.ms-excel.comments"},sheets:{xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml",xlsb:"application/vnd.ms-excel.worksheet"},charts:{xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml",xlsb:"application/vnd.ms-excel.chartsheet"},dialogs:{xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml",xlsb:"application/vnd.ms-excel.dialogsheet"},macros:{xlsx:"application/vnd.ms-excel.macrosheet+xml",xlsb:"application/vnd.ms-excel.macrosheet"},metadata:{xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetMetadata+xml",xlsb:"application/vnd.ms-excel.sheetMetadata"},styles:{xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml",xlsb:"application/vnd.ms-excel.styles"}};function r0(){return{workbooks:[],sheets:[],charts:[],dialogs:[],macros:[],rels:[],strs:[],comments:[],threadedcomments:[],links:[],coreprops:[],extprops:[],custprops:[],themes:[],styles:[],calcchains:[],vba:[],drawings:[],metadata:[],people:[],TODO:[],xmlns:""}}function B6(t){var r=r0();if(!t||!t.match)return r;var e={};if((t.match($n)||[]).forEach(function(n){var i=Qt(n);switch(i[0].replace($k,"<")){case"0?r.calcchains[0]:"",r.sst=r.strs.length>0?r.strs[0]:"",r.style=r.styles.length>0?r.styles[0]:"",r.defaults=e,delete r.calcchains,r}function d1(t,r){var e=Bk(bh),n=[],i;n[n.length]=fn,n[n.length]=Ft("Types",null,{xmlns:xn.CT,"xmlns:xsd":xn.xsd,"xmlns:xsi":xn.xsi}),n=n.concat([["xml","application/xml"],["bin","application/vnd.ms-excel.sheet.binary.macroEnabled.main"],["vml","application/vnd.openxmlformats-officedocument.vmlDrawing"],["data","application/vnd.openxmlformats-officedocument.model+data"],["bmp","image/bmp"],["png","image/png"],["gif","image/gif"],["emf","image/x-emf"],["wmf","image/x-wmf"],["jpg","image/jpeg"],["jpeg","image/jpeg"],["tif","image/tiff"],["tiff","image/tiff"],["pdf","application/pdf"],["rels","application/vnd.openxmlformats-package.relationships+xml"]].map(function(m){return Ft("Default",null,{Extension:m[0],ContentType:m[1]})}));var a=function(m){t[m]&&t[m].length>0&&(i=t[m][0],n[n.length]=Ft("Override",null,{PartName:(i[0]=="/"?"":"/")+i,ContentType:Zu[m][r.bookType]||Zu[m].xlsx}))},l=function(m){(t[m]||[]).forEach(function(b){n[n.length]=Ft("Override",null,{PartName:(b[0]=="/"?"":"/")+b,ContentType:Zu[m][r.bookType]||Zu[m].xlsx})})},d=function(m){(t[m]||[]).forEach(function(b){n[n.length]=Ft("Override",null,{PartName:(b[0]=="/"?"":"/")+b,ContentType:e[m][0]})})};return a("workbooks"),l("sheets"),l("charts"),d("themes"),["strs","styles"].forEach(a),["coreprops","extprops","custprops"].forEach(d),d("vba"),d("comments"),d("threadedcomments"),d("drawings"),l("metadata"),d("people"),n.length>2&&(n[n.length]="",n[1]=n[1].replace("/>",">")),n.join("")}var hr={WB:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument",SHEET:"http://sheetjs.openxmlformats.org/officeDocument/2006/relationships/officeDocument",HLINK:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink",VML:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing",XPATH:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLinkPath",XMISS:"http://schemas.microsoft.com/office/2006/relationships/xlExternalLinkPath/xlPathMissing",XLINK:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLink",CXML:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXml",CXMLP:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXmlProps",CMNT:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments",CORE_PROPS:"http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties",EXT_PROPS:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties",CUST_PROPS:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/custom-properties",SST:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings",STY:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles",THEME:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme",CHART:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart",CHARTEX:"http://schemas.microsoft.com/office/2014/relationships/chartEx",CS:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/chartsheet",WS:["http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet","http://purl.oclc.org/ooxml/officeDocument/relationships/worksheet"],DS:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/dialogsheet",MS:"http://schemas.microsoft.com/office/2006/relationships/xlMacrosheet",IMG:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",DRAW:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing",XLMETA:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/sheetMetadata",TCMNT:"http://schemas.microsoft.com/office/2017/10/relationships/threadedComment",PEOPLE:"http://schemas.microsoft.com/office/2017/10/relationships/person",VBA:"http://schemas.microsoft.com/office/2006/relationships/vbaProject"};function Nf(t){var r=t.lastIndexOf("/");return t.slice(0,r+1)+"_rels/"+t.slice(r+1)+".rels"}function Ef(t,r){var e={"!id":{}};if(!t)return e;r.charAt(0)!=="/"&&(r="/"+r);var n={};return(t.match($n)||[]).forEach(function(i){var a=Qt(i);if(a[0]==="2&&(r[r.length]="",r[1]=r[1].replace("/>",">")),r.join("")}function Fr(t,r,e,n,i,a){if(i||(i={}),t["!id"]||(t["!id"]={}),t["!idx"]||(t["!idx"]=1),r<0)for(r=t["!idx"];t["!id"]["rId"+r];++r);if(t["!idx"]=r+1,i.Id="rId"+r,i.Type=n,i.Target=e,a?i.TargetMode=a:[hr.HLINK,hr.XPATH,hr.XMISS].indexOf(i.Type)>-1&&(i.TargetMode="External"),t["!id"][i.Id])throw new Error("Cannot rewrite rId "+r);return t["!id"][i.Id]=i,t[("/"+i.Target).replace("//","/")]=i,r}var L6="application/vnd.oasis.opendocument.spreadsheet";function j6(t,r){for(var e=Kh(t),n,i;n=Df.exec(e);)switch(n[3]){case"manifest":break;case"file-entry":if(i=Qt(n[0],!1),i.path=="/"&&i.type!==L6)throw new Error("This OpenDocument is not a spreadsheet");break;case"encryption-data":case"algorithm":case"start-key-generation":case"key-derivation":throw new Error("Unsupported ODS Encryption");default:if(r&&r.WTF)throw n}}function U6(t){var r=[fn];r.push(` +`),r.push(` +`);for(var e=0;e +`);return r.push(""),r.join("")}function xv(t,r,e){return[' +`,' +`,` +`].join("")}function H6(t,r){return[' +`,' +`,` +`].join("")}function X6(t){var r=[fn];r.push(` +`);for(var e=0;e!=t.length;++e)r.push(xv(t[e][0],t[e][1])),r.push(H6("",t[e][0]));return r.push(xv("","Document","pkg")),r.push(""),r.join("")}function p1(){return'SheetJS '+vc.version+""}var $i=[["cp:category","Category"],["cp:contentStatus","ContentStatus"],["cp:keywords","Keywords"],["cp:lastModifiedBy","LastAuthor"],["cp:lastPrinted","LastPrinted"],["cp:revision","RevNumber"],["cp:version","Version"],["dc:creator","Author"],["dc:description","Comments"],["dc:identifier","Identifier"],["dc:language","Language"],["dc:subject","Subject"],["dc:title","Title"],["dcterms:created","CreatedDate","date"],["dcterms:modified","ModifiedDate","date"]],z6=function(){for(var t=new Array($i.length),r=0;r<$i.length;++r){var e=$i[r],n="(?:"+e[0].slice(0,e[0].indexOf(":"))+":)"+e[0].slice(e[0].indexOf(":")+1);t[r]=new RegExp("<"+n+"[^>]*>([\\s\\S]*?)")}return t}();function v1(t){var r={};t=Nr(t);for(var e=0;e<$i.length;++e){var n=$i[e],i=t.match(z6[e]);i!=null&&i.length>0&&(r[n[1]]=wr(i[1])),n[2]==="date"&&r[n[1]]&&(r[n[1]]=Vr(r[n[1]]))}return r}function Xl(t,r,e,n,i){i[t]!=null||r==null||r===""||(i[t]=r,r=Ir(r),n[n.length]=e?Ft(t,r,e):In(t,r))}function m1(t,r){var e=r||{},n=[fn,Ft("cp:coreProperties",null,{"xmlns:cp":xn.CORE_PROPS,"xmlns:dc":xn.dc,"xmlns:dcterms":xn.dcterms,"xmlns:dcmitype":xn.dcmitype,"xmlns:xsi":xn.xsi})],i={};if(!t&&!e.Props)return n.join("");t&&(t.CreatedDate!=null&&Xl("dcterms:created",typeof t.CreatedDate=="string"?t.CreatedDate:vh(t.CreatedDate,e.WTF),{"xsi:type":"dcterms:W3CDTF"},n,i),t.ModifiedDate!=null&&Xl("dcterms:modified",typeof t.ModifiedDate=="string"?t.ModifiedDate:vh(t.ModifiedDate,e.WTF),{"xsi:type":"dcterms:W3CDTF"},n,i));for(var a=0;a!=$i.length;++a){var l=$i[a],d=e.Props&&e.Props[l[1]]!=null?e.Props[l[1]]:t?t[l[1]]:null;d===!0?d="1":d===!1?d="0":typeof d=="number"&&(d=String(d)),d!=null&&Xl(l[0],d,null,n,i)}return n.length>2&&(n[n.length]="",n[1]=n[1].replace("/>",">")),n.join("")}var Ds=[["Application","Application","string"],["AppVersion","AppVersion","string"],["Company","Company","string"],["DocSecurity","DocSecurity","string"],["Manager","Manager","string"],["HyperlinksChanged","HyperlinksChanged","bool"],["SharedDoc","SharedDoc","bool"],["LinksUpToDate","LinksUpToDate","bool"],["ScaleCrop","ScaleCrop","bool"],["HeadingPairs","HeadingPairs","raw"],["TitlesOfParts","TitlesOfParts","raw"]],y1=["Worksheets","SheetNames","NamedRanges","DefinedNames","Chartsheets","ChartNames"];function g1(t,r,e,n){var i=[];if(typeof t=="string")i=lv(t,n);else for(var a=0;a0)for(var b=0;b!==i.length;b+=2){switch(m=+i[b+1].v,i[b].v){case"Worksheets":case"工作表":case"Листы":case"أوراق العمل":case"ワークシート":case"גליונות עבודה":case"Arbeitsblätter":case"Çalışma Sayfaları":case"Feuilles de calcul":case"Fogli di lavoro":case"Folhas de cálculo":case"Planilhas":case"Regneark":case"Hojas de cálculo":case"Werkbladen":e.Worksheets=m,e.SheetNames=l.slice(d,d+m);break;case"Named Ranges":case"Rangos con nombre":case"名前付き一覧":case"Benannte Bereiche":case"Navngivne områder":e.NamedRanges=m,e.DefinedNames=l.slice(d,d+m);break;case"Charts":case"Diagramme":e.Chartsheets=m,e.ChartNames=l.slice(d,d+m);break}d+=m}}function W6(t,r,e){var n={};return r||(r={}),t=Nr(t),Ds.forEach(function(i){var a=(t.match(If(i[0]))||[])[1];switch(i[2]){case"string":a&&(r[i[1]]=wr(a));break;case"bool":r[i[1]]=a==="true";break;case"raw":var l=t.match(new RegExp("<"+i[0]+"[^>]*>([\\s\\S]*?)"));l&&l.length>0&&(n[i[1]]=l[1]);break}}),n.HeadingPairs&&n.TitlesOfParts&&g1(n.HeadingPairs,n.TitlesOfParts,r,e),r}function b1(t){var r=[],e=Ft;return t||(t={}),t.Application="SheetJS",r[r.length]=fn,r[r.length]=Ft("Properties",null,{xmlns:xn.EXT_PROPS,"xmlns:vt":xn.vt}),Ds.forEach(function(n){if(t[n[1]]!==void 0){var i;switch(n[2]){case"string":i=Ir(String(t[n[1]]));break;case"bool":i=t[n[1]]?"true":"false";break}i!==void 0&&(r[r.length]=e(n[0],i))}}),r[r.length]=e("HeadingPairs",e("vt:vector",e("vt:variant","Worksheets")+e("vt:variant",e("vt:i4",String(t.Worksheets))),{size:2,baseType:"variant"})),r[r.length]=e("TitlesOfParts",e("vt:vector",t.SheetNames.map(function(n){return""+Ir(n)+""}).join(""),{size:t.Worksheets,baseType:"lpstr"})),r.length>2&&(r[r.length]="",r[1]=r[1].replace("/>",">")),r.join("")}var V6=/<[^>]+>[^<]*/g;function $6(t,r){var e={},n="",i=t.match(V6);if(i)for(var a=0;a!=i.length;++a){var l=i[a],d=Qt(l);switch(d[0]){case"":n=null;break;default:if(l.indexOf(""),b=m[0].slice(4),h=m[1];switch(b){case"lpstr":case"bstr":case"lpwstr":e[n]=wr(h);break;case"bool":e[n]=Ur(h);break;case"i1":case"i2":case"i4":case"i8":case"int":case"uint":e[n]=parseInt(h,10);break;case"r4":case"r8":case"decimal":e[n]=parseFloat(h);break;case"filetime":case"date":e[n]=Vr(h);break;case"cy":case"error":e[n]=wr(h);break;default:if(b.slice(-1)=="/")break;r.WTF&&typeof console<"u"&&console.warn("Unexpected",l,b,m)}}else if(l.slice(0,2)!=="2&&(r[r.length]="",r[1]=r[1].replace("/>",">")),r.join("")}var _h={Title:"Title",Subject:"Subject",Author:"Author",Keywords:"Keywords",Comments:"Description",LastAuthor:"LastAuthor",RevNumber:"Revision",Application:"AppName",LastPrinted:"LastPrinted",CreatedDate:"Created",ModifiedDate:"LastSaved",Category:"Category",Manager:"Manager",Company:"Company",AppVersion:"Version",ContentStatus:"ContentStatus",Identifier:"Identifier",Language:"Language"},zl;function G6(t,r,e){zl||(zl=Pc(_h)),r=zl[r]||r,t[r]=e}function K6(t,r){var e=[];return on(_h).map(function(n){for(var i=0;i<$i.length;++i)if($i[i][1]==n)return $i[i];for(i=0;i'+i.join("")+""}function n0(t){var r=t.read_shift(4),e=t.read_shift(4);return new Date((e/1e7*Math.pow(2,32)+r/1e7-11644473600)*1e3).toISOString().replace(/\.000/,"")}function Z6(t){var r=typeof t=="string"?new Date(Date.parse(t)):t,e=r.getTime()/1e3+11644473600,n=e%Math.pow(2,32),i=(e-n)/Math.pow(2,32);n*=1e7,i*=1e7;var a=n/Math.pow(2,32)|0;a>0&&(n=n%Math.pow(2,32),i+=a);var l=lt(8);return l.write_shift(4,n),l.write_shift(4,i),l}function x1(t,r,e){var n=t.l,i=t.read_shift(0,"lpstr-cp");if(e)for(;t.l-n&3;)++t.l;return i}function w1(t,r,e){var n=t.read_shift(0,"lpwstr");return e&&(t.l+=4-(n.length+1&3)&3),n}function S1(t,r,e){return r===31?w1(t):x1(t,r,e)}function xh(t,r,e){return S1(t,r,e===!1?0:4)}function J6(t,r){if(!r)throw new Error("VtUnalignedString must have positive length");return S1(t,r,0)}function Q6(t){for(var r=t.read_shift(4),e=[],n=0;n!=r;++n){var i=t.l;e[n]=t.read_shift(0,"lpwstr").replace(ti,""),t.l-i&2&&(t.l+=2)}return e}function q6(t){for(var r=t.read_shift(4),e=[],n=0;n!=r;++n)e[n]=t.read_shift(0,"lpstr-cp").replace(ti,"");return e}function e8(t){var r=t.l,e=kc(t,l1);t[t.l]==0&&t[t.l+1]==0&&t.l-r&2&&(t.l+=2);var n=kc(t,oi);return[e,n]}function t8(t){for(var r=t.read_shift(4),e=[],n=0;n>2+1<<2),n}function k1(t){var r=t.read_shift(4),e=t.slice(t.l,t.l+r);return t.l+=r,(r&3)>0&&(t.l+=4-(r&3)&3),e}function r8(t){var r={};return r.Size=t.read_shift(4),t.l+=r.Size+3-(r.Size-1)%4,r}function kc(t,r,e){var n=t.read_shift(2),i,a=e||{};if(t.l+=2,r!==bv&&n!==r&&I6.indexOf(r)===-1&&!((r&65534)==4126&&(n&65534)==4126))throw new Error("Expected type "+r+" saw "+n);switch(r===bv?n:r){case 2:return i=t.read_shift(2,"i"),a.raw||(t.l+=2),i;case 3:return i=t.read_shift(4,"i"),i;case 11:return t.read_shift(4)!==0;case 19:return i=t.read_shift(4),i;case 30:return x1(t,n,4).replace(ti,"");case 31:return w1(t);case 64:return n0(t);case 65:return k1(t);case 71:return r8(t);case 80:return xh(t,n,!a.raw).replace(ti,"");case 81:return J6(t,n).replace(ti,"");case 4108:return t8(t);case 4126:case 4127:return n==4127?Q6(t):q6(t);default:throw new Error("TypedPropertyValue unrecognized type "+r+" "+n)}}function Sv(t,r){var e=lt(4),n=lt(4);switch(e.write_shift(4,t==80?31:t),t){case 3:n.write_shift(-4,r);break;case 5:n=lt(8),n.write_shift(8,r,"f");break;case 11:n.write_shift(4,r?1:0);break;case 64:n=Z6(r);break;case 31:case 80:for(n=lt(4+2*(r.length+1)+(r.length%2?0:2)),n.write_shift(4,r.length+1),n.write_shift(0,r,"dbcs");n.l!=n.length;)n.write_shift(1,0);break;default:throw new Error("TypedPropertyValue unrecognized type "+t+" "+r)}return Tn([e,n])}function kv(t,r){var e=t.l,n=t.read_shift(4),i=t.read_shift(4),a=[],l=0,d=0,m=-1,b={};for(l=0;l!=i;++l){var h=t.read_shift(4),_=t.read_shift(4);a[l]=[h,_+e]}a.sort(function(u,o){return u[1]-o[1]});var g={};for(l=0;l!=i;++l){if(t.l!==a[l][1]){var y=!0;if(l>0&&r)switch(r[a[l-1][0]].t){case 2:t.l+2===a[l][1]&&(t.l+=2,y=!1);break;case 80:t.l<=a[l][1]&&(t.l=a[l][1],y=!1);break;case 4108:t.l<=a[l][1]&&(t.l=a[l][1],y=!1);break}if((!r||l==0)&&t.l<=a[l][1]&&(y=!1,t.l=a[l][1]),y)throw new Error("Read Error: Expected address "+a[l][1]+" at "+t.l+" :"+l)}if(r){var x=r[a[l][0]];if(g[x.n]=kc(t,x.t,{raw:!0}),x.p==="version"&&(g[x.n]=String(g[x.n]>>16)+"."+("0000"+String(g[x.n]&65535)).slice(-4)),x.n=="CodePage")switch(g[x.n]){case 0:g[x.n]=1252;case 874:case 932:case 936:case 949:case 950:case 1250:case 1251:case 1253:case 1254:case 1255:case 1256:case 1257:case 1258:case 1e4:case 1200:case 1201:case 1252:case 65e3:case-536:case 65001:case-535:ua(d=g[x.n]>>>0&65535);break;default:throw new Error("Unsupported CodePage: "+g[x.n])}}else if(a[l][0]===1){if(d=g.CodePage=kc(t,t0),ua(d),m!==-1){var p=t.l;t.l=a[m][1],b=wv(t,d),t.l=p}}else if(a[l][0]===0){if(d===0){m=l,t.l=a[l+1][1];continue}b=wv(t,d)}else{var S=b[a[l][0]],w;switch(t[t.l]){case 65:t.l+=4,w=k1(t);break;case 30:t.l+=4,w=xh(t,t[t.l-4]).replace(/\u0000+$/,"");break;case 31:t.l+=4,w=xh(t,t[t.l-4]).replace(/\u0000+$/,"");break;case 3:t.l+=4,w=t.read_shift(4,"i");break;case 19:t.l+=4,w=t.read_shift(4);break;case 5:t.l+=4,w=t.read_shift(8,"f");break;case 11:t.l+=4,w=an(t,4);break;case 64:t.l+=4,w=Vr(n0(t));break;default:throw new Error("unparsed value: "+t[t.l])}g[S]=w}}return t.l=e+n,g}var E1=["CodePage","Thumbnail","_PID_LINKBASE","_PID_HLINKS","SystemIdentifier","FMTID"];function n8(t){switch(typeof t){case"boolean":return 11;case"number":return(t|0)==t?3:5;case"string":return 31;case"object":if(t instanceof Date)return 64;break}return-1}function Ev(t,r,e){var n=lt(8),i=[],a=[],l=8,d=0,m=lt(8),b=lt(8);if(m.write_shift(4,2),m.write_shift(4,1200),b.write_shift(4,1),a.push(m),i.push(b),l+=8+m.length,!r){b=lt(8),b.write_shift(4,0),i.unshift(b);var h=[lt(4)];for(h[0].write_shift(4,t.length),d=0;d-1||y1.indexOf(t[d][0])>-1)&&t[d][1]!=null){var g=t[d][1],y=0;if(r){y=+r[t[d][0]];var x=e[y];if(x.p=="version"&&typeof g=="string"){var p=g.split(".");g=(+p[0]<<16)+(+p[1]||0)}m=Sv(x.t,g)}else{var S=n8(g);S==-1&&(S=31,g=String(g)),m=Sv(S,g)}a.push(m),b=lt(8),b.write_shift(4,r?y:2+d),i.push(b),l+=8+m.length}var w=8*(a.length+1);for(d=0;d=12?2:1),i="sbcs-cont";if(e&&e.biff>=8,!e||e.biff==8){var a=t.read_shift(1);a&&(i="dbcs-cont")}else e.biff==12&&(i="wstr");e.biff>=2&&e.biff<=5&&(i="cpstr");var l=n?t.read_shift(n,i):"";return l}function o8(t){var r=t.read_shift(2),e=t.read_shift(1),n=e&4,i=e&8,a=1+(e&1),l=0,d,m={};i&&(l=t.read_shift(2)),n&&(d=t.read_shift(4));var b=a==2?"dbcs-cont":"sbcs-cont",h=r===0?"":t.read_shift(r,b);return i&&(t.l+=4*l),n&&(t.l+=d),m.t=h,i||(m.raw=""+m.t+"",m.r=m.t),m}function f8(t){var r=t.t||"",e=lt(3+0);e.write_shift(2,r.length),e.write_shift(1,1);var n=lt(2*r.length);n.write_shift(2*r.length,r,"utf16le");var i=[e,n];return Tn(i)}function Xs(t,r,e){var n;if(e){if(e.biff>=2&&e.biff<=5)return t.read_shift(r,"cpstr");if(e.biff>=12)return t.read_shift(r,"dbcs-cont")}var i=t.read_shift(1);return i===0?n=t.read_shift(r,"sbcs-cont"):n=t.read_shift(r,"dbcs-cont"),n}function Zf(t,r,e){var n=t.read_shift(e&&e.biff==2?1:2);return n===0?(t.l++,""):Xs(t,n,e)}function Js(t,r,e){if(e.biff>5)return Zf(t,r,e);var n=t.read_shift(1);return n===0?(t.l++,""):t.read_shift(n,e.biff<=4||!t.lens?"cpstr":"sbcs-cont")}function C1(t,r,e){return e||(e=lt(3+2*t.length)),e.write_shift(2,t.length),e.write_shift(1,1),e.write_shift(31,t,"utf16le"),e}function u8(t){var r=t.read_shift(1);t.l++;var e=t.read_shift(2);return t.l+=2,[r,e]}function c8(t){var r=t.read_shift(4),e=t.l,n=!1;r>24&&(t.l+=r-24,t.read_shift(16)==="795881f43b1d7f48af2c825dc4852763"&&(n=!0),t.l=e);var i=t.read_shift((n?r-24:r)>>1,"utf16le").replace(ti,"");return n&&(t.l+=24),i}function l8(t){for(var r=t.read_shift(2),e="";r-- >0;)e+="../";var n=t.read_shift(0,"lpstr-ansi");if(t.l+=2,t.read_shift(2)!=57005)throw new Error("Bad FileMoniker");var i=t.read_shift(4);if(i===0)return e+n.replace(/\\/g,"/");var a=t.read_shift(4);if(t.read_shift(2)!=3)throw new Error("Bad FileMoniker");var l=t.read_shift(a>>1,"utf16le").replace(ti,"");return e+l}function h8(t,r){var e=t.read_shift(16);switch(e){case"e0c9ea79f9bace118c8200aa004ba90b":return c8(t);case"0303000000000000c000000000000046":return l8(t);default:throw new Error("Unsupported Moniker "+e)}}function Ju(t){var r=t.read_shift(4),e=r>0?t.read_shift(r,"utf16le").replace(ti,""):"";return e}function Cv(t,r){r||(r=lt(6+t.length*2)),r.write_shift(4,1+t.length);for(var e=0;e-1?31:23;switch(n.charAt(0)){case"#":a=28;break;case".":a&=-3;break}r.write_shift(4,2),r.write_shift(4,a);var l=[8,6815827,6619237,4849780,83];for(e=0;e-1?n.slice(0,i):n;for(r.write_shift(4,2*(d.length+1)),e=0;e-1?n.slice(i+1):"",r)}else{for(l="03 03 00 00 00 00 00 00 c0 00 00 00 00 00 00 46".split(" "),e=0;e8?4:2,i=t.read_shift(n),a=t.read_shift(n,"i"),l=t.read_shift(n,"i");return[i,a,l]}function P1(t){var r=t.read_shift(2),e=e0(t);return[r,e]}function g8(t,r,e){t.l+=4,r-=4;var n=t.l+r,i=Yf(t,r,e),a=t.read_shift(2);if(n-=t.l,a!==n)throw new Error("Malformed AddinUdf: padding = "+n+" != "+a);return t.l+=a,i}function Mc(t){var r=t.read_shift(2),e=t.read_shift(2),n=t.read_shift(2),i=t.read_shift(2);return{s:{c:n,r},e:{c:i,r:e}}}function F1(t,r){return r||(r=lt(8)),r.write_shift(2,t.s.r),r.write_shift(2,t.e.r),r.write_shift(2,t.s.c),r.write_shift(2,t.e.c),r}function I1(t){var r=t.read_shift(2),e=t.read_shift(2),n=t.read_shift(1),i=t.read_shift(1);return{s:{c:n,r},e:{c:i,r:e}}}var b8=I1;function M1(t){t.l+=4;var r=t.read_shift(2),e=t.read_shift(2),n=t.read_shift(2);return t.l+=12,[e,r,n]}function _8(t){var r={};return t.l+=4,t.l+=16,r.fSharedNote=t.read_shift(2),t.l+=4,r}function x8(t){var r={};return t.l+=4,t.cf=t.read_shift(2),r}function Ln(t){t.l+=2,t.l+=t.read_shift(2)}var w8={0:Ln,4:Ln,5:Ln,6:Ln,7:x8,8:Ln,9:Ln,10:Ln,11:Ln,12:Ln,13:_8,14:Ln,15:Ln,16:Ln,17:Ln,18:Ln,19:Ln,20:Ln,21:M1};function S8(t,r){for(var e=t.l+r,n=[];t.l=2&&(e.dt=t.read_shift(2),t.l-=2),e.BIFFVer){case 1536:case 1280:case 1024:case 768:case 512:case 2:case 7:break;default:if(r>6)throw new Error("Unexpected BIFF Ver "+e.BIFFVer)}return t.read_shift(r),e}function i0(t,r,e){var n=1536,i=16;switch(e.bookType){case"biff8":break;case"biff5":n=1280,i=8;break;case"biff4":n=4,i=6;break;case"biff3":n=3,i=6;break;case"biff2":n=2,i=4;break;case"xla":break;default:throw new Error("unsupported BIFF version")}var a=lt(i);return a.write_shift(2,n),a.write_shift(2,r),i>4&&a.write_shift(2,29282),i>6&&a.write_shift(2,1997),i>8&&(a.write_shift(2,49161),a.write_shift(2,1),a.write_shift(2,1798),a.write_shift(2,0)),a}function k8(t,r){return r===0||t.read_shift(2),1200}function E8(t,r,e){if(e.enc)return t.l+=r,"";var n=t.l,i=Js(t,0,e);return t.read_shift(r+n-t.l),i}function T8(t,r){var e=!r||r.biff==8,n=lt(e?112:54);for(n.write_shift(r.biff==8?2:1,7),e&&n.write_shift(1,0),n.write_shift(4,859007059),n.write_shift(4,5458548|(e?0:536870912));n.l=8?2:1,n=lt(8+e*t.name.length);n.write_shift(4,t.pos),n.write_shift(1,t.hs||0),n.write_shift(1,t.dt),n.write_shift(1,t.name.length),r.biff>=8&&n.write_shift(1,1),n.write_shift(e*t.name.length,t.name,r.biff<8?"sbcs":"utf16le");var i=n.slice(0,n.l);return i.l=n.l,i}function A8(t,r){for(var e=t.l+r,n=t.read_shift(4),i=t.read_shift(4),a=[],l=0;l!=i&&t.l>15),i&=32767);var a={Unsynced:n&1,DyZero:(n&2)>>1,ExAsc:(n&4)>>2,ExDsc:(n&8)>>3};return[a,i]}function N8(t){var r=t.read_shift(2),e=t.read_shift(2),n=t.read_shift(2),i=t.read_shift(2),a=t.read_shift(2),l=t.read_shift(2),d=t.read_shift(2),m=t.read_shift(2),b=t.read_shift(2);return{Pos:[r,e],Dim:[n,i],Flags:a,CurTab:l,FirstTab:d,Selected:m,TabRatio:b}}function B8(){var t=lt(18);return t.write_shift(2,0),t.write_shift(2,0),t.write_shift(2,29280),t.write_shift(2,17600),t.write_shift(2,56),t.write_shift(2,0),t.write_shift(2,0),t.write_shift(2,1),t.write_shift(2,500),t}function L8(t,r,e){if(e&&e.biff>=2&&e.biff<5)return{};var n=t.read_shift(2);return{RTL:n&64}}function j8(t){var r=lt(18),e=1718;return t&&t.RTL&&(e|=64),r.write_shift(2,e),r.write_shift(4,0),r.write_shift(4,64),r.write_shift(4,0),r.write_shift(4,0),r}function U8(){}function H8(t,r,e){var n={dyHeight:t.read_shift(2),fl:t.read_shift(2)};switch(e&&e.biff||8){case 2:break;case 3:case 4:t.l+=2;break;default:t.l+=10;break}return n.name=Yf(t,0,e),n}function X8(t,r){var e=t.name||"Arial",n=r&&r.biff==5,i=n?15+e.length:16+2*e.length,a=lt(i);return a.write_shift(2,(t.sz||12)*20),a.write_shift(4,0),a.write_shift(2,400),a.write_shift(4,0),a.write_shift(2,0),a.write_shift(1,e.length),n||a.write_shift(1,1),a.write_shift((n?1:2)*e.length,e,n?"sbcs":"utf16le"),a}function z8(t){var r=Ea(t);return r.isst=t.read_shift(4),r}function W8(t,r,e,n){var i=lt(10);return zs(t,r,n,i),i.write_shift(4,e),i}function V8(t,r,e){e.biffguess&&e.biff==2&&(e.biff=5);var n=t.l+r,i=Ea(t);e.biff==2&&t.l++;var a=Zf(t,n-t.l,e);return i.val=a,i}function $8(t,r,e,n,i){var a=!i||i.biff==8,l=lt(6+2+ +a+(1+a)*e.length);return zs(t,r,n,l),l.write_shift(2,e.length),a&&l.write_shift(1,1),l.write_shift((1+a)*e.length,e,a?"utf16le":"sbcs"),l}function G8(t,r,e){var n=t.read_shift(2),i=Js(t,0,e);return[n,i]}function K8(t,r,e,n){var i=e&&e.biff==5;n||(n=lt(i?3+r.length:5+2*r.length)),n.write_shift(2,t),n.write_shift(i?1:2,r.length),i||n.write_shift(1,1),n.write_shift((i?1:2)*r.length,r,i?"sbcs":"utf16le");var a=n.length>n.l?n.slice(0,n.l):n;return a.l==null&&(a.l=a.length),a}var Y8=Js;function Av(t,r,e){var n=t.l+r,i=e.biff==8||!e.biff?4:2,a=t.read_shift(i),l=t.read_shift(i),d=t.read_shift(2),m=t.read_shift(2);return t.l=n,{s:{r:a,c:d},e:{r:l,c:m}}}function Z8(t,r){var e=r.biff==8||!r.biff?4:2,n=lt(2*e+6);return n.write_shift(e,t.s.r),n.write_shift(e,t.e.r+1),n.write_shift(2,t.s.c),n.write_shift(2,t.e.c+1),n.write_shift(2,0),n}function J8(t){var r=t.read_shift(2),e=t.read_shift(2),n=P1(t);return{r,c:e,ixfe:n[0],rknum:n[1]}}function Q8(t,r){for(var e=t.l+r-2,n=t.read_shift(2),i=t.read_shift(2),a=[];t.l>26],n.cellStyles&&(i.alc=a&7,i.fWrap=a>>3&1,i.alcV=a>>4&7,i.fJustLast=a>>7&1,i.trot=a>>8&255,i.cIndent=a>>16&15,i.fShrinkToFit=a>>20&1,i.iReadOrder=a>>22&2,i.fAtrNum=a>>26&1,i.fAtrFnt=a>>27&1,i.fAtrAlc=a>>28&1,i.fAtrBdr=a>>29&1,i.fAtrPat=a>>30&1,i.fAtrProt=a>>31&1,i.dgLeft=l&15,i.dgRight=l>>4&15,i.dgTop=l>>8&15,i.dgBottom=l>>12&15,i.icvLeft=l>>16&127,i.icvRight=l>>23&127,i.grbitDiag=l>>30&3,i.icvTop=d&127,i.icvBottom=d>>7&127,i.icvDiag=d>>14&127,i.dgDiag=d>>21&15,i.icvFore=m&127,i.icvBack=m>>7&127,i.fsxButton=m>>14&1),i}function tE(t,r,e){var n={};return n.ifnt=t.read_shift(2),n.numFmtId=t.read_shift(2),n.flags=t.read_shift(2),n.fStyle=n.flags>>2&1,r-=6,n.data=eE(t,r,n.fStyle,e),n}function Pv(t,r,e,n){var i=e&&e.biff==5;n||(n=lt(i?16:20)),n.write_shift(2,0),t.style?(n.write_shift(2,t.numFmtId||0),n.write_shift(2,65524)):(n.write_shift(2,t.numFmtId||0),n.write_shift(2,r<<4));var a=0;return t.numFmtId>0&&i&&(a|=1024),n.write_shift(4,a),n.write_shift(4,0),i||n.write_shift(4,0),n.write_shift(2,0),n}function rE(t){t.l+=4;var r=[t.read_shift(2),t.read_shift(2)];if(r[0]!==0&&r[0]--,r[1]!==0&&r[1]--,r[0]>7||r[1]>7)throw new Error("Bad Gutters: "+r.join("|"));return r}function nE(t){var r=lt(8);return r.write_shift(4,0),r.write_shift(2,t[0]?t[0]+1:0),r.write_shift(2,t[1]?t[1]+1:0),r}function Fv(t,r,e){var n=Ea(t);(e.biff==2||r==9)&&++t.l;var i=s8(t);return n.val=i,n.t=i===!0||i===!1?"b":"e",n}function iE(t,r,e,n,i,a){var l=lt(8);return zs(t,r,n,l),O1(e,a,l),l}function aE(t,r,e){e.biffguess&&e.biff==2&&(e.biff=5);var n=Ea(t),i=Xn(t);return n.val=i,n}function sE(t,r,e,n){var i=lt(14);return zs(t,r,n,i),Hs(e,i),i}var Iv=m8;function oE(t,r,e){var n=t.l+r,i=t.read_shift(2),a=t.read_shift(2);if(e.sbcch=a,a==1025||a==14849)return[a,i];if(a<1||a>255)throw new Error("Unexpected SupBook type: "+a);for(var l=Xs(t,a),d=[];n>t.l;)d.push(Zf(t));return[a,i,l,d]}function Mv(t,r,e){var n=t.read_shift(2),i,a={fBuiltIn:n&1,fWantAdvise:n>>>1&1,fWantPict:n>>>2&1,fOle:n>>>3&1,fOleLink:n>>>4&1,cf:n>>>5&1023,fIcon:n>>>15&1};return e.sbcch===14849&&(i=g8(t,r-2,e)),a.body=i||t.read_shift(r-2),typeof i=="string"&&(a.Name=i),a}var fE=["_xlnm.Consolidate_Area","_xlnm.Auto_Open","_xlnm.Auto_Close","_xlnm.Extract","_xlnm.Database","_xlnm.Criteria","_xlnm.Print_Area","_xlnm.Print_Titles","_xlnm.Recorder","_xlnm.Data_Form","_xlnm.Auto_Activate","_xlnm.Auto_Deactivate","_xlnm.Sheet_Title","_xlnm._FilterDatabase"];function Dv(t,r,e){var n=t.l+r,i=t.read_shift(2),a=t.read_shift(1),l=t.read_shift(1),d=t.read_shift(e&&e.biff==2?1:2),m=0;(!e||e.biff>=5)&&(e.biff!=5&&(t.l+=2),m=t.read_shift(2),e.biff==5&&(t.l+=2),t.l+=4);var b=Xs(t,l,e);i&32&&(b=fE[b.charCodeAt(0)]);var h=n-t.l;e&&e.biff==2&&--h;var _=n==t.l||d===0||!(h>0)?[]:S7(t,h,e,d);return{chKey:a,Name:b,itab:m,rgce:_}}function D1(t,r,e){if(e.biff<8)return uE(t,r,e);for(var n=[],i=t.l+r,a=t.read_shift(e.biff>8?4:2);a--!==0;)n.push(y8(t,e.biff>8?12:6,e));if(t.l!=i)throw new Error("Bad ExternSheet: "+t.l+" != "+i);return n}function uE(t,r,e){t[t.l+1]==3&&t[t.l]++;var n=Yf(t,r,e);return n.charCodeAt(0)==3?n.slice(1):n}function cE(t,r,e){if(e.biff<8){t.l+=r;return}var n=t.read_shift(2),i=t.read_shift(2),a=Xs(t,n,e),l=Xs(t,i,e);return[a,l]}function lE(t,r,e){var n=I1(t);t.l++;var i=t.read_shift(1);return r-=8,[k7(t,r,e),i,n]}function Nv(t,r,e){var n=b8(t);switch(e.biff){case 2:t.l++,r-=7;break;case 3:case 4:t.l+=2,r-=8;break;default:t.l+=6,r-=12}return[n,x7(t,r,e)]}function hE(t){var r=t.read_shift(4)!==0,e=t.read_shift(4)!==0,n=t.read_shift(4);return[r,e,n]}function dE(t,r,e){if(!(e.biff<8)){var n=t.read_shift(2),i=t.read_shift(2),a=t.read_shift(2),l=t.read_shift(2),d=Js(t,0,e);return e.biff<8&&t.read_shift(1),[{r:n,c:i},d,l,a]}}function pE(t,r,e){return dE(t,r,e)}function vE(t,r){for(var e=[],n=t.read_shift(2);n--;)e.push(Mc(t));return e}function mE(t){var r=lt(2+t.length*8);r.write_shift(2,t.length);for(var e=0;e=(h?d:2*d))break}if(i.length!==d&&i.length!==d*2)throw new Error("cchText: "+d+" != "+i.length);return t.l=n+r,{t:i}}catch{return t.l=n+r,{t:i}}}function xE(t,r){var e=Mc(t);t.l+=16;var n=d8(t,r-24);return[e,n]}function wE(t){var r=lt(24),e=wn(t[0]);r.write_shift(2,e.r),r.write_shift(2,e.r),r.write_shift(2,e.c),r.write_shift(2,e.c);for(var n="d0 c9 ea 79 f9 ba ce 11 8c 82 00 aa 00 4b a9 0b".split(" "),i=0;i<16;++i)r.write_shift(1,parseInt(n[i],16));return Tn([r,p8(t[1])])}function SE(t,r){t.read_shift(2);var e=Mc(t),n=t.read_shift((r-10)/2,"dbcs-cont");return n=n.replace(ti,""),[e,n]}function kE(t){var r=t[1].Tooltip,e=lt(10+2*(r.length+1));e.write_shift(2,2048);var n=wn(t[0]);e.write_shift(2,n.r),e.write_shift(2,n.r),e.write_shift(2,n.c),e.write_shift(2,n.c);for(var i=0;i0;)e.push(A1(t));return e}function CE(t){for(var r=t.read_shift(2),e=[];r-- >0;)e.push(A1(t));return e}function RE(t){t.l+=2;var r={cxfs:0,crc:0};return r.cxfs=t.read_shift(2),r.crc=t.read_shift(4),r}function N1(t,r,e){if(!e.cellStyles)return Vn(t,r);var n=e&&e.biff>=12?4:2,i=t.read_shift(n),a=t.read_shift(n),l=t.read_shift(n),d=t.read_shift(n),m=t.read_shift(2);n==2&&(t.l+=2);var b={s:i,e:a,w:l,ixfe:d,flags:m};return(e.biff>=5||!e.biff)&&(b.level=m>>8&7),b}function AE(t,r){var e=lt(12);e.write_shift(2,r),e.write_shift(2,r),e.write_shift(2,t.width*256),e.write_shift(2,0);var n=0;return t.hidden&&(n|=1),e.write_shift(1,n),n=t.level||0,e.write_shift(1,n),e.write_shift(2,0),e}function PE(t,r){var e={};return r<32||(t.l+=16,e.header=Xn(t),e.footer=Xn(t),t.l+=2),e}function FE(t,r,e){var n={area:!1};if(e.biff!=5)return t.l+=r,n;var i=t.read_shift(1);return t.l+=3,i&16&&(n.area=!0),n}function IE(t){for(var r=lt(2*t),e=0;e1048576&&(p=1e6),_!=2&&(S=h.read_shift(2));var w=h.read_shift(2),u=m.codepage||1252;_!=2&&(h.l+=16,h.read_shift(1),h[h.l]!==0&&(u=t[h[h.l]]),h.l+=1,h.l+=2),x&&(h.l+=36);for(var o=[],s={},c=Math.min(h.length,_==2?521:S-10-(y?264:0)),f=x?32:11;h.l0;){if(h[h.l]===42){h.l+=w;continue}for(++h.l,b[++v]=[],k=0,k=0;k!=o.length;++k){var T=h.slice(h.l,h.l+o[k].len);h.l+=o[k].len,Fn(T,0);var C=fs.utils.decode(u,T);switch(o[k].type){case"C":C.trim().length&&(b[v][k]=C.replace(/\s+$/,""));break;case"D":C.length===8?b[v][k]=new Date(+C.slice(0,4),+C.slice(4,6)-1,+C.slice(6,8)):b[v][k]=C;break;case"F":b[v][k]=parseFloat(C.trim());break;case"+":case"I":b[v][k]=x?T.read_shift(-4,"i")^2147483648:T.read_shift(4,"i");break;case"L":switch(C.trim().toUpperCase()){case"Y":case"T":b[v][k]=!0;break;case"N":case"F":b[v][k]=!1;break;case"":case"?":break;default:throw new Error("DBF Unrecognized L:|"+C+"|")}break;case"M":if(!g)throw new Error("DBF Unexpected MEMO for type "+_.toString(16));b[v][k]="##MEMO##"+(x?parseInt(C.trim(),10):T.read_shift(4));break;case"N":C=C.replace(/\u0000/g,"").trim(),C&&C!="."&&(b[v][k]=+C||0);break;case"@":b[v][k]=new Date(T.read_shift(-8,"f")-621356832e5);break;case"T":b[v][k]=new Date((T.read_shift(4)-2440588)*864e5+T.read_shift(4));break;case"Y":b[v][k]=T.read_shift(4,"i")/1e4+T.read_shift(4,"i")/1e4*Math.pow(2,32);break;case"O":b[v][k]=-T.read_shift(-8,"f");break;case"B":if(y&&o[k].len==8){b[v][k]=T.read_shift(8,"f");break}case"G":case"P":T.l+=o[k].len;break;case"0":if(o[k].name==="_NullFlags")break;default:throw new Error("DBF Unsupported data type "+o[k].type)}}}if(_!=2&&h.l=0&&ua(+b.codepage),b.type=="string")throw new Error("Cannot write DBF to JS string");var h=li(),_=Cy(d,{header:1,raw:!0,cellDates:!0}),g=_[0],y=_.slice(1),x=d["!cols"]||[],p=0,S=0,w=0,u=1;for(p=0;p250&&(T=250),k=((x[p]||{}).DBF||{}).type,k=="C"&&x[p].DBF.len>T&&(T=x[p].DBF.len),v=="B"&&k=="N"&&(v="N",f[p]=x[p].DBF.dec,T=x[p].DBF.len),c[p]=v=="C"||k=="N"?T:a[v]||0,u+=c[p],s[p]=v}var D=h.next(32);for(D.write_shift(4,318902576),D.write_shift(4,y.length),D.write_shift(2,296+32*w),D.write_shift(2,u),p=0;p<4;++p)D.write_shift(4,0);for(D.write_shift(4,0|(+r[km]||3)<<8),p=0,S=0;p":190,"?":191,"{":223},r=new RegExp("\x1BN("+on(t).join("|").replace(/\|\|\|/,"|\\||").replace(/([?()+])/g,"\\$1")+"|\\|)","gm"),e=function(g,y){var x=t[y];return typeof x=="number"?Gp(x):x},n=function(g,y,x){var p=y.charCodeAt(0)-32<<4|x.charCodeAt(0)-48;return p==59?g:Gp(p)};t["|"]=254;function i(g,y){switch(y.type){case"base64":return a(Oi(g),y);case"binary":return a(g,y);case"buffer":return a(lr&&Buffer.isBuffer(g)?g.toString("binary"):ys(g),y);case"array":return a(Us(g),y)}throw new Error("Unrecognized type "+y.type)}function a(g,y){var x=g.split(/[\n\r]+/),p=-1,S=-1,w=0,u=0,o=[],s=[],c=null,f={},v=[],k=[],T=[],C=0,D;for(+y.codepage>=0&&ua(+y.codepage);w!==x.length;++w){C=0;var j=x[w].trim().replace(/\x1B([\x20-\x2F])([\x30-\x3F])/g,n).replace(r,e),L=j.replace(/;;/g,"\0").split(";").map(function(N){return N.replace(/\u0000/g,";")}),M=L[0],B;if(j.length>0)switch(M){case"ID":break;case"E":break;case"B":break;case"O":break;case"W":break;case"P":L[1].charAt(0)=="P"&&s.push(j.slice(3).replace(/;;/g,";"));break;case"C":var R=!1,P=!1,O=!1,F=!1,H=-1,V=-1;for(u=1;u-1&&o[H][V];if(!X||!X[1])throw new Error("SYLK shared formula cannot find base");o[p][S][1]=ty(X[1],{r:p-H,c:S-V})}break;case"F":var I=0;for(u=1;u0?(v[p].hpt=C,v[p].hpx=Ho(C)):C===0&&(v[p].hidden=!0);break;default:if(y&&y.WTF)throw new Error("SYLK bad record "+j)}I<1&&(c=null);break;default:if(y&&y.WTF)throw new Error("SYLK bad record "+j)}}return v.length>0&&(f["!rows"]=v),k.length>0&&(f["!cols"]=k),y&&y.sheetRows&&(o=o.slice(0,y.sheetRows)),[o,f]}function l(g,y){var x=i(g,y),p=x[0],S=x[1],w=Kf(p,y);return on(S).forEach(function(u){w[u]=S[u]}),w}function d(g,y){return $s(l(g,y),y)}function m(g,y,x,p){var S="C;Y"+(x+1)+";X"+(p+1)+";K";switch(g.t){case"n":S+=g.v||0,g.f&&!g.F&&(S+=";E"+c0(g.f,{r:x,c:p}));break;case"b":S+=g.v?"TRUE":"FALSE";break;case"e":S+=g.w||g.v;break;case"d":S+='"'+(g.w||g.v)+'"';break;case"s":S+='"'+g.v.replace(/"/g,"").replace(/;/g,";;")+'"';break}return S}function b(g,y){y.forEach(function(x,p){var S="F;W"+(p+1)+" "+(p+1)+" ";x.hidden?S+="0":(typeof x.width=="number"&&!x.wpx&&(x.wpx=Lf(x.width)),typeof x.wpx=="number"&&!x.wch&&(x.wch=jf(x.wpx)),typeof x.wch=="number"&&(S+=Math.round(x.wch))),S.charAt(S.length-1)!=" "&&g.push(S)})}function h(g,y){y.forEach(function(x,p){var S="F;";x.hidden?S+="M0;":x.hpt?S+="M"+20*x.hpt+";":x.hpx&&(S+="M"+20*Uf(x.hpx)+";"),S.length>2&&g.push(S+"R"+(p+1))})}function _(g,y){var x=["ID;PWXL;N;E"],p=[],S=Rr(g["!ref"]),w,u=Array.isArray(g),o=`\r +`;x.push("P;PGeneral"),x.push("F;P0;DG0G8;M255"),g["!cols"]&&b(x,g["!cols"]),g["!rows"]&&h(x,g["!rows"]),x.push("B;Y"+(S.e.r-S.s.r+1)+";X"+(S.e.c-S.s.c+1)+";D"+[S.s.c,S.s.r,S.e.c,S.e.r].join(" "));for(var s=S.s.r;s<=S.e.r;++s)for(var c=S.s.c;c<=S.e.c;++c){var f=er({r:s,c});w=u?(g[s]||[])[c]:g[f],!(!w||w.v==null&&(!w.f||w.F))&&p.push(m(w,g,s,c))}return x.join(o)+o+p.join(o)+o+"E"+o}return{to_workbook:d,to_sheet:l,from_sheet:_}}(),L1=function(){function t(a,l){switch(l.type){case"base64":return r(Oi(a),l);case"binary":return r(a,l);case"buffer":return r(lr&&Buffer.isBuffer(a)?a.toString("binary"):ys(a),l);case"array":return r(Us(a),l)}throw new Error("Unrecognized type "+l.type)}function r(a,l){for(var d=a.split(` +`),m=-1,b=-1,h=0,_=[];h!==d.length;++h){if(d[h].trim()==="BOT"){_[++m]=[],b=0;continue}if(!(m<0)){var g=d[h].trim().split(","),y=g[0],x=g[1];++h;for(var p=d[h]||"";(p.match(/["]/g)||[]).length&1&&h=0&&x[p].length===0;)--p;for(var S=10,w=0,u=0;u<=p;++u)w=x[u].indexOf(" "),w==-1?w=x[u].length:w++,S=Math.max(S,w);for(u=0;u<=p;++u){y[u]=[];var o=0;for(t(x[u].slice(0,S).trim(),y,u,o,g),o=1;o<=(x[u].length-S)/10+1;++o)t(x[u].slice(S+(o-1)*10,S+o*10).trim(),y,u,o,g)}return g.sheetRows&&(y=y.slice(0,g.sheetRows)),y}var e={44:",",9:" ",59:";",124:"|"},n={44:3,9:2,59:1,124:0};function i(h){for(var _={},g=!1,y=0,x=0;y0&&C(),x["!ref"]=pr(p),x}function l(h,_){return!(_&&_.PRN)||_.FS||h.slice(0,4)=="sep="||h.indexOf(" ")>=0||h.indexOf(",")>=0||h.indexOf(";")>=0?a(h,_):Kf(r(h,_),_)}function d(h,_){var g="",y=_.type=="string"?[0,0,0,0]:g0(h,_);switch(_.type){case"base64":g=Oi(h);break;case"binary":g=h;break;case"buffer":_.codepage==65001?g=h.toString("utf8"):_.codepage&&typeof fs<"u"?g=fs.utils.decode(_.codepage,h):g=lr&&Buffer.isBuffer(h)?h.toString("binary"):ys(h);break;case"array":g=Us(h);break;case"string":g=h;break;default:throw new Error("Unrecognized type "+_.type)}return y[0]==239&&y[1]==187&&y[2]==191?g=Nr(g.slice(3)):_.type!="string"&&_.type!="buffer"&&_.codepage==65001?g=Nr(g):_.type=="binary"&&typeof fs<"u"&&_.codepage&&(g=fs.utils.decode(_.codepage,fs.utils.encode(28591,g))),g.slice(0,19)=="socialcalc:version:"?j1.to_sheet(_.type=="string"?g:Nr(g),_):l(g,_)}function m(h,_){return $s(d(h,_),_)}function b(h){for(var _=[],g=Rr(h["!ref"]),y,x=Array.isArray(h),p=g.s.r;p<=g.e.r;++p){for(var S=[],w=g.s.c;w<=g.e.c;++w){var u=er({r:p,c:w});if(y=x?(h[p]||[])[w]:h[u],!y||y.v==null){S.push(" ");continue}for(var o=(y.w||(ds(y),y.w)||"").slice(0,10);o.length<10;)o+=" ";S.push(o+(w===0?" ":""))}_.push(S.join(""))}return _.join(` +`)}return{to_workbook:m,to_sheet:d,from_sheet:b}}();function GE(t,r){var e=r||{},n=!!e.WTF;e.WTF=!0;try{var i=B1.to_workbook(t,e);return e.WTF=n,i}catch(a){if(e.WTF=n,!a.message.match(/SYLK bad record ID/)&&n)throw a;return Uo.to_workbook(t,r)}}var Ns=function(){function t(z,X,I){if(z){Fn(z,z.l||0);for(var N=I.Enum||H;z.l=16&&z[14]==5&&z[15]===108)throw new Error("Unsupported Works 3 for Mac file");if(z[2]==2)I.Enum=H,t(z,function(xe,ae,fe){switch(fe){case 0:I.vers=xe,xe>=4096&&(I.qpro=!0);break;case 6:ee=xe;break;case 204:xe&&(G=xe);break;case 222:G=xe;break;case 15:case 51:I.qpro||(xe[1].v=xe[1].v.slice(1));case 13:case 14:case 16:fe==14&&(xe[2]&112)==112&&(xe[2]&15)>1&&(xe[2]&15)<15&&(xe[1].z=I.dateNF||Jt[14],I.cellDates&&(xe[1].t="d",xe[1].v=Ic(xe[1].v))),I.qpro&&xe[3]>te&&(N["!ref"]=pr(ee),re[U]=N,ne.push(U),N=I.dense?[]:{},ee={s:{r:0,c:0},e:{r:0,c:0}},te=xe[3],U=G||"Sheet"+(te+1),G="");var Ne=I.dense?(N[xe[0].r]||[])[xe[0].c]:N[er(xe[0])];if(Ne){Ne.t=xe[1].t,Ne.v=xe[1].v,xe[1].z!=null&&(Ne.z=xe[1].z),xe[1].f!=null&&(Ne.f=xe[1].f);break}I.dense?(N[xe[0].r]||(N[xe[0].r]=[]),N[xe[0].r][xe[0].c]=xe[1]):N[er(xe[0])]=xe[1];break}},I);else if(z[2]==26||z[2]==14)I.Enum=V,z[2]==14&&(I.qpro=!0,z.l=0),t(z,function(xe,ae,fe){switch(fe){case 204:U=xe;break;case 22:xe[1].v=xe[1].v.slice(1);case 23:case 24:case 25:case 37:case 39:case 40:if(xe[3]>te&&(N["!ref"]=pr(ee),re[U]=N,ne.push(U),N=I.dense?[]:{},ee={s:{r:0,c:0},e:{r:0,c:0}},te=xe[3],U="Sheet"+(te+1)),se>0&&xe[0].r>=se)break;I.dense?(N[xe[0].r]||(N[xe[0].r]=[]),N[xe[0].r][xe[0].c]=xe[1]):N[er(xe[0])]=xe[1],ee.e.c=0&&ua(+I.codepage),I.type=="string")throw new Error("Cannot write WK1 to JS string");var N=li(),U=Rr(z["!ref"]),G=Array.isArray(z),te=[];It(N,0,a(1030)),It(N,6,m(U));for(var re=Math.min(U.e.r,8191),ne=U.s.r;ne<=re;++ne)for(var ge=Cn(ne),ee=U.s.c;ee<=U.e.c;++ee){ne===U.s.r&&(te[ee]=mn(ee));var se=te[ee]+ge,J=G?(z[ne]||[])[ee]:z[se];if(!(!J||J.t=="z"))if(J.t=="n")(J.v|0)==J.v&&J.v>=-32768&&J.v<=32767?It(N,13,y(ne,ee,J.v)):It(N,14,p(ne,ee,J.v));else{var q=ds(J);It(N,15,_(ne,ee,q.slice(0,239)))}}return It(N,1),N.end()}function i(z,X){var I=X||{};if(+I.codepage>=0&&ua(+I.codepage),I.type=="string")throw new Error("Cannot write WK3 to JS string");var N=li();It(N,0,l(z));for(var U=0,G=0;U8191&&(I=8191),X.write_shift(2,I),X.write_shift(1,U),X.write_shift(1,N),X.write_shift(2,0),X.write_shift(2,0),X.write_shift(1,1),X.write_shift(1,2),X.write_shift(4,0),X.write_shift(4,0),X}function d(z,X,I){var N={s:{c:0,r:0},e:{c:0,r:0}};return X==8&&I.qpro?(N.s.c=z.read_shift(1),z.l++,N.s.r=z.read_shift(2),N.e.c=z.read_shift(1),z.l++,N.e.r=z.read_shift(2),N):(N.s.c=z.read_shift(2),N.s.r=z.read_shift(2),X==12&&I.qpro&&(z.l+=2),N.e.c=z.read_shift(2),N.e.r=z.read_shift(2),X==12&&I.qpro&&(z.l+=2),N.s.c==65535&&(N.s.c=N.e.c=N.s.r=N.e.r=0),N)}function m(z){var X=lt(8);return X.write_shift(2,z.s.c),X.write_shift(2,z.s.r),X.write_shift(2,z.e.c),X.write_shift(2,z.e.r),X}function b(z,X,I){var N=[{c:0,r:0},{t:"n",v:0},0,0];return I.qpro&&I.vers!=20768?(N[0].c=z.read_shift(1),N[3]=z.read_shift(1),N[0].r=z.read_shift(2),z.l+=2):(N[2]=z.read_shift(1),N[0].c=z.read_shift(2),N[0].r=z.read_shift(2)),N}function h(z,X,I){var N=z.l+X,U=b(z,X,I);if(U[1].t="s",I.vers==20768){z.l++;var G=z.read_shift(1);return U[1].v=z.read_shift(G,"utf8"),U}return I.qpro&&z.l++,U[1].v=z.read_shift(N-z.l,"cstr"),U}function _(z,X,I){var N=lt(7+I.length);N.write_shift(1,255),N.write_shift(2,X),N.write_shift(2,z),N.write_shift(1,39);for(var U=0;U=128?95:G)}return N.write_shift(1,0),N}function g(z,X,I){var N=b(z,X,I);return N[1].v=z.read_shift(2,"i"),N}function y(z,X,I){var N=lt(7);return N.write_shift(1,255),N.write_shift(2,X),N.write_shift(2,z),N.write_shift(2,I,"i"),N}function x(z,X,I){var N=b(z,X,I);return N[1].v=z.read_shift(8,"f"),N}function p(z,X,I){var N=lt(13);return N.write_shift(1,255),N.write_shift(2,X),N.write_shift(2,z),N.write_shift(8,I,"f"),N}function S(z,X,I){var N=z.l+X,U=b(z,X,I);if(U[1].v=z.read_shift(8,"f"),I.qpro)z.l=N;else{var G=z.read_shift(2);s(z.slice(z.l,z.l+G),U),z.l+=G}return U}function w(z,X,I){var N=X&32768;return X&=-32769,X=(N?z:0)+(X>=8192?X-16384:X),(N?"":"$")+(I?mn(X):Cn(X))}var u={51:["FALSE",0],52:["TRUE",0],70:["LEN",1],80:["SUM",69],81:["AVERAGEA",69],82:["COUNTA",69],83:["MINA",69],84:["MAXA",69],111:["T",1]},o=["","","","","","","","","","+","-","*","/","^","=","<>","<=",">=","<",">","","","","","&","","","","","","",""];function s(z,X){Fn(z,0);for(var I=[],N=0,U="",G="",te="",re="";z.lI.length){console.error("WK1 bad formula parse 0x"+ne.toString(16)+":|"+I.join("|")+"|");return}var J=I.slice(-N);I.length-=N,I.push(u[ne][0]+"("+J.join(",")+")")}else return ne<=7?console.error("WK1 invalid opcode "+ne.toString(16)):ne<=24?console.error("WK1 unsupported op "+ne.toString(16)):ne<=30?console.error("WK1 invalid opcode "+ne.toString(16)):ne<=115?console.error("WK1 unsupported function opcode "+ne.toString(16)):console.error("WK1 unrecognized opcode "+ne.toString(16))}}I.length==1?X[1].f=""+I[0]:console.error("WK1 bad formula parse |"+I.join("|")+"|")}function c(z){var X=[{c:0,r:0},{t:"n",v:0},0];return X[0].r=z.read_shift(2),X[3]=z[z.l++],X[0].c=z[z.l++],X}function f(z,X){var I=c(z);return I[1].t="s",I[1].v=z.read_shift(X-4,"cstr"),I}function v(z,X,I,N){var U=lt(6+N.length);U.write_shift(2,z),U.write_shift(1,I),U.write_shift(1,X),U.write_shift(1,39);for(var G=0;G=128?95:te)}return U.write_shift(1,0),U}function k(z,X){var I=c(z);I[1].v=z.read_shift(2);var N=I[1].v>>1;if(I[1].v&1)switch(N&7){case 0:N=(N>>3)*5e3;break;case 1:N=(N>>3)*500;break;case 2:N=(N>>3)/20;break;case 3:N=(N>>3)/200;break;case 4:N=(N>>3)/2e3;break;case 5:N=(N>>3)/2e4;break;case 6:N=(N>>3)/16;break;case 7:N=(N>>3)/64;break}return I[1].v=N,I}function T(z,X){var I=c(z),N=z.read_shift(4),U=z.read_shift(4),G=z.read_shift(2);if(G==65535)return N===0&&U===3221225472?(I[1].t="e",I[1].v=15):N===0&&U===3489660928?(I[1].t="e",I[1].v=42):I[1].v=0,I;var te=G&32768;return G=(G&32767)-16446,I[1].v=(1-te*2)*(U*Math.pow(2,G+32)+N*Math.pow(2,G)),I}function C(z,X,I,N){var U=lt(14);if(U.write_shift(2,z),U.write_shift(1,I),U.write_shift(1,X),N==0)return U.write_shift(4,0),U.write_shift(4,0),U.write_shift(2,65535),U;var G=0,te=0,re=0,ne=0;return N<0&&(G=1,N=-N),te=Math.log2(N)|0,N/=Math.pow(2,te-31),ne=N>>>0,ne&2147483648||(N/=2,++te,ne=N>>>0),N-=ne,ne|=2147483648,ne>>>=0,N*=Math.pow(2,32),re=N>>>0,U.write_shift(4,re),U.write_shift(4,ne),te+=16383+(G?32768:0),U.write_shift(2,te),U}function D(z,X){var I=T(z);return z.l+=X-14,I}function j(z,X){var I=c(z),N=z.read_shift(4);return I[1].v=N>>6,I}function L(z,X){var I=c(z),N=z.read_shift(8,"f");return I[1].v=N,I}function M(z,X){var I=L(z);return z.l+=X-10,I}function B(z,X){return z[z.l+X-1]==0?z.read_shift(X,"cstr"):""}function R(z,X){var I=z[z.l++];I>X-1&&(I=X-1);for(var N="";N.length127?95:U}return I[I.l++]=0,I}var H={0:{n:"BOF",f:pn},1:{n:"EOF"},2:{n:"CALCMODE"},3:{n:"CALCORDER"},4:{n:"SPLIT"},5:{n:"SYNC"},6:{n:"RANGE",f:d},7:{n:"WINDOW1"},8:{n:"COLW1"},9:{n:"WINTWO"},10:{n:"COLW2"},11:{n:"NAME"},12:{n:"BLANK"},13:{n:"INTEGER",f:g},14:{n:"NUMBER",f:x},15:{n:"LABEL",f:h},16:{n:"FORMULA",f:S},24:{n:"TABLE"},25:{n:"ORANGE"},26:{n:"PRANGE"},27:{n:"SRANGE"},28:{n:"FRANGE"},29:{n:"KRANGE1"},32:{n:"HRANGE"},35:{n:"KRANGE2"},36:{n:"PROTEC"},37:{n:"FOOTER"},38:{n:"HEADER"},39:{n:"SETUP"},40:{n:"MARGINS"},41:{n:"LABELFMT"},42:{n:"TITLES"},43:{n:"SHEETJS"},45:{n:"GRAPH"},46:{n:"NGRAPH"},47:{n:"CALCCOUNT"},48:{n:"UNFORMATTED"},49:{n:"CURSORW12"},50:{n:"WINDOW"},51:{n:"STRING",f:h},55:{n:"PASSWORD"},56:{n:"LOCKED"},60:{n:"QUERY"},61:{n:"QUERYNAME"},62:{n:"PRINT"},63:{n:"PRINTNAME"},64:{n:"GRAPH2"},65:{n:"GRAPHNAME"},66:{n:"ZOOM"},67:{n:"SYMSPLIT"},68:{n:"NSROWS"},69:{n:"NSCOLS"},70:{n:"RULER"},71:{n:"NNAME"},72:{n:"ACOMM"},73:{n:"AMACRO"},74:{n:"PARSE"},102:{n:"PRANGES??"},103:{n:"RRANGES??"},104:{n:"FNAME??"},105:{n:"MRANGES??"},204:{n:"SHEETNAMECS",f:B},222:{n:"SHEETNAMELP",f:R},65535:{n:""}},V={0:{n:"BOF"},1:{n:"EOF"},2:{n:"PASSWORD"},3:{n:"CALCSET"},4:{n:"WINDOWSET"},5:{n:"SHEETCELLPTR"},6:{n:"SHEETLAYOUT"},7:{n:"COLUMNWIDTH"},8:{n:"HIDDENCOLUMN"},9:{n:"USERRANGE"},10:{n:"SYSTEMRANGE"},11:{n:"ZEROFORCE"},12:{n:"SORTKEYDIR"},13:{n:"FILESEAL"},14:{n:"DATAFILLNUMS"},15:{n:"PRINTMAIN"},16:{n:"PRINTSTRING"},17:{n:"GRAPHMAIN"},18:{n:"GRAPHSTRING"},19:{n:"??"},20:{n:"ERRCELL"},21:{n:"NACELL"},22:{n:"LABEL16",f},23:{n:"NUMBER17",f:T},24:{n:"NUMBER18",f:k},25:{n:"FORMULA19",f:D},26:{n:"FORMULA1A"},27:{n:"XFORMAT",f:O},28:{n:"DTLABELMISC"},29:{n:"DTLABELCELL"},30:{n:"GRAPHWINDOW"},31:{n:"CPA"},32:{n:"LPLAUTO"},33:{n:"QUERY"},34:{n:"HIDDENSHEET"},35:{n:"??"},37:{n:"NUMBER25",f:j},38:{n:"??"},39:{n:"NUMBER27",f:L},40:{n:"FORMULA28",f:M},142:{n:"??"},147:{n:"??"},150:{n:"??"},151:{n:"??"},152:{n:"??"},153:{n:"??"},154:{n:"??"},155:{n:"??"},156:{n:"??"},163:{n:"??"},174:{n:"??"},175:{n:"??"},176:{n:"??"},177:{n:"??"},184:{n:"??"},185:{n:"??"},186:{n:"??"},187:{n:"??"},188:{n:"??"},195:{n:"??"},201:{n:"??"},204:{n:"SHEETNAMECS",f:B},205:{n:"??"},206:{n:"??"},207:{n:"??"},208:{n:"??"},256:{n:"??"},259:{n:"??"},260:{n:"??"},261:{n:"??"},262:{n:"??"},263:{n:"??"},265:{n:"??"},266:{n:"??"},267:{n:"??"},268:{n:"??"},270:{n:"??"},271:{n:"??"},384:{n:"??"},389:{n:"??"},390:{n:"??"},393:{n:"??"},396:{n:"??"},512:{n:"??"},514:{n:"??"},513:{n:"??"},516:{n:"??"},517:{n:"??"},640:{n:"??"},641:{n:"??"},642:{n:"??"},643:{n:"??"},644:{n:"??"},645:{n:"??"},646:{n:"??"},647:{n:"??"},648:{n:"??"},658:{n:"??"},659:{n:"??"},660:{n:"??"},661:{n:"??"},662:{n:"??"},665:{n:"??"},666:{n:"??"},768:{n:"??"},772:{n:"??"},1537:{n:"SHEETINFOQP",f:P},1600:{n:"??"},1602:{n:"??"},1793:{n:"??"},1794:{n:"??"},1795:{n:"??"},1796:{n:"??"},1920:{n:"??"},2048:{n:"??"},2049:{n:"??"},2052:{n:"??"},2688:{n:"??"},10998:{n:"??"},12849:{n:"??"},28233:{n:"??"},28484:{n:"??"},65535:{n:""}};return{sheet_to_wk1:n,book_to_wk3:i,to_workbook:r}}();function KE(t){var r={},e=t.match($n),n=0,i=!1;if(e)for(;n!=e.length;++n){var a=Qt(e[n]);switch(a[0].replace(/\w*:/g,"")){case"":case"":r.shadow=1;break;case"":break;case"":case"":r.outline=1;break;case"":break;case"":case"":r.strike=1;break;case"":break;case"":case"":r.u=1;break;case"":break;case"":case"":r.b=1;break;case"":break;case"":case"":r.i=1;break;case"":break;case"":case"":case"":break;case"":case"":case"":break;case"":case"":case"":break;case"":case"":case"":break;case"":case"":break;case"":i=!1;break;default:if(a[0].charCodeAt(1)!==47&&!i)throw new Error("Unrecognized rich format "+a[0])}}return r}var YE=function(){var t=If("t"),r=If("rPr");function e(a){var l=a.match(t);if(!l)return{t:"s",v:""};var d={t:"s",v:wr(l[1])},m=a.match(r);return m&&(d.s=KE(m[1])),d}var n=/<(?:\w+:)?r>/g,i=/<\/(?:\w+:)?r>/;return function(l){return l.replace(n,"").split(i).map(e).filter(function(d){return d.v})}}(),ZE=function(){var r=/(\r\n|\n)/g;function e(i,a,l){var d=[];i.u&&d.push("text-decoration: underline;"),i.uval&&d.push("text-underline-style:"+i.uval+";"),i.sz&&d.push("font-size:"+i.sz+"pt;"),i.outline&&d.push("text-effect: outline;"),i.shadow&&d.push("text-shadow: auto;"),a.push(''),i.b&&(a.push(""),l.push("")),i.i&&(a.push(""),l.push("")),i.strike&&(a.push(""),l.push(""));var m=i.valign||"";return m=="superscript"||m=="super"?m="sup":m=="subscript"&&(m="sub"),m!=""&&(a.push("<"+m+">"),l.push("")),l.push(""),i}function n(i){var a=[[],i.v,[]];return i.v?(i.s&&e(i.s,a[0],a[2]),a[0].join("")+a[1].replace(r,"
")+a[2].join("")):""}return function(a){return a.map(n).join("")}}(),JE=/<(?:\w+:)?t[^>]*>([^<]*)<\/(?:\w+:)?t>/g,QE=/<(?:\w+:)?r>/,qE=/<(?:\w+:)?rPh.*?>([\s\S]*?)<\/(?:\w+:)?rPh>/g;function a0(t,r){var e=r?r.cellHTML:!0,n={};return t?(t.match(/^\s*<(?:\w+:)?t[^>]*>/)?(n.t=wr(Nr(t.slice(t.indexOf(">")+1).split(/<\/(?:\w+:)?t>/)[0]||"")),n.r=Nr(t),e&&(n.h=Gh(n.t))):t.match(QE)&&(n.r=Nr(t),n.t=wr(Nr((t.replace(qE,"").match(JE)||[]).join("").replace($n,""))),e&&(n.h=ZE(YE(n.r)))),n):{t:""}}var e5=/<(?:\w+:)?sst([^>]*)>([\s\S]*)<\/(?:\w+:)?sst>/,t5=/<(?:\w+:)?(?:si|sstItem)>/g,r5=/<\/(?:\w+:)?(?:si|sstItem)>/;function n5(t,r){var e=[],n="";if(!t)return e;var i=t.match(e5);if(i){n=i[2].replace(t5,"").split(r5);for(var a=0;a!=n.length;++a){var l=a0(n[a].trim(),r);l!=null&&(e[e.length]=l)}i=Qt(i[1]),e.Count=i.count,e.Unique=i.uniqueCount}return e}var i5=/^\s|\s$|[\t\n\r]/;function U1(t,r){if(!r.bookSST)return"";var e=[fn];e[e.length]=Ft("sst",null,{xmlns:Vs[0],count:t.Count,uniqueCount:t.Unique});for(var n=0;n!=t.length;++n)if(t[n]!=null){var i=t[n],a="";i.r?a+=i.r:(a+=""),a+="",e[e.length]=a}return e.length>2&&(e[e.length]="",e[1]=e[1].replace("/>",">")),e.join("")}function a5(t){return[t.read_shift(4),t.read_shift(4)]}function s5(t,r){var e=[],n=!1;return $a(t,function(a,l,d){switch(d){case 159:e.Count=a[0],e.Unique=a[1];break;case 19:e.push(a);break;case 160:return!0;case 35:n=!0;break;case 36:n=!1;break;default:if(l.T,!n||r.WTF)throw new Error("Unexpected record 0x"+d.toString(16))}}),e}function o5(t,r){return r||(r=lt(8)),r.write_shift(4,t.Count),r.write_shift(4,t.Unique),r}var f5=g6;function u5(t){var r=li();xt(r,159,o5(t));for(var e=0;e=4&&(t.l+=r-4),e}function c5(t){var r={};return r.id=t.read_shift(0,"lpp4"),r.R=za(t,4),r.U=za(t,4),r.W=za(t,4),r}function l5(t){for(var r=t.read_shift(4),e=t.l+r-4,n={},i=t.read_shift(4),a=[];i-- >0;)a.push({t:t.read_shift(4),v:t.read_shift(0,"lpp4")});if(n.name=t.read_shift(0,"lpp4"),n.comps=a,t.l!=e)throw new Error("Bad DataSpaceMapEntry: "+t.l+" != "+e);return n}function h5(t){var r=[];t.l+=4;for(var e=t.read_shift(4);e-- >0;)r.push(l5(t));return r}function d5(t){var r=[];t.l+=4;for(var e=t.read_shift(4);e-- >0;)r.push(t.read_shift(0,"lpp4"));return r}function p5(t){var r={};return t.read_shift(4),t.l+=4,r.id=t.read_shift(0,"lpp4"),r.name=t.read_shift(0,"lpp4"),r.R=za(t,4),r.U=za(t,4),r.W=za(t,4),r}function v5(t){var r=p5(t);if(r.ename=t.read_shift(0,"8lpp4"),r.blksz=t.read_shift(4),r.cmode=t.read_shift(4),t.read_shift(4)!=4)throw new Error("Bad !Primary record");return r}function X1(t,r){var e=t.l+r,n={};n.Flags=t.read_shift(4)&63,t.l+=4,n.AlgID=t.read_shift(4);var i=!1;switch(n.AlgID){case 26126:case 26127:case 26128:i=n.Flags==36;break;case 26625:i=n.Flags==4;break;case 0:i=n.Flags==16||n.Flags==4||n.Flags==36;break;default:throw"Unrecognized encryption algorithm: "+n.AlgID}if(!i)throw new Error("Encryption Flags/AlgID mismatch");return n.AlgIDHash=t.read_shift(4),n.KeySize=t.read_shift(4),n.ProviderType=t.read_shift(4),t.l+=8,n.CSPName=t.read_shift(e-t.l>>1,"utf16le"),t.l=e,n}function z1(t,r){var e={},n=t.l+r;return t.l+=4,e.Salt=t.slice(t.l,t.l+16),t.l+=16,e.Verifier=t.slice(t.l,t.l+16),t.l+=16,t.read_shift(4),e.VerifierHash=t.slice(t.l,n),t.l=n,e}function m5(t){var r=za(t);switch(r.Minor){case 2:return[r.Minor,y5(t)];case 3:return[r.Minor,g5()];case 4:return[r.Minor,b5(t)]}throw new Error("ECMA-376 Encrypted file unrecognized Version: "+r.Minor)}function y5(t){var r=t.read_shift(4);if((r&63)!=36)throw new Error("EncryptionInfo mismatch");var e=t.read_shift(4),n=X1(t,e),i=z1(t,t.length-t.l);return{t:"Std",h:n,v:i}}function g5(){throw new Error("File is password-protected: ECMA-376 Extensible")}function b5(t){var r=["saltSize","blockSize","keyBits","hashSize","cipherAlgorithm","cipherChaining","hashAlgorithm","saltValue"];t.l+=4;var e=t.read_shift(t.length-t.l,"utf8"),n={};return e.replace($n,function(a){var l=Qt(a);switch(ka(l[0])){case"":break;case"":case"":break;case"":break;case"4||n.Major<2)throw new Error("unrecognized major version code: "+n.Major);e.Flags=t.read_shift(4),r-=4;var i=t.read_shift(4);return r-=4,e.EncryptionHeader=X1(t,i),r-=i,e.EncryptionVerifier=z1(t,r),e}function x5(t){var r={},e=r.EncryptionVersionInfo=za(t,4);if(e.Major!=1||e.Minor!=1)throw"unrecognized version code "+e.Major+" : "+e.Minor;return r.Salt=t.read_shift(16),r.EncryptedVerifier=t.read_shift(16),r.EncryptedVerifierHash=t.read_shift(16),r}function s0(t){var r=0,e,n=H1(t),i=n.length+1,a,l,d,m,b;for(e=hs(i),e[0]=n.length,a=1;a!=i;++a)e[a]=n[a-1];for(a=i-1;a>=0;--a)l=e[a],d=r&16384?1:0,m=r<<1&32767,b=d|m,r=b^l;return r^52811}var W1=function(){var t=[187,255,255,186,255,255,185,128,0,190,15,0,191,15,0],r=[57840,7439,52380,33984,4364,3600,61902,12606,6258,57657,54287,34041,10252,43370,20163],e=[44796,19929,39858,10053,20106,40212,10761,31585,63170,64933,60267,50935,40399,11199,17763,35526,1453,2906,5812,11624,23248,885,1770,3540,7080,14160,28320,56640,55369,41139,20807,41614,21821,43642,17621,28485,56970,44341,19019,38038,14605,29210,60195,50791,40175,10751,21502,43004,24537,18387,36774,3949,7898,15796,31592,63184,47201,24803,49606,37805,14203,28406,56812,17824,35648,1697,3394,6788,13576,27152,43601,17539,35078,557,1114,2228,4456,30388,60776,51953,34243,7079,14158,28316,14128,28256,56512,43425,17251,34502,7597,13105,26210,52420,35241,883,1766,3532,4129,8258,16516,33032,4657,9314,18628],n=function(l){return(l/2|l*128)&255},i=function(l,d){return n(l^d)},a=function(l){for(var d=r[l.length-1],m=104,b=l.length-1;b>=0;--b)for(var h=l[b],_=0;_!=7;++_)h&64&&(d^=e[m]),h*=2,--m;return d};return function(l){for(var d=H1(l),m=a(d),b=d.length,h=hs(16),_=0;_!=16;++_)h[_]=0;var g,y,x;for((b&1)===1&&(g=m>>8,h[b]=i(t[0],g),--b,g=m&255,y=d[d.length-1],h[b]=i(y,g));b>0;)--b,g=m>>8,h[b]=i(d[b],g),--b,g=m&255,h[b]=i(d[b],g);for(b=15,x=15-d.length;x>0;)g=m>>8,h[b]=i(t[x],g),--b,--x,g=m&255,h[b]=i(d[b],g),--b,--x;return h}}(),w5=function(t,r,e,n,i){i||(i=r),n||(n=W1(t));var a,l;for(a=0;a!=r.length;++a)l=r[a],l^=n[e],l=(l>>5|l<<3)&255,i[a]=l,++e;return[i,e,n]},S5=function(t){var r=0,e=W1(t);return function(n){var i=w5("",n,r,e);return r=i[1],i[0]}};function k5(t,r,e,n){var i={key:pn(t),verificationBytes:pn(t)};return e.password&&(i.verifier=s0(e.password)),n.valid=i.verificationBytes===i.verifier,n.valid&&(n.insitu=S5(e.password)),i}function E5(t,r,e){var n=e||{};return n.Info=t.read_shift(2),t.l-=2,n.Info===1?n.Data=x5(t):n.Data=_5(t,r),n}function T5(t,r,e){var n={Type:e.biff>=8?t.read_shift(2):0};return n.Type?E5(t,r-2,n):k5(t,e.biff>=8?r:r-2,e,n),n}var V1=function(){function t(i,a){switch(a.type){case"base64":return r(Oi(i),a);case"binary":return r(i,a);case"buffer":return r(lr&&Buffer.isBuffer(i)?i.toString("binary"):ys(i),a);case"array":return r(Us(i),a)}throw new Error("Unrecognized type "+a.type)}function r(i,a){var l=a||{},d=l.dense?[]:{},m=i.match(/\\trowd.*?\\row\b/g);if(!m.length)throw new Error("RTF missing table");var b={s:{c:0,r:0},e:{c:0,r:m.length-1}};return m.forEach(function(h,_){Array.isArray(d)&&(d[_]=[]);for(var g=/\\\w+\b/g,y=0,x,p=-1;x=g.exec(h);){switch(x[0]){case"\\cell":var S=h.slice(y,g.lastIndex-x[0].length);if(S[0]==" "&&(S=S.slice(1)),++p,S.length){var w={v:S,t:"s"};Array.isArray(d)?d[_][p]=w:d[er({r:_,c:p})]=w}break}y=g.lastIndex}p>b.e.c&&(b.e.c=p)}),d["!ref"]=pr(b),d}function e(i,a){return $s(t(i,a),a)}function n(i){for(var a=["{\\rtf1\\ansi"],l=Rr(i["!ref"]),d,m=Array.isArray(i),b=l.s.r;b<=l.e.r;++b){a.push("\\trowd\\trautofit1");for(var h=l.s.c;h<=l.e.c;++h)a.push("\\cellx"+(h+1));for(a.push("\\pard\\intbl"),h=l.s.c;h<=l.e.c;++h){var _=er({r:b,c:h});d=m?(i[b]||[])[h]:i[_],!(!d||d.v==null&&(!d.f||d.F))&&(a.push(" "+(d.w||(ds(d),d.w))),a.push("\\cell"))}a.push("\\pard\\intbl\\row")}return a.join("")+"}"}return{to_workbook:e,to_sheet:t,from_sheet:n}}();function O5(t){var r=t.slice(t[0]==="#"?1:0).slice(0,6);return[parseInt(r.slice(0,2),16),parseInt(r.slice(2,4),16),parseInt(r.slice(4,6),16)]}function Bf(t){for(var r=0,e=1;r!=3;++r)e=e*256+(t[r]>255?255:t[r]<0?0:t[r]);return e.toString(16).toUpperCase().slice(1)}function C5(t){var r=t[0]/255,e=t[1]/255,n=t[2]/255,i=Math.max(r,e,n),a=Math.min(r,e,n),l=i-a;if(l===0)return[0,0,r];var d=0,m=0,b=i+a;switch(m=l/(b>1?2-b:b),i){case r:d=((e-n)/l+6)%6;break;case e:d=(n-r)/l+2;break;case n:d=(r-e)/l+4;break}return[d/6,m,b/2]}function R5(t){var r=t[0],e=t[1],n=t[2],i=e*2*(n<.5?n:1-n),a=n-i/2,l=[a,a,a],d=6*r,m;if(e!==0)switch(d|0){case 0:case 6:m=i*d,l[0]+=i,l[1]+=m;break;case 1:m=i*(2-d),l[0]+=m,l[1]+=i;break;case 2:m=i*(d-2),l[1]+=i,l[2]+=m;break;case 3:m=i*(4-d),l[1]+=m,l[2]+=i;break;case 4:m=i*(d-4),l[2]+=i,l[0]+=m;break;case 5:m=i*(6-d),l[2]+=m,l[0]+=i;break}for(var b=0;b!=3;++b)l[b]=Math.round(l[b]*255);return l}function Ec(t,r){if(r===0)return t;var e=C5(O5(t));return r<0?e[2]=e[2]*(1+r):e[2]=1-(1-e[2])*(1-r),Bf(R5(e))}var $1=6,A5=15,P5=1,Hn=$1;function Lf(t){return Math.floor((t+Math.round(128/Hn)/256)*Hn)}function jf(t){return Math.floor((t-5)/Hn*100+.5)/100}function Tc(t){return Math.round((t*Hn+5)/Hn*256)/256}function Wl(t){return Tc(jf(Lf(t)))}function o0(t){var r=Math.abs(t-Wl(t)),e=Hn;if(r>.005)for(Hn=P5;Hn":case"":break;case"":case"":i={},d.diagonalUp&&(i.diagonalUp=Ur(d.diagonalUp)),d.diagonalDown&&(i.diagonalDown=Ur(d.diagonalDown)),r.Borders.push(i);break;case"":break;case"":break;case"":break;case"":break;case"":break;case"":break;case"":break;case"":break;case"":break;case"":break;case"":break;case"":break;case"":break;case"":case"":break;case"":break;case"":case"":break;case"":break;case"":case"":break;case"":break;case"":case"":break;case"":break;case"":case"":break;case"":break;case"":break;case"":case"":break;case"":case"":break;case"":a=!1;break;default:if(n&&n.WTF&&!a)throw new Error("unrecognized "+d[0]+" in borders")}})}function D5(t,r,e,n){r.Fills=[];var i={},a=!1;(t[0].match($n)||[]).forEach(function(l){var d=Qt(l);switch(ka(d[0])){case"":case"":break;case"":case"":i={},r.Fills.push(i);break;case"":break;case"":break;case"":r.Fills.push(i),i={};break;case"":d.patternType&&(i.patternType=d.patternType);break;case"":case"":break;case"":case"":break;case"":case"":break;case"":break;case"":break;case"":break;case"":break;case"":case"":break;case"":a=!1;break;default:if(n&&n.WTF&&!a)throw new Error("unrecognized "+d[0]+" in fills")}})}function N5(t,r,e,n){r.Fonts=[];var i={},a=!1;(t[0].match($n)||[]).forEach(function(l){var d=Qt(l);switch(ka(d[0])){case"":case"":break;case"":break;case"":case"":r.Fonts.push(i),i={};break;case"":case"":break;case"":i.bold=1;break;case"":i.italic=1;break;case"":i.underline=1;break;case"":i.strike=1;break;case"":i.outline=1;break;case"":i.shadow=1;break;case"":i.condense=1;break;case"":i.extend=1;break;case"":case"":break;case"":case"":break;case"":case"":break;case"":case"":break;case"":case"":break;case"":a=!1;break;case"":case"":break;case"":a=!1;break;default:if(n&&n.WTF&&!a)throw new Error("unrecognized "+d[0]+" in fonts")}})}function B5(t,r,e){r.NumberFmt=[];for(var n=on(Jt),i=0;i":case"":case"":break;case"0){if(m>392){for(m=392;m>60&&r.NumberFmt[m]!=null;--m);r.NumberFmt[m]=d}Ha(d,m)}}break;case"":break;default:if(e.WTF)throw new Error("unrecognized "+l[0]+" in numFmts")}}}function L5(t){var r=[""];return[[5,8],[23,26],[41,44],[50,392]].forEach(function(e){for(var n=e[0];n<=e[1];++n)t[n]!=null&&(r[r.length]=Ft("numFmt",null,{numFmtId:n,formatCode:Ir(t[n])}))}),r.length===1?"":(r[r.length]="",r[0]=Ft("numFmts",null,{count:r.length-2}).replace("/>",">"),r.join(""))}var qu=["numFmtId","fillId","fontId","borderId","xfId"],ec=["applyAlignment","applyBorder","applyFill","applyFont","applyNumberFormat","applyProtection","pivotButton","quotePrefix"];function j5(t,r,e){r.CellXf=[];var n,i=!1;(t[0].match($n)||[]).forEach(function(a){var l=Qt(a),d=0;switch(ka(l[0])){case"":case"":case"":break;case"":for(n=l,delete n[0],d=0;d392){for(d=392;d>60;--d)if(r.NumberFmt[n.numFmtId]==r.NumberFmt[d]){n.numFmtId=d;break}}r.CellXf.push(n);break;case"":break;case"":var m={};l.vertical&&(m.vertical=l.vertical),l.horizontal&&(m.horizontal=l.horizontal),l.textRotation!=null&&(m.textRotation=l.textRotation),l.indent&&(m.indent=l.indent),l.wrapText&&(m.wrapText=Ur(l.wrapText)),n.alignment=m;break;case"":break;case"":case"":break;case"":i=!1;break;case"":case"":break;case"":i=!1;break;default:if(e&&e.WTF&&!i)throw new Error("unrecognized "+l[0]+" in cellXfs")}})}function U5(t){var r=[];return r[r.length]=Ft("cellXfs",null),t.forEach(function(e){r[r.length]=Ft("xf",null,e)}),r[r.length]="",r.length===2?"":(r[0]=Ft("cellXfs",null,{count:r.length-2}).replace("/>",">"),r.join(""))}var H5=function(){var r=/<(?:\w+:)?numFmts([^>]*)>[\S\s]*?<\/(?:\w+:)?numFmts>/,e=/<(?:\w+:)?cellXfs([^>]*)>[\S\s]*?<\/(?:\w+:)?cellXfs>/,n=/<(?:\w+:)?fills([^>]*)>[\S\s]*?<\/(?:\w+:)?fills>/,i=/<(?:\w+:)?fonts([^>]*)>[\S\s]*?<\/(?:\w+:)?fonts>/,a=/<(?:\w+:)?borders([^>]*)>[\S\s]*?<\/(?:\w+:)?borders>/;return function(d,m,b){var h={};if(!d)return h;d=d.replace(//mg,"").replace(//gm,"");var _;return(_=d.match(r))&&B5(_,h,b),(_=d.match(i))&&N5(_,h,m,b),(_=d.match(n))&&D5(_,h,m,b),(_=d.match(a))&&M5(_,h,m,b),(_=d.match(e))&&j5(_,h,b),h}}();function K1(t,r){var e=[fn,Ft("styleSheet",null,{xmlns:Vs[0],"xmlns:vt":xn.vt})],n;return t.SSF&&(n=L5(t.SSF))!=null&&(e[e.length]=n),e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]='',(n=U5(r.cellXfs))&&(e[e.length]=n),e[e.length]='',e[e.length]='',e[e.length]='',e.length>2&&(e[e.length]="",e[1]=e[1].replace("/>",">")),e.join("")}function X5(t,r){var e=t.read_shift(2),n=zn(t);return[e,n]}function z5(t,r,e){e||(e=lt(6+4*r.length)),e.write_shift(2,t),On(r,e);var n=e.length>e.l?e.slice(0,e.l):e;return e.l==null&&(e.l=e.length),n}function W5(t,r,e){var n={};n.sz=t.read_shift(2)/20;var i=E6(t);i.fItalic&&(n.italic=1),i.fCondense&&(n.condense=1),i.fExtend&&(n.extend=1),i.fShadow&&(n.shadow=1),i.fOutline&&(n.outline=1),i.fStrikeout&&(n.strike=1);var a=t.read_shift(2);switch(a===700&&(n.bold=1),t.read_shift(2)){case 1:n.vertAlign="superscript";break;case 2:n.vertAlign="subscript";break}var l=t.read_shift(1);l!=0&&(n.underline=l);var d=t.read_shift(1);d>0&&(n.family=d);var m=t.read_shift(1);switch(m>0&&(n.charset=m),t.l++,n.color=k6(t),t.read_shift(1)){case 1:n.scheme="major";break;case 2:n.scheme="minor";break}return n.name=zn(t),n}function V5(t,r){r||(r=lt(25+4*32)),r.write_shift(2,t.sz*20),T6(t,r),r.write_shift(2,t.bold?700:400);var e=0;t.vertAlign=="superscript"?e=1:t.vertAlign=="subscript"&&(e=2),r.write_shift(2,e),r.write_shift(1,t.underline||0),r.write_shift(1,t.family||0),r.write_shift(1,t.charset||0),r.write_shift(1,0),wc(t.color,r);var n=0;return t.scheme=="major"&&(n=1),t.scheme=="minor"&&(n=2),r.write_shift(1,n),On(t.name,r),r.length>r.l?r.slice(0,r.l):r}var $5=["none","solid","mediumGray","darkGray","lightGray","darkHorizontal","darkVertical","darkDown","darkUp","darkGrid","darkTrellis","lightHorizontal","lightVertical","lightDown","lightUp","lightGrid","lightTrellis","gray125","gray0625"],Vl,G5=Vn;function Bv(t,r){r||(r=lt(4*3+8*7+16*1)),Vl||(Vl=Pc($5));var e=Vl[t.patternType];e==null&&(e=40),r.write_shift(4,e);var n=0;if(e!=40)for(wc({auto:1},r),wc({auto:1},r);n<12;++n)r.write_shift(4,0);else{for(;n<4;++n)r.write_shift(4,0);for(;n<12;++n)r.write_shift(4,0)}return r.length>r.l?r.slice(0,r.l):r}function K5(t,r){var e=t.l+r,n=t.read_shift(2),i=t.read_shift(2);return t.l=e,{ixfe:n,numFmtId:i}}function Y1(t,r,e){e||(e=lt(16)),e.write_shift(2,r||0),e.write_shift(2,t.numFmtId||0),e.write_shift(2,0),e.write_shift(2,0),e.write_shift(2,0),e.write_shift(1,0),e.write_shift(1,0);var n=0;return e.write_shift(1,n),e.write_shift(1,0),e.write_shift(1,0),e.write_shift(1,0),e}function pf(t,r){return r||(r=lt(10)),r.write_shift(1,0),r.write_shift(1,0),r.write_shift(4,0),r.write_shift(4,0),r}var Y5=Vn;function Z5(t,r){return r||(r=lt(51)),r.write_shift(1,0),pf(null,r),pf(null,r),pf(null,r),pf(null,r),pf(null,r),r.length>r.l?r.slice(0,r.l):r}function J5(t,r){return r||(r=lt(12+4*10)),r.write_shift(4,t.xfId),r.write_shift(2,1),r.write_shift(1,+t.builtinId),r.write_shift(1,0),xc(t.name||"",r),r.length>r.l?r.slice(0,r.l):r}function Q5(t,r,e){var n=lt(2052);return n.write_shift(4,t),xc(r,n),xc(e,n),n.length>n.l?n.slice(0,n.l):n}function q5(t,r,e){var n={};n.NumberFmt=[];for(var i in Jt)n.NumberFmt[i]=Jt[i];n.CellXf=[],n.Fonts=[];var a=[],l=!1;return $a(t,function(m,b,h){switch(h){case 44:n.NumberFmt[m[0]]=m[1],Ha(m[1],m[0]);break;case 43:n.Fonts.push(m),m.color.theme!=null&&r&&r.themeElements&&r.themeElements.clrScheme&&(m.color.rgb=Ec(r.themeElements.clrScheme[m.color.theme].rgb,m.color.tint||0));break;case 1025:break;case 45:break;case 46:break;case 47:a[a.length-1]==617&&n.CellXf.push(m);break;case 48:case 507:case 572:case 475:break;case 1171:case 2102:case 1130:case 512:case 2095:case 3072:break;case 35:l=!0;break;case 36:l=!1;break;case 37:a.push(h),l=!0;break;case 38:a.pop(),l=!1;break;default:if(b.T>0)a.push(h);else if(b.T<0)a.pop();else if(!l||e.WTF&&a[a.length-1]!=37)throw new Error("Unexpected record 0x"+h.toString(16))}}),n}function eT(t,r){if(r){var e=0;[[5,8],[23,26],[41,44],[50,392]].forEach(function(n){for(var i=n[0];i<=n[1];++i)r[i]!=null&&++e}),e!=0&&(xt(t,615,la(e)),[[5,8],[23,26],[41,44],[50,392]].forEach(function(n){for(var i=n[0];i<=n[1];++i)r[i]!=null&&xt(t,44,z5(i,r[i]))}),xt(t,616))}}function tT(t){var r=1;xt(t,611,la(r)),xt(t,43,V5({sz:12,color:{theme:1},name:"Calibri",family:2,scheme:"minor"})),xt(t,612)}function rT(t){var r=2;xt(t,603,la(r)),xt(t,45,Bv({patternType:"none"})),xt(t,45,Bv({patternType:"gray125"})),xt(t,604)}function nT(t){var r=1;xt(t,613,la(r)),xt(t,46,Z5()),xt(t,614)}function iT(t){var r=1;xt(t,626,la(r)),xt(t,47,Y1({numFmtId:0,fontId:0,fillId:0,borderId:0},65535)),xt(t,627)}function aT(t,r){xt(t,617,la(r.length)),r.forEach(function(e){xt(t,47,Y1(e,0))}),xt(t,618)}function sT(t){var r=1;xt(t,619,la(r)),xt(t,48,J5({xfId:0,builtinId:0,name:"Normal"})),xt(t,620)}function oT(t){var r=0;xt(t,505,la(r)),xt(t,506)}function fT(t){var r=0;xt(t,508,Q5(r,"TableStyleMedium9","PivotStyleMedium4")),xt(t,509)}function uT(t,r){var e=li();return xt(e,278),eT(e,t.SSF),tT(e),rT(e),nT(e),iT(e),aT(e,r.cellXfs),sT(e),oT(e),fT(e),xt(e,279),e.end()}var cT=["","","","","","","","","","","",""];function lT(t,r,e){r.themeElements.clrScheme=[];var n={};(t[0].match($n)||[]).forEach(function(i){var a=Qt(i);switch(a[0]){case"":break;case"":case"":case"":case"":case"":case"":case"":case"":case"":case"":case"":case"":case"":case"":case"":case"":case"":case"":case"":case"":case"":case"":case"":case"":a[0].charAt(1)==="/"?(r.themeElements.clrScheme[cT.indexOf(a[0])]=n,n={}):n.name=a[0].slice(3,a[0].length-1);break;default:if(e&&e.WTF)throw new Error("Unrecognized "+a[0]+" in clrScheme")}})}function hT(){}function dT(){}var pT=/]*)>[\s\S]*<\/a:clrScheme>/,vT=/]*)>[\s\S]*<\/a:fontScheme>/,mT=/]*)>[\s\S]*<\/a:fmtScheme>/;function yT(t,r,e){r.themeElements={};var n;[["clrScheme",pT,lT],["fontScheme",vT,hT],["fmtScheme",mT,dT]].forEach(function(i){if(!(n=t.match(i[1])))throw new Error(i[0]+" not found in themeElements");i[2](n,r,e)})}var gT=/]*)>[\s\S]*<\/a:themeElements>/;function Z1(t,r){(!t||t.length===0)&&(t=f0());var e,n={};if(!(e=t.match(gT)))throw new Error("themeElements not found in theme");return yT(e[0],n,r),n.raw=t,n}function f0(t,r){if(r&&r.themeXLSX)return r.themeXLSX;if(t&&typeof t.raw=="string")return t.raw;var e=[fn];return e[e.length]='',e[e.length]="",e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]="",e[e.length]='',e[e.length]="",e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]="",e[e.length]="",e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]="",e[e.length]="",e[e.length]='',e[e.length]="",e[e.length]='',e[e.length]='',e[e.length]="",e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]="",e[e.length]='',e[e.length]="",e[e.length]='',e[e.length]="",e[e.length]='',e[e.length]='',e[e.length]="",e[e.length]='',e[e.length]="",e[e.length]="",e[e.length]="",e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]="",e[e.length]="",e[e.length]="",e[e.length]="",e[e.length]='',e[e.length]="",e[e.length]="",e[e.length]="",e[e.length]="",e[e.length]='',e[e.length]="",e[e.length]="",e[e.length]="",e[e.length]="",e[e.length]='',e[e.length]="",e[e.length]='',e[e.length]='',e[e.length]="",e[e.length]="",e[e.length]="",e[e.length]='',e[e.length]='',e[e.length]="",e[e.length]='',e[e.length]='',e[e.length]='',e[e.length]="",e[e.length]='',e[e.length]="",e[e.length]='',e[e.length]="",e[e.length]='',e[e.length]='',e[e.length]="",e[e.length]='',e[e.length]="",e[e.length]="",e[e.length]="",e[e.length]="",e[e.length]="",e[e.length]="",e[e.length]='',e[e.length]="",e[e.length]="",e[e.length]='',e[e.length]="",e[e.length]="",e[e.length]="",e[e.length]="",e.join("")}function bT(t,r,e){var n=t.l+r,i=t.read_shift(4);if(i!==124226){if(!e.cellStyles){t.l=n;return}var a=t.slice(t.l);t.l=n;var l;try{l=Xm(a,{type:"array"})}catch{return}var d=Ti(l,"theme/theme/theme1.xml",!0);if(d)return Z1(d,e)}}function _T(t){return t.read_shift(4)}function xT(t){var r={};switch(r.xclrType=t.read_shift(2),r.nTintShade=t.read_shift(2),r.xclrType){case 0:t.l+=4;break;case 1:r.xclrValue=wT(t,4);break;case 2:r.xclrValue=R1(t);break;case 3:r.xclrValue=_T(t);break;case 4:t.l+=4;break}return t.l+=8,r}function wT(t,r){return Vn(t,r)}function ST(t,r){return Vn(t,r)}function kT(t){var r=t.read_shift(2),e=t.read_shift(2)-4,n=[r];switch(r){case 4:case 5:case 7:case 8:case 9:case 10:case 11:case 13:n[1]=xT(t);break;case 6:n[1]=ST(t,e);break;case 14:case 15:n[1]=t.read_shift(e===1?1:2);break;default:throw new Error("Unrecognized ExtProp type: "+r+" "+e)}return n}function ET(t,r){var e=t.l+r;t.l+=2;var n=t.read_shift(2);t.l+=2;for(var i=t.read_shift(2),a=[];i-- >0;)a.push(kT(t,e-t.l));return{ixfe:n,ext:a}}function TT(t,r){r.forEach(function(e){switch(e[0]){}})}function OT(t,r){return{flags:t.read_shift(4),version:t.read_shift(4),name:zn(t)}}function CT(t){var r=lt(12+2*t.name.length);return r.write_shift(4,t.flags),r.write_shift(4,t.version),On(t.name,r),r.slice(0,r.l)}function RT(t){for(var r=[],e=t.read_shift(4);e-- >0;)r.push([t.read_shift(4),t.read_shift(4)]);return r}function AT(t){var r=lt(4+8*t.length);r.write_shift(4,t.length);for(var e=0;e":break;case"":break;case"":break;case"":break;case"":break;case"":break;case"":break;case"":a=2;break;case"":a=2;break;case"":case"":case"":break;case"":i=!1;break;case" + + + + + + + + + + + + + + + + + +`),t.join("")}function BT(t){var r=[];if(!t)return r;var e=1;return(t.match($n)||[]).forEach(function(n){var i=Qt(n);switch(i[0]){case"":case"":break;case"]*r:id="([^"]*)"/)||["",""])[1];return r["!id"][e].Target}var Mo=1024;function Q1(t,r){for(var e=[21600,21600],n=["m0,0l0",e[1],e[0],e[1],e[0],"0xe"].join(","),i=[Ft("xml",null,{"xmlns:v":Si.v,"xmlns:o":Si.o,"xmlns:x":Si.x,"xmlns:mv":Si.mv}).replace(/\/>/,">"),Ft("o:shapelayout",Ft("o:idmap",null,{"v:ext":"edit",data:t}),{"v:ext":"edit"}),Ft("v:shapetype",[Ft("v:stroke",null,{joinstyle:"miter"}),Ft("v:path",null,{gradientshapeok:"t","o:connecttype":"rect"})].join(""),{id:"_x0000_t202","o:spt":202,coordsize:e.join(","),path:n})];Mo",b,Ft("v:shadow",null,h),Ft("v:path",null,{"o:connecttype":"none"}),'
','',"","",In("x:Anchor",[l.c+1,0,l.r+1,0,l.c+3,20,l.r+5,20].join(",")),In("x:AutoFill","False"),In("x:Row",String(l.r)),In("x:Column",String(l.c)),a[1].hidden?"":"","",""])}),i.push(""),i.join("")}function Lv(t,r,e,n){var i=Array.isArray(t),a;r.forEach(function(l){var d=wn(l.ref);if(i?(t[d.r]||(t[d.r]=[]),a=t[d.r][d.c]):a=t[l.ref],!a){a={t:"z"},i?t[d.r][d.c]=a:t[l.ref]=a;var m=Rr(t["!ref"]||"BDWGO1000001:A1");m.s.r>d.r&&(m.s.r=d.r),m.e.rd.c&&(m.s.c=d.c),m.e.c=0;--_){if(!e&&a.c[_].T)return;e&&!a.c[_].T&&a.c.splice(_,1)}if(e&&n){for(_=0;_/))return[];var e=[],n=[],i=t.match(/<(?:\w+:)?authors>([\s\S]*)<\/(?:\w+:)?authors>/);i&&i[1]&&i[1].split(/<\/\w*:?author>/).forEach(function(l){if(!(l===""||l.trim()==="")){var d=l.match(/<(?:\w+:)?author[^>]*>(.*)/);d&&e.push(d[1])}});var a=t.match(/<(?:\w+:)?commentList>([\s\S]*)<\/(?:\w+:)?commentList>/);return a&&a[1]&&a[1].split(/<\/\w*:?comment>/).forEach(function(l){if(!(l===""||l.trim()==="")){var d=l.match(/<(?:\w+:)?comment[^>]*>/);if(d){var m=Qt(d[0]),b={author:m.authorId&&e[m.authorId]||"sheetjsghost",ref:m.ref,guid:m.guid},h=wn(m.ref);if(!(r.sheetRows&&r.sheetRows<=h.r)){var _=l.match(/<(?:\w+:)?text>([\s\S]*)<\/(?:\w+:)?text>/),g=!!_&&!!_[1]&&a0(_[1])||{r:"",t:"",h:""};b.r=g.r,g.r==""&&(g.t=g.h=""),b.t=(g.t||"").replace(/\r\n/g,` +`).replace(/\r/g,` +`),r.cellHTML&&(b.h=g.h),n.push(b)}}}}),n}function q1(t){var r=[fn,Ft("comments",null,{xmlns:Vs[0]})],e=[];return r.push(""),t.forEach(function(n){n[1].forEach(function(i){var a=Ir(i.a);e.indexOf(a)==-1&&(e.push(a),r.push(""+a+"")),i.T&&i.ID&&e.indexOf("tc="+i.ID)==-1&&(e.push("tc="+i.ID),r.push("tc="+i.ID+""))})}),e.length==0&&(e.push("SheetJ5"),r.push("SheetJ5")),r.push(""),r.push(""),t.forEach(function(n){var i=0,a=[];if(n[1][0]&&n[1][0].T&&n[1][0].ID?i=e.indexOf("tc="+n[1][0].ID):n[1].forEach(function(m){m.a&&(i=e.indexOf(Ir(m.a))),a.push(m.t||"")}),r.push(''),a.length<=1)r.push(In("t",Ir(a[0]||"")));else{for(var l=`Comment: + `+a[0]+` +`,d=1;d")}),r.push(""),r.length>2&&(r[r.length]="",r[1]=r[1].replace("/>",">")),r.join("")}function zT(t,r){var e=[],n=!1,i={},a=0;return t.replace($n,function(d,m){var b=Qt(d);switch(ka(b[0])){case"":break;case"":i.t!=null&&e.push(i);break;case"":case"":i.t=t.slice(a,m).replace(/\r\n/g,` +`).replace(/\r/g,` +`);break;case"":n=!0;break;case"":n=!1;break;case"":case"
":case"":break;case"":n=!1;break;default:if(!n&&r.WTF)throw new Error("unrecognized "+b[0]+" in threaded comments")}return d}),e}function WT(t,r,e){var n=[fn,Ft("ThreadedComments",null,{xmlns:xn.TCMNT}).replace(/[\/]>/,">")];return t.forEach(function(i){var a="";(i[1]||[]).forEach(function(l,d){if(!l.T){delete l.ID;return}l.a&&r.indexOf(l.a)==-1&&r.push(l.a);var m={ref:i[0],id:"{54EE7951-7262-4200-6969-"+("000000000000"+e.tcid++).slice(-12)+"}"};d==0?a=m.id:m.parentId=a,l.ID=m.id,l.a&&(m.personId="{54EE7950-7262-4200-6969-"+("000000000000"+r.indexOf(l.a)).slice(-12)+"}"),n.push(Ft("threadedComment",In("text",l.t||""),m))})}),n.push(""),n.join("")}function VT(t,r){var e=[],n=!1;return t.replace($n,function(a){var l=Qt(a);switch(ka(l[0])){case"":break;case"":break;case"":case"":case"":break;case"":n=!1;break;default:if(!n&&r.WTF)throw new Error("unrecognized "+l[0]+" in threaded comments")}return a}),e}function $T(t){var r=[fn,Ft("personList",null,{xmlns:xn.TCMNT,"xmlns:x":Vs[0]}).replace(/[\/]>/,">")];return t.forEach(function(e,n){r.push(Ft("person",null,{displayName:e,id:"{54EE7950-7262-4200-6969-"+("000000000000"+n).slice(-12)+"}",userId:e,providerId:"None"}))}),r.push(""),r.join("")}function GT(t){var r={};r.iauthor=t.read_shift(4);var e=Zs(t);return r.rfx=e.s,r.ref=er(e.s),t.l+=16,r}function KT(t,r){return r==null&&(r=lt(36)),r.write_shift(4,t[1].iauthor),Vo(t[0],r),r.write_shift(4,0),r.write_shift(4,0),r.write_shift(4,0),r.write_shift(4,0),r}var YT=zn;function ZT(t){return On(t.slice(0,54))}function JT(t,r){var e=[],n=[],i={},a=!1;return $a(t,function(d,m,b){switch(b){case 632:n.push(d);break;case 635:i=d;break;case 637:i.t=d.t,i.h=d.h,i.r=d.r;break;case 636:if(i.author=n[i.iauthor],delete i.iauthor,r.sheetRows&&i.rfx&&r.sheetRows<=i.rfx.r)break;i.t||(i.t=""),delete i.rfx,e.push(i);break;case 3072:break;case 35:a=!0;break;case 36:a=!1;break;case 37:break;case 38:break;default:if(!m.T){if(!a||r.WTF)throw new Error("Unexpected record 0x"+b.toString(16))}}}),e}function QT(t){var r=li(),e=[];return xt(r,628),xt(r,630),t.forEach(function(n){n[1].forEach(function(i){e.indexOf(i.a)>-1||(e.push(i.a.slice(0,54)),xt(r,632,ZT(i.a)))})}),xt(r,631),xt(r,633),t.forEach(function(n){n[1].forEach(function(i){i.iauthor=e.indexOf(i.a);var a={s:wn(n[0]),e:wn(n[0])};xt(r,635,KT([a,i])),i.t&&i.t.length>0&&xt(r,637,_6(i)),xt(r,636),delete i.iauthor})}),xt(r,634),xt(r,629),r.end()}var qT="application/vnd.ms-office.vbaProject";function eO(t){var r=$t.utils.cfb_new({root:"R"});return t.FullPaths.forEach(function(e,n){if(!(e.slice(-1)==="/"||!e.match(/_VBA_PROJECT_CUR/))){var i=e.replace(/^[^\/]*/,"R").replace(/\/_VBA_PROJECT_CUR\u0000*/,"");$t.utils.cfb_add(r,i,t.FileIndex[n].content)}}),$t.write(r)}function tO(t,r){r.FullPaths.forEach(function(e,n){if(n!=0){var i=e.replace(/[^\/]*[\/]/,"/_VBA_PROJECT_CUR/");i.slice(-1)!=="/"&&$t.utils.cfb_add(t,i,r.FileIndex[n].content)}})}var ey=["xlsb","xlsm","xlam","biff8","xla"];function rO(){return{"!type":"dialog"}}function nO(){return{"!type":"dialog"}}function iO(){return{"!type":"macro"}}function aO(){return{"!type":"macro"}}var Bo=function(){var t=/(^|[^A-Za-z_])R(\[?-?\d+\]|[1-9]\d*|)C(\[?-?\d+\]|[1-9]\d*|)(?![A-Za-z0-9_])/g,r={r:0,c:0};function e(n,i,a,l){var d=!1,m=!1;a.length==0?m=!0:a.charAt(0)=="["&&(m=!0,a=a.slice(1,-1)),l.length==0?d=!0:l.charAt(0)=="["&&(d=!0,l=l.slice(1,-1));var b=a.length>0?parseInt(a,10)|0:0,h=l.length>0?parseInt(l,10)|0:0;return d?h+=r.c:--h,m?b+=r.r:--b,i+(d?"":"$")+mn(h)+(m?"":"$")+Cn(b)}return function(i,a){return r=a,i.replace(t,e)}}(),u0=/(^|[^._A-Z0-9])([$]?)([A-Z]{1,2}|[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D])([$]?)(10[0-3]\d{4}|104[0-7]\d{3}|1048[0-4]\d{2}|10485[0-6]\d|104857[0-6]|[1-9]\d{0,5})(?![_.\(A-Za-z0-9])/g,c0=function(){return function(r,e){return r.replace(u0,function(n,i,a,l,d,m){var b=s1(l)-(a?0:e.c),h=a1(m)-(d?0:e.r),_=h==0?"":d?h+1:"["+h+"]",g=b==0?"":a?b+1:"["+b+"]";return i+"R"+_+"C"+g})}}();function ty(t,r){return t.replace(u0,function(e,n,i,a,l,d){return n+(i=="$"?i+a:mn(s1(a)+r.c))+(l=="$"?l+d:Cn(a1(d)+r.r))})}function sO(t,r,e){var n=Ki(r),i=n.s,a=wn(e),l={r:a.r-i.r,c:a.c-i.c};return ty(t,l)}function oO(t){return t.length!=1}function jv(t){return t.replace(/_xlfn\./g,"")}function hn(t){t.l+=1}function vs(t,r){var e=t.read_shift(r==1?1:2);return[e&16383,e>>14&1,e>>15&1]}function ry(t,r,e){var n=2;if(e){if(e.biff>=2&&e.biff<=5)return ny(t);e.biff==12&&(n=4)}var i=t.read_shift(n),a=t.read_shift(n),l=vs(t,2),d=vs(t,2);return{s:{r:i,c:l[0],cRel:l[1],rRel:l[2]},e:{r:a,c:d[0],cRel:d[1],rRel:d[2]}}}function ny(t){var r=vs(t,2),e=vs(t,2),n=t.read_shift(1),i=t.read_shift(1);return{s:{r:r[0],c:n,cRel:r[1],rRel:r[2]},e:{r:e[0],c:i,cRel:e[1],rRel:e[2]}}}function fO(t,r,e){if(e.biff<8)return ny(t);var n=t.read_shift(e.biff==12?4:2),i=t.read_shift(e.biff==12?4:2),a=vs(t,2),l=vs(t,2);return{s:{r:n,c:a[0],cRel:a[1],rRel:a[2]},e:{r:i,c:l[0],cRel:l[1],rRel:l[2]}}}function iy(t,r,e){if(e&&e.biff>=2&&e.biff<=5)return uO(t);var n=t.read_shift(e&&e.biff==12?4:2),i=vs(t,2);return{r:n,c:i[0],cRel:i[1],rRel:i[2]}}function uO(t){var r=vs(t,2),e=t.read_shift(1);return{r:r[0],c:e,cRel:r[1],rRel:r[2]}}function cO(t){var r=t.read_shift(2),e=t.read_shift(2);return{r,c:e&255,fQuoted:!!(e&16384),cRel:e>>15,rRel:e>>15}}function lO(t,r,e){var n=e&&e.biff?e.biff:8;if(n>=2&&n<=5)return hO(t);var i=t.read_shift(n>=12?4:2),a=t.read_shift(2),l=(a&16384)>>14,d=(a&32768)>>15;if(a&=16383,d==1)for(;i>524287;)i-=1048576;if(l==1)for(;a>8191;)a=a-16384;return{r:i,c:a,cRel:l,rRel:d}}function hO(t){var r=t.read_shift(2),e=t.read_shift(1),n=(r&32768)>>15,i=(r&16384)>>14;return r&=16383,n==1&&r>=8192&&(r=r-16384),i==1&&e>=128&&(e=e-256),{r,c:e,cRel:i,rRel:n}}function dO(t,r,e){var n=(t[t.l++]&96)>>5,i=ry(t,e.biff>=2&&e.biff<=5?6:8,e);return[n,i]}function pO(t,r,e){var n=(t[t.l++]&96)>>5,i=t.read_shift(2,"i"),a=8;if(e)switch(e.biff){case 5:t.l+=12,a=6;break;case 12:a=12;break}var l=ry(t,a,e);return[n,i,l]}function vO(t,r,e){var n=(t[t.l++]&96)>>5;return t.l+=e&&e.biff>8?12:e.biff<8?6:8,[n]}function mO(t,r,e){var n=(t[t.l++]&96)>>5,i=t.read_shift(2),a=8;if(e)switch(e.biff){case 5:t.l+=12,a=6;break;case 12:a=12;break}return t.l+=a,[n,i]}function yO(t,r,e){var n=(t[t.l++]&96)>>5,i=fO(t,r-1,e);return[n,i]}function gO(t,r,e){var n=(t[t.l++]&96)>>5;return t.l+=e.biff==2?6:e.biff==12?14:7,[n]}function Uv(t){var r=t[t.l+1]&1,e=1;return t.l+=4,[r,e]}function bO(t,r,e){t.l+=2;for(var n=t.read_shift(e&&e.biff==2?1:2),i=[],a=0;a<=n;++a)i.push(t.read_shift(e&&e.biff==2?1:2));return i}function _O(t,r,e){var n=t[t.l+1]&255?1:0;return t.l+=2,[n,t.read_shift(e&&e.biff==2?1:2)]}function xO(t,r,e){var n=t[t.l+1]&255?1:0;return t.l+=2,[n,t.read_shift(e&&e.biff==2?1:2)]}function wO(t){var r=t[t.l+1]&255?1:0;return t.l+=2,[r,t.read_shift(2)]}function SO(t,r,e){var n=t[t.l+1]&255?1:0;return t.l+=e&&e.biff==2?3:4,[n]}function ay(t){var r=t.read_shift(1),e=t.read_shift(1);return[r,e]}function kO(t){return t.read_shift(2),ay(t)}function EO(t){return t.read_shift(2),ay(t)}function TO(t,r,e){var n=(t[t.l]&96)>>5;t.l+=1;var i=iy(t,0,e);return[n,i]}function OO(t,r,e){var n=(t[t.l]&96)>>5;t.l+=1;var i=lO(t,0,e);return[n,i]}function CO(t,r,e){var n=(t[t.l]&96)>>5;t.l+=1;var i=t.read_shift(2);e&&e.biff==5&&(t.l+=12);var a=iy(t,0,e);return[n,i,a]}function RO(t,r,e){var n=(t[t.l]&96)>>5;t.l+=1;var i=t.read_shift(e&&e.biff<=3?1:2);return[F7[i],fy[i],n]}function AO(t,r,e){var n=t[t.l++],i=t.read_shift(1),a=e&&e.biff<=3?[n==88?-1:0,t.read_shift(1)]:PO(t);return[i,(a[0]===0?fy:P7)[a[1]]]}function PO(t){return[t[t.l+1]>>7,t.read_shift(2)&32767]}function FO(t,r,e){t.l+=e&&e.biff==2?3:4}function IO(t,r,e){if(t.l++,e&&e.biff==12)return[t.read_shift(4,"i"),0];var n=t.read_shift(2),i=t.read_shift(e&&e.biff==2?1:2);return[n,i]}function MO(t){return t.l++,Ga[t.read_shift(1)]}function DO(t){return t.l++,t.read_shift(2)}function NO(t){return t.l++,t.read_shift(1)!==0}function BO(t){return t.l++,Xn(t)}function LO(t,r,e){return t.l++,Yf(t,r-1,e)}function jO(t,r){var e=[t.read_shift(1)];if(r==12)switch(e[0]){case 2:e[0]=4;break;case 4:e[0]=16;break;case 0:e[0]=1;break;case 1:e[0]=2;break}switch(e[0]){case 4:e[1]=an(t,1)?"TRUE":"FALSE",r!=12&&(t.l+=7);break;case 37:case 16:e[1]=Ga[t[t.l]],t.l+=r==12?4:8;break;case 0:t.l+=8;break;case 1:e[1]=Xn(t);break;case 2:e[1]=Js(t,0,{biff:r>0&&r<8?2:r});break;default:throw new Error("Bad SerAr: "+e[0])}return e}function UO(t,r,e){for(var n=t.read_shift(e.biff==12?4:2),i=[],a=0;a!=n;++a)i.push((e.biff==12?Zs:Mc)(t));return i}function HO(t,r,e){var n=0,i=0;e.biff==12?(n=t.read_shift(4),i=t.read_shift(4)):(i=1+t.read_shift(1),n=1+t.read_shift(2)),e.biff>=2&&e.biff<8&&(--n,--i==0&&(i=256));for(var a=0,l=[];a!=n&&(l[a]=[]);++a)for(var d=0;d!=i;++d)l[a][d]=jO(t,e.biff);return l}function XO(t,r,e){var n=t.read_shift(1)>>>5&3,i=!e||e.biff>=8?4:2,a=t.read_shift(i);switch(e.biff){case 2:t.l+=5;break;case 3:case 4:t.l+=8;break;case 5:t.l+=12;break}return[n,0,a]}function zO(t,r,e){if(e.biff==5)return WO(t);var n=t.read_shift(1)>>>5&3,i=t.read_shift(2),a=t.read_shift(4);return[n,i,a]}function WO(t){var r=t.read_shift(1)>>>5&3,e=t.read_shift(2,"i");t.l+=8;var n=t.read_shift(2);return t.l+=12,[r,e,n]}function VO(t,r,e){var n=t.read_shift(1)>>>5&3;t.l+=e&&e.biff==2?3:4;var i=t.read_shift(e&&e.biff==2?1:2);return[n,i]}function $O(t,r,e){var n=t.read_shift(1)>>>5&3,i=t.read_shift(e&&e.biff==2?1:2);return[n,i]}function GO(t,r,e){var n=t.read_shift(1)>>>5&3;return t.l+=4,e.biff<8&&t.l--,e.biff==12&&(t.l+=2),[n]}function KO(t,r,e){var n=(t[t.l++]&96)>>5,i=t.read_shift(2),a=4;if(e)switch(e.biff){case 5:a=15;break;case 12:a=6;break}return t.l+=a,[n,i]}var YO=Vn,ZO=Vn,JO=Vn;function Jf(t,r,e){return t.l+=2,[cO(t)]}function l0(t){return t.l+=6,[]}var QO=Jf,qO=l0,e7=l0,t7=Jf;function sy(t){return t.l+=2,[pn(t),t.read_shift(2)&1]}var r7=Jf,n7=sy,i7=l0,a7=Jf,s7=Jf,o7=["Data","All","Headers","??","?Data2","??","?DataHeaders","??","Totals","??","??","??","?DataTotals","??","??","??","?Current"];function f7(t){t.l+=2;var r=t.read_shift(2),e=t.read_shift(2),n=t.read_shift(4),i=t.read_shift(2),a=t.read_shift(2),l=o7[e>>2&31];return{ixti:r,coltype:e&3,rt:l,idx:n,c:i,C:a}}function u7(t){return t.l+=2,[t.read_shift(4)]}function c7(t,r,e){return t.l+=5,t.l+=2,t.l+=e.biff==2?1:4,["PTGSHEET"]}function l7(t,r,e){return t.l+=e.biff==2?4:5,["PTGENDSHEET"]}function h7(t){var r=t.read_shift(1)>>>5&3,e=t.read_shift(2);return[r,e]}function d7(t){var r=t.read_shift(1)>>>5&3,e=t.read_shift(2);return[r,e]}function p7(t){return t.l+=4,[0,0]}var Hv={1:{n:"PtgExp",f:IO},2:{n:"PtgTbl",f:JO},3:{n:"PtgAdd",f:hn},4:{n:"PtgSub",f:hn},5:{n:"PtgMul",f:hn},6:{n:"PtgDiv",f:hn},7:{n:"PtgPower",f:hn},8:{n:"PtgConcat",f:hn},9:{n:"PtgLt",f:hn},10:{n:"PtgLe",f:hn},11:{n:"PtgEq",f:hn},12:{n:"PtgGe",f:hn},13:{n:"PtgGt",f:hn},14:{n:"PtgNe",f:hn},15:{n:"PtgIsect",f:hn},16:{n:"PtgUnion",f:hn},17:{n:"PtgRange",f:hn},18:{n:"PtgUplus",f:hn},19:{n:"PtgUminus",f:hn},20:{n:"PtgPercent",f:hn},21:{n:"PtgParen",f:hn},22:{n:"PtgMissArg",f:hn},23:{n:"PtgStr",f:LO},26:{n:"PtgSheet",f:c7},27:{n:"PtgEndSheet",f:l7},28:{n:"PtgErr",f:MO},29:{n:"PtgBool",f:NO},30:{n:"PtgInt",f:DO},31:{n:"PtgNum",f:BO},32:{n:"PtgArray",f:gO},33:{n:"PtgFunc",f:RO},34:{n:"PtgFuncVar",f:AO},35:{n:"PtgName",f:XO},36:{n:"PtgRef",f:TO},37:{n:"PtgArea",f:dO},38:{n:"PtgMemArea",f:VO},39:{n:"PtgMemErr",f:YO},40:{n:"PtgMemNoMem",f:ZO},41:{n:"PtgMemFunc",f:$O},42:{n:"PtgRefErr",f:GO},43:{n:"PtgAreaErr",f:vO},44:{n:"PtgRefN",f:OO},45:{n:"PtgAreaN",f:yO},46:{n:"PtgMemAreaN",f:h7},47:{n:"PtgMemNoMemN",f:d7},57:{n:"PtgNameX",f:zO},58:{n:"PtgRef3d",f:CO},59:{n:"PtgArea3d",f:pO},60:{n:"PtgRefErr3d",f:KO},61:{n:"PtgAreaErr3d",f:mO},255:{}},v7={64:32,96:32,65:33,97:33,66:34,98:34,67:35,99:35,68:36,100:36,69:37,101:37,70:38,102:38,71:39,103:39,72:40,104:40,73:41,105:41,74:42,106:42,75:43,107:43,76:44,108:44,77:45,109:45,78:46,110:46,79:47,111:47,88:34,120:34,89:57,121:57,90:58,122:58,91:59,123:59,92:60,124:60,93:61,125:61},m7={1:{n:"PtgElfLel",f:sy},2:{n:"PtgElfRw",f:a7},3:{n:"PtgElfCol",f:QO},6:{n:"PtgElfRwV",f:s7},7:{n:"PtgElfColV",f:t7},10:{n:"PtgElfRadical",f:r7},11:{n:"PtgElfRadicalS",f:i7},13:{n:"PtgElfColS",f:qO},15:{n:"PtgElfColSV",f:e7},16:{n:"PtgElfRadicalLel",f:n7},25:{n:"PtgList",f:f7},29:{n:"PtgSxName",f:u7},255:{}},y7={0:{n:"PtgAttrNoop",f:p7},1:{n:"PtgAttrSemi",f:SO},2:{n:"PtgAttrIf",f:xO},4:{n:"PtgAttrChoose",f:bO},8:{n:"PtgAttrGoto",f:_O},16:{n:"PtgAttrSum",f:FO},32:{n:"PtgAttrBaxcel",f:Uv},33:{n:"PtgAttrBaxcel",f:Uv},64:{n:"PtgAttrSpace",f:kO},65:{n:"PtgAttrSpaceSemi",f:EO},128:{n:"PtgAttrIfError",f:wO},255:{}};function Qf(t,r,e,n){if(n.biff<8)return Vn(t,r);for(var i=t.l+r,a=[],l=0;l!==e.length;++l)switch(e[l][0]){case"PtgArray":e[l][1]=HO(t,0,n),a.push(e[l][1]);break;case"PtgMemArea":e[l][2]=UO(t,e[l][1],n),a.push(e[l][2]);break;case"PtgExp":n&&n.biff==12&&(e[l][1][1]=t.read_shift(4),a.push(e[l][1]));break;case"PtgList":case"PtgElfRadicalS":case"PtgElfColS":case"PtgElfColSV":throw"Unsupported "+e[l][0]}return r=i-t.l,r!==0&&a.push(Vn(t,r)),a}function qf(t,r,e){for(var n=t.l+r,i,a,l=[];n!=t.l;)r=n-t.l,a=t[t.l],i=Hv[a]||Hv[v7[a]],(a===24||a===25)&&(i=(a===24?m7:y7)[t[t.l+1]]),!i||!i.f?Vn(t,r):l.push([i.n,i.f(t,r,e)]);return l}function g7(t){for(var r=[],e=0;e=",PtgGt:">",PtgLe:"<=",PtgLt:"<",PtgMul:"*",PtgNe:"<>",PtgPower:"^",PtgSub:"-"};function _7(t,r){if(!t&&!(r&&r.biff<=5&&r.biff>=2))throw new Error("empty sheet name");return/[^\w\u4E00-\u9FFF\u3040-\u30FF]/.test(t)?"'"+t+"'":t}function oy(t,r,e){if(!t)return"SH33TJSERR0";if(e.biff>8&&(!t.XTI||!t.XTI[r]))return t.SheetNames[r];if(!t.XTI)return"SH33TJSERR6";var n=t.XTI[r];if(e.biff<8)return r>1e4&&(r-=65536),r<0&&(r=-r),r==0?"":t.XTI[r-1];if(!n)return"SH33TJSERR1";var i="";if(e.biff>8)switch(t[n[0]][0]){case 357:return i=n[1]==-1?"#REF":t.SheetNames[n[1]],n[1]==n[2]?i:i+":"+t.SheetNames[n[2]];case 358:return e.SID!=null?t.SheetNames[e.SID]:"SH33TJSSAME"+t[n[0]][0];case 355:default:return"SH33TJSSRC"+t[n[0]][0]}switch(t[n[0]][0][0]){case 1025:return i=n[1]==-1?"#REF":t.SheetNames[n[1]]||"SH33TJSERR3",n[1]==n[2]?i:i+":"+t.SheetNames[n[2]];case 14849:return t[n[0]].slice(1).map(function(a){return a.Name}).join(";;");default:return t[n[0]][0][3]?(i=n[1]==-1?"#REF":t[n[0]][0][3][n[1]]||"SH33TJSERR4",n[1]==n[2]?i:i+":"+t[n[0]][0][3][n[2]]):"SH33TJSERR2"}}function Xv(t,r,e){var n=oy(t,r,e);return n=="#REF"?n:_7(n,e)}function Un(t,r,e,n,i){var a=i&&i.biff||8,l={s:{c:0,r:0},e:{c:0,r:0}},d=[],m,b,h,_=0,g=0,y,x="";if(!t[0]||!t[0][0])return"";for(var p=-1,S="",w=0,u=t[0].length;w=0){switch(t[0][p][1][0]){case 0:S=Jr(" ",t[0][p][1][1]);break;case 1:S=Jr("\r",t[0][p][1][1]);break;default:if(S="",i.WTF)throw new Error("Unexpected PtgAttrSpaceType "+t[0][p][1][0])}b=b+S,p=-1}d.push(b+b7[o[0]]+m);break;case"PtgIsect":m=d.pop(),b=d.pop(),d.push(b+" "+m);break;case"PtgUnion":m=d.pop(),b=d.pop(),d.push(b+","+m);break;case"PtgRange":m=d.pop(),b=d.pop(),d.push(b+":"+m);break;case"PtgAttrChoose":break;case"PtgAttrGoto":break;case"PtgAttrIf":break;case"PtgAttrIfError":break;case"PtgRef":h=Sf(o[1][1],l,i),d.push(kf(h,a));break;case"PtgRefN":h=e?Sf(o[1][1],e,i):o[1][1],d.push(kf(h,a));break;case"PtgRef3d":_=o[1][1],h=Sf(o[1][2],l,i),x=Xv(n,_,i),d.push(x+"!"+kf(h,a));break;case"PtgFunc":case"PtgFuncVar":var s=o[1][0],c=o[1][1];s||(s=0),s&=127;var f=s==0?[]:d.slice(-s);d.length-=s,c==="User"&&(c=f.shift()),d.push(c+"("+f.join(",")+")");break;case"PtgBool":d.push(o[1]?"TRUE":"FALSE");break;case"PtgInt":d.push(o[1]);break;case"PtgNum":d.push(String(o[1]));break;case"PtgStr":d.push('"'+o[1].replace(/"/g,'""')+'"');break;case"PtgErr":d.push(o[1]);break;case"PtgAreaN":y=yv(o[1][1],e?{s:e}:l,i),d.push(Hl(y,i));break;case"PtgArea":y=yv(o[1][1],l,i),d.push(Hl(y,i));break;case"PtgArea3d":_=o[1][1],y=o[1][2],x=Xv(n,_,i),d.push(x+"!"+Hl(y,i));break;case"PtgAttrSum":d.push("SUM("+d.pop()+")");break;case"PtgAttrBaxcel":case"PtgAttrSemi":break;case"PtgName":g=o[1][2];var v=(n.names||[])[g-1]||(n[0]||[])[g],k=v?v.Name:"SH33TJSNAME"+String(g);k&&k.slice(0,6)=="_xlfn."&&!i.xlfn&&(k=k.slice(6)),d.push(k);break;case"PtgNameX":var T=o[1][1];g=o[1][2];var C;if(i.biff<=5)T<0&&(T=-T),n[T]&&(C=n[T][g]);else{var D="";if(((n[T]||[])[0]||[])[0]==14849||(((n[T]||[])[0]||[])[0]==1025?n[T][g]&&n[T][g].itab>0&&(D=n.SheetNames[n[T][g].itab-1]+"!"):D=n.SheetNames[g-1]+"!"),n[T]&&n[T][g])D+=n[T][g].Name;else if(n[0]&&n[0][g])D+=n[0][g].Name;else{var j=(oy(n,T,i)||"").split(";;");j[g-1]?D=j[g-1]:D+="SH33TJSERRX"}d.push(D);break}C||(C={Name:"SH33TJSERRY"}),d.push(C.Name);break;case"PtgParen":var L="(",M=")";if(p>=0){switch(S="",t[0][p][1][0]){case 2:L=Jr(" ",t[0][p][1][1])+L;break;case 3:L=Jr("\r",t[0][p][1][1])+L;break;case 4:M=Jr(" ",t[0][p][1][1])+M;break;case 5:M=Jr("\r",t[0][p][1][1])+M;break;default:if(i.WTF)throw new Error("Unexpected PtgAttrSpaceType "+t[0][p][1][0])}p=-1}d.push(L+d.pop()+M);break;case"PtgRefErr":d.push("#REF!");break;case"PtgRefErr3d":d.push("#REF!");break;case"PtgExp":h={c:o[1][1],r:o[1][0]};var B={c:e.c,r:e.r};if(n.sharedf[er(h)]){var R=n.sharedf[er(h)];d.push(Un(R,l,B,n,i))}else{var P=!1;for(m=0;m!=n.arrayf.length;++m)if(b=n.arrayf[m],!(h.cb[0].e.c)&&!(h.rb[0].e.r)){d.push(Un(b[1],l,B,n,i)),P=!0;break}P||d.push(o[1])}break;case"PtgArray":d.push("{"+g7(o[1])+"}");break;case"PtgMemArea":break;case"PtgAttrSpace":case"PtgAttrSpaceSemi":p=w;break;case"PtgTbl":break;case"PtgMemErr":break;case"PtgMissArg":d.push("");break;case"PtgAreaErr":d.push("#REF!");break;case"PtgAreaErr3d":d.push("#REF!");break;case"PtgList":d.push("Table"+o[1].idx+"[#"+o[1].rt+"]");break;case"PtgMemAreaN":case"PtgMemNoMemN":case"PtgAttrNoop":case"PtgSheet":case"PtgEndSheet":break;case"PtgMemFunc":break;case"PtgMemNoMem":break;case"PtgElfCol":case"PtgElfColS":case"PtgElfColSV":case"PtgElfColV":case"PtgElfLel":case"PtgElfRadical":case"PtgElfRadicalLel":case"PtgElfRadicalS":case"PtgElfRw":case"PtgElfRwV":throw new Error("Unsupported ELFs");case"PtgSxName":throw new Error("Unrecognized Formula Token: "+String(o));default:throw new Error("Unrecognized Formula Token: "+String(o))}var O=["PtgAttrSpace","PtgAttrSpaceSemi","PtgAttrGoto"];if(i.biff!=3&&p>=0&&O.indexOf(t[0][w][0])==-1){o=t[0][p];var F=!0;switch(o[1][0]){case 4:F=!1;case 0:S=Jr(" ",o[1][1]);break;case 5:F=!1;case 1:S=Jr("\r",o[1][1]);break;default:if(S="",i.WTF)throw new Error("Unexpected PtgAttrSpaceType "+o[1][0])}d.push((F?S:"")+d.pop()+(F?"":S)),p=-1}}if(d.length>1&&i.WTF)throw new Error("bad formula stack");return d[0]}function x7(t,r,e){var n=t.l+r,i=e.biff==2?1:2,a,l=t.read_shift(i);if(l==65535)return[[],Vn(t,r-2)];var d=qf(t,l,e);return r!==l+i&&(a=Qf(t,r-l-i,d,e)),t.l=n,[d,a]}function w7(t,r,e){var n=t.l+r,i=e.biff==2?1:2,a,l=t.read_shift(i);if(l==65535)return[[],Vn(t,r-2)];var d=qf(t,l,e);return r!==l+i&&(a=Qf(t,r-l-i,d,e)),t.l=n,[d,a]}function S7(t,r,e,n){var i=t.l+r,a=qf(t,n,e),l;return i!==t.l&&(l=Qf(t,i-t.l,a,e)),[a,l]}function k7(t,r,e){var n=t.l+r,i,a=t.read_shift(2),l=qf(t,a,e);return a==65535?[[],Vn(t,r-2)]:(r!==a+2&&(i=Qf(t,n-a-2,l,e)),[l,i])}function E7(t){var r;if(ja(t,t.l+6)!==65535)return[Xn(t),"n"];switch(t[t.l]){case 0:return t.l+=8,["String","s"];case 1:return r=t[t.l+2]===1,t.l+=8,[r,"b"];case 2:return r=t[t.l+2],t.l+=8,[r,"e"];case 3:return t.l+=8,["","s"]}return[]}function T7(t){if(t==null){var r=lt(8);return r.write_shift(1,3),r.write_shift(1,0),r.write_shift(2,0),r.write_shift(2,0),r.write_shift(2,65535),r}else if(typeof t=="number")return Hs(t);return Hs(0)}function $l(t,r,e){var n=t.l+r,i=Ea(t);e.biff==2&&++t.l;var a=E7(t),l=t.read_shift(1);e.biff!=2&&(t.read_shift(1),e.biff>=5&&t.read_shift(4));var d=w7(t,n-t.l,e);return{cell:i,val:a[0],formula:d,shared:l>>3&1,tt:a[1]}}function O7(t,r,e,n,i){var a=zs(r,e,i),l=T7(t.v),d=lt(6),m=33;d.write_shift(2,m),d.write_shift(4,0);for(var b=lt(t.bf.length),h=0;h0?Qf(t,a,i,e):null;return[i,l]}var C7=Dc,Nc=Dc,R7=Dc,A7=Dc,P7={0:"BEEP",1:"OPEN",2:"OPEN.LINKS",3:"CLOSE.ALL",4:"SAVE",5:"SAVE.AS",6:"FILE.DELETE",7:"PAGE.SETUP",8:"PRINT",9:"PRINTER.SETUP",10:"QUIT",11:"NEW.WINDOW",12:"ARRANGE.ALL",13:"WINDOW.SIZE",14:"WINDOW.MOVE",15:"FULL",16:"CLOSE",17:"RUN",22:"SET.PRINT.AREA",23:"SET.PRINT.TITLES",24:"SET.PAGE.BREAK",25:"REMOVE.PAGE.BREAK",26:"FONT",27:"DISPLAY",28:"PROTECT.DOCUMENT",29:"PRECISION",30:"A1.R1C1",31:"CALCULATE.NOW",32:"CALCULATION",34:"DATA.FIND",35:"EXTRACT",36:"DATA.DELETE",37:"SET.DATABASE",38:"SET.CRITERIA",39:"SORT",40:"DATA.SERIES",41:"TABLE",42:"FORMAT.NUMBER",43:"ALIGNMENT",44:"STYLE",45:"BORDER",46:"CELL.PROTECTION",47:"COLUMN.WIDTH",48:"UNDO",49:"CUT",50:"COPY",51:"PASTE",52:"CLEAR",53:"PASTE.SPECIAL",54:"EDIT.DELETE",55:"INSERT",56:"FILL.RIGHT",57:"FILL.DOWN",61:"DEFINE.NAME",62:"CREATE.NAMES",63:"FORMULA.GOTO",64:"FORMULA.FIND",65:"SELECT.LAST.CELL",66:"SHOW.ACTIVE.CELL",67:"GALLERY.AREA",68:"GALLERY.BAR",69:"GALLERY.COLUMN",70:"GALLERY.LINE",71:"GALLERY.PIE",72:"GALLERY.SCATTER",73:"COMBINATION",74:"PREFERRED",75:"ADD.OVERLAY",76:"GRIDLINES",77:"SET.PREFERRED",78:"AXES",79:"LEGEND",80:"ATTACH.TEXT",81:"ADD.ARROW",82:"SELECT.CHART",83:"SELECT.PLOT.AREA",84:"PATTERNS",85:"MAIN.CHART",86:"OVERLAY",87:"SCALE",88:"FORMAT.LEGEND",89:"FORMAT.TEXT",90:"EDIT.REPEAT",91:"PARSE",92:"JUSTIFY",93:"HIDE",94:"UNHIDE",95:"WORKSPACE",96:"FORMULA",97:"FORMULA.FILL",98:"FORMULA.ARRAY",99:"DATA.FIND.NEXT",100:"DATA.FIND.PREV",101:"FORMULA.FIND.NEXT",102:"FORMULA.FIND.PREV",103:"ACTIVATE",104:"ACTIVATE.NEXT",105:"ACTIVATE.PREV",106:"UNLOCKED.NEXT",107:"UNLOCKED.PREV",108:"COPY.PICTURE",109:"SELECT",110:"DELETE.NAME",111:"DELETE.FORMAT",112:"VLINE",113:"HLINE",114:"VPAGE",115:"HPAGE",116:"VSCROLL",117:"HSCROLL",118:"ALERT",119:"NEW",120:"CANCEL.COPY",121:"SHOW.CLIPBOARD",122:"MESSAGE",124:"PASTE.LINK",125:"APP.ACTIVATE",126:"DELETE.ARROW",127:"ROW.HEIGHT",128:"FORMAT.MOVE",129:"FORMAT.SIZE",130:"FORMULA.REPLACE",131:"SEND.KEYS",132:"SELECT.SPECIAL",133:"APPLY.NAMES",134:"REPLACE.FONT",135:"FREEZE.PANES",136:"SHOW.INFO",137:"SPLIT",138:"ON.WINDOW",139:"ON.DATA",140:"DISABLE.INPUT",142:"OUTLINE",143:"LIST.NAMES",144:"FILE.CLOSE",145:"SAVE.WORKBOOK",146:"DATA.FORM",147:"COPY.CHART",148:"ON.TIME",149:"WAIT",150:"FORMAT.FONT",151:"FILL.UP",152:"FILL.LEFT",153:"DELETE.OVERLAY",155:"SHORT.MENUS",159:"SET.UPDATE.STATUS",161:"COLOR.PALETTE",162:"DELETE.STYLE",163:"WINDOW.RESTORE",164:"WINDOW.MAXIMIZE",166:"CHANGE.LINK",167:"CALCULATE.DOCUMENT",168:"ON.KEY",169:"APP.RESTORE",170:"APP.MOVE",171:"APP.SIZE",172:"APP.MINIMIZE",173:"APP.MAXIMIZE",174:"BRING.TO.FRONT",175:"SEND.TO.BACK",185:"MAIN.CHART.TYPE",186:"OVERLAY.CHART.TYPE",187:"SELECT.END",188:"OPEN.MAIL",189:"SEND.MAIL",190:"STANDARD.FONT",191:"CONSOLIDATE",192:"SORT.SPECIAL",193:"GALLERY.3D.AREA",194:"GALLERY.3D.COLUMN",195:"GALLERY.3D.LINE",196:"GALLERY.3D.PIE",197:"VIEW.3D",198:"GOAL.SEEK",199:"WORKGROUP",200:"FILL.GROUP",201:"UPDATE.LINK",202:"PROMOTE",203:"DEMOTE",204:"SHOW.DETAIL",206:"UNGROUP",207:"OBJECT.PROPERTIES",208:"SAVE.NEW.OBJECT",209:"SHARE",210:"SHARE.NAME",211:"DUPLICATE",212:"APPLY.STYLE",213:"ASSIGN.TO.OBJECT",214:"OBJECT.PROTECTION",215:"HIDE.OBJECT",216:"SET.EXTRACT",217:"CREATE.PUBLISHER",218:"SUBSCRIBE.TO",219:"ATTRIBUTES",220:"SHOW.TOOLBAR",222:"PRINT.PREVIEW",223:"EDIT.COLOR",224:"SHOW.LEVELS",225:"FORMAT.MAIN",226:"FORMAT.OVERLAY",227:"ON.RECALC",228:"EDIT.SERIES",229:"DEFINE.STYLE",240:"LINE.PRINT",243:"ENTER.DATA",249:"GALLERY.RADAR",250:"MERGE.STYLES",251:"EDITION.OPTIONS",252:"PASTE.PICTURE",253:"PASTE.PICTURE.LINK",254:"SPELLING",256:"ZOOM",259:"INSERT.OBJECT",260:"WINDOW.MINIMIZE",265:"SOUND.NOTE",266:"SOUND.PLAY",267:"FORMAT.SHAPE",268:"EXTEND.POLYGON",269:"FORMAT.AUTO",272:"GALLERY.3D.BAR",273:"GALLERY.3D.SURFACE",274:"FILL.AUTO",276:"CUSTOMIZE.TOOLBAR",277:"ADD.TOOL",278:"EDIT.OBJECT",279:"ON.DOUBLECLICK",280:"ON.ENTRY",281:"WORKBOOK.ADD",282:"WORKBOOK.MOVE",283:"WORKBOOK.COPY",284:"WORKBOOK.OPTIONS",285:"SAVE.WORKSPACE",288:"CHART.WIZARD",289:"DELETE.TOOL",290:"MOVE.TOOL",291:"WORKBOOK.SELECT",292:"WORKBOOK.ACTIVATE",293:"ASSIGN.TO.TOOL",295:"COPY.TOOL",296:"RESET.TOOL",297:"CONSTRAIN.NUMERIC",298:"PASTE.TOOL",302:"WORKBOOK.NEW",305:"SCENARIO.CELLS",306:"SCENARIO.DELETE",307:"SCENARIO.ADD",308:"SCENARIO.EDIT",309:"SCENARIO.SHOW",310:"SCENARIO.SHOW.NEXT",311:"SCENARIO.SUMMARY",312:"PIVOT.TABLE.WIZARD",313:"PIVOT.FIELD.PROPERTIES",314:"PIVOT.FIELD",315:"PIVOT.ITEM",316:"PIVOT.ADD.FIELDS",318:"OPTIONS.CALCULATION",319:"OPTIONS.EDIT",320:"OPTIONS.VIEW",321:"ADDIN.MANAGER",322:"MENU.EDITOR",323:"ATTACH.TOOLBARS",324:"VBAActivate",325:"OPTIONS.CHART",328:"VBA.INSERT.FILE",330:"VBA.PROCEDURE.DEFINITION",336:"ROUTING.SLIP",338:"ROUTE.DOCUMENT",339:"MAIL.LOGON",342:"INSERT.PICTURE",343:"EDIT.TOOL",344:"GALLERY.DOUGHNUT",350:"CHART.TREND",352:"PIVOT.ITEM.PROPERTIES",354:"WORKBOOK.INSERT",355:"OPTIONS.TRANSITION",356:"OPTIONS.GENERAL",370:"FILTER.ADVANCED",373:"MAIL.ADD.MAILER",374:"MAIL.DELETE.MAILER",375:"MAIL.REPLY",376:"MAIL.REPLY.ALL",377:"MAIL.FORWARD",378:"MAIL.NEXT.LETTER",379:"DATA.LABEL",380:"INSERT.TITLE",381:"FONT.PROPERTIES",382:"MACRO.OPTIONS",383:"WORKBOOK.HIDE",384:"WORKBOOK.UNHIDE",385:"WORKBOOK.DELETE",386:"WORKBOOK.NAME",388:"GALLERY.CUSTOM",390:"ADD.CHART.AUTOFORMAT",391:"DELETE.CHART.AUTOFORMAT",392:"CHART.ADD.DATA",393:"AUTO.OUTLINE",394:"TAB.ORDER",395:"SHOW.DIALOG",396:"SELECT.ALL",397:"UNGROUP.SHEETS",398:"SUBTOTAL.CREATE",399:"SUBTOTAL.REMOVE",400:"RENAME.OBJECT",412:"WORKBOOK.SCROLL",413:"WORKBOOK.NEXT",414:"WORKBOOK.PREV",415:"WORKBOOK.TAB.SPLIT",416:"FULL.SCREEN",417:"WORKBOOK.PROTECT",420:"SCROLLBAR.PROPERTIES",421:"PIVOT.SHOW.PAGES",422:"TEXT.TO.COLUMNS",423:"FORMAT.CHARTTYPE",424:"LINK.FORMAT",425:"TRACER.DISPLAY",430:"TRACER.NAVIGATE",431:"TRACER.CLEAR",432:"TRACER.ERROR",433:"PIVOT.FIELD.GROUP",434:"PIVOT.FIELD.UNGROUP",435:"CHECKBOX.PROPERTIES",436:"LABEL.PROPERTIES",437:"LISTBOX.PROPERTIES",438:"EDITBOX.PROPERTIES",439:"PIVOT.REFRESH",440:"LINK.COMBO",441:"OPEN.TEXT",442:"HIDE.DIALOG",443:"SET.DIALOG.FOCUS",444:"ENABLE.OBJECT",445:"PUSHBUTTON.PROPERTIES",446:"SET.DIALOG.DEFAULT",447:"FILTER",448:"FILTER.SHOW.ALL",449:"CLEAR.OUTLINE",450:"FUNCTION.WIZARD",451:"ADD.LIST.ITEM",452:"SET.LIST.ITEM",453:"REMOVE.LIST.ITEM",454:"SELECT.LIST.ITEM",455:"SET.CONTROL.VALUE",456:"SAVE.COPY.AS",458:"OPTIONS.LISTS.ADD",459:"OPTIONS.LISTS.DELETE",460:"SERIES.AXES",461:"SERIES.X",462:"SERIES.Y",463:"ERRORBAR.X",464:"ERRORBAR.Y",465:"FORMAT.CHART",466:"SERIES.ORDER",467:"MAIL.LOGOFF",468:"CLEAR.ROUTING.SLIP",469:"APP.ACTIVATE.MICROSOFT",470:"MAIL.EDIT.MAILER",471:"ON.SHEET",472:"STANDARD.WIDTH",473:"SCENARIO.MERGE",474:"SUMMARY.INFO",475:"FIND.FILE",476:"ACTIVE.CELL.FONT",477:"ENABLE.TIPWIZARD",478:"VBA.MAKE.ADDIN",480:"INSERTDATATABLE",481:"WORKGROUP.OPTIONS",482:"MAIL.SEND.MAILER",485:"AUTOCORRECT",489:"POST.DOCUMENT",491:"PICKLIST",493:"VIEW.SHOW",494:"VIEW.DEFINE",495:"VIEW.DELETE",509:"SHEET.BACKGROUND",510:"INSERT.MAP.OBJECT",511:"OPTIONS.MENONO",517:"MSOCHECKS",518:"NORMAL",519:"LAYOUT",520:"RM.PRINT.AREA",521:"CLEAR.PRINT.AREA",522:"ADD.PRINT.AREA",523:"MOVE.BRK",545:"HIDECURR.NOTE",546:"HIDEALL.NOTES",547:"DELETE.NOTE",548:"TRAVERSE.NOTES",549:"ACTIVATE.NOTES",620:"PROTECT.REVISIONS",621:"UNPROTECT.REVISIONS",647:"OPTIONS.ME",653:"WEB.PUBLISH",667:"NEWWEBQUERY",673:"PIVOT.TABLE.CHART",753:"OPTIONS.SAVE",755:"OPTIONS.SPELL",808:"HIDEALL.INKANNOTS"},fy={0:"COUNT",1:"IF",2:"ISNA",3:"ISERROR",4:"SUM",5:"AVERAGE",6:"MIN",7:"MAX",8:"ROW",9:"COLUMN",10:"NA",11:"NPV",12:"STDEV",13:"DOLLAR",14:"FIXED",15:"SIN",16:"COS",17:"TAN",18:"ATAN",19:"PI",20:"SQRT",21:"EXP",22:"LN",23:"LOG10",24:"ABS",25:"INT",26:"SIGN",27:"ROUND",28:"LOOKUP",29:"INDEX",30:"REPT",31:"MID",32:"LEN",33:"VALUE",34:"TRUE",35:"FALSE",36:"AND",37:"OR",38:"NOT",39:"MOD",40:"DCOUNT",41:"DSUM",42:"DAVERAGE",43:"DMIN",44:"DMAX",45:"DSTDEV",46:"VAR",47:"DVAR",48:"TEXT",49:"LINEST",50:"TREND",51:"LOGEST",52:"GROWTH",53:"GOTO",54:"HALT",55:"RETURN",56:"PV",57:"FV",58:"NPER",59:"PMT",60:"RATE",61:"MIRR",62:"IRR",63:"RAND",64:"MATCH",65:"DATE",66:"TIME",67:"DAY",68:"MONTH",69:"YEAR",70:"WEEKDAY",71:"HOUR",72:"MINUTE",73:"SECOND",74:"NOW",75:"AREAS",76:"ROWS",77:"COLUMNS",78:"OFFSET",79:"ABSREF",80:"RELREF",81:"ARGUMENT",82:"SEARCH",83:"TRANSPOSE",84:"ERROR",85:"STEP",86:"TYPE",87:"ECHO",88:"SET.NAME",89:"CALLER",90:"DEREF",91:"WINDOWS",92:"SERIES",93:"DOCUMENTS",94:"ACTIVE.CELL",95:"SELECTION",96:"RESULT",97:"ATAN2",98:"ASIN",99:"ACOS",100:"CHOOSE",101:"HLOOKUP",102:"VLOOKUP",103:"LINKS",104:"INPUT",105:"ISREF",106:"GET.FORMULA",107:"GET.NAME",108:"SET.VALUE",109:"LOG",110:"EXEC",111:"CHAR",112:"LOWER",113:"UPPER",114:"PROPER",115:"LEFT",116:"RIGHT",117:"EXACT",118:"TRIM",119:"REPLACE",120:"SUBSTITUTE",121:"CODE",122:"NAMES",123:"DIRECTORY",124:"FIND",125:"CELL",126:"ISERR",127:"ISTEXT",128:"ISNUMBER",129:"ISBLANK",130:"T",131:"N",132:"FOPEN",133:"FCLOSE",134:"FSIZE",135:"FREADLN",136:"FREAD",137:"FWRITELN",138:"FWRITE",139:"FPOS",140:"DATEVALUE",141:"TIMEVALUE",142:"SLN",143:"SYD",144:"DDB",145:"GET.DEF",146:"REFTEXT",147:"TEXTREF",148:"INDIRECT",149:"REGISTER",150:"CALL",151:"ADD.BAR",152:"ADD.MENU",153:"ADD.COMMAND",154:"ENABLE.COMMAND",155:"CHECK.COMMAND",156:"RENAME.COMMAND",157:"SHOW.BAR",158:"DELETE.MENU",159:"DELETE.COMMAND",160:"GET.CHART.ITEM",161:"DIALOG.BOX",162:"CLEAN",163:"MDETERM",164:"MINVERSE",165:"MMULT",166:"FILES",167:"IPMT",168:"PPMT",169:"COUNTA",170:"CANCEL.KEY",171:"FOR",172:"WHILE",173:"BREAK",174:"NEXT",175:"INITIATE",176:"REQUEST",177:"POKE",178:"EXECUTE",179:"TERMINATE",180:"RESTART",181:"HELP",182:"GET.BAR",183:"PRODUCT",184:"FACT",185:"GET.CELL",186:"GET.WORKSPACE",187:"GET.WINDOW",188:"GET.DOCUMENT",189:"DPRODUCT",190:"ISNONTEXT",191:"GET.NOTE",192:"NOTE",193:"STDEVP",194:"VARP",195:"DSTDEVP",196:"DVARP",197:"TRUNC",198:"ISLOGICAL",199:"DCOUNTA",200:"DELETE.BAR",201:"UNREGISTER",204:"USDOLLAR",205:"FINDB",206:"SEARCHB",207:"REPLACEB",208:"LEFTB",209:"RIGHTB",210:"MIDB",211:"LENB",212:"ROUNDUP",213:"ROUNDDOWN",214:"ASC",215:"DBCS",216:"RANK",219:"ADDRESS",220:"DAYS360",221:"TODAY",222:"VDB",223:"ELSE",224:"ELSE.IF",225:"END.IF",226:"FOR.CELL",227:"MEDIAN",228:"SUMPRODUCT",229:"SINH",230:"COSH",231:"TANH",232:"ASINH",233:"ACOSH",234:"ATANH",235:"DGET",236:"CREATE.OBJECT",237:"VOLATILE",238:"LAST.ERROR",239:"CUSTOM.UNDO",240:"CUSTOM.REPEAT",241:"FORMULA.CONVERT",242:"GET.LINK.INFO",243:"TEXT.BOX",244:"INFO",245:"GROUP",246:"GET.OBJECT",247:"DB",248:"PAUSE",251:"RESUME",252:"FREQUENCY",253:"ADD.TOOLBAR",254:"DELETE.TOOLBAR",255:"User",256:"RESET.TOOLBAR",257:"EVALUATE",258:"GET.TOOLBAR",259:"GET.TOOL",260:"SPELLING.CHECK",261:"ERROR.TYPE",262:"APP.TITLE",263:"WINDOW.TITLE",264:"SAVE.TOOLBAR",265:"ENABLE.TOOL",266:"PRESS.TOOL",267:"REGISTER.ID",268:"GET.WORKBOOK",269:"AVEDEV",270:"BETADIST",271:"GAMMALN",272:"BETAINV",273:"BINOMDIST",274:"CHIDIST",275:"CHIINV",276:"COMBIN",277:"CONFIDENCE",278:"CRITBINOM",279:"EVEN",280:"EXPONDIST",281:"FDIST",282:"FINV",283:"FISHER",284:"FISHERINV",285:"FLOOR",286:"GAMMADIST",287:"GAMMAINV",288:"CEILING",289:"HYPGEOMDIST",290:"LOGNORMDIST",291:"LOGINV",292:"NEGBINOMDIST",293:"NORMDIST",294:"NORMSDIST",295:"NORMINV",296:"NORMSINV",297:"STANDARDIZE",298:"ODD",299:"PERMUT",300:"POISSON",301:"TDIST",302:"WEIBULL",303:"SUMXMY2",304:"SUMX2MY2",305:"SUMX2PY2",306:"CHITEST",307:"CORREL",308:"COVAR",309:"FORECAST",310:"FTEST",311:"INTERCEPT",312:"PEARSON",313:"RSQ",314:"STEYX",315:"SLOPE",316:"TTEST",317:"PROB",318:"DEVSQ",319:"GEOMEAN",320:"HARMEAN",321:"SUMSQ",322:"KURT",323:"SKEW",324:"ZTEST",325:"LARGE",326:"SMALL",327:"QUARTILE",328:"PERCENTILE",329:"PERCENTRANK",330:"MODE",331:"TRIMMEAN",332:"TINV",334:"MOVIE.COMMAND",335:"GET.MOVIE",336:"CONCATENATE",337:"POWER",338:"PIVOT.ADD.DATA",339:"GET.PIVOT.TABLE",340:"GET.PIVOT.FIELD",341:"GET.PIVOT.ITEM",342:"RADIANS",343:"DEGREES",344:"SUBTOTAL",345:"SUMIF",346:"COUNTIF",347:"COUNTBLANK",348:"SCENARIO.GET",349:"OPTIONS.LISTS.GET",350:"ISPMT",351:"DATEDIF",352:"DATESTRING",353:"NUMBERSTRING",354:"ROMAN",355:"OPEN.DIALOG",356:"SAVE.DIALOG",357:"VIEW.GET",358:"GETPIVOTDATA",359:"HYPERLINK",360:"PHONETIC",361:"AVERAGEA",362:"MAXA",363:"MINA",364:"STDEVPA",365:"VARPA",366:"STDEVA",367:"VARA",368:"BAHTTEXT",369:"THAIDAYOFWEEK",370:"THAIDIGIT",371:"THAIMONTHOFYEAR",372:"THAINUMSOUND",373:"THAINUMSTRING",374:"THAISTRINGLENGTH",375:"ISTHAIDIGIT",376:"ROUNDBAHTDOWN",377:"ROUNDBAHTUP",378:"THAIYEAR",379:"RTD",380:"CUBEVALUE",381:"CUBEMEMBER",382:"CUBEMEMBERPROPERTY",383:"CUBERANKEDMEMBER",384:"HEX2BIN",385:"HEX2DEC",386:"HEX2OCT",387:"DEC2BIN",388:"DEC2HEX",389:"DEC2OCT",390:"OCT2BIN",391:"OCT2HEX",392:"OCT2DEC",393:"BIN2DEC",394:"BIN2OCT",395:"BIN2HEX",396:"IMSUB",397:"IMDIV",398:"IMPOWER",399:"IMABS",400:"IMSQRT",401:"IMLN",402:"IMLOG2",403:"IMLOG10",404:"IMSIN",405:"IMCOS",406:"IMEXP",407:"IMARGUMENT",408:"IMCONJUGATE",409:"IMAGINARY",410:"IMREAL",411:"COMPLEX",412:"IMSUM",413:"IMPRODUCT",414:"SERIESSUM",415:"FACTDOUBLE",416:"SQRTPI",417:"QUOTIENT",418:"DELTA",419:"GESTEP",420:"ISEVEN",421:"ISODD",422:"MROUND",423:"ERF",424:"ERFC",425:"BESSELJ",426:"BESSELK",427:"BESSELY",428:"BESSELI",429:"XIRR",430:"XNPV",431:"PRICEMAT",432:"YIELDMAT",433:"INTRATE",434:"RECEIVED",435:"DISC",436:"PRICEDISC",437:"YIELDDISC",438:"TBILLEQ",439:"TBILLPRICE",440:"TBILLYIELD",441:"PRICE",442:"YIELD",443:"DOLLARDE",444:"DOLLARFR",445:"NOMINAL",446:"EFFECT",447:"CUMPRINC",448:"CUMIPMT",449:"EDATE",450:"EOMONTH",451:"YEARFRAC",452:"COUPDAYBS",453:"COUPDAYS",454:"COUPDAYSNC",455:"COUPNCD",456:"COUPNUM",457:"COUPPCD",458:"DURATION",459:"MDURATION",460:"ODDLPRICE",461:"ODDLYIELD",462:"ODDFPRICE",463:"ODDFYIELD",464:"RANDBETWEEN",465:"WEEKNUM",466:"AMORDEGRC",467:"AMORLINC",468:"CONVERT",724:"SHEETJS",469:"ACCRINT",470:"ACCRINTM",471:"WORKDAY",472:"NETWORKDAYS",473:"GCD",474:"MULTINOMIAL",475:"LCM",476:"FVSCHEDULE",477:"CUBEKPIMEMBER",478:"CUBESET",479:"CUBESETCOUNT",480:"IFERROR",481:"COUNTIFS",482:"SUMIFS",483:"AVERAGEIF",484:"AVERAGEIFS"},F7={2:1,3:1,10:0,15:1,16:1,17:1,18:1,19:0,20:1,21:1,22:1,23:1,24:1,25:1,26:1,27:2,30:2,31:3,32:1,33:1,34:0,35:0,38:1,39:2,40:3,41:3,42:3,43:3,44:3,45:3,47:3,48:2,53:1,61:3,63:0,65:3,66:3,67:1,68:1,69:1,70:1,71:1,72:1,73:1,74:0,75:1,76:1,77:1,79:2,80:2,83:1,85:0,86:1,89:0,90:1,94:0,95:0,97:2,98:1,99:1,101:3,102:3,105:1,106:1,108:2,111:1,112:1,113:1,114:1,117:2,118:1,119:4,121:1,126:1,127:1,128:1,129:1,130:1,131:1,133:1,134:1,135:1,136:2,137:2,138:2,140:1,141:1,142:3,143:4,144:4,161:1,162:1,163:1,164:1,165:2,172:1,175:2,176:2,177:3,178:2,179:1,184:1,186:1,189:3,190:1,195:3,196:3,197:1,198:1,199:3,201:1,207:4,210:3,211:1,212:2,213:2,214:1,215:1,225:0,229:1,230:1,231:1,232:1,233:1,234:1,235:3,244:1,247:4,252:2,257:1,261:1,271:1,273:4,274:2,275:2,276:2,277:3,278:3,279:1,280:3,281:3,282:3,283:1,284:1,285:2,286:4,287:3,288:2,289:4,290:3,291:3,292:3,293:4,294:1,295:3,296:1,297:3,298:1,299:2,300:3,301:3,302:4,303:2,304:2,305:2,306:2,307:2,308:2,309:3,310:2,311:2,312:2,313:2,314:2,315:2,316:4,325:2,326:2,327:2,328:2,331:2,332:2,337:2,342:1,343:1,346:2,347:1,350:4,351:3,352:1,353:2,360:1,368:1,369:1,370:1,371:1,372:1,373:1,374:1,375:1,376:1,377:1,378:1,382:3,385:1,392:1,393:1,396:2,397:2,398:2,399:1,400:1,401:1,402:1,403:1,404:1,405:1,406:1,407:1,408:1,409:1,410:1,414:4,415:1,416:1,417:2,420:1,421:1,422:2,424:1,425:2,426:2,427:2,428:2,430:3,438:3,439:3,440:3,443:2,444:2,445:2,446:2,447:6,448:6,449:2,450:2,464:2,468:3,476:2,479:1,480:2,65535:0};function zv(t){return t.slice(0,3)=="of:"&&(t=t.slice(3)),t.charCodeAt(0)==61&&(t=t.slice(1),t.charCodeAt(0)==61&&(t=t.slice(1))),t=t.replace(/COM\.MICROSOFT\./g,""),t=t.replace(/\[((?:\.[A-Z]+[0-9]+)(?::\.[A-Z]+[0-9]+)?)\]/g,function(r,e){return e.replace(/\./g,"")}),t=t.replace(/\[.(#[A-Z]*[?!])\]/g,"$1"),t.replace(/[;~]/g,",").replace(/\|/g,";")}function I7(t){var r="of:="+t.replace(u0,"$1[.$2$3$4$5]").replace(/\]:\[/g,":");return r.replace(/;/g,"|").replace(/,/g,";")}function Gl(t){var r=t.split(":"),e=r[0].split(".")[0];return[e,r[0].split(".")[1]+(r.length>1?":"+(r[1].split(".")[1]||r[1].split(".")[0]):"")]}function M7(t){return t.replace(/\./,"!")}var Tf={},Lo={},Of=typeof Map<"u";function h0(t,r,e){var n=0,i=t.length;if(e){if(Of?e.has(r):Object.prototype.hasOwnProperty.call(e,r)){for(var a=Of?e.get(r):e[r];n-1?(e.width=Tc(n),e.customWidth=1):r.width!=null&&(e.width=r.width),r.hidden&&(e.hidden=!0),r.level!=null&&(e.outlineLevel=e.level=r.level),e}function Bs(t,r){if(t){var e=[.7,.7,.75,.75,.3,.3];r=="xlml"&&(e=[1,1,1,1,.5,.5]),t.left==null&&(t.left=e[0]),t.right==null&&(t.right=e[1]),t.top==null&&(t.top=e[2]),t.bottom==null&&(t.bottom=e[3]),t.header==null&&(t.header=e[4]),t.footer==null&&(t.footer=e[5])}}function gs(t,r,e){var n=e.revssf[r.z!=null?r.z:"General"],i=60,a=t.length;if(n==null&&e.ssf){for(;i<392;++i)if(e.ssf[i]==null){Ha(r.z,i),e.ssf[i]=r.z,e.revssf[r.z]=n=i;break}}for(i=0;i!=a;++i)if(t[i].numFmtId===n)return i;return t[a]={numFmtId:n,fontId:0,fillId:0,borderId:0,xfId:0,applyNumberFormat:1},a}function uy(t,r,e,n,i,a){try{n.cellNF&&(t.z=Jt[r])}catch(d){if(n.WTF)throw d}if(!(t.t==="z"&&!n.cellStyles)){if(t.t==="d"&&typeof t.v=="string"&&(t.v=Vr(t.v)),(!n||n.cellText!==!1)&&t.t!=="z")try{if(Jt[r]==null&&Ha(Pk[r]||"General",r),t.t==="e")t.w=t.w||Ga[t.v];else if(r===0)if(t.t==="n")(t.v|0)===t.v?t.w=t.v.toString(10):t.w=Pf(t.v);else if(t.t==="d"){var l=Mn(t.v);(l|0)===l?t.w=l.toString(10):t.w=Pf(l)}else{if(t.v===void 0)return"";t.w=js(t.v,Lo)}else t.t==="d"?t.w=Gi(r,Mn(t.v),Lo):t.w=Gi(r,t.v,Lo)}catch(d){if(n.WTF)throw d}if(n.cellStyles&&e!=null)try{t.s=a.Fills[e],t.s.fgColor&&t.s.fgColor.theme&&!t.s.fgColor.rgb&&(t.s.fgColor.rgb=Ec(i.themeElements.clrScheme[t.s.fgColor.theme].rgb,t.s.fgColor.tint||0),n.WTF&&(t.s.fgColor.raw_rgb=i.themeElements.clrScheme[t.s.fgColor.theme].rgb)),t.s.bgColor&&t.s.bgColor.theme&&(t.s.bgColor.rgb=Ec(i.themeElements.clrScheme[t.s.bgColor.theme].rgb,t.s.bgColor.tint||0),n.WTF&&(t.s.bgColor.raw_rgb=i.themeElements.clrScheme[t.s.bgColor.theme].rgb))}catch(d){if(n.WTF&&a.Fills)throw d}}}function D7(t,r,e){if(t&&t["!ref"]){var n=Rr(t["!ref"]);if(n.e.c=0&&e.s.c>=0&&(t["!ref"]=pr(e))}var B7=/<(?:\w:)?mergeCell ref="[A-Z0-9:]+"\s*[\/]?>/g,L7=/<(?:\w+:)?sheetData[^>]*>([\s\S]*)<\/(?:\w+:)?sheetData>/,j7=/<(?:\w:)?hyperlink [^>]*>/mg,U7=/"(\w*:\w*)"/,H7=/<(?:\w:)?col\b[^>]*[\/]?>/g,X7=/<(?:\w:)?autoFilter[^>]*([\/]|>([\s\S]*)<\/(?:\w:)?autoFilter)>/g,z7=/<(?:\w:)?pageMargins[^>]*\/>/g,cy=/<(?:\w:)?sheetPr\b(?:[^>a-z][^>]*)?\/>/,W7=/<(?:\w:)?sheetPr[^>]*(?:[\/]|>([\s\S]*)<\/(?:\w:)?sheetPr)>/,V7=/<(?:\w:)?sheetViews[^>]*(?:[\/]|>([\s\S]*)<\/(?:\w:)?sheetViews)>/;function $7(t,r,e,n,i,a,l){if(!t)return t;n||(n={"!id":{}});var d=r.dense?[]:{},m={s:{r:2e6,c:2e6},e:{r:0,c:0}},b="",h="",_=t.match(L7);_?(b=t.slice(0,_.index),h=t.slice(_.index+_[0].length)):b=h=t;var g=b.match(cy);g?d0(g[0],d,i,e):(g=b.match(W7))&&K7(g[0],g[1]||"",d,i,e);var y=(b.match(/<(?:\w*:)?dimension/)||{index:-1}).index;if(y>0){var x=b.slice(y,y+50).match(U7);x&&N7(d,x[1])}var p=b.match(V7);p&&p[1]&&oC(p[1],i);var S=[];if(r.cellStyles){var w=b.match(H7);w&&rC(S,w)}_&&cC(_[1],d,r,m,a,l);var u=h.match(X7);u&&(d["!autofilter"]=iC(u[0]));var o=[],s=h.match(B7);if(s)for(y=0;y!=s.length;++y)o[y]=Rr(s[y].slice(s[y].indexOf('"')+1));var c=h.match(j7);c&&q7(d,c,n);var f=h.match(z7);if(f&&(d["!margins"]=eC(Qt(f[0]))),!d["!ref"]&&m.e.c>=m.s.c&&m.e.r>=m.s.r&&(d["!ref"]=pr(m)),r.sheetRows>0&&d["!ref"]){var v=Rr(d["!ref"]);r.sheetRows<=+v.e.r&&(v.e.r=r.sheetRows-1,v.e.r>m.e.r&&(v.e.r=m.e.r),v.e.rm.e.c&&(v.e.c=m.e.c),v.e.c0&&(d["!cols"]=S),o.length>0&&(d["!merges"]=o),d}function G7(t){if(t.length===0)return"";for(var r='',e=0;e!=t.length;++e)r+='';return r+""}function d0(t,r,e,n){var i=Qt(t);e.Sheets[n]||(e.Sheets[n]={}),i.codeName&&(e.Sheets[n].CodeName=wr(Nr(i.codeName)))}function K7(t,r,e,n,i){d0(t.slice(0,t.indexOf(">")),e,n,i)}function Y7(t,r,e,n,i){var a=!1,l={},d=null;if(n.bookType!=="xlsx"&&r.vbaraw){var m=r.SheetNames[e];try{r.Workbook&&(m=r.Workbook.Sheets[e].CodeName||m)}catch{}a=!0,l.codeName=xa(Ir(m))}if(t&&t["!outline"]){var b={summaryBelow:1,summaryRight:1};t["!outline"].above&&(b.summaryBelow=0),t["!outline"].left&&(b.summaryRight=0),d=(d||"")+Ft("outlinePr",null,b)}!a&&!d||(i[i.length]=Ft("sheetPr",d,l))}var Z7=["objects","scenarios","selectLockedCells","selectUnlockedCells"],J7=["formatColumns","formatRows","formatCells","insertColumns","insertRows","insertHyperlinks","deleteColumns","deleteRows","sort","autoFilter","pivotTables"];function Q7(t){var r={sheet:1};return Z7.forEach(function(e){t[e]!=null&&t[e]&&(r[e]="1")}),J7.forEach(function(e){t[e]!=null&&!t[e]&&(r[e]="0")}),t.password&&(r.password=s0(t.password).toString(16).toUpperCase()),Ft("sheetProtection",null,r)}function q7(t,r,e){for(var n=Array.isArray(t),i=0;i!=r.length;++i){var a=Qt(Nr(r[i]),!0);if(!a.ref)return;var l=((e||{})["!id"]||[])[a.id];l?(a.Target=l.Target,a.location&&(a.Target+="#"+wr(a.location))):(a.Target="#"+wr(a.location),l={Target:a.Target,TargetMode:"Internal"}),a.Rel=l,a.tooltip&&(a.Tooltip=a.tooltip,delete a.tooltip);for(var d=Rr(a.ref),m=d.s.r;m<=d.e.r;++m)for(var b=d.s.c;b<=d.e.c;++b){var h=er({c:b,r:m});n?(t[m]||(t[m]=[]),t[m][b]||(t[m][b]={t:"z",v:void 0}),t[m][b].l=a):(t[h]||(t[h]={t:"z",v:void 0}),t[h].l=a)}}}function eC(t){var r={};return["left","right","top","bottom","header","footer"].forEach(function(e){t[e]&&(r[e]=parseFloat(t[e]))}),r}function tC(t){return Bs(t),Ft("pageMargins",null,t)}function rC(t,r){for(var e=!1,n=0;n!=r.length;++n){var i=Qt(r[n],!0);i.hidden&&(i.hidden=Ur(i.hidden));var a=parseInt(i.min,10)-1,l=parseInt(i.max,10)-1;for(i.outlineLevel&&(i.level=+i.outlineLevel||0),delete i.min,delete i.max,i.width=+i.width,!e&&i.width&&(e=!0,o0(i.width)),ps(i);a<=l;)t[a++]=Hr(i)}}function nC(t,r){for(var e=[""],n,i=0;i!=r.length;++i)(n=r[i])&&(e[e.length]=Ft("col",null,Bc(i,n)));return e[e.length]="",e.join("")}function iC(t){var r={ref:(t.match(/ref="([^"]*)"/)||[])[1]};return r}function aC(t,r,e,n){var i=typeof t.ref=="string"?t.ref:pr(t.ref);e.Workbook||(e.Workbook={Sheets:[]}),e.Workbook.Names||(e.Workbook.Names=[]);var a=e.Workbook.Names,l=Ki(i);l.s.r==l.e.r&&(l.e.r=Ki(r["!ref"]).e.r,i=pr(l));for(var d=0;da-z][^>]*)?\/?>/;function oC(t,r){r.Views||(r.Views=[{}]),(t.match(sC)||[]).forEach(function(e,n){var i=Qt(e);r.Views[n]||(r.Views[n]={}),+i.zoomScale&&(r.Views[n].zoom=+i.zoomScale),Ur(i.rightToLeft)&&(r.Views[n].RTL=!0)})}function fC(t,r,e,n){var i={workbookViewId:"0"};return(((n||{}).Workbook||{}).Views||[])[0]&&(i.rightToLeft=n.Workbook.Views[0].RTL?"1":"0"),Ft("sheetViews",Ft("sheetView",null,i),{})}function uC(t,r,e,n){if(t.c&&e["!comments"].push([r,t.c]),t.v===void 0&&typeof t.f!="string"||t.t==="z"&&!t.f)return"";var i="",a=t.t,l=t.v;if(t.t!=="z")switch(t.t){case"b":i=t.v?"1":"0";break;case"n":i=""+t.v;break;case"e":i=Ga[t.v];break;case"d":n&&n.cellDates?i=Vr(t.v,-1).toISOString():(t=Hr(t),t.t="n",i=""+(t.v=Mn(Vr(t.v)))),typeof t.z>"u"&&(t.z=Jt[14]);break;default:i=t.v;break}var d=In("v",Ir(i)),m={r},b=gs(n.cellXfs,t,n);switch(b!==0&&(m.s=b),t.t){case"n":break;case"d":m.t="d";break;case"b":m.t="b";break;case"e":m.t="e";break;case"z":break;default:if(t.v==null){delete t.t;break}if(t.v.length>32767)throw new Error("Text length must not exceed 32767 characters");if(n&&n.bookSST){d=In("v",""+h0(n.Strings,t.v,n.revStrings)),m.t="s";break}m.t="str";break}if(t.t!=a&&(t.t=a,t.v=l),typeof t.f=="string"&&t.f){var h=t.F&&t.F.slice(0,r.length)==r?{t:"array",ref:t.F}:null;d=Ft("f",Ir(t.f),h)+(t.v!=null?d:"")}return t.l&&e["!links"].push([r,t.l]),t.D&&(m.cm=1),Ft("c",d,m)}var cC=function(){var t=/<(?:\w+:)?c[ \/>]/,r=/<\/(?:\w+:)?row>/,e=/r=["']([^"']*)["']/,n=/<(?:\w+:)?is>([\S\s]*?)<\/(?:\w+:)?is>/,i=/ref=["']([^"']*)["']/,a=If("v"),l=If("f");return function(m,b,h,_,g,y){for(var x=0,p="",S=[],w=[],u=0,o=0,s=0,c="",f,v,k=0,T=0,C,D,j=0,L=0,M=Array.isArray(y.CellXf),B,R=[],P=[],O=Array.isArray(b),F=[],H={},V=!1,z=!!h.sheetStubs,X=m.split(r),I=0,N=X.length;I!=N;++I){p=X[I].trim();var U=p.length;if(U!==0){var G=0;e:for(x=0;x":if(p[x-1]!="/"){++x;break e}if(h&&h.cellStyles){if(v=Qt(p.slice(G,x),!0),k=v.r!=null?parseInt(v.r,10):k+1,T=-1,h.sheetRows&&h.sheetRows=x)break;if(v=Qt(p.slice(G,x),!0),k=v.r!=null?parseInt(v.r,10):k+1,T=-1,!(h.sheetRows&&h.sheetRowsk-1&&(_.s.r=k-1),_.e.r":"")+p,w!=null&&w.length===2){for(u=0,c=w[1],o=0;o!=c.length&&!((s=c.charCodeAt(o)-64)<1||s>26);++o)u=26*u+s;--u,T=u}else++T;for(o=0;o!=p.length&&p.charCodeAt(o)!==62;++o);if(++o,v=Qt(p.slice(0,o),!0),v.r||(v.r=er({r:k-1,c:T})),c=p.slice(o),f={t:""},(w=c.match(a))!=null&&w[1]!==""&&(f.v=wr(w[1])),h.cellFormula){if((w=c.match(l))!=null&&w[1]!==""){if(f.f=wr(Nr(w[1])).replace(/\r\n/g,` +`),h.xlfn||(f.f=jv(f.f)),w[0].indexOf('t="array"')>-1)f.F=(c.match(i)||[])[1],f.F.indexOf(":")>-1&&R.push([Rr(f.F),f.F]);else if(w[0].indexOf('t="shared"')>-1){D=Qt(w[0]);var re=wr(Nr(w[1]));h.xlfn||(re=jv(re)),P[parseInt(D.si,10)]=[D,re,v.r]}}else(w=c.match(/]*\/>/))&&(D=Qt(w[0]),P[D.si]&&(f.f=sO(P[D.si][1],P[D.si][2],v.r)));var ne=wn(v.r);for(o=0;o=R[o][0].s.r&&ne.r<=R[o][0].e.r&&ne.c>=R[o][0].s.c&&ne.c<=R[o][0].e.c&&(f.F=R[o][1])}if(v.t==null&&f.v===void 0)if(f.f||f.F)f.v=0,f.t="n";else if(z)f.t="z";else continue;else f.t=v.t||"n";switch(_.s.c>T&&(_.s.c=T),_.e.c"u"){if(!z)continue;f.t="z"}else C=Tf[parseInt(f.v,10)],f.v=C.t,f.r=C.r,h.cellHTML&&(f.h=C.h);break;case"str":f.t="s",f.v=f.v!=null?Nr(f.v):"",h.cellHTML&&(f.h=Gh(f.v));break;case"inlineStr":w=c.match(n),f.t="s",w!=null&&(C=a0(w[1]))?(f.v=C.t,h.cellHTML&&(f.h=C.h)):f.v="";break;case"b":f.v=Ur(f.v);break;case"d":h.cellDates?f.v=Vr(f.v,1):(f.v=Mn(Vr(f.v,1)),f.t="n");break;case"e":(!h||h.cellText!==!1)&&(f.w=f.v),f.v=h1[f.v];break}if(j=L=0,B=null,M&&v.s!==void 0&&(B=y.CellXf[v.s],B!=null&&(B.numFmtId!=null&&(j=B.numFmtId),h.cellStyles&&B.fillId!=null&&(L=B.fillId))),uy(f,j,L,h,g,y),h.cellDates&&M&&f.t=="n"&&zo(Jt[j])&&(f.t="d",f.v=Ic(f.v)),v.cm&&h.xlmeta){var ge=(h.xlmeta.Cell||[])[+v.cm-1];ge&&ge.type=="XLDAPR"&&(f.D=!0)}if(O){var ee=wn(v.r);b[ee.r]||(b[ee.r]=[]),b[ee.r][ee.c]=f}else b[v.r]=f}}}}F.length>0&&(b["!rows"]=F)}}();function lC(t,r,e,n){var i=[],a=[],l=Rr(t["!ref"]),d="",m,b="",h=[],_=0,g=0,y=t["!rows"],x=Array.isArray(t),p={r:b},S,w=-1;for(g=l.s.c;g<=l.e.c;++g)h[g]=mn(g);for(_=l.s.r;_<=l.e.r;++_){for(a=[],b=Cn(_),g=l.s.c;g<=l.e.c;++g){m=h[g]+b;var u=x?(t[_]||[])[g]:t[m];u!==void 0&&(d=uC(u,m,t,r))!=null&&a.push(d)}(a.length>0||y&&y[_])&&(p={r:b},y&&y[_]&&(S=y[_],S.hidden&&(p.hidden=1),w=-1,S.hpx?w=Uf(S.hpx):S.hpt&&(w=S.hpt),w>-1&&(p.ht=w,p.customHeight=1),S.level&&(p.outlineLevel=S.level)),i[i.length]=Ft("row",a.join(""),p))}if(y)for(;_-1&&(p.ht=w,p.customHeight=1),S.level&&(p.outlineLevel=S.level),i[i.length]=Ft("row","",p));return i.join("")}function ly(t,r,e,n){var i=[fn,Ft("worksheet",null,{xmlns:Vs[0],"xmlns:r":xn.r})],a=e.SheetNames[t],l=0,d="",m=e.Sheets[a];m==null&&(m={});var b=m["!ref"]||"A1",h=Rr(b);if(h.e.c>16383||h.e.r>1048575){if(r.WTF)throw new Error("Range "+b+" exceeds format limit A1:XFD1048576");h.e.c=Math.min(h.e.c,16383),h.e.r=Math.min(h.e.c,1048575),b=pr(h)}n||(n={}),m["!comments"]=[];var _=[];Y7(m,e,t,r,i),i[i.length]=Ft("dimension",null,{ref:b}),i[i.length]=fC(m,r,t,e),r.sheetFormat&&(i[i.length]=Ft("sheetFormatPr",null,{defaultRowHeight:r.sheetFormat.defaultRowHeight||"16",baseColWidth:r.sheetFormat.baseColWidth||"10",outlineLevelRow:r.sheetFormat.outlineLevelRow||"7"})),m["!cols"]!=null&&m["!cols"].length>0&&(i[i.length]=nC(m,m["!cols"])),i[l=i.length]="",m["!links"]=[],m["!ref"]!=null&&(d=lC(m,r),d.length>0&&(i[i.length]=d)),i.length>l+1&&(i[i.length]="",i[l]=i[l].replace("/>",">")),m["!protect"]&&(i[i.length]=Q7(m["!protect"])),m["!autofilter"]!=null&&(i[i.length]=aC(m["!autofilter"],m,e,t)),m["!merges"]!=null&&m["!merges"].length>0&&(i[i.length]=G7(m["!merges"]));var g=-1,y,x=-1;return m["!links"].length>0&&(i[i.length]="",m["!links"].forEach(function(p){p[1].Target&&(y={ref:p[0]},p[1].Target.charAt(0)!="#"&&(x=Fr(n,-1,Ir(p[1].Target).replace(/#.*$/,""),hr.HLINK),y["r:id"]="rId"+x),(g=p[1].Target.indexOf("#"))>-1&&(y.location=Ir(p[1].Target.slice(g+1))),p[1].Tooltip&&(y.tooltip=Ir(p[1].Tooltip)),i[i.length]=Ft("hyperlink",null,y))}),i[i.length]=""),delete m["!links"],m["!margins"]!=null&&(i[i.length]=tC(m["!margins"])),(!r||r.ignoreEC||r.ignoreEC==null)&&(i[i.length]=In("ignoredErrors",Ft("ignoredError",null,{numberStoredAsText:1,sqref:b}))),_.length>0&&(x=Fr(n,-1,"../drawings/drawing"+(t+1)+".xml",hr.DRAW),i[i.length]=Ft("drawing",null,{"r:id":"rId"+x}),m["!drawing"]=_),m["!comments"].length>0&&(x=Fr(n,-1,"../drawings/vmlDrawing"+(t+1)+".vml",hr.VML),i[i.length]=Ft("legacyDrawing",null,{"r:id":"rId"+x}),m["!legacy"]=x),i.length>1&&(i[i.length]="",i[1]=i[1].replace("/>",">")),i.join("")}function hC(t,r){var e={},n=t.l+r;e.r=t.read_shift(4),t.l+=4;var i=t.read_shift(2);t.l+=1;var a=t.read_shift(1);return t.l=n,a&7&&(e.level=a&7),a&16&&(e.hidden=!0),a&32&&(e.hpt=i/20),e}function dC(t,r,e){var n=lt(145),i=(e["!rows"]||[])[t]||{};n.write_shift(4,t),n.write_shift(4,0);var a=320;i.hpx?a=Uf(i.hpx)*20:i.hpt&&(a=i.hpt*20),n.write_shift(2,a),n.write_shift(1,0);var l=0;i.level&&(l|=i.level),i.hidden&&(l|=16),(i.hpx||i.hpt)&&(l|=32),n.write_shift(1,l),n.write_shift(1,0);var d=0,m=n.l;n.l+=4;for(var b={r:t,c:0},h=0;h<16;++h)if(!(r.s.c>h+1<<10||r.e.cn.l?n.slice(0,n.l):n}function pC(t,r,e,n){var i=dC(n,e,r);(i.length>17||(r["!rows"]||[])[n])&&xt(t,0,i)}var vC=Zs,mC=Vo;function yC(){}function gC(t,r){var e={},n=t[t.l];return++t.l,e.above=!(n&64),e.left=!(n&128),t.l+=18,e.name=x6(t),e}function bC(t,r,e){e==null&&(e=lt(84+4*t.length));var n=192;r&&(r.above&&(n&=-65),r.left&&(n&=-129)),e.write_shift(1,n);for(var i=1;i<3;++i)e.write_shift(1,0);return wc({auto:1},e),e.write_shift(-4,-1),e.write_shift(-4,-1),o1(t,e),e.slice(0,e.l)}function _C(t){var r=Yi(t);return[r]}function xC(t,r,e){return e==null&&(e=lt(8)),Gs(r,e)}function wC(t){var r=Ks(t);return[r]}function SC(t,r,e){return e==null&&(e=lt(4)),Ys(r,e)}function kC(t){var r=Yi(t),e=t.read_shift(1);return[r,e,"b"]}function EC(t,r,e){return e==null&&(e=lt(9)),Gs(r,e),e.write_shift(1,t.v?1:0),e}function TC(t){var r=Ks(t),e=t.read_shift(1);return[r,e,"b"]}function OC(t,r,e){return e==null&&(e=lt(5)),Ys(r,e),e.write_shift(1,t.v?1:0),e}function CC(t){var r=Yi(t),e=t.read_shift(1);return[r,e,"e"]}function RC(t,r,e){return e==null&&(e=lt(9)),Gs(r,e),e.write_shift(1,t.v),e}function AC(t){var r=Ks(t),e=t.read_shift(1);return[r,e,"e"]}function PC(t,r,e){return e==null&&(e=lt(8)),Ys(r,e),e.write_shift(1,t.v),e.write_shift(2,0),e.write_shift(1,0),e}function FC(t){var r=Yi(t),e=t.read_shift(4);return[r,e,"s"]}function IC(t,r,e){return e==null&&(e=lt(12)),Gs(r,e),e.write_shift(4,r.v),e}function MC(t){var r=Ks(t),e=t.read_shift(4);return[r,e,"s"]}function DC(t,r,e){return e==null&&(e=lt(8)),Ys(r,e),e.write_shift(4,r.v),e}function NC(t){var r=Yi(t),e=Xn(t);return[r,e,"n"]}function BC(t,r,e){return e==null&&(e=lt(16)),Gs(r,e),Hs(t.v,e),e}function hy(t){var r=Ks(t),e=Xn(t);return[r,e,"n"]}function LC(t,r,e){return e==null&&(e=lt(12)),Ys(r,e),Hs(t.v,e),e}function jC(t){var r=Yi(t),e=e0(t);return[r,e,"n"]}function UC(t,r,e){return e==null&&(e=lt(12)),Gs(r,e),f1(t.v,e),e}function HC(t){var r=Ks(t),e=e0(t);return[r,e,"n"]}function XC(t,r,e){return e==null&&(e=lt(8)),Ys(r,e),f1(t.v,e),e}function zC(t){var r=Yi(t),e=Jh(t);return[r,e,"is"]}function WC(t){var r=Yi(t),e=zn(t);return[r,e,"str"]}function VC(t,r,e){return e==null&&(e=lt(12+4*t.v.length)),Gs(r,e),On(t.v,e),e.length>e.l?e.slice(0,e.l):e}function $C(t){var r=Ks(t),e=zn(t);return[r,e,"str"]}function GC(t,r,e){return e==null&&(e=lt(8+4*t.v.length)),Ys(r,e),On(t.v,e),e.length>e.l?e.slice(0,e.l):e}function KC(t,r,e){var n=t.l+r,i=Yi(t);i.r=e["!row"];var a=t.read_shift(1),l=[i,a,"b"];if(e.cellFormula){t.l+=2;var d=Nc(t,n-t.l,e);l[3]=Un(d,null,i,e.supbooks,e)}else t.l=n;return l}function YC(t,r,e){var n=t.l+r,i=Yi(t);i.r=e["!row"];var a=t.read_shift(1),l=[i,a,"e"];if(e.cellFormula){t.l+=2;var d=Nc(t,n-t.l,e);l[3]=Un(d,null,i,e.supbooks,e)}else t.l=n;return l}function ZC(t,r,e){var n=t.l+r,i=Yi(t);i.r=e["!row"];var a=Xn(t),l=[i,a,"n"];if(e.cellFormula){t.l+=2;var d=Nc(t,n-t.l,e);l[3]=Un(d,null,i,e.supbooks,e)}else t.l=n;return l}function JC(t,r,e){var n=t.l+r,i=Yi(t);i.r=e["!row"];var a=zn(t),l=[i,a,"str"];if(e.cellFormula){t.l+=2;var d=Nc(t,n-t.l,e);l[3]=Un(d,null,i,e.supbooks,e)}else t.l=n;return l}var QC=Zs,qC=Vo;function e9(t,r){return r==null&&(r=lt(4)),r.write_shift(4,t),r}function t9(t,r){var e=t.l+r,n=Zs(t),i=Qh(t),a=zn(t),l=zn(t),d=zn(t);t.l=e;var m={rfx:n,relId:i,loc:a,display:d};return l&&(m.Tooltip=l),m}function r9(t,r){var e=lt(50+4*(t[1].Target.length+(t[1].Tooltip||"").length));Vo({s:wn(t[0]),e:wn(t[0])},e),qh("rId"+r,e);var n=t[1].Target.indexOf("#"),i=n==-1?"":t[1].Target.slice(n+1);return On(i||"",e),On(t[1].Tooltip||"",e),On("",e),e.slice(0,e.l)}function n9(){}function i9(t,r,e){var n=t.l+r,i=u1(t),a=t.read_shift(1),l=[i];if(l[2]=a,e.cellFormula){var d=C7(t,n-t.l,e);l[1]=d}else t.l=n;return l}function a9(t,r,e){var n=t.l+r,i=Zs(t),a=[i];if(e.cellFormula){var l=A7(t,n-t.l,e);a[1]=l,t.l=n}else t.l=n;return a}function s9(t,r,e){e==null&&(e=lt(18));var n=Bc(t,r);e.write_shift(-4,t),e.write_shift(-4,t),e.write_shift(4,(n.width||10)*256),e.write_shift(4,0);var i=0;return r.hidden&&(i|=1),typeof n.width=="number"&&(i|=2),r.level&&(i|=r.level<<8),e.write_shift(2,i),e}var dy=["left","right","top","bottom","header","footer"];function o9(t){var r={};return dy.forEach(function(e){r[e]=Xn(t)}),r}function f9(t,r){return r==null&&(r=lt(6*8)),Bs(t),dy.forEach(function(e){Hs(t[e],r)}),r}function u9(t){var r=t.read_shift(2);return t.l+=28,{RTL:r&32}}function c9(t,r,e){e==null&&(e=lt(30));var n=924;return(((r||{}).Views||[])[0]||{}).RTL&&(n|=32),e.write_shift(2,n),e.write_shift(4,0),e.write_shift(4,0),e.write_shift(4,0),e.write_shift(1,0),e.write_shift(1,0),e.write_shift(2,0),e.write_shift(2,100),e.write_shift(2,0),e.write_shift(2,0),e.write_shift(2,0),e.write_shift(4,0),e}function l9(t){var r=lt(24);return r.write_shift(4,4),r.write_shift(4,1),Vo(t,r),r}function h9(t,r){return r==null&&(r=lt(16*4+2)),r.write_shift(2,t.password?s0(t.password):0),r.write_shift(4,1),[["objects",!1],["scenarios",!1],["formatCells",!0],["formatColumns",!0],["formatRows",!0],["insertColumns",!0],["insertRows",!0],["insertHyperlinks",!0],["deleteColumns",!0],["deleteRows",!0],["selectLockedCells",!1],["sort",!0],["autoFilter",!0],["pivotTables",!0],["selectUnlockedCells",!1]].forEach(function(e){e[1]?r.write_shift(4,t[e[0]]!=null&&!t[e[0]]?1:0):r.write_shift(4,t[e[0]]!=null&&t[e[0]]?0:1)}),r}function d9(){}function p9(){}function v9(t,r,e,n,i,a,l){if(!t)return t;var d=r||{};n||(n={"!id":{}});var m=d.dense?[]:{},b,h={s:{r:2e6,c:2e6},e:{r:0,c:0}},_=!1,g=!1,y,x,p,S,w,u,o,s,c,f=[];d.biff=12,d["!row"]=0;var v=0,k=!1,T=[],C={},D=d.supbooks||i.supbooks||[[]];if(D.sharedf=C,D.arrayf=T,D.SheetNames=i.SheetNames||i.Sheets.map(function(O){return O.name}),!d.supbooks&&(d.supbooks=D,i.Names))for(var j=0;j=z[0].s.r&&y.r<=z[0].e.r&&w>=z[0].s.c&&w<=z[0].e.c&&(x.F=pr(z[0]),k=!0)}!k&&F.length>3&&(x.f=F[3])}if(h.s.r>y.r&&(h.s.r=y.r),h.s.c>w&&(h.s.c=w),h.e.ry.r&&(h.s.r=y.r),h.s.c>w&&(h.s.c=w),h.e.r=F.s;)L[F.e--]={width:F.w/256,hidden:!!(F.flags&1),level:F.level},B||(B=!0,o0(F.w/256)),ps(L[F.e+1]);break;case 161:m["!autofilter"]={ref:pr(F)};break;case 476:m["!margins"]=F;break;case 147:i.Sheets[e]||(i.Sheets[e]={}),F.name&&(i.Sheets[e].CodeName=F.name),(F.above||F.left)&&(m["!outline"]={above:F.above,left:F.left});break;case 137:i.Views||(i.Views=[{}]),i.Views[0]||(i.Views[0]={}),F.RTL&&(i.Views[0].RTL=!0);break;case 485:break;case 64:case 1053:break;case 151:break;case 152:case 175:case 644:case 625:case 562:case 396:case 1112:case 1146:case 471:case 1050:case 649:case 1105:case 589:case 607:case 564:case 1055:case 168:case 174:case 1180:case 499:case 507:case 550:case 171:case 167:case 1177:case 169:case 1181:case 551:case 552:case 661:case 639:case 478:case 537:case 477:case 536:case 1103:case 680:case 1104:case 1024:case 663:case 535:case 678:case 504:case 1043:case 428:case 170:case 3072:case 50:case 2070:case 1045:break;case 35:_=!0;break;case 36:_=!1;break;case 37:_=!0;break;case 38:_=!1;break;default:if(!H.T){if(!_||d.WTF)throw new Error("Unexpected record 0x"+V.toString(16))}}},d),delete d.supbooks,delete d["!row"],!m["!ref"]&&(h.s.r<2e6||b&&(b.e.r>0||b.e.c>0||b.s.r>0||b.s.c>0))&&(m["!ref"]=pr(b||h)),d.sheetRows&&m["!ref"]){var P=Rr(m["!ref"]);d.sheetRows<=+P.e.r&&(P.e.r=d.sheetRows-1,P.e.r>h.e.r&&(P.e.r=h.e.r),P.e.rh.e.c&&(P.e.c=h.e.c),P.e.c0&&(m["!merges"]=f),L.length>0&&(m["!cols"]=L),M.length>0&&(m["!rows"]=M),m}function m9(t,r,e,n,i,a,l){if(r.v===void 0)return!1;var d="";switch(r.t){case"b":d=r.v?"1":"0";break;case"d":r=Hr(r),r.z=r.z||Jt[14],r.v=Mn(Vr(r.v)),r.t="n";break;case"n":case"e":d=""+r.v;break;default:d=r.v;break}var m={r:e,c:n};switch(m.s=gs(i.cellXfs,r,i),r.l&&a["!links"].push([er(m),r.l]),r.c&&a["!comments"].push([er(m),r.c]),r.t){case"s":case"str":return i.bookSST?(d=h0(i.Strings,r.v,i.revStrings),m.t="s",m.v=d,l?xt(t,18,DC(r,m)):xt(t,7,IC(r,m))):(m.t="str",l?xt(t,17,GC(r,m)):xt(t,6,VC(r,m))),!0;case"n":return r.v==(r.v|0)&&r.v>-1e3&&r.v<1e3?l?xt(t,13,XC(r,m)):xt(t,2,UC(r,m)):l?xt(t,16,LC(r,m)):xt(t,5,BC(r,m)),!0;case"b":return m.t="b",l?xt(t,15,OC(r,m)):xt(t,4,EC(r,m)),!0;case"e":return m.t="e",l?xt(t,14,PC(r,m)):xt(t,3,RC(r,m)),!0}return l?xt(t,12,SC(r,m)):xt(t,1,xC(r,m)),!0}function y9(t,r,e,n){var i=Rr(r["!ref"]||"A1"),a,l="",d=[];xt(t,145);var m=Array.isArray(r),b=i.e.r;r["!rows"]&&(b=Math.max(i.e.r,r["!rows"].length-1));for(var h=i.s.r;h<=b;++h){l=Cn(h),pC(t,r,i,h);var _=!1;if(h<=i.e.r)for(var g=i.s.c;g<=i.e.c;++g){h===i.s.r&&(d[g]=mn(g)),a=d[g]+l;var y=m?(r[h]||[])[g]:r[a];if(!y){_=!1;continue}_=m9(t,y,h,g,n,r,_)}}xt(t,146)}function g9(t,r){!r||!r["!merges"]||(xt(t,177,e9(r["!merges"].length)),r["!merges"].forEach(function(e){xt(t,176,qC(e))}),xt(t,178))}function b9(t,r){!r||!r["!cols"]||(xt(t,390),r["!cols"].forEach(function(e,n){e&&xt(t,60,s9(n,e))}),xt(t,391))}function _9(t,r){!r||!r["!ref"]||(xt(t,648),xt(t,649,l9(Rr(r["!ref"]))),xt(t,650))}function x9(t,r,e){r["!links"].forEach(function(n){if(n[1].Target){var i=Fr(e,-1,n[1].Target.replace(/#.*$/,""),hr.HLINK);xt(t,494,r9(n,i))}}),delete r["!links"]}function w9(t,r,e,n){if(r["!comments"].length>0){var i=Fr(n,-1,"../drawings/vmlDrawing"+(e+1)+".vml",hr.VML);xt(t,551,qh("rId"+i)),r["!legacy"]=i}}function S9(t,r,e,n){if(r["!autofilter"]){var i=r["!autofilter"],a=typeof i.ref=="string"?i.ref:pr(i.ref);e.Workbook||(e.Workbook={Sheets:[]}),e.Workbook.Names||(e.Workbook.Names=[]);var l=e.Workbook.Names,d=Ki(a);d.s.r==d.e.r&&(d.e.r=Ki(r["!ref"]).e.r,a=pr(d));for(var m=0;m16383||m.e.r>1048575){if(r.WTF)throw new Error("Range "+(l["!ref"]||"A1")+" exceeds format limit A1:XFD1048576");m.e.c=Math.min(m.e.c,16383),m.e.r=Math.min(m.e.c,1048575)}return l["!links"]=[],l["!comments"]=[],xt(i,129),(e.vbaraw||l["!outline"])&&xt(i,147,bC(d,l["!outline"])),xt(i,148,mC(m)),k9(i,l,e.Workbook),b9(i,l),y9(i,l,t,r),E9(i,l),S9(i,l,e,t),g9(i,l),x9(i,l,n),l["!margins"]&&xt(i,476,f9(l["!margins"])),(!r||r.ignoreEC||r.ignoreEC==null)&&_9(i,l),w9(i,l,t,n),xt(i,130),i.end()}function O9(t){var r=[],e=t.match(/^/),n;(t.match(/(.*?)<\/c:pt>/mg)||[]).forEach(function(a){var l=a.match(/(.*)<\/c:v><\/c:pt>/);l&&(r[+l[1]]=e?+l[2]:l[2])});var i=wr((t.match(/([\s\S]*?)<\/c:formatCode>/)||["","General"])[1]);return(t.match(/(.*?)<\/c:f>/mg)||[]).forEach(function(a){n=a.replace(/<.*?>/g,"")}),[r,i,n]}function C9(t,r,e,n,i,a){var l=a||{"!type":"chart"};if(!t)return a;var d=0,m=0,b="A",h={s:{r:2e6,c:2e6},e:{r:0,c:0}};return(t.match(/[\s\S]*?<\/c:numCache>/gm)||[]).forEach(function(_){var g=O9(_);h.s.r=h.s.c=0,h.e.c=d,b=mn(d),g[0].forEach(function(y,x){l[b+Cn(x)]={t:"n",v:y,z:g[1]},m=x}),h.e.r0&&(l["!ref"]=pr(h)),l}function R9(t,r,e,n,i){if(!t)return t;n||(n={"!id":{}});var a={"!type":"chart","!drawel":null,"!rel":""},l,d=t.match(cy);return d&&d0(d[0],a,i,e),(l=t.match(/drawing r:id="(.*?)"/))&&(a["!rel"]=l[1]),n["!id"][a["!rel"]]&&(a["!drawel"]=n["!id"][a["!rel"]]),a}function A9(t,r){t.l+=10;var e=zn(t);return{name:e}}function P9(t,r,e,n,i){if(!t)return t;n||(n={"!id":{}});var a={"!type":"chart","!drawel":null,"!rel":""},l=!1;return $a(t,function(m,b,h){switch(h){case 550:a["!rel"]=m;break;case 651:i.Sheets[e]||(i.Sheets[e]={}),m.name&&(i.Sheets[e].CodeName=m.name);break;case 562:case 652:case 669:case 679:case 551:case 552:case 476:case 3072:break;case 35:l=!0;break;case 36:l=!1;break;case 37:break;case 38:break;default:if(!(b.T>0)){if(!(b.T<0)){if(!l||r.WTF)throw new Error("Unexpected record 0x"+h.toString(16))}}}},r),n["!id"][a["!rel"]]&&(a["!drawel"]=n["!id"][a["!rel"]]),a}var p0=[["allowRefreshQuery",!1,"bool"],["autoCompressPictures",!0,"bool"],["backupFile",!1,"bool"],["checkCompatibility",!1,"bool"],["CodeName",""],["date1904",!1,"bool"],["defaultThemeVersion",0,"int"],["filterPrivacy",!1,"bool"],["hidePivotFieldList",!1,"bool"],["promptedSolutions",!1,"bool"],["publishItems",!1,"bool"],["refreshAllConnections",!1,"bool"],["saveExternalLinkValues",!0,"bool"],["showBorderUnselectedTables",!0,"bool"],["showInkAnnotation",!0,"bool"],["showObjects","all"],["showPivotChartFilter",!1,"bool"],["updateLinks","userSet"]],F9=[["activeTab",0,"int"],["autoFilterDateGrouping",!0,"bool"],["firstSheet",0,"int"],["minimized",!1,"bool"],["showHorizontalScroll",!0,"bool"],["showSheetTabs",!0,"bool"],["showVerticalScroll",!0,"bool"],["tabRatio",600,"int"],["visibility","visible"]],I9=[],M9=[["calcCompleted","true"],["calcMode","auto"],["calcOnSave","true"],["concurrentCalc","true"],["fullCalcOnLoad","false"],["fullPrecision","true"],["iterate","false"],["iterateCount","100"],["iterateDelta","0.001"],["refMode","A1"]];function Wv(t,r){for(var e=0;e!=t.length;++e)for(var n=t[e],i=0;i!=r.length;++i){var a=r[i];if(n[a[0]]==null)n[a[0]]=a[1];else switch(a[2]){case"bool":typeof n[a[0]]=="string"&&(n[a[0]]=Ur(n[a[0]]));break;case"int":typeof n[a[0]]=="string"&&(n[a[0]]=parseInt(n[a[0]],10));break}}}function Vv(t,r){for(var e=0;e!=r.length;++e){var n=r[e];if(t[n[0]]==null)t[n[0]]=n[1];else switch(n[2]){case"bool":typeof t[n[0]]=="string"&&(t[n[0]]=Ur(t[n[0]]));break;case"int":typeof t[n[0]]=="string"&&(t[n[0]]=parseInt(t[n[0]],10));break}}}function py(t){Vv(t.WBProps,p0),Vv(t.CalcPr,M9),Wv(t.WBView,F9),Wv(t.Sheets,I9),Lo.date1904=Ur(t.WBProps.date1904)}function D9(t){return!t.Workbook||!t.Workbook.WBProps?"false":Ur(t.Workbook.WBProps.date1904)?"true":"false"}var N9="][*?/\\".split("");function vy(t,r){if(t.length>31){if(r)return!1;throw new Error("Sheet names cannot exceed 31 chars")}var e=!0;return N9.forEach(function(n){if(t.indexOf(n)!=-1){if(!r)throw new Error("Sheet name cannot contain : \\ / ? * [ ]");e=!1}}),e}function B9(t,r,e){t.forEach(function(n,i){vy(n);for(var a=0;a22)throw new Error("Bad Code Name: Worksheet"+l)}})}function L9(t){if(!t||!t.SheetNames||!t.Sheets)throw new Error("Invalid Workbook");if(!t.SheetNames.length)throw new Error("Workbook is empty");var r=t.Workbook&&t.Workbook.Sheets||[];B9(t.SheetNames,r,!!t.vbaraw);for(var e=0;e":break;case"":case"":break;case"":break;case"":p0.forEach(function(_){if(h[_[0]]!=null)switch(_[2]){case"bool":e.WBProps[_[0]]=Ur(h[_[0]]);break;case"int":e.WBProps[_[0]]=parseInt(h[_[0]],10);break;default:e.WBProps[_[0]]=h[_[0]]}}),h.codeName&&(e.WBProps.CodeName=Nr(h.codeName));break;case"":break;case"":break;case"":case"":break;case"":delete h[0],e.WBView.push(h);break;case"":break;case"":case"":break;case"":break;case"":break;case"":case"":break;case"":break;case"":case"":n=!1;break;case"":a.Ref=wr(Nr(t.slice(l,b))),e.Names.push(a);break;case"":break;case"":delete h[0],e.CalcPr=h;break;case"":break;case"":case"":case"":break;case"":case"":case"":break;case"":case"":break;case"":break;case"":break;case"":case"":break;case"":case"":case"":break;case"":n=!1;break;case"":n=!0;break;case"":n=!1;break;case"0,n={codeName:"ThisWorkbook"};t.Workbook&&t.Workbook.WBProps&&(p0.forEach(function(d){t.Workbook.WBProps[d[0]]!=null&&t.Workbook.WBProps[d[0]]!=d[1]&&(n[d[0]]=t.Workbook.WBProps[d[0]])}),t.Workbook.WBProps.CodeName&&(n.codeName=t.Workbook.WBProps.CodeName,delete n.CodeName)),r[r.length]=Ft("workbookPr",null,n);var i=t.Workbook&&t.Workbook.Sheets||[],a=0;if(i&&i[0]&&i[0].Hidden){for(r[r.length]="",a=0;a!=t.SheetNames.length&&!(!i[a]||!i[a].Hidden);++a);a==t.SheetNames.length&&(a=0),r[r.length]='',r[r.length]=""}for(r[r.length]="",a=0;a!=t.SheetNames.length;++a){var l={name:Ir(t.SheetNames[a].slice(0,31))};if(l.sheetId=""+(a+1),l["r:id"]="rId"+(a+1),i[a])switch(i[a].Hidden){case 1:l.state="hidden";break;case 2:l.state="veryHidden";break}r[r.length]=Ft("sheet",null,l)}return r[r.length]="",e&&(r[r.length]="",t.Workbook&&t.Workbook.Names&&t.Workbook.Names.forEach(function(d){var m={name:d.Name};d.Comment&&(m.comment=d.Comment),d.Sheet!=null&&(m.localSheetId=""+d.Sheet),d.Hidden&&(m.hidden="1"),d.Ref&&(r[r.length]=Ft("definedName",Ir(d.Ref),m))}),r[r.length]=""),r.length>2&&(r[r.length]="",r[1]=r[1].replace("/>",">")),r.join("")}function H9(t,r){var e={};return e.Hidden=t.read_shift(4),e.iTabID=t.read_shift(4),e.strRelID=mh(t),e.name=zn(t),e}function X9(t,r){return r||(r=lt(127)),r.write_shift(4,t.Hidden),r.write_shift(4,t.iTabID),qh(t.strRelID,r),On(t.name.slice(0,31),r),r.length>r.l?r.slice(0,r.l):r}function z9(t,r){var e={},n=t.read_shift(4);e.defaultThemeVersion=t.read_shift(4);var i=r>8?zn(t):"";return i.length>0&&(e.CodeName=i),e.autoCompressPictures=!!(n&65536),e.backupFile=!!(n&64),e.checkCompatibility=!!(n&4096),e.date1904=!!(n&1),e.filterPrivacy=!!(n&8),e.hidePivotFieldList=!!(n&1024),e.promptedSolutions=!!(n&16),e.publishItems=!!(n&2048),e.refreshAllConnections=!!(n&262144),e.saveExternalLinkValues=!!(n&128),e.showBorderUnselectedTables=!!(n&4),e.showInkAnnotation=!!(n&32),e.showObjects=["all","placeholders","none"][n>>13&3],e.showPivotChartFilter=!!(n&32768),e.updateLinks=["userSet","never","always"][n>>8&3],e}function W9(t,r){r||(r=lt(72));var e=0;return t&&t.filterPrivacy&&(e|=8),r.write_shift(4,e),r.write_shift(4,0),o1(t&&t.CodeName||"ThisWorkbook",r),r.slice(0,r.l)}function V9(t,r){var e={};return t.read_shift(4),e.ArchID=t.read_shift(4),t.l+=r-8,e}function $9(t,r,e){var n=t.l+r;t.l+=4,t.l+=1;var i=t.read_shift(4),a=w6(t),l=R7(t,0,e),d=Qh(t);t.l=n;var m={Name:a,Ptg:l};return i<268435455&&(m.Sheet=i),d&&(m.Comment=d),m}function G9(t,r){var e={AppVersion:{},WBProps:{},WBView:[],Sheets:[],CalcPr:{},xmlns:""},n=[],i=!1;r||(r={}),r.biff=12;var a=[],l=[[]];return l.SheetNames=[],l.XTI=[],Hf[16]={n:"BrtFRTArchID$",f:V9},$a(t,function(m,b,h){switch(h){case 156:l.SheetNames.push(m.name),e.Sheets.push(m);break;case 153:e.WBProps=m;break;case 39:m.Sheet!=null&&(r.SID=m.Sheet),m.Ref=Un(m.Ptg,null,null,l,r),delete r.SID,delete m.Ptg,a.push(m);break;case 1036:break;case 357:case 358:case 355:case 667:l[0].length?l.push([h,m]):l[0]=[h,m],l[l.length-1].XTI=[];break;case 362:l.length===0&&(l[0]=[],l[0].XTI=[]),l[l.length-1].XTI=l[l.length-1].XTI.concat(m),l.XTI=l.XTI.concat(m);break;case 361:break;case 2071:case 158:case 143:case 664:case 353:break;case 3072:case 3073:case 534:case 677:case 157:case 610:case 2050:case 155:case 548:case 676:case 128:case 665:case 2128:case 2125:case 549:case 2053:case 596:case 2076:case 2075:case 2082:case 397:case 154:case 1117:case 553:case 2091:break;case 35:n.push(h),i=!0;break;case 36:n.pop(),i=!1;break;case 37:n.push(h),i=!0;break;case 38:n.pop(),i=!1;break;case 16:break;default:if(!b.T){if(!i||r.WTF&&n[n.length-1]!=37&&n[n.length-1]!=35)throw new Error("Unexpected record 0x"+h.toString(16))}}},r),py(e),e.Names=a,e.supbooks=l,e}function K9(t,r){xt(t,143);for(var e=0;e!=r.SheetNames.length;++e){var n=r.Workbook&&r.Workbook.Sheets&&r.Workbook.Sheets[e]&&r.Workbook.Sheets[e].Hidden||0,i={Hidden:n,iTabID:e+1,strRelID:"rId"+(e+1),name:r.SheetNames[e]};xt(t,156,X9(i))}xt(t,144)}function Y9(t,r){r||(r=lt(127));for(var e=0;e!=4;++e)r.write_shift(4,0);return On("SheetJS",r),On(vc.version,r),On(vc.version,r),On("7262",r),r.length>r.l?r.slice(0,r.l):r}function Z9(t,r){r||(r=lt(29)),r.write_shift(-4,0),r.write_shift(-4,460),r.write_shift(4,28800),r.write_shift(4,17600),r.write_shift(4,500),r.write_shift(4,t),r.write_shift(4,t);var e=120;return r.write_shift(1,e),r.length>r.l?r.slice(0,r.l):r}function J9(t,r){if(!(!r.Workbook||!r.Workbook.Sheets)){for(var e=r.Workbook.Sheets,n=0,i=-1,a=-1;ni||(xt(t,135),xt(t,158,Z9(i)),xt(t,136))}}function Q9(t,r){var e=li();return xt(e,131),xt(e,128,Y9()),xt(e,153,W9(t.Workbook&&t.Workbook.WBProps||null)),J9(e,t),K9(e,t),xt(e,132),e.end()}function q9(t,r,e){return r.slice(-4)===".bin"?G9(t,e):U9(t,e)}function eR(t,r,e,n,i,a,l,d){return r.slice(-4)===".bin"?v9(t,n,e,i,a,l,d):$7(t,n,e,i,a,l,d)}function tR(t,r,e,n,i,a,l,d){return r.slice(-4)===".bin"?P9(t,n,e,i,a):R9(t,n,e,i,a)}function rR(t,r,e,n,i,a,l,d){return r.slice(-4)===".bin"?iO():aO()}function nR(t,r,e,n,i,a,l,d){return r.slice(-4)===".bin"?rO():nO()}function iR(t,r,e,n){return r.slice(-4)===".bin"?q5(t,e,n):H5(t,e,n)}function aR(t,r,e){return Z1(t,e)}function sR(t,r,e){return r.slice(-4)===".bin"?s5(t,e):n5(t,e)}function oR(t,r,e){return r.slice(-4)===".bin"?JT(t,e):XT(t,e)}function fR(t,r,e){return r.slice(-4)===".bin"?jT(t):BT(t)}function uR(t,r,e,n){return e.slice(-4)===".bin"?UT(t,r,e,n):void 0}function cR(t,r,e){return r.slice(-4)===".bin"?MT(t,r,e):NT(t,r,e)}function lR(t,r,e){return(r.slice(-4)===".bin"?Q9:my)(t)}function hR(t,r,e,n,i){return(r.slice(-4)===".bin"?T9:ly)(t,e,n,i)}function dR(t,r,e){return(r.slice(-4)===".bin"?uT:K1)(t,e)}function pR(t,r,e){return(r.slice(-4)===".bin"?u5:U1)(t,e)}function vR(t,r,e){return(r.slice(-4)===".bin"?QT:q1)(t)}function mR(t){return(t.slice(-4)===".bin"?DT:J1)()}var yy=/([\w:]+)=((?:")([^"]*)(?:")|(?:')([^']*)(?:'))/g,gy=/([\w:]+)=((?:")(?:[^"]*)(?:")|(?:')(?:[^']*)(?:'))/;function sa(t,r){var e=t.split(/\s+/),n=[];if(r||(n[0]=e[0]),e.length===1)return n;var i=t.match(yy),a,l,d,m;if(i)for(m=0;m!=i.length;++m)a=i[m].match(gy),(l=a[1].indexOf(":"))===-1?n[a[1]]=a[2].slice(1,a[2].length-1):(a[1].slice(0,6)==="xmlns:"?d="xmlns"+a[1].slice(6):d=a[1].slice(l+1),n[d]=a[2].slice(1,a[2].length-1));return n}function yR(t){var r=t.split(/\s+/),e={};if(r.length===1)return e;var n=t.match(yy),i,a,l,d;if(n)for(d=0;d!=n.length;++d)i=n[d].match(gy),(a=i[1].indexOf(":"))===-1?e[i[1]]=i[2].slice(1,i[2].length-1):(i[1].slice(0,6)==="xmlns:"?l="xmlns"+i[1].slice(6):l=i[1].slice(a+1),e[l]=i[2].slice(1,i[2].length-1));return e}var Cf;function gR(t,r){var e=Cf[t]||wr(t);return e==="General"?js(r):Gi(e,r)}function bR(t,r,e,n){var i=n;switch((e[0].match(/dt:dt="([\w.]+)"/)||["",""])[1]){case"boolean":i=Ur(n);break;case"i2":case"int":i=parseInt(n,10);break;case"r4":case"float":i=parseFloat(n);break;case"date":case"dateTime.tz":i=Vr(n);break;case"i8":case"string":case"fixed":case"uuid":case"bin.base64":break;default:throw new Error("bad custprop:"+e[0])}t[wr(r)]=i}function _R(t,r,e){if(t.t!=="z"){if(!e||e.cellText!==!1)try{t.t==="e"?t.w=t.w||Ga[t.v]:r==="General"?t.t==="n"?(t.v|0)===t.v?t.w=t.v.toString(10):t.w=Pf(t.v):t.w=js(t.v):t.w=gR(r||"General",t.v)}catch(a){if(e.WTF)throw a}try{var n=Cf[r]||r||"General";if(e.cellNF&&(t.z=n),e.cellDates&&t.t=="n"&&zo(n)){var i=Ps(t.v);i&&(t.t="d",t.v=new Date(i.y,i.m-1,i.d,i.H,i.M,i.S,i.u))}}catch(a){if(e.WTF)throw a}}}function xR(t,r,e){if(e.cellStyles&&r.Interior){var n=r.Interior;n.Pattern&&(n.patternType=I5[n.Pattern]||n.Pattern)}t[r.ID]=r}function wR(t,r,e,n,i,a,l,d,m,b){var h="General",_=n.StyleID,g={};b=b||{};var y=[],x=0;for(_===void 0&&d&&(_=d.StyleID),_===void 0&&l&&(_=l.StyleID);a[_]!==void 0&&(a[_].nf&&(h=a[_].nf),a[_].Interior&&y.push(a[_].Interior),!!a[_].Parent);)_=a[_].Parent;switch(e.Type){case"Boolean":n.t="b",n.v=Ur(t);break;case"String":n.t="s",n.r=fv(wr(t)),n.v=t.indexOf("<")>-1?wr(r||t).replace(/<.*?>/g,""):n.r;break;case"DateTime":t.slice(-1)!="Z"&&(t+="Z"),n.v=(Vr(t)-new Date(Date.UTC(1899,11,30)))/(24*60*60*1e3),n.v!==n.v?n.v=wr(t):n.v<60&&(n.v=n.v-1),(!h||h=="General")&&(h="yyyy-mm-dd");case"Number":n.v===void 0&&(n.v=+t),n.t||(n.t="n");break;case"Error":n.t="e",n.v=h1[t],b.cellText!==!1&&(n.w=t);break;default:t==""&&r==""?n.t="z":(n.t="s",n.v=fv(r||t));break}if(_R(n,h,b),b.cellFormula!==!1)if(n.Formula){var p=wr(n.Formula);p.charCodeAt(0)==61&&(p=p.slice(1)),n.f=Bo(p,i),delete n.Formula,n.ArrayRange=="RC"?n.F=Bo("RC:RC",i):n.ArrayRange&&(n.F=Bo(n.ArrayRange,i),m.push([Rr(n.F),n.F]))}else for(x=0;x=m[x][0].s.r&&i.r<=m[x][0].e.r&&i.c>=m[x][0].s.c&&i.c<=m[x][0].e.c&&(n.F=m[x][1]);b.cellStyles&&(y.forEach(function(S){!g.patternType&&S.patternType&&(g.patternType=S.patternType)}),n.s=g),n.StyleID!==void 0&&(n.ixfe=n.StyleID)}function SR(t){t.t=t.v||"",t.t=t.t.replace(/\r\n/g,` +`).replace(/\r/g,` +`),t.v=t.w=t.ixfe=void 0}function Kl(t,r){var e=r||{};Wo();var n=bf(Kh(t));(e.type=="binary"||e.type=="array"||e.type=="base64")&&(n=Nr(n));var i=n.slice(0,1024).toLowerCase(),a=!1;if(i=i.replace(/".*?"/g,""),(i.indexOf(">")&1023)>Math.min(i.indexOf(",")&1023,i.indexOf(";")&1023)){var l=Hr(e);return l.type="string",Uo.to_workbook(n,l)}if(i.indexOf("=0&&(a=!0)}),a)return fA(n,e);Cf={"General Number":"General","General Date":Jt[22],"Long Date":"dddd, mmmm dd, yyyy","Medium Date":Jt[15],"Short Date":Jt[14],"Long Time":Jt[19],"Medium Time":Jt[18],"Short Time":Jt[20],Currency:'"$"#,##0.00_);[Red]\\("$"#,##0.00\\)',Fixed:Jt[2],Standard:Jt[4],Percent:Jt[10],Scientific:Jt[11],"Yes/No":'"Yes";"Yes";"No";@',"True/False":'"True";"True";"False";@',"On/Off":'"Yes";"Yes";"No";@'};var d,m=[],b,h={},_=[],g=e.dense?[]:{},y="",x={},p={},S=sa(''),w=0,u=0,o=0,s={s:{r:2e6,c:2e6},e:{r:0,c:0}},c={},f={},v="",k=0,T=[],C={},D={},j=0,L=[],M=[],B={},R=[],P,O=!1,F=[],H=[],V={},z=0,X=0,I={Sheets:[],WBProps:{date1904:!1}},N={};Df.lastIndex=0,n=n.replace(//mg,"");for(var U="";d=Df.exec(n);)switch(d[3]=(U=d[3]).toLowerCase()){case"data":if(U=="data"){if(d[1]==="/"){if((b=m.pop())[0]!==d[3])throw new Error("Bad state: "+b.join("|"))}else d[0].charAt(d[0].length-2)!=="/"&&m.push([d[3],!0]);break}if(m[m.length-1][1])break;d[1]==="/"?wR(n.slice(w,d.index),v,S,m[m.length-1][0]=="comment"?B:x,{c:u,r:o},c,R[u],p,F,e):(v="",S=sa(d[0]),w=d.index+d[0].length);break;case"cell":if(d[1]==="/")if(M.length>0&&(x.c=M),(!e.sheetRows||e.sheetRows>o)&&x.v!==void 0&&(e.dense?(g[o]||(g[o]=[]),g[o][u]=x):g[mn(u)+Cn(o)]=x),x.HRef&&(x.l={Target:wr(x.HRef)},x.HRefScreenTip&&(x.l.Tooltip=x.HRefScreenTip),delete x.HRef,delete x.HRefScreenTip),(x.MergeAcross||x.MergeDown)&&(z=u+(parseInt(x.MergeAcross,10)|0),X=o+(parseInt(x.MergeDown,10)|0),T.push({s:{c:u,r:o},e:{c:z,r:X}})),!e.sheetStubs)x.MergeAcross?u=z+1:++u;else if(x.MergeAcross||x.MergeDown){for(var G=u;G<=z;++G)for(var te=o;te<=X;++te)(G>u||te>o)&&(e.dense?(g[te]||(g[te]=[]),g[te][G]={t:"z"}):g[mn(G)+Cn(te)]={t:"z"});u=z+1}else++u;else x=yR(d[0]),x.Index&&(u=+x.Index-1),us.e.c&&(s.e.c=u),d[0].slice(-2)==="/>"&&++u,M=[];break;case"row":d[1]==="/"||d[0].slice(-2)==="/>"?(os.e.r&&(s.e.r=o),d[0].slice(-2)==="/>"&&(p=sa(d[0]),p.Index&&(o=+p.Index-1)),u=0,++o):(p=sa(d[0]),p.Index&&(o=+p.Index-1),V={},(p.AutoFitHeight=="0"||p.Height)&&(V.hpx=parseInt(p.Height,10),V.hpt=Uf(V.hpx),H[o]=V),p.Hidden=="1"&&(V.hidden=!0,H[o]=V));break;case"worksheet":if(d[1]==="/"){if((b=m.pop())[0]!==d[3])throw new Error("Bad state: "+b.join("|"));_.push(y),s.s.r<=s.e.r&&s.s.c<=s.e.c&&(g["!ref"]=pr(s),e.sheetRows&&e.sheetRows<=s.e.r&&(g["!fullref"]=g["!ref"],s.e.r=e.sheetRows-1,g["!ref"]=pr(s))),T.length&&(g["!merges"]=T),R.length>0&&(g["!cols"]=R),H.length>0&&(g["!rows"]=H),h[y]=g}else s={s:{r:2e6,c:2e6},e:{r:0,c:0}},o=u=0,m.push([d[3],!1]),b=sa(d[0]),y=wr(b.Name),g=e.dense?[]:{},T=[],F=[],H=[],N={name:y,Hidden:0},I.Sheets.push(N);break;case"table":if(d[1]==="/"){if((b=m.pop())[0]!==d[3])throw new Error("Bad state: "+b.join("|"))}else{if(d[0].slice(-2)=="/>")break;m.push([d[3],!1]),R=[],O=!1}break;case"style":d[1]==="/"?xR(c,f,e):f=sa(d[0]);break;case"numberformat":f.nf=wr(sa(d[0]).Format||"General"),Cf[f.nf]&&(f.nf=Cf[f.nf]);for(var re=0;re!=392&&Jt[re]!=f.nf;++re);if(re==392){for(re=57;re!=392;++re)if(Jt[re]==null){Ha(f.nf,re);break}}break;case"column":if(m[m.length-1][0]!=="table")break;if(P=sa(d[0]),P.Hidden&&(P.hidden=!0,delete P.Hidden),P.Width&&(P.wpx=parseInt(P.Width,10)),!O&&P.wpx>10){O=!0,Hn=$1;for(var ne=0;ne0&&(se.Sheet=I.Sheets.length-1),I.Names.push(se);break;case"namedcell":break;case"b":break;case"i":break;case"u":break;case"s":break;case"em":break;case"h2":break;case"h3":break;case"sub":break;case"sup":break;case"span":break;case"alignment":break;case"borders":break;case"border":break;case"font":if(d[0].slice(-2)==="/>")break;d[1]==="/"?v+=n.slice(k,d.index):k=d.index+d[0].length;break;case"interior":if(!e.cellStyles)break;f.Interior=sa(d[0]);break;case"protection":break;case"author":case"title":case"description":case"created":case"keywords":case"subject":case"category":case"company":case"lastauthor":case"lastsaved":case"lastprinted":case"version":case"revision":case"totaltime":case"hyperlinkbase":case"manager":case"contentstatus":case"identifier":case"language":case"appname":if(d[0].slice(-2)==="/>")break;d[1]==="/"?G6(C,U,n.slice(j,d.index)):j=d.index+d[0].length;break;case"paragraphs":break;case"styles":case"workbook":if(d[1]==="/"){if((b=m.pop())[0]!==d[3])throw new Error("Bad state: "+b.join("|"))}else m.push([d[3],!1]);break;case"comment":if(d[1]==="/"){if((b=m.pop())[0]!==d[3])throw new Error("Bad state: "+b.join("|"));SR(B),M.push(B)}else m.push([d[3],!1]),b=sa(d[0]),B={a:b.Author};break;case"autofilter":if(d[1]==="/"){if((b=m.pop())[0]!==d[3])throw new Error("Bad state: "+b.join("|"))}else if(d[0].charAt(d[0].length-2)!=="/"){var J=sa(d[0]);g["!autofilter"]={ref:Bo(J.Range).replace(/\$/g,"")},m.push([d[3],!0])}break;case"name":break;case"datavalidation":if(d[1]==="/"){if((b=m.pop())[0]!==d[3])throw new Error("Bad state: "+b.join("|"))}else d[0].charAt(d[0].length-2)!=="/"&&m.push([d[3],!0]);break;case"pixelsperinch":break;case"componentoptions":case"documentproperties":case"customdocumentproperties":case"officedocumentsettings":case"pivottable":case"pivotcache":case"names":case"mapinfo":case"pagebreaks":case"querytable":case"sorting":case"schema":case"conditionalformatting":case"smarttagtype":case"smarttags":case"excelworkbook":case"workbookoptions":case"worksheetoptions":if(d[1]==="/"){if((b=m.pop())[0]!==d[3])throw new Error("Bad state: "+b.join("|"))}else d[0].charAt(d[0].length-2)!=="/"&&m.push([d[3],!0]);break;case"null":break;default:if(m.length==0&&d[3]=="document"||m.length==0&&d[3]=="uof")return Yv(n,e);var q=!0;switch(m[m.length-1][0]){case"officedocumentsettings":switch(d[3]){case"allowpng":break;case"removepersonalinformation":break;case"downloadcomponents":break;case"locationofcomponents":break;case"colors":break;case"color":break;case"index":break;case"rgb":break;case"targetscreensize":break;case"readonlyrecommended":break;default:q=!1}break;case"componentoptions":switch(d[3]){case"toolbar":break;case"hideofficelogo":break;case"spreadsheetautofit":break;case"label":break;case"caption":break;case"maxheight":break;case"maxwidth":break;case"nextsheetnumber":break;default:q=!1}break;case"excelworkbook":switch(d[3]){case"date1904":I.WBProps.date1904=!0;break;case"windowheight":break;case"windowwidth":break;case"windowtopx":break;case"windowtopy":break;case"tabratio":break;case"protectstructure":break;case"protectwindow":break;case"protectwindows":break;case"activesheet":break;case"displayinknotes":break;case"firstvisiblesheet":break;case"supbook":break;case"sheetname":break;case"sheetindex":break;case"sheetindexfirst":break;case"sheetindexlast":break;case"dll":break;case"acceptlabelsinformulas":break;case"donotsavelinkvalues":break;case"iteration":break;case"maxiterations":break;case"maxchange":break;case"path":break;case"xct":break;case"count":break;case"selectedsheets":break;case"calculation":break;case"uncalced":break;case"startupprompt":break;case"crn":break;case"externname":break;case"formula":break;case"colfirst":break;case"collast":break;case"wantadvise":break;case"boolean":break;case"error":break;case"text":break;case"ole":break;case"noautorecover":break;case"publishobjects":break;case"donotcalculatebeforesave":break;case"number":break;case"refmoder1c1":break;case"embedsavesmarttags":break;default:q=!1}break;case"workbookoptions":switch(d[3]){case"owcversion":break;case"height":break;case"width":break;default:q=!1}break;case"worksheetoptions":switch(d[3]){case"visible":if(d[0].slice(-2)!=="/>")if(d[1]==="/")switch(n.slice(j,d.index)){case"SheetHidden":N.Hidden=1;break;case"SheetVeryHidden":N.Hidden=2;break}else j=d.index+d[0].length;break;case"header":g["!margins"]||Bs(g["!margins"]={},"xlml"),isNaN(+Qt(d[0]).Margin)||(g["!margins"].header=+Qt(d[0]).Margin);break;case"footer":g["!margins"]||Bs(g["!margins"]={},"xlml"),isNaN(+Qt(d[0]).Margin)||(g["!margins"].footer=+Qt(d[0]).Margin);break;case"pagemargins":var de=Qt(d[0]);g["!margins"]||Bs(g["!margins"]={},"xlml"),isNaN(+de.Top)||(g["!margins"].top=+de.Top),isNaN(+de.Left)||(g["!margins"].left=+de.Left),isNaN(+de.Right)||(g["!margins"].right=+de.Right),isNaN(+de.Bottom)||(g["!margins"].bottom=+de.Bottom);break;case"displayrighttoleft":I.Views||(I.Views=[]),I.Views[0]||(I.Views[0]={}),I.Views[0].RTL=!0;break;case"freezepanes":break;case"frozennosplit":break;case"splithorizontal":case"splitvertical":break;case"donotdisplaygridlines":break;case"activerow":break;case"activecol":break;case"toprowbottompane":break;case"leftcolumnrightpane":break;case"unsynced":break;case"print":break;case"printerrors":break;case"panes":break;case"scale":break;case"pane":break;case"number":break;case"layout":break;case"pagesetup":break;case"selected":break;case"protectobjects":break;case"enableselection":break;case"protectscenarios":break;case"validprinterinfo":break;case"horizontalresolution":break;case"verticalresolution":break;case"numberofcopies":break;case"activepane":break;case"toprowvisible":break;case"leftcolumnvisible":break;case"fittopage":break;case"rangeselection":break;case"papersizeindex":break;case"pagelayoutzoom":break;case"pagebreakzoom":break;case"filteron":break;case"fitwidth":break;case"fitheight":break;case"commentslayout":break;case"zoom":break;case"lefttoright":break;case"gridlines":break;case"allowsort":break;case"allowfilter":break;case"allowinsertrows":break;case"allowdeleterows":break;case"allowinsertcols":break;case"allowdeletecols":break;case"allowinserthyperlinks":break;case"allowformatcells":break;case"allowsizecols":break;case"allowsizerows":break;case"nosummaryrowsbelowdetail":g["!outline"]||(g["!outline"]={}),g["!outline"].above=!0;break;case"tabcolorindex":break;case"donotdisplayheadings":break;case"showpagelayoutzoom":break;case"nosummarycolumnsrightdetail":g["!outline"]||(g["!outline"]={}),g["!outline"].left=!0;break;case"blackandwhite":break;case"donotdisplayzeros":break;case"displaypagebreak":break;case"rowcolheadings":break;case"donotdisplayoutline":break;case"noorientation":break;case"allowusepivottables":break;case"zeroheight":break;case"viewablerange":break;case"selection":break;case"protectcontents":break;default:q=!1}break;case"pivottable":case"pivotcache":switch(d[3]){case"immediateitemsondrop":break;case"showpagemultipleitemlabel":break;case"compactrowindent":break;case"location":break;case"pivotfield":break;case"orientation":break;case"layoutform":break;case"layoutsubtotallocation":break;case"layoutcompactrow":break;case"position":break;case"pivotitem":break;case"datatype":break;case"datafield":break;case"sourcename":break;case"parentfield":break;case"ptlineitems":break;case"ptlineitem":break;case"countofsameitems":break;case"item":break;case"itemtype":break;case"ptsource":break;case"cacheindex":break;case"consolidationreference":break;case"filename":break;case"reference":break;case"nocolumngrand":break;case"norowgrand":break;case"blanklineafteritems":break;case"hidden":break;case"subtotal":break;case"basefield":break;case"mapchilditems":break;case"function":break;case"refreshonfileopen":break;case"printsettitles":break;case"mergelabels":break;case"defaultversion":break;case"refreshname":break;case"refreshdate":break;case"refreshdatecopy":break;case"versionlastrefresh":break;case"versionlastupdate":break;case"versionupdateablemin":break;case"versionrefreshablemin":break;case"calculation":break;default:q=!1}break;case"pagebreaks":switch(d[3]){case"colbreaks":break;case"colbreak":break;case"rowbreaks":break;case"rowbreak":break;case"colstart":break;case"colend":break;case"rowend":break;default:q=!1}break;case"autofilter":switch(d[3]){case"autofiltercolumn":break;case"autofiltercondition":break;case"autofilterand":break;case"autofilteror":break;default:q=!1}break;case"querytable":switch(d[3]){case"id":break;case"autoformatfont":break;case"autoformatpattern":break;case"querysource":break;case"querytype":break;case"enableredirections":break;case"refreshedinxl9":break;case"urlstring":break;case"htmltables":break;case"connection":break;case"commandtext":break;case"refreshinfo":break;case"notitles":break;case"nextid":break;case"columninfo":break;case"overwritecells":break;case"donotpromptforfile":break;case"textwizardsettings":break;case"source":break;case"number":break;case"decimal":break;case"thousandseparator":break;case"trailingminusnumbers":break;case"formatsettings":break;case"fieldtype":break;case"delimiters":break;case"tab":break;case"comma":break;case"autoformatname":break;case"versionlastedit":break;case"versionlastrefresh":break;default:q=!1}break;case"datavalidation":switch(d[3]){case"range":break;case"type":break;case"min":break;case"max":break;case"sort":break;case"descending":break;case"order":break;case"casesensitive":break;case"value":break;case"errorstyle":break;case"errormessage":break;case"errortitle":break;case"inputmessage":break;case"inputtitle":break;case"combohide":break;case"inputhide":break;case"condition":break;case"qualifier":break;case"useblank":break;case"value1":break;case"value2":break;case"format":break;case"cellrangelist":break;default:q=!1}break;case"sorting":case"conditionalformatting":switch(d[3]){case"range":break;case"type":break;case"min":break;case"max":break;case"sort":break;case"descending":break;case"order":break;case"casesensitive":break;case"value":break;case"errorstyle":break;case"errormessage":break;case"errortitle":break;case"cellrangelist":break;case"inputmessage":break;case"inputtitle":break;case"combohide":break;case"inputhide":break;case"condition":break;case"qualifier":break;case"useblank":break;case"value1":break;case"value2":break;case"format":break;default:q=!1}break;case"mapinfo":case"schema":case"data":switch(d[3]){case"map":break;case"entry":break;case"range":break;case"xpath":break;case"field":break;case"xsdtype":break;case"filteron":break;case"aggregate":break;case"elementtype":break;case"attributetype":break;case"schema":case"element":case"complextype":case"datatype":case"all":case"attribute":case"extends":break;case"row":break;default:q=!1}break;case"smarttags":break;default:q=!1;break}if(q||d[3].match(/!\[CDATA/))break;if(!m[m.length-1][1])throw"Unrecognized tag: "+d[3]+"|"+m.join("|");if(m[m.length-1][0]==="customdocumentproperties"){if(d[0].slice(-2)==="/>")break;d[1]==="/"?bR(D,U,L,n.slice(j,d.index)):(L=d,j=d.index+d[0].length);break}if(e.WTF)throw"Unrecognized tag: "+d[3]+"|"+m.join("|")}var xe={};return!e.bookSheets&&!e.bookProps&&(xe.Sheets=h),xe.SheetNames=_,xe.Workbook=I,xe.SSF=Hr(Jt),xe.Props=C,xe.Custprops=D,xe}function Sh(t,r){switch(m0(r=r||{}),r.type||"base64"){case"base64":return Kl(Oi(t),r);case"binary":case"buffer":case"file":return Kl(t,r);case"array":return Kl(ys(t),r)}}function kR(t,r){var e=[];return t.Props&&e.push(K6(t.Props,r)),t.Custprops&&e.push(Y6(t.Props,t.Custprops)),e.join("")}function ER(){return""}function TR(t,r){var e=[''];return r.cellXfs.forEach(function(n,i){var a=[];a.push(Ft("NumberFormat",null,{"ss:Format":Ir(Jt[n.numFmtId])}));var l={"ss:ID":"s"+(21+i)};e.push(Ft("Style",a.join(""),l))}),Ft("Styles",e.join(""))}function by(t){return Ft("NamedRange",null,{"ss:Name":t.Name,"ss:RefersTo":"="+c0(t.Ref,{r:0,c:0})})}function OR(t){if(!((t||{}).Workbook||{}).Names)return"";for(var r=t.Workbook.Names,e=[],n=0;n"),t["!margins"].header&&i.push(Ft("Header",null,{"x:Margin":t["!margins"].header})),t["!margins"].footer&&i.push(Ft("Footer",null,{"x:Margin":t["!margins"].footer})),i.push(Ft("PageMargins",null,{"x:Bottom":t["!margins"].bottom||"0.75","x:Left":t["!margins"].left||"0.7","x:Right":t["!margins"].right||"0.7","x:Top":t["!margins"].top||"0.75"})),i.push("")),n&&n.Workbook&&n.Workbook.Sheets&&n.Workbook.Sheets[e])if(n.Workbook.Sheets[e].Hidden)i.push(Ft("Visible",n.Workbook.Sheets[e].Hidden==1?"SheetHidden":"SheetVeryHidden",{}));else{for(var a=0;a")}return((((n||{}).Workbook||{}).Views||[])[0]||{}).RTL&&i.push(""),t["!protect"]&&(i.push(In("ProtectContents","True")),t["!protect"].objects&&i.push(In("ProtectObjects","True")),t["!protect"].scenarios&&i.push(In("ProtectScenarios","True")),t["!protect"].selectLockedCells!=null&&!t["!protect"].selectLockedCells?i.push(In("EnableSelection","NoSelection")):t["!protect"].selectUnlockedCells!=null&&!t["!protect"].selectUnlockedCells&&i.push(In("EnableSelection","UnlockedCells")),[["formatCells","AllowFormatCells"],["formatColumns","AllowSizeCols"],["formatRows","AllowSizeRows"],["insertColumns","AllowInsertCols"],["insertRows","AllowInsertRows"],["insertHyperlinks","AllowInsertHyperlinks"],["deleteColumns","AllowDeleteCols"],["deleteRows","AllowDeleteRows"],["sort","AllowSort"],["autoFilter","AllowFilter"],["pivotTables","AllowUsePivotTables"]].forEach(function(l){t["!protect"][l[0]]&&i.push("<"+l[1]+"/>")})),i.length==0?"":Ft("WorksheetOptions",i.join(""),{xmlns:Si.x})}function AR(t){return t.map(function(r){var e=Zk(r.t||""),n=Ft("ss:Data",e,{xmlns:"http://www.w3.org/TR/REC-html40"});return Ft("Comment",n,{"ss:Author":r.a})}).join("")}function PR(t,r,e,n,i,a,l){if(!t||t.v==null&&t.f==null)return"";var d={};if(t.f&&(d["ss:Formula"]="="+Ir(c0(t.f,l))),t.F&&t.F.slice(0,r.length)==r){var m=wn(t.F.slice(r.length+1));d["ss:ArrayRange"]="RC:R"+(m.r==l.r?"":"["+(m.r-l.r)+"]")+"C"+(m.c==l.c?"":"["+(m.c-l.c)+"]")}if(t.l&&t.l.Target&&(d["ss:HRef"]=Ir(t.l.Target),t.l.Tooltip&&(d["x:HRefScreenTip"]=Ir(t.l.Tooltip))),e["!merges"])for(var b=e["!merges"],h=0;h!=b.length;++h)b[h].s.c!=l.c||b[h].s.r!=l.r||(b[h].e.c>b[h].s.c&&(d["ss:MergeAcross"]=b[h].e.c-b[h].s.c),b[h].e.r>b[h].s.r&&(d["ss:MergeDown"]=b[h].e.r-b[h].s.r));var _="",g="";switch(t.t){case"z":if(!n.sheetStubs)return"";break;case"n":_="Number",g=String(t.v);break;case"b":_="Boolean",g=t.v?"1":"0";break;case"e":_="Error",g=Ga[t.v];break;case"d":_="DateTime",g=new Date(t.v).toISOString(),t.z==null&&(t.z=t.z||Jt[14]);break;case"s":_="String",g=Yk(t.v||"");break}var y=gs(n.cellXfs,t,n);d["ss:StyleID"]="s"+(21+y),d["ss:Index"]=l.c+1;var x=t.v!=null?g:"",p=t.t=="z"?"":''+x+"";return(t.c||[]).length>0&&(p+=AR(t.c)),Ft("Cell",p,d)}function FR(t,r){var e='"}function IR(t,r,e,n){if(!t["!ref"])return"";var i=Rr(t["!ref"]),a=t["!merges"]||[],l=0,d=[];t["!cols"]&&t["!cols"].forEach(function(S,w){ps(S);var u=!!S.width,o=Bc(w,S),s={"ss:Index":w+1};u&&(s["ss:Width"]=Lf(o.width)),S.hidden&&(s["ss:Hidden"]="1"),d.push(Ft("Column",null,s))});for(var m=Array.isArray(t),b=i.s.r;b<=i.e.r;++b){for(var h=[FR(b,(t["!rows"]||[])[b])],_=i.s.c;_<=i.e.c;++_){var g=!1;for(l=0;l!=a.length;++l)if(!(a[l].s.c>_)&&!(a[l].s.r>b)&&!(a[l].e.c<_)&&!(a[l].e.r"),h.length>2&&d.push(h.join(""))}return d.join("")}function MR(t,r,e){var n=[],i=e.SheetNames[t],a=e.Sheets[i],l=a?CR(a,r,t,e):"";return l.length>0&&n.push(""+l+""),l=a?IR(a,r,t,e):"",l.length>0&&n.push(""+l+"
"),n.push(RR(a,r,t,e)),n.join("")}function DR(t,r){r||(r={}),t.SSF||(t.SSF=Hr(Jt)),t.SSF&&(Wo(),Ac(t.SSF),r.revssf=Fc(t.SSF),r.revssf[t.SSF[65535]]=0,r.ssf=t.SSF,r.cellXfs=[],gs(r.cellXfs,{},{revssf:{General:0}}));var e=[];e.push(kR(t,r)),e.push(ER()),e.push(""),e.push("");for(var n=0;n40||(e.l-=4,r.Reserved1=e.read_shift(0,"lpstr-ansi"),e.length-e.l<=4)||(n=e.read_shift(4),n!==1907505652)||(r.UnicodeClipboardFormat=C6(e),n=e.read_shift(4),n==0||n>40))return r;e.l-=4,r.Reserved2=e.read_shift(0,"lpwstr")}var BR=[60,1084,2066,2165,2175];function LR(t,r,e,n,i){var a=n,l=[],d=e.slice(e.l,e.l+a);if(i&&i.enc&&i.enc.insitu&&d.length>0)switch(t){case 9:case 521:case 1033:case 2057:case 47:case 405:case 225:case 406:case 312:case 404:case 10:break;case 133:break;default:i.enc.insitu(d)}l.push(d),e.l+=a;for(var m=ja(e,e.l),b=kh[m],h=0;b!=null&&BR.indexOf(m)>-1;)a=ja(e,e.l+2),h=e.l+4,m==2066?h+=4:(m==2165||m==2175)&&(h+=12),d=e.slice(h,e.l+4+a),l.push(d),e.l+=4+a,b=kh[m=ja(e,e.l)];var _=Tn(l);Fn(_,0);var g=0;_.lens=[];for(var y=0;y1)&&!(et.sheetRows&&ft.r>=et.sheetRows)){if(et.cellStyles&&pt.XF&&pt.XF.data&&C(ft,pt,et),delete pt.ixfe,delete pt.XF,_=ft,g=er(ft),(!l||!l.s||!l.e)&&(l={s:{r:0,c:0},e:{r:0,c:0}}),ft.rl.e.r&&(l.e.r=ft.r+1),ft.c+1>l.e.c&&(l.e.c=ft.c+1),et.cellFormula&&pt.f){for(var tt=0;ttft.c||u[tt][0].s.r>ft.r)&&!(u[tt][0].e.c>8)!==te)throw new Error("rt mismatch: "+ge+"!="+te);ne.r==12&&(t.l+=10,re-=10)}var ee={};if(te===10?ee=ne.f(t,re,j):ee=LR(te,ne,t,re,j),V==0&&[9,521,1033,2057].indexOf(H)===-1)continue;switch(te){case 34:e.opts.Date1904=v.WBProps.date1904=ee;break;case 134:e.opts.WriteProtect=!0;break;case 47:if(j.enc||(t.l=0),j.enc=ee,!r.password)throw new Error("File is password-protected");if(ee.valid==null)throw new Error("Encryption scheme unsupported");if(!ee.valid)throw new Error("Password is incorrect");break;case 92:j.lastuser=ee;break;case 66:var se=Number(ee);switch(se){case 21010:se=1200;break;case 32768:se=1e4;break;case 32769:se=1252;break}ua(j.codepage=se),U=!0;break;case 317:j.rrtabid=ee;break;case 25:j.winlocked=ee;break;case 439:e.opts.RefreshAll=ee;break;case 12:e.opts.CalcCount=ee;break;case 16:e.opts.CalcDelta=ee;break;case 17:e.opts.CalcIter=ee;break;case 13:e.opts.CalcMode=ee;break;case 14:e.opts.CalcPrecision=ee;break;case 95:e.opts.CalcSaveRecalc=ee;break;case 15:j.CalcRefMode=ee;break;case 2211:e.opts.FullCalc=ee;break;case 129:ee.fDialog&&(i["!type"]="dialog"),ee.fBelow||((i["!outline"]||(i["!outline"]={})).above=!0),ee.fRight||((i["!outline"]||(i["!outline"]={})).left=!0);break;case 224:c.push(ee);break;case 430:F.push([ee]),F[F.length-1].XTI=[];break;case 35:case 547:F[F.length-1].push(ee);break;case 24:case 536:N={Name:ee.Name,Ref:Un(ee.rgce,l,null,F,j)},ee.itab>0&&(N.Sheet=ee.itab-1),F.names.push(N),F[0]||(F[0]=[],F[0].XTI=[]),F[F.length-1].push(ee),ee.Name=="_xlnm._FilterDatabase"&&ee.itab>0&&ee.rgce&&ee.rgce[0]&&ee.rgce[0][0]&&ee.rgce[0][0][0]=="PtgArea3d"&&(I[ee.itab-1]={ref:pr(ee.rgce[0][0][1][2])});break;case 22:j.ExternCount=ee;break;case 23:F.length==0&&(F[0]=[],F[0].XTI=[]),F[F.length-1].XTI=F[F.length-1].XTI.concat(ee),F.XTI=F.XTI.concat(ee);break;case 2196:if(j.biff<8)break;N!=null&&(N.Comment=ee[1]);break;case 18:i["!protect"]=ee;break;case 19:ee!==0&&j.WTF&&console.error("Password verifier: "+ee);break;case 133:a[ee.pos]=ee,j.snames.push(ee.name);break;case 10:{if(--V)break;if(l.e){if(l.e.r>0&&l.e.c>0){if(l.e.r--,l.e.c--,i["!ref"]=pr(l),r.sheetRows&&r.sheetRows<=l.e.r){var J=l.e.r;l.e.r=r.sheetRows-1,i["!fullref"]=i["!ref"],i["!ref"]=pr(l),l.e.r=J}l.e.r++,l.e.c++}M.length>0&&(i["!merges"]=M),B.length>0&&(i["!objects"]=B),R.length>0&&(i["!cols"]=R),P.length>0&&(i["!rows"]=P),v.Sheets.push(k)}b===""?h=i:n[b]=i,i=r.dense?[]:{}}break;case 9:case 521:case 1033:case 2057:{if(j.biff===8&&(j.biff={9:2,521:3,1033:4}[te]||{512:2,768:3,1024:4,1280:5,1536:8,2:2,7:2}[ee.BIFFVer]||8),j.biffguess=ee.BIFFVer==0,ee.BIFFVer==0&&ee.dt==4096&&(j.biff=5,U=!0,ua(j.codepage=28591)),j.biff==8&&ee.BIFFVer==0&&ee.dt==16&&(j.biff=2),V++)break;if(i=r.dense?[]:{},j.biff<8&&!U&&(U=!0,ua(j.codepage=r.codepage||1252)),j.biff<5||ee.BIFFVer==0&&ee.dt==4096){b===""&&(b="Sheet1"),l={s:{r:0,c:0},e:{r:0,c:0}};var q={pos:t.l-re,name:b};a[q.pos]=q,j.snames.push(b)}else b=(a[G]||{name:""}).name;ee.dt==32&&(i["!type"]="chart"),ee.dt==64&&(i["!type"]="macro"),M=[],B=[],j.arrayf=u=[],R=[],P=[],O=!1,k={Hidden:(a[G]||{hs:0}).hs,name:b}}break;case 515:case 3:case 2:i["!type"]=="chart"&&(r.dense?(i[ee.r]||[])[ee.c]:i[er({c:ee.c,r:ee.r})])&&++ee.c,o={ixfe:ee.ixfe,XF:c[ee.ixfe]||{},v:ee.val,t:"n"},z>0&&(o.z=X[o.ixfe>>8&63]),ya(o,r,e.opts.Date1904),D({c:ee.c,r:ee.r},o,r);break;case 5:case 517:o={ixfe:ee.ixfe,XF:c[ee.ixfe],v:ee.val,t:ee.t},z>0&&(o.z=X[o.ixfe>>8&63]),ya(o,r,e.opts.Date1904),D({c:ee.c,r:ee.r},o,r);break;case 638:o={ixfe:ee.ixfe,XF:c[ee.ixfe],v:ee.rknum,t:"n"},z>0&&(o.z=X[o.ixfe>>8&63]),ya(o,r,e.opts.Date1904),D({c:ee.c,r:ee.r},o,r);break;case 189:for(var de=ee.c;de<=ee.C;++de){var xe=ee.rkrec[de-ee.c][0];o={ixfe:xe,XF:c[xe],v:ee.rkrec[de-ee.c][1],t:"n"},z>0&&(o.z=X[o.ixfe>>8&63]),ya(o,r,e.opts.Date1904),D({c:de,r:ee.r},o,r)}break;case 6:case 518:case 1030:{if(ee.val=="String"){d=ee;break}if(o=tc(ee.val,ee.cell.ixfe,ee.tt),o.XF=c[o.ixfe],r.cellFormula){var ae=ee.formula;if(ae&&ae[0]&&ae[0][0]&&ae[0][0][0]=="PtgExp"){var fe=ae[0][0][1][0],Ne=ae[0][0][1][1],ie=er({r:fe,c:Ne});w[ie]?o.f=""+Un(ee.formula,l,ee.cell,F,j):o.F=((r.dense?(i[fe]||[])[Ne]:i[ie])||{}).F}else o.f=""+Un(ee.formula,l,ee.cell,F,j)}z>0&&(o.z=X[o.ixfe>>8&63]),ya(o,r,e.opts.Date1904),D(ee.cell,o,r),d=ee}break;case 7:case 519:if(d)d.val=ee,o=tc(ee,d.cell.ixfe,"s"),o.XF=c[o.ixfe],r.cellFormula&&(o.f=""+Un(d.formula,l,d.cell,F,j)),z>0&&(o.z=X[o.ixfe>>8&63]),ya(o,r,e.opts.Date1904),D(d.cell,o,r),d=null;else throw new Error("String record expects Formula");break;case 33:case 545:{u.push(ee);var Y=er(ee[0].s);if(y=r.dense?(i[ee[0].s.r]||[])[ee[0].s.c]:i[Y],r.cellFormula&&y){if(!d||!Y||!y)break;y.f=""+Un(ee[1],l,ee[0],F,j),y.F=pr(ee[0])}}break;case 1212:{if(!r.cellFormula)break;if(g){if(!d)break;w[er(d.cell)]=ee[0],y=r.dense?(i[d.cell.r]||[])[d.cell.c]:i[er(d.cell)],(y||{}).f=""+Un(ee[0],l,_,F,j)}}break;case 253:o=tc(m[ee.isst].t,ee.ixfe,"s"),m[ee.isst].h&&(o.h=m[ee.isst].h),o.XF=c[o.ixfe],z>0&&(o.z=X[o.ixfe>>8&63]),ya(o,r,e.opts.Date1904),D({c:ee.c,r:ee.r},o,r);break;case 513:r.sheetStubs&&(o={ixfe:ee.ixfe,XF:c[ee.ixfe],t:"z"},z>0&&(o.z=X[o.ixfe>>8&63]),ya(o,r,e.opts.Date1904),D({c:ee.c,r:ee.r},o,r));break;case 190:if(r.sheetStubs)for(var Z=ee.c;Z<=ee.C;++Z){var le=ee.ixfe[Z-ee.c];o={ixfe:le,XF:c[le],t:"z"},z>0&&(o.z=X[o.ixfe>>8&63]),ya(o,r,e.opts.Date1904),D({c:Z,r:ee.r},o,r)}break;case 214:case 516:case 4:o=tc(ee.val,ee.ixfe,"s"),o.XF=c[o.ixfe],z>0&&(o.z=X[o.ixfe>>8&63]),ya(o,r,e.opts.Date1904),D({c:ee.c,r:ee.r},o,r);break;case 0:case 512:V===1&&(l=ee);break;case 252:m=ee;break;case 1054:if(j.biff==4){X[z++]=ee[1];for(var Re=0;Re=163&&Ha(ee[1],z+163)}else Ha(ee[1],ee[0]);break;case 30:{X[z++]=ee;for(var Ce=0;Ce=163&&Ha(ee,z+163)}break;case 229:M=M.concat(ee);break;case 93:B[ee.cmo[0]]=j.lastobj=ee;break;case 438:j.lastobj.TxO=ee;break;case 127:j.lastobj.ImData=ee;break;case 440:for(S=ee[0].s.r;S<=ee[0].e.r;++S)for(p=ee[0].s.c;p<=ee[0].e.c;++p)y=r.dense?(i[S]||[])[p]:i[er({c:p,r:S})],y&&(y.l=ee[1]);break;case 2048:for(S=ee[0].s.r;S<=ee[0].e.r;++S)for(p=ee[0].s.c;p<=ee[0].e.c;++p)y=r.dense?(i[S]||[])[p]:i[er({c:p,r:S})],y&&y.l&&(y.l.Tooltip=ee[1]);break;case 28:{if(j.biff<=5&&j.biff>=2)break;y=r.dense?(i[ee[0].r]||[])[ee[0].c]:i[er(ee[0])];var Ge=B[ee[2]];y||(r.dense?(i[ee[0].r]||(i[ee[0].r]=[]),y=i[ee[0].r][ee[0].c]={t:"z"}):y=i[er(ee[0])]={t:"z"},l.e.r=Math.max(l.e.r,ee[0].r),l.s.r=Math.min(l.s.r,ee[0].r),l.e.c=Math.max(l.e.c,ee[0].c),l.s.c=Math.min(l.s.c,ee[0].c)),y.c||(y.c=[]),x={a:ee[1],t:Ge.TxO.t},y.c.push(x)}break;case 2173:TT(c[ee.ixfe],ee.ext);break;case 125:{if(!j.cellStyles)break;for(;ee.e>=ee.s;)R[ee.e--]={width:ee.w/256,level:ee.level||0,hidden:!!(ee.flags&1)},O||(O=!0,o0(ee.w/256)),ps(R[ee.e+1])}break;case 520:{var st={};ee.level!=null&&(P[ee.r]=st,st.level=ee.level),ee.hidden&&(P[ee.r]=st,st.hidden=!0),ee.hpt&&(P[ee.r]=st,st.hpt=ee.hpt,st.hpx=Ho(ee.hpt))}break;case 38:case 39:case 40:case 41:i["!margins"]||Bs(i["!margins"]={}),i["!margins"][{38:"left",39:"right",40:"top",41:"bottom"}[te]]=ee;break;case 161:i["!margins"]||Bs(i["!margins"]={}),i["!margins"].header=ee.header,i["!margins"].footer=ee.footer;break;case 574:ee.RTL&&(v.Views[0].RTL=!0);break;case 146:f=ee;break;case 2198:L=ee;break;case 140:s=ee;break;case 442:b?k.CodeName=ee||k.name:v.WBProps.CodeName=ee||"ThisWorkbook";break}}else ne||console.error("Missing Info for XLS Record 0x"+te.toString(16)),t.l+=re}return e.SheetNames=on(a).sort(function(vt,ft){return Number(vt)-Number(ft)}).map(function(vt){return a[vt].name}),r.bookSheets||(e.Sheets=n),!e.SheetNames.length&&h["!ref"]?(e.SheetNames.push("Sheet1"),e.Sheets&&(e.Sheets.Sheet1=h)):e.Preamble=h,e.Sheets&&I.forEach(function(vt,ft){e.Sheets[e.SheetNames[ft]]["!autofilter"]=vt}),e.Strings=m,e.SSF=Hr(Jt),j.enc&&(e.Encryption=j.enc),L&&(e.Themes=L),e.Metadata={},s!==void 0&&(e.Metadata.Country=s),F.names.length>0&&(v.Names=F.names),e.Workbook=v,e}var Rf={SI:"e0859ff2f94f6810ab9108002b27b3d9",DSI:"02d5cdd59c2e1b10939708002b2cf9ae",UDI:"05d5cdd59c2e1b10939708002b2cf9ae"};function UR(t,r,e){var n=$t.find(t,"/!DocumentSummaryInformation");if(n&&n.size>0)try{var i=Tv(n,yh,Rf.DSI);for(var a in i)r[a]=i[a]}catch(b){if(e.WTF)throw b}var l=$t.find(t,"/!SummaryInformation");if(l&&l.size>0)try{var d=Tv(l,gh,Rf.SI);for(var m in d)r[m]==null&&(r[m]=d[m])}catch(b){if(e.WTF)throw b}r.HeadingPairs&&r.TitlesOfParts&&(g1(r.HeadingPairs,r.TitlesOfParts,r,e),delete r.HeadingPairs,delete r.TitlesOfParts)}function HR(t,r){var e=[],n=[],i=[],a=0,l,d=rv(yh,"n"),m=rv(gh,"n");if(t.Props)for(l=on(t.Props),a=0;a-1||y1.indexOf(i[a][0])>-1||i[a][1]!=null&&b.push(i[a]);n.length&&$t.utils.cfb_add(r,"/SummaryInformation",Ov(n,Rf.SI,m,gh)),(e.length||b.length)&&$t.utils.cfb_add(r,"/DocumentSummaryInformation",Ov(e,Rf.DSI,d,yh,b.length?b:null,Rf.UDI))}function _y(t,r){r||(r={}),m0(r),jh(),r.codepage&&Lh(r.codepage);var e,n;if(t.FullPaths){if($t.find(t,"/encryption"))throw new Error("File is password-protected");e=$t.find(t,"!CompObj"),n=$t.find(t,"/Workbook")||$t.find(t,"/Book")}else{switch(r.type){case"base64":t=Ei(Oi(t));break;case"binary":t=Ei(t);break;case"buffer":break;case"array":Array.isArray(t)||(t=Array.prototype.slice.call(t));break}Fn(t,0),n={content:t}}var i,a;if(e&&NR(e),r.bookProps&&!r.bookSheets)i={};else{var l=lr?"buffer":"array";if(n&&n.content)i=jR(n.content,r);else if((a=$t.find(t,"PerfectOffice_MAIN"))&&a.content)i=Ns.to_workbook(a.content,(r.type=l,r));else if((a=$t.find(t,"NativeContent_MAIN"))&&a.content)i=Ns.to_workbook(a.content,(r.type=l,r));else throw(a=$t.find(t,"MN0"))&&a.content?new Error("Unsupported Works 4 for Mac file"):new Error("Cannot find Workbook stream");r.bookVBA&&t.FullPaths&&$t.find(t,"/_VBA_PROJECT_CUR/VBA/dir")&&(i.vbaraw=eO(t))}var d={};return t.FullPaths&&UR(t,d,r),i.Props=i.Custprops=d,r.bookFiles&&(i.cfb=t),i}function XR(t,r){var e=r||{},n=$t.utils.cfb_new({root:"R"}),i="/Workbook";switch(e.bookType||"xls"){case"xls":e.bookType="biff8";case"xla":e.bookType||(e.bookType="xla");case"biff8":i="/Workbook",e.biff=8;break;case"biff5":i="/Book",e.biff=5;break;default:throw new Error("invalid type "+e.bookType+" for XLS CFB")}return $t.utils.cfb_add(n,i,xy(t,e)),e.biff==8&&(t.Props||t.Custprops)&&HR(t,n),e.biff==8&&t.vbaraw&&tO(n,$t.read(t.vbaraw,{type:typeof t.vbaraw=="string"?"binary":"buffer"})),n}var Hf={0:{f:hC},1:{f:_C},2:{f:jC},3:{f:CC},4:{f:kC},5:{f:NC},6:{f:WC},7:{f:FC},8:{f:JC},9:{f:ZC},10:{f:KC},11:{f:YC},12:{f:wC},13:{f:HC},14:{f:AC},15:{f:TC},16:{f:hy},17:{f:$C},18:{f:MC},19:{f:Jh},20:{},21:{},22:{},23:{},24:{},25:{},26:{},27:{},28:{},29:{},30:{},31:{},32:{},33:{},34:{},35:{T:1},36:{T:-1},37:{T:1},38:{T:-1},39:{f:$9},40:{},42:{},43:{f:W5},44:{f:X5},45:{f:G5},46:{f:Y5},47:{f:K5},48:{},49:{f:v6},50:{},51:{f:RT},52:{T:1},53:{T:-1},54:{T:1},55:{T:-1},56:{T:1},57:{T:-1},58:{},59:{},60:{f:N1},62:{f:zC},63:{f:LT},64:{f:d9},65:{},66:{},67:{},68:{},69:{},70:{},128:{},129:{T:1},130:{T:-1},131:{T:1,f:Vn,p:0},132:{T:-1},133:{T:1},134:{T:-1},135:{T:1},136:{T:-1},137:{T:1,f:u9},138:{T:-1},139:{T:1},140:{T:-1},141:{T:1},142:{T:-1},143:{T:1},144:{T:-1},145:{T:1},146:{T:-1},147:{f:gC},148:{f:vC,p:16},151:{f:n9},152:{},153:{f:z9},154:{},155:{},156:{f:H9},157:{},158:{},159:{T:1,f:a5},160:{T:-1},161:{T:1,f:Zs},162:{T:-1},163:{T:1},164:{T:-1},165:{T:1},166:{T:-1},167:{},168:{},169:{},170:{},171:{},172:{T:1},173:{T:-1},174:{},175:{},176:{f:QC},177:{T:1},178:{T:-1},179:{T:1},180:{T:-1},181:{T:1},182:{T:-1},183:{T:1},184:{T:-1},185:{T:1},186:{T:-1},187:{T:1},188:{T:-1},189:{T:1},190:{T:-1},191:{T:1},192:{T:-1},193:{T:1},194:{T:-1},195:{T:1},196:{T:-1},197:{T:1},198:{T:-1},199:{T:1},200:{T:-1},201:{T:1},202:{T:-1},203:{T:1},204:{T:-1},205:{T:1},206:{T:-1},207:{T:1},208:{T:-1},209:{T:1},210:{T:-1},211:{T:1},212:{T:-1},213:{T:1},214:{T:-1},215:{T:1},216:{T:-1},217:{T:1},218:{T:-1},219:{T:1},220:{T:-1},221:{T:1},222:{T:-1},223:{T:1},224:{T:-1},225:{T:1},226:{T:-1},227:{T:1},228:{T:-1},229:{T:1},230:{T:-1},231:{T:1},232:{T:-1},233:{T:1},234:{T:-1},235:{T:1},236:{T:-1},237:{T:1},238:{T:-1},239:{T:1},240:{T:-1},241:{T:1},242:{T:-1},243:{T:1},244:{T:-1},245:{T:1},246:{T:-1},247:{T:1},248:{T:-1},249:{T:1},250:{T:-1},251:{T:1},252:{T:-1},253:{T:1},254:{T:-1},255:{T:1},256:{T:-1},257:{T:1},258:{T:-1},259:{T:1},260:{T:-1},261:{T:1},262:{T:-1},263:{T:1},264:{T:-1},265:{T:1},266:{T:-1},267:{T:1},268:{T:-1},269:{T:1},270:{T:-1},271:{T:1},272:{T:-1},273:{T:1},274:{T:-1},275:{T:1},276:{T:-1},277:{},278:{T:1},279:{T:-1},280:{T:1},281:{T:-1},282:{T:1},283:{T:1},284:{T:-1},285:{T:1},286:{T:-1},287:{T:1},288:{T:-1},289:{T:1},290:{T:-1},291:{T:1},292:{T:-1},293:{T:1},294:{T:-1},295:{T:1},296:{T:-1},297:{T:1},298:{T:-1},299:{T:1},300:{T:-1},301:{T:1},302:{T:-1},303:{T:1},304:{T:-1},305:{T:1},306:{T:-1},307:{T:1},308:{T:-1},309:{T:1},310:{T:-1},311:{T:1},312:{T:-1},313:{T:-1},314:{T:1},315:{T:-1},316:{T:1},317:{T:-1},318:{T:1},319:{T:-1},320:{T:1},321:{T:-1},322:{T:1},323:{T:-1},324:{T:1},325:{T:-1},326:{T:1},327:{T:-1},328:{T:1},329:{T:-1},330:{T:1},331:{T:-1},332:{T:1},333:{T:-1},334:{T:1},335:{f:OT},336:{T:-1},337:{f:FT,T:1},338:{T:-1},339:{T:1},340:{T:-1},341:{T:1},342:{T:-1},343:{T:1},344:{T:-1},345:{T:1},346:{T:-1},347:{T:1},348:{T:-1},349:{T:1},350:{T:-1},351:{},352:{},353:{T:1},354:{T:-1},355:{f:mh},357:{},358:{},359:{},360:{T:1},361:{},362:{f:D1},363:{},364:{},366:{},367:{},368:{},369:{},370:{},371:{},372:{T:1},373:{T:-1},374:{T:1},375:{T:-1},376:{T:1},377:{T:-1},378:{T:1},379:{T:-1},380:{T:1},381:{T:-1},382:{T:1},383:{T:-1},384:{T:1},385:{T:-1},386:{T:1},387:{T:-1},388:{T:1},389:{T:-1},390:{T:1},391:{T:-1},392:{T:1},393:{T:-1},394:{T:1},395:{T:-1},396:{},397:{},398:{},399:{},400:{},401:{T:1},403:{},404:{},405:{},406:{},407:{},408:{},409:{},410:{},411:{},412:{},413:{},414:{},415:{},416:{},417:{},418:{},419:{},420:{},421:{},422:{T:1},423:{T:1},424:{T:-1},425:{T:-1},426:{f:i9},427:{f:a9},428:{},429:{T:1},430:{T:-1},431:{T:1},432:{T:-1},433:{T:1},434:{T:-1},435:{T:1},436:{T:-1},437:{T:1},438:{T:-1},439:{T:1},440:{T:-1},441:{T:1},442:{T:-1},443:{T:1},444:{T:-1},445:{T:1},446:{T:-1},447:{T:1},448:{T:-1},449:{T:1},450:{T:-1},451:{T:1},452:{T:-1},453:{T:1},454:{T:-1},455:{T:1},456:{T:-1},457:{T:1},458:{T:-1},459:{T:1},460:{T:-1},461:{T:1},462:{T:-1},463:{T:1},464:{T:-1},465:{T:1},466:{T:-1},467:{T:1},468:{T:-1},469:{T:1},470:{T:-1},471:{},472:{},473:{T:1},474:{T:-1},475:{},476:{f:o9},477:{},478:{},479:{T:1},480:{T:-1},481:{T:1},482:{T:-1},483:{T:1},484:{T:-1},485:{f:yC},486:{T:1},487:{T:-1},488:{T:1},489:{T:-1},490:{T:1},491:{T:-1},492:{T:1},493:{T:-1},494:{f:t9},495:{T:1},496:{T:-1},497:{T:1},498:{T:-1},499:{},500:{T:1},501:{T:-1},502:{T:1},503:{T:-1},504:{},505:{T:1},506:{T:-1},507:{},508:{T:1},509:{T:-1},510:{T:1},511:{T:-1},512:{},513:{},514:{T:1},515:{T:-1},516:{T:1},517:{T:-1},518:{T:1},519:{T:-1},520:{T:1},521:{T:-1},522:{},523:{},524:{},525:{},526:{},527:{},528:{T:1},529:{T:-1},530:{T:1},531:{T:-1},532:{T:1},533:{T:-1},534:{},535:{},536:{},537:{},538:{T:1},539:{T:-1},540:{T:1},541:{T:-1},542:{T:1},548:{},549:{},550:{f:mh},551:{},552:{},553:{},554:{T:1},555:{T:-1},556:{T:1},557:{T:-1},558:{T:1},559:{T:-1},560:{T:1},561:{T:-1},562:{},564:{},565:{T:1},566:{T:-1},569:{T:1},570:{T:-1},572:{},573:{T:1},574:{T:-1},577:{},578:{},579:{},580:{},581:{},582:{},583:{},584:{},585:{},586:{},587:{},588:{T:-1},589:{},590:{T:1},591:{T:-1},592:{T:1},593:{T:-1},594:{T:1},595:{T:-1},596:{},597:{T:1},598:{T:-1},599:{T:1},600:{T:-1},601:{T:1},602:{T:-1},603:{T:1},604:{T:-1},605:{T:1},606:{T:-1},607:{},608:{T:1},609:{T:-1},610:{},611:{T:1},612:{T:-1},613:{T:1},614:{T:-1},615:{T:1},616:{T:-1},617:{T:1},618:{T:-1},619:{T:1},620:{T:-1},625:{},626:{T:1},627:{T:-1},628:{T:1},629:{T:-1},630:{T:1},631:{T:-1},632:{f:YT},633:{T:1},634:{T:-1},635:{T:1,f:GT},636:{T:-1},637:{f:b6},638:{T:1},639:{},640:{T:-1},641:{T:1},642:{T:-1},643:{T:1},644:{},645:{T:-1},646:{T:1},648:{T:1},649:{},650:{T:-1},651:{f:A9},652:{},653:{T:1},654:{T:-1},655:{T:1},656:{T:-1},657:{T:1},658:{T:-1},659:{},660:{T:1},661:{},662:{T:-1},663:{},664:{T:1},665:{},666:{T:-1},667:{},668:{},669:{},671:{T:1},672:{T:-1},673:{T:1},674:{T:-1},675:{},676:{},677:{},678:{},679:{},680:{},681:{},1024:{},1025:{},1026:{T:1},1027:{T:-1},1028:{T:1},1029:{T:-1},1030:{},1031:{T:1},1032:{T:-1},1033:{T:1},1034:{T:-1},1035:{},1036:{},1037:{},1038:{T:1},1039:{T:-1},1040:{},1041:{T:1},1042:{T:-1},1043:{},1044:{},1045:{},1046:{T:1},1047:{T:-1},1048:{T:1},1049:{T:-1},1050:{},1051:{T:1},1052:{T:1},1053:{f:p9},1054:{T:1},1055:{},1056:{T:1},1057:{T:-1},1058:{T:1},1059:{T:-1},1061:{},1062:{T:1},1063:{T:-1},1064:{T:1},1065:{T:-1},1066:{T:1},1067:{T:-1},1068:{T:1},1069:{T:-1},1070:{T:1},1071:{T:-1},1072:{T:1},1073:{T:-1},1075:{T:1},1076:{T:-1},1077:{T:1},1078:{T:-1},1079:{T:1},1080:{T:-1},1081:{T:1},1082:{T:-1},1083:{T:1},1084:{T:-1},1085:{},1086:{T:1},1087:{T:-1},1088:{T:1},1089:{T:-1},1090:{T:1},1091:{T:-1},1092:{T:1},1093:{T:-1},1094:{T:1},1095:{T:-1},1096:{},1097:{T:1},1098:{},1099:{T:-1},1100:{T:1},1101:{T:-1},1102:{},1103:{},1104:{},1105:{},1111:{},1112:{},1113:{T:1},1114:{T:-1},1115:{T:1},1116:{T:-1},1117:{},1118:{T:1},1119:{T:-1},1120:{T:1},1121:{T:-1},1122:{T:1},1123:{T:-1},1124:{T:1},1125:{T:-1},1126:{},1128:{T:1},1129:{T:-1},1130:{},1131:{T:1},1132:{T:-1},1133:{T:1},1134:{T:-1},1135:{T:1},1136:{T:-1},1137:{T:1},1138:{T:-1},1139:{T:1},1140:{T:-1},1141:{},1142:{T:1},1143:{T:-1},1144:{T:1},1145:{T:-1},1146:{},1147:{T:1},1148:{T:-1},1149:{T:1},1150:{T:-1},1152:{T:1},1153:{T:-1},1154:{T:-1},1155:{T:-1},1156:{T:-1},1157:{T:1},1158:{T:-1},1159:{T:1},1160:{T:-1},1161:{T:1},1162:{T:-1},1163:{T:1},1164:{T:-1},1165:{T:1},1166:{T:-1},1167:{T:1},1168:{T:-1},1169:{T:1},1170:{T:-1},1171:{},1172:{T:1},1173:{T:-1},1177:{},1178:{T:1},1180:{},1181:{},1182:{},2048:{T:1},2049:{T:-1},2050:{},2051:{T:1},2052:{T:-1},2053:{},2054:{},2055:{T:1},2056:{T:-1},2057:{T:1},2058:{T:-1},2060:{},2067:{},2068:{T:1},2069:{T:-1},2070:{},2071:{},2072:{T:1},2073:{T:-1},2075:{},2076:{},2077:{T:1},2078:{T:-1},2079:{},2080:{T:1},2081:{T:-1},2082:{},2083:{T:1},2084:{T:-1},2085:{T:1},2086:{T:-1},2087:{T:1},2088:{T:-1},2089:{T:1},2090:{T:-1},2091:{},2092:{},2093:{T:1},2094:{T:-1},2095:{},2096:{T:1},2097:{T:-1},2098:{T:1},2099:{T:-1},2100:{T:1},2101:{T:-1},2102:{},2103:{T:1},2104:{T:-1},2105:{},2106:{T:1},2107:{T:-1},2108:{},2109:{T:1},2110:{T:-1},2111:{T:1},2112:{T:-1},2113:{T:1},2114:{T:-1},2115:{},2116:{},2117:{},2118:{T:1},2119:{T:-1},2120:{},2121:{T:1},2122:{T:-1},2123:{T:1},2124:{T:-1},2125:{},2126:{T:1},2127:{T:-1},2128:{},2129:{T:1},2130:{T:-1},2131:{T:1},2132:{T:-1},2133:{T:1},2134:{},2135:{},2136:{},2137:{T:1},2138:{T:-1},2139:{T:1},2140:{T:-1},2141:{},3072:{},3073:{},4096:{T:1},4097:{T:-1},5002:{T:1},5003:{T:-1},5081:{T:1},5082:{T:-1},5083:{},5084:{T:1},5085:{T:-1},5086:{T:1},5087:{T:-1},5088:{},5089:{},5090:{},5092:{T:1},5093:{T:-1},5094:{},5095:{T:1},5096:{T:-1},5097:{},5099:{},65535:{n:""}},kh={6:{f:$l},10:{f:ss},12:{f:pn},13:{f:pn},14:{f:an},15:{f:an},16:{f:Xn},17:{f:an},18:{f:an},19:{f:pn},20:{f:Iv},21:{f:Iv},23:{f:D1},24:{f:Dv},25:{f:an},26:{},27:{},28:{f:pE},29:{},34:{f:an},35:{f:Mv},38:{f:Xn},39:{f:Xn},40:{f:Xn},41:{f:Xn},42:{f:an},43:{f:an},47:{f:T5},49:{f:H8},51:{f:pn},60:{},61:{f:N8},64:{f:an},65:{f:U8},66:{f:pn},77:{},80:{},81:{},82:{},85:{f:pn},89:{},90:{},91:{},92:{f:E8},93:{f:yE},94:{},95:{f:an},96:{},97:{},99:{f:an},125:{f:N1},128:{f:rE},129:{f:O8},130:{f:pn},131:{f:an},132:{f:an},133:{f:C8},134:{},140:{f:EE},141:{f:pn},144:{},146:{f:CE},151:{},152:{},153:{},154:{},155:{},156:{f:pn},157:{},158:{},160:{f:DE},161:{f:PE},174:{},175:{},176:{},177:{},178:{},180:{},181:{},182:{},184:{},185:{},189:{f:Q8},190:{f:q8},193:{f:ss},197:{},198:{},199:{},200:{},201:{},202:{f:an},203:{},204:{},205:{},206:{},207:{},208:{},209:{},210:{},211:{},213:{},215:{},216:{},217:{},218:{f:pn},220:{},221:{f:an},222:{},224:{f:tE},225:{f:k8},226:{f:ss},227:{},229:{f:vE},233:{},235:{},236:{},237:{},239:{},240:{},241:{},242:{},244:{},245:{},246:{},247:{},248:{},249:{},251:{},252:{f:A8},253:{f:z8},255:{f:F8},256:{},259:{},290:{},311:{},312:{},315:{},317:{f:T1},318:{},319:{},320:{},330:{},331:{},333:{},334:{},335:{},336:{},337:{},338:{},339:{},340:{},351:{},352:{f:an},353:{f:ss},401:{},402:{},403:{},404:{},405:{},406:{},407:{},408:{},425:{},426:{},427:{},428:{},429:{},430:{f:oE},431:{f:an},432:{},433:{},434:{},437:{},438:{f:_E},439:{f:an},440:{f:xE},441:{},442:{f:Zf},443:{},444:{f:pn},445:{},446:{},448:{f:ss},449:{f:D8,r:2},450:{f:ss},512:{f:Av},513:{f:ME},515:{f:aE},516:{f:V8},517:{f:Fv},519:{f:NE},520:{f:I8},523:{},545:{f:Nv},549:{f:Rv},566:{},574:{f:L8},638:{f:J8},659:{},1048:{},1054:{f:G8},1084:{},1212:{f:lE},2048:{f:SE},2049:{},2050:{},2051:{},2052:{},2053:{},2054:{},2055:{},2056:{},2057:{f:Qu},2058:{},2059:{},2060:{},2061:{},2062:{},2063:{},2064:{},2066:{},2067:{},2128:{},2129:{},2130:{},2131:{},2132:{},2133:{},2134:{},2135:{},2136:{},2137:{},2138:{},2146:{},2147:{r:12},2148:{},2149:{},2150:{},2151:{f:ss},2152:{},2154:{},2155:{},2156:{},2161:{},2162:{},2164:{},2165:{},2166:{},2167:{},2168:{},2169:{},2170:{},2171:{},2172:{f:RE,r:12},2173:{f:ET,r:12},2174:{},2175:{},2180:{},2181:{},2182:{},2183:{},2184:{},2185:{},2186:{},2187:{},2188:{f:an,r:12},2189:{},2190:{r:12},2191:{},2192:{},2194:{},2195:{},2196:{f:cE,r:12},2197:{},2198:{f:bT,r:12},2199:{},2200:{},2201:{},2202:{f:hE,r:12},2203:{f:ss},2204:{},2205:{},2206:{},2207:{},2211:{f:M8},2212:{},2213:{},2214:{},2215:{},4097:{},4098:{},4099:{},4102:{},4103:{},4105:{},4106:{},4107:{},4108:{},4109:{},4116:{},4117:{},4118:{},4119:{},4120:{},4121:{},4122:{},4123:{},4124:{},4125:{},4126:{},4127:{},4128:{},4129:{},4130:{},4132:{},4133:{},4134:{f:pn},4135:{},4146:{},4147:{},4148:{},4149:{},4154:{},4156:{},4157:{},4158:{},4159:{},4160:{},4161:{},4163:{},4164:{f:FE},4165:{},4166:{},4168:{},4170:{},4171:{},4174:{},4175:{},4176:{},4177:{},4187:{},4188:{f:OE},4189:{},4191:{},4192:{},4193:{},4194:{},4195:{},4196:{},4197:{},4198:{},4199:{},4200:{},0:{f:Av},1:{},2:{f:HE},3:{f:jE},4:{f:LE},5:{f:Fv},7:{f:zE},8:{},9:{f:Qu},11:{},22:{f:pn},30:{f:Y8},31:{},32:{},33:{f:Nv},36:{},37:{f:Rv},50:{f:WE},62:{},52:{},67:{},68:{f:pn},69:{},86:{},126:{},127:{f:BE},135:{},136:{},137:{},145:{},148:{},149:{},150:{},169:{},171:{},188:{},191:{},192:{},194:{},195:{},214:{f:VE},223:{},234:{},354:{},421:{},518:{f:$l},521:{f:Qu},536:{f:Dv},547:{f:Mv},561:{},579:{},1030:{f:$l},1033:{f:Qu},1091:{},2157:{},2163:{},2177:{},2240:{},2241:{},2242:{},2243:{},2244:{},2245:{},2246:{},2247:{},2248:{},2249:{},2250:{},2251:{},2262:{r:12},29282:{}};function It(t,r,e,n){var i=r;if(!isNaN(i)){var a=n||(e||[]).length||0,l=t.next(4);l.write_shift(2,i),l.write_shift(2,a),a>0&&Zh(e)&&t.push(e)}}function zR(t,r,e,n){var i=n||(e||[]).length||0;if(i<=8224)return It(t,r,e,i);var a=r;if(!isNaN(a)){for(var l=e.parts||[],d=0,m=0,b=0;b+(l[d]||8224)<=8224;)b+=l[d]||8224,d++;var h=t.next(4);for(h.write_shift(2,a),h.write_shift(2,b),t.push(e.slice(m,m+b)),m+=b;m=0&&i<65536?It(t,2,XE(e,n,i)):It(t,3,UE(e,n,i));return;case"b":case"e":It(t,5,WR(e,n,r.v,r.t));return;case"s":case"str":It(t,4,VR(e,n,(r.v||"").slice(0,255)));return}It(t,1,eu(null,e,n))}function GR(t,r,e,n){var i=Array.isArray(r),a=Rr(r["!ref"]||"A1"),l,d="",m=[];if(a.e.c>255||a.e.r>16383){if(n.WTF)throw new Error("Range "+(r["!ref"]||"A1")+" exceeds format limit A1:IV16384");a.e.c=Math.min(a.e.c,255),a.e.r=Math.min(a.e.c,16383),l=pr(a)}for(var b=a.s.r;b<=a.e.r;++b){d=Cn(b);for(var h=a.s.c;h<=a.e.c;++h){b===a.s.r&&(m[h]=mn(h)),l=m[h]+d;var _=i?(r[b]||[])[h]:r[l];_&&$R(t,_,b,h)}}}function KR(t,r){for(var e=r||{},n=li(),i=0,a=0;a255||y.e.r>=x){if(r.WTF)throw new Error("Range "+(a["!ref"]||"A1")+" exceeds format limit A1:IV16384");y.e.c=Math.min(y.e.c,255),y.e.r=Math.min(y.e.c,x-1)}It(n,2057,i0(e,16,r)),It(n,13,Vi(1)),It(n,12,Vi(100)),It(n,15,ei(!0)),It(n,17,ei(!1)),It(n,16,Hs(.001)),It(n,95,ei(!0)),It(n,42,ei(!1)),It(n,43,ei(!1)),It(n,130,Vi(1)),It(n,128,nE([0,0])),It(n,131,ei(!1)),It(n,132,ei(!1)),b&&eA(n,a["!cols"]),It(n,512,Z8(y,r)),b&&(a["!links"]=[]);for(var p=y.s.r;p<=y.e.r;++p){_=Cn(p);for(var S=y.s.c;S<=y.e.c;++S){p===y.s.r&&(g[S]=mn(S)),h=g[S]+_;var w=m?(a[p]||[])[S]:a[h];w&&(tA(n,w,p,S,r),b&&w.l&&a["!links"].push([h,w.l]))}}var u=d.CodeName||d.name||i;return b&&It(n,574,j8((l.Views||[])[0])),b&&(a["!merges"]||[]).length&&It(n,229,mE(a["!merges"])),b&&qR(n,a),It(n,442,C1(u)),b&&JR(n,a),It(n,10),n.end()}function nA(t,r,e){var n=li(),i=(t||{}).Workbook||{},a=i.Sheets||[],l=i.WBProps||{},d=e.biff==8,m=e.biff==5;if(It(n,2057,i0(t,5,e)),e.bookType=="xla"&&It(n,135),It(n,225,d?Vi(1200):null),It(n,193,i8(2)),m&&It(n,191),m&&It(n,192),It(n,226),It(n,92,T8("SheetJS",e)),It(n,66,Vi(d?1200:1252)),d&&It(n,353,Vi(0)),d&&It(n,448),It(n,317,IE(t.SheetNames.length)),d&&t.vbaraw&&It(n,211),d&&t.vbaraw){var b=l.CodeName||"ThisWorkbook";It(n,442,C1(b))}It(n,156,Vi(17)),It(n,25,ei(!1)),It(n,18,ei(!1)),It(n,19,Vi(0)),d&&It(n,431,ei(!1)),d&&It(n,444,Vi(0)),It(n,61,B8()),It(n,64,ei(!1)),It(n,141,Vi(0)),It(n,34,ei(D9(t)=="true")),It(n,14,ei(!0)),d&&It(n,439,ei(!1)),It(n,218,Vi(0)),YR(n,t,e),ZR(n,t.SSF,e),QR(n,e),d&&It(n,352,ei(!1));var h=n.end(),_=li();d&&It(_,140,TE()),d&&e.Strings&&zR(_,252,P8(e.Strings)),It(_,10);var g=_.end(),y=li(),x=0,p=0;for(p=0;p255&&typeof console<"u"&&console.error&&console.error("Worksheet '"+t.SheetNames[e]+"' extends beyond column IV (255). Data may be lost.")}}var a=r||{};switch(a.biff||2){case 8:case 5:return iA(t,r);case 4:case 3:case 2:return KR(t,r)}throw new Error("invalid type "+a.bookType+" for BIFF")}function $v(t,r){var e=r||{},n=e.dense?[]:{};t=t.replace(//g,"");var i=t.match(/");var a=t.match(/<\/table/i),l=i.index,d=a&&a.index||t.length,m=Xk(t.slice(l,d),/(:?]*>)/i,""),b=-1,h=0,_=0,g=0,y={s:{r:1e7,c:1e7},e:{r:0,c:0}},x=[];for(l=0;l/i);for(d=0;d"))>-1;)o=o.slice(s+1);for(var c=0;c")));g=v.colspan?+v.colspan:1,((_=+v.rowspan)>1||g>1)&&x.push({s:{r:b,c:h},e:{r:b+(_||1)-1,c:h+g-1}});var k=v.t||v["data-t"]||"";if(!o.length){h+=g;continue}if(o=Jk(o),y.s.r>b&&(y.s.r=b),y.e.rh&&(y.s.c=h),y.e.ce||i[b].s.c>l)&&!(i[b].e.r1&&(y.rowspan=d),m>1&&(y.colspan=m),n.editable?g=''+g+"":_&&(y["data-t"]=_&&_.t||"z",_.v!=null&&(y["data-v"]=_.v),_.z!=null&&(y["data-z"]=_.z),_.l&&(_.l.Target||"#").charAt(0)!="#"&&(g=''+g+"")),y.id=(n.id||"sjs")+"-"+h,a.push(Ft("td",g,y))}}var x="";return x+a.join("")+""}var sA='SheetJS Table Export',oA="";function fA(t,r){var e=t.match(/[\s\S]*?<\/table>/gi);if(!e||e.length==0)throw new Error("Invalid HTML: could not find
");if(e.length==1)return $s($v(e[0],r),r);var n=Ay();return e.forEach(function(i,a){Py(n,$v(i,r),"Sheet"+(a+1))}),n}function uA(t,r,e){var n=[];return n.join("")+""}function cA(t,r){var e=r||{},n=e.header!=null?e.header:sA,i=e.footer!=null?e.footer:oA,a=[n],l=Ki(t["!ref"]);e.dense=Array.isArray(t),a.push(uA(t,l,e));for(var d=l.s.r;d<=l.e.r;++d)a.push(aA(t,l,d,e));return a.push("
"+i),a.join("")}function lA(t){var r=t.replace(/[\t\r\n]/g," ").trim().replace(/ +/g," ").replace(//g," ").replace(//g,function(n,i){return Array(parseInt(i,10)+1).join(" ")}).replace(/]*\/>/g," ").replace(//g,` +`),e=wr(r.replace(/<[^>]*>/g,""));return[e]}var Gv={day:["d","dd"],month:["m","mm"],year:["y","yy"],hours:["h","hh"],minutes:["m","mm"],seconds:["s","ss"],"am-pm":["A/P","AM/PM"],"day-of-week":["ddd","dddd"],era:["e","ee"],quarter:["\\Qm",'m\\"th quarter"']};function wy(t,r){var e=r||{},n=Kh(t),i=[],a,l,d={name:""},m="",b=0,h,_,g={},y=[],x=e.dense?[]:{},p,S,w={value:""},u="",o=0,s=[],c=-1,f=-1,v={s:{r:1e6,c:1e7},e:{r:0,c:0}},k=0,T={},C=[],D={},j=0,L=0,M=[],B=1,R=1,P=[],O={Names:[]},F={},H=["",""],V=[],z={},X="",I=0,N=!1,U=!1,G=0;for(Df.lastIndex=0,n=n.replace(//mg,"").replace(//gm,"");p=Df.exec(n);)switch(p[3]=p[3].replace(/_.*$/,"")){case"table":case"工作表":p[1]==="/"?(v.e.c>=v.s.c&&v.e.r>=v.s.r?x["!ref"]=pr(v):x["!ref"]="A1:A1",e.sheetRows>0&&e.sheetRows<=v.e.r&&(x["!fullref"]=x["!ref"],v.e.r=e.sheetRows-1,x["!ref"]=pr(v)),C.length&&(x["!merges"]=C),M.length&&(x["!rows"]=M),h.name=h.名称||h.name,typeof JSON<"u"&&JSON.stringify(h),y.push(h.name),g[h.name]=x,U=!1):p[0].charAt(p[0].length-2)!=="/"&&(h=Qt(p[0],!1),c=f=-1,v.s.r=v.s.c=1e7,v.e.r=v.e.c=0,x=e.dense?[]:{},C=[],M=[],U=!0);break;case"table-row-group":p[1]==="/"?--k:++k;break;case"table-row":case"行":if(p[1]==="/"){c+=B,B=1;break}if(_=Qt(p[0],!1),_.行号?c=_.行号-1:c==-1&&(c=0),B=+_["number-rows-repeated"]||1,B<10)for(G=0;G0&&(M[c+G]={level:k});f=-1;break;case"covered-table-cell":p[1]!=="/"&&++f,e.sheetStubs&&(e.dense?(x[c]||(x[c]=[]),x[c][f]={t:"z"}):x[er({r:c,c:f})]={t:"z"}),u="",s=[];break;case"table-cell":case"数据":if(p[0].charAt(p[0].length-2)==="/")++f,w=Qt(p[0],!1),R=parseInt(w["number-columns-repeated"]||"1",10),S={t:"z",v:null},w.formula&&e.cellFormula!=!1&&(S.f=zv(wr(w.formula))),(w.数据类型||w["value-type"])=="string"&&(S.t="s",S.v=wr(w["string-value"]||""),e.dense?(x[c]||(x[c]=[]),x[c][f]=S):x[er({r:c,c:f})]=S),f+=R-1;else if(p[1]!=="/"){++f,u="",o=0,s=[],R=1;var te=B?c+B-1:c;if(f>v.e.c&&(v.e.c=f),fv.e.r&&(v.e.r=te),w=Qt(p[0],!1),V=[],z={},S={t:w.数据类型||w["value-type"],v:null},e.cellFormula)if(w.formula&&(w.formula=wr(w.formula)),w["number-matrix-columns-spanned"]&&w["number-matrix-rows-spanned"]&&(j=parseInt(w["number-matrix-rows-spanned"],10)||0,L=parseInt(w["number-matrix-columns-spanned"],10)||0,D={s:{r:c,c:f},e:{r:c+j-1,c:f+L-1}},S.F=pr(D),P.push([D,S.F])),w.formula)S.f=zv(w.formula);else for(G=0;G=P[G][0].s.r&&c<=P[G][0].e.r&&f>=P[G][0].s.c&&f<=P[G][0].e.c&&(S.F=P[G][1]);switch((w["number-columns-spanned"]||w["number-rows-spanned"])&&(j=parseInt(w["number-rows-spanned"],10)||0,L=parseInt(w["number-columns-spanned"],10)||0,D={s:{r:c,c:f},e:{r:c+j-1,c:f+L-1}},C.push(D)),w["number-columns-repeated"]&&(R=parseInt(w["number-columns-repeated"],10)),S.t){case"boolean":S.t="b",S.v=Ur(w["boolean-value"]);break;case"float":S.t="n",S.v=parseFloat(w.value);break;case"percentage":S.t="n",S.v=parseFloat(w.value);break;case"currency":S.t="n",S.v=parseFloat(w.value);break;case"date":S.t="d",S.v=Vr(w["date-value"]),e.cellDates||(S.t="n",S.v=Mn(S.v)),S.z="m/d/yy";break;case"time":S.t="n",S.v=jk(w["time-value"])/86400,e.cellDates&&(S.t="d",S.v=Ic(S.v)),S.z="HH:MM:SS";break;case"number":S.t="n",S.v=parseFloat(w.数据数值);break;default:if(S.t==="string"||S.t==="text"||!S.t)S.t="s",w["string-value"]!=null&&(u=wr(w["string-value"]),s=[]);else throw new Error("Unsupported value type "+S.t)}}else{if(N=!1,S.t==="s"&&(S.v=u||"",s.length&&(S.R=s),N=o==0),F.Target&&(S.l=F),V.length>0&&(S.c=V,V=[]),u&&e.cellText!==!1&&(S.w=u),N&&(S.t="z",delete S.v),(!N||e.sheetStubs)&&!(e.sheetRows&&e.sheetRows<=c))for(var re=0;re0;)x[c+re][f+R]=Hr(S);else for(x[er({r:c+re,c:f})]=S;--R>0;)x[er({r:c+re,c:f+R})]=Hr(S);v.e.c<=f&&(v.e.c=f)}R=parseInt(w["number-columns-repeated"]||"1",10),f+=R-1,R=0,S={},u="",s=[]}F={};break;case"document":case"document-content":case"电子表格文档":case"spreadsheet":case"主体":case"scripts":case"styles":case"font-face-decls":case"master-styles":if(p[1]==="/"){if((a=i.pop())[0]!==p[3])throw"Bad state: "+a}else p[0].charAt(p[0].length-2)!=="/"&&i.push([p[3],!0]);break;case"annotation":if(p[1]==="/"){if((a=i.pop())[0]!==p[3])throw"Bad state: "+a;z.t=u,s.length&&(z.R=s),z.a=X,V.push(z)}else p[0].charAt(p[0].length-2)!=="/"&&i.push([p[3],!1]);X="",I=0,u="",o=0,s=[];break;case"creator":p[1]==="/"?X=n.slice(I,p.index):I=p.index+p[0].length;break;case"meta":case"元数据":case"settings":case"config-item-set":case"config-item-map-indexed":case"config-item-map-entry":case"config-item-map-named":case"shapes":case"frame":case"text-box":case"image":case"data-pilot-tables":case"list-style":case"form":case"dde-links":case"event-listeners":case"chart":if(p[1]==="/"){if((a=i.pop())[0]!==p[3])throw"Bad state: "+a}else p[0].charAt(p[0].length-2)!=="/"&&i.push([p[3],!1]);u="",o=0,s=[];break;case"scientific-number":break;case"currency-symbol":break;case"currency-style":break;case"number-style":case"percentage-style":case"date-style":case"time-style":if(p[1]==="/"){if(T[d.name]=m,(a=i.pop())[0]!==p[3])throw"Bad state: "+a}else p[0].charAt(p[0].length-2)!=="/"&&(m="",d=Qt(p[0],!1),i.push([p[3],!0]));break;case"script":break;case"libraries":break;case"automatic-styles":break;case"default-style":case"page-layout":break;case"style":break;case"map":break;case"font-face":break;case"paragraph-properties":break;case"table-properties":break;case"table-column-properties":break;case"table-row-properties":break;case"table-cell-properties":break;case"number":switch(i[i.length-1][0]){case"time-style":case"date-style":l=Qt(p[0],!1),m+=Gv[p[3]][l.style==="long"?1:0];break}break;case"fraction":break;case"day":case"month":case"year":case"era":case"day-of-week":case"week-of-year":case"quarter":case"hours":case"minutes":case"seconds":case"am-pm":switch(i[i.length-1][0]){case"time-style":case"date-style":l=Qt(p[0],!1),m+=Gv[p[3]][l.style==="long"?1:0];break}break;case"boolean-style":break;case"boolean":break;case"text-style":break;case"text":if(p[0].slice(-2)==="/>")break;if(p[1]==="/")switch(i[i.length-1][0]){case"number-style":case"date-style":case"time-style":m+=n.slice(b,p.index);break}else b=p.index+p[0].length;break;case"named-range":l=Qt(p[0],!1),H=Gl(l["cell-range-address"]);var ne={Name:l.name,Ref:H[0]+"!"+H[1]};U&&(ne.Sheet=y.length),O.Names.push(ne);break;case"text-content":break;case"text-properties":break;case"embedded-text":break;case"body":case"电子表格":break;case"forms":break;case"table-column":break;case"table-header-rows":break;case"table-rows":break;case"table-column-group":break;case"table-header-columns":break;case"table-columns":break;case"null-date":break;case"graphic-properties":break;case"calculation-settings":break;case"named-expressions":break;case"label-range":break;case"label-ranges":break;case"named-expression":break;case"sort":break;case"sort-by":break;case"sort-groups":break;case"tab":break;case"line-break":break;case"span":break;case"p":case"文本串":if(["master-styles"].indexOf(i[i.length-1][0])>-1)break;if(p[1]==="/"&&(!w||!w["string-value"])){var ge=lA(n.slice(o,p.index));u=(u.length>0?u+` +`:"")+ge[0]}else Qt(p[0],!1),o=p.index+p[0].length;break;case"s":break;case"database-range":if(p[1]==="/")break;try{H=Gl(Qt(p[0])["target-range-address"]),g[H[0]]["!autofilter"]={ref:H[1]}}catch{}break;case"date":break;case"object":break;case"title":case"标题":break;case"desc":break;case"binary-data":break;case"table-source":break;case"scenario":break;case"iteration":break;case"content-validations":break;case"content-validation":break;case"help-message":break;case"error-message":break;case"database-ranges":break;case"filter":break;case"filter-and":break;case"filter-or":break;case"filter-condition":break;case"list-level-style-bullet":break;case"list-level-style-number":break;case"list-level-properties":break;case"sender-firstname":case"sender-lastname":case"sender-initials":case"sender-title":case"sender-position":case"sender-email":case"sender-phone-private":case"sender-fax":case"sender-company":case"sender-phone-work":case"sender-street":case"sender-city":case"sender-postal-code":case"sender-country":case"sender-state-or-province":case"author-name":case"author-initials":case"chapter":case"file-name":case"template-name":case"sheet-name":break;case"event-listener":break;case"initial-creator":case"creation-date":case"print-date":case"generator":case"document-statistic":case"user-defined":case"editing-duration":case"editing-cycles":break;case"config-item":break;case"page-number":break;case"page-count":break;case"time":break;case"cell-range-source":break;case"detective":break;case"operation":break;case"highlighted-range":break;case"data-pilot-table":case"source-cell-range":case"source-service":case"data-pilot-field":case"data-pilot-level":case"data-pilot-subtotals":case"data-pilot-subtotal":case"data-pilot-members":case"data-pilot-member":case"data-pilot-display-info":case"data-pilot-sort-info":case"data-pilot-layout-info":case"data-pilot-field-reference":case"data-pilot-groups":case"data-pilot-group":case"data-pilot-group-member":break;case"rect":break;case"dde-connection-decls":case"dde-connection-decl":case"dde-link":case"dde-source":break;case"properties":break;case"property":break;case"a":if(p[1]!=="/"){if(F=Qt(p[0],!1),!F.href)break;F.Target=wr(F.href),delete F.href,F.Target.charAt(0)=="#"&&F.Target.indexOf(".")>-1?(H=Gl(F.Target.slice(1)),F.Target="#"+H[0]+"!"+H[1]):F.Target.match(/^\.\.[\\\/]/)&&(F.Target=F.Target.slice(3))}break;case"table-protection":break;case"data-pilot-grand-total":break;case"office-document-common-attrs":break;default:switch(p[2]){case"dc:":case"calcext:":case"loext:":case"ooo:":case"chartooo:":case"draw:":case"style:":case"chart:":case"form:":case"uof:":case"表:":case"字:":break;default:if(e.WTF)throw new Error(p)}}var ee={Sheets:g,SheetNames:y,Workbook:O};return e.bookSheets&&delete ee.Sheets,ee}function Kv(t,r){r=r||{},Wi(t,"META-INF/manifest.xml")&&j6(dn(t,"META-INF/manifest.xml"),r);var e=Ti(t,"content.xml");if(!e)throw new Error("Missing content.xml in ODS / UOF file");var n=wy(Nr(e),r);return Wi(t,"meta.xml")&&(n.Props=v1(dn(t,"meta.xml"))),n}function Yv(t,r){return wy(t,r)}var hA=function(){var t=["",'',"",'',"",'',"",""].join(""),r=""+t+"";return function(){return fn+r}}(),Zv=function(){var t=function(a){return Ir(a).replace(/ +/g,function(l){return''}).replace(/\t/g,"").replace(/\n/g,"").replace(/^ /,"").replace(/ $/,"")},r=` +`,e=` +`,n=function(a,l,d){var m=[];m.push(' +`);var b=0,h=0,_=Ki(a["!ref"]||"A1"),g=a["!merges"]||[],y=0,x=Array.isArray(a);if(a["!cols"])for(h=0;h<=_.e.c;++h)m.push(" +`);var p="",S=a["!rows"]||[];for(b=0;b<_.s.r;++b)p=S[b]?' table:style-name="ro'+S[b].ods+'"':"",m.push(" +`);for(;b<=_.e.r;++b){for(p=S[b]?' table:style-name="ro'+S[b].ods+'"':"",m.push(" +`),h=0;h<_.s.c;++h)m.push(r);for(;h<=_.e.c;++h){var w=!1,u={},o="";for(y=0;y!=g.length;++y)if(!(g[y].s.c>h)&&!(g[y].s.r>b)&&!(g[y].e.c +`)}return m.push(` +`),m.join("")},i=function(a,l){a.push(` +`),a.push(` +`),a.push(` +`),a.push(` / +`),a.push(` +`),a.push(` / +`),a.push(` +`),a.push(` +`);var d=0;l.SheetNames.map(function(b){return l.Sheets[b]}).forEach(function(b){if(b&&b["!cols"]){for(var h=0;h +`),a.push(' +`),a.push(` +`),++d}}});var m=0;l.SheetNames.map(function(b){return l.Sheets[b]}).forEach(function(b){if(b&&b["!rows"]){for(var h=0;h +`),a.push(' +`),a.push(` +`),++m}}}),a.push(` +`),a.push(` +`),a.push(` +`),a.push(` +`),a.push(` +`)};return function(l,d){var m=[fn],b=Mf({"xmlns:office":"urn:oasis:names:tc:opendocument:xmlns:office:1.0","xmlns:table":"urn:oasis:names:tc:opendocument:xmlns:table:1.0","xmlns:style":"urn:oasis:names:tc:opendocument:xmlns:style:1.0","xmlns:text":"urn:oasis:names:tc:opendocument:xmlns:text:1.0","xmlns:draw":"urn:oasis:names:tc:opendocument:xmlns:drawing:1.0","xmlns:fo":"urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0","xmlns:xlink":"http://www.w3.org/1999/xlink","xmlns:dc":"http://purl.org/dc/elements/1.1/","xmlns:meta":"urn:oasis:names:tc:opendocument:xmlns:meta:1.0","xmlns:number":"urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0","xmlns:presentation":"urn:oasis:names:tc:opendocument:xmlns:presentation:1.0","xmlns:svg":"urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0","xmlns:chart":"urn:oasis:names:tc:opendocument:xmlns:chart:1.0","xmlns:dr3d":"urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0","xmlns:math":"http://www.w3.org/1998/Math/MathML","xmlns:form":"urn:oasis:names:tc:opendocument:xmlns:form:1.0","xmlns:script":"urn:oasis:names:tc:opendocument:xmlns:script:1.0","xmlns:ooo":"http://openoffice.org/2004/office","xmlns:ooow":"http://openoffice.org/2004/writer","xmlns:oooc":"http://openoffice.org/2004/calc","xmlns:dom":"http://www.w3.org/2001/xml-events","xmlns:xforms":"http://www.w3.org/2002/xforms","xmlns:xsd":"http://www.w3.org/2001/XMLSchema","xmlns:xsi":"http://www.w3.org/2001/XMLSchema-instance","xmlns:sheet":"urn:oasis:names:tc:opendocument:sh33tjs:1.0","xmlns:rpt":"http://openoffice.org/2005/report","xmlns:of":"urn:oasis:names:tc:opendocument:xmlns:of:1.2","xmlns:xhtml":"http://www.w3.org/1999/xhtml","xmlns:grddl":"http://www.w3.org/2003/g/data-view#","xmlns:tableooo":"http://openoffice.org/2009/table","xmlns:drawooo":"http://openoffice.org/2010/draw","xmlns:calcext":"urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0","xmlns:loext":"urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0","xmlns:field":"urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0","xmlns:formx":"urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0","xmlns:css3t":"http://www.w3.org/TR/css3-text/","office:version":"1.2"}),h=Mf({"xmlns:config":"urn:oasis:names:tc:opendocument:xmlns:config:1.0","office:mimetype":"application/vnd.oasis.opendocument.spreadsheet"});d.bookType=="fods"?(m.push(" +`),m.push(p1().replace(/office:document-meta/g,"office:meta"))):m.push(" +`),i(m,l),m.push(` +`),m.push(` +`);for(var _=0;_!=l.SheetNames.length;++_)m.push(n(l.Sheets[l.SheetNames[_]],l,_));return m.push(` +`),m.push(` +`),d.bookType=="fods"?m.push(""):m.push(""),m.join("")}}();function Sy(t,r){if(r.bookType=="fods")return Zv(t,r);var e=Wh(),n="",i=[],a=[];return n="mimetype",sr(e,n,"application/vnd.oasis.opendocument.spreadsheet"),n="content.xml",sr(e,n,Zv(t,r)),i.push([n,"text/xml"]),a.push([n,"ContentFile"]),n="styles.xml",sr(e,n,hA(t,r)),i.push([n,"text/xml"]),a.push([n,"StylesFile"]),n="meta.xml",sr(e,n,fn+p1()),i.push([n,"text/xml"]),a.push([n,"MetadataFile"]),n="manifest.rdf",sr(e,n,X6(a)),i.push([n,"application/rdf+xml"]),n="META-INF/manifest.xml",sr(e,n,U6(i)),e}/*! sheetjs (C) 2013-present SheetJS -- http://sheetjs.com */function Ws(t){return new DataView(t.buffer,t.byteOffset,t.byteLength)}function Eh(t){return typeof TextDecoder<"u"?new TextDecoder().decode(t):Nr(ys(t))}function dA(t){return typeof TextEncoder<"u"?new TextEncoder().encode(t):Ei(xa(t))}function pA(t,r){e:for(var e=0;e<=t.length-r.length;++e){for(var n=0;n>1&1431655765,t=(t&858993459)+(t>>2&858993459),(t+(t>>4)&252645135)*16843009>>>24}function vA(t,r){for(var e=(t[r+15]&127)<<7|t[r+14]>>1,n=t[r+14]&1,i=r+13;i>=r;--i)n=n*256+t[i];return(t[r+15]&128?-n:n)*Math.pow(10,e-6176)}function mA(t,r,e){var n=Math.floor(e==0?0:Math.LOG10E*Math.log(Math.abs(e)))+6176-20,i=e/Math.pow(10,n-6176);t[r+15]|=n>>7,t[r+14]|=(n&127)<<1;for(var a=0;i>=1;++a,i/=256)t[r+a]=i&255;t[r+15]|=e>=0?0:128}function Xf(t,r){var e=r?r[0]:0,n=t[e]&127;e:if(t[e++]>=128&&(n|=(t[e]&127)<<7,t[e++]<128||(n|=(t[e]&127)<<14,t[e++]<128)||(n|=(t[e]&127)<<21,t[e++]<128)||(n+=(t[e]&127)*Math.pow(2,28),++e,t[e++]<128)||(n+=(t[e]&127)*Math.pow(2,35),++e,t[e++]<128)||(n+=(t[e]&127)*Math.pow(2,42),++e,t[e++]<128)))break e;return r&&(r[0]=e),n}function Pr(t){var r=new Uint8Array(7);r[0]=t&127;var e=1;e:if(t>127){if(r[e-1]|=128,r[e]=t>>7&127,++e,t<=16383||(r[e-1]|=128,r[e]=t>>14&127,++e,t<=2097151)||(r[e-1]|=128,r[e]=t>>21&127,++e,t<=268435455)||(r[e-1]|=128,r[e]=t/256>>>21&127,++e,t<=34359738367)||(r[e-1]|=128,r[e]=t/65536>>>21&127,++e,t<=4398046511103))break e;r[e-1]|=128,r[e]=t/16777216>>>21&127,++e}return r.slice(0,e)}function Qr(t){var r=0,e=t[r]&127;e:if(t[r++]>=128){if(e|=(t[r]&127)<<7,t[r++]<128||(e|=(t[r]&127)<<14,t[r++]<128)||(e|=(t[r]&127)<<21,t[r++]<128))break e;e|=(t[r]&127)<<28}return e}function Sr(t){for(var r=[],e=[0];e[0]=128;);d=t.slice(m,e[0])}break;case 5:l=4,d=t.slice(e[0],e[0]+l),e[0]+=l;break;case 1:l=8,d=t.slice(e[0],e[0]+l),e[0]+=l;break;case 2:l=Xf(t,e),d=t.slice(e[0],e[0]+l),e[0]+=l;break;case 3:case 4:default:throw new Error("PB Type ".concat(a," for Field ").concat(i," at offset ").concat(n))}var b={data:d,type:a};r[i]==null?r[i]=[b]:r[i].push(b)}return r}function Pn(t){var r=[];return t.forEach(function(e,n){e.forEach(function(i){i.data&&(r.push(Pr(n*8+i.type)),i.type==2&&r.push(Pr(i.data.length)),r.push(i.data))})}),ms(r)}function v0(t,r){return(t==null?void 0:t.map(function(e){return r(e.data)}))||[]}function Xi(t){for(var r,e=[],n=[0];n[0]>>0>0),e.push(l)}return e}function Ao(t){var r=[];return t.forEach(function(e){var n=[];n[1]=[{data:Pr(e.id),type:0}],n[2]=[],e.merge!=null&&(n[3]=[{data:Pr(+!!e.merge),type:0}]);var i=[];e.messages.forEach(function(l){i.push(l.data),l.meta[3]=[{type:0,data:Pr(l.data.length)}],n[2].push({data:Pn(l.meta),type:2})});var a=Pn(n);r.push(Pr(a.length)),r.push(a),i.forEach(function(l){return r.push(l)})}),ms(r)}function yA(t,r){if(t!=0)throw new Error("Unexpected Snappy chunk type ".concat(t));for(var e=[0],n=Xf(r,e),i=[];e[0]>2;if(l<60)++l;else{var d=l-59;l=r[e[0]],d>1&&(l|=r[e[0]+1]<<8),d>2&&(l|=r[e[0]+2]<<16),d>3&&(l|=r[e[0]+3]<<24),l>>>=0,l++,e[0]+=d}i.push(r.slice(e[0],e[0]+l)),e[0]+=l;continue}else{var m=0,b=0;if(a==1?(b=(r[e[0]]>>2&7)+4,m=(r[e[0]++]&224)<<3,m|=r[e[0]++]):(b=(r[e[0]++]>>2)+1,a==2?(m=r[e[0]]|r[e[0]+1]<<8,e[0]+=2):(m=(r[e[0]]|r[e[0]+1]<<8|r[e[0]+2]<<16|r[e[0]+3]<<24)>>>0,e[0]+=4)),i=[ms(i)],m==0)throw new Error("Invalid offset 0");if(m>i[0].length)throw new Error("Invalid offset beyond length");if(b>=m)for(i.push(i[0].slice(-m)),b-=m;b>=i[i.length-1].length;)i.push(i[i.length-1]),b-=i[i.length-1].length;i.push(i[0].slice(-m,-m+b))}}var h=ms(i);if(h.length!=n)throw new Error("Unexpected length: ".concat(h.length," != ").concat(n));return h}function zi(t){for(var r=[],e=0;e>8&255]))):n<=16777216?(l+=4,r.push(new Uint8Array([248,n-1&255,n-1>>8&255,n-1>>16&255]))):n<=4294967296&&(l+=5,r.push(new Uint8Array([252,n-1&255,n-1>>8&255,n-1>>16&255,n-1>>>24&255]))),r.push(t.slice(e,e+n)),l+=n,i[0]=0,i[1]=l&255,i[2]=l>>8&255,i[3]=l>>16&255,e+=n}return ms(r)}function gA(t,r,e,n){var i=Ws(t),a=i.getUint32(4,!0),l=(n>1?12:8)+Jv(a&(n>1?3470:398))*4,d=-1,m=-1,b=NaN,h=new Date(2001,0,1);a&512&&(d=i.getUint32(l,!0),l+=4),l+=Jv(a&(n>1?12288:4096))*4,a&16&&(m=i.getUint32(l,!0),l+=4),a&32&&(b=i.getFloat64(l,!0),l+=8),a&64&&(h.setTime(h.getTime()+i.getFloat64(l,!0)*1e3),l+=8);var _;switch(t[2]){case 0:break;case 2:_={t:"n",v:b};break;case 3:_={t:"s",v:r[m]};break;case 5:_={t:"d",v:h};break;case 6:_={t:"b",v:b>0};break;case 7:_={t:"n",v:b/86400};break;case 8:_={t:"e",v:0};break;case 9:if(d>-1)_={t:"s",v:e[d]};else if(m>-1)_={t:"s",v:r[m]};else if(!isNaN(b))_={t:"n",v:b};else throw new Error("Unsupported cell type ".concat(t.slice(0,4)));break;default:throw new Error("Unsupported cell type ".concat(t.slice(0,4)))}return _}function bA(t,r,e){var n=Ws(t),i=n.getUint32(8,!0),a=12,l=-1,d=-1,m=NaN,b=NaN,h=new Date(2001,0,1);i&1&&(m=vA(t,a),a+=16),i&2&&(b=n.getFloat64(a,!0),a+=8),i&4&&(h.setTime(h.getTime()+n.getFloat64(a,!0)*1e3),a+=8),i&8&&(d=n.getUint32(a,!0),a+=4),i&16&&(l=n.getUint32(a,!0),a+=4);var _;switch(t[1]){case 0:break;case 2:_={t:"n",v:m};break;case 3:_={t:"s",v:r[d]};break;case 5:_={t:"d",v:h};break;case 6:_={t:"b",v:b>0};break;case 7:_={t:"n",v:b/86400};break;case 8:_={t:"e",v:0};break;case 9:if(l>-1)_={t:"s",v:e[l]};else throw new Error("Unsupported cell type ".concat(t[1]," : ").concat(i&31," : ").concat(t.slice(0,4)));break;case 10:_={t:"n",v:m};break;default:throw new Error("Unsupported cell type ".concat(t[1]," : ").concat(i&31," : ").concat(t.slice(0,4)))}return _}function Yl(t,r){var e=new Uint8Array(32),n=Ws(e),i=12,a=0;switch(e[0]=5,t.t){case"n":e[1]=2,mA(e,i,t.v),a|=1,i+=16;break;case"b":e[1]=6,n.setFloat64(i,t.v?1:0,!0),a|=2,i+=8;break;case"s":if(r.indexOf(t.v)==-1)throw new Error("Value ".concat(t.v," missing from SST!"));e[1]=3,n.setUint32(i,r.indexOf(t.v),!0),a|=8,i+=4;break;default:throw"unsupported cell type "+t.t}return n.setUint32(8,a,!0),e.slice(0,i)}function Zl(t,r){var e=new Uint8Array(32),n=Ws(e),i=12,a=0;switch(e[0]=3,t.t){case"n":e[2]=2,n.setFloat64(i,t.v,!0),a|=32,i+=8;break;case"b":e[2]=6,n.setFloat64(i,t.v?1:0,!0),a|=32,i+=8;break;case"s":if(r.indexOf(t.v)==-1)throw new Error("Value ".concat(t.v," missing from SST!"));e[2]=3,n.setUint32(i,r.indexOf(t.v),!0),a|=16,i+=4;break;default:throw"unsupported cell type "+t.t}return n.setUint32(4,a,!0),e.slice(0,i)}function _A(t,r,e){switch(t[0]){case 0:case 1:case 2:case 3:return gA(t,r,e,t[0]);case 5:return bA(t,r,e);default:throw new Error("Unsupported payload version ".concat(t[0]))}}function jn(t){var r=Sr(t);return Xf(r[1][0].data)}function Qv(t,r){var e=Sr(r.data),n=Qr(e[1][0].data),i=e[3],a=[];return(i||[]).forEach(function(l){var d=Sr(l.data),m=Qr(d[1][0].data)>>>0;switch(n){case 1:a[m]=Eh(d[3][0].data);break;case 8:{var b=t[jn(d[9][0].data)][0],h=Sr(b.data),_=t[jn(h[1][0].data)][0],g=Qr(_.meta[1][0].data);if(g!=2001)throw new Error("2000 unexpected reference to ".concat(g));var y=Sr(_.data);a[m]=y[3].map(function(x){return Eh(x.data)}).join("")}break}}),a}function xA(t,r){var e,n,i,a,l,d,m,b,h,_,g,y,x,p,S=Sr(t),w=Qr(S[1][0].data)>>>0,u=Qr(S[2][0].data)>>>0,o=((n=(e=S[8])==null?void 0:e[0])==null?void 0:n.data)&&Qr(S[8][0].data)>0||!1,s,c;if((a=(i=S[7])==null?void 0:i[0])!=null&&a.data&&r!=0)s=(d=(l=S[7])==null?void 0:l[0])==null?void 0:d.data,c=(b=(m=S[6])==null?void 0:m[0])==null?void 0:b.data;else if((_=(h=S[4])==null?void 0:h[0])!=null&&_.data&&r!=1)s=(y=(g=S[4])==null?void 0:g[0])==null?void 0:y.data,c=(p=(x=S[3])==null?void 0:x[0])==null?void 0:p.data;else throw"NUMBERS Tile missing ".concat(r," cell storage");for(var f=o?4:1,v=Ws(s),k=[],T=0;T=1&&(D[k[k.length-1][0]]=c.subarray(k[k.length-1][1]*f)),{R:w,cells:D}}function wA(t,r){var e,n=Sr(r.data),i=(e=n==null?void 0:n[7])!=null&&e[0]?Qr(n[7][0].data)>>>0>0?1:0:-1,a=v0(n[5],function(l){return xA(l,i)});return{nrows:Qr(n[4][0].data)>>>0,data:a.reduce(function(l,d){return l[d.R]||(l[d.R]=[]),d.cells.forEach(function(m,b){if(l[d.R][b])throw new Error("Duplicate cell r=".concat(d.R," c=").concat(b));l[d.R][b]=m}),l},[])}}function SA(t,r,e){var n,i=Sr(r.data),a={s:{r:0,c:0},e:{r:0,c:0}};if(a.e.r=(Qr(i[6][0].data)>>>0)-1,a.e.r<0)throw new Error("Invalid row varint ".concat(i[6][0].data));if(a.e.c=(Qr(i[7][0].data)>>>0)-1,a.e.c<0)throw new Error("Invalid col varint ".concat(i[7][0].data));e["!ref"]=pr(a);var l=Sr(i[4][0].data),d=Qv(t,t[jn(l[4][0].data)][0]),m=(n=l[17])!=null&&n[0]?Qv(t,t[jn(l[17][0].data)][0]):[],b=Sr(l[3][0].data),h=0;b[1].forEach(function(_){var g=Sr(_.data),y=t[jn(g[2][0].data)][0],x=Qr(y.meta[1][0].data);if(x!=6002)throw new Error("6001 unexpected reference to ".concat(x));var p=wA(t,y);p.data.forEach(function(S,w){S.forEach(function(u,o){var s=er({r:h+w,c:o}),c=_A(u,d,m);c&&(e[s]=c)})}),h+=p.nrows})}function kA(t,r){var e=Sr(r.data),n={"!ref":"A1"},i=t[jn(e[2][0].data)],a=Qr(i[0].meta[1][0].data);if(a!=6001)throw new Error("6000 unexpected reference to ".concat(a));return SA(t,i[0],n),n}function EA(t,r){var e,n=Sr(r.data),i={name:(e=n[1])!=null&&e[0]?Eh(n[1][0].data):"",sheets:[]},a=v0(n[2],jn);return a.forEach(function(l){t[l].forEach(function(d){var m=Qr(d.meta[1][0].data);m==6e3&&i.sheets.push(kA(t,d))})}),i}function TA(t,r){var e=Ay(),n=Sr(r.data),i=v0(n[1],jn);if(i.forEach(function(a){t[a].forEach(function(l){var d=Qr(l.meta[1][0].data);if(d==2){var m=EA(t,l);m.sheets.forEach(function(b,h){Py(e,b,h==0?m.name:m.name+"_"+h,!0)})}})}),e.SheetNames.length==0)throw new Error("Empty NUMBERS file");return e}function Jl(t){var r,e,n,i,a={},l=[];if(t.FullPaths.forEach(function(m){if(m.match(/\.iwpv2/))throw new Error("Unsupported password protection")}),t.FileIndex.forEach(function(m){if(m.name.match(/\.iwa$/)){var b;try{b=zi(m.content)}catch(_){return console.log("?? "+m.content.length+" "+(_.message||_))}var h;try{h=Xi(b)}catch(_){return console.log("## "+(_.message||_))}h.forEach(function(_){a[_.id]=_.messages,l.push(_.id)})}}),!l.length)throw new Error("File has no messages");var d=((i=(n=(e=(r=a==null?void 0:a[1])==null?void 0:r[0])==null?void 0:e.meta)==null?void 0:n[1])==null?void 0:i[0].data)&&Qr(a[1][0].meta[1][0].data)==1&&a[1][0];if(d||l.forEach(function(m){a[m].forEach(function(b){var h=Qr(b.meta[1][0].data)>>>0;if(h==1)if(!d)d=b;else throw new Error("Document has multiple roots")})}),!d)throw new Error("Cannot find Document root");return TA(a,d)}function OA(t,r,e){var n,i,a,l;if(!((n=t[6])!=null&&n[0])||!((i=t[7])!=null&&i[0]))throw"Mutation only works on post-BNC storages!";var d=((l=(a=t[8])==null?void 0:a[0])==null?void 0:l.data)&&Qr(t[8][0].data)>0||!1;if(d)throw"Math only works with normal offsets";for(var m=0,b=Ws(t[7][0].data),h=0,_=[],g=Ws(t[4][0].data),y=0,x=[],p=0;p1&&console.error("The Numbers writer currently writes only the first table");var n=Ki(e["!ref"]);n.s.r=n.s.c=0;var i=!1;n.e.c>9&&(i=!0,n.e.c=9),n.e.r>49&&(i=!0,n.e.r=49),i&&console.error("The Numbers writer is currently limited to ".concat(pr(n)));var a=Cy(e,{range:n,header:1}),l=["~Sh33tJ5~"];a.forEach(function(X){return X.forEach(function(I){typeof I=="string"&&l.push(I)})});var d={},m=[],b=$t.read(r.numbers,{type:"base64"});b.FileIndex.map(function(X,I){return[X,b.FullPaths[I]]}).forEach(function(X){var I=X[0],N=X[1];if(I.type==2&&I.name.match(/\.iwa/)){var U=I.content,G=zi(U),te=Xi(G);te.forEach(function(re){m.push(re.id),d[re.id]={deps:[],location:N,type:Qr(re.messages[0].meta[1][0].data)}})}}),m.sort(function(X,I){return X-I});var h=m.filter(function(X){return X>1}).map(function(X){return[X,Pr(X)]});b.FileIndex.map(function(X,I){return[X,b.FullPaths[I]]}).forEach(function(X){var I=X[0];if(X[1],!!I.name.match(/\.iwa/)){var N=Xi(zi(I.content));N.forEach(function(U){U.messages.forEach(function(G){h.forEach(function(te){U.messages.some(function(re){return Qr(re.meta[1][0].data)!=11006&&pA(re.data,te[1])})&&d[te[0]].deps.push(U.id)})})})}});for(var _=$t.find(b,d[1].location),g=Xi(zi(_.content)),y,x=0;x-1?"sheet":t==hr.CS?"chart":t==hr.DS?"dialog":t==hr.MS?"macro":t&&t.length?t:"sheet"}function AA(t,r){if(!t)return 0;try{t=r.map(function(n){return n.id||(n.id=n.strRelID),[n.name,t["!id"][n.id].Target,RA(t["!id"][n.id].Type)]})}catch{return null}return!t||t.length===0?null:t}function PA(t,r,e,n,i,a,l,d,m,b,h,_){try{a[n]=Ef(Ti(t,e,!0),r);var g=dn(t,r),y;switch(d){case"sheet":y=eR(g,r,i,m,a[n],b,h,_);break;case"chart":if(y=tR(g,r,i,m,a[n],b,h,_),!y||!y["!drawel"])break;var x=xf(y["!drawel"].Target,r),p=Nf(x),S=HT(Ti(t,x,!0),Ef(Ti(t,p,!0),x)),w=xf(S,x),u=Nf(w);y=C9(Ti(t,w,!0),w,m,Ef(Ti(t,u,!0),w),b,y);break;case"macro":y=rR(g,r,i,m,a[n],b,h,_);break;case"dialog":y=nR(g,r,i,m,a[n],b,h,_);break;default:throw new Error("Unrecognized sheet type "+d)}l[n]=y;var o=[];a&&a[n]&&on(a[n]).forEach(function(s){var c="";if(a[n][s].Type==hr.CMNT){c=xf(a[n][s].Target,r);var f=oR(dn(t,c,!0),c,m);if(!f||!f.length)return;Lv(y,f,!1)}a[n][s].Type==hr.TCMNT&&(c=xf(a[n][s].Target,r),o=o.concat(zT(dn(t,c,!0),m)))}),o&&o.length&&Lv(y,o,!0,m.people||[])}catch(s){if(m.WTF)throw s}}function Ui(t){return t.charAt(0)=="/"?t.slice(1):t}function FA(t,r){if(Wo(),r=r||{},m0(r),Wi(t,"META-INF/manifest.xml")||Wi(t,"objectdata.xml"))return Kv(t,r);if(Wi(t,"Index/Document.iwa")){if(typeof Uint8Array>"u")throw new Error("NUMBERS file parsing requires Uint8Array support");if(typeof Jl<"u"){if(t.FileIndex)return Jl(t);var e=$t.utils.cfb_new();return av(t).forEach(function(M){sr(e,M,Hm(t,M))}),Jl(e)}throw new Error("Unsupported NUMBERS file")}if(!Wi(t,"[Content_Types].xml"))throw Wi(t,"index.xml.gz")?new Error("Unsupported NUMBERS 08 file"):Wi(t,"index.xml")?new Error("Unsupported NUMBERS 09 file"):new Error("Unsupported ZIP file");var n=av(t),i=B6(Ti(t,"[Content_Types].xml")),a=!1,l,d;if(i.workbooks.length===0&&(d="xl/workbook.xml",dn(t,d,!0)&&i.workbooks.push(d)),i.workbooks.length===0){if(d="xl/workbook.bin",!dn(t,d,!0))throw new Error("Could not find workbook");i.workbooks.push(d),a=!0}i.workbooks[0].slice(-3)=="bin"&&(a=!0);var m={},b={};if(!r.bookSheets&&!r.bookProps){if(Tf=[],i.sst)try{Tf=sR(dn(t,Ui(i.sst)),i.sst,r)}catch(M){if(r.WTF)throw M}r.cellStyles&&i.themes.length&&(m=aR(Ti(t,i.themes[0].replace(/^\//,""),!0)||"",i.themes[0],r)),i.style&&(b=iR(dn(t,Ui(i.style)),i.style,m,r))}i.links.map(function(M){try{var B=Ef(Ti(t,Nf(Ui(M))),M);return uR(dn(t,Ui(M)),B,M,r)}catch{}});var h=q9(dn(t,Ui(i.workbooks[0])),i.workbooks[0],r),_={},g="";i.coreprops.length&&(g=dn(t,Ui(i.coreprops[0]),!0),g&&(_=v1(g)),i.extprops.length!==0&&(g=dn(t,Ui(i.extprops[0]),!0),g&&W6(g,_,r)));var y={};(!r.bookSheets||r.bookProps)&&i.custprops.length!==0&&(g=Ti(t,Ui(i.custprops[0]),!0),g&&(y=$6(g,r)));var x={};if((r.bookSheets||r.bookProps)&&(h.Sheets?l=h.Sheets.map(function(B){return B.name}):_.Worksheets&&_.SheetNames.length>0&&(l=_.SheetNames),r.bookProps&&(x.Props=_,x.Custprops=y),r.bookSheets&&typeof l<"u"&&(x.SheetNames=l),r.bookSheets?x.SheetNames:r.bookProps))return x;l={};var p={};r.bookDeps&&i.calcchain&&(p=fR(dn(t,Ui(i.calcchain)),i.calcchain));var S=0,w={},u,o;{var s=h.Sheets;_.Worksheets=s.length,_.SheetNames=[];for(var c=0;c!=s.length;++c)_.SheetNames[c]=s[c].name}var f=a?"bin":"xml",v=i.workbooks[0].lastIndexOf("/"),k=(i.workbooks[0].slice(0,v+1)+"_rels/"+i.workbooks[0].slice(v+1)+".rels").replace(/^\//,"");Wi(t,k)||(k="xl/_rels/workbook."+f+".rels");var T=Ef(Ti(t,k,!0),k.replace(/_rels.*/,"s5s"));(i.metadata||[]).length>=1&&(r.xlmeta=cR(dn(t,Ui(i.metadata[0])),i.metadata[0],r)),(i.people||[]).length>=1&&(r.people=VT(dn(t,Ui(i.people[0])),r)),T&&(T=AA(T,h.Sheets));var C=dn(t,"xl/worksheets/sheet.xml",!0)?1:0;e:for(S=0;S!=_.Worksheets;++S){var D="sheet";if(T&&T[S]?(u="xl/"+T[S][1].replace(/[\/]?xl\//,""),Wi(t,u)||(u=T[S][1]),Wi(t,u)||(u=k.replace(/_rels\/.*$/,"")+T[S][1]),D=T[S][2]):(u="xl/worksheets/sheet"+(S+1-C)+"."+f,u=u.replace(/sheet0\./,"sheet.")),o=u.replace(/^(.*)(\/)([^\/]*)$/,"$1/_rels/$3.rels"),r&&r.sheets!=null)switch(typeof r.sheets){case"number":if(S!=r.sheets)continue e;break;case"string":if(_.SheetNames[S].toLowerCase()!=r.sheets.toLowerCase())continue e;break;default:if(Array.isArray&&Array.isArray(r.sheets)){for(var j=!1,L=0;L!=r.sheets.length;++L)typeof r.sheets[L]=="number"&&r.sheets[L]==S&&(j=1),typeof r.sheets[L]=="string"&&r.sheets[L].toLowerCase()==_.SheetNames[S].toLowerCase()&&(j=1);if(!j)continue e}}PA(t,u,o,_.SheetNames[S],S,w,l,D,r,h,m,b)}return x={Directory:i,Workbook:h,Props:_,Custprops:y,Deps:p,Sheets:l,SheetNames:_.SheetNames,Strings:Tf,Styles:b,Themes:m,SSF:Hr(Jt)},r&&r.bookFiles&&(t.files?(x.keys=n,x.files=t.files):(x.keys=[],x.files={},t.FullPaths.forEach(function(M,B){M=M.replace(/^Root Entry[\/]/,""),x.keys.push(M),x.files[M]=t.FileIndex[B]}))),r&&r.bookVBA&&(i.vba.length>0?x.vbaraw=dn(t,Ui(i.vba[0]),!0):i.defaults&&i.defaults.bin===qT&&(x.vbaraw=dn(t,"xl/vbaProject.bin",!0))),x}function IA(t,r){var e=r||{},n="Workbook",i=$t.find(t,n);try{if(n="/!DataSpaces/Version",i=$t.find(t,n),!i||!i.content)throw new Error("ECMA-376 Encrypted file missing "+n);if(c5(i.content),n="/!DataSpaces/DataSpaceMap",i=$t.find(t,n),!i||!i.content)throw new Error("ECMA-376 Encrypted file missing "+n);var a=h5(i.content);if(a.length!==1||a[0].comps.length!==1||a[0].comps[0].t!==0||a[0].name!=="StrongEncryptionDataSpace"||a[0].comps[0].v!=="EncryptedPackage")throw new Error("ECMA-376 Encrypted file bad "+n);if(n="/!DataSpaces/DataSpaceInfo/StrongEncryptionDataSpace",i=$t.find(t,n),!i||!i.content)throw new Error("ECMA-376 Encrypted file missing "+n);var l=d5(i.content);if(l.length!=1||l[0]!="StrongEncryptionTransform")throw new Error("ECMA-376 Encrypted file bad "+n);if(n="/!DataSpaces/TransformInfo/StrongEncryptionTransform/!Primary",i=$t.find(t,n),!i||!i.content)throw new Error("ECMA-376 Encrypted file missing "+n);v5(i.content)}catch{}if(n="/EncryptionInfo",i=$t.find(t,n),!i||!i.content)throw new Error("ECMA-376 Encrypted file missing "+n);var d=m5(i.content);if(n="/EncryptedPackage",i=$t.find(t,n),!i||!i.content)throw new Error("ECMA-376 Encrypted file missing "+n);if(d[0]==4&&typeof decrypt_agile<"u")return decrypt_agile(d[1],i.content,e.password||"",e);if(d[0]==2&&typeof decrypt_std76<"u")return decrypt_std76(d[1],i.content,e.password||"",e);throw new Error("File is password-protected")}function MA(t,r){return r.bookType=="ods"?Sy(t,r):r.bookType=="numbers"?CA(t,r):r.bookType=="xlsb"?DA(t,r):NA(t,r)}function DA(t,r){Mo=1024,t&&!t.SSF&&(t.SSF=Hr(Jt)),t&&t.SSF&&(Wo(),Ac(t.SSF),r.revssf=Fc(t.SSF),r.revssf[t.SSF[65535]]=0,r.ssf=t.SSF),r.rels={},r.wbrels={},r.Strings=[],r.Strings.Count=0,r.Strings.Unique=0,Of?r.revStrings=new Map:(r.revStrings={},r.revStrings.foo=[],delete r.revStrings.foo);var e=r.bookType=="xlsb"?"bin":"xml",n=ey.indexOf(r.bookType)>-1,i=r0();y0(r=r||{});var a=Wh(),l="",d=0;if(r.cellXfs=[],gs(r.cellXfs,{},{revssf:{General:0}}),t.Props||(t.Props={}),l="docProps/core.xml",sr(a,l,m1(t.Props,r)),i.coreprops.push(l),Fr(r.rels,2,l,hr.CORE_PROPS),l="docProps/app.xml",!(t.Props&&t.Props.SheetNames))if(!t.Workbook||!t.Workbook.Sheets)t.Props.SheetNames=t.SheetNames;else{for(var m=[],b=0;b0&&(l="docProps/custom.xml",sr(a,l,_1(t.Custprops)),i.custprops.push(l),Fr(r.rels,4,l,hr.CUST_PROPS)),d=1;d<=t.SheetNames.length;++d){var h={"!id":{}},_=t.Sheets[t.SheetNames[d-1]],g=(_||{})["!type"]||"sheet";switch(g){case"chart":default:l="xl/worksheets/sheet"+d+"."+e,sr(a,l,hR(d-1,l,r,t,h)),i.sheets.push(l),Fr(r.wbrels,-1,"worksheets/sheet"+d+"."+e,hr.WS[0])}if(_){var y=_["!comments"],x=!1,p="";y&&y.length>0&&(p="xl/comments"+d+"."+e,sr(a,p,vR(y,p)),i.comments.push(p),Fr(h,-1,"../comments"+d+"."+e,hr.CMNT),x=!0),_["!legacy"]&&x&&sr(a,"xl/drawings/vmlDrawing"+d+".vml",Q1(d,_["!comments"])),delete _["!comments"],delete _["!legacy"]}h["!id"].rId1&&sr(a,Nf(l),No(h))}return r.Strings!=null&&r.Strings.length>0&&(l="xl/sharedStrings."+e,sr(a,l,pR(r.Strings,l,r)),i.strs.push(l),Fr(r.wbrels,-1,"sharedStrings."+e,hr.SST)),l="xl/workbook."+e,sr(a,l,lR(t,l)),i.workbooks.push(l),Fr(r.rels,1,l,hr.WB),l="xl/theme/theme1.xml",sr(a,l,f0(t.Themes,r)),i.themes.push(l),Fr(r.wbrels,-1,"theme/theme1.xml",hr.THEME),l="xl/styles."+e,sr(a,l,dR(t,l,r)),i.styles.push(l),Fr(r.wbrels,-1,"styles."+e,hr.STY),t.vbaraw&&n&&(l="xl/vbaProject.bin",sr(a,l,t.vbaraw),i.vba.push(l),Fr(r.wbrels,-1,"vbaProject.bin",hr.VBA)),l="xl/metadata."+e,sr(a,l,mR(l)),i.metadata.push(l),Fr(r.wbrels,-1,"metadata."+e,hr.XLMETA),sr(a,"[Content_Types].xml",d1(i,r)),sr(a,"_rels/.rels",No(r.rels)),sr(a,"xl/_rels/workbook."+e+".rels",No(r.wbrels)),delete r.revssf,delete r.ssf,a}function NA(t,r){Mo=1024,t&&!t.SSF&&(t.SSF=Hr(Jt)),t&&t.SSF&&(Wo(),Ac(t.SSF),r.revssf=Fc(t.SSF),r.revssf[t.SSF[65535]]=0,r.ssf=t.SSF),r.rels={},r.wbrels={},r.Strings=[],r.Strings.Count=0,r.Strings.Unique=0,Of?r.revStrings=new Map:(r.revStrings={},r.revStrings.foo=[],delete r.revStrings.foo);var e="xml",n=ey.indexOf(r.bookType)>-1,i=r0();y0(r=r||{});var a=Wh(),l="",d=0;if(r.cellXfs=[],gs(r.cellXfs,{},{revssf:{General:0}}),t.Props||(t.Props={}),l="docProps/core.xml",sr(a,l,m1(t.Props,r)),i.coreprops.push(l),Fr(r.rels,2,l,hr.CORE_PROPS),l="docProps/app.xml",!(t.Props&&t.Props.SheetNames))if(!t.Workbook||!t.Workbook.Sheets)t.Props.SheetNames=t.SheetNames;else{for(var m=[],b=0;b0&&(l="docProps/custom.xml",sr(a,l,_1(t.Custprops)),i.custprops.push(l),Fr(r.rels,4,l,hr.CUST_PROPS));var h=["SheetJ5"];for(r.tcid=0,d=1;d<=t.SheetNames.length;++d){var _={"!id":{}},g=t.Sheets[t.SheetNames[d-1]],y=(g||{})["!type"]||"sheet";switch(y){case"chart":default:l="xl/worksheets/sheet"+d+"."+e,sr(a,l,ly(d-1,r,t,_)),i.sheets.push(l),Fr(r.wbrels,-1,"worksheets/sheet"+d+"."+e,hr.WS[0])}if(g){var x=g["!comments"],p=!1,S="";if(x&&x.length>0){var w=!1;x.forEach(function(u){u[1].forEach(function(o){o.T==!0&&(w=!0)})}),w&&(S="xl/threadedComments/threadedComment"+d+"."+e,sr(a,S,WT(x,h,r)),i.threadedcomments.push(S),Fr(_,-1,"../threadedComments/threadedComment"+d+"."+e,hr.TCMNT)),S="xl/comments"+d+"."+e,sr(a,S,q1(x)),i.comments.push(S),Fr(_,-1,"../comments"+d+"."+e,hr.CMNT),p=!0}g["!legacy"]&&p&&sr(a,"xl/drawings/vmlDrawing"+d+".vml",Q1(d,g["!comments"])),delete g["!comments"],delete g["!legacy"]}_["!id"].rId1&&sr(a,Nf(l),No(_))}return r.Strings!=null&&r.Strings.length>0&&(l="xl/sharedStrings."+e,sr(a,l,U1(r.Strings,r)),i.strs.push(l),Fr(r.wbrels,-1,"sharedStrings."+e,hr.SST)),l="xl/workbook."+e,sr(a,l,my(t)),i.workbooks.push(l),Fr(r.rels,1,l,hr.WB),l="xl/theme/theme1.xml",sr(a,l,f0(t.Themes,r)),i.themes.push(l),Fr(r.wbrels,-1,"theme/theme1.xml",hr.THEME),l="xl/styles."+e,sr(a,l,K1(t,r)),i.styles.push(l),Fr(r.wbrels,-1,"styles."+e,hr.STY),t.vbaraw&&n&&(l="xl/vbaProject.bin",sr(a,l,t.vbaraw),i.vba.push(l),Fr(r.wbrels,-1,"vbaProject.bin",hr.VBA)),l="xl/metadata."+e,sr(a,l,J1()),i.metadata.push(l),Fr(r.wbrels,-1,"metadata."+e,hr.XLMETA),h.length>1&&(l="xl/persons/person.xml",sr(a,l,$T(h)),i.people.push(l),Fr(r.wbrels,-1,"persons/person.xml",hr.PEOPLE)),sr(a,"[Content_Types].xml",d1(i,r)),sr(a,"_rels/.rels",No(r.rels)),sr(a,"xl/_rels/workbook."+e+".rels",No(r.wbrels)),delete r.revssf,delete r.ssf,a}function g0(t,r){var e="";switch((r||{}).type||"base64"){case"buffer":return[t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7]];case"base64":e=Oi(t.slice(0,12));break;case"binary":e=t;break;case"array":return[t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7]];default:throw new Error("Unrecognized type "+(r&&r.type||"undefined"))}return[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3),e.charCodeAt(4),e.charCodeAt(5),e.charCodeAt(6),e.charCodeAt(7)]}function BA(t,r){return $t.find(t,"EncryptedPackage")?IA(t,r):_y(t,r)}function LA(t,r){var e,n=t,i=r||{};return i.type||(i.type=lr&&Buffer.isBuffer(t)?"buffer":"base64"),e=Xm(n,i),FA(e,i)}function Ey(t,r){var e=0;e:for(;e=2&&i[3]===0||i[2]===0&&(i[3]===8||i[3]===9)))return Ns.to_workbook(n,e);break;case 3:case 131:case 139:case 140:return wh.to_workbook(n,e);case 123:if(i[1]===92&&i[2]===114&&i[3]===116)return V1.to_workbook(n,e);break;case 10:case 13:case 32:return jA(n,e);case 137:if(i[1]===80&&i[2]===78&&i[3]===71)throw new Error("PNG Image File is not a spreadsheet");break}return $E.indexOf(i[0])>-1&&i[2]<=12&&i[3]<=31?wh.to_workbook(n,e):Ql(t,n,e,a)}function Ty(t,r){switch(r.type){case"base64":case"binary":break;case"buffer":case"array":r.type="";break;case"file":return $f(r.file,$t.write(t,{type:lr?"buffer":""}));case"string":throw new Error("'string' output type invalid for '"+r.bookType+"' files");default:throw new Error("Unrecognized type "+r.type)}return $t.write(t,r)}function XA(t,r){var e=Hr(r||{}),n=MA(t,e);return zA(n,e)}function zA(t,r){var e={},n=lr?"nodebuffer":typeof Uint8Array<"u"?"array":"string";if(r.compression&&(e.compression="DEFLATE"),r.password)e.type=n;else switch(r.type){case"base64":e.type="base64";break;case"binary":e.type="string";break;case"string":throw new Error("'string' output type invalid for '"+r.bookType+"' files");case"buffer":case"file":e.type=n;break;default:throw new Error("Unrecognized type "+r.type)}var i=t.FullPaths?$t.write(t,{fileType:"zip",type:{nodebuffer:"buffer",string:"binary"}[e.type]||e.type,compression:!!r.compression}):t.generate(e);if(typeof Deno<"u"&&typeof i=="string"){if(r.type=="binary"||r.type=="base64")return i;i=new Uint8Array(Rc(i))}return r.password&&typeof encrypt_agile<"u"?Ty(encrypt_agile(i,r.password),r):r.type==="file"?$f(r.file,i):r.type=="string"?Nr(i):i}function WA(t,r){var e=r||{},n=XR(t,e);return Ty(n,e)}function ba(t,r,e){e||(e="");var n=e+t;switch(r.type){case"base64":return Af(xa(n));case"binary":return xa(n);case"string":return t;case"file":return $f(r.file,n,"utf8");case"buffer":return lr?Va(n,"utf8"):typeof TextEncoder<"u"?new TextEncoder().encode(n):ba(n,{type:"binary"}).split("").map(function(i){return i.charCodeAt(0)})}throw new Error("Unrecognized type "+r.type)}function VA(t,r){switch(r.type){case"base64":return Af(t);case"binary":return t;case"string":return t;case"file":return $f(r.file,t,"binary");case"buffer":return lr?Va(t,"binary"):t.split("").map(function(e){return e.charCodeAt(0)})}throw new Error("Unrecognized type "+r.type)}function rc(t,r){switch(r.type){case"string":case"base64":case"binary":for(var e="",n=0;n0&&(i=0);var _=Cn(m.s.r),g=[],y=[],x=0,p=0,S=Array.isArray(t),w=m.s.r,u=0,o={};S&&!t[w]&&(t[w]=[]);var s=b.skipHidden&&t["!cols"]||[],c=b.skipHidden&&t["!rows"]||[];for(u=m.s.c;u<=m.e.c;++u)if(!(s[u]||{}).hidden)switch(g[u]=mn(u),e=S?t[w][u]:t[g[u]+_],n){case 1:a[u]=u-m.s.c;break;case 2:a[u]=g[u];break;case 3:a[u]=b.header[u-m.s.c];break;default:if(e==null&&(e={w:"__EMPTY",t:"s"}),d=l=ds(e,null,b),p=o[l]||0,!p)o[l]=1;else{do d=l+"_"+p++;while(o[d]);o[l]=p,o[d]=1}a[u]=d}for(w=m.s.r+i;w<=m.e.r;++w)if(!(c[w]||{}).hidden){var f=$A(t,m,w,g,n,a,S,b);(f.isempty===!1||(n===1?b.blankrows!==!1:b.blankrows))&&(y[x++]=f.row)}return y.length=x,y}var qv=/"/g;function GA(t,r,e,n,i,a,l,d){for(var m=!0,b=[],h="",_=Cn(e),g=r.s.c;g<=r.e.c;++g)if(n[g]){var y=d.dense?(t[e]||[])[g]:t[n[g]+_];if(y==null)h="";else if(y.v!=null){m=!1,h=""+(d.rawNumbers&&y.t=="n"?y.v:ds(y,null,d));for(var x=0,p=0;x!==h.length;++x)if((p=h.charCodeAt(x))===i||p===a||p===34||d.forceQuotes){h='"'+h.replace(qv,'""')+'"';break}h=="ID"&&(h='"ID"')}else y.f!=null&&!y.F?(m=!1,h="="+y.f,h.indexOf(",")>=0&&(h='"'+h.replace(qv,'""')+'"')):h="";b.push(h)}return d.blankrows===!1&&m?null:b.join(l)}function Ry(t,r){var e=[],n=r??{};if(t==null||t["!ref"]==null)return"";var i=Rr(t["!ref"]),a=n.FS!==void 0?n.FS:",",l=a.charCodeAt(0),d=n.RS!==void 0?n.RS:` +`,m=d.charCodeAt(0),b=new RegExp((a=="|"?"\\|":a)+"+$"),h="",_=[];n.dense=Array.isArray(t);for(var g=n.skipHidden&&t["!cols"]||[],y=n.skipHidden&&t["!rows"]||[],x=i.s.c;x<=i.e.c;++x)(g[x]||{}).hidden||(_[x]=mn(x));for(var p=0,S=i.s.r;S<=i.e.r;++S)(y[S]||{}).hidden||(h=GA(t,i,S,_,l,m,a,n),h!=null&&(n.strip&&(h=h.replace(b,"")),(h||n.blankrows!==!1)&&e.push((p++?d:"")+h)));return delete n.dense,e.join("")}function KA(t,r){r||(r={}),r.FS=" ",r.RS=` +`;var e=Ry(t,r);return e}function Ay(){return{SheetNames:[],Sheets:{}}}function Py(t,r,e,n){var i=1;if(!e)for(;i<=65535&&t.SheetNames.indexOf(e="Sheet"+i)!=-1;++i,e=void 0);if(!e||t.SheetNames.length>=65535)throw new Error("Too many worksheets");if(n&&t.SheetNames.indexOf(e)>=0){var a=e.match(/(^.*?)(\d+)$/);i=a&&+a[2]||0;var l=a&&a[1]||e;for(++i;i<=65535&&t.SheetNames.indexOf(e=l+i)!=-1;++i);}if(vy(e),t.SheetNames.indexOf(e)>=0)throw new Error("Worksheet with name |"+e+"| already exists!");return t.SheetNames.push(e),t.Sheets[e]=r,e}const ql=["#FFFFFF","#000000","#BFBFBF","#323232","#4472C4","#ED7D31","#A5A5A5","#FFC000","#5B9BD5","#71AD47"],eh=["#000000","#FFFFFF","#FF0000","#00FF00","#0000FF","#FFFF00","#FF00FF","#00FFFF","#000000","#FFFFFF","#FF0000","#00FF00","#0000FF","#FFFF00","#FF00FF","#00FFFF","#800000","#008000","#000080","#808000","#800080","#008080","#C0C0C0","#808080","#9999FF","#993366","#FFFFCC","#CCFFFF","#660066","#FF8080","#0066CC","#CCCCFF","#000080","#FF00FF","#FFFF00","#00FFFF","#800080","#800000","#008080","#0000FF","#00CCFF","#CCFFFF","#CCFFCC","#FFFF99","#99CCFF","#FF99CC","#CC99FF","#FFCC99","#3366FF","#33CCCC","#99CC00","#FFCC00","#FF9900","#FF6600","#666699","#969696","#003366","#339966","#003300","#333300","#993300","#993366","#333399","#333333","#FFFFFF"];let YA=80,ZA=24;function dP(t,r={}){return JA(t4(t),r)}function JA(t,r){return new Promise(function(e,n){const i=new XMLHttpRequest;i.open(r.method||"GET",t,!0),i.responseType=r.responseType||"arraybuffer",i.onload=function(){i.status===200?e(i.response):n(i.status)},i.onerror=function(){n(i.status)},i.withCredentials=r.withCredentials||!1,r.headers&&Object.keys(r.headers).forEach(function(a){i.setRequestHeader(a,r.headers[a])}),i.send(r.body)})}function pP(t,r){try{if(r){const n=Th(t,{type:"array"});t=Oy(n,{bookType:"xlsx",type:"array"})}return new dh.Workbook().xlsx.load(t)}catch(e){return console.warn(e),Promise.reject(e)}}function QA(t,r,e){for(let n=0;n<(t.columns||[]).length;n++)r.cols[n.toString()]={},t.columns[n].width?r.cols[n.toString()].width=t.columns[n].width*6+(e.widthOffset||0):r.cols[n.toString()].width=YA+(e.widthOffset||0);r.cols.len=Math.max(Object.keys(r.cols).length,e.minColLength||0)}function qA(t){let{numFmt:r,value:e,type:n}=t;switch(n){case 2:try{if(t.style.numFmt){if(t.style.numFmt.endsWith("%")){let i=t.style.numFmt.match(/\.(\d+)%/);return i?(e*100).toFixed(i[1].length)+"%":e*100+"%"}else if(/0(\.0+)?/.test(t.style.numFmt)){let i="";if(t.style.numFmt.startsWith("$")?i="$":t.style.numFmt.startsWith('"¥')&&(i="¥"),e===0&&t.style.numFmt.startsWith("_"))return"-";let a=t.style.numFmt.match(/0\.(0+)(_|;|$)/);a?a=a[1].length:a=0;let l=e.toFixed(a)+"";if(t.style.numFmt.includes("#,##")){l=l.split(".");let d=l[0].split("").reverse(),m=[];for(let b=0;b9?"#C7C9CC":typeof r>"u"?ql[t]:r>0?nk(ql[t],r):rk(ql[t],Math.abs(r))}function eP(t){t.style=jo.cloneDeep(t.style);let r=null;t.style.fill&&t.style.fill.fgColor&&(t.style.fill.fgColor.argb?r=th(t.style.fill.fgColor.argb):t.style.fill.fgColor.hasOwnProperty("theme")?r=rh(t.style.fill.fgColor.theme,t.style.fill.fgColor.tint):t.style.fill.fgColor.indexed?r=eh[t.style.fill.fgColor.indexed]||"#C7C9CC":r="#C7C9CC"),r&&(t.style.bgcolor=r);let e=null;if(t.style.font&&t.style.font.color&&(t.style.font.color.argb?e=th(t.style.font.color.argb):t.style.font.color.hasOwnProperty("theme")?e=rh(t.style.font.color.theme,t.style.font.color.tint):t.style.font.color.indexed?e=eh[t.style.font.color.indexed]||"#000000":e="#000000"),e&&(t.style.color=e),t.style.alignment&&(t.style.alignment.horizontal&&(t.style.align=t.style.alignment.horizontal),t.style.alignment.vertical&&(t.style.valign=t.style.alignment.vertical)),t.style.alignment&&t.style.alignment.wrapText&&(t.style.textwrap=!0),t.style.border){let n={};Object.keys(t.style.border).forEach(i=>{let a=t.style.border[i],l="#000000";typeof a.color=="string"?l=a.color:a.color&&(a.color.argb?l=th(a.color.argb):a.color.hasOwnProperty("theme")?l=rh(a.color.theme,a.color.tint):a.color.indexed&&(l=eh[a.color.indexed])),n[i]=[a.style||"thin",l]}),t.style.border2={...t.style.border},t.style.border=n}return t.style.font&&t.style.font.size&&typeof t.style.font.size=="number"&&(t.style.font.size=Math.round(t.style.font.size/1.333333)),t.style}function vP(t,r){let e=[],n=[];return t.eachSheet(i=>{n.push(i);let a={name:i.name,styles:[],rows:{},cols:{},merges:[],media:[]},l=[];for(let m in i._merges){a.merges.push(i._merges[m].shortRange);let b={};b.startAddress=i._merges[m].tl,b.endAddress=i._merges[m].br,b.YRange=i._merges[m].model.bottom-i._merges[m].model.top,b.XRange=i._merges[m].model.right-i._merges[m].model.left,l.push(b)}QA(i,a,r),(i._rows||[]).forEach((m,b)=>{a.rows[b]={cells:{}},m.height?a.rows[b].height=m.height+(r.heightOffset||0):a.rows[b].height=ZA+(r.heightOffset||0),(m._cells||[]).forEach((h,_)=>{a.rows[b].cells[_]={};let g=jo.find(l,function(y){return y.startAddress==h._address});g&&h.master.address!=g.startAddress||(g&&(a.rows[b].cells[_].merge=[g.YRange,g.XRange]),a.rows[b].cells[_].text=qA(h),a.styles.push(eP(h)),a.rows[b].cells[_].style=a.styles.length-1)})}),a._media&&(a.media=a._media);let d=Object.keys(a.rows);a.rows.len=Math.max(+d[d.length-1]+1,r.hasOwnProperty("minRowLength")?r.minRowLength:100),e.push(a)}),t._worksheets=n,{workbookData:e,workbookSource:t,medias:t.media||[]}}let ac=[];function mP(t,r,e,n,i={}){e&&e._media.length&&e._media.forEach(a=>{let{imageId:l,range:d,type:m}=a;if(m==="image"){let b=tP(e,d,n,i);rP(t,l,r[l],b)}})}let sc=60,oc=25,nh=80,ih=24,_a=window.devicePixelRatio;function tP(t,r,e,n){var f,v,k,T,C,D,j,L,M,B,R,P,O,F;let{widthOffset:i,heightOffset:a}=n,{tl:l={},br:d={}}=r,{nativeCol:m=0,nativeColOff:b=0,nativeRow:h=0,nativeRowOff:_=0}=l,g=sc,y=oc;for(let H=0;H{let a=0,l=0,d=i.width,m=i.height,b=n.x,h=n.y,_=n.width,g=n.height,y=_/d,x=g/m;if(b{console.error(i)})}function nP(t,r){return new Promise((e,n)=>{if(ac[t])return e(ac[t]);const{buffer:i}=r.buffer;let a=new Blob([i],{type:"image/"+r.extension}),l=URL.createObjectURL(a),d=new Image;d.src=l,d.onload=function(){e(d),ac[t]=d},d.onerror=function(m){n(m)}})}function gP(t){if(t){let r=t.querySelectorAll("input");for(let e of r)e&&!e.readOnly&&(e.readOnly=!0);document.activeElement&&document.activeElement.blur()}}export{CS as S,mP as a,pP as b,yP as c,dP as g,jo as l,gP as r,vP as t}; diff --git a/examples/dist/assets/index-75869108.js b/examples/dist/assets/index-75869108.js new file mode 100644 index 0000000..8972332 --- /dev/null +++ b/examples/dist/assets/index-75869108.js @@ -0,0 +1,121 @@ +(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const a of document.querySelectorAll('link[rel="modulepreload"]'))r(a);new MutationObserver(a=>{for(const o of a)if(o.type==="childList")for(const i of o.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&r(i)}).observe(document,{childList:!0,subtree:!0});function n(a){const o={};return a.integrity&&(o.integrity=a.integrity),a.referrerPolicy&&(o.referrerPolicy=a.referrerPolicy),a.crossOrigin==="use-credentials"?o.credentials="include":a.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function r(a){if(a.ep)return;a.ep=!0;const o=n(a);fetch(a.href,o)}})();function Bp(t,e){const n=Object.create(null),r=t.split(",");for(let a=0;a!!n[a.toLowerCase()]:a=>!!n[a]}function jp(t){if(bt(t)){const e={};for(let n=0;n{if(n){const r=n.split(ZO);r.length>1&&(e[r[0].trim()]=r[1].trim())}}),e}function Vp(t){let e="";if(ln(t))e=t;else if(bt(t))for(let n=0;n{},rT=()=>!1,aT=/^on[^a-z]/,Xc=t=>aT.test(t),Kp=t=>t.startsWith("onUpdate:"),pn=Object.assign,Hp=(t,e)=>{const n=t.indexOf(e);n>-1&&t.splice(n,1)},oT=Object.prototype.hasOwnProperty,Tt=(t,e)=>oT.call(t,e),bt=Array.isArray,Sl=t=>Qc(t)==="[object Map]",iT=t=>Qc(t)==="[object Set]",St=t=>typeof t=="function",ln=t=>typeof t=="string",zp=t=>typeof t=="symbol",Gt=t=>t!==null&&typeof t=="object",iS=t=>Gt(t)&&St(t.then)&&St(t.catch),lT=Object.prototype.toString,Qc=t=>lT.call(t),uT=t=>Qc(t).slice(8,-1),sT=t=>Qc(t)==="[object Object]",Wp=t=>ln(t)&&t!=="NaN"&&t[0]!=="-"&&""+parseInt(t,10)===t,Ss=Bp(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Zc=t=>{const e=Object.create(null);return n=>e[n]||(e[n]=t(n))},cT=/-(\w)/g,Ln=Zc(t=>t.replace(cT,(e,n)=>n?n.toUpperCase():"")),dT=/\B([A-Z])/g,Li=Zc(t=>t.replace(dT,"-$1").toLowerCase()),Jc=Zc(t=>t.charAt(0).toUpperCase()+t.slice(1)),yf=Zc(t=>t?`on${Jc(t)}`:""),Wl=(t,e)=>!Object.is(t,e),bf=(t,e)=>{for(let n=0;n{Object.defineProperty(t,e,{configurable:!0,enumerable:!1,value:n})},Up=t=>{const e=parseFloat(t);return isNaN(e)?t:e};let Z0;const fT=()=>Z0||(Z0=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});let Yn;class vT{constructor(e=!1){this.detached=e,this.active=!0,this.effects=[],this.cleanups=[],this.parent=Yn,!e&&Yn&&(this.index=(Yn.scopes||(Yn.scopes=[])).push(this)-1)}run(e){if(this.active){const n=Yn;try{return Yn=this,e()}finally{Yn=n}}}on(){Yn=this}off(){Yn=this.parent}stop(e){if(this.active){let n,r;for(n=0,r=this.effects.length;n{const e=new Set(t);return e.w=0,e.n=0,e},lS=t=>(t.w&Ha)>0,uS=t=>(t.n&Ha)>0,mT=({deps:t})=>{if(t.length)for(let e=0;e{const{deps:e}=t;if(e.length){let n=0;for(let r=0;r{(d==="length"||d>=u)&&l.push(s)})}else switch(n!==void 0&&l.push(i.get(n)),e){case"add":bt(t)?Wp(n)&&l.push(i.get("length")):(l.push(i.get(wo)),Sl(t)&&l.push(i.get(zv)));break;case"delete":bt(t)||(l.push(i.get(wo)),Sl(t)&&l.push(i.get(zv)));break;case"set":Sl(t)&&l.push(i.get(wo));break}if(l.length===1)l[0]&&Wv(l[0]);else{const u=[];for(const s of l)s&&u.push(...s);Wv(Yp(u))}}function Wv(t,e){const n=bt(t)?t:[...t];for(const r of n)r.computed&&e1(r);for(const r of n)r.computed||e1(r)}function e1(t,e){(t!==gr||t.allowRecurse)&&(t.scheduler?t.scheduler():t.run())}const bT=Bp("__proto__,__v_isRef,__isVue"),dS=new Set(Object.getOwnPropertyNames(Symbol).filter(t=>t!=="arguments"&&t!=="caller").map(t=>Symbol[t]).filter(zp)),CT=qp(),xT=qp(!1,!0),wT=qp(!0),t1=ST();function ST(){const t={};return["includes","indexOf","lastIndexOf"].forEach(e=>{t[e]=function(...n){const r=rt(this);for(let o=0,i=this.length;o{t[e]=function(...n){Bi();const r=rt(this)[e].apply(this,n);return ji(),r}}),t}function qp(t=!1,e=!1){return function(r,a,o){if(a==="__v_isReactive")return!t;if(a==="__v_isReadonly")return t;if(a==="__v_isShallow")return e;if(a==="__v_raw"&&o===(t?e?BT:gS:e?pS:hS).get(r))return r;const i=bt(r);if(!t&&i&&Tt(t1,a))return Reflect.get(t1,a,o);const l=Reflect.get(r,a,o);return(zp(a)?dS.has(a):bT(a))||(t||Xn(r,"get",a),e)?l:vn(l)?i&&Wp(a)?l:l.value:Gt(l)?t?mS(l):xt(l):l}}const PT=fS(),kT=fS(!0);function fS(t=!1){return function(n,r,a,o){let i=n[r];if(Si(i)&&vn(i)&&!vn(a))return!1;if(!t&&(!ic(a)&&!Si(a)&&(i=rt(i),a=rt(a)),!bt(n)&&vn(i)&&!vn(a)))return i.value=a,!0;const l=bt(n)&&Wp(r)?Number(r)t,ed=t=>Reflect.getPrototypeOf(t);function Lu(t,e,n=!1,r=!1){t=t.__v_raw;const a=rt(t),o=rt(e);n||(e!==o&&Xn(a,"get",e),Xn(a,"get",o));const{has:i}=ed(a),l=r?Xp:n?Jp:Ul;if(i.call(a,e))return l(t.get(e));if(i.call(a,o))return l(t.get(o));t!==a&&t.get(e)}function Bu(t,e=!1){const n=this.__v_raw,r=rt(n),a=rt(t);return e||(t!==a&&Xn(r,"has",t),Xn(r,"has",a)),t===a?n.has(t):n.has(t)||n.has(a)}function ju(t,e=!1){return t=t.__v_raw,!e&&Xn(rt(t),"iterate",wo),Reflect.get(t,"size",t)}function n1(t){t=rt(t);const e=rt(this);return ed(e).has.call(e,t)||(e.add(t),va(e,"add",t,t)),this}function r1(t,e){e=rt(e);const n=rt(this),{has:r,get:a}=ed(n);let o=r.call(n,t);o||(t=rt(t),o=r.call(n,t));const i=a.call(n,t);return n.set(t,e),o?Wl(e,i)&&va(n,"set",t,e):va(n,"add",t,e),this}function a1(t){const e=rt(this),{has:n,get:r}=ed(e);let a=n.call(e,t);a||(t=rt(t),a=n.call(e,t)),r&&r.call(e,t);const o=e.delete(t);return a&&va(e,"delete",t,void 0),o}function o1(){const t=rt(this),e=t.size!==0,n=t.clear();return e&&va(t,"clear",void 0,void 0),n}function Vu(t,e){return function(r,a){const o=this,i=o.__v_raw,l=rt(i),u=e?Xp:t?Jp:Ul;return!t&&Xn(l,"iterate",wo),i.forEach((s,d)=>r.call(a,u(s),u(d),o))}}function Ku(t,e,n){return function(...r){const a=this.__v_raw,o=rt(a),i=Sl(o),l=t==="entries"||t===Symbol.iterator&&i,u=t==="keys"&&i,s=a[t](...r),d=n?Xp:e?Jp:Ul;return!e&&Xn(o,"iterate",u?zv:wo),{next(){const{value:c,done:f}=s.next();return f?{value:c,done:f}:{value:l?[d(c[0]),d(c[1])]:d(c),done:f}},[Symbol.iterator](){return this}}}}function xa(t){return function(...e){return t==="delete"?!1:this}}function _T(){const t={get(o){return Lu(this,o)},get size(){return ju(this)},has:Bu,add:n1,set:r1,delete:a1,clear:o1,forEach:Vu(!1,!1)},e={get(o){return Lu(this,o,!1,!0)},get size(){return ju(this)},has:Bu,add:n1,set:r1,delete:a1,clear:o1,forEach:Vu(!1,!0)},n={get(o){return Lu(this,o,!0)},get size(){return ju(this,!0)},has(o){return Bu.call(this,o,!0)},add:xa("add"),set:xa("set"),delete:xa("delete"),clear:xa("clear"),forEach:Vu(!0,!1)},r={get(o){return Lu(this,o,!0,!0)},get size(){return ju(this,!0)},has(o){return Bu.call(this,o,!0)},add:xa("add"),set:xa("set"),delete:xa("delete"),clear:xa("clear"),forEach:Vu(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(o=>{t[o]=Ku(o,!1,!1),n[o]=Ku(o,!0,!1),e[o]=Ku(o,!1,!0),r[o]=Ku(o,!0,!0)}),[t,n,e,r]}const[NT,AT,$T,RT]=_T();function Qp(t,e){const n=e?t?RT:$T:t?AT:NT;return(r,a,o)=>a==="__v_isReactive"?!t:a==="__v_isReadonly"?t:a==="__v_raw"?r:Reflect.get(Tt(n,a)&&a in r?n:r,a,o)}const DT={get:Qp(!1,!1)},FT={get:Qp(!1,!0)},LT={get:Qp(!0,!1)},hS=new WeakMap,pS=new WeakMap,gS=new WeakMap,BT=new WeakMap;function jT(t){switch(t){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function VT(t){return t.__v_skip||!Object.isExtensible(t)?0:jT(uT(t))}function xt(t){return Si(t)?t:Zp(t,!1,vS,DT,hS)}function KT(t){return Zp(t,!1,IT,FT,pS)}function mS(t){return Zp(t,!0,ET,LT,gS)}function Zp(t,e,n,r,a){if(!Gt(t)||t.__v_raw&&!(e&&t.__v_isReactive))return t;const o=a.get(t);if(o)return o;const i=VT(t);if(i===0)return t;const l=new Proxy(t,i===2?r:n);return a.set(t,l),l}function di(t){return Si(t)?di(t.__v_raw):!!(t&&t.__v_isReactive)}function Si(t){return!!(t&&t.__v_isReadonly)}function ic(t){return!!(t&&t.__v_isShallow)}function yS(t){return di(t)||Si(t)}function rt(t){const e=t&&t.__v_raw;return e?rt(e):t}function bS(t){return oc(t,"__v_skip",!0),t}const Ul=t=>Gt(t)?xt(t):t,Jp=t=>Gt(t)?mS(t):t;function CS(t){La&&gr&&(t=rt(t),cS(t.dep||(t.dep=Yp())))}function xS(t,e){t=rt(t),t.dep&&Wv(t.dep)}function vn(t){return!!(t&&t.__v_isRef===!0)}function Q(t){return wS(t,!1)}function dt(t){return wS(t,!0)}function wS(t,e){return vn(t)?t:new HT(t,e)}class HT{constructor(e,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?e:rt(e),this._value=n?e:Ul(e)}get value(){return CS(this),this._value}set value(e){const n=this.__v_isShallow||ic(e)||Si(e);e=n?e:rt(e),Wl(e,this._rawValue)&&(this._rawValue=e,this._value=n?e:Ul(e),xS(this))}}function tn(t){return vn(t)?t.value:t}const zT={get:(t,e,n)=>tn(Reflect.get(t,e,n)),set:(t,e,n,r)=>{const a=t[e];return vn(a)&&!vn(n)?(a.value=n,!0):Reflect.set(t,e,n,r)}};function SS(t){return di(t)?t:new Proxy(t,zT)}function So(t){const e=bt(t)?new Array(t.length):{};for(const n in t)e[n]=Ke(t,n);return e}class WT{constructor(e,n,r){this._object=e,this._key=n,this._defaultValue=r,this.__v_isRef=!0}get value(){const e=this._object[this._key];return e===void 0?this._defaultValue:e}set value(e){this._object[this._key]=e}}function Ke(t,e,n){const r=t[e];return vn(r)?r:new WT(t,e,n)}var PS;class UT{constructor(e,n,r,a){this._setter=n,this.dep=void 0,this.__v_isRef=!0,this[PS]=!1,this._dirty=!0,this.effect=new Gp(e,()=>{this._dirty||(this._dirty=!0,xS(this))}),this.effect.computed=this,this.effect.active=this._cacheable=!a,this.__v_isReadonly=r}get value(){const e=rt(this);return CS(e),(e._dirty||!e._cacheable)&&(e._dirty=!1,e._value=e.effect.run()),e._value}set value(e){this._setter(e)}}PS="__v_isReadonly";function YT(t,e,n=!1){let r,a;const o=St(t);return o?(r=t,a=br):(r=t.get,a=t.set),new UT(r,a,o||!a,n)}function Ba(t,e,n,r){let a;try{a=r?t(...r):t()}catch(o){td(o,e,n)}return a}function lr(t,e,n,r){if(St(t)){const o=Ba(t,e,n,r);return o&&iS(o)&&o.catch(i=>{td(i,e,n)}),o}const a=[];for(let o=0;o>>1;Gl(xn[r])Br&&xn.splice(e,1)}function QT(t){bt(t)?fi.push(...t):(!aa||!aa.includes(t,t.allowRecurse?co+1:co))&&fi.push(t),OS()}function i1(t,e=Yl?Br+1:0){for(;eGl(n)-Gl(r)),co=0;cot.id==null?1/0:t.id,ZT=(t,e)=>{const n=Gl(t)-Gl(e);if(n===0){if(t.pre&&!e.pre)return-1;if(e.pre&&!t.pre)return 1}return n};function MS(t){Uv=!1,Yl=!0,xn.sort(ZT);const e=br;try{for(Br=0;Brln(h)?h.trim():h)),c&&(a=n.map(Up))}let l,u=r[l=yf(e)]||r[l=yf(Ln(e))];!u&&o&&(u=r[l=yf(Li(e))]),u&&lr(u,t,6,a);const s=r[l+"Once"];if(s){if(!t.emitted)t.emitted={};else if(t.emitted[l])return;t.emitted[l]=!0,lr(s,t,6,a)}}function ES(t,e,n=!1){const r=e.emitsCache,a=r.get(t);if(a!==void 0)return a;const o=t.emits;let i={},l=!1;if(!St(t)){const u=s=>{const d=ES(s,e,!0);d&&(l=!0,pn(i,d))};!n&&e.mixins.length&&e.mixins.forEach(u),t.extends&&u(t.extends),t.mixins&&t.mixins.forEach(u)}return!o&&!l?(Gt(t)&&r.set(t,null),null):(bt(o)?o.forEach(u=>i[u]=null):pn(i,o),Gt(t)&&r.set(t,i),i)}function nd(t,e){return!t||!Xc(e)?!1:(e=e.slice(2).replace(/Once$/,""),Tt(t,e[0].toLowerCase()+e.slice(1))||Tt(t,Li(e))||Tt(t,e))}let mn=null,rd=null;function lc(t){const e=mn;return mn=t,rd=t&&t.type.__scopeId||null,e}function Rre(t){rd=t}function Dre(){rd=null}function pl(t,e=mn,n){if(!e||t._n)return t;const r=(...a)=>{r._d&&m1(-1);const o=lc(e);let i;try{i=t(...a)}finally{lc(o),r._d&&m1(1)}return i};return r._n=!0,r._c=!0,r._d=!0,r}function Cf(t){const{type:e,vnode:n,proxy:r,withProxy:a,props:o,propsOptions:[i],slots:l,attrs:u,emit:s,render:d,renderCache:c,data:f,setupState:h,ctx:p,inheritAttrs:g}=t;let y,b;const C=lc(t);try{if(n.shapeFlag&4){const w=a||r;y=Lr(d.call(w,w,c,o,h,f,p)),b=u}else{const w=e;y=Lr(w.length>1?w(o,{attrs:u,slots:l,emit:s}):w(o,null)),b=e.props?u:e5(u)}}catch(w){Tl.length=0,td(w,t,1),y=v(qn)}let x=y;if(b&&g!==!1){const w=Object.keys(b),{shapeFlag:P}=x;w.length&&P&7&&(i&&w.some(Kp)&&(b=t5(b,i)),x=Cn(x,b))}return n.dirs&&(x=Cn(x),x.dirs=x.dirs?x.dirs.concat(n.dirs):n.dirs),n.transition&&(x.transition=n.transition),y=x,lc(C),y}const e5=t=>{let e;for(const n in t)(n==="class"||n==="style"||Xc(n))&&((e||(e={}))[n]=t[n]);return e},t5=(t,e)=>{const n={};for(const r in t)(!Kp(r)||!(r.slice(9)in e))&&(n[r]=t[r]);return n};function n5(t,e,n){const{props:r,children:a,component:o}=t,{props:i,children:l,patchFlag:u}=e,s=o.emitsOptions;if(e.dirs||e.transition)return!0;if(n&&u>=0){if(u&1024)return!0;if(u&16)return r?l1(r,i,s):!!i;if(u&8){const d=e.dynamicProps;for(let c=0;ct.__isSuspense;function o5(t,e){e&&e.pendingBranch?bt(t)?e.effects.push(...t):e.effects.push(t):QT(t)}function at(t,e){if(fn){let n=fn.provides;const r=fn.parent&&fn.parent.provides;r===n&&(n=fn.provides=Object.create(r)),n[t]=e}}function Ze(t,e,n=!1){const r=fn||mn;if(r){const a=r.parent==null?r.vnode.appContext&&r.vnode.appContext.provides:r.parent.provides;if(a&&t in a)return a[t];if(arguments.length>1)return n&&St(e)?e.call(r.proxy):e}}function Je(t,e){return ng(t,null,e)}const Hu={};function Se(t,e,n){return ng(t,e,n)}function ng(t,e,{immediate:n,deep:r,flush:a,onTrack:o,onTrigger:i}=Ht){const l=fn;let u,s=!1,d=!1;if(vn(t)?(u=()=>t.value,s=ic(t)):di(t)?(u=()=>t,r=!0):bt(t)?(d=!0,s=t.some(x=>di(x)||ic(x)),u=()=>t.map(x=>{if(vn(x))return x.value;if(di(x))return bo(x);if(St(x))return Ba(x,l,2)})):St(t)?e?u=()=>Ba(t,l,2):u=()=>{if(!(l&&l.isUnmounted))return c&&c(),lr(t,l,3,[f])}:u=br,e&&r){const x=u;u=()=>bo(x())}let c,f=x=>{c=b.onStop=()=>{Ba(x,l,4)}},h;if(Zl)if(f=br,e?n&&lr(e,l,3,[u(),d?[]:void 0,f]):u(),a==="sync"){const x=Q5();h=x.__watcherHandles||(x.__watcherHandles=[])}else return br;let p=d?new Array(t.length).fill(Hu):Hu;const g=()=>{if(b.active)if(e){const x=b.run();(r||s||(d?x.some((w,P)=>Wl(w,p[P])):Wl(x,p)))&&(c&&c(),lr(e,l,3,[x,p===Hu?void 0:d&&p[0]===Hu?[]:p,f]),p=x)}else b.run()};g.allowRecurse=!!e;let y;a==="sync"?y=g:a==="post"?y=()=>Rn(g,l&&l.suspense):(g.pre=!0,l&&(g.id=l.uid),y=()=>tg(g));const b=new Gp(u,y);e?n?g():p=b.run():a==="post"?Rn(b.run.bind(b),l&&l.suspense):b.run();const C=()=>{b.stop(),l&&l.scope&&Hp(l.scope.effects,b)};return h&&h.push(C),C}function i5(t,e,n){const r=this.proxy,a=ln(t)?t.includes(".")?IS(r,t):()=>r[t]:t.bind(r,r);let o;St(e)?o=e:(o=e.handler,n=e);const i=fn;Pi(this);const l=ng(a,o.bind(r),n);return i?Pi(i):Po(),l}function IS(t,e){const n=e.split(".");return()=>{let r=t;for(let a=0;a{bo(n,e)});else if(sT(t))for(const n in t)bo(t[n],e);return t}function _S(){const t={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return Ge(()=>{t.isMounted=!0}),ut(()=>{t.isUnmounting=!0}),t}const tr=[Function,Array],l5={name:"BaseTransition",props:{mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:tr,onEnter:tr,onAfterEnter:tr,onEnterCancelled:tr,onBeforeLeave:tr,onLeave:tr,onAfterLeave:tr,onLeaveCancelled:tr,onBeforeAppear:tr,onAppear:tr,onAfterAppear:tr,onAppearCancelled:tr},setup(t,{slots:e}){const n=sn(),r=_S();let a;return()=>{const o=e.default&&rg(e.default(),!0);if(!o||!o.length)return;let i=o[0];if(o.length>1){for(const g of o)if(g.type!==qn){i=g;break}}const l=rt(t),{mode:u}=l;if(r.isLeaving)return xf(i);const s=u1(i);if(!s)return xf(i);const d=ql(s,l,r,n);Xl(s,d);const c=n.subTree,f=c&&u1(c);let h=!1;const{getTransitionKey:p}=s.type;if(p){const g=p();a===void 0?a=g:g!==a&&(a=g,h=!0)}if(f&&f.type!==qn&&(!fo(s,f)||h)){const g=ql(f,l,r,n);if(Xl(f,g),u==="out-in")return r.isLeaving=!0,g.afterLeave=()=>{r.isLeaving=!1,n.update.active!==!1&&n.update()},xf(i);u==="in-out"&&s.type!==qn&&(g.delayLeave=(y,b,C)=>{const x=AS(r,f);x[String(f.key)]=f,y._leaveCb=()=>{b(),y._leaveCb=void 0,delete d.delayedLeave},d.delayedLeave=C})}return i}}},NS=l5;function AS(t,e){const{leavingVNodes:n}=t;let r=n.get(e.type);return r||(r=Object.create(null),n.set(e.type,r)),r}function ql(t,e,n,r){const{appear:a,mode:o,persisted:i=!1,onBeforeEnter:l,onEnter:u,onAfterEnter:s,onEnterCancelled:d,onBeforeLeave:c,onLeave:f,onAfterLeave:h,onLeaveCancelled:p,onBeforeAppear:g,onAppear:y,onAfterAppear:b,onAppearCancelled:C}=e,x=String(t.key),w=AS(n,t),P=(T,O)=>{T&&lr(T,r,9,O)},S=(T,O)=>{const _=O[1];P(T,O),bt(T)?T.every(R=>R.length<=1)&&_():T.length<=1&&_()},k={mode:o,persisted:i,beforeEnter(T){let O=l;if(!n.isMounted)if(a)O=g||l;else return;T._leaveCb&&T._leaveCb(!0);const _=w[x];_&&fo(t,_)&&_.el._leaveCb&&_.el._leaveCb(),P(O,[T])},enter(T){let O=u,_=s,R=d;if(!n.isMounted)if(a)O=y||u,_=b||s,R=C||d;else return;let I=!1;const M=T._enterCb=D=>{I||(I=!0,D?P(R,[T]):P(_,[T]),k.delayedLeave&&k.delayedLeave(),T._enterCb=void 0)};O?S(O,[T,M]):M()},leave(T,O){const _=String(t.key);if(T._enterCb&&T._enterCb(!0),n.isUnmounting)return O();P(c,[T]);let R=!1;const I=T._leaveCb=M=>{R||(R=!0,O(),M?P(p,[T]):P(h,[T]),T._leaveCb=void 0,w[_]===t&&delete w[_])};w[_]=t,f?S(f,[T,I]):I()},clone(T){return ql(T,e,n,r)}};return k}function xf(t){if(ad(t))return t=Cn(t),t.children=null,t}function u1(t){return ad(t)?t.children?t.children[0]:void 0:t}function Xl(t,e){t.shapeFlag&6&&t.component?Xl(t.component.subTree,e):t.shapeFlag&128?(t.ssContent.transition=e.clone(t.ssContent),t.ssFallback.transition=e.clone(t.ssFallback)):t.transition=e}function rg(t,e=!1,n){let r=[],a=0;for(let o=0;o1)for(let o=0;o!!t.type.__asyncLoader,ad=t=>t.type.__isKeepAlive;function od(t,e){RS(t,"a",e)}function $S(t,e){RS(t,"da",e)}function RS(t,e,n=fn){const r=t.__wdc||(t.__wdc=()=>{let a=n;for(;a;){if(a.isDeactivated)return;a=a.parent}return t()});if(id(e,r,n),n){let a=n.parent;for(;a&&a.parent;)ad(a.parent.vnode)&&u5(r,e,n,a),a=a.parent}}function u5(t,e,n,r){const a=id(e,t,r,!0);_n(()=>{Hp(r[e],a)},n)}function id(t,e,n=fn,r=!1){if(n){const a=n[t]||(n[t]=[]),o=e.__weh||(e.__weh=(...i)=>{if(n.isUnmounted)return;Bi(),Pi(n);const l=lr(e,n,t,i);return Po(),ji(),l});return r?a.unshift(o):a.push(o),o}}const pa=t=>(e,n=fn)=>(!Zl||t==="sp")&&id(t,(...r)=>e(...r),n),ld=pa("bm"),Ge=pa("m"),ag=pa("bu"),wn=pa("u"),ut=pa("bum"),_n=pa("um"),s5=pa("sp"),c5=pa("rtg"),d5=pa("rtc");function f5(t,e=fn){id("ec",t,e)}function gn(t,e){const n=mn;if(n===null)return t;const r=sd(n)||n.proxy,a=t.dirs||(t.dirs=[]);for(let o=0;oe(i,l,void 0,o&&o[l]));else{const i=Object.keys(t);a=new Array(i.length);for(let l=0,u=i.length;lhn(e)?!(e.type===qn||e.type===et&&!LS(e.children)):!0)?t:null}const Yv=t=>t?QS(t)?sd(t)||t.proxy:Yv(t.parent):null,kl=pn(Object.create(null),{$:t=>t,$el:t=>t.vnode.el,$data:t=>t.data,$props:t=>t.props,$attrs:t=>t.attrs,$slots:t=>t.slots,$refs:t=>t.refs,$parent:t=>Yv(t.parent),$root:t=>Yv(t.root),$emit:t=>t.emit,$options:t=>ig(t),$forceUpdate:t=>t.f||(t.f=()=>tg(t.update)),$nextTick:t=>t.n||(t.n=nt.bind(t.proxy)),$watch:t=>i5.bind(t)}),Sf=(t,e)=>t!==Ht&&!t.__isScriptSetup&&Tt(t,e),g5={get({_:t},e){const{ctx:n,setupState:r,data:a,props:o,accessCache:i,type:l,appContext:u}=t;let s;if(e[0]!=="$"){const h=i[e];if(h!==void 0)switch(h){case 1:return r[e];case 2:return a[e];case 4:return n[e];case 3:return o[e]}else{if(Sf(r,e))return i[e]=1,r[e];if(a!==Ht&&Tt(a,e))return i[e]=2,a[e];if((s=t.propsOptions[0])&&Tt(s,e))return i[e]=3,o[e];if(n!==Ht&&Tt(n,e))return i[e]=4,n[e];Gv&&(i[e]=0)}}const d=kl[e];let c,f;if(d)return e==="$attrs"&&Xn(t,"get",e),d(t);if((c=l.__cssModules)&&(c=c[e]))return c;if(n!==Ht&&Tt(n,e))return i[e]=4,n[e];if(f=u.config.globalProperties,Tt(f,e))return f[e]},set({_:t},e,n){const{data:r,setupState:a,ctx:o}=t;return Sf(a,e)?(a[e]=n,!0):r!==Ht&&Tt(r,e)?(r[e]=n,!0):Tt(t.props,e)||e[0]==="$"&&e.slice(1)in t?!1:(o[e]=n,!0)},has({_:{data:t,setupState:e,accessCache:n,ctx:r,appContext:a,propsOptions:o}},i){let l;return!!n[i]||t!==Ht&&Tt(t,i)||Sf(e,i)||(l=o[0])&&Tt(l,i)||Tt(r,i)||Tt(kl,i)||Tt(a.config.globalProperties,i)},defineProperty(t,e,n){return n.get!=null?t._.accessCache[e]=0:Tt(n,"value")&&this.set(t,e,n.value,null),Reflect.defineProperty(t,e,n)}};let Gv=!0;function m5(t){const e=ig(t),n=t.proxy,r=t.ctx;Gv=!1,e.beforeCreate&&c1(e.beforeCreate,t,"bc");const{data:a,computed:o,methods:i,watch:l,provide:u,inject:s,created:d,beforeMount:c,mounted:f,beforeUpdate:h,updated:p,activated:g,deactivated:y,beforeDestroy:b,beforeUnmount:C,destroyed:x,unmounted:w,render:P,renderTracked:S,renderTriggered:k,errorCaptured:T,serverPrefetch:O,expose:_,inheritAttrs:R,components:I,directives:M,filters:D}=e;if(s&&y5(s,r,null,t.appContext.config.unwrapInjectedRef),i)for(const A in i){const $=i[A];St($)&&(r[A]=$.bind(n))}if(a){const A=a.call(n,n);Gt(A)&&(t.data=xt(A))}if(Gv=!0,o)for(const A in o){const $=o[A],E=St($)?$.bind(n,n):St($.get)?$.get.bind(n,n):br,K=!St($)&&St($.set)?$.set.bind(n):br,B=F({get:E,set:K});Object.defineProperty(r,A,{enumerable:!0,configurable:!0,get:()=>B.value,set:W=>B.value=W})}if(l)for(const A in l)BS(l[A],r,n,A);if(u){const A=St(u)?u.call(n):u;Reflect.ownKeys(A).forEach($=>{at($,A[$])})}d&&c1(d,t,"c");function L(A,$){bt($)?$.forEach(E=>A(E.bind(n))):$&&A($.bind(n))}if(L(ld,c),L(Ge,f),L(ag,h),L(wn,p),L(od,g),L($S,y),L(f5,T),L(d5,S),L(c5,k),L(ut,C),L(_n,w),L(s5,O),bt(_))if(_.length){const A=t.exposed||(t.exposed={});_.forEach($=>{Object.defineProperty(A,$,{get:()=>n[$],set:E=>n[$]=E})})}else t.exposed||(t.exposed={});P&&t.render===br&&(t.render=P),R!=null&&(t.inheritAttrs=R),I&&(t.components=I),M&&(t.directives=M)}function y5(t,e,n=br,r=!1){bt(t)&&(t=qv(t));for(const a in t){const o=t[a];let i;Gt(o)?"default"in o?i=Ze(o.from||a,o.default,!0):i=Ze(o.from||a):i=Ze(o),vn(i)&&r?Object.defineProperty(e,a,{enumerable:!0,configurable:!0,get:()=>i.value,set:l=>i.value=l}):e[a]=i}}function c1(t,e,n){lr(bt(t)?t.map(r=>r.bind(e.proxy)):t.bind(e.proxy),e,n)}function BS(t,e,n,r){const a=r.includes(".")?IS(n,r):()=>n[r];if(ln(t)){const o=e[t];St(o)&&Se(a,o)}else if(St(t))Se(a,t.bind(n));else if(Gt(t))if(bt(t))t.forEach(o=>BS(o,e,n,r));else{const o=St(t.handler)?t.handler.bind(n):e[t.handler];St(o)&&Se(a,o,t)}}function ig(t){const e=t.type,{mixins:n,extends:r}=e,{mixins:a,optionsCache:o,config:{optionMergeStrategies:i}}=t.appContext,l=o.get(e);let u;return l?u=l:!a.length&&!n&&!r?u=e:(u={},a.length&&a.forEach(s=>uc(u,s,i,!0)),uc(u,e,i)),Gt(e)&&o.set(e,u),u}function uc(t,e,n,r=!1){const{mixins:a,extends:o}=e;o&&uc(t,o,n,!0),a&&a.forEach(i=>uc(t,i,n,!0));for(const i in e)if(!(r&&i==="expose")){const l=b5[i]||n&&n[i];t[i]=l?l(t[i],e[i]):e[i]}return t}const b5={data:d1,props:lo,emits:lo,methods:lo,computed:lo,beforeCreate:kn,created:kn,beforeMount:kn,mounted:kn,beforeUpdate:kn,updated:kn,beforeDestroy:kn,beforeUnmount:kn,destroyed:kn,unmounted:kn,activated:kn,deactivated:kn,errorCaptured:kn,serverPrefetch:kn,components:lo,directives:lo,watch:x5,provide:d1,inject:C5};function d1(t,e){return e?t?function(){return pn(St(t)?t.call(this,this):t,St(e)?e.call(this,this):e)}:e:t}function C5(t,e){return lo(qv(t),qv(e))}function qv(t){if(bt(t)){const e={};for(let n=0;n0)&&!(i&16)){if(i&8){const d=t.vnode.dynamicProps;for(let c=0;c{u=!0;const[f,h]=VS(c,e,!0);pn(i,f),h&&l.push(...h)};!n&&e.mixins.length&&e.mixins.forEach(d),t.extends&&d(t.extends),t.mixins&&t.mixins.forEach(d)}if(!o&&!u)return Gt(t)&&r.set(t,ci),ci;if(bt(o))for(let d=0;d-1,h[1]=g<0||p-1||Tt(h,"default"))&&l.push(c)}}}const s=[i,l];return Gt(t)&&r.set(t,s),s}function f1(t){return t[0]!=="$"}function v1(t){const e=t&&t.toString().match(/^\s*function (\w+)/);return e?e[1]:t===null?"null":""}function h1(t,e){return v1(t)===v1(e)}function p1(t,e){return bt(e)?e.findIndex(n=>h1(n,t)):St(e)&&h1(e,t)?0:-1}const KS=t=>t[0]==="_"||t==="$stable",lg=t=>bt(t)?t.map(Lr):[Lr(t)],P5=(t,e,n)=>{if(e._n)return e;const r=pl((...a)=>lg(e(...a)),n);return r._c=!1,r},HS=(t,e,n)=>{const r=t._ctx;for(const a in t){if(KS(a))continue;const o=t[a];if(St(o))e[a]=P5(a,o,r);else if(o!=null){const i=lg(o);e[a]=()=>i}}},zS=(t,e)=>{const n=lg(e);t.slots.default=()=>n},k5=(t,e)=>{if(t.vnode.shapeFlag&32){const n=e._;n?(t.slots=rt(e),oc(e,"_",n)):HS(e,t.slots={})}else t.slots={},e&&zS(t,e);oc(t.slots,ud,1)},O5=(t,e,n)=>{const{vnode:r,slots:a}=t;let o=!0,i=Ht;if(r.shapeFlag&32){const l=e._;l?n&&l===1?o=!1:(pn(a,e),!n&&l===1&&delete a._):(o=!e.$stable,HS(e,a)),i=e}else e&&(zS(t,e),i={default:1});if(o)for(const l in a)!KS(l)&&!(l in i)&&delete a[l]};function WS(){return{app:null,config:{isNativeTag:rT,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let T5=0;function M5(t,e){return function(r,a=null){St(r)||(r=Object.assign({},r)),a!=null&&!Gt(a)&&(a=null);const o=WS(),i=new Set;let l=!1;const u=o.app={_uid:T5++,_component:r,_props:a,_container:null,_context:o,_instance:null,version:Z5,get config(){return o.config},set config(s){},use(s,...d){return i.has(s)||(s&&St(s.install)?(i.add(s),s.install(u,...d)):St(s)&&(i.add(s),s(u,...d))),u},mixin(s){return o.mixins.includes(s)||o.mixins.push(s),u},component(s,d){return d?(o.components[s]=d,u):o.components[s]},directive(s,d){return d?(o.directives[s]=d,u):o.directives[s]},mount(s,d,c){if(!l){const f=v(r,a);return f.appContext=o,d&&e?e(f,s):t(f,s,c),l=!0,u._container=s,s.__vue_app__=u,sd(f.component)||f.component.proxy}},unmount(){l&&(t(null,u._container),delete u._container.__vue_app__)},provide(s,d){return o.provides[s]=d,u}};return u}}function Qv(t,e,n,r,a=!1){if(bt(t)){t.forEach((f,h)=>Qv(f,e&&(bt(e)?e[h]:e),n,r,a));return}if(Pl(r)&&!a)return;const o=r.shapeFlag&4?sd(r.component)||r.component.proxy:r.el,i=a?null:o,{i:l,r:u}=t,s=e&&e.r,d=l.refs===Ht?l.refs={}:l.refs,c=l.setupState;if(s!=null&&s!==u&&(ln(s)?(d[s]=null,Tt(c,s)&&(c[s]=null)):vn(s)&&(s.value=null)),St(u))Ba(u,l,12,[i,d]);else{const f=ln(u),h=vn(u);if(f||h){const p=()=>{if(t.f){const g=f?Tt(c,u)?c[u]:d[u]:u.value;a?bt(g)&&Hp(g,o):bt(g)?g.includes(o)||g.push(o):f?(d[u]=[o],Tt(c,u)&&(c[u]=d[u])):(u.value=[o],t.k&&(d[t.k]=u.value))}else f?(d[u]=i,Tt(c,u)&&(c[u]=i)):h&&(u.value=i,t.k&&(d[t.k]=i))};i?(p.id=-1,Rn(p,n)):p()}}}const Rn=o5;function E5(t){return I5(t)}function I5(t,e){const n=fT();n.__VUE__=!0;const{insert:r,remove:a,patchProp:o,createElement:i,createText:l,createComment:u,setText:s,setElementText:d,parentNode:c,nextSibling:f,setScopeId:h=br,insertStaticContent:p}=t,g=(q,z,Z,re=null,oe=null,se=null,me=!1,ue=null,ie=!!z.dynamicChildren)=>{if(q===z)return;q&&!fo(q,z)&&(re=G(q),W(q,oe,se,!0),q=null),z.patchFlag===-2&&(ie=!1,z.dynamicChildren=null);const{type:te,ref:de,shapeFlag:ve}=z;switch(te){case Wa:y(q,z,Z,re);break;case qn:b(q,z,Z,re);break;case Pf:q==null&&C(z,Z,re,me);break;case et:I(q,z,Z,re,oe,se,me,ue,ie);break;default:ve&1?P(q,z,Z,re,oe,se,me,ue,ie):ve&6?M(q,z,Z,re,oe,se,me,ue,ie):(ve&64||ve&128)&&te.process(q,z,Z,re,oe,se,me,ue,ie,ee)}de!=null&&oe&&Qv(de,q&&q.ref,se,z||q,!z)},y=(q,z,Z,re)=>{if(q==null)r(z.el=l(z.children),Z,re);else{const oe=z.el=q.el;z.children!==q.children&&s(oe,z.children)}},b=(q,z,Z,re)=>{q==null?r(z.el=u(z.children||""),Z,re):z.el=q.el},C=(q,z,Z,re)=>{[q.el,q.anchor]=p(q.children,z,Z,re,q.el,q.anchor)},x=({el:q,anchor:z},Z,re)=>{let oe;for(;q&&q!==z;)oe=f(q),r(q,Z,re),q=oe;r(z,Z,re)},w=({el:q,anchor:z})=>{let Z;for(;q&&q!==z;)Z=f(q),a(q),q=Z;a(z)},P=(q,z,Z,re,oe,se,me,ue,ie)=>{me=me||z.type==="svg",q==null?S(z,Z,re,oe,se,me,ue,ie):O(q,z,oe,se,me,ue,ie)},S=(q,z,Z,re,oe,se,me,ue)=>{let ie,te;const{type:de,props:ve,shapeFlag:be,transition:Pe,dirs:Ae}=q;if(ie=q.el=i(q.type,se,ve&&ve.is,ve),be&8?d(ie,q.children):be&16&&T(q.children,ie,null,re,oe,se&&de!=="foreignObject",me,ue),Ae&&Za(q,null,re,"created"),ve){for(const we in ve)we!=="value"&&!Ss(we)&&o(ie,we,null,ve[we],se,q.children,re,oe,U);"value"in ve&&o(ie,"value",null,ve.value),(te=ve.onVnodeBeforeMount)&&$r(te,re,q)}k(ie,q,q.scopeId,me,re),Ae&&Za(q,null,re,"beforeMount");const De=(!oe||oe&&!oe.pendingBranch)&&Pe&&!Pe.persisted;De&&Pe.beforeEnter(ie),r(ie,z,Z),((te=ve&&ve.onVnodeMounted)||De||Ae)&&Rn(()=>{te&&$r(te,re,q),De&&Pe.enter(ie),Ae&&Za(q,null,re,"mounted")},oe)},k=(q,z,Z,re,oe)=>{if(Z&&h(q,Z),re)for(let se=0;se{for(let te=ie;te{const ue=z.el=q.el;let{patchFlag:ie,dynamicChildren:te,dirs:de}=z;ie|=q.patchFlag&16;const ve=q.props||Ht,be=z.props||Ht;let Pe;Z&&Ja(Z,!1),(Pe=be.onVnodeBeforeUpdate)&&$r(Pe,Z,z,q),de&&Za(z,q,Z,"beforeUpdate"),Z&&Ja(Z,!0);const Ae=oe&&z.type!=="foreignObject";if(te?_(q.dynamicChildren,te,ue,Z,re,Ae,se):me||$(q,z,ue,null,Z,re,Ae,se,!1),ie>0){if(ie&16)R(ue,z,ve,be,Z,re,oe);else if(ie&2&&ve.class!==be.class&&o(ue,"class",null,be.class,oe),ie&4&&o(ue,"style",ve.style,be.style,oe),ie&8){const De=z.dynamicProps;for(let we=0;we{Pe&&$r(Pe,Z,z,q),de&&Za(z,q,Z,"updated")},re)},_=(q,z,Z,re,oe,se,me)=>{for(let ue=0;ue{if(Z!==re){if(Z!==Ht)for(const ue in Z)!Ss(ue)&&!(ue in re)&&o(q,ue,Z[ue],null,me,z.children,oe,se,U);for(const ue in re){if(Ss(ue))continue;const ie=re[ue],te=Z[ue];ie!==te&&ue!=="value"&&o(q,ue,te,ie,me,z.children,oe,se,U)}"value"in re&&o(q,"value",Z.value,re.value)}},I=(q,z,Z,re,oe,se,me,ue,ie)=>{const te=z.el=q?q.el:l(""),de=z.anchor=q?q.anchor:l("");let{patchFlag:ve,dynamicChildren:be,slotScopeIds:Pe}=z;Pe&&(ue=ue?ue.concat(Pe):Pe),q==null?(r(te,Z,re),r(de,Z,re),T(z.children,Z,de,oe,se,me,ue,ie)):ve>0&&ve&64&&be&&q.dynamicChildren?(_(q.dynamicChildren,be,Z,oe,se,me,ue),(z.key!=null||oe&&z===oe.subTree)&&ug(q,z,!0)):$(q,z,Z,de,oe,se,me,ue,ie)},M=(q,z,Z,re,oe,se,me,ue,ie)=>{z.slotScopeIds=ue,q==null?z.shapeFlag&512?oe.ctx.activate(z,Z,re,me,ie):D(z,Z,re,oe,se,me,ie):j(q,z,ie)},D=(q,z,Z,re,oe,se,me)=>{const ue=q.component=K5(q,re,oe);if(ad(q)&&(ue.ctx.renderer=ee),H5(ue),ue.asyncDep){if(oe&&oe.registerDep(ue,L),!q.el){const ie=ue.subTree=v(qn);b(null,ie,z,Z)}return}L(ue,q,z,Z,oe,se,me)},j=(q,z,Z)=>{const re=z.component=q.component;if(n5(q,z,Z))if(re.asyncDep&&!re.asyncResolved){A(re,z,Z);return}else re.next=z,XT(re.update),re.update();else z.el=q.el,re.vnode=z},L=(q,z,Z,re,oe,se,me)=>{const ue=()=>{if(q.isMounted){let{next:de,bu:ve,u:be,parent:Pe,vnode:Ae}=q,De=de,we;Ja(q,!1),de?(de.el=Ae.el,A(q,de,me)):de=Ae,ve&&bf(ve),(we=de.props&&de.props.onVnodeBeforeUpdate)&&$r(we,Pe,de,Ae),Ja(q,!0);const he=Cf(q),Oe=q.subTree;q.subTree=he,g(Oe,he,c(Oe.el),G(Oe),q,oe,se),de.el=he.el,De===null&&r5(q,he.el),be&&Rn(be,oe),(we=de.props&&de.props.onVnodeUpdated)&&Rn(()=>$r(we,Pe,de,Ae),oe)}else{let de;const{el:ve,props:be}=z,{bm:Pe,m:Ae,parent:De}=q,we=Pl(z);if(Ja(q,!1),Pe&&bf(Pe),!we&&(de=be&&be.onVnodeBeforeMount)&&$r(de,De,z),Ja(q,!0),ve&&ne){const he=()=>{q.subTree=Cf(q),ne(ve,q.subTree,q,oe,null)};we?z.type.__asyncLoader().then(()=>!q.isUnmounted&&he()):he()}else{const he=q.subTree=Cf(q);g(null,he,Z,re,q,oe,se),z.el=he.el}if(Ae&&Rn(Ae,oe),!we&&(de=be&&be.onVnodeMounted)){const he=z;Rn(()=>$r(de,De,he),oe)}(z.shapeFlag&256||De&&Pl(De.vnode)&&De.vnode.shapeFlag&256)&&q.a&&Rn(q.a,oe),q.isMounted=!0,z=Z=re=null}},ie=q.effect=new Gp(ue,()=>tg(te),q.scope),te=q.update=()=>ie.run();te.id=q.uid,Ja(q,!0),te()},A=(q,z,Z)=>{z.component=q;const re=q.vnode.props;q.vnode=z,q.next=null,S5(q,z.props,re,Z),O5(q,z.children,Z),Bi(),i1(),ji()},$=(q,z,Z,re,oe,se,me,ue,ie=!1)=>{const te=q&&q.children,de=q?q.shapeFlag:0,ve=z.children,{patchFlag:be,shapeFlag:Pe}=z;if(be>0){if(be&128){K(te,ve,Z,re,oe,se,me,ue,ie);return}else if(be&256){E(te,ve,Z,re,oe,se,me,ue,ie);return}}Pe&8?(de&16&&U(te,oe,se),ve!==te&&d(Z,ve)):de&16?Pe&16?K(te,ve,Z,re,oe,se,me,ue,ie):U(te,oe,se,!0):(de&8&&d(Z,""),Pe&16&&T(ve,Z,re,oe,se,me,ue,ie))},E=(q,z,Z,re,oe,se,me,ue,ie)=>{q=q||ci,z=z||ci;const te=q.length,de=z.length,ve=Math.min(te,de);let be;for(be=0;bede?U(q,oe,se,!0,!1,ve):T(z,Z,re,oe,se,me,ue,ie,ve)},K=(q,z,Z,re,oe,se,me,ue,ie)=>{let te=0;const de=z.length;let ve=q.length-1,be=de-1;for(;te<=ve&&te<=be;){const Pe=q[te],Ae=z[te]=ie?Ea(z[te]):Lr(z[te]);if(fo(Pe,Ae))g(Pe,Ae,Z,null,oe,se,me,ue,ie);else break;te++}for(;te<=ve&&te<=be;){const Pe=q[ve],Ae=z[be]=ie?Ea(z[be]):Lr(z[be]);if(fo(Pe,Ae))g(Pe,Ae,Z,null,oe,se,me,ue,ie);else break;ve--,be--}if(te>ve){if(te<=be){const Pe=be+1,Ae=Pebe)for(;te<=ve;)W(q[te],oe,se,!0),te++;else{const Pe=te,Ae=te,De=new Map;for(te=Ae;te<=be;te++){const ge=z[te]=ie?Ea(z[te]):Lr(z[te]);ge.key!=null&&De.set(ge.key,te)}let we,he=0;const Oe=be-Ae+1;let Ee=!1,Ce=0;const fe=new Array(Oe);for(te=0;te=Oe){W(ge,oe,se,!0);continue}let ke;if(ge.key!=null)ke=De.get(ge.key);else for(we=Ae;we<=be;we++)if(fe[we-Ae]===0&&fo(ge,z[we])){ke=we;break}ke===void 0?W(ge,oe,se,!0):(fe[ke-Ae]=te+1,ke>=Ce?Ce=ke:Ee=!0,g(ge,z[ke],Z,null,oe,se,me,ue,ie),he++)}const pe=Ee?_5(fe):ci;for(we=pe.length-1,te=Oe-1;te>=0;te--){const ge=Ae+te,ke=z[ge],Ie=ge+1{const{el:se,type:me,transition:ue,children:ie,shapeFlag:te}=q;if(te&6){B(q.component.subTree,z,Z,re);return}if(te&128){q.suspense.move(z,Z,re);return}if(te&64){me.move(q,z,Z,ee);return}if(me===et){r(se,z,Z);for(let ve=0;veue.enter(se),oe);else{const{leave:ve,delayLeave:be,afterLeave:Pe}=ue,Ae=()=>r(se,z,Z),De=()=>{ve(se,()=>{Ae(),Pe&&Pe()})};be?be(se,Ae,De):De()}else r(se,z,Z)},W=(q,z,Z,re=!1,oe=!1)=>{const{type:se,props:me,ref:ue,children:ie,dynamicChildren:te,shapeFlag:de,patchFlag:ve,dirs:be}=q;if(ue!=null&&Qv(ue,null,Z,q,!0),de&256){z.ctx.deactivate(q);return}const Pe=de&1&&be,Ae=!Pl(q);let De;if(Ae&&(De=me&&me.onVnodeBeforeUnmount)&&$r(De,z,q),de&6)V(q.component,Z,re);else{if(de&128){q.suspense.unmount(Z,re);return}Pe&&Za(q,null,z,"beforeUnmount"),de&64?q.type.remove(q,z,Z,oe,ee,re):te&&(se!==et||ve>0&&ve&64)?U(te,z,Z,!1,!0):(se===et&&ve&384||!oe&&de&16)&&U(ie,z,Z),re&&Y(q)}(Ae&&(De=me&&me.onVnodeUnmounted)||Pe)&&Rn(()=>{De&&$r(De,z,q),Pe&&Za(q,null,z,"unmounted")},Z)},Y=q=>{const{type:z,el:Z,anchor:re,transition:oe}=q;if(z===et){H(Z,re);return}if(z===Pf){w(q);return}const se=()=>{a(Z),oe&&!oe.persisted&&oe.afterLeave&&oe.afterLeave()};if(q.shapeFlag&1&&oe&&!oe.persisted){const{leave:me,delayLeave:ue}=oe,ie=()=>me(Z,se);ue?ue(q.el,se,ie):ie()}else se()},H=(q,z)=>{let Z;for(;q!==z;)Z=f(q),a(q),q=Z;a(z)},V=(q,z,Z)=>{const{bum:re,scope:oe,update:se,subTree:me,um:ue}=q;re&&bf(re),oe.stop(),se&&(se.active=!1,W(me,q,z,Z)),ue&&Rn(ue,z),Rn(()=>{q.isUnmounted=!0},z),z&&z.pendingBranch&&!z.isUnmounted&&q.asyncDep&&!q.asyncResolved&&q.suspenseId===z.pendingId&&(z.deps--,z.deps===0&&z.resolve())},U=(q,z,Z,re=!1,oe=!1,se=0)=>{for(let me=se;meq.shapeFlag&6?G(q.component.subTree):q.shapeFlag&128?q.suspense.next():f(q.anchor||q.el),J=(q,z,Z)=>{q==null?z._vnode&&W(z._vnode,null,null,!0):g(z._vnode||null,q,z,null,null,null,Z),i1(),TS(),z._vnode=q},ee={p:g,um:W,m:B,r:Y,mt:D,mc:T,pc:$,pbc:_,n:G,o:t};let ae,ne;return e&&([ae,ne]=e(ee)),{render:J,hydrate:ae,createApp:M5(J,ae)}}function Ja({effect:t,update:e},n){t.allowRecurse=e.allowRecurse=n}function ug(t,e,n=!1){const r=t.children,a=e.children;if(bt(r)&&bt(a))for(let o=0;o>1,t[n[l]]0&&(e[r]=n[o-1]),n[o]=r)}}for(o=n.length,i=n[o-1];o-- >0;)n[o]=i,i=e[i];return n}const N5=t=>t.__isTeleport,Ol=t=>t&&(t.disabled||t.disabled===""),g1=t=>typeof SVGElement<"u"&&t instanceof SVGElement,Zv=(t,e)=>{const n=t&&t.to;return ln(n)?e?e(n):null:n},A5={__isTeleport:!0,process(t,e,n,r,a,o,i,l,u,s){const{mc:d,pc:c,pbc:f,o:{insert:h,querySelector:p,createText:g,createComment:y}}=s,b=Ol(e.props);let{shapeFlag:C,children:x,dynamicChildren:w}=e;if(t==null){const P=e.el=g(""),S=e.anchor=g("");h(P,n,r),h(S,n,r);const k=e.target=Zv(e.props,p),T=e.targetAnchor=g("");k&&(h(T,k),i=i||g1(k));const O=(_,R)=>{C&16&&d(x,_,R,a,o,i,l,u)};b?O(n,S):k&&O(k,T)}else{e.el=t.el;const P=e.anchor=t.anchor,S=e.target=t.target,k=e.targetAnchor=t.targetAnchor,T=Ol(t.props),O=T?n:S,_=T?P:k;if(i=i||g1(S),w?(f(t.dynamicChildren,w,O,a,o,i,l),ug(t,e,!0)):u||c(t,e,O,_,a,o,i,l,!1),b)T||zu(e,n,P,s,1);else if((e.props&&e.props.to)!==(t.props&&t.props.to)){const R=e.target=Zv(e.props,p);R&&zu(e,R,null,s,0)}else T&&zu(e,S,k,s,1)}US(e)},remove(t,e,n,r,{um:a,o:{remove:o}},i){const{shapeFlag:l,children:u,anchor:s,targetAnchor:d,target:c,props:f}=t;if(c&&o(d),(i||!Ol(f))&&(o(s),l&16))for(let h=0;h0?yr||ci:null,R5(),Ql>0&&yr&&yr.push(t),t}function D5(t,e,n,r,a,o){return YS(XS(t,e,n,r,a,o,!0))}function GS(t,e,n,r,a){return YS(v(t,e,n,r,a,!0))}function hn(t){return t?t.__v_isVNode===!0:!1}function fo(t,e){return t.type===e.type&&t.key===e.key}const ud="__vInternal",qS=({key:t})=>t??null,Ps=({ref:t,ref_key:e,ref_for:n})=>t!=null?ln(t)||vn(t)||St(t)?{i:mn,r:t,k:e,f:!!n}:t:null;function XS(t,e=null,n=null,r=0,a=null,o=t===et?0:1,i=!1,l=!1){const u={__v_isVNode:!0,__v_skip:!0,type:t,props:e,key:e&&qS(e),ref:e&&Ps(e),scopeId:rd,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:o,patchFlag:r,dynamicProps:a,dynamicChildren:null,appContext:null,ctx:mn};return l?(dg(u,n),o&128&&t.normalize(u)):n&&(u.shapeFlag|=ln(n)?8:16),Ql>0&&!i&&yr&&(u.patchFlag>0||o&6)&&u.patchFlag!==32&&yr.push(u),u}const v=F5;function F5(t,e=null,n=null,r=0,a=null,o=!1){if((!t||t===h5)&&(t=qn),hn(t)){const l=Cn(t,e,!0);return n&&dg(l,n),Ql>0&&!o&&yr&&(l.shapeFlag&6?yr[yr.indexOf(t)]=l:yr.push(l)),l.patchFlag|=-2,l}if(Y5(t)&&(t=t.__vccOpts),e){e=L5(e);let{class:l,style:u}=e;l&&!ln(l)&&(e.class=Vp(l)),Gt(u)&&(yS(u)&&!bt(u)&&(u=pn({},u)),e.style=jp(u))}const i=ln(t)?1:a5(t)?128:N5(t)?64:Gt(t)?4:St(t)?2:0;return XS(t,e,n,r,a,i,o,!0)}function L5(t){return t?yS(t)||ud in t?pn({},t):t:null}function Cn(t,e,n=!1){const{props:r,ref:a,patchFlag:o,children:i}=t,l=e?B5(r||{},e):r;return{__v_isVNode:!0,__v_skip:!0,type:t.type,props:l,key:l&&qS(l),ref:e&&e.ref?n&&a?bt(a)?a.concat(Ps(e)):[a,Ps(e)]:Ps(e):a,scopeId:t.scopeId,slotScopeIds:t.slotScopeIds,children:i,target:t.target,targetAnchor:t.targetAnchor,staticCount:t.staticCount,shapeFlag:t.shapeFlag,patchFlag:e&&t.type!==et?o===-1?16:o|16:o,dynamicProps:t.dynamicProps,dynamicChildren:t.dynamicChildren,appContext:t.appContext,dirs:t.dirs,transition:t.transition,component:t.component,suspense:t.suspense,ssContent:t.ssContent&&Cn(t.ssContent),ssFallback:t.ssFallback&&Cn(t.ssFallback),el:t.el,anchor:t.anchor,ctx:t.ctx}}function In(t=" ",e=0){return v(Wa,null,t,e)}function Lre(t="",e=!1){return e?(cg(),GS(qn,null,t)):v(qn,null,t)}function Lr(t){return t==null||typeof t=="boolean"?v(qn):bt(t)?v(et,null,t.slice()):typeof t=="object"?Ea(t):v(Wa,null,String(t))}function Ea(t){return t.el===null&&t.patchFlag!==-1||t.memo?t:Cn(t)}function dg(t,e){let n=0;const{shapeFlag:r}=t;if(e==null)e=null;else if(bt(e))n=16;else if(typeof e=="object")if(r&65){const a=e.default;a&&(a._c&&(a._d=!1),dg(t,a()),a._c&&(a._d=!0));return}else{n=32;const a=e._;!a&&!(ud in e)?e._ctx=mn:a===3&&mn&&(mn.slots._===1?e._=1:(e._=2,t.patchFlag|=1024))}else St(e)?(e={default:e,_ctx:mn},n=32):(e=String(e),r&64?(n=16,e=[In(e)]):n=8);t.children=e,t.shapeFlag|=n}function B5(...t){const e={};for(let n=0;nfn||mn,Pi=t=>{fn=t,t.scope.on()},Po=()=>{fn&&fn.scope.off(),fn=null};function QS(t){return t.vnode.shapeFlag&4}let Zl=!1;function H5(t,e=!1){Zl=e;const{props:n,children:r}=t.vnode,a=QS(t);w5(t,n,a,e),k5(t,r);const o=a?z5(t,e):void 0;return Zl=!1,o}function z5(t,e){const n=t.type;t.accessCache=Object.create(null),t.proxy=bS(new Proxy(t.ctx,g5));const{setup:r}=n;if(r){const a=t.setupContext=r.length>1?JS(t):null;Pi(t),Bi();const o=Ba(r,t,0,[t.props,a]);if(ji(),Po(),iS(o)){if(o.then(Po,Po),e)return o.then(i=>{y1(t,i,e)}).catch(i=>{td(i,t,0)});t.asyncDep=o}else y1(t,o,e)}else ZS(t,e)}function y1(t,e,n){St(e)?t.type.__ssrInlineRender?t.ssrRender=e:t.render=e:Gt(e)&&(t.setupState=SS(e)),ZS(t,n)}let b1;function ZS(t,e,n){const r=t.type;if(!t.render){if(!e&&b1&&!r.render){const a=r.template||ig(t).template;if(a){const{isCustomElement:o,compilerOptions:i}=t.appContext.config,{delimiters:l,compilerOptions:u}=r,s=pn(pn({isCustomElement:o,delimiters:l},i),u);r.render=b1(a,s)}}t.render=r.render||br}Pi(t),Bi(),m5(t),ji(),Po()}function W5(t){return new Proxy(t.attrs,{get(e,n){return Xn(t,"get","$attrs"),e[n]}})}function JS(t){const e=r=>{t.exposed=r||{}};let n;return{get attrs(){return n||(n=W5(t))},slots:t.slots,emit:t.emit,expose:e}}function sd(t){if(t.exposed)return t.exposeProxy||(t.exposeProxy=new Proxy(SS(bS(t.exposed)),{get(e,n){if(n in e)return e[n];if(n in kl)return kl[n](t)},has(e,n){return n in e||n in kl}}))}function U5(t,e=!0){return St(t)?t.displayName||t.name:t.name||e&&t.__name}function Y5(t){return St(t)&&"__vccOpts"in t}const F=(t,e)=>YT(t,e,Zl);function G5(){return q5().attrs}function q5(){const t=sn();return t.setupContext||(t.setupContext=JS(t))}function Jl(t,e,n){const r=arguments.length;return r===2?Gt(e)&&!bt(e)?hn(e)?v(t,null,[e]):v(t,e):v(t,null,e):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&hn(n)&&(n=[n]),v(t,e,n))}const X5=Symbol(""),Q5=()=>Ze(X5),Z5="3.2.45",J5="http://www.w3.org/2000/svg",vo=typeof document<"u"?document:null,C1=vo&&vo.createElement("template"),e7={insert:(t,e,n)=>{e.insertBefore(t,n||null)},remove:t=>{const e=t.parentNode;e&&e.removeChild(t)},createElement:(t,e,n,r)=>{const a=e?vo.createElementNS(J5,t):vo.createElement(t,n?{is:n}:void 0);return t==="select"&&r&&r.multiple!=null&&a.setAttribute("multiple",r.multiple),a},createText:t=>vo.createTextNode(t),createComment:t=>vo.createComment(t),setText:(t,e)=>{t.nodeValue=e},setElementText:(t,e)=>{t.textContent=e},parentNode:t=>t.parentNode,nextSibling:t=>t.nextSibling,querySelector:t=>vo.querySelector(t),setScopeId(t,e){t.setAttribute(e,"")},insertStaticContent(t,e,n,r,a,o){const i=n?n.previousSibling:e.lastChild;if(a&&(a===o||a.nextSibling))for(;e.insertBefore(a.cloneNode(!0),n),!(a===o||!(a=a.nextSibling)););else{C1.innerHTML=r?`${t}`:t;const l=C1.content;if(r){const u=l.firstChild;for(;u.firstChild;)l.appendChild(u.firstChild);l.removeChild(u)}e.insertBefore(l,n)}return[i?i.nextSibling:e.firstChild,n?n.previousSibling:e.lastChild]}};function t7(t,e,n){const r=t._vtc;r&&(e=(e?[e,...r]:[...r]).join(" ")),e==null?t.removeAttribute("class"):n?t.setAttribute("class",e):t.className=e}function n7(t,e,n){const r=t.style,a=ln(n);if(n&&!a){for(const o in n)Jv(r,o,n[o]);if(e&&!ln(e))for(const o in e)n[o]==null&&Jv(r,o,"")}else{const o=r.display;a?e!==n&&(r.cssText=n):e&&t.removeAttribute("style"),"_vod"in t&&(r.display=o)}}const x1=/\s*!important$/;function Jv(t,e,n){if(bt(n))n.forEach(r=>Jv(t,e,r));else if(n==null&&(n=""),e.startsWith("--"))t.setProperty(e,n);else{const r=r7(t,e);x1.test(n)?t.setProperty(Li(r),n.replace(x1,""),"important"):t[r]=n}}const w1=["Webkit","Moz","ms"],kf={};function r7(t,e){const n=kf[e];if(n)return n;let r=Ln(e);if(r!=="filter"&&r in t)return kf[e]=r;r=Jc(r);for(let a=0;aOf||(c7.then(()=>Of=0),Of=Date.now());function f7(t,e){const n=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=n.attached)return;lr(v7(r,n.value),e,5,[r])};return n.value=t,n.attached=d7(),n}function v7(t,e){if(bt(e)){const n=t.stopImmediatePropagation;return t.stopImmediatePropagation=()=>{n.call(t),t._stopped=!0},e.map(r=>a=>!a._stopped&&r&&r(a))}else return e}const k1=/^on[a-z]/,h7=(t,e,n,r,a=!1,o,i,l,u)=>{e==="class"?t7(t,r,a):e==="style"?n7(t,n,r):Xc(e)?Kp(e)||u7(t,e,n,r,i):(e[0]==="."?(e=e.slice(1),!0):e[0]==="^"?(e=e.slice(1),!1):p7(t,e,r,a))?o7(t,e,r,o,i,l,u):(e==="true-value"?t._trueValue=r:e==="false-value"&&(t._falseValue=r),a7(t,e,r,a))};function p7(t,e,n,r){return r?!!(e==="innerHTML"||e==="textContent"||e in t&&k1.test(e)&&St(n)):e==="spellcheck"||e==="draggable"||e==="translate"||e==="form"||e==="list"&&t.tagName==="INPUT"||e==="type"&&t.tagName==="TEXTAREA"||k1.test(e)&&ln(n)?!1:e in t}const wa="transition",nl="animation",Nn=(t,{slots:e})=>Jl(NS,t3(t),e);Nn.displayName="Transition";const e3={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},g7=Nn.props=pn({},NS.props,e3),eo=(t,e=[])=>{bt(t)?t.forEach(n=>n(...e)):t&&t(...e)},O1=t=>t?bt(t)?t.some(e=>e.length>1):t.length>1:!1;function t3(t){const e={};for(const I in t)I in e3||(e[I]=t[I]);if(t.css===!1)return e;const{name:n="v",type:r,duration:a,enterFromClass:o=`${n}-enter-from`,enterActiveClass:i=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:u=o,appearActiveClass:s=i,appearToClass:d=l,leaveFromClass:c=`${n}-leave-from`,leaveActiveClass:f=`${n}-leave-active`,leaveToClass:h=`${n}-leave-to`}=t,p=m7(a),g=p&&p[0],y=p&&p[1],{onBeforeEnter:b,onEnter:C,onEnterCancelled:x,onLeave:w,onLeaveCancelled:P,onBeforeAppear:S=b,onAppear:k=C,onAppearCancelled:T=x}=e,O=(I,M,D)=>{Oa(I,M?d:l),Oa(I,M?s:i),D&&D()},_=(I,M)=>{I._isLeaving=!1,Oa(I,c),Oa(I,h),Oa(I,f),M&&M()},R=I=>(M,D)=>{const j=I?k:C,L=()=>O(M,I,D);eo(j,[M,L]),T1(()=>{Oa(M,I?u:o),na(M,I?d:l),O1(j)||M1(M,r,g,L)})};return pn(e,{onBeforeEnter(I){eo(b,[I]),na(I,o),na(I,i)},onBeforeAppear(I){eo(S,[I]),na(I,u),na(I,s)},onEnter:R(!1),onAppear:R(!0),onLeave(I,M){I._isLeaving=!0;const D=()=>_(I,M);na(I,c),r3(),na(I,f),T1(()=>{I._isLeaving&&(Oa(I,c),na(I,h),O1(w)||M1(I,r,y,D))}),eo(w,[I,D])},onEnterCancelled(I){O(I,!1),eo(x,[I])},onAppearCancelled(I){O(I,!0),eo(T,[I])},onLeaveCancelled(I){_(I),eo(P,[I])}})}function m7(t){if(t==null)return null;if(Gt(t))return[Tf(t.enter),Tf(t.leave)];{const e=Tf(t);return[e,e]}}function Tf(t){return Up(t)}function na(t,e){e.split(/\s+/).forEach(n=>n&&t.classList.add(n)),(t._vtc||(t._vtc=new Set)).add(e)}function Oa(t,e){e.split(/\s+/).forEach(r=>r&&t.classList.remove(r));const{_vtc:n}=t;n&&(n.delete(e),n.size||(t._vtc=void 0))}function T1(t){requestAnimationFrame(()=>{requestAnimationFrame(t)})}let y7=0;function M1(t,e,n,r){const a=t._endId=++y7,o=()=>{a===t._endId&&r()};if(n)return setTimeout(o,n);const{type:i,timeout:l,propCount:u}=n3(t,e);if(!i)return r();const s=i+"end";let d=0;const c=()=>{t.removeEventListener(s,f),o()},f=h=>{h.target===t&&++d>=u&&c()};setTimeout(()=>{d(n[p]||"").split(", "),a=r(`${wa}Delay`),o=r(`${wa}Duration`),i=E1(a,o),l=r(`${nl}Delay`),u=r(`${nl}Duration`),s=E1(l,u);let d=null,c=0,f=0;e===wa?i>0&&(d=wa,c=i,f=o.length):e===nl?s>0&&(d=nl,c=s,f=u.length):(c=Math.max(i,s),d=c>0?i>s?wa:nl:null,f=d?d===wa?o.length:u.length:0);const h=d===wa&&/\b(transform|all)(,|$)/.test(r(`${wa}Property`).toString());return{type:d,timeout:c,propCount:f,hasTransform:h}}function E1(t,e){for(;t.lengthI1(n)+I1(t[r])))}function I1(t){return Number(t.slice(0,-1).replace(",","."))*1e3}function r3(){return document.body.offsetHeight}const a3=new WeakMap,o3=new WeakMap,b7={name:"TransitionGroup",props:pn({},g7,{tag:String,moveClass:String}),setup(t,{slots:e}){const n=sn(),r=_S();let a,o;return wn(()=>{if(!a.length)return;const i=t.moveClass||`${t.name||"v"}-move`;if(!S7(a[0].el,n.vnode.el,i))return;a.forEach(C7),a.forEach(x7);const l=a.filter(w7);r3(),l.forEach(u=>{const s=u.el,d=s.style;na(s,i),d.transform=d.webkitTransform=d.transitionDuration="";const c=s._moveCb=f=>{f&&f.target!==s||(!f||/transform$/.test(f.propertyName))&&(s.removeEventListener("transitionend",c),s._moveCb=null,Oa(s,i))};s.addEventListener("transitionend",c)})}),()=>{const i=rt(t),l=t3(i);let u=i.tag||et;a=o,o=e.default?rg(e.default()):[];for(let s=0;s{i.split(/\s+/).forEach(l=>l&&r.classList.remove(l))}),n.split(/\s+/).forEach(i=>i&&r.classList.add(i)),r.style.display="none";const a=e.nodeType===1?e:e.parentNode;a.appendChild(r);const{hasTransform:o}=n3(r);return a.removeChild(r),o}const P7=["ctrl","shift","alt","meta"],k7={stop:t=>t.stopPropagation(),prevent:t=>t.preventDefault(),self:t=>t.target!==t.currentTarget,ctrl:t=>!t.ctrlKey,shift:t=>!t.shiftKey,alt:t=>!t.altKey,meta:t=>!t.metaKey,left:t=>"button"in t&&t.button!==0,middle:t=>"button"in t&&t.button!==1,right:t=>"button"in t&&t.button!==2,exact:(t,e)=>P7.some(n=>t[`${n}Key`]&&!e.includes(n))},_1=(t,e)=>(n,...r)=>{for(let a=0;a{rl(t,!1)}):rl(t,e))},beforeUnmount(t,{value:e}){rl(t,e)}};function rl(t,e){t.style.display=e?t._vod:"none"}const O7=pn({patchProp:h7},e7);let N1;function i3(){return N1||(N1=E5(O7))}const sc=(...t)=>{i3().render(...t)},l3=(...t)=>{const e=i3().createApp(...t),{mount:n}=e;return e.mount=r=>{const a=T7(r);if(!a)return;const o=e._component;!St(o)&&!o.render&&!o.template&&(o.template=a.innerHTML),a.innerHTML="";const i=n(a,!1,a instanceof SVGElement);return a instanceof Element&&(a.removeAttribute("v-cloak"),a.setAttribute("data-v-app","")),i},e};function T7(t){return ln(t)?document.querySelector(t):t}function Fe(t){"@babel/helpers - typeof";return Fe=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Fe(t)}function M7(t,e){if(Fe(t)!="object"||!t)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e||"default");if(Fe(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function u3(t){var e=M7(t,"string");return Fe(e)=="symbol"?e:String(e)}function N(t,e,n){return e=u3(e),e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function A1(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(a){return Object.getOwnPropertyDescriptor(t,a).enumerable})),n.push.apply(n,r)}return n}function m(t){for(var e=1;e1&&arguments[1]!==void 0?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0;return typeof t=="function"?t(e):t??n}function ce(){for(var t=[],e=0;e0},t.prototype.connect_=function(){!eh||this.connected_||(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),U7?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},t.prototype.disconnect_=function(){!eh||!this.connected_||(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},t.prototype.onTransitionEnd_=function(e){var n=e.propertyName,r=n===void 0?"":n,a=W7.some(function(o){return!!~r.indexOf(o)});a&&this.refresh()},t.getInstance=function(){return this.instance_||(this.instance_=new t),this.instance_},t.instance_=null,t}(),d3=function(t,e){for(var n=0,r=Object.keys(e);n"u"||!(Element instanceof Object))){if(!(e instanceof ki(e).Element))throw new TypeError('parameter 1 is not of type "Element".');var n=this.observations_;n.has(e)||(n.set(e,new tM(e)),this.controller_.addObserver(this),this.controller_.refresh())}},t.prototype.unobserve=function(e){if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");if(!(typeof Element>"u"||!(Element instanceof Object))){if(!(e instanceof ki(e).Element))throw new TypeError('parameter 1 is not of type "Element".');var n=this.observations_;n.has(e)&&(n.delete(e),n.size||this.controller_.removeObserver(this))}},t.prototype.disconnect=function(){this.clearActive(),this.observations_.clear(),this.controller_.removeObserver(this)},t.prototype.gatherActive=function(){var e=this;this.clearActive(),this.observations_.forEach(function(n){n.isActive()&&e.activeObservations_.push(n)})},t.prototype.broadcastActive=function(){if(this.hasActive()){var e=this.callbackCtx_,n=this.activeObservations_.map(function(r){return new nM(r.target,r.broadcastRect())});this.callback_.call(e,n,e),this.clearActive()}},t.prototype.clearActive=function(){this.activeObservations_.splice(0)},t.prototype.hasActive=function(){return this.activeObservations_.length>0},t}(),v3=typeof WeakMap<"u"?new WeakMap:new c3,h3=function(){function t(e){if(!(this instanceof t))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var n=Y7.getInstance(),r=new rM(e,n,this);v3.set(this,r)}return t}();["observe","unobserve","disconnect"].forEach(function(t){h3.prototype[t]=function(){var e;return(e=v3.get(this))[t].apply(e,arguments)}});var aM=function(){return typeof cc.ResizeObserver<"u"?cc.ResizeObserver:h3}();const hg=aM;function p3(t){if(Array.isArray(t))return t}function oM(t,e){var n=t==null?null:typeof Symbol<"u"&&t[Symbol.iterator]||t["@@iterator"];if(n!=null){var r,a,o,i,l=[],u=!0,s=!1;try{if(o=(n=n.call(t)).next,e===0){if(Object(n)!==n)return;u=!1}else for(;!(u=(r=o.call(n)).done)&&(l.push(r.value),l.length!==e);u=!0);}catch(d){s=!0,a=d}finally{try{if(!u&&n.return!=null&&(i=n.return(),Object(i)!==i))return}finally{if(s)throw a}}return l}}function th(t,e){(e==null||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n0&&arguments[0]!==void 0?arguments[0]:"",n=arguments.length>1?arguments[1]:void 0,r={},a=/;(?![^(]*\))/g,o=/:(.+)/;return Fe(e)==="object"?e:(e.split(a).forEach(function(i){if(i){var l=i.split(o);if(l.length>1){var u=n?vg(l[0].trim()):l[0].trim();r[u]=l[1].trim()}}}),r)},la=function(e,n){return e[n]!==void 0},Mt=function t(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,r=Array.isArray(e)?e:[e],a=[];return r.forEach(function(o){Array.isArray(o)?a.push.apply(a,_e(t(o,n))):o&&o.type===et?a.push.apply(a,_e(t(o.children,n))):o&&hn(o)?n&&!bu(o)?a.push(o):n||a.push(o):nh(o)&&a.push(o)}),a},yu=function(e){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"default",r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(hn(e))return e.type===et?n==="default"?Mt(e.children):[]:e.children&&e.children[n]?Mt(e.children[n](r)):[];var a=e.$slots[n]&&e.$slots[n](r);return Mt(a)},$a=function(e){for(var n,r=(e==null||(n=e.vnode)===null||n===void 0?void 0:n.el)||e&&(e.$el||e);r&&!r.tagName;)r=r.nextSibling;return r},w3=function(e){var n={};if(e.$&&e.$.vnode){var r=e.$.vnode.props||{};Object.keys(e.$props).forEach(function(l){var u=e.$props[l],s=F7(l);(u!==void 0||s in r)&&(n[l]=u)})}else if(hn(e)&&Fe(e.type)==="object"){var a=e.props||{},o={};Object.keys(a).forEach(function(l){o[vg(l)]=a[l]});var i=e.type.props||{};Object.keys(i).forEach(function(l){var u=B7(i,o,l,o[l]);(u!==void 0||l in o)&&(n[l]=u)})}return n},bg=function(e){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"default",r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,o=void 0;if(e.$){var i=e[n];if(i!==void 0)return typeof i=="function"&&a?i(r):i;o=e.$slots[n],o=a&&o?o(r):o}else if(hn(e)){var l=e.props&&e.props[n];if(l!==void 0&&e.props!==null)return typeof l=="function"&&a?l(r):l;e.type===et?o=e.children:e.children&&e.children[n]&&(o=e.children[n],o=a&&o?o(r):o)}return Array.isArray(o)&&(o=Mt(o),o=o.length===1?o[0]:o,o=o.length===0?void 0:o),o};function F1(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,n={};return t.$?n=m(m({},n),t.$attrs):n=m(m({},n),t.props),mg(n)[e?"onEvents":"events"]}function MM(t){var e=(hn(t)?t.props:t.$attrs)||{},n=e.class||{},r={};return typeof n=="string"?n.split(" ").forEach(function(a){r[a.trim()]=!0}):Array.isArray(n)?ce(n).split(" ").forEach(function(a){r[a.trim()]=!0}):r=m(m({},r),n),r}function S3(t,e){var n=(hn(t)?t.props:t.$attrs)||{},r=n.style||{};if(typeof r=="string")r=yg(r,e);else if(e&&r){var a={};return Object.keys(r).forEach(function(o){return a[vg(o)]=r[o]}),a}return r}function EM(t){return t==null||t===""||Array.isArray(t)&&t.length===0}function bu(t){return t&&(t.type===qn||t.type===et&&t.children.length===0||t.type===Wa&&t.children.trim()==="")}function IM(t){return t&&t.type===Wa}function qt(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],e=[];return t.forEach(function(n){Array.isArray(n)?e.push.apply(e,_e(n)):(n==null?void 0:n.type)===et?e.push.apply(e,_e(qt(n.children))):e.push(n)}),e.filter(function(n){return!bu(n)})}function ol(t){if(t){var e=qt(t);return e.length?e:void 0}else return t}function Jt(t){return Array.isArray(t)&&t.length===1&&(t=t[0]),t&&t.__v_isVNode&&Fe(t.type)!=="symbol"}function At(t,e){var n,r,a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"default";return(n=e[a])!==null&&n!==void 0?n:(r=t[a])===null||r===void 0?void 0:r.call(t)}const dr=le({compatConfig:{MODE:3},name:"ResizeObserver",props:{disabled:Boolean,onResize:Function},emits:["resize"],setup:function(e,n){var r=n.slots,a=xt({width:0,height:0,offsetHeight:0,offsetWidth:0}),o=null,i=null,l=function(){i&&(i.disconnect(),i=null)},u=function(f){var h=e.onResize,p=f[0].target,g=p.getBoundingClientRect(),y=g.width,b=g.height,C=p.offsetWidth,x=p.offsetHeight,w=Math.floor(y),P=Math.floor(b);if(a.width!==w||a.height!==P||a.offsetWidth!==C||a.offsetHeight!==x){var S={width:w,height:P,offsetWidth:C,offsetHeight:x};pt(a,S),h&&Promise.resolve().then(function(){h(m(m({},S),{},{offsetWidth:C,offsetHeight:x}),p)})}},s=sn(),d=function(){var f=e.disabled;if(f){l();return}var h=$a(s),p=h!==o;p&&(l(),o=h),!i&&h&&(i=new hg(u),i.observe(h))};return Ge(function(){d()}),wn(function(){d()}),_n(function(){l()}),Se(function(){return e.disabled},function(){d()},{flush:"post"}),function(){var c;return(c=r.default)===null||c===void 0?void 0:c.call(r)[0]}}});var P3=function(e){return setTimeout(e,16)},k3=function(e){return clearTimeout(e)};typeof window<"u"&&"requestAnimationFrame"in window&&(P3=function(e){return window.requestAnimationFrame(e)},k3=function(e){return window.cancelAnimationFrame(e)});var L1=0,Cg=new Map;function O3(t){Cg.delete(t)}function Qe(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1;L1+=1;var n=L1;function r(a){if(a===0)O3(n),t();else{var o=P3(function(){r(a-1)});Cg.set(n,o)}}return r(e),n}Qe.cancel=function(t){var e=Cg.get(t);return O3(e),k3(e)};function rh(t){var e,n=function(o){return function(){e=null,t.apply(void 0,_e(o))}},r=function(){if(e==null){for(var o=arguments.length,i=new Array(o),l=0;lt.top-n)return"".concat(n+e.top,"px")}function V1(t,e,n){if(n!==void 0&&e.bottom=0)&&(n[a]=t[a]);return n}function He(t,e){if(t==null)return{};var n=NM(t,e),r,a;if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);for(a=0;a=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(n[r]=t[r])}return n}const E3={items_per_page:"/ page",jump_to:"Go to",jump_to_confirm:"confirm",page:"",prev_page:"Previous Page",next_page:"Next Page",prev_5:"Previous 5 Pages",next_5:"Next 5 Pages",prev_3:"Previous 3 Pages",next_3:"Next 3 Pages"};var AM={locale:"en_US",today:"Today",now:"Now",backToToday:"Back to today",ok:"Ok",clear:"Clear",month:"Month",year:"Year",timeSelect:"select time",dateSelect:"select date",weekSelect:"Choose a week",monthSelect:"Choose a month",yearSelect:"Choose a year",decadeSelect:"Choose a decade",yearFormat:"YYYY",dateFormat:"M/D/YYYY",dayFormat:"D",dateTimeFormat:"M/D/YYYY HH:mm:ss",monthBeforeYear:!0,previousMonth:"Previous month (PageUp)",nextMonth:"Next month (PageDown)",previousYear:"Last year (Control + left)",nextYear:"Next year (Control + right)",previousDecade:"Last decade",nextDecade:"Next decade",previousCentury:"Last century",nextCentury:"Next century"};const $M=AM;var RM={placeholder:"Select time",rangePlaceholder:["Start time","End time"]};const I3=RM;var DM={lang:m({placeholder:"Select date",yearPlaceholder:"Select year",quarterPlaceholder:"Select quarter",monthPlaceholder:"Select month",weekPlaceholder:"Select week",rangePlaceholder:["Start date","End date"],rangeYearPlaceholder:["Start year","End year"],rangeQuarterPlaceholder:["Start quarter","End quarter"],rangeMonthPlaceholder:["Start month","End month"],rangeWeekPlaceholder:["Start week","End week"]},$M),timePickerLocale:m({},I3)};const eu=DM;var Kn="${label} is not a valid ${type}",FM={locale:"en",Pagination:E3,DatePicker:eu,TimePicker:I3,Calendar:eu,global:{placeholder:"Please select"},Table:{filterTitle:"Filter menu",filterConfirm:"OK",filterReset:"Reset",filterEmptyText:"No filters",filterCheckall:"Select all items",filterSearchPlaceholder:"Search in filters",emptyText:"No data",selectAll:"Select current page",selectInvert:"Invert current page",selectNone:"Clear all data",selectionAll:"Select all data",sortTitle:"Sort",expand:"Expand row",collapse:"Collapse row",triggerDesc:"Click to sort descending",triggerAsc:"Click to sort ascending",cancelSort:"Click to cancel sorting"},Modal:{okText:"OK",cancelText:"Cancel",justOkText:"OK"},Popconfirm:{okText:"OK",cancelText:"Cancel"},Transfer:{titles:["",""],searchPlaceholder:"Search here",itemUnit:"item",itemsUnit:"items",remove:"Remove",selectCurrent:"Select current page",removeCurrent:"Remove current page",selectAll:"Select all data",removeAll:"Remove all data",selectInvert:"Invert current page"},Upload:{uploading:"Uploading...",removeFile:"Remove file",uploadError:"Upload error",previewFile:"Preview file",downloadFile:"Download file"},Empty:{description:"No Data"},Icon:{icon:"icon"},Text:{edit:"Edit",copy:"Copy",copied:"Copied",expand:"Expand"},PageHeader:{back:"Back"},Form:{optional:"(optional)",defaultValidateMessages:{default:"Field validation error for ${label}",required:"Please enter ${label}",enum:"${label} must be one of [${enum}]",whitespace:"${label} cannot be a blank character",date:{format:"${label} date format is invalid",parse:"${label} cannot be converted to a date",invalid:"${label} is an invalid date"},types:{string:Kn,method:Kn,array:Kn,object:Kn,number:Kn,date:Kn,boolean:Kn,integer:Kn,float:Kn,regexp:Kn,email:Kn,url:Kn,hex:Kn},string:{len:"${label} must be ${len} characters",min:"${label} must be at least ${min} characters",max:"${label} must be up to ${max} characters",range:"${label} must be between ${min}-${max} characters"},number:{len:"${label} must be equal to ${len}",min:"${label} must be minimum ${min}",max:"${label} must be maximum ${max}",range:"${label} must be between ${min}-${max}"},array:{len:"Must be ${len} ${label}",min:"At least ${min} ${label}",max:"At most ${max} ${label}",range:"The amount of ${label} must be between ${min}-${max}"},pattern:{mismatch:"${label} does not match the pattern ${pattern}"}}},Image:{preview:"Preview"}};const wr=FM,Vi=le({compatConfig:{MODE:3},name:"LocaleReceiver",props:{componentName:String,defaultLocale:{type:[Object,Function]},children:{type:Function}},setup:function(e,n){var r=n.slots,a=Ze("localeData",{}),o=F(function(){var l=e.componentName,u=l===void 0?"global":l,s=e.defaultLocale,d=s||wr[u||"global"],c=a.antLocale,f=u&&c?c[u]:{};return m(m({},typeof d=="function"?d():d),f||{})}),i=F(function(){var l=a.antLocale,u=l&&l.locale;return l&&l.exist&&!u?wr.locale:u});return function(){var l=e.children||r.default,u=a.antLocale;return l==null?void 0:l(o.value,i.value,u)}}});function zr(t,e,n){var r=Ze("localeData",{}),a=F(function(){var o=r.antLocale,i=tn(e)||wr[t||"global"],l=t&&o?o[t]:{};return m(m(m({},typeof i=="function"?i():i),l||{}),tn(n)||{})});return[a]}var _3=function(){var e=Re("empty",{}),n=e.getPrefixCls,r=n("empty-img-default");return v("svg",{class:r,width:"184",height:"152",viewBox:"0 0 184 152"},[v("g",{fill:"none","fill-rule":"evenodd"},[v("g",{transform:"translate(24 31.67)"},[v("ellipse",{class:"".concat(r,"-ellipse"),cx:"67.797",cy:"106.89",rx:"67.797",ry:"12.668"},null),v("path",{class:"".concat(r,"-path-1"),d:"M122.034 69.674L98.109 40.229c-1.148-1.386-2.826-2.225-4.593-2.225h-51.44c-1.766 0-3.444.839-4.592 2.225L13.56 69.674v15.383h108.475V69.674z"},null),v("path",{class:"".concat(r,"-path-2"),d:"M101.537 86.214L80.63 61.102c-1.001-1.207-2.507-1.867-4.048-1.867H31.724c-1.54 0-3.047.66-4.048 1.867L6.769 86.214v13.792h94.768V86.214z",transform:"translate(13.56)"},null),v("path",{class:"".concat(r,"-path-3"),d:"M33.83 0h67.933a4 4 0 0 1 4 4v93.344a4 4 0 0 1-4 4H33.83a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4z"},null),v("path",{class:"".concat(r,"-path-4"),d:"M42.678 9.953h50.237a2 2 0 0 1 2 2V36.91a2 2 0 0 1-2 2H42.678a2 2 0 0 1-2-2V11.953a2 2 0 0 1 2-2zM42.94 49.767h49.713a2.262 2.262 0 1 1 0 4.524H42.94a2.262 2.262 0 0 1 0-4.524zM42.94 61.53h49.713a2.262 2.262 0 1 1 0 4.525H42.94a2.262 2.262 0 0 1 0-4.525zM121.813 105.032c-.775 3.071-3.497 5.36-6.735 5.36H20.515c-3.238 0-5.96-2.29-6.734-5.36a7.309 7.309 0 0 1-.222-1.79V69.675h26.318c2.907 0 5.25 2.448 5.25 5.42v.04c0 2.971 2.37 5.37 5.277 5.37h34.785c2.907 0 5.277-2.421 5.277-5.393V75.1c0-2.972 2.343-5.426 5.25-5.426h26.318v33.569c0 .617-.077 1.216-.221 1.789z"},null)]),v("path",{class:"".concat(r,"-path-5"),d:"M149.121 33.292l-6.83 2.65a1 1 0 0 1-1.317-1.23l1.937-6.207c-2.589-2.944-4.109-6.534-4.109-10.408C138.802 8.102 148.92 0 161.402 0 173.881 0 184 8.102 184 18.097c0 9.995-10.118 18.097-22.599 18.097-4.528 0-8.744-1.066-12.28-2.902z"},null),v("g",{class:"".concat(r,"-g"),transform:"translate(149.65 15.383)"},[v("ellipse",{cx:"20.654",cy:"3.167",rx:"2.849",ry:"2.815"},null),v("path",{d:"M5.698 5.63H0L2.898.704zM9.259.704h4.985V5.63H9.259z"},null)])])])};_3.PRESENTED_IMAGE_DEFAULT=!0;const LM=_3;var N3=function(){var e=Re("empty",{}),n=e.getPrefixCls,r=n("empty-img-simple");return v("svg",{class:r,width:"64",height:"41",viewBox:"0 0 64 41"},[v("g",{transform:"translate(0 1)",fill:"none","fill-rule":"evenodd"},[v("ellipse",{class:"".concat(r,"-ellipse"),fill:"#F5F5F5",cx:"32",cy:"33",rx:"32",ry:"7"},null),v("g",{class:"".concat(r,"-g"),"fill-rule":"nonzero",stroke:"#D9D9D9"},[v("path",{d:"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z"},null),v("path",{d:"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z",fill:"#FAFAFA",class:"".concat(r,"-path")},null)])])])};N3.PRESENTED_IMAGE_SIMPLE=!0;const BM=N3;function z1(t,e){for(var n=0;n=0||(a[n]=t[n]);return a}function W1(t){return((e=t)!=null&&typeof e=="object"&&Array.isArray(e)===!1)==1&&Object.prototype.toString.call(t)==="[object Object]";var e}var D3=Object.prototype,F3=D3.toString,jM=D3.hasOwnProperty,L3=/^\s*function (\w+)/;function U1(t){var e,n=(e=t==null?void 0:t.type)!==null&&e!==void 0?e:t;if(n){var r=n.toString().match(L3);return r?r[1]:""}return""}var Io=function(t){var e,n;return W1(t)!==!1&&typeof(e=t.constructor)=="function"&&W1(n=e.prototype)!==!1&&n.hasOwnProperty("isPrototypeOf")!==!1},VM=function(t){return t},Mn=VM,tu=function(t,e){return jM.call(t,e)},KM=Number.isInteger||function(t){return typeof t=="number"&&isFinite(t)&&Math.floor(t)===t},Oi=Array.isArray||function(t){return F3.call(t)==="[object Array]"},Ti=function(t){return F3.call(t)==="[object Function]"},fc=function(t){return Io(t)&&tu(t,"_vueTypes_name")},B3=function(t){return Io(t)&&(tu(t,"type")||["_vueTypes_name","validator","default","required"].some(function(e){return tu(t,e)}))};function xg(t,e){return Object.defineProperty(t.bind(e),"__original",{value:t})}function Ro(t,e,n){var r;n===void 0&&(n=!1);var a=!0,o="";r=Io(t)?t:{type:t};var i=fc(r)?r._vueTypes_name+" - ":"";if(B3(r)&&r.type!==null){if(r.type===void 0||r.type===!0||!r.required&&e===void 0)return a;Oi(r.type)?(a=r.type.some(function(c){return Ro(c,e,!0)===!0}),o=r.type.map(function(c){return U1(c)}).join(" or ")):a=(o=U1(r))==="Array"?Oi(e):o==="Object"?Io(e):o==="String"||o==="Number"||o==="Boolean"||o==="Function"?function(c){if(c==null)return"";var f=c.constructor.toString().match(L3);return f?f[1]:""}(e)===o:e instanceof r.type}if(!a){var l=i+'value "'+e+'" should be of type "'+o+'"';return n===!1?(Mn(l),!1):l}if(tu(r,"validator")&&Ti(r.validator)){var u=Mn,s=[];if(Mn=function(c){s.push(c)},a=r.validator(e),Mn=u,!a){var d=(s.length>1?"* ":"")+s.join(` +* `);return s.length=0,n===!1?(Mn(d),a):d}}return a}function Qn(t,e){var n=Object.defineProperties(e,{_vueTypes_name:{value:t,writable:!0},isRequired:{get:function(){return this.required=!0,this}},def:{value:function(a){return a!==void 0||this.default?Ti(a)||Ro(this,a,!0)===!0?(this.default=Oi(a)?function(){return[].concat(a)}:Io(a)?function(){return Object.assign({},a)}:a,this):(Mn(this._vueTypes_name+' - invalid default value: "'+a+'"'),this):this}}}),r=n.validator;return Ti(r)&&(n.validator=xg(r,n)),n}function Hr(t,e){var n=Qn(t,e);return Object.defineProperty(n,"validate",{value:function(r){return Ti(this.validator)&&Mn(this._vueTypes_name+` - calling .validate() will overwrite the current custom validator function. Validator info: +`+JSON.stringify(this)),this.validator=xg(r,this),this}})}function Y1(t,e,n){var r,a,o=(r=e,a={},Object.getOwnPropertyNames(r).forEach(function(c){a[c]=Object.getOwnPropertyDescriptor(r,c)}),Object.defineProperties({},a));if(o._vueTypes_name=t,!Io(n))return o;var i,l,u=n.validator,s=R3(n,["validator"]);if(Ti(u)){var d=o.validator;d&&(d=(l=(i=d).__original)!==null&&l!==void 0?l:i),o.validator=xg(d?function(c){return d.call(this,c)&&u.call(this,c)}:u,o)}return Object.assign(o,s)}function fd(t){return t.replace(/^(?!\s*$)/gm," ")}var HM=function(){return Hr("any",{})},zM=function(){return Hr("function",{type:Function})},WM=function(){return Hr("boolean",{type:Boolean})},UM=function(){return Hr("string",{type:String})},YM=function(){return Hr("number",{type:Number})},GM=function(){return Hr("array",{type:Array})},qM=function(){return Hr("object",{type:Object})},XM=function(){return Qn("integer",{type:Number,validator:function(t){return KM(t)}})},QM=function(){return Qn("symbol",{validator:function(t){return typeof t=="symbol"}})};function ZM(t,e){if(e===void 0&&(e="custom validation failed"),typeof t!="function")throw new TypeError("[VueTypes error]: You must provide a function as argument");return Qn(t.name||"<>",{validator:function(n){var r=t(n);return r||Mn(this._vueTypes_name+" - "+e),r}})}function JM(t){if(!Oi(t))throw new TypeError("[VueTypes error]: You must provide an array as argument.");var e='oneOf - value should be one of "'+t.join('", "')+'".',n=t.reduce(function(r,a){if(a!=null){var o=a.constructor;r.indexOf(o)===-1&&r.push(o)}return r},[]);return Qn("oneOf",{type:n.length>0?n:void 0,validator:function(r){var a=t.indexOf(r)!==-1;return a||Mn(e),a}})}function eE(t){if(!Oi(t))throw new TypeError("[VueTypes error]: You must provide an array as argument");for(var e=!1,n=[],r=0;r0&&n.some(function(u){return i.indexOf(u)===-1})){var l=n.filter(function(u){return i.indexOf(u)===-1});return Mn(l.length===1?'shape - required property "'+l[0]+'" is not defined.':'shape - required properties "'+l.join('", "')+'" are not defined.'),!1}return i.every(function(u){if(e.indexOf(u)===-1)return o._vueTypes_isLoose===!0||(Mn('shape - shape definition does not include a "'+u+'" property. Allowed keys: "'+e.join('", "')+'".'),!1);var s=Ro(t[u],a[u],!0);return typeof s=="string"&&Mn('shape - "'+u+`" property validation error: + `+fd(s)),s===!0})}});return Object.defineProperty(r,"_vueTypes_isLoose",{writable:!0,value:!1}),Object.defineProperty(r,"loose",{get:function(){return this._vueTypes_isLoose=!0,this}}),r}var Rr=function(){function t(){}return t.extend=function(e){var n=this;if(Oi(e))return e.forEach(function(c){return n.extend(c)}),this;var r=e.name,a=e.validate,o=a!==void 0&&a,i=e.getter,l=i!==void 0&&i,u=R3(e,["name","validate","getter"]);if(tu(this,r))throw new TypeError('[VueTypes error]: Type "'+r+'" already defined');var s,d=u.type;return fc(d)?(delete u.type,Object.defineProperty(this,r,l?{get:function(){return Y1(r,d,u)}}:{value:function(){var c,f=Y1(r,d,u);return f.validator&&(f.validator=(c=f.validator).bind.apply(c,[f].concat([].slice.call(arguments)))),f}})):(s=l?{get:function(){var c=Object.assign({},u);return o?Hr(r,c):Qn(r,c)},enumerable:!0}:{value:function(){var c,f,h=Object.assign({},u);return c=o?Hr(r,h):Qn(r,h),h.validator&&(c.validator=(f=h.validator).bind.apply(f,[c].concat([].slice.call(arguments)))),c},enumerable:!0},Object.defineProperty(this,r,s))},A3(t,null,[{key:"any",get:function(){return HM()}},{key:"func",get:function(){return zM().def(this.defaults.func)}},{key:"bool",get:function(){return WM().def(this.defaults.bool)}},{key:"string",get:function(){return UM().def(this.defaults.string)}},{key:"number",get:function(){return YM().def(this.defaults.number)}},{key:"array",get:function(){return GM().def(this.defaults.array)}},{key:"object",get:function(){return qM().def(this.defaults.object)}},{key:"integer",get:function(){return XM().def(this.defaults.integer)}},{key:"symbol",get:function(){return QM()}}]),t}();function j3(t){var e;return t===void 0&&(t={func:function(){},bool:!0,string:"",number:0,array:function(){return[]},object:function(){return{}},integer:0}),(e=function(n){function r(){return n.apply(this,arguments)||this}return $3(r,n),A3(r,null,[{key:"sensibleDefaults",get:function(){return ks({},this.defaults)},set:function(a){this.defaults=a!==!1?ks({},a!==!0?a:t):{}}}]),r}(Rr)).defaults=ks({},t),e}Rr.defaults={},Rr.custom=ZM,Rr.oneOf=JM,Rr.instanceOf=nE,Rr.oneOfType=eE,Rr.arrayOf=tE,Rr.objectOf=rE,Rr.shape=aE,Rr.utils={validate:function(t,e){return Ro(e,t,!0)===!0},toType:function(t,e,n){return n===void 0&&(n=!1),n?Hr(t,e):Qn(t,e)}};(function(t){function e(){return t.apply(this,arguments)||this}return $3(e,t),e})(j3());var V3=j3({func:void 0,bool:void 0,string:void 0,number:void 0,array:void 0,object:void 0,integer:void 0});V3.extend([{name:"looseBool",getter:!0,type:Boolean,default:void 0},{name:"style",getter:!0,type:[String,Object],default:void 0},{name:"VueNode",getter:!0,type:null}]);function K3(t){return t.default=void 0,t}const X=V3;var oE=["image","description","imageStyle","class"],H3=v(LM,null,null),z3=v(BM,null,null),Ki=function(e,n){var r,a=n.slots,o=a===void 0?{}:a,i=n.attrs,l=Re("empty",e),u=l.direction,s=l.prefixCls,d=s.value,c=m(m({},e),i),f=c.image,h=f===void 0?H3:f,p=c.description,g=p===void 0?((r=o.description)===null||r===void 0?void 0:r.call(o))||void 0:p,y=c.imageStyle,b=c.class,C=b===void 0?"":b,x=He(c,oE);return v(Vi,{componentName:"Empty",children:function(P){var S,k=typeof g<"u"?g:P.description,T=typeof k=="string"?k:"empty",O=null;return typeof h=="string"?O=v("img",{alt:T,src:h},null):O=h,v("div",m({class:ce(d,C,(S={},N(S,"".concat(d,"-normal"),h===z3),N(S,"".concat(d,"-rtl"),u.value==="rtl"),S))},x),[v("div",{class:"".concat(d,"-image"),style:y},[O]),k&&v("p",{class:"".concat(d,"-description")},[k]),o.default&&v("div",{class:"".concat(d,"-footer")},[qt(o.default())])])}},null)};Ki.displayName="AEmpty";Ki.PRESENTED_IMAGE_DEFAULT=H3;Ki.PRESENTED_IMAGE_SIMPLE=z3;Ki.inheritAttrs=!1;Ki.props={prefixCls:String,image:X.any,description:X.any,imageStyle:{type:Object,default:void 0}};const Na=Wt(Ki);var iE=function(e){var n=Re("empty",e),r=n.prefixCls,a=function(i){switch(i){case"Table":case"List":return v(Na,{image:Na.PRESENTED_IMAGE_SIMPLE},null);case"Select":case"TreeSelect":case"Cascader":case"Transfer":case"Mentions":return v(Na,{image:Na.PRESENTED_IMAGE_SIMPLE,class:"".concat(r.value,"-small")},null);default:return v(Na,null,null)}};return a(e.componentName)};function W3(t){return v(iE,{componentName:t},null)}var G1={};function lE(t,e){}function uE(t,e){}function U3(t,e,n){!e&&!G1[n]&&(t(!1,n),G1[n]=!0)}function Y3(t,e){U3(lE,t,e)}function sE(t,e){U3(uE,t,e)}const Zt=function(t,e){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"";Y3(t,"[antdv: ".concat(e,"] ").concat(n))};var ah="internalMark",Os=le({compatConfig:{MODE:3},name:"ALocaleProvider",props:{locale:{type:Object},ANT_MARK__:String},setup:function(e,n){var r=n.slots;Zt(e.ANT_MARK__===ah,"LocaleProvider","`LocaleProvider` is deprecated. Please use `locale` with `ConfigProvider` instead");var a=xt({antLocale:m(m({},e.locale),{},{exist:!0}),ANT_MARK__:ah});return at("localeData",a),Se(function(){return e.locale},function(){a.antLocale=m(m({},e.locale),{},{exist:!0})},{immediate:!0}),function(){var o;return(o=r.default)===null||o===void 0?void 0:o.call(r)}}});Os.install=function(t){return t.component(Os.name,Os),t};const G3=Wt(Os);Bt("bottomLeft","bottomRight","topLeft","topRight");var cE=function(e){return e!==void 0&&(e==="topLeft"||e==="topRight")?"slide-down":"slide-up"},Ya=function(e){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=m(e?{name:e,appear:!0,enterFromClass:"".concat(e,"-enter ").concat(e,"-enter-prepare"),enterActiveClass:"".concat(e,"-enter ").concat(e,"-enter-prepare"),enterToClass:"".concat(e,"-enter ").concat(e,"-enter-active"),leaveFromClass:" ".concat(e,"-leave"),leaveActiveClass:"".concat(e,"-leave ").concat(e,"-leave-active"),leaveToClass:"".concat(e,"-leave ").concat(e,"-leave-active")}:{css:!1},n);return r},wg=function(e){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=m(e?{name:e,appear:!0,appearActiveClass:"".concat(e),appearToClass:"".concat(e,"-appear ").concat(e,"-appear-active"),enterFromClass:"".concat(e,"-appear ").concat(e,"-enter ").concat(e,"-appear-prepare ").concat(e,"-enter-prepare"),enterActiveClass:"".concat(e),enterToClass:"".concat(e,"-enter ").concat(e,"-appear ").concat(e,"-appear-active ").concat(e,"-enter-active"),leaveActiveClass:"".concat(e," ").concat(e,"-leave"),leaveToClass:"".concat(e,"-leave-active")}:{css:!1},n);return r},Sr=function(e,n,r){return r!==void 0?r:"".concat(e,"-").concat(n)};const dE=le({name:"Notice",inheritAttrs:!1,props:["prefixCls","duration","updateMark","noticeKey","closeIcon","closable","props","onClick","onClose","holder","visible"],setup:function(e,n){var r=n.attrs,a=n.slots,o,i=!1,l=F(function(){return e.duration===void 0?4.5:e.duration}),u=function(){l.value&&!i&&(o=setTimeout(function(){d()},l.value*1e3))},s=function(){o&&(clearTimeout(o),o=null)},d=function(h){h&&h.stopPropagation(),s();var p=e.onClose,g=e.noticeKey;p&&p(g)},c=function(){s(),u()};return Ge(function(){u()}),_n(function(){i=!0,s()}),Se([l,function(){return e.updateMark},function(){return e.visible}],function(f,h){var p=Te(f,3),g=p[0],y=p[1],b=p[2],C=Te(h,3),x=C[0],w=C[1],P=C[2];(g!==x||y!==w||b!==P&&P)&&c()},{flush:"post"}),function(){var f,h,p=e.prefixCls,g=e.closable,y=e.closeIcon,b=y===void 0?(f=a.closeIcon)===null||f===void 0?void 0:f.call(a):y,C=e.onClick,x=e.holder,w=r.class,P=r.style,S="".concat(p,"-notice"),k=Object.keys(r).reduce(function(O,_){return(_.substr(0,5)==="data-"||_.substr(0,5)==="aria-"||_==="role")&&(O[_]=r[_]),O},{}),T=v("div",m({class:ce(S,w,N({},"".concat(S,"-closable"),g)),style:P,onMouseenter:s,onMouseleave:u,onClick:C},k),[v("div",{class:"".concat(S,"-content")},[(h=a.default)===null||h===void 0?void 0:h.call(a)]),g?v("a",{tabindex:0,onClick:d,class:"".concat(S,"-close")},[b||v("span",{class:"".concat(S,"-close-x")},null)]):null]);return x?v(sg,{to:x},{default:function(){return T}}):T}}});var fE=["name","getContainer","appContext","prefixCls","rootPrefixCls","transitionName","hasTransitionName"],q1=0,vE=Date.now();function X1(){var t=q1;return q1+=1,"rcNotification_".concat(vE,"_").concat(t)}var oh=le({name:"Notification",inheritAttrs:!1,props:["prefixCls","transitionName","animation","maxCount","closeIcon"],setup:function(e,n){var r=n.attrs,a=n.expose,o=n.slots,i=new Map,l=Q([]),u=F(function(){var c=e.prefixCls,f=e.animation,h=f===void 0?"fade":f,p=e.transitionName;return!p&&h&&(p="".concat(c,"-").concat(h)),wg(p)}),s=function(f,h){var p=f.key||X1(),g=m(m({},f),{},{key:p}),y=e.maxCount,b=l.value.map(function(x){return x.notice.key}).indexOf(p),C=l.value.concat();b!==-1?C.splice(b,1,{notice:g,holderCallback:h}):(y&&l.value.length>=y&&(g.key=C[0].notice.key,g.updateMark=X1(),g.userPassKey=p,C.shift()),C.push({notice:g,holderCallback:h})),l.value=C},d=function(f){l.value=l.value.filter(function(h){var p=h.notice,g=p.key,y=p.userPassKey,b=y||g;return b!==f})};return a({add:s,remove:d,notices:l}),function(){var c,f,h=e.prefixCls,p=e.closeIcon,g=p===void 0?(c=o.closeIcon)===null||c===void 0?void 0:c.call(o,{prefixCls:h}):p,y=l.value.map(function(C,x){var w=C.notice,P=C.holderCallback,S=x===l.value.length-1?w.updateMark:void 0,k=w.key,T=w.userPassKey,O=w.content,_=m(m(m({prefixCls:h,closeIcon:typeof g=="function"?g({prefixCls:h}):g},w),w.props),{},{key:k,noticeKey:T||k,updateMark:S,onClose:function(I){var M;d(I),(M=w.onClose)===null||M===void 0||M.call(w)},onClick:w.onClick});return P?v("div",{key:k,class:"".concat(h,"-hook-holder"),ref:function(I){typeof k>"u"||(I?(i.set(k,I),P(I,_)):i.delete(k))}},null):v(dE,_,{default:function(){return[typeof O=="function"?O({prefixCls:h}):O]}})}),b=(f={},N(f,h,1),N(f,r.class,!!r.class),f);return v("div",{class:b,style:r.style||{top:"65px",left:"50%"}},[v(fg,m({tag:"div"},u.value),{default:function(){return[y]}})])}}});oh.newInstance=function(e,n){var r=e||{},a=r.name,o=a===void 0?"notification":a,i=r.getContainer,l=r.appContext,u=r.prefixCls,s=r.rootPrefixCls,d=r.transitionName,c=r.hasTransitionName,f=He(r,fE),h=document.createElement("div");if(i){var p=i();p.appendChild(h)}else document.body.appendChild(h);var g=le({compatConfig:{MODE:3},name:"NotificationWrapper",setup:function(C,x){var w=x.attrs,P=Q();return Ge(function(){n({notice:function(k){var T;(T=P.value)===null||T===void 0||T.add(k)},removeNotice:function(k){var T;(T=P.value)===null||T===void 0||T.remove(k)},destroy:function(){sc(null,h),h.parentNode&&h.parentNode.removeChild(h)},component:P})}),function(){var S=Dn,k=S.getPrefixCls(o,u),T=S.getRootPrefixCls(s,k),O=c?d:"".concat(T,"-").concat(d);return v(Vg,m(m({},S),{},{notUpdateGlobalConfig:!0,prefixCls:T}),{default:function(){return[v(oh,m(m({ref:P},w),{},{prefixCls:k,transitionName:O}),null)]}})}}}),y=v(g,f);y.appContext=l||y.appContext,sc(y,h)};const q3=oh;var hE={icon:{tag:"svg",attrs:{viewBox:"0 0 1024 1024",focusable:"false"},children:[{tag:"path",attrs:{d:"M988 548c-19.9 0-36-16.1-36-36 0-59.4-11.6-117-34.6-171.3a440.45 440.45 0 00-94.3-139.9 437.71 437.71 0 00-139.9-94.3C629 83.6 571.4 72 512 72c-19.9 0-36-16.1-36-36s16.1-36 36-36c69.1 0 136.2 13.5 199.3 40.3C772.3 66 827 103 874 150c47 47 83.9 101.8 109.7 162.7 26.7 63.1 40.2 130.2 40.2 199.3.1 19.9-16 36-35.9 36z"}}]},name:"loading",theme:"outlined"};const pE=hE;function bn(t,e){gE(t)&&(t="100%");var n=mE(t);return t=e===360?t:Math.min(e,Math.max(0,parseFloat(t))),n&&(t=parseInt(String(t*e),10)/100),Math.abs(t-e)<1e-6?1:(e===360?t=(t<0?t%e+e:t%e)/parseFloat(String(e)):t=t%e/parseFloat(String(e)),t)}function Uu(t){return Math.min(1,Math.max(0,t))}function gE(t){return typeof t=="string"&&t.indexOf(".")!==-1&&parseFloat(t)===1}function mE(t){return typeof t=="string"&&t.indexOf("%")!==-1}function X3(t){return t=parseFloat(t),(isNaN(t)||t<0||t>1)&&(t=1),t}function Yu(t){return t<=1?"".concat(Number(t)*100,"%"):t}function Co(t){return t.length===1?"0"+t:String(t)}function yE(t,e,n){return{r:bn(t,255)*255,g:bn(e,255)*255,b:bn(n,255)*255}}function Q1(t,e,n){t=bn(t,255),e=bn(e,255),n=bn(n,255);var r=Math.max(t,e,n),a=Math.min(t,e,n),o=0,i=0,l=(r+a)/2;if(r===a)i=0,o=0;else{var u=r-a;switch(i=l>.5?u/(2-r-a):u/(r+a),r){case t:o=(e-n)/u+(e1&&(n-=1),n<1/6?t+(e-t)*(6*n):n<1/2?e:n<2/3?t+(e-t)*(2/3-n)*6:t}function bE(t,e,n){var r,a,o;if(t=bn(t,360),e=bn(e,100),n=bn(n,100),e===0)a=n,o=n,r=n;else{var i=n<.5?n*(1+e):n+e-n*e,l=2*n-i;r=Mf(l,i,t+1/3),a=Mf(l,i,t),o=Mf(l,i,t-1/3)}return{r:r*255,g:a*255,b:o*255}}function ih(t,e,n){t=bn(t,255),e=bn(e,255),n=bn(n,255);var r=Math.max(t,e,n),a=Math.min(t,e,n),o=0,i=r,l=r-a,u=r===0?0:l/r;if(r===a)o=0;else{switch(r){case t:o=(e-n)/l+(e>16,g:(t&65280)>>8,b:t&255}}var uh={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",goldenrod:"#daa520",gold:"#ffd700",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavenderblush:"#fff0f5",lavender:"#e6e6fa",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"};function ei(t){var e={r:0,g:0,b:0},n=1,r=null,a=null,o=null,i=!1,l=!1;return typeof t=="string"&&(t=OE(t)),typeof t=="object"&&(Qr(t.r)&&Qr(t.g)&&Qr(t.b)?(e=yE(t.r,t.g,t.b),i=!0,l=String(t.r).substr(-1)==="%"?"prgb":"rgb"):Qr(t.h)&&Qr(t.s)&&Qr(t.v)?(r=Yu(t.s),a=Yu(t.v),e=CE(t.h,r,a),i=!0,l="hsv"):Qr(t.h)&&Qr(t.s)&&Qr(t.l)&&(r=Yu(t.s),o=Yu(t.l),e=bE(t.h,r,o),i=!0,l="hsl"),Object.prototype.hasOwnProperty.call(t,"a")&&(n=t.a)),n=X3(n),{ok:i,format:t.format||l,r:Math.min(255,Math.max(e.r,0)),g:Math.min(255,Math.max(e.g,0)),b:Math.min(255,Math.max(e.b,0)),a:n}}var PE="[-\\+]?\\d+%?",kE="[-\\+]?\\d*\\.\\d+%?",Ra="(?:".concat(kE,")|(?:").concat(PE,")"),Ef="[\\s|\\(]+(".concat(Ra,")[,|\\s]+(").concat(Ra,")[,|\\s]+(").concat(Ra,")\\s*\\)?"),If="[\\s|\\(]+(".concat(Ra,")[,|\\s]+(").concat(Ra,")[,|\\s]+(").concat(Ra,")[,|\\s]+(").concat(Ra,")\\s*\\)?"),hr={CSS_UNIT:new RegExp(Ra),rgb:new RegExp("rgb"+Ef),rgba:new RegExp("rgba"+If),hsl:new RegExp("hsl"+Ef),hsla:new RegExp("hsla"+If),hsv:new RegExp("hsv"+Ef),hsva:new RegExp("hsva"+If),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/};function OE(t){if(t=t.trim().toLowerCase(),t.length===0)return!1;var e=!1;if(uh[t])t=uh[t],e=!0;else if(t==="transparent")return{r:0,g:0,b:0,a:0,format:"name"};var n=hr.rgb.exec(t);return n?{r:n[1],g:n[2],b:n[3]}:(n=hr.rgba.exec(t),n?{r:n[1],g:n[2],b:n[3],a:n[4]}:(n=hr.hsl.exec(t),n?{h:n[1],s:n[2],l:n[3]}:(n=hr.hsla.exec(t),n?{h:n[1],s:n[2],l:n[3],a:n[4]}:(n=hr.hsv.exec(t),n?{h:n[1],s:n[2],v:n[3]}:(n=hr.hsva.exec(t),n?{h:n[1],s:n[2],v:n[3],a:n[4]}:(n=hr.hex8.exec(t),n?{r:Wn(n[1]),g:Wn(n[2]),b:Wn(n[3]),a:Z1(n[4]),format:e?"name":"hex8"}:(n=hr.hex6.exec(t),n?{r:Wn(n[1]),g:Wn(n[2]),b:Wn(n[3]),format:e?"name":"hex"}:(n=hr.hex4.exec(t),n?{r:Wn(n[1]+n[1]),g:Wn(n[2]+n[2]),b:Wn(n[3]+n[3]),a:Z1(n[4]+n[4]),format:e?"name":"hex8"}:(n=hr.hex3.exec(t),n?{r:Wn(n[1]+n[1]),g:Wn(n[2]+n[2]),b:Wn(n[3]+n[3]),format:e?"name":"hex"}:!1)))))))))}function Qr(t){return!!hr.CSS_UNIT.exec(String(t))}var _f=function(){function t(e,n){e===void 0&&(e=""),n===void 0&&(n={});var r;if(e instanceof t)return e;typeof e=="number"&&(e=SE(e)),this.originalInput=e;var a=ei(e);this.originalInput=e,this.r=a.r,this.g=a.g,this.b=a.b,this.a=a.a,this.roundA=Math.round(100*this.a)/100,this.format=(r=n.format)!==null&&r!==void 0?r:a.format,this.gradientType=n.gradientType,this.r<1&&(this.r=Math.round(this.r)),this.g<1&&(this.g=Math.round(this.g)),this.b<1&&(this.b=Math.round(this.b)),this.isValid=a.ok}return t.prototype.isDark=function(){return this.getBrightness()<128},t.prototype.isLight=function(){return!this.isDark()},t.prototype.getBrightness=function(){var e=this.toRgb();return(e.r*299+e.g*587+e.b*114)/1e3},t.prototype.getLuminance=function(){var e=this.toRgb(),n,r,a,o=e.r/255,i=e.g/255,l=e.b/255;return o<=.03928?n=o/12.92:n=Math.pow((o+.055)/1.055,2.4),i<=.03928?r=i/12.92:r=Math.pow((i+.055)/1.055,2.4),l<=.03928?a=l/12.92:a=Math.pow((l+.055)/1.055,2.4),.2126*n+.7152*r+.0722*a},t.prototype.getAlpha=function(){return this.a},t.prototype.setAlpha=function(e){return this.a=X3(e),this.roundA=Math.round(100*this.a)/100,this},t.prototype.isMonochrome=function(){var e=this.toHsl().s;return e===0},t.prototype.toHsv=function(){var e=ih(this.r,this.g,this.b);return{h:e.h*360,s:e.s,v:e.v,a:this.a}},t.prototype.toHsvString=function(){var e=ih(this.r,this.g,this.b),n=Math.round(e.h*360),r=Math.round(e.s*100),a=Math.round(e.v*100);return this.a===1?"hsv(".concat(n,", ").concat(r,"%, ").concat(a,"%)"):"hsva(".concat(n,", ").concat(r,"%, ").concat(a,"%, ").concat(this.roundA,")")},t.prototype.toHsl=function(){var e=Q1(this.r,this.g,this.b);return{h:e.h*360,s:e.s,l:e.l,a:this.a}},t.prototype.toHslString=function(){var e=Q1(this.r,this.g,this.b),n=Math.round(e.h*360),r=Math.round(e.s*100),a=Math.round(e.l*100);return this.a===1?"hsl(".concat(n,", ").concat(r,"%, ").concat(a,"%)"):"hsla(".concat(n,", ").concat(r,"%, ").concat(a,"%, ").concat(this.roundA,")")},t.prototype.toHex=function(e){return e===void 0&&(e=!1),lh(this.r,this.g,this.b,e)},t.prototype.toHexString=function(e){return e===void 0&&(e=!1),"#"+this.toHex(e)},t.prototype.toHex8=function(e){return e===void 0&&(e=!1),xE(this.r,this.g,this.b,this.a,e)},t.prototype.toHex8String=function(e){return e===void 0&&(e=!1),"#"+this.toHex8(e)},t.prototype.toHexShortString=function(e){return e===void 0&&(e=!1),this.a===1?this.toHexString(e):this.toHex8String(e)},t.prototype.toRgb=function(){return{r:Math.round(this.r),g:Math.round(this.g),b:Math.round(this.b),a:this.a}},t.prototype.toRgbString=function(){var e=Math.round(this.r),n=Math.round(this.g),r=Math.round(this.b);return this.a===1?"rgb(".concat(e,", ").concat(n,", ").concat(r,")"):"rgba(".concat(e,", ").concat(n,", ").concat(r,", ").concat(this.roundA,")")},t.prototype.toPercentageRgb=function(){var e=function(n){return"".concat(Math.round(bn(n,255)*100),"%")};return{r:e(this.r),g:e(this.g),b:e(this.b),a:this.a}},t.prototype.toPercentageRgbString=function(){var e=function(n){return Math.round(bn(n,255)*100)};return this.a===1?"rgb(".concat(e(this.r),"%, ").concat(e(this.g),"%, ").concat(e(this.b),"%)"):"rgba(".concat(e(this.r),"%, ").concat(e(this.g),"%, ").concat(e(this.b),"%, ").concat(this.roundA,")")},t.prototype.toName=function(){if(this.a===0)return"transparent";if(this.a<1)return!1;for(var e="#"+lh(this.r,this.g,this.b,!1),n=0,r=Object.entries(uh);n=0,o=!n&&a&&(e.startsWith("hex")||e==="name");return o?e==="name"&&this.a===0?this.toName():this.toRgbString():(e==="rgb"&&(r=this.toRgbString()),e==="prgb"&&(r=this.toPercentageRgbString()),(e==="hex"||e==="hex6")&&(r=this.toHexString()),e==="hex3"&&(r=this.toHexString(!0)),e==="hex4"&&(r=this.toHex8String(!0)),e==="hex8"&&(r=this.toHex8String()),e==="name"&&(r=this.toName()),e==="hsl"&&(r=this.toHslString()),e==="hsv"&&(r=this.toHsvString()),r||this.toHexString())},t.prototype.toNumber=function(){return(Math.round(this.r)<<16)+(Math.round(this.g)<<8)+Math.round(this.b)},t.prototype.clone=function(){return new t(this.toString())},t.prototype.lighten=function(e){e===void 0&&(e=10);var n=this.toHsl();return n.l+=e/100,n.l=Uu(n.l),new t(n)},t.prototype.brighten=function(e){e===void 0&&(e=10);var n=this.toRgb();return n.r=Math.max(0,Math.min(255,n.r-Math.round(255*-(e/100)))),n.g=Math.max(0,Math.min(255,n.g-Math.round(255*-(e/100)))),n.b=Math.max(0,Math.min(255,n.b-Math.round(255*-(e/100)))),new t(n)},t.prototype.darken=function(e){e===void 0&&(e=10);var n=this.toHsl();return n.l-=e/100,n.l=Uu(n.l),new t(n)},t.prototype.tint=function(e){return e===void 0&&(e=10),this.mix("white",e)},t.prototype.shade=function(e){return e===void 0&&(e=10),this.mix("black",e)},t.prototype.desaturate=function(e){e===void 0&&(e=10);var n=this.toHsl();return n.s-=e/100,n.s=Uu(n.s),new t(n)},t.prototype.saturate=function(e){e===void 0&&(e=10);var n=this.toHsl();return n.s+=e/100,n.s=Uu(n.s),new t(n)},t.prototype.greyscale=function(){return this.desaturate(100)},t.prototype.spin=function(e){var n=this.toHsl(),r=(n.h+e)%360;return n.h=r<0?360+r:r,new t(n)},t.prototype.mix=function(e,n){n===void 0&&(n=50);var r=this.toRgb(),a=new t(e).toRgb(),o=n/100,i={r:(a.r-r.r)*o+r.r,g:(a.g-r.g)*o+r.g,b:(a.b-r.b)*o+r.b,a:(a.a-r.a)*o+r.a};return new t(i)},t.prototype.analogous=function(e,n){e===void 0&&(e=6),n===void 0&&(n=30);var r=this.toHsl(),a=360/n,o=[this];for(r.h=(r.h-(a*e>>1)+720)%360;--e;)r.h=(r.h+a)%360,o.push(new t(r));return o},t.prototype.complement=function(){var e=this.toHsl();return e.h=(e.h+180)%360,new t(e)},t.prototype.monochromatic=function(e){e===void 0&&(e=6);for(var n=this.toHsv(),r=n.h,a=n.s,o=n.v,i=[],l=1/e;e--;)i.push(new t({h:r,s:a,v:o})),o=(o+l)%1;return i},t.prototype.splitcomplement=function(){var e=this.toHsl(),n=e.h;return[this,new t({h:(n+72)%360,s:e.s,l:e.l}),new t({h:(n+216)%360,s:e.s,l:e.l})]},t.prototype.onBackground=function(e){var n=this.toRgb(),r=new t(e).toRgb(),a=n.a+r.a*(1-n.a);return new t({r:(n.r*n.a+r.r*r.a*(1-n.a))/a,g:(n.g*n.a+r.g*r.a*(1-n.a))/a,b:(n.b*n.a+r.b*r.a*(1-n.a))/a,a})},t.prototype.triad=function(){return this.polyad(3)},t.prototype.tetrad=function(){return this.polyad(4)},t.prototype.polyad=function(e){for(var n=this.toHsl(),r=n.h,a=[this],o=360/e,i=1;i=60&&Math.round(t.h)<=240?r=n?Math.round(t.h)-Gu*e:Math.round(t.h)+Gu*e:r=n?Math.round(t.h)+Gu*e:Math.round(t.h)-Gu*e,r<0?r+=360:r>=360&&(r-=360),r}function nb(t,e,n){if(t.h===0&&t.s===0)return t.s;var r;return n?r=t.s-J1*e:e===Z3?r=t.s+J1:r=t.s+TE*e,r>1&&(r=1),n&&e===Q3&&r>.1&&(r=.1),r<.06&&(r=.06),Number(r.toFixed(2))}function rb(t,e,n){var r;return n?r=t.v+ME*e:r=t.v-EE*e,r>1&&(r=1),Number(r.toFixed(2))}function nu(t){for(var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=[],r=ei(t),a=Q3;a>0;a-=1){var o=eb(r),i=qu(ei({h:tb(o,a,!0),s:nb(o,a,!0),v:rb(o,a,!0)}));n.push(i)}n.push(qu(r));for(var l=1;l<=Z3;l+=1){var u=eb(r),s=qu(ei({h:tb(u,l),s:nb(u,l),v:rb(u,l)}));n.push(s)}return e.theme==="dark"?IE.map(function(d){var c=d.index,f=d.opacity,h=qu(_E(ei(e.backgroundColor||"#141414"),ei(n[c]),f*100));return h}):n}var vi={red:"#F5222D",volcano:"#FA541C",orange:"#FA8C16",gold:"#FAAD14",yellow:"#FADB14",lime:"#A0D911",green:"#52C41A",cyan:"#13C2C2",blue:"#1890FF",geekblue:"#2F54EB",purple:"#722ED1",magenta:"#EB2F96",grey:"#666666"},Nf={},Af={};Object.keys(vi).forEach(function(t){Nf[t]=nu(vi[t]),Nf[t].primary=Nf[t][5],Af[t]=nu(vi[t],{theme:"dark",backgroundColor:"#141414"}),Af[t].primary=Af[t][5]});var ab=[],il=[],NE="insert-css: You need to provide a CSS string. Usage: insertCss(cssString[, options]).";function AE(){var t=document.createElement("style");return t.setAttribute("type","text/css"),t}function $E(t,e){if(e=e||{},t===void 0)throw new Error(NE);var n=e.prepend===!0?"prepend":"append",r=e.container!==void 0?e.container:document.querySelector("head"),a=ab.indexOf(r);a===-1&&(a=ab.push(r)-1,il[a]={});var o;return il[a]!==void 0&&il[a][n]!==void 0?o=il[a][n]:(o=il[a][n]=AE(),n==="prepend"?r.insertBefore(o,r.childNodes[0]):r.appendChild(o)),t.charCodeAt(0)===65279&&(t=t.substr(1,t.length)),o.styleSheet?o.styleSheet.cssText+=t:o.textContent+=t,o}function ob(t){for(var e=1;e * { + line-height: 1; +} + +.anticon svg { + display: inline-block; +} + +.anticon::before { + display: none; +} + +.anticon .anticon-icon { + display: block; +} + +.anticon[tabindex] { + cursor: pointer; +} + +.anticon-spin::before, +.anticon-spin { + display: inline-block; + -webkit-animation: loadingCircle 1s infinite linear; + animation: loadingCircle 1s infinite linear; +} + +@-webkit-keyframes loadingCircle { + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} + +@keyframes loadingCircle { + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} +`,lb=!1,FE=function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:DE;nt(function(){lb||(typeof window<"u"&&window.document&&window.document.documentElement&&$E(e,{prepend:!0}),lb=!0)})},LE=["icon","primaryColor","secondaryColor"];function BE(t,e){if(t==null)return{};var n=jE(t,e),r,a;if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);for(a=0;a=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(n[r]=t[r])}return n}function jE(t,e){if(t==null)return{};var n={},r=Object.keys(t),a,o;for(o=0;o=0)&&(n[a]=t[a]);return n}function Ts(t){for(var e=1;et.length)&&(e=t.length);for(var n=0,r=new Array(e);nt.length)&&(e=t.length);for(var n=0,r=new Array(e);n=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(n[r]=t[r])}return n}function rI(t,e){if(t==null)return{};var n={},r=Object.keys(t),a,o;for(o=0;o=0)&&(n[a]=t[a]);return n}t4("#1890ff");var zi=function(e,n){var r,a=cb({},e,n.attrs),o=a.class,i=a.icon,l=a.spin,u=a.rotate,s=a.tabindex,d=a.twoToneColor,c=a.onClick,f=nI(a,XE),h=(r={anticon:!0},ch(r,"anticon-".concat(i.name),!!i.name),ch(r,o,o),r),p=l===""||l||i.name==="loading"?"anticon-spin":"",g=s;g===void 0&&c&&(g=-1,f.tabindex=g);var y=u?{msTransform:"rotate(".concat(u,"deg)"),transform:"rotate(".concat(u,"deg)")}:void 0,b=e4(d),C=QE(b,2),x=C[0],w=C[1];return v("span",cb({role:"img","aria-label":i.name},f,{onClick:c,class:h}),[v(Sg,{class:p,icon:i,primaryColor:x,secondaryColor:w,style:y},null)])};zi.props={spin:Boolean,rotate:Number,icon:Object,twoToneColor:String};zi.displayName="AntdIcon";zi.inheritAttrs=!1;zi.getTwoToneColor=qE;zi.setTwoToneColor=t4;const st=zi;function db(t){for(var e=1;e=0;--Y){var H=this.tryEntries[Y],V=H.completion;if(H.tryLoc==="root")return W("end");if(H.tryLoc<=this.prev){var U=i.call(H,"catchLoc"),G=i.call(H,"finallyLoc");if(U&&G){if(this.prev=0;--W){var Y=this.tryEntries[W];if(Y.tryLoc<=this.prev&&i.call(Y,"finallyLoc")&&this.prev=0;--B){var W=this.tryEntries[B];if(W.finallyLoc===K)return this.complete(W.completion,W.afterLoc),L(W),x}},catch:function(K){for(var B=this.tryEntries.length-1;B>=0;--B){var W=this.tryEntries[B];if(W.tryLoc===K){var Y=W.completion;if(Y.type==="throw"){var H=Y.arg;L(W)}return H}}throw new Error("illegal catch attempt")},delegateYield:function(K,B,W){return this.delegate={iterator:$(K),resultName:B,nextLoc:W},this.method==="next"&&(this.arg=r),x}},a}t.exports=n,t.exports.__esModule=!0,t.exports.default=t.exports})(kI);var Ms=dh(),Bn=Ms;try{regeneratorRuntime=Ms}catch{typeof globalThis=="object"?globalThis.regeneratorRuntime=Ms:Function("r","regeneratorRuntime = r")(Ms)}var TI={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M699 353h-46.9c-10.2 0-19.9 4.9-25.9 13.3L469 584.3l-71.2-98.8c-6-8.3-15.6-13.3-25.9-13.3H325c-6.5 0-10.3 7.4-6.5 12.7l124.6 172.8a31.8 31.8 0 0051.7 0l210.6-292c3.9-5.3.1-12.7-6.4-12.7z"}},{tag:"path",attrs:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"}}]},name:"check-circle",theme:"outlined"};const MI=TI;function mb(t){for(var e=1;e1&&arguments[1]!==void 0?arguments[1]:f4,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:v4,r;switch(t){case"topLeft":r={left:"0px",top:e,bottom:"auto"};break;case"topRight":r={right:"0px",top:e,bottom:"auto"};break;case"bottomLeft":r={left:"0px",top:"auto",bottom:n};break;default:r={right:"0px",top:"auto",bottom:n};break}return r}function zI(t,e){var n=t.prefixCls,r=t.placement,a=r===void 0?h4:r,o=t.getContainer,i=o===void 0?p4:o,l=t.top,u=t.bottom,s=t.closeIcon,d=s===void 0?g4:s,c=t.appContext,f=a_(),h=f.getPrefixCls,p=h("notification",n||vh),g="".concat(p,"-").concat(a,"-").concat(hh),y=po[g];if(y){Promise.resolve(y).then(function(C){e(C)});return}var b=ce("".concat(p,"-").concat(a),N({},"".concat(p,"-rtl"),hh===!0));q3.newInstance({name:"notification",prefixCls:n||vh,class:b,style:HI(a,l,u),appContext:c,getContainer:i,closeIcon:function(x){var w=x.prefixCls,P=v("span",{class:"".concat(w,"-close-x")},[gl(d,{},v(Wr,{class:"".concat(w,"-close-icon")},null))]);return P},maxCount:m4,hasTransitionName:!0},function(C){po[g]=C,e(C)})}var WI={success:_g,info:Ag,error:Rg,warning:vd};function UI(t){var e=t.icon,n=t.type,r=t.description,a=t.message,o=t.btn,i=t.duration===void 0?d4:t.duration;zI(t,function(l){l.notice({content:function(s){var d=s.prefixCls,c="".concat(d,"-notice"),f=null;if(e)f=function(){return v("span",{class:"".concat(c,"-icon")},[gl(e)])};else if(n){var h=WI[n];f=function(){return v(h,{class:"".concat(c,"-icon ").concat(c,"-icon-").concat(n)},null)}}return v("div",{class:f?"".concat(c,"-with-icon"):""},[f&&f(),v("div",{class:"".concat(c,"-message")},[!r&&f?v("span",{class:"".concat(c,"-message-single-line-auto-margin")},null):null,gl(a)]),v("div",{class:"".concat(c,"-description")},[gl(r)]),o?v("span",{class:"".concat(c,"-btn")},[gl(o)]):null])},duration:i,closable:!0,onClose:t.onClose,onClick:t.onClick,key:t.key,style:t.style||{},class:t.class})})}var ru={open:UI,close:function(e){Object.keys(po).forEach(function(n){return Promise.resolve(po[n]).then(function(r){r.removeNotice(e)})})},config:KI,destroy:function(){Object.keys(po).forEach(function(e){Promise.resolve(po[e]).then(function(n){n.destroy()}),delete po[e]})}},YI=["success","info","warning","error"];YI.forEach(function(t){ru[t]=function(e){return ru.open(m(m({},e),{},{type:t}))}});ru.warn=ru.warning;const Lg=ru;function Lo(){return!!(typeof window<"u"&&window.document&&window.document.createElement)}var GI="vc-util-key";function y4(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},e=t.mark;return e?e.startsWith("data-")?e:"data-".concat(e):GI}function Bg(t){if(t.attachTo)return t.attachTo;var e=document.querySelector("head");return e||document.body}function wb(t){var e,n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(!Lo())return null;var r=document.createElement("style");if((e=n.csp)!==null&&e!==void 0&&e.nonce){var a;r.nonce=(a=n.csp)===null||a===void 0?void 0:a.nonce}r.innerHTML=t;var o=Bg(n),i=o.firstChild;return n.prepend&&o.prepend?o.prepend(r):n.prepend&&i?o.insertBefore(r,i):o.appendChild(r),r}var ph=new Map;function qI(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=Bg(e);return Array.from(ph.get(n).children).find(function(r){return r.tagName==="STYLE"&&r.getAttribute(y4(e))===t})}function XI(t,e){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},r=Bg(n);if(!ph.has(r)){var a=wb("",n),o=a.parentNode;ph.set(r,o),o.removeChild(a)}var i=qI(e,n);if(i){var l,u;if((l=n.csp)!==null&&l!==void 0&&l.nonce&&i.nonce!==((u=n.csp)===null||u===void 0?void 0:u.nonce)){var s;i.nonce=(s=n.csp)===null||s===void 0?void 0:s.nonce}return i.innerHTML!==t&&(i.innerHTML=t),i}var d=wb(t,n);return d.setAttribute(y4(n),e),d}const Pt=function(t,e,n){Y3(t,"[ant-design-vue: ".concat(e,"] ").concat(n))};var QI="-ant-".concat(Date.now(),"-").concat(Math.random());function ZI(t,e){var n={},r=function(d,c){var f=d.clone();return f=(c==null?void 0:c(f))||f,f.toRgbString()},a=function(d,c){var f=new _f(d),h=nu(f.toRgbString());n["".concat(c,"-color")]=r(f),n["".concat(c,"-color-disabled")]=h[1],n["".concat(c,"-color-hover")]=h[4],n["".concat(c,"-color-active")]=h[6],n["".concat(c,"-color-outline")]=f.clone().setAlpha(.2).toRgbString(),n["".concat(c,"-color-deprecated-bg")]=h[1],n["".concat(c,"-color-deprecated-border")]=h[3]};if(e.primaryColor){a(e.primaryColor,"primary");var o=new _f(e.primaryColor),i=nu(o.toRgbString());i.forEach(function(s,d){n["primary-".concat(d+1)]=s}),n["primary-color-deprecated-l-35"]=r(o,function(s){return s.lighten(35)}),n["primary-color-deprecated-l-20"]=r(o,function(s){return s.lighten(20)}),n["primary-color-deprecated-t-20"]=r(o,function(s){return s.tint(20)}),n["primary-color-deprecated-t-50"]=r(o,function(s){return s.tint(50)}),n["primary-color-deprecated-f-12"]=r(o,function(s){return s.setAlpha(s.getAlpha()*.12)});var l=new _f(i[0]);n["primary-color-active-deprecated-f-30"]=r(l,function(s){return s.setAlpha(s.getAlpha()*.3)}),n["primary-color-active-deprecated-d-02"]=r(l,function(s){return s.darken(2)})}e.successColor&&a(e.successColor,"success"),e.warningColor&&a(e.warningColor,"warning"),e.errorColor&&a(e.errorColor,"error"),e.infoColor&&a(e.infoColor,"info");var u=Object.keys(n).map(function(s){return"--".concat(t,"-").concat(s,": ").concat(n[s],";")});Lo()?XI(` + :root { + `.concat(u.join(` +`),` + } + `),"".concat(QI,"-dynamic-theme")):Pt(!1,"ConfigProvider","SSR do not support dynamic theme with css variables.")}var b4=Symbol("GlobalFormContextKey"),JI=function(e){at(b4,e)},e_=function(){return Ze(b4,{validateMessages:F(function(){})})},t_=function(){return{getTargetContainer:{type:Function},getPopupContainer:{type:Function},prefixCls:String,getPrefixCls:{type:Function},renderEmpty:{type:Function},transformCellText:{type:Function},csp:{type:Object,default:void 0},input:{type:Object},autoInsertSpaceInButton:{type:Boolean,default:void 0},locale:{type:Object,default:void 0},pageHeader:{type:Object},componentSize:{type:String},direction:{type:String},space:{type:Object},virtual:{type:Boolean,default:void 0},dropdownMatchSelectWidth:{type:[Number,Boolean],default:!0},form:{type:Object,default:void 0},notUpdateGlobalConfig:Boolean}},n_="ant";function hi(){return Dn.prefixCls||n_}var gh=xt({}),C4=xt({}),Dn=xt({});Je(function(){pt(Dn,gh,C4),Dn.prefixCls=hi(),Dn.getPrefixCls=function(t,e){return e||(t?"".concat(Dn.prefixCls,"-").concat(t):Dn.prefixCls)},Dn.getRootPrefixCls=function(t,e){return t||(Dn.prefixCls?Dn.prefixCls:e&&e.includes("-")?e.replace(/^(.*)-[^-]*$/,"$1"):hi())}});var $f,r_=function(e){$f&&$f(),$f=Je(function(){pt(C4,xt(e)),pt(Dn,xt(e))}),e.theme&&ZI(hi(),e.theme)},a_=function(){return{getPrefixCls:function(n,r){return r||(n?"".concat(hi(),"-").concat(n):hi())},getRootPrefixCls:function(n,r){return n||(Dn.prefixCls?Dn.prefixCls:r&&r.includes("-")?r.replace(/^(.*)-[^-]*$/,"$1"):hi())}}},Il=le({compatConfig:{MODE:3},name:"AConfigProvider",inheritAttrs:!1,props:t_(),setup:function(e,n){var r=n.slots,a=function(c,f){var h=e.prefixCls,p=h===void 0?"ant":h;return f||(c?"".concat(p,"-").concat(c):p)},o=function(c){var f=e.renderEmpty||r.renderEmpty||W3;return f(c)},i=function(c,f){var h=e.prefixCls;if(f)return f;var p=h||a("");return c?"".concat(p,"-").concat(c):p},l=xt(m(m({},e),{},{getPrefixCls:i,renderEmpty:o}));Object.keys(e).forEach(function(d){Se(function(){return e[d]},function(){l[d]=e[d]})}),e.notUpdateGlobalConfig||(pt(gh,l),Se(l,function(){pt(gh,l)}));var u=F(function(){var d={};if(e.locale){var c,f;d=((c=e.locale.Form)===null||c===void 0?void 0:c.defaultValidateMessages)||((f=wr.Form)===null||f===void 0?void 0:f.defaultValidateMessages)||{}}return e.form&&e.form.validateMessages&&(d=m(m({},d),e.form.validateMessages)),d});JI({validateMessages:u}),at("configProvider",l);var s=function(c){var f;return v(G3,{locale:e.locale||c,ANT_MARK__:ah},{default:function(){return[(f=r.default)===null||f===void 0?void 0:f.call(r)]}})};return Je(function(){e.direction&&(Eg.config({rtl:e.direction==="rtl"}),Lg.config({rtl:e.direction==="rtl"}))}),function(){return v(Vi,{children:function(c,f,h){return s(h)}},null)}}}),jg=xt({getPrefixCls:function(e,n){return n||(e?"ant-".concat(e):"ant")},renderEmpty:W3,direction:"ltr"});Il.config=r_;Il.install=function(t){t.component(Il.name,Il)};const Vg=Il,Re=function(t,e){var n=Ze("configProvider",jg),r=F(function(){return n.getPrefixCls(t,e.prefixCls)}),a=F(function(){var C;return(C=e.direction)!==null&&C!==void 0?C:n.direction}),o=F(function(){return n.getPrefixCls()}),i=F(function(){return n.autoInsertSpaceInButton}),l=F(function(){return n.renderEmpty}),u=F(function(){return n.space}),s=F(function(){return n.pageHeader}),d=F(function(){return n.form}),c=F(function(){return e.getTargetContainer||n.getTargetContainer}),f=F(function(){return e.getPopupContainer||n.getPopupContainer}),h=F(function(){var C;return(C=e.dropdownMatchSelectWidth)!==null&&C!==void 0?C:n.dropdownMatchSelectWidth}),p=F(function(){return(e.virtual===void 0?n.virtual!==!1:e.virtual!==!1)&&h.value!==!1}),g=F(function(){return e.size||n.componentSize}),y=F(function(){var C;return e.autocomplete||((C=n.input)===null||C===void 0?void 0:C.autocomplete)}),b=F(function(){return n.csp});return{configProvider:n,prefixCls:r,direction:a,size:g,getTargetContainer:c,getPopupContainer:f,space:u,pageHeader:s,form:d,autoInsertSpaceInButton:i,renderEmpty:l,virtual:p,dropdownMatchSelectWidth:h,rootPrefixCls:o,getPrefixCls:n.getPrefixCls,autocomplete:y,csp:b}};function it(t,e){for(var n=pt({},t),r=0;r"u")return 0;var n=e?"scrollTop":"scrollLeft",r=0;if(mh(t)?r=t[e?"pageYOffset":"pageXOffset"]:t instanceof Document?r=t.documentElement[n]:t&&(r=t[n]),t&&!mh(t)&&typeof r!="number"){var a;r=(a=(t.ownerDocument||t).documentElement)===null||a===void 0?void 0:a[n]}return r}function u_(t,e,n,r){var a=n-e;return t/=r/2,t<1?a/2*t*t*t+e:a/2*((t-=2)*t*t+2)+e}function Hg(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=e.getContainer,r=n===void 0?function(){return window}:n,a=e.callback,o=e.duration,i=o===void 0?450:o,l=r(),u=Kg(l,!0),s=Date.now(),d=function c(){var f=Date.now(),h=f-s,p=u_(h>i?i:h,u,t,i);mh(l)?l.scrollTo(window.pageXOffset,p):l instanceof HTMLDocument||l.constructor.name==="HTMLDocument"?l.documentElement.scrollTop=p:l.scrollTop=p,h0&&arguments[0]!==void 0?arguments[0]:0,k=arguments.length>1&&arguments[1]!==void 0?arguments[1]:5,T=[],O=g.value();if(h.links.forEach(function(R){var I=Pb.exec(R.toString());if(I){var M=document.getElementById(I[1]);if(M){var D=Sb(M,O);DR.top?I:R});return _.link}return""},b=function(S){var k=e.getCurrentAnchor;p.value!==S&&(p.value=typeof k=="function"?k():S,r("change",S))},C=function(S){var k=e.offsetTop,T=e.targetOffset;b(S);var O=g.value(),_=Kg(O,!0),R=Pb.exec(S);if(R){var I=document.getElementById(R[1]);if(I){var M=Sb(I,O),D=_+M;D-=T!==void 0?T:k||0,h.animating=!0,Hg(D,{callback:function(){h.animating=!1},getContainer:g.value})}}};i({scrollTo:C});var x=function(){if(!h.animating){var S=e.offsetTop,k=e.bounds,T=e.targetOffset,O=y(T!==void 0?T:S||0,k);b(O)}},w=function(){var S=f.value.getElementsByClassName("".concat(u.value,"-link-title-active"))[0];S&&(c.value.style.top="".concat(S.offsetTop+S.clientHeight/2-4.5,"px"))};return d_({registerLink:function(S){h.links.includes(S)||h.links.push(S)},unregisterLink:function(S){var k=h.links.indexOf(S);k!==-1&&h.links.splice(k,1)},activeLink:p,scrollTo:C,handleClick:function(S,k){r("click",S,k)}}),Ge(function(){nt(function(){var P=g.value();h.scrollContainer=P,h.scrollEvent=Dt(h.scrollContainer,"scroll",x),x()})}),ut(function(){h.scrollEvent&&h.scrollEvent.remove()}),wn(function(){if(h.scrollEvent){var P=g.value();h.scrollContainer!==P&&(h.scrollContainer=P,h.scrollEvent.remove(),h.scrollEvent=Dt(h.scrollContainer,"scroll",x),x())}w()}),function(){var P,S=e.offsetTop,k=e.affix,T=e.showInkInFixed,O=u.value,_=ce("".concat(O,"-ink-ball"),{visible:p.value}),R=ce(e.wrapperClass,"".concat(O,"-wrapper"),N({},"".concat(O,"-rtl"),d.value==="rtl")),I=ce(O,N({},"".concat(O,"-fixed"),!k&&!T)),M=m({maxHeight:S?"calc(100vh - ".concat(S,"px)"):"100vh"},e.wrapperStyle),D=v("div",{class:R,style:M,ref:f},[v("div",{class:I},[v("div",{class:"".concat(O,"-ink")},[v("span",{class:_,ref:c},null)]),(P=o.default)===null||P===void 0?void 0:P.call(o)])]);return k?v(x4,m(m({},a),{},{offsetTop:S,target:g.value}),{default:function(){return[D]}}):D}}});var h_=function(){return{prefixCls:String,href:String,title:X.any,target:String}};const S4=le({compatConfig:{MODE:3},name:"AAnchorLink",props:ct(h_(),{href:"#"}),slots:["title"],setup:function(e,n){var r=n.slots,a=null,o=c_(),i=o.handleClick,l=o.scrollTo,u=o.unregisterLink,s=o.registerLink,d=o.activeLink,c=Re("anchor",e),f=c.prefixCls,h=function(g){var y=e.href;i(g,{title:a,href:y}),l(y)};return Se(function(){return e.href},function(p,g){nt(function(){u(g),s(p)})}),Ge(function(){s(e.href)}),ut(function(){u(e.href)}),function(){var p,g=e.href,y=e.target,b=f.value,C=At(r,e,"title");a=C;var x=d.value===g,w=ce("".concat(b,"-link"),N({},"".concat(b,"-link-active"),x)),P=ce("".concat(b,"-link-title"),N({},"".concat(b,"-link-title-active"),x));return v("div",{class:w},[v("a",{class:P,href:g,title:typeof C=="string"?C:"",target:y,onClick:h},[C]),(p=r.default)===null||p===void 0?void 0:p.call(r)])}}});go.Link=S4;go.install=function(t){return t.component(go.name,go),t.component(go.Link.name,go.Link),t};function zg(t){return p3(t)||m3(t)||dd(t)||g3()}function kb(t,e){var n=t.key,r;return"value"in t&&(r=t.value),n??(r!==void 0?r:"rc-index-key-".concat(e))}function P4(t,e){var n=t||{},r=n.label,a=n.value,o=n.options;return{label:r||(e?"children":"label"),value:a||"value",options:o||"options"}}function p_(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=e.fieldNames,r=e.childrenAsData,a=[],o=P4(n,!1),i=o.label,l=o.value,u=o.options;function s(d,c){d.forEach(function(f){var h=f[i];if(c||!(u in f)){var p=f[l];a.push({key:kb(f,a.length),groupOption:c,data:f,label:h,value:p})}else{var g=h;g===void 0&&r&&(g=f.label),a.push({key:kb(f,a.length),group:!0,data:f,label:g}),s(f[u],!0)}})}return s(t,!1),a}function yh(t){var e=m({},t);return"props"in e||Object.defineProperty(e,"props",{get:function(){return e}}),e}function g_(t,e){if(!e||!e.length)return null;var n=!1;function r(o,i){var l=zg(i),u=l[0],s=l.slice(1);if(!u)return[o];var d=o.split(u);return n=n||d.length>1,d.reduce(function(c,f){return[].concat(_e(c),_e(r(f,s)))},[]).filter(function(c){return c})}var a=r(t,e);return n?a:null}function mo(t,e){return t?t.contains(e):!1}var k4=["moz","ms","webkit"];function m_(){var t=0;return function(e){var n=new Date().getTime(),r=Math.max(0,16-(n-t)),a=window.setTimeout(function(){e(n+r)},r);return t=n+r,a}}function y_(){if(typeof window>"u")return function(){};if(window.requestAnimationFrame)return window.requestAnimationFrame.bind(window);var t=k4.filter(function(e){return"".concat(e,"RequestAnimationFrame")in window})[0];return t?window["".concat(t,"RequestAnimationFrame")]:m_()}function b_(t){if(typeof window>"u")return null;if(window.cancelAnimationFrame)return window.cancelAnimationFrame(t);var e=k4.filter(function(n){return"".concat(n,"CancelAnimationFrame")in window||"".concat(n,"CancelRequestAnimationFrame")in window})[0];return e?(window["".concat(e,"CancelAnimationFrame")]||window["".concat(e,"CancelRequestAnimationFrame")]).call(this,t):clearTimeout(t)}var Ob=y_(),C_=function(e){return b_(e.id)},x_=function(e){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,r=Date.now();function a(){Date.now()-r>=n?e.call():o.id=Ob(a)}var o={id:Ob(a)};return o},Wg={visible:Boolean,prefixCls:String,zIndex:Number,destroyPopupOnHide:Boolean,forceRender:Boolean,animation:[String,Object],transitionName:String,stretch:{type:String},align:{type:Object},point:{type:Object},getRootDomNode:{type:Function},getClassNameFromAlign:{type:Function},onMouseenter:{type:Function},onMouseleave:{type:Function},onMousedown:{type:Function},onTouchstart:{type:Function}},w_=m(m({},Wg),{},{mobile:{type:Object}}),S_=m(m({},Wg),{},{mask:Boolean,mobile:{type:Object},maskAnimation:String,maskTransitionName:String});function O4(t){var e=t.prefixCls,n=t.animation,r=t.transitionName;return n?{name:"".concat(e,"-").concat(n)}:r?{name:r}:{}}function T4(t){var e=t.prefixCls,n=t.visible,r=t.zIndex,a=t.mask,o=t.maskAnimation,i=t.maskTransitionName;if(!a)return null;var l={};return(i||o)&&(l=O4({prefixCls:e,transitionName:i,animation:o})),v(Nn,m({appear:!0},l),{default:function(){return[gn(v("div",{style:{zIndex:r},class:"".concat(e,"-mask")},null),[[p5("if"),n]])]}})}T4.displayName="Mask";const P_=le({compatConfig:{MODE:3},name:"MobilePopupInner",inheritAttrs:!1,props:w_,emits:["mouseenter","mouseleave","mousedown","touchstart","align"],setup:function(e,n){var r=n.expose,a=n.slots,o=Q();return r({forceAlign:function(){},getElement:function(){return o.value}}),function(){var i,l=e.zIndex,u=e.visible,s=e.prefixCls,d=e.mobile,c=d===void 0?{}:d,f=c.popupClassName,h=c.popupStyle,p=c.popupMotion,g=p===void 0?{}:p,y=c.popupRender,b=m({zIndex:l},h),C=Mt((i=a.default)===null||i===void 0?void 0:i.call(a));C.length>1&&(C=v("div",{class:"".concat(s,"-content")},[C])),y&&(C=y(C));var x=ce(s,f);return v(Nn,m({ref:o},g),{default:function(){return[u?v("div",{class:x,style:b},[C]):null]}})}}});var Tb=["measure","align",null,"motion"];const k_=function(t,e){var n=Q(null),r=Q(),a=Q(!1);function o(u){a.value||(n.value=u)}function i(){Qe.cancel(r.value)}function l(u){i(),r.value=Qe(function(){var s=n.value;switch(n.value){case"align":s="motion";break;case"motion":s="stable";break}o(s),u==null||u()})}return Se(t,function(){o("measure")},{immediate:!0,flush:"post"}),Ge(function(){Se(n,function(){switch(n.value){case"measure":e();break}n.value&&(r.value=Qe(Do(Bn.mark(function u(){var s,d;return Bn.wrap(function(f){for(;;)switch(f.prev=f.next){case 0:s=Tb.indexOf(n.value),d=Tb[s+1],d&&s!==-1&&o(d);case 3:case"end":return f.stop()}},u)}))))},{immediate:!0,flush:"post"})}),ut(function(){a.value=!0,i()}),[n,l]},O_=function(t){var e=Q({width:0,height:0});function n(a){e.value={width:a.offsetWidth,height:a.offsetHeight}}var r=F(function(){var a={};if(t.value){var o=e.value,i=o.width,l=o.height;t.value.indexOf("height")!==-1&&l?a.height="".concat(l,"px"):t.value.indexOf("minHeight")!==-1&&l&&(a.minHeight="".concat(l,"px")),t.value.indexOf("width")!==-1&&i?a.width="".concat(i,"px"):t.value.indexOf("minWidth")!==-1&&i&&(a.minWidth="".concat(i,"px"))}return a});return[r,n]};function Mb(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(a){return Object.getOwnPropertyDescriptor(t,a).enumerable})),n.push.apply(n,r)}return n}function Eb(t){for(var e=1;e=0&&n.left>=0&&n.bottom>n.top&&n.right>n.left?n:null}function q_(t,e,n,r){var a=yt.clone(t),o={width:e.width,height:e.height};return r.adjustX&&a.left=n.left&&a.left+o.width>n.right&&(o.width-=a.left+o.width-n.right),r.adjustX&&a.left+o.width>n.right&&(a.left=Math.max(n.right-o.width,n.left)),r.adjustY&&a.top=n.top&&a.top+o.height>n.bottom&&(o.height-=a.top+o.height-n.bottom),r.adjustY&&a.top+o.height>n.bottom&&(a.top=Math.max(n.bottom-o.height,n.top)),yt.mix(a,o)}function qg(t){var e,n,r;if(!yt.isWindow(t)&&t.nodeType!==9)e=yt.offset(t),n=yt.outerWidth(t),r=yt.outerHeight(t);else{var a=yt.getWindow(t);e={left:yt.getWindowScrollLeft(a),top:yt.getWindowScrollTop(a)},n=yt.viewportWidth(a),r=yt.viewportHeight(a)}return e.width=n,e.height=r,e}function Fb(t,e){var n=e.charAt(0),r=e.charAt(1),a=t.width,o=t.height,i=t.left,l=t.top;return n==="c"?l+=o/2:n==="b"&&(l+=o),r==="c"?i+=a/2:r==="r"&&(i+=a),{left:i,top:l}}function Zu(t,e,n,r,a){var o=Fb(e,n[1]),i=Fb(t,n[0]),l=[i.left-o.left,i.top-o.top];return{left:Math.round(t.left-l[0]+r[0]-a[0]),top:Math.round(t.top-l[1]+r[1]-a[1])}}function Lb(t,e,n){return t.leftn.right}function Bb(t,e,n){return t.topn.bottom}function X_(t,e,n){return t.left>n.right||t.left+e.widthn.bottom||t.top+e.height=n.right||r.top>=n.bottom}function Xg(t,e,n){var r=n.target||e,a=qg(r),o=!Z_(r,n.overflow&&n.overflow.alwaysByViewport);return R4(t,a,n,o)}Xg.__getOffsetParent=wh;Xg.__getVisibleRectForElement=Gg;function J_(t,e,n){var r,a,o=yt.getDocument(t),i=o.defaultView||o.parentWindow,l=yt.getWindowScrollLeft(i),u=yt.getWindowScrollTop(i),s=yt.viewportWidth(i),d=yt.viewportHeight(i);"pageX"in e?r=e.pageX:r=l+e.clientX,"pageY"in e?a=e.pageY:a=u+e.clientY;var c={left:r,top:a,width:0,height:0},f=r>=0&&r<=l+s&&a>=0&&a<=u+d,h=[n.points[0],"cc"];return R4(t,c,Eb(Eb({},n),{},{points:h}),f)}function Ct(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1,a=t;if(Array.isArray(t)&&(a=qt(t)[0]),!a)return null;var o=Cn(a,e,r);return o.props=n?m(m({},o.props),e):o.props,Zt(Fe(o.props.class)!=="object","class must be string"),o}function eN(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;return t.map(function(r){return Ct(r,e,n)})}function _l(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;if(Array.isArray(t))return t.map(function(o){return _l(o,e,n,r)});var a=Ct(t,e,n,r);return Array.isArray(a.children)&&(a.children=_l(a.children)),a}const Qg=function(t){if(!t)return!1;if(t.offsetParent)return!0;if(t.getBBox){var e=t.getBBox();if(e.width||e.height)return!0}if(t.getBoundingClientRect){var n=t.getBoundingClientRect();if(n.width||n.height)return!0}return!1};function tN(t,e){return t===e?!0:!t||!e?!1:"pageX"in e&&"pageY"in e?t.pageX===e.pageX&&t.pageY===e.pageY:"clientX"in e&&"clientY"in e?t.clientX===e.clientX&&t.clientY===e.clientY:!1}function nN(t,e){t!==document.activeElement&&mo(e,t)&&typeof t.focus=="function"&&t.focus()}function Kb(t,e){var n=null,r=null;function a(i){var l=Te(i,1),u=l[0].target;if(document.documentElement.contains(u)){var s=u.getBoundingClientRect(),d=s.width,c=s.height,f=Math.floor(d),h=Math.floor(c);(n!==f||r!==h)&&Promise.resolve().then(function(){e({width:f,height:h})}),n=f,r=h}}var o=new hg(a);return t&&o.observe(t),function(){o.disconnect()}}const rN=function(t,e){var n=!1,r=null;function a(){clearTimeout(r)}function o(i){if(!n||i===!0){if(t()===!1)return;n=!0,a(),r=setTimeout(function(){n=!1},e.value)}else a(),r=setTimeout(function(){n=!1,o()},e.value)}return[o,function(){n=!1,a()}]};function aN(){this.__data__=[],this.size=0}function Zg(t,e){return t===e||t!==t&&e!==e}function pd(t,e){for(var n=t.length;n--;)if(Zg(t[n][0],e))return n;return-1}var oN=Array.prototype,iN=oN.splice;function lN(t){var e=this.__data__,n=pd(e,t);if(n<0)return!1;var r=e.length-1;return n==r?e.pop():iN.call(e,n,1),--this.size,!0}function uN(t){var e=this.__data__,n=pd(e,t);return n<0?void 0:e[n][1]}function sN(t){return pd(this.__data__,t)>-1}function cN(t,e){var n=this.__data__,r=pd(n,t);return r<0?(++this.size,n.push([t,e])):n[r][1]=e,this}function ma(t){var e=-1,n=t==null?0:t.length;for(this.clear();++el))return!1;var s=o.get(t),d=o.get(e);if(s&&d)return s==e&&d==t;var c=-1,f=!0,h=n&aA?new Mi:void 0;for(o.set(t,e),o.set(e,t);++c-1&&t%1==0&&t-1&&t%1==0&&t<=FA}var LA="[object Arguments]",BA="[object Array]",jA="[object Boolean]",VA="[object Date]",KA="[object Error]",HA="[object Function]",zA="[object Map]",WA="[object Number]",UA="[object Object]",YA="[object RegExp]",GA="[object Set]",qA="[object String]",XA="[object WeakMap]",QA="[object ArrayBuffer]",ZA="[object DataView]",JA="[object Float32Array]",e$="[object Float64Array]",t$="[object Int8Array]",n$="[object Int16Array]",r$="[object Int32Array]",a$="[object Uint8Array]",o$="[object Uint8ClampedArray]",i$="[object Uint16Array]",l$="[object Uint32Array]",Kt={};Kt[JA]=Kt[e$]=Kt[t$]=Kt[n$]=Kt[r$]=Kt[a$]=Kt[o$]=Kt[i$]=Kt[l$]=!0;Kt[LA]=Kt[BA]=Kt[QA]=Kt[jA]=Kt[ZA]=Kt[VA]=Kt[KA]=Kt[HA]=Kt[zA]=Kt[WA]=Kt[UA]=Kt[YA]=Kt[GA]=Kt[qA]=Kt[XA]=!1;function u$(t){return xr(t)&&am(t.length)&&!!Kt[Ua(t)]}function md(t){return function(e){return t(e)}}var K4=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Nl=K4&&typeof module=="object"&&module&&!module.nodeType&&module,s$=Nl&&Nl.exports===K4,Vf=s$&&y3.process,c$=function(){try{var t=Nl&&Nl.require&&Nl.require("util").types;return t||Vf&&Vf.binding&&Vf.binding("util")}catch{}}();const Ei=c$;var qb=Ei&&Ei.isTypedArray,d$=qb?md(qb):u$;const H4=d$;var f$=Object.prototype,v$=f$.hasOwnProperty;function z4(t,e){var n=fr(t),r=!n&&nm(t),a=!n&&!r&&mc(t),o=!n&&!r&&!a&&H4(t),i=n||r||a||o,l=i?OA(t.length,String):[],u=l.length;for(var s in t)(e||v$.call(t,s))&&!(i&&(s=="length"||a&&(s=="offset"||s=="parent")||o&&(s=="buffer"||s=="byteLength"||s=="byteOffset")||rm(s,u)))&&l.push(s);return l}var h$=Object.prototype;function om(t){var e=t&&t.constructor,n=typeof e=="function"&&e.prototype||h$;return t===n}var p$=C3(Object.keys,Object);const g$=p$;var m$=Object.prototype,y$=m$.hasOwnProperty;function b$(t){if(!om(t))return g$(t);var e=[];for(var n in Object(t))y$.call(t,n)&&n!="constructor"&&e.push(n);return e}function Su(t){return t!=null&&am(t.length)&&!D4(t)}function Wi(t){return Su(t)?z4(t):b$(t)}function Sh(t){return L4(t,Wi,tm)}var C$=1,x$=Object.prototype,w$=x$.hasOwnProperty;function S$(t,e,n,r,a,o){var i=n&C$,l=Sh(t),u=l.length,s=Sh(e),d=s.length;if(u!=d&&!i)return!1;for(var c=u;c--;){var f=l[c];if(!(i?f in e:w$.call(e,f)))return!1}var h=o.get(t),p=o.get(e);if(h&&p)return h==e&&p==t;var g=!0;o.set(t,e),o.set(e,t);for(var y=i;++c1&&(Y=v("div",{class:"".concat(D,"-content")},[Y]));var H=ce(D,a.class,u.value),V=p.value||!e.visible,U=V?Ya(T.value.name,T.value):{};return v(Nn,m(m({ref:l},U),{},{onBeforeEnter:O}),{default:function(){return!j||e.visible?gn(v(L$,{target:P(),key:"popup",ref:i,monitorWindowResize:!0,disabled:_.value,align:M,onAlign:k},{default:function(){return v("div",m(m({class:H,onMouseenter:L,onMouseleave:A,onMousedown:_1(K,["capture"])},N({},nn?"onTouchstartPassive":"onTouchstart",_1(E,["capture"]))),{},{style:W}),[Y])}}),[[Tr,p.value]]):null}})}}}),j$=le({compatConfig:{MODE:3},name:"Popup",inheritAttrs:!1,props:S_,setup:function(e,n){var r=n.attrs,a=n.slots,o=n.expose,i=Q(!1),l=Q(!1),u=Q();return Se([function(){return e.visible},function(){return e.mobile}],function(){i.value=e.visible,e.visible&&e.mobile&&(l.value=!0)},{immediate:!0,flush:"post"}),o({forceAlign:function(){var d;(d=u.value)===null||d===void 0||d.forceAlign()},getElement:function(){var d;return(d=u.value)===null||d===void 0?void 0:d.getElement()}}),function(){var s=m(m(m({},e),r),{},{visible:i.value}),d=l.value?v(P_,m(m({},s),{},{mobile:e.mobile,ref:u}),{default:a.default}):v(B$,m(m({},s),{},{ref:u}),{default:a.default});return v("div",null,[v(T4,s,null),d])}}});function V$(t,e,n){return n?t[0]===e[0]:t[0]===e[0]&&t[1]===e[1]}function iC(t,e,n){var r=t[e]||{};return m(m({},r),n)}function K$(t,e,n,r){for(var a=n.points,o=Object.keys(t),i=0;i0&&arguments[0]!==void 0?arguments[0]:{},n=arguments.length>1?arguments[1]:void 0,r=typeof e=="function"?e(this.$data,this.$props):e;if(this.getDerivedStateFromProps){var a=this.getDerivedStateFromProps(w3(this),m(m({},this.$data),r));if(a===null)return;r=m(m({},r),a||{})}pt(this.$data,r),this._.isMounted&&this.$forceUpdate(),nt(function(){n&&n()})},__emit:function(){var e=[].slice.call(arguments,0),n=e[0];n="on".concat(n[0].toUpperCase()).concat(n.substring(1));var r=this.$props[n]||this.$attrs[n];if(e.length&&r)if(Array.isArray(r))for(var a=0,o=r.length;a1&&arguments[1]!==void 0?arguments[1]:{inTriggerContext:!0};at(Y4,{inTriggerContext:n.inTriggerContext,shouldRender:F(function(){var r=e||{},a=r.sPopupVisible,o=r.popupRef,i=r.forceRender,l=r.autoDestroy,u=!1;return(a||o||i)&&(u=!0),!a&&l&&(u=!1),u})})},z$=function(){im({},{inTriggerContext:!1});var e=Ze(Y4,{shouldRender:F(function(){return!1}),inTriggerContext:!1});return{shouldRender:F(function(){return e.shouldRender.value||e.inTriggerContext===!1})}};const Th=le({compatConfig:{MODE:3},name:"Portal",inheritAttrs:!1,props:{getContainer:X.func.isRequired,didUpdate:Function},setup:function(e,n){var r=n.slots,a=!0,o,i=z$(),l=i.shouldRender;ld(function(){a=!1,l.value&&(o=e.getContainer())});var u=Se(l,function(){l.value&&!o&&(o=e.getContainer()),o&&u()});return wn(function(){nt(function(){if(l.value){var s;(s=e.didUpdate)===null||s===void 0||s.call(e,e)}})}),ut(function(){o&&o.parentNode&&o.parentNode.removeChild(o)}),function(){if(!l.value)return null;if(a){var s;return(s=r.default)===null||s===void 0?void 0:s.call(r)}return o?v(sg,{to:o},r):null}}});function lC(){}function W$(){return""}function U$(t){return t?t.ownerDocument:window.document}var Y$=["onClick","onMousedown","onTouchstart","onMouseenter","onMouseleave","onFocus","onBlur","onContextmenu"];const Ui=le({compatConfig:{MODE:3},name:"Trigger",mixins:[Vo],inheritAttrs:!1,props:{action:X.oneOfType([X.string,X.arrayOf(X.string)]).def([]),showAction:X.any.def([]),hideAction:X.any.def([]),getPopupClassNameFromAlign:X.any.def(W$),onPopupVisibleChange:Function,afterPopupVisibleChange:X.func.def(lC),popup:X.any,popupStyle:{type:Object,default:void 0},prefixCls:X.string.def("rc-trigger-popup"),popupClassName:X.string.def(""),popupPlacement:String,builtinPlacements:X.object,popupTransitionName:String,popupAnimation:X.any,mouseEnterDelay:X.number.def(0),mouseLeaveDelay:X.number.def(.1),zIndex:Number,focusDelay:X.number.def(0),blurDelay:X.number.def(.15),getPopupContainer:Function,getDocument:X.func.def(U$),forceRender:{type:Boolean,default:void 0},destroyPopupOnHide:{type:Boolean,default:!1},mask:{type:Boolean,default:!1},maskClosable:{type:Boolean,default:!0},popupAlign:X.object.def(function(){return{}}),popupVisible:{type:Boolean,default:void 0},defaultPopupVisible:{type:Boolean,default:!1},maskTransitionName:String,maskAnimation:String,stretch:String,alignPoint:{type:Boolean,default:void 0},autoDestroy:{type:Boolean,default:!1},mobile:Object,getTriggerDOMNode:Function,tryPopPortal:Boolean},setup:function(e){var n=F(function(){var u=e.popupPlacement,s=e.popupAlign,d=e.builtinPlacements;return u&&d?iC(d,u,s):s}),r=H$(e.tryPopPortal),a=r.setPortal,o=r.popPortal,i=Q(null),l=function(s){i.value=s};return{popPortal:o,setPortal:a,vcTriggerContext:Ze("vcTriggerContext",{}),popupRef:i,setPopupRef:l,triggerRef:Q(null),align:n,focusTime:null,clickOutsideHandler:null,contextmenuOutsideHandler1:null,contextmenuOutsideHandler2:null,touchOutsideHandler:null,attachId:null,delayTimer:null,hasPopupMouseDown:!1,preClickTime:null,preTouchTime:null,mouseDownTimeout:null,childOriginEvents:{}}},data:function(){var e=this,n,r=this.$props,a;return this.popupVisible!==void 0?a=!!r.popupVisible:a=!!r.defaultPopupVisible,Y$.forEach(function(o){e["fire".concat(o)]=function(i){e.fireEvents(o,i)}}),(n=this.setPortal)===null||n===void 0||n.call(this,v(Th,{key:"portal",getContainer:this.getContainer,didUpdate:this.handlePortalUpdate},{default:this.getComponent})),{prevPopupVisible:a,sPopupVisible:a,point:null}},watch:{popupVisible:function(e){e!==void 0&&(this.prevPopupVisible=this.sPopupVisible,this.sPopupVisible=e)}},created:function(){at("vcTriggerContext",{onPopupMouseDown:this.onPopupMouseDown}),im(this)},deactivated:function(){this.setPopupVisible(!1)},mounted:function(){var e=this;this.$nextTick(function(){e.updatedCal()})},updated:function(){var e=this;this.$nextTick(function(){e.updatedCal()})},beforeUnmount:function(){this.clearDelayTimer(),this.clearOutsideHandler(),clearTimeout(this.mouseDownTimeout),Qe.cancel(this.attachId)},methods:{updatedCal:function(){var e=this.$props,n=this.$data;if(n.sPopupVisible){var r;!this.clickOutsideHandler&&(this.isClickToHide()||this.isContextmenuToShow())&&(r=e.getDocument(this.getRootDomNode()),this.clickOutsideHandler=Dt(r,"mousedown",this.onDocumentClick)),this.touchOutsideHandler||(r=r||e.getDocument(this.getRootDomNode()),this.touchOutsideHandler=Dt(r,"touchstart",this.onDocumentClick,nn?{passive:!1}:!1)),!this.contextmenuOutsideHandler1&&this.isContextmenuToShow()&&(r=r||e.getDocument(this.getRootDomNode()),this.contextmenuOutsideHandler1=Dt(r,"scroll",this.onContextmenuClose)),!this.contextmenuOutsideHandler2&&this.isContextmenuToShow()&&(this.contextmenuOutsideHandler2=Dt(window,"blur",this.onContextmenuClose))}else this.clearOutsideHandler()},onMouseenter:function(e){var n=this.$props.mouseEnterDelay;this.fireEvents("onMouseenter",e),this.delaySetPopupVisible(!0,n,n?null:e)},onMouseMove:function(e){this.fireEvents("onMousemove",e),this.setPoint(e)},onMouseleave:function(e){this.fireEvents("onMouseleave",e),this.delaySetPopupVisible(!1,this.$props.mouseLeaveDelay)},onPopupMouseenter:function(){this.clearDelayTimer()},onPopupMouseleave:function(e){var n;e&&e.relatedTarget&&!e.relatedTarget.setTimeout&&mo((n=this.popupRef)===null||n===void 0?void 0:n.getElement(),e.relatedTarget)||this.delaySetPopupVisible(!1,this.$props.mouseLeaveDelay)},onFocus:function(e){this.fireEvents("onFocus",e),this.clearDelayTimer(),this.isFocusToShow()&&(this.focusTime=Date.now(),this.delaySetPopupVisible(!0,this.$props.focusDelay))},onMousedown:function(e){this.fireEvents("onMousedown",e),this.preClickTime=Date.now()},onTouchstart:function(e){this.fireEvents("onTouchstart",e),this.preTouchTime=Date.now()},onBlur:function(e){mo(e.target,e.relatedTarget||document.activeElement)||(this.fireEvents("onBlur",e),this.clearDelayTimer(),this.isBlurToHide()&&this.delaySetPopupVisible(!1,this.$props.blurDelay))},onContextmenu:function(e){e.preventDefault(),this.fireEvents("onContextmenu",e),this.setPopupVisible(!0,e)},onContextmenuClose:function(){this.isContextmenuToShow()&&this.close()},onClick:function(e){if(this.fireEvents("onClick",e),this.focusTime){var n;if(this.preClickTime&&this.preTouchTime?n=Math.min(this.preClickTime,this.preTouchTime):this.preClickTime?n=this.preClickTime:this.preTouchTime&&(n=this.preTouchTime),Math.abs(n-this.focusTime)<20)return;this.focusTime=0}this.preClickTime=0,this.preTouchTime=0,this.isClickToShow()&&(this.isClickToHide()||this.isBlurToHide())&&e&&e.preventDefault&&e.preventDefault(),e&&e.domEvent&&e.domEvent.preventDefault();var r=!this.$data.sPopupVisible;(this.isClickToHide()&&!r||r&&this.isClickToShow())&&this.setPopupVisible(!this.$data.sPopupVisible,e)},onPopupMouseDown:function(){var e=this,n=this.vcTriggerContext,r=n===void 0?{}:n;this.hasPopupMouseDown=!0,clearTimeout(this.mouseDownTimeout),this.mouseDownTimeout=setTimeout(function(){e.hasPopupMouseDown=!1},0),r.onPopupMouseDown&&r.onPopupMouseDown.apply(r,arguments)},onDocumentClick:function(e){if(!(this.$props.mask&&!this.$props.maskClosable)){var n=e.target,r=this.getRootDomNode(),a=this.getPopupDomNode();(!mo(r,n)||this.isContextMenuOnly())&&!mo(a,n)&&!this.hasPopupMouseDown&&this.delaySetPopupVisible(!1,.1)}},getPopupDomNode:function(){var e;return((e=this.popupRef)===null||e===void 0?void 0:e.getElement())||null},getRootDomNode:function(){var e=this.$props.getTriggerDOMNode;if(e){var n=$a(this.triggerRef);return $a(e(n))}try{var r=$a(this.triggerRef);if(r)return r}catch{}return $a(this)},handleGetPopupClassFromAlign:function(e){var n=[],r=this.$props,a=r.popupPlacement,o=r.builtinPlacements,i=r.prefixCls,l=r.alignPoint,u=r.getPopupClassNameFromAlign;return a&&o&&n.push(K$(o,i,e,l)),u&&n.push(u(e)),n.join(" ")},getPopupAlign:function(){var e=this.$props,n=e.popupPlacement,r=e.popupAlign,a=e.builtinPlacements;return n&&a?iC(a,n,r):r},getComponent:function(){var e=this,n={};this.isMouseEnterToShow()&&(n.onMouseenter=this.onPopupMouseenter),this.isMouseLeaveToHide()&&(n.onMouseleave=this.onPopupMouseleave),n.onMousedown=this.onPopupMouseDown,n[nn?"onTouchstartPassive":"onTouchstart"]=this.onPopupMouseDown;var r=this.handleGetPopupClassFromAlign,a=this.getRootDomNode,o=this.getContainer,i=this.$attrs,l=this.$props,u=l.prefixCls,s=l.destroyPopupOnHide,d=l.popupClassName,c=l.popupAnimation,f=l.popupTransitionName,h=l.popupStyle,p=l.mask,g=l.maskAnimation,y=l.maskTransitionName,b=l.zIndex,C=l.stretch,x=l.alignPoint,w=l.mobile,P=l.forceRender,S=this.$data,k=S.sPopupVisible,T=S.point,O=m(m({prefixCls:u,destroyPopupOnHide:s,visible:k,point:x?T:null,align:this.align,animation:c,getClassNameFromAlign:r,stretch:C,getRootDomNode:a,mask:p,zIndex:b,transitionName:f,maskAnimation:g,maskTransitionName:y,getContainer:o,class:d,style:h,onAlign:i.onPopupAlign||lC},n),{},{ref:this.setPopupRef,mobile:w,forceRender:P});return v(j$,O,{default:this.$slots.popup||function(){return bg(e,"popup")}})},attachParent:function(e){var n=this;Qe.cancel(this.attachId);var r=this.$props,a=r.getPopupContainer,o=r.getDocument,i=this.getRootDomNode(),l;a?(i||a.length===0)&&(l=a(i)):l=o(this.getRootDomNode()).body,l?l.appendChild(e):this.attachId=Qe(function(){n.attachParent(e)})},getContainer:function(){var e=this.$props,n=e.getDocument,r=n(this.getRootDomNode()).createElement("div");return r.style.position="absolute",r.style.top="0",r.style.left="0",r.style.width="100%",this.attachParent(r),r},setPopupVisible:function(e,n){var r=this.alignPoint,a=this.sPopupVisible,o=this.onPopupVisibleChange;this.clearDelayTimer(),a!==e&&(la(this,"popupVisible")||this.setState({sPopupVisible:e,prevPopupVisible:a}),o&&o(e)),r&&n&&e&&this.setPoint(n)},setPoint:function(e){var n=this.$props.alignPoint;!n||!e||this.setState({point:{pageX:e.pageX,pageY:e.pageY}})},handlePortalUpdate:function(){this.prevPopupVisible!==this.sPopupVisible&&this.afterPopupVisibleChange(this.sPopupVisible)},delaySetPopupVisible:function(e,n,r){var a=this,o=n*1e3;if(this.clearDelayTimer(),o){var i=r?{pageX:r.pageX,pageY:r.pageY}:null;this.delayTimer=x_(function(){a.setPopupVisible(e,i),a.clearDelayTimer()},o)}else this.setPopupVisible(e,r)},clearDelayTimer:function(){this.delayTimer&&(C_(this.delayTimer),this.delayTimer=null)},clearOutsideHandler:function(){this.clickOutsideHandler&&(this.clickOutsideHandler.remove(),this.clickOutsideHandler=null),this.contextmenuOutsideHandler1&&(this.contextmenuOutsideHandler1.remove(),this.contextmenuOutsideHandler1=null),this.contextmenuOutsideHandler2&&(this.contextmenuOutsideHandler2.remove(),this.contextmenuOutsideHandler2=null),this.touchOutsideHandler&&(this.touchOutsideHandler.remove(),this.touchOutsideHandler=null)},createTwoChains:function(e){var n=function(){},r=F1(this);return this.childOriginEvents[e]&&r[e]?this["fire".concat(e)]:(n=this.childOriginEvents[e]||r[e]||n,n)},isClickToShow:function(){var e=this.$props,n=e.action,r=e.showAction;return n.indexOf("click")!==-1||r.indexOf("click")!==-1},isContextMenuOnly:function(){var e=this.$props.action;return e==="contextmenu"||e.length===1&&e[0]==="contextmenu"},isContextmenuToShow:function(){var e=this.$props,n=e.action,r=e.showAction;return n.indexOf("contextmenu")!==-1||r.indexOf("contextmenu")!==-1},isClickToHide:function(){var e=this.$props,n=e.action,r=e.hideAction;return n.indexOf("click")!==-1||r.indexOf("click")!==-1},isMouseEnterToShow:function(){var e=this.$props,n=e.action,r=e.showAction;return n.indexOf("hover")!==-1||r.indexOf("mouseenter")!==-1},isMouseLeaveToHide:function(){var e=this.$props,n=e.action,r=e.hideAction;return n.indexOf("hover")!==-1||r.indexOf("mouseleave")!==-1},isFocusToShow:function(){var e=this.$props,n=e.action,r=e.showAction;return n.indexOf("focus")!==-1||r.indexOf("focus")!==-1},isBlurToHide:function(){var e=this.$props,n=e.action,r=e.hideAction;return n.indexOf("focus")!==-1||r.indexOf("blur")!==-1},forcePopupAlign:function(){if(this.$data.sPopupVisible){var e;(e=this.popupRef)===null||e===void 0||e.forceAlign()}},fireEvents:function(e,n){this.childOriginEvents[e]&&this.childOriginEvents[e](n);var r=this.$props[e]||this.$attrs[e];r&&r(n)},close:function(){this.setPopupVisible(!1)}},render:function(){var e=this,n=this.$attrs,r=qt(yu(this)),a=this.$props.alignPoint,o=r[0];this.childOriginEvents=F1(o);var i={key:"trigger"};this.isContextmenuToShow()?i.onContextmenu=this.onContextmenu:i.onContextmenu=this.createTwoChains("onContextmenu"),this.isClickToHide()||this.isClickToShow()?(i.onClick=this.onClick,i.onMousedown=this.onMousedown,i[nn?"onTouchstartPassive":"onTouchstart"]=this.onTouchstart):(i.onClick=this.createTwoChains("onClick"),i.onMousedown=this.createTwoChains("onMousedown"),i[nn?"onTouchstartPassive":"onTouchstart"]=this.createTwoChains("onTouchstart")),this.isMouseEnterToShow()?(i.onMouseenter=this.onMouseenter,a&&(i.onMousemove=this.onMouseMove)):i.onMouseenter=this.createTwoChains("onMouseenter"),this.isMouseLeaveToHide()?i.onMouseleave=this.onMouseleave:i.onMouseleave=this.createTwoChains("onMouseleave"),this.isFocusToShow()||this.isBlurToHide()?(i.onFocus=this.onFocus,i.onBlur=this.onBlur):(i.onFocus=this.createTwoChains("onFocus"),i.onBlur=function(d){d&&(!d.relatedTarget||!mo(d.target,d.relatedTarget))&&e.createTwoChains("onBlur")(d)});var l=ce(o&&o.props&&o.props.class,n.class);l&&(i.class=l);var u=Ct(o,m(m({},i),{},{ref:"triggerRef"}),!0,!0);if(this.popPortal)return u;var s=v(Th,{key:"portal",getContainer:this.getContainer,didUpdate:this.handlePortalUpdate},{default:this.getComponent});return v(et,null,[s,u])}});var G$=["empty"],q$=function(e){var n=e===!0?0:1;return{bottomLeft:{points:["tl","bl"],offset:[0,4],overflow:{adjustX:n,adjustY:1}},bottomRight:{points:["tr","br"],offset:[0,4],overflow:{adjustX:n,adjustY:1}},topLeft:{points:["bl","tl"],offset:[0,-4],overflow:{adjustX:n,adjustY:1}},topRight:{points:["br","tr"],offset:[0,-4],overflow:{adjustX:n,adjustY:1}}}},X$=le({name:"SelectTrigger",inheritAttrs:!1,props:{dropdownAlign:Object,visible:{type:Boolean,default:void 0},disabled:{type:Boolean,default:void 0},dropdownClassName:String,dropdownStyle:X.object,placement:String,empty:{type:Boolean,default:void 0},prefixCls:String,popupClassName:String,animation:String,transitionName:String,getPopupContainer:Function,dropdownRender:Function,containerWidth:Number,dropdownMatchSelectWidth:X.oneOfType([Number,Boolean]).def(!0),popupElement:X.any,direction:String,getTriggerDOMNode:Function,onPopupVisibleChange:Function,onPopupMouseEnter:Function},setup:function(e,n){var r=n.slots,a=n.attrs,o=n.expose,i=F(function(){var u=e.dropdownMatchSelectWidth;return q$(u)}),l=Q();return o({getPopupElement:function(){return l.value}}),function(){var u=m(m({},e),a),s=u.empty,d=s===void 0?!1:s,c=He(u,G$),f=c.visible,h=c.dropdownAlign,p=c.prefixCls,g=c.popupElement,y=c.dropdownClassName,b=c.dropdownStyle,C=c.direction,x=C===void 0?"ltr":C,w=c.placement,P=c.dropdownMatchSelectWidth,S=c.containerWidth,k=c.dropdownRender,T=c.animation,O=c.transitionName,_=c.getPopupContainer,R=c.getTriggerDOMNode,I=c.onPopupVisibleChange,M=c.onPopupMouseEnter,D="".concat(p,"-dropdown"),j=g;k&&(j=k({menuNode:g,props:e}));var L=T?"".concat(D,"-").concat(T):O,A=m({minWidth:"".concat(S,"px")},b);return typeof P=="number"?A.width="".concat(P,"px"):P&&(A.width="".concat(S,"px")),v(Ui,m(m({},e),{},{showAction:I?["click"]:[],hideAction:I?["click"]:[],popupPlacement:w||(x==="rtl"?"bottomRight":"bottomLeft"),builtinPlacements:i.value,prefixCls:D,popupTransitionName:L,popupAlign:h,popupVisible:f,getPopupContainer:_,popupClassName:ce(y,N({},"".concat(D,"-empty"),d)),popupStyle:A,getTriggerDOMNode:R,onPopupVisibleChange:I}),{default:r.default,popup:function(){return v("div",{ref:l,onMouseenter:M},[j])}})}}});const Q$=X$;var ht={MAC_ENTER:3,BACKSPACE:8,TAB:9,NUM_CENTER:12,ENTER:13,SHIFT:16,CTRL:17,ALT:18,PAUSE:19,CAPS_LOCK:20,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,PRINT_SCREEN:44,INSERT:45,DELETE:46,ZERO:48,ONE:49,TWO:50,THREE:51,FOUR:52,FIVE:53,SIX:54,SEVEN:55,EIGHT:56,NINE:57,QUESTION_MARK:63,A:65,B:66,C:67,D:68,E:69,F:70,G:71,H:72,I:73,J:74,K:75,L:76,M:77,N:78,O:79,P:80,Q:81,R:82,S:83,T:84,U:85,V:86,W:87,X:88,Y:89,Z:90,META:91,WIN_KEY_RIGHT:92,CONTEXT_MENU:93,NUM_ZERO:96,NUM_ONE:97,NUM_TWO:98,NUM_THREE:99,NUM_FOUR:100,NUM_FIVE:101,NUM_SIX:102,NUM_SEVEN:103,NUM_EIGHT:104,NUM_NINE:105,NUM_MULTIPLY:106,NUM_PLUS:107,NUM_MINUS:109,NUM_PERIOD:110,NUM_DIVISION:111,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,NUMLOCK:144,SEMICOLON:186,DASH:189,EQUALS:187,COMMA:188,PERIOD:190,SLASH:191,APOSTROPHE:192,SINGLE_QUOTE:222,OPEN_SQUARE_BRACKET:219,BACKSLASH:220,CLOSE_SQUARE_BRACKET:221,WIN_KEY:224,MAC_FF_META:224,WIN_IME:229,isTextModifyingKeyEvent:function(e){var n=e.keyCode;if(e.altKey&&!e.ctrlKey||e.metaKey||n>=ht.F1&&n<=ht.F12)return!1;switch(n){case ht.ALT:case ht.CAPS_LOCK:case ht.CONTEXT_MENU:case ht.CTRL:case ht.DOWN:case ht.END:case ht.ESC:case ht.HOME:case ht.INSERT:case ht.LEFT:case ht.MAC_FF_META:case ht.META:case ht.NUMLOCK:case ht.NUM_CENTER:case ht.PAGE_DOWN:case ht.PAGE_UP:case ht.PAUSE:case ht.PRINT_SCREEN:case ht.RIGHT:case ht.SHIFT:case ht.UP:case ht.WIN_KEY:case ht.WIN_KEY_RIGHT:return!1;default:return!0}},isCharacterKey:function(e){if(e>=ht.ZERO&&e<=ht.NINE||e>=ht.NUM_ZERO&&e<=ht.NUM_MULTIPLY||e>=ht.A&&e<=ht.Z||window.navigator.userAgent.indexOf("WebKit")!==-1&&e===0)return!0;switch(e){case ht.SPACE:case ht.QUESTION_MARK:case ht.NUM_PLUS:case ht.NUM_MINUS:case ht.NUM_PERIOD:case ht.NUM_DIVISION:case ht.SEMICOLON:case ht.DASH:case ht.EQUALS:case ht.COMMA:case ht.PERIOD:case ht.SLASH:case ht.APOSTROPHE:case ht.SINGLE_QUOTE:case ht.OPEN_SQUARE_BRACKET:case ht.BACKSLASH:case ht.CLOSE_SQUARE_BRACKET:return!0;default:return!1}}};const Me=ht;var Cd=function(e,n){var r,a=n.slots,o=e.class,i=e.customizeIcon,l=e.customizeIconProps,u=e.onMousedown,s=e.onClick,d;return typeof i=="function"?d=i(l):d=i,v("span",{class:o,onMousedown:function(f){f.preventDefault(),u&&u(f)},style:{userSelect:"none",WebkitUserSelect:"none"},unselectable:"on",onClick:s,"aria-hidden":!0},[d!==void 0?d:v("span",{class:o.split(/\s+/).map(function(c){return"".concat(c,"-icon")})},[(r=a.default)===null||r===void 0?void 0:r.call(a)])])};Cd.inheritAttrs=!1;Cd.displayName="TransBtn";Cd.props={class:String,customizeIcon:X.any,customizeIconProps:X.any,onMousedown:Function,onClick:Function};const yc=Cd;function Z$(t){t.target.composing=!0}function uC(t){t.target.composing&&(t.target.composing=!1,J$(t.target,"input"))}function J$(t,e){var n=document.createEvent("HTMLEvents");n.initEvent(e,!0,!0),t.dispatchEvent(n)}function Kf(t,e,n,r){t.addEventListener(e,n,r)}var e9={created:function(e,n){(!n.modifiers||!n.modifiers.lazy)&&(Kf(e,"compositionstart",Z$),Kf(e,"compositionend",uC),Kf(e,"change",uC))}};const Yi=e9;var t9={inputRef:X.any,prefixCls:String,id:String,inputElement:X.VueNode,disabled:{type:Boolean,default:void 0},autofocus:{type:Boolean,default:void 0},autocomplete:String,editable:{type:Boolean,default:void 0},activeDescendantId:String,value:String,open:{type:Boolean,default:void 0},tabindex:X.oneOfType([X.number,X.string]),attrs:X.object,onKeydown:{type:Function},onMousedown:{type:Function},onChange:{type:Function},onPaste:{type:Function},onCompositionstart:{type:Function},onCompositionend:{type:Function},onFocus:{type:Function},onBlur:{type:Function}},n9=le({compatConfig:{MODE:3},name:"Input",inheritAttrs:!1,props:t9,setup:function(e){var n=null,r=Ze("VCSelectContainerEvent");return function(){var a,o,i=e.prefixCls,l=e.id,u=e.inputElement,s=e.disabled,d=e.tabindex,c=e.autofocus,f=e.autocomplete,h=e.editable,p=e.activeDescendantId,g=e.value,y=e.onKeydown,b=e.onMousedown,C=e.onChange,x=e.onPaste,w=e.onCompositionstart,P=e.onCompositionend,S=e.onFocus,k=e.onBlur,T=e.open,O=e.inputRef,_=e.attrs,R=u||gn(v("input",null,null),[[Yi]]),I=R.props||{},M=I.onKeydown,D=I.onInput,j=I.onFocus,L=I.onBlur,A=I.onMousedown,$=I.onCompositionstart,E=I.onCompositionend,K=I.style;return R=Ct(R,pt(m(m(m({type:"search"},I),{},{id:l,ref:O,disabled:s,tabindex:d,autocomplete:f||"off",autofocus:c,class:ce("".concat(i,"-selection-search-input"),(a=R)===null||a===void 0||(o=a.props)===null||o===void 0?void 0:o.class),role:"combobox","aria-expanded":T,"aria-haspopup":"listbox","aria-owns":"".concat(l,"_list"),"aria-autocomplete":"list","aria-controls":"".concat(l,"_list"),"aria-activedescendant":p},_),{},{value:h?g:"",readonly:!h,unselectable:h?null:"on",style:m(m({},K),{},{opacity:h?null:0}),onKeydown:function(W){y(W),M&&M(W)},onMousedown:function(W){b(W),A&&A(W)},onInput:function(W){C(W),D&&D(W)},onCompositionstart:function(W){w(W),$&&$(W)},onCompositionend:function(W){P(W),E&&E(W)},onPaste:x,onFocus:function(){clearTimeout(n),j&&j(arguments.length<=0?void 0:arguments[0]),S&&S(arguments.length<=0?void 0:arguments[0]),r==null||r.focus(arguments.length<=0?void 0:arguments[0])},onBlur:function(){for(var W=arguments.length,Y=new Array(W),H=0;H